aboutsummaryrefslogtreecommitdiffstats
path: root/packages/glibc
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/glibc
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
downloadopenembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.gz
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/glibc')
-rw-r--r--packages/glibc/files/5090_all_stubs-rule-fix.patch39
-rw-r--r--packages/glibc/files/armv4t-interworking.patch47
-rw-r--r--packages/glibc/files/fhs-linux-paths.patch11
-rw-r--r--packages/glibc/files/generate-supported.mk11
-rw-r--r--packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm-2.patch11
-rw-r--r--packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm.patch15
-rw-r--r--packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch41
-rw-r--r--packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch205
-rw-r--r--packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch20
-rw-r--r--packages/glibc/files/glibc-2.6.1-powerpc-nofpu.patch11
-rw-r--r--packages/glibc/files/glibc-2.6.1-use-short-for-fnstsw.patch30
-rw-r--r--packages/glibc/files/glibc-includes-fixed-isystem.patch32
-rw-r--r--packages/glibc/files/march-i686.patch38
-rw-r--r--packages/glibc/files/ppc-ld-nofpu-20070104.patch190
-rw-r--r--packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch38
-rw-r--r--packages/glibc/files/ppc-sfp-machine.patch297
-rw-r--r--packages/glibc/files/ppc-soft-fp-20070115.patch182
-rw-r--r--packages/glibc/glibc-2.2.5/alpha-build-failure.patch30
-rw-r--r--packages/glibc/glibc-2.2.5/arm-asm-clobber.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch40
-rw-r--r--packages/glibc/glibc-2.2.5/arm-longlong.patch59
-rw-r--r--packages/glibc/glibc-2.2.5/arm-machine-gmon.patch11
-rw-r--r--packages/glibc/glibc-2.2.5/arm-memcpy.patch761
-rw-r--r--packages/glibc/glibc-2.2.5/arm-no-hwcap.patch11
-rw-r--r--packages/glibc/glibc-2.2.5/cris-libc-symbols.patch43
-rw-r--r--packages/glibc/glibc-2.2.5/cris-stack-direction.patch36
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-alpha.patch420
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-arm.patch383
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-m68k.patch171
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-mips.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-sh.patch30
-rw-r--r--packages/glibc/glibc-2.2.5/dl-machine-sparc.patch235
-rw-r--r--packages/glibc/glibc-2.2.5/errlist-1.9.patch25
-rw-r--r--packages/glibc/glibc-2.2.5/errlist-arm.patch25
-rw-r--r--packages/glibc/glibc-2.2.5/etc/ld.so.conf2
-rw-r--r--packages/glibc/glibc-2.2.5/fhs-linux-paths.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch55
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch36
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch881
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch21
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch35
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch25
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch23
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch28
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch79
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch1108
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch88
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch24
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch65
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch41
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch12
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-drow-sh.patch30
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch12
-rw-r--r--packages/glibc/glibc-2.2.5/glibc-test-lowram.patch19
-rw-r--r--packages/glibc/glibc-2.2.5/initfini-alpha.patch128
-rw-r--r--packages/glibc/glibc-2.2.5/initfini-flags.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/initfini-sh.patch248
-rw-r--r--packages/glibc/glibc-2.2.5/ldd.patch38
-rw-r--r--packages/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch34
-rw-r--r--packages/glibc/glibc-2.2.5/longjmp-sparc.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/pt-initfini-alpha.patch119
-rw-r--r--packages/glibc/glibc-2.2.5/pt-initfini-flags.patch16
-rw-r--r--packages/glibc/glibc-2.2.5/pt-initfini-sh.patch267
-rw-r--r--packages/glibc/glibc-2.2.5/sh-setjmp-fix.patch17
-rw-r--r--packages/glibc/glibc-2.2.5/sprintf-prototype.patch18
-rw-r--r--packages/glibc/glibc-2.2.5/sscanf.patch64
-rw-r--r--packages/glibc/glibc-2.2.5/threadparam.patch69
-rw-r--r--packages/glibc/glibc-2.2.5/unwind-arm.patch18
-rw-r--r--packages/glibc/glibc-2.3.2/10_cvs.patch177118
-rw-r--r--packages/glibc/glibc-2.3.2/11_shlib-lds.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/30_glibc232-base.patch55
-rw-r--r--packages/glibc/glibc-2.3.2/50_glibc23-hppa-entry.patch13
-rw-r--r--packages/glibc/glibc-2.3.2/50_glibc232-arm-dwarf2-buildfix.patch5
-rw-r--r--packages/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch2665
-rw-r--r--packages/glibc/glibc-2.3.2/50_glibc232-m68k-dwarf2-buildfix.patch5
-rw-r--r--packages/glibc/glibc-2.3.2/50_glibc232-mips-buildfix.patch48
-rw-r--r--packages/glibc/glibc-2.3.2/80_glibc232-futimes-buildfix.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/80_glibc232-iconvdata-fix.patch76
-rw-r--r--packages/glibc/glibc-2.3.2/80_glibc232-locales-header.patch43
-rw-r--r--packages/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch112
-rw-r--r--packages/glibc/glibc-2.3.2/80_glibc232-wcsmbs-fix.patch86
-rw-r--r--packages/glibc/glibc-2.3.2/81_glibc232-utimes-fix.patch39
-rw-r--r--packages/glibc/glibc-2.3.2/90_glibc232-statvfs.patch32
-rw-r--r--packages/glibc/glibc-2.3.2/90_glibc232-timezones.patch1078
-rw-r--r--packages/glibc/glibc-2.3.2/alpha-crti.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/alpha-pic.patch17
-rw-r--r--packages/glibc/glibc-2.3.2/alpha-pwrite.patch13
-rw-r--r--packages/glibc/glibc-2.3.2/arm-ioperm.patch13
-rw-r--r--packages/glibc/glibc-2.3.2/arm-longlong.patch59
-rw-r--r--packages/glibc/glibc-2.3.2/arm-machine-gmon.patch11
-rw-r--r--packages/glibc/glibc-2.3.2/arm-memcpy.patch756
-rw-r--r--packages/glibc/glibc-2.3.2/arm-no-hwcap.patch11
-rw-r--r--packages/glibc/glibc-2.3.2/arm-output-format.patch11
-rw-r--r--packages/glibc/glibc-2.3.2/asm-arm-unistd.h494
-rw-r--r--packages/glibc/glibc-2.3.2/autoconf.h1054
-rw-r--r--packages/glibc/glibc-2.3.2/dyn-ldconfig.diff62
-rw-r--r--packages/glibc/glibc-2.3.2/etc/ld.so.conf2
-rw-r--r--packages/glibc/glibc-2.3.2/glibc-2.3.2-200304020432.patch136135
-rw-r--r--packages/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch19
-rw-r--r--packages/glibc/glibc-2.3.2/glibc-i686-timing.patch125
-rw-r--r--packages/glibc/glibc-2.3.2/glibc-make-check-perms.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-eo_EO.patch219
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-locales.patch99
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-m68k-compat.patch20
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-m68k-fpic.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-nss-upgrade.patch26
-rw-r--r--packages/glibc/glibc-2.3.2/glibc22-ttyname-devfs.patch225
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-01-hppa-dl-machine.patch305
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-07-hppa-atomicity.patch58
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-asserth-decls.patch19
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-cmov.patch36
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-ctype-compat.patch86
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-errno-hack.patch58
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-errno.patch36
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-function-compat.patch32
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-hppa-Rminkernel.patch22
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-hppa-compat.patch80
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-hppa-malloc8.patch13
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-libio-compat.patch144
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-mips-msq.patch39
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch326
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch19
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch109
-rw-r--r--packages/glibc/glibc-2.3.2/glibc23-version-sanity.patch11
-rw-r--r--packages/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch53
-rw-r--r--packages/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch112
-rw-r--r--packages/glibc/glibc-2.3.2/glibcbug.patch22
-rw-r--r--packages/glibc/glibc-2.3.2/hppa-syscall.patch31
-rw-r--r--packages/glibc/glibc-2.3.2/hurd-enable-ldconfig.patch61
-rw-r--r--packages/glibc/glibc-2.3.2/ldconfig.patch37
-rw-r--r--packages/glibc/glibc-2.3.2/ldd.patch38
-rw-r--r--packages/glibc/glibc-2.3.2/ldso-disable-hwcap.patch62
-rw-r--r--packages/glibc/glibc-2.3.2/libgcc-compat-all.patch435
-rw-r--r--packages/glibc/glibc-2.3.2/libgcc-compat-other.patch883
-rw-r--r--packages/glibc/glibc-2.3.2/librt-mips.patch12
-rw-r--r--packages/glibc/glibc-2.3.2/lo_LA.UTF-8_not_supported.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/locale-es_AR.patch13
-rw-r--r--packages/glibc/glibc-2.3.2/locales-stuff.patch44
-rw-r--r--packages/glibc/glibc-2.3.2/locales-supported.patch159
-rw-r--r--packages/glibc/glibc-2.3.2/makeconfig.patch15
-rw-r--r--packages/glibc/glibc-2.3.2/noinfo.patch52
-rw-r--r--packages/glibc/glibc-2.3.2/nptl-pthread-once.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/nss_compat-shadow.patch128
-rw-r--r--packages/glibc/glibc-2.3.2/powerpc-sysconf.patch39
-rw-r--r--packages/glibc/glibc-2.3.2/pthread-cleanup.patch62
-rw-r--r--packages/glibc/glibc-2.3.2/revert-old-libio.patch78
-rw-r--r--packages/glibc/glibc-2.3.2/s390-tls.patch11
-rw-r--r--packages/glibc/glibc-2.3.2/sedscript.patch10
-rw-r--r--packages/glibc/glibc-2.3.2/sparc64-fixups.patch29
-rw-r--r--packages/glibc/glibc-2.3.2/sparcv8-target.patch28
-rw-r--r--packages/glibc/glibc-2.3.2/syslog-backrev.patch212
-rw-r--r--packages/glibc/glibc-2.3.2/version.h4
-rw-r--r--packages/glibc/glibc-2.3.6/etc/ld.so.conf2
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch28
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch65
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch28
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch37
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch45
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch79
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-memusage.patch44
-rw-r--r--packages/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch25
-rw-r--r--packages/glibc/glibc-2.3.6/late-install-loop-break.patch29
-rw-r--r--packages/glibc/glibc-2.4/arm-longlong.patch58
-rw-r--r--packages/glibc/glibc-2.4/arm-memcpy.patch758
-rw-r--r--packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch94
-rw-r--r--packages/glibc/glibc-2.4/dl-cache-libcmp.patch10
-rw-r--r--packages/glibc/glibc-2.4/dyn-ldconfig-20041128.patch22
-rw-r--r--packages/glibc/glibc-2.4/dyn-ldconfig.patch62
-rw-r--r--packages/glibc/glibc-2.4/etc/ld.so.conf2
-rw-r--r--packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch329
-rw-r--r--packages/glibc/glibc-2.4/generic-bits_select.h35
-rw-r--r--packages/glibc/glibc-2.4/generic-bits_time.h75
-rw-r--r--packages/glibc/glibc-2.4/generic-bits_types.h200
-rw-r--r--packages/glibc/glibc-2.4/generic-bits_typesizes.h66
-rw-r--r--packages/glibc/glibc-2.4/glibc-2.4-compile.patch29
-rw-r--r--packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch133
-rw-r--r--packages/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff13
-rw-r--r--packages/glibc/glibc-2.4/glibc-arm-no-asm-page.patch15
-rw-r--r--packages/glibc/glibc-2.4/glibc-check_pf.patch343
-rw-r--r--packages/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch46
-rw-r--r--packages/glibc/glibc-2.4/ldd-unbash.patch11
-rw-r--r--packages/glibc/glibc-2.4/ldsocache-varrun.patch18
-rw-r--r--packages/glibc/glibc-2.4/no-z-defs.patch9
-rw-r--r--packages/glibc/glibc-2.4/nptl-crosscompile.patch26
-rw-r--r--packages/glibc/glibc-2.4/powerpc-sqrt-hack.diff25
-rw-r--r--packages/glibc/glibc-2.4/zecke-sane-readelf.patch243
-rw-r--r--packages/glibc/glibc-2.5/glibc-check_pf.patch343
-rw-r--r--packages/glibc/glibc-2.7/all_glibc-i586-chk.patch33
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/arm-audit.patch58
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/arm-audit2.patch18
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/arm-longlong.patch59
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch758
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/arm-no-hwcap.patch11
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/dl-cache-libcmp.patch10
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/dyn-ldconfig-20041128.patch22
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/ldsocache-varrun.patch18
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/no-z-defs.patch9
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/raise.patch37
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/superh-fcntl.patch40
-rw-r--r--packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch154
-rw-r--r--packages/glibc/glibc-cvs/arm-ioperm.patch13
-rw-r--r--packages/glibc/glibc-cvs/arm-longlong.patch59
-rw-r--r--packages/glibc/glibc-cvs/arm-machine-gmon.patch11
-rw-r--r--packages/glibc/glibc-cvs/arm-memcpy.patch758
-rw-r--r--packages/glibc/glibc-cvs/arm-no-hwcap.patch11
-rw-r--r--packages/glibc/glibc-cvs/dl-cache-libcmp.patch10
-rw-r--r--packages/glibc/glibc-cvs/dyn-ldconfig-20041128.patch22
-rw-r--r--packages/glibc/glibc-cvs/dyn-ldconfig.patch62
-rw-r--r--packages/glibc/glibc-cvs/eabi-patch-188
-rw-r--r--packages/glibc/glibc-cvs/eabi-patch-22446
-rw-r--r--packages/glibc/glibc-cvs/eabi-patch-3430
-rw-r--r--packages/glibc/glibc-cvs/eabi-patch-464
-rw-r--r--packages/glibc/glibc-cvs/etc/ld.so.conf2
-rw-r--r--packages/glibc/glibc-cvs/glibc-fp-byteorder.patch203
-rw-r--r--packages/glibc/glibc-cvs/ldconfig.patch37
-rw-r--r--packages/glibc/glibc-cvs/ldd.patch38
-rw-r--r--packages/glibc/glibc-cvs/ldsocache-varrun.patch18
-rw-r--r--packages/glibc/glibc-cvs/makeconfig.patch15
-rw-r--r--packages/glibc/glibc-cvs/mips-no-throw.patch22
-rw-r--r--packages/glibc/glibc-cvs/noinfo.patch52
-rw-r--r--packages/glibc/glibc-cvs/trampoline.patch560
-rw-r--r--packages/glibc/glibc-initial.inc57
-rw-r--r--packages/glibc/glibc-initial_2.2.5.bb7
-rw-r--r--packages/glibc/glibc-initial_2.3.2+cvs20040726.bb5
-rw-r--r--packages/glibc/glibc-initial_2.3.2.bb5
-rw-r--r--packages/glibc/glibc-initial_2.3.6.bb4
-rw-r--r--packages/glibc/glibc-initial_2.4.bb2
-rw-r--r--packages/glibc/glibc-initial_2.5.bb22
-rw-r--r--packages/glibc/glibc-initial_2.6.1.bb6
-rw-r--r--packages/glibc/glibc-initial_2.7.bb6
-rw-r--r--packages/glibc/glibc-initial_cvs.bb4
-rw-r--r--packages/glibc/glibc-package.bbclass335
-rw-r--r--packages/glibc/glibc-stage.inc18
-rw-r--r--packages/glibc/glibc.inc22
-rw-r--r--packages/glibc/glibc_2.2.5.bb215
-rw-r--r--packages/glibc/glibc_2.3.2+cvs20040726.bb75
-rw-r--r--packages/glibc/glibc_2.3.2.bb161
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20041128.bb97
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20050221.bb80
-rw-r--r--packages/glibc/glibc_2.3.3+cvs20050420.bb81
-rw-r--r--packages/glibc/glibc_2.3.3.bb106
-rw-r--r--packages/glibc/glibc_2.3.5+cvs20050627.bb134
-rw-r--r--packages/glibc/glibc_2.3.6.bb94
-rw-r--r--packages/glibc/glibc_2.4.bb148
-rw-r--r--packages/glibc/glibc_2.5.bb154
-rw-r--r--packages/glibc/glibc_2.6.1.bb156
-rw-r--r--packages/glibc/glibc_2.7.bb161
-rw-r--r--packages/glibc/glibc_cvs.bb104
249 files changed, 0 insertions, 343807 deletions
diff --git a/packages/glibc/files/5090_all_stubs-rule-fix.patch b/packages/glibc/files/5090_all_stubs-rule-fix.patch
deleted file mode 100644
index c445a5296e..0000000000
--- a/packages/glibc/files/5090_all_stubs-rule-fix.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Index: Makerules
-===================================================================
-RCS file: /cvs/glibc/libc/Makerules,v
-retrieving revision 1.430
-diff -u -r1.430 Makerules
---- libc/Makerules 5 Mar 2005 19:24:32 -0000 1.430
-+++ libc/Makerules 22 Apr 2005 18:31:27 -0000
-@@ -1390,15 +1390,26 @@
- $(addprefix $(objpfx),$(extra-objs))
- $(objpfx)stubs: $(objs-for-stubs)
- ifneq (,$(strip $(objs-for-stubs)))
-- $(OBJDUMP) -h $^ | \
-- $(AWK) '/\.gnu\.glibc-stub\./ { \
-- sub(/\.gnu\.glibc-stub\./, "", $$2); \
-- stubs[$$2] = 1; } \
-- END { for (s in stubs) print "#define __stub_" s }' > $@T
-+ $(stub-obj-list)
-+ cat $@L | xargs \
-+ $(OBJDUMP) -h | \
-+ $(AWK) '/\.gnu\.glibc-stub\./ { \
-+ sub(/\.gnu\.glibc-stub\./, "", $$2); \
-+ stubs[$$2] = 1; } \
-+ END { for (s in stubs) print "#define __stub_" s }' \
-+ > $@T
-+ -rm -f $@L
- mv -f $@T $@
- else
- > $@
- endif
-+
-+define stub-obj-list
-+-@rm -f $@L
-+-@echo "Generating stub obj list..."
-+$(foreach file,$^,
-+@echo >> $@L '$(file)')
-+endef
-
- # This information is not used for making distributions any more.
- # But it's used by MakeTAGS for making TAGS files and the .pot files.
diff --git a/packages/glibc/files/armv4t-interworking.patch b/packages/glibc/files/armv4t-interworking.patch
deleted file mode 100644
index ce91ad6530..0000000000
--- a/packages/glibc/files/armv4t-interworking.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- libc/ports/sysdeps/arm/memcpy.S~ 2006-10-31 17:07:54.000000000 +0000
-+++ libc/ports/sysdeps/arm/memcpy.S 2008-10-24 11:09:34.000000000 +0100
-@@ -130,7 +130,12 @@
- strcsb r4, [r0], #1
- strcsb ip, [r0]
-
-+#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
-+ ldmfd sp!, {r0, r4, lr}
-+ bx lr
-+#else
- ldmfd sp!, {r0, r4, pc}
-+#endif
-
- 9: rsb ip, ip, #4
- cmp ip, #2
---- libc/ports/sysdeps/arm/memmove.S~ 2006-10-31 17:07:54.000000000 +0000
-+++ libc/ports/sysdeps/arm/memmove.S 2008-10-24 11:09:44.000000000 +0100
-@@ -140,7 +140,12 @@
- strneb r3, [r0, #-1]!
- strcsb r4, [r0, #-1]!
- strcsb ip, [r0, #-1]
-+#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
-+ ldmfd sp!, {r0, r4, lr}
-+ bx lr
-+#else
- ldmfd sp!, {r0, r4, pc}
-+#endif
-
- 9: cmp ip, #2
- ldrgtb r3, [r1, #-1]!
---- libc/ports/sysdeps/unix/sysv/linux/arm/clone.S~ 2005-11-16 19:03:42.000000000 +0000
-+++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2008-10-24 11:11:05.000000000 +0100
-@@ -96,8 +96,14 @@
- #endif
- @ pick the function arg and call address off the stack and execute
- ldr r0, [sp, #4]
-+#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__)
-+ ldr ip, [sp], #8
-+ mov lr, pc
-+ bx ip
-+#else
- mov lr, pc
- ldr pc, [sp], #8
-+#endif
-
- @ and we are done, passing the return value through r0
- b PLTJMP(_exit)
diff --git a/packages/glibc/files/fhs-linux-paths.patch b/packages/glibc/files/fhs-linux-paths.patch
deleted file mode 100644
index 1f32f6d7f2..0000000000
--- a/packages/glibc/files/fhs-linux-paths.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h~ Thu May 27 13:16:33 1999
-+++ glibc-2.1.1/sysdeps/unix/sysv/linux/paths.h Thu May 27 13:17:55 1999
-@@ -71,7 +71,7 @@
- /* Provide trailing slash, since mostly used for building pathnames. */
- #define _PATH_DEV "/dev/"
- #define _PATH_TMP "/tmp/"
--#define _PATH_VARDB "/var/db/"
-+#define _PATH_VARDB "/var/lib/misc/"
- #define _PATH_VARRUN "/var/run/"
- #define _PATH_VARTMP "/var/tmp/"
-
diff --git a/packages/glibc/files/generate-supported.mk b/packages/glibc/files/generate-supported.mk
deleted file mode 100644
index d2a28c2dc6..0000000000
--- a/packages/glibc/files/generate-supported.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/make
-
-include $(IN)
-
-all:
- rm -f $(OUT)
- touch $(OUT)
- for locale in $(SUPPORTED-LOCALES); do \
- [ $$locale = true ] && continue; \
- echo $$locale | sed 's,/, ,' >> $(OUT); \
- done
diff --git a/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm-2.patch b/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm-2.patch
deleted file mode 100644
index bf2f31e479..0000000000
--- a/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm-2.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- glibc-2.3.3/ports/sysdeps/unix/sysv/linux/arm/socket.S.orig 2006-07-12 14:38:22.208228359 -0700
-+++ glibc-2.3.3/ports/sysdeps/unix/sysv/linux/arm/socket.S 2006-07-12 14:39:56.911675066 -0700
-@@ -123,5 +123,7 @@
- #endif
-
- PSEUDO_END (__socket)
--
-+
-+#ifndef NO_WEAK_ALIAS
- weak_alias (__socket, socket)
-+#endif
diff --git a/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm.patch b/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm.patch
deleted file mode 100644
index 0097ff94d3..0000000000
--- a/packages/glibc/files/glibc-2.3.5-fix-weak-alias-arm.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- glibc-2.3.3/ports/sysdeps/unix/sysv/linux/arm/socket.S.orig 2006-07-12 13:57:05.990485563 -0700
-+++ glibc-2.3.3/ports/sysdeps/unix/sysv/linux/arm/socket.S 2006-07-12 13:58:41.197865230 -0700
-@@ -32,7 +32,11 @@
- The .S files for the other calls just #define socket and #include this. */
-
- #ifndef __socket
--#define __socket P(__,socket)
-+# ifndef NO_WEAK_ALIAS
-+# define __socket P(__,socket)
-+# else
-+# define __socket socket
-+# endif
- #endif
-
- #define PUSHARGS_1 str a1, [sp, $-4]!
diff --git a/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch b/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch
deleted file mode 100644
index e137287dd1..0000000000
--- a/packages/glibc/files/glibc-2.5-local-dynamic-resolvconf.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# All lines beginning with `# DP:' are a description of the patch.
-# DP: Description: allow dynamic long-running processes to
-# DP: re-read a dynamically updated resolv.conf on the fly
-# DP: Dpatch author: Adam Conrad <adconrad@ubuntu.com>
-# DP: Patch author: Thorsten Kukuk <kukuk@suse.de>
-# DP: Upstream status: Ubuntu-Specific
-# DP: Date: 2006-01-13 08:14:21 UTC
-
-Index: resolv/res_libc.c
-===================================================================
---- resolv/res_libc.c.orig
-+++ resolv/res_libc.c
-@@ -22,7 +22,7 @@
- #include <arpa/nameser.h>
- #include <resolv.h>
- #include <bits/libc-lock.h>
--
-+#include <sys/stat.h>
-
- /* The following bit is copied from res_data.c (where it is #ifdef'ed
- out) since res_init() should go into libc.so but the rest of that
-@@ -94,8 +94,17 @@
- int
- __res_maybe_init (res_state resp, int preinit)
- {
-- if (resp->options & RES_INIT) {
-- if (__res_initstamp != resp->_u._ext.initstamp) {
-+ static time_t last_mtime;
-+ struct stat statbuf;
-+ int ret;
-+
-+
-+ if (resp->options & RES_INIT) {
-+ ret = stat (_PATH_RESCONF, &statbuf);
-+ if (__res_initstamp != resp->_u._ext.initstamp
-+ || (ret == 0) && (last_mtime != statbuf.st_mtime))
-+ {
-+ last_mtime = statbuf.st_mtime;
- if (resp->nscount > 0) {
- __res_iclose (resp, true);
- return __res_vinit (resp, 1);
diff --git a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
deleted file mode 100644
index e41c1b7d96..0000000000
--- a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-Index: glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c
-===================================================================
---- glibc-2.5-tls-ppc-04.orig/soft-fp/eqdf2.c
-+++ glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c
-@@ -48,4 +48,3 @@ int __eqdf2(DFtype a, DFtype b)
- return r;
- }
-
--strong_alias(__eqdf2, __nedf2);
-Index: glibc-2.5-tls-ppc-04/soft-fp/gedf2.c
-===================================================================
---- glibc-2.5-tls-ppc-04.orig/soft-fp/gedf2.c
-+++ glibc-2.5-tls-ppc-04/soft-fp/gedf2.c
-@@ -47,5 +47,3 @@ int __gedf2(DFtype a, DFtype b)
-
- return r;
- }
--
--strong_alias(__gedf2, __gtdf2);
-Index: glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c
-===================================================================
---- /dev/null
-+++ glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c
-@@ -0,0 +1,49 @@
-+/* Software floating-point emulation.
-+ Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b
-+ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ 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 into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ 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, 51 Franklin Street, Fifth Floor, Boston,
-+ MA 02110-1301, USA. */
-+
-+#include "soft-fp.h"
-+#include "double.h"
-+
-+int __gtdf2(DFtype a, DFtype b)
-+{
-+ FP_DECL_EX;
-+ FP_DECL_D(A); FP_DECL_D(B);
-+ int r;
-+
-+ FP_UNPACK_RAW_D(A, a);
-+ FP_UNPACK_RAW_D(B, b);
-+ FP_CMP_D(r, A, B, -2);
-+ if (r == -2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
-+ FP_SET_EXCEPTION(FP_EX_INVALID);
-+ FP_HANDLE_EXCEPTIONS;
-+
-+ return r;
-+}
-Index: glibc-2.5-tls-ppc-04/soft-fp/ledf2.c
-===================================================================
---- glibc-2.5-tls-ppc-04.orig/soft-fp/ledf2.c
-+++ glibc-2.5-tls-ppc-04/soft-fp/ledf2.c
-@@ -48,4 +48,3 @@ int __ledf2(DFtype a, DFtype b)
- return r;
- }
-
--strong_alias(__ledf2, __ltdf2);
-Index: glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c
-===================================================================
---- /dev/null
-+++ glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c
-@@ -0,0 +1,49 @@
-+/* Software floating-point emulation.
-+ Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b
-+ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ 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 into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ 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, 51 Franklin Street, Fifth Floor, Boston,
-+ MA 02110-1301, USA. */
-+
-+#include "soft-fp.h"
-+#include "double.h"
-+
-+int __ltdf2(DFtype a, DFtype b)
-+{
-+ FP_DECL_EX;
-+ FP_DECL_D(A); FP_DECL_D(B);
-+ int r;
-+
-+ FP_UNPACK_RAW_D(A, a);
-+ FP_UNPACK_RAW_D(B, b);
-+ FP_CMP_D(r, A, B, 2);
-+ if (r == 2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
-+ FP_SET_EXCEPTION(FP_EX_INVALID);
-+ FP_HANDLE_EXCEPTIONS;
-+
-+ return r;
-+}
-Index: glibc-2.5-tls-ppc-04/soft-fp/nedf2.c
-===================================================================
---- /dev/null
-+++ glibc-2.5-tls-ppc-04/soft-fp/nedf2.c
-@@ -0,0 +1,49 @@
-+/* Software floating-point emulation.
-+ Return 0 iff a == b, 1 otherwise
-+ Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ 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 into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ 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, 51 Franklin Street, Fifth Floor, Boston,
-+ MA 02110-1301, USA. */
-+
-+#include "soft-fp.h"
-+#include "double.h"
-+
-+int __nedf2(DFtype a, DFtype b)
-+{
-+ FP_DECL_EX;
-+ FP_DECL_D(A); FP_DECL_D(B);
-+ int r;
-+
-+ FP_UNPACK_RAW_D(A, a);
-+ FP_UNPACK_RAW_D(B, b);
-+ FP_CMP_EQ_D(r, A, B);
-+ if (r && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
-+ FP_SET_EXCEPTION(FP_EX_INVALID);
-+ FP_HANDLE_EXCEPTIONS;
-+
-+ return r;
-+}
-Index: glibc-2.5-tls-ppc-04/soft-fp/Makefile
-===================================================================
---- glibc-2.5-tls-ppc-04.orig/soft-fp/Makefile
-+++ glibc-2.5-tls-ppc-04/soft-fp/Makefile
-@@ -27,8 +27,8 @@ gcc-single-routines := negsf2 addsf3 sub
- fixunssfdi floatdisf sqrtsf2 floatunsisf floatundisf \
- fmasf4
-
--gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 \
-- ledf2 gedf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
-+gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 nedf2 \
-+ ledf2 ltdf2 gedf2 gtdf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \
- fixunsdfdi floatdidf extendsfdf2 truncdfsf2 sqrtdf2 floatunsidf \
- floatundidf fmadf4
-
diff --git a/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch b/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
deleted file mode 100644
index 33d5282b90..0000000000
--- a/packages/glibc/files/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Submitted By: Joe Ciccone <jciccone@linuxfromscratch.org>
-Date: 07-02-2007
-Initial Package Version: 2.6
-Origin: http://sourceware.org/ml/libc-ports/2007-05/msg00051.html
-Upstream Status: Unknown
-Description: Defines RTLD_SINGLE_THREAD_P for arm.
-
-diff -Naur glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
---- glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:22.000000000 -0400
-+++ glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:36.000000000 -0400
-@@ -126,3 +126,9 @@
- # define NO_CANCELLATION 1
-
- #endif
-+
-+#ifndef __ASSEMBLER__
-+# define RTLD_SINGLE_THREAD_P \
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-+ header.multiple_threads) == 0, 1)
-+#endif
diff --git a/packages/glibc/files/glibc-2.6.1-powerpc-nofpu.patch b/packages/glibc/files/glibc-2.6.1-powerpc-nofpu.patch
deleted file mode 100644
index 893c754628..0000000000
--- a/packages/glibc/files/glibc-2.6.1-powerpc-nofpu.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- dummy-libc/ports/sysdeps/powerpc/nofpu/Makefile 2006-11-22 09:13:11.000000000 -0600
-+++ libc25/ports/sysdeps/powerpc/nofpu/Makefile 2007-06-07 09:53:05.708240976 -0500
-@@ -6,7 +6,7 @@
- endif
-
- ifeq ($(subdir),math)
--libm-support += fenv_const fe_nomask
-+libm-support += fenv_const
- CPPFLAGS += -I../soft-fp/
- # The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
- # "expand_abs wrong default code for floating point"
diff --git a/packages/glibc/files/glibc-2.6.1-use-short-for-fnstsw.patch b/packages/glibc/files/glibc-2.6.1-use-short-for-fnstsw.patch
deleted file mode 100644
index 6979229279..0000000000
--- a/packages/glibc/files/glibc-2.6.1-use-short-for-fnstsw.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Source: http://sourceware.org/ml/libc-alpha/2008-01/msg00017.html
-
-I am checking this x86 assembler patch:
-
-http://sourceware.org/ml/binutils/2008-01/msg00148.html
-
-to check operand size. fnstsw stores 16bit into %ax. The upper
-16bit of %eax is unchanged. The new assembler will disallow
-"fnstsw %eax". Here is a patch for glibc.
-
-
-H.J.
-
----
- sysdeps/i386/fpu/ftestexcept.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c
-===================================================================
---- glibc-2.6.1.orig/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:00:45.000000000 -0700
-+++ glibc-2.6.1/sysdeps/i386/fpu/ftestexcept.c 2008-07-19 11:01:25.000000000 -0700
-@@ -26,7 +26,7 @@
- int
- fetestexcept (int excepts)
- {
-- int temp;
-+ short temp;
- int xtemp = 0;
-
- /* Get current exceptions. */
diff --git a/packages/glibc/files/glibc-includes-fixed-isystem.patch b/packages/glibc/files/glibc-includes-fixed-isystem.patch
deleted file mode 100644
index 06668f41ed..0000000000
--- a/packages/glibc/files/glibc-includes-fixed-isystem.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-http://sourceware.org/ml/libc-alpha/2007-03/msg00017.html:
-
-GCC trunk now has multiple internal headers directories, one
-containing the self-contained GCC-provided headers and one containing
-the <limits.h> (not self-contained but including libc's <limits.h> or
-a fixed version thereof) and the fixed headers; more such directories
-may be added in future.
-
-When glibc uses -nostdinc, it needs to use -isystem options for all
-these internal directories. This patch teaches it about the
-include-fixed directory (and is harmless with old GCC versions without
-that directory).
-
-2007-03-18 Joseph Myers <joseph@codesourcery.com>
-
- * configure.in: Also pass -isystem option for GCC's include-fixed
- directory.
- * configure: Regenerate.
-
-Index: configure.in
-===================================================================
---- /tmp/configure.in 2008-04-05 19:20:52.176759390 +0200
-+++ glibc-2.6.1/configure.in 2008-04-05 19:21:26.663424600 +0200
-@@ -912,7 +912,7 @@
- # thing on a system that doesn't need fixincludes. (Not presently a problem.)
- if test -n "$sysheaders"; then
- ccheaders=`$CC -print-file-name=include`
-- SYSINCLUDES="-nostdinc -isystem $ccheaders \
-+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $ccheaders-fixed \
- -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
- if test -n "$CXX"; then
- cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
diff --git a/packages/glibc/files/march-i686.patch b/packages/glibc/files/march-i686.patch
deleted file mode 100644
index 04616032ad..0000000000
--- a/packages/glibc/files/march-i686.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-2007-02-15 Khem Raj <kraj@xxxxxxxxxx>
-
- * sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686.
- * nptl/sysdeps/pthread/pt-initfini.c: Ditto.
-
-
-
-Index: sysdeps/unix/sysv/linux/i386/sysdep.h
-===================================================================
---- sysdeps/unix/sysv/linux/i386/sysdep.h (revision 1469)
-+++ sysdeps/unix/sysv/linux/i386/sysdep.h (working copy)
-@@ -29,6 +29,10 @@
- #include <dl-sysdep.h>
- #include <tls.h>
-
-+#if defined __i686 && defined __ASSEMBLER__
-+#undef __i686
-+#define __i686 __i686
-+#endif
-
- /* For Linux we can use the system call table in the header file
- /usr/include/asm/unistd.h
-Index: nptl/sysdeps/pthread/pt-initfini.c
-===================================================================
---- nptl/sysdeps/pthread/pt-initfini.c (revision 1469)
-+++ nptl/sysdeps/pthread/pt-initfini.c (working copy)
-@@ -45,6 +45,11 @@
- /* Embed an #include to pull in the alignment and .end directives. */
- asm ("\n#include \"defs.h\"");
-
-+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
-+asm ("\n#undef __i686");
-+asm ("\n#define __i686 __i686");
-+asm ("\n#endif");
-+
- /* The initial common code ends here. */
- asm ("\n/*@HEADER_ENDS*/");
-
diff --git a/packages/glibc/files/ppc-ld-nofpu-20070104.patch b/packages/glibc/files/ppc-ld-nofpu-20070104.patch
deleted file mode 100644
index d5b1d31774..0000000000
--- a/packages/glibc/files/ppc-ld-nofpu-20070104.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-2007-01-12 Steven Munroe <sjmunroe@us.ibm.com>
- Joe Kerian <jkerian@us.us.ibm.com>
-
- [BZ #2749]
- * sysdeps/ieee754/ldbl-128ibm/s_copysignl.c:
- Include <math_ldbl_opt.h>.
- Remove weak_alias. Use long_double_symbol macro.
- (__copysignl): Use signbit() for comparison.
- * sysdeps/ieee754/ldbl-128ibm/s_fabsl.c: Correct parms for
- SET_LDOUBLE_WORDS64.
-
- [BZ #2423, #2749]
- * sysdeps/ieee754/ldbl-128ibm/s_ceill.c: Don't include <fenv_libc.h>.
- (__ceill): Remove calls to fegetround(), fesetround().
- * sysdeps/ieee754/ldbl-128ibm/s_floorl.c: Likewise.
- * sysdeps/ieee754/ldbl-128ibm/s_roundl.c: Likewise.
- * sysdeps/ieee754/ldbl-128ibm/s_truncl.c: Likewise.
-
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_ceill.c libc24/sysdeps/ieee754/ldbl-128ibm/s_ceill.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_ceill.c 2006-03-16 05:46:37.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_ceill.c 2007-01-11 10:30:12.856890432 -0600
-@@ -19,7 +19,6 @@
- 02111-1307 USA. */
-
- #include <math.h>
--#include <fenv_libc.h>
- #include <math_ldbl_opt.h>
- #include <float.h>
- #include <ieee754.h>
-@@ -44,11 +43,9 @@
- __builtin_inf ()), 1))
- {
- double orig_xh;
-- int save_round = fegetround ();
-
- /* Long double arithmetic, including the canonicalisation below,
- only works in round-to-nearest mode. */
-- fesetround (FE_TONEAREST);
-
- /* Convert the high double to integer. */
- orig_xh = xh;
-@@ -81,8 +78,6 @@
- /* Ensure we return -0 rather than +0 when appropriate. */
- if (orig_xh < 0.0)
- xh = -__builtin_fabs (xh);
--
-- fesetround (save_round);
- }
-
- return ldbl_pack (xh, xl);
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c 2006-01-27 18:07:25.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c 2007-01-11 10:30:12.857890280 -0600
-@@ -25,6 +25,7 @@
-
- #include "math.h"
- #include "math_private.h"
-+#include <math_ldbl_opt.h>
-
- #ifdef __STDC__
- long double __copysignl(long double x, long double y)
-@@ -33,13 +34,13 @@
- long double x,y;
- #endif
- {
-- if (y < 0.0)
-- {
-- if (x >= 0.0)
-- x = -x;
-- }
-- else if (x < 0.0)
-+ if( signbit(x) != signbit(y) )
- x = -x;
- return x;
- }
--weak_alias (__copysignl, copysignl)
-+
-+#ifdef IS_IN_libm
-+long_double_symbol (libm, __copysignl, copysignl);
-+#else
-+long_double_symbol (libc, __copysignl, copysignl);
-+#endif
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2006-01-27 18:07:25.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2007-01-11 10:30:12.857890280 -0600
-@@ -37,7 +37,7 @@
- GET_LDOUBLE_WORDS64(hx,lx,x);
- lx = lx ^ ( hx & 0x8000000000000000LL );
- hx = hx & 0x7fffffffffffffffLL;
-- SET_LDOUBLE_WORDS64(hx,lx,x);
-+ SET_LDOUBLE_WORDS64(x,hx,lx);
- return x;
- }
- long_double_symbol (libm, __fabsl, fabsl);
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_floorl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_floorl.c 2006-03-16 05:46:37.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_floorl.c 2007-01-11 10:30:12.858890128 -0600
-@@ -19,7 +19,6 @@
- 02111-1307 USA. */
-
- #include <math.h>
--#include <fenv_libc.h>
- #include <math_ldbl_opt.h>
- #include <float.h>
- #include <ieee754.h>
-@@ -43,11 +42,8 @@
- && __builtin_isless (__builtin_fabs (xh),
- __builtin_inf ()), 1))
- {
-- int save_round = fegetround ();
--
- /* Long double arithmetic, including the canonicalisation below,
- only works in round-to-nearest mode. */
-- fesetround (FE_TONEAREST);
-
- /* Convert the high double to integer. */
- hi = ldbl_nearbyint (xh);
-@@ -75,8 +71,6 @@
- xh = hi;
- xl = lo;
- ldbl_canonicalize (&xh, &xl);
--
-- fesetround (save_round);
- }
-
- return ldbl_pack (xh, xl);
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_roundl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_roundl.c 2006-03-16 05:46:37.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_roundl.c 2007-01-11 10:30:12.859889976 -0600
-@@ -22,7 +22,6 @@
- when it's coded in C. */
-
- #include <math.h>
--#include <fenv_libc.h>
- #include <math_ldbl_opt.h>
- #include <float.h>
- #include <ieee754.h>
-@@ -47,11 +46,9 @@
- __builtin_inf ()), 1))
- {
- double orig_xh;
-- int save_round = fegetround ();
-
- /* Long double arithmetic, including the canonicalisation below,
- only works in round-to-nearest mode. */
-- fesetround (FE_TONEAREST);
-
- /* Convert the high double to integer. */
- orig_xh = xh;
-@@ -88,8 +85,6 @@
- xh = hi;
- xl = lo;
- ldbl_canonicalize (&xh, &xl);
--
-- fesetround (save_round);
- }
-
- return ldbl_pack (xh, xl);
-diff -urN libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_truncl.c libc24/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
---- libc25-cvstip-20070104/sysdeps/ieee754/ldbl-128ibm/s_truncl.c 2006-03-16 05:46:37.000000000 -0600
-+++ libc24/sysdeps/ieee754/ldbl-128ibm/s_truncl.c 2007-01-11 10:30:12.860889824 -0600
-@@ -22,7 +22,6 @@
- when it's coded in C. */
-
- #include <math.h>
--#include <fenv_libc.h>
- #include <math_ldbl_opt.h>
- #include <float.h>
- #include <ieee754.h>
-@@ -47,11 +46,9 @@
- __builtin_inf ()), 1))
- {
- double orig_xh;
-- int save_round = fegetround ();
-
- /* Long double arithmetic, including the canonicalisation below,
- only works in round-to-nearest mode. */
-- fesetround (FE_TONEAREST);
-
- /* Convert the high double to integer. */
- orig_xh = xh;
-@@ -92,8 +89,6 @@
- /* Ensure we return -0 rather than +0 when appropriate. */
- if (orig_xh < 0.0)
- xh = -__builtin_fabs (xh);
--
-- fesetround (save_round);
- }
-
- return ldbl_pack (xh, xl);
diff --git a/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch b/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch
deleted file mode 100644
index b4d99592f6..0000000000
--- a/packages/glibc/files/ppc-ports-ld-nofpu-20070114.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-2007-01-14 Steven Munroe <sjmunroe@us.ibm.com>
-
- [BZ #2749]
- * sysdeps/powerpc/nofpu/fenv_libc.h: New file.
-
-diff -urN dummy-libc/ports-cvstip-20070104/sysdeps/powerpc/nofpu/fenv_libc.h libc25/ports/sysdeps/powerpc/nofpu/fenv_libc.h
---- dummy-libc/ports-cvstip-20070104/sysdeps/powerpc/nofpu/fenv_libc.h Wed Dec 31 18:00:00 1969
-+++ libc25/ports/sysdeps/powerpc/nofpu/fenv_libc.h Thu Jan 11 11:00:53 2007
-@@ -0,0 +1,29 @@
-+/* Internal libc stuff for floating point environment routines.
-+ Copyright (C) 2007 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 _FENV_LIBC_H
-+#define _FENV_LIBC_H 1
-+
-+/* fenv_libc.h is used in libm implementations of ldbl-128ibm. So we
-+ need this version in the soft-fp to at minimum include fenv.h to
-+ get the fegetround definition. */
-+
-+#include <fenv.h>
-+
-+#endif /* fenv_libc.h */
diff --git a/packages/glibc/files/ppc-sfp-machine.patch b/packages/glibc/files/ppc-sfp-machine.patch
deleted file mode 100644
index 6171a03411..0000000000
--- a/packages/glibc/files/ppc-sfp-machine.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-This patch combined with the other patches from Bugzilla #2749 allows
-powerpc32 to build. The Subdirs pulls in the soft-fp directory from
-libc, The Implies pulls in the ports powerpc/soft-fp directory which
-includes sfp-machine.h
-
-The get/set/swapcontext changes overide the common implimentation in
-libc to avoid using hardware FP instructions.
-
-
-
-2006-06-01 Steven Munroe <sjmunroe@us.ibm.com>
-
- [BZ #2749]
- * sysdeps/powerpc/soft-fp/Subdirs: New file.
- * sysdeps/powerpc/soft-fp/sfp-machine.h: New file.
- * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies: New file.
-
- * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
- New file.
- * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
- New file.
- * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
- New file.
-
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/Subdirs
-libc24/ports/sysdeps/powerpc/soft-fp/Subdirs
---- dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/Subdirs Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/powerpc/soft-fp/Subdirs Wed May 31 16:58:44 2006
-@@ -0,0 +1,1 @@
-+soft-fp
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/sfp-machine.h
-libc24/ports/sysdeps/powerpc/soft-fp/sfp-machine.h
---- dummy-libc/ports-cvstip-20060512/sysdeps/powerpc/soft-fp/sfp-machine.h Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/powerpc/soft-fp/sfp-machine.h Wed May 31 13:57:07 2006
-@@ -0,0 +1,63 @@
-+#define _FP_W_TYPE_SIZE 32
-+#define _FP_W_TYPE unsigned long
-+#define _FP_WS_TYPE signed long
-+#define _FP_I_TYPE long
-+
-+#define _FP_MUL_MEAT_S(R,X,Y) \
-+ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
-+#define _FP_MUL_MEAT_D(R,X,Y) \
-+ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
-+#define _FP_MUL_MEAT_Q(R,X,Y) \
-+ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
-+
-+#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
-+#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
-+#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
-+
-+#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
-+#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
-+#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
-+#define _FP_NANSIGN_S 0
-+#define _FP_NANSIGN_D 0
-+#define _FP_NANSIGN_Q 0
-+
-+#define _FP_KEEPNANFRACP 1
-+
-+/* Someone please check this. */
-+#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
-+ do { \
-+ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
-+ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
-+ { \
-+ R##_s = Y##_s; \
-+ _FP_FRAC_COPY_##wc(R,Y); \
-+ } \
-+ else \
-+ { \
-+ R##_s = X##_s; \
-+ _FP_FRAC_COPY_##wc(R,X); \
-+ } \
-+ R##_c = FP_CLS_NAN; \
-+ } while (0)
-+
-+/* Exception flags. We use the bit positions of the appropriate bits
-+ in the FPSCR, which also correspond to the FE_* bits. This makes
-+ everything easier ;-). */
-+#define FP_EX_INVALID (1 << (31 - 2))
-+#define FP_EX_OVERFLOW (1 << (31 - 3))
-+#define FP_EX_UNDERFLOW (1 << (31 - 4))
-+#define FP_EX_DENORM FP_EX_UNDERFLOW
-+#define FP_EX_DIVZERO (1 << (31 - 5))
-+#define FP_EX_INEXACT (1 << (31 - 6))
-+
-+#define FP_HANDLE_EXCEPTIONS __simulate_exceptions (_fex)
-+#define FP_ROUNDMODE __sim_round_mode
-+
-+extern int __sim_exceptions;
-+libc_hidden_proto (__sim_exceptions);
-+extern int __sim_disabled_exceptions;
-+libc_hidden_proto (__sim_disabled_exceptions);
-+extern int __sim_round_mode;
-+libc_hidden_proto (__sim_round_mode);
-+
-+extern void __simulate_exceptions (int x) attribute_hidden;
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
-libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
---- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies Wed May 31 15:46:44 2006
-@@ -0,0 +1,1 @@
-+powerpc/soft-fp
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
-libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
---- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S Thu Jun 01 15:31:03 2006
-@@ -0,0 +1,59 @@
-+/* Save current context.
-+ Copyright (C) 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
-+ 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>
-+#include <rtld-global-offsets.h>
-+#include <shlib-compat.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+#define __CONTEXT_FUNC_NAME __getcontext
-+#undef __CONTEXT_ENABLE_FPRS
-+#undef __CONTEXT_ENABLE_VRS
-+
-+#include "getcontext-common.S"
-+
-+versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-+
-+/* For the nofpu case the old/new versions are the same function. */
-+strong_alias (__getcontext, __novec_getcontext)
-+
-+compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
-+
-+#endif
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ compat_text_section
-+ENTRY (__getcontext_stub)
-+ li r3,ENOSYS
-+ b __syscall_error@local
-+END (__getcontext_stub)
-+ .previous
-+
-+compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)
-+
-+#endif
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
-libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
---- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S Thu Jun 01 15:31:03 2006
-@@ -0,0 +1,59 @@
-+/* Jump to a new context.
-+ Copyright (C) 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
-+ 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>
-+#include <rtld-global-offsets.h>
-+#include <shlib-compat.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+#define __CONTEXT_FUNC_NAME __setcontext
-+#undef __CONTEXT_ENABLE_FPRS
-+#undef __CONTEXT_ENABLE_VRS
-+
-+#include "setcontext-common.S"
-+
-+versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_4)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-+
-+/* For the nofpu case the old/new versions are the same function. */
-+strong_alias (__setcontext, __novec_setcontext)
-+
-+compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3_3)
-+
-+#endif
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ compat_text_section
-+ENTRY (__setcontext_stub)
-+ li r3,ENOSYS
-+ b __syscall_error@local
-+END (__setcontext_stub)
-+ .previous
-+
-+compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_0)
-+
-+#endif
-diff -urN dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
-libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
---- dummy-libc/ports-cvstip-20060512/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S Wed Dec 31 18:00:00 1969
-+++ libc24/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S Thu Jun 01 15:31:03 2006
-@@ -0,0 +1,59 @@
-+/* Save current context and jump to a new context.
-+ Copyright (C) 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
-+ 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>
-+#include <rtld-global-offsets.h>
-+#include <shlib-compat.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+#define __CONTEXT_FUNC_NAME __swapcontext
-+#undef __CONTEXT_ENABLE_FPRS
-+#undef __CONTEXT_ENABLE_VRS
-+
-+# include "swapcontext-common.S"
-+
-+versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_4)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
-+
-+/* For the nofpu case the old/new versions are the same function. */
-+strong_alias (__swapcontext, __novec_swapcontext)
-+
-+compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3_3)
-+
-+#endif
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ compat_text_section
-+ENTRY (__swapcontext_stub)
-+ li r3,ENOSYS
-+ b __syscall_error@local
-+END (__swapcontext_stub)
-+ .previous
-+
-+compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1)
-+
-+#endif
-
diff --git a/packages/glibc/files/ppc-soft-fp-20070115.patch b/packages/glibc/files/ppc-soft-fp-20070115.patch
deleted file mode 100644
index a84bc2f7cb..0000000000
--- a/packages/glibc/files/ppc-soft-fp-20070115.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-2007-01-14 Steven Munroe <sjmunroe@us.ibm.com>
- Joe Kerian <jkerian@us.us.ibm.com>
-
- [BZ #2749]
- * soft-fp/op-4.h (__FP_FRAC_SUB_3, __FP_FRAC_SUB_4): Correct borrow
- handling for high words.
- * soft-fp/op-common.h (_FP_OVERFLOW_SEMIRAW): Always set inexact
- and overflow for infinity.
- (_FP_PACK_SEMIRAW): Update comment. Do not round if NaN or Inf.
-
- * math/basic-test.c (truncdfsf_test): New function.
- [!NO_LONG_DOUBLE] (trunctfsf_test): New function.
- [!NO_LONG_DOUBLE] (trunctfdf_test): New function.
- Change main() to do_test. Define TEST_FUNCTION. Include test-skeleton.c.
- (do_test): Run new tests.
-
-2007-01-15 Jakub Jelinek <jakub@redhat.com>
-
- * soft-fp/op-common.h (FP_TRUNC): When truncating a NaN, clear
- workbits in semi-raw fraction.
-
-
-diff -urN libc25-cvstip-20070104/math/basic-test.c libc24/math/basic-test.c
---- libc25-cvstip-20070104/math/basic-test.c 2001-07-05 23:55:35.000000000 -0500
-+++ libc24/math/basic-test.c 2007-01-15 11:41:17.260963824 -0600
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -107,17 +107,90 @@
- TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL)
- #ifndef NO_LONG_DOUBLE
- TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL)
-+
-+void
-+trunctfsf_test(void)
-+{
-+ volatile long double Inf_var, NaN_var, zero_var, one_var;
-+ float x1, x2;
-+
-+ zero_var = 0.0;
-+ one_var = 1.0;
-+ NaN_var = zero_var/zero_var;
-+ Inf_var = one_var / zero_var;
-+
-+ (void) &zero_var;
-+ (void) &one_var;
-+ (void) &NaN_var;
-+ (void) &Inf_var;
-+
-+ x1 = (float)NaN_var;
-+ check (" float x = (float)((long double)NaN))", isnan (x1) != 0);
-+ x2 = (float)Inf_var;
-+ check (" float x = (float)((long double)Inf))", isinf (x2) != 0);
-+}
-+
-+void
-+trunctfdf_test(void)
-+{
-+ volatile long double Inf_var, NaN_var, zero_var, one_var;
-+ double x1, x2;
-+
-+ zero_var = 0.0;
-+ one_var = 1.0;
-+ NaN_var = zero_var/zero_var;
-+ Inf_var = one_var / zero_var;
-+
-+ (void) &zero_var;
-+ (void) &one_var;
-+ (void) &NaN_var;
-+ (void) &Inf_var;
-+
-+ x1 = (double)NaN_var;
-+ check (" double x = (double)((long double)NaN))", isnan (x1) != 0);
-+ x2 = (double)Inf_var;
-+ check (" double x = (double)((long double)Inf))", isinf (x2) != 0);
-+}
-+
- #endif
-
-+void
-+truncdfsf_test(void)
-+{
-+ volatile double Inf_var, NaN_var, zero_var, one_var;
-+ float x1, x2;
-+
-+ zero_var = 0.0;
-+ one_var = 1.0;
-+ NaN_var = zero_var/zero_var;
-+ Inf_var = one_var / zero_var;
-+
-+ (void) &zero_var;
-+ (void) &one_var;
-+ (void) &NaN_var;
-+ (void) &Inf_var;
-+
-+ x1 = (float)NaN_var;
-+ check (" float x = (float)((double)NaN))", isnan (x1) != 0);
-+ x2 = (float)Inf_var;
-+ check (" float x = (float)((double)Inf))", isinf (x2) != 0);
-+}
-+
- int
--main (void)
-+do_test (void)
- {
- float_test ();
- double_test ();
-+ truncdfsf_test();
-
- #ifndef NO_LONG_DOUBLE
- ldouble_test ();
-+ trunctfsf_test();
-+ trunctfdf_test();
- #endif
-
- return errors != 0;
- }
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
-diff -urN libc25-cvstip-20070104/soft-fp/op-4.h libc24/soft-fp/op-4.h
---- libc25-cvstip-20070104/soft-fp/op-4.h 2006-04-04 03:24:47.000000000 -0500
-+++ libc24/soft-fp/op-4.h 2007-01-11 11:00:53.000000000 -0600
-@@ -564,7 +564,7 @@
- r1 = x1 - y1; \
- _c2 = r1 > x1; \
- r1 -= _c1; \
-- _c2 |= r1 > _c1; \
-+ _c2 |= _c1 && (y1 == x1); \
- r2 = x2 - y2 - _c2; \
- } while (0)
- #endif
-@@ -578,11 +578,11 @@
- r1 = x1 - y1; \
- _c2 = r1 > x1; \
- r1 -= _c1; \
-- _c2 |= r1 > _c1; \
-+ _c2 |= _c1 && (y1 == x1); \
- r2 = x2 - y2; \
- _c3 = r2 > x2; \
- r2 -= _c2; \
-- _c3 |= r2 > _c2; \
-+ _c3 |= _c2 && (y2 == x2); \
- r3 = x3 - y3 - _c3; \
- } while (0)
- #endif
-diff -urN libc25-cvstip-20070104/soft-fp/op-common.h libc24/soft-fp/op-common.h
---- libc25-cvstip-20070104/soft-fp/op-common.h 2006-04-04 03:24:47.000000000 -0500
-+++ libc24/soft-fp/op-common.h 2007-01-15 11:46:17.290882288 -0600
-@@ -1,5 +1,5 @@
- /* Software floating-point emulation. Common operations.
-- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com),
- Jakub Jelinek (jj@ultra.linux.cz),
-@@ -99,10 +99,10 @@
- else \
- { \
- X##_e = _FP_EXPMAX_##fs - 1; \
-- FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
-- FP_SET_EXCEPTION(FP_EX_INEXACT); \
- _FP_FRAC_SET_##wc(X, _FP_MAXFRAC_##wc); \
- } \
-+ FP_SET_EXCEPTION(FP_EX_INEXACT); \
-+ FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
- } while (0)
-
- /* Check for a semi-raw value being a signaling NaN and raise the
-@@ -1252,6 +1252,9 @@
- _FP_FRAC_SRL_##swc(S, (_FP_WFRACBITS_##sfs \
- - _FP_WFRACBITS_##dfs)); \
- _FP_FRAC_COPY_##dwc##_##swc(D, S); \
-+ /* Semi-raw NaN must have all workbits cleared. */ \
-+ _FP_FRAC_LOW_##dwc(D) \
-+ &= ~(_FP_W_TYPE) ((1 << _FP_WORKBITS) - 1); \
- _FP_FRAC_HIGH_##dfs(D) |= _FP_QNANBIT_SH_##dfs; \
- } \
- } \
diff --git a/packages/glibc/glibc-2.2.5/alpha-build-failure.patch b/packages/glibc/glibc-2.2.5/alpha-build-failure.patch
deleted file mode 100644
index 280a0a556d..0000000000
--- a/packages/glibc/glibc-2.2.5/alpha-build-failure.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/alpha/divrem.h~alpha-build-failure.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/alpha/divrem.h 2004-09-03 19:00:37.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,97,2002 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- This file is part of the GNU C Library.
-
-@@ -86,6 +86,7 @@
-
- .align 3
- UFUNC_NAME:
-+$udiv_entry:
- lda sp, -STACK(sp)
- .frame sp, STACK, retaddr, 0
- #ifdef PROF
-@@ -206,7 +207,7 @@
- cmovge AT, AT, arg2
-
- /* Do the unsigned division. */
-- bsr retaddr, UFUNC_NAME
-+ bsr retaddr, $udiv_entry
-
- /* Restore originals and adjust the sign of the result. */
- ldq arg1, 0(sp)
diff --git a/packages/glibc/glibc-2.2.5/arm-asm-clobber.patch b/packages/glibc/glibc-2.2.5/arm-asm-clobber.patch
deleted file mode 100644
index eff21dc702..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-asm-clobber.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h~arm-asm-clobber.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-09-03 19:01:07.000000000 -0500
-@@ -131,7 +131,7 @@
- asm volatile ("swi %1 @ syscall " #name \
- : "=r" (_a1) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
-- : "a1", "memory"); \
-+ : "memory"); \
- _sys_result = _a1; \
- } \
- if (_sys_result >= (unsigned int) -4095) \
diff --git a/packages/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch b/packages/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch
deleted file mode 100644
index b487d69239..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-ctl_bus_isa.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/ioperm.c~arm-ctl_bus_isa.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-09-03 19:00:37.000000000 -0500
-@@ -47,6 +47,12 @@
- #include <asm/page.h>
- #include <sys/sysctl.h>
-
-+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */
-+#include <linux/version.h>
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23))
-+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */
-+#endif
-+
- #define PATH_ARM_SYSTYPE "/etc/arm_systype"
- #define PATH_CPUINFO "/proc/cpuinfo"
-
-@@ -80,7 +86,7 @@
- * Initialize I/O system. There are several ways to get the information
- * we need. Each is tried in turn until one succeeds.
- *
-- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method
-+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method
- * but not all kernels support it.
- *
- * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE.
-@@ -100,8 +106,8 @@
- {
- char systype[256];
- int i, n;
-- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
-- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
-+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
-+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
- size_t len = sizeof(io.base);
-
- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
diff --git a/packages/glibc/glibc-2.2.5/arm-longlong.patch b/packages/glibc/glibc-2.2.5/arm-longlong.patch
deleted file mode 100644
index dfb9309b7b..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-longlong.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
-+++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
-@@ -210,6 +210,14 @@
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -231,7 +239,14 @@
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)));}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined (__hppa) && W_TYPE_SIZE == 32
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
-@@ -0,0 +1,24 @@
-+/* __clz_tab -- support for longlong.h
-+ Copyright (C) 2004 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(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+/* Nothing required. */
-+#else
-+#include <sysdeps/generic/mp_clz_tab.c>
-+#endif
diff --git a/packages/glibc/glibc-2.2.5/arm-machine-gmon.patch b/packages/glibc/glibc-2.2.5/arm-machine-gmon.patch
deleted file mode 100644
index 0fa789d86b..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-machine-gmon.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/arm/machine-gmon.h~ 2001-07-06 00:55:48.000000000 -0400
-+++ sysdeps/arm/machine-gmon.h 2004-04-25 03:56:20.000000000 -0400
-@@ -35,7 +35,7 @@
- static void mcount_internal (u_long frompc, u_long selfpc);
-
- #define _MCOUNT_DECL(frompc, selfpc) \
--static void mcount_internal (u_long frompc, u_long selfpc)
-+static __attribute__((used)) void mcount_internal (u_long frompc, u_long selfpc)
-
- /* This macro/func MUST save r0, r1 because the compiler inserts
- blind calls to _mount(), ignoring the fact that _mcount may
diff --git a/packages/glibc/glibc-2.2.5/arm-memcpy.patch b/packages/glibc/glibc-2.2.5/arm-memcpy.patch
deleted file mode 100644
index 0f7009e549..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-memcpy.patch
+++ /dev/null
@@ -1,761 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/arm/memcpy.S 2004-09-03 19:00:39.000000000 -0500
-@@ -0,0 +1,241 @@
-+/*
-+ * Optimized memcpy implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memcpy (char *dst, const char *src) */
-+
-+ENTRY(memcpy)
-+ subs r2, r2, #4
-+ stmfd sp!, {r0, r4, lr}
-+ blt 7f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #0] )
-+ bne 8f
-+ ands ip, r1, #3
-+ bne 9f
-+
-+1: subs r2, r2, #4
-+ blt 6f
-+ subs r2, r2, #8
-+ blt 5f
-+ subs r2, r2, #16
-+ blt 4f
-+
-+ PLD( subs r2, r2, #65 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 3f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #64] )
-+ PLD( beq 2f )
-+ PLD( rsb ip, ip, #32 )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #96] )
-+ PLD( blt 2f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgeia r1!, {r3 - r6} )
-+ PLD( stmgeia r0!, {r3 - r6} )
-+ PLD( beq 2f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1], #4 )
-+ PLD( ldrge r4, [r1], #4 )
-+ PLD( ldrgt r5, [r1], #4 )
-+ PLD( str r3, [r0], #4 )
-+ PLD( strge r4, [r0], #4 )
-+ PLD( strgt r5, [r0], #4 )
-+
-+2: PLD( pld [r1, #96] )
-+3: ldmia r1!, {r3 - r8, ip, lr}
-+ subs r2, r2, #32
-+ stmia r0!, {r3 - r8, ip, lr}
-+ bge 2b
-+ PLD( cmn r2, #65 )
-+ PLD( bge 3b )
-+ PLD( add r2, r2, #65 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+4: ldmneia r1!, {r3, r4, ip, lr}
-+ stmneia r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+5: ldmneia r1!, {r3, r4}
-+ stmneia r0!, {r3, r4}
-+
-+ tst r2, #4
-+6: ldrne r3, [r1], #4
-+ strne r3, [r0], #4
-+
-+7: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb ip, [r1]
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb ip, [r0]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+8: rsb ip, ip, #4
-+ cmp ip, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb lr, [r1], #1
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb lr, [r0], #1
-+ subs r2, r2, ip
-+ blt 7b
-+ ands ip, r1, #3
-+ beq 1b
-+
-+9: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr lr, [r1], #4
-+ beq 17f
-+ bgt 18f
-+
-+
-+ .macro forward_copy_shift pull push
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #0] )
-+ blt 15f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 13f
-+
-+ PLD( subs r2, r2, #97 )
-+ PLD( blt 12f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( rsb ip, r1, #36 )
-+ PLD( pld [r1, #64] )
-+ PLD( ands ip, ip, #31 )
-+ PLD( pld [r1, #96] )
-+ PLD( beq 11f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #128] )
-+ PLD( blt 11f )
-+ PLD( sub r2, r2, ip )
-+10: PLD( mov r3, lr, pull #\pull )
-+ PLD( ldr lr, [r1], #4 )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r3, r3, lr, push #\push )
-+ PLD( str r3, [r0], #4 )
-+ PLD( bgt 10b )
-+
-+11: PLD( pld [r1, #128] )
-+12: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r9, ip, lr}
-+ subs r2, r2, #32
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, r7, push #\push
-+ mov r7, r7, pull #\pull
-+ orr r7, r7, r8, push #\push
-+ mov r8, r8, pull #\pull
-+ orr r8, r8, r9, push #\push
-+ mov r9, r9, pull #\pull
-+ orr r9, r9, ip, push #\push
-+ mov ip, ip, pull #\pull
-+ orr ip, ip, lr, push #\push
-+ stmia r0!, {r3 - r9, ip}
-+ bge 11b
-+ PLD( cmn r2, #97 )
-+ PLD( bge 12b )
-+ PLD( add r2, r2, #97 )
-+ cmn r2, #16
-+ blt 14f
-+13: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r6, lr}
-+ sub r2, r2, #16
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, lr, push #\push
-+ stmia r0!, {r3 - r6}
-+14: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 16f
-+15: mov r3, lr, pull #\pull
-+ ldr lr, [r1], #4
-+ subs r2, r2, #4
-+ orr r3, r3, lr, push #\push
-+ str r3, [r0], #4
-+ bge 15b
-+16:
-+ .endm
-+
-+
-+ forward_copy_shift pull=8 push=24
-+ sub r1, r1, #3
-+ b 7b
-+
-+17: forward_copy_shift pull=16 push=16
-+ sub r1, r1, #2
-+ b 7b
-+
-+18: forward_copy_shift pull=24 push=8
-+ sub r1, r1, #1
-+ b 7b
-+
-+ .size memcpy, . - memcpy
-+END(memcpy)
-+libc_hidden_builtin_def (memcpy)
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/arm/memmove.S 2004-09-03 19:00:39.000000000 -0500
-@@ -0,0 +1,251 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memmove (char *dst, const char *src) */
-+ENTRY(memmove)
-+ subs ip, r0, r1
-+ cmphi r2, ip
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r0, r4, lr}
-+ add r1, r1, r2
-+ add r0, r0, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #-4] )
-+ bne 26f
-+ ands ip, r1, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [r1, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb r1!, {r3 - r6} )
-+ PLD( stmgedb r0!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( ldrge r4, [r1, #-4]! )
-+ PLD( ldrgt r5, [r1, #-4]! )
-+ PLD( str r3, [r0, #-4]! )
-+ PLD( strge r4, [r0, #-4]! )
-+ PLD( strgt r5, [r0, #-4]! )
-+
-+20: PLD( pld [r1, #-96] )
-+ PLD( pld [r1, #-128] )
-+21: ldmdb r1!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ ldmdb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb r1!, {r3, r4, ip, lr}
-+ stmnedb r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb r1!, {r3, r4}
-+ stmnedb r0!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [r1, #-4]!
-+ strne r3, [r0, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1, #-1]
-+ ldrgeb r4, [r1, #-2]
-+ ldrgtb ip, [r1, #-3]
-+ strb r3, [r0, #-1]
-+ strgeb r4, [r0, #-2]
-+ strgtb ip, [r0, #-3]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [r1, #-1]!
-+ ldrgeb r4, [r1, #-1]!
-+ ldrgtb lr, [r1, #-1]!
-+ strb r3, [r0, #-1]!
-+ strgeb r4, [r0, #-1]!
-+ strgtb lr, [r0, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, r1, #3
-+ beq 19b
-+
-+27: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr r3, [r1]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [r1, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [r1, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [r0, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [r1, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb r1!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb r1!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [r1, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [r0, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add r1, r1, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add r1, r1, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add r1, r1, #1
-+ b 25b
-+
-+ .size memmove, . - memmove
-+END(memmove)
-+libc_hidden_builtin_def (memmove)
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/arm/bcopy.S 2004-09-03 19:00:39.000000000 -0500
-@@ -0,0 +1,255 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+dst .req r1
-+src .req r0
-+
-+/* void *bcopy (const char *src, char *dst, size_t size) */
-+ENTRY(bcopy)
-+ subs ip, dst, src
-+ cmphi r2, ip
-+ movls r3, r0
-+ movls r0, r1
-+ movls r1, r3
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r4, lr}
-+ add src, src, r2
-+ add dst, dst, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, dst, #3
-+ PLD( pld [src, #-4] )
-+ bne 26f
-+ ands ip, src, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [src, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb src!, {r3 - r6} )
-+ PLD( stmgedb dst!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( ldrge r4, [src, #-4]! )
-+ PLD( ldrgt r5, [src, #-4]! )
-+ PLD( str r3, [dst, #-4]! )
-+ PLD( strge r4, [dst, #-4]! )
-+ PLD( strgt r5, [dst, #-4]! )
-+
-+20: PLD( pld [src, #-96] )
-+ PLD( pld [src, #-128] )
-+21: ldmdb src!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ ldmdb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb src!, {r3, r4, ip, lr}
-+ stmnedb dst!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb src!, {r3, r4}
-+ stmnedb dst!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [src, #-4]!
-+ strne r3, [dst, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {dst, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [src, #-1]
-+ ldrgeb r4, [src, #-2]
-+ ldrgtb ip, [src, #-3]
-+ strb r3, [dst, #-1]
-+ strgeb r4, [dst, #-2]
-+ strgtb ip, [dst, #-3]
-+ ldmfd sp!, {dst, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [src, #-1]!
-+ ldrgeb r4, [src, #-1]!
-+ ldrgtb lr, [src, #-1]!
-+ strb r3, [dst, #-1]!
-+ strgeb r4, [dst, #-1]!
-+ strgtb lr, [dst, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, src, #3
-+ beq 19b
-+
-+27: bic src, src, #3
-+ cmp ip, #2
-+ ldr r3, [src]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [src, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [src, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [src, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [dst, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [src, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb src!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb src!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [src, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [dst, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add src, src, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add src, src, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add src, src, #1
-+ b 25b
-+
-+ .size bcopy, . - bcopy
-+END(bcopy)
diff --git a/packages/glibc/glibc-2.2.5/arm-no-hwcap.patch b/packages/glibc/glibc-2.2.5/arm-no-hwcap.patch
deleted file mode 100644
index 17bfdcd125..0000000000
--- a/packages/glibc/glibc-2.2.5/arm-no-hwcap.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/unix/sysv/linux/arm/dl-procinfo.h Mon Jul 23 12:57:23 2001
-+++ sysdeps/unix/sysv/linux/arm/dl-procinfo.h Sun Feb 10 06:37:00 2002
-@@ -67,7 +67,7 @@
- HWCAP_ARM_VFP = 1 << 6,
- HWCAP_ARM_EDSP = 1 << 7,
-
-- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
-+ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
- };
-
- static inline int
diff --git a/packages/glibc/glibc-2.2.5/cris-libc-symbols.patch b/packages/glibc/glibc-2.2.5/cris-libc-symbols.patch
deleted file mode 100644
index 93fc2c141f..0000000000
--- a/packages/glibc/glibc-2.2.5/cris-libc-symbols.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/include/libc-symbols.h~cris-libc-symbols.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/include/libc-symbols.h 2004-09-03 19:00:37.000000000 -0500
-@@ -207,18 +207,29 @@
- # define __make_section_unallocated(section_string)
- # endif
-
--/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
-- section attributes on what looks like a comment to the assembler. */
-+/* Tacking on "\n\t#" to the section name makes gcc put its bogus
-+ section attributes on what looks like a comment to the assembler.
-+ Furthermore, with gas, we need to add a "#APP" line so the comment
-+ is recognized as such. */
-+# ifdef HAVE_GNU_AS
-+# define __as_app_line "#APP\n"
-+# else
-+# define __as_app_line ""
-+# endif
- # ifdef HAVE_SECTION_QUOTES
- # define link_warning(symbol, msg) \
- __make_section_unallocated (".gnu.warning." #symbol) \
-- static const char __evoke_link_warning_##symbol[] \
-- __attribute__ ((section (".gnu.warning." #symbol "\"\n\t#\""))) = msg;
-+ static const char __evoke_link_warning_##symbol[] \
-+ __attribute__ \
-+ ((section (".gnu.warning." #symbol "\"\n" __as_app_line "\t#\""))) \
-+ = msg;
- # else
- # define link_warning(symbol, msg) \
- __make_section_unallocated (".gnu.warning." #symbol) \
-- static const char __evoke_link_warning_##symbol[] \
-- __attribute__ ((section (".gnu.warning." #symbol "\n\t#"))) = msg;
-+ static const char __evoke_link_warning_##symbol[] \
-+ __attribute__ \
-+ ((section (".gnu.warning." #symbol "\n" __as_app_line "\t#"))) \
-+ = msg;
- # endif
- # else /* Not ELF: a.out */
- # ifdef HAVE_XCOFF
diff --git a/packages/glibc/glibc-2.2.5/cris-stack-direction.patch b/packages/glibc/glibc-2.2.5/cris-stack-direction.patch
deleted file mode 100644
index 785d3a2427..0000000000
--- a/packages/glibc/glibc-2.2.5/cris-stack-direction.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/cris/stackinfo.h 2004-09-03 19:00:37.000000000 -0500
-@@ -0,0 +1,28 @@
-+/* Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+/* This file contains a bit of information about the stack allocation
-+ of the processor. */
-+
-+#ifndef _STACKINFO_H
-+#define _STACKINFO_H 1
-+
-+/* On cris the stack grows down. */
-+#define _STACK_GROWS_DOWN 1
-+
-+#endif /* stackinfo.h */
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-alpha.patch b/packages/glibc/glibc-2.2.5/dl-machine-alpha.patch
deleted file mode 100644
index 1d34dba706..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-alpha.patch
+++ /dev/null
@@ -1,420 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/alpha/dl-machine.h~dl-machine-alpha.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/alpha/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -134,125 +134,126 @@
- #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \
- extern void tramp_name (void); \
- asm ( "\
-- .globl " #tramp_name "
-- .ent " #tramp_name "
--" #tramp_name ":
-- lda $sp, -44*8($sp)
-- .frame $sp, 44*8, $26
-- /* Preserve all integer registers that C normally doesn't. */
-- stq $26, 0*8($sp)
-- stq $0, 1*8($sp)
-- stq $1, 2*8($sp)
-- stq $2, 3*8($sp)
-- stq $3, 4*8($sp)
-- stq $4, 5*8($sp)
-- stq $5, 6*8($sp)
-- stq $6, 7*8($sp)
-- stq $7, 8*8($sp)
-- stq $8, 9*8($sp)
-- stq $16, 10*8($sp)
-- stq $17, 11*8($sp)
-- stq $18, 12*8($sp)
-- stq $19, 13*8($sp)
-- stq $20, 14*8($sp)
-- stq $21, 15*8($sp)
-- stq $22, 16*8($sp)
-- stq $23, 17*8($sp)
-- stq $24, 18*8($sp)
-- stq $25, 19*8($sp)
-- stq $29, 20*8($sp)
-- stt $f0, 21*8($sp)
-- stt $f1, 22*8($sp)
-- stt $f10, 23*8($sp)
-- stt $f11, 24*8($sp)
-- stt $f12, 25*8($sp)
-- stt $f13, 26*8($sp)
-- stt $f14, 27*8($sp)
-- stt $f15, 28*8($sp)
-- stt $f16, 29*8($sp)
-- stt $f17, 30*8($sp)
-- stt $f18, 31*8($sp)
-- stt $f19, 32*8($sp)
-- stt $f20, 33*8($sp)
-- stt $f21, 34*8($sp)
-- stt $f22, 35*8($sp)
-- stt $f23, 36*8($sp)
-- stt $f24, 37*8($sp)
-- stt $f25, 38*8($sp)
-- stt $f26, 39*8($sp)
-- stt $f27, 40*8($sp)
-- stt $f28, 41*8($sp)
-- stt $f29, 42*8($sp)
-- stt $f30, 43*8($sp)
-- .mask 0x27ff01ff, -44*8
-- .fmask 0xfffffc03, -(44-21)*8
-- /* Set up our $gp */
-- br $gp, .+4
-- ldgp $gp, 0($gp)
-- .prologue 0
-- /* Set up the arguments for fixup: */
-- /* $16 = link_map out of plt0 */
-- /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
-- /* $18 = return address */
-- subq $28, $27, $17
-- ldq $16, 8($27)
-- subq $17, 20, $17
-- mov $26, $18
-- addq $17, $17, $17
-- /* Do the fixup */
-- bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
-- /* Move the destination address into position. */
-- mov $0, $27
-- /* Restore program registers. */
-- ldq $26, 0*8($sp)
-- ldq $0, 1*8($sp)
-- ldq $1, 2*8($sp)
-- ldq $2, 3*8($sp)
-- ldq $3, 4*8($sp)
-- ldq $4, 5*8($sp)
-- ldq $5, 6*8($sp)
-- ldq $6, 7*8($sp)
-- ldq $7, 8*8($sp)
-- ldq $8, 9*8($sp)
-- ldq $16, 10*8($sp)
-- ldq $17, 11*8($sp)
-- ldq $18, 12*8($sp)
-- ldq $19, 13*8($sp)
-- ldq $20, 14*8($sp)
-- ldq $21, 15*8($sp)
-- ldq $22, 16*8($sp)
-- ldq $23, 17*8($sp)
-- ldq $24, 18*8($sp)
-- ldq $25, 19*8($sp)
-- ldq $29, 20*8($sp)
-- ldt $f0, 21*8($sp)
-- ldt $f1, 22*8($sp)
-- ldt $f10, 23*8($sp)
-- ldt $f11, 24*8($sp)
-- ldt $f12, 25*8($sp)
-- ldt $f13, 26*8($sp)
-- ldt $f14, 27*8($sp)
-- ldt $f15, 28*8($sp)
-- ldt $f16, 29*8($sp)
-- ldt $f17, 30*8($sp)
-- ldt $f18, 31*8($sp)
-- ldt $f19, 32*8($sp)
-- ldt $f20, 33*8($sp)
-- ldt $f21, 34*8($sp)
-- ldt $f22, 35*8($sp)
-- ldt $f23, 36*8($sp)
-- ldt $f24, 37*8($sp)
-- ldt $f25, 38*8($sp)
-- ldt $f26, 39*8($sp)
-- ldt $f27, 40*8($sp)
-- ldt $f28, 41*8($sp)
-- ldt $f29, 42*8($sp)
-- ldt $f30, 43*8($sp)
-- /* Flush the Icache after having modified the .plt code. */
-- " #IMB "
-- /* Clean up and turn control to the destination */
-- lda $sp, 44*8($sp)
-- jmp $31, ($27)
-+ .globl " #tramp_name " \n\
-+ .ent " #tramp_name " \n\
-+" #tramp_name ": \n\
-+ lda $sp, -44*8($sp) \n\
-+ .frame $sp, 44*8, $26 \n\
-+ /* Preserve all integer registers that C normally \n\
-+ doesn't. */ \n\
-+ stq $26, 0*8($sp) \n\
-+ stq $0, 1*8($sp) \n\
-+ stq $1, 2*8($sp) \n\
-+ stq $2, 3*8($sp) \n\
-+ stq $3, 4*8($sp) \n\
-+ stq $4, 5*8($sp) \n\
-+ stq $5, 6*8($sp) \n\
-+ stq $6, 7*8($sp) \n\
-+ stq $7, 8*8($sp) \n\
-+ stq $8, 9*8($sp) \n\
-+ stq $16, 10*8($sp) \n\
-+ stq $17, 11*8($sp) \n\
-+ stq $18, 12*8($sp) \n\
-+ stq $19, 13*8($sp) \n\
-+ stq $20, 14*8($sp) \n\
-+ stq $21, 15*8($sp) \n\
-+ stq $22, 16*8($sp) \n\
-+ stq $23, 17*8($sp) \n\
-+ stq $24, 18*8($sp) \n\
-+ stq $25, 19*8($sp) \n\
-+ stq $29, 20*8($sp) \n\
-+ stt $f0, 21*8($sp) \n\
-+ stt $f1, 22*8($sp) \n\
-+ stt $f10, 23*8($sp) \n\
-+ stt $f11, 24*8($sp) \n\
-+ stt $f12, 25*8($sp) \n\
-+ stt $f13, 26*8($sp) \n\
-+ stt $f14, 27*8($sp) \n\
-+ stt $f15, 28*8($sp) \n\
-+ stt $f16, 29*8($sp) \n\
-+ stt $f17, 30*8($sp) \n\
-+ stt $f18, 31*8($sp) \n\
-+ stt $f19, 32*8($sp) \n\
-+ stt $f20, 33*8($sp) \n\
-+ stt $f21, 34*8($sp) \n\
-+ stt $f22, 35*8($sp) \n\
-+ stt $f23, 36*8($sp) \n\
-+ stt $f24, 37*8($sp) \n\
-+ stt $f25, 38*8($sp) \n\
-+ stt $f26, 39*8($sp) \n\
-+ stt $f27, 40*8($sp) \n\
-+ stt $f28, 41*8($sp) \n\
-+ stt $f29, 42*8($sp) \n\
-+ stt $f30, 43*8($sp) \n\
-+ .mask 0x27ff01ff, -44*8 \n\
-+ .fmask 0xfffffc03, -(44-21)*8 \n\
-+ /* Set up our $gp */ \n\
-+ br $gp, .+4 \n\
-+ ldgp $gp, 0($gp) \n\
-+ .prologue 0 \n\
-+ /* Set up the arguments for fixup: */ \n\
-+ /* $16 = link_map out of plt0 */ \n\
-+ /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
-+ /* $18 = return address */ \n\
-+ subq $28, $27, $17 \n\
-+ ldq $16, 8($27) \n\
-+ subq $17, 20, $17 \n\
-+ mov $26, $18 \n\
-+ addq $17, $17, $17 \n\
-+ /* Do the fixup */ \n\
-+ bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
-+ /* Move the destination address into position. */ \n\
-+ mov $0, $27 \n\
-+ /* Restore program registers. */ \n\
-+ ldq $26, 0*8($sp) \n\
-+ ldq $0, 1*8($sp) \n\
-+ ldq $1, 2*8($sp) \n\
-+ ldq $2, 3*8($sp) \n\
-+ ldq $3, 4*8($sp) \n\
-+ ldq $4, 5*8($sp) \n\
-+ ldq $5, 6*8($sp) \n\
-+ ldq $6, 7*8($sp) \n\
-+ ldq $7, 8*8($sp) \n\
-+ ldq $8, 9*8($sp) \n\
-+ ldq $16, 10*8($sp) \n\
-+ ldq $17, 11*8($sp) \n\
-+ ldq $18, 12*8($sp) \n\
-+ ldq $19, 13*8($sp) \n\
-+ ldq $20, 14*8($sp) \n\
-+ ldq $21, 15*8($sp) \n\
-+ ldq $22, 16*8($sp) \n\
-+ ldq $23, 17*8($sp) \n\
-+ ldq $24, 18*8($sp) \n\
-+ ldq $25, 19*8($sp) \n\
-+ ldq $29, 20*8($sp) \n\
-+ ldt $f0, 21*8($sp) \n\
-+ ldt $f1, 22*8($sp) \n\
-+ ldt $f10, 23*8($sp) \n\
-+ ldt $f11, 24*8($sp) \n\
-+ ldt $f12, 25*8($sp) \n\
-+ ldt $f13, 26*8($sp) \n\
-+ ldt $f14, 27*8($sp) \n\
-+ ldt $f15, 28*8($sp) \n\
-+ ldt $f16, 29*8($sp) \n\
-+ ldt $f17, 30*8($sp) \n\
-+ ldt $f18, 31*8($sp) \n\
-+ ldt $f19, 32*8($sp) \n\
-+ ldt $f20, 33*8($sp) \n\
-+ ldt $f21, 34*8($sp) \n\
-+ ldt $f22, 35*8($sp) \n\
-+ ldt $f23, 36*8($sp) \n\
-+ ldt $f24, 37*8($sp) \n\
-+ ldt $f25, 38*8($sp) \n\
-+ ldt $f26, 39*8($sp) \n\
-+ ldt $f27, 40*8($sp) \n\
-+ ldt $f28, 41*8($sp) \n\
-+ ldt $f29, 42*8($sp) \n\
-+ ldt $f30, 43*8($sp) \n\
-+ /* Flush the Icache after having modified the .plt code. */\n\
-+ " #IMB " \n\
-+ /* Clean up and turn control to the destination */ \n\
-+ lda $sp, 44*8($sp) \n\
-+ jmp $31, ($27) \n\
- .end " #tramp_name)
-
- #ifndef PROF
-@@ -270,85 +271,87 @@
- its return value is the user program's entry point. */
-
- #define RTLD_START asm ("\
--.text
-- .set at
-- .globl _start
-- .ent _start
--_start:
-- br $gp, 0f
--0: ldgp $gp, 0($gp)
-- .prologue 0
-- /* Pass pointer to argument block to _dl_start. */
-- mov $sp, $16
-- bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
-- .end _start
-- /* FALLTHRU */
-- .globl _dl_start_user
-- .ent _dl_start_user
--_dl_start_user:
-- .frame $30,0,$31,0
-- .prologue 0
-- /* Save the user entry point address in s0. */
-- mov $0, $9
-- /* Store the highest stack address. */
-- stq $30, __libc_stack_end
-- /* See if we were run as a command with the executable file
-- name as an extra leading argument. */
-- ldl $1, _dl_skip_args
-- bne $1, $fixup_stack
--$fixup_stack_ret:
-- /* The special initializer gets called with the stack just
-- as the application's entry point will see it; it can
-- switch stacks if it moves these contents over. */
--" RTLD_START_SPECIAL_INIT "
-- /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */
-- ldq $16, _dl_loaded
-- ldq $17, 0($sp)
-- lda $18, 8($sp)
-- s8addq $17, 8, $19
-- addq $19, $18, $19
-- jsr $26, _dl_init
-- /* Pass our finalizer function to the user in $0. */
-- lda $0, _dl_fini
-- /* Jump to the user's entry point. */
-- mov $9, $27
-- jmp ($9)
--$fixup_stack:
-- /* Adjust the stack pointer to skip _dl_skip_args words. This
-- involves copying everything down, since the stack pointer must
-- always be 16-byte aligned. */
-- ldq $2, 0($sp)
-- ldq $5, _dl_argv
-- subq $31, $1, $6
-- subq $2, $1, $2
-- s8addq $6, $5, $5
-- mov $sp, $4
-- s8addq $1, $sp, $3
-- stq $2, 0($sp)
-- stq $5, _dl_argv
-- /* Copy down argv. */
--0: ldq $5, 8($3)
-- addq $4, 8, $4
-- addq $3, 8, $3
-- stq $5, 0($4)
-- bne $5, 0b
-- /* Copy down envp. */
--1: ldq $5, 8($3)
-- addq $4, 8, $4
-- addq $3, 8, $3
-- stq $5, 0($4)
-- bne $5, 1b
-- /* Copy down auxiliary table. */
--2: ldq $5, 8($3)
-- ldq $6, 16($3)
-- addq $4, 16, $4
-- addq $3, 16, $3
-- stq $5, -8($4)
-- stq $6, 0($4)
-- bne $5, 2b
-- br $fixup_stack_ret
-- .end _dl_start_user
-- .set noat
-+.text \n\
-+ .set at \n\
-+ .globl _start \n\
-+ .ent _start \n\
-+_start: \n\
-+ br $gp, 0f \n\
-+0: ldgp $gp, 0($gp) \n\
-+ .prologue 0 \n\
-+ /* Pass pointer to argument block to _dl_start. */ \n\
-+ mov $sp, $16 \n\
-+ bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\
-+ .end _start \n\
-+ /* FALLTHRU */ \n\
-+ .globl _dl_start_user \n\
-+ .ent _dl_start_user \n\
-+_dl_start_user: \n\
-+ .frame $30,0,$31,0 \n\
-+ .prologue 0 \n\
-+ /* Save the user entry point address in s0. */ \n\
-+ mov $0, $9 \n\
-+ /* Store the highest stack address. */ \n\
-+ stq $30, __libc_stack_end \n\
-+ /* See if we were run as a command with the executable \n\
-+ file name as an extra leading argument. */ \n\
-+ ldl $1, _dl_skip_args \n\
-+ bne $1, $fixup_stack \n\
-+$fixup_stack_ret: \n\
-+ /* The special initializer gets called with the stack \n\
-+ just as the application's entry point will see it; \n\
-+ it can switch stacks if it moves these contents \n\
-+ over. */ \n\
-+" RTLD_START_SPECIAL_INIT " \n\
-+ /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
-+ initializers. */ \n\
-+ ldq $16, _dl_loaded \n\
-+ ldq $17, 0($sp) \n\
-+ lda $18, 8($sp) \n\
-+ s8addq $17, 8, $19 \n\
-+ addq $19, $18, $19 \n\
-+ jsr $26, _dl_init \n\
-+ /* Pass our finalizer function to the user in $0. */ \n\
-+ lda $0, _dl_fini \n\
-+ /* Jump to the user's entry point. */ \n\
-+ mov $9, $27 \n\
-+ jmp ($9) \n\
-+$fixup_stack: \n\
-+ /* Adjust the stack pointer to skip _dl_skip_args words.\n\
-+ This involves copying everything down, since the \n\
-+ stack pointer must always be 16-byte aligned. */ \n\
-+ ldq $2, 0($sp) \n\
-+ ldq $5, _dl_argv \n\
-+ subq $31, $1, $6 \n\
-+ subq $2, $1, $2 \n\
-+ s8addq $6, $5, $5 \n\
-+ mov $sp, $4 \n\
-+ s8addq $1, $sp, $3 \n\
-+ stq $2, 0($sp) \n\
-+ stq $5, _dl_argv \n\
-+ /* Copy down argv. */ \n\
-+0: ldq $5, 8($3) \n\
-+ addq $4, 8, $4 \n\
-+ addq $3, 8, $3 \n\
-+ stq $5, 0($4) \n\
-+ bne $5, 0b \n\
-+ /* Copy down envp. */ \n\
-+1: ldq $5, 8($3) \n\
-+ addq $4, 8, $4 \n\
-+ addq $3, 8, $3 \n\
-+ stq $5, 0($4) \n\
-+ bne $5, 1b \n\
-+ /* Copy down auxiliary table. */ \n\
-+2: ldq $5, 8($3) \n\
-+ ldq $6, 16($3) \n\
-+ addq $4, 16, $4 \n\
-+ addq $3, 16, $3 \n\
-+ stq $5, -8($4) \n\
-+ stq $6, 0($4) \n\
-+ bne $5, 2b \n\
-+ br $fixup_stack_ret \n\
-+ .end _dl_start_user \n\
-+ .set noat \n\
- .previous");
-
- #ifndef RTLD_START_SPECIAL_INIT
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-arm.patch b/packages/glibc/glibc-2.2.5/dl-machine-arm.patch
deleted file mode 100644
index 7684b43b39..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-arm.patch
+++ /dev/null
@@ -1,383 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/arm/dl-machine.h~dl-machine-arm.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/arm/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -121,14 +121,15 @@
- and then redirect to the address it returns. */
- // macro for handling PIC situation....
- #ifdef PIC
--#define CALL_ROUTINE(x) " ldr sl,0f
-- add sl, pc, sl
--1: ldr r2, 2f
-- mov lr, pc
-- add pc, sl, r2
-- b 3f
--0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4
--2: .word " #x "(GOTOFF)
-+#define CALL_ROUTINE(x) "\
-+ ldr sl,0f\n\
-+ add sl, pc, sl\n\
-+1: ldr r2, 2f\n\
-+ mov lr, pc\n\
-+ add pc, sl, r2\n\
-+ b 3f\n\
-+0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\
-+2: .word " #x "(GOTOFF)\n\
- 3: "
- #else
- #define CALL_ROUTINE(x) " bl " #x
-@@ -136,114 +137,114 @@
-
- #ifndef PROF
- # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-- .text
-- .globl _dl_runtime_resolve
-- .type _dl_runtime_resolve, #function
-- .align 2
--_dl_runtime_resolve:
-- @ we get called with
-- @ stack[0] contains the return address from this call
-- @ ip contains &GOT[n+3] (pointer to function)
-- @ lr points to &GOT[2]
--
-- @ save almost everything; lr is already on the stack
-- stmdb sp!,{r0-r3,sl,fp}
--
-- @ prepare to call fixup()
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-- sub r1, ip, lr
-- sub r1, r1, #4
-- add r1, r1, r1
--
-- @ get pointer to linker struct
-- ldr r0, [lr, #-4]
--
-- @ call fixup routine
-- " CALL_ROUTINE(fixup) "
--
-- @ save the return
-- mov ip, r0
--
-- @ restore the stack
-- ldmia sp!,{r0-r3,sl,fp,lr}
--
-- @ jump to the newly found address
-- mov pc, ip
--
-- .size _dl_runtime_resolve, .-_dl_runtime_resolve
--
-- .globl _dl_runtime_profile
-- .type _dl_runtime_profile, #function
-- .align 2
--_dl_runtime_profile:
-- @ save almost everything; lr is already on the stack
-- stmdb sp!,{r0-r3,sl,fp}
--
-- @ prepare to call fixup()
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-- sub r1, ip, lr
-- sub r1, r1, #4
-- add r1, r1, r1
--
-- @ get pointer to linker struct
-- ldr r0, [lr, #-4]
--
-- @ call profiling fixup routine
-- " CALL_ROUTINE(profile_fixup) "
--
-- @ save the return
-- mov ip, r0
--
-- @ restore the stack
-- ldmia sp!,{r0-r3,sl,fp,lr}
--
-- @ jump to the newly found address
-- mov pc, ip
--
-- .size _dl_runtime_resolve, .-_dl_runtime_resolve
-- .previous
-+ .text\n\
-+ .globl _dl_runtime_resolve\n\
-+ .type _dl_runtime_resolve, #function\n\
-+ .align 2\n\
-+_dl_runtime_resolve:\n\
-+ @ we get called with\n\
-+ @ stack[0] contains the return address from this call\n\
-+ @ ip contains &GOT[n+3] (pointer to function)\n\
-+ @ lr points to &GOT[2]\n\
-+\n\
-+ @ save almost everything; lr is already on the stack\n\
-+ stmdb sp!,{r0-r3,sl,fp}\n\
-+\n\
-+ @ prepare to call fixup()\n\
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-+ sub r1, ip, lr\n\
-+ sub r1, r1, #4\n\
-+ add r1, r1, r1\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
-+\n\
-+ @ call fixup routine\n\
-+ " CALL_ROUTINE(fixup) "\n\
-+\n\
-+ @ save the return\n\
-+ mov ip, r0\n\
-+\n\
-+ @ restore the stack\n\
-+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+\n\
-+ @ jump to the newly found address\n\
-+ mov pc, ip\n\
-+\n\
-+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
-+\n\
-+ .globl _dl_runtime_profile\n\
-+ .type _dl_runtime_profile, #function\n\
-+ .align 2\n\
-+_dl_runtime_profile:\n\
-+ @ save almost everything; lr is already on the stack\n\
-+ stmdb sp!,{r0-r3,sl,fp}\n\
-+\n\
-+ @ prepare to call fixup()\n\
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-+ sub r1, ip, lr\n\
-+ sub r1, r1, #4\n\
-+ add r1, r1, r1\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
-+\n\
-+ @ call profiling fixup routine\n\
-+ " CALL_ROUTINE(profile_fixup) "\n\
-+\n\
-+ @ save the return\n\
-+ mov ip, r0\n\
-+\n\
-+ @ restore the stack\n\
-+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+\n\
-+ @ jump to the newly found address\n\
-+ mov pc, ip\n\
-+\n\
-+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
-+ .previous\n\
- ");
- #else // PROF
- # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-- .text
-- .globl _dl_runtime_resolve
-- .globl _dl_runtime_profile
-- .type _dl_runtime_resolve, #function
-- .type _dl_runtime_profile, #function
-- .align 2
--_dl_runtime_resolve:
--_dl_runtime_profile:
-- @ we get called with
-- @ stack[0] contains the return address from this call
-- @ ip contains &GOT[n+3] (pointer to function)
-- @ lr points to &GOT[2]
--
-- @ save almost everything; return add is already on the stack
-- stmdb sp!,{r0-r3,sl,fp}
--
-- @ prepare to call fixup()
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-- sub r1, ip, lr
-- sub r1, r1, #4
-- add r1, r1, r1
--
-- @ get pointer to linker struct
-- ldr r0, [lr, #-4]
--
-- @ call profiling fixup routine
-- " CALL_ROUTINE(fixup) "
--
-- @ save the return
-- mov ip, r0
--
-- @ restore the stack
-- ldmia sp!,{r0-r3,sl,fp,lr}
--
-- @ jump to the newly found address
-- mov pc, ip
--
-- .size _dl_runtime_profile, .-_dl_runtime_profile
-- .previous
-+ .text\n\
-+ .globl _dl_runtime_resolve\n\
-+ .globl _dl_runtime_profile\n\
-+ .type _dl_runtime_resolve, #function\n\
-+ .type _dl_runtime_profile, #function\n\
-+ .align 2\n\
-+_dl_runtime_resolve:\n\
-+_dl_runtime_profile:\n\
-+ @ we get called with\n\
-+ @ stack[0] contains the return address from this call\n\
-+ @ ip contains &GOT[n+3] (pointer to function)\n\
-+ @ lr points to &GOT[2]\n\
-+\n\
-+ @ save almost everything; return add is already on the stack\n\
-+ stmdb sp!,{r0-r3,sl,fp}\n\
-+\n\
-+ @ prepare to call fixup()\n\
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-+ sub r1, ip, lr\n\
-+ sub r1, r1, #4\n\
-+ add r1, r1, r1\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
-+\n\
-+ @ call profiling fixup routine\n\
-+ " CALL_ROUTINE(fixup) "\n\
-+\n\
-+ @ save the return\n\
-+ mov ip, r0\n\
-+\n\
-+ @ restore the stack\n\
-+ ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+\n\
-+ @ jump to the newly found address\n\
-+ mov pc, ip\n\
-+\n\
-+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
-+ .previous\n\
- ");
- #endif //PROF
-
-@@ -256,70 +257,70 @@
- its return value is the user program's entry point. */
-
- #define RTLD_START asm ("\
--.text
--.globl _start
--.globl _dl_start_user
--_start:
-- @ at start time, all the args are on the stack
-- mov r0, sp
-- bl _dl_start
-- @ returns user entry point in r0
--_dl_start_user:
-- mov r6, r0
-- @ we are PIC code, so get global offset table
-- ldr sl, .L_GET_GOT
-- add sl, pc, sl
--.L_GOT_GOT:
-- @ Store the highest stack address
-- ldr r1, .L_STACK_END
-- ldr r1, [sl, r1]
-- str sp, [r1]
-- @ See if we were run as a command with the executable file
-- @ name as an extra leading argument.
-- ldr r4, .L_SKIP_ARGS
-- ldr r4, [sl, r4]
-- @ get the original arg count
-- ldr r1, [sp]
-- @ subtract _dl_skip_args from it
-- sub r1, r1, r4
-- @ adjust the stack pointer to skip them
-- add sp, sp, r4, lsl #2
-- @ get the argv address
-- add r2, sp, #4
-- @ store the new argc in the new stack location
-- str r1, [sp]
-- @ compute envp
-- add r3, r2, r1, lsl #2
-- add r3, r3, #4
--
-- @ now we call _dl_init
-- ldr r0, .L_LOADED
-- ldr r0, [sl, r0]
-- ldr r0, [r0]
-- @ call _dl_init
-- bl _dl_init(PLT)
-- @ clear the startup flag
-- ldr r2, .L_STARTUP_FLAG
-- ldr r1, [sl, r2]
-- mov r0, #0
-- str r0, [r1]
-- @ load the finalizer function
-- ldr r0, .L_FINI_PROC
-- ldr r0, [sl, r0]
-- @ jump to the user_s entry point
-- mov pc, r6
--.L_GET_GOT:
-+.text\n\
-+.globl _start\n\
-+.globl _dl_start_user\n\
-+_start:\n\
-+ @ at start time, all the args are on the stack\n\
-+ mov r0, sp\n\
-+ bl _dl_start\n\
-+ @ returns user entry point in r0\n\
-+_dl_start_user:\n\
-+ mov r6, r0\n\
-+ @ we are PIC code, so get global offset table\n\
-+ ldr sl, .L_GET_GOT\n\
-+ add sl, pc, sl\n\
-+.L_GOT_GOT:\n\
-+ @ Store the highest stack address\n\
-+ ldr r1, .L_STACK_END\n\
-+ ldr r1, [sl, r1]\n\
-+ str sp, [r1]\n\
-+ @ See if we were run as a command with the executable file\n\
-+ @ name as an extra leading argument.\n\
-+ ldr r4, .L_SKIP_ARGS\n\
-+ ldr r4, [sl, r4]\n\
-+ @ get the original arg count\n\
-+ ldr r1, [sp]\n\
-+ @ subtract _dl_skip_args from it\n\
-+ sub r1, r1, r4\n\
-+ @ adjust the stack pointer to skip them\n\
-+ add sp, sp, r4, lsl #2\n\
-+ @ get the argv address\n\
-+ add r2, sp, #4\n\
-+ @ store the new argc in the new stack location\n\
-+ str r1, [sp]\n\
-+ @ compute envp\n\
-+ add r3, r2, r1, lsl #2\n\
-+ add r3, r3, #4\n\
-+\n\
-+ @ now we call _dl_init\n\
-+ ldr r0, .L_LOADED\n\
-+ ldr r0, [sl, r0]\n\
-+ ldr r0, [r0]\n\
-+ @ call _dl_init\n\
-+ bl _dl_init(PLT)\n\
-+ @ clear the startup flag\n\
-+ ldr r2, .L_STARTUP_FLAG\n\
-+ ldr r1, [sl, r2]\n\
-+ mov r0, #0\n\
-+ str r0, [r1]\n\
-+ @ load the finalizer function\n\
-+ ldr r0, .L_FINI_PROC\n\
-+ ldr r0, [sl, r0]\n\
-+ @ jump to the user_s entry point\n\
-+ mov pc, r6\n\
-+.L_GET_GOT:\n\
- .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4 \n\
- .L_SKIP_ARGS: \n\
- .word _dl_skip_args(GOTOFF) \n\
--.L_STARTUP_FLAG:
-- .word _dl_starting_up(GOT)
--.L_FINI_PROC:
-- .word _dl_fini(GOT)
--.L_STACK_END:
-- .word __libc_stack_end(GOT)
--.L_LOADED:
-- .word _dl_loaded(GOT)
-+.L_STARTUP_FLAG:\n\
-+ .word _dl_starting_up(GOT)\n\
-+.L_FINI_PROC:\n\
-+ .word _dl_fini(GOT)\n\
-+.L_STACK_END:\n\
-+ .word __libc_stack_end(GOT)\n\
-+.L_LOADED:\n\
-+ .word _dl_loaded(GOT)\n\
- .previous\n\
- ");
-
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-m68k.patch b/packages/glibc/glibc-2.2.5/dl-machine-m68k.patch
deleted file mode 100644
index 41a6f3a573..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-m68k.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/m68k/dl-machine.h~dl-machine-m68k.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/m68k/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation inline functions. m68k version.
-- Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -85,11 +85,11 @@
- {
- got[2] = (Elf32_Addr) &_dl_runtime_profile;
-
-- if (_dl_name_match_p (_dl_profile, l))
-+ if (_dl_name_match_p (GL(dl_profile), l))
- {
- /* This is the object we are looking for. Say that we really
- want profiling and the timers are started. */
-- _dl_profile_map = l;
-+ GL(dl_profile_map) = l;
- }
- }
- else
-@@ -104,22 +104,22 @@
- /* This code is used in dl-runtime.c to call the `fixup' function
- and then redirect to the address it returns. */
- #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
--"| Trampoline for " #fixup_name "
-- .globl " #tramp_name "
-- .type " #tramp_name ", @function
--" #tramp_name ":
-- | Save %a0 (struct return address) and %a1.
-- move.l %a0, -(%sp)
-- move.l %a1, -(%sp)
-- | Call the real address resolver.
-- jbsr " #fixup_name "
-- | Restore register %a0 and %a1.
-- move.l (%sp)+, %a1
-- move.l (%sp)+, %a0
-- | Pop parameters
-- addq.l #8, %sp
-- | Call real function.
-- jmp (%d0)
-+"| Trampoline for " #fixup_name "\n\
-+ .globl " #tramp_name "\n\
-+ .type " #tramp_name ", @function\n\
-+" #tramp_name ":\n\
-+ | Save %a0 (struct return address) and %a1.\n\
-+ move.l %a0, -(%sp)\n\
-+ move.l %a1, -(%sp)\n\
-+ | Call the real address resolver.\n\
-+ jbsr " #fixup_name "\n\
-+ | Restore register %a0 and %a1.\n\
-+ move.l (%sp)+, %a1\n\
-+ move.l (%sp)+, %a0\n\
-+ | Pop parameters\n\
-+ addq.l #8, %sp\n\
-+ | Call real function.\n\
-+ jmp (%d0)\n\
- .size " #tramp_name ", . - " #tramp_name "\n"
- #ifndef PROF
- #define ELF_MACHINE_RUNTIME_TRAMPOLINE \
-@@ -143,50 +143,50 @@
- its return value is the user program's entry point. */
-
- #define RTLD_START asm ("\
-- .text
-- .globl _start
-- .type _start,@function
--_start:
-- move.l %sp, -(%sp)
-- jbsr _dl_start
-- addq.l #4, %sp
-- /* FALLTHRU */
--
-- .globl _dl_start_user
-- .type _dl_start_user,@function
--_dl_start_user:
-- | Save the user entry point address in %a4.
-- move.l %d0, %a4
-- | Point %a5 at the GOT.
-- lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5
-- | Remember the highest stack address.
-- move.l %sp, ([__libc_stack_end@GOT.w, %a5])
-- | See if we were run as a command with the executable file
-- | name as an extra leading argument.
-- move.l ([_dl_skip_args@GOT.w, %a5]), %d0
-- | Pop the original argument count
-- move.l (%sp)+, %d1
-- | Subtract _dl_skip_args from it.
-- sub.l %d0, %d1
-- | Adjust the stack pointer to skip _dl_skip_args words.
-- lea (%sp, %d0*4), %sp
-- | Push back the modified argument count.
-- move.l %d1, -(%sp)
-- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
-- pea 8(%sp, %d1*4)
-- pea 8(%sp)
-- move.l %d1, -(%sp)
-- move.l ([_dl_loaded@GOT.w, %a5]), -(%sp)
-- jbsr _dl_init@PLTPC
-- addq.l #8, %sp
-- addq.l #8, %sp
-- | Pass our finalizer function to the user in %a1.
-- move.l _dl_fini@GOT.w(%a5), %a1
-- | Initialize %fp with the stack pointer.
-- move.l %sp, %fp
-- | Jump to the user's entry point.
-- jmp (%a4)
-- .size _dl_start_user, . - _dl_start_user
-+ .text\n\
-+ .globl _start\n\
-+ .type _start,@function\n\
-+_start:\n\
-+ move.l %sp, -(%sp)\n\
-+ jbsr _dl_start\n\
-+ addq.l #4, %sp\n\
-+ /* FALLTHRU */\n\
-+\n\
-+ .globl _dl_start_user\n\
-+ .type _dl_start_user,@function\n\
-+_dl_start_user:\n\
-+ | Save the user entry point address in %a4.\n\
-+ move.l %d0, %a4\n\
-+ | Point %a5 at the GOT.\n\
-+ lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5\n\
-+ | Remember the highest stack address.\n\
-+ move.l %sp, ([__libc_stack_end@GOT.w, %a5])\n\
-+ | See if we were run as a command with the executable file\n\
-+ | name as an extra leading argument.\n\
-+ move.l ([_dl_skip_args@GOT.w, %a5]), %d0\n\
-+ | Pop the original argument count\n\
-+ move.l (%sp)+, %d1\n\
-+ | Subtract _dl_skip_args from it.\n\
-+ sub.l %d0, %d1\n\
-+ | Adjust the stack pointer to skip _dl_skip_args words.\n\
-+ lea (%sp, %d0*4), %sp\n\
-+ | Push back the modified argument count.\n\
-+ move.l %d1, -(%sp)\n\
-+ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\
-+ pea 8(%sp, %d1*4)\n\
-+ pea 8(%sp)\n\
-+ move.l %d1, -(%sp)\n\
-+ move.l ([_rtld_global@GOT.w, %a5]), -(%sp)\n\
-+ jbsr _dl_init@PLTPC\n\
-+ addq.l #8, %sp\n\
-+ addq.l #8, %sp\n\
-+ | Pass our finalizer function to the user in %a1.\n\
-+ move.l _dl_fini@GOT.w(%a5), %a1\n\
-+ | Initialize %fp with the stack pointer.\n\
-+ move.l %sp, %fp\n\
-+ | Jump to the user's entry point.\n\
-+ jmp (%a4)\n\
-+ .size _dl_start_user, . - _dl_start_user\n\
- .previous");
-
- /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
-@@ -251,7 +251,7 @@
- found. */
- break;
- if (sym->st_size > refsym->st_size
-- || (sym->st_size < refsym->st_size && _dl_verbose))
-+ || (sym->st_size < refsym->st_size && GL(dl_verbose)))
- {
- extern char **_dl_argv;
- const char *strtab;
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-mips.patch b/packages/glibc/glibc-2.2.5/dl-machine-mips.patch
deleted file mode 100644
index b9c7ad8f1e..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-mips.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/mips/dl-machine.h~dl-machine-mips.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/mips/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -450,7 +450,7 @@
- addu $7, $7, 4\n\
- subu $29, 16\n\
- # Call the function to run the initializers.\n\
-- jal _dl_init
-+ jal _dl_init_internal\n\
- addiu $29, 16\n\
- # Pass our finalizer function to the user in $2 as per ELF ABI.\n\
- la $2, _dl_fini\n\
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-sh.patch b/packages/glibc/glibc-2.2.5/dl-machine-sh.patch
deleted file mode 100644
index c5f84b42a4..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-sh.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/sh/dl-machine.h~dl-machine-sh.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/sh/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -53,16 +53,16 @@
- elf_machine_load_address (void)
- {
- Elf32_Addr addr;
-- asm ("mov.l .L1,r0\n\
-- mov.l .L3,r2\n\
-+ asm ("mov.l 1f,r0\n\
-+ mov.l 3f,r2\n\
- add r12,r2\n\
- mov.l @(r0,r12),r0\n\
-- bra .L2\n\
-+ bra 2f\n\
- sub r0,r2\n\
- .align 2\n\
-- .L1: .long _dl_start@GOT\n\
-- .L3: .long _dl_start@GOTOFF\n\
-- .L2: mov r2,%0"
-+ 1: .long _dl_start@GOT\n\
-+ 3: .long _dl_start@GOTOFF\n\
-+ 2: mov r2,%0"
- : "=r" (addr) : : "r0", "r1", "r2");
- return addr;
- }
diff --git a/packages/glibc/glibc-2.2.5/dl-machine-sparc.patch b/packages/glibc/glibc-2.2.5/dl-machine-sparc.patch
deleted file mode 100644
index 910e18035d..0000000000
--- a/packages/glibc/glibc-2.2.5/dl-machine-sparc.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h~dl-machine-sparc.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -148,23 +148,23 @@
- and then redirect to the address it returns. */
- #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
- asm ( "\
-- .text
-- .globl " #tramp_name "
-- .type " #tramp_name ", @function
-- .align 32
--" #tramp_name ":
-- /* Set up the arguments to fixup --
-- %o0 = link_map out of plt0
-- %o1 = offset of reloc entry
-- %o2 = return address */
-- ld [%o7 + 8], %o0
-- srl %g1, 10, %o1
-- mov %i7, %o2
-- call " #fixup_name "
-- sub %o1, 4*12, %o1
-- jmp %o0
-- restore
-- .size " #tramp_name ", . - " #tramp_name "
-+ .text\n\
-+ .globl " #tramp_name "\n\
-+ .type " #tramp_name ", @function\n\
-+ .align 32\n\
-+" #tramp_name ":\n\
-+ /* Set up the arguments to fixup --\n\
-+ %o0 = link_map out of plt0\n\
-+ %o1 = offset of reloc entry\n\
-+ %o2 = return address */\n\
-+ ld [%o7 + 8], %o0\n\
-+ srl %g1, 10, %o1\n\
-+ mov %i7, %o2\n\
-+ call " #fixup_name "\n\
-+ sub %o1, 4*12, %o1\n\
-+ jmp %o0\n\
-+ restore\n\
-+ .size " #tramp_name ", . - " #tramp_name "\n\
- .previous")
-
- #ifndef PROF
-@@ -199,96 +199,96 @@
- its return value is the user program's entry point. */
-
- #define RTLD_START __asm__ ("\
-- .text
-- .globl _start
-- .type _start, @function
-- .align 32
--_start:
-- /* Allocate space for functions to drop their arguments. */
-- sub %sp, 6*4, %sp
-- /* Pass pointer to argument block to _dl_start. */
-- call _dl_start
-- add %sp, 22*4, %o0
-- /* FALTHRU */
-- .globl _dl_start_user
-- .type _dl_start_user, @function
--_dl_start_user:
-- /* Load the PIC register. */
--1: call 2f
-- sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
--2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
-- add %l7, %o7, %l7
-- /* Save the user entry point address in %l0 */
-- mov %o0, %l0
-- /* Store the highest stack address. */
-- sethi %hi(__libc_stack_end), %g2
-- or %g2, %lo(__libc_stack_end), %g2
-- ld [%l7 + %g2], %l1
-- sethi %hi(_dl_skip_args), %g2
-- add %sp, 6*4, %l2
-- or %g2, %lo(_dl_skip_args), %g2
-- st %l2, [%l1]
-- /* See if we were run as a command with the executable file name as an
-- extra leading argument. If so, adjust the contents of the stack. */
-- ld [%l7+%g2], %i0
-- ld [%i0], %i0
-- tst %i0
-- beq 3f
-- ld [%sp+22*4], %i5 /* load argc */
-- /* Find out how far to shift. */
-- sethi %hi(_dl_argv), %l3
-- or %l3, %lo(_dl_argv), %l3
-- ld [%l7+%l3], %l3
-- sub %i5, %i0, %i5
-- ld [%l3], %l4
-- sll %i0, 2, %i2
-- st %i5, [%sp+22*4]
-- sub %l4, %i2, %l4
-- add %sp, 23*4, %i1
-- add %i1, %i2, %i2
-- st %l4, [%l3]
-- /* Copy down argv */
--21: ld [%i2], %i3
-- add %i2, 4, %i2
-- tst %i3
-- st %i3, [%i1]
-- bne 21b
-- add %i1, 4, %i1
-- /* Copy down env */
--22: ld [%i2], %i3
-- add %i2, 4, %i2
-- tst %i3
-- st %i3, [%i1]
-- bne 22b
-- add %i1, 4, %i1
-- /* Copy down auxiliary table. */
--23: ld [%i2], %i3
-- ld [%i2+4], %i4
-- add %i2, 8, %i2
-- tst %i3
-- st %i3, [%i1]
-- st %i4, [%i1+4]
-- bne 23b
-- add %i1, 8, %i1
-- /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */
--3: sethi %hi(_dl_loaded), %o0
-- add %sp, 23*4, %o2
-- orcc %o0, %lo(_dl_loaded), %o0
-- sll %i5, 2, %o3
-- ld [%l7+%o0], %o0
-- add %o3, 4, %o3
-- mov %i5, %o1
-- add %o2, %o3, %o3
-- call _dl_init
-- ld [%o0], %o0
-- /* Pass our finalizer function to the user in %g1. */
-- sethi %hi(_dl_fini), %g1
-- or %g1, %lo(_dl_fini), %g1
-- ld [%l7+%g1], %g1
-- /* Jump to the user's entry point and deallocate the extra stack we got. */
-- jmp %l0
-- add %sp, 6*4, %sp
-- .size _dl_start_user, . - _dl_start_user
-+ .text\n\
-+ .globl _start\n\
-+ .type _start, @function\n\
-+ .align 32\n\
-+_start:\n\
-+ /* Allocate space for functions to drop their arguments. */\n\
-+ sub %sp, 6*4, %sp\n\
-+ /* Pass pointer to argument block to _dl_start. */\n\
-+ call _dl_start\n\
-+ add %sp, 22*4, %o0\n\
-+ /* FALTHRU */\n\
-+ .globl _dl_start_user\n\
-+ .type _dl_start_user, @function\n\
-+_dl_start_user:\n\
-+ /* Load the PIC register. */\n\
-+1: call 2f\n\
-+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
-+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
-+ add %l7, %o7, %l7\n\
-+ /* Save the user entry point address in %l0 */\n\
-+ mov %o0, %l0\n\
-+ /* Store the highest stack address. */\n\
-+ sethi %hi(__libc_stack_end), %g2\n\
-+ or %g2, %lo(__libc_stack_end), %g2\n\
-+ ld [%l7 + %g2], %l1\n\
-+ sethi %hi(_dl_skip_args), %g2\n\
-+ add %sp, 6*4, %l2\n\
-+ or %g2, %lo(_dl_skip_args), %g2\n\
-+ st %l2, [%l1]\n\
-+ /* See if we were run as a command with the executable file name as an\n\
-+ extra leading argument. If so, adjust the contents of the stack. */\n\
-+ ld [%l7+%g2], %i0\n\
-+ ld [%i0], %i0\n\
-+ tst %i0\n\
-+ beq 3f\n\
-+ ld [%sp+22*4], %i5 /* load argc */\n\
-+ /* Find out how far to shift. */\n\
-+ sethi %hi(_dl_argv), %l3\n\
-+ or %l3, %lo(_dl_argv), %l3\n\
-+ ld [%l7+%l3], %l3\n\
-+ sub %i5, %i0, %i5\n\
-+ ld [%l3], %l4\n\
-+ sll %i0, 2, %i2\n\
-+ st %i5, [%sp+22*4]\n\
-+ sub %l4, %i2, %l4\n\
-+ add %sp, 23*4, %i1\n\
-+ add %i1, %i2, %i2\n\
-+ st %l4, [%l3]\n\
-+ /* Copy down argv */\n\
-+21: ld [%i2], %i3\n\
-+ add %i2, 4, %i2\n\
-+ tst %i3\n\
-+ st %i3, [%i1]\n\
-+ bne 21b\n\
-+ add %i1, 4, %i1\n\
-+ /* Copy down env */\n\
-+22: ld [%i2], %i3\n\
-+ add %i2, 4, %i2\n\
-+ tst %i3\n\
-+ st %i3, [%i1]\n\
-+ bne 22b\n\
-+ add %i1, 4, %i1\n\
-+ /* Copy down auxiliary table. */\n\
-+23: ld [%i2], %i3\n\
-+ ld [%i2+4], %i4\n\
-+ add %i2, 8, %i2\n\
-+ tst %i3\n\
-+ st %i3, [%i1]\n\
-+ st %i4, [%i1+4]\n\
-+ bne 23b\n\
-+ add %i1, 8, %i1\n\
-+ /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */\n\
-+3: sethi %hi(_dl_loaded), %o0\n\
-+ add %sp, 23*4, %o2\n\
-+ orcc %o0, %lo(_dl_loaded), %o0\n\
-+ sll %i5, 2, %o3\n\
-+ ld [%l7+%o0], %o0\n\
-+ add %o3, 4, %o3\n\
-+ mov %i5, %o1\n\
-+ add %o2, %o3, %o3\n\
-+ call _dl_init\n\
-+ ld [%o0], %o0\n\
-+ /* Pass our finalizer function to the user in %g1. */\n\
-+ sethi %hi(_dl_fini), %g1\n\
-+ or %g1, %lo(_dl_fini), %g1\n\
-+ ld [%l7+%g1], %g1\n\
-+ /* Jump to the user's entry point and deallocate the extra stack we got. */\n\
-+ jmp %l0\n\
-+ add %sp, 6*4, %sp\n\
-+ .size _dl_start_user, . - _dl_start_user\n\
- .previous");
-
- static inline Elf32_Addr
diff --git a/packages/glibc/glibc-2.2.5/errlist-1.9.patch b/packages/glibc/glibc-2.2.5/errlist-1.9.patch
deleted file mode 100644
index ced22eecf9..0000000000
--- a/packages/glibc/glibc-2.2.5/errlist-1.9.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c~errlist-1.9.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/errlist.c 2004-09-03 19:00:37.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -38,10 +38,9 @@
- const int __old_sys_nerr = OLD_ERRLIST_SIZE;
-
- strong_alias (__old_sys_nerr, _old_sys_nerr);
--weak_alias (__old_sys_nerr, _old_sys_nerr)
- compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0);
- compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0);
--weak_alias (__old_sys_errlist, _old_sys_errlist);
-+strong_alias (__old_sys_errlist, _old_sys_errlist);
- compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0);
- compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0);
- #endif
diff --git a/packages/glibc/glibc-2.2.5/errlist-arm.patch b/packages/glibc/glibc-2.2.5/errlist-arm.patch
deleted file mode 100644
index a2afbd036e..0000000000
--- a/packages/glibc/glibc-2.2.5/errlist-arm.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/errlist.c~errlist-arm.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/errlist.c 2004-09-03 19:00:37.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -38,10 +38,9 @@
- const int __old_sys_nerr = OLD_ERRLIST_SIZE;
-
- strong_alias (__old_sys_nerr, _old_sys_nerr);
--weak_alias (__old_sys_nerr, _old_sys_nerr)
- compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0);
- compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0);
--weak_alias (__old_sys_errlist, _old_sys_errlist);
-+strong_alias (__old_sys_errlist, _old_sys_errlist);
- compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0);
- compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0);
- #endif
diff --git a/packages/glibc/glibc-2.2.5/etc/ld.so.conf b/packages/glibc/glibc-2.2.5/etc/ld.so.conf
deleted file mode 100644
index 46e06d3f0a..0000000000
--- a/packages/glibc/glibc-2.2.5/etc/ld.so.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/local/lib
-
diff --git a/packages/glibc/glibc-2.2.5/fhs-linux-paths.patch b/packages/glibc/glibc-2.2.5/fhs-linux-paths.patch
deleted file mode 100644
index 9ba033fd8d..0000000000
--- a/packages/glibc/glibc-2.2.5/fhs-linux-paths.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/paths.h~fhs-linux-paths.patch 2000-11-15 17:06:47.000000000 -0600
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/paths.h 2004-09-03 19:00:39.000000000 -0500
-@@ -67,7 +67,7 @@
- /* Provide trailing slash, since mostly used for building pathnames. */
- #define _PATH_DEV "/dev/"
- #define _PATH_TMP "/tmp/"
--#define _PATH_VARDB "/var/db/"
-+#define _PATH_VARDB "/var/lib/misc/"
- #define _PATH_VARRUN "/var/run/"
- #define _PATH_VARTMP "/var/tmp/"
-
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch
deleted file mode 100644
index e4abfe3f49..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/i386/dl-machine.h~glibc-2.2.5-allow-gcc-3.4-fixup.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/i386/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
-@@ -63,11 +63,12 @@
- destroys the passed register information. */
- /* GKM FIXME: Fix trampoline to pass bounds so we can do
- without the `__unbounded' qualifier. */
-+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused))
- static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
-- __attribute__ ((regparm (2), unused));
-+ ARCH_FIXUP_ATTRIBUTE;
- static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
- ElfW(Addr) retaddr)
-- __attribute__ ((regparm (3), unused));
-+ ARCH_FIXUP_ATTRIBUTE;
- #endif
-
- /* Set up the loaded object described by L so its unrelocated PLT
---- glibc-2.2.5/elf/dl-runtime.c~glibc-2.2.5-allow-gcc-3.4-fixup.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/elf/dl-runtime.c 2004-09-03 19:00:37.000000000 -0500
-@@ -33,6 +33,12 @@
- # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
- #endif
-
-+/* The fixup functions might have need special attributes. If none
-+ are provided define the macro as empty. */
-+#ifndef ARCH_FIXUP_ATTRIBUTE
-+# define ARCH_FIXUP_ATTRIBUTE
-+#endif
-+
-
- /* This function is called through a special trampoline from the PLT the
- first time each PLT entry is called. We must perform the relocation
-@@ -42,7 +48,7 @@
- function. */
-
- #ifndef ELF_MACHINE_NO_PLT
--static ElfW(Addr) __attribute_used__
-+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE
- fixup (
- # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
- ELF_MACHINE_RUNTIME_FIXUP_ARGS,
-@@ -126,7 +132,7 @@
-
- #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__
-
--static ElfW(Addr) __attribute_used__
-+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE
- profile_fixup (
- #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
- ELF_MACHINE_RUNTIME_FIXUP_ARGS,
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch
deleted file mode 100644
index 5a9b3057dd..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/grp/initgroups.c~glibc-2.2.5-allow-gcc-3.4-grp.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/grp/initgroups.c 2004-09-03 19:00:38.000000000 -0500
-@@ -176,7 +176,7 @@
-
- /* This is really only for debugging. */
- if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN)
-- __libc_fatal ("illegal status in " __FUNCTION__);
-+ __libc_fatal ("illegal status in internal_getgrouplist");
-
- if (status != NSS_STATUS_SUCCESS
- && nss_next_action (nip, status) == NSS_ACTION_RETURN)
-@@ -214,7 +214,7 @@
- }
- else
- *ngroups = result;
--
-+
- memcpy (groups, newgroups, *ngroups * sizeof (gid_t));
-
- free (newgroups);
---- glibc-2.2.5/nss/nsswitch.c~glibc-2.2.5-allow-gcc-3.4-grp.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/nss/nsswitch.c 2004-09-03 19:00:38.000000000 -0500
-@@ -178,7 +178,7 @@
- {
- /* This is really only for debugging. */
- if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN)
-- __libc_fatal ("illegal status in " __FUNCTION__);
-+ __libc_fatal ("illegal status in __nss_next");
-
- if (nss_next_action (*ni, status) == NSS_ACTION_RETURN)
- return 1;
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch
deleted file mode 100644
index 0a6cee11fe..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch
+++ /dev/null
@@ -1,881 +0,0 @@
-Fixes following error building glibc-2.2.5 with gcc-3.4:
-td_init.c: In function `td_init':
-td_init.c:30: error: parse error before string constant
-td_init.c:30: error: parse error before string constant
-make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.2.5/build-glibc/linuxthreads_db/td_init.os] Error 1
-
-# Retrieved by diffing a +-1 day rng around the time mentioned
-# in http://sources.redhat.com/ml/glibc-cvs/2001-q4/msg00654.html
-# cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc diff -u -D"2001-12-27 08:41:30" -D"2001-12-29 08:41:32"
-# then fixing paths.
-
-Index: ChangeLog
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/ChangeLog,v
-retrieving revision 1.41
-retrieving revision 1.42
-diff -u -r1.41 -r1.42
---- libc/linuxthreads_db/ChangeLog 13 Apr 2001 00:09:54 -0000 1.41
-+++ libc/linuxthreads_db/ChangeLog 29 Dec 2001 00:59:58 -0000 1.42
-@@ -1,3 +1,43 @@
-+2001-12-28 Andreas Jaeger <aj@suse.de>
-+
-+ * td_init.c (td_init): Don't use __FUNCTION__ as literal.
-+ * td_log.c (td_log): Likewise.
-+ * td_ta_delete.c (td_ta_delete): Likewise.
-+ * td_ta_get_nthreads.c (td_ta_get_nthreads): Likewise.
-+ * td_ta_get_ph.c (td_ta_get_ph): Likewise.
-+ * td_ta_map_id2thr.c (td_ta_map_id2thr): Likewise.
-+ * td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Likewise.
-+ * td_ta_new.c (td_ta_new): Likewise.
-+ * td_ta_clear_event.c (td_ta_clear_event): Likewise.
-+ * td_ta_enable_stats.c (td_ta_enable_stats): Likewise.
-+ * td_ta_event_addr.c (td_ta_event_addr): Likewise.
-+ * td_ta_event_getmsg.c (td_ta_event_getmsg): Likewise.
-+ * td_ta_get_stats.c (td_ta_get_stats): Likewise.
-+ * td_ta_reset_stats.c (td_ta_reset_stats): Likewise.
-+ * td_ta_set_event.c (td_ta_set_event): Likewise.
-+ * td_ta_setconcurrency.c (td_ta_setconcurrency): Likewise.
-+ * td_ta_thr_iter.c (td_ta_thr_iter): Likewise.
-+ * td_ta_tsd_iter.c (td_ta_tsd_iter): Likewise.
-+ * td_thr_clear_event.c (td_thr_clear_event): Likewise.
-+ * td_thr_dbresume.c (td_thr_dbresume): Likewise.
-+ * td_thr_dbsuspend.c (td_thr_dbsuspend): Likewise.
-+ * td_thr_event_enable.c (td_thr_event_enable): Likewise.
-+ * td_thr_event_getmsg.c (td_thr_event_getmsg): Likewise.
-+ * td_thr_get_info.c (td_thr_get_info): Likewise.
-+ * td_thr_getfpregs.c (td_thr_getfpregs): Likewise.
-+ * td_thr_getgregs.c (td_thr_getgregs): Likewise.
-+ * td_thr_getxregs.c (td_thr_getxregs): Likewise.
-+ * td_thr_getxregsize.c (td_thr_getxregsize): Likewise.
-+ * td_thr_set_event.c (td_thr_set_event): Likewise.
-+ * td_thr_setfpregs.c (td_thr_setfpregs): Likewise.
-+ * td_thr_setgregs.c (td_thr_setgregs): Likewise.
-+ * td_thr_setprio.c (td_thr_setprio): Likewise.
-+ * td_thr_setsigpending.c (td_thr_setsigpending): Likewise.
-+ * td_thr_setxregs.c (td_thr_setxregs): Likewise.
-+ * td_thr_sigsetmask.c (td_thr_sigsetmask): Likewise.
-+ * td_thr_tsd.c (td_thr_tsd): Likewise.
-+ * td_thr_validate.c (td_thr_validate): Likewise.
-+
- 2001-04-12 Ulrich Drepper <drepper@redhat.com>
-
- * td_ta_map_id2thr.c: If thread terminated return TD_NOTHR.
-Index: td_init.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_init.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_init.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_init.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Initialization function of thread debugger support library.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -27,6 +27,6 @@
- td_init (void)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_init");
- return TD_OK;
- }
-Index: td_log.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_log.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_log.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_log.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Noop, left for historical reasons.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,8 +25,8 @@
- td_log (void)
- {
- /* This interface is deprecated in the Sun interface. We provide it
-- for compatibility but don't do anyhting ourself. We might in
-+ for compatibility but don't do anything ourself. We might in
- future do some logging if this seems reasonable. */
-- LOG (__FUNCTION__);
-+ LOG ("td_log");
- return TD_OK;
- }
-Index: td_ta_clear_event.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_clear_event.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_clear_event.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_clear_event.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Globally disable events.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -29,7 +29,7 @@
- td_thr_events_t old_event;
- int i;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_clear_event");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_delete.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_delete.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_delete.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_delete.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Detach to target process.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -26,7 +26,7 @@
- td_err_e
- td_ta_delete (td_thragent_t *ta)
- {
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_delete");
-
- /* Safety check. */
- if (ta == NULL || __td_agent_list == NULL)
-Index: td_ta_enable_stats.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_enable_stats.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_enable_stats.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_enable_stats.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Enable collection of statistics for process.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,7 +25,7 @@
- td_ta_enable_stats (const td_thragent_t *ta, int enable)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_enable_stats");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_event_addr.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_event_addr.c,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -r1.5 -r1.6
---- libc/linuxthreads_db/td_ta_event_addr.c 6 Jul 2001 05:27:23 -0000 1.5
-+++ libc/linuxthreads_db/td_ta_event_addr.c 28 Dec 2001 16:41:29 -0000 1.6
-@@ -27,7 +27,7 @@
- td_err_e res = TD_NOEVENT;
- int idx = -1;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_event_addr");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_event_getmsg.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_event_getmsg.c,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -r1.5 -r1.6
---- libc/linuxthreads_db/td_ta_event_getmsg.c 6 Jul 2001 05:27:23 -0000 1.5
-+++ libc/linuxthreads_db/td_ta_event_getmsg.c 28 Dec 2001 16:41:29 -0000 1.6
-@@ -1,5 +1,5 @@
- /* Retrieve event.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -32,7 +32,7 @@
- td_eventbuf_t event;
- psaddr_t addr;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_event_getmsg");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_get_nthreads.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_nthreads.c,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -r1.5 -r1.6
---- libc/linuxthreads_db/td_ta_get_nthreads.c 6 Jul 2001 05:27:23 -0000 1.5
-+++ libc/linuxthreads_db/td_ta_get_nthreads.c 28 Dec 2001 16:41:29 -0000 1.6
-@@ -25,7 +25,7 @@
- {
- psaddr_t addr;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_get_nthreads");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_get_ph.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_ph.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_get_ph.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_get_ph.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Get external process handle.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -24,7 +24,7 @@
- td_err_e
- td_ta_get_ph (const td_thragent_t *ta, struct ps_prochandle **ph)
- {
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_get_ph");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_get_stats.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_get_stats.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_get_stats.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_get_stats.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Retrieve statistics for process.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,7 +25,7 @@
- td_ta_get_stats (const td_thragent_t *ta, td_ta_stats_t *statsp)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_get_stats");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_map_id2thr.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_map_id2thr.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_ta_map_id2thr.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_ta_map_id2thr.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -28,7 +28,7 @@
- struct _pthread_descr_struct pds;
- int pthread_threads_max;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_map_id2thr");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_map_lwp2thr.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_map_lwp2thr.c,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -r1.5 -r1.6
---- libc/linuxthreads_db/td_ta_map_lwp2thr.c 6 Jul 2001 05:27:23 -0000 1.5
-+++ libc/linuxthreads_db/td_ta_map_lwp2thr.c 28 Dec 2001 16:41:29 -0000 1.6
-@@ -1,5 +1,5 @@
- /* Which thread is running on an lwp?
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -34,7 +34,7 @@
- # define num 1
- #endif
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_map_lwp2thr");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_new.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_new.c,v
-retrieving revision 1.10
-retrieving revision 1.11
-diff -u -r1.10 -r1.11
---- libc/linuxthreads_db/td_ta_new.c 6 Jul 2001 05:27:23 -0000 1.10
-+++ libc/linuxthreads_db/td_ta_new.c 28 Dec 2001 16:41:29 -0000 1.11
-@@ -35,7 +35,7 @@
- psaddr_t addr;
- struct agent_list *elemp;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_new");
-
- /* Get the global event mask. This is one of the variables which
- are new in the thread library to enable debugging. If it is
-Index: td_ta_reset_stats.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_reset_stats.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_reset_stats.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_reset_stats.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Reset statistics.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,7 +25,7 @@
- td_ta_reset_stats (const td_thragent_t *ta)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_reset_stats");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_set_event.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_set_event.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_ta_set_event.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_ta_set_event.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -1,5 +1,5 @@
- /* Globally enable events.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -29,7 +29,7 @@
- td_thr_events_t old_event;
- int i;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_set_event");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_setconcurrency.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_setconcurrency.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_ta_setconcurrency.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_ta_setconcurrency.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Set suggested concurrency level for process.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,7 +25,7 @@
- td_ta_setconcurrency (const td_thragent_t *ta, int level)
- {
- /* This is something LinuxThreads does not support. */
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_setconcurrency");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_thr_iter.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_thr_iter.c,v
-retrieving revision 1.11
-retrieving revision 1.12
-diff -u -r1.11 -r1.12
---- libc/linuxthreads_db/td_ta_thr_iter.c 6 Jul 2001 05:27:23 -0000 1.11
-+++ libc/linuxthreads_db/td_ta_thr_iter.c 28 Dec 2001 16:41:29 -0000 1.12
-@@ -1,5 +1,5 @@
- /* Iterate over a process's threads.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -86,7 +86,7 @@
- # define num 1
- #endif
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_thr_iter");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_ta_tsd_iter.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_ta_tsd_iter.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_ta_tsd_iter.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_ta_tsd_iter.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -1,5 +1,5 @@
- /* Iterate over a process's thread-specific data.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -29,7 +29,7 @@
- int pthread_keys_max;
- int cnt;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_ta_tsd_iter");
-
- /* Test whether the TA parameter is ok. */
- if (! ta_ok (ta))
-Index: td_thr_clear_event.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_clear_event.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_thr_clear_event.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_thr_clear_event.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Disable specific event for thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -31,7 +31,7 @@
- td_thr_events_t old_event;
- int i;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_clear_event");
-
- /* Write the new value into the thread data structure. */
- if (ps_pdread (th->th_ta_p->ph,
-Index: td_thr_dbresume.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_dbresume.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_dbresume.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_dbresume.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Resume execution of given thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_dbresume (const td_thrhandle_t *th)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_dbresume");
- return TD_NOCAPAB;
- }
-Index: td_thr_dbsuspend.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_dbsuspend.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_dbsuspend.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_dbsuspend.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Suspend execution of given thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_dbsuspend (const td_thrhandle_t *th)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_dbsuspend");
- return TD_NOCAPAB;
- }
-Index: td_thr_event_enable.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_event_enable.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_thr_event_enable.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_thr_event_enable.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Enable event process-wide.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -28,7 +28,7 @@
- const td_thrhandle_t *th;
- int onoff;
- {
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_event_enable");
-
- /* Write the new value into the thread data structure. */
- if (ps_pdwrite (th->th_ta_p->ph,
-Index: td_thr_event_getmsg.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_event_getmsg.c,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -r1.3 -r1.4
---- libc/linuxthreads_db/td_thr_event_getmsg.c 6 Jul 2001 05:27:23 -0000 1.3
-+++ libc/linuxthreads_db/td_thr_event_getmsg.c 28 Dec 2001 16:41:29 -0000 1.4
-@@ -1,5 +1,5 @@
- /* Retrieve event.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -29,7 +29,7 @@
- {
- td_eventbuf_t event;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_event_getmsg");
-
- /* Read the even structure from the target. */
- if (ps_pdread (th->th_ta_p->ph,
-Index: td_thr_get_info.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_get_info.c,v
-retrieving revision 1.9
-retrieving revision 1.10
-diff -u -r1.9 -r1.10
---- libc/linuxthreads_db/td_thr_get_info.c 6 Jul 2001 05:27:23 -0000 1.9
-+++ libc/linuxthreads_db/td_thr_get_info.c 28 Dec 2001 16:41:29 -0000 1.10
-@@ -1,5 +1,5 @@
- /* Get thread information.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -29,7 +29,7 @@
- {
- struct _pthread_descr_struct pds;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_get_info");
-
- /* Get the thread descriptor. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_getfpregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getfpregs.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_thr_getfpregs.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_thr_getfpregs.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -26,7 +26,7 @@
- {
- struct _pthread_descr_struct pds;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_getfpregs");
-
- /* We have to get the state and the PID for this thread. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_getgregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getgregs.c,v
-retrieving revision 1.8
-retrieving revision 1.9
-diff -u -r1.8 -r1.9
---- libc/linuxthreads_db/td_thr_getgregs.c 6 Jul 2001 05:27:23 -0000 1.8
-+++ libc/linuxthreads_db/td_thr_getgregs.c 28 Dec 2001 16:41:29 -0000 1.9
-@@ -26,7 +26,7 @@
- {
- struct _pthread_descr_struct pds;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_getgregs");
-
- /* We have to get the state and the PID for this thread. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_getxregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getxregs.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_getxregs.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_getxregs.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Get a thread's extra state register set.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_getxregs (const td_thrhandle_t *th, void *xregs)
- {
- /* XXX This might be platform specific. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_getxregs");
- return TD_NOXREGS;
- }
-Index: td_thr_getxregsize.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_getxregsize.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_getxregsize.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_getxregsize.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Get the size of the extra state register set for this architecture.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_getxregsize (const td_thrhandle_t *th, int *sizep)
- {
- /* XXX This might be platform specific. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_getxregsize");
- return TD_NOXREGS;
- }
-Index: td_thr_set_event.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_set_event.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_thr_set_event.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_thr_set_event.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -1,5 +1,5 @@
- /* Enable specific event for thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -31,7 +31,7 @@
- td_thr_events_t old_event;
- int i;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_set_event");
-
- /* Write the new value into the thread data structure. */
- if (ps_pdread (th->th_ta_p->ph,
-Index: td_thr_setfpregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setfpregs.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_thr_setfpregs.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_thr_setfpregs.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -26,7 +26,7 @@
- {
- struct _pthread_descr_struct pds;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_setfpregs");
-
- /* We have to get the state and the PID for this thread. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_setgregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setgregs.c,v
-retrieving revision 1.6
-retrieving revision 1.7
-diff -u -r1.6 -r1.7
---- libc/linuxthreads_db/td_thr_setgregs.c 6 Jul 2001 05:27:23 -0000 1.6
-+++ libc/linuxthreads_db/td_thr_setgregs.c 28 Dec 2001 16:41:29 -0000 1.7
-@@ -26,7 +26,7 @@
- {
- struct _pthread_descr_struct pds;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_setgregs");
-
- /* We have to get the state and the PID for this thread. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_setprio.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setprio.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_setprio.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_setprio.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Set a thread's priority.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_setprio (const td_thrhandle_t *th, int prio)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_setprio");
- return TD_OK;
- }
-Index: td_thr_setsigpending.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setsigpending.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_setsigpending.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_setsigpending.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Raise a signal for a thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -26,6 +26,6 @@
- const sigset_t *ss)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_setsigpending");
- return TD_OK;
- }
-Index: td_thr_setxregs.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_setxregs.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_setxregs.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_setxregs.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Set a thread's extra state register set.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_setxregs (const td_thrhandle_t *ta, const void *addr)
- {
- /* XXX This might have to be platform specific. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_setxregs");
- return TD_NOXREGS;
- }
-Index: td_thr_sigsetmask.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_sigsetmask.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_sigsetmask.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_sigsetmask.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Set a thread's signal mask.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -25,6 +25,6 @@
- td_thr_sigsetmask (const td_thrhandle_t *th, const sigset_t *ss)
- {
- /* XXX We have to figure out what has to be done. */
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_sigsetmask");
- return TD_OK;
- }
-Index: td_thr_tsd.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_tsd.c,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -r1.2 -r1.3
---- libc/linuxthreads_db/td_thr_tsd.c 6 Jul 2001 05:27:23 -0000 1.2
-+++ libc/linuxthreads_db/td_thr_tsd.c 28 Dec 2001 16:41:29 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Get a thread-specific data pointer for a thread.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -33,7 +33,7 @@
- unsigned int idx2nd;
- void *p;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_tsd");
-
- /* Get the thread descriptor. */
- if (ps_pdread (th->th_ta_p->ph, th->th_unique, &pds,
-Index: td_thr_validate.c
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads_db/td_thr_validate.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -r1.4 -r1.5
---- libc/linuxthreads_db/td_thr_validate.c 6 Jul 2001 05:27:23 -0000 1.4
-+++ libc/linuxthreads_db/td_thr_validate.c 28 Dec 2001 16:41:29 -0000 1.5
-@@ -28,7 +28,7 @@
- int pthread_threads_max = th->th_ta_p->pthread_threads_max;
- int cnt;
-
-- LOG (__FUNCTION__);
-+ LOG ("td_thr_validate");
-
- /* Now get all descriptors, one after the other. */
- for (cnt = 0; cnt < pthread_threads_max; ++cnt, ++handles)
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch
deleted file mode 100644
index 138c5414cb..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-allow-gcc-4.x-configure.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Fixes
-checking version of powerpc-405-linux-gnu-gcc ... 4.0.0, bad
-checking for gnumake... no
-checking for gmake... no
-checking for make... make
-checking version of make... 3.80, ok
-configure: error:
-*** These critical programs are missing or too old:gcc
-
-
---- glibc-2.2.5/configure.old 2005-03-10 00:23:46.374213600 -0800
-+++ glibc-2.2.5/configure 2005-03-10 00:25:13.313996744 -0800
-@@ -1476,7 +1476,7 @@
- ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*)
-+ *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|4.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch
deleted file mode 100644
index 8466731834..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-pwrite64.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/alpha/sysdep.h~glibc-2.2.5-alpha-pwrite64.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/alpha/sysdep.h 2004-09-03 19:00:38.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2004 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -56,6 +56,21 @@
- #define __NR_osf_getsysinfo 256
- #define __NR_osf_setsysinfo 257
-
-+/* Help old kernel headers where particular syscalls are not available. */
-+#ifndef __NR_semtimedop
-+# define __NR_semtimedop 423
-+#endif
-+
-+/* This is a kludge to make syscalls.list find these under the names
-+ pread and pwrite, since some kernel headers define those names
-+ and some define the *64 names for the same system calls. */
-+#if !defined __NR_pread && defined __NR_pread64
-+# define __NR_pread __NR_pread64
-+#endif
-+#if !defined __NR_pwrite && defined __NR_pwrite64
-+# define __NR_pwrite __NR_pwrite64
-+#endif
-+
- /*
- * In order to get the hidden arguments for rt_sigaction set up
- * properly, we need to call the assembly version. Detect this in the
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch
deleted file mode 100644
index fd3403405a..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-alpha-self-clobber.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-wget http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/linuxthreads/sysdeps/alpha/pt-machine.h.diff?r1=1.9&r2=1.10&cvsroot=glibc
-
-Should fix error
-
-internals.h: In function `pthread_setcancelstate':
-internals.h:381: error: asm-specifier for variable `__self' conflicts with asm clobber list
-make[2]: *** [/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/linuxthreads/cancel.o] Error 1
-make[2]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/linuxthreads'
-
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/alpha/pt-machine.h,v
-retrieving revision 1.9
-retrieving revision 1.10
-diff -u -r1.9 -r1.10
---- libc/linuxthreads/sysdeps/alpha/pt-machine.h 2002/04/06 04:05:13 1.9
-+++ libc/linuxthreads/sysdeps/alpha/pt-machine.h 2002/05/20 20:09:34 1.10
-@@ -76,7 +76,7 @@
- #define THREAD_SELF \
- ({ \
- register pthread_descr __self __asm__("$0"); \
-- __asm__ ("call_pal %1" : "=r"(__self) : "i"(PAL_rduniq) : "$0"); \
-+ __asm__ ("call_pal %1" : "=r"(__self) : "i"(PAL_rduniq)); \
- __self; \
- })
-
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch
deleted file mode 100644
index eb7fa996fa..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-arm-pwrite64.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h~glibc-2.2.5-arm-pwrite64.patch 2004-09-03 19:00:37.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-09-03 19:00:38.000000000 -0500
-@@ -32,6 +32,15 @@
- #define SWI_BASE (0x900000)
- #define SYS_ify(syscall_name) (__NR_##syscall_name)
-
-+/* This is a kludge to make syscalls.list find these under the names
-+ pread and pwrite, since some kernel headers define those names
-+ and some define the *64 names for the same system calls. */
-+#if !defined __NR_pread && defined __NR_pread64
-+# define __NR_pread __NR_pread64
-+#endif
-+#if !defined __NR_pwrite && defined __NR_pwrite64
-+# define __NR_pwrite __NR_pwrite64
-+#endif
-
- #ifdef __ASSEMBLER__
-
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch
deleted file mode 100644
index 4029bf4f2a..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-crosstest.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/dlfcn/Makefile~glibc-2.2.5-crosstest.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/dlfcn/Makefile 2004-09-03 19:00:38.000000000 -0500
-@@ -60,6 +60,8 @@
- test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
- $(test-modules): $(objpfx)%.so: $(objpfx)%.os
- $(build-module)
-+# without following rule, test-modules don't get built when cross-compiling
-+tests: $(test-modules)
-
- $(objpfx)glrefmain: $(libdl)
- $(objpfx)glrefmain.out: $(objpfx)glrefmain \
---- glibc-2.2.5/elf/Makefile~glibc-2.2.5-crosstest.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/elf/Makefile 2004-09-03 19:00:38.000000000 -0500
-@@ -263,6 +263,9 @@
- test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
- generated += $(addsuffix .so,$(strip $(modules-names)))
-
-+# without following rule, test-modules don't get built when cross-compiling
-+tests: $(test-modules)
-+
- ifeq (yes,$(build-shared))
- ifeq ($(cross-compiling),no)
- tests: $(objpfx)tst-pathopt.out
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch
deleted file mode 100644
index a27be24275..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-crossyes.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/configure~glibc-2.2.5-crossyes.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/configure 2004-09-03 19:00:38.000000000 -0500
-@@ -1738,7 +1738,7 @@
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
-- ac_cv_prog_cc_cross=no
-+ ac_cv_prog_cc_cross=yes
- else
- ac_cv_prog_cc_cross=yes
- fi
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch
deleted file mode 100644
index 9b732188ca..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-cygwin.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/Makeconfig~glibc-2.2.5-cygwin.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/Makeconfig 2004-09-03 19:00:38.000000000 -0500
-@@ -439,13 +439,13 @@
- # run the linked programs.
- link-libc = -Wl,-rpath-link=$(rpath-link) \
- $(common-objpfx)libc.so$(libc.so-version) \
-- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
-+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
- # This is how to find at build-time things that will be installed there.
- rpath-dirs = math elf dlfcn nss nis rt resolv crypt
- else
- ifneq (,$(findstring aix,$(config-os)))
- link-libc = $(common-objpfx)libc.a \
-- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
-+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib)
- rpath-dirs = math dlfcn nss nis rt resolv crypt
- endif
- endif
-@@ -649,7 +649,7 @@
- # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
- # to pass different flags for each flavor.
- libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
--all-object-suffixes := .o .os .op .og .ob .oS
-+all-object-suffixes := .o .os .op .og .ob .oST
- object-suffixes :=
- CPPFLAGS-.o = $(pic-default)
- CFLAGS-.o = $(filter %frame-pointer,$(+cflags))
-@@ -703,14 +703,14 @@
-
- ifeq (yes,$(build-shared))
- # Build special library that contains the static-only routines for libc.
--object-suffixes-for-libc += .oS
-+object-suffixes-for-libc += .oST
-
- # Must build the routines as PIC, though, because they can end up in (users')
- # shared objects. We don't want to use CFLAGS-os because users may, for
- # example, make that processor-specific.
--CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
--CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC
--libtype.oS = lib%_nonshared.a
-+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag)
-+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC
-+libtype.oST = lib%_nonshared.a
- endif
-
-
---- glibc-2.2.5/Makerules~glibc-2.2.5-cygwin.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/Makerules 2004-09-03 19:00:38.000000000 -0500
-@@ -361,7 +361,7 @@
- # Bounded pointer thunks are only built for *.ob
- elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
-
--elide-routines.oS += $(filter-out $(static-only-routines),\
-+elide-routines.oST += $(filter-out $(static-only-routines),\
- $(routines) $(aux) $(sysdep_routines)) \
- $(elide-bp-thunks)
- elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
-@@ -842,14 +842,14 @@
- # of the files are taken by the linker.
- install: $(inst_libdir)/libc.so
- $(inst_libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
-- $(inst_libdir)/$(patsubst %,$(libtype.oS),\
-+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\
- $(libprefix)$(libc-name)) \
- $(+force)
- (echo '/* GNU ld script';\
- echo ' Use the shared library, but some functions are only in';\
- echo ' the static library, so try that secondarily. */';\
- echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
-- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
-+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\
- ')' \
- ) > $@.new
- mv -f $@.new $@
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
deleted file mode 100644
index 73cfd1a832..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
+++ /dev/null
@@ -1,1108 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/powerpc/Dist~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/Dist 2004-09-03 19:00:38.000000000 -0500
-@@ -1,9 +1,6 @@
- dl-machine.c
- dl-start.S
- ppc-mcount.S
--fe_nomask.c
--fprrest.S
--fprsave.S
- gprsave1.S
- gprsave0.S
- gprrest1.S
---- glibc-2.2.5/sysdeps/powerpc/Makefile~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/Makefile 2004-09-03 19:00:38.000000000 -0500
-@@ -3,16 +3,12 @@
- +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
- asm-CPPFLAGS += -Wa,-mppc
-
--ifeq ($(subdir),math)
--libm-support += fenv_const fe_nomask
--endif
--
- ifeq ($(subdir),gmon)
- sysdep_routines += ppc-mcount
- endif
-
- ifeq ($(subdir),misc)
--sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest
-+sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
- endif
-
- # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly
---- glibc-2.2.5/sysdeps/powerpc/Versions~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/Versions 2004-09-03 19:00:38.000000000 -0500
-@@ -1,8 +1,4 @@
- libm {
-- GLIBC_2.1 {
-- # symbols used in macros from sysdeps/powerpc/bits/fenv.h
-- __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
-- }
- GLIBC_2.2 {
- # Special functions to save and restore registers used by the
- # runtime libraries.
---- glibc-2.2.5/sysdeps/powerpc/__longjmp.S~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S 2004-09-03 19:00:38.000000000 -0500
-@@ -24,6 +24,8 @@
- #include <bp-sym.h>
- #include <bp-asm.h>
-
-+/* The FPU loads have been removed from this file - see fpu/__longjmp.S */
-+
- ENTRY (BP_SYM (__longjmp))
- CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-
-@@ -31,44 +33,26 @@
- lwz r2,(JB_GPR2*4)(r3)
- lwz r0,(JB_LR*4)(r3)
- lwz r14,((JB_GPRS+0)*4)(r3)
-- lfd fp14,((JB_FPRS+0*2)*4)(r3)
- lwz r15,((JB_GPRS+1)*4)(r3)
-- lfd fp15,((JB_FPRS+1*2)*4)(r3)
- lwz r16,((JB_GPRS+2)*4)(r3)
-- lfd fp16,((JB_FPRS+2*2)*4)(r3)
- lwz r17,((JB_GPRS+3)*4)(r3)
-- lfd fp17,((JB_FPRS+3*2)*4)(r3)
- lwz r18,((JB_GPRS+4)*4)(r3)
-- lfd fp18,((JB_FPRS+4*2)*4)(r3)
- lwz r19,((JB_GPRS+5)*4)(r3)
-- lfd fp19,((JB_FPRS+5*2)*4)(r3)
- lwz r20,((JB_GPRS+6)*4)(r3)
-- lfd fp20,((JB_FPRS+6*2)*4)(r3)
- mtlr r0
- lwz r21,((JB_GPRS+7)*4)(r3)
-- lfd fp21,((JB_FPRS+7*2)*4)(r3)
- lwz r22,((JB_GPRS+8)*4)(r3)
-- lfd fp22,((JB_FPRS+8*2)*4)(r3)
- lwz r0,(JB_CR*4)(r3)
- lwz r23,((JB_GPRS+9)*4)(r3)
-- lfd fp23,((JB_FPRS+9*2)*4)(r3)
- lwz r24,((JB_GPRS+10)*4)(r3)
-- lfd fp24,((JB_FPRS+10*2)*4)(r3)
- lwz r25,((JB_GPRS+11)*4)(r3)
-- lfd fp25,((JB_FPRS+11*2)*4)(r3)
- mtcrf 0xFF,r0
- lwz r26,((JB_GPRS+12)*4)(r3)
-- lfd fp26,((JB_FPRS+12*2)*4)(r3)
- lwz r27,((JB_GPRS+13)*4)(r3)
-- lfd fp27,((JB_FPRS+13*2)*4)(r3)
- lwz r28,((JB_GPRS+14)*4)(r3)
-- lfd fp28,((JB_FPRS+14*2)*4)(r3)
- lwz r29,((JB_GPRS+15)*4)(r3)
-- lfd fp29,((JB_FPRS+15*2)*4)(r3)
- lwz r30,((JB_GPRS+16)*4)(r3)
-- lfd fp30,((JB_FPRS+16*2)*4)(r3)
- lwz r31,((JB_GPRS+17)*4)(r3)
-- lfd fp31,((JB_FPRS+17*2)*4)(r3)
- mr r3,r4
- blr
- END (BP_SYM (__longjmp))
---- glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h 2004-09-03 19:00:38.000000000 -0500
-@@ -17,6 +17,7 @@
- 02111-1307 USA. */
-
- /* Define the machine-dependent type `jmp_buf'. PowerPC version. */
-+/* For processors without floating point. */
-
- #ifndef _SETJMP_H
- # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-@@ -33,12 +34,11 @@
- # define JB_LR 2 /* The address we will return to */
- # define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
- # define JB_CR 21 /* Condition code registers. */
--# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
--# define JB_SIZE (58*4)
-+# define JB_SIZE (22*4)
- #endif
-
- #ifndef _ASM
--typedef long int __jmp_buf[58];
-+typedef long int __jmp_buf[22];
- #endif
-
- /* Test if longjmp to JMPBUF would unwind the frame
---- glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c~glibc-2.2.5-hhl-powerpc-fpu.patch
-+++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c
--/* Clear given exceptions in current floating-point environment.
-- Copyright (C) 1997,99,2000,01 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 <fenv_libc.h>
--
--#undef feclearexcept
--int
--__feclearexcept (int excepts)
--{
-- fenv_union_t u;
--
-- /* Get the current state. */
-- u.fenv = fegetenv_register ();
--
-- /* Clear the relevant bits. */
-- u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
-- | (excepts & FPSCR_STICKY_BITS));
--
-- /* Put the new state in effect. */
-- fesetenv_register (u.fenv);
--
-- /* Success. */
-- return 0;
--}
--
--#include <shlib-compat.h>
--#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
--strong_alias (__feclearexcept, __old_feclearexcept)
--compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
--#endif
--
--versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
---- glibc-2.2.5/sysdeps/powerpc/fe_nomask.c~glibc-2.2.5-hhl-powerpc-fpu.patch
-+++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c
--/* Procedure definition for FE_NOMASK_ENV.
-- Copyright (C) 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. */
--
--#include <fenv.h>
--#include <errno.h>
--
--/* This is presently a stub, until it's decided how the kernels should
-- support this. */
--
--const fenv_t *
--__fe_nomask_env(void)
--{
-- __set_errno (ENOSYS);
-- return FE_ENABLED_ENV;
--}
--stub_warning (__fe_nomask_env)
---- glibc-2.2.5/sysdeps/powerpc/fprrest.S~glibc-2.2.5-hhl-powerpc-fpu.patch
-+++ glibc-2.2.5/sysdeps/powerpc/fprrest.S
--/* Copyright (C) 2000, 2001 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. */
--
--/*
-- Floating Point Registers (FPRs) restore routine
--*/
--
--#include <sysdep.h>
--
--ENTRY(_restfpr_all)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
--C_TEXT(_restf14):
--C_TEXT(_restfpr_14): lfd fp14,-144(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
--C_TEXT(_restf15):
--C_TEXT(_restfpr_15): lfd fp15,-136(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
--C_TEXT(_restf16):
--C_TEXT(_restfpr_16): lfd fp16,-128(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
--C_TEXT(_restf17):
--C_TEXT(_restfpr_17): lfd fp17,-120(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
--C_TEXT(_restf18):
--C_TEXT(_restfpr_18): lfd fp18,-112(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
--C_TEXT(_restf19):
--C_TEXT(_restfpr_19): lfd fp19,-104(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
--C_TEXT(_restf20):
--C_TEXT(_restfpr_20): lfd fp20,-96(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
--C_TEXT(_restf21):
--C_TEXT(_restfpr_21): lfd fp21,-88(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
--C_TEXT(_restf22):
--C_TEXT(_restfpr_22): lfd fp22,-80(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
--C_TEXT(_restf23):
--C_TEXT(_restfpr_23): lfd fp23,-72(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
--C_TEXT(_restf24):
--C_TEXT(_restfpr_24): lfd fp24,-64(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
--C_TEXT(_restf25):
--C_TEXT(_restfpr_25): lfd fp25,-56(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
--C_TEXT(_restf26):
--C_TEXT(_restfpr_26): lfd fp26,-48(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
--C_TEXT(_restf27):
--C_TEXT(_restfpr_27): lfd fp27,-40(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
--C_TEXT(_restf28):
--C_TEXT(_restfpr_28): lfd fp28,-32(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
--C_TEXT(_restf29):
--C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame
-- lfd fp29,-24(r1) #restore f29
-- mtlr r0 #move return address to LR
-- lfd fp30,-16(r1) #restore f30
-- lfd fp31,-8(r1) #restore f31
-- blr #return
---- glibc-2.2.5/sysdeps/powerpc/fprsave.S~glibc-2.2.5-hhl-powerpc-fpu.patch
-+++ glibc-2.2.5/sysdeps/powerpc/fprsave.S
--/* Copyright (C) 2000, 2001 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. */
--
--/*
-- Floating Point Registers (FPRs) save routine
--*/
--
--#include <sysdep.h>
--
--ENTRY(_savefpr_all)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
--C_TEXT(_savef14):
--C_TEXT(_savefpr_14): stfd fp14,-144(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
--C_TEXT(_savef15):
--C_TEXT(_savefpr_15): stfd fp15,-136(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
--C_TEXT(_savef16):
--C_TEXT(_savefpr_16): stfd fp16,-128(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
--C_TEXT(_savef17):
--C_TEXT(_savefpr_17): stfd fp17,-120(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
--C_TEXT(_savef18):
--C_TEXT(_savefpr_18): stfd fp18,-112(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
--C_TEXT(_savef19):
--C_TEXT(_savefpr_19): stfd fp19,-104(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
--C_TEXT(_savef20):
--C_TEXT(_savefpr_20): stfd fp20,-96(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
--C_TEXT(_savef21):
--C_TEXT(_savefpr_21): stfd fp21,-88(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
--C_TEXT(_savef22):
--C_TEXT(_savefpr_22): stfd fp22,-80(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
--C_TEXT(_savef23):
--C_TEXT(_savefpr_23): stfd fp23,-72(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
--C_TEXT(_savef24):
--C_TEXT(_savefpr_24): stfd fp24,-64(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
--C_TEXT(_savef25):
--C_TEXT(_savefpr_25): stfd fp25,-56(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
--C_TEXT(_savef26):
--C_TEXT(_savefpr_26): stfd fp26,-48(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
--C_TEXT(_savef27):
--C_TEXT(_savefpr_27): stfd fp27,-40(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
--C_TEXT(_savef28):
--C_TEXT(_savefpr_28): stfd fp28,-32(r1)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
-- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
--C_TEXT(_savef29):
--C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29
-- stfd fp30,-16(r1) #save f30
-- stfd fp31,-8(r1) #save f31
-- stw r0,8(r1) #save LR in callers frame
-- blr #return
---- glibc-2.2.5/sysdeps/powerpc/fpu/Dist~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist 2004-09-03 19:00:38.000000000 -0500
-@@ -1,3 +1,6 @@
-+fe_nomask.c
-+fprrest.S
-+fprsave.S
- fenv_const.c
- fenv_libc.h
- t_sqrt.c
---- glibc-2.2.5/sysdeps/powerpc/fpu/Makefile~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile 2004-09-03 19:00:38.000000000 -0500
-@@ -1,3 +1,7 @@
- ifeq ($(subdir),math)
- libm-support += fenv_const fe_nomask t_sqrt
- endif
-+
-+ifeq ($(subdir),misc)
-+sysdep_routines += fprsave fprrest
-+endif
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,6 @@
-+libm {
-+ GLIBC_2.1 {
-+ # symbols used in macros from sysdeps/powerpc/bits/fenv.h
-+ __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
-+ }
-+}
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,74 @@
-+/* longjmp for PowerPC.
-+ Copyright (C) 1995, 1996, 1997, 1999, 2000 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 Library General Public License as
-+ published by the Free Software Foundation; either version 2 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
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with the GNU C 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 <sysdep.h>
-+#define _ASM
-+#define _SETJMP_H
-+#include <bits/setjmp.h>
-+#include <bp-sym.h>
-+#include <bp-asm.h>
-+
-+ENTRY (BP_SYM (__longjmp))
-+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-+
-+ lwz r1,(JB_GPR1*4)(r3)
-+ lwz r2,(JB_GPR2*4)(r3)
-+ lwz r0,(JB_LR*4)(r3)
-+ lwz r14,((JB_GPRS+0)*4)(r3)
-+ lfd fp14,((JB_FPRS+0*2)*4)(r3)
-+ lwz r15,((JB_GPRS+1)*4)(r3)
-+ lfd fp15,((JB_FPRS+1*2)*4)(r3)
-+ lwz r16,((JB_GPRS+2)*4)(r3)
-+ lfd fp16,((JB_FPRS+2*2)*4)(r3)
-+ lwz r17,((JB_GPRS+3)*4)(r3)
-+ lfd fp17,((JB_FPRS+3*2)*4)(r3)
-+ lwz r18,((JB_GPRS+4)*4)(r3)
-+ lfd fp18,((JB_FPRS+4*2)*4)(r3)
-+ lwz r19,((JB_GPRS+5)*4)(r3)
-+ lfd fp19,((JB_FPRS+5*2)*4)(r3)
-+ lwz r20,((JB_GPRS+6)*4)(r3)
-+ lfd fp20,((JB_FPRS+6*2)*4)(r3)
-+ mtlr r0
-+ lwz r21,((JB_GPRS+7)*4)(r3)
-+ lfd fp21,((JB_FPRS+7*2)*4)(r3)
-+ lwz r22,((JB_GPRS+8)*4)(r3)
-+ lfd fp22,((JB_FPRS+8*2)*4)(r3)
-+ lwz r0,(JB_CR*4)(r3)
-+ lwz r23,((JB_GPRS+9)*4)(r3)
-+ lfd fp23,((JB_FPRS+9*2)*4)(r3)
-+ lwz r24,((JB_GPRS+10)*4)(r3)
-+ lfd fp24,((JB_FPRS+10*2)*4)(r3)
-+ lwz r25,((JB_GPRS+11)*4)(r3)
-+ lfd fp25,((JB_FPRS+11*2)*4)(r3)
-+ mtcrf 0xFF,r0
-+ lwz r26,((JB_GPRS+12)*4)(r3)
-+ lfd fp26,((JB_FPRS+12*2)*4)(r3)
-+ lwz r27,((JB_GPRS+13)*4)(r3)
-+ lfd fp27,((JB_FPRS+13*2)*4)(r3)
-+ lwz r28,((JB_GPRS+14)*4)(r3)
-+ lfd fp28,((JB_FPRS+14*2)*4)(r3)
-+ lwz r29,((JB_GPRS+15)*4)(r3)
-+ lfd fp29,((JB_FPRS+15*2)*4)(r3)
-+ lwz r30,((JB_GPRS+16)*4)(r3)
-+ lfd fp30,((JB_FPRS+16*2)*4)(r3)
-+ lwz r31,((JB_GPRS+17)*4)(r3)
-+ lfd fp31,((JB_FPRS+17*2)*4)(r3)
-+ mr r3,r4
-+ blr
-+END (BP_SYM (__longjmp))
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,47 @@
-+/* Copyright (C) 1997, 1998, 2000 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 Library General Public License as
-+ published by the Free Software Foundation; either version 2 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
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with the GNU C 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. */
-+
-+/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
-+
-+#ifndef _SETJMP_H
-+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-+#endif
-+
-+/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
-+ We use an array of 'long int' instead, to make writing the
-+ assembler easier. Naturally, user code should not depend on
-+ either representation. */
-+
-+#if defined __USE_MISC || defined _ASM
-+# define JB_GPR1 0 /* Also known as the stack pointer */
-+# define JB_GPR2 1
-+# define JB_LR 2 /* The address we will return to */
-+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
-+# define JB_CR 21 /* Condition code registers. */
-+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
-+# define JB_SIZE (58*4)
-+#endif
-+
-+#ifndef _ASM
-+typedef long int __jmp_buf[58];
-+#endif
-+
-+/* Test if longjmp to JMPBUF would unwind the frame
-+ containing a local variable at ADDRESS. */
-+#define _JMPBUF_UNWINDS(jmpbuf, address) \
-+ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,48 @@
-+/* Clear given exceptions in current floating-point environment.
-+ Copyright (C) 1997,99,2000,01 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 <fenv_libc.h>
-+
-+#undef feclearexcept
-+int
-+__feclearexcept (int excepts)
-+{
-+ fenv_union_t u;
-+
-+ /* Get the current state. */
-+ u.fenv = fegetenv_register ();
-+
-+ /* Clear the relevant bits. */
-+ u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
-+ | (excepts & FPSCR_STICKY_BITS));
-+
-+ /* Put the new state in effect. */
-+ fesetenv_register (u.fenv);
-+
-+ /* Success. */
-+ return 0;
-+}
-+
-+#include <shlib-compat.h>
-+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-+strong_alias (__feclearexcept, __old_feclearexcept)
-+compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-+#endif
-+
-+versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,32 @@
-+/* Procedure definition for FE_NOMASK_ENV.
-+ Copyright (C) 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. */
-+
-+#include <fenv.h>
-+#include <errno.h>
-+
-+/* This is presently a stub, until it's decided how the kernels should
-+ support this. */
-+
-+const fenv_t *
-+__fe_nomask_env(void)
-+{
-+ __set_errno (ENOSYS);
-+ return FE_ENABLED_ENV;
-+}
-+stub_warning (__fe_nomask_env)
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,94 @@
-+/* Copyright (C) 2000, 2001 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. */
-+
-+/*
-+ Floating Point Registers (FPRs) restore routine
-+*/
-+
-+#include <sysdep.h>
-+
-+ENTRY(_restfpr_all)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14)
-+C_TEXT(_restf14):
-+C_TEXT(_restfpr_14): lfd fp14,-144(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15)
-+C_TEXT(_restf15):
-+C_TEXT(_restfpr_15): lfd fp15,-136(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16)
-+C_TEXT(_restf16):
-+C_TEXT(_restfpr_16): lfd fp16,-128(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17)
-+C_TEXT(_restf17):
-+C_TEXT(_restfpr_17): lfd fp17,-120(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18)
-+C_TEXT(_restf18):
-+C_TEXT(_restfpr_18): lfd fp18,-112(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19)
-+C_TEXT(_restf19):
-+C_TEXT(_restfpr_19): lfd fp19,-104(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20)
-+C_TEXT(_restf20):
-+C_TEXT(_restfpr_20): lfd fp20,-96(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21)
-+C_TEXT(_restf21):
-+C_TEXT(_restfpr_21): lfd fp21,-88(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22)
-+C_TEXT(_restf22):
-+C_TEXT(_restfpr_22): lfd fp22,-80(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23)
-+C_TEXT(_restf23):
-+C_TEXT(_restfpr_23): lfd fp23,-72(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24)
-+C_TEXT(_restf24):
-+C_TEXT(_restfpr_24): lfd fp24,-64(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25)
-+C_TEXT(_restf25):
-+C_TEXT(_restfpr_25): lfd fp25,-56(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26)
-+C_TEXT(_restf26):
-+C_TEXT(_restfpr_26): lfd fp26,-48(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27)
-+C_TEXT(_restf27):
-+C_TEXT(_restfpr_27): lfd fp27,-40(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28)
-+C_TEXT(_restf28):
-+C_TEXT(_restfpr_28): lfd fp28,-32(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29)
-+C_TEXT(_restf29):
-+C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame
-+ lfd fp29,-24(r1) #restore f29
-+ mtlr r0 #move return address to LR
-+ lfd fp30,-16(r1) #restore f30
-+ lfd fp31,-8(r1) #restore f31
-+ blr #return
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,93 @@
-+/* Copyright (C) 2000, 2001 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. */
-+
-+/*
-+ Floating Point Registers (FPRs) save routine
-+*/
-+
-+#include <sysdep.h>
-+
-+ENTRY(_savefpr_all)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
-+C_TEXT(_savef14):
-+C_TEXT(_savefpr_14): stfd fp14,-144(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
-+C_TEXT(_savef15):
-+C_TEXT(_savefpr_15): stfd fp15,-136(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
-+C_TEXT(_savef16):
-+C_TEXT(_savefpr_16): stfd fp16,-128(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
-+C_TEXT(_savef17):
-+C_TEXT(_savefpr_17): stfd fp17,-120(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
-+C_TEXT(_savef18):
-+C_TEXT(_savefpr_18): stfd fp18,-112(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
-+C_TEXT(_savef19):
-+C_TEXT(_savefpr_19): stfd fp19,-104(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
-+C_TEXT(_savef20):
-+C_TEXT(_savefpr_20): stfd fp20,-96(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
-+C_TEXT(_savef21):
-+C_TEXT(_savefpr_21): stfd fp21,-88(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
-+C_TEXT(_savef22):
-+C_TEXT(_savefpr_22): stfd fp22,-80(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
-+C_TEXT(_savef23):
-+C_TEXT(_savefpr_23): stfd fp23,-72(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
-+C_TEXT(_savef24):
-+C_TEXT(_savefpr_24): stfd fp24,-64(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
-+C_TEXT(_savef25):
-+C_TEXT(_savefpr_25): stfd fp25,-56(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
-+C_TEXT(_savef26):
-+C_TEXT(_savefpr_26): stfd fp26,-48(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
-+C_TEXT(_savef27):
-+C_TEXT(_savefpr_27): stfd fp27,-40(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
-+C_TEXT(_savef28):
-+C_TEXT(_savefpr_28): stfd fp28,-32(r1)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
-+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
-+C_TEXT(_savef29):
-+C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29
-+ stfd fp30,-16(r1) #save f30
-+ stfd fp31,-8(r1) #save f31
-+ stw r0,8(r1) #save LR in callers frame
-+ blr #return
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,67 @@
-+/* FPU control word definitions. PowerPC version.
-+ Copyright (C) 1996, 1997, 1998 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 _FPU_CONTROL_H
-+#define _FPU_CONTROL_H
-+
-+/* rounding control */
-+#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
-+#define _FPU_RC_DOWN 0x03
-+#define _FPU_RC_UP 0x02
-+#define _FPU_RC_ZERO 0x01
-+
-+#define _FPU_MASK_NI 0x04 /* non-ieee mode */
-+
-+/* masking of interrupts */
-+#define _FPU_MASK_ZM 0x10 /* zero divide */
-+#define _FPU_MASK_OM 0x40 /* overflow */
-+#define _FPU_MASK_UM 0x20 /* underflow */
-+#define _FPU_MASK_XM 0x08 /* inexact */
-+#define _FPU_MASK_IM 0x80 /* invalid operation */
-+
-+#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
-+
-+/* The fdlibm code requires no interrupts for exceptions. */
-+#define _FPU_DEFAULT 0x00000000 /* Default value. */
-+
-+/* IEEE: same as above, but (some) exceptions;
-+ we leave the 'inexact' exception off.
-+ */
-+#define _FPU_IEEE 0x000000f0
-+
-+/* Type of the control word. */
-+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
-+
-+/* Macros for accessing the hardware control word. */
-+#define _FPU_GETCW(cw) ( { \
-+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
-+ __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
-+ (cw)=tmp.cw[1]; \
-+ tmp.cw[1]; } )
-+#define _FPU_SETCW(cw) { \
-+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
-+ tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
-+ tmp.cw[1] = cw; \
-+ __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
-+}
-+
-+/* Default control word set at startup. */
-+extern fpu_control_t __fpu_control;
-+
-+#endif /* _FPU_CONTROL_H */
---- /dev/null 2004-06-02 16:28:12.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S 2004-09-03 19:00:38.000000000 -0500
-@@ -0,0 +1,73 @@
-+/* setjmp for PowerPC.
-+ Copyright (C) 1995, 1996, 1997, 1999, 2000 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 Library General Public License as
-+ published by the Free Software Foundation; either version 2 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
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public
-+ License along with the GNU C 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 <sysdep.h>
-+#define _ASM
-+#define _SETJMP_H
-+#include <bits/setjmp.h>
-+#include <bp-sym.h>
-+#include <bp-asm.h>
-+
-+ENTRY (BP_SYM (__sigsetjmp))
-+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-+
-+ stw r1,(JB_GPR1*4)(3)
-+ mflr r0
-+ stw r2,(JB_GPR2*4)(3)
-+ stw r14,((JB_GPRS+0)*4)(3)
-+ stfd fp14,((JB_FPRS+0*2)*4)(3)
-+ stw r0,(JB_LR*4)(3)
-+ stw r15,((JB_GPRS+1)*4)(3)
-+ stfd fp15,((JB_FPRS+1*2)*4)(3)
-+ mfcr r0
-+ stw r16,((JB_GPRS+2)*4)(3)
-+ stfd fp16,((JB_FPRS+2*2)*4)(3)
-+ stw r0,(JB_CR*4)(3)
-+ stw r17,((JB_GPRS+3)*4)(3)
-+ stfd fp17,((JB_FPRS+3*2)*4)(3)
-+ stw r18,((JB_GPRS+4)*4)(3)
-+ stfd fp18,((JB_FPRS+4*2)*4)(3)
-+ stw r19,((JB_GPRS+5)*4)(3)
-+ stfd fp19,((JB_FPRS+5*2)*4)(3)
-+ stw r20,((JB_GPRS+6)*4)(3)
-+ stfd fp20,((JB_FPRS+6*2)*4)(3)
-+ stw r21,((JB_GPRS+7)*4)(3)
-+ stfd fp21,((JB_FPRS+7*2)*4)(3)
-+ stw r22,((JB_GPRS+8)*4)(3)
-+ stfd fp22,((JB_FPRS+8*2)*4)(3)
-+ stw r23,((JB_GPRS+9)*4)(3)
-+ stfd fp23,((JB_FPRS+9*2)*4)(3)
-+ stw r24,((JB_GPRS+10)*4)(3)
-+ stfd fp24,((JB_FPRS+10*2)*4)(3)
-+ stw r25,((JB_GPRS+11)*4)(3)
-+ stfd fp25,((JB_FPRS+11*2)*4)(3)
-+ stw r26,((JB_GPRS+12)*4)(3)
-+ stfd fp26,((JB_FPRS+12*2)*4)(3)
-+ stw r27,((JB_GPRS+13)*4)(3)
-+ stfd fp27,((JB_FPRS+13*2)*4)(3)
-+ stw r28,((JB_GPRS+14)*4)(3)
-+ stfd fp28,((JB_FPRS+14*2)*4)(3)
-+ stw r29,((JB_GPRS+15)*4)(3)
-+ stfd fp29,((JB_FPRS+15*2)*4)(3)
-+ stw r30,((JB_GPRS+16)*4)(3)
-+ stfd fp30,((JB_FPRS+16*2)*4)(3)
-+ stw r31,((JB_GPRS+17)*4)(3)
-+ stfd fp31,((JB_FPRS+17*2)*4)(3)
-+ b JUMPTARGET (BP_SYM (__sigjmp_save))
-+END (BP_SYM (__sigsetjmp))
---- glibc-2.2.5/sysdeps/powerpc/fpu_control.h~glibc-2.2.5-hhl-powerpc-fpu.patch
-+++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h
--/* FPU control word definitions. PowerPC version.
-- Copyright (C) 1996, 1997, 1998 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 _FPU_CONTROL_H
--#define _FPU_CONTROL_H
--
--/* rounding control */
--#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
--#define _FPU_RC_DOWN 0x03
--#define _FPU_RC_UP 0x02
--#define _FPU_RC_ZERO 0x01
--
--#define _FPU_MASK_NI 0x04 /* non-ieee mode */
--
--/* masking of interrupts */
--#define _FPU_MASK_ZM 0x10 /* zero divide */
--#define _FPU_MASK_OM 0x40 /* overflow */
--#define _FPU_MASK_UM 0x20 /* underflow */
--#define _FPU_MASK_XM 0x08 /* inexact */
--#define _FPU_MASK_IM 0x80 /* invalid operation */
--
--#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
--
--/* The fdlibm code requires no interrupts for exceptions. */
--#define _FPU_DEFAULT 0x00000000 /* Default value. */
--
--/* IEEE: same as above, but (some) exceptions;
-- we leave the 'inexact' exception off.
-- */
--#define _FPU_IEEE 0x000000f0
--
--/* Type of the control word. */
--typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
--
--/* Macros for accessing the hardware control word. */
--#define _FPU_GETCW(cw) ( { \
-- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
-- __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \
-- (cw)=tmp.cw[1]; \
-- tmp.cw[1]; } )
--#define _FPU_SETCW(cw) { \
-- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \
-- tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \
-- tmp.cw[1] = cw; \
-- __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \
--}
--
--/* Default control word set at startup. */
--extern fpu_control_t __fpu_control;
--
--#endif /* _FPU_CONTROL_H */
---- glibc-2.2.5/sysdeps/powerpc/setjmp.S~glibc-2.2.5-hhl-powerpc-fpu.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/setjmp.S 2004-09-03 19:00:38.000000000 -0500
-@@ -24,6 +24,8 @@
- #include <bp-sym.h>
- #include <bp-asm.h>
-
-+/* The FPU stores have been removed from this file - see fpu/setjmp.S */
-+
- ENTRY (BP_SYM (__sigsetjmp))
- CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-
-@@ -31,43 +33,25 @@
- mflr r0
- stw r2,(JB_GPR2*4)(3)
- stw r14,((JB_GPRS+0)*4)(3)
-- stfd fp14,((JB_FPRS+0*2)*4)(3)
- stw r0,(JB_LR*4)(3)
- stw r15,((JB_GPRS+1)*4)(3)
-- stfd fp15,((JB_FPRS+1*2)*4)(3)
- mfcr r0
- stw r16,((JB_GPRS+2)*4)(3)
-- stfd fp16,((JB_FPRS+2*2)*4)(3)
- stw r0,(JB_CR*4)(3)
- stw r17,((JB_GPRS+3)*4)(3)
-- stfd fp17,((JB_FPRS+3*2)*4)(3)
- stw r18,((JB_GPRS+4)*4)(3)
-- stfd fp18,((JB_FPRS+4*2)*4)(3)
- stw r19,((JB_GPRS+5)*4)(3)
-- stfd fp19,((JB_FPRS+5*2)*4)(3)
- stw r20,((JB_GPRS+6)*4)(3)
-- stfd fp20,((JB_FPRS+6*2)*4)(3)
- stw r21,((JB_GPRS+7)*4)(3)
-- stfd fp21,((JB_FPRS+7*2)*4)(3)
- stw r22,((JB_GPRS+8)*4)(3)
-- stfd fp22,((JB_FPRS+8*2)*4)(3)
- stw r23,((JB_GPRS+9)*4)(3)
-- stfd fp23,((JB_FPRS+9*2)*4)(3)
- stw r24,((JB_GPRS+10)*4)(3)
-- stfd fp24,((JB_FPRS+10*2)*4)(3)
- stw r25,((JB_GPRS+11)*4)(3)
-- stfd fp25,((JB_FPRS+11*2)*4)(3)
- stw r26,((JB_GPRS+12)*4)(3)
-- stfd fp26,((JB_FPRS+12*2)*4)(3)
- stw r27,((JB_GPRS+13)*4)(3)
-- stfd fp27,((JB_FPRS+13*2)*4)(3)
- stw r28,((JB_GPRS+14)*4)(3)
-- stfd fp28,((JB_FPRS+14*2)*4)(3)
- stw r29,((JB_GPRS+15)*4)(3)
-- stfd fp29,((JB_FPRS+15*2)*4)(3)
- stw r30,((JB_GPRS+16)*4)(3)
-- stfd fp30,((JB_FPRS+16*2)*4)(3)
- stw r31,((JB_GPRS+17)*4)(3)
-- stfd fp31,((JB_FPRS+17*2)*4)(3)
- b JUMPTARGET (BP_SYM (__sigjmp_save))
- END (BP_SYM (__sigsetjmp))
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch
deleted file mode 100644
index 9a9eb37c7d..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-build-gmon.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/mips/machine-gmon.h~glibc-2.2.5-mips-build-gmon.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/mips/machine-gmon.h 2004-09-03 19:00:38.000000000 -0500
-@@ -17,42 +17,52 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#define _MCOUNT_DECL static void __mcount
-+#define _MCOUNT_DECL(frompc,selfpc) \
-+static void __attribute_used__ __mcount (u_long frompc, u_long selfpc)
-
- /* Call __mcount with our the return PC for our caller,
- and the return PC our caller will return to. */
- #ifdef __PIC__
- #define CPLOAD ".cpload $25;"
-+#define CPRESTORE ".cprestore 44\n\t"
- #else
- #define CPLOAD
-+#define CPRESTORE
- #endif
-
- #define MCOUNT asm(\
-- ".globl _mcount;" \
-- ".align 2;" \
-- ".type _mcount,@function;" \
-- "_mcount:;" \
-- ".set noreorder;" \
-- ".set noat;" \
-+ ".globl _mcount;\n\t" \
-+ ".align 2;\n\t" \
-+ ".type _mcount,@function;\n\t" \
-+ ".ent _mcount\n\t" \
-+ "_mcount:\n\t" \
-+ ".frame $sp,44,$31\n\t" \
-+ ".set noreorder;\n\t" \
-+ ".set noat;\n\t" \
- CPLOAD \
-- "sw $4,8($29);" \
-- "sw $5,12($29);" \
-- "sw $6,16($29);" \
-- "sw $7,20($29);" \
-- "sw $1,0($29);" \
-- "sw $31,4($29);" \
-- "move $5,$31;" \
-- "move $4,$1;" \
-- "jal __mcount;" \
-- "nop;" \
-- "lw $4,8($29);" \
-- "lw $5,12($29);" \
-- "lw $6,16($29);" \
-- "lw $7,20($29);" \
-- "lw $31,4($29);" \
-- "lw $1,0($29);" \
-- "addu $29,$29,8;" \
-- "j $31;" \
-- "move $31,$1;" \
-- ".set reorder;" \
-- ".set at");
-+ "subu $29,$29,48;\n\t" \
-+ CPRESTORE \
-+ "sw $4,24($29);\n\t" \
-+ "sw $5,28($29);\n\t" \
-+ "sw $6,32($29);\n\t" \
-+ "sw $7,36($29);\n\t" \
-+ "sw $2,40($29);\n\t" \
-+ "sw $1,16($29);\n\t" \
-+ "sw $31,20($29);\n\t" \
-+ "move $5,$31;\n\t" \
-+ "move $4,$1;\n\t" \
-+ "jal __mcount;\n\t" \
-+ "nop;\n\t" \
-+ "lw $4,24($29);\n\t" \
-+ "lw $5,28($29);\n\t" \
-+ "lw $6,32($29);\n\t" \
-+ "lw $7,36($29);\n\t" \
-+ "lw $2,40($29);\n\t" \
-+ "lw $31,20($29);\n\t" \
-+ "lw $1,16($29);\n\t" \
-+ "addu $29,$29,56;\n\t" \
-+ "j $31;\n\t" \
-+ "move $31,$1;\n\t" \
-+ ".set reorder;\n\t" \
-+ ".set at\n\t" \
-+ ".end _mcount");
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch
deleted file mode 100644
index 18d64201fa..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-mips-clone-local-label.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S~glibc-2.2.5-mips-clone-local-label.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 2004-09-03 19:00:38.000000000 -0500
-@@ -63,7 +63,7 @@
- syscall
-
- bnez a3,error
-- beqz v0,__thread_start
-+ beqz v0,.Lthread_start
-
- /* Successful return from the parent */
- addiu sp,32
-@@ -85,6 +85,7 @@
- debug info. */
-
- ENTRY(__thread_start)
-+.Lthread_start:
- /* cp is already loaded. */
- .cprestore 16
- /* The stackframe has been created on entry of clone(). */
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch b/packages/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch
deleted file mode 100644
index 7a27bacea1..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.2.5-ppc405erratum77.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/powerpc/atomicity.h~glibc-2.2.5-ppc405erratum77.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/powerpc/atomicity.h 2004-09-03 19:00:38.000000000 -0500
-@@ -28,6 +28,17 @@
- # define __ATOMICITY_INLINE inline
- #endif
-
-+#ifdef __PPC405__
-+/* workaround for PPC405 erratum #77 - Mark Hatle, dank. References:
-+ http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
-+ http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
-+ http://www.kegel.com/xgcc3/ppc405erratum77.html
-+ FIXME: using dbct instead of sync would be faster */
-+#define __LIBC_PPC405_ERR77_SYNC "sync \n\t"
-+#else
-+#define __LIBC_PPC405_ERR77_SYNC
-+#endif
-+
- static __ATOMICITY_INLINE int
- __attribute__ ((unused))
- exchange_and_add (volatile uint32_t *mem, int val)
-@@ -36,6 +47,7 @@
- __asm__ ("\n\
- 0: lwarx %0,0,%2 \n\
- add%I3 %1,%0,%3 \n\
-+ " __LIBC_PPC405_ERR77_SYNC "\n\
- stwcx. %1,0,%2 \n\
- bne- 0b \n\
- " : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-@@ -50,6 +62,7 @@
- __asm__ ("\n\
- 0: lwarx %0,0,%1 \n\
- add%I2 %0,%0,%2 \n\
-+ " __LIBC_PPC405_ERR77_SYNC "\n\
- stwcx. %0,0,%1 \n\
- bne- 0b \n\
- " : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-@@ -65,6 +78,7 @@
- sub%I2c. %0,%0,%2 \n\
- cntlzw %0,%0 \n\
- bne- 1f \n\
-+ " __LIBC_PPC405_ERR77_SYNC "\n\
- stwcx. %3,0,%1 \n\
- bne- 0b \n\
- 1: \n\
-@@ -79,6 +93,7 @@
- long int result;
- __asm__ ("\n\
- 0: lwarx %0,0,%1 \n\
-+ " __LIBC_PPC405_ERR77_SYNC "\n\
- stwcx. %2,0,%1 \n\
- bne- 0b \n\
- " : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-@@ -94,6 +109,7 @@
- 0: lwarx %0,0,%1 \n\
- cmpwi %0,0 \n\
- bne- 1f \n\
-+ " __LIBC_PPC405_ERR77_SYNC "\n\
- stwcx. %2,0,%1 \n\
- bne- 0b \n\
- 1: \n\
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch b/packages/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch
deleted file mode 100644
index bda01b4267..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.3.2-allow-solaris.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-See http://sources.redhat.com/ml/crossgcc/2003-11/msg00111.html
-Might fix error
-... gcc-3.2.3-glibc-2.3.2/build-glibc/csu/version-info.h:8: too many decimal points in floating constant
-make[2]: ***
-when building on Solaris. I haven't seen this be needed yet, but what the heck,
-here it is in case someone needs it.
-
-Retrieved with http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/csu/Makefile.diff?r1=1.70&r2=1.71&cvsroot=glibc
-
-Revision 1.71, Thu Sep 25 20:29:39 2003 UTC (8 months, 2 weeks ago) by drepper
-Branch: MAIN
-CVS Tags: glibc-2_3_3
-
-($(objpfx)version-info.h): Fix sed script to handle banners.
-
-===================================================================
-RCS file: /cvs/glibc/libc/csu/Makefile,v
-retrieving revision 1.70
-retrieving revision 1.71
-diff -u -r1.70 -r1.71
---- libc/csu/Makefile 2003/06/26 07:27:39 1.70
-+++ libc/csu/Makefile 2003/09/25 20:29:39 1.71
-@@ -222,14 +222,14 @@
- if [ -z "$$os" ]; then \
- os=Linux; \
- fi; \
-- echo "\"Compiled on a $$os $$version system" \
-- "on `date +%Y-%m-%d`.\\n\"" ;; \
-+ printf '"Compiled on a %s %s system on %s.\\n"\n' \
-+ "$os" "$version" "`date +%Y-%m-%d`" ;; \
- *) ;; \
- esac; \
- files="$(all-Banner-files)"; \
- if test -n "$$files"; then \
-- echo "\"Available extensions:\\n\""; \
-+ printf '"Available extensions:\\n"\n'; \
- sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \
-- -e 's/\(^.*$$\)/\"\1\\n\"/' $$files; \
-+ -e 's/^\(.*\)$$/\"\1\\n\"/' $$files; \
- fi) > $@T
- mv -f $@T $@
diff --git a/packages/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch b/packages/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch
deleted file mode 100644
index 8bfbcb173a..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-2.3.2-initfini.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urNd glibc-2.3.2-ct25/csu/Makefile glibc-2.3.2/csu/Makefile
---- glibc-2.3.2-ct25/csu/Makefile 2004-06-25 13:47:54.000000000 +0200
-+++ glibc-2.3.2/csu/Makefile 2004-06-25 13:54:33.000000000 +0200
-@@ -99,7 +99,7 @@
- $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
- $(compile.S) -g0 $(ASFLAGS-.os) -o $@
-
--CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
-+CFLAGS-initfini.s = -O1 -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
-
- vpath initfini.c $(full_config_sysdirs)
-
diff --git a/packages/glibc/glibc-2.2.5/glibc-drow-sh.patch b/packages/glibc/glibc-2.2.5/glibc-drow-sh.patch
deleted file mode 100644
index c0e4bbd58c..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-drow-sh.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/kernel-features.h~glibc-drow-sh.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/kernel-features.h 2004-09-03 19:00:38.000000000 -0500
-@@ -134,11 +134,20 @@
-
- /* The changed st_ino field appeared in 2.4.0-test6. But we cannot
- distinguish this version from other 2.4.0 releases. Therefore play
-- save and assume it available is for 2.4.1 and up. */
--#if __LINUX_KERNEL_VERSION >= 132097
-+ save and assume it available is for 2.4.1 and up. However, SH is lame,
-+ and still does not have a 64-bit inode field. */
-+#if __LINUX_KERNEL_VERSION >= 132097 \
-+ && !defined __sh__
- # define __ASSUME_ST_INO_64_BIT 1
- #endif
-
-+/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */
-+#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__
-+# define __ASSUME_TRUNCATE64_SYSCALL 1
-+# define __ASSUME_MMAP2_SYSCALL 1
-+# define __ASSUME_STAT64_SYSCALL 1
-+#endif
-+
- /* To support locking of large files a new fcntl() syscall was introduced
- in 2.4.0-test7. We test for 2.4.1 for the earliest version we know
- the syscall is available. */
diff --git a/packages/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch b/packages/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch
deleted file mode 100644
index 4556e858d2..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-linuxthreads-2.3.2-initfini.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urNd glibc-2.3.2-ct25/linuxthreads/Makefile glibc-2.3.2/linuxthreads/Makefile
---- glibc-2.3.2-ct25/linuxthreads/Makefile 2004-06-25 13:48:03.000000000 +0200
-+++ glibc-2.3.2/linuxthreads/Makefile 2004-06-25 13:53:02.000000000 +0200
-@@ -81,7 +81,7 @@
- extra-objs += crti.o crtn.o
- omit-deps += crti crtn
-
--CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
-+CFLAGS-pt-initfini.s = -O1 -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
- endif
-
- librt-tests = ex10 ex11
diff --git a/packages/glibc/glibc-2.2.5/glibc-test-lowram.patch b/packages/glibc/glibc-2.2.5/glibc-test-lowram.patch
deleted file mode 100644
index 658d14bac6..0000000000
--- a/packages/glibc/glibc-2.2.5/glibc-test-lowram.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/malloc/tst-calloc.c~glibc-test-lowram.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/malloc/tst-calloc.c 2004-09-03 19:00:38.000000000 -0500
-@@ -24,9 +24,8 @@
- #include <stdio.h>
-
-
--/* Number of samples per size. */
--#define N 50000
--
-+/* Number of samples per size. This is also the maximum memory consumption in kilobytes. */
-+#define N 8000
-
- static void
- fixed_test (int size)
diff --git a/packages/glibc/glibc-2.2.5/initfini-alpha.patch b/packages/glibc/glibc-2.2.5/initfini-alpha.patch
deleted file mode 100644
index 94dc2aba25..0000000000
--- a/packages/glibc/glibc-2.2.5/initfini-alpha.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/alpha/elf/initfini.c~initfini-alpha.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/alpha/elf/initfini.c 2004-09-03 19:00:38.000000000 -0500
-@@ -37,62 +37,62 @@
- files, all of which may have different GP values. So we must reload
- the GP value from crti.o in crtn.o. */
-
--__asm__ ("
--
--#include \"defs.h\"
--
--/*@HEADER_ENDS*/
--
--/*@_init_PROLOG_BEGINS*/
-- .section .init, \"ax\", @progbits
-- .globl _init
-- .ent _init
--_init:
-- ldgp $29, 0($27)
-- subq $30, 16, $30
-- lda $27, __gmon_start__
-- stq $26, 0($30)
-- stq $29, 8($30)
-- .prologue 1
-- beq $27, 1f
-- jsr $26, ($27), __gmon_start__
-- ldq $29, 8($30)
--1:
-- .align 3
-- .end _init
-- .size _init, 0
--/*@_init_PROLOG_ENDS*/
--
--/*@_init_EPILOG_BEGINS*/
-- .section .init, \"ax\", @progbits
-- ldq $26, 0($30)
-- ldq $29, 8($30)
-- addq $30, 16, $30
-- ret
--/*@_init_EPILOG_ENDS*/
--
--/*@_fini_PROLOG_BEGINS*/
-- .section .fini, \"ax\", @progbits
-- .globl _fini
-- .ent _fini
--_fini:
-- ldgp $29, 0($27)
-- subq $30, 16, $30
-- stq $26, 0($30)
-- stq $29, 8($30)
-- .prologue 1
-- .align 3
-- .end _fini
-- .size _fini, 0
--/*@_fini_PROLOG_ENDS*/
--
--/*@_fini_EPILOG_BEGINS*/
-- .section .fini, \"ax\", @progbits
-- ldq $26, 0($30)
-- ldq $29, 8($30)
-- addq $30, 16, $30
-- ret
--/*@_fini_EPILOG_ENDS*/
--
--/*@TRAILER_BEGINS*/
-+__asm__ ("\n\
-+\n\
-+#include \"defs.h\"\n\
-+\n\
-+/*@HEADER_ENDS*/\n\
-+\n\
-+/*@_init_PROLOG_BEGINS*/\n\
-+ .section .init, \"ax\", @progbits\n\
-+ .globl _init\n\
-+ .ent _init\n\
-+_init:\n\
-+ ldgp $29, 0($27)\n\
-+ subq $30, 16, $30\n\
-+ lda $27, __gmon_start__\n\
-+ stq $26, 0($30)\n\
-+ stq $29, 8($30)\n\
-+ .prologue 1\n\
-+ beq $27, 1f\n\
-+ jsr $26, ($27), __gmon_start__\n\
-+ ldq $29, 8($30)\n\
-+1:\n\
-+ .align 3\n\
-+ .end _init\n\
-+ .size _init, 0\n\
-+/*@_init_PROLOG_ENDS*/\n\
-+\n\
-+/*@_init_EPILOG_BEGINS*/\n\
-+ .section .init, \"ax\", @progbits\n\
-+ ldq $26, 0($30)\n\
-+ ldq $29, 8($30)\n\
-+ addq $30, 16, $30\n\
-+ ret\n\
-+/*@_init_EPILOG_ENDS*/\n\
-+\n\
-+/*@_fini_PROLOG_BEGINS*/\n\
-+ .section .fini, \"ax\", @progbits\n\
-+ .globl _fini\n\
-+ .ent _fini\n\
-+_fini:\n\
-+ ldgp $29, 0($27)\n\
-+ subq $30, 16, $30\n\
-+ stq $26, 0($30)\n\
-+ stq $29, 8($30)\n\
-+ .prologue 1\n\
-+ .align 3\n\
-+ .end _fini\n\
-+ .size _fini, 0\n\
-+/*@_fini_PROLOG_ENDS*/\n\
-+\n\
-+/*@_fini_EPILOG_BEGINS*/\n\
-+ .section .fini, \"ax\", @progbits\n\
-+ ldq $26, 0($30)\n\
-+ ldq $29, 8($30)\n\
-+ addq $30, 16, $30\n\
-+ ret\n\
-+/*@_fini_EPILOG_ENDS*/\n\
-+\n\
-+/*@TRAILER_BEGINS*/\n\
- ");
diff --git a/packages/glibc/glibc-2.2.5/initfini-flags.patch b/packages/glibc/glibc-2.2.5/initfini-flags.patch
deleted file mode 100644
index 1c9bd2bcf2..0000000000
--- a/packages/glibc/glibc-2.2.5/initfini-flags.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- glibc-2.2.5/csu/Makefile~glibc-2.3.2-initfini
-+++ glibc-2.2.5/csu/Makefile
-@@ -92,7 +92,7 @@
- $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
- $(compile.S) -g0 $(ASFLAGS-.os) -o $@
-
--CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
-+CFLAGS-initfini.s = -O1 -g0 -fPIC -fno-inline-functions
-
- vpath initfini.c $(full_config_sysdirs)
-
diff --git a/packages/glibc/glibc-2.2.5/initfini-sh.patch b/packages/glibc/glibc-2.2.5/initfini-sh.patch
deleted file mode 100644
index 2566cd933a..0000000000
--- a/packages/glibc/glibc-2.2.5/initfini-sh.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/sh/elf/initfini.c~initfini-sh.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/sh/elf/initfini.c 2004-09-03 19:00:39.000000000 -0500
-@@ -27,122 +27,122 @@
- * crtn.s puts the corresponding function epilogues
- in the .init and .fini sections. */
-
--__asm__ ("
--
--#include \"defs.h\"
--#define SHARED
--
--/*@HEADER_ENDS*/
--
--/*@TESTS_BEGIN*/
--
--/*@TESTS_END*/
--
--/*@_init_PROLOG_BEGINS*/
-- .section .init
-- .align 5
-- .global _init
-- .type _init,@function
--_init:
-- mov.l r12,@-r15
-- mov.l r14,@-r15
-- sts.l pr,@-r15
--#ifdef SHARED
-- mova .L22,r0
-- mov.l .L22,r12
-- add r0,r12
-- mova .L23,r0
-- mov.l .L23,r1
-- add r0,r1
--#else
-- mov.l .L23,r1
--#endif
-- jsr @r1
-- mov r15,r14
-- bra 1f
-- nop
-- .align 2
--#ifdef SHARED
--.L22:
-- .long _GLOBAL_OFFSET_TABLE_
--.L23:
-- .long __gmon_start__@PLT
--#else
--.L23:
-- .long __gmon_start__
--#endif
-- .data
-- .global __fpscr_values
--__fpscr_values:
-- .long 0
-- .long 0x80000
-- .previous
--1:
-- ALIGN
-- END_INIT
--
--
--/*@_init_PROLOG_ENDS*/
--
--/*@_init_EPILOG_BEGINS*/
-- .section .init
-- mov r14,r15
-- lds.l @r15+,pr
-- mov.l @r15+,r14
-- rts
-- mov.l @r15+,r12
-- END_INIT
-- .section .text
-- .align 5
-- .weak __gmon_start__
-- .type __gmon_start__,@function
--__gmon_start__:
-- mov.l r14,@-r15
-- mov r15,r14
-- mov r14,r15
-- rts
-- mov.l @r15+,r14
--
--/*@_init_EPILOG_ENDS*/
--
--/*@_fini_PROLOG_BEGINS*/
-- .section .fini
-- .align 5
-- .global _fini
-- .type _fini,@function
--_fini:
-- mov.l r12,@-r15
-- mov.l r14,@-r15
-- sts.l pr,@-r15
--#ifdef SHARED
-- mova .L27,r0
-- mov.l .L27,r12
-- add r0,r12
--#endif
-- mov r15,r14
-- ALIGN
-- END_FINI
--#ifdef SHARED
-- bra 1f
-- nop
-- .align 2
--.L27:
-- .long _GLOBAL_OFFSET_TABLE_
--#endif
--1:
--/*@_fini_PROLOG_ENDS*/
--
--/*@_fini_EPILOG_BEGINS*/
-- .section .fini
-- mov r14,r15
-- lds.l @r15+,pr
-- mov.l @r15+,r14
-- rts
-- mov.l @r15+,r12
--
-- END_FINI
--
--/*@_fini_EPILOG_ENDS*/
--
--/*@TRAILER_BEGINS*/
-+__asm__ ("\n\
-+\n\
-+#include \"defs.h\"\n\
-+#define SHARED\n\
-+\n\
-+/*@HEADER_ENDS*/\n\
-+\n\
-+/*@TESTS_BEGIN*/\n\
-+\n\
-+/*@TESTS_END*/\n\
-+\n\
-+/*@_init_PROLOG_BEGINS*/\n\
-+ .section .init\n\
-+ .align 5\n\
-+ .global _init\n\
-+ .type _init,@function\n\
-+_init:\n\
-+ mov.l r12,@-r15\n\
-+ mov.l r14,@-r15\n\
-+ sts.l pr,@-r15\n\
-+#ifdef SHARED\n\
-+ mova .L22,r0\n\
-+ mov.l .L22,r12\n\
-+ add r0,r12\n\
-+ mova .L23,r0\n\
-+ mov.l .L23,r1\n\
-+ add r0,r1\n\
-+#else\n\
-+ mov.l .L23,r1\n\
-+#endif\n\
-+ jsr @r1\n\
-+ mov r15,r14\n\
-+ bra 1f\n\
-+ nop\n\
-+ .align 2\n\
-+#ifdef SHARED\n\
-+.L22:\n\
-+ .long _GLOBAL_OFFSET_TABLE_\n\
-+.L23:\n\
-+ .long __gmon_start__@PLT\n\
-+#else\n\
-+.L23:\n\
-+ .long __gmon_start__\n\
-+#endif\n\
-+ .data\n\
-+ .global __fpscr_values\n\
-+__fpscr_values:\n\
-+ .long 0\n\
-+ .long 0x80000\n\
-+ .previous\n\
-+1:\n\
-+ ALIGN\n\
-+ END_INIT\n\
-+\n\
-+ \n\
-+/*@_init_PROLOG_ENDS*/\n\
-+\n\
-+/*@_init_EPILOG_BEGINS*/\n\
-+ .section .init\n\
-+ mov r14,r15\n\
-+ lds.l @r15+,pr\n\
-+ mov.l @r15+,r14\n\
-+ rts \n\
-+ mov.l @r15+,r12\n\
-+ END_INIT\n\
-+ .section .text\n\
-+ .align 5\n\
-+ .weak __gmon_start__\n\
-+ .type __gmon_start__,@function\n\
-+__gmon_start__:\n\
-+ mov.l r14,@-r15\n\
-+ mov r15,r14\n\
-+ mov r14,r15\n\
-+ rts \n\
-+ mov.l @r15+,r14\n\
-+ \n\
-+/*@_init_EPILOG_ENDS*/\n\
-+\n\
-+/*@_fini_PROLOG_BEGINS*/\n\
-+ .section .fini\n\
-+ .align 5\n\
-+ .global _fini\n\
-+ .type _fini,@function\n\
-+_fini:\n\
-+ mov.l r12,@-r15\n\
-+ mov.l r14,@-r15\n\
-+ sts.l pr,@-r15\n\
-+#ifdef SHARED\n\
-+ mova .L27,r0\n\
-+ mov.l .L27,r12\n\
-+ add r0,r12\n\
-+#endif\n\
-+ mov r15,r14\n\
-+ ALIGN\n\
-+ END_FINI\n\
-+#ifdef SHARED\n\
-+ bra 1f\n\
-+ nop\n\
-+ .align 2\n\
-+.L27:\n\
-+ .long _GLOBAL_OFFSET_TABLE_\n\
-+#endif\n\
-+1:\n\
-+/*@_fini_PROLOG_ENDS*/\n\
-+\n\
-+/*@_fini_EPILOG_BEGINS*/\n\
-+ .section .fini\n\
-+ mov r14,r15\n\
-+ lds.l @r15+,pr\n\
-+ mov.l @r15+,r14\n\
-+ rts \n\
-+ mov.l @r15+,r12\n\
-+\n\
-+ END_FINI\n\
-+ \n\
-+/*@_fini_EPILOG_ENDS*/\n\
-+\n\
-+/*@TRAILER_BEGINS*/\n\
- ");
diff --git a/packages/glibc/glibc-2.2.5/ldd.patch b/packages/glibc/glibc-2.2.5/ldd.patch
deleted file mode 100644
index 01719dbe08..0000000000
--- a/packages/glibc/glibc-2.2.5/ldd.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- elf/ldd.bash.in~ Tue Apr 3 21:43:31 2001
-+++ elf/ldd.bash.in Tue Apr 3 21:54:15 2001
-@@ -32,6 +32,7 @@
- warn=
- bind_now=
- verbose=
-+filename_magic_regex="((^|/)lib|.so$)"
-
- while test $# -gt 0; do
- case "$1" in
-@@ -123,8 +124,11 @@
- echo "ldd: ${file}:" $"No such file or directory" >&2
- result=1
- elif test -r "$file"; then
-- test -x "$file" || echo 'ldd:' $"\
--warning: you do not have execution permission for" "\`$file'" >&2
-+ if test ! -x "$file" && eval echo "$file" \
-+ | egrep -v "$filename_magic_regex" > /dev/null; then
-+ echo 'ldd:' $"warning: you do not have execution permission for"\
-+ "\`$file'" >&2
-+ fi
- RTLD=
- for rtld in ${RTLDLIST}; do
- if test -x $rtld; then
-@@ -143,7 +147,12 @@
- fi
- case $ret in
- 0)
-- eval $add_env '"$file"' || result=1
-+ if [ ! -x "$file" ] && eval file -L "$file" 2>/dev/null \
-+ | sed 10q | egrep "$file_magic_regex" > /dev/null; then
-+ eval $add_env ${RTLD} '"$file"' || result=1
-+ else
-+ eval $add_env '"$file"' || result=1
-+ fi
- ;;
- 1)
- # This can be a non-ELF binary or no binary at all.
diff --git a/packages/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch b/packages/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch
deleted file mode 100644
index 48127a1281..0000000000
--- a/packages/glibc/glibc-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-# see http://bugs.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4155
-# and http://www.kegel.com/xgcc3/ppc405erratum77.html
-# See also matching patch for glibc
-
-diff -aur glibc-2.2.5.orig/linuxthreads/sysdeps/powerpc/pt-machine.h glibc-2.2.5/linuxthreads/sysdeps/powerpc/pt-machine.h
---- glibc-2.2.5.orig/linuxthreads/sysdeps/powerpc/pt-machine.h Thu May 17 12:47:46 2001
-+++ glibc-2.2.5/linuxthreads/sysdeps/powerpc/pt-machine.h Tue Jul 23 05:38:24 2002
-@@ -41,6 +41,17 @@
- #define HAS_COMPARE_AND_SWAP_WITH_RELEASE_SEMANTICS
- #define IMPLEMENT_TAS_WITH_CAS
-
-+#ifdef __PPC405__
-+/* workaround for PPC405 erratum #77 - Mark Hatle, dank. References:
-+ http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
-+ http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
-+ http://www.kegel.com/xgcc3/ppc405erratum77.html
-+ FIXME: using dbct instead of sync would be faster */
-+#define __LINUXTHREADS_PPC405_ERR77_SYNC "sync \n\t"
-+#else
-+#define __LINUXTHREADS_PPC405_ERR77_SYNC
-+#endif
-+
- PT_EI int
- __compare_and_swap (long int *p, long int oldval, long int newval)
- {
-@@ -50,6 +61,7 @@
- "0: lwarx %0,0,%1 ;"
- " xor. %0,%3,%0;"
- " bne 1f;"
-+ __LINUXTHREADS_PPC405_ERR77_SYNC
- " stwcx. %2,0,%1;"
- " bne- 0b;"
- "1: "
-
diff --git a/packages/glibc/glibc-2.2.5/longjmp-sparc.patch b/packages/glibc/glibc-2.2.5/longjmp-sparc.patch
deleted file mode 100644
index 8bce091779..0000000000
--- a/packages/glibc/glibc-2.2.5/longjmp-sparc.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h~longjmp-sparc.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2004-09-03 19:00:39.000000000 -0500
-@@ -48,7 +48,7 @@
- #define END(name) \
- .size name, . - name
-
--#define LOC(name) . ## L ## name
-+#define LOC(name) .##L##name
-
- #ifdef PIC
- #define SYSCALL_ERROR_HANDLER \
diff --git a/packages/glibc/glibc-2.2.5/pt-initfini-alpha.patch b/packages/glibc/glibc-2.2.5/pt-initfini-alpha.patch
deleted file mode 100644
index 22a1cfed17..0000000000
--- a/packages/glibc/glibc-2.2.5/pt-initfini-alpha.patch
+++ /dev/null
@@ -1,119 +0,0 @@
---- glibc-2.2.5/linuxthreads/sysdeps/alpha/elf/pt-initfini.c.old Fri Jun 6 22:02:08 2003
-+++ glibc-2.2.5/linuxthreads/sysdeps/alpha/elf/pt-initfini.c Fri Jun 6 22:02:33 2003
-@@ -37,60 +37,60 @@
- files, all of which may have different GP values. So we must reload
- the GP value from crti.o in crtn.o. */
-
--__asm__ ("
--
--#include \"defs.h\"
--
--/*@HEADER_ENDS*/
--
--/*@_init_PROLOG_BEGINS*/
-- .section .init, \"ax\", @progbits
-- .globl _init
-- .ent _init
--_init:
-- ldgp $29, 0($27)
-- subq $30, 16, $30
-- lda $27, __pthread_initialize_minimal
-- stq $26, 0($30)
-- stq $29, 8($30)
-- .prologue 1
-- jsr $26, ($27), __pthread_initialize_minimal
-- ldq $29, 8($30)
-- .align 3
-- .end _init
-- .size _init, 0
--/*@_init_PROLOG_ENDS*/
--
--/*@_init_EPILOG_BEGINS*/
-- .section .init, \"ax\", @progbits
-- ldq $26, 0($30)
-- ldq $29, 8($30)
-- addq $30, 16, $30
-- ret
--/*@_init_EPILOG_ENDS*/
--
--/*@_fini_PROLOG_BEGINS*/
-- .section .fini, \"ax\", @progbits
-- .globl _fini
-- .ent _fini
--_fini:
-- ldgp $29, 0($27)
-- subq $30, 16, $30
-- stq $26, 0($30)
-- stq $29, 8($30)
-- .prologue 1
-- .align 3
-- .end _fini
-- .size _fini, 0
--/*@_fini_PROLOG_ENDS*/
--
--/*@_fini_EPILOG_BEGINS*/
-- .section .fini, \"ax\", @progbits
-- ldq $26, 0($30)
-- ldq $29, 8($30)
-- addq $30, 16, $30
-- ret
--/*@_fini_EPILOG_ENDS*/
--
--/*@TRAILER_BEGINS*/
-+__asm__ ("\n\
-+\n\
-+#include \"defs.h\"\n\
-+\n\
-+/*@HEADER_ENDS*/\n\
-+\n\
-+/*@_init_PROLOG_BEGINS*/\n\
-+ .section .init, \"ax\", @progbits\n\
-+ .globl _init\n\
-+ .ent _init\n\
-+_init:\n\
-+ ldgp $29, 0($27)\n\
-+ subq $30, 16, $30\n\
-+ lda $27, __pthread_initialize_minimal\n\
-+ stq $26, 0($30)\n\
-+ stq $29, 8($30)\n\
-+ .prologue 1\n\
-+ jsr $26, ($27), __pthread_initialize_minimal\n\
-+ ldq $29, 8($30)\n\
-+ .align 3\n\
-+ .end _init\n\
-+ .size _init, 0\n\
-+/*@_init_PROLOG_ENDS*/\n\
-+\n\
-+/*@_init_EPILOG_BEGINS*/\n\
-+ .section .init, \"ax\", @progbits\n\
-+ ldq $26, 0($30)\n\
-+ ldq $29, 8($30)\n\
-+ addq $30, 16, $30\n\
-+ ret\n\
-+/*@_init_EPILOG_ENDS*/\n\
-+\n\
-+/*@_fini_PROLOG_BEGINS*/\n\
-+ .section .fini, \"ax\", @progbits\n\
-+ .globl _fini\n\
-+ .ent _fini\n\
-+_fini:\n\
-+ ldgp $29, 0($27)\n\
-+ subq $30, 16, $30\n\
-+ stq $26, 0($30)\n\
-+ stq $29, 8($30)\n\
-+ .prologue 1\n\
-+ .align 3\n\
-+ .end _fini\n\
-+ .size _fini, 0\n\
-+/*@_fini_PROLOG_ENDS*/\n\
-+\n\
-+/*@_fini_EPILOG_BEGINS*/\n\
-+ .section .fini, \"ax\", @progbits\n\
-+ ldq $26, 0($30)\n\
-+ ldq $29, 8($30)\n\
-+ addq $30, 16, $30\n\
-+ ret\n\
-+/*@_fini_EPILOG_ENDS*/\n\
-+\n\
-+/*@TRAILER_BEGINS*/\n\
- ");
diff --git a/packages/glibc/glibc-2.2.5/pt-initfini-flags.patch b/packages/glibc/glibc-2.2.5/pt-initfini-flags.patch
deleted file mode 100644
index e8ba2facfc..0000000000
--- a/packages/glibc/glibc-2.2.5/pt-initfini-flags.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- glibc-2.2.5/linuxthreads/Makefile~glibc-linuxthreads-2.3.2-initfini
-+++ glibc-2.2.5/linuxthreads/Makefile
-@@ -54,7 +54,7 @@
- extra-objs += crti.o
- omit-deps += crti
-
--CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
-+CFLAGS-pt-initfini.s = -O1 -g0 -fPIC -fno-inline-functions
- endif
-
- librt-tests = ex10 ex11
diff --git a/packages/glibc/glibc-2.2.5/pt-initfini-sh.patch b/packages/glibc/glibc-2.2.5/pt-initfini-sh.patch
deleted file mode 100644
index 8c9cdb8ada..0000000000
--- a/packages/glibc/glibc-2.2.5/pt-initfini-sh.patch
+++ /dev/null
@@ -1,267 +0,0 @@
---- glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c.old Wed May 28 09:29:55 2003
-+++ glibc-2.2.5/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c Wed May 28 09:30:11 2003
-@@ -36,134 +36,134 @@
- * crtn.s puts the corresponding function epilogues
- in the .init and .fini sections. */
-
--__asm__ ("
--
--#include \"defs.h\"
--#define SHARED
--
--/*@HEADER_ENDS*/
--
--/*@TESTS_BEGIN*/
--
--/*@TESTS_END*/
--
--/*@_init_PROLOG_BEGINS*/
-- .section .init
-- .align 5
-- .global _init
-- .type _init,@function
--_init:
-- mov.l r12,@-r15
-- mov.l r14,@-r15
-- sts.l pr,@-r15
--#ifdef SHARED
-- mova .L22,r0
-- mov.l .L22,r12
-- add r0,r12
-- mova .L24,r0
-- mov.l .L24,r1
-- add r0,r1
-- jsr @r1
-- nop
-- mova .L23,r0
-- mov.l .L23,r1
-- add r0,r1
--#else
-- mov.l .L24,r1
-- jsr @r1
-- nop
-- mov.l .L23,r1
--#endif
-- jsr @r1
-- mov r15,r14
-- bra 1f
-- nop
-- .align 2
--#ifdef SHARED
--.L22:
-- .long _GLOBAL_OFFSET_TABLE_
--.L23:
-- .long __gmon_start__@PLT
--.L24:
-- .long __pthread_initialize_minimal@PLT
--#else
--.L23:
-- .long __gmon_start__
--.L24:
-- .long __pthread_initialize_minimal
--#endif
-- .data
-- .global __fpscr_values
--__fpscr_values:
-- .long 0
-- .long 0x80000
-- .previous
--1:
-- ALIGN
-- END_INIT
--
--
--/*@_init_PROLOG_ENDS*/
--
--/*@_init_EPILOG_BEGINS*/
-- .section .init
-- mov r14,r15
-- lds.l @r15+,pr
-- mov.l @r15+,r14
-- rts
-- mov.l @r15+,r12
-- END_INIT
-- .section .text
-- .align 5
-- .weak __gmon_start__
-- .type __gmon_start__,@function
--__gmon_start__:
-- mov.l r14,@-r15
-- mov r15,r14
-- mov r14,r15
-- rts
-- mov.l @r15+,r14
--
--/*@_init_EPILOG_ENDS*/
--
--/*@_fini_PROLOG_BEGINS*/
-- .section .fini
-- .align 5
-- .global _fini
-- .type _fini,@function
--_fini:
-- mov.l r12,@-r15
-- mov.l r14,@-r15
-- sts.l pr,@-r15
--#ifdef SHARED
-- mova .L27,r0
-- mov.l .L27,r12
-- add r0,r12
--#endif
-- mov r15,r14
-- ALIGN
-- END_FINI
--#ifdef SHARED
-- bra 1f
-- nop
-- .align 2
--.L27:
-- .long _GLOBAL_OFFSET_TABLE_
--#endif
--1:
--/*@_fini_PROLOG_ENDS*/
--
--/*@_fini_EPILOG_BEGINS*/
-- .section .fini
-- mov r14,r15
-- lds.l @r15+,pr
-- mov.l @r15+,r14
-- rts
-- mov.l @r15+,r12
--
-- END_FINI
--
--/*@_fini_EPILOG_ENDS*/
--
--/*@TRAILER_BEGINS*/
-+__asm__ ("\n\
-+\n\
-+#include \"defs.h\"\n\
-+#define SHARED\n\
-+\n\
-+/*@HEADER_ENDS*/\n\
-+\n\
-+/*@TESTS_BEGIN*/\n\
-+\n\
-+/*@TESTS_END*/\n\
-+\n\
-+/*@_init_PROLOG_BEGINS*/\n\
-+ .section .init\n\
-+ .align 5\n\
-+ .global _init\n\
-+ .type _init,@function\n\
-+_init:\n\
-+ mov.l r12,@-r15\n\
-+ mov.l r14,@-r15\n\
-+ sts.l pr,@-r15\n\
-+#ifdef SHARED\n\
-+ mova .L22,r0\n\
-+ mov.l .L22,r12\n\
-+ add r0,r12\n\
-+ mova .L24,r0\n\
-+ mov.l .L24,r1\n\
-+ add r0,r1\n\
-+ jsr @r1\n\
-+ nop\n\
-+ mova .L23,r0\n\
-+ mov.l .L23,r1\n\
-+ add r0,r1\n\
-+#else\n\
-+ mov.l .L24,r1\n\
-+ jsr @r1\n\
-+ nop\n\
-+ mov.l .L23,r1\n\
-+#endif\n\
-+ jsr @r1\n\
-+ mov r15,r14\n\
-+ bra 1f\n\
-+ nop\n\
-+ .align 2\n\
-+#ifdef SHARED\n\
-+.L22:\n\
-+ .long _GLOBAL_OFFSET_TABLE_\n\
-+.L23:\n\
-+ .long __gmon_start__@PLT\n\
-+.L24:\n\
-+ .long __pthread_initialize_minimal@PLT\n\
-+#else\n\
-+.L23:\n\
-+ .long __gmon_start__\n\
-+.L24:\n\
-+ .long __pthread_initialize_minimal\n\
-+#endif\n\
-+ .data\n\
-+ .global __fpscr_values\n\
-+__fpscr_values:\n\
-+ .long 0\n\
-+ .long 0x80000\n\
-+ .previous\n\
-+1:\n\
-+ ALIGN\n\
-+ END_INIT\n\
-+\n\
-+ \n\
-+/*@_init_PROLOG_ENDS*/\n\
-+\n\
-+/*@_init_EPILOG_BEGINS*/\n\
-+ .section .init\n\
-+ mov r14,r15\n\
-+ lds.l @r15+,pr\n\
-+ mov.l @r15+,r14\n\
-+ rts \n\
-+ mov.l @r15+,r12\n\
-+ END_INIT\n\
-+ .section .text\n\
-+ .align 5\n\
-+ .weak __gmon_start__\n\
-+ .type __gmon_start__,@function\n\
-+__gmon_start__:\n\
-+ mov.l r14,@-r15\n\
-+ mov r15,r14\n\
-+ mov r14,r15\n\
-+ rts \n\
-+ mov.l @r15+,r14\n\
-+ \n\
-+/*@_init_EPILOG_ENDS*/\n\
-+\n\
-+/*@_fini_PROLOG_BEGINS*/\n\
-+ .section .fini\n\
-+ .align 5\n\
-+ .global _fini\n\
-+ .type _fini,@function\n\
-+_fini:\n\
-+ mov.l r12,@-r15\n\
-+ mov.l r14,@-r15\n\
-+ sts.l pr,@-r15\n\
-+#ifdef SHARED\n\
-+ mova .L27,r0\n\
-+ mov.l .L27,r12\n\
-+ add r0,r12\n\
-+#endif\n\
-+ mov r15,r14\n\
-+ ALIGN\n\
-+ END_FINI\n\
-+#ifdef SHARED\n\
-+ bra 1f\n\
-+ nop\n\
-+ .align 2\n\
-+.L27:\n\
-+ .long _GLOBAL_OFFSET_TABLE_\n\
-+#endif\n\
-+1:\n\
-+/*@_fini_PROLOG_ENDS*/\n\
-+\n\
-+/*@_fini_EPILOG_BEGINS*/\n\
-+ .section .fini\n\
-+ mov r14,r15\n\
-+ lds.l @r15+,pr\n\
-+ mov.l @r15+,r14\n\
-+ rts \n\
-+ mov.l @r15+,r12\n\
-+\n\
-+ END_FINI\n\
-+ \n\
-+/*@_fini_EPILOG_ENDS*/\n\
-+\n\
-+/*@TRAILER_BEGINS*/\n\
- ");
diff --git a/packages/glibc/glibc-2.2.5/sh-setjmp-fix.patch b/packages/glibc/glibc-2.2.5/sh-setjmp-fix.patch
deleted file mode 100644
index fa2f51aab6..0000000000
--- a/packages/glibc/glibc-2.2.5/sh-setjmp-fix.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/sh/bits/setjmp.h~sh-setjmp-fix.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/sh/bits/setjmp.h 2004-09-03 19:00:39.000000000 -0500
-@@ -42,7 +42,9 @@
- } __jmp_buf[1];
- #endif
-
-+#if defined __USE_MISC || defined _ASM
- #define JB_SIZE (4 * 15)
-+#endif
-
- /* Test if longjmp to JMPBUF would unwind the frame
- containing a local variable at ADDRESS. */
diff --git a/packages/glibc/glibc-2.2.5/sprintf-prototype.patch b/packages/glibc/glibc-2.2.5/sprintf-prototype.patch
deleted file mode 100644
index 47dc672a38..0000000000
--- a/packages/glibc/glibc-2.2.5/sprintf-prototype.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/stdio-common/sprintf.c~sprintf-prototype.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/stdio-common/sprintf.c 2004-09-03 19:00:39.000000000 -0500
-@@ -27,9 +27,7 @@
- /* Write formatted output into S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--sprintf (s, format)
-- char *s;
-- const char *format;
-+sprintf (char *s, const char *format, ...)
- {
- va_list arg;
- int done;
diff --git a/packages/glibc/glibc-2.2.5/sscanf.patch b/packages/glibc/glibc-2.2.5/sscanf.patch
deleted file mode 100644
index 2958b1f8e0..0000000000
--- a/packages/glibc/glibc-2.2.5/sscanf.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/stdio-common/sscanf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/stdio-common/sscanf.c 2004-09-03 19:00:39.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,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
-@@ -27,9 +27,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--sscanf (s, format)
-- const char *s;
-- const char *format;
-+sscanf (const char *s, const char *format, ...)
- {
- va_list arg;
- int done;
---- glibc-2.2.5/libio/swprintf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/libio/swprintf.c 2004-09-03 19:00:39.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1997,1998,1999,2000,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
-@@ -22,10 +23,7 @@
- /* Write formatted output into S, according to the format string FORMAT. */
- /* VARARGS3 */
- int
--swprintf (s, n, format)
-- wchar_t *s;
-- size_t n;
-- const wchar_t *format;
-+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
---- glibc-2.2.5/libio/swscanf.c~sscanf.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/libio/swscanf.c 2004-09-03 19:00:39.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,1999,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
-@@ -22,9 +22,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--swscanf (s, format)
-- const wchar_t *s;
-- const wchar_t *format;
-+swscanf (const wchar_t *s, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
diff --git a/packages/glibc/glibc-2.2.5/threadparam.patch b/packages/glibc/glibc-2.2.5/threadparam.patch
deleted file mode 100644
index dd97838c07..0000000000
--- a/packages/glibc/glibc-2.2.5/threadparam.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-2002-05-21 Ulrich Drepper <drepper@redhat.com>
-
- * sysdeps/pthread/pthread.h (pthread_create): Rename first parameter.
- (pthread_cancel): Likewise.
- * internals.h (__pthread_create_2_1): Likewise.
- * sysdeps/unix/sysv/linux/bits/sigthread.h (pthread_kill): Likewise.
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads/internals.h,v
-retrieving revision 1.69.2.2
-retrieving revision 1.69.2.3
-diff -u -r1.69.2.2 -r1.69.2.3
---- libc/linuxthreads/internals.h 2002/03/22 08:30:32 1.69.2.2
-+++ libc/linuxthreads/internals.h 2002/08/20 22:01:25 1.69.2.3
-@@ -554,7 +554,7 @@
- /* Prototypes for compatibility functions. */
- extern int __pthread_attr_init_2_1 (pthread_attr_t *__attr);
- extern int __pthread_attr_init_2_0 (pthread_attr_t *__attr);
--extern int __pthread_create_2_1 (pthread_t *__restrict __thread,
-+extern int __pthread_create_2_1 (pthread_t *__restrict __threadp,
- const pthread_attr_t *__attr,
- void *(*__start_routine) (void *),
- void *__restrict __arg);
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/pthread/pthread.h,v
-retrieving revision 1.31
-retrieving revision 1.31.2.1
-diff -u -r1.31 -r1.31.2.1
---- libc/linuxthreads/sysdeps/pthread/pthread.h 2001/03/15 21:12:31 1.31
-+++ libc/linuxthreads/sysdeps/pthread/pthread.h 2002/08/20 22:01:26 1.31.2.1
-@@ -160,7 +160,7 @@
- /* Create a thread with given attributes ATTR (or default attributes
- if ATTR is NULL), and call function START_ROUTINE with given
- arguments ARG. */
--extern int pthread_create (pthread_t *__restrict __thread,
-+extern int pthread_create (pthread_t *__restrict __threadp,
- __const pthread_attr_t *__restrict __attr,
- void *(*__start_routine) (void *),
- void *__restrict __arg) __THROW;
-@@ -588,7 +588,7 @@
- extern int pthread_setcanceltype (int __type, int *__oldtype) __THROW;
-
- /* Cancel THREAD immediately or at the next possibility. */
--extern int pthread_cancel (pthread_t __thread) __THROW;
-+extern int pthread_cancel (pthread_t __cancelthread) __THROW;
-
- /* Test for pending cancellation for the current thread and terminate
- the thread as per pthread_exit(PTHREAD_CANCELED) if it has been
-===================================================================
-RCS file: /cvs/glibc/libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h,v
-retrieving revision 1.5
-retrieving revision 1.5.2.1
-diff -u -r1.5 -r1.5.2.1
---- libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h 2000/08/21 06:48:03 1.5
-+++ libc/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h 2002/08/20 22:01:26 1.5.2.1
-@@ -1,5 +1,5 @@
- /* Signal handling function for threaded programs.
-- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -33,6 +33,6 @@
- __sigset_t *__restrict __oldmask)__THROW;
-
- /* Send signal SIGNO to the given thread. */
--extern int pthread_kill (pthread_t __thread, int __signo) __THROW;
-+extern int pthread_kill (pthread_t __threadid, int __signo) __THROW;
-
- #endif /* bits/sigthread.h */
diff --git a/packages/glibc/glibc-2.2.5/unwind-arm.patch b/packages/glibc/glibc-2.2.5/unwind-arm.patch
deleted file mode 100644
index b44f41aec0..0000000000
--- a/packages/glibc/glibc-2.2.5/unwind-arm.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- glibc-2.2.5/sysdeps/unix/sysv/linux/configure~unwind-arm.patch 2004-09-03 19:00:33.000000000 -0500
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/configure 2004-09-03 19:00:39.000000000 -0500
-@@ -56,6 +56,10 @@
- arch_minimum_kernel=2.1.100
- libc_cv_gcc_unwind_find_fde=yes
- ;;
-+ arm*)
-+ libc_cv_gcc_unwind_find_fde=yes
-+ arch_minimum_kernel=2.0.10
-+ ;;
- i386*)
- libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
diff --git a/packages/glibc/glibc-2.3.2/10_cvs.patch b/packages/glibc/glibc-2.3.2/10_cvs.patch
deleted file mode 100644
index 0c3ecdcb40..0000000000
--- a/packages/glibc/glibc-2.3.2/10_cvs.patch
+++ /dev/null
@@ -1,177118 +0,0 @@
---- glibc-2.3.2/CANCEL-FILE-WAIVE 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/CANCEL-FILE-WAIVE 2003-09-02 05:24:58.000000000 -0400
-@@ -0,0 +1,33 @@
-+mkdtemp.os
-+tmpnam.os
-+tmpnam_r.os
-+__assert.os
-+assert.os
-+assert-perr.os
-+gconv_builtin.os
-+gconv_simple.os
-+gconv.os
-+iconv.os
-+strfmon.os
-+strfmon_l.os
-+argp-xinl.os
-+iofdopen.os
-+printf_fp.os
-+printf_fphex.os
-+printf_size.os
-+strxfrm.os
-+strxfrm_l.os
-+strcoll.os
-+strcoll_l.os
-+alphasort.os
-+alphasort64.os
-+set-freeres.os
-+btowc.os
-+wctob.os
-+mblen.os
-+strops.os
-+wstrops.os
-+fmemopen.os
-+closedir.os
-+hsearch.os
-+hsearch_r.os
---- glibc-2.3.2/ChangeLog 2003-02-28 20:10:14.000000000 -0500
-+++ glibc-2.3.2/ChangeLog 2003-09-20 09:40:33.000000000 -0400
-@@ -1,3 +1,5919 @@
-+2003-09-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/Makefile ($(objpfx)librtld.os): Create link map also for
-+ final build to ease quality control.
-+
-+ * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): If compiled for
-+ ld.so, don't include NULL buffer pointer handling.
-+
-+2003-09-19 Jakub Jelinek <jakub@redhat.com>
-+
-+ * dlfcn/dlopen.c (dlopen): Add static_link_warning.
-+
-+2003-09-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/memstream.c (open_memstream): Use _IO_init instead of
-+ _IO_old_init.
-+
-+2003-09-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/wordexp.c (eval_expr_val): Use strtol since we
-+ have to recognize octal and hexadecimal numbers as well. Simplify
-+ function, signs are handled in strtol.
-+ * posix/wordexp-test.c: Add tests for octal and hexadecimal
-+ numbers in arithmetic expressions.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/Makefile (distribute): Add tst-alignmod.c.
-+ (tests): Add tst-align.
-+ (modules-names): Add tst-alignmod.
-+ (CFLAGS-tst-align.c, CFLAGS-tst-alignmod.c): Add
-+ $(stack-align-test-flags).
-+ ($(objpfx)tst-align): Depend on libdl.
-+ ($(objpfx)tst-align.out): Depend on tst-alignmod.so.
-+ * elf/tst-align.c: New file.
-+ * elf/tst-alignmod.c: New file.
-+ * misc/Makefile (CFLAGS-tst-tsearch.c): Add $(stack-align-test-flags).
-+ * misc/tst-tsearch.c: Include tst-stack-align.h.
-+ (stack_align_check): New array.
-+ (cmp_fn, walk_action): Use TEST_STACK_ALIGN ().
-+ (main): Report error if stack was not enough aligned
-+ in cmp_fn or walk_action.
-+ * stdlib/Makefile (CFLAGS-tst-qsort.c): Add $(stack-align-test-flags).
-+ * stdlib/tst-qsort.c: Include tst-stack-align.h.
-+ (align_check): New var.
-+ (compare): Use TEST_STACK_ALIGN () macro.
-+ (main): Report error if stack was not enough aligned in compare.
-+ * sysdeps/i386/i686/Makefile (stack-align-test-flags): Remove
-+ unneeded -mpreferred-stack-boundary=4.
-+ * sysdeps/x86_64/tst-stack-align.h: New file.
-+
-+ * libio/memstream.c (_IO_wmem_jumps): Remove unused structure.
-+ (_IO_wmem_sync, _IO_wmem_finish): Remove unused functions.
-+
-+2003-09-17 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/arm/dl-machine.h (CALL_ROUTINE): Deleted.
-+ (BX): Define.
-+ (ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little.
-+
-+ * sysdeps/arm/sysdep.h (DO_RET): New.
-+
-+ * sysdeps/unix/sysv/linux/arm/vfork.S: Add #error if __NR_vfork
-+ required but not defined. Improve test of error code.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/Makefile (stack-align-test-flags): Add
-+ -malign-double -mpreferred-stack-boundary=4.
-+
-+2003-09-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/posix/utimes.c (__utimes): Truncate instead of round.
-+ * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise.
-+
-+2003-09-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/Makefile (sysdep-CFLAGS): If not in math or csu
-+ subdir, add -mpreferred-stack-boundary=4, with few exceptions.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makeconfig (stack-align-test-flags): Set.
-+ * stdlib/Makefile (CFLAGS-tst-bsearch.c): Add
-+ $(stack-align-test-flags).
-+ * stdlib/tst-bsearch.c: Include tst-stack-align.h.
-+ (align_check): New var.
-+ (comp): Use TEST_STACK_ALIGN macro.
-+ (do_test): Fail if align_check != 1.
-+ * sysdeps/generic/tst-stack-align.h: New file.
-+ * sysdeps/i386/i686/Makefile (stack-align-test-flags): Add -msse.
-+ * sysdeps/i386/i686/tst-stack-align.h: New file.
-+
-+2003-09-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a
-+ stack which is aligned (mod 16).
-+
-+2003-09-17 Uwe Reimann <Uwe_Reimann@gmx.net>
-+ Hans-Peter Nilsson <hp@axis.com>
-+
-+ * sysdeps/cris/dl-machine.h (elf_machine_type_class): Classify
-+ R_CRIS_GLOB_DAT as ELF_RTYPE_CLASS_PLT. Clarify comment.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * dirent/scandir.c: Include bits/libc-lock.h.
-+ (struct scandir_cancel_struct): New type.
-+ (cancel_handler): New function.
-+ (SCANDIR): Add __libc_cleanup_{push,pop}, save state into
-+ scandir_cancel_struct.
-+
-+2003-09-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/Dist: Remove internal_statvfs.c.
-+ * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
-+ Add internal_statvfs.
-+ * sysdeps/unix/sysv/linux/fstatvfs.c: Call __internal_statvfs
-+ instead of including "internal_statvfs.c".
-+ * sysdeps/unix/sysv/linux/statvfs.c: Likewise.
-+ * sysdeps/unix/sysv/linux/internal_statvfs.c: Make it a real function.
-+ Add code to avoid the stat calls on all the reported mount points
-+ when we can determine mismatch in advance.
-+ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add AUTOFS_SUPER_MAGIC and
-+ USBDEVFS_SUPER_MAGIC.
-+
-+2003-09-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ * posix/Versions (sched_getaffinity, sched_setaffinity): Change
-+ from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version.
-+
-+2003-09-16 Bruno Haible <bruno@clisp.org>
-+
-+ * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after
-+ invoking msgfmt, not before.
-+
-+2003-09-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * argp/argp.h (argp_parse, __argp_parse): Remove __THROW.
-+ * argp/Makefile (CFLAGS-argp-help.c, CFLAGS-argp-parse.c): Add
-+ $(uses-callbacks).
-+ * dirent/Makefile (CFLAGS-scandir.c, CFLAGS-scandir64.c): Likewise.
-+ * elf/Makefile (CFLAGS-dl-iterate-phdr.c,
-+ CFLAGS-dl-iterate-phdr-static.c): Add $(uses-callbacks).
-+ * elf/dl-iteratephdr.c (cancel_handler): New function.
-+ (__dl_iterate_phdr): Add __libc_cleanup_{push,pop}.
-+ * elf/link.h (dl_iterate_phdr): Remove __THROW.
-+ * io/Makefile (CFLAGS-fts.c): Merge into one assignment.
-+ Add $(uses-callbacks).
-+ (CFLAGS-ftw.c, CFLAGS-ftw64.c): Add $(uses-callbacks).
-+ * misc/Makefile (CFLAGS-tsearch.c, CFLAGS-lsearch.c): Change
-+ $(exceptions) to $(uses-callbacks).
-+ * Makeconfig (uses-callbacks): Set to $(exceptions).
-+ * posix/Makefile (CFLAGS-glob.c, CFLAGS-glob64.c): Add
-+ $(uses-callbacks).
-+ * stdlib/Makefile (CFLAGS-bsearch.c, CFLAGS-msort.c, CFLAGS-qsort.c):
-+ Likewise.
-+
-+2003-09-15 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/setjmp.c: Add hidden_def.
-+
-+2003-09-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/memstream.c (open_memstream): Don't allow wide char operations.
-+
-+ * dirent/dirent.h: Remove __THROW from scandir.
-+
-+2003-09-14 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known
-+ to be available.
-+
-+ * sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little.
-+
-+ * sysdeps/arm/memset.S: Rewrite.
-+
-+2003-09-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New.
-+ (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and
-+ __SLONGWORD_TYPE otherwise.
-+
-+2003-09-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/Makefile (CFLAGS-ftw.c): Add -fexceptions.
-+ (CFLAGS-ftw64.c): Likewise.
-+
-+2003-09-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/Makefile (CFLAGS-nscd_getpw_r.c): Add -fexceptions.
-+ (CFLAGS-nscd_getgr_r.c): Likewise.
-+ (CFLAGS-nscd_gethst_r.c): Likewise.
-+
-+2003-09-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/if_index.c: Use only non-cancelable
-+ interfaces.
-+
-+ * grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c,
-+ CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c,
-+ CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions.
-+ * inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c,
-+ CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise.
-+ * io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c):
-+ Likewise.
-+ * misc/Makefile (CFLAGS-err.c): Likewise.
-+ * posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c,
-+ CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c,
-+ CFLAGS-glob64.c): Likewise.
-+ * pwd/Makefile (CFLAGS-getpw.c): Likewise.
-+ * shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c,
-+ CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise.
-+ * stdio-common/Makefile (CFLAGS-cuserid.c): Likewise.
-+ * sunrpc/Makefile (CFLAGS-openchild.c): Likewise.
-+
-+ * stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition.
-+
-+ * libio/stdio.h: Remove __THROW from cuserid prototype.
-+
-+ * locale/loadarchive.c: Use only non-cancelable interfaces.
-+ * resolv/herror.c (herror): Likewise.
-+
-+ * malloc/hooks.c: Before using IO stream mark stream so it uses
-+ only non-cancelable interfaces.
-+ * malloc/malloc.c: Likewise.
-+ * posix/getopt.c: Likewise.
-+
-+
-+2003-09-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makerules (LDFLAGS-c.so): Remove -u __register_frame.
-+
-+2003-09-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdio-common/stdio_ext.h: Mark most functions with __THROW.
-+
-+ * misc/err.h: Remove __THROW from all prototypes.
-+
-+ * posix/getopt.h (__THROW): Define if not already defined. Add
-+ __THROW to the getopt functions.
-+
-+2003-09-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/Makefile (CFLAGS-lockf.c): Add -fexceptions.
-+ (CFLAGS-fts.c): Likewise.
-+ * io/fcntl.h: Remove __THROW from lockf prototypes.
-+ * io/fts.h: Remove most __THROW.
-+
-+2003-09-11 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64.
-+ (TLS_LD): Likewise.
-+ (TLS_GD): Likewise.
-+
-+2003-09-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to
-+ _IO_free_backup_area call.
-+
-+2003-09-10 Chris Demetriou <cgd@broadcom.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Fix
-+ syscall invocation.
-+ * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise.
-+ Also, only assert off_t size is 4 for N32 and O32, and clean up
-+ white space.
-+ * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise.
-+
-+2003-09-10 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr):
-+ Don't use c_ispeed under [! _HAVE_STRUCT_TERMIOS_C_ISPEED].
-+ Don't use c_ospeed under [! _HAVE_STRUCT_TERMIOS_C_OSPEED].
-+ * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
-+ Reported by Daniel Jacobowitz <drow@mvista.com>.
-+
-+2003-09-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * string/Makefile (strop-tests): Add memccpy.
-+ * string/test-memccpy.c: New test.
-+
-+2003-09-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add
-+ siginfo_t * argument before, change into struct ucontext *.
-+ (SIGCONTEXT_EXTRA_ARGS): Define to _si,.
-+ (GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer
-+ instead of structure.
-+ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP):
-+ Likewise.
-+
-+2003-09-09 Ulrich Drepper <drepper@redhat.com>
-+
-+ * string/stratcliff.c (main): Check memccpy.
-+
-+2003-04-11 Jes Sorensen <jes@wildopensource.com>
-+
-+ * sysdeps/ia64/memccpy.S: When recovering for src_aligned and the
-+ character is found during recovery, use correct register when
-+ determining the position of the found character.
-+
-+2003-04-01 Jes Sorensen <jes@wildopensource.com>
-+
-+ * sysdeps/ia64/memccpy.S: Use speculatively loads for readahead to
-+ avoid segfaults when reading from unmapped pages. For aligned
-+ reload and continue, for misaligned, roll back and use byte copy.
-+ Save ar.ec on entry and restore on exit.
-+
-+2003-09-09 Chris Demetriou <cgd@broadcom.com>
-+
-+ * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining.
-+
-+2003-09-08 Chris Demetriou <cgd@broadcom.com>
-+
-+ * sysdeps/mips/mips64/n32/Implies: Move ieee754/ldbl-128 to
-+ the top of the list.
-+ * sysdeps/mips/mips64/n64/Implies: Likewise.
-+
-+2003-09-08 Roland McGrath <roland@frob.com>
-+
-+ * sysdeps/unix/sysv/linux/speed.c
-+ (cfsetospeed): Only set c_ospeed under [_HAVE_STRUCT_TERMIOS_C_OSPEED].
-+ (cfsetispeed): Only set c_ispeed under [_HAVE_STRUCT_TERMIOS_C_ISPEED].
-+ * sysdeps/unix/sysv/linux/bits/termios.h
-+ (_HAVE_STRUCT_TERMIOS_C_ISPEED, _HAVE_STRUCT_TERMIOS_C_OSPEED): Define.
-+ * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
-+
-+2003-09-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/register-dump.h: Undo last change.
-+ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Likewise.
-+
-+2003-09-08 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit.
-+ (__u_quad_t): Make unsigned long int if 64-bit.
-+ (__SQUAD_TYPE): Make long int if 64-bit.
-+ (__UQUAD_TYPE): Make unsigned long int if 64-bit.
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.
-+
-+2003-09-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makefile (tests): Run check-c++-types.sh if possible.
-+ * scripts/check-c++-types.h: New file.
-+ * scripts/data/c++-types-i386-linux-gnu.data: New file.
-+
-+2003-09-08 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
-+ Use struct sigcontext.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT):
-+ Use struct sigcontext.
-+ (GET_PC): Adopt.
-+ (GET_FRAME): Likewise.
-+ (GET_STACK): Likewise.
-+
-+2003-09-08 Wolfram Gloger <wg@malloc.de>
-+
-+ * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into
-+ contiguous case. Bug report from Prem Gopalan <prem@mazunetworks.com>.
-+ (mALLOPt): Avoid requirement of C99.
-+
-+2003-09-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/bug-ftell.c: Include <sys/types.h>.
-+ (main): Mark cp as const.
-+
-+2003-09-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove.
-+ * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove.
-+
-+2003-09-05 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Fill in c_ispeed
-+ and c_ospeed fields.
-+ * sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Set c_ospeed field.
-+ (cfsetispeed): Set c_ispeed field.
-+ * sysdeps/unix/sysv/linux/tcsetattr.c (IBAUD0): Define unconditionally
-+ to match corresponding speed.c code.
-+
-+2003-09-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/wfileops.c (_IO_wfile_underflow): Mark beginning of the
-+ narrow character buffer.
-+ * libio/Makefile: Add rules to build and run bug-ftell.
-+ * libio/bug-ftell.c: New file.
-+
-+ * stdio-common/vfprintf.c: Don't use the first grouping number twice.
-+
-+ * stdio-common/vfscanf.c (vfscanf): Fix recognition of characters
-+ matching the decimal point and possibly leading the thousands
-+ separator. This caused the recognition of thousands separators to
-+ always fail.
-+
-+2003-09-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/fileops.c (_IO_new_file_overflow): Handle switching to
-+ write mode from read in backup buffer.
-+ * libio/Makefile (tests): Add bug-ungetc2.
-+ * libio/bug-ungetc2.c: New file.
-+
-+2003-09-05 Roland McGrath <roland@redhat.com>
-+
-+ * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable.
-+
-+2003-09-04 Roland McGrath <roland@frob.com>
-+
-+ * sysdeps/mach/hurd/mmap.c (__mmap): If io_map fails with MIG_BAD_ID,
-+ EOPNOTSUPP, or ENOSYS, change it to ENODEV.
-+
-+2003-09-04 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ):
-+ Fix a typo.
-+
-+2003-09-05 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler
-+ to make it conforming C.
-+ * sysdeps/i386/i486/bits/string.h (__memrchr): Likewise.
-+
-+ * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change
-+ prototype to use variable argument lists and get the possible one
-+ argument via va_arg.
-+ * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/fcntl.c: New.
-+
-+2003-09-04 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/unistd.h: Add back __THROW to sysconf, pathconf, fpathconf.
-+
-+ * sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max):
-+ Report correct value for vxfs.
-+ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define VXFS_SUPER_MAGIC.
-+
-+ * gmon/gmon.c: Use only not-cancelable syscalls to write profiling
-+ data.
-+
-+ * sysdeps/generic/utmp_file.c: Use not-cancelable syscalls all
-+ over the place. It would be allowed to have these functions as
-+ cancellation points but the cleanup would be ugly and a lot of
-+ work.
-+
-+ * sysdeps/generic/not-cancel.h (fcntl_not_cancel): Define.
-+ * sysdeps/unix/sysv/linux/not-cancel.h (fcntl_not_cancel): Define.
-+
-+ * include/fcntl.h (__fcntl_nocancel): Declare.
-+ * sysdeps/unix/sysv/linux/fcntl.c: New file.
-+ * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Only enable
-+ cancellation if absolutely needed.
-+ (__fcntl_nocancel): Define.
-+
-+ * posix/unistd.h (gethostid): Remove __THROW. Clarify comment.
-+ * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gethostid.c): Add
-+ -fexceptions.
-+ * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use
-+ extend_alloca.
-+
-+ * resolv/res_init.c (__res_nclose): Use close_not_cancel_no_status
-+ instead of __close.
-+
-+ * nss/getXXbyYY.c (FUNCTION_NAME): Add a few casts. Remove
-+ unnecessary errno handling.
-+
-+ * nss/getXXbyYY_r.c (INTERNAL): Use better variable name.
-+ Initialize it in all cases. Change it to be a bit more like the
-+ code we had before.
-+
-+2003-09-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/fileops.c (_IO_file_read, _IO_new_file_write): Add
-+ __builtin_expect.
-+ (_IO_file_open): Likewise. Use close_not_cancel.
-+
-+2003-09-04 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL.
-+ * libio/fileops.c [_LIBC]: Remove close macro.
-+ (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel.
-+ (_IO_new_file_open): Recognize 'c' flag in mode string.
-+ (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel.
-+ (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use
-+ write_not_cancel.
-+ * iconv/gconv_conf.c: Use fopen with 'c' mode flag.
-+ * inet/rcmd.c: Likewise.
-+ * inet/ruserpass.c: Likewise.
-+ * intl/localealias.c: Likewise.
-+ * malloc/mtrace.c: Likewise.
-+ * misc/getpass.c: Likewise.
-+ * misc/getttyent.c: Likewise.
-+ * misc/mntent_r.c: Likewise.
-+ * misc/getusershell.c: Likewise.
-+ * nss/nsswitch.c: Likewise.
-+ * resolv/res_hconf.c: Likewise.
-+ * resolv/res_init.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-+ * time/getdate.c: Likewise.
-+ * time/tzfile.c: Likewise.
-+ * misc/fstab.h: Undo last change.
-+ * misc/mntent.h: Likewise.
-+ * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and
-+ CFLAGS-fstab.c definition.
-+
-+2003-09-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype.
-+
-+2003-09-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid
-+ returning ERANGE if this wasn't intended.
-+
-+2003-09-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as
-+ function-like macros.
-+
-+2003-09-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * grp/Makefile (CFLAGS-getgrent_r.c): Add -fexceptions.
-+ (CFLAGS-getgrent.c): Likewise.
-+ * pwd/Makefile (CFLAGS-getpwent_r.c): Add -fexceptions.
-+ (CFLAGS-getpwent.c): Likewise.
-+ * shadow/Makefile (CFLAGS-getspent_r.c): Add -fexceptions.
-+ (CFLAGS-getspent.c): Likewise.
-+
-+ * inet/Makefile: Add -fexceptions to CFLAGS for the various
-+ getXXent and getXXbyYY functions.
-+
-+ * locale/loadlocale.c: Use not-cancelable variants of open, close,
-+ and read.
-+
-+2003-09-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove
-+ rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo and
-+ rt_sigpending.
-+ * sysdeps/unix/sysv/linux/alpha/sigaction.c (__syscall_rt_sigaction):
-+ New prototype.
-+ * sysdeps/unix/sysv/linux/arm/syscalls.list (__syscall_*): Remove
-+ unused __syscall_ stubs.
-+ * sysdeps/unix/sysv/linux/arm/Makefile (sysdep_routines): Remove
-+ rt_*.
-+ * sysdeps/unix/sysv/linux/cris/Makefile: Removed.
-+ * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
-+ (__syscall_recvfrom, __syscall_sendto): Remove unused aliases.
-+ * sysdeps/unix/sysv/linux/mips/syscalls.list (__syscall_*): Remove
-+ unused __syscall_ stubs.
-+ * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Remove rt_*.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
-+ (__syscall_*): Remove unused __syscall_ stubs.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
-+ (__syscall_*): Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines): Remove
-+ rt_*.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__syscall_*):
-+ Remove unused __syscall_ stubs.
-+ * sysdeps/unix/sysv/linux/sh/Makefile (sysdep_routines): Remove rt_*.
-+ * sysdeps/unix/sysv/linux/rt_sigaction.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigpending.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigprocmask.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigreturn.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigsuspend.c: Removed.
-+ * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Removed.
-+ * sysdeps/unix/sysv/linux/s_pread64.c: Removed.
-+ * sysdeps/unix/sysv/linux/s_pwrite64.c: Removed.
-+ * sysdeps/unix/sysv/linux/alpha/gethostname.c: Remove unused
-+ __syscall_* prototypes.
-+ * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/chown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pwrite.c: Likewise.
-+ * sysdeps/unix/sysv/linux/execve.c: Likewise.
-+ * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise.
-+ * sysdeps/unix/sysv/linux/reboot.c: Likewise.
-+ * sysdeps/unix/sysv/linux/_exit.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/fxstat64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise.
-+ * sysdeps/unix/sysv/linux/readahead.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getcwd.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigwait.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getdents.c: Likewise.
-+ * sysdeps/unix/sysv/linux/readv.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getpriority.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigaction.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ipc_priv.h: Likewise.
-+ * sysdeps/unix/sysv/linux/llseek.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sysctl.c: Likewise.
-+ * sysdeps/unix/sysv/linux/lxstat64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mmap64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ustat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/poll.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pread64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/writev.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pread.c: Likewise.
-+ * sysdeps/unix/sysv/linux/ptrace.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigpending.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigqueue.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
-+ * sysdeps/unix/sysv/linux/truncate64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/xmknod.c: Likewise.
-+ * sysdeps/unix/sysv/linux/xstat64.c: Likewise.
-+
-+2003-09-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Revert last change.
-+ * sysdeps/unix/sysv/linux/powerpc/syscalls.list: New file.
-+ * sysdeps/unix/sysv/linux/sparc/syscalls.list: New file.
-+
-+2003-09-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdio-common/Makefile (CFLAGS-vprintf.c): Add -fexceptions.
-+
-+ * intl/loadmsgcat.c: For _LIBC, call not cancelable versions of
-+ open, close, and read.
-+
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Also define
-+ *_nocancel name.
-+
-+ * sysdeps/unix/sysv/linux/i386/syscalls.list: Add waitpid.
-+
-+ * libio/Makefile (CFLAGS-oldtmpfile.c): Add -fexceptions.
-+ * sysdeps/generic/tmpfile.c (tmpfile): Use __unlink instead of remove.
-+ * libio/oldtmpfile.c (__old_tmpfile): Likewise.
-+
-+ * misc/Makefile (CFLAGS-getusershell.c): Add -fexceptions.
-+
-+ * io/Makefile (CFLAGS-statfs.c): Add -fexceptions.
-+ (CFLAGS-fstatfs.c): Likewise.
-+ (CFLAGS-statvfs.c): Likewise.
-+ (CFLAGS-fstatvfs.c): Likewise.
-+
-+2003-09-01 Ulrich Drepper <drepper@redhat.com>
-+
-+ * misc/Makefile (CFLAGS-getsysstats.c): Add -fexceptions.
-+ * posix/unistd.h: Remove __THROW from pathconf, fpathconf,
-+ sysconf.
-+ * posix/Makefile (CFLAGS-sysconf.c): Add -fexceptions.
-+ (CFLAGS-pathconf.c): Likewise.
-+ (CFLAGS-fpathconf.c): Likewise.
-+
-+ * misc/Makefile (CFLAGS-fstab.c): Add -fexceptions.
-+ * misc/fstab.h: Remove all __THROW.
-+ * misc/Makefile (CFLAGS-mntent.c): Add -fexceptions.
-+ (CFLAGS-mntent_r.c): Likewise.
-+ * misc/mntent.h: Remove most __THROW.
-+
-+ * misc/Makefile (CFLAGS-mkstemp.c): Add -fexceptions.
-+ (CFLAGS-mkstemp64.c): Likewise.
-+
-+ * sysdeps/generic/wordexp.c (parse_comm): Disable cancellation
-+ around call to exec_comm.
-+ * posix/wordexp.h: Remove __THROW from wordexp.
-+ * posix/Makefile (CFLAGS-wordexp.c): Add -fexceptions.
-+
-+ * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Use
-+ not-cancelable functions.
-+
-+ * libio/Makefile (CFLAGS-oldiofopen.c): Add -fexceptions.
-+ (CFLAGS-iofopen.c): Likewise.
-+ (CFLAGS-iofopen64.c): Likewise.
-+
-+ * stdlib/fmtmsg.c (fmtmsg): Disable cancellation around output
-+ functions.
-+ * stdlib/Makefile (CFLAGS-fmtmsg.c): Add -fexceptions.
-+ * stdlib/fmtmsg.h: Remove __THROW from fmtmsg.
-+
-+ * stdlib/stdlib.h: Remove __THROW from posix_openpt and getpt.
-+ * login/Makefile (CFLAGS-getpt.c): Add -fexceptions.
-+
-+2003-09-01 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * nis/nss_compat/compat-spwd.c (getspnam_plususer): Return
-+ NSS_STATUS_SUCCESS if entry was found.
-+ (getspent_next_file): Store user in blacklist after entry
-+ was found, use innetgr.
-+
-+2003-09-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: New.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: New.
-+
-+ * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Fix tls offset
-+ computation for TCB_AT_TP. Support l_firstbyte_offset != 0 for
-+ DTV_AT_TP, optimize.
-+
-+2003-08-31 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/sh/Versions: Add posix_fadvise64 and
-+ posix_fallocate64 at GLIBC_2.3.3.
-+ * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO_ERRVAL): Define.
-+ (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise.
-+
-+2003-08-08 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_
-+ functions.
-+
-+2003-08-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function.
-+ Code by Richard Henderson.
-+
-+2003-08-31 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and
-+ posix_fallocate64 at GLIBC_2.3.3.
-+
-+2003-08-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET.
-+ * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp.
-+
-+2003-08-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define.
-+ * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Allow file to be
-+ included multiple times.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Pass
-+ ptid, tls, ctid arguments to the kernel.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize):
-+ Use INTERNAL_SYSCALL instead of __syscall_getpagesize.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
-+ (__libc_sigaction): Use INLINE_SYSCALL instead of
-+ __syscall_rt_sigaction.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list
-+ (__syscall_getgroups, __syscall_getpagesize, __syscall__llseek,
-+ __syscall_setfsgid, __syscall_setfsuid, __syscall_setgid,
-+ __syscall_setgroups, __syscall_setregid, __syscall_setreuid,
-+ __syscall_ipc, __syscall_setuid, __syscall_rt_sigaction,
-+ __syscall_rt_sigpending, __syscall_rt_sigprocmask,
-+ __syscall_rt_sigqueueinfo, __syscall_rt_sigsuspend,
-+ __syscall_rt_sigtimedwait): Remove unneeded syscall stubs.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (sysdep_routines):
-+ Remove rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait,
-+ rt_sigqueueinfo, rt_sigaction and rt_sigpending.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
-+ (__CLONE_SYSCALL_STRING): Define.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Add
-+ CFI directives.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
-+ (__CLONE_SYSCALL_STRING): Define.
-+ * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL):
-+ Define.
-+ * sysdeps/unix/sysv/linux/sparc/system.c: New file.
-+
-+2003-08-30 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sunrpc/rpc/clnt.h: Remove a few __THROW.
-+ * sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions.
-+ (CFLAGS-key_call.c): Likewise.
-+ (CFLAGS-pmap_rmt.c): Likewise.
-+ (CFLAGS-clnt_perr.c): Likewise.
-+ * sunrpc/rpc/auth.h: Remove serveral __THROW.
-+
-+ * inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions.
-+ (CFLAGS-gethstbynm_r.c): Likewise.
-+ (CFLAGS-gethstbynm2_r.c): Likewise.
-+ (CFLAGS-rcmd.c): Likewise.
-+ * resolv/Makefile (CFLAGS-res_hconf.c): Add -fexceptions.
-+
-+ * argp/Makefile (CFLAGS-argp-help.c): Add -fexceptions.
-+ (CFLAGS-argp-fmtstream.c): Likewise.
-+ * argp/argp.h: Remove a number of __THROW.
-+
-+ * misc/sys/syslog.h (vsyslog): Remove __THROW.
-+
-+ * misc/Makefile (CFLAGS-getpass.c): Add -fexceptions.
-+ * misc/getpass.c (getpass): Add cleanup handler to ensure the
-+ stream is closed even if the thread is canceled.
-+ (call_fclose): New function.
-+ * posix/unistd.h: Remove __THROW from getpass prototype.
-+
-+ * posix/Makefile (CFLAGS-getopt.c): Add -fexceptions.
-+
-+ * signal/signal.h (psignal): Remove __THROW.
-+ * stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions.
-+
-+ * misc/Makefile (CFLAGS-error.c): Define.
-+ * misc/error.c (error): Disable cancellation handling around the
-+ actual output. The message should in any case be printed.
-+ (error_at_line): Likewise.
-+
-+ * misc/error.h: Protect parameter names with leading __.
-+
-+2003-08-28 Carlos O'Donell <carlos@baldric.uwo.ca>
-+
-+ * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop.
-+
-+2003-08-29 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the
-+ end.
-+
-+2003-08-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/stdio.h: Remove a few more __THROW.
-+
-+2003-08-29 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c,
-+ fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c,
-+ getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c,
-+ iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c,
-+ iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c,
-+ iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c,
-+ ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c,
-+ oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c,
-+ oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c,
-+ putwchar.c and rewind.c with exceptions.
-+ * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock,
-+ _IO_release_lock): Define.
-+ * libio/fileops.c (_IO_new_file_underflow): Use it.
-+ * libio/fputc.c (fputc): Likewise.
-+ * libio/fputwc.c (fputwc): Likewise.
-+ * libio/freopen64.c (freopen64):
-+ * libio/freopen.c (freopen): Likewise.
-+ * libio/fseek.c (fseek): Likewise.
-+ * libio/fseeko64.c (fseeko64): Likewise.
-+ * libio/fseeko.c (fseeko): Likewise.
-+ * libio/ftello64.c (ftello64): Likewise.
-+ * libio/ftello.c (ftello): Likewise.
-+ * libio/fwide.c (fwide): Likewise.
-+ * libio/getc.c (_IO_getc): Likewise.
-+ * libio/getchar.c (getchar): Likewise.
-+ * libio/getwc.c (_IO_getwc): Likewise.
-+ * libio/getwchar.c (getwchar): Likewise.
-+ * libio/iofclose.c (_IO_new_fclose):
-+ * libio/iofflush.c (_IO_fflush): Likewise.
-+ * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
-+ * libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
-+ * libio/iofgets.c (_IO_fgets): Likewise.
-+ * libio/iofgetws.c (fgetws): Likewise.
-+ * libio/iofputs.c (_IO_fputs): Likewise.
-+ * libio/iofputws.c (fputws): Likewise.
-+ * libio/iofread.c (_IO_fread): Likewise.
-+ * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise.
-+ * libio/iofsetpos.c (_IO_new_fsetpos): Likewise.
-+ * libio/ioftell.c (_IO_ftell): Likewise.
-+ * libio/iofwrite.c (_IO_fwrite): Likewise.
-+ * libio/iogetdelim.c (_IO_getdelim): Likewise.
-+ * libio/iogets.c (_IO_gets): Likewise.
-+ * libio/ioputs.c (_IO_puts): Likewise.
-+ * libio/ioseekoff.c (_IO_seekoff): Likewise.
-+ * libio/ioseekpos.c (_IO_seekpos): Likewise.
-+ * libio/iosetbuffer.c (_IO_setbuffer): Likewise.
-+ * libio/iosetvbuf.c (_IO_setvbuf): Likewise.
-+ * libio/ioungetc.c (_IO_ungetc): Likewise.
-+ * libio/ioungetwc.c (ungetwc): Likewise.
-+ * libio/oldiofclose.c (_IO_old_fclose): Likewise.
-+ * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
-+ * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
-+ * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise.
-+ * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise.
-+ * libio/peekc.c (_IO_peekc_locked): Likewise.
-+ * libio/putc.c (_IO_putc): Likewise.
-+ * libio/putchar.c (putchar): Likewise.
-+ * libio/putwc.c (putwc): Likewise.
-+ * libio/putwchar.c (putwchar): Likewise.
-+ * libio/rewind.c (rewind): Likewise.
-+ * libio/wfileops.c (_IO_wfile_underflow): Likewise.
-+
-+2003-08-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * signal/signal.h: sighold, sigrelse, sigignore, sigset were
-+ available in XPG4.2.
-+
-+2003-08-27 Phil Knirsch <pknirsch@redhat.com>
-+ Jakub Jelinek <jakub@redhat.com>
-+
-+ * sunrpc/svc.c (svc_getreqset): Fix fds_bits reading on 64-bit
-+ big endian arches. Don't read beyond end of fds_bits array.
-+
-+2003-04-27 Bruno Haible <bruno@clisp.org>
-+
-+ * manual/message.texi (Advanced gettext functions): Add information
-+ about Korean, Portuguese, Latvian. Gaeilge is also known as Irish.
-+ Add section about Lithuanian, reported by Ricardas Cepas
-+ <rch@richard.eu.org>.
-+ Add information about Croatian.
-+ Ukrainian is like Russian, reported by Andy Rysin <arysin@yahoo.com>.
-+ Remove remark about continuation lines that is not true for PO files.
-+ Fix formula for Slovenian, reported by Roman Maurer
-+ <roman.maurer@amis.net>.
-+
-+2003-08-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * math/math_private.h: Declare __copysignf.
-+ * sysdeps/ieee754/flt-32/s_scalbnf.c: Use __copysignf instead of
-+ copysignf.
-+
-+ * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf,
-+ __signbit, and __signbitl inline functions.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use
-+ HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit().
-+
-+ * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp.
-+ * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp.
-+
-+2003-08-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * inet/inet_mkadr.c (inet_makeaddr): Optimize.
-+
-+2003-08-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/stdio.h: Add declarations for __builtin_fwrite and
-+ __builtin_fwrite_unlocked.
-+
-+2003-08-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/opendir.c (__opendir): Make sure even struct dirent64
-+ fits into allocation. Add padding on 32-bit arches so that
-+ dirp->data is enough aligned for struct dirent64.
-+ Avoid clearing of the buffer, just clear DIR structure.
-+
-+2003-08-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nss/nsswitch.c: Add libc_hidden_def for __nss_lookup_function.
-+ * nss/nsswitch.h: Add libc_hidden_proto for __nss_lookup_function.
-+
-+2003-08-26 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/elf/Makefile: New file.
-+
-+2003-08-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * login/programs/utmpdump.c (print_entry): Cast tv_usec to long
-+ to match format string.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (union semun): Add
-+ __old_buf.
-+ (__new_semctl): Shut up warning.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
-+ (_dl_string_hwcap): Add __attribute__ ((always_inline)).
-+
-+2003-08-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/ldconfig.c (search_dir): When checking for GNU-style .so
-+ link file use the real file name, not the resolved name we got by
-+ following the symlinks.
-+
-+2003-08-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field
-+ if the object size is large enough.
-+
-+2003-08-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/ldconfig.c (search_dir): Treat symlink as regular file
-+ if it won't point to itself unless it is .so symlink for the linker.
-+
-+2003-08-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/libio.h (_IO_fwide): In the mode==0 optimization, don't
-+ use _mode if _IO_fwide_maybe_incompatible.
-+ * libio/iofwide.c (_IO_fwide): Move the test for mode == 0 after
-+ the compatibility test.
-+
-+2003-08-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/cache.c (save_cache): Don't write beyond end of file_entries
-+ buffer.
-+ Duplicate last old cache entry if the count would be odd.
-+
-+2003-08-25 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of
-+ __LONG_LONG_PAIR to long.
-+
-+2003-08-25 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define.
-+ (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise.
-+
-+2003-08-18 Alfred M. Szmidt <ams@kemisten.nu>
-+
-+ * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine
-+ and use __libc_cleanup_region_end instead.
-+
-+2003-08-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21.
-+
-+2003-08-22 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/fcntl.h (posix_fallocate): Change type of third parameter to
-+ off_t.
-+ (posix_fallocate64): Change type of third parameter to off64_t.
-+ * sysdeps/generic/posix_fallocate.c: Adjust for type change.
-+ * sysdeps/posix/posix_fallocate.c: Likewise.
-+ * sysdeps/generic/posix_fallocate64.c: Likewise.
-+ * sysdeps/posix/posix_fallocate64.c: Likewise. Add compatibility
-+ code for 32-bit platforms.
-+ * sysdeps/unix/sysv/linux/i386/Versions: Add new version for
-+ posix_fallocate64.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise.
-+
-+2003-08-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to
-+ the type, not to name.
-+
-+ * stdio-common/test-vfprintf.c (main): Don't write temporary file
-+ into source directory.
-+
-+ * malloc/malloc.c (_int_free): Add cheap test for some invalid
-+ block sizes.
-+
-+ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo in
-+ syscall name.
-+
-+2003-08-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error
-+ into EINVAL.
-+
-+2003-08-18 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type.
-+ (elf_machine_lazy_rel): Likewise.
-+
-+2003-08-18 Art Haas <ahaas@airmail.net>
-+
-+ * malloc/malloc.h: Remove unneeded ';' where closing the C++
-+ extern block.
-+
-+2003-08-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/ia64/dl-fptr.h (ELF_MACHINE_LOAD_ADDRESS): Support
-+ loading big binaries where @gprel(sym) cannot be handled in 'add'
-+ but instead has to be used with 'movl'.
-+
-+2003-08-17 Juergen Kreileder <jk@blackdown.de>
-+ Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/x86_64/bits/byteswap.h: New file.
-+
-+2003-08-17 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo.
-+
-+2003-08-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_ERRVAL,
-+ PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
-+ * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_ERRVAL,
-+ PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
-+ * sysdeps/unix/alpha/sysdep.h (PSEUDO_ERRVAL,
-+ ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
-+ * sysdeps/unix/mips/sysdep.h (PSEUDO_ERRVAL,
-+ ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
-+ * sysdeps/unix/sparc/sysdep.h (PSEUDO_ERRVAL,
-+ ret_ERRVAL): Define.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_ERRVAL,
-+ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO_ERRVAL,
-+ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PSEUDO_ERRVAL):
-+ Define.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_ERRVAL,
-+ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
-+ * sysdeps/unix/sysdep.h (PSEUDO_END_ERRVAL): Define.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64,
-+ posix_fadvise64_64): Remove.
-+ * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): Add
-+ V flag.
-+ * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
-+ (posix_fadvise64): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
-+ (posix_fadvise64): Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
-+ (posix_fadvise64): Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/i386/posix_fadvise64_64.S: Moved to...
-+ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: ...here.
-+ (__posix_fadvise64_l64): Fix a typo in fadvise64 syscall invocation.
-+ (__posix_fadvise64_l32): New function.
-+ * sysdeps/unix/sysv/linux/i386/Makefile: Revert last change.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Export
-+ posix_fadvise64@@GLIBC_2.3.3.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise.
-+ * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Return
-+ error value.
-+ * sysdeps/unix/sysv/linux/posix_fadvise64.c: New file.
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
-+ (SYSCALL_ERROR_HANDLER): Use TLS errno/__libc_errno if USE___THREAD.
-+
-+2003-08-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc32/dl-machine.h (WEAKADDR): Remove.
-+ (elf_machine_matches_host): Remove weak extern stuff.
-+ Use GL(dl_hwcap) unconditionally and GL(dl_hwcap_mask) if SHARED.
-+ (elf_machine_runtime_setup, sparc_fixup_plt): Remove weak extern
-+ stuff. Use GL(dl_hwcap) unconditionally.
-+
-+2003-08-16 Alan Modra <amodra@bigpond.net.au>
-+
-+ * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after
-+ __libc_start_main branch.
-+
-+2003-08-16 Jakub Jelinek <jakub@redhat.com>,
-+ Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/generic/posix_fadvise.c (posix_fadvise): Return ENOSYS
-+ instead of setting errno.
-+ * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise.
-+
-+2003-08-16 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype.
-+ * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise.
-+
-+2003-08-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/fcntl.h (posix_fadvise64): Change type of third parameter to
-+ off_t.
-+ * sysdeps/unix/sysv/linux/posix_fadvise.c: Adjust definition.
-+ * sysdeps/unix/make-syscalls.sh: Recognize V prefix to the parameter
-+ description indicating the error value is returned, not -1.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Add definition of
-+ __ASSUME_FADVISE64_64_SYSCALL.
-+ * sysdeps/unix/sysv/linux/syscalls.list: Don't define madvise and
-+ posix_madvise in one file. Have posix_madvise defined with error
-+ value returned.
-+ Define posix_fadvise64_64 entry. Add version info to posix_fadvise64
-+ entry.
-+ * sysdeps/unix/sysv/linux/i386/posix_fadvise.S: New file.
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_ERRVAL,
-+ PSEUDO_END_ERRVAL, and ret_ERRVAL.
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/Versions [GLIBC_2.3.3]: Add
-+ posix_fadvise64.
-+
-+ * posix/Makefile (routines): Add posix_madvise.
-+ * sysdeps/generic/madvise.c: Don't define posix_madvise.
-+ * sysdeps/generic/posix_madvise.c: New file.
-+ * sysdeps/unix/sysv/aix/posix_madvise.c: New file.
-+ * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (subdir_routines):
-+ Add posix_fadvise64_64.
-+
-+2003-08-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * assert/assert.h (assert_perror): Use __builtin_expect for gcc >=
-+ 3.0, not for !gcc or gcc < 3.0.
-+
-+2003-08-11 Carlos O'Donell <carlos@baldric.uwo.ca>
-+
-+ * dlfcn/default.c (main): Cast dlsym loaded value to same type as main.
-+ Address passed to test_in_mod1 and test_in_mod2 without casting.
-+ * dlfcn/defaultmod1.c: Change prototype of test_in_mod1.
-+ (test_in_mod1): Cast dlsym loaded value to same type as mainp.
-+ * dlfcn/defaultmod2.c: Change prototype of test_in_mod2.
-+ (test_in_mod2): Cast dlsym loaded value to same type as mainp.
-+
-+2003-08-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc32/elf/configure.in (libc_cv_sparc32_tls):
-+ Change quotes before using [].
-+
-+ * sysdeps/unix/sysv/linux/sparc/sys/user.h: New file.
-+
-+ * sysdeps/sparc/sparc32/bits/atomic.h (__sparc32_atomic_lock):
-+ Renamed to...
-+ (__sparc32_atomic_locks): ...this. Change into 64-byte array.
-+ (__sparc32_atomic_do_lock, __sparc32_atomic_do_unlock): Add addr
-+ argument. Select one of 64 locks from address bits.
-+ (atomic_compare_and_exchange_val_acq,
-+ atomic_compare_and_exchange_bool_acq): Pass memory address to
-+ __sparc32_atomic_do_{,un}lock.
-+
-+2003-08-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * assert/assert.h (assert): Use !! in front of expression to allow
-+ use of pointers.
-+
-+ * iconvdata/cp932.c: Fixed checking of a few border of code areas.
-+ Changed conversion of JIS X 0201 from using a table to calculating.
-+ * iconvdata/euc-jp-ms.c: Fixed conversion table and rewrote
-+ conversion routine. Changed CHARSET_NAME definition from EUCJP-MS to
-+ EUC-JP-MS.
-+ * iconvdata/tst-tables.sh: Add CP932 and EUC-JP-MS.
-+ * iconvdata/CP932.irreversible: New file.
-+ * iconvdata/EUC-JP-MS.irreversible: New file.
-+ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
-+
-+2003-08-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/syscalls.list: Add time syscall.
-+
-+ * elf/Makefile: Use LC_ALL=C in a few cases where we call external
-+ text processing tools.
-+
-+ * sysdeps/pthread/aio_misc.h (struct waitlist): Don't add caller_pid
-+ element unless BROKEN_THREAD_SIGNALS is defined.
-+ (struct requestlist): Likewise.
-+ * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Don't fill in
-+ caller_pid of new request unless BROKEN_THREAD_SIGNALS is defined.
-+ * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise.
-+ * sysdeps/pthread/aio_notify.c (__aio_notify_only): Remove caller_pid
-+ parameter unless BROKEN_THREAD_SIGNALS is defined. Adjust callers.
-+ Pass current PID to __aio_sigqueue.
-+ * sysdeps/pthread/lio_listio.c (lio_listio): Adjust __aio_notify_only
-+ call. Don't initialize caller_pid field of waitlist element.
-+
-+2003-08-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/libioP.h (_IO_vtable_offset): Define.
-+ * libio/freopen.c (freopen): Use it.
-+ * libio/ioputs.c (_IO_puts): Likewise.
-+ * libio/freopen64.c (freopen64): Likewise.
-+ * libio/genops.c (__underflow, __uflow, _IO_flush_all_lockp):
-+ Likewise.
-+ * libio/iofclose.c (_IO_new_fclose): Likewise.
-+ * libio/iofputs.c (_IO_fputs): Likewise.
-+ * libio/ioftell.c (_IO_ftell): Likewise.
-+ * libio/iofwrite.c (_IO_fwrite): Likewise.
-+ * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise.
-+ * libio/iosetbuffer.c (_IO_setbuffer): Likewise.
-+ * stdio-common/vfprintf.c (ORIENT, vfprintf): Likewise.
-+ * stdio-common/vfscanf.c (ORIENT): Likewise.
-+
-+2003-08-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * assert/assert.h: Use __builtin_expect in assert and
-+ assert_perror definitions if possible.
-+
-+2003-08-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/ldsodefs.h (_rtld_global): Add
-+ _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
-+ * elf/rtld.c (rtld_lock_default_lock_recursive,
-+ rtld_lock_default_unlock_recursive): New functions.
-+ (dl_main): Initialize _dl_rtld_lock_recursive and
-+ _dl_rtld_unlock_recursive.
-+
-+2003-08-05 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to
-+ config_file directories instead of prepending.
-+
-+2003-08-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_CLONE_STOPPED.
-+
-+2003-08-01 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/bits/libc-lock.h
-+ (__libc_cleanup_push,__libc_cleanup_pop): Define even here.
-+
-+2003-08-01 Roland McGrath <roland@frob.com>
-+
-+ * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c.
-+
-+2003-07-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/bits/types.h (__ssize_t): Use __SSIZE_T_TYPE
-+ instead of __SWORD_TYPE.
-+ * sysdeps/generic/bits/typesizes.h (__SSIZE_T_TYPE): Define.
-+ * sysdeps/mach/hurd/bits/typesizes.h (__SSIZE_T_TYPE): Define.
-+ * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h (__SSIZE_T_TYPE):
-+ Define.
-+ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE):
-+ Define.
-+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE):
-+ Define.
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file.
-+
-+ * dlfcn/dlerror.c (once): New.
-+ (dlerror): Call __libc_once.
-+ (_dlerror_run): Remove once.
-+
-+ * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
-+ Sync with 2.5.7 and 2.5.73 kernel changes.
-+
-+ * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings.
-+ * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd
-+ formats to size_t.
-+ * elf/dl-lookup.c (_dl_debug_bindings): Likewise.
-+ * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid.
-+ * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2.
-+ * gmon/tst-sprofil.c (main): Add parens to shut up warning.
-+ * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer
-+ difference argument.
-+ * stdio-common/tst-wc-printf.c (main): Cast arguments with %C
-+ format to wint_t.
-+ * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use
-+ %d format and cast expected value to int.
-+ * sysdeps/generic/libc-start.c (STATIC): Add
-+ __attribute__((always_inline) if LIBC_START_MAIN is already defined.
-+ * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t
-+ to ieee_float_shape_type.
-+ (__sqrt): Avoid type punning.
-+ * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t
-+ to ieee_float_shape_type.
-+ (__sqrtf): Avoid type punning.
-+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define
-+ refsym if in dl-conflict.c.
-+ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
-+ * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf.
-+ (__new_semctl): Shut up warning.
-+ * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf.
-+ (__new_semctl): Shut up warning.
-+ * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines.
-+ Change old into union of __old_shmid_ds and __old_shminfo structs.
-+ Adjust all users.
-+ * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t.
-+
-+ * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and
-+ modtime computation.
-+ * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
-+ * sysdeps/posix/utimes.c (__utimes): Likewise.
-+
-+2003-07-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value,
-+ call dl_signal_error directly. If already relocated, call
-+ GL(dl_init_static_tls) directly, otherwise queue it for later.
-+ (CHECK_STATIC_TLS): Undo 2003-07-24 change.
-+ * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls).
-+ * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls
-+ for all static TLS initializations delayed in _dl_allocate_static_tls.
-+ * elf/dl-support.c (_dl_init_static_tls): New variable.
-+ * include/link.h (struct link_map): Add l_need_tls_init.
-+ * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls.
-+ (_dl_nothread_init_static_tls): New prototype.
-+ (_dl_allocate_static_tls): Adjust prototype.
-+
-+ * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive.
-+
-+2003-07-31 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela,
-+ elf_machine_rel_relative, elf_machine_rela_relative): Don't assume
-+ reloc_addr is aligned.
-+ * sysdeps/alpha/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela,
-+ elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
-+ * sysdeps/cris/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/hppa/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela,
-+ elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
-+ * sysdeps/ia64/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/m68k/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/mips/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/powerpc/powerpc64/dl-machine.h
-+ (elf_machine_rela_relative, elf_machine_rela): Adjust.
-+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/sh/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela,
-+ elf_machine_rela_relative): Adjust.
-+
-+2003-07-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Restore
-+ alignment of TCB used before the last change so that it matches
-+ ld's output for IE code.
-+
-+2003-07-29 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/ctype.h (__ctype_b_loc, __ctype_toupper_loc,
-+ __ctype_tolower_loc): Avoid "dereferencing type-punned pointer will
-+ break strict-aliasing rules" warnings.
-+
-+2003-07-29 Roland McGrath <roland@redhat.com>
-+
-+ * elf/Makefile: Revert accidental changes in last commit.
-+ * elf/dl-support.c: Likewise.
-+
-+ * rt/tst-timer2.c: New file.
-+ * rt/Makefile (tests): Add it.
-+
-+2003-07-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/dl-support.c (_dl_hwcap): Add nocommon attribute.
-+
-+2003-07-29 Roland McGrath <roland@redhat.com>
-+
-+ * elf/Makefile (tests) [$(build-shared) = yes]:
-+ Depend on $(test-modules).
-+ * dlfcn/Makefile: Likewise.
-+
-+2003-07-28 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/generic/bits/types.h (__STD_TYPE): New macro.
-+ Use that instead of `typedef' when using __*_TYPE macros in rhs.
-+
-+ * elf/tst-tls14.c [USE_TLS && HAVE___THREAD]: Conditionalize on this.
-+ * elf/tst-tlsmod14a.c: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/sys/sysctl.h: Include <linux/compiler.h>
-+ before <linux/sysctl.h>.
-+
-+2003-07-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/syscalls.list: time syscall never fails.
-+ * sysdeps/unix/sysv/linux/x86_64/time.S: time syscall never fails.
-+ * sysdeps/unix/sysv/i386/time.S: time syscall never fails.
-+ * sysdeps/unix/syscalls.list: umask syscall never fails.
-+
-+2003-07-27 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/init-first.c: Mark init as used.
-+
-+2003-07-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/a.out.h: Replace with i386 version.
-+ Include bits/a.out.h.
-+ * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
-+ bits/a.out.h.
-+ * sysdeps/unix/sysv/linux/bits/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/i386/bits/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/m68k/bits/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/alpha/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/alpha/bits/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/sparc/a.out.h: New file.
-+ * sysdeps/unix/sysv/linux/sparc/bits/a.out.h: New file.
-+
-+2003-07-24 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/aio_cancel.c (aio_cancel): Return AIO_ALLDONE
-+ if aiocbp != NULL and has already completed. Return -1/EINVAL if
-+ aiocbp->aio_fildes does not match fildes.
-+
-+2003-07-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * timezone/zic.c (rpytime): Replace cheap overflow check with a
-+ functioning one.
-+
-+ * include/link.h (struct link_map): Add l_tls_firstbyte_offset field.
-+ * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset):
-+ Fix calculation of offsets to take misalignment of first byte in
-+ file into account.
-+ * elf/dl-load.c (_dl_map_object_from_fd): Initialize
-+ l_tls_firstbyte_offset field.
-+ * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise.
-+ * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int.
-+ Take l_tls_firstbyte_offset information into account.
-+ (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now.
-+ * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype.
-+ * elf/Makefile: Add rules to build and run tst-tls14.
-+ * elf/tst-tls14.c: New file.
-+ * elf/tst-tlsmod14a.c: New file.
-+ * elf/tst-tlsmod14b.c: New file.
-+
-+2003-07-23 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/lio_listio.c (LIO_OPCODE_BASE): Define.
-+ (lio_listio): Use it.
-+ * sysdeps/pthread/lio_listio64.c: Include lio_listio.c instead of
-+ after few defines to avoid duplication.
-+
-+2003-07-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/stdio.h (__libc_fatal): Add libc_hidden_proto.
-+ * include/dlfcn.h (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose):
-+ Likewise.
-+ * elf/dl-libc.c (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose):
-+ Add libc_hidden_def.
-+ * sysdeps/generic/libc_fatal.c (__libc_fatal): Likewise.
-+ * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise.
-+ * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Likewise.
-+ * elf/Versions (libc): Export __libc_dlopen_mode@@GLIBC_PRIVATE,
-+ __libc_dlsym@@GLIBC_PRIVATE and __libc_dlclose@@GLIBC_PRIVATE.
-+ * libio/Versions (libc): Export __libc_fatal@@GLIBC_PRIVATE.
-+ * sysdeps/generic/unwind-dw2.c: Readd #ifs removed during last
-+ change.
-+ * sysdeps/generic/unwind.inc: Removed.
-+
-+ * include/resolv.h (__resp): Declare. Define to __libc_resp
-+ if in libc.so.
-+ (_res): If USE___THREAD, define to (*__resp).
-+ * resolv/res_libc.c (_res): Normal .bss variable with compat_symbol
-+ even if USE___THREAD.
-+ (__resp): New __thread variable.
-+ (__libc_resp): New alias.
-+ * resolv/Versions (libc): Export _res@GLIBC_2.0 even if
-+ USE_TLS && HAVE___THREAD. Export __resp@@GLIBC_PRIVATE.
-+ * sysdeps/generic/res-state.c (__res_state): Return __resp
-+ if USE___THREAD.
-+
-+2003-07-22 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * elf/dl-support.c (_dl_hwcap): New variable.
-+ (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries.
-+
-+ * sysdeps/i386/fpu/fclrexcpt.c: Include <unistd.h>, <ldsodefs.h>
-+ and <dl-procinfo.h>.
-+ (__feclearexcept): Clear MXCSR if needed.
-+ * sysdeps/i386/fpu/fsetexcptflg.c: Likewise.
-+
-+ * sysdeps/i386/fpu_control.h (_FPU_GETCW, _FPU_SETCW): Document
-+ that newer hardware needs more than these macros.
-+
-+ * sysdeps/i386/setfpucw.c: New file.
-+
-+2003-07-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/Makefile (CFLAGS-ldconfig.c): Define IS_IN_ldconfig.
-+ * elf/ldconfig.c: Include dl-procinfo.c.
-+ (PROCINFO_CLASS): Define.
-+ * sysdeps/generic/ldsodefs.h (PROCINFO_CLASS): Define.
-+ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: New file.
-+ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: New file.
-+ * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (PROCINFO_CLASS):
-+ Define if not yet defined. Use it instead of EXTERN. Undefine
-+ at the end of the file.
-+ * sysdeps/unix/sysv/linux/arm/dl-procinfo.c (PROCINFO_CLASS):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c
-+ (PROCINFO_CLASS): Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c
-+ (PROCINFO_CLASS): Likewise.
-+
-+2003-07-22 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * elf/ldconfig.c (main): Issue a fatal error if relative path
-+ is used to build cache.
-+
-+2003-07-22 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/readlib.c (process_file): Avoid possible overflow in assignment.
-+
-+2003-07-21 Art Haas <ahaas@airmail.net>
-+
-+ * manual/charset.texi (Converting a Character): Fix example code so a
-+ valid pointer is returned.
-+
-+2003-07-22 Andreas Jaeger <aj@suse.de>
-+
-+ * elf/readlib.c (process_file): Check that file is a shared
-+ object.
-+
-+ * elf/sofini.c (__FRAME_END__): Use attribute used so that gcc
-+ will not optimize it away.
-+ (__DTOR_END__): Likewise.
-+ (__CTOR_END__): Likewise.
-+
-+ * include/libc-symbols.h (_elf_set_element): Use attribute used so
-+ that gcc will not optimize it away.
-+ (link_warning): Likewise.
-+
-+2003-07-22 Ulrich Drepper <drepper@redhat.com>
-+
-+ * wcsmbs/wcpncpy.c (__wcpncpy): Correct destination pointer handling.
-+ * wcsmbs/Makefile (tests): Add tst-wcpncpy.
-+ * wcsmbs/tst-wcpncpy.c: New file.
-+
-+2003-07-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_STOPPED): Define.
-+
-+ * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Reverse use of
-+ stmxcsr and ldmxcsr.
-+
-+ * Makerules (build-module-helper): Add -z defs unless explicitly said
-+ not to do it.
-+ * dlfcn/Makefile: Define various *-no-z-defs variables for test DSOs
-+ which has undefined symbols.
-+ * elf/Makefile: Likewise.
-+
-+ * sysdeps/i386/fpu/fedisblxcpt.c: Use dl_hwcap, not dl_hwcap_mask.
-+ * sysdeps/i386/fpu/feenablxcpt.c: Likewise.
-+ * sysdeps/i386/fpu/feholdexcpt.c: Likewise.
-+ * sysdeps/i386/fpu/fesetround.c: Likewise.
-+ * sysdeps/i386/fpu/ftestexcept.c: Likewise.
-+
-+2003-07-21 HJ Lu <hongjiu.lu@intel.com>
-+
-+ * elf/ldconfig.c (search_dir): Treat symlink as regular file
-+ if it won't point to itself.
-+
-+2003-07-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int.
-+
-+2003-07-20 Andreas Jaeger <aj@suse.de>
-+
-+ * iconvdata/cp932.c (BODY): STANDARD_ERR_HANDLER is now called
-+ STANDARD_TO_LOOP_ERR_HANDLER.
-+ * iconvdata/euc-jp-ms.c (BODY): Likewise.
-+
-+2003-07-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ZERO): Fix typo.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list: Remove affinity syscalls.
-+
-+2003-07-16 Daniel Jacobowitz <drow@mvista.com>
-+ Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to
-+ 256K, remove unneeded declaration of __getpagesize.
-+
-+2003-07-16 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/futimes.c: Include <string.h>.
-+
-+2003-07-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/test-utime.c (main): Make test yet more robust.
-+
-+2003-07-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ More cancellation handling fixups.
-+ * sysdeps/unix/sysv/linux/not-cancel.h: Add waitpid_not_cancel.
-+ * sysdeps/generic/not-cancel.h: Likewise.
-+ * catgets/open_catalog.c: Use not-cancelable syscalls.
-+ * time/Makefile (CFLAGS-getdate.c): Add -fexceptions.
-+ * sysdeps/unix/sysv/linux/llseek.c: Must not be cancelable.
-+ * sysdeps/unix/syscalls.list: Don't mark lseek as cancelable.
-+ * dlfcn/dlfcn.h: Mark dlopen with __THROW again.
-+ * io/fcntl.h: Don't mark posix_fallocate with __THROW.
-+ * libio/fileops.c: Use not-cancelable syscalls for fclose.
-+ * libio/iopopen.c: Use no-cancelable syscalls.
-+ * libio/stdio.h: Mark popen and pclose with __THROW again.
-+ * misc/Makefile (CFLAGS-syslog.c): Add -fexceptions.
-+ * misc/syslog.c: Fix locking and cancellation cleanup handling.
-+ * posix/unistd.h: Mark ttyname and ttyname_r again with __THROW.
-+ * stdio-common/Makefile (CFLAGS-tmpfile.c, CFLAGS-tmpfile64.c,
-+ CFLAGS-tempname.c): Add -fexceptions.
-+ * stdlib/Makefile (CFLAGS-mkstemp.c): Add -fexceptions.
-+ * string/string.h: Mark strerror and strerror_r with _THROW again.
-+ * sysdeps/generic/unwind.inc: New file. Copied from gcc.
-+ * sysdeps/generic/unwind-dw2.c: Update from gcc version. Remove
-+ #ifs since we now need all the code compiled.
-+ * sysdeps/posix/spawni.c: Use close_not_cancel instead of close.
-+ * sysdeps/unix/closedir.c: Use not-cancelable syscalls.
-+ * sysdeps/unix/opendir.c: Likewise.
-+
-+ * iconvdata/Makefile (modules): Add CP932 and EUC-JP-MS.
-+ Add rule for EUC-JP-MS dependency.
-+ * iconvdata/cp932.c: New file.
-+ * iconvdata/eucjp-ms.c: New file.
-+ * iconvdata/gconv-modules: Add entries for CP932 and EUC-JP-MS.
-+ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
-+
-+2003-07-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add
-+ cfi directives.
-+
-+2003-07-14 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_FIXED_CLONE_SYSCALL): New macro.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Use it.
-+
-+ * sysdeps/unix/sysv/linux/utimes.c: Include sysdep.h.
-+
-+2003-07-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_TGKILL for Alpha appropriately.
-+
-+2003-07-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/bits/statfs.h (_STATFS_F_FRSIZE): Define.
-+ * sysdeps/unix/sysv/linux/alpha/bits/statfs.h (_STATFS_F_FRSIZE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/statfs.h (_STATFS_F_FRSIZE):
-+ Likewise.
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_UTIMES for x86 and kernels > 2.5.75.
-+
-+ * sysdeps/unix/sysv/linux/futimes.c (__futimes): Handle case with
-+ second parameter == NULL.
-+ * sysdeps/unix/sysv/linux/utimes.c: New file.
-+
-+2003-07-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/futimes.c: Include kernel-features.h.
-+ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Fix
-+ a typo.
-+
-+2003-07-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * time/sys/time.h: Namespace cleanup.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_UTIMES for the architectures which always had the syscall.
-+ * sysdeps/unix/sysv/linux/futimes.c: New file.
-+
-+2003-07-12 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR
-+ register across CENABLE and CDISABLE.
-+
-+2003-07-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sigwait.c: Include string.h.
-+ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sleep.c (__sleep): Cast value to unsigned
-+ int before assigning to max to avoid warnings.
-+
-+2003-07-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (__socket): Add
-+ cfi directives.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise.
-+
-+2003-07-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of
-+ .data.rel.ro.local to "aw".
-+
-+2003-07-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/m68k/Makefile: Remove CLFAGS-.oS addition.
-+ * Makeconfig (CFLAGS-.oS): Use PIC-ccflag instead of pic-ccflag.
-+ (PIC-ccflag): Define.
-+
-+2003-07-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/s390/s390-32/elf/start.S: Emit position independent code
-+ if PIC.
-+ * sysdeps/s390/s390-64/elf/start.S: Likewise.
-+
-+2003-07-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
-+ into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
-+
-+2003-07-07 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Version
-+ __ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible.
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for
-+ compilation with HAVE_AUX_SECURE defined.
-+
-+2003-07-05 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end.
-+
-+2003-07-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * configure.in: Also check for .cfi_rel_offset pseudo-op.
-+
-+2003-07-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a
-+ typo.
-+
-+2003-07-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_CLKTCK):
-+ Define.
-+ * sysdeps/unix/sysv/linux/prof-freq.h: New file.
-+
-+2003-07-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo
-+ decl and use with #ifdef NEED_DL_SYSINFO.
-+
-+2003-07-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set
-+ GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the
-+ vsyscall DSO was added.
-+
-+ * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0
-+ depending on selected standard.
-+ (NGROUPS_MAX): Define to 8 if not defined.
-+
-+2003-07-02 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file.
-+
-+2003-05-04 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * malloc/arena.c (arena_get2): Add atomic_write_barrier.
-+ * malloc/thread-m.h: Include <atomic.h>.
-+ (atomic_full_barrier): Provide default.
-+ (atomic_read_barrier): Likewise.
-+ (atomic_write_barrier): Likewise.
-+ * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define.
-+
-+2003-06-30 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.
-+
-+2003-06-30 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int):
-+ Invert the sense of the return value.
-+ (__arch_exchange_16_int): Fix paste-o.
-+ (__arch_exchange_{32,64}_int): Fix think-o.
-+
-+ * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly.
-+
-+2003-06-30 Richard Henderson <rth@redhat.com>
-+
-+ * include/sys/resource.h (__getrusage): Mark hidden.
-+ * include/sys/time.h (__settimeofday, __setitimer, __utimes): Likewise.
-+ * include/sys/wait.h (__wait4): Likewise.
-+
-+2003-06-17 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/xstatconv.c: Handle STAT_IS_KERNEL_STAT
-+ case.
-+ (xstat_conv): Rename to __xstat_conv and remove static inline.
-+ (xstat64_conv): Likewise.
-+
-+2003-06-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter
-+ values which cannot be handled in one nanosleep call.
-+
-+2003-06-25 Alfred M. Szmidt <ams@kemisten.nu>
-+
-+ * sysdeps/generic/bits/in.h (IPV6_HOPOPTS, IPV6_DSTOPTS): New macros.
-+ (IPV6_RXHOPOPTS, IPV6_RXDSTOPTS): Use them.
-+
-+ * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: Typo fix.
-+
-+2003-06-04 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header,
-+ fix typo.
-+
-+2003-06-26 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/xstatconv.h [!STAT_IS_KERNEL_STAT]:
-+ Conditionalize function definitions that use struct kernel_stat.
-+ * sysdeps/unix/sysv/linux/fxstat.c: Remove __syscall_fstat extern.
-+ * sysdeps/unix/sysv/linux/lxstat.c: Remove __syscall_lstat extern.
-+ * sysdeps/unix/sysv/linux/xstat.c: Remove __syscall_stat extern.
-+
-+2003-06-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real
-+ implementation.
-+
-+2003-06-07 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * nis/nss_compat/compat-grp.c: Remove unused nis_first variable.
-+ (getgrent_next_file): Don't store group name to early in blacklist.
-+
-+ * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Save strlen result
-+ and use memcpy instead of strcpy.
-+
-+2003-06-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nis/nss_compat/compat-grp.c: Optimize several little things. Use
-+ stream unlocked.
-+ * nis/nss_compat/compat-initgroups.c: Likewise.
-+ * nis/nss_compat/compat-pwd.c: Likewise.
-+ * nis/nss_compat/compat-spwd.c: Likewise.
-+
-+2003-06-27 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+
-+ functions, dlopen corresponding NSS module instead.
-+
-+2003-06-27 Jeroen Dekkers <jeroen@dekkers.cx>
-+
-+ * sysdeps/mach/hurd/alpha/init-first.c: Remove call to __libc_init.
-+ * sysdeps/mach/hurd/i386/init-first.c: Likewise.
-+ * sysdeps/mach/hurd/mips/init-first.c: Likewise.
-+ * sysdeps/mach/hurd/powerpc/init-first.c: Likewise.
-+
-+2003-06-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/Makefile (CFLAGS-librt-cancellation.c): Define.
-+
-+2003-06-26 Roland McGrath <roland@frob.com>
-+
-+ * sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME.
-+ * sysdeps/mach/configure: Regenerated.
-+ * sysdeps/mach/hurd/times.c (times_init): Function removed.
-+ (__times): Assume `creation_time' field is available.
-+ * sysdeps/mach/hurd/Makefile [$(subdir) = csu] (sysdep_routines):
-+ Don't append set-init.
-+ * sysdeps/mach/hurd/set-init.c: File removed.
-+
-+2003-06-26 Roland McGrath <roland@redhat.com>
-+
-+ * elf/elf.h (AT_SECURE): New macro.
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Grok it,
-+ set __libc_enable_secure.
-+ (_dl_show_auxv): Add AT_SECURE to name table.
-+ * elf/dl-support.c (_dl_aux_init): Grok AT_SECURE, set
-+ __libc_enable_secure and __libc_enable_secure_decided.
-+ * sysdeps/unix/sysv/linux/ldsodefs.h
-+ [__ASSUME_AT_SECURE] (HAVE_AUX_SECURE): Define it.
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ [__LINUX_KERNEL_VERSION >= 132426] (__ASSUME_AT_SECURE): Define it.
-+
-+2003-06-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * io/test-utime.c: If _STATBUF_ST_NSEC is defined, adjust lower
-+ boundary test to take rounding of nanoseconds into account.
-+
-+ * sysdeps/unix/sysv/linux/bits/stat.h: Define _STATBUF_ST_NSEC.
-+ * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
-+ * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
-+
-+2003-06-26 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/fpu/bits/mathinline.h: Don't inline frexp.
-+ * sysdeps/m68k/fpu/s_frexp.c: Put implementation here.
-+ * sysdeps/m68k/fpu/s_frexpl.c: Fix to handle unnormalized numbers.
-+
-+2003-06-17 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * nis/Makefile: Remove NIS/NIS+ files from nss_compat module.
-+ * nis/nss_compat/compat-grp.c: Don't use our own NIS/NIS+ functions,
-+ dlopen corresponding NSS module instead.
-+ * nis/nss_compat/compat-pwd.c: Likewise.
-+ * nis/nss_compat/compat-spwd.c: Likewise.
-+ * nis/nss_compat/compat-initgroups.c: Disabled for now.
-+ * nss/Versions: Export __nss_lookup_function.
-+
-+2003-06-19 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features
-+ for the SH architecture.
-+
-+2003-06-25 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * csu/Makefile: Use CPPFLAGS to find correct linux/version.h.
-+
-+2003-06-25 Andreas Jaeger <aj@suse.de>
-+
-+ * stdlib/tst-strtod.c (main): Declare constant long double as
-+ suggested by Jakub Jelinek and Andreas Schwab.
-+
-+ * posix/tst-nanosleep.c: Include <time.h> for nanosleep
-+ declaration.
-+
-+ * stdio-common/tst-fphex.c: Fix format string.
-+
-+ * posix/transbug.c: Include <string.h> for memset and strlen
-+ declarations.
-+
-+ * stdio-common/tst-sprintf.c: Include <stdlib.h> for free declaration.
-+
-+ * stdlib/tst-strtod.c (main): Pass long double value.
-+
-+ * test-skeleton.c: Include <time.h> for nanosleep declaration.
-+
-+2003-06-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is
-+ defined.
-+
-+2003-06-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/Versions (libc): Add _dl_open_hook@GLIBC_PRIVATE.
-+ * elf/dl-libc.c (struct dl_open_hook): New.
-+ (_dl_open_hook): New variable.
-+ (do_dlsym_private): New function.
-+ (__libc_dlopen_mode) [!SHARED]: Lookup _dl_open_hook@GLIBC_PRIVATE
-+ and initialize it if found.
-+ (__libc_dlopen_mode) [SHARED]: If _dl_open_hook is non-NULL,
-+ call dlopen_mode hook.
-+ (__libc_dlsym) [SHARED]: If _dl_open_hook is non-NULL,
-+ call dlsym hook.
-+ (__libc_dlclose) [SHARED]: If _dl_open_hook is non-NULL,
-+ call dlclose hook.
-+
-+2003-06-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/cris/sysdep.h (INLINE_SYSCALL): Cast
-+ result to long int so that extensions to long long int work.
-+ Patch by Uwe Reimann <libc-alpha@pulsar.homelinux.net>.
-+
-+2003-06-19 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/ldconfig.c (main): Use add_system_dir instead of add_dir.
-+ * sysdeps/generic/dl-cache.h (add_system_dir): Define.
-+ * sysdeps/unix/sysv/linux/x86_64/dl-cache.h: Include sparc
-+ dl-cache.h.
-+ * sysdeps/unix/sysv/linux/s390/dl-cache.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/dl-cache.h: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/dl-cache.h: New file.
-+ * sysdeps/unix/sysv/linux/sparc/dl-cache.h: New file.
-+
-+2003-06-19 Jakub Jelinek <jakub@redhat.com>
-+
-+ * test-skeleton.c (timeout_handler): If waitpid returned 0,
-+ retry once after a second. If killed == 0, assume
-+ WTERMSIG (status) == SIGKILL.
-+
-+2003-06-18 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized
-+ elements in the table instead of printing an empty name string.
-+
-+2003-06-05 Roland McGrath <roland@redhat.com>
-+
-+ * elf/elf.h (PT_GNU_STACK): New macro.
-+
-+2003-06-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/time.h: Define CLOCK_IDFIELD_SIZE.
-+ * sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs.
-+ * sysdeps/unix/clock_gettime.c: Likewise.
-+ * sysdeps/unix/clock_settime.c: Likewise.
-+ * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new
-+ clock id for thread CPU clocks.
-+
-+ * sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support
-+ for the fstatfs64 syscall.
-+ * sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for
-+ the statfs64 syscall.
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_STATFS64 appropriately.
-+
-+ * sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field
-+ from statfs structure if it has been filled in.
-+
-+ * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize
-+ field.
-+ (struct statfs64): Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise.
-+
-+2003-06-24 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/syscalls.list (pread, pwrite): Use
-+ the 64-bit syscall name.
-+
-+ * sysdeps/alpha/setjmp.S (_setjmp, setjmp): Mark .prologue.
-+
-+ * sysdeps/alpha/fpu/bits/mathinline.h: Honor
-+ __LIBC_INTERNAL_MATH_INLINES. Implement __signbitf, __signbit.
-+
-+ * sysdeps/unix/sysv/linux/alpha/clone.S: Use HIDDEN_JUMPTARGET.
-+ * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use
-+ libc_hidden_def.
-+ * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/setfpucw.c: Use libc_hidden_proto
-+ on them.
-+
-+ * sysdeps/alpha/bits/atomic.h: New file.
-+
-+2003-06-24 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/fpu/libm-test-ulps: Update.
-+
-+2003-06-24 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid
-+ redeclaration with 32-bit code.
-+
-+2003-05-19 Ed Connell <ed.connell@sas.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain
-+ floating point mask.
-+ * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise.
-+
-+2003-06-23 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex,
-+ __aio_enqueue_request, __aio_find_req, __aio_find_req_fd,
-+ __aio_free_request, __aio_notify, and __aio_sigqueue as hidden.
-+
-+ * sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result
-+ of pthread_cond_wait if there was an error. Use pthread_cleanup_*
-+ instead of __libc_cleanup_region_*.
-+
-+2003-06-20 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/unix/make-syscalls.sh: Implement ! prefix for strong aliases.
-+ * sysdeps/unix/sysv/linux/alpha/syscalls.list (open, open64): New.
-+
-+2003-06-20 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL1): Use __builtin_expect.
-+ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT)
-+ Unset for alpha.
-+ (__ASSUME_TIMEVAL64): Set for alpha.
-+ * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove
-+ adjtimex, osf_sigprocmask, old_adjtimex.
-+ * sysdeps/unix/sysv/linux/alpha/adjtime.c: Use INLINE_SYSCALL,
-+ __ASSUME_TIMEVAL64. Reorg tv64 functions to avoid uninit variable.
-+ * sysdeps/unix/sysv/linux/alpha/getitimer.S: Use __ASSUME_TIMEVAL64.
-+ * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/select.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Streamline
-+ PIC code sequence.
-+ * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/sigaction.c: New file.
-+ * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: Use INLINE_SYSCALL.
-+ * sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove osf_sigprocmask,
-+ sys_ustat, sys_mknod, adjtimex, old_adjtimex.
-+ * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL): Don't
-+ defer to __syscall_name; error for rt_sigaction.
-+ * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Include kernel_stat.h.
-+
-+2003-06-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * malloc/malloc.c (public_mALLINFo): Initialize malloc if it
-+ hasn't happened yet.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
-+ Fix completely broken implementation. The second parameter is of
-+ type struct ucontext*.
-+
-+ * sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup): Always
-+ inline.
-+
-+ * sysdeps/i386/i686/dl-hash.h: Don't inline _dl_elf_hash.
-+ * sysdeps/generic/dl-hash.h: Likewise.
-+
-+ * sysdeps/generic/memcmp.c: Remove inline from
-+ memcmp_common_alignment and memcmp_not_common_alignment definition.
-+
-+ * intl/localealias.c (read_alias_file): Determine whether line is
-+ read incompletely early, before we modify the line.
-+
-+2003-06-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela)
-+ <case R_PPC64_DTPREL64>: Don't segfault on undefined symbols.
-+
-+2003-06-17 Paul Mackerras <paulus@samba.org>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: New file.
-+ * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Adjust.
-+
-+2003-06-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * posix/regcomp.c (build_word_op): Use alnum instead of alpha class.
-+
-+2003-06-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): nanosleep
-+ takes care of enabling cancellation.
-+
-+ * sysdeps/pthread/aio_suspend.c (aio_suspend): Make aio_suspend
-+ cancelable. It's not correct to disable cancellation. Instead of
-+ a cleanup handler.
-+
-+ * sysdeps/unix/sysv/linux/sigtimedwait.c: If SIGCANCEL is defined
-+ and part of the incoming set, create a temporary set without this
-+ signal.
-+ * sysdeps/unix/sysv/linux/sigwait.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before
-+ returning because seconds==0. Add __builtin_expect.
-+
-+2003-06-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/socket.S: Add unwind information.
-+
-+ * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Fix type of result
-+ variable.
-+
-+2003-06-16 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * include/libc-symbols.h: Add static_link_warning macro.
-+ * grp/initgroups.c: Print linker warning if this function
-+ is called in a static linked binary.
-+ * nss/getXXbyYY.c: Likewise.
-+ * nss/getXXbyYY_r.c: Likewise.
-+ * nss/getXXent.c: Likewise.
-+ * nss/getXXent_r.c: Likewise.
-+ * sysdeps/posix/getaddrinfo.c: Likewise.
-+
-+2003-06-16 Bruno Haible <bruno@clisp.org>
-+
-+ * iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15,
-+ LATIN-9.
-+ (ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16.
-+ (IBM1047): Add alias IBM-1047.
-+ (GBK): Add aliases MS936, WINDOWS-936.
-+
-+2003-06-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if
-+ defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64.
-+ (__xstat64_conv): Change xstat_conv to __xstat_conv.
-+
-+2003-06-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locale/iso-639.def: Update from current official ISO 639.
-+
-+ * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed.
-+
-+2003-06-15 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Correct setting
-+ of MXCSR.
-+ * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise.
-+ * sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise.
-+ Reported by Arnaud Desitter <arnaud.desitter@geography.oxford.ac.uk>.
-+
-+ * math/tgmath.h (carg): Handle real arguments.
-+ (conj): Likewise.
-+ (cproj): Likewise.
-+ (cimag): Likewise.
-+ (creal): Likewise.
-+
-+ * math/Makefile (CFLAGS-test-tgmath-ret.c): New.
-+ (tests): Add test-tgmath-ret.
-+ * math/test-tgmath-ret.c: New file.
-+
-+ * math/tgmath.h (ilogb): Return always an int.
-+
-+2003-06-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr
-+ computation so that prelinking works.
-+
-+2003-06-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic
-+ linker's map.
-+ * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the
-+ dynamic linker's map.
-+
-+ Fix cancellation point handling wrt exception based cleanup.
-+ * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions.
-+ * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c
-+ with exceptions.
-+ * posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c,
-+ sleep.c, wait.c, waitid.c, and waitpid.c with exceptions.
-+ * rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with
-+ exceptions.
-+ * signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c,
-+ sigwait.c, and sigwaitinfo.c with exceptions.
-+ * stdlib/Makefile: Compile system.c with exceptions.
-+ * sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions.
-+ * termios/Makefile: Compile tcdrain.c with exceptions.
-+ * sysdeps/generic/lockf.c: Add comment explaining the cancellation
-+ situation.
-+ * sysdeps/generic/pselect.c: Likewise.
-+ * sysdeps/posix/sigpause.c: Likewise.
-+ * sysdeps/posix/system.c: Likewise.
-+ * sysdeps/posix/waitid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sleep.c: Likewise.
-+ * sysdeps/unix/sysv/linux/usleep.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of
-+ INTERNAL_SYSCALL to not use push inside asm statement so that
-+ unwind info is correct around the syscall.
-+ * sysdeps/unix/clock_nanosleep.c: Add cancellation support.
-+ * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise.
-+
-+2003-06-15 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
-+ Add CFI directives.
-+
-+2003-06-15 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and
-+ create $(objpfx).
-+
-+2003-06-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Use __close,
-+ not close.
-+
-+ * inet/inet6_option.c (inet6_option_alloc): Add libc_hidden_def.
-+ * include/netinet/in.h (inet6_option_alloc): Add libc_hidden_proto
-+ definition.
-+
-+ * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define.
-+ * inet/netinet/in.h: Add prototypes for inet6_option_* functions.
-+ * inet/Makefile (routines): Add inet6_option.
-+ * inet/inet6_option.c: New file.
-+ * inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space,
-+ inet6_option_init, inet6_option_append, inet6_option_alloc,
-+ inet6_option_next, and inet6_option_find.
-+
-+2003-06-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * inet/netinet/ip6.h (struct ip6_ext): Define.
-+
-+ * sysdeps/unix/sysv/linux/sys/param.h (howmany): Optimize for gcc.
-+
-+ Fixing gcc 3.3 warnings, part II.
-+ * argp/argp-help.c (hol_entry_long_iterate): Always inline.
-+ * elf/dl-load.c (cache_rpath): Don't inline.
-+ * iconvdata/cns11642l2.h: Always inline all functions.
-+ * iconvdata/iso-ir-165.h: Likewise.
-+ * locale/Makefile (aux): Add coll-lookup.
-+ * locale/coll-lookup.c: New file.
-+ * locale/coll-lookup.h (collidx_table_lookup): Do not define here.
-+ (collseq_table_lookup): Likewise.
-+ * locale/weightwc.h: Adjust collidx_table_lookup calls for name change.
-+ * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name
-+ change.
-+ * posix/regcomp.c: Likewise.
-+ * posix/regexec.c: Likewise.
-+ * locale/programs/3level.h (*_get): Always inline.
-+ * locale/programs/locfile.h: Move definition of handle_copy to...
-+ * locale/programs/locfile.c: ...here.
-+ * locale/programs/ld-collate.c (obstack_int32_grow): Always inline.
-+ (obstack_int32_grow_fast): Likewise.
-+ (utf8_encode): Likewise.
-+ (find_element): Avoid aliasing problems.
-+ (insert_value): Likewise.
-+ (collate_read): Likewise.
-+ * nss/getent.c (print_hosts): Don't inline
-+ (print_networks): Likewise.
-+ (print_shadow): Likewise.
-+ (build_doc): Likewise.
-+ * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't
-+ inline.
-+ * posix/regcomp.c (re_set_fastmap): Always inline.
-+ (seek_collating_symbol_entry): Likewise.
-+ (lookup_collation_sequence_value): Likewise.
-+ (build_range_exp): Likewise.
-+ (build_collating_symbol): Likewise.
-+ * posix/regexec.c (acquire_init_state_context): Don't inline.
-+ (clean_state_log_if_need): Likewise.
-+ * resolv/res_send.c (eConsIovec): Rewrite to not return struct and
-+ adjust all callers.
-+ (evConsTime): Likewise.
-+ (evAddTime): Likewise.
-+ (evSubTime): Likewise.
-+ (evNowTime): Likewise.
-+ (evTimeSpec): Removed.
-+ (__libc_res_nsend): Avoid aliasing problem.
-+ * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to..
-+ * sysdeps/unix/sysv/linux/ifreq.c: ...here.
-+ * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap):
-+ Always inline.
-+ (_dl_string_platform): Likewise.
-+ * wctype/wchar-lookup.h (wctype_table_lookup): Always inline.
-+ (wcwidth_table_lookup): Likewise.
-+ (wctrans_table_lookup): Likewise.
-+
-+ * sysdeps/unix/sysv/linux/sys/epoll.h: Include <stdint.h>.
-+
-+2003-06-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034].
-+
-+2003-05-29 Jim Meyering <jim@meyering.net>
-+
-+ * time/strftime.c (my_strftime) [!defined _NL_CURRENT
-+ && HAVE_STRFTIME]: Use underlying_strftime for %r.
-+ Suggested by Daniel Yacob <locales@geez.org>.
-+
-+2003-06-12 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Replace
-+ @got notation with @toc.
-+ * sysdeps/powerpc/powerpc64/sysdep.h (CALL_MCOUNT): Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Likewise.
-+
-+2003-06-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date also
-+ if only PF_INET address is needed.
-+
-+ * nss/getXXbyYY_r.c: Make sure we always return a nonzero value in
-+ case of an error.
-+
-+ * scripts/config.guess: Update from upstream version.
-+ * scripts/config.sub: Likewise.
-+
-+2003-06-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * locale/programs/ld-time.c (time_output): Also copy the era format,
-+ not only the name.
-+
-+2003-06-12 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * posix/transbug.c (run_test): Return 1 for failure.
-+ (do_test): Compare only if run_test is successful.
-+
-+2003-06-12 Simon Josefsson <jas@extundo.com>
-+
-+ * argp/argp.h [!__THROW]: Define if undefined.
-+
-+2003-06-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with
-+ more than four parameters.
-+ Patch by Uwe Reimann <libc-alpha@pulsar.homelinux.net>.
-+
-+2003-06-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file.
-+ * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: New file.
-+
-+ * stdio-common/printf-parsemb.c: Include stdlib.h and sys/param.h.
-+
-+2003-06-12 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules ($(objpfx)stubs): Rewrite sed magic.
-+
-+2003-02-28 Isamu Hasegawa <isamu@yamato.ibm.com>
-+
-+ * posix/regcomp.c (parse_expression): Deliver translation to
-+ build_word_op, and build_charclass.
-+ (build_charclass): Apply translation for character classes too.
-+ (build_word_op): Deliver translation to build_charclass.
-+ * posix/transbug.c: New file.
-+ * posix/Makefile (tests): Add transbug.
-+
-+2003-06-04 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * posix/regexec.c (group_nodes_into_DFAstates): Check for
-+ NEXT_ENDBUF_CONSTRAINT. Move check for constraints which do a
-+ 'continue' before the others.
-+
-+2003-06-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * dirent/scandir.c (SCANDIR): Reset errno after calling selector
-+ function [PR libc/5045].
-+
-+ * sysdeps/i386/bits/byteswap.h (__bswap_32): Use bswap instruction
-+ also for P4.
-+
-+ * time/tzfile.c: Add a couple of __builtin_expect.
-+
-+ Remove warnings gcc 3.3 shows.
-+ * argp/argp-help.c (hol_entry_short_iterate): Don't inline.
-+ * elf/dl-load.c (fillin_rpath): Likewise.
-+ (add_path): Likewise.
-+ * elf/dl-version.c (find_needed): Always inline.
-+ * elf/do-lookup.c (FCT): Don't inline.
-+ * iconv/Makefile: Extend vpath to intl subdir.
-+ (iconvconfig-modules): Add hash-string.
-+ * iconv/gconv_charset.h (strip): Don't inline.
-+ (upstr): Always inline.
-+ Move __gconv_compare_alias prototype to...
-+ * iconv/gconv_int.h: ...here.
-+ * iconv/gconv_db.c: Don't include gconv_charset.h.
-+ * iconv/gconv_conf.c (add_alias): Don't inline.
-+ (insert_module): Likewise.
-+ * iconv/gconv_simple.c (internal_ucs4_loop): Always inline.
-+ (internal_ucs4_loop_unaligned): Likewise.
-+ (internal_ucs4_loop_single): Likewise.
-+ (ucs4_internal_loop): Likewise.
-+ (ucs4_internal_loop_unaligned): Likewise.
-+ (ucs4_internal_loop_single): Likewise.
-+ (internal_ucs4le_loop): Always inline.
-+ (internal_ucs4le_loop_unaligned): Likewise.
-+ (internal_ucs4le_loop_single): Likewise.
-+ (ucs4le_internal_loop): Likewise.
-+ (ucs4le_internal_loop_unaligned): Likewise.
-+ (ucs4le_internal_loop_single): Likewise.
-+ * iconv/loop.c: Always inline the defined functions.
-+ * iconvdata/cns11642.h: Likewise.
-+ * iconvdata/cns11642l1.h: Likewise.
-+ * iconvdata/euc-kr.c: Likewise.
-+ * iconvdata/gb2312.h: Likewise.
-+ * iconvdata/jis0201.h: Likewise.
-+ * iconvdata/jis0208.h: Likewise.
-+ * iconvdata/jis0212.h: Likewise.
-+ * iconvdata/jisx0213.h: Likewise.
-+ * iconvdata/ksc5601.h: Likewise.
-+ * iconvdata/utf-7.c (base64): Don't inline.
-+ * include/libc-symbols.h (symbol_set_first_element): Add cast
-+ (symbol_set_end_p): Likewise.
-+ * include/set-hooks (RUN_HOOK): Likewise.
-+ * inet/Makefile (aux): Add ifreq.
-+ * intl/Makefile (aux): Add some entries from routines. Add
-+ hash-string.
-+ * intl/hash-string.c: New file.
-+ * intl/hash-string.h: Remove hash_string definition. Declare
-+ __hash_string.
-+ * iconv/gconv_cache.c (find_module_idx): Adjust hash_string caller.
-+ * iconv/iconvconfig.c (new_name): Likewise.
-+ * intl/dcigettext.c (_nl_find_msg): Likewise.
-+ * intl/loadmsgcat.c (_nl_load_domain): Likewise.
-+ * io/ftw.c (open_dir_stream): Always inline.
-+ (process_entry): Don't inline.
-+ * locale/findlocale.c: Include gconv_int.h.
-+ * locale/setlocale.c (new_composite_name): Don't inline.
-+ * locale/weight.h (findidx): Always inline.
-+ * locale/weightwc.h (findidx): Likewise.
-+ * locale/programs/linereader.c (lr_ignore_rest): Define here.
-+ * locale/programs/linereader.h (lr_ignore_rest): Don't define here,
-+ just declare it.
-+ (lr_getc): Always inline.
-+ (lr_ungetc): Likewise.
-+ * nss/nss_files/files-parse.c (parse_list): Likewise.
-+ * stdio-common/Makefile (aux): Add printf-parsemb and
-+ printf-parsewc.
-+ * stdio-common/_itoa.h (_itoa_word): Always inline.
-+ (_fitoa_word, _fitoa): Don't define here, only declare.
-+ * stdio-common/_itoa.c (_iftoa_word): Add here.
-+ (_fitoa): Likewise.
-+ * stdio-common/_itowa.h (_itowa_word): Always inline.
-+ * stdio-common/printf-parse.h (read_int): Don't inline.
-+ (find_spec): Don't define.
-+ Declare __find_specmb and __find_specwc.
-+ (parse_one_spec): Don't define.
-+ Declare __parse_one_specmb and __parse_one_specwc.
-+ * stdio-common/printf-parsemb.c: New file.
-+ * stdio-common/printf-parsewc.c: New file.
-+ * stdio-common/vfprintf.c: Update calls to find_spec and
-+ parse_one_spec for new names.
-+ * stdio-common/printf-prs.c: Likewise. Define DONT_NEED_READ_INT.
-+ * stdlib/Makefile (aux): Add grouping and groupingwc.
-+ * stdlib/grouping.c: New file.
-+ * stdlib/groupingwc.c: New file.
-+ * stdlib/grouping.h (correctly_grouped_prefix): Don't define here.
-+ Just prototype.
-+ * stdlib/rpmatch.c (try): Don't inline.
-+ * stdlib/strtod.c (round_and_return): Don't line.
-+ (str_to_mpn): Likewise.
-+ (__mpn_lshift_1): Always inline. Optimize only for constant count.
-+ Adjust for name change of correctly_grouped_prefix.
-+ * sysdeps/generic/strtol.c: Adjust for name change of
-+ correctly_grouped_prefix.
-+ * string/strxfrm.c (utf8_encode): Don't inline.
-+ * sysdeps/generic/dl-cache.c: Define _dl_cache_libcmp.
-+ * sysdeps/generic/dl-cache.h: Just declare _dl_cache_libcmp.
-+ * sysdeps/generic/ifreq.c: New file.
-+ * sysdeps/unix/sysv/linux/ifreq.c: New file.
-+ * sysdeps/generic/ifreq.h (__ifreq): Only declare here.
-+ * sysdeps/unix/sysv/linux/ifreq.h: Likewise.
-+ * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Always inline.
-+ * sysdeps/generic/unwind-dw2-fde.c (start_fde_sort): Don't inline.
-+ (fde_split): Likewise.
-+ (fde_merge): Likewise.
-+ (end_fde_sort): Likewise.
-+ (init_object): Likewise.
-+ (binary_search_unencoded_fdes): Likewise.
-+ (binary_search_single_encoding_fdes): Likewise.
-+ (binary_search_mixed_encoding_fdes): Likewise.
-+ * sysdeps/generic/wordexp.c (w_addchar): Don't inline.
-+ * sysdeps/i386/dl-machine.c (elf_machine_runtime_setup): Always inline.
-+ * sysdeps/posix/sprofil.c (profil_count): Don't inline.
-+ * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
-+ Add xstatconv.
-+ * sysdeps/unix/sysv/linux/xstatconv.h: New file.
-+ * sysdeps/unix/sysv/linux/xstatconv.c: Don't inline the function.
-+ Export them. Prepend __ to name.
-+ * sysdeps/unix/sysv/linux/Dist: Add xstatconv.h.
-+ * sysdeps/unix/sysv/linux/fxstat.c: Adjust for name change of
-+ conversion functions.
-+ * sysdeps/unix/sysv/linux/fxstat64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/lxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/lxstat64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/xstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/xstat64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max,
-+ __statfs_filesize_max, __statfs_symlinks): Define here. __ prepended
-+ to name. Change callers.
-+ * sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max,
-+ __statfs_filesize_max, __statfs_symlinks): Don't define here, just
-+ declare.
-+ * sysdeps/unix/sysv/linux/fpathconf.c: Change all callers.
-+ * time/tzfile.c (decode): Always inline.
-+ * wcsmbs/wcsnrtombs.c: Change type of inbuf to unsigned char*.
-+ Remove cast in tomb function call.
-+ * wcsmbs/wcsrtombs.c Likewise.
-+ * wcsmbs/wcstob.c: Introduce new temp variable to take pointer in
-+ tomb function call.
-+
-+2003-06-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * po/zh_CN.po: Update from translation team.
-+
-+2003-06-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/bits/in.h (IPV6_V6ONLY, IPV6_JOIN_ANYCAST,
-+ IPV6_LEAVE_ANYCAST, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY): Define.
-+
-+2003-06-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * inet/Makefile (aux): Add check_pf.
-+ * include/ifaddrs.h: Add prototype for __check_pf.
-+ * sysdeps/generic/check_pf.c: New file.
-+ * sysdeps/unix/sysv/linux/check_pf.c: New file.
-+ * sysdeps/unix/sysv/linux/ifaddrs.h (__no_netlink_support): Renamed
-+ from no_netlink_support. Export.
-+ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't call getifaddrs,
-+ call __check_pf.
-+
-+ * sysdeps/generic/ifaddrs.h: Add libc_hidden_def.
-+
-+ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't leak memory
-+ from getifaddr calls.
-+
-+2003-06-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_SETRESGID_SYSCALL): Define.
-+ * sysdeps/unix/sysv/linux/setegid.c: Use __ASSUME_SETRESGID_SYSCALL
-+ instead of __ASSUME_SETRESUID_SYSCALL.
-+ (setegid): Only use setresgid32 inline syscall if __NR_setresgid32 is
-+ defined.
-+ * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Only use setresgid32
-+ inline syscall if __NR_setresuid32 is defined.
-+ * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use
-+ __ASSUME_SETRESGID_SYSCALL instead of __ASSUME_SETRESUID_SYSCALL.
-+ * sysdeps/unix/sysv/linux/i386/setregid.c: Backout last changes.
-+ * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c (setegid): Protect
-+ code handling non-existant setresgid32 syscall with
-+ #if __ASSUME_SETRESGID_SYSCALL == 0.
-+
-+2003-06-09 Andreas Schwab <schwab@suse.de>
-+
-+ * sunrpc/Makefile (generated): Remove rpc-proto.c, rpc-proto.d.
-+ ($(rpcsvc:%.x=$(objpfx)x%$o)): Don't depend on
-+ $(objpfx)rpc-proto.d.
-+ (rpcsvc-dt-files, rpcsvc-depfiles): Define. Include
-+ $(rpcsvc-depfiles) instead of $(objpfx)rpc-proto.d.
-+ ($(objpfx)rpc-proto.d, $(objpfx)rpc-proto.c): Remove rules.
-+
-+2003-06-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Use setresuid32
-+ syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is
-+ defined drop compatibility code.
-+ * sysdeps/unix/sysv/linux/setegid.c (setegid): Use setresgid32
-+ syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is
-+ defined drop compatibility code.
-+ * sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Use
-+ setresuid32 syscall directly if possible.
-+ * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use
-+ setresgid32 syscall directly if possible.
-+ * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Make POSIX
-+ compliant. Don't change sgid.
-+ * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Make POSIX
-+ compliant. Don't change suid.
-+
-+ * config.h.in: Add have-forced-unwind.
-+ * configure.in: Add AC_SUBST(libc_cv_forced_unwind).
-+
-+2003-06-07 Ulrich Drepper <drepper@redhat.com>
-+
-+ * test-skeleton.c (main): If EXPECTED_STATUS is defined check that
-+ returned status from child matches.
-+
-+ * Makeconfig (gnulib): Add -lgcc_eh once again.
-+
-+2003-06-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * test-skeleton.c (main): Use TEMP_FAILURE_RETRY with waitpid.
-+
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Only allow
-+ %edx for first parameter. This means no pushl and therefore the
-+ unwind info isn't screwed up.
-+
-+2003-06-04 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/alpha/dl-machine.h (RTLD_START): Fix top-of-stack backtrace.
-+ * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
-+ * sysdeps/alpha/elf/start.S: Likewise. Remove pointless allocation.
-+ * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use standard ldgp
-+ entry sequence and explicit relocs. Add unwind info for sigreturn
-+ and rt_sigreturn.
-+ * configure.in (libc_cv_asm_cfi_directives): Test .cfi_remember_state.
-+
-+ * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): New.
-+ Annotate some parameters.
-+ * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_semtimedop): New.
-+
-+ * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Fix typo in conversion.
-+
-+ * include/libc-symbols.h (symbol_set_declare): Use arrays
-+ of unspecified size.
-+
-+2003-06-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * config.make.in (ASFLAGS-config): New.
-+ * Makeconfig (ASFLAGS): Append $(ASFLAGS-config).
-+ * configure.in (libc_cv_as_noexecstack): New check.
-+ (ASFLAGS_config): Substitute.
-+
-+2003-06-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh,
-+ hypot, logb): Protect with #ifdef __FAST_MATH__.
-+
-+2003-06-04 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with
-+ #ifdef __FAST_MATH__.
-+
-+2003-06-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/glob.c [HAVE_D_TYPE] (glob_in_dir): Also allow
-+ DT_LNK entries if GLOB_ONLYDIR is set [PR libc/5043].
-+ * posix/globtest.sh: Adjust for this change.
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname
-+ to get the actual PID value used in the records passed up.
-+ (getifaddrs): Don't initialize nh.pid here.
-+
-+2003-06-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor
-+ optimization.
-+
-+ * po/zh_CN.po: Update from translation team.
-+
-+ * posix/getconf.c (main): Also recognize names without the
-+ _POSIX_ prefix.
-+
-+ * elf/Makefile (CFLAGS-dl-lookup.c): Define.
-+
-+2003-06-02 Bernd Schmidt <bernds@redhat.com>
-+
-+ * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp,
-+ ldexpf, ldexpl): Only define if __FAST_MATH__.
-+
-+2003-06-02 Richard C. Bilson <rcbilson@plg.uwaterloo.ca>
-+
-+ Replace hard-coded offsets into struct sigcontext with generated file.
-+ * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: New file.
-+ * sysdeps/unix/sysv/linux/ia64/Makefile
-+ [$(subdir) = stdlib] (gen-as-const-headers): Add it.
-+ * sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Include it instead of
-+ defining SC_* macros here.
-+
-+2003-06-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove.
-+
-+2003-06-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/dl-machine.h: Include <sysdep.h>.
-+
-+2003-06-01 Ulrich Drepper <drepper@redhat.com>
-+
-+ * test-skeleton.c (main): Request getopt to not reorder the
-+ command line.
-+
-+ * elf/Makefile (CFLAGS-dl-runtime.c): Define.
-+
-+ * wcsmbs/wcpncpy.c (__wcpncpy): Fix broken implementation to match
-+ stpncpy.
-+
-+2003-05-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define.
-+
-+2003-05-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict):
-+ New function.
-+ (elf_machine_rela) <case R_PPC64_JMP_SLOT>: Avoid
-+ RESOLVE_CONFLICT_FIND_MAP. If RESOLVE_CONFLICT_FIND_MAP is defined,
-+ call elf_machine_plt_conflict instead of elf_machine_fixup_plt.
-+
-+2003-05-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add
-+ CFI directives.
-+
-+ * csu/Makefile: Fix Makefile warnings regarding Scrt1.o.
-+
-+ * libio/fileops.c (_IO_file_open): Don't mark as inline.
-+
-+ * sysdeps/ia64/elf/initfini.c (gmon_initializer): Mark with
-+ attribute used.
-+
-+2003-05-30 Ulrich Drepper <drepper@redhat.com>
-+
-+ * scripts/config.guess: Update from master copy.
-+ * scripts/config.sub: Likewise.
-+
-+2003-05-30 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/mips/mips64/bsd-_setjmp.S: Include <sys/asm.h> for
-+ SETUP_GP64 and friends.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Fix register
-+ names in internal_syscall{6,7}.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pread.c [_MIPS_SIM == _ABI64]: Fix
-+ number of syscall arguments.
-+ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
-+
-+2003-05-30 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
-+ Add CFI directives.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI
-+ directives.
-+
-+ * sysdeps/generic/sysdep.h: Add CFI_* macros for C files.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER):
-+ Add CFI directives.
-+
-+2003-05-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with
-+ SHARED.
-+
-+2003-05-11 Andreas Schwab <schwab@suse.de>
-+
-+ * Makerules: Always use -MP together with -MD.
-+ (sed-remove-dotot): Substitute $(..) also at start of line.
-+ ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES.
-+ Generated defines with a single compiler call.
-+ Use $(sed-remove-dotdot).
-+ * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead
-+ of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx).
-+ * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h):
-+ Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx).
-+ * sysdeps/unix/sysv/linux/mips/Makefile
-+ ($(objpfx)syscall-%.h): Likewise.
-+
-+2003-05-28 Roland McGrath <roland@redhat.com>
-+
-+ * malloc/malloc.h [! __GNUC__] (__const): Define if undefined.
-+
-+2003-05-26 Aldy Hernandez <aldyh@redhat.com>
-+
-+ * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0.
-+
-+2003-05-28 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/setcontext.S: Pass fourth argument to
-+ rt_sigprocmask system call.
-+ * sysdeps/unix/sysv/linux/ia64/ucontext_i.h (SC_MASK): Fix value.
-+ From Peter A. Buhr <pabuhr@plg2.math.uwaterloo.ca>.
-+
-+2003-05-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/libc-symbols.h: Define hidden attribute for real also if
-+ LIBC_NONSHARED is defined. Patch by Jakub Jelinek.
-+
-+ * csu/Makefile: Add rules to build Scrt1.o.
-+ * sysdeps/i386/elf/start.S: Make code compilable with SHARED.
-+ * sysdeps/x86_64/elf/start.S: Likewise.
-+
-+2003-05-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * stdio-common/vfprintf.c (process_arg, process_string_arg): Use
-+ pa_int/pa_u_int instead of pa_short_int, pa_u_short_int and pa_char.
-+ * stdio-common/printf-parse.h (union printf_arg): Remove pa_char,
-+ pa_short_int, pa_u_short_int and pa_float.
-+
-+2003-05-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * libio/strops.c (_IO_str_init_static): Change into a wrapper around
-+ _IO_str_init_static_internal.
-+ (_IO_str_init_static_internal): Moved from _IO_str_init_static,
-+ change size argument to _IO_size_t, don't limit sprintf to 64M.
-+ (_IO_str_init_readonly): Call _IO_str_init_static_internal.
-+ * libio/wstrops.c (_IO_wstr_init_static): Change size argument to
-+ _IO_size_t, don't limit swprintf to 256M.
-+ (_IO_wstr_init_readonly): Remove.
-+ * libio/libioP.h (_IO_str_init_static_internal, _IO_wstr_init_static):
-+ Adjust prototypes.
-+ (_IO_wstr_init_readonly): Remove prototype.
-+ * libio/iovsprintf.c (_IO_vsprintf): Use
-+ _IO_str_init_static_internal instead of INTUSE(_IO_str_init_static).
-+ * libio/iovsscanf.c (_IO_vsscanf): Likewise.
-+ * libio/memstream.c (open_memstream): Likewise.
-+ * libio/obprintf.c (_IO_obstack_vfprintf): Likewise.
-+ * libio/vasprintf.c (_IO_vasprintf): Likewise.
-+ * libio/vsnprintf.c (_IO_vsnprintf): Likewise.
-+ * stdio-common/tst-sprintf.c (main): Add new test.
-+
-+2003-05-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdio-common/vfprintf.c (vfprintf): Be bug-compatible with some
-+ other implementation in respect of multiple uses of parameter with
-+ different types.
-+
-+2003-05-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_FUTEX_REQUEUE for >= 2.5.70.
-+
-+2003-05-22 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Add CFI
-+ directives.
-+ * sysdeps/unix/sysv/linux/x86_64/time.S: Likewise.
-+ * sysdeps/x86_64/strtok.S: Likewise.
-+
-+2003-05-20 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL
-+ to -60 and define SI_TKILL.
-+
-+2003-05-21 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * math/test-fenv.c (feexcp_nomask_test): Fix comment.
-+ (feexcp_mask_test): Likewise.
-+
-+2003-05-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locale/programs/locale.c (main): Fix typo in last patch.
-+
-+ * csu/elf-init.c: Mark __preinit_array_start, __preinit_array_end,
-+ __init_array_start, __init_array_end, __fini_array_start, and
-+ __fini_array_end as hidden.
-+
-+2003-05-21 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locale/programs/locale.c (main): Report an error if setlocale()
-+ fails [PR libc/2254].
-+
-+2003-05-21 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/system.c: New file.
-+
-+2003-05-21 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_0,
-+ LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5,
-+ LOADARGS_6): Don't error if syscall argument is a string literal.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_0,
-+ LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5,
-+ LOADARGS_6): Likewise.
-+
-+2003-05-21 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/generic/sysdep.h (cfi_offset, cfi_startproc,
-+ cfi_endproc, cfi_def_cfa, cfi_def_ccfa_register,
-+ cfi_def_cfa_offset, cfi_adjust_cfa_offset, cfi_offset): Define.
-+
-+ * sysdeps/x86_64/sysdep.h (CALL_MCOUNT): Add cfi directives.
-+ (ENTRY): Likewise.
-+ (END): Likewise.
-+
-+ * configure.in: Test for asm cfi directives.
-+
-+ * config.h.in: Add HAVE_ASM_CFI_DIRECTIVES.
-+
-+2003-05-17 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch.
-+
-+ * rt/tst-clock_nanosleep.c: Include <time.h> for clock_nanosleep.
-+
-+2003-05-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/Makefile (tests): Add tst-clock_nanosleep.
-+ * rt/tst-clock_nanosleep.c: New file.
-+ * posix/Makefile (tests): Add tst-nanosleep.
-+ * posix/tst-nanosleep.c: New file.
-+
-+ * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Fix definition.
-+
-+ * include/features.h (__USE_XOPEN2K): Define also for
-+ _POSIX_C_SOURCE>=200112L.
-+
-+ * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Fold
-+ SI_TKILL code into SI_USER.
-+ * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise.
-+
-+ * sysdeps/posix/sigpause.c (do_sigpause): Use sigdelset after all.
-+
-+2003-05-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow):
-+ Remove sym argument, always use refsym.
-+ (__process_machine_rela): Adjust callers.
-+ * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow):
-+ Likewise.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (_dl_reloc_overflow):
-+ Adjust prototype.
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
-+
-+2003-05-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Fix typo
-+ (DL_NEED_SYSINFO -> NEED_DL_SYSINFO). If aux value is not known
-+ print numeric values.
-+
-+2003-05-12 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD.
-+
-+2003-05-14 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/ia64/umount.c: New file.
-+
-+2003-05-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope
-+ even if no DT_NEEDED is present.
-+
-+2003-05-13 David Mosberger <davidm@hpl.hp.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix the fix from
-+ 2003-03-27: setjmp is NOT a leaf-routine (due to the call to
-+ __sigjmp_save) so we can't keep the saved unat value in a scratch
-+ register (r16). Use loc2 instead.
-+
-+2003-05-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * csu/Makefile: Do compile elf-init with PIC flag since in dynamic
-+ binaries it has to be relocatable.
-+
-+ * sysdeps/unix/sysv/linux/waitpid.c: Use waitpid syscall is available.
-+
-+2003-05-12 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h
-+ (__arch_compare_and_exchange_bool_8_rel): Define.
-+ (__arch_compare_and_exchange_bool_16_rel): Define.
-+ (__ARCH_REL_INSTR): Define if not already defined.
-+ (__arch_atomic_exchange_and_add_32): Add "memory" to clobber list.
-+ (__arch_atomic_decrement_if_positive_32):
-+ Add "memory" to clobber list.
-+ (__arch_compare_and_exchange_val_32_acq): Remove release sync.
-+ (__arch_compare_and_exchange_val_32_rel): Define.
-+ (__arch_atomic_exchange_32): Remove.
-+ (__arch_atomic_exchange_32_acq): Define.
-+ (__arch_atomic_exchange_32_rel): Define.
-+ (atomic_compare_and_exchange_val_rel): Define.
-+ (atomic_exchange_acq): Use __arch_atomic_exchange_*_acq forms.
-+ (atomic_exchange_rel): Define.
-+ * sysdeps/powerpc/powerpc32/bits/atomic.h
-+ (__arch_compare_and_exchange_bool_32_acq): Remove release sync.
-+ (__arch_compare_and_exchange_bool_32_rel): Define.
-+ (__arch_compare_and_exchange_bool_64_rel): Define.
-+ (__arch_compare_and_exchange_val_64_rel): Define.
-+ (__arch_atomic_exchange_64): Remove.
-+ (__arch_atomic_exchange_64_acq): Define.
-+ (__arch_atomic_exchange_64_rel): Define.
-+ * sysdeps/powerpc/powerpc64/bits/atomic.h
-+ (__arch_compare_and_exchange_bool_32_rel): Define.
-+ (__arch_compare_and_exchange_bool_64_acq): Remove release sync.
-+ (__arch_compare_and_exchange_bool_64_rel): Define.
-+ (__arch_compare_and_exchange_val_64_acq): Remove release sync.
-+ (__arch_compare_and_exchange_val_64_rel): Define.
-+ (__arch_atomic_exchange_64): Remove.
-+ (__arch_atomic_exchange_64_acq): Define.
-+ (__arch_atomic_exchange_64_rel): Define.
-+ (__arch_atomic_exchange_and_add_64): Add "memory" to clobber list.
-+ (__arch_atomic_decrement_if_positive_64):
-+ Add "memory" to clobber list.
-+ [!UP](__ARCH_REL_INSTR): Define as lwsync.
-+
-+2003-05-11 Andreas Schwab <schwab@suse.de>
-+
-+ * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names.
-+
-+2003-05-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * time/tst-strftime.c (do_test): Add tests for - flag.
-+
-+2003-05-11 Jim Meyering <jim@meyering.net>
-+
-+ * time/strftime.c (my_strftime): Let the `-' (no-pad) flag affect
-+ the space-padded-by-default conversion specifiers, %e, %k, %l.
-+
-+2003-05-11 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/generic/sched_setaffinity.c: Fix parameter name.
-+
-+2003-05-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/bits/sched.h: Define cpu_set_t only if not
-+ already defined and when really needed.
-+ * sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
-+
-+2003-05-09 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel
-+ headers, add defines from kernel header, move it from here...
-+ * inet/netinet/igmp.h: ... to here.
-+ * inet/Makefile (headers): Add netinet/igmp.h.
-+ * sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h.
-+ * sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h.
-+
-+2003-05-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL,
-+ use dummy sigevent structure with SIGEV_NONE [PR libc/5015].
-+
-+2003-05-09 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * libio/bits/stdio.h: Sync prototypes with libio/stdio.h
-+ (remove __THROW from possible cancellation points).
-+
-+2003-05-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/sched.h (CPU_SETSIZE): Define.
-+
-+2003-05-09 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makeconfig (gnulib): Remove -lgcc_eh again.
-+
-+ * posix/sched.h: Change prototypes of sched_getaffinity and
-+ sched_setaffinity. Define CPU_SET, CPU_CLR, CPU_ISSET, and CPU_ZERO.
-+ * sysdeps/generic/sched_getaffinity.c: Adjust definition.
-+ * sysdeps/generic/sched_setaffinity.c: Likewise.
-+ * sysdeps/generic/bits/sched.h: Define __CPU_SETSIZE, __NCPUBITS,
-+ __CPUELT, __CPUMASK, cpu_set_t, __cpu_mask, __CPU_ZERO, __CPU_SET,
-+ __CPU_CLR, and __CPU_ISSET.
-+ * sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sched_getaffinity.c: New file.
-+ * sysdeps/unix/sysv/linux/sched_setaffinity.c: New file.
-+
-+ * include/atomic.h (atomic_exchange_acq): Renamed from atomic_exchange.
-+ (atomic_exchange_rel): New #define.
-+ * sysdeps/ia64/bits/atomic.h: Likewise.
-+ * sysdeps/i386/i486/bits/atomic.h (atomic_exchange_acq): Renamed from
-+ atomic_exchange.
-+ * sysdeps/m68k/m68020/bits/atomic.h: Likewise.
-+ * sysdeps/powerpc/bits/atomic.h: Likewise.
-+ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Likewise.
-+ * sysdeps/sparc/sparc64/bits/atomic.h: Likewise.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+ * csu/tst-atomic.c: Use atomic_exchange_acq instead of atomic_exchange.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c: New file.
-+
-+2003-05-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * malloc/thread-m.h: Remove special handling of thread_atfork if
-+ HAVE_register_atfork_malloc is defined.
-+
-+2003-05-07 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind
-+ information.
-+
-+2003-05-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/oldiofdopen.c (_IO_old_fdopen): Use _IO_old_init not _IO_init.
-+ * libio/oldiofopen.c (_IO_old_fopen): Likewise.
-+ * libio/libioP.h: Declare _IO_old_init.
-+ * libio/genops.c (_IO_no_init): Split in two. New function
-+ _IO_old_init.
-+
-+2003-05-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New
-+ variable.
-+ (__libc_init_secure): Don't do anything if __libc_enable_secure_decided
-+ is nonzero.
-+ * include/unistd.h: Declare __libc_enable_secure_decided.
-+ * elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID,
-+ and AT_EGID. If all found, set __libc_enable_secure and
-+ __libc_enable_secure_decided.
-+
-+ * sysdeps/generic/libc-start.c [!SHARED]: Call
-+ __libc_check_standard_fds after __libc_init_first.
-+
-+2003-05-05 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules (common-before-compile): New variable.
-+ ($(common-objpfx)%.make): Depend on that instead of $(before-compile).
-+ ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. Move this rule
-+ to after all setting of before-compile.
-+
-+2003-05-05 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_val_8_acq,
-+ __arch_compare_and_exchange_val_16_acq): Cast 0 to mem's type.
-+ * sysdeps/powerpc/powerpc32/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Likewise.
-+ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
-+ (__arch_compare_and_exchange_val_8_acq,
-+ __arch_compare_and_exchange_val_16_acq,
-+ __arch_compare_and_exchange_val_64_acq): Likewise.
-+ * sysdeps/sparc/sparc64/bits/atomic.h
-+ (__arch_compare_and_exchange_val_8_acq,
-+ __arch_compare_and_exchange_val_16_acq): Likewise.
-+ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq,
-+ __arch_compare_and_exchange_val_16_acq,
-+ __arch_compare_and_exchange_val_64_acq): Likewise.
-+ * sysdeps/unix/sysv/linux/sh/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Likewise.
-+ * sysdeps/s390/s390-64/backtrace.c (__backtrace): Add cast to shut
-+ up warning.
-+ * sysdeps/s390/fpu/fegetenv.c (fegetenv): Likewise.
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
-+ (INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0):
-+ Return long instead of int.
-+ (INTERNAL_SYSCALL_ERROR_P): Cast val to unsigned long, replace
-+ 0xfffff001u with -4095UL.
-+
-+2003-05-05 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/x86_64/fpu_control.h: New from i386.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (__NR_semtimedop):
-+ Define if not defined.
-+
-+ * sunrpc/Makefile (generated-dirs): New variable.
-+ * resolv/Makefile (generated): New variable.
-+
-+2003-05-04 Roland McGrath <roland@redhat.com>
-+
-+ * csu/Makefile ($(csu-dummies) target rule): Don't use a temp C file.
-+ Depend on $(before-compile).
-+
-+ * csu/Makefile ($(objpfx)crt%.o): Replace implicit rule with a static
-+ pattern rule. The implicit rule could be ruled out when $(objpfx)
-+ didn't exist at the time of its consideration (ugh!).
-+
-+ * Makerules (+make-deps): Fix target matching.
-+ Use $(sed-remove-dotdot).
-+
-+2003-05-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/nscd.c (main): Parse config file right after parsing
-+ parameters. Then, if get_stats is true, call receive_print_stats.
-+ Drop parameter from nscd_init call.
-+ (get_stats): New variable.
-+ (parse_opt): Set get_stats, don't call receive_print_stats here.
-+ * nscd/nscd.h: Declare dbs, stat_user, and stat_uid. Adjust nscd_init
-+ prototype.
-+ * nscd/connections.c (stat_user, stat_uid): New variables.
-+ (dbs): Make global.
-+ (nscd_init): Don't read configuration file here. Drop parameter.
-+ (handle_request): Cleanup handling of non-database lookup requests.
-+ * nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry.
-+ Get UID of the specified user. Use xstrdup instead of strdup.
-+ * nscd/nscd_stat.c (receive_print_stats): Check UID. If not zero,
-+ check stat_user.
-+ * nscd/Makefile (nscd-modules): Add xstrdup.
-+ * nscd/nscd.conf: Document stat-user entry.
-+
-+2003-05-03 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define
-+ if not defined.
-+
-+2003-04-22 Roland McGrath <roland@redhat.com>
-+
-+ * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME.
-+ * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
-+ dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead.
-+ * elf/dl-support.c: Update defn.
-+ * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases.
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]:
-+ Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR.
-+ (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME.
-+ * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is
-+ set, set up a link_map for the preloaded, prelinked object.
-+
-+2003-05-03 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/gnu/Makefile (generated): Append errlist-compat.c here, ...
-+ * stdio-common/Makefile: ... not here.
-+
-+ * csu/Makefile ($(objpfx)initfini.s): Depend on $(before-compile).
-+ * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise.
-+
-+2003-05-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/semtimedop.c: New file.
-+
-+ * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (IPCOP_semtimedop): Define.
-+
-+ * sysdeps/generic/dl-fptr.c (_dl_make_fptr): Use 0 not NULL for
-+ comparing ftab elements.
-+ (_dl_unmap): Fix typo in test.
-+ (_dl_make_fptr): Fix typos introduced in last change.
-+
-+ * sysdeps/generic/dl-fptr.c: Put back one optimization from the
-+ original patch. Use non-exported symbols. Mark translatable
-+ strings. Pretty printing.
-+
-+2003-05-02 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules (do-stamp): Do $(make-target-directory).
-+
-+2003-04-07 H.J. Lu <hjl@gnu.org>
-+
-+ * sysdeps/generic/dl-fptr.c: Modify to remove the lock.
-+
-+2003-04-03 H.J. Lu <hjl@gnu.org>
-+
-+ * sysdeps/ia64/dl-fptr.c: Moved to ...
-+ * sysdeps/generic/dl-fptr.c: Here.
-+
-+ * sysdeps/generic/dl-fptr.h: New.
-+ * sysdeps/ia64/dl-fptr.h: New.
-+
-+ * sysdeps/ia64/dl-symaddr.c: Moved to ...
-+ * sysdeps/generic/dl-symaddr.c: here.
-+
-+ * sysdeps/ia64/dl-machine.h: Include <dl-fptr.h>.
-+ (IA64_BOOT_FPTR_TABLE_LEN): Removed.
-+ (ia64_fdesc): Likewise.
-+ (ia64_fdesc_table): Likewise.
-+ (__ia64_make_fptr): Likewise.
-+ (__ia64_init_bootstrap_fdesc_table): Replace __ia64_boot_fptr_table
-+ with _dl_boot_fptr_table.
-+ (elf_machine_runtime_setup): Replace `struct ia64_fdesc' with
-+ `struct fdesc'.
-+ (elf_machine_rela): Replace __ia64_make_fptr with _dl_make_fptr.
-+
-+2003-05-01 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/generic/bp-thunks.h: Protect includes with [!__ASSEMBLER__].
-+ * sysdeps/unix/sysv/linux/i386/bp-thunks.h: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h):
-+ Use $(make-target-directory).
-+ * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise.
-+
-+ * Makerules (compile-mkdep-flags): New variable, pass -MD -MF $@.d.
-+ (compile-command.S): Don't use ifndef. Append $(compile-mkdep-flags).
-+ (compile-command.s, compile-command.c): Likewise.
-+ ($(objpfx)%.d): All such pattern rules removed.
-+ ($(+sysdir_pfx)sysd-rules): Don't generate them.
-+ ($(common-objpfx)dummy.d): Target removed.
-+ (make-dummy-dep): Variable removed.
-+ (generate-md5): Likewise.
-+ (%.d: %.dt): New pattern rule.
-+ (+depfiles): Use $(wildcard) function to get just existing *.d files
-+ and .d files for existing *.dt files.
-+ (common-clean): Remove all *.d and *.dt files.
-+ (before-compile): Add $(objpfx). when it doesn't exist,
-+ regardless of $(no_deps).
-+ * elf/rtld-Rules ($(objpfx)rtld-%.d): All such pattern rules removed.
-+ (rtld-depfiles): Use .os.d instead of .d names.
-+ Include existing *.d files and .d files for existing *.dt files.
-+
-+ * Makerules ($(common-objpfx)%.make): Protect with [! subdir].
-+ Use -MD, -MT and -MF flags instead of SUNPRO_DEPENDENCIES variable.
-+
-+ * sysdeps/unix/Makefile ($(common-objpfx)s-%.d): Remove compat.h hack.
-+ Do s-*.d includes only if we have some syscall routines in this subdir.
-+
-+ * include/libc-symbols.h (libc_freeres_ptr): Use %nobits instead of
-+ @nobits. The former is accepted by gas on any ELF platform.
-+
-+2003-05-01 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/semtimedop.c: New file.
-+
-+ * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary.
-+
-+2003-04-29 Andreas Schwab <schwab@suse.de>
-+
-+ * string/test-strcat.c (do_one_test): Fix attribute name.
-+
-+2003-04-30 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make
-+ uc_flags long for all ABIs.
-+
-+2003-04-30 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h
-+ (DR_CONTROL_RESERVED): Use correct value for 64-bit.
-+ Reported by Andrew Derrick Balsa <andrebalsa@mailingaddress.org>.
-+ Add bi-arch support.
-+
-+2003-04-30 Ulrich Drepper <drepper@redhat.com>
-+
-+ * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal.
-+ (__posix_memalign): Use __memalign_internal instead of memalign.
-+
-+2003-04-29 Roland McGrath <roland@redhat.com>
-+
-+ * configure.in: Search for AUTOCONF unconditionally.
-+ Just don't complain about missing it under --without-cvs.
-+
-+ * include/libc-symbols.h (__symbol_set_attribute): New macro,
-+ give hidden for [SHARED] and weak for [! SHARED].
-+ (symbol_set_declare): Use that. Never need weak_extern these days.
-+ * Makerules ($(common-objpfx)shlib.lds): Go back to using PROVIDE.
-+ Depend on $(..)Makerules.
-+
-+2003-04-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Use __ protected
-+ variants of socket, bind, recvmsg, and sendto.
-+
-+ * sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word.
-+
-+ * include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset.
-+ * signal/sigaddset.c: Add libc_hidden_def.
-+ * signal/sigdelset.c: Likewise.
-+
-+2003-04-29 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move
-+ to the end of the file.
-+
-+ * configure.in: Change __oline__ to $LINENO.
-+ (HAVE_BUILTIN_REDIRECTION): New check.
-+ * config.h.in (HAVE_BUILTIN_REDIRECTION): Add.
-+ * include/libc-symbols.h (libc_hidden_builtin_proto,
-+ libc_hidden_builtin_def, libc_hidden_builtin_weak,
-+ libc_hidden_builtin_ver): Define.
-+ * include/string.h (memchr, memcpy, memmove, memset, strcat, strchr,
-+ strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr,
-+ strspn, strstr): Add libc_hidden_builtin_proto.
-+ * intl/plural.y: Include string.h.
-+ * sysdeps/alpha/alphaev6/memchr.S (memchr): Add
-+ libc_hidden_builtin_def.
-+ * sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise.
-+ * sysdeps/alpha/alphaev6/memset.S (memset): Likewise.
-+ * sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise.
-+ * sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise.
-+ * sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise.
-+ * sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise.
-+ * sysdeps/alpha/memchr.S (memchr): Likewise.
-+ * sysdeps/alpha/memset.S (memset): Likewise.
-+ * sysdeps/alpha/strcat.S (strcat): Likewise.
-+ * sysdeps/alpha/strchr.S (strchr): Likewise.
-+ * sysdeps/alpha/strcmp.S (strcmp): Likewise.
-+ * sysdeps/alpha/strcpy.S (strcpy): Likewise.
-+ * sysdeps/alpha/strlen.S (strlen): Likewise.
-+ * sysdeps/alpha/strncmp.S (strncmp): Likewise.
-+ * sysdeps/alpha/strncpy.S (strncpy): Likewise.
-+ * sysdeps/alpha/strrchr.S (strrchr): Likewise.
-+ * sysdeps/arm/memset.S (memset): Likewise.
-+ * sysdeps/arm/strlen.S (strlen): Likewise.
-+ * sysdeps/generic/memchr.c (memchr): Likewise.
-+ * sysdeps/generic/memcpy.c (memcpy): Likewise.
-+ * sysdeps/generic/memmove.c (memmove): Likewise.
-+ * sysdeps/generic/memset.c (memset): Likewise.
-+ * sysdeps/generic/strcat.c (strcat): Likewise.
-+ * sysdeps/generic/strchr.c (strchr): Likewise.
-+ * sysdeps/generic/strcmp.c (strcmp): Likewise.
-+ * sysdeps/generic/strcpy.c (strcpy): Likewise.
-+ * sysdeps/generic/strcspn.c (strcspn): Likewise.
-+ * sysdeps/generic/strlen.c (strlen): Likewise.
-+ * sysdeps/generic/strncmp.c (strncmp): Likewise.
-+ * sysdeps/generic/strncpy.c (strncpy): Likewise.
-+ * sysdeps/generic/strpbrk.c (strpbrk): Likewise.
-+ * sysdeps/generic/strrchr.c (strrchr): Likewise.
-+ * sysdeps/generic/strspn.c (strspn): Likewise.
-+ * sysdeps/generic/strstr.c (strstr): Likewise.
-+ * sysdeps/i386/i486/strcat.S (strcat): Likewise.
-+ * sysdeps/i386/i486/strlen.S (strlen): Likewise.
-+ * sysdeps/i386/i586/memcpy.S (memcpy): Likewise.
-+ * sysdeps/i386/i586/memset.S (memset): Likewise.
-+ * sysdeps/i386/i586/strchr.S (strchr): Likewise.
-+ * sysdeps/i386/i586/strcpy.S (strcpy): Likewise.
-+ * sysdeps/i386/i586/strlen.S (strlen): Likewise.
-+ * sysdeps/i386/i686/memcpy.S (memcpy): Likewise.
-+ * sysdeps/i386/i686/memmove.S (memmove): Likewise.
-+ * sysdeps/i386/i686/memset.S (memset): Likewise.
-+ * sysdeps/i386/i686/strcmp.S (strcmp): Likewise.
-+ * sysdeps/i386/memchr.S (memchr): Likewise.
-+ * sysdeps/i386/memset.c (memset): Likewise.
-+ * sysdeps/i386/strchr.S (strchr): Likewise.
-+ * sysdeps/i386/strcspn.S (strcspn): Likewise.
-+ * sysdeps/i386/strlen.c (strlen): Likewise.
-+ * sysdeps/i386/strpbrk.S (strpbrk): Likewise.
-+ * sysdeps/i386/strrchr.S (strrchr): Likewise.
-+ * sysdeps/i386/strspn.S (strspn): Likewise.
-+ * sysdeps/ia64/memchr.S (memchr): Likewise.
-+ * sysdeps/ia64/memcpy.S (memcpy): Likewise.
-+ * sysdeps/ia64/memmove.S (memmove): Likewise.
-+ * sysdeps/ia64/memset.S (memset): Likewise.
-+ * sysdeps/ia64/strcat.S (strcat): Likewise.
-+ * sysdeps/ia64/strchr.S (strchr): Likewise.
-+ * sysdeps/ia64/strcmp.S (strcmp): Likewise.
-+ * sysdeps/ia64/strcpy.S (strcpy): Likewise.
-+ * sysdeps/ia64/strlen.S (strlen): Likewise.
-+ * sysdeps/ia64/strncmp.S (strncmp): Likewise.
-+ * sysdeps/ia64/strncpy.S (strncpy): Likewise.
-+ * sysdeps/m68k/memchr.S (memchr): Likewise.
-+ * sysdeps/m68k/strchr.S (strchr): Likewise.
-+ * sysdeps/mips/mips64/memcpy.S (memcpy): Likewise.
-+ * sysdeps/mips/mips64/memset.S (memset): Likewise.
-+ * sysdeps/mips/memcpy.S (memcpy): Likewise.
-+ * sysdeps/mips/memset.S (memset): Likewise.
-+ * sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
-+ * sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise.
-+ * sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise.
-+ * sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise.
-+ * sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise.
-+ * sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
-+ * sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
-+ * sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise.
-+ * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise.
-+ * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise.
-+ * sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise.
-+ * sysdeps/powerpc/strcat.c (strcat): Likewise.
-+ * sysdeps/sparc/sparc32/memchr.S (memchr): Likewise.
-+ * sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise.
-+ * sysdeps/sparc/sparc32/memset.S (memset): Likewise.
-+ * sysdeps/sparc/sparc32/strcat.S (strcat): Likewise.
-+ * sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise.
-+ * sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise.
-+ * sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise.
-+ * sysdeps/sparc/sparc32/strlen.S (strlen): Likewise.
-+ * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise.
-+ * sysdeps/sparc/sparc64/memchr.S (memchr): Likewise.
-+ * sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise.
-+ * sysdeps/sparc/sparc64/memset.S (memset): Likewise.
-+ * sysdeps/sparc/sparc64/strcat.S (strcat): Likewise.
-+ * sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise.
-+ * sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise.
-+ * sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise.
-+ * sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise.
-+ * sysdeps/sparc/sparc64/strlen.S (strlen): Likewise.
-+ * sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise.
-+ * sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise.
-+ * sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise.
-+ * sysdeps/sparc/sparc64/strspn.S (strspn): Likewise.
-+ * sysdeps/sh/memcpy.S (memcpy): Likewise.
-+ * sysdeps/sh/memset.S (memset): Likewise.
-+ * sysdeps/sh/strlen.S (strlen): Likewise.
-+ * sysdeps/s390/s390-32/memchr.S (memchr): Likewise.
-+ * sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise.
-+ * sysdeps/s390/s390-32/memset.S (memset): Likewise.
-+ * sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise.
-+ * sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise.
-+ * sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise.
-+ * sysdeps/s390/s390-64/memchr.S (memchr): Likewise.
-+ * sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise.
-+ * sysdeps/s390/s390-64/memset.S (memset): Likewise.
-+ * sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise.
-+ * sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise.
-+ * sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise.
-+ * sysdeps/x86_64/memcpy.S (memcpy): Likewise.
-+ * sysdeps/x86_64/memset.S (memset): Likewise.
-+ * sysdeps/x86_64/strcat.S (strcat): Likewise.
-+ * sysdeps/x86_64/strchr.S (strchr): Likewise.
-+ * sysdeps/x86_64/strcmp.S (strcmp): Likewise.
-+ * sysdeps/x86_64/strcpy.S (strcpy): Likewise.
-+ * sysdeps/x86_64/strcspn.S (strcspn): Likewise.
-+ * sysdeps/x86_64/strlen.S (strlen): Likewise.
-+ * sysdeps/x86_64/strspn.S (strspn): Likewise.
-+ * string/string-inlines.c: Move...
-+ * sysdeps/generic/string-inlines.c: ...here.
-+ (__memcpy_g, __strchr_g): Remove.
-+ (__NO_INLINE__): Define before including <string.h>,
-+ undefine after. Include bits/string.h and bits/string2.h.
-+ * sysdeps/i386/i486/string-inlines.c: New file.
-+ * sysdeps/i386/string-inlines.c: New file.
-+ * sysdeps/i386/i486/Versions: Remove.
-+ All GLIBC_2.1.1 symbols moved...
-+ * sysdeps/i386/Versions (libc): ...here.
-+
-+2003-04-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/i386/fpu/Makefile: New file.
-+ * sysdeps/i386/fpu/fedisblxcpt.c: Also set SSE control word.
-+ * sysdeps/i386/fpu/feenablxcpt.c: Likewise.
-+ * sysdeps/i386/fpu/feholdexcpt.c: Likewise.
-+ * sysdeps/i386/fpu/fesetround.c: Also set SSE rounding mode
-+ [PR libc/4987].
-+
-+2003-04-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/nscd_getgr_r.c: Compact code a bit. Add some __builtin_expect.
-+ * nscd/nscd_getpw_r.c: Likewise.
-+ * nscd/nscd_gethst_r.c: Likewise.
-+
-+2003-04-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/pwdcache.c: Initialize .version element in result.
-+ * nscd/grpcache.c: Likewise.
-+ * nscd/pwdcache.c: Likewise.
-+
-+2003-04-27 Andreas Schwab <schwab@suse.de>
-+
-+ * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in
-+ subdirectory.
-+
-+2003-04-27 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file.
-+
-+2003-04-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/connections.c (client_queued): New variable.
-+ (nscd_run): Revamp the loop. Don't call poll except for cleanup
-+ threads. Keep track of the number of delays caused because of busy
-+ worker threads.
-+ * nscd/nscd.h: Declare client_queued.
-+ * nscd/nscd_stat.c: Transmit and print client_queued information.
-+
-+ * locale/programs/locale.c (show_info): Use '\177' instead of CHAR_MAX.
-+
-+ * Makerules ($(common-objpfx)shlib.lds): Don't use PROVIDE to
-+ define __start_libc_freeres_ptrs and __stop___libc_freeres_ptrs.
-+
-+2003-04-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-close.c [USE_TLS && TLS_TCB_AT_TP] (_dl_close): Reimplement
-+ tracking of freed memory in static TLS block.
-+ * elf/Makefile: Add rules to build and run tst-tls13.
-+ * elf/tst-tls13.c: New file.
-+ * elf/tst-tlsmod13.c: New file.
-+ * elf/tst-tlsmod13a.c: New file.
-+
-+ * elf/tst-tls8.c: Adjust types of variables to avoid warnings.
-+
-+ * elf/dl-reloc.c: Pretty printing.
-+
-+2003-04-26 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules ($(common-objpfx)shlib.lds): New target.
-+ (common-generated): Add it.
-+ (build-shlib, build-module): Use that instead of generating every time.
-+ ($(common-objpfx)libc.so): Depend on it.
-+ (lib%.so rule): Likewise.
-+ (build-module-helper-objlist): Remove %.lds.
-+ (LDSEDCMD-c.so): Variable removed.
-+ * iconvdata/extra-module.mk ($(objpfx)$(mod).so):
-+ Depend on $(common-objpfx)shlib.lds.
-+ * dlfcn/Makefile ($(test-modules)): Likewise.
-+
-+2003-04-26 Roland McGrath <roland@frob.com>
-+
-+ * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals.
-+
-+2003-04-26 Andreas Schwab <schwab@suse.de>
-+
-+ * elf/dl-close.c (remove_slotinfo): Fix missing parens.
-+
-+2003-04-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/cache.c (cache_search): Keep track of how many chain links
-+ we searched and update table statistics.
-+ (cache_add): Keep track of how many values are in the table.
-+ (prune_cache): Likewise. Keep track of locking success.
-+ Print messages about removed entries in separate pass.
-+ * nscd/connections.c (handle_request): Don't print debug message here.
-+ The caller will do it. Keep track of locking success.
-+ (nscd_run): Print debug message. Also print PID of the client process.
-+ * nscd/nscd.c (start_time): New variable.
-+ (main): Remember start time.
-+ * nscd/nscd.h: Declare start_time.
-+ (struct database): Add more members for new statistics.
-+ * nscd/nscd_stat.c: Add support for sending, receiving, and printing
-+ of new statistics.
-+
-+ * sysdeps/posix/getaddrinfo.c: Include <stdbool.h>.
-+
-+2003-04-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined.
-+ * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET.
-+ * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to
-+ NO_TLS_OFFSET.
-+ * elf/rtld.c (_dl_start_final, _dl_start): Likewise.
-+ * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET.
-+ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise.
-+ * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract
-+ TLS_TCB_SIZE.
-+
-+2003-04-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nss/getent.c: Implement alternative host database lookup via
-+ getaddrinfo.
-+
-+ * include/ifaddrs.h: New file.
-+ * include/netdb.h: Move definitions of AI_V4MAPPED, AI_ALL, and
-+ AI_ADDRCONFIG...
-+ * resolv/netdb.h: ...here.
-+ * sysdeps/gnu/ifaddrs.c. Use libc_hidden_def where appropriate.
-+ * sysdeps/unix/sysv/linux/ifaddrs.c: Likewise.
-+ * sysdeps/posix/getaddrinfo.c: Implement AI_V4MAPPED, AI_ALL, and
-+ AI_ADDRCONFIG.
-+
-+2003-04-24 Roland McGrath <roland@redhat.com>
-+
-+ * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function.
-+
-+2003-04-24 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/dl-reloc.c (allocate_static_tls): Rename to...
-+ (_dl_allocate_static_tls): ... this function. No longer static.
-+ (CHECK_STATIC_TLS): Adjust.
-+ * sysdeps/generic/ldsodefs.h (_dl_allocate_static_tls): New prototype.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (__process_machine_rela):
-+ Add SYM_MAP argument.
-+ (elf_machine_rela): Adjust caller. Declare SYM_MAP unconditionally.
-+ Check if SYM_MAP != NULL for R_PPC_DTPREL32. Only handle 32-bit
-+ TLS relocs here. #ifdef out relocs which never appear in
-+ .gnu.conflict section from dl-conflict.c processing.
-+ * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela):
-+ Add SYM_MAP argument. Handle 16-bit TLS relocs here.
-+
-+ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): #ifdef
-+ out relocs which never appear in .gnu.conflict section from
-+ dl-conflict.c processing.
-+ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
-+ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
-+ * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise.
-+ Use r_type in RESOLVE macro.
-+
-+2003-04-23 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nis/ypclnt.c (__yp_bind): Expect YPDB parameter to always be !=
-+ NULL. Remove code made redundant by this assumption.
-+ (__yp_unbind): Add call to free. Adjust all callers.
-+
-+ * nis/ypclnt.c (yp_all): Free the dom_binding object after
-+ unbinding it.
-+
-+ * grp/initgroups.c (getgrouplist): Don't copy too much into the
-+ user buffer if more groups are found than fit into it.
-+
-+ * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use
-+ extend_alloca.
-+
-+2003-04-23 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Check for rc == ERANGE,
-+ not rc == errno. Use extend_alloca.
-+
-+ * elf/tst-tls12.c (main): Fix declaration.
-+ * elf/tst-tls10.c (dummy): Make hidden instead of static.
-+ * elf/tst-tlsmod7.c (dummy): Likewise.
-+ * elf/tst-tlsmod8.c (dummy): Likewise.
-+ * elf/tst-tlsmod9.c (dummy): Likewise.
-+
-+2003-04-22 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/not-cancel.h: Put parens around macro args.
-+ (open_not_cancel): Make last argument non-optional.
-+ * sysdeps/generic/check_fds.c (check_one_fd): Update caller.
-+ * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Likewise.
-+ * iconv/gconv_cache.c (__gconv_load_cache): Likewise.
-+
-+ * include/tls.h: Protect against multiple inclusion.
-+
-+2003-04-22 Ulrich Drepper <drepper@redhat.com>
-+
-+ * nscd/nscd-client.h: Add declaration for __nscd_open_socket.
-+ * nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from
-+ open_socket. Not static anymore.
-+ (nscd_gethst_r): Use __nscd_open_socket.
-+ * nscd/nscd_getgr_r.c (open_socket): Removed.
-+ (nscd_getgr_r): Use __nscd_open_socket.
-+ * nscd/nscd_getpw_r.c (open_socket): Removed.
-+ (nscd_getpw_r): Use __nscd_open_socket.
-+
-+ * nscd/nscd.c (main): Change type of fdn to long int and use strtol.
-+ * nscd/connections.c (handle_request): Add cast to avoid warning.
-+
-+2003-04-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * signal/sigfillset.c: Moved to...
-+ * sysdeps/generic/sigfillset.c: ...here. If SIGCANCEL is defined
-+ do not set the corresponding bit.
-+
-+ * sysdeps/unix/sysv/linux/sigprocmask.c: Prevent changing mask for
-+ SIGCANCEL.
-+ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Define SI_TKILL.
-+ * sysdeps/unix/sysv/linux/bits/siginfo.h: Define SI_TKILL.
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Define SI_TKILL.
-+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Define SI_TKILL.
-+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Define SI_TKILL.
-+
-+2003-04-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast
-+ first syscall parameter to const char*.
-+
-+2003-04-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * intl/Makefile ($(objpfx)msgs.h): Use C locale for sed run.
-+
-+ * configure.in: Add AC_PROG_CXX.
-+ * config.make.in (CXX): Define.
-+
-+ * sysdeps/i386/i686/hp-timing.h (HP_TIMING_PRINT): Change type of
-+ __len to size_t to avoid warnings.
-+
-+2003-04-18 Jes Sorensen <jes@wildopensource.com>
-+
-+ * libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Sync with Linux
-+ 2.5.67.
-+ * libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
-+
-+2003-04-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdlib/cxa_finalize.c (__cxa_finalize): Don't call
-+ UNREGISTER_ATFORK if d == NULL.
-+
-+ * catgets/nl_types.h: Remove __THROW marker from cancellation points.
-+ * dirent/dirent.h: Likewise.
-+ * dlfcn/dlfcn.h: Likewise.
-+ * grp/grp.h: Likewise.
-+ * iconv/iconv.h: Likewise.
-+ * io/fcntl.h: Likewise.
-+ * io/ftw.h: Likewise.
-+ * libio/stdio.h: Likewise.
-+ * misc/sys/mman.h: Likewise.
-+ * misc/sys/select.h: Likewise.
-+ * misc/sys/syslog.h: Likewise.
-+ * misc/sys/uio.h: Likewise.
-+ * posix/spawn.h: Likewise.
-+ * posix/unistd.h: Likewise.
-+ * posix/sys/wait.h: Likewise.
-+ * pwd/pwd.h: Likewise.
-+ * resolv/netdb.h: Likewise.
-+ * rt/aio.h: Likewise.
-+ * shadow/shadow.h: Likewise.
-+ * signal/signal.h: Likewise.
-+ * socket/sys/socket.h: Likewise.
-+ * stdlib/stdlib.h: Likewise.
-+ * streams/stropts.h: Likewise.
-+ * string/string.h: Likewise.
-+ * sysdeps/gnu/utmpx.h: Likewise.
-+ * sysvipc/sys/msg.h: Likewise.
-+ * termios/termios.h: Likewise.
-+ * time/time.h: Likewise.
-+ * wcsmbs/wchar.h: Likewise.
-+ * iconv/gconv_cache.c: Include <not-cancel.h> and use non-cancelable
-+ functions.
-+ * misc/daemon.c: Likewise.
-+ * sysdeps/generic/backtracesymsfd.c: Likewise.
-+ * sysdeps/generic/check_fds.c: Likewise.
-+ * sysdeps/unix/sysv/linux/gethostid.c: Likewise.
-+ * sysdeps/unix/sysv/linux/not-cancel.h: New file.
-+ * sysdeps/generic/not-cancel.h: New file.
-+ * csu/Makefile (distribute): Add not-cancel.h.
-+ * sysdeps/unix/sysv/linux/fatal-prepare.h: New file.
-+ * sysdeps/unix/sysv/linux/Makefile: Define FATAL_PREPARE_INCLUDE
-+ for assert.c and assert-perr.c to include <fatal-prepare.h>.
-+ * sysdeps/unix/sysv/linux/Dist: Add fatal-prepare.h.
-+
-+ * sysdeps/posix/remove.c (remove): Rewrite. No need to restore
-+ errno and unlink first.
-+
-+ * io/ftw.c (ftw_dir): In all places assume fchdir is available.
-+
-+2003-04-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use
-+ INTERNAL_SYSCALL instead of INLINE_SYSCALL.
-+
-+2003-04-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/Makefile: Remove db2 directory handling.
-+
-+ * malloc/Makefile (CFLAGS-malloc.c): Define DEFAULT_TOP_PAD to 128k.
-+ * sysdeps/unix/sysv/linux/Makefile (CFLAGS-malloc.c): Add to, not
-+ replace.
-+
-+ * signal/Makefile (tests): Add tst-sigsimple.
-+ * signal/tst-sigsimple.c: New file.
-+
-+2003-04-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and
-+ tst-tls10.h.
-+ (tests): Add tst-tls1[0-2].
-+ (modules-names): Add tst-tlsmod{[7-8],1[0-2]}.
-+ ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so.
-+ ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so.
-+ ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so.
-+ ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so.
-+ ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so.
-+ ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so.
-+ * elf/tst-tls10.c: New test.
-+ * elf/tst-tls11.c: New test.
-+ * elf/tst-tls12.c: New test.
-+ * elf/tst-tls10.h: New file.
-+ * elf/tst-tlsmod7.c: New file.
-+ * elf/tst-tlsmod8.c: New file.
-+ * elf/tst-tlsmod9.c: New file.
-+ * elf/tst-tlsmod10.c: New file.
-+ * elf/tst-tlsmod11.c: New file.
-+ * elf/tst-tlsmod12.c: New file.
-+
-+2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ...
-+ * sysdeps/powerpc/powerpc32/bits/atomic.h: New file.
-+ * sysdeps/powerpc/powerpc64/bits/atomic.h: New file.
-+
-+2003-04-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/regex.h: Include <sys/types.h>.
-+
-+ * signal/sigrelse.c (sigrelse): Use sigdelset and not __sigdelset.
-+ The signal number must be checked.
-+ * signal/sighold.c (sighold): Use sigaddset and not __sigaddset.
-+ The signal number must be checked [PR libc/5004].
-+
-+ * sysdeps/unix/sysv/linux/system.c: If compiled without threads
-+ don't do anything fancy.
-+
-+ * sysdeps/generic/bits/libc-lock.h: Define
-+ __rtld_lock_define_initialized_recursive.
-+
-+ * nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry
-+ contacting nscd if NOT_USENSCD_NAME > 0.
-+ * nss/nsswitch.c (__nss_disable_nscd): New function.
-+ * nss/nsswitch.h: Declare it.
-+ * nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd.
-+ * nscd/nscd.c (main): Call __nss_disable_nscd.
-+
-+2003-04-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdio-common/perror.c (perror): We don't need to set the offset
-+ to _IO_pos_bad, this is how streams are initialized.
-+
-+ * locale/programs/ld-time.c (TESTARR_ELEM): Make i unsigned.
-+ (time_output): If necessary, allocate new buffer for .name string if
-+ padding is required.
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Check lengths
-+ before copying. This might leave holes in the list. Adjust
-+ pointers if necessary.
-+ (netlink_receive): Allocate only one block.
-+ (free_netlink_handle): Adjust appropriately.
-+ (getifaddrs): Lots of cleanups.
-+
-+ * string/test-strncpy.c (do_one_test): Mark start and stop as
-+ possibly unused.
-+ * string/test-memchr.c: Likewise.
-+ * string/test-memcmp.c: Likewise.
-+ * string/test-memcpy.c: Likewise.
-+ * string/test-memmove.c: Likewise.
-+ * string/test-memset.c: Likewise.
-+ * string/test-strcat.c: Likewise.
-+ * string/test-strchr.c: Likewise.
-+ * string/test-strcmp.c: Likewise.
-+ * string/test-strcpy.c: Likewise.
-+ * string/test-strlen.c: Likewise.
-+ * string/test-strncmp.c: Likewise.
-+ * string/test-strpbrk.c: Likewise.
-+ * string/test-strrchr.c: Likewise.
-+ * string/test-strspn.c: Likewise.
-+
-+2003-04-15 Roland McGrath <roland@redhat.com>
-+
-+ * libio/fileops.c (_IO_file_close_it): Macro tweak to avoid warning.
-+
-+ * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO]: Add decl for
-+ INTUSE(__register_frame_info_bases).
-+
-+2003-04-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/elf.h: Define AT_SYSINFO_EH_FRAME.
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle
-+ AT_SYSINFO_EH_FRAME. Adjust string width.
-+ (_dl_show_auxv):Display AT_SYSINFO_EH_FRAME value.
-+ * sysdeps/generic/ldsodefs.h [NEED_DL_SYSINFO] (struct rtld_global):
-+ Add _dl_sysinfo_eh_frame field.
-+ * elf/dl-support.c [NEED_DL_SYSINFO]: Define _dl_sysinfo_eh_frame.
-+ * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO] Define eh_obj
-+ variable.
-+ [NEED_DL_SYSINFO] (LIBC_START_MAIN): Call __register_frame_info_bases
-+ if _dl_sysinfo_eh_frame is non-NULL.
-+
-+ * Makeconfig (gnulib): Add -lgcc_eh.
-+
-+ * config.h.in: Define HAVE_FORCED_UNWIND.
-+
-+2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit.
-+ * sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
-+
-+2003-04-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Avoid
-+ checking R_PPC_RELATIVE, R_PPC_NONE and whether relocation is
-+ against local symbol in conflict processing.
-+
-+2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h
-+ [__powerpc64] (__arch_compare_and_exchange_val_64_acq): Define.
-+ [! __powerpc64] (__arch_compare_and_exchange_val_64_acq): Defined
-+ as abort stub.
-+ (__arch_compare_and_exchange_val_32_acq): Define.
-+ (atomic_compare_and_exchange_val_acq): Define.
-+
-+2003-04-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h: Pretty printing.
-+
-+2003-04-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdio-common/vfscanf.c: Add casts to avoid warnings.
-+
-+2003-04-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+
-+2003-04-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Change PUSHARGS_1 and
-+ POPARGS_1 to emit labels for the mov instructions.
-+
-+2003-04-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define.
-+
-+2003-04-14 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/generic/unwind-dw2.c (_Unwind_GetCFA): Add a cast to silence
-+ compiler warning.
-+
-+ * sysdeps/generic/unwind-pe.h: Fix decl hacks broken in merge.
-+
-+2003-04-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * string/strxfrm.c (STRXFRM): Terminate rulearr at correct
-+ position. Reported by jreiser@BitWagon.com.
-+
-+2003-04-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version.
-+ * sysdeps/generic/unwind-dw2-fde.h: Likewise.
-+ * sysdeps/generic/unwind-dw2.c: Likewise.
-+ * sysdeps/generic/unwind-pe.h: Likewise.
-+
-+2003-04-13 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/profil-counter: New.
-+ * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64.
-+ * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New.
-+ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64.
-+ (mcontext_t): Make it match the 32-bit mips kernel in o32.
-+ * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from
-+ the mips and mips64 headers.
-+ (struct user): Port to n32/n64.
-+
-+2003-04-12 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to
-+ avoid warning.
-+
-+ * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If
-+ __ASSUME_VSYSCALL is defined don't add restorer.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_VSYSCALL for 2.5.53.
-+
-+2003-04-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling.
-+ Remove HAVE_CANCELBUF code. Replace with code using the new
-+ initializers for unwind-based cleanup handling.
-+ * sysdeps/generic/unwind.h: Update from latest gcc version.
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few
-+ places to allow unwind data generation.
-+ * sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times.
-+ * sysdeps/x86_64/bits/setjmp.h: Likewise.
-+ * sysdeps/sh/bits/setjmp.h: Likewise.
-+ * sysdeps/powerpc/bits/setjmp.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
-+ * sysdeps/alpha/bits/setjmp.h: Likewise.
-+
-+2003-04-11 Roland McGrath <roland@redhat.com>
-+
-+ * csu/tst-empty.c: New file.
-+ * csu/Makefile (tests, tests-static): Add it.
-+
-+2003-04-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * string/test-strcmp.c (do_random_tests): Test whether return value
-+ has been promoted to wordsize if the ABI requires caller to do so.
-+ * string/test-strncmp.c (do_random_tests): Likewise.
-+ * string/test-memcmp.c (do_random_tests): Likewise.
-+
-+ * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN
-+ before returning.
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c
-+ (__fe_nomask_env): Try prctl even if __ASSUME_NEW_PRCTL_SYSCALL
-+ is not defined, but the prctl constants are.
-+
-+ * string/tester.c (test_strcmp): Fix a typo.
-+
-+2003-04-09 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition.
-+ * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise.
-+
-+2003-04-08 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/sys/regdef.h (t4,t5,t6,t7): Renamed to t0..t3 on
-+ NewABI.
-+ (ta0, ta1, ta2, ta3): Defined to t4..t7 on o32, and a4..a7 on
-+ NewABI.
-+ * sysdeps/mips/mips64/memcpy.S: Adjust register naming
-+ conventions.
-+ * sysdeps/mips/mips64/memset.S: Likewise.
-+ * sysdeps/unix/mips/sysdep.S (__syscall_error) [_LIBC_REENTRANT]:
-+ Use t0 instead of t4 as temporary.
-+
-+2003-04-07 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use
-+ feof_unlocked instead of feof.
-+ (add_dir): Ignore trailing whitespace.
-+
-+2003-04-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to
-+ sum of SIZE1 and SIZE2 arguments.
-+
-+2003-04-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * iconv/iconv_prog.c (process_block): Don't print message about
-+ invalid input if the -c option is used.
-+ (main): Correctly append IGNORE string for -c option.
-+
-+2002-04-06 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/sh/bits/atomic.h: Moved to ...
-+ * sysdeps/unix/sysv/linux/sh/bits/atomic.h: ... here. Add comments.
-+ (__arch_compare_and_exchange_val_*_acq): Add parens around macro
-+ arguments.
-+ (atomic_bit_set, atomic_bit_test_set): Likewise.
-+ (atomic_exchange_and_add): Likewise. Don't evaluate VALUE argument
-+ twice.
-+ (atomic_add, atomic_add_negative, atomic_add_zero): Likewise.
-+
-+2003-04-06 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register
-+ restoration as done for setcontext yesterday.
-+
-+2003-04-06 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/rtld.c: Revert 2003-03-14 change.
-+ * elf/dl-conflict.c (_dl_resolve_conflicts): Move
-+ #if ! ELF_MACHINE_NO_RELA conditional into the routine.
-+
-+2003-04-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sunrpc/xdr.c (xdr_string): Catch nodesize == 0 [PR libc/4999].
-+
-+ * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r):
-+ Always initialize *signgamp before returning an error.
-+
-+2003-04-05 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/setcontext.S: Rewrite to avoid writing
-+ below the stack pointer even if switching to the same context we are
-+ running right now.
-+
-+2003-04-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * catgets/gencat.c (read_input_file): Make sure that \n is not
-+ alone on the line before testing for continuation.
-+
-+ * math/test-tgmath.c (compile_test): Initialize c.
-+
-+2003-04-05 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: New.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c: New.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: fcntl64 is available
-+ on mips n32.
-+ * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Explain why
-+ XSTAT_IS_XSTAT64 must not be used for mips n64. Use 64-bit data
-+ structure on n32 as well.
-+ * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use POSIX-compliant
-+ data types on n32 and n64.
-+
-+2003-04-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * libio/fileops.c (_IO_new_file_fopen): Don't free step data right
-+ after getting them.
-+
-+ * malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If
-+ HAVE_register_atfork_malloc is defined use __register_atfork_malloc
-+ instead of __register_atfork.
-+
-+2003-04-05 Jakub Jelinek <jakub@redhat.com>
-+
-+ * stdio-common/reg-printf.c (__register_printf_function): Calloc
-+ instead of malloc __printf_arginfo_table and __printf_function_table.
-+ Reported by John Reiser <jreiser@BitWagon.com>.
-+
-+2003-04-04 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/strchr.S: 64-bit optimizations.
-+ * sysdeps/powerpc/powerpc64/strlen.S: 64-bit optimizations.
-+
-+ * sysdeps/powerpc/fpu/bits/mathdef.h (FLT_EVAL_METHOD): Undef before
-+ defining.
-+
-+2003-04-04 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust
-+ for n64 abi.
-+
-+2003-04-03 Roland McGrath <roland@redhat.com>
-+
-+ * configure.in: Fix up use of compilation flags to match the build:
-+ For .s files, $ASFLAGS;
-+ For .S files, $CPPFLAGS $ASFLAGS;
-+ For .c files, $CFLAGS $CPPFLAGS;
-+ when linking, add $LDFLAGS.
-+ * configure: Regenerated.
-+
-+2003-04-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test
-+ for atomic_compare_and_exchange_bool_acq failure.
-+
-+2003-04-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/unistd.h: Define _POSIX_VERSION, _POSIX2_VERSION,
-+ _POSIX2_C_BIND, _POSIX2_C_DEV, _POSIX2_SW_DEV, and
-+ _POSXI2_LOCALEDEF to 200112L. Remove _POSIX2_C_VERSION.
-+ Remove declaration of pthread_atfork.
-+
-+2003-04-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locale/iso-639.def: Add many more languages from the current ISO 639.
-+
-+ * sysdeps/unix/sysv/linux/ipc_priv.h: Define IPCOP_semtimedop.
-+ * sysdeps/generic/semtimedop.c: New file.
-+ * sysdeps/unix/sysv/linux/i386/semtimedop.S: New file.
-+ * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add semtimedop.
-+ * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise.
-+ * sysvipc/Makefile (routines): Add semtimedop.
-+ * sysvipc/Versions [GLIBC_2.3.3] (glibc): Add semtimedop.
-+ * sysvipc/sys/sem.h: Declare semtimedop.
-+
-+2003-04-02 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * configure.in: Check for __register_frame_info in both
-+ -lgcc and -lgcc_eh.
-+ * configure: Regenerated.
-+
-+2003-04-01 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Allow dots in soname suffix.
-+
-+ * scripts/abilist.awk (emit): Fix bailout condition.
-+
-+2003-04-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the
-+ IA-64 version.
-+
-+ * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp
-+ register as input to asm.
-+
-+2003-04-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo.
-+
-+2003-04-01 Andreas Jaeger <aj@suse.de>
-+
-+ * configure.in: Output as/ld as name if version is too old.
-+
-+2003-03-31 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * configure.in: Don't require an installed C library in the test
-+ for ".set" assembler support.
-+
-+2003-03-31 Roland McGrath <roland@redhat.com>
-+
-+ * signal/tst-sigset.c: New file.
-+ * signal/Makefile (tests): Add it.
-+
-+2003-03-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65.
-+ * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise.
-+ * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise.
-+ (__SIGRTMAX): Adjust accordingly.
-+ * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define
-+ second compatibility symbol set.
-+ * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define.
-+
-+2003-03-31 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test):
-+ Define.
-+ (atomic_decrement_and_test): Fix test.
-+
-+2003-03-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc32/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc64/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc32/atomicity.h: Removed.
-+ * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed.
-+ * sysdeps/sparc/sparc64/atomicity.h: Removed.
-+
-+2003-03-30 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone.
-+
-+ * intl/po2test.sed: Anchor substitution regexps to fix last change.
-+
-+2003-03-29 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * intl/po2test.sed: Unify the transformations for msgid and msgstr
-+ and remove a useless s/// command.
-+
-+2003-03-27 David Mosberger <davidm@hpl.hp.com>
-+
-+ * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0"
-+ directive into empty .prologue region to ensure that call-chain
-+ is terminated even for the first instruction.
-+
-+ * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom
-+ to terminate call-chain right from the get-go.
-+
-+ * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary
-+ stop bit between compare & branch.
-+
-+2003-03-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal
-+ point correctly [PR libc/4993].
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid
-+ netlink_open calls if netlink is known to not be available.
-+
-+2003-03-29 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * configure.in: Add mips64* support.
-+ * sysdeps/mips/bits/endian.h: Make it bi-endian.
-+ * sysdeps/mips/mipsel/bits/endian.h: Removed.
-+ * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
-+ * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
-+ * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
-+ * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
-+ * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
-+ * sysdeps/mips/Implies: Moved wordsize-32 to...
-+ * sysdeps/mips/mips32/Implies: New file.
-+ * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
-+ ret_NOERRNO): New.
-+ (ret, PSEUDO_END): Moved past END.
-+ (PSEUDO): Moved to...
-+ * sysdeps/unix/mips/mips32/sysdep.h: New file.
-+ * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
-+ * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
-+ * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start):
-+ Re-introduce ENTRY.
-+
-+2003-03-28 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c: New file.
-+ * inet/test-ifaddrs.c: Allow AF_PACKET.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Add
-+ __ASSUME_NETLINK_SUPPORT.
-+
-+2003-03-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/vismain.c (do_test): Comment out tests which fail in the moment.
-+
-+2003-03-26 H.J. Lu <hjl@gnu.org>
-+
-+ * elf/vismod.h (getvarlocal1): Return const char **.
-+ (getvarinmod1): Likewise.
-+ (getvaritcpt1): Likewise.
-+ (getvarlocal2): Likewise.
-+ (getvarinmod2): Likewise.
-+ (getvaritcpt2): Likewise.
-+ (getvaritcpt3): Likewise.
-+ * elf/vismain.c (do_test): Adjusted.
-+ * elf/vismod1.c (getvarlocal1): Return address.
-+ (getvarinmod1): Likewise.
-+ (getvaritcpt1): Likewise.
-+ * elf/vismod2.c (getvarlocal2): Likewise.
-+ (getvarinmod2): Likewise.
-+ (getvaritcpt2): Likewise.
-+ * elf/vismod3.c (getvaritcpt3): Likewise.
-+
-+2003-03-28 Roland McGrath <roland@redhat.com>
-+
-+ * elf/vismain.c (do_test): Print both addresses when they don't match.
-+
-+ * scripts/abilist.awk: If given -v filename_regexp and/or -v
-+ libname_regexp when parsing names, then produce output only
-+ for those matching the given regexps. In combine mode, save all
-+ stanzas for a final sorting by stanza header at the end.
-+ Emit a blank line between stanzas.
-+
-+ * scripts/abilist.awk: When given -v combine=1, do parse_names and
-+ emit a single output stream with lib name in stanza header lines.
-+
-+ * scripts/abilist.awk: Emit A for all *ABS* regardless of type.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h [! __powerpc64__]
-+ (__arch_atomic_decrement_if_positive_64): Fix bogus definition.
-+
-+2003-03-28 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_8_acq): ... this.
-+ (__arch_compare_and_exchange_val_16_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_16_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_32_acq): ... this.
-+ (__arch_compare_and_exchange_val_64_acq):
-+ Renamed from...
-+ (__arch_compare_and_exchange_64_acq): ... this.
-+ (atomic_exchange_and_add): Use local variables and
-+ __arch_compare_and_exchange_val_64_acq.
-+ (atomic_add): Likewise.
-+ (atomic_add_negative, atomic_add_zero): Use local variables.
-+
-+2003-03-28 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/mips/sysdep.S: Include sys/asm.h.
-+
-+2003-03-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makefile: Remove libmd5crypt goal.
-+
-+2003-03-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore
-+ special handling of relocations against local symbols.
-+
-+2003-03-27 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h
-+ (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__].
-+ [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq):
-+ Define PPC64 specific version.
-+ [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq):
-+ Change (mem) constraint to "b".
-+ [__powerpc64__] (__arch_atomic_exchange_and add_64):
-+ Replace addi with add. Change (value) contraint to "r".
-+ Change (mem) constraint to "b".
-+ [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro.
-+ (__arch_atomic_exchange_32): Change (mem) constraint to "b".
-+ (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b".
-+ (__arch_atomic_decrement_if_positive_32): New macro.
-+ (atomic_decrement_if_positive): Use __arch* macros.
-+
-+2003-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/fpu/libm-test-ulps: Update.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/rpm2dynsym.sh: New file.
-+ * Makefile (distribute): Add it.
-+
-+2003-03-27 David Mosberger <davidm@hpl.hp.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's
-+ ar.unat before returning. Add missing .mem.offset directives
-+ to ensure file gets assembled without warnings.
-+ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
-+
-+2003-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>:
-+ Return -1 instead of 0 if clock_getres failed.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: If variable `parse_names' is set, grok the file
-+ header lines and write out foo.symlist files for each foo.so.NN listed.
-+
-+ * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden.
-+ This symbol is exported, and we don't want to hide it.
-+ Add libc_hidden_proto instead.
-+ (_IO_file_jumps): Add libc_hidden_proto.
-+ * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def.
-+ Remove INTVARDEF.
-+ * libio/fileops.c (_IO_file_jumps): Likewise.
-+ * libio/stdfiles.c: Don't use INTUSE on them.
-+ * libio/iofdopen.c (_IO_new_fdopen): Likewise.
-+ * libio/iofopen.c (__fopen_internal): Likewise.
-+ * libio/freopen.c (freopen): Likewise.
-+ * libio/freopen64.c (freopen64): Likewise.
-+ * libio/iovdprintf.c (_IO_vdprintf): Likewise.
-+
-+ * Makerules (check-abi) [$(enable-check-abi) = warn]:
-+ Ignore exit status from diff.
-+ * configure.in (enable_check_abi): Document possible value "warn".
-+ Change default to no for now.
-+ * configure: Regenerated.
-+
-+ * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning
-+ macro calls and a #include <stub-tag.h> at the end.
-+ * Makerules ($(objpfx)stubs): Tweak sed commands.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in
-+ caller column for *xattr syscalls, since they are in sysdeps/generic.
-+
-+ * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid
-+ * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid
-+
-+2003-03-26 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules (check-abi-config): Use /thread instead of /tls when
-+ use-thread and not just use-tls is set.
-+
-+ * Makerules (update-abi): Put quotes around $(update-abi-config).
-+
-+ * elf/Makefile (check-abi): Depend on check-abi-ld.
-+ (update-abi): Depend on update-abi-ld.
-+
-+2003-03-26 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and
-+ do not check for errors (unless testing for 32bit variant).
-+ * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
-+
-+2003-03-27 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use
-+ unconditional mov. Remove nop.
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm.
-+ * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code
-+ when __ASSUME_VFORK_SYSCALL is defined.
-+ * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for
-+ __ASSUME_MMAP2_SYSCALL.
-+ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for
-+ __ASSUME_REALTIME_SIGNALS.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2
-+ only if DL_NO_COPY_RELOCS is not defined.
-+ * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS.
-+
-+2003-03-26 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/make-syscalls.sh: When an undefined syscall has
-+ SOURCE=-, append its symbol names to make variable unix-stub-syscalls.
-+ * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls]
-+ (sysdep_routines): Add stub-syscalls.
-+ ($(objpfx)stub-syscalls.c): New target.
-+ (generated): Add stub-syscalls.c.
-+
-+ * tls.make.c: Also define use-tls according to USE_TLS macro.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid
-+ no-op padding element.
-+ * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
-+
-+2003-03-26 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error
-+ condition check for the return value of getgroups32.
-+
-+2003-03-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO):
-+ Fix a typo.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO,
-+ PSEUDO_END_NOERRNO): Define.
-+ * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo.
-+ Define to PSEUDO_END.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * abilist/librt.abilist: Add new timer interfaces for 64-bit archs.
-+
-+2003-03-25 Jiro SEKIBA <jir@yamato.ibm.com>
-+
-+ * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP.
-+ * iconvdata/bug-iconv4.c: New file.
-+ * iconvdata/Makefile (tests): Add bug-iconv4.
-+
-+2003-03-25 H.J. Lu <hjl@gnu.org>
-+
-+ * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected
-+ symbols twice.
-+ (_dl_lookup_versioned_symbol): Likewise.
-+
-+2003-03-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * csu/tst-atomic.c (do_test): Add some new
-+ atomic_compare_and_exchange_val_acq, atomic_add_zero,
-+ atomic_compare_and_exchange_bool_acq and atomic_add_negative tests.
-+ * include/atomic.h (atomic_add_negative, atomic_add_zero):
-+ Prefix local variable so that it doesn't clash with the one
-+ in atomic_exchange_and_add.
-+ * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void *
-+ pointers.
-+ (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i.
-+ * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force
-+ value into register.
-+ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq):
-+ Cast newval to long.
-+ * sysdeps/x86_64/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to
-+ long.
-+ (atomic_exchange): Cast newvalue to long if sizeof == 8.
-+ (atomic_exchange_and_add): Cast value to long if sizeof == 8.
-+ (atomic_add, atomic_add_negative, atomic_add_zero): Likewise.
-+ (atomic_bit_set): Shift 1L up in all cases to shut up warnings.
-+
-+2003-03-21 Martin Schwidefsky <schwidefskyde.ibm.com>
-+
-+ * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order
-+ bit from backtrace addresses.
-+
-+2003-03-21 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned
-+ __chown symbols.
-+
-+2003-03-25 Roland McGrath <roland@redhat.com>
-+
-+ * config.make.in (enable-check-abi): New variable from configure.
-+ * configure.in (enable_check_abi): New substituted variable,
-+ controlled by --{enable,disable}-check-abi (default yes).
-+ * configure: Regenerated.
-+ * Makerules [$(enable-check-abi) = yes] (tests): Put this condition
-+ on check-abi dependency.
-+
-+2003-03-26 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h: Fix typos.
-+ * include/atomic.h: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO.
-+
-+2003-03-25 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro.
-+ (__arch_atomic_exchange_64): New macro.
-+ (atomic_exchange): Use them.
-+ (__arch_atomic_exchange_and_add_32): New macro.
-+ (__arch_atomic_exchange_and_add_64): New macro.
-+ (atomic_exchange_and_add): Use them.
-+ Original patch from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+2003-03-25 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64):
-+ Define.
-+ * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all
-+ ISA tests.
-+ (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA.
-+ (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG.
-+ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
-+ to decide whether to add padding.
-+ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
-+ to decide whether to add padding.
-+ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct
-+ old_kernel_sigaction): Likewise.
-+
-+2003-03-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and
-+ atomic_add_zero were supposed to do.
-+ * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero
-+ to x86 behavior.
-+
-+ * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*.
-+ This matches the new timer implementation.
-+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust
-+ timer info for what the kernel provides these days.
-+ (struct sigevent): Add _tid field.
-+ Define SIGEV_THREAD_ID.
-+ Remove struct __pthread_attr_s forward declaration.
-+ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
-+
-+ * Versions.def (librt): Add GLIBC_2.3.3.
-+
-+ * abilist/libpthread.abilist: Update for nptl.
-+
-+2003-03-24 Jon Grimm <jgrimm@us.ibm.com>
-+
-+ * inet/netinet/in.h: Add IPPROTO_SCTP.
-+
-+2003-03-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define.
-+
-+2003-03-24 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL):
-+ Remove a1 from clobber list.
-+
-+2003-03-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * timezone/antarctica: Update from tzdata2003a.
-+ * timezone/asia: Likewise.
-+ * timezone/australasia: Likewise.
-+ * timezone/europe: Likewise.
-+ * timezone/iso3166.tab: Likewise.
-+ * timezone/northamerica: Likewise.
-+ * timezone/southamerica: Likewise.
-+ * timezone/zone.tab: Likewise.
-+
-+2003-03-24 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo.
-+
-+2003-03-23 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid
-+ unwanted expansion by definining to ret. Patch by Ian Wienand.
-+
-+ * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of
-+ the parameter description to denote no error checking. Generate
-+ appropriate pseudo asm code.
-+ * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'.
-+ * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid,
-+ getpgrp, and getppid with 'E'.
-+ * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO,
-+ PSEUDO_END_NOERRNO, and ret_NOERRNO.
-+ * sysdeps/powerpc/powerpc64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysdep.h: Likewise.
-+ * sysdeps/unix/alpha/sysdep.h: Likewise.
-+ * sysdeps/unix/sparc/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
-+
-+2003-03-23 Roland McGrath <roland@redhat.com>
-+
-+ * Makeconfig (+includes): Don't use $(last-includes).
-+
-+2003-03-22 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns.
-+ * sysdeps/unix/sysv/linux/configure: Rebuilt.
-+
-+2003-03-23 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/alpha/fpu/libm-test-ulps: Update.
-+ * sysdeps/arm/libm-test-ulps: Update.
-+ * sysdeps/hppa/fpu/libm-test-ulps: Update.
-+ * sysdeps/ia64/fpu/libm-test-ulps: Update.
-+ * sysdeps/mips/fpu/libm-test-ulps: Update.
-+ * sysdeps/powerpc/nofpu/libm-test-ulps: Update.
-+ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
-+ * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update.
-+ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.
-+ * sysdeps/sh/sh4/fpu/libm-test-ulps: Update.
-+ * sysdeps/s390/fpu/libm-test-ulps: Update.
-+ * sysdeps/x86_64/fpu/libm-test-ulps: Update.
-+
-+2003-03-22 Roland McGrath <roland@redhat.com>
-+
-+ * include/atomic.h: Put parens around all macro arguments.
-+ (__atomic_val_bysize, __atomic_bool_bysize): New macros.
-+ (atomic_compare_and_exchange_val_acq): Use it.
-+ (atomic_compare_and_exchange_bool_acq): Likewise.
-+ (atomic_increment_and_test): Invert sense of test.
-+ (atomic_decrement_and_test): Likewise.
-+ * csu/tst-atomic.c: Update those tests to match.
-+
-+2003-03-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment.
-+ Don't define if __arch_compare_and_exchange_val_32_acq is not defined.
-+ (atomic_compare_and_exchange_bool_acq): Add comment. Don't use
-+ __oldval variable in the macro, since it might be macro argument.
-+ (atomic_decrement_if_positive): Initialize __memp, remove setting
-+ of non-existent variable.
-+ (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting.
-+ * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement
-+ using atomic_compare_and_exchange_val_acq.
-+ (atomic_decrement_if_positive, atomic_bit_test_set): Define.
-+ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
-+ Renamed from...
-+ (__arch_compare_and_exchange_bool_8_acq): ... this.
-+ (__arch_compare_and_exchange_val_16_acq): Renamed from...
-+ (__arch_compare_and_exchange_bool_16_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed
-+ from...
-+ (__arch_compare_and_exchange_bool_32_acq): ... this.
-+ (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed
-+ from...
-+ (__arch_compare_and_exchange_bool_64_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq): Use __typeof for local
-+ variables types instead of assuming int.
-+ Change prefix of local variables to __arch.
-+ * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq):
-+ Remove.
-+ (atomic_compare_and_exchange_val_acq,
-+ atomic_compare_and_exchange_bool_acq): Define.
-+
-+ * csu/tst-atomic.c: New test.
-+ * csu/tst-atomic-long.c: New test.
-+ * csu/Makefile (tests): Add tst-atomic and tst-atomic-long.
-+
-+ * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong.
-+
-+ * sysdeps/s390/Versions: Add trailing newline.
-+
-+ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning
-+ if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument.
-+
-+2003-03-22 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/fpu/libm-test-ulps: Update.
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h: New file.
-+ * sysdeps/m68k/m68020/atomicity.h: Removed.
-+
-+2003-03-22 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation
-+ data structures and macros. Protect from multiple inclusion.
-+
-+ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless
-+ typo in #if test.
-+
-+2003-03-21 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/i386/fpu/libm-test-ulps: Update.
-+
-+ * math/libm-test.inc (tgamma_test): Recompute some constants with
-+ 36 digits precision.
-+ (lgamma_test): Likewise.
-+ (ccos_test): Likewise.
-+ (ccosh_test): Likewise.
-+ (clog10_test): Likewise.
-+ (csin_test): Likewise.
-+ (csinh_test): Likewise.
-+ (ctan_test): Likewise.
-+ (ctanh_test): Likewise.
-+
-+2003-03-19 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir"
-+ constraint to permit non-constant BIT argument.
-+ (atomic_bit_test_set): Likewise.
-+ * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise.
-+ (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32.
-+ For quadword case, use "i" constraint if __builtin_constant_p and < 32
-+ or "r" constraint otherwise.
-+
-+ * configure.in: Move AC_PROG_CC and other program-finding before all
-+ the version checks.
-+ * configure: Regenerated.
-+
-+2003-03-21 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke
-+ unaligned copying of 8-15 bytes. From Chris Demetriou
-+ <cgd@broadcom.com>. Fix label names.
-+ * sysdeps/mips/mips64/memset.S: Fix label names. Make similar
-+ change as to memcpy.S.
-+ * sysdeps/mips/memcpy.S: Formatting changes.
-+ * sysdeps/mips/memset.S: Likewise.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon.
-+
-+2003-03-21 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New.
-+ * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/i386/i486/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling
-+ version of the macro to avoid compile-time warnings.
-+ [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above.
-+ (atomic_exchange_and_add, atomic_add): Fix name and usage of it.
-+ (atomic_increment, atomic_decrement): Likewise.
-+
-+2003-03-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints.
-+ * sysdeps/i386/i486/bits/atomic.h: Likewise.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h: Define atomic_compare_and_exchange_val_acq,
-+ atomic_compare_and_exchange_val_rel,
-+ atomic_compare_and_exchange_bool_acq, and
-+ atomic_compare_and_exchange_bool_rel instead of
-+ atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel.
-+ * sysdeps/i386/i486/bits/atomic.h: Define
-+ __arch_compare_and_exchange_val_*_acq instead of
-+ __arch_compare_and_exchange_*_acq.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+ * sysdeps/ia64/bits/atomic.h: Define
-+ __arch_compare_and_exchange_bool_*_acq instead of
-+ __arch_compare_and_exchange_*_acq.
-+ * sysdeps/powerpc/bits/atomic.h: Likewise.
-+ * sysdeps/s390/bits/atomic.h: Likewise.
-+ * gmon/mcount.c: Adjust for new form of compare&exchange macros.
-+ * malloc/set-freeres.c: Likewise.
-+ * nscd/cache.c: Likewise.
-+ * stdlib/cxa_finalize.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs.
-+ * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust.
-+ * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
-+
-+ * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset
-+ into high and low halves on n64.
-+ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h (atomic_decrement_if_positive): Adjust for the
-+ correct atomic_compare_and_exchange_acq semantics.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/ieee754.h: Remove excess #endif.
-+
-+2003-03-20 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused
-+ variable. Remove superfluous memory clobber.
-+
-+ * include/atomic.h: Syntax braino fix.
-+
-+ * posix/tst-nice.c (do_test): Use %m formats instead of printing errno
-+ in decimal. Don't bail if niced at start. Just check that nice call
-+ bumps the total at all.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers,
-+ including pc, gp, sp and fp, as long long.
-+ * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux.
-+ * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments.
-+ Add gp argument, and set gp in the jmpbuf to it.
-+ * sysdeps/mips/setjmp_aux.c: Revert to o32-only.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h: Define atomic_exchange and
-+ atomic_decrement_if_positive if not already defined. Add some
-+ __builtin_expect.
-+ * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+ * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange.
-+ * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define
-+ atomic_exchange, atomic_exchange_and_add, and
-+ atomic_decrement_if_positive
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend
-+ with a single instruction.
-+
-+ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define
-+ properly for n64.
-+ (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr
-+ type.
-+ (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf
-+ Word before comparing with gotsym. Take reloc_addr argument as
-+ void*. Remove the code added for the compiler to drop any
-+ alignment assumptions.
-+
-+2003-03-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makefile (distribute): Add include/atomic.h and bits/atomic.h.
-+ * include/atomic.h: New file.
-+ * sysdeps/i386/i486/bits/atomic.h: New file.
-+ * sysdeps/x86_64/bits/atomic.h: New file.
-+ * sysdeps/s390/bits/atomic.h: New file.
-+ * sysdeps/sh/bits/atomic.h: New file.
-+ * sysdeps/ia64/bits/atomic.h: New file.
-+ * sysdeps/powerpc/bits/atomic.h: New file.
-+ * sysdeps/generic/bits/atomic.h: New file.
-+ * sysdeps/i386/i486/atomicity.h: Removed.
-+ * sysdeps/x86_64/atomicity.h: Removed.
-+ * sysdeps/s390/s390-32/atomicity.h: Removed.
-+ * sysdeps/s390/s390-64/atomicity.h: Removed.
-+ * sysdeps/ia64/atomicity.h: Removed.
-+ * sysdeps/powerpc/powerpc32/atomicity.h: Removed.
-+ * sysdeps/powerpc/powerpc64/atomicity.h: Removed.
-+ * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust
-+ use of macros from atomicity.h to new names and semantics.
-+ * gmon_mcount.c: Likewise.
-+ * malloc/set-freeres.c: Likewise.
-+ * nscd/cache.c: Likewise.
-+ * stdlib/cxa_finalize.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-+
-+2003-03-19 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/ieee754.h: New file, suitable to replace both
-+ ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept
-+ mips-specific for now.
-+
-+2003-03-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle
-+ hexdigits correctly. Reported by Fred Tydeman <tydeman@tybor.com>.
-+ * stdlib/tst-strtod.c: Add test for the bug.
-+
-+ * posix/tst-nice.c (do_test): Remove invalid of return value.
-+ Don't run test if initial level != 0.
-+
-+2003-03-19 Amos Waterland <apw@us.ibm.com>
-+
-+ * posix/tst-nice.c: New file.
-+ * posix/Makefile (tests): Add tst-nice.
-+
-+2003-03-18 Roland McGrath <roland@redhat.com>
-+
-+ * abilist: New directory of libfoo.abilist files maintained using
-+ scripts/merge-abilist.awk and "make update-abi" rules.
-+ * Makefile (distribute): Add abilist/*.abilist.
-+ * Makerules [$(build-shared) = yes] [$(subdir)] (tests):
-+ Depend on check-abi.
-+
-+ * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER.
-+ * configure: Regenerated.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name.
-+
-+2003-03-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK
-+ correctly.
-+
-+2003-03-18 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/memcpy.S: New file.
-+
-+2003-03-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Versions.def: Add GLIBC_2.3.3 for libpthread.
-+
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/libc-start.c [!SHARED &&
-+ !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly.
-+
-+2003-03-17 Roland McGrath <roland@redhat.com>
-+
-+ * include/ctype.h: Revert last change.
-+
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * argp/tst-argp1.c: Use test-skeleton.c.
-+ * locale/tst-C-locale.c: Likewise.
-+
-+2003-03-17 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/Implies: Move wordsize-64 to...
-+ * sysdeps/mips/mips64/n64/Implies: New file.
-+ * sysdeps/mips/mips64/n64/Makefile: New file.
-+ * sysdeps/mips/mips64/n64/el/bits/endian.h: New file.
-+ * sysdeps/mips/mips64/n32/Implies: New file.
-+ * sysdeps/mips/mips64/n32/Makefile: New file.
-+ * sysdeps/mips/mips64/n32/el/bits/endian.h: New file.
-+ * sysdeps/unix/mips/mips64/n32/sysdep.h: New file.
-+ * sysdeps/unix/mips/mips64/n64/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
-+
-+ * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use
-+ lib64 for mips64/n64 and lib32 for mips64/n32.
-+ (ldd_rewrite_script): Needed for all mips64 configurations.
-+ * sysdeps/unix/sysv/linux/configure: Rebuilt.
-+ * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file.
-+
-+ * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as
-+ well.
-+
-+ * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process
-+ asm/unistd.h into asm-unistd.h.
-+ * sysdeps/unix/sysv/linux/mips/configure: Generated.
-+ * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing
-+ of syscall list.
-+ * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Don't include
-+ asm/unistd.h.
-+
-+ * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long
-+ long type for registers on n32.
-+
-+ * sysdeps/mips/bits/wordsize.h: New file, appropriate for all
-+ 3 ABIs.
-+ * sysdeps/mips/mips64/gmp-mparam.h: New file. Define
-+ BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs.
-+ * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros.
-+ (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs.
-+ * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs.
-+ * sysdeps/unix/mips/brk.S: Likewise.
-+ * sysdeps/unix/mips/sysdep.S: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
-+ * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise.
-+ * sysdeps/mips/sys/ucontext.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
-+ * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete.
-+ * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for
-+ 64-bit types.
-+
-+2003-03-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here,
-+ not at function level.
-+ * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise.
-+
-+2003-03-15 Roland McGrath <roland@redhat.com>
-+
-+ * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t
-+ * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise.
-+ * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise.
-+ * nis/nis_table.c (__create_ib_request): Likewise.
-+
-+ * posix/fnmatch_loop.c: Add casts for signedness.
-+ * nss/nss_files/files-hosts.c: Likewise.
-+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
-+ * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN.
-+ * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT.
-+
-+ * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND,
-+ get errors into the log file.
-+ (libc_cv_broken_visibility_attribute): Likewise.
-+ (libc_cv_broken_alias_attribute): Likewise.
-+ (libc_cv_asm_weak_directive): Likewise.
-+ (libc_cv_need_minus_P): Likewise.
-+ (libc_cv_dot_text): Likewise.
-+ (libc_cv_asm_global_directive): Likewise.
-+ (libc_cv_asm_type_prefix): Likewise.
-+ * configure: Regenerated.
-+
-+ * nscd/cache.c (cache_search): Give first arg type `request_type'.
-+ * nscd/nscd.h: Update decl.
-+
-+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness.
-+ * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
-+ * elf/dl-close.c (_dl_close): Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t
-+ * io/fts.c (fts_build): Likewise.
-+ * elf/cache.c (add_to_cache): Likewise.
-+ * locale/programs/locarchive.c (show_archive_content): Likewise.
-+
-+ * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use.
-+
-+ * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3
-+ happy.
-+ (__ctype_toupper_loc, __ctype_tolower_loc): Likewise.
-+
-+2003-03-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux
-+ code for most parts.
-+
-+2003-03-15 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/system.c: Moved to ...
-+ * sysdeps/unix/sysv/linux/system.c: ... here.
-+ (FORK): Don't #define if already #define'd.
-+ * sysdeps/unix/sysv/linux/s390/system.c: File removed.
-+ * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]:
-+ (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64.
-+
-+ * dlfcn/tst-dlinfo.c: New file.
-+ * dlfcn/Makefile (tests): Add tst-dlinfo.
-+ ($(objpfx)tst-dlinfo): New target.
-+
-+ * dlfcn/dlinfo.c: New file.
-+ * dlfcn/Makefile (libdl-routines): Add it.
-+ * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo.
-+ * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo.
-+ [__USE_GNU] (RTLD_DI_*): New enum constants.
-+ [__USE_GNU] (Dl_serpath, Dl_serinfo): New types.
-+ * elf/dl-load.c (cache_rpath): New inline function.
-+ (_dl_map_object): Use it.
-+ (_dl_rtld_di_serinfo): New function.
-+ * sysdeps/generic/ldsodefs.h: Declare it.
-+ * elf/Versions (ld: GLIBC_PRIVATE): Add it.
-+
-+ * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it.
-+ (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG)
-+ (INIT_MAIN_ARGS): Define, and #include <sysdeps/generic/libc-start.c>.
-+ (__libc_start_main): Just call the generic one for most of the work.
-+
-+ * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a
-+ static function by that name instead of BP_SYM (__libc_start_main).
-+ [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument.
-+ [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN.
-+ [INIT_MAIN_ARGS]: Give INIT the same args as MAIN.
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]:
-+ Use this macro for extra AT_* cases.
-+ * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV):
-+ New macro, guts from ...
-+ (__aux_init_cache): ... here, function removed.
-+ (DL_PLATFORM_INIT): Don't define this.
-+
-+ * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss.
-+ * sysdeps/powerpc/powerpc64/memset.S: Likewise.
-+
-+ * Versions.def (libthread_db): Add GLIBC_2.3.3 set.
-+
-+2003-03-14 Roland McGrath <roland@redhat.com>
-+
-+ * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it.
-+
-+2003-03-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo.
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include
-+ sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c.
-+
-+2003-03-14 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/fpu/bits/mathdef.h: New.
-+ (__NO_LONG_DOUBLE_MATH): Define for o32.
-+
-+ * sysdeps/mips/sys/asm.h: Formatting changes.
-+ (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs.
-+ (CPADD): Define for all of them.
-+ (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64,
-+ SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP,
-+ NARGSAVE): Define per ABI spec.
-+ (END): Don't redefine.
-+ (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA,
-+ LONG_SRAV): Remove duplicate definitions.
-+ (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI,
-+ PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL,
-+ PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32.
-+ (PTR_LA): Define for all 3 ABIs.
-+
-+ * sysdeps/mips/dl-machine.h: Include sys/asm.h.
-+ (elf_machine_matches_host): Prevent linking of o32 and n32
-+ together.
-+ (elf_machine_dynamic): Document assumption on $gp.
-+ (STRINGXP, STRINGXV, STRINGV_): New macros.
-+ (elf_machine_load_address): Use them to stringize PTR_LA and
-+ PTR_SUBU.
-+ (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS,
-+ ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in...
-+ (_dl_runtime_resolve): Adjust it for all 3 ABIs.
-+ (__dl_runtime_resolve): Cast the symtab initializer to the
-+ right type.
-+ (RTLD_START): Use it. Adjust it for all 3 ABIs.
-+ (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP.
-+ Handle 64-bit R_MIPS_REL composite relocation and accept
-+ R_MIPS_64 relocations to shift addend size to 64 bits.
-+ Document assumption regarding local GOT entries. Document
-+ backward-compatibility departing from the ABI behavior in
-+ applying relocations that reference section symbols, no longer
-+ used. Support relocations to mis-aligned offsets.
-+ * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete.
-+
-+ * sysdeps/unix/sysv/linux/mips/readelflib.c: New file.
-+
-+ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
-+ (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG.
-+ * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and
-+ restore_rt functions. Use them.
-+
-+ * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't
-+ .set mips2 on new abis.
-+
-+2003-03-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/getconf.c: Recognize POSIX2_SYMLINKS.
-+ * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS.
-+ * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS.
-+ * sysdeps/posix/pathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/fpathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks.
-+
-+ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic
-+ words.
-+
-+2003-03-14 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * include/gmp.h: Include/gmp-mparam.h.
-+ * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and
-+ gmp-impl.h.
-+
-+ * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if
-+ ELF_MACHINE_NO_RELA is set.
-+ * elf/rtld.c (dl_main): No prelink support for REL-only.
-+
-+ * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32,
-+ FLAG_MIPS64_LIBN64): Define.
-+ * elf/cache.c (print_entry): Handle mips64 n32 and n64.
-+
-+ * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis.
-+ * sysdeps/mips/memset.S: Likewise.
-+ * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11
-+ depending on the ABI.
-+
-+ * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add):
-+ Don't .set mips2 on new abi.
-+ (compare_and_swap): Likewise. Support 64-bit longs on n64.
-+
-+ * stdlib/fpioconst.h: Include gmp.h with angle brackets.
-+
-+2003-03-13 Roland McGrath <roland@redhat.com>
-+
-+ * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs
-+ found. Reported by Alexandre Oliva <aoliva@redhat.com>.
-+
-+2003-03-13 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit
-+ literals long long.
-+ * stdlib/fpioconst.c: Likewise.
-+ * stdlib/strtod.c: Likewise.
-+
-+ * sysdeps/mips/add_n.S: Use L macro for local labels.
-+ * sysdeps/mips/addmul_1.S: Likewise.
-+ * sysdeps/mips/lshift.S: Likewise.
-+ * sysdeps/mips/memcpy.S: Likewise.
-+ * sysdeps/mips/memset.S: Likewise.
-+ * sysdeps/mips/mul_1.S: Likewise.
-+ * sysdeps/mips/rshift.S: Likewise.
-+ * sysdeps/mips/sub_n.S: Likewise.
-+ * sysdeps/mips/submul_1.S: Likewise.
-+ * sysdeps/mips/mips64/add_n.S: Likewise.
-+ * sysdeps/mips/mips64/addmul_1.S: Likewise.
-+ * sysdeps/mips/mips64/lshift.S: Likewise.
-+ * sysdeps/mips/mips64/mul_1.S: Likewise.
-+ * sysdeps/mips/mips64/rshift.S: Likewise.
-+ * sysdeps/mips/mips64/sub_n.S: Likewise.
-+ * sysdeps/mips/mips64/submul_1.S: Likewise.
-+ * sysdeps/unix/mips/sysdep.h: Define L() according to ABI
-+ conventions. Define END as in sys/asm.h.
-+ * sysdeps/unix/mips/sysdep.S: Likewise.
-+ * sysdeps/unix/mips/wait.S: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
-+
-+ * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double):
-+ Cast shifted values that may be too narrow to mp_limb_t.
-+ * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double):
-+ Likewise.
-+ * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float):
-+ Likewise.
-+ * sysdeps/ieee754/ldbl-128/ldbl2mpn.c
-+ (__mpn_extract_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-128/mpn2ldbl.c
-+ (__mpn_construct_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-96/ldbl2mpn.c
-+ (__mpn_extract_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-96/mpn2ldbl.c
-+ (__mpn_construct_long_double): Likewise.
-+
-+2003-03-13 Roland McGrath <roland@redhat.com>
-+
-+ * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line
-+ entries in the map file match too.
-+
-+2003-03-13 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local
-+ label .Lthread_start since current binutils don't allow branches
-+ to globally visible symbols.
-+
-+2003-03-13 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN,
-+ ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3,
-+ ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define.
-+ (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments
-+ clobbered by the syscall.
-+ (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5,
-+ ASM_ARGS_6): Change constraints from r to index of corresponding
-+ output register.
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap
-+ ptid and ctid to match kernel.
-+ * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise.
-+
-+2003-03-12 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/elf/configure.in: Remove
-+ AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64.
-+ * sysdeps/powerpc/powerpc64/elf/configure: Regenerated.
-+
-+2003-03-11 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela):
-+ Check SYM_MAP rather than SYM as definedness check.
-+ Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs.
-+ Don't handle R_PPC64_REL24 reloc.
-+ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h
-+ [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a
-+ block, so we cover all the TPREL16* flavors without 6 ||s.
-+ [USE_TLS] (elf_machine_tprel): New function.
-+ (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc,
-+ and handle TPREL16 relocs too. Return rather than break for DTPREL64.
-+ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+2003-03-11 Ralf Baechle <ralf@linux-mips.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal
-+ instead of jalr to invoke subroutine so restoring the $gp register
-+ will work properly.
-+
-+2003-03-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define
-+ to __NR_pread if not defined.
-+ (__NR_pwrite64): Define to __NR_pwrite if not defined.
-+
-+2003-03-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/system.c: New file.
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with
-+ kernel >= 2.5.64.
-+
-+2003-03-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1,
-+ allocate space even for the trailing '/'.
-+ Reported by John Reiser <jreiser@BitWagon.com>.
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6,
-+ ASM_CLOBBERS_6): Define.
-+ (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6.
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments
-+ to match IA-32 order.
-+ * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment.
-+
-+2003-03-10 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7.
-+ Copy extra params for NPTL to registers used in clone syscall.
-+
-+2003-03-10 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system
-+ call names for pread and pwrite.
-+
-+2003-03-10 Roland McGrath <roland@redhat.com>
-+
-+ * dlfcn/Makefile (libdl-routines): Add dladdr1.
-+ * dlfcn/dladdr1.c: New file.
-+ * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1.
-+ [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants.
-+ * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and
-+ a const ElfNN_Sym ** to fill in.
-+ * include/dlfcn.h: Update decl. Include <link.h>.
-+ * dlfcn/dladdr.c (dladdr): Update caller.
-+ * malloc/mtrace.c (tr_where): Likewise.
-+ * sysdeps/generic/elf/backtracesyms.c: Likewise.
-+ * sysdeps/generic/elf/backtracesymsfd.c: Likewise.
-+ * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1.
-+ * Versions.def (libdl): Define GLIBC_2.3.3 set.
-+
-+ * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for
-+ assembler command.
-+ * sysdeps/unix/Makefile (compile-syscall): New variable.
-+ Pass -g0 to compiler for assembling syscall stubs from stdin.
-+
-+ * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO]
-+ (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END):
-+ Define these to do nothing.
-+
-+ * configure.in: New check for -g on .S files.
-+ * configure: Regenerated.
-+ * config.make.in (have-cpp-asm-debuginfo): New variable.
-+ * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef.
-+ * Makeconfig (ASFLAGS): New variable, if undefined and
-+ $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS).
-+ * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS).
-+
-+2003-03-09 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args
-+ used by NPTL on new kernels. From Paul Mackerras <paulus@samba.org>.
-+
-+2003-03-09 Ulrich Drepper <drepper@redhat.com>
-+
-+ * po/fi.po: Update from translation team.
-+ * po/ca.po: Likewise.
-+ * po/da.po: Likewise.
-+
-+2003-03-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Change BYTES into a #define.
-+
-+2003-03-07 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too.
-+
-+ * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment.
-+
-+2003-03-07 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo.
-+ * sysdeps/s390/s390-64/sysdep.h (L): Likewise.
-+
-+2003-03-04 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded
-+ stubs, we have INLINE_SYSCALL.
-+ * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE,
-+ MAP_NONBLOCK.
-+
-+2003-03-06 Roland McGrath <roland@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1
-+ permanent extent and add a comment about testing its implicit teardown.
-+
-+2003-03-06 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope.
-+
-+2003-03-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix
-+ reversed __builtin_expect expectation.
-+
-+2003-03-05 Roland McGrath <roland@redhat.com>
-+
-+ * stdio-common/sscanf.c: Use prototype defn with ... syntax.
-+ * libio/swscanf.c: Likewise.
-+ * libio/swprintf.c: Likewise.
-+
-+2003-03-04 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h: Include <dl-tls.h>.
-+ (elf_machine_rela): Always use RESOLVE_MAP, needed for
-+ R_PPC64_JMP_SLOT as well as TLS cases.
-+ (BIT_INSERT): Move parenthesis where it ought to have been.
-+ Reported by Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+ * posix/confstr.c (confstr): Correct STRING_LEN values for
-+ _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing
-+ break. Reported by Alexandre Julliard <julliard@winehq.com>.
-+
-+2003-03-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/fpu/libm-test-ulps: Regenerated.
-+
-+2003-03-04 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new
-+ clone parameters.
-+
-+ * po/sv.po: Update from translation team.
-+
-+2003-03-04 Andreas Jaeger <aj@suse.de>
-+ Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.h: Add double include protection.
-+
-+ * po/tr.po: Update from translation team.
-+
-+ * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there
-+ are holes between the segments. Only call mprotect to set
-+ proection to PROT_NONE if there are some.
-+
-+ * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE.
-+ Update comment.
-+
-+ * include/sched.h (__clone2): Use ... instead of adding all the
-+ new parameters.
-+
-+2003-03-03 Roland McGrath <roland@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): Fix typo in last change.
-+
-+ * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define
-+ PI_STATIC_AND_HIDDEN.
-+
-+2003-03-03 Ian Wienand <ianw@gelato.unsw.edu.au>
-+
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone
-+ flags.
-+ * include/sched.h: Update clone2 prototype.
-+
-+2003-03-03 Andreas Jaeger <aj@suse.de>
-+
-+ * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
-+ (llrint): Use it to correct return type.
-+ (lrint): Likewise.
-+ (lround): Likewise.
-+ (llround): Likewise.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640
-+ byte filebuf size.
-+
-+ * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor
-+ if ccs parameter isn't valid. Reported by Andreas Schwab.
-+
-+2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support
-+ for system call numbers > 255.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL,
-+ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
-+ INTERNAL_SYSCALL): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL,
-+ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
-+ INTERNAL_SYSCALL): Likewise.
-+
-+2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv
-+ array if it is the initial dtv.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * po/es.po: Update from translation team.
-+ * po/fr.po: Likewise.
-+ * po/gl.po: Likewise.
-+ * po/sk.po: Likewise.
-+ * po/sv.po: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry.
-+ * misc/sys/mman.h: Add prototype for remap_file_pages.
-+ * sysdeps/generic/remap_file_pages.c: New file.
-+ * misc/Makefile (routines): Add remap_file_pages.
-+ * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE
-+ and MAP_NONBLOCK.
-+ * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise
-+ * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
-+
-+2003-03-03 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change.
-+ * sysdeps/ia64/dl-machine.h: Likewise.
-+ * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from
-+ argument type.
-+ * sysdeps/ia64/dl-lookupcfg.h: Update decl.
-+
-+ * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias.
-+ * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias.
-+ * locale/Versions (libc: GLIBC_2.3): Move those to ...
-+ * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file.
-+ * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise.
-+ * Versions.def (libc): Add GLIBC_2.3.3 set.
-+
-+ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg.
-+ * sysdeps/ia64/dl-machine.h: Update decl.
-+
-+2003-03-03 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace.
-+
-+2003-03-02 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Reject data items with apparent 0 size.
-+
-+ * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar
-+ after foo.* as if it were a duplicate.
-+
-+ * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk.
-+
-+2003-03-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes.
-+
-+ * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC.
-+ * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETRES to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_getres.c: New file
-+ * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETTIME to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_gettime.c: New file.
-+ * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETTIME to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_settime.c: New file.
-+ * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow
-+ other files to provide alternative implementations. Rearrange
-+ tests for invalid parameters.
-+ * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file.
-+ * sysdeps/unix/sysv/linux/sysconf.c: New file.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up.
-+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
-+ _POSIX_MONOTONIC_CLOCK.
-+
-+2003-03-02 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/merge-abilist.awk: More checks for bogus input.
-+ Uniquify duplicate config names.
-+
-+ * scripts/abilist.awk: Don't distinguish weak symbols in normal output.
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed
-+ from dl_reloc_overflow, make global.
-+ (__process_machine_rela): Update callers.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow.
-+ Add attribute_hidden to __process_machine_rela decl.
-+ (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs.
-+
-+ * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const
-+ variable.
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt):
-+ Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED].
-+ (elf_machine_rela): Clean up.
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up.
-+
-+ PowerPC TLS support contributed by Paul Mackerras <paulus@samba.org>.
-+ * sysdeps/powerpc/powerpc32/elf/configure.in: New file.
-+ * sysdeps/powerpc/powerpc32/elf/configure: New generated file.
-+ * elf/tls-macros.h [__powerpc__ && !__powerpc64__]
-+ (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support
-+ new relocs for TLS.
-+
-+ * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these
-+ macros out of [SHARED].
-+ (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros.
-+
-+ * elf/elf.h: Define R_PPC_* relocs for TLS support.
-+ Clean up R_PPC64_* macro definition comments.
-+
-+ * configure.in: In "running configure fragment for" message,
-+ omit $srcdir from the name if we prepended it.
-+ * configure: Regenerated.
-+
-+ * elf/dl-reloc.c (allocate_static_tls): Fix calculations.
-+ From Jakub Jelinek <jakub@redhat.com>.
-+
-+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change,
-+ which duplicated the O_DIRECT defn.
-+
-+2003-03-01 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived
-+ random functions.
-+
-+2003-03-01 Andreas Schwab <schwab@suse.de>
-+
-+ * resolv/Makefile (tests): Don't depend on
-+ $(objpfx)mtrace-tst-leaks when cross compiling.
-+
-+ * sysdeps/m68k/dl-machine.h (_dl_start_user): Access
-+ __libc_stack_end through GOT since it is a global symbol.
-+
- 2003-03-01 GOTO Masanori <gotom@debian.or.jp>
-
- * argp/argp.h: Fix a typo.
-@@ -5561,6 +11477,16 @@
- (common-mostlyclean, common-clean): Clean up rtld-* files.
- * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules.
-
-+2003-05-20 Jakub Jelinek <jakub@redhat.com>
-+
-+ * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument.
-+ If temp != NULL, copy dynamic entries which need relocation to temp
-+ array before relocating.
-+ (DL_RO_DYN_TEMP_CNT): Define.
-+ * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller.
-+ * elf/rtld.c (_dl_start): Likewise.
-+ (dl_main): Likewise. Add dyn_temp static variable.
-+
- 2002-10-11 Roland McGrath <roland@redhat.com>
-
- * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in
---- glibc-2.3.2/Makeconfig 2003-01-06 00:31:36.000000000 -0500
-+++ glibc-2.3.2/Makeconfig 2003-09-19 22:37:01.000000000 -0400
-@@ -83,6 +83,12 @@
- # Get the values defined by options to `configure'.
- include $(common-objpfx)config.make
-
-+# What flags to give to sources which call user provided callbacks
-+uses-callbacks = $(exceptions)
-+
-+# What flags to give to tests which test stack alignment
-+stack-align-test-flags =
-+
- # We have a special subdir for each binary format.
- # For now, only ELF is fully supported.
- ifeq ($(elf),yes)
-@@ -505,7 +511,7 @@
- link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a)
-
- ifndef gnulib
--gnulib := -lgcc
-+gnulib := -lgcc -lgcc_eh
- endif
- ifeq ($(elf),yes)
- +preinit = $(addprefix $(csu-objpfx),crti.o)
-@@ -621,7 +627,7 @@
- +includes = -I$(..)include -I. \
- $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
- $(libio-include) $(includes) \
-- $(+sysdep-includes) $(last-includes) $(sysincludes)
-+ $(+sysdep-includes) $(sysincludes)
-
- # Since libio has several internal header files, we use a -I instead
- # of many little headers in the include directory.
-@@ -669,6 +675,8 @@
- libtype.os := lib%_pic.a
- # This can be changed by a sysdep makefile
- pic-ccflag = -fPIC
-+# This one should always stay like this unless there is a very good reason.
-+PIC-ccflag = -fPIC
- endif
- ifeq (yes,$(build-profile))
- # Under --enable-profile, we will build a static library of profiled objects.
-@@ -711,11 +719,20 @@
- # Must build the routines as PIC, though, because they can end up in (users')
- # shared objects. We don't want to use CFLAGS-os because users may, for
- # example, make that processor-specific.
--CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
-+CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
- CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
- libtype.oS = lib%_nonshared.a
- endif
-
-+# The assembler can generate debug information too.
-+ifndef ASFLAGS
-+ifeq ($(have-cpp-asm-debuginfo),yes)
-+ASFLAGS := $(filter -g%,$(CFLAGS))
-+else
-+ASFLAGS :=
-+endif
-+endif
-+ASFLAGS += $(ASFLAGS-config)
-
- +gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
-
-@@ -921,11 +938,11 @@
- all-Depend-files = $(wildcard $(..)*/Depend)
- $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \
- $(common-objpfx)sysd-dirs $(..)Makeconfig
-- { { dirs='$(patsubst $(..)%/Depend,$(..)%,$(filter %/Depend,$^))';\
-+ { { dirs='$(patsubst $(..)%/Depend,%,$(filter %/Depend,$^))'; \
- for d in $$dirs; do \
- while read on; do \
- echo "depend $$d $$on"; \
-- done < $$d/Depend; \
-+ done < $(..)$$d/Depend; \
- done; \
- for f in $(all-subdirs); do \
- echo $$f; \
---- glibc-2.3.2/Makefile 2003-02-21 01:22:51.000000000 -0500
-+++ glibc-2.3.2/Makefile 2003-09-19 22:37:01.000000000 -0400
-@@ -228,6 +228,18 @@
- tests-clean:
- @$(MAKE) subdir_testclean no_deps=t
-
-+tests: $(objpfx)c++-types-check.out
-+ifneq ($(CXX),no)
-+ifneq (,$(wildcard scripts/data/c++-types-$(base-machine)-$(config-os).data))
-+$(objpfx)c++-types-check.out: scripts/data/c++-types-$(base-machine)-$(config-os).data
-+ scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99,$(CFLAGS)) $(CPPFLAGS) > $@
-+else
-+$(objpfx)c++-types-check.out:
-+ @echo 'WARNING C++ tests not run; create a c++-types-XXX file'
-+ @echo "not run" > $@
-+endif
-+endif
-+
- # The realclean target is just like distclean for the parent, but we want
- # the subdirs to know the difference in case they care.
- realclean distclean: parent-clean
-@@ -274,6 +286,7 @@
- include/shlib-compat.h include/pthread.h Versions.def \
- cppflags-iterator.mk tls.make.c \
- include/stubs-prologue.h include/gnu/stubs.h \
-+ include/atomic.h bits/atomic.h \
- INTERFACE CONFORMANCE NAMESPACE LICENSES \
- $(addprefix scripts/, \
- rellns-sh config.sub config.guess \
-@@ -282,7 +295,11 @@
- gen-sorted.awk abi-versions.awk abilist.awk \
- firstversions.awk documented.sh cpp \
- output-format.sed gen-as-const.awk \
-- merge-abilist.awk extract-abilist.awk)
-+ merge-abilist.awk extract-abilist.awk \
-+ rpm2dynsym.sh \
-+ ) \
-+ $(wildcard scripts/data/*.data) \
-+ $(wildcard abilist/*.abilist)
-
- distribute := $(strip $(distribute))
- generated := $(generated) stubs.h
-@@ -318,12 +335,6 @@
- iconvdata/% localedata/% po/% manual/%:
- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
-
--# This is a special goal for people making binary distributions. Normally
--# everybody uses the DES based crypt library but for the distribution we
--# need the only-MD5 based one as well.
--md5-crypt/libmd5crypt:
-- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
--
- # glibc 2.0 contains some header files which aren't used with glibc 2.1
- # anymore.
- # These rules should remove those headers
---- glibc-2.3.2/Makefile.in 2000-11-15 18:03:08.000000000 -0500
-+++ glibc-2.3.2/Makefile.in 2002-11-16 08:53:55.000000000 -0500
-@@ -1,4 +1,4 @@
--# Generated from $Id: Makefile.in,v 1.7 2000/11/15 23:03:08 drepper Exp $.
-+# Generated from $Id: Makefile.in,v 1.6 1998/02/26 14:51:55 drepper Exp $.
-
- srcdir = @srcdir@
-
---- glibc-2.3.2/Makerules 2003-02-22 18:23:31.000000000 -0500
-+++ glibc-2.3.2/Makerules 2003-09-19 22:37:01.000000000 -0400
-@@ -125,29 +125,9 @@
- endif # avoid-generated
- endif # $(versioning) = yes
-
--
--# Generating headers for assembly constants.
--# We need this defined early to get into before-compile before
--# it's used in sysd-rules, below.
--$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
-- %.sym $(before-compile)
-- $(AWK) -f $< $(filter %.sym,$^) \
-- | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \
-- -MD -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \
-- | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T
-- sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
-- $(@:.h=.h.d)T > $(@:.h=.h.d)T2
-- rm -f $(@:.h=.h.d)T
-- mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
-- mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
--vpath %.sym $(sysdirs)
--before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
--
--
--# When we have no deps pass doing it, then make sure the subdirectory
--# for object files gets created.
--ifdef no_deps
-+# Make sure the subdirectory for object files gets created.
- ifdef objpfx
-+ifeq (,$(wildcard $(objpfx).))
- before-compile += $(objpfx).
- $(objpfx).:
- $(make-target-directory)
-@@ -166,26 +146,59 @@
- $(before-compile):
- endif
-
-+# We don't want $(common-objpfx) files to depend on miscellaneous stuff
-+# in subdirs.
-+ifdef subdir
-+common-before-compile := $(filter-out $(objpfx)%,$(before-compile))
-+else
-+common-before-compile = $(before-compile)
-+endif
-+
-+ifndef subdir
- # If a makefile needs to do something conditional on something that
- # can only be figured out from headers, write a FOO.make.c input
- # file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
- # to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
--$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(before-compile)
-+#
-+# We only generate these in the top-level makefile, to avoid any weirdness
-+# from subdir-specific makefile tweaks creeping in on an update.
-+$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
- rm -f $@T $@.dT
- (echo '# Generated from $*.make.c by Makerules.'; \
-- SUNPRO_DEPENDENCIES='$@.dT $$(common-objpfx)$*.make' \
- $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \
-+ -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
- | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
- echo 'common-generated += $(@F)'; \
- sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
- rm -f $@.dT) > $@T
- mv -f $@T $@
-+endif
-
- ifdef subdir
--sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g'
-+sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
-+ -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'
- else
--sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g'
-+sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
-+ -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g'
- endif
-+
-+
-+# Generating headers for assembly constants.
-+# We need this defined early to get into before-compile before
-+# it's used in sysd-rules, below.
-+$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
-+ %.sym $(common-before-compile)
-+ $(AWK) -f $< $(filter %.sym,$^) \
-+ | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \
-+ -MD -MP -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \
-+ | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T
-+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
-+ $(@:.h=.h.d)T > $(@:.h=.h.d)T2
-+ rm -f $(@:.h=.h.d)T
-+ mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
-+ mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
-+vpath %.sym $(sysdirs)
-+before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
-
- # Generate an ordered list of implicit rules which find the source files in
- # each sysdep directory. The old method was to use vpath to search all the
-@@ -193,15 +206,6 @@
- # later directory would be chosen over a .c file in an earlier directory,
- # which does not preserve the desired sysdeps ordering behavior.
-
--# When making the list of .d files to include, we can't know which ones
--# have source in .s files, and thus do not in fact need a .d file.
--# So we must define rules to make .d files for .s files.
--define make-dummy-dep
--$(addprefix ln $(common-objpfx)dummy.d ,$(filter-out $(wildcard $@),$@))
--endef
--$(common-objpfx)dummy.d:
-- echo '# .s files cannot contain includes, so they need no deps.' > $@
--
- # 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
-@@ -212,21 +216,18 @@
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: %.S $(before-compile); $(+make-deps)
-
- define o-iterator-doit
- $(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep)
-
- define o-iterator-doit
- $(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: %.c $(before-compile); $(+make-deps)
-
- # Omit the objpfx rules when building in the source tree, because
- # objpfx is empty and so these rules just override the ones above.
-@@ -238,21 +239,18 @@
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
-
- define o-iterator-doit
- $(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep)
-
- define o-iterator-doit
- $(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
- endef
- object-suffixes-left := $(all-object-suffixes)
- include $(o-iterator)
--$(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
- endif
-
- # System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
-@@ -301,26 +299,6 @@
- echo "\$$(objpfx)ptw-%$$o: $$dir/%.c \$$(before-compile); \
- \$$(compile-command.c)"; \
- done; \
-- $(open-check-inhibit-asm) \
-- echo "\$$(objpfx)%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
-- \$$(make-dummy-dep)"; \
-- echo "\$$(objpfx)rtld-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
-- \$$(make-dummy-dep)"; \
-- echo "\$$(objpfx)ptw-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
-- \$$(make-dummy-dep)"; \
-- echo "\$$(objpfx)%.d: $$dir/%.S \$$(before-compile); \
-- \$$(+make-deps)"; \
-- echo "\$$(objpfx)rtld-%.d: $$dir/%.S \$$(before-compile); \
-- \$$(+make-deps)"; \
-- echo "\$$(objpfx)ptw-%.d: $$dir/%.S \$$(before-compile); \
-- \$$(+make-deps)"; \
-- $(close-check-inhibit-asm) \
-- echo "\$$(objpfx)%.d: $$dir/%.c \$$(before-compile); \
-- \$$(+make-deps)"; \
-- echo "\$$(objpfx)rtld-%.d: $$dir/%.c \$$(before-compile); \
-- \$$(+make-deps)"; \
-- echo "\$$(objpfx)ptw-%.d: $$dir/%.c \$$(before-compile); \
-- \$$(+make-deps)"; \
- echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)"; \
- echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)"; \
- done; \
-@@ -383,32 +361,20 @@
- endif # $(versioning) = yes
- endif # sysd-sorted-done
-
--
--ifndef compile-command.S
--compile-command.S = $(compile.S) $(OUTPUT_OPTION)
--endif
--ifndef compile-command.s
--compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION)
--endif
--ifndef compile-command.c
--compile-command.c = $(compile.c) $(OUTPUT_OPTION)
--endif
-+# Generate .dT files as we compile.
-+compile-mkdep-flags = -MD -MP -MF $@.dt
-+compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-+compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags)
-+compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-
- # GCC can grok options after the file name, and it looks nicer that way.
- compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
--compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
--COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
-+compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
-+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
-+COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
-+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
- COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
-
--# If we want to generate MD5 checksums for the sources do this now.
--ifeq ($(md5),yes)
--generate-md5 = ; rm -f $(@:.d=.md5); \
--$(CC) -E $< $(CFLAGS) $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | \
--sed '/^\#/d;/^[[:space:]]*$$/d' | md5sum > $(@:.d=.md5)
--else
--generate-md5 =
--endif
--
- # We need this for the output to go in the right place. It will default to
- # empty if make was configured to work with a cc that can't grok -c and -o
- # together. You can't compile the C library with such a compiler.
-@@ -418,14 +384,16 @@
- # the dependency run for C sources. But having it for assembly sources can
- # get the wrong predefines.
- S-CPPFLAGS = -DASSEMBLER $(asm-CPPFLAGS)
-+
- define +make-deps
- $(make-target-directory)
- $(+mkdep) $< $(if $(filter %.c,$<),$(CFLAGS)) \
-- $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | sed \
---e 's,$(subst .,\.,$*)\.o,$(foreach o,$(all-object-suffixes),$(@:.d=$o)) $@,' \
--$(sed-remove-objpfx) > $(@:.d=.T)
-+ $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | sed -e\
-+'s,$(subst .,\.,$(@F:.d=.o)),$(foreach o,$(all-object-suffixes),$(@:.d=$o)) $@,' \
-+$(sed-remove-objpfx) $(sed-remove-dotdot) > $(@:.d=.T)
- mv -f $(@:.d=.T) $@ $(generate-md5)
- endef
-+
- ifneq (,$(objpfx))
- # Continuation lines here are dangerous because they introduce spaces!
- define sed-remove-objpfx
-@@ -509,17 +477,23 @@
- ifeq (yes,$(elf))
- # binutils only position loadable notes into the first page for binaries,
- # not for shared objects
--define build-shlib
--$(build-shlib-helper) \
-- -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \
-- $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \
-- sed -e '/^=========/,/^=========/!d;/^=========/d' \
-+$(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
-+ $(LINK.o) -shared -Wl,-O1 \
-+ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS.so) \
-+ -Wl,--verbose 2>&1 | \
-+ sed > $@T \
-+ -e '/^=========/,/^=========/!d;/^=========/d' \
- -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
-- $(LDSEDCMD-$(@F:lib%.so=%).so) > $@.lds
--rm -f $@.new
--$(build-shlib-helper) -o $@ -T $@.lds \
-+ -e 's/^.*\*(\.dynbss).*$$/& \
-+ PROVIDE(__start___libc_freeres_ptrs = .); \
-+ *(__libc_freeres_ptrs) \
-+ PROVIDE(__stop___libc_freeres_ptrs = .);/'
-+ mv -f $@T $@
-+common-generated += shlib.lds
-+
-+define build-shlib
-+$(build-shlib-helper) -o $@ -T $(common-objpfx)shlib.lds \
- $(csu-objpfx)abi-note.o $(build-shlib-objlist)
--rm -f $@.lds
- endef
- else
- ifneq (,$(findstring aix,$(config-os)))
-@@ -547,6 +521,7 @@
- else
- define build-module-helper
- $(LINK.o) -shared $(static-libgcc) $(sysdep-LDFLAGS) $(config-LDFLAGS) \
-+ $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \
- -B$(csu-objpfx) $(load-map-file) \
- $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
- -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
-@@ -559,16 +534,8 @@
- # binutils only position loadable notes into the first page for binaries,
- # not for shared objects
- define build-module
--$(build-module-helper) \
-- -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \
-- $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \
-- sed -e '/^=========/,/^=========/!d;/^=========/d' \
-- -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
-- > $@.lds
--rm -f $@.new
--$(build-module-helper) -o $@ -T $@.lds \
-+$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
- $(csu-objpfx)abi-note.o $(build-module-objlist)
--rm -f $@.lds
- endef
- else
- ifneq (,$(findstring aix,$(config-os)))
-@@ -590,7 +557,7 @@
-
- build-module-helper-objlist = \
- $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
-- $(filter-out $(map-file) $(+preinit) $(+postinit),$^))
-+ $(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^))
- whole-archive := -Wl,--whole-archive
-
- build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
-@@ -605,8 +572,6 @@
- LDLIBS-c.so += $(gnulib)
- # Give libc.so an entry point and make it directly runnable itself.
- LDFLAGS-c.so += -e __libc_main
--# Force the backward compatibility EH functions to be linked.
--LDFLAGS-c.so += -u __register_frame
- # Pre-link the objects of libc_pic.a so that we can locally resolve
- # COMMON symbols before we link against ld.so. This is because ld.so
- # contains some of libc_pic.a already, which will prevent the COMMONs
-@@ -616,12 +581,12 @@
- $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
- $(LINK.o) -nostdlib -nostartfiles -r -o $@ \
- $(LDFLAGS-c_pic.os) -Wl,-d -Wl,--whole-archive $^
--LDSEDCMD-c.so = -e 's/^.*\*(\.dynbss).*$$/& __start___libc_freeres_ptrs = .; *(__libc_freeres_ptrs) __stop___libc_freeres_ptrs = .;/'
- # Use our own special initializer and finalizer files for libc.so.
- $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
- $(common-objpfx)libc_pic.os \
- $(elfobjdir)/sofini.os \
-- $(elfobjdir)/interp.os $(elfobjdir)/ld.so
-+ $(elfobjdir)/interp.os $(elfobjdir)/ld.so \
-+ $(common-objpfx)shlib.lds
- $(build-shlib)
- ifeq ($(versioning),yes)
- $(common-objpfx)libc.so: $(common-objpfx)libc.map
-@@ -689,6 +654,15 @@
- +depfiles := $(addprefix $(objpfx),\
- $(filter-out $(addsuffix .d,$(omit-deps)),\
- $(+depfiles)))
-+all-dt-files := $(foreach o,$(object-suffixes-for-libc),$(+depfiles:.d=$o.dt))
-++depfiles := $(patsubst %.dt,%.d,$(wildcard $(all-dt-files))) \
-+ $(wildcard $(all-dt-files:.dt=.d))
-+
-+# This is a funny rule in that it removes its input file.
-+%.d: %.dt
-+ @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \
-+ mv -f $(@:.d=.T) $@ && \
-+ rm -f $<
-
- # Avoid the .h.d files for any .sym files whose .h files don't exist yet.
- # They will be generated when they're needed, and trying too early won't work.
-@@ -762,6 +736,7 @@
- $(objpfx)stamp$o: $(o-objects); $$(do-stamp)
- endef
- define do-stamp
-+$(make-target-directory)
- echo '$(patsubst $(objpfx)%,$(addsuffix /,$(subdir))%,$^)' > $@T
- mv -f $@T $@
- endef
-@@ -1188,15 +1163,23 @@
- LC_ALL=C \
- $(AWK) -f $< -v 'config=$(check-abi-config)' \
- $(filter %.abilist,$^) \
-- | diff -pu0 - $(filter %.symlist,$^)
-+ | { diff -pu0 - $(filter %.symlist,$^) $(check-abi-warn) ; }
- endef
-+ifeq ($(enable-check-abi),warn)
-+check-abi-warn = || echo '*** WARNING: $*.so failed ABI check'
-+endif
-
- ifeq ($(firstword $(sysd-sorted-done) f)$(firstword $(generating) f),tf)
- -include $(common-objpfx)tls.make
--config-tls-yes := tls
--config-tls-no := notls
-+config-tls := notls
-+ifeq ($(use-tls),yes)
-+config-tls := tls
-+endif
-+ifeq ($(use-thread),yes)
-+config-tls := thread
-+endif
- check-abi-config := \
-- $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls-$(use-thread))
-+ $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls)
- endif
-
- update-abi-%: $(..)scripts/merge-abilist.awk $(..)abilist/%.abilist \
-@@ -1211,7 +1194,7 @@
- endef
- else
- define update-abi
--LC_ALL=C $(AWK) -v config=$(update-abi-config) -f $^ \
-+LC_ALL=C $(AWK) -v config='$(update-abi-config)' -f $^ \
- > $(..)abilist/$*.abilist.new
- @if cmp -s $(..)abilist/$*.abilist.new $(..)abilist/$*.abilist 2> /dev/null; \
- then rm -f $(..)abilist/$*.abilist.new; \
-@@ -1233,19 +1216,23 @@
- update-abi: subdir_update-abi
- endif
-
--# Enable this when all the .abilist files are in place.
--#tests: check-abi
--
- ifeq ($(subdir),elf)
- check-abi: check-abi-libc
- update-abi: update-abi-libc
- common-generated += libc.symlist
- endif
-
-+ifeq ($(build-shared),yes)
-+ifneq ($(enable-check-abi),no)
-+ifdef subdir
-+tests: check-abi
-+endif
-+endif
-+endif
-+
- endif
-
- # There's no good place to put this - here will do.
--# The dependencies are wrong if it's run from the top level.
- ifeq ($(filter %posix, $(sysdirs)),)
- L_tmpnam = 1
- TMP_MAX = 0
-@@ -1263,24 +1250,20 @@
- $(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
- $(common-objpfx)config.make
- $(make-target-directory)
-- echo '#include "$(..)posix/bits/posix1_lim.h"' | \
-- SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \
-- $(CC) $(+includes) -E -dM -xc - -o $(@:st=hT)
-- echo '#include "$(..)misc/sys/uio.h"' | \
-- SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \
-- $(CC) -D_LIBC=1 $(+includes) -E -dM -xc - | cat - >> $(@:st=hT)
--ifdef sed-remove-objpfx
-- sed $(sed-remove-objpfx) $(@:st=dT) > $(@:st=dt)
-- cat $(@:st=dt) >> $(@:st=d)
--else
-- cat $(@:st=dT) >> $(@:st=d)
--endif
-+ { echo '#include "$(..)posix/bits/posix1_lim.h"'; \
-+ echo '#define _LIBC 1'; \
-+ echo '#include "$(..)misc/sys/uio.h"'; } | \
-+ $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \
-+ $(+includes) -xc - -o $(@:st=hT)
-+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
-+ $(@:st=dT) > $(@:st=dt)
-+ mv -f $(@:st=dt) $(@:st=d)
- fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
- filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
- iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \
- fopen_max=$${fopen_max:-16}; \
- filename_max=$${filename_max:-1024}; \
-- if [ -z $$iov_max ]; then \
-+ if [ -z "$$iov_max" ]; then \
- define_iov_max="# undef IOV_MAX"; \
- else \
- define_iov_max="# define IOV_MAX $$iov_max"; \
-@@ -1355,8 +1338,8 @@
-
- # Also remove the dependencies and generated source files.
- common-clean: common-mostlyclean
-- -rm -f $(addprefix $(objpfx),$(generated)) $(+depfiles)
-- -rm -f $(objpfx)rtld-*.d
-+ -rm -f $(addprefix $(objpfx),$(generated))
-+ -rm -f $(objpfx)*.d $(objpfx)*.dt
- -rm -fr $(addprefix $(objpfx),$(generated-dirs))
- -rm -f $(addprefix $(common-objpfx),$(common-generated))
- -rm -f $(objpfx)distinfo
-@@ -1370,17 +1353,23 @@
- .PHONY: stubs # The parent Makefile calls this target.
- stubs: $(objpfx)stubs
- endif
--s = $(sysdep_dir)/generic
- $(objpfx)stubs: $(+depfiles)
-+ifneq (,$(strip $(+depfiles)))
- # Use /dev/null since `...` might expand to empty.
-- (s=`cd $s && $(PWD_P)`; \
-- $(patsubst %/,cd % &&,$(objpfx)) \
-- sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
-- `sed -n -e '\@ $s/[^ ]*\.c@{; s@^.* $s/\([^ ]*\.c\).*$$@'"$$s"'/\1@; h; }' \
-- -e '/stub-tag\.h/{; g; p; }' \
-- $(patsubst $(objpfx)%,%,$^) /dev/null` \
-- /dev/null) > $@T
-+ c=`($(patsubst %/,cd % &&,$(objpfx)) \
-+ sed -n -e 's@\$$(common-objpfx)@$(common-objpfx)@g' \
-+ -e 's@\$$(objpfx)@$(objpfx)@g' \
-+ -e '/stub-tag\.h/{; g; s/./&/p; }' \
-+ -e '/:/{x; s/^.*$$//; x; }' \
-+ -e 's/^.*://;s/\\$$//;s/^ *\([^ ][^ ]*\) .*$$/\1/' \
-+ -e '/^[^ ][^ ]*$$/{G;s/^.*\n\(..*\)/\1/;s/\n//;h; }' \
-+ $(patsubst $(objpfx)%,%,$^)) | sort | uniq`; \
-+ sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
-+ $$c /dev/null > $@T
- mv -f $@T $@
-+else
-+ > $@
-+endif
-
- # Make the distribution tar file.
-
---- glibc-2.3.2/NEWS 2003-01-13 04:26:13.000000000 -0500
-+++ glibc-2.3.2/NEWS 2003-04-24 20:05:56.000000000 -0400
-@@ -1,10 +1,24 @@
--GNU C Library NEWS -- history of user-visible changes. 2003-1-12
--Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc.
-+GNU C Library NEWS -- history of user-visible changes. 2003-4-24
-+Copyright (C) 1992-2002,2003 Free Software Foundation, Inc.
- See the end for copying conditions.
-
- Please send GNU C library bug reports using the `glibcbug' script to
- <bugs@gnu.org>. Please send questions and suggestions to <bug-glibc@gnu.org>.
-
-+Version 2.3.3
-+
-+* New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
-+ interrogate the dynamic linker, compatible with the Solaris interface.
-+
-+* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
-+ implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
-+
-+* getifaddrs new uses on Linux the netlink interface to get the information.
-+ Implemented by Thorsten Kukuk.
-+
-+* getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF.
-+ Implemented by Ulrich Drepper.
-+
- Version 2.3.2
-
- * Thread-safe interfaces for many functions that access locale data
---- glibc-2.3.2/README-alpha 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/README-alpha 2002-11-16 08:53:55.000000000 -0500
-@@ -0,0 +1,287 @@
-+ GNU libc SNAPSHOT SYSTEM
-+ (general info)
-+ Updated 1997-9-26
-+
-+WHAT ARE GNU libc SNAPSHOTS
-+---------------------------
-+
-+Snapshots are an "image" of the main glibc development tree, captured at a
-+particular random instant in time. When you use the snapshots, you should be
-+able to maintain a local copy of libc that is no more than one day older than
-+the official source tree used by the libc maintainers.
-+
-+The primary purpose of providing snapshots is to widen the group of motivated
-+developers that would like to help test, debug, and enhance glibc, by providing
-+you with access to the "latest and greatest" source. This has several
-+advantages, and several disadvantages.
-+
-+ First the advantages:
-+
-+ o Once we have a large base of motivated testers using the snapshots,
-+ this should provide good coverage across all currently supported
-+ glibc hosts and targets. If a new bug is introduced in glibc due to
-+ fixing another bug or ongoing development, it should become
-+ obvious much more quickly and get fixed before the next general
-+ net release. This should help to reduce the chances of glibc being
-+ released to the general public with a major bug that went unnoticed
-+ during the release cycle testing because they are machine dependent.
-+ We hope to greatly improve glibc's stability and reliability by
-+ involving more people and more execution environments in the
-+ prerelease testing.
-+
-+ o With access to the latest source, any diffs that you send to fix
-+ bugs or add new features should be much easier for the glibc team
-+ to merge into the official source base (after suitable review
-+ of course). This encourages us to merge your changes quicker,
-+ while they are still "fresh".
-+
-+ o Once your diffs are merged, you can obtain a new copy of glibc
-+ containing your changes almost immediately. Thus you do not
-+ have to maintain local copies of your changes for any longer
-+ than it takes to get them merged into the official source base.
-+ This encourages you to send in changes quicker.
-+
-+ And the disadvantages:
-+
-+ o The snapshot you get will be largely untested and of unknown quality.
-+ It may fail to configure or compile. It may have serious bugs.
-+ You should always keep a copy of the last known working version
-+ before updating to the current snapshot, or at least be able to
-+ regenerate a working version if the latest snapshot is unusable
-+ in your environment for some reason.
-+
-+ If a production version of glibc has a bug and a snapshot has the fix,
-+ and you care about stability, you should put only the fix for that
-+ particular problem into your production version. Of course, if you
-+ are eager to test glibc, you can use the snapshot versions in your
-+ daily work, but users who have not been consulted about whether they
-+ feel like testing glibc should generally have something which is at
-+ least as bug free as the last released version.
-+
-+ o Providing timely response to your questions, bug reports, and
-+ submitted patches will require the glibc development team to allocate
-+ time from an already thin time budget. Please try to help us make
-+ this time as productive as possible. See the section below about
-+ how to submit changes.
-+
-+
-+WHO SHOULD TRY THE SNAPSHOTS
-+----------------------------
-+
-+Remember, these are snapshots not tested versions. So if you use
-+these versions you should be able to
-+
-+ o make sure your system stays usable
-+
-+ o locate and hopefully fix problems
-+
-+ o to port glibc to a new target yourself
-+
-+You should not use the snapshots if
-+
-+ o your system is needed in a production environment which needs
-+ stability
-+
-+ o you expect us to fix your problems since you somehow depend on them.
-+ You must be willing to fix the problems yourself, we don't want to
-+ see "I have problems, fix this" messages.
-+
-+
-+HOW TO GET THE SNAPSHOTS
-+------------------------
-+
-+At the moment we provide a full snapshot weekly (every sunday), so
-+that users getting a snapshot for the first time, or updating after
-+a long period of not updating, can get the latest version in a single
-+operation. Along with the full snapshot, we will provide incremental
-+diffs on a nearly daily basis (whenever code changes). Each daily
-+diff will be relative to the source tree after applying all previous
-+daily diffs. The daily diffs are for people who have relatively low
-+bandwidth ftp or uucp connections.
-+
-+The files will be available via anonymous ftp from alpha.gnu.org, in
-+directory /gnu/libc and on linux.kernel.org in /pub/software/libs/glibc. The
-+directories should look something like:
-+
-+ libc-970921.tar.gz
-+ libc-970917-970922.diff.gz
-+ libc-970922-970925.diff.gz
-+ .
-+ .
-+ .
-+
-+Please note that the snapshots on alpha.gnu.org and on
-+linux.kernel.org are not always in sync. Patches to some files might
-+appear a day a diff earlier or later on alpha than on kernel.
-+Use always alpha or always kernel but don't mix them.
-+
-+There are sometimes additionally test releases of the add-ons available in
-+these directories. If a new version of an add-on is available it is normally
-+required for the corresponding snapshot so always pay attention for these.
-+
-+Note that we provide GNU gzip compressed files only. You can ftp gzip
-+from ftp.gnu.org in directory pub/gnu.
-+
-+In some cases the dates for diffs and snapshots do not match like in the
-+example above. The full release is for 970921 but the patch is for
-+970917-970922. This only means that nothing changed between 970917 and 970922
-+and that you have to use this patch on top of the 970921 snapshot since the
-+patch is made on 970922.
-+
-+Also, as the gcc developers did with their gcc snapshot system, even though we
-+will make the snapshots available on a publically accessible ftp area, we ask
-+that recipients not widely publicise their availability. The motivation for
-+this request is not to hoard them, but to avoid the situation where the
-+general glibc user base naively attempts to use the snapshots, has trouble with
-+them, complains publically, and the reputation of glibc declines because of a
-+perception of instability or lack of quality control.
-+
-+
-+GLIBC TEST SUITE
-+----------------
-+
-+A test suite is distributed as an integral part of the snapshots. A simple
-+"make check" in your build directory is sufficient to run the tests. glibc
-+should pass all tests and if any fails, please report it. A failure might not
-+originate from a bug in glibc but also from bugs in the tools, e.g. with gcc
-+2.7.2.x the math tests fail some of the tests because of compiler bugs.
-+
-+Note that the test suite is still in its infancy. The tests themselves only
-+cover a small portion of libc features, and where tests do exist for a feature
-+they are not exhaustive. New tests are welcome.
-+
-+
-+GETTING HELP, GLIBC DISCUSSIONS, etc
-+------------------------------------
-+
-+People who want to help with glibc and who test out snapshots
-+regularly should get on the libc-alpha@sourceware.cygnus.com mailing
-+list by sending an email to libc-alpha-subscribe@sourceware.cygnus.com.
-+This list is meant (as the name suggests) for the discussion of test
-+releases and also reports for them. People who are on this list are
-+welcome to post questions of general interest.
-+
-+People who are not only willing to test the snapshots but instead
-+really want to help developing glibc should contact
-+libc-hacker-subscribe@sourceware.cygnus.com.org to be put on the developers
-+mailing list. This list is really only meant for developers. No
-+questions about installation problems or other simple topics are
-+wanted nor will they be answered.
-+
-+Do *not* send any questions about the snapshots or patches specific to the
-+snapshots to bug-glibc@gnu.org. Nobody there will have any idea what
-+you are talking about and it will just cause confusion.
-+
-+
-+BUG REPORTS
-+-----------
-+
-+Send bug reports directly to Ulrich Drepper <drepper@gnu.org>. Please
-+do *not* use the glibcbug script for reporting bugs in the snapshots.
-+glibcbug should only be used for problems with the official released versions.
-+We don't like bug reports in the bug database because otherwise the impression
-+of instability or lack of quality control of glibc as a whole might manifest
-+in people's mind.
-+
-+Note that since no testing is done on the snapshots, and snapshots may even be
-+made when glibc is in an inconsistent state, it may not be unusual for an
-+occasional snapshot to have a very obvious bug, such as failure to compile on
-+*any* machine. It is likely that such bugs will be fixed by the next
-+snapshot, so it really isn't necessary to report them unless they persist for
-+a couple of days.
-+
-+Missing files should always be reported, since they usually mean there is a
-+problem with the snapshot-generating process and we won't know about them
-+unless someone tells us.
-+
-+Bugs which are non-obvious, such as failure to compile on only a specific
-+machine, a new machine dependent or obscure bug (particularly one not detected
-+by the testsuite), etc should be reported when you discover them, or have a
-+suggested patch to fix them.
-+
-+
-+FORMAT FOR PATCHES
-+------------------
-+
-+If you have a fix for a bug, or an enhancement to submit, send your patch to
-+Ulrich Drepper <drepper@gnu.org>. Here are some simple guidelines for
-+submitting patches:
-+
-+ o Use "unified diffs" for patches. A typical command for generating
-+ context diffs is "diff -ru glibc-old glibc-patched".
-+
-+ o Use the "minimalist approach" for patches. That is, each patch
-+ should address only one particular bug, new feature, etc. Do not
-+ save up many unrelated changes and submit them all in one big
-+ patch, since in general, the larger the patch the more difficult
-+ it is for us to decide if the patch is either correct or
-+ desirable. And if we find something about the patch that needs
-+ to be corrected before it can be installed, we would have to reject
-+ the entire patch, which might contain changes which otherwise would
-+ be accepted if submitted separately.
-+
-+ o Submit a sample ChangeLog entry with your patch. See the existing
-+ glibc ChangeLog for examples of what a ChangeLog entry should look
-+ like. The emacs command ^X4A will create a ChangeLog entry header
-+ for you.
-+
-+
-+BUILDING SNAPSHOTS
-+------------------
-+
-+The `best' way to build glibc is to use an extra directory, e.g.:
-+tar xzf libc-970921.tar.gz
-+mkdir build-glibc
-+cd build-glibc
-+../libc-970921/configure ...
-+
-+In this way you can easily clean up (since `make clean' doesn't work at
-+the moment) and rebuild glibc.
-+
-+
-+NECESSARY TOOLS
-+---------------
-+
-+For the recommended versions of gcc, binutils, make, texinfo, gettext,
-+autoconf and other tools which might be especially needed when using patches,
-+please read the file INSTALL.
-+
-+
-+HOW CAN YOU HELP
-+----------------
-+
-+It helps already a lot if you just install glibc on your system and try to
-+solve any problems. You might want to look at the file `PROJECTS' and help
-+with one of those projects, fix some bugs (see `BUGS' or the bug database),
-+port to an unsupported platform, ...
-+
-+
-+FURTHER DOCUMENTATION
-+---------------------
-+
-+A lot of questions are answered in the FAQ. The files `INSTALL', `README' and
-+`NOTES' contain the most important documentation. Furthermore glibc has its
-+own 700+ pages info documentation, ...
-+
-+
-+
-+And finally a word of caution: The libc is one of the most fundamental parts
-+of your system - and these snapshots are untested and come without any
-+guarantee or warranty. You might be lucky and everything works or you might
-+crash your system. If you install a glibc snapshot as primary library, you
-+should have a backup somewhere.
-+
-+On many systems it is also a problem to replace the libc while the system is
-+running. In the worst case on broken OSes some systems crash. On better
-+systems you can move the old libc aside but removing it will cause problems
-+since there are still processes using this libc image and so you might have to
-+check the filesystem to get rid of the libc data. One good alternative (which
-+is also safer) is to use a chroot'ed environment.
-+
-+Thanks for your help and support.
-+
-+Thanks to Fred Fish from Cygnus for the original version of this text
-+(for GDB).
-+
-+
-+Ulrich Drepper
---- glibc-2.3.2/README.template 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/README.template 2002-11-16 08:53:56.000000000 -0500
-@@ -0,0 +1,87 @@
-+This directory contains the version VERSION release of the GNU C Library.
-+Many bugs have been fixed since the last release.
-+Some bugs surely remain.
-+
-+As of this release, the GNU C library is known to run on the following
-+configurations:
-+
-+ *-*-gnu GNU Hurd
-+ i[3456]86-*-linux-gnu Linux-2.x on Intel
-+ m68k-*-linux-gnu Linux-2.x on Motorola 680x0
-+ alpha*-*-linux-gnu Linux-2.x on DEC Alpha
-+ powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems
-+ powerpc64-*-linux-gnu Linux-2.4.19+ on 64-bit PowerPC systems
-+ sparc-*-linux-gnu Linux-2.x on SPARC
-+ sparc64-*-linux-gnu Linux-2.x on UltraSPARC 64-bit
-+ arm-*-none ARM standalone systems
-+ arm-*-linux Linux-2.x on ARM
-+ arm-*-linuxaout Linux-2.x on ARM using a.out binaries
-+ mips*-*-linux-gnu Linux-2.x on MIPS
-+ ia64-*-linux-gnu Linux-2.x on ia64
-+ s390-*-linux-gnu Linux-2.x on IBM S/390
-+ s390x-*-linux-gnu Linux-2.4+ on IBM S/390 64-bit
-+ sh-*-linux-gnu Linux-2.x on Super Hitachi
-+ cris-*-linux-gnu Linux-2.4+ on CRIS
-+ x86-64-*-linux-gnu Linux-2.4+ on x86-64
-+
-+Former releases of this library (version 1.09.1 and perhaps earlier
-+versions) used to run on the following configurations:
-+
-+ alpha-dec-osf1
-+ i[3456]86-*-bsd4.3
-+ i[3456]86-*-isc2.2
-+ i[3456]86-*-isc3
-+ i[3456]86-*-sco3.2
-+ i[3456]86-*-sco3.2v4
-+ i[3456]86-*-sysv
-+ i[3456]86-*-sysv4
-+ i[3456]86-force_cpu386-none
-+ i[3456]86-sequent-bsd
-+ i960-nindy960-none
-+ m68k-hp-bsd4.3
-+ m68k-mvme135-none
-+ m68k-mvme136-none
-+ m68k-sony-newsos3
-+ m68k-sony-newsos4
-+ m68k-sun-sunos4
-+ mips-dec-ultrix4
-+ mips-sgi-irix4
-+ sparc-sun-solaris2
-+ sparc-sun-sunos4
-+
-+Since no one has volunteered to test and fix the above configurations,
-+these are not supported at the moment. It's expected that these don't
-+work anymore. Porting the library is not hard. If you are interested
-+in doing a port, please contact the glibc maintainers by sending
-+electronic mail to <bug-glibc@gnu.org>.
-+
-+There are some add-ons which can be used together with GNU libc. They
-+are designed in a way to ease the installation by integrating them in
-+the libc source tree. Simply get the add-ons you need and use the
-+--enable-add-ons option of the `configure' script to tell where the
-+add-ons are found. Please read the FAQ file for more details.
-+
-+See the file INSTALL to find out how to configure, build, install, and port
-+the GNU C library. You might also consider reading the WWW pages for the
-+GNU libc at http://www.gnu.org/software/libc/libc.html.
-+
-+The GNU C Library is completely documented by the Texinfo manual found
-+in the `manual/' subdirectory. The manual is still being updated and
-+contains some known errors and omissions; we regret that we do not
-+have the resources to work on the manual as much as we would like.
-+Please send comments on the manual to <bug-glibc-manual@gnu.org>, and
-+not to the library bug-reporting address.
-+
-+The file NOTES contains a description of the feature-test macros used
-+in the GNU C library, explaining how you can tell the library what
-+facilities you want it to make available.
-+
-+We prefer to get bug reports sent using the `glibcbug' shell script which
-+is installed together with the rest of the GNU libc to <bugs@gnu.org>.
-+Simply run this shell script and fill in the information. Nevertheless
-+you can still send bug reports to <bug-glibc@gnu.org> as normal electronic
-+mails.
-+
-+The GNU C Library is free software. See the file COPYING.LIB for copying
-+conditions, and LICENSES for notices about a few contributions that require
-+these additional notices to be distributed.
---- glibc-2.3.2/Versions.def 2002-12-10 14:05:17.000000000 -0500
-+++ glibc-2.3.2/Versions.def 2003-04-12 11:39:41.000000000 -0400
-@@ -18,6 +18,7 @@
- GLIBC_2.3
- GLIBC_2.3.1
- GLIBC_2.3.2
-+ GLIBC_2.3.3
- %ifdef USE_IN_LIBIO
- HURD_CTHREADS_0.3
- %endif
-@@ -32,6 +33,7 @@
- libdl {
- GLIBC_2.0
- GLIBC_2.1
-+ GLIBC_2.3.3
- }
- libm {
- GLIBC_2.0
-@@ -71,6 +73,7 @@
- GLIBC_2.2.3
- GLIBC_2.2.6
- GLIBC_2.3.2
-+ GLIBC_2.3.3
- GLIBC_PRIVATE
- }
- libresolv {
-@@ -82,6 +85,7 @@
- GLIBC_2.1
- GLIBC_2.2
- GLIBC_2.3
-+ GLIBC_2.3.3
- }
- libutil {
- GLIBC_2.0
-@@ -96,6 +100,7 @@
- GLIBC_2.1.3
- GLIBC_2.2.3
- GLIBC_2.3
-+ GLIBC_2.3.3
- }
- libanl {
- GLIBC_2.2.3
---- glibc-2.3.2/abilist/ld.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/ld.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,35 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ _r_debug D 0x14
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __libc_memalign F
-+ calloc F
-+ free F
-+ malloc F
-+ realloc F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _dl_mcount F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _r_debug D 0x28
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ ___tls_get_addr F
-+GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread x86_64-.*-linux.*/tls
-+ __tls_get_addr F
-+GLIBC_2.3 s390-.*-linux.*/tls s390x-.*-linux.*/tls
-+ __tls_get_offset F
---- glibc-2.3.2/abilist/libBrokenLocale.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libBrokenLocale.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,13 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __ctype_get_mb_cur_max F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libanl.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libanl.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,13 @@
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ gai_cancel F
-+ gai_error F
-+ gai_suspend F
-+ getaddrinfo_a F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libc.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libc.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,2231 @@
-+GCC_3.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GCC_3.0 A
-+ _Unwind_Find_FDE F
-+ __deregister_frame_info_bases F
-+ __register_frame_info_bases F
-+ __register_frame_info_table_bases F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __fpu_control D 0x2
-+ vm86 F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ _IO_stderr_ D 0x50
-+ _IO_stdin_ D 0x50
-+ _IO_stdout_ D 0x50
-+ __strtoq_internal F
-+ __strtouq_internal F
-+ _sys_errlist D 0x1ec
-+ _sys_siglist D 0x80
-+ res_init F
-+ sys_errlist D 0x1ec
-+ sys_sigabbrev D 0x80
-+ sys_siglist D 0x80
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ getaliasbyname_r F
-+ getaliasent_r F
-+ getgrent_r F
-+ getgrgid_r F
-+ getgrnam_r F
-+ gethostbyaddr_r F
-+ gethostbyname2_r F
-+ gethostbyname_r F
-+ gethostent_r F
-+ getnetbyaddr_r F
-+ getnetbyname_r F
-+ getnetent_r F
-+ getprotobyname_r F
-+ getprotobynumber_r F
-+ getprotoent_r F
-+ getpwent_r F
-+ getpwnam_r F
-+ getpwuid_r F
-+ getrpcbyname_r F
-+ getrpcbynumber_r F
-+ getrpcent_r F
-+ getservbyname_r F
-+ getservbyport_r F
-+ getservent_r F
-+ getspent_r F
-+ getspnam_r F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ _sys_nerr D 0x4
-+ sys_nerr D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_do_write F
-+ _IO_fclose F
-+ _IO_fdopen F
-+ _IO_file_attach F
-+ _IO_file_close_it F
-+ _IO_file_fopen F
-+ _IO_file_init F
-+ _IO_file_overflow F
-+ _IO_file_seekoff F
-+ _IO_file_setbuf F
-+ _IO_file_sync F
-+ _IO_file_underflow F
-+ _IO_file_write F
-+ _IO_file_xsputn F
-+ _IO_fopen F
-+ _IO_popen F
-+ _IO_proc_close F
-+ _IO_proc_open F
-+ fclose F
-+ fdopen F
-+ fopen F
-+ pclose F
-+ popen F
-+ pthread_attr_init F
-+ tmpfile F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ chown F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ fnmatch F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_fgetpos F
-+ _IO_fsetpos F
-+ fgetpos F
-+ fopencookie F
-+ fsetpos F
-+ getrlimit F
-+ localeconv F
-+ msgctl F
-+ semctl F
-+ setrlimit F
-+ shmctl F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ re_max_failures D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_cond_broadcast F
-+ pthread_cond_destroy F
-+ pthread_cond_init F
-+ pthread_cond_signal F
-+ pthread_cond_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ realpath F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_adjust_column F
-+ _IO_default_doallocate F
-+ _IO_default_finish F
-+ _IO_default_pbackfail F
-+ _IO_default_uflow F
-+ _IO_default_xsgetn F
-+ _IO_default_xsputn F
-+ _IO_doallocbuf F
-+ _IO_feof F
-+ _IO_ferror F
-+ _IO_fflush F
-+ _IO_fgets F
-+ _IO_file_close F
-+ _IO_file_doallocate F
-+ _IO_file_open F
-+ _IO_file_read F
-+ _IO_file_seek F
-+ _IO_file_stat F
-+ _IO_flockfile F
-+ _IO_flush_all F
-+ _IO_flush_all_linebuffered F
-+ _IO_fprintf F
-+ _IO_fputs F
-+ _IO_fread F
-+ _IO_free_backup_area F
-+ _IO_ftell F
-+ _IO_ftrylockfile F
-+ _IO_funlockfile F
-+ _IO_fwrite F
-+ _IO_getc F
-+ _IO_getline F
-+ _IO_gets F
-+ _IO_init F
-+ _IO_init_marker F
-+ _IO_link_in F
-+ _IO_marker_delta F
-+ _IO_marker_difference F
-+ _IO_padn F
-+ _IO_peekc_locked F
-+ _IO_printf F
-+ _IO_putc F
-+ _IO_puts F
-+ _IO_remove_marker F
-+ _IO_seekmark F
-+ _IO_seekoff F
-+ _IO_seekpos F
-+ _IO_setb F
-+ _IO_setbuffer F
-+ _IO_setvbuf F
-+ _IO_sgetn F
-+ _IO_sprintf F
-+ _IO_sputbackc F
-+ _IO_sscanf F
-+ _IO_str_init_readonly F
-+ _IO_str_init_static F
-+ _IO_str_overflow F
-+ _IO_str_pbackfail F
-+ _IO_str_seekoff F
-+ _IO_str_underflow F
-+ _IO_sungetc F
-+ _IO_switch_to_get_mode F
-+ _IO_un_link F
-+ _IO_ungetc F
-+ _IO_unsave_markers F
-+ _IO_vfprintf F
-+ _IO_vfscanf F
-+ _IO_vsprintf F
-+ __adjtimex F
-+ __argz_count F
-+ __argz_next F
-+ __argz_stringify F
-+ __assert_fail F
-+ __assert_perror_fail F
-+ __bsd_getpgrp F
-+ __check_rhosts_file D 0x4
-+ __close F
-+ __cmsg_nxthdr F
-+ __connect F
-+ __ctype_get_mb_cur_max F
-+ __daylight D 0x4
-+ __dcgettext F
-+ __default_morecore F
-+ __dgettext F
-+ __dup2 F
-+ __errno_location F
-+ __fcntl F
-+ __ffs F
-+ __finite F
-+ __finitef F
-+ __finitel F
-+ __fxstat F
-+ __getdelim F
-+ __getpagesize F
-+ __getpgid F
-+ __getpid F
-+ __gettimeofday F
-+ __gmtime_r F
-+ __h_errno_location F
-+ __isinf F
-+ __isinff F
-+ __isinfl F
-+ __isnan F
-+ __isnanf F
-+ __isnanl F
-+ __iswctype F
-+ __ivaliduser F
-+ __libc_calloc F
-+ __libc_free F
-+ __libc_init_first F
-+ __libc_mallinfo F
-+ __libc_malloc F
-+ __libc_mallopt F
-+ __libc_memalign F
-+ __libc_pvalloc F
-+ __libc_realloc F
-+ __libc_start_main F
-+ __libc_valloc F
-+ __lseek F
-+ __lxstat F
-+ __mbrlen F
-+ __mbrtowc F
-+ __mempcpy F
-+ __monstartup F
-+ __nss_configure_lookup F
-+ __nss_database_lookup F
-+ __nss_group_lookup F
-+ __nss_hosts_lookup F
-+ __nss_next F
-+ __nss_passwd_lookup F
-+ __open F
-+ __overflow F
-+ __pipe F
-+ __printf_fp F
-+ __profile_frequency F
-+ __read F
-+ __res_randomid F
-+ __sbrk F
-+ __sched_get_priority_max F
-+ __sched_get_priority_min F
-+ __sched_getparam F
-+ __sched_getscheduler F
-+ __sched_setscheduler F
-+ __sched_yield F
-+ __secure_getenv F
-+ __select F
-+ __send F
-+ __setpgid F
-+ __sigaction F
-+ __sigaddset F
-+ __sigdelset F
-+ __sigismember F
-+ __sigpause F
-+ __sigsetjmp F
-+ __stpcpy F
-+ __stpncpy F
-+ __strcasecmp F
-+ __strdup F
-+ __strerror_r F
-+ __strtod_internal F
-+ __strtof_internal F
-+ __strtok_r F
-+ __strtol_internal F
-+ __strtold_internal F
-+ __strtoll_internal F
-+ __strtoul_internal F
-+ __strtoull_internal F
-+ __sysv_signal F
-+ __uflow F
-+ __underflow F
-+ __vfscanf F
-+ __vsnprintf F
-+ __vsscanf F
-+ __wait F
-+ __waitpid F
-+ __wcstod_internal F
-+ __wcstof_internal F
-+ __wcstol_internal F
-+ __wcstold_internal F
-+ __wcstoll_internal F
-+ __wcstoul_internal F
-+ __wcstoull_internal F
-+ __write F
-+ __xmknod F
-+ __xpg_basename F
-+ __xstat F
-+ _exit F
-+ _libc_intl_domainname D 0x5
-+ _longjmp F
-+ _mcleanup F
-+ _mcount F
-+ _nl_msg_cat_cntr D 0x4
-+ _obstack_allocated_p F
-+ _obstack_begin F
-+ _obstack_begin_1 F
-+ _obstack_free F
-+ _obstack_memory_used F
-+ _obstack_newchunk F
-+ _rpc_dtablesize F
-+ _seterr_reply F
-+ _setjmp F
-+ _tolower F
-+ _toupper F
-+ a64l F
-+ abort F
-+ abs F
-+ accept F
-+ access F
-+ acct F
-+ addmntent F
-+ adjtime F
-+ adjtimex F
-+ advance F
-+ alarm F
-+ alphasort F
-+ argz_add F
-+ argz_add_sep F
-+ argz_append F
-+ argz_count F
-+ argz_create F
-+ argz_create_sep F
-+ argz_delete F
-+ argz_extract F
-+ argz_insert F
-+ argz_next F
-+ argz_replace F
-+ argz_stringify F
-+ asctime F
-+ asctime_r F
-+ asprintf F
-+ atof F
-+ atoi F
-+ atol F
-+ atoll F
-+ authnone_create F
-+ authunix_create F
-+ authunix_create_default F
-+ basename F
-+ bcmp F
-+ bcopy F
-+ bdflush F
-+ bind F
-+ bindresvport F
-+ bindtextdomain F
-+ brk F
-+ bsd_signal F
-+ bsearch F
-+ btowc F
-+ bzero F
-+ calloc F
-+ callrpc F
-+ canonicalize_file_name F
-+ catclose F
-+ catgets F
-+ catopen F
-+ cfgetispeed F
-+ cfgetospeed F
-+ cfmakeraw F
-+ cfree F
-+ cfsetispeed F
-+ cfsetospeed F
-+ cfsetspeed F
-+ chdir F
-+ chflags F
-+ chmod F
-+ chroot F
-+ clearenv F
-+ clearerr F
-+ clearerr_unlocked F
-+ clnt_broadcast F
-+ clnt_create F
-+ clnt_pcreateerror F
-+ clnt_perrno F
-+ clnt_perror F
-+ clnt_spcreateerror F
-+ clnt_sperrno F
-+ clnt_sperror F
-+ clntraw_create F
-+ clnttcp_create F
-+ clntudp_bufcreate F
-+ clntudp_create F
-+ clock F
-+ close F
-+ closedir F
-+ closelog F
-+ confstr F
-+ connect F
-+ copysign F
-+ copysignf F
-+ copysignl F
-+ creat F
-+ create_module F
-+ ctermid F
-+ ctime F
-+ ctime_r F
-+ cuserid F
-+ daemon F
-+ daylight D 0x4
-+ dcgettext F
-+ delete_module F
-+ dgettext F
-+ difftime F
-+ dirfd F
-+ dirname F
-+ div F
-+ dprintf F
-+ drand48 F
-+ drand48_r F
-+ dup F
-+ dup2 F
-+ dysize F
-+ ecvt F
-+ ecvt_r F
-+ endaliasent F
-+ endfsent F
-+ endgrent F
-+ endhostent F
-+ endmntent F
-+ endnetent F
-+ endnetgrent F
-+ endprotoent F
-+ endpwent F
-+ endrpcent F
-+ endservent F
-+ endspent F
-+ endttyent F
-+ endusershell F
-+ endutent F
-+ envz_add F
-+ envz_entry F
-+ envz_get F
-+ envz_merge F
-+ envz_remove F
-+ envz_strip F
-+ erand48 F
-+ erand48_r F
-+ err F
-+ error F
-+ error_at_line F
-+ error_message_count D 0x4
-+ error_one_per_line D 0x4
-+ errx F
-+ ether_aton F
-+ ether_aton_r F
-+ ether_hostton F
-+ ether_line F
-+ ether_ntoa F
-+ ether_ntoa_r F
-+ ether_ntohost F
-+ euidaccess F
-+ execl F
-+ execle F
-+ execlp F
-+ execv F
-+ execve F
-+ execvp F
-+ exit F
-+ fchdir F
-+ fchflags F
-+ fchmod F
-+ fchown F
-+ fcloseall F
-+ fcntl F
-+ fcvt F
-+ fcvt_r F
-+ fdatasync F
-+ feof F
-+ feof_unlocked F
-+ ferror F
-+ ferror_unlocked F
-+ fexecve F
-+ fflush F
-+ fflush_unlocked F
-+ ffs F
-+ fgetc F
-+ fgetgrent F
-+ fgetgrent_r F
-+ fgetpwent F
-+ fgetpwent_r F
-+ fgets F
-+ fgetspent F
-+ fgetspent_r F
-+ fileno F
-+ fileno_unlocked F
-+ finite F
-+ finitef F
-+ finitel F
-+ flock F
-+ flockfile F
-+ fork F
-+ fpathconf F
-+ fprintf F
-+ fputc F
-+ fputc_unlocked F
-+ fputs F
-+ fread F
-+ free F
-+ freeaddrinfo F
-+ freopen F
-+ frexp F
-+ frexpf F
-+ frexpl F
-+ fscanf F
-+ fseek F
-+ fstatfs F
-+ fsync F
-+ ftell F
-+ ftime F
-+ ftok F
-+ ftruncate F
-+ ftrylockfile F
-+ fts_children F
-+ fts_close F
-+ fts_open F
-+ fts_read F
-+ fts_set F
-+ ftw F
-+ funlockfile F
-+ fwrite F
-+ gcvt F
-+ get_avphys_pages F
-+ get_current_dir_name F
-+ get_kernel_syms F
-+ get_myaddress F
-+ get_nprocs F
-+ get_nprocs_conf F
-+ get_phys_pages F
-+ getaddrinfo F
-+ getaliasbyname F
-+ getaliasent F
-+ getc F
-+ getc_unlocked F
-+ getchar F
-+ getchar_unlocked F
-+ getcwd F
-+ getdelim F
-+ getdirentries F
-+ getdomainname F
-+ getdtablesize F
-+ getegid F
-+ getenv F
-+ geteuid F
-+ getfsent F
-+ getfsfile F
-+ getfsspec F
-+ getgid F
-+ getgrent F
-+ getgrgid F
-+ getgrnam F
-+ getgroups F
-+ gethostbyaddr F
-+ gethostbyname F
-+ gethostbyname2 F
-+ gethostent F
-+ gethostid F
-+ gethostname F
-+ getitimer F
-+ getline F
-+ getlogin F
-+ getlogin_r F
-+ getmntent F
-+ getmntent_r F
-+ getnetbyaddr F
-+ getnetbyname F
-+ getnetent F
-+ getnetgrent F
-+ getnetgrent_r F
-+ getopt F
-+ getopt_long F
-+ getopt_long_only F
-+ getpagesize F
-+ getpass F
-+ getpeername F
-+ getpgid F
-+ getpgrp F
-+ getpid F
-+ getppid F
-+ getpriority F
-+ getprotobyname F
-+ getprotobynumber F
-+ getprotoent F
-+ getpublickey F
-+ getpw F
-+ getpwent F
-+ getpwnam F
-+ getpwuid F
-+ getresgid F
-+ getresuid F
-+ getrpcbyname F
-+ getrpcbynumber F
-+ getrpcent F
-+ getrpcport F
-+ getrusage F
-+ gets F
-+ getsecretkey F
-+ getservbyname F
-+ getservbyport F
-+ getservent F
-+ getsid F
-+ getsockname F
-+ getsockopt F
-+ getspent F
-+ getspnam F
-+ getsubopt F
-+ gettext F
-+ gettimeofday F
-+ getttyent F
-+ getttynam F
-+ getuid F
-+ getusershell F
-+ getutent F
-+ getutent_r F
-+ getutid F
-+ getutid_r F
-+ getutline F
-+ getutline_r F
-+ getw F
-+ getwd F
-+ glob F
-+ glob_pattern_p F
-+ globfree F
-+ gmtime F
-+ gmtime_r F
-+ group_member F
-+ gsignal F
-+ gtty F
-+ h_nerr D 0x4
-+ hasmntopt F
-+ hcreate F
-+ hcreate_r F
-+ hdestroy F
-+ hdestroy_r F
-+ herror F
-+ hsearch F
-+ hsearch_r F
-+ hstrerror F
-+ htonl F
-+ htons F
-+ index F
-+ inet_addr F
-+ inet_aton F
-+ inet_lnaof F
-+ inet_makeaddr F
-+ inet_netof F
-+ inet_network F
-+ inet_nsap_addr F
-+ inet_nsap_ntoa F
-+ inet_ntoa F
-+ inet_ntop F
-+ inet_pton F
-+ init_module F
-+ initgroups F
-+ initstate F
-+ initstate_r F
-+ innetgr F
-+ insque F
-+ ioctl F
-+ iruserok F
-+ isalnum F
-+ isalpha F
-+ isascii F
-+ isatty F
-+ isblank F
-+ iscntrl F
-+ isdigit F
-+ isfdtype F
-+ isgraph F
-+ isinf F
-+ isinff F
-+ isinfl F
-+ islower F
-+ isnan F
-+ isnanf F
-+ isnanl F
-+ isprint F
-+ ispunct F
-+ isspace F
-+ isupper F
-+ iswalnum F
-+ iswalpha F
-+ iswcntrl F
-+ iswctype F
-+ iswdigit F
-+ iswgraph F
-+ iswlower F
-+ iswprint F
-+ iswpunct F
-+ iswspace F
-+ iswupper F
-+ iswxdigit F
-+ isxdigit F
-+ jrand48 F
-+ jrand48_r F
-+ kill F
-+ killpg F
-+ klogctl F
-+ l64a F
-+ labs F
-+ lchown F
-+ lckpwdf F
-+ lcong48 F
-+ lcong48_r F
-+ ldexp F
-+ ldexpf F
-+ ldexpl F
-+ ldiv F
-+ lfind F
-+ link F
-+ listen F
-+ llabs F
-+ lldiv F
-+ llseek F
-+ localtime F
-+ localtime_r F
-+ lockf F
-+ longjmp F
-+ lrand48 F
-+ lrand48_r F
-+ lsearch F
-+ lseek F
-+ madvise F
-+ mallinfo F
-+ malloc F
-+ malloc_get_state F
-+ malloc_set_state F
-+ malloc_stats F
-+ malloc_trim F
-+ malloc_usable_size F
-+ mallopt F
-+ mblen F
-+ mbrlen F
-+ mbrtowc F
-+ mbsinit F
-+ mbsnrtowcs F
-+ mbsrtowcs F
-+ mbstowcs F
-+ mbtowc F
-+ mcheck F
-+ memalign F
-+ memccpy F
-+ memchr F
-+ memcmp F
-+ memcpy F
-+ memfrob F
-+ memmem F
-+ memmove F
-+ memset F
-+ mkdir F
-+ mkfifo F
-+ mkstemp F
-+ mktemp F
-+ mktime F
-+ mlock F
-+ mlockall F
-+ mmap F
-+ modf F
-+ modff F
-+ modfl F
-+ monstartup F
-+ mount F
-+ mprobe F
-+ mprotect F
-+ mrand48 F
-+ mrand48_r F
-+ mremap F
-+ msgget F
-+ msgrcv F
-+ msgsnd F
-+ msync F
-+ mtrace F
-+ munlock F
-+ munlockall F
-+ munmap F
-+ muntrace F
-+ nanosleep F
-+ nfsservctl F
-+ nice F
-+ nl_langinfo F
-+ nrand48 F
-+ nrand48_r F
-+ ntohl F
-+ ntohs F
-+ obstack_exit_failure D 0x4
-+ obstack_free F
-+ obstack_printf F
-+ obstack_vprintf F
-+ on_exit F
-+ open F
-+ open_memstream F
-+ opendir F
-+ openlog F
-+ opterr D 0x4
-+ optind D 0x4
-+ optopt D 0x4
-+ parse_printf_format F
-+ pathconf F
-+ pause F
-+ perror F
-+ personality F
-+ pipe F
-+ pmap_getmaps F
-+ pmap_getport F
-+ pmap_rmtcall F
-+ pmap_set F
-+ pmap_unset F
-+ poll F
-+ prctl F
-+ printf F
-+ profil F
-+ pselect F
-+ psignal F
-+ pthread_attr_destroy F
-+ pthread_attr_getdetachstate F
-+ pthread_attr_getinheritsched F
-+ pthread_attr_getschedparam F
-+ pthread_attr_getschedpolicy F
-+ pthread_attr_getscope F
-+ pthread_attr_setdetachstate F
-+ pthread_attr_setinheritsched F
-+ pthread_attr_setschedparam F
-+ pthread_attr_setschedpolicy F
-+ pthread_attr_setscope F
-+ pthread_condattr_destroy F
-+ pthread_condattr_init F
-+ pthread_equal F
-+ pthread_exit F
-+ pthread_getschedparam F
-+ pthread_mutex_destroy F
-+ pthread_mutex_init F
-+ pthread_mutex_lock F
-+ pthread_mutex_unlock F
-+ pthread_self F
-+ pthread_setcancelstate F
-+ pthread_setcanceltype F
-+ pthread_setschedparam F
-+ ptrace F
-+ putc F
-+ putc_unlocked F
-+ putchar F
-+ putchar_unlocked F
-+ putenv F
-+ putpwent F
-+ puts F
-+ putspent F
-+ pututline F
-+ putw F
-+ pvalloc F
-+ qecvt F
-+ qecvt_r F
-+ qfcvt F
-+ qfcvt_r F
-+ qgcvt F
-+ qsort F
-+ query_module F
-+ quotactl F
-+ raise F
-+ rand F
-+ rand_r F
-+ random F
-+ random_r F
-+ rcmd F
-+ re_comp F
-+ re_compile_fastmap F
-+ re_compile_pattern F
-+ re_exec F
-+ re_match F
-+ re_match_2 F
-+ re_search F
-+ re_search_2 F
-+ re_set_registers F
-+ re_set_syntax F
-+ read F
-+ readdir F
-+ readdir_r F
-+ readlink F
-+ readv F
-+ realloc F
-+ reboot F
-+ recv F
-+ recvfrom F
-+ recvmsg F
-+ regcomp F
-+ regerror F
-+ regexec F
-+ regfree F
-+ register_printf_function F
-+ registerrpc F
-+ remove F
-+ remque F
-+ rename F
-+ revoke F
-+ rewind F
-+ rewinddir F
-+ rexec F
-+ rexecoptions D 0x4
-+ rindex F
-+ rmdir F
-+ rpmatch F
-+ rresvport F
-+ ruserok F
-+ ruserpass F
-+ sbrk F
-+ scalbn F
-+ scalbnf F
-+ scalbnl F
-+ scandir F
-+ scanf F
-+ sched_get_priority_max F
-+ sched_get_priority_min F
-+ sched_getparam F
-+ sched_getscheduler F
-+ sched_rr_get_interval F
-+ sched_setparam F
-+ sched_setscheduler F
-+ sched_yield F
-+ seed48 F
-+ seed48_r F
-+ seekdir F
-+ select F
-+ semget F
-+ semop F
-+ send F
-+ sendmsg F
-+ sendto F
-+ setaliasent F
-+ setbuf F
-+ setbuffer F
-+ setcontext F
-+ setdomainname F
-+ setegid F
-+ setenv F
-+ seteuid F
-+ setfsent F
-+ setfsgid F
-+ setfsuid F
-+ setgid F
-+ setgrent F
-+ setgroups F
-+ sethostent F
-+ sethostid F
-+ sethostname F
-+ setitimer F
-+ setjmp F
-+ setlinebuf F
-+ setlocale F
-+ setlogin F
-+ setlogmask F
-+ setmntent F
-+ setnetent F
-+ setnetgrent F
-+ setpgid F
-+ setpgrp F
-+ setpriority F
-+ setprotoent F
-+ setpwent F
-+ setregid F
-+ setresgid F
-+ setresuid F
-+ setreuid F
-+ setrpcent F
-+ setservent F
-+ setsid F
-+ setsockopt F
-+ setspent F
-+ setstate F
-+ setstate_r F
-+ settimeofday F
-+ setttyent F
-+ setuid F
-+ setusershell F
-+ setutent F
-+ setvbuf F
-+ sgetspent F
-+ sgetspent_r F
-+ shmat F
-+ shmdt F
-+ shmget F
-+ shutdown F
-+ sigaction F
-+ sigaddset F
-+ sigaltstack F
-+ sigandset F
-+ sigblock F
-+ sigdelset F
-+ sigemptyset F
-+ sigfillset F
-+ siggetmask F
-+ siginterrupt F
-+ sigisemptyset F
-+ sigismember F
-+ siglongjmp F
-+ signal F
-+ sigorset F
-+ sigpause F
-+ sigpending F
-+ sigprocmask F
-+ sigreturn F
-+ sigsetmask F
-+ sigstack F
-+ sigsuspend F
-+ sigvec F
-+ sigwait F
-+ sleep F
-+ snprintf F
-+ socket F
-+ socketpair F
-+ sprintf F
-+ srand F
-+ srand48 F
-+ srand48_r F
-+ srandom F
-+ srandom_r F
-+ sscanf F
-+ ssignal F
-+ sstk F
-+ statfs F
-+ step F
-+ stime F
-+ stpcpy F
-+ stpncpy F
-+ strcasecmp F
-+ strcat F
-+ strchr F
-+ strcmp F
-+ strcoll F
-+ strcpy F
-+ strcspn F
-+ strdup F
-+ strerror F
-+ strerror_r F
-+ strfmon F
-+ strfry F
-+ strftime F
-+ strlen F
-+ strncasecmp F
-+ strncat F
-+ strncmp F
-+ strncpy F
-+ strndup F
-+ strnlen F
-+ strpbrk F
-+ strptime F
-+ strrchr F
-+ strsep F
-+ strsignal F
-+ strspn F
-+ strstr F
-+ strtod F
-+ strtof F
-+ strtok F
-+ strtok_r F
-+ strtol F
-+ strtold F
-+ strtoll F
-+ strtoq F
-+ strtoul F
-+ strtoull F
-+ strtouq F
-+ strxfrm F
-+ stty F
-+ svc_exit F
-+ svc_fdset D 0x80
-+ svc_getreq F
-+ svc_getreqset F
-+ svc_register F
-+ svc_run F
-+ svc_sendreply F
-+ svc_unregister F
-+ svcerr_auth F
-+ svcerr_decode F
-+ svcerr_noproc F
-+ svcerr_noprog F
-+ svcerr_progvers F
-+ svcerr_systemerr F
-+ svcerr_weakauth F
-+ svcfd_create F
-+ svcraw_create F
-+ svctcp_create F
-+ svcudp_bufcreate F
-+ svcudp_create F
-+ svcudp_enablecache F
-+ swab F
-+ swapoff F
-+ swapon F
-+ symlink F
-+ sync F
-+ syscall F
-+ sysconf F
-+ sysctl F
-+ sysinfo F
-+ syslog F
-+ system F
-+ tcdrain F
-+ tcflow F
-+ tcflush F
-+ tcgetattr F
-+ tcgetpgrp F
-+ tcsendbreak F
-+ tcsetattr F
-+ tcsetpgrp F
-+ tdelete F
-+ telldir F
-+ tempnam F
-+ textdomain F
-+ tfind F
-+ time F
-+ timegm F
-+ timelocal F
-+ times F
-+ tmpnam F
-+ tmpnam_r F
-+ toascii F
-+ tolower F
-+ toupper F
-+ towctrans F
-+ towlower F
-+ towupper F
-+ tr_break F
-+ truncate F
-+ tsearch F
-+ ttyname F
-+ ttyname_r F
-+ ttyslot F
-+ twalk F
-+ tzset F
-+ ualarm F
-+ ulckpwdf F
-+ ulimit F
-+ umask F
-+ umount F
-+ uname F
-+ ungetc F
-+ unlink F
-+ unsetenv F
-+ updwtmp F
-+ uselib F
-+ usleep F
-+ ustat F
-+ utime F
-+ utimes F
-+ utmpname F
-+ valloc F
-+ vasprintf F
-+ vdprintf F
-+ verr F
-+ verrx F
-+ vfork F
-+ vfprintf F
-+ vfscanf F
-+ vhangup F
-+ vlimit F
-+ vprintf F
-+ vscanf F
-+ vsnprintf F
-+ vsprintf F
-+ vsscanf F
-+ vsyslog F
-+ vtimes F
-+ vwarn F
-+ vwarnx F
-+ wait F
-+ wait3 F
-+ wait4 F
-+ waitpid F
-+ warn F
-+ warnx F
-+ wcpcpy F
-+ wcpncpy F
-+ wcrtomb F
-+ wcscat F
-+ wcschr F
-+ wcscmp F
-+ wcscoll F
-+ wcscpy F
-+ wcscspn F
-+ wcsdup F
-+ wcslen F
-+ wcsncat F
-+ wcsncmp F
-+ wcsncpy F
-+ wcsnrtombs F
-+ wcspbrk F
-+ wcsrchr F
-+ wcsrtombs F
-+ wcsspn F
-+ wcsstr F
-+ wcstod F
-+ wcstof F
-+ wcstok F
-+ wcstol F
-+ wcstold F
-+ wcstombs F
-+ wcstoq F
-+ wcstoul F
-+ wcstouq F
-+ wcswidth F
-+ wcsxfrm F
-+ wctob F
-+ wctomb F
-+ wctrans F
-+ wctype F
-+ wcwidth F
-+ wmemchr F
-+ wmemcmp F
-+ wmemcpy F
-+ wmemmove F
-+ wmemset F
-+ write F
-+ writev F
-+ xdr_accepted_reply F
-+ xdr_array F
-+ xdr_authunix_parms F
-+ xdr_bool F
-+ xdr_bytes F
-+ xdr_callhdr F
-+ xdr_callmsg F
-+ xdr_char F
-+ xdr_cryptkeyarg F
-+ xdr_cryptkeyarg2 F
-+ xdr_cryptkeyres F
-+ xdr_des_block F
-+ xdr_double F
-+ xdr_enum F
-+ xdr_float F
-+ xdr_free F
-+ xdr_int F
-+ xdr_key_netstarg F
-+ xdr_key_netstres F
-+ xdr_keybuf F
-+ xdr_keystatus F
-+ xdr_long F
-+ xdr_netobj F
-+ xdr_opaque F
-+ xdr_opaque_auth F
-+ xdr_pmap F
-+ xdr_pmaplist F
-+ xdr_pointer F
-+ xdr_reference F
-+ xdr_rejected_reply F
-+ xdr_replymsg F
-+ xdr_rmtcall_args F
-+ xdr_rmtcallres F
-+ xdr_short F
-+ xdr_string F
-+ xdr_u_char F
-+ xdr_u_int F
-+ xdr_u_long F
-+ xdr_u_short F
-+ xdr_union F
-+ xdr_vector F
-+ xdr_void F
-+ xdr_wrapstring F
-+ xdrmem_create F
-+ xdrrec_create F
-+ xdrrec_endofrecord F
-+ xdrrec_eof F
-+ xdrrec_skiprecord F
-+ xdrstdio_create F
-+ xencrypt F
-+ xprt_register F
-+ xprt_unregister F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fork F
-+ _nl_default_dirname D 0x12
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __bzero F
-+ __clone F
-+ clone F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __divdi3 F
-+ __moddi3 F
-+ __udivdi3 F
-+ __umoddi3 F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ atexit F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+ __deregister_frame F
-+ __frame_state_for F
-+ __register_frame F
-+ __register_frame_info_table F
-+ __register_frame_table F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __deregister_frame_info F
-+ __register_frame_info F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _IO_file_jumps D 0x54
-+ _IO_list_all D 0x4
-+ __after_morecore_hook D 0x4
-+ __ctype32_b D 0x4
-+ __ctype_b D 0x4
-+ __ctype_tolower D 0x4
-+ __ctype_toupper D 0x4
-+ __curbrk D 0x4
-+ __environ D 0x4
-+ __free_hook D 0x4
-+ __malloc_hook D 0x4
-+ __malloc_initialize_hook D 0x4
-+ __memalign_hook D 0x4
-+ __morecore D 0x4
-+ __progname D 0x4
-+ __progname_full D 0x4
-+ __rcmd_errstr D 0x4
-+ __realloc_hook D 0x4
-+ __timezone D 0x4
-+ __tzname D 0x8
-+ _environ D 0x4
-+ _nl_domain_bindings D 0x4
-+ _null_auth D 0xc
-+ _obstack D 0x4
-+ environ D 0x4
-+ error_print_progname D 0x4
-+ h_errlist D 0x14
-+ loc1 D 0x4
-+ loc2 D 0x4
-+ locs D 0x4
-+ mallwatch D 0x4
-+ obstack_alloc_failed_handler D 0x4
-+ optarg D 0x4
-+ program_invocation_name D 0x4
-+ program_invocation_short_name D 0x4
-+ re_syntax_options D 0x4
-+ rpc_createerr D 0x10
-+ stderr D 0x4
-+ stdin D 0x4
-+ stdout D 0x4
-+ svcauthdes_stats D 0xc
-+ timezone D 0x4
-+ tzname D 0x8
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
-+ ___brk_addr D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ mcount F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ ioperm F
-+ iopl F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls
-+ _errno D 0x4
-+ _h_errno D 0x4
-+ errno D 0x4
-+ h_errno D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls
-+ _res D 0x200
-+GLIBC_2.0 m68.*-.*-linux.*/notls
-+ _res D 0x1fe
-+ cacheflush F
-+GLIBC_2.0 m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fpu_control D 0x4
-+GLIBC_2.0 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+ __ashldi3 F
-+ __ashrdi3 F
-+ __cmpdi2 F
-+ __fixdfdi F
-+ __fixsfdi F
-+ __fixunsdfdi F
-+ __fixunssfdi F
-+ __floatdidf F
-+ __floatdisf F
-+ __lshrdi3 F
-+ __ucmpdi2 F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __memcpy_by2 F
-+ __memcpy_by4 F
-+ __memcpy_g F
-+ __mempcpy_by2 F
-+ __mempcpy_by4 F
-+ __mempcpy_byn F
-+ __memset_ccn_by2 F
-+ __memset_ccn_by4 F
-+ __memset_gcn_by2 F
-+ __memset_gcn_by4 F
-+ __stpcpy_g F
-+ __strcat_c F
-+ __strcat_g F
-+ __strchr_c F
-+ __strchr_g F
-+ __strchrnul_c F
-+ __strchrnul_g F
-+ __strcmp_gg F
-+ __strcpy_g F
-+ __strcspn_cg F
-+ __strcspn_g F
-+ __strlen_g F
-+ __strncat_g F
-+ __strncmp_g F
-+ __strncpy_by2 F
-+ __strncpy_by4 F
-+ __strncpy_byn F
-+ __strncpy_gg F
-+ __strpbrk_cg F
-+ __strpbrk_g F
-+ __strrchr_c F
-+ __strrchr_g F
-+ __strspn_cg F
-+ __strspn_g F
-+ __strstr_cg F
-+ __strstr_g F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.1 A
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _Exit F
-+ __mempcpy_small F
-+ __stpcpy_small F
-+ __strcpy_small F
-+ __strcspn_c1 F
-+ __strcspn_c2 F
-+ __strcspn_c3 F
-+ __strpbrk_c2 F
-+ __strpbrk_c3 F
-+ __strsep_1c F
-+ __strsep_2c F
-+ __strsep_3c F
-+ __strsep_g F
-+ __strspn_c1 F
-+ __strspn_c2 F
-+ __strspn_c3 F
-+ __strtok_r_1c F
-+ __strverscmp F
-+ getutmp F
-+ getutmpx F
-+ imaxabs F
-+ imaxdiv F
-+ strchrnul F
-+ xdr_hyper F
-+ xdr_int64_t F
-+ xdr_longlong_t F
-+ xdr_u_hyper F
-+ xdr_u_longlong_t F
-+ xdr_uint64_t F
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.2 A
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __vfork F
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.3 A
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __cxa_atexit F
-+ __cxa_finalize F
-+ __sigsuspend F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+ scalbln F
-+ scalblnf F
-+ scalblnl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.2 ia64-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ wordexp F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_fgetpos64 F
-+ _IO_fsetpos64 F
-+ __fxstat64 F
-+ __lxstat64 F
-+ __xstat64 F
-+ fgetpos64 F
-+ fsetpos64 F
-+ getrlimit64 F
-+ readdir64 F
-+ readdir64_r F
-+ scandir64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ glob64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ alphasort64 F
-+ versionsort64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_file_finish F
-+ _IO_getline_info F
-+ __asprintf F
-+ __backtrace F
-+ __backtrace_symbols F
-+ __backtrace_symbols_fd F
-+ __duplocale F
-+ __freelocale F
-+ __isalnum_l F
-+ __isalpha_l F
-+ __isascii_l F
-+ __isblank_l F
-+ __iscntrl_l F
-+ __isdigit_l F
-+ __isgraph_l F
-+ __islower_l F
-+ __isprint_l F
-+ __ispunct_l F
-+ __isspace_l F
-+ __isupper_l F
-+ __iswalnum_l F
-+ __iswalpha_l F
-+ __iswblank_l F
-+ __iswcntrl_l F
-+ __iswctype_l F
-+ __iswdigit_l F
-+ __iswgraph_l F
-+ __iswlower_l F
-+ __iswprint_l F
-+ __iswpunct_l F
-+ __iswspace_l F
-+ __iswupper_l F
-+ __iswxdigit_l F
-+ __isxdigit_l F
-+ __libc_allocate_rtsig F
-+ __libc_current_sigrtmax F
-+ __libc_current_sigrtmin F
-+ __libc_freeres F
-+ __libc_sa_len F
-+ __newlocale F
-+ __poll F
-+ __pread64 F
-+ __pwrite64 F
-+ __rawmemchr F
-+ __signbit F
-+ __signbitf F
-+ __strcasecmp_l F
-+ __strcasestr F
-+ __strcoll_l F
-+ __strfmon_l F
-+ __strncasecmp_l F
-+ __strtod_l F
-+ __strtof_l F
-+ __strtol_l F
-+ __strtold_l F
-+ __strtoll_l F
-+ __strtoul_l F
-+ __strtoull_l F
-+ __strxfrm_l F
-+ __toascii_l F
-+ __tolower_l F
-+ __toupper_l F
-+ __towctrans F
-+ __towctrans_l F
-+ __towlower_l F
-+ __towupper_l F
-+ __wcscasecmp_l F
-+ __wcscoll_l F
-+ __wcsncasecmp_l F
-+ __wcstod_l F
-+ __wcstof_l F
-+ __wcstol_l F
-+ __wcstold_l F
-+ __wcstoll_l F
-+ __wcstoul_l F
-+ __wcstoull_l F
-+ __wcsxfrm_l F
-+ __wctype_l F
-+ _argp_unlock_xxx F
-+ _authenticate F
-+ _dl_mcount_wrapper F
-+ _dl_mcount_wrapper_check F
-+ addseverity F
-+ argp_err_exit_status D 0x4
-+ argp_error F
-+ argp_failure F
-+ argp_help F
-+ argp_parse F
-+ argp_state_help F
-+ argp_usage F
-+ authdes_create F
-+ authdes_getucred F
-+ authdes_pk_create F
-+ backtrace F
-+ backtrace_symbols F
-+ backtrace_symbols_fd F
-+ capget F
-+ capset F
-+ cbc_crypt F
-+ clntunix_create F
-+ creat64 F
-+ des_setparity F
-+ ecb_crypt F
-+ endutxent F
-+ fattach F
-+ fdetach F
-+ ffsl F
-+ ffsll F
-+ fgetc_unlocked F
-+ fgets_unlocked F
-+ fmtmsg F
-+ fopen64 F
-+ fputs_unlocked F
-+ fread_unlocked F
-+ freopen64 F
-+ fseeko F
-+ fseeko64 F
-+ fstatfs64 F
-+ fstatvfs F
-+ fstatvfs64 F
-+ ftello F
-+ ftello64 F
-+ ftruncate64 F
-+ ftw64 F
-+ fwrite_unlocked F
-+ gai_strerror F
-+ getcontext F
-+ getdate F
-+ getdate_err D 0x4
-+ getdate_r F
-+ getmsg F
-+ getnameinfo F
-+ getnetname F
-+ getpmsg F
-+ getpt F
-+ getutxent F
-+ getutxid F
-+ getutxline F
-+ globfree64 F
-+ gnu_get_libc_release F
-+ gnu_get_libc_version F
-+ grantpt F
-+ host2netname F
-+ iconv F
-+ iconv_close F
-+ iconv_open F
-+ if_freenameindex F
-+ if_indextoname F
-+ if_nameindex F
-+ if_nametoindex F
-+ in6addr_any D 0x10
-+ in6addr_loopback D 0x10
-+ isastream F
-+ iswblank F
-+ key_decryptsession F
-+ key_decryptsession_pk F
-+ key_encryptsession F
-+ key_encryptsession_pk F
-+ key_gendes F
-+ key_get_conv F
-+ key_secretkey_is_set F
-+ key_setnet F
-+ key_setsecret F
-+ lockf64 F
-+ lseek64 F
-+ makecontext F
-+ mempcpy F
-+ mmap64 F
-+ netname2host F
-+ netname2user F
-+ nftw F
-+ nftw64 F
-+ ntp_adjtime F
-+ ntp_gettime F
-+ open64 F
-+ passwd2des F
-+ pread F
-+ pread64 F
-+ printf_size F
-+ printf_size_info F
-+ ptsname F
-+ ptsname_r F
-+ putgrent F
-+ putmsg F
-+ putpmsg F
-+ pututxline F
-+ pwrite F
-+ pwrite64 F
-+ rawmemchr F
-+ rtime F
-+ sendfile F
-+ setrlimit64 F
-+ setutxent F
-+ sighold F
-+ sigignore F
-+ sigqueue F
-+ sigrelse F
-+ sigset F
-+ sigtimedwait F
-+ sigwaitinfo F
-+ statfs64 F
-+ statvfs F
-+ statvfs64 F
-+ strcasestr F
-+ strtoimax F
-+ strtoumax F
-+ strverscmp F
-+ svcunix_create F
-+ svcunixfd_create F
-+ swapcontext F
-+ sysv_signal F
-+ tcgetsid F
-+ tdestroy F
-+ tmpfile64 F
-+ truncate64 F
-+ umount2 F
-+ unlockpt F
-+ updwtmpx F
-+ user2netname F
-+ utmpxname F
-+ versionsort F
-+ waitid F
-+ wcscasecmp F
-+ wcsncasecmp F
-+ wcsnlen F
-+ wcstoimax F
-+ wcstoll F
-+ wcstoull F
-+ wcstoumax F
-+ wcswcs F
-+ wordfree F
-+ xdecrypt F
-+ xdr_authdes_cred F
-+ xdr_authdes_verf F
-+ xdr_getcredres F
-+ xdr_int16_t F
-+ xdr_int32_t F
-+ xdr_int8_t F
-+ xdr_netnamestr F
-+ xdr_sizeof F
-+ xdr_uint16_t F
-+ xdr_uint32_t F
-+ xdr_uint8_t F
-+ xdr_unixcred F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __key_decryptsession_pk_LOCAL D 0x4
-+ __key_encryptsession_pk_LOCAL D 0x4
-+ __key_gendes_LOCAL D 0x4
-+ _sys_errlist D 0x1f4
-+ _sys_siglist D 0x100
-+ argp_program_bug_address D 0x4
-+ argp_program_version D 0x4
-+ argp_program_version_hook D 0x4
-+ sys_errlist D 0x1f4
-+ sys_sigabbrev D 0x100
-+ sys_siglist D 0x100
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __signbitl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _IO_2_1_stderr_ D 0x98
-+ _IO_2_1_stdin_ D 0x98
-+ _IO_2_1_stdout_ D 0x98
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ modify_ldt F
-+GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ _IO_2_1_stderr_ D 0xa0
-+ _IO_2_1_stdin_ D 0xa0
-+ _IO_2_1_stdout_ D 0xa0
-+GLIBC_2.1 s390-.*-linux.*/tls
-+ __chown F
-+GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.1 A
-+GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pivot_root F
-+ posix_openpt F
-+GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.2 A
-+GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nss_hostname_digits_dots F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __rpc_thread_createerr F
-+ __rpc_thread_svc_fdset F
-+ __rpc_thread_svc_max_pollfd F
-+ __rpc_thread_svc_pollfd F
-+ sprofil F
-+GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.4 A
-+GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dl_iterate_phdr F
-+ getgrouplist F
-+ sockatmark F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+ __arch_prctl F
-+ arch_prctl F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_adjust_wcolumn F
-+ _IO_free_wbackup_area F
-+ _IO_init_wmarker F
-+ _IO_iter_begin F
-+ _IO_iter_end F
-+ _IO_iter_file F
-+ _IO_iter_next F
-+ _IO_least_wmarker F
-+ _IO_list_lock F
-+ _IO_list_resetlock F
-+ _IO_list_unlock F
-+ _IO_seekwmark F
-+ _IO_sputbackwc F
-+ _IO_sungetwc F
-+ _IO_switch_to_main_wget_area F
-+ _IO_switch_to_wbackup_area F
-+ _IO_switch_to_wget_mode F
-+ _IO_unsave_wmarkers F
-+ _IO_wdefault_doallocate F
-+ _IO_wdefault_finish F
-+ _IO_wdefault_pbackfail F
-+ _IO_wdefault_uflow F
-+ _IO_wdefault_xsgetn F
-+ _IO_wdefault_xsputn F
-+ _IO_wdo_write F
-+ _IO_wdoallocbuf F
-+ _IO_wfile_overflow F
-+ _IO_wfile_seekoff F
-+ _IO_wfile_sync F
-+ _IO_wfile_underflow F
-+ _IO_wfile_xsputn F
-+ _IO_wmarker_delta F
-+ _IO_wsetb F
-+ __assert F
-+ __cyg_profile_func_enter F
-+ __cyg_profile_func_exit F
-+ __endmntent F
-+ __fbufsize F
-+ __flbf F
-+ __fpending F
-+ __fpurge F
-+ __freadable F
-+ __freading F
-+ __fsetlocking F
-+ __fwritable F
-+ __fwriting F
-+ __getmntent_r F
-+ __nl_langinfo_l F
-+ __open64 F
-+ __res_init F
-+ __res_nclose F
-+ __res_ninit F
-+ __res_state F
-+ __setmntent F
-+ __statfs F
-+ __strndup F
-+ __sysconf F
-+ __sysctl F
-+ __wctrans_l F
-+ __woverflow F
-+ __wuflow F
-+ __wunderflow F
-+ __xpg_sigpause F
-+ _flushlbf F
-+ bind_textdomain_codeset F
-+ dcngettext F
-+ dngettext F
-+ fgetwc F
-+ fgetwc_unlocked F
-+ fgetws F
-+ fgetws_unlocked F
-+ fmemopen F
-+ fputwc F
-+ fputwc_unlocked F
-+ fputws F
-+ fputws_unlocked F
-+ fwide F
-+ fwprintf F
-+ fwscanf F
-+ getdirentries64 F
-+ getloadavg F
-+ getwc F
-+ getwc_unlocked F
-+ getwchar F
-+ getwchar_unlocked F
-+ iruserok_af F
-+ mcheck_check_all F
-+ mcheck_pedantic F
-+ memrchr F
-+ mincore F
-+ mkdtemp F
-+ mkstemp64 F
-+ moncontrol F
-+ ngettext F
-+ posix_fadvise F
-+ posix_fadvise64 F
-+ posix_fallocate F
-+ posix_fallocate64 F
-+ posix_madvise F
-+ posix_memalign F
-+ posix_spawn F
-+ posix_spawn_file_actions_addclose F
-+ posix_spawn_file_actions_adddup2 F
-+ posix_spawn_file_actions_addopen F
-+ posix_spawn_file_actions_destroy F
-+ posix_spawn_file_actions_init F
-+ posix_spawnattr_destroy F
-+ posix_spawnattr_getflags F
-+ posix_spawnattr_getpgroup F
-+ posix_spawnattr_getschedparam F
-+ posix_spawnattr_getschedpolicy F
-+ posix_spawnattr_getsigdefault F
-+ posix_spawnattr_getsigmask F
-+ posix_spawnattr_init F
-+ posix_spawnattr_setflags F
-+ posix_spawnattr_setpgroup F
-+ posix_spawnattr_setschedparam F
-+ posix_spawnattr_setschedpolicy F
-+ posix_spawnattr_setsigdefault F
-+ posix_spawnattr_setsigmask F
-+ posix_spawnp F
-+ putwc F
-+ putwc_unlocked F
-+ putwchar F
-+ putwchar_unlocked F
-+ rcmd_af F
-+ rexec_af F
-+ rresvport_af F
-+ ruserok_af F
-+ svc_getreq_common F
-+ svc_getreq_poll F
-+ svc_max_pollfd D 0x4
-+ swprintf F
-+ swscanf F
-+ ungetwc F
-+ vfwprintf F
-+ vfwscanf F
-+ vswprintf F
-+ vswscanf F
-+ vwprintf F
-+ vwscanf F
-+ wcschrnul F
-+ wcsftime F
-+ wmempcpy F
-+ wprintf F
-+ wscanf F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ __ctype32_b D 0x8
-+ __ctype32_tolower D 0x8
-+ __ctype32_toupper D 0x8
-+ __ctype_b D 0x8
-+ __ctype_tolower D 0x8
-+ __ctype_toupper D 0x8
-+ _res D 0x238
-+ _sys_errlist D 0x3e8
-+ sys_errlist D 0x3e8
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_2_1_stderr_ D 0xe0
-+ _IO_2_1_stdin_ D 0xe0
-+ _IO_2_1_stdout_ D 0xe0
-+ _IO_file_jumps D 0xa8
-+ _IO_list_all D 0x8
-+ _IO_wfile_jumps D 0xa8
-+ __after_morecore_hook D 0x8
-+ __curbrk D 0x8
-+ __environ D 0x8
-+ __free_hook D 0x8
-+ __key_decryptsession_pk_LOCAL D 0x8
-+ __key_encryptsession_pk_LOCAL D 0x8
-+ __key_gendes_LOCAL D 0x8
-+ __malloc_hook D 0x8
-+ __malloc_initialize_hook D 0x8
-+ __memalign_hook D 0x8
-+ __morecore D 0x8
-+ __progname D 0x8
-+ __progname_full D 0x8
-+ __rcmd_errstr D 0x8
-+ __realloc_hook D 0x8
-+ __timezone D 0x8
-+ __tzname D 0x10
-+ _environ D 0x8
-+ _nl_domain_bindings D 0x8
-+ _null_auth D 0x18
-+ _obstack D 0x8
-+ _res_hconf D 0x48
-+ _sys_siglist D 0x200
-+ argp_program_bug_address D 0x8
-+ argp_program_version D 0x8
-+ argp_program_version_hook D 0x8
-+ environ D 0x8
-+ error_print_progname D 0x8
-+ h_errlist D 0x28
-+ loc1 D 0x8
-+ loc2 D 0x8
-+ locs D 0x8
-+ mallwatch D 0x8
-+ obstack_alloc_failed_handler D 0x8
-+ optarg D 0x8
-+ program_invocation_name D 0x8
-+ program_invocation_short_name D 0x8
-+ re_syntax_options D 0x8
-+ rpc_createerr D 0x20
-+ stderr D 0x8
-+ stdin D 0x8
-+ stdout D 0x8
-+ svc_pollfd D 0x8
-+ svcauthdes_stats D 0x18
-+ sys_sigabbrev D 0x200
-+ sys_siglist D 0x200
-+ timezone D 0x8
-+ tzname D 0x10
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.2.6 A
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nanosleep F
-+GLIBC_2.2.6 ia64-.*-linux.*/tls
-+ getunwind F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __ctype32_tolower D 0x4
-+ __ctype32_toupper D 0x4
-+ _res_hconf D 0x30
-+ svc_pollfd D 0x4
-+GLIBC_2.2 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ _IO_wfile_jumps D 0x54
-+GLIBC_2.2 ia64-.*-linux.*/tls
-+ __clone2 F
-+ __divdf3 F
-+ __divsf3 F
-+ __divtf3 F
-+ __multi3 F
-+ _inb F
-+ _inl F
-+ _inw F
-+ _outb F
-+ _outl F
-+ _outw F
-+ inb F
-+ inl F
-+ inw F
-+ outb F
-+ outw F
-+ pciconfig_read F
-+ pciconfig_write F
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ ___brk_addr D 0x8
-+GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _nl_default_dirname D 0x20
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+ __register_atfork F
-+ lchmod F
-+ sched_getaffinity F
-+ sched_setaffinity F
-+ strptime_l F
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ epoll_create F
-+ epoll_ctl F
-+ epoll_wait F
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ remap_file_pages F
-+GLIBC_2.3.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+ _sys_siglist D 0x104
-+ sys_sigabbrev D 0x104
-+ sys_siglist D 0x104
-+GLIBC_2.3.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ strtoll_l F
-+ strtoull_l F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+ __ctype_b_loc F
-+ __ctype_tolower_loc F
-+ __ctype_toupper_loc F
-+ __isctype F
-+ __strftime_l F
-+ __uselocale F
-+ __wcsftime_l F
-+ duplocale F
-+ fgetxattr F
-+ flistxattr F
-+ freeifaddrs F
-+ freelocale F
-+ fremovexattr F
-+ fsetxattr F
-+ futimes F
-+ getifaddrs F
-+ getxattr F
-+ isalnum_l F
-+ isalpha_l F
-+ isblank_l F
-+ iscntrl_l F
-+ isctype F
-+ isdigit_l F
-+ isgraph_l F
-+ islower_l F
-+ isprint_l F
-+ ispunct_l F
-+ isspace_l F
-+ isupper_l F
-+ iswalnum_l F
-+ iswalpha_l F
-+ iswblank_l F
-+ iswcntrl_l F
-+ iswctype_l F
-+ iswdigit_l F
-+ iswgraph_l F
-+ iswlower_l F
-+ iswprint_l F
-+ iswpunct_l F
-+ iswspace_l F
-+ iswupper_l F
-+ iswxdigit_l F
-+ isxdigit_l F
-+ lgetxattr F
-+ listxattr F
-+ llistxattr F
-+ lremovexattr F
-+ lsetxattr F
-+ lutimes F
-+ newlocale F
-+ nl_langinfo_l F
-+ readahead F
-+ removexattr F
-+ sendfile64 F
-+ setxattr F
-+ strcasecmp_l F
-+ strcoll_l F
-+ strfmon_l F
-+ strftime_l F
-+ strncasecmp_l F
-+ strtod_l F
-+ strtof_l F
-+ strtol_l F
-+ strtold_l F
-+ strtoul_l F
-+ strxfrm_l F
-+ tolower_l F
-+ toupper_l F
-+ towctrans_l F
-+ towlower_l F
-+ towupper_l F
-+ uselocale F
-+ wcscasecmp_l F
-+ wcscoll_l F
-+ wcsftime_l F
-+ wcsncasecmp_l F
-+ wcstod_l F
-+ wcstof_l F
-+ wcstol_l F
-+ wcstold_l F
-+ wcstoll_l F
-+ wcstoul_l F
-+ wcstoull_l F
-+ wcsxfrm_l F
-+ wctrans_l F
-+ wctype_l F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _sys_errlist D 0x1f8
-+ sys_errlist D 0x1f8
-+GLIBC_2.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ _sys_errlist D 0x3f0
-+ sys_errlist D 0x3f0
---- glibc-2.3.2/abilist/libcrypt.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libcrypt.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,19 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ crypt F
-+ crypt_r F
-+ encrypt F
-+ encrypt_r F
-+ fcrypt F
-+ setkey F
-+ setkey_r F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libdl.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libdl.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,33 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dlopen F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dladdr F
-+ dlclose F
-+ dlerror F
-+ dlsym F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dlvsym F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ dladdr1 F
-+ dlinfo F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libm.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libm.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,355 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _LIB_VERSION D 0x4
-+ acos F
-+ acosf F
-+ acosh F
-+ acoshf F
-+ acoshl F
-+ acosl F
-+ asin F
-+ asinf F
-+ asinh F
-+ asinhf F
-+ asinhl F
-+ asinl F
-+ atan F
-+ atan2 F
-+ atan2f F
-+ atan2l F
-+ atanf F
-+ atanh F
-+ atanhf F
-+ atanhl F
-+ atanl F
-+ cbrt F
-+ cbrtf F
-+ cbrtl F
-+ ceil F
-+ ceilf F
-+ ceill F
-+ copysign F
-+ copysignf F
-+ copysignl F
-+ cos F
-+ cosf F
-+ cosh F
-+ coshf F
-+ coshl F
-+ cosl F
-+ drem F
-+ dremf F
-+ dreml F
-+ erf F
-+ erfc F
-+ erfcf F
-+ erfcl F
-+ erff F
-+ erfl F
-+ exp F
-+ expf F
-+ expl F
-+ expm1 F
-+ expm1f F
-+ expm1l F
-+ fabs F
-+ fabsf F
-+ fabsl F
-+ finite F
-+ finitef F
-+ finitel F
-+ floor F
-+ floorf F
-+ floorl F
-+ fmod F
-+ fmodf F
-+ fmodl F
-+ frexp F
-+ frexpf F
-+ frexpl F
-+ gamma F
-+ gammaf F
-+ gammal F
-+ hypot F
-+ hypotf F
-+ hypotl F
-+ ilogb F
-+ ilogbf F
-+ ilogbl F
-+ j0 F
-+ j0f F
-+ j0l F
-+ j1 F
-+ j1f F
-+ j1l F
-+ jn F
-+ jnf F
-+ jnl F
-+ ldexp F
-+ ldexpf F
-+ ldexpl F
-+ lgamma F
-+ lgamma_r F
-+ lgammaf F
-+ lgammaf_r F
-+ lgammal F
-+ lgammal_r F
-+ log F
-+ log10 F
-+ log10f F
-+ log10l F
-+ log1p F
-+ log1pf F
-+ log1pl F
-+ logb F
-+ logbf F
-+ logbl F
-+ logf F
-+ logl F
-+ matherr F
-+ modf F
-+ modff F
-+ modfl F
-+ nextafter F
-+ nextafterf F
-+ nextafterl F
-+ pow F
-+ powf F
-+ powl F
-+ remainder F
-+ remainderf F
-+ remainderl F
-+ rint F
-+ rintf F
-+ rintl F
-+ scalb F
-+ scalbf F
-+ scalbl F
-+ scalbn F
-+ scalbnf F
-+ scalbnl F
-+ signgam D 0x4
-+ significand F
-+ significandf F
-+ significandl F
-+ sin F
-+ sinf F
-+ sinh F
-+ sinhf F
-+ sinhl F
-+ sinl F
-+ sqrt F
-+ sqrtf F
-+ sqrtl F
-+ tan F
-+ tanf F
-+ tanh F
-+ tanhf F
-+ tanhl F
-+ tanl F
-+ y0 F
-+ y0f F
-+ y0l F
-+ y1 F
-+ y1f F
-+ y1l F
-+ yn F
-+ ynf F
-+ ynl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ feclearexcept F
-+ fegetenv F
-+ fegetexceptflag F
-+ feraiseexcept F
-+ fesetenv F
-+ fesetexceptflag F
-+ feupdateenv F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __clog10 F
-+ __clog10f F
-+ __clog10l F
-+ __finite F
-+ __finitef F
-+ __finitel F
-+ __fpclassify F
-+ __fpclassifyf F
-+ __signbit F
-+ __signbitf F
-+ cabs F
-+ cabsf F
-+ cabsl F
-+ cacos F
-+ cacosf F
-+ cacosh F
-+ cacoshf F
-+ cacoshl F
-+ cacosl F
-+ carg F
-+ cargf F
-+ cargl F
-+ casin F
-+ casinf F
-+ casinh F
-+ casinhf F
-+ casinhl F
-+ casinl F
-+ catan F
-+ catanf F
-+ catanh F
-+ catanhf F
-+ catanhl F
-+ catanl F
-+ ccos F
-+ ccosf F
-+ ccosh F
-+ ccoshf F
-+ ccoshl F
-+ ccosl F
-+ cexp F
-+ cexpf F
-+ cexpl F
-+ cimag F
-+ cimagf F
-+ cimagl F
-+ clog F
-+ clog10 F
-+ clog10f F
-+ clog10l F
-+ clogf F
-+ clogl F
-+ conj F
-+ conjf F
-+ conjl F
-+ cpow F
-+ cpowf F
-+ cpowl F
-+ cproj F
-+ cprojf F
-+ cprojl F
-+ creal F
-+ crealf F
-+ creall F
-+ csin F
-+ csinf F
-+ csinh F
-+ csinhf F
-+ csinhl F
-+ csinl F
-+ csqrt F
-+ csqrtf F
-+ csqrtl F
-+ ctan F
-+ ctanf F
-+ ctanh F
-+ ctanhf F
-+ ctanhl F
-+ ctanl F
-+ exp10 F
-+ exp10f F
-+ exp10l F
-+ exp2 F
-+ exp2f F
-+ fdim F
-+ fdimf F
-+ fdiml F
-+ fegetround F
-+ feholdexcept F
-+ fesetround F
-+ fetestexcept F
-+ fma F
-+ fmaf F
-+ fmal F
-+ fmax F
-+ fmaxf F
-+ fmaxl F
-+ fmin F
-+ fminf F
-+ fminl F
-+ llrint F
-+ llrintf F
-+ llrintl F
-+ llround F
-+ llroundf F
-+ llroundl F
-+ log2 F
-+ log2f F
-+ log2l F
-+ lrint F
-+ lrintf F
-+ lrintl F
-+ lround F
-+ lroundf F
-+ lroundl F
-+ nan F
-+ nanf F
-+ nanl F
-+ nearbyint F
-+ nearbyintf F
-+ nearbyintl F
-+ nexttoward F
-+ nexttowardf F
-+ nexttowardl F
-+ pow10 F
-+ pow10f F
-+ pow10l F
-+ remquo F
-+ remquof F
-+ remquol F
-+ round F
-+ roundf F
-+ roundl F
-+ scalbln F
-+ scalblnf F
-+ scalblnl F
-+ sincos F
-+ sincosf F
-+ sincosl F
-+ tgamma F
-+ tgammaf F
-+ tgammal F
-+ trunc F
-+ truncf F
-+ truncl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __fpclassifyl F
-+ __signbitl F
-+ exp2l F
-+GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fe_dfl_env D 0x8
-+ __fe_enabled_env D 0x8
-+ __fe_nomask_env F
-+ __fe_nonieee_env D 0x8
-+GLIBC_2.2.3 ia64-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+ matherrf F
-+ matherrl F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ fedisableexcept F
-+ feenableexcept F
-+ fegetexcept F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __expl F
-+ __expm1l F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libnsl.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libnsl.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,142 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __yp_check F
-+ xdr_domainname F
-+ xdr_keydat F
-+ xdr_mapname F
-+ xdr_peername F
-+ xdr_valdat F
-+ xdr_yp_buf F
-+ xdr_ypbind_binding F
-+ xdr_ypbind_resp F
-+ xdr_ypbind_resptype F
-+ xdr_ypbind_setdom F
-+ xdr_ypdelete_args F
-+ xdr_ypmap_parms F
-+ xdr_ypmaplist F
-+ xdr_yppush_status F
-+ xdr_yppushresp_xfr F
-+ xdr_ypreq_key F
-+ xdr_ypreq_nokey F
-+ xdr_ypreq_xfr F
-+ xdr_ypresp_all F
-+ xdr_ypresp_key_val F
-+ xdr_ypresp_maplist F
-+ xdr_ypresp_master F
-+ xdr_ypresp_order F
-+ xdr_ypresp_val F
-+ xdr_ypresp_xfr F
-+ xdr_ypstat F
-+ xdr_ypupdate_args F
-+ xdr_ypxfrstat F
-+ yp_all F
-+ yp_bind F
-+ yp_first F
-+ yp_get_default_domain F
-+ yp_maplist F
-+ yp_master F
-+ yp_match F
-+ yp_next F
-+ yp_order F
-+ yp_unbind F
-+ yp_update F
-+ ypbinderr_string F
-+ yperr_string F
-+ ypprot_err F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __free_fdresult F
-+ __nis_default_access F
-+ __nis_default_group F
-+ __nis_default_owner F
-+ __nis_default_ttl F
-+ __nis_finddirectory F
-+ __nis_hash F
-+ __nisbind_connect F
-+ __nisbind_create F
-+ __nisbind_destroy F
-+ __nisbind_next F
-+ nis_add F
-+ nis_add_entry F
-+ nis_addmember F
-+ nis_checkpoint F
-+ nis_clone_directory F
-+ nis_clone_object F
-+ nis_clone_result F
-+ nis_creategroup F
-+ nis_destroy_object F
-+ nis_destroygroup F
-+ nis_dir_cmp F
-+ nis_domain_of F
-+ nis_domain_of_r F
-+ nis_first_entry F
-+ nis_free_directory F
-+ nis_free_object F
-+ nis_free_request F
-+ nis_freenames F
-+ nis_freeresult F
-+ nis_freeservlist F
-+ nis_freetags F
-+ nis_getnames F
-+ nis_getservlist F
-+ nis_ismember F
-+ nis_leaf_of F
-+ nis_leaf_of_r F
-+ nis_lerror F
-+ nis_list F
-+ nis_local_directory F
-+ nis_local_group F
-+ nis_local_host F
-+ nis_local_principal F
-+ nis_lookup F
-+ nis_mkdir F
-+ nis_modify F
-+ nis_modify_entry F
-+ nis_name_of F
-+ nis_name_of_r F
-+ nis_next_entry F
-+ nis_perror F
-+ nis_ping F
-+ nis_print_directory F
-+ nis_print_entry F
-+ nis_print_group F
-+ nis_print_group_entry F
-+ nis_print_link F
-+ nis_print_object F
-+ nis_print_result F
-+ nis_print_rights F
-+ nis_print_table F
-+ nis_read_obj F
-+ nis_remove F
-+ nis_remove_entry F
-+ nis_removemember F
-+ nis_rmdir F
-+ nis_servstate F
-+ nis_sperrno F
-+ nis_sperror F
-+ nis_sperror_r F
-+ nis_stats F
-+ nis_verifygroup F
-+ nis_write_obj F
-+ readColdStartFile F
-+ writeColdStartFile F
-+ xdr_cback_data F
-+ xdr_obj_p F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ xdr_ypall F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libpthread.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libpthread.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,256 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_attr_init F
-+ pthread_create F
-+ sem_destroy F
-+ sem_getvalue F
-+ sem_init F
-+ sem_post F
-+ sem_trywait F
-+ sem_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ pthread_atfork F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_cond_broadcast F
-+ pthread_cond_destroy F
-+ pthread_cond_init F
-+ pthread_cond_signal F
-+ pthread_cond_timedwait F
-+ pthread_cond_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_flockfile F
-+ _IO_ftrylockfile F
-+ _IO_funlockfile F
-+ __close F
-+ __connect F
-+ __errno_location F
-+ __fcntl F
-+ __fork F
-+ __h_errno_location F
-+ __lseek F
-+ __open F
-+ __pthread_getspecific F
-+ __pthread_key_create F
-+ __pthread_mutex_destroy F
-+ __pthread_mutex_init F
-+ __pthread_mutex_lock F
-+ __pthread_mutex_trylock F
-+ __pthread_mutex_unlock F
-+ __pthread_mutexattr_destroy F
-+ __pthread_mutexattr_init F
-+ __pthread_mutexattr_settype F
-+ __pthread_once F
-+ __pthread_setspecific F
-+ __read F
-+ __send F
-+ __sigaction F
-+ __wait F
-+ __write F
-+ _pthread_cleanup_pop F
-+ _pthread_cleanup_pop_restore F
-+ _pthread_cleanup_push F
-+ _pthread_cleanup_push_defer F
-+ accept F
-+ close F
-+ connect F
-+ fcntl F
-+ flockfile F
-+ fork F
-+ fsync F
-+ ftrylockfile F
-+ funlockfile F
-+ longjmp F
-+ lseek F
-+ msync F
-+ nanosleep F
-+ open F
-+ pause F
-+ pthread_attr_destroy F
-+ pthread_attr_getdetachstate F
-+ pthread_attr_getinheritsched F
-+ pthread_attr_getschedparam F
-+ pthread_attr_getschedpolicy F
-+ pthread_attr_getscope F
-+ pthread_attr_setdetachstate F
-+ pthread_attr_setinheritsched F
-+ pthread_attr_setschedparam F
-+ pthread_attr_setschedpolicy F
-+ pthread_attr_setscope F
-+ pthread_cancel F
-+ pthread_condattr_destroy F
-+ pthread_condattr_init F
-+ pthread_detach F
-+ pthread_equal F
-+ pthread_exit F
-+ pthread_getschedparam F
-+ pthread_getspecific F
-+ pthread_join F
-+ pthread_key_create F
-+ pthread_key_delete F
-+ pthread_kill F
-+ pthread_kill_other_threads_np F
-+ pthread_mutex_destroy F
-+ pthread_mutex_init F
-+ pthread_mutex_lock F
-+ pthread_mutex_trylock F
-+ pthread_mutex_unlock F
-+ pthread_mutexattr_destroy F
-+ pthread_mutexattr_getkind_np F
-+ pthread_mutexattr_init F
-+ pthread_mutexattr_setkind_np F
-+ pthread_once F
-+ pthread_self F
-+ pthread_setcancelstate F
-+ pthread_setcanceltype F
-+ pthread_setschedparam F
-+ pthread_setspecific F
-+ pthread_sigmask F
-+ pthread_testcancel F
-+ raise F
-+ read F
-+ recv F
-+ recvfrom F
-+ recvmsg F
-+ send F
-+ sendmsg F
-+ sendto F
-+ sigaction F
-+ siglongjmp F
-+ sigwait F
-+ system F
-+ tcdrain F
-+ vfork F
-+ wait F
-+ waitpid F
-+ write F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.1 A
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ sem_close F
-+ sem_open F
-+ sem_unlink F
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.2 A
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __vfork F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __libc_allocate_rtsig F
-+ __libc_current_sigrtmax F
-+ __libc_current_sigrtmin F
-+ pthread_attr_getguardsize F
-+ pthread_attr_getstackaddr F
-+ pthread_attr_getstacksize F
-+ pthread_attr_setguardsize F
-+ pthread_attr_setstackaddr F
-+ pthread_attr_setstacksize F
-+ pthread_getconcurrency F
-+ pthread_mutexattr_gettype F
-+ pthread_mutexattr_settype F
-+ pthread_rwlock_destroy F
-+ pthread_rwlock_init F
-+ pthread_rwlock_rdlock F
-+ pthread_rwlock_tryrdlock F
-+ pthread_rwlock_trywrlock F
-+ pthread_rwlock_unlock F
-+ pthread_rwlock_wrlock F
-+ pthread_rwlockattr_destroy F
-+ pthread_rwlockattr_getkind_np F
-+ pthread_rwlockattr_getpshared F
-+ pthread_rwlockattr_init F
-+ pthread_rwlockattr_setkind_np F
-+ pthread_rwlockattr_setpshared F
-+ pthread_setconcurrency F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_getattr_np F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __open64 F
-+ __pread64 F
-+ __pthread_rwlock_destroy F
-+ __pthread_rwlock_init F
-+ __pthread_rwlock_rdlock F
-+ __pthread_rwlock_tryrdlock F
-+ __pthread_rwlock_trywrlock F
-+ __pthread_rwlock_unlock F
-+ __pthread_rwlock_wrlock F
-+ __pwrite64 F
-+ __res_state F
-+ lseek64 F
-+ open64 F
-+ pread F
-+ pread64 F
-+ pthread_attr_getstack F
-+ pthread_attr_setstack F
-+ pthread_barrier_destroy F
-+ pthread_barrier_init F
-+ pthread_barrier_wait F
-+ pthread_barrierattr_destroy F
-+ pthread_barrierattr_init F
-+ pthread_barrierattr_setpshared F
-+ pthread_condattr_getpshared F
-+ pthread_condattr_setpshared F
-+ pthread_getcpuclockid F
-+ pthread_mutex_timedlock F
-+ pthread_mutexattr_getpshared F
-+ pthread_mutexattr_setpshared F
-+ pthread_rwlock_timedrdlock F
-+ pthread_rwlock_timedwrlock F
-+ pthread_spin_destroy F
-+ pthread_spin_init F
-+ pthread_spin_lock F
-+ pthread_spin_trylock F
-+ pthread_spin_unlock F
-+ pthread_yield F
-+ pwrite F
-+ pwrite64 F
-+ sem_timedwait F
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.2.6 A
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nanosleep F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/thread sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ pthread_barrierattr_getpshared F
-+ pthread_condattr_getclock F
-+ pthread_condattr_setclock F
-+ pthread_timedjoin_np F
-+ pthread_tryjoin_np F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libresolv.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libresolv.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,95 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ dn_expand F
-+ res_mkquery F
-+ res_query F
-+ res_querydomain F
-+ res_search F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __b64_ntop F
-+ __b64_pton F
-+ __dn_comp F
-+ __dn_count_labels F
-+ __dn_skipname F
-+ __fp_nquery F
-+ __fp_query F
-+ __fp_resstat F
-+ __hostalias F
-+ __loc_aton F
-+ __loc_ntoa F
-+ __p_cdname F
-+ __p_cdnname F
-+ __p_class F
-+ __p_fqname F
-+ __p_fqnname F
-+ __p_option F
-+ __p_query F
-+ __p_secstodate F
-+ __p_time F
-+ __p_type F
-+ __putlong F
-+ __putshort F
-+ __res_close F
-+ __res_dnok F
-+ __res_hnok F
-+ __res_isourserver F
-+ __res_mailok F
-+ __res_nameinquery F
-+ __res_ownok F
-+ __res_queriesmatch F
-+ __res_send F
-+ __sym_ntop F
-+ __sym_ntos F
-+ __sym_ston F
-+ _gethtbyaddr F
-+ _gethtbyname F
-+ _gethtbyname2 F
-+ _gethtent F
-+ _getlong F
-+ _getshort F
-+ _sethtent F
-+ inet_net_ntop F
-+ inet_net_pton F
-+ inet_neta F
-+ res_gethostbyaddr F
-+ res_gethostbyname F
-+ res_gethostbyname2 F
-+ res_send_setqhook F
-+ res_send_setrhook F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __p_class_syms D 0x54
-+ __p_type_syms D 0x21c
-+ _res_opcodes D 0x40
-+GLIBC_2.0 ia64-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __p_class_syms D 0xa8
-+ __p_type_syms D 0x438
-+ _res_opcodes D 0x80
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __dn_expand F
-+ __res_hostalias F
-+ __res_mkquery F
-+ __res_nmkquery F
-+ __res_nquery F
-+ __res_nquerydomain F
-+ __res_nsearch F
-+ __res_nsend F
-+ __res_query F
-+ __res_querydomain F
-+ __res_search F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+ __p_rcode F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/librt.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/librt.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,44 @@
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ aio_cancel F
-+ aio_cancel64 F
-+ aio_error F
-+ aio_error64 F
-+ aio_fsync F
-+ aio_fsync64 F
-+ aio_init F
-+ aio_read F
-+ aio_read64 F
-+ aio_return F
-+ aio_return64 F
-+ aio_suspend F
-+ aio_suspend64 F
-+ aio_write F
-+ aio_write64 F
-+ lio_listio F
-+ lio_listio64 F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ clock_getcpuclockid F
-+ clock_getres F
-+ clock_gettime F
-+ clock_nanosleep F
-+ clock_settime F
-+ shm_open F
-+ shm_unlink F
-+ timer_create F
-+ timer_delete F
-+ timer_getoverrun F
-+ timer_gettime F
-+ timer_settime F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/abilist/libthread_db.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libthread_db.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,59 @@
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1.3 A
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ td_init F
-+ td_log F
-+ td_ta_clear_event F
-+ td_ta_delete F
-+ td_ta_enable_stats F
-+ td_ta_event_addr F
-+ td_ta_event_getmsg F
-+ td_ta_get_nthreads F
-+ td_ta_get_ph F
-+ td_ta_get_stats F
-+ td_ta_map_id2thr F
-+ td_ta_map_lwp2thr F
-+ td_ta_new F
-+ td_ta_reset_stats F
-+ td_ta_set_event F
-+ td_ta_setconcurrency F
-+ td_ta_thr_iter F
-+ td_ta_tsd_iter F
-+ td_thr_clear_event F
-+ td_thr_dbresume F
-+ td_thr_dbsuspend F
-+ td_thr_event_enable F
-+ td_thr_event_getmsg F
-+ td_thr_get_info F
-+ td_thr_getfpregs F
-+ td_thr_getgregs F
-+ td_thr_getxregs F
-+ td_thr_getxregsize F
-+ td_thr_set_event F
-+ td_thr_setfpregs F
-+ td_thr_setgregs F
-+ td_thr_setprio F
-+ td_thr_setsigpending F
-+ td_thr_setxregs F
-+ td_thr_sigsetmask F
-+ td_thr_tsd F
-+ td_thr_validate F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ td_symbol_list F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ td_thr_tlsbase F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+ td_thr_tls_get_addr F
---- glibc-2.3.2/abilist/libutil.abilist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/abilist/libutil.abilist 2003-04-01 23:39:52.000000000 -0500
-@@ -0,0 +1,18 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ forkpty F
-+ login F
-+ login_tty F
-+ logout F
-+ logwtmp F
-+ openpty F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
---- glibc-2.3.2/argp/Makefile 2002-12-04 14:45:21.000000000 -0500
-+++ glibc-2.3.2/argp/Makefile 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1997, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1997, 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
-@@ -28,4 +28,8 @@
-
- tests = argp-test tst-argp1
-
-+CFLAGS-argp-help.c = $(uses-callbacks) -fexceptions
-+CFLAGS-argp-parse.c = $(uses-callbacks)
-+CFLAGS-argp-fmtstream.c = -fexceptions
-+
- include ../Rules
---- glibc-2.3.2/argp/argp-help.c 2002-04-08 04:19:17.000000000 -0400
-+++ glibc-2.3.2/argp/argp-help.c 2003-08-21 08:36:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Hierarchial argument parsing help output
-- Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Miles Bader <miles@gnu.ai.mit.edu>.
-
-@@ -521,7 +521,7 @@
- free (hol);
- }
-
--static inline int
-+static int
- hol_entry_short_iterate (const struct hol_entry *entry,
- int (*func)(const struct argp_option *opt,
- const struct argp_option *real,
-@@ -547,6 +547,7 @@
- }
-
- static inline int
-+__attribute ((always_inline))
- hol_entry_long_iterate (const struct hol_entry *entry,
- int (*func)(const struct argp_option *opt,
- const struct argp_option *real,
---- glibc-2.3.2/argp/argp.h 2003-02-28 20:09:18.000000000 -0500
-+++ glibc-2.3.2/argp/argp.h 2003-09-19 22:37:01.000000000 -0400
-@@ -32,6 +32,10 @@
- # define __const const
- #endif
-
-+#ifndef __THROW
-+# define __THROW
-+#endif
-+
- #ifndef __error_t_defined
- typedef int error_t;
- # define __error_t_defined
-@@ -376,11 +380,11 @@
- extern error_t argp_parse (__const struct argp *__restrict __argp,
- int __argc, char **__restrict __argv,
- unsigned __flags, int *__restrict __arg_index,
-- void *__restrict __input) __THROW;
-+ void *__restrict __input);
- extern error_t __argp_parse (__const struct argp *__restrict __argp,
- int __argc, char **__restrict __argv,
- unsigned __flags, int *__restrict __arg_index,
-- void *__restrict __input) __THROW;
-+ void *__restrict __input);
-
- /* Global variables. */
-
-@@ -444,10 +448,10 @@
- ARGP_HELP_*. */
- extern void argp_help (__const struct argp *__restrict __argp,
- FILE *__restrict __stream,
-- unsigned __flags, char *__restrict __name) __THROW;
-+ unsigned __flags, char *__restrict __name);
- extern void __argp_help (__const struct argp *__restrict __argp,
- FILE *__restrict __stream, unsigned __flags,
-- char *__name) __THROW;
-+ char *__name);
-
- /* The following routines are intended to be called from within an argp
- parsing routine (thus taking an argp_state structure as the first
-@@ -461,23 +465,23 @@
- from the set ARGP_HELP_*. */
- extern void argp_state_help (__const struct argp_state *__restrict __state,
- FILE *__restrict __stream,
-- unsigned int __flags) __THROW;
-+ unsigned int __flags);
- extern void __argp_state_help (__const struct argp_state *__restrict __state,
- FILE *__restrict __stream,
-- unsigned int __flags) __THROW;
-+ unsigned int __flags);
-
- /* Possibly output the standard usage message for ARGP to stderr and exit. */
--extern void argp_usage (__const struct argp_state *__state) __THROW;
--extern void __argp_usage (__const struct argp_state *__state) __THROW;
-+extern void argp_usage (__const struct argp_state *__state);
-+extern void __argp_usage (__const struct argp_state *__state);
-
- /* If appropriate, print the printf string FMT and following args, preceded
- by the program name and `:', to stderr, and followed by a `Try ... --help'
- message, then exit (1). */
- extern void argp_error (__const struct argp_state *__restrict __state,
-- __const char *__restrict __fmt, ...) __THROW
-+ __const char *__restrict __fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
- extern void __argp_error (__const struct argp_state *__restrict __state,
-- __const char *__restrict __fmt, ...) __THROW
-+ __const char *__restrict __fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
- /* Similar to the standard gnu error-reporting function error(), but will
-@@ -490,11 +494,11 @@
- parsing but don't reflect a (syntactic) problem with the input. */
- extern void argp_failure (__const struct argp_state *__restrict __state,
- int __status, int __errnum,
-- __const char *__restrict __fmt, ...) __THROW
-+ __const char *__restrict __fmt, ...)
- __attribute__ ((__format__ (__printf__, 4, 5)));
- extern void __argp_failure (__const struct argp_state *__restrict __state,
- int __status, int __errnum,
-- __const char *__restrict __fmt, ...) __THROW
-+ __const char *__restrict __fmt, ...)
- __attribute__ ((__format__ (__printf__, 4, 5)));
-
- /* Returns true if the option OPT is a valid short option. */
---- glibc-2.3.2/argp/tst-argp1.c 2002-12-04 17:45:02.000000000 -0500
-+++ glibc-2.3.2/argp/tst-argp1.c 2003-03-18 16:46:06.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -29,7 +29,7 @@
- #define OPT_TOPLEVEL 304
-
-
--static const struct argp_option options[] =
-+static const struct argp_option test_options[] =
- {
- { NULL, 0, NULL, 0, "\
- This is a test for threads so we allow ther user to selection the number of \
-@@ -89,12 +89,12 @@
- /* Data structure to communicate with argp functions. */
- static struct argp argp =
- {
-- options, parse_opt
-+ test_options, parse_opt
- };
-
-
--int
--main (void)
-+static int
-+do_test (void)
- {
- int argc = 2;
- char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL };
-@@ -113,3 +113,6 @@
- {
- return ARGP_ERR_UNKNOWN;
- }
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/assert/assert.h 2001-07-07 15:20:51.000000000 -0400
-+++ glibc-2.3.2/assert/assert.h 2003-08-21 08:36:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,1992,1994-1999,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1994-2001,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
-@@ -84,16 +84,33 @@
-
- __END_DECLS
-
--# define assert(expr) \
-+/* For the macro definition we use gcc's __builtin_expect if possible
-+ to generate good code for the non-error case. gcc 3.0 is a good
-+ enough estimate for when the feature became available. */
-+# if __GNUC_PREREQ (3, 0)
-+# define assert(expr) \
-+ (__ASSERT_VOID_CAST (__builtin_expect (!!(expr), 1) ? 0 : \
-+ (__assert_fail (__STRING(expr), __FILE__, __LINE__, \
-+ __ASSERT_FUNCTION), 0)))
-+# else
-+# define assert(expr) \
- (__ASSERT_VOID_CAST ((expr) ? 0 : \
- (__assert_fail (__STRING(expr), __FILE__, __LINE__, \
- __ASSERT_FUNCTION), 0)))
-+# endif
-
- # ifdef __USE_GNU
--# define assert_perror(errnum) \
-+# if __GNUC_PREREQ (3, 0)
-+# define assert_perror(errnum) \
-+ (__ASSERT_VOID_CAST (__builtin_expect (!(errnum), 1) ? 0 : \
-+ (__assert_perror_fail ((errnum), __FILE__, __LINE__, \
-+ __ASSERT_FUNCTION), 0)))
-+# else
-+# define assert_perror(errnum) \
- (__ASSERT_VOID_CAST (!(errnum) ? 0 : \
- (__assert_perror_fail ((errnum), __FILE__, __LINE__, \
- __ASSERT_FUNCTION), 0)))
-+# endif
- # endif
-
- /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
---- glibc-2.3.2/autom4te.cache/output.0 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/autom4te.cache/output.0 2003-09-19 22:40:33.000000000 -0400
-@@ -0,0 +1,8515 @@
-+@%:@! /bin/sh
-+@%:@ From configure.in CVSid.
-+@%:@ Guess values for system-dependent variables and create Makefiles.
-+@%:@ Generated by GNU Autoconf 2.57 for GNU C Library (see version.h).
-+@%:@
-+@%:@ Report bugs to <glibc>.
-+@%:@
-+@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-+@%:@ Free Software Foundation, Inc.
-+@%:@ This configure script is free software; the Free Software Foundation
-+@%:@ gives unlimited permission to copy, distribute and modify it.
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-+ set -o posix
-+fi
-+
-+# Support unset when possible.
-+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+do
-+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)$' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X/"$0" |
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-+ /^X\/\(\/\/\)$/{ s//\1/; q; }
-+ /^X\/\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+
-+
-+# PATH needs CR, and LINENO needs CR and PATH.
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+
-+
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" || {
-+ # Find who we are. Look in the path if we contain no path at all
-+ # relative or not.
-+ case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+
-+ ;;
-+ esac
-+ # We did not find ourselves, most probably we were run as `sh COMMAND'
-+ # in which case we are not to be found in the path.
-+ if test "x$as_myself" = x; then
-+ as_myself=$0
-+ fi
-+ if test ! -f "$as_myself"; then
-+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-+ { (exit 1); exit 1; }; }
-+ fi
-+ case $CONFIG_SHELL in
-+ '')
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for as_base in sh bash ksh sh5; do
-+ case $as_dir in
-+ /*)
-+ if ("$as_dir/$as_base" -c '
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-+ CONFIG_SHELL=$as_dir/$as_base
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-+ fi;;
-+ esac
-+ done
-+done
-+;;
-+ esac
-+
-+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-+ # uniformly replaced by the line number. The first 'sed' inserts a
-+ # line-number line before each line; the second 'sed' does the real
-+ # work. The second script uses 'N' to pair each line-number line
-+ # with the numbered line, and appends trailing '-' during
-+ # substitution so that $LINENO is not a special case at line end.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$as_me.lineno &&
-+ chmod +x $as_me.lineno ||
-+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-+ { (exit 1); exit 1; }; }
-+
-+ # Don't try to exec as it changes $[0], causing all sort of problems
-+ # (the dirname of $[0] is not the place where we might find the
-+ # original and so on. Autoconf is especially sensible to this).
-+ . ./$as_me.lineno
-+ # Exit status is that of the last command.
-+ exit
-+}
-+
-+
-+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-+ *c*,-n*) ECHO_N= ECHO_C='
-+' ECHO_T=' ' ;;
-+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+echo >conf$$.file
-+if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ # We could just check for DJGPP; but this test a) works b) is more generic
-+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-+ if test -f conf$$.exe; then
-+ # Don't use ln at all; we don't have any links
-+ as_ln_s='cp -p'
-+ else
-+ as_ln_s='ln -s'
-+ fi
-+elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+else
-+ as_ln_s='cp -p'
-+fi
-+rm -f conf$$ conf$$.exe conf$$.file
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-+
-+
-+# IFS
-+# We need space, tab and new line, in precisely that order.
-+as_nl='
-+'
-+IFS=" $as_nl"
-+
-+# CDPATH.
-+$as_unset CDPATH
-+
-+
-+# Name of the host.
-+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-+# so uname gets run too.
-+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-+
-+exec 6>&1
-+
-+#
-+# Initializations.
-+#
-+ac_default_prefix=/usr/local
-+ac_config_libobj_dir=.
-+cross_compiling=no
-+subdirs=
-+MFLAGS=
-+MAKEFLAGS=
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+# Maximum number of lines to put in a shell here document.
-+# This variable seems obsolete. It should probably be removed, and
-+# only ac_max_sed_lines should be used.
-+: ${ac_max_here_lines=38}
-+
-+# Identity of this package.
-+PACKAGE_NAME='GNU C Library'
-+PACKAGE_TARNAME='c-library'
-+PACKAGE_VERSION='(see version.h)'
-+PACKAGE_STRING='GNU C Library (see version.h)'
-+PACKAGE_BUGREPORT='glibc'
-+
-+ac_unique_file="include/features.h"
-+ac_subdirs_all="$ac_subdirs_all "
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#if HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#if HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#if STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# if HAVE_STDLIB_H
-+# include <stdlib.h>
-+# endif
-+#endif
-+#if HAVE_STRING_H
-+# if !STDC_HEADERS && HAVE_MEMORY_H
-+# include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#if HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#if HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#else
-+# if HAVE_STDINT_H
-+# include <stdint.h>
-+# endif
-+#endif
-+#if HAVE_UNISTD_H
-+# include <unistd.h>
-+#endif"
-+
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIB@&t@OBJS LTLIBOBJS'
-+ac_subst_files=''
-+
-+# Initialize some variables set by options.
-+ac_init_help=
-+ac_init_version=false
-+# The variables have the same names as the options, with
-+# dashes changed to underlines.
-+cache_file=/dev/null
-+exec_prefix=NONE
-+no_create=
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+verbose=
-+x_includes=NONE
-+x_libraries=NONE
-+
-+# Installation directory options.
-+# These are left unexpanded so users can "make install exec_prefix=/foo"
-+# and all the variables that are supposed to be based on exec_prefix
-+# by default will actually change.
-+# Use braces instead of parens because sh, perl, etc. also accept them.
-+bindir='${exec_prefix}/bin'
-+sbindir='${exec_prefix}/sbin'
-+libexecdir='${exec_prefix}/libexec'
-+datadir='${prefix}/share'
-+sysconfdir='${prefix}/etc'
-+sharedstatedir='${prefix}/com'
-+localstatedir='${prefix}/var'
-+libdir='${exec_prefix}/lib'
-+includedir='${prefix}/include'
-+oldincludedir='/usr/include'
-+infodir='${prefix}/info'
-+mandir='${prefix}/man'
-+
-+ac_prev=
-+for ac_option
-+do
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case $ac_option in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir=$ac_optarg ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build_alias ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build_alias=$ac_optarg ;;
-+
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-+ cache_file=$ac_optarg ;;
-+
-+ --config-cache | -C)
-+ cache_file=config.cache ;;
-+
-+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ ac_prev=datadir ;;
-+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-+ | --da=*)
-+ datadir=$ac_optarg ;;
-+
-+ -disable-* | --disable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-+ eval "enable_$ac_feature=no" ;;
-+
-+ -enable-* | --enable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "enable_$ac_feature='$ac_optarg'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ exec_prefix=$ac_optarg ;;
-+
-+ -gas | --gas | --ga | --g)
-+ # Obsolete; use --with-gas.
-+ with_gas=yes ;;
-+
-+ -help | --help | --hel | --he | -h)
-+ ac_init_help=long ;;
-+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-+ ac_init_help=recursive ;;
-+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-+ ac_init_help=short ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host_alias ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host_alias=$ac_optarg ;;
-+
-+ -includedir | --includedir | --includedi | --included | --include \
-+ | --includ | --inclu | --incl | --inc)
-+ ac_prev=includedir ;;
-+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-+ | --includ=* | --inclu=* | --incl=* | --inc=*)
-+ includedir=$ac_optarg ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir=$ac_optarg ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ libdir=$ac_optarg ;;
-+
-+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-+ | --libexe | --libex | --libe)
-+ ac_prev=libexecdir ;;
-+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-+ | --libexe=* | --libex=* | --libe=*)
-+ libexecdir=$ac_optarg ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir=$ac_optarg ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ mandir=$ac_optarg ;;
-+
-+ -nfp | --nfp | --nf)
-+ # Obsolete; use --without-fp.
-+ with_fp=no ;;
-+
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c | -n)
-+ no_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir=$ac_optarg ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ prefix=$ac_optarg ;;
-+
-+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
-+ | --program-pre | --program-pr | --program-p)
-+ ac_prev=program_prefix ;;
-+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
-+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-+ program_prefix=$ac_optarg ;;
-+
-+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
-+ | --program-suf | --program-su | --program-s)
-+ ac_prev=program_suffix ;;
-+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
-+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-+ program_suffix=$ac_optarg ;;
-+
-+ -program-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name=$ac_optarg ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir=$ac_optarg ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir=$ac_optarg ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site=$ac_optarg ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ srcdir=$ac_optarg ;;
-+
-+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-+ | --syscon | --sysco | --sysc | --sys | --sy)
-+ ac_prev=sysconfdir ;;
-+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-+ sysconfdir=$ac_optarg ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target_alias ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target_alias=$ac_optarg ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-+
-+ -with-* | --with-*)
-+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "with_$ac_package='$ac_optarg'" ;;
-+
-+ -without-* | --without-*)
-+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_package=`echo $ac_package | sed 's/-/_/g'`
-+ eval "with_$ac_package=no" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ ac_prev=x_includes ;;
-+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-+ x_includes=$ac_optarg ;;
-+
-+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
-+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-+ ac_prev=x_libraries ;;
-+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-+ x_libraries=$ac_optarg ;;
-+
-+ -*) { echo "$as_me: error: unrecognized option: $ac_option
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); exit 1; }; }
-+ ;;
-+
-+ *=*)
-+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-+ eval "$ac_envvar='$ac_optarg'"
-+ export $ac_envvar ;;
-+
-+ *)
-+ # FIXME: should be removed in autoconf 3.0.
-+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-+ ;;
-+
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# Be sure to have absolute paths.
-+for ac_var in exec_prefix prefix
-+do
-+ eval ac_val=$`echo $ac_var`
-+ case $ac_val in
-+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# Be sure to have absolute paths.
-+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-+ localstatedir libdir includedir oldincludedir infodir mandir
-+do
-+ eval ac_val=$`echo $ac_var`
-+ case $ac_val in
-+ [\\/$]* | ?:[\\/]* ) ;;
-+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# There might be people who depend on the old broken behavior: `$host'
-+# used to hold the argument of --host etc.
-+# FIXME: To remove some day.
-+build=$build_alias
-+host=$host_alias
-+target=$target_alias
-+
-+# FIXME: To remove some day.
-+if test "x$host_alias" != x; then
-+ if test "x$build_alias" = x; then
-+ cross_compiling=maybe
-+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-+ If a cross compiler is detected then cross compile mode will be used." >&2
-+ elif test "x$build_alias" != "x$host_alias"; then
-+ cross_compiling=yes
-+ fi
-+fi
-+
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+test "$silent" = yes && exec 6>/dev/null
-+
-+
-+# Find the source files, if location was not specified.
-+if test -z "$srcdir"; then
-+ ac_srcdir_defaulted=yes
-+ # Try the directory containing this script, then its parent.
-+ ac_confdir=`(dirname "$0") 2>/dev/null ||
-+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$0" : 'X\(//\)[^/]' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$0" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ srcdir=$ac_confdir
-+ if test ! -r $srcdir/$ac_unique_file; then
-+ srcdir=..
-+ fi
-+else
-+ ac_srcdir_defaulted=no
-+fi
-+if test ! -r $srcdir/$ac_unique_file; then
-+ if test "$ac_srcdir_defaulted" = yes; then
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-+ { (exit 1); exit 1; }; }
-+ else
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { (exit 1); exit 1; }; }
-+ fi
-+fi
-+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
-+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-+ { (exit 1); exit 1; }; }
-+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-+ac_env_build_alias_set=${build_alias+set}
-+ac_env_build_alias_value=$build_alias
-+ac_cv_env_build_alias_set=${build_alias+set}
-+ac_cv_env_build_alias_value=$build_alias
-+ac_env_host_alias_set=${host_alias+set}
-+ac_env_host_alias_value=$host_alias
-+ac_cv_env_host_alias_set=${host_alias+set}
-+ac_cv_env_host_alias_value=$host_alias
-+ac_env_target_alias_set=${target_alias+set}
-+ac_env_target_alias_value=$target_alias
-+ac_cv_env_target_alias_set=${target_alias+set}
-+ac_cv_env_target_alias_value=$target_alias
-+ac_env_CC_set=${CC+set}
-+ac_env_CC_value=$CC
-+ac_cv_env_CC_set=${CC+set}
-+ac_cv_env_CC_value=$CC
-+ac_env_CFLAGS_set=${CFLAGS+set}
-+ac_env_CFLAGS_value=$CFLAGS
-+ac_cv_env_CFLAGS_set=${CFLAGS+set}
-+ac_cv_env_CFLAGS_value=$CFLAGS
-+ac_env_LDFLAGS_set=${LDFLAGS+set}
-+ac_env_LDFLAGS_value=$LDFLAGS
-+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-+ac_cv_env_LDFLAGS_value=$LDFLAGS
-+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-+ac_env_CPPFLAGS_value=$CPPFLAGS
-+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-+ac_env_CPP_set=${CPP+set}
-+ac_env_CPP_value=$CPP
-+ac_cv_env_CPP_set=${CPP+set}
-+ac_cv_env_CPP_value=$CPP
-+ac_env_CXX_set=${CXX+set}
-+ac_env_CXX_value=$CXX
-+ac_cv_env_CXX_set=${CXX+set}
-+ac_cv_env_CXX_value=$CXX
-+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_env_CXXFLAGS_value=$CXXFLAGS
-+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-+
-+#
-+# Report the --help message.
-+#
-+if test "$ac_init_help" = "long"; then
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat <<_ACEOF
-+\`configure' configures GNU C Library (see version.h) to adapt to many kinds of systems.
-+
-+Usage: $0 [OPTION]... [VAR=VALUE]...
-+
-+To assign environment variables (e.g., CC, CFLAGS...), specify them as
-+VAR=VALUE. See below for descriptions of some of the useful variables.
-+
-+Defaults for the options are specified in brackets.
-+
-+Configuration:
-+ -h, --help display this help and exit
-+ --help=short display options specific to this package
-+ --help=recursive display the short help of all the included packages
-+ -V, --version display version information and exit
-+ -q, --quiet, --silent do not print \`checking...' messages
-+ --cache-file=FILE cache test results in FILE [disabled]
-+ -C, --config-cache alias for \`--cache-file=config.cache'
-+ -n, --no-create do not create output files
-+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
-+
-+_ACEOF
-+
-+ cat <<_ACEOF
-+Installation directories:
-+ --prefix=PREFIX install architecture-independent files in PREFIX
-+ [$ac_default_prefix]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [PREFIX]
-+
-+By default, \`make install' will install all the files in
-+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-+for instance \`--prefix=\$HOME'.
-+
-+For better control, use the options below.
-+
-+Fine tuning of the installation directories:
-+ --bindir=DIR user executables [EPREFIX/bin]
-+ --sbindir=DIR system admin executables [EPREFIX/sbin]
-+ --libexecdir=DIR program executables [EPREFIX/libexec]
-+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
-+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
-+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
-+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
-+ --libdir=DIR object code libraries [EPREFIX/lib]
-+ --includedir=DIR C header files [PREFIX/include]
-+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
-+ --infodir=DIR info documentation [PREFIX/info]
-+ --mandir=DIR man documentation [PREFIX/man]
-+_ACEOF
-+
-+ cat <<\_ACEOF
-+
-+System types:
-+ --build=BUILD configure for building on BUILD [guessed]
-+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
-+_ACEOF
-+fi
-+
-+if test -n "$ac_init_help"; then
-+ case $ac_init_help in
-+ short | recursive ) echo "Configuration of GNU C Library (see version.h):";;
-+ esac
-+ cat <<\_ACEOF
-+
-+Optional Features:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --disable-sanity-checks really do not use threads (should not be used except
-+ in special situations) @<:@default=yes@:>@
-+ --enable-check-abi do "make check-abi" in "make check" (no/warn/yes)
-+ @<:@default=no@:>@
-+ --enable-shared build shared library @<:@default=yes if GNU ld &
-+ ELF@:>@
-+ --enable-profile build profiled library @<:@default=yes@:>@
-+ --enable-omitfp build undebuggable optimized library
-+ @<:@default=no@:>@
-+ --enable-bounded build with runtime bounds checking
-+ @<:@default=no@:>@
-+ --disable-versioning do not include versioning information in the library
-+ objects @<:@default=yes if supported@:>@
-+ --enable-oldest-abi=ABI configure the oldest ABI supported @<:@e.g. 2.2@:>@
-+ @<:@default=glibc default@:>@
-+ --enable-add-ons@<:@=DIRS...@:>@
-+ configure and build add-ons in DIR1,DIR2,... search
-+ for add-ons if no parameter given
-+ --disable-hidden-plt do not hide internal function calls to avoid PLT
-+ --enable-static-nss build static NSS modules @<:@default=no@:>@
-+ --disable-force-install don't force installation of files from this package,
-+ even if they are older than the installed files
-+ --enable-kernel=VERSION compile for compatibility with kernel not older than
-+ VERSION
-+ --enable-all-warnings enable all useful warnings gcc can issue
-+
-+Optional Packages:
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed)
-+ --with-gd=DIR find libgd include dir and library with prefix DIR
-+ --with-gd-include=DIR find libgd include files in DIR
-+ --with-gd-lib=DIR find libgd library files in DIR
-+ --with-fp if using floating-point hardware @<:@default=yes@:>@
-+ --with-binutils=PATH specify location of binutils (as and ld)
-+ --with-elf if using the ELF object format
-+ --with-xcoff if using the XCOFF object format
-+ --without-cvs if CVS should not be used
-+ --with-headers=PATH location of system headers to use (for example
-+ /usr/src/linux/include) @<:@default=compiler
-+ default@:>@
-+ --with-tls enable support for TLS
-+ --without-__thread do not use TLS features even when supporting them
-+
-+Some influential environment variables:
-+ CC C compiler command
-+ CFLAGS C compiler flags
-+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
-+ nonstandard directory <lib dir>
-+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
-+ headers in a nonstandard directory <include dir>
-+ CPP C preprocessor
-+ CXX C++ compiler command
-+ CXXFLAGS C++ compiler flags
-+
-+Use these variables to override the choices made by `configure' or to help
-+it to find libraries and programs with nonstandard names/locations.
-+
-+Report bugs to <glibc>.
-+_ACEOF
-+fi
-+
-+if test "$ac_init_help" = "recursive"; then
-+ # If there are subdirs, report their specific --help.
-+ ac_popdir=`pwd`
-+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-+ test -d $ac_dir || continue
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+ cd $ac_dir
-+ # Check for guested configure; otherwise get Cygnus style configure.
-+ if test -f $ac_srcdir/configure.gnu; then
-+ echo
-+ $SHELL $ac_srcdir/configure.gnu --help=recursive
-+ elif test -f $ac_srcdir/configure; then
-+ echo
-+ $SHELL $ac_srcdir/configure --help=recursive
-+ elif test -f $ac_srcdir/configure.ac ||
-+ test -f $ac_srcdir/configure.in; then
-+ echo
-+ $ac_configure --help
-+ else
-+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-+ fi
-+ cd "$ac_popdir"
-+ done
-+fi
-+
-+test -n "$ac_init_help" && exit 0
-+if $ac_init_version; then
-+ cat <<\_ACEOF
-+GNU C Library configure (see version.h)
-+generated by GNU Autoconf 2.57
-+
-+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-+Free Software Foundation, Inc.
-+This configure script is free software; the Free Software Foundation
-+gives unlimited permission to copy, distribute and modify it.
-+_ACEOF
-+ exit 0
-+fi
-+exec 5>config.log
-+cat >&5 <<_ACEOF
-+This file contains any messages produced by compilers while
-+running configure, to aid debugging if configure makes a mistake.
-+
-+It was created by GNU C Library $as_me (see version.h), which was
-+generated by GNU Autoconf 2.57. Invocation command line was
-+
-+ $ $0 $@
-+
-+_ACEOF
-+{
-+cat <<_ASUNAME
-+@%:@@%:@ --------- @%:@@%:@
-+@%:@@%:@ Platform. @%:@@%:@
-+@%:@@%:@ --------- @%:@@%:@
-+
-+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-+
-+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-+
-+_ASUNAME
-+
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ echo "PATH: $as_dir"
-+done
-+
-+} >&5
-+
-+cat >&5 <<_ACEOF
-+
-+
-+@%:@@%:@ ----------- @%:@@%:@
-+@%:@@%:@ Core tests. @%:@@%:@
-+@%:@@%:@ ----------- @%:@@%:@
-+
-+_ACEOF
-+
-+
-+# Keep a trace of the command line.
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Strip out --silent because we don't want to record it for future runs.
-+# Also quote any args containing shell meta-characters.
-+# Make two passes to allow for proper duplicate-argument suppression.
-+ac_configure_args=
-+ac_configure_args0=
-+ac_configure_args1=
-+ac_sep=
-+ac_must_keep_next=false
-+for ac_pass in 1 2
-+do
-+ for ac_arg
-+ do
-+ case $ac_arg in
-+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ continue ;;
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ esac
-+ case $ac_pass in
-+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-+ 2)
-+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-+ if test $ac_must_keep_next = true; then
-+ ac_must_keep_next=false # Got value, back to normal.
-+ else
-+ case $ac_arg in
-+ *=* | --config-cache | -C | -disable-* | --disable-* \
-+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-+ | -with-* | --with-* | -without-* | --without-* | --x)
-+ case "$ac_configure_args0 " in
-+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-+ esac
-+ ;;
-+ -* ) ac_must_keep_next=true ;;
-+ esac
-+ fi
-+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-+ # Get rid of the leading space.
-+ ac_sep=" "
-+ ;;
-+ esac
-+ done
-+done
-+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-+
-+# When interrupted or exit'd, cleanup temporary files, and complete
-+# config.log. We remove comments because anyway the quotes in there
-+# would cause problems or look ugly.
-+# WARNING: Be sure not to use single quotes in there, as some shells,
-+# such as our DU 5.0 friend, will then `close' the trap.
-+trap 'exit_status=$?
-+ # Save into config.log some information that might help in debugging.
-+ {
-+ echo
-+
-+ cat <<\_ASBOX
-+@%:@@%:@ ---------------- @%:@@%:@
-+@%:@@%:@ Cache variables. @%:@@%:@
-+@%:@@%:@ ---------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ # The following way of writing the cache mishandles newlines in values,
-+{
-+ (set) 2>&1 |
-+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ sed -n \
-+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-+ ;;
-+ *)
-+ sed -n \
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ ;;
-+ esac;
-+}
-+ echo
-+
-+ cat <<\_ASBOX
-+@%:@@%:@ ----------------- @%:@@%:@
-+@%:@@%:@ Output variables. @%:@@%:@
-+@%:@@%:@ ----------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_vars
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+
-+ if test -n "$ac_subst_files"; then
-+ cat <<\_ASBOX
-+@%:@@%:@ ------------- @%:@@%:@
-+@%:@@%:@ Output files. @%:@@%:@
-+@%:@@%:@ ------------- @%:@@%:@
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_files
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+ fi
-+
-+ if test -s confdefs.h; then
-+ cat <<\_ASBOX
-+@%:@@%:@ ----------- @%:@@%:@
-+@%:@@%:@ confdefs.h. @%:@@%:@
-+@%:@@%:@ ----------- @%:@@%:@
-+_ASBOX
-+ echo
-+ sed "/^$/d" confdefs.h | sort
-+ echo
-+ fi
-+ test "$ac_signal" != 0 &&
-+ echo "$as_me: caught signal $ac_signal"
-+ echo "$as_me: exit $exit_status"
-+ } >&5
-+ rm -f core *.core &&
-+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
-+ exit $exit_status
-+ ' 0
-+for ac_signal in 1 2 13 15; do
-+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-+done
-+ac_signal=0
-+
-+# confdefs.h avoids OS command line length limits that DEFS can exceed.
-+rm -rf conftest* confdefs.h
-+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-+echo >confdefs.h
-+
-+# Predefined preprocessor variables.
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-+_ACEOF
-+
-+
-+# Let the site file select an alternate cache file if it wants to.
-+# Prefer explicitly selected file to automatically selected ones.
-+if test -z "$CONFIG_SITE"; then
-+ if test "x$prefix" != xNONE; then
-+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-+ else
-+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-+ fi
-+fi
-+for ac_site_file in $CONFIG_SITE; do
-+ if test -r "$ac_site_file"; then
-+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-+echo "$as_me: loading site script $ac_site_file" >&6;}
-+ sed 's/^/| /' "$ac_site_file" >&5
-+ . "$ac_site_file"
-+ fi
-+done
-+
-+if test -r "$cache_file"; then
-+ # Some versions of bash will fail to source /dev/null (special
-+ # files actually), so we avoid doing that.
-+ if test -f "$cache_file"; then
-+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-+echo "$as_me: loading cache $cache_file" >&6;}
-+ case $cache_file in
-+ [\\/]* | ?:[\\/]* ) . $cache_file;;
-+ *) . ./$cache_file;;
-+ esac
-+ fi
-+else
-+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+echo "$as_me: creating cache $cache_file" >&6;}
-+ >$cache_file
-+fi
-+
-+# Check that the precious variables saved in the cache have kept the same
-+# value.
-+ac_cache_corrupted=false
-+for ac_var in `(set) 2>&1 |
-+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
-+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
-+ eval ac_new_set=\$ac_env_${ac_var}_set
-+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-+ eval ac_new_val="\$ac_env_${ac_var}_value"
-+ case $ac_old_set,$ac_new_set in
-+ set,)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,set)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,);;
-+ *)
-+ if test "x$ac_old_val" != "x$ac_new_val"; then
-+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-+echo "$as_me: former value: $ac_old_val" >&2;}
-+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-+echo "$as_me: current value: $ac_new_val" >&2;}
-+ ac_cache_corrupted=:
-+ fi;;
-+ esac
-+ # Pass precious variables to config.status.
-+ if test "$ac_new_set" = set; then
-+ case $ac_new_val in
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ *) ac_arg=$ac_var=$ac_new_val ;;
-+ esac
-+ case " $ac_configure_args " in
-+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
-+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ esac
-+ fi
-+done
-+if $ac_cache_corrupted; then
-+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ ac_config_headers="$ac_config_headers config.h"
-+
-+ac_aux_dir=
-+for ac_dir in scripts $srcdir/scripts; do
-+ if test -f $ac_dir/install-sh; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install-sh -c"
-+ break
-+ elif test -f $ac_dir/install.sh; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install.sh -c"
-+ break
-+ elif test -f $ac_dir/shtool; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/shtool install -c"
-+ break
-+ fi
-+done
-+if test -z "$ac_aux_dir"; then
-+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&5
-+echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-+
-+
-+if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
-+ { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5
-+echo "$as_me: error: you must configure in a separate build directory" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# This will get text that should go into config.make.
-+config_vars=
-+
-+# Check for a --with-gmp argument and set gmp-srcdir in config.make.
-+
-+# Check whether --with-gmp or --without-gmp was given.
-+if test "${with_gmp+set}" = set; then
-+ withval="$with_gmp"
-+
-+case "$with_gmp" in
-+yes) { { echo "$as_me:$LINENO: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&5
-+echo "$as_me: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&2;}
-+ { (exit 1); exit 1; }; } ;;
-+''|no) ;;
-+*) config_vars="$config_vars
-+gmp-srcdir = $withval" ;;
-+esac
-+
-+fi;
-+# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
-+
-+# Check whether --with-gd or --without-gd was given.
-+if test "${with_gd+set}" = set; then
-+ withval="$with_gd"
-+ case "$with_gd" in
-+yes|''|no) ;;
-+*) libgd_include="-I$withval/include"
-+ libgd_ldflags="-L$withval/lib" ;;
-+esac
-+
-+fi;
-+
-+# Check whether --with-gd-include or --without-gd-include was given.
-+if test "${with_gd_include+set}" = set; then
-+ withval="$with_gd_include"
-+ case "$with_gd_include" in
-+''|no) ;;
-+*) libgd_include="-I$withval" ;;
-+esac
-+
-+fi;
-+
-+# Check whether --with-gd-lib or --without-gd-lib was given.
-+if test "${with_gd_lib+set}" = set; then
-+ withval="$with_gd_lib"
-+ case "$with_gd_lib" in
-+''|no) ;;
-+*) libgd_ldflags="-L$withval" ;;
-+esac
-+
-+fi;
-+
-+if test -n "$libgd_include"; then
-+ config_vars="$config_vars
-+CFLAGS-memusagestat.c = $libgd_include"
-+fi
-+if test -n "$libgd_ldflags"; then
-+ config_vars="$config_vars
-+libgd-LDFLAGS = $libgd_ldflags"
-+fi
-+
-+
-+# Check whether --with-fp or --without-fp was given.
-+if test "${with_fp+set}" = set; then
-+ withval="$with_fp"
-+ with_fp=$withval
-+else
-+ with_fp=yes
-+fi;
-+
-+
-+# Check whether --with-binutils or --without-binutils was given.
-+if test "${with_binutils+set}" = set; then
-+ withval="$with_binutils"
-+ path_binutils=$withval
-+else
-+ path_binutils=''
-+fi;
-+
-+# Check whether --with-elf or --without-elf was given.
-+if test "${with_elf+set}" = set; then
-+ withval="$with_elf"
-+ elf=$withval
-+else
-+ elf=no
-+fi;
-+
-+# Check whether --with-xcoff or --without-xcoff was given.
-+if test "${with_xcoff+set}" = set; then
-+ withval="$with_xcoff"
-+ xcoff=$withval
-+else
-+ xcoff=no
-+fi;
-+
-+# Check whether --with-cvs or --without-cvs was given.
-+if test "${with_cvs+set}" = set; then
-+ withval="$with_cvs"
-+ with_cvs=$withval
-+else
-+ with_cvs=yes
-+fi;
-+if test "$with_cvs" = yes; then
-+ if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
-+ then
-+ with_cvs=no
-+ fi
-+fi
-+
-+
-+
-+# Check whether --with-headers or --without-headers was given.
-+if test "${with_headers+set}" = set; then
-+ withval="$with_headers"
-+ sysheaders=$withval
-+else
-+ sysheaders=''
-+fi;
-+
-+# Check whether --enable-sanity-checks or --disable-sanity-checks was given.
-+if test "${enable_sanity_checks+set}" = set; then
-+ enableval="$enable_sanity_checks"
-+ enable_sanity=$enableval
-+else
-+ enable_sanity=yes
-+fi;
-+
-+
-+# Check whether --enable-check-abi or --disable-check-abi was given.
-+if test "${enable_check_abi+set}" = set; then
-+ enableval="$enable_check_abi"
-+ enable_check_abi=$enableval
-+else
-+ enable_check_abi=no
-+fi;
-+
-+static=yes
-+# Check whether --enable-shared or --disable-shared was given.
-+if test "${enable_shared+set}" = set; then
-+ enableval="$enable_shared"
-+ shared=$enableval
-+else
-+ shared=default
-+fi;
-+# Check whether --enable-profile or --disable-profile was given.
-+if test "${enable_profile+set}" = set; then
-+ enableval="$enable_profile"
-+ profile=$enableval
-+else
-+ profile=yes
-+fi;
-+# Check whether --enable-omitfp or --disable-omitfp was given.
-+if test "${enable_omitfp+set}" = set; then
-+ enableval="$enable_omitfp"
-+ omitfp=$enableval
-+else
-+ omitfp=no
-+fi;
-+# Check whether --enable-bounded or --disable-bounded was given.
-+if test "${enable_bounded+set}" = set; then
-+ enableval="$enable_bounded"
-+ bounded=$enableval
-+else
-+ bounded=no
-+fi;
-+# Check whether --enable-versioning or --disable-versioning was given.
-+if test "${enable_versioning+set}" = set; then
-+ enableval="$enable_versioning"
-+ enable_versioning=$enableval
-+else
-+ enable_versioning=yes
-+fi;
-+
-+# Check whether --enable-oldest-abi or --disable-oldest-abi was given.
-+if test "${enable_oldest_abi+set}" = set; then
-+ enableval="$enable_oldest_abi"
-+ oldest_abi=$enableval
-+else
-+ oldest_abi=no
-+fi;
-+if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
-+ oldest_abi=default
-+else
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define GLIBC_OLDEST_ABI "$oldest_abi"
-+_ACEOF
-+
-+fi
-+
-+
-+# Check whether --enable-add-ons or --disable-add-ons was given.
-+if test "${enable_add_ons+set}" = set; then
-+ enableval="$enable_add_ons"
-+ case "$enableval" in
-+ yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
-+ test "$add_ons" = "*" && add_ons= ;;
-+ *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
-+ esac
-+else
-+ add_ons=
-+fi;
-+
-+
-+# Check whether --with-tls or --without-tls was given.
-+if test "${with_tls+set}" = set; then
-+ withval="$with_tls"
-+ usetls=$withval
-+else
-+ usetls=no
-+fi;
-+
-+
-+# Check whether --with-__thread or --without-__thread was given.
-+if test "${with___thread+set}" = set; then
-+ withval="$with___thread"
-+ use__thread=$withval
-+else
-+ use__thread=yes
-+fi;
-+
-+# Check whether --enable-hidden-plt or --disable-hidden-plt was given.
-+if test "${enable_hidden_plt+set}" = set; then
-+ enableval="$enable_hidden_plt"
-+ hidden=$enableval
-+else
-+ hidden=yes
-+fi;
-+if test "x$hidden" = xno; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define NO_HIDDEN 1
-+_ACEOF
-+
-+fi
-+
-+
-+
-+subdirs="$subdirs "
-+add_ons_pfx=
-+if test x"$add_ons" != x; then
-+ for f in $add_ons; do
-+ # Some sanity checks
-+ if test "$f" = "crypt"; then
-+ { { echo "$as_me:$LINENO: error:
-+*** It seems that you're using an old \`crypt' add-on. crypt is now
-+*** part of glibc and using the old add-on will not work with this
-+*** release. Start again with fresh sources and without the old
-+*** \`crypt' add-on." >&5
-+echo "$as_me: error:
-+*** It seems that you're using an old \`crypt' add-on. crypt is now
-+*** part of glibc and using the old add-on will not work with this
-+*** release. Start again with fresh sources and without the old
-+*** \`crypt' add-on." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ if test "$f" = "localedata"; then
-+ { { echo "$as_me:$LINENO: error:
-+*** It seems that you're using an old \`localedata' add-on. localedata
-+*** is now part of glibc and using the old add-on will not work with
-+*** this release. Start again with fresh sources and without the old
-+*** \`localedata' add-on." >&5
-+echo "$as_me: error:
-+*** It seems that you're using an old \`localedata' add-on. localedata
-+*** is now part of glibc and using the old add-on will not work with
-+*** this release. Start again with fresh sources and without the old
-+*** \`localedata' add-on." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ # Test whether such a subdir really exists.
-+ if test -d $srcdir/$f; then
-+ add_ons_pfx="$add_ons_pfx $f/"
-+ subdirs="$subdirs $f"
-+ else
-+ { { echo "$as_me:$LINENO: error: add-on directory \"$f\" does not exist" >&5
-+echo "$as_me: error: add-on directory \"$f\" does not exist" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ done
-+fi
-+
-+# Check whether --enable-static-nss or --disable-static-nss was given.
-+if test "${enable_static_nss+set}" = set; then
-+ enableval="$enable_static_nss"
-+ static_nss=$enableval
-+else
-+ static_nss=no
-+fi;
-+if test x"$static_nss" = xyes || test x"$shared" = xno; then
-+ static_nss=yes
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define DO_STATIC_NSS 1
-+_ACEOF
-+
-+fi
-+
-+# Check whether --enable-force-install or --disable-force-install was given.
-+if test "${enable_force_install+set}" = set; then
-+ enableval="$enable_force_install"
-+ force_install=$enableval
-+else
-+ force_install=yes
-+fi;
-+
-+
-+# Check whether --enable-kernel or --disable-kernel was given.
-+if test "${enable_kernel+set}" = set; then
-+ enableval="$enable_kernel"
-+ minimum_kernel=$enableval
-+fi;
-+if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
-+ # Better nothing than this.
-+ minimum_kernel=""
-+else
-+ if test "$minimum_kernel" = current; then
-+ minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
-+ fi
-+fi
-+
-+# Check whether --enable-all-warnings or --disable-all-warnings was given.
-+if test "${enable_all_warnings+set}" = set; then
-+ enableval="$enable_all_warnings"
-+ all_warnings=$enableval
-+fi;
-+
-+
-+# Make sure we can run config.sub.
-+$ac_config_sub sun4 >/dev/null 2>&1 ||
-+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+echo "$as_me:$LINENO: checking build system type" >&5
-+echo $ECHO_N "checking build system type... $ECHO_C" >&6
-+if test "${ac_cv_build+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_build_alias=$build_alias
-+test -z "$ac_cv_build_alias" &&
-+ ac_cv_build_alias=`$ac_config_guess`
-+test -z "$ac_cv_build_alias" &&
-+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-+ { (exit 1); exit 1; }; }
-+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-+echo "${ECHO_T}$ac_cv_build" >&6
-+build=$ac_cv_build
-+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+
-+
-+echo "$as_me:$LINENO: checking host system type" >&5
-+echo $ECHO_N "checking host system type... $ECHO_C" >&6
-+if test "${ac_cv_host+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_host_alias=$host_alias
-+test -z "$ac_cv_host_alias" &&
-+ ac_cv_host_alias=$ac_cv_build_alias
-+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-+echo "${ECHO_T}$ac_cv_host" >&6
-+host=$ac_cv_host
-+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+
-+
-+
-+# The way shlib-versions is used to generate soversions.mk uses a
-+# fairly simplistic model for name recognition that can't distinguish
-+# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
-+# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
-+# tell. This doesn't get used much beyond that, so it's fairly safe.
-+case "$host_os" in
-+linux*)
-+ ;;
-+gnu*)
-+ host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
-+ ;;
-+esac
-+
-+# We keep the original values in `$config_*' and never modify them, so we
-+# can write them unchanged into config.make. Everything else uses
-+# $machine, $vendor, and $os, and changes them whenever convenient.
-+config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
-+
-+# Don't allow vendor == "unknown"
-+test "$config_vendor" = unknown && config_vendor=
-+config_os="`echo $config_os | sed 's/^unknown-//'`"
-+
-+# Some configurations imply other options.
-+case "$host_os" in
-+gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
-+ # These systems always use GNU tools.
-+ gnu_ld=yes gnu_as=yes ;;
-+esac
-+case "$host_os" in
-+# i586-linuxaout is mangled into i586-pc-linux-gnuaout
-+linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
-+ ;;
-+gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
-+ # These systems (almost) always use the ELF format.
-+ elf=yes
-+ ;;
-+aix*)
-+ # These systems are always xcoff
-+ xcoff=yes
-+ elf=no
-+ ;;
-+esac
-+
-+machine=$config_machine
-+vendor=$config_vendor
-+os=$config_os
-+
-+# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
-+# Unify this here.
-+if test "$machine" = rs6000; then
-+ machine="powerpc"
-+fi
-+
-+# Braindead PowerPC box with absolutely no FPU.
-+case "$machine-$host_os" in
-+ powerpc*-*soft)
-+ with_fp=no
-+ ;;
-+esac
-+
-+###
-+### I put this here to prevent those annoying emails from people who cannot
-+### read and try to compile glibc on unsupported platforms. --drepper
-+###
-+### By using the undocumented --enable-hacker-mode option for configure
-+### one can skip this test to make the configuration not fail for unsupported
-+### platforms.
-+###
-+if test -z "$enable_hacker_mode"; then
-+ case "$machine-$host_os" in
-+ *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
-+ ;;
-+ *)
-+ echo "*** The GNU C library is currently not available for this platform."
-+ echo "*** So far nobody cared to port it and if there is no volunteer it"
-+ echo "*** might never happen. So, if you have interest to see glibc on"
-+ echo "*** this platform visit"
-+ echo "*** http://www.gnu.org/software/libc/porting.html"
-+ echo "*** and join the group of porters"
-+ exit 1
-+ ;;
-+ esac
-+fi
-+
-+# Expand the configuration machine name into a subdirectory by architecture
-+# type and particular chip.
-+case "$machine" in
-+a29k | am29000) base_machine=a29k machine=a29k ;;
-+alpha*) base_machine=alpha machine=alpha/$machine ;;
-+arm*) base_machine=arm machine=arm/arm32/$machine ;;
-+c3[012]) base_machine=cx0 machine=cx0/c30 ;;
-+c4[04]) base_machine=cx0 machine=cx0/c40 ;;
-+hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
-+hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
-+i[3456]86) base_machine=i386 machine=i386/$machine ;;
-+ia64) base_machine=ia64 machine=ia64 ;;
-+m680?0) base_machine=m68k machine=m68k/$machine ;;
-+m68k) base_machine=m68k machine=m68k/m68020 ;;
-+m88???) base_machine=m88k machine=m88k/$machine ;;
-+m88k) base_machine=m88k machine=m88k/m88100 ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CFLAGS $CPPFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
-+powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
-+powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
-+s390) base_machine=s390 machine=s390/s390-32 ;;
-+s390x) base_machine=s390 machine=s390/s390-64 ;;
-+sh3*) base_machine=sh machine=sh/sh3 ;;
-+sh4*) base_machine=sh machine=sh/sh4 ;;
-+sparc | sparcv[67])
-+ base_machine=sparc machine=sparc/sparc32 ;;
-+sparcv8 | supersparc | hypersparc)
-+ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
-+sparcv8plus | sparcv8plusa | sparcv9)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
-+sparcv8plusb | sparcv9b)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
-+sparc64 | ultrasparc)
-+ base_machine=sparc machine=sparc/sparc64 ;;
-+sparc64b | ultrasparc3)
-+ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
-+thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
-+*) base_machine=$machine ;;
-+esac
-+
-+
-+if test "$base_machine" = "i386"; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define USE_REGPARMS 1
-+_ACEOF
-+
-+fi
-+
-+# Compute the list of sysdep directories for this configuration.
-+# This can take a while to compute.
-+sysdep_dir=$srcdir/sysdeps
-+echo "$as_me:$LINENO: checking sysdep dirs" >&5
-+echo $ECHO_N "checking sysdep dirs... $ECHO_C" >&6
-+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-+os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-+
-+case "$os" in
-+gnu*)
-+ base_os=mach/hurd ;;
-+netbsd* | 386bsd* | freebsd* | bsdi*)
-+ base_os=unix/bsd/bsd4.4 ;;
-+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
-+ base_os=unix/bsd ;;
-+sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
-+ base_os=unix/sysv ;;
-+irix6*)
-+ base_os=unix/sysv/irix6/$os ;;
-+solaris[2-9]*)
-+ base_os=unix/sysv/sysv4 ;;
-+hpux*)
-+ base_os=unix/sysv/hpux/$os ;;
-+aix4.3*)
-+ base_os=unix/sysv/aix/aix4.3 ;;
-+none)
-+ base_os=standalone ;;
-+*)
-+ base_os='' ;;
-+esac
-+
-+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-+tail=$os
-+ostry=$os
-+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
-+ ostry="$ostry /$o"
-+ tail=$o
-+done
-+o=`echo $tail | sed 's/[0-9]*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+# For linux-gnu, try linux-gnu, then linux.
-+o=`echo $tail | sed 's/-.*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+
-+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-+base=
-+tail=$base_os
-+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
-+ set $b
-+ base="$base /$1"
-+ tail="$2"
-+done
-+
-+# For sparc/sparc32, try sparc/sparc32 and then sparc.
-+mach=
-+tail=$machine
-+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
-+ set $m
-+ # Prepend the machine's FPU directory unless --without-fp.
-+ if test "$with_fp" = yes; then
-+ mach="$mach /$1/fpu"
-+ else
-+ mach="$mach /$1/nofpu"
-+ fi
-+ mach="$mach /$1"
-+ tail="$2"
-+done
-+
-+
-+# Find what sysdep directories exist.
-+sysnames=
-+IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+for d in $add_ons_pfx ''; do
-+ for b in $base ''; do
-+ for m0 in $mach ''; do
-+ for v in /$vendor ''; do
-+ test "$v" = / && continue
-+ for o in /$ostry ''; do
-+ test "$o" = / && continue
-+ for m in $mach ''; do
-+ if test "$m0$b$v$o$m"; then
-+ try="${d}sysdeps$m0$b$v$o$m"
-+ test -n "$enable_debug_configure" &&
-+ echo "$0 DEBUG: try $try" >&2
-+ if test -d $srcdir/$try; then
-+ sysnames="$sysnames $try"
-+ { test -n "$o" || test -n "$b"; } && os_used=t
-+ { test -n "$m" || test -n "$m0"; } && machine_used=t
-+ fi
-+ fi
-+ done
-+ done
-+ done
-+ done
-+ done
-+done
-+IFS="$ac_save_ifs"
-+
-+if test -z "$os_used" && test "$os" != none; then
-+ { { echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5
-+echo "$as_me: error: Operating system $os is not supported." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+if test -z "$machine_used" && test "$machine" != none; then
-+ { { echo "$as_me:$LINENO: error: The $machine is not supported." >&5
-+echo "$as_me: error: The $machine is not supported." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# We have now validated the configuration.
-+
-+
-+# If using ELF, look for an `elf' subdirectory of each machine directory.
-+# We prepend these rather than inserting them whereever the machine appears
-+# because things specified by the machine's ELF ABI should override
-+# OS-specific things, and should always be the same for any OS on the
-+# machine (otherwise what's the point of an ABI?).
-+if test "$elf" = yes; then
-+ elf_dirs=
-+ for d in $add_ons_pfx ''; do
-+ for m in $mach; do
-+ if test -d $srcdir/${d}sysdeps$m/elf; then
-+ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
-+ fi
-+ done
-+ done
-+ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-+fi
-+
-+
-+# Expand the list of system names into a full list of directories
-+# from each element's parent name and Implies file (if present).
-+set $sysnames
-+names=
-+while test $# -gt 0; do
-+ name=$1
-+ shift
-+
-+ case " $names " in *" $name "*)
-+ # Already in the list.
-+ continue
-+ esac
-+
-+ # Report each name as we discover it, so there is no long pause in output.
-+ echo $ECHO_N "$name $ECHO_C" >&6
-+
-+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-+
-+ case $name in
-+ /*) xsrcdir= ;;
-+ *) xsrcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
-+
-+ if test -f $xsrcdir$name/Implies; then
-+ # Collect more names from the `Implies' file (removing comments).
-+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
-+ implied=
-+ for x in $implied_candidate; do
-+ found=no
-+ if test -d $xsrcdir$name_base/$x; then
-+ implied="$implied $name_base/$x";
-+ found=yes
-+ fi
-+ for d in $add_ons_pfx ''; do
-+ try="${d}sysdeps/$x"
-+ case $d in
-+ /*) try_srcdir= ;;
-+ *) try_srcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2
-+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
-+ then
-+ implied="$implied $try"
-+ found=yes
-+ fi
-+ done
-+ if test $found = no; then
-+ { echo "$as_me:$LINENO: WARNING: $name/Implies specifies nonexistent $x" >&5
-+echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;}
-+ fi
-+ done
-+ else
-+ implied=
-+ fi
-+
-+ # Add NAME to the list of names.
-+ names="$names $name"
-+
-+ # Find the parent of NAME, using the empty string if it has none.
-+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-+
-+ # Add the names implied by NAME, and NAME's parent (if it has one), to
-+ # the list of names to be processed (the argument list). We prepend the
-+ # implied names to the list and append the parent. We want implied
-+ # directories to come before further directories inferred from the
-+ # configuration components; this ensures that for sysv4, unix/common
-+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
-+ # after sysv4).
-+ sysnames="`echo $implied $* $parent`"
-+ test -n "$sysnames" && set $sysnames
-+done
-+
-+# Add the default directories.
-+default_sysnames=sysdeps/generic
-+if test "$elf" = yes; then
-+ default_sysnames="sysdeps/generic/elf $default_sysnames"
-+fi
-+sysnames="$names $default_sysnames"
-+
-+# The other names were emitted during the scan.
-+echo "$as_me:$LINENO: result: $default_sysnames" >&5
-+echo "${ECHO_T}$default_sysnames" >&6
-+
-+
-+### Locate tools.
-+
-+# Find a good install program. We prefer a C program (faster),
-+# so one script is as good as another. But avoid the broken or
-+# incompatible versions:
-+# SysV /etc/install, /usr/sbin/install
-+# SunOS /usr/etc/install
-+# IRIX /sbin/install
-+# AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-+# ./install, which can be erroneously created by make from ./install.sh.
-+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-+if test -z "$INSTALL"; then
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # by default.
-+ for ac_prog in ginstall scoinst install; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ if test $ac_prog = install &&
-+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # AIX install. It has an incompatible calling convention.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
-+ done
-+ done
-+ ;;
-+esac
-+done
-+
-+
-+fi
-+ if test "${ac_cv_path_install+set}" = set; then
-+ INSTALL=$ac_cv_path_install
-+ else
-+ # As a last resort, use the slow shell script. We don't cache a
-+ # path for INSTALL within a source directory, because that will
-+ # break other packages using the cache if that directory is
-+ # removed, or if the path is relative.
-+ INSTALL=$ac_install_sh
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $INSTALL" >&5
-+echo "${ECHO_T}$INSTALL" >&6
-+
-+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-+# It thinks the first close brace ends the variable substitution.
-+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-+
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-+
-+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-+
-+if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
-+ # The makefiles need to use a different form to find it in $srcdir.
-+ INSTALL='\$(..)./scripts/install-sh -c'
-+fi
-+echo "$as_me:$LINENO: checking whether ln -s works" >&5
-+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-+LN_S=$as_ln_s
-+if test "$LN_S" = "ln -s"; then
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+else
-+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-+echo "${ECHO_T}no, using $LN_S" >&6
-+fi
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}gcc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "gcc", so it can be a program name with args.
-+set dummy gcc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+else
-+ CC="$ac_cv_prog_CC"
-+fi
-+
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="${ac_tool_prefix}cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+else
-+ CC="$ac_cv_prog_CC"
-+fi
-+
-+fi
-+if test -z "$CC"; then
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ ac_prog_rejected=no
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $@%:@ != 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-+ fi
-+fi
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ for ac_prog in cl
-+ do
-+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CC" && break
-+ done
-+fi
-+if test -z "$CC"; then
-+ ac_ct_CC=$CC
-+ for ac_prog in cl
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CC" && break
-+done
-+
-+ CC=$ac_ct_CC
-+fi
-+
-+fi
-+
-+
-+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+# Provide some information about the compiler.
-+echo "$as_me:$LINENO:" \
-+ "checking for C compiler version" >&5
-+ac_compiler=`set X $ac_compile; echo $2`
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+EXEEXT=
-+echo "$as_me:$LINENO: checking for suffix of object files" >&5
-+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-+if test "${ac_cv_objext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.o conftest.obj
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-+ break;;
-+ esac
-+done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+rm -f conftest.$ac_cv_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-+echo "${ECHO_T}$ac_cv_objext" >&6
-+OBJEXT=$ac_cv_objext
-+ac_objext=$OBJEXT
-+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-+if test "${ac_cv_c_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ac_cv_c_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-+GCC=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CFLAGS=${CFLAGS+set}
-+ac_save_CFLAGS=$CFLAGS
-+CFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cc_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_prog_cc_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_prog_cc_g=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-+if test "$ac_test_CFLAGS" = set; then
-+ CFLAGS=$ac_save_CFLAGS
-+elif test $ac_cv_prog_cc_g = yes; then
-+ if test "$GCC" = yes; then
-+ CFLAGS="-g -O2"
-+ else
-+ CFLAGS="-g"
-+ fi
-+else
-+ if test "$GCC" = yes; then
-+ CFLAGS="-O2"
-+ else
-+ CFLAGS=
-+ fi
-+fi
-+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-+if test "${ac_cv_prog_cc_stdc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_prog_cc_stdc=no
-+ac_save_CC=$CC
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-+struct buf { int x; };
-+FILE * (*rcsopen) (struct buf *, struct stat *, int);
-+static char *e (p, i)
-+ char **p;
-+ int i;
-+{
-+ return p[i];
-+}
-+static char *f (char * (*g) (char **, int), char **p, ...)
-+{
-+ char *s;
-+ va_list v;
-+ va_start (v,p);
-+ s = g (p, va_arg (v,int));
-+ va_end (v);
-+ return s;
-+}
-+int test (int i, double x);
-+struct s1 {int (*f) (int a);};
-+struct s2 {int (*f) (double a);};
-+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-+int argc;
-+char **argv;
-+int
-+main ()
-+{
-+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+# Don't try gcc -ansi; that turns off useful extensions and
-+# breaks some systems' header files.
-+# AIX -qlanglvl=ansi
-+# Ultrix and OSF/1 -std1
-+# HP-UX 10.20 and later -Ae
-+# HP-UX older versions -Aa -D_HPUX_SOURCE
-+# SVR4 -Xc -D__EXTENSIONS__
-+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-+do
-+ CC="$ac_save_CC $ac_arg"
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_prog_cc_stdc=$ac_arg
-+break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.$ac_objext
-+done
-+rm -f conftest.$ac_ext conftest.$ac_objext
-+CC=$ac_save_CC
-+
-+fi
-+
-+case "x$ac_cv_prog_cc_stdc" in
-+ x|xno)
-+ echo "$as_me:$LINENO: result: none needed" >&5
-+echo "${ECHO_T}none needed" >&6 ;;
-+ *)
-+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-+ CC="$CC $ac_cv_prog_cc_stdc" ;;
-+esac
-+
-+# Some people use a C++ compiler to compile C. Since we use `exit',
-+# in C++ we need to declare it. In case someone uses the same compiler
-+# for both compiling C and C++ we need to have the C++ compiler decide
-+# the declaration of exit, since it's the most demanding environment.
-+cat >conftest.$ac_ext <<_ACEOF
-+@%:@ifndef __cplusplus
-+ choke me
-+@%:@endif
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ for ac_declaration in \
-+ '' \
-+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
-+ 'extern "C" void std::exit (int); using std::exit;' \
-+ 'extern "C" void exit (int) throw ();' \
-+ 'extern "C" void exit (int);' \
-+ 'void exit (int);'
-+do
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+@%:@include <stdlib.h>
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+done
-+rm -f conftest*
-+if test -n "$ac_declaration"; then
-+ echo '#ifdef __cplusplus' >>confdefs.h
-+ echo $ac_declaration >>confdefs.h
-+ echo '#endif' >>confdefs.h
-+fi
-+
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+if test $host != $build; then
-+ for ac_prog in gcc cc
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_BUILD_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$BUILD_CC"; then
-+ ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_BUILD_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+BUILD_CC=$ac_cv_prog_BUILD_CC
-+if test -n "$BUILD_CC"; then
-+ echo "$as_me:$LINENO: result: $BUILD_CC" >&5
-+echo "${ECHO_T}$BUILD_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$BUILD_CC" && break
-+done
-+
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-+# On Suns, sometimes $CPP names a directory.
-+if test -n "$CPP" && test -d "$CPP"; then
-+ CPP=
-+fi
-+if test -z "$CPP"; then
-+ if test "${ac_cv_prog_CPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Double quotes because CPP needs to be expanded
-+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@ifdef __STDC__
-+@%:@ include <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ break
-+fi
-+
-+ done
-+ ac_cv_prog_CPP=$CPP
-+
-+fi
-+ CPP=$ac_cv_prog_CPP
-+else
-+ ac_cv_prog_CPP=$CPP
-+fi
-+echo "$as_me:$LINENO: result: $CPP" >&5
-+echo "${ECHO_T}$CPP" >&6
-+ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@ifdef __STDC__
-+@%:@ include <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+@%:@include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+# We need the C++ compiler only for testing.
-+ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+ do
-+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CXX"; then
-+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CXX=$ac_cv_prog_CXX
-+if test -n "$CXX"; then
-+ echo "$as_me:$LINENO: result: $CXX" >&5
-+echo "${ECHO_T}$CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CXX" && break
-+ done
-+fi
-+if test -z "$CXX"; then
-+ ac_ct_CXX=$CXX
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CXX"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-+if test -n "$ac_ct_CXX"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-+echo "${ECHO_T}$ac_ct_CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CXX" && break
-+done
-+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-+
-+ CXX=$ac_ct_CXX
-+fi
-+
-+
-+# Provide some information about the compiler.
-+echo "$as_me:$LINENO:" \
-+ "checking for C++ compiler version" >&5
-+ac_compiler=`set X $ac_compile; echo $2`
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
-+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-+GXX=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CXXFLAGS=${CXXFLAGS+set}
-+ac_save_CXXFLAGS=$CXXFLAGS
-+CXXFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cxx_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_prog_cxx_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_prog_cxx_g=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
-+if test "$ac_test_CXXFLAGS" = set; then
-+ CXXFLAGS=$ac_save_CXXFLAGS
-+elif test $ac_cv_prog_cxx_g = yes; then
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-g -O2"
-+ else
-+ CXXFLAGS="-g"
-+ fi
-+else
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-O2"
-+ else
-+ CXXFLAGS=
-+ fi
-+fi
-+for ac_declaration in \
-+ '' \
-+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
-+ 'extern "C" void std::exit (int); using std::exit;' \
-+ 'extern "C" void exit (int) throw ();' \
-+ 'extern "C" void exit (int);' \
-+ 'void exit (int);'
-+do
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+@%:@include <stdlib.h>
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+done
-+rm -f conftest*
-+if test -n "$ac_declaration"; then
-+ echo '#ifdef __cplusplus' >>confdefs.h
-+ echo $ac_declaration >>confdefs.h
-+ echo '#endif' >>confdefs.h
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+# Was a --with-binutils option given?
-+if test -n "$path_binutils"; then
-+ # Make absolute; ensure a single trailing slash.
-+ path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
-+ CC="$CC -B$path_binutils"
-+fi
-+AS=`$CC -print-prog-name=as`
-+LD=`$CC -print-prog-name=ld`
-+AR=`$CC -print-prog-name=ar`
-+
-+OBJDUMP=`$CC -print-prog-name=objdump`
-+
-+
-+# ranlib has to be treated a bit differently since it might not exist at all.
-+ac_ranlib=`$CC -print-prog-name=ranlib`
-+if test "x$ac_ranlib" = xranlib; then
-+# This extra check has to happen since gcc simply echos the parameter in
-+# case it cannot find the value in its own directories.
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+RANLIB=$ac_cv_prog_RANLIB
-+if test -n "$RANLIB"; then
-+ echo "$as_me:$LINENO: result: $RANLIB" >&5
-+echo "${ECHO_T}$RANLIB" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_RANLIB"; then
-+ ac_ct_RANLIB=$RANLIB
-+ # Extract the first word of "ranlib", so it can be a program name with args.
-+set dummy ranlib; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_RANLIB"; then
-+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_RANLIB="ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-+fi
-+fi
-+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-+if test -n "$ac_ct_RANLIB"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-+echo "${ECHO_T}$ac_ct_RANLIB" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ RANLIB=$ac_ct_RANLIB
-+else
-+ RANLIB="$ac_cv_prog_RANLIB"
-+fi
-+
-+else
-+ RANLIB=$ac_ranlib
-+fi
-+
-+
-+# Determine whether we are using GNU binutils.
-+echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
-+echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
-+if test "${libc_cv_prog_as_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Most GNU programs take a -v and spit out some text including
-+# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-+if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-+ libc_cv_prog_as_gnu=yes
-+else
-+ libc_cv_prog_as_gnu=no
-+fi
-+rm -fr contest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
-+echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
-+rm -f a.out
-+gnu_as=$libc_cv_prog_as_gnu
-+
-+echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
-+echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
-+if test "${libc_cv_prog_ld_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Most GNU programs take a -v and spit out some text including
-+# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-+if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-+ libc_cv_prog_ld_gnu=yes
-+else
-+ libc_cv_prog_ld_gnu=no
-+fi
-+rm -fr contest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
-+echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
-+gnu_ld=$libc_cv_prog_ld_gnu
-+
-+
-+# Accept binutils 2.13 or newer.
-+for ac_prog in $AS
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AS+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AS"; then
-+ ac_cv_prog_AS="$AS" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AS="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AS=$ac_cv_prog_AS
-+if test -n "$AS"; then
-+ echo "$as_me:$LINENO: result: $AS" >&5
-+echo "${ECHO_T}$AS" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AS" && break
-+done
-+
-+if test -z "$AS"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $AS" >&5
-+echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
-+ ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 2.1[3-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ AS=: critic_missing="$critic_missing as"
-+fi
-+
-+for ac_prog in $LD
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_LD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$LD"; then
-+ ac_cv_prog_LD="$LD" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_LD="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+LD=$ac_cv_prog_LD
-+if test -n "$LD"; then
-+ echo "$as_me:$LINENO: result: $LD" >&5
-+echo "${ECHO_T}$LD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$LD" && break
-+done
-+
-+if test -z "$LD"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $LD" >&5
-+echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
-+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 2.1[3-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ LD=: critic_missing="$critic_missing ld"
-+fi
-+
-+
-+# We need the physical current working directory. We cannot use the
-+# "pwd -P" shell builtin since that's not portable. Instead we try to
-+# find a pwd binary. Note that assigning to the PWD environment
-+# variable might have some interesting side effects, so we don't do
-+# that.
-+# Extract the first word of "pwd", so it can be a program name with args.
-+set dummy pwd; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_PWD_P+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PWD_P in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
-+ ;;
-+esac
-+fi
-+PWD_P=$ac_cv_path_PWD_P
-+
-+if test -n "$PWD_P"; then
-+ echo "$as_me:$LINENO: result: $PWD_P" >&5
-+echo "${ECHO_T}$PWD_P" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$PWD_P" = no; then
-+ { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
-+echo "$as_me: error: *** A pwd binary could not be found." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# These programs are version sensitive.
-+
-+for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CC" && break
-+done
-+
-+if test -z "$CC"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $CC" >&5
-+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.[2-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing gcc"
-+fi
-+
-+for ac_prog in gnumake gmake make
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MAKE+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MAKE"; then
-+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MAKE="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MAKE=$ac_cv_prog_MAKE
-+if test -n "$MAKE"; then
-+ echo "$as_me:$LINENO: result: $MAKE" >&5
-+echo "${ECHO_T}$MAKE" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MAKE" && break
-+done
-+
-+if test -z "$MAKE"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MAKE" >&5
-+echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
-+ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.79* | 3.[89]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing make"
-+fi
-+
-+
-+for ac_prog in gnumsgfmt gmsgfmt msgfmt
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MSGFMT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MSGFMT"; then
-+ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MSGFMT="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MSGFMT=$ac_cv_prog_MSGFMT
-+if test -n "$MSGFMT"; then
-+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
-+echo "${ECHO_T}$MSGFMT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MSGFMT" && break
-+done
-+
-+if test -z "$MSGFMT"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
-+echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
-+ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ MSGFMT=: aux_missing="$aux_missing msgfmt"
-+fi
-+
-+for ac_prog in makeinfo
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MAKEINFO"; then
-+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MAKEINFO="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MAKEINFO=$ac_cv_prog_MAKEINFO
-+if test -n "$MAKEINFO"; then
-+ echo "$as_me:$LINENO: result: $MAKEINFO" >&5
-+echo "${ECHO_T}$MAKEINFO" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MAKEINFO" && break
-+done
-+
-+if test -z "$MAKEINFO"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
-+echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
-+ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 4.*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ MAKEINFO=: aux_missing="$aux_missing makeinfo"
-+fi
-+
-+for ac_prog in sed
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$SED"; then
-+ ac_cv_prog_SED="$SED" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_SED="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+SED=$ac_cv_prog_SED
-+if test -n "$SED"; then
-+ echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$SED" && break
-+done
-+
-+if test -z "$SED"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $SED" >&5
-+echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
-+ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.0[2-9]*|3.[1-9]*|[4-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ SED=: aux_missing="$aux_missing sed"
-+fi
-+
-+
-+for ac_prog in autoconf
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AUTOCONF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AUTOCONF"; then
-+ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AUTOCONF="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AUTOCONF=$ac_cv_prog_AUTOCONF
-+if test -n "$AUTOCONF"; then
-+ echo "$as_me:$LINENO: result: $AUTOCONF" >&5
-+echo "${ECHO_T}$AUTOCONF" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AUTOCONF" && break
-+done
-+test -n "$AUTOCONF" || AUTOCONF="no"
-+
-+case "x$AUTOCONF" in
-+xno|x|x:) AUTOCONF=no ;;
-+*)
-+ echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
-+echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
-+if test "${libc_cv_autoconf_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-+ libc_cv_autoconf_works=yes
-+ else
-+ libc_cv_autoconf_works=no
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
-+echo "${ECHO_T}$libc_cv_autoconf_works" >&6
-+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
-+ ;;
-+esac
-+if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
-+ # If --without-cvs they probably won't change configure.in, so no complaints.
-+ aux_missing="$aux_missing autoconf"
-+fi
-+
-+test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&5
-+echo "$as_me: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
-+*** These auxiliary programs are missing or incompatible versions:$aux_missing
-+*** some features will be disabled.
-+*** Check the INSTALL file for required versions." >&5
-+echo "$as_me: WARNING:
-+*** These auxiliary programs are missing or incompatible versions:$aux_missing
-+*** some features will be disabled.
-+*** Check the INSTALL file for required versions." >&2;}
-+
-+# glibcbug.in wants to know the compiler version.
-+CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
-+
-+
-+# if using special system headers, find out the compiler's sekrit
-+# header directory and add that to the list. NOTE: Only does the right
-+# thing on a system that doesn't need fixincludes. (Not presently a problem.)
-+if test -n "$sysheaders"; then
-+ ccheaders=`$CC -print-file-name=include`
-+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
-+fi
-+
-+
-+# check if ranlib is necessary
-+echo "$as_me:$LINENO: checking whether ranlib is necessary" >&5
-+echo $ECHO_N "checking whether ranlib is necessary... $ECHO_C" >&6
-+if test "${libc_cv_ranlib_necessary+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int a;
-+char b;
-+void c(void) {}
-+EOF
-+$CC $CFLAGS $CPPFLAGS -c conftest.c
-+$AR cr conftest.a conftest.o
-+cp conftest.a conftest2.a
-+$RANLIB conftest.a
-+if cmp -s conftest.a conftest2.a; then
-+ libc_cv_ranlib_necessary=no
-+else
-+ libc_cv_ranlib_necessary=yes
-+fi
-+rm -rf conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_ranlib_necessary" >&5
-+echo "${ECHO_T}$libc_cv_ranlib_necessary" >&6
-+if test "$libc_cv_ranlib_necessary" = no; then
-+ RANLIB=:
-+fi
-+
-+# Test if LD_LIBRARY_PATH contains the notation for the current directory
-+# since this would lead to problems installing/building glibc.
-+# LD_LIBRARY_PATH contains the current directory if one of the following
-+# is true:
-+# - one of the terminals (":" and ";") is the first or last sign
-+# - two terminals occur directly after each other
-+# - the path contains an element with a dot in it
-+echo "$as_me:$LINENO: checking LD_LIBRARY_PATH variable" >&5
-+echo $ECHO_N "checking LD_LIBRARY_PATH variable... $ECHO_C" >&6
-+case ${LD_LIBRARY_PATH} in
-+ [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
-+ ld_library_path_setting="contains current directory"
-+ ;;
-+ *)
-+ ld_library_path_setting="ok"
-+ ;;
-+esac
-+echo "$as_me:$LINENO: result: $ld_library_path_setting" >&5
-+echo "${ECHO_T}$ld_library_path_setting" >&6
-+if test "$ld_library_path_setting" != "ok"; then
-+{ { echo "$as_me:$LINENO: error:
-+*** LD_LIBRARY_PATH shouldn't contain the current directory when
-+*** building glibc. Please change the environment variable
-+*** and run configure again." >&5
-+echo "$as_me: error:
-+*** LD_LIBRARY_PATH shouldn't contain the current directory when
-+*** building glibc. Please change the environment variable
-+*** and run configure again." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+echo "$as_me:$LINENO: checking whether GCC supports -static-libgcc" >&5
-+echo $ECHO_N "checking whether GCC supports -static-libgcc... $ECHO_C" >&6
-+if test "${libc_cv_gcc_static_libgcc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
-+ libc_cv_gcc_static_libgcc=
-+else
-+ libc_cv_gcc_static_libgcc=-static-libgcc
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_static_libgcc" >&5
-+echo "${ECHO_T}$libc_cv_gcc_static_libgcc" >&6
-+
-+
-+# Extract the first word of "bash", so it can be a program name with args.
-+set dummy bash; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_BASH+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $BASH in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_BASH" && ac_cv_path_BASH="no"
-+ ;;
-+esac
-+fi
-+BASH=$ac_cv_path_BASH
-+
-+if test -n "$BASH"; then
-+ echo "$as_me:$LINENO: result: $BASH" >&5
-+echo "${ECHO_T}$BASH" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$BASH" != no &&
-+ $BASH -c 'test "$BASH_VERSINFO" \
-+ && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
-+ libc_cv_have_bash2=yes
-+else
-+ libc_cv_have_bash2=no
-+fi
-+
-+
-+if test "$BASH" = no; then
-+ # Extract the first word of "ksh", so it can be a program name with args.
-+set dummy ksh; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_KSH+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $KSH in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_KSH="$KSH" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_KSH="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_KSH" && ac_cv_path_KSH="no"
-+ ;;
-+esac
-+fi
-+KSH=$ac_cv_path_KSH
-+
-+if test -n "$KSH"; then
-+ echo "$as_me:$LINENO: result: $KSH" >&5
-+echo "${ECHO_T}$KSH" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ if test "$KSH" = no; then
-+ libc_cv_have_ksh=no
-+ else
-+ libc_cv_have_ksh=yes
-+ fi
-+else
-+ KSH="$BASH"
-+
-+ libc_cv_have_ksh=yes
-+fi
-+
-+
-+for ac_prog in gawk mawk nawk awk
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AWK+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AWK"; then
-+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AWK="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AWK=$ac_cv_prog_AWK
-+if test -n "$AWK"; then
-+ echo "$as_me:$LINENO: result: $AWK" >&5
-+echo "${ECHO_T}$AWK" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AWK" && break
-+done
-+
-+# Extract the first word of "perl", so it can be a program name with args.
-+set dummy perl; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_PERL+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PERL in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
-+ ;;
-+esac
-+fi
-+PERL=$ac_cv_path_PERL
-+
-+if test -n "$PERL"; then
-+ echo "$as_me:$LINENO: result: $PERL" >&5
-+echo "${ECHO_T}$PERL" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$PERL" != no &&
-+ (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
-+ PERL=no
-+fi
-+# Extract the first word of "install-info", so it can be a program name with args.
-+set dummy install-info; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_INSTALL_INFO+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $INSTALL_INFO in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+as_dummy="$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
-+for as_dir in $as_dummy
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="no"
-+ ;;
-+esac
-+fi
-+INSTALL_INFO=$ac_cv_path_INSTALL_INFO
-+
-+if test -n "$INSTALL_INFO"; then
-+ echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5
-+echo "${ECHO_T}$INSTALL_INFO" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$INSTALL_INFO" != "no"; then
-+echo "$as_me:$LINENO: checking for old Debian install-info" >&5
-+echo $ECHO_N "checking for old Debian install-info... $ECHO_C" >&6
-+if test "${libc_cv_old_debian_install_info+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ mkdir conftest.d
-+ # There is a hard ^_ on the next line. I am open to better ideas.
-+ (echo ''
-+ echo 'File: dir Node: Top This is the top of the INFO tree'
-+ echo '* Menu:') >conftest.d/dir
-+ (echo 'INFO-DIR-SECTION i-d-s works'
-+ echo 'START-INFO-DIR-ENTRY'
-+ echo '* Prog: (prog). Program.'
-+ echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
-+ if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&5 2>&1
-+ then
-+ if grep -s 'i-d-s works' conftest.d/dir >/dev/null
-+ then libc_cv_old_debian_install_info=no
-+ else libc_cv_old_debian_install_info=yes
-+ fi
-+ else libc_cv_old_debian_install_info=no testfailed=t
-+ fi
-+ rm -fr conftest.d
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_old_debian_install_info" >&5
-+echo "${ECHO_T}$libc_cv_old_debian_install_info" >&6
-+if test -n "$testfailed"
-+then { echo "$as_me:$LINENO: WARNING: install-info errored out, check config.log" >&5
-+echo "$as_me: WARNING: install-info errored out, check config.log" >&2;}
-+fi
-+OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
-+fi
-+
-+
-+# Extract the first word of "bison", so it can be a program name with args.
-+set dummy bison; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_BISON+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $BISON in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_BISON="$BISON" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+as_dummy="$PATH:/usr/local/bin:/usr/bin:/bin"
-+for as_dir in $as_dummy
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no"
-+ ;;
-+esac
-+fi
-+BISON=$ac_cv_path_BISON
-+
-+if test -n "$BISON"; then
-+ echo "$as_me:$LINENO: result: $BISON" >&5
-+echo "${ECHO_T}$BISON" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+
-+echo "$as_me:$LINENO: checking for signed size_t type" >&5
-+echo $ECHO_N "checking for signed size_t type... $ECHO_C" >&6
-+if test "${libc_cv_signed_size_t+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ echo '#include <stddef.h>
-+FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
-+if eval "$ac_cpp conftest.c 2>/dev/null" \
-+| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
-+ libc_cv_signed_size_t=no
-+else
-+ libc_cv_signed_size_t=yes
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_signed_size_t" >&5
-+echo "${ECHO_T}$libc_cv_signed_size_t" >&6
-+if test $libc_cv_signed_size_t = yes; then
-+ cat >> confdefs.h <<\EOF
-+#undef __SIZE_TYPE__
-+#define __SIZE_TYPE__ unsigned
-+EOF
-+fi
-+
-+
-+echo "$as_me:$LINENO: checking for libc-friendly stddef.h" >&5
-+echo $ECHO_N "checking for libc-friendly stddef.h... $ECHO_C" >&6
-+if test "${libc_cv_friendly_stddef+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#define __need_size_t
-+#define __need_wchar_t
-+#include <stddef.h>
-+#define __need_NULL
-+#include <stddef.h>
-+int
-+main ()
-+{
-+size_t size; wchar_t wchar;
-+#ifdef offsetof
-+#error stddef.h ignored __need_*
-+#endif
-+if (&size == NULL || &wchar == NULL) abort ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ libc_cv_friendly_stddef=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+libc_cv_friendly_stddef=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5
-+echo "${ECHO_T}$libc_cv_friendly_stddef" >&6
-+if test $libc_cv_friendly_stddef = yes; then
-+ config_vars="$config_vars
-+override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
-+fi
-+
-+echo "$as_me:$LINENO: checking whether we need to use -P to assemble .S files" >&5
-+echo $ECHO_N "checking whether we need to use -P to assemble .S files... $ECHO_C" >&6
-+if test "${libc_cv_need_minus_P+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.S <<EOF
-+#include "confdefs.h"
-+/* Nothing whatsoever. */
-+EOF
-+if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5'
-+ { (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
-+ libc_cv_need_minus_P=no
-+else
-+ libc_cv_need_minus_P=yes
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_need_minus_P" >&5
-+echo "${ECHO_T}$libc_cv_need_minus_P" >&6
-+if test $libc_cv_need_minus_P = yes; then
-+ config_vars="$config_vars
-+asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
-+fi
-+
-+echo "$as_me:$LINENO: checking whether .text pseudo-op must be used" >&5
-+echo $ECHO_N "checking whether .text pseudo-op must be used... $ECHO_C" >&6
-+if test "${libc_cv_dot_text+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+.text
-+EOF
-+libc_cv_dot_text=
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_dot_text=.text
-+fi
-+rm -f conftest*
-+fi
-+
-+if test -z "$libc_cv_dot_text"; then
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+else
-+ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+fi
-+
-+echo "$as_me:$LINENO: checking for assembler global-symbol directive" >&5
-+echo $ECHO_N "checking for assembler global-symbol directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_global_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ libc_cv_asm_global_directive=UNKNOWN
-+for ac_globl in .globl .global .EXPORT; do
-+ cat > conftest.s <<EOF
-+ ${libc_cv_dot_text}
-+ ${ac_globl} foo
-+foo:
-+EOF
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_global_directive=${ac_globl}
-+ fi
-+ rm -f conftest*
-+ test $libc_cv_asm_global_directive != UNKNOWN && break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_global_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_global_directive" >&6
-+if test $libc_cv_asm_global_directive = UNKNOWN; then
-+ { { echo "$as_me:$LINENO: error: cannot determine asm global directive" >&5
-+echo "$as_me: error: cannot determine asm global directive" >&2;}
-+ { (exit 1); exit 1; }; }
-+else
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define ASM_GLOBAL_DIRECTIVE ${libc_cv_asm_global_directive}
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for .set assembler directive" >&5
-+echo $ECHO_N "checking for .set assembler directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_set_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+${libc_cv_dot_text}
-+foo:
-+.set glibc_conftest_frobozz,foo
-+$libc_cv_asm_global_directive glibc_conftest_frobozz
-+EOF
-+# The alpha-dec-osf1 assembler gives only a warning for `.set'
-+# (but it doesn't work), so we must do a linking check to be sure.
-+cat > conftest1.c <<\EOF
-+extern int glibc_conftest_frobozz;
-+void _start() { glibc_conftest_frobozz = 1; }
-+EOF
-+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-+ -nostartfiles -nostdlib \
-+ -o conftest conftest.s conftest1.c 1>&5 2>&5; then
-+ libc_cv_asm_set_directive=yes
-+else
-+ libc_cv_asm_set_directive=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_set_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_set_directive" >&6
-+if test $libc_cv_asm_set_directive = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_SET_DIRECTIVE 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for assembler .type directive prefix" >&5
-+echo $ECHO_N "checking for assembler .type directive prefix... $ECHO_C" >&6
-+if test "${libc_cv_asm_type_prefix+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ libc_cv_asm_type_prefix=no
-+for ac_try_prefix in '@' '%' '#'; do
-+ cat > conftest.s <<EOF
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+ .type foo, ${ac_try_prefix}object
-+ .size foo, 1
-+foo:
-+ .byte 1
-+EOF
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_type_prefix=${ac_try_prefix}
-+ fi
-+ rm -f conftest*
-+ test "x$libc_cv_asm_type_prefix" != xno && break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_type_prefix" >&5
-+echo "${ECHO_T}$libc_cv_asm_type_prefix" >&6
-+if test "x$libc_cv_asm_type_prefix" != xno; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix}
-+_ACEOF
-+
-+fi
-+
-+# The Aix ld uses global .symbol_names instead of symbol_names.
-+# Unfortunately also used in the PPC64 ELF ABI.
-+case "${os}${machine}" in
-+aix4.3* | linux*powerpc/powerpc64*)
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_GLOBAL_DOT_NAME 1
-+_ACEOF
-+
-+esac
-+
-+echo "$as_me:$LINENO: checking for .symver assembler directive" >&5
-+echo $ECHO_N "checking for .symver assembler directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_symver_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+${libc_cv_dot_text}
-+_sym:
-+.symver _sym,sym@VERS
-+EOF
-+if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
-+ libc_cv_asm_symver_directive=yes
-+else
-+ libc_cv_asm_symver_directive=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_symver_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_symver_directive" >&6
-+echo "$as_me:$LINENO: checking for ld --version-script" >&5
-+echo $ECHO_N "checking for ld --version-script... $ECHO_C" >&6
-+if test "${libc_cv_ld_version_script_option+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test $libc_cv_asm_symver_directive = yes; then
-+ cat > conftest.s <<EOF
-+${libc_cv_dot_text}
-+_sym:
-+.symver _sym,sym@VERS
-+EOF
-+ cat > conftest.map <<EOF
-+VERS_1 {
-+ global: sym;
-+};
-+
-+VERS_2 {
-+ global: sym;
-+} VERS_1;
-+EOF
-+ if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
-+ if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared
-+ -o conftest.so conftest.o
-+ -nostartfiles -nostdlib
-+ -Wl,--version-script,conftest.map
-+ 1>&5'
-+ { (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
-+ libc_cv_ld_version_script_option=yes
-+ else
-+ libc_cv_ld_version_script_option=no
-+ fi
-+ else
-+ libc_cv_ld_version_script_option=no
-+ fi
-+else
-+ libc_cv_ld_version_script_option=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_ld_version_script_option" >&5
-+echo "${ECHO_T}$libc_cv_ld_version_script_option" >&6
-+if test $shared != no &&
-+ test $libc_cv_asm_symver_directive = yes &&
-+ test $libc_cv_ld_version_script_option = yes &&
-+ test $enable_versioning = yes; then
-+ VERSIONING=yes
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define DO_VERSIONING 1
-+_ACEOF
-+
-+else
-+ VERSIONING=no
-+fi
-+
-+
-+if test $elf = yes && test $shared != no && test $VERSIONING = no; then
-+ echo "\
-+*** WARNING: You should not compile GNU libc without versioning. Not using
-+*** versioning will introduce incompatibilities so that old binaries
-+*** will not run anymore.
-+*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
-+fi
-+if test $elf = yes; then
-+ echo "$as_me:$LINENO: checking for .previous assembler directive" >&5
-+echo $ECHO_N "checking for .previous assembler directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_previous_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+.section foo_section
-+.previous
-+EOF
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_previous_directive=yes
-+ else
-+ libc_cv_asm_previous_directive=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_previous_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_previous_directive" >&6
-+ if test $libc_cv_asm_previous_directive = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_PREVIOUS_DIRECTIVE 1
-+_ACEOF
-+
-+ else
-+ echo "$as_me:$LINENO: checking for .popsection assembler directive" >&5
-+echo $ECHO_N "checking for .popsection assembler directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_popsection_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+.pushsection foo_section
-+.popsection
-+EOF
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_popsection_directive=yes
-+ else
-+ libc_cv_asm_popsection_directive=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_popsection_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_popsection_directive" >&6
-+ if test $libc_cv_asm_popsection_directive = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_POPSECTION_DIRECTIVE 1
-+_ACEOF
-+
-+ fi
-+ fi
-+ echo "$as_me:$LINENO: checking for .protected and .hidden assembler directive" >&5
-+echo $ECHO_N "checking for .protected and .hidden assembler directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_protected_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+.protected foo
-+foo:
-+.hidden bar
-+bar:
-+EOF
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_protected_directive=yes
-+ else
-+ libc_cv_asm_protected_directive=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6
-+
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_PROTECTED 1
-+_ACEOF
-+
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_HIDDEN 1
-+_ACEOF
-+
-+
-+ if test $libc_cv_asm_protected_directive = yes; then
-+ echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5
-+echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6
-+if test "${libc_cv_visibility_attribute+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+ int foo __attribute__ ((visibility ("hidden"))) = 1;
-+ int bar __attribute__ ((visibility ("protected"))) = 1;
-+EOF
-+ libc_cv_visibility_attribute=no
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
-+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
-+ if grep '\.protected.*bar' conftest.s >/dev/null; then
-+ libc_cv_visibility_attribute=yes
-+ fi
-+ fi
-+ fi
-+ rm -f conftest.cs
-+
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
-+echo "${ECHO_T}$libc_cv_visibility_attribute" >&6
-+ if test $libc_cv_visibility_attribute = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_VISIBILITY_ATTRIBUTE 1
-+_ACEOF
-+
-+ fi
-+ fi
-+
-+ if test $libc_cv_visibility_attribute = yes; then
-+ echo "$as_me:$LINENO: checking for broken __attribute__((visibility()))" >&5
-+echo $ECHO_N "checking for broken __attribute__((visibility()))... $ECHO_C" >&6
-+if test "${libc_cv_broken_visibility_attribute+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+ int foo (int x);
-+ int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
-+ int bar (int x) { return x; }
-+EOF
-+ libc_cv_broken_visibility_attribute=yes
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
-+ { (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
-+ if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
-+ libc_cv_broken_visibility_attribute=no
-+ fi
-+ fi
-+ rm -f conftest.c conftest.s
-+
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5
-+echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6
-+ if test $libc_cv_broken_visibility_attribute = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1
-+_ACEOF
-+
-+ fi
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for broken __attribute__((alias()))" >&5
-+echo $ECHO_N "checking for broken __attribute__((alias()))... $ECHO_C" >&6
-+if test "${libc_cv_broken_alias_attribute+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+ extern int foo (int x) __asm ("xyzzy");
-+ int bar (int x) { return x; }
-+ extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
-+ extern int dfoo;
-+ extern __typeof (dfoo) dfoo __asm ("abccb");
-+ int dfoo = 1;
-+EOF
-+ libc_cv_broken_alias_attribute=yes
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
-+ if grep 'xyzzy' conftest.s >/dev/null &&
-+ grep 'abccb' conftest.s >/dev/null; then
-+ libc_cv_broken_alias_attribute=no
-+ fi
-+ fi
-+ rm -f conftest.c conftest.s
-+
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5
-+echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6
-+ if test $libc_cv_broken_alias_attribute = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_BROKEN_ALIAS_ATTRIBUTE 1
-+_ACEOF
-+
-+ fi
-+
-+ if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
-+ echo "$as_me:$LINENO: checking whether to put _rtld_local into .sdata section" >&5
-+echo $ECHO_N "checking whether to put _rtld_local into .sdata section... $ECHO_C" >&6
-+if test "${libc_cv_have_sdata_section+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ echo "int i;" > conftest.c
-+ libc_cv_have_sdata_section=no
-+ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
-+ | grep '\.sdata' >/dev/null; then
-+ libc_cv_have_sdata_section=yes
-+ fi
-+ rm -f conftest.c conftest.so
-+
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_have_sdata_section" >&5
-+echo "${ECHO_T}$libc_cv_have_sdata_section" >&6
-+ if test $libc_cv_have_sdata_section = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_SDATA_SECTION 1
-+_ACEOF
-+
-+ fi
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
-+echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
-+if test "${libc_cv_initfinit_array+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int _start (void) { return 0; }
-+int __start (void) { return 0; }
-+int foo (void) { return 1; }
-+int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
-+ -static -nostartfiles -nostdlib 1>&5'
-+ { (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
-+ if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ libc_cv_initfinit_array=yes
-+ else
-+ libc_cv_initfinit_array=no
-+ fi
-+ else
-+ libc_cv_initfinit_array=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_initfinit_array" >&5
-+echo "${ECHO_T}$libc_cv_initfinit_array" >&6
-+
-+ if test $libc_cv_initfinit_array = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_INITFINI_ARRAY 1
-+_ACEOF
-+
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for -z nodelete option" >&5
-+echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6
-+if test "${libc_cv_z_nodelete+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int _start (void) { return 42; }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -nostartfiles -nostdlib
-+ -Wl,--enable-new-dtags,-z,nodelete 1>&5'
-+ { (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
-+ libc_cv_z_nodelete=yes
-+ else
-+ libc_cv_z_nodelete=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5
-+echo "${ECHO_T}$libc_cv_z_nodelete" >&6
-+
-+
-+ echo "$as_me:$LINENO: checking for -z nodlopen option" >&5
-+echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6
-+if test "${libc_cv_z_nodlopen+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int _start (void) { return 42; }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -nostartfiles -nostdlib
-+ -Wl,--enable-new-dtags,-z,nodlopen 1>&5'
-+ { (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
-+ libc_cv_z_nodlopen=yes
-+ else
-+ libc_cv_z_nodlopen=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5
-+echo "${ECHO_T}$libc_cv_z_nodlopen" >&6
-+
-+
-+ echo "$as_me:$LINENO: checking for -z initfirst option" >&5
-+echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6
-+if test "${libc_cv_z_initfirst+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int _start (void) { return 42; }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -nostartfiles -nostdlib
-+ -Wl,--enable-new-dtags,-z,initfirst 1>&5'
-+ { (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
-+ libc_cv_z_initfirst=yes
-+ else
-+ libc_cv_z_initfirst=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5
-+echo "${ECHO_T}$libc_cv_z_initfirst" >&6
-+
-+
-+ echo "$as_me:$LINENO: checking for -Bgroup option" >&5
-+echo $ECHO_N "checking for -Bgroup option... $ECHO_C" >&6
-+if test "${libc_cv_Bgroup+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int _start (void) { return 42; }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -Wl,-Bgroup -nostdlib 1>&5'
-+ { (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
-+ libc_cv_Bgroup=yes
-+ else
-+ libc_cv_Bgroup=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_Bgroup" >&5
-+echo "${ECHO_T}$libc_cv_Bgroup" >&6
-+
-+
-+ ASFLAGS_config=
-+ echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
-+echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6
-+if test "${libc_cv_as_noexecstack+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+void foo (void) { }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
-+ -S -o conftest.s conftest.c 1>&5'
-+ { (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); }; } \
-+ && grep -q .note.GNU-stack conftest.s \
-+ && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
-+ -c -o conftest.o conftest.s 1>&5'
-+ { (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
-+ libc_cv_as_noexecstack=yes
-+ else
-+ libc_cv_as_noexecstack=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
-+echo "${ECHO_T}$libc_cv_as_noexecstack" >&6
-+ if test $libc_cv_as_noexecstack = yes; then
-+ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for -z combreloc" >&5
-+echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6
-+if test "${libc_cv_z_combreloc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+extern int bar (int);
-+extern int mumble;
-+int foo (void) { return bar (mumble); }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -nostdlib -nostartfiles
-+ -Wl,-z,combreloc 1>&5'
-+ { (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
-+ if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ libc_cv_z_combreloc=yes
-+ else
-+ libc_cv_z_combreloc=no
-+ fi
-+ else
-+ libc_cv_z_combreloc=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_z_combreloc" >&5
-+echo "${ECHO_T}$libc_cv_z_combreloc" >&6
-+ if test "$libc_cv_z_combreloc" = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_Z_COMBRELOC 1
-+_ACEOF
-+
-+ fi
-+fi
-+
-+
-+if test $elf != yes; then
-+ echo "$as_me:$LINENO: checking for .init and .fini sections" >&5
-+echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6
-+if test "${libc_cv_have_initfini+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+asm (".section .init");
-+ asm (".section .fini");
-+ asm ("${libc_cv_dot_text}");
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ libc_cv_have_initfini=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+libc_cv_have_initfini=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5
-+echo "${ECHO_T}$libc_cv_have_initfini" >&6
-+ if test $libc_cv_have_initfini = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_INITFINI 1
-+_ACEOF
-+
-+ fi
-+fi
-+
-+if test $elf = yes -a $gnu_ld = yes; then
-+ echo "$as_me:$LINENO: checking whether cc puts quotes around section names" >&5
-+echo $ECHO_N "checking whether cc puts quotes around section names... $ECHO_C" >&6
-+if test "${libc_cv_have_section_quotes+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+ static const int foo
-+ __attribute__ ((section ("bar"))) = 1;
-+EOF
-+ if ${CC-cc} -S conftest.c -o conftest.s; then
-+ if grep '\.section.*"bar"' conftest.s >/dev/null; then
-+ libc_cv_have_section_quotes=yes
-+ else
-+ libc_cv_have_section_quotes=no
-+ fi
-+ else
-+ libc_cv_have_section_quotes=unknown
-+ fi
-+ rm -f conftest.cs
-+
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_have_section_quotes" >&5
-+echo "${ECHO_T}$libc_cv_have_section_quotes" >&6
-+ if test $libc_cv_have_section_quotes = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_SECTION_QUOTES 1
-+_ACEOF
-+
-+ fi
-+fi
-+
-+
-+
-+if test $elf = yes; then
-+ libc_cv_asm_underscores=no
-+else
-+ if test $ac_cv_prog_cc_works = yes; then
-+ echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
-+echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6
-+if test "${libc_cv_asm_underscores+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+asm ("_glibc_foobar:");
-+int
-+main ()
-+{
-+glibc_foobar ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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
-+ libc_cv_asm_underscores=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+libc_cv_asm_underscores=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
-+echo "${ECHO_T}$libc_cv_asm_underscores" >&6
-+ else
-+ echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
-+echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6
-+if test "${libc_cv_asm_underscores+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+void underscore_test(void) {
-+return; }
-+EOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ if grep _underscore_test conftest* >/dev/null; then
-+ rm -f conftest*
-+ libc_cv_asm_underscores=yes
-+ else
-+ rm -f conftest*
-+ libc_cv_asm_underscores=no
-+ fi
-+else
-+ echo "configure: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ rm -f conftest*
-+ libc_cv_asm_underscores=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
-+echo "${ECHO_T}$libc_cv_asm_underscores" >&6
-+ fi
-+fi
-+if test $libc_cv_asm_underscores = no; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define NO_UNDERSCORES 1
-+_ACEOF
-+
-+fi
-+
-+if test $elf = yes; then
-+ libc_cv_weak_symbols=yes
-+fi
-+
-+echo "$as_me:$LINENO: checking for assembler .weak directive" >&5
-+echo $ECHO_N "checking for assembler .weak directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_weak_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+${libc_cv_dot_text}
-+${libc_cv_asm_global_directive} foo
-+foo:
-+.weak foo
-+.weak bar; bar = foo
-+EOF
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_weak_directive=yes
-+else
-+ libc_cv_asm_weak_directive=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_weak_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_weak_directive" >&6
-+
-+if test $libc_cv_asm_weak_directive = no; then
-+ echo "$as_me:$LINENO: checking for assembler .weakext directive" >&5
-+echo $ECHO_N "checking for assembler .weakext directive... $ECHO_C" >&6
-+if test "${libc_cv_asm_weakext_directive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+${libc_cv_dot_text}
-+${libc_cv_asm_global_directive} foo
-+foo:
-+.weakext bar foo
-+.weakext baz
-+${libc_cv_asm_global_directive} baz
-+baz:
-+EOF
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_weakext_directive=yes
-+ else
-+ libc_cv_asm_weakext_directive=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_weakext_directive" >&5
-+echo "${ECHO_T}$libc_cv_asm_weakext_directive" >&6
-+
-+fi # no .weak
-+
-+if test $libc_cv_asm_weak_directive = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_WEAK_DIRECTIVE 1
-+_ACEOF
-+
-+elif test $libc_cv_asm_weakext_directive = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_WEAKEXT_DIRECTIVE 1
-+_ACEOF
-+
-+fi
-+
-+case "${host_cpu}-${host_os}" in
-+ cris*)
-+ libc_cv_asm_line_sep='@'
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep
-+_ACEOF
-+
-+ ;;
-+ hppa*linux*)
-+ echo "$as_me:$LINENO: checking for assembler line separator" >&5
-+echo $ECHO_N "checking for assembler line separator... $ECHO_C" >&6
-+if test "${libc_cv_asm_line_sep+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+ nop ; is_old_puffin
-+EOF
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_line_sep='!'
-+ else
-+ if test -z "$enable_hacker_mode"; then
-+ echo "*** You need a newer assembler to compile glibc"
-+ rm -f conftest*
-+ exit 1
-+ fi
-+ libc_cv_asm_line_sep=';'
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_line_sep" >&5
-+echo "${ECHO_T}$libc_cv_asm_line_sep" >&6
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep
-+_ACEOF
-+
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
-+echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6
-+if test "${libc_cv_asm_cfi_directives+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+ .text
-+ .type func,@function
-+func:
-+ .cfi_startproc
-+ .cfi_remember_state
-+ .cfi_rel_offset 1, 0
-+ .cfi_endproc
-+EOF
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_cfi_directives=yes
-+else
-+ libc_cv_asm_cfi_directives=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
-+echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6
-+if test $libc_cv_asm_cfi_directives = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ASM_CFI_DIRECTIVES 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
-+echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
-+if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.S <<EOF
-+#include "confdefs.h"
-+
-+/* comment on
-+ two lines */
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+foo:
-+ /* Unfortunately this test only works for a real instruction,
-+ not for any of the machine-independent pseudo-ops.
-+ So we just have to assume everybody has a "nop". */
-+ nop
-+ /* comment */
-+ nop
-+ /* comment */
-+ nop
-+EOF
-+if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
-+ { (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_pattern='conftest\.S'
-+ { ac_try='readelf --debug-dump=line conftest.o |
-+ grep $ac_pattern 1>&5'
-+ { (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
-+ libc_cv_cpp_asm_debuginfo=yes
-+else
-+ libc_cv_cpp_asm_debuginfo=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
-+echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
-+if test $libc_cv_cpp_asm_debuginfo = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_CPP_ASM_DEBUGINFO 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
-+echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6
-+if test "${libc_cv_ld_no_whole_archive+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+_start () {}
-+int __eh_pc;
-+__throw () {}
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -nostdlib -nostartfiles -Wl,--no-whole-archive
-+ -o conftest conftest.c 1>&5'
-+ { (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
-+ libc_cv_ld_no_whole_archive=yes
-+else
-+ libc_cv_ld_no_whole_archive=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_ld_no_whole_archive" >&5
-+echo "${ECHO_T}$libc_cv_ld_no_whole_archive" >&6
-+if test $libc_cv_ld_no_whole_archive = yes; then
-+ no_whole_archive=-Wl,--no-whole-archive
-+fi
-+
-+echo "$as_me:$LINENO: checking for gcc -fexceptions" >&5
-+echo $ECHO_N "checking for gcc -fexceptions... $ECHO_C" >&6
-+if test "${libc_cv_gcc_exceptions+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+_start () {}
-+int __eh_pc;
-+__throw () {}
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -nostdlib -nostartfiles -fexceptions
-+ -o conftest conftest.c 1>&5'
-+ { (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
-+ libc_cv_gcc_exceptions=yes
-+else
-+ libc_cv_gcc_exceptions=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_exceptions" >&5
-+echo "${ECHO_T}$libc_cv_gcc_exceptions" >&6
-+if test $libc_cv_gcc_exceptions = yes; then
-+ exceptions=-fexceptions
-+fi
-+
-+if test "$host_cpu" = powerpc ; then
-+# Check for a bug present in at least versions 2.8.x of GCC
-+# and versions 1.0.x of EGCS.
-+echo "$as_me:$LINENO: checking whether clobbering cr0 causes problems" >&5
-+echo $ECHO_N "checking whether clobbering cr0 causes problems... $ECHO_C" >&6
-+if test "${libc_cv_c_asmcr0_bug+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+int tester(int x) { asm ("" : : : "cc"); return x & 123; }
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ libc_cv_c_asmcr0_bug='no'
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+libc_cv_c_asmcr0_bug='yes'
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5
-+echo "${ECHO_T}$libc_cv_c_asmcr0_bug" >&6
-+if test "$libc_cv_c_asmcr0_bug" != 'no'; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define BROKEN_PPC_ASM_CR0 1
-+_ACEOF
-+
-+fi
-+fi
-+
-+echo "$as_me:$LINENO: checking for DWARF2 unwind info support" >&5
-+echo $ECHO_N "checking for DWARF2 unwind info support... $ECHO_C" >&6
-+if test "${libc_cv_gcc_dwarf2_unwind_info+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+#line $LINENO "configure"
-+static char *__EH_FRAME_BEGIN__;
-+_start ()
-+{
-+#ifdef CHECK__register_frame
-+ __register_frame (__EH_FRAME_BEGIN__);
-+ __deregister_frame (__EH_FRAME_BEGIN__);
-+#endif
-+#ifdef CHECK__register_frame_info
-+ __register_frame_info (__EH_FRAME_BEGIN__);
-+ __deregister_frame_info (__EH_FRAME_BEGIN__);
-+#endif
-+}
-+int __eh_pc;
-+__throw () {}
-+/* FIXME: this is fragile. */
-+malloc () {}
-+strcmp () {}
-+strlen () {}
-+memcpy () {}
-+memset () {}
-+free () {}
-+abort () {}
-+__bzero () {}
-+dl_iterate_phdr () {}
-+EOF
-+libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
-+ $LDFLAGS \
-+ -nostdlib -nostartfiles -o conftest conftest.c \
-+ -lgcc"
-+# Some platforms' specs put -lgcc first. The second one doesn't hurt.
-+if { ac_try='$libc_unwind_check >&5'
-+ { (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='$libc_unwind_check -lgcc_eh -lgcc >&5'
-+ { (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
-+ if $libc_unwind_check -v 2>&1 >/dev/null \
-+ | grep -q -- --eh-frame-hdr; then
-+ libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
-+ else
-+ libc_cv_gcc_dwarf2_unwind_info=static
-+ fi
-+else
-+ libc_cv_gcc_dwarf2_unwind_info=no
-+fi
-+if test $libc_cv_gcc_dwarf2_unwind_info = no; then
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
-+ $LDFLAGS -nostdlib -nostartfiles
-+ -o conftest conftest.c -lgcc >&5'
-+ { (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
-+ libc_cv_gcc_dwarf2_unwind_info=yes
-+ else
-+ libc_cv_gcc_dwarf2_unwind_info=no
-+ fi
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_dwarf2_unwind_info" >&5
-+echo "${ECHO_T}$libc_cv_gcc_dwarf2_unwind_info" >&6
-+case $libc_cv_gcc_dwarf2_unwind_info in
-+yes)
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_DWARF2_UNWIND_INFO 1
-+_ACEOF
-+
-+ ;;
-+static)
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_DWARF2_UNWIND_INFO 1
-+_ACEOF
-+
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_DWARF2_UNWIND_INFO_STATIC 1
-+_ACEOF
-+
-+ ;;
-+esac
-+
-+echo "$as_me:$LINENO: checking for __builtin_expect" >&5
-+echo $ECHO_N "checking for __builtin_expect... $ECHO_C" >&6
-+if test "${libc_cv_gcc_builtin_expect+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+#line $LINENO "configure"
-+int foo (int a)
-+{
-+ a = __builtin_expect (a, 10);
-+ return a == 10 ? 0 : 1;
-+}
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
-+ -o conftest conftest.c -lgcc >&5'
-+ { (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
-+ libc_cv_gcc_builtin_expect=yes
-+else
-+ libc_cv_gcc_builtin_expect=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_expect" >&5
-+echo "${ECHO_T}$libc_cv_gcc_builtin_expect" >&6
-+if test "$libc_cv_gcc_builtin_expect" = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_BUILTIN_EXPECT 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for __builtin_memset" >&5
-+echo $ECHO_N "checking for __builtin_memset... $ECHO_C" >&6
-+if test "${libc_cv_gcc_builtin_memset+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+void zero (void *x)
-+{
-+ __builtin_memset (x, 0, 1000);
-+}
-+EOF
-+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; };
-+then
-+ libc_cv_gcc_builtin_memset=no
-+else
-+ libc_cv_gcc_builtin_memset=yes
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_memset" >&5
-+echo "${ECHO_T}$libc_cv_gcc_builtin_memset" >&6
-+if test "$libc_cv_gcc_builtin_memset" = yes ; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_BUILTIN_MEMSET 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
-+echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6
-+if test "${libc_cv_gcc_builtin_redirection+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+extern char *strstr (const char *, const char *) __asm ("my_strstr");
-+char *foo (const char *a, const char *b)
-+{
-+ return __builtin_strstr (a, b);
-+}
-+EOF
-+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null'
-+ { (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
-+ libc_cv_gcc_builtin_redirection=yes
-+else
-+ libc_cv_gcc_builtin_redirection=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
-+echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6
-+if test "$libc_cv_gcc_builtin_redirection" = yes ; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_BUILTIN_REDIRECTION 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for local label subtraction" >&5
-+echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6
-+if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+#line $LINENO "configure"
-+int foo (int a)
-+{
-+ static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-+ void *p = &&l1 + ar[a];
-+ goto *p;
-+ l1:
-+ return 1;
-+ l2:
-+ return 2;
-+}
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
-+ -o conftest conftest.c -lgcc >&5'
-+ { (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
-+ libc_cv_gcc_subtract_local_labels=yes
-+else
-+ libc_cv_gcc_subtract_local_labels=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_subtract_local_labels" >&5
-+echo "${ECHO_T}$libc_cv_gcc_subtract_local_labels" >&6
-+if test "$libc_cv_gcc_subtract_local_labels" = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_SUBTRACT_LOCAL_LABELS 1
-+_ACEOF
-+
-+fi
-+
-+if test "x$use__thread" != xno; then
-+ echo "$as_me:$LINENO: checking for __thread" >&5
-+echo $ECHO_N "checking for __thread... $ECHO_C" >&6
-+if test "${libc_cv_gcc___thread+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+__thread int a = 42;
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5'
-+ { (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
-+ libc_cv_gcc___thread=yes
-+ else
-+ libc_cv_gcc___thread=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc___thread" >&5
-+echo "${ECHO_T}$libc_cv_gcc___thread" >&6
-+ if test "$libc_cv_gcc___thread" = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE___THREAD 1
-+_ACEOF
-+
-+ fi
-+else
-+ libc_cv_gcc___thread=no
-+fi
-+
-+if test "$libc_cv_gcc___thread" = yes; then
-+ echo "$as_me:$LINENO: checking for tls_model attribute" >&5
-+echo $ECHO_N "checking for tls_model attribute... $ECHO_C" >&6
-+if test "${libc_cv_gcc_tls_model_attr+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+extern __thread int a __attribute__((tls_model ("initial-exec")));
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5'
-+ { (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
-+ libc_cv_gcc_tls_model_attr=yes
-+ else
-+ libc_cv_gcc_tls_model_attr=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_tls_model_attr" >&5
-+echo "${ECHO_T}$libc_cv_gcc_tls_model_attr" >&6
-+ if test "$libc_cv_gcc_tls_model_attr" = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_TLS_MODEL_ATTRIBUTE 1
-+_ACEOF
-+
-+ fi
-+fi
-+
-+echo "$as_me:$LINENO: checking for libgd" >&5
-+echo $ECHO_N "checking for libgd... $ECHO_C" >&6
-+if test "$with_gd" != "no"; then
-+ old_CFLAGS="$CFLAGS"
-+ CFLAGS="$CFLAGS $libgd_include"
-+ old_LDFLAGS="$LDFLAGS"
-+ LDFLAGS="$LDFLAGS $libgd_ldflags"
-+ old_LIBS="$LIBS"
-+ LIBS="$LIBS -lgd -lpng -lz -lm"
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <gd.h>
-+int
-+main ()
-+{
-+gdImagePng (0, 0)
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 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
-+ LIBGD=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+LIBGD=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+ CFLAGS="$old_CFLAGS"
-+ LDFLAGS="$old_LDFLAGS"
-+ LIBS="$old_LIBS"
-+else
-+ LIBGD=no
-+fi
-+echo "$as_me:$LINENO: result: $LIBGD" >&5
-+echo "${ECHO_T}$LIBGD" >&6
-+
-+
-+
-+echo "$as_me:$LINENO: checking for egrep" >&5
-+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-+if test "${ac_cv_prog_egrep+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-+ then ac_cv_prog_egrep='grep -E'
-+ else ac_cv_prog_egrep='egrep'
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
-+ EGREP=$ac_cv_prog_egrep
-+
-+
-+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-+if test "${ac_cv_header_stdc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.h>
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_header_stdc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_header_stdc=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <string.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "memchr" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "free" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+ if test "$cross_compiling" = yes; then
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ctype.h>
-+#if ((' ' & 0x0FF) == 0x020)
-+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#else
-+# define ISLOWER(c) \
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
-+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-+#endif
-+
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int
-+main ()
-+{
-+ int i;
-+ for (i = 0; i < 256; i++)
-+ if (XOR (islower (i), ISLOWER (i))
-+ || toupper (i) != TOUPPER (i))
-+ exit(2);
-+ exit (0);
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && { ac_try='./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
-+ :
-+else
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+ac_cv_header_stdc=no
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-+echo "${ECHO_T}$ac_cv_header_stdc" >&6
-+if test $ac_cv_header_stdc = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define STDC_HEADERS 1
-+_ACEOF
-+
-+fi
-+
-+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+
-+@%:@include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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_Header=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_Header=no"
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+echo "$as_me:$LINENO: checking for long double" >&5
-+echo $ECHO_N "checking for long double... $ECHO_C" >&6
-+if test "${ac_cv_type_long_double+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((long double *) 0)
-+ return 0;
-+if (sizeof (long double))
-+ return 0;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_type_long_double=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_long_double=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
-+echo "${ECHO_T}$ac_cv_type_long_double" >&6
-+
-+echo "$as_me:$LINENO: checking size of long double" >&5
-+echo $ECHO_N "checking size of long double... $ECHO_C" >&6
-+if test "${ac_cv_sizeof_long_double+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test "$ac_cv_type_long_double" = yes; then
-+ # The cast to unsigned long works around a bug in the HP C Compiler
-+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+ # This bug is HP SR number 8606223364.
-+ if test "$cross_compiling" = yes; then
-+ # Depending upon the size, compute the lo and hi bounds.
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= 0)@:>@;
-+test_array @<:@0@:>@ = 0
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_lo=0 ac_mid=0
-+ while :; do
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@;
-+test_array @<:@0@:>@ = 0
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_hi=$ac_mid; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr $ac_mid + 1`
-+ if test $ac_lo -le $ac_mid; then
-+ ac_lo= ac_hi=
-+ break
-+ fi
-+ ac_mid=`expr 2 '*' $ac_mid + 1`
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) < 0)@:>@;
-+test_array @<:@0@:>@ = 0
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_hi=-1 ac_mid=-1
-+ while :; do
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)@:>@;
-+test_array @<:@0@:>@ = 0
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_lo=$ac_mid; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_hi=`expr '(' $ac_mid ')' - 1`
-+ if test $ac_mid -le $ac_hi; then
-+ ac_lo= ac_hi=
-+ break
-+ fi
-+ ac_mid=`expr 2 '*' $ac_mid`
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo= ac_hi=
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@;
-+test_array @<:@0@:>@ = 0
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_hi=$ac_mid
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr '(' $ac_mid ')' + 1`
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in
-+?*) ac_cv_sizeof_long_double=$ac_lo;;
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long double), 77
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; } ;;
-+esac
-+else
-+ if test "$cross_compiling" = yes; then
-+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+long longval () { return (long) (sizeof (long double)); }
-+unsigned long ulongval () { return (long) (sizeof (long double)); }
-+@%:@include <stdio.h>
-+@%:@include <stdlib.h>
-+int
-+main ()
-+{
-+
-+ FILE *f = fopen ("conftest.val", "w");
-+ if (! f)
-+ exit (1);
-+ if (((long) (sizeof (long double))) < 0)
-+ {
-+ long i = longval ();
-+ if (i != ((long) (sizeof (long double))))
-+ exit (1);
-+ fprintf (f, "%ld\n", i);
-+ }
-+ else
-+ {
-+ unsigned long i = ulongval ();
-+ if (i != ((long) (sizeof (long double))))
-+ exit (1);
-+ fprintf (f, "%lu\n", i);
-+ }
-+ exit (ferror (f) || fclose (f) != 0);
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && { ac_try='./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
-+ ac_cv_sizeof_long_double=`cat conftest.val`
-+else
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long double), 77
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+rm -f conftest.val
-+else
-+ ac_cv_sizeof_long_double=0
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
-+echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6
-+cat >>confdefs.h <<_ACEOF
-+@%:@define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
-+_ACEOF
-+
-+
-+sizeof_long_double=$ac_cv_sizeof_long_double
-+
-+
-+### End of automated tests.
-+### Now run sysdeps configure fragments.
-+
-+# They also can set these variables.
-+use_ldconfig=no
-+ldd_rewrite_script=no
-+libc_cv_sysconfdir=$sysconfdir
-+libc_cv_gcc_unwind_find_fde=no
-+
-+# Iterate over all the sysdep directories we will use, running their
-+# configure fragments, and looking for a uname implementation.
-+uname=
-+for dir in $sysnames; do
-+ case $dir in
-+ /*) dest=$dir ;;
-+ *) dest=$srcdir/$dir ;;
-+ esac
-+ if test -r $dest/configure; then
-+ echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
-+echo "${ECHO_T}running configure fragment for $dir" >&6
-+ . $dest/configure
-+ fi
-+
-+ if test -z "$uname"; then
-+ if test -r $dest/uname.c ||
-+ test -r $dest/uname.S ||
-+ { test -r $dest/syscalls.list &&
-+ grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
-+ uname=$dir
-+ fi
-+ fi
-+done
-+
-+if test x$libc_cv_gcc_unwind_find_fde = xyes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define EXPORT_UNWIND_FIND_FDE 1
-+_ACEOF
-+
-+fi
-+
-+
-+# If we will use the generic uname implementation, we must figure out what
-+# it will say by examining the system, and write the results in config-name.h.
-+if test "$uname" = "sysdeps/generic"; then
-+
-+ uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
-+ if test $uname_sysname != $config_os; then
-+ config_release=`echo $config_os | sed s/$uname_sysname//`
-+ fi
-+
-+ echo "$as_me:$LINENO: checking OS release for uname" >&5
-+echo $ECHO_N "checking OS release for uname... $ECHO_C" >&6
-+if test "${libc_cv_uname_release+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -r /vmunix; then
-+ kernel_id=`strings /vmunix | grep UNIX`
-+ elif test -r /dynix; then
-+ kernel_id=`strings /dynix | grep DYNIX`
-+ else
-+ kernel_id=
-+ fi
-+
-+ kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
-+ if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
-+ != x$config_release; then
-+ # The configuration release is a substring of the kernel release.
-+ libc_cv_uname_release=$kernel_release
-+ elif test x$config_release != x; then
-+ libc_cv_uname_release=$config_release
-+ elif test x$kernel_release != x; then
-+ libc_cv_uname_release=$kernel_release
-+ else
-+ libc_cv_uname_release=unknown
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_uname_release" >&5
-+echo "${ECHO_T}$libc_cv_uname_release" >&6
-+ uname_release="$libc_cv_uname_release"
-+
-+ echo "$as_me:$LINENO: checking OS version for uname" >&5
-+echo $ECHO_N "checking OS version for uname... $ECHO_C" >&6
-+if test "${libc_cv_uname_version+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -r /vmunix; then
-+ kernel_id=`strings /vmunix | grep UNIX`
-+ elif test -r /dynix; then
-+ kernel_id=`strings /dynix | grep DYNIX`
-+ else
-+ kernel_id=
-+ fi
-+
-+ kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
-+ if test -n "$kernel_version"; then
-+ libc_cv_uname_version="$kernel_version"
-+ else
-+ libc_cv_uname_version=unknown
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_uname_version" >&5
-+echo "${ECHO_T}$libc_cv_uname_version" >&6
-+ uname_version="$libc_cv_uname_version"
-+
-+ config_uname=config-name.h:config-name.in
-+else
-+ # For non-generic uname, we don't need to create config-name.h at all.
-+ config_uname=
-+fi
-+
-+cat >>confdefs.h <<\_ACEOF
-+@%:@define USE_IN_LIBIO 1
-+_ACEOF
-+
-+
-+# Test for old glibc 2.0.x headers so that they can be removed properly
-+# Search only in includedir.
-+echo "$as_me:$LINENO: checking for old glibc 2.0.x headers" >&5
-+echo $ECHO_N "checking for old glibc 2.0.x headers... $ECHO_C" >&6
-+if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
-+then
-+ old_glibc_headers=yes
-+else
-+ old_glibc_headers=no
-+fi
-+echo "$as_me:$LINENO: result: $old_glibc_headers" >&5
-+echo "${ECHO_T}$old_glibc_headers" >&6
-+if test ${old_glibc_headers} = yes; then
-+ { echo "$as_me:$LINENO: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&5
-+echo "$as_me: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: *** be removed." >&5
-+echo "$as_me: WARNING: *** be removed." >&2;}
-+fi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+if test $gnu_ld = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_GNU_LD 1
-+_ACEOF
-+
-+fi
-+if test $gnu_as = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_GNU_AS 1
-+_ACEOF
-+
-+fi
-+if test $elf = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_ELF 1
-+_ACEOF
-+
-+fi
-+if test $xcoff = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+@%:@define HAVE_XCOFF 1
-+_ACEOF
-+
-+fi
-+
-+
-+
-+if test $shared = default; then
-+ if test $gnu_ld = yes; then
-+ shared=$elf
-+ else
-+ # For now we do not assume shared libs are available. In future more
-+ # tests might become available.
-+ shared=no
-+ fi
-+fi
-+
-+echo "$as_me:$LINENO: checking whether -fPIC is default" >&5
-+echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6
-+if test "${pic_default+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ pic_default=yes
-+cat > conftest.c <<EOF
-+#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
-+# error PIC is default.
-+#endif
-+EOF
-+if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
-+ pic_default=no
-+fi
-+rm -f conftest.*
-+fi
-+echo "$as_me:$LINENO: result: $pic_default" >&5
-+echo "${ECHO_T}$pic_default" >&6
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+case "$add_ons" in
-+ *door*) linux_doors=yes ;;
-+ *) linux_doors=no ;;
-+esac
-+
-+
-+
-+
-+if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
-+ config_makefile=
-+else
-+ config_makefile=Makefile
-+fi
-+
-+VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
-+RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
-+
-+
-+
-+ ac_config_files="$ac_config_files config.make glibcbug ${config_makefile} ${config_uname}"
-+
-+ ac_config_commands="$ac_config_commands default"
-+
-+cat >confcache <<\_ACEOF
-+# This file is a shell script that caches the results of configure
-+# tests run on this system so they can be shared between configure
-+# scripts and configure runs, see configure's option --config-cache.
-+# It is not useful on other systems. If it contains results you don't
-+# want to keep, you may remove or edit it.
-+#
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
-+#
-+# `ac_cv_env_foo' variables (set or unset) will be overridden when
-+# loading this file, other *unset* `ac_cv_foo' will be assigned the
-+# following values.
-+
-+_ACEOF
-+
-+# The following way of writing the cache mishandles newlines in values,
-+# but we know of no workaround that is simple, portable, and efficient.
-+# So, don't put newlines in cache variables' values.
-+# Ultrix sh set writes to stderr and can't be redirected directly,
-+# and sets the high bit in the cache file unless we assign to the vars.
-+{
-+ (set) 2>&1 |
-+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ # `set' does not quote correctly, so add quotes (double-quote
-+ # substitution turns \\\\ into \\, and sed turns \\ into \).
-+ sed -n \
-+ "s/'/'\\\\''/g;
-+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-+ ;;
-+ *)
-+ # `set' quotes correctly as required by POSIX, so do not add quotes.
-+ sed -n \
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ ;;
-+ esac;
-+} |
-+ sed '
-+ t clear
-+ : clear
-+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-+ t end
-+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-+ : end' >>confcache
-+if diff $cache_file confcache >/dev/null 2>&1; then :; else
-+ if test -w $cache_file; then
-+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-+ cat confcache >$cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+test "x$prefix" = xNONE && prefix=$ac_default_prefix
-+# Let make expand exec_prefix.
-+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-+
-+# VPATH may cause trouble with some makes, so we remove $(srcdir),
-+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-+# trailing colons and then remove the whole line if VPATH becomes empty
-+# (actually we leave an empty line to preserve line numbers).
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/;
-+s/:*\${srcdir}:*/:/;
-+s/:*@srcdir@:*/:/;
-+s/^\([^=]*=[ ]*\):*/\1/;
-+s/:*$//;
-+s/^[^=]*=[ ]*$//;
-+}'
-+fi
-+
-+DEFS=-DHAVE_CONFIG_H
-+
-+ac_libobjs=
-+ac_ltlibobjs=
-+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
-+ # 1. Remove the extension, and $U if already installed.
-+ ac_i=`echo "$ac_i" |
-+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-+ # 2. Add them.
-+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-+done
-+LIB@&t@OBJS=$ac_libobjs
-+
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+
-+: ${CONFIG_STATUS=./config.status}
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-+echo "$as_me: creating $CONFIG_STATUS" >&6;}
-+cat >$CONFIG_STATUS <<_ACEOF
-+#! $SHELL
-+# Generated by $as_me.
-+# Run this file to recreate the current configuration.
-+# Compiler output produced by configure, useful for debugging
-+# configure, is in config.log if it exists.
-+
-+debug=false
-+ac_cs_recheck=false
-+ac_cs_silent=false
-+SHELL=\${CONFIG_SHELL-$SHELL}
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-+ set -o posix
-+fi
-+
-+# Support unset when possible.
-+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+do
-+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)$' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X/"$0" |
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-+ /^X\/\(\/\/\)$/{ s//\1/; q; }
-+ /^X\/\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+
-+
-+# PATH needs CR, and LINENO needs CR and PATH.
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+
-+
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" || {
-+ # Find who we are. Look in the path if we contain no path at all
-+ # relative or not.
-+ case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+
-+ ;;
-+ esac
-+ # We did not find ourselves, most probably we were run as `sh COMMAND'
-+ # in which case we are not to be found in the path.
-+ if test "x$as_myself" = x; then
-+ as_myself=$0
-+ fi
-+ if test ! -f "$as_myself"; then
-+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ case $CONFIG_SHELL in
-+ '')
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for as_base in sh bash ksh sh5; do
-+ case $as_dir in
-+ /*)
-+ if ("$as_dir/$as_base" -c '
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-+ CONFIG_SHELL=$as_dir/$as_base
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-+ fi;;
-+ esac
-+ done
-+done
-+;;
-+ esac
-+
-+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-+ # uniformly replaced by the line number. The first 'sed' inserts a
-+ # line-number line before each line; the second 'sed' does the real
-+ # work. The second script uses 'N' to pair each line-number line
-+ # with the numbered line, and appends trailing '-' during
-+ # substitution so that $LINENO is not a special case at line end.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$as_me.lineno &&
-+ chmod +x $as_me.lineno ||
-+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+ # Don't try to exec as it changes $[0], causing all sort of problems
-+ # (the dirname of $[0] is not the place where we might find the
-+ # original and so on. Autoconf is especially sensible to this).
-+ . ./$as_me.lineno
-+ # Exit status is that of the last command.
-+ exit
-+}
-+
-+
-+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-+ *c*,-n*) ECHO_N= ECHO_C='
-+' ECHO_T=' ' ;;
-+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+echo >conf$$.file
-+if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ # We could just check for DJGPP; but this test a) works b) is more generic
-+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-+ if test -f conf$$.exe; then
-+ # Don't use ln at all; we don't have any links
-+ as_ln_s='cp -p'
-+ else
-+ as_ln_s='ln -s'
-+ fi
-+elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+else
-+ as_ln_s='cp -p'
-+fi
-+rm -f conf$$ conf$$.exe conf$$.file
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-+
-+
-+# IFS
-+# We need space, tab and new line, in precisely that order.
-+as_nl='
-+'
-+IFS=" $as_nl"
-+
-+# CDPATH.
-+$as_unset CDPATH
-+
-+exec 6>&1
-+
-+# Open the log real soon, to keep \$[0] and so on meaningful, and to
-+# report actual input values of CONFIG_FILES etc. instead of their
-+# values after options handling. Logging --version etc. is OK.
-+exec 5>>config.log
-+{
-+ echo
-+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-+@%:@@%:@ Running $as_me. @%:@@%:@
-+_ASBOX
-+} >&5
-+cat >&5 <<_CSEOF
-+
-+This file was extended by GNU C Library $as_me (see version.h), which was
-+generated by GNU Autoconf 2.57. Invocation command line was
-+
-+ CONFIG_FILES = $CONFIG_FILES
-+ CONFIG_HEADERS = $CONFIG_HEADERS
-+ CONFIG_LINKS = $CONFIG_LINKS
-+ CONFIG_COMMANDS = $CONFIG_COMMANDS
-+ $ $0 $@
-+
-+_CSEOF
-+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-+echo >&5
-+_ACEOF
-+
-+# Files that config.status was made for.
-+if test -n "$ac_config_files"; then
-+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_headers"; then
-+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_links"; then
-+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_commands"; then
-+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-+fi
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+ac_cs_usage="\
-+\`$as_me' instantiates files from templates according to the
-+current configuration.
-+
-+Usage: $0 [OPTIONS] [FILE]...
-+
-+ -h, --help print this help, then exit
-+ -V, --version print version number, then exit
-+ -q, --quiet do not print progress messages
-+ -d, --debug don't remove temporary files
-+ --recheck update $as_me by reconfiguring in the same conditions
-+ --file=FILE[:TEMPLATE]
-+ instantiate the configuration file FILE
-+ --header=FILE[:TEMPLATE]
-+ instantiate the configuration header FILE
-+
-+Configuration files:
-+$config_files
-+
-+Configuration headers:
-+$config_headers
-+
-+Configuration commands:
-+$config_commands
-+
-+Report bugs to <bug-autoconf@gnu.org>."
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+ac_cs_version="\\
-+GNU C Library config.status (see version.h)
-+configured by $0, generated by GNU Autoconf 2.57,
-+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-+
-+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-+Free Software Foundation, Inc.
-+This config.status script is free software; the Free Software Foundation
-+gives unlimited permission to copy, distribute and modify it."
-+srcdir=$srcdir
-+INSTALL="$INSTALL"
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+# If no file are specified by the user, then we need to provide default
-+# value. By we need to know if files were specified by the user.
-+ac_need_defaults=:
-+while test $# != 0
-+do
-+ case $1 in
-+ --*=*)
-+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
-+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-+ ac_shift=:
-+ ;;
-+ -*)
-+ ac_option=$1
-+ ac_optarg=$2
-+ ac_shift=shift
-+ ;;
-+ *) # This is not an option, so the user has probably given explicit
-+ # arguments.
-+ ac_option=$1
-+ ac_need_defaults=false;;
-+ esac
-+
-+ case $ac_option in
-+ # Handling of the options.
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-+ ac_cs_recheck=: ;;
-+ --version | --vers* | -V )
-+ echo "$ac_cs_version"; exit 0 ;;
-+ --he | --h)
-+ # Conflict between --help and --header
-+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
-+Try \`$0 --help' for more information." >&5
-+echo "$as_me: error: ambiguous option: $1
-+Try \`$0 --help' for more information." >&2;}
-+ { (exit 1); exit 1; }; };;
-+ --help | --hel | -h )
-+ echo "$ac_cs_usage"; exit 0 ;;
-+ --debug | --d* | -d )
-+ debug=: ;;
-+ --file | --fil | --fi | --f )
-+ $ac_shift
-+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-+ ac_need_defaults=false;;
-+ --header | --heade | --head | --hea )
-+ $ac_shift
-+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-+ ac_need_defaults=false;;
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
-+ ac_cs_silent=: ;;
-+
-+ # This is an error.
-+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-+Try \`$0 --help' for more information." >&5
-+echo "$as_me: error: unrecognized option: $1
-+Try \`$0 --help' for more information." >&2;}
-+ { (exit 1); exit 1; }; } ;;
-+
-+ *) ac_config_targets="$ac_config_targets $1" ;;
-+
-+ esac
-+ shift
-+done
-+
-+ac_configure_extra_args=
-+
-+if $ac_cs_silent; then
-+ exec 6>/dev/null
-+ ac_configure_extra_args="$ac_configure_extra_args --silent"
-+fi
-+
-+_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF
-+if \$ac_cs_recheck; then
-+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+fi
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+#
-+# INIT-COMMANDS section.
-+#
-+
-+config_vars='$config_vars'
-+
-+_ACEOF
-+
-+
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+for ac_config_target in $ac_config_targets
-+do
-+ case "$ac_config_target" in
-+ # Handling of arguments.
-+ "config.make" ) CONFIG_FILES="$CONFIG_FILES config.make" ;;
-+ "glibcbug" ) CONFIG_FILES="$CONFIG_FILES glibcbug" ;;
-+ "${config_makefile}" ) CONFIG_FILES="$CONFIG_FILES ${config_makefile}" ;;
-+ "${config_uname}" ) CONFIG_FILES="$CONFIG_FILES ${config_uname}" ;;
-+ "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# If the user did not use the arguments to specify the items to instantiate,
-+# then the envvar interface is used. Set only those that are not.
-+# We use the long form for the default assignment because of an extremely
-+# bizarre bug on SunOS 4.1.3.
-+if $ac_need_defaults; then
-+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-+fi
-+
-+# Have a temporary directory for convenience. Make it in the build tree
-+# simply because there is no reason to put it here, and in addition,
-+# creating and moving files from /tmp can sometimes cause problems.
-+# Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+
-+{
-+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=./confstat$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in ." >&2
-+ { (exit 1); exit 1; }
-+}
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+
-+#
-+# CONFIG_FILES section.
-+#
-+
-+# No need to generate the scripts if there are no CONFIG_FILES.
-+# This happens for instance when ./config.status config.h
-+if test -n "\$CONFIG_FILES"; then
-+ # Protect against being on the right side of a sed subst in config.status.
-+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-+s,@SHELL@,$SHELL,;t t
-+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-+s,@exec_prefix@,$exec_prefix,;t t
-+s,@prefix@,$prefix,;t t
-+s,@program_transform_name@,$program_transform_name,;t t
-+s,@bindir@,$bindir,;t t
-+s,@sbindir@,$sbindir,;t t
-+s,@libexecdir@,$libexecdir,;t t
-+s,@datadir@,$datadir,;t t
-+s,@sysconfdir@,$sysconfdir,;t t
-+s,@sharedstatedir@,$sharedstatedir,;t t
-+s,@localstatedir@,$localstatedir,;t t
-+s,@libdir@,$libdir,;t t
-+s,@includedir@,$includedir,;t t
-+s,@oldincludedir@,$oldincludedir,;t t
-+s,@infodir@,$infodir,;t t
-+s,@mandir@,$mandir,;t t
-+s,@build_alias@,$build_alias,;t t
-+s,@host_alias@,$host_alias,;t t
-+s,@target_alias@,$target_alias,;t t
-+s,@DEFS@,$DEFS,;t t
-+s,@ECHO_C@,$ECHO_C,;t t
-+s,@ECHO_N@,$ECHO_N,;t t
-+s,@ECHO_T@,$ECHO_T,;t t
-+s,@LIBS@,$LIBS,;t t
-+s,@with_fp@,$with_fp,;t t
-+s,@with_cvs@,$with_cvs,;t t
-+s,@enable_check_abi@,$enable_check_abi,;t t
-+s,@oldest_abi@,$oldest_abi,;t t
-+s,@subdirs@,$subdirs,;t t
-+s,@force_install@,$force_install,;t t
-+s,@all_warnings@,$all_warnings,;t t
-+s,@build@,$build,;t t
-+s,@build_cpu@,$build_cpu,;t t
-+s,@build_vendor@,$build_vendor,;t t
-+s,@build_os@,$build_os,;t t
-+s,@host@,$host,;t t
-+s,@host_cpu@,$host_cpu,;t t
-+s,@host_vendor@,$host_vendor,;t t
-+s,@host_os@,$host_os,;t t
-+s,@base_machine@,$base_machine,;t t
-+s,@sysnames@,$sysnames,;t t
-+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-+s,@LN_S@,$LN_S,;t t
-+s,@CC@,$CC,;t t
-+s,@CFLAGS@,$CFLAGS,;t t
-+s,@LDFLAGS@,$LDFLAGS,;t t
-+s,@CPPFLAGS@,$CPPFLAGS,;t t
-+s,@ac_ct_CC@,$ac_ct_CC,;t t
-+s,@OBJEXT@,$OBJEXT,;t t
-+s,@BUILD_CC@,$BUILD_CC,;t t
-+s,@cross_compiling@,$cross_compiling,;t t
-+s,@CPP@,$CPP,;t t
-+s,@CXX@,$CXX,;t t
-+s,@CXXFLAGS@,$CXXFLAGS,;t t
-+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-+s,@AR@,$AR,;t t
-+s,@OBJDUMP@,$OBJDUMP,;t t
-+s,@RANLIB@,$RANLIB,;t t
-+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-+s,@MIG@,$MIG,;t t
-+s,@AS@,$AS,;t t
-+s,@LD@,$LD,;t t
-+s,@PWD_P@,$PWD_P,;t t
-+s,@MAKE@,$MAKE,;t t
-+s,@MSGFMT@,$MSGFMT,;t t
-+s,@MAKEINFO@,$MAKEINFO,;t t
-+s,@SED@,$SED,;t t
-+s,@AUTOCONF@,$AUTOCONF,;t t
-+s,@CCVERSION@,$CCVERSION,;t t
-+s,@SYSINCLUDES@,$SYSINCLUDES,;t t
-+s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t
-+s,@BASH@,$BASH,;t t
-+s,@libc_cv_have_bash2@,$libc_cv_have_bash2,;t t
-+s,@KSH@,$KSH,;t t
-+s,@libc_cv_have_ksh@,$libc_cv_have_ksh,;t t
-+s,@AWK@,$AWK,;t t
-+s,@PERL@,$PERL,;t t
-+s,@INSTALL_INFO@,$INSTALL_INFO,;t t
-+s,@OLD_DEBIAN_INSTALL_INFO@,$OLD_DEBIAN_INSTALL_INFO,;t t
-+s,@BISON@,$BISON,;t t
-+s,@VERSIONING@,$VERSIONING,;t t
-+s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t
-+s,@libc_cv_initfinit_array@,$libc_cv_initfinit_array,;t t
-+s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t
-+s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
-+s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t
-+s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
-+s,@ASFLAGS_config@,$ASFLAGS_config,;t t
-+s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
-+s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
-+s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
-+s,@no_whole_archive@,$no_whole_archive,;t t
-+s,@exceptions@,$exceptions,;t t
-+s,@LIBGD@,$LIBGD,;t t
-+s,@EGREP@,$EGREP,;t t
-+s,@sizeof_long_double@,$sizeof_long_double,;t t
-+s,@libc_cv_gcc_unwind_find_fde@,$libc_cv_gcc_unwind_find_fde,;t t
-+s,@uname_sysname@,$uname_sysname,;t t
-+s,@uname_release@,$uname_release,;t t
-+s,@uname_version@,$uname_version,;t t
-+s,@old_glibc_headers@,$old_glibc_headers,;t t
-+s,@libc_cv_slibdir@,$libc_cv_slibdir,;t t
-+s,@libc_cv_localedir@,$libc_cv_localedir,;t t
-+s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t
-+s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t
-+s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t
-+s,@use_ldconfig@,$use_ldconfig,;t t
-+s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t
-+s,@gnu_ld@,$gnu_ld,;t t
-+s,@gnu_as@,$gnu_as,;t t
-+s,@elf@,$elf,;t t
-+s,@xcoff@,$xcoff,;t t
-+s,@static@,$static,;t t
-+s,@shared@,$shared,;t t
-+s,@pic_default@,$pic_default,;t t
-+s,@profile@,$profile,;t t
-+s,@omitfp@,$omitfp,;t t
-+s,@bounded@,$bounded,;t t
-+s,@static_nss@,$static_nss,;t t
-+s,@nopic_initfini@,$nopic_initfini,;t t
-+s,@DEFINES@,$DEFINES,;t t
-+s,@linux_doors@,$linux_doors,;t t
-+s,@mach_interface_list@,$mach_interface_list,;t t
-+s,@VERSION@,$VERSION,;t t
-+s,@RELEASE@,$RELEASE,;t t
-+s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
-+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-+CEOF
-+
-+_ACEOF
-+
-+ cat >>$CONFIG_STATUS <<\_ACEOF
-+ # Split the substitutions into bite-sized pieces for seds with
-+ # small command number limits, like on Digital OSF/1 and HP-UX.
-+ ac_max_sed_lines=48
-+ ac_sed_frag=1 # Number of current file.
-+ ac_beg=1 # First line for current file.
-+ ac_end=$ac_max_sed_lines # Line after last line for current file.
-+ ac_more_lines=:
-+ ac_sed_cmds=
-+ while $ac_more_lines; do
-+ if test $ac_beg -gt 1; then
-+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-+ else
-+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-+ fi
-+ if test ! -s $tmp/subs.frag; then
-+ ac_more_lines=false
-+ else
-+ # The purpose of the label and of the branching condition is to
-+ # speed up the sed processing (if there are no `@' at all, there
-+ # is no need to browse any of the substitutions).
-+ # These are the two extra sed commands mentioned above.
-+ (echo ':t
-+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-+ if test -z "$ac_sed_cmds"; then
-+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-+ else
-+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-+ fi
-+ ac_sed_frag=`expr $ac_sed_frag + 1`
-+ ac_beg=$ac_end
-+ ac_end=`expr $ac_end + $ac_max_sed_lines`
-+ fi
-+ done
-+ if test -z "$ac_sed_cmds"; then
-+ ac_sed_cmds=cat
-+ fi
-+fi # test -n "$CONFIG_FILES"
-+
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-+ case $ac_file in
-+ - | *:- | *:-:* ) # input from stdin
-+ cat >$tmp/stdin
-+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ * ) ac_file_in=$ac_file.in ;;
-+ esac
-+
-+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_file" : 'X\(//\)[^/]' \| \
-+ X"$ac_file" : 'X\(//\)$' \| \
-+ X"$ac_file" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_file" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ { if $as_mkdir_p; then
-+ mkdir -p "$ac_dir"
-+ else
-+ as_dir="$ac_dir"
-+ as_dirs=
-+ while test ! -d "$as_dir"; do
-+ as_dirs="$as_dir $as_dirs"
-+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_dir" : 'X\(//\)[^/]' \| \
-+ X"$as_dir" : 'X\(//\)$' \| \
-+ X"$as_dir" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$as_dir" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ done
-+ test ! -n "$as_dirs" || mkdir $as_dirs
-+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+
-+ case $INSTALL in
-+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-+ esac
-+
-+ if test x"$ac_file" != x-; then
-+ { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+ rm -f "$ac_file"
-+ fi
-+ # Let's still pretend it is `configure' which instantiates (i.e., don't
-+ # use $as_me), people would be surprised to read:
-+ # /* config.h. Generated by config.status. */
-+ if test x"$ac_file" = x-; then
-+ configure_input=
-+ else
-+ configure_input="$ac_file. "
-+ fi
-+ configure_input=$configure_input"Generated from `echo $ac_file_in |
-+ sed 's,.*/,,'` by configure."
-+
-+ # First look for the input files in the build tree, otherwise in the
-+ # src tree.
-+ ac_file_inputs=`IFS=:
-+ for f in $ac_file_in; do
-+ case $f in
-+ -) echo $tmp/stdin ;;
-+ [\\/$]*)
-+ # Absolute (can't be DOS-style, as IFS=:)
-+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ echo $f;;
-+ *) # Relative
-+ if test -f "$f"; then
-+ # Build tree
-+ echo $f
-+ elif test -f "$srcdir/$f"; then
-+ # Source tree
-+ echo $srcdir/$f
-+ else
-+ # /dev/null tree
-+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi;;
-+ esac
-+ done` || { (exit 1); exit 1; }
-+_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF
-+ sed "$ac_vpsub
-+$extrasub
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+:t
-+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-+s,@configure_input@,$configure_input,;t t
-+s,@srcdir@,$ac_srcdir,;t t
-+s,@abs_srcdir@,$ac_abs_srcdir,;t t
-+s,@top_srcdir@,$ac_top_srcdir,;t t
-+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-+s,@builddir@,$ac_builddir,;t t
-+s,@abs_builddir@,$ac_abs_builddir,;t t
-+s,@top_builddir@,$ac_top_builddir,;t t
-+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-+s,@INSTALL@,$ac_INSTALL,;t t
-+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-+ rm -f $tmp/stdin
-+ if test x"$ac_file" != x-; then
-+ mv $tmp/out $ac_file
-+ else
-+ cat $tmp/out
-+ rm -f $tmp/out
-+ fi
-+
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+#
-+# CONFIG_HEADER section.
-+#
-+
-+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-+# NAME is the cpp macro being defined and VALUE is the value it is being given.
-+#
-+# ac_d sets the value in "#define NAME VALUE" lines.
-+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-+ac_dB='[ ].*$,\1#\2'
-+ac_dC=' '
-+ac_dD=',;t'
-+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-+ac_uB='$,\1#\2define\3'
-+ac_uC=' '
-+ac_uD=',;t'
-+
-+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-+ case $ac_file in
-+ - | *:- | *:-:* ) # input from stdin
-+ cat >$tmp/stdin
-+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ * ) ac_file_in=$ac_file.in ;;
-+ esac
-+
-+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+
-+ # First look for the input files in the build tree, otherwise in the
-+ # src tree.
-+ ac_file_inputs=`IFS=:
-+ for f in $ac_file_in; do
-+ case $f in
-+ -) echo $tmp/stdin ;;
-+ [\\/$]*)
-+ # Absolute (can't be DOS-style, as IFS=:)
-+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ echo $f;;
-+ *) # Relative
-+ if test -f "$f"; then
-+ # Build tree
-+ echo $f
-+ elif test -f "$srcdir/$f"; then
-+ # Source tree
-+ echo $srcdir/$f
-+ else
-+ # /dev/null tree
-+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi;;
-+ esac
-+ done` || { (exit 1); exit 1; }
-+ # Remove the trailing spaces.
-+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-+
-+_ACEOF
-+
-+# Transform confdefs.h into two sed scripts, `conftest.defines' and
-+# `conftest.undefs', that substitutes the proper values into
-+# config.h.in to produce config.h. The first handles `#define'
-+# templates, and the second `#undef' templates.
-+# And first: Protect against being on the right side of a sed subst in
-+# config.status. Protect against being in an unquoted here document
-+# in config.status.
-+rm -f conftest.defines conftest.undefs
-+# Using a here document instead of a string reduces the quoting nightmare.
-+# Putting comments in sed scripts is not portable.
-+#
-+# `end' is used to avoid that the second main sed command (meant for
-+# 0-ary CPP macros) applies to n-ary macro definitions.
-+# See the Autoconf documentation for `clear'.
-+cat >confdef2sed.sed <<\_ACEOF
-+s/[\\&,]/\\&/g
-+s,[\\$`],\\&,g
-+t clear
-+: clear
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-+t end
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-+: end
-+_ACEOF
-+# If some macros were called several times there might be several times
-+# the same #defines, which is useless. Nevertheless, we may not want to
-+# sort them, since we want the *last* AC-DEFINE to be honored.
-+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-+rm -f confdef2sed.sed
-+
-+# This sed command replaces #undef with comments. This is necessary, for
-+# example, in the case of _POSIX_SOURCE, which is predefined and required
-+# on some systems where configure will not decide to define it.
-+cat >>conftest.undefs <<\_ACEOF
-+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-+_ACEOF
-+
-+# Break up conftest.defines because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-+echo ' :' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.defines >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/defines.sed.
-+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#define' lines.
-+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-+ rm -f conftest.defines
-+ mv conftest.tail conftest.defines
-+done
-+rm -f conftest.defines
-+echo ' fi # grep' >>$CONFIG_STATUS
-+echo >>$CONFIG_STATUS
-+
-+# Break up conftest.undefs because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.undefs >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/undefs.sed.
-+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#undef'
-+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-+ rm -f conftest.undefs
-+ mv conftest.tail conftest.undefs
-+done
-+rm -f conftest.undefs
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+ # Let's still pretend it is `configure' which instantiates (i.e., don't
-+ # use $as_me), people would be surprised to read:
-+ # /* config.h. Generated by config.status. */
-+ if test x"$ac_file" = x-; then
-+ echo "/* Generated by configure. */" >$tmp/config.h
-+ else
-+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
-+ fi
-+ cat $tmp/in >>$tmp/config.h
-+ rm -f $tmp/in
-+ if test x"$ac_file" != x-; then
-+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-+echo "$as_me: $ac_file is unchanged" >&6;}
-+ else
-+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_file" : 'X\(//\)[^/]' \| \
-+ X"$ac_file" : 'X\(//\)$' \| \
-+ X"$ac_file" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_file" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ { if $as_mkdir_p; then
-+ mkdir -p "$ac_dir"
-+ else
-+ as_dir="$ac_dir"
-+ as_dirs=
-+ while test ! -d "$as_dir"; do
-+ as_dirs="$as_dir $as_dirs"
-+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_dir" : 'X\(//\)[^/]' \| \
-+ X"$as_dir" : 'X\(//\)$' \| \
-+ X"$as_dir" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$as_dir" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ done
-+ test ! -n "$as_dirs" || mkdir $as_dirs
-+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ rm -f $ac_file
-+ mv $tmp/config.h $ac_file
-+ fi
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
-+ fi
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+#
-+# CONFIG_COMMANDS section.
-+#
-+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
-+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_dest" : 'X\(//\)[^/]' \| \
-+ X"$ac_dest" : 'X\(//\)$' \| \
-+ X"$ac_dest" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_dest" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+
-+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-+echo "$as_me: executing $ac_dest commands" >&6;}
-+ case $ac_dest in
-+ default )
-+case $CONFIG_FILES in *config.make*)
-+echo "$config_vars" >> config.make;;
-+esac
-+test -d bits || mkdir bits ;;
-+ esac
-+done
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+{ (exit 0); exit 0; }
-+_ACEOF
-+chmod +x $CONFIG_STATUS
-+ac_clean_files=$ac_clean_files_save
-+
-+
-+# configure is writing to config.log, and then calls config.status.
-+# config.status does its own redirection, appending to config.log.
-+# Unfortunately, on DOS this fails, as config.log is still kept open
-+# by configure, so config.status won't be able to write to it; its
-+# output is simply discarded. So we exec the FD to /dev/null,
-+# effectively closing config.log, so it can be properly (re)opened and
-+# appended to by config.status. When coming back to configure, we
-+# need to make the FD available again.
-+if test "$no_create" != yes; then
-+ ac_cs_success=:
-+ ac_config_status_args=
-+ test "$silent" = yes &&
-+ ac_config_status_args="$ac_config_status_args --quiet"
-+ exec 5>/dev/null
-+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-+ exec 5>>config.log
-+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-+ # would make configure fail if this is the last instruction.
-+ $ac_cs_success || { (exit 1); exit 1; }
-+fi
-+
-+#
-+# CONFIG_SUBDIRS section.
-+#
-+if test "$no_recursion" != yes; then
-+
-+ # Remove --cache-file and --srcdir arguments so they do not pile up.
-+ ac_sub_configure_args=
-+ ac_prev=
-+ for ac_arg in $ac_configure_args; do
-+ if test -n "$ac_prev"; then
-+ ac_prev=
-+ continue
-+ fi
-+ case $ac_arg in
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-+ | --c=*)
-+ ;;
-+ --config-cache | -C)
-+ ;;
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ ;;
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ ;;
-+ *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
-+ esac
-+ done
-+
-+ # Always prepend --prefix to ensure using the same prefix
-+ # in subdir configurations.
-+ ac_sub_configure_args="--prefix=$prefix $ac_sub_configure_args"
-+
-+ ac_popdir=`pwd`
-+ for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-+
-+ # Do not complain, so a configure script can configure whichever
-+ # parts of a large source tree are present.
-+ test -d $srcdir/$ac_dir || continue
-+
-+ { echo "$as_me:$LINENO: configuring in $ac_dir" >&5
-+echo "$as_me: configuring in $ac_dir" >&6;}
-+ { if $as_mkdir_p; then
-+ mkdir -p "$ac_dir"
-+ else
-+ as_dir="$ac_dir"
-+ as_dirs=
-+ while test ! -d "$as_dir"; do
-+ as_dirs="$as_dir $as_dirs"
-+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_dir" : 'X\(//\)[^/]' \| \
-+ X"$as_dir" : 'X\(//\)$' \| \
-+ X"$as_dir" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$as_dir" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ done
-+ test ! -n "$as_dirs" || mkdir $as_dirs
-+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-+# absolute.
-+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-+
-+
-+ cd $ac_dir
-+
-+ # Check for guested configure; otherwise get Cygnus style configure.
-+ if test -f $ac_srcdir/configure.gnu; then
-+ ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'"
-+ elif test -f $ac_srcdir/configure; then
-+ ac_sub_configure="$SHELL '$ac_srcdir/configure'"
-+ elif test -f $ac_srcdir/configure.in; then
-+ ac_sub_configure=$ac_configure
-+ else
-+ { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
-+echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
-+ ac_sub_configure=
-+ fi
-+
-+ # The recursion is here.
-+ if test -n "$ac_sub_configure"; then
-+ # Make the cache file name correct relative to the subdirectory.
-+ case $cache_file in
-+ [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-+ *) # Relative path.
-+ ac_sub_cache_file=$ac_top_builddir$cache_file ;;
-+ esac
-+
-+ { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-+echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-+ # The eval makes quoting arguments work.
-+ eval $ac_sub_configure $ac_sub_configure_args \
-+ --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir ||
-+ { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
-+echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+ cd $ac_popdir
-+ done
-+fi
-+
---- glibc-2.3.2/autom4te.cache/requests 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/autom4te.cache/requests 2003-09-19 22:48:21.000000000 -0400
-@@ -0,0 +1,111 @@
-+# This file was created by autom4te.
-+# It contains the lists of macros which have been traced.
-+# It can be safely removed.
-+
-+@request = (
-+ bless( [
-+ '0',
-+ 1,
-+ [
-+ '/usr/share/autoconf'
-+ ],
-+ [
-+ '/usr/share/autoconf/autoconf/autoconf.m4f',
-+ 'aclocal.m4',
-+ 'configure.in'
-+ ],
-+ {
-+ 'm4_pattern_forbid' => 1,
-+ 'AC_TYPE_OFF_T' => 1,
-+ 'AC_C_VOLATILE' => 1,
-+ 'AC_FUNC_CLOSEDIR_VOID' => 1,
-+ 'AC_REPLACE_FNMATCH' => 1,
-+ 'AC_PROG_LIBTOOL' => 1,
-+ 'AC_FUNC_STAT' => 1,
-+ 'AC_HEADER_TIME' => 1,
-+ 'AC_FUNC_WAIT3' => 1,
-+ 'AM_AUTOMAKE_VERSION' => 1,
-+ 'AC_STRUCT_TM' => 1,
-+ 'AC_FUNC_LSTAT' => 1,
-+ 'AC_TYPE_MODE_T' => 1,
-+ 'AC_FUNC_GETMNTENT' => 1,
-+ 'AC_FUNC_STRTOD' => 1,
-+ 'AC_CHECK_HEADERS' => 1,
-+ 'AC_FUNC_STRNLEN' => 1,
-+ 'AC_PROG_CXX' => 1,
-+ 'AC_PATH_X' => 1,
-+ 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
-+ 'AC_PROG_AWK' => 1,
-+ 'AC_HEADER_STDC' => 1,
-+ 'AC_HEADER_MAJOR' => 1,
-+ 'AC_FUNC_ERROR_AT_LINE' => 1,
-+ 'AC_PROG_GCC_TRADITIONAL' => 1,
-+ 'AC_LIBSOURCE' => 1,
-+ 'AC_FUNC_MBRTOWC' => 1,
-+ 'AC_STRUCT_ST_BLOCKS' => 1,
-+ 'AC_TYPE_SIGNAL' => 1,
-+ 'AC_TYPE_UID_T' => 1,
-+ 'AC_CONFIG_AUX_DIR' => 1,
-+ 'AC_PROG_MAKE_SET' => 1,
-+ 'm4_pattern_allow' => 1,
-+ 'AC_DEFINE_TRACE_LITERAL' => 1,
-+ 'AC_FUNC_STRERROR_R' => 1,
-+ 'AC_PROG_CC' => 1,
-+ 'AC_DECL_SYS_SIGLIST' => 1,
-+ 'AC_FUNC_FORK' => 1,
-+ 'AC_FUNC_VPRINTF' => 1,
-+ 'AC_FUNC_STRCOLL' => 1,
-+ 'AC_PROG_YACC' => 1,
-+ 'AC_INIT' => 1,
-+ 'AC_STRUCT_TIMEZONE' => 1,
-+ 'AC_FUNC_CHOWN' => 1,
-+ 'AC_SUBST' => 1,
-+ 'AC_FUNC_ALLOCA' => 1,
-+ 'AC_CANONICAL_HOST' => 1,
-+ 'AC_FUNC_GETPGRP' => 1,
-+ 'AC_PROG_RANLIB' => 1,
-+ 'AM_INIT_AUTOMAKE' => 1,
-+ 'AC_FUNC_SETPGRP' => 1,
-+ 'AC_CONFIG_SUBDIRS' => 1,
-+ 'AC_FUNC_MMAP' => 1,
-+ 'AC_FUNC_REALLOC' => 1,
-+ 'AC_TYPE_SIZE_T' => 1,
-+ 'AC_CHECK_TYPES' => 1,
-+ 'AC_CHECK_MEMBERS' => 1,
-+ 'AM_MAINTAINER_MODE' => 1,
-+ 'AC_FUNC_UTIME_NULL' => 1,
-+ 'AC_FUNC_SELECT_ARGTYPES' => 1,
-+ 'AC_FUNC_STRFTIME' => 1,
-+ 'AC_HEADER_STAT' => 1,
-+ 'AC_C_INLINE' => 1,
-+ 'AC_PROG_CPP' => 1,
-+ 'AC_C_CONST' => 1,
-+ 'AC_PROG_LEX' => 1,
-+ 'AC_TYPE_PID_T' => 1,
-+ 'AC_CONFIG_FILES' => 1,
-+ 'include' => 1,
-+ 'AC_FUNC_SETVBUF_REVERSED' => 1,
-+ 'AC_PROG_INSTALL' => 1,
-+ 'AM_GNU_GETTEXT' => 1,
-+ 'AC_FUNC_OBSTACK' => 1,
-+ 'AC_CHECK_LIB' => 1,
-+ 'AC_FUNC_MALLOC' => 1,
-+ 'AC_FUNC_GETGROUPS' => 1,
-+ 'AC_FUNC_GETLOADAVG' => 1,
-+ 'AH_OUTPUT' => 1,
-+ 'AC_FUNC_FSEEKO' => 1,
-+ 'AM_PROG_CC_C_O' => 1,
-+ 'AM_CONDITIONAL' => 1,
-+ 'AC_CANONICAL_SYSTEM' => 1,
-+ 'AC_FUNC_MKTIME' => 1,
-+ 'AC_CONFIG_HEADERS' => 1,
-+ 'AC_HEADER_SYS_WAIT' => 1,
-+ 'AC_FUNC_MEMCMP' => 1,
-+ 'AC_PROG_LN_S' => 1,
-+ 'm4_include' => 1,
-+ 'AC_HEADER_DIRENT' => 1,
-+ 'AC_CHECK_FUNCS' => 1
-+ }
-+ ], 'Request' )
-+ );
-+
---- glibc-2.3.2/autom4te.cache/traces.0 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/autom4te.cache/traces.0 2003-09-19 22:40:33.000000000 -0400
-@@ -0,0 +1,254 @@
-+m4trace:configure.in:4: -1- AC_INIT([GNU C Library], [(see version.h)], [glibc])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([^_?A[CHUM]_])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([_AC_])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-+m4trace:configure.in:4: -1- m4_pattern_allow([^AS_FLAGS$])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([^_?m4_])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([^dnl$])
-+m4trace:configure.in:4: -1- m4_pattern_forbid([^_?AS_])
-+m4trace:configure.in:4: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
-+m4trace:configure.in:4: -1- AC_SUBST([PATH_SEPARATOR])
-+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
-+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
-+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
-+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
-+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-+m4trace:configure.in:4: -1- AC_SUBST([exec_prefix], [NONE])
-+m4trace:configure.in:4: -1- AC_SUBST([prefix], [NONE])
-+m4trace:configure.in:4: -1- AC_SUBST([program_transform_name], [s,x,x,])
-+m4trace:configure.in:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-+m4trace:configure.in:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-+m4trace:configure.in:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-+m4trace:configure.in:4: -1- AC_SUBST([datadir], ['${prefix}/share'])
-+m4trace:configure.in:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-+m4trace:configure.in:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-+m4trace:configure.in:4: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-+m4trace:configure.in:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-+m4trace:configure.in:4: -1- AC_SUBST([includedir], ['${prefix}/include'])
-+m4trace:configure.in:4: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-+m4trace:configure.in:4: -1- AC_SUBST([infodir], ['${prefix}/info'])
-+m4trace:configure.in:4: -1- AC_SUBST([mandir], ['${prefix}/man'])
-+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-+#undef PACKAGE_NAME])
-+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME])
-+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-+#undef PACKAGE_VERSION])
-+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING])
-+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT])
-+m4trace:configure.in:4: -1- AC_SUBST([build_alias])
-+m4trace:configure.in:4: -1- AC_SUBST([host_alias])
-+m4trace:configure.in:4: -1- AC_SUBST([target_alias])
-+m4trace:configure.in:4: -1- AC_SUBST([DEFS])
-+m4trace:configure.in:4: -1- AC_SUBST([ECHO_C])
-+m4trace:configure.in:4: -1- AC_SUBST([ECHO_N])
-+m4trace:configure.in:4: -1- AC_SUBST([ECHO_T])
-+m4trace:configure.in:4: -1- AC_SUBST([LIBS])
-+m4trace:configure.in:6: -1- AC_CONFIG_HEADERS([config.h])
-+m4trace:configure.in:7: -1- AC_CONFIG_AUX_DIR([scripts])
-+m4trace:configure.in:73: -1- AC_SUBST([with_fp])
-+m4trace:configure.in:100: -1- AC_SUBST([with_cvs])
-+m4trace:configure.in:116: -1- AC_SUBST([enable_check_abi])
-+m4trace:configure.in:168: -1- AC_DEFINE_TRACE_LITERAL([GLIBC_OLDEST_ABI])
-+m4trace:configure.in:170: -1- AC_SUBST([oldest_abi])
-+m4trace:configure.in:203: -1- AC_DEFINE_TRACE_LITERAL([NO_HIDDEN])
-+m4trace:configure.in:206: -1- AC_CONFIG_SUBDIRS([ ])
-+m4trace:configure.in:206: -1- AC_SUBST([subdirs], ["$subdirs "])
-+m4trace:configure.in:248: -1- AC_DEFINE_TRACE_LITERAL([DO_STATIC_NSS])
-+m4trace:configure.in:256: -1- AC_SUBST([force_install])
-+m4trace:configure.in:283: -1- AC_SUBST([all_warnings])
-+m4trace:configure.in:285: -1- AC_CANONICAL_HOST
-+m4trace:configure.in:285: -1- AC_SUBST([build], [$ac_cv_build])
-+m4trace:configure.in:285: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:285: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:285: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:285: -1- AC_SUBST([host], [$ac_cv_host])
-+m4trace:configure.in:285: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
-+m4trace:configure.in:285: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
-+m4trace:configure.in:285: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
-+m4trace:configure.in:438: -1- AC_SUBST([base_machine])
-+m4trace:configure.in:441: -1- AC_DEFINE_TRACE_LITERAL([USE_REGPARMS])
-+m4trace:configure.in:659: -1- AC_SUBST([sysnames])
-+m4trace:configure.in:666: -1- AC_PROG_INSTALL
-+m4trace:configure.in:666: -1- AC_SUBST([INSTALL_PROGRAM])
-+m4trace:configure.in:666: -1- AC_SUBST([INSTALL_SCRIPT])
-+m4trace:configure.in:666: -1- AC_SUBST([INSTALL_DATA])
-+m4trace:configure.in:671: -1- AC_PROG_LN_S
-+m4trace:configure.in:671: -1- AC_SUBST([LN_S], [$as_ln_s])
-+m4trace:configure.in:673: -1- AC_PROG_CC
-+m4trace:configure.in:673: -1- AC_SUBST([CC])
-+m4trace:configure.in:673: -1- AC_SUBST([CFLAGS])
-+m4trace:configure.in:673: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:673: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:673: -1- AC_SUBST([CC])
-+m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:673: -1- AC_SUBST([CC])
-+m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:673: -1- AC_SUBST([CC])
-+m4trace:configure.in:673: -1- AC_SUBST([CC])
-+m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
-+m4trace:configure.in:673: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-+m4trace:configure.in:675: -1- AC_SUBST([BUILD_CC])
-+m4trace:configure.in:677: -1- AC_SUBST([cross_compiling])
-+m4trace:configure.in:678: -1- AC_PROG_CPP
-+m4trace:configure.in:678: -1- AC_SUBST([CPP])
-+m4trace:configure.in:678: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:678: -1- AC_SUBST([CPP])
-+m4trace:configure.in:680: -1- AC_PROG_CXX
-+m4trace:configure.in:680: -1- AC_SUBST([CXX])
-+m4trace:configure.in:680: -1- AC_SUBST([CXXFLAGS])
-+m4trace:configure.in:680: -1- AC_SUBST([LDFLAGS])
-+m4trace:configure.in:680: -1- AC_SUBST([CPPFLAGS])
-+m4trace:configure.in:680: -1- AC_SUBST([CXX])
-+m4trace:configure.in:680: -1- AC_SUBST([ac_ct_CXX])
-+m4trace:configure.in:681: -1- AC_SUBST([AR])
-+m4trace:configure.in:681: -1- AC_SUBST([OBJDUMP])
-+m4trace:configure.in:681: -1- AC_SUBST([RANLIB])
-+m4trace:configure.in:681: -1- AC_SUBST([ac_ct_RANLIB])
-+m4trace:configure.in:681: -1- AC_SUBST([RANLIB])
-+m4trace:configure.in:682: -1- AC_SUBST([MIG])
-+m4trace:configure.in:687: -1- AC_SUBST([AS])
-+m4trace:configure.in:690: -1- AC_SUBST([LD])
-+m4trace:configure.in:697: -1- AC_SUBST([PWD_P], [$ac_cv_path_PWD_P])
-+m4trace:configure.in:706: -1- AC_SUBST([CC])
-+m4trace:configure.in:709: -1- AC_SUBST([MAKE])
-+m4trace:configure.in:714: -1- AC_SUBST([MSGFMT])
-+m4trace:configure.in:718: -1- AC_SUBST([MAKEINFO])
-+m4trace:configure.in:722: -1- AC_SUBST([SED])
-+m4trace:configure.in:724: -1- AC_SUBST([AUTOCONF])
-+m4trace:configure.in:754: -1- AC_SUBST([CCVERSION])
-+m4trace:configure.in:763: -1- AC_SUBST([SYSINCLUDES])
-+m4trace:configure.in:818: -1- AC_SUBST([libc_cv_gcc_static_libgcc])
-+m4trace:configure.in:820: -1- AC_SUBST([BASH], [$ac_cv_path_BASH])
-+m4trace:configure.in:828: -1- AC_SUBST([libc_cv_have_bash2])
-+m4trace:configure.in:832: -1- AC_SUBST([KSH], [$ac_cv_path_KSH])
-+m4trace:configure.in:840: -1- AC_SUBST([KSH])
-+m4trace:configure.in:843: -1- AC_SUBST([libc_cv_have_ksh])
-+m4trace:configure.in:845: -1- AC_PROG_AWK
-+m4trace:configure.in:845: -1- AC_SUBST([AWK])
-+m4trace:configure.in:846: -1- AC_SUBST([PERL], [$ac_cv_path_PERL])
-+m4trace:configure.in:852: -1- AC_SUBST([INSTALL_INFO], [$ac_cv_path_INSTALL_INFO])
-+m4trace:configure.in:878: -1- AC_SUBST([OLD_DEBIAN_INSTALL_INFO])
-+m4trace:configure.in:880: -1- AC_SUBST([BISON], [$ac_cv_path_BISON])
-+m4trace:configure.in:969: -1- AC_DEFINE_TRACE_LITERAL([ASM_GLOBAL_DIRECTIVE])
-+m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_SET_DIRECTIVE])
-+m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([ASM_TYPE_DIRECTIVE_PREFIX])
-+m4trace:configure.in:1023: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_GLOBAL_DOT_NAME])
-+m4trace:configure.in:1077: -1- AC_DEFINE_TRACE_LITERAL([DO_VERSIONING])
-+m4trace:configure.in:1081: -1- AC_SUBST([VERSIONING])
-+m4trace:configure.in:1104: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_PREVIOUS_DIRECTIVE])
-+m4trace:configure.in:1119: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_POPSECTION_DIRECTIVE])
-+m4trace:configure.in:1136: -1- AC_SUBST([libc_cv_asm_protected_directive])
-+m4trace:configure.in:1137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PROTECTED])
-+m4trace:configure.in:1138: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HIDDEN])
-+m4trace:configure.in:1158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY_ATTRIBUTE])
-+m4trace:configure.in:1181: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_VISIBILITY_ATTRIBUTE])
-+m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_ALIAS_ATTRIBUTE])
-+m4trace:configure.in:1220: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SDATA_SECTION])
-+m4trace:configure.in:1244: -1- AC_SUBST([libc_cv_initfinit_array])
-+m4trace:configure.in:1246: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI_ARRAY])
-+m4trace:configure.in:1264: -1- AC_SUBST([libc_cv_z_nodelete])
-+m4trace:configure.in:1281: -1- AC_SUBST([libc_cv_z_nodlopen])
-+m4trace:configure.in:1298: -1- AC_SUBST([libc_cv_z_initfirst])
-+m4trace:configure.in:1314: -1- AC_SUBST([libc_cv_Bgroup])
-+m4trace:configure.in:1336: -1- AC_SUBST([ASFLAGS_config])
-+m4trace:configure.in:1364: -1- AC_DEFINE_TRACE_LITERAL([HAVE_Z_COMBRELOC])
-+m4trace:configure.in:1367: -1- AC_SUBST([libc_cv_z_combreloc])
-+m4trace:configure.in:1376: -1- AC_SUBST([libc_cv_have_initfini])
-+m4trace:configure.in:1378: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI])
-+m4trace:configure.in:1401: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SECTION_QUOTES])
-+m4trace:configure.in:1446: -1- AC_DEFINE_TRACE_LITERAL([NO_UNDERSCORES])
-+m4trace:configure.in:1492: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAK_DIRECTIVE])
-+m4trace:configure.in:1494: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAKEXT_DIRECTIVE])
-+m4trace:configure.in:1503: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP])
-+m4trace:configure.in:1522: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP])
-+m4trace:configure.in:1543: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_CFI_DIRECTIVES])
-+m4trace:configure.in:1573: -1- AC_SUBST([libc_cv_cpp_asm_debuginfo])
-+m4trace:configure.in:1575: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CPP_ASM_DEBUGINFO])
-+m4trace:configure.in:1596: -1- AC_SUBST([no_whole_archive])
-+m4trace:configure.in:1616: -1- AC_SUBST([exceptions])
-+m4trace:configure.in:1626: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_PPC_ASM_CR0])
-+m4trace:configure.in:1687: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO])
-+m4trace:configure.in:1690: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO])
-+m4trace:configure.in:1691: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO_STATIC])
-+m4trace:configure.in:1714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_EXPECT])
-+m4trace:configure.in:1733: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_MEMSET])
-+m4trace:configure.in:1753: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_REDIRECTION])
-+m4trace:configure.in:1782: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SUBTRACT_LOCAL_LABELS])
-+m4trace:configure.in:1798: -1- AC_DEFINE_TRACE_LITERAL([HAVE___THREAD])
-+m4trace:configure.in:1817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TLS_MODEL_ATTRIBUTE])
-+m4trace:configure.in:1838: -1- AC_SUBST([LIBGD])
-+m4trace:configure.in:1841: -1- AC_HEADER_STDC
-+m4trace:configure.in:1841: -1- AC_SUBST([EGREP])
-+m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS])
-+m4trace:configure.in:1841: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H])
-+m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_DOUBLE])
-+m4trace:configure.in:1841: -1- AH_OUTPUT([SIZEOF_LONG_DOUBLE], [/* The size of a `long double\', as computed by sizeof. */
-+#undef SIZEOF_LONG_DOUBLE])
-+m4trace:configure.in:1843: -1- AC_SUBST([sizeof_long_double])
-+m4trace:configure.in:1879: -1- AC_DEFINE_TRACE_LITERAL([EXPORT_UNWIND_FIND_FDE])
-+m4trace:configure.in:1881: -1- AC_SUBST([libc_cv_gcc_unwind_find_fde])
-+m4trace:configure.in:1934: -1- AC_SUBST([uname_sysname])
-+m4trace:configure.in:1934: -1- AC_SUBST([uname_release])
-+m4trace:configure.in:1934: -1- AC_SUBST([uname_version])
-+m4trace:configure.in:1942: -1- AC_DEFINE_TRACE_LITERAL([USE_IN_LIBIO])
-+m4trace:configure.in:1958: -1- AC_SUBST([old_glibc_headers])
-+m4trace:configure.in:1960: -1- AC_SUBST([libc_cv_slibdir])
-+m4trace:configure.in:1961: -1- AC_SUBST([libc_cv_localedir])
-+m4trace:configure.in:1962: -1- AC_SUBST([libc_cv_sysconfdir])
-+m4trace:configure.in:1963: -1- AC_SUBST([libc_cv_rootsbindir])
-+m4trace:configure.in:1964: -1- AC_SUBST([libc_cv_forced_unwind])
-+m4trace:configure.in:1966: -1- AC_SUBST([use_ldconfig])
-+m4trace:configure.in:1967: -1- AC_SUBST([ldd_rewrite_script])
-+m4trace:configure.in:1969: -1- AC_SUBST([gnu_ld])
-+m4trace:configure.in:1969: -1- AC_SUBST([gnu_as])
-+m4trace:configure.in:1969: -1- AC_SUBST([elf])
-+m4trace:configure.in:1969: -1- AC_SUBST([xcoff])
-+m4trace:configure.in:1971: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_LD])
-+m4trace:configure.in:1974: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_AS])
-+m4trace:configure.in:1977: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ELF])
-+m4trace:configure.in:1980: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XCOFF])
-+m4trace:configure.in:1983: -1- AC_SUBST([static])
-+m4trace:configure.in:1984: -1- AC_SUBST([shared])
-+m4trace:configure.in:2006: -1- AC_SUBST([pic_default])
-+m4trace:configure.in:2008: -1- AC_SUBST([profile])
-+m4trace:configure.in:2009: -1- AC_SUBST([omitfp])
-+m4trace:configure.in:2010: -1- AC_SUBST([bounded])
-+m4trace:configure.in:2011: -1- AC_SUBST([static_nss])
-+m4trace:configure.in:2012: -1- AC_SUBST([nopic_initfini])
-+m4trace:configure.in:2014: -1- AC_SUBST([DEFINES])
-+m4trace:configure.in:2020: -1- AC_SUBST([linux_doors])
-+m4trace:configure.in:2023: -1- AC_SUBST([mach_interface_list])
-+m4trace:configure.in:2033: -1- AC_SUBST([VERSION])
-+m4trace:configure.in:2034: -1- AC_SUBST([RELEASE])
-+m4trace:configure.in:2036: -1- AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
-+m4trace:configure.in:2042: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-+m4trace:configure.in:2042: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
---- glibc-2.3.2/catgets/gencat.c 2003-02-22 18:09:59.000000000 -0500
-+++ glibc-2.3.2/catgets/gencat.c 2003-04-12 11:39:42.000000000 -0400
-@@ -333,7 +333,7 @@
- /* There might be more than one backslash at the end of
- the line. Only if there is an odd number of them is
- the line continued. */
-- if (buf[act_len - 1] == '\\')
-+ if (act_len > 0 && buf[act_len - 1] == '\\')
- {
- int temp_act_len = act_len;
-
-@@ -343,10 +343,10 @@
- continued = !continued;
- }
- while (temp_act_len > 0 && buf[temp_act_len - 1] == '\\');
-- }
-
-- if (continued)
-- --act_len;
-+ if (continued)
-+ --act_len;
-+ }
- }
-
- /* Append to currently selected line. */
---- glibc-2.3.2/catgets/nl_types.h 2001-07-07 15:20:51.000000000 -0400
-+++ glibc-2.3.2/catgets/nl_types.h 2003-04-24 20:05:56.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1999, 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
-@@ -36,8 +36,11 @@
- /* Type used by `nl_langinfo'. */
- typedef int nl_item;
-
--/* Open message catalog for later use, returning descriptor. */
--extern nl_catd catopen (__const char *__cat_name, int __flag) __THROW;
-+/* Open message catalog for later use, returning descriptor.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern nl_catd catopen (__const char *__cat_name, int __flag);
-
- /* Return translation with NUMBER in SET of CATALOG; if not found
- return STRING. */
---- glibc-2.3.2/catgets/open_catalog.c 2002-09-24 01:11:41.000000000 -0400
-+++ glibc-2.3.2/catgets/open_catalog.c 2003-08-21 08:36:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.org>.
-
-@@ -30,6 +30,7 @@
- #include <sys/stat.h>
-
- #include "catgetsinfo.h"
-+#include <not-cancel.h>
-
-
- #define SWAPU32(w) bswap_32 (w)
-@@ -49,7 +50,7 @@
- int result = -1;
-
- if (strchr (cat_name, '/') != NULL || nlspath == NULL)
-- fd = __open (cat_name, O_RDONLY);
-+ fd = open_not_cancel_2 (cat_name, O_RDONLY);
- else
- {
- const char *run_nlspath = nlspath;
-@@ -177,7 +178,7 @@
-
- if (bufact != 0)
- {
-- fd = __open (buf, O_RDONLY);
-+ fd = open_not_cancel_2 (buf, O_RDONLY);
- if (fd >= 0)
- break;
- }
-@@ -233,8 +234,8 @@
- /* Save read, handle partial reads. */
- do
- {
-- size_t now = __read (fd, (((char *) catalog->file_ptr)
-- + (st.st_size - todo)), todo);
-+ size_t now = read_not_cancel (fd, (((char *) catalog->file_ptr)
-+ + (st.st_size - todo)), todo);
- if (now == 0 || now == (size_t) -1)
- {
- #ifdef EINTR
-@@ -324,7 +325,7 @@
-
- /* Release the lock again. */
- close_unlock_return:
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- return result;
- }
---- glibc-2.3.2/config-name.in 1994-12-08 04:12:33.000000000 -0500
-+++ glibc-2.3.2/config-name.in 2002-11-16 08:53:56.000000000 -0500
-@@ -1,5 +1,5 @@
- /* @configure_input@ -*- C -*-
-- Generated from $Id: config-name.in,v 1.1 1994/12/08 09:12:33 roland Exp $.
-+ 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. */
---- glibc-2.3.2/config.h.in 2003-02-04 03:35:22.000000000 -0500
-+++ glibc-2.3.2/config.h.in 2003-05-24 14:06:21.000000000 -0400
-@@ -31,6 +31,9 @@
- /* Define if weak symbols are available via the `.weakext' directive. */
- #undef HAVE_ASM_WEAKEXT_DIRECTIVE
-
-+/* Define if CFI directives are available. */
-+#undef HAVE_ASM_CFI_DIRECTIVES
-+
- /* Define to the assembler line separator character for multiple
- assembler instructions per line. Default is `;' */
- #undef ASM_LINE_SEP
-@@ -58,6 +61,9 @@
- /* Define a symbol_name as a global .symbol_name for ld. */
- #undef HAVE_ASM_GLOBAL_DOT_NAME
-
-+/* Define if the assembler generates debugging information directly. */
-+#undef HAVE_CPP_ASM_DEBUGINFO
-+
- /* Define if _Unwind_Find_FDE should be exported from glibc. */
- #undef EXPORT_UNWIND_FIND_FDE
-
-@@ -95,6 +101,10 @@
- /* Define if the compiler supports __builtin_memset. */
- #undef HAVE_BUILTIN_MEMSET
-
-+/* Define if __asm () on built-in function's prototype causes redirection of
-+ the builtin. */
-+#undef HAVE_BUILTIN_REDIRECTION
-+
- /* Define if the __thread keyword is supported. */
- #undef HAVE___THREAD
-
-@@ -186,6 +196,9 @@
- /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */
- #undef HAVE_I386_SET_GDT
-
-+/* Defined if forced unwind support is available. */
-+#undef HAVE_FORCED_UNWIND
-+
- /*
- */
-
---- glibc-2.3.2/config.make.in 2002-11-14 17:53:32.000000000 -0500
-+++ glibc-2.3.2/config.make.in 2003-08-21 08:36:58.000000000 -0400
-@@ -1,5 +1,5 @@
- # @configure_input@
--# From $Id: config.make.in,v 1.90 2002/11/14 03:59:36 roland Exp $.
-+# From $Id: config.make.in,v 1.94 2003/06/04 21:40:22 drepper Exp $.
- # Don't edit this file. Put configuration parameters in configparms instead.
-
- version = @VERSION@
-@@ -50,6 +50,9 @@
- old-glibc-headers = @old_glibc_headers@
- unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
- have-initfini-array = @libc_cv_initfinit_array@
-+have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
-+enable-check-abi = @enable_check_abi@
-+have-forced-unwind = @libc_cv_forced_unwind@
-
- static-libgcc = @libc_cv_gcc_static_libgcc@
-
-@@ -82,8 +85,10 @@
-
- # Build tools.
- CC = @CC@
-+CXX = @CXX@
- BUILD_CC = @BUILD_CC@
- CFLAGS = @CFLAGS@
-+ASFLAGS-config = @ASFLAGS_config@
- AR = @AR@
- RANLIB = @RANLIB@
- MAKEINFO = @MAKEINFO@
---- glibc-2.3.2/configure 2003-02-26 04:20:48.000000000 -0500
-+++ glibc-2.3.2/configure 2003-08-21 08:36:58.000000000 -0400
-@@ -1,7 +1,7 @@
- #! /bin/sh
- # From configure.in CVSid.
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.57 for GNU C Library (see version.h).
-+# Generated by GNU Autoconf 2.54 for GNU C Library (see version.h).
- #
- # Report bugs to <glibc>.
- #
-@@ -39,10 +39,7 @@
- PS4='+ '
-
- # NLS nuisances.
--for as_var in \
-- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-- LC_TELEPHONE LC_TIME
-+for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
- do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
-@@ -88,15 +85,15 @@
-
- # The user is always right.
- if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ echo "#! /bin/sh" >conftest.sh
-+ echo "exit 0" >>conftest.sh
-+ chmod +x conftest.sh
-+ if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
-- rm -f conf$$.sh
-+ rm -f conftest.sh
- fi
-
-
-@@ -312,7 +309,7 @@
- # include <unistd.h>
- #endif"
-
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
- ac_subst_files=''
-
- # Initialize some variables set by options.
-@@ -773,6 +770,14 @@
- ac_env_CPP_value=$CPP
- ac_cv_env_CPP_set=${CPP+set}
- ac_cv_env_CPP_value=$CPP
-+ac_env_CXX_set=${CXX+set}
-+ac_env_CXX_value=$CXX
-+ac_cv_env_CXX_set=${CXX+set}
-+ac_cv_env_CXX_value=$CXX
-+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_env_CXXFLAGS_value=$CXXFLAGS
-+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-
- #
- # Report the --help message.
-@@ -851,6 +856,8 @@
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-sanity-checks really do not use threads (should not be used except
- in special situations) [default=yes]
-+ --enable-check-abi do "make check-abi" in "make check" (no/warn/yes)
-+ [default=no]
- --enable-shared build shared library [default=yes if GNU ld &
- ELF]
- --enable-profile build profiled library [default=yes]
-@@ -899,6 +906,8 @@
- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
- headers in a nonstandard directory <include dir>
- CPP C preprocessor
-+ CXX C++ compiler command
-+ CXXFLAGS C++ compiler flags
-
- Use these variables to override the choices made by `configure' or to help
- it to find libraries and programs with nonstandard names/locations.
-@@ -967,7 +976,7 @@
- if $ac_init_version; then
- cat <<\_ACEOF
- GNU C Library configure (see version.h)
--generated by GNU Autoconf 2.57
-+generated by GNU Autoconf 2.54
-
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
- Free Software Foundation, Inc.
-@@ -982,7 +991,7 @@
- running configure, to aid debugging if configure makes a mistake.
-
- It was created by GNU C Library $as_me (see version.h), which was
--generated by GNU Autoconf 2.57. Invocation command line was
-+generated by GNU Autoconf 2.54. Invocation command line was
-
- $ $0 $@
-
-@@ -1034,54 +1043,24 @@
-
- # Keep a trace of the command line.
- # Strip out --no-create and --no-recursion so they do not pile up.
--# Strip out --silent because we don't want to record it for future runs.
- # Also quote any args containing shell meta-characters.
--# Make two passes to allow for proper duplicate-argument suppression.
- ac_configure_args=
--ac_configure_args0=
--ac_configure_args1=
- ac_sep=
--ac_must_keep_next=false
--for ac_pass in 1 2
-+for ac_arg
- do
-- for ac_arg
-- do
-- case $ac_arg in
-- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-- | -silent | --silent | --silen | --sile | --sil)
-- continue ;;
-- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-- esac
-- case $ac_pass in
-- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-- 2)
-- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-- if test $ac_must_keep_next = true; then
-- ac_must_keep_next=false # Got value, back to normal.
-- else
-- case $ac_arg in
-- *=* | --config-cache | -C | -disable-* | --disable-* \
-- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-- | -with-* | --with-* | -without-* | --without-* | --x)
-- case "$ac_configure_args0 " in
-- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-- esac
-- ;;
-- -* ) ac_must_keep_next=true ;;
-- esac
-- fi
-- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-- # Get rid of the leading space.
-- ac_sep=" "
-- ;;
-- esac
-- done
-+ case $ac_arg in
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c | -n ) continue ;;
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ continue ;;
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ esac
-+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-+ # Get rid of the leading space.
-+ ac_sep=" "
- done
--$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
--$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
- # When interrupted or exit'd, cleanup temporary files, and complete
- # config.log. We remove comments because anyway the quotes in there
-@@ -1479,6 +1458,15 @@
- enable_sanity=yes
- fi;
-
-+
-+# Check whether --enable-check-abi or --disable-check-abi was given.
-+if test "${enable_check_abi+set}" = set; then
-+ enableval="$enable_check_abi"
-+ enable_check_abi=$enableval
-+else
-+ enable_check_abi=no
-+fi;
-+
- static=yes
- # Check whether --enable-shared or --disable-shared was given.
- if test "${enable_shared+set}" = set; then
-@@ -1822,8 +1810,33 @@
- m68k) base_machine=m68k machine=m68k/m68020 ;;
- m88???) base_machine=m88k machine=m88k/$machine ;;
- m88k) base_machine=m88k machine=m88k/m88100 ;;
--mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
--mips*) base_machine=mips machine=mips/$machine ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CFLAGS $CPPFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
- powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
- powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
- s390) base_machine=s390 machine=s390/s390-32 ;;
-@@ -2170,70 +2183,59 @@
- fi
-
-
--# We need the physical current working directory. We cannot use the
--# "pwd -P" shell builtin since that's not portable. Instead we try to
--# find a pwd binary. Note that assigning to the PWD environment
--# variable might have some interesting side effects, so we don't do
--# that.
--# Extract the first word of "pwd", so it can be a program name with args.
--set dummy pwd; ac_word=$2
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}gcc; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_path_PWD_P+set}" = set; then
-+if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- case $PWD_P in
-- [\\/]* | ?:[\\/]*)
-- ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
-- ;;
-- *)
-- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
-+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-
-- test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
-- ;;
--esac
- fi
--PWD_P=$ac_cv_path_PWD_P
--
--if test -n "$PWD_P"; then
-- echo "$as_me:$LINENO: result: $PWD_P" >&5
--echo "${ECHO_T}$PWD_P" >&6
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
--if test "$PWD_P" = no; then
-- { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
--echo "$as_me: error: *** A pwd binary could not be found." >&2;}
-- { (exit 1); exit 1; }; }
- fi
--
--# These programs are version sensitive.
--
--for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "gcc", so it can be a program name with args.
-+set dummy gcc; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_CC+set}" = set; then
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -2242,7 +2244,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_CC="$ac_prog"
-+ ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -2251,50 +2253,31 @@
-
- fi
- fi
--CC=$ac_cv_prog_CC
--if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- test -n "$CC" && break
--done
--
--if test -z "$CC"; then
-- ac_verc_fail=yes
-+ CC=$ac_ct_CC
- else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $CC" >&5
--echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-- ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.[2-9]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- critic_missing="$critic_missing gcc"
-+ CC="$ac_cv_prog_CC"
- fi
-
--for ac_prog in gnumake gmake make
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}cc; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MAKE+set}" = set; then
-+if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$MAKE"; then
-- ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -2303,7 +2286,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MAKE="$ac_prog"
-+ ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -2312,63 +2295,27 @@
-
- fi
- fi
--MAKE=$ac_cv_prog_MAKE
--if test -n "$MAKE"; then
-- echo "$as_me:$LINENO: result: $MAKE" >&5
--echo "${ECHO_T}$MAKE" >&6
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- test -n "$MAKE" && break
--done
--
--if test -z "$MAKE"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MAKE" >&5
--echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
-- ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.79* | 3.[89]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- critic_missing="$critic_missing make"
--fi
--
--
--
--if test -n "$critic_missing"; then
--{ { echo "$as_me:$LINENO: error:
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions." >&5
--echo "$as_me: error:
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions." >&2;}
-- { (exit 1); exit 1; }; }
- fi
--
--
--for ac_prog in gnumsgfmt gmsgfmt msgfmt
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MSGFMT+set}" = set; then
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$MSGFMT"; then
-- ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -2377,7 +2324,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MSGFMT="$ac_prog"
-+ ac_cv_prog_ac_ct_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -2386,51 +2333,33 @@
-
- fi
- fi
--MSGFMT=$ac_cv_prog_MSGFMT
--if test -n "$MSGFMT"; then
-- echo "$as_me:$LINENO: result: $MSGFMT" >&5
--echo "${ECHO_T}$MSGFMT" >&6
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- test -n "$MSGFMT" && break
--done
--
--if test -z "$MSGFMT"; then
-- ac_verc_fail=yes
-+ CC=$ac_ct_CC
- else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
--echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
-- ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- MSGFMT=: aux_missing="$aux_missing msgfmt"
-+ CC="$ac_cv_prog_CC"
- fi
-
--for ac_prog in makeinfo
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
-+fi
-+if test -z "$CC"; then
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MAKEINFO+set}" = set; then
-+if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$MAKEINFO"; then
-- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
- else
-+ ac_prog_rejected=no
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
- do
-@@ -2438,205 +2367,30 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MAKEINFO="$ac_prog"
-+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $# != 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-+ fi
- fi
- fi
--MAKEINFO=$ac_cv_prog_MAKEINFO
--if test -n "$MAKEINFO"; then
-- echo "$as_me:$LINENO: result: $MAKEINFO" >&5
--echo "${ECHO_T}$MAKEINFO" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$MAKEINFO" && break
--done
--
--if test -z "$MAKEINFO"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
--echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
-- ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 4.*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- MAKEINFO=: aux_missing="$aux_missing makeinfo"
--fi
--
--for ac_prog in sed
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_SED+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$SED"; then
-- ac_cv_prog_SED="$SED" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_SED="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--SED=$ac_cv_prog_SED
--if test -n "$SED"; then
-- echo "$as_me:$LINENO: result: $SED" >&5
--echo "${ECHO_T}$SED" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$SED" && break
--done
--
--if test -z "$SED"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $SED" >&5
--echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
-- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.0[2-9]*|3.[1-9]*|[4-9]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- SED=: aux_missing="$aux_missing sed"
--fi
--
--
--if test "x$with_cvs" != xyes; then
-- for ac_prog in autoconf
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_AUTOCONF+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$AUTOCONF"; then
-- ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_AUTOCONF="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--AUTOCONF=$ac_cv_prog_AUTOCONF
--if test -n "$AUTOCONF"; then
-- echo "$as_me:$LINENO: result: $AUTOCONF" >&5
--echo "${ECHO_T}$AUTOCONF" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$AUTOCONF" && break
--done
--test -n "$AUTOCONF" || AUTOCONF="no"
--
-- case "x$AUTOCONF" in
-- xno|x|x:) AUTOCONF=no ;;
-- *)
-- echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
--echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
--if test "${libc_cv_autoconf_works+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-- libc_cv_autoconf_works=yes
-- else
-- libc_cv_autoconf_works=no
-- fi
--fi
--echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
--echo "${ECHO_T}$libc_cv_autoconf_works" >&6
-- test $libc_cv_autoconf_works = yes || AUTOCONF=no
-- ;;
-- esac
-- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
--fi
--
--ac_ext=c
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_c_compiler_gnu
--if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
--set dummy ${ac_tool_prefix}gcc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_CC="${ac_tool_prefix}gcc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-@@ -2648,52 +2402,12 @@
- fi
-
- fi
--if test -z "$ac_cv_prog_CC"; then
-- ac_ct_CC=$CC
-- # Extract the first word of "gcc", so it can be a program name with args.
--set dummy gcc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_CC"; then
-- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_ac_ct_CC="gcc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--ac_ct_CC=$ac_cv_prog_ac_ct_CC
--if test -n "$ac_ct_CC"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- CC=$ac_ct_CC
--else
-- CC="$ac_cv_prog_CC"
--fi
--
- if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
--set dummy ${ac_tool_prefix}cc; ac_word=$2
-+ for ac_prog in cl
-+ do
-+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
- if test "${ac_cv_prog_CC+set}" = set; then
-@@ -2709,7 +2423,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_CC="${ac_tool_prefix}cc"
-+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -2727,11 +2441,15 @@
- echo "${ECHO_T}no" >&6
- fi
-
-+ test -n "$CC" && break
-+ done
- fi
--if test -z "$ac_cv_prog_CC"; then
-+if test -z "$CC"; then
- ac_ct_CC=$CC
-- # Extract the first word of "cc", so it can be a program name with args.
--set dummy cc; ac_word=$2
-+ for ac_prog in cl
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
- if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-@@ -2747,7 +2465,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_ac_ct_CC="cc"
-+ ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -2764,150 +2482,9 @@
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
--
-- CC=$ac_ct_CC
--else
-- CC="$ac_cv_prog_CC"
--fi
--
--fi
--if test -z "$CC"; then
-- # Extract the first word of "cc", so it can be a program name with args.
--set dummy cc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
--else
-- ac_prog_rejected=no
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-- ac_prog_rejected=yes
-- continue
-- fi
-- ac_cv_prog_CC="cc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--if test $ac_prog_rejected = yes; then
-- # We found a bogon in the path, so make sure we never use it.
-- set dummy $ac_cv_prog_CC
-- shift
-- if test $# != 0; then
-- # We chose a different compiler from the bogus one.
-- # However, it has the same basename, so the bogon will be chosen
-- # first if we set CC to just the basename; use the full file name.
-- shift
-- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-- fi
--fi
--fi
--fi
--CC=$ac_cv_prog_CC
--if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
--fi
--if test -z "$CC"; then
-- if test -n "$ac_tool_prefix"; then
-- for ac_prog in cl
-- do
-- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
--set dummy $ac_tool_prefix$ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--CC=$ac_cv_prog_CC
--if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$CC" && break
-- done
--fi
--if test -z "$CC"; then
-- ac_ct_CC=$CC
-- for ac_prog in cl
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_CC"; then
-- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_ac_ct_CC="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--ac_ct_CC=$ac_cv_prog_ac_ct_CC
--if test -n "$ac_ct_CC"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$ac_ct_CC" && break
--done
-+
-+ test -n "$ac_ct_CC" && break
-+done
-
- CC=$ac_ct_CC
- fi
-@@ -2915,10 +2492,8 @@
- fi
-
-
--test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
--See \`config.log' for more details." >&5
--echo "$as_me: error: no acceptable C compiler found in \$PATH
--See \`config.log' for more details." >&2;}
-+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5
-+echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-
- # Provide some information about the compiler.
-@@ -2949,11 +2524,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
-
- int
- main ()
-@@ -2978,12 +2549,9 @@
- done
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
--See \`config.log' for more details." >&5
--echo "$as_me: error: cannot compute suffix of object files: cannot compile
--See \`config.log' for more details." >&2;}
-+cat conftest.$ac_ext >&5
-+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5
-+echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
-@@ -3000,11 +2568,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
-
- int
- main ()
-@@ -3032,8 +2596,7 @@
- ac_compiler_gnu=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_compiler_gnu=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -3053,11 +2616,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
-
- int
- main ()
-@@ -3082,8 +2641,7 @@
- ac_cv_prog_cc_g=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_cv_prog_cc_g=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -3114,11 +2672,7 @@
- ac_save_CC=$CC
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <stdarg.h>
- #include <stdio.h>
- #include <sys/types.h>
-@@ -3181,8 +2735,7 @@
- break
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- fi
- rm -f conftest.$ac_objext
- done
-@@ -3233,11 +2786,7 @@
- do
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <stdlib.h>
- $ac_declaration
- int
-@@ -3263,18 +2812,13 @@
- :
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- continue
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_declaration
- int
- main ()
-@@ -3299,8 +2843,7 @@
- break
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
- done
-@@ -3313,8 +2856,7 @@
-
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
- ac_ext=c
-@@ -3389,22 +2931,12 @@
- do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
-- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
-+#include "confdefs.h"
-+#include <assert.h>
- Syntax error
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -3427,8 +2959,7 @@
- :
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+ cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
- continue
- fi
-@@ -3438,11 +2969,7 @@
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <ac_nonexistent.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -3466,8 +2993,7 @@
- continue
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+ cat conftest.$ac_ext >&5
- # Passes both tests.
- ac_preproc_ok=:
- break
-@@ -3496,22 +3022,12 @@
- do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
-- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--#ifdef __STDC__
--# include <limits.h>
--#else
--# include <assert.h>
--#endif
-+#include "confdefs.h"
-+#include <assert.h>
- Syntax error
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -3534,8 +3050,7 @@
- :
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+ cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
- continue
- fi
-@@ -3545,11 +3060,7 @@
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <ac_nonexistent.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -3573,8 +3084,7 @@
- continue
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+ cat conftest.$ac_ext >&5
- # Passes both tests.
- ac_preproc_ok=:
- break
-@@ -3587,10 +3097,8 @@
- if $ac_preproc_ok; then
- :
- else
-- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
--See \`config.log' for more details." >&5
--echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
--See \`config.log' for more details." >&2;}
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
-@@ -3600,34 +3108,698 @@
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
--# Was a --with-binutils option given?
--if test -n "$path_binutils"; then
-- # Make absolute; ensure a single trailing slash.
-- path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
-- CC="$CC -B$path_binutils"
-+# We need the C++ compiler only for testing.
-+ac_ext=cc
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+ do
-+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CXX"; then
-+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CXX=$ac_cv_prog_CXX
-+if test -n "$CXX"; then
-+ echo "$as_me:$LINENO: result: $CXX" >&5
-+echo "${ECHO_T}$CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
- fi
--AS=`$CC -print-prog-name=as`
--LD=`$CC -print-prog-name=ld`
--AR=`$CC -print-prog-name=ar`
-
--OBJDUMP=`$CC -print-prog-name=objdump`
-+ test -n "$CXX" && break
-+ done
-+fi
-+if test -z "$CXX"; then
-+ ac_ct_CXX=$CXX
-+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CXX"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CXX="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-
-+fi
-+fi
-+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-+if test -n "$ac_ct_CXX"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-+echo "${ECHO_T}$ac_ct_CXX" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-
--# ranlib has to be treated a bit differently since it might not exist at all.
--ac_ranlib=`$CC -print-prog-name=ranlib`
--if test "x$ac_ranlib" = xranlib; then
--# This extra check has to happen since gcc simply echos the parameter in
--# case it cannot find the value in its own directories.
--if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-+ test -n "$ac_ct_CXX" && break
-+done
-+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-+
-+ CXX=$ac_ct_CXX
-+fi
-+
-+
-+# Provide some information about the compiler.
-+echo "$as_me:$LINENO:" \
-+ "checking for C++ compiler version" >&5
-+ac_compiler=`set X $ac_compile; echo $2`
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
-+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+cat conftest.$ac_ext >&5
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-+GXX=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CXXFLAGS=${CXXFLAGS+set}
-+ac_save_CXXFLAGS=$CXXFLAGS
-+CXXFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cxx_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ ac_cv_prog_cxx_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+cat conftest.$ac_ext >&5
-+ac_cv_prog_cxx_g=no
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
-+if test "$ac_test_CXXFLAGS" = set; then
-+ CXXFLAGS=$ac_save_CXXFLAGS
-+elif test $ac_cv_prog_cxx_g = yes; then
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-g -O2"
-+ else
-+ CXXFLAGS="-g"
-+ fi
-+else
-+ if test "$GXX" = yes; then
-+ CXXFLAGS="-O2"
-+ else
-+ CXXFLAGS=
-+ fi
-+fi
-+for ac_declaration in \
-+ ''\
-+ '#include <stdlib.h>' \
-+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
-+ 'extern "C" void std::exit (int); using std::exit;' \
-+ 'extern "C" void exit (int) throw ();' \
-+ 'extern "C" void exit (int);' \
-+ 'void exit (int);'
-+do
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+#include <stdlib.h>
-+$ac_declaration
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+cat conftest.$ac_ext >&5
-+continue
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+$ac_declaration
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (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
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+cat conftest.$ac_ext >&5
-+fi
-+rm -f conftest.$ac_objext conftest.$ac_ext
-+done
-+rm -f conftest*
-+if test -n "$ac_declaration"; then
-+ echo '#ifdef __cplusplus' >>confdefs.h
-+ echo $ac_declaration >>confdefs.h
-+ echo '#endif' >>confdefs.h
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+# Was a --with-binutils option given?
-+if test -n "$path_binutils"; then
-+ # Make absolute; ensure a single trailing slash.
-+ path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
-+ CC="$CC -B$path_binutils"
-+fi
-+AS=`$CC -print-prog-name=as`
-+LD=`$CC -print-prog-name=ld`
-+AR=`$CC -print-prog-name=ar`
-+
-+OBJDUMP=`$CC -print-prog-name=objdump`
-+
-+
-+# ranlib has to be treated a bit differently since it might not exist at all.
-+ac_ranlib=`$CC -print-prog-name=ranlib`
-+if test "x$ac_ranlib" = xranlib; then
-+# This extra check has to happen since gcc simply echos the parameter in
-+# case it cannot find the value in its own directories.
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+RANLIB=$ac_cv_prog_RANLIB
-+if test -n "$RANLIB"; then
-+ echo "$as_me:$LINENO: result: $RANLIB" >&5
-+echo "${ECHO_T}$RANLIB" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_RANLIB"; then
-+ ac_ct_RANLIB=$RANLIB
-+ # Extract the first word of "ranlib", so it can be a program name with args.
-+set dummy ranlib; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_RANLIB"; then
-+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_RANLIB="ranlib"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-+fi
-+fi
-+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-+if test -n "$ac_ct_RANLIB"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-+echo "${ECHO_T}$ac_ct_RANLIB" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ RANLIB=$ac_ct_RANLIB
-+else
-+ RANLIB="$ac_cv_prog_RANLIB"
-+fi
-+
-+else
-+ RANLIB=$ac_ranlib
-+fi
-+
-+
-+# Determine whether we are using GNU binutils.
-+echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
-+echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
-+if test "${libc_cv_prog_as_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Most GNU programs take a -v and spit out some text including
-+# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-+if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-+ libc_cv_prog_as_gnu=yes
-+else
-+ libc_cv_prog_as_gnu=no
-+fi
-+rm -fr contest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
-+echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
-+rm -f a.out
-+gnu_as=$libc_cv_prog_as_gnu
-+
-+echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
-+echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
-+if test "${libc_cv_prog_ld_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Most GNU programs take a -v and spit out some text including
-+# the word 'GNU'. Some try to read stdin, so give them /dev/null.
-+if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-+ libc_cv_prog_ld_gnu=yes
-+else
-+ libc_cv_prog_ld_gnu=no
-+fi
-+rm -fr contest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
-+echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
-+gnu_ld=$libc_cv_prog_ld_gnu
-+
-+
-+# Accept binutils 2.13 or newer.
-+for ac_prog in $AS
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AS+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AS"; then
-+ ac_cv_prog_AS="$AS" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AS="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AS=$ac_cv_prog_AS
-+if test -n "$AS"; then
-+ echo "$as_me:$LINENO: result: $AS" >&5
-+echo "${ECHO_T}$AS" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AS" && break
-+done
-+
-+if test -z "$AS"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $AS" >&5
-+echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
-+ ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 2.1[3-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ AS=: critic_missing="$critic_missing as"
-+fi
-+
-+for ac_prog in $LD
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_LD+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$LD"; then
-+ ac_cv_prog_LD="$LD" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_LD="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+LD=$ac_cv_prog_LD
-+if test -n "$LD"; then
-+ echo "$as_me:$LINENO: result: $LD" >&5
-+echo "${ECHO_T}$LD" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$LD" && break
-+done
-+
-+if test -z "$LD"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $LD" >&5
-+echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
-+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 2.1[3-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ LD=: critic_missing="$critic_missing ld"
-+fi
-+
-+
-+# We need the physical current working directory. We cannot use the
-+# "pwd -P" shell builtin since that's not portable. Instead we try to
-+# find a pwd binary. Note that assigning to the PWD environment
-+# variable might have some interesting side effects, so we don't do
-+# that.
-+# Extract the first word of "pwd", so it can be a program name with args.
-+set dummy pwd; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_PWD_P+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PWD_P in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
-+ ;;
-+esac
-+fi
-+PWD_P=$ac_cv_path_PWD_P
-+
-+if test -n "$PWD_P"; then
-+ echo "$as_me:$LINENO: result: $PWD_P" >&5
-+echo "${ECHO_T}$PWD_P" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$PWD_P" = no; then
-+ { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
-+echo "$as_me: error: *** A pwd binary could not be found." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# These programs are version sensitive.
-+
-+for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CC" && break
-+done
-+
-+if test -z "$CC"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $CC" >&5
-+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.[2-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing gcc"
-+fi
-+
-+for ac_prog in gnumake gmake make
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_RANLIB+set}" = set; then
-+if test "${ac_cv_prog_MAKE+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$RANLIB"; then
-- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+ if test -n "$MAKE"; then
-+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -3636,7 +3808,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-+ ac_cv_prog_MAKE="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -3645,27 +3817,51 @@
-
- fi
- fi
--RANLIB=$ac_cv_prog_RANLIB
--if test -n "$RANLIB"; then
-- echo "$as_me:$LINENO: result: $RANLIB" >&5
--echo "${ECHO_T}$RANLIB" >&6
-+MAKE=$ac_cv_prog_MAKE
-+if test -n "$MAKE"; then
-+ echo "$as_me:$LINENO: result: $MAKE" >&5
-+echo "${ECHO_T}$MAKE" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-+ test -n "$MAKE" && break
-+done
-+
-+if test -z "$MAKE"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MAKE" >&5
-+echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
-+ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.79* | 3.[89]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
- fi
--if test -z "$ac_cv_prog_RANLIB"; then
-- ac_ct_RANLIB=$RANLIB
-- # Extract the first word of "ranlib", so it can be a program name with args.
--set dummy ranlib; ac_word=$2
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing make"
-+fi
-+
-+
-+for ac_prog in gnumsgfmt gmsgfmt msgfmt
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-+if test "${ac_cv_prog_MSGFMT+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$ac_ct_RANLIB"; then
-- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-+ if test -n "$MSGFMT"; then
-+ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -3674,86 +3870,59 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_ac_ct_RANLIB="ranlib"
-+ ac_cv_prog_MSGFMT="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-
-- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
- fi
- fi
--ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
--if test -n "$ac_ct_RANLIB"; then
-- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
--echo "${ECHO_T}$ac_ct_RANLIB" >&6
-+MSGFMT=$ac_cv_prog_MSGFMT
-+if test -n "$MSGFMT"; then
-+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
-+echo "${ECHO_T}$MSGFMT" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- RANLIB=$ac_ct_RANLIB
--else
-- RANLIB="$ac_cv_prog_RANLIB"
--fi
--
--else
-- RANLIB=$ac_ranlib
--fi
--
-+ test -n "$MSGFMT" && break
-+done
-
--# Determine whether we are using GNU binutils.
--echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
--echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
--if test "${libc_cv_prog_as_gnu+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- # Most GNU programs take a -v and spit out some text including
--# the word 'GNU'. Some try to read stdin, so give them /dev/null.
--if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-- libc_cv_prog_as_gnu=yes
-+if test -z "$MSGFMT"; then
-+ ac_verc_fail=yes
- else
-- libc_cv_prog_as_gnu=no
--fi
--rm -fr contest*
--fi
--echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
--echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
--rm -f a.out
--gnu_as=$libc_cv_prog_as_gnu
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
-+echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
-+ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
--echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
--echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
--if test "${libc_cv_prog_ld_gnu+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- # Most GNU programs take a -v and spit out some text including
--# the word 'GNU'. Some try to read stdin, so give them /dev/null.
--if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
-- libc_cv_prog_ld_gnu=yes
--else
-- libc_cv_prog_ld_gnu=no
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
- fi
--rm -fr contest*
-+if test $ac_verc_fail = yes; then
-+ MSGFMT=: aux_missing="$aux_missing msgfmt"
- fi
--echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
--echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
--gnu_ld=$libc_cv_prog_ld_gnu
-
--
--# Accept binutils 2.13 or newer.
--for ac_prog in $AS
-+for ac_prog in makeinfo
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_AS+set}" = set; then
-+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$AS"; then
-- ac_cv_prog_AS="$AS" # Let the user override the test.
-+ if test -n "$MAKEINFO"; then
-+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -3762,7 +3931,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_AS="$ac_prog"
-+ ac_cv_prog_MAKEINFO="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -3771,28 +3940,28 @@
-
- fi
- fi
--AS=$ac_cv_prog_AS
--if test -n "$AS"; then
-- echo "$as_me:$LINENO: result: $AS" >&5
--echo "${ECHO_T}$AS" >&6
-+MAKEINFO=$ac_cv_prog_MAKEINFO
-+if test -n "$MAKEINFO"; then
-+ echo "$as_me:$LINENO: result: $MAKEINFO" >&5
-+echo "${ECHO_T}$MAKEINFO" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- test -n "$AS" && break
-+ test -n "$MAKEINFO" && break
- done
-
--if test -z "$AS"; then
-+if test -z "$MAKEINFO"; then
- ac_verc_fail=yes
- else
- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $AS" >&5
--echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
-- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
-+echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
-+ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 2.1[3-9]*)
-+ 4.*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
-@@ -3801,20 +3970,20 @@
- echo "${ECHO_T}$ac_prog_version" >&6
- fi
- if test $ac_verc_fail = yes; then
-- AS=: critic_missing=t
-+ MAKEINFO=: aux_missing="$aux_missing makeinfo"
- fi
-
--for ac_prog in $LD
-+for ac_prog in sed
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
- echo "$as_me:$LINENO: checking for $ac_word" >&5
- echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_LD+set}" = set; then
-+if test "${ac_cv_prog_SED+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if test -n "$LD"; then
-- ac_cv_prog_LD="$LD" # Let the user override the test.
-+ if test -n "$SED"; then
-+ ac_cv_prog_SED="$SED" # Let the user override the test.
- else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in $PATH
-@@ -3823,7 +3992,7 @@
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_LD="$ac_prog"
-+ ac_cv_prog_SED="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-@@ -3832,28 +4001,28 @@
-
- fi
- fi
--LD=$ac_cv_prog_LD
--if test -n "$LD"; then
-- echo "$as_me:$LINENO: result: $LD" >&5
--echo "${ECHO_T}$LD" >&6
-+SED=$ac_cv_prog_SED
-+if test -n "$SED"; then
-+ echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&6
- else
- echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
- fi
-
-- test -n "$LD" && break
-+ test -n "$SED" && break
- done
-
--if test -z "$LD"; then
-+if test -z "$SED"; then
- ac_verc_fail=yes
- else
- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $LD" >&5
--echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
-- ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
-+ echo "$as_me:$LINENO: checking version of $SED" >&5
-+echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
-+ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 2.1[3-9]*)
-+ 3.0[2-9]*|3.[1-9]*|[4-9]*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
-@@ -3862,10 +4031,83 @@
- echo "${ECHO_T}$ac_prog_version" >&6
- fi
- if test $ac_verc_fail = yes; then
-- LD=: critic_missing=t
-+ SED=: aux_missing="$aux_missing sed"
- fi
-
-
-+for ac_prog in autoconf
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AUTOCONF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AUTOCONF"; then
-+ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AUTOCONF="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AUTOCONF=$ac_cv_prog_AUTOCONF
-+if test -n "$AUTOCONF"; then
-+ echo "$as_me:$LINENO: result: $AUTOCONF" >&5
-+echo "${ECHO_T}$AUTOCONF" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AUTOCONF" && break
-+done
-+test -n "$AUTOCONF" || AUTOCONF="no"
-+
-+case "x$AUTOCONF" in
-+xno|x|x:) AUTOCONF=no ;;
-+*)
-+ echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
-+echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
-+if test "${libc_cv_autoconf_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-+ libc_cv_autoconf_works=yes
-+ else
-+ libc_cv_autoconf_works=no
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
-+echo "${ECHO_T}$libc_cv_autoconf_works" >&6
-+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
-+ ;;
-+esac
-+if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
-+ # If --without-cvs they probably won't change configure.in, so no complaints.
-+ aux_missing="$aux_missing autoconf"
-+fi
-+
-+test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&5
-+echo "$as_me: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&2;}
-+ { (exit 1); exit 1; }; }
-+
- test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
- *** These auxiliary programs are missing or incompatible versions:$aux_missing
- *** some features will be disabled.
-@@ -3899,7 +4141,7 @@
- char b;
- void c(void) {}
- EOF
--$CC $CFLAGS -c conftest.c
-+$CC $CFLAGS $CPPFLAGS -c conftest.c
- $AR cr conftest.a conftest.o
- cp conftest.a conftest2.a
- $RANLIB conftest.a
-@@ -4298,11 +4540,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #define __need_size_t
- #define __need_wchar_t
- #include <stddef.h>
-@@ -4335,8 +4573,7 @@
- libc_cv_friendly_stddef=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- libc_cv_friendly_stddef=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -4357,7 +4594,12 @@
- #include "confdefs.h"
- /* Nothing whatsoever. */
- EOF
--if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
-+if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5'
-+ { (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
- libc_cv_need_minus_P=no
- else
- libc_cv_need_minus_P=yes
-@@ -4380,7 +4622,12 @@
- .text
- EOF
- libc_cv_dot_text=
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_dot_text=.text
- fi
- rm -f conftest*
-@@ -4406,7 +4653,12 @@
- ${ac_globl} foo
- foo:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_global_directive=${ac_globl}
- fi
- rm -f conftest*
-@@ -4441,9 +4693,10 @@
- # (but it doesn't work), so we must do a linking check to be sure.
- cat > conftest1.c <<\EOF
- extern int glibc_conftest_frobozz;
--main () { printf ("%d\n", glibc_conftest_frobozz); }
-+void _start() { glibc_conftest_frobozz = 1; }
- EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-+ -nostartfiles -nostdlib \
- -o conftest conftest.s conftest1.c 1>&5 2>&5; then
- libc_cv_asm_set_directive=yes
- else
-@@ -4475,7 +4728,12 @@
- foo:
- .byte 1
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_type_prefix=${ac_try_prefix}
- fi
- rm -f conftest*
-@@ -4511,7 +4769,7 @@
- _sym:
- .symver _sym,sym@VERS
- EOF
--if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then
-+if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
- libc_cv_asm_symver_directive=yes
- else
- libc_cv_asm_symver_directive=no
-@@ -4540,10 +4798,11 @@
- global: sym;
- } VERS_1;
- EOF
-- if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then
-- if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-- -nostartfiles -nostdlib
-- -Wl,--version-script,conftest.map
-+ if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
-+ if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared
-+ -o conftest.so conftest.o
-+ -nostartfiles -nostdlib
-+ -Wl,--version-script,conftest.map
- 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
-@@ -4596,7 +4855,7 @@
- .section foo_section
- .previous
- EOF
-- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4625,7 +4884,7 @@
- .pushsection foo_section
- .popsection
- EOF
-- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4657,7 +4916,7 @@
- .hidden bar
- bar:
- EOF
-- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4692,7 +4951,12 @@
- int bar __attribute__ ((visibility ("protected"))) = 1;
- EOF
- libc_cv_visibility_attribute=no
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- if grep '\.protected.*bar' conftest.s >/dev/null; then
- libc_cv_visibility_attribute=yes
-@@ -4724,7 +4988,12 @@
- int bar (int x) { return x; }
- EOF
- libc_cv_broken_visibility_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
-+ { (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
- if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
- libc_cv_broken_visibility_attribute=no
- fi
-@@ -4756,7 +5025,12 @@
- int dfoo = 1;
- EOF
- libc_cv_broken_alias_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
-@@ -4782,7 +5056,7 @@
- else
- echo "int i;" > conftest.c
- libc_cv_have_sdata_section=no
-- if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
-+ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
- | grep '\.sdata' >/dev/null; then
- libc_cv_have_sdata_section=yes
- fi
-@@ -4810,7 +5084,7 @@
- int foo (void) { return 1; }
- int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
- EOF
-- if { ac_try='${CC-cc} -o conftest conftest.c
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
- -static -nostartfiles -nostdlib 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
-@@ -4846,7 +5120,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodelete 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -4873,7 +5148,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodlopen 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -4900,7 +5176,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,initfirst 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -4927,7 +5204,9 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -Wl,-Bgroup -nostdlib 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -4944,6 +5223,43 @@
- echo "${ECHO_T}$libc_cv_Bgroup" >&6
-
-
-+ ASFLAGS_config=
-+ echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
-+echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6
-+if test "${libc_cv_as_noexecstack+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+void foo (void) { }
-+EOF
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
-+ -S -o conftest.s conftest.c 1>&5'
-+ { (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); }; } \
-+ && grep -q .note.GNU-stack conftest.s \
-+ && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
-+ -c -o conftest.o conftest.s 1>&5'
-+ { (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
-+ libc_cv_as_noexecstack=yes
-+ else
-+ libc_cv_as_noexecstack=no
-+ fi
-+ rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
-+echo "${ECHO_T}$libc_cv_as_noexecstack" >&6
-+ if test $libc_cv_as_noexecstack = yes; then
-+ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-+ fi
-+
- echo "$as_me:$LINENO: checking for -z combreloc" >&5
- echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6
- if test "${libc_cv_z_combreloc+set}" = set; then
-@@ -4954,7 +5270,8 @@
- extern int mumble;
- int foo (void) { return bar (mumble); }
- EOF
-- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostdlib -nostartfiles
- -Wl,-z,combreloc 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -4992,11 +5309,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
-
- int
- main ()
-@@ -5023,8 +5336,7 @@
- libc_cv_have_initfini=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- libc_cv_have_initfini=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -5084,11 +5396,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- asm ("_glibc_foobar:");
- int
- main ()
-@@ -5113,8 +5421,7 @@
- libc_cv_asm_underscores=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- libc_cv_asm_underscores=no
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-@@ -5128,7 +5435,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 5131 "configure"
-+#line $LINENO "configure"
- #include "confdefs.h"
- void underscore_test(void) {
- return; }
-@@ -5180,7 +5487,12 @@
- .weak foo
- .weak bar; bar = foo
- EOF
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_weak_directive=yes
- else
- libc_cv_asm_weak_directive=no
-@@ -5205,7 +5517,12 @@
- ${libc_cv_asm_global_directive} baz
- baz:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_weakext_directive=yes
- else
- libc_cv_asm_weakext_directive=no
-@@ -5246,7 +5563,7 @@
- cat > conftest.s <<EOF
- nop ; is_old_puffin
- EOF
-- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -5272,6 +5589,92 @@
- ;;
- esac
-
-+echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
-+echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6
-+if test "${libc_cv_asm_cfi_directives+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<EOF
-+ .text
-+ .type func,@function
-+func:
-+ .cfi_startproc
-+ .cfi_remember_state
-+ .cfi_rel_offset 1, 0
-+ .cfi_endproc
-+EOF
-+if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
-+ { (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
-+ libc_cv_asm_cfi_directives=yes
-+else
-+ libc_cv_asm_cfi_directives=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
-+echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6
-+if test $libc_cv_asm_cfi_directives = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_ASM_CFI_DIRECTIVES 1
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
-+echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
-+if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.S <<EOF
-+#include "confdefs.h"
-+
-+/* comment on
-+ two lines */
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+foo:
-+ /* Unfortunately this test only works for a real instruction,
-+ not for any of the machine-independent pseudo-ops.
-+ So we just have to assume everybody has a "nop". */
-+ nop
-+ /* comment */
-+ nop
-+ /* comment */
-+ nop
-+EOF
-+if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
-+ { (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_pattern='conftest\.S'
-+ { ac_try='readelf --debug-dump=line conftest.o |
-+ grep $ac_pattern 1>&5'
-+ { (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
-+ libc_cv_cpp_asm_debuginfo=yes
-+else
-+ libc_cv_cpp_asm_debuginfo=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
-+echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
-+if test $libc_cv_cpp_asm_debuginfo = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_CPP_ASM_DEBUGINFO 1
-+_ACEOF
-+
-+fi
-+
- echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
- echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6
- if test "${libc_cv_ld_no_whole_archive+set}" = set; then
-@@ -5282,7 +5685,7 @@
- int __eh_pc;
- __throw () {}
- EOF
--if { ac_try='${CC-cc} $CFLAGS
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -nostdlib -nostartfiles -Wl,--no-whole-archive
- -o conftest conftest.c 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -5312,7 +5715,7 @@
- int __eh_pc;
- __throw () {}
- EOF
--if { ac_try='${CC-cc} $CFLAGS
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -nostdlib -nostartfiles -fexceptions
- -o conftest conftest.c 1>&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-@@ -5342,11 +5745,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- int tester(int x) { asm ("" : : : "cc"); return x & 123; }
- int
- main ()
-@@ -5371,8 +5770,7 @@
- libc_cv_c_asmcr0_bug='no'
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- libc_cv_c_asmcr0_bug='yes'
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -5393,7 +5791,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5396 "configure"
-+#line $LINENO "configure"
- static char *__EH_FRAME_BEGIN__;
- _start ()
- {
-@@ -5419,28 +5817,24 @@
- __bzero () {}
- dl_iterate_phdr () {}
- EOF
--if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
-- -nostdlib -nostartfiles
-- -o conftest conftest.c -lgcc >&5'
-+libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
-+ $LDFLAGS \
-+ -nostdlib -nostartfiles -o conftest conftest.c \
-+ -lgcc"
-+# Some platforms' specs put -lgcc first. The second one doesn't hurt.
-+if { ac_try='$libc_unwind_check >&5'
- { (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
-- libc_cv_gcc_dwarf2_unwind_info=static
--else
-- libc_cv_gcc_dwarf2_unwind_info=no
--fi
--# Some platforms' specs put -lgcc first. The second one doesn't hurt.
--libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
-- -nostdlib -nostartfiles -o conftest conftest.c \
-- -lgcc -lgcc_eh -lgcc"
--if { ac_try='$libc_unwind_check >&5'
-+ (exit $ac_status); }; } ||
-+ { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5'
- { (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
-+ (exit $ac_status); }; }
-+then
- if $libc_unwind_check -v 2>&1 >/dev/null \
- | grep -q -- --eh-frame-hdr; then
- libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
-@@ -5451,8 +5845,8 @@
- libc_cv_gcc_dwarf2_unwind_info=no
- fi
- if test $libc_cv_gcc_dwarf2_unwind_info = no; then
-- if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
-- -nostdlib -nostartfiles
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
-+ $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
-@@ -5493,14 +5887,14 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5496 "configure"
-+#line $LINENO "configure"
- int foo (int a)
- {
- a = __builtin_expect (a, 10);
- return a == 10 ? 0 : 1;
- }
- EOF
--if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
-@@ -5555,13 +5949,47 @@
-
- fi
-
-+echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
-+echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6
-+if test "${libc_cv_gcc_builtin_redirection+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<\EOF
-+extern char *strstr (const char *, const char *) __asm ("my_strstr");
-+char *foo (const char *a, const char *b)
-+{
-+ return __builtin_strstr (a, b);
-+}
-+EOF
-+if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null'
-+ { (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
-+ libc_cv_gcc_builtin_redirection=yes
-+else
-+ libc_cv_gcc_builtin_redirection=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
-+echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6
-+if test "$libc_cv_gcc_builtin_redirection" = yes ; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_BUILTIN_REDIRECTION 1
-+_ACEOF
-+
-+fi
-+
- echo "$as_me:$LINENO: checking for local label subtraction" >&5
- echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6
- if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5564 "configure"
-+#line $LINENO "configure"
- int foo (int a)
- {
- static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-@@ -5573,7 +6001,7 @@
- return 2;
- }
- EOF
--if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
-@@ -5604,7 +6032,7 @@
- cat > conftest.c <<\EOF
- __thread int a = 42;
- EOF
-- if { ac_try='${CC-cc} $CFLAGS -c conftest.c >&5'
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -5637,7 +6065,7 @@
- cat > conftest.c <<\EOF
- extern __thread int a __attribute__((tls_model ("initial-exec")));
- EOF
-- if { ac_try='${CC-cc} $CFLAGS -S -Werror conftest.c >&5'
-+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
-@@ -5670,11 +6098,7 @@
- LIBS="$LIBS -lgd -lpng -lz -lm"
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <gd.h>
- int
- main ()
-@@ -5699,8 +6123,7 @@
- LIBGD=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- LIBGD=no
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-@@ -5737,54 +6160,43 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #include <float.h>
-
--int
--main ()
--{
--
-- ;
-- return 0;
--}
- _ACEOF
--rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 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); }; }; then
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
- ac_cv_header_stdc=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--ac_cv_header_stdc=no
-+ cat conftest.$ac_ext >&5
-+ ac_cv_header_stdc=no
- fi
--rm -f conftest.$ac_objext conftest.$ac_ext
-+rm -f conftest.err conftest.$ac_ext
-
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <string.h>
-
- _ACEOF
-@@ -5802,11 +6214,7 @@
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <stdlib.h>
-
- _ACEOF
-@@ -5827,18 +6235,13 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- #include <ctype.h>
- #if ((' ' & 0x0FF) == 0x020)
- # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
- # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
- #else
--# define ISLOWER(c) \
-- (('a' <= (c) && (c) <= 'i') \
-+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
- # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-@@ -5871,8 +6274,7 @@
- else
- echo "$as_me: program exited with status $ac_status" >&5
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ( exit $ac_status )
- ac_cv_header_stdc=no
- fi
-@@ -5911,11 +6313,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
-
- #include <$ac_header>
-@@ -5935,8 +6333,7 @@
- eval "$as_ac_Header=yes"
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -5960,11 +6357,7 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -5992,8 +6385,7 @@
- ac_cv_type_long_double=yes
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_cv_type_long_double=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -6015,11 +6407,7 @@
- # Depending upon the size, compute the lo and hi bounds.
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -6047,11 +6435,7 @@
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -6078,8 +6462,7 @@
- ac_hi=$ac_mid; break
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
-@@ -6091,15 +6474,10 @@
- done
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -6127,11 +6505,7 @@
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -6158,8 +6532,7 @@
- ac_lo=$ac_mid; break
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
-@@ -6171,8 +6544,7 @@
- done
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_lo= ac_hi=
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -6183,11 +6555,7 @@
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- int
- main ()
-@@ -6214,35 +6582,26 @@
- ac_hi=$ac_mid
- else
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ac_lo=`expr '(' $ac_mid ')' + 1`
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
- done
- case $ac_lo in
- ?*) ac_cv_sizeof_long_double=$ac_lo;;
--'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
--See \`config.log' for more details." >&5
--echo "$as_me: error: cannot compute sizeof (long double), 77
--See \`config.log' for more details." >&2;}
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5
-+echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
- else
- if test "$cross_compiling" = yes; then
-- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
--See \`config.log' for more details." >&5
--echo "$as_me: error: cannot run test program while cross compiling
--See \`config.log' for more details." >&2;}
-+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5
-+echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
-+#include "confdefs.h"
- $ac_includes_default
- long longval () { return (long) (sizeof (long double)); }
- unsigned long ulongval () { return (long) (sizeof (long double)); }
-@@ -6290,13 +6649,10 @@
- else
- echo "$as_me: program exited with status $ac_status" >&5
- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
-+cat conftest.$ac_ext >&5
- ( exit $ac_status )
--{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
--See \`config.log' for more details." >&5
--echo "$as_me: error: cannot compute sizeof (long double), 77
--See \`config.log' for more details." >&2;}
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5
-+echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;}
- { (exit 1); exit 1; }; }
- fi
- rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-@@ -6335,8 +6691,8 @@
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
-- echo "$as_me:$LINENO: result: running configure fragment for $dest" >&5
--echo "${ECHO_T}running configure fragment for $dest" >&6
-+ echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
-+echo "${ECHO_T}running configure fragment for $dir" >&6
- . $dest/configure
- fi
-
-@@ -6461,6 +6817,7 @@
-
-
-
-+
- if test $gnu_ld = yes; then
- cat >>confdefs.h <<\_ACEOF
- #define HAVE_GNU_LD 1
-@@ -6594,7 +6951,7 @@
- t end
- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- : end' >>confcache
--if diff $cache_file confcache >/dev/null 2>&1; then :; else
-+if cmp -s $cache_file confcache; then :; else
- if test -w $cache_file; then
- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
- cat confcache >$cache_file
-@@ -6654,8 +7011,6 @@
- # configure, is in config.log if it exists.
-
- debug=false
--ac_cs_recheck=false
--ac_cs_silent=false
- SHELL=\${CONFIG_SHELL-$SHELL}
- _ACEOF
-
-@@ -6690,10 +7045,7 @@
- PS4='+ '
-
- # NLS nuisances.
--for as_var in \
-- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-- LC_TELEPHONE LC_TIME
-+for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
- do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
-@@ -6739,15 +7091,15 @@
-
- # The user is always right.
- if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ echo "#! /bin/sh" >conftest.sh
-+ echo "exit 0" >>conftest.sh
-+ chmod +x conftest.sh
-+ if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
-- rm -f conf$$.sh
-+ rm -f conftest.sh
- fi
-
-
-@@ -6910,7 +7262,7 @@
- cat >&5 <<_CSEOF
-
- This file was extended by GNU C Library $as_me (see version.h), which was
--generated by GNU Autoconf 2.57. Invocation command line was
-+generated by GNU Autoconf 2.54. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
-@@ -6950,7 +7302,6 @@
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
-- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
-@@ -6973,7 +7324,7 @@
- cat >>$CONFIG_STATUS <<_ACEOF
- ac_cs_version="\\
- GNU C Library config.status (see version.h)
--configured by $0, generated by GNU Autoconf 2.57,
-+configured by $0, generated by GNU Autoconf 2.54,
- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-@@ -7010,9 +7361,12 @@
- case $ac_option in
- # Handling of the options.
- _ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-- ac_cs_recheck=: ;;
-+ echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
-+ exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
- --version | --vers* | -V )
- echo "$ac_cs_version"; exit 0 ;;
- --he | --h)
-@@ -7034,9 +7388,6 @@
- $ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
- ac_need_defaults=false;;
-- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-- | -silent | --silent | --silen | --sile | --sil | --si | --s)
-- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-@@ -7051,20 +7402,6 @@
- shift
- done
-
--ac_configure_extra_args=
--
--if $ac_cs_silent; then
-- exec 6>/dev/null
-- ac_configure_extra_args="$ac_configure_extra_args --silent"
--fi
--
--_ACEOF
--cat >>$CONFIG_STATUS <<_ACEOF
--if \$ac_cs_recheck; then
-- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
--fi
--
- _ACEOF
-
- cat >>$CONFIG_STATUS <<_ACEOF
-@@ -7105,9 +7442,6 @@
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
- fi
-
--# Have a temporary directory for convenience. Make it in the build tree
--# simply because there is no reason to put it here, and in addition,
--# creating and moving files from /tmp can sometimes cause problems.
- # Create a temporary directory, and hook for its removal unless debugging.
- $debug ||
- {
-@@ -7116,17 +7450,17 @@
- }
-
- # Create a (secure) tmp directory for tmp files.
--
-+: ${TMPDIR=/tmp}
- {
-- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
- } ||
- {
-- tmp=./confstat$$-$RANDOM
-+ tmp=$TMPDIR/cs$$-$RANDOM
- (umask 077 && mkdir $tmp)
- } ||
- {
-- echo "$me: cannot create a temporary directory in ." >&2
-+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
- }
-
-@@ -7176,6 +7510,7 @@
- s,@LIBS@,$LIBS,;t t
- s,@with_fp@,$with_fp,;t t
- s,@with_cvs@,$with_cvs,;t t
-+s,@enable_check_abi@,$enable_check_abi,;t t
- s,@oldest_abi@,$oldest_abi,;t t
- s,@subdirs@,$subdirs,;t t
- s,@force_install@,$force_install,;t t
-@@ -7194,13 +7529,7 @@
- s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
- s,@INSTALL_DATA@,$INSTALL_DATA,;t t
- s,@LN_S@,$LN_S,;t t
--s,@PWD_P@,$PWD_P,;t t
- s,@CC@,$CC,;t t
--s,@MAKE@,$MAKE,;t t
--s,@MSGFMT@,$MSGFMT,;t t
--s,@MAKEINFO@,$MAKEINFO,;t t
--s,@SED@,$SED,;t t
--s,@AUTOCONF@,$AUTOCONF,;t t
- s,@CFLAGS@,$CFLAGS,;t t
- s,@LDFLAGS@,$LDFLAGS,;t t
- s,@CPPFLAGS@,$CPPFLAGS,;t t
-@@ -7209,6 +7538,9 @@
- s,@BUILD_CC@,$BUILD_CC,;t t
- s,@cross_compiling@,$cross_compiling,;t t
- s,@CPP@,$CPP,;t t
-+s,@CXX@,$CXX,;t t
-+s,@CXXFLAGS@,$CXXFLAGS,;t t
-+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
- s,@AR@,$AR,;t t
- s,@OBJDUMP@,$OBJDUMP,;t t
- s,@RANLIB@,$RANLIB,;t t
-@@ -7216,6 +7548,12 @@
- s,@MIG@,$MIG,;t t
- s,@AS@,$AS,;t t
- s,@LD@,$LD,;t t
-+s,@PWD_P@,$PWD_P,;t t
-+s,@MAKE@,$MAKE,;t t
-+s,@MSGFMT@,$MSGFMT,;t t
-+s,@MAKEINFO@,$MAKEINFO,;t t
-+s,@SED@,$SED,;t t
-+s,@AUTOCONF@,$AUTOCONF,;t t
- s,@CCVERSION@,$CCVERSION,;t t
- s,@SYSINCLUDES@,$SYSINCLUDES,;t t
- s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t
-@@ -7235,8 +7573,10 @@
- s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
- s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t
- s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
-+s,@ASFLAGS_config@,$ASFLAGS_config,;t t
- s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
- s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
-+s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
- s,@no_whole_archive@,$no_whole_archive,;t t
- s,@exceptions@,$exceptions,;t t
- s,@LIBGD@,$LIBGD,;t t
-@@ -7251,6 +7591,7 @@
- s,@libc_cv_localedir@,$libc_cv_localedir,;t t
- s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t
- s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t
-+s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t
- s,@use_ldconfig@,$use_ldconfig,;t t
- s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t
- s,@gnu_ld@,$gnu_ld,;t t
-@@ -7649,7 +7990,7 @@
- cat $tmp/in >>$tmp/config.h
- rm -f $tmp/in
- if test x"$ac_file" != x-; then
-- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-+ if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
- echo "$as_me: $ac_file is unchanged" >&6;}
- else
-@@ -7782,11 +8123,8 @@
- # need to make the FD available again.
- if test "$no_create" != yes; then
- ac_cs_success=:
-- ac_config_status_args=
-- test "$silent" = yes &&
-- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
-- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-+ $SHELL $CONFIG_STATUS || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
---- glibc-2.3.2/configure.in 2003-02-25 19:46:31.000000000 -0500
-+++ glibc-2.3.2/configure.in 2003-08-21 08:36:58.000000000 -0400
-@@ -113,6 +113,14 @@
- [enable_sanity=$enableval],
- [enable_sanity=yes])
-
-+AC_SUBST(enable_check_abi)
-+AC_ARG_ENABLE([check-abi],
-+ AC_HELP_STRING([--enable-check-abi],
-+ [do "make check-abi" in "make check" (no/warn/yes)
-+ @<:@default=no@:>@]),
-+ [enable_check_abi=$enableval],
-+ [enable_check_abi=no])
-+
- dnl Arguments to enable or disable building the static, shared, profiled,
- dnl and -fomit-frame-pointer libraries.
- dnl I've disabled this for now since we cannot build glibc without static
-@@ -378,8 +386,33 @@
- m68k) base_machine=m68k machine=m68k/m68020 ;;
- m88???) base_machine=m88k machine=m88k/$machine ;;
- m88k) base_machine=m88k machine=m88k/m88100 ;;
--mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
--mips*) base_machine=mips machine=mips/$machine ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CFLAGS $CPPFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
- powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
- powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
- s390) base_machine=s390 machine=s390/s390-32 ;;
-@@ -637,6 +670,25 @@
- fi
- AC_PROG_LN_S
-
-+AC_PROG_CC
-+if test $host != $build; then
-+ AC_CHECK_PROGS(BUILD_CC, gcc cc)
-+fi
-+AC_SUBST(cross_compiling)
-+AC_PROG_CPP
-+# We need the C++ compiler only for testing.
-+AC_PROG_CXX
-+LIBC_PROG_BINUTILS
-+AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
-+
-+# Accept binutils 2.13 or newer.
-+AC_CHECK_PROG_VER(AS, $AS, --version,
-+ [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-+ [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
-+AC_CHECK_PROG_VER(LD, $LD, --version,
-+ [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-+ [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
-+
- # We need the physical current working directory. We cannot use the
- # "pwd -P" shell builtin since that's not portable. Instead we try to
- # find a pwd binary. Note that assigning to the PWD environment
-@@ -656,14 +708,6 @@
- [GNU Make[^0-9]*\([0-9][0-9.]*\)],
- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
-
--
--if test -n "$critic_missing"; then
--AC_MSG_ERROR([
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions.])
--fi
--
--
- AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
- [GNU gettext.* \([0-9]*\.[0-9.]*\)],
- [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
-@@ -677,40 +721,28 @@
- [3.0[2-9]*|3.[1-9]*|[4-9]*],
- SED=: aux_missing="$aux_missing sed")
-
--if test "x$with_cvs" != xyes; then
-- AC_CHECK_PROGS(AUTOCONF, autoconf, no)
-- case "x$AUTOCONF" in
-- xno|x|x:) AUTOCONF=no ;;
-- *)
-- AC_CACHE_CHECK(dnl
-+AC_CHECK_PROGS(AUTOCONF, autoconf, no)
-+case "x$AUTOCONF" in
-+xno|x|x:) AUTOCONF=no ;;
-+*)
-+ AC_CACHE_CHECK(dnl
- whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
-- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-- libc_cv_autoconf_works=yes
-- else
-- libc_cv_autoconf_works=no
-- fi])
-- test $libc_cv_autoconf_works = yes || AUTOCONF=no
-- ;;
-- esac
-- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
--fi
--
--AC_PROG_CC
--if test $host != $build; then
-- AC_CHECK_PROGS(BUILD_CC, gcc cc)
-+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-+ libc_cv_autoconf_works=yes
-+ else
-+ libc_cv_autoconf_works=no
-+ fi])
-+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
-+ ;;
-+esac
-+if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
-+ # If --without-cvs they probably won't change configure.in, so no complaints.
-+ aux_missing="$aux_missing autoconf"
- fi
--AC_SUBST(cross_compiling)
--AC_PROG_CPP
--LIBC_PROG_BINUTILS
--AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
-
--# Accept binutils 2.13 or newer.
--AC_CHECK_PROG_VER(AS, $AS, --version,
-- [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-- [2.1[3-9]*], AS=: critic_missing=t)
--AC_CHECK_PROG_VER(LD, $LD, --version,
-- [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-- [2.1[3-9]*], LD=: critic_missing=t)
-+test -n "$critic_missing" && AC_MSG_ERROR([
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions.])
-
- test -n "$aux_missing" && AC_MSG_WARN([
- *** These auxiliary programs are missing or incompatible versions:$aux_missing
-@@ -737,7 +769,7 @@
- char b;
- void c(void) {}
- EOF
--$CC $CFLAGS -c conftest.c
-+$CC $CFLAGS $CPPFLAGS -c conftest.c
- $AR cr conftest.a conftest.o
- cp conftest.a conftest2.a
- $RANLIB conftest.a
-@@ -889,7 +921,7 @@
- #include "confdefs.h"
- /* Nothing whatsoever. */
- EOF
--if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_need_minus_P=no
- else
- libc_cv_need_minus_P=yes
-@@ -906,7 +938,7 @@
- .text
- EOF
- libc_cv_dot_text=
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_dot_text=.text
- fi
- rm -f conftest*])
-@@ -925,7 +957,7 @@
- ${ac_globl} foo
- foo:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_global_directive=${ac_globl}
- fi
- rm -f conftest*
-@@ -948,9 +980,10 @@
- # (but it doesn't work), so we must do a linking check to be sure.
- cat > conftest1.c <<\EOF
- extern int glibc_conftest_frobozz;
--main () { printf ("%d\n", glibc_conftest_frobozz); }
-+void _start() { glibc_conftest_frobozz = 1; }
- EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-+ -nostartfiles -nostdlib \
- -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_asm_set_directive=yes
- else
-@@ -973,7 +1006,7 @@
- foo:
- .byte 1
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_type_prefix=${ac_try_prefix}
- fi
- rm -f conftest*
-@@ -996,7 +1029,7 @@
- _sym:
- .symver _sym,sym@VERS
- EOF
--if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
-+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_asm_symver_directive=yes
- else
- libc_cv_asm_symver_directive=no
-@@ -1018,10 +1051,11 @@
- global: sym;
- } VERS_1;
- EOF
-- if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
-- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-- -nostartfiles -nostdlib
-- -Wl,--version-script,conftest.map
-+ if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
-+ -o conftest.so conftest.o
-+ -nostartfiles -nostdlib
-+ -Wl,--version-script,conftest.map
- 1>&AS_MESSAGE_LOG_FD]);
- then
- libc_cv_ld_version_script_option=yes
-@@ -1060,7 +1094,7 @@
- .section foo_section
- .previous
- EOF
-- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_previous_directive=yes
- else
- libc_cv_asm_previous_directive=no
-@@ -1075,7 +1109,7 @@
- .pushsection foo_section
- .popsection
- EOF
-- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_popsection_directive=yes
- else
- libc_cv_asm_popsection_directive=no
-@@ -1093,7 +1127,7 @@
- .hidden bar
- bar:
- EOF
-- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_protected_directive=yes
- else
- libc_cv_asm_protected_directive=no
-@@ -1111,7 +1145,7 @@
- int bar __attribute__ ((visibility ("protected"))) = 1;
- EOF
- libc_cv_visibility_attribute=no
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- if grep '\.protected.*bar' conftest.s >/dev/null; then
- libc_cv_visibility_attribute=yes
-@@ -1134,7 +1168,7 @@
- int bar (int x) { return x; }
- EOF
- libc_cv_broken_visibility_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
- changequote(,)dnl
- if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
- changequote([,])dnl
-@@ -1159,7 +1193,7 @@
- int dfoo = 1;
- EOF
- libc_cv_broken_alias_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
-@@ -1176,7 +1210,7 @@
- libc_cv_have_sdata_section,
- [echo "int i;" > conftest.c
- libc_cv_have_sdata_section=no
-- if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
-+ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
- | grep '\.sdata' >/dev/null; then
- libc_cv_have_sdata_section=yes
- fi
-@@ -1195,7 +1229,7 @@
- int foo (void) { return 1; }
- int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
- -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
- then
- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-@@ -1217,7 +1251,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
- then
-@@ -1233,7 +1268,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
- then
-@@ -1249,7 +1285,8 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostartfiles -nostdlib
- -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
- then
-@@ -1265,7 +1302,9 @@
- cat > conftest.c <<EOF
- int _start (void) { return 42; }
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
-+ -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
- then
- libc_cv_Bgroup=yes
- else
-@@ -1274,6 +1313,27 @@
- rm -f conftest*])
- AC_SUBST(libc_cv_Bgroup)
-
-+ ASFLAGS_config=
-+ AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
-+ libc_cv_as_noexecstack, [dnl
-+ cat > conftest.c <<EOF
-+void foo (void) { }
-+EOF
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
-+ -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
-+ && grep -q .note.GNU-stack conftest.s \
-+ && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
-+ -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
-+ then
-+ libc_cv_as_noexecstack=yes
-+ else
-+ libc_cv_as_noexecstack=no
-+ fi
-+ rm -f conftest*])
-+ if test $libc_cv_as_noexecstack = yes; then
-+ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-+ fi
-+ AC_SUBST(ASFLAGS_config)
- AC_CACHE_CHECK(for -z combreloc,
- libc_cv_z_combreloc, [dnl
- cat > conftest.c <<EOF
-@@ -1281,7 +1341,8 @@
- extern int mumble;
- int foo (void) { return bar (mumble); }
- EOF
-- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-+ -shared -o conftest.so conftest.c
- -nostdlib -nostartfiles
- -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
- then
-@@ -1345,8 +1406,8 @@
- AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
- [cat > conftest.$ac_ext <<EOF
- dnl This sometimes fails to find confdefs.h, for some reason.
--dnl [#]line __oline__ "[$]0"
--[#]line __oline__ "configure"
-+dnl [#]line $LINENO "[$]0"
-+[#]line $LINENO "configure"
- #include "confdefs.h"
- void underscore_test(void) {
- return; }
-@@ -1398,7 +1459,7 @@
- .weak foo
- .weak bar; bar = foo
- EOF
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_weak_directive=yes
- else
- libc_cv_asm_weak_directive=no
-@@ -1418,7 +1479,7 @@
- ${libc_cv_asm_global_directive} baz
- baz:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_weakext_directive=yes
- else
- libc_cv_asm_weakext_directive=no
-@@ -1447,7 +1508,7 @@
- cat > conftest.s <<EOF
- nop ; is_old_puffin
- EOF
-- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_line_sep='!'
- else
- if test -z "$enable_hacker_mode"; then
-@@ -1462,6 +1523,58 @@
- ;;
- esac
-
-+AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
-+cat > conftest.s <<EOF
-+ .text
-+ .type func,@function
-+func:
-+ .cfi_startproc
-+ .cfi_remember_state
-+ .cfi_rel_offset 1, 0
-+ .cfi_endproc
-+EOF
-+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ libc_cv_asm_cfi_directives=yes
-+else
-+ libc_cv_asm_cfi_directives=no
-+fi
-+rm -f conftest*])
-+if test $libc_cv_asm_cfi_directives = yes; then
-+ AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
-+fi
-+
-+AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
-+ libc_cv_cpp_asm_debuginfo, [dnl
-+cat > conftest.S <<EOF
-+#include "confdefs.h"
-+
-+/* comment on
-+ two lines */
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+foo:
-+ /* Unfortunately this test only works for a real instruction,
-+ not for any of the machine-independent pseudo-ops.
-+ So we just have to assume everybody has a "nop". */
-+ nop
-+ /* comment */
-+ nop
-+ /* comment */
-+ nop
-+EOF
-+if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
-+ ac_pattern='conftest\.S'
-+ AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
-+ grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
-+ libc_cv_cpp_asm_debuginfo=yes
-+else
-+ libc_cv_cpp_asm_debuginfo=no
-+fi
-+rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
-+if test $libc_cv_cpp_asm_debuginfo = yes; then
-+ AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
-+fi
-+
- AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
- cat > conftest.c <<\EOF
- _start () {}
-@@ -1469,7 +1582,7 @@
- __throw () {}
- EOF
- dnl No \ in command here because it ends up inside ''.
--if AC_TRY_COMMAND([${CC-cc} $CFLAGS
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -nostdlib -nostartfiles -Wl,--no-whole-archive
- -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
- libc_cv_ld_no_whole_archive=yes
-@@ -1489,7 +1602,7 @@
- __throw () {}
- EOF
- dnl No \ in command here because it ends up inside ''.
--if AC_TRY_COMMAND([${CC-cc} $CFLAGS
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -nostdlib -nostartfiles -fexceptions
- -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc_exceptions=yes
-@@ -1516,7 +1629,7 @@
-
- AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
- [cat > conftest.c <<EOF
--#line __oline__ "configure"
-+#line $LINENO "configure"
- static char *__EH_FRAME_BEGIN__;
- _start ()
- {
-@@ -1542,19 +1655,14 @@
- __bzero () {}
- dl_iterate_phdr () {}
- EOF
--dnl No \ in command here because it ends up inside ''.
--if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
-- -nostdlib -nostartfiles
-- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
-- libc_cv_gcc_dwarf2_unwind_info=static
--else
-- libc_cv_gcc_dwarf2_unwind_info=no
--fi
-+libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
-+ $LDFLAGS \
-+ -nostdlib -nostartfiles -o conftest conftest.c \
-+ -lgcc"
- # Some platforms' specs put -lgcc first. The second one doesn't hurt.
--libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
-- -nostdlib -nostartfiles -o conftest conftest.c \
-- -lgcc -lgcc_eh -lgcc"
--if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then
-+if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
-+ AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
-+then
- if $libc_unwind_check -v 2>&1 >/dev/null \
- | grep -q -- --eh-frame-hdr; then
- libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
-@@ -1565,8 +1673,8 @@
- libc_cv_gcc_dwarf2_unwind_info=no
- fi
- if test $libc_cv_gcc_dwarf2_unwind_info = no; then
-- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
-- -nostdlib -nostartfiles
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
-+ $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc_dwarf2_unwind_info=yes
- else
-@@ -1587,7 +1695,7 @@
- dnl Check whether compiler understands __builtin_expect.
- AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
- [cat > conftest.c <<EOF
--#line __oline__ "configure"
-+#line $LINENO "configure"
- int foo (int a)
- {
- a = __builtin_expect (a, 10);
-@@ -1595,7 +1703,7 @@
- }
- EOF
- dnl No \ in command here because it ends up inside ''.
--if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc_builtin_expect=yes
- else
-@@ -1625,11 +1733,31 @@
- AC_DEFINE(HAVE_BUILTIN_MEMSET)
- fi
-
-+AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
-+cat > conftest.c <<\EOF
-+extern char *strstr (const char *, const char *) __asm ("my_strstr");
-+char *foo (const char *a, const char *b)
-+{
-+ return __builtin_strstr (a, b);
-+}
-+EOF
-+dnl
-+if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
-+then
-+ libc_cv_gcc_builtin_redirection=yes
-+else
-+ libc_cv_gcc_builtin_redirection=no
-+fi
-+rm -f conftest* ])
-+if test "$libc_cv_gcc_builtin_redirection" = yes ; then
-+ AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
-+fi
-+
- dnl Check whether the compiler supports subtraction of local labels.
- AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
- [cat > conftest.c <<EOF
- changequote(,)dnl
--#line __oline__ "configure"
-+#line $LINENO "configure"
- int foo (int a)
- {
- static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-@@ -1643,7 +1771,7 @@
- changequote([,])dnl
- EOF
- dnl No \ in command here because it ends up inside ''.
--if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc_subtract_local_labels=yes
- else
-@@ -1660,7 +1788,7 @@
- [cat > conftest.c <<\EOF
- __thread int a = 42;
- EOF
-- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc___thread=yes
- else
- libc_cv_gcc___thread=no
-@@ -1679,7 +1807,7 @@
- cat > conftest.c <<\EOF
- extern __thread int a __attribute__((tls_model ("initial-exec")));
- EOF
-- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
-+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
- libc_cv_gcc_tls_model_attr=yes
- else
- libc_cv_gcc_tls_model_attr=no
-@@ -1732,7 +1860,7 @@
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
-- AC_MSG_RESULT(running configure fragment for $dest)
-+ AC_MSG_RESULT(running configure fragment for $dir)
- . $dest/configure
- fi
- [
-@@ -1833,6 +1961,7 @@
- AC_SUBST(libc_cv_localedir)
- AC_SUBST(libc_cv_sysconfdir)
- AC_SUBST(libc_cv_rootsbindir)
-+AC_SUBST(libc_cv_forced_unwind)
-
- AC_SUBST(use_ldconfig)
- AC_SUBST(ldd_rewrite_script)
---- glibc-2.3.2/csu/Makefile 2002-12-31 17:24:37.000000000 -0500
-+++ glibc-2.3.2/csu/Makefile 2003-08-21 08:36:58.000000000 -0400
-@@ -1,5 +1,5 @@
- # Makefile for csu code for GNU C library.
--# Copyright (C) 1995,96,97,98,99,2000,01,2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995,96,97,98,99,2000,01,02,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
-@@ -33,19 +33,29 @@
- static-only-routines = elf-init
- csu-dummies = $(filter-out $(start-installed-name),crt1.o Mcrt1.o)
- extra-objs = start.o gmon-start.o \
-- $(start-installed-name) g$(start-installed-name) $(csu-dummies)
-+ $(start-installed-name) g$(start-installed-name) $(csu-dummies) \
-+ S$(start-installed-name)
- omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \
-- b$(start-installed-name) $(csu-dummies))
-+ b$(start-installed-name) $(csu-dummies) \
-+ S$(start-installed-name))
- install-lib = $(start-installed-name) g$(start-installed-name) $(csu-dummies)
- distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \
-- abi-note.S init.c munch-tmpl.c
-+ abi-note.S init.c munch-tmpl.c not-cancel.h
- generated = version-info.h
- before-compile = $(objpfx)version-info.h
-
-+tests := tst-empty tst-atomic tst-atomic-long
-+tests-static := tst-empty
-+
- all: # Make this the default target; it will be defined in Rules.
-
- include ../Makeconfig
-
-+ifeq (yes,$(build-shared))
-+extra-objs += S$(start-installed-name)
-+install-lib += S$(start-installed-name)
-+endif
-+
- ifeq (yes,$(build-bounded))
- extra-objs += b$(start-installed-name)
- install-lib += b$(start-installed-name)
-@@ -80,11 +90,6 @@
-
- CPPFLAGS += -DHAVE_INITFINI
-
--# We don't want this compiled with PIC.
--# It's never included in shared libraries, unlike the rest of libc_nonshared.a.
--CPPFLAGS-elf-init.oS = $(patsubst %,-UPIC,$(pic-ccflag))
--CFLAGS-elf-init.oS = $(patsubst -f%,-fno-%,$(pic-ccflag))
--
- # These are the special initializer/finalizer files. They are always the
- # first and last file in the link. crti.o ... crtn.o define the global
- # "functions" _init and _fini to run the .init and .fini sections.
-@@ -96,14 +101,14 @@
- omit-deps += $(crtstuff)
-
- # Special rules for the building of crti.o and crtn.o
--$(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
-+$(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h
- $(compile.S) -g0 $(ASFLAGS-.os) -o $@
-
- CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
-
- vpath initfini.c $(full_config_sysdirs)
-
--$(objpfx)initfini.s: initfini.c
-+$(objpfx)initfini.s: initfini.c $(before-compile)
- $(compile.c) -S $(CFLAGS-initfini.s) -finhibit-size-directive \
- $(patsubst -f%,-fno-%,$(exceptions)) -o $@
-
-@@ -151,6 +156,9 @@
- $(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \
- $(objpfx)init.o
- $(link-relocatable)
-+$(objpfx)S$(start-installed-name): $(objpfx)start.os $(objpfx)abi-note.o \
-+ $(objpfx)init.o
-+ $(link-relocatable)
- $(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \
- $(objpfx)init.ob
- $(link-relocatable)
-@@ -160,6 +168,9 @@
- $(objpfx)$(start-installed-name): $(objpfx)start.o
- rm -f $@
- ln $< $@
-+$(objpfx)S$(start-installed-name): $(objpfx)start.os
-+ rm -f $@
-+ ln $< $@
- $(objpfx)b$(start-installed-name): $(objpfx)start.ob
- rm -f $@
- ln $< $@
-@@ -176,11 +187,9 @@
-
- # These extra files are sometimes expected by system standard linking
- # procedures, but we have nothing for them to do. So compile empty files.
--$(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):
-- @-rm -f $(@:.o=.c)
-- echo > $(@:.o=.c)
-- $(COMPILE.c) $(@:.o=.c) $(OUTPUT_OPTION)
-- rm -f $(@:.o=.c)
-+$(addprefix $(objpfx),$(filter-out $(start-installed-name), $(csu-dummies))):\
-+ $(before-compile)
-+ $(COMPILE.c) -o $@ -x c /dev/null
-
- # These headers are used by the startup code.
- $(objpfx)abi-tag.h: $(..)abi-tags
-@@ -208,7 +217,7 @@
- $(make-target-directory)
- (case $(config-os) in \
- linux*) version=`(echo -e "#include <linux/version.h>\nUTS_RELEASE"\
-- | $(CC) -E -P - | \
-+ | $(CC) $(CPPFLAGS) -E -P - | \
- sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\
- if [ -z "$$version" ]; then \
- if [ -r /proc/version ]; then \
---- glibc-2.3.2/csu/elf-init.c 2002-12-31 18:41:32.000000000 -0500
-+++ glibc-2.3.2/csu/elf-init.c 2003-05-24 14:06:21.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup support for ELF initializers/finalizers in the main executable.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -21,12 +21,12 @@
-
- #ifdef HAVE_INITFINI_ARRAY
- /* These magic symbols are provided by the linker. */
--extern void (*__preinit_array_start []) (void);
--extern void (*__preinit_array_end []) (void);
--extern void (*__init_array_start []) (void);
--extern void (*__init_array_end []) (void);
--extern void (*__fini_array_start []) (void);
--extern void (*__fini_array_end []) (void);
-+extern void (*__preinit_array_start []) (void) attribute_hidden;
-+extern void (*__preinit_array_end []) (void) attribute_hidden;
-+extern void (*__init_array_start []) (void) attribute_hidden;
-+extern void (*__init_array_end []) (void) attribute_hidden;
-+extern void (*__fini_array_start []) (void) attribute_hidden;
-+extern void (*__fini_array_end []) (void) attribute_hidden;
- #endif
-
- /* These function symbols are provided for the .init/.fini section entry
---- glibc-2.3.2/csu/tst-atomic-long.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/csu/tst-atomic-long.c 2003-03-22 18:00:17.000000000 -0500
-@@ -0,0 +1,28 @@
-+/* Tests for atomic.h macros.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <bits/wordsize.h>
-+
-+#define atomic_t long
-+#if __WORDSIZE == 64
-+# define TEST_ATOMIC64 1
-+#endif
-+
-+#include "tst-atomic.c"
---- glibc-2.3.2/csu/tst-atomic.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/csu/tst-atomic.c 2003-05-12 12:13:03.000000000 -0400
-@@ -0,0 +1,373 @@
-+/* Tests for atomic.h macros.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdio.h>
-+#include <atomic.h>
-+
-+#ifndef atomic_t
-+# define atomic_t int
-+#endif
-+
-+/* Test various atomic.h macros. */
-+static int
-+do_test (void)
-+{
-+ atomic_t mem;
-+ int ret = 0;
-+
-+#ifdef atomic_compare_and_exchange_val_acq
-+ mem = 24;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 35, 24) != 24
-+ || mem != 35)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 12;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 10, 15) != 12
-+ || mem != 12)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -15;
-+ if (atomic_compare_and_exchange_val_acq (&mem, -56, -15) != -15
-+ || mem != -56)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 17, 0) != -1
-+ || mem != -1)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 4 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ mem = 24;
-+ if (atomic_compare_and_exchange_bool_acq (&mem, 35, 24)
-+ || mem != 35)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 12;
-+ if (! atomic_compare_and_exchange_bool_acq (&mem, 10, 15)
-+ || mem != 12)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -15;
-+ if (atomic_compare_and_exchange_bool_acq (&mem, -56, -15)
-+ || mem != -56)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (! atomic_compare_and_exchange_bool_acq (&mem, 17, 0)
-+ || mem != -1)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 64;
-+ if (atomic_exchange_acq (&mem, 31) != 64
-+ || mem != 31)
-+ {
-+ puts ("atomic_exchange_acq test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 2;
-+ if (atomic_exchange_and_add (&mem, 11) != 2
-+ || mem != 13)
-+ {
-+ puts ("atomic_exchange_and_add test failed");
-+ ret = 1;
-+ }
-+
-+ mem = -21;
-+ atomic_add (&mem, 22);
-+ if (mem != 1)
-+ {
-+ puts ("atomic_add test failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ atomic_increment (&mem);
-+ if (mem != 0)
-+ {
-+ puts ("atomic_increment test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_increment_and_test (&mem)
-+ || mem != 1)
-+ {
-+ puts ("atomic_increment_and_test test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 35;
-+ if (atomic_increment_and_test (&mem)
-+ || mem != 36)
-+ {
-+ puts ("atomic_increment_and_test test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (! atomic_increment_and_test (&mem)
-+ || mem != 0)
-+ {
-+ puts ("atomic_increment_and_test test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 17;
-+ atomic_decrement (&mem);
-+ if (mem != 16)
-+ {
-+ puts ("atomic_decrement test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_decrement_and_test (&mem)
-+ || mem != -1)
-+ {
-+ puts ("atomic_decrement_and_test test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 15;
-+ if (atomic_decrement_and_test (&mem)
-+ || mem != 14)
-+ {
-+ puts ("atomic_decrement_and_test test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 1;
-+ if (! atomic_decrement_and_test (&mem)
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_and_test test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 1;
-+ if (atomic_decrement_if_positive (&mem) != 1
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_if_positive test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_decrement_if_positive (&mem) != 0
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_if_positive test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (atomic_decrement_if_positive (&mem) != -1
-+ || mem != -1)
-+ {
-+ puts ("atomic_decrement_if_positive test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -12;
-+ if (! atomic_add_negative (&mem, 10)
-+ || mem != -2)
-+ {
-+ puts ("atomic_add_negative test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_add_negative (&mem, 100)
-+ || mem != 100)
-+ {
-+ puts ("atomic_add_negative test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 15;
-+ if (atomic_add_negative (&mem, -10)
-+ || mem != 5)
-+ {
-+ puts ("atomic_add_negative test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -12;
-+ if (atomic_add_negative (&mem, 14)
-+ || mem != 2)
-+ {
-+ puts ("atomic_add_negative test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (! atomic_add_negative (&mem, -1)
-+ || mem != -1)
-+ {
-+ puts ("atomic_add_negative test 5 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -31;
-+ if (atomic_add_negative (&mem, 31)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_negative test 6 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -34;
-+ if (atomic_add_zero (&mem, 31)
-+ || mem != -3)
-+ {
-+ puts ("atomic_add_zero test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -36;
-+ if (! atomic_add_zero (&mem, 36)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_zero test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 113;
-+ if (atomic_add_zero (&mem, -13)
-+ || mem != 100)
-+ {
-+ puts ("atomic_add_zero test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -18;
-+ if (atomic_add_zero (&mem, 20)
-+ || mem != 2)
-+ {
-+ puts ("atomic_add_zero test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 10;
-+ if (atomic_add_zero (&mem, -20)
-+ || mem != -10)
-+ {
-+ puts ("atomic_add_zero test 5 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 10;
-+ if (! atomic_add_zero (&mem, -10)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_zero test 6 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ atomic_bit_set (&mem, 1);
-+ if (mem != 2)
-+ {
-+ puts ("atomic_bit_set test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 8;
-+ atomic_bit_set (&mem, 3);
-+ if (mem != 8)
-+ {
-+ puts ("atomic_bit_set test 2 failed");
-+ ret = 1;
-+ }
-+
-+#ifdef TEST_ATOMIC64
-+ mem = 16;
-+ atomic_bit_set (&mem, 35);
-+ if (mem != 0x800000010LL)
-+ {
-+ puts ("atomic_bit_set test 3 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ mem = 0;
-+ if (atomic_bit_test_set (&mem, 1)
-+ || mem != 2)
-+ {
-+ puts ("atomic_bit_test_set test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 8;
-+ if (! atomic_bit_test_set (&mem, 3)
-+ || mem != 8)
-+ {
-+ puts ("atomic_bit_test_set test 2 failed");
-+ ret = 1;
-+ }
-+
-+#ifdef TEST_ATOMIC64
-+ mem = 16;
-+ if (atomic_bit_test_set (&mem, 35)
-+ || mem != 0x800000010LL)
-+ {
-+ puts ("atomic_bit_test_set test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0x100000000LL;
-+ if (! atomic_bit_test_set (&mem, 32)
-+ || mem != 0x100000000LL)
-+ {
-+ puts ("atomic_bit_test_set test 4 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ return ret;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/csu/tst-empty.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/csu/tst-empty.c 2003-04-11 20:16:59.000000000 -0400
-@@ -0,0 +1,6 @@
-+/* The most useful C program known to man. */
-+int
-+main (void)
-+{
-+ return 0;
-+}
---- glibc-2.3.2/dirent/Makefile 2002-06-22 01:46:07.000000000 -0400
-+++ glibc-2.3.2/dirent/Makefile 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991-2000, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1991-2000, 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
-@@ -30,6 +30,9 @@
-
- tests := list tst-seekdir opendir-tst1 bug-readdir1
-
-+CFLAGS-scandir.c = $(uses-callbacks)
-+CFLAGS-scandir64.c = $(uses-callbacks)
-+
- include ../Rules
-
- opendir-tst1-ARGS = --test-dir=${common-objpfx}dirent
---- glibc-2.3.2/dirent/dirent.h 2001-07-07 15:20:52.000000000 -0400
-+++ glibc-2.3.2/dirent/dirent.h 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1999, 2000, 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
-@@ -128,12 +128,18 @@
- typedef struct __dirstream DIR;
-
- /* Open a directory stream on NAME.
-- Return a DIR stream on the directory, or NULL if it could not be opened. */
--extern DIR *opendir (__const char *__name) __THROW;
-+ Return a DIR stream on the directory, or NULL if it could not be opened.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern DIR *opendir (__const char *__name);
-
- /* Close the directory stream DIRP.
-- Return 0 if successful, -1 if not. */
--extern int closedir (DIR *__dirp) __THROW;
-+ Return 0 if successful, -1 if not.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int closedir (DIR *__dirp);
-
- /* Read a directory entry from DIRP. Return a pointer to a `struct
- dirent' describing the entry, or NULL for EOF or error. The
-@@ -141,34 +147,40 @@
- same DIR stream.
-
- If the Large File Support API is selected we have to use the
-- appropriate interface. */
-+ appropriate interface.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- #ifndef __USE_FILE_OFFSET64
--extern struct dirent *readdir (DIR *__dirp) __THROW;
-+extern struct dirent *readdir (DIR *__dirp);
- #else
- # ifdef __REDIRECT
--extern struct dirent *__REDIRECT (readdir, (DIR *__dirp) __THROW, readdir64);
-+extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64);
- # else
- # define readdir readdir64
- # endif
- #endif
-
- #ifdef __USE_LARGEFILE64
--extern struct dirent64 *readdir64 (DIR *__dirp) __THROW;
-+extern struct dirent64 *readdir64 (DIR *__dirp);
- #endif
-
- #if defined __USE_POSIX || defined __USE_MISC
- /* Reentrant version of `readdir'. Return in RESULT a pointer to the
-- next entry. */
-+ next entry.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- # ifndef __USE_FILE_OFFSET64
- extern int readdir_r (DIR *__restrict __dirp,
- struct dirent *__restrict __entry,
-- struct dirent **__restrict __result) __THROW;
-+ struct dirent **__restrict __result);
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (readdir_r,
- (DIR *__restrict __dirp,
- struct dirent *__restrict __entry,
-- struct dirent **__restrict __result) __THROW,
-+ struct dirent **__restrict __result),
- readdir64_r);
- # else
- # define readdir_r readdir64_r
-@@ -178,7 +190,7 @@
- # ifdef __USE_LARGEFILE64
- extern int readdir64_r (DIR *__restrict __dirp,
- struct dirent64 *__restrict __entry,
-- struct dirent64 **__restrict __result) __THROW;
-+ struct dirent64 **__restrict __result);
- # endif
- #endif /* POSIX or misc */
-
-@@ -227,14 +239,14 @@
- extern int scandir (__const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (__const struct dirent *),
-- int (*__cmp) (__const void *, __const void *)) __THROW;
-+ int (*__cmp) (__const void *, __const void *));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (scandir,
- (__const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (__const struct dirent *),
-- int (*__cmp) (__const void *, __const void *)) __THROW,
-+ int (*__cmp) (__const void *, __const void *)),
- scandir64);
- # else
- # define scandir scandir64
-@@ -247,7 +259,7 @@
- extern int scandir64 (__const char *__restrict __dir,
- struct dirent64 ***__restrict __namelist,
- int (*__selector) (__const struct dirent64 *),
-- int (*__cmp) (__const void *, __const void *)) __THROW;
-+ int (*__cmp) (__const void *, __const void *));
- # endif
-
- /* Function to compare two `struct dirent's alphabetically. */
-@@ -257,8 +269,7 @@
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (alphasort,
-- (__const void *__e1, __const void *__e2)
-- __THROW,
-+ (__const void *__e1, __const void *__e2) __THROW,
- alphasort64) __attribute_pure__;
- # else
- # define alphasort alphasort64
-@@ -278,8 +289,7 @@
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (versionsort,
-- (__const void *__e1, __const void *__e2)
-- __THROW,
-+ (__const void *__e1, __const void *__e2) __THROW,
- versionsort64) __attribute_pure__;
- # else
- # define versionsort versionsort64
---- glibc-2.3.2/dirent/scandir.c 2002-10-14 13:41:01.000000000 -0400
-+++ glibc-2.3.2/dirent/scandir.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992-1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1992-1998, 2000, 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
-@@ -20,6 +20,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <errno.h>
-+#include <bits/libc-lock.h>
-
- #ifndef SCANDIR
- #define SCANDIR scandir
-@@ -27,6 +28,30 @@
- #define DIRENT_TYPE struct dirent
- #endif
-
-+#ifndef SCANDIR_CANCEL
-+#define SCANDIR_CANCEL
-+struct scandir_cancel_struct
-+{
-+ DIR *dp;
-+ void *v;
-+ size_t cnt;
-+};
-+
-+static void
-+cancel_handler (void *arg)
-+{
-+ struct scandir_cancel_struct *cp = arg;
-+ size_t i;
-+ void **v = cp->v;
-+
-+ for (i = 0; i < cp->cnt; ++i)
-+ free (v[i]);
-+ free (v);
-+ (void) __closedir (cp->dp);
-+}
-+#endif
-+
-+
- int
- SCANDIR (dir, namelist, select, cmp)
- const char *dir;
-@@ -36,7 +61,8 @@
- {
- DIR *dp = __opendir (dir);
- DIRENT_TYPE **v = NULL;
-- size_t vsize = 0, i;
-+ size_t vsize = 0;
-+ struct scandir_cancel_struct c;
- DIRENT_TYPE *d;
- int save;
-
-@@ -46,58 +72,77 @@
- save = errno;
- __set_errno (0);
-
-- i = 0;
-+ c.dp = dp;
-+ c.v = NULL;
-+ c.cnt = 0;
-+ __libc_cleanup_push (cancel_handler, &c);
-+
- while ((d = READDIR (dp)) != NULL)
-- if (select == NULL || (*select) (d))
-- {
-- DIRENT_TYPE *vnew;
-- size_t dsize;
--
-- /* Ignore errors from select or readdir */
-- __set_errno (0);
--
-- if (__builtin_expect (i == vsize, 0))
-- {
-- DIRENT_TYPE **new;
-- if (vsize == 0)
-- vsize = 10;
-- else
-- vsize *= 2;
-- new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v));
-- if (new == NULL)
-- break;
-- v = new;
-- }
--
-- dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d;
-- vnew = (DIRENT_TYPE *) malloc (dsize);
-- if (vnew == NULL)
-- break;
-+ {
-+ int use_it = select == NULL;
-+
-+ if (! use_it)
-+ {
-+ use_it = select (d);
-+ /* The select function might have changed errno. It was
-+ zero before and it need to be again to make the latter
-+ tests work. */
-+ __set_errno (0);
-+ }
-+
-+ if (use_it)
-+ {
-+ DIRENT_TYPE *vnew;
-+ size_t dsize;
-+
-+ /* Ignore errors from select or readdir */
-+ __set_errno (0);
-+
-+ if (__builtin_expect (c.cnt == vsize, 0))
-+ {
-+ DIRENT_TYPE **new;
-+ if (vsize == 0)
-+ vsize = 10;
-+ else
-+ vsize *= 2;
-+ new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v));
-+ if (new == NULL)
-+ break;
-+ v = new;
-+ c.v = (void *) v;
-+ }
-+
-+ dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d;
-+ vnew = (DIRENT_TYPE *) malloc (dsize);
-+ if (vnew == NULL)
-+ break;
-
-- v[i++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize);
-- }
-+ v[c.cnt++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize);
-+ }
-+ }
-
- if (__builtin_expect (errno, 0) != 0)
- {
- save = errno;
-
-- while (i > 0)
-- free (v[--i]);
-+ while (c.cnt > 0)
-+ free (v[--c.cnt]);
- free (v);
--
-- i = -1;
-+ c.cnt = -1;
- }
- else
- {
- /* Sort the list if we have a comparison function to sort with. */
- if (cmp != NULL)
-- qsort (v, i, sizeof (*v), cmp);
-+ qsort (v, c.cnt, sizeof (*v), cmp);
-
- *namelist = v;
- }
-
-+ __libc_cleanup_pop (0);
-+
- (void) __closedir (dp);
- __set_errno (save);
-
-- return i;
-+ return c.cnt;
- }
---- glibc-2.3.2/dlfcn/Makefile 2003-02-25 19:46:32.000000000 -0500
-+++ glibc-2.3.2/dlfcn/Makefile 2003-08-21 08:36:59.000000000 -0400
-@@ -19,7 +19,8 @@
- subdir := dlfcn
- headers := bits/dlfcn.h dlfcn.h
- extra-libs := libdl
--libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval
-+libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \
-+ eval
- distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \
- defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \
- modcxaatexit.c modstatic.c \
-@@ -37,7 +38,7 @@
-
- ifeq (yes,$(build-shared))
- tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
-- bug-dlopen1 bug-dlsym1
-+ bug-dlopen1 bug-dlsym1 tst-dlinfo
- ifeq (yes,$(have-protected))
- tests += tstatexit
- endif
-@@ -46,6 +47,10 @@
- errmsg1mod modatexit modcxaatexit \
- bug-dlsym1-lib1 bug-dlsym1-lib2
-
-+failtestmod.so-no-z-defs = yes
-+glreflib2.so-no-z-defs = yes
-+errmsg1mod.so-no-z-defs = yes
-+
- ifeq (yesyesyes,$(build-static)$(build-shared)$(elf))
- tests += tststatic
- tests-static += tststatic
-@@ -61,9 +66,14 @@
- LDFLAGS-dl.so = -Wl,-dynamic-linker,$(slibdir)/$(rtld-installed-name)
-
- test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
--$(test-modules): $(objpfx)%.so: $(objpfx)%.os
-+$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds
- $(build-module)
-
-+ifeq ($(build-shared),yes)
-+# Build all the modules even when not actually running test programs.
-+tests: $(test-modules)
-+endif
-+
- $(objpfx)glrefmain: $(libdl)
- $(objpfx)glrefmain.out: $(objpfx)glrefmain \
- $(objpfx)glreflib1.so $(objpfx)glreflib2.so
-@@ -74,6 +84,9 @@
- $(objpfx)tst-dladdr: $(libdl)
- $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so
-
-+$(objpfx)tst-dlinfo: $(libdl)
-+$(objpfx)tst-dlinfo.out: $(objpfx)glreflib1.so
-+
- LDFLAGS-default = $(LDFLAGS-rdynamic)
- $(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
- $(objpfx)defaultmod1.so: $(libdl) $(common-objpfx)libc_nonshared.a
---- glibc-2.3.2/dlfcn/Versions 1999-07-07 14:25:24.000000000 -0400
-+++ glibc-2.3.2/dlfcn/Versions 2003-03-18 16:46:07.000000000 -0500
-@@ -5,4 +5,7 @@
- GLIBC_2.1 {
- dlopen; dlvsym;
- }
-+ GLIBC_2.3.3 {
-+ dladdr1; dlinfo;
-+ }
- }
---- glibc-2.3.2/dlfcn/default.c 2000-11-15 21:12:28.000000000 -0500
-+++ glibc-2.3.2/dlfcn/default.c 2003-08-21 08:36:59.000000000 -0400
-@@ -36,7 +36,7 @@
- printf ("%s: main not found\n", __FILE__);
- result = 1;
- }
-- else if (p != (void *) &main)
-+ else if ((int (*)(int, char **))p != main)
- {
- printf ("%s: wrong address returned for main\n", __FILE__);
- result = 1;
-@@ -72,9 +72,9 @@
- else
- printf ("%s: found_in_mod2 correctly found\n", __FILE__);
-
-- result |= test_in_mod1 ((void *) &main);
-+ result |= test_in_mod1 (main);
-
-- result |= test_in_mod2 ((void *) &main);
-+ result |= test_in_mod2 (main);
-
- return result;
- }
---- glibc-2.3.2/dlfcn/defaultmod1.c 2000-11-28 18:56:29.000000000 -0500
-+++ glibc-2.3.2/dlfcn/defaultmod1.c 2003-08-21 08:36:59.000000000 -0400
-@@ -9,9 +9,9 @@
- }
-
-
--extern int test_in_mod1 (void *mainp);
-+extern int test_in_mod1 (int (*mainp)(int, char **));
- int
--test_in_mod1 (void *mainp)
-+test_in_mod1 (int (*mainp)(int, char **))
- {
- int (*ifp) (void);
- void *p;
-@@ -24,7 +24,7 @@
- printf ("%s: main not found\n", __FILE__);
- result = 1;
- }
-- else if (p != mainp)
-+ else if ((int (*)(int, char **))p != mainp)
- {
- printf ("%s: wrong address returned for main\n", __FILE__);
- result = 1;
---- glibc-2.3.2/dlfcn/defaultmod2.c 2000-11-28 18:57:02.000000000 -0500
-+++ glibc-2.3.2/dlfcn/defaultmod2.c 2003-08-21 08:36:59.000000000 -0400
-@@ -16,9 +16,9 @@
- }
-
-
--extern int test_in_mod2 (void *mainp);
-+extern int test_in_mod2 (int (*mainp)(int, char **));
- int
--test_in_mod2 (void *mainp)
-+test_in_mod2 (int (*mainp)(int, char **))
- {
- int (*ifp) (void);
- void *p;
-@@ -31,7 +31,7 @@
- printf ("%s: main not found\n", __FILE__);
- result = 1;
- }
-- else if (p != mainp)
-+ else if ((int (*)(int, char **))p != mainp)
- {
- printf ("%s: wrong address returned for main\n", __FILE__);
- result = 1;
---- glibc-2.3.2/dlfcn/dladdr.c 2001-07-07 15:20:52.000000000 -0400
-+++ glibc-2.3.2/dlfcn/dladdr.c 2003-03-15 15:02:08.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Locate the shared object symbol nearest a given address.
-- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -22,5 +22,5 @@
- int
- dladdr (const void *address, Dl_info *info)
- {
-- return _dl_addr (address, info);
-+ return _dl_addr (address, info, NULL, NULL);
- }
---- glibc-2.3.2/dlfcn/dladdr1.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/dlfcn/dladdr1.c 2003-03-10 04:12:11.000000000 -0500
-@@ -0,0 +1,35 @@
-+/* Locate the shared object symbol nearest a given address.
-+ Copyright (C) 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 <dlfcn.h>
-+
-+int
-+dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
-+{
-+ switch (flags)
-+ {
-+ default: /* Make this an error? */
-+ case 0:
-+ return _dl_addr (address, info, NULL, NULL);
-+ case RTLD_DL_SYMENT:
-+ return _dl_addr (address, info, NULL, (const ElfW(Sym) **) extra);
-+ case RTLD_DL_LINKMAP:
-+ return _dl_addr (address, info, (struct link_map **) extra, NULL);
-+ }
-+}
---- glibc-2.3.2/dlfcn/dlerror.c 2002-11-19 01:51:37.000000000 -0500
-+++ glibc-2.3.2/dlfcn/dlerror.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Return error detail for failing <dlfcn.h> functions.
-- Copyright (C) 1995,1996,1997,1998,1999,2000,2002
-+ Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -38,6 +38,7 @@
-
- /* This is the key for the thread specific memory. */
- static __libc_key_t key;
-+__libc_once_define (static, once);
-
- /* Destructor for the thread-specific data. */
- static void init (void);
-@@ -50,6 +51,9 @@
- char *buf = NULL;
- struct dl_action_result *result;
-
-+ /* If we have not yet initialized the buffer do it now. */
-+ __libc_once (once, init);
-+
- /* Get error string. */
- result = (struct dl_action_result *) __libc_getspecific (key);
- if (result == NULL)
-@@ -69,9 +73,19 @@
- else if (result->errstring != NULL)
- {
- buf = (char *) result->errstring;
-- if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s",
-- result->objname, _(result->errstring),
-- strerror (result->errcode)) != -1)
-+ int n;
-+ if (result->errcode == 0)
-+ n = __asprintf (&buf, "%s%s%s",
-+ result->objname,
-+ result->objname[0] == '\0' ? "" : ": ",
-+ _(result->errstring));
-+ else
-+ n = __asprintf (&buf, "%s%s%s: %s",
-+ result->objname,
-+ result->objname[0] == '\0' ? "" : ": ",
-+ _(result->errstring),
-+ strerror (result->errcode));
-+ if (n != -1)
- {
- /* We don't need the error string anymore. */
- if (strcmp (result->errstring, "out of memory") != 0)
-@@ -90,7 +104,6 @@
- internal_function
- _dlerror_run (void (*operate) (void *), void *args)
- {
-- __libc_once_define (static, once);
- struct dl_action_result *result;
-
- /* If we have not yet initialized the buffer do it now. */
---- glibc-2.3.2/dlfcn/dlfcn.h 2001-10-26 19:58:28.000000000 -0400
-+++ glibc-2.3.2/dlfcn/dlfcn.h 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* User functions for run-time dynamic loading.
-- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999,2000,2001,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
-@@ -21,6 +21,8 @@
- #define _DLFCN_H 1
-
- #include <features.h>
-+#define __need_size_t
-+#include <stddef.h>
-
- /* Collect various system dependent definitions and declarations. */
- #include <bits/dlfcn.h>
-@@ -83,7 +85,74 @@
- /* Fill in *INFO with the following information about ADDRESS.
- Returns 0 iff no shared object's segments contain that address. */
- extern int dladdr (__const void *__address, Dl_info *__info) __THROW;
--#endif
-+
-+/* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */
-+extern int dladdr1 (__const void *__address, Dl_info *__info,
-+ void **__extra_info, int __flags) __THROW;
-+
-+/* These are the possible values for the FLAGS argument to `dladdr1'.
-+ This indicates what extra information is stored at *EXTRA_INFO.
-+ It may also be zero, in which case the EXTRA_INFO argument is not used. */
-+enum
-+ {
-+ /* Matching symbol table entry (const ElfNN_Sym *). */
-+ RTLD_DL_SYMENT = 1,
-+
-+ /* The object containing the address (struct link_map *). */
-+ RTLD_DL_LINKMAP = 2
-+ };
-+
-+
-+/* Get information about the shared object HANDLE refers to.
-+ REQUEST is from among the values below, and determines the use of ARG.
-+
-+ On success, returns zero. On failure, returns -1 and records an error
-+ message to be fetched with `dlerror'. */
-+extern int dlinfo (void *__restrict __handle,
-+ int __request, void *__restrict __arg);
-+
-+/* These are the possible values for the REQUEST argument to `dlinfo'. */
-+enum
-+ {
-+ /* Treat ARG as `struct link_map **';
-+ store the `struct link_map *' for HANDLE there. */
-+ RTLD_DI_LINKMAP = 2,
-+
-+ /* Treat ARG as `Dl_serinfo *' (see below), and fill in to describe the
-+ directories that will be searched for dependencies of this object.
-+ RTLD_DI_SERINFOSIZE fills in just the `dls_cnt' and `dls_size'
-+ entries to indicate the size of the buffer that must be passed to
-+ RTLD_DI_SERINFO to fill in the full information. */
-+ RTLD_DI_SERINFO = 4,
-+ RTLD_DI_SERINFOSIZE = 5,
-+
-+ /* Treat ARG as `char *', and store there the directory name used to
-+ expand $ORIGIN in this shared object's dependency file names. */
-+ RTLD_DI_ORIGIN = 6,
-+
-+ RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */
-+ RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */
-+ };
-+
-+
-+/* This is the type of elements in `Dl_serinfo', below.
-+ The `dls_name' member points to space in the buffer passed to `dlinfo'. */
-+typedef struct
-+{
-+ char *dls_name; /* Name of library search path directory. */
-+ unsigned int dls_flags; /* Indicates where this directory came from. */
-+} Dl_serpath;
-+
-+/* This is the structure that must be passed (by reference) to `dlinfo' for
-+ the RTLD_DI_SERINFO and RTLD_DI_SERINFOSIZE requests. */
-+typedef struct
-+{
-+ size_t dls_size; /* Size in bytes of the whole buffer. */
-+ unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
-+ Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
-+} Dl_serinfo;
-+#endif /* __USE_GNU */
-+
-
- __END_DECLS
-
---- glibc-2.3.2/dlfcn/dlinfo.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/dlfcn/dlinfo.c 2003-03-15 18:14:44.000000000 -0500
-@@ -0,0 +1,87 @@
-+/* dlinfo -- Get information from the dynamic linker.
-+ Copyright (C) 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 <dlfcn.h>
-+#include <link.h>
-+#include <ldsodefs.h>
-+#include <libintl.h>
-+
-+struct dlinfo_args
-+{
-+ ElfW(Addr) caller;
-+ void *handle;
-+ int request;
-+ void *arg;
-+};
-+
-+static void
-+dlinfo_doit (void *argsblock)
-+{
-+ struct dlinfo_args *const args = argsblock;
-+ struct link_map *l = args->handle;
-+
-+#if 0
-+ if (args->handle == RTLD_SELF)
-+ {
-+
-+ /* Find the highest-addressed object that CALLER is not below. */
-+ for (l = GL(dl_loaded); l != NULL; l = l->l_next)
-+ if (caller >= l->l_map_start && caller < l->l_map_end)
-+ /* There must be exactly one DSO for the range of the virtual
-+ memory. Otherwise something is really broken. */
-+ break;
-+
-+ if (l == NULL)
-+ _dl_signal_error (0, NULL, NULL, N_("\
-+RTLD_SELF used in code not dynamically loaded"));
-+ }
-+#endif
-+
-+ switch (args->request)
-+ {
-+ case RTLD_DI_LMID:
-+ case RTLD_DI_CONFIGADDR:
-+ default:
-+ _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request"));
-+ break;
-+
-+ case RTLD_DI_LINKMAP:
-+ *(struct link_map **) args->arg = l;
-+ break;
-+
-+ case RTLD_DI_SERINFO:
-+ _dl_rtld_di_serinfo (l, args->arg, false);
-+ break;
-+ case RTLD_DI_SERINFOSIZE:
-+ _dl_rtld_di_serinfo (l, args->arg, true);
-+ break;
-+
-+ case RTLD_DI_ORIGIN:
-+ strcpy (args->arg, l->l_origin);
-+ break;
-+ }
-+}
-+
-+int
-+dlinfo (void *handle, int request, void *arg)
-+{
-+ struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0),
-+ handle, request, arg };
-+ return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
-+}
---- glibc-2.3.2/dlfcn/dlopen.c 2001-07-07 15:20:52.000000000 -0400
-+++ glibc-2.3.2/dlfcn/dlopen.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Load a shared object at run time.
-- Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1995,96,97,98,99,2000,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
-@@ -54,3 +54,4 @@
- }
- #include <shlib-compat.h>
- versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1);
-+static_link_warning (dlopen)
---- glibc-2.3.2/dlfcn/eval.c 2001-07-07 15:20:52.000000000 -0400
-+++ glibc-2.3.2/dlfcn/eval.c 2003-08-21 08:36:59.000000000 -0400
-@@ -27,7 +27,7 @@
- #include <string.h>
- #include <unistd.h>
-
--static void *funcall (char **stringp);
-+static void *funcall (char **stringp) __attribute_noinline__;
- static void *eval (char **stringp);
-
-
---- glibc-2.3.2/dlfcn/tst-dlinfo.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/dlfcn/tst-dlinfo.c 2003-03-15 18:14:48.000000000 -0500
-@@ -0,0 +1,96 @@
-+/* Test for dlinfo.
-+ Copyright (C) 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 <dlfcn.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <error.h>
-+
-+#define TEST_FUNCTION do_test ()
-+
-+static int
-+do_test (void)
-+{
-+ int status = 0;
-+
-+ void *handle = dlopen ("glreflib1.so", RTLD_NOW);
-+ if (handle == NULL)
-+ error (EXIT_FAILURE, 0, "cannot load: glreflib1.so: %s", dlerror ());
-+
-+#define TRY(req, arg) \
-+ if (dlinfo (handle, req, arg) != 0) \
-+ { \
-+ printf ("dlinfo failed for %s: %s\n", #req, dlerror ()); \
-+ status = 1; \
-+ } \
-+ else
-+
-+ struct link_map *l;
-+ TRY (RTLD_DI_LINKMAP, &l)
-+ {
-+ if (l != handle)
-+ {
-+ printf ("bogus link_map? %p != %p\n", l, handle);
-+ status = 1;
-+ }
-+ }
-+
-+ char origin[8192]; /* >= PATH_MAX, in theory */
-+ TRY (RTLD_DI_ORIGIN, origin)
-+ {
-+ printf ("origin: %s\n", origin);
-+ }
-+
-+ Dl_serinfo counts;
-+ TRY (RTLD_DI_SERINFOSIZE, &counts)
-+ {
-+ Dl_serinfo *buf = alloca (counts.dls_size);
-+ buf->dls_cnt = counts.dls_cnt;
-+ buf->dls_size = counts.dls_size;
-+ printf ("%u library directories\n", buf->dls_cnt);
-+ TRY (RTLD_DI_SERINFO, buf)
-+ {
-+ if (counts.dls_cnt != buf->dls_cnt)
-+ {
-+ printf ("??? became %u library directories\n", buf->dls_cnt);
-+ status = 1;
-+ }
-+ for (unsigned int i = 0; i < buf->dls_cnt; ++i)
-+ printf ("\t%#02x\t%s\n",
-+ buf->dls_serpath[i].dls_flags,
-+ buf->dls_serpath[i].dls_name);
-+ }
-+ }
-+
-+ unsigned long int lmid = 0xdeadbeefUL;
-+ if (dlinfo (handle, RTLD_DI_LMID, &lmid) != 0)
-+ printf ("dlinfo refuses RTLD_DI_LMID: %s\n", dlerror ());
-+ else
-+ {
-+ printf ("dlinfo RTLD_DI_LMID worked? %#lx\n", lmid);
-+ status = lmid == 0xdeadbeefUL;
-+ }
-+
-+#undef TRY
-+ dlclose (handle);
-+
-+ return status;
-+}
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/elf/Makefile 2003-02-21 01:28:09.000000000 -0500
-+++ glibc-2.3.2/elf/Makefile 2003-09-20 09:54:37.000000000 -0400
-@@ -69,7 +69,9 @@
- unwind-dw2.c unwind-dw2-fde.c unwind.h unwind-pe.h \
- unwind-dw2-fde.h dwarf2.h dl-procinfo.c tls.h dl-tls.h \
- tst-tlsmod1.c tst-tlsmod2.c tst-tlsmod3.c tst-tlsmod4.c \
-- tst-tlsmod5.c tst-tlsmod6.c \
-+ tst-tlsmod5.c tst-tlsmod6.c tst-tlsmod7.c tst-tlsmod8.c \
-+ tst-tlsmod9.c tst-tlsmod10.c tst-tlsmod11.c \
-+ tst-tlsmod12.c tst-tls10.h tst-alignmod.c \
- circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \
- circlemod3.c circlemod3a.c nodlopenmod2.c \
- tls-macros.h \
-@@ -80,6 +82,11 @@
- tst-array2dep.c \
- check-textrel.c dl-sysdep.h
-
-+CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-dl-iterate-phdr.c = $(uses-callbacks)
-+CFLAGS-dl-iterate-phdr-static.c = $(uses-callbacks)
-+
- include ../Makeconfig
-
- ifeq ($(unwind-find-fde),yes)
-@@ -142,7 +149,8 @@
- $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \
- neededtest3 neededtest4 unload2 lateglobal initfirst global \
- restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
-- circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8
-+ circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
-+ tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-align
- # reldep9
- test-srcs = tst-pathopt
- tests-vis-yes = vismain
-@@ -163,11 +171,14 @@
- reldep6mod0 reldep6mod1 reldep6mod2 reldep6mod3 reldep6mod4 \
- reldep7mod1 reldep7mod2 \
- tst-tlsmod1 tst-tlsmod2 tst-tlsmod3 tst-tlsmod4 \
-- tst-tlsmod5 tst-tlsmod6 \
-+ tst-tlsmod5 tst-tlsmod6 tst-tlsmod7 tst-tlsmod8 \
-+ tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \
-+ tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \
- circlemod1 circlemod1a circlemod2 circlemod2a \
- circlemod3 circlemod3a \
- reldep8mod1 reldep8mod2 reldep8mod3 \
-- reldep9mod1 reldep9mod2 reldep9mod3
-+ reldep9mod1 reldep9mod2 reldep9mod3 \
-+ tst-alignmod
- ifeq (yes,$(have-initfini-array))
- modules-names += tst-array2dep
- endif
-@@ -181,6 +192,9 @@
-
- include ../Rules
-
-+check-abi: check-abi-ld
-+update-abi: update-abi-ld
-+
- ifeq (yes,$(build-shared))
- # Make sure these things are built in the `make lib' pass so they can be used
- # to run programs during the `make others' pass.
-@@ -210,12 +224,15 @@
- mv -f $@T $@
-
- $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
-- sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\))$$@\1 \2@p' $< | \
-+ LC_ALL=C \
-+ sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
-+ $< | \
- while read lib file; do \
- case $$lib in \
- libc_pic.a) \
-- fgrep -l /$$file \
-+ LC_ALL=C fgrep -l /$$file \
- $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \
-+ LC_ALL=C \
- sed 's@^$(common-objpfx)\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\
- ;; \
- */*.a) \
-@@ -223,22 +240,24 @@
- *) echo "Wasn't expecting $$lib($$file)" >&2; exit 1 ;; \
- esac; \
- done > $@T
-- echo rtld-subdirs = `sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \
-- | sort -u` >> $@T
-+ echo rtld-subdirs = `LC_ALL=C sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \
-+ | LC_ALL=C sort -u` >> $@T
- mv -f $@T $@
-
- $(objpfx)rtld-libc.a: $(objpfx)librtld.mk FORCE
- $(MAKE) -f $< -f rtld-Rules
-
--generated += librtld.map librtld.mk rtld-libc.a
--
- $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
-- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)'
-+ $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
-+ -Wl,-Map,$@.map
-+
-+generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
-
- $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
- @rm -f $@.lds
- $(LINK.o) -nostdlib -nostartfiles -shared \
- $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \
-+ LC_ALL=C \
- sed -e '/^=========/,/^=========/!d;/^=========/d' \
- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
- > $@.lds
-@@ -305,11 +324,11 @@
-
- ifeq ($(ldd-rewrite-script),no)
- define gen-ldd
--sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new
-+LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new
- endef
- else
- define gen-ldd
--sed $($(ldd-shell)-ldd-rewrite) < $< | sed -f $(ldd-rewrite-script) > $@.new
-+LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< | LC_ALL=C sed -f $(ldd-rewrite-script) > $@.new
- endef
- endif
-
-@@ -323,7 +342,8 @@
-
- $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
- SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
--CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' -D'SLIBDIR="$(slibdir)"'
-+CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
-+ -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
- CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
- CFLAGS-cache.c = $(SYSCONF-FLAGS)
-
-@@ -372,6 +392,10 @@
- $(objpfx)reldep6mod3.so: $(objpfx)reldep6mod2.so
- $(objpfx)reldep6mod4.so: $(objpfx)reldep6mod1.so
- $(objpfx)tst-tlsmod3.so: $(objpfx)tst-tlsmod2.so
-+$(objpfx)tst-tlsmod8.so: $(objpfx)tst-tlsmod7.so
-+$(objpfx)tst-tlsmod10.so: $(objpfx)tst-tlsmod9.so
-+$(objpfx)tst-tlsmod12.so: $(objpfx)tst-tlsmod11.so
-+$(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so
- # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED
- $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so
- $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so
-@@ -383,10 +407,51 @@
- LDFLAGS-tst-tlsmod5.so = -nostdlib
- LDFLAGS-tst-tlsmod6.so = -nostdlib
-
-+testobj1.so-no-z-defs = yes
-+testobj3.so-no-z-defs = yes
-+testobj4.so-no-z-defs = yes
-+testobj5.so-no-z-defs = yes
-+testobj6.so-no-z-defs = yes
-+failobj.so-no-z-defs = yes
-+constload2.so-no-z-defs = yes
-+constload3.so-no-z-defs = yes
-+nodelmod1.so-no-z-defs = yes
-+nodelmod2.so-no-z-defs = yes
-+nodelmod4.so-no-z-defs = yes
-+nodel2mod2.so-no-z-defs = yes
-+reldepmod2.so-no-z-defs = yes
-+reldepmod3.so-no-z-defs = yes
-+reldepmod4.so-no-z-defs = yes
-+reldep4mod4.so-no-z-defs = yes
-+reldep4mod2.so-no-z-defs = yes
-+ltglobmod2.so-no-z-defs = yes
-+dblloadmod3.so-no-z-defs = yes
-+tst-tlsmod1.so-no-z-defs = yes
-+tst-tlsmod2.so-no-z-defs = yes
-+tst-tlsmod3.so-no-z-defs = yes
-+tst-tlsmod4.so-no-z-defs = yes
-+tst-tlsmod7.so-no-z-defs = yes
-+tst-tlsmod8.so-no-z-defs = yes
-+tst-tlsmod9.so-no-z-defs = yes
-+tst-tlsmod10.so-no-z-defs = yes
-+tst-tlsmod12.so-no-z-defs = yes
-+tst-tlsmod14a.so-no-z-defs = yes
-+tst-tlsmod14b.so-no-z-defs = yes
-+circlemod2.so-no-z-defs = yes
-+circlemod3.so-no-z-defs = yes
-+circlemod3a.so-no-z-defs = yes
-+reldep8mod2.so-no-z-defs = yes
-+reldep9mod1.so-no-z-defs = yes
-+
- # filtmod1.so has a special rule
- $(filter-out $(objpfx)filtmod1.so, $(test-modules)): $(objpfx)%.so: $(objpfx)%.os
- $(build-module)
-
-+ifeq ($(build-shared),yes)
-+# Build all the modules even when not actually running test programs.
-+tests: $(test-modules)
-+endif
-+
- $(objpfx)loadtest: $(libdl)
- LDFLAGS-loadtest = -rdynamic
-
-@@ -573,6 +638,23 @@
- $(objpfx)tst-tls9: $(libdl)
- $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
-
-+$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so
-+
-+$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so
-+
-+$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
-+
-+$(objpfx)tst-tls13: $(libdl)
-+$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
-+
-+$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl)
-+$(objpfx)tst-tls14.out:$(objpfx)tst-tlsmod14b.so
-+
-+CFLAGS-tst-align.c = $(stack-align-test-flags)
-+CFLAGS-tst-alignmod.c = $(stack-align-test-flags)
-+$(objpfx)tst-align: $(libdl)
-+$(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
-+
- ifdef libdl
- $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a
- $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
---- glibc-2.3.2/elf/Versions 2002-12-04 13:22:02.000000000 -0500
-+++ glibc-2.3.2/elf/Versions 2003-08-21 08:36:59.000000000 -0400
-@@ -21,6 +21,8 @@
- # functions used in other libraries
- _dl_open; _dl_close; _dl_addr;
- _dl_sym; _dl_vsym;
-+ _dl_open_hook;
-+ __libc_dlopen_mode; __libc_dlsym; __libc_dlclose;
- }
- }
-
-@@ -51,6 +53,6 @@
- _dl_unload_cache;
- _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls;
- _dl_get_tls_static_info; _dl_allocate_tls_init;
-- _dl_get_origin; _dl_tls_setup;
-+ _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo;
- }
- }
---- glibc-2.3.2/elf/cache.c 2002-12-29 14:14:59.000000000 -0500
-+++ glibc-2.3.2/elf/cache.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -86,6 +87,11 @@
- case FLAG_POWERPC_LIB64:
- fputs(",64bit", stdout);
- break;
-+ case FLAG_MIPS64_LIBN32:
-+ fputs(",N32", stdout);
-+ break;
-+ case FLAG_MIPS64_LIBN64:
-+ fputs(",64bit", stdout);
- case 0:
- break;
- default:
-@@ -299,6 +305,13 @@
-
- if (opt_format != 2)
- {
-+ /* struct cache_file_new is 64-bit aligned on some arches while
-+ only 32-bit aligned on other arches. Duplicate last old
-+ cache entry so that new cache in ld.so.cache can be used by
-+ both. */
-+ if (opt_format != 0)
-+ cache_entry_old_count = (cache_entry_old_count + 1) & ~1;
-+
- /* And the list of all entries in the old format. */
- file_entries_size = sizeof (struct cache_file)
- + cache_entry_old_count * sizeof (struct file_entry);
-@@ -345,7 +358,7 @@
- entry = entry->next, ++idx_new)
- {
- /* First the library. */
-- if (opt_format != 2)
-+ if (opt_format != 2 && entry->hwcap == 0)
- {
- file_entries->libs[idx_old].flags = entry->flags;
- /* XXX: Actually we can optimize here and remove duplicates. */
-@@ -368,7 +381,7 @@
- ++str;
- str_offset += len + 1;
- /* Then the path. */
-- if (opt_format != 2)
-+ if (opt_format != 2 && entry->hwcap == 0)
- file_entries->libs[idx_old].value = str_offset + pad;
- if (opt_format != 0)
- file_entries_new->libs[idx_new].value = str_offset;
-@@ -382,6 +395,11 @@
- ++idx_old;
- }
-
-+ /* Duplicate last old cache entry if needed. */
-+ if (opt_format != 2
-+ && idx_old < cache_entry_old_count)
-+ file_entries->libs[idx_old] = file_entries->libs[idx_old - 1];
-+
- /* Write out the cache. */
-
- /* Write cache first to a temporary file and rename it later. */
-@@ -458,7 +476,7 @@
- {
- struct cache_entry *new_entry, *ptr, *prev;
- char *full_path;
-- int len, i;
-+ size_t len, i;
-
- new_entry = (struct cache_entry *) xmalloc (sizeof (struct cache_entry));
-
---- glibc-2.3.2/elf/dl-addr.c 2002-09-27 23:35:22.000000000 -0400
-+++ glibc-2.3.2/elf/dl-addr.c 2003-03-15 15:02:08.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Locate the shared object symbol nearest a given address.
-- Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -24,7 +24,8 @@
-
- int
- internal_function
--_dl_addr (const void *address, Dl_info *info)
-+_dl_addr (const void *address, Dl_info *info,
-+ struct link_map **mapp, const ElfW(Sym) **symbolp)
- {
- const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address);
- struct link_map *l, *match;
-@@ -93,6 +94,11 @@
- || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK))
- matchsym = (ElfW(Sym) *) symtab;
-
-+ if (mapp)
-+ *mapp = match;
-+ if (symbolp)
-+ *symbolp = matchsym;
-+
- if (matchsym)
- {
- /* We found a symbol close by. Fill in its name and exact address. */
---- glibc-2.3.2/elf/dl-close.c 2003-01-27 15:44:03.000000000 -0500
-+++ glibc-2.3.2/elf/dl-close.c 2003-04-28 08:20:35.000000000 -0400
-@@ -80,7 +80,7 @@
- return true;
- }
-
-- while (idx - disp > disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0)
-+ while (idx - disp > (disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0))
- {
- --idx;
-
-@@ -321,8 +321,9 @@
- _dl_debug_state ();
-
- #ifdef USE_TLS
-- size_t tls_free_start, tls_free_end;
-- tls_free_start = tls_free_end = GL(dl_tls_static_used);
-+ size_t tls_free_start;
-+ size_t tls_free_end;
-+ tls_free_start = tls_free_end = NO_TLS_OFFSET;
- #endif
-
- /* Check each element of the search list to see if all references to
-@@ -365,15 +366,56 @@
- /* All dynamically loaded modules with TLS are unloaded. */
- GL(dl_tls_max_dtv_idx) = GL(dl_tls_static_nelem);
-
-- if (imap->l_tls_offset != 0)
-+ if (imap->l_tls_offset != NO_TLS_OFFSET)
- {
- /* Collect a contiguous chunk built from the objects in
- this search list, going in either direction. When the
- whole chunk is at the end of the used area then we can
- reclaim it. */
-- if (imap->l_tls_offset == tls_free_end)
-+# if TLS_TCB_AT_TP
-+ if (tls_free_start == NO_TLS_OFFSET
-+ || (size_t) imap->l_tls_offset == tls_free_start)
-+ {
-+ /* Extend the contiguous chunk being reclaimed. */
-+ tls_free_start
-+ = imap->l_tls_offset - imap->l_tls_blocksize;
-+
-+ if (tls_free_end == NO_TLS_OFFSET)
-+ tls_free_end = imap->l_tls_offset;
-+ }
-+ else if (imap->l_tls_offset - imap->l_tls_blocksize
-+ == tls_free_end)
-+ /* Extend the chunk backwards. */
-+ tls_free_end = imap->l_tls_offset;
-+ else
-+ {
-+ /* This isn't contiguous with the last chunk freed.
-+ One of them will be leaked unless we can free
-+ one block right away. */
-+ if (tls_free_end == GL(dl_tls_static_used))
-+ {
-+ GL(dl_tls_static_used) = tls_free_start;
-+ tls_free_end = imap->l_tls_offset;
-+ tls_free_start
-+ = tls_free_end - imap->l_tls_blocksize;
-+ }
-+ else if ((size_t) imap->l_tls_offset
-+ == GL(dl_tls_static_used))
-+ GL(dl_tls_static_used)
-+ = imap->l_tls_offset - imap->l_tls_blocksize;
-+ else if (tls_free_end < (size_t) imap->l_tls_offset)
-+ {
-+ /* We pick the later block. It has a chance to
-+ be freed. */
-+ tls_free_end = imap->l_tls_offset;
-+ tls_free_start
-+ = tls_free_end - imap->l_tls_blocksize;
-+ }
-+ }
-+# elif TLS_DTV_AT_TP
-+ if ((size_t) imap->l_tls_offset == tls_free_end)
- /* Extend the contiguous chunk being reclaimed. */
-- tls_free_end += imap->l_tls_blocksize;
-+ tls_free_end -= imap->l_tls_blocksize;
- else if (imap->l_tls_offset + imap->l_tls_blocksize
- == tls_free_start)
- /* Extend the chunk backwards. */
-@@ -387,6 +429,9 @@
- tls_free_start = imap->l_tls_offset;
- tls_free_end = tls_free_start + imap->l_tls_blocksize;
- }
-+# else
-+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-+# endif
- }
- }
- #endif
---- glibc-2.3.2/elf/dl-conflict.c 2002-10-17 13:05:51.000000000 -0400
-+++ glibc-2.3.2/elf/dl-conflict.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Resolve conflicts against already prelinked libraries.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
-
-@@ -28,11 +28,11 @@
- #include <sys/types.h>
- #include "dynamic-link.h"
-
--
- void
- _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict,
- ElfW(Rela) *conflictend)
- {
-+#if ! ELF_MACHINE_NO_RELA
- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0))
- _dl_printf ("\nconflict processing: %s\n",
- l->l_name[0] ? l->l_name : rtld_progname);
-@@ -64,4 +64,5 @@
- for (; conflict < conflictend; ++conflict)
- elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset);
- }
-+#endif
- }
---- glibc-2.3.2/elf/dl-iteratephdr.c 2002-12-06 01:42:30.000000000 -0500
-+++ glibc-2.3.2/elf/dl-iteratephdr.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get loaded objects program headers.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
-
-@@ -23,6 +23,12 @@
- #include <stddef.h>
- #include <bits/libc-lock.h>
-
-+static void
-+cancel_handler (void *arg __attribute__((unused)))
-+{
-+ __rtld_lock_unlock_recursive (GL(dl_load_lock));
-+}
-+
- int
- __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
- size_t size, void *data), void *data)
-@@ -33,12 +39,10 @@
-
- /* Make sure we are alone. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
-+ __libc_cleanup_push (cancel_handler, 0);
-
- for (l = GL(dl_loaded); l != NULL; l = l->l_next)
- {
-- /* Skip the dynamic linker. */
-- if (l->l_phdr == NULL)
-- continue;
- info.dlpi_addr = l->l_addr;
- info.dlpi_name = l->l_name;
- info.dlpi_phdr = l->l_phdr;
-@@ -49,6 +53,7 @@
- }
-
- /* Release the lock. */
-+ __libc_cleanup_pop (0);
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- return ret;
---- glibc-2.3.2/elf/dl-libc.c 2002-11-19 03:38:32.000000000 -0500
-+++ glibc-2.3.2/elf/dl-libc.c 2003-08-21 08:36:59.000000000 -0400
-@@ -96,6 +96,50 @@
- _dl_close ((struct link_map *) ptr);
- }
-
-+/* This code is to support __libc_dlopen from __libc_dlopen'ed shared
-+ libraries. We need to ensure the statically linked __libc_dlopen
-+ etc. functions are used instead of the dynamically loaded. */
-+struct dl_open_hook
-+{
-+ void *(*dlopen_mode) (const char *name, int mode);
-+ void *(*dlsym) (void *map, const char *name);
-+ int (*dlclose) (void *map);
-+};
-+
-+#ifdef SHARED
-+extern struct dl_open_hook *_dl_open_hook;
-+libc_hidden_proto (_dl_open_hook);
-+struct dl_open_hook *_dl_open_hook __attribute__((nocommon));
-+libc_hidden_data_def (_dl_open_hook);
-+#else
-+static void
-+do_dlsym_private (void *ptr)
-+{
-+ lookup_t l;
-+ struct r_found_version vers;
-+ vers.name = "GLIBC_PRIVATE";
-+ vers.hidden = 1;
-+ /* vers.hash = _dl_elf_hash (version); */
-+ vers.hash = 0x0963cf85;
-+ /* FIXME: Shouldn't we use libc.so.6* here? */
-+ vers.filename = NULL;
-+
-+ struct do_dlsym_args *args = (struct do_dlsym_args *) ptr;
-+ args->ref = NULL;
-+ l = _dl_lookup_versioned_symbol (args->name, args->map,
-+ &args->ref, args->map->l_scope,
-+ &vers, 0, 0);
-+ args->loadbase = l;
-+}
-+
-+static struct dl_open_hook _dl_open_hook =
-+ {
-+ .dlopen_mode = __libc_dlopen_mode,
-+ .dlsym = __libc_dlsym,
-+ .dlclose = __libc_dlclose
-+ };
-+#endif
-+
- /* ... and these functions call dlerror_run. */
-
- void *
-@@ -105,8 +149,31 @@
- args.name = name;
- args.mode = mode;
-
-+#ifdef SHARED
-+ if (__builtin_expect (_dl_open_hook != NULL, 0))
-+ return _dl_open_hook->dlopen_mode (name, mode);
- return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);
-+#else
-+ if (dlerror_run (do_dlopen, &args))
-+ return NULL;
-+
-+ struct do_dlsym_args sargs;
-+ sargs.map = args.map;
-+ sargs.name = "_dl_open_hook";
-+
-+ if (! dlerror_run (do_dlsym_private, &sargs))
-+ {
-+ struct dl_open_hook **hook
-+ = (struct dl_open_hook **)
-+ (DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref));
-+ if (hook != NULL)
-+ *hook = &_dl_open_hook;
-+ }
-+
-+ return (void *) args.map;
-+#endif
- }
-+libc_hidden_def (__libc_dlopen_mode)
-
- void *
- __libc_dlsym (void *map, const char *name)
-@@ -115,15 +182,25 @@
- args.map = map;
- args.name = name;
-
-+#ifdef SHARED
-+ if (__builtin_expect (_dl_open_hook != NULL, 0))
-+ return _dl_open_hook->dlsym (map, name);
-+#endif
- return (dlerror_run (do_dlsym, &args) ? NULL
- : (void *) (DL_SYMBOL_ADDRESS (args.loadbase, args.ref)));
- }
-+libc_hidden_def (__libc_dlsym)
-
- int
- __libc_dlclose (void *map)
- {
-+#ifdef SHARED
-+ if (__builtin_expect (_dl_open_hook != NULL, 0))
-+ return _dl_open_hook->dlclose (map);
-+#endif
- return dlerror_run (do_dlclose, map);
- }
-+libc_hidden_def (__libc_dlclose)
-
-
- libc_freeres_fn (free_mem)
---- glibc-2.3.2/elf/dl-load.c 2003-01-16 13:14:41.000000000 -0500
-+++ glibc-2.3.2/elf/dl-load.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Map in a shared object's segments from the file.
-- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <ldsodefs.h>
-+#include <bits/wordsize.h>
- #include <sys/mman.h>
- #include <sys/param.h>
- #include <sys/stat.h>
-@@ -97,19 +98,26 @@
- /* Type for the buffer we put the ELF header and hopefully the program
- header. This buffer does not really have to be too large. In most
- cases the program header follows the ELF header directly. If this
-- is not the case all bets are off and we can make the header arbitrarily
-- large and still won't get it read. This means the only question is
-- how large are the ELF and program header combined. The ELF header
-- in 64-bit files is 56 bytes long. Each program header entry is again
-- 56 bytes long. I.e., even with a file which has 17 program header
-- entries we only have to read 1kB. And 17 program header entries is
-- plenty, normal files have < 10. If this heuristic should really fail
-- for some file the code in `_dl_map_object_from_fd' knows how to
-- recover. */
-+ is not the case all bets are off and we can make the header
-+ arbitrarily large and still won't get it read. This means the only
-+ question is how large are the ELF and program header combined. The
-+ ELF header 32-bit files is 52 bytes long and in 64-bit files is 64
-+ bytes long. Each program header entry is again 32 and 56 bytes
-+ long respectively. I.e., even with a file which has 7 program
-+ header entries we only have to read 512B. Add to this a bit of
-+ margin for program notes and reading 512B and 640B for 32-bit and
-+ 64-bit files respecitvely is enough. If this heuristic should
-+ really fail for some file the code in `_dl_map_object_from_fd'
-+ knows how to recover. */
- struct filebuf
- {
- ssize_t len;
-- char buf[1024] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
-+#if __WORDSIZE == 32
-+# define FILEBUF_SIZE 512
-+#else
-+# define FILEBUF_SIZE 640
-+#endif
-+ char buf[FILEBUF_SIZE] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
- };
-
- /* This is the decomposed LD_LIBRARY_PATH search path. */
-@@ -353,7 +361,7 @@
-
- static size_t max_dirnamelen;
-
--static inline struct r_search_path_elem **
-+static struct r_search_path_elem **
- fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
- int check_trusted, const char *what, const char *where)
- {
-@@ -568,6 +576,34 @@
- sps->malloced = 1;
- }
-
-+/* Make sure cached path information is stored in *SP
-+ and return true if there are any paths to search there. */
-+static bool
-+cache_rpath (struct link_map *l,
-+ struct r_search_path_struct *sp,
-+ int tag,
-+ const char *what)
-+{
-+ if (sp->dirs == (void *) -1)
-+ return false;
-+
-+ if (sp->dirs != NULL)
-+ return true;
-+
-+ if (l->l_info[tag] == NULL)
-+ {
-+ /* There is no path. */
-+ sp->dirs = (void *) -1;
-+ return false;
-+ }
-+
-+ /* Make sure the cache information is available. */
-+ decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
-+ + l->l_info[tag]->d_un.d_val),
-+ l, what);
-+ return true;
-+}
-+
-
- void
- internal_function
-@@ -877,6 +913,7 @@
- int prot;
- } loadcmds[l->l_phnum], *c;
- size_t nloadcmds = 0;
-+ bool has_holes = false;
-
- /* The struct is initialized to zero so this is not necessary:
- l->l_ld = 0;
-@@ -922,6 +959,11 @@
- c->allocend = ph->p_vaddr + ph->p_memsz;
- c->mapoff = ph->p_offset & ~(ph->p_align - 1);
-
-+ /* Determine whether there is a gap between the last segment
-+ and this one. */
-+ if (nloadcmds > 1 && c[-1].mapend != c->mapstart)
-+ has_holes = true;
-+
- /* Optimize a common case. */
- #if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7
- c->prot = (PF_TO_PROT
-@@ -945,6 +987,10 @@
-
- l->l_tls_blocksize = ph->p_memsz;
- l->l_tls_align = ph->p_align;
-+ if (ph->p_align == 0)
-+ l->l_tls_firstbyte_offset = 0;
-+ else
-+ l->l_tls_firstbyte_offset = ph->p_vaddr & (ph->p_align - 1);
- l->l_tls_initimage_size = ph->p_filesz;
- /* Since we don't know the load address yet only store the
- offset. We will adjust it later. */
-@@ -1014,6 +1060,15 @@
- break;
- }
-
-+ if (__builtin_expect (nloadcmds == 0, 0))
-+ {
-+ /* This only happens for a bogus object that will be caught with
-+ another error below. But we don't want to go through the
-+ calculations below using NLOADCMDS - 1. */
-+ errstring = N_("object file has no loadable segments");
-+ goto call_lose;
-+ }
-+
- /* Now process the load commands and map segments into memory. */
- c = loadcmds;
-
-@@ -1051,14 +1106,15 @@
- l->l_map_end = l->l_map_start + maplength;
- l->l_addr = l->l_map_start - c->mapstart;
-
-- /* Change protection on the excess portion to disallow all access;
-- the portions we do not remap later will be inaccessible as if
-- unallocated. Then jump into the normal segment-mapping loop to
-- handle the portion of the segment past the end of the file
-- mapping. */
-- __mprotect ((caddr_t) (l->l_addr + c->mapend),
-- loadcmds[nloadcmds - 1].allocend - c->mapend,
-- PROT_NONE);
-+ if (has_holes)
-+ /* Change protection on the excess portion to disallow all access;
-+ the portions we do not remap later will be inaccessible as if
-+ unallocated. Then jump into the normal segment-mapping loop to
-+ handle the portion of the segment past the end of the file
-+ mapping. */
-+ __mprotect ((caddr_t) (l->l_addr + c->mapend),
-+ loadcmds[nloadcmds - 1].allocend - c->mapend,
-+ PROT_NONE);
-
- goto postmap;
- }
-@@ -1118,23 +1174,18 @@
- if (zeropage > zero)
- {
- /* Zero the final part of the last page of the segment. */
-- if ((c->prot & PROT_WRITE) == 0)
-+ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
- {
- /* Dag nab it. */
-- if (__builtin_expect (__mprotect ((caddr_t)
-- (zero
-- & ~(GL(dl_pagesize)
-- - 1)),
-- GL(dl_pagesize),
-- c->prot|PROT_WRITE) < 0,
-- 0))
-+ if (__mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
-+ GL(dl_pagesize), c->prot|PROT_WRITE) < 0)
- {
- errstring = N_("cannot change memory protections");
- goto call_lose_errno;
- }
- }
- memset ((void *) zero, '\0', zeropage - zero);
-- if ((c->prot & PROT_WRITE) == 0)
-+ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
- __mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
- GL(dl_pagesize), c->prot);
- }
-@@ -1221,7 +1272,7 @@
- (unsigned long int) l->l_phdr,
- (int) sizeof (void *) * 2, l->l_phnum);
-
-- elf_get_dynamic_info (l);
-+ elf_get_dynamic_info (l, NULL);
-
- /* Make sure we are not dlopen'ing an object
- that has the DF_1_NOOPEN flag set. */
-@@ -1728,29 +1779,9 @@
- /* First try the DT_RPATH of the dependent object that caused NAME
- to be loaded. Then that object's dependent, and on up. */
- for (l = loader; fd == -1 && l; l = l->l_loader)
-- {
-- if (l->l_rpath_dirs.dirs == NULL)
-- {
-- if (l->l_info[DT_RPATH] == NULL)
-- {
-- /* There is no path. */
-- l->l_rpath_dirs.dirs = (void *) -1;
-- continue;
-- }
-- else
-- {
-- /* Make sure the cache information is available. */
-- size_t ptrval = (D_PTR (l, l_info[DT_STRTAB])
-- + l->l_info[DT_RPATH]->d_un.d_val);
-- decompose_rpath (&l->l_rpath_dirs,
-- (const char *) ptrval, l, "RPATH");
-- }
-- }
--
-- if (l->l_rpath_dirs.dirs != (void *) -1)
-- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
-- &realname, &fb);
-- }
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
-+ fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
-+ &realname, &fb);
-
- /* If dynamically linked, try the DT_RPATH of the executable
- itself. */
-@@ -1766,37 +1797,12 @@
- fd = open_path (name, namelen, preloaded, &env_path_list,
- &realname, &fb);
-
-- /* Look at the RUNPATH information for this binary.
--
-- Note that this is no real loop. 'while' is used only to enable
-- us to use 'break' instead of a 'goto' to jump to the end. The
-- loop is always left after the first round. */
-- while (fd == -1 && loader != NULL
-- && loader->l_runpath_dirs.dirs != (void *) -1)
-- {
-- if (loader->l_runpath_dirs.dirs == NULL)
-- {
-- if (loader->l_info[DT_RUNPATH] == NULL)
-- {
-- /* No RUNPATH. */
-- loader->l_runpath_dirs.dirs = (void *) -1;
-- break;
-- }
-- else
-- {
-- /* Make sure the cache information is available. */
-- size_t ptrval = (D_PTR (loader, l_info[DT_STRTAB])
-- + loader->l_info[DT_RUNPATH]->d_un.d_val);
-- decompose_rpath (&loader->l_runpath_dirs,
-- (const char *) ptrval, loader, "RUNPATH");
-- }
-- }
--
-- if (loader->l_runpath_dirs.dirs != (void *) -1)
-- fd = open_path (name, namelen, preloaded,
-- &loader->l_runpath_dirs, &realname, &fb);
-- break;
-- }
-+ /* Look at the RUNPATH information for this binary. */
-+ if (fd == -1 && loader != NULL
-+ && cache_rpath (loader, &loader->l_runpath_dirs,
-+ DT_RUNPATH, "RUNPATH"))
-+ fd = open_path (name, namelen, preloaded,
-+ &loader->l_runpath_dirs, &realname, &fb);
-
- if (fd == -1
- && (__builtin_expect (! preloaded, 1)
-@@ -1920,3 +1926,86 @@
- return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode);
- }
- INTDEF (_dl_map_object)
-+
-+void
-+internal_function
-+_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting)
-+{
-+ if (counting)
-+ {
-+ si->dls_cnt = 0;
-+ si->dls_size = 0;
-+ }
-+
-+ unsigned int idx = 0;
-+ char *allocptr = (char *) &si->dls_serpath[si->dls_cnt];
-+ void add_path (const struct r_search_path_struct *sps, unsigned int flags)
-+# define add_path(sps, flags) add_path(sps, 0) /* XXX */
-+ {
-+ if (sps->dirs != (void *) -1)
-+ {
-+ struct r_search_path_elem **dirs = sps->dirs;
-+ do
-+ {
-+ const struct r_search_path_elem *const r = *dirs++;
-+ if (counting)
-+ {
-+ si->dls_cnt++;
-+ si->dls_size += r->dirnamelen;
-+ }
-+ else
-+ {
-+ Dl_serpath *const sp = &si->dls_serpath[idx++];
-+ sp->dls_name = allocptr;
-+ allocptr = __mempcpy (allocptr,
-+ r->dirname, r->dirnamelen - 1);
-+ *allocptr++ = '\0';
-+ sp->dls_flags = flags;
-+ }
-+ }
-+ while (*dirs != NULL);
-+ }
-+ }
-+
-+ /* When the object has the RUNPATH information we don't use any RPATHs. */
-+ if (loader->l_info[DT_RUNPATH] == NULL)
-+ {
-+ /* First try the DT_RPATH of the dependent object that caused NAME
-+ to be loaded. Then that object's dependent, and on up. */
-+
-+ struct link_map *l = loader;
-+ do
-+ {
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
-+ add_path (&l->l_rpath_dirs, XXX_RPATH);
-+ l = l->l_loader;
-+ }
-+ while (l != NULL);
-+
-+ /* If dynamically linked, try the DT_RPATH of the executable itself. */
-+ l = GL(dl_loaded);
-+ if (l != NULL && l->l_type != lt_loaded && l != loader)
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
-+ add_path (&l->l_rpath_dirs, XXX_RPATH);
-+ }
-+
-+ /* Try the LD_LIBRARY_PATH environment variable. */
-+ add_path (&env_path_list, XXX_ENV);
-+
-+ /* Look at the RUNPATH information for this binary. */
-+ if (cache_rpath (loader, &loader->l_runpath_dirs, DT_RUNPATH, "RUNPATH"))
-+ add_path (&loader->l_runpath_dirs, XXX_RUNPATH);
-+
-+ /* XXX
-+ Here is where ld.so.cache gets checked, but we don't have
-+ a way to indicate that in the results for Dl_serinfo. */
-+
-+ /* Finally, try the default path. */
-+ if (!(loader->l_flags_1 & DF_1_NODEFLIB))
-+ add_path (&rtld_search_dirs, XXX_default);
-+
-+ if (counting)
-+ /* Count the struct size before the string area, which we didn't
-+ know before we completed dls_cnt. */
-+ si->dls_size += (char *) &si->dls_serpath[si->dls_cnt] - (char *) si;
-+}
---- glibc-2.3.2/elf/dl-lookup.c 2003-01-11 04:51:49.000000000 -0500
-+++ glibc-2.3.2/elf/dl-lookup.c 2003-08-21 08:36:59.000000000 -0400
-@@ -273,17 +273,30 @@
- {
- /* It is very tricky. We need to figure out what value to
- return for the protected symbol. */
-- struct sym_val protected_value = { NULL, NULL };
--
-- for (scope = symbol_scope; *scope; ++scope)
-- if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope,
-- 0, flags, NULL, ELF_RTYPE_CLASS_PLT))
-- break;
--
-- if (protected_value.s != NULL && protected_value.m != undef_map)
-+ if (type_class == ELF_RTYPE_CLASS_PLT)
- {
-- current_value.s = *ref;
-- current_value.m = undef_map;
-+ if (current_value.s != NULL && current_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
-+ }
-+ else
-+ {
-+ struct sym_val protected_value = { NULL, NULL };
-+
-+ for (scope = symbol_scope; *scope; ++scope)
-+ if (_dl_do_lookup (undef_name, hash, *ref,
-+ &protected_value, *scope, 0, flags,
-+ NULL, ELF_RTYPE_CLASS_PLT))
-+ break;
-+
-+ if (protected_value.s != NULL
-+ && protected_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
- }
- }
-
-@@ -465,18 +478,31 @@
- {
- /* It is very tricky. We need to figure out what value to
- return for the protected symbol. */
-- struct sym_val protected_value = { NULL, NULL };
--
-- for (scope = symbol_scope; *scope; ++scope)
-- if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value,
-- *scope, 0, version, NULL,
-- ELF_RTYPE_CLASS_PLT))
-- break;
--
-- if (protected_value.s != NULL && protected_value.m != undef_map)
-+ if (type_class == ELF_RTYPE_CLASS_PLT)
- {
-- current_value.s = *ref;
-- current_value.m = undef_map;
-+ if (current_value.s != NULL && current_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
-+ }
-+ else
-+ {
-+ struct sym_val protected_value = { NULL, NULL };
-+
-+ for (scope = symbol_scope; *scope; ++scope)
-+ if (_dl_do_lookup_versioned (undef_name, hash, *ref,
-+ &protected_value,
-+ *scope, 0, version, NULL,
-+ ELF_RTYPE_CLASS_PLT))
-+ break;
-+
-+ if (protected_value.s != NULL
-+ && protected_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
- }
- }
-
-@@ -678,20 +704,21 @@
- {
- _dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ",
- conflict ? "conflict" : "lookup",
-- (int) sizeof (ElfW(Addr)) * 2, undef_map->l_map_start,
- (int) sizeof (ElfW(Addr)) * 2,
-- ((ElfW(Addr)) *ref) - undef_map->l_map_start,
-+ (size_t) undef_map->l_map_start,
-+ (int) sizeof (ElfW(Addr)) * 2,
-+ (size_t) (((ElfW(Addr)) *ref) - undef_map->l_map_start),
- (int) sizeof (ElfW(Addr)) * 2,
-- (ElfW(Addr)) (value->s ? value->m->l_map_start : 0),
-+ (size_t) (value->s ? value->m->l_map_start : 0),
- (int) sizeof (ElfW(Addr)) * 2,
-- (ElfW(Addr)) (value->s ? value->s->st_value : 0));
-+ (size_t) (value->s ? value->s->st_value : 0));
-
- if (conflict)
- _dl_printf ("x 0x%0*Zx 0x%0*Zx ",
- (int) sizeof (ElfW(Addr)) * 2,
-- (ElfW(Addr)) (val.s ? val.m->l_map_start : 0),
-+ (size_t) (val.s ? val.m->l_map_start : 0),
- (int) sizeof (ElfW(Addr)) * 2,
-- (ElfW(Addr)) (val.s ? val.s->st_value : 0));
-+ (size_t) (val.s ? val.s->st_value : 0));
-
- _dl_printf ("/%x %s\n", type_class, undef_name);
- }
---- glibc-2.3.2/elf/dl-object.c 2003-01-10 03:23:58.000000000 -0500
-+++ glibc-2.3.2/elf/dl-object.c 2003-04-28 08:20:35.000000000 -0400
-@@ -53,6 +53,10 @@
- new->l_name = realname;
- new->l_type = type;
- new->l_loader = loader;
-+#if defined USE_TLS && NO_TLS_OFFSET != 0
-+ new->l_tls_offset = NO_TLS_OFFSET;
-+#endif
-+
- /* new->l_global = 0; We use calloc therefore not necessary. */
-
- /* Use the 'l_scope_mem' array by default for the the 'l_scope'
---- glibc-2.3.2/elf/dl-open.c 2003-01-27 19:47:52.000000000 -0500
-+++ glibc-2.3.2/elf/dl-open.c 2003-08-21 08:36:59.000000000 -0400
-@@ -303,6 +303,16 @@
- }
-
- #ifdef USE_TLS
-+ /* Do static TLS initialization now if it has been delayed because
-+ the TLS template might not be fully relocated at _dl_allocate_static_tls
-+ time. */
-+ for (l = new; l; l = l->l_next)
-+ if (l->l_need_tls_init)
-+ {
-+ l->l_need_tls_init = 0;
-+ GL(dl_init_static_tls) (l);
-+ }
-+
- /* We normally don't bump the TLS generation counter. There must be
- actually a need to do this. */
- any_tls = false;
---- glibc-2.3.2/elf/dl-profile.c 2002-08-02 17:46:57.000000000 -0400
-+++ glibc-2.3.2/elf/dl-profile.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Profiling of shared libraries.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
- Based on the BSD mcount implementation.
-@@ -34,7 +34,7 @@
- #include <sys/mman.h>
- #include <sys/param.h>
- #include <sys/stat.h>
--#include <atomicity.h>
-+#include <atomic.h>
-
- /* The LD_PROFILE feature has to be implemented different to the
- normal profiling using the gmon/ functions. The problem is that an
-@@ -516,24 +516,24 @@
- size_t newfromidx;
- to_index = (data[narcs].self_pc
- / (hashfraction * sizeof (*tos)));
-- newfromidx = exchange_and_add (&fromidx, 1) + 1;
-+ newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1;
- froms[newfromidx].here = &data[narcs];
- froms[newfromidx].link = tos[to_index];
- tos[to_index] = newfromidx;
-- atomic_add (&narcs, 1);
-+ atomic_increment (&narcs);
- }
-
- /* If we still have no entry stop searching and insert. */
- if (*topcindex == 0)
- {
-- uint_fast32_t newarc = exchange_and_add (narcsp, 1);
-+ uint_fast32_t newarc = atomic_exchange_and_add (narcsp, 1);
-
- /* In rare cases it could happen that all entries in FROMS are
- occupied. So we cannot count this anymore. */
- if (newarc >= fromlimit)
- goto done;
-
-- *topcindex = exchange_and_add (&fromidx, 1) + 1;
-+ *topcindex = atomic_exchange_and_add (&fromidx, 1) + 1;
- fromp = &froms[*topcindex];
-
- fromp->here = &data[newarc];
-@@ -541,7 +541,7 @@
- data[newarc].self_pc = selfpc;
- data[newarc].count = 0;
- fromp->link = 0;
-- atomic_add (&narcs, 1);
-+ atomic_increment (&narcs);
-
- break;
- }
-@@ -554,7 +554,7 @@
- }
-
- /* Increment the counter. */
-- atomic_add (&fromp->here->count, 1);
-+ atomic_increment (&fromp->here->count);
-
- done:
- ;
---- glibc-2.3.2/elf/dl-reloc.c 2003-01-30 12:35:50.000000000 -0500
-+++ glibc-2.3.2/elf/dl-reloc.c 2003-08-21 08:36:59.000000000 -0400
-@@ -40,27 +40,83 @@
- dynamically loaded. This can only work if there is enough surplus in
- the static TLS area already allocated for each running thread. If this
- object's TLS segment is too big to fit, we fail. If it fits,
-- we set MAP->l_tls_offset and return. */
--static void __attribute_noinline__
--allocate_static_tls (struct link_map *map)
-+ we set MAP->l_tls_offset and return.
-+ This function intentionally does not return any value but signals error
-+ directly, as static TLS should be rare and code handling it should
-+ not be inlined as much as possible. */
-+void
-+internal_function __attribute_noinline__
-+_dl_allocate_static_tls (struct link_map *map)
- {
-- size_t offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
-- if (offset + map->l_tls_blocksize
-+ size_t offset;
-+ size_t used;
-+ size_t check;
-+ size_t freebytes;
-+ size_t n;
-+ size_t blsize;
-+
-+ /* If the alignment requirements are too high fail. */
-+ if (map->l_tls_align > GL(dl_tls_static_align))
-+ {
-+ fail:
-+ INTUSE(_dl_signal_error) (0, map->l_name, NULL, N_("\
-+cannot allocate memory in static TLS block"));
-+ }
-+
- # if TLS_TCB_AT_TP
-- + TLS_TCB_SIZE
-+ freebytes = GL(dl_tls_static_size) - GL(dl_tls_static_used) - TLS_TCB_SIZE;
-+
-+ blsize = map->l_tls_blocksize + map->l_tls_firstbyte_offset;
-+ if (freebytes < blsize)
-+ goto fail;
-+
-+ n = (freebytes - blsize) / map->l_tls_align;
-+
-+ offset = GL(dl_tls_static_used) + (freebytes - n * map->l_tls_align
-+ - map->l_tls_firstbyte_offset);
-+
-+ map->l_tls_offset = GL(dl_tls_static_used) = offset;
- # elif TLS_DTV_AT_TP
-+ offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
-+ used = offset + map->l_tls_blocksize;
-+ check = used;
- /* dl_tls_static_used includes the TCB at the beginning. */
-+
-+ if (check > GL(dl_tls_static_size))
-+ goto fail;
-+
-+ map->l_tls_offset = offset;
-+ GL(dl_tls_static_used) = used;
- # else
- # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
- # endif
-- > GL(dl_tls_static_size))
-- {
-- const char *errstring = N_("\
--shared object cannot be dlopen()ed: static TLS memory too small");
-- INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring);
-- }
-- map->l_tls_offset = offset;
-- GL(dl_tls_static_used) = offset + map->l_tls_blocksize;
-+
-+ if (map->l_relocated)
-+ GL(dl_init_static_tls) (map);
-+ else
-+ map->l_need_tls_init = 1;
-+}
-+
-+/* Initialize static TLS area and DTV for current (only) thread.
-+ libpthread implementations should provide their own hook
-+ to handle all threads. */
-+void
-+_dl_nothread_init_static_tls (struct link_map *map)
-+{
-+# if TLS_TCB_AT_TP
-+ void *dest = (char *) THREAD_SELF - map->l_tls_offset;
-+# elif TLS_DTV_AT_TP
-+ void *dest = (char *) THREAD_SELF + map->l_tls_offset + TLS_PRE_TCB_SIZE;
-+# else
-+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-+# endif
-+
-+ /* Fill in the DTV slot so that a later LD/GD access will find it. */
-+ THREAD_DTV ()[map->l_tls_modid].pointer = dest;
-+
-+ /* Initialize the memory. */
-+ memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
-+ '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
- }
- #endif
-
-@@ -200,8 +256,8 @@
- intended to produce. */
- #define CHECK_STATIC_TLS(map, sym_map) \
- do { \
-- if (__builtin_expect ((sym_map)->l_tls_offset == 0, 0)) \
-- allocate_static_tls (sym_map); \
-+ if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
-+ _dl_allocate_static_tls (sym_map); \
- } while (0)
-
- #include "dynamic-link.h"
---- glibc-2.3.2/elf/dl-support.c 2003-01-30 12:31:18.000000000 -0500
-+++ glibc-2.3.2/elf/dl-support.c 2003-08-21 08:36:59.000000000 -0400
-@@ -98,6 +98,10 @@
- hp_timing_t _dl_cpuclock_offset;
- #endif
-
-+#ifdef USE_TLS
-+void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls;
-+#endif
-+
- /* This is zero at program start to signal that the global scope map is
- allocated by rtld. Later it keeps the size of the map. It might be
- reset if in _dl_close if the last global object is removed. */
-@@ -121,12 +125,15 @@
-
- int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
-
--struct ElfW(Phdr) *_dl_phdr;
-+ElfW(Phdr) *_dl_phdr;
- size_t _dl_phnum;
-+unsigned long int _dl_hwcap __attribute__ ((nocommon));
-
- #ifdef NEED_DL_SYSINFO
- /* Needed for improved syscall handling on at least x86/Linux. */
- uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT;
-+/* Address of the ELF headers in the vsyscall page. */
-+const ElfW(Ehdr) *_dl_sysinfo_dso;
- #endif
-
- /* During the program run we must not modify the global data of
-@@ -146,6 +153,10 @@
- internal_function
- _dl_aux_init (ElfW(auxv_t) *av)
- {
-+ int seen = 0;
-+ uid_t uid = 0;
-+ gid_t gid = 0;
-+
- for (; av->a_type != AT_NULL; ++av)
- switch (av->a_type)
- {
-@@ -161,12 +172,41 @@
- case AT_PHNUM:
- GL(dl_phnum) = av->a_un.a_val;
- break;
-+ case AT_HWCAP:
-+ GL(dl_hwcap) = av->a_un.a_val;
-+ break;
- #ifdef NEED_DL_SYSINFO
- case AT_SYSINFO:
- GL(dl_sysinfo) = av->a_un.a_val;
- break;
- #endif
-+ case AT_UID:
-+ uid ^= av->a_un.a_val;
-+ seen |= 1;
-+ break;
-+ case AT_EUID:
-+ uid ^= av->a_un.a_val;
-+ seen |= 2;
-+ break;
-+ case AT_GID:
-+ gid ^= av->a_un.a_val;
-+ seen |= 4;
-+ break;
-+ case AT_EGID:
-+ gid ^= av->a_un.a_val;
-+ seen |= 8;
-+ break;
-+ case AT_SECURE:
-+ seen = -1;
-+ __libc_enable_secure = av->a_un.a_val;
-+ __libc_enable_secure_decided = 1;
-+ break;
- }
-+ if (seen == 0xf)
-+ {
-+ __libc_enable_secure = uid != 0 || gid != 0;
-+ __libc_enable_secure_decided = 1;
-+ }
- }
- #endif
-
---- glibc-2.3.2/elf/dl-version.c 2002-03-11 03:31:59.000000000 -0500
-+++ glibc-2.3.2/elf/dl-version.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Handle symbol and library versioning.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -53,6 +53,7 @@
-
-
- static inline struct link_map *
-+__attribute ((always_inline))
- find_needed (const char *name, struct link_map *map)
- {
- struct link_map *tmap;
---- glibc-2.3.2/elf/do-lookup.h 2002-04-13 03:32:17.000000000 -0400
-+++ glibc-2.3.2/elf/do-lookup.h 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Look up a symbol in the loaded objects.
-- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -28,7 +28,7 @@
- /* Inner part of the lookup functions. We return a value > 0 if we
- found the symbol, the value 0 if nothing is found and < 0 if
- something bad happened. */
--static inline int
-+static int
- FCT (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref,
- struct sym_val *result, struct r_scope_elem *scope, size_t i, ARG,
- struct link_map *skip, int type_class)
---- glibc-2.3.2/elf/dynamic-link.h 2003-01-30 12:35:50.000000000 -0500
-+++ glibc-2.3.2/elf/dynamic-link.h 2003-08-21 08:36:59.000000000 -0400
-@@ -21,20 +21,30 @@
- #include <assert.h>
-
- #ifdef RESOLVE
-+/* We pass reloc_addr as a pointer to void, as opposed to a pointer to
-+ ElfW(Addr), because not all architectures can assume that the
-+ relocated address is properly aligned, whereas the compiler is
-+ entitled to assume that a pointer to a type is properly aligned for
-+ the type. Even if we cast the pointer back to some other type with
-+ less strict alignment requirements, the compiler might still
-+ remember that the pointer was originally more aligned, thereby
-+ optimizing away alignment tests or using word instructions for
-+ copying memory, breaking the very code written to handle the
-+ unaligned cases. */
- auto void __attribute__((always_inline))
- elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr);
-+ void *const reloc_addr);
- auto void __attribute__((always_inline))
- elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr);
-+ void *const reloc_addr);
- auto void __attribute__((always_inline))
- elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- ElfW(Addr) *const reloc_addr);
-+ void *const reloc_addr);
- auto void __attribute__((always_inline))
- elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
-- ElfW(Addr) *const reloc_addr);
-+ void *const reloc_addr);
- # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
- auto void __attribute__((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
-@@ -56,7 +66,7 @@
- /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */
-
- static inline void __attribute__ ((unused, always_inline))
--elf_get_dynamic_info (struct link_map *l)
-+elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
- {
- ElfW(Dyn) *dyn = l->l_ld;
- ElfW(Dyn) **info;
-@@ -88,32 +98,45 @@
- + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;
- ++dyn;
- }
-+
-+#define DL_RO_DYN_TEMP_CNT 8
-+
- #ifndef DL_RO_DYN_SECTION
- /* Don't adjust .dynamic unnecessarily. */
- if (l->l_addr != 0)
- {
- ElfW(Addr) l_addr = l->l_addr;
-+ int cnt = 0;
-+
-+# define ADJUST_DYN_INFO(tag) \
-+ do \
-+ if (info[tag] != NULL) \
-+ { \
-+ if (temp) \
-+ { \
-+ temp[cnt].d_tag = info[tag]->d_tag; \
-+ temp[cnt].d_un.d_ptr = info[tag]->d_un.d_ptr + l_addr; \
-+ info[tag] = temp + cnt++; \
-+ } \
-+ else \
-+ info[tag]->d_un.d_ptr += l_addr; \
-+ } \
-+ while (0)
-
-- if (info[DT_HASH] != NULL)
-- info[DT_HASH]->d_un.d_ptr += l_addr;
-- if (info[DT_PLTGOT] != NULL)
-- info[DT_PLTGOT]->d_un.d_ptr += l_addr;
-- if (info[DT_STRTAB] != NULL)
-- info[DT_STRTAB]->d_un.d_ptr += l_addr;
-- if (info[DT_SYMTAB] != NULL)
-- info[DT_SYMTAB]->d_un.d_ptr += l_addr;
-+ ADJUST_DYN_INFO (DT_HASH);
-+ ADJUST_DYN_INFO (DT_PLTGOT);
-+ ADJUST_DYN_INFO (DT_STRTAB);
-+ ADJUST_DYN_INFO (DT_SYMTAB);
- # if ! ELF_MACHINE_NO_RELA
-- if (info[DT_RELA] != NULL)
-- info[DT_RELA]->d_un.d_ptr += l_addr;
-+ ADJUST_DYN_INFO (DT_RELA);
- # endif
- # if ! ELF_MACHINE_NO_REL
-- if (info[DT_REL] != NULL)
-- info[DT_REL]->d_un.d_ptr += l_addr;
-+ ADJUST_DYN_INFO (DT_REL);
- # endif
-- if (info[DT_JMPREL] != NULL)
-- info[DT_JMPREL]->d_un.d_ptr += l_addr;
-- if (info[VERSYMIDX (DT_VERSYM)] != NULL)
-- info[VERSYMIDX (DT_VERSYM)]->d_un.d_ptr += l_addr;
-+ ADJUST_DYN_INFO (DT_JMPREL);
-+ ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
-+# undef ADJUST_DYN_INFO
-+ assert (cnt <= DL_RO_DYN_TEMP_CNT);
- }
- #endif
- if (info[DT_PLTREL] != NULL)
---- glibc-2.3.2/elf/elf.h 2003-02-25 18:40:08.000000000 -0500
-+++ glibc-2.3.2/elf/elf.h 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* This file defines standard ELF types, structures, and macros.
-- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999,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
-@@ -558,6 +558,7 @@
- #define PT_NUM 8 /* Number of defined types */
- #define PT_LOOS 0x60000000 /* Start of OS-specific */
- #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
-+#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
- #define PT_LOSUNW 0x6ffffffa
- #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
- #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
-@@ -944,11 +945,14 @@
-
- /* A special ignored value for PPC, used by the kernel to control the
- interpretation of the AUXV. Must be > 16. */
--#define AT_IGNOREPPC 22 /* Entry should be ignored */
-+#define AT_IGNOREPPC 22 /* Entry should be ignored. */
-+
-+#define AT_SECURE 23 /* Boolean, was exec setuid-like? */
-
- /* Pointer to the global system page used for system calls and other
- nice things. */
- #define AT_SYSINFO 32
-+#define AT_SYSINFO_EHDR 33
-
-
- /* Note section contents. Each entry in the note section begins with
-@@ -1881,122 +1885,39 @@
- #define R_PPC_SECTOFF_LO 34
- #define R_PPC_SECTOFF_HI 35
- #define R_PPC_SECTOFF_HA 36
--/* Keep this the last entry. */
--#define R_PPC_NUM 37
-
--/* PowerPC64 relocations defined by the ABIs */
--#define R_PPC64_NONE R_PPC_NONE
--#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */
--#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */
--#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */
--#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */
--#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
--#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
--#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */
--#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
--#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
--#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */
--#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */
--#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
--#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
--#define R_PPC64_GOT16 R_PPC_GOT16
--#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
--#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
--#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
--
--#define R_PPC64_COPY R_PPC_COPY
--#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
--#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
--#define R_PPC64_RELATIVE R_PPC_RELATIVE
--
--#define R_PPC64_UADDR32 R_PPC_UADDR32
--#define R_PPC64_UADDR16 R_PPC_UADDR16
--#define R_PPC64_REL32 R_PPC_REL32
--#define R_PPC64_PLT32 R_PPC_PLT32
--#define R_PPC64_PLTREL32 R_PPC_PLTREL32
--#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
--#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
--#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
--
--#define R_PPC64_SECTOFF R_PPC_SECTOFF
--#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
--#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
--#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
--#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */
--#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */
--#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */
--#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */
--#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */
--#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */
--#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */
--#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */
--#define R_PPC64_PLT64 45 /* doubleword64 L + A. */
--#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */
--#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */
--#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */
--#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */
--#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */
--#define R_PPC64_TOC 51 /* doubleword64 .TOC. */
--#define R_PPC64_PLTGOT16 52 /* half16* M + A. */
--#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */
--#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */
--#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */
--
--#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */
--#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */
--#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */
--#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */
--#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */
--#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */
--#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */
--#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */
--#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */
--#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */
--#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */
-+/* PowerPC relocations defined for the TLS access ABI. */
-+#define R_PPC_TLS 67 /* none (sym+add)@tls */
-+#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
-+#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
-+#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-+#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-+#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-+#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
-+#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
-+#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-+#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-+#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-+#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
-+#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-+#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-+#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-+#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-+#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-+#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-+#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-+#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-+#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */
-+#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */
-+#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-+#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-+#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */
-+#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */
-+#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
-+#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
-
--/* PowerPC64 relocations defined for the TLS access ABI. */
--#define R_PPC64_TLS 67 /* none (sym+add)@tls. */
--#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod. */
--#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel. */
--#define R_PPC64_TPREL16_LO 60 /* half16 (sym+add)@tprel@l. */
--#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h. */
--#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha. */
--#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel. */
--#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel. */
--#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l. */
--#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h. */
--#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha. */
--#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel. */
--#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd. */
--#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l. */
--#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h. */
--#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha. */
--#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld. */
--#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l. */
--#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h. */
--#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha. */
--#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel. */
--#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l. */
--#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h. */
--#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha. */
--#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel. */
--#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l. */
--#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h. */
--#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha. */
--#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel. */
--#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l. */
--#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher. */
--#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera. */
--#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest. */
--#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta. */
--#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel. */
--#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l. */
--#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher. */
--#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera. */
--#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest. */
--#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta. */
- /* Keep this the last entry. */
--#define R_PPC64_NUM 107
-+#define R_PPC_NUM 95
-
- /* The remaining relocs are from the Embedded ELF ABI, and are not
- in the SVR4 ELF ABI. */
-@@ -2029,10 +1950,127 @@
- that may still be in object files. */
- #define R_PPC_TOC16 255
-
-+
-+/* PowerPC64 relocations defined by the ABIs */
-+#define R_PPC64_NONE R_PPC_NONE
-+#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */
-+#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */
-+#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */
-+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */
-+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */
-+#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
-+#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */
-+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
-+#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
-+#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */
-+#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */
-+#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
-+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
-+#define R_PPC64_GOT16 R_PPC_GOT16
-+#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
-+#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
-+#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
-+
-+#define R_PPC64_COPY R_PPC_COPY
-+#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
-+#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
-+#define R_PPC64_RELATIVE R_PPC_RELATIVE
-+
-+#define R_PPC64_UADDR32 R_PPC_UADDR32
-+#define R_PPC64_UADDR16 R_PPC_UADDR16
-+#define R_PPC64_REL32 R_PPC_REL32
-+#define R_PPC64_PLT32 R_PPC_PLT32
-+#define R_PPC64_PLTREL32 R_PPC_PLTREL32
-+#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
-+#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
-+#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
-+
-+#define R_PPC64_SECTOFF R_PPC_SECTOFF
-+#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
-+#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
-+#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
-+#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */
-+#define R_PPC64_ADDR64 38 /* doubleword64 S + A */
-+#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */
-+#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */
-+#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */
-+#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */
-+#define R_PPC64_UADDR64 43 /* doubleword64 S + A */
-+#define R_PPC64_REL64 44 /* doubleword64 S + A - P */
-+#define R_PPC64_PLT64 45 /* doubleword64 L + A */
-+#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */
-+#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */
-+#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */
-+#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */
-+#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */
-+#define R_PPC64_TOC 51 /* doubleword64 .TOC */
-+#define R_PPC64_PLTGOT16 52 /* half16* M + A */
-+#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */
-+#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */
-+#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */
-+
-+#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */
-+#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */
-+#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */
-+#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */
-+#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */
-+#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */
-+#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */
-+#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */
-+#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */
-+#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */
-+#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */
-+
-+/* PowerPC64 relocations defined for the TLS access ABI. */
-+#define R_PPC64_TLS 67 /* none (sym+add)@tls */
-+#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
-+#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
-+#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-+#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-+#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-+#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
-+#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
-+#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-+#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-+#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-+#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
-+#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-+#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-+#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-+#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-+#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-+#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-+#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-+#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-+#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */
-+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */
-+#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-+#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-+#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */
-+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */
-+#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */
-+#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */
-+#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
-+#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */
-+#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */
-+#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */
-+#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */
-+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */
-+#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
-+#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */
-+#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */
-+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */
-+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
-+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
-+
-+/* Keep this the last entry. */
-+#define R_PPC64_NUM 107
-+
- /* PowerPC64 specific values for the Dyn d_tag field. */
- #define DT_PPC64_GLINK (DT_LOPROC + 0)
- #define DT_PPC64_NUM 1
-
-+
- /* ARM specific declarations */
-
- /* Processor specific flags for the ELF header e_flags field. */
---- glibc-2.3.2/elf/ldconfig.c 2003-01-13 03:50:11.000000000 -0500
-+++ glibc-2.3.2/elf/ldconfig.c 2003-09-19 22:37:01.000000000 -0400
-@@ -132,6 +132,9 @@
- { NULL, 0, NULL, 0, NULL, 0 }
- };
-
-+#define PROCINFO_CLASS static
-+#include <dl-procinfo.c>
-+
- /* Short description of program. */
- static const char doc[] = N_("Configure Dynamic Linker Run Time Bindings.");
-
-@@ -342,13 +345,15 @@
- entry->flag = FLAG_ANY;
- }
-
-- /* Canonify path: for now only remove trailing slashes. */
-+ /* Canonify path: for now only remove leading and trailing
-+ whitespace and the trailing slashes slashes. */
- i = strlen (entry->path) - 1;
-+
-+ while (isspace (entry->path[i]) && i > 0)
-+ entry->path[i--] = '\0';
-+
- while (entry->path[i] == '/' && i > 0)
-- {
-- entry->path[i] = '\0';
-- --i;
-- }
-+ entry->path[i--] = '\0';
-
- if (stat64 (entry->path, &stat_buf))
- {
-@@ -782,10 +787,27 @@
- continue;
- }
-
-+
-+ /* A link may just point to itself. */
-+ if (is_link)
-+ {
-+ /* If the path the link points to isn't its soname and it is not
-+ .so symlink for ld(1) only, we treat it as a normal file. */
-+ const char *real_base_name = basename (real_file_name);
-+
-+ if (strcmp (real_base_name, soname) != 0)
-+ {
-+ len = strlen (real_base_name);
-+ if (len < strlen (".so")
-+ || strcmp (real_base_name + len - strlen (".so"), ".so") != 0
-+ || strncmp (real_base_name, soname, len) != 0)
-+ is_link = 0;
-+ }
-+ }
-+
- if (real_name != real_file_name)
- free (real_name);
-
-- /* Links will just point to itself. */
- if (is_link)
- {
- free (soname);
-@@ -963,12 +985,18 @@
- make it terminating the line. */
- *strchrnul (line, '#') = '\0';
-
-+ /* Remove leading whitespace. NUL is no whitespace character. */
-+ char *cp = line;
-+ while (isspace (*cp))
-+ ++cp;
-+
- /* If the line is blank it is ignored. */
-- if (line[0] == '\0')
-+ if (cp[0] == '\0')
- continue;
-
-- add_dir (line);
-- } while (!feof (file));
-+ add_dir (cp);
-+ }
-+ while (!feof_unlocked (file));
-
- /* Free buffer and close file. */
- free (line);
-@@ -994,13 +1022,18 @@
- /* Parse and process arguments. */
- argp_parse (&argp, argc, argv, 0, &remaining, NULL);
-
-- /* Remaining arguments are additional libraries if opt_manual_link
-+ /* Remaining arguments are additional directories if opt_manual_link
- is not set. */
- if (remaining != argc && !opt_manual_link)
- {
- int i;
- for (i = remaining; i < argc; ++i)
-- add_dir (argv[i]);
-+ if (opt_build_cache && argv[i][0] != '/')
-+ error (EXIT_FAILURE, 0,
-+ _("relative path `%s' used to build cache"),
-+ argv[i]);
-+ else
-+ add_dir (argv[i]);
- }
-
- set_hwcap ();
-@@ -1094,12 +1127,12 @@
-
- if (!opt_only_cline)
- {
-+ parse_conf (config_file);
-+
- /* Always add the standard search paths. */
-- add_dir (SLIBDIR);
-+ add_system_dir (SLIBDIR);
- if (strcmp (SLIBDIR, LIBDIR))
-- add_dir (LIBDIR);
--
-- parse_conf (config_file);
-+ add_system_dir (LIBDIR);
- }
-
- search_dirs ();
---- glibc-2.3.2/elf/link.h 2001-07-25 16:37:46.000000000 -0400
-+++ glibc-2.3.2/elf/link.h 2003-09-19 22:37:01.000000000 -0400
-@@ -106,7 +106,7 @@
-
- extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
- size_t size, void *data),
-- void *data) __THROW;
-+ void *data);
-
- __END_DECLS
-
---- glibc-2.3.2/elf/readlib.c 2002-09-05 14:56:48.000000000 -0400
-+++ glibc-2.3.2/elf/readlib.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001, 2002, 2003 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.
-@@ -23,17 +23,16 @@
- development version. Besides the simplification, it has also been
- modified to read some other file formats. */
-
--
-+#include <a.out.h>
- #include <elf.h>
- #include <error.h>
--#include <link.h>
- #include <libintl.h>
-+#include <link.h>
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
--#include <a.out.h>
--
- #include <sys/mman.h>
-+#include <sys/param.h>
- #include <sys/stat.h>
- #include <gnu/lib-names.h>
-
-@@ -147,22 +146,21 @@
- elf_header = (ElfW(Ehdr) *) file_contents;
- if (memcmp (elf_header->e_ident, ELFMAG, SELFMAG) != 0)
- {
-- /* The file is neither ELF nor aout. Check if it's a linker script,
-- like libc.so - otherwise complain. */
-- int len = statbuf.st_size;
-- /* Only search the beginning of the file. */
-- if (len > 512)
-- len = 512;
-+ /* The file is neither ELF nor aout. Check if it's a linker
-+ script, like libc.so - otherwise complain. Only search the
-+ beginning of the file. */
-+ size_t len = MIN (statbuf.st_size, 512);
- if (memmem (file_contents, len, "GROUP", 5) == NULL
- && memmem (file_contents, len, "GNU ld script", 13) == NULL)
- error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"),
- file_name);
- ret = 1;
-- goto done;
- }
--
-- if (process_elf_file (file_name, lib, flag, osversion, soname,
-- file_contents, statbuf.st_size))
-+ /* Libraries have to be shared object files. */
-+ else if (elf_header->e_type != ET_DYN)
-+ ret = 1;
-+ else if (process_elf_file (file_name, lib, flag, osversion, soname,
-+ file_contents, statbuf.st_size))
- ret = 1;
-
- done:
---- glibc-2.3.2/elf/rtld-Rules 2002-10-14 00:03:13.000000000 -0400
-+++ glibc-2.3.2/elf/rtld-Rules 2003-08-21 08:36:59.000000000 -0400
-@@ -1,6 +1,6 @@
- # Subroutine makefile for compiling libc modules linked into dynamic linker.
-
--# Copyright (C) 2002 Free Software Foundation, Inc.
-+# Copyright (C) 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
-@@ -31,7 +31,7 @@
- ifeq ($(subdir),elf)
-
- ifndef rtld-subdirs
--error This is makefile is a subroutine of elf/Makefile not to be used directly
-+error This makefile is a subroutine of elf/Makefile not to be used directly
- endif
-
- include ../Makeconfig
-@@ -81,19 +81,13 @@
- # The sysd-rules generated makefile already defines pattern rules for rtld-%
- # targets built from sysdeps source files.
- $(objpfx)rtld-%.os: %.S $(before-compile); $(compile-command.S)
--$(objpfx)rtld-%.d: %.S $(before-compile); $(+make-deps)
- $(objpfx)rtld-%.os: %.s $(before-compile); $(compile-command.s)
--$(objpfx)rtld-%.d: %.s $(before-compile); $(+make-deps)
- $(objpfx)rtld-%.os: %.c $(before-compile); $(compile-command.c)
--$(objpfx)rtld-%.d: %.c $(before-compile); $(+make-deps)
-
- # The rules for generated source files.
- $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S)
--$(objpfx)rtld-%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
- $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s)
--$(objpfx)rtld-%.d: $(objpfx)%.s $(before-compile); $(+make-deps)
- $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c)
--$(objpfx)rtld-%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
-
- # The command line setting of rtld-modules (see above) tells us
- # what we need to build, and that tells us what dependency files we need.
-@@ -101,9 +95,12 @@
-
- # Figure out the dependency files we need. After respecting the $(omit-deps)
- # list as applied to the names without the `rtld-', there may be none left.
--rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.d,\
-+rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.os.d,\
- $(filter-out $(omit-deps),\
- $(rtld-modules:rtld-%.os=%)))
-+rtld-depfiles := $(strip $(wildcard $(rtld-depfiles)) \
-+ $(patsubst %.dt,%.d,\
-+ $(wildcard $(rtld-depfiles:.d=.dt))))
- ifdef rtld-depfiles
- -include $(rtld-depfiles)
- endif
---- glibc-2.3.2/elf/rtld.c 2003-01-07 13:47:35.000000000 -0500
-+++ glibc-2.3.2/elf/rtld.c 2003-08-21 08:36:59.000000000 -0400
-@@ -227,12 +227,16 @@
- assert (info->l.l_tls_modid != 0);
- GL(dl_rtld_map).l_tls_blocksize = info->l.l_tls_blocksize;
- GL(dl_rtld_map).l_tls_align = info->l.l_tls_align;
-+ GL(dl_rtld_map).l_tls_firstbyte_offset = info->l.l_tls_firstbyte_offset;
- GL(dl_rtld_map).l_tls_initimage_size = info->l.l_tls_initimage_size;
- GL(dl_rtld_map).l_tls_initimage = info->l.l_tls_initimage;
- GL(dl_rtld_map).l_tls_offset = info->l.l_tls_offset;
- GL(dl_rtld_map).l_tls_modid = 1;
- # else
- assert (info->l.l_tls_modid == 0);
-+# if NO_TLS_OFFSET != 0
-+ GL(dl_rtld_map).l_tls_offset = NO_TLS_OFFSET;
-+# endif
- # endif
-
- #endif
-@@ -314,7 +318,11 @@
-
- /* Read our own dynamic section and fill in the info array. */
- bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic ();
-- elf_get_dynamic_info (&bootstrap_map);
-+ elf_get_dynamic_info (&bootstrap_map, NULL);
-+
-+#if defined USE_TLS && NO_TLS_OFFSET != 0
-+ bootstrap_map.l_tls_offset = NO_TLS_OFFSET;
-+#endif
-
- #if USE___THREAD
- /* Get the dynamic linker's own program header. First we need the ELF
-@@ -340,6 +348,11 @@
-
- bootstrap_map.l_tls_blocksize = phdr[cnt].p_memsz;
- bootstrap_map.l_tls_align = phdr[cnt].p_align;
-+ if (phdr[cnt].p_align == 0)
-+ bootstrap_map.l_tls_firstbyte_offset = 0;
-+ else
-+ bootstrap_map.l_tls_firstbyte_offset = (phdr[cnt].p_vaddr
-+ & (phdr[cnt].p_align - 1));
- assert (bootstrap_map.l_tls_blocksize != 0);
- bootstrap_map.l_tls_initimage_size = phdr[cnt].p_filesz;
- bootstrap_map.l_tls_initimage = (void *) (bootstrap_map.l_addr
-@@ -575,6 +588,20 @@
- }
- #endif
-
-+#if defined SHARED && defined _LIBC_REENTRANT \
-+ && defined __rtld_lock_default_lock_recursive
-+static void rtld_lock_default_lock_recursive (void *lock)
-+{
-+ __rtld_lock_default_lock_recursive (lock);
-+}
-+
-+static void rtld_lock_default_unlock_recursive (void *lock)
-+{
-+ __rtld_lock_default_unlock_recursive (lock);
-+}
-+#endif
-+
-+
- static const char *library_path; /* The library search path. */
- static const char *preloadlist; /* The list preloaded objects. */
- static int version_info; /* Nonzero if information about
-@@ -609,6 +636,16 @@
- GL(dl_error_catch_tsd) = &_dl_initial_error_catch_tsd;
- #endif
-
-+#ifdef USE_TLS
-+ GL(dl_init_static_tls) = &_dl_nothread_init_static_tls;
-+#endif
-+
-+#if defined SHARED && defined _LIBC_REENTRANT \
-+ && defined __rtld_lock_default_lock_recursive
-+ GL(dl_rtld_lock_recursive) = rtld_lock_default_lock_recursive;
-+ GL(dl_rtld_unlock_recursive) = rtld_lock_default_unlock_recursive;
-+#endif
-+
- /* Process the environment variable which control the behaviour. */
- process_envvars (&mode);
-
-@@ -853,6 +890,11 @@
- check for this special but unimportant case. */
- GL(dl_loaded)->l_tls_blocksize = ph->p_memsz;
- GL(dl_loaded)->l_tls_align = ph->p_align;
-+ if (ph->p_align == 0)
-+ GL(dl_loaded)->l_tls_firstbyte_offset = 0;
-+ else
-+ GL(dl_loaded)->l_tls_firstbyte_offset = (ph->p_vaddr
-+ & (ph->p_align - 1));
- GL(dl_loaded)->l_tls_initimage_size = ph->p_filesz;
- GL(dl_loaded)->l_tls_initimage = (void *) ph->p_vaddr;
-
-@@ -885,7 +927,7 @@
- if (! rtld_is_main)
- {
- /* Extract the contents of the dynamic section for easy access. */
-- elf_get_dynamic_info (GL(dl_loaded));
-+ elf_get_dynamic_info (GL(dl_loaded), NULL);
- if (GL(dl_loaded)->l_info[DT_HASH])
- /* Set up our cache of pointers into the hash table. */
- _dl_setup_hash (GL(dl_loaded));
-@@ -924,6 +966,13 @@
- GL(dl_rtld_map).l_prev = GL(dl_loaded);
- ++GL(dl_nloaded);
-
-+ /* Set up the program header information for the dynamic linker
-+ itself. It is needed in the dl_iterate_phdr() callbacks. */
-+ ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map).l_map_start;
-+ GL(dl_rtld_map).l_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map).l_map_start
-+ + rtld_ehdr->e_phoff);
-+ GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum;
-+
- /* We have two ways to specify objects to preload: via environment
- variable and via the file /etc/ld.so.preload. The latter can also
- be used when security is enabled. */
-@@ -1062,6 +1111,50 @@
- assert (i == npreloads);
- }
-
-+#ifdef NEED_DL_SYSINFO
-+ if (GL(dl_sysinfo_dso) != NULL)
-+ {
-+ /* We have a prelinked DSO preloaded by the system. */
-+ GL(dl_sysinfo) = GL(dl_sysinfo_dso)->e_entry;
-+
-+ /* Do an abridged version of the work _dl_map_object_from_fd would do
-+ to map in the object. It's already mapped and prelinked (and
-+ better be, since it's read-only and so we couldn't relocate it).
-+ We just want our data structures to describe it as if we had just
-+ mapped and relocated it normally. */
-+ struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL);
-+ if (__builtin_expect (l != NULL, 1))
-+ {
-+ static ElfW(Dyn) dyn_temp [DL_RO_DYN_TEMP_CNT];
-+
-+ l->l_phdr = ((const void *) GL(dl_sysinfo_dso)
-+ + GL(dl_sysinfo_dso)->e_phoff);
-+ l->l_phnum = GL(dl_sysinfo_dso)->e_phnum;
-+ for (uint_fast16_t i = 0; i < l->l_phnum; ++i)
-+ {
-+ const ElfW(Phdr) *const ph = &l->l_phdr[i];
-+ if (ph->p_type == PT_DYNAMIC)
-+ {
-+ l->l_ld = (void *) ph->p_vaddr;
-+ l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
-+ break;
-+ }
-+ if (ph->p_type == PT_LOAD)
-+ assert ((void *) ph->p_vaddr == GL(dl_sysinfo_dso));
-+ }
-+ elf_get_dynamic_info (l, dyn_temp);
-+ _dl_setup_hash (l);
-+ l->l_relocated = 1;
-+
-+ /* Now that we have the info handy, use the DSO image's soname
-+ so this object can be looked up by name. */
-+ if (l->l_info[DT_SONAME] != NULL)
-+ l->l_libname->name = ((char *) D_PTR (l, l_info[DT_STRTAB])
-+ + l->l_info[DT_SONAME]->d_un.d_val);
-+ }
-+ }
-+#endif
-+
- /* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD
- specified some libraries to load, these are inserted before the actual
- dependencies in the executable's searchlist for symbol resolution. */
-@@ -1213,57 +1306,54 @@
- important that we do this before real relocation, because the
- functions we call below for output may no longer work properly
- after relocation. */
-- if (! GL(dl_loaded)->l_info[DT_NEEDED])
-- _dl_printf ("\tstatically linked\n");
-- else
-+ struct link_map *l;
-+
-+ if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
- {
-- struct link_map *l;
-+ struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
-
-- if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
-+ for (i = 0; i < scope->r_nlist; i++)
- {
-- struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
--
-- for (i = 0; i < scope->r_nlist; i++)
-+ l = scope->r_list [i];
-+ if (l->l_faked)
- {
-- l = scope->r_list [i];
-- if (l->l_faked)
-- {
-- _dl_printf ("\t%s => not found\n", l->l_libname->name);
-- continue;
-- }
-- if (_dl_name_match_p (GL(dl_trace_prelink), l))
-- GL(dl_trace_prelink_map) = l;
-- _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
-- l->l_libname->name[0] ? l->l_libname->name
-- : rtld_progname ?: "<main program>",
-- l->l_name[0] ? l->l_name
-- : rtld_progname ?: "<main program>",
-- (int) sizeof l->l_map_start * 2,
-- l->l_map_start,
-- (int) sizeof l->l_addr * 2,
-- l->l_addr);
-+ _dl_printf ("\t%s => not found\n", l->l_libname->name);
-+ continue;
-+ }
-+ if (_dl_name_match_p (GL(dl_trace_prelink), l))
-+ GL(dl_trace_prelink_map) = l;
-+ _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
-+ l->l_libname->name[0] ? l->l_libname->name
-+ : rtld_progname ?: "<main program>",
-+ l->l_name[0] ? l->l_name
-+ : rtld_progname ?: "<main program>",
-+ (int) sizeof l->l_map_start * 2,
-+ (size_t) l->l_map_start,
-+ (int) sizeof l->l_addr * 2,
-+ (size_t) l->l_addr);
- #ifdef USE_TLS
-- if (l->l_tls_modid)
-- _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
-- (int) sizeof l->l_tls_offset * 2,
-- l->l_tls_offset);
-- else
-+ if (l->l_tls_modid)
-+ _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
-+ (int) sizeof l->l_tls_offset * 2,
-+ (size_t) l->l_tls_offset);
-+ else
- #endif
-- _dl_printf ("\n");
-- }
-- }
-- else
-- {
-- for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
-- if (l->l_faked)
-- /* The library was not found. */
-- _dl_printf ("\t%s => not found\n", l->l_libname->name);
-- else
-- _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
-- l->l_name, (int) sizeof l->l_map_start * 2,
-- l->l_map_start);
-+ _dl_printf ("\n");
- }
- }
-+ else if (! GL(dl_loaded)->l_info[DT_NEEDED])
-+ _dl_printf ("\tstatically linked\n");
-+ else
-+ {
-+ for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
-+ if (l->l_faked)
-+ /* The library was not found. */
-+ _dl_printf ("\t%s => not found\n", l->l_libname->name);
-+ else
-+ _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
-+ l->l_name, (int) sizeof l->l_map_start * 2,
-+ (size_t) l->l_map_start);
-+ }
-
- if (__builtin_expect (mode, trace) != trace)
- for (i = 1; i < (unsigned int) _dl_argc; ++i)
-@@ -1281,8 +1371,9 @@
-
- _dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n",
- INTUSE(_dl_argv)[i],
-- (int) sizeof ref->st_value * 2, ref->st_value,
-- (int) sizeof loadbase * 2, loadbase);
-+ (int) sizeof ref->st_value * 2,
-+ (size_t) ref->st_value,
-+ (int) sizeof loadbase * 2, (size_t) loadbase);
- }
- else
- {
---- glibc-2.3.2/elf/sofini.c 1999-02-20 12:14:48.000000000 -0500
-+++ glibc-2.3.2/elf/sofini.c 2003-08-21 08:36:59.000000000 -0400
-@@ -2,10 +2,10 @@
- null pointer words in the `.ctors' and `.dtors' sections. */
-
- static void (*const __CTOR_END__[1]) (void)
-- __attribute__ ((unused, section (".ctors")))
-+ __attribute__ ((used, section (".ctors")))
- = { 0 };
- static void (*const __DTOR_END__[1]) (void)
-- __attribute__ ((unused, section (".dtors")))
-+ __attribute__ ((used, section (".dtors")))
- = { 0 };
-
- #ifdef HAVE_DWARF2_UNWIND_INFO
-@@ -14,6 +14,6 @@
-
- typedef unsigned int ui32 __attribute__ ((mode (SI)));
- static ui32 __FRAME_END__[1]
-- __attribute__ ((unused, section (".eh_frame")))
-+ __attribute__ ((used, section (".eh_frame")))
- = { 0 };
- #endif
---- glibc-2.3.2/elf/tls-macros.h 2003-02-25 18:40:08.000000000 -0500
-+++ glibc-2.3.2/elf/tls-macros.h 2003-09-19 22:37:01.000000000 -0400
-@@ -9,6 +9,7 @@
- #define VAR_INT_DEF(x) \
- asm (".section .tdata\n\t" \
- ".globl " #x "\n" \
-+ ".balign 4\n" \
- #x ":\t.long 0\n\t" \
- ".size " #x ",4\n\t" \
- ".previous")
-@@ -316,13 +317,15 @@
-
- # define TLS_IE(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \
- ";;\n\t" \
- "ld8 r17=[r16]\n\t" \
- ";;\n\t" \
- "add %0=r13,r17\n\t" \
-- : "=r" (__l) : : "r16", "r17" ); __l; })
-+ ";;\n\t" \
-+ : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; })
-
- # define __TLS_CALL_CLOBBERS \
- "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \
-@@ -335,6 +338,7 @@
-
- # define TLS_LD(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "mov loc0=gp\n\t" \
- "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
-@@ -345,11 +349,13 @@
- ";;\n\t" \
- "mov gp=loc0\n\t" \
- "mov %0=r8\n\t" \
-- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
-+ ";;\n\t" \
-+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
- __l; })
-
- # define TLS_GD(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "mov loc0=gp\n\t" \
- "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
-@@ -361,7 +367,8 @@
- ";;\n\t" \
- "mov gp=loc0\n\t" \
- "mov %0=r8\n\t" \
-- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
-+ ";;\n\t" \
-+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
- __l; })
-
- #elif defined __sparc__ && !defined __arch64__
-@@ -373,7 +380,7 @@
- asm ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l)); \
- __l; })
-
--# ifdef __PIC__
-+# ifdef __PIC__
- # define TLS_LOAD_PIC \
- ({ register long pc __asm__ ("%o7"); \
- long got; \
-@@ -623,6 +630,53 @@
- (int *) (__builtin_thread_pointer() + __offset); })
- # endif
-
-+#elif defined __powerpc__ && !defined __powerpc64__
-+
-+# define __TLS_CALL_CLOBBERS \
-+ "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \
-+ "lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7"
-+
-+/* PowerPC32 Local Exec TLS access. */
-+# define TLS_LE(x) \
-+ ({ int *__result; \
-+ asm ("addi %0,2," #x "@tprel" \
-+ : "=r" (__result)); \
-+ __result; })
-+
-+/* PowerPC32 Initial Exec TLS access. */
-+# define TLS_IE(x) \
-+ ({ int *__result; \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr %0\n\t" \
-+ "lwz %0," #x "@got@tprel(%0)\n\t" \
-+ "add %0,%0," #x "@tls" \
-+ : "=b" (__result) : \
-+ : "lr"); \
-+ __result; })
-+
-+/* PowerPC32 Local Dynamic TLS access. */
-+# define TLS_LD(x) \
-+ ({ int *__result; \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr 3\n\t" \
-+ "addi 3,3," #x "@got@tlsld\n\t" \
-+ "bl __tls_get_addr@plt\n\t" \
-+ "addi %0,3," #x "@dtprel" \
-+ : "=r" (__result) : \
-+ : __TLS_CALL_CLOBBERS); \
-+ __result; })
-+
-+/* PowerPC32 General Dynamic TLS access. */
-+# define TLS_GD(x) \
-+ ({ register int *__result __asm__ ("r3"); \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr 3\n\t" \
-+ "addi 3,3," #x "@got@tlsgd\n\t" \
-+ "bl __tls_get_addr@plt" \
-+ : : \
-+ : __TLS_CALL_CLOBBERS); \
-+ __result; })
-+
- #elif defined __powerpc__ && defined __powerpc64__
-
- /* PowerPC64 Local Exec TLS access. */
---- glibc-2.3.2/elf/tst-align.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-align.c 2003-09-17 14:13:33.000000000 -0400
-@@ -0,0 +1,54 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <dlfcn.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+static int
-+do_test (void)
-+{
-+ static const char modname[] = "tst-alignmod.so";
-+ int result = 0;
-+ void (*fp) (int *);
-+ void *h;
-+
-+ h = dlopen (modname, RTLD_LAZY);
-+ if (h == NULL)
-+ {
-+ printf ("cannot open '%s': %s\n", modname, dlerror ());
-+ exit (1);
-+ }
-+
-+ fp = dlsym (h, "in_dso");
-+ if (fp == NULL)
-+ {
-+ printf ("cannot get symbol 'in_dso': %s\n", dlerror ());
-+ exit (1);
-+ }
-+
-+ fp (&result);
-+
-+ dlclose (h);
-+
-+ return result;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/elf/tst-alignmod.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-alignmod.c 2003-09-17 14:13:49.000000000 -0400
-@@ -0,0 +1,53 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdio.h>
-+#include <tst-stack-align.h>
-+
-+static int res, *resp;
-+
-+static void __attribute__((constructor))
-+con (void)
-+{
-+ res = TEST_STACK_ALIGN () ? -1 : 1;
-+}
-+
-+void
-+in_dso (int *result)
-+{
-+ if (!res)
-+ {
-+ puts ("constructor has not been run");
-+ *result = 1;
-+ }
-+ else if (res != 1)
-+ {
-+ puts ("constructor has been run without sufficient alignment");
-+ *result = 1;
-+ }
-+
-+ resp = result;
-+}
-+
-+static void __attribute__((destructor))
-+des (void)
-+{
-+ if (TEST_STACK_ALIGN ())
-+ *resp = 1;
-+}
---- glibc-2.3.2/elf/tst-tls10.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls10.c 2003-04-22 21:54:06.000000000 -0400
-@@ -0,0 +1,40 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+__thread int dummy __attribute__((visibility ("hidden"))) = 12;
-+__thread struct A local = { 1, 2, 3 };
-+#endif
-+
-+#define CHECK(N, S) \
-+ p = f##N##a (); \
-+ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
-+ abort ()
-+
-+int
-+main (void)
-+{
-+#ifdef USE_TLS__THREAD
-+ struct A *p;
-+ if (local.a != 1 || local.b != 2 || local.c != 3)
-+ abort ();
-+ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
-+ abort ();
-+ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
-+ abort ();
-+ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
-+ abort ();
-+ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
-+ abort ();
-+ check1 ();
-+ check2 ();
-+ if (f1a () != &a1 || f2a () != &a2 || f3a () != &a3 || f4a () != &a4)
-+ abort ();
-+ CHECK (5, 16);
-+ CHECK (6, 19);
-+ if (f7a () != &a2 || f8a () != &a4)
-+ abort ();
-+ CHECK (9, 28);
-+ CHECK (10, 31);
-+#endif
-+ exit (0);
-+}
---- glibc-2.3.2/elf/tst-tls10.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls10.h 2003-04-17 15:19:01.000000000 -0400
-@@ -0,0 +1,38 @@
-+#include <tls.h>
-+#include <stdlib.h>
-+
-+#if defined USE_TLS && defined HAVE___THREAD \
-+ && defined HAVE_TLS_MODEL_ATTRIBUTE
-+# define USE_TLS__THREAD
-+
-+struct A
-+{
-+ char a;
-+ int b;
-+ long long c;
-+};
-+
-+extern __thread struct A a1, a2, a3, a4;
-+extern struct A *f1a (void);
-+extern struct A *f2a (void);
-+extern struct A *f3a (void);
-+extern struct A *f4a (void);
-+extern struct A *f5a (void);
-+extern struct A *f6a (void);
-+extern struct A *f7a (void);
-+extern struct A *f8a (void);
-+extern struct A *f9a (void);
-+extern struct A *f10a (void);
-+extern int f1b (void);
-+extern int f2b (void);
-+extern int f3b (void);
-+extern int f4b (void);
-+extern int f5b (void);
-+extern int f6b (void);
-+extern int f7b (void);
-+extern int f8b (void);
-+extern int f9b (void);
-+extern int f10b (void);
-+extern void check1 (void);
-+extern void check2 (void);
-+#endif
---- glibc-2.3.2/elf/tst-tls11.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls11.c 2003-04-17 15:19:01.000000000 -0400
-@@ -0,0 +1,27 @@
-+#include "tst-tls10.h"
-+
-+#define CHECK(N, S) \
-+ p = f##N##a (); \
-+ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
-+ abort ()
-+
-+int
-+main (void)
-+{
-+#ifdef USE_TLS__THREAD
-+ struct A *p;
-+ check1 ();
-+ check2 ();
-+ CHECK (1, 4);
-+ CHECK (2, 22);
-+ CHECK (3, 10);
-+ CHECK (4, 25);
-+ CHECK (5, 16);
-+ CHECK (6, 19);
-+ CHECK (7, 22);
-+ CHECK (8, 25);
-+ CHECK (9, 28);
-+ CHECK (10, 31);
-+#endif
-+ exit (0);
-+}
---- glibc-2.3.2/elf/tst-tls12.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls12.c 2003-04-22 21:54:06.000000000 -0400
-@@ -0,0 +1,18 @@
-+#include "tst-tls10.h"
-+
-+#define CHECK(N, S) \
-+ p = &a##N; \
-+ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
-+ abort ()
-+
-+int
-+main (void)
-+{
-+#ifdef USE_TLS__THREAD
-+ struct A *p;
-+ check1 ();
-+ CHECK (1, 4);
-+ CHECK (2, 7);
-+#endif
-+ exit (0);
-+}
---- glibc-2.3.2/elf/tst-tls13.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls13.c 2003-04-27 02:15:09.000000000 -0400
-@@ -0,0 +1,29 @@
-+/* Check unloading modules with data in static TLS block. */
-+#include <dlfcn.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+
-+static int
-+do_test (void)
-+{
-+ int i;
-+ for (i = 0; i < 1000;)
-+ {
-+ printf ("round %d\n",++i);
-+
-+ void *h = dlopen ("tst-tlsmod13a.so", RTLD_LAZY);
-+ if (h == NULL)
-+ {
-+ printf ("cannot load: %s\n", dlerror ());
-+ exit (1);
-+ }
-+
-+ dlclose (h);
-+ }
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/elf/tst-tls14.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls14.c 2003-07-28 17:50:16.000000000 -0400
-@@ -0,0 +1,66 @@
-+/* Check alignment of TLS variable. */
-+#include <dlfcn.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+#include <tls.h>
-+
-+#if USE_TLS && HAVE___THREAD
-+
-+#define AL 4096
-+struct foo
-+{
-+ int i;
-+} __attribute ((aligned (AL)));
-+
-+static __thread struct foo f;
-+static struct foo g;
-+
-+
-+extern int in_dso1 (void);
-+
-+
-+static int
-+do_test (void)
-+{
-+ int result = 0;
-+
-+ int fail = (((uintptr_t) &f) & (AL - 1)) != 0;
-+ printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK");
-+ result |= fail;
-+
-+ fail = (((uintptr_t) &g) & (AL - 1)) != 0;
-+ printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK");
-+ result |= fail;
-+
-+ result |= in_dso1 ();
-+
-+ void *h = dlopen ("tst-tlsmod14b.so", RTLD_LAZY);
-+ if (h == NULL)
-+ {
-+ printf ("cannot open tst-tlsmod14b.so: %m\n");
-+ exit (1);
-+ }
-+
-+ int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso2");
-+ if (fp == NULL)
-+ {
-+ puts ("cannot find in_dso2");
-+ exit (1);
-+ }
-+
-+ result |= fp ();
-+
-+ return result;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+
-+#else
-+
-+#define TEST_FUNCTION 0
-+
-+#endif
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/elf/tst-tls6.c 2002-12-04 13:22:02.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls6.c 2003-08-21 08:36:59.000000000 -0400
-@@ -36,7 +36,7 @@
- modid = ((struct link_map *) h)->l_tls_modid;
- else if (((struct link_map *) h)->l_tls_modid != modid)
- {
-- printf ("round %d: modid now %d, initially %d\n",
-+ printf ("round %d: modid now %zd, initially %d\n",
- i, ((struct link_map *) h)->l_tls_modid, modid);
- result = 1;
- }
---- glibc-2.3.2/elf/tst-tls8.c 2002-12-04 13:22:02.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tls8.c 2003-08-21 08:36:59.000000000 -0400
-@@ -19,8 +19,8 @@
- void *h1;
- void *h2;
- int i;
-- int modid1 = -1;
-- int modid2 = -1;
-+ size_t modid1 = (size_t) -1;
-+ size_t modid2 = (size_t) -1;
- int *bazp;
-
- for (i = 0; i < 10; ++i)
-@@ -35,11 +35,11 @@
- /* Dirty test code here: we peek into a private data structure.
- We make sure that the module gets assigned the same ID every
- time. The value of the first round is used. */
-- if (modid1 == -1)
-+ if (modid1 == (size_t) -1)
- modid1 = ((struct link_map *) h1)->l_tls_modid;
- else if (((struct link_map *) h1)->l_tls_modid != modid1)
- {
-- printf ("round %d: modid now %zd, initially %d\n",
-+ printf ("round %d: modid now %zd, initially %zd\n",
- i, ((struct link_map *) h1)->l_tls_modid, modid1);
- result = 1;
- }
-@@ -65,11 +65,11 @@
- /* Dirty test code here: we peek into a private data structure.
- We make sure that the module gets assigned the same ID every
- time. The value of the first round is used. */
-- if (modid2 == -1)
-+ if (modid2 == (size_t) -1)
- modid2 = ((struct link_map *) h1)->l_tls_modid;
- else if (((struct link_map *) h1)->l_tls_modid != modid2)
- {
-- printf ("round %d: modid now %zd, initially %d\n",
-+ printf ("round %d: modid now %zd, initially %zd\n",
- i, ((struct link_map *) h1)->l_tls_modid, modid2);
- result = 1;
- }
-@@ -108,7 +108,7 @@
- time. The value of the first round is used. */
- if (((struct link_map *) h1)->l_tls_modid != modid1)
- {
-- printf ("round %d: modid now %zd, initially %d\n",
-+ printf ("round %d: modid now %zd, initially %zd\n",
- i, ((struct link_map *) h1)->l_tls_modid, modid1);
- result = 1;
- }
-@@ -136,7 +136,7 @@
- time. The value of the first round is used. */
- if (((struct link_map *) h1)->l_tls_modid != modid2)
- {
-- printf ("round %d: modid now %zd, initially %d\n",
-+ printf ("round %d: modid now %zd, initially %zd\n",
- i, ((struct link_map *) h1)->l_tls_modid, modid2);
- result = 1;
- }
---- glibc-2.3.2/elf/tst-tlsmod10.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod10.c 2003-04-17 15:19:01.000000000 -0400
-@@ -0,0 +1 @@
-+#include "tst-tlsmod8.c"
---- glibc-2.3.2/elf/tst-tlsmod11.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod11.c 2003-04-17 15:19:01.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+__thread struct A a1 = { 4, 5, 6 };
-+__thread struct A a2 = { 7, 8, 9 };
-+#endif
---- glibc-2.3.2/elf/tst-tlsmod12.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod12.c 2003-04-17 15:19:01.000000000 -0400
-@@ -0,0 +1,14 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+extern __thread struct A a2 __attribute__((tls_model("initial-exec")));
-+
-+void
-+check1 (void)
-+{
-+ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
-+ abort ();
-+ if (a2.a != 7 || a2.b != 8 || a2.c != 9)
-+ abort ();
-+}
-+#endif
---- glibc-2.3.2/elf/tst-tlsmod13.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod13.c 2003-04-27 02:15:39.000000000 -0400
-@@ -0,0 +1,14 @@
-+#include <tls.h>
-+
-+#if defined USE_TLS && defined HAVE___THREAD \
-+ && defined HAVE_TLS_MODEL_ATTRIBUTE
-+__thread int a[2] __attribute__ ((tls_model ("initial-exec")));
-+#else
-+int a[2];
-+#endif
-+
-+int
-+foo (void)
-+{
-+ return a[0];
-+}
---- glibc-2.3.2/elf/tst-tlsmod13a.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod13a.c 2003-04-27 02:15:39.000000000 -0400
-@@ -0,0 +1,16 @@
-+#include <tls.h>
-+
-+#if defined USE_TLS && defined HAVE___THREAD \
-+ && defined HAVE_TLS_MODEL_ATTRIBUTE
-+__thread int b[2] __attribute__ ((tls_model ("initial-exec")));
-+#else
-+int b[2];
-+#endif
-+
-+extern int foo (void);
-+
-+int
-+bar (void)
-+{
-+ return foo () + b[0];
-+}
---- glibc-2.3.2/elf/tst-tlsmod14a.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod14a.c 2003-07-28 17:50:16.000000000 -0400
-@@ -0,0 +1,41 @@
-+#include <stdint.h>
-+#include <stdio.h>
-+
-+#include <tls.h>
-+
-+#if USE_TLS && HAVE___THREAD
-+
-+#define AL 4096
-+struct foo
-+{
-+ int i;
-+} __attribute ((aligned (AL)));
-+
-+static __thread struct foo f;
-+static struct foo g;
-+
-+
-+#ifndef FCT
-+# define FCT in_dso1
-+#endif
-+
-+
-+int
-+FCT (void)
-+{
-+ puts (__func__);
-+
-+ int result = 0;
-+
-+ int fail = (((uintptr_t) &f) & (AL - 1)) != 0;
-+ printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK");
-+ result |= fail;
-+
-+ fail = (((uintptr_t) &g) & (AL - 1)) != 0;
-+ printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK");
-+ result |= fail;
-+
-+ return result;
-+}
-+
-+#endif
---- glibc-2.3.2/elf/tst-tlsmod14b.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod14b.c 2003-07-24 15:58:08.000000000 -0400
-@@ -0,0 +1,2 @@
-+#define FCT in_dso2
-+#include "tst-tlsmod14a.c"
---- glibc-2.3.2/elf/tst-tlsmod7.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod7.c 2003-04-22 21:54:06.000000000 -0400
-@@ -0,0 +1,103 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+__thread int dummy __attribute__((visibility ("hidden"))) = 12;
-+__thread struct A a1 = { 4, 5, 6 };
-+__thread struct A a2 = { 7, 8, 9 };
-+__thread struct A a3 __attribute__((tls_model("initial-exec")))
-+ = { 10, 11, 12 };
-+__thread struct A a4 __attribute__((tls_model("initial-exec")))
-+ = { 13, 14, 15 };
-+static __thread struct A local1 = { 16, 17, 18 };
-+static __thread struct A local2 __attribute__((tls_model("initial-exec")))
-+ = { 19, 20, 21 };
-+
-+void
-+check1 (void)
-+{
-+ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
-+ abort ();
-+ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
-+ abort ();
-+ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
-+ abort ();
-+ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
-+ abort ();
-+ if (local1.a != 16 || local1.b != 17 || local1.c != 18)
-+ abort ();
-+ if (local2.a != 19 || local2.b != 20 || local2.c != 21)
-+ abort ();
-+}
-+
-+struct A *
-+f1a (void)
-+{
-+ return &a1;
-+}
-+
-+struct A *
-+f2a (void)
-+{
-+ return &a2;
-+}
-+
-+struct A *
-+f3a (void)
-+{
-+ return &a3;
-+}
-+
-+struct A *
-+f4a (void)
-+{
-+ return &a4;
-+}
-+
-+struct A *
-+f5a (void)
-+{
-+ return &local1;
-+}
-+
-+struct A *
-+f6a (void)
-+{
-+ return &local2;
-+}
-+
-+int
-+f1b (void)
-+{
-+ return a1.a;
-+}
-+
-+int
-+f2b (void)
-+{
-+ return a2.b;
-+}
-+
-+int
-+f3b (void)
-+{
-+ return a3.c;
-+}
-+
-+int
-+f4b (void)
-+{
-+ return a4.a;
-+}
-+
-+int
-+f5b (void)
-+{
-+ return local1.b;
-+}
-+
-+int
-+f6b (void)
-+{
-+ return local2.c;
-+}
-+#endif
---- glibc-2.3.2/elf/tst-tlsmod8.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod8.c 2003-04-22 21:54:06.000000000 -0400
-@@ -0,0 +1,72 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+__thread long long dummy __attribute__((visibility ("hidden"))) = 12;
-+__thread struct A a2 = { 22, 23, 24 };
-+__thread struct A a4 __attribute__((tls_model("initial-exec")))
-+ = { 25, 26, 27 };
-+static __thread struct A local1 = { 28, 29, 30 };
-+static __thread struct A local2 __attribute__((tls_model("initial-exec")))
-+ = { 31, 32, 33 };
-+
-+void
-+check2 (void)
-+{
-+ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
-+ abort ();
-+ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
-+ abort ();
-+ if (local1.a != 28 || local1.b != 29 || local1.c != 30)
-+ abort ();
-+ if (local2.a != 31 || local2.b != 32 || local2.c != 33)
-+ abort ();
-+}
-+
-+struct A *
-+f7a (void)
-+{
-+ return &a2;
-+}
-+
-+struct A *
-+f8a (void)
-+{
-+ return &a4;
-+}
-+
-+struct A *
-+f9a (void)
-+{
-+ return &local1;
-+}
-+
-+struct A *
-+f10a (void)
-+{
-+ return &local2;
-+}
-+
-+int
-+f7b (void)
-+{
-+ return a2.b;
-+}
-+
-+int
-+f8b (void)
-+{
-+ return a4.a;
-+}
-+
-+int
-+f9b (void)
-+{
-+ return local1.b;
-+}
-+
-+int
-+f10b (void)
-+{
-+ return local2.c;
-+}
-+#endif
---- glibc-2.3.2/elf/tst-tlsmod9.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/tst-tlsmod9.c 2003-04-22 21:54:06.000000000 -0400
-@@ -0,0 +1,101 @@
-+#include "tst-tls10.h"
-+
-+#ifdef USE_TLS__THREAD
-+__thread int dummy __attribute__((visibility ("hidden"))) = 12;
-+__thread struct A a1 = { 4, 5, 6 };
-+__thread struct A a3 __attribute__((tls_model("initial-exec")))
-+ = { 10, 11, 12 };
-+extern __thread struct A a4 __attribute__((tls_model("initial-exec")));
-+static __thread struct A local1 = { 16, 17, 18 };
-+static __thread struct A local2 __attribute__((tls_model("initial-exec")))
-+ = { 19, 20, 21 };
-+
-+void
-+check1 (void)
-+{
-+ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
-+ abort ();
-+ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
-+ abort ();
-+ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
-+ abort ();
-+ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
-+ abort ();
-+ if (local1.a != 16 || local1.b != 17 || local1.c != 18)
-+ abort ();
-+ if (local2.a != 19 || local2.b != 20 || local2.c != 21)
-+ abort ();
-+}
-+
-+struct A *
-+f1a (void)
-+{
-+ return &a1;
-+}
-+
-+struct A *
-+f2a (void)
-+{
-+ return &a2;
-+}
-+
-+struct A *
-+f3a (void)
-+{
-+ return &a3;
-+}
-+
-+struct A *
-+f4a (void)
-+{
-+ return &a4;
-+}
-+
-+struct A *
-+f5a (void)
-+{
-+ return &local1;
-+}
-+
-+struct A *
-+f6a (void)
-+{
-+ return &local2;
-+}
-+
-+int
-+f1b (void)
-+{
-+ return a1.a;
-+}
-+
-+int
-+f2b (void)
-+{
-+ return a2.b;
-+}
-+
-+int
-+f3b (void)
-+{
-+ return a3.c;
-+}
-+
-+int
-+f4b (void)
-+{
-+ return a4.a;
-+}
-+
-+int
-+f5b (void)
-+{
-+ return local1.b;
-+}
-+
-+int
-+f6b (void)
-+{
-+ return local2.c;
-+}
-+#endif
---- glibc-2.3.2/elf/vismain.c 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/elf/vismain.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -86,7 +86,8 @@
- first DSO. */
- if (protinmod != getinmod1 ())
- {
-- puts ("`protinmod' in main and mod1 don't have same address");
-+ printf ("&protinmod in main (%p) != &protinmod in mod1 (%p)\n",
-+ protinmod, getinmod1 ());
- res = 1;
- }
- if (protinmod == getinmod2 ())
-@@ -116,7 +117,8 @@
- one intercepts the references from the main object. */
- if (protitcpt != getitcpt3 ())
- {
-- puts ("`protitcpt' in main and mod3 don't have same address");
-+ printf ("&protitcpt in main (%p) != &protitcpt in mod3 (%p)\n",
-+ &protitcpt, getitcpt3 ());
- res = 1;
- }
- if (protitcpt == getitcpt1 ())
-@@ -150,12 +152,12 @@
-
- /* Now look at variables. First a variable which is available
- everywhere. We must have three different addresses. */
-- if (protvarlocal == getvarlocal1 ())
-+ if (&protvarlocal == getvarlocal1 ())
- {
- puts ("`protvarlocal' in main and mod1 have same address");
- res = 1;
- }
-- if (protvarlocal == getvarlocal2 ())
-+ if (&protvarlocal == getvarlocal2 ())
- {
- puts ("`protvarlocal' in main and mod2 have same address");
- res = 1;
-@@ -170,54 +172,58 @@
- puts ("`protvarlocal in main has wrong value");
- res = 1;
- }
-- if (strcmp (getvarlocal1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvarlocal1 (), "vismod1.c") != 0)
- {
- puts ("`getvarlocal1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvarlocal2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvarlocal2 (), "vismod2.c") != 0)
- {
- puts ("`getvarlocal2' returns wrong value");
- res = 1;
- }
-
- /* Now the case where there is no local definition. */
-- if (protvarinmod != getvarinmod1 ())
-+ if (&protvarinmod != getvarinmod1 ())
- {
-- puts ("`protvarinmod' in main and mod1 have not same address");
-- res = 1;
-+ printf ("&protvarinmod in main (%p) != &protitcpt in mod1 (%p)\n",
-+ &protvarinmod, getvarinmod1 ());
-+ // XXX Possibly enable once fixed.
-+ // res = 1;
- }
-- if (protvarinmod == getvarinmod2 ())
-+ if (&protvarinmod == getvarinmod2 ())
- {
- puts ("`protvarinmod' in main and mod2 have same address");
- res = 1;
- }
-- if (strcmp (getvarinmod1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvarinmod1 (), "vismod1.c") != 0)
- {
- puts ("`getvarinmod1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvarinmod2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvarinmod2 (), "vismod2.c") != 0)
- {
- puts ("`getvarinmod2' returns wrong value");
- res = 1;
- }
-
- /* And a test where a variable definition is intercepted. */
-- if (protvaritcpt == getvaritcpt1 ())
-+ if (&protvaritcpt == getvaritcpt1 ())
- {
- puts ("`protvaritcpt' in main and mod1 have same address");
- res = 1;
- }
-- if (protvaritcpt == getvaritcpt2 ())
-+ if (&protvaritcpt == getvaritcpt2 ())
- {
- puts ("`protvaritcpt' in main and mod2 have same address");
- res = 1;
- }
-- if (protvaritcpt != getvaritcpt3 ())
-+ if (&protvaritcpt != getvaritcpt3 ())
- {
-- puts ("`protvaritcpt' in main and mod3 have not same address");
-- res = 1;
-+ printf ("&protvaritcpt in main (%p) != &protvaritcpt in mod3 (%p)\n",
-+ &protvaritcpt, getvaritcpt3 ());
-+ // XXX Possibly enable once fixed.
-+ // res = 1;
- }
- if (getvaritcpt1 () == getvaritcpt2 ())
- {
-@@ -229,12 +235,12 @@
- puts ("`protvaritcpt in main has wrong value");
- res = 1;
- }
-- if (strcmp (getvaritcpt1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvaritcpt1 (), "vismod1.c") != 0)
- {
- puts ("`getvaritcpt1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvaritcpt2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvaritcpt2 (), "vismod2.c") != 0)
- {
- puts ("`getvaritcpt2' returns wrong value");
- res = 1;
---- glibc-2.3.2/elf/vismod.h 2000-12-17 12:07:45.000000000 -0500
-+++ glibc-2.3.2/elf/vismod.h 2003-04-12 11:39:42.000000000 -0400
-@@ -5,21 +5,21 @@
- extern int (*getinmod1 (void)) (void);
- extern int callitcpt1 (void);
- extern int (*getitcpt1 (void)) (void);
--extern const char *getvarlocal1 (void);
--extern const char *getvarinmod1 (void);
--extern const char *getvaritcpt1 (void);
-+extern const char **getvarlocal1 (void);
-+extern const char **getvarinmod1 (void);
-+extern const char **getvaritcpt1 (void);
- extern int calllocal2 (void);
- extern int (*getlocal2 (void)) (void);
- extern int callinmod2 (void);
- extern int (*getinmod2 (void)) (void);
- extern int callitcpt2 (void);
- extern int (*getitcpt2 (void)) (void);
--extern const char *getvarlocal2 (void);
--extern const char *getvarinmod2 (void);
--extern const char *getvaritcpt2 (void);
-+extern const char **getvarlocal2 (void);
-+extern const char **getvarinmod2 (void);
-+extern const char **getvaritcpt2 (void);
- extern int callitcpt3 (void);
- extern int (*getitcpt3 (void)) (void);
--extern const char *getvaritcpt3 (void);
-+extern const char **getvaritcpt3 (void);
-
- extern int protinmod (void);
- extern int protitcpt (void);
---- glibc-2.3.2/elf/vismod1.c 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/elf/vismod1.c 2003-04-12 11:39:42.000000000 -0400
-@@ -79,26 +79,26 @@
- const char *protvarlocal = __FILE__;
- asm (".protected protvarlocal");
-
--const char *
-+const char **
- getvarlocal1 (void)
- {
-- return protvarlocal;
-+ return &protvarlocal;
- }
-
- const char *protvarinmod = __FILE__;
- asm (".protected protvarinmod");
-
--const char *
-+const char **
- getvarinmod1 (void)
- {
-- return protvarinmod;
-+ return &protvarinmod;
- }
-
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt1 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
---- glibc-2.3.2/elf/vismod2.c 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/elf/vismod2.c 2003-04-12 11:39:42.000000000 -0400
-@@ -80,28 +80,28 @@
- const char *protvarlocal = __FILE__;
- asm (".protected protvarlocal");
-
--const char *
-+const char **
- getvarlocal2 (void)
- {
-- return protvarlocal;
-+ return &protvarlocal;
- }
-
- const char *protvarinmod = __FILE__;
- asm (".protected protvarinmod");
-
--const char *
-+const char **
- getvarinmod2 (void)
- {
-- return protvarinmod;
-+ return &protvarinmod;
- }
-
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt2 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
-
- /* We must never call these functions. */
-@@ -117,7 +117,7 @@
- abort ();
- }
-
--const char *
-+const char **
- getvaritcpt3 (void)
- {
- abort ();
---- glibc-2.3.2/elf/vismod3.c 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/elf/vismod3.c 2003-04-12 11:39:42.000000000 -0400
-@@ -40,8 +40,8 @@
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt3 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
---- glibc-2.3.2/gmon/gmon.c 2003-01-07 22:49:47.000000000 -0500
-+++ glibc-2.3.2/gmon/gmon.c 2003-09-19 22:37:01.000000000 -0400
-@@ -42,6 +42,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <libc-internal.h>
-+#include <not-cancel.h>
-
- #ifdef USE_IN_LIBIO
- # include <wchar.h>
-@@ -58,7 +59,7 @@
- static int s_scale;
- #define SCALE_1_TO_1 0x10000L
-
--#define ERR(s) __write (STDERR_FILENO, s, sizeof (s) - 1)
-+#define ERR(s) write_not_cancel (STDERR_FILENO, s, sizeof (s) - 1)
-
- void moncontrol __P ((int mode));
- void __moncontrol __P ((int mode));
-@@ -198,7 +199,7 @@
- strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen));
- thdr.dimen_abbrev = 's';
-
-- __writev (fd, iov, 3);
-+ writev_not_cancel_no_status (fd, iov, 3);
- }
- }
-
-@@ -213,7 +214,7 @@
- struct gmon_cg_arc_record raw_arc[NARCS_PER_WRITEV]
- __attribute__ ((aligned (__alignof__ (char*))));
- ARCINDEX from_index, to_index;
-- int from_len;
-+ u_long from_len;
- u_long frompc;
- struct iovec iov[2 * NARCS_PER_WRITEV];
- int nfilled;
-@@ -256,13 +257,13 @@
-
- if (++nfilled == NARCS_PER_WRITEV)
- {
-- __writev (fd, iov, 2 * nfilled);
-+ writev_not_cancel_no_status (fd, iov, 2 * nfilled);
- nfilled = 0;
- }
- }
- }
- if (nfilled > 0)
-- __writev (fd, iov, 2 * nfilled);
-+ writev_not_cancel_no_status (fd, iov, 2 * nfilled);
- }
-
-
-@@ -296,12 +297,12 @@
- for (grp = __bb_head; grp; grp = grp->next)
- {
- ncounts = grp->ncounts;
-- __writev (fd, bbhead, 2);
-+ writev_not_cancel_no_status (fd, bbhead, 2);
- for (nfilled = i = 0; i < ncounts; ++i)
- {
- if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2)
- {
-- __writev (fd, bbbody, nfilled);
-+ writev_not_cancel_no_status (fd, bbbody, nfilled);
- nfilled = 0;
- }
-
-@@ -309,7 +310,7 @@
- bbbody[nfilled++].iov_base = &grp->counts[i];
- }
- if (nfilled > 0)
-- __writev (fd, bbbody, nfilled);
-+ writev_not_cancel_no_status (fd, bbbody, nfilled);
- }
- }
-
-@@ -331,12 +332,13 @@
- size_t len = strlen (env);
- char buf[len + 20];
- sprintf (buf, "%s.%u", env, __getpid ());
-- fd = __open (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
-+ fd = open_not_cancel (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
- }
-
- if (fd == -1)
- {
-- fd = __open ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
-+ fd = open_not_cancel ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW,
-+ 0666);
- if (fd < 0)
- {
- char buf[300];
-@@ -357,7 +359,7 @@
- memset (&ghdr, '\0', sizeof (struct gmon_hdr));
- memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie));
- *(int32_t *) ghdr.version = GMON_VERSION;
-- __write (fd, &ghdr, sizeof (struct gmon_hdr));
-+ write_not_cancel (fd, &ghdr, sizeof (struct gmon_hdr));
-
- /* write PC histogram: */
- write_hist (fd);
-@@ -368,7 +370,7 @@
- /* write basic-block execution counts: */
- write_bb_counts (fd);
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- }
-
-
---- glibc-2.3.2/gmon/mcount.c 2002-08-29 05:25:51.000000000 -0400
-+++ glibc-2.3.2/gmon/mcount.c 2003-04-12 11:39:42.000000000 -0400
-@@ -39,7 +39,7 @@
- and MCOUNT macros. */
- #include "machine-gmon.h"
-
--#include <atomicity.h>
-+#include <atomic.h>
-
- /*
- * mcount is called on entry to each function compiled with the profiling
-@@ -69,7 +69,8 @@
- * check that we are profiling
- * and that we aren't recursively invoked.
- */
-- if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY))
-+ if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY,
-+ GMON_PROF_ON))
- return;
-
- /*
---- glibc-2.3.2/gmon/tst-sprofil.c 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/gmon/tst-sprofil.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -165,7 +165,7 @@
- if (buf[i][j] != 0)
- printf ("%0*Zx\t%u\t(buffer %d)\n",
- (int) (sizeof (size_t) * 2),
-- (taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]),
-+ (taddr[i] + ((char *) &buf[i][j] - (char *) &buf[i][0])),
- buf[i][j], i);
-
- return 0;
---- glibc-2.3.2/grp/Makefile 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/grp/Makefile 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991, 92, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
-+# Copyright (C) 1991,92,96,97,98,99,2000,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
-@@ -47,8 +47,15 @@
-
- ifeq ($(have-thread-library),yes)
-
--CFLAGS-getgrgid_r.c = -DUSE_NSCD=1
--CFLAGS-getgrnam_r.c = -DUSE_NSCD=1
-+CFLAGS-getgrgid_r.c = -DUSE_NSCD=1 -fexceptions
-+CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 -fexceptions
-+CFLAGS-getgrent_r.c = -fexceptions
-+CFLAGS-getgrent.c = -fexceptions
-+CFLAGS-fgetgrent.c = -fexceptions
-+CFLAGS-fgetgrent_r.c = -fexceptions
-+CFLAGS-putgrent.c = -fexceptions
-+CFLAGS-initgroups.c = -fexceptions
-+CFLAGS-getgrgid.c = -fexceptions
-
- endif
-
---- glibc-2.3.2/grp/grp.h 2001-07-07 15:20:53.000000000 -0400
-+++ glibc-2.3.2/grp/grp.h 2003-04-24 20:05:57.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1995-2001, 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
-@@ -56,32 +56,57 @@
-
-
- #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
--/* Rewind the group-file stream. */
--extern void setgrent (void) __THROW;
-+/* Rewind the group-file stream.
-
--/* Close the group-file stream. */
--extern void endgrent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setgrent (void);
-
--/* Read an entry from the group-file stream, opening it if necessary. */
--extern struct group *getgrent (void) __THROW;
-+/* Close the group-file stream.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endgrent (void);
-+
-+/* Read an entry from the group-file stream, opening it if necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct group *getgrent (void);
- #endif
-
- #ifdef __USE_SVID
--/* Read a group entry from STREAM. */
--extern struct group *fgetgrent (FILE *__stream) __THROW;
-+/* Read a group entry from STREAM.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct group *fgetgrent (FILE *__stream);
- #endif
-
- #ifdef __USE_GNU
--/* Write the given entry onto the given stream. */
-+/* Write the given entry onto the given stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int putgrent (__const struct group *__restrict __p,
-- FILE *__restrict __f) __THROW;
-+ FILE *__restrict __f);
- #endif
-
--/* Search for an entry with a matching group ID. */
--extern struct group *getgrgid (__gid_t __gid) __THROW;
-+/* Search for an entry with a matching group ID.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct group *getgrgid (__gid_t __gid);
-+
-+/* Search for an entry with a matching group name.
-
--/* Search for an entry with a matching group name. */
--extern struct group *getgrnam (__const char *__name) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct group *getgrnam (__const char *__name);
-
- #if defined __USE_POSIX || defined __USE_MISC
-
-@@ -97,32 +122,48 @@
- The interface may change in later versions of this library. But
- the interface is designed following the principals used for the
- other reentrant functions so the chances are good this is what the
-- POSIX people would choose. */
-+ POSIX people would choose.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-
- # ifdef __USE_GNU
- extern int getgrent_r (struct group *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct group **__restrict __result) __THROW;
-+ struct group **__restrict __result);
- # endif
-
--/* Search for an entry with a matching group ID. */
-+/* Search for an entry with a matching group ID.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct group **__restrict __result) __THROW;
-+ struct group **__restrict __result);
-+
-+/* Search for an entry with a matching group name.
-
--/* Search for an entry with a matching group name. */
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int getgrnam_r (__const char *__restrict __name,
- struct group *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct group **__restrict __result) __THROW;
-+ struct group **__restrict __result);
-
- # ifdef __USE_SVID
- /* Read a group entry from STREAM. This function is not standardized
-- an probably never will. */
-+ an probably never will.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int fgetgrent_r (FILE *__restrict __stream,
- struct group *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct group **__restrict __result) __THROW;
-+ struct group **__restrict __result);
- # endif
-
- #endif /* POSIX or reentrant */
-@@ -138,14 +179,24 @@
-
- /* Store at most *NGROUPS members of the group set for USER into
- *GROUPS. Also include GROUP. The actual number of groups found is
-- returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */
-+ returned in *NGROUPS. Return -1 if the if *NGROUPS is too small.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getgrouplist (__const char *__user, __gid_t __group,
-- __gid_t *__groups, int *__ngroups) __THROW;
-+ __gid_t *__groups, int *__ngroups);
-
- /* Initialize the group set for the current user
- by reading the group database and using all groups
-- of which USER is a member. Also include GROUP. */
--extern int initgroups (__const char *__user, __gid_t __group) __THROW;
-+ of which USER is a member. Also include GROUP.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int initgroups (__const char *__user, __gid_t __group);
-
- #endif /* Use BSD. */
-
---- glibc-2.3.2/grp/initgroups.c 2002-03-13 12:49:14.000000000 -0500
-+++ glibc-2.3.2/grp/initgroups.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1989,91,93,1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1989,91,93,1996-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
-@@ -23,6 +23,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
-+#include <sys/param.h>
- #include <sys/types.h>
- #include <nsswitch.h>
-
-@@ -207,6 +208,9 @@
- return -1;
-
- result = internal_getgrouplist (user, group, &size, &newgroups, -1);
-+
-+ memcpy (groups, newgroups, MIN (*ngroups, result) * sizeof (gid_t));
-+
- if (result > *ngroups)
- {
- *ngroups = result;
-@@ -215,12 +219,12 @@
- else
- *ngroups = result;
-
-- memcpy (groups, newgroups, *ngroups * sizeof (gid_t));
--
- free (newgroups);
- return result;
- }
-
-+static_link_warning (getgrouplist)
-+
- /* Initialize the group set for the current user
- by reading the group database and using all groups
- of which USER is a member. Also include GROUP. */
-@@ -269,3 +273,5 @@
- return result;
- #endif
- }
-+
-+static_link_warning (initgroups)
---- glibc-2.3.2/hurd/hurdmalloc.c 2001-09-18 23:04:09.000000000 -0400
-+++ glibc-2.3.2/hurd/hurdmalloc.c 2002-11-16 08:54:02.000000000 -0500
-@@ -35,10 +35,6 @@
- /*
- * HISTORY
- * $Log: hurdmalloc.c,v $
-- * 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>
- *
---- glibc-2.3.2/iconv/Makefile 2002-11-25 20:50:58.000000000 -0500
-+++ glibc-2.3.2/iconv/Makefile 2003-08-21 08:36:59.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1997,1998,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
-@@ -35,11 +35,11 @@
- CFLAGS-gconv_simple.c = -DSTATIC_GCONV
- endif
-
--vpath %.c ../locale/programs
-+vpath %.c ../locale/programs ../intl
-
- iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \
- dummy-repertoire simple-hash xstrdup xmalloc
--iconvconfig-modules = strtab xmalloc
-+iconvconfig-modules = strtab xmalloc hash-string
- extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o)
- CFLAGS-iconv_prog.c = -I../locale/programs
- CFLAGS-iconv_charmap.c = -I../locale/programs
---- glibc-2.3.2/iconv/gconv_cache.c 2002-12-02 16:26:09.000000000 -0500
-+++ glibc-2.3.2/iconv/gconv_cache.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Cache handling for iconv modules.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
-
-@@ -19,6 +19,7 @@
- 02111-1307 USA. */
-
- #include <dlfcn.h>
-+#include <errno.h>
- #include <fcntl.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -28,6 +29,7 @@
-
- #include <gconv_int.h>
- #include <iconvconfig.h>
-+#include <not-cancel.h>
-
- #include "../intl/hash-string.h"
-
-@@ -58,7 +60,7 @@
- return -1;
-
- /* See whether the cache file exists. */
-- fd = __open (GCONV_MODULES_CACHE, O_RDONLY);
-+ fd = open_not_cancel (GCONV_MODULES_CACHE, O_RDONLY, 0);
- if (__builtin_expect (fd, 0) == -1)
- /* Not available. */
- return -1;
-@@ -70,7 +72,7 @@
- || (size_t) st.st_size < sizeof (struct gconvcache_header))
- {
- close_and_exit:
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return -1;
- }
-
-@@ -107,7 +109,7 @@
- }
-
- /* We don't need the file descriptor anymore. */
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- /* Check the consistency. */
- header = (struct gconvcache_header *) gconv_cache;
-@@ -157,7 +159,7 @@
- hashtab = (struct hash_entry *) ((char *) gconv_cache
- + header->hash_offset);
-
-- hval = hash_string (str);
-+ hval = __hash_string (str);
- idx = hval % header->hash_size;
- hval2 = 1 + hval % (header->hash_size - 2);
-
---- glibc-2.3.2/iconv/gconv_charset.h 2002-05-14 16:46:02.000000000 -0400
-+++ glibc-2.3.2/iconv/gconv_charset.h 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Charset name normalization.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
-
-@@ -22,7 +22,7 @@
- #include <locale.h>
-
-
--static inline void
-+static void
- strip (char *wp, const char *s)
- {
- int slash_count = 0;
-@@ -48,7 +48,7 @@
- }
-
-
--static inline char * __attribute__ ((unused))
-+static inline char * __attribute__ ((unused, always_inline))
- upstr (char *dst, const char *str)
- {
- char *cp = dst;
-@@ -56,8 +56,3 @@
- /* nothing */;
- return dst;
- }
--
--
--/* If NAME is an codeset alias expand it. */
--extern int __gconv_compare_alias (const char *name1, const char *name2)
-- internal_function;
---- glibc-2.3.2/iconv/gconv_conf.c 2002-12-15 23:26:02.000000000 -0500
-+++ glibc-2.3.2/iconv/gconv_conf.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Handle configuration data.
-- Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -125,7 +125,7 @@
-
-
- /* Add new alias. */
--static inline void
-+static void
- add_alias (char *rp, void *modules)
- {
- /* We now expect two more string. The strings are normalized
-@@ -178,7 +178,7 @@
-
-
- /* Insert a data structure for a new module in the search tree. */
--static inline void
-+static void
- internal_function
- insert_module (struct gconv_module *newp, int tobefreed)
- {
-@@ -357,7 +357,9 @@
- read_conf_file (const char *filename, const char *directory, size_t dir_len,
- void **modules, size_t *nmodules)
- {
-- FILE *fp = fopen (filename, "r");
-+ /* Note the file is opened with cancellation in the I/O functions
-+ disabled. */
-+ FILE *fp = fopen (filename, "rc");
- char *line = NULL;
- size_t line_len = 0;
- static int modcounter;
---- glibc-2.3.2/iconv/gconv_db.c 2002-12-02 16:26:09.000000000 -0500
-+++ glibc-2.3.2/iconv/gconv_db.c 2003-08-21 08:36:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Provide access to the collection of available transformation modules.
-- Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -27,7 +27,6 @@
-
- #include <dlfcn.h>
- #include <gconv_int.h>
--#include <gconv_charset.h>
-
-
- /* Simple data structure for alias mapping. We have two names, `from'
---- glibc-2.3.2/iconv/gconv_int.h 2002-12-02 16:26:09.000000000 -0500
-+++ glibc-2.3.2/iconv/gconv_int.h 2003-08-21 08:36:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -262,6 +262,11 @@
- size_t *irreversible) attribute_hidden;
-
-
-+/* If NAME is an codeset alias expand it. */
-+extern int __gconv_compare_alias (const char *name1, const char *name2)
-+ internal_function;
-+
-+
- /* Builtin transformations. */
- #ifdef _LIBC
- # define __BUILTIN_TRANSFORM(Name) \
---- glibc-2.3.2/iconv/gconv_simple.c 2003-01-16 01:31:35.000000000 -0500
-+++ glibc-2.3.2/iconv/gconv_simple.c 2003-08-21 08:36:59.000000000 -0400
-@@ -72,6 +72,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- internal_ucs4_loop (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
-@@ -113,6 +114,7 @@
-
- #ifndef _STRING_ARCH_unaligned
- static inline int
-+__attribute ((always_inline))
- internal_ucs4_loop_unaligned (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -161,6 +163,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- internal_ucs4_loop_single (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -219,6 +222,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- ucs4_internal_loop (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
-@@ -283,6 +287,7 @@
-
- #ifndef _STRING_ARCH_unaligned
- static inline int
-+__attribute ((always_inline))
- ucs4_internal_loop_unaligned (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -352,6 +357,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- ucs4_internal_loop_single (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -426,6 +432,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- internal_ucs4le_loop (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
-@@ -467,6 +474,7 @@
-
- #ifndef _STRING_ARCH_unaligned
- static inline int
-+__attribute ((always_inline))
- internal_ucs4le_loop_unaligned (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -518,6 +526,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- internal_ucs4le_loop_single (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -573,6 +582,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- ucs4le_internal_loop (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
-@@ -638,6 +648,7 @@
-
- #ifndef _STRING_ARCH_unaligned
- static inline int
-+__attribute ((always_inline))
- ucs4le_internal_loop_unaligned (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
-@@ -711,6 +722,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- ucs4le_internal_loop_single (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp,
---- glibc-2.3.2/iconv/iconv.h 2001-07-07 15:20:58.000000000 -0400
-+++ glibc-2.3.2/iconv/iconv.h 2003-04-24 20:05:57.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -31,9 +31,11 @@
-
-
- /* Allocate descriptor for code conversion from codeset FROMCODE to
-- codeset TOCODE. */
--extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode)
-- __THROW;
-+ codeset TOCODE.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
-
- /* Convert at most *INBYTESLEFT bytes from *INBUF according to the
- code conversion algorithm specified by CD and place up to
-@@ -43,8 +45,11 @@
- char **__restrict __outbuf,
- size_t *__restrict __outbytesleft);
-
--/* Free resources allocated for descriptor CD for code conversion. */
--extern int iconv_close (iconv_t __cd) __THROW;
-+/* Free resources allocated for descriptor CD for code conversion.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int iconv_close (iconv_t __cd);
-
- __END_DECLS
-
---- glibc-2.3.2/iconv/iconv_prog.c 2003-02-22 14:20:07.000000000 -0500
-+++ glibc-2.3.2/iconv/iconv_prog.c 2003-04-12 11:39:42.000000000 -0400
-@@ -160,14 +160,16 @@
- if (*errhand == '/')
- {
- --nslash;
-- ++errhand;
-+ errhand = strchr (errhand, '\0');
- }
- }
-
-- newp = (char *) alloca (errhand - to_code + nslash + 6 + 1);
-+ newp = (char *) alloca (errhand - to_code + nslash + 7 + 1);
- cp = mempcpy (newp, to_code, errhand - to_code);
- while (nslash-- > 0)
- *cp++ = '/';
-+ if (cp[-1] != '/')
-+ *cp++ = ',';
- memcpy (cp, "IGNORE", sizeof ("IGNORE"));
-
- to_code = newp;
-@@ -496,8 +498,9 @@
- switch (errno)
- {
- case EILSEQ:
-- error (0, 0, _("illegal input sequence at position %ld"),
-- (long) (addr - start));
-+ if (! omit_invalid)
-+ error (0, 0, _("illegal input sequence at position %ld"),
-+ (long int) (addr - start));
- break;
- case EINVAL:
- error (0, 0, _("\
---- glibc-2.3.2/iconv/iconvconfig.c 2003-01-02 14:59:10.000000000 -0500
-+++ glibc-2.3.2/iconv/iconvconfig.c 2003-08-21 08:36:59.000000000 -0400
-@@ -784,7 +784,7 @@
- newp->name = str;
- newp->strent = strent;
- newp->module_idx = -1;
-- newp->hashval = hash_string (str);
-+ newp->hashval = __hash_string (str);
-
- ++nnames;
-
---- glibc-2.3.2/iconv/loop.c 2003-01-16 01:30:13.000000000 -0500
-+++ glibc-2.3.2/iconv/loop.c 2003-08-21 08:36:59.000000000 -0400
-@@ -257,6 +257,7 @@
-
- /* The function returns the status, as defined in gconv.h. */
- static inline int
-+__attribute ((always_inline))
- FCTNAME (LOOPFCT) (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
-@@ -342,6 +343,7 @@
- # define SINGLE(fct) SINGLE2 (fct)
- # define SINGLE2(fct) fct##_single
- static inline int
-+__attribute ((always_inline))
- SINGLE(LOOPFCT) (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char **inptrp, const unsigned char *inend,
---- glibc-2.3.2/iconv/tst-iconv3.c 2002-03-28 18:41:38.000000000 -0500
-+++ glibc-2.3.2/iconv/tst-iconv3.c 2003-08-21 08:36:59.000000000 -0400
-@@ -42,7 +42,7 @@
-
- printf ("inptr change: %td\n", inptr - inbuf);
- printf ("inlen change: %zd\n", BUFSIZE - inbytes_left);
-- printf ("outptr change: %zd\n", outptr - (char *) outbuf);
-+ printf ("outptr change: %td\n", outptr - (char *) outbuf);
- printf ("outlen change: %zd\n", BUFSIZE * 4 - outbytes_left);
- result = 1;
- }
---- glibc-2.3.2/iconvdata/CP932.irreversible 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/iconvdata/CP932.irreversible 2003-08-14 04:45:33.000000000 -0400
-@@ -0,0 +1,407 @@
-+0x5C 0x00A5
-+0x7E 0x203E
-+0x815C 0x2014
-+0x8160 0x301C
-+0x8161 0x2016
-+0x817C 0x2212
-+0x8191 0x00A2
-+0x8192 0x00A3
-+0x81CA 0x00AC
-+0x8790 0x2252
-+0x8791 0x2261
-+0x8792 0x222B
-+0x8795 0x221A
-+0x8796 0x22A5
-+0x8797 0x2220
-+0x879A 0x2235
-+0x879B 0x2229
-+0x879C 0x222A
-+0xED40 0x7E8A
-+0xED41 0x891C
-+0xED42 0x9348
-+0xED43 0x9288
-+0xED44 0x84DC
-+0xED45 0x4FC9
-+0xED46 0x70BB
-+0xED47 0x6631
-+0xED48 0x68C8
-+0xED49 0x92F9
-+0xED4A 0x66FB
-+0xED4B 0x5F45
-+0xED4C 0x4E28
-+0xED4D 0x4EE1
-+0xED4E 0x4EFC
-+0xED4F 0x4F00
-+0xED50 0x4F03
-+0xED51 0x4F39
-+0xED52 0x4F56
-+0xED53 0x4F92
-+0xED54 0x4F8A
-+0xED55 0x4F9A
-+0xED56 0x4F94
-+0xED57 0x4FCD
-+0xED58 0x5040
-+0xED59 0x5022
-+0xED5A 0x4FFF
-+0xED5B 0x501E
-+0xED5C 0x5046
-+0xED5D 0x5070
-+0xED5E 0x5042
-+0xED5F 0x5094
-+0xED60 0x50F4
-+0xED61 0x50D8
-+0xED62 0x514A
-+0xED63 0x5164
-+0xED64 0x519D
-+0xED65 0x51BE
-+0xED66 0x51EC
-+0xED67 0x5215
-+0xED68 0x529C
-+0xED69 0x52A6
-+0xED6A 0x52C0
-+0xED6B 0x52DB
-+0xED6C 0x5300
-+0xED6D 0x5307
-+0xED6E 0x5324
-+0xED6F 0x5372
-+0xED70 0x5393
-+0xED71 0x53B2
-+0xED72 0x53DD
-+0xED73 0xFA0E
-+0xED74 0x549C
-+0xED75 0x548A
-+0xED76 0x54A9
-+0xED77 0x54FF
-+0xED78 0x5586
-+0xED79 0x5759
-+0xED7A 0x5765
-+0xED7B 0x57AC
-+0xED7C 0x57C8
-+0xED7D 0x57C7
-+0xED7E 0xFA0F
-+0xED80 0xFA10
-+0xED81 0x589E
-+0xED82 0x58B2
-+0xED83 0x590B
-+0xED84 0x5953
-+0xED85 0x595B
-+0xED86 0x595D
-+0xED87 0x5963
-+0xED88 0x59A4
-+0xED89 0x59BA
-+0xED8A 0x5B56
-+0xED8B 0x5BC0
-+0xED8C 0x752F
-+0xED8D 0x5BD8
-+0xED8E 0x5BEC
-+0xED8F 0x5C1E
-+0xED90 0x5CA6
-+0xED91 0x5CBA
-+0xED92 0x5CF5
-+0xED93 0x5D27
-+0xED94 0x5D53
-+0xED95 0xFA11
-+0xED96 0x5D42
-+0xED97 0x5D6D
-+0xED98 0x5DB8
-+0xED99 0x5DB9
-+0xED9A 0x5DD0
-+0xED9B 0x5F21
-+0xED9C 0x5F34
-+0xED9D 0x5F67
-+0xED9E 0x5FB7
-+0xED9F 0x5FDE
-+0xEDA0 0x605D
-+0xEDA1 0x6085
-+0xEDA2 0x608A
-+0xEDA3 0x60DE
-+0xEDA4 0x60D5
-+0xEDA5 0x6120
-+0xEDA6 0x60F2
-+0xEDA7 0x6111
-+0xEDA8 0x6137
-+0xEDA9 0x6130
-+0xEDAA 0x6198
-+0xEDAB 0x6213
-+0xEDAC 0x62A6
-+0xEDAD 0x63F5
-+0xEDAE 0x6460
-+0xEDAF 0x649D
-+0xEDB0 0x64CE
-+0xEDB1 0x654E
-+0xEDB2 0x6600
-+0xEDB3 0x6615
-+0xEDB4 0x663B
-+0xEDB5 0x6609
-+0xEDB6 0x662E
-+0xEDB7 0x661E
-+0xEDB8 0x6624
-+0xEDB9 0x6665
-+0xEDBA 0x6657
-+0xEDBB 0x6659
-+0xEDBC 0xFA12
-+0xEDBD 0x6673
-+0xEDBE 0x6699
-+0xEDBF 0x66A0
-+0xEDC0 0x66B2
-+0xEDC1 0x66BF
-+0xEDC2 0x66FA
-+0xEDC3 0x670E
-+0xEDC4 0xF929
-+0xEDC5 0x6766
-+0xEDC6 0x67BB
-+0xEDC7 0x6852
-+0xEDC8 0x67C0
-+0xEDC9 0x6801
-+0xEDCA 0x6844
-+0xEDCB 0x68CF
-+0xEDCC 0xFA13
-+0xEDCD 0x6968
-+0xEDCE 0xFA14
-+0xEDCF 0x6998
-+0xEDD0 0x69E2
-+0xEDD1 0x6A30
-+0xEDD2 0x6A6B
-+0xEDD3 0x6A46
-+0xEDD4 0x6A73
-+0xEDD5 0x6A7E
-+0xEDD6 0x6AE2
-+0xEDD7 0x6AE4
-+0xEDD8 0x6BD6
-+0xEDD9 0x6C3F
-+0xEDDA 0x6C5C
-+0xEDDB 0x6C86
-+0xEDDC 0x6C6F
-+0xEDDD 0x6CDA
-+0xEDDE 0x6D04
-+0xEDDF 0x6D87
-+0xEDE0 0x6D6F
-+0xEDE1 0x6D96
-+0xEDE2 0x6DAC
-+0xEDE3 0x6DCF
-+0xEDE4 0x6DF8
-+0xEDE5 0x6DF2
-+0xEDE6 0x6DFC
-+0xEDE7 0x6E39
-+0xEDE8 0x6E5C
-+0xEDE9 0x6E27
-+0xEDEA 0x6E3C
-+0xEDEB 0x6EBF
-+0xEDEC 0x6F88
-+0xEDED 0x6FB5
-+0xEDEE 0x6FF5
-+0xEDEF 0x7005
-+0xEDF0 0x7007
-+0xEDF1 0x7028
-+0xEDF2 0x7085
-+0xEDF3 0x70AB
-+0xEDF4 0x710F
-+0xEDF5 0x7104
-+0xEDF6 0x715C
-+0xEDF7 0x7146
-+0xEDF8 0x7147
-+0xEDF9 0xFA15
-+0xEDFA 0x71C1
-+0xEDFB 0x71FE
-+0xEDFC 0x72B1
-+0xEE40 0x72BE
-+0xEE41 0x7324
-+0xEE42 0xFA16
-+0xEE43 0x7377
-+0xEE44 0x73BD
-+0xEE45 0x73C9
-+0xEE46 0x73D6
-+0xEE47 0x73E3
-+0xEE48 0x73D2
-+0xEE49 0x7407
-+0xEE4A 0x73F5
-+0xEE4B 0x7426
-+0xEE4C 0x742A
-+0xEE4D 0x7429
-+0xEE4E 0x742E
-+0xEE4F 0x7462
-+0xEE50 0x7489
-+0xEE51 0x749F
-+0xEE52 0x7501
-+0xEE53 0x756F
-+0xEE54 0x7682
-+0xEE55 0x769C
-+0xEE56 0x769E
-+0xEE57 0x769B
-+0xEE58 0x76A6
-+0xEE59 0xFA17
-+0xEE5A 0x7746
-+0xEE5B 0x52AF
-+0xEE5C 0x7821
-+0xEE5D 0x784E
-+0xEE5E 0x7864
-+0xEE5F 0x787A
-+0xEE60 0x7930
-+0xEE61 0xFA18
-+0xEE62 0xFA19
-+0xEE63 0xFA1A
-+0xEE64 0x7994
-+0xEE65 0xFA1B
-+0xEE66 0x799B
-+0xEE67 0x7AD1
-+0xEE68 0x7AE7
-+0xEE69 0xFA1C
-+0xEE6A 0x7AEB
-+0xEE6B 0x7B9E
-+0xEE6C 0xFA1D
-+0xEE6D 0x7D48
-+0xEE6E 0x7D5C
-+0xEE6F 0x7DB7
-+0xEE70 0x7DA0
-+0xEE71 0x7DD6
-+0xEE72 0x7E52
-+0xEE73 0x7F47
-+0xEE74 0x7FA1
-+0xEE75 0xFA1E
-+0xEE76 0x8301
-+0xEE77 0x8362
-+0xEE78 0x837F
-+0xEE79 0x83C7
-+0xEE7A 0x83F6
-+0xEE7B 0x8448
-+0xEE7C 0x84B4
-+0xEE7D 0x8553
-+0xEE7E 0x8559
-+0xEE80 0x856B
-+0xEE81 0xFA1F
-+0xEE82 0x85B0
-+0xEE83 0xFA20
-+0xEE84 0xFA21
-+0xEE85 0x8807
-+0xEE86 0x88F5
-+0xEE87 0x8A12
-+0xEE88 0x8A37
-+0xEE89 0x8A79
-+0xEE8A 0x8AA7
-+0xEE8B 0x8ABE
-+0xEE8C 0x8ADF
-+0xEE8D 0xFA22
-+0xEE8E 0x8AF6
-+0xEE8F 0x8B53
-+0xEE90 0x8B7F
-+0xEE91 0x8CF0
-+0xEE92 0x8CF4
-+0xEE93 0x8D12
-+0xEE94 0x8D76
-+0xEE95 0xFA23
-+0xEE96 0x8ECF
-+0xEE97 0xFA24
-+0xEE98 0xFA25
-+0xEE99 0x9067
-+0xEE9A 0x90DE
-+0xEE9B 0xFA26
-+0xEE9C 0x9115
-+0xEE9D 0x9127
-+0xEE9E 0x91DA
-+0xEE9F 0x91D7
-+0xEEA0 0x91DE
-+0xEEA1 0x91ED
-+0xEEA2 0x91EE
-+0xEEA3 0x91E4
-+0xEEA4 0x91E5
-+0xEEA5 0x9206
-+0xEEA6 0x9210
-+0xEEA7 0x920A
-+0xEEA8 0x923A
-+0xEEA9 0x9240
-+0xEEAA 0x923C
-+0xEEAB 0x924E
-+0xEEAC 0x9259
-+0xEEAD 0x9251
-+0xEEAE 0x9239
-+0xEEAF 0x9267
-+0xEEB0 0x92A7
-+0xEEB1 0x9277
-+0xEEB2 0x9278
-+0xEEB3 0x92E7
-+0xEEB4 0x92D7
-+0xEEB5 0x92D9
-+0xEEB6 0x92D0
-+0xEEB7 0xFA27
-+0xEEB8 0x92D5
-+0xEEB9 0x92E0
-+0xEEBA 0x92D3
-+0xEEBB 0x9325
-+0xEEBC 0x9321
-+0xEEBD 0x92FB
-+0xEEBE 0xFA28
-+0xEEBF 0x931E
-+0xEEC0 0x92FF
-+0xEEC1 0x931D
-+0xEEC2 0x9302
-+0xEEC3 0x9370
-+0xEEC4 0x9357
-+0xEEC5 0x93A4
-+0xEEC6 0x93C6
-+0xEEC7 0x93DE
-+0xEEC8 0x93F8
-+0xEEC9 0x9431
-+0xEECA 0x9445
-+0xEECB 0x9448
-+0xEECC 0x9592
-+0xEECD 0xF9DC
-+0xEECE 0xFA29
-+0xEECF 0x969D
-+0xEED0 0x96AF
-+0xEED1 0x9733
-+0xEED2 0x973B
-+0xEED3 0x9743
-+0xEED4 0x974D
-+0xEED5 0x974F
-+0xEED6 0x9751
-+0xEED7 0x9755
-+0xEED8 0x9857
-+0xEED9 0x9865
-+0xEEDA 0xFA2A
-+0xEEDB 0xFA2B
-+0xEEDC 0x9927
-+0xEEDD 0xFA2C
-+0xEEDE 0x999E
-+0xEEDF 0x9A4E
-+0xEEE0 0x9AD9
-+0xEEE1 0x9ADC
-+0xEEE2 0x9B75
-+0xEEE3 0x9B72
-+0xEEE4 0x9B8F
-+0xEEE5 0x9BB1
-+0xEEE6 0x9BBB
-+0xEEE7 0x9C00
-+0xEEE8 0x9D70
-+0xEEE9 0x9D6B
-+0xEEEA 0xFA2D
-+0xEEEB 0x9E19
-+0xEEEC 0x9ED1
-+0xEEEF 0x2170
-+0xEEF0 0x2171
-+0xEEF1 0x2172
-+0xEEF2 0x2173
-+0xEEF3 0x2174
-+0xEEF4 0x2175
-+0xEEF5 0x2176
-+0xEEF6 0x2177
-+0xEEF7 0x2178
-+0xEEF8 0x2179
-+0xEEF9 0xFFE2
-+0xEEFA 0xFFE4
-+0xEEFB 0xFF07
-+0xEEFC 0xFF02
-+0xFA4A 0x2160
-+0xFA4B 0x2161
-+0xFA4C 0x2162
-+0xFA4D 0x2163
-+0xFA4E 0x2164
-+0xFA4F 0x2165
-+0xFA50 0x2166
-+0xFA51 0x2167
-+0xFA52 0x2168
-+0xFA53 0x2169
-+0xFA54 0xFFE2
-+0xFA58 0x3231
-+0xFA59 0x2116
-+0xFA5A 0x2121
-+0xFA5B 0x2235
---- glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 2003-08-14 04:45:33.000000000 -0400
-@@ -0,0 +1,34 @@
-+0x5C 0x00A5
-+0x7E 0x203E
-+0x8FA2B7 0xFF5E
-+0x8FA2C3 0x00A6
-+0x8FA2F1 0x2116
-+0x8FF3FD 0x2160
-+0x8FF3FE 0x2161
-+0x8FF4A1 0x2162
-+0x8FF4A2 0x2163
-+0x8FF4A3 0x2164
-+0x8FF4A4 0x2165
-+0x8FF4A5 0x2166
-+0x8FF4A6 0x2167
-+0x8FF4A7 0x2168
-+0x8FF4A8 0x2169
-+0x8FF4AB 0x3231
-+0x8FF4AC 0x2116
-+0x8FF4AD 0x2121
-+0xA1BD 0x2014
-+0xA1C1 0x301C
-+0xA1C2 0x2016
-+0xA1DD 0x2212
-+0xA1F1 0x00A2
-+0xA1F2 0x00A3
-+0xA2CC 0x00AC
-+0xADF0 0x2252
-+0xADF1 0x2261
-+0xADF2 0x222B
-+0xADF5 0x221A
-+0xADF6 0x22A5
-+0xADF7 0x2220
-+0xADFA 0x2235
-+0xADFB 0x2229
-+0xADFC 0x222A
---- glibc-2.3.2/iconvdata/Makefile 2003-02-21 20:01:16.000000000 -0500
-+++ glibc-2.3.2/iconvdata/Makefile 2003-08-21 08:36:59.000000000 -0400
-@@ -51,14 +51,14 @@
- GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \
- GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8 \
- TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \
-- ISO-2022-JP-3 TSCII IBM866NAV
-+ ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS
-
- modules.so := $(addsuffix .so, $(modules))
-
- include ../Makeconfig
-
- ifeq (yes,$(build-shared))
--tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4
-+tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4
- ifeq ($(have-thread-library),yes)
- tests += bug-iconv3
- endif
-@@ -84,6 +84,8 @@
- $(objpfx)UHC.so: $(objpfx)libKSC.so
- LDFLAGS-EUC-JP.so = $(LDFLAGS-rpath-ORIGIN)
- $(objpfx)EUC-JP.so: $(objpfx)libJIS.so
-+LDFLAGS-EUC-JP-MS.so = $(LDFLAGS-rpath-ORIGIN)
-+$(objpfx)EUC-JP-MS.so: $(objpfx)libJIS.so
- LDFLAGS-EUC-CN.so = $(LDFLAGS-rpath-ORIGIN)
- $(objpfx)EUC-CN.so: $(objpfx)libGB.so
- LDFLAGS-EUC-TW.so = $(LDFLAGS-rpath-ORIGIN)
---- glibc-2.3.2/iconvdata/bug-iconv4.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/iconvdata/bug-iconv4.c 2003-03-26 03:10:58.000000000 -0500
-@@ -0,0 +1,78 @@
-+/* Contributed by Jiro SEKIBA <jir@yamato.ibm.com>. */
-+#include <errno.h>
-+#include <iconv.h>
-+#include <stdbool.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#define UCS_STR "\x4e\x8c" /* EUC-TW 0xa2a2, EUC-JP 0x */
-+
-+static const char *to_code;
-+
-+static bool
-+xiconv (iconv_t cd, int out_size)
-+{
-+ unsigned char euc[4];
-+ char *inp = (char *) UCS_STR;
-+ char *outp = euc;
-+ size_t inbytesleft = strlen (UCS_STR);
-+ size_t outbytesleft = out_size;
-+ size_t ret;
-+ bool fail = false;
-+
-+ errno = 0;
-+ ret = iconv (cd, &inp, &inbytesleft, &outp, &outbytesleft);
-+ if (errno || ret == (size_t) -1)
-+ {
-+ fail = out_size == 4 || errno != E2BIG;
-+ printf ("expected %d (E2BIG), got %d (%m)\n", E2BIG, errno);
-+ }
-+ else
-+ {
-+ printf ("%s: 0x%02x%02x\n", to_code, euc[0], euc[1]);
-+ if (out_size == 1)
-+ fail = true;
-+ }
-+
-+ return fail;
-+}
-+
-+
-+static iconv_t
-+xiconv_open (const char *code)
-+{
-+ iconv_t cd;
-+ to_code = code;
-+ errno = 0;
-+ if (errno || (cd = iconv_open (to_code, "UCS-2BE")) == (iconv_t) -1)
-+ {
-+ puts ("Can't open converter");
-+ exit (1);
-+ }
-+ return cd;
-+}
-+
-+
-+int
-+main (void)
-+{
-+ iconv_t cd;
-+ int result = 0;
-+
-+ cd = xiconv_open ("EUC-TW");
-+ result |= xiconv (cd, 4) == true;
-+ puts ("---");
-+ result |= xiconv (cd, 1) == true;
-+ puts ("---");
-+ iconv_close (cd);
-+
-+ cd = xiconv_open ("EUC-JP");
-+ result |= xiconv (cd, 4) == true;
-+ puts ("---");
-+ result |= xiconv (cd, 1) == true;
-+ puts ("---");
-+ iconv_close (cd);
-+
-+ return result;
-+}
---- glibc-2.3.2/iconvdata/cns11643.h 2002-04-20 03:31:30.000000000 -0400
-+++ glibc-2.3.2/iconvdata/cns11643.h 2003-08-21 08:37:00.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for CNS 11643 handling.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -40,6 +40,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- cns11643_to_ucs4 (const char **s, size_t avail, unsigned char offset)
- {
- unsigned char ch = *(*s);
-@@ -140,6 +141,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_cns11643 (uint32_t wch, char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/cns11643l1.h 2001-07-07 15:20:59.000000000 -0400
-+++ glibc-2.3.2/iconvdata/cns11643l1.h 2003-08-21 08:37:00.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for CNS 11643, plane 1 handling.
-- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -26,6 +26,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- cns11643l1_to_ucs4 (const unsigned char **s, size_t avail,
- unsigned char offset)
- {
-@@ -71,6 +72,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_cns11643l1 (uint32_t wch, unsigned char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/cns11643l2.h 2001-07-07 15:20:59.000000000 -0400
-+++ glibc-2.3.2/iconvdata/cns11643l2.h 2003-08-21 08:37:00.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for CNS 11643, plane 2 handling.
-- Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -26,6 +26,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- cns11643l2_to_ucs4 (const unsigned char **s, size_t avail,
- unsigned char offset)
- {
-@@ -58,6 +59,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_cns11643l2 (uint32_t wch, unsigned char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/cp932.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/iconvdata/cp932.c 2003-08-14 04:34:48.000000000 -0400
-@@ -0,0 +1,4728 @@
-+/* Mapping tables for CP932 handling.
-+ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
-+
-+ 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 <dlfcn.h>
-+#include <stdint.h>
-+#include <wchar.h>
-+
-+static const uint16_t cjk_block1[703] =
-+{
-+ /* start = 0x8140, end = 0x84be */
-+ [ 0] = 0x3000, [ 1] = 0x3001, [ 2] = 0x3002, [ 3] = 0xff0c,
-+ [ 4] = 0xff0e, [ 5] = 0x30fb, [ 6] = 0xff1a, [ 7] = 0xff1b,
-+ [ 8] = 0xff1f, [ 9] = 0xff01, [ 10] = 0x309b, [ 11] = 0x309c,
-+ [ 12] = 0x00b4, [ 13] = 0xff40, [ 14] = 0x00a8, [ 15] = 0xff3e,
-+ [ 16] = 0xffe3, [ 17] = 0xff3f, [ 18] = 0x30fd, [ 19] = 0x30fe,
-+ [ 20] = 0x309d, [ 21] = 0x309e, [ 22] = 0x3003, [ 23] = 0x4edd,
-+ [ 24] = 0x3005, [ 25] = 0x3006, [ 26] = 0x3007, [ 27] = 0x30fc,
-+ [ 28] = 0x2015, [ 29] = 0x2010, [ 30] = 0xff0f, [ 31] = 0xff3c,
-+ [ 32] = 0xff5e, [ 33] = 0x2225, [ 34] = 0xff5c, [ 35] = 0x2026,
-+ [ 36] = 0x2025, [ 37] = 0x2018, [ 38] = 0x2019, [ 39] = 0x201c,
-+ [ 40] = 0x201d, [ 41] = 0xff08, [ 42] = 0xff09, [ 43] = 0x3014,
-+ [ 44] = 0x3015, [ 45] = 0xff3b, [ 46] = 0xff3d, [ 47] = 0xff5b,
-+ [ 48] = 0xff5d, [ 49] = 0x3008, [ 50] = 0x3009, [ 51] = 0x300a,
-+ [ 52] = 0x300b, [ 53] = 0x300c, [ 54] = 0x300d, [ 55] = 0x300e,
-+ [ 56] = 0x300f, [ 57] = 0x3010, [ 58] = 0x3011, [ 59] = 0xff0b,
-+ [ 60] = 0xff0d, [ 61] = 0x00b1, [ 62] = 0x00d7, [ 64] = 0x00f7,
-+ [ 65] = 0xff1d, [ 66] = 0x2260, [ 67] = 0xff1c, [ 68] = 0xff1e,
-+ [ 69] = 0x2266, [ 70] = 0x2267, [ 71] = 0x221e, [ 72] = 0x2234,
-+ [ 73] = 0x2642, [ 74] = 0x2640, [ 75] = 0x00b0, [ 76] = 0x2032,
-+ [ 77] = 0x2033, [ 78] = 0x2103, [ 79] = 0xffe5, [ 80] = 0xff04,
-+ [ 81] = 0xffe0, [ 82] = 0xffe1, [ 83] = 0xff05, [ 84] = 0xff03,
-+ [ 85] = 0xff06, [ 86] = 0xff0a, [ 87] = 0xff20, [ 88] = 0x00a7,
-+ [ 89] = 0x2606, [ 90] = 0x2605, [ 91] = 0x25cb, [ 92] = 0x25cf,
-+ [ 93] = 0x25ce, [ 94] = 0x25c7, [ 95] = 0x25c6, [ 96] = 0x25a1,
-+ [ 97] = 0x25a0, [ 98] = 0x25b3, [ 99] = 0x25b2, [ 100] = 0x25bd,
-+ [ 101] = 0x25bc, [ 102] = 0x203b, [ 103] = 0x3012, [ 104] = 0x2192,
-+ [ 105] = 0x2190, [ 106] = 0x2191, [ 107] = 0x2193, [ 108] = 0x3013,
-+ [ 120] = 0x2208, [ 121] = 0x220b, [ 122] = 0x2286, [ 123] = 0x2287,
-+ [ 124] = 0x2282, [ 125] = 0x2283, [ 126] = 0x222a, [ 127] = 0x2229,
-+ [ 136] = 0x2227, [ 137] = 0x2228, [ 138] = 0xffe2, [ 139] = 0x21d2,
-+ [ 140] = 0x21d4, [ 141] = 0x2200, [ 142] = 0x2203, [ 154] = 0x2220,
-+ [ 155] = 0x22a5, [ 156] = 0x2312, [ 157] = 0x2202, [ 158] = 0x2207,
-+ [ 159] = 0x2261, [ 160] = 0x2252, [ 161] = 0x226a, [ 162] = 0x226b,
-+ [ 163] = 0x221a, [ 164] = 0x223d, [ 165] = 0x221d, [ 166] = 0x2235,
-+ [ 167] = 0x222b, [ 168] = 0x222c, [ 176] = 0x212b, [ 177] = 0x2030,
-+ [ 178] = 0x266f, [ 179] = 0x266d, [ 180] = 0x266a, [ 181] = 0x2020,
-+ [ 182] = 0x2021, [ 183] = 0x00b6, [ 188] = 0x25ef, [ 207] = 0xff10,
-+ [ 208] = 0xff11, [ 209] = 0xff12, [ 210] = 0xff13, [ 211] = 0xff14,
-+ [ 212] = 0xff15, [ 213] = 0xff16, [ 214] = 0xff17, [ 215] = 0xff18,
-+ [ 216] = 0xff19, [ 224] = 0xff21, [ 225] = 0xff22, [ 226] = 0xff23,
-+ [ 227] = 0xff24, [ 228] = 0xff25, [ 229] = 0xff26, [ 230] = 0xff27,
-+ [ 231] = 0xff28, [ 232] = 0xff29, [ 233] = 0xff2a, [ 234] = 0xff2b,
-+ [ 235] = 0xff2c, [ 236] = 0xff2d, [ 237] = 0xff2e, [ 238] = 0xff2f,
-+ [ 239] = 0xff30, [ 240] = 0xff31, [ 241] = 0xff32, [ 242] = 0xff33,
-+ [ 243] = 0xff34, [ 244] = 0xff35, [ 245] = 0xff36, [ 246] = 0xff37,
-+ [ 247] = 0xff38, [ 248] = 0xff39, [ 249] = 0xff3a, [ 257] = 0xff41,
-+ [ 258] = 0xff42, [ 259] = 0xff43, [ 260] = 0xff44, [ 261] = 0xff45,
-+ [ 262] = 0xff46, [ 263] = 0xff47, [ 264] = 0xff48, [ 265] = 0xff49,
-+ [ 266] = 0xff4a, [ 267] = 0xff4b, [ 268] = 0xff4c, [ 269] = 0xff4d,
-+ [ 270] = 0xff4e, [ 271] = 0xff4f, [ 272] = 0xff50, [ 273] = 0xff51,
-+ [ 274] = 0xff52, [ 275] = 0xff53, [ 276] = 0xff54, [ 277] = 0xff55,
-+ [ 278] = 0xff56, [ 279] = 0xff57, [ 280] = 0xff58, [ 281] = 0xff59,
-+ [ 282] = 0xff5a, [ 287] = 0x3041, [ 288] = 0x3042, [ 289] = 0x3043,
-+ [ 290] = 0x3044, [ 291] = 0x3045, [ 292] = 0x3046, [ 293] = 0x3047,
-+ [ 294] = 0x3048, [ 295] = 0x3049, [ 296] = 0x304a, [ 297] = 0x304b,
-+ [ 298] = 0x304c, [ 299] = 0x304d, [ 300] = 0x304e, [ 301] = 0x304f,
-+ [ 302] = 0x3050, [ 303] = 0x3051, [ 304] = 0x3052, [ 305] = 0x3053,
-+ [ 306] = 0x3054, [ 307] = 0x3055, [ 308] = 0x3056, [ 309] = 0x3057,
-+ [ 310] = 0x3058, [ 311] = 0x3059, [ 312] = 0x305a, [ 313] = 0x305b,
-+ [ 314] = 0x305c, [ 315] = 0x305d, [ 316] = 0x305e, [ 317] = 0x305f,
-+ [ 318] = 0x3060, [ 319] = 0x3061, [ 320] = 0x3062, [ 321] = 0x3063,
-+ [ 322] = 0x3064, [ 323] = 0x3065, [ 324] = 0x3066, [ 325] = 0x3067,
-+ [ 326] = 0x3068, [ 327] = 0x3069, [ 328] = 0x306a, [ 329] = 0x306b,
-+ [ 330] = 0x306c, [ 331] = 0x306d, [ 332] = 0x306e, [ 333] = 0x306f,
-+ [ 334] = 0x3070, [ 335] = 0x3071, [ 336] = 0x3072, [ 337] = 0x3073,
-+ [ 338] = 0x3074, [ 339] = 0x3075, [ 340] = 0x3076, [ 341] = 0x3077,
-+ [ 342] = 0x3078, [ 343] = 0x3079, [ 344] = 0x307a, [ 345] = 0x307b,
-+ [ 346] = 0x307c, [ 347] = 0x307d, [ 348] = 0x307e, [ 349] = 0x307f,
-+ [ 350] = 0x3080, [ 351] = 0x3081, [ 352] = 0x3082, [ 353] = 0x3083,
-+ [ 354] = 0x3084, [ 355] = 0x3085, [ 356] = 0x3086, [ 357] = 0x3087,
-+ [ 358] = 0x3088, [ 359] = 0x3089, [ 360] = 0x308a, [ 361] = 0x308b,
-+ [ 362] = 0x308c, [ 363] = 0x308d, [ 364] = 0x308e, [ 365] = 0x308f,
-+ [ 366] = 0x3090, [ 367] = 0x3091, [ 368] = 0x3092, [ 369] = 0x3093,
-+ [ 384] = 0x30a1, [ 385] = 0x30a2, [ 386] = 0x30a3, [ 387] = 0x30a4,
-+ [ 388] = 0x30a5, [ 389] = 0x30a6, [ 390] = 0x30a7, [ 391] = 0x30a8,
-+ [ 392] = 0x30a9, [ 393] = 0x30aa, [ 394] = 0x30ab, [ 395] = 0x30ac,
-+ [ 396] = 0x30ad, [ 397] = 0x30ae, [ 398] = 0x30af, [ 399] = 0x30b0,
-+ [ 400] = 0x30b1, [ 401] = 0x30b2, [ 402] = 0x30b3, [ 403] = 0x30b4,
-+ [ 404] = 0x30b5, [ 405] = 0x30b6, [ 406] = 0x30b7, [ 407] = 0x30b8,
-+ [ 408] = 0x30b9, [ 409] = 0x30ba, [ 410] = 0x30bb, [ 411] = 0x30bc,
-+ [ 412] = 0x30bd, [ 413] = 0x30be, [ 414] = 0x30bf, [ 415] = 0x30c0,
-+ [ 416] = 0x30c1, [ 417] = 0x30c2, [ 418] = 0x30c3, [ 419] = 0x30c4,
-+ [ 420] = 0x30c5, [ 421] = 0x30c6, [ 422] = 0x30c7, [ 423] = 0x30c8,
-+ [ 424] = 0x30c9, [ 425] = 0x30ca, [ 426] = 0x30cb, [ 427] = 0x30cc,
-+ [ 428] = 0x30cd, [ 429] = 0x30ce, [ 430] = 0x30cf, [ 431] = 0x30d0,
-+ [ 432] = 0x30d1, [ 433] = 0x30d2, [ 434] = 0x30d3, [ 435] = 0x30d4,
-+ [ 436] = 0x30d5, [ 437] = 0x30d6, [ 438] = 0x30d7, [ 439] = 0x30d8,
-+ [ 440] = 0x30d9, [ 441] = 0x30da, [ 442] = 0x30db, [ 443] = 0x30dc,
-+ [ 444] = 0x30dd, [ 445] = 0x30de, [ 446] = 0x30df, [ 448] = 0x30e0,
-+ [ 449] = 0x30e1, [ 450] = 0x30e2, [ 451] = 0x30e3, [ 452] = 0x30e4,
-+ [ 453] = 0x30e5, [ 454] = 0x30e6, [ 455] = 0x30e7, [ 456] = 0x30e8,
-+ [ 457] = 0x30e9, [ 458] = 0x30ea, [ 459] = 0x30eb, [ 460] = 0x30ec,
-+ [ 461] = 0x30ed, [ 462] = 0x30ee, [ 463] = 0x30ef, [ 464] = 0x30f0,
-+ [ 465] = 0x30f1, [ 466] = 0x30f2, [ 467] = 0x30f3, [ 468] = 0x30f4,
-+ [ 469] = 0x30f5, [ 470] = 0x30f6, [ 479] = 0x0391, [ 480] = 0x0392,
-+ [ 481] = 0x0393, [ 482] = 0x0394, [ 483] = 0x0395, [ 484] = 0x0396,
-+ [ 485] = 0x0397, [ 486] = 0x0398, [ 487] = 0x0399, [ 488] = 0x039a,
-+ [ 489] = 0x039b, [ 490] = 0x039c, [ 491] = 0x039d, [ 492] = 0x039e,
-+ [ 493] = 0x039f, [ 494] = 0x03a0, [ 495] = 0x03a1, [ 496] = 0x03a3,
-+ [ 497] = 0x03a4, [ 498] = 0x03a5, [ 499] = 0x03a6, [ 500] = 0x03a7,
-+ [ 501] = 0x03a8, [ 502] = 0x03a9, [ 511] = 0x03b1, [ 512] = 0x03b2,
-+ [ 513] = 0x03b3, [ 514] = 0x03b4, [ 515] = 0x03b5, [ 516] = 0x03b6,
-+ [ 517] = 0x03b7, [ 518] = 0x03b8, [ 519] = 0x03b9, [ 520] = 0x03ba,
-+ [ 521] = 0x03bb, [ 522] = 0x03bc, [ 523] = 0x03bd, [ 524] = 0x03be,
-+ [ 525] = 0x03bf, [ 526] = 0x03c0, [ 527] = 0x03c1, [ 528] = 0x03c3,
-+ [ 529] = 0x03c4, [ 530] = 0x03c5, [ 531] = 0x03c6, [ 532] = 0x03c7,
-+ [ 533] = 0x03c8, [ 534] = 0x03c9, [ 576] = 0x0410, [ 577] = 0x0411,
-+ [ 578] = 0x0412, [ 579] = 0x0413, [ 580] = 0x0414, [ 581] = 0x0415,
-+ [ 582] = 0x0401, [ 583] = 0x0416, [ 584] = 0x0417, [ 585] = 0x0418,
-+ [ 586] = 0x0419, [ 587] = 0x041a, [ 588] = 0x041b, [ 589] = 0x041c,
-+ [ 590] = 0x041d, [ 591] = 0x041e, [ 592] = 0x041f, [ 593] = 0x0420,
-+ [ 594] = 0x0421, [ 595] = 0x0422, [ 596] = 0x0423, [ 597] = 0x0424,
-+ [ 598] = 0x0425, [ 599] = 0x0426, [ 600] = 0x0427, [ 601] = 0x0428,
-+ [ 602] = 0x0429, [ 603] = 0x042a, [ 604] = 0x042b, [ 605] = 0x042c,
-+ [ 606] = 0x042d, [ 607] = 0x042e, [ 608] = 0x042f, [ 624] = 0x0430,
-+ [ 625] = 0x0431, [ 626] = 0x0432, [ 627] = 0x0433, [ 628] = 0x0434,
-+ [ 629] = 0x0435, [ 630] = 0x0451, [ 631] = 0x0436, [ 632] = 0x0437,
-+ [ 633] = 0x0438, [ 634] = 0x0439, [ 635] = 0x043a, [ 636] = 0x043b,
-+ [ 637] = 0x043c, [ 638] = 0x043d, [ 640] = 0x043e, [ 641] = 0x043f,
-+ [ 642] = 0x0440, [ 643] = 0x0441, [ 644] = 0x0442, [ 645] = 0x0443,
-+ [ 646] = 0x0444, [ 647] = 0x0445, [ 648] = 0x0446, [ 649] = 0x0447,
-+ [ 650] = 0x0448, [ 651] = 0x0449, [ 652] = 0x044a, [ 653] = 0x044b,
-+ [ 654] = 0x044c, [ 655] = 0x044d, [ 656] = 0x044e, [ 657] = 0x044f,
-+ [ 671] = 0x2500, [ 672] = 0x2502, [ 673] = 0x250c, [ 674] = 0x2510,
-+ [ 675] = 0x2518, [ 676] = 0x2514, [ 677] = 0x251c, [ 678] = 0x252c,
-+ [ 679] = 0x2524, [ 680] = 0x2534, [ 681] = 0x253c, [ 682] = 0x2501,
-+ [ 683] = 0x2503, [ 684] = 0x250f, [ 685] = 0x2513, [ 686] = 0x251b,
-+ [ 687] = 0x2517, [ 688] = 0x2523, [ 689] = 0x2533, [ 690] = 0x252b,
-+ [ 691] = 0x253b, [ 692] = 0x254b, [ 693] = 0x2520, [ 694] = 0x252f,
-+ [ 695] = 0x2528, [ 696] = 0x2537, [ 697] = 0x253f, [ 698] = 0x251d,
-+ [ 699] = 0x2530, [ 700] = 0x2525, [ 701] = 0x2538, [ 702] = 0x2542
-+};
-+
-+static const uint16_t cjk_block2[93] =
-+{
-+ /* start = 0x8740, end = 0x879c */
-+ [ 0] = 0x2460, [ 1] = 0x2461, [ 2] = 0x2462, [ 3] = 0x2463,
-+ [ 4] = 0x2464, [ 5] = 0x2465, [ 6] = 0x2466, [ 7] = 0x2467,
-+ [ 8] = 0x2468, [ 9] = 0x2469, [ 10] = 0x246a, [ 11] = 0x246b,
-+ [ 12] = 0x246c, [ 13] = 0x246d, [ 14] = 0x246e, [ 15] = 0x246f,
-+ [ 16] = 0x2470, [ 17] = 0x2471, [ 18] = 0x2472, [ 19] = 0x2473,
-+ [ 20] = 0x2160, [ 21] = 0x2161, [ 22] = 0x2162, [ 23] = 0x2163,
-+ [ 24] = 0x2164, [ 25] = 0x2165, [ 26] = 0x2166, [ 27] = 0x2167,
-+ [ 28] = 0x2168, [ 29] = 0x2169, [ 31] = 0x3349, [ 32] = 0x3314,
-+ [ 33] = 0x3322, [ 34] = 0x334d, [ 35] = 0x3318, [ 36] = 0x3327,
-+ [ 37] = 0x3303, [ 38] = 0x3336, [ 39] = 0x3351, [ 40] = 0x3357,
-+ [ 41] = 0x330d, [ 42] = 0x3326, [ 43] = 0x3323, [ 44] = 0x332b,
-+ [ 45] = 0x334a, [ 46] = 0x333b, [ 47] = 0x339c, [ 48] = 0x339d,
-+ [ 49] = 0x339e, [ 50] = 0x338e, [ 51] = 0x338f, [ 52] = 0x33c4,
-+ [ 53] = 0x33a1, [ 62] = 0x337b, [ 64] = 0x301d, [ 65] = 0x301f,
-+ [ 66] = 0x2116, [ 67] = 0x33cd, [ 68] = 0x2121, [ 69] = 0x32a4,
-+ [ 70] = 0x32a5, [ 71] = 0x32a6, [ 72] = 0x32a7, [ 73] = 0x32a8,
-+ [ 74] = 0x3231, [ 75] = 0x3232, [ 76] = 0x3239, [ 77] = 0x337e,
-+ [ 78] = 0x337d, [ 79] = 0x337c, [ 80] = 0x2252, [ 81] = 0x2261,
-+ [ 82] = 0x222b, [ 83] = 0x222e, [ 84] = 0x2211, [ 85] = 0x221a,
-+ [ 86] = 0x22a5, [ 87] = 0x2220, [ 88] = 0x221f, [ 89] = 0x22bf,
-+ [ 90] = 0x2235, [ 91] = 0x2229, [ 92] = 0x222a
-+};
-+
-+static const uint16_t cjk_block3[94] =
-+{
-+ /* start = 0x889f, end = 0x88fc */
-+ [ 0] = 0x4e9c, [ 1] = 0x5516, [ 2] = 0x5a03, [ 3] = 0x963f,
-+ [ 4] = 0x54c0, [ 5] = 0x611b, [ 6] = 0x6328, [ 7] = 0x59f6,
-+ [ 8] = 0x9022, [ 9] = 0x8475, [ 10] = 0x831c, [ 11] = 0x7a50,
-+ [ 12] = 0x60aa, [ 13] = 0x63e1, [ 14] = 0x6e25, [ 15] = 0x65ed,
-+ [ 16] = 0x8466, [ 17] = 0x82a6, [ 18] = 0x9bf5, [ 19] = 0x6893,
-+ [ 20] = 0x5727, [ 21] = 0x65a1, [ 22] = 0x6271, [ 23] = 0x5b9b,
-+ [ 24] = 0x59d0, [ 25] = 0x867b, [ 26] = 0x98f4, [ 27] = 0x7d62,
-+ [ 28] = 0x7dbe, [ 29] = 0x9b8e, [ 30] = 0x6216, [ 31] = 0x7c9f,
-+ [ 32] = 0x88b7, [ 33] = 0x5b89, [ 34] = 0x5eb5, [ 35] = 0x6309,
-+ [ 36] = 0x6697, [ 37] = 0x6848, [ 38] = 0x95c7, [ 39] = 0x978d,
-+ [ 40] = 0x674f, [ 41] = 0x4ee5, [ 42] = 0x4f0a, [ 43] = 0x4f4d,
-+ [ 44] = 0x4f9d, [ 45] = 0x5049, [ 46] = 0x56f2, [ 47] = 0x5937,
-+ [ 48] = 0x59d4, [ 49] = 0x5a01, [ 50] = 0x5c09, [ 51] = 0x60df,
-+ [ 52] = 0x610f, [ 53] = 0x6170, [ 54] = 0x6613, [ 55] = 0x6905,
-+ [ 56] = 0x70ba, [ 57] = 0x754f, [ 58] = 0x7570, [ 59] = 0x79fb,
-+ [ 60] = 0x7dad, [ 61] = 0x7def, [ 62] = 0x80c3, [ 63] = 0x840e,
-+ [ 64] = 0x8863, [ 65] = 0x8b02, [ 66] = 0x9055, [ 67] = 0x907a,
-+ [ 68] = 0x533b, [ 69] = 0x4e95, [ 70] = 0x4ea5, [ 71] = 0x57df,
-+ [ 72] = 0x80b2, [ 73] = 0x90c1, [ 74] = 0x78ef, [ 75] = 0x4e00,
-+ [ 76] = 0x58f1, [ 77] = 0x6ea2, [ 78] = 0x9038, [ 79] = 0x7a32,
-+ [ 80] = 0x8328, [ 81] = 0x828b, [ 82] = 0x9c2f, [ 83] = 0x5141,
-+ [ 84] = 0x5370, [ 85] = 0x54bd, [ 86] = 0x54e1, [ 87] = 0x56e0,
-+ [ 88] = 0x59fb, [ 89] = 0x5f15, [ 90] = 0x98f2, [ 91] = 0x6deb,
-+ [ 92] = 0x80e4, [ 93] = 0x852d
-+};
-+
-+static const uint16_t cjk_block4[4413] =
-+{
-+ /* start = 0x8940, end = 0x9ffc */
-+ [ 0] = 0x9662, [ 1] = 0x9670, [ 2] = 0x96a0, [ 3] = 0x97fb,
-+ [ 4] = 0x540b, [ 5] = 0x53f3, [ 6] = 0x5b87, [ 7] = 0x70cf,
-+ [ 8] = 0x7fbd, [ 9] = 0x8fc2, [ 10] = 0x96e8, [ 11] = 0x536f,
-+ [ 12] = 0x9d5c, [ 13] = 0x7aba, [ 14] = 0x4e11, [ 15] = 0x7893,
-+ [ 16] = 0x81fc, [ 17] = 0x6e26, [ 18] = 0x5618, [ 19] = 0x5504,
-+ [ 20] = 0x6b1d, [ 21] = 0x851a, [ 22] = 0x9c3b, [ 23] = 0x59e5,
-+ [ 24] = 0x53a9, [ 25] = 0x6d66, [ 26] = 0x74dc, [ 27] = 0x958f,
-+ [ 28] = 0x5642, [ 29] = 0x4e91, [ 30] = 0x904b, [ 31] = 0x96f2,
-+ [ 32] = 0x834f, [ 33] = 0x990c, [ 34] = 0x53e1, [ 35] = 0x55b6,
-+ [ 36] = 0x5b30, [ 37] = 0x5f71, [ 38] = 0x6620, [ 39] = 0x66f3,
-+ [ 40] = 0x6804, [ 41] = 0x6c38, [ 42] = 0x6cf3, [ 43] = 0x6d29,
-+ [ 44] = 0x745b, [ 45] = 0x76c8, [ 46] = 0x7a4e, [ 47] = 0x9834,
-+ [ 48] = 0x82f1, [ 49] = 0x885b, [ 50] = 0x8a60, [ 51] = 0x92ed,
-+ [ 52] = 0x6db2, [ 53] = 0x75ab, [ 54] = 0x76ca, [ 55] = 0x99c5,
-+ [ 56] = 0x60a6, [ 57] = 0x8b01, [ 58] = 0x8d8a, [ 59] = 0x95b2,
-+ [ 60] = 0x698e, [ 61] = 0x53ad, [ 62] = 0x5186, [ 64] = 0x5712,
-+ [ 65] = 0x5830, [ 66] = 0x5944, [ 67] = 0x5bb4, [ 68] = 0x5ef6,
-+ [ 69] = 0x6028, [ 70] = 0x63a9, [ 71] = 0x63f4, [ 72] = 0x6cbf,
-+ [ 73] = 0x6f14, [ 74] = 0x708e, [ 75] = 0x7114, [ 76] = 0x7159,
-+ [ 77] = 0x71d5, [ 78] = 0x733f, [ 79] = 0x7e01, [ 80] = 0x8276,
-+ [ 81] = 0x82d1, [ 82] = 0x8597, [ 83] = 0x9060, [ 84] = 0x925b,
-+ [ 85] = 0x9d1b, [ 86] = 0x5869, [ 87] = 0x65bc, [ 88] = 0x6c5a,
-+ [ 89] = 0x7525, [ 90] = 0x51f9, [ 91] = 0x592e, [ 92] = 0x5965,
-+ [ 93] = 0x5f80, [ 94] = 0x5fdc, [ 95] = 0x62bc, [ 96] = 0x65fa,
-+ [ 97] = 0x6a2a, [ 98] = 0x6b27, [ 99] = 0x6bb4, [ 100] = 0x738b,
-+ [ 101] = 0x7fc1, [ 102] = 0x8956, [ 103] = 0x9d2c, [ 104] = 0x9d0e,
-+ [ 105] = 0x9ec4, [ 106] = 0x5ca1, [ 107] = 0x6c96, [ 108] = 0x837b,
-+ [ 109] = 0x5104, [ 110] = 0x5c4b, [ 111] = 0x61b6, [ 112] = 0x81c6,
-+ [ 113] = 0x6876, [ 114] = 0x7261, [ 115] = 0x4e59, [ 116] = 0x4ffa,
-+ [ 117] = 0x5378, [ 118] = 0x6069, [ 119] = 0x6e29, [ 120] = 0x7a4f,
-+ [ 121] = 0x97f3, [ 122] = 0x4e0b, [ 123] = 0x5316, [ 124] = 0x4eee,
-+ [ 125] = 0x4f55, [ 126] = 0x4f3d, [ 127] = 0x4fa1, [ 128] = 0x4f73,
-+ [ 129] = 0x52a0, [ 130] = 0x53ef, [ 131] = 0x5609, [ 132] = 0x590f,
-+ [ 133] = 0x5ac1, [ 134] = 0x5bb6, [ 135] = 0x5be1, [ 136] = 0x79d1,
-+ [ 137] = 0x6687, [ 138] = 0x679c, [ 139] = 0x67b6, [ 140] = 0x6b4c,
-+ [ 141] = 0x6cb3, [ 142] = 0x706b, [ 143] = 0x73c2, [ 144] = 0x798d,
-+ [ 145] = 0x79be, [ 146] = 0x7a3c, [ 147] = 0x7b87, [ 148] = 0x82b1,
-+ [ 149] = 0x82db, [ 150] = 0x8304, [ 151] = 0x8377, [ 152] = 0x83ef,
-+ [ 153] = 0x83d3, [ 154] = 0x8766, [ 155] = 0x8ab2, [ 156] = 0x5629,
-+ [ 157] = 0x8ca8, [ 158] = 0x8fe6, [ 159] = 0x904e, [ 160] = 0x971e,
-+ [ 161] = 0x868a, [ 162] = 0x4fc4, [ 163] = 0x5ce8, [ 164] = 0x6211,
-+ [ 165] = 0x7259, [ 166] = 0x753b, [ 167] = 0x81e5, [ 168] = 0x82bd,
-+ [ 169] = 0x86fe, [ 170] = 0x8cc0, [ 171] = 0x96c5, [ 172] = 0x9913,
-+ [ 173] = 0x99d5, [ 174] = 0x4ecb, [ 175] = 0x4f1a, [ 176] = 0x89e3,
-+ [ 177] = 0x56de, [ 178] = 0x584a, [ 179] = 0x58ca, [ 180] = 0x5efb,
-+ [ 181] = 0x5feb, [ 182] = 0x602a, [ 183] = 0x6094, [ 184] = 0x6062,
-+ [ 185] = 0x61d0, [ 186] = 0x6212, [ 187] = 0x62d0, [ 188] = 0x6539,
-+ [ 192] = 0x9b41, [ 193] = 0x6666, [ 194] = 0x68b0, [ 195] = 0x6d77,
-+ [ 196] = 0x7070, [ 197] = 0x754c, [ 198] = 0x7686, [ 199] = 0x7d75,
-+ [ 200] = 0x82a5, [ 201] = 0x87f9, [ 202] = 0x958b, [ 203] = 0x968e,
-+ [ 204] = 0x8c9d, [ 205] = 0x51f1, [ 206] = 0x52be, [ 207] = 0x5916,
-+ [ 208] = 0x54b3, [ 209] = 0x5bb3, [ 210] = 0x5d16, [ 211] = 0x6168,
-+ [ 212] = 0x6982, [ 213] = 0x6daf, [ 214] = 0x788d, [ 215] = 0x84cb,
-+ [ 216] = 0x8857, [ 217] = 0x8a72, [ 218] = 0x93a7, [ 219] = 0x9ab8,
-+ [ 220] = 0x6d6c, [ 221] = 0x99a8, [ 222] = 0x86d9, [ 223] = 0x57a3,
-+ [ 224] = 0x67ff, [ 225] = 0x86ce, [ 226] = 0x920e, [ 227] = 0x5283,
-+ [ 228] = 0x5687, [ 229] = 0x5404, [ 230] = 0x5ed3, [ 231] = 0x62e1,
-+ [ 232] = 0x64b9, [ 233] = 0x683c, [ 234] = 0x6838, [ 235] = 0x6bbb,
-+ [ 236] = 0x7372, [ 237] = 0x78ba, [ 238] = 0x7a6b, [ 239] = 0x899a,
-+ [ 240] = 0x89d2, [ 241] = 0x8d6b, [ 242] = 0x8f03, [ 243] = 0x90ed,
-+ [ 244] = 0x95a3, [ 245] = 0x9694, [ 246] = 0x9769, [ 247] = 0x5b66,
-+ [ 248] = 0x5cb3, [ 249] = 0x697d, [ 250] = 0x984d, [ 251] = 0x984e,
-+ [ 252] = 0x639b, [ 253] = 0x7b20, [ 254] = 0x6a2b, [ 256] = 0x6a7f,
-+ [ 257] = 0x68b6, [ 258] = 0x9c0d, [ 259] = 0x6f5f, [ 260] = 0x5272,
-+ [ 261] = 0x559d, [ 262] = 0x6070, [ 263] = 0x62ec, [ 264] = 0x6d3b,
-+ [ 265] = 0x6e07, [ 266] = 0x6ed1, [ 267] = 0x845b, [ 268] = 0x8910,
-+ [ 269] = 0x8f44, [ 270] = 0x4e14, [ 271] = 0x9c39, [ 272] = 0x53f6,
-+ [ 273] = 0x691b, [ 274] = 0x6a3a, [ 275] = 0x9784, [ 276] = 0x682a,
-+ [ 277] = 0x515c, [ 278] = 0x7ac3, [ 279] = 0x84b2, [ 280] = 0x91dc,
-+ [ 281] = 0x938c, [ 282] = 0x565b, [ 283] = 0x9d28, [ 284] = 0x6822,
-+ [ 285] = 0x8305, [ 286] = 0x8431, [ 287] = 0x7ca5, [ 288] = 0x5208,
-+ [ 289] = 0x82c5, [ 290] = 0x74e6, [ 291] = 0x4e7e, [ 292] = 0x4f83,
-+ [ 293] = 0x51a0, [ 294] = 0x5bd2, [ 295] = 0x520a, [ 296] = 0x52d8,
-+ [ 297] = 0x52e7, [ 298] = 0x5dfb, [ 299] = 0x559a, [ 300] = 0x582a,
-+ [ 301] = 0x59e6, [ 302] = 0x5b8c, [ 303] = 0x5b98, [ 304] = 0x5bdb,
-+ [ 305] = 0x5e72, [ 306] = 0x5e79, [ 307] = 0x60a3, [ 308] = 0x611f,
-+ [ 309] = 0x6163, [ 310] = 0x61be, [ 311] = 0x63db, [ 312] = 0x6562,
-+ [ 313] = 0x67d1, [ 314] = 0x6853, [ 315] = 0x68fa, [ 316] = 0x6b3e,
-+ [ 317] = 0x6b53, [ 318] = 0x6c57, [ 319] = 0x6f22, [ 320] = 0x6f97,
-+ [ 321] = 0x6f45, [ 322] = 0x74b0, [ 323] = 0x7518, [ 324] = 0x76e3,
-+ [ 325] = 0x770b, [ 326] = 0x7aff, [ 327] = 0x7ba1, [ 328] = 0x7c21,
-+ [ 329] = 0x7de9, [ 330] = 0x7f36, [ 331] = 0x7ff0, [ 332] = 0x809d,
-+ [ 333] = 0x8266, [ 334] = 0x839e, [ 335] = 0x89b3, [ 336] = 0x8acc,
-+ [ 337] = 0x8cab, [ 338] = 0x9084, [ 339] = 0x9451, [ 340] = 0x9593,
-+ [ 341] = 0x9591, [ 342] = 0x95a2, [ 343] = 0x9665, [ 344] = 0x97d3,
-+ [ 345] = 0x9928, [ 346] = 0x8218, [ 347] = 0x4e38, [ 348] = 0x542b,
-+ [ 349] = 0x5cb8, [ 350] = 0x5dcc, [ 351] = 0x73a9, [ 352] = 0x764c,
-+ [ 353] = 0x773c, [ 354] = 0x5ca9, [ 355] = 0x7feb, [ 356] = 0x8d0b,
-+ [ 357] = 0x96c1, [ 358] = 0x9811, [ 359] = 0x9854, [ 360] = 0x9858,
-+ [ 361] = 0x4f01, [ 362] = 0x4f0e, [ 363] = 0x5371, [ 364] = 0x559c,
-+ [ 365] = 0x5668, [ 366] = 0x57fa, [ 367] = 0x5947, [ 368] = 0x5b09,
-+ [ 369] = 0x5bc4, [ 370] = 0x5c90, [ 371] = 0x5e0c, [ 372] = 0x5e7e,
-+ [ 373] = 0x5fcc, [ 374] = 0x63ee, [ 375] = 0x673a, [ 376] = 0x65d7,
-+ [ 377] = 0x65e2, [ 378] = 0x671f, [ 379] = 0x68cb, [ 380] = 0x68c4,
-+ [ 384] = 0x6a5f, [ 385] = 0x5e30, [ 386] = 0x6bc5, [ 387] = 0x6c17,
-+ [ 388] = 0x6c7d, [ 389] = 0x757f, [ 390] = 0x7948, [ 391] = 0x5b63,
-+ [ 392] = 0x7a00, [ 393] = 0x7d00, [ 394] = 0x5fbd, [ 395] = 0x898f,
-+ [ 396] = 0x8a18, [ 397] = 0x8cb4, [ 398] = 0x8d77, [ 399] = 0x8ecc,
-+ [ 400] = 0x8f1d, [ 401] = 0x98e2, [ 402] = 0x9a0e, [ 403] = 0x9b3c,
-+ [ 404] = 0x4e80, [ 405] = 0x507d, [ 406] = 0x5100, [ 407] = 0x5993,
-+ [ 408] = 0x5b9c, [ 409] = 0x622f, [ 410] = 0x6280, [ 411] = 0x64ec,
-+ [ 412] = 0x6b3a, [ 413] = 0x72a0, [ 414] = 0x7591, [ 415] = 0x7947,
-+ [ 416] = 0x7fa9, [ 417] = 0x87fb, [ 418] = 0x8abc, [ 419] = 0x8b70,
-+ [ 420] = 0x63ac, [ 421] = 0x83ca, [ 422] = 0x97a0, [ 423] = 0x5409,
-+ [ 424] = 0x5403, [ 425] = 0x55ab, [ 426] = 0x6854, [ 427] = 0x6a58,
-+ [ 428] = 0x8a70, [ 429] = 0x7827, [ 430] = 0x6775, [ 431] = 0x9ecd,
-+ [ 432] = 0x5374, [ 433] = 0x5ba2, [ 434] = 0x811a, [ 435] = 0x8650,
-+ [ 436] = 0x9006, [ 437] = 0x4e18, [ 438] = 0x4e45, [ 439] = 0x4ec7,
-+ [ 440] = 0x4f11, [ 441] = 0x53ca, [ 442] = 0x5438, [ 443] = 0x5bae,
-+ [ 444] = 0x5f13, [ 445] = 0x6025, [ 446] = 0x6551, [ 448] = 0x673d,
-+ [ 449] = 0x6c42, [ 450] = 0x6c72, [ 451] = 0x6ce3, [ 452] = 0x7078,
-+ [ 453] = 0x7403, [ 454] = 0x7a76, [ 455] = 0x7aae, [ 456] = 0x7b08,
-+ [ 457] = 0x7d1a, [ 458] = 0x7cfe, [ 459] = 0x7d66, [ 460] = 0x65e7,
-+ [ 461] = 0x725b, [ 462] = 0x53bb, [ 463] = 0x5c45, [ 464] = 0x5de8,
-+ [ 465] = 0x62d2, [ 466] = 0x62e0, [ 467] = 0x6319, [ 468] = 0x6e20,
-+ [ 469] = 0x865a, [ 470] = 0x8a31, [ 471] = 0x8ddd, [ 472] = 0x92f8,
-+ [ 473] = 0x6f01, [ 474] = 0x79a6, [ 475] = 0x9b5a, [ 476] = 0x4ea8,
-+ [ 477] = 0x4eab, [ 478] = 0x4eac, [ 479] = 0x4f9b, [ 480] = 0x4fa0,
-+ [ 481] = 0x50d1, [ 482] = 0x5147, [ 483] = 0x7af6, [ 484] = 0x5171,
-+ [ 485] = 0x51f6, [ 486] = 0x5354, [ 487] = 0x5321, [ 488] = 0x537f,
-+ [ 489] = 0x53eb, [ 490] = 0x55ac, [ 491] = 0x5883, [ 492] = 0x5ce1,
-+ [ 493] = 0x5f37, [ 494] = 0x5f4a, [ 495] = 0x602f, [ 496] = 0x6050,
-+ [ 497] = 0x606d, [ 498] = 0x631f, [ 499] = 0x6559, [ 500] = 0x6a4b,
-+ [ 501] = 0x6cc1, [ 502] = 0x72c2, [ 503] = 0x72ed, [ 504] = 0x77ef,
-+ [ 505] = 0x80f8, [ 506] = 0x8105, [ 507] = 0x8208, [ 508] = 0x854e,
-+ [ 509] = 0x90f7, [ 510] = 0x93e1, [ 511] = 0x97ff, [ 512] = 0x9957,
-+ [ 513] = 0x9a5a, [ 514] = 0x4ef0, [ 515] = 0x51dd, [ 516] = 0x5c2d,
-+ [ 517] = 0x6681, [ 518] = 0x696d, [ 519] = 0x5c40, [ 520] = 0x66f2,
-+ [ 521] = 0x6975, [ 522] = 0x7389, [ 523] = 0x6850, [ 524] = 0x7c81,
-+ [ 525] = 0x50c5, [ 526] = 0x52e4, [ 527] = 0x5747, [ 528] = 0x5dfe,
-+ [ 529] = 0x9326, [ 530] = 0x65a4, [ 531] = 0x6b23, [ 532] = 0x6b3d,
-+ [ 533] = 0x7434, [ 534] = 0x7981, [ 535] = 0x79bd, [ 536] = 0x7b4b,
-+ [ 537] = 0x7dca, [ 538] = 0x82b9, [ 539] = 0x83cc, [ 540] = 0x887f,
-+ [ 541] = 0x895f, [ 542] = 0x8b39, [ 543] = 0x8fd1, [ 544] = 0x91d1,
-+ [ 545] = 0x541f, [ 546] = 0x9280, [ 547] = 0x4e5d, [ 548] = 0x5036,
-+ [ 549] = 0x53e5, [ 550] = 0x533a, [ 551] = 0x72d7, [ 552] = 0x7396,
-+ [ 553] = 0x77e9, [ 554] = 0x82e6, [ 555] = 0x8eaf, [ 556] = 0x99c6,
-+ [ 557] = 0x99c8, [ 558] = 0x99d2, [ 559] = 0x5177, [ 560] = 0x611a,
-+ [ 561] = 0x865e, [ 562] = 0x55b0, [ 563] = 0x7a7a, [ 564] = 0x5076,
-+ [ 565] = 0x5bd3, [ 566] = 0x9047, [ 567] = 0x9685, [ 568] = 0x4e32,
-+ [ 569] = 0x6adb, [ 570] = 0x91e7, [ 571] = 0x5c51, [ 572] = 0x5c48,
-+ [ 576] = 0x6398, [ 577] = 0x7a9f, [ 578] = 0x6c93, [ 579] = 0x9774,
-+ [ 580] = 0x8f61, [ 581] = 0x7aaa, [ 582] = 0x718a, [ 583] = 0x9688,
-+ [ 584] = 0x7c82, [ 585] = 0x6817, [ 586] = 0x7e70, [ 587] = 0x6851,
-+ [ 588] = 0x936c, [ 589] = 0x52f2, [ 590] = 0x541b, [ 591] = 0x85ab,
-+ [ 592] = 0x8a13, [ 593] = 0x7fa4, [ 594] = 0x8ecd, [ 595] = 0x90e1,
-+ [ 596] = 0x5366, [ 597] = 0x8888, [ 598] = 0x7941, [ 599] = 0x4fc2,
-+ [ 600] = 0x50be, [ 601] = 0x5211, [ 602] = 0x5144, [ 603] = 0x5553,
-+ [ 604] = 0x572d, [ 605] = 0x73ea, [ 606] = 0x578b, [ 607] = 0x5951,
-+ [ 608] = 0x5f62, [ 609] = 0x5f84, [ 610] = 0x6075, [ 611] = 0x6176,
-+ [ 612] = 0x6167, [ 613] = 0x61a9, [ 614] = 0x63b2, [ 615] = 0x643a,
-+ [ 616] = 0x656c, [ 617] = 0x666f, [ 618] = 0x6842, [ 619] = 0x6e13,
-+ [ 620] = 0x7566, [ 621] = 0x7a3d, [ 622] = 0x7cfb, [ 623] = 0x7d4c,
-+ [ 624] = 0x7d99, [ 625] = 0x7e4b, [ 626] = 0x7f6b, [ 627] = 0x830e,
-+ [ 628] = 0x834a, [ 629] = 0x86cd, [ 630] = 0x8a08, [ 631] = 0x8a63,
-+ [ 632] = 0x8b66, [ 633] = 0x8efd, [ 634] = 0x981a, [ 635] = 0x9d8f,
-+ [ 636] = 0x82b8, [ 637] = 0x8fce, [ 638] = 0x9be8, [ 640] = 0x5287,
-+ [ 641] = 0x621f, [ 642] = 0x6483, [ 643] = 0x6fc0, [ 644] = 0x9699,
-+ [ 645] = 0x6841, [ 646] = 0x5091, [ 647] = 0x6b20, [ 648] = 0x6c7a,
-+ [ 649] = 0x6f54, [ 650] = 0x7a74, [ 651] = 0x7d50, [ 652] = 0x8840,
-+ [ 653] = 0x8a23, [ 654] = 0x6708, [ 655] = 0x4ef6, [ 656] = 0x5039,
-+ [ 657] = 0x5026, [ 658] = 0x5065, [ 659] = 0x517c, [ 660] = 0x5238,
-+ [ 661] = 0x5263, [ 662] = 0x55a7, [ 663] = 0x570f, [ 664] = 0x5805,
-+ [ 665] = 0x5acc, [ 666] = 0x5efa, [ 667] = 0x61b2, [ 668] = 0x61f8,
-+ [ 669] = 0x62f3, [ 670] = 0x6372, [ 671] = 0x691c, [ 672] = 0x6a29,
-+ [ 673] = 0x727d, [ 674] = 0x72ac, [ 675] = 0x732e, [ 676] = 0x7814,
-+ [ 677] = 0x786f, [ 678] = 0x7d79, [ 679] = 0x770c, [ 680] = 0x80a9,
-+ [ 681] = 0x898b, [ 682] = 0x8b19, [ 683] = 0x8ce2, [ 684] = 0x8ed2,
-+ [ 685] = 0x9063, [ 686] = 0x9375, [ 687] = 0x967a, [ 688] = 0x9855,
-+ [ 689] = 0x9a13, [ 690] = 0x9e78, [ 691] = 0x5143, [ 692] = 0x539f,
-+ [ 693] = 0x53b3, [ 694] = 0x5e7b, [ 695] = 0x5f26, [ 696] = 0x6e1b,
-+ [ 697] = 0x6e90, [ 698] = 0x7384, [ 699] = 0x73fe, [ 700] = 0x7d43,
-+ [ 701] = 0x8237, [ 702] = 0x8a00, [ 703] = 0x8afa, [ 704] = 0x9650,
-+ [ 705] = 0x4e4e, [ 706] = 0x500b, [ 707] = 0x53e4, [ 708] = 0x547c,
-+ [ 709] = 0x56fa, [ 710] = 0x59d1, [ 711] = 0x5b64, [ 712] = 0x5df1,
-+ [ 713] = 0x5eab, [ 714] = 0x5f27, [ 715] = 0x6238, [ 716] = 0x6545,
-+ [ 717] = 0x67af, [ 718] = 0x6e56, [ 719] = 0x72d0, [ 720] = 0x7cca,
-+ [ 721] = 0x88b4, [ 722] = 0x80a1, [ 723] = 0x80e1, [ 724] = 0x83f0,
-+ [ 725] = 0x864e, [ 726] = 0x8a87, [ 727] = 0x8de8, [ 728] = 0x9237,
-+ [ 729] = 0x96c7, [ 730] = 0x9867, [ 731] = 0x9f13, [ 732] = 0x4e94,
-+ [ 733] = 0x4e92, [ 734] = 0x4f0d, [ 735] = 0x5348, [ 736] = 0x5449,
-+ [ 737] = 0x543e, [ 738] = 0x5a2f, [ 739] = 0x5f8c, [ 740] = 0x5fa1,
-+ [ 741] = 0x609f, [ 742] = 0x68a7, [ 743] = 0x6a8e, [ 744] = 0x745a,
-+ [ 745] = 0x7881, [ 746] = 0x8a9e, [ 747] = 0x8aa4, [ 748] = 0x8b77,
-+ [ 749] = 0x9190, [ 750] = 0x4e5e, [ 751] = 0x9bc9, [ 752] = 0x4ea4,
-+ [ 753] = 0x4f7c, [ 754] = 0x4faf, [ 755] = 0x5019, [ 756] = 0x5016,
-+ [ 757] = 0x5149, [ 758] = 0x516c, [ 759] = 0x529f, [ 760] = 0x52b9,
-+ [ 761] = 0x52fe, [ 762] = 0x539a, [ 763] = 0x53e3, [ 764] = 0x5411,
-+ [ 768] = 0x540e, [ 769] = 0x5589, [ 770] = 0x5751, [ 771] = 0x57a2,
-+ [ 772] = 0x597d, [ 773] = 0x5b54, [ 774] = 0x5b5d, [ 775] = 0x5b8f,
-+ [ 776] = 0x5de5, [ 777] = 0x5de7, [ 778] = 0x5df7, [ 779] = 0x5e78,
-+ [ 780] = 0x5e83, [ 781] = 0x5e9a, [ 782] = 0x5eb7, [ 783] = 0x5f18,
-+ [ 784] = 0x6052, [ 785] = 0x614c, [ 786] = 0x6297, [ 787] = 0x62d8,
-+ [ 788] = 0x63a7, [ 789] = 0x653b, [ 790] = 0x6602, [ 791] = 0x6643,
-+ [ 792] = 0x66f4, [ 793] = 0x676d, [ 794] = 0x6821, [ 795] = 0x6897,
-+ [ 796] = 0x69cb, [ 797] = 0x6c5f, [ 798] = 0x6d2a, [ 799] = 0x6d69,
-+ [ 800] = 0x6e2f, [ 801] = 0x6e9d, [ 802] = 0x7532, [ 803] = 0x7687,
-+ [ 804] = 0x786c, [ 805] = 0x7a3f, [ 806] = 0x7ce0, [ 807] = 0x7d05,
-+ [ 808] = 0x7d18, [ 809] = 0x7d5e, [ 810] = 0x7db1, [ 811] = 0x8015,
-+ [ 812] = 0x8003, [ 813] = 0x80af, [ 814] = 0x80b1, [ 815] = 0x8154,
-+ [ 816] = 0x818f, [ 817] = 0x822a, [ 818] = 0x8352, [ 819] = 0x884c,
-+ [ 820] = 0x8861, [ 821] = 0x8b1b, [ 822] = 0x8ca2, [ 823] = 0x8cfc,
-+ [ 824] = 0x90ca, [ 825] = 0x9175, [ 826] = 0x9271, [ 827] = 0x783f,
-+ [ 828] = 0x92fc, [ 829] = 0x95a4, [ 830] = 0x964d, [ 832] = 0x9805,
-+ [ 833] = 0x9999, [ 834] = 0x9ad8, [ 835] = 0x9d3b, [ 836] = 0x525b,
-+ [ 837] = 0x52ab, [ 838] = 0x53f7, [ 839] = 0x5408, [ 840] = 0x58d5,
-+ [ 841] = 0x62f7, [ 842] = 0x6fe0, [ 843] = 0x8c6a, [ 844] = 0x8f5f,
-+ [ 845] = 0x9eb9, [ 846] = 0x514b, [ 847] = 0x523b, [ 848] = 0x544a,
-+ [ 849] = 0x56fd, [ 850] = 0x7a40, [ 851] = 0x9177, [ 852] = 0x9d60,
-+ [ 853] = 0x9ed2, [ 854] = 0x7344, [ 855] = 0x6f09, [ 856] = 0x8170,
-+ [ 857] = 0x7511, [ 858] = 0x5ffd, [ 859] = 0x60da, [ 860] = 0x9aa8,
-+ [ 861] = 0x72db, [ 862] = 0x8fbc, [ 863] = 0x6b64, [ 864] = 0x9803,
-+ [ 865] = 0x4eca, [ 866] = 0x56f0, [ 867] = 0x5764, [ 868] = 0x58be,
-+ [ 869] = 0x5a5a, [ 870] = 0x6068, [ 871] = 0x61c7, [ 872] = 0x660f,
-+ [ 873] = 0x6606, [ 874] = 0x6839, [ 875] = 0x68b1, [ 876] = 0x6df7,
-+ [ 877] = 0x75d5, [ 878] = 0x7d3a, [ 879] = 0x826e, [ 880] = 0x9b42,
-+ [ 881] = 0x4e9b, [ 882] = 0x4f50, [ 883] = 0x53c9, [ 884] = 0x5506,
-+ [ 885] = 0x5d6f, [ 886] = 0x5de6, [ 887] = 0x5dee, [ 888] = 0x67fb,
-+ [ 889] = 0x6c99, [ 890] = 0x7473, [ 891] = 0x7802, [ 892] = 0x8a50,
-+ [ 893] = 0x9396, [ 894] = 0x88df, [ 895] = 0x5750, [ 896] = 0x5ea7,
-+ [ 897] = 0x632b, [ 898] = 0x50b5, [ 899] = 0x50ac, [ 900] = 0x518d,
-+ [ 901] = 0x6700, [ 902] = 0x54c9, [ 903] = 0x585e, [ 904] = 0x59bb,
-+ [ 905] = 0x5bb0, [ 906] = 0x5f69, [ 907] = 0x624d, [ 908] = 0x63a1,
-+ [ 909] = 0x683d, [ 910] = 0x6b73, [ 911] = 0x6e08, [ 912] = 0x707d,
-+ [ 913] = 0x91c7, [ 914] = 0x7280, [ 915] = 0x7815, [ 916] = 0x7826,
-+ [ 917] = 0x796d, [ 918] = 0x658e, [ 919] = 0x7d30, [ 920] = 0x83dc,
-+ [ 921] = 0x88c1, [ 922] = 0x8f09, [ 923] = 0x969b, [ 924] = 0x5264,
-+ [ 925] = 0x5728, [ 926] = 0x6750, [ 927] = 0x7f6a, [ 928] = 0x8ca1,
-+ [ 929] = 0x51b4, [ 930] = 0x5742, [ 931] = 0x962a, [ 932] = 0x583a,
-+ [ 933] = 0x698a, [ 934] = 0x80b4, [ 935] = 0x54b2, [ 936] = 0x5d0e,
-+ [ 937] = 0x57fc, [ 938] = 0x7895, [ 939] = 0x9dfa, [ 940] = 0x4f5c,
-+ [ 941] = 0x524a, [ 942] = 0x548b, [ 943] = 0x643e, [ 944] = 0x6628,
-+ [ 945] = 0x6714, [ 946] = 0x67f5, [ 947] = 0x7a84, [ 948] = 0x7b56,
-+ [ 949] = 0x7d22, [ 950] = 0x932f, [ 951] = 0x685c, [ 952] = 0x9bad,
-+ [ 953] = 0x7b39, [ 954] = 0x5319, [ 955] = 0x518a, [ 956] = 0x5237,
-+ [ 960] = 0x5bdf, [ 961] = 0x62f6, [ 962] = 0x64ae, [ 963] = 0x64e6,
-+ [ 964] = 0x672d, [ 965] = 0x6bba, [ 966] = 0x85a9, [ 967] = 0x96d1,
-+ [ 968] = 0x7690, [ 969] = 0x9bd6, [ 970] = 0x634c, [ 971] = 0x9306,
-+ [ 972] = 0x9bab, [ 973] = 0x76bf, [ 974] = 0x6652, [ 975] = 0x4e09,
-+ [ 976] = 0x5098, [ 977] = 0x53c2, [ 978] = 0x5c71, [ 979] = 0x60e8,
-+ [ 980] = 0x6492, [ 981] = 0x6563, [ 982] = 0x685f, [ 983] = 0x71e6,
-+ [ 984] = 0x73ca, [ 985] = 0x7523, [ 986] = 0x7b97, [ 987] = 0x7e82,
-+ [ 988] = 0x8695, [ 989] = 0x8b83, [ 990] = 0x8cdb, [ 991] = 0x9178,
-+ [ 992] = 0x9910, [ 993] = 0x65ac, [ 994] = 0x66ab, [ 995] = 0x6b8b,
-+ [ 996] = 0x4ed5, [ 997] = 0x4ed4, [ 998] = 0x4f3a, [ 999] = 0x4f7f,
-+ [1000] = 0x523a, [1001] = 0x53f8, [1002] = 0x53f2, [1003] = 0x55e3,
-+ [1004] = 0x56db, [1005] = 0x58eb, [1006] = 0x59cb, [1007] = 0x59c9,
-+ [1008] = 0x59ff, [1009] = 0x5b50, [1010] = 0x5c4d, [1011] = 0x5e02,
-+ [1012] = 0x5e2b, [1013] = 0x5fd7, [1014] = 0x601d, [1015] = 0x6307,
-+ [1016] = 0x652f, [1017] = 0x5b5c, [1018] = 0x65af, [1019] = 0x65bd,
-+ [1020] = 0x65e8, [1021] = 0x679d, [1022] = 0x6b62, [1024] = 0x6b7b,
-+ [1025] = 0x6c0f, [1026] = 0x7345, [1027] = 0x7949, [1028] = 0x79c1,
-+ [1029] = 0x7cf8, [1030] = 0x7d19, [1031] = 0x7d2b, [1032] = 0x80a2,
-+ [1033] = 0x8102, [1034] = 0x81f3, [1035] = 0x8996, [1036] = 0x8a5e,
-+ [1037] = 0x8a69, [1038] = 0x8a66, [1039] = 0x8a8c, [1040] = 0x8aee,
-+ [1041] = 0x8cc7, [1042] = 0x8cdc, [1043] = 0x96cc, [1044] = 0x98fc,
-+ [1045] = 0x6b6f, [1046] = 0x4e8b, [1047] = 0x4f3c, [1048] = 0x4f8d,
-+ [1049] = 0x5150, [1050] = 0x5b57, [1051] = 0x5bfa, [1052] = 0x6148,
-+ [1053] = 0x6301, [1054] = 0x6642, [1055] = 0x6b21, [1056] = 0x6ecb,
-+ [1057] = 0x6cbb, [1058] = 0x723e, [1059] = 0x74bd, [1060] = 0x75d4,
-+ [1061] = 0x78c1, [1062] = 0x793a, [1063] = 0x800c, [1064] = 0x8033,
-+ [1065] = 0x81ea, [1066] = 0x8494, [1067] = 0x8f9e, [1068] = 0x6c50,
-+ [1069] = 0x9e7f, [1070] = 0x5f0f, [1071] = 0x8b58, [1072] = 0x9d2b,
-+ [1073] = 0x7afa, [1074] = 0x8ef8, [1075] = 0x5b8d, [1076] = 0x96eb,
-+ [1077] = 0x4e03, [1078] = 0x53f1, [1079] = 0x57f7, [1080] = 0x5931,
-+ [1081] = 0x5ac9, [1082] = 0x5ba4, [1083] = 0x6089, [1084] = 0x6e7f,
-+ [1085] = 0x6f06, [1086] = 0x75be, [1087] = 0x8cea, [1088] = 0x5b9f,
-+ [1089] = 0x8500, [1090] = 0x7be0, [1091] = 0x5072, [1092] = 0x67f4,
-+ [1093] = 0x829d, [1094] = 0x5c61, [1095] = 0x854a, [1096] = 0x7e1e,
-+ [1097] = 0x820e, [1098] = 0x5199, [1099] = 0x5c04, [1100] = 0x6368,
-+ [1101] = 0x8d66, [1102] = 0x659c, [1103] = 0x716e, [1104] = 0x793e,
-+ [1105] = 0x7d17, [1106] = 0x8005, [1107] = 0x8b1d, [1108] = 0x8eca,
-+ [1109] = 0x906e, [1110] = 0x86c7, [1111] = 0x90aa, [1112] = 0x501f,
-+ [1113] = 0x52fa, [1114] = 0x5c3a, [1115] = 0x6753, [1116] = 0x707c,
-+ [1117] = 0x7235, [1118] = 0x914c, [1119] = 0x91c8, [1120] = 0x932b,
-+ [1121] = 0x82e5, [1122] = 0x5bc2, [1123] = 0x5f31, [1124] = 0x60f9,
-+ [1125] = 0x4e3b, [1126] = 0x53d6, [1127] = 0x5b88, [1128] = 0x624b,
-+ [1129] = 0x6731, [1130] = 0x6b8a, [1131] = 0x72e9, [1132] = 0x73e0,
-+ [1133] = 0x7a2e, [1134] = 0x816b, [1135] = 0x8da3, [1136] = 0x9152,
-+ [1137] = 0x9996, [1138] = 0x5112, [1139] = 0x53d7, [1140] = 0x546a,
-+ [1141] = 0x5bff, [1142] = 0x6388, [1143] = 0x6a39, [1144] = 0x7dac,
-+ [1145] = 0x9700, [1146] = 0x56da, [1147] = 0x53ce, [1148] = 0x5468,
-+ [1152] = 0x5b97, [1153] = 0x5c31, [1154] = 0x5dde, [1155] = 0x4fee,
-+ [1156] = 0x6101, [1157] = 0x62fe, [1158] = 0x6d32, [1159] = 0x79c0,
-+ [1160] = 0x79cb, [1161] = 0x7d42, [1162] = 0x7e4d, [1163] = 0x7fd2,
-+ [1164] = 0x81ed, [1165] = 0x821f, [1166] = 0x8490, [1167] = 0x8846,
-+ [1168] = 0x8972, [1169] = 0x8b90, [1170] = 0x8e74, [1171] = 0x8f2f,
-+ [1172] = 0x9031, [1173] = 0x914b, [1174] = 0x916c, [1175] = 0x96c6,
-+ [1176] = 0x919c, [1177] = 0x4ec0, [1178] = 0x4f4f, [1179] = 0x5145,
-+ [1180] = 0x5341, [1181] = 0x5f93, [1182] = 0x620e, [1183] = 0x67d4,
-+ [1184] = 0x6c41, [1185] = 0x6e0b, [1186] = 0x7363, [1187] = 0x7e26,
-+ [1188] = 0x91cd, [1189] = 0x9283, [1190] = 0x53d4, [1191] = 0x5919,
-+ [1192] = 0x5bbf, [1193] = 0x6dd1, [1194] = 0x795d, [1195] = 0x7e2e,
-+ [1196] = 0x7c9b, [1197] = 0x587e, [1198] = 0x719f, [1199] = 0x51fa,
-+ [1200] = 0x8853, [1201] = 0x8ff0, [1202] = 0x4fca, [1203] = 0x5cfb,
-+ [1204] = 0x6625, [1205] = 0x77ac, [1206] = 0x7ae3, [1207] = 0x821c,
-+ [1208] = 0x99ff, [1209] = 0x51c6, [1210] = 0x5faa, [1211] = 0x65ec,
-+ [1212] = 0x696f, [1213] = 0x6b89, [1214] = 0x6df3, [1216] = 0x6e96,
-+ [1217] = 0x6f64, [1218] = 0x76fe, [1219] = 0x7d14, [1220] = 0x5de1,
-+ [1221] = 0x9075, [1222] = 0x9187, [1223] = 0x9806, [1224] = 0x51e6,
-+ [1225] = 0x521d, [1226] = 0x6240, [1227] = 0x6691, [1228] = 0x66d9,
-+ [1229] = 0x6e1a, [1230] = 0x5eb6, [1231] = 0x7dd2, [1232] = 0x7f72,
-+ [1233] = 0x66f8, [1234] = 0x85af, [1235] = 0x85f7, [1236] = 0x8af8,
-+ [1237] = 0x52a9, [1238] = 0x53d9, [1239] = 0x5973, [1240] = 0x5e8f,
-+ [1241] = 0x5f90, [1242] = 0x6055, [1243] = 0x92e4, [1244] = 0x9664,
-+ [1245] = 0x50b7, [1246] = 0x511f, [1247] = 0x52dd, [1248] = 0x5320,
-+ [1249] = 0x5347, [1250] = 0x53ec, [1251] = 0x54e8, [1252] = 0x5546,
-+ [1253] = 0x5531, [1254] = 0x5617, [1255] = 0x5968, [1256] = 0x59be,
-+ [1257] = 0x5a3c, [1258] = 0x5bb5, [1259] = 0x5c06, [1260] = 0x5c0f,
-+ [1261] = 0x5c11, [1262] = 0x5c1a, [1263] = 0x5e84, [1264] = 0x5e8a,
-+ [1265] = 0x5ee0, [1266] = 0x5f70, [1267] = 0x627f, [1268] = 0x6284,
-+ [1269] = 0x62db, [1270] = 0x638c, [1271] = 0x6377, [1272] = 0x6607,
-+ [1273] = 0x660c, [1274] = 0x662d, [1275] = 0x6676, [1276] = 0x677e,
-+ [1277] = 0x68a2, [1278] = 0x6a1f, [1279] = 0x6a35, [1280] = 0x6cbc,
-+ [1281] = 0x6d88, [1282] = 0x6e09, [1283] = 0x6e58, [1284] = 0x713c,
-+ [1285] = 0x7126, [1286] = 0x7167, [1287] = 0x75c7, [1288] = 0x7701,
-+ [1289] = 0x785d, [1290] = 0x7901, [1291] = 0x7965, [1292] = 0x79f0,
-+ [1293] = 0x7ae0, [1294] = 0x7b11, [1295] = 0x7ca7, [1296] = 0x7d39,
-+ [1297] = 0x8096, [1298] = 0x83d6, [1299] = 0x848b, [1300] = 0x8549,
-+ [1301] = 0x885d, [1302] = 0x88f3, [1303] = 0x8a1f, [1304] = 0x8a3c,
-+ [1305] = 0x8a54, [1306] = 0x8a73, [1307] = 0x8c61, [1308] = 0x8cde,
-+ [1309] = 0x91a4, [1310] = 0x9266, [1311] = 0x937e, [1312] = 0x9418,
-+ [1313] = 0x969c, [1314] = 0x9798, [1315] = 0x4e0a, [1316] = 0x4e08,
-+ [1317] = 0x4e1e, [1318] = 0x4e57, [1319] = 0x5197, [1320] = 0x5270,
-+ [1321] = 0x57ce, [1322] = 0x5834, [1323] = 0x58cc, [1324] = 0x5b22,
-+ [1325] = 0x5e38, [1326] = 0x60c5, [1327] = 0x64fe, [1328] = 0x6761,
-+ [1329] = 0x6756, [1330] = 0x6d44, [1331] = 0x72b6, [1332] = 0x7573,
-+ [1333] = 0x7a63, [1334] = 0x84b8, [1335] = 0x8b72, [1336] = 0x91b8,
-+ [1337] = 0x9320, [1338] = 0x5631, [1339] = 0x57f4, [1340] = 0x98fe,
-+ [1344] = 0x62ed, [1345] = 0x690d, [1346] = 0x6b96, [1347] = 0x71ed,
-+ [1348] = 0x7e54, [1349] = 0x8077, [1350] = 0x8272, [1351] = 0x89e6,
-+ [1352] = 0x98df, [1353] = 0x8755, [1354] = 0x8fb1, [1355] = 0x5c3b,
-+ [1356] = 0x4f38, [1357] = 0x4fe1, [1358] = 0x4fb5, [1359] = 0x5507,
-+ [1360] = 0x5a20, [1361] = 0x5bdd, [1362] = 0x5be9, [1363] = 0x5fc3,
-+ [1364] = 0x614e, [1365] = 0x632f, [1366] = 0x65b0, [1367] = 0x664b,
-+ [1368] = 0x68ee, [1369] = 0x699b, [1370] = 0x6d78, [1371] = 0x6df1,
-+ [1372] = 0x7533, [1373] = 0x75b9, [1374] = 0x771f, [1375] = 0x795e,
-+ [1376] = 0x79e6, [1377] = 0x7d33, [1378] = 0x81e3, [1379] = 0x82af,
-+ [1380] = 0x85aa, [1381] = 0x89aa, [1382] = 0x8a3a, [1383] = 0x8eab,
-+ [1384] = 0x8f9b, [1385] = 0x9032, [1386] = 0x91dd, [1387] = 0x9707,
-+ [1388] = 0x4eba, [1389] = 0x4ec1, [1390] = 0x5203, [1391] = 0x5875,
-+ [1392] = 0x58ec, [1393] = 0x5c0b, [1394] = 0x751a, [1395] = 0x5c3d,
-+ [1396] = 0x814e, [1397] = 0x8a0a, [1398] = 0x8fc5, [1399] = 0x9663,
-+ [1400] = 0x976d, [1401] = 0x7b25, [1402] = 0x8acf, [1403] = 0x9808,
-+ [1404] = 0x9162, [1405] = 0x56f3, [1406] = 0x53a8, [1408] = 0x9017,
-+ [1409] = 0x5439, [1410] = 0x5782, [1411] = 0x5e25, [1412] = 0x63a8,
-+ [1413] = 0x6c34, [1414] = 0x708a, [1415] = 0x7761, [1416] = 0x7c8b,
-+ [1417] = 0x7fe0, [1418] = 0x8870, [1419] = 0x9042, [1420] = 0x9154,
-+ [1421] = 0x9310, [1422] = 0x9318, [1423] = 0x968f, [1424] = 0x745e,
-+ [1425] = 0x9ac4, [1426] = 0x5d07, [1427] = 0x5d69, [1428] = 0x6570,
-+ [1429] = 0x67a2, [1430] = 0x8da8, [1431] = 0x96db, [1432] = 0x636e,
-+ [1433] = 0x6749, [1434] = 0x6919, [1435] = 0x83c5, [1436] = 0x9817,
-+ [1437] = 0x96c0, [1438] = 0x88fe, [1439] = 0x6f84, [1440] = 0x647a,
-+ [1441] = 0x5bf8, [1442] = 0x4e16, [1443] = 0x702c, [1444] = 0x755d,
-+ [1445] = 0x662f, [1446] = 0x51c4, [1447] = 0x5236, [1448] = 0x52e2,
-+ [1449] = 0x59d3, [1450] = 0x5f81, [1451] = 0x6027, [1452] = 0x6210,
-+ [1453] = 0x653f, [1454] = 0x6574, [1455] = 0x661f, [1456] = 0x6674,
-+ [1457] = 0x68f2, [1458] = 0x6816, [1459] = 0x6b63, [1460] = 0x6e05,
-+ [1461] = 0x7272, [1462] = 0x751f, [1463] = 0x76db, [1464] = 0x7cbe,
-+ [1465] = 0x8056, [1466] = 0x58f0, [1467] = 0x88fd, [1468] = 0x897f,
-+ [1469] = 0x8aa0, [1470] = 0x8a93, [1471] = 0x8acb, [1472] = 0x901d,
-+ [1473] = 0x9192, [1474] = 0x9752, [1475] = 0x9759, [1476] = 0x6589,
-+ [1477] = 0x7a0e, [1478] = 0x8106, [1479] = 0x96bb, [1480] = 0x5e2d,
-+ [1481] = 0x60dc, [1482] = 0x621a, [1483] = 0x65a5, [1484] = 0x6614,
-+ [1485] = 0x6790, [1486] = 0x77f3, [1487] = 0x7a4d, [1488] = 0x7c4d,
-+ [1489] = 0x7e3e, [1490] = 0x810a, [1491] = 0x8cac, [1492] = 0x8d64,
-+ [1493] = 0x8de1, [1494] = 0x8e5f, [1495] = 0x78a9, [1496] = 0x5207,
-+ [1497] = 0x62d9, [1498] = 0x63a5, [1499] = 0x6442, [1500] = 0x6298,
-+ [1501] = 0x8a2d, [1502] = 0x7a83, [1503] = 0x7bc0, [1504] = 0x8aac,
-+ [1505] = 0x96ea, [1506] = 0x7d76, [1507] = 0x820c, [1508] = 0x8749,
-+ [1509] = 0x4ed9, [1510] = 0x5148, [1511] = 0x5343, [1512] = 0x5360,
-+ [1513] = 0x5ba3, [1514] = 0x5c02, [1515] = 0x5c16, [1516] = 0x5ddd,
-+ [1517] = 0x6226, [1518] = 0x6247, [1519] = 0x64b0, [1520] = 0x6813,
-+ [1521] = 0x6834, [1522] = 0x6cc9, [1523] = 0x6d45, [1524] = 0x6d17,
-+ [1525] = 0x67d3, [1526] = 0x6f5c, [1527] = 0x714e, [1528] = 0x717d,
-+ [1529] = 0x65cb, [1530] = 0x7a7f, [1531] = 0x7bad, [1532] = 0x7dda,
-+ [1536] = 0x7e4a, [1537] = 0x7fa8, [1538] = 0x817a, [1539] = 0x821b,
-+ [1540] = 0x8239, [1541] = 0x85a6, [1542] = 0x8a6e, [1543] = 0x8cce,
-+ [1544] = 0x8df5, [1545] = 0x9078, [1546] = 0x9077, [1547] = 0x92ad,
-+ [1548] = 0x9291, [1549] = 0x9583, [1550] = 0x9bae, [1551] = 0x524d,
-+ [1552] = 0x5584, [1553] = 0x6f38, [1554] = 0x7136, [1555] = 0x5168,
-+ [1556] = 0x7985, [1557] = 0x7e55, [1558] = 0x81b3, [1559] = 0x7cce,
-+ [1560] = 0x564c, [1561] = 0x5851, [1562] = 0x5ca8, [1563] = 0x63aa,
-+ [1564] = 0x66fe, [1565] = 0x66fd, [1566] = 0x695a, [1567] = 0x72d9,
-+ [1568] = 0x758f, [1569] = 0x758e, [1570] = 0x790e, [1571] = 0x7956,
-+ [1572] = 0x79df, [1573] = 0x7c97, [1574] = 0x7d20, [1575] = 0x7d44,
-+ [1576] = 0x8607, [1577] = 0x8a34, [1578] = 0x963b, [1579] = 0x9061,
-+ [1580] = 0x9f20, [1581] = 0x50e7, [1582] = 0x5275, [1583] = 0x53cc,
-+ [1584] = 0x53e2, [1585] = 0x5009, [1586] = 0x55aa, [1587] = 0x58ee,
-+ [1588] = 0x594f, [1589] = 0x723d, [1590] = 0x5b8b, [1591] = 0x5c64,
-+ [1592] = 0x531d, [1593] = 0x60e3, [1594] = 0x60f3, [1595] = 0x635c,
-+ [1596] = 0x6383, [1597] = 0x633f, [1598] = 0x63bb, [1600] = 0x64cd,
-+ [1601] = 0x65e9, [1602] = 0x66f9, [1603] = 0x5de3, [1604] = 0x69cd,
-+ [1605] = 0x69fd, [1606] = 0x6f15, [1607] = 0x71e5, [1608] = 0x4e89,
-+ [1609] = 0x75e9, [1610] = 0x76f8, [1611] = 0x7a93, [1612] = 0x7cdf,
-+ [1613] = 0x7dcf, [1614] = 0x7d9c, [1615] = 0x8061, [1616] = 0x8349,
-+ [1617] = 0x8358, [1618] = 0x846c, [1619] = 0x84bc, [1620] = 0x85fb,
-+ [1621] = 0x88c5, [1622] = 0x8d70, [1623] = 0x9001, [1624] = 0x906d,
-+ [1625] = 0x9397, [1626] = 0x971c, [1627] = 0x9a12, [1628] = 0x50cf,
-+ [1629] = 0x5897, [1630] = 0x618e, [1631] = 0x81d3, [1632] = 0x8535,
-+ [1633] = 0x8d08, [1634] = 0x9020, [1635] = 0x4fc3, [1636] = 0x5074,
-+ [1637] = 0x5247, [1638] = 0x5373, [1639] = 0x606f, [1640] = 0x6349,
-+ [1641] = 0x675f, [1642] = 0x6e2c, [1643] = 0x8db3, [1644] = 0x901f,
-+ [1645] = 0x4fd7, [1646] = 0x5c5e, [1647] = 0x8cca, [1648] = 0x65cf,
-+ [1649] = 0x7d9a, [1650] = 0x5352, [1651] = 0x8896, [1652] = 0x5176,
-+ [1653] = 0x63c3, [1654] = 0x5b58, [1655] = 0x5b6b, [1656] = 0x5c0a,
-+ [1657] = 0x640d, [1658] = 0x6751, [1659] = 0x905c, [1660] = 0x4ed6,
-+ [1661] = 0x591a, [1662] = 0x592a, [1663] = 0x6c70, [1664] = 0x8a51,
-+ [1665] = 0x553e, [1666] = 0x5815, [1667] = 0x59a5, [1668] = 0x60f0,
-+ [1669] = 0x6253, [1670] = 0x67c1, [1671] = 0x8235, [1672] = 0x6955,
-+ [1673] = 0x9640, [1674] = 0x99c4, [1675] = 0x9a28, [1676] = 0x4f53,
-+ [1677] = 0x5806, [1678] = 0x5bfe, [1679] = 0x8010, [1680] = 0x5cb1,
-+ [1681] = 0x5e2f, [1682] = 0x5f85, [1683] = 0x6020, [1684] = 0x614b,
-+ [1685] = 0x6234, [1686] = 0x66ff, [1687] = 0x6cf0, [1688] = 0x6ede,
-+ [1689] = 0x80ce, [1690] = 0x817f, [1691] = 0x82d4, [1692] = 0x888b,
-+ [1693] = 0x8cb8, [1694] = 0x9000, [1695] = 0x902e, [1696] = 0x968a,
-+ [1697] = 0x9edb, [1698] = 0x9bdb, [1699] = 0x4ee3, [1700] = 0x53f0,
-+ [1701] = 0x5927, [1702] = 0x7b2c, [1703] = 0x918d, [1704] = 0x984c,
-+ [1705] = 0x9df9, [1706] = 0x6edd, [1707] = 0x7027, [1708] = 0x5353,
-+ [1709] = 0x5544, [1710] = 0x5b85, [1711] = 0x6258, [1712] = 0x629e,
-+ [1713] = 0x62d3, [1714] = 0x6ca2, [1715] = 0x6fef, [1716] = 0x7422,
-+ [1717] = 0x8a17, [1718] = 0x9438, [1719] = 0x6fc1, [1720] = 0x8afe,
-+ [1721] = 0x8338, [1722] = 0x51e7, [1723] = 0x86f8, [1724] = 0x53ea,
-+ [1728] = 0x53e9, [1729] = 0x4f46, [1730] = 0x9054, [1731] = 0x8fb0,
-+ [1732] = 0x596a, [1733] = 0x8131, [1734] = 0x5dfd, [1735] = 0x7aea,
-+ [1736] = 0x8fbf, [1737] = 0x68da, [1738] = 0x8c37, [1739] = 0x72f8,
-+ [1740] = 0x9c48, [1741] = 0x6a3d, [1742] = 0x8ab0, [1743] = 0x4e39,
-+ [1744] = 0x5358, [1745] = 0x5606, [1746] = 0x5766, [1747] = 0x62c5,
-+ [1748] = 0x63a2, [1749] = 0x65e6, [1750] = 0x6b4e, [1751] = 0x6de1,
-+ [1752] = 0x6e5b, [1753] = 0x70ad, [1754] = 0x77ed, [1755] = 0x7aef,
-+ [1756] = 0x7baa, [1757] = 0x7dbb, [1758] = 0x803d, [1759] = 0x80c6,
-+ [1760] = 0x86cb, [1761] = 0x8a95, [1762] = 0x935b, [1763] = 0x56e3,
-+ [1764] = 0x58c7, [1765] = 0x5f3e, [1766] = 0x65ad, [1767] = 0x6696,
-+ [1768] = 0x6a80, [1769] = 0x6bb5, [1770] = 0x7537, [1771] = 0x8ac7,
-+ [1772] = 0x5024, [1773] = 0x77e5, [1774] = 0x5730, [1775] = 0x5f1b,
-+ [1776] = 0x6065, [1777] = 0x667a, [1778] = 0x6c60, [1779] = 0x75f4,
-+ [1780] = 0x7a1a, [1781] = 0x7f6e, [1782] = 0x81f4, [1783] = 0x8718,
-+ [1784] = 0x9045, [1785] = 0x99b3, [1786] = 0x7bc9, [1787] = 0x755c,
-+ [1788] = 0x7af9, [1789] = 0x7b51, [1790] = 0x84c4, [1792] = 0x9010,
-+ [1793] = 0x79e9, [1794] = 0x7a92, [1795] = 0x8336, [1796] = 0x5ae1,
-+ [1797] = 0x7740, [1798] = 0x4e2d, [1799] = 0x4ef2, [1800] = 0x5b99,
-+ [1801] = 0x5fe0, [1802] = 0x62bd, [1803] = 0x663c, [1804] = 0x67f1,
-+ [1805] = 0x6ce8, [1806] = 0x866b, [1807] = 0x8877, [1808] = 0x8a3b,
-+ [1809] = 0x914e, [1810] = 0x92f3, [1811] = 0x99d0, [1812] = 0x6a17,
-+ [1813] = 0x7026, [1814] = 0x732a, [1815] = 0x82e7, [1816] = 0x8457,
-+ [1817] = 0x8caf, [1818] = 0x4e01, [1819] = 0x5146, [1820] = 0x51cb,
-+ [1821] = 0x558b, [1822] = 0x5bf5, [1823] = 0x5e16, [1824] = 0x5e33,
-+ [1825] = 0x5e81, [1826] = 0x5f14, [1827] = 0x5f35, [1828] = 0x5f6b,
-+ [1829] = 0x5fb4, [1830] = 0x61f2, [1831] = 0x6311, [1832] = 0x66a2,
-+ [1833] = 0x671d, [1834] = 0x6f6e, [1835] = 0x7252, [1836] = 0x753a,
-+ [1837] = 0x773a, [1838] = 0x8074, [1839] = 0x8139, [1840] = 0x8178,
-+ [1841] = 0x8776, [1842] = 0x8abf, [1843] = 0x8adc, [1844] = 0x8d85,
-+ [1845] = 0x8df3, [1846] = 0x929a, [1847] = 0x9577, [1848] = 0x9802,
-+ [1849] = 0x9ce5, [1850] = 0x52c5, [1851] = 0x6357, [1852] = 0x76f4,
-+ [1853] = 0x6715, [1854] = 0x6c88, [1855] = 0x73cd, [1856] = 0x8cc3,
-+ [1857] = 0x93ae, [1858] = 0x9673, [1859] = 0x6d25, [1860] = 0x589c,
-+ [1861] = 0x690e, [1862] = 0x69cc, [1863] = 0x8ffd, [1864] = 0x939a,
-+ [1865] = 0x75db, [1866] = 0x901a, [1867] = 0x585a, [1868] = 0x6802,
-+ [1869] = 0x63b4, [1870] = 0x69fb, [1871] = 0x4f43, [1872] = 0x6f2c,
-+ [1873] = 0x67d8, [1874] = 0x8fbb, [1875] = 0x8526, [1876] = 0x7db4,
-+ [1877] = 0x9354, [1878] = 0x693f, [1879] = 0x6f70, [1880] = 0x576a,
-+ [1881] = 0x58f7, [1882] = 0x5b2c, [1883] = 0x7d2c, [1884] = 0x722a,
-+ [1885] = 0x540a, [1886] = 0x91e3, [1887] = 0x9db4, [1888] = 0x4ead,
-+ [1889] = 0x4f4e, [1890] = 0x505c, [1891] = 0x5075, [1892] = 0x5243,
-+ [1893] = 0x8c9e, [1894] = 0x5448, [1895] = 0x5824, [1896] = 0x5b9a,
-+ [1897] = 0x5e1d, [1898] = 0x5e95, [1899] = 0x5ead, [1900] = 0x5ef7,
-+ [1901] = 0x5f1f, [1902] = 0x608c, [1903] = 0x62b5, [1904] = 0x633a,
-+ [1905] = 0x63d0, [1906] = 0x68af, [1907] = 0x6c40, [1908] = 0x7887,
-+ [1909] = 0x798e, [1910] = 0x7a0b, [1911] = 0x7de0, [1912] = 0x8247,
-+ [1913] = 0x8a02, [1914] = 0x8ae6, [1915] = 0x8e44, [1916] = 0x9013,
-+ [1920] = 0x90b8, [1921] = 0x912d, [1922] = 0x91d8, [1923] = 0x9f0e,
-+ [1924] = 0x6ce5, [1925] = 0x6458, [1926] = 0x64e2, [1927] = 0x6575,
-+ [1928] = 0x6ef4, [1929] = 0x7684, [1930] = 0x7b1b, [1931] = 0x9069,
-+ [1932] = 0x93d1, [1933] = 0x6eba, [1934] = 0x54f2, [1935] = 0x5fb9,
-+ [1936] = 0x64a4, [1937] = 0x8f4d, [1938] = 0x8fed, [1939] = 0x9244,
-+ [1940] = 0x5178, [1941] = 0x586b, [1942] = 0x5929, [1943] = 0x5c55,
-+ [1944] = 0x5e97, [1945] = 0x6dfb, [1946] = 0x7e8f, [1947] = 0x751c,
-+ [1948] = 0x8cbc, [1949] = 0x8ee2, [1950] = 0x985b, [1951] = 0x70b9,
-+ [1952] = 0x4f1d, [1953] = 0x6bbf, [1954] = 0x6fb1, [1955] = 0x7530,
-+ [1956] = 0x96fb, [1957] = 0x514e, [1958] = 0x5410, [1959] = 0x5835,
-+ [1960] = 0x5857, [1961] = 0x59ac, [1962] = 0x5c60, [1963] = 0x5f92,
-+ [1964] = 0x6597, [1965] = 0x675c, [1966] = 0x6e21, [1967] = 0x767b,
-+ [1968] = 0x83df, [1969] = 0x8ced, [1970] = 0x9014, [1971] = 0x90fd,
-+ [1972] = 0x934d, [1973] = 0x7825, [1974] = 0x783a, [1975] = 0x52aa,
-+ [1976] = 0x5ea6, [1977] = 0x571f, [1978] = 0x5974, [1979] = 0x6012,
-+ [1980] = 0x5012, [1981] = 0x515a, [1982] = 0x51ac, [1984] = 0x51cd,
-+ [1985] = 0x5200, [1986] = 0x5510, [1987] = 0x5854, [1988] = 0x5858,
-+ [1989] = 0x5957, [1990] = 0x5b95, [1991] = 0x5cf6, [1992] = 0x5d8b,
-+ [1993] = 0x60bc, [1994] = 0x6295, [1995] = 0x642d, [1996] = 0x6771,
-+ [1997] = 0x6843, [1998] = 0x68bc, [1999] = 0x68df, [2000] = 0x76d7,
-+ [2001] = 0x6dd8, [2002] = 0x6e6f, [2003] = 0x6d9b, [2004] = 0x706f,
-+ [2005] = 0x71c8, [2006] = 0x5f53, [2007] = 0x75d8, [2008] = 0x7977,
-+ [2009] = 0x7b49, [2010] = 0x7b54, [2011] = 0x7b52, [2012] = 0x7cd6,
-+ [2013] = 0x7d71, [2014] = 0x5230, [2015] = 0x8463, [2016] = 0x8569,
-+ [2017] = 0x85e4, [2018] = 0x8a0e, [2019] = 0x8b04, [2020] = 0x8c46,
-+ [2021] = 0x8e0f, [2022] = 0x9003, [2023] = 0x900f, [2024] = 0x9419,
-+ [2025] = 0x9676, [2026] = 0x982d, [2027] = 0x9a30, [2028] = 0x95d8,
-+ [2029] = 0x50cd, [2030] = 0x52d5, [2031] = 0x540c, [2032] = 0x5802,
-+ [2033] = 0x5c0e, [2034] = 0x61a7, [2035] = 0x649e, [2036] = 0x6d1e,
-+ [2037] = 0x77b3, [2038] = 0x7ae5, [2039] = 0x80f4, [2040] = 0x8404,
-+ [2041] = 0x9053, [2042] = 0x9285, [2043] = 0x5ce0, [2044] = 0x9d07,
-+ [2045] = 0x533f, [2046] = 0x5f97, [2047] = 0x5fb3, [2048] = 0x6d9c,
-+ [2049] = 0x7279, [2050] = 0x7763, [2051] = 0x79bf, [2052] = 0x7be4,
-+ [2053] = 0x6bd2, [2054] = 0x72ec, [2055] = 0x8aad, [2056] = 0x6803,
-+ [2057] = 0x6a61, [2058] = 0x51f8, [2059] = 0x7a81, [2060] = 0x6934,
-+ [2061] = 0x5c4a, [2062] = 0x9cf6, [2063] = 0x82eb, [2064] = 0x5bc5,
-+ [2065] = 0x9149, [2066] = 0x701e, [2067] = 0x5678, [2068] = 0x5c6f,
-+ [2069] = 0x60c7, [2070] = 0x6566, [2071] = 0x6c8c, [2072] = 0x8c5a,
-+ [2073] = 0x9041, [2074] = 0x9813, [2075] = 0x5451, [2076] = 0x66c7,
-+ [2077] = 0x920d, [2078] = 0x5948, [2079] = 0x90a3, [2080] = 0x5185,
-+ [2081] = 0x4e4d, [2082] = 0x51ea, [2083] = 0x8599, [2084] = 0x8b0e,
-+ [2085] = 0x7058, [2086] = 0x637a, [2087] = 0x934b, [2088] = 0x6962,
-+ [2089] = 0x99b4, [2090] = 0x7e04, [2091] = 0x7577, [2092] = 0x5357,
-+ [2093] = 0x6960, [2094] = 0x8edf, [2095] = 0x96e3, [2096] = 0x6c5d,
-+ [2097] = 0x4e8c, [2098] = 0x5c3c, [2099] = 0x5f10, [2100] = 0x8fe9,
-+ [2101] = 0x5302, [2102] = 0x8cd1, [2103] = 0x8089, [2104] = 0x8679,
-+ [2105] = 0x5eff, [2106] = 0x65e5, [2107] = 0x4e73, [2108] = 0x5165,
-+ [2112] = 0x5982, [2113] = 0x5c3f, [2114] = 0x97ee, [2115] = 0x4efb,
-+ [2116] = 0x598a, [2117] = 0x5fcd, [2118] = 0x8a8d, [2119] = 0x6fe1,
-+ [2120] = 0x79b0, [2121] = 0x7962, [2122] = 0x5be7, [2123] = 0x8471,
-+ [2124] = 0x732b, [2125] = 0x71b1, [2126] = 0x5e74, [2127] = 0x5ff5,
-+ [2128] = 0x637b, [2129] = 0x649a, [2130] = 0x71c3, [2131] = 0x7c98,
-+ [2132] = 0x4e43, [2133] = 0x5efc, [2134] = 0x4e4b, [2135] = 0x57dc,
-+ [2136] = 0x56a2, [2137] = 0x60a9, [2138] = 0x6fc3, [2139] = 0x7d0d,
-+ [2140] = 0x80fd, [2141] = 0x8133, [2142] = 0x81bf, [2143] = 0x8fb2,
-+ [2144] = 0x8997, [2145] = 0x86a4, [2146] = 0x5df4, [2147] = 0x628a,
-+ [2148] = 0x64ad, [2149] = 0x8987, [2150] = 0x6777, [2151] = 0x6ce2,
-+ [2152] = 0x6d3e, [2153] = 0x7436, [2154] = 0x7834, [2155] = 0x5a46,
-+ [2156] = 0x7f75, [2157] = 0x82ad, [2158] = 0x99ac, [2159] = 0x4ff3,
-+ [2160] = 0x5ec3, [2161] = 0x62dd, [2162] = 0x6392, [2163] = 0x6557,
-+ [2164] = 0x676f, [2165] = 0x76c3, [2166] = 0x724c, [2167] = 0x80cc,
-+ [2168] = 0x80ba, [2169] = 0x8f29, [2170] = 0x914d, [2171] = 0x500d,
-+ [2172] = 0x57f9, [2173] = 0x5a92, [2174] = 0x6885, [2176] = 0x6973,
-+ [2177] = 0x7164, [2178] = 0x72fd, [2179] = 0x8cb7, [2180] = 0x58f2,
-+ [2181] = 0x8ce0, [2182] = 0x966a, [2183] = 0x9019, [2184] = 0x877f,
-+ [2185] = 0x79e4, [2186] = 0x77e7, [2187] = 0x8429, [2188] = 0x4f2f,
-+ [2189] = 0x5265, [2190] = 0x535a, [2191] = 0x62cd, [2192] = 0x67cf,
-+ [2193] = 0x6cca, [2194] = 0x767d, [2195] = 0x7b94, [2196] = 0x7c95,
-+ [2197] = 0x8236, [2198] = 0x8584, [2199] = 0x8feb, [2200] = 0x66dd,
-+ [2201] = 0x6f20, [2202] = 0x7206, [2203] = 0x7e1b, [2204] = 0x83ab,
-+ [2205] = 0x99c1, [2206] = 0x9ea6, [2207] = 0x51fd, [2208] = 0x7bb1,
-+ [2209] = 0x7872, [2210] = 0x7bb8, [2211] = 0x8087, [2212] = 0x7b48,
-+ [2213] = 0x6ae8, [2214] = 0x5e61, [2215] = 0x808c, [2216] = 0x7551,
-+ [2217] = 0x7560, [2218] = 0x516b, [2219] = 0x9262, [2220] = 0x6e8c,
-+ [2221] = 0x767a, [2222] = 0x9197, [2223] = 0x9aea, [2224] = 0x4f10,
-+ [2225] = 0x7f70, [2226] = 0x629c, [2227] = 0x7b4f, [2228] = 0x95a5,
-+ [2229] = 0x9ce9, [2230] = 0x567a, [2231] = 0x5859, [2232] = 0x86e4,
-+ [2233] = 0x96bc, [2234] = 0x4f34, [2235] = 0x5224, [2236] = 0x534a,
-+ [2237] = 0x53cd, [2238] = 0x53db, [2239] = 0x5e06, [2240] = 0x642c,
-+ [2241] = 0x6591, [2242] = 0x677f, [2243] = 0x6c3e, [2244] = 0x6c4e,
-+ [2245] = 0x7248, [2246] = 0x72af, [2247] = 0x73ed, [2248] = 0x7554,
-+ [2249] = 0x7e41, [2250] = 0x822c, [2251] = 0x85e9, [2252] = 0x8ca9,
-+ [2253] = 0x7bc4, [2254] = 0x91c6, [2255] = 0x7169, [2256] = 0x9812,
-+ [2257] = 0x98ef, [2258] = 0x633d, [2259] = 0x6669, [2260] = 0x756a,
-+ [2261] = 0x76e4, [2262] = 0x78d0, [2263] = 0x8543, [2264] = 0x86ee,
-+ [2265] = 0x532a, [2266] = 0x5351, [2267] = 0x5426, [2268] = 0x5983,
-+ [2269] = 0x5e87, [2270] = 0x5f7c, [2271] = 0x60b2, [2272] = 0x6249,
-+ [2273] = 0x6279, [2274] = 0x62ab, [2275] = 0x6590, [2276] = 0x6bd4,
-+ [2277] = 0x6ccc, [2278] = 0x75b2, [2279] = 0x76ae, [2280] = 0x7891,
-+ [2281] = 0x79d8, [2282] = 0x7dcb, [2283] = 0x7f77, [2284] = 0x80a5,
-+ [2285] = 0x88ab, [2286] = 0x8ab9, [2287] = 0x8cbb, [2288] = 0x907f,
-+ [2289] = 0x975e, [2290] = 0x98db, [2291] = 0x6a0b, [2292] = 0x7c38,
-+ [2293] = 0x5099, [2294] = 0x5c3e, [2295] = 0x5fae, [2296] = 0x6787,
-+ [2297] = 0x6bd8, [2298] = 0x7435, [2299] = 0x7709, [2300] = 0x7f8e,
-+ [2304] = 0x9f3b, [2305] = 0x67ca, [2306] = 0x7a17, [2307] = 0x5339,
-+ [2308] = 0x758b, [2309] = 0x9aed, [2310] = 0x5f66, [2311] = 0x819d,
-+ [2312] = 0x83f1, [2313] = 0x8098, [2314] = 0x5f3c, [2315] = 0x5fc5,
-+ [2316] = 0x7562, [2317] = 0x7b46, [2318] = 0x903c, [2319] = 0x6867,
-+ [2320] = 0x59eb, [2321] = 0x5a9b, [2322] = 0x7d10, [2323] = 0x767e,
-+ [2324] = 0x8b2c, [2325] = 0x4ff5, [2326] = 0x5f6a, [2327] = 0x6a19,
-+ [2328] = 0x6c37, [2329] = 0x6f02, [2330] = 0x74e2, [2331] = 0x7968,
-+ [2332] = 0x8868, [2333] = 0x8a55, [2334] = 0x8c79, [2335] = 0x5edf,
-+ [2336] = 0x63cf, [2337] = 0x75c5, [2338] = 0x79d2, [2339] = 0x82d7,
-+ [2340] = 0x9328, [2341] = 0x92f2, [2342] = 0x849c, [2343] = 0x86ed,
-+ [2344] = 0x9c2d, [2345] = 0x54c1, [2346] = 0x5f6c, [2347] = 0x658c,
-+ [2348] = 0x6d5c, [2349] = 0x7015, [2350] = 0x8ca7, [2351] = 0x8cd3,
-+ [2352] = 0x983b, [2353] = 0x654f, [2354] = 0x74f6, [2355] = 0x4e0d,
-+ [2356] = 0x4ed8, [2357] = 0x57e0, [2358] = 0x592b, [2359] = 0x5a66,
-+ [2360] = 0x5bcc, [2361] = 0x51a8, [2362] = 0x5e03, [2363] = 0x5e9c,
-+ [2364] = 0x6016, [2365] = 0x6276, [2366] = 0x6577, [2368] = 0x65a7,
-+ [2369] = 0x666e, [2370] = 0x6d6e, [2371] = 0x7236, [2372] = 0x7b26,
-+ [2373] = 0x8150, [2374] = 0x819a, [2375] = 0x8299, [2376] = 0x8b5c,
-+ [2377] = 0x8ca0, [2378] = 0x8ce6, [2379] = 0x8d74, [2380] = 0x961c,
-+ [2381] = 0x9644, [2382] = 0x4fae, [2383] = 0x64ab, [2384] = 0x6b66,
-+ [2385] = 0x821e, [2386] = 0x8461, [2387] = 0x856a, [2388] = 0x90e8,
-+ [2389] = 0x5c01, [2390] = 0x6953, [2391] = 0x98a8, [2392] = 0x847a,
-+ [2393] = 0x8557, [2394] = 0x4f0f, [2395] = 0x526f, [2396] = 0x5fa9,
-+ [2397] = 0x5e45, [2398] = 0x670d, [2399] = 0x798f, [2400] = 0x8179,
-+ [2401] = 0x8907, [2402] = 0x8986, [2403] = 0x6df5, [2404] = 0x5f17,
-+ [2405] = 0x6255, [2406] = 0x6cb8, [2407] = 0x4ecf, [2408] = 0x7269,
-+ [2409] = 0x9b92, [2410] = 0x5206, [2411] = 0x543b, [2412] = 0x5674,
-+ [2413] = 0x58b3, [2414] = 0x61a4, [2415] = 0x626e, [2416] = 0x711a,
-+ [2417] = 0x596e, [2418] = 0x7c89, [2419] = 0x7cde, [2420] = 0x7d1b,
-+ [2421] = 0x96f0, [2422] = 0x6587, [2423] = 0x805e, [2424] = 0x4e19,
-+ [2425] = 0x4f75, [2426] = 0x5175, [2427] = 0x5840, [2428] = 0x5e63,
-+ [2429] = 0x5e73, [2430] = 0x5f0a, [2431] = 0x67c4, [2432] = 0x4e26,
-+ [2433] = 0x853d, [2434] = 0x9589, [2435] = 0x965b, [2436] = 0x7c73,
-+ [2437] = 0x9801, [2438] = 0x50fb, [2439] = 0x58c1, [2440] = 0x7656,
-+ [2441] = 0x78a7, [2442] = 0x5225, [2443] = 0x77a5, [2444] = 0x8511,
-+ [2445] = 0x7b86, [2446] = 0x504f, [2447] = 0x5909, [2448] = 0x7247,
-+ [2449] = 0x7bc7, [2450] = 0x7de8, [2451] = 0x8fba, [2452] = 0x8fd4,
-+ [2453] = 0x904d, [2454] = 0x4fbf, [2455] = 0x52c9, [2456] = 0x5a29,
-+ [2457] = 0x5f01, [2458] = 0x97ad, [2459] = 0x4fdd, [2460] = 0x8217,
-+ [2461] = 0x92ea, [2462] = 0x5703, [2463] = 0x6355, [2464] = 0x6b69,
-+ [2465] = 0x752b, [2466] = 0x88dc, [2467] = 0x8f14, [2468] = 0x7a42,
-+ [2469] = 0x52df, [2470] = 0x5893, [2471] = 0x6155, [2472] = 0x620a,
-+ [2473] = 0x66ae, [2474] = 0x6bcd, [2475] = 0x7c3f, [2476] = 0x83e9,
-+ [2477] = 0x5023, [2478] = 0x4ff8, [2479] = 0x5305, [2480] = 0x5446,
-+ [2481] = 0x5831, [2482] = 0x5949, [2483] = 0x5b9d, [2484] = 0x5cf0,
-+ [2485] = 0x5cef, [2486] = 0x5d29, [2487] = 0x5e96, [2488] = 0x62b1,
-+ [2489] = 0x6367, [2490] = 0x653e, [2491] = 0x65b9, [2492] = 0x670b,
-+ [2496] = 0x6cd5, [2497] = 0x6ce1, [2498] = 0x70f9, [2499] = 0x7832,
-+ [2500] = 0x7e2b, [2501] = 0x80de, [2502] = 0x82b3, [2503] = 0x840c,
-+ [2504] = 0x84ec, [2505] = 0x8702, [2506] = 0x8912, [2507] = 0x8a2a,
-+ [2508] = 0x8c4a, [2509] = 0x90a6, [2510] = 0x92d2, [2511] = 0x98fd,
-+ [2512] = 0x9cf3, [2513] = 0x9d6c, [2514] = 0x4e4f, [2515] = 0x4ea1,
-+ [2516] = 0x508d, [2517] = 0x5256, [2518] = 0x574a, [2519] = 0x59a8,
-+ [2520] = 0x5e3d, [2521] = 0x5fd8, [2522] = 0x5fd9, [2523] = 0x623f,
-+ [2524] = 0x66b4, [2525] = 0x671b, [2526] = 0x67d0, [2527] = 0x68d2,
-+ [2528] = 0x5192, [2529] = 0x7d21, [2530] = 0x80aa, [2531] = 0x81a8,
-+ [2532] = 0x8b00, [2533] = 0x8c8c, [2534] = 0x8cbf, [2535] = 0x927e,
-+ [2536] = 0x9632, [2537] = 0x5420, [2538] = 0x982c, [2539] = 0x5317,
-+ [2540] = 0x50d5, [2541] = 0x535c, [2542] = 0x58a8, [2543] = 0x64b2,
-+ [2544] = 0x6734, [2545] = 0x7267, [2546] = 0x7766, [2547] = 0x7a46,
-+ [2548] = 0x91e6, [2549] = 0x52c3, [2550] = 0x6ca1, [2551] = 0x6b86,
-+ [2552] = 0x5800, [2553] = 0x5e4c, [2554] = 0x5954, [2555] = 0x672c,
-+ [2556] = 0x7ffb, [2557] = 0x51e1, [2558] = 0x76c6, [2560] = 0x6469,
-+ [2561] = 0x78e8, [2562] = 0x9b54, [2563] = 0x9ebb, [2564] = 0x57cb,
-+ [2565] = 0x59b9, [2566] = 0x6627, [2567] = 0x679a, [2568] = 0x6bce,
-+ [2569] = 0x54e9, [2570] = 0x69d9, [2571] = 0x5e55, [2572] = 0x819c,
-+ [2573] = 0x6795, [2574] = 0x9baa, [2575] = 0x67fe, [2576] = 0x9c52,
-+ [2577] = 0x685d, [2578] = 0x4ea6, [2579] = 0x4fe3, [2580] = 0x53c8,
-+ [2581] = 0x62b9, [2582] = 0x672b, [2583] = 0x6cab, [2584] = 0x8fc4,
-+ [2585] = 0x4fad, [2586] = 0x7e6d, [2587] = 0x9ebf, [2588] = 0x4e07,
-+ [2589] = 0x6162, [2590] = 0x6e80, [2591] = 0x6f2b, [2592] = 0x8513,
-+ [2593] = 0x5473, [2594] = 0x672a, [2595] = 0x9b45, [2596] = 0x5df3,
-+ [2597] = 0x7b95, [2598] = 0x5cac, [2599] = 0x5bc6, [2600] = 0x871c,
-+ [2601] = 0x6e4a, [2602] = 0x84d1, [2603] = 0x7a14, [2604] = 0x8108,
-+ [2605] = 0x5999, [2606] = 0x7c8d, [2607] = 0x6c11, [2608] = 0x7720,
-+ [2609] = 0x52d9, [2610] = 0x5922, [2611] = 0x7121, [2612] = 0x725f,
-+ [2613] = 0x77db, [2614] = 0x9727, [2615] = 0x9d61, [2616] = 0x690b,
-+ [2617] = 0x5a7f, [2618] = 0x5a18, [2619] = 0x51a5, [2620] = 0x540d,
-+ [2621] = 0x547d, [2622] = 0x660e, [2623] = 0x76df, [2624] = 0x8ff7,
-+ [2625] = 0x9298, [2626] = 0x9cf4, [2627] = 0x59ea, [2628] = 0x725d,
-+ [2629] = 0x6ec5, [2630] = 0x514d, [2631] = 0x68c9, [2632] = 0x7dbf,
-+ [2633] = 0x7dec, [2634] = 0x9762, [2635] = 0x9eba, [2636] = 0x6478,
-+ [2637] = 0x6a21, [2638] = 0x8302, [2639] = 0x5984, [2640] = 0x5b5f,
-+ [2641] = 0x6bdb, [2642] = 0x731b, [2643] = 0x76f2, [2644] = 0x7db2,
-+ [2645] = 0x8017, [2646] = 0x8499, [2647] = 0x5132, [2648] = 0x6728,
-+ [2649] = 0x9ed9, [2650] = 0x76ee, [2651] = 0x6762, [2652] = 0x52ff,
-+ [2653] = 0x9905, [2654] = 0x5c24, [2655] = 0x623b, [2656] = 0x7c7e,
-+ [2657] = 0x8cb0, [2658] = 0x554f, [2659] = 0x60b6, [2660] = 0x7d0b,
-+ [2661] = 0x9580, [2662] = 0x5301, [2663] = 0x4e5f, [2664] = 0x51b6,
-+ [2665] = 0x591c, [2666] = 0x723a, [2667] = 0x8036, [2668] = 0x91ce,
-+ [2669] = 0x5f25, [2670] = 0x77e2, [2671] = 0x5384, [2672] = 0x5f79,
-+ [2673] = 0x7d04, [2674] = 0x85ac, [2675] = 0x8a33, [2676] = 0x8e8d,
-+ [2677] = 0x9756, [2678] = 0x67f3, [2679] = 0x85ae, [2680] = 0x9453,
-+ [2681] = 0x6109, [2682] = 0x6108, [2683] = 0x6cb9, [2684] = 0x7652,
-+ [2688] = 0x8aed, [2689] = 0x8f38, [2690] = 0x552f, [2691] = 0x4f51,
-+ [2692] = 0x512a, [2693] = 0x52c7, [2694] = 0x53cb, [2695] = 0x5ba5,
-+ [2696] = 0x5e7d, [2697] = 0x60a0, [2698] = 0x6182, [2699] = 0x63d6,
-+ [2700] = 0x6709, [2701] = 0x67da, [2702] = 0x6e67, [2703] = 0x6d8c,
-+ [2704] = 0x7336, [2705] = 0x7337, [2706] = 0x7531, [2707] = 0x7950,
-+ [2708] = 0x88d5, [2709] = 0x8a98, [2710] = 0x904a, [2711] = 0x9091,
-+ [2712] = 0x90f5, [2713] = 0x96c4, [2714] = 0x878d, [2715] = 0x5915,
-+ [2716] = 0x4e88, [2717] = 0x4f59, [2718] = 0x4e0e, [2719] = 0x8a89,
-+ [2720] = 0x8f3f, [2721] = 0x9810, [2722] = 0x50ad, [2723] = 0x5e7c,
-+ [2724] = 0x5996, [2725] = 0x5bb9, [2726] = 0x5eb8, [2727] = 0x63da,
-+ [2728] = 0x63fa, [2729] = 0x64c1, [2730] = 0x66dc, [2731] = 0x694a,
-+ [2732] = 0x69d8, [2733] = 0x6d0b, [2734] = 0x6eb6, [2735] = 0x7194,
-+ [2736] = 0x7528, [2737] = 0x7aaf, [2738] = 0x7f8a, [2739] = 0x8000,
-+ [2740] = 0x8449, [2741] = 0x84c9, [2742] = 0x8981, [2743] = 0x8b21,
-+ [2744] = 0x8e0a, [2745] = 0x9065, [2746] = 0x967d, [2747] = 0x990a,
-+ [2748] = 0x617e, [2749] = 0x6291, [2750] = 0x6b32, [2752] = 0x6c83,
-+ [2753] = 0x6d74, [2754] = 0x7fcc, [2755] = 0x7ffc, [2756] = 0x6dc0,
-+ [2757] = 0x7f85, [2758] = 0x87ba, [2759] = 0x88f8, [2760] = 0x6765,
-+ [2761] = 0x83b1, [2762] = 0x983c, [2763] = 0x96f7, [2764] = 0x6d1b,
-+ [2765] = 0x7d61, [2766] = 0x843d, [2767] = 0x916a, [2768] = 0x4e71,
-+ [2769] = 0x5375, [2770] = 0x5d50, [2771] = 0x6b04, [2772] = 0x6feb,
-+ [2773] = 0x85cd, [2774] = 0x862d, [2775] = 0x89a7, [2776] = 0x5229,
-+ [2777] = 0x540f, [2778] = 0x5c65, [2779] = 0x674e, [2780] = 0x68a8,
-+ [2781] = 0x7406, [2782] = 0x7483, [2783] = 0x75e2, [2784] = 0x88cf,
-+ [2785] = 0x88e1, [2786] = 0x91cc, [2787] = 0x96e2, [2788] = 0x9678,
-+ [2789] = 0x5f8b, [2790] = 0x7387, [2791] = 0x7acb, [2792] = 0x844e,
-+ [2793] = 0x63a0, [2794] = 0x7565, [2795] = 0x5289, [2796] = 0x6d41,
-+ [2797] = 0x6e9c, [2798] = 0x7409, [2799] = 0x7559, [2800] = 0x786b,
-+ [2801] = 0x7c92, [2802] = 0x9686, [2803] = 0x7adc, [2804] = 0x9f8d,
-+ [2805] = 0x4fb6, [2806] = 0x616e, [2807] = 0x65c5, [2808] = 0x865c,
-+ [2809] = 0x4e86, [2810] = 0x4eae, [2811] = 0x50da, [2812] = 0x4e21,
-+ [2813] = 0x51cc, [2814] = 0x5bee, [2815] = 0x6599, [2816] = 0x6881,
-+ [2817] = 0x6dbc, [2818] = 0x731f, [2819] = 0x7642, [2820] = 0x77ad,
-+ [2821] = 0x7a1c, [2822] = 0x7ce7, [2823] = 0x826f, [2824] = 0x8ad2,
-+ [2825] = 0x907c, [2826] = 0x91cf, [2827] = 0x9675, [2828] = 0x9818,
-+ [2829] = 0x529b, [2830] = 0x7dd1, [2831] = 0x502b, [2832] = 0x5398,
-+ [2833] = 0x6797, [2834] = 0x6dcb, [2835] = 0x71d0, [2836] = 0x7433,
-+ [2837] = 0x81e8, [2838] = 0x8f2a, [2839] = 0x96a3, [2840] = 0x9c57,
-+ [2841] = 0x9e9f, [2842] = 0x7460, [2843] = 0x5841, [2844] = 0x6d99,
-+ [2845] = 0x7d2f, [2846] = 0x985e, [2847] = 0x4ee4, [2848] = 0x4f36,
-+ [2849] = 0x4f8b, [2850] = 0x51b7, [2851] = 0x52b1, [2852] = 0x5dba,
-+ [2853] = 0x601c, [2854] = 0x73b2, [2855] = 0x793c, [2856] = 0x82d3,
-+ [2857] = 0x9234, [2858] = 0x96b7, [2859] = 0x96f6, [2860] = 0x970a,
-+ [2861] = 0x9e97, [2862] = 0x9f62, [2863] = 0x66a6, [2864] = 0x6b74,
-+ [2865] = 0x5217, [2866] = 0x52a3, [2867] = 0x70c8, [2868] = 0x88c2,
-+ [2869] = 0x5ec9, [2870] = 0x604b, [2871] = 0x6190, [2872] = 0x6f23,
-+ [2873] = 0x7149, [2874] = 0x7c3e, [2875] = 0x7df4, [2876] = 0x806f,
-+ [2880] = 0x84ee, [2881] = 0x9023, [2882] = 0x932c, [2883] = 0x5442,
-+ [2884] = 0x9b6f, [2885] = 0x6ad3, [2886] = 0x7089, [2887] = 0x8cc2,
-+ [2888] = 0x8def, [2889] = 0x9732, [2890] = 0x52b4, [2891] = 0x5a41,
-+ [2892] = 0x5eca, [2893] = 0x5f04, [2894] = 0x6717, [2895] = 0x697c,
-+ [2896] = 0x6994, [2897] = 0x6d6a, [2898] = 0x6f0f, [2899] = 0x7262,
-+ [2900] = 0x72fc, [2901] = 0x7bed, [2902] = 0x8001, [2903] = 0x807e,
-+ [2904] = 0x874b, [2905] = 0x90ce, [2906] = 0x516d, [2907] = 0x9e93,
-+ [2908] = 0x7984, [2909] = 0x808b, [2910] = 0x9332, [2911] = 0x8ad6,
-+ [2912] = 0x502d, [2913] = 0x548c, [2914] = 0x8a71, [2915] = 0x6b6a,
-+ [2916] = 0x8cc4, [2917] = 0x8107, [2918] = 0x60d1, [2919] = 0x67a0,
-+ [2920] = 0x9df2, [2921] = 0x4e99, [2922] = 0x4e98, [2923] = 0x9c10,
-+ [2924] = 0x8a6b, [2925] = 0x85c1, [2926] = 0x8568, [2927] = 0x6900,
-+ [2928] = 0x6e7e, [2929] = 0x7897, [2930] = 0x8155, [2975] = 0x5f0c,
-+ [2976] = 0x4e10, [2977] = 0x4e15, [2978] = 0x4e2a, [2979] = 0x4e31,
-+ [2980] = 0x4e36, [2981] = 0x4e3c, [2982] = 0x4e3f, [2983] = 0x4e42,
-+ [2984] = 0x4e56, [2985] = 0x4e58, [2986] = 0x4e82, [2987] = 0x4e85,
-+ [2988] = 0x8c6b, [2989] = 0x4e8a, [2990] = 0x8212, [2991] = 0x5f0d,
-+ [2992] = 0x4e8e, [2993] = 0x4e9e, [2994] = 0x4e9f, [2995] = 0x4ea0,
-+ [2996] = 0x4ea2, [2997] = 0x4eb0, [2998] = 0x4eb3, [2999] = 0x4eb6,
-+ [3000] = 0x4ece, [3001] = 0x4ecd, [3002] = 0x4ec4, [3003] = 0x4ec6,
-+ [3004] = 0x4ec2, [3005] = 0x4ed7, [3006] = 0x4ede, [3007] = 0x4eed,
-+ [3008] = 0x4edf, [3009] = 0x4ef7, [3010] = 0x4f09, [3011] = 0x4f5a,
-+ [3012] = 0x4f30, [3013] = 0x4f5b, [3014] = 0x4f5d, [3015] = 0x4f57,
-+ [3016] = 0x4f47, [3017] = 0x4f76, [3018] = 0x4f88, [3019] = 0x4f8f,
-+ [3020] = 0x4f98, [3021] = 0x4f7b, [3022] = 0x4f69, [3023] = 0x4f70,
-+ [3024] = 0x4f91, [3025] = 0x4f6f, [3026] = 0x4f86, [3027] = 0x4f96,
-+ [3028] = 0x5118, [3029] = 0x4fd4, [3030] = 0x4fdf, [3031] = 0x4fce,
-+ [3032] = 0x4fd8, [3033] = 0x4fdb, [3034] = 0x4fd1, [3035] = 0x4fda,
-+ [3036] = 0x4fd0, [3037] = 0x4fe4, [3038] = 0x4fe5, [3039] = 0x501a,
-+ [3040] = 0x5028, [3041] = 0x5014, [3042] = 0x502a, [3043] = 0x5025,
-+ [3044] = 0x5005, [3045] = 0x4f1c, [3046] = 0x4ff6, [3047] = 0x5021,
-+ [3048] = 0x5029, [3049] = 0x502c, [3050] = 0x4ffe, [3051] = 0x4fef,
-+ [3052] = 0x5011, [3053] = 0x5006, [3054] = 0x5043, [3055] = 0x5047,
-+ [3056] = 0x6703, [3057] = 0x5055, [3058] = 0x5050, [3059] = 0x5048,
-+ [3060] = 0x505a, [3061] = 0x5056, [3062] = 0x506c, [3063] = 0x5078,
-+ [3064] = 0x5080, [3065] = 0x509a, [3066] = 0x5085, [3067] = 0x50b4,
-+ [3068] = 0x50b2, [3072] = 0x50c9, [3073] = 0x50ca, [3074] = 0x50b3,
-+ [3075] = 0x50c2, [3076] = 0x50d6, [3077] = 0x50de, [3078] = 0x50e5,
-+ [3079] = 0x50ed, [3080] = 0x50e3, [3081] = 0x50ee, [3082] = 0x50f9,
-+ [3083] = 0x50f5, [3084] = 0x5109, [3085] = 0x5101, [3086] = 0x5102,
-+ [3087] = 0x5116, [3088] = 0x5115, [3089] = 0x5114, [3090] = 0x511a,
-+ [3091] = 0x5121, [3092] = 0x513a, [3093] = 0x5137, [3094] = 0x513c,
-+ [3095] = 0x513b, [3096] = 0x513f, [3097] = 0x5140, [3098] = 0x5152,
-+ [3099] = 0x514c, [3100] = 0x5154, [3101] = 0x5162, [3102] = 0x7af8,
-+ [3103] = 0x5169, [3104] = 0x516a, [3105] = 0x516e, [3106] = 0x5180,
-+ [3107] = 0x5182, [3108] = 0x56d8, [3109] = 0x518c, [3110] = 0x5189,
-+ [3111] = 0x518f, [3112] = 0x5191, [3113] = 0x5193, [3114] = 0x5195,
-+ [3115] = 0x5196, [3116] = 0x51a4, [3117] = 0x51a6, [3118] = 0x51a2,
-+ [3119] = 0x51a9, [3120] = 0x51aa, [3121] = 0x51ab, [3122] = 0x51b3,
-+ [3123] = 0x51b1, [3124] = 0x51b2, [3125] = 0x51b0, [3126] = 0x51b5,
-+ [3127] = 0x51bd, [3128] = 0x51c5, [3129] = 0x51c9, [3130] = 0x51db,
-+ [3131] = 0x51e0, [3132] = 0x8655, [3133] = 0x51e9, [3134] = 0x51ed,
-+ [3136] = 0x51f0, [3137] = 0x51f5, [3138] = 0x51fe, [3139] = 0x5204,
-+ [3140] = 0x520b, [3141] = 0x5214, [3142] = 0x520e, [3143] = 0x5227,
-+ [3144] = 0x522a, [3145] = 0x522e, [3146] = 0x5233, [3147] = 0x5239,
-+ [3148] = 0x524f, [3149] = 0x5244, [3150] = 0x524b, [3151] = 0x524c,
-+ [3152] = 0x525e, [3153] = 0x5254, [3154] = 0x526a, [3155] = 0x5274,
-+ [3156] = 0x5269, [3157] = 0x5273, [3158] = 0x527f, [3159] = 0x527d,
-+ [3160] = 0x528d, [3161] = 0x5294, [3162] = 0x5292, [3163] = 0x5271,
-+ [3164] = 0x5288, [3165] = 0x5291, [3166] = 0x8fa8, [3167] = 0x8fa7,
-+ [3168] = 0x52ac, [3169] = 0x52ad, [3170] = 0x52bc, [3171] = 0x52b5,
-+ [3172] = 0x52c1, [3173] = 0x52cd, [3174] = 0x52d7, [3175] = 0x52de,
-+ [3176] = 0x52e3, [3177] = 0x52e6, [3178] = 0x98ed, [3179] = 0x52e0,
-+ [3180] = 0x52f3, [3181] = 0x52f5, [3182] = 0x52f8, [3183] = 0x52f9,
-+ [3184] = 0x5306, [3185] = 0x5308, [3186] = 0x7538, [3187] = 0x530d,
-+ [3188] = 0x5310, [3189] = 0x530f, [3190] = 0x5315, [3191] = 0x531a,
-+ [3192] = 0x5323, [3193] = 0x532f, [3194] = 0x5331, [3195] = 0x5333,
-+ [3196] = 0x5338, [3197] = 0x5340, [3198] = 0x5346, [3199] = 0x5345,
-+ [3200] = 0x4e17, [3201] = 0x5349, [3202] = 0x534d, [3203] = 0x51d6,
-+ [3204] = 0x535e, [3205] = 0x5369, [3206] = 0x536e, [3207] = 0x5918,
-+ [3208] = 0x537b, [3209] = 0x5377, [3210] = 0x5382, [3211] = 0x5396,
-+ [3212] = 0x53a0, [3213] = 0x53a6, [3214] = 0x53a5, [3215] = 0x53ae,
-+ [3216] = 0x53b0, [3217] = 0x53b6, [3218] = 0x53c3, [3219] = 0x7c12,
-+ [3220] = 0x96d9, [3221] = 0x53df, [3222] = 0x66fc, [3223] = 0x71ee,
-+ [3224] = 0x53ee, [3225] = 0x53e8, [3226] = 0x53ed, [3227] = 0x53fa,
-+ [3228] = 0x5401, [3229] = 0x543d, [3230] = 0x5440, [3231] = 0x542c,
-+ [3232] = 0x542d, [3233] = 0x543c, [3234] = 0x542e, [3235] = 0x5436,
-+ [3236] = 0x5429, [3237] = 0x541d, [3238] = 0x544e, [3239] = 0x548f,
-+ [3240] = 0x5475, [3241] = 0x548e, [3242] = 0x545f, [3243] = 0x5471,
-+ [3244] = 0x5477, [3245] = 0x5470, [3246] = 0x5492, [3247] = 0x547b,
-+ [3248] = 0x5480, [3249] = 0x5476, [3250] = 0x5484, [3251] = 0x5490,
-+ [3252] = 0x5486, [3253] = 0x54c7, [3254] = 0x54a2, [3255] = 0x54b8,
-+ [3256] = 0x54a5, [3257] = 0x54ac, [3258] = 0x54c4, [3259] = 0x54c8,
-+ [3260] = 0x54a8, [3264] = 0x54ab, [3265] = 0x54c2, [3266] = 0x54a4,
-+ [3267] = 0x54be, [3268] = 0x54bc, [3269] = 0x54d8, [3270] = 0x54e5,
-+ [3271] = 0x54e6, [3272] = 0x550f, [3273] = 0x5514, [3274] = 0x54fd,
-+ [3275] = 0x54ee, [3276] = 0x54ed, [3277] = 0x54fa, [3278] = 0x54e2,
-+ [3279] = 0x5539, [3280] = 0x5540, [3281] = 0x5563, [3282] = 0x554c,
-+ [3283] = 0x552e, [3284] = 0x555c, [3285] = 0x5545, [3286] = 0x5556,
-+ [3287] = 0x5557, [3288] = 0x5538, [3289] = 0x5533, [3290] = 0x555d,
-+ [3291] = 0x5599, [3292] = 0x5580, [3293] = 0x54af, [3294] = 0x558a,
-+ [3295] = 0x559f, [3296] = 0x557b, [3297] = 0x557e, [3298] = 0x5598,
-+ [3299] = 0x559e, [3300] = 0x55ae, [3301] = 0x557c, [3302] = 0x5583,
-+ [3303] = 0x55a9, [3304] = 0x5587, [3305] = 0x55a8, [3306] = 0x55da,
-+ [3307] = 0x55c5, [3308] = 0x55df, [3309] = 0x55c4, [3310] = 0x55dc,
-+ [3311] = 0x55e4, [3312] = 0x55d4, [3313] = 0x5614, [3314] = 0x55f7,
-+ [3315] = 0x5616, [3316] = 0x55fe, [3317] = 0x55fd, [3318] = 0x561b,
-+ [3319] = 0x55f9, [3320] = 0x564e, [3321] = 0x5650, [3322] = 0x71df,
-+ [3323] = 0x5634, [3324] = 0x5636, [3325] = 0x5632, [3326] = 0x5638,
-+ [3328] = 0x566b, [3329] = 0x5664, [3330] = 0x562f, [3331] = 0x566c,
-+ [3332] = 0x566a, [3333] = 0x5686, [3334] = 0x5680, [3335] = 0x568a,
-+ [3336] = 0x56a0, [3337] = 0x5694, [3338] = 0x568f, [3339] = 0x56a5,
-+ [3340] = 0x56ae, [3341] = 0x56b6, [3342] = 0x56b4, [3343] = 0x56c2,
-+ [3344] = 0x56bc, [3345] = 0x56c1, [3346] = 0x56c3, [3347] = 0x56c0,
-+ [3348] = 0x56c8, [3349] = 0x56ce, [3350] = 0x56d1, [3351] = 0x56d3,
-+ [3352] = 0x56d7, [3353] = 0x56ee, [3354] = 0x56f9, [3355] = 0x5700,
-+ [3356] = 0x56ff, [3357] = 0x5704, [3358] = 0x5709, [3359] = 0x5708,
-+ [3360] = 0x570b, [3361] = 0x570d, [3362] = 0x5713, [3363] = 0x5718,
-+ [3364] = 0x5716, [3365] = 0x55c7, [3366] = 0x571c, [3367] = 0x5726,
-+ [3368] = 0x5737, [3369] = 0x5738, [3370] = 0x574e, [3371] = 0x573b,
-+ [3372] = 0x5740, [3373] = 0x574f, [3374] = 0x5769, [3375] = 0x57c0,
-+ [3376] = 0x5788, [3377] = 0x5761, [3378] = 0x577f, [3379] = 0x5789,
-+ [3380] = 0x5793, [3381] = 0x57a0, [3382] = 0x57b3, [3383] = 0x57a4,
-+ [3384] = 0x57aa, [3385] = 0x57b0, [3386] = 0x57c3, [3387] = 0x57c6,
-+ [3388] = 0x57d4, [3389] = 0x57d2, [3390] = 0x57d3, [3391] = 0x580a,
-+ [3392] = 0x57d6, [3393] = 0x57e3, [3394] = 0x580b, [3395] = 0x5819,
-+ [3396] = 0x581d, [3397] = 0x5872, [3398] = 0x5821, [3399] = 0x5862,
-+ [3400] = 0x584b, [3401] = 0x5870, [3402] = 0x6bc0, [3403] = 0x5852,
-+ [3404] = 0x583d, [3405] = 0x5879, [3406] = 0x5885, [3407] = 0x58b9,
-+ [3408] = 0x589f, [3409] = 0x58ab, [3410] = 0x58ba, [3411] = 0x58de,
-+ [3412] = 0x58bb, [3413] = 0x58b8, [3414] = 0x58ae, [3415] = 0x58c5,
-+ [3416] = 0x58d3, [3417] = 0x58d1, [3418] = 0x58d7, [3419] = 0x58d9,
-+ [3420] = 0x58d8, [3421] = 0x58e5, [3422] = 0x58dc, [3423] = 0x58e4,
-+ [3424] = 0x58df, [3425] = 0x58ef, [3426] = 0x58fa, [3427] = 0x58f9,
-+ [3428] = 0x58fb, [3429] = 0x58fc, [3430] = 0x58fd, [3431] = 0x5902,
-+ [3432] = 0x590a, [3433] = 0x5910, [3434] = 0x591b, [3435] = 0x68a6,
-+ [3436] = 0x5925, [3437] = 0x592c, [3438] = 0x592d, [3439] = 0x5932,
-+ [3440] = 0x5938, [3441] = 0x593e, [3442] = 0x7ad2, [3443] = 0x5955,
-+ [3444] = 0x5950, [3445] = 0x594e, [3446] = 0x595a, [3447] = 0x5958,
-+ [3448] = 0x5962, [3449] = 0x5960, [3450] = 0x5967, [3451] = 0x596c,
-+ [3452] = 0x5969, [3456] = 0x5978, [3457] = 0x5981, [3458] = 0x599d,
-+ [3459] = 0x4f5e, [3460] = 0x4fab, [3461] = 0x59a3, [3462] = 0x59b2,
-+ [3463] = 0x59c6, [3464] = 0x59e8, [3465] = 0x59dc, [3466] = 0x598d,
-+ [3467] = 0x59d9, [3468] = 0x59da, [3469] = 0x5a25, [3470] = 0x5a1f,
-+ [3471] = 0x5a11, [3472] = 0x5a1c, [3473] = 0x5a09, [3474] = 0x5a1a,
-+ [3475] = 0x5a40, [3476] = 0x5a6c, [3477] = 0x5a49, [3478] = 0x5a35,
-+ [3479] = 0x5a36, [3480] = 0x5a62, [3481] = 0x5a6a, [3482] = 0x5a9a,
-+ [3483] = 0x5abc, [3484] = 0x5abe, [3485] = 0x5acb, [3486] = 0x5ac2,
-+ [3487] = 0x5abd, [3488] = 0x5ae3, [3489] = 0x5ad7, [3490] = 0x5ae6,
-+ [3491] = 0x5ae9, [3492] = 0x5ad6, [3493] = 0x5afa, [3494] = 0x5afb,
-+ [3495] = 0x5b0c, [3496] = 0x5b0b, [3497] = 0x5b16, [3498] = 0x5b32,
-+ [3499] = 0x5ad0, [3500] = 0x5b2a, [3501] = 0x5b36, [3502] = 0x5b3e,
-+ [3503] = 0x5b43, [3504] = 0x5b45, [3505] = 0x5b40, [3506] = 0x5b51,
-+ [3507] = 0x5b55, [3508] = 0x5b5a, [3509] = 0x5b5b, [3510] = 0x5b65,
-+ [3511] = 0x5b69, [3512] = 0x5b70, [3513] = 0x5b73, [3514] = 0x5b75,
-+ [3515] = 0x5b78, [3516] = 0x6588, [3517] = 0x5b7a, [3518] = 0x5b80,
-+ [3520] = 0x5b83, [3521] = 0x5ba6, [3522] = 0x5bb8, [3523] = 0x5bc3,
-+ [3524] = 0x5bc7, [3525] = 0x5bc9, [3526] = 0x5bd4, [3527] = 0x5bd0,
-+ [3528] = 0x5be4, [3529] = 0x5be6, [3530] = 0x5be2, [3531] = 0x5bde,
-+ [3532] = 0x5be5, [3533] = 0x5beb, [3534] = 0x5bf0, [3535] = 0x5bf6,
-+ [3536] = 0x5bf3, [3537] = 0x5c05, [3538] = 0x5c07, [3539] = 0x5c08,
-+ [3540] = 0x5c0d, [3541] = 0x5c13, [3542] = 0x5c20, [3543] = 0x5c22,
-+ [3544] = 0x5c28, [3545] = 0x5c38, [3546] = 0x5c39, [3547] = 0x5c41,
-+ [3548] = 0x5c46, [3549] = 0x5c4e, [3550] = 0x5c53, [3551] = 0x5c50,
-+ [3552] = 0x5c4f, [3553] = 0x5b71, [3554] = 0x5c6c, [3555] = 0x5c6e,
-+ [3556] = 0x4e62, [3557] = 0x5c76, [3558] = 0x5c79, [3559] = 0x5c8c,
-+ [3560] = 0x5c91, [3561] = 0x5c94, [3562] = 0x599b, [3563] = 0x5cab,
-+ [3564] = 0x5cbb, [3565] = 0x5cb6, [3566] = 0x5cbc, [3567] = 0x5cb7,
-+ [3568] = 0x5cc5, [3569] = 0x5cbe, [3570] = 0x5cc7, [3571] = 0x5cd9,
-+ [3572] = 0x5ce9, [3573] = 0x5cfd, [3574] = 0x5cfa, [3575] = 0x5ced,
-+ [3576] = 0x5d8c, [3577] = 0x5cea, [3578] = 0x5d0b, [3579] = 0x5d15,
-+ [3580] = 0x5d17, [3581] = 0x5d5c, [3582] = 0x5d1f, [3583] = 0x5d1b,
-+ [3584] = 0x5d11, [3585] = 0x5d14, [3586] = 0x5d22, [3587] = 0x5d1a,
-+ [3588] = 0x5d19, [3589] = 0x5d18, [3590] = 0x5d4c, [3591] = 0x5d52,
-+ [3592] = 0x5d4e, [3593] = 0x5d4b, [3594] = 0x5d6c, [3595] = 0x5d73,
-+ [3596] = 0x5d76, [3597] = 0x5d87, [3598] = 0x5d84, [3599] = 0x5d82,
-+ [3600] = 0x5da2, [3601] = 0x5d9d, [3602] = 0x5dac, [3603] = 0x5dae,
-+ [3604] = 0x5dbd, [3605] = 0x5d90, [3606] = 0x5db7, [3607] = 0x5dbc,
-+ [3608] = 0x5dc9, [3609] = 0x5dcd, [3610] = 0x5dd3, [3611] = 0x5dd2,
-+ [3612] = 0x5dd6, [3613] = 0x5ddb, [3614] = 0x5deb, [3615] = 0x5df2,
-+ [3616] = 0x5df5, [3617] = 0x5e0b, [3618] = 0x5e1a, [3619] = 0x5e19,
-+ [3620] = 0x5e11, [3621] = 0x5e1b, [3622] = 0x5e36, [3623] = 0x5e37,
-+ [3624] = 0x5e44, [3625] = 0x5e43, [3626] = 0x5e40, [3627] = 0x5e4e,
-+ [3628] = 0x5e57, [3629] = 0x5e54, [3630] = 0x5e5f, [3631] = 0x5e62,
-+ [3632] = 0x5e64, [3633] = 0x5e47, [3634] = 0x5e75, [3635] = 0x5e76,
-+ [3636] = 0x5e7a, [3637] = 0x9ebc, [3638] = 0x5e7f, [3639] = 0x5ea0,
-+ [3640] = 0x5ec1, [3641] = 0x5ec2, [3642] = 0x5ec8, [3643] = 0x5ed0,
-+ [3644] = 0x5ecf, [3648] = 0x5ed6, [3649] = 0x5ee3, [3650] = 0x5edd,
-+ [3651] = 0x5eda, [3652] = 0x5edb, [3653] = 0x5ee2, [3654] = 0x5ee1,
-+ [3655] = 0x5ee8, [3656] = 0x5ee9, [3657] = 0x5eec, [3658] = 0x5ef1,
-+ [3659] = 0x5ef3, [3660] = 0x5ef0, [3661] = 0x5ef4, [3662] = 0x5ef8,
-+ [3663] = 0x5efe, [3664] = 0x5f03, [3665] = 0x5f09, [3666] = 0x5f5d,
-+ [3667] = 0x5f5c, [3668] = 0x5f0b, [3669] = 0x5f11, [3670] = 0x5f16,
-+ [3671] = 0x5f29, [3672] = 0x5f2d, [3673] = 0x5f38, [3674] = 0x5f41,
-+ [3675] = 0x5f48, [3676] = 0x5f4c, [3677] = 0x5f4e, [3678] = 0x5f2f,
-+ [3679] = 0x5f51, [3680] = 0x5f56, [3681] = 0x5f57, [3682] = 0x5f59,
-+ [3683] = 0x5f61, [3684] = 0x5f6d, [3685] = 0x5f73, [3686] = 0x5f77,
-+ [3687] = 0x5f83, [3688] = 0x5f82, [3689] = 0x5f7f, [3690] = 0x5f8a,
-+ [3691] = 0x5f88, [3692] = 0x5f91, [3693] = 0x5f87, [3694] = 0x5f9e,
-+ [3695] = 0x5f99, [3696] = 0x5f98, [3697] = 0x5fa0, [3698] = 0x5fa8,
-+ [3699] = 0x5fad, [3700] = 0x5fbc, [3701] = 0x5fd6, [3702] = 0x5ffb,
-+ [3703] = 0x5fe4, [3704] = 0x5ff8, [3705] = 0x5ff1, [3706] = 0x5fdd,
-+ [3707] = 0x60b3, [3708] = 0x5fff, [3709] = 0x6021, [3710] = 0x6060,
-+ [3712] = 0x6019, [3713] = 0x6010, [3714] = 0x6029, [3715] = 0x600e,
-+ [3716] = 0x6031, [3717] = 0x601b, [3718] = 0x6015, [3719] = 0x602b,
-+ [3720] = 0x6026, [3721] = 0x600f, [3722] = 0x603a, [3723] = 0x605a,
-+ [3724] = 0x6041, [3725] = 0x606a, [3726] = 0x6077, [3727] = 0x605f,
-+ [3728] = 0x604a, [3729] = 0x6046, [3730] = 0x604d, [3731] = 0x6063,
-+ [3732] = 0x6043, [3733] = 0x6064, [3734] = 0x6042, [3735] = 0x606c,
-+ [3736] = 0x606b, [3737] = 0x6059, [3738] = 0x6081, [3739] = 0x608d,
-+ [3740] = 0x60e7, [3741] = 0x6083, [3742] = 0x609a, [3743] = 0x6084,
-+ [3744] = 0x609b, [3745] = 0x6096, [3746] = 0x6097, [3747] = 0x6092,
-+ [3748] = 0x60a7, [3749] = 0x608b, [3750] = 0x60e1, [3751] = 0x60b8,
-+ [3752] = 0x60e0, [3753] = 0x60d3, [3754] = 0x60b4, [3755] = 0x5ff0,
-+ [3756] = 0x60bd, [3757] = 0x60c6, [3758] = 0x60b5, [3759] = 0x60d8,
-+ [3760] = 0x614d, [3761] = 0x6115, [3762] = 0x6106, [3763] = 0x60f6,
-+ [3764] = 0x60f7, [3765] = 0x6100, [3766] = 0x60f4, [3767] = 0x60fa,
-+ [3768] = 0x6103, [3769] = 0x6121, [3770] = 0x60fb, [3771] = 0x60f1,
-+ [3772] = 0x610d, [3773] = 0x610e, [3774] = 0x6147, [3775] = 0x613e,
-+ [3776] = 0x6128, [3777] = 0x6127, [3778] = 0x614a, [3779] = 0x613f,
-+ [3780] = 0x613c, [3781] = 0x612c, [3782] = 0x6134, [3783] = 0x613d,
-+ [3784] = 0x6142, [3785] = 0x6144, [3786] = 0x6173, [3787] = 0x6177,
-+ [3788] = 0x6158, [3789] = 0x6159, [3790] = 0x615a, [3791] = 0x616b,
-+ [3792] = 0x6174, [3793] = 0x616f, [3794] = 0x6165, [3795] = 0x6171,
-+ [3796] = 0x615f, [3797] = 0x615d, [3798] = 0x6153, [3799] = 0x6175,
-+ [3800] = 0x6199, [3801] = 0x6196, [3802] = 0x6187, [3803] = 0x61ac,
-+ [3804] = 0x6194, [3805] = 0x619a, [3806] = 0x618a, [3807] = 0x6191,
-+ [3808] = 0x61ab, [3809] = 0x61ae, [3810] = 0x61cc, [3811] = 0x61ca,
-+ [3812] = 0x61c9, [3813] = 0x61f7, [3814] = 0x61c8, [3815] = 0x61c3,
-+ [3816] = 0x61c6, [3817] = 0x61ba, [3818] = 0x61cb, [3819] = 0x7f79,
-+ [3820] = 0x61cd, [3821] = 0x61e6, [3822] = 0x61e3, [3823] = 0x61f6,
-+ [3824] = 0x61fa, [3825] = 0x61f4, [3826] = 0x61ff, [3827] = 0x61fd,
-+ [3828] = 0x61fc, [3829] = 0x61fe, [3830] = 0x6200, [3831] = 0x6208,
-+ [3832] = 0x6209, [3833] = 0x620d, [3834] = 0x620c, [3835] = 0x6214,
-+ [3836] = 0x621b, [3840] = 0x621e, [3841] = 0x6221, [3842] = 0x622a,
-+ [3843] = 0x622e, [3844] = 0x6230, [3845] = 0x6232, [3846] = 0x6233,
-+ [3847] = 0x6241, [3848] = 0x624e, [3849] = 0x625e, [3850] = 0x6263,
-+ [3851] = 0x625b, [3852] = 0x6260, [3853] = 0x6268, [3854] = 0x627c,
-+ [3855] = 0x6282, [3856] = 0x6289, [3857] = 0x627e, [3858] = 0x6292,
-+ [3859] = 0x6293, [3860] = 0x6296, [3861] = 0x62d4, [3862] = 0x6283,
-+ [3863] = 0x6294, [3864] = 0x62d7, [3865] = 0x62d1, [3866] = 0x62bb,
-+ [3867] = 0x62cf, [3868] = 0x62ff, [3869] = 0x62c6, [3870] = 0x64d4,
-+ [3871] = 0x62c8, [3872] = 0x62dc, [3873] = 0x62cc, [3874] = 0x62ca,
-+ [3875] = 0x62c2, [3876] = 0x62c7, [3877] = 0x629b, [3878] = 0x62c9,
-+ [3879] = 0x630c, [3880] = 0x62ee, [3881] = 0x62f1, [3882] = 0x6327,
-+ [3883] = 0x6302, [3884] = 0x6308, [3885] = 0x62ef, [3886] = 0x62f5,
-+ [3887] = 0x6350, [3888] = 0x633e, [3889] = 0x634d, [3890] = 0x641c,
-+ [3891] = 0x634f, [3892] = 0x6396, [3893] = 0x638e, [3894] = 0x6380,
-+ [3895] = 0x63ab, [3896] = 0x6376, [3897] = 0x63a3, [3898] = 0x638f,
-+ [3899] = 0x6389, [3900] = 0x639f, [3901] = 0x63b5, [3902] = 0x636b,
-+ [3904] = 0x6369, [3905] = 0x63be, [3906] = 0x63e9, [3907] = 0x63c0,
-+ [3908] = 0x63c6, [3909] = 0x63e3, [3910] = 0x63c9, [3911] = 0x63d2,
-+ [3912] = 0x63f6, [3913] = 0x63c4, [3914] = 0x6416, [3915] = 0x6434,
-+ [3916] = 0x6406, [3917] = 0x6413, [3918] = 0x6426, [3919] = 0x6436,
-+ [3920] = 0x651d, [3921] = 0x6417, [3922] = 0x6428, [3923] = 0x640f,
-+ [3924] = 0x6467, [3925] = 0x646f, [3926] = 0x6476, [3927] = 0x644e,
-+ [3928] = 0x652a, [3929] = 0x6495, [3930] = 0x6493, [3931] = 0x64a5,
-+ [3932] = 0x64a9, [3933] = 0x6488, [3934] = 0x64bc, [3935] = 0x64da,
-+ [3936] = 0x64d2, [3937] = 0x64c5, [3938] = 0x64c7, [3939] = 0x64bb,
-+ [3940] = 0x64d8, [3941] = 0x64c2, [3942] = 0x64f1, [3943] = 0x64e7,
-+ [3944] = 0x8209, [3945] = 0x64e0, [3946] = 0x64e1, [3947] = 0x62ac,
-+ [3948] = 0x64e3, [3949] = 0x64ef, [3950] = 0x652c, [3951] = 0x64f6,
-+ [3952] = 0x64f4, [3953] = 0x64f2, [3954] = 0x64fa, [3955] = 0x6500,
-+ [3956] = 0x64fd, [3957] = 0x6518, [3958] = 0x651c, [3959] = 0x6505,
-+ [3960] = 0x6524, [3961] = 0x6523, [3962] = 0x652b, [3963] = 0x6534,
-+ [3964] = 0x6535, [3965] = 0x6537, [3966] = 0x6536, [3967] = 0x6538,
-+ [3968] = 0x754b, [3969] = 0x6548, [3970] = 0x6556, [3971] = 0x6555,
-+ [3972] = 0x654d, [3973] = 0x6558, [3974] = 0x655e, [3975] = 0x655d,
-+ [3976] = 0x6572, [3977] = 0x6578, [3978] = 0x6582, [3979] = 0x6583,
-+ [3980] = 0x8b8a, [3981] = 0x659b, [3982] = 0x659f, [3983] = 0x65ab,
-+ [3984] = 0x65b7, [3985] = 0x65c3, [3986] = 0x65c6, [3987] = 0x65c1,
-+ [3988] = 0x65c4, [3989] = 0x65cc, [3990] = 0x65d2, [3991] = 0x65db,
-+ [3992] = 0x65d9, [3993] = 0x65e0, [3994] = 0x65e1, [3995] = 0x65f1,
-+ [3996] = 0x6772, [3997] = 0x660a, [3998] = 0x6603, [3999] = 0x65fb,
-+ [4000] = 0x6773, [4001] = 0x6635, [4002] = 0x6636, [4003] = 0x6634,
-+ [4004] = 0x661c, [4005] = 0x664f, [4006] = 0x6644, [4007] = 0x6649,
-+ [4008] = 0x6641, [4009] = 0x665e, [4010] = 0x665d, [4011] = 0x6664,
-+ [4012] = 0x6667, [4013] = 0x6668, [4014] = 0x665f, [4015] = 0x6662,
-+ [4016] = 0x6670, [4017] = 0x6683, [4018] = 0x6688, [4019] = 0x668e,
-+ [4020] = 0x6689, [4021] = 0x6684, [4022] = 0x6698, [4023] = 0x669d,
-+ [4024] = 0x66c1, [4025] = 0x66b9, [4026] = 0x66c9, [4027] = 0x66be,
-+ [4028] = 0x66bc, [4032] = 0x66c4, [4033] = 0x66b8, [4034] = 0x66d6,
-+ [4035] = 0x66da, [4036] = 0x66e0, [4037] = 0x663f, [4038] = 0x66e6,
-+ [4039] = 0x66e9, [4040] = 0x66f0, [4041] = 0x66f5, [4042] = 0x66f7,
-+ [4043] = 0x670f, [4044] = 0x6716, [4045] = 0x671e, [4046] = 0x6726,
-+ [4047] = 0x6727, [4048] = 0x9738, [4049] = 0x672e, [4050] = 0x673f,
-+ [4051] = 0x6736, [4052] = 0x6741, [4053] = 0x6738, [4054] = 0x6737,
-+ [4055] = 0x6746, [4056] = 0x675e, [4057] = 0x6760, [4058] = 0x6759,
-+ [4059] = 0x6763, [4060] = 0x6764, [4061] = 0x6789, [4062] = 0x6770,
-+ [4063] = 0x67a9, [4064] = 0x677c, [4065] = 0x676a, [4066] = 0x678c,
-+ [4067] = 0x678b, [4068] = 0x67a6, [4069] = 0x67a1, [4070] = 0x6785,
-+ [4071] = 0x67b7, [4072] = 0x67ef, [4073] = 0x67b4, [4074] = 0x67ec,
-+ [4075] = 0x67b3, [4076] = 0x67e9, [4077] = 0x67b8, [4078] = 0x67e4,
-+ [4079] = 0x67de, [4080] = 0x67dd, [4081] = 0x67e2, [4082] = 0x67ee,
-+ [4083] = 0x67b9, [4084] = 0x67ce, [4085] = 0x67c6, [4086] = 0x67e7,
-+ [4087] = 0x6a9c, [4088] = 0x681e, [4089] = 0x6846, [4090] = 0x6829,
-+ [4091] = 0x6840, [4092] = 0x684d, [4093] = 0x6832, [4094] = 0x684e,
-+ [4096] = 0x68b3, [4097] = 0x682b, [4098] = 0x6859, [4099] = 0x6863,
-+ [4100] = 0x6877, [4101] = 0x687f, [4102] = 0x689f, [4103] = 0x688f,
-+ [4104] = 0x68ad, [4105] = 0x6894, [4106] = 0x689d, [4107] = 0x689b,
-+ [4108] = 0x6883, [4109] = 0x6aae, [4110] = 0x68b9, [4111] = 0x6874,
-+ [4112] = 0x68b5, [4113] = 0x68a0, [4114] = 0x68ba, [4115] = 0x690f,
-+ [4116] = 0x688d, [4117] = 0x687e, [4118] = 0x6901, [4119] = 0x68ca,
-+ [4120] = 0x6908, [4121] = 0x68d8, [4122] = 0x6922, [4123] = 0x6926,
-+ [4124] = 0x68e1, [4125] = 0x690c, [4126] = 0x68cd, [4127] = 0x68d4,
-+ [4128] = 0x68e7, [4129] = 0x68d5, [4130] = 0x6936, [4131] = 0x6912,
-+ [4132] = 0x6904, [4133] = 0x68d7, [4134] = 0x68e3, [4135] = 0x6925,
-+ [4136] = 0x68f9, [4137] = 0x68e0, [4138] = 0x68ef, [4139] = 0x6928,
-+ [4140] = 0x692a, [4141] = 0x691a, [4142] = 0x6923, [4143] = 0x6921,
-+ [4144] = 0x68c6, [4145] = 0x6979, [4146] = 0x6977, [4147] = 0x695c,
-+ [4148] = 0x6978, [4149] = 0x696b, [4150] = 0x6954, [4151] = 0x697e,
-+ [4152] = 0x696e, [4153] = 0x6939, [4154] = 0x6974, [4155] = 0x693d,
-+ [4156] = 0x6959, [4157] = 0x6930, [4158] = 0x6961, [4159] = 0x695e,
-+ [4160] = 0x695d, [4161] = 0x6981, [4162] = 0x696a, [4163] = 0x69b2,
-+ [4164] = 0x69ae, [4165] = 0x69d0, [4166] = 0x69bf, [4167] = 0x69c1,
-+ [4168] = 0x69d3, [4169] = 0x69be, [4170] = 0x69ce, [4171] = 0x5be8,
-+ [4172] = 0x69ca, [4173] = 0x69dd, [4174] = 0x69bb, [4175] = 0x69c3,
-+ [4176] = 0x69a7, [4177] = 0x6a2e, [4178] = 0x6991, [4179] = 0x69a0,
-+ [4180] = 0x699c, [4181] = 0x6995, [4182] = 0x69b4, [4183] = 0x69de,
-+ [4184] = 0x69e8, [4185] = 0x6a02, [4186] = 0x6a1b, [4187] = 0x69ff,
-+ [4188] = 0x6b0a, [4189] = 0x69f9, [4190] = 0x69f2, [4191] = 0x69e7,
-+ [4192] = 0x6a05, [4193] = 0x69b1, [4194] = 0x6a1e, [4195] = 0x69ed,
-+ [4196] = 0x6a14, [4197] = 0x69eb, [4198] = 0x6a0a, [4199] = 0x6a12,
-+ [4200] = 0x6ac1, [4201] = 0x6a23, [4202] = 0x6a13, [4203] = 0x6a44,
-+ [4204] = 0x6a0c, [4205] = 0x6a72, [4206] = 0x6a36, [4207] = 0x6a78,
-+ [4208] = 0x6a47, [4209] = 0x6a62, [4210] = 0x6a59, [4211] = 0x6a66,
-+ [4212] = 0x6a48, [4213] = 0x6a38, [4214] = 0x6a22, [4215] = 0x6a90,
-+ [4216] = 0x6a8d, [4217] = 0x6aa0, [4218] = 0x6a84, [4219] = 0x6aa2,
-+ [4220] = 0x6aa3, [4224] = 0x6a97, [4225] = 0x8617, [4226] = 0x6abb,
-+ [4227] = 0x6ac3, [4228] = 0x6ac2, [4229] = 0x6ab8, [4230] = 0x6ab3,
-+ [4231] = 0x6aac, [4232] = 0x6ade, [4233] = 0x6ad1, [4234] = 0x6adf,
-+ [4235] = 0x6aaa, [4236] = 0x6ada, [4237] = 0x6aea, [4238] = 0x6afb,
-+ [4239] = 0x6b05, [4240] = 0x8616, [4241] = 0x6afa, [4242] = 0x6b12,
-+ [4243] = 0x6b16, [4244] = 0x9b31, [4245] = 0x6b1f, [4246] = 0x6b38,
-+ [4247] = 0x6b37, [4248] = 0x76dc, [4249] = 0x6b39, [4250] = 0x98ee,
-+ [4251] = 0x6b47, [4252] = 0x6b43, [4253] = 0x6b49, [4254] = 0x6b50,
-+ [4255] = 0x6b59, [4256] = 0x6b54, [4257] = 0x6b5b, [4258] = 0x6b5f,
-+ [4259] = 0x6b61, [4260] = 0x6b78, [4261] = 0x6b79, [4262] = 0x6b7f,
-+ [4263] = 0x6b80, [4264] = 0x6b84, [4265] = 0x6b83, [4266] = 0x6b8d,
-+ [4267] = 0x6b98, [4268] = 0x6b95, [4269] = 0x6b9e, [4270] = 0x6ba4,
-+ [4271] = 0x6baa, [4272] = 0x6bab, [4273] = 0x6baf, [4274] = 0x6bb2,
-+ [4275] = 0x6bb1, [4276] = 0x6bb3, [4277] = 0x6bb7, [4278] = 0x6bbc,
-+ [4279] = 0x6bc6, [4280] = 0x6bcb, [4281] = 0x6bd3, [4282] = 0x6bdf,
-+ [4283] = 0x6bec, [4284] = 0x6beb, [4285] = 0x6bf3, [4286] = 0x6bef,
-+ [4288] = 0x9ebe, [4289] = 0x6c08, [4290] = 0x6c13, [4291] = 0x6c14,
-+ [4292] = 0x6c1b, [4293] = 0x6c24, [4294] = 0x6c23, [4295] = 0x6c5e,
-+ [4296] = 0x6c55, [4297] = 0x6c62, [4298] = 0x6c6a, [4299] = 0x6c82,
-+ [4300] = 0x6c8d, [4301] = 0x6c9a, [4302] = 0x6c81, [4303] = 0x6c9b,
-+ [4304] = 0x6c7e, [4305] = 0x6c68, [4306] = 0x6c73, [4307] = 0x6c92,
-+ [4308] = 0x6c90, [4309] = 0x6cc4, [4310] = 0x6cf1, [4311] = 0x6cd3,
-+ [4312] = 0x6cbd, [4313] = 0x6cd7, [4314] = 0x6cc5, [4315] = 0x6cdd,
-+ [4316] = 0x6cae, [4317] = 0x6cb1, [4318] = 0x6cbe, [4319] = 0x6cba,
-+ [4320] = 0x6cdb, [4321] = 0x6cef, [4322] = 0x6cd9, [4323] = 0x6cea,
-+ [4324] = 0x6d1f, [4325] = 0x884d, [4326] = 0x6d36, [4327] = 0x6d2b,
-+ [4328] = 0x6d3d, [4329] = 0x6d38, [4330] = 0x6d19, [4331] = 0x6d35,
-+ [4332] = 0x6d33, [4333] = 0x6d12, [4334] = 0x6d0c, [4335] = 0x6d63,
-+ [4336] = 0x6d93, [4337] = 0x6d64, [4338] = 0x6d5a, [4339] = 0x6d79,
-+ [4340] = 0x6d59, [4341] = 0x6d8e, [4342] = 0x6d95, [4343] = 0x6fe4,
-+ [4344] = 0x6d85, [4345] = 0x6df9, [4346] = 0x6e15, [4347] = 0x6e0a,
-+ [4348] = 0x6db5, [4349] = 0x6dc7, [4350] = 0x6de6, [4351] = 0x6db8,
-+ [4352] = 0x6dc6, [4353] = 0x6dec, [4354] = 0x6dde, [4355] = 0x6dcc,
-+ [4356] = 0x6de8, [4357] = 0x6dd2, [4358] = 0x6dc5, [4359] = 0x6dfa,
-+ [4360] = 0x6dd9, [4361] = 0x6de4, [4362] = 0x6dd5, [4363] = 0x6dea,
-+ [4364] = 0x6dee, [4365] = 0x6e2d, [4366] = 0x6e6e, [4367] = 0x6e2e,
-+ [4368] = 0x6e19, [4369] = 0x6e72, [4370] = 0x6e5f, [4371] = 0x6e3e,
-+ [4372] = 0x6e23, [4373] = 0x6e6b, [4374] = 0x6e2b, [4375] = 0x6e76,
-+ [4376] = 0x6e4d, [4377] = 0x6e1f, [4378] = 0x6e43, [4379] = 0x6e3a,
-+ [4380] = 0x6e4e, [4381] = 0x6e24, [4382] = 0x6eff, [4383] = 0x6e1d,
-+ [4384] = 0x6e38, [4385] = 0x6e82, [4386] = 0x6eaa, [4387] = 0x6e98,
-+ [4388] = 0x6ec9, [4389] = 0x6eb7, [4390] = 0x6ed3, [4391] = 0x6ebd,
-+ [4392] = 0x6eaf, [4393] = 0x6ec4, [4394] = 0x6eb2, [4395] = 0x6ed4,
-+ [4396] = 0x6ed5, [4397] = 0x6e8f, [4398] = 0x6ea5, [4399] = 0x6ec2,
-+ [4400] = 0x6e9f, [4401] = 0x6f41, [4402] = 0x6f11, [4403] = 0x704c,
-+ [4404] = 0x6eec, [4405] = 0x6ef8, [4406] = 0x6efe, [4407] = 0x6f3f,
-+ [4408] = 0x6ef2, [4409] = 0x6f31, [4410] = 0x6eef, [4411] = 0x6f32,
-+ [4412] = 0x6ecc
-+};
-+
-+static const uint16_t cjk_block5[2021] =
-+{
-+ /* start = 0xe040, end = 0xeaa4 */
-+ [ 0] = 0x6f3e, [ 1] = 0x6f13, [ 2] = 0x6ef7, [ 3] = 0x6f86,
-+ [ 4] = 0x6f7a, [ 5] = 0x6f78, [ 6] = 0x6f81, [ 7] = 0x6f80,
-+ [ 8] = 0x6f6f, [ 9] = 0x6f5b, [ 10] = 0x6ff3, [ 11] = 0x6f6d,
-+ [ 12] = 0x6f82, [ 13] = 0x6f7c, [ 14] = 0x6f58, [ 15] = 0x6f8e,
-+ [ 16] = 0x6f91, [ 17] = 0x6fc2, [ 18] = 0x6f66, [ 19] = 0x6fb3,
-+ [ 20] = 0x6fa3, [ 21] = 0x6fa1, [ 22] = 0x6fa4, [ 23] = 0x6fb9,
-+ [ 24] = 0x6fc6, [ 25] = 0x6faa, [ 26] = 0x6fdf, [ 27] = 0x6fd5,
-+ [ 28] = 0x6fec, [ 29] = 0x6fd4, [ 30] = 0x6fd8, [ 31] = 0x6ff1,
-+ [ 32] = 0x6fee, [ 33] = 0x6fdb, [ 34] = 0x7009, [ 35] = 0x700b,
-+ [ 36] = 0x6ffa, [ 37] = 0x7011, [ 38] = 0x7001, [ 39] = 0x700f,
-+ [ 40] = 0x6ffe, [ 41] = 0x701b, [ 42] = 0x701a, [ 43] = 0x6f74,
-+ [ 44] = 0x701d, [ 45] = 0x7018, [ 46] = 0x701f, [ 47] = 0x7030,
-+ [ 48] = 0x703e, [ 49] = 0x7032, [ 50] = 0x7051, [ 51] = 0x7063,
-+ [ 52] = 0x7099, [ 53] = 0x7092, [ 54] = 0x70af, [ 55] = 0x70f1,
-+ [ 56] = 0x70ac, [ 57] = 0x70b8, [ 58] = 0x70b3, [ 59] = 0x70ae,
-+ [ 60] = 0x70df, [ 61] = 0x70cb, [ 62] = 0x70dd, [ 64] = 0x70d9,
-+ [ 65] = 0x7109, [ 66] = 0x70fd, [ 67] = 0x711c, [ 68] = 0x7119,
-+ [ 69] = 0x7165, [ 70] = 0x7155, [ 71] = 0x7188, [ 72] = 0x7166,
-+ [ 73] = 0x7162, [ 74] = 0x714c, [ 75] = 0x7156, [ 76] = 0x716c,
-+ [ 77] = 0x718f, [ 78] = 0x71fb, [ 79] = 0x7184, [ 80] = 0x7195,
-+ [ 81] = 0x71a8, [ 82] = 0x71ac, [ 83] = 0x71d7, [ 84] = 0x71b9,
-+ [ 85] = 0x71be, [ 86] = 0x71d2, [ 87] = 0x71c9, [ 88] = 0x71d4,
-+ [ 89] = 0x71ce, [ 90] = 0x71e0, [ 91] = 0x71ec, [ 92] = 0x71e7,
-+ [ 93] = 0x71f5, [ 94] = 0x71fc, [ 95] = 0x71f9, [ 96] = 0x71ff,
-+ [ 97] = 0x720d, [ 98] = 0x7210, [ 99] = 0x721b, [ 100] = 0x7228,
-+ [ 101] = 0x722d, [ 102] = 0x722c, [ 103] = 0x7230, [ 104] = 0x7232,
-+ [ 105] = 0x723b, [ 106] = 0x723c, [ 107] = 0x723f, [ 108] = 0x7240,
-+ [ 109] = 0x7246, [ 110] = 0x724b, [ 111] = 0x7258, [ 112] = 0x7274,
-+ [ 113] = 0x727e, [ 114] = 0x7282, [ 115] = 0x7281, [ 116] = 0x7287,
-+ [ 117] = 0x7292, [ 118] = 0x7296, [ 119] = 0x72a2, [ 120] = 0x72a7,
-+ [ 121] = 0x72b9, [ 122] = 0x72b2, [ 123] = 0x72c3, [ 124] = 0x72c6,
-+ [ 125] = 0x72c4, [ 126] = 0x72ce, [ 127] = 0x72d2, [ 128] = 0x72e2,
-+ [ 129] = 0x72e0, [ 130] = 0x72e1, [ 131] = 0x72f9, [ 132] = 0x72f7,
-+ [ 133] = 0x500f, [ 134] = 0x7317, [ 135] = 0x730a, [ 136] = 0x731c,
-+ [ 137] = 0x7316, [ 138] = 0x731d, [ 139] = 0x7334, [ 140] = 0x732f,
-+ [ 141] = 0x7329, [ 142] = 0x7325, [ 143] = 0x733e, [ 144] = 0x734e,
-+ [ 145] = 0x734f, [ 146] = 0x9ed8, [ 147] = 0x7357, [ 148] = 0x736a,
-+ [ 149] = 0x7368, [ 150] = 0x7370, [ 151] = 0x7378, [ 152] = 0x7375,
-+ [ 153] = 0x737b, [ 154] = 0x737a, [ 155] = 0x73c8, [ 156] = 0x73b3,
-+ [ 157] = 0x73ce, [ 158] = 0x73bb, [ 159] = 0x73c0, [ 160] = 0x73e5,
-+ [ 161] = 0x73ee, [ 162] = 0x73de, [ 163] = 0x74a2, [ 164] = 0x7405,
-+ [ 165] = 0x746f, [ 166] = 0x7425, [ 167] = 0x73f8, [ 168] = 0x7432,
-+ [ 169] = 0x743a, [ 170] = 0x7455, [ 171] = 0x743f, [ 172] = 0x745f,
-+ [ 173] = 0x7459, [ 174] = 0x7441, [ 175] = 0x745c, [ 176] = 0x7469,
-+ [ 177] = 0x7470, [ 178] = 0x7463, [ 179] = 0x746a, [ 180] = 0x7476,
-+ [ 181] = 0x747e, [ 182] = 0x748b, [ 183] = 0x749e, [ 184] = 0x74a7,
-+ [ 185] = 0x74ca, [ 186] = 0x74cf, [ 187] = 0x74d4, [ 188] = 0x73f1,
-+ [ 192] = 0x74e0, [ 193] = 0x74e3, [ 194] = 0x74e7, [ 195] = 0x74e9,
-+ [ 196] = 0x74ee, [ 197] = 0x74f2, [ 198] = 0x74f0, [ 199] = 0x74f1,
-+ [ 200] = 0x74f8, [ 201] = 0x74f7, [ 202] = 0x7504, [ 203] = 0x7503,
-+ [ 204] = 0x7505, [ 205] = 0x750c, [ 206] = 0x750e, [ 207] = 0x750d,
-+ [ 208] = 0x7515, [ 209] = 0x7513, [ 210] = 0x751e, [ 211] = 0x7526,
-+ [ 212] = 0x752c, [ 213] = 0x753c, [ 214] = 0x7544, [ 215] = 0x754d,
-+ [ 216] = 0x754a, [ 217] = 0x7549, [ 218] = 0x755b, [ 219] = 0x7546,
-+ [ 220] = 0x755a, [ 221] = 0x7569, [ 222] = 0x7564, [ 223] = 0x7567,
-+ [ 224] = 0x756b, [ 225] = 0x756d, [ 226] = 0x7578, [ 227] = 0x7576,
-+ [ 228] = 0x7586, [ 229] = 0x7587, [ 230] = 0x7574, [ 231] = 0x758a,
-+ [ 232] = 0x7589, [ 233] = 0x7582, [ 234] = 0x7594, [ 235] = 0x759a,
-+ [ 236] = 0x759d, [ 237] = 0x75a5, [ 238] = 0x75a3, [ 239] = 0x75c2,
-+ [ 240] = 0x75b3, [ 241] = 0x75c3, [ 242] = 0x75b5, [ 243] = 0x75bd,
-+ [ 244] = 0x75b8, [ 245] = 0x75bc, [ 246] = 0x75b1, [ 247] = 0x75cd,
-+ [ 248] = 0x75ca, [ 249] = 0x75d2, [ 250] = 0x75d9, [ 251] = 0x75e3,
-+ [ 252] = 0x75de, [ 253] = 0x75fe, [ 254] = 0x75ff, [ 256] = 0x75fc,
-+ [ 257] = 0x7601, [ 258] = 0x75f0, [ 259] = 0x75fa, [ 260] = 0x75f2,
-+ [ 261] = 0x75f3, [ 262] = 0x760b, [ 263] = 0x760d, [ 264] = 0x7609,
-+ [ 265] = 0x761f, [ 266] = 0x7627, [ 267] = 0x7620, [ 268] = 0x7621,
-+ [ 269] = 0x7622, [ 270] = 0x7624, [ 271] = 0x7634, [ 272] = 0x7630,
-+ [ 273] = 0x763b, [ 274] = 0x7647, [ 275] = 0x7648, [ 276] = 0x7646,
-+ [ 277] = 0x765c, [ 278] = 0x7658, [ 279] = 0x7661, [ 280] = 0x7662,
-+ [ 281] = 0x7668, [ 282] = 0x7669, [ 283] = 0x766a, [ 284] = 0x7667,
-+ [ 285] = 0x766c, [ 286] = 0x7670, [ 287] = 0x7672, [ 288] = 0x7676,
-+ [ 289] = 0x7678, [ 290] = 0x767c, [ 291] = 0x7680, [ 292] = 0x7683,
-+ [ 293] = 0x7688, [ 294] = 0x768b, [ 295] = 0x768e, [ 296] = 0x7696,
-+ [ 297] = 0x7693, [ 298] = 0x7699, [ 299] = 0x769a, [ 300] = 0x76b0,
-+ [ 301] = 0x76b4, [ 302] = 0x76b8, [ 303] = 0x76b9, [ 304] = 0x76ba,
-+ [ 305] = 0x76c2, [ 306] = 0x76cd, [ 307] = 0x76d6, [ 308] = 0x76d2,
-+ [ 309] = 0x76de, [ 310] = 0x76e1, [ 311] = 0x76e5, [ 312] = 0x76e7,
-+ [ 313] = 0x76ea, [ 314] = 0x862f, [ 315] = 0x76fb, [ 316] = 0x7708,
-+ [ 317] = 0x7707, [ 318] = 0x7704, [ 319] = 0x7729, [ 320] = 0x7724,
-+ [ 321] = 0x771e, [ 322] = 0x7725, [ 323] = 0x7726, [ 324] = 0x771b,
-+ [ 325] = 0x7737, [ 326] = 0x7738, [ 327] = 0x7747, [ 328] = 0x775a,
-+ [ 329] = 0x7768, [ 330] = 0x776b, [ 331] = 0x775b, [ 332] = 0x7765,
-+ [ 333] = 0x777f, [ 334] = 0x777e, [ 335] = 0x7779, [ 336] = 0x778e,
-+ [ 337] = 0x778b, [ 338] = 0x7791, [ 339] = 0x77a0, [ 340] = 0x779e,
-+ [ 341] = 0x77b0, [ 342] = 0x77b6, [ 343] = 0x77b9, [ 344] = 0x77bf,
-+ [ 345] = 0x77bc, [ 346] = 0x77bd, [ 347] = 0x77bb, [ 348] = 0x77c7,
-+ [ 349] = 0x77cd, [ 350] = 0x77d7, [ 351] = 0x77da, [ 352] = 0x77dc,
-+ [ 353] = 0x77e3, [ 354] = 0x77ee, [ 355] = 0x77fc, [ 356] = 0x780c,
-+ [ 357] = 0x7812, [ 358] = 0x7926, [ 359] = 0x7820, [ 360] = 0x792a,
-+ [ 361] = 0x7845, [ 362] = 0x788e, [ 363] = 0x7874, [ 364] = 0x7886,
-+ [ 365] = 0x787c, [ 366] = 0x789a, [ 367] = 0x788c, [ 368] = 0x78a3,
-+ [ 369] = 0x78b5, [ 370] = 0x78aa, [ 371] = 0x78af, [ 372] = 0x78d1,
-+ [ 373] = 0x78c6, [ 374] = 0x78cb, [ 375] = 0x78d4, [ 376] = 0x78be,
-+ [ 377] = 0x78bc, [ 378] = 0x78c5, [ 379] = 0x78ca, [ 380] = 0x78ec,
-+ [ 384] = 0x78e7, [ 385] = 0x78da, [ 386] = 0x78fd, [ 387] = 0x78f4,
-+ [ 388] = 0x7907, [ 389] = 0x7912, [ 390] = 0x7911, [ 391] = 0x7919,
-+ [ 392] = 0x792c, [ 393] = 0x792b, [ 394] = 0x7940, [ 395] = 0x7960,
-+ [ 396] = 0x7957, [ 397] = 0x795f, [ 398] = 0x795a, [ 399] = 0x7955,
-+ [ 400] = 0x7953, [ 401] = 0x797a, [ 402] = 0x797f, [ 403] = 0x798a,
-+ [ 404] = 0x799d, [ 405] = 0x79a7, [ 406] = 0x9f4b, [ 407] = 0x79aa,
-+ [ 408] = 0x79ae, [ 409] = 0x79b3, [ 410] = 0x79b9, [ 411] = 0x79ba,
-+ [ 412] = 0x79c9, [ 413] = 0x79d5, [ 414] = 0x79e7, [ 415] = 0x79ec,
-+ [ 416] = 0x79e1, [ 417] = 0x79e3, [ 418] = 0x7a08, [ 419] = 0x7a0d,
-+ [ 420] = 0x7a18, [ 421] = 0x7a19, [ 422] = 0x7a20, [ 423] = 0x7a1f,
-+ [ 424] = 0x7980, [ 425] = 0x7a31, [ 426] = 0x7a3b, [ 427] = 0x7a3e,
-+ [ 428] = 0x7a37, [ 429] = 0x7a43, [ 430] = 0x7a57, [ 431] = 0x7a49,
-+ [ 432] = 0x7a61, [ 433] = 0x7a62, [ 434] = 0x7a69, [ 435] = 0x9f9d,
-+ [ 436] = 0x7a70, [ 437] = 0x7a79, [ 438] = 0x7a7d, [ 439] = 0x7a88,
-+ [ 440] = 0x7a97, [ 441] = 0x7a95, [ 442] = 0x7a98, [ 443] = 0x7a96,
-+ [ 444] = 0x7aa9, [ 445] = 0x7ac8, [ 446] = 0x7ab0, [ 448] = 0x7ab6,
-+ [ 449] = 0x7ac5, [ 450] = 0x7ac4, [ 451] = 0x7abf, [ 452] = 0x9083,
-+ [ 453] = 0x7ac7, [ 454] = 0x7aca, [ 455] = 0x7acd, [ 456] = 0x7acf,
-+ [ 457] = 0x7ad5, [ 458] = 0x7ad3, [ 459] = 0x7ad9, [ 460] = 0x7ada,
-+ [ 461] = 0x7add, [ 462] = 0x7ae1, [ 463] = 0x7ae2, [ 464] = 0x7ae6,
-+ [ 465] = 0x7aed, [ 466] = 0x7af0, [ 467] = 0x7b02, [ 468] = 0x7b0f,
-+ [ 469] = 0x7b0a, [ 470] = 0x7b06, [ 471] = 0x7b33, [ 472] = 0x7b18,
-+ [ 473] = 0x7b19, [ 474] = 0x7b1e, [ 475] = 0x7b35, [ 476] = 0x7b28,
-+ [ 477] = 0x7b36, [ 478] = 0x7b50, [ 479] = 0x7b7a, [ 480] = 0x7b04,
-+ [ 481] = 0x7b4d, [ 482] = 0x7b0b, [ 483] = 0x7b4c, [ 484] = 0x7b45,
-+ [ 485] = 0x7b75, [ 486] = 0x7b65, [ 487] = 0x7b74, [ 488] = 0x7b67,
-+ [ 489] = 0x7b70, [ 490] = 0x7b71, [ 491] = 0x7b6c, [ 492] = 0x7b6e,
-+ [ 493] = 0x7b9d, [ 494] = 0x7b98, [ 495] = 0x7b9f, [ 496] = 0x7b8d,
-+ [ 497] = 0x7b9c, [ 498] = 0x7b9a, [ 499] = 0x7b8b, [ 500] = 0x7b92,
-+ [ 501] = 0x7b8f, [ 502] = 0x7b5d, [ 503] = 0x7b99, [ 504] = 0x7bcb,
-+ [ 505] = 0x7bc1, [ 506] = 0x7bcc, [ 507] = 0x7bcf, [ 508] = 0x7bb4,
-+ [ 509] = 0x7bc6, [ 510] = 0x7bdd, [ 511] = 0x7be9, [ 512] = 0x7c11,
-+ [ 513] = 0x7c14, [ 514] = 0x7be6, [ 515] = 0x7be5, [ 516] = 0x7c60,
-+ [ 517] = 0x7c00, [ 518] = 0x7c07, [ 519] = 0x7c13, [ 520] = 0x7bf3,
-+ [ 521] = 0x7bf7, [ 522] = 0x7c17, [ 523] = 0x7c0d, [ 524] = 0x7bf6,
-+ [ 525] = 0x7c23, [ 526] = 0x7c27, [ 527] = 0x7c2a, [ 528] = 0x7c1f,
-+ [ 529] = 0x7c37, [ 530] = 0x7c2b, [ 531] = 0x7c3d, [ 532] = 0x7c4c,
-+ [ 533] = 0x7c43, [ 534] = 0x7c54, [ 535] = 0x7c4f, [ 536] = 0x7c40,
-+ [ 537] = 0x7c50, [ 538] = 0x7c58, [ 539] = 0x7c5f, [ 540] = 0x7c64,
-+ [ 541] = 0x7c56, [ 542] = 0x7c65, [ 543] = 0x7c6c, [ 544] = 0x7c75,
-+ [ 545] = 0x7c83, [ 546] = 0x7c90, [ 547] = 0x7ca4, [ 548] = 0x7cad,
-+ [ 549] = 0x7ca2, [ 550] = 0x7cab, [ 551] = 0x7ca1, [ 552] = 0x7ca8,
-+ [ 553] = 0x7cb3, [ 554] = 0x7cb2, [ 555] = 0x7cb1, [ 556] = 0x7cae,
-+ [ 557] = 0x7cb9, [ 558] = 0x7cbd, [ 559] = 0x7cc0, [ 560] = 0x7cc5,
-+ [ 561] = 0x7cc2, [ 562] = 0x7cd8, [ 563] = 0x7cd2, [ 564] = 0x7cdc,
-+ [ 565] = 0x7ce2, [ 566] = 0x9b3b, [ 567] = 0x7cef, [ 568] = 0x7cf2,
-+ [ 569] = 0x7cf4, [ 570] = 0x7cf6, [ 571] = 0x7cfa, [ 572] = 0x7d06,
-+ [ 576] = 0x7d02, [ 577] = 0x7d1c, [ 578] = 0x7d15, [ 579] = 0x7d0a,
-+ [ 580] = 0x7d45, [ 581] = 0x7d4b, [ 582] = 0x7d2e, [ 583] = 0x7d32,
-+ [ 584] = 0x7d3f, [ 585] = 0x7d35, [ 586] = 0x7d46, [ 587] = 0x7d73,
-+ [ 588] = 0x7d56, [ 589] = 0x7d4e, [ 590] = 0x7d72, [ 591] = 0x7d68,
-+ [ 592] = 0x7d6e, [ 593] = 0x7d4f, [ 594] = 0x7d63, [ 595] = 0x7d93,
-+ [ 596] = 0x7d89, [ 597] = 0x7d5b, [ 598] = 0x7d8f, [ 599] = 0x7d7d,
-+ [ 600] = 0x7d9b, [ 601] = 0x7dba, [ 602] = 0x7dae, [ 603] = 0x7da3,
-+ [ 604] = 0x7db5, [ 605] = 0x7dc7, [ 606] = 0x7dbd, [ 607] = 0x7dab,
-+ [ 608] = 0x7e3d, [ 609] = 0x7da2, [ 610] = 0x7daf, [ 611] = 0x7ddc,
-+ [ 612] = 0x7db8, [ 613] = 0x7d9f, [ 614] = 0x7db0, [ 615] = 0x7dd8,
-+ [ 616] = 0x7ddd, [ 617] = 0x7de4, [ 618] = 0x7dde, [ 619] = 0x7dfb,
-+ [ 620] = 0x7df2, [ 621] = 0x7de1, [ 622] = 0x7e05, [ 623] = 0x7e0a,
-+ [ 624] = 0x7e23, [ 625] = 0x7e21, [ 626] = 0x7e12, [ 627] = 0x7e31,
-+ [ 628] = 0x7e1f, [ 629] = 0x7e09, [ 630] = 0x7e0b, [ 631] = 0x7e22,
-+ [ 632] = 0x7e46, [ 633] = 0x7e66, [ 634] = 0x7e3b, [ 635] = 0x7e35,
-+ [ 636] = 0x7e39, [ 637] = 0x7e43, [ 638] = 0x7e37, [ 640] = 0x7e32,
-+ [ 641] = 0x7e3a, [ 642] = 0x7e67, [ 643] = 0x7e5d, [ 644] = 0x7e56,
-+ [ 645] = 0x7e5e, [ 646] = 0x7e59, [ 647] = 0x7e5a, [ 648] = 0x7e79,
-+ [ 649] = 0x7e6a, [ 650] = 0x7e69, [ 651] = 0x7e7c, [ 652] = 0x7e7b,
-+ [ 653] = 0x7e83, [ 654] = 0x7dd5, [ 655] = 0x7e7d, [ 656] = 0x8fae,
-+ [ 657] = 0x7e7f, [ 658] = 0x7e88, [ 659] = 0x7e89, [ 660] = 0x7e8c,
-+ [ 661] = 0x7e92, [ 662] = 0x7e90, [ 663] = 0x7e93, [ 664] = 0x7e94,
-+ [ 665] = 0x7e96, [ 666] = 0x7e8e, [ 667] = 0x7e9b, [ 668] = 0x7e9c,
-+ [ 669] = 0x7f38, [ 670] = 0x7f3a, [ 671] = 0x7f45, [ 672] = 0x7f4c,
-+ [ 673] = 0x7f4d, [ 674] = 0x7f4e, [ 675] = 0x7f50, [ 676] = 0x7f51,
-+ [ 677] = 0x7f55, [ 678] = 0x7f54, [ 679] = 0x7f58, [ 680] = 0x7f5f,
-+ [ 681] = 0x7f60, [ 682] = 0x7f68, [ 683] = 0x7f69, [ 684] = 0x7f67,
-+ [ 685] = 0x7f78, [ 686] = 0x7f82, [ 687] = 0x7f86, [ 688] = 0x7f83,
-+ [ 689] = 0x7f88, [ 690] = 0x7f87, [ 691] = 0x7f8c, [ 692] = 0x7f94,
-+ [ 693] = 0x7f9e, [ 694] = 0x7f9d, [ 695] = 0x7f9a, [ 696] = 0x7fa3,
-+ [ 697] = 0x7faf, [ 698] = 0x7fb2, [ 699] = 0x7fb9, [ 700] = 0x7fae,
-+ [ 701] = 0x7fb6, [ 702] = 0x7fb8, [ 703] = 0x8b71, [ 704] = 0x7fc5,
-+ [ 705] = 0x7fc6, [ 706] = 0x7fca, [ 707] = 0x7fd5, [ 708] = 0x7fd4,
-+ [ 709] = 0x7fe1, [ 710] = 0x7fe6, [ 711] = 0x7fe9, [ 712] = 0x7ff3,
-+ [ 713] = 0x7ff9, [ 714] = 0x98dc, [ 715] = 0x8006, [ 716] = 0x8004,
-+ [ 717] = 0x800b, [ 718] = 0x8012, [ 719] = 0x8018, [ 720] = 0x8019,
-+ [ 721] = 0x801c, [ 722] = 0x8021, [ 723] = 0x8028, [ 724] = 0x803f,
-+ [ 725] = 0x803b, [ 726] = 0x804a, [ 727] = 0x8046, [ 728] = 0x8052,
-+ [ 729] = 0x8058, [ 730] = 0x805a, [ 731] = 0x805f, [ 732] = 0x8062,
-+ [ 733] = 0x8068, [ 734] = 0x8073, [ 735] = 0x8072, [ 736] = 0x8070,
-+ [ 737] = 0x8076, [ 738] = 0x8079, [ 739] = 0x807d, [ 740] = 0x807f,
-+ [ 741] = 0x8084, [ 742] = 0x8086, [ 743] = 0x8085, [ 744] = 0x809b,
-+ [ 745] = 0x8093, [ 746] = 0x809a, [ 747] = 0x80ad, [ 748] = 0x5190,
-+ [ 749] = 0x80ac, [ 750] = 0x80db, [ 751] = 0x80e5, [ 752] = 0x80d9,
-+ [ 753] = 0x80dd, [ 754] = 0x80c4, [ 755] = 0x80da, [ 756] = 0x80d6,
-+ [ 757] = 0x8109, [ 758] = 0x80ef, [ 759] = 0x80f1, [ 760] = 0x811b,
-+ [ 761] = 0x8129, [ 762] = 0x8123, [ 763] = 0x812f, [ 764] = 0x814b,
-+ [ 768] = 0x968b, [ 769] = 0x8146, [ 770] = 0x813e, [ 771] = 0x8153,
-+ [ 772] = 0x8151, [ 773] = 0x80fc, [ 774] = 0x8171, [ 775] = 0x816e,
-+ [ 776] = 0x8165, [ 777] = 0x8166, [ 778] = 0x8174, [ 779] = 0x8183,
-+ [ 780] = 0x8188, [ 781] = 0x818a, [ 782] = 0x8180, [ 783] = 0x8182,
-+ [ 784] = 0x81a0, [ 785] = 0x8195, [ 786] = 0x81a4, [ 787] = 0x81a3,
-+ [ 788] = 0x815f, [ 789] = 0x8193, [ 790] = 0x81a9, [ 791] = 0x81b0,
-+ [ 792] = 0x81b5, [ 793] = 0x81be, [ 794] = 0x81b8, [ 795] = 0x81bd,
-+ [ 796] = 0x81c0, [ 797] = 0x81c2, [ 798] = 0x81ba, [ 799] = 0x81c9,
-+ [ 800] = 0x81cd, [ 801] = 0x81d1, [ 802] = 0x81d9, [ 803] = 0x81d8,
-+ [ 804] = 0x81c8, [ 805] = 0x81da, [ 806] = 0x81df, [ 807] = 0x81e0,
-+ [ 808] = 0x81e7, [ 809] = 0x81fa, [ 810] = 0x81fb, [ 811] = 0x81fe,
-+ [ 812] = 0x8201, [ 813] = 0x8202, [ 814] = 0x8205, [ 815] = 0x8207,
-+ [ 816] = 0x820a, [ 817] = 0x820d, [ 818] = 0x8210, [ 819] = 0x8216,
-+ [ 820] = 0x8229, [ 821] = 0x822b, [ 822] = 0x8238, [ 823] = 0x8233,
-+ [ 824] = 0x8240, [ 825] = 0x8259, [ 826] = 0x8258, [ 827] = 0x825d,
-+ [ 828] = 0x825a, [ 829] = 0x825f, [ 830] = 0x8264, [ 832] = 0x8262,
-+ [ 833] = 0x8268, [ 834] = 0x826a, [ 835] = 0x826b, [ 836] = 0x822e,
-+ [ 837] = 0x8271, [ 838] = 0x8277, [ 839] = 0x8278, [ 840] = 0x827e,
-+ [ 841] = 0x828d, [ 842] = 0x8292, [ 843] = 0x82ab, [ 844] = 0x829f,
-+ [ 845] = 0x82bb, [ 846] = 0x82ac, [ 847] = 0x82e1, [ 848] = 0x82e3,
-+ [ 849] = 0x82df, [ 850] = 0x82d2, [ 851] = 0x82f4, [ 852] = 0x82f3,
-+ [ 853] = 0x82fa, [ 854] = 0x8393, [ 855] = 0x8303, [ 856] = 0x82fb,
-+ [ 857] = 0x82f9, [ 858] = 0x82de, [ 859] = 0x8306, [ 860] = 0x82dc,
-+ [ 861] = 0x8309, [ 862] = 0x82d9, [ 863] = 0x8335, [ 864] = 0x8334,
-+ [ 865] = 0x8316, [ 866] = 0x8332, [ 867] = 0x8331, [ 868] = 0x8340,
-+ [ 869] = 0x8339, [ 870] = 0x8350, [ 871] = 0x8345, [ 872] = 0x832f,
-+ [ 873] = 0x832b, [ 874] = 0x8317, [ 875] = 0x8318, [ 876] = 0x8385,
-+ [ 877] = 0x839a, [ 878] = 0x83aa, [ 879] = 0x839f, [ 880] = 0x83a2,
-+ [ 881] = 0x8396, [ 882] = 0x8323, [ 883] = 0x838e, [ 884] = 0x8387,
-+ [ 885] = 0x838a, [ 886] = 0x837c, [ 887] = 0x83b5, [ 888] = 0x8373,
-+ [ 889] = 0x8375, [ 890] = 0x83a0, [ 891] = 0x8389, [ 892] = 0x83a8,
-+ [ 893] = 0x83f4, [ 894] = 0x8413, [ 895] = 0x83eb, [ 896] = 0x83ce,
-+ [ 897] = 0x83fd, [ 898] = 0x8403, [ 899] = 0x83d8, [ 900] = 0x840b,
-+ [ 901] = 0x83c1, [ 902] = 0x83f7, [ 903] = 0x8407, [ 904] = 0x83e0,
-+ [ 905] = 0x83f2, [ 906] = 0x840d, [ 907] = 0x8422, [ 908] = 0x8420,
-+ [ 909] = 0x83bd, [ 910] = 0x8438, [ 911] = 0x8506, [ 912] = 0x83fb,
-+ [ 913] = 0x846d, [ 914] = 0x842a, [ 915] = 0x843c, [ 916] = 0x855a,
-+ [ 917] = 0x8484, [ 918] = 0x8477, [ 919] = 0x846b, [ 920] = 0x84ad,
-+ [ 921] = 0x846e, [ 922] = 0x8482, [ 923] = 0x8469, [ 924] = 0x8446,
-+ [ 925] = 0x842c, [ 926] = 0x846f, [ 927] = 0x8479, [ 928] = 0x8435,
-+ [ 929] = 0x84ca, [ 930] = 0x8462, [ 931] = 0x84b9, [ 932] = 0x84bf,
-+ [ 933] = 0x849f, [ 934] = 0x84d9, [ 935] = 0x84cd, [ 936] = 0x84bb,
-+ [ 937] = 0x84da, [ 938] = 0x84d0, [ 939] = 0x84c1, [ 940] = 0x84c6,
-+ [ 941] = 0x84d6, [ 942] = 0x84a1, [ 943] = 0x8521, [ 944] = 0x84ff,
-+ [ 945] = 0x84f4, [ 946] = 0x8517, [ 947] = 0x8518, [ 948] = 0x852c,
-+ [ 949] = 0x851f, [ 950] = 0x8515, [ 951] = 0x8514, [ 952] = 0x84fc,
-+ [ 953] = 0x8540, [ 954] = 0x8563, [ 955] = 0x8558, [ 956] = 0x8548,
-+ [ 960] = 0x8541, [ 961] = 0x8602, [ 962] = 0x854b, [ 963] = 0x8555,
-+ [ 964] = 0x8580, [ 965] = 0x85a4, [ 966] = 0x8588, [ 967] = 0x8591,
-+ [ 968] = 0x858a, [ 969] = 0x85a8, [ 970] = 0x856d, [ 971] = 0x8594,
-+ [ 972] = 0x859b, [ 973] = 0x85ea, [ 974] = 0x8587, [ 975] = 0x859c,
-+ [ 976] = 0x8577, [ 977] = 0x857e, [ 978] = 0x8590, [ 979] = 0x85c9,
-+ [ 980] = 0x85ba, [ 981] = 0x85cf, [ 982] = 0x85b9, [ 983] = 0x85d0,
-+ [ 984] = 0x85d5, [ 985] = 0x85dd, [ 986] = 0x85e5, [ 987] = 0x85dc,
-+ [ 988] = 0x85f9, [ 989] = 0x860a, [ 990] = 0x8613, [ 991] = 0x860b,
-+ [ 992] = 0x85fe, [ 993] = 0x85fa, [ 994] = 0x8606, [ 995] = 0x8622,
-+ [ 996] = 0x861a, [ 997] = 0x8630, [ 998] = 0x863f, [ 999] = 0x864d,
-+ [1000] = 0x4e55, [1001] = 0x8654, [1002] = 0x865f, [1003] = 0x8667,
-+ [1004] = 0x8671, [1005] = 0x8693, [1006] = 0x86a3, [1007] = 0x86a9,
-+ [1008] = 0x86aa, [1009] = 0x868b, [1010] = 0x868c, [1011] = 0x86b6,
-+ [1012] = 0x86af, [1013] = 0x86c4, [1014] = 0x86c6, [1015] = 0x86b0,
-+ [1016] = 0x86c9, [1017] = 0x8823, [1018] = 0x86ab, [1019] = 0x86d4,
-+ [1020] = 0x86de, [1021] = 0x86e9, [1022] = 0x86ec, [1024] = 0x86df,
-+ [1025] = 0x86db, [1026] = 0x86ef, [1027] = 0x8712, [1028] = 0x8706,
-+ [1029] = 0x8708, [1030] = 0x8700, [1031] = 0x8703, [1032] = 0x86fb,
-+ [1033] = 0x8711, [1034] = 0x8709, [1035] = 0x870d, [1036] = 0x86f9,
-+ [1037] = 0x870a, [1038] = 0x8734, [1039] = 0x873f, [1040] = 0x8737,
-+ [1041] = 0x873b, [1042] = 0x8725, [1043] = 0x8729, [1044] = 0x871a,
-+ [1045] = 0x8760, [1046] = 0x875f, [1047] = 0x8778, [1048] = 0x874c,
-+ [1049] = 0x874e, [1050] = 0x8774, [1051] = 0x8757, [1052] = 0x8768,
-+ [1053] = 0x876e, [1054] = 0x8759, [1055] = 0x8753, [1056] = 0x8763,
-+ [1057] = 0x876a, [1058] = 0x8805, [1059] = 0x87a2, [1060] = 0x879f,
-+ [1061] = 0x8782, [1062] = 0x87af, [1063] = 0x87cb, [1064] = 0x87bd,
-+ [1065] = 0x87c0, [1066] = 0x87d0, [1067] = 0x96d6, [1068] = 0x87ab,
-+ [1069] = 0x87c4, [1070] = 0x87b3, [1071] = 0x87c7, [1072] = 0x87c6,
-+ [1073] = 0x87bb, [1074] = 0x87ef, [1075] = 0x87f2, [1076] = 0x87e0,
-+ [1077] = 0x880f, [1078] = 0x880d, [1079] = 0x87fe, [1080] = 0x87f6,
-+ [1081] = 0x87f7, [1082] = 0x880e, [1083] = 0x87d2, [1084] = 0x8811,
-+ [1085] = 0x8816, [1086] = 0x8815, [1087] = 0x8822, [1088] = 0x8821,
-+ [1089] = 0x8831, [1090] = 0x8836, [1091] = 0x8839, [1092] = 0x8827,
-+ [1093] = 0x883b, [1094] = 0x8844, [1095] = 0x8842, [1096] = 0x8852,
-+ [1097] = 0x8859, [1098] = 0x885e, [1099] = 0x8862, [1100] = 0x886b,
-+ [1101] = 0x8881, [1102] = 0x887e, [1103] = 0x889e, [1104] = 0x8875,
-+ [1105] = 0x887d, [1106] = 0x88b5, [1107] = 0x8872, [1108] = 0x8882,
-+ [1109] = 0x8897, [1110] = 0x8892, [1111] = 0x88ae, [1112] = 0x8899,
-+ [1113] = 0x88a2, [1114] = 0x888d, [1115] = 0x88a4, [1116] = 0x88b0,
-+ [1117] = 0x88bf, [1118] = 0x88b1, [1119] = 0x88c3, [1120] = 0x88c4,
-+ [1121] = 0x88d4, [1122] = 0x88d8, [1123] = 0x88d9, [1124] = 0x88dd,
-+ [1125] = 0x88f9, [1126] = 0x8902, [1127] = 0x88fc, [1128] = 0x88f4,
-+ [1129] = 0x88e8, [1130] = 0x88f2, [1131] = 0x8904, [1132] = 0x890c,
-+ [1133] = 0x890a, [1134] = 0x8913, [1135] = 0x8943, [1136] = 0x891e,
-+ [1137] = 0x8925, [1138] = 0x892a, [1139] = 0x892b, [1140] = 0x8941,
-+ [1141] = 0x8944, [1142] = 0x893b, [1143] = 0x8936, [1144] = 0x8938,
-+ [1145] = 0x894c, [1146] = 0x891d, [1147] = 0x8960, [1148] = 0x895e,
-+ [1152] = 0x8966, [1153] = 0x8964, [1154] = 0x896d, [1155] = 0x896a,
-+ [1156] = 0x896f, [1157] = 0x8974, [1158] = 0x8977, [1159] = 0x897e,
-+ [1160] = 0x8983, [1161] = 0x8988, [1162] = 0x898a, [1163] = 0x8993,
-+ [1164] = 0x8998, [1165] = 0x89a1, [1166] = 0x89a9, [1167] = 0x89a6,
-+ [1168] = 0x89ac, [1169] = 0x89af, [1170] = 0x89b2, [1171] = 0x89ba,
-+ [1172] = 0x89bd, [1173] = 0x89bf, [1174] = 0x89c0, [1175] = 0x89da,
-+ [1176] = 0x89dc, [1177] = 0x89dd, [1178] = 0x89e7, [1179] = 0x89f4,
-+ [1180] = 0x89f8, [1181] = 0x8a03, [1182] = 0x8a16, [1183] = 0x8a10,
-+ [1184] = 0x8a0c, [1185] = 0x8a1b, [1186] = 0x8a1d, [1187] = 0x8a25,
-+ [1188] = 0x8a36, [1189] = 0x8a41, [1190] = 0x8a5b, [1191] = 0x8a52,
-+ [1192] = 0x8a46, [1193] = 0x8a48, [1194] = 0x8a7c, [1195] = 0x8a6d,
-+ [1196] = 0x8a6c, [1197] = 0x8a62, [1198] = 0x8a85, [1199] = 0x8a82,
-+ [1200] = 0x8a84, [1201] = 0x8aa8, [1202] = 0x8aa1, [1203] = 0x8a91,
-+ [1204] = 0x8aa5, [1205] = 0x8aa6, [1206] = 0x8a9a, [1207] = 0x8aa3,
-+ [1208] = 0x8ac4, [1209] = 0x8acd, [1210] = 0x8ac2, [1211] = 0x8ada,
-+ [1212] = 0x8aeb, [1213] = 0x8af3, [1214] = 0x8ae7, [1216] = 0x8ae4,
-+ [1217] = 0x8af1, [1218] = 0x8b14, [1219] = 0x8ae0, [1220] = 0x8ae2,
-+ [1221] = 0x8af7, [1222] = 0x8ade, [1223] = 0x8adb, [1224] = 0x8b0c,
-+ [1225] = 0x8b07, [1226] = 0x8b1a, [1227] = 0x8ae1, [1228] = 0x8b16,
-+ [1229] = 0x8b10, [1230] = 0x8b17, [1231] = 0x8b20, [1232] = 0x8b33,
-+ [1233] = 0x97ab, [1234] = 0x8b26, [1235] = 0x8b2b, [1236] = 0x8b3e,
-+ [1237] = 0x8b28, [1238] = 0x8b41, [1239] = 0x8b4c, [1240] = 0x8b4f,
-+ [1241] = 0x8b4e, [1242] = 0x8b49, [1243] = 0x8b56, [1244] = 0x8b5b,
-+ [1245] = 0x8b5a, [1246] = 0x8b6b, [1247] = 0x8b5f, [1248] = 0x8b6c,
-+ [1249] = 0x8b6f, [1250] = 0x8b74, [1251] = 0x8b7d, [1252] = 0x8b80,
-+ [1253] = 0x8b8c, [1254] = 0x8b8e, [1255] = 0x8b92, [1256] = 0x8b93,
-+ [1257] = 0x8b96, [1258] = 0x8b99, [1259] = 0x8b9a, [1260] = 0x8c3a,
-+ [1261] = 0x8c41, [1262] = 0x8c3f, [1263] = 0x8c48, [1264] = 0x8c4c,
-+ [1265] = 0x8c4e, [1266] = 0x8c50, [1267] = 0x8c55, [1268] = 0x8c62,
-+ [1269] = 0x8c6c, [1270] = 0x8c78, [1271] = 0x8c7a, [1272] = 0x8c82,
-+ [1273] = 0x8c89, [1274] = 0x8c85, [1275] = 0x8c8a, [1276] = 0x8c8d,
-+ [1277] = 0x8c8e, [1278] = 0x8c94, [1279] = 0x8c7c, [1280] = 0x8c98,
-+ [1281] = 0x621d, [1282] = 0x8cad, [1283] = 0x8caa, [1284] = 0x8cbd,
-+ [1285] = 0x8cb2, [1286] = 0x8cb3, [1287] = 0x8cae, [1288] = 0x8cb6,
-+ [1289] = 0x8cc8, [1290] = 0x8cc1, [1291] = 0x8ce4, [1292] = 0x8ce3,
-+ [1293] = 0x8cda, [1294] = 0x8cfd, [1295] = 0x8cfa, [1296] = 0x8cfb,
-+ [1297] = 0x8d04, [1298] = 0x8d05, [1299] = 0x8d0a, [1300] = 0x8d07,
-+ [1301] = 0x8d0f, [1302] = 0x8d0d, [1303] = 0x8d10, [1304] = 0x9f4e,
-+ [1305] = 0x8d13, [1306] = 0x8ccd, [1307] = 0x8d14, [1308] = 0x8d16,
-+ [1309] = 0x8d67, [1310] = 0x8d6d, [1311] = 0x8d71, [1312] = 0x8d73,
-+ [1313] = 0x8d81, [1314] = 0x8d99, [1315] = 0x8dc2, [1316] = 0x8dbe,
-+ [1317] = 0x8dba, [1318] = 0x8dcf, [1319] = 0x8dda, [1320] = 0x8dd6,
-+ [1321] = 0x8dcc, [1322] = 0x8ddb, [1323] = 0x8dcb, [1324] = 0x8dea,
-+ [1325] = 0x8deb, [1326] = 0x8ddf, [1327] = 0x8de3, [1328] = 0x8dfc,
-+ [1329] = 0x8e08, [1330] = 0x8e09, [1331] = 0x8dff, [1332] = 0x8e1d,
-+ [1333] = 0x8e1e, [1334] = 0x8e10, [1335] = 0x8e1f, [1336] = 0x8e42,
-+ [1337] = 0x8e35, [1338] = 0x8e30, [1339] = 0x8e34, [1340] = 0x8e4a,
-+ [1344] = 0x8e47, [1345] = 0x8e49, [1346] = 0x8e4c, [1347] = 0x8e50,
-+ [1348] = 0x8e48, [1349] = 0x8e59, [1350] = 0x8e64, [1351] = 0x8e60,
-+ [1352] = 0x8e2a, [1353] = 0x8e63, [1354] = 0x8e55, [1355] = 0x8e76,
-+ [1356] = 0x8e72, [1357] = 0x8e7c, [1358] = 0x8e81, [1359] = 0x8e87,
-+ [1360] = 0x8e85, [1361] = 0x8e84, [1362] = 0x8e8b, [1363] = 0x8e8a,
-+ [1364] = 0x8e93, [1365] = 0x8e91, [1366] = 0x8e94, [1367] = 0x8e99,
-+ [1368] = 0x8eaa, [1369] = 0x8ea1, [1370] = 0x8eac, [1371] = 0x8eb0,
-+ [1372] = 0x8ec6, [1373] = 0x8eb1, [1374] = 0x8ebe, [1375] = 0x8ec5,
-+ [1376] = 0x8ec8, [1377] = 0x8ecb, [1378] = 0x8edb, [1379] = 0x8ee3,
-+ [1380] = 0x8efc, [1381] = 0x8efb, [1382] = 0x8eeb, [1383] = 0x8efe,
-+ [1384] = 0x8f0a, [1385] = 0x8f05, [1386] = 0x8f15, [1387] = 0x8f12,
-+ [1388] = 0x8f19, [1389] = 0x8f13, [1390] = 0x8f1c, [1391] = 0x8f1f,
-+ [1392] = 0x8f1b, [1393] = 0x8f0c, [1394] = 0x8f26, [1395] = 0x8f33,
-+ [1396] = 0x8f3b, [1397] = 0x8f39, [1398] = 0x8f45, [1399] = 0x8f42,
-+ [1400] = 0x8f3e, [1401] = 0x8f4c, [1402] = 0x8f49, [1403] = 0x8f46,
-+ [1404] = 0x8f4e, [1405] = 0x8f57, [1406] = 0x8f5c, [1408] = 0x8f62,
-+ [1409] = 0x8f63, [1410] = 0x8f64, [1411] = 0x8f9c, [1412] = 0x8f9f,
-+ [1413] = 0x8fa3, [1414] = 0x8fad, [1415] = 0x8faf, [1416] = 0x8fb7,
-+ [1417] = 0x8fda, [1418] = 0x8fe5, [1419] = 0x8fe2, [1420] = 0x8fea,
-+ [1421] = 0x8fef, [1422] = 0x9087, [1423] = 0x8ff4, [1424] = 0x9005,
-+ [1425] = 0x8ff9, [1426] = 0x8ffa, [1427] = 0x9011, [1428] = 0x9015,
-+ [1429] = 0x9021, [1430] = 0x900d, [1431] = 0x901e, [1432] = 0x9016,
-+ [1433] = 0x900b, [1434] = 0x9027, [1435] = 0x9036, [1436] = 0x9035,
-+ [1437] = 0x9039, [1438] = 0x8ff8, [1439] = 0x904f, [1440] = 0x9050,
-+ [1441] = 0x9051, [1442] = 0x9052, [1443] = 0x900e, [1444] = 0x9049,
-+ [1445] = 0x903e, [1446] = 0x9056, [1447] = 0x9058, [1448] = 0x905e,
-+ [1449] = 0x9068, [1450] = 0x906f, [1451] = 0x9076, [1452] = 0x96a8,
-+ [1453] = 0x9072, [1454] = 0x9082, [1455] = 0x907d, [1456] = 0x9081,
-+ [1457] = 0x9080, [1458] = 0x908a, [1459] = 0x9089, [1460] = 0x908f,
-+ [1461] = 0x90a8, [1462] = 0x90af, [1463] = 0x90b1, [1464] = 0x90b5,
-+ [1465] = 0x90e2, [1466] = 0x90e4, [1467] = 0x6248, [1468] = 0x90db,
-+ [1469] = 0x9102, [1470] = 0x9112, [1471] = 0x9119, [1472] = 0x9132,
-+ [1473] = 0x9130, [1474] = 0x914a, [1475] = 0x9156, [1476] = 0x9158,
-+ [1477] = 0x9163, [1478] = 0x9165, [1479] = 0x9169, [1480] = 0x9173,
-+ [1481] = 0x9172, [1482] = 0x918b, [1483] = 0x9189, [1484] = 0x9182,
-+ [1485] = 0x91a2, [1486] = 0x91ab, [1487] = 0x91af, [1488] = 0x91aa,
-+ [1489] = 0x91b5, [1490] = 0x91b4, [1491] = 0x91ba, [1492] = 0x91c0,
-+ [1493] = 0x91c1, [1494] = 0x91c9, [1495] = 0x91cb, [1496] = 0x91d0,
-+ [1497] = 0x91d6, [1498] = 0x91df, [1499] = 0x91e1, [1500] = 0x91db,
-+ [1501] = 0x91fc, [1502] = 0x91f5, [1503] = 0x91f6, [1504] = 0x921e,
-+ [1505] = 0x91ff, [1506] = 0x9214, [1507] = 0x922c, [1508] = 0x9215,
-+ [1509] = 0x9211, [1510] = 0x925e, [1511] = 0x9257, [1512] = 0x9245,
-+ [1513] = 0x9249, [1514] = 0x9264, [1515] = 0x9248, [1516] = 0x9295,
-+ [1517] = 0x923f, [1518] = 0x924b, [1519] = 0x9250, [1520] = 0x929c,
-+ [1521] = 0x9296, [1522] = 0x9293, [1523] = 0x929b, [1524] = 0x925a,
-+ [1525] = 0x92cf, [1526] = 0x92b9, [1527] = 0x92b7, [1528] = 0x92e9,
-+ [1529] = 0x930f, [1530] = 0x92fa, [1531] = 0x9344, [1532] = 0x932e,
-+ [1536] = 0x9319, [1537] = 0x9322, [1538] = 0x931a, [1539] = 0x9323,
-+ [1540] = 0x933a, [1541] = 0x9335, [1542] = 0x933b, [1543] = 0x935c,
-+ [1544] = 0x9360, [1545] = 0x937c, [1546] = 0x936e, [1547] = 0x9356,
-+ [1548] = 0x93b0, [1549] = 0x93ac, [1550] = 0x93ad, [1551] = 0x9394,
-+ [1552] = 0x93b9, [1553] = 0x93d6, [1554] = 0x93d7, [1555] = 0x93e8,
-+ [1556] = 0x93e5, [1557] = 0x93d8, [1558] = 0x93c3, [1559] = 0x93dd,
-+ [1560] = 0x93d0, [1561] = 0x93c8, [1562] = 0x93e4, [1563] = 0x941a,
-+ [1564] = 0x9414, [1565] = 0x9413, [1566] = 0x9403, [1567] = 0x9407,
-+ [1568] = 0x9410, [1569] = 0x9436, [1570] = 0x942b, [1571] = 0x9435,
-+ [1572] = 0x9421, [1573] = 0x943a, [1574] = 0x9441, [1575] = 0x9452,
-+ [1576] = 0x9444, [1577] = 0x945b, [1578] = 0x9460, [1579] = 0x9462,
-+ [1580] = 0x945e, [1581] = 0x946a, [1582] = 0x9229, [1583] = 0x9470,
-+ [1584] = 0x9475, [1585] = 0x9477, [1586] = 0x947d, [1587] = 0x945a,
-+ [1588] = 0x947c, [1589] = 0x947e, [1590] = 0x9481, [1591] = 0x947f,
-+ [1592] = 0x9582, [1593] = 0x9587, [1594] = 0x958a, [1595] = 0x9594,
-+ [1596] = 0x9596, [1597] = 0x9598, [1598] = 0x9599, [1600] = 0x95a0,
-+ [1601] = 0x95a8, [1602] = 0x95a7, [1603] = 0x95ad, [1604] = 0x95bc,
-+ [1605] = 0x95bb, [1606] = 0x95b9, [1607] = 0x95be, [1608] = 0x95ca,
-+ [1609] = 0x6ff6, [1610] = 0x95c3, [1611] = 0x95cd, [1612] = 0x95cc,
-+ [1613] = 0x95d5, [1614] = 0x95d4, [1615] = 0x95d6, [1616] = 0x95dc,
-+ [1617] = 0x95e1, [1618] = 0x95e5, [1619] = 0x95e2, [1620] = 0x9621,
-+ [1621] = 0x9628, [1622] = 0x962e, [1623] = 0x962f, [1624] = 0x9642,
-+ [1625] = 0x964c, [1626] = 0x964f, [1627] = 0x964b, [1628] = 0x9677,
-+ [1629] = 0x965c, [1630] = 0x965e, [1631] = 0x965d, [1632] = 0x965f,
-+ [1633] = 0x9666, [1634] = 0x9672, [1635] = 0x966c, [1636] = 0x968d,
-+ [1637] = 0x9698, [1638] = 0x9695, [1639] = 0x9697, [1640] = 0x96aa,
-+ [1641] = 0x96a7, [1642] = 0x96b1, [1643] = 0x96b2, [1644] = 0x96b0,
-+ [1645] = 0x96b4, [1646] = 0x96b6, [1647] = 0x96b8, [1648] = 0x96b9,
-+ [1649] = 0x96ce, [1650] = 0x96cb, [1651] = 0x96c9, [1652] = 0x96cd,
-+ [1653] = 0x894d, [1654] = 0x96dc, [1655] = 0x970d, [1656] = 0x96d5,
-+ [1657] = 0x96f9, [1658] = 0x9704, [1659] = 0x9706, [1660] = 0x9708,
-+ [1661] = 0x9713, [1662] = 0x970e, [1663] = 0x9711, [1664] = 0x970f,
-+ [1665] = 0x9716, [1666] = 0x9719, [1667] = 0x9724, [1668] = 0x972a,
-+ [1669] = 0x9730, [1670] = 0x9739, [1671] = 0x973d, [1672] = 0x973e,
-+ [1673] = 0x9744, [1674] = 0x9746, [1675] = 0x9748, [1676] = 0x9742,
-+ [1677] = 0x9749, [1678] = 0x975c, [1679] = 0x9760, [1680] = 0x9764,
-+ [1681] = 0x9766, [1682] = 0x9768, [1683] = 0x52d2, [1684] = 0x976b,
-+ [1685] = 0x9771, [1686] = 0x9779, [1687] = 0x9785, [1688] = 0x977c,
-+ [1689] = 0x9781, [1690] = 0x977a, [1691] = 0x9786, [1692] = 0x978b,
-+ [1693] = 0x978f, [1694] = 0x9790, [1695] = 0x979c, [1696] = 0x97a8,
-+ [1697] = 0x97a6, [1698] = 0x97a3, [1699] = 0x97b3, [1700] = 0x97b4,
-+ [1701] = 0x97c3, [1702] = 0x97c6, [1703] = 0x97c8, [1704] = 0x97cb,
-+ [1705] = 0x97dc, [1706] = 0x97ed, [1707] = 0x9f4f, [1708] = 0x97f2,
-+ [1709] = 0x7adf, [1710] = 0x97f6, [1711] = 0x97f5, [1712] = 0x980f,
-+ [1713] = 0x980c, [1714] = 0x9838, [1715] = 0x9824, [1716] = 0x9821,
-+ [1717] = 0x9837, [1718] = 0x983d, [1719] = 0x9846, [1720] = 0x984f,
-+ [1721] = 0x984b, [1722] = 0x986b, [1723] = 0x986f, [1724] = 0x9870,
-+ [1728] = 0x9871, [1729] = 0x9874, [1730] = 0x9873, [1731] = 0x98aa,
-+ [1732] = 0x98af, [1733] = 0x98b1, [1734] = 0x98b6, [1735] = 0x98c4,
-+ [1736] = 0x98c3, [1737] = 0x98c6, [1738] = 0x98e9, [1739] = 0x98eb,
-+ [1740] = 0x9903, [1741] = 0x9909, [1742] = 0x9912, [1743] = 0x9914,
-+ [1744] = 0x9918, [1745] = 0x9921, [1746] = 0x991d, [1747] = 0x991e,
-+ [1748] = 0x9924, [1749] = 0x9920, [1750] = 0x992c, [1751] = 0x992e,
-+ [1752] = 0x993d, [1753] = 0x993e, [1754] = 0x9942, [1755] = 0x9949,
-+ [1756] = 0x9945, [1757] = 0x9950, [1758] = 0x994b, [1759] = 0x9951,
-+ [1760] = 0x9952, [1761] = 0x994c, [1762] = 0x9955, [1763] = 0x9997,
-+ [1764] = 0x9998, [1765] = 0x99a5, [1766] = 0x99ad, [1767] = 0x99ae,
-+ [1768] = 0x99bc, [1769] = 0x99df, [1770] = 0x99db, [1771] = 0x99dd,
-+ [1772] = 0x99d8, [1773] = 0x99d1, [1774] = 0x99ed, [1775] = 0x99ee,
-+ [1776] = 0x99f1, [1777] = 0x99f2, [1778] = 0x99fb, [1779] = 0x99f8,
-+ [1780] = 0x9a01, [1781] = 0x9a0f, [1782] = 0x9a05, [1783] = 0x99e2,
-+ [1784] = 0x9a19, [1785] = 0x9a2b, [1786] = 0x9a37, [1787] = 0x9a45,
-+ [1788] = 0x9a42, [1789] = 0x9a40, [1790] = 0x9a43, [1792] = 0x9a3e,
-+ [1793] = 0x9a55, [1794] = 0x9a4d, [1795] = 0x9a5b, [1796] = 0x9a57,
-+ [1797] = 0x9a5f, [1798] = 0x9a62, [1799] = 0x9a65, [1800] = 0x9a64,
-+ [1801] = 0x9a69, [1802] = 0x9a6b, [1803] = 0x9a6a, [1804] = 0x9aad,
-+ [1805] = 0x9ab0, [1806] = 0x9abc, [1807] = 0x9ac0, [1808] = 0x9acf,
-+ [1809] = 0x9ad1, [1810] = 0x9ad3, [1811] = 0x9ad4, [1812] = 0x9ade,
-+ [1813] = 0x9adf, [1814] = 0x9ae2, [1815] = 0x9ae3, [1816] = 0x9ae6,
-+ [1817] = 0x9aef, [1818] = 0x9aeb, [1819] = 0x9aee, [1820] = 0x9af4,
-+ [1821] = 0x9af1, [1822] = 0x9af7, [1823] = 0x9afb, [1824] = 0x9b06,
-+ [1825] = 0x9b18, [1826] = 0x9b1a, [1827] = 0x9b1f, [1828] = 0x9b22,
-+ [1829] = 0x9b23, [1830] = 0x9b25, [1831] = 0x9b27, [1832] = 0x9b28,
-+ [1833] = 0x9b29, [1834] = 0x9b2a, [1835] = 0x9b2e, [1836] = 0x9b2f,
-+ [1837] = 0x9b32, [1838] = 0x9b44, [1839] = 0x9b43, [1840] = 0x9b4f,
-+ [1841] = 0x9b4d, [1842] = 0x9b4e, [1843] = 0x9b51, [1844] = 0x9b58,
-+ [1845] = 0x9b74, [1846] = 0x9b93, [1847] = 0x9b83, [1848] = 0x9b91,
-+ [1849] = 0x9b96, [1850] = 0x9b97, [1851] = 0x9b9f, [1852] = 0x9ba0,
-+ [1853] = 0x9ba8, [1854] = 0x9bb4, [1855] = 0x9bc0, [1856] = 0x9bca,
-+ [1857] = 0x9bb9, [1858] = 0x9bc6, [1859] = 0x9bcf, [1860] = 0x9bd1,
-+ [1861] = 0x9bd2, [1862] = 0x9be3, [1863] = 0x9be2, [1864] = 0x9be4,
-+ [1865] = 0x9bd4, [1866] = 0x9be1, [1867] = 0x9c3a, [1868] = 0x9bf2,
-+ [1869] = 0x9bf1, [1870] = 0x9bf0, [1871] = 0x9c15, [1872] = 0x9c14,
-+ [1873] = 0x9c09, [1874] = 0x9c13, [1875] = 0x9c0c, [1876] = 0x9c06,
-+ [1877] = 0x9c08, [1878] = 0x9c12, [1879] = 0x9c0a, [1880] = 0x9c04,
-+ [1881] = 0x9c2e, [1882] = 0x9c1b, [1883] = 0x9c25, [1884] = 0x9c24,
-+ [1885] = 0x9c21, [1886] = 0x9c30, [1887] = 0x9c47, [1888] = 0x9c32,
-+ [1889] = 0x9c46, [1890] = 0x9c3e, [1891] = 0x9c5a, [1892] = 0x9c60,
-+ [1893] = 0x9c67, [1894] = 0x9c76, [1895] = 0x9c78, [1896] = 0x9ce7,
-+ [1897] = 0x9cec, [1898] = 0x9cf0, [1899] = 0x9d09, [1900] = 0x9d08,
-+ [1901] = 0x9ceb, [1902] = 0x9d03, [1903] = 0x9d06, [1904] = 0x9d2a,
-+ [1905] = 0x9d26, [1906] = 0x9daf, [1907] = 0x9d23, [1908] = 0x9d1f,
-+ [1909] = 0x9d44, [1910] = 0x9d15, [1911] = 0x9d12, [1912] = 0x9d41,
-+ [1913] = 0x9d3f, [1914] = 0x9d3e, [1915] = 0x9d46, [1916] = 0x9d48,
-+ [1920] = 0x9d5d, [1921] = 0x9d5e, [1922] = 0x9d64, [1923] = 0x9d51,
-+ [1924] = 0x9d50, [1925] = 0x9d59, [1926] = 0x9d72, [1927] = 0x9d89,
-+ [1928] = 0x9d87, [1929] = 0x9dab, [1930] = 0x9d6f, [1931] = 0x9d7a,
-+ [1932] = 0x9d9a, [1933] = 0x9da4, [1934] = 0x9da9, [1935] = 0x9db2,
-+ [1936] = 0x9dc4, [1937] = 0x9dc1, [1938] = 0x9dbb, [1939] = 0x9db8,
-+ [1940] = 0x9dba, [1941] = 0x9dc6, [1942] = 0x9dcf, [1943] = 0x9dc2,
-+ [1944] = 0x9dd9, [1945] = 0x9dd3, [1946] = 0x9df8, [1947] = 0x9de6,
-+ [1948] = 0x9ded, [1949] = 0x9def, [1950] = 0x9dfd, [1951] = 0x9e1a,
-+ [1952] = 0x9e1b, [1953] = 0x9e1e, [1954] = 0x9e75, [1955] = 0x9e79,
-+ [1956] = 0x9e7d, [1957] = 0x9e81, [1958] = 0x9e88, [1959] = 0x9e8b,
-+ [1960] = 0x9e8c, [1961] = 0x9e92, [1962] = 0x9e95, [1963] = 0x9e91,
-+ [1964] = 0x9e9d, [1965] = 0x9ea5, [1966] = 0x9ea9, [1967] = 0x9eb8,
-+ [1968] = 0x9eaa, [1969] = 0x9ead, [1970] = 0x9761, [1971] = 0x9ecc,
-+ [1972] = 0x9ece, [1973] = 0x9ecf, [1974] = 0x9ed0, [1975] = 0x9ed4,
-+ [1976] = 0x9edc, [1977] = 0x9ede, [1978] = 0x9edd, [1979] = 0x9ee0,
-+ [1980] = 0x9ee5, [1981] = 0x9ee8, [1982] = 0x9eef, [1984] = 0x9ef4,
-+ [1985] = 0x9ef6, [1986] = 0x9ef7, [1987] = 0x9ef9, [1988] = 0x9efb,
-+ [1989] = 0x9efc, [1990] = 0x9efd, [1991] = 0x9f07, [1992] = 0x9f08,
-+ [1993] = 0x76b7, [1994] = 0x9f15, [1995] = 0x9f21, [1996] = 0x9f2c,
-+ [1997] = 0x9f3e, [1998] = 0x9f4a, [1999] = 0x9f52, [2000] = 0x9f54,
-+ [2001] = 0x9f63, [2002] = 0x9f5f, [2003] = 0x9f60, [2004] = 0x9f61,
-+ [2005] = 0x9f66, [2006] = 0x9f67, [2007] = 0x9f6c, [2008] = 0x9f6a,
-+ [2009] = 0x9f77, [2010] = 0x9f72, [2011] = 0x9f76, [2012] = 0x9f95,
-+ [2013] = 0x9f9c, [2014] = 0x9fa0, [2015] = 0x582f, [2016] = 0x69c7,
-+ [2017] = 0x9059, [2018] = 0x7464, [2019] = 0x51dc, [2020] = 0x7199
-+};
-+
-+static const uint16_t cjk_block6[381] =
-+{
-+ /* start = 0xed40, end = 0xeefc */
-+ [ 0] = 0x7e8a, [ 1] = 0x891c, [ 2] = 0x9348, [ 3] = 0x9288,
-+ [ 4] = 0x84dc, [ 5] = 0x4fc9, [ 6] = 0x70bb, [ 7] = 0x6631,
-+ [ 8] = 0x68c8, [ 9] = 0x92f9, [ 10] = 0x66fb, [ 11] = 0x5f45,
-+ [ 12] = 0x4e28, [ 13] = 0x4ee1, [ 14] = 0x4efc, [ 15] = 0x4f00,
-+ [ 16] = 0x4f03, [ 17] = 0x4f39, [ 18] = 0x4f56, [ 19] = 0x4f92,
-+ [ 20] = 0x4f8a, [ 21] = 0x4f9a, [ 22] = 0x4f94, [ 23] = 0x4fcd,
-+ [ 24] = 0x5040, [ 25] = 0x5022, [ 26] = 0x4fff, [ 27] = 0x501e,
-+ [ 28] = 0x5046, [ 29] = 0x5070, [ 30] = 0x5042, [ 31] = 0x5094,
-+ [ 32] = 0x50f4, [ 33] = 0x50d8, [ 34] = 0x514a, [ 35] = 0x5164,
-+ [ 36] = 0x519d, [ 37] = 0x51be, [ 38] = 0x51ec, [ 39] = 0x5215,
-+ [ 40] = 0x529c, [ 41] = 0x52a6, [ 42] = 0x52c0, [ 43] = 0x52db,
-+ [ 44] = 0x5300, [ 45] = 0x5307, [ 46] = 0x5324, [ 47] = 0x5372,
-+ [ 48] = 0x5393, [ 49] = 0x53b2, [ 50] = 0x53dd, [ 51] = 0xfa0e,
-+ [ 52] = 0x549c, [ 53] = 0x548a, [ 54] = 0x54a9, [ 55] = 0x54ff,
-+ [ 56] = 0x5586, [ 57] = 0x5759, [ 58] = 0x5765, [ 59] = 0x57ac,
-+ [ 60] = 0x57c8, [ 61] = 0x57c7, [ 62] = 0xfa0f, [ 64] = 0xfa10,
-+ [ 65] = 0x589e, [ 66] = 0x58b2, [ 67] = 0x590b, [ 68] = 0x5953,
-+ [ 69] = 0x595b, [ 70] = 0x595d, [ 71] = 0x5963, [ 72] = 0x59a4,
-+ [ 73] = 0x59ba, [ 74] = 0x5b56, [ 75] = 0x5bc0, [ 76] = 0x752f,
-+ [ 77] = 0x5bd8, [ 78] = 0x5bec, [ 79] = 0x5c1e, [ 80] = 0x5ca6,
-+ [ 81] = 0x5cba, [ 82] = 0x5cf5, [ 83] = 0x5d27, [ 84] = 0x5d53,
-+ [ 85] = 0xfa11, [ 86] = 0x5d42, [ 87] = 0x5d6d, [ 88] = 0x5db8,
-+ [ 89] = 0x5db9, [ 90] = 0x5dd0, [ 91] = 0x5f21, [ 92] = 0x5f34,
-+ [ 93] = 0x5f67, [ 94] = 0x5fb7, [ 95] = 0x5fde, [ 96] = 0x605d,
-+ [ 97] = 0x6085, [ 98] = 0x608a, [ 99] = 0x60de, [ 100] = 0x60d5,
-+ [ 101] = 0x6120, [ 102] = 0x60f2, [ 103] = 0x6111, [ 104] = 0x6137,
-+ [ 105] = 0x6130, [ 106] = 0x6198, [ 107] = 0x6213, [ 108] = 0x62a6,
-+ [ 109] = 0x63f5, [ 110] = 0x6460, [ 111] = 0x649d, [ 112] = 0x64ce,
-+ [ 113] = 0x654e, [ 114] = 0x6600, [ 115] = 0x6615, [ 116] = 0x663b,
-+ [ 117] = 0x6609, [ 118] = 0x662e, [ 119] = 0x661e, [ 120] = 0x6624,
-+ [ 121] = 0x6665, [ 122] = 0x6657, [ 123] = 0x6659, [ 124] = 0xfa12,
-+ [ 125] = 0x6673, [ 126] = 0x6699, [ 127] = 0x66a0, [ 128] = 0x66b2,
-+ [ 129] = 0x66bf, [ 130] = 0x66fa, [ 131] = 0x670e, [ 132] = 0xf929,
-+ [ 133] = 0x6766, [ 134] = 0x67bb, [ 135] = 0x6852, [ 136] = 0x67c0,
-+ [ 137] = 0x6801, [ 138] = 0x6844, [ 139] = 0x68cf, [ 140] = 0xfa13,
-+ [ 141] = 0x6968, [ 142] = 0xfa14, [ 143] = 0x6998, [ 144] = 0x69e2,
-+ [ 145] = 0x6a30, [ 146] = 0x6a6b, [ 147] = 0x6a46, [ 148] = 0x6a73,
-+ [ 149] = 0x6a7e, [ 150] = 0x6ae2, [ 151] = 0x6ae4, [ 152] = 0x6bd6,
-+ [ 153] = 0x6c3f, [ 154] = 0x6c5c, [ 155] = 0x6c86, [ 156] = 0x6c6f,
-+ [ 157] = 0x6cda, [ 158] = 0x6d04, [ 159] = 0x6d87, [ 160] = 0x6d6f,
-+ [ 161] = 0x6d96, [ 162] = 0x6dac, [ 163] = 0x6dcf, [ 164] = 0x6df8,
-+ [ 165] = 0x6df2, [ 166] = 0x6dfc, [ 167] = 0x6e39, [ 168] = 0x6e5c,
-+ [ 169] = 0x6e27, [ 170] = 0x6e3c, [ 171] = 0x6ebf, [ 172] = 0x6f88,
-+ [ 173] = 0x6fb5, [ 174] = 0x6ff5, [ 175] = 0x7005, [ 176] = 0x7007,
-+ [ 177] = 0x7028, [ 178] = 0x7085, [ 179] = 0x70ab, [ 180] = 0x710f,
-+ [ 181] = 0x7104, [ 182] = 0x715c, [ 183] = 0x7146, [ 184] = 0x7147,
-+ [ 185] = 0xfa15, [ 186] = 0x71c1, [ 187] = 0x71fe, [ 188] = 0x72b1,
-+ [ 192] = 0x72be, [ 193] = 0x7324, [ 194] = 0xfa16, [ 195] = 0x7377,
-+ [ 196] = 0x73bd, [ 197] = 0x73c9, [ 198] = 0x73d6, [ 199] = 0x73e3,
-+ [ 200] = 0x73d2, [ 201] = 0x7407, [ 202] = 0x73f5, [ 203] = 0x7426,
-+ [ 204] = 0x742a, [ 205] = 0x7429, [ 206] = 0x742e, [ 207] = 0x7462,
-+ [ 208] = 0x7489, [ 209] = 0x749f, [ 210] = 0x7501, [ 211] = 0x756f,
-+ [ 212] = 0x7682, [ 213] = 0x769c, [ 214] = 0x769e, [ 215] = 0x769b,
-+ [ 216] = 0x76a6, [ 217] = 0xfa17, [ 218] = 0x7746, [ 219] = 0x52af,
-+ [ 220] = 0x7821, [ 221] = 0x784e, [ 222] = 0x7864, [ 223] = 0x787a,
-+ [ 224] = 0x7930, [ 225] = 0xfa18, [ 226] = 0xfa19, [ 227] = 0xfa1a,
-+ [ 228] = 0x7994, [ 229] = 0xfa1b, [ 230] = 0x799b, [ 231] = 0x7ad1,
-+ [ 232] = 0x7ae7, [ 233] = 0xfa1c, [ 234] = 0x7aeb, [ 235] = 0x7b9e,
-+ [ 236] = 0xfa1d, [ 237] = 0x7d48, [ 238] = 0x7d5c, [ 239] = 0x7db7,
-+ [ 240] = 0x7da0, [ 241] = 0x7dd6, [ 242] = 0x7e52, [ 243] = 0x7f47,
-+ [ 244] = 0x7fa1, [ 245] = 0xfa1e, [ 246] = 0x8301, [ 247] = 0x8362,
-+ [ 248] = 0x837f, [ 249] = 0x83c7, [ 250] = 0x83f6, [ 251] = 0x8448,
-+ [ 252] = 0x84b4, [ 253] = 0x8553, [ 254] = 0x8559, [ 256] = 0x856b,
-+ [ 257] = 0xfa1f, [ 258] = 0x85b0, [ 259] = 0xfa20, [ 260] = 0xfa21,
-+ [ 261] = 0x8807, [ 262] = 0x88f5, [ 263] = 0x8a12, [ 264] = 0x8a37,
-+ [ 265] = 0x8a79, [ 266] = 0x8aa7, [ 267] = 0x8abe, [ 268] = 0x8adf,
-+ [ 269] = 0xfa22, [ 270] = 0x8af6, [ 271] = 0x8b53, [ 272] = 0x8b7f,
-+ [ 273] = 0x8cf0, [ 274] = 0x8cf4, [ 275] = 0x8d12, [ 276] = 0x8d76,
-+ [ 277] = 0xfa23, [ 278] = 0x8ecf, [ 279] = 0xfa24, [ 280] = 0xfa25,
-+ [ 281] = 0x9067, [ 282] = 0x90de, [ 283] = 0xfa26, [ 284] = 0x9115,
-+ [ 285] = 0x9127, [ 286] = 0x91da, [ 287] = 0x91d7, [ 288] = 0x91de,
-+ [ 289] = 0x91ed, [ 290] = 0x91ee, [ 291] = 0x91e4, [ 292] = 0x91e5,
-+ [ 293] = 0x9206, [ 294] = 0x9210, [ 295] = 0x920a, [ 296] = 0x923a,
-+ [ 297] = 0x9240, [ 298] = 0x923c, [ 299] = 0x924e, [ 300] = 0x9259,
-+ [ 301] = 0x9251, [ 302] = 0x9239, [ 303] = 0x9267, [ 304] = 0x92a7,
-+ [ 305] = 0x9277, [ 306] = 0x9278, [ 307] = 0x92e7, [ 308] = 0x92d7,
-+ [ 309] = 0x92d9, [ 310] = 0x92d0, [ 311] = 0xfa27, [ 312] = 0x92d5,
-+ [ 313] = 0x92e0, [ 314] = 0x92d3, [ 315] = 0x9325, [ 316] = 0x9321,
-+ [ 317] = 0x92fb, [ 318] = 0xfa28, [ 319] = 0x931e, [ 320] = 0x92ff,
-+ [ 321] = 0x931d, [ 322] = 0x9302, [ 323] = 0x9370, [ 324] = 0x9357,
-+ [ 325] = 0x93a4, [ 326] = 0x93c6, [ 327] = 0x93de, [ 328] = 0x93f8,
-+ [ 329] = 0x9431, [ 330] = 0x9445, [ 331] = 0x9448, [ 332] = 0x9592,
-+ [ 333] = 0xf9dc, [ 334] = 0xfa29, [ 335] = 0x969d, [ 336] = 0x96af,
-+ [ 337] = 0x9733, [ 338] = 0x973b, [ 339] = 0x9743, [ 340] = 0x974d,
-+ [ 341] = 0x974f, [ 342] = 0x9751, [ 343] = 0x9755, [ 344] = 0x9857,
-+ [ 345] = 0x9865, [ 346] = 0xfa2a, [ 347] = 0xfa2b, [ 348] = 0x9927,
-+ [ 349] = 0xfa2c, [ 350] = 0x999e, [ 351] = 0x9a4e, [ 352] = 0x9ad9,
-+ [ 353] = 0x9adc, [ 354] = 0x9b75, [ 355] = 0x9b72, [ 356] = 0x9b8f,
-+ [ 357] = 0x9bb1, [ 358] = 0x9bbb, [ 359] = 0x9c00, [ 360] = 0x9d70,
-+ [ 361] = 0x9d6b, [ 362] = 0xfa2d, [ 363] = 0x9e19, [ 364] = 0x9ed1,
-+ [ 367] = 0x2170, [ 368] = 0x2171, [ 369] = 0x2172, [ 370] = 0x2173,
-+ [ 371] = 0x2174, [ 372] = 0x2175, [ 373] = 0x2176, [ 374] = 0x2177,
-+ [ 375] = 0x2178, [ 376] = 0x2179, [ 377] = 0xffe2, [ 378] = 0xffe4,
-+ [ 379] = 0xff07, [ 380] = 0xff02
-+};
-+
-+static const uint16_t cjk_block7[396] =
-+{
-+ /* start = 0xfa40, end = 0xfc4b */
-+ [ 0] = 0x2170, [ 1] = 0x2171, [ 2] = 0x2172, [ 3] = 0x2173,
-+ [ 4] = 0x2174, [ 5] = 0x2175, [ 6] = 0x2176, [ 7] = 0x2177,
-+ [ 8] = 0x2178, [ 9] = 0x2179, [ 10] = 0x2160, [ 11] = 0x2161,
-+ [ 12] = 0x2162, [ 13] = 0x2163, [ 14] = 0x2164, [ 15] = 0x2165,
-+ [ 16] = 0x2166, [ 17] = 0x2167, [ 18] = 0x2168, [ 19] = 0x2169,
-+ [ 20] = 0xffe2, [ 21] = 0xffe4, [ 22] = 0xff07, [ 23] = 0xff02,
-+ [ 24] = 0x3231, [ 25] = 0x2116, [ 26] = 0x2121, [ 27] = 0x2235,
-+ [ 28] = 0x7e8a, [ 29] = 0x891c, [ 30] = 0x9348, [ 31] = 0x9288,
-+ [ 32] = 0x84dc, [ 33] = 0x4fc9, [ 34] = 0x70bb, [ 35] = 0x6631,
-+ [ 36] = 0x68c8, [ 37] = 0x92f9, [ 38] = 0x66fb, [ 39] = 0x5f45,
-+ [ 40] = 0x4e28, [ 41] = 0x4ee1, [ 42] = 0x4efc, [ 43] = 0x4f00,
-+ [ 44] = 0x4f03, [ 45] = 0x4f39, [ 46] = 0x4f56, [ 47] = 0x4f92,
-+ [ 48] = 0x4f8a, [ 49] = 0x4f9a, [ 50] = 0x4f94, [ 51] = 0x4fcd,
-+ [ 52] = 0x5040, [ 53] = 0x5022, [ 54] = 0x4fff, [ 55] = 0x501e,
-+ [ 56] = 0x5046, [ 57] = 0x5070, [ 58] = 0x5042, [ 59] = 0x5094,
-+ [ 60] = 0x50f4, [ 61] = 0x50d8, [ 62] = 0x514a, [ 64] = 0x5164,
-+ [ 65] = 0x519d, [ 66] = 0x51be, [ 67] = 0x51ec, [ 68] = 0x5215,
-+ [ 69] = 0x529c, [ 70] = 0x52a6, [ 71] = 0x52c0, [ 72] = 0x52db,
-+ [ 73] = 0x5300, [ 74] = 0x5307, [ 75] = 0x5324, [ 76] = 0x5372,
-+ [ 77] = 0x5393, [ 78] = 0x53b2, [ 79] = 0x53dd, [ 80] = 0xfa0e,
-+ [ 81] = 0x549c, [ 82] = 0x548a, [ 83] = 0x54a9, [ 84] = 0x54ff,
-+ [ 85] = 0x5586, [ 86] = 0x5759, [ 87] = 0x5765, [ 88] = 0x57ac,
-+ [ 89] = 0x57c8, [ 90] = 0x57c7, [ 91] = 0xfa0f, [ 92] = 0xfa10,
-+ [ 93] = 0x589e, [ 94] = 0x58b2, [ 95] = 0x590b, [ 96] = 0x5953,
-+ [ 97] = 0x595b, [ 98] = 0x595d, [ 99] = 0x5963, [ 100] = 0x59a4,
-+ [ 101] = 0x59ba, [ 102] = 0x5b56, [ 103] = 0x5bc0, [ 104] = 0x752f,
-+ [ 105] = 0x5bd8, [ 106] = 0x5bec, [ 107] = 0x5c1e, [ 108] = 0x5ca6,
-+ [ 109] = 0x5cba, [ 110] = 0x5cf5, [ 111] = 0x5d27, [ 112] = 0x5d53,
-+ [ 113] = 0xfa11, [ 114] = 0x5d42, [ 115] = 0x5d6d, [ 116] = 0x5db8,
-+ [ 117] = 0x5db9, [ 118] = 0x5dd0, [ 119] = 0x5f21, [ 120] = 0x5f34,
-+ [ 121] = 0x5f67, [ 122] = 0x5fb7, [ 123] = 0x5fde, [ 124] = 0x605d,
-+ [ 125] = 0x6085, [ 126] = 0x608a, [ 127] = 0x60de, [ 128] = 0x60d5,
-+ [ 129] = 0x6120, [ 130] = 0x60f2, [ 131] = 0x6111, [ 132] = 0x6137,
-+ [ 133] = 0x6130, [ 134] = 0x6198, [ 135] = 0x6213, [ 136] = 0x62a6,
-+ [ 137] = 0x63f5, [ 138] = 0x6460, [ 139] = 0x649d, [ 140] = 0x64ce,
-+ [ 141] = 0x654e, [ 142] = 0x6600, [ 143] = 0x6615, [ 144] = 0x663b,
-+ [ 145] = 0x6609, [ 146] = 0x662e, [ 147] = 0x661e, [ 148] = 0x6624,
-+ [ 149] = 0x6665, [ 150] = 0x6657, [ 151] = 0x6659, [ 152] = 0xfa12,
-+ [ 153] = 0x6673, [ 154] = 0x6699, [ 155] = 0x66a0, [ 156] = 0x66b2,
-+ [ 157] = 0x66bf, [ 158] = 0x66fa, [ 159] = 0x670e, [ 160] = 0xf929,
-+ [ 161] = 0x6766, [ 162] = 0x67bb, [ 163] = 0x6852, [ 164] = 0x67c0,
-+ [ 165] = 0x6801, [ 166] = 0x6844, [ 167] = 0x68cf, [ 168] = 0xfa13,
-+ [ 169] = 0x6968, [ 170] = 0xfa14, [ 171] = 0x6998, [ 172] = 0x69e2,
-+ [ 173] = 0x6a30, [ 174] = 0x6a6b, [ 175] = 0x6a46, [ 176] = 0x6a73,
-+ [ 177] = 0x6a7e, [ 178] = 0x6ae2, [ 179] = 0x6ae4, [ 180] = 0x6bd6,
-+ [ 181] = 0x6c3f, [ 182] = 0x6c5c, [ 183] = 0x6c86, [ 184] = 0x6c6f,
-+ [ 185] = 0x6cda, [ 186] = 0x6d04, [ 187] = 0x6d87, [ 188] = 0x6d6f,
-+ [ 192] = 0x6d96, [ 193] = 0x6dac, [ 194] = 0x6dcf, [ 195] = 0x6df8,
-+ [ 196] = 0x6df2, [ 197] = 0x6dfc, [ 198] = 0x6e39, [ 199] = 0x6e5c,
-+ [ 200] = 0x6e27, [ 201] = 0x6e3c, [ 202] = 0x6ebf, [ 203] = 0x6f88,
-+ [ 204] = 0x6fb5, [ 205] = 0x6ff5, [ 206] = 0x7005, [ 207] = 0x7007,
-+ [ 208] = 0x7028, [ 209] = 0x7085, [ 210] = 0x70ab, [ 211] = 0x710f,
-+ [ 212] = 0x7104, [ 213] = 0x715c, [ 214] = 0x7146, [ 215] = 0x7147,
-+ [ 216] = 0xfa15, [ 217] = 0x71c1, [ 218] = 0x71fe, [ 219] = 0x72b1,
-+ [ 220] = 0x72be, [ 221] = 0x7324, [ 222] = 0xfa16, [ 223] = 0x7377,
-+ [ 224] = 0x73bd, [ 225] = 0x73c9, [ 226] = 0x73d6, [ 227] = 0x73e3,
-+ [ 228] = 0x73d2, [ 229] = 0x7407, [ 230] = 0x73f5, [ 231] = 0x7426,
-+ [ 232] = 0x742a, [ 233] = 0x7429, [ 234] = 0x742e, [ 235] = 0x7462,
-+ [ 236] = 0x7489, [ 237] = 0x749f, [ 238] = 0x7501, [ 239] = 0x756f,
-+ [ 240] = 0x7682, [ 241] = 0x769c, [ 242] = 0x769e, [ 243] = 0x769b,
-+ [ 244] = 0x76a6, [ 245] = 0xfa17, [ 246] = 0x7746, [ 247] = 0x52af,
-+ [ 248] = 0x7821, [ 249] = 0x784e, [ 250] = 0x7864, [ 251] = 0x787a,
-+ [ 252] = 0x7930, [ 253] = 0xfa18, [ 254] = 0xfa19, [ 256] = 0xfa1a,
-+ [ 257] = 0x7994, [ 258] = 0xfa1b, [ 259] = 0x799b, [ 260] = 0x7ad1,
-+ [ 261] = 0x7ae7, [ 262] = 0xfa1c, [ 263] = 0x7aeb, [ 264] = 0x7b9e,
-+ [ 265] = 0xfa1d, [ 266] = 0x7d48, [ 267] = 0x7d5c, [ 268] = 0x7db7,
-+ [ 269] = 0x7da0, [ 270] = 0x7dd6, [ 271] = 0x7e52, [ 272] = 0x7f47,
-+ [ 273] = 0x7fa1, [ 274] = 0xfa1e, [ 275] = 0x8301, [ 276] = 0x8362,
-+ [ 277] = 0x837f, [ 278] = 0x83c7, [ 279] = 0x83f6, [ 280] = 0x8448,
-+ [ 281] = 0x84b4, [ 282] = 0x8553, [ 283] = 0x8559, [ 284] = 0x856b,
-+ [ 285] = 0xfa1f, [ 286] = 0x85b0, [ 287] = 0xfa20, [ 288] = 0xfa21,
-+ [ 289] = 0x8807, [ 290] = 0x88f5, [ 291] = 0x8a12, [ 292] = 0x8a37,
-+ [ 293] = 0x8a79, [ 294] = 0x8aa7, [ 295] = 0x8abe, [ 296] = 0x8adf,
-+ [ 297] = 0xfa22, [ 298] = 0x8af6, [ 299] = 0x8b53, [ 300] = 0x8b7f,
-+ [ 301] = 0x8cf0, [ 302] = 0x8cf4, [ 303] = 0x8d12, [ 304] = 0x8d76,
-+ [ 305] = 0xfa23, [ 306] = 0x8ecf, [ 307] = 0xfa24, [ 308] = 0xfa25,
-+ [ 309] = 0x9067, [ 310] = 0x90de, [ 311] = 0xfa26, [ 312] = 0x9115,
-+ [ 313] = 0x9127, [ 314] = 0x91da, [ 315] = 0x91d7, [ 316] = 0x91de,
-+ [ 317] = 0x91ed, [ 318] = 0x91ee, [ 319] = 0x91e4, [ 320] = 0x91e5,
-+ [ 321] = 0x9206, [ 322] = 0x9210, [ 323] = 0x920a, [ 324] = 0x923a,
-+ [ 325] = 0x9240, [ 326] = 0x923c, [ 327] = 0x924e, [ 328] = 0x9259,
-+ [ 329] = 0x9251, [ 330] = 0x9239, [ 331] = 0x9267, [ 332] = 0x92a7,
-+ [ 333] = 0x9277, [ 334] = 0x9278, [ 335] = 0x92e7, [ 336] = 0x92d7,
-+ [ 337] = 0x92d9, [ 338] = 0x92d0, [ 339] = 0xfa27, [ 340] = 0x92d5,
-+ [ 341] = 0x92e0, [ 342] = 0x92d3, [ 343] = 0x9325, [ 344] = 0x9321,
-+ [ 345] = 0x92fb, [ 346] = 0xfa28, [ 347] = 0x931e, [ 348] = 0x92ff,
-+ [ 349] = 0x931d, [ 350] = 0x9302, [ 351] = 0x9370, [ 352] = 0x9357,
-+ [ 353] = 0x93a4, [ 354] = 0x93c6, [ 355] = 0x93de, [ 356] = 0x93f8,
-+ [ 357] = 0x9431, [ 358] = 0x9445, [ 359] = 0x9448, [ 360] = 0x9592,
-+ [ 361] = 0xf9dc, [ 362] = 0xfa29, [ 363] = 0x969d, [ 364] = 0x96af,
-+ [ 365] = 0x9733, [ 366] = 0x973b, [ 367] = 0x9743, [ 368] = 0x974d,
-+ [ 369] = 0x974f, [ 370] = 0x9751, [ 371] = 0x9755, [ 372] = 0x9857,
-+ [ 373] = 0x9865, [ 374] = 0xfa2a, [ 375] = 0xfa2b, [ 376] = 0x9927,
-+ [ 377] = 0xfa2c, [ 378] = 0x999e, [ 379] = 0x9a4e, [ 380] = 0x9ad9,
-+ [ 384] = 0x9adc, [ 385] = 0x9b75, [ 386] = 0x9b72, [ 387] = 0x9b8f,
-+ [ 388] = 0x9bb1, [ 389] = 0x9bbb, [ 390] = 0x9c00, [ 391] = 0x9d70,
-+ [ 392] = 0x9d6b, [ 393] = 0xfa2d, [ 394] = 0x9e19, [ 395] = 0x9ed1
-+};
-+
-+static const char from_ucs4_lat1[248][2] =
-+{
-+ /* start = 0x0000, end = 0x00f7 */
-+ [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00",
-+ [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00",
-+ [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00",
-+ [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00",
-+ [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00",
-+ [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00",
-+ [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00",
-+ [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00",
-+ [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00",
-+ [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00",
-+ [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00",
-+ [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00",
-+ [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00",
-+ [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00",
-+ [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00",
-+ [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00",
-+ [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00",
-+ [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00",
-+ [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00",
-+ [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00",
-+ [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00",
-+ [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00",
-+ [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00",
-+ [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00",
-+ [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00",
-+ [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00",
-+ [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00",
-+ [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00",
-+ [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00",
-+ [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00",
-+ [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00",
-+ [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00",
-+ [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00",
-+ [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00",
-+ [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00",
-+ [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00",
-+ [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00",
-+ [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00",
-+ [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00",
-+ [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00",
-+ [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00",
-+ [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00",
-+ [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 162] = "\x81\x91",
-+ [ 163] = "\x81\x92", [ 165] = "\x5c\x00", [ 167] = "\x81\x98",
-+ [ 168] = "\x81\x4e", [ 172] = "\x81\xca", [ 176] = "\x81\x8b",
-+ [ 177] = "\x81\x7d", [ 180] = "\x81\x4c", [ 182] = "\x81\xf7",
-+ [ 215] = "\x81\x7e", [ 247] = "\x81\x80"
-+};
-+
-+static const char from_ucs4_greek[193][2] =
-+{
-+ /* start = 0x0391, end = 0x0451 */
-+ [ 0] = "\x83\x9f", [ 1] = "\x83\xa0", [ 2] = "\x83\xa1",
-+ [ 3] = "\x83\xa2", [ 4] = "\x83\xa3", [ 5] = "\x83\xa4",
-+ [ 6] = "\x83\xa5", [ 7] = "\x83\xa6", [ 8] = "\x83\xa7",
-+ [ 9] = "\x83\xa8", [ 10] = "\x83\xa9", [ 11] = "\x83\xaa",
-+ [ 12] = "\x83\xab", [ 13] = "\x83\xac", [ 14] = "\x83\xad",
-+ [ 15] = "\x83\xae", [ 16] = "\x83\xaf", [ 18] = "\x83\xb0",
-+ [ 19] = "\x83\xb1", [ 20] = "\x83\xb2", [ 21] = "\x83\xb3",
-+ [ 22] = "\x83\xb4", [ 23] = "\x83\xb5", [ 24] = "\x83\xb6",
-+ [ 32] = "\x83\xbf", [ 33] = "\x83\xc0", [ 34] = "\x83\xc1",
-+ [ 35] = "\x83\xc2", [ 36] = "\x83\xc3", [ 37] = "\x83\xc4",
-+ [ 38] = "\x83\xc5", [ 39] = "\x83\xc6", [ 40] = "\x83\xc7",
-+ [ 41] = "\x83\xc8", [ 42] = "\x83\xc9", [ 43] = "\x83\xca",
-+ [ 44] = "\x83\xcb", [ 45] = "\x83\xcc", [ 46] = "\x83\xcd",
-+ [ 47] = "\x83\xce", [ 48] = "\x83\xcf", [ 50] = "\x83\xd0",
-+ [ 51] = "\x83\xd1", [ 52] = "\x83\xd2", [ 53] = "\x83\xd3",
-+ [ 54] = "\x83\xd4", [ 55] = "\x83\xd5", [ 56] = "\x83\xd6",
-+ [ 112] = "\x84\x46", [ 127] = "\x84\x40", [ 128] = "\x84\x41",
-+ [ 129] = "\x84\x42", [ 130] = "\x84\x43", [ 131] = "\x84\x44",
-+ [ 132] = "\x84\x45", [ 133] = "\x84\x47", [ 134] = "\x84\x48",
-+ [ 135] = "\x84\x49", [ 136] = "\x84\x4a", [ 137] = "\x84\x4b",
-+ [ 138] = "\x84\x4c", [ 139] = "\x84\x4d", [ 140] = "\x84\x4e",
-+ [ 141] = "\x84\x4f", [ 142] = "\x84\x50", [ 143] = "\x84\x51",
-+ [ 144] = "\x84\x52", [ 145] = "\x84\x53", [ 146] = "\x84\x54",
-+ [ 147] = "\x84\x55", [ 148] = "\x84\x56", [ 149] = "\x84\x57",
-+ [ 150] = "\x84\x58", [ 151] = "\x84\x59", [ 152] = "\x84\x5a",
-+ [ 153] = "\x84\x5b", [ 154] = "\x84\x5c", [ 155] = "\x84\x5d",
-+ [ 156] = "\x84\x5e", [ 157] = "\x84\x5f", [ 158] = "\x84\x60",
-+ [ 159] = "\x84\x70", [ 160] = "\x84\x71", [ 161] = "\x84\x72",
-+ [ 162] = "\x84\x73", [ 163] = "\x84\x74", [ 164] = "\x84\x75",
-+ [ 165] = "\x84\x77", [ 166] = "\x84\x78", [ 167] = "\x84\x79",
-+ [ 168] = "\x84\x7a", [ 169] = "\x84\x7b", [ 170] = "\x84\x7c",
-+ [ 171] = "\x84\x7d", [ 172] = "\x84\x7e", [ 173] = "\x84\x80",
-+ [ 174] = "\x84\x81", [ 175] = "\x84\x82", [ 176] = "\x84\x83",
-+ [ 177] = "\x84\x84", [ 178] = "\x84\x85", [ 179] = "\x84\x86",
-+ [ 180] = "\x84\x87", [ 181] = "\x84\x88", [ 182] = "\x84\x89",
-+ [ 183] = "\x84\x8a", [ 184] = "\x84\x8b", [ 185] = "\x84\x8c",
-+ [ 186] = "\x84\x8d", [ 187] = "\x84\x8e", [ 188] = "\x84\x8f",
-+ [ 189] = "\x84\x90", [ 190] = "\x84\x91", [ 192] = "\x84\x76"
-+};
-+
-+static const char from_ucs4_cjk[32657][2] =
-+{
-+ /* start = 0x2010, end = 0x9fa0 */
-+ [ 0] = "\x81\x5d", [ 4] = "\x81\x5c", [ 5] = "\x81\x5c",
-+ [ 6] = "\x81\x61", [ 8] = "\x81\x65", [ 9] = "\x81\x66",
-+ [ 12] = "\x81\x67", [ 13] = "\x81\x68", [ 16] = "\x81\xf5",
-+ [ 17] = "\x81\xf6", [ 21] = "\x81\x64", [ 22] = "\x81\x63",
-+ [ 32] = "\x81\xf1", [ 34] = "\x81\x8c", [ 35] = "\x81\x8d",
-+ [ 43] = "\x81\xa6", [ 46] = "\x7e\x00", [ 243] = "\x81\x8e",
-+ [ 262] = "\x87\x82", [ 273] = "\x87\x84", [ 283] = "\x81\xf0",
-+ [ 336] = "\x87\x54", [ 337] = "\x87\x55", [ 338] = "\x87\x56",
-+ [ 339] = "\x87\x57", [ 340] = "\x87\x58", [ 341] = "\x87\x59",
-+ [ 342] = "\x87\x5a", [ 343] = "\x87\x5b", [ 344] = "\x87\x5c",
-+ [ 345] = "\x87\x5d", [ 352] = "\xfa\x40", [ 353] = "\xfa\x41",
-+ [ 354] = "\xfa\x42", [ 355] = "\xfa\x43", [ 356] = "\xfa\x44",
-+ [ 357] = "\xfa\x45", [ 358] = "\xfa\x46", [ 359] = "\xfa\x47",
-+ [ 360] = "\xfa\x48", [ 361] = "\xfa\x49", [ 384] = "\x81\xa9",
-+ [ 385] = "\x81\xaa", [ 386] = "\x81\xa8", [ 387] = "\x81\xab",
-+ [ 450] = "\x81\xcb", [ 452] = "\x81\xcc", [ 496] = "\x81\xcd",
-+ [ 498] = "\x81\xdd", [ 499] = "\x81\xce", [ 503] = "\x81\xde",
-+ [ 504] = "\x81\xb8", [ 507] = "\x81\xb9", [ 513] = "\x87\x94",
-+ [ 514] = "\x81\x7c", [ 522] = "\x81\xe3", [ 525] = "\x81\xe5",
-+ [ 526] = "\x81\x87", [ 527] = "\x87\x98", [ 528] = "\x81\xda",
-+ [ 533] = "\x81\x61", [ 535] = "\x81\xc8", [ 536] = "\x81\xc9",
-+ [ 537] = "\x81\xbf", [ 538] = "\x81\xbe", [ 539] = "\x81\xe7",
-+ [ 540] = "\x81\xe8", [ 542] = "\x87\x93", [ 548] = "\x81\x88",
-+ [ 549] = "\x81\xe6", [ 557] = "\x81\xe4", [ 578] = "\x81\xe0",
-+ [ 592] = "\x81\x82", [ 593] = "\x81\xdf", [ 598] = "\x81\x85",
-+ [ 599] = "\x81\x86", [ 602] = "\x81\xe1", [ 603] = "\x81\xe2",
-+ [ 626] = "\x81\xbc", [ 627] = "\x81\xbd", [ 630] = "\x81\xba",
-+ [ 631] = "\x81\xbb", [ 661] = "\x81\xdb", [ 687] = "\x87\x99",
-+ [ 770] = "\x81\xdc", [ 1104] = "\x87\x40", [ 1105] = "\x87\x41",
-+ [ 1106] = "\x87\x42", [ 1107] = "\x87\x43", [ 1108] = "\x87\x44",
-+ [ 1109] = "\x87\x45", [ 1110] = "\x87\x46", [ 1111] = "\x87\x47",
-+ [ 1112] = "\x87\x48", [ 1113] = "\x87\x49", [ 1114] = "\x87\x4a",
-+ [ 1115] = "\x87\x4b", [ 1116] = "\x87\x4c", [ 1117] = "\x87\x4d",
-+ [ 1118] = "\x87\x4e", [ 1119] = "\x87\x4f", [ 1120] = "\x87\x50",
-+ [ 1121] = "\x87\x51", [ 1122] = "\x87\x52", [ 1123] = "\x87\x53",
-+ [ 1264] = "\x84\x9f", [ 1265] = "\x84\xaa", [ 1266] = "\x84\xa0",
-+ [ 1267] = "\x84\xab", [ 1276] = "\x84\xa1", [ 1279] = "\x84\xac",
-+ [ 1280] = "\x84\xa2", [ 1283] = "\x84\xad", [ 1284] = "\x84\xa4",
-+ [ 1287] = "\x84\xaf", [ 1288] = "\x84\xa3", [ 1291] = "\x84\xae",
-+ [ 1292] = "\x84\xa5", [ 1293] = "\x84\xba", [ 1296] = "\x84\xb5",
-+ [ 1299] = "\x84\xb0", [ 1300] = "\x84\xa7", [ 1301] = "\x84\xbc",
-+ [ 1304] = "\x84\xb7", [ 1307] = "\x84\xb2", [ 1308] = "\x84\xa6",
-+ [ 1311] = "\x84\xb6", [ 1312] = "\x84\xbb", [ 1315] = "\x84\xb1",
-+ [ 1316] = "\x84\xa8", [ 1319] = "\x84\xb8", [ 1320] = "\x84\xbd",
-+ [ 1323] = "\x84\xb3", [ 1324] = "\x84\xa9", [ 1327] = "\x84\xb9",
-+ [ 1330] = "\x84\xbe", [ 1339] = "\x84\xb4", [ 1424] = "\x81\xa1",
-+ [ 1425] = "\x81\xa0", [ 1442] = "\x81\xa3", [ 1443] = "\x81\xa2",
-+ [ 1452] = "\x81\xa5", [ 1453] = "\x81\xa4", [ 1462] = "\x81\x9f",
-+ [ 1463] = "\x81\x9e", [ 1467] = "\x81\x9b", [ 1470] = "\x81\x9d",
-+ [ 1471] = "\x81\x9c", [ 1503] = "\x81\xfc", [ 1525] = "\x81\x9a",
-+ [ 1526] = "\x81\x99", [ 1584] = "\x81\x8a", [ 1586] = "\x81\x89",
-+ [ 1626] = "\x81\xf4", [ 1629] = "\x81\xf3", [ 1631] = "\x81\xf2",
-+ [ 4080] = "\x81\x40", [ 4081] = "\x81\x41", [ 4082] = "\x81\x42",
-+ [ 4083] = "\x81\x56", [ 4085] = "\x81\x58", [ 4086] = "\x81\x59",
-+ [ 4087] = "\x81\x5a", [ 4088] = "\x81\x71", [ 4089] = "\x81\x72",
-+ [ 4090] = "\x81\x73", [ 4091] = "\x81\x74", [ 4092] = "\x81\x75",
-+ [ 4093] = "\x81\x76", [ 4094] = "\x81\x77", [ 4095] = "\x81\x78",
-+ [ 4096] = "\x81\x79", [ 4097] = "\x81\x7a", [ 4098] = "\x81\xa7",
-+ [ 4099] = "\x81\xac", [ 4100] = "\x81\x6b", [ 4101] = "\x81\x6c",
-+ [ 4108] = "\x81\x60", [ 4109] = "\x87\x80", [ 4111] = "\x87\x81",
-+ [ 4145] = "\x82\x9f", [ 4146] = "\x82\xa0", [ 4147] = "\x82\xa1",
-+ [ 4148] = "\x82\xa2", [ 4149] = "\x82\xa3", [ 4150] = "\x82\xa4",
-+ [ 4151] = "\x82\xa5", [ 4152] = "\x82\xa6", [ 4153] = "\x82\xa7",
-+ [ 4154] = "\x82\xa8", [ 4155] = "\x82\xa9", [ 4156] = "\x82\xaa",
-+ [ 4157] = "\x82\xab", [ 4158] = "\x82\xac", [ 4159] = "\x82\xad",
-+ [ 4160] = "\x82\xae", [ 4161] = "\x82\xaf", [ 4162] = "\x82\xb0",
-+ [ 4163] = "\x82\xb1", [ 4164] = "\x82\xb2", [ 4165] = "\x82\xb3",
-+ [ 4166] = "\x82\xb4", [ 4167] = "\x82\xb5", [ 4168] = "\x82\xb6",
-+ [ 4169] = "\x82\xb7", [ 4170] = "\x82\xb8", [ 4171] = "\x82\xb9",
-+ [ 4172] = "\x82\xba", [ 4173] = "\x82\xbb", [ 4174] = "\x82\xbc",
-+ [ 4175] = "\x82\xbd", [ 4176] = "\x82\xbe", [ 4177] = "\x82\xbf",
-+ [ 4178] = "\x82\xc0", [ 4179] = "\x82\xc1", [ 4180] = "\x82\xc2",
-+ [ 4181] = "\x82\xc3", [ 4182] = "\x82\xc4", [ 4183] = "\x82\xc5",
-+ [ 4184] = "\x82\xc6", [ 4185] = "\x82\xc7", [ 4186] = "\x82\xc8",
-+ [ 4187] = "\x82\xc9", [ 4188] = "\x82\xca", [ 4189] = "\x82\xcb",
-+ [ 4190] = "\x82\xcc", [ 4191] = "\x82\xcd", [ 4192] = "\x82\xce",
-+ [ 4193] = "\x82\xcf", [ 4194] = "\x82\xd0", [ 4195] = "\x82\xd1",
-+ [ 4196] = "\x82\xd2", [ 4197] = "\x82\xd3", [ 4198] = "\x82\xd4",
-+ [ 4199] = "\x82\xd5", [ 4200] = "\x82\xd6", [ 4201] = "\x82\xd7",
-+ [ 4202] = "\x82\xd8", [ 4203] = "\x82\xd9", [ 4204] = "\x82\xda",
-+ [ 4205] = "\x82\xdb", [ 4206] = "\x82\xdc", [ 4207] = "\x82\xdd",
-+ [ 4208] = "\x82\xde", [ 4209] = "\x82\xdf", [ 4210] = "\x82\xe0",
-+ [ 4211] = "\x82\xe1", [ 4212] = "\x82\xe2", [ 4213] = "\x82\xe3",
-+ [ 4214] = "\x82\xe4", [ 4215] = "\x82\xe5", [ 4216] = "\x82\xe6",
-+ [ 4217] = "\x82\xe7", [ 4218] = "\x82\xe8", [ 4219] = "\x82\xe9",
-+ [ 4220] = "\x82\xea", [ 4221] = "\x82\xeb", [ 4222] = "\x82\xec",
-+ [ 4223] = "\x82\xed", [ 4224] = "\x82\xee", [ 4225] = "\x82\xef",
-+ [ 4226] = "\x82\xf0", [ 4227] = "\x82\xf1", [ 4235] = "\x81\x4a",
-+ [ 4236] = "\x81\x4b", [ 4237] = "\x81\x54", [ 4238] = "\x81\x55",
-+ [ 4241] = "\x83\x40", [ 4242] = "\x83\x41", [ 4243] = "\x83\x42",
-+ [ 4244] = "\x83\x43", [ 4245] = "\x83\x44", [ 4246] = "\x83\x45",
-+ [ 4247] = "\x83\x46", [ 4248] = "\x83\x47", [ 4249] = "\x83\x48",
-+ [ 4250] = "\x83\x49", [ 4251] = "\x83\x4a", [ 4252] = "\x83\x4b",
-+ [ 4253] = "\x83\x4c", [ 4254] = "\x83\x4d", [ 4255] = "\x83\x4e",
-+ [ 4256] = "\x83\x4f", [ 4257] = "\x83\x50", [ 4258] = "\x83\x51",
-+ [ 4259] = "\x83\x52", [ 4260] = "\x83\x53", [ 4261] = "\x83\x54",
-+ [ 4262] = "\x83\x55", [ 4263] = "\x83\x56", [ 4264] = "\x83\x57",
-+ [ 4265] = "\x83\x58", [ 4266] = "\x83\x59", [ 4267] = "\x83\x5a",
-+ [ 4268] = "\x83\x5b", [ 4269] = "\x83\x5c", [ 4270] = "\x83\x5d",
-+ [ 4271] = "\x83\x5e", [ 4272] = "\x83\x5f", [ 4273] = "\x83\x60",
-+ [ 4274] = "\x83\x61", [ 4275] = "\x83\x62", [ 4276] = "\x83\x63",
-+ [ 4277] = "\x83\x64", [ 4278] = "\x83\x65", [ 4279] = "\x83\x66",
-+ [ 4280] = "\x83\x67", [ 4281] = "\x83\x68", [ 4282] = "\x83\x69",
-+ [ 4283] = "\x83\x6a", [ 4284] = "\x83\x6b", [ 4285] = "\x83\x6c",
-+ [ 4286] = "\x83\x6d", [ 4287] = "\x83\x6e", [ 4288] = "\x83\x6f",
-+ [ 4289] = "\x83\x70", [ 4290] = "\x83\x71", [ 4291] = "\x83\x72",
-+ [ 4292] = "\x83\x73", [ 4293] = "\x83\x74", [ 4294] = "\x83\x75",
-+ [ 4295] = "\x83\x76", [ 4296] = "\x83\x77", [ 4297] = "\x83\x78",
-+ [ 4298] = "\x83\x79", [ 4299] = "\x83\x7a", [ 4300] = "\x83\x7b",
-+ [ 4301] = "\x83\x7c", [ 4302] = "\x83\x7d", [ 4303] = "\x83\x7e",
-+ [ 4304] = "\x83\x80", [ 4305] = "\x83\x81", [ 4306] = "\x83\x82",
-+ [ 4307] = "\x83\x83", [ 4308] = "\x83\x84", [ 4309] = "\x83\x85",
-+ [ 4310] = "\x83\x86", [ 4311] = "\x83\x87", [ 4312] = "\x83\x88",
-+ [ 4313] = "\x83\x89", [ 4314] = "\x83\x8a", [ 4315] = "\x83\x8b",
-+ [ 4316] = "\x83\x8c", [ 4317] = "\x83\x8d", [ 4318] = "\x83\x8e",
-+ [ 4319] = "\x83\x8f", [ 4320] = "\x83\x90", [ 4321] = "\x83\x91",
-+ [ 4322] = "\x83\x92", [ 4323] = "\x83\x93", [ 4324] = "\x83\x94",
-+ [ 4325] = "\x83\x95", [ 4326] = "\x83\x96", [ 4331] = "\x81\x45",
-+ [ 4332] = "\x81\x5b", [ 4333] = "\x81\x52", [ 4334] = "\x81\x53",
-+ [ 4641] = "\x87\x8a", [ 4642] = "\x87\x8b", [ 4649] = "\x87\x8c",
-+ [ 4756] = "\x87\x85", [ 4757] = "\x87\x86", [ 4758] = "\x87\x87",
-+ [ 4759] = "\x87\x88", [ 4760] = "\x87\x89", [ 4851] = "\x87\x65",
-+ [ 4861] = "\x87\x69", [ 4868] = "\x87\x60", [ 4872] = "\x87\x63",
-+ [ 4882] = "\x87\x61", [ 4883] = "\x87\x6b", [ 4886] = "\x87\x6a",
-+ [ 4887] = "\x87\x64", [ 4891] = "\x87\x6c", [ 4902] = "\x87\x66",
-+ [ 4907] = "\x87\x6e", [ 4921] = "\x87\x5f", [ 4922] = "\x87\x6d",
-+ [ 4925] = "\x87\x62", [ 4929] = "\x87\x67", [ 4935] = "\x87\x68",
-+ [ 4971] = "\x87\x7e", [ 4972] = "\x87\x8f", [ 4973] = "\x87\x8e",
-+ [ 4974] = "\x87\x8d", [ 4990] = "\x87\x72", [ 4991] = "\x87\x73",
-+ [ 5004] = "\x87\x6f", [ 5005] = "\x87\x70", [ 5006] = "\x87\x71",
-+ [ 5009] = "\x87\x75", [ 5044] = "\x87\x74", [ 5053] = "\x87\x83",
-+ [11760] = "\x88\xea", [11761] = "\x92\x9a", [11763] = "\x8e\xb5",
-+ [11767] = "\x96\x9c", [11768] = "\x8f\xe4", [11769] = "\x8e\x4f",
-+ [11770] = "\x8f\xe3", [11771] = "\x89\xba", [11773] = "\x95\x73",
-+ [11774] = "\x97\x5e", [11776] = "\x98\xa0", [11777] = "\x89\x4e",
-+ [11780] = "\x8a\x8e", [11781] = "\x98\xa1", [11782] = "\x90\xa2",
-+ [11783] = "\x99\xc0", [11784] = "\x8b\x75", [11785] = "\x95\xb8",
-+ [11790] = "\x8f\xe5", [11793] = "\x97\xbc", [11798] = "\x95\xc0",
-+ [11800] = "\xfa\x68", [11802] = "\x98\xa2", [11805] = "\x92\x86",
-+ [11809] = "\x98\xa3", [11810] = "\x8b\xf8", [11814] = "\x98\xa4",
-+ [11816] = "\x8a\xdb", [11817] = "\x92\x4f", [11819] = "\x8e\xe5",
-+ [11820] = "\x98\xa5", [11823] = "\x98\xa6", [11826] = "\x98\xa7",
-+ [11827] = "\x94\x54", [11829] = "\x8b\x76", [11835] = "\x94\x56",
-+ [11837] = "\x93\xe1", [11838] = "\x8c\xc1", [11839] = "\x96\x52",
-+ [11845] = "\xe5\x68", [11846] = "\x98\xa8", [11847] = "\x8f\xe6",
-+ [11848] = "\x98\xa9", [11849] = "\x89\xb3", [11853] = "\x8b\xe3",
-+ [11854] = "\x8c\xee", [11855] = "\x96\xe7", [11858] = "\x9b\xa4",
-+ [11873] = "\x97\x90", [11875] = "\x93\xfb", [11886] = "\x8a\xa3",
-+ [11888] = "\x8b\x54", [11890] = "\x98\xaa", [11893] = "\x98\xab",
-+ [11894] = "\x97\xb9", [11896] = "\x97\x5c", [11897] = "\x91\x88",
-+ [11898] = "\x98\xad", [11899] = "\x8e\x96", [11900] = "\x93\xf1",
-+ [11902] = "\x98\xb0", [11905] = "\x89\x5d", [11906] = "\x8c\xdd",
-+ [11908] = "\x8c\xdc", [11909] = "\x88\xe4", [11912] = "\x98\x6a",
-+ [11913] = "\x98\x69", [11915] = "\x8d\xb1", [11916] = "\x88\x9f",
-+ [11918] = "\x98\xb1", [11919] = "\x98\xb2", [11920] = "\x98\xb3",
-+ [11921] = "\x96\x53", [11922] = "\x98\xb4", [11924] = "\x8c\xf0",
-+ [11925] = "\x88\xe5", [11926] = "\x96\x92", [11928] = "\x8b\x9c",
-+ [11931] = "\x8b\x9d", [11932] = "\x8b\x9e", [11933] = "\x92\xe0",
-+ [11934] = "\x97\xba", [11936] = "\x98\xb5", [11939] = "\x98\xb6",
-+ [11942] = "\x98\xb7", [11946] = "\x90\x6c", [11952] = "\x8f\x59",
-+ [11953] = "\x90\x6d", [11954] = "\x98\xbc", [11956] = "\x98\xba",
-+ [11958] = "\x98\xbb", [11959] = "\x8b\x77", [11962] = "\x8d\xa1",
-+ [11963] = "\x89\xee", [11965] = "\x98\xb9", [11966] = "\x98\xb8",
-+ [11967] = "\x95\xa7", [11972] = "\x8e\x65", [11973] = "\x8e\x64",
-+ [11974] = "\x91\xbc", [11975] = "\x98\xbd", [11976] = "\x95\x74",
-+ [11977] = "\x90\xe5", [11981] = "\x81\x57", [11982] = "\x98\xbe",
-+ [11983] = "\x98\xc0", [11985] = "\xfa\x69", [11987] = "\x91\xe3",
-+ [11988] = "\x97\xdf", [11989] = "\x88\xc8", [11997] = "\x98\xbf",
-+ [11998] = "\x89\xbc", [12000] = "\x8b\xc2", [12002] = "\x92\x87",
-+ [12006] = "\x8c\x8f", [12007] = "\x98\xc1", [12011] = "\x94\x43",
-+ [12012] = "\xfa\x6a", [12016] = "\xfa\x6b", [12017] = "\x8a\xe9",
-+ [12019] = "\xfa\x6c", [12025] = "\x98\xc2", [12026] = "\x88\xc9",
-+ [12029] = "\x8c\xde", [12030] = "\x8a\xea", [12031] = "\x95\x9a",
-+ [12032] = "\x94\xb0", [12033] = "\x8b\x78", [12042] = "\x89\xef",
-+ [12044] = "\x98\xe5", [12045] = "\x93\x60", [12063] = "\x94\x8c",
-+ [12064] = "\x98\xc4", [12068] = "\x94\xba", [12070] = "\x97\xe0",
-+ [12072] = "\x90\x4c", [12073] = "\xfa\x6d", [12074] = "\x8e\x66",
-+ [12076] = "\x8e\x97", [12077] = "\x89\xbe", [12083] = "\x92\xcf",
-+ [12086] = "\x92\x41", [12087] = "\x98\xc8", [12093] = "\x88\xca",
-+ [12094] = "\x92\xe1", [12095] = "\x8f\x5a", [12096] = "\x8d\xb2",
-+ [12097] = "\x97\x43", [12099] = "\x91\xcc", [12101] = "\x89\xbd",
-+ [12102] = "\xfa\x6e", [12103] = "\x98\xc7", [12105] = "\x97\x5d",
-+ [12106] = "\x98\xc3", [12107] = "\x98\xc5", [12108] = "\x8d\xec",
-+ [12109] = "\x98\xc6", [12110] = "\x9b\x43", [12121] = "\x98\xce",
-+ [12127] = "\x98\xd1", [12128] = "\x98\xcf", [12131] = "\x89\xc0",
-+ [12133] = "\x95\xb9", [12134] = "\x98\xc9", [12139] = "\x98\xcd",
-+ [12140] = "\x8c\xf1", [12143] = "\x8e\x67", [12147] = "\x8a\xa4",
-+ [12150] = "\x98\xd2", [12152] = "\x98\xca", [12154] = "\xfa\x70",
-+ [12155] = "\x97\xe1", [12157] = "\x8e\x98", [12159] = "\x98\xcb",
-+ [12161] = "\x98\xd0", [12162] = "\xfa\x6f", [12164] = "\xfa\x72",
-+ [12166] = "\x98\xd3", [12168] = "\x98\xcc", [12170] = "\xfa\x71",
-+ [12171] = "\x8b\x9f", [12173] = "\x88\xcb", [12176] = "\x8b\xa0",
-+ [12177] = "\x89\xbf", [12187] = "\x9b\x44", [12189] = "\x96\x99",
-+ [12190] = "\x95\x8e", [12191] = "\x8c\xf2", [12197] = "\x90\x4e",
-+ [12198] = "\x97\xb5", [12207] = "\x95\xd6", [12210] = "\x8c\x57",
-+ [12211] = "\x91\xa3", [12212] = "\x89\xe2", [12217] = "\xfa\x61",
-+ [12218] = "\x8f\x72", [12221] = "\xfa\x73", [12222] = "\x98\xd7",
-+ [12224] = "\x98\xdc", [12225] = "\x98\xda", [12228] = "\x98\xd5",
-+ [12231] = "\x91\xad", [12232] = "\x98\xd8", [12234] = "\x98\xdb",
-+ [12235] = "\x98\xd9", [12237] = "\x95\xdb", [12239] = "\x98\xd6",
-+ [12241] = "\x90\x4d", [12243] = "\x96\x93", [12244] = "\x98\xdd",
-+ [12245] = "\x98\xde", [12254] = "\x8f\x43", [12255] = "\x98\xeb",
-+ [12259] = "\x94\x6f", [12261] = "\x95\x55", [12262] = "\x98\xe6",
-+ [12264] = "\x95\xee", [12266] = "\x89\xb4", [12270] = "\x98\xea",
-+ [12271] = "\xfa\x76", [12277] = "\x98\xe4", [12278] = "\x98\xed",
-+ [12281] = "\x91\x71", [12283] = "\x8c\xc2", [12285] = "\x94\x7b",
-+ [12287] = "\xe0\xc5", [12289] = "\x98\xec", [12290] = "\x93\x7c",
-+ [12292] = "\x98\xe1", [12294] = "\x8c\xf4", [12297] = "\x8c\xf3",
-+ [12298] = "\x98\xdf", [12302] = "\xfa\x77", [12303] = "\x8e\xd8",
-+ [12305] = "\x98\xe7", [12306] = "\xfa\x75", [12307] = "\x95\xed",
-+ [12308] = "\x92\x6c", [12309] = "\x98\xe3", [12310] = "\x8c\x91",
-+ [12312] = "\x98\xe0", [12313] = "\x98\xe8", [12314] = "\x98\xe2",
-+ [12315] = "\x97\xcf", [12316] = "\x98\xe9", [12317] = "\x98\x60",
-+ [12326] = "\x8b\xe4", [12329] = "\x8c\x90", [12336] = "\xfa\x74",
-+ [12338] = "\xfa\x7a", [12339] = "\x98\xee", [12342] = "\xfa\x78",
-+ [12343] = "\x98\xef", [12344] = "\x98\xf3", [12345] = "\x88\xcc",
-+ [12351] = "\x95\xce", [12352] = "\x98\xf2", [12357] = "\x98\xf1",
-+ [12358] = "\x98\xf5", [12362] = "\x98\xf4", [12364] = "\x92\xe2",
-+ [12373] = "\x8c\x92", [12380] = "\x98\xf6", [12384] = "\xfa\x79",
-+ [12386] = "\x8e\xc3", [12388] = "\x91\xa4", [12389] = "\x92\xe3",
-+ [12390] = "\x8b\xf4", [12392] = "\x98\xf7", [12397] = "\x8b\x55",
-+ [12400] = "\x98\xf8", [12405] = "\x98\xfa", [12413] = "\x96\x54",
-+ [12417] = "\x8c\x86", [12420] = "\xfa\x7b", [12424] = "\x8e\x50",
-+ [12425] = "\x94\xf5", [12426] = "\x98\xf9", [12444] = "\x8d\xc3",
-+ [12445] = "\x97\x62", [12450] = "\x98\xfc", [12451] = "\x99\x42",
-+ [12452] = "\x98\xfb", [12453] = "\x8d\xc2", [12455] = "\x8f\x9d",
-+ [12462] = "\x8c\x58", [12466] = "\x99\x43", [12469] = "\x8b\xcd",
-+ [12473] = "\x99\x40", [12474] = "\x99\x41", [12477] = "\x93\xad",
-+ [12479] = "\x91\x9c", [12481] = "\x8b\xa1", [12485] = "\x96\x6c",
-+ [12486] = "\x99\x44", [12488] = "\xfa\x7d", [12490] = "\x97\xbb",
-+ [12494] = "\x99\x45", [12499] = "\x99\x48", [12501] = "\x99\x46",
-+ [12503] = "\x91\x6d", [12509] = "\x99\x47", [12510] = "\x99\x49",
-+ [12516] = "\xfa\x7c", [12517] = "\x99\x4b", [12521] = "\x99\x4a",
-+ [12523] = "\x95\xc6", [12528] = "\x8b\x56", [12529] = "\x99\x4d",
-+ [12530] = "\x99\x4e", [12532] = "\x89\xad", [12537] = "\x99\x4c",
-+ [12546] = "\x8e\xf2", [12548] = "\x99\x51", [12549] = "\x99\x50",
-+ [12550] = "\x99\x4f", [12552] = "\x98\xd4", [12554] = "\x99\x52",
-+ [12559] = "\x8f\x9e", [12561] = "\x99\x53", [12570] = "\x97\x44",
-+ [12578] = "\x96\xd7", [12583] = "\x99\x55", [12586] = "\x99\x54",
-+ [12587] = "\x99\x57", [12588] = "\x99\x56", [12591] = "\x99\x58",
-+ [12592] = "\x99\x59", [12593] = "\x88\xf2", [12595] = "\x8c\xb3",
-+ [12596] = "\x8c\x5a", [12597] = "\x8f\x5b", [12598] = "\x92\x9b",
-+ [12599] = "\x8b\xa2", [12600] = "\x90\xe6", [12601] = "\x8c\xf5",
-+ [12602] = "\xfa\x7e", [12603] = "\x8d\x8e", [12604] = "\x99\x5b",
-+ [12605] = "\x96\xc6", [12606] = "\x93\x65", [12608] = "\x8e\x99",
-+ [12610] = "\x99\x5a", [12612] = "\x99\x5c", [12618] = "\x93\x7d",
-+ [12620] = "\x8a\x95", [12626] = "\x99\x5d", [12628] = "\xfa\x80",
-+ [12629] = "\x93\xfc", [12632] = "\x91\x53", [12633] = "\x99\x5f",
-+ [12634] = "\x99\x60", [12635] = "\x94\xaa", [12636] = "\x8c\xf6",
-+ [12637] = "\x98\x5a", [12638] = "\x99\x61", [12641] = "\x8b\xa4",
-+ [12645] = "\x95\xba", [12646] = "\x91\xb4", [12647] = "\x8b\xef",
-+ [12648] = "\x93\x54", [12652] = "\x8c\x93", [12656] = "\x99\x62",
-+ [12658] = "\x99\x63", [12661] = "\x93\xe0", [12662] = "\x89\x7e",
-+ [12665] = "\x99\x66", [12666] = "\x8d\xfb", [12668] = "\x99\x65",
-+ [12669] = "\x8d\xc4", [12671] = "\x99\x67", [12672] = "\xe3\xec",
-+ [12673] = "\x99\x68", [12674] = "\x96\x60", [12675] = "\x99\x69",
-+ [12677] = "\x99\x6a", [12678] = "\x99\x6b", [12679] = "\x8f\xe7",
-+ [12681] = "\x8e\xca", [12685] = "\xfa\x81", [12688] = "\x8a\xa5",
-+ [12690] = "\x99\x6e", [12692] = "\x99\x6c", [12693] = "\x96\xbb",
-+ [12694] = "\x99\x6d", [12696] = "\x95\x79", [12697] = "\x99\x6f",
-+ [12698] = "\x99\x70", [12699] = "\x99\x71", [12700] = "\x93\x7e",
-+ [12704] = "\x99\x75", [12705] = "\x99\x73", [12706] = "\x99\x74",
-+ [12707] = "\x99\x72", [12708] = "\x8d\xe1", [12709] = "\x99\x76",
-+ [12710] = "\x96\xe8", [12711] = "\x97\xe2", [12717] = "\x99\x77",
-+ [12718] = "\xfa\x82", [12724] = "\x90\xa6", [12725] = "\x99\x78",
-+ [12726] = "\x8f\x79", [12729] = "\x99\x79", [12731] = "\x92\x9c",
-+ [12732] = "\x97\xbd", [12733] = "\x93\x80", [12742] = "\x99\xc3",
-+ [12747] = "\x99\x7a", [12748] = "\xea\xa3", [12749] = "\x8b\xc3",
-+ [12752] = "\x99\x7b", [12753] = "\x96\x7d", [12758] = "\x8f\x88",
-+ [12759] = "\x91\xfa", [12761] = "\x99\x7d", [12762] = "\x93\xe2",
-+ [12764] = "\xfa\x83", [12765] = "\x99\x7e", [12768] = "\x99\x80",
-+ [12769] = "\x8a\x4d", [12773] = "\x99\x81", [12774] = "\x8b\xa5",
-+ [12776] = "\x93\xca", [12777] = "\x89\x9a", [12778] = "\x8f\x6f",
-+ [12781] = "\x94\x9f", [12782] = "\x99\x82", [12784] = "\x93\x81",
-+ [12787] = "\x90\x6e", [12788] = "\x99\x83", [12790] = "\x95\xaa",
-+ [12791] = "\x90\xd8", [12792] = "\x8a\xa0", [12794] = "\x8a\xa7",
-+ [12795] = "\x99\x84", [12798] = "\x99\x86", [12801] = "\x8c\x59",
-+ [12804] = "\x99\x85", [12805] = "\xfa\x84", [12807] = "\x97\xf1",
-+ [12813] = "\x8f\x89", [12820] = "\x94\xbb", [12821] = "\x95\xca",
-+ [12823] = "\x99\x87", [12825] = "\x97\x98", [12826] = "\x99\x88",
-+ [12830] = "\x99\x89", [12832] = "\x93\x9e", [12835] = "\x99\x8a",
-+ [12838] = "\x90\xa7", [12839] = "\x8d\xfc", [12840] = "\x8c\x94",
-+ [12841] = "\x99\x8b", [12842] = "\x8e\x68", [12843] = "\x8d\x8f",
-+ [12851] = "\x92\xe4", [12852] = "\x99\x8d", [12855] = "\x91\xa5",
-+ [12858] = "\x8d\xed", [12859] = "\x99\x8e", [12860] = "\x99\x8f",
-+ [12861] = "\x91\x4f", [12863] = "\x99\x8c", [12868] = "\x99\x91",
-+ [12870] = "\x96\x55", [12875] = "\x8d\x84", [12878] = "\x99\x90",
-+ [12883] = "\x8c\x95", [12884] = "\x8d\xdc", [12885] = "\x94\x8d",
-+ [12889] = "\x99\x94", [12890] = "\x99\x92", [12895] = "\x95\x9b",
-+ [12896] = "\x8f\xe8", [12897] = "\x99\x9b", [12898] = "\x8a\x84",
-+ [12899] = "\x99\x95", [12900] = "\x99\x93", [12901] = "\x91\x6e",
-+ [12909] = "\x99\x97", [12911] = "\x99\x96", [12915] = "\x8a\x63",
-+ [12919] = "\x8c\x80", [12920] = "\x99\x9c", [12921] = "\x97\xab",
-+ [12925] = "\x99\x98", [12929] = "\x99\x9d", [12930] = "\x99\x9a",
-+ [12932] = "\x99\x99", [12939] = "\x97\xcd", [12940] = "\xfa\x85",
-+ [12943] = "\x8c\xf7", [12944] = "\x89\xc1", [12947] = "\x97\xf2",
-+ [12950] = "\xfa\x86", [12953] = "\x8f\x95", [12954] = "\x93\x77",
-+ [12955] = "\x8d\x85", [12956] = "\x99\xa0", [12957] = "\x99\xa1",
-+ [12959] = "\xfb\x77", [12961] = "\x97\xe3", [12964] = "\x98\x4a",
-+ [12965] = "\x99\xa3", [12969] = "\x8c\xf8", [12972] = "\x99\xa2",
-+ [12974] = "\x8a\x4e", [12976] = "\xfa\x87", [12977] = "\x99\xa4",
-+ [12979] = "\x96\x75", [12981] = "\x92\xba", [12983] = "\x97\x45",
-+ [12985] = "\x95\xd7", [12989] = "\x99\xa5", [12994] = "\xe8\xd3",
-+ [12997] = "\x93\xae", [12999] = "\x99\xa6", [13000] = "\x8a\xa8",
-+ [13001] = "\x96\xb1", [13003] = "\xfa\x88", [13005] = "\x8f\x9f",
-+ [13006] = "\x99\xa7", [13007] = "\x95\xe5", [13008] = "\x99\xab",
-+ [13010] = "\x90\xa8", [13011] = "\x99\xa8", [13012] = "\x8b\xce",
-+ [13014] = "\x99\xa9", [13015] = "\x8a\xa9", [13026] = "\x8c\x4d",
-+ [13027] = "\x99\xac", [13029] = "\x99\xad", [13032] = "\x99\xae",
-+ [13033] = "\x99\xaf", [13034] = "\x8e\xd9", [13038] = "\x8c\xf9",
-+ [13039] = "\x96\xdc", [13040] = "\xfa\x89", [13041] = "\x96\xe6",
-+ [13042] = "\x93\xf5", [13045] = "\x95\xef", [13046] = "\x99\xb0",
-+ [13047] = "\xfa\x8a", [13048] = "\x99\xb1", [13053] = "\x99\xb3",
-+ [13055] = "\x99\xb5", [13056] = "\x99\xb4", [13061] = "\x99\xb6",
-+ [13062] = "\x89\xbb", [13063] = "\x96\x6b", [13065] = "\x8d\xfa",
-+ [13066] = "\x99\xb7", [13069] = "\x91\x78", [13072] = "\x8f\xa0",
-+ [13073] = "\x8b\xa7", [13075] = "\x99\xb8", [13076] = "\xfa\x8b",
-+ [13082] = "\x94\xd9", [13087] = "\x99\xb9", [13089] = "\x99\xba",
-+ [13091] = "\x99\xbb", [13096] = "\x99\xbc", [13097] = "\x95\x43",
-+ [13098] = "\x8b\xe6", [13099] = "\x88\xe3", [13103] = "\x93\xbd",
-+ [13104] = "\x99\xbd", [13105] = "\x8f\x5c", [13107] = "\x90\xe7",
-+ [13109] = "\x99\xbf", [13110] = "\x99\xbe", [13111] = "\x8f\xa1",
-+ [13112] = "\x8c\xdf", [13113] = "\x99\xc1", [13114] = "\x94\xbc",
-+ [13117] = "\x99\xc2", [13121] = "\x94\xda", [13122] = "\x91\xb2",
-+ [13123] = "\x91\xec", [13124] = "\x8b\xa6", [13127] = "\x93\xec",
-+ [13128] = "\x92\x50", [13130] = "\x94\x8e", [13132] = "\x96\x6d",
-+ [13134] = "\x99\xc4", [13136] = "\x90\xe8", [13142] = "\x8c\x54",
-+ [13145] = "\x99\xc5", [13150] = "\x99\xc6", [13151] = "\x89\x4b",
-+ [13152] = "\x88\xf3", [13153] = "\x8a\xeb", [13154] = "\xfa\x8c",
-+ [13155] = "\x91\xa6", [13156] = "\x8b\x70", [13157] = "\x97\x91",
-+ [13159] = "\x99\xc9", [13160] = "\x89\xb5", [13163] = "\x99\xc8",
-+ [13167] = "\x8b\xa8", [13170] = "\x99\xca", [13172] = "\x96\xef",
-+ [13187] = "\xfa\x8d", [13190] = "\x99\xcb", [13192] = "\x97\xd0",
-+ [13194] = "\x8c\xfa", [13199] = "\x8c\xb4", [13200] = "\x99\xcc",
-+ [13205] = "\x99\xce", [13206] = "\x99\xcd", [13208] = "\x90\x7e",
-+ [13209] = "\x89\x58", [13213] = "\x89\x7d", [13214] = "\x99\xcf",
-+ [13216] = "\x99\xd0", [13218] = "\xfa\x8e", [13219] = "\x8c\xb5",
-+ [13222] = "\x99\xd1", [13227] = "\x8b\x8e", [13234] = "\x8e\x51",
-+ [13235] = "\x99\xd2", [13240] = "\x96\x94", [13241] = "\x8d\xb3",
-+ [13242] = "\x8b\x79", [13243] = "\x97\x46", [13244] = "\x91\x6f",
-+ [13245] = "\x94\xbd", [13246] = "\x8e\xfb", [13252] = "\x8f\x66",
-+ [13254] = "\x8e\xe6", [13255] = "\x8e\xf3", [13257] = "\x8f\x96",
-+ [13259] = "\x94\xbe", [13261] = "\xfa\x8f", [13263] = "\x99\xd5",
-+ [13265] = "\x89\x62", [13266] = "\x91\x70", [13267] = "\x8c\xfb",
-+ [13268] = "\x8c\xc3", [13269] = "\x8b\xe5", [13272] = "\x99\xd9",
-+ [13273] = "\x92\x40", [13274] = "\x91\xfc", [13275] = "\x8b\xa9",
-+ [13276] = "\x8f\xa2", [13277] = "\x99\xda", [13278] = "\x99\xd8",
-+ [13279] = "\x89\xc2", [13280] = "\x91\xe4", [13281] = "\x8e\xb6",
-+ [13282] = "\x8e\x6a", [13283] = "\x89\x45", [13286] = "\x8a\x90",
-+ [13287] = "\x8d\x86", [13288] = "\x8e\x69", [13290] = "\x99\xdb",
-+ [13297] = "\x99\xdc", [13299] = "\x8b\x68", [13300] = "\x8a\x65",
-+ [13304] = "\x8d\x87", [13305] = "\x8b\x67", [13306] = "\x92\xdd",
-+ [13307] = "\x89\x44", [13308] = "\x93\xaf", [13309] = "\x96\xbc",
-+ [13310] = "\x8d\x40", [13311] = "\x97\x99", [13312] = "\x93\x66",
-+ [13313] = "\x8c\xfc", [13323] = "\x8c\x4e", [13325] = "\x99\xe5",
-+ [13327] = "\x8b\xe1", [13328] = "\x96\x69", [13334] = "\x94\xdb",
-+ [13337] = "\x99\xe4", [13339] = "\x8a\xdc", [13340] = "\x99\xdf",
-+ [13341] = "\x99\xe0", [13342] = "\x99\xe2", [13350] = "\x99\xe3",
-+ [13352] = "\x8b\x7a", [13353] = "\x90\x81", [13355] = "\x95\xab",
-+ [13356] = "\x99\xe1", [13357] = "\x99\xdd", [13358] = "\x8c\xe1",
-+ [13360] = "\x99\xde", [13362] = "\x98\x43", [13366] = "\x95\xf0",
-+ [13368] = "\x92\xe6", [13369] = "\x8c\xe0", [13370] = "\x8d\x90",
-+ [13374] = "\x99\xe6", [13377] = "\x93\xdb", [13391] = "\x99\xea",
-+ [13400] = "\x8e\xfc", [13402] = "\x8e\xf4", [13408] = "\x99\xed",
-+ [13409] = "\x99\xeb", [13411] = "\x96\xa1", [13413] = "\x99\xe8",
-+ [13414] = "\x99\xf1", [13415] = "\x99\xec", [13419] = "\x99\xef",
-+ [13420] = "\x8c\xc4", [13421] = "\x96\xbd", [13424] = "\x99\xf0",
-+ [13428] = "\x99\xf2", [13430] = "\x99\xf4", [13434] = "\xfa\x92",
-+ [13435] = "\x8d\xee", [13436] = "\x98\x61", [13438] = "\x99\xe9",
-+ [13439] = "\x99\xe7", [13440] = "\x99\xf3", [13442] = "\x99\xee",
-+ [13452] = "\xfa\x91", [13458] = "\x99\xf6", [13460] = "\x9a\x42",
-+ [13461] = "\x99\xf8", [13464] = "\x99\xfc", [13465] = "\xfa\x93",
-+ [13467] = "\x9a\x40", [13468] = "\x99\xf9", [13471] = "\x9a\x5d",
-+ [13474] = "\x8d\xe7", [13475] = "\x8a\x50", [13480] = "\x99\xf7",
-+ [13484] = "\x9a\x44", [13485] = "\x88\xf4", [13486] = "\x9a\x43",
-+ [13488] = "\x88\xa3", [13489] = "\x95\x69", [13490] = "\x9a\x41",
-+ [13492] = "\x99\xfa", [13495] = "\x99\xf5", [13496] = "\x99\xfb",
-+ [13497] = "\x8d\xc6", [13512] = "\x9a\x45", [13521] = "\x88\xf5",
-+ [13522] = "\x9a\x4e", [13525] = "\x9a\x46", [13526] = "\x9a\x47",
-+ [13528] = "\x8f\xa3", [13529] = "\x96\x89", [13533] = "\x9a\x4c",
-+ [13534] = "\x9a\x4b", [13538] = "\x93\x4e", [13546] = "\x9a\x4d",
-+ [13549] = "\x9a\x4a", [13551] = "\xfa\x94", [13556] = "\x89\x53",
-+ [13558] = "\x8d\xb4", [13559] = "\x90\x4f", [13567] = "\x9a\x48",
-+ [13568] = "\x93\x82", [13572] = "\x9a\x49", [13574] = "\x88\xa0",
-+ [13598] = "\x9a\x53", [13599] = "\x97\x42", [13601] = "\x8f\xa5",
-+ [13603] = "\x9a\x59", [13608] = "\x9a\x58", [13609] = "\x9a\x4f",
-+ [13614] = "\x91\xc1", [13616] = "\x9a\x50", [13620] = "\x91\xed",
-+ [13621] = "\x9a\x55", [13622] = "\x8f\xa4", [13628] = "\x9a\x52",
-+ [13631] = "\x96\xe2", [13635] = "\x8c\x5b", [13638] = "\x9a\x56",
-+ [13639] = "\x9a\x57", [13644] = "\x9a\x54", [13645] = "\x9a\x5a",
-+ [13651] = "\x9a\x51", [13675] = "\x9a\x60", [13676] = "\x9a\x65",
-+ [13678] = "\x9a\x61", [13680] = "\x9a\x5c", [13683] = "\x9a\x66",
-+ [13684] = "\x91\x50", [13686] = "\xfa\x95", [13687] = "\x9a\x68",
-+ [13689] = "\x8d\x41", [13690] = "\x9a\x5e", [13691] = "\x92\x9d",
-+ [13704] = "\x9a\x62", [13705] = "\x9a\x5b", [13706] = "\x8a\xab",
-+ [13708] = "\x8a\xec", [13709] = "\x8a\x85", [13710] = "\x9a\x63",
-+ [13711] = "\x9a\x5f", [13719] = "\x8c\x96", [13720] = "\x9a\x69",
-+ [13721] = "\x9a\x67", [13722] = "\x91\x72", [13723] = "\x8b\x69",
-+ [13724] = "\x8b\xaa", [13726] = "\x9a\x64", [13728] = "\x8b\xf2",
-+ [13734] = "\x89\x63", [13748] = "\x9a\x6d", [13749] = "\x9a\x6b",
-+ [13751] = "\x9a\xa5", [13764] = "\x9a\x70", [13770] = "\x9a\x6a",
-+ [13772] = "\x9a\x6e", [13775] = "\x9a\x6c", [13779] = "\x8e\x6b",
-+ [13780] = "\x9a\x6f", [13799] = "\x9a\x72", [13801] = "\x9a\x77",
-+ [13805] = "\x9a\x75", [13806] = "\x9a\x74", [13814] = "\x92\x51",
-+ [13817] = "\x89\xc3", [13828] = "\x9a\x71", [13830] = "\x9a\x73",
-+ [13831] = "\x8f\xa6", [13832] = "\x89\x52", [13835] = "\x9a\x76",
-+ [13849] = "\x89\xdc", [13855] = "\x9a\x82", [13857] = "\x8f\xfa",
-+ [13858] = "\x9a\x7d", [13860] = "\x9a\x7b", [13862] = "\x9a\x7c",
-+ [13864] = "\x9a\x7e", [13874] = "\x89\x5c", [13884] = "\x91\x58",
-+ [13886] = "\x9a\x78", [13888] = "\x9a\x79", [13899] = "\x8a\x9a",
-+ [13908] = "\x9a\x81", [13912] = "\x8a\xed", [13914] = "\x9a\x84",
-+ [13915] = "\x9a\x80", [13916] = "\x9a\x83", [13924] = "\x95\xac",
-+ [13928] = "\x93\xd3", [13930] = "\x94\xb6", [13936] = "\x9a\x86",
-+ [13942] = "\x9a\x85", [13943] = "\x8a\x64", [13946] = "\x9a\x87",
-+ [13951] = "\x9a\x8a", [13956] = "\x9a\x89", [13968] = "\x9a\x88",
-+ [13970] = "\x94\x58", [13973] = "\x9a\x8b", [13982] = "\x9a\x8c",
-+ [13988] = "\x9a\x8e", [13990] = "\x9a\x8d", [13996] = "\x9a\x90",
-+ [14000] = "\x9a\x93", [14001] = "\x9a\x91", [14002] = "\x9a\x8f",
-+ [14003] = "\x9a\x92", [14008] = "\x9a\x94", [14014] = "\x9a\x95",
-+ [14017] = "\x9a\x96", [14019] = "\x9a\x97", [14023] = "\x9a\x98",
-+ [14024] = "\x99\x64", [14026] = "\x8e\xfa", [14027] = "\x8e\x6c",
-+ [14030] = "\x89\xf1", [14032] = "\x88\xf6", [14035] = "\x92\x63",
-+ [14046] = "\x9a\x99", [14048] = "\x8d\xa2", [14050] = "\x88\xcd",
-+ [14051] = "\x90\x7d", [14057] = "\x9a\x9a", [14058] = "\x8c\xc5",
-+ [14061] = "\x8d\x91", [14063] = "\x9a\x9c", [14064] = "\x9a\x9b",
-+ [14067] = "\x95\xde", [14068] = "\x9a\x9d", [14072] = "\x9a\x9f",
-+ [14073] = "\x9a\x9e", [14075] = "\x9a\xa0", [14077] = "\x9a\xa1",
-+ [14079] = "\x8c\x97", [14082] = "\x89\x80", [14083] = "\x9a\xa2",
-+ [14086] = "\x9a\xa4", [14088] = "\x9a\xa3", [14092] = "\x9a\xa6",
-+ [14095] = "\x93\x79", [14102] = "\x9a\xa7", [14103] = "\x88\xb3",
-+ [14104] = "\x8d\xdd", [14109] = "\x8c\x5c", [14112] = "\x92\x6e",
-+ [14119] = "\x9a\xa8", [14120] = "\x9a\xa9", [14123] = "\x9a\xab",
-+ [14128] = "\x9a\xac", [14130] = "\x8d\xe2", [14135] = "\x8b\xcf",
-+ [14138] = "\x96\x56", [14142] = "\x9a\xaa", [14143] = "\x9a\xad",
-+ [14144] = "\x8d\xbf", [14145] = "\x8d\x42", [14153] = "\xfa\x96",
-+ [14161] = "\x9a\xb1", [14164] = "\x8d\xa3", [14165] = "\xfa\x97",
-+ [14166] = "\x92\x52", [14169] = "\x9a\xae", [14170] = "\x92\xd8",
-+ [14191] = "\x9a\xb2", [14194] = "\x90\x82", [14200] = "\x9a\xb0",
-+ [14201] = "\x9a\xb3", [14203] = "\x8c\x5e", [14211] = "\x9a\xb4",
-+ [14224] = "\x9a\xb5", [14226] = "\x8d\x43", [14227] = "\x8a\x5f",
-+ [14228] = "\x9a\xb7", [14234] = "\x9a\xb8", [14236] = "\xfa\x98",
-+ [14240] = "\x9a\xb9", [14243] = "\x9a\xb6", [14256] = "\x9a\xaf",
-+ [14259] = "\x9a\xba", [14262] = "\x9a\xbb", [14263] = "\xfa\x9a",
-+ [14264] = "\xfa\x99", [14267] = "\x96\x84", [14270] = "\x8f\xe9",
-+ [14274] = "\x9a\xbd", [14275] = "\x9a\xbe", [14276] = "\x9a\xbc",
-+ [14278] = "\x9a\xc0", [14284] = "\x94\x57", [14287] = "\x88\xe6",
-+ [14288] = "\x95\x75", [14291] = "\x9a\xc1", [14308] = "\x8f\xfb",
-+ [14311] = "\x8e\xb7", [14313] = "\x94\x7c", [14314] = "\x8a\xee",
-+ [14316] = "\x8d\xe9", [14320] = "\x96\x78", [14322] = "\x93\xb0",
-+ [14325] = "\x8c\x98", [14326] = "\x91\xcd", [14330] = "\x9a\xbf",
-+ [14331] = "\x9a\xc2", [14341] = "\x91\xc2", [14345] = "\x9a\xc3",
-+ [14349] = "\x9a\xc4", [14353] = "\x9a\xc6", [14356] = "\x92\xe7",
-+ [14362] = "\x8a\xac", [14367] = "\xea\x9f", [14368] = "\x89\x81",
-+ [14369] = "\x95\xf1", [14372] = "\x8f\xea", [14373] = "\x93\x67",
-+ [14378] = "\x8d\xe4", [14381] = "\x9a\xcc", [14384] = "\x95\xbb",
-+ [14385] = "\x97\xdb", [14394] = "\x89\xf2", [14395] = "\x9a\xc8",
-+ [14401] = "\x91\x59", [14402] = "\x9a\xcb", [14404] = "\x93\x83",
-+ [14407] = "\x93\x68", [14408] = "\x93\x84", [14409] = "\x94\xb7",
-+ [14410] = "\x92\xcb", [14414] = "\x8d\xc7", [14418] = "\x9a\xc7",
-+ [14425] = "\x89\x96", [14427] = "\x93\x55", [14432] = "\x9a\xc9",
-+ [14434] = "\x9a\xc5", [14437] = "\x90\x6f", [14441] = "\x9a\xcd",
-+ [14446] = "\x8f\x6d", [14451] = "\x8b\xab", [14453] = "\x9a\xce",
-+ [14467] = "\x95\xe6", [14471] = "\x91\x9d", [14476] = "\x92\xc4",
-+ [14478] = "\xfa\x9d", [14479] = "\x9a\xd0", [14488] = "\x96\x6e",
-+ [14491] = "\x9a\xd1", [14494] = "\x9a\xd6", [14498] = "\xfa\x9e",
-+ [14499] = "\x95\xad", [14504] = "\x9a\xd5", [14505] = "\x9a\xcf",
-+ [14506] = "\x9a\xd2", [14507] = "\x9a\xd4", [14510] = "\x8d\xa4",
-+ [14513] = "\x95\xc7", [14517] = "\x9a\xd7", [14519] = "\x92\x64",
-+ [14522] = "\x89\xf3", [14524] = "\x8f\xeb", [14529] = "\x9a\xd9",
-+ [14531] = "\x9a\xd8", [14533] = "\x8d\x88", [14535] = "\x9a\xda",
-+ [14536] = "\x9a\xdc", [14537] = "\x9a\xdb", [14540] = "\x9a\xde",
-+ [14542] = "\x9a\xd3", [14543] = "\x9a\xe0", [14548] = "\x9a\xdf",
-+ [14549] = "\x9a\xdd", [14555] = "\x8e\x6d", [14556] = "\x90\x70",
-+ [14558] = "\x91\x73", [14559] = "\x9a\xe1", [14560] = "\x90\xba",
-+ [14561] = "\x88\xeb", [14562] = "\x94\x84", [14567] = "\x92\xd9",
-+ [14569] = "\x9a\xe3", [14570] = "\x9a\xe2", [14571] = "\x9a\xe4",
-+ [14572] = "\x9a\xe5", [14573] = "\x9a\xe6", [14578] = "\x9a\xe7",
-+ [14585] = "\x95\xcf", [14586] = "\x9a\xe8", [14587] = "\xfa\x9f",
-+ [14591] = "\x89\xc4", [14592] = "\x9a\xe9", [14597] = "\x97\x5b",
-+ [14598] = "\x8a\x4f", [14600] = "\x99\xc7", [14601] = "\x8f\x67",
-+ [14602] = "\x91\xbd", [14603] = "\x9a\xea", [14604] = "\x96\xe9",
-+ [14610] = "\x96\xb2", [14613] = "\x9a\xec", [14615] = "\x91\xe5",
-+ [14617] = "\x93\x56", [14618] = "\x91\xbe", [14619] = "\x95\x76",
-+ [14620] = "\x9a\xed", [14621] = "\x9a\xee", [14622] = "\x89\x9b",
-+ [14625] = "\x8e\xb8", [14626] = "\x9a\xef", [14631] = "\x88\xce",
-+ [14632] = "\x9a\xf0", [14638] = "\x9a\xf1", [14644] = "\x89\x82",
-+ [14647] = "\x8a\xef", [14648] = "\x93\xde", [14649] = "\x95\xf2",
-+ [14654] = "\x9a\xf5", [14655] = "\x91\x74", [14656] = "\x9a\xf4",
-+ [14657] = "\x8c\x5f", [14659] = "\xfa\xa0", [14660] = "\x96\x7a",
-+ [14661] = "\x9a\xf3", [14663] = "\x93\x85", [14664] = "\x9a\xf7",
-+ [14666] = "\x9a\xf6", [14667] = "\xfa\xa1", [14669] = "\xfa\xa2",
-+ [14672] = "\x9a\xf9", [14674] = "\x9a\xf8", [14675] = "\xfa\xa3",
-+ [14677] = "\x89\x9c", [14679] = "\x9a\xfa", [14680] = "\x8f\xa7",
-+ [14681] = "\x9a\xfc", [14682] = "\x92\x44", [14684] = "\x9a\xfb",
-+ [14686] = "\x95\xb1", [14691] = "\x8f\x97", [14692] = "\x93\x7a",
-+ [14696] = "\x9b\x40", [14701] = "\x8d\x44", [14705] = "\x9b\x41",
-+ [14706] = "\x94\x40", [14707] = "\x94\xdc", [14708] = "\x96\xcf",
-+ [14714] = "\x94\x44", [14717] = "\x9b\x4a", [14723] = "\x8b\x57",
-+ [14726] = "\x97\x64", [14729] = "\x96\xad", [14731] = "\x9b\xaa",
-+ [14733] = "\x9b\x42", [14739] = "\x9b\x45", [14740] = "\xfa\xa4",
-+ [14741] = "\x91\xc3", [14744] = "\x96\x57", [14748] = "\x93\x69",
-+ [14754] = "\x9b\x46", [14761] = "\x96\x85", [14762] = "\xfa\xa5",
-+ [14763] = "\x8d\xc8", [14766] = "\x8f\xa8", [14774] = "\x9b\x47",
-+ [14777] = "\x8e\x6f", [14779] = "\x8e\x6e", [14784] = "\x88\xb7",
-+ [14785] = "\x8c\xc6", [14787] = "\x90\xa9", [14788] = "\x88\xcf",
-+ [14793] = "\x9b\x4b", [14794] = "\x9b\x4c", [14796] = "\x9b\x49",
-+ [14805] = "\x89\x57", [14806] = "\x8a\xad", [14808] = "\x9b\x48",
-+ [14810] = "\x96\xc3", [14811] = "\x95\x50", [14822] = "\x88\xa6",
-+ [14827] = "\x88\xf7", [14831] = "\x8e\x70", [14833] = "\x88\xd0",
-+ [14835] = "\x88\xa1", [14841] = "\x9b\x51", [14849] = "\x9b\x4f",
-+ [14856] = "\x96\xba", [14858] = "\x9b\x52", [14860] = "\x9b\x50",
-+ [14863] = "\x9b\x4e", [14864] = "\x90\x50", [14869] = "\x9b\x4d",
-+ [14873] = "\x95\xd8", [14879] = "\x8c\xe2", [14885] = "\x9b\x56",
-+ [14886] = "\x9b\x57", [14892] = "\x8f\xa9", [14896] = "\x9b\x53",
-+ [14897] = "\x98\x4b", [14902] = "\x94\x6b", [14905] = "\x9b\x55",
-+ [14922] = "\x8d\xa5", [14930] = "\x9b\x58", [14934] = "\x95\x77",
-+ [14938] = "\x9b\x59", [14940] = "\x9b\x54", [14959] = "\x96\xb9",
-+ [14978] = "\x94\x7d", [14986] = "\x9b\x5a", [14987] = "\x95\x51",
-+ [15020] = "\x9b\x5b", [15021] = "\x9b\x5f", [15022] = "\x9b\x5c",
-+ [15025] = "\x89\xc5", [15026] = "\x9b\x5e", [15033] = "\x8e\xb9",
-+ [15035] = "\x9b\x5d", [15036] = "\x8c\x99", [15040] = "\x9b\x6b",
-+ [15046] = "\x9b\x64", [15047] = "\x9b\x61", [15057] = "\x92\x84",
-+ [15059] = "\x9b\x60", [15062] = "\x9b\x62", [15065] = "\x9b\x63",
-+ [15082] = "\x9b\x65", [15083] = "\x9b\x66", [15097] = "\x8a\xf0",
-+ [15099] = "\x9b\x68", [15100] = "\x9b\x67", [15110] = "\x9b\x69",
-+ [15122] = "\x8f\xec", [15130] = "\x9b\x6c", [15132] = "\x92\xda",
-+ [15136] = "\x89\x64", [15138] = "\x9b\x6a", [15142] = "\x9b\x6d",
-+ [15150] = "\x9b\x6e", [15152] = "\x9b\x71", [15155] = "\x9b\x6f",
-+ [15157] = "\x9b\x70", [15168] = "\x8e\x71", [15169] = "\x9b\x72",
-+ [15172] = "\x8d\x45", [15173] = "\x9b\x73", [15174] = "\xfa\xa6",
-+ [15175] = "\x8e\x9a", [15176] = "\x91\xb6", [15178] = "\x9b\x74",
-+ [15179] = "\x9b\x75", [15180] = "\x8e\x79", [15181] = "\x8d\x46",
-+ [15183] = "\x96\xd0", [15187] = "\x8b\x47", [15188] = "\x8c\xc7",
-+ [15189] = "\x9b\x76", [15190] = "\x8a\x77", [15193] = "\x9b\x77",
-+ [15195] = "\x91\xb7", [15200] = "\x9b\x78", [15201] = "\x9b\xa1",
-+ [15203] = "\x9b\x79", [15205] = "\x9b\x7a", [15208] = "\x9b\x7b",
-+ [15210] = "\x9b\x7d", [15216] = "\x9b\x7e", [15219] = "\x9b\x80",
-+ [15221] = "\x91\xee", [15223] = "\x89\x46", [15224] = "\x8e\xe7",
-+ [15225] = "\x88\xc0", [15227] = "\x91\x76", [15228] = "\x8a\xae",
-+ [15229] = "\x8e\xb3", [15231] = "\x8d\x47", [15237] = "\x93\x86",
-+ [15239] = "\x8f\x40", [15240] = "\x8a\xaf", [15241] = "\x92\x88",
-+ [15242] = "\x92\xe8", [15243] = "\x88\xb6", [15244] = "\x8b\x58",
-+ [15245] = "\x95\xf3", [15247] = "\x8e\xc0", [15250] = "\x8b\x71",
-+ [15251] = "\x90\xe9", [15252] = "\x8e\xba", [15253] = "\x97\x47",
-+ [15254] = "\x9b\x81", [15262] = "\x8b\x7b", [15264] = "\x8d\xc9",
-+ [15267] = "\x8a\x51", [15268] = "\x89\x83", [15269] = "\x8f\xaa",
-+ [15270] = "\x89\xc6", [15272] = "\x9b\x82", [15273] = "\x97\x65",
-+ [15279] = "\x8f\x68", [15280] = "\xfa\xa7", [15282] = "\x8e\xe2",
-+ [15283] = "\x9b\x83", [15284] = "\x8a\xf1", [15285] = "\x93\xd0",
-+ [15286] = "\x96\xa7", [15287] = "\x9b\x84", [15289] = "\x9b\x85",
-+ [15292] = "\x95\x78", [15296] = "\x9b\x87", [15298] = "\x8a\xa6",
-+ [15299] = "\x8b\xf5", [15300] = "\x9b\x86", [15304] = "\xfa\xa9",
-+ [15307] = "\x8a\xb0", [15309] = "\x90\x51", [15310] = "\x9b\x8b",
-+ [15311] = "\x8e\x40", [15313] = "\x89\xc7", [15314] = "\x9b\x8a",
-+ [15316] = "\x9b\x88", [15317] = "\x9b\x8c", [15318] = "\x9b\x89",
-+ [15319] = "\x94\x4a", [15320] = "\x9e\xcb", [15321] = "\x90\x52",
-+ [15323] = "\x9b\x8d", [15324] = "\xfa\xaa", [15326] = "\x97\xbe",
-+ [15328] = "\x9b\x8e", [15331] = "\x9b\x90", [15333] = "\x92\x9e",
-+ [15334] = "\x9b\x8f", [15336] = "\x90\xa1", [15338] = "\x8e\x9b",
-+ [15342] = "\x91\xce", [15343] = "\x8e\xf5", [15345] = "\x95\x95",
-+ [15346] = "\x90\xea", [15348] = "\x8e\xcb", [15349] = "\x9b\x91",
-+ [15350] = "\x8f\xab", [15351] = "\x9b\x92", [15352] = "\x9b\x93",
-+ [15353] = "\x88\xd1", [15354] = "\x91\xb8", [15355] = "\x90\x71",
-+ [15357] = "\x9b\x94", [15358] = "\x93\xb1", [15359] = "\x8f\xac",
-+ [15361] = "\x8f\xad", [15363] = "\x9b\x95", [15366] = "\x90\xeb",
-+ [15370] = "\x8f\xae", [15374] = "\xfa\xab", [15376] = "\x9b\x96",
-+ [15378] = "\x9b\x97", [15380] = "\x96\xde", [15384] = "\x9b\x98",
-+ [15389] = "\x8b\xc4", [15393] = "\x8f\x41", [15400] = "\x9b\x99",
-+ [15401] = "\x9b\x9a", [15402] = "\x8e\xda", [15403] = "\x90\x4b",
-+ [15404] = "\x93\xf2", [15405] = "\x90\x73", [15406] = "\x94\xf6",
-+ [15407] = "\x94\x41", [15408] = "\x8b\xc7", [15409] = "\x9b\x9b",
-+ [15413] = "\x8b\x8f", [15414] = "\x9b\x9c", [15416] = "\x8b\xfc",
-+ [15418] = "\x93\xcd", [15419] = "\x89\xae", [15421] = "\x8e\x72",
-+ [15422] = "\x9b\x9d", [15423] = "\x9b\xa0", [15424] = "\x9b\x9f",
-+ [15425] = "\x8b\xfb", [15427] = "\x9b\x9e", [15429] = "\x93\x57",
-+ [15438] = "\x91\xae", [15440] = "\x93\x6a", [15441] = "\x8e\xc6",
-+ [15444] = "\x91\x77", [15445] = "\x97\x9a", [15452] = "\x9b\xa2",
-+ [15454] = "\x9b\xa3", [15455] = "\x93\xd4", [15457] = "\x8e\x52",
-+ [15462] = "\x9b\xa5", [15465] = "\x9b\xa6", [15484] = "\x9b\xa7",
-+ [15488] = "\x8a\xf2", [15489] = "\x9b\xa8", [15492] = "\x9b\xa9",
-+ [15505] = "\x89\xaa", [15510] = "\xfa\xac", [15512] = "\x91\x5a",
-+ [15513] = "\x8a\xe2", [15515] = "\x9b\xab", [15516] = "\x96\xa6",
-+ [15521] = "\x91\xd0", [15523] = "\x8a\x78", [15526] = "\x9b\xad",
-+ [15527] = "\x9b\xaf", [15528] = "\x8a\xdd", [15530] = "\xfa\xad",
-+ [15531] = "\x9b\xac", [15532] = "\x9b\xae", [15534] = "\x9b\xb1",
-+ [15541] = "\x9b\xb0", [15543] = "\x9b\xb2", [15561] = "\x9b\xb3",
-+ [15568] = "\x93\xbb", [15569] = "\x8b\xac", [15576] = "\x89\xe3",
-+ [15577] = "\x9b\xb4", [15578] = "\x9b\xb9", [15581] = "\x9b\xb7",
-+ [15583] = "\x95\xf5", [15584] = "\x95\xf4", [15589] = "\xfa\xae",
-+ [15590] = "\x93\x87", [15594] = "\x9b\xb6", [15595] = "\x8f\x73",
-+ [15597] = "\x9b\xb5", [15607] = "\x90\x92", [15611] = "\x9b\xba",
-+ [15614] = "\x8d\xe8", [15617] = "\x9b\xc0", [15620] = "\x9b\xc1",
-+ [15621] = "\x9b\xbb", [15622] = "\x8a\x52", [15623] = "\x9b\xbc",
-+ [15624] = "\x9b\xc5", [15625] = "\x9b\xc4", [15626] = "\x9b\xc3",
-+ [15627] = "\x9b\xbf", [15631] = "\x9b\xbe", [15634] = "\x9b\xc2",
-+ [15639] = "\xfa\xaf", [15641] = "\x95\xf6", [15666] = "\xfa\xb2",
-+ [15675] = "\x9b\xc9", [15676] = "\x9b\xc6", [15678] = "\x9b\xc8",
-+ [15680] = "\x97\x92", [15682] = "\x9b\xc7", [15683] = "\xfa\xb0",
-+ [15692] = "\x9b\xbd", [15705] = "\x90\x93", [15708] = "\x9b\xca",
-+ [15709] = "\xfa\xb3", [15711] = "\x8d\xb5", [15715] = "\x9b\xcb",
-+ [15718] = "\x9b\xcc", [15730] = "\x9b\xcf", [15732] = "\x9b\xce",
-+ [15735] = "\x9b\xcd", [15739] = "\x93\x88", [15740] = "\x9b\xb8",
-+ [15744] = "\x9b\xd5", [15757] = "\x9b\xd1", [15762] = "\x9b\xd0",
-+ [15772] = "\x9b\xd2", [15774] = "\x9b\xd3", [15783] = "\x9b\xd6",
-+ [15784] = "\xfa\xb4", [15785] = "\xfa\xb5", [15786] = "\x97\xe4",
-+ [15788] = "\x9b\xd7", [15789] = "\x9b\xd4", [15801] = "\x9b\xd8",
-+ [15804] = "\x8a\xde", [15805] = "\x9b\xd9", [15808] = "\xfa\xb6",
-+ [15810] = "\x9b\xdb", [15811] = "\x9b\xda", [15814] = "\x9b\xdc",
-+ [15819] = "\x9b\xdd", [15821] = "\x90\xec", [15822] = "\x8f\x42",
-+ [15825] = "\x8f\x84", [15827] = "\x91\x83", [15829] = "\x8d\x48",
-+ [15830] = "\x8d\xb6", [15831] = "\x8d\x49", [15832] = "\x8b\x90",
-+ [15835] = "\x9b\xde", [15838] = "\x8d\xb7", [15841] = "\x8c\xc8",
-+ [15842] = "\x9b\xdf", [15843] = "\x96\xa4", [15844] = "\x94\x62",
-+ [15845] = "\x9b\xe0", [15847] = "\x8d\x4a", [15851] = "\x8a\xaa",
-+ [15853] = "\x92\x46", [15854] = "\x8b\xd0", [15858] = "\x8e\x73",
-+ [15859] = "\x95\x7a", [15862] = "\x94\xbf", [15867] = "\x9b\xe1",
-+ [15868] = "\x8a\xf3", [15873] = "\x9b\xe4", [15878] = "\x92\x9f",
-+ [15881] = "\x9b\xe3", [15882] = "\x9b\xe2", [15883] = "\x9b\xe5",
-+ [15885] = "\x92\xe9", [15893] = "\x90\x83", [15899] = "\x8e\x74",
-+ [15901] = "\x90\xc8", [15903] = "\x91\xd1", [15904] = "\x8b\x41",
-+ [15907] = "\x92\xa0", [15910] = "\x9b\xe6", [15911] = "\x9b\xe7",
-+ [15912] = "\x8f\xed", [15917] = "\x96\x58", [15920] = "\x9b\xea",
-+ [15923] = "\x9b\xe9", [15924] = "\x9b\xe8", [15925] = "\x95\x9d",
-+ [15927] = "\x9b\xf1", [15932] = "\x96\x79", [15934] = "\x9b\xeb",
-+ [15940] = "\x9b\xed", [15941] = "\x96\x8b", [15943] = "\x9b\xec",
-+ [15951] = "\x9b\xee", [15953] = "\x94\xa6", [15954] = "\x9b\xef",
-+ [15955] = "\x95\xbc", [15956] = "\x9b\xf0", [15970] = "\x8a\xb1",
-+ [15971] = "\x95\xbd", [15972] = "\x94\x4e", [15973] = "\x9b\xf2",
-+ [15974] = "\x9b\xf3", [15976] = "\x8d\x4b", [15977] = "\x8a\xb2",
-+ [15978] = "\x9b\xf4", [15979] = "\x8c\xb6", [15980] = "\x97\x63",
-+ [15981] = "\x97\x48", [15982] = "\x8a\xf4", [15983] = "\x9b\xf6",
-+ [15985] = "\x92\xa1", [15987] = "\x8d\x4c", [15988] = "\x8f\xaf",
-+ [15991] = "\x94\xdd", [15994] = "\x8f\xb0", [15999] = "\x8f\x98",
-+ [16005] = "\x92\xea", [16006] = "\x95\xf7", [16007] = "\x93\x58",
-+ [16010] = "\x8d\x4d", [16012] = "\x95\x7b", [16016] = "\x9b\xf7",
-+ [16022] = "\x93\x78", [16023] = "\x8d\xc0", [16027] = "\x8c\xc9",
-+ [16029] = "\x92\xeb", [16037] = "\x88\xc1", [16038] = "\x8f\x8e",
-+ [16039] = "\x8d\x4e", [16040] = "\x97\x66", [16049] = "\x9b\xf8",
-+ [16050] = "\x9b\xf9", [16051] = "\x94\x70", [16056] = "\x9b\xfa",
-+ [16057] = "\x97\xf5", [16058] = "\x98\x4c", [16063] = "\x9b\xfc",
-+ [16064] = "\x9b\xfb", [16067] = "\x8a\x66", [16070] = "\x9c\x40",
-+ [16074] = "\x9c\x43", [16075] = "\x9c\x44", [16077] = "\x9c\x42",
-+ [16079] = "\x95\x5f", [16080] = "\x8f\xb1", [16081] = "\x9c\x46",
-+ [16082] = "\x9c\x45", [16083] = "\x9c\x41", [16088] = "\x9c\x47",
-+ [16089] = "\x9c\x48", [16092] = "\x9c\x49", [16096] = "\x9c\x4c",
-+ [16097] = "\x9c\x4a", [16099] = "\x9c\x4b", [16100] = "\x9c\x4d",
-+ [16102] = "\x89\x84", [16103] = "\x92\xec", [16104] = "\x9c\x4e",
-+ [16106] = "\x8c\x9a", [16107] = "\x89\xf4", [16108] = "\x94\x55",
-+ [16110] = "\x9c\x4f", [16111] = "\x93\xf9", [16113] = "\x95\xd9",
-+ [16115] = "\x9c\x50", [16116] = "\x98\x4d", [16121] = "\x9c\x51",
-+ [16122] = "\x95\xbe", [16123] = "\x9c\x54", [16124] = "\x98\x9f",
-+ [16125] = "\x98\xaf", [16127] = "\x8e\xae", [16128] = "\x93\xf3",
-+ [16129] = "\x9c\x55", [16131] = "\x8b\x7c", [16132] = "\x92\xa2",
-+ [16133] = "\x88\xf8", [16134] = "\x9c\x56", [16135] = "\x95\xa4",
-+ [16136] = "\x8d\x4f", [16139] = "\x92\x6f", [16143] = "\x92\xed",
-+ [16145] = "\xfa\xb7", [16149] = "\x96\xed", [16150] = "\x8c\xb7",
-+ [16151] = "\x8c\xca", [16153] = "\x9c\x57", [16157] = "\x9c\x58",
-+ [16159] = "\x9c\x5e", [16161] = "\x8e\xe3", [16164] = "\xfa\xb8",
-+ [16165] = "\x92\xa3", [16167] = "\x8b\xad", [16168] = "\x9c\x59",
-+ [16172] = "\x95\x4a", [16174] = "\x92\x65", [16177] = "\x9c\x5a",
-+ [16181] = "\xfa\x67", [16184] = "\x9c\x5b", [16186] = "\x8b\xae",
-+ [16188] = "\x9c\x5c", [16190] = "\x9c\x5d", [16193] = "\x9c\x5f",
-+ [16195] = "\x93\x96", [16198] = "\x9c\x60", [16199] = "\x9c\x61",
-+ [16201] = "\x9c\x62", [16204] = "\x9c\x53", [16205] = "\x9c\x52",
-+ [16209] = "\x9c\x63", [16210] = "\x8c\x60", [16214] = "\x95\x46",
-+ [16215] = "\xfa\xb9", [16217] = "\x8d\xca", [16218] = "\x95\x56",
-+ [16219] = "\x92\xa4", [16220] = "\x95\x6a", [16221] = "\x9c\x64",
-+ [16224] = "\x8f\xb2", [16225] = "\x89\x65", [16227] = "\x9c\x65",
-+ [16231] = "\x9c\x66", [16233] = "\x96\xf0", [16236] = "\x94\xde",
-+ [16239] = "\x9c\x69", [16240] = "\x89\x9d", [16241] = "\x90\xaa",
-+ [16242] = "\x9c\x68", [16243] = "\x9c\x67", [16244] = "\x8c\x61",
-+ [16245] = "\x91\xd2", [16247] = "\x9c\x6d", [16248] = "\x9c\x6b",
-+ [16250] = "\x9c\x6a", [16251] = "\x97\xa5", [16252] = "\x8c\xe3",
-+ [16256] = "\x8f\x99", [16257] = "\x9c\x6c", [16258] = "\x93\x6b",
-+ [16259] = "\x8f\x5d", [16263] = "\x93\xbe", [16264] = "\x9c\x70",
-+ [16265] = "\x9c\x6f", [16270] = "\x9c\x6e", [16272] = "\x9c\x71",
-+ [16273] = "\x8c\xe4", [16280] = "\x9c\x72", [16281] = "\x95\x9c",
-+ [16282] = "\x8f\x7a", [16285] = "\x9c\x73", [16286] = "\x94\xf7",
-+ [16291] = "\x93\xbf", [16292] = "\x92\xa5", [16295] = "\xfa\xba",
-+ [16297] = "\x93\x4f", [16300] = "\x9c\x74", [16301] = "\x8b\x4a",
-+ [16307] = "\x90\x53", [16309] = "\x95\x4b", [16316] = "\x8a\xf5",
-+ [16317] = "\x94\x45", [16326] = "\x9c\x75", [16327] = "\x8e\x75",
-+ [16328] = "\x96\x59", [16329] = "\x96\x5a", [16332] = "\x89\x9e",
-+ [16333] = "\x9c\x7a", [16334] = "\xfa\xbb", [16336] = "\x92\x89",
-+ [16340] = "\x9c\x77", [16347] = "\x89\xf5", [16352] = "\x9c\xab",
-+ [16353] = "\x9c\x79", [16357] = "\x94\x4f", [16360] = "\x9c\x78",
-+ [16363] = "\x9c\x76", [16365] = "\x8d\x9a", [16367] = "\x9c\x7c",
-+ [16382] = "\x9c\x83", [16383] = "\x9c\x89", [16384] = "\x9c\x81",
-+ [16386] = "\x93\x7b", [16389] = "\x9c\x86", [16390] = "\x95\x7c",
-+ [16393] = "\x9c\x80", [16395] = "\x9c\x85", [16396] = "\x97\xe5",
-+ [16397] = "\x8e\x76", [16400] = "\x91\xd3", [16401] = "\x9c\x7d",
-+ [16405] = "\x8b\x7d", [16406] = "\x9c\x88", [16407] = "\x90\xab",
-+ [16408] = "\x89\x85", [16409] = "\x9c\x82", [16410] = "\x89\xf6",
-+ [16411] = "\x9c\x87", [16415] = "\x8b\xaf", [16417] = "\x9c\x84",
-+ [16426] = "\x9c\x8a", [16433] = "\x9c\x8c", [16434] = "\x9c\x96",
-+ [16435] = "\x9c\x94", [16438] = "\x9c\x91", [16442] = "\x9c\x90",
-+ [16443] = "\x97\xf6", [16445] = "\x9c\x92", [16448] = "\x8b\xb0",
-+ [16450] = "\x8d\x50", [16453] = "\x8f\x9a", [16457] = "\x9c\x99",
-+ [16458] = "\x9c\x8b", [16461] = "\xfa\xbc", [16463] = "\x9c\x8f",
-+ [16464] = "\x9c\x7e", [16466] = "\x89\xf8", [16467] = "\x9c\x93",
-+ [16468] = "\x9c\x95", [16469] = "\x92\x70", [16472] = "\x8d\xa6",
-+ [16473] = "\x89\xb6", [16474] = "\x9c\x8d", [16475] = "\x9c\x98",
-+ [16476] = "\x9c\x97", [16477] = "\x8b\xb1", [16479] = "\x91\xa7",
-+ [16480] = "\x8a\x86", [16485] = "\x8c\x62", [16487] = "\x9c\x8e",
-+ [16497] = "\x9c\x9a", [16499] = "\x9c\x9d", [16500] = "\x9c\x9f",
-+ [16501] = "\xfa\xbd", [16505] = "\x8e\xbb", [16506] = "\xfa\xbe",
-+ [16507] = "\x9c\xa5", [16508] = "\x92\xee", [16509] = "\x9c\x9b",
-+ [16514] = "\x9c\xa3", [16516] = "\x89\xf7", [16518] = "\x9c\xa1",
-+ [16519] = "\x9c\xa2", [16522] = "\x9c\x9e", [16523] = "\x9c\xa0",
-+ [16527] = "\x8c\xe5", [16528] = "\x97\x49", [16531] = "\x8a\xb3",
-+ [16534] = "\x89\x78", [16535] = "\x9c\xa4", [16537] = "\x94\x59",
-+ [16538] = "\x88\xab", [16546] = "\x94\xdf", [16547] = "\x9c\x7b",
-+ [16548] = "\x9c\xaa", [16549] = "\x9c\xae", [16550] = "\x96\xe3",
-+ [16552] = "\x9c\xa7", [16556] = "\x93\x89", [16557] = "\x9c\xac",
-+ [16565] = "\x8f\xee", [16566] = "\x9c\xad", [16567] = "\x93\xd5",
-+ [16577] = "\x98\x66", [16579] = "\x9c\xa9", [16581] = "\xfa\xc0",
-+ [16584] = "\x9c\xaf", [16586] = "\x8d\x9b", [16588] = "\x90\xc9",
-+ [16590] = "\xfa\xbf", [16591] = "\x88\xd2", [16592] = "\x9c\xa8",
-+ [16593] = "\x9c\xa6", [16595] = "\x91\x79", [16599] = "\x9c\x9c",
-+ [16600] = "\x8e\x53", [16608] = "\x91\xc4", [16609] = "\x9c\xbb",
-+ [16610] = "\xfa\xc2", [16611] = "\x91\x7a", [16612] = "\x9c\xb6",
-+ [16614] = "\x9c\xb3", [16615] = "\x9c\xb4", [16617] = "\x8e\xe4",
-+ [16618] = "\x9c\xb7", [16619] = "\x9c\xba", [16624] = "\x9c\xb5",
-+ [16625] = "\x8f\x44", [16627] = "\x9c\xb8", [16630] = "\x9c\xb2",
-+ [16632] = "\x96\xfa", [16633] = "\x96\xf9", [16637] = "\x9c\xbc",
-+ [16638] = "\x9c\xbd", [16639] = "\x88\xd3", [16641] = "\xfa\xc3",
-+ [16645] = "\x9c\xb1", [16650] = "\x8b\xf0", [16651] = "\x88\xa4",
-+ [16655] = "\x8a\xb4", [16656] = "\xfa\xc1", [16657] = "\x9c\xb9",
-+ [16663] = "\x9c\xc1", [16664] = "\x9c\xc0", [16668] = "\x9c\xc5",
-+ [16672] = "\xfa\xc5", [16676] = "\x9c\xc6", [16679] = "\xfa\xc4",
-+ [16684] = "\x9c\xc4", [16685] = "\x9c\xc7", [16686] = "\x9c\xbf",
-+ [16687] = "\x9c\xc3", [16690] = "\x9c\xc8", [16692] = "\x9c\xc9",
-+ [16695] = "\x9c\xbe", [16696] = "\x8e\x9c", [16698] = "\x9c\xc2",
-+ [16699] = "\x91\xd4", [16700] = "\x8d\x51", [16701] = "\x9c\xb0",
-+ [16702] = "\x90\x54", [16707] = "\x9c\xd6", [16709] = "\x95\xe7",
-+ [16712] = "\x9c\xcc", [16713] = "\x9c\xcd", [16714] = "\x9c\xce",
-+ [16717] = "\x9c\xd5", [16719] = "\x9c\xd4", [16722] = "\x96\x9d",
-+ [16723] = "\x8a\xb5", [16725] = "\x9c\xd2", [16727] = "\x8c\x64",
-+ [16728] = "\x8a\x53", [16731] = "\x9c\xcf", [16734] = "\x97\xb6",
-+ [16735] = "\x9c\xd1", [16736] = "\x88\xd4", [16737] = "\x9c\xd3",
-+ [16739] = "\x9c\xca", [16740] = "\x9c\xd0", [16741] = "\x9c\xd7",
-+ [16742] = "\x8c\x63", [16743] = "\x9c\xcb", [16750] = "\x97\x7c",
-+ [16754] = "\x97\x4a", [16759] = "\x9c\xda", [16762] = "\x9c\xde",
-+ [16766] = "\x91\x9e", [16768] = "\x97\xf7", [16769] = "\x9c\xdf",
-+ [16772] = "\x9c\xdc", [16774] = "\x9c\xd9", [16776] = "\xfa\xc6",
-+ [16777] = "\x9c\xd8", [16778] = "\x9c\xdd", [16788] = "\x95\xae",
-+ [16791] = "\x93\xb2", [16793] = "\x8c\x65", [16795] = "\x9c\xe0",
-+ [16796] = "\x9c\xdb", [16798] = "\x9c\xe1", [16802] = "\x8c\x9b",
-+ [16806] = "\x89\xaf", [16810] = "\x9c\xe9", [16814] = "\x8a\xb6",
-+ [16819] = "\x9c\xe7", [16822] = "\x9c\xe8", [16823] = "\x8d\xa7",
-+ [16824] = "\x9c\xe6", [16825] = "\x9c\xe4", [16826] = "\x9c\xe3",
-+ [16827] = "\x9c\xea", [16828] = "\x9c\xe2", [16829] = "\x9c\xec",
-+ [16832] = "\x89\xf9", [16851] = "\x9c\xee", [16854] = "\x9c\xed",
-+ [16866] = "\x92\xa6", [16868] = "\x9c\xf1", [16870] = "\x9c\xef",
-+ [16871] = "\x9c\xe5", [16872] = "\x8c\x9c", [16874] = "\x9c\xf0",
-+ [16876] = "\x9c\xf4", [16877] = "\x9c\xf3", [16878] = "\x9c\xf5",
-+ [16879] = "\x9c\xf2", [16880] = "\x9c\xf6", [16888] = "\x9c\xf7",
-+ [16889] = "\x9c\xf8", [16890] = "\x95\xe8", [16892] = "\x9c\xfa",
-+ [16893] = "\x9c\xf9", [16894] = "\x8f\x5e", [16896] = "\x90\xac",
-+ [16897] = "\x89\xe4", [16898] = "\x89\xfa", [16899] = "\xfa\xc7",
-+ [16900] = "\x9c\xfb", [16902] = "\x88\xbd", [16906] = "\x90\xca",
-+ [16907] = "\x9c\xfc", [16909] = "\xe6\xc1", [16910] = "\x9d\x40",
-+ [16911] = "\x8c\x81", [16913] = "\x9d\x41", [16918] = "\x90\xed",
-+ [16922] = "\x9d\x42", [16926] = "\x9d\x43", [16927] = "\x8b\x59",
-+ [16928] = "\x9d\x44", [16930] = "\x9d\x45", [16931] = "\x9d\x46",
-+ [16932] = "\x91\xd5", [16936] = "\x8c\xcb", [16939] = "\x96\xdf",
-+ [16943] = "\x96\x5b", [16944] = "\x8f\x8a", [16945] = "\x9d\x47",
-+ [16951] = "\x90\xee", [16952] = "\xe7\xbb", [16953] = "\x94\xe0",
-+ [16955] = "\x8e\xe8", [16957] = "\x8d\xcb", [16958] = "\x9d\x48",
-+ [16963] = "\x91\xc5", [16965] = "\x95\xa5", [16968] = "\x91\xef",
-+ [16971] = "\x9d\x4b", [16974] = "\x9d\x49", [16976] = "\x9d\x4c",
-+ [16979] = "\x9d\x4a", [16984] = "\x9d\x4d", [16990] = "\x95\xaf",
-+ [16993] = "\x88\xb5", [16998] = "\x95\x7d", [17001] = "\x94\xe1",
-+ [17004] = "\x9d\x4e", [17006] = "\x9d\x51", [17007] = "\x8f\xb3",
-+ [17008] = "\x8b\x5a", [17010] = "\x9d\x4f", [17011] = "\x9d\x56",
-+ [17012] = "\x8f\xb4", [17017] = "\x9d\x50", [17018] = "\x94\x63",
-+ [17025] = "\x97\x7d", [17026] = "\x9d\x52", [17027] = "\x9d\x53",
-+ [17028] = "\x9d\x57", [17029] = "\x93\x8a", [17030] = "\x9d\x54",
-+ [17031] = "\x8d\x52", [17032] = "\x90\xdc", [17035] = "\x9d\x65",
-+ [17036] = "\x94\xb2", [17038] = "\x91\xf0", [17046] = "\xfa\xc8",
-+ [17051] = "\x94\xe2", [17052] = "\x9d\xab", [17057] = "\x95\xf8",
-+ [17061] = "\x92\xef", [17065] = "\x96\x95", [17067] = "\x9d\x5a",
-+ [17068] = "\x89\x9f", [17069] = "\x92\x8a", [17074] = "\x9d\x63",
-+ [17077] = "\x92\x53", [17078] = "\x9d\x5d", [17079] = "\x9d\x64",
-+ [17080] = "\x9d\x5f", [17081] = "\x9d\x66", [17082] = "\x9d\x62",
-+ [17084] = "\x9d\x61", [17085] = "\x94\x8f", [17087] = "\x9d\x5b",
-+ [17088] = "\x89\xfb", [17089] = "\x9d\x59", [17090] = "\x8b\x91",
-+ [17091] = "\x91\xf1", [17092] = "\x9d\x55", [17095] = "\x9d\x58",
-+ [17096] = "\x8d\x53", [17097] = "\x90\xd9", [17099] = "\x8f\xb5",
-+ [17100] = "\x9d\x60", [17101] = "\x94\x71", [17104] = "\x8b\x92",
-+ [17105] = "\x8a\x67", [17116] = "\x8a\x87", [17117] = "\x90\x40",
-+ [17118] = "\x9d\x68", [17119] = "\x9d\x6d", [17121] = "\x9d\x69",
-+ [17123] = "\x8c\x9d", [17125] = "\x9d\x6e", [17126] = "\x8e\x41",
-+ [17127] = "\x8d\x89", [17134] = "\x8f\x45", [17135] = "\x9d\x5c",
-+ [17137] = "\x8e\x9d", [17138] = "\x9d\x6b", [17143] = "\x8e\x77",
-+ [17144] = "\x9d\x6c", [17145] = "\x88\xc2", [17148] = "\x9d\x67",
-+ [17153] = "\x92\xa7", [17161] = "\x8b\x93", [17167] = "\x8b\xb2",
-+ [17175] = "\x9d\x6a", [17176] = "\x88\xa5", [17179] = "\x8d\xc1",
-+ [17183] = "\x90\x55", [17194] = "\x92\xf0", [17197] = "\x94\xd2",
-+ [17198] = "\x9d\x70", [17199] = "\x91\x7d", [17209] = "\x91\xa8",
-+ [17212] = "\x8e\x4a", [17213] = "\x9d\x71", [17215] = "\x9d\x73",
-+ [17216] = "\x9d\x6f", [17221] = "\x95\xdf", [17223] = "\x92\xbb",
-+ [17228] = "\x91\x7b", [17239] = "\x95\xf9", [17240] = "\x8e\xcc",
-+ [17241] = "\x9d\x80", [17243] = "\x9d\x7e", [17246] = "\x90\x98",
-+ [17250] = "\x8c\x9e", [17254] = "\x9d\x78", [17255] = "\x8f\xb7",
-+ [17258] = "\x93\xe6", [17259] = "\x94\x50", [17264] = "\x9d\x76",
-+ [17267] = "\x91\x7c", [17272] = "\x8e\xf6", [17273] = "\x9d\x7b",
-+ [17276] = "\x8f\xb6", [17278] = "\x9d\x75", [17279] = "\x9d\x7a",
-+ [17282] = "\x94\x72", [17286] = "\x9d\x74", [17288] = "\x8c\x40",
-+ [17291] = "\x8a\x7c", [17295] = "\x9d\x7c", [17296] = "\x97\xa9",
-+ [17297] = "\x8d\xcc", [17298] = "\x92\x54", [17299] = "\x9d\x79",
-+ [17301] = "\x90\xda", [17303] = "\x8d\x54", [17304] = "\x90\x84",
-+ [17305] = "\x89\x86", [17306] = "\x91\x5b", [17307] = "\x9d\x77",
-+ [17308] = "\x8b\x64", [17314] = "\x8c\x66", [17316] = "\x92\xcd",
-+ [17317] = "\x9d\x7d", [17323] = "\x91\x7e", [17326] = "\x9d\x81",
-+ [17328] = "\x9d\x83", [17331] = "\x91\xb5", [17332] = "\x9d\x89",
-+ [17334] = "\x9d\x84", [17337] = "\x9d\x86", [17343] = "\x95\x60",
-+ [17344] = "\x92\xf1", [17346] = "\x9d\x87", [17350] = "\x97\x4b",
-+ [17354] = "\x97\x67", [17355] = "\x8a\xb7", [17361] = "\x88\xac",
-+ [17363] = "\x9d\x85", [17369] = "\x9d\x82", [17374] = "\x8a\xf6",
-+ [17380] = "\x89\x87", [17381] = "\xfa\xc9", [17382] = "\x9d\x88",
-+ [17386] = "\x97\x68", [17398] = "\x9d\x8c", [17405] = "\x91\xb9",
-+ [17407] = "\x9d\x93", [17411] = "\x9d\x8d", [17414] = "\x9d\x8a",
-+ [17415] = "\x9d\x91", [17420] = "\x9d\x72", [17430] = "\x9d\x8e",
-+ [17432] = "\x9d\x92", [17436] = "\x94\xc0", [17437] = "\x93\x8b",
-+ [17444] = "\x9d\x8b", [17446] = "\x9d\x8f", [17450] = "\x8c\x67",
-+ [17454] = "\x8d\xef", [17458] = "\x90\xdb", [17470] = "\x9d\x97",
-+ [17480] = "\x93\x45", [17488] = "\xfa\xca", [17495] = "\x9d\x94",
-+ [17497] = "\x96\x80", [17503] = "\x9d\x95", [17510] = "\x9d\x96",
-+ [17512] = "\x96\xcc", [17514] = "\x90\xa0", [17523] = "\x8c\x82",
-+ [17528] = "\x9d\x9d", [17538] = "\x8e\x54", [17539] = "\x9d\x9a",
-+ [17541] = "\x9d\x99", [17546] = "\x94\x51", [17549] = "\xfa\xcb",
-+ [17550] = "\x93\xb3", [17556] = "\x93\x50", [17557] = "\x9d\x9b",
-+ [17561] = "\x9d\x9c", [17563] = "\x95\x8f", [17565] = "\x94\x64",
-+ [17566] = "\x8e\x42", [17568] = "\x90\xef", [17570] = "\x96\x6f",
-+ [17577] = "\x8a\x68", [17579] = "\x9d\xa3", [17580] = "\x9d\x9e",
-+ [17585] = "\x97\x69", [17586] = "\x9d\xa5", [17589] = "\x9d\xa1",
-+ [17591] = "\x9d\xa2", [17597] = "\x91\x80", [17598] = "\xfa\xcc",
-+ [17602] = "\x9d\xa0", [17604] = "\x9d\x5e", [17608] = "\x9d\xa4",
-+ [17610] = "\x9d\x9f", [17616] = "\x9d\xa9", [17617] = "\x9d\xaa",
-+ [17618] = "\x93\x46", [17619] = "\x9d\xac", [17622] = "\x8e\x43",
-+ [17623] = "\x9d\xa7", [17628] = "\x8b\x5b", [17631] = "\x9d\xad",
-+ [17633] = "\x9d\xa6", [17634] = "\x9d\xb1", [17636] = "\x9d\xb0",
-+ [17638] = "\x9d\xaf", [17642] = "\x9d\xb2", [17645] = "\x9d\xb4",
-+ [17646] = "\x8f\xef", [17648] = "\x9d\xb3", [17653] = "\x9d\xb7",
-+ [17672] = "\x9d\xb5", [17676] = "\x9d\xb6", [17677] = "\x9d\x90",
-+ [17683] = "\x9d\xb9", [17684] = "\x9d\xb8", [17690] = "\x9d\x98",
-+ [17691] = "\x9d\xba", [17692] = "\x9d\xae", [17695] = "\x8e\x78",
-+ [17700] = "\x9d\xbb", [17701] = "\x9d\xbc", [17702] = "\x9d\xbe",
-+ [17703] = "\x9d\xbd", [17704] = "\x9d\xbf", [17705] = "\x89\xfc",
-+ [17707] = "\x8d\x55", [17710] = "\x95\xfa", [17711] = "\x90\xad",
-+ [17717] = "\x8c\xcc", [17720] = "\x9d\xc1", [17725] = "\x9d\xc4",
-+ [17726] = "\xfa\xcd", [17727] = "\x95\x71", [17729] = "\x8b\x7e",
-+ [17733] = "\x9d\xc3", [17734] = "\x9d\xc2", [17735] = "\x94\x73",
-+ [17736] = "\x9d\xc5", [17737] = "\x8b\xb3", [17741] = "\x9d\xc7",
-+ [17742] = "\x9d\xc6", [17746] = "\x8a\xb8", [17747] = "\x8e\x55",
-+ [17750] = "\x93\xd6", [17756] = "\x8c\x68", [17760] = "\x90\x94",
-+ [17762] = "\x9d\xc8", [17764] = "\x90\xae", [17765] = "\x93\x47",
-+ [17767] = "\x95\x7e", [17768] = "\x9d\xc9", [17778] = "\x9d\xca",
-+ [17779] = "\x9d\xcb", [17783] = "\x95\xb6", [17784] = "\x9b\x7c",
-+ [17785] = "\x90\xc4", [17788] = "\x95\x6b", [17790] = "\x8d\xd6",
-+ [17792] = "\x94\xe3", [17793] = "\x94\xc1", [17799] = "\x93\x6c",
-+ [17801] = "\x97\xbf", [17803] = "\x9d\xcd", [17804] = "\x8e\xce",
-+ [17807] = "\x9d\xce", [17809] = "\x88\xb4", [17812] = "\x8b\xd2",
-+ [17813] = "\x90\xcb", [17815] = "\x95\x80", [17819] = "\x9d\xcf",
-+ [17820] = "\x8e\x61", [17821] = "\x92\x66", [17823] = "\x8e\x7a",
-+ [17824] = "\x90\x56", [17831] = "\x9d\xd0", [17833] = "\x95\xfb",
-+ [17836] = "\x89\x97", [17837] = "\x8e\x7b", [17841] = "\x9d\xd3",
-+ [17843] = "\x9d\xd1", [17844] = "\x9d\xd4", [17845] = "\x97\xb7",
-+ [17846] = "\x9d\xd2", [17851] = "\x90\xf9", [17852] = "\x9d\xd5",
-+ [17855] = "\x91\xb0", [17858] = "\x9d\xd6", [17863] = "\x8a\xf8",
-+ [17865] = "\x9d\xd8", [17867] = "\x9d\xd7", [17872] = "\x9d\xd9",
-+ [17873] = "\x9d\xda", [17874] = "\x8a\xf9", [17877] = "\x93\xfa",
-+ [17878] = "\x92\x55", [17879] = "\x8b\x8c", [17880] = "\x8e\x7c",
-+ [17881] = "\x91\x81", [17884] = "\x8f\x7b", [17885] = "\x88\xae",
-+ [17889] = "\x9d\xdb", [17898] = "\x89\xa0", [17899] = "\x9d\xdf",
-+ [17904] = "\xfa\xce", [17906] = "\x8d\x56", [17907] = "\x9d\xde",
-+ [17910] = "\x8d\xa9", [17911] = "\x8f\xb8", [17913] = "\xfa\xd1",
-+ [17914] = "\x9d\xdd", [17916] = "\x8f\xb9", [17918] = "\x96\xbe",
-+ [17919] = "\x8d\xa8", [17923] = "\x88\xd5", [17924] = "\x90\xcc",
-+ [17925] = "\xfa\xcf", [17932] = "\x9d\xe4", [17934] = "\xfa\xd3",
-+ [17935] = "\x90\xaf", [17936] = "\x89\x66", [17940] = "\xfa\xd4",
-+ [17941] = "\x8f\x74", [17943] = "\x96\x86", [17944] = "\x8d\xf0",
-+ [17949] = "\x8f\xba", [17950] = "\xfa\xd2", [17951] = "\x90\xa5",
-+ [17953] = "\xfa\x63", [17956] = "\x9d\xe3", [17957] = "\x9d\xe1",
-+ [17958] = "\x9d\xe2", [17963] = "\xfa\xd0", [17964] = "\x92\x8b",
-+ [17967] = "\x9e\x45", [17969] = "\x9d\xe8", [17970] = "\x8e\x9e",
-+ [17971] = "\x8d\x57", [17972] = "\x9d\xe6", [17977] = "\x9d\xe7",
-+ [17979] = "\x90\x57", [17983] = "\x9d\xe5", [17986] = "\x8e\x4e",
-+ [17991] = "\xfa\xd6", [17993] = "\xfa\xd7", [17997] = "\x9d\xea",
-+ [17998] = "\x9d\xe9", [17999] = "\x9d\xee", [18002] = "\x9d\xef",
-+ [18004] = "\x9d\xeb", [18005] = "\xfa\xd5", [18006] = "\x8a\x41",
-+ [18007] = "\x9d\xec", [18008] = "\x9d\xed", [18009] = "\x94\xd3",
-+ [18014] = "\x95\x81", [18015] = "\x8c\x69", [18016] = "\x9d\xf0",
-+ [18019] = "\xfa\xd9", [18020] = "\x90\xb0", [18022] = "\x8f\xbb",
-+ [18026] = "\x92\x71", [18033] = "\x8b\xc5", [18035] = "\x9d\xf1",
-+ [18036] = "\x9d\xf5", [18039] = "\x89\xc9", [18040] = "\x9d\xf2",
-+ [18041] = "\x9d\xf4", [18046] = "\x9d\xf3", [18049] = "\x8f\x8b",
-+ [18054] = "\x92\x67", [18055] = "\x88\xc3", [18056] = "\x9d\xf6",
-+ [18057] = "\xfa\xda", [18061] = "\x9d\xf7", [18064] = "\xfa\xdb",
-+ [18066] = "\x92\xa8", [18070] = "\x97\xef", [18075] = "\x8e\x62",
-+ [18078] = "\x95\xe9", [18082] = "\xfa\xdc", [18084] = "\x96\x5c",
-+ [18088] = "\x9e\x41", [18089] = "\x9d\xf9", [18092] = "\x9d\xfc",
-+ [18094] = "\x9d\xfb", [18095] = "\xfa\xdd", [18097] = "\x9d\xf8",
-+ [18100] = "\x9e\x40", [18103] = "\x93\xdc", [18105] = "\x9d\xfa",
-+ [18118] = "\x9e\x42", [18121] = "\x8f\x8c", [18122] = "\x9e\x43",
-+ [18124] = "\x97\x6a", [18125] = "\x94\x98", [18128] = "\x9e\x44",
-+ [18134] = "\x9e\x46", [18137] = "\x9e\x47", [18144] = "\x9e\x48",
-+ [18146] = "\x8b\xc8", [18147] = "\x89\x67", [18148] = "\x8d\x58",
-+ [18149] = "\x9e\x49", [18151] = "\x9e\x4a", [18152] = "\x8f\x91",
-+ [18153] = "\x91\x82", [18154] = "\xfa\xde", [18155] = "\xfa\x66",
-+ [18156] = "\x99\xd6", [18157] = "\x91\x5d", [18158] = "\x91\x5c",
-+ [18159] = "\x91\xd6", [18160] = "\x8d\xc5", [18163] = "\x98\xf0",
-+ [18168] = "\x8c\x8e", [18169] = "\x97\x4c", [18171] = "\x95\xfc",
-+ [18173] = "\x95\x9e", [18174] = "\xfa\xdf", [18175] = "\x9e\x4b",
-+ [18180] = "\x8d\xf1", [18181] = "\x92\xbd", [18182] = "\x9e\x4c",
-+ [18183] = "\x98\x4e", [18187] = "\x96\x5d", [18189] = "\x92\xa9",
-+ [18190] = "\x9e\x4d", [18191] = "\x8a\xfa", [18198] = "\x9e\x4e",
-+ [18199] = "\x9e\x4f", [18200] = "\x96\xd8", [18202] = "\x96\xa2",
-+ [18203] = "\x96\x96", [18204] = "\x96\x7b", [18205] = "\x8e\x44",
-+ [18206] = "\x9e\x51", [18209] = "\x8e\xe9", [18212] = "\x96\x70",
-+ [18214] = "\x9e\x53", [18215] = "\x9e\x56", [18216] = "\x9e\x55",
-+ [18218] = "\x8a\xf7", [18221] = "\x8b\x80", [18223] = "\x9e\x52",
-+ [18225] = "\x9e\x54", [18230] = "\x9e\x57", [18233] = "\x90\x99",
-+ [18238] = "\x97\x9b", [18239] = "\x88\xc7", [18240] = "\x8d\xde",
-+ [18241] = "\x91\xba", [18243] = "\x8e\xdb", [18246] = "\x8f\xf1",
-+ [18249] = "\x9e\x5a", [18252] = "\x93\x6d", [18254] = "\x9e\x58",
-+ [18255] = "\x91\xa9", [18256] = "\x9e\x59", [18257] = "\x8f\xf0",
-+ [18258] = "\x96\xdb", [18259] = "\x9e\x5b", [18260] = "\x9e\x5c",
-+ [18261] = "\x97\x88", [18262] = "\xfa\xe1", [18266] = "\x9e\x61",
-+ [18269] = "\x8d\x59", [18271] = "\x94\x74", [18272] = "\x9e\x5e",
-+ [18273] = "\x93\x8c", [18274] = "\x9d\xdc", [18275] = "\x9d\xe0",
-+ [18277] = "\x8b\x6e", [18279] = "\x94\x66", [18284] = "\x9e\x60",
-+ [18286] = "\x8f\xbc", [18287] = "\x94\xc2", [18293] = "\x9e\x66",
-+ [18295] = "\x94\xf8", [18297] = "\x9e\x5d", [18299] = "\x9e\x63",
-+ [18300] = "\x9e\x62", [18304] = "\x90\xcd", [18309] = "\x96\x8d",
-+ [18311] = "\x97\xd1", [18314] = "\x96\x87", [18316] = "\x89\xca",
-+ [18317] = "\x8e\x7d", [18320] = "\x98\x67", [18321] = "\x9e\x65",
-+ [18322] = "\x90\x95", [18326] = "\x9e\x64", [18329] = "\x9e\x5f",
-+ [18335] = "\x8c\xcd", [18339] = "\x9e\x6b", [18340] = "\x9e\x69",
-+ [18342] = "\x89\xcb", [18343] = "\x9e\x67", [18344] = "\x9e\x6d",
-+ [18345] = "\x9e\x73", [18347] = "\xfa\xe2", [18352] = "\xfa\xe4",
-+ [18353] = "\x91\xc6", [18356] = "\x95\xbf", [18358] = "\x9e\x75",
-+ [18362] = "\x95\x41", [18366] = "\x9e\x74", [18367] = "\x94\x90",
-+ [18368] = "\x96\x5e", [18369] = "\x8a\xb9", [18371] = "\x90\xf5",
-+ [18372] = "\x8f\x5f", [18376] = "\x92\xd1", [18378] = "\x97\x4d",
-+ [18381] = "\x9e\x70", [18382] = "\x9e\x6f", [18386] = "\x9e\x71",
-+ [18388] = "\x9e\x6e", [18391] = "\x9e\x76", [18393] = "\x9e\x6c",
-+ [18396] = "\x9e\x6a", [18398] = "\x9e\x72", [18399] = "\x9e\x68",
-+ [18401] = "\x92\x8c", [18403] = "\x96\xf6", [18404] = "\x8e\xc4",
-+ [18405] = "\x8d\xf2", [18411] = "\x8d\xb8", [18414] = "\x96\x8f",
-+ [18415] = "\x8a\x60", [18417] = "\xfa\xe5", [18418] = "\x92\xcc",
-+ [18419] = "\x93\xc8", [18420] = "\x89\x68", [18435] = "\x90\xf0",
-+ [18438] = "\x90\xb2", [18439] = "\x8c\x49", [18446] = "\x9e\x78",
-+ [18449] = "\x8d\x5a", [18450] = "\x8a\x9c", [18457] = "\x9e\x7a",
-+ [18458] = "\x8a\x94", [18459] = "\x9e\x81", [18466] = "\x9e\x7d",
-+ [18468] = "\x90\xf1", [18472] = "\x8a\x6a", [18473] = "\x8d\xaa",
-+ [18476] = "\x8a\x69", [18477] = "\x8d\xcd", [18480] = "\x9e\x7b",
-+ [18481] = "\x8c\x85", [18482] = "\x8c\x6a", [18483] = "\x93\x8d",
-+ [18484] = "\xfa\xe6", [18486] = "\x9e\x79", [18488] = "\x88\xc4",
-+ [18493] = "\x9e\x7c", [18494] = "\x9e\x7e", [18496] = "\x8b\xcb",
-+ [18497] = "\x8c\x4b", [18498] = "\xfa\xe3", [18499] = "\x8a\xba",
-+ [18500] = "\x8b\x6a", [18505] = "\x9e\x82", [18508] = "\x8d\xf7",
-+ [18509] = "\x96\x91", [18511] = "\x8e\x56", [18515] = "\x9e\x83",
-+ [18519] = "\x95\x4f", [18532] = "\x9e\x8f", [18534] = "\x89\xb1",
-+ [18535] = "\x9e\x84", [18542] = "\x9e\x95", [18543] = "\x9e\x85",
-+ [18545] = "\x97\xc0", [18547] = "\x9e\x8c", [18549] = "\x94\x7e",
-+ [18557] = "\x9e\x94", [18559] = "\x9e\x87", [18563] = "\x88\xb2",
-+ [18564] = "\x9e\x89", [18567] = "\x8d\x5b", [18571] = "\x9e\x8b",
-+ [18573] = "\x9e\x8a", [18575] = "\x9e\x86", [18576] = "\x9e\x91",
-+ [18578] = "\x8f\xbd", [18582] = "\x9a\xeb", [18583] = "\x8c\xe6",
-+ [18584] = "\x97\x9c", [18589] = "\x9e\x88", [18591] = "\x92\xf2",
-+ [18592] = "\x8a\x42", [18593] = "\x8d\xab", [18595] = "\x9e\x80",
-+ [18597] = "\x9e\x90", [18598] = "\x8a\x81", [18601] = "\x9e\x8e",
-+ [18602] = "\x9e\x92", [18604] = "\x93\x8e", [18612] = "\x8a\xfc",
-+ [18614] = "\x9e\xb0", [18616] = "\xfa\x64", [18617] = "\x96\xc7",
-+ [18618] = "\x9e\x97", [18619] = "\x8a\xfb", [18621] = "\x9e\x9e",
-+ [18623] = "\xfa\xe7", [18626] = "\x96\x5f", [18628] = "\x9e\x9f",
-+ [18629] = "\x9e\xa1", [18631] = "\x9e\xa5", [18632] = "\x9e\x99",
-+ [18634] = "\x92\x49", [18639] = "\x93\x8f", [18640] = "\x9e\xa9",
-+ [18641] = "\x9e\x9c", [18643] = "\x9e\xa6", [18647] = "\x9e\xa0",
-+ [18654] = "\x90\x58", [18655] = "\x9e\xaa", [18658] = "\x90\xb1",
-+ [18665] = "\x9e\xa8", [18666] = "\x8a\xbb", [18672] = "\x98\x6f",
-+ [18673] = "\x9e\x96", [18676] = "\x9e\xa4", [18677] = "\x88\xd6",
-+ [18680] = "\x9e\x98", [18683] = "\x96\xb8", [18684] = "\x9e\x9d",
-+ [18685] = "\x90\x41", [18686] = "\x92\xc5", [18687] = "\x9e\x93",
-+ [18690] = "\x9e\xa3", [18697] = "\x90\x9a", [18698] = "\x9e\xad",
-+ [18699] = "\x8a\x91", [18700] = "\x8c\x9f", [18705] = "\x9e\xaf",
-+ [18706] = "\x9e\x9a", [18707] = "\x9e\xae", [18709] = "\x9e\xa7",
-+ [18710] = "\x9e\x9b", [18712] = "\x9e\xab", [18714] = "\x9e\xac",
-+ [18720] = "\x9e\xbd", [18724] = "\x93\xcc", [18726] = "\x9e\xa2",
-+ [18729] = "\x9e\xb9", [18733] = "\x9e\xbb", [18735] = "\x92\xd6",
-+ [18746] = "\x97\x6b", [18755] = "\x95\x96", [18756] = "\x9e\xb6",
-+ [18757] = "\x91\xc8", [18761] = "\x9e\xbc", [18762] = "\x91\x5e",
-+ [18764] = "\x9e\xb3", [18765] = "\x9e\xc0", [18766] = "\x9e\xbf",
-+ [18768] = "\x93\xed", [18769] = "\x9e\xbe", [18770] = "\x93\xe8",
-+ [18776] = "\xfa\xe9", [18778] = "\x9e\xc2", [18779] = "\x9e\xb5",
-+ [18781] = "\x8b\xc6", [18782] = "\x9e\xb8", [18783] = "\x8f\x7c",
-+ [18787] = "\x94\x80", [18788] = "\x9e\xba", [18789] = "\x8b\xc9",
-+ [18791] = "\x9e\xb2", [18792] = "\x9e\xb4", [18793] = "\x9e\xb1",
-+ [18796] = "\x98\x4f", [18797] = "\x8a\x79", [18798] = "\x9e\xb7",
-+ [18801] = "\x9e\xc1", [18802] = "\x8a\x54", [18810] = "\x8d\xe5",
-+ [18814] = "\x89\x7c", [18817] = "\x9e\xd2", [18820] = "\x98\x50",
-+ [18821] = "\x9e\xd5", [18824] = "\xfa\xeb", [18827] = "\x90\x59",
-+ [18828] = "\x9e\xd4", [18832] = "\x9e\xd3", [18839] = "\x9e\xd0",
-+ [18846] = "\x9e\xc4", [18849] = "\x9e\xe1", [18850] = "\x9e\xc3",
-+ [18852] = "\x9e\xd6", [18859] = "\x9e\xce", [18862] = "\x9e\xc9",
-+ [18863] = "\x9e\xc6", [18865] = "\x9e\xc7", [18867] = "\x9e\xcf",
-+ [18871] = "\xea\xa0", [18874] = "\x9e\xcc", [18875] = "\x8d\x5c",
-+ [18876] = "\x92\xc6", [18877] = "\x91\x84", [18878] = "\x9e\xca",
-+ [18880] = "\x9e\xc5", [18883] = "\x9e\xc8", [18888] = "\x97\x6c",
-+ [18889] = "\x96\x8a", [18893] = "\x9e\xcd", [18894] = "\x9e\xd7",
-+ [18898] = "\xfa\xec", [18903] = "\x9e\xdf", [18904] = "\x9e\xd8",
-+ [18907] = "\x9e\xe5", [18909] = "\x9e\xe3", [18914] = "\x9e\xde",
-+ [18921] = "\x9e\xdd", [18923] = "\x92\xce", [18925] = "\x91\x85",
-+ [18927] = "\x9e\xdb", [18930] = "\x9e\xd9", [18933] = "\x9e\xe0",
-+ [18938] = "\x9e\xe6", [18939] = "\x94\xf3", [18940] = "\x9e\xec",
-+ [18946] = "\x9e\xe7", [18947] = "\x9e\xea", [18948] = "\x9e\xe4",
-+ [18951] = "\x92\x94", [18953] = "\x95\x57", [18955] = "\x9e\xda",
-+ [18958] = "\x9e\xe2", [18959] = "\x8f\xbe", [18961] = "\x96\xcd",
-+ [18962] = "\x9e\xf6", [18963] = "\x9e\xe9", [18969] = "\x8c\xa0",
-+ [18970] = "\x89\xa1", [18971] = "\x8a\x7e", [18974] = "\x9e\xd1",
-+ [18976] = "\xfa\xed", [18981] = "\x8f\xbf", [18982] = "\x9e\xee",
-+ [18984] = "\x9e\xf5", [18985] = "\x8e\xf7", [18986] = "\x8a\x92",
-+ [18989] = "\x92\x4d", [18996] = "\x9e\xeb", [18998] = "\xfa\xef",
-+ [18999] = "\x9e\xf0", [19000] = "\x9e\xf4", [19003] = "\x8b\xb4",
-+ [19016] = "\x8b\x6b", [19017] = "\x9e\xf2", [19023] = "\x8b\x40",
-+ [19025] = "\x93\xc9", [19026] = "\x9e\xf1", [19030] = "\x9e\xf3",
-+ [19035] = "\xfa\xee", [19042] = "\x9e\xed", [19043] = "\xfa\xf0",
-+ [19048] = "\x9e\xef", [19054] = "\xfa\xf1", [19055] = "\x8a\x80",
-+ [19056] = "\x92\x68", [19060] = "\x9e\xfa", [19069] = "\x9e\xf8",
-+ [19070] = "\x8c\xe7", [19072] = "\x9e\xf7", [19079] = "\x9f\x40",
-+ [19084] = "\x9e\x77", [19088] = "\x9e\xf9", [19090] = "\x9e\xfb",
-+ [19091] = "\x9e\xfc", [19098] = "\x9f\x4b", [19100] = "\x9f\x47",
-+ [19102] = "\x9e\x8d", [19107] = "\x9f\x46", [19112] = "\x9f\x45",
-+ [19115] = "\x9f\x42", [19121] = "\x9e\xe8", [19122] = "\x9f\x44",
-+ [19123] = "\x9f\x43", [19137] = "\x9f\x49", [19139] = "\x98\x45",
-+ [19146] = "\x9f\x4c", [19147] = "\x8b\xf9", [19150] = "\x9f\x48",
-+ [19151] = "\x9f\x4a", [19154] = "\xfa\xf2", [19156] = "\xfa\xf3",
-+ [19160] = "\x94\xa5", [19162] = "\x9f\x4d", [19178] = "\x9f\x51",
-+ [19179] = "\x9f\x4e", [19188] = "\x97\x93", [19189] = "\x9f\x4f",
-+ [19194] = "\x9e\xdc", [19202] = "\x9f\x52", [19206] = "\x9f\x53",
-+ [19213] = "\x89\x54", [19215] = "\x9f\x55", [19216] = "\x8c\x87",
-+ [19217] = "\x8e\x9f", [19219] = "\x8b\xd3", [19223] = "\x89\xa2",
-+ [19234] = "\x97\x7e", [19239] = "\x9f\x57", [19240] = "\x9f\x56",
-+ [19241] = "\x9f\x59", [19242] = "\x8b\x5c", [19245] = "\x8b\xd4",
-+ [19246] = "\x8a\xbc", [19251] = "\x9f\x5c", [19255] = "\x9f\x5b",
-+ [19257] = "\x9f\x5d", [19260] = "\x89\xcc", [19262] = "\x92\x56",
-+ [19264] = "\x9f\x5e", [19267] = "\x8a\xbd", [19268] = "\x9f\x60",
-+ [19273] = "\x9f\x5f", [19275] = "\x9f\x61", [19279] = "\x9f\x62",
-+ [19281] = "\x9f\x63", [19282] = "\x8e\x7e", [19283] = "\x90\xb3",
-+ [19284] = "\x8d\x9f", [19286] = "\x95\x90", [19289] = "\x95\xe0",
-+ [19290] = "\x98\x63", [19295] = "\x8e\x95", [19299] = "\x8d\xce",
-+ [19300] = "\x97\xf0", [19304] = "\x9f\x64", [19305] = "\x9f\x65",
-+ [19307] = "\x8e\x80", [19311] = "\x9f\x66", [19312] = "\x9f\x67",
-+ [19315] = "\x9f\x69", [19316] = "\x9f\x68", [19318] = "\x96\x77",
-+ [19321] = "\x8f\x7d", [19322] = "\x8e\xea", [19323] = "\x8e\x63",
-+ [19325] = "\x9f\x6a", [19333] = "\x9f\x6c", [19334] = "\x90\x42",
-+ [19336] = "\x9f\x6b", [19342] = "\x9f\x6d", [19348] = "\x9f\x6e",
-+ [19354] = "\x9f\x6f", [19355] = "\x9f\x70", [19359] = "\x9f\x71",
-+ [19361] = "\x9f\x73", [19362] = "\x9f\x72", [19363] = "\x9f\x74",
-+ [19364] = "\x89\xa3", [19365] = "\x92\x69", [19367] = "\x9f\x75",
-+ [19370] = "\x8e\x45", [19371] = "\x8a\x6b", [19372] = "\x9f\x76",
-+ [19375] = "\x93\x61", [19376] = "\x9a\xca", [19381] = "\x8b\x42",
-+ [19382] = "\x9f\x77", [19387] = "\x9f\x78", [19389] = "\x95\xea",
-+ [19390] = "\x96\x88", [19394] = "\x93\xc5", [19395] = "\x9f\x79",
-+ [19396] = "\x94\xe4", [19398] = "\xfa\xf4", [19400] = "\x94\xf9",
-+ [19403] = "\x96\xd1", [19407] = "\x9f\x7a", [19419] = "\x9f\x7c",
-+ [19420] = "\x9f\x7b", [19423] = "\x9f\x7e", [19427] = "\x9f\x7d",
-+ [19448] = "\x9f\x81", [19455] = "\x8e\x81", [19457] = "\x96\xaf",
-+ [19459] = "\x9f\x82", [19460] = "\x9f\x83", [19463] = "\x8b\x43",
-+ [19467] = "\x9f\x84", [19475] = "\x9f\x86", [19476] = "\x9f\x85",
-+ [19492] = "\x90\x85", [19495] = "\x95\x58", [19496] = "\x89\x69",
-+ [19502] = "\x94\xc3", [19503] = "\xfa\xf5", [19504] = "\x92\xf3",
-+ [19505] = "\x8f\x60", [19506] = "\x8b\x81", [19518] = "\x94\xc4",
-+ [19520] = "\x8e\xac", [19525] = "\x9f\x88", [19527] = "\x8a\xbe",
-+ [19530] = "\x89\x98", [19532] = "\xfa\xf6", [19533] = "\x93\xf0",
-+ [19534] = "\x9f\x87", [19535] = "\x8d\x5d", [19536] = "\x92\x72",
-+ [19538] = "\x9f\x89", [19544] = "\x9f\x91", [19546] = "\x9f\x8a",
-+ [19551] = "\xfa\xf8", [19552] = "\x91\xbf", [19554] = "\x8b\x82",
-+ [19555] = "\x9f\x92", [19562] = "\x8c\x88", [19565] = "\x8b\x44",
-+ [19566] = "\x9f\x90", [19569] = "\x9f\x8e", [19570] = "\x9f\x8b",
-+ [19571] = "\x97\x80", [19574] = "\xfa\xf7", [19576] = "\x92\xbe",
-+ [19580] = "\x93\xd7", [19581] = "\x9f\x8c", [19584] = "\x9f\x94",
-+ [19586] = "\x9f\x93", [19587] = "\x8c\x42", [19590] = "\x89\xab",
-+ [19593] = "\x8d\xb9", [19594] = "\x9f\x8d", [19595] = "\x9f\x8f",
-+ [19601] = "\x96\x76", [19602] = "\x91\xf2", [19611] = "\x96\x97",
-+ [19614] = "\x9f\x9c", [19617] = "\x9f\x9d", [19619] = "\x89\xcd",
-+ [19624] = "\x95\xa6", [19625] = "\x96\xfb", [19626] = "\x9f\x9f",
-+ [19627] = "\x8e\xa1", [19628] = "\x8f\xc0", [19629] = "\x9f\x98",
-+ [19630] = "\x9f\x9e", [19631] = "\x89\x88", [19633] = "\x8b\xb5",
-+ [19636] = "\x9f\x95", [19637] = "\x9f\x9a", [19641] = "\x90\xf2",
-+ [19642] = "\x94\x91", [19644] = "\x94\xe5", [19651] = "\x9f\x97",
-+ [19653] = "\x96\x40", [19655] = "\x9f\x99", [19657] = "\x9f\xa2",
-+ [19658] = "\xfa\xf9", [19659] = "\x9f\xa0", [19661] = "\x9f\x9b",
-+ [19665] = "\x96\x41", [19666] = "\x94\x67", [19667] = "\x8b\x83",
-+ [19669] = "\x93\x44", [19672] = "\x92\x8d", [19674] = "\x9f\xa3",
-+ [19679] = "\x9f\xa1", [19680] = "\x91\xd7", [19681] = "\x9f\x96",
-+ [19683] = "\x89\x6a", [19700] = "\xfa\xfa", [19707] = "\x97\x6d",
-+ [19708] = "\x9f\xae", [19714] = "\x9f\xad", [19719] = "\x90\xf4",
-+ [19721] = "\x9f\xaa", [19723] = "\x97\x8c", [19726] = "\x93\xb4",
-+ [19727] = "\x9f\xa4", [19733] = "\x92\xc3", [19737] = "\x89\x6b",
-+ [19738] = "\x8d\x5e", [19739] = "\x9f\xa7", [19746] = "\x8f\x46",
-+ [19747] = "\x9f\xac", [19749] = "\x9f\xab", [19750] = "\x9f\xa6",
-+ [19752] = "\x9f\xa9", [19755] = "\x8a\x88", [19757] = "\x9f\xa8",
-+ [19758] = "\x94\x68", [19761] = "\x97\xac", [19764] = "\x8f\xf2",
-+ [19765] = "\x90\xf3", [19785] = "\x9f\xb4", [19786] = "\x9f\xb2",
-+ [19788] = "\x95\x6c", [19795] = "\x9f\xaf", [19796] = "\x9f\xb1",
-+ [19798] = "\x89\x59", [19801] = "\x8d\x5f", [19802] = "\x98\x51",
-+ [19804] = "\x8a\x5c", [19806] = "\x95\x82", [19807] = "\xfa\xfc",
-+ [19812] = "\x97\x81", [19815] = "\x8a\x43", [19816] = "\x90\x5a",
-+ [19817] = "\x9f\xb3", [19829] = "\x9f\xb8", [19831] = "\xfa\xfb",
-+ [19832] = "\x8f\xc1", [19836] = "\x97\x4f", [19838] = "\x9f\xb5",
-+ [19843] = "\x9f\xb0", [19845] = "\x9f\xb6", [19846] = "\xfb\x40",
-+ [19849] = "\x97\xdc", [19851] = "\x93\x93", [19852] = "\x93\xc0",
-+ [19868] = "\xfb\x41", [19871] = "\x8a\x55", [19874] = "\x89\x74",
-+ [19877] = "\x9f\xbc", [19880] = "\x9f\xbf", [19884] = "\x97\xc1",
-+ [19888] = "\x97\x84", [19893] = "\x9f\xc6", [19894] = "\x9f\xc0",
-+ [19895] = "\x9f\xbd", [19899] = "\x97\xd2", [19900] = "\x9f\xc3",
-+ [19903] = "\xfb\x42", [19905] = "\x8f\x69", [19906] = "\x9f\xc5",
-+ [19909] = "\x9f\xca", [19912] = "\x93\x91", [19913] = "\x9f\xc8",
-+ [19918] = "\x9f\xc2", [19921] = "\x92\x57", [19924] = "\x9f\xc9",
-+ [19926] = "\x9f\xbe", [19928] = "\x9f\xc4", [19930] = "\x9f\xcb",
-+ [19931] = "\x88\xfa", [19932] = "\x9f\xc1", [19934] = "\x9f\xcc",
-+ [19937] = "\x90\x5b", [19938] = "\xfb\x44", [19939] = "\x8f\x7e",
-+ [19941] = "\x95\xa3", [19943] = "\x8d\xac", [19944] = "\xfb\x43",
-+ [19945] = "\x9f\xb9", [19946] = "\x9f\xc7", [19947] = "\x93\x59",
-+ [19948] = "\xfb\x45", [19957] = "\x90\xb4", [19959] = "\x8a\x89",
-+ [19960] = "\x8d\xcf", [19961] = "\x8f\xc2", [19962] = "\x9f\xbb",
-+ [19963] = "\x8f\x61", [19971] = "\x8c\x6b", [19973] = "\x9f\xba",
-+ [19977] = "\x9f\xd0", [19978] = "\x8f\x8d", [19979] = "\x8c\xb8",
-+ [19981] = "\x9f\xdf", [19983] = "\x9f\xd9", [19984] = "\x8b\x94",
-+ [19985] = "\x93\x6e", [19987] = "\x9f\xd4", [19988] = "\x9f\xdd",
-+ [19989] = "\x88\xad", [19990] = "\x89\x51", [19991] = "\xfb\x48",
-+ [19993] = "\x89\xb7", [19995] = "\x9f\xd6", [19996] = "\x91\xaa",
-+ [19997] = "\x9f\xcd", [19998] = "\x9f\xcf", [19999] = "\x8d\x60",
-+ [20008] = "\x9f\xe0", [20009] = "\xfb\x46", [20010] = "\x9f\xdb",
-+ [20012] = "\xfb\x49", [20014] = "\x9f\xd3", [20019] = "\x9f\xda",
-+ [20026] = "\x96\xa9", [20029] = "\x9f\xd8", [20030] = "\x9f\xdc",
-+ [20038] = "\x8c\xce", [20040] = "\x8f\xc3", [20043] = "\x92\x58",
-+ [20044] = "\xfb\x47", [20047] = "\x9f\xd2", [20055] = "\x97\x4e",
-+ [20059] = "\x9f\xd5", [20062] = "\x9f\xce", [20063] = "\x93\x92",
-+ [20066] = "\x9f\xd1", [20070] = "\x9f\xd7", [20078] = "\x98\x70",
-+ [20079] = "\x8e\xbc", [20080] = "\x96\x9e", [20082] = "\x9f\xe1",
-+ [20092] = "\x94\xac", [20095] = "\x9f\xed", [20096] = "\x8c\xb9",
-+ [20102] = "\x8f\x80", [20104] = "\x9f\xe3", [20108] = "\x97\xad",
-+ [20109] = "\x8d\x61", [20111] = "\x9f\xf0", [20114] = "\x88\xec",
-+ [20117] = "\x9f\xee", [20122] = "\x9f\xe2", [20127] = "\x9f\xe8",
-+ [20130] = "\x9f\xea", [20134] = "\x97\x6e", [20135] = "\x9f\xe5",
-+ [20138] = "\x93\x4d", [20141] = "\x9f\xe7", [20143] = "\xfb\x4a",
-+ [20146] = "\x9f\xef", [20148] = "\x9f\xe9", [20149] = "\x96\xc5",
-+ [20153] = "\x9f\xe4", [20155] = "\x8e\xa0", [20156] = "\x9f\xfc",
-+ [20161] = "\x8a\x8a", [20163] = "\x9f\xe6", [20164] = "\x9f\xeb",
-+ [20165] = "\x9f\xec", [20173] = "\x91\xea", [20174] = "\x91\xd8",
-+ [20188] = "\x9f\xf4", [20191] = "\x9f\xfa", [20194] = "\x9f\xf8",
-+ [20196] = "\x93\x48", [20199] = "\xe0\x42", [20200] = "\x9f\xf5",
-+ [20206] = "\x9f\xf6", [20207] = "\x9f\xde", [20209] = "\x8b\x99",
-+ [20210] = "\x95\x59", [20214] = "\x8e\xbd", [20217] = "\x8d\x97",
-+ [20223] = "\x98\x52", [20225] = "\x9f\xf2", [20227] = "\xe0\x41",
-+ [20228] = "\x89\x89", [20229] = "\x91\x86", [20240] = "\x94\x99",
-+ [20242] = "\x8a\xbf", [20243] = "\x97\xf8", [20251] = "\x96\x9f",
-+ [20252] = "\x92\xd0", [20257] = "\x9f\xf9", [20258] = "\x9f\xfb",
-+ [20264] = "\x91\x51", [20270] = "\xe0\x40", [20271] = "\x9f\xf7",
-+ [20273] = "\x9f\xf1", [20277] = "\x8a\xc1", [20292] = "\x8c\x89",
-+ [20296] = "\xe0\x4e", [20299] = "\xe0\x49", [20300] = "\x90\xf6",
-+ [20303] = "\x8a\x83", [20308] = "\x8f\x81", [20310] = "\xe0\x52",
-+ [20317] = "\xe0\x4b", [20318] = "\x92\xaa", [20319] = "\xe0\x48",
-+ [20320] = "\x92\xd7", [20324] = "\xe0\x6b", [20328] = "\xe0\x45",
-+ [20330] = "\xe0\x44", [20332] = "\xe0\x4d", [20336] = "\xe0\x47",
-+ [20337] = "\xe0\x46", [20338] = "\xe0\x4c", [20340] = "\x90\x9f",
-+ [20342] = "\xe0\x43", [20344] = "\xfb\x4b", [20350] = "\xe0\x4f",
-+ [20353] = "\xe0\x50", [20359] = "\x8a\xc0", [20369] = "\xe0\x55",
-+ [20371] = "\xe0\x54", [20372] = "\xe0\x56", [20378] = "\xe0\x59",
-+ [20385] = "\x93\x62", [20387] = "\xe0\x53", [20389] = "\xfb\x4c",
-+ [20393] = "\xe0\x57", [20400] = "\x8c\x83", [20401] = "\x91\xf7",
-+ [20402] = "\xe0\x51", [20403] = "\x94\x5a", [20406] = "\xe0\x58",
-+ [20420] = "\xe0\x5d", [20421] = "\xe0\x5b", [20424] = "\xe0\x5e",
-+ [20427] = "\xe0\x61", [20431] = "\xe0\x5a", [20432] = "\x8d\x8a",
-+ [20433] = "\x94\x47", [20436] = "\x9f\xb7", [20443] = "\x97\x94",
-+ [20444] = "\xe0\x5c", [20446] = "\xe0\x60", [20447] = "\x91\xf3",
-+ [20449] = "\xe0\x5f", [20451] = "\xe0\x4a", [20453] = "\xfb\x4d",
-+ [20454] = "\xe8\x89", [20458] = "\xe0\x64", [20462] = "\xe0\x68",
-+ [20465] = "\xe0\x66", [20469] = "\xfb\x4e", [20471] = "\xfb\x4f",
-+ [20473] = "\xe0\x62", [20475] = "\xe0\x63", [20479] = "\xe0\x67",
-+ [20481] = "\xe0\x65", [20485] = "\x95\x6d", [20488] = "\xe0\x6d",
-+ [20490] = "\xe0\x6a", [20491] = "\xe0\x69", [20493] = "\xe0\x6c",
-+ [20494] = "\x93\xd2", [20495] = "\xe0\x6e", [20502] = "\x92\x95",
-+ [20503] = "\x91\xeb", [20504] = "\xfb\x50", [20508] = "\x90\xa3",
-+ [20512] = "\xe0\x6f", [20514] = "\xe0\x71", [20526] = "\xe0\x70",
-+ [20540] = "\x9f\xf3", [20545] = "\xe0\x72", [20552] = "\x93\xe5",
-+ [20563] = "\xe0\x73", [20571] = "\x89\xce", [20575] = "\x93\x94",
-+ [20576] = "\x8a\x44", [20584] = "\x8b\x84", [20588] = "\x8e\xdc",
-+ [20589] = "\x8d\xd0", [20597] = "\xfb\x51", [20601] = "\x98\x46",
-+ [20602] = "\x90\x86", [20606] = "\x89\x8a", [20610] = "\xe0\x75",
-+ [20617] = "\xe0\x74", [20635] = "\xfb\x52", [20636] = "\xe0\x78",
-+ [20637] = "\x92\x59", [20638] = "\xe0\x7b", [20639] = "\xe0\x76",
-+ [20643] = "\xe0\x7a", [20648] = "\xe0\x79", [20649] = "\x93\x5f",
-+ [20650] = "\x88\xd7", [20651] = "\xfa\x62", [20664] = "\x97\xf3",
-+ [20667] = "\xe0\x7d", [20671] = "\x89\x47", [20681] = "\xe0\x80",
-+ [20685] = "\xe0\x7e", [20687] = "\xe0\x7c", [20705] = "\xe0\x77",
-+ [20713] = "\x96\x42", [20717] = "\xe0\x82", [20724] = "\xfb\x54",
-+ [20729] = "\xe0\x81", [20735] = "\xfb\x53", [20740] = "\x89\x8b",
-+ [20745] = "\xe0\x84", [20746] = "\x95\xb0", [20748] = "\xe0\x83",
-+ [20753] = "\x96\xb3", [20758] = "\x8f\xc5", [20774] = "\x91\x52",
-+ [20780] = "\x8f\xc4", [20790] = "\xfb\x56", [20791] = "\xfb\x57",
-+ [20793] = "\x97\xf9", [20796] = "\xe0\x8a", [20798] = "\x90\xf7",
-+ [20805] = "\xe0\x86", [20806] = "\xe0\x8b", [20809] = "\x89\x8c",
-+ [20812] = "\xfb\x55", [20818] = "\xe0\x89", [20820] = "\x94\x81",
-+ [20821] = "\xe0\x85", [20822] = "\xe0\x88", [20823] = "\x8f\xc6",
-+ [20825] = "\x94\xcf", [20828] = "\xe0\x8c", [20830] = "\x8e\xcf",
-+ [20845] = "\x90\xf8", [20852] = "\xe0\x8f", [20856] = "\xe0\x87",
-+ [20858] = "\x8c\x46", [20863] = "\xe0\x8d", [20868] = "\x97\x6f",
-+ [20869] = "\xe0\x90", [20873] = "\xea\xa4", [20879] = "\x8f\x6e",
-+ [20888] = "\xe0\x91", [20892] = "\xe0\x92", [20897] = "\x94\x4d",
-+ [20905] = "\xe0\x94", [20910] = "\xe0\x95", [20913] = "\xfb\x59",
-+ [20915] = "\x94\x52", [20920] = "\x93\x95", [20921] = "\xe0\x97",
-+ [20926] = "\xe0\x99", [20928] = "\x97\xd3", [20930] = "\xe0\x96",
-+ [20932] = "\xe0\x98", [20933] = "\x89\x8d", [20935] = "\xe0\x93",
-+ [20943] = "\x9a\x7a", [20944] = "\xe0\x9a", [20949] = "\x91\x87",
-+ [20950] = "\x8e\x57", [20951] = "\xe0\x9c", [20956] = "\xe0\x9b",
-+ [20957] = "\x90\x43", [20958] = "\x99\xd7", [20965] = "\xe0\x9d",
-+ [20969] = "\xe0\x9f", [20971] = "\xe0\x8e", [20972] = "\xe0\x9e",
-+ [20974] = "\xfb\x5a", [20975] = "\xe0\xa0", [20982] = "\x94\x9a",
-+ [20989] = "\xe0\xa1", [20992] = "\xe0\xa2", [21003] = "\xe0\xa3",
-+ [21016] = "\xe0\xa4", [21018] = "\x92\xdc", [21020] = "\xe0\xa6",
-+ [21021] = "\xe0\xa5", [21024] = "\xe0\xa7", [21026] = "\xe0\xa8",
-+ [21029] = "\x8e\xdd", [21030] = "\x95\x83", [21034] = "\x96\xea",
-+ [21035] = "\xe0\xa9", [21036] = "\xe0\xaa", [21037] = "\x91\x75",
-+ [21038] = "\x8e\xa2", [21039] = "\xe0\xab", [21040] = "\xe0\xac",
-+ [21046] = "\xe0\xad", [21047] = "\x95\xd0", [21048] = "\x94\xc5",
-+ [21051] = "\xe0\xae", [21052] = "\x94\x76", [21058] = "\x92\xab",
-+ [21064] = "\xe0\xaf", [21065] = "\x89\xe5", [21067] = "\x8b\x8d",
-+ [21069] = "\x96\xc4", [21071] = "\x96\xb4", [21073] = "\x89\xb2",
-+ [21074] = "\x98\x53", [21079] = "\x96\x71", [21081] = "\x95\xa8",
-+ [21090] = "\x90\xb5", [21092] = "\xe0\xb0", [21097] = "\x93\xc1",
-+ [21101] = "\x8c\xa1", [21102] = "\xe0\xb1", [21104] = "\x8d\xd2",
-+ [21105] = "\xe0\xb3", [21106] = "\xe0\xb2", [21111] = "\xe0\xb4",
-+ [21122] = "\xe0\xb5", [21126] = "\xe0\xb6", [21136] = "\x8b\x5d",
-+ [21138] = "\xe0\xb7", [21143] = "\xe0\xb8", [21148] = "\x8c\xa2",
-+ [21151] = "\x94\xc6", [21153] = "\xfb\x5b", [21154] = "\xe0\xba",
-+ [21158] = "\x8f\xf3", [21161] = "\xe0\xb9", [21166] = "\xfb\x5c",
-+ [21170] = "\x8b\xb6", [21171] = "\xe0\xbb", [21172] = "\xe0\xbd",
-+ [21174] = "\xe0\xbc", [21182] = "\xe0\xbe", [21184] = "\x8c\xcf",
-+ [21186] = "\xe0\xbf", [21191] = "\x8b\xe7", [21193] = "\x91\x5f",
-+ [21195] = "\x8d\x9d", [21200] = "\xe0\xc1", [21201] = "\xe0\xc2",
-+ [21202] = "\xe0\xc0", [21209] = "\x8e\xeb", [21212] = "\x93\xc6",
-+ [21213] = "\x8b\xb7", [21223] = "\xe0\xc4", [21224] = "\x92\x4b",
-+ [21225] = "\xe0\xc3", [21228] = "\x98\x54", [21229] = "\x94\x82",
-+ [21242] = "\xe0\xc7", [21254] = "\xe0\xc9", [21255] = "\xe0\xc6",
-+ [21259] = "\x96\xd2", [21260] = "\xe0\xc8", [21261] = "\xe0\xca",
-+ [21263] = "\x97\xc2", [21268] = "\xfb\x5d", [21269] = "\xe0\xce",
-+ [21273] = "\xe0\xcd", [21274] = "\x92\x96", [21275] = "\x94\x4c",
-+ [21278] = "\x8c\xa3", [21279] = "\xe0\xcc", [21284] = "\xe0\xcb",
-+ [21286] = "\x97\x50", [21287] = "\x97\x51", [21294] = "\xe0\xcf",
-+ [21295] = "\x89\x8e", [21300] = "\x8d\x96", [21301] = "\x8e\x82",
-+ [21310] = "\xe0\xd0", [21311] = "\xe0\xd1", [21319] = "\xe0\xd3",
-+ [21331] = "\x8f\x62", [21336] = "\xe0\xd5", [21338] = "\xe0\xd4",
-+ [21344] = "\xe0\xd6", [21346] = "\x8a\x6c", [21349] = "\xe0\xd8",
-+ [21351] = "\xfb\x5f", [21352] = "\xe0\xd7", [21354] = "\xe0\xda",
-+ [21355] = "\xe0\xd9", [21364] = "\x8c\xba", [21367] = "\x97\xa6",
-+ [21369] = "\x8b\xca", [21371] = "\x89\xa4", [21382] = "\x8b\xe8",
-+ [21401] = "\x8a\xdf", [21410] = "\x97\xe6", [21411] = "\xe0\xdc",
-+ [21419] = "\xe0\xde", [21421] = "\xfb\x60", [21424] = "\xe0\xdf",
-+ [21426] = "\x89\xcf", [21432] = "\xe0\xdb", [21433] = "\xfb\x61",
-+ [21434] = "\x8e\x58", [21437] = "\x92\xbf", [21438] = "\xe0\xdd",
-+ [21442] = "\xfb\x64", [21446] = "\xfb\x62", [21454] = "\xe0\xe2",
-+ [21456] = "\x8e\xec", [21459] = "\xfb\x63", [21461] = "\xe0\xe0",
-+ [21466] = "\x8c\x5d", [21469] = "\x94\xc7", [21470] = "\xe0\xe1",
-+ [21473] = "\xe0\xfc", [21477] = "\xfb\x66", [21480] = "\xe0\xe7",
-+ [21486] = "\x8c\xbb", [21491] = "\x8b\x85", [21493] = "\xe0\xe4",
-+ [21494] = "\x97\x9d", [21495] = "\xfb\x65", [21497] = "\x97\xae",
-+ [21522] = "\x91\xf4", [21525] = "\xe0\xe6", [21526] = "\xfb\x67",
-+ [21529] = "\xfb\x69", [21530] = "\xfb\x68", [21534] = "\xfb\x6a",
-+ [21538] = "\xe0\xe8", [21539] = "\x97\xd4", [21540] = "\x8b\xd5",
-+ [21541] = "\x94\xfa", [21542] = "\x94\x69", [21546] = "\xe0\xe9",
-+ [21551] = "\xe0\xeb", [21553] = "\xe0\xee", [21573] = "\xe0\xea",
-+ [21577] = "\xe0\xed", [21578] = "\x8c\xe8", [21579] = "\x89\x6c",
-+ [21580] = "\xe0\xef", [21582] = "\x90\x90", [21583] = "\xe0\xec",
-+ [21584] = "\x97\xda", [21586] = "\xfb\x6b", [21587] = "\xe0\xf2",
-+ [21588] = "\xea\xa2", [21593] = "\xe0\xf0", [21594] = "\xe0\xf3",
-+ [21599] = "\xe0\xe5", [21600] = "\xe0\xf1", [21603] = "\x8d\xba",
-+ [21606] = "\xe0\xf4", [21614] = "\xe0\xf5", [21619] = "\x97\x9e",
-+ [21625] = "\xfb\x6c", [21627] = "\xe0\xf6", [21646] = "\xe0\xf7",
-+ [21647] = "\xfb\x6d", [21650] = "\xe0\xe3", [21655] = "\xe0\xf8",
-+ [21664] = "\x8a\xc2", [21677] = "\x8e\xa3", [21690] = "\xe0\xf9",
-+ [21695] = "\xe0\xfa", [21700] = "\xe0\xfb", [21708] = "\x89\x5a",
-+ [21712] = "\xe1\x40", [21714] = "\x95\x5a", [21715] = "\xe1\x41",
-+ [21718] = "\x8a\xa2", [21719] = "\xe1\x42", [21721] = "\xe1\x43",
-+ [21726] = "\xe1\x44", [21728] = "\xe1\x46", [21729] = "\xe1\x47",
-+ [21730] = "\xe1\x45", [21734] = "\x95\x72", [21735] = "\xe1\x49",
-+ [21736] = "\xe1\x48", [21745] = "\xfb\x6e", [21747] = "\xe1\x4b",
-+ [21748] = "\xe1\x4a", [21749] = "\xe1\x4c", [21756] = "\xe1\x4d",
-+ [21757] = "\xe1\x4f", [21758] = "\xe1\x4e", [21761] = "\x8d\x99",
-+ [21763] = "\xe1\x51", [21765] = "\xe1\x50", [21768] = "\x8a\xc3",
-+ [21770] = "\x90\x72", [21772] = "\x93\x5b", [21774] = "\xe1\x52",
-+ [21775] = "\x90\xb6", [21779] = "\x8e\x59", [21781] = "\x89\x99",
-+ [21782] = "\xe1\x53", [21784] = "\x97\x70", [21787] = "\x95\xe1",
-+ [21788] = "\xe1\x54", [21791] = "\xfa\xa8", [21792] = "\x93\x63",
-+ [21793] = "\x97\x52", [21794] = "\x8d\x62", [21795] = "\x90\x5c",
-+ [21799] = "\x92\x6a", [21800] = "\x99\xb2", [21802] = "\x92\xac",
-+ [21803] = "\x89\xe6", [21804] = "\xe1\x55", [21812] = "\xe1\x56",
-+ [21814] = "\xe1\x5b", [21817] = "\xe1\x59", [21818] = "\xe1\x58",
-+ [21819] = "\x9d\xc0", [21820] = "\x8a\x45", [21821] = "\xe1\x57",
-+ [21823] = "\x88\xd8", [21825] = "\x94\xa8", [21828] = "\x94\xc8",
-+ [21833] = "\x97\xaf", [21834] = "\xe1\x5c", [21835] = "\xe1\x5a",
-+ [21836] = "\x92\x7b", [21837] = "\x90\xa4", [21840] = "\x94\xa9",
-+ [21842] = "\x95\x4c", [21844] = "\xe1\x5e", [21845] = "\x97\xaa",
-+ [21846] = "\x8c\x6c", [21847] = "\xe1\x5f", [21849] = "\xe1\x5d",
-+ [21850] = "\x94\xd4", [21851] = "\xe1\x60", [21853] = "\xe1\x61",
-+ [21855] = "\xfb\x6f", [21856] = "\x88\xd9", [21859] = "\x8f\xf4",
-+ [21860] = "\xe1\x66", [21862] = "\xe1\x63", [21863] = "\x93\xeb",
-+ [21864] = "\xe1\x62", [21871] = "\x8b\x45", [21874] = "\xe1\x69",
-+ [21878] = "\xe1\x64", [21879] = "\xe1\x65", [21881] = "\xe1\x68",
-+ [21882] = "\xe1\x67", [21883] = "\x95\x44", [21886] = "\x91\x61",
-+ [21887] = "\x91\x60", [21889] = "\x8b\x5e", [21892] = "\xe1\x6a",
-+ [21898] = "\xe1\x6b", [21901] = "\xe1\x6c", [21907] = "\xe1\x6e",
-+ [21909] = "\xe1\x6d", [21915] = "\x89\x75", [21921] = "\xe1\x76",
-+ [21922] = "\x94\xe6", [21923] = "\xe1\x70", [21925] = "\xe1\x72",
-+ [21928] = "\xe1\x74", [21929] = "\x90\x5d", [21932] = "\xe1\x75",
-+ [21933] = "\xe1\x73", [21934] = "\x8e\xbe", [21938] = "\xe1\x6f",
-+ [21939] = "\xe1\x71", [21941] = "\x95\x61", [21943] = "\x8f\xc7",
-+ [21946] = "\xe1\x78", [21949] = "\xe1\x77", [21954] = "\xe1\x79",
-+ [21956] = "\x8e\xa4", [21957] = "\x8d\xad", [21960] = "\x93\x97",
-+ [21961] = "\xe1\x7a", [21963] = "\x92\xc9", [21966] = "\xe1\x7c",
-+ [21970] = "\x97\x9f", [21971] = "\xe1\x7b", [21977] = "\x91\x89",
-+ [21984] = "\xe1\x82", [21986] = "\xe1\x84", [21987] = "\xe1\x85",
-+ [21988] = "\x92\x73", [21994] = "\xe1\x83", [21996] = "\xe1\x80",
-+ [21998] = "\xe1\x7d", [21999] = "\xe1\x7e", [22001] = "\xe1\x81",
-+ [22009] = "\xe1\x88", [22011] = "\xe1\x86", [22013] = "\xe1\x87",
-+ [22031] = "\xe1\x89", [22032] = "\xe1\x8b", [22033] = "\xe1\x8c",
-+ [22034] = "\xe1\x8d", [22036] = "\xe1\x8e", [22039] = "\xe1\x8a",
-+ [22048] = "\xe1\x90", [22052] = "\xe1\x8f", [22059] = "\xe1\x91",
-+ [22066] = "\x97\xc3", [22070] = "\xe1\x94", [22071] = "\xe1\x92",
-+ [22072] = "\xe1\x93", [22076] = "\x8a\xe0", [22082] = "\x96\xfc",
-+ [22086] = "\x95\xc8", [22088] = "\xe1\x96", [22092] = "\xe1\x95",
-+ [22097] = "\xe1\x97", [22098] = "\xe1\x98", [22103] = "\xe1\x9c",
-+ [22104] = "\xe1\x99", [22105] = "\xe1\x9a", [22106] = "\xe1\x9b",
-+ [22108] = "\xe1\x9d", [22112] = "\xe1\x9e", [22114] = "\xe1\x9f",
-+ [22118] = "\xe1\xa0", [22120] = "\xe1\xa1", [22122] = "\x94\xad",
-+ [22123] = "\x93\x6f", [22124] = "\xe1\xa2", [22125] = "\x94\x92",
-+ [22126] = "\x95\x53", [22128] = "\xe1\xa3", [22130] = "\xfb\x70",
-+ [22131] = "\xe1\xa4", [22132] = "\x93\x49", [22134] = "\x8a\x46",
-+ [22135] = "\x8d\x63", [22136] = "\xe1\xa5", [22139] = "\xe1\xa6",
-+ [22142] = "\xe1\xa7", [22144] = "\x8e\x48", [22147] = "\xe1\xa9",
-+ [22150] = "\xe1\xa8", [22153] = "\xe1\xaa", [22154] = "\xe1\xab",
-+ [22155] = "\xfb\x73", [22156] = "\xfb\x71", [22158] = "\xfb\x72",
-+ [22166] = "\xfb\x74", [22174] = "\x94\xe7", [22176] = "\xe1\xac",
-+ [22180] = "\xe1\xad", [22183] = "\xea\x89", [22184] = "\xe1\xae",
-+ [22185] = "\xe1\xaf", [22186] = "\xe1\xb0", [22191] = "\x8e\x4d",
-+ [22194] = "\xe1\xb1", [22195] = "\x94\x75", [22198] = "\x96\x7e",
-+ [22200] = "\x89\x6d", [22202] = "\x89\x76", [22205] = "\xe1\xb2",
-+ [22210] = "\xe1\xb4", [22214] = "\xe1\xb3", [22215] = "\x93\x90",
-+ [22219] = "\x90\xb7", [22220] = "\x9f\x58", [22222] = "\xe1\xb5",
-+ [22223] = "\x96\xbf", [22225] = "\xe1\xb6", [22227] = "\x8a\xc4",
-+ [22228] = "\x94\xd5", [22229] = "\xe1\xb7", [22231] = "\xe1\xb8",
-+ [22234] = "\xe1\xb9", [22238] = "\x96\xda", [22242] = "\x96\xd3",
-+ [22244] = "\x92\xbc", [22248] = "\x91\x8a", [22251] = "\xe1\xbb",
-+ [22254] = "\x8f\x82", [22257] = "\x8f\xc8", [22260] = "\xe1\xbe",
-+ [22263] = "\xe1\xbd", [22264] = "\xe1\xbc", [22265] = "\x94\xfb",
-+ [22267] = "\x8a\xc5", [22268] = "\x8c\xa7", [22283] = "\xe1\xc4",
-+ [22286] = "\xe1\xc1", [22287] = "\x90\x5e", [22288] = "\x96\xb0",
-+ [22292] = "\xe1\xc0", [22293] = "\xe1\xc2", [22294] = "\xe1\xc3",
-+ [22297] = "\xe1\xbf", [22311] = "\xe1\xc5", [22312] = "\xe1\xc6",
-+ [22314] = "\x92\xad", [22316] = "\x8a\xe1", [22320] = "\x92\x85",
-+ [22326] = "\xfb\x76", [22327] = "\xe1\xc7", [22346] = "\xe1\xc8",
-+ [22347] = "\xe1\xcb", [22353] = "\x90\x87", [22355] = "\x93\xc2",
-+ [22357] = "\xe1\xcc", [22358] = "\x96\x72", [22360] = "\xe1\xc9",
-+ [22363] = "\xe1\xca", [22377] = "\xe1\xcf", [22382] = "\xe1\xce",
-+ [22383] = "\xe1\xcd", [22395] = "\xe1\xd1", [22398] = "\xe1\xd0",
-+ [22401] = "\xe1\xd2", [22414] = "\xe1\xd4", [22416] = "\xe1\xd3",
-+ [22421] = "\x95\xcb", [22428] = "\x8f\x75", [22429] = "\x97\xc4",
-+ [22432] = "\xe1\xd5", [22435] = "\x93\xb5", [22438] = "\xe1\xd6",
-+ [22441] = "\xe1\xd7", [22443] = "\xe1\xdb", [22444] = "\xe1\xd9",
-+ [22445] = "\xe1\xda", [22447] = "\xe1\xd8", [22455] = "\xe1\xdc",
-+ [22461] = "\xe1\xdd", [22471] = "\xe1\xde", [22474] = "\xe1\xdf",
-+ [22475] = "\x96\xb5", [22476] = "\xe1\xe0", [22482] = "\x96\xee",
-+ [22483] = "\xe1\xe1", [22485] = "\x92\x6d", [22487] = "\x94\x8a",
-+ [22489] = "\x8b\xe9", [22493] = "\x92\x5a", [22494] = "\xe1\xe2",
-+ [22495] = "\x8b\xb8", [22499] = "\x90\xce", [22508] = "\xe1\xe3",
-+ [22514] = "\x8d\xbb", [22524] = "\xe1\xe4", [22530] = "\xe1\xe5",
-+ [22532] = "\x8c\xa4", [22533] = "\x8d\xd3", [22544] = "\xe1\xe7",
-+ [22545] = "\xfb\x78", [22549] = "\x93\x75", [22550] = "\x8d\xd4",
-+ [22551] = "\x8b\x6d", [22562] = "\x96\x43", [22564] = "\x94\x6a",
-+ [22570] = "\x93\x76", [22575] = "\x8d\x7b", [22581] = "\xe1\xe9",
-+ [22590] = "\xfb\x79", [22605] = "\x8f\xc9", [22612] = "\xfb\x7a",
-+ [22619] = "\x97\xb0", [22620] = "\x8d\x64", [22623] = "\x8c\xa5",
-+ [22626] = "\x94\xa1", [22628] = "\xe1\xeb", [22634] = "\xfb\x7b",
-+ [22636] = "\xe1\xed", [22641] = "\x8c\xe9", [22646] = "\xe1\xec",
-+ [22647] = "\x92\xf4", [22652] = "\xe1\xef", [22653] = "\x8a\x56",
-+ [22654] = "\xe1\xea", [22657] = "\x94\xe8", [22659] = "\x89\x4f",
-+ [22661] = "\x8d\xea", [22663] = "\x98\x71", [22666] = "\xe1\xee",
-+ [22675] = "\xe1\xf0", [22679] = "\x95\xc9", [22681] = "\x90\xd7",
-+ [22682] = "\xe1\xf2", [22687] = "\xe1\xf3", [22693] = "\xe1\xf1",
-+ [22698] = "\x8a\x6d", [22700] = "\xe1\xf9", [22702] = "\xe1\xf8",
-+ [22705] = "\x8e\xa5", [22709] = "\xe1\xfa", [22710] = "\xe1\xf5",
-+ [22714] = "\xe1\xfb", [22715] = "\xe1\xf6", [22720] = "\x94\xd6",
-+ [22721] = "\xe1\xf4", [22724] = "\xe1\xf7", [22730] = "\xe2\x41",
-+ [22743] = "\xe2\x40", [22744] = "\x96\x81", [22748] = "\xe1\xfc",
-+ [22751] = "\x88\xe9", [22756] = "\xe2\x43", [22765] = "\xe2\x42",
-+ [22769] = "\x8f\xca", [22775] = "\xe2\x44", [22782] = "\x91\x62",
-+ [22785] = "\xe2\x46", [22786] = "\xe2\x45", [22793] = "\xe2\x47",
-+ [22806] = "\xe1\xe6", [22810] = "\xe1\xe8", [22811] = "\xe2\x49",
-+ [22812] = "\xe2\x48", [22816] = "\xfb\x7c", [22826] = "\x8e\xa6",
-+ [22828] = "\x97\xe7", [22830] = "\x8e\xd0", [22832] = "\xe2\x4a",
-+ [22833] = "\x8c\x56", [22839] = "\x8b\x5f", [22840] = "\x8b\x46",
-+ [22841] = "\x8e\x83", [22848] = "\x97\x53", [22851] = "\xe2\x50",
-+ [22853] = "\xe2\x4f", [22854] = "\x91\x63", [22855] = "\xe2\x4c",
-+ [22858] = "\xe2\x4e", [22861] = "\x8f\x6a", [22862] = "\x90\x5f",
-+ [22863] = "\xe2\x4d", [22864] = "\xe2\x4b", [22866] = "\x94\x49",
-+ [22869] = "\x8f\xcb", [22872] = "\x95\x5b", [22877] = "\x8d\xd5",
-+ [22887] = "\x93\x98", [22890] = "\xe2\x51", [22895] = "\xe2\x52",
-+ [22896] = "\xe2\x68", [22897] = "\x8b\xd6", [22900] = "\x98\x5c",
-+ [22901] = "\x91\x54", [22906] = "\xe2\x53", [22909] = "\x89\xd0",
-+ [22910] = "\x92\xf5", [22911] = "\x95\x9f", [22916] = "\xfb\x81",
-+ [22923] = "\xfb\x83", [22925] = "\xe2\x54", [22934] = "\x8b\x9a",
-+ [22935] = "\xe2\x55", [22938] = "\xe2\x57", [22942] = "\xe2\x58",
-+ [22944] = "\x94\x48", [22947] = "\xe2\x59", [22953] = "\xe2\x5a",
-+ [22954] = "\xe2\x5b", [22957] = "\x8b\xd7", [22958] = "\x89\xd1",
-+ [22959] = "\x93\xc3", [22960] = "\x8f\x47", [22961] = "\x8e\x84",
-+ [22969] = "\xe2\x5c", [22971] = "\x8f\x48", [22977] = "\x89\xc8",
-+ [22978] = "\x95\x62", [22981] = "\xe2\x5d", [22984] = "\x94\xe9",
-+ [22991] = "\x91\x64", [22993] = "\xe2\x60", [22995] = "\xe2\x61",
-+ [22996] = "\x94\x89", [22998] = "\x90\x60", [22999] = "\xe2\x5e",
-+ [23001] = "\x92\x81", [23004] = "\xe2\x5f", [23008] = "\x8f\xcc",
-+ [23019] = "\x88\xda", [23024] = "\x8b\x48", [23032] = "\xe2\x62",
-+ [23035] = "\x92\xf6", [23037] = "\xe2\x63", [23038] = "\x90\xc5",
-+ [23044] = "\x96\xab", [23047] = "\x95\x42", [23048] = "\xe2\x64",
-+ [23049] = "\xe2\x65", [23050] = "\x92\x74", [23052] = "\x97\xc5",
-+ [23055] = "\xe2\x67", [23056] = "\xe2\x66", [23070] = "\x8e\xed",
-+ [23073] = "\xe2\x69", [23074] = "\x88\xee", [23079] = "\xe2\x6c",
-+ [23083] = "\xe2\x6a", [23084] = "\x89\xd2", [23085] = "\x8c\x6d",
-+ [23086] = "\xe2\x6b", [23087] = "\x8d\x65", [23088] = "\x8d\x92",
-+ [23090] = "\x95\xe4", [23091] = "\xe2\x6d", [23094] = "\x96\x73",
-+ [23097] = "\xe2\x6f", [23101] = "\x90\xcf", [23102] = "\x89\x6e",
-+ [23103] = "\x89\xb8", [23104] = "\x88\xaa", [23111] = "\xe2\x6e",
-+ [23121] = "\xe2\x70", [23122] = "\xe2\x71", [23123] = "\x8f\xf5",
-+ [23129] = "\xe2\x72", [23131] = "\x8a\x6e", [23136] = "\xe2\x74",
-+ [23140] = "\x8c\x8a", [23142] = "\x8b\x86", [23145] = "\xe2\x75",
-+ [23146] = "\x8b\xf3", [23149] = "\xe2\x76", [23151] = "\x90\xfa",
-+ [23153] = "\x93\xcb", [23155] = "\x90\xde", [23156] = "\x8d\xf3",
-+ [23160] = "\xe2\x77", [23170] = "\x92\x82", [23171] = "\x91\x8b",
-+ [23173] = "\xe2\x79", [23174] = "\xe2\x7b", [23175] = "\xe2\x78",
-+ [23176] = "\xe2\x7a", [23183] = "\x8c\x41", [23193] = "\xe2\x7c",
-+ [23194] = "\x8c\x45", [23198] = "\x8b\x87", [23199] = "\x97\x71",
-+ [23200] = "\xe2\x7e", [23206] = "\xe2\x80", [23210] = "\x89\x4d",
-+ [23215] = "\xe2\x83", [23219] = "\x8a\x96", [23220] = "\xe2\x82",
-+ [23221] = "\xe2\x81", [23223] = "\xe2\x85", [23224] = "\xe2\x7d",
-+ [23226] = "\xe2\x86", [23227] = "\x97\xa7", [23229] = "\xe2\x87",
-+ [23231] = "\xe2\x88", [23233] = "\xfb\x84", [23234] = "\x9a\xf2",
-+ [23235] = "\xe2\x8a", [23237] = "\xe2\x89", [23241] = "\xe2\x8b",
-+ [23242] = "\xe2\x8c", [23244] = "\x97\xb3", [23245] = "\xe2\x8d",
-+ [23247] = "\xe8\xed", [23248] = "\x8f\xcd", [23249] = "\xe2\x8e",
-+ [23250] = "\xe2\x8f", [23251] = "\x8f\x76", [23253] = "\x93\xb6",
-+ [23254] = "\xe2\x90", [23255] = "\xfb\x85", [23258] = "\x92\x47",
-+ [23259] = "\xfb\x87", [23261] = "\xe2\x91", [23263] = "\x92\x5b",
-+ [23264] = "\xe2\x92", [23270] = "\x8b\xa3", [23272] = "\x99\x5e",
-+ [23273] = "\x92\x7c", [23274] = "\x8e\xb1", [23279] = "\x8a\xc6",
-+ [23282] = "\xe2\x93", [23284] = "\xe2\xa0", [23286] = "\xe2\x96",
-+ [23288] = "\x8b\x88", [23290] = "\xe2\x95", [23291] = "\xe2\xa2",
-+ [23295] = "\xe2\x94", [23297] = "\x8f\xce", [23304] = "\xe2\x98",
-+ [23305] = "\xe2\x99", [23307] = "\x93\x4a", [23310] = "\xe2\x9a",
-+ [23312] = "\x8a\x7d", [23317] = "\x90\x79", [23318] = "\x95\x84",
-+ [23320] = "\xe2\x9c", [23324] = "\x91\xe6", [23331] = "\xe2\x97",
-+ [23333] = "\xe2\x9b", [23334] = "\xe2\x9d", [23337] = "\x8d\xf9",
-+ [23349] = "\xe2\xa4", [23350] = "\x95\x4d", [23352] = "\x94\xa4",
-+ [23353] = "\x93\x99", [23355] = "\x8b\xd8", [23356] = "\xe2\xa3",
-+ [23357] = "\xe2\xa1", [23359] = "\x94\xb3", [23360] = "\xe2\x9e",
-+ [23361] = "\x92\x7d", [23362] = "\x93\x9b", [23364] = "\x93\x9a",
-+ [23366] = "\x8d\xf4", [23373] = "\xe2\xb6", [23381] = "\xe2\xa6",
-+ [23383] = "\xe2\xa8", [23388] = "\xe2\xab", [23390] = "\xe2\xac",
-+ [23392] = "\xe2\xa9", [23393] = "\xe2\xaa", [23396] = "\xe2\xa7",
-+ [23397] = "\xe2\xa5", [23402] = "\xe2\x9f", [23414] = "\x95\xcd",
-+ [23415] = "\x89\xd3", [23419] = "\xe2\xb3", [23421] = "\xe2\xb0",
-+ [23423] = "\xe2\xb5", [23426] = "\xe2\xb4", [23428] = "\x94\x93",
-+ [23429] = "\x96\xa5", [23431] = "\x8e\x5a", [23432] = "\xe2\xae",
-+ [23433] = "\xe2\xb7", [23434] = "\xe2\xb2", [23436] = "\xe2\xb1",
-+ [23437] = "\xe2\xad", [23438] = "\xfb\x88", [23439] = "\xe2\xaf",
-+ [23441] = "\x8a\xc7", [23450] = "\x92\x5c", [23453] = "\x90\xfb",
-+ [23457] = "\x94\xa0", [23460] = "\xe2\xbc", [23464] = "\x94\xa2",
-+ [23472] = "\x90\xdf", [23473] = "\xe2\xb9", [23476] = "\x94\xcd",
-+ [23478] = "\xe2\xbd", [23479] = "\x95\xd1", [23481] = "\x92\x7a",
-+ [23483] = "\xe2\xb8", [23484] = "\xe2\xba", [23487] = "\xe2\xbb",
-+ [23501] = "\xe2\xbe", [23504] = "\x8e\xc2", [23508] = "\x93\xc4",
-+ [23509] = "\xe2\xc3", [23510] = "\xe2\xc2", [23513] = "\xe2\xbf",
-+ [23517] = "\x98\x55", [23523] = "\xe2\xc8", [23526] = "\xe2\xcc",
-+ [23527] = "\xe2\xc9", [23536] = "\xe2\xc5", [23543] = "\xe2\xc6",
-+ [23549] = "\xe2\xcb", [23553] = "\xe2\xc0", [23554] = "\x99\xd3",
-+ [23555] = "\xe2\xc7", [23556] = "\xe2\xc1", [23559] = "\xe2\xca",
-+ [23567] = "\xe2\xd0", [23569] = "\x8a\xc8", [23571] = "\xe2\xcd",
-+ [23575] = "\xe2\xce", [23578] = "\xe2\xcf", [23579] = "\xe2\xd2",
-+ [23591] = "\xe2\xd1", [23592] = "\x94\xf4", [23597] = "\xe2\xd3",
-+ [23598] = "\x97\xfa", [23599] = "\x95\xeb", [23600] = "\xe2\xd8",
-+ [23603] = "\xe2\xd5", [23612] = "\xe2\xd4", [23613] = "\x90\xd0",
-+ [23615] = "\xe2\xd7", [23616] = "\xe2\xd9", [23620] = "\xe2\xd6",
-+ [23622] = "\xe2\xdd", [23624] = "\xe2\xda", [23631] = "\xe2\xdb",
-+ [23632] = "\xe2\xc4", [23636] = "\xe2\xdc", [23637] = "\xe2\xde",
-+ [23644] = "\xe2\xdf", [23651] = "\x95\xc4", [23653] = "\xe2\xe0",
-+ [23662] = "\x96\xe0", [23665] = "\x8b\xcc", [23666] = "\x8c\x48",
-+ [23667] = "\xe2\xe1", [23673] = "\x95\xb2", [23675] = "\x90\x88",
-+ [23677] = "\x96\xae", [23680] = "\xe2\xe2", [23682] = "\x97\xb1",
-+ [23685] = "\x94\x94", [23687] = "\x91\x65", [23688] = "\x94\x53",
-+ [23691] = "\x8f\x6c", [23695] = "\x88\xbe", [23697] = "\xe2\xe7",
-+ [23698] = "\xe2\xe5", [23700] = "\xe2\xe3", [23701] = "\x8a\x9f",
-+ [23703] = "\x8f\xcf", [23704] = "\xe2\xe8", [23707] = "\xe2\xe6",
-+ [23709] = "\xe2\xe4", [23710] = "\xe2\xec", [23713] = "\xe2\xeb",
-+ [23714] = "\xe2\xea", [23715] = "\xe2\xe9", [23721] = "\xe2\xed",
-+ [23725] = "\xe2\xee", [23726] = "\x90\xb8", [23728] = "\xe2\xef",
-+ [23730] = "\xe2\xf1", [23733] = "\xe2\xf0", [23738] = "\x8c\xd0",
-+ [23742] = "\x91\x57", [23746] = "\xe2\xf3", [23750] = "\x93\x9c",
-+ [23752] = "\xe2\xf2", [23756] = "\xe2\xf4", [23758] = "\x95\xb3",
-+ [23759] = "\x91\x8c", [23760] = "\x8d\x66", [23762] = "\xe2\xf5",
-+ [23767] = "\x97\xc6", [23775] = "\xe2\xf7", [23778] = "\xe2\xf8",
-+ [23780] = "\xe2\xf9", [23782] = "\xe2\xfa", [23784] = "\x8e\x85",
-+ [23786] = "\xe2\xfb", [23787] = "\x8c\x6e", [23790] = "\x8b\x8a",
-+ [23792] = "\x8b\x49", [23794] = "\xe3\x40", [23796] = "\x96\xf1",
-+ [23797] = "\x8d\x67", [23798] = "\xe2\xfc", [23802] = "\xe3\x43",
-+ [23803] = "\x96\xe4", [23805] = "\x94\x5b", [23808] = "\x95\x52",
-+ [23812] = "\x8f\x83", [23813] = "\xe3\x42", [23815] = "\x8e\xd1",
-+ [23816] = "\x8d\x68", [23817] = "\x8e\x86", [23818] = "\x8b\x89",
-+ [23819] = "\x95\xb4", [23820] = "\xe3\x41", [23824] = "\x91\x66",
-+ [23825] = "\x96\x61", [23826] = "\x8d\xf5", [23835] = "\x8e\x87",
-+ [23836] = "\x92\xdb", [23838] = "\xe3\x46", [23839] = "\x97\xdd",
-+ [23840] = "\x8d\xd7", [23842] = "\xe3\x47", [23843] = "\x90\x61",
-+ [23845] = "\xe3\x49", [23849] = "\x8f\xd0", [23850] = "\x8d\xae",
-+ [23855] = "\xe3\x48", [23858] = "\x8f\x49", [23859] = "\x8c\xbc",
-+ [23860] = "\x91\x67", [23861] = "\xe3\x44", [23862] = "\xe3\x4a",
-+ [23864] = "\xfb\x8a", [23867] = "\xe3\x45", [23868] = "\x8c\x6f",
-+ [23870] = "\xe3\x4d", [23871] = "\xe3\x51", [23872] = "\x8c\x8b",
-+ [23878] = "\xe3\x4c", [23883] = "\xe3\x55", [23884] = "\xfb\x8b",
-+ [23886] = "\x8d\x69", [23889] = "\x97\x8d", [23890] = "\x88\xba",
-+ [23891] = "\xe3\x52", [23894] = "\x8b\x8b", [23896] = "\xe3\x4f",
-+ [23902] = "\xe3\x50", [23905] = "\x93\x9d", [23906] = "\xe3\x4e",
-+ [23907] = "\xe3\x4b", [23909] = "\x8a\x47", [23910] = "\x90\xe2",
-+ [23913] = "\x8c\xa6", [23917] = "\xe3\x57", [23929] = "\xe3\x54",
-+ [23935] = "\xe3\x56", [23939] = "\xe3\x53", [23945] = "\x8c\x70",
-+ [23946] = "\x91\xb1", [23947] = "\xe3\x58", [23948] = "\x91\x8e",
-+ [23951] = "\xe3\x65", [23952] = "\xfb\x8d", [23954] = "\xe3\x61",
-+ [23955] = "\xe3\x5b", [23963] = "\xe3\x5f", [23964] = "\x8e\xf8",
-+ [23965] = "\x88\xdb", [23966] = "\xe3\x5a", [23967] = "\xe3\x62",
-+ [23968] = "\xe3\x66", [23969] = "\x8d\x6a", [23970] = "\x96\xd4",
-+ [23972] = "\x92\xd4", [23973] = "\xe3\x5c", [23975] = "\xfb\x8c",
-+ [23976] = "\xe3\x64", [23978] = "\xe3\x59", [23979] = "\x92\x5d",
-+ [23981] = "\xe3\x5e", [23982] = "\x88\xbb", [23983] = "\x96\xc8",
-+ [23991] = "\xe3\x5d", [23994] = "\x8b\xd9", [23995] = "\x94\xea",
-+ [23999] = "\x91\x8d", [24001] = "\x97\xce", [24002] = "\x8f\x8f",
-+ [24005] = "\xe3\x8e", [24006] = "\xfb\x8e", [24008] = "\xe3\x67",
-+ [24010] = "\x90\xfc", [24012] = "\xe3\x63", [24013] = "\xe3\x68",
-+ [24014] = "\xe3\x6a", [24016] = "\x92\xf7", [24017] = "\xe3\x6d",
-+ [24020] = "\xe3\x69", [24024] = "\x95\xd2", [24025] = "\x8a\xc9",
-+ [24028] = "\x96\xc9", [24031] = "\x88\xdc", [24034] = "\xe3\x6c",
-+ [24036] = "\x97\xfb", [24043] = "\xe3\x6b", [24049] = "\x89\x8f",
-+ [24052] = "\x93\xea", [24053] = "\xe3\x6e", [24057] = "\xe3\x75",
-+ [24058] = "\xe3\x6f", [24059] = "\xe3\x76", [24066] = "\xe3\x72",
-+ [24075] = "\x94\x9b", [24078] = "\x8e\xc8", [24079] = "\xe3\x74",
-+ [24081] = "\xe3\x71", [24082] = "\xe3\x77", [24083] = "\xe3\x70",
-+ [24086] = "\x8f\x63", [24091] = "\x96\x44", [24094] = "\x8f\x6b",
-+ [24097] = "\xe3\x73", [24098] = "\xe3\x80", [24101] = "\xe3\x7b",
-+ [24103] = "\xe3\x7e", [24105] = "\xe3\x7c", [24106] = "\xe3\x81",
-+ [24107] = "\xe3\x7a", [24109] = "\xe3\x60", [24110] = "\x90\xd1",
-+ [24113] = "\x94\xc9", [24115] = "\xe3\x7d", [24118] = "\xe3\x78",
-+ [24122] = "\x91\x40", [24123] = "\x8c\x71", [24125] = "\x8f\x4a",
-+ [24130] = "\xfb\x8f", [24132] = "\x90\x44", [24133] = "\x91\x55",
-+ [24134] = "\xe3\x84", [24137] = "\xe3\x86", [24138] = "\xe3\x87",
-+ [24141] = "\xe3\x83", [24142] = "\xe3\x85", [24150] = "\xe3\x79",
-+ [24151] = "\xe3\x82", [24153] = "\xe3\x8a", [24154] = "\xe3\x89",
-+ [24157] = "\x96\x9a", [24160] = "\x8c\x4a", [24169] = "\xe3\x88",
-+ [24171] = "\xe3\x8c", [24172] = "\xe3\x8b", [24173] = "\xe3\x8f",
-+ [24175] = "\xe3\x91", [24178] = "\x8e\x5b", [24179] = "\xe3\x8d",
-+ [24184] = "\xe3\x92", [24185] = "\xe3\x93", [24186] = "\xfa\x5c",
-+ [24188] = "\xe3\x94", [24190] = "\xe3\x9a", [24191] = "\x93\x5a",
-+ [24192] = "\xe3\x96", [24194] = "\xe3\x95", [24195] = "\xe3\x97",
-+ [24196] = "\xe3\x98", [24198] = "\xe3\x99", [24203] = "\xe3\x9b",
-+ [24204] = "\xe3\x9c", [24358] = "\x8a\xca", [24360] = "\xe3\x9d",
-+ [24362] = "\xe3\x9e", [24373] = "\xe3\x9f", [24375] = "\xfb\x90",
-+ [24380] = "\xe3\xa0", [24381] = "\xe3\xa1", [24382] = "\xe3\xa2",
-+ [24384] = "\xe3\xa3", [24385] = "\xe3\xa4", [24388] = "\xe3\xa6",
-+ [24389] = "\xe3\xa5", [24392] = "\xe3\xa7", [24399] = "\xe3\xa8",
-+ [24400] = "\xe3\xa9", [24407] = "\xe3\xac", [24408] = "\xe3\xaa",
-+ [24409] = "\xe3\xab", [24410] = "\x8d\xdf", [24411] = "\x8c\x72",
-+ [24414] = "\x92\x75", [24416] = "\x94\xb1", [24418] = "\x8f\x90",
-+ [24421] = "\x94\x6c", [24423] = "\x94\xeb", [24424] = "\xe3\xad",
-+ [24425] = "\x9c\xeb", [24434] = "\xe3\xae", [24435] = "\xe3\xb0",
-+ [24437] = "\x97\x85", [24438] = "\xe3\xaf", [24439] = "\xe3\xb2",
-+ [24440] = "\xe3\xb1", [24442] = "\x97\x72", [24444] = "\xe3\xb3",
-+ [24446] = "\x94\xfc", [24452] = "\xe3\xb4", [24458] = "\xe3\xb7",
-+ [24461] = "\xe3\xb6", [24462] = "\xe3\xb5", [24465] = "\xfb\x91",
-+ [24467] = "\xe3\xb8", [24468] = "\x8c\x51", [24472] = "\x91\x41",
-+ [24473] = "\x8b\x60", [24478] = "\xe3\xbc", [24479] = "\xe3\xb9",
-+ [24482] = "\xe3\xba", [24486] = "\xe3\xbd", [24488] = "\xe3\xbe",
-+ [24489] = "\xe3\xbb", [24493] = "\x89\x48", [24497] = "\x89\xa5",
-+ [24501] = "\xe3\xc0", [24502] = "\xe3\xc1", [24506] = "\xe3\xc2",
-+ [24508] = "\x97\x82", [24514] = "\x8f\x4b", [24516] = "\xe3\xc4",
-+ [24517] = "\xe3\xc3", [24528] = "\x90\x89", [24529] = "\xe3\xc5",
-+ [24534] = "\xe3\xc6", [24537] = "\xe3\xc7", [24539] = "\x8a\xe3",
-+ [24544] = "\x8a\xcb", [24547] = "\xe3\xc8", [24553] = "\xe3\xc9",
-+ [24555] = "\x96\x7c", [24556] = "\x97\x83", [24560] = "\x97\x73",
-+ [24561] = "\x98\x56", [24563] = "\x8d\x6c", [24564] = "\xe3\xcc",
-+ [24565] = "\x8e\xd2", [24566] = "\xe3\xcb", [24571] = "\xe3\xcd",
-+ [24572] = "\x8e\xa7", [24576] = "\x91\xcf", [24578] = "\xe3\xce",
-+ [24581] = "\x8d\x6b", [24583] = "\x96\xd5", [24584] = "\xe3\xcf",
-+ [24585] = "\xe3\xd0", [24588] = "\xe3\xd1", [24593] = "\xe3\xd2",
-+ [24600] = "\xe3\xd3", [24611] = "\x8e\xa8", [24614] = "\x96\xeb",
-+ [24619] = "\xe3\xd5", [24621] = "\x92\x5e", [24623] = "\xe3\xd4",
-+ [24630] = "\xe3\xd7", [24634] = "\xe3\xd6", [24642] = "\xe3\xd8",
-+ [24646] = "\x90\xb9", [24648] = "\xe3\xd9", [24650] = "\xe3\xda",
-+ [24654] = "\x95\xb7", [24655] = "\xe3\xdb", [24657] = "\x91\x8f",
-+ [24658] = "\xe3\xdc", [24664] = "\xe3\xdd", [24671] = "\x97\xfc",
-+ [24672] = "\xe3\xe0", [24674] = "\xe3\xdf", [24675] = "\xe3\xde",
-+ [24676] = "\x92\xae", [24678] = "\xe3\xe1", [24679] = "\x90\x45",
-+ [24681] = "\xe3\xe2", [24685] = "\xe3\xe3", [24686] = "\x98\x57",
-+ [24687] = "\xe3\xe4", [24692] = "\xe3\xe5", [24693] = "\xe3\xe7",
-+ [24694] = "\xe3\xe6", [24695] = "\x94\xa3", [24697] = "\x93\xf7",
-+ [24699] = "\x98\x5d", [24700] = "\x94\xa7", [24707] = "\xe3\xe9",
-+ [24710] = "\x8f\xd1", [24712] = "\x95\x49", [24714] = "\xe3\xea",
-+ [24715] = "\xe3\xe8", [24717] = "\x8a\xcc", [24721] = "\x8c\xd2",
-+ [24722] = "\x8e\x88", [24725] = "\x94\xec", [24729] = "\x8c\xa8",
-+ [24730] = "\x96\x62", [24732] = "\xe3\xed", [24733] = "\xe3\xeb",
-+ [24735] = "\x8d\x6d", [24737] = "\x8d\x6e", [24738] = "\x88\xe7",
-+ [24740] = "\x8d\xe6", [24746] = "\x94\x78", [24755] = "\x88\xdd",
-+ [24756] = "\xe3\xf2", [24758] = "\x92\x5f", [24764] = "\x94\x77",
-+ [24766] = "\x91\xd9", [24774] = "\xe3\xf4", [24777] = "\xe3\xf0",
-+ [24778] = "\xe3\xf3", [24779] = "\xe3\xee", [24781] = "\xe3\xf1",
-+ [24782] = "\x96\x45", [24785] = "\x8c\xd3", [24788] = "\x88\xfb",
-+ [24789] = "\xe3\xef", [24799] = "\xe3\xf6", [24801] = "\xe3\xf7",
-+ [24804] = "\x93\xb7", [24808] = "\x8b\xb9", [24812] = "\xe4\x45",
-+ [24813] = "\x94\x5c", [24818] = "\x8e\x89", [24821] = "\x8b\xba",
-+ [24822] = "\x90\xc6", [24823] = "\x98\x65", [24824] = "\x96\xac",
-+ [24825] = "\xe3\xf5", [24826] = "\x90\xd2", [24842] = "\x8b\x72",
-+ [24843] = "\xe3\xf8", [24851] = "\xe3\xfa", [24857] = "\xe3\xf9",
-+ [24863] = "\xe3\xfb", [24865] = "\x92\x45", [24867] = "\x94\x5d",
-+ [24873] = "\x92\xaf", [24878] = "\xe4\x42", [24886] = "\xe4\x41",
-+ [24891] = "\xe3\xfc", [24894] = "\x90\x74", [24896] = "\x95\x85",
-+ [24897] = "\xe4\x44", [24899] = "\xe4\x43", [24900] = "\x8d\x6f",
-+ [24901] = "\x98\x72", [24911] = "\xe4\x54", [24917] = "\xe4\x48",
-+ [24918] = "\xe4\x49", [24923] = "\x8e\xee", [24926] = "\xe4\x47",
-+ [24928] = "\x8d\x98", [24929] = "\xe4\x46", [24932] = "\xe4\x4a",
-+ [24936] = "\x92\xb0", [24937] = "\x95\xa0", [24938] = "\x91\x42",
-+ [24943] = "\x91\xda", [24944] = "\xe4\x4e", [24946] = "\xe4\x4f",
-+ [24947] = "\xe4\x4b", [24952] = "\xe4\x4c", [24954] = "\xe4\x4d",
-+ [24959] = "\x8d\x70", [24963] = "\xe4\x55", [24965] = "\xe4\x51",
-+ [24970] = "\x95\x86", [24972] = "\x96\x8c", [24973] = "\x95\x47",
-+ [24976] = "\xe4\x50", [24979] = "\xe4\x53", [24980] = "\xe4\x52",
-+ [24984] = "\x96\x63", [24985] = "\xe4\x56", [24992] = "\xe4\x57",
-+ [24995] = "\x91\x56", [24997] = "\xe4\x58", [25000] = "\xe4\x5a",
-+ [25002] = "\xe4\x5e", [25005] = "\xe4\x5b", [25006] = "\xe4\x59",
-+ [25007] = "\x94\x5e", [25008] = "\xe4\x5c", [25010] = "\xe4\x5d",
-+ [25014] = "\x89\xb0", [25016] = "\xe4\x64", [25017] = "\xe4\x5f",
-+ [25021] = "\xe4\x60", [25025] = "\xe4\x61", [25027] = "\x91\x9f",
-+ [25032] = "\xe4\x63", [25033] = "\xe4\x62", [25034] = "\xe4\x65",
-+ [25039] = "\xe4\x66", [25040] = "\xe4\x67", [25043] = "\x90\x62",
-+ [25045] = "\x89\xe7", [25047] = "\xe4\x68", [25048] = "\x97\xd5",
-+ [25050] = "\x8e\xa9", [25053] = "\x8f\x4c", [25059] = "\x8e\x8a",
-+ [25060] = "\x92\x76", [25066] = "\xe4\x69", [25067] = "\xe4\x6a",
-+ [25068] = "\x89\x50", [25070] = "\xe4\x6b", [25073] = "\xe4\x6c",
-+ [25074] = "\xe4\x6d", [25077] = "\xe4\x6e", [25079] = "\xe4\x6f",
-+ [25080] = "\x8b\xbb", [25081] = "\x9d\xa8", [25082] = "\xe4\x70",
-+ [25084] = "\x90\xe3", [25085] = "\xe4\x71", [25086] = "\x8e\xc9",
-+ [25088] = "\xe4\x72", [25090] = "\x98\xae", [25094] = "\xe4\x73",
-+ [25095] = "\x95\xdc", [25096] = "\x8a\xda", [25099] = "\x91\x43",
-+ [25100] = "\x8f\x77", [25102] = "\x95\x91", [25103] = "\x8f\x4d",
-+ [25113] = "\xe4\x74", [25114] = "\x8d\x71", [25115] = "\xe4\x75",
-+ [25116] = "\x94\xca", [25118] = "\xe4\x84", [25123] = "\xe4\x77",
-+ [25125] = "\x91\xc7", [25126] = "\x94\x95", [25127] = "\x8c\xbd",
-+ [25128] = "\xe4\x76", [25129] = "\x91\x44", [25136] = "\xe4\x78",
-+ [25143] = "\x92\xf8", [25160] = "\xe4\x7a", [25161] = "\xe4\x79",
-+ [25162] = "\xe4\x7c", [25165] = "\xe4\x7b", [25167] = "\xe4\x7d",
-+ [25170] = "\xe4\x80", [25172] = "\xe4\x7e", [25174] = "\x8a\xcd",
-+ [25176] = "\xe4\x81", [25178] = "\xe4\x82", [25179] = "\xe4\x83",
-+ [25182] = "\x8d\xaf", [25183] = "\x97\xc7", [25185] = "\xe4\x85",
-+ [25186] = "\x90\x46", [25190] = "\x89\x90", [25191] = "\xe4\x86",
-+ [25192] = "\xe4\x87", [25198] = "\xe4\x88", [25211] = "\x88\xf0",
-+ [25213] = "\xe4\x89", [25218] = "\xe4\x8a", [25225] = "\x95\x87",
-+ [25229] = "\x8e\xc5", [25231] = "\xe4\x8c", [25237] = "\x8a\x48",
-+ [25238] = "\x88\xb0", [25243] = "\xe4\x8b", [25244] = "\xe4\x8e",
-+ [25245] = "\x94\x6d", [25247] = "\x90\x63", [25249] = "\x89\xd4",
-+ [25251] = "\x96\x46", [25256] = "\x8c\x7c", [25257] = "\x8b\xda",
-+ [25259] = "\xe4\x8d", [25261] = "\x89\xe8", [25269] = "\x8a\xa1",
-+ [25281] = "\x89\x91", [25282] = "\xe4\x92", [25283] = "\x97\xe8",
-+ [25284] = "\x91\xdb", [25287] = "\x95\x63", [25289] = "\xe4\x9e",
-+ [25291] = "\x89\xd5", [25292] = "\xe4\x9c", [25294] = "\xe4\x9a",
-+ [25295] = "\xe4\x91", [25297] = "\xe4\x8f", [25299] = "\xe4\x90",
-+ [25301] = "\x8e\xe1", [25302] = "\x8b\xea", [25303] = "\x92\x97",
-+ [25307] = "\x93\xcf", [25313] = "\x89\x70", [25315] = "\xe4\x94",
-+ [25316] = "\xe4\x93", [25321] = "\xe4\x99", [25322] = "\xe4\x95",
-+ [25323] = "\xe4\x98", [25329] = "\xfb\x93", [25330] = "\x96\xce",
-+ [25331] = "\xe4\x97", [25332] = "\x89\xd6", [25333] = "\x8a\x9d",
-+ [25334] = "\xe4\x9b", [25337] = "\xe4\x9d", [25342] = "\x8c\x73",
-+ [25350] = "\xe4\xa1", [25351] = "\xe4\xaa", [25352] = "\xe4\xab",
-+ [25356] = "\x88\xa9", [25363] = "\xe4\xb2", [25368] = "\x88\xef",
-+ [25371] = "\xe4\xa9", [25375] = "\xe4\xa8", [25377] = "\xe4\xa3",
-+ [25378] = "\xe4\xa2", [25380] = "\xe4\xa0", [25381] = "\xe4\x9f",
-+ [25382] = "\x92\x83", [25384] = "\x91\xf9", [25385] = "\xe4\xa5",
-+ [25392] = "\xe4\xa4", [25397] = "\xe4\xa7", [25401] = "\x91\x90",
-+ [25402] = "\x8c\x74", [25407] = "\x89\x60", [25408] = "\xe4\xa6",
-+ [25410] = "\x8d\x72", [25416] = "\x91\x91", [25426] = "\xfb\x94",
-+ [25443] = "\xe4\xb8", [25445] = "\xe4\xb9", [25447] = "\x89\xd7",
-+ [25451] = "\x89\xac", [25452] = "\xe4\xb6", [25455] = "\xfb\x95",
-+ [25461] = "\xe4\xac", [25463] = "\xe4\xb4", [25465] = "\xe4\xbb",
-+ [25466] = "\xe4\xb5", [25470] = "\xe4\xb3", [25475] = "\xe4\x96",
-+ [25478] = "\xe4\xb1", [25482] = "\xe4\xad", [25486] = "\x8a\xce",
-+ [25487] = "\xe4\xaf", [25488] = "\xe4\xba", [25490] = "\xe4\xb0",
-+ [25496] = "\xe4\xbc", [25498] = "\xe4\xae", [25499] = "\x94\x9c",
-+ [25505] = "\x97\x89", [25509] = "\xe4\xb7", [25517] = "\xe4\xcd",
-+ [25521] = "\xe4\xc5", [25525] = "\x90\x9b", [25527] = "\xfb\x96",
-+ [25530] = "\x8b\x65", [25532] = "\x8b\xdb", [25534] = "\xe4\xc0",
-+ [25539] = "\x89\xd9", [25542] = "\x8f\xd2", [25544] = "\xe4\xc3",
-+ [25548] = "\x8d\xd8", [25551] = "\x93\x70", [25552] = "\xe4\xc8",
-+ [25561] = "\x95\xec", [25563] = "\xe4\xbf", [25567] = "\x89\xd8",
-+ [25568] = "\x8c\xd4", [25569] = "\x95\x48", [25570] = "\xe4\xc9",
-+ [25572] = "\xe4\xbd", [25574] = "\xfb\x97", [25575] = "\xe4\xc6",
-+ [25579] = "\xe4\xd0", [25581] = "\xe4\xc1", [25587] = "\xe4\xc2",
-+ [25588] = "\x93\xb8", [25591] = "\xe4\xc7", [25595] = "\xe4\xc4",
-+ [25596] = "\x96\x47", [25597] = "\xe4\xca", [25598] = "\x88\xde",
-+ [25603] = "\xe4\xbe", [25616] = "\xe4\xcc", [25618] = "\xe4\xcb",
-+ [25625] = "\x94\x8b", [25626] = "\xe4\xd2", [25628] = "\xe4\xdd",
-+ [25633] = "\x8a\x9e", [25637] = "\xe4\xe0", [25640] = "\xe4\xce",
-+ [25644] = "\xe4\xd3", [25645] = "\x97\x8e", [25654] = "\xe4\xdc",
-+ [25656] = "\xfb\x98", [25657] = "\x97\x74", [25662] = "\x97\xa8",
-+ [25671] = "\x92\x98", [25675] = "\x8a\x8b", [25681] = "\x95\x92",
-+ [25682] = "\xe4\xe2", [25683] = "\x93\x9f", [25686] = "\x88\xaf",
-+ [25689] = "\xe4\xdb", [25691] = "\xe4\xd7", [25692] = "\x91\x92",
-+ [25693] = "\xe4\xd1", [25694] = "\xe4\xd9", [25695] = "\xe4\xde",
-+ [25697] = "\x94\x4b", [25701] = "\x88\xa8", [25703] = "\xe4\xd6",
-+ [25705] = "\xe4\xdf", [25706] = "\x95\x98", [25714] = "\xe4\xda",
-+ [25716] = "\xe4\xd5", [25723] = "\x8f\xd3", [25728] = "\x8f\x4e",
-+ [25732] = "\x8e\xaa", [25737] = "\x96\xd6", [25740] = "\x95\x66",
-+ [25743] = "\xe4\xe5", [25745] = "\xe4\xee", [25757] = "\xe4\xd8",
-+ [25762] = "\x8a\x97", [25764] = "\xfb\x99", [25768] = "\x8f\xf6",
-+ [25769] = "\xe4\xe3", [25771] = "\xe4\xe8", [25772] = "\x91\x93",
-+ [25775] = "\xe4\xe4", [25777] = "\xe4\xeb", [25780] = "\x92\x7e",
-+ [25782] = "\xe4\xec", [25785] = "\x97\x75", [25786] = "\xe4\xe1",
-+ [25787] = "\x8a\x57", [25789] = "\xe4\xe7", [25792] = "\xe4\xea",
-+ [25793] = "\x96\xaa", [25798] = "\xe4\xed", [25801] = "\xe4\xe6",
-+ [25802] = "\xe4\xe9", [25804] = "\xfa\x60", [25820] = "\x96\x48",
-+ [25822] = "\x98\x40", [25828] = "\xe4\xf1", [25836] = "\xe4\xf8",
-+ [25839] = "\xe4\xf0", [25840] = "\x8e\xc1", [25846] = "\xe4\xcf",
-+ [25857] = "\x95\xcc", [25859] = "\x96\xa0", [25860] = "\xe4\xf7",
-+ [25861] = "\xe4\xf6", [25863] = "\xe4\xf2", [25864] = "\xe4\xf3",
-+ [25866] = "\x89\x55", [25871] = "\xe4\xf5", [25873] = "\xe4\xef",
-+ [25878] = "\x92\xd3", [25884] = "\xe4\xf4", [25885] = "\x88\xfc",
-+ [25893] = "\x91\xa0", [25901] = "\x95\xc1", [25904] = "\xe4\xf9",
-+ [25905] = "\xe5\x40", [25907] = "\x94\xd7", [25912] = "\xe4\xfc",
-+ [25913] = "\x8f\xd4", [25914] = "\x8e\xc7", [25915] = "\xe5\x42",
-+ [25918] = "\x8b\xbc", [25923] = "\xfb\x9a", [25925] = "\xe5\x43",
-+ [25927] = "\x95\x99", [25928] = "\xe4\xfb", [25929] = "\xfb\x9b",
-+ [25930] = "\xe4\xd4", [25939] = "\xe4\xfa", [25944] = "\x98\x6e",
-+ [25945] = "\x93\xa0", [25946] = "\x95\x93", [25947] = "\xfb\x9c",
-+ [25949] = "\xe5\x4a", [25959] = "\xe5\x50", [25966] = "\xe5\x51",
-+ [25968] = "\xe5\x44", [25972] = "\x94\x96", [25975] = "\xe5\x4e",
-+ [25976] = "\xe5\x46", [25978] = "\xe5\x48", [25984] = "\xe5\x52",
-+ [25985] = "\xe5\x47", [25988] = "\xe5\x4b", [25991] = "\x89\x92",
-+ [25993] = "\x93\xe3", [25995] = "\xe5\x4c", [25996] = "\xe5\x4f",
-+ [26004] = "\xe5\x45", [26006] = "\x91\x45", [26008] = "\xe5\x49",
-+ [26009] = "\x8e\x46", [26010] = "\x90\x64", [26011] = "\x8c\x4f",
-+ [26012] = "\x96\xf2", [26014] = "\x96\xf7", [26015] = "\x8f\x92",
-+ [26016] = "\xfb\x9e", [26025] = "\xe5\x56", [26026] = "\xe5\x54",
-+ [26033] = "\x98\x6d", [26041] = "\xe5\x53", [26045] = "\x97\x95",
-+ [26047] = "\xe5\x55", [26048] = "\xe5\x57", [26053] = "\xe5\x58",
-+ [26060] = "\xe5\x5b", [26061] = "\xe5\x59", [26068] = "\x93\xa1",
-+ [26069] = "\xe5\x5a", [26073] = "\x94\xcb", [26074] = "\xe5\x4d",
-+ [26087] = "\x8f\x93", [26089] = "\xe5\x5c", [26090] = "\xe5\x61",
-+ [26091] = "\x91\x94", [26094] = "\xe5\x60", [26098] = "\xe5\x41",
-+ [26102] = "\xe5\x62", [26103] = "\x91\x68", [26106] = "\xe5\x5d",
-+ [26107] = "\xe5\x5f", [26115] = "\xe5\x5e", [26118] = "\x9f\x50",
-+ [26119] = "\x9f\x41", [26122] = "\xe5\x64", [26130] = "\xe5\x63",
-+ [26141] = "\x97\x96", [26143] = "\xe1\xba", [26144] = "\xe5\x65",
-+ [26159] = "\xe5\x66", [26173] = "\xe5\x67", [26174] = "\x8c\xd5",
-+ [26176] = "\x8b\x73", [26180] = "\xe5\x69", [26181] = "\x99\x7c",
-+ [26186] = "\x8b\x95", [26188] = "\x97\xb8", [26190] = "\x8b\xf1",
-+ [26191] = "\xe5\x6a", [26199] = "\xe5\x6b", [26203] = "\x92\x8e",
-+ [26209] = "\xe5\x6c", [26217] = "\x93\xf8", [26219] = "\x88\xb8",
-+ [26234] = "\x89\xe1", [26235] = "\xe5\x71", [26236] = "\xe5\x72",
-+ [26243] = "\xe5\x6d", [26245] = "\x8e\x5c", [26259] = "\xe5\x6e",
-+ [26260] = "\x94\x61", [26265] = "\xe5\x6f", [26266] = "\xe5\x70",
-+ [26267] = "\xe5\x7a", [26271] = "\xe5\x74", [26272] = "\xe5\x77",
-+ [26278] = "\xe5\x73", [26292] = "\xe5\x75", [26294] = "\xe5\x76",
-+ [26295] = "\x8e\xd6", [26297] = "\xe5\x78", [26299] = "\x92\x60",
-+ [26301] = "\x8c\x75", [26302] = "\x8a\x61", [26308] = "\xe5\x7b",
-+ [26313] = "\x8a\x5e", [26315] = "\xe5\x81", [26318] = "\xe5\x7c",
-+ [26319] = "\xe5\x80", [26324] = "\x94\xb8", [26329] = "\xe5\x7d",
-+ [26332] = "\xe5\x7e", [26333] = "\x95\x67", [26334] = "\x94\xd8",
-+ [26335] = "\xe5\x82", [26344] = "\x91\xfb", [26345] = "\xe5\x8c",
-+ [26347] = "\xe5\x88", [26350] = "\x89\xe9", [26352] = "\xe5\x86",
-+ [26354] = "\x96\x49", [26355] = "\xe5\x87", [26358] = "\xe5\x84",
-+ [26360] = "\xe5\x85", [26361] = "\xe5\x8a", [26362] = "\xe5\x8d",
-+ [26365] = "\xe5\x8b", [26369] = "\xe5\x89", [26370] = "\xe5\x83",
-+ [26376] = "\x92\x77", [26378] = "\xe5\x94", [26380] = "\x96\xa8",
-+ [26389] = "\xe5\x92", [26393] = "\xe5\x93", [26404] = "\xe5\x8e",
-+ [26407] = "\xe5\x90", [26411] = "\xe5\x91", [26415] = "\xe5\x8f",
-+ [26425] = "\x90\xe4", [26427] = "\x98\x58", [26428] = "\xe5\x98",
-+ [26430] = "\xe5\x99", [26435] = "\xe5\x9f", [26437] = "\x90\x49",
-+ [26439] = "\xe5\x9b", [26441] = "\xe5\x9e", [26447] = "\xe5\x96",
-+ [26448] = "\xe5\x95", [26451] = "\xe5\xa0", [26454] = "\x89\xda",
-+ [26456] = "\xe5\x9c", [26458] = "\xe5\xa1", [26462] = "\xe5\x9d",
-+ [26468] = "\xe5\x9a", [26470] = "\x92\xb1", [26472] = "\xe5\x97",
-+ [26479] = "\x94\x88", [26482] = "\xe5\xa5", [26493] = "\x97\x5a",
-+ [26511] = "\xe5\xa4", [26514] = "\xe5\xa3", [26523] = "\xe5\xac",
-+ [26527] = "\xe5\xa6", [26531] = "\xe5\xae", [26538] = "\x97\x86",
-+ [26539] = "\xe5\xb1", [26541] = "\xe5\xa8", [26544] = "\xe5\xa9",
-+ [26548] = "\xe5\xad", [26550] = "\xe5\xb0", [26551] = "\xe5\xaf",
-+ [26555] = "\xe5\xa7", [26560] = "\xe5\xaa", [26562] = "\xe5\xbb",
-+ [26576] = "\xe5\xb4", [26591] = "\xe5\xb2", [26594] = "\xe5\xb3",
-+ [26598] = "\xe5\xb8", [26599] = "\xe5\xb9", [26601] = "\x8a\x49",
-+ [26603] = "\x8b\x61", [26606] = "\xe5\xb7", [26613] = "\xe5\xa2",
-+ [26615] = "\xfb\xa1", [26621] = "\xe5\xb6", [26622] = "\xe5\xba",
-+ [26623] = "\xe5\xb5", [26625] = "\xe5\xbc", [26629] = "\xe5\xbe",
-+ [26630] = "\xe5\xbd", [26641] = "\xe5\xc0", [26642] = "\xe5\xbf",
-+ [26643] = "\xe5\x79", [26647] = "\xe5\xc4", [26657] = "\xe5\xc1",
-+ [26662] = "\xe5\xc2", [26665] = "\xe5\xc3", [26667] = "\xe5\xc5",
-+ [26672] = "\x8c\x8c", [26674] = "\xe5\xc7", [26676] = "\xe5\xc6",
-+ [26678] = "\x8f\x4f", [26684] = "\x8d\x73", [26685] = "\x9f\xa5",
-+ [26690] = "\xe5\xc8", [26691] = "\x8f\x70", [26695] = "\x8a\x58",
-+ [26697] = "\xe5\xc9", [26699] = "\x89\x71", [26701] = "\x8f\xd5",
-+ [26702] = "\xe5\xca", [26705] = "\x8d\x74", [26706] = "\xe5\xcb",
-+ [26707] = "\x88\xdf", [26712] = "\x95\x5c", [26715] = "\xe5\xcc",
-+ [26720] = "\x90\x8a", [26722] = "\xe5\xd3", [26725] = "\xe5\xd0",
-+ [26727] = "\x92\x8f", [26733] = "\xe5\xd1", [26734] = "\xe5\xce",
-+ [26735] = "\x8b\xdc", [26737] = "\xe5\xcd", [26738] = "\xe5\xd4",
-+ [26744] = "\x8c\x55", [26747] = "\x91\xdc", [26749] = "\xe5\xda",
-+ [26754] = "\xe5\xd6", [26758] = "\x91\xb3", [26759] = "\xe5\xd5",
-+ [26761] = "\xe5\xd8", [26766] = "\xe5\xcf", [26770] = "\xe5\xd9",
-+ [26772] = "\xe5\xdb", [26779] = "\x94\xed", [26782] = "\xe5\xd7",
-+ [26784] = "\xe5\xdc", [26785] = "\xe5\xde", [26788] = "\x8c\xd1",
-+ [26789] = "\xe5\xd2", [26791] = "\x88\xbf", [26799] = "\xe5\xdd",
-+ [26801] = "\x8d\xd9", [26802] = "\x97\xf4", [26803] = "\xe5\xdf",
-+ [26804] = "\xe5\xe0", [26805] = "\x91\x95", [26815] = "\x97\xa0",
-+ [26820] = "\xe5\xe1", [26821] = "\x97\x54", [26824] = "\xe5\xe2",
-+ [26825] = "\xe5\xe3", [26828] = "\x95\xe2", [26829] = "\xe5\xe4",
-+ [26831] = "\x8d\xbe", [26833] = "\x97\xa1", [26840] = "\xe5\xe9",
-+ [26850] = "\xe5\xea", [26851] = "\x8f\xd6", [26852] = "\xe5\xe8",
-+ [26853] = "\xfb\xa2", [26856] = "\x97\x87", [26857] = "\xe5\xe5",
-+ [26860] = "\xe5\xe7", [26861] = "\x90\xbb", [26862] = "\x90\x9e",
-+ [26866] = "\xe5\xe6", [26868] = "\xe5\xeb", [26871] = "\x95\xa1",
-+ [26874] = "\xe5\xed", [26876] = "\xe5\xec", [26880] = "\x8a\x8c",
-+ [26882] = "\x96\x4a", [26883] = "\xe5\xee", [26892] = "\xfa\x5d",
-+ [26893] = "\xe5\xfa", [26894] = "\xe5\xf0", [26901] = "\xe5\xf1",
-+ [26906] = "\xe5\xf2", [26907] = "\xe5\xf3", [26918] = "\xe5\xf7",
-+ [26920] = "\xe5\xf8", [26923] = "\xe5\xf6", [26929] = "\xe5\xf4",
-+ [26931] = "\xe5\xef", [26932] = "\xe5\xf5", [26940] = "\xe5\xf9",
-+ [26941] = "\xe8\xb5", [26950] = "\x89\xa6", [26958] = "\xe5\xfc",
-+ [26959] = "\x8b\xdd", [26960] = "\xe5\xfb", [26964] = "\xe6\x41",
-+ [26966] = "\xe6\x40", [26970] = "\xe6\x43", [26973] = "\xe6\x42",
-+ [26975] = "\xe6\x44", [26978] = "\x8f\x50", [26980] = "\xe6\x45",
-+ [26983] = "\xe6\x46", [26990] = "\xe6\x47", [26991] = "\x90\xbc",
-+ [26993] = "\x97\x76", [26995] = "\xe6\x48", [26998] = "\x95\xa2",
-+ [26999] = "\x94\x65", [27000] = "\xe6\x49", [27002] = "\xe6\x4a",
-+ [27003] = "\x8c\xa9", [27007] = "\x8b\x4b", [27011] = "\xe6\x4b",
-+ [27014] = "\x8e\x8b", [27015] = "\x94\x60", [27016] = "\xe6\x4c",
-+ [27018] = "\x8a\x6f", [27025] = "\xe6\x4d", [27030] = "\xe6\x4f",
-+ [27031] = "\x97\x97", [27033] = "\xe6\x4e", [27034] = "\x90\x65",
-+ [27036] = "\xe6\x50", [27039] = "\xe6\x51", [27042] = "\xe6\x52",
-+ [27043] = "\x8a\xcf", [27050] = "\xe6\x53", [27053] = "\xe6\x54",
-+ [27055] = "\xe6\x55", [27056] = "\xe6\x56", [27074] = "\x8a\x70",
-+ [27082] = "\xe6\x57", [27084] = "\xe6\x58", [27085] = "\xe6\x59",
-+ [27091] = "\x89\xf0", [27094] = "\x90\x47", [27095] = "\xe6\x5a",
-+ [27108] = "\xe6\x5b", [27112] = "\xe6\x5c", [27120] = "\x8c\xbe",
-+ [27122] = "\x92\xf9", [27123] = "\xe6\x5d", [27128] = "\x8c\x76",
-+ [27130] = "\x90\x75", [27132] = "\xe6\x60", [27134] = "\x93\xa2",
-+ [27136] = "\xe6\x5f", [27138] = "\xfb\xa3", [27139] = "\x8c\x50",
-+ [27142] = "\xe6\x5e", [27143] = "\x91\xf5", [27144] = "\x8b\x4c",
-+ [27147] = "\xe6\x61", [27149] = "\xe6\x62", [27151] = "\x8f\xd7",
-+ [27155] = "\x8c\x8d", [27157] = "\xe6\x63", [27162] = "\x96\x4b",
-+ [27165] = "\x90\xdd", [27169] = "\x8b\x96", [27171] = "\x96\xf3",
-+ [27172] = "\x91\x69", [27174] = "\xe6\x64", [27175] = "\xfb\xa4",
-+ [27178] = "\x90\x66", [27179] = "\x92\x90", [27180] = "\x8f\xd8",
-+ [27185] = "\xe6\x65", [27190] = "\xe6\x68", [27192] = "\xe6\x69",
-+ [27200] = "\x8d\xbc", [27201] = "\x91\xc0", [27202] = "\xe6\x67",
-+ [27204] = "\x8f\xd9", [27205] = "\x95\x5d", [27211] = "\xe6\x66",
-+ [27214] = "\x8e\x8c", [27216] = "\x89\x72", [27218] = "\xe6\x6d",
-+ [27219] = "\x8c\x77", [27222] = "\x8e\x8e", [27225] = "\x8e\x8d",
-+ [27227] = "\x98\x6c", [27228] = "\xe6\x6c", [27229] = "\xe6\x6b",
-+ [27230] = "\x91\x46", [27232] = "\x8b\x6c", [27233] = "\x98\x62",
-+ [27234] = "\x8a\x59", [27235] = "\x8f\xda", [27241] = "\xfb\xa5",
-+ [27244] = "\xe6\x6a", [27250] = "\xe6\x6f", [27252] = "\xe6\x70",
-+ [27253] = "\xe6\x6e", [27255] = "\x8c\xd6", [27257] = "\x97\x5f",
-+ [27260] = "\x8e\x8f", [27261] = "\x94\x46", [27265] = "\xe6\x73",
-+ [27267] = "\x90\xbe", [27269] = "\x92\x61", [27272] = "\x97\x55",
-+ [27274] = "\xe6\x76", [27278] = "\x8c\xea", [27280] = "\x90\xbd",
-+ [27281] = "\xe6\x72", [27283] = "\xe6\x77", [27284] = "\x8c\xeb",
-+ [27285] = "\xe6\x74", [27286] = "\xe6\x75", [27287] = "\xfb\xa6",
-+ [27288] = "\xe6\x71", [27292] = "\x90\xe0", [27293] = "\x93\xc7",
-+ [27296] = "\x92\x4e", [27298] = "\x89\xdb", [27305] = "\x94\xee",
-+ [27308] = "\x8b\x62", [27310] = "\xfb\xa7", [27311] = "\x92\xb2",
-+ [27314] = "\xe6\x7a", [27316] = "\xe6\x78", [27319] = "\x92\x6b",
-+ [27323] = "\x90\xbf", [27324] = "\x8a\xd0", [27325] = "\xe6\x79",
-+ [27327] = "\x90\x7a", [27330] = "\x97\xc8", [27334] = "\x98\x5f",
-+ [27338] = "\xe6\x7b", [27339] = "\xe6\x87", [27340] = "\x92\xb3",
-+ [27342] = "\xe6\x86", [27343] = "\xfb\xa8", [27344] = "\xe6\x83",
-+ [27345] = "\xe6\x8b", [27346] = "\xe6\x84", [27348] = "\xe6\x80",
-+ [27350] = "\x92\xfa", [27351] = "\xe6\x7e", [27355] = "\xe6\x7c",
-+ [27357] = "\x97\x40", [27358] = "\x8e\x90", [27361] = "\xe6\x81",
-+ [27363] = "\xe6\x7d", [27366] = "\xfb\xaa", [27367] = "\xe6\x85",
-+ [27368] = "\x8f\x94", [27370] = "\x8c\xbf", [27374] = "\x91\xf8",
-+ [27376] = "\x96\x64", [27377] = "\x89\x79", [27378] = "\x88\xe0",
-+ [27380] = "\x93\xa3", [27383] = "\xe6\x89", [27388] = "\xe6\x88",
-+ [27390] = "\x93\xe4", [27392] = "\xe6\x8d", [27396] = "\xe6\x82",
-+ [27398] = "\xe6\x8c", [27399] = "\xe6\x8e", [27401] = "\x8c\xaa",
-+ [27402] = "\xe6\x8a", [27403] = "\x8d\x75", [27405] = "\x8e\xd3",
-+ [27408] = "\xe6\x8f", [27409] = "\x97\x77", [27414] = "\xe6\x92",
-+ [27416] = "\xe6\x95", [27419] = "\xe6\x93", [27420] = "\x95\x54",
-+ [27427] = "\xe6\x90", [27433] = "\x8b\xde", [27438] = "\xe6\x94",
-+ [27441] = "\xe6\x96", [27449] = "\xe6\x9a", [27452] = "\xe6\x97",
-+ [27454] = "\xe6\x99", [27455] = "\xe6\x98", [27459] = "\xfb\xab",
-+ [27462] = "\xe6\x9b", [27464] = "\x8e\xaf", [27466] = "\xe6\x9d",
-+ [27467] = "\xe6\x9c", [27468] = "\x95\x88", [27471] = "\xe6\x9f",
-+ [27478] = "\x8c\x78", [27483] = "\xe6\x9e", [27484] = "\xe6\xa0",
-+ [27487] = "\xe6\xa1", [27488] = "\x8b\x63", [27489] = "\xe3\xbf",
-+ [27490] = "\x8f\xf7", [27492] = "\xe6\xa2", [27495] = "\x8c\xec",
-+ [27501] = "\xe6\xa3", [27503] = "\xfb\xac", [27504] = "\xe6\xa4",
-+ [27507] = "\x8e\x5d", [27514] = "\x9d\xcc", [27516] = "\xe6\xa5",
-+ [27518] = "\xe6\xa6", [27520] = "\x8f\x51", [27522] = "\xe6\xa7",
-+ [27523] = "\xe6\xa8", [27526] = "\xe6\xa9", [27529] = "\xe6\xaa",
-+ [27530] = "\xe6\xab", [27687] = "\x92\x4a", [27690] = "\xe6\xac",
-+ [27695] = "\xe6\xae", [27697] = "\xe6\xad", [27702] = "\x93\xa4",
-+ [27704] = "\xe6\xaf", [27706] = "\x96\x4c", [27708] = "\xe6\xb0",
-+ [27710] = "\xe6\xb1", [27712] = "\xe6\xb2", [27717] = "\xe6\xb3",
-+ [27722] = "\x93\xd8", [27729] = "\x8f\xdb", [27730] = "\xe6\xb4",
-+ [27738] = "\x8d\x8b", [27739] = "\x98\xac", [27740] = "\xe6\xb5",
-+ [27752] = "\xe6\xb6", [27753] = "\x95\x5e", [27754] = "\xe6\xb7",
-+ [27756] = "\xe6\xbf", [27762] = "\xe6\xb8", [27765] = "\xe6\xba",
-+ [27769] = "\xe6\xb9", [27770] = "\xe6\xbb", [27772] = "\x96\x65",
-+ [27773] = "\xe6\xbc", [27774] = "\xe6\xbd", [27780] = "\xe6\xbe",
-+ [27784] = "\xe6\xc0", [27789] = "\x8a\x4c", [27790] = "\x92\xe5",
-+ [27792] = "\x95\x89", [27793] = "\x8d\xe0", [27794] = "\x8d\x76",
-+ [27799] = "\x95\x6e", [27800] = "\x89\xdd", [27801] = "\x94\xcc",
-+ [27802] = "\xe6\xc3", [27803] = "\x8a\xd1", [27804] = "\x90\xd3",
-+ [27805] = "\xe6\xc2", [27806] = "\xe6\xc7", [27807] = "\x92\x99",
-+ [27808] = "\x96\xe1", [27810] = "\xe6\xc5", [27811] = "\xe6\xc6",
-+ [27812] = "\x8b\x4d", [27814] = "\xe6\xc8", [27815] = "\x94\x83",
-+ [27816] = "\x91\xdd", [27819] = "\x94\xef", [27820] = "\x93\x5c",
-+ [27821] = "\xe6\xc4", [27823] = "\x96\x66", [27824] = "\x89\xea",
-+ [27825] = "\xe6\xca", [27826] = "\x98\x47", [27827] = "\x92\xc0",
-+ [27828] = "\x98\x64", [27831] = "\x8e\x91", [27832] = "\xe6\xc9",
-+ [27834] = "\x91\xaf", [27837] = "\xe6\xda", [27838] = "\x91\x47",
-+ [27841] = "\x93\xf6", [27843] = "\x95\x6f", [27850] = "\xe6\xcd",
-+ [27851] = "\x8e\x5e", [27852] = "\x8e\x92", [27854] = "\x8f\xdc",
-+ [27856] = "\x94\x85", [27858] = "\x8c\xab", [27859] = "\xe6\xcc",
-+ [27860] = "\xe6\xcb", [27862] = "\x95\x8a", [27866] = "\x8e\xbf",
-+ [27869] = "\x93\x71", [27872] = "\xfb\xad", [27876] = "\xfb\xae",
-+ [27882] = "\xe6\xcf", [27883] = "\xe6\xd0", [27884] = "\x8d\x77",
-+ [27885] = "\xe6\xce", [27892] = "\xe6\xd1", [27893] = "\xe6\xd2",
-+ [27895] = "\xe6\xd4", [27896] = "\x91\xa1", [27898] = "\xe6\xd3",
-+ [27899] = "\x8a\xe4", [27901] = "\xe6\xd6", [27903] = "\xe6\xd5",
-+ [27904] = "\xe6\xd7", [27906] = "\xfb\xaf", [27907] = "\xe6\xd9",
-+ [27908] = "\xe6\xdb", [27910] = "\xe6\xdc", [27988] = "\x90\xd4",
-+ [27990] = "\x8e\xcd", [27991] = "\xe6\xdd", [27995] = "\x8a\x71",
-+ [27997] = "\xe6\xde", [28000] = "\x91\x96", [28001] = "\xe6\xdf",
-+ [28003] = "\xe6\xe0", [28004] = "\x95\x8b", [28006] = "\xfb\xb0",
-+ [28007] = "\x8b\x4e", [28017] = "\xe6\xe1", [28021] = "\x92\xb4",
-+ [28026] = "\x89\x7a", [28041] = "\xe6\xe2", [28051] = "\x8e\xef",
-+ [28056] = "\x90\x96", [28067] = "\x91\xab", [28074] = "\xe6\xe5",
-+ [28078] = "\xe6\xe4", [28082] = "\xe6\xe3", [28091] = "\xe6\xeb",
-+ [28092] = "\xe6\xe9", [28095] = "\xe6\xe6", [28102] = "\xe6\xe8",
-+ [28106] = "\xe6\xe7", [28107] = "\xe6\xea", [28109] = "\x8b\x97",
-+ [28111] = "\xe6\xee", [28113] = "\x90\xd5", [28115] = "\xe6\xef",
-+ [28120] = "\x8c\xd7", [28122] = "\xe6\xec", [28123] = "\xe6\xed",
-+ [28127] = "\x98\x48", [28131] = "\x92\xb5", [28133] = "\x91\x48",
-+ [28140] = "\xe6\xf0", [28143] = "\xe6\xf3", [28152] = "\xe6\xf1",
-+ [28153] = "\xe6\xf2", [28154] = "\x97\x78", [28159] = "\x93\xa5",
-+ [28160] = "\xe6\xf6", [28173] = "\xe6\xf4", [28174] = "\xe6\xf5",
-+ [28175] = "\xe6\xf7", [28186] = "\xe7\x48", [28192] = "\xe6\xfa",
-+ [28196] = "\xe6\xfb", [28197] = "\xe6\xf9", [28210] = "\xe6\xf8",
-+ [28212] = "\x92\xfb", [28215] = "\xe7\x40", [28216] = "\xe7\x44",
-+ [28217] = "\xe7\x41", [28218] = "\xe6\xfc", [28220] = "\xe7\x42",
-+ [28224] = "\xe7\x43", [28229] = "\xe7\x4a", [28233] = "\xe7\x45",
-+ [28239] = "\x90\xd6", [28240] = "\xe7\x47", [28243] = "\xe7\x49",
-+ [28244] = "\xe7\x46", [28258] = "\xe7\x4c", [28260] = "\x8f\x52",
-+ [28262] = "\xe7\x4b", [28268] = "\xe7\x4d", [28273] = "\xe7\x4e",
-+ [28276] = "\xe7\x51", [28277] = "\xe7\x50", [28279] = "\xe7\x4f",
-+ [28282] = "\xe7\x53", [28283] = "\xe7\x52", [28285] = "\x96\xf4",
-+ [28289] = "\xe7\x55", [28291] = "\xe7\x54", [28292] = "\xe7\x56",
-+ [28297] = "\xe7\x57", [28305] = "\xe7\x59", [28314] = "\xe7\x58",
-+ [28315] = "\x90\x67", [28316] = "\xe7\x5a", [28319] = "\x8b\xeb",
-+ [28320] = "\xe7\x5b", [28321] = "\xe7\x5d", [28334] = "\xe7\x5e",
-+ [28341] = "\xe7\x5f", [28342] = "\xe7\x5c", [28344] = "\xe7\x60",
-+ [28346] = "\x8e\xd4", [28347] = "\xe7\x61", [28348] = "\x8b\x4f",
-+ [28349] = "\x8c\x52", [28351] = "\xfb\xb2", [28354] = "\x8c\xac",
-+ [28363] = "\xe7\x62", [28367] = "\x93\xee", [28370] = "\x93\x5d",
-+ [28371] = "\xe7\x63", [28379] = "\xe7\x66", [28392] = "\x8e\xb2",
-+ [28395] = "\xe7\x65", [28396] = "\xe7\x64", [28397] = "\x8c\x79",
-+ [28398] = "\xe7\x67", [28403] = "\x8a\x72", [28405] = "\xe7\x69",
-+ [28409] = "\x8d\xda", [28410] = "\xe7\x68", [28412] = "\xe7\x71",
-+ [28418] = "\xe7\x6b", [28419] = "\xe7\x6d", [28420] = "\x95\xe3",
-+ [28421] = "\xe7\x6a", [28425] = "\xe7\x6c", [28427] = "\xe7\x70",
-+ [28428] = "\xe7\x6e", [28429] = "\x8b\x50", [28431] = "\xe7\x6f",
-+ [28438] = "\xe7\x72", [28441] = "\x94\x79", [28442] = "\x97\xd6",
-+ [28447] = "\x8f\x53", [28451] = "\xe7\x73", [28456] = "\x97\x41",
-+ [28457] = "\xe7\x75", [28459] = "\xe7\x74", [28462] = "\xe7\x78",
-+ [28463] = "\x97\x60", [28466] = "\xe7\x77", [28468] = "\x8a\x8d",
-+ [28469] = "\xe7\x76", [28470] = "\xe7\x7b", [28473] = "\xe7\x7a",
-+ [28476] = "\xe7\x79", [28477] = "\x93\x51", [28478] = "\xe7\x7c",
-+ [28487] = "\xe7\x7d", [28492] = "\xe7\x7e", [28495] = "\x8d\x8c",
-+ [28497] = "\x8c\x44", [28498] = "\xe7\x80", [28499] = "\xe7\x81",
-+ [28500] = "\xe7\x82", [28555] = "\x90\x68", [28556] = "\xe7\x83",
-+ [28558] = "\x8e\xab", [28559] = "\xe7\x84", [28563] = "\xe7\x85",
-+ [28567] = "\x99\x9f", [28568] = "\x99\x9e", [28573] = "\xe7\x86",
-+ [28574] = "\xe3\x90", [28575] = "\xe7\x87", [28576] = "\x92\x43",
-+ [28577] = "\x90\x4a", [28578] = "\x94\x5f", [28583] = "\xe7\x88",
-+ [28586] = "\x95\xd3", [28587] = "\x92\xd2", [28588] = "\x8d\x9e",
-+ [28591] = "\x92\x48", [28594] = "\x89\x49", [28596] = "\x96\x98",
-+ [28597] = "\x90\x76", [28606] = "\x8c\x7d", [28609] = "\x8b\xdf",
-+ [28612] = "\x95\xd4", [28618] = "\xe7\x89", [28626] = "\xe7\x8b",
-+ [28629] = "\xe7\x8a", [28630] = "\x89\xde", [28633] = "\x93\xf4",
-+ [28634] = "\xe7\x8c", [28635] = "\x94\x97", [28637] = "\x93\x52",
-+ [28639] = "\xe7\x8d", [28640] = "\x8f\x71", [28644] = "\xe7\x8f",
-+ [28647] = "\x96\xc0", [28648] = "\xe7\x9e", [28649] = "\xe7\x91",
-+ [28650] = "\xe7\x92", [28653] = "\x92\xc7", [28656] = "\x91\xde",
-+ [28657] = "\x91\x97", [28659] = "\x93\xa6", [28661] = "\xe7\x90",
-+ [28662] = "\x8b\x74", [28667] = "\xe7\x99", [28669] = "\xe7\x96",
-+ [28670] = "\xe7\xa3", [28671] = "\x93\xa7", [28672] = "\x92\x80",
-+ [28673] = "\xe7\x93", [28675] = "\x92\xfc", [28676] = "\x93\x72",
-+ [28677] = "\xe7\x94", [28678] = "\xe7\x98", [28679] = "\x90\x80",
-+ [28681] = "\x94\x87", [28682] = "\x92\xca", [28685] = "\x90\xc0",
-+ [28686] = "\xe7\x97", [28687] = "\x91\xac", [28688] = "\x91\xa2",
-+ [28689] = "\xe7\x95", [28690] = "\x88\xa7", [28691] = "\x98\x41",
-+ [28695] = "\xe7\x9a", [28702] = "\x91\xdf", [28705] = "\x8f\x54",
-+ [28706] = "\x90\x69", [28709] = "\xe7\x9c", [28710] = "\xe7\x9b",
-+ [28712] = "\x88\xed", [28713] = "\xe7\x9d", [28716] = "\x95\x4e",
-+ [28718] = "\xe7\xa5", [28721] = "\x93\xd9", [28722] = "\x90\x8b",
-+ [28725] = "\x92\x78", [28727] = "\x8b\xf6", [28729] = "\xe7\xa4",
-+ [28730] = "\x97\x56", [28731] = "\x89\x5e", [28733] = "\x95\xd5",
-+ [28734] = "\x89\xdf", [28735] = "\xe7\x9f", [28736] = "\xe7\xa0",
-+ [28737] = "\xe7\xa1", [28738] = "\xe7\xa2", [28739] = "\x93\xb9",
-+ [28740] = "\x92\x42", [28741] = "\x88\xe1", [28742] = "\xe7\xa6",
-+ [28744] = "\xe7\xa7", [28745] = "\xea\xa1", [28748] = "\x91\xbb",
-+ [28750] = "\xe7\xa8", [28752] = "\x89\x93", [28753] = "\x91\x6b",
-+ [28755] = "\x8c\xad", [28757] = "\x97\x79", [28759] = "\xfb\xb5",
-+ [28760] = "\xe7\xa9", [28761] = "\x93\x4b", [28765] = "\x91\x98",
-+ [28766] = "\x8e\xd5", [28767] = "\xe7\xaa", [28770] = "\xe7\xad",
-+ [28773] = "\x8f\x85", [28774] = "\xe7\xab", [28775] = "\x91\x4a",
-+ [28776] = "\x91\x49", [28778] = "\x88\xe2", [28780] = "\x97\xc9",
-+ [28781] = "\xe7\xaf", [28783] = "\x94\xf0", [28784] = "\xe7\xb1",
-+ [28785] = "\xe7\xb0", [28786] = "\xe7\xae", [28787] = "\xe2\x84",
-+ [28788] = "\x8a\xd2", [28791] = "\xe7\x8e", [28793] = "\xe7\xb3",
-+ [28794] = "\xe7\xb2", [28799] = "\xe7\xb4", [28801] = "\x97\x57",
-+ [28819] = "\x93\xdf", [28822] = "\x96\x4d", [28824] = "\xe7\xb5",
-+ [28826] = "\x8e\xd7", [28831] = "\xe7\xb6", [28833] = "\xe7\xb7",
-+ [28837] = "\xe7\xb8", [28840] = "\x93\x40", [28849] = "\x88\xe8",
-+ [28858] = "\x8d\x78", [28862] = "\x98\x59", [28875] = "\xe7\xbc",
-+ [28878] = "\xfb\xb6", [28881] = "\x8c\x53", [28882] = "\xe7\xb9",
-+ [28884] = "\xe7\xba", [28888] = "\x95\x94", [28893] = "\x8a\x73",
-+ [28901] = "\x97\x58", [28903] = "\x8b\xbd", [28909] = "\x93\x73",
-+ [28914] = "\xe7\xbd", [28930] = "\xe7\xbe", [28933] = "\xfb\xb8",
-+ [28937] = "\xe7\xbf", [28951] = "\xfb\xb9", [28957] = "\x93\x41",
-+ [28960] = "\xe7\xc1", [28962] = "\xe7\xc0", [28985] = "\x93\xd1",
-+ [28986] = "\xe7\xc2", [28987] = "\x8f\x55", [28988] = "\x8e\xde",
-+ [28989] = "\x94\x7a", [28990] = "\x92\x91", [28994] = "\x8e\xf0",
-+ [28996] = "\x90\x8c", [28998] = "\xe7\xc3", [29000] = "\xe7\xc4",
-+ [29010] = "\x90\x7c", [29011] = "\xe7\xc5", [29013] = "\xe7\xc6",
-+ [29017] = "\xe7\xc7", [29018] = "\x97\x8f", [29020] = "\x8f\x56",
-+ [29026] = "\xe7\xc9", [29027] = "\xe7\xc8", [29029] = "\x8d\x79",
-+ [29031] = "\x8d\x93", [29032] = "\x8e\x5f", [29042] = "\xe7\xcc",
-+ [29047] = "\x8f\x86", [29049] = "\xe7\xcb", [29051] = "\xe7\xca",
-+ [29053] = "\x91\xe7", [29056] = "\x8c\xed", [29058] = "\x90\xc1",
-+ [29063] = "\x94\xae", [29068] = "\x8f\x58", [29074] = "\xe7\xcd",
-+ [29076] = "\x8f\xdd", [29082] = "\xe7\xd0", [29083] = "\xe7\xce",
-+ [29087] = "\xe7\xcf", [29092] = "\xe7\xd2", [29093] = "\xe7\xd1",
-+ [29096] = "\x8f\xf8", [29098] = "\xe7\xd3", [29104] = "\xe7\xd4",
-+ [29105] = "\xe7\xd5", [29110] = "\x94\xce", [29111] = "\x8d\xd1",
-+ [29112] = "\x8e\xdf", [29113] = "\xe7\xd6", [29115] = "\xe7\xd7",
-+ [29116] = "\x97\xa2", [29117] = "\x8f\x64", [29118] = "\x96\xec",
-+ [29119] = "\x97\xca", [29120] = "\xe7\xd8", [29121] = "\x8b\xe0",
-+ [29126] = "\xe7\xd9", [29127] = "\xfb\xbb", [29128] = "\x93\x42",
-+ [29130] = "\xfb\xba", [29131] = "\xe7\xdc", [29132] = "\x8a\x98",
-+ [29133] = "\x90\x6a", [29134] = "\xfb\xbc", [29135] = "\xe7\xda",
-+ [29137] = "\xe7\xdb", [29139] = "\x92\xde", [29140] = "\xfb\xbf",
-+ [29141] = "\xfb\xc0", [29142] = "\x96\x74", [29143] = "\x8b\xfa",
-+ [29149] = "\xfb\xbd", [29150] = "\xfb\xbe", [29157] = "\xe7\xde",
-+ [29158] = "\xe7\xdf", [29164] = "\xe7\xdd", [29167] = "\xe7\xe1",
-+ [29174] = "\xfb\xc1", [29178] = "\xfb\xc3", [29181] = "\x93\xdd",
-+ [29182] = "\x8a\x62", [29184] = "\xfb\xc2", [29185] = "\xe7\xe5",
-+ [29188] = "\xe7\xe2", [29189] = "\xe7\xe4", [29198] = "\xe7\xe0",
-+ [29209] = "\xe8\x6e", [29212] = "\xe7\xe3", [29220] = "\x97\xe9",
-+ [29223] = "\x8c\xd8", [29225] = "\xfb\xca", [29226] = "\xfb\xc4",
-+ [29228] = "\xfb\xc6", [29231] = "\xe7\xed", [29232] = "\xfb\xc5",
-+ [29236] = "\x93\x53", [29237] = "\xe7\xe8", [29240] = "\xe7\xeb",
-+ [29241] = "\xe7\xe9", [29243] = "\xe7\xee", [29246] = "\xfb\xc7",
-+ [29248] = "\xe7\xef", [29249] = "\xfb\xc9", [29255] = "\xe7\xe7",
-+ [29257] = "\xfb\xc8", [29258] = "\xe7\xf4", [29259] = "\x89\x94",
-+ [29262] = "\xe7\xe6", [29266] = "\x94\xab", [29268] = "\xe7\xea",
-+ [29270] = "\x8f\xde", [29271] = "\xfb\xcb", [29281] = "\x8d\x7a",
-+ [29287] = "\xfb\xcd", [29288] = "\xfb\xce", [29294] = "\x96\x67",
-+ [29296] = "\x8b\xe2", [29299] = "\x8f\x65", [29301] = "\x93\xba",
-+ [29304] = "\xfa\x5f", [29313] = "\x91\x4c", [29315] = "\xe7\xf2",
-+ [29317] = "\xe7\xec", [29318] = "\xe7\xf1", [29320] = "\x96\xc1",
-+ [29322] = "\x92\xb6", [29323] = "\xe7\xf3", [29324] = "\xe7\xf0",
-+ [29335] = "\xfb\xcc", [29341] = "\x91\x4b", [29351] = "\xe7\xf7",
-+ [29353] = "\xe7\xf6", [29375] = "\xe7\xf5", [29376] = "\xfb\xd2",
-+ [29378] = "\x96\x4e", [29379] = "\xfb\xd6", [29381] = "\xfb\xd4",
-+ [29383] = "\xfb\xd0", [29385] = "\xfb\xd1", [29392] = "\xfb\xd5",
-+ [29396] = "\x8f\x9b", [29399] = "\xfb\xcf", [29401] = "\xe7\xf8",
-+ [29402] = "\x95\xdd", [29405] = "\x89\x73", [29410] = "\x95\x65",
-+ [29411] = "\x92\x92", [29416] = "\x8b\x98", [29417] = "\xfa\x65",
-+ [29418] = "\xe7\xfa", [29419] = "\xfb\xd9", [29420] = "\x8d\x7c",
-+ [29423] = "\xfb\xdc", [29426] = "\xfb\xde", [29430] = "\x8e\x4b",
-+ [29439] = "\xe7\xf9", [29440] = "\x90\x8d", [29448] = "\x90\x8e",
-+ [29449] = "\xe8\x40", [29450] = "\xe8\x42", [29453] = "\xfb\xdd",
-+ [29454] = "\xfb\xdb", [29456] = "\x8f\xf9", [29457] = "\xfb\xd8",
-+ [29458] = "\xe8\x41", [29459] = "\xe8\x43", [29461] = "\xfb\xd7",
-+ [29462] = "\x8b\xd1", [29464] = "\x95\x64", [29467] = "\x8e\xe0",
-+ [29468] = "\x98\x42", [29470] = "\xe7\xfc", [29471] = "\x8d\xf6",
-+ [29474] = "\x98\x5e", [29477] = "\xe8\x45", [29482] = "\xe8\x44",
-+ [29483] = "\xe8\x46", [29492] = "\xe7\xfb", [29496] = "\xfa\x5e",
-+ [29499] = "\x93\xe7", [29501] = "\x93\x74", [29508] = "\x92\xd5",
-+ [29510] = "\xe8\x4b", [29511] = "\xfb\xe0", [29515] = "\x92\x62",
-+ [29516] = "\xe8\x47", [29520] = "\xe8\x48", [29532] = "\x8c\x4c",
-+ [29534] = "\xe8\x4a", [29536] = "\xfb\xdf", [29541] = "\x8c\xae",
-+ [29548] = "\xe8\x49", [29550] = "\x8f\xdf", [29564] = "\x8a\x99",
-+ [29572] = "\xe8\x4f", [29574] = "\x8d\xbd", [29575] = "\x91\x99",
-+ [29578] = "\x92\xc8", [29588] = "\xfb\xe1", [29591] = "\x8a\x5a",
-+ [29596] = "\xe8\x4d", [29597] = "\xe8\x4e", [29598] = "\x92\xc1",
-+ [29600] = "\xe8\x4c", [29609] = "\xe8\x50", [29619] = "\xe8\x56",
-+ [29622] = "\xfb\xe2", [29624] = "\xe8\x59", [29632] = "\xe8\x58",
-+ [29633] = "\x93\x4c", [29638] = "\xe8\x51", [29639] = "\xe8\x52",
-+ [29640] = "\xe8\x55", [29645] = "\xe8\x57", [29646] = "\xfb\xe3",
-+ [29649] = "\x8b\xbe", [29652] = "\xe8\x5a", [29653] = "\xe8\x54",
-+ [29656] = "\xe8\x53", [29672] = "\xfb\xe4", [29683] = "\xe8\x5e",
-+ [29687] = "\xe8\x5f", [29696] = "\xe8\x60", [29699] = "\xe8\x5d",
-+ [29700] = "\xe8\x5c", [29704] = "\x8f\xe0", [29705] = "\x93\xa8",
-+ [29706] = "\xe8\x5b", [29713] = "\xe8\x64", [29723] = "\xe8\x62",
-+ [29729] = "\xfb\xe5", [29733] = "\xe8\x63", [29734] = "\xe8\x61",
-+ [29736] = "\x91\xf6", [29738] = "\xe8\x65", [29745] = "\xe8\x66",
-+ [29748] = "\xe8\x68", [29749] = "\xfb\xe6", [29752] = "\xfb\xe7",
-+ [29761] = "\x8a\xd3", [29762] = "\xe8\x67", [29763] = "\x96\xf8",
-+ [29770] = "\xe8\x73", [29771] = "\xe8\x69", [29774] = "\xe8\x6c",
-+ [29776] = "\xe8\x6a", [29778] = "\xe8\x6b", [29786] = "\xe8\x6d",
-+ [29792] = "\xe8\x6f", [29797] = "\xe8\x70", [29799] = "\xe8\x71",
-+ [29804] = "\xe8\x74", [29805] = "\xe8\x72", [29806] = "\xe8\x75",
-+ [29807] = "\xe8\x77", [29809] = "\xe8\x76", [30055] = "\x92\xb7",
-+ [30064] = "\x96\xe5", [30066] = "\xe8\x78", [30067] = "\x91\x4d",
-+ [30071] = "\xe8\x79", [30073] = "\x95\xc2", [30074] = "\xe8\x7a",
-+ [30075] = "\x8a\x4a", [30079] = "\x89\x5b", [30081] = "\x8a\xd5",
-+ [30082] = "\xfb\xe8", [30083] = "\x8a\xd4", [30084] = "\xe8\x7b",
-+ [30086] = "\xe8\x7c", [30088] = "\xe8\x7d", [30089] = "\xe8\x7e",
-+ [30096] = "\xe8\x80", [30098] = "\x8a\xd6", [30099] = "\x8a\x74",
-+ [30100] = "\x8d\x7d", [30101] = "\x94\xb4", [30103] = "\xe8\x82",
-+ [30104] = "\xe8\x81", [30109] = "\xe8\x83", [30114] = "\x89\x7b",
-+ [30121] = "\xe8\x86", [30123] = "\xe8\x85", [30124] = "\xe8\x84",
-+ [30126] = "\xe8\x87", [30131] = "\xe8\x8a", [30135] = "\x88\xc5",
-+ [30138] = "\xe8\x88", [30140] = "\xe8\x8c", [30141] = "\xe8\x8b",
-+ [30148] = "\xe8\x8e", [30149] = "\xe8\x8d", [30150] = "\xe8\x8f",
-+ [30152] = "\x93\xac", [30156] = "\xe8\x90", [30161] = "\xe8\x91",
-+ [30162] = "\xe8\x93", [30165] = "\xe8\x92", [30220] = "\x95\x8c",
-+ [30225] = "\xe8\x94", [30232] = "\xe8\x95", [30234] = "\x8d\xe3",
-+ [30238] = "\xe8\x96", [30239] = "\xe8\x97", [30242] = "\x96\x68",
-+ [30251] = "\x91\x6a", [30255] = "\x88\xa2", [30256] = "\x91\xc9",
-+ [30258] = "\xe8\x98", [30260] = "\x95\x8d", [30267] = "\xe8\x9b",
-+ [30268] = "\xe8\x99", [30269] = "\x8d\x7e", [30271] = "\xe8\x9a",
-+ [30272] = "\x8c\xc0", [30283] = "\x95\xc3", [30284] = "\xe8\x9d",
-+ [30285] = "\xe8\x9f", [30286] = "\xe8\x9e", [30287] = "\xe8\xa0",
-+ [30290] = "\x89\x40", [30291] = "\x90\x77", [30292] = "\x8f\x9c",
-+ [30293] = "\x8a\xd7", [30294] = "\xe8\xa1", [30298] = "\x94\x86",
-+ [30300] = "\xe8\xa3", [30304] = "\x89\x41", [30306] = "\xe8\xa2",
-+ [30307] = "\x92\xc2", [30309] = "\x97\xcb", [30310] = "\x93\xa9",
-+ [30311] = "\xe8\x9c", [30312] = "\x97\xa4", [30314] = "\x8c\xaf",
-+ [30317] = "\x97\x7a", [30325] = "\x8b\xf7", [30326] = "\x97\xb2",
-+ [30328] = "\x8c\x47", [30330] = "\x91\xe0", [30331] = "\xe4\x40",
-+ [30333] = "\xe8\xa4", [30334] = "\x8a\x4b", [30335] = "\x90\x8f",
-+ [30340] = "\x8a\x75", [30341] = "\xe8\xa6", [30343] = "\xe8\xa7",
-+ [30344] = "\xe8\xa5", [30345] = "\x8c\x84", [30347] = "\x8d\xdb",
-+ [30348] = "\x8f\xe1", [30349] = "\xfb\xeb", [30352] = "\x89\x42",
-+ [30355] = "\x97\xd7", [30359] = "\xe8\xa9", [30360] = "\xe7\xac",
-+ [30362] = "\xe8\xa8", [30367] = "\xfb\xec", [30368] = "\xe8\xac",
-+ [30369] = "\xe8\xaa", [30370] = "\xe8\xab", [30372] = "\xe8\xad",
-+ [30374] = "\xe8\xae", [30375] = "\x97\xea", [30376] = "\xe8\xaf",
-+ [30377] = "\xe8\xb0", [30379] = "\x90\xc7", [30380] = "\x94\xb9",
-+ [30384] = "\x90\x9d", [30385] = "\x8a\xe5", [30388] = "\x97\x59",
-+ [30389] = "\x89\xeb", [30390] = "\x8f\x57", [30391] = "\x8c\xd9",
-+ [30393] = "\xe8\xb3", [30395] = "\xe8\xb2", [30396] = "\x8e\x93",
-+ [30397] = "\xe8\xb4", [30398] = "\xe8\xb1", [30401] = "\x8e\x47",
-+ [30405] = "\xe8\xb8", [30406] = "\xe5\xab", [30409] = "\x99\xd4",
-+ [30411] = "\x90\x97", [30412] = "\xe8\xb6", [30418] = "\x97\xa3",
-+ [30419] = "\x93\xef", [30424] = "\x89\x4a", [30426] = "\x90\xe1",
-+ [30427] = "\x8e\xb4", [30432] = "\x95\xb5", [30434] = "\x89\x5f",
-+ [30438] = "\x97\xeb", [30439] = "\x97\x8b", [30441] = "\xe8\xb9",
-+ [30443] = "\x93\x64", [30448] = "\x8e\xf9", [30452] = "\xe8\xba",
-+ [30454] = "\xe8\xbb", [30455] = "\x90\x6b", [30456] = "\xe8\xbc",
-+ [30458] = "\x97\xec", [30461] = "\xe8\xb7", [30462] = "\xe8\xbe",
-+ [30463] = "\xe8\xc0", [30465] = "\xe8\xbf", [30467] = "\xe8\xbd",
-+ [30470] = "\xe8\xc1", [30473] = "\xe8\xc2", [30476] = "\x91\x9a",
-+ [30478] = "\x89\xe0", [30484] = "\xe8\xc3", [30487] = "\x96\xb6",
-+ [30490] = "\xe8\xc4", [30496] = "\xe8\xc5", [30498] = "\x98\x49",
-+ [30499] = "\xfb\xed", [30504] = "\x9e\x50", [30505] = "\xe8\xc6",
-+ [30507] = "\xfb\xee", [30509] = "\xe8\xc7", [30510] = "\xe8\xc8",
-+ [30514] = "\xe8\xcc", [30515] = "\xfb\xef", [30516] = "\xe8\xc9",
-+ [30518] = "\xe8\xca", [30520] = "\xe8\xcb", [30521] = "\xe8\xcd",
-+ [30525] = "\xfb\xf0", [30527] = "\xfb\xf1", [30529] = "\xfb\xf2",
-+ [30530] = "\x90\xc2", [30533] = "\xfb\xf3", [30534] = "\x96\xf5",
-+ [30537] = "\x90\xc3", [30540] = "\xe8\xce", [30542] = "\x94\xf1",
-+ [30544] = "\xe8\xcf", [30545] = "\xea\x72", [30546] = "\x96\xca",
-+ [30548] = "\xe8\xd0", [30550] = "\xe8\xd1", [30552] = "\xe8\xd2",
-+ [30553] = "\x8a\x76", [30555] = "\xe8\xd4", [30557] = "\x90\x78",
-+ [30561] = "\xe8\xd5", [30564] = "\x8c\x43", [30569] = "\xe8\xd6",
-+ [30570] = "\xe8\xda", [30572] = "\xe8\xd8", [30577] = "\xe8\xd9",
-+ [30580] = "\x8a\x93", [30581] = "\xe8\xd7", [30582] = "\xe8\xdb",
-+ [30587] = "\xe8\xdc", [30589] = "\x88\xc6", [30591] = "\xe8\xdd",
-+ [30592] = "\xe8\xde", [30600] = "\x8f\xe2", [30604] = "\xe8\xdf",
-+ [30608] = "\x8b\x66", [30611] = "\xe8\xe2", [30614] = "\xe8\xe1",
-+ [30616] = "\xe8\xe0", [30619] = "\xe6\x91", [30621] = "\x95\xda",
-+ [30627] = "\xe8\xe3", [30628] = "\xe8\xe4", [30643] = "\xe8\xe5",
-+ [30646] = "\xe8\xe6", [30648] = "\xe8\xe7", [30651] = "\xe8\xe8",
-+ [30659] = "\x8a\xd8", [30668] = "\xe8\xe9", [30685] = "\xe8\xea",
-+ [30686] = "\x94\x42", [30690] = "\xe8\xec", [30691] = "\x89\xb9",
-+ [30693] = "\xe8\xef", [30694] = "\xe8\xee", [30699] = "\x89\x43",
-+ [30703] = "\x8b\xbf", [30705] = "\x95\xc5", [30706] = "\x92\xb8",
-+ [30707] = "\x8d\xa0", [30709] = "\x8d\x80", [30710] = "\x8f\x87",
-+ [30712] = "\x90\x7b", [30716] = "\xe8\xf1", [30719] = "\xe8\xf0",
-+ [30720] = "\x97\x61", [30721] = "\x8a\xe6", [30722] = "\x94\xd0",
-+ [30723] = "\x93\xda", [30727] = "\x90\x9c", [30728] = "\x97\xcc",
-+ [30730] = "\x8c\x7a", [30737] = "\xe8\xf4", [30740] = "\xe8\xf3",
-+ [30748] = "\x96\x6a", [30749] = "\x93\xaa", [30756] = "\x89\x6f",
-+ [30759] = "\xe8\xf5", [30760] = "\xe8\xf2", [30763] = "\x95\x70",
-+ [30764] = "\x97\x8a", [30765] = "\xe8\xf6", [30774] = "\xe8\xf7",
-+ [30779] = "\xe8\xf9", [30780] = "\x91\xe8", [30781] = "\x8a\x7a",
-+ [30782] = "\x8a\x7b", [30783] = "\xe8\xf8", [30788] = "\x8a\xe7",
-+ [30789] = "\x8c\xb0", [30791] = "\xfb\xf4", [30792] = "\x8a\xe8",
-+ [30795] = "\x93\x5e", [30798] = "\x97\xde", [30805] = "\xfb\xf5",
-+ [30807] = "\x8c\xda", [30811] = "\xe8\xfa", [30815] = "\xe8\xfb",
-+ [30816] = "\xe8\xfc", [30817] = "\xe9\x40", [30819] = "\xe9\x42",
-+ [30820] = "\xe9\x41", [30872] = "\x95\x97", [30874] = "\xe9\x43",
-+ [30879] = "\xe9\x44", [30881] = "\xe9\x45", [30886] = "\xe9\x46",
-+ [30899] = "\xe9\x48", [30900] = "\xe9\x47", [30902] = "\xe9\x49",
-+ [30923] = "\x94\xf2", [30924] = "\xe3\xca", [30927] = "\x90\x48",
-+ [30930] = "\x8b\x51", [30937] = "\xe9\x4a", [30939] = "\xe9\x4b",
-+ [30941] = "\x99\xaa", [30942] = "\x9f\x5a", [30943] = "\x94\xd1",
-+ [30946] = "\x88\xf9", [30948] = "\x88\xb9", [30956] = "\x8e\x94",
-+ [30957] = "\x96\x4f", [30958] = "\x8f\xfc", [30963] = "\xe9\x4c",
-+ [30965] = "\x96\xdd", [30969] = "\xe9\x4d", [30970] = "\x97\x7b",
-+ [30972] = "\x89\x61", [30976] = "\x8e\x60", [30978] = "\xe9\x4e",
-+ [30979] = "\x89\xec", [30980] = "\xe9\x4f", [30984] = "\xe9\x50",
-+ [30989] = "\xe9\x52", [30990] = "\xe9\x53", [30992] = "\xe9\x55",
-+ [30993] = "\xe9\x51", [30996] = "\xe9\x54", [30999] = "\xfb\xf8",
-+ [31000] = "\x8a\xd9", [31004] = "\xe9\x56", [31006] = "\xe9\x57",
-+ [31021] = "\xe9\x58", [31022] = "\xe9\x59", [31026] = "\xe9\x5a",
-+ [31029] = "\xe9\x5c", [31033] = "\xe9\x5b", [31035] = "\xe9\x5e",
-+ [31036] = "\xe9\x61", [31040] = "\xe9\x5d", [31041] = "\xe9\x5f",
-+ [31042] = "\xe9\x60", [31045] = "\xe9\x62", [31047] = "\x8b\xc0",
-+ [31110] = "\x8e\xf1", [31111] = "\xe9\x63", [31112] = "\xe9\x64",
-+ [31113] = "\x8d\x81", [31118] = "\xfb\xfa", [31125] = "\xe9\x65",
-+ [31128] = "\x8a\x5d", [31132] = "\x94\x6e", [31133] = "\xe9\x66",
-+ [31134] = "\xe9\x67", [31139] = "\x92\x79", [31140] = "\x93\xe9",
-+ [31148] = "\xe9\x68", [31153] = "\x94\x9d", [31156] = "\x91\xca",
-+ [31157] = "\x89\x77", [31158] = "\x8b\xec", [31160] = "\x8b\xed",
-+ [31168] = "\x92\x93", [31169] = "\xe9\x6d", [31170] = "\x8b\xee",
-+ [31173] = "\x89\xed", [31176] = "\xe9\x6c", [31179] = "\xe9\x6a",
-+ [31181] = "\xe9\x6b", [31183] = "\xe9\x69", [31186] = "\xe9\x77",
-+ [31197] = "\xe9\x6e", [31198] = "\xe9\x6f", [31201] = "\xe9\x70",
-+ [31202] = "\xe9\x71", [31208] = "\xe9\x73", [31211] = "\xe9\x72",
-+ [31215] = "\x8f\x78", [31217] = "\xe9\x74", [31221] = "\xe9\x76",
-+ [31230] = "\x8b\x52", [31231] = "\xe9\x75", [31234] = "\x91\x9b",
-+ [31235] = "\x8c\xb1", [31241] = "\xe9\x78", [31256] = "\x91\xcb",
-+ [31259] = "\xe9\x79", [31264] = "\x93\xab", [31271] = "\xe9\x7a",
-+ [31278] = "\xe9\x80", [31280] = "\xe9\x7d", [31282] = "\xe9\x7c",
-+ [31283] = "\xe9\x7e", [31285] = "\xe9\x7b", [31293] = "\xe9\x82",
-+ [31294] = "\xfb\xfb", [31301] = "\xe9\x81", [31303] = "\xe9\x84",
-+ [31306] = "\x8b\xc1", [31307] = "\xe9\x83", [31311] = "\xe9\x85",
-+ [31314] = "\xe9\x86", [31316] = "\xe9\x88", [31317] = "\xe9\x87",
-+ [31321] = "\xe9\x89", [31322] = "\xe9\x8b", [31323] = "\xe9\x8a",
-+ [31384] = "\x8d\x9c", [31389] = "\xe9\x8c", [31392] = "\xe9\x8d",
-+ [31400] = "\x8a\x5b", [31404] = "\xe9\x8e", [31408] = "\xe9\x8f",
-+ [31412] = "\x90\x91", [31423] = "\xe9\x90", [31425] = "\xe9\x91",
-+ [31427] = "\xe9\x92", [31428] = "\xe9\x93", [31432] = "\x8d\x82",
-+ [31433] = "\xfb\xfc", [31436] = "\xfc\x40", [31438] = "\xe9\x94",
-+ [31439] = "\xe9\x95", [31442] = "\xe9\x96", [31443] = "\xe9\x97",
-+ [31446] = "\xe9\x98", [31450] = "\x94\xaf", [31451] = "\xe9\x9a",
-+ [31453] = "\x95\x45", [31454] = "\xe9\x9b", [31455] = "\xe9\x99",
-+ [31457] = "\xe9\x9d", [31460] = "\xe9\x9c", [31463] = "\xe9\x9e",
-+ [31467] = "\xe9\x9f", [31478] = "\xe9\xa0", [31496] = "\xe9\xa1",
-+ [31498] = "\xe9\xa2", [31503] = "\xe9\xa3", [31506] = "\xe9\xa4",
-+ [31507] = "\xe9\xa5", [31509] = "\xe9\xa6", [31511] = "\xe9\xa7",
-+ [31512] = "\xe9\xa8", [31513] = "\xe9\xa9", [31514] = "\xe9\xaa",
-+ [31518] = "\xe9\xab", [31519] = "\xe9\xac", [31521] = "\x9f\x54",
-+ [31522] = "\xe9\xad", [31531] = "\xe2\xf6", [31532] = "\x8b\x53",
-+ [31537] = "\x8a\x40", [31538] = "\x8d\xb0", [31539] = "\xe9\xaf",
-+ [31540] = "\xe9\xae", [31541] = "\x96\xa3", [31549] = "\xe9\xb1",
-+ [31550] = "\xe9\xb2", [31551] = "\xe9\xb0", [31553] = "\xe9\xb3",
-+ [31556] = "\x96\x82", [31560] = "\xe9\xb4", [31562] = "\x8b\x9b",
-+ [31583] = "\x98\x44", [31586] = "\xfc\x42", [31588] = "\xe9\xb5",
-+ [31589] = "\xfc\x41", [31603] = "\xe9\xb7", [31614] = "\x88\xbc",
-+ [31615] = "\xfc\x43", [31617] = "\xe9\xb8", [31618] = "\x95\xa9",
-+ [31619] = "\xe9\xb6", [31622] = "\xe9\xb9", [31623] = "\xe9\xba",
-+ [31631] = "\xe9\xbb", [31632] = "\xe9\xbc", [31640] = "\xe9\xbd",
-+ [31642] = "\x96\x8e", [31643] = "\x8e\x4c", [31645] = "\x8d\xf8",
-+ [31646] = "\x91\x4e", [31649] = "\xfc\x44", [31652] = "\xe9\xbe",
-+ [31657] = "\xe9\xc1", [31659] = "\xfc\x45", [31664] = "\xe9\xbf",
-+ [31670] = "\xe9\xc2", [31673] = "\x8c\xef", [31674] = "\xe9\xc0",
-+ [31679] = "\xe9\xc3", [31681] = "\xe9\xc4", [31682] = "\xe9\xc5",
-+ [31684] = "\xe9\xc9", [31686] = "\x8e\x49", [31691] = "\x91\xe2",
-+ [31697] = "\xe9\xca", [31698] = "\xe9\xc7", [31699] = "\xe9\xc6",
-+ [31700] = "\xe9\xc8", [31704] = "\x8c\x7e", [31712] = "\xe9\xce",
-+ [31713] = "\xe9\xcd", [31714] = "\xe9\xcc", [31717] = "\x88\xb1",
-+ [31728] = "\xfc\x46", [31732] = "\xe9\xd8", [31734] = "\xe9\xd4",
-+ [31736] = "\xe9\xd5", [31737] = "\xe9\xd1", [31738] = "\xe9\xd7",
-+ [31740] = "\xe9\xd3", [31741] = "\x8a\x82", [31744] = "\x98\x6b",
-+ [31746] = "\xe9\xd6", [31747] = "\xe9\xd2", [31748] = "\xe9\xd0",
-+ [31749] = "\xe9\xcf", [31755] = "\xe9\xda", [31761] = "\xe9\xdd",
-+ [31764] = "\xe9\xdc", [31765] = "\xe9\xdb", [31773] = "\x95\x68",
-+ [31774] = "\xe9\xd9", [31775] = "\x88\xf1", [31776] = "\xe9\xde",
-+ [31778] = "\xe9\xe0", [31785] = "\x8a\x8f", [31786] = "\xe9\xcb",
-+ [31787] = "\x89\x56", [31790] = "\xe9\xe2", [31798] = "\xe9\xe1",
-+ [31799] = "\xe9\xdf", [31800] = "\x92\x4c", [31810] = "\x96\x90",
-+ [31815] = "\x97\xd8", [31818] = "\xe9\xe3", [31824] = "\xe9\xe4",
-+ [31831] = "\xe9\xe5", [31846] = "\xe9\xe6", [31848] = "\xe9\xe7",
-+ [31957] = "\x92\xb9", [31959] = "\xe9\xe8", [31961] = "\x94\xb5",
-+ [31963] = "\xe9\xed", [31964] = "\xe9\xe9", [31968] = "\xe9\xea",
-+ [31971] = "\x96\x50", [31972] = "\x96\xc2", [31974] = "\x93\xce",
-+ [31987] = "\xe9\xee", [31990] = "\xe9\xef", [31991] = "\x93\xbc",
-+ [31992] = "\xe9\xec", [31993] = "\xe9\xeb", [31998] = "\x89\xa8",
-+ [32002] = "\xe9\xf7", [32005] = "\xe9\xf6", [32011] = "\x89\x95",
-+ [32015] = "\xe9\xf4", [32019] = "\xe9\xf3", [32022] = "\xe9\xf1",
-+ [32024] = "\x8a\x9b", [32026] = "\xe9\xf0", [32027] = "\x8e\xb0",
-+ [32028] = "\x89\xa7", [32043] = "\x8d\x83", [32046] = "\xe9\xfa",
-+ [32047] = "\xe9\xf9", [32049] = "\xe9\xf8", [32052] = "\xe9\xf5",
-+ [32054] = "\xe9\xfb", [32056] = "\xe9\xfc", [32064] = "\xea\x44",
-+ [32065] = "\xea\x43", [32073] = "\xea\x45", [32076] = "\x89\x4c",
-+ [32077] = "\xea\x40", [32078] = "\xea\x41", [32080] = "\x8d\x94",
-+ [32081] = "\x96\xb7", [32084] = "\xea\x42", [32091] = "\xfc\x48",
-+ [32092] = "\x96\x51", [32095] = "\xea\x4a", [32096] = "\xfc\x47",
-+ [32098] = "\xea\x46", [32106] = "\xea\x4b", [32119] = "\xea\x48",
-+ [32121] = "\xea\x47", [32127] = "\x8c\x7b", [32138] = "\xea\x4c",
-+ [32148] = "\xea\x4d", [32153] = "\xea\x4e", [32155] = "\xea\x49",
-+ [32159] = "\xe9\xf2", [32162] = "\xea\x4f", [32164] = "\x92\xdf",
-+ [32168] = "\xea\x53", [32170] = "\xea\x54", [32171] = "\xea\x52",
-+ [32177] = "\xea\x51", [32178] = "\xea\x57", [32180] = "\xea\x50",
-+ [32182] = "\xea\x55", [32191] = "\xea\x56", [32195] = "\xea\x59",
-+ [32201] = "\xea\x58", [32214] = "\xea\x5b", [32221] = "\xea\x5c",
-+ [32223] = "\xea\x5d", [32226] = "\x98\x68", [32232] = "\xea\x5a",
-+ [32233] = "\x91\xe9", [32234] = "\x8d\xeb", [32237] = "\xea\x5e",
-+ [32265] = "\xfc\x4a", [32266] = "\xea\x5f", [32267] = "\xea\x60",
-+ [32270] = "\xea\x61", [32357] = "\xea\x62", [32360] = "\x8c\xb2",
-+ [32361] = "\xea\x63", [32365] = "\xea\x64", [32367] = "\x8e\xad",
-+ [32369] = "\xea\x65", [32376] = "\xea\x66", [32379] = "\xea\x67",
-+ [32380] = "\xea\x68", [32385] = "\xea\x6b", [32386] = "\xea\x69",
-+ [32387] = "\x98\x5b", [32389] = "\xea\x6a", [32391] = "\x97\xed",
-+ [32397] = "\xea\x6c", [32399] = "\x97\xd9", [32405] = "\xea\x6d",
-+ [32406] = "\x94\x9e", [32409] = "\xea\x6e", [32410] = "\xea\x70",
-+ [32413] = "\xea\x71", [32424] = "\xea\x6f", [32425] = "\x8d\x8d",
-+ [32426] = "\x96\xcb", [32427] = "\x96\x83", [32428] = "\x9b\xf5",
-+ [32430] = "\x9f\x80", [32431] = "\x96\x9b", [32436] = "\x89\xa9",
-+ [32444] = "\xea\x73", [32445] = "\x8b\x6f", [32446] = "\xea\x74",
-+ [32447] = "\xea\x75", [32448] = "\xea\x76", [32449] = "\xfc\x4b",
-+ [32450] = "\x8d\x95", [32452] = "\xea\x77", [32456] = "\xe0\xd2",
-+ [32457] = "\x96\xd9", [32459] = "\x91\xe1", [32460] = "\xea\x78",
-+ [32461] = "\xea\x7a", [32462] = "\xea\x79", [32464] = "\xea\x7b",
-+ [32469] = "\xea\x7c", [32472] = "\xea\x7d", [32479] = "\xea\x7e",
-+ [32484] = "\xea\x80", [32486] = "\xea\x81", [32487] = "\xea\x82",
-+ [32489] = "\xea\x83", [32491] = "\xea\x84", [32492] = "\xea\x85",
-+ [32493] = "\xea\x86", [32503] = "\xea\x87", [32504] = "\xea\x88",
-+ [32510] = "\x93\x43", [32515] = "\x8c\xdb", [32517] = "\xea\x8a",
-+ [32528] = "\x91\x6c", [32529] = "\xea\x8b", [32540] = "\xea\x8c",
-+ [32555] = "\x95\x40", [32558] = "\xea\x8d", [32570] = "\xea\x8e",
-+ [32571] = "\xe2\x56", [32574] = "\xe6\xd8", [32575] = "\xe8\xeb",
-+ [32578] = "\xea\x8f", [32580] = "\xea\x90", [32591] = "\xea\x92",
-+ [32592] = "\xea\x93", [32593] = "\xea\x94", [32594] = "\x97\xee",
-+ [32595] = "\xea\x91", [32598] = "\xea\x95", [32599] = "\xea\x96",
-+ [32602] = "\xea\x98", [32604] = "\xea\x97", [32610] = "\xea\x9a",
-+ [32614] = "\xea\x9b", [32615] = "\xea\x99", [32637] = "\x97\xb4",
-+ [32645] = "\xea\x9c", [32652] = "\xea\x9d", [32653] = "\xe2\x73",
-+ [32656] = "\xea\x9e"
-+};
-+
-+static const char from_ucs4_cjkcpt[261][2] =
-+{
-+ /* start = 0xf929, end = 0xfa2d */
-+ [ 0] = "\xfa\xe0", [ 179] = "\xfb\xe9", [ 229] = "\xfa\x90",
-+ [ 230] = "\xfa\x9b", [ 231] = "\xfa\x9c", [ 232] = "\xfa\xb1",
-+ [ 233] = "\xfa\xd8", [ 234] = "\xfa\xe8", [ 235] = "\xfa\xea",
-+ [ 236] = "\xfb\x58", [ 237] = "\xfb\x5e", [ 238] = "\xfb\x75",
-+ [ 239] = "\xfb\x7d", [ 240] = "\xfb\x7e", [ 241] = "\xfb\x80",
-+ [ 242] = "\xfb\x82", [ 243] = "\xfb\x86", [ 244] = "\xfb\x89",
-+ [ 245] = "\xfb\x92", [ 246] = "\xfb\x9d", [ 247] = "\xfb\x9f",
-+ [ 248] = "\xfb\xa0", [ 249] = "\xfb\xa9", [ 250] = "\xfb\xb1",
-+ [ 251] = "\xfb\xb3", [ 252] = "\xfb\xb4", [ 253] = "\xfb\xb7",
-+ [ 254] = "\xfb\xd3", [ 255] = "\xfb\xda", [ 256] = "\xfb\xea",
-+ [ 257] = "\xfb\xf6", [ 258] = "\xfb\xf7", [ 259] = "\xfb\xf9",
-+ [ 260] = "\xfc\x49"
-+};
-+
-+static const char from_ucs4_extra[229][2] =
-+{
-+ /* start = 0xff01, end = 0xffe5 */
-+ [ 0] = "\x81\x49", [ 1] = "\xfa\x57", [ 2] = "\x81\x94",
-+ [ 3] = "\x81\x90", [ 4] = "\x81\x93", [ 5] = "\x81\x95",
-+ [ 6] = "\xfa\x56", [ 7] = "\x81\x69", [ 8] = "\x81\x6a",
-+ [ 9] = "\x81\x96", [ 10] = "\x81\x7b", [ 11] = "\x81\x43",
-+ [ 12] = "\x81\x7c", [ 13] = "\x81\x44", [ 14] = "\x81\x5e",
-+ [ 15] = "\x82\x4f", [ 16] = "\x82\x50", [ 17] = "\x82\x51",
-+ [ 18] = "\x82\x52", [ 19] = "\x82\x53", [ 20] = "\x82\x54",
-+ [ 21] = "\x82\x55", [ 22] = "\x82\x56", [ 23] = "\x82\x57",
-+ [ 24] = "\x82\x58", [ 25] = "\x81\x46", [ 26] = "\x81\x47",
-+ [ 27] = "\x81\x83", [ 28] = "\x81\x81", [ 29] = "\x81\x84",
-+ [ 30] = "\x81\x48", [ 31] = "\x81\x97", [ 32] = "\x82\x60",
-+ [ 33] = "\x82\x61", [ 34] = "\x82\x62", [ 35] = "\x82\x63",
-+ [ 36] = "\x82\x64", [ 37] = "\x82\x65", [ 38] = "\x82\x66",
-+ [ 39] = "\x82\x67", [ 40] = "\x82\x68", [ 41] = "\x82\x69",
-+ [ 42] = "\x82\x6a", [ 43] = "\x82\x6b", [ 44] = "\x82\x6c",
-+ [ 45] = "\x82\x6d", [ 46] = "\x82\x6e", [ 47] = "\x82\x6f",
-+ [ 48] = "\x82\x70", [ 49] = "\x82\x71", [ 50] = "\x82\x72",
-+ [ 51] = "\x82\x73", [ 52] = "\x82\x74", [ 53] = "\x82\x75",
-+ [ 54] = "\x82\x76", [ 55] = "\x82\x77", [ 56] = "\x82\x78",
-+ [ 57] = "\x82\x79", [ 58] = "\x81\x6d", [ 59] = "\x81\x5f",
-+ [ 60] = "\x81\x6e", [ 61] = "\x81\x4f", [ 62] = "\x81\x51",
-+ [ 63] = "\x81\x4d", [ 64] = "\x82\x81", [ 65] = "\x82\x82",
-+ [ 66] = "\x82\x83", [ 67] = "\x82\x84", [ 68] = "\x82\x85",
-+ [ 69] = "\x82\x86", [ 70] = "\x82\x87", [ 71] = "\x82\x88",
-+ [ 72] = "\x82\x89", [ 73] = "\x82\x8a", [ 74] = "\x82\x8b",
-+ [ 75] = "\x82\x8c", [ 76] = "\x82\x8d", [ 77] = "\x82\x8e",
-+ [ 78] = "\x82\x8f", [ 79] = "\x82\x90", [ 80] = "\x82\x91",
-+ [ 81] = "\x82\x92", [ 82] = "\x82\x93", [ 83] = "\x82\x94",
-+ [ 84] = "\x82\x95", [ 85] = "\x82\x96", [ 86] = "\x82\x97",
-+ [ 87] = "\x82\x98", [ 88] = "\x82\x99", [ 89] = "\x82\x9a",
-+ [ 90] = "\x81\x6f", [ 91] = "\x81\x62", [ 92] = "\x81\x70",
-+ [ 93] = "\x81\x60", [ 96] = "\xa1\x00", [ 97] = "\xa2\x00",
-+ [ 98] = "\xa3\x00", [ 99] = "\xa4\x00", [ 100] = "\xa5\x00",
-+ [ 101] = "\xa6\x00", [ 102] = "\xa7\x00", [ 103] = "\xa8\x00",
-+ [ 104] = "\xa9\x00", [ 105] = "\xaa\x00", [ 106] = "\xab\x00",
-+ [ 107] = "\xac\x00", [ 108] = "\xad\x00", [ 109] = "\xae\x00",
-+ [ 110] = "\xaf\x00", [ 111] = "\xb0\x00", [ 112] = "\xb1\x00",
-+ [ 113] = "\xb2\x00", [ 114] = "\xb3\x00", [ 115] = "\xb4\x00",
-+ [ 116] = "\xb5\x00", [ 117] = "\xb6\x00", [ 118] = "\xb7\x00",
-+ [ 119] = "\xb8\x00", [ 120] = "\xb9\x00", [ 121] = "\xba\x00",
-+ [ 122] = "\xbb\x00", [ 123] = "\xbc\x00", [ 124] = "\xbd\x00",
-+ [ 125] = "\xbe\x00", [ 126] = "\xbf\x00", [ 127] = "\xc0\x00",
-+ [ 128] = "\xc1\x00", [ 129] = "\xc2\x00", [ 130] = "\xc3\x00",
-+ [ 131] = "\xc4\x00", [ 132] = "\xc5\x00", [ 133] = "\xc6\x00",
-+ [ 134] = "\xc7\x00", [ 135] = "\xc8\x00", [ 136] = "\xc9\x00",
-+ [ 137] = "\xca\x00", [ 138] = "\xcb\x00", [ 139] = "\xcc\x00",
-+ [ 140] = "\xcd\x00", [ 141] = "\xce\x00", [ 142] = "\xcf\x00",
-+ [ 143] = "\xd0\x00", [ 144] = "\xd1\x00", [ 145] = "\xd2\x00",
-+ [ 146] = "\xd3\x00", [ 147] = "\xd4\x00", [ 148] = "\xd5\x00",
-+ [ 149] = "\xd6\x00", [ 150] = "\xd7\x00", [ 151] = "\xd8\x00",
-+ [ 152] = "\xd9\x00", [ 153] = "\xda\x00", [ 154] = "\xdb\x00",
-+ [ 155] = "\xdc\x00", [ 156] = "\xdd\x00", [ 157] = "\xde\x00",
-+ [ 158] = "\xdf\x00", [ 223] = "\x81\x91", [ 224] = "\x81\x92",
-+ [ 225] = "\x81\xca", [ 226] = "\x81\x50", [ 227] = "\xfa\x55",
-+ [ 228] = "\x81\x8f"
-+};
-+
-+/* Definitions used in the body of the `gconv' function. */
-+#define CHARSET_NAME "CP932//"
-+#define FROM_LOOP from_cp932
-+#define TO_LOOP to_cp932
-+#define DEFINE_INIT 1
-+#define DEFINE_FINI 1
-+#define MIN_NEEDED_FROM 1
-+#define MAX_NEEDED_FROM 2
-+#define MIN_NEEDED_TO 4
-+
-+/* First define the conversion function from CP932 to UCS4. */
-+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
-+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
-+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
-+#define LOOPFCT FROM_LOOP
-+#define BODY \
-+ { \
-+ uint32_t ch = *inptr; \
-+ \
-+ if (ch < 0x80) \
-+ ++inptr; \
-+ else if (ch >= 0xa1 && ch <= 0xdf) \
-+ { \
-+ ch += 0xfec0; \
-+ ++inptr; \
-+ } \
-+ else if (__builtin_expect (ch, 0) == 0xa0 \
-+ || __builtin_expect (ch <= 0x80, 0) \
-+ || __builtin_expect (ch > 0xfc, 0)) \
-+ { \
-+ /* These are illegal. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ /* This is an illegal character. */ \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ++inptr; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ else \
-+ { \
-+ /* Two-byte character. First test whether the next character \
-+ is also available. */ \
-+ uint32_t ch2; \
-+ uint_fast32_t idx; \
-+ \
-+ if (__builtin_expect (inptr + 1 >= inend, 0)) \
-+ { \
-+ /* The second character is not available. Store \
-+ the intermediate result. */ \
-+ result = __GCONV_INCOMPLETE_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ch2 = inptr[1]; \
-+ idx = ch * 256 + ch2; \
-+ if (__builtin_expect (ch2 < 0x40, 0) \
-+ || __builtin_expect (ch2 > 0xfc, 0) \
-+ || __builtin_expect (ch2 == 0x7f, 0) \
-+ || (__builtin_expect (idx > 0x84be, 0) && idx < 0x8740) \
-+ || (__builtin_expect (idx > 0x879c, 0) && idx < 0x889f) \
-+ || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \
-+ || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \
-+ || (__builtin_expect (idx > 0xeaa4, 0) && idx < 0xed40) \
-+ || (__builtin_expect (idx > 0xeefc, 0) && idx < 0xf040) \
-+ || __builtin_expect (idx > 0xfc4b, 0)) \
-+ { \
-+ /* This is illegal. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ /* This is an illegal character. */ \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ++inptr; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ else \
-+ { \
-+ /* We could pack the data a bit more dense. The second \
-+ byte will never be 0x7f and it will also be never \
-+ >0xfc. But this would mean yet more `if's. */ \
-+ if (idx <= 0x84be) \
-+ ch = cjk_block1[(ch - 0x81) * 192 + ch2 - 0x40]; \
-+ else if (idx <= 0x879c) \
-+ ch = cjk_block2[(ch - 0x87) * 192 + ch2 - 0x40]; \
-+ else if (idx <= 0x88fc) \
-+ ch = cjk_block3[(ch - 0x88) * 192 + ch2 - 0x9f]; \
-+ else if (idx <= 0x9ffc) \
-+ ch = cjk_block4[(ch - 0x89) * 192 + ch2 - 0x40]; \
-+ else if (idx <= 0xeaa4) \
-+ ch = cjk_block5[(ch - 0xe0) * 192 + ch2 - 0x40]; \
-+ else if (idx <= 0xeefc) \
-+ ch = cjk_block6[(ch - 0xed) * 192 + ch2 - 0x40]; \
-+ else if (idx <= 0xf9fc) \
-+ ch = (ch-0xf0)*188 + ch2-((ch2<0x7f)?0x40:0x41) + 0xe000; \
-+ else \
-+ ch = cjk_block7[(ch - 0xfa) * 192 + ch2 - 0x40]; \
-+ \
-+ inptr += 2; \
-+ } \
-+ \
-+ if (__builtin_expect (ch, 1) == 0) \
-+ { \
-+ /* This is an illegal character. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ /* This is an illegal character. */ \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ inptr += 2; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ } \
-+ \
-+ put32 (outptr, ch); \
-+ outptr += 4; \
-+ }
-+#define LOOP_NEED_FLAGS
-+#include <iconv/loop.c>
-+
-+
-+/* Next, define the other direction. */
-+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
-+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
-+#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
-+#define LOOPFCT TO_LOOP
-+#define BODY \
-+ { \
-+ uint32_t ch = get32 (inptr); \
-+ const char *cp; \
-+ unsigned char pua[2]; \
-+ \
-+ if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \
-+ { \
-+ if (ch >= 0x0391 && ch <= 0x0451) \
-+ cp = from_ucs4_greek[ch - 0x391]; \
-+ else if (ch >= 0x2010 && ch <= 0x9fa0) \
-+ cp = from_ucs4_cjk[ch - 0x2010]; \
-+ else if (ch >= 0xe000 && ch <= 0xe757) \
-+ { \
-+ pua[0] = (ch - 0xe000) / 188 + 0xf0; \
-+ pua[1] = (ch - 0xe000) % 188 + 0x40; \
-+ if (pua[1] > 0x7e) \
-+ pua[1]++; \
-+ cp = (const char *)&(pua[0]); \
-+ } \
-+ else if (ch >= 0xf929 && ch <= 0xfa2d) \
-+ cp = from_ucs4_cjkcpt[ch - 0xf929]; \
-+ else if (__builtin_expect (ch >= 0xff01, 1) \
-+ && __builtin_expect (ch <= 0xffe5, 1)) \
-+ cp = from_ucs4_extra[ch - 0xff01]; \
-+ else \
-+ { \
-+ UNICODE_TAG_HANDLER (ch, 4); \
-+ /* Illegal character. */ \
-+ cp = ""; \
-+ } \
-+ } \
-+ else \
-+ cp = from_ucs4_lat1[ch]; \
-+ \
-+ if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \
-+ { \
-+ /* Illegal character. */ \
-+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
-+ } \
-+ else \
-+ { \
-+ *outptr = cp[0]; \
-+ /* Now test for a possible second byte and write this if possible. */\
-+ if (cp[1] != '\0') \
-+ { \
-+ if (__builtin_expect (outptr + 1 >= outend, 0)) \
-+ { \
-+ /* The result does not fit into the buffer. */ \
-+ result = __GCONV_FULL_OUTPUT; \
-+ break; \
-+ } \
-+ *++outptr = cp[1]; \
-+ } \
-+ ++outptr; \
-+ } \
-+ \
-+ inptr += 4; \
-+ }
-+#define LOOP_NEED_FLAGS
-+#include <iconv/loop.c>
-+
-+
-+/* Now define the toplevel functions. */
-+#include <iconv/skeleton.c>
---- glibc-2.3.2/iconvdata/euc-jp-ms.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/iconvdata/euc-jp-ms.c 2003-08-14 04:37:44.000000000 -0400
-@@ -0,0 +1,4931 @@
-+/* Mapping tables for EUCJP-MS handling.
-+ Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
-+
-+ 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 <dlfcn.h>
-+#include <stdint.h>
-+#include <gconv.h>
-+#include <jis0201.h>
-+#include <jis0208.h>
-+#include <jis0212.h>
-+
-+static const uint16_t cjk_block1[752] =
-+{
-+ /* 0xa1a1 */ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
-+ /* 0xa1a9 */ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
-+ /* 0xa1b1 */ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
-+ /* 0xa1b9 */ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
-+ /* 0xa1c1 */ 0xff5e, 0x2225, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
-+ /* 0xa1c9 */ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
-+ /* 0xa1d1 */ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
-+ /* 0xa1d9 */ 0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7, 0x00f7,
-+ /* 0xa1e1 */ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
-+ /* 0xa1e9 */ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
-+ /* 0xa1f1 */ 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
-+ /* 0xa1f9 */ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
-+ /* 0xa2a3 */ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192,
-+ /* 0xa2ab */ 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa2b3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208,
-+ /* 0xa2bb */ 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x0000,
-+ /* 0xa2c3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227,
-+ /* 0xa2cb */ 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x0000, 0x0000,
-+ /* 0xa2d3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa2db */ 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252,
-+ /* 0xa2e3 */ 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c,
-+ /* 0xa2eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212b,
-+ /* 0xa2f3 */ 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0x0000,
-+ /* 0xa2fb */ 0x0000, 0x0000, 0x0000, 0x25ef, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa3a5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa3ad */ 0x0000, 0x0000, 0x0000, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
-+ /* 0xa3b5 */ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x0000, 0x0000, 0x0000,
-+ /* 0xa3bd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24,
-+ /* 0xa3c5 */ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
-+ /* 0xa3cd */ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
-+ /* 0xa3d5 */ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000,
-+ /* 0xa3dd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 0xff44,
-+ /* 0xa3e5 */ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
-+ /* 0xa3ed */ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
-+ /* 0xa3f5 */ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000,
-+ /* 0xa3fd */ 0x0000, 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
-+ /* 0xa4a7 */ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
-+ /* 0xa4af */ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
-+ /* 0xa4b7 */ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
-+ /* 0xa4bf */ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
-+ /* 0xa4c7 */ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
-+ /* 0xa4cf */ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
-+ /* 0xa4d7 */ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
-+ /* 0xa4df */ 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
-+ /* 0xa4e7 */ 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e,
-+ /* 0xa4ef */ 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000,
-+ /* 0xa4f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa5a1 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
-+ /* 0xa5a9 */ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
-+ /* 0xa5b1 */ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
-+ /* 0xa5b9 */ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
-+ /* 0xa5c1 */ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
-+ /* 0xa5c9 */ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
-+ /* 0xa5d1 */ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
-+ /* 0xa5d9 */ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
-+ /* 0xa5e1 */ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
-+ /* 0xa5e9 */ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
-+ /* 0xa5f1 */ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000,
-+ /* 0xa5f9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392,
-+ /* 0xa6a3 */ 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a,
-+ /* 0xa6ab */ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3,
-+ /* 0xa6b3 */ 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000,
-+ /* 0xa6bb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2,
-+ /* 0xa6c3 */ 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba,
-+ /* 0xa6cb */ 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
-+ /* 0xa6d3 */ 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000,
-+ /* 0xa6db */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa6e3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa6eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa6f3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa6fb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413,
-+ /* 0xa7a5 */ 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
-+ /* 0xa7ad */ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
-+ /* 0xa7b5 */ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
-+ /* 0xa7bd */ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000,
-+ /* 0xa7c5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa7cd */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433,
-+ /* 0xa7d5 */ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a,
-+ /* 0xa7dd */ 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442,
-+ /* 0xa7e5 */ 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a,
-+ /* 0xa7ed */ 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000,
-+ /* 0xa7f5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa7fd */ 0x0000, 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514,
-+ /* 0xa8a7 */ 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f,
-+ /* 0xa8af */ 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b,
-+ /* 0xa8b7 */ 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525,
-+ /* 0xa8bf */ 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8c7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8cf */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8d7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8df */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8e7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8ef */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-+ /* 0xa8f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-+};
-+
-+static const uint16_t cjk_block2[94] =
-+{
-+ /* 0xada1 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
-+ /* 0xada9 */ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
-+ /* 0xadb1 */ 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163,
-+ /* 0xadb9 */ 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000, 0x3349,
-+ /* 0xadc1 */ 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351,
-+ /* 0xadc9 */ 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c,
-+ /* 0xadd1 */ 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000, 0x0000,
-+ /* 0xadd9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b, 0x301d,
-+ /* 0xade1 */ 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6, 0x32a7,
-+ /* 0xade9 */ 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c, 0x2252,
-+ /* 0xadf1 */ 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220, 0x221f,
-+ /* 0xadf9 */ 0x22bf, 0x2235, 0x2229, 0x222a, 0x0000, 0x0000
-+};
-+
-+static const uint16_t cjk_block_ibm[268] =
-+{
-+ /* start = 0x8ff3f3, end = 0x8ff4fe */
-+ /* 0x8ff3f3 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
-+ /* 0x8ff3fb */ 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165,
-+ /* 0x8ff4a5 */ 0x2166, 0x2167, 0x2168, 0x2169, 0xff07, 0xff02, 0x3231, 0x2116,
-+ /* 0x8ff4ad */ 0x2121, 0x70bb, 0x4efc, 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e,
-+ /* 0x8ff4b5 */ 0x548a, 0x5759, 0xfa0f, 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53,
-+ /* 0x8ff4bd */ 0xfa11, 0x5fb7, 0x6085, 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12,
-+ /* 0x8ff4c5 */ 0xf929, 0x6801, 0xfa13, 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2,
-+ /* 0x8ff4cd */ 0x7028, 0xfa15, 0xfa16, 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930,
-+ /* 0x8ff4d5 */ 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0,
-+ /* 0x8ff4dd */ 0x7dd6, 0xfa1e, 0x8362, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807,
-+ /* 0x8ff4e5 */ 0xfa22, 0x8b7f, 0x8cf4, 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de,
-+ /* 0x8ff4ed */ 0xfa26, 0x9115, 0xfa27, 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b,
-+ /* 0x8ff4f5 */ 0x974d, 0x9751, 0xfa2a, 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72,
-+ /* 0x8ff4fd */ 0xfa2d, 0x9ed1
-+};
-+
-+static const char from_ucs4_lat1[256][2] =
-+{
-+ /* start = 0x0000, end = 0x00ff */
-+ [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00",
-+ [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00",
-+ [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00",
-+ [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00",
-+ [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00",
-+ [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00",
-+ [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00",
-+ [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00",
-+ [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00",
-+ [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00",
-+ [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00",
-+ [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00",
-+ [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00",
-+ [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00",
-+ [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00",
-+ [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00",
-+ [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00",
-+ [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00",
-+ [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00",
-+ [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00",
-+ [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00",
-+ [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00",
-+ [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00",
-+ [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00",
-+ [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00",
-+ [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00",
-+ [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00",
-+ [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00",
-+ [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00",
-+ [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00",
-+ [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00",
-+ [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00",
-+ [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00",
-+ [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00",
-+ [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00",
-+ [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00",
-+ [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00",
-+ [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00",
-+ [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00",
-+ [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00",
-+ [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00",
-+ [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00",
-+ [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 128] = "\x80\x00",
-+ [ 129] = "\x81\x00", [ 130] = "\x82\x00", [ 131] = "\x83\x00",
-+ [ 132] = "\x84\x00", [ 133] = "\x85\x00", [ 134] = "\x86\x00",
-+ [ 135] = "\x87\x00", [ 136] = "\x88\x00", [ 137] = "\x89\x00",
-+ [ 138] = "\x8a\x00", [ 139] = "\x8b\x00", [ 140] = "\x8c\x00",
-+ [ 141] = "\x8d\x00", [ 144] = "\x90\x00", [ 145] = "\x91\x00",
-+ [ 146] = "\x92\x00", [ 147] = "\x93\x00", [ 148] = "\x94\x00",
-+ [ 149] = "\x95\x00", [ 150] = "\x96\x00", [ 151] = "\x97\x00",
-+ [ 152] = "\x98\x00", [ 153] = "\x99\x00", [ 154] = "\x9a\x00",
-+ [ 155] = "\x9b\x00", [ 156] = "\x9c\x00", [ 157] = "\x9d\x00",
-+ [ 158] = "\x9e\x00", [ 159] = "\x9f\x00", [ 161] = "\xa2\x42",
-+ [ 162] = "\xa1\xf1", [ 163] = "\xa1\xf2", [ 164] = "\xa2\x70",
-+ [ 165] = "\x5c\x00", [ 166] = "\xa2\x43", [ 167] = "\xa1\xf8",
-+ [ 168] = "\xa1\xaf", [ 169] = "\xa2\x6d", [ 170] = "\xa2\x6c",
-+ [ 172] = "\xa2\xcc", [ 174] = "\xa2\x6e", [ 175] = "\xa2\x34",
-+ [ 176] = "\xa1\xeb", [ 177] = "\xa1\xde", [ 180] = "\xa1\xad",
-+ [ 182] = "\xa2\xf9", [ 184] = "\xa2\x31", [ 186] = "\xa2\x6b",
-+ [ 191] = "\xa2\x44", [ 192] = "\xaa\x22", [ 193] = "\xaa\x21",
-+ [ 194] = "\xaa\x24", [ 195] = "\xaa\x2a", [ 196] = "\xaa\x23",
-+ [ 197] = "\xaa\x29", [ 198] = "\xa9\x21", [ 199] = "\xaa\x2e",
-+ [ 200] = "\xaa\x32", [ 201] = "\xaa\x31", [ 202] = "\xaa\x34",
-+ [ 203] = "\xaa\x33", [ 204] = "\xaa\x40", [ 205] = "\xaa\x3f",
-+ [ 206] = "\xaa\x42", [ 207] = "\xaa\x41", [ 209] = "\xaa\x50",
-+ [ 210] = "\xaa\x52", [ 211] = "\xaa\x51", [ 212] = "\xaa\x54",
-+ [ 213] = "\xaa\x58", [ 214] = "\xaa\x53", [ 215] = "\xa1\xdf",
-+ [ 216] = "\xa9\x2c", [ 217] = "\xaa\x63", [ 218] = "\xaa\x62",
-+ [ 219] = "\xaa\x65", [ 220] = "\xaa\x64", [ 221] = "\xaa\x72",
-+ [ 222] = "\xa9\x30", [ 223] = "\xa9\x4e", [ 224] = "\xab\x22",
-+ [ 225] = "\xab\x21", [ 226] = "\xab\x24", [ 227] = "\xab\x2a",
-+ [ 228] = "\xab\x23", [ 229] = "\xab\x29", [ 230] = "\xa9\x41",
-+ [ 231] = "\xab\x2e", [ 232] = "\xab\x32", [ 233] = "\xab\x31",
-+ [ 234] = "\xab\x34", [ 235] = "\xab\x33", [ 236] = "\xab\x40",
-+ [ 237] = "\xab\x3f", [ 238] = "\xab\x42", [ 239] = "\xab\x41",
-+ [ 240] = "\xa9\x43", [ 241] = "\xab\x50", [ 242] = "\xab\x52",
-+ [ 243] = "\xab\x51", [ 244] = "\xab\x54", [ 245] = "\xab\x58",
-+ [ 246] = "\xab\x53", [ 247] = "\xa1\xe0", [ 248] = "\xa9\x4c",
-+ [ 249] = "\xab\x63", [ 250] = "\xab\x62", [ 251] = "\xab\x65",
-+ [ 252] = "\xab\x64", [ 253] = "\xab\x72", [ 254] = "\xa9\x50",
-+ [ 255] = "\xab\x73"
-+};
-+
-+static const char from_ucs4_greek[864][2] =
-+{
-+ /* start = 0x0100, end = 0x045f */
-+ [ 0] = "\xaa\x27", [ 1] = "\xab\x27", [ 2] = "\xaa\x25",
-+ [ 3] = "\xab\x25", [ 4] = "\xaa\x28", [ 5] = "\xab\x28",
-+ [ 6] = "\xaa\x2b", [ 7] = "\xab\x2b", [ 8] = "\xaa\x2c",
-+ [ 9] = "\xab\x2c", [ 10] = "\xaa\x2f", [ 11] = "\xab\x2f",
-+ [ 12] = "\xaa\x2d", [ 13] = "\xab\x2d", [ 14] = "\xaa\x30",
-+ [ 15] = "\xab\x30", [ 16] = "\xa9\x22", [ 17] = "\xa9\x42",
-+ [ 18] = "\xaa\x37", [ 19] = "\xab\x37", [ 22] = "\xaa\x36",
-+ [ 23] = "\xab\x36", [ 24] = "\xaa\x38", [ 25] = "\xab\x38",
-+ [ 26] = "\xaa\x35", [ 27] = "\xab\x35", [ 28] = "\xaa\x3a",
-+ [ 29] = "\xab\x3a", [ 30] = "\xaa\x3b", [ 31] = "\xab\x3b",
-+ [ 32] = "\xaa\x3d", [ 33] = "\xab\x3d", [ 34] = "\xaa\x3c",
-+ [ 36] = "\xaa\x3e", [ 37] = "\xab\x3e", [ 38] = "\xa9\x24",
-+ [ 39] = "\xa9\x44", [ 40] = "\xaa\x47", [ 41] = "\xab\x47",
-+ [ 42] = "\xaa\x45", [ 43] = "\xab\x45", [ 46] = "\xaa\x46",
-+ [ 47] = "\xab\x46", [ 48] = "\xaa\x44", [ 49] = "\xa9\x45",
-+ [ 50] = "\xa9\x26", [ 51] = "\xa9\x46", [ 52] = "\xaa\x48",
-+ [ 53] = "\xab\x48", [ 54] = "\xaa\x49", [ 55] = "\xab\x49",
-+ [ 56] = "\xa9\x47", [ 57] = "\xaa\x4a", [ 58] = "\xab\x4a",
-+ [ 59] = "\xaa\x4c", [ 60] = "\xab\x4c", [ 61] = "\xaa\x4b",
-+ [ 62] = "\xab\x4b", [ 63] = "\xa9\x29", [ 64] = "\xa9\x49",
-+ [ 65] = "\xa9\x28", [ 66] = "\xa9\x48", [ 67] = "\xaa\x4d",
-+ [ 68] = "\xab\x4d", [ 69] = "\xaa\x4f", [ 70] = "\xab\x4f",
-+ [ 71] = "\xaa\x4e", [ 72] = "\xab\x4e", [ 73] = "\xa9\x4a",
-+ [ 74] = "\xa9\x2b", [ 75] = "\xa9\x4b", [ 76] = "\xaa\x57",
-+ [ 77] = "\xab\x57", [ 80] = "\xaa\x56", [ 81] = "\xab\x56",
-+ [ 82] = "\xa9\x2d", [ 83] = "\xa9\x4d", [ 84] = "\xaa\x59",
-+ [ 85] = "\xab\x59", [ 86] = "\xaa\x5b", [ 87] = "\xab\x5b",
-+ [ 88] = "\xaa\x5a", [ 89] = "\xab\x5a", [ 90] = "\xaa\x5c",
-+ [ 91] = "\xab\x5c", [ 92] = "\xaa\x5d", [ 93] = "\xab\x5d",
-+ [ 94] = "\xaa\x5f", [ 95] = "\xab\x5f", [ 96] = "\xaa\x5e",
-+ [ 97] = "\xab\x5e", [ 98] = "\xaa\x61", [ 99] = "\xab\x61",
-+ [ 100] = "\xaa\x60", [ 101] = "\xab\x60", [ 102] = "\xa9\x2f",
-+ [ 103] = "\xa9\x4f", [ 104] = "\xaa\x6c", [ 105] = "\xab\x6c",
-+ [ 106] = "\xaa\x69", [ 107] = "\xab\x69", [ 108] = "\xaa\x66",
-+ [ 109] = "\xab\x66", [ 110] = "\xaa\x6b", [ 111] = "\xab\x6b",
-+ [ 112] = "\xaa\x68", [ 113] = "\xab\x68", [ 114] = "\xaa\x6a",
-+ [ 115] = "\xab\x6a", [ 116] = "\xaa\x71", [ 117] = "\xab\x71",
-+ [ 118] = "\xaa\x74", [ 119] = "\xab\x74", [ 120] = "\xaa\x73",
-+ [ 121] = "\xaa\x75", [ 122] = "\xab\x75", [ 123] = "\xaa\x77",
-+ [ 124] = "\xab\x77", [ 125] = "\xaa\x76", [ 126] = "\xab\x76",
-+ [ 205] = "\xaa\x26", [ 206] = "\xab\x26", [ 207] = "\xaa\x43",
-+ [ 208] = "\xab\x43", [ 209] = "\xaa\x55", [ 210] = "\xab\x55",
-+ [ 211] = "\xaa\x67", [ 212] = "\xab\x67", [ 213] = "\xaa\x70",
-+ [ 214] = "\xab\x70", [ 215] = "\xaa\x6d", [ 216] = "\xab\x6d",
-+ [ 217] = "\xaa\x6f", [ 218] = "\xab\x6f", [ 219] = "\xaa\x6e",
-+ [ 220] = "\xab\x6e", [ 245] = "\xab\x39", [ 455] = "\xa2\x30",
-+ [ 472] = "\xa2\x2f", [ 473] = "\xa2\x32", [ 474] = "\xa2\x36",
-+ [ 475] = "\xa2\x35", [ 477] = "\xa2\x33", [ 644] = "\xa2\x38",
-+ [ 645] = "\xa2\x39", [ 646] = "\xa6\x61", [ 648] = "\xa6\x62",
-+ [ 649] = "\xa6\x63", [ 650] = "\xa6\x64", [ 652] = "\xa6\x67",
-+ [ 654] = "\xa6\x69", [ 655] = "\xa6\x6c", [ 656] = "\xa6\x76",
-+ [ 657] = "\xa6\xa1", [ 658] = "\xa6\xa2", [ 659] = "\xa6\xa3",
-+ [ 660] = "\xa6\xa4", [ 661] = "\xa6\xa5", [ 662] = "\xa6\xa6",
-+ [ 663] = "\xa6\xa7", [ 664] = "\xa6\xa8", [ 665] = "\xa6\xa9",
-+ [ 666] = "\xa6\xaa", [ 667] = "\xa6\xab", [ 668] = "\xa6\xac",
-+ [ 669] = "\xa6\xad", [ 670] = "\xa6\xae", [ 671] = "\xa6\xaf",
-+ [ 672] = "\xa6\xb0", [ 673] = "\xa6\xb1", [ 675] = "\xa6\xb2",
-+ [ 676] = "\xa6\xb3", [ 677] = "\xa6\xb4", [ 678] = "\xa6\xb5",
-+ [ 679] = "\xa6\xb6", [ 680] = "\xa6\xb7", [ 681] = "\xa6\xb8",
-+ [ 682] = "\xa6\x65", [ 683] = "\xa6\x6a", [ 684] = "\xa6\x71",
-+ [ 685] = "\xa6\x72", [ 686] = "\xa6\x73", [ 687] = "\xa6\x74",
-+ [ 688] = "\xa6\x7b", [ 689] = "\xa6\xc1", [ 690] = "\xa6\xc2",
-+ [ 691] = "\xa6\xc3", [ 692] = "\xa6\xc4", [ 693] = "\xa6\xc5",
-+ [ 694] = "\xa6\xc6", [ 695] = "\xa6\xc7", [ 696] = "\xa6\xc8",
-+ [ 697] = "\xa6\xc9", [ 698] = "\xa6\xca", [ 699] = "\xa6\xcb",
-+ [ 700] = "\xa6\xcc", [ 701] = "\xa6\xcd", [ 702] = "\xa6\xce",
-+ [ 703] = "\xa6\xcf", [ 704] = "\xa6\xd0", [ 705] = "\xa6\xd1",
-+ [ 706] = "\xa6\x78", [ 707] = "\xa6\xd2", [ 708] = "\xa6\xd3",
-+ [ 709] = "\xa6\xd4", [ 710] = "\xa6\xd5", [ 711] = "\xa6\xd6",
-+ [ 712] = "\xa6\xd7", [ 713] = "\xa6\xd8", [ 714] = "\xa6\x75",
-+ [ 715] = "\xa6\x7a", [ 716] = "\xa6\x77", [ 717] = "\xa6\x79",
-+ [ 718] = "\xa6\x7c", [ 769] = "\xa7\xa7", [ 770] = "\xa7\x42",
-+ [ 771] = "\xa7\x43", [ 772] = "\xa7\x44", [ 773] = "\xa7\x45",
-+ [ 774] = "\xa7\x46", [ 775] = "\xa7\x47", [ 776] = "\xa7\x48",
-+ [ 777] = "\xa7\x49", [ 778] = "\xa7\x4a", [ 779] = "\xa7\x4b",
-+ [ 780] = "\xa7\x4c", [ 782] = "\xa7\x4d", [ 783] = "\xa7\x4e",
-+ [ 784] = "\xa7\xa1", [ 785] = "\xa7\xa2", [ 786] = "\xa7\xa3",
-+ [ 787] = "\xa7\xa4", [ 788] = "\xa7\xa5", [ 789] = "\xa7\xa6",
-+ [ 790] = "\xa7\xa8", [ 791] = "\xa7\xa9", [ 792] = "\xa7\xaa",
-+ [ 793] = "\xa7\xab", [ 794] = "\xa7\xac", [ 795] = "\xa7\xad",
-+ [ 796] = "\xa7\xae", [ 797] = "\xa7\xaf", [ 798] = "\xa7\xb0",
-+ [ 799] = "\xa7\xb1", [ 800] = "\xa7\xb2", [ 801] = "\xa7\xb3",
-+ [ 802] = "\xa7\xb4", [ 803] = "\xa7\xb5", [ 804] = "\xa7\xb6",
-+ [ 805] = "\xa7\xb7", [ 806] = "\xa7\xb8", [ 807] = "\xa7\xb9",
-+ [ 808] = "\xa7\xba", [ 809] = "\xa7\xbb", [ 810] = "\xa7\xbc",
-+ [ 811] = "\xa7\xbd", [ 812] = "\xa7\xbe", [ 813] = "\xa7\xbf",
-+ [ 814] = "\xa7\xc0", [ 815] = "\xa7\xc1", [ 816] = "\xa7\xd1",
-+ [ 817] = "\xa7\xd2", [ 818] = "\xa7\xd3", [ 819] = "\xa7\xd4",
-+ [ 820] = "\xa7\xd5", [ 821] = "\xa7\xd6", [ 822] = "\xa7\xd8",
-+ [ 823] = "\xa7\xd9", [ 824] = "\xa7\xda", [ 825] = "\xa7\xdb",
-+ [ 826] = "\xa7\xdc", [ 827] = "\xa7\xdd", [ 828] = "\xa7\xde",
-+ [ 829] = "\xa7\xdf", [ 830] = "\xa7\xe0", [ 831] = "\xa7\xe1",
-+ [ 832] = "\xa7\xe2", [ 833] = "\xa7\xe3", [ 834] = "\xa7\xe4",
-+ [ 835] = "\xa7\xe5", [ 836] = "\xa7\xe6", [ 837] = "\xa7\xe7",
-+ [ 838] = "\xa7\xe8", [ 839] = "\xa7\xe9", [ 840] = "\xa7\xea",
-+ [ 841] = "\xa7\xeb", [ 842] = "\xa7\xec", [ 843] = "\xa7\xed",
-+ [ 844] = "\xa7\xee", [ 845] = "\xa7\xef", [ 846] = "\xa7\xf0",
-+ [ 847] = "\xa7\xf1", [ 849] = "\xa7\xd7", [ 850] = "\xa7\x72",
-+ [ 851] = "\xa7\x73", [ 852] = "\xa7\x74", [ 853] = "\xa7\x75",
-+ [ 854] = "\xa7\x76", [ 855] = "\xa7\x77", [ 856] = "\xa7\x78",
-+ [ 857] = "\xa7\x79", [ 858] = "\xa7\x7a", [ 859] = "\xa7\x7b",
-+ [ 860] = "\xa7\x7c", [ 862] = "\xa7\x7d", [ 863] = "\xa7\x7e"
-+};
-+
-+static const char from_ucs4_cjk[32662][2] =
-+{
-+ /* start = 0x2010, end = 0x9fa5 */
-+ [ 0] = "\xa1\xbe", [ 4] = "\xa1\xbd", [ 5] = "\xa1\xbd",
-+ [ 6] = "\xa1\xc2", [ 8] = "\xa1\xc6", [ 9] = "\xa1\xc7",
-+ [ 12] = "\xa1\xc8", [ 13] = "\xa1\xc9", [ 16] = "\xa2\xf7",
-+ [ 17] = "\xa2\xf8", [ 21] = "\xa1\xc5", [ 22] = "\xa1\xc4",
-+ [ 32] = "\xa2\xf3", [ 34] = "\xa1\xec", [ 35] = "\xa1\xed",
-+ [ 43] = "\xa2\xa8", [ 46] = "\x7e\x00", [ 243] = "\xa1\xee",
-+ [ 262] = "\xad\xe2", [ 273] = "\xad\xe4", [ 274] = "\xa2\x6f",
-+ [ 283] = "\xa2\xf2", [ 336] = "\xad\xb5", [ 337] = "\xad\xb6",
-+ [ 338] = "\xad\xb7", [ 339] = "\xad\xb8", [ 340] = "\xad\xb9",
-+ [ 341] = "\xad\xba", [ 342] = "\xad\xbb", [ 343] = "\xad\xbc",
-+ [ 344] = "\xad\xbd", [ 345] = "\xad\xbe", [ 352] = "\xf3\x73",
-+ [ 353] = "\xf3\x74", [ 354] = "\xf3\x75", [ 355] = "\xf3\x76",
-+ [ 356] = "\xf3\x77", [ 357] = "\xf3\x78", [ 358] = "\xf3\x79",
-+ [ 359] = "\xf3\x7a", [ 360] = "\xf3\x7b", [ 361] = "\xf3\x7c",
-+ [ 384] = "\xa2\xab", [ 385] = "\xa2\xac", [ 386] = "\xa2\xaa",
-+ [ 387] = "\xa2\xad", [ 450] = "\xa2\xcd", [ 452] = "\xa2\xce",
-+ [ 496] = "\xa2\xcf", [ 498] = "\xa2\xdf", [ 499] = "\xa2\xd0",
-+ [ 503] = "\xa2\xe0", [ 504] = "\xa2\xba", [ 507] = "\xa2\xbb",
-+ [ 513] = "\xad\xf4", [ 514] = "\xa1\xdd", [ 522] = "\xa2\xe5",
-+ [ 525] = "\xa2\xe7", [ 526] = "\xa1\xe7", [ 527] = "\xad\xf8",
-+ [ 528] = "\xa2\xdc", [ 533] = "\xa1\xc2", [ 535] = "\xa2\xca",
-+ [ 536] = "\xa2\xcb", [ 537] = "\xa2\xc1", [ 538] = "\xa2\xc0",
-+ [ 539] = "\xa2\xe9", [ 540] = "\xa2\xea", [ 542] = "\xad\xf3",
-+ [ 548] = "\xa1\xe8", [ 549] = "\xa2\xe8", [ 557] = "\xa2\xe6",
-+ [ 578] = "\xa2\xe2", [ 592] = "\xa1\xe2", [ 593] = "\xa2\xe1",
-+ [ 598] = "\xa1\xe5", [ 599] = "\xa1\xe6", [ 602] = "\xa2\xe3",
-+ [ 603] = "\xa2\xe4", [ 626] = "\xa2\xbe", [ 627] = "\xa2\xbf",
-+ [ 630] = "\xa2\xbc", [ 631] = "\xa2\xbd", [ 661] = "\xa2\xdd",
-+ [ 687] = "\xad\xf9", [ 770] = "\xa2\xde", [ 1104] = "\xad\xa1",
-+ [ 1105] = "\xad\xa2", [ 1106] = "\xad\xa3", [ 1107] = "\xad\xa4",
-+ [ 1108] = "\xad\xa5", [ 1109] = "\xad\xa6", [ 1110] = "\xad\xa7",
-+ [ 1111] = "\xad\xa8", [ 1112] = "\xad\xa9", [ 1113] = "\xad\xaa",
-+ [ 1114] = "\xad\xab", [ 1115] = "\xad\xac", [ 1116] = "\xad\xad",
-+ [ 1117] = "\xad\xae", [ 1118] = "\xad\xaf", [ 1119] = "\xad\xb0",
-+ [ 1120] = "\xad\xb1", [ 1121] = "\xad\xb2", [ 1122] = "\xad\xb3",
-+ [ 1123] = "\xad\xb4", [ 1264] = "\xa8\xa1", [ 1265] = "\xa8\xac",
-+ [ 1266] = "\xa8\xa2", [ 1267] = "\xa8\xad", [ 1276] = "\xa8\xa3",
-+ [ 1279] = "\xa8\xae", [ 1280] = "\xa8\xa4", [ 1283] = "\xa8\xaf",
-+ [ 1284] = "\xa8\xa6", [ 1287] = "\xa8\xb1", [ 1288] = "\xa8\xa5",
-+ [ 1291] = "\xa8\xb0", [ 1292] = "\xa8\xa7", [ 1293] = "\xa8\xbc",
-+ [ 1296] = "\xa8\xb7", [ 1299] = "\xa8\xb2", [ 1300] = "\xa8\xa9",
-+ [ 1301] = "\xa8\xbe", [ 1304] = "\xa8\xb9", [ 1307] = "\xa8\xb4",
-+ [ 1308] = "\xa8\xa8", [ 1311] = "\xa8\xb8", [ 1312] = "\xa8\xbd",
-+ [ 1315] = "\xa8\xb3", [ 1316] = "\xa8\xaa", [ 1319] = "\xa8\xba",
-+ [ 1320] = "\xa8\xbf", [ 1323] = "\xa8\xb5", [ 1324] = "\xa8\xab",
-+ [ 1327] = "\xa8\xbb", [ 1330] = "\xa8\xc0", [ 1339] = "\xa8\xb6",
-+ [ 1424] = "\xa2\xa3", [ 1425] = "\xa2\xa2", [ 1442] = "\xa2\xa5",
-+ [ 1443] = "\xa2\xa4", [ 1452] = "\xa2\xa7", [ 1453] = "\xa2\xa6",
-+ [ 1462] = "\xa2\xa1", [ 1463] = "\xa1\xfe", [ 1467] = "\xa1\xfb",
-+ [ 1470] = "\xa1\xfd", [ 1471] = "\xa1\xfc", [ 1503] = "\xa2\xfe",
-+ [ 1525] = "\xa1\xfa", [ 1526] = "\xa1\xf9", [ 1584] = "\xa1\xea",
-+ [ 1586] = "\xa1\xe9", [ 1626] = "\xa2\xf6", [ 1629] = "\xa2\xf5",
-+ [ 1631] = "\xa2\xf4", [ 4080] = "\xa1\xa1", [ 4081] = "\xa1\xa2",
-+ [ 4082] = "\xa1\xa3", [ 4083] = "\xa1\xb7", [ 4085] = "\xa1\xb9",
-+ [ 4086] = "\xa1\xba", [ 4087] = "\xa1\xbb", [ 4088] = "\xa1\xd2",
-+ [ 4089] = "\xa1\xd3", [ 4090] = "\xa1\xd4", [ 4091] = "\xa1\xd5",
-+ [ 4092] = "\xa1\xd6", [ 4093] = "\xa1\xd7", [ 4094] = "\xa1\xd8",
-+ [ 4095] = "\xa1\xd9", [ 4096] = "\xa1\xda", [ 4097] = "\xa1\xdb",
-+ [ 4098] = "\xa2\xa9", [ 4099] = "\xa2\xae", [ 4100] = "\xa1\xcc",
-+ [ 4101] = "\xa1\xcd", [ 4108] = "\xa1\xc1", [ 4109] = "\xad\xe0",
-+ [ 4111] = "\xad\xe1", [ 4145] = "\xa4\xa1", [ 4146] = "\xa4\xa2",
-+ [ 4147] = "\xa4\xa3", [ 4148] = "\xa4\xa4", [ 4149] = "\xa4\xa5",
-+ [ 4150] = "\xa4\xa6", [ 4151] = "\xa4\xa7", [ 4152] = "\xa4\xa8",
-+ [ 4153] = "\xa4\xa9", [ 4154] = "\xa4\xaa", [ 4155] = "\xa4\xab",
-+ [ 4156] = "\xa4\xac", [ 4157] = "\xa4\xad", [ 4158] = "\xa4\xae",
-+ [ 4159] = "\xa4\xaf", [ 4160] = "\xa4\xb0", [ 4161] = "\xa4\xb1",
-+ [ 4162] = "\xa4\xb2", [ 4163] = "\xa4\xb3", [ 4164] = "\xa4\xb4",
-+ [ 4165] = "\xa4\xb5", [ 4166] = "\xa4\xb6", [ 4167] = "\xa4\xb7",
-+ [ 4168] = "\xa4\xb8", [ 4169] = "\xa4\xb9", [ 4170] = "\xa4\xba",
-+ [ 4171] = "\xa4\xbb", [ 4172] = "\xa4\xbc", [ 4173] = "\xa4\xbd",
-+ [ 4174] = "\xa4\xbe", [ 4175] = "\xa4\xbf", [ 4176] = "\xa4\xc0",
-+ [ 4177] = "\xa4\xc1", [ 4178] = "\xa4\xc2", [ 4179] = "\xa4\xc3",
-+ [ 4180] = "\xa4\xc4", [ 4181] = "\xa4\xc5", [ 4182] = "\xa4\xc6",
-+ [ 4183] = "\xa4\xc7", [ 4184] = "\xa4\xc8", [ 4185] = "\xa4\xc9",
-+ [ 4186] = "\xa4\xca", [ 4187] = "\xa4\xcb", [ 4188] = "\xa4\xcc",
-+ [ 4189] = "\xa4\xcd", [ 4190] = "\xa4\xce", [ 4191] = "\xa4\xcf",
-+ [ 4192] = "\xa4\xd0", [ 4193] = "\xa4\xd1", [ 4194] = "\xa4\xd2",
-+ [ 4195] = "\xa4\xd3", [ 4196] = "\xa4\xd4", [ 4197] = "\xa4\xd5",
-+ [ 4198] = "\xa4\xd6", [ 4199] = "\xa4\xd7", [ 4200] = "\xa4\xd8",
-+ [ 4201] = "\xa4\xd9", [ 4202] = "\xa4\xda", [ 4203] = "\xa4\xdb",
-+ [ 4204] = "\xa4\xdc", [ 4205] = "\xa4\xdd", [ 4206] = "\xa4\xde",
-+ [ 4207] = "\xa4\xdf", [ 4208] = "\xa4\xe0", [ 4209] = "\xa4\xe1",
-+ [ 4210] = "\xa4\xe2", [ 4211] = "\xa4\xe3", [ 4212] = "\xa4\xe4",
-+ [ 4213] = "\xa4\xe5", [ 4214] = "\xa4\xe6", [ 4215] = "\xa4\xe7",
-+ [ 4216] = "\xa4\xe8", [ 4217] = "\xa4\xe9", [ 4218] = "\xa4\xea",
-+ [ 4219] = "\xa4\xeb", [ 4220] = "\xa4\xec", [ 4221] = "\xa4\xed",
-+ [ 4222] = "\xa4\xee", [ 4223] = "\xa4\xef", [ 4224] = "\xa4\xf0",
-+ [ 4225] = "\xa4\xf1", [ 4226] = "\xa4\xf2", [ 4227] = "\xa4\xf3",
-+ [ 4235] = "\xa1\xab", [ 4236] = "\xa1\xac", [ 4237] = "\xa1\xb5",
-+ [ 4238] = "\xa1\xb6", [ 4241] = "\xa5\xa1", [ 4242] = "\xa5\xa2",
-+ [ 4243] = "\xa5\xa3", [ 4244] = "\xa5\xa4", [ 4245] = "\xa5\xa5",
-+ [ 4246] = "\xa5\xa6", [ 4247] = "\xa5\xa7", [ 4248] = "\xa5\xa8",
-+ [ 4249] = "\xa5\xa9", [ 4250] = "\xa5\xaa", [ 4251] = "\xa5\xab",
-+ [ 4252] = "\xa5\xac", [ 4253] = "\xa5\xad", [ 4254] = "\xa5\xae",
-+ [ 4255] = "\xa5\xaf", [ 4256] = "\xa5\xb0", [ 4257] = "\xa5\xb1",
-+ [ 4258] = "\xa5\xb2", [ 4259] = "\xa5\xb3", [ 4260] = "\xa5\xb4",
-+ [ 4261] = "\xa5\xb5", [ 4262] = "\xa5\xb6", [ 4263] = "\xa5\xb7",
-+ [ 4264] = "\xa5\xb8", [ 4265] = "\xa5\xb9", [ 4266] = "\xa5\xba",
-+ [ 4267] = "\xa5\xbb", [ 4268] = "\xa5\xbc", [ 4269] = "\xa5\xbd",
-+ [ 4270] = "\xa5\xbe", [ 4271] = "\xa5\xbf", [ 4272] = "\xa5\xc0",
-+ [ 4273] = "\xa5\xc1", [ 4274] = "\xa5\xc2", [ 4275] = "\xa5\xc3",
-+ [ 4276] = "\xa5\xc4", [ 4277] = "\xa5\xc5", [ 4278] = "\xa5\xc6",
-+ [ 4279] = "\xa5\xc7", [ 4280] = "\xa5\xc8", [ 4281] = "\xa5\xc9",
-+ [ 4282] = "\xa5\xca", [ 4283] = "\xa5\xcb", [ 4284] = "\xa5\xcc",
-+ [ 4285] = "\xa5\xcd", [ 4286] = "\xa5\xce", [ 4287] = "\xa5\xcf",
-+ [ 4288] = "\xa5\xd0", [ 4289] = "\xa5\xd1", [ 4290] = "\xa5\xd2",
-+ [ 4291] = "\xa5\xd3", [ 4292] = "\xa5\xd4", [ 4293] = "\xa5\xd5",
-+ [ 4294] = "\xa5\xd6", [ 4295] = "\xa5\xd7", [ 4296] = "\xa5\xd8",
-+ [ 4297] = "\xa5\xd9", [ 4298] = "\xa5\xda", [ 4299] = "\xa5\xdb",
-+ [ 4300] = "\xa5\xdc", [ 4301] = "\xa5\xdd", [ 4302] = "\xa5\xde",
-+ [ 4303] = "\xa5\xdf", [ 4304] = "\xa5\xe0", [ 4305] = "\xa5\xe1",
-+ [ 4306] = "\xa5\xe2", [ 4307] = "\xa5\xe3", [ 4308] = "\xa5\xe4",
-+ [ 4309] = "\xa5\xe5", [ 4310] = "\xa5\xe6", [ 4311] = "\xa5\xe7",
-+ [ 4312] = "\xa5\xe8", [ 4313] = "\xa5\xe9", [ 4314] = "\xa5\xea",
-+ [ 4315] = "\xa5\xeb", [ 4316] = "\xa5\xec", [ 4317] = "\xa5\xed",
-+ [ 4318] = "\xa5\xee", [ 4319] = "\xa5\xef", [ 4320] = "\xa5\xf0",
-+ [ 4321] = "\xa5\xf1", [ 4322] = "\xa5\xf2", [ 4323] = "\xa5\xf3",
-+ [ 4324] = "\xa5\xf4", [ 4325] = "\xa5\xf5", [ 4326] = "\xa5\xf6",
-+ [ 4331] = "\xa1\xa6", [ 4332] = "\xa1\xbc", [ 4333] = "\xa1\xb3",
-+ [ 4334] = "\xa1\xb4", [ 4641] = "\xad\xea", [ 4642] = "\xad\xeb",
-+ [ 4649] = "\xad\xec", [ 4756] = "\xad\xe5", [ 4757] = "\xad\xe6",
-+ [ 4758] = "\xad\xe7", [ 4759] = "\xad\xe8", [ 4760] = "\xad\xe9",
-+ [ 4851] = "\xad\xc6", [ 4861] = "\xad\xca", [ 4868] = "\xad\xc1",
-+ [ 4872] = "\xad\xc4", [ 4882] = "\xad\xc2", [ 4883] = "\xad\xcc",
-+ [ 4886] = "\xad\xcb", [ 4887] = "\xad\xc5", [ 4891] = "\xad\xcd",
-+ [ 4902] = "\xad\xc7", [ 4907] = "\xad\xcf", [ 4921] = "\xad\xc0",
-+ [ 4922] = "\xad\xce", [ 4925] = "\xad\xc3", [ 4929] = "\xad\xc8",
-+ [ 4935] = "\xad\xc9", [ 4971] = "\xad\xdf", [ 4972] = "\xad\xef",
-+ [ 4973] = "\xad\xee", [ 4974] = "\xad\xed", [ 4990] = "\xad\xd3",
-+ [ 4991] = "\xad\xd4", [ 5004] = "\xad\xd0", [ 5005] = "\xad\xd1",
-+ [ 5006] = "\xad\xd2", [ 5009] = "\xad\xd6", [ 5044] = "\xad\xd5",
-+ [ 5053] = "\xad\xe3", [11760] = "\xb0\xec", [11761] = "\xc3\xfa",
-+ [11762] = "\xb0\x21", [11763] = "\xbc\xb7", [11764] = "\xb0\x22",
-+ [11765] = "\xb0\x23", [11767] = "\xcb\xfc", [11768] = "\xbe\xe6",
-+ [11769] = "\xbb\xb0", [11770] = "\xbe\xe5", [11771] = "\xb2\xbc",
-+ [11772] = "\xb0\x24", [11773] = "\xc9\xd4", [11774] = "\xcd\xbf",
-+ [11776] = "\xd0\xa2", [11777] = "\xb1\xaf", [11778] = "\xb0\x25",
-+ [11780] = "\xb3\xee", [11781] = "\xd0\xa3", [11782] = "\xc0\xa4",
-+ [11783] = "\xd2\xc2", [11784] = "\xb5\xd6", [11785] = "\xca\xba",
-+ [11790] = "\xbe\xe7", [11791] = "\xb0\x26", [11793] = "\xce\xbe",
-+ [11795] = "\xb0\x27", [11796] = "\xb0\x28", [11798] = "\xca\xc2",
-+ [11800] = "\xb0\x29", [11802] = "\xd0\xa4", [11803] = "\xb0\x2a",
-+ [11805] = "\xc3\xe6", [11806] = "\xb0\x2b", [11807] = "\xb0\x2c",
-+ [11808] = "\xb0\x2d", [11809] = "\xd0\xa5", [11810] = "\xb6\xfa",
-+ [11813] = "\xb0\x2e", [11814] = "\xd0\xa6", [11816] = "\xb4\xdd",
-+ [11817] = "\xc3\xb0", [11819] = "\xbc\xe7", [11820] = "\xd0\xa7",
-+ [11823] = "\xd0\xa8", [11824] = "\xb0\x2f", [11825] = "\xb0\x30",
-+ [11826] = "\xd0\xa9", [11827] = "\xc7\xb5", [11828] = "\xb0\x31",
-+ [11829] = "\xb5\xd7", [11831] = "\xb0\x32", [11835] = "\xc7\xb7",
-+ [11837] = "\xc6\xe3", [11838] = "\xb8\xc3", [11839] = "\xcb\xb3",
-+ [11841] = "\xb0\x33", [11845] = "\xe9\xc9", [11846] = "\xd0\xaa",
-+ [11847] = "\xbe\xe8", [11848] = "\xd0\xab", [11849] = "\xb2\xb5",
-+ [11850] = "\xb0\x34", [11852] = "\xb0\x35", [11853] = "\xb6\xe5",
-+ [11854] = "\xb8\xf0", [11855] = "\xcc\xe9", [11858] = "\xd6\xa6",
-+ [11859] = "\xb0\x36", [11864] = "\xb0\x37", [11865] = "\xb0\x38",
-+ [11873] = "\xcd\xf0", [11875] = "\xc6\xfd", [11876] = "\xb0\x39",
-+ [11877] = "\xb0\x3a", [11881] = "\xb0\x3b", [11886] = "\xb4\xa5",
-+ [11887] = "\xb0\x3c", [11888] = "\xb5\xb5", [11890] = "\xd0\xac",
-+ [11893] = "\xd0\xad", [11894] = "\xce\xbb", [11896] = "\xcd\xbd",
-+ [11897] = "\xc1\xe8", [11898] = "\xd0\xaf", [11899] = "\xbb\xf6",
-+ [11900] = "\xc6\xf3", [11901] = "\xb0\x3d", [11902] = "\xd0\xb2",
-+ [11905] = "\xb1\xbe", [11906] = "\xb8\xdf", [11908] = "\xb8\xde",
-+ [11909] = "\xb0\xe6", [11910] = "\xb0\x3e", [11911] = "\xb0\x3f",
-+ [11912] = "\xcf\xcb", [11913] = "\xcf\xca", [11915] = "\xba\xb3",
-+ [11916] = "\xb0\xa1", [11917] = "\xb0\x40", [11918] = "\xd0\xb3",
-+ [11919] = "\xd0\xb4", [11920] = "\xd0\xb5", [11921] = "\xcb\xb4",
-+ [11922] = "\xd0\xb6", [11924] = "\xb8\xf2", [11925] = "\xb0\xe7",
-+ [11926] = "\xcb\xf2", [11928] = "\xb5\xfc", [11931] = "\xb5\xfd",
-+ [11932] = "\xb5\xfe", [11933] = "\xc4\xe2", [11934] = "\xce\xbc",
-+ [11935] = "\xb0\x41", [11936] = "\xd0\xb7", [11939] = "\xd0\xb8",
-+ [11942] = "\xd0\xb9", [11945] = "\xb0\x42", [11946] = "\xbf\xcd",
-+ [11952] = "\xbd\xba", [11953] = "\xbf\xce", [11954] = "\xd0\xbe",
-+ [11955] = "\xb0\x43", [11956] = "\xd0\xbc", [11958] = "\xd0\xbd",
-+ [11959] = "\xb5\xd8", [11962] = "\xba\xa3", [11963] = "\xb2\xf0",
-+ [11965] = "\xd0\xbb", [11966] = "\xd0\xba", [11967] = "\xca\xa9",
-+ [11968] = "\xb0\x44", [11972] = "\xbb\xc6", [11973] = "\xbb\xc5",
-+ [11974] = "\xc2\xbe", [11975] = "\xd0\xbf", [11976] = "\xc9\xd5",
-+ [11977] = "\xc0\xe7", [11978] = "\xb0\x45", [11979] = "\xb0\x46",
-+ [11981] = "\xa1\xb8", [11982] = "\xd0\xc0", [11983] = "\xd0\xc2",
-+ [11984] = "\xb0\x47", [11985] = "\xb0\x48", [11986] = "\xb0\x49",
-+ [11987] = "\xc2\xe5", [11988] = "\xce\xe1", [11989] = "\xb0\xca",
-+ [11992] = "\xb0\x4a", [11997] = "\xd0\xc1", [11998] = "\xb2\xbe",
-+ [11999] = "\xb0\x4b", [12000] = "\xb6\xc4", [12001] = "\xb0\x4c",
-+ [12002] = "\xc3\xe7", [12003] = "\xb0\x4d", [12005] = "\xb0\x4e",
-+ [12006] = "\xb7\xef", [12007] = "\xd0\xc3", [12011] = "\xc7\xa4",
-+ [12012] = "\xf4\x2f", [12013] = "\xb0\x4f", [12014] = "\xb0\x50",
-+ [12015] = "\xb0\x51", [12016] = "\xb0\x52", [12017] = "\xb4\xeb",
-+ [12018] = "\xb0\x53", [12019] = "\xb0\x54", [12024] = "\xb0\x55",
-+ [12025] = "\xd0\xc4", [12026] = "\xb0\xcb", [12027] = "\xb0\x56",
-+ [12028] = "\xb0\x57", [12029] = "\xb8\xe0", [12030] = "\xb4\xec",
-+ [12031] = "\xc9\xfa", [12032] = "\xc8\xb2", [12033] = "\xb5\xd9",
-+ [12034] = "\xb0\x58", [12037] = "\xb0\x59", [12038] = "\xb0\x5a",
-+ [12039] = "\xb0\x5b", [12041] = "\xb0\x5c", [12042] = "\xb2\xf1",
-+ [12044] = "\xd0\xe7", [12045] = "\xc5\xc1", [12062] = "\xb0\x5d",
-+ [12063] = "\xc7\xec", [12064] = "\xd0\xc6", [12065] = "\xb0\x5e",
-+ [12067] = "\xb0\x60", [12068] = "\xc8\xbc", [12069] = "\xb0\x61",
-+ [12070] = "\xce\xe2", [12071] = "\xb0\x62", [12072] = "\xbf\xad",
-+ [12073] = "\xb0\x63", [12074] = "\xbb\xc7", [12075] = "\xb0\x64",
-+ [12076] = "\xbb\xf7", [12077] = "\xb2\xc0", [12078] = "\xb0\x65",
-+ [12080] = "\xb0\x66", [12082] = "\xb0\x67", [12083] = "\xc4\xd1",
-+ [12086] = "\xc3\xa2", [12087] = "\xd0\xca", [12088] = "\xb0\x68",
-+ [12089] = "\xb0\x69", [12091] = "\xb0\x6a", [12092] = "\xb0\x6b",
-+ [12093] = "\xb0\xcc", [12094] = "\xc4\xe3", [12095] = "\xbd\xbb",
-+ [12096] = "\xba\xb4", [12097] = "\xcd\xa4", [12098] = "\xb0\x6c",
-+ [12099] = "\xc2\xce", [12100] = "\xb0\x6d", [12101] = "\xb2\xbf",
-+ [12102] = "\xb0\x6e", [12103] = "\xd0\xc9", [12104] = "\xb0\x6f",
-+ [12105] = "\xcd\xbe", [12106] = "\xd0\xc5", [12107] = "\xd0\xc7",
-+ [12108] = "\xba\xee", [12109] = "\xd0\xc8", [12110] = "\xd5\xa4",
-+ [12111] = "\xb0\x70", [12112] = "\xb0\x5f", [12115] = "\xb0\x71",
-+ [12121] = "\xd0\xd0", [12122] = "\xb0\x72", [12124] = "\xb0\x73",
-+ [12126] = "\xb0\x74", [12127] = "\xd0\xd3", [12128] = "\xd0\xd1",
-+ [12129] = "\xb0\x75", [12131] = "\xb2\xc2", [12133] = "\xca\xbb",
-+ [12134] = "\xd0\xcb", [12135] = "\xb0\x76", [12136] = "\xb0\x77",
-+ [12137] = "\xb0\x78", [12138] = "\xb0\x79", [12139] = "\xd0\xcf",
-+ [12140] = "\xb8\xf3", [12141] = "\xb0\x7a", [12142] = "\xb0\x7b",
-+ [12143] = "\xbb\xc8", [12145] = "\xb0\x7c", [12146] = "\xb0\x7d",
-+ [12147] = "\xb4\xa6", [12148] = "\xb0\x7e", [12149] = "\xb1\x21",
-+ [12150] = "\xd0\xd4", [12152] = "\xd0\xcc", [12153] = "\xb1\x22",
-+ [12154] = "\xb1\x23", [12155] = "\xce\xe3", [12156] = "\xb1\x24",
-+ [12157] = "\xbb\xf8", [12158] = "\xb1\x25", [12159] = "\xd0\xcd",
-+ [12160] = "\xb1\x26", [12161] = "\xd0\xd2", [12162] = "\xb1\x27",
-+ [12163] = "\xb1\x28", [12164] = "\xb1\x29", [12166] = "\xd0\xd5",
-+ [12167] = "\xb1\x2a", [12168] = "\xd0\xce", [12169] = "\xb1\x2b",
-+ [12170] = "\xb1\x2c", [12171] = "\xb6\xa1", [12173] = "\xb0\xcd",
-+ [12174] = "\xb1\x2d", [12175] = "\xb1\x2e", [12176] = "\xb6\xa2",
-+ [12177] = "\xb2\xc1", [12187] = "\xd5\xa5", [12189] = "\xcb\xf9",
-+ [12190] = "\xc9\xee", [12191] = "\xb8\xf4", [12194] = "\xb1\x2f",
-+ [12197] = "\xbf\xaf", [12198] = "\xce\xb7", [12199] = "\xb1\x30",
-+ [12201] = "\xb1\x31", [12203] = "\xb1\x32", [12204] = "\xb1\x33",
-+ [12205] = "\xb1\x34", [12206] = "\xb1\x35", [12207] = "\xca\xd8",
-+ [12208] = "\xb1\x36", [12209] = "\xb1\x37", [12210] = "\xb7\xb8",
-+ [12211] = "\xc2\xa5", [12212] = "\xb2\xe4", [12213] = "\xb1\x38",
-+ [12214] = "\xb1\x39", [12216] = "\xb1\x3a", [12217] = "\xb1\x3b",
-+ [12218] = "\xbd\xd3", [12219] = "\xb1\x3c", [12220] = "\xb1\x3d",
-+ [12221] = "\xb1\x3e", [12222] = "\xd0\xd9", [12223] = "\xb1\x3f",
-+ [12224] = "\xd0\xde", [12225] = "\xd0\xdc", [12226] = "\xb1\x40",
-+ [12228] = "\xd0\xd7", [12231] = "\xc2\xaf", [12232] = "\xd0\xda",
-+ [12234] = "\xd0\xdd", [12235] = "\xd0\xdb", [12236] = "\xb1\x41",
-+ [12237] = "\xca\xdd", [12239] = "\xd0\xd8", [12240] = "\xb1\x42",
-+ [12241] = "\xbf\xae", [12242] = "\xb1\x43", [12243] = "\xcb\xf3",
-+ [12244] = "\xd0\xdf", [12245] = "\xd0\xe0", [12254] = "\xbd\xa4",
-+ [12255] = "\xd0\xed", [12256] = "\xb1\x44", [12258] = "\xb1\x45",
-+ [12259] = "\xc7\xd0", [12261] = "\xc9\xb6", [12262] = "\xd0\xe8",
-+ [12264] = "\xca\xf0", [12266] = "\xb2\xb6", [12268] = "\xb1\x46",
-+ [12269] = "\xb1\x47", [12270] = "\xd0\xec", [12271] = "\xb1\x48",
-+ [12272] = "\xb1\x49", [12273] = "\xb1\x4a", [12276] = "\xb1\x4b",
-+ [12277] = "\xd0\xe6", [12278] = "\xd0\xef", [12279] = "\xb1\x4c",
-+ [12281] = "\xc1\xd2", [12282] = "\xb1\x4d", [12283] = "\xb8\xc4",
-+ [12284] = "\xb1\x4e", [12285] = "\xc7\xdc", [12286] = "\xb1\x4f",
-+ [12287] = "\xe0\xc7", [12288] = "\xb1\x50", [12289] = "\xd0\xee",
-+ [12290] = "\xc5\xdd", [12291] = "\xb1\x51", [12292] = "\xd0\xe3",
-+ [12294] = "\xb8\xf6", [12295] = "\xb1\x52", [12296] = "\xb1\x53",
-+ [12297] = "\xb8\xf5", [12298] = "\xd0\xe1", [12299] = "\xb1\x54",
-+ [12300] = "\xb1\x55", [12301] = "\xb1\x56", [12302] = "\xb1\x57",
-+ [12303] = "\xbc\xda", [12305] = "\xd0\xe9", [12306] = "\xb1\x58",
-+ [12307] = "\xca\xef", [12308] = "\xc3\xcd", [12309] = "\xd0\xe5",
-+ [12310] = "\xb7\xf1", [12311] = "\xb1\x59", [12312] = "\xd0\xe2",
-+ [12313] = "\xd0\xea", [12314] = "\xd0\xe4", [12315] = "\xce\xd1",
-+ [12316] = "\xd0\xeb", [12317] = "\xcf\xc1", [12318] = "\xb1\x5a",
-+ [12320] = "\xb1\x5b", [12322] = "\xb1\x5c", [12323] = "\xb1\x5d",
-+ [12325] = "\xb1\x5e", [12326] = "\xb6\xe6", [12329] = "\xb7\xf0",
-+ [12331] = "\xb1\x76", [12336] = "\xb1\x5f", [12337] = "\xb1\x60",
-+ [12338] = "\xb1\x61", [12339] = "\xd0\xf0", [12341] = "\xb1\x62",
-+ [12342] = "\xb1\x63", [12343] = "\xd0\xf1", [12344] = "\xd0\xf5",
-+ [12345] = "\xb0\xce", [12346] = "\xb1\x64", [12348] = "\xb1\x65",
-+ [12350] = "\xb1\x66", [12351] = "\xca\xd0", [12352] = "\xd0\xf4",
-+ [12353] = "\xb1\x67", [12354] = "\xb1\x68", [12355] = "\xb1\x69",
-+ [12357] = "\xd0\xf3", [12358] = "\xd0\xf7", [12359] = "\xb1\x6a",
-+ [12361] = "\xb1\x6b", [12362] = "\xd0\xf6", [12364] = "\xc4\xe4",
-+ [12367] = "\xb1\x6c", [12368] = "\xb1\x6d", [12370] = "\xb1\x6e",
-+ [12371] = "\xb1\x6f", [12373] = "\xb7\xf2", [12374] = "\xb1\x70",
-+ [12375] = "\xb1\x71", [12378] = "\xb1\x72", [12380] = "\xd0\xf8",
-+ [12381] = "\xb1\x73", [12384] = "\xb1\x74", [12385] = "\xb1\x75",
-+ [12386] = "\xbc\xc5", [12388] = "\xc2\xa6", [12389] = "\xc4\xe5",
-+ [12390] = "\xb6\xf6", [12392] = "\xd0\xf9", [12397] = "\xb5\xb6",
-+ [12400] = "\xd0\xfa", [12401] = "\xb1\x77", [12403] = "\xb1\x78",
-+ [12404] = "\xb1\x79", [12405] = "\xd0\xfc", [12406] = "\xb1\x7a",
-+ [12410] = "\xb1\x7b", [12413] = "\xcb\xb5", [12414] = "\xb1\x7c",
-+ [12415] = "\xb1\x7d", [12416] = "\xb1\x7e", [12417] = "\xb7\xe6",
-+ [12418] = "\xb2\x21", [12419] = "\xb2\x22", [12420] = "\xb2\x23",
-+ [12422] = "\xb2\x24", [12424] = "\xbb\xb1", [12425] = "\xc8\xf7",
-+ [12426] = "\xd0\xfb", [12427] = "\xb2\x25", [12428] = "\xb2\x26",
-+ [12430] = "\xb2\x27", [12431] = "\xb2\x28", [12432] = "\xb2\x29",
-+ [12433] = "\xb2\x2a", [12434] = "\xb2\x2b", [12442] = "\xb2\x2c",
-+ [12444] = "\xba\xc5", [12445] = "\xcd\xc3", [12447] = "\xb2\x2d",
-+ [12448] = "\xb2\x2e", [12450] = "\xd0\xfe", [12451] = "\xd1\xa3",
-+ [12452] = "\xd0\xfd", [12453] = "\xba\xc4", [12455] = "\xbd\xfd",
-+ [12457] = "\xb2\x2f", [12458] = "\xb2\x30", [12461] = "\xb2\x31",
-+ [12462] = "\xb7\xb9", [12464] = "\xb2\x32", [12466] = "\xd1\xa4",
-+ [12467] = "\xb2\x33", [12468] = "\xb2\x34", [12469] = "\xb6\xcf",
-+ [12471] = "\xb2\x35", [12473] = "\xd1\xa1", [12474] = "\xd1\xa2",
-+ [12476] = "\xb2\x36", [12477] = "\xc6\xaf", [12478] = "\xb2\x37",
-+ [12479] = "\xc1\xfc", [12480] = "\xb2\x38", [12481] = "\xb6\xa3",
-+ [12483] = "\xb2\x39", [12484] = "\xb2\x3a", [12485] = "\xcb\xcd",
-+ [12486] = "\xd1\xa5", [12488] = "\xb2\x3b", [12490] = "\xce\xbd",
-+ [12492] = "\xb2\x3c", [12493] = "\xb2\x3d", [12494] = "\xd1\xa6",
-+ [12495] = "\xb2\x3e", [12498] = "\xb2\x3f", [12499] = "\xd1\xa9",
-+ [12500] = "\xb2\x40", [12501] = "\xd1\xa7", [12502] = "\xb2\x41",
-+ [12503] = "\xc1\xce", [12504] = "\xb2\x42", [12505] = "\xb2\x43",
-+ [12509] = "\xd1\xa8", [12510] = "\xd1\xaa", [12511] = "\xb2\x44",
-+ [12513] = "\xb2\x45", [12514] = "\xb2\x51", [12516] = "\xf4\x30",
-+ [12517] = "\xd1\xac", [12518] = "\xb2\x46", [12521] = "\xd1\xab",
-+ [12522] = "\xb2\x47", [12523] = "\xca\xc8", [12526] = "\xb2\x48",
-+ [12528] = "\xb5\xb7", [12529] = "\xd1\xae", [12530] = "\xd1\xaf",
-+ [12531] = "\xb2\x49", [12532] = "\xb2\xaf", [12534] = "\xb2\x4a",
-+ [12535] = "\xb2\x4b", [12536] = "\xb2\x4c", [12537] = "\xd1\xad",
-+ [12539] = "\xb2\x4d", [12540] = "\xb2\x4e", [12541] = "\xb2\x4f",
-+ [12542] = "\xb2\x50", [12544] = "\xb2\x52", [12546] = "\xbc\xf4",
-+ [12548] = "\xd1\xb2", [12549] = "\xd1\xb1", [12550] = "\xd1\xb0",
-+ [12551] = "\xb2\x53", [12552] = "\xd0\xd6", [12553] = "\xb2\x54",
-+ [12554] = "\xd1\xb3", [12555] = "\xb2\x55", [12556] = "\xb2\x56",
-+ [12557] = "\xb2\x57", [12558] = "\xb2\x58", [12559] = "\xbd\xfe",
-+ [12561] = "\xd1\xb4", [12563] = "\xb2\x59", [12567] = "\xb2\x5a",
-+ [12568] = "\xb2\x5b", [12570] = "\xcd\xa5", [12572] = "\xb2\x5c",
-+ [12573] = "\xb2\x5d", [12575] = "\xb2\x5e", [12577] = "\xb2\x5f",
-+ [12578] = "\xcc\xd9", [12579] = "\xb2\x60", [12580] = "\xb2\x61",
-+ [12581] = "\xb2\x62", [12583] = "\xd1\xb6", [12584] = "\xb2\x63",
-+ [12585] = "\xb2\x64", [12586] = "\xd1\xb5", [12587] = "\xd1\xb8",
-+ [12588] = "\xd1\xb7", [12591] = "\xd1\xb9", [12592] = "\xd1\xba",
-+ [12593] = "\xb0\xf4", [12594] = "\xb2\x65", [12595] = "\xb8\xb5",
-+ [12596] = "\xb7\xbb", [12597] = "\xbd\xbc", [12598] = "\xc3\xfb",
-+ [12599] = "\xb6\xa4", [12600] = "\xc0\xe8", [12601] = "\xb8\xf7",
-+ [12602] = "\xb2\x66", [12603] = "\xb9\xee", [12604] = "\xd1\xbc",
-+ [12605] = "\xcc\xc8", [12606] = "\xc5\xc6", [12607] = "\xb2\x67",
-+ [12608] = "\xbb\xf9", [12610] = "\xd1\xbb", [12611] = "\xb2\x68",
-+ [12612] = "\xd1\xbd", [12613] = "\xb2\x69", [12615] = "\xb2\x6a",
-+ [12616] = "\xb2\x6b", [12618] = "\xc5\xde", [12620] = "\xb3\xf5",
-+ [12623] = "\xb2\x6c", [12626] = "\xd1\xbe", [12628] = "\xb2\x6d",
-+ [12629] = "\xc6\xfe", [12630] = "\xb2\x6e", [12632] = "\xc1\xb4",
-+ [12633] = "\xd1\xc0", [12634] = "\xd1\xc1", [12635] = "\xc8\xac",
-+ [12636] = "\xb8\xf8", [12637] = "\xcf\xbb", [12638] = "\xd1\xc2",
-+ [12641] = "\xb6\xa6", [12645] = "\xca\xbc", [12646] = "\xc2\xb6",
-+ [12647] = "\xb6\xf1", [12648] = "\xc5\xb5", [12652] = "\xb7\xf3",
-+ [12654] = "\xb2\x6f", [12656] = "\xd1\xc3", [12658] = "\xd1\xc4",
-+ [12659] = "\xb2\x70", [12660] = "\xb2\x71", [12661] = "\xc6\xe2",
-+ [12662] = "\xb1\xdf", [12665] = "\xd1\xc7", [12666] = "\xba\xfd",
-+ [12667] = "\xb2\x72", [12668] = "\xd1\xc6", [12669] = "\xba\xc6",
-+ [12670] = "\xb2\x73", [12671] = "\xd1\xc8", [12672] = "\xe6\xee",
-+ [12673] = "\xd1\xc9", [12674] = "\xcb\xc1", [12675] = "\xd1\xca",
-+ [12677] = "\xd1\xcb", [12678] = "\xd1\xcc", [12679] = "\xbe\xe9",
-+ [12680] = "\xb2\x74", [12681] = "\xbc\xcc", [12685] = "\xb2\x75",
-+ [12688] = "\xb4\xa7", [12689] = "\xb2\x76", [12690] = "\xd1\xcf",
-+ [12691] = "\xb2\x77", [12692] = "\xd1\xcd", [12693] = "\xcc\xbd",
-+ [12694] = "\xd1\xce", [12696] = "\xc9\xda", [12697] = "\xd1\xd0",
-+ [12698] = "\xd1\xd1", [12699] = "\xd1\xd2", [12700] = "\xc5\xdf",
-+ [12701] = "\xb2\x78", [12704] = "\xd1\xd6", [12705] = "\xd1\xd4",
-+ [12706] = "\xd1\xd5", [12707] = "\xd1\xd3", [12708] = "\xba\xe3",
-+ [12709] = "\xd1\xd7", [12710] = "\xcc\xea", [12711] = "\xce\xe4",
-+ [12712] = "\xb2\x79", [12714] = "\xb2\x7a", [12716] = "\xb2\x7b",
-+ [12717] = "\xd1\xd8", [12718] = "\xb2\x7c", [12719] = "\xb2\x7d",
-+ [12722] = "\xb2\x7e", [12724] = "\xc0\xa8", [12725] = "\xd1\xd9",
-+ [12726] = "\xbd\xda", [12728] = "\xb3\x21", [12729] = "\xd1\xda",
-+ [12731] = "\xc3\xfc", [12732] = "\xce\xbf", [12733] = "\xc5\xe0",
-+ [12735] = "\xb3\x22", [12737] = "\xb3\x23", [12738] = "\xb3\x24",
-+ [12739] = "\xb3\x25", [12741] = "\xb3\x26", [12742] = "\xd2\xc5",
-+ [12744] = "\xb3\x27", [12747] = "\xd1\xdb", [12748] = "\xf4\xa5",
-+ [12749] = "\xb6\xc5", [12750] = "\xb3\x28", [12752] = "\xd1\xdc",
-+ [12753] = "\xcb\xde", [12754] = "\xb3\x29", [12757] = "\xb3\x2a",
-+ [12758] = "\xbd\xe8", [12759] = "\xc2\xfc", [12761] = "\xd1\xde",
-+ [12762] = "\xc6\xe4", [12764] = "\xf4\x31", [12765] = "\xd1\xdf",
-+ [12766] = "\xb3\x2b", [12768] = "\xd1\xe0", [12769] = "\xb3\xae",
-+ [12770] = "\xb3\x2c", [12771] = "\xb3\x2d", [12772] = "\xb3\x2e",
-+ [12773] = "\xd1\xe1", [12774] = "\xb6\xa7", [12775] = "\xb3\x2f",
-+ [12776] = "\xc6\xcc", [12777] = "\xb1\xfa", [12778] = "\xbd\xd0",
-+ [12781] = "\xc8\xa1", [12782] = "\xd1\xe2", [12784] = "\xc5\xe1",
-+ [12785] = "\xb3\x30", [12786] = "\xb3\x31", [12787] = "\xbf\xcf",
-+ [12788] = "\xd1\xe3", [12789] = "\xb3\x32", [12790] = "\xca\xac",
-+ [12791] = "\xc0\xda", [12792] = "\xb4\xa2", [12794] = "\xb4\xa9",
-+ [12795] = "\xd1\xe4", [12798] = "\xd1\xe6", [12801] = "\xb7\xba",
-+ [12802] = "\xb3\x33", [12803] = "\xb3\x34", [12804] = "\xd1\xe5",
-+ [12805] = "\xb3\x35", [12806] = "\xb3\x36", [12807] = "\xce\xf3",
-+ [12808] = "\xb3\x37", [12813] = "\xbd\xe9", [12818] = "\xb3\x38",
-+ [12820] = "\xc8\xbd", [12821] = "\xca\xcc", [12823] = "\xd1\xe7",
-+ [12824] = "\xb3\x39", [12825] = "\xcd\xf8", [12826] = "\xd1\xe8",
-+ [12830] = "\xd1\xe9", [12832] = "\xc5\xfe", [12833] = "\xb3\x3a",
-+ [12834] = "\xb3\x3b", [12835] = "\xd1\xea", [12837] = "\xb3\x3c",
-+ [12838] = "\xc0\xa9", [12839] = "\xba\xfe", [12840] = "\xb7\xf4",
-+ [12841] = "\xd1\xeb", [12842] = "\xbb\xc9", [12843] = "\xb9\xef",
-+ [12844] = "\xb3\x3d", [12851] = "\xc4\xe6", [12852] = "\xd1\xed",
-+ [12853] = "\xb3\x3e", [12855] = "\xc2\xa7", [12857] = "\xb3\x3f",
-+ [12858] = "\xba\xef", [12859] = "\xd1\xee", [12860] = "\xd1\xef",
-+ [12861] = "\xc1\xb0", [12863] = "\xd1\xec", [12868] = "\xd1\xf1",
-+ [12869] = "\xb3\x40", [12870] = "\xcb\xb6", [12871] = "\xb3\x41",
-+ [12872] = "\xb3\x42", [12874] = "\xb3\x43", [12875] = "\xb9\xe4",
-+ [12876] = "\xb3\x44", [12878] = "\xd1\xf0", [12879] = "\xb3\x45",
-+ [12880] = "\xb3\x46", [12881] = "\xb3\x47", [12883] = "\xb7\xf5",
-+ [12884] = "\xba\xde", [12885] = "\xc7\xed", [12886] = "\xb3\x48",
-+ [12889] = "\xd1\xf4", [12890] = "\xd1\xf2", [12894] = "\xb3\x49",
-+ [12895] = "\xc9\xfb", [12896] = "\xbe\xea", [12897] = "\xd1\xfb",
-+ [12898] = "\xb3\xe4", [12899] = "\xd1\xf5", [12900] = "\xd1\xf3",
-+ [12901] = "\xc1\xcf", [12903] = "\xb3\x4a", [12904] = "\xb3\x4b",
-+ [12905] = "\xb3\x4c", [12909] = "\xd1\xf7", [12911] = "\xd1\xf6",
-+ [12912] = "\xb3\x4d", [12914] = "\xb3\x4e", [12915] = "\xb3\xc4",
-+ [12917] = "\xb3\x4f", [12919] = "\xb7\xe0", [12920] = "\xd1\xfc",
-+ [12921] = "\xce\xad", [12922] = "\xb3\x50", [12924] = "\xb3\x51",
-+ [12925] = "\xd1\xf8", [12929] = "\xd1\xfd", [12930] = "\xd1\xfa",
-+ [12931] = "\xb3\x52", [12932] = "\xd1\xf9", [12933] = "\xb3\x53",
-+ [12934] = "\xb3\x54", [12935] = "\xb3\x55", [12936] = "\xb3\x56",
-+ [12938] = "\xb3\x57", [12939] = "\xce\xcf", [12940] = "\xb3\x58",
-+ [12943] = "\xb8\xf9", [12944] = "\xb2\xc3", [12947] = "\xce\xf4",
-+ [12948] = "\xb3\x59", [12949] = "\xb3\x5a", [12950] = "\xb3\x5b",
-+ [12951] = "\xb3\x5c", [12953] = "\xbd\xf5", [12954] = "\xc5\xd8",
-+ [12955] = "\xb9\xe5", [12956] = "\xd2\xa2", [12957] = "\xd2\xa3",
-+ [12959] = "\xb3\x5d", [12960] = "\xb3\x5e", [12961] = "\xce\xe5",
-+ [12964] = "\xcf\xab", [12965] = "\xd2\xa5", [12966] = "\xb3\x5f",
-+ [12967] = "\xb3\x60", [12968] = "\xb3\x61", [12969] = "\xb8\xfa",
-+ [12970] = "\xb3\x62", [12971] = "\xb3\x63", [12972] = "\xd2\xa4",
-+ [12973] = "\xb3\x64", [12974] = "\xb3\xaf", [12976] = "\xb3\x65",
-+ [12977] = "\xd2\xa6", [12979] = "\xcb\xd6", [12980] = "\xb3\x66",
-+ [12981] = "\xc4\xbc", [12982] = "\xb3\x67", [12983] = "\xcd\xa6",
-+ [12984] = "\xb3\x68", [12985] = "\xca\xd9", [12988] = "\xb3\x69",
-+ [12989] = "\xd2\xa7", [12991] = "\xb3\x6a", [12993] = "\xb3\x6b",
-+ [12994] = "\xf0\xd5", [12996] = "\xb3\x6c", [12997] = "\xc6\xb0",
-+ [12998] = "\xb3\x6d", [12999] = "\xd2\xa8", [13000] = "\xb4\xaa",
-+ [13001] = "\xcc\xb3", [13003] = "\xb3\x6e", [13004] = "\xb3\x6f",
-+ [13005] = "\xbe\xa1", [13006] = "\xd2\xa9", [13007] = "\xca\xe7",
-+ [13008] = "\xd2\xad", [13009] = "\xb3\x70", [13010] = "\xc0\xaa",
-+ [13011] = "\xd2\xaa", [13012] = "\xb6\xd0", [13013] = "\xb3\x71",
-+ [13014] = "\xd2\xab", [13015] = "\xb4\xab", [13016] = "\xb3\x72",
-+ [13017] = "\xb3\x73", [13018] = "\xb3\x74", [13020] = "\xb3\x75",
-+ [13024] = "\xb3\x76", [13025] = "\xb3\x77", [13026] = "\xb7\xae",
-+ [13027] = "\xd2\xae", [13028] = "\xb3\x78", [13029] = "\xd2\xaf",
-+ [13030] = "\xb3\x79", [13031] = "\xb3\x7a", [13032] = "\xd2\xb0",
-+ [13033] = "\xd2\xb1", [13034] = "\xbc\xdb", [13038] = "\xb8\xfb",
-+ [13039] = "\xcc\xde", [13040] = "\xb3\x7b", [13041] = "\xcc\xe8",
-+ [13042] = "\xc6\xf7", [13043] = "\xb3\x7c", [13045] = "\xca\xf1",
-+ [13046] = "\xd2\xb2", [13047] = "\xf4\x32", [13048] = "\xd2\xb3",
-+ [13050] = "\xb3\x7d", [13051] = "\xb3\x7e", [13052] = "\xb4\x21",
-+ [13053] = "\xd2\xb5", [13055] = "\xd2\xb7", [13056] = "\xd2\xb6",
-+ [13057] = "\xb4\x22", [13059] = "\xb4\x23", [13061] = "\xd2\xb8",
-+ [13062] = "\xb2\xbd", [13063] = "\xcb\xcc", [13064] = "\xb4\x24",
-+ [13065] = "\xba\xfc", [13066] = "\xd2\xb9", [13067] = "\xb4\x25",
-+ [13068] = "\xb4\x26", [13069] = "\xc1\xd9", [13070] = "\xb4\x27",
-+ [13071] = "\xb4\x28", [13072] = "\xbe\xa2", [13073] = "\xb6\xa9",
-+ [13075] = "\xd2\xba", [13076] = "\xf4\x33", [13077] = "\xb4\x29",
-+ [13079] = "\xb4\x2a", [13080] = "\xb4\x2b", [13081] = "\xb4\x2c",
-+ [13082] = "\xc8\xdb", [13083] = "\xb4\x2d", [13084] = "\xb4\x2e",
-+ [13085] = "\xb4\x2f", [13087] = "\xd2\xbb", [13088] = "\xb4\x30",
-+ [13089] = "\xd2\xbc", [13090] = "\xb4\x31", [13091] = "\xd2\xbd",
-+ [13093] = "\xb4\x32", [13096] = "\xd2\xbe", [13097] = "\xc9\xa4",
-+ [13098] = "\xb6\xe8", [13099] = "\xb0\xe5", [13100] = "\xb4\x33",
-+ [13101] = "\xb4\x34", [13102] = "\xb4\x35", [13103] = "\xc6\xbf",
-+ [13104] = "\xd2\xbf", [13105] = "\xbd\xbd", [13106] = "\xb4\x36",
-+ [13107] = "\xc0\xe9", [13109] = "\xd2\xc1", [13110] = "\xd2\xc0",
-+ [13111] = "\xbe\xa3", [13112] = "\xb8\xe1", [13113] = "\xd2\xc3",
-+ [13114] = "\xc8\xbe", [13115] = "\xb4\x38", [13116] = "\xb4\x37",
-+ [13117] = "\xd2\xc4", [13121] = "\xc8\xdc", [13122] = "\xc2\xb4",
-+ [13123] = "\xc2\xee", [13124] = "\xb6\xa8", [13127] = "\xc6\xee",
-+ [13128] = "\xc3\xb1", [13129] = "\xb4\x39", [13130] = "\xc7\xee",
-+ [13131] = "\xb4\x3a", [13132] = "\xcb\xce", [13134] = "\xd2\xc6",
-+ [13136] = "\xc0\xea", [13137] = "\xb4\x3b", [13139] = "\xb4\x3c",
-+ [13141] = "\xb4\x3d", [13142] = "\xb7\xb5", [13145] = "\xd2\xc7",
-+ [13148] = "\xb4\x3e", [13149] = "\xb4\x3f", [13150] = "\xd2\xc8",
-+ [13151] = "\xb1\xac", [13152] = "\xb0\xf5", [13153] = "\xb4\xed",
-+ [13154] = "\xb4\x40", [13155] = "\xc2\xa8", [13156] = "\xb5\xd1",
-+ [13157] = "\xcd\xf1", [13159] = "\xd2\xcb", [13160] = "\xb2\xb7",
-+ [13161] = "\xb4\x41", [13163] = "\xd2\xca", [13166] = "\xb4\x42",
-+ [13167] = "\xb6\xaa", [13170] = "\xd2\xcc", [13171] = "\xb4\x43",
-+ [13172] = "\xcc\xf1", [13175] = "\xb4\x44", [13176] = "\xb4\x45",
-+ [13182] = "\xb4\x46", [13187] = "\xb4\x47", [13188] = "\xb4\x48",
-+ [13190] = "\xd2\xcd", [13192] = "\xce\xd2", [13193] = "\xb4\x49",
-+ [13194] = "\xb8\xfc", [13197] = "\xb4\x4a", [13199] = "\xb8\xb6",
-+ [13200] = "\xd2\xce", [13201] = "\xb4\x4b", [13204] = "\xb4\x4c",
-+ [13205] = "\xd2\xd0", [13206] = "\xd2\xcf", [13208] = "\xbf\xdf",
-+ [13209] = "\xb1\xb9", [13210] = "\xb4\x4d", [13211] = "\xb4\x4e",
-+ [13213] = "\xb1\xde", [13214] = "\xd2\xd1", [13215] = "\xb4\x4f",
-+ [13216] = "\xd2\xd2", [13218] = "\xb4\x50", [13219] = "\xb8\xb7",
-+ [13220] = "\xb4\x51", [13221] = "\xb4\x52", [13222] = "\xd2\xd3",
-+ [13223] = "\xb4\x53", [13224] = "\xb4\x54", [13226] = "\xb4\x55",
-+ [13227] = "\xb5\xee", [13229] = "\xb4\x56", [13232] = "\xb4\x57",
-+ [13234] = "\xbb\xb2", [13235] = "\xd2\xd4", [13237] = "\xb4\x58",
-+ [13240] = "\xcb\xf4", [13241] = "\xba\xb5", [13242] = "\xb5\xda",
-+ [13243] = "\xcd\xa7", [13244] = "\xc1\xd0", [13245] = "\xc8\xbf",
-+ [13246] = "\xbc\xfd", [13247] = "\xb4\x59", [13250] = "\xb4\x5a",
-+ [13251] = "\xb4\x5b", [13252] = "\xbd\xc7", [13253] = "\xb4\x5c",
-+ [13254] = "\xbc\xe8", [13255] = "\xbc\xf5", [13257] = "\xbd\xf6",
-+ [13258] = "\xb4\x5d", [13259] = "\xc8\xc0", [13261] = "\xb4\x5e",
-+ [13262] = "\xb4\x5f", [13263] = "\xd2\xd7", [13264] = "\xb4\x60",
-+ [13265] = "\xb1\xc3", [13266] = "\xc1\xd1", [13267] = "\xb8\xfd",
-+ [13268] = "\xb8\xc5", [13269] = "\xb6\xe7", [13270] = "\xb4\x61",
-+ [13271] = "\xb4\x62", [13272] = "\xd2\xdb", [13273] = "\xc3\xa1",
-+ [13274] = "\xc2\xfe", [13275] = "\xb6\xab", [13276] = "\xbe\xa4",
-+ [13277] = "\xd2\xdc", [13278] = "\xd2\xda", [13279] = "\xb2\xc4",
-+ [13280] = "\xc2\xe6", [13281] = "\xbc\xb8", [13282] = "\xbb\xcb",
-+ [13283] = "\xb1\xa6", [13285] = "\xb4\x63", [13286] = "\xb3\xf0",
-+ [13287] = "\xb9\xe6", [13288] = "\xbb\xca", [13290] = "\xd2\xdd",
-+ [13297] = "\xd2\xde", [13298] = "\xb4\x64", [13299] = "\xb5\xc9",
-+ [13300] = "\xb3\xc6", [13304] = "\xb9\xe7", [13305] = "\xb5\xc8",
-+ [13306] = "\xc4\xdf", [13307] = "\xb1\xa5", [13308] = "\xc6\xb1",
-+ [13309] = "\xcc\xbe", [13310] = "\xb9\xa1", [13311] = "\xcd\xf9",
-+ [13312] = "\xc5\xc7", [13313] = "\xb8\xfe", [13315] = "\xb4\x65",
-+ [13322] = "\xb4\x66", [13323] = "\xb7\xaf", [13325] = "\xd2\xe7",
-+ [13327] = "\xb6\xe3", [13328] = "\xcb\xca", [13329] = "\xb4\x67",
-+ [13334] = "\xc8\xdd", [13335] = "\xb4\x68", [13336] = "\xb4\x69",
-+ [13337] = "\xd2\xe6", [13338] = "\xb4\x6a", [13339] = "\xb4\xde",
-+ [13340] = "\xd2\xe1", [13341] = "\xd2\xe2", [13342] = "\xd2\xe4",
-+ [13343] = "\xb4\x6b", [13345] = "\xb4\x6c", [13348] = "\xb4\x6d",
-+ [13349] = "\xb4\x6e", [13350] = "\xd2\xe5", [13352] = "\xb5\xdb",
-+ [13353] = "\xbf\xe1", [13355] = "\xca\xad", [13356] = "\xd2\xe3",
-+ [13357] = "\xd2\xdf", [13358] = "\xb8\xe3", [13360] = "\xd2\xe0",
-+ [13362] = "\xcf\xa4", [13363] = "\xb4\x6f", [13364] = "\xb4\x70",
-+ [13366] = "\xca\xf2", [13367] = "\xb4\x71", [13368] = "\xc4\xe8",
-+ [13369] = "\xb8\xe2", [13370] = "\xb9\xf0", [13373] = "\xb4\x72",
-+ [13374] = "\xd2\xe8", [13375] = "\xb4\x73", [13377] = "\xc6\xdd",
-+ [13390] = "\xb4\x74", [13391] = "\xd2\xec", [13394] = "\xb4\x75",
-+ [13396] = "\xb4\x76", [13398] = "\xb4\x77", [13399] = "\xb4\x78",
-+ [13400] = "\xbc\xfe", [13401] = "\xb4\x79", [13402] = "\xbc\xf6",
-+ [13403] = "\xb4\x7a", [13405] = "\xb4\x7b", [13406] = "\xb4\x7c",
-+ [13408] = "\xd2\xef", [13409] = "\xd2\xed", [13411] = "\xcc\xa3",
-+ [13412] = "\xb4\x7d", [13413] = "\xd2\xea", [13414] = "\xd2\xf3",
-+ [13415] = "\xd2\xee", [13419] = "\xd2\xf1", [13420] = "\xb8\xc6",
-+ [13421] = "\xcc\xbf", [13423] = "\xb4\x7e", [13424] = "\xd2\xf2",
-+ [13425] = "\xb5\x21", [13427] = "\xb5\x22", [13428] = "\xd2\xf4",
-+ [13429] = "\xb5\x23", [13430] = "\xd2\xf6", [13432] = "\xb5\x24",
-+ [13433] = "\xb5\x25", [13434] = "\xf4\x35", [13435] = "\xba\xf0",
-+ [13436] = "\xcf\xc2", [13437] = "\xb5\x26", [13438] = "\xd2\xeb",
-+ [13439] = "\xd2\xe9", [13440] = "\xd2\xf5", [13441] = "\xb5\x27",
-+ [13442] = "\xd2\xf0", [13445] = "\xb5\x28", [13446] = "\xb5\x29",
-+ [13452] = "\xb5\x2a", [13455] = "\xb5\x2b", [13457] = "\xb5\x2c",
-+ [13458] = "\xd2\xf8", [13460] = "\xd3\xa3", [13461] = "\xd2\xfa",
-+ [13462] = "\xb5\x2d", [13463] = "\xb5\x2e", [13464] = "\xd2\xfe",
-+ [13465] = "\xb5\x2f", [13466] = "\xb5\x30", [13467] = "\xd3\xa1",
-+ [13468] = "\xd2\xfb", [13469] = "\xb5\x31", [13470] = "\xb5\x32",
-+ [13471] = "\xd3\xbe", [13473] = "\xb5\x33", [13474] = "\xba\xe9",
-+ [13475] = "\xb3\xb1", [13479] = "\xb5\x34", [13480] = "\xd2\xf9",
-+ [13481] = "\xb5\x35", [13482] = "\xb5\x36", [13483] = "\xb5\x37",
-+ [13484] = "\xd3\xa5", [13485] = "\xb0\xf6", [13486] = "\xd3\xa4",
-+ [13487] = "\xb5\x38", [13488] = "\xb0\xa5", [13489] = "\xc9\xca",
-+ [13490] = "\xd3\xa2", [13492] = "\xd2\xfc", [13494] = "\xb5\x39",
-+ [13495] = "\xd2\xf7", [13496] = "\xd2\xfd", [13497] = "\xba\xc8",
-+ [13498] = "\xb5\x3a", [13501] = "\xb5\x3b", [13502] = "\xb5\x3c",
-+ [13512] = "\xd3\xa6", [13520] = "\xb5\x3d", [13521] = "\xb0\xf7",
-+ [13522] = "\xd3\xaf", [13525] = "\xd3\xa7", [13526] = "\xd3\xa8",
-+ [13528] = "\xbe\xa5", [13529] = "\xcb\xe9", [13530] = "\xb5\x3e",
-+ [13532] = "\xb5\x3f", [13533] = "\xd3\xad", [13534] = "\xd3\xac",
-+ [13535] = "\xb5\x40", [13538] = "\xc5\xaf", [13542] = "\xb5\x41",
-+ [13546] = "\xd3\xae", [13548] = "\xb5\x42", [13549] = "\xd3\xab",
-+ [13550] = "\xb5\x43", [13551] = "\xb5\x44", [13552] = "\xb5\x45",
-+ [13553] = "\xb5\x46", [13556] = "\xb1\xb4", [13557] = "\xb5\x47",
-+ [13558] = "\xba\xb6", [13559] = "\xbf\xb0", [13560] = "\xb5\x48",
-+ [13561] = "\xb5\x49", [13564] = "\xb5\x4a", [13565] = "\xb5\x4b",
-+ [13566] = "\xb5\x4c", [13567] = "\xd3\xa9", [13568] = "\xc5\xe2",
-+ [13572] = "\xd3\xaa", [13573] = "\xb5\x4d", [13574] = "\xb0\xa2",
-+ [13594] = "\xb5\x4e", [13595] = "\xb5\x4f", [13598] = "\xd3\xb4",
-+ [13599] = "\xcd\xa3", [13601] = "\xbe\xa7", [13602] = "\xb5\x50",
-+ [13603] = "\xd3\xba", [13605] = "\xb5\x51", [13606] = "\xb5\x52",
-+ [13608] = "\xd3\xb9", [13609] = "\xd3\xb0", [13611] = "\xb5\x53",
-+ [13612] = "\xb5\x54", [13613] = "\xb5\x55", [13614] = "\xc2\xc3",
-+ [13616] = "\xd3\xb1", [13617] = "\xb5\x56", [13620] = "\xc2\xef",
-+ [13621] = "\xd3\xb6", [13622] = "\xbe\xa6", [13623] = "\xb5\x57",
-+ [13625] = "\xb5\x58", [13626] = "\xb5\x59", [13628] = "\xd3\xb3",
-+ [13629] = "\xb5\x5a", [13631] = "\xcc\xe4", [13632] = "\xb5\x5b",
-+ [13633] = "\xb5\x5c", [13635] = "\xb7\xbc", [13638] = "\xd3\xb7",
-+ [13639] = "\xd3\xb8", [13640] = "\xb5\x5d", [13642] = "\xb5\x5e",
-+ [13643] = "\xb5\x5f", [13644] = "\xd3\xb5", [13645] = "\xd3\xbb",
-+ [13646] = "\xb5\x60", [13648] = "\xb5\x61", [13649] = "\xb5\x62",
-+ [13651] = "\xd3\xb2", [13652] = "\xb5\x63", [13654] = "\xb5\x64",
-+ [13675] = "\xd3\xc1", [13676] = "\xd3\xc6", [13678] = "\xd3\xc2",
-+ [13679] = "\xb5\x65", [13680] = "\xd3\xbd", [13681] = "\xb5\x66",
-+ [13682] = "\xb5\x67", [13683] = "\xd3\xc7", [13684] = "\xc1\xb1",
-+ [13686] = "\xb5\x68", [13687] = "\xd3\xc9", [13688] = "\xb5\x69",
-+ [13689] = "\xb9\xa2", [13690] = "\xd3\xbf", [13691] = "\xc3\xfd",
-+ [13694] = "\xb5\x6a", [13695] = "\xb5\x6b", [13697] = "\xb5\x6c",
-+ [13698] = "\xb5\x6d", [13699] = "\xb5\x6e", [13700] = "\xb5\x6f",
-+ [13703] = "\xb5\x70", [13704] = "\xd3\xc3", [13705] = "\xd3\xbc",
-+ [13706] = "\xb4\xad", [13708] = "\xb4\xee", [13709] = "\xb3\xe5",
-+ [13710] = "\xd3\xc4", [13711] = "\xd3\xc0", [13715] = "\xb5\x71",
-+ [13716] = "\xb5\x72", [13719] = "\xb7\xf6", [13720] = "\xd3\xca",
-+ [13721] = "\xd3\xc8", [13722] = "\xc1\xd3", [13723] = "\xb5\xca",
-+ [13724] = "\xb6\xac", [13725] = "\xb5\x73", [13726] = "\xd3\xc5",
-+ [13728] = "\xb6\xf4", [13730] = "\xb5\x74", [13734] = "\xb1\xc4",
-+ [13743] = "\xb5\x75", [13745] = "\xb5\x76", [13747] = "\xb5\x77",
-+ [13748] = "\xd3\xce", [13749] = "\xd3\xcc", [13750] = "\xb5\x78",
-+ [13751] = "\xd4\xa7", [13753] = "\xb5\x79", [13755] = "\xb5\x7a",
-+ [13756] = "\xb5\x7b", [13758] = "\xb5\x7c", [13761] = "\xb5\x7d",
-+ [13762] = "\xb5\x7e", [13763] = "\xb6\x21", [13764] = "\xd3\xd1",
-+ [13767] = "\xb6\x22", [13768] = "\xb6\x23", [13770] = "\xd3\xcb",
-+ [13771] = "\xb6\x24", [13772] = "\xd3\xcf", [13774] = "\xb6\x25",
-+ [13775] = "\xd3\xcd", [13778] = "\xb6\x26", [13779] = "\xbb\xcc",
-+ [13780] = "\xd3\xd0", [13785] = "\xb6\x27", [13798] = "\xb6\x28",
-+ [13799] = "\xd3\xd3", [13801] = "\xd3\xd8", [13805] = "\xd3\xd6",
-+ [13806] = "\xd3\xd5", [13807] = "\xb6\x29", [13813] = "\xb6\x2a",
-+ [13814] = "\xc3\xb2", [13816] = "\xb6\x2b", [13817] = "\xb2\xc5",
-+ [13818] = "\xb6\x2c", [13821] = "\xb6\x2d", [13822] = "\xb6\x2e",
-+ [13823] = "\xb6\x2f", [13824] = "\xb6\x30", [13825] = "\xb6\x31",
-+ [13826] = "\xb6\x32", [13828] = "\xd3\xd2", [13830] = "\xd3\xd4",
-+ [13831] = "\xbe\xa8", [13832] = "\xb1\xb3", [13833] = "\xb6\x33",
-+ [13835] = "\xd3\xd7", [13849] = "\xb2\xde", [13852] = "\xb6\x34",
-+ [13855] = "\xd3\xe2", [13856] = "\xb6\x35", [13857] = "\xbe\xfc",
-+ [13858] = "\xd3\xde", [13859] = "\xb6\x36", [13860] = "\xd3\xdc",
-+ [13861] = "\xb6\x37", [13862] = "\xd3\xdd", [13863] = "\xb6\x38",
-+ [13864] = "\xd3\xdf", [13865] = "\xb6\x39", [13867] = "\xb6\x3a",
-+ [13868] = "\xb6\x3b", [13869] = "\xb6\x3c", [13871] = "\xb6\x3d",
-+ [13872] = "\xb6\x3e", [13873] = "\xb6\x3f", [13874] = "\xb1\xbd",
-+ [13875] = "\xb6\x40", [13876] = "\xb6\x41", [13878] = "\xb6\x42",
-+ [13881] = "\xb6\x43", [13883] = "\xb6\x44", [13884] = "\xc1\xb9",
-+ [13885] = "\xb6\x45", [13886] = "\xd3\xd9", [13887] = "\xb6\x46",
-+ [13888] = "\xd3\xda", [13892] = "\xb6\x47", [13899] = "\xb3\xfa",
-+ [13902] = "\xb6\x48", [13904] = "\xb6\x49", [13905] = "\xb6\x4a",
-+ [13906] = "\xb6\x4b", [13907] = "\xb6\x4c", [13908] = "\xd3\xe1",
-+ [13910] = "\xb6\x4d", [13912] = "\xb4\xef", [13913] = "\xb6\x4e",
-+ [13914] = "\xd3\xe4", [13915] = "\xd3\xe0", [13916] = "\xd3\xe3",
-+ [13917] = "\xb6\x4f", [13919] = "\xb6\x50", [13921] = "\xb6\x51",
-+ [13922] = "\xb6\x52", [13924] = "\xca\xae", [13925] = "\xb6\x53",
-+ [13928] = "\xc6\xd5", [13930] = "\xc8\xb8", [13936] = "\xd3\xe6",
-+ [13940] = "\xb6\x54", [13941] = "\xb6\x55", [13942] = "\xd3\xe5",
-+ [13943] = "\xb3\xc5", [13944] = "\xb6\x56", [13946] = "\xd3\xe7",
-+ [13947] = "\xb6\x57", [13948] = "\xb6\x58", [13951] = "\xd3\xea",
-+ [13956] = "\xd3\xe9", [13957] = "\xb6\x59", [13961] = "\xb6\x5a",
-+ [13962] = "\xb6\x5b", [13965] = "\xb6\x5c", [13966] = "\xb6\x5d",
-+ [13967] = "\xb6\x5e", [13968] = "\xd3\xe8", [13970] = "\xc7\xb9",
-+ [13973] = "\xd3\xeb", [13974] = "\xb6\x5f", [13975] = "\xb6\x60",
-+ [13976] = "\xb6\x61", [13977] = "\xb6\x62", [13979] = "\xb6\x63",
-+ [13980] = "\xb6\x64", [13981] = "\xb6\x65", [13982] = "\xd3\xec",
-+ [13985] = "\xb6\x66", [13987] = "\xb6\x67", [13988] = "\xd3\xee",
-+ [13990] = "\xd3\xed", [13991] = "\xb6\x68", [13996] = "\xd3\xf0",
-+ [13998] = "\xb6\x69", [14000] = "\xd3\xf3", [14001] = "\xd3\xf1",
-+ [14002] = "\xd3\xef", [14003] = "\xd3\xf2", [14005] = "\xb6\x6a",
-+ [14008] = "\xd3\xf4", [14009] = "\xb6\x6b", [14010] = "\xb6\x6c",
-+ [14011] = "\xb6\x6d", [14012] = "\xb6\x70", [14013] = "\xb6\x71",
-+ [14014] = "\xd3\xf5", [14015] = "\xb6\x6e", [14016] = "\xb6\x6f",
-+ [14017] = "\xd3\xf6", [14019] = "\xd3\xf7", [14023] = "\xd3\xf8",
-+ [14024] = "\xd1\xc5", [14025] = "\xb6\x72", [14026] = "\xbc\xfc",
-+ [14027] = "\xbb\xcd", [14028] = "\xb6\x73", [14029] = "\xb6\x74",
-+ [14030] = "\xb2\xf3", [14031] = "\xb6\x75", [14032] = "\xb0\xf8",
-+ [14033] = "\xb6\x76", [14035] = "\xc3\xc4", [14036] = "\xb6\x77",
-+ [14037] = "\xb6\x78", [14038] = "\xb6\x79", [14039] = "\xb6\x7a",
-+ [14040] = "\xb6\x7b", [14043] = "\xb6\x7d", [14045] = "\xb6\x7e",
-+ [14046] = "\xd3\xf9", [14048] = "\xba\xa4", [14049] = "\xb6\x7c",
-+ [14050] = "\xb0\xcf", [14051] = "\xbf\xde", [14054] = "\xb7\x21",
-+ [14055] = "\xb7\x22", [14057] = "\xd3\xfa", [14058] = "\xb8\xc7",
-+ [14061] = "\xb9\xf1", [14063] = "\xd3\xfc", [14064] = "\xd3\xfb",
-+ [14065] = "\xb7\x23", [14066] = "\xb7\x24", [14067] = "\xca\xe0",
-+ [14068] = "\xd3\xfd", [14071] = "\xb7\x25", [14072] = "\xd4\xa1",
-+ [14073] = "\xd3\xfe", [14074] = "\xb7\x26", [14075] = "\xd4\xa2",
-+ [14076] = "\xb7\x27", [14077] = "\xd4\xa3", [14079] = "\xb7\xf7",
-+ [14081] = "\xb7\x28", [14082] = "\xb1\xe0", [14083] = "\xd4\xa4",
-+ [14085] = "\xb7\x29", [14086] = "\xd4\xa6", [14088] = "\xd4\xa5",
-+ [14090] = "\xb7\x2a", [14091] = "\xb7\x2b", [14092] = "\xd4\xa8",
-+ [14093] = "\xb7\x2c", [14095] = "\xc5\xda", [14096] = "\xb7\x2d",
-+ [14098] = "\xb7\x2e", [14099] = "\xb7\x2f", [14100] = "\xb7\x30",
-+ [14101] = "\xb7\x31", [14102] = "\xd4\xa9", [14103] = "\xb0\xb5",
-+ [14104] = "\xba\xdf", [14105] = "\xb7\x32", [14106] = "\xb7\x33",
-+ [14108] = "\xb7\x34", [14109] = "\xb7\xbd", [14110] = "\xb7\x35",
-+ [14111] = "\xb7\x36", [14112] = "\xc3\xcf", [14115] = "\xb7\x37",
-+ [14116] = "\xb7\x38", [14119] = "\xd4\xaa", [14120] = "\xd4\xab",
-+ [14123] = "\xd4\xad", [14125] = "\xb7\x39", [14126] = "\xb7\x3a",
-+ [14127] = "\xb7\x3b", [14128] = "\xd4\xae", [14130] = "\xba\xe4",
-+ [14133] = "\xb7\x3c", [14134] = "\xb7\x3d", [14135] = "\xb6\xd1",
-+ [14138] = "\xcb\xb7", [14140] = "\xb7\x3e", [14141] = "\xb7\x3f",
-+ [14142] = "\xd4\xac", [14143] = "\xd4\xaf", [14144] = "\xba\xc1",
-+ [14145] = "\xb9\xa3", [14146] = "\xb7\x40", [14153] = "\xf4\x36",
-+ [14161] = "\xd4\xb3", [14162] = "\xb7\x41", [14164] = "\xba\xa5",
-+ [14165] = "\xb7\x42", [14166] = "\xc3\xb3", [14167] = "\xb7\x43",
-+ [14168] = "\xb7\x44", [14169] = "\xd4\xb0", [14170] = "\xc4\xda",
-+ [14171] = "\xb7\x45", [14173] = "\xb7\x46", [14174] = "\xb7\x47",
-+ [14175] = "\xb7\x48", [14176] = "\xb7\x49", [14177] = "\xb7\x4a",
-+ [14179] = "\xb7\x4b", [14180] = "\xb7\x4c", [14181] = "\xb7\x4d",
-+ [14183] = "\xb7\x4e", [14185] = "\xb7\x4f", [14186] = "\xb7\x50",
-+ [14187] = "\xb7\x51", [14188] = "\xb7\x52", [14190] = "\xb7\x53",
-+ [14191] = "\xd4\xb4", [14193] = "\xb7\x54", [14194] = "\xbf\xe2",
-+ [14195] = "\xb7\x55", [14200] = "\xd4\xb2", [14201] = "\xd4\xb5",
-+ [14203] = "\xb7\xbf", [14204] = "\xb7\x56", [14211] = "\xd4\xb6",
-+ [14212] = "\xb7\x57", [14213] = "\xb7\x60", [14215] = "\xb7\x58",
-+ [14217] = "\xb7\x59", [14218] = "\xb7\x5a", [14220] = "\xb7\x5b",
-+ [14221] = "\xb7\x5c", [14222] = "\xb7\x5d", [14223] = "\xb7\x5e",
-+ [14224] = "\xd4\xb7", [14225] = "\xb7\x5f", [14226] = "\xb9\xa4",
-+ [14227] = "\xb3\xc0", [14228] = "\xd4\xb9", [14231] = "\xb7\x61",
-+ [14232] = "\xb7\x62", [14233] = "\xb7\x63", [14234] = "\xd4\xba",
-+ [14236] = "\xb7\x64", [14240] = "\xd4\xbb", [14243] = "\xd4\xb8",
-+ [14248] = "\xb7\x65", [14253] = "\xb7\x66", [14256] = "\xd4\xb1",
-+ [14259] = "\xd4\xbc", [14262] = "\xd4\xbd", [14263] = "\xb7\x67",
-+ [14264] = "\xb7\x68", [14267] = "\xcb\xe4", [14268] = "\xb7\x69",
-+ [14270] = "\xbe\xeb", [14271] = "\xb7\x6a", [14274] = "\xd4\xbf",
-+ [14275] = "\xd4\xc0", [14276] = "\xd4\xbe", [14277] = "\xb7\x6b",
-+ [14278] = "\xd4\xc2", [14284] = "\xc7\xb8", [14285] = "\xb7\x6c",
-+ [14286] = "\xb7\x6d", [14287] = "\xb0\xe8", [14288] = "\xc9\xd6",
-+ [14289] = "\xb7\x7e", [14291] = "\xd4\xc3", [14292] = "\xb7\x6e",
-+ [14294] = "\xb7\x6f", [14295] = "\xb7\x70", [14297] = "\xb7\x71",
-+ [14301] = "\xb7\x72", [14304] = "\xb7\x73", [14308] = "\xbe\xfd",
-+ [14309] = "\xb7\x74", [14310] = "\xb7\x75", [14311] = "\xbc\xb9",
-+ [14312] = "\xb7\x76", [14313] = "\xc7\xdd", [14314] = "\xb4\xf0",
-+ [14316] = "\xba\xeb", [14317] = "\xb7\x77", [14318] = "\xb7\x78",
-+ [14319] = "\xb7\x79", [14320] = "\xcb\xd9", [14322] = "\xc6\xb2",
-+ [14323] = "\xb7\x7a", [14324] = "\xb7\x7b", [14325] = "\xb7\xf8",
-+ [14326] = "\xc2\xcf", [14328] = "\xb7\x7c", [14329] = "\xb7\x7d",
-+ [14330] = "\xd4\xc1", [14331] = "\xd4\xc4", [14332] = "\xb8\x21",
-+ [14333] = "\xb8\x22", [14341] = "\xc2\xc4", [14345] = "\xd4\xc5",
-+ [14347] = "\xb8\x23", [14349] = "\xd4\xc6", [14350] = "\xb8\x24",
-+ [14351] = "\xb8\x25", [14352] = "\xb8\x26", [14353] = "\xd4\xc8",
-+ [14356] = "\xc4\xe9", [14358] = "\xb8\x27", [14359] = "\xb8\x28",
-+ [14362] = "\xb4\xae", [14365] = "\xb8\x29", [14367] = "\xf4\xa1",
-+ [14368] = "\xb1\xe1", [14369] = "\xca\xf3", [14370] = "\xb8\x2a",
-+ [14372] = "\xbe\xec", [14373] = "\xc5\xc8", [14377] = "\xb8\x2b",
-+ [14378] = "\xba\xe6", [14381] = "\xd4\xce", [14383] = "\xb8\x2c",
-+ [14384] = "\xca\xbd", [14385] = "\xce\xdd", [14393] = "\xb8\x2d",
-+ [14394] = "\xb2\xf4", [14395] = "\xd4\xca", [14396] = "\xb8\x2e",
-+ [14397] = "\xb8\x2f", [14399] = "\xb8\x30", [14400] = "\xb8\x31",
-+ [14401] = "\xc1\xba", [14402] = "\xd4\xcd", [14404] = "\xc5\xe3",
-+ [14405] = "\xb8\x32", [14407] = "\xc5\xc9", [14408] = "\xc5\xe4",
-+ [14409] = "\xc8\xb9", [14410] = "\xc4\xcd", [14414] = "\xba\xc9",
-+ [14415] = "\xb8\x33", [14417] = "\xb8\x34", [14418] = "\xd4\xc9",
-+ [14420] = "\xb8\x35", [14423] = "\xb8\x36", [14424] = "\xb8\x37",
-+ [14425] = "\xb1\xf6", [14427] = "\xc5\xb6", [14432] = "\xd4\xcb",
-+ [14434] = "\xd4\xc7", [14437] = "\xbf\xd0", [14440] = "\xb8\x38",
-+ [14441] = "\xd4\xcf", [14444] = "\xb8\x39", [14446] = "\xbd\xce",
-+ [14447] = "\xb8\x3a", [14448] = "\xb8\x3b", [14449] = "\xb8\x3c",
-+ [14451] = "\xb6\xad", [14453] = "\xd4\xd0", [14455] = "\xb8\x3d",
-+ [14456] = "\xb8\x3e", [14457] = "\xb8\x3f", [14458] = "\xb8\x40",
-+ [14460] = "\xb8\x41", [14461] = "\xb8\x42", [14463] = "\xb8\x43",
-+ [14464] = "\xb8\x44", [14467] = "\xca\xe8", [14468] = "\xb8\x45",
-+ [14470] = "\xb8\x46", [14471] = "\xc1\xfd", [14476] = "\xc4\xc6",
-+ [14477] = "\xb8\x47", [14478] = "\xf4\x39", [14479] = "\xd4\xd2",
-+ [14480] = "\xb8\x48", [14481] = "\xb8\x49", [14482] = "\xb8\x4a",
-+ [14486] = "\xb8\x4b", [14488] = "\xcb\xcf", [14489] = "\xb8\x4c",
-+ [14491] = "\xd4\xd3", [14494] = "\xd4\xd8", [14497] = "\xb8\x4d",
-+ [14498] = "\xb8\x4e", [14499] = "\xca\xaf", [14504] = "\xd4\xd7",
-+ [14505] = "\xd4\xd1", [14506] = "\xd4\xd4", [14507] = "\xd4\xd6",
-+ [14508] = "\xb8\x50", [14510] = "\xba\xa6", [14513] = "\xca\xc9",
-+ [14514] = "\xb8\x51", [14516] = "\xb8\x4f", [14517] = "\xd4\xd9",
-+ [14519] = "\xc3\xc5", [14520] = "\xb8\x52", [14522] = "\xb2\xf5",
-+ [14524] = "\xbe\xed", [14525] = "\xb8\x53", [14526] = "\xb8\x54",
-+ [14528] = "\xb8\x55", [14529] = "\xd4\xdb", [14530] = "\xb8\x56",
-+ [14531] = "\xd4\xda", [14532] = "\xb8\x57", [14533] = "\xb9\xe8",
-+ [14534] = "\xb8\x58", [14535] = "\xd4\xdc", [14536] = "\xd4\xde",
-+ [14537] = "\xd4\xdd", [14538] = "\xb8\x59", [14540] = "\xd4\xe0",
-+ [14541] = "\xb8\x5a", [14542] = "\xd4\xd5", [14543] = "\xd4\xe2",
-+ [14545] = "\xb8\x5b", [14546] = "\xb8\x5c", [14548] = "\xd4\xe1",
-+ [14549] = "\xd4\xdf", [14553] = "\xb8\x5d", [14555] = "\xbb\xce",
-+ [14556] = "\xbf\xd1", [14558] = "\xc1\xd4", [14559] = "\xd4\xe3",
-+ [14560] = "\xc0\xbc", [14561] = "\xb0\xed", [14562] = "\xc7\xe4",
-+ [14563] = "\xb8\x5e", [14567] = "\xc4\xdb", [14569] = "\xd4\xe5",
-+ [14570] = "\xd4\xe4", [14571] = "\xd4\xe6", [14572] = "\xd4\xe7",
-+ [14573] = "\xd4\xe8", [14578] = "\xd4\xe9", [14581] = "\xb8\x5f",
-+ [14582] = "\xb8\x60", [14585] = "\xca\xd1", [14586] = "\xd4\xea",
-+ [14587] = "\xb8\x61", [14588] = "\xb8\x62", [14591] = "\xb2\xc6",
-+ [14592] = "\xd4\xeb", [14594] = "\xb8\x63", [14595] = "\xb8\x64",
-+ [14596] = "\xb8\x65", [14597] = "\xcd\xbc", [14598] = "\xb3\xb0",
-+ [14600] = "\xd2\xc9", [14601] = "\xbd\xc8", [14602] = "\xc2\xbf",
-+ [14603] = "\xd4\xec", [14604] = "\xcc\xeb", [14605] = "\xb8\x67",
-+ [14609] = "\xb8\x68", [14610] = "\xcc\xb4", [14611] = "\xb8\x69",
-+ [14612] = "\xb8\x6a", [14613] = "\xd4\xee", [14615] = "\xc2\xe7",
-+ [14616] = "\xb8\x6b", [14617] = "\xc5\xb7", [14618] = "\xc2\xc0",
-+ [14619] = "\xc9\xd7", [14620] = "\xd4\xef", [14621] = "\xd4\xf0",
-+ [14622] = "\xb1\xfb", [14623] = "\xb8\x6c", [14624] = "\xb8\x6d",
-+ [14625] = "\xbc\xba", [14626] = "\xd4\xf1", [14627] = "\xb8\x6e",
-+ [14629] = "\xb8\x6f", [14630] = "\xb8\x70", [14631] = "\xb0\xd0",
-+ [14632] = "\xd4\xf2", [14638] = "\xd4\xf3", [14639] = "\xb8\x71",
-+ [14643] = "\xb8\x72", [14644] = "\xb1\xe2", [14646] = "\xb8\x73",
-+ [14647] = "\xb4\xf1", [14648] = "\xc6\xe0", [14649] = "\xca\xf4",
-+ [14654] = "\xd4\xf7", [14655] = "\xc1\xd5", [14656] = "\xd4\xf6",
-+ [14657] = "\xb7\xc0", [14658] = "\xb8\x74", [14659] = "\xb8\x75",
-+ [14660] = "\xcb\xdb", [14661] = "\xd4\xf5", [14663] = "\xc5\xe5",
-+ [14664] = "\xd4\xf9", [14665] = "\xb8\x76", [14666] = "\xd4\xf8",
-+ [14667] = "\xb8\x77", [14669] = "\xb8\x78", [14670] = "\xb8\x79",
-+ [14671] = "\xb8\x7a", [14672] = "\xd4\xfb", [14673] = "\xb8\x7b",
-+ [14674] = "\xd4\xfa", [14675] = "\xb8\x7c", [14677] = "\xb1\xfc",
-+ [14679] = "\xd4\xfc", [14680] = "\xbe\xa9", [14681] = "\xd4\xfe",
-+ [14682] = "\xc3\xa5", [14683] = "\xb8\x7d", [14684] = "\xd4\xfd",
-+ [14685] = "\xb8\x7e", [14686] = "\xca\xb3", [14687] = "\xb9\x21",
-+ [14690] = "\xb9\x22", [14691] = "\xbd\xf7", [14692] = "\xc5\xdb",
-+ [14693] = "\xb9\x23", [14694] = "\xb9\x24", [14696] = "\xd5\xa1",
-+ [14697] = "\xb9\x25", [14699] = "\xb9\x26", [14700] = "\xb9\x27",
-+ [14701] = "\xb9\xa5", [14705] = "\xd5\xa2", [14706] = "\xc7\xa1",
-+ [14707] = "\xc8\xde", [14708] = "\xcc\xd1", [14714] = "\xc7\xa5",
-+ [14715] = "\xb9\x28", [14716] = "\xb9\x29", [14717] = "\xd5\xab",
-+ [14718] = "\xb9\x2a", [14722] = "\xb9\x2b", [14723] = "\xb5\xb8",
-+ [14725] = "\xb9\x2c", [14726] = "\xcd\xc5", [14727] = "\xb9\x2d",
-+ [14729] = "\xcc\xaf", [14731] = "\xd6\xac", [14733] = "\xd5\xa3",
-+ [14735] = "\xb9\x2e", [14739] = "\xd5\xa6", [14740] = "\xb9\x2f",
-+ [14741] = "\xc2\xc5", [14743] = "\xb9\x30", [14744] = "\xcb\xb8",
-+ [14748] = "\xc5\xca", [14749] = "\xb9\x31", [14750] = "\xb9\x32",
-+ [14751] = "\xb9\x33", [14752] = "\xb9\x34", [14754] = "\xd5\xa7",
-+ [14755] = "\xb9\x35", [14759] = "\xb9\x36", [14761] = "\xcb\xe5",
-+ [14762] = "\xb9\x37", [14763] = "\xba\xca", [14764] = "\xb9\x38",
-+ [14766] = "\xbe\xaa", [14769] = "\xb9\x39", [14771] = "\xb9\x3a",
-+ [14772] = "\xb9\x3b", [14774] = "\xd5\xa8", [14776] = "\xb9\x3c",
-+ [14777] = "\xbb\xd0", [14778] = "\xb9\x3d", [14779] = "\xbb\xcf",
-+ [14781] = "\xb9\x3e", [14784] = "\xb0\xb9", [14785] = "\xb8\xc8",
-+ [14786] = "\xb9\x3f", [14787] = "\xc0\xab", [14788] = "\xb0\xd1",
-+ [14793] = "\xd5\xac", [14794] = "\xd5\xad", [14796] = "\xd5\xaa",
-+ [14797] = "\xb9\x40", [14798] = "\xb9\x41", [14799] = "\xb9\x42",
-+ [14803] = "\xb9\x43", [14804] = "\xb9\x44", [14805] = "\xb1\xb8",
-+ [14806] = "\xb4\xaf", [14807] = "\xb9\x45", [14808] = "\xd5\xa9",
-+ [14810] = "\xcc\xc5", [14811] = "\xc9\xb1", [14814] = "\xb9\x46",
-+ [14815] = "\xb9\x47", [14817] = "\xb9\x48", [14818] = "\xb9\x49",
-+ [14820] = "\xb9\x4a", [14822] = "\xb0\xa8", [14823] = "\xb9\x4b",
-+ [14827] = "\xb0\xf9", [14831] = "\xbb\xd1", [14832] = "\xb9\x4c",
-+ [14833] = "\xb0\xd2", [14835] = "\xb0\xa3", [14836] = "\xb9\x4d",
-+ [14841] = "\xd5\xb2", [14844] = "\xb9\x4e", [14845] = "\xb9\x4f",
-+ [14846] = "\xb9\x50", [14849] = "\xd5\xb0", [14850] = "\xb9\x51",
-+ [14851] = "\xb9\x52", [14856] = "\xcc\xbc", [14858] = "\xd5\xb3",
-+ [14860] = "\xd5\xb1", [14862] = "\xb9\x53", [14863] = "\xd5\xaf",
-+ [14864] = "\xbf\xb1", [14867] = "\xb9\x54", [14868] = "\xb9\x55",
-+ [14869] = "\xd5\xae", [14871] = "\xb9\x56", [14872] = "\xb9\x57",
-+ [14873] = "\xca\xda", [14874] = "\xb9\x58", [14877] = "\xb9\x59",
-+ [14879] = "\xb8\xe4", [14880] = "\xb9\x5a", [14885] = "\xd5\xb7",
-+ [14886] = "\xd5\xb8", [14892] = "\xbe\xab", [14896] = "\xd5\xb4",
-+ [14897] = "\xcf\xac", [14900] = "\xb9\x5b", [14901] = "\xb9\x5c",
-+ [14902] = "\xc7\xcc", [14903] = "\xb9\x5d", [14904] = "\xb9\x5e",
-+ [14905] = "\xd5\xb6", [14908] = "\xb9\x5f", [14912] = "\xb9\x60",
-+ [14917] = "\xb9\x61", [14922] = "\xba\xa7", [14926] = "\xb9\x62",
-+ [14930] = "\xd5\xb9", [14931] = "\xb9\x63", [14933] = "\xb9\x64",
-+ [14934] = "\xc9\xd8", [14935] = "\xb9\x65", [14938] = "\xd5\xba",
-+ [14940] = "\xd5\xb5", [14941] = "\xb9\x66", [14951] = "\xb9\x67",
-+ [14954] = "\xb9\x68", [14955] = "\xb9\x69", [14958] = "\xb9\x6a",
-+ [14959] = "\xcc\xbb", [14971] = "\xb9\x6b", [14976] = "\xb9\x6c",
-+ [14978] = "\xc7\xde", [14979] = "\xb9\x6d", [14982] = "\xb9\x6e",
-+ [14985] = "\xb9\x6f", [14986] = "\xd5\xbb", [14987] = "\xc9\xb2",
-+ [14988] = "\xb9\x70", [14990] = "\xb9\x71", [14991] = "\xb9\x72",
-+ [14992] = "\xb9\x73", [14994] = "\xb9\x74", [14999] = "\xb9\x75",
-+ [15004] = "\xb9\x76", [15009] = "\xb9\x77", [15010] = "\xb9\x78",
-+ [15011] = "\xb9\x79", [15013] = "\xb9\x7a", [15016] = "\xb9\x7b",
-+ [15018] = "\xb9\x7c", [15019] = "\xb9\x7d", [15020] = "\xd5\xbc",
-+ [15021] = "\xd5\xc0", [15022] = "\xd5\xbd", [15023] = "\xb9\x7e",
-+ [15025] = "\xb2\xc7", [15026] = "\xd5\xbf", [15028] = "\xba\x21",
-+ [15030] = "\xba\x22", [15032] = "\xba\x23", [15033] = "\xbc\xbb",
-+ [15035] = "\xd5\xbe", [15036] = "\xb7\xf9", [15039] = "\xba\x24",
-+ [15040] = "\xd5\xcc", [15046] = "\xd5\xc5", [15047] = "\xd5\xc2",
-+ [15050] = "\xba\x25", [15052] = "\xba\x26", [15056] = "\xba\x27",
-+ [15057] = "\xc3\xe4", [15059] = "\xd5\xc1", [15061] = "\xba\x28",
-+ [15062] = "\xd5\xc3", [15065] = "\xd5\xc4", [15066] = "\xba\x29",
-+ [15070] = "\xba\x2a", [15077] = "\xba\x2b", [15078] = "\xba\x2c",
-+ [15082] = "\xd5\xc6", [15083] = "\xd5\xc7", [15085] = "\xba\x2d",
-+ [15088] = "\xba\x2e", [15089] = "\xba\x2f", [15096] = "\xba\x30",
-+ [15097] = "\xb4\xf2", [15099] = "\xd5\xc9", [15100] = "\xd5\xc8",
-+ [15110] = "\xd5\xca", [15111] = "\xba\x31", [15113] = "\xba\x33",
-+ [15115] = "\xba\x34", [15117] = "\xba\x35", [15121] = "\xba\x36",
-+ [15122] = "\xbe\xee", [15125] = "\xba\x37", [15130] = "\xd5\xcd",
-+ [15132] = "\xc4\xdc", [15133] = "\xba\x38", [15136] = "\xb1\xc5",
-+ [15138] = "\xd5\xcb", [15140] = "\xba\x32", [15142] = "\xd5\xce",
-+ [15144] = "\xba\x39", [15150] = "\xd5\xcf", [15152] = "\xd5\xd2",
-+ [15153] = "\xba\x3a", [15155] = "\xd5\xd0", [15157] = "\xd5\xd1",
-+ [15163] = "\xba\x3b", [15164] = "\xba\x3c", [15168] = "\xbb\xd2",
-+ [15169] = "\xd5\xd3", [15170] = "\xba\x3d", [15172] = "\xb9\xa6",
-+ [15173] = "\xd5\xd4", [15174] = "\xba\x3e", [15175] = "\xbb\xfa",
-+ [15176] = "\xc2\xb8", [15178] = "\xd5\xd5", [15179] = "\xd5\xd6",
-+ [15180] = "\xbb\xda", [15181] = "\xb9\xa7", [15182] = "\xba\x3f",
-+ [15183] = "\xcc\xd2", [15187] = "\xb5\xa8", [15188] = "\xb8\xc9",
-+ [15189] = "\xd5\xd7", [15190] = "\xb3\xd8", [15192] = "\xba\x40",
-+ [15193] = "\xd5\xd8", [15195] = "\xc2\xb9", [15198] = "\xba\x41",
-+ [15199] = "\xba\x42", [15200] = "\xd5\xd9", [15201] = "\xd6\xa3",
-+ [15203] = "\xd5\xda", [15205] = "\xd5\xdb", [15208] = "\xd5\xdc",
-+ [15210] = "\xd5\xde", [15212] = "\xba\x43", [15213] = "\xba\x44",
-+ [15214] = "\xba\x45", [15215] = "\xba\x46", [15216] = "\xd5\xdf",
-+ [15217] = "\xba\x47", [15219] = "\xd5\xe0", [15220] = "\xba\x48",
-+ [15221] = "\xc2\xf0", [15222] = "\xba\x49", [15223] = "\xb1\xa7",
-+ [15224] = "\xbc\xe9", [15225] = "\xb0\xc2", [15226] = "\xba\x4a",
-+ [15227] = "\xc1\xd7", [15228] = "\xb4\xb0", [15229] = "\xbc\xb5",
-+ [15230] = "\xba\x4b", [15231] = "\xb9\xa8", [15232] = "\xba\x4c",
-+ [15233] = "\xba\x4d", [15235] = "\xba\x4e", [15236] = "\xba\x4f",
-+ [15237] = "\xc5\xe6", [15238] = "\xba\x50", [15239] = "\xbd\xa1",
-+ [15240] = "\xb4\xb1", [15241] = "\xc3\xe8", [15242] = "\xc4\xea",
-+ [15243] = "\xb0\xb8", [15244] = "\xb5\xb9", [15245] = "\xca\xf5",
-+ [15247] = "\xbc\xc2", [15250] = "\xb5\xd2", [15251] = "\xc0\xeb",
-+ [15252] = "\xbc\xbc", [15253] = "\xcd\xa8", [15254] = "\xd5\xe1",
-+ [15256] = "\xba\x51", [15257] = "\xba\x52", [15260] = "\xba\x53",
-+ [15261] = "\xba\x54", [15262] = "\xb5\xdc", [15263] = "\xba\x55",
-+ [15264] = "\xba\xcb", [15265] = "\xba\x56", [15266] = "\xba\x57",
-+ [15267] = "\xb3\xb2", [15268] = "\xb1\xe3", [15269] = "\xbe\xac",
-+ [15270] = "\xb2\xc8", [15271] = "\xba\x58", [15272] = "\xd5\xe2",
-+ [15273] = "\xcd\xc6", [15274] = "\xba\x59", [15276] = "\xba\x5a",
-+ [15279] = "\xbd\xc9", [15280] = "\xba\x5b", [15281] = "\xba\x5c",
-+ [15282] = "\xbc\xe4", [15283] = "\xd5\xe3", [15284] = "\xb4\xf3",
-+ [15285] = "\xc6\xd2", [15286] = "\xcc\xa9", [15287] = "\xd5\xe4",
-+ [15289] = "\xd5\xe5", [15292] = "\xc9\xd9", [15293] = "\xba\x5d",
-+ [15295] = "\xba\x5e", [15296] = "\xd5\xe7", [15298] = "\xb4\xa8",
-+ [15299] = "\xb6\xf7", [15300] = "\xd5\xe6", [15302] = "\xba\x5f",
-+ [15303] = "\xba\x60", [15304] = "\xba\x61", [15305] = "\xba\x62",
-+ [15306] = "\xba\x63", [15307] = "\xb4\xb2", [15309] = "\xbf\xb2",
-+ [15310] = "\xd5\xeb", [15311] = "\xbb\xa1", [15312] = "\xba\x64",
-+ [15313] = "\xb2\xc9", [15314] = "\xd5\xea", [15316] = "\xd5\xe8",
-+ [15317] = "\xd5\xec", [15318] = "\xd5\xe9", [15319] = "\xc7\xab",
-+ [15320] = "\xdc\xcd", [15321] = "\xbf\xb3", [15323] = "\xd5\xed",
-+ [15324] = "\xf4\x3a", [15326] = "\xce\xc0", [15327] = "\xba\x65",
-+ [15328] = "\xd5\xee", [15329] = "\xba\x66", [15331] = "\xd5\xf0",
-+ [15332] = "\xba\x67", [15333] = "\xc3\xfe", [15334] = "\xd5\xef",
-+ [15336] = "\xc0\xa3", [15338] = "\xbb\xfb", [15341] = "\xba\x68",
-+ [15342] = "\xc2\xd0", [15343] = "\xbc\xf7", [15345] = "\xc9\xf5",
-+ [15346] = "\xc0\xec", [15348] = "\xbc\xcd", [15349] = "\xd5\xf1",
-+ [15350] = "\xbe\xad", [15351] = "\xd5\xf2", [15352] = "\xd5\xf3",
-+ [15353] = "\xb0\xd3", [15354] = "\xc2\xba", [15355] = "\xbf\xd2",
-+ [15356] = "\xba\x69", [15357] = "\xd5\xf4", [15358] = "\xc6\xb3",
-+ [15359] = "\xbe\xae", [15361] = "\xbe\xaf", [15363] = "\xd5\xf5",
-+ [15366] = "\xc0\xed", [15367] = "\xba\x6a", [15370] = "\xbe\xb0",
-+ [15374] = "\xba\x6b", [15375] = "\xba\x6c", [15376] = "\xd5\xf6",
-+ [15378] = "\xd5\xf7", [15379] = "\xba\x6d", [15380] = "\xcc\xe0",
-+ [15382] = "\xba\x6e", [15384] = "\xd5\xf8", [15385] = "\xba\x6f",
-+ [15387] = "\xba\x70", [15388] = "\xba\x71", [15389] = "\xb6\xc6",
-+ [15390] = "\xba\x72", [15392] = "\xba\x73", [15393] = "\xbd\xa2",
-+ [15394] = "\xba\x74", [15397] = "\xba\x75", [15398] = "\xba\x76",
-+ [15400] = "\xd5\xf9", [15401] = "\xd5\xfa", [15402] = "\xbc\xdc",
-+ [15403] = "\xbf\xac", [15404] = "\xc6\xf4", [15405] = "\xbf\xd4",
-+ [15406] = "\xc8\xf8", [15407] = "\xc7\xa2", [15408] = "\xb6\xc9",
-+ [15409] = "\xd5\xfb", [15413] = "\xb5\xef", [15414] = "\xd5\xfc",
-+ [15416] = "\xb6\xfe", [15418] = "\xc6\xcf", [15419] = "\xb2\xb0",
-+ [15421] = "\xbb\xd3", [15422] = "\xd5\xfd", [15423] = "\xd6\xa2",
-+ [15424] = "\xd6\xa1", [15425] = "\xb6\xfd", [15427] = "\xd5\xfe",
-+ [15429] = "\xc5\xb8", [15433] = "\xba\x77", [15434] = "\xba\x78",
-+ [15436] = "\xba\x79", [15438] = "\xc2\xb0", [15440] = "\xc5\xcb",
-+ [15441] = "\xbc\xc8", [15442] = "\xba\x7a", [15443] = "\xba\x7b",
-+ [15444] = "\xc1\xd8", [15445] = "\xcd\xfa", [15447] = "\xba\x7c",
-+ [15448] = "\xba\x7d", [15449] = "\xba\x7e", [15452] = "\xd6\xa4",
-+ [15453] = "\xbb\x21", [15454] = "\xd6\xa5", [15455] = "\xc6\xd6",
-+ [15456] = "\xbb\x22", [15457] = "\xbb\xb3", [15460] = "\xbb\x23",
-+ [15461] = "\xbb\x24", [15462] = "\xd6\xa7", [15465] = "\xd6\xa8",
-+ [15466] = "\xbb\x25", [15467] = "\xbb\x26", [15468] = "\xbb\x27",
-+ [15469] = "\xbb\x28", [15479] = "\xbb\x29", [15480] = "\xbb\x2a",
-+ [15482] = "\xbb\x2b", [15484] = "\xd6\xa9", [15487] = "\xbb\x2c",
-+ [15488] = "\xb4\xf4", [15489] = "\xd6\xaa", [15490] = "\xbb\x2d",
-+ [15492] = "\xd6\xab", [15501] = "\xbb\x2e", [15503] = "\xbb\x2f",
-+ [15504] = "\xbb\x30", [15505] = "\xb2\xac", [15506] = "\xbb\x31",
-+ [15507] = "\xbb\x32", [15510] = "\xbb\x33", [15512] = "\xc1\xbb",
-+ [15513] = "\xb4\xe4", [15514] = "\xbb\x34", [15515] = "\xd6\xad",
-+ [15516] = "\xcc\xa8", [15521] = "\xc2\xd2", [15522] = "\xbb\x35",
-+ [15523] = "\xb3\xd9", [15524] = "\xbb\x36", [15525] = "\xbb\x37",
-+ [15526] = "\xd6\xaf", [15527] = "\xd6\xb1", [15528] = "\xb4\xdf",
-+ [15530] = "\xbb\x38", [15531] = "\xd6\xae", [15532] = "\xd6\xb0",
-+ [15534] = "\xd6\xb3", [15541] = "\xd6\xb2", [15543] = "\xd6\xb4",
-+ [15545] = "\xbb\x39", [15547] = "\xbb\x3a", [15554] = "\xbb\x3b",
-+ [15559] = "\xbb\x3d", [15561] = "\xd6\xb5", [15565] = "\xbb\x3c",
-+ [15568] = "\xc6\xbd", [15569] = "\xb6\xae", [15576] = "\xb2\xe5",
-+ [15577] = "\xd6\xb6", [15578] = "\xd6\xbb", [15581] = "\xd6\xb9",
-+ [15582] = "\xbb\x3e", [15583] = "\xca\xf7", [15584] = "\xca\xf6",
-+ [15585] = "\xbb\x3f", [15586] = "\xbb\x40", [15588] = "\xbb\x41",
-+ [15589] = "\xf4\x3b", [15590] = "\xc5\xe7", [15594] = "\xd6\xb8",
-+ [15595] = "\xbd\xd4", [15597] = "\xd6\xb7", [15601] = "\xbb\x42",
-+ [15606] = "\xbb\x43", [15607] = "\xbf\xf2", [15611] = "\xd6\xbc",
-+ [15613] = "\xbb\x44", [15614] = "\xba\xea", [15617] = "\xd6\xc2",
-+ [15618] = "\xbb\x45", [15620] = "\xd6\xc3", [15621] = "\xd6\xbd",
-+ [15622] = "\xb3\xb3", [15623] = "\xd6\xbe", [15624] = "\xd6\xc7",
-+ [15625] = "\xd6\xc6", [15626] = "\xd6\xc5", [15627] = "\xd6\xc1",
-+ [15631] = "\xd6\xc0", [15634] = "\xd6\xc4", [15635] = "\xbb\x47",
-+ [15636] = "\xbb\x48", [15638] = "\xbb\x49", [15639] = "\xbb\x4a",
-+ [15641] = "\xca\xf8", [15643] = "\xbb\x46", [15649] = "\xbb\x4b",
-+ [15652] = "\xbb\x4c", [15657] = "\xbb\x4d", [15661] = "\xbb\x4e",
-+ [15663] = "\xbb\x4f", [15666] = "\xbb\x50", [15667] = "\xbb\x51",
-+ [15670] = "\xbb\x52", [15672] = "\xbb\x53", [15674] = "\xbb\x57",
-+ [15675] = "\xd6\xcb", [15676] = "\xd6\xc8", [15678] = "\xd6\xca",
-+ [15680] = "\xcd\xf2", [15681] = "\xbb\x55", [15682] = "\xd6\xc9",
-+ [15683] = "\xf4\x3c", [15685] = "\xbb\x54", [15689] = "\xbb\x56",
-+ [15692] = "\xd6\xbf", [15695] = "\xbb\x58", [15696] = "\xbb\x59",
-+ [15697] = "\xbb\x5a", [15698] = "\xbb\x5b", [15700] = "\xbb\x5c",
-+ [15705] = "\xbf\xf3", [15706] = "\xbb\x5d", [15708] = "\xd6\xcc",
-+ [15709] = "\xbb\x5e", [15711] = "\xba\xb7", [15712] = "\xbb\x5f",
-+ [15715] = "\xd6\xcd", [15718] = "\xd6\xce", [15721] = "\xbb\x60",
-+ [15722] = "\xbb\x61", [15726] = "\xbb\x62", [15727] = "\xbb\x63",
-+ [15729] = "\xbb\x64", [15730] = "\xd6\xd1", [15731] = "\xbb\x65",
-+ [15732] = "\xd6\xd0", [15735] = "\xd6\xcf", [15736] = "\xbb\x66",
-+ [15738] = "\xbb\x67", [15739] = "\xc5\xe8", [15740] = "\xd6\xba",
-+ [15744] = "\xd6\xd7", [15746] = "\xbb\x68", [15747] = "\xbb\x69",
-+ [15748] = "\xbb\x6a", [15749] = "\xbb\x6b", [15753] = "\xbb\x6c",
-+ [15755] = "\xbb\x6d", [15757] = "\xd6\xd3", [15759] = "\xbb\x6e",
-+ [15760] = "\xbb\x6f", [15762] = "\xd6\xd2", [15767] = "\xbb\x70",
-+ [15771] = "\xbb\x71", [15772] = "\xd6\xd4", [15774] = "\xd6\xd5",
-+ [15776] = "\xbb\x72", [15778] = "\xe6\x74", [15780] = "\xbb\x73",
-+ [15783] = "\xd6\xd8", [15784] = "\xbb\x74", [15785] = "\xbb\x75",
-+ [15786] = "\xce\xe6", [15788] = "\xd6\xd9", [15789] = "\xd6\xd6",
-+ [15795] = "\xbb\x76", [15799] = "\xbb\x77", [15801] = "\xd6\xda",
-+ [15803] = "\xbb\x78", [15804] = "\xb4\xe0", [15805] = "\xd6\xdb",
-+ [15806] = "\xbb\x7a", [15808] = "\xbb\x79", [15810] = "\xd6\xdd",
-+ [15811] = "\xd6\xdc", [15814] = "\xd6\xde", [15816] = "\xbb\x7b",
-+ [15817] = "\xbb\x7c", [15819] = "\xd6\xdf", [15821] = "\xc0\xee",
-+ [15822] = "\xbd\xa3", [15824] = "\xbb\x7d", [15825] = "\xbd\xe4",
-+ [15827] = "\xc1\xe3", [15828] = "\xbb\x7e", [15829] = "\xb9\xa9",
-+ [15830] = "\xba\xb8", [15831] = "\xb9\xaa", [15832] = "\xb5\xf0",
-+ [15833] = "\xbc\x21", [15835] = "\xd6\xe0", [15838] = "\xba\xb9",
-+ [15841] = "\xb8\xca", [15842] = "\xd6\xe1", [15843] = "\xcc\xa6",
-+ [15844] = "\xc7\xc3", [15845] = "\xd6\xe2", [15847] = "\xb9\xab",
-+ [15848] = "\xbc\x22", [15849] = "\xbc\x23", [15851] = "\xb4\xac",
-+ [15853] = "\xc3\xa7", [15854] = "\xb6\xd2", [15856] = "\xbc\x24",
-+ [15858] = "\xbb\xd4", [15859] = "\xc9\xdb", [15862] = "\xc8\xc1",
-+ [15863] = "\xbc\x25", [15867] = "\xd6\xe3", [15868] = "\xb4\xf5",
-+ [15869] = "\xbc\x26", [15873] = "\xd6\xe6", [15874] = "\xbc\x27",
-+ [15876] = "\xbc\x28", [15877] = "\xbc\x29", [15878] = "\xc4\xa1",
-+ [15880] = "\xbc\x2a", [15881] = "\xd6\xe5", [15882] = "\xd6\xe4",
-+ [15883] = "\xd6\xe7", [15885] = "\xc4\xeb", [15887] = "\xbc\x2b",
-+ [15888] = "\xbc\x2c", [15893] = "\xbf\xe3", [15896] = "\xbc\x2e",
-+ [15899] = "\xbb\xd5", [15901] = "\xc0\xca", [15902] = "\xbc\x2d",
-+ [15903] = "\xc2\xd3", [15904] = "\xb5\xa2", [15906] = "\xbc\x2f",
-+ [15907] = "\xc4\xa2", [15909] = "\xbc\x30", [15910] = "\xd6\xe8",
-+ [15911] = "\xd6\xe9", [15912] = "\xbe\xef", [15917] = "\xcb\xb9",
-+ [15918] = "\xbc\x31", [15920] = "\xd6\xec", [15923] = "\xd6\xeb",
-+ [15924] = "\xd6\xea", [15925] = "\xc9\xfd", [15927] = "\xd6\xf3",
-+ [15929] = "\xbc\x34", [15931] = "\xbc\x32", [15932] = "\xcb\xda",
-+ [15934] = "\xd6\xed", [15936] = "\xbc\x33", [15937] = "\xbc\x35",
-+ [15940] = "\xd6\xef", [15941] = "\xcb\xeb", [15942] = "\xbc\x36",
-+ [15943] = "\xd6\xee", [15944] = "\xbc\x37", [15947] = "\xbc\x38",
-+ [15948] = "\xbc\x39", [15950] = "\xbc\x3a", [15951] = "\xd6\xf0",
-+ [15953] = "\xc8\xa8", [15954] = "\xd6\xf1", [15955] = "\xca\xbe",
-+ [15956] = "\xd6\xf2", [15960] = "\xbc\x3b", [15962] = "\xbc\x3c",
-+ [15963] = "\xbc\x3d", [15964] = "\xbc\x3e", [15965] = "\xbc\x3f",
-+ [15966] = "\xbc\x40", [15968] = "\xbc\x41", [15970] = "\xb4\xb3",
-+ [15971] = "\xca\xbf", [15972] = "\xc7\xaf", [15973] = "\xd6\xf4",
-+ [15974] = "\xd6\xf5", [15976] = "\xb9\xac", [15977] = "\xb4\xb4",
-+ [15978] = "\xd6\xf6", [15979] = "\xb8\xb8", [15980] = "\xcd\xc4",
-+ [15981] = "\xcd\xa9", [15982] = "\xb4\xf6", [15983] = "\xd6\xf8",
-+ [15984] = "\xbc\x42", [15985] = "\xc4\xa3", [15987] = "\xb9\xad",
-+ [15988] = "\xbe\xb1", [15991] = "\xc8\xdf", [15994] = "\xbe\xb2",
-+ [15995] = "\xbc\x43", [15998] = "\xbc\x44", [15999] = "\xbd\xf8",
-+ [16005] = "\xc4\xec", [16006] = "\xca\xf9", [16007] = "\xc5\xb9",
-+ [16010] = "\xb9\xae", [16012] = "\xc9\xdc", [16016] = "\xd6\xf9",
-+ [16018] = "\xbc\x45", [16020] = "\xbc\x46", [16021] = "\xbc\x47",
-+ [16022] = "\xc5\xd9", [16023] = "\xba\xc2", [16024] = "\xbc\x48",
-+ [16026] = "\xbc\x49", [16027] = "\xb8\xcb", [16028] = "\xbc\x4a",
-+ [16029] = "\xc4\xed", [16033] = "\xbc\x4b", [16035] = "\xbc\x4c",
-+ [16037] = "\xb0\xc3", [16038] = "\xbd\xee", [16039] = "\xb9\xaf",
-+ [16040] = "\xcd\xc7", [16045] = "\xbc\x4d", [16046] = "\xbc\x4e",
-+ [16047] = "\xbc\x4f", [16049] = "\xd6\xfa", [16050] = "\xd6\xfb",
-+ [16051] = "\xc7\xd1", [16054] = "\xbc\x50", [16056] = "\xd6\xfc",
-+ [16057] = "\xce\xf7", [16058] = "\xcf\xad", [16059] = "\xbc\x52",
-+ [16060] = "\xbc\x51", [16062] = "\xbc\x53", [16063] = "\xd6\xfe",
-+ [16064] = "\xd6\xfd", [16065] = "\xbc\x54", [16066] = "\xbc\x55",
-+ [16067] = "\xb3\xc7", [16068] = "\xbc\x56", [16069] = "\xbc\x57",
-+ [16070] = "\xd7\xa1", [16074] = "\xd7\xa4", [16075] = "\xd7\xa5",
-+ [16076] = "\xbc\x58", [16077] = "\xd7\xa3", [16078] = "\xbc\x59",
-+ [16079] = "\xc9\xc0", [16080] = "\xbe\xb3", [16081] = "\xd7\xa7",
-+ [16082] = "\xd7\xa6", [16083] = "\xd7\xa2", [16085] = "\xbc\x5a",
-+ [16088] = "\xd7\xa8", [16089] = "\xd7\xa9", [16091] = "\xbc\x5b",
-+ [16092] = "\xd7\xaa", [16096] = "\xd7\xad", [16097] = "\xd7\xab",
-+ [16099] = "\xd7\xac", [16100] = "\xd7\xae", [16102] = "\xb1\xe4",
-+ [16103] = "\xc4\xee", [16104] = "\xd7\xaf", [16106] = "\xb7\xfa",
-+ [16107] = "\xb2\xf6", [16108] = "\xc7\xb6", [16110] = "\xd7\xb0",
-+ [16111] = "\xc6\xfb", [16113] = "\xca\xdb", [16114] = "\xbc\x5c",
-+ [16115] = "\xd7\xb1", [16116] = "\xcf\xae", [16118] = "\xbc\x5d",
-+ [16119] = "\xbc\x5e", [16120] = "\xbc\x5f", [16121] = "\xd7\xb2",
-+ [16122] = "\xca\xc0", [16123] = "\xd7\xb5", [16124] = "\xd0\xa1",
-+ [16125] = "\xd0\xb1", [16126] = "\xbc\x60", [16127] = "\xbc\xb0",
-+ [16128] = "\xc6\xf5", [16129] = "\xd7\xb6", [16131] = "\xb5\xdd",
-+ [16132] = "\xc4\xa4", [16133] = "\xb0\xfa", [16134] = "\xd7\xb7",
-+ [16135] = "\xca\xa6", [16136] = "\xb9\xb0", [16137] = "\xbc\x61",
-+ [16139] = "\xc3\xd0", [16140] = "\xbc\x62", [16141] = "\xbc\x63",
-+ [16143] = "\xc4\xef", [16145] = "\xbc\x64", [16146] = "\xbc\x65",
-+ [16147] = "\xbc\x66", [16148] = "\xbc\x67", [16149] = "\xcc\xef",
-+ [16150] = "\xb8\xb9", [16151] = "\xb8\xcc", [16152] = "\xbc\x68",
-+ [16153] = "\xd7\xb8", [16155] = "\xbc\x69", [16156] = "\xbc\x6a",
-+ [16157] = "\xd7\xb9", [16158] = "\xbc\x6b", [16159] = "\xd7\xbf",
-+ [16160] = "\xbc\x6c", [16161] = "\xbc\xe5", [16164] = "\xbc\x6d",
-+ [16165] = "\xc4\xa5", [16166] = "\xbc\x6e", [16167] = "\xb6\xaf",
-+ [16168] = "\xd7\xba", [16171] = "\xbc\x6f", [16172] = "\xc9\xab",
-+ [16173] = "\xbc\x70", [16174] = "\xc3\xc6", [16175] = "\xbc\x71",
-+ [16176] = "\xbc\x72", [16177] = "\xd7\xbb", [16180] = "\xbc\x73",
-+ [16181] = "\xbc\x74", [16183] = "\xbc\x75", [16184] = "\xd7\xbc",
-+ [16186] = "\xb6\xb0", [16188] = "\xd7\xbd", [16189] = "\xbc\x76",
-+ [16190] = "\xd7\xbe", [16192] = "\xbc\x77", [16193] = "\xd7\xc0",
-+ [16195] = "\xc5\xf6", [16196] = "\xbc\x78", [16198] = "\xd7\xc1",
-+ [16199] = "\xd7\xc2", [16200] = "\xbc\x79", [16201] = "\xd7\xc3",
-+ [16203] = "\xbc\x7a", [16204] = "\xd7\xb4", [16205] = "\xd7\xb3",
-+ [16208] = "\xbc\x7b", [16209] = "\xd7\xc4", [16210] = "\xb7\xc1",
-+ [16211] = "\xbc\x7c", [16212] = "\xbc\x7d", [16214] = "\xc9\xa7",
-+ [16215] = "\xbc\x7e", [16217] = "\xba\xcc", [16218] = "\xc9\xb7",
-+ [16219] = "\xc4\xa6", [16220] = "\xc9\xcb", [16221] = "\xd7\xc5",
-+ [16223] = "\xbd\x21", [16224] = "\xbe\xb4", [16225] = "\xb1\xc6",
-+ [16226] = "\xbd\x22", [16227] = "\xd7\xc6", [16228] = "\xbd\x23",
-+ [16229] = "\xbd\x24", [16231] = "\xd7\xc7", [16232] = "\xbd\x25",
-+ [16233] = "\xcc\xf2", [16234] = "\xbd\x26", [16236] = "\xc8\xe0",
-+ [16237] = "\xbd\x27", [16238] = "\xbd\x28", [16239] = "\xd7\xca",
-+ [16240] = "\xb1\xfd", [16241] = "\xc0\xac", [16242] = "\xd7\xc9",
-+ [16243] = "\xd7\xc8", [16244] = "\xb7\xc2", [16245] = "\xc2\xd4",
-+ [16247] = "\xd7\xce", [16248] = "\xd7\xcc", [16249] = "\xbd\x29",
-+ [16250] = "\xd7\xcb", [16251] = "\xce\xa7", [16252] = "\xb8\xe5",
-+ [16253] = "\xbd\x2a", [16255] = "\xbd\x2b", [16256] = "\xbd\xf9",
-+ [16257] = "\xd7\xcd", [16258] = "\xc5\xcc", [16259] = "\xbd\xbe",
-+ [16262] = "\xbd\x2c", [16263] = "\xc6\xc0", [16264] = "\xd7\xd1",
-+ [16265] = "\xd7\xd0", [16268] = "\xbd\x2d", [16269] = "\xbd\x2e",
-+ [16270] = "\xd7\xcf", [16272] = "\xd7\xd2", [16273] = "\xb8\xe6",
-+ [16274] = "\xbd\x2f", [16276] = "\xbd\x32", [16279] = "\xbd\x30",
-+ [16280] = "\xd7\xd3", [16281] = "\xc9\xfc", [16282] = "\xbd\xdb",
-+ [16283] = "\xbd\x31", [16284] = "\xbd\x33", [16285] = "\xd7\xd4",
-+ [16286] = "\xc8\xf9", [16287] = "\xbd\x34", [16288] = "\xbd\x35",
-+ [16289] = "\xbd\x36", [16291] = "\xc6\xc1", [16292] = "\xc4\xa7",
-+ [16295] = "\xf4\x3e", [16296] = "\xbd\x37", [16297] = "\xc5\xb0",
-+ [16300] = "\xd7\xd5", [16301] = "\xb5\xab", [16307] = "\xbf\xb4",
-+ [16308] = "\xbd\x38", [16309] = "\xc9\xac", [16311] = "\xbd\x39",
-+ [16312] = "\xbd\x3a", [16313] = "\xbd\x3b", [16315] = "\xbd\x3c",
-+ [16316] = "\xb4\xf7", [16317] = "\xc7\xa6", [16320] = "\xbd\x3d",
-+ [16321] = "\xbd\x3e", [16322] = "\xbd\x3f", [16323] = "\xbd\x40",
-+ [16324] = "\xbd\x41", [16326] = "\xd7\xd6", [16327] = "\xbb\xd6",
-+ [16328] = "\xcb\xba", [16329] = "\xcb\xbb", [16332] = "\xb1\xfe",
-+ [16333] = "\xd7\xdb", [16334] = "\xbd\x42", [16336] = "\xc3\xe9",
-+ [16337] = "\xbd\x43", [16338] = "\xbd\x44", [16340] = "\xd7\xd8",
-+ [16344] = "\xbd\x45", [16345] = "\xbd\x46", [16346] = "\xbd\x47",
-+ [16347] = "\xb2\xf7", [16348] = "\xbd\x48", [16349] = "\xbd\x49",
-+ [16350] = "\xbd\x4a", [16351] = "\xbd\x4b", [16352] = "\xd8\xad",
-+ [16353] = "\xd7\xda", [16354] = "\xbd\x4c", [16355] = "\xbd\x4d",
-+ [16357] = "\xc7\xb0", [16358] = "\xbd\x4e", [16360] = "\xd7\xd9",
-+ [16362] = "\xbd\x4f", [16363] = "\xd7\xd7", [16364] = "\xbd\x50",
-+ [16365] = "\xb9\xfa", [16367] = "\xd7\xdd", [16375] = "\xbd\x51",
-+ [16378] = "\xbd\x52", [16381] = "\xbd\x53", [16382] = "\xd7\xe3",
-+ [16383] = "\xd7\xe9", [16384] = "\xd7\xe1", [16386] = "\xc5\xdc",
-+ [16387] = "\xbd\x54", [16388] = "\xbd\x55", [16389] = "\xd7\xe6",
-+ [16390] = "\xc9\xdd", [16391] = "\xbd\x56", [16392] = "\xbd\x57",
-+ [16393] = "\xd7\xe0", [16394] = "\xbd\x58", [16395] = "\xd7\xe5",
-+ [16396] = "\xce\xe7", [16397] = "\xbb\xd7", [16399] = "\xbd\x59",
-+ [16400] = "\xc2\xd5", [16401] = "\xd7\xde", [16404] = "\xbd\x5a",
-+ [16405] = "\xb5\xde", [16406] = "\xd7\xe8", [16407] = "\xc0\xad",
-+ [16408] = "\xb1\xe5", [16409] = "\xd7\xe2", [16410] = "\xb2\xf8",
-+ [16411] = "\xd7\xe7", [16413] = "\xbd\x5b", [16415] = "\xb6\xb1",
-+ [16417] = "\xd7\xe4", [16419] = "\xbd\x5c", [16421] = "\xbd\x5d",
-+ [16426] = "\xd7\xea", [16432] = "\xbd\x5e", [16433] = "\xd7\xec",
-+ [16434] = "\xd7\xf6", [16435] = "\xd7\xf4", [16438] = "\xd7\xf1",
-+ [16439] = "\xbd\x5f", [16440] = "\xbd\x60", [16441] = "\xbd\x61",
-+ [16442] = "\xd7\xf0", [16443] = "\xce\xf8", [16444] = "\xbd\x62",
-+ [16445] = "\xd7\xf2", [16448] = "\xb6\xb2", [16449] = "\xbd\x63",
-+ [16450] = "\xb9\xb1", [16452] = "\xbd\x64", [16453] = "\xbd\xfa",
-+ [16454] = "\xbd\x65", [16455] = "\xbd\x66", [16457] = "\xd7\xf9",
-+ [16458] = "\xd7\xeb", [16461] = "\xbd\x67", [16463] = "\xd7\xef",
-+ [16464] = "\xd7\xdf", [16465] = "\xbd\x68", [16466] = "\xb2\xfa",
-+ [16467] = "\xd7\xf3", [16468] = "\xd7\xf5", [16469] = "\xc3\xd1",
-+ [16471] = "\xbd\x69", [16472] = "\xba\xa8", [16473] = "\xb2\xb8",
-+ [16474] = "\xd7\xed", [16475] = "\xd7\xf8", [16476] = "\xd7\xf7",
-+ [16477] = "\xb6\xb3", [16479] = "\xc2\xa9", [16480] = "\xb3\xe6",
-+ [16481] = "\xbd\x6a", [16485] = "\xb7\xc3", [16487] = "\xd7\xee",
-+ [16494] = "\xbd\x6b", [16495] = "\xbd\x6c", [16497] = "\xd7\xfa",
-+ [16498] = "\xbd\x6d", [16499] = "\xd7\xfd", [16500] = "\xd8\xa1",
-+ [16501] = "\xf4\x3f", [16502] = "\xbd\x6e", [16504] = "\xbd\x6f",
-+ [16505] = "\xbc\xbd", [16506] = "\xbd\x70", [16507] = "\xd8\xa7",
-+ [16508] = "\xc4\xf0", [16509] = "\xd7\xfb", [16510] = "\xbd\x71",
-+ [16513] = "\xbd\x72", [16514] = "\xd8\xa5", [16515] = "\xbd\x73",
-+ [16516] = "\xb2\xf9", [16517] = "\xbd\x74", [16518] = "\xd8\xa3",
-+ [16519] = "\xd8\xa4", [16520] = "\xbd\x75", [16522] = "\xd7\xfe",
-+ [16523] = "\xd8\xa2", [16525] = "\xbd\x76", [16526] = "\xbd\x77",
-+ [16527] = "\xb8\xe7", [16528] = "\xcd\xaa", [16530] = "\xbd\x78",
-+ [16531] = "\xb4\xb5", [16532] = "\xbd\x79", [16533] = "\xbd\x7a",
-+ [16534] = "\xb1\xd9", [16535] = "\xd8\xa6", [16536] = "\xbd\x7b",
-+ [16537] = "\xc7\xba", [16538] = "\xb0\xad", [16544] = "\xbd\x7c",
-+ [16545] = "\xbd\x7d", [16546] = "\xc8\xe1", [16547] = "\xd7\xdc",
-+ [16548] = "\xd8\xac", [16549] = "\xd8\xb0", [16550] = "\xcc\xe5",
-+ [16551] = "\xbd\x7e", [16552] = "\xd8\xa9", [16555] = "\xbe\x21",
-+ [16556] = "\xc5\xe9", [16557] = "\xd8\xae", [16558] = "\xbe\x22",
-+ [16562] = "\xbe\x23", [16564] = "\xbe\x24", [16565] = "\xbe\xf0",
-+ [16566] = "\xd8\xaf", [16567] = "\xc6\xd7", [16568] = "\xbe\x25",
-+ [16569] = "\xbe\x26", [16570] = "\xbe\x27", [16571] = "\xbe\x28",
-+ [16574] = "\xbe\x29", [16575] = "\xbe\x2a", [16577] = "\xcf\xc7",
-+ [16579] = "\xd8\xab", [16580] = "\xbe\x2b", [16581] = "\xbe\x2c",
-+ [16584] = "\xd8\xb1", [16585] = "\xbe\x2d", [16586] = "\xb9\xfb",
-+ [16587] = "\xbe\x2e", [16588] = "\xc0\xcb", [16589] = "\xbe\x2f",
-+ [16590] = "\xbe\x30", [16591] = "\xb0\xd4", [16592] = "\xd8\xaa",
-+ [16593] = "\xd8\xa8", [16594] = "\xbe\x31", [16595] = "\xc1\xda",
-+ [16597] = "\xbe\x32", [16599] = "\xd7\xfc", [16600] = "\xbb\xb4",
-+ [16608] = "\xc2\xc6", [16609] = "\xd8\xbd", [16610] = "\xbe\x33",
-+ [16611] = "\xc1\xdb", [16612] = "\xd8\xb8", [16613] = "\xbe\x34",
-+ [16614] = "\xd8\xb5", [16615] = "\xd8\xb6", [16616] = "\xbe\x35",
-+ [16617] = "\xbc\xe6", [16618] = "\xd8\xb9", [16619] = "\xd8\xbc",
-+ [16620] = "\xbe\x36", [16621] = "\xbe\x37", [16624] = "\xd8\xb7",
-+ [16625] = "\xbd\xa5", [16626] = "\xbe\x38", [16627] = "\xd8\xba",
-+ [16630] = "\xd8\xb4", [16631] = "\xbe\x39", [16632] = "\xcc\xfc",
-+ [16633] = "\xcc\xfb", [16634] = "\xbe\x3a", [16636] = "\xbe\x3b",
-+ [16637] = "\xd8\xbe", [16638] = "\xd8\xbf", [16639] = "\xb0\xd5",
-+ [16640] = "\xbe\x3c", [16641] = "\xbe\x3d", [16642] = "\xbe\x3e",
-+ [16643] = "\xbe\x3f", [16644] = "\xbe\x40", [16645] = "\xd8\xb3",
-+ [16646] = "\xbe\x41", [16647] = "\xbe\x42", [16649] = "\xbe\x43",
-+ [16650] = "\xb6\xf2", [16651] = "\xb0\xa6", [16652] = "\xbe\x44",
-+ [16654] = "\xbe\x45", [16655] = "\xb4\xb6", [16656] = "\xf4\x40",
-+ [16657] = "\xd8\xbb", [16658] = "\xbe\x46", [16663] = "\xd8\xc3",
-+ [16664] = "\xd8\xc2", [16666] = "\xbe\x47", [16667] = "\xbe\x48",
-+ [16668] = "\xd8\xc7", [16672] = "\xbe\x49", [16673] = "\xbe\x4a",
-+ [16676] = "\xd8\xc8", [16677] = "\xbe\x4b", [16678] = "\xbe\x4c",
-+ [16679] = "\xbe\x4d", [16681] = "\xbe\x4e", [16684] = "\xd8\xc6",
-+ [16685] = "\xd8\xc9", [16686] = "\xd8\xc1", [16687] = "\xd8\xc5",
-+ [16689] = "\xbe\x4f", [16690] = "\xd8\xca", [16692] = "\xd8\xcb",
-+ [16693] = "\xbe\x50", [16694] = "\xbe\x51", [16695] = "\xd8\xc0",
-+ [16696] = "\xbb\xfc", [16697] = "\xbe\x52", [16698] = "\xd8\xc4",
-+ [16699] = "\xc2\xd6", [16700] = "\xb9\xb2", [16701] = "\xd8\xb2",
-+ [16702] = "\xbf\xb5", [16707] = "\xd8\xd8", [16709] = "\xca\xe9",
-+ [16712] = "\xd8\xce", [16713] = "\xd8\xcf", [16714] = "\xd8\xd0",
-+ [16717] = "\xd8\xd7", [16718] = "\xbe\x53", [16719] = "\xd8\xd6",
-+ [16720] = "\xbe\x54", [16722] = "\xcb\xfd", [16723] = "\xb4\xb7",
-+ [16725] = "\xd8\xd4", [16727] = "\xb7\xc5", [16728] = "\xb3\xb4",
-+ [16731] = "\xd8\xd1", [16732] = "\xbe\x55", [16734] = "\xce\xb8",
-+ [16735] = "\xd8\xd3", [16736] = "\xb0\xd6", [16737] = "\xd8\xd5",
-+ [16738] = "\xbe\x56", [16739] = "\xd8\xcc", [16740] = "\xd8\xd2",
-+ [16741] = "\xd8\xd9", [16742] = "\xb7\xc4", [16743] = "\xd8\xcd",
-+ [16744] = "\xbe\x57", [16747] = "\xbe\x58", [16748] = "\xbe\x59",
-+ [16750] = "\xcd\xdd", [16751] = "\xbe\x5a", [16752] = "\xbe\x5b",
-+ [16753] = "\xbe\x5c", [16754] = "\xcd\xab", [16755] = "\xbe\x5d",
-+ [16756] = "\xbe\x5e", [16759] = "\xd8\xdc", [16762] = "\xd8\xe0",
-+ [16763] = "\xbe\x5f", [16765] = "\xbe\x60", [16766] = "\xc1\xfe",
-+ [16768] = "\xce\xf9", [16769] = "\xd8\xe1", [16770] = "\xbe\x61",
-+ [16771] = "\xbe\x62", [16772] = "\xd8\xde", [16774] = "\xd8\xdb",
-+ [16775] = "\xbe\x63", [16776] = "\xbe\x64", [16777] = "\xd8\xda",
-+ [16778] = "\xd8\xdf", [16780] = "\xbe\x65", [16781] = "\xbe\x66",
-+ [16783] = "\xbe\x67", [16784] = "\xbe\x68", [16788] = "\xca\xb0",
-+ [16789] = "\xbe\x69", [16791] = "\xc6\xb4", [16792] = "\xbe\x6a",
-+ [16793] = "\xb7\xc6", [16794] = "\xbe\x6b", [16795] = "\xd8\xe2",
-+ [16796] = "\xd8\xdd", [16797] = "\xbe\x6c", [16798] = "\xd8\xe3",
-+ [16802] = "\xb7\xfb", [16806] = "\xb2\xb1", [16808] = "\xbe\x6d",
-+ [16809] = "\xbe\x6e", [16810] = "\xd8\xeb", [16812] = "\xbe\x6f",
-+ [16814] = "\xb4\xb8", [16816] = "\xbe\x70", [16817] = "\xbe\x71",
-+ [16818] = "\xbe\x72", [16819] = "\xd8\xe9", [16822] = "\xd8\xea",
-+ [16823] = "\xba\xa9", [16824] = "\xd8\xe8", [16825] = "\xd8\xe6",
-+ [16826] = "\xd8\xe5", [16827] = "\xd8\xec", [16828] = "\xd8\xe4",
-+ [16829] = "\xd8\xee", [16830] = "\xbe\x73", [16831] = "\xbe\x74",
-+ [16832] = "\xb2\xfb", [16837] = "\xbe\x75", [16844] = "\xbe\x76",
-+ [16845] = "\xbe\x77", [16846] = "\xbe\x78", [16847] = "\xbe\x79",
-+ [16849] = "\xbe\x7a", [16850] = "\xbe\x7b", [16851] = "\xd8\xf0",
-+ [16853] = "\xbe\x7e", [16854] = "\xd8\xef", [16855] = "\xbe\x7c",
-+ [16857] = "\xbe\x7d", [16860] = "\xbf\x21", [16861] = "\xbf\x22",
-+ [16863] = "\xbf\x23", [16866] = "\xc4\xa8", [16868] = "\xd8\xf3",
-+ [16870] = "\xd8\xf1", [16871] = "\xd8\xe7", [16872] = "\xb7\xfc",
-+ [16874] = "\xd8\xf2", [16876] = "\xd8\xf6", [16877] = "\xd8\xf5",
-+ [16878] = "\xd8\xf7", [16879] = "\xd8\xf4", [16880] = "\xd8\xf8",
-+ [16881] = "\xbf\x24", [16883] = "\xbf\x25", [16884] = "\xbf\x26",
-+ [16887] = "\xbf\x27", [16888] = "\xd8\xf9", [16889] = "\xd8\xfa",
-+ [16890] = "\xca\xea", [16892] = "\xd8\xfc", [16893] = "\xd8\xfb",
-+ [16894] = "\xbd\xbf", [16896] = "\xc0\xae", [16897] = "\xb2\xe6",
-+ [16898] = "\xb2\xfc", [16899] = "\xbf\x28", [16900] = "\xd8\xfd",
-+ [16901] = "\xbf\x29", [16902] = "\xb0\xbf", [16906] = "\xc0\xcc",
-+ [16907] = "\xd8\xfe", [16908] = "\xbf\x2a", [16909] = "\xec\xc3",
-+ [16910] = "\xd9\xa1", [16911] = "\xb7\xe1", [16912] = "\xbf\x2b",
-+ [16913] = "\xd9\xa2", [16914] = "\xbf\x2c", [16915] = "\xbf\x2d",
-+ [16918] = "\xc0\xef", [16919] = "\xbf\x2e", [16921] = "\xbf\x2f",
-+ [16922] = "\xd9\xa3", [16923] = "\xbf\x30", [16926] = "\xd9\xa4",
-+ [16927] = "\xb5\xba", [16928] = "\xd9\xa5", [16930] = "\xd9\xa6",
-+ [16931] = "\xd9\xa7", [16932] = "\xc2\xd7", [16936] = "\xb8\xcd",
-+ [16937] = "\xbf\x31", [16939] = "\xcc\xe1", [16941] = "\xbf\x32",
-+ [16943] = "\xcb\xbc", [16944] = "\xbd\xea", [16945] = "\xd9\xa8",
-+ [16946] = "\xbf\x33", [16947] = "\xbf\x34", [16948] = "\xbf\x35",
-+ [16950] = "\xbf\x36", [16951] = "\xc0\xf0", [16952] = "\xee\xbd",
-+ [16953] = "\xc8\xe2", [16955] = "\xbc\xea", [16956] = "\xbf\x37",
-+ [16957] = "\xba\xcd", [16958] = "\xd9\xa9", [16960] = "\xbf\x38",
-+ [16961] = "\xbf\x39", [16962] = "\xbf\x3a", [16963] = "\xc2\xc7",
-+ [16964] = "\xbf\x3b", [16965] = "\xca\xa7", [16966] = "\xbf\x3c",
-+ [16968] = "\xc2\xf1", [16970] = "\xbf\x3d", [16971] = "\xd9\xac",
-+ [16972] = "\xbf\x3e", [16974] = "\xd9\xaa", [16976] = "\xd9\xad",
-+ [16979] = "\xd9\xab", [16980] = "\xbf\x3f", [16984] = "\xd9\xae",
-+ [16989] = "\xbf\x40", [16990] = "\xca\xb1", [16991] = "\xbf\x41",
-+ [16993] = "\xb0\xb7", [16995] = "\xbf\x42", [16998] = "\xc9\xde",
-+ [17001] = "\xc8\xe3", [17002] = "\xbf\x43", [17004] = "\xd9\xaf",
-+ [17005] = "\xbf\x44", [17006] = "\xd9\xb2", [17007] = "\xbe\xb5",
-+ [17008] = "\xb5\xbb", [17010] = "\xd9\xb0", [17011] = "\xd9\xb7",
-+ [17012] = "\xbe\xb6", [17017] = "\xd9\xb1", [17018] = "\xc7\xc4",
-+ [17021] = "\xbf\x45", [17022] = "\xbf\x46", [17023] = "\xbf\x47",
-+ [17024] = "\xbf\x48", [17025] = "\xcd\xde", [17026] = "\xd9\xb3",
-+ [17027] = "\xd9\xb4", [17028] = "\xd9\xb8", [17029] = "\xc5\xea",
-+ [17030] = "\xd9\xb5", [17031] = "\xb9\xb3", [17032] = "\xc0\xde",
-+ [17035] = "\xd9\xc6", [17036] = "\xc8\xb4", [17038] = "\xc2\xf2",
-+ [17046] = "\xbf\x49", [17048] = "\xbf\x4a", [17051] = "\xc8\xe4",
-+ [17052] = "\xda\xad", [17057] = "\xca\xfa", [17059] = "\xbf\x4b",
-+ [17061] = "\xc4\xf1", [17062] = "\xbf\x4c", [17063] = "\xbf\x4d",
-+ [17065] = "\xcb\xf5", [17066] = "\xbf\x4e", [17067] = "\xd9\xbb",
-+ [17068] = "\xb2\xa1", [17069] = "\xc3\xea", [17070] = "\xbf\x4f",
-+ [17071] = "\xbf\x50", [17074] = "\xd9\xc4", [17076] = "\xbf\x51",
-+ [17077] = "\xc3\xb4", [17078] = "\xd9\xbe", [17079] = "\xd9\xc5",
-+ [17080] = "\xd9\xc0", [17081] = "\xd9\xc7", [17082] = "\xd9\xc3",
-+ [17084] = "\xd9\xc2", [17085] = "\xc7\xef", [17086] = "\xbf\x52",
-+ [17087] = "\xd9\xbc", [17088] = "\xb2\xfd", [17089] = "\xd9\xba",
-+ [17090] = "\xb5\xf1", [17091] = "\xc2\xf3", [17092] = "\xd9\xb6",
-+ [17093] = "\xbf\x53", [17094] = "\xbf\x54", [17095] = "\xd9\xb9",
-+ [17096] = "\xb9\xb4", [17097] = "\xc0\xdb", [17098] = "\xbf\x55",
-+ [17099] = "\xbe\xb7", [17100] = "\xd9\xc1", [17101] = "\xc7\xd2",
-+ [17104] = "\xb5\xf2", [17105] = "\xb3\xc8", [17114] = "\xbf\x56",
-+ [17116] = "\xb3\xe7", [17117] = "\xbf\xa1", [17118] = "\xd9\xc9",
-+ [17119] = "\xd9\xce", [17121] = "\xd9\xca", [17122] = "\xbf\x57",
-+ [17123] = "\xb7\xfd", [17124] = "\xbf\x58", [17125] = "\xd9\xcf",
-+ [17126] = "\xbb\xa2", [17127] = "\xb9\xe9", [17132] = "\xbf\x59",
-+ [17133] = "\xbf\x5a", [17134] = "\xbd\xa6", [17135] = "\xd9\xbd",
-+ [17137] = "\xbb\xfd", [17138] = "\xd9\xcc", [17139] = "\xbf\x5b",
-+ [17140] = "\xbf\x5c", [17143] = "\xbb\xd8", [17144] = "\xd9\xcd",
-+ [17145] = "\xb0\xc4", [17146] = "\xbf\x5d", [17147] = "\xbf\x5e",
-+ [17148] = "\xd9\xc8", [17149] = "\xbf\x5f", [17152] = "\xbf\x60",
-+ [17153] = "\xc4\xa9", [17155] = "\xbf\x61", [17158] = "\xbf\x62",
-+ [17160] = "\xbf\x63", [17161] = "\xb5\xf3", [17167] = "\xb6\xb4",
-+ [17175] = "\xd9\xcb", [17176] = "\xb0\xa7", [17177] = "\xbf\x64",
-+ [17178] = "\xbf\x65", [17179] = "\xba\xc3", [17181] = "\xbf\x66",
-+ [17183] = "\xbf\xb6", [17189] = "\xbf\x67", [17190] = "\xbf\x68",
-+ [17193] = "\xbf\x69", [17194] = "\xc4\xf2", [17196] = "\xbf\x6a",
-+ [17197] = "\xc8\xd4", [17198] = "\xd9\xd1", [17199] = "\xc1\xde",
-+ [17201] = "\xbf\x6b", [17202] = "\xbf\x6c", [17203] = "\xbf\x6d",
-+ [17204] = "\xbf\x6e", [17206] = "\xbf\x6f", [17209] = "\xc2\xaa",
-+ [17210] = "\xbf\x70", [17211] = "\xbf\x71", [17212] = "\xbb\xab",
-+ [17213] = "\xd9\xd2", [17214] = "\xbf\x72", [17215] = "\xd9\xd4",
-+ [17216] = "\xd9\xd0", [17218] = "\xbf\x73", [17219] = "\xbf\x74",
-+ [17220] = "\xbf\x75", [17221] = "\xca\xe1", [17223] = "\xc4\xbd",
-+ [17224] = "\xbf\x76", [17227] = "\xbf\x77", [17228] = "\xc1\xdc",
-+ [17237] = "\xbf\x78", [17238] = "\xbf\x79", [17239] = "\xca\xfb",
-+ [17240] = "\xbc\xce", [17241] = "\xd9\xe0", [17243] = "\xd9\xdf",
-+ [17244] = "\xbf\x7a", [17245] = "\xbf\x7b", [17246] = "\xbf\xf8",
-+ [17249] = "\xbf\x7c", [17250] = "\xb7\xfe", [17252] = "\xbf\x7d",
-+ [17253] = "\xbf\x7e", [17254] = "\xd9\xd9", [17255] = "\xbe\xb9",
-+ [17256] = "\xc0\x21", [17258] = "\xc6\xe8", [17259] = "\xc7\xb1",
-+ [17260] = "\xc0\x22", [17261] = "\xc0\x23", [17263] = "\xc0\x24",
-+ [17264] = "\xd9\xd7", [17266] = "\xc0\x25", [17267] = "\xc1\xdd",
-+ [17268] = "\xc0\x26", [17271] = "\xc0\x27", [17272] = "\xbc\xf8",
-+ [17273] = "\xd9\xdc", [17274] = "\xc0\x28", [17276] = "\xbe\xb8",
-+ [17278] = "\xd9\xd6", [17279] = "\xd9\xdb", [17280] = "\xc0\x29",
-+ [17282] = "\xc7\xd3", [17284] = "\xc0\x2a", [17285] = "\xc0\x2b",
-+ [17286] = "\xd9\xd5", [17288] = "\xb7\xa1", [17289] = "\xc0\x2c",
-+ [17290] = "\xc0\x2d", [17291] = "\xb3\xdd", [17294] = "\xc0\x2e",
-+ [17295] = "\xd9\xdd", [17296] = "\xce\xab", [17297] = "\xba\xce",
-+ [17298] = "\xc3\xb5", [17299] = "\xd9\xda", [17300] = "\xc0\x2f",
-+ [17301] = "\xc0\xdc", [17302] = "\xc0\x30", [17303] = "\xb9\xb5",
-+ [17304] = "\xbf\xe4", [17305] = "\xb1\xe6", [17306] = "\xc1\xbc",
-+ [17307] = "\xd9\xd8", [17308] = "\xb5\xc5", [17309] = "\xc0\x31",
-+ [17310] = "\xc0\x32", [17311] = "\xc0\x33", [17314] = "\xb7\xc7",
-+ [17316] = "\xc4\xcf", [17317] = "\xd9\xde", [17323] = "\xc1\xdf",
-+ [17325] = "\xc0\x34", [17326] = "\xd9\xe1", [17328] = "\xd9\xe3",
-+ [17329] = "\xc0\x35", [17331] = "\xc2\xb7", [17332] = "\xd9\xe9",
-+ [17333] = "\xc0\x36", [17334] = "\xd9\xe4", [17336] = "\xc0\x37",
-+ [17337] = "\xd9\xe6", [17342] = "\xc0\x38", [17343] = "\xc9\xc1",
-+ [17344] = "\xc4\xf3", [17345] = "\xc0\x39", [17346] = "\xd9\xe7",
-+ [17347] = "\xc0\x3a", [17348] = "\xc0\x3b", [17349] = "\xc0\x3c",
-+ [17350] = "\xcd\xac", [17354] = "\xcd\xc8", [17355] = "\xb4\xb9",
-+ [17356] = "\xc0\x3d", [17360] = "\xc0\x3e", [17361] = "\xb0\xae",
-+ [17363] = "\xd9\xe5", [17365] = "\xc0\x3f", [17369] = "\xd9\xe2",
-+ [17370] = "\xc0\x40", [17372] = "\xc0\x41", [17374] = "\xb4\xf8",
-+ [17378] = "\xc0\x42", [17379] = "\xc0\x43", [17380] = "\xb1\xe7",
-+ [17381] = "\xc0\x44", [17382] = "\xd9\xe8", [17384] = "\xc0\x45",
-+ [17385] = "\xc0\x46", [17386] = "\xcd\xc9", [17398] = "\xd9\xec",
-+ [17401] = "\xc0\x47", [17402] = "\xc0\x48", [17405] = "\xc2\xbb",
-+ [17407] = "\xd9\xf3", [17408] = "\xc0\x49", [17410] = "\xc0\x4a",
-+ [17411] = "\xd9\xed", [17412] = "\xc0\x4b", [17414] = "\xd9\xea",
-+ [17415] = "\xd9\xf1", [17416] = "\xc0\x4c", [17420] = "\xd9\xd3",
-+ [17422] = "\xc0\x4d", [17424] = "\xc0\x4e", [17426] = "\xc0\x4f",
-+ [17428] = "\xc0\x50", [17429] = "\xc0\x51", [17430] = "\xd9\xee",
-+ [17432] = "\xd9\xf2", [17433] = "\xc0\x52", [17434] = "\xc0\x53",
-+ [17436] = "\xc8\xc2", [17437] = "\xc5\xeb", [17439] = "\xc0\x54",
-+ [17440] = "\xc0\x55", [17444] = "\xd9\xeb", [17445] = "\xc0\x56",
-+ [17446] = "\xd9\xef", [17450] = "\xb7\xc8", [17453] = "\xc0\x57",
-+ [17454] = "\xba\xf1", [17455] = "\xc0\x58", [17458] = "\xc0\xdd",
-+ [17467] = "\xc0\x59", [17470] = "\xd9\xf7", [17471] = "\xc0\x5a",
-+ [17473] = "\xc0\x5b", [17474] = "\xc0\x5c", [17475] = "\xc0\x5d",
-+ [17476] = "\xc0\x5e", [17480] = "\xc5\xa6", [17482] = "\xc0\x5f",
-+ [17483] = "\xc0\x60", [17484] = "\xc0\x61", [17485] = "\xc0\x62",
-+ [17487] = "\xc0\x63", [17488] = "\xc0\x64", [17489] = "\xc0\x65",
-+ [17491] = "\xc0\x66", [17495] = "\xd9\xf4", [17497] = "\xcb\xe0",
-+ [17501] = "\xc0\x67", [17503] = "\xd9\xf5", [17507] = "\xc0\x68",
-+ [17508] = "\xc0\x69", [17510] = "\xd9\xf6", [17512] = "\xcc\xce",
-+ [17514] = "\xc0\xa2", [17515] = "\xc0\x6a", [17517] = "\xc0\x6b",
-+ [17523] = "\xb7\xe2", [17525] = "\xc0\x6c", [17527] = "\xc0\x6d",
-+ [17528] = "\xd9\xfd", [17535] = "\xc0\x6e", [17536] = "\xc0\x6f",
-+ [17537] = "\xc0\x70", [17538] = "\xbb\xb5", [17539] = "\xd9\xfa",
-+ [17541] = "\xd9\xf9", [17544] = "\xc0\x71", [17545] = "\xc0\x72",
-+ [17546] = "\xc7\xb2", [17547] = "\xc0\x73", [17549] = "\xc0\x74",
-+ [17550] = "\xc6\xb5", [17551] = "\xc0\x75", [17553] = "\xc0\x76",
-+ [17555] = "\xc0\x77", [17556] = "\xc5\xb1", [17557] = "\xd9\xfb",
-+ [17558] = "\xc0\x78", [17560] = "\xc0\x79", [17561] = "\xd9\xfc",
-+ [17563] = "\xc9\xef", [17564] = "\xc0\x7a", [17565] = "\xc7\xc5",
-+ [17566] = "\xbb\xa3", [17568] = "\xc0\xf1", [17570] = "\xcb\xd0",
-+ [17571] = "\xc0\x7b", [17577] = "\xb3\xc9", [17579] = "\xda\xa5",
-+ [17580] = "\xd9\xfe", [17581] = "\xc0\x7c", [17582] = "\xc0\x7d",
-+ [17583] = "\xc0\x7e", [17585] = "\xcd\xca", [17586] = "\xda\xa7",
-+ [17588] = "\xc1\x21", [17589] = "\xda\xa3", [17591] = "\xda\xa4",
-+ [17593] = "\xc1\x22", [17594] = "\xc1\x23", [17595] = "\xc1\x24",
-+ [17596] = "\xc1\x25", [17597] = "\xc1\xe0", [17598] = "\xc1\x26",
-+ [17600] = "\xc1\x27", [17601] = "\xc1\x28", [17602] = "\xda\xa2",
-+ [17604] = "\xd9\xbf", [17605] = "\xc1\x29", [17607] = "\xc1\x2a",
-+ [17608] = "\xda\xa6", [17610] = "\xda\xa1", [17616] = "\xda\xab",
-+ [17617] = "\xda\xac", [17618] = "\xc5\xa7", [17619] = "\xda\xae",
-+ [17620] = "\xc1\x2b", [17621] = "\xc1\x2c", [17622] = "\xbb\xa4",
-+ [17623] = "\xda\xa9", [17625] = "\xc1\x2d", [17626] = "\xc1\x2e",
-+ [17628] = "\xb5\xbc", [17629] = "\xc1\x2f", [17631] = "\xda\xaf",
-+ [17632] = "\xc1\x30", [17633] = "\xda\xa8", [17634] = "\xda\xb3",
-+ [17636] = "\xda\xb2", [17637] = "\xc1\x31", [17638] = "\xda\xb1",
-+ [17639] = "\xc1\x32", [17642] = "\xda\xb4", [17643] = "\xc1\x33",
-+ [17645] = "\xda\xb6", [17646] = "\xbe\xf1", [17647] = "\xc1\x34",
-+ [17648] = "\xda\xb5", [17649] = "\xc1\x35", [17652] = "\xc1\x36",
-+ [17653] = "\xda\xb9", [17656] = "\xc1\x37", [17657] = "\xc1\x38",
-+ [17658] = "\xc1\x39", [17663] = "\xc1\x3a", [17667] = "\xc1\x3b",
-+ [17668] = "\xc1\x3c", [17670] = "\xc1\x3d", [17672] = "\xda\xb7",
-+ [17673] = "\xc1\x3e", [17675] = "\xc1\x3f", [17676] = "\xda\xb8",
-+ [17677] = "\xd9\xf0", [17678] = "\xc1\x40", [17679] = "\xc1\x41",
-+ [17682] = "\xc1\x42", [17683] = "\xda\xbb", [17684] = "\xda\xba",
-+ [17686] = "\xc1\x43", [17689] = "\xc1\x44", [17690] = "\xd9\xf8",
-+ [17691] = "\xda\xbc", [17692] = "\xda\xb0", [17694] = "\xc1\x45",
-+ [17695] = "\xbb\xd9", [17697] = "\xc1\x46", [17700] = "\xda\xbd",
-+ [17701] = "\xda\xbe", [17702] = "\xda\xc0", [17703] = "\xda\xbf",
-+ [17704] = "\xda\xc1", [17705] = "\xb2\xfe", [17706] = "\xc1\x47",
-+ [17707] = "\xb9\xb6", [17708] = "\xc1\x48", [17709] = "\xc1\x49",
-+ [17710] = "\xca\xfc", [17711] = "\xc0\xaf", [17715] = "\xc1\x4a",
-+ [17717] = "\xb8\xce", [17719] = "\xc1\x4b", [17720] = "\xda\xc3",
-+ [17721] = "\xc1\x4c", [17725] = "\xda\xc6", [17726] = "\xf4\x41",
-+ [17727] = "\xc9\xd2", [17728] = "\xc1\x4d", [17729] = "\xb5\xdf",
-+ [17730] = "\xc1\x4e", [17732] = "\xc1\x4f", [17733] = "\xda\xc5",
-+ [17734] = "\xda\xc4", [17735] = "\xc7\xd4", [17736] = "\xda\xc7",
-+ [17737] = "\xb6\xb5", [17741] = "\xda\xc9", [17742] = "\xda\xc8",
-+ [17743] = "\xc1\x50", [17744] = "\xc1\x51", [17746] = "\xb4\xba",
-+ [17747] = "\xbb\xb6", [17750] = "\xc6\xd8", [17751] = "\xc1\x52",
-+ [17755] = "\xc1\x53", [17756] = "\xb7\xc9", [17760] = "\xbf\xf4",
-+ [17762] = "\xda\xca", [17764] = "\xc0\xb0", [17765] = "\xc5\xa8",
-+ [17767] = "\xc9\xdf", [17768] = "\xda\xcb", [17770] = "\xc1\x54",
-+ [17773] = "\xc1\x55", [17777] = "\xc1\x56", [17778] = "\xda\xcc",
-+ [17779] = "\xda\xcd", [17781] = "\xc1\x57", [17783] = "\xca\xb8",
-+ [17784] = "\xd5\xdd", [17785] = "\xc0\xc6", [17786] = "\xc1\x58",
-+ [17788] = "\xc9\xcc", [17790] = "\xba\xd8", [17792] = "\xc8\xe5",
-+ [17793] = "\xc8\xc3", [17794] = "\xc1\x59", [17797] = "\xc1\x5a",
-+ [17799] = "\xc5\xcd", [17800] = "\xc1\x5b", [17801] = "\xce\xc1",
-+ [17803] = "\xda\xcf", [17804] = "\xbc\xd0", [17805] = "\xc1\x5c",
-+ [17807] = "\xda\xd0", [17808] = "\xc1\x5d", [17809] = "\xb0\xb6",
-+ [17811] = "\xc1\x5e", [17812] = "\xb6\xd4", [17813] = "\xc0\xcd",
-+ [17814] = "\xc1\x5f", [17815] = "\xc9\xe0", [17819] = "\xda\xd1",
-+ [17820] = "\xbb\xc2", [17821] = "\xc3\xc7", [17822] = "\xc1\x60",
-+ [17823] = "\xbb\xdb", [17824] = "\xbf\xb7", [17826] = "\xc1\x61",
-+ [17827] = "\xc1\x62", [17828] = "\xc1\x63", [17831] = "\xda\xd2",
-+ [17833] = "\xca\xfd", [17836] = "\xb1\xf7", [17837] = "\xbb\xdc",
-+ [17839] = "\xc1\x64", [17841] = "\xda\xd5", [17842] = "\xc1\x65",
-+ [17843] = "\xda\xd3", [17844] = "\xda\xd6", [17845] = "\xce\xb9",
-+ [17846] = "\xda\xd4", [17848] = "\xc1\x66", [17849] = "\xc1\x67",
-+ [17851] = "\xc0\xfb", [17852] = "\xda\xd7", [17854] = "\xc1\x68",
-+ [17855] = "\xc2\xb2", [17856] = "\xc1\x69", [17858] = "\xda\xd8",
-+ [17860] = "\xc1\x6a", [17862] = "\xc1\x6b", [17863] = "\xb4\xfa",
-+ [17864] = "\xc1\x6c", [17865] = "\xda\xda", [17867] = "\xda\xd9",
-+ [17871] = "\xc1\x6d", [17872] = "\xda\xdb", [17873] = "\xda\xdc",
-+ [17874] = "\xb4\xfb", [17877] = "\xc6\xfc", [17878] = "\xc3\xb6",
-+ [17879] = "\xb5\xec", [17880] = "\xbb\xdd", [17881] = "\xc1\xe1",
-+ [17884] = "\xbd\xdc", [17885] = "\xb0\xb0", [17888] = "\xc1\x6e",
-+ [17889] = "\xda\xdd", [17890] = "\xc1\x6f", [17892] = "\xc1\x70",
-+ [17893] = "\xc1\x71", [17897] = "\xc1\x72", [17898] = "\xb2\xa2",
-+ [17899] = "\xda\xe1", [17902] = "\xc1\x73", [17903] = "\xc1\x74",
-+ [17904] = "\xc1\x75", [17906] = "\xb9\xb7", [17907] = "\xda\xe0",
-+ [17908] = "\xc1\x76", [17910] = "\xba\xab", [17911] = "\xbe\xba",
-+ [17912] = "\xc1\x77", [17913] = "\xc1\x78", [17914] = "\xda\xdf",
-+ [17916] = "\xbe\xbb", [17917] = "\xc1\x79", [17918] = "\xcc\xc0",
-+ [17919] = "\xba\xaa", [17921] = "\xc1\x7a", [17922] = "\xc1\x7b",
-+ [17923] = "\xb0\xd7", [17924] = "\xc0\xce", [17925] = "\xc1\x7c",
-+ [17926] = "\xc1\x7d", [17932] = "\xda\xe6", [17933] = "\xc1\x7e",
-+ [17934] = "\xc2\x21", [17935] = "\xc0\xb1", [17936] = "\xb1\xc7",
-+ [17937] = "\xc2\x22", [17938] = "\xc2\x23", [17939] = "\xc2\x24",
-+ [17940] = "\xc2\x25", [17941] = "\xbd\xd5", [17942] = "\xc2\x26",
-+ [17943] = "\xcb\xe6", [17944] = "\xba\xf2", [17945] = "\xc2\x27",
-+ [17946] = "\xc2\x28", [17947] = "\xc2\x29", [17948] = "\xc2\x2a",
-+ [17949] = "\xbe\xbc", [17950] = "\xc2\x2b", [17951] = "\xc0\xa7",
-+ [17952] = "\xc2\x2c", [17953] = "\xc2\x2d", [17955] = "\xc2\x2e",
-+ [17956] = "\xda\xe5", [17957] = "\xda\xe3", [17958] = "\xda\xe4",
-+ [17959] = "\xc2\x30", [17961] = "\xc2\x2f", [17963] = "\xf4\x42",
-+ [17964] = "\xc3\xeb", [17967] = "\xdb\xa6", [17968] = "\xc2\x31",
-+ [17969] = "\xda\xea", [17970] = "\xbb\xfe", [17971] = "\xb9\xb8",
-+ [17972] = "\xda\xe8", [17973] = "\xc2\x32", [17974] = "\xc2\x33",
-+ [17977] = "\xda\xe9", [17978] = "\xc2\x34", [17979] = "\xbf\xb8",
-+ [17980] = "\xc2\x35", [17982] = "\xc2\x37", [17983] = "\xda\xe7",
-+ [17985] = "\xc2\x36", [17986] = "\xbb\xaf", [17991] = "\xc2\x38",
-+ [17992] = "\xc2\x39", [17993] = "\xc2\x3a", [17995] = "\xc2\x3b",
-+ [17996] = "\xc2\x3c", [17997] = "\xda\xec", [17998] = "\xda\xeb",
-+ [17999] = "\xda\xf0", [18000] = "\xc2\x3d", [18001] = "\xc2\x3e",
-+ [18002] = "\xda\xf1", [18004] = "\xda\xed", [18005] = "\xf4\x43",
-+ [18006] = "\xb3\xa2", [18007] = "\xda\xee", [18008] = "\xda\xef",
-+ [18009] = "\xc8\xd5", [18010] = "\xc2\x40", [18011] = "\xc2\x41",
-+ [18012] = "\xc2\x42", [18014] = "\xc9\xe1", [18015] = "\xb7\xca",
-+ [18016] = "\xda\xf2", [18019] = "\xc2\x44", [18020] = "\xc0\xb2",
-+ [18021] = "\xc2\x45", [18022] = "\xbe\xbd", [18023] = "\xc2\x47",
-+ [18024] = "\xc2\x48", [18025] = "\xc2\x49", [18026] = "\xc3\xd2",
-+ [18027] = "\xc2\x4a", [18028] = "\xc2\x4c", [18030] = "\xc2\x43",
-+ [18031] = "\xc2\x46", [18032] = "\xc2\x4b", [18033] = "\xb6\xc7",
-+ [18035] = "\xda\xf3", [18036] = "\xda\xf7", [18039] = "\xb2\xcb",
-+ [18040] = "\xda\xf4", [18041] = "\xda\xf6", [18043] = "\xc2\x4d",
-+ [18044] = "\xc2\x4e", [18045] = "\xc2\x4f", [18046] = "\xda\xf5",
-+ [18048] = "\xc2\x50", [18049] = "\xbd\xeb", [18050] = "\xc2\x51",
-+ [18054] = "\xc3\xc8", [18055] = "\xb0\xc5", [18056] = "\xda\xf8",
-+ [18057] = "\xc2\x52", [18058] = "\xc2\x53", [18059] = "\xc2\x54",
-+ [18060] = "\xc2\x55", [18061] = "\xda\xf9", [18063] = "\xc2\x56",
-+ [18064] = "\xc2\x57", [18066] = "\xc4\xaa", [18068] = "\xc2\x58",
-+ [18070] = "\xce\xf1", [18075] = "\xbb\xc3", [18077] = "\xc2\x59",
-+ [18078] = "\xca\xeb", [18081] = "\xc2\x5a", [18082] = "\xc2\x5b",
-+ [18084] = "\xcb\xbd", [18085] = "\xc2\x5c", [18088] = "\xdb\xa2",
-+ [18089] = "\xda\xfb", [18091] = "\xc2\x5d", [18092] = "\xda\xfe",
-+ [18094] = "\xda\xfd", [18095] = "\xc2\x5e", [18096] = "\xc2\x5f",
-+ [18097] = "\xda\xfa", [18098] = "\xc2\x60", [18099] = "\xc2\x61",
-+ [18100] = "\xdb\xa1", [18103] = "\xc6\xde", [18104] = "\xc2\x62",
-+ [18105] = "\xda\xfc", [18108] = "\xc2\x63", [18110] = "\xc2\x64",
-+ [18111] = "\xc2\x65", [18116] = "\xc2\x66", [18118] = "\xdb\xa3",
-+ [18121] = "\xbd\xec", [18122] = "\xdb\xa4", [18123] = "\xc2\x67",
-+ [18124] = "\xcd\xcb", [18125] = "\xc7\xf8", [18127] = "\xc2\x68",
-+ [18128] = "\xdb\xa5", [18134] = "\xdb\xa7", [18136] = "\xc2\x69",
-+ [18137] = "\xdb\xa8", [18139] = "\xc2\x6a", [18140] = "\xc2\x6b",
-+ [18142] = "\xc2\x6c", [18144] = "\xdb\xa9", [18146] = "\xb6\xca",
-+ [18147] = "\xb1\xc8", [18148] = "\xb9\xb9", [18149] = "\xdb\xaa",
-+ [18151] = "\xdb\xab", [18152] = "\xbd\xf1", [18153] = "\xc1\xe2",
-+ [18154] = "\xc2\x6d", [18155] = "\xc2\x3f", [18156] = "\xd2\xd8",
-+ [18157] = "\xc1\xbe", [18158] = "\xc1\xbd", [18159] = "\xc2\xd8",
-+ [18160] = "\xba\xc7", [18163] = "\xd0\xf2", [18165] = "\xc2\x6e",
-+ [18167] = "\xc2\x6f", [18168] = "\xb7\xee", [18169] = "\xcd\xad",
-+ [18171] = "\xca\xfe", [18173] = "\xc9\xfe", [18174] = "\xc2\x70",
-+ [18175] = "\xdb\xac", [18179] = "\xc2\x71", [18180] = "\xba\xf3",
-+ [18181] = "\xc4\xbf", [18182] = "\xdb\xad", [18183] = "\xcf\xaf",
-+ [18185] = "\xc2\x72", [18187] = "\xcb\xbe", [18188] = "\xc2\x73",
-+ [18189] = "\xc4\xab", [18190] = "\xdb\xae", [18191] = "\xb4\xfc",
-+ [18192] = "\xc2\x74", [18194] = "\xc2\x75", [18198] = "\xdb\xaf",
-+ [18199] = "\xdb\xb0", [18200] = "\xcc\xda", [18202] = "\xcc\xa4",
-+ [18203] = "\xcb\xf6", [18204] = "\xcb\xdc", [18205] = "\xbb\xa5",
-+ [18206] = "\xdb\xb2", [18209] = "\xbc\xeb", [18211] = "\xc2\x76",
-+ [18212] = "\xcb\xd1", [18214] = "\xdb\xb4", [18215] = "\xdb\xb7",
-+ [18216] = "\xdb\xb6", [18218] = "\xb4\xf9", [18221] = "\xb5\xe0",
-+ [18222] = "\xc2\x77", [18223] = "\xdb\xb3", [18225] = "\xdb\xb5",
-+ [18229] = "\xc2\x78", [18230] = "\xdb\xb8", [18231] = "\xc2\x79",
-+ [18232] = "\xc2\x7a", [18233] = "\xbf\xf9", [18236] = "\xc2\x7b",
-+ [18238] = "\xcd\xfb", [18239] = "\xb0\xc9", [18240] = "\xba\xe0",
-+ [18241] = "\xc2\xbc", [18243] = "\xbc\xdd", [18244] = "\xc2\x7c",
-+ [18245] = "\xc2\x7d", [18246] = "\xbe\xf3", [18249] = "\xdb\xbb",
-+ [18252] = "\xc5\xce", [18253] = "\xc2\x7e", [18254] = "\xdb\xb9",
-+ [18255] = "\xc2\xab", [18256] = "\xdb\xba", [18257] = "\xbe\xf2",
-+ [18258] = "\xcc\xdd", [18259] = "\xdb\xbc", [18260] = "\xdb\xbd",
-+ [18261] = "\xcd\xe8", [18262] = "\xc3\x21", [18266] = "\xdb\xc2",
-+ [18268] = "\xc3\x22", [18269] = "\xb9\xba", [18270] = "\xc3\x23",
-+ [18271] = "\xc7\xd5", [18272] = "\xdb\xbf", [18273] = "\xc5\xec",
-+ [18274] = "\xda\xde", [18275] = "\xda\xe2", [18276] = "\xc3\x24",
-+ [18277] = "\xb5\xcf", [18278] = "\xc3\x25", [18279] = "\xc7\xc7",
-+ [18283] = "\xc3\x26", [18284] = "\xdb\xc1", [18286] = "\xbe\xbe",
-+ [18287] = "\xc8\xc4", [18289] = "\xc3\x27", [18292] = "\xc3\x28",
-+ [18293] = "\xdb\xc7", [18295] = "\xc8\xfa", [18297] = "\xdb\xbe",
-+ [18299] = "\xdb\xc4", [18300] = "\xdb\xc3", [18302] = "\xc3\x29",
-+ [18303] = "\xc3\x2a", [18304] = "\xc0\xcf", [18305] = "\xc3\x2b",
-+ [18307] = "\xc3\x2c", [18309] = "\xcb\xed", [18310] = "\xc3\x2d",
-+ [18311] = "\xce\xd3", [18312] = "\xc3\x2e", [18313] = "\xc3\x2f",
-+ [18314] = "\xcb\xe7", [18315] = "\xc3\x30", [18316] = "\xb2\xcc",
-+ [18317] = "\xbb\xde", [18320] = "\xcf\xc8", [18321] = "\xdb\xc6",
-+ [18322] = "\xbf\xf5", [18326] = "\xdb\xc5", [18329] = "\xdb\xc0",
-+ [18335] = "\xb8\xcf", [18336] = "\xc3\x31", [18337] = "\xc3\x32",
-+ [18338] = "\xc3\x33", [18339] = "\xdb\xcc", [18340] = "\xdb\xca",
-+ [18341] = "\xc3\x34", [18342] = "\xb2\xcd", [18343] = "\xdb\xc8",
-+ [18344] = "\xdb\xce", [18345] = "\xdb\xd4", [18347] = "\xc3\x35",
-+ [18348] = "\xc3\x36", [18349] = "\xc3\x37", [18352] = "\xc3\x39",
-+ [18353] = "\xc2\xc8", [18354] = "\xc3\x3a", [18355] = "\xc3\x3b",
-+ [18356] = "\xca\xc1", [18357] = "\xc3\x3c", [18358] = "\xdb\xd6",
-+ [18360] = "\xc3\x3d", [18361] = "\xc3\x3e", [18362] = "\xc9\xa2",
-+ [18366] = "\xdb\xd5", [18367] = "\xc7\xf0", [18368] = "\xcb\xbf",
-+ [18369] = "\xb4\xbb", [18370] = "\xc3\x3f", [18371] = "\xc0\xf7",
-+ [18372] = "\xbd\xc0", [18375] = "\xc3\x40", [18376] = "\xc4\xd3",
-+ [18377] = "\xc3\x41", [18378] = "\xcd\xae", [18380] = "\xc3\x42",
-+ [18381] = "\xdb\xd1", [18382] = "\xdb\xd0", [18385] = "\xc3\x43",
-+ [18386] = "\xdb\xd2", [18388] = "\xdb\xcf", [18390] = "\xc3\x44",
-+ [18391] = "\xdb\xd7", [18393] = "\xdb\xcd", [18396] = "\xdb\xcb",
-+ [18398] = "\xdb\xd3", [18399] = "\xdb\xc9", [18400] = "\xc3\x45",
-+ [18401] = "\xc3\xec", [18402] = "\xc3\x46", [18403] = "\xcc\xf8",
-+ [18404] = "\xbc\xc6", [18405] = "\xba\xf4", [18406] = "\xc3\x47",
-+ [18407] = "\xc3\x48", [18409] = "\xc3\x38", [18411] = "\xba\xba",
-+ [18414] = "\xcb\xef", [18415] = "\xb3\xc1", [18417] = "\xf4\x46",
-+ [18418] = "\xc4\xce", [18419] = "\xc6\xca", [18420] = "\xb1\xc9",
-+ [18435] = "\xc0\xf2", [18436] = "\xc3\x4a", [18438] = "\xc0\xb4",
-+ [18439] = "\xb7\xaa", [18441] = "\xc3\x4b", [18445] = "\xc3\x4c",
-+ [18446] = "\xdb\xd9", [18447] = "\xc3\x4d", [18449] = "\xb9\xbb",
-+ [18450] = "\xb3\xfc", [18455] = "\xc3\x4f", [18456] = "\xc3\x4e",
-+ [18457] = "\xdb\xdb", [18458] = "\xb3\xf4", [18459] = "\xdb\xe1",
-+ [18460] = "\xc3\x50", [18461] = "\xc3\x51", [18463] = "\xc3\x52",
-+ [18464] = "\xc3\x53", [18465] = "\xc3\x54", [18466] = "\xdb\xde",
-+ [18467] = "\xc3\x55", [18468] = "\xc0\xf3", [18472] = "\xb3\xcb",
-+ [18473] = "\xba\xac", [18475] = "\xc3\x56", [18476] = "\xb3\xca",
-+ [18477] = "\xba\xcf", [18479] = "\xc3\x57", [18480] = "\xdb\xdc",
-+ [18481] = "\xb7\xe5", [18482] = "\xb7\xcb", [18483] = "\xc5\xed",
-+ [18484] = "\xc3\x58", [18485] = "\xc3\x59", [18486] = "\xdb\xda",
-+ [18488] = "\xb0\xc6", [18490] = "\xc3\x5a", [18492] = "\xc3\x5b",
-+ [18493] = "\xdb\xdd", [18494] = "\xdb\xdf", [18496] = "\xb6\xcd",
-+ [18497] = "\xb7\xac", [18498] = "\xc3\x49", [18499] = "\xb4\xbc",
-+ [18500] = "\xb5\xcb", [18501] = "\xc3\x5c", [18503] = "\xc3\x5d",
-+ [18504] = "\xc3\x5e", [18505] = "\xdb\xe2", [18507] = "\xc3\x5f",
-+ [18508] = "\xba\xf9", [18509] = "\xcb\xf1", [18511] = "\xbb\xb7",
-+ [18515] = "\xdb\xe3", [18519] = "\xc9\xb0", [18523] = "\xc3\x60",
-+ [18526] = "\xc3\x61", [18527] = "\xc3\x62", [18528] = "\xc3\x63",
-+ [18529] = "\xc3\x64", [18530] = "\xc3\x65", [18532] = "\xdb\xef",
-+ [18533] = "\xc3\x66", [18534] = "\xb2\xb3", [18535] = "\xdb\xe4",
-+ [18537] = "\xc3\x67", [18538] = "\xc3\x68", [18539] = "\xc3\x69",
-+ [18540] = "\xc3\x6a", [18542] = "\xdb\xf5", [18543] = "\xdb\xe5",
-+ [18545] = "\xce\xc2", [18546] = "\xc3\x6b", [18547] = "\xdb\xec",
-+ [18548] = "\xc3\x6c", [18549] = "\xc7\xdf", [18550] = "\xc3\x6d",
-+ [18552] = "\xc3\x6e", [18557] = "\xdb\xf4", [18559] = "\xdb\xe7",
-+ [18563] = "\xb0\xb4", [18564] = "\xdb\xe9", [18566] = "\xc3\x6f",
-+ [18567] = "\xb9\xbc", [18568] = "\xc3\x70", [18570] = "\xc3\x71",
-+ [18571] = "\xdb\xeb", [18572] = "\xc3\x72", [18573] = "\xdb\xea",
-+ [18575] = "\xdb\xe6", [18576] = "\xdb\xf1", [18577] = "\xc3\x73",
-+ [18578] = "\xbe\xbf", [18579] = "\xc3\x74", [18581] = "\xc3\x75",
-+ [18582] = "\xd4\xed", [18583] = "\xb8\xe8", [18584] = "\xcd\xfc",
-+ [18585] = "\xc3\x76", [18586] = "\xc3\x77", [18589] = "\xdb\xe8",
-+ [18590] = "\xc3\x78", [18591] = "\xc4\xf4", [18592] = "\xb3\xa3",
-+ [18593] = "\xba\xad", [18594] = "\xc3\x79", [18595] = "\xdb\xe0",
-+ [18597] = "\xdb\xf0", [18598] = "\xb3\xe1", [18601] = "\xdb\xee",
-+ [18602] = "\xdb\xf2", [18603] = "\xc3\x7a", [18604] = "\xc5\xee",
-+ [18612] = "\xb4\xfe", [18613] = "\xc3\x7b", [18614] = "\xdc\xb2",
-+ [18616] = "\xc3\x7c", [18617] = "\xcc\xc9", [18618] = "\xdb\xf7",
-+ [18619] = "\xb4\xfd", [18620] = "\xc3\x7d", [18621] = "\xdb\xfe",
-+ [18623] = "\xc3\x7e", [18624] = "\xc4\x21", [18625] = "\xc4\x22",
-+ [18626] = "\xcb\xc0", [18627] = "\xc4\x23", [18628] = "\xdc\xa1",
-+ [18629] = "\xdc\xa3", [18630] = "\xc4\x24", [18631] = "\xdc\xa7",
-+ [18632] = "\xdb\xf9", [18633] = "\xc4\x25", [18634] = "\xc3\xaa",
-+ [18636] = "\xc4\x26", [18637] = "\xc4\x27", [18639] = "\xc5\xef",
-+ [18640] = "\xdc\xab", [18641] = "\xdb\xfc", [18643] = "\xdc\xa8",
-+ [18645] = "\xc4\x28", [18647] = "\xdc\xa2", [18648] = "\xc4\x29",
-+ [18650] = "\xc4\x2a", [18651] = "\xc4\x2b", [18652] = "\xc4\x2c",
-+ [18653] = "\xc4\x2d", [18654] = "\xbf\xb9", [18655] = "\xdc\xac",
-+ [18656] = "\xc4\x2e", [18657] = "\xc4\x2f", [18658] = "\xc0\xb3",
-+ [18661] = "\xc4\x30", [18662] = "\xc4\x31", [18665] = "\xdc\xaa",
-+ [18666] = "\xb4\xbd", [18667] = "\xc4\x32", [18668] = "\xc4\x33",
-+ [18669] = "\xc4\x34", [18672] = "\xcf\xd0", [18673] = "\xdb\xf6",
-+ [18676] = "\xdc\xa6", [18677] = "\xb0\xd8", [18678] = "\xc4\x35",
-+ [18680] = "\xdb\xf8", [18681] = "\xc4\x36", [18682] = "\xc4\x37",
-+ [18683] = "\xcc\xba", [18684] = "\xdb\xfd", [18685] = "\xbf\xa2",
-+ [18686] = "\xc4\xc7", [18687] = "\xdb\xf3", [18688] = "\xc4\x38",
-+ [18689] = "\xc4\x39", [18690] = "\xdc\xa5", [18691] = "\xc4\x3a",
-+ [18694] = "\xc4\x3b", [18695] = "\xc4\x3c", [18697] = "\xbf\xfa",
-+ [18698] = "\xdc\xaf", [18699] = "\xb3\xf1", [18700] = "\xb8\xa1",
-+ [18705] = "\xdc\xb1", [18706] = "\xdb\xfa", [18707] = "\xdc\xb0",
-+ [18709] = "\xdc\xa9", [18710] = "\xdb\xfb", [18712] = "\xdc\xad",
-+ [18714] = "\xdc\xae", [18720] = "\xdc\xbf", [18721] = "\xc4\x3d",
-+ [18723] = "\xc4\x3e", [18724] = "\xc6\xce", [18725] = "\xc4\x3f",
-+ [18726] = "\xdc\xa4", [18728] = "\xc4\x40", [18729] = "\xdc\xbb",
-+ [18731] = "\xc4\x41", [18733] = "\xdc\xbd", [18735] = "\xc4\xd8",
-+ [18738] = "\xc4\x42", [18741] = "\xc4\x43", [18745] = "\xc4\x44",
-+ [18746] = "\xcd\xcc", [18750] = "\xc4\x45", [18755] = "\xc9\xf6",
-+ [18756] = "\xdc\xb8", [18757] = "\xc2\xca", [18759] = "\xc4\x46",
-+ [18761] = "\xdc\xbe", [18762] = "\xc1\xbf", [18763] = "\xc4\x47",
-+ [18764] = "\xdc\xb5", [18765] = "\xdc\xc2", [18766] = "\xdc\xc1",
-+ [18768] = "\xc6\xef", [18769] = "\xdc\xc0", [18770] = "\xc6\xea",
-+ [18771] = "\xc4\x48", [18772] = "\xc4\x49", [18773] = "\xc4\x4a",
-+ [18774] = "\xc4\x4b", [18776] = "\xc4\x4c", [18777] = "\xc4\x4d",
-+ [18778] = "\xdc\xc4", [18779] = "\xdc\xb7", [18780] = "\xc4\x4e",
-+ [18781] = "\xb6\xc8", [18782] = "\xdc\xba", [18783] = "\xbd\xdd",
-+ [18784] = "\xc4\x4f", [18785] = "\xc4\x50", [18786] = "\xc4\x51",
-+ [18787] = "\xc7\xe0", [18788] = "\xdc\xbc", [18789] = "\xb6\xcb",
-+ [18791] = "\xdc\xb4", [18792] = "\xdc\xb6", [18793] = "\xdc\xb3",
-+ [18794] = "\xc4\x52", [18795] = "\xc4\x53", [18796] = "\xcf\xb0",
-+ [18797] = "\xb3\xda", [18798] = "\xdc\xb9", [18799] = "\xc4\x54",
-+ [18800] = "\xc4\x55", [18801] = "\xdc\xc3", [18802] = "\xb3\xb5",
-+ [18810] = "\xba\xe7", [18813] = "\xc4\x56", [18814] = "\xb1\xdd",
-+ [18817] = "\xdc\xd4", [18818] = "\xc4\x57", [18820] = "\xcf\xb1",
-+ [18821] = "\xdc\xd7", [18822] = "\xc4\x58", [18824] = "\xc4\x59",
-+ [18827] = "\xbf\xba", [18828] = "\xdc\xd6", [18832] = "\xdc\xd5",
-+ [18833] = "\xc4\x5a", [18837] = "\xc4\x5b", [18838] = "\xc4\x5c",
-+ [18839] = "\xdc\xd2", [18840] = "\xc4\x5d", [18843] = "\xc4\x5e",
-+ [18845] = "\xc4\x5f", [18846] = "\xdc\xc6", [18847] = "\xc4\x60",
-+ [18849] = "\xdc\xe3", [18850] = "\xdc\xc5", [18852] = "\xdc\xd8",
-+ [18855] = "\xc4\x61", [18856] = "\xc4\x62", [18858] = "\xc4\x63",
-+ [18859] = "\xdc\xd0", [18860] = "\xc4\x64", [18862] = "\xdc\xcb",
-+ [18863] = "\xdc\xc8", [18865] = "\xdc\xc9", [18867] = "\xdc\xd1",
-+ [18869] = "\xc4\x65", [18871] = "\xf4\xa2", [18872] = "\xc4\x66",
-+ [18874] = "\xdc\xce", [18875] = "\xb9\xbd", [18876] = "\xc4\xc8",
-+ [18877] = "\xc1\xe4", [18878] = "\xdc\xcc", [18880] = "\xdc\xc7",
-+ [18881] = "\xc4\x67", [18883] = "\xdc\xca", [18886] = "\xc4\x68",
-+ [18887] = "\xc4\x69", [18888] = "\xcd\xcd", [18889] = "\xcb\xea",
-+ [18893] = "\xdc\xcf", [18894] = "\xdc\xd9", [18898] = "\xc4\x6a",
-+ [18901] = "\xc4\x6b", [18903] = "\xdc\xe1", [18904] = "\xdc\xda",
-+ [18907] = "\xdc\xe7", [18909] = "\xdc\xe5", [18910] = "\xc4\x6c",
-+ [18911] = "\xc4\x6d", [18913] = "\xc4\x6e", [18914] = "\xdc\xe0",
-+ [18915] = "\xc4\x6f", [18917] = "\xc4\x70", [18921] = "\xdc\xdf",
-+ [18923] = "\xc4\xd0", [18925] = "\xc1\xe5", [18926] = "\xc4\x71",
-+ [18927] = "\xdc\xdd", [18928] = "\xc4\x72", [18929] = "\xc4\x73",
-+ [18930] = "\xdc\xdb", [18931] = "\xc4\x74", [18933] = "\xdc\xe2",
-+ [18938] = "\xdc\xe8", [18939] = "\xc8\xf5", [18940] = "\xdc\xee",
-+ [18943] = "\xc4\x75", [18945] = "\xc4\x76", [18946] = "\xdc\xe9",
-+ [18947] = "\xdc\xec", [18948] = "\xdc\xe6", [18949] = "\xc4\x77",
-+ [18951] = "\xc3\xf4", [18953] = "\xc9\xb8", [18954] = "\xc4\x78",
-+ [18955] = "\xdc\xdc", [18957] = "\xc4\x79", [18958] = "\xdc\xe4",
-+ [18959] = "\xbe\xc0", [18960] = "\xc4\x7a", [18961] = "\xcc\xcf",
-+ [18962] = "\xdc\xf8", [18963] = "\xdc\xeb", [18964] = "\xc4\x7b",
-+ [18968] = "\xc4\x7c", [18969] = "\xb8\xa2", [18970] = "\xb2\xa3",
-+ [18971] = "\xb3\xdf", [18974] = "\xdc\xd3", [18976] = "\xc4\x7d",
-+ [18978] = "\xc4\x7e", [18980] = "\xc5\x21", [18981] = "\xbe\xc1",
-+ [18982] = "\xdc\xf0", [18983] = "\xc5\x22", [18984] = "\xdc\xf7",
-+ [18985] = "\xbc\xf9", [18986] = "\xb3\xf2", [18987] = "\xc5\x23",
-+ [18989] = "\xc3\xae", [18990] = "\xc5\x24", [18991] = "\xc5\x25",
-+ [18996] = "\xdc\xed", [18997] = "\xc5\x26", [18998] = "\xc5\x27",
-+ [18999] = "\xdc\xf2", [19000] = "\xdc\xf6", [19001] = "\xc5\x28",
-+ [19002] = "\xc5\x29", [19003] = "\xb6\xb6", [19006] = "\xc5\x2a",
-+ [19008] = "\xc5\x2b", [19009] = "\xc5\x2c", [19010] = "\xc5\x2d",
-+ [19013] = "\xc5\x2e", [19014] = "\xc5\x2f", [19016] = "\xb5\xcc",
-+ [19017] = "\xdc\xf4", [19019] = "\xc5\x30", [19023] = "\xb5\xa1",
-+ [19025] = "\xc6\xcb", [19026] = "\xdc\xf3", [19028] = "\xc5\x31",
-+ [19030] = "\xdc\xf5", [19031] = "\xc5\x32", [19034] = "\xc5\x33",
-+ [19035] = "\xf4\x49", [19041] = "\xc5\x34", [19042] = "\xdc\xef",
-+ [19043] = "\xc5\x35", [19048] = "\xdc\xf1", [19054] = "\xc5\x36",
-+ [19055] = "\xb3\xe0", [19056] = "\xc3\xc9", [19057] = "\xc5\x37",
-+ [19059] = "\xc5\x38", [19060] = "\xdc\xfc", [19062] = "\xc5\x39",
-+ [19063] = "\xc5\x3a", [19065] = "\xc5\x3b", [19067] = "\xc5\x3c",
-+ [19069] = "\xdc\xfa", [19070] = "\xb8\xe9", [19072] = "\xdc\xf9",
-+ [19073] = "\xc5\x3d", [19079] = "\xdd\xa1", [19083] = "\xc5\x3e",
-+ [19084] = "\xdb\xd8", [19085] = "\xc5\x3f", [19086] = "\xc5\x40",
-+ [19087] = "\xc5\x41", [19088] = "\xdc\xfb", [19090] = "\xdc\xfd",
-+ [19091] = "\xdc\xfe", [19093] = "\xc5\x42", [19098] = "\xdd\xac",
-+ [19099] = "\xc5\x43", [19100] = "\xdd\xa8", [19102] = "\xdb\xed",
-+ [19103] = "\xc5\x44", [19104] = "\xc5\x45", [19105] = "\xc5\x46",
-+ [19107] = "\xdd\xa7", [19108] = "\xc5\x47", [19112] = "\xdd\xa6",
-+ [19115] = "\xdd\xa3", [19117] = "\xc5\x48", [19118] = "\xc5\x49",
-+ [19119] = "\xc5\x4a", [19121] = "\xdc\xea", [19122] = "\xdd\xa5",
-+ [19123] = "\xdd\xa4", [19126] = "\xc5\x4b", [19128] = "\xc5\x4d",
-+ [19129] = "\xc5\x4c", [19132] = "\xc5\x4e", [19136] = "\xc5\x4f",
-+ [19137] = "\xdd\xaa", [19139] = "\xcf\xa6", [19140] = "\xc5\x50",
-+ [19141] = "\xc5\x51", [19142] = "\xc5\x52", [19146] = "\xdd\xad",
-+ [19147] = "\xb6\xfb", [19148] = "\xc5\x53", [19149] = "\xc5\x54",
-+ [19150] = "\xdd\xa9", [19151] = "\xdd\xab", [19154] = "\xf4\x4a",
-+ [19156] = "\xc5\x55", [19159] = "\xc5\x56", [19160] = "\xc8\xa7",
-+ [19162] = "\xdd\xae", [19164] = "\xc5\x57", [19168] = "\xc5\x58",
-+ [19169] = "\xc5\x59", [19170] = "\xc5\x5a", [19178] = "\xdd\xb2",
-+ [19179] = "\xdd\xaf", [19180] = "\xc5\x5b", [19181] = "\xc5\x5c",
-+ [19186] = "\xc5\x5d", [19187] = "\xc5\x5e", [19188] = "\xcd\xf3",
-+ [19189] = "\xdd\xb0", [19190] = "\xc5\x5f", [19191] = "\xc5\x60",
-+ [19193] = "\xc5\x61", [19194] = "\xdc\xde", [19199] = "\xc5\x62",
-+ [19200] = "\xc5\x63", [19201] = "\xc5\x64", [19202] = "\xdd\xb3",
-+ [19206] = "\xdd\xb4", [19207] = "\xc5\x65", [19211] = "\xc5\x66",
-+ [19213] = "\xb1\xb5", [19214] = "\xc5\x67", [19215] = "\xdd\xb6",
-+ [19216] = "\xb7\xe7", [19217] = "\xbc\xa1", [19219] = "\xb6\xd5",
-+ [19220] = "\xc5\x68", [19223] = "\xb2\xa4", [19224] = "\xc5\x69",
-+ [19227] = "\xc5\x6a", [19228] = "\xc5\x6b", [19231] = "\xc5\x6c",
-+ [19234] = "\xcd\xdf", [19237] = "\xc5\x6d", [19238] = "\xc5\x6e",
-+ [19239] = "\xdd\xb8", [19240] = "\xdd\xb7", [19241] = "\xdd\xba",
-+ [19242] = "\xb5\xbd", [19243] = "\xc5\x6f", [19245] = "\xb6\xd6",
-+ [19246] = "\xb4\xbe", [19247] = "\xc5\x70", [19251] = "\xdd\xbd",
-+ [19254] = "\xc5\x71", [19255] = "\xdd\xbc", [19257] = "\xdd\xbe",
-+ [19258] = "\xc5\x72", [19260] = "\xb2\xce", [19261] = "\xc5\x73",
-+ [19262] = "\xc3\xb7", [19264] = "\xdd\xbf", [19266] = "\xc5\x74",
-+ [19267] = "\xb4\xbf", [19268] = "\xdd\xc1", [19270] = "\xc5\x75",
-+ [19272] = "\xc5\x76", [19273] = "\xdd\xc0", [19275] = "\xdd\xc2",
-+ [19277] = "\xc5\x77", [19279] = "\xdd\xc3", [19280] = "\xc5\x78",
-+ [19281] = "\xdd\xc4", [19282] = "\xbb\xdf", [19283] = "\xc0\xb5",
-+ [19284] = "\xba\xa1", [19286] = "\xc9\xf0", [19287] = "\xc5\x79",
-+ [19289] = "\xca\xe2", [19290] = "\xcf\xc4", [19291] = "\xc5\x7a",
-+ [19294] = "\xc5\x7b", [19295] = "\xbb\xf5", [19296] = "\xc5\x7c",
-+ [19299] = "\xba\xd0", [19300] = "\xce\xf2", [19301] = "\xc5\x7d",
-+ [19304] = "\xdd\xc5", [19305] = "\xdd\xc6", [19307] = "\xbb\xe0",
-+ [19309] = "\xc5\x7e", [19310] = "\xc6\x21", [19311] = "\xdd\xc7",
-+ [19312] = "\xdd\xc8", [19314] = "\xc6\x22", [19315] = "\xdd\xca",
-+ [19316] = "\xdd\xc9", [19317] = "\xc6\x23", [19318] = "\xcb\xd8",
-+ [19321] = "\xbd\xde", [19322] = "\xbc\xec", [19323] = "\xbb\xc4",
-+ [19325] = "\xdd\xcb", [19333] = "\xdd\xcd", [19334] = "\xbf\xa3",
-+ [19335] = "\xc6\x24", [19336] = "\xdd\xcc", [19339] = "\xc6\x25",
-+ [19342] = "\xdd\xce", [19343] = "\xc6\x26", [19344] = "\xc6\x27",
-+ [19346] = "\xc6\x28", [19347] = "\xc6\x29", [19348] = "\xdd\xcf",
-+ [19352] = "\xc6\x2a", [19353] = "\xc6\x2b", [19354] = "\xdd\xd0",
-+ [19355] = "\xdd\xd1", [19356] = "\xc6\x2c", [19357] = "\xc6\x2d",
-+ [19358] = "\xc6\x2e", [19359] = "\xdd\xd2", [19360] = "\xc6\x2f",
-+ [19361] = "\xdd\xd4", [19362] = "\xdd\xd3", [19363] = "\xdd\xd5",
-+ [19364] = "\xb2\xa5", [19365] = "\xc3\xca", [19367] = "\xdd\xd6",
-+ [19368] = "\xc6\x30", [19369] = "\xc6\x31", [19370] = "\xbb\xa6",
-+ [19371] = "\xb3\xcc", [19372] = "\xdd\xd7", [19373] = "\xc6\x32",
-+ [19374] = "\xc6\x33", [19375] = "\xc5\xc2", [19376] = "\xd4\xcc",
-+ [19379] = "\xc6\x34", [19380] = "\xc6\x35", [19381] = "\xb5\xa3",
-+ [19382] = "\xdd\xd8", [19385] = "\xc6\x36", [19387] = "\xdd\xd9",
-+ [19388] = "\xc6\x37", [19389] = "\xca\xec", [19390] = "\xcb\xe8",
-+ [19394] = "\xc6\xc7", [19395] = "\xdd\xda", [19396] = "\xc8\xe6",
-+ [19398] = "\xc6\x38", [19400] = "\xc8\xfb", [19402] = "\xc6\x39",
-+ [19403] = "\xcc\xd3", [19407] = "\xdd\xdb", [19409] = "\xc6\x3a",
-+ [19411] = "\xc6\x3b", [19414] = "\xc6\x3c", [19415] = "\xc6\x3d",
-+ [19419] = "\xdd\xdd", [19420] = "\xdd\xdc", [19422] = "\xc6\x3e",
-+ [19423] = "\xdd\xdf", [19425] = "\xc6\x3f", [19427] = "\xdd\xde",
-+ [19431] = "\xc6\x40", [19433] = "\xc6\x41", [19439] = "\xc6\x42",
-+ [19442] = "\xc6\x43", [19444] = "\xc6\x44", [19445] = "\xc6\x45",
-+ [19448] = "\xdd\xe1", [19449] = "\xc6\x46", [19453] = "\xc6\x47",
-+ [19454] = "\xc6\x48", [19455] = "\xbb\xe1", [19456] = "\xc6\x49",
-+ [19457] = "\xcc\xb1", [19458] = "\xc6\x4a", [19459] = "\xdd\xe2",
-+ [19460] = "\xdd\xe3", [19463] = "\xb5\xa4", [19465] = "\xc6\x4b",
-+ [19467] = "\xdd\xe4", [19471] = "\xc6\x4c", [19475] = "\xdd\xe6",
-+ [19476] = "\xdd\xe5", [19478] = "\xc6\x4d", [19479] = "\xc6\x4e",
-+ [19480] = "\xc6\x4f", [19484] = "\xc6\x50", [19486] = "\xc6\x51",
-+ [19491] = "\xc6\x52", [19492] = "\xbf\xe5", [19493] = "\xc6\x53",
-+ [19494] = "\xc6\x54", [19495] = "\xc9\xb9", [19496] = "\xb1\xca",
-+ [19498] = "\xc6\x55", [19499] = "\xc6\x56", [19502] = "\xc8\xc5",
-+ [19503] = "\xc6\x57", [19504] = "\xc4\xf5", [19505] = "\xbd\xc1",
-+ [19506] = "\xb5\xe1", [19514] = "\xc6\x58", [19515] = "\xc6\x59",
-+ [19517] = "\xc6\x5a", [19518] = "\xc8\xc6", [19519] = "\xc6\x5b",
-+ [19520] = "\xbc\xae", [19522] = "\xc6\x5c", [19524] = "\xc6\x5d",
-+ [19525] = "\xdd\xe8", [19527] = "\xb4\xc0", [19529] = "\xc6\x5e",
-+ [19530] = "\xb1\xf8", [19531] = "\xc6\x5f", [19532] = "\xc6\x60",
-+ [19533] = "\xc6\xf2", [19534] = "\xdd\xe7", [19535] = "\xb9\xbe",
-+ [19536] = "\xc3\xd3", [19538] = "\xdd\xe9", [19543] = "\xc7\x36",
-+ [19544] = "\xdd\xf1", [19546] = "\xdd\xea", [19547] = "\xc6\x61",
-+ [19549] = "\xc6\x62", [19551] = "\xc6\x63", [19552] = "\xc2\xc1",
-+ [19554] = "\xb5\xe2", [19555] = "\xdd\xf2", [19556] = "\xc6\x64",
-+ [19558] = "\xc6\x65", [19560] = "\xc6\x66", [19561] = "\xc6\x67",
-+ [19562] = "\xb7\xe8", [19563] = "\xc6\x68", [19565] = "\xb5\xa5",
-+ [19566] = "\xdd\xf0", [19569] = "\xdd\xee", [19570] = "\xdd\xeb",
-+ [19571] = "\xcd\xe0", [19573] = "\xc6\x69", [19574] = "\xc6\x6a",
-+ [19575] = "\xc6\x6b", [19576] = "\xc4\xc0", [19577] = "\xc6\x6c",
-+ [19580] = "\xc6\xd9", [19581] = "\xdd\xec", [19584] = "\xdd\xf4",
-+ [19586] = "\xdd\xf3", [19587] = "\xb7\xa3", [19588] = "\xc6\x6d",
-+ [19589] = "\xc6\x6e", [19590] = "\xb2\xad", [19591] = "\xc6\x6f",
-+ [19592] = "\xc6\x70", [19593] = "\xba\xbb", [19594] = "\xdd\xed",
-+ [19595] = "\xdd\xef", [19596] = "\xc6\x71", [19599] = "\xc6\x72",
-+ [19601] = "\xcb\xd7", [19602] = "\xc2\xf4", [19611] = "\xcb\xf7",
-+ [19614] = "\xdd\xfc", [19616] = "\xc6\x73", [19617] = "\xdd\xfd",
-+ [19618] = "\xc6\x74", [19619] = "\xb2\xcf", [19620] = "\xc6\x75",
-+ [19624] = "\xca\xa8", [19625] = "\xcc\xfd", [19626] = "\xde\xa1",
-+ [19627] = "\xbc\xa3", [19628] = "\xbe\xc2", [19629] = "\xdd\xf8",
-+ [19630] = "\xdd\xfe", [19631] = "\xb1\xe8", [19633] = "\xb6\xb7",
-+ [19634] = "\xc6\x76", [19636] = "\xdd\xf5", [19637] = "\xdd\xfa",
-+ [19638] = "\xc6\x77", [19641] = "\xc0\xf4", [19642] = "\xc7\xf1",
-+ [19644] = "\xc8\xe7", [19645] = "\xc6\x78", [19647] = "\xc6\x79",
-+ [19648] = "\xc6\x7a", [19649] = "\xc6\x7b", [19650] = "\xc6\x7c",
-+ [19651] = "\xdd\xf7", [19652] = "\xc6\x7d", [19653] = "\xcb\xa1",
-+ [19654] = "\xc6\x7e", [19655] = "\xdd\xf9", [19657] = "\xde\xa4",
-+ [19658] = "\xc7\x21", [19659] = "\xde\xa2", [19660] = "\xc7\x22",
-+ [19661] = "\xdd\xfb", [19664] = "\xc7\x23", [19665] = "\xcb\xa2",
-+ [19666] = "\xc7\xc8", [19667] = "\xb5\xe3", [19669] = "\xc5\xa5",
-+ [19671] = "\xc7\x24", [19672] = "\xc3\xed", [19673] = "\xc7\x25",
-+ [19674] = "\xde\xa5", [19675] = "\xc7\x26", [19676] = "\xc7\x27",
-+ [19678] = "\xc7\x28", [19679] = "\xde\xa3", [19680] = "\xc2\xd9",
-+ [19681] = "\xdd\xf6", [19682] = "\xc7\x29", [19683] = "\xb1\xcb",
-+ [19684] = "\xc7\x2a", [19700] = "\xc7\x2b", [19703] = "\xc7\x2c",
-+ [19706] = "\xc7\x2d", [19707] = "\xcd\xce", [19708] = "\xde\xb0",
-+ [19710] = "\xc7\x2e", [19711] = "\xc7\x2f", [19713] = "\xc7\x30",
-+ [19714] = "\xde\xaf", [19715] = "\xc7\x31", [19719] = "\xc0\xf6",
-+ [19721] = "\xde\xac", [19722] = "\xc7\x32", [19723] = "\xcd\xec",
-+ [19726] = "\xc6\xb6", [19727] = "\xde\xa6", [19733] = "\xc4\xc5",
-+ [19734] = "\xc7\x33", [19735] = "\xc7\x34", [19736] = "\xc7\x35",
-+ [19737] = "\xb1\xcc", [19738] = "\xb9\xbf", [19739] = "\xde\xa9",
-+ [19742] = "\xc7\x37", [19743] = "\xc7\x38", [19745] = "\xc7\x39",
-+ [19746] = "\xbd\xa7", [19747] = "\xde\xae", [19749] = "\xde\xad",
-+ [19750] = "\xde\xa8", [19752] = "\xde\xab", [19753] = "\xc7\x3a",
-+ [19755] = "\xb3\xe8", [19756] = "\xc7\x3b", [19757] = "\xde\xaa",
-+ [19758] = "\xc7\xc9", [19759] = "\xc7\x3c", [19761] = "\xce\xae",
-+ [19764] = "\xbe\xf4", [19765] = "\xc0\xf5", [19783] = "\xc7\x3d",
-+ [19785] = "\xde\xb6", [19786] = "\xde\xb4", [19788] = "\xc9\xcd",
-+ [19790] = "\xc7\x3e", [19791] = "\xc7\x3f", [19793] = "\xc7\x40",
-+ [19795] = "\xde\xb1", [19796] = "\xde\xb3", [19797] = "\xc7\x41",
-+ [19798] = "\xb1\xba", [19799] = "\xc7\x42", [19801] = "\xb9\xc0",
-+ [19802] = "\xcf\xb2", [19804] = "\xb3\xbd", [19806] = "\xc9\xe2",
-+ [19807] = "\xc7\x43", [19808] = "\xc7\x44", [19812] = "\xcd\xe1",
-+ [19815] = "\xb3\xa4", [19816] = "\xbf\xbb", [19817] = "\xde\xb5",
-+ [19820] = "\xc7\x45", [19826] = "\xc7\x46", [19829] = "\xde\xba",
-+ [19831] = "\xc7\x47", [19832] = "\xbe\xc3", [19836] = "\xcd\xb0",
-+ [19838] = "\xde\xb7", [19841] = "\xc7\x48", [19842] = "\xc7\x49",
-+ [19843] = "\xde\xb2", [19844] = "\xc7\x4a", [19845] = "\xde\xb8",
-+ [19846] = "\xc7\x4b", [19847] = "\xc7\x4c", [19848] = "\xc7\x4d",
-+ [19849] = "\xce\xde", [19851] = "\xc5\xf3", [19852] = "\xc6\xc2",
-+ [19866] = "\xc7\x4e", [19868] = "\xc7\x4f", [19871] = "\xb3\xb6",
-+ [19874] = "\xb1\xd5", [19876] = "\xc7\x50", [19877] = "\xde\xbe",
-+ [19879] = "\xc7\x51", [19880] = "\xde\xc1", [19881] = "\xc7\x52",
-+ [19884] = "\xce\xc3", [19885] = "\xc7\x53", [19887] = "\xc7\x54",
-+ [19888] = "\xcd\xe4", [19892] = "\xc7\x55", [19893] = "\xde\xc8",
-+ [19894] = "\xde\xc2", [19895] = "\xde\xbf", [19896] = "\xc7\x56",
-+ [19898] = "\xc7\x57", [19899] = "\xce\xd4", [19900] = "\xde\xc5",
-+ [19902] = "\xc7\x58", [19903] = "\xc7\x59", [19905] = "\xbd\xca",
-+ [19906] = "\xde\xc7", [19909] = "\xde\xcc", [19910] = "\xc7\x5a",
-+ [19912] = "\xc5\xf1", [19913] = "\xde\xca", [19915] = "\xc7\x5b",
-+ [19917] = "\xc7\x5c", [19918] = "\xde\xc4", [19919] = "\xc7\x5d",
-+ [19920] = "\xc7\x5e", [19921] = "\xc3\xb8", [19922] = "\xc7\x5f",
-+ [19924] = "\xde\xcb", [19925] = "\xc7\x60", [19926] = "\xde\xc0",
-+ [19928] = "\xde\xc6", [19929] = "\xc7\x61", [19930] = "\xde\xcd",
-+ [19931] = "\xb0\xfc", [19932] = "\xde\xc3", [19934] = "\xde\xce",
-+ [19935] = "\xc7\x62", [19936] = "\xc7\x63", [19937] = "\xbf\xbc",
-+ [19938] = "\xf4\x4c", [19939] = "\xbd\xdf", [19940] = "\xc7\x64",
-+ [19941] = "\xca\xa5", [19942] = "\xc7\x65", [19943] = "\xba\xae",
-+ [19944] = "\xf4\x4b", [19945] = "\xde\xbb", [19946] = "\xde\xc9",
-+ [19947] = "\xc5\xba", [19948] = "\xc7\x66", [19952] = "\xc7\x67",
-+ [19956] = "\xc7\x68", [19957] = "\xc0\xb6", [19959] = "\xb3\xe9",
-+ [19960] = "\xba\xd1", [19961] = "\xbe\xc4", [19962] = "\xde\xbd",
-+ [19963] = "\xbd\xc2", [19971] = "\xb7\xcc", [19973] = "\xde\xbc",
-+ [19977] = "\xde\xd2", [19978] = "\xbd\xed", [19979] = "\xb8\xba",
-+ [19981] = "\xde\xe1", [19982] = "\xc7\x69", [19983] = "\xde\xdb",
-+ [19984] = "\xb5\xf4", [19985] = "\xc5\xcf", [19986] = "\xc7\x6a",
-+ [19987] = "\xde\xd6", [19988] = "\xde\xdf", [19989] = "\xb0\xaf",
-+ [19990] = "\xb1\xb2", [19991] = "\xc7\x6b", [19993] = "\xb2\xb9",
-+ [19995] = "\xde\xd8", [19996] = "\xc2\xac", [19997] = "\xde\xcf",
-+ [19998] = "\xde\xd1", [19999] = "\xb9\xc1", [20002] = "\xc7\x6c",
-+ [20006] = "\xc7\x6d", [20008] = "\xde\xe2", [20009] = "\xc7\x6e",
-+ [20010] = "\xde\xdd", [20011] = "\xc7\x6f", [20012] = "\xc7\x70",
-+ [20014] = "\xde\xd5", [20019] = "\xde\xdc", [20020] = "\xc7\x71",
-+ [20021] = "\xc7\x72", [20024] = "\xc7\x73", [20025] = "\xc7\x74",
-+ [20026] = "\xcc\xab", [20027] = "\xc7\x75", [20029] = "\xde\xda",
-+ [20030] = "\xde\xde", [20031] = "\xc7\x76", [20033] = "\xc7\x77",
-+ [20034] = "\xc7\x78", [20035] = "\xc7\x79", [20036] = "\xc7\x7a",
-+ [20038] = "\xb8\xd0", [20039] = "\xc7\x7b", [20040] = "\xbe\xc5",
-+ [20043] = "\xc3\xb9", [20044] = "\xc7\x7c", [20045] = "\xc7\x7d",
-+ [20046] = "\xc7\x7e", [20047] = "\xde\xd4", [20050] = "\xc8\x21",
-+ [20051] = "\xc8\x22", [20055] = "\xcd\xaf", [20056] = "\xc8\x23",
-+ [20059] = "\xde\xd7", [20062] = "\xde\xd0", [20063] = "\xc5\xf2",
-+ [20066] = "\xde\xd3", [20067] = "\xc8\x24", [20070] = "\xde\xd9",
-+ [20075] = "\xc8\x25", [20077] = "\xc8\x26", [20078] = "\xcf\xd1",
-+ [20079] = "\xbc\xbe", [20080] = "\xcb\xfe", [20082] = "\xde\xe3",
-+ [20092] = "\xc8\xae", [20093] = "\xc8\x27", [20095] = "\xde\xef",
-+ [20096] = "\xb8\xbb", [20099] = "\xc8\x28", [20102] = "\xbd\xe0",
-+ [20104] = "\xde\xe5", [20105] = "\xc8\x29", [20108] = "\xce\xaf",
-+ [20109] = "\xb9\xc2", [20111] = "\xde\xf2", [20112] = "\xc8\x2a",
-+ [20114] = "\xb0\xee", [20117] = "\xde\xf0", [20119] = "\xc8\x2b",
-+ [20122] = "\xde\xe4", [20125] = "\xc8\x2c", [20126] = "\xc8\x2d",
-+ [20127] = "\xde\xea", [20129] = "\xc8\x2e", [20130] = "\xde\xec",
-+ [20131] = "\xc8\x2f", [20134] = "\xcd\xcf", [20135] = "\xde\xe7",
-+ [20138] = "\xc5\xae", [20139] = "\xc8\x30", [20141] = "\xde\xe9",
-+ [20143] = "\xc8\x31", [20144] = "\xc8\x32", [20145] = "\xc8\x33",
-+ [20146] = "\xde\xf1", [20147] = "\xc8\x34", [20148] = "\xde\xeb",
-+ [20149] = "\xcc\xc7", [20151] = "\xc8\x35", [20152] = "\xc8\x36",
-+ [20153] = "\xde\xe6", [20154] = "\xc8\x37", [20155] = "\xbc\xa2",
-+ [20156] = "\xde\xfe", [20157] = "\xc8\x38", [20158] = "\xc8\x39",
-+ [20159] = "\xc8\x3a", [20161] = "\xb3\xea", [20163] = "\xde\xe8",
-+ [20164] = "\xde\xed", [20165] = "\xde\xee", [20173] = "\xc2\xec",
-+ [20174] = "\xc2\xda", [20187] = "\xc8\x3b", [20188] = "\xde\xf6",
-+ [20189] = "\xc8\x3c", [20190] = "\xc8\x3d", [20191] = "\xde\xfc",
-+ [20194] = "\xde\xfa", [20196] = "\xc5\xa9", [20199] = "\xdf\xa3",
-+ [20200] = "\xde\xf7", [20201] = "\xc8\x3e", [20203] = "\xc8\x3f",
-+ [20205] = "\xc8\x40", [20206] = "\xde\xf8", [20207] = "\xde\xe0",
-+ [20209] = "\xb5\xf9", [20210] = "\xc9\xba", [20212] = "\xc8\x41",
-+ [20214] = "\xbc\xbf", [20216] = "\xc8\x42", [20217] = "\xb9\xf7",
-+ [20218] = "\xc8\x43", [20220] = "\xc8\x44", [20221] = "\xc8\x45",
-+ [20223] = "\xcf\xb3", [20225] = "\xde\xf4", [20227] = "\xdf\xa2",
-+ [20228] = "\xb1\xe9", [20229] = "\xc1\xe6", [20230] = "\xc8\x46",
-+ [20232] = "\xc8\x47", [20234] = "\xc8\x48", [20235] = "\xc8\x49",
-+ [20240] = "\xc7\xf9", [20242] = "\xb4\xc1", [20243] = "\xce\xfa",
-+ [20246] = "\xc8\x4a", [20249] = "\xc8\x4b", [20250] = "\xc8\x4c",
-+ [20251] = "\xcc\xa1", [20252] = "\xc4\xd2", [20253] = "\xc8\x53",
-+ [20255] = "\xc8\x4d", [20256] = "\xc8\x4e", [20257] = "\xde\xfb",
-+ [20258] = "\xde\xfd", [20259] = "\xc8\x4f", [20262] = "\xc8\x50",
-+ [20264] = "\xc1\xb2", [20267] = "\xc8\x51", [20268] = "\xc8\x52",
-+ [20270] = "\xdf\xa1", [20271] = "\xde\xf9", [20273] = "\xde\xf3",
-+ [20277] = "\xb4\xc3", [20287] = "\xc8\x54", [20289] = "\xc8\x55",
-+ [20290] = "\xc8\x56", [20291] = "\xc8\x57", [20292] = "\xb7\xe9",
-+ [20295] = "\xc8\x58", [20296] = "\xdf\xaf", [20297] = "\xc8\x59",
-+ [20298] = "\xc8\x5a", [20299] = "\xdf\xaa", [20300] = "\xc0\xf8",
-+ [20301] = "\xc8\x5b", [20302] = "\xc8\x5c", [20303] = "\xb3\xe3",
-+ [20305] = "\xc8\x5d", [20306] = "\xc8\x5e", [20308] = "\xbd\xe1",
-+ [20310] = "\xdf\xb3", [20312] = "\xc8\x5f", [20316] = "\xc8\x60",
-+ [20317] = "\xdf\xac", [20318] = "\xc4\xac", [20319] = "\xdf\xa9",
-+ [20320] = "\xc4\xd9", [20324] = "\xdf\xcc", [20328] = "\xdf\xa6",
-+ [20330] = "\xdf\xa5", [20332] = "\xdf\xae", [20333] = "\xc8\x61",
-+ [20334] = "\xc8\x62", [20336] = "\xdf\xa8", [20337] = "\xdf\xa7",
-+ [20338] = "\xdf\xad", [20339] = "\xc8\x63", [20340] = "\xc0\xa1",
-+ [20342] = "\xdf\xa4", [20343] = "\xc8\x64", [20344] = "\xc8\x65",
-+ [20347] = "\xc8\x66", [20348] = "\xc8\x67", [20349] = "\xc8\x68",
-+ [20350] = "\xdf\xb0", [20352] = "\xc8\x69", [20353] = "\xdf\xb1",
-+ [20354] = "\xc8\x6a", [20355] = "\xc8\x6b", [20356] = "\xc8\x6c",
-+ [20358] = "\xc8\x6d", [20359] = "\xb4\xc2", [20362] = "\xc8\x6e",
-+ [20367] = "\xc8\x6f", [20368] = "\xc8\x70", [20369] = "\xdf\xb6",
-+ [20371] = "\xdf\xb5", [20372] = "\xdf\xb7", [20373] = "\xc8\x71",
-+ [20374] = "\xc8\x72", [20375] = "\xc8\x73", [20376] = "\xc8\x74",
-+ [20378] = "\xdf\xba", [20382] = "\xc8\x75", [20383] = "\xc8\x76",
-+ [20384] = "\xc8\x77", [20385] = "\xc5\xc3", [20387] = "\xdf\xb4",
-+ [20389] = "\xc8\x78", [20390] = "\xc8\x79", [20393] = "\xdf\xb8",
-+ [20396] = "\xc8\x7a", [20400] = "\xb7\xe3", [20401] = "\xc2\xf9",
-+ [20402] = "\xdf\xb2", [20403] = "\xc7\xbb", [20405] = "\xc8\x7b",
-+ [20406] = "\xdf\xb9", [20407] = "\xc8\x7c", [20408] = "\xc8\x7d",
-+ [20410] = "\xc8\x7e", [20420] = "\xdf\xbe", [20421] = "\xdf\xbc",
-+ [20424] = "\xdf\xbf", [20426] = "\xc9\x21", [20427] = "\xdf\xc2",
-+ [20430] = "\xc9\x22", [20431] = "\xdf\xbb", [20432] = "\xb9\xea",
-+ [20433] = "\xc7\xa8", [20436] = "\xde\xb9", [20440] = "\xc9\x23",
-+ [20441] = "\xc9\x24", [20443] = "\xcd\xf4", [20444] = "\xdf\xbd",
-+ [20446] = "\xdf\xc1", [20447] = "\xc2\xf5", [20448] = "\xc9\x25",
-+ [20449] = "\xdf\xc0", [20451] = "\xdf\xab", [20453] = "\xc9\x26",
-+ [20454] = "\xef\xe9", [20457] = "\xc9\x27", [20458] = "\xdf\xc5",
-+ [20460] = "\xc9\x28", [20461] = "\xc9\x29", [20462] = "\xdf\xc9",
-+ [20464] = "\xc9\x2a", [20465] = "\xdf\xc7", [20469] = "\xc9\x2b",
-+ [20470] = "\xc9\x2c", [20471] = "\xc9\x2d", [20473] = "\xdf\xc3",
-+ [20475] = "\xdf\xc4", [20477] = "\xc9\x2e", [20479] = "\xdf\xc8",
-+ [20481] = "\xdf\xc6", [20485] = "\xc9\xce", [20487] = "\xc9\x2f",
-+ [20488] = "\xdf\xce", [20490] = "\xdf\xcb", [20491] = "\xdf\xca",
-+ [20493] = "\xdf\xcd", [20494] = "\xc6\xd4", [20495] = "\xdf\xcf",
-+ [20496] = "\xc9\x30", [20499] = "\xc9\x31", [20502] = "\xc3\xf5",
-+ [20503] = "\xc2\xed", [20504] = "\xf4\x4d", [20508] = "\xc0\xa5",
-+ [20511] = "\xc9\x32", [20512] = "\xdf\xd0", [20514] = "\xdf\xd2",
-+ [20516] = "\xc9\x33", [20519] = "\xc9\x34", [20521] = "\xc9\x35",
-+ [20524] = "\xc9\x36", [20526] = "\xdf\xd1", [20531] = "\xc9\x37",
-+ [20532] = "\xc9\x38", [20536] = "\xc9\x39", [20537] = "\xc9\x3a",
-+ [20538] = "\xc9\x3b", [20539] = "\xc9\x3c", [20540] = "\xde\xf5",
-+ [20542] = "\xc9\x41", [20545] = "\xdf\xd3", [20548] = "\xc9\x3d",
-+ [20549] = "\xc9\x3e", [20552] = "\xc6\xe7", [20557] = "\xc9\x3f",
-+ [20558] = "\xc9\x40", [20563] = "\xdf\xd4", [20564] = "\xc9\x42",
-+ [20565] = "\xc9\x43", [20571] = "\xb2\xd0", [20572] = "\xc9\x44",
-+ [20574] = "\xc9\x45", [20575] = "\xc5\xf4", [20576] = "\xb3\xa5",
-+ [20581] = "\xc9\x46", [20582] = "\xc9\x47", [20584] = "\xb5\xe4",
-+ [20588] = "\xbc\xde", [20589] = "\xba\xd2", [20590] = "\xc9\x48",
-+ [20593] = "\xc9\x49", [20597] = "\xc9\x4a", [20598] = "\xc9\x4b",
-+ [20601] = "\xcf\xa7", [20602] = "\xbf\xe6", [20606] = "\xb1\xea",
-+ [20610] = "\xdf\xd6", [20612] = "\xc9\x4c", [20613] = "\xc9\x4d",
-+ [20614] = "\xc9\x4e", [20615] = "\xc9\x4f", [20616] = "\xc9\x50",
-+ [20617] = "\xdf\xd5", [20619] = "\xc9\x51", [20628] = "\xc9\x52",
-+ [20635] = "\xc9\x53", [20636] = "\xdf\xd9", [20637] = "\xc3\xba",
-+ [20638] = "\xdf\xdc", [20639] = "\xdf\xd7", [20640] = "\xc9\x54",
-+ [20641] = "\xc9\x55", [20643] = "\xdf\xdb", [20644] = "\xc9\x56",
-+ [20647] = "\xc9\x57", [20648] = "\xdf\xda", [20649] = "\xc5\xc0",
-+ [20650] = "\xb0\xd9", [20651] = "\xf4\x2e", [20664] = "\xce\xf5",
-+ [20666] = "\xc9\x58", [20667] = "\xdf\xde", [20671] = "\xb1\xa8",
-+ [20673] = "\xc9\x59", [20675] = "\xc9\x5a", [20676] = "\xc9\x5b",
-+ [20677] = "\xc9\x5c", [20678] = "\xc9\x5d", [20680] = "\xc9\x5e",
-+ [20681] = "\xdf\xe0", [20684] = "\xc9\x5f", [20685] = "\xdf\xdf",
-+ [20687] = "\xdf\xdd", [20692] = "\xc9\x60", [20705] = "\xdf\xd8",
-+ [20713] = "\xcb\xa3", [20714] = "\xc9\x61", [20717] = "\xdf\xe2",
-+ [20723] = "\xc9\x62", [20724] = "\xc9\x63", [20725] = "\xc9\x64",
-+ [20726] = "\xc9\x65", [20727] = "\xc9\x66", [20729] = "\xdf\xe1",
-+ [20731] = "\xc9\x67", [20732] = "\xc9\x68", [20735] = "\xc9\x69",
-+ [20740] = "\xb1\xeb", [20745] = "\xdf\xe4", [20746] = "\xca\xb2",
-+ [20748] = "\xdf\xe3", [20750] = "\xc9\x6a", [20752] = "\xc9\x6b",
-+ [20753] = "\xcc\xb5", [20758] = "\xbe\xc7", [20763] = "\xc9\x6c",
-+ [20765] = "\xc9\x6d", [20767] = "\xc9\x6e", [20768] = "\xc9\x6f",
-+ [20769] = "\xc9\x70", [20774] = "\xc1\xb3", [20776] = "\xc9\x71",
-+ [20780] = "\xbe\xc6", [20785] = "\xc9\x72", [20789] = "\xc9\x73",
-+ [20790] = "\xc9\x74", [20791] = "\xc9\x75", [20793] = "\xce\xfb",
-+ [20794] = "\xc9\x76", [20795] = "\xc9\x77", [20796] = "\xdf\xea",
-+ [20798] = "\xc0\xf9", [20800] = "\xc9\x78", [20802] = "\xc9\x79",
-+ [20805] = "\xdf\xe6", [20806] = "\xdf\xeb", [20807] = "\xc9\x7a",
-+ [20809] = "\xb1\xec", [20810] = "\xc9\x7b", [20812] = "\xc9\x7c",
-+ [20814] = "\xc9\x7d", [20816] = "\xc9\x7e", [20818] = "\xdf\xe9",
-+ [20820] = "\xc7\xe1", [20821] = "\xdf\xe5", [20822] = "\xdf\xe8",
-+ [20823] = "\xbe\xc8", [20824] = "\xca\x21", [20825] = "\xc8\xd1",
-+ [20828] = "\xdf\xec", [20830] = "\xbc\xd1", [20841] = "\xca\x22",
-+ [20845] = "\xc0\xfa", [20848] = "\xca\x23", [20852] = "\xdf\xef",
-+ [20853] = "\xca\x24", [20855] = "\xca\x25", [20856] = "\xdf\xe7",
-+ [20858] = "\xb7\xa7", [20860] = "\xca\x26", [20863] = "\xdf\xed",
-+ [20866] = "\xca\x27", [20868] = "\xcd\xd0", [20869] = "\xdf\xf0",
-+ [20873] = "\xf4\xa6", [20874] = "\xca\x28", [20875] = "\xca\x29",
-+ [20879] = "\xbd\xcf", [20880] = "\xca\x2a", [20882] = "\xca\x2b",
-+ [20888] = "\xdf\xf1", [20892] = "\xdf\xf2", [20895] = "\xca\x2c",
-+ [20896] = "\xca\x2d", [20897] = "\xc7\xae", [20898] = "\xca\x2e",
-+ [20899] = "\xca\x2f", [20905] = "\xdf\xf4", [20906] = "\xca\x30",
-+ [20910] = "\xdf\xf5", [20911] = "\xca\x31", [20912] = "\xca\x32",
-+ [20913] = "\xca\x33", [20915] = "\xc7\xb3", [20916] = "\xca\x34",
-+ [20920] = "\xc5\xf5", [20921] = "\xdf\xf7", [20923] = "\xca\x35",
-+ [20924] = "\xca\x36", [20926] = "\xdf\xf9", [20928] = "\xce\xd5",
-+ [20930] = "\xdf\xf6", [20931] = "\xca\x37", [20932] = "\xdf\xf8",
-+ [20933] = "\xb1\xed", [20934] = "\xca\x38", [20935] = "\xdf\xf3",
-+ [20937] = "\xca\x39", [20938] = "\xca\x3a", [20940] = "\xca\x3b",
-+ [20943] = "\xd3\xdb", [20944] = "\xdf\xfa", [20949] = "\xc1\xe7",
-+ [20950] = "\xbb\xb8", [20951] = "\xdf\xfc", [20956] = "\xdf\xfb",
-+ [20957] = "\xbf\xa4", [20958] = "\xd2\xd9", [20965] = "\xdf\xfd",
-+ [20968] = "\xca\x3c", [20969] = "\xe0\xa1", [20971] = "\xdf\xee",
-+ [20972] = "\xdf\xfe", [20974] = "\xca\x3d", [20975] = "\xe0\xa2",
-+ [20976] = "\xca\x3e", [20982] = "\xc7\xfa", [20983] = "\xca\x3f",
-+ [20984] = "\xca\x40", [20985] = "\xca\x41", [20989] = "\xe0\xa3",
-+ [20992] = "\xe0\xa4", [20995] = "\xca\x42", [20999] = "\xca\x43",
-+ [21002] = "\xca\x44", [21003] = "\xe0\xa5", [21005] = "\xca\x45",
-+ [21007] = "\xca\x46", [21012] = "\xca\x47", [21016] = "\xe0\xa6",
-+ [21018] = "\xc4\xde", [21019] = "\xca\x48", [21020] = "\xe0\xa8",
-+ [21021] = "\xe0\xa7", [21023] = "\xca\x49", [21024] = "\xe0\xa9",
-+ [21026] = "\xe0\xaa", [21028] = "\xca\x4a", [21029] = "\xbc\xdf",
-+ [21030] = "\xc9\xe3", [21032] = "\xca\x4b", [21033] = "\xca\x4c",
-+ [21034] = "\xcc\xec", [21035] = "\xe0\xab", [21036] = "\xe0\xac",
-+ [21037] = "\xc1\xd6", [21038] = "\xbc\xa4", [21039] = "\xe0\xad",
-+ [21040] = "\xe0\xae", [21041] = "\xca\x4d", [21042] = "\xca\x4e",
-+ [21043] = "\xca\x4f", [21045] = "\xca\x50", [21046] = "\xe0\xaf",
-+ [21047] = "\xca\xd2", [21048] = "\xc8\xc7", [21051] = "\xe0\xb0",
-+ [21052] = "\xc7\xd7", [21054] = "\xca\x51", [21055] = "\xca\x52",
-+ [21056] = "\xca\x53", [21058] = "\xc4\xad", [21059] = "\xca\x54",
-+ [21061] = "\xca\x55", [21062] = "\xca\x56", [21064] = "\xe0\xb1",
-+ [21065] = "\xb2\xe7", [21066] = "\xca\x57", [21067] = "\xb5\xed",
-+ [21068] = "\xca\x58", [21069] = "\xcc\xc6", [21070] = "\xca\x59",
-+ [21071] = "\xcc\xb6", [21072] = "\xca\x5a", [21073] = "\xb2\xb4",
-+ [21074] = "\xcf\xb4", [21075] = "\xca\x5b", [21079] = "\xcb\xd2",
-+ [21080] = "\xca\x5c", [21081] = "\xca\xaa", [21083] = "\xca\x5d",
-+ [21086] = "\xca\x5e", [21087] = "\xca\x5f", [21089] = "\xca\x60",
-+ [21090] = "\xc0\xb7", [21092] = "\xe0\xb2", [21095] = "\xca\x61",
-+ [21096] = "\xca\x62", [21097] = "\xc6\xc3", [21099] = "\xca\x63",
-+ [21100] = "\xca\x64", [21101] = "\xb8\xa3", [21102] = "\xe0\xb3",
-+ [21103] = "\xca\x65", [21104] = "\xba\xd4", [21105] = "\xe0\xb5",
-+ [21106] = "\xe0\xb4", [21108] = "\xca\x66", [21111] = "\xe0\xb6",
-+ [21113] = "\xca\x67", [21117] = "\xca\x68", [21118] = "\xca\x69",
-+ [21122] = "\xe0\xb7", [21123] = "\xca\x6a", [21126] = "\xe0\xb8",
-+ [21131] = "\xca\x6b", [21136] = "\xb5\xbe", [21138] = "\xe0\xb9",
-+ [21143] = "\xe0\xba", [21144] = "\xca\x6c", [21148] = "\xb8\xa4",
-+ [21149] = "\xca\x6d", [21150] = "\xca\x6e", [21151] = "\xc8\xc8",
-+ [21153] = "\xca\x6f", [21154] = "\xe0\xbc", [21156] = "\xca\x70",
-+ [21158] = "\xbe\xf5", [21161] = "\xe0\xbb", [21166] = "\xca\x71",
-+ [21169] = "\xca\x72", [21170] = "\xb6\xb8", [21171] = "\xe0\xbd",
-+ [21172] = "\xe0\xbf", [21174] = "\xe0\xbe", [21175] = "\xca\x73",
-+ [21177] = "\xca\x74", [21180] = "\xca\x75", [21182] = "\xe0\xc0",
-+ [21184] = "\xb8\xd1", [21186] = "\xe0\xc1", [21189] = "\xca\x76",
-+ [21190] = "\xca\x77", [21191] = "\xb6\xe9", [21192] = "\xca\x78",
-+ [21193] = "\xc1\xc0", [21195] = "\xb9\xfd", [21199] = "\xca\x79",
-+ [21200] = "\xe0\xc3", [21201] = "\xe0\xc4", [21202] = "\xe0\xc2",
-+ [21205] = "\xca\x7a", [21209] = "\xbc\xed", [21212] = "\xc6\xc8",
-+ [21213] = "\xb6\xb9", [21219] = "\xca\x7b", [21220] = "\xca\x7c",
-+ [21223] = "\xe0\xc6", [21224] = "\xc3\xac", [21225] = "\xe0\xc5",
-+ [21226] = "\xca\x7d", [21227] = "\xca\x7e", [21228] = "\xcf\xb5",
-+ [21229] = "\xc7\xe2", [21230] = "\xcb\x21", [21234] = "\xcb\x22",
-+ [21236] = "\xcb\x23", [21237] = "\xcb\x24", [21239] = "\xcb\x25",
-+ [21242] = "\xe0\xc9", [21243] = "\xcb\x26", [21245] = "\xcb\x27",
-+ [21250] = "\xcb\x28", [21251] = "\xcb\x29", [21254] = "\xe0\xcb",
-+ [21255] = "\xe0\xc8", [21256] = "\xcb\x2a", [21257] = "\xcb\x2b",
-+ [21259] = "\xcc\xd4", [21260] = "\xe0\xca", [21261] = "\xe0\xcc",
-+ [21262] = "\xcb\x2c", [21263] = "\xce\xc4", [21266] = "\xcb\x2d",
-+ [21268] = "\xcb\x2e", [21269] = "\xe0\xd0", [21271] = "\xcb\x2f",
-+ [21272] = "\xcb\x30", [21273] = "\xe0\xcf", [21274] = "\xc3\xf6",
-+ [21275] = "\xc7\xad", [21276] = "\xcb\x31", [21278] = "\xb8\xa5",
-+ [21279] = "\xe0\xce", [21281] = "\xcb\x32", [21282] = "\xcb\x33",
-+ [21284] = "\xe0\xcd", [21285] = "\xcb\x34", [21286] = "\xcd\xb1",
-+ [21287] = "\xcd\xb2", [21290] = "\xcb\x35", [21291] = "\xcb\x36",
-+ [21293] = "\xcb\x37", [21294] = "\xe0\xd1", [21295] = "\xb1\xee",
-+ [21299] = "\xcb\x38", [21300] = "\xb9\xf6", [21301] = "\xbb\xe2",
-+ [21309] = "\xcb\x39", [21310] = "\xe0\xd2", [21311] = "\xe0\xd3",
-+ [21312] = "\xcb\x3a", [21314] = "\xcb\x3b", [21318] = "\xcb\x3c",
-+ [21319] = "\xe0\xd5", [21320] = "\xcb\x3d", [21325] = "\xcb\x3e",
-+ [21326] = "\xcb\x3f", [21327] = "\xcb\x40", [21328] = "\xcb\x41",
-+ [21331] = "\xbd\xc3", [21334] = "\xcb\x42", [21335] = "\xcb\x43",
-+ [21336] = "\xe0\xd7", [21337] = "\xcb\x44", [21338] = "\xe0\xd6",
-+ [21339] = "\xcb\x45", [21340] = "\xcb\x46", [21342] = "\xcb\x47",
-+ [21343] = "\xcb\x48", [21344] = "\xe0\xd8", [21345] = "\xcb\x49",
-+ [21346] = "\xb3\xcd", [21349] = "\xe0\xda", [21351] = "\xcb\x4a",
-+ [21352] = "\xe0\xd9", [21353] = "\xcb\x4b", [21354] = "\xe0\xdc",
-+ [21355] = "\xe0\xdb", [21356] = "\xcb\x4c", [21360] = "\xcb\x4d",
-+ [21361] = "\xcb\x4e", [21363] = "\xcb\x4f", [21364] = "\xb8\xbc",
-+ [21365] = "\xcb\x50", [21366] = "\xcb\x51", [21367] = "\xce\xa8",
-+ [21369] = "\xb6\xcc", [21371] = "\xb2\xa6", [21374] = "\xcb\x52",
-+ [21376] = "\xcb\x53", [21379] = "\xcb\x54", [21381] = "\xcb\x55",
-+ [21382] = "\xb6\xea", [21383] = "\xcb\x56", [21384] = "\xcb\x57",
-+ [21388] = "\xcb\x58", [21390] = "\xcb\x59", [21391] = "\xcb\x5a",
-+ [21392] = "\xcb\x5b", [21394] = "\xcb\x5c", [21397] = "\xcb\x5d",
-+ [21398] = "\xcb\x5e", [21401] = "\xb4\xe1", [21402] = "\xcb\x5f",
-+ [21403] = "\xcb\x60", [21405] = "\xcb\x61", [21410] = "\xce\xe8",
-+ [21411] = "\xe0\xde", [21413] = "\xcb\x62", [21415] = "\xcb\x63",
-+ [21417] = "\xcb\x64", [21419] = "\xe0\xe0", [21420] = "\xcb\x65",
-+ [21421] = "\xcb\x66", [21423] = "\xcb\x67", [21424] = "\xe0\xe1",
-+ [21426] = "\xb2\xd1", [21429] = "\xcb\x68", [21430] = "\xcb\x69",
-+ [21432] = "\xe0\xdd", [21433] = "\xcb\x6a", [21434] = "\xbb\xb9",
-+ [21435] = "\xcb\x6b", [21436] = "\xcb\x6c", [21437] = "\xc4\xc1",
-+ [21438] = "\xe0\xdf", [21439] = "\xcb\x6d", [21442] = "\xcb\x6e",
-+ [21443] = "\xcb\x6f", [21446] = "\xcb\x70", [21449] = "\xcb\x71",
-+ [21453] = "\xcb\x72", [21454] = "\xe0\xe4", [21456] = "\xbc\xee",
-+ [21457] = "\xcb\x73", [21459] = "\xcb\x74", [21461] = "\xe0\xe2",
-+ [21462] = "\xcb\x75", [21463] = "\xcb\x76", [21465] = "\xcb\x77",
-+ [21466] = "\xb7\xbe", [21469] = "\xc8\xc9", [21470] = "\xe0\xe3",
-+ [21473] = "\xe0\xfe", [21476] = "\xcb\x78", [21477] = "\xcb\x79",
-+ [21479] = "\xcb\x7a", [21480] = "\xe0\xe9", [21481] = "\xcb\x7b",
-+ [21482] = "\xcb\x7c", [21483] = "\xcb\x7d", [21485] = "\xcb\x7e",
-+ [21486] = "\xb8\xbd", [21487] = "\xcc\x21", [21488] = "\xcc\x22",
-+ [21489] = "\xcc\x23", [21491] = "\xb5\xe5", [21492] = "\xcc\x24",
-+ [21493] = "\xe0\xe6", [21494] = "\xcd\xfd", [21495] = "\xcc\x25",
-+ [21497] = "\xce\xb0", [21498] = "\xcc\x26", [21505] = "\xcc\x27",
-+ [21514] = "\xcc\x28", [21515] = "\xcc\x29", [21522] = "\xc2\xf6",
-+ [21524] = "\xcc\x2a", [21525] = "\xe0\xe8", [21526] = "\xcc\x2b",
-+ [21528] = "\xcc\x2c", [21529] = "\xcc\x2d", [21530] = "\xcc\x2e",
-+ [21531] = "\xcc\x2f", [21532] = "\xcc\x30", [21533] = "\xcc\x31",
-+ [21534] = "\xcc\x32", [21535] = "\xcc\x33", [21536] = "\xcc\x34",
-+ [21537] = "\xcc\x35", [21538] = "\xe0\xea", [21539] = "\xce\xd6",
-+ [21540] = "\xb6\xd7", [21541] = "\xc8\xfc", [21542] = "\xc7\xca",
-+ [21545] = "\xcc\x36", [21546] = "\xe0\xeb", [21551] = "\xe0\xed",
-+ [21552] = "\xcc\x37", [21553] = "\xe0\xf0", [21555] = "\xcc\x38",
-+ [21556] = "\xcc\x39", [21558] = "\xcc\x3a", [21559] = "\xcc\x3b",
-+ [21563] = "\xcc\x3c", [21565] = "\xcc\x3d", [21569] = "\xcc\x3e",
-+ [21570] = "\xcc\x3f", [21573] = "\xe0\xec", [21575] = "\xcc\x40",
-+ [21577] = "\xe0\xef", [21578] = "\xb8\xea", [21579] = "\xb1\xcd",
-+ [21580] = "\xe0\xf1", [21581] = "\xcc\x41", [21582] = "\xbf\xf0",
-+ [21583] = "\xe0\xee", [21584] = "\xce\xdc", [21586] = "\xcc\x42",
-+ [21587] = "\xe0\xf4", [21588] = "\xf4\xa4", [21590] = "\xcc\x43",
-+ [21591] = "\xcc\x44", [21592] = "\xcc\x45", [21593] = "\xe0\xf2",
-+ [21594] = "\xe0\xf5", [21595] = "\xcc\x46", [21597] = "\xcc\x47",
-+ [21598] = "\xcc\x48", [21599] = "\xe0\xe7", [21600] = "\xe0\xf3",
-+ [21601] = "\xcc\x49", [21602] = "\xcc\x4a", [21603] = "\xba\xbc",
-+ [21606] = "\xe0\xf6", [21614] = "\xe0\xf7", [21616] = "\xcc\x4b",
-+ [21617] = "\xcc\x4c", [21619] = "\xcd\xfe", [21621] = "\xcc\x4d",
-+ [21622] = "\xcc\x4e", [21623] = "\xcc\x4f", [21625] = "\xcc\x50",
-+ [21627] = "\xe0\xf8", [21631] = "\xcc\x51", [21632] = "\xcc\x52",
-+ [21633] = "\xcc\x53", [21634] = "\xcc\x54", [21640] = "\xcc\x55",
-+ [21641] = "\xcc\x56", [21642] = "\xcc\x57", [21644] = "\xcc\x58",
-+ [21646] = "\xe0\xf9", [21647] = "\xcc\x59", [21648] = "\xcc\x5a",
-+ [21649] = "\xcc\x5b", [21650] = "\xe0\xe5", [21651] = "\xcc\x5c",
-+ [21654] = "\xcc\x5d", [21655] = "\xe0\xfa", [21656] = "\xcc\x5e",
-+ [21657] = "\xcc\x5f", [21658] = "\xcc\x60", [21659] = "\xcc\x61",
-+ [21662] = "\xcc\x62", [21663] = "\xcc\x63", [21664] = "\xb4\xc4",
-+ [21665] = "\xcc\x64", [21666] = "\xcc\x65", [21669] = "\xcc\x66",
-+ [21673] = "\xcc\x67", [21675] = "\xcc\x68", [21677] = "\xbc\xa5",
-+ [21679] = "\xcc\x69", [21688] = "\xcc\x6a", [21689] = "\xcc\x6b",
-+ [21690] = "\xe0\xfb", [21692] = "\xcc\x6c", [21695] = "\xe0\xfc",
-+ [21696] = "\xcc\x6d", [21699] = "\xcc\x6e", [21700] = "\xe0\xfd",
-+ [21704] = "\xcc\x6f", [21706] = "\xcc\x70", [21707] = "\xcc\x71",
-+ [21708] = "\xb1\xbb", [21710] = "\xcc\x72", [21711] = "\xcc\x73",
-+ [21712] = "\xe1\xa1", [21714] = "\xc9\xbb", [21715] = "\xe1\xa2",
-+ [21716] = "\xcc\x74", [21718] = "\xb4\xa4", [21719] = "\xe1\xa3",
-+ [21720] = "\xcc\x75", [21721] = "\xe1\xa4", [21722] = "\xcc\x76",
-+ [21723] = "\xcc\x77", [21726] = "\xe1\xa5", [21727] = "\xcc\x78",
-+ [21728] = "\xe1\xa7", [21729] = "\xe1\xa8", [21730] = "\xe1\xa6",
-+ [21732] = "\xcc\x79", [21734] = "\xc9\xd3", [21735] = "\xe1\xaa",
-+ [21736] = "\xe1\xa9", [21738] = "\xcc\x7a", [21739] = "\xcc\x7b",
-+ [21740] = "\xcc\x7c", [21743] = "\xcc\x7d", [21745] = "\xf4\x50",
-+ [21747] = "\xe1\xac", [21748] = "\xe1\xab", [21749] = "\xe1\xad",
-+ [21750] = "\xcc\x7e", [21756] = "\xe1\xae", [21757] = "\xe1\xb0",
-+ [21758] = "\xe1\xaf", [21761] = "\xb9\xf9", [21762] = "\xcd\x21",
-+ [21763] = "\xe1\xb2", [21765] = "\xe1\xb1", [21766] = "\xcd\x22",
-+ [21767] = "\xcd\x23", [21768] = "\xb4\xc5", [21770] = "\xbf\xd3",
-+ [21772] = "\xc5\xbc", [21774] = "\xe1\xb3", [21775] = "\xc0\xb8",
-+ [21776] = "\xcd\x24", [21777] = "\xcd\x25", [21779] = "\xbb\xba",
-+ [21780] = "\xcd\x26", [21781] = "\xb1\xf9", [21782] = "\xe1\xb4",
-+ [21783] = "\xcd\x27", [21784] = "\xcd\xd1", [21785] = "\xcd\x28",
-+ [21786] = "\xcd\x29", [21787] = "\xca\xe3", [21788] = "\xe1\xb5",
-+ [21791] = "\xcd\x2a", [21792] = "\xc5\xc4", [21793] = "\xcd\xb3",
-+ [21794] = "\xb9\xc3", [21795] = "\xbf\xbd", [21798] = "\xcd\x2b",
-+ [21799] = "\xc3\xcb", [21800] = "\xd2\xb4", [21801] = "\xcd\x2c",
-+ [21802] = "\xc4\xae", [21803] = "\xb2\xe8", [21804] = "\xe1\xb6",
-+ [21805] = "\xcd\x2d", [21806] = "\xcd\x2e", [21807] = "\xcd\x2f",
-+ [21808] = "\xcd\x30", [21811] = "\xcd\x31", [21812] = "\xe1\xb7",
-+ [21814] = "\xe1\xbc", [21815] = "\xcd\x32", [21816] = "\xcd\x33",
-+ [21817] = "\xe1\xba", [21818] = "\xe1\xb9", [21819] = "\xda\xc2",
-+ [21820] = "\xb3\xa6", [21821] = "\xe1\xb8", [21822] = "\xcd\x34",
-+ [21823] = "\xb0\xda", [21824] = "\xcd\x35", [21825] = "\xc8\xaa",
-+ [21826] = "\xcd\x36", [21828] = "\xc8\xca", [21831] = "\xcd\x37",
-+ [21833] = "\xce\xb1", [21834] = "\xe1\xbd", [21835] = "\xe1\xbb",
-+ [21836] = "\xc3\xdc", [21837] = "\xc0\xa6", [21838] = "\xcd\x38",
-+ [21839] = "\xcd\x39", [21840] = "\xc8\xab", [21841] = "\xcd\x3a",
-+ [21842] = "\xc9\xad", [21844] = "\xe1\xbf", [21845] = "\xce\xac",
-+ [21846] = "\xb7\xcd", [21847] = "\xe1\xc0", [21849] = "\xe1\xbe",
-+ [21850] = "\xc8\xd6", [21851] = "\xe1\xc1", [21853] = "\xe1\xc2",
-+ [21855] = "\xcd\x3b", [21856] = "\xb0\xdb", [21857] = "\xcd\x3c",
-+ [21859] = "\xbe\xf6", [21860] = "\xe1\xc7", [21862] = "\xe1\xc4",
-+ [21863] = "\xc6\xed", [21864] = "\xe1\xc3", [21865] = "\xcd\x3d",
-+ [21866] = "\xcd\x3e", [21867] = "\xcd\x3f", [21868] = "\xcd\x40",
-+ [21869] = "\xcd\x41", [21870] = "\xcd\x42", [21871] = "\xb5\xa6",
-+ [21873] = "\xcd\x43", [21874] = "\xe1\xca", [21877] = "\xcd\x44",
-+ [21878] = "\xe1\xc5", [21879] = "\xe1\xc6", [21881] = "\xe1\xc9",
-+ [21882] = "\xe1\xc8", [21883] = "\xc9\xa5", [21886] = "\xc1\xc2",
-+ [21887] = "\xc1\xc1", [21888] = "\xcd\x45", [21889] = "\xb5\xbf",
-+ [21890] = "\xcd\x46", [21891] = "\xcd\x47", [21892] = "\xe1\xcb",
-+ [21893] = "\xcd\x48", [21897] = "\xcd\x49", [21898] = "\xe1\xcc",
-+ [21900] = "\xcd\x4a", [21901] = "\xe1\xcd", [21906] = "\xcd\x4b",
-+ [21907] = "\xe1\xcf", [21908] = "\xcd\x4c", [21909] = "\xe1\xce",
-+ [21915] = "\xb1\xd6", [21921] = "\xe1\xd7", [21922] = "\xc8\xe8",
-+ [21923] = "\xe1\xd1", [21924] = "\xcd\x4d", [21925] = "\xe1\xd3",
-+ [21928] = "\xe1\xd5", [21929] = "\xbf\xbe", [21930] = "\xcd\x4e",
-+ [21932] = "\xe1\xd6", [21933] = "\xe1\xd4", [21934] = "\xbc\xc0",
-+ [21935] = "\xcd\x4f", [21936] = "\xcd\x50", [21937] = "\xcd\x51",
-+ [21938] = "\xe1\xd0", [21939] = "\xe1\xd2", [21940] = "\xcd\x52",
-+ [21941] = "\xc9\xc2", [21942] = "\xcd\x53", [21943] = "\xbe\xc9",
-+ [21946] = "\xe1\xd9", [21948] = "\xcd\x54", [21949] = "\xe1\xd8",
-+ [21950] = "\xcd\x55", [21951] = "\xcd\x56", [21954] = "\xe1\xda",
-+ [21956] = "\xbc\xa6", [21957] = "\xba\xaf", [21959] = "\xcd\x57",
-+ [21960] = "\xc5\xf7", [21961] = "\xe1\xdb", [21963] = "\xc4\xcb",
-+ [21964] = "\xcd\x58", [21966] = "\xe1\xdd", [21967] = "\xcd\x59",
-+ [21968] = "\xcd\x5a", [21969] = "\xcd\x5b", [21970] = "\xce\xa1",
-+ [21971] = "\xe1\xdc", [21972] = "\xcd\x5c", [21975] = "\xcd\x5d",
-+ [21977] = "\xc1\xe9", [21980] = "\xcd\x5e", [21982] = "\xcd\x5f",
-+ [21983] = "\xcd\x60", [21984] = "\xe1\xe2", [21985] = "\xcd\x61",
-+ [21986] = "\xe1\xe4", [21987] = "\xe1\xe5", [21988] = "\xc3\xd4",
-+ [21993] = "\xcd\x62", [21994] = "\xe1\xe3", [21996] = "\xe1\xe0",
-+ [21998] = "\xe1\xde", [21999] = "\xe1\xdf", [22000] = "\xcd\x63",
-+ [22001] = "\xe1\xe1", [22002] = "\xcd\x64", [22003] = "\xcd\x65",
-+ [22004] = "\xcd\x66", [22007] = "\xcd\x67", [22008] = "\xcd\x68",
-+ [22009] = "\xe1\xe8", [22010] = "\xcd\x69", [22011] = "\xe1\xe6",
-+ [22012] = "\xcd\x6a", [22013] = "\xe1\xe7", [22015] = "\xcd\x6b",
-+ [22018] = "\xcd\x6c", [22019] = "\xcd\x6d", [22021] = "\xcd\x6e",
-+ [22022] = "\xcd\x6f", [22025] = "\xcd\x70", [22027] = "\xcd\x71",
-+ [22028] = "\xcd\x72", [22029] = "\xcd\x73", [22030] = "\xcd\x74",
-+ [22031] = "\xe1\xe9", [22032] = "\xe1\xeb", [22033] = "\xe1\xec",
-+ [22034] = "\xe1\xed", [22035] = "\xcd\x75", [22036] = "\xe1\xee",
-+ [22037] = "\xcd\x76", [22038] = "\xcd\x77", [22039] = "\xe1\xea",
-+ [22041] = "\xcd\x78", [22045] = "\xcd\x79", [22048] = "\xe1\xf0",
-+ [22050] = "\xcd\x7a", [22051] = "\xcd\x7b", [22052] = "\xe1\xef",
-+ [22053] = "\xcd\x7c", [22056] = "\xcd\x7d", [22057] = "\xcd\x7e",
-+ [22058] = "\xce\x21", [22059] = "\xe1\xf1", [22060] = "\xce\x22",
-+ [22064] = "\xce\x24", [22065] = "\xce\x25", [22066] = "\xce\xc5",
-+ [22067] = "\xce\x26", [22068] = "\xce\x27", [22069] = "\xce\x28",
-+ [22070] = "\xe1\xf4", [22071] = "\xe1\xf2", [22072] = "\xe1\xf3",
-+ [22073] = "\xce\x29", [22074] = "\xce\x23", [22075] = "\xce\x2a",
-+ [22076] = "\xb4\xe2", [22082] = "\xcc\xfe", [22085] = "\xce\x2b",
-+ [22086] = "\xca\xca", [22088] = "\xe1\xf6", [22089] = "\xce\x2c",
-+ [22092] = "\xe1\xf5", [22095] = "\xce\x2d", [22097] = "\xe1\xf7",
-+ [22098] = "\xe1\xf8", [22100] = "\xce\x2e", [22101] = "\xce\x2f",
-+ [22103] = "\xe1\xfc", [22104] = "\xe1\xf9", [22105] = "\xe1\xfa",
-+ [22106] = "\xe1\xfb", [22108] = "\xe1\xfd", [22109] = "\xce\x30",
-+ [22110] = "\xce\x31", [22111] = "\xce\x32", [22112] = "\xe1\xfe",
-+ [22113] = "\xce\x33", [22114] = "\xe2\xa1", [22116] = "\xce\x34",
-+ [22118] = "\xe2\xa2", [22120] = "\xe2\xa3", [22122] = "\xc8\xaf",
-+ [22123] = "\xc5\xd0", [22124] = "\xe2\xa4", [22125] = "\xc7\xf2",
-+ [22126] = "\xc9\xb4", [22128] = "\xe2\xa5", [22129] = "\xce\x35",
-+ [22130] = "\xf4\x51", [22131] = "\xe2\xa6", [22132] = "\xc5\xaa",
-+ [22133] = "\xce\x36", [22134] = "\xb3\xa7", [22135] = "\xb9\xc4",
-+ [22136] = "\xe2\xa7", [22139] = "\xe2\xa8", [22140] = "\xce\x37",
-+ [22141] = "\xce\x38", [22142] = "\xe2\xa9", [22144] = "\xbb\xa9",
-+ [22147] = "\xe2\xab", [22149] = "\xce\x39", [22150] = "\xe2\xaa",
-+ [22153] = "\xe2\xac", [22154] = "\xe2\xad", [22155] = "\xce\x3a",
-+ [22156] = "\xce\x3b", [22157] = "\xce\x3c", [22158] = "\xf4\x52",
-+ [22159] = "\xce\x3d", [22160] = "\xce\x3e", [22162] = "\xce\x3f",
-+ [22163] = "\xce\x40", [22164] = "\xce\x41", [22165] = "\xce\x42",
-+ [22166] = "\xce\x43", [22167] = "\xce\x44", [22168] = "\xce\x45",
-+ [22170] = "\xce\x46", [22173] = "\xce\x47", [22174] = "\xc8\xe9",
-+ [22176] = "\xe2\xae", [22180] = "\xe2\xaf", [22183] = "\xf3\xe9",
-+ [22184] = "\xe2\xb0", [22185] = "\xe2\xb1", [22186] = "\xe2\xb2",
-+ [22189] = "\xce\x48", [22191] = "\xbb\xae", [22193] = "\xce\x49",
-+ [22194] = "\xe2\xb3", [22195] = "\xc7\xd6", [22197] = "\xce\x4a",
-+ [22198] = "\xcb\xdf", [22200] = "\xb1\xce", [22201] = "\xce\x4b",
-+ [22202] = "\xb1\xd7", [22203] = "\xce\x4c", [22204] = "\xce\x4d",
-+ [22205] = "\xe2\xb4", [22206] = "\xce\x4e", [22210] = "\xe2\xb6",
-+ [22212] = "\xce\x4f", [22214] = "\xe2\xb5", [22215] = "\xc5\xf0",
-+ [22217] = "\xce\x50", [22219] = "\xc0\xb9", [22220] = "\xdd\xb9",
-+ [22222] = "\xe2\xb7", [22223] = "\xcc\xc1", [22224] = "\xce\x51",
-+ [22225] = "\xe2\xb8", [22227] = "\xb4\xc6", [22228] = "\xc8\xd7",
-+ [22229] = "\xe2\xb9", [22230] = "\xce\x52", [22231] = "\xe2\xba",
-+ [22232] = "\xce\x53", [22234] = "\xe2\xbb", [22236] = "\xce\x54",
-+ [22238] = "\xcc\xdc", [22240] = "\xce\x55", [22241] = "\xce\x56",
-+ [22242] = "\xcc\xd5", [22244] = "\xc4\xbe", [22246] = "\xce\x57",
-+ [22248] = "\xc1\xea", [22249] = "\xce\x58", [22251] = "\xe2\xbd",
-+ [22252] = "\xce\x59", [22254] = "\xbd\xe2", [22256] = "\xce\x5a",
-+ [22257] = "\xbe\xca", [22260] = "\xe2\xc0", [22262] = "\xce\x5b",
-+ [22263] = "\xe2\xbf", [22264] = "\xe2\xbe", [22265] = "\xc8\xfd",
-+ [22266] = "\xce\x5c", [22267] = "\xb4\xc7", [22268] = "\xb8\xa9",
-+ [22270] = "\xce\x5d", [22274] = "\xce\x5e", [22276] = "\xce\x5f",
-+ [22277] = "\xce\x60", [22279] = "\xce\x61", [22281] = "\xce\x62",
-+ [22282] = "\xce\x63", [22283] = "\xe2\xc6", [22284] = "\xce\x64",
-+ [22286] = "\xe2\xc3", [22287] = "\xbf\xbf", [22288] = "\xcc\xb2",
-+ [22290] = "\xce\x65", [22292] = "\xe2\xc2", [22293] = "\xe2\xc4",
-+ [22294] = "\xe2\xc5", [22296] = "\xce\x66", [22297] = "\xe2\xc1",
-+ [22301] = "\xce\x67", [22302] = "\xce\x68", [22303] = "\xce\x69",
-+ [22308] = "\xce\x6a", [22309] = "\xce\x6b", [22310] = "\xce\x6c",
-+ [22311] = "\xe2\xc7", [22312] = "\xe2\xc8", [22313] = "\xce\x6d",
-+ [22314] = "\xc4\xaf", [22316] = "\xb4\xe3", [22317] = "\xce\x6e",
-+ [22318] = "\xce\x6f", [22320] = "\xc3\xe5", [22322] = "\xce\x70",
-+ [22325] = "\xce\x71", [22326] = "\xce\x72", [22327] = "\xe2\xc9",
-+ [22330] = "\xce\x73", [22333] = "\xce\x74", [22334] = "\xce\x75",
-+ [22335] = "\xce\x76", [22338] = "\xce\x77", [22342] = "\xce\x78",
-+ [22343] = "\xce\x79", [22346] = "\xe2\xca", [22347] = "\xe2\xcd",
-+ [22348] = "\xce\x7a", [22350] = "\xce\x7b", [22351] = "\xce\x7c",
-+ [22352] = "\xce\x7d", [22353] = "\xbf\xe7", [22354] = "\xce\x7e",
-+ [22355] = "\xc6\xc4", [22356] = "\xcf\x21", [22357] = "\xe2\xce",
-+ [22358] = "\xcb\xd3", [22359] = "\xcf\x22", [22360] = "\xe2\xcb",
-+ [22362] = "\xcf\x23", [22363] = "\xe2\xcc", [22364] = "\xcf\x24",
-+ [22368] = "\xcf\x25", [22370] = "\xcf\x26", [22371] = "\xcf\x27",
-+ [22372] = "\xcf\x28", [22377] = "\xe2\xd1", [22378] = "\xcf\x29",
-+ [22381] = "\xcf\x2a", [22382] = "\xe2\xd0", [22383] = "\xe2\xcf",
-+ [22384] = "\xcf\x2b", [22388] = "\xcf\x2c", [22395] = "\xe2\xd3",
-+ [22396] = "\xcf\x2d", [22397] = "\xcf\x2e", [22398] = "\xe2\xd2",
-+ [22401] = "\xe2\xd4", [22404] = "\xcf\x2f", [22405] = "\xcf\x30",
-+ [22406] = "\xcf\x31", [22410] = "\xcf\x32", [22414] = "\xe2\xd6",
-+ [22415] = "\xcf\x33", [22416] = "\xe2\xd5", [22418] = "\xcf\x34",
-+ [22421] = "\xca\xcd", [22423] = "\xcf\x35", [22426] = "\xcf\x36",
-+ [22428] = "\xbd\xd6", [22429] = "\xce\xc6", [22430] = "\xcf\x37",
-+ [22431] = "\xcf\x38", [22432] = "\xe2\xd7", [22433] = "\xcf\x39",
-+ [22435] = "\xc6\xb7", [22437] = "\xcf\x3a", [22438] = "\xe2\xd8",
-+ [22441] = "\xe2\xd9", [22443] = "\xe2\xdd", [22444] = "\xe2\xdb",
-+ [22445] = "\xe2\xdc", [22446] = "\xcf\x3b", [22447] = "\xe2\xda",
-+ [22451] = "\xcf\x3c", [22455] = "\xe2\xde", [22457] = "\xcf\x3d",
-+ [22461] = "\xe2\xdf", [22465] = "\xcf\x3e", [22466] = "\xcf\x3f",
-+ [22469] = "\xcf\x40", [22471] = "\xe2\xe0", [22473] = "\xcf\x41",
-+ [22474] = "\xe2\xe1", [22475] = "\xcc\xb7", [22476] = "\xe2\xe2",
-+ [22478] = "\xcf\x42", [22479] = "\xcf\x43", [22480] = "\xcf\x44",
-+ [22482] = "\xcc\xf0", [22483] = "\xe2\xe3", [22484] = "\xcf\x45",
-+ [22485] = "\xc3\xce", [22486] = "\xcf\x46", [22487] = "\xc7\xea",
-+ [22489] = "\xb6\xeb", [22490] = "\xcf\x47", [22492] = "\xcf\x48",
-+ [22493] = "\xc3\xbb", [22494] = "\xe2\xe4", [22495] = "\xb6\xba",
-+ [22496] = "\xcf\x49", [22497] = "\xcf\x4a", [22499] = "\xc0\xd0",
-+ [22500] = "\xcf\x4b", [22504] = "\xcf\x4c", [22507] = "\xcf\x4d",
-+ [22508] = "\xe2\xe5", [22514] = "\xba\xbd", [22517] = "\xcf\x4e",
-+ [22518] = "\xcf\x4f", [22521] = "\xcf\x50", [22524] = "\xe2\xe6",
-+ [22525] = "\xcf\x51", [22526] = "\xcf\x52", [22529] = "\xcf\x53",
-+ [22530] = "\xe2\xe7", [22532] = "\xb8\xa6", [22533] = "\xba\xd5",
-+ [22541] = "\xcf\x54", [22544] = "\xe2\xe9", [22545] = "\xcf\x55",
-+ [22546] = "\xcf\x56", [22547] = "\xcf\x57", [22549] = "\xc5\xd6",
-+ [22550] = "\xba\xd6", [22551] = "\xb5\xce", [22557] = "\xcf\x58",
-+ [22558] = "\xcf\x59", [22560] = "\xcf\x5a", [22562] = "\xcb\xa4",
-+ [22564] = "\xc7\xcb", [22565] = "\xcf\x5b", [22567] = "\xcf\x5c",
-+ [22570] = "\xc5\xd7", [22575] = "\xb9\xdc", [22579] = "\xcf\x5d",
-+ [22580] = "\xcf\x5e", [22581] = "\xe2\xeb", [22583] = "\xcf\x5f",
-+ [22584] = "\xcf\x60", [22588] = "\xcf\x61", [22590] = "\xcf\x62",
-+ [22594] = "\xcf\x63", [22604] = "\xcf\x64", [22605] = "\xbe\xcb",
-+ [22606] = "\xcf\x65", [22608] = "\xcf\x66", [22609] = "\xcf\x67",
-+ [22611] = "\xcf\x68", [22612] = "\xcf\x69", [22616] = "\xcf\x6a",
-+ [22618] = "\xcf\x6b", [22619] = "\xce\xb2", [22620] = "\xb9\xc5",
-+ [22622] = "\xcf\x6c", [22623] = "\xb8\xa7", [22626] = "\xc8\xa3",
-+ [22628] = "\xe2\xed", [22634] = "\xcf\x6d", [22636] = "\xe2\xef",
-+ [22638] = "\xcf\x6e", [22641] = "\xb8\xeb", [22646] = "\xe2\xee",
-+ [22647] = "\xc4\xf6", [22650] = "\xcf\x6f", [22652] = "\xe2\xf1",
-+ [22653] = "\xb3\xb7", [22654] = "\xe2\xec", [22655] = "\xcf\x70",
-+ [22657] = "\xc8\xea", [22659] = "\xb1\xb0", [22660] = "\xcf\x71",
-+ [22661] = "\xba\xec", [22663] = "\xcf\xd2", [22664] = "\xcf\x72",
-+ [22666] = "\xe2\xf0", [22669] = "\xcf\x74", [22670] = "\xcf\x75",
-+ [22671] = "\xcf\x76", [22673] = "\xcf\x73", [22675] = "\xe2\xf2",
-+ [22676] = "\xcf\x77", [22679] = "\xca\xcb", [22680] = "\xcf\x78",
-+ [22681] = "\xc0\xd9", [22682] = "\xe2\xf4", [22684] = "\xcf\x79",
-+ [22685] = "\xcf\x7a", [22687] = "\xe2\xf5", [22688] = "\xcf\x7b",
-+ [22689] = "\xcf\x7c", [22690] = "\xcf\x7d", [22691] = "\xcf\x7e",
-+ [22693] = "\xe2\xf3", [22698] = "\xb3\xce", [22699] = "\xd0\x21",
-+ [22700] = "\xe2\xfb", [22701] = "\xd0\x22", [22702] = "\xe2\xfa",
-+ [22703] = "\xd0\x23", [22705] = "\xbc\xa7", [22709] = "\xe2\xfc",
-+ [22710] = "\xe2\xf7", [22711] = "\xd0\x24", [22712] = "\xd0\x25",
-+ [22713] = "\xd0\x26", [22714] = "\xe2\xfd", [22715] = "\xe2\xf8",
-+ [22716] = "\xd0\x27", [22718] = "\xd0\x28", [22720] = "\xc8\xd8",
-+ [22721] = "\xe2\xf6", [22722] = "\xd0\x29", [22723] = "\xd0\x2a",
-+ [22724] = "\xe2\xf9", [22725] = "\xd0\x2b", [22726] = "\xd0\x2c",
-+ [22730] = "\xe3\xa2", [22731] = "\xd0\x2e", [22735] = "\xd0\x2f",
-+ [22736] = "\xd0\x30", [22737] = "\xd0\x31", [22740] = "\xd0\x2d",
-+ [22742] = "\xd0\x32", [22743] = "\xe3\xa1", [22744] = "\xcb\xe1",
-+ [22746] = "\xd0\x33", [22748] = "\xe2\xfe", [22751] = "\xb0\xeb",
-+ [22754] = "\xd0\x34", [22755] = "\xd0\x35", [22756] = "\xe3\xa4",
-+ [22758] = "\xd0\x37", [22759] = "\xd0\x38", [22762] = "\xd0\x39",
-+ [22763] = "\xd0\x3a", [22765] = "\xe3\xa3", [22767] = "\xd0\x3b",
-+ [22768] = "\xd0\x36", [22769] = "\xbe\xcc", [22774] = "\xd0\x3c",
-+ [22775] = "\xe3\xa5", [22780] = "\xd0\x3d", [22782] = "\xc1\xc3",
-+ [22784] = "\xd0\x3e", [22785] = "\xe3\xa7", [22786] = "\xe3\xa6",
-+ [22793] = "\xe3\xa8", [22794] = "\xd0\x3f", [22796] = "\xd0\x40",
-+ [22798] = "\xd0\x41", [22799] = "\xd0\x42", [22800] = "\xd0\x43",
-+ [22805] = "\xd0\x44", [22806] = "\xe2\xe8", [22807] = "\xd0\x45",
-+ [22809] = "\xd0\x46", [22810] = "\xe2\xea", [22811] = "\xe3\xaa",
-+ [22812] = "\xe3\xa9", [22813] = "\xd0\x47", [22816] = "\xf4\x54",
-+ [22817] = "\xd0\x48", [22820] = "\xd0\x49", [22821] = "\xd0\x4a",
-+ [22826] = "\xbc\xa8", [22827] = "\xd0\x4b", [22828] = "\xce\xe9",
-+ [22829] = "\xd0\x4c", [22830] = "\xbc\xd2", [22831] = "\xd0\x4d",
-+ [22832] = "\xe3\xab", [22833] = "\xb7\xb7", [22836] = "\xd0\x4e",
-+ [22837] = "\xd0\x4f", [22838] = "\xd0\x50", [22839] = "\xb5\xc0",
-+ [22840] = "\xb5\xa7", [22841] = "\xbb\xe3", [22842] = "\xd0\x51",
-+ [22843] = "\xd0\x52", [22847] = "\xd0\x53", [22848] = "\xcd\xb4",
-+ [22849] = "\xd0\x54", [22851] = "\xe3\xb1", [22852] = "\xd0\x55",
-+ [22853] = "\xe3\xb0", [22854] = "\xc1\xc4", [22855] = "\xe3\xad",
-+ [22856] = "\xd0\x56", [22858] = "\xe3\xaf", [22859] = "\xd0\x57",
-+ [22860] = "\xd0\x58", [22861] = "\xbd\xcb", [22862] = "\xbf\xc0",
-+ [22863] = "\xe3\xae", [22864] = "\xe3\xac", [22866] = "\xc7\xaa",
-+ [22869] = "\xbe\xcd", [22871] = "\xd0\x59", [22872] = "\xc9\xbc",
-+ [22873] = "\xd0\x5a", [22875] = "\xd0\x5b", [22877] = "\xba\xd7",
-+ [22882] = "\xd0\x5c", [22887] = "\xc5\xf8", [22889] = "\xd0\x5d",
-+ [22890] = "\xe3\xb2", [22891] = "\xd0\x5e", [22892] = "\xd0\x5f",
-+ [22894] = "\xd0\x60", [22895] = "\xe3\xb3", [22896] = "\xe3\xc9",
-+ [22897] = "\xb6\xd8", [22900] = "\xcf\xbd", [22901] = "\xc1\xb5",
-+ [22906] = "\xe3\xb4", [22907] = "\xd0\x61", [22908] = "\xd0\x62",
-+ [22909] = "\xb2\xd2", [22910] = "\xc4\xf7", [22911] = "\xca\xa1",
-+ [22913] = "\xd0\x63", [22915] = "\xd0\x64", [22916] = "\xd0\x65",
-+ [22917] = "\xd0\x66", [22918] = "\xd0\x67", [22920] = "\xd0\x68",
-+ [22923] = "\xd0\x69", [22924] = "\xd0\x6a", [22925] = "\xe3\xb5",
-+ [22929] = "\xd0\x6b", [22934] = "\xb5\xfa", [22935] = "\xe3\xb6",
-+ [22936] = "\xd0\x6c", [22937] = "\xd0\x6d", [22938] = "\xe3\xb8",
-+ [22939] = "\xd0\x6e", [22942] = "\xe3\xb9", [22943] = "\xd0\x6f",
-+ [22944] = "\xc7\xa9", [22945] = "\xd0\x70", [22947] = "\xe3\xba",
-+ [22948] = "\xd0\x71", [22952] = "\xd0\x72", [22953] = "\xe3\xbb",
-+ [22954] = "\xe3\xbc", [22955] = "\xd0\x73", [22957] = "\xb6\xd9",
-+ [22958] = "\xb2\xd3", [22959] = "\xc6\xc5", [22960] = "\xbd\xa8",
-+ [22961] = "\xbb\xe4", [22962] = "\xd0\x74", [22964] = "\xd0\x75",
-+ [22967] = "\xd0\x76", [22968] = "\xd0\x77", [22969] = "\xe3\xbd",
-+ [22970] = "\xd0\x78", [22971] = "\xbd\xa9", [22975] = "\xd0\x79",
-+ [22977] = "\xb2\xca", [22978] = "\xc9\xc3", [22980] = "\xd0\x7a",
-+ [22981] = "\xe3\xbe", [22982] = "\xd0\x7b", [22984] = "\xc8\xeb",
-+ [22986] = "\xd0\x7c", [22989] = "\xd0\x7d", [22990] = "\xd0\x7e",
-+ [22991] = "\xc1\xc5", [22992] = "\xd1\x21", [22993] = "\xe3\xc1",
-+ [22994] = "\xd1\x22", [22995] = "\xe3\xc2", [22996] = "\xc7\xe9",
-+ [22997] = "\xd1\x23", [22998] = "\xbf\xc1", [22999] = "\xe3\xbf",
-+ [23001] = "\xc3\xe1", [23002] = "\xd1\x24", [23003] = "\xd1\x25",
-+ [23004] = "\xe3\xc0", [23005] = "\xd1\x26", [23008] = "\xbe\xce",
-+ [23009] = "\xd1\x27", [23016] = "\xd1\x28", [23019] = "\xb0\xdc",
-+ [23020] = "\xd1\x29", [23024] = "\xb5\xa9", [23026] = "\xd1\x2a",
-+ [23027] = "\xd1\x2b", [23031] = "\xd1\x2c", [23032] = "\xe3\xc3",
-+ [23033] = "\xd1\x2d", [23034] = "\xd1\x2e", [23035] = "\xc4\xf8",
-+ [23036] = "\xd1\x2f", [23037] = "\xe3\xc4", [23038] = "\xc0\xc7",
-+ [23041] = "\xd1\x30", [23044] = "\xcc\xad", [23045] = "\xd1\x31",
-+ [23047] = "\xc9\xa3", [23048] = "\xe3\xc5", [23049] = "\xe3\xc6",
-+ [23050] = "\xc3\xd5", [23051] = "\xd1\x32", [23052] = "\xce\xc7",
-+ [23054] = "\xd1\x33", [23055] = "\xe3\xc8", [23056] = "\xe3\xc7",
-+ [23057] = "\xd1\x34", [23063] = "\xd1\x35", [23067] = "\xd1\x36",
-+ [23069] = "\xd1\x37", [23070] = "\xbc\xef", [23071] = "\xd1\x38",
-+ [23072] = "\xd1\x39", [23073] = "\xe3\xca", [23074] = "\xb0\xf0",
-+ [23076] = "\xd1\x3a", [23077] = "\xd1\x3b", [23079] = "\xe3\xcd",
-+ [23080] = "\xd1\x3c", [23081] = "\xd1\x3d", [23082] = "\xd1\x3e",
-+ [23083] = "\xe3\xcb", [23084] = "\xb2\xd4", [23085] = "\xb7\xce",
-+ [23086] = "\xe3\xcc", [23087] = "\xb9\xc6", [23088] = "\xb9\xf2",
-+ [23090] = "\xca\xe6", [23091] = "\xe3\xce", [23092] = "\xd1\x3f",
-+ [23093] = "\xd1\x40", [23094] = "\xcb\xd4", [23095] = "\xd1\x41",
-+ [23096] = "\xd1\x42", [23097] = "\xe3\xd0", [23100] = "\xd1\x43",
-+ [23101] = "\xc0\xd1", [23102] = "\xb1\xcf", [23103] = "\xb2\xba",
-+ [23104] = "\xb0\xac", [23109] = "\xd1\x44", [23110] = "\xd1\x45",
-+ [23111] = "\xe3\xcf", [23113] = "\xd1\x46", [23116] = "\xd1\x47",
-+ [23117] = "\xd1\x48", [23119] = "\xd1\x49", [23120] = "\xd1\x4a",
-+ [23121] = "\xe3\xd1", [23122] = "\xe3\xd2", [23123] = "\xbe\xf7",
-+ [23125] = "\xd1\x4b", [23127] = "\xd1\x4c", [23129] = "\xe3\xd3",
-+ [23130] = "\xd1\x4d", [23131] = "\xb3\xcf", [23133] = "\xd1\x4e",
-+ [23136] = "\xe3\xd5", [23140] = "\xb7\xea", [23141] = "\xd1\x4f",
-+ [23142] = "\xb5\xe6", [23144] = "\xd1\x50", [23145] = "\xe3\xd6",
-+ [23146] = "\xb6\xf5", [23149] = "\xe3\xd7", [23150] = "\xd1\x51",
-+ [23151] = "\xc0\xfc", [23152] = "\xd1\x52", [23153] = "\xc6\xcd",
-+ [23154] = "\xd1\x53", [23155] = "\xc0\xe0", [23156] = "\xba\xf5",
-+ [23157] = "\xd1\x54", [23158] = "\xd1\x55", [23160] = "\xe3\xd8",
-+ [23162] = "\xd1\x56", [23163] = "\xd1\x57", [23168] = "\xd1\x58",
-+ [23169] = "\xd1\x59", [23170] = "\xc3\xe2", [23171] = "\xc1\xeb",
-+ [23172] = "\xd1\x5a", [23173] = "\xe3\xda", [23174] = "\xe3\xdc",
-+ [23175] = "\xe3\xd9", [23176] = "\xe3\xdb", [23182] = "\xd1\x5b",
-+ [23183] = "\xb7\xa2", [23184] = "\xd1\x5c", [23187] = "\xd1\x5d",
-+ [23193] = "\xe3\xdd", [23194] = "\xb7\xa6", [23196] = "\xd1\x5e",
-+ [23198] = "\xb5\xe7", [23199] = "\xcd\xd2", [23200] = "\xe3\xdf",
-+ [23203] = "\xd1\x5f", [23205] = "\xd1\x60", [23206] = "\xe3\xe0",
-+ [23209] = "\xd1\x61", [23210] = "\xb1\xae", [23211] = "\xd1\x62",
-+ [23212] = "\xd1\x63", [23215] = "\xe3\xe3", [23219] = "\xb3\xf6",
-+ [23220] = "\xe3\xe2", [23221] = "\xe3\xe1", [23222] = "\xd1\x64",
-+ [23223] = "\xe3\xe5", [23224] = "\xe3\xde", [23225] = "\xd1\x65",
-+ [23226] = "\xe3\xe6", [23227] = "\xce\xa9", [23228] = "\xd1\x66",
-+ [23229] = "\xe3\xe7", [23230] = "\xd1\x67", [23231] = "\xe3\xe8",
-+ [23233] = "\xd1\x68", [23234] = "\xd4\xf4", [23235] = "\xe3\xea",
-+ [23237] = "\xe3\xe9", [23241] = "\xe3\xeb", [23242] = "\xe3\xec",
-+ [23243] = "\xd1\x69", [23244] = "\xce\xb5", [23245] = "\xe3\xed",
-+ [23247] = "\xf0\xef", [23248] = "\xbe\xcf", [23249] = "\xe3\xee",
-+ [23250] = "\xe3\xef", [23251] = "\xbd\xd7", [23253] = "\xc6\xb8",
-+ [23254] = "\xe3\xf0", [23255] = "\xf4\x59", [23256] = "\xd1\x6a",
-+ [23257] = "\xd1\x6b", [23258] = "\xc3\xa8", [23259] = "\xd1\x6c",
-+ [23260] = "\xd1\x6d", [23261] = "\xe3\xf1", [23263] = "\xc3\xbc",
-+ [23264] = "\xe3\xf2", [23265] = "\xd1\x6e", [23268] = "\xd1\x6f",
-+ [23270] = "\xb6\xa5", [23272] = "\xd1\xbf", [23273] = "\xc3\xdd",
-+ [23274] = "\xbc\xb3", [23275] = "\xd1\x70", [23277] = "\xd1\x71",
-+ [23278] = "\xd1\x72", [23279] = "\xb4\xc8", [23282] = "\xe3\xf3",
-+ [23284] = "\xe4\xa2", [23286] = "\xe3\xf6", [23287] = "\xd1\x73",
-+ [23288] = "\xb5\xe8", [23290] = "\xe3\xf5", [23291] = "\xe4\xa4",
-+ [23295] = "\xe3\xf4", [23297] = "\xbe\xd0", [23300] = "\xd1\x74",
-+ [23304] = "\xe3\xf8", [23305] = "\xe3\xf9", [23307] = "\xc5\xab",
-+ [23310] = "\xe3\xfa", [23311] = "\xd1\x75", [23312] = "\xb3\xde",
-+ [23315] = "\xd1\x76", [23317] = "\xbf\xda", [23318] = "\xc9\xe4",
-+ [23319] = "\xd1\x77", [23320] = "\xe3\xfc", [23321] = "\xd1\x78",
-+ [23322] = "\xd1\x79", [23323] = "\xd1\x7a", [23324] = "\xc2\xe8",
-+ [23325] = "\xd1\x7b", [23326] = "\xd1\x7c", [23327] = "\xd1\x7d",
-+ [23328] = "\xd1\x7e", [23329] = "\xd2\x21", [23331] = "\xe3\xf7",
-+ [23332] = "\xd2\x22", [23333] = "\xe3\xfb", [23334] = "\xe3\xfd",
-+ [23337] = "\xba\xfb", [23341] = "\xd2\x23", [23343] = "\xd2\x24",
-+ [23344] = "\xd2\x25", [23345] = "\xd2\x26", [23349] = "\xe4\xa6",
-+ [23350] = "\xc9\xae", [23351] = "\xd2\x27", [23352] = "\xc8\xa6",
-+ [23353] = "\xc5\xf9", [23355] = "\xb6\xda", [23356] = "\xe4\xa5",
-+ [23357] = "\xe4\xa3", [23358] = "\xd2\x28", [23359] = "\xc8\xb5",
-+ [23360] = "\xe3\xfe", [23361] = "\xc3\xde", [23362] = "\xc5\xfb",
-+ [23364] = "\xc5\xfa", [23365] = "\xd2\x29", [23366] = "\xba\xf6",
-+ [23373] = "\xe4\xb8", [23376] = "\xd2\x2a", [23380] = "\xd2\x2b",
-+ [23381] = "\xe4\xa8", [23382] = "\xd2\x2c", [23383] = "\xe4\xaa",
-+ [23385] = "\xd2\x2d", [23386] = "\xd2\x2e", [23388] = "\xe4\xad",
-+ [23389] = "\xd2\x2f", [23390] = "\xe4\xae", [23391] = "\xd2\x30",
-+ [23392] = "\xe4\xab", [23393] = "\xe4\xac", [23394] = "\xd2\x31",
-+ [23395] = "\xd2\x32", [23396] = "\xe4\xa9", [23397] = "\xe4\xa7",
-+ [23399] = "\xd2\x33", [23402] = "\xe4\xa1", [23412] = "\xd2\x34",
-+ [23414] = "\xca\xcf", [23415] = "\xb2\xd5", [23417] = "\xd2\x35",
-+ [23419] = "\xe4\xb5", [23421] = "\xe4\xb2", [23422] = "\xd2\x36",
-+ [23423] = "\xe4\xb7", [23424] = "\xd2\x37", [23425] = "\xd2\x38",
-+ [23426] = "\xe4\xb6", [23428] = "\xc7\xf3", [23429] = "\xcc\xa7",
-+ [23430] = "\xd2\x39", [23431] = "\xbb\xbb", [23432] = "\xe4\xb0",
-+ [23433] = "\xe4\xb9", [23434] = "\xe4\xb4", [23435] = "\xd2\x3a",
-+ [23436] = "\xe4\xb3", [23437] = "\xe4\xaf", [23438] = "\xd2\x3b",
-+ [23439] = "\xe4\xb1", [23440] = "\xd2\x3c", [23441] = "\xb4\xc9",
-+ [23445] = "\xd2\x3d", [23450] = "\xc3\xbd", [23452] = "\xd2\x3e",
-+ [23453] = "\xc0\xfd", [23455] = "\xd2\x3f", [23456] = "\xd2\x40",
-+ [23457] = "\xc8\xa2", [23458] = "\xd2\x41", [23460] = "\xe4\xbe",
-+ [23461] = "\xd2\x42", [23462] = "\xd2\x43", [23464] = "\xc8\xa4",
-+ [23466] = "\xd2\x44", [23467] = "\xd2\x45", [23468] = "\xd2\x46",
-+ [23469] = "\xd2\x47", [23472] = "\xc0\xe1", [23473] = "\xe4\xbb",
-+ [23474] = "\xd2\x48", [23476] = "\xc8\xcf", [23477] = "\xd2\x49",
-+ [23478] = "\xe4\xbf", [23479] = "\xca\xd3", [23480] = "\xd2\x4a",
-+ [23481] = "\xc3\xdb", [23482] = "\xd2\x4b", [23483] = "\xe4\xba",
-+ [23484] = "\xe4\xbc", [23487] = "\xe4\xbd", [23492] = "\xd2\x4c",
-+ [23494] = "\xd2\x4d", [23495] = "\xd2\x4e", [23497] = "\xd2\x4f",
-+ [23498] = "\xd2\x50", [23499] = "\xd2\x51", [23501] = "\xe4\xc0",
-+ [23504] = "\xbc\xc4", [23508] = "\xc6\xc6", [23509] = "\xe4\xc5",
-+ [23510] = "\xe4\xc4", [23512] = "\xd2\x52", [23513] = "\xe4\xc1",
-+ [23514] = "\xd2\x53", [23517] = "\xcf\xb6", [23522] = "\xd2\x54",
-+ [23523] = "\xe4\xca", [23524] = "\xd2\x55", [23525] = "\xd2\x56",
-+ [23526] = "\xe4\xce", [23527] = "\xe4\xcb", [23528] = "\xd2\x57",
-+ [23529] = "\xd2\x58", [23530] = "\xd2\x59", [23532] = "\xd2\x5a",
-+ [23534] = "\xd2\x5b", [23536] = "\xe4\xc7", [23537] = "\xd2\x5c",
-+ [23538] = "\xd2\x5d", [23539] = "\xd2\x5e", [23540] = "\xd2\x5f",
-+ [23542] = "\xd2\x60", [23543] = "\xe4\xc8", [23545] = "\xd2\x61",
-+ [23547] = "\xd2\x62", [23548] = "\xd2\x63", [23549] = "\xe4\xcd",
-+ [23550] = "\xd2\x64", [23551] = "\xd2\x65", [23553] = "\xe4\xc2",
-+ [23554] = "\xd2\xd5", [23555] = "\xe4\xc9", [23556] = "\xe4\xc3",
-+ [23559] = "\xe4\xcc", [23561] = "\xd2\x66", [23563] = "\xd2\x67",
-+ [23567] = "\xe4\xd2", [23568] = "\xd2\x68", [23569] = "\xb4\xca",
-+ [23571] = "\xe4\xcf", [23573] = "\xd2\x69", [23574] = "\xd2\x6a",
-+ [23575] = "\xe4\xd0", [23576] = "\xd2\x6b", [23578] = "\xe4\xd1",
-+ [23579] = "\xe4\xd4", [23580] = "\xd2\x6c", [23585] = "\xd2\x6d",
-+ [23587] = "\xd2\x6e", [23588] = "\xd2\x6f", [23590] = "\xd2\x70",
-+ [23591] = "\xe4\xd3", [23592] = "\xc8\xf6", [23593] = "\xd2\x71",
-+ [23594] = "\xd2\x72", [23597] = "\xe4\xd5", [23598] = "\xce\xfc",
-+ [23599] = "\xca\xed", [23600] = "\xe4\xda", [23603] = "\xe4\xd7",
-+ [23606] = "\xd2\x73", [23610] = "\xd2\x74", [23612] = "\xe4\xd6",
-+ [23613] = "\xc0\xd2", [23615] = "\xe4\xd9", [23616] = "\xe4\xdb",
-+ [23617] = "\xd2\x76", [23618] = "\xd2\x77", [23619] = "\xd2\x78",
-+ [23620] = "\xe4\xd8", [23621] = "\xd2\x75", [23622] = "\xe4\xdf",
-+ [23624] = "\xe4\xdc", [23625] = "\xd2\x79", [23626] = "\xd2\x7a",
-+ [23627] = "\xd2\x7b", [23628] = "\xd2\x7c", [23629] = "\xd2\x7d",
-+ [23630] = "\xd2\x7e", [23631] = "\xe4\xdd", [23632] = "\xe4\xc6",
-+ [23633] = "\xd3\x21", [23635] = "\xd3\x22", [23636] = "\xe4\xde",
-+ [23637] = "\xe4\xe0", [23639] = "\xd3\x23", [23641] = "\xd3\x24",
-+ [23644] = "\xe4\xe1", [23645] = "\xd3\x25", [23646] = "\xd3\x26",
-+ [23648] = "\xd3\x27", [23650] = "\xd3\x28", [23651] = "\xca\xc6",
-+ [23653] = "\xe4\xe2", [23657] = "\xd3\x29", [23660] = "\xd3\x2a",
-+ [23661] = "\xd3\x2b", [23662] = "\xcc\xe2", [23665] = "\xb6\xce",
-+ [23666] = "\xb7\xa9", [23667] = "\xe4\xe3", [23670] = "\xd3\x2c",
-+ [23671] = "\xd3\x2d", [23673] = "\xca\xb4", [23675] = "\xbf\xe8",
-+ [23677] = "\xcc\xb0", [23679] = "\xd3\x2e", [23680] = "\xe4\xe4",
-+ [23682] = "\xce\xb3", [23684] = "\xd3\x2f", [23685] = "\xc7\xf4",
-+ [23687] = "\xc1\xc6", [23688] = "\xc7\xb4", [23691] = "\xbd\xcd",
-+ [23694] = "\xd3\x30", [23695] = "\xb0\xc0", [23696] = "\xd3\x31",
-+ [23697] = "\xe4\xe9", [23698] = "\xe4\xe7", [23700] = "\xe4\xe5",
-+ [23701] = "\xb4\xa1", [23702] = "\xd3\x32", [23703] = "\xbe\xd1",
-+ [23704] = "\xe4\xea", [23707] = "\xe4\xe8", [23709] = "\xe4\xe6",
-+ [23710] = "\xe4\xee", [23712] = "\xd3\x33", [23713] = "\xe4\xed",
-+ [23714] = "\xe4\xec", [23715] = "\xe4\xeb", [23718] = "\xd3\x34",
-+ [23719] = "\xd3\x35", [23721] = "\xe4\xef", [23722] = "\xd3\x36",
-+ [23723] = "\xd3\x37", [23724] = "\xd3\x38", [23725] = "\xe4\xf0",
-+ [23726] = "\xc0\xba", [23727] = "\xd3\x39", [23728] = "\xe4\xf1",
-+ [23730] = "\xe4\xf3", [23732] = "\xd3\x3a", [23733] = "\xe4\xf2",
-+ [23735] = "\xd3\x3b", [23736] = "\xd3\x3c", [23737] = "\xd3\x3d",
-+ [23738] = "\xb8\xd2", [23741] = "\xd3\x3e", [23742] = "\xc1\xb8",
-+ [23743] = "\xd3\x3f", [23746] = "\xe4\xf5", [23747] = "\xd3\x40",
-+ [23748] = "\xd3\x41", [23749] = "\xd3\x42", [23750] = "\xc5\xfc",
-+ [23751] = "\xd3\x43", [23752] = "\xe4\xf4", [23753] = "\xd3\x44",
-+ [23754] = "\xd3\x45", [23756] = "\xe4\xf6", [23757] = "\xd3\x46",
-+ [23758] = "\xca\xb5", [23759] = "\xc1\xec", [23760] = "\xb9\xc7",
-+ [23762] = "\xe4\xf7", [23766] = "\xd3\x47", [23767] = "\xce\xc8",
-+ [23769] = "\xd3\x48", [23771] = "\xd3\x49", [23775] = "\xe4\xf9",
-+ [23778] = "\xe4\xfa", [23780] = "\xe4\xfb", [23781] = "\xd3\x4a",
-+ [23782] = "\xe4\xfc", [23784] = "\xbb\xe5", [23786] = "\xe4\xfd",
-+ [23787] = "\xb7\xcf", [23790] = "\xb5\xea", [23792] = "\xb5\xaa",
-+ [23794] = "\xe5\xa1", [23795] = "\xd3\x4b", [23796] = "\xcc\xf3",
-+ [23797] = "\xb9\xc8", [23798] = "\xe4\xfe", [23799] = "\xd3\x4c",
-+ [23800] = "\xd3\x4d", [23801] = "\xd3\x4e", [23802] = "\xe5\xa4",
-+ [23803] = "\xcc\xe6", [23805] = "\xc7\xbc", [23807] = "\xd3\x4f",
-+ [23808] = "\xc9\xb3", [23809] = "\xd3\x50", [23810] = "\xd3\x51",
-+ [23811] = "\xd3\x52", [23812] = "\xbd\xe3", [23813] = "\xe5\xa3",
-+ [23814] = "\xd3\x53", [23815] = "\xbc\xd3", [23816] = "\xb9\xc9",
-+ [23817] = "\xbb\xe6", [23818] = "\xb5\xe9", [23819] = "\xca\xb6",
-+ [23820] = "\xe5\xa2", [23821] = "\xd3\x54", [23822] = "\xd3\x55",
-+ [23824] = "\xc1\xc7", [23825] = "\xcb\xc2", [23826] = "\xba\xf7",
-+ [23827] = "\xd3\x56", [23830] = "\xd3\x57", [23834] = "\xd3\x58",
-+ [23835] = "\xbb\xe7", [23836] = "\xc4\xdd", [23837] = "\xd3\x59",
-+ [23838] = "\xe5\xa7", [23839] = "\xce\xdf", [23840] = "\xba\xd9",
-+ [23841] = "\xd3\x5a", [23842] = "\xe5\xa8", [23843] = "\xbf\xc2",
-+ [23845] = "\xe5\xaa", [23849] = "\xbe\xd2", [23850] = "\xba\xb0",
-+ [23852] = "\xd3\x5b", [23853] = "\xd3\x5c", [23854] = "\xd3\x5d",
-+ [23855] = "\xe5\xa9", [23856] = "\xd3\x5e", [23857] = "\xd3\x5f",
-+ [23858] = "\xbd\xaa", [23859] = "\xb8\xbe", [23860] = "\xc1\xc8",
-+ [23861] = "\xe5\xa5", [23862] = "\xe5\xab", [23863] = "\xd3\x60",
-+ [23864] = "\xd3\x61", [23867] = "\xe5\xa6", [23868] = "\xb7\xd0",
-+ [23869] = "\xd3\x62", [23870] = "\xe5\xae", [23871] = "\xe5\xb2",
-+ [23872] = "\xb7\xeb", [23873] = "\xd3\x63", [23875] = "\xd3\x64",
-+ [23878] = "\xe5\xad", [23879] = "\xd3\x65", [23881] = "\xd3\x66",
-+ [23882] = "\xd3\x67", [23883] = "\xe5\xb6", [23884] = "\xd3\x68",
-+ [23885] = "\xd3\x69", [23886] = "\xb9\xca", [23889] = "\xcd\xed",
-+ [23890] = "\xb0\xbc", [23891] = "\xe5\xb3", [23893] = "\xd3\x6a",
-+ [23894] = "\xb5\xeb", [23895] = "\xd3\x6b", [23896] = "\xe5\xb0",
-+ [23898] = "\xd3\x6c", [23902] = "\xe5\xb1", [23904] = "\xd3\x6d",
-+ [23905] = "\xc5\xfd", [23906] = "\xe5\xaf", [23907] = "\xe5\xac",
-+ [23909] = "\xb3\xa8", [23910] = "\xc0\xe4", [23912] = "\xd3\x6e",
-+ [23913] = "\xb8\xa8", [23914] = "\xd3\x6f", [23915] = "\xd3\x70",
-+ [23917] = "\xe5\xb8", [23919] = "\xd3\x71", [23921] = "\xd3\x72",
-+ [23922] = "\xd3\x73", [23923] = "\xd3\x74", [23925] = "\xd3\x75",
-+ [23926] = "\xd3\x76", [23928] = "\xd3\x77", [23929] = "\xe5\xb5",
-+ [23931] = "\xd3\x78", [23932] = "\xd3\x79", [23933] = "\xd3\x7a",
-+ [23935] = "\xe5\xb7", [23937] = "\xd3\x7b", [23939] = "\xe5\xb4",
-+ [23942] = "\xd3\x7c", [23943] = "\xd3\x7d", [23945] = "\xb7\xd1",
-+ [23946] = "\xc2\xb3", [23947] = "\xe5\xb9", [23948] = "\xc1\xee",
-+ [23949] = "\xd3\x7e", [23950] = "\xd4\x21", [23951] = "\xe5\xc6",
-+ [23952] = "\xf4\x5c", [23954] = "\xe5\xc2", [23955] = "\xe5\xbc",
-+ [23958] = "\xd4\x22", [23959] = "\xd4\x23", [23962] = "\xd4\x24",
-+ [23963] = "\xe5\xc0", [23964] = "\xbc\xfa", [23965] = "\xb0\xdd",
-+ [23966] = "\xe5\xbb", [23967] = "\xe5\xc3", [23968] = "\xe5\xc7",
-+ [23969] = "\xb9\xcb", [23970] = "\xcc\xd6", [23971] = "\xd4\x25",
-+ [23972] = "\xc4\xd6", [23973] = "\xe5\xbd", [23974] = "\xd4\x26",
-+ [23975] = "\xd4\x27", [23976] = "\xe5\xc5", [23977] = "\xd4\x28",
-+ [23978] = "\xe5\xba", [23979] = "\xc3\xbe", [23981] = "\xe5\xbf",
-+ [23982] = "\xb0\xbd", [23983] = "\xcc\xca", [23986] = "\xd4\x29",
-+ [23987] = "\xd4\x2a", [23988] = "\xd4\x2b", [23989] = "\xd4\x2c",
-+ [23990] = "\xd4\x2d", [23991] = "\xe5\xbe", [23994] = "\xb6\xdb",
-+ [23995] = "\xc8\xec", [23996] = "\xd4\x2e", [23997] = "\xd4\x2f",
-+ [23998] = "\xd4\x30", [23999] = "\xc1\xed", [24001] = "\xce\xd0",
-+ [24002] = "\xbd\xef", [24005] = "\xe5\xee", [24006] = "\xf4\x5d",
-+ [24007] = "\xd4\x31", [24008] = "\xe5\xc8", [24009] = "\xd4\x32",
-+ [24010] = "\xc0\xfe", [24012] = "\xe5\xc4", [24013] = "\xe5\xc9",
-+ [24014] = "\xe5\xcb", [24016] = "\xc4\xf9", [24017] = "\xe5\xce",
-+ [24018] = "\xd4\x34", [24020] = "\xe5\xca", [24021] = "\xd4\x35",
-+ [24022] = "\xd4\x36", [24024] = "\xca\xd4", [24025] = "\xb4\xcb",
-+ [24026] = "\xd4\x37", [24027] = "\xd4\x38", [24028] = "\xcc\xcb",
-+ [24029] = "\xd4\x39", [24031] = "\xb0\xde", [24033] = "\xd4\x3a",
-+ [24034] = "\xe5\xcd", [24036] = "\xce\xfd", [24037] = "\xd4\x3b",
-+ [24038] = "\xd4\x3c", [24041] = "\xd4\x3d", [24042] = "\xd4\x3e",
-+ [24043] = "\xe5\xcc", [24048] = "\xd4\x33", [24049] = "\xb1\xef",
-+ [24052] = "\xc6\xec", [24053] = "\xe5\xcf", [24056] = "\xd4\x3f",
-+ [24057] = "\xe5\xd6", [24058] = "\xe5\xd0", [24059] = "\xe5\xd7",
-+ [24064] = "\xd4\x40", [24065] = "\xd4\x41", [24066] = "\xe5\xd3",
-+ [24069] = "\xd4\x42", [24071] = "\xd4\x43", [24075] = "\xc7\xfb",
-+ [24076] = "\xd4\x44", [24077] = "\xd4\x45", [24078] = "\xbc\xca",
-+ [24079] = "\xe5\xd5", [24080] = "\xd4\x46", [24081] = "\xe5\xd2",
-+ [24082] = "\xe5\xd8", [24083] = "\xe5\xd1", [24086] = "\xbd\xc4",
-+ [24087] = "\xd4\x47", [24088] = "\xd4\x48", [24091] = "\xcb\xa5",
-+ [24092] = "\xd4\x49", [24093] = "\xd4\x4a", [24094] = "\xbd\xcc",
-+ [24095] = "\xd4\x4b", [24097] = "\xe5\xd4", [24098] = "\xe5\xe0",
-+ [24099] = "\xd4\x4c", [24101] = "\xe5\xdc", [24102] = "\xd4\x4d",
-+ [24103] = "\xe5\xdf", [24105] = "\xe5\xdd", [24106] = "\xe5\xe1",
-+ [24107] = "\xe5\xdb", [24109] = "\xe5\xc1", [24110] = "\xc0\xd3",
-+ [24111] = "\xd4\x4e", [24113] = "\xc8\xcb", [24115] = "\xe5\xde",
-+ [24116] = "\xd4\x4f", [24117] = "\xd4\x50", [24118] = "\xe5\xd9",
-+ [24119] = "\xd4\x51", [24122] = "\xc1\xa1", [24123] = "\xb7\xd2",
-+ [24125] = "\xbd\xab", [24126] = "\xd4\x52", [24128] = "\xd4\x53",
-+ [24130] = "\xd4\x54", [24132] = "\xbf\xa5", [24133] = "\xc1\xb6",
-+ [24134] = "\xe5\xe4", [24136] = "\xd4\x55", [24137] = "\xe5\xe6",
-+ [24138] = "\xe5\xe7", [24141] = "\xe5\xe3", [24142] = "\xe5\xe5",
-+ [24143] = "\xd4\x56", [24145] = "\xd4\x57", [24146] = "\xd4\x58",
-+ [24149] = "\xd4\x59", [24150] = "\xe5\xda", [24151] = "\xe5\xe2",
-+ [24153] = "\xe5\xea", [24154] = "\xe5\xe9", [24155] = "\xd4\x5a",
-+ [24157] = "\xcb\xfa", [24158] = "\xd4\x5b", [24159] = "\xd4\x5c",
-+ [24160] = "\xb7\xab", [24163] = "\xd4\x5d", [24168] = "\xd4\x5e",
-+ [24169] = "\xe5\xe8", [24171] = "\xe5\xec", [24172] = "\xe5\xeb",
-+ [24173] = "\xe5\xef", [24174] = "\xd4\x5f", [24175] = "\xe5\xf1",
-+ [24177] = "\xd4\x60", [24178] = "\xbb\xbc", [24179] = "\xe5\xed",
-+ [24182] = "\xd4\x61", [24183] = "\xd4\x62", [24184] = "\xe5\xf2",
-+ [24185] = "\xe5\xf3", [24186] = "\xd4\x63", [24188] = "\xe5\xf4",
-+ [24189] = "\xd4\x64", [24190] = "\xe5\xfa", [24191] = "\xc5\xbb",
-+ [24192] = "\xe5\xf6", [24193] = "\xd4\x65", [24194] = "\xe5\xf5",
-+ [24195] = "\xe5\xf7", [24196] = "\xe5\xf8", [24197] = "\xd4\x66",
-+ [24198] = "\xe5\xf9", [24200] = "\xd4\x67", [24202] = "\xd4\x68",
-+ [24203] = "\xe5\xfb", [24204] = "\xe5\xfc", [24205] = "\xd4\x69",
-+ [24206] = "\xd4\x6a", [24358] = "\xb4\xcc", [24360] = "\xe5\xfd",
-+ [24362] = "\xe5\xfe", [24363] = "\xd4\x6c", [24364] = "\xd4\x6b",
-+ [24365] = "\xd4\x6d", [24366] = "\xd4\x6e", [24367] = "\xd4\x6f",
-+ [24371] = "\xd4\x70", [24372] = "\xd4\x71", [24373] = "\xe6\xa1",
-+ [24375] = "\xd4\x72", [24380] = "\xe6\xa2", [24381] = "\xe6\xa3",
-+ [24382] = "\xe6\xa4", [24383] = "\xd4\x73", [24384] = "\xe6\xa5",
-+ [24385] = "\xe6\xa6", [24386] = "\xd4\x74", [24387] = "\xd4\x75",
-+ [24388] = "\xe6\xa8", [24389] = "\xe6\xa7", [24392] = "\xe6\xa9",
-+ [24395] = "\xd4\x76", [24396] = "\xd4\x77", [24397] = "\xd4\x78",
-+ [24399] = "\xe6\xaa", [24400] = "\xe6\xab", [24401] = "\xd4\x79",
-+ [24403] = "\xd4\x7a", [24404] = "\xd4\x7b", [24405] = "\xd4\x7c",
-+ [24406] = "\xd4\x7d", [24407] = "\xe6\xae", [24408] = "\xe6\xac",
-+ [24409] = "\xe6\xad", [24410] = "\xba\xe1", [24411] = "\xb7\xd3",
-+ [24413] = "\xd4\x7e", [24414] = "\xc3\xd6", [24416] = "\xc8\xb3",
-+ [24417] = "\xd5\x21", [24418] = "\xbd\xf0", [24421] = "\xc7\xcd",
-+ [24423] = "\xc8\xed", [24424] = "\xe6\xaf", [24425] = "\xd8\xed",
-+ [24429] = "\xd5\x22", [24430] = "\xd5\x23", [24431] = "\xd5\x24",
-+ [24432] = "\xd5\x25", [24434] = "\xe6\xb0", [24435] = "\xe6\xb2",
-+ [24437] = "\xcd\xe5", [24438] = "\xe6\xb1", [24439] = "\xe6\xb4",
-+ [24440] = "\xe6\xb3", [24442] = "\xcd\xd3", [24443] = "\xd5\x26",
-+ [24444] = "\xe6\xb5", [24445] = "\xd5\x27", [24446] = "\xc8\xfe",
-+ [24447] = "\xd5\x28", [24448] = "\xd5\x29", [24449] = "\xd5\x2a",
-+ [24452] = "\xe6\xb6", [24454] = "\xd5\x2b", [24455] = "\xd5\x2c",
-+ [24458] = "\xe6\xb9", [24460] = "\xd5\x2d", [24461] = "\xe6\xb8",
-+ [24462] = "\xe6\xb7", [24465] = "\xd5\x2e", [24466] = "\xd5\x2f",
-+ [24467] = "\xe6\xba", [24468] = "\xb7\xb2", [24470] = "\xd5\x30",
-+ [24472] = "\xc1\xa2", [24473] = "\xb5\xc1", [24474] = "\xd5\x31",
-+ [24477] = "\xd5\x32", [24478] = "\xe6\xbe", [24479] = "\xe6\xbb",
-+ [24482] = "\xe6\xbc", [24484] = "\xd5\x33", [24486] = "\xe6\xbf",
-+ [24488] = "\xe6\xc0", [24489] = "\xe6\xbd", [24492] = "\xd5\x34",
-+ [24493] = "\xb1\xa9", [24495] = "\xd5\x35", [24496] = "\xd5\x36",
-+ [24497] = "\xb2\xa7", [24499] = "\xd5\x37", [24501] = "\xe6\xc2",
-+ [24502] = "\xe6\xc3", [24504] = "\xd5\x38", [24506] = "\xe6\xc4",
-+ [24508] = "\xcd\xe2", [24510] = "\xd5\x39", [24511] = "\xd5\x3a",
-+ [24514] = "\xbd\xac", [24516] = "\xe6\xc6", [24517] = "\xe6\xc5",
-+ [24523] = "\xd5\x3b", [24527] = "\xd5\x3c", [24528] = "\xbf\xe9",
-+ [24529] = "\xe6\xc7", [24531] = "\xd5\x3d", [24533] = "\xd5\x3e",
-+ [24534] = "\xe6\xc8", [24536] = "\xd5\x3f", [24537] = "\xe6\xc9",
-+ [24539] = "\xb4\xe5", [24540] = "\xd5\x40", [24542] = "\xd5\x41",
-+ [24543] = "\xd5\x42", [24544] = "\xb4\xcd", [24546] = "\xd5\x43",
-+ [24547] = "\xe6\xca", [24553] = "\xe6\xcb", [24554] = "\xd5\x44",
-+ [24555] = "\xcb\xdd", [24556] = "\xcd\xe3", [24557] = "\xd5\x45",
-+ [24558] = "\xd5\x46", [24559] = "\xd5\x47", [24560] = "\xcd\xd4",
-+ [24561] = "\xcf\xb7", [24563] = "\xb9\xcd", [24564] = "\xe6\xce",
-+ [24565] = "\xbc\xd4", [24566] = "\xe6\xcd", [24567] = "\xd5\x48",
-+ [24568] = "\xd5\x49", [24570] = "\xd5\x4a", [24571] = "\xe6\xcf",
-+ [24572] = "\xbc\xa9", [24573] = "\xd5\x4b", [24574] = "\xd5\x4c",
-+ [24575] = "\xd5\x4d", [24576] = "\xc2\xd1", [24577] = "\xd5\x4e",
-+ [24578] = "\xe6\xd0", [24579] = "\xd5\x4f", [24580] = "\xd5\x50",
-+ [24581] = "\xb9\xcc", [24582] = "\xd5\x51", [24583] = "\xcc\xd7",
-+ [24584] = "\xe6\xd1", [24585] = "\xe6\xd2", [24588] = "\xe6\xd3",
-+ [24589] = "\xd5\x52", [24590] = "\xd5\x53", [24591] = "\xd5\x54",
-+ [24592] = "\xd5\x55", [24593] = "\xe6\xd4", [24596] = "\xd5\x56",
-+ [24598] = "\xd5\x57", [24600] = "\xe6\xd5", [24604] = "\xd5\x58",
-+ [24606] = "\xd5\x59", [24608] = "\xd5\x5a", [24611] = "\xbc\xaa",
-+ [24612] = "\xd5\x5b", [24613] = "\xd5\x5c", [24614] = "\xcc\xed",
-+ [24615] = "\xd5\x5d", [24617] = "\xd5\x5e", [24618] = "\xd5\x5f",
-+ [24619] = "\xe6\xd7", [24620] = "\xd5\x60", [24621] = "\xc3\xbf",
-+ [24622] = "\xd5\x61", [24623] = "\xe6\xd6", [24624] = "\xd5\x62",
-+ [24628] = "\xd5\x63", [24630] = "\xe6\xd9", [24634] = "\xe6\xd8",
-+ [24642] = "\xe6\xda", [24646] = "\xc0\xbb", [24648] = "\xe6\xdb",
-+ [24650] = "\xe6\xdc", [24654] = "\xca\xb9", [24655] = "\xe6\xdd",
-+ [24656] = "\xd5\x64", [24657] = "\xc1\xef", [24658] = "\xe6\xde",
-+ [24660] = "\xd5\x65", [24662] = "\xd5\x66", [24664] = "\xe6\xdf",
-+ [24669] = "\xd5\x67", [24671] = "\xce\xfe", [24672] = "\xe6\xe2",
-+ [24673] = "\xd5\x68", [24674] = "\xe6\xe1", [24675] = "\xe6\xe0",
-+ [24676] = "\xc4\xb0", [24677] = "\xd5\x69", [24678] = "\xe6\xe3",
-+ [24679] = "\xbf\xa6", [24681] = "\xe6\xe4", [24685] = "\xe6\xe5",
-+ [24686] = "\xcf\xb8", [24687] = "\xe6\xe6", [24689] = "\xd5\x6a",
-+ [24692] = "\xe6\xe7", [24693] = "\xe6\xe9", [24694] = "\xe6\xe8",
-+ [24695] = "\xc8\xa5", [24696] = "\xd5\x6b", [24697] = "\xc6\xf9",
-+ [24699] = "\xcf\xbe", [24700] = "\xc8\xa9", [24702] = "\xd5\x6c",
-+ [24707] = "\xe6\xeb", [24710] = "\xbe\xd3", [24712] = "\xc9\xaa",
-+ [24714] = "\xe6\xec", [24715] = "\xe6\xea", [24716] = "\xd5\x6d",
-+ [24717] = "\xb4\xce", [24718] = "\xd5\x6e", [24721] = "\xb8\xd4",
-+ [24722] = "\xbb\xe8", [24725] = "\xc8\xee", [24726] = "\xd5\x6f",
-+ [24727] = "\xd5\x70", [24729] = "\xb8\xaa", [24730] = "\xcb\xc3",
-+ [24731] = "\xd5\x71", [24732] = "\xe6\xef", [24733] = "\xe6\xed",
-+ [24735] = "\xb9\xce", [24737] = "\xb9\xcf", [24738] = "\xb0\xe9",
-+ [24740] = "\xba\xe8", [24744] = "\xd5\x72", [24745] = "\xd5\x73",
-+ [24746] = "\xc7\xd9", [24755] = "\xb0\xdf", [24756] = "\xe6\xf4",
-+ [24758] = "\xc3\xc0", [24760] = "\xd5\x74", [24764] = "\xc7\xd8",
-+ [24765] = "\xd5\x75", [24766] = "\xc2\xdb", [24767] = "\xd5\x76",
-+ [24770] = "\xd5\x77", [24772] = "\xd5\x78", [24773] = "\xd5\x79",
-+ [24774] = "\xe6\xf6", [24775] = "\xd5\x7a", [24776] = "\xd5\x7b",
-+ [24777] = "\xe6\xf2", [24778] = "\xe6\xf5", [24779] = "\xe6\xf0",
-+ [24781] = "\xe6\xf3", [24782] = "\xcb\xa6", [24784] = "\xd5\x7c",
-+ [24785] = "\xb8\xd5", [24788] = "\xb0\xfd", [24789] = "\xe6\xf1",
-+ [24797] = "\xd5\x7d", [24798] = "\xd5\x7e", [24799] = "\xe6\xf8",
-+ [24800] = "\xd6\x21", [24801] = "\xe6\xf9", [24802] = "\xd6\x22",
-+ [24803] = "\xd6\x23", [24804] = "\xc6\xb9", [24806] = "\xd6\x24",
-+ [24808] = "\xb6\xbb", [24809] = "\xd6\x25", [24810] = "\xd6\x26",
-+ [24812] = "\xe7\xa6", [24813] = "\xc7\xbd", [24814] = "\xd6\x27",
-+ [24818] = "\xbb\xe9", [24819] = "\xd6\x28", [24821] = "\xb6\xbc",
-+ [24822] = "\xc0\xc8", [24823] = "\xcf\xc6", [24824] = "\xcc\xae",
-+ [24825] = "\xe6\xf7", [24826] = "\xc0\xd4", [24827] = "\xd6\x29",
-+ [24838] = "\xd6\x2a", [24839] = "\xd6\x2b", [24840] = "\xd6\x2c",
-+ [24842] = "\xb5\xd3", [24843] = "\xe6\xfa", [24844] = "\xd6\x2d",
-+ [24846] = "\xd6\x2e", [24848] = "\xd6\x2f", [24851] = "\xe6\xfc",
-+ [24852] = "\xd6\x30", [24855] = "\xd6\x31", [24857] = "\xe6\xfb",
-+ [24860] = "\xd6\x32", [24863] = "\xe6\xfd", [24864] = "\xd6\x33",
-+ [24865] = "\xc3\xa6", [24867] = "\xc7\xbe", [24869] = "\xd6\x34",
-+ [24873] = "\xc4\xb1", [24874] = "\xd6\x35", [24876] = "\xd6\x36",
-+ [24878] = "\xe7\xa3", [24885] = "\xd6\x37", [24886] = "\xe7\xa2",
-+ [24887] = "\xd6\x38", [24890] = "\xd6\x39", [24891] = "\xe6\xfe",
-+ [24892] = "\xd6\x3a", [24894] = "\xbf\xd5", [24896] = "\xc9\xe5",
-+ [24897] = "\xe7\xa5", [24898] = "\xd6\x3b", [24899] = "\xe7\xa4",
-+ [24900] = "\xb9\xd0", [24901] = "\xcf\xd3", [24903] = "\xd6\x3c",
-+ [24911] = "\xe7\xb5", [24912] = "\xd6\x3d", [24913] = "\xd6\x3e",
-+ [24917] = "\xe7\xa9", [24918] = "\xe7\xaa", [24919] = "\xd6\x3f",
-+ [24920] = "\xd6\x40", [24921] = "\xd6\x41", [24923] = "\xbc\xf0",
-+ [24925] = "\xd6\x42", [24926] = "\xe7\xa8", [24927] = "\xd6\x43",
-+ [24928] = "\xb9\xf8", [24929] = "\xe7\xa7", [24932] = "\xe7\xab",
-+ [24935] = "\xd6\x44", [24936] = "\xc4\xb2", [24937] = "\xca\xa2",
-+ [24938] = "\xc1\xa3", [24943] = "\xc2\xdc", [24944] = "\xe7\xaf",
-+ [24945] = "\xd6\x45", [24946] = "\xe7\xb0", [24947] = "\xe7\xac",
-+ [24948] = "\xd6\x47", [24949] = "\xd6\x48", [24950] = "\xd6\x49",
-+ [24952] = "\xe7\xad", [24954] = "\xe7\xae", [24955] = "\xd6\x4a",
-+ [24958] = "\xd6\x4b", [24959] = "\xb9\xd1", [24960] = "\xd6\x46",
-+ [24963] = "\xe7\xb6", [24965] = "\xe7\xb2", [24966] = "\xd6\x4c",
-+ [24968] = "\xd6\x4d", [24970] = "\xc9\xe6", [24971] = "\xd6\x4e",
-+ [24972] = "\xcb\xec", [24973] = "\xc9\xa8", [24974] = "\xd6\x4f",
-+ [24976] = "\xe7\xb1", [24978] = "\xd6\x50", [24979] = "\xe7\xb4",
-+ [24980] = "\xe7\xb3", [24984] = "\xcb\xc4", [24985] = "\xe7\xb7",
-+ [24990] = "\xd6\x51", [24992] = "\xe7\xb8", [24994] = "\xd6\x52",
-+ [24995] = "\xc1\xb7", [24996] = "\xd6\x53", [24997] = "\xe7\xb9",
-+ [25000] = "\xe7\xbb", [25002] = "\xe7\xbf", [25003] = "\xd6\x54",
-+ [25005] = "\xe7\xbc", [25006] = "\xe7\xba", [25007] = "\xc7\xbf",
-+ [25008] = "\xe7\xbd", [25010] = "\xe7\xbe", [25011] = "\xd6\x56",
-+ [25013] = "\xd6\x57", [25014] = "\xb2\xb2", [25016] = "\xe7\xc5",
-+ [25017] = "\xe7\xc0", [25018] = "\xd6\x58", [25019] = "\xd6\x55",
-+ [25021] = "\xe7\xc1", [25022] = "\xd6\x59", [25023] = "\xd6\x5a",
-+ [25025] = "\xe7\xc2", [25027] = "\xc2\xa1", [25029] = "\xd6\x5b",
-+ [25031] = "\xd6\x5c", [25032] = "\xe7\xc4", [25033] = "\xe7\xc3",
-+ [25034] = "\xe7\xc6", [25035] = "\xd6\x5d", [25037] = "\xd6\x5e",
-+ [25038] = "\xd6\x5f", [25039] = "\xe7\xc7", [25040] = "\xe7\xc8",
-+ [25041] = "\xd6\x60", [25043] = "\xbf\xc3", [25044] = "\xd6\x61",
-+ [25045] = "\xb2\xe9", [25047] = "\xe7\xc9", [25048] = "\xce\xd7",
-+ [25050] = "\xbc\xab", [25051] = "\xd6\x62", [25052] = "\xd6\x63",
-+ [25053] = "\xbd\xad", [25056] = "\xd6\x64", [25057] = "\xd6\x65",
-+ [25058] = "\xd6\x66", [25059] = "\xbb\xea", [25060] = "\xc3\xd7",
-+ [25061] = "\xd6\x67", [25062] = "\xd6\x68", [25064] = "\xd6\x69",
-+ [25065] = "\xd6\x6a", [25066] = "\xe7\xca", [25067] = "\xe7\xcb",
-+ [25068] = "\xb1\xb1", [25069] = "\xd6\x6b", [25070] = "\xe7\xcc",
-+ [25071] = "\xd6\x6c", [25072] = "\xd6\x6d", [25073] = "\xe7\xcd",
-+ [25074] = "\xe7\xce", [25075] = "\xd6\x6e", [25077] = "\xe7\xcf",
-+ [25079] = "\xe7\xd0", [25080] = "\xb6\xbd", [25081] = "\xda\xaa",
-+ [25082] = "\xe7\xd1", [25084] = "\xc0\xe5", [25085] = "\xe7\xd2",
-+ [25086] = "\xbc\xcb", [25087] = "\xd6\x6f", [25088] = "\xe7\xd3",
-+ [25090] = "\xd0\xb0", [25091] = "\xd6\x70", [25092] = "\xd6\x71",
-+ [25094] = "\xe7\xd4", [25095] = "\xca\xde", [25096] = "\xb4\xdc",
-+ [25097] = "\xd6\x72", [25098] = "\xd6\x73", [25099] = "\xc1\xa4",
-+ [25100] = "\xbd\xd8", [25101] = "\xd6\x74", [25102] = "\xc9\xf1",
-+ [25103] = "\xbd\xae", [25105] = "\xd6\x75", [25106] = "\xd6\x76",
-+ [25112] = "\xd6\x77", [25113] = "\xe7\xd5", [25114] = "\xb9\xd2",
-+ [25115] = "\xe7\xd6", [25116] = "\xc8\xcc", [25118] = "\xe7\xe4",
-+ [25122] = "\xd6\x78", [25123] = "\xe7\xd8", [25124] = "\xd6\x79",
-+ [25125] = "\xc2\xc9", [25126] = "\xc7\xf5", [25127] = "\xb8\xbf",
-+ [25128] = "\xe7\xd7", [25129] = "\xc1\xa5", [25130] = "\xd6\x7a",
-+ [25136] = "\xe7\xd9", [25139] = "\xd6\x7b", [25140] = "\xd6\x7c",
-+ [25141] = "\xd6\x7d", [25142] = "\xd6\x7e", [25143] = "\xc4\xfa",
-+ [25147] = "\xd7\x21", [25150] = "\xd7\x22", [25151] = "\xd7\x23",
-+ [25153] = "\xd7\x24", [25158] = "\xd7\x25", [25160] = "\xe7\xdb",
-+ [25161] = "\xe7\xda", [25162] = "\xe7\xdd", [25164] = "\xd7\x26",
-+ [25165] = "\xe7\xdc", [25167] = "\xe7\xde", [25168] = "\xd7\x27",
-+ [25170] = "\xe7\xe0", [25171] = "\xd7\x28", [25172] = "\xe7\xdf",
-+ [25174] = "\xb4\xcf", [25175] = "\xd7\x29", [25176] = "\xe7\xe1",
-+ [25178] = "\xe7\xe2", [25179] = "\xe7\xe3", [25181] = "\xd7\x2a",
-+ [25182] = "\xba\xb1", [25183] = "\xce\xc9", [25185] = "\xe7\xe5",
-+ [25186] = "\xbf\xa7", [25188] = "\xd7\x2b", [25190] = "\xb1\xf0",
-+ [25191] = "\xe7\xe6", [25192] = "\xe7\xe7", [25195] = "\xd7\x2c",
-+ [25197] = "\xd7\x2d", [25198] = "\xe7\xe8", [25199] = "\xd7\x2e",
-+ [25200] = "\xd7\x2f", [25201] = "\xd7\x30", [25203] = "\xd7\x31",
-+ [25204] = "\xd7\x32", [25207] = "\xd7\x33", [25209] = "\xd7\x34",
-+ [25210] = "\xd7\x35", [25211] = "\xb0\xf2", [25213] = "\xe7\xe9",
-+ [25214] = "\xd7\x36", [25217] = "\xd7\x37", [25218] = "\xe7\xea",
-+ [25220] = "\xd7\x38", [25222] = "\xd7\x39", [25224] = "\xd7\x3a",
-+ [25225] = "\xc9\xe7", [25226] = "\xd7\x3b", [25227] = "\xd7\x3c",
-+ [25229] = "\xbc\xc7", [25231] = "\xe7\xec", [25232] = "\xd7\x3d",
-+ [25233] = "\xd7\x3e", [25235] = "\xd7\x3f", [25236] = "\xd7\x40",
-+ [25237] = "\xb3\xa9", [25238] = "\xb0\xb2", [25239] = "\xd7\x41",
-+ [25240] = "\xd7\x42", [25241] = "\xd7\x43", [25242] = "\xd7\x44",
-+ [25243] = "\xe7\xeb", [25244] = "\xe7\xee", [25245] = "\xc7\xce",
-+ [25246] = "\xd7\x45", [25247] = "\xbf\xc4", [25248] = "\xd7\x46",
-+ [25249] = "\xb2\xd6", [25250] = "\xd7\x47", [25251] = "\xcb\xa7",
-+ [25252] = "\xd7\x48", [25255] = "\xd7\x49", [25256] = "\xb7\xdd",
-+ [25257] = "\xb6\xdc", [25258] = "\xd7\x4a", [25259] = "\xe7\xed",
-+ [25260] = "\xd7\x4b", [25261] = "\xb2\xea", [25262] = "\xd7\x4c",
-+ [25263] = "\xd7\x4d", [25269] = "\xb4\xa3", [25270] = "\xd7\x4e",
-+ [25280] = "\xd7\x4f", [25281] = "\xb1\xf1", [25282] = "\xe7\xf2",
-+ [25283] = "\xce\xea", [25284] = "\xc2\xdd", [25285] = "\xd7\x50",
-+ [25287] = "\xc9\xc4", [25289] = "\xe7\xfe", [25290] = "\xd7\x51",
-+ [25291] = "\xb2\xd7", [25292] = "\xe7\xfc", [25294] = "\xe7\xfa",
-+ [25295] = "\xe7\xf1", [25296] = "\xd7\x52", [25297] = "\xe7\xef",
-+ [25298] = "\xd7\x53", [25299] = "\xe7\xf0", [25300] = "\xd7\x54",
-+ [25301] = "\xbc\xe3", [25302] = "\xb6\xec", [25303] = "\xc3\xf7",
-+ [25304] = "\xd7\x55", [25306] = "\xd7\x56", [25307] = "\xc6\xd1",
-+ [25309] = "\xd7\x57", [25311] = "\xd7\x58", [25313] = "\xb1\xd1",
-+ [25315] = "\xe7\xf4", [25316] = "\xe7\xf3", [25318] = "\xd7\x59",
-+ [25319] = "\xd7\x5a", [25321] = "\xe7\xf9", [25322] = "\xe7\xf5",
-+ [25323] = "\xe7\xf8", [25325] = "\xd7\x5b", [25326] = "\xd7\x5c",
-+ [25328] = "\xd7\x5d", [25329] = "\xd7\x5e", [25330] = "\xcc\xd0",
-+ [25331] = "\xe7\xf7", [25332] = "\xb2\xd8", [25333] = "\xb3\xfd",
-+ [25334] = "\xe7\xfb", [25335] = "\xd7\x5f", [25336] = "\xd7\x60",
-+ [25337] = "\xe7\xfd", [25338] = "\xd7\x61", [25339] = "\xd7\x62",
-+ [25342] = "\xb7\xd4", [25350] = "\xe8\xa3", [25351] = "\xe8\xac",
-+ [25352] = "\xe8\xad", [25355] = "\xd7\x64", [25356] = "\xb0\xab",
-+ [25357] = "\xd7\x65", [25358] = "\xd7\x66", [25359] = "\xd7\x67",
-+ [25361] = "\xd7\x68", [25362] = "\xd7\x69", [25363] = "\xe8\xb4",
-+ [25368] = "\xb0\xf1", [25371] = "\xe8\xab", [25372] = "\xd7\x6a",
-+ [25373] = "\xd7\x6b", [25374] = "\xd7\x6c", [25375] = "\xe8\xaa",
-+ [25376] = "\xd7\x6d", [25377] = "\xe8\xa5", [25378] = "\xe8\xa4",
-+ [25379] = "\xd7\x6e", [25380] = "\xe8\xa2", [25381] = "\xe8\xa1",
-+ [25382] = "\xc3\xe3", [25383] = "\xd7\x6f", [25384] = "\xc2\xfb",
-+ [25385] = "\xe8\xa7", [25386] = "\xd7\x70", [25388] = "\xd7\x71",
-+ [25389] = "\xd7\x72", [25392] = "\xe8\xa6", [25394] = "\xd7\x73",
-+ [25395] = "\xd7\x74", [25396] = "\xd7\x75", [25397] = "\xe8\xa9",
-+ [25399] = "\xd7\x76", [25401] = "\xc1\xf0", [25402] = "\xb7\xd5",
-+ [25405] = "\xd7\x77", [25406] = "\xd7\x78", [25407] = "\xb1\xc1",
-+ [25408] = "\xe8\xa8", [25409] = "\xd7\x79", [25410] = "\xb9\xd3",
-+ [25411] = "\xd8\x3e", [25412] = "\xd7\x63", [25413] = "\xd7\x7a",
-+ [25414] = "\xd7\x7b", [25415] = "\xd7\x7c", [25416] = "\xc1\xf1",
-+ [25426] = "\xf4\x5f", [25440] = "\xd7\x7d", [25443] = "\xe8\xba",
-+ [25445] = "\xe8\xbb", [25447] = "\xb2\xd9", [25448] = "\xd7\x7e",
-+ [25451] = "\xb2\xae", [25452] = "\xe8\xb8", [25453] = "\xd8\x21",
-+ [25455] = "\xd8\x22", [25456] = "\xd8\x23", [25458] = "\xd8\x24",
-+ [25460] = "\xd8\x25", [25461] = "\xe8\xae", [25462] = "\xd8\x26",
-+ [25463] = "\xe8\xb6", [25465] = "\xe8\xbd", [25466] = "\xe8\xb7",
-+ [25469] = "\xd8\x27", [25470] = "\xe8\xb5", [25474] = "\xd8\x28",
-+ [25475] = "\xe7\xf6", [25476] = "\xd8\x29", [25477] = "\xd8\x2a",
-+ [25478] = "\xe8\xb3", [25480] = "\xd8\x2b", [25481] = "\xd8\x2c",
-+ [25482] = "\xe8\xaf", [25483] = "\xd8\x2d", [25484] = "\xd8\x2e",
-+ [25485] = "\xd8\x2f", [25486] = "\xb4\xd0", [25487] = "\xe8\xb1",
-+ [25488] = "\xe8\xbc", [25490] = "\xe8\xb2", [25494] = "\xd8\x30",
-+ [25495] = "\xd8\x31", [25496] = "\xe8\xbe", [25497] = "\xd8\x32",
-+ [25498] = "\xe8\xb0", [25499] = "\xc7\xfc", [25500] = "\xd8\x33",
-+ [25501] = "\xd8\x4c", [25505] = "\xcd\xe9", [25509] = "\xe8\xb9",
-+ [25517] = "\xe8\xcf", [25518] = "\xd8\x34", [25519] = "\xd8\x35",
-+ [25520] = "\xd8\x36", [25521] = "\xe8\xc7", [25525] = "\xbf\xfb",
-+ [25527] = "\xd8\x37", [25529] = "\xd8\x38", [25530] = "\xb5\xc6",
-+ [25532] = "\xb6\xdd", [25534] = "\xe8\xc2", [25535] = "\xd8\x39",
-+ [25536] = "\xd8\x3a", [25537] = "\xd8\x3b", [25539] = "\xb2\xdb",
-+ [25540] = "\xd8\x3c", [25542] = "\xbe\xd4", [25544] = "\xe8\xc5",
-+ [25548] = "\xba\xda", [25549] = "\xd8\x3d", [25551] = "\xc5\xd1",
-+ [25552] = "\xe8\xca", [25560] = "\xd8\x3f", [25561] = "\xca\xee",
-+ [25562] = "\xd8\x40", [25563] = "\xe8\xc1", [25567] = "\xb2\xda",
-+ [25568] = "\xb8\xd6", [25569] = "\xc9\xa9", [25570] = "\xe8\xcb",
-+ [25572] = "\xe8\xbf", [25574] = "\xd8\x41", [25575] = "\xe8\xc8",
-+ [25576] = "\xd8\x42", [25577] = "\xd8\x43", [25579] = "\xe8\xd2",
-+ [25580] = "\xd8\x44", [25581] = "\xe8\xc3", [25585] = "\xd8\x45",
-+ [25587] = "\xe8\xc4", [25588] = "\xc6\xba", [25590] = "\xd8\x46",
-+ [25591] = "\xe8\xc9", [25594] = "\xd8\x47", [25595] = "\xe8\xc6",
-+ [25596] = "\xcb\xa8", [25597] = "\xe8\xcc", [25598] = "\xb0\xe0",
-+ [25599] = "\xd8\x48", [25601] = "\xd8\x49", [25603] = "\xe8\xc0",
-+ [25605] = "\xd8\x4a", [25609] = "\xd8\x4b", [25616] = "\xe8\xce",
-+ [25618] = "\xe8\xcd", [25625] = "\xc7\xeb", [25626] = "\xe8\xd4",
-+ [25628] = "\xe8\xdf", [25631] = "\xd8\x4d", [25633] = "\xb3\xfe",
-+ [25637] = "\xe8\xe2", [25640] = "\xe8\xd0", [25641] = "\xd8\x4e",
-+ [25644] = "\xe8\xd5", [25645] = "\xcd\xee", [25653] = "\xd8\x4f",
-+ [25654] = "\xe8\xde", [25655] = "\xd8\x50", [25656] = "\xd8\x51",
-+ [25657] = "\xcd\xd5", [25658] = "\xd8\x52", [25661] = "\xd8\x53",
-+ [25662] = "\xce\xaa", [25663] = "\xd8\x54", [25665] = "\xd8\x55",
-+ [25666] = "\xd8\x56", [25670] = "\xd8\x57", [25671] = "\xc3\xf8",
-+ [25672] = "\xd8\x58", [25673] = "\xd8\x59", [25674] = "\xd8\x5a",
-+ [25675] = "\xb3\xeb", [25676] = "\xd8\x5b", [25680] = "\xd8\x5c",
-+ [25681] = "\xc9\xf2", [25682] = "\xe8\xe4", [25683] = "\xc6\xa1",
-+ [25684] = "\xd8\x5d", [25685] = "\xd8\x5e", [25686] = "\xb0\xb1",
-+ [25687] = "\xd8\x5f", [25689] = "\xe8\xdd", [25690] = "\xd8\x60",
-+ [25691] = "\xe8\xd9", [25692] = "\xc1\xf2", [25693] = "\xe8\xd3",
-+ [25694] = "\xe8\xdb", [25695] = "\xe8\xe0", [25696] = "\xd8\x61",
-+ [25697] = "\xc7\xac", [25699] = "\xd8\x62", [25700] = "\xd8\x63",
-+ [25701] = "\xb0\xaa", [25702] = "\xd8\x64", [25703] = "\xe8\xd8",
-+ [25704] = "\xd8\x65", [25705] = "\xe8\xe1", [25706] = "\xc9\xf8",
-+ [25708] = "\xd8\x66", [25709] = "\xd8\x67", [25713] = "\xd8\x68",
-+ [25714] = "\xe8\xdc", [25716] = "\xe8\xd7", [25717] = "\xd8\x69",
-+ [25723] = "\xbe\xd5", [25728] = "\xbd\xaf", [25730] = "\xd8\x6a",
-+ [25731] = "\xd8\x6b", [25732] = "\xbc\xac", [25733] = "\xd8\x6c",
-+ [25737] = "\xcc\xd8", [25740] = "\xc9\xc7", [25742] = "\xd8\x6d",
-+ [25743] = "\xe8\xe7", [25745] = "\xe8\xf0", [25750] = "\xd8\x6e",
-+ [25752] = "\xd8\x6f", [25753] = "\xd8\x70", [25754] = "\xd8\x71",
-+ [25757] = "\xe8\xda", [25759] = "\xd8\x72", [25761] = "\xd8\x73",
-+ [25762] = "\xb3\xf7", [25764] = "\xd8\x74", [25768] = "\xbe\xf8",
-+ [25769] = "\xe8\xe5", [25770] = "\xd8\x75", [25771] = "\xe8\xea",
-+ [25772] = "\xc1\xf3", [25773] = "\xd8\x76", [25774] = "\xd8\x77",
-+ [25775] = "\xe8\xe6", [25776] = "\xd8\x78", [25777] = "\xe8\xed",
-+ [25778] = "\xd8\x79", [25780] = "\xc3\xdf", [25782] = "\xe8\xee",
-+ [25783] = "\xd8\x7a", [25784] = "\xd8\x7b", [25785] = "\xcd\xd6",
-+ [25786] = "\xe8\xe3", [25787] = "\xb3\xb8", [25788] = "\xd8\x7c",
-+ [25789] = "\xe8\xe9", [25791] = "\xd8\x7d", [25792] = "\xe8\xec",
-+ [25793] = "\xcc\xac", [25795] = "\xd8\x7e", [25798] = "\xe8\xef",
-+ [25801] = "\xe8\xe8", [25802] = "\xe8\xeb", [25804] = "\xd9\x21",
-+ [25815] = "\xd9\x22", [25818] = "\xd9\x23", [25820] = "\xcb\xa9",
-+ [25822] = "\xcf\xa1", [25823] = "\xd9\x24", [25824] = "\xd9\x25",
-+ [25825] = "\xd9\x26", [25826] = "\xd9\x27", [25828] = "\xe8\xf3",
-+ [25831] = "\xd9\x28", [25834] = "\xd9\x2a", [25835] = "\xd9\x2b",
-+ [25836] = "\xe8\xfa", [25837] = "\xd9\x2c", [25839] = "\xe8\xf2",
-+ [25840] = "\xbc\xc3", [25842] = "\xd9\x2d", [25843] = "\xd9\x2e",
-+ [25846] = "\xe8\xd1", [25847] = "\xd9\x2f", [25852] = "\xd9\x30",
-+ [25854] = "\xd9\x31", [25856] = "\xd9\x32", [25857] = "\xca\xce",
-+ [25859] = "\xcc\xa2", [25860] = "\xe8\xf9", [25861] = "\xe8\xf8",
-+ [25863] = "\xe8\xf4", [25864] = "\xe8\xf5", [25866] = "\xb1\xb6",
-+ [25868] = "\xd9\x33", [25870] = "\xd9\x34", [25871] = "\xe8\xf7",
-+ [25873] = "\xe8\xf1", [25874] = "\xd9\x35", [25875] = "\xd9\x36",
-+ [25876] = "\xd9\x37", [25877] = "\xd9\x38", [25878] = "\xc4\xd5",
-+ [25879] = "\xd9\x39", [25882] = "\xd9\x3a", [25883] = "\xd9\x3b",
-+ [25884] = "\xe8\xf6", [25885] = "\xb0\xfe", [25887] = "\xd9\x3c",
-+ [25890] = "\xd9\x29", [25891] = "\xd9\x3d", [25892] = "\xd9\x3e",
-+ [25893] = "\xc2\xa2", [25894] = "\xd9\x3f", [25901] = "\xca\xc3",
-+ [25903] = "\xd9\x40", [25904] = "\xe8\xfb", [25905] = "\xe9\xa1",
-+ [25907] = "\xc8\xd9", [25910] = "\xd9\x41", [25912] = "\xe8\xfe",
-+ [25913] = "\xbe\xd6", [25914] = "\xbc\xc9", [25915] = "\xe9\xa3",
-+ [25918] = "\xb6\xbe", [25919] = "\xd9\x42", [25920] = "\xd9\x43",
-+ [25921] = "\xd9\x44", [25922] = "\xd9\x45", [25923] = "\xd9\x46",
-+ [25925] = "\xe9\xa4", [25926] = "\xd9\x47", [25927] = "\xc9\xf9",
-+ [25928] = "\xe8\xfd", [25929] = "\xd9\x48", [25930] = "\xe8\xd6",
-+ [25932] = "\xd9\x49", [25933] = "\xd9\x4a", [25934] = "\xd9\x4b",
-+ [25935] = "\xd9\x4c", [25936] = "\xd9\x4d", [25937] = "\xd9\x4e",
-+ [25938] = "\xd9\x4f", [25939] = "\xe8\xfc", [25940] = "\xd9\x50",
-+ [25944] = "\xcf\xcf", [25945] = "\xc6\xa2", [25946] = "\xc9\xf3",
-+ [25947] = "\xd9\x51", [25949] = "\xe9\xab", [25951] = "\xd9\x52",
-+ [25959] = "\xe9\xb1", [25961] = "\xd9\x53", [25962] = "\xd9\x54",
-+ [25963] = "\xd9\x55", [25965] = "\xd9\x56", [25966] = "\xe9\xb2",
-+ [25967] = "\xd9\x57", [25968] = "\xe9\xa5", [25969] = "\xd9\x58",
-+ [25972] = "\xc7\xf6", [25973] = "\xd9\x59", [25974] = "\xd9\x5a",
-+ [25975] = "\xe9\xaf", [25976] = "\xe9\xa7", [25977] = "\xd9\x5b",
-+ [25978] = "\xe9\xa9", [25979] = "\xd9\x5c", [25980] = "\xd9\x5d",
-+ [25983] = "\xd9\x5e", [25984] = "\xe9\xb3", [25985] = "\xe9\xa8",
-+ [25987] = "\xd9\x5f", [25988] = "\xe9\xac", [25991] = "\xb1\xf2",
-+ [25992] = "\xd9\x60", [25993] = "\xc6\xe5", [25995] = "\xe9\xad",
-+ [25996] = "\xe9\xb0", [25997] = "\xd9\x61", [25999] = "\xd9\x62",
-+ [26000] = "\xd9\x63", [26002] = "\xd9\x64", [26004] = "\xe9\xa6",
-+ [26005] = "\xd9\x65", [26006] = "\xc1\xa6", [26007] = "\xd9\x66",
-+ [26008] = "\xe9\xaa", [26009] = "\xbb\xa7", [26010] = "\xbf\xc5",
-+ [26011] = "\xb7\xb0", [26012] = "\xcc\xf4", [26013] = "\xd9\x74",
-+ [26014] = "\xcc\xf9", [26015] = "\xbd\xf2", [26016] = "\xf4\x61",
-+ [26020] = "\xd9\x67", [26022] = "\xd9\x68", [26023] = "\xd9\x69",
-+ [26024] = "\xd9\x6a", [26025] = "\xe9\xb7", [26026] = "\xe9\xb5",
-+ [26028] = "\xd9\x6b", [26029] = "\xd9\x6c", [26030] = "\xd9\x6d",
-+ [26031] = "\xd9\x6e", [26033] = "\xcf\xce", [26034] = "\xd9\x6f",
-+ [26039] = "\xd9\x70", [26041] = "\xe9\xb4", [26042] = "\xd9\x71",
-+ [26043] = "\xd9\x72", [26045] = "\xcd\xf5", [26046] = "\xd9\x73",
-+ [26047] = "\xe9\xb6", [26048] = "\xe9\xb8", [26053] = "\xe9\xb9",
-+ [26056] = "\xd9\x75", [26058] = "\xd9\x76", [26060] = "\xe9\xbc",
-+ [26061] = "\xe9\xba", [26063] = "\xd9\x77", [26064] = "\xd9\x78",
-+ [26068] = "\xc6\xa3", [26069] = "\xe9\xbb", [26070] = "\xd9\x79",
-+ [26072] = "\xd9\x7a", [26073] = "\xc8\xcd", [26074] = "\xe9\xae",
-+ [26077] = "\xd9\x7b", [26083] = "\xd9\x7c", [26086] = "\xd9\x7d",
-+ [26087] = "\xbd\xf3", [26089] = "\xe9\xbd", [26090] = "\xe9\xc2",
-+ [26091] = "\xc1\xf4", [26092] = "\xd9\x7e", [26094] = "\xe9\xc1",
-+ [26095] = "\xda\x21", [26096] = "\xda\x22", [26098] = "\xe9\xa2",
-+ [26100] = "\xda\x23", [26101] = "\xda\x24", [26102] = "\xe9\xc3",
-+ [26103] = "\xc1\xc9", [26106] = "\xe9\xbe", [26107] = "\xe9\xc0",
-+ [26109] = "\xda\x25", [26110] = "\xda\x26", [26112] = "\xda\x27",
-+ [26113] = "\xda\x28", [26114] = "\xda\x29", [26115] = "\xe9\xbf",
-+ [26118] = "\xdd\xb1", [26119] = "\xdd\xa2", [26120] = "\xda\x2a",
-+ [26121] = "\xda\x2b", [26122] = "\xe9\xc5", [26123] = "\xda\x2c",
-+ [26126] = "\xda\x2d", [26129] = "\xda\x2e", [26130] = "\xe9\xc4",
-+ [26135] = "\xda\x2f", [26137] = "\xda\x30", [26141] = "\xcd\xf6",
-+ [26143] = "\xe2\xbc", [26144] = "\xe9\xc6", [26150] = "\xda\x31",
-+ [26152] = "\xda\x32", [26154] = "\xda\x33", [26156] = "\xda\x34",
-+ [26157] = "\xda\x35", [26159] = "\xe9\xc7", [26160] = "\xda\x36",
-+ [26161] = "\xb8\x66", [26162] = "\xda\x37", [26166] = "\xda\x38",
-+ [26173] = "\xe9\xc8", [26174] = "\xb8\xd7", [26176] = "\xb5\xd4",
-+ [26178] = "\xda\x39", [26179] = "\xda\x3a", [26180] = "\xe9\xca",
-+ [26181] = "\xd1\xdd", [26182] = "\xda\x3b", [26183] = "\xda\x3c",
-+ [26184] = "\xda\x3d", [26185] = "\xda\x3e", [26186] = "\xb5\xf5",
-+ [26188] = "\xce\xba", [26189] = "\xda\x3f", [26190] = "\xb6\xf3",
-+ [26191] = "\xe9\xcb", [26192] = "\xda\x40", [26193] = "\xda\x41",
-+ [26194] = "\xda\x42", [26195] = "\xda\x43", [26196] = "\xda\x44",
-+ [26199] = "\xe9\xcc", [26201] = "\xda\x45", [26203] = "\xc3\xee",
-+ [26204] = "\xda\x46", [26207] = "\xda\x47", [26209] = "\xe9\xcd",
-+ [26213] = "\xda\x48", [26214] = "\xda\x49", [26215] = "\xda\x4a",
-+ [26217] = "\xc6\xfa", [26218] = "\xda\x4b", [26219] = "\xb0\xba",
-+ [26232] = "\xda\x6d", [26234] = "\xb2\xe3", [26235] = "\xe9\xd2",
-+ [26236] = "\xe9\xd3", [26237] = "\xda\x4c", [26241] = "\xda\x4d",
-+ [26243] = "\xe9\xce", [26245] = "\xbb\xbd", [26246] = "\xda\x4e",
-+ [26248] = "\xda\x4f", [26250] = "\xda\x50", [26252] = "\xda\x51",
-+ [26257] = "\xda\x52", [26259] = "\xe9\xcf", [26260] = "\xc7\xc2",
-+ [26262] = "\xda\x53", [26263] = "\xda\x54", [26264] = "\xda\x55",
-+ [26265] = "\xe9\xd0", [26266] = "\xe9\xd1", [26267] = "\xe9\xdb",
-+ [26269] = "\xda\x56", [26271] = "\xe9\xd5", [26272] = "\xe9\xd8",
-+ [26273] = "\xda\x57", [26275] = "\xda\x58", [26276] = "\xda\x59",
-+ [26277] = "\xda\x5a", [26278] = "\xe9\xd4", [26279] = "\xda\x5b",
-+ [26280] = "\xda\x5c", [26281] = "\xda\x5d", [26287] = "\xda\x5e",
-+ [26288] = "\xda\x5f", [26289] = "\xda\x60", [26291] = "\xda\x61",
-+ [26292] = "\xe9\xd6", [26293] = "\xda\x62", [26294] = "\xe9\xd7",
-+ [26295] = "\xbc\xd8", [26297] = "\xe9\xd9", [26299] = "\xc3\xc1",
-+ [26301] = "\xb7\xd6", [26302] = "\xb3\xc2", [26305] = "\xda\x63",
-+ [26306] = "\xda\x64", [26308] = "\xe9\xdc", [26309] = "\xda\x65",
-+ [26311] = "\xda\x66", [26313] = "\xb3\xbf", [26314] = "\xda\x67",
-+ [26315] = "\xe9\xe1", [26316] = "\xda\x68", [26318] = "\xe9\xdd",
-+ [26319] = "\xe9\xe0", [26320] = "\xda\x69", [26323] = "\xda\x6a",
-+ [26324] = "\xc8\xba", [26325] = "\xda\x6b", [26327] = "\xda\x6c",
-+ [26329] = "\xe9\xde", [26332] = "\xe9\xdf", [26333] = "\xc9\xc8",
-+ [26334] = "\xc8\xda", [26335] = "\xe9\xe2", [26344] = "\xc2\xfd",
-+ [26345] = "\xe9\xec", [26346] = "\xda\x6e", [26347] = "\xe9\xe8",
-+ [26348] = "\xda\x6f", [26349] = "\xda\x70", [26350] = "\xb2\xeb",
-+ [26352] = "\xe9\xe6", [26354] = "\xcb\xaa", [26355] = "\xe9\xe7",
-+ [26356] = "\xda\x71", [26357] = "\xda\x72", [26358] = "\xe9\xe4",
-+ [26359] = "\xda\x73", [26360] = "\xe9\xe5", [26361] = "\xe9\xea",
-+ [26362] = "\xe9\xed", [26363] = "\xda\x74", [26365] = "\xe9\xeb",
-+ [26366] = "\xda\x75", [26367] = "\xda\x76", [26368] = "\xda\x77",
-+ [26369] = "\xe9\xe9", [26370] = "\xe9\xe3", [26371] = "\xda\x78",
-+ [26372] = "\xda\x79", [26376] = "\xc3\xd8", [26377] = "\xda\x7a",
-+ [26378] = "\xe9\xf4", [26380] = "\xcc\xaa", [26382] = "\xda\x7b",
-+ [26383] = "\xda\x7c", [26385] = "\xda\x7d", [26387] = "\xda\x7e",
-+ [26389] = "\xe9\xf2", [26392] = "\xdb\x21", [26393] = "\xe9\xf3",
-+ [26398] = "\xdb\x22", [26399] = "\xdb\x23", [26401] = "\xdb\x24",
-+ [26402] = "\xdb\x25", [26404] = "\xe9\xee", [26407] = "\xe9\xf0",
-+ [26409] = "\xdb\x26", [26410] = "\xdb\x27", [26411] = "\xe9\xf1",
-+ [26412] = "\xdb\x28", [26413] = "\xdb\x29", [26414] = "\xdb\x2a",
-+ [26415] = "\xe9\xef", [26416] = "\xdb\x2b", [26419] = "\xdb\x2c",
-+ [26421] = "\xdb\x2d", [26425] = "\xc0\xe6", [26427] = "\xcf\xb9",
-+ [26428] = "\xe9\xf8", [26429] = "\xdb\x2e", [26430] = "\xe9\xf9",
-+ [26435] = "\xea\xa1", [26437] = "\xbf\xaa", [26439] = "\xe9\xfb",
-+ [26440] = "\xdb\x2f", [26441] = "\xe9\xfe", [26445] = "\xdb\x30",
-+ [26447] = "\xe9\xf6", [26448] = "\xe9\xf5", [26449] = "\xdb\x31",
-+ [26451] = "\xea\xa2", [26452] = "\xdb\x32", [26453] = "\xdb\x33",
-+ [26454] = "\xb2\xdc", [26456] = "\xe9\xfc", [26458] = "\xea\xa3",
-+ [26462] = "\xe9\xfd", [26463] = "\xdb\x34", [26465] = "\xdb\x35",
-+ [26466] = "\xdb\x36", [26468] = "\xe9\xfa", [26470] = "\xc4\xb3",
-+ [26472] = "\xe9\xf7", [26475] = "\xdb\x37", [26479] = "\xc7\xe8",
-+ [26482] = "\xea\xa7", [26483] = "\xdb\x38", [26484] = "\xdb\x39",
-+ [26485] = "\xdb\x3a", [26486] = "\xdb\x3b", [26487] = "\xdb\x3c",
-+ [26488] = "\xdb\x3d", [26489] = "\xdb\x3e", [26491] = "\xdb\x3f",
-+ [26492] = "\xdb\x40", [26493] = "\xcd\xbb", [26496] = "\xdb\x41",
-+ [26499] = "\xdb\x42", [26501] = "\xdb\x43", [26503] = "\xdb\x44",
-+ [26504] = "\xdb\x45", [26505] = "\xdb\x46", [26510] = "\xdb\x47",
-+ [26511] = "\xea\xa6", [26512] = "\xdb\x48", [26514] = "\xea\xa5",
-+ [26515] = "\xdb\x49", [26519] = "\xdb\x4a", [26523] = "\xea\xae",
-+ [26524] = "\xdb\x4b", [26525] = "\xdb\x4c", [26526] = "\xdb\x4d",
-+ [26527] = "\xea\xa8", [26529] = "\xdb\x4e", [26531] = "\xea\xb0",
-+ [26533] = "\xdb\x4f", [26538] = "\xcd\xe6", [26539] = "\xea\xb3",
-+ [26541] = "\xea\xaa", [26542] = "\xdb\x50", [26543] = "\xdb\x51",
-+ [26544] = "\xea\xab", [26545] = "\xdb\x52", [26548] = "\xea\xaf",
-+ [26550] = "\xea\xb2", [26551] = "\xea\xb1", [26552] = "\xdb\x53",
-+ [26553] = "\xdb\x54", [26554] = "\xdb\x55", [26555] = "\xea\xa9",
-+ [26558] = "\xdb\x56", [26560] = "\xea\xac", [26562] = "\xea\xbd",
-+ [26565] = "\xdb\x57", [26566] = "\xdb\x58", [26569] = "\xdb\x59",
-+ [26570] = "\xdb\x5a", [26572] = "\xdb\x5b", [26575] = "\xdb\x5c",
-+ [26576] = "\xea\xb6", [26578] = "\xdb\x5d", [26579] = "\xdb\x5e",
-+ [26580] = "\xdb\x5f", [26586] = "\xdb\x60", [26587] = "\xdb\x61",
-+ [26589] = "\xdb\x62", [26591] = "\xea\xb4", [26593] = "\xdb\x63",
-+ [26594] = "\xea\xb5", [26595] = "\xdb\x64", [26598] = "\xea\xba",
-+ [26599] = "\xea\xbb", [26600] = "\xdb\x65", [26601] = "\xb3\xaa",
-+ [26602] = "\xdb\x66", [26603] = "\xb5\xc2", [26606] = "\xea\xb9",
-+ [26607] = "\xdb\x67", [26609] = "\xdb\x68", [26611] = "\xdb\x69",
-+ [26613] = "\xea\xa4", [26614] = "\xdb\x6a", [26615] = "\xf4\x64",
-+ [26617] = "\xdb\x6b", [26618] = "\xdb\x6c", [26619] = "\xdb\x6d",
-+ [26621] = "\xea\xb8", [26622] = "\xea\xbc", [26623] = "\xea\xb7",
-+ [26624] = "\xdb\x6e", [26625] = "\xea\xbe", [26626] = "\xdb\x70",
-+ [26627] = "\xdb\x71", [26628] = "\xdb\x72", [26629] = "\xea\xc0",
-+ [26630] = "\xea\xbf", [26632] = "\xdb\x73", [26633] = "\xdb\x6f",
-+ [26634] = "\xdb\x74", [26635] = "\xdb\x75", [26636] = "\xdb\x76",
-+ [26638] = "\xdb\x77", [26639] = "\xdb\x78", [26641] = "\xea\xc2",
-+ [26642] = "\xea\xc1", [26643] = "\xe9\xda", [26647] = "\xea\xc6",
-+ [26648] = "\xdb\x79", [26653] = "\xdb\x7a", [26654] = "\xdb\x7b",
-+ [26656] = "\xdb\x7c", [26657] = "\xea\xc3", [26658] = "\xdb\x7d",
-+ [26661] = "\xdb\x7e", [26662] = "\xea\xc4", [26665] = "\xea\xc5",
-+ [26666] = "\xdc\x21", [26667] = "\xea\xc7", [26668] = "\xdc\x22",
-+ [26672] = "\xb7\xec", [26673] = "\xdc\x23", [26674] = "\xea\xc9",
-+ [26675] = "\xdc\x24", [26676] = "\xea\xc8", [26677] = "\xdc\x25",
-+ [26678] = "\xbd\xb0", [26680] = "\xdc\x26", [26681] = "\xdc\x27",
-+ [26682] = "\xdc\x28", [26683] = "\xdc\x29", [26684] = "\xb9\xd4",
-+ [26685] = "\xde\xa7", [26686] = "\xdc\x2a", [26689] = "\xdc\x2b",
-+ [26690] = "\xea\xca", [26691] = "\xbd\xd1", [26693] = "\xdc\x2c",
-+ [26694] = "\xdc\x2d", [26695] = "\xb3\xb9", [26696] = "\xdc\x2e",
-+ [26697] = "\xea\xcb", [26698] = "\xdc\x2f", [26699] = "\xb1\xd2",
-+ [26700] = "\xdc\x30", [26701] = "\xbe\xd7", [26702] = "\xea\xcc",
-+ [26703] = "\xdc\x31", [26704] = "\xdc\x32", [26705] = "\xb9\xd5",
-+ [26706] = "\xea\xcd", [26707] = "\xb0\xe1", [26708] = "\xdc\x33",
-+ [26712] = "\xc9\xbd", [26713] = "\xdc\x34", [26715] = "\xea\xce",
-+ [26720] = "\xbf\xea", [26721] = "\xdc\x35", [26722] = "\xea\xd5",
-+ [26725] = "\xea\xd2", [26727] = "\xc3\xef", [26729] = "\xdc\x36",
-+ [26731] = "\xdc\x37", [26733] = "\xea\xd3", [26734] = "\xea\xd0",
-+ [26735] = "\xb6\xde", [26736] = "\xdc\x38", [26737] = "\xea\xcf",
-+ [26738] = "\xea\xd6", [26744] = "\xb7\xb6", [26747] = "\xc2\xde",
-+ [26749] = "\xea\xdc", [26754] = "\xea\xd8", [26758] = "\xc2\xb5",
-+ [26759] = "\xea\xd7", [26760] = "\xdc\x39", [26761] = "\xea\xda",
-+ [26762] = "\xdc\x3a", [26763] = "\xdc\x3b", [26764] = "\xdc\x3c",
-+ [26766] = "\xea\xd1", [26767] = "\xdc\x3d", [26768] = "\xdc\x3e",
-+ [26770] = "\xea\xdb", [26772] = "\xea\xdd", [26776] = "\xdc\x3f",
-+ [26778] = "\xdc\x40", [26779] = "\xc8\xef", [26782] = "\xea\xd9",
-+ [26784] = "\xea\xde", [26785] = "\xea\xe0", [26788] = "\xb8\xd3",
-+ [26789] = "\xea\xd4", [26791] = "\xb0\xc1", [26794] = "\xdc\x41",
-+ [26797] = "\xdc\x42", [26798] = "\xdc\x43", [26799] = "\xea\xdf",
-+ [26800] = "\xdc\x44", [26801] = "\xba\xdb", [26802] = "\xce\xf6",
-+ [26803] = "\xea\xe1", [26804] = "\xea\xe2", [26805] = "\xc1\xf5",
-+ [26810] = "\xdc\x45", [26811] = "\xdc\x46", [26812] = "\xdc\x47",
-+ [26813] = "\xdc\x48", [26814] = "\xdc\x49", [26815] = "\xce\xa2",
-+ [26817] = "\xdc\x4a", [26818] = "\xdc\x4b", [26819] = "\xdc\x4c",
-+ [26820] = "\xea\xe3", [26821] = "\xcd\xb5", [26824] = "\xea\xe4",
-+ [26825] = "\xea\xe5", [26827] = "\xdc\x4d", [26828] = "\xca\xe4",
-+ [26829] = "\xea\xe6", [26830] = "\xdc\x4e", [26831] = "\xba\xc0",
-+ [26833] = "\xce\xa3", [26839] = "\xdc\x4f", [26840] = "\xea\xeb",
-+ [26847] = "\xdc\x50", [26848] = "\xdc\x51", [26849] = "\xdc\x52",
-+ [26850] = "\xea\xec", [26851] = "\xbe\xd8", [26852] = "\xea\xea",
-+ [26853] = "\xdc\x53", [26855] = "\xdc\x54", [26856] = "\xcd\xe7",
-+ [26857] = "\xea\xe7", [26860] = "\xea\xe9", [26861] = "\xc0\xbd",
-+ [26862] = "\xbf\xfe", [26865] = "\xdc\x55", [26866] = "\xea\xe8",
-+ [26868] = "\xea\xed", [26870] = "\xdc\x56", [26871] = "\xca\xa3",
-+ [26874] = "\xea\xef", [26876] = "\xea\xee", [26877] = "\xdc\x57",
-+ [26878] = "\xdc\x58", [26879] = "\xdc\x59", [26880] = "\xb3\xec",
-+ [26882] = "\xcb\xab", [26883] = "\xea\xf0", [26885] = "\xdc\x5a",
-+ [26886] = "\xdc\x5b", [26888] = "\xdc\x5c", [26889] = "\xdc\x5d",
-+ [26890] = "\xdc\x5e", [26892] = "\xdc\x5f", [26893] = "\xea\xfc",
-+ [26894] = "\xea\xf2", [26896] = "\xdc\x60", [26901] = "\xea\xf3",
-+ [26902] = "\xdc\x61", [26903] = "\xdc\x62", [26904] = "\xdc\x63",
-+ [26906] = "\xea\xf4", [26907] = "\xea\xf5", [26912] = "\xdc\x64",
-+ [26913] = "\xdc\x65", [26914] = "\xdc\x66", [26917] = "\xdc\x67",
-+ [26918] = "\xea\xf9", [26920] = "\xea\xfa", [26921] = "\xdc\x68",
-+ [26922] = "\xdc\x69", [26923] = "\xea\xf8", [26926] = "\xdc\x6a",
-+ [26928] = "\xdc\x6b", [26929] = "\xea\xf6", [26930] = "\xdc\x6c",
-+ [26931] = "\xea\xf1", [26932] = "\xea\xf7", [26933] = "\xdc\x6d",
-+ [26934] = "\xdc\x6e", [26937] = "\xdc\x6f", [26940] = "\xea\xfb",
-+ [26941] = "\xf0\xb7", [26943] = "\xdc\x70", [26946] = "\xdc\x71",
-+ [26950] = "\xb2\xa8", [26951] = "\xdc\x72", [26954] = "\xdc\x73",
-+ [26955] = "\xdc\x74", [26956] = "\xdc\x75", [26958] = "\xea\xfe",
-+ [26959] = "\xb6\xdf", [26960] = "\xea\xfd", [26961] = "\xdc\x76",
-+ [26962] = "\xdc\x77", [26963] = "\xdc\x78", [26964] = "\xeb\xa2",
-+ [26966] = "\xeb\xa1", [26970] = "\xeb\xa4", [26971] = "\xdc\x79",
-+ [26973] = "\xeb\xa3", [26974] = "\xdc\x7a", [26975] = "\xeb\xa5",
-+ [26976] = "\xdc\x7b", [26978] = "\xbd\xb1", [26979] = "\xdc\x7c",
-+ [26980] = "\xeb\xa6", [26981] = "\xdc\x7d", [26983] = "\xeb\xa7",
-+ [26986] = "\xdc\x7e", [26987] = "\xdd\x21", [26988] = "\xdd\x22",
-+ [26989] = "\xdd\x23", [26990] = "\xeb\xa8", [26991] = "\xc0\xbe",
-+ [26993] = "\xcd\xd7", [26995] = "\xeb\xa9", [26998] = "\xca\xa4",
-+ [26999] = "\xc7\xc6", [27000] = "\xeb\xaa", [27001] = "\xdd\x24",
-+ [27002] = "\xeb\xab", [27003] = "\xb8\xab", [27005] = "\xdd\x25",
-+ [27007] = "\xb5\xac", [27008] = "\xdd\x26", [27011] = "\xeb\xac",
-+ [27012] = "\xdd\x27", [27013] = "\xdd\x28", [27014] = "\xbb\xeb",
-+ [27015] = "\xc7\xc1", [27016] = "\xeb\xad", [27018] = "\xb3\xd0",
-+ [27019] = "\xdd\x29", [27020] = "\xdd\x2a", [27023] = "\xdd\x2b",
-+ [27024] = "\xdd\x2c", [27025] = "\xeb\xae", [27029] = "\xdd\x2d",
-+ [27030] = "\xeb\xb0", [27031] = "\xcd\xf7", [27033] = "\xeb\xaf",
-+ [27034] = "\xbf\xc6", [27036] = "\xeb\xb1", [27039] = "\xeb\xb2",
-+ [27040] = "\xdd\x2e", [27042] = "\xeb\xb3", [27043] = "\xb4\xd1",
-+ [27044] = "\xdd\x2f", [27045] = "\xdd\x30", [27046] = "\xdd\x31",
-+ [27047] = "\xdd\x32", [27050] = "\xeb\xb4", [27052] = "\xdd\x33",
-+ [27053] = "\xeb\xb5", [27055] = "\xeb\xb6", [27056] = "\xeb\xb7",
-+ [27074] = "\xb3\xd1", [27076] = "\xdd\x34", [27077] = "\xdd\x35",
-+ [27078] = "\xdd\x36", [27079] = "\xdd\x37", [27080] = "\xdd\x38",
-+ [27082] = "\xeb\xb8", [27084] = "\xeb\xb9", [27085] = "\xeb\xba",
-+ [27091] = "\xb2\xf2", [27093] = "\xdd\x39", [27094] = "\xbf\xa8",
-+ [27095] = "\xeb\xbb", [27097] = "\xdd\x3a", [27099] = "\xdd\x3b",
-+ [27101] = "\xdd\x3c", [27105] = "\xdd\x3d", [27107] = "\xdd\x3e",
-+ [27108] = "\xeb\xbc", [27110] = "\xdd\x3f", [27112] = "\xeb\xbd",
-+ [27113] = "\xdd\x40", [27117] = "\xdd\x41", [27119] = "\xdd\x42",
-+ [27120] = "\xb8\xc0", [27122] = "\xc4\xfb", [27123] = "\xeb\xbe",
-+ [27124] = "\xdd\x43", [27125] = "\xdd\x44", [27127] = "\xdd\x45",
-+ [27128] = "\xb7\xd7", [27130] = "\xbf\xd6", [27132] = "\xeb\xc1",
-+ [27134] = "\xc6\xa4", [27135] = "\xdd\x46", [27136] = "\xeb\xc0",
-+ [27137] = "\xdd\x47", [27138] = "\xdd\x48", [27139] = "\xb7\xb1",
-+ [27140] = "\xdd\x49", [27141] = "\xdd\x4a", [27142] = "\xeb\xbf",
-+ [27143] = "\xc2\xf7", [27144] = "\xb5\xad", [27147] = "\xeb\xc2",
-+ [27149] = "\xeb\xc3", [27150] = "\xdd\x4b", [27151] = "\xbe\xd9",
-+ [27152] = "\xdd\x4c", [27154] = "\xdd\x4d", [27155] = "\xb7\xed",
-+ [27156] = "\xdd\x4e", [27157] = "\xeb\xc4", [27158] = "\xdd\x4f",
-+ [27162] = "\xcb\xac", [27163] = "\xdd\x50", [27164] = "\xdd\x51",
-+ [27165] = "\xc0\xdf", [27167] = "\xdd\x52", [27169] = "\xb5\xf6",
-+ [27171] = "\xcc\xf5", [27172] = "\xc1\xca", [27173] = "\xdd\x53",
-+ [27174] = "\xeb\xc5", [27175] = "\xdd\x54", [27178] = "\xbf\xc7",
-+ [27179] = "\xc3\xf0", [27180] = "\xbe\xda", [27181] = "\xdd\x55",
-+ [27182] = "\xdd\x56", [27184] = "\xdd\x57", [27185] = "\xeb\xc6",
-+ [27187] = "\xdd\x58", [27189] = "\xdd\x59", [27190] = "\xeb\xc9",
-+ [27191] = "\xdd\x5a", [27192] = "\xeb\xca", [27193] = "\xdd\x5b",
-+ [27197] = "\xdd\x5c", [27198] = "\xdd\x5d", [27200] = "\xba\xbe",
-+ [27201] = "\xc2\xc2", [27202] = "\xeb\xc8", [27203] = "\xdd\x5e",
-+ [27204] = "\xbe\xdb", [27205] = "\xc9\xbe", [27206] = "\xdd\x5f",
-+ [27207] = "\xdd\x60", [27208] = "\xdd\x61", [27211] = "\xeb\xc7",
-+ [27212] = "\xdd\x62", [27213] = "\xdd\x63", [27214] = "\xbb\xec",
-+ [27216] = "\xb1\xd3", [27217] = "\xdd\x64", [27218] = "\xeb\xce",
-+ [27219] = "\xb7\xd8", [27221] = "\xdd\x65", [27222] = "\xbb\xee",
-+ [27223] = "\xdd\x66", [27225] = "\xbb\xed", [27227] = "\xcf\xcd",
-+ [27228] = "\xeb\xcd", [27229] = "\xeb\xcc", [27230] = "\xc1\xa7",
-+ [27232] = "\xb5\xcd", [27233] = "\xcf\xc3", [27234] = "\xb3\xba",
-+ [27235] = "\xbe\xdc", [27237] = "\xdd\x67", [27238] = "\xdd\x68",
-+ [27239] = "\xdd\x69", [27241] = "\xdd\x6a", [27242] = "\xdd\x6b",
-+ [27243] = "\xdd\x6c", [27244] = "\xeb\xcb", [27246] = "\xdd\x6d",
-+ [27247] = "\xdd\x6e", [27248] = "\xdd\x6f", [27250] = "\xeb\xd0",
-+ [27251] = "\xdd\x70", [27252] = "\xeb\xd1", [27253] = "\xeb\xcf",
-+ [27254] = "\xdd\x71", [27255] = "\xb8\xd8", [27257] = "\xcd\xc0",
-+ [27259] = "\xdd\x72", [27260] = "\xbb\xef", [27261] = "\xc7\xa7",
-+ [27263] = "\xdd\x73", [27264] = "\xdd\x74", [27265] = "\xeb\xd4",
-+ [27266] = "\xdd\x75", [27267] = "\xc0\xc0", [27269] = "\xc3\xc2",
-+ [27270] = "\xdd\x76", [27271] = "\xdd\x77", [27272] = "\xcd\xb6",
-+ [27273] = "\xdd\x78", [27274] = "\xeb\xd7", [27278] = "\xb8\xec",
-+ [27279] = "\xdd\x79", [27280] = "\xc0\xbf", [27281] = "\xeb\xd3",
-+ [27283] = "\xeb\xd8", [27284] = "\xb8\xed", [27285] = "\xeb\xd5",
-+ [27286] = "\xeb\xd6", [27287] = "\xdd\x7a", [27288] = "\xeb\xd2",
-+ [27289] = "\xdd\x7b", [27292] = "\xc0\xe2", [27293] = "\xc6\xc9",
-+ [27294] = "\xdd\x7c", [27295] = "\xdd\x7d", [27296] = "\xc3\xaf",
-+ [27298] = "\xb2\xdd", [27299] = "\xdd\x7e", [27302] = "\xde\x21",
-+ [27303] = "\xde\x22", [27305] = "\xc8\xf0", [27307] = "\xde\x23",
-+ [27308] = "\xb5\xc3", [27310] = "\xde\x24", [27311] = "\xc4\xb4",
-+ [27314] = "\xeb\xdb", [27315] = "\xde\x25", [27316] = "\xeb\xd9",
-+ [27318] = "\xde\x26", [27319] = "\xc3\xcc", [27320] = "\xde\x27",
-+ [27321] = "\xde\x28", [27322] = "\xde\x29", [27323] = "\xc0\xc1",
-+ [27324] = "\xb4\xd2", [27325] = "\xeb\xda", [27327] = "\xbf\xdb",
-+ [27329] = "\xde\x2a", [27330] = "\xce\xca", [27331] = "\xde\x2b",
-+ [27332] = "\xde\x2c", [27333] = "\xde\x2d", [27334] = "\xcf\xc0",
-+ [27335] = "\xde\x2e", [27338] = "\xeb\xdc", [27339] = "\xeb\xe7",
-+ [27340] = "\xc4\xb5", [27341] = "\xde\x2f", [27342] = "\xeb\xe6",
-+ [27343] = "\xde\x30", [27344] = "\xeb\xe3", [27345] = "\xeb\xeb",
-+ [27346] = "\xeb\xe4", [27348] = "\xeb\xe0", [27350] = "\xc4\xfc",
-+ [27351] = "\xeb\xdf", [27355] = "\xeb\xdd", [27356] = "\xde\x31",
-+ [27357] = "\xcd\xa1", [27358] = "\xbb\xf0", [27360] = "\xde\x32",
-+ [27361] = "\xeb\xe1", [27363] = "\xeb\xde", [27364] = "\xde\x33",
-+ [27365] = "\xde\x34", [27366] = "\xde\x35", [27367] = "\xeb\xe5",
-+ [27368] = "\xbd\xf4", [27370] = "\xb8\xc1", [27372] = "\xde\x36",
-+ [27374] = "\xc2\xfa", [27375] = "\xde\x37", [27376] = "\xcb\xc5",
-+ [27377] = "\xb1\xda", [27378] = "\xb0\xe2", [27380] = "\xc6\xa5",
-+ [27381] = "\xde\x38", [27382] = "\xde\x39", [27383] = "\xeb\xe9",
-+ [27386] = "\xde\x3f", [27387] = "\xde\x3a", [27388] = "\xeb\xe8",
-+ [27390] = "\xc6\xe6", [27392] = "\xeb\xed", [27393] = "\xde\x3b",
-+ [27396] = "\xeb\xe2", [27398] = "\xeb\xec", [27399] = "\xeb\xee",
-+ [27401] = "\xb8\xac", [27402] = "\xeb\xea", [27403] = "\xb9\xd6",
-+ [27404] = "\xde\x3c", [27405] = "\xbc\xd5", [27406] = "\xde\x3d",
-+ [27407] = "\xde\x3e", [27408] = "\xeb\xef", [27409] = "\xcd\xd8",
-+ [27414] = "\xeb\xf2", [27416] = "\xeb\xf5", [27419] = "\xeb\xf3",
-+ [27420] = "\xc9\xb5", [27421] = "\xde\x40", [27424] = "\xde\x41",
-+ [27427] = "\xeb\xf0", [27431] = "\xde\x42", [27433] = "\xb6\xe0",
-+ [27436] = "\xde\x43", [27438] = "\xeb\xf4", [27441] = "\xeb\xf6",
-+ [27442] = "\xde\x44", [27443] = "\xde\x45", [27444] = "\xde\x46",
-+ [27445] = "\xde\x47", [27446] = "\xde\x48", [27448] = "\xde\x49",
-+ [27449] = "\xeb\xfa", [27452] = "\xeb\xf7", [27453] = "\xde\x4e",
-+ [27454] = "\xeb\xf9", [27455] = "\xeb\xf8", [27458] = "\xde\x4a",
-+ [27459] = "\xde\x4b", [27460] = "\xde\x4c", [27462] = "\xeb\xfb",
-+ [27464] = "\xbc\xb1", [27465] = "\xde\x4d", [27466] = "\xeb\xfd",
-+ [27467] = "\xeb\xfc", [27468] = "\xc9\xe8", [27470] = "\xde\x4f",
-+ [27471] = "\xec\xa1", [27475] = "\xde\x50", [27478] = "\xb7\xd9",
-+ [27483] = "\xeb\xfe", [27484] = "\xec\xa2", [27485] = "\xde\x51",
-+ [27487] = "\xec\xa3", [27488] = "\xb5\xc4", [27489] = "\xe6\xc1",
-+ [27490] = "\xbe\xf9", [27492] = "\xec\xa4", [27494] = "\xde\x52",
-+ [27495] = "\xb8\xee", [27496] = "\xde\x53", [27497] = "\xde\x54",
-+ [27500] = "\xde\x55", [27501] = "\xec\xa5", [27502] = "\xde\x56",
-+ [27503] = "\xf4\x66", [27504] = "\xec\xa6", [27505] = "\xde\x57",
-+ [27507] = "\xbb\xbe", [27508] = "\xde\x58", [27509] = "\xde\x59",
-+ [27514] = "\xda\xce", [27515] = "\xde\x5a", [27516] = "\xec\xa7",
-+ [27517] = "\xde\x5b", [27518] = "\xec\xa8", [27519] = "\xde\x5c",
-+ [27520] = "\xbd\xb2", [27522] = "\xec\xa9", [27523] = "\xec\xaa",
-+ [27524] = "\xde\x5d", [27525] = "\xde\x5e", [27526] = "\xec\xab",
-+ [27529] = "\xec\xac", [27530] = "\xec\xad", [27532] = "\xde\x5f",
-+ [27534] = "\xde\x60", [27535] = "\xde\x61", [27687] = "\xc3\xab",
-+ [27688] = "\xde\x62", [27689] = "\xde\x63", [27690] = "\xec\xae",
-+ [27693] = "\xde\x64", [27694] = "\xde\x65", [27695] = "\xec\xb0",
-+ [27697] = "\xec\xaf", [27701] = "\xde\x66", [27702] = "\xc6\xa6",
-+ [27703] = "\xde\x67", [27704] = "\xec\xb1", [27705] = "\xde\x68",
-+ [27706] = "\xcb\xad", [27707] = "\xde\x69", [27708] = "\xec\xb2",
-+ [27710] = "\xec\xb3", [27711] = "\xde\x6a", [27712] = "\xec\xb4",
-+ [27713] = "\xde\x6b", [27715] = "\xde\x6c", [27716] = "\xde\x6d",
-+ [27717] = "\xec\xb5", [27719] = "\xde\x6e", [27720] = "\xde\x6f",
-+ [27721] = "\xde\x72", [27722] = "\xc6\xda", [27723] = "\xde\x70",
-+ [27725] = "\xde\x71", [27729] = "\xbe\xdd", [27730] = "\xec\xb6",
-+ [27731] = "\xde\x73", [27732] = "\xde\x74", [27734] = "\xde\x75",
-+ [27736] = "\xde\x76", [27737] = "\xde\x77", [27738] = "\xb9\xeb",
-+ [27739] = "\xd0\xae", [27740] = "\xec\xb7", [27741] = "\xde\x78",
-+ [27747] = "\xde\x79", [27749] = "\xde\x7a", [27750] = "\xde\x7b",
-+ [27752] = "\xec\xb8", [27753] = "\xc9\xbf", [27754] = "\xec\xb9",
-+ [27755] = "\xde\x7c", [27756] = "\xec\xc1", [27758] = "\xde\x7d",
-+ [27762] = "\xec\xba", [27765] = "\xec\xbc", [27766] = "\xde\x7e",
-+ [27767] = "\xdf\x21", [27769] = "\xec\xbb", [27770] = "\xec\xbd",
-+ [27771] = "\xdf\x22", [27772] = "\xcb\xc6", [27773] = "\xec\xbe",
-+ [27774] = "\xec\xbf", [27776] = "\xdf\x23", [27778] = "\xdf\x24",
-+ [27779] = "\xdf\x25", [27780] = "\xec\xc0", [27784] = "\xec\xc2",
-+ [27785] = "\xdf\x26", [27787] = "\xdf\x27", [27788] = "\xdf\x28",
-+ [27789] = "\xb3\xad", [27790] = "\xc4\xe7", [27792] = "\xc9\xe9",
-+ [27793] = "\xba\xe2", [27794] = "\xb9\xd7", [27796] = "\xdf\x29",
-+ [27799] = "\xc9\xcf", [27800] = "\xb2\xdf", [27801] = "\xc8\xce",
-+ [27802] = "\xec\xc5", [27803] = "\xb4\xd3", [27804] = "\xc0\xd5",
-+ [27805] = "\xec\xc4", [27806] = "\xec\xc9", [27807] = "\xc3\xf9",
-+ [27808] = "\xcc\xe3", [27810] = "\xec\xc7", [27811] = "\xec\xc8",
-+ [27812] = "\xb5\xae", [27814] = "\xec\xca", [27815] = "\xc7\xe3",
-+ [27816] = "\xc2\xdf", [27817] = "\xdf\x2a", [27818] = "\xdf\x2b",
-+ [27819] = "\xc8\xf1", [27820] = "\xc5\xbd", [27821] = "\xec\xc6",
-+ [27823] = "\xcb\xc7", [27824] = "\xb2\xec", [27825] = "\xec\xcc",
-+ [27826] = "\xcf\xa8", [27827] = "\xc4\xc2", [27828] = "\xcf\xc5",
-+ [27829] = "\xdf\x2c", [27830] = "\xdf\x2d", [27831] = "\xbb\xf1",
-+ [27832] = "\xec\xcb", [27833] = "\xdf\x2e", [27834] = "\xc2\xb1",
-+ [27835] = "\xdf\x2f", [27837] = "\xec\xdc", [27838] = "\xc1\xa8",
-+ [27839] = "\xdf\x30", [27841] = "\xc6\xf8", [27843] = "\xc9\xd0",
-+ [27845] = "\xdf\x32", [27846] = "\xdf\x31", [27849] = "\xdf\x33",
-+ [27850] = "\xec\xcf", [27851] = "\xbb\xbf", [27852] = "\xbb\xf2",
-+ [27853] = "\xdf\x34", [27854] = "\xbe\xde", [27856] = "\xc7\xe5",
-+ [27857] = "\xdf\x35", [27858] = "\xb8\xad", [27859] = "\xec\xce",
-+ [27860] = "\xec\xcd", [27862] = "\xc9\xea", [27864] = "\xdf\x36",
-+ [27866] = "\xbc\xc1", [27868] = "\xdf\x37", [27869] = "\xc5\xd2",
-+ [27871] = "\xdf\x38", [27872] = "\xdf\x39", [27874] = "\xdf\x3a",
-+ [27876] = "\xf4\x67", [27877] = "\xdf\x3b", [27879] = "\xdf\x3c",
-+ [27880] = "\xdf\x3d", [27882] = "\xec\xd1", [27883] = "\xec\xd2",
-+ [27884] = "\xb9\xd8", [27885] = "\xec\xd0", [27886] = "\xdf\x3e",
-+ [27887] = "\xdf\x3f", [27889] = "\xdf\x40", [27891] = "\xdf\x41",
-+ [27892] = "\xec\xd3", [27893] = "\xec\xd4", [27895] = "\xec\xd6",
-+ [27896] = "\xc2\xa3", [27897] = "\xdf\x42", [27898] = "\xec\xd5",
-+ [27899] = "\xb4\xe6", [27901] = "\xec\xd8", [27903] = "\xec\xd7",
-+ [27904] = "\xec\xd9", [27906] = "\xdf\x43", [27907] = "\xec\xdb",
-+ [27908] = "\xec\xdd", [27910] = "\xec\xde", [27911] = "\xdf\x44",
-+ [27915] = "\xdf\x45", [27988] = "\xc0\xd6", [27989] = "\xdf\x46",
-+ [27990] = "\xbc\xcf", [27991] = "\xec\xdf", [27993] = "\xdf\x47",
-+ [27995] = "\xb3\xd2", [27996] = "\xdf\x48", [27997] = "\xec\xe0",
-+ [27998] = "\xdf\x49", [28000] = "\xc1\xf6", [28001] = "\xec\xe1",
-+ [28003] = "\xec\xe2", [28004] = "\xc9\xeb", [28006] = "\xf4\x68",
-+ [28007] = "\xb5\xaf", [28015] = "\xdf\x4a", [28017] = "\xec\xe3",
-+ [28018] = "\xdf\x4b", [28020] = "\xdf\x4c", [28021] = "\xc4\xb6",
-+ [28024] = "\xdf\x4d", [28026] = "\xb1\xdb", [28029] = "\xdf\x4e",
-+ [28032] = "\xdf\x4f", [28033] = "\xdf\x50", [28037] = "\xdf\x51",
-+ [28041] = "\xec\xe4", [28046] = "\xdf\x52", [28047] = "\xdf\x53",
-+ [28048] = "\xdf\x54", [28051] = "\xbc\xf1", [28054] = "\xdf\x55",
-+ [28056] = "\xbf\xf6", [28059] = "\xdf\x56", [28060] = "\xdf\x57",
-+ [28063] = "\xdf\x58", [28066] = "\xdf\x59", [28067] = "\xc2\xad",
-+ [28069] = "\xdf\x5a", [28071] = "\xdf\x5b", [28073] = "\xdf\x5c",
-+ [28074] = "\xec\xe7", [28075] = "\xdf\x5d", [28076] = "\xdf\x6f",
-+ [28078] = "\xec\xe6", [28080] = "\xdf\x5e", [28082] = "\xec\xe5",
-+ [28085] = "\xdf\x5f", [28086] = "\xdf\x60", [28087] = "\xdf\x61",
-+ [28088] = "\xdf\x62", [28090] = "\xdf\x63", [28091] = "\xec\xed",
-+ [28092] = "\xec\xeb", [28094] = "\xdf\x64", [28095] = "\xec\xe8",
-+ [28097] = "\xdf\x65", [28100] = "\xdf\x66", [28101] = "\xdf\x67",
-+ [28102] = "\xec\xea", [28103] = "\xdf\x68", [28105] = "\xdf\x69",
-+ [28106] = "\xec\xe9", [28107] = "\xec\xec", [28109] = "\xb5\xf7",
-+ [28111] = "\xec\xf0", [28113] = "\xc0\xd7", [28115] = "\xec\xf1",
-+ [28116] = "\xdf\x6a", [28117] = "\xdf\x6b", [28119] = "\xdf\x6c",
-+ [28120] = "\xb8\xd9", [28122] = "\xec\xee", [28123] = "\xec\xef",
-+ [28124] = "\xdf\x6d", [28127] = "\xcf\xa9", [28128] = "\xdf\x6e",
-+ [28129] = "\xdf\x70", [28130] = "\xdf\x71", [28131] = "\xc4\xb7",
-+ [28132] = "\xdf\x72", [28133] = "\xc1\xa9", [28140] = "\xec\xf2",
-+ [28141] = "\xdf\x73", [28143] = "\xec\xf5", [28145] = "\xdf\x74",
-+ [28148] = "\xdf\x75", [28149] = "\xdf\x76", [28150] = "\xdf\x77",
-+ [28152] = "\xec\xf3", [28153] = "\xec\xf4", [28154] = "\xcd\xd9",
-+ [28155] = "\xdf\x78", [28159] = "\xc6\xa7", [28160] = "\xec\xf8",
-+ [28161] = "\xdf\x79", [28164] = "\xdf\x7a", [28166] = "\xdf\x7b",
-+ [28173] = "\xec\xf6", [28174] = "\xec\xf7", [28175] = "\xec\xf9",
-+ [28176] = "\xdf\x7c", [28177] = "\xdf\x7d", [28178] = "\xdf\x7e",
-+ [28179] = "\xe0\x21", [28182] = "\xe0\x22", [28183] = "\xe0\x23",
-+ [28186] = "\xed\xa9", [28192] = "\xec\xfc", [28193] = "\xe0\x24",
-+ [28195] = "\xe0\x25", [28196] = "\xec\xfd", [28197] = "\xec\xfb",
-+ [28198] = "\xe0\x26", [28199] = "\xe0\x27", [28200] = "\xe0\x28",
-+ [28201] = "\xe0\x29", [28205] = "\xe0\x2a", [28208] = "\xe0\x2b",
-+ [28209] = "\xe0\x2c", [28210] = "\xec\xfa", [28212] = "\xc4\xfd",
-+ [28215] = "\xed\xa1", [28216] = "\xed\xa5", [28217] = "\xed\xa2",
-+ [28218] = "\xec\xfe", [28219] = "\xe0\x2d", [28220] = "\xed\xa3",
-+ [28221] = "\xe0\x2e", [28222] = "\xe0\x2f", [28223] = "\xe0\x30",
-+ [28224] = "\xed\xa4", [28228] = "\xe0\x31", [28229] = "\xed\xab",
-+ [28233] = "\xed\xa6", [28235] = "\xe0\x32", [28236] = "\xe0\x33",
-+ [28237] = "\xe0\x34", [28238] = "\xe0\x35", [28239] = "\xc0\xd8",
-+ [28240] = "\xed\xa8", [28241] = "\xe0\x36", [28242] = "\xe0\x37",
-+ [28243] = "\xed\xaa", [28244] = "\xed\xa7", [28249] = "\xe0\x38",
-+ [28252] = "\xe0\x39", [28253] = "\xe0\x3a", [28255] = "\xe0\x3b",
-+ [28256] = "\xe0\x3c", [28257] = "\xe0\x3d", [28258] = "\xed\xad",
-+ [28260] = "\xbd\xb3", [28262] = "\xed\xac", [28265] = "\xe0\x3e",
-+ [28266] = "\xe0\x3f", [28267] = "\xe0\x40", [28268] = "\xed\xae",
-+ [28273] = "\xed\xaf", [28274] = "\xe0\x41", [28275] = "\xe0\x42",
-+ [28276] = "\xed\xb2", [28277] = "\xed\xb1", [28279] = "\xed\xb0",
-+ [28281] = "\xe0\x43", [28282] = "\xed\xb4", [28283] = "\xed\xb3",
-+ [28285] = "\xcc\xf6", [28288] = "\xe0\x44", [28289] = "\xed\xb6",
-+ [28290] = "\xe0\x45", [28291] = "\xed\xb5", [28292] = "\xed\xb7",
-+ [28293] = "\xe0\x46", [28297] = "\xed\xb8", [28298] = "\xe0\x47",
-+ [28299] = "\xe0\x48", [28301] = "\xe0\x49", [28302] = "\xe0\x4a",
-+ [28305] = "\xed\xba", [28306] = "\xe0\x4b", [28311] = "\xe0\x4c",
-+ [28313] = "\xe0\x4d", [28314] = "\xed\xb9", [28315] = "\xbf\xc8",
-+ [28316] = "\xed\xbb", [28317] = "\xe0\x4e", [28318] = "\xe0\x4f",
-+ [28319] = "\xb6\xed", [28320] = "\xed\xbc", [28321] = "\xed\xbe",
-+ [28323] = "\xe0\x50", [28325] = "\xe0\x51", [28330] = "\xe0\x52",
-+ [28331] = "\xe0\x53", [28334] = "\xed\xbf", [28336] = "\xe0\x54",
-+ [28337] = "\xe0\x55", [28339] = "\xe0\x56", [28340] = "\xe0\x57",
-+ [28341] = "\xed\xc0", [28342] = "\xed\xbd", [28343] = "\xe0\x58",
-+ [28344] = "\xed\xc1", [28346] = "\xbc\xd6", [28347] = "\xed\xc2",
-+ [28348] = "\xb5\xb0", [28349] = "\xb7\xb3", [28351] = "\xe0\x59",
-+ [28353] = "\xe0\x5a", [28354] = "\xb8\xae", [28356] = "\xe0\x5b",
-+ [28363] = "\xed\xc3", [28364] = "\xe0\x5c", [28367] = "\xc6\xf0",
-+ [28370] = "\xc5\xbe", [28371] = "\xed\xc4", [28376] = "\xe0\x5d",
-+ [28379] = "\xed\xc7", [28381] = "\xe0\x64", [28382] = "\xe0\x5e",
-+ [28384] = "\xe0\x5f", [28385] = "\xe0\x60", [28391] = "\xe0\x61",
-+ [28392] = "\xbc\xb4", [28393] = "\xe0\x62", [28394] = "\xe0\x63",
-+ [28395] = "\xed\xc6", [28396] = "\xed\xc5", [28397] = "\xb7\xda",
-+ [28398] = "\xed\xc8", [28400] = "\xe0\x65", [28402] = "\xe0\x66",
-+ [28403] = "\xb3\xd3", [28405] = "\xed\xca", [28407] = "\xe0\x67",
-+ [28408] = "\xe0\x68", [28409] = "\xba\xdc", [28410] = "\xed\xc9",
-+ [28412] = "\xed\xd2", [28415] = "\xe0\x69", [28416] = "\xe0\x6a",
-+ [28418] = "\xed\xcc", [28419] = "\xed\xce", [28420] = "\xca\xe5",
-+ [28421] = "\xed\xcb", [28422] = "\xe0\x6b", [28423] = "\xe0\x6c",
-+ [28424] = "\xe0\x6d", [28425] = "\xed\xcd", [28427] = "\xed\xd1",
-+ [28428] = "\xed\xcf", [28429] = "\xb5\xb1", [28430] = "\xe0\x6e",
-+ [28431] = "\xed\xd0", [28432] = "\xe0\x6f", [28433] = "\xe0\x70",
-+ [28435] = "\xe0\x71", [28437] = "\xe0\x72", [28438] = "\xed\xd3",
-+ [28439] = "\xe0\x73", [28440] = "\xe0\x74", [28441] = "\xc7\xda",
-+ [28442] = "\xce\xd8", [28444] = "\xe0\x75", [28445] = "\xe0\x76",
-+ [28446] = "\xe0\x77", [28447] = "\xbd\xb4", [28451] = "\xed\xd4",
-+ [28452] = "\xe0\x78", [28453] = "\xe0\x79", [28454] = "\xe0\x7a",
-+ [28455] = "\xe0\x7b", [28456] = "\xcd\xa2", [28457] = "\xed\xd6",
-+ [28458] = "\xe0\x7c", [28459] = "\xed\xd5", [28462] = "\xed\xd9",
-+ [28463] = "\xcd\xc1", [28464] = "\xe0\x7d", [28465] = "\xe0\x7e",
-+ [28466] = "\xed\xd8", [28467] = "\xe1\x21", [28468] = "\xb3\xed",
-+ [28469] = "\xed\xd7", [28470] = "\xed\xdc", [28471] = "\xe1\x22",
-+ [28473] = "\xed\xdb", [28476] = "\xed\xda", [28477] = "\xc5\xb2",
-+ [28478] = "\xed\xdd", [28479] = "\xe1\x23", [28481] = "\xe1\x24",
-+ [28482] = "\xe1\x25", [28483] = "\xe1\x26", [28484] = "\xe1\x27",
-+ [28485] = "\xe1\x28", [28487] = "\xed\xde", [28488] = "\xe1\x29",
-+ [28492] = "\xed\xdf", [28493] = "\xe1\x2a", [28494] = "\xe1\x2b",
-+ [28495] = "\xb9\xec", [28497] = "\xb7\xa5", [28498] = "\xed\xe0",
-+ [28499] = "\xed\xe1", [28500] = "\xed\xe2", [28501] = "\xe1\x2c",
-+ [28555] = "\xbf\xc9", [28556] = "\xed\xe3", [28557] = "\xe1\x2d",
-+ [28558] = "\xbc\xad", [28559] = "\xed\xe4", [28560] = "\xe1\x2e",
-+ [28561] = "\xe1\x2f", [28563] = "\xed\xe5", [28564] = "\xe1\x30",
-+ [28565] = "\xe1\x31", [28566] = "\xe1\x32", [28567] = "\xd2\xa1",
-+ [28568] = "\xd1\xfe", [28573] = "\xed\xe6", [28574] = "\xe5\xf0",
-+ [28575] = "\xed\xe7", [28576] = "\xc3\xa4", [28577] = "\xbf\xab",
-+ [28578] = "\xc7\xc0", [28581] = "\xe1\x33", [28582] = "\xe1\x34",
-+ [28583] = "\xed\xe8", [28584] = "\xe1\x35", [28586] = "\xca\xd5",
-+ [28587] = "\xc4\xd4", [28588] = "\xb9\xfe", [28590] = "\xe1\x36",
-+ [28591] = "\xc3\xa9", [28592] = "\xe1\x37", [28593] = "\xe1\x38",
-+ [28594] = "\xb1\xaa", [28596] = "\xcb\xf8", [28597] = "\xbf\xd7",
-+ [28598] = "\xe1\x39", [28602] = "\xe1\x3a", [28603] = "\xe1\x3b",
-+ [28605] = "\xe1\x3c", [28606] = "\xb7\xde", [28608] = "\xe1\x3d",
-+ [28609] = "\xb6\xe1", [28610] = "\xe1\x3e", [28611] = "\xe1\x3f",
-+ [28612] = "\xca\xd6", [28613] = "\xe1\x40", [28618] = "\xed\xe9",
-+ [28624] = "\xe1\x41", [28626] = "\xed\xeb", [28627] = "\xe1\x42",
-+ [28628] = "\xe1\x43", [28629] = "\xed\xea", [28630] = "\xb2\xe0",
-+ [28632] = "\xe1\x44", [28633] = "\xc6\xf6", [28634] = "\xed\xec",
-+ [28635] = "\xc7\xf7", [28637] = "\xc5\xb3", [28638] = "\xe1\x45",
-+ [28639] = "\xed\xed", [28640] = "\xbd\xd2", [28641] = "\xe1\x46",
-+ [28644] = "\xed\xef", [28645] = "\xe1\x47", [28646] = "\xe1\x48",
-+ [28647] = "\xcc\xc2", [28648] = "\xed\xfe", [28649] = "\xed\xf1",
-+ [28650] = "\xed\xf2", [28651] = "\xe1\x49", [28653] = "\xc4\xc9",
-+ [28654] = "\xe1\x4a", [28656] = "\xc2\xe0", [28657] = "\xc1\xf7",
-+ [28658] = "\xe1\x4b", [28659] = "\xc6\xa8", [28660] = "\xe1\x4c",
-+ [28661] = "\xed\xf0", [28662] = "\xb5\xd5", [28664] = "\xe1\x4d",
-+ [28667] = "\xed\xf9", [28668] = "\xe1\x4e", [28669] = "\xed\xf6",
-+ [28670] = "\xee\xa5", [28671] = "\xc6\xa9", [28672] = "\xc3\xe0",
-+ [28673] = "\xed\xf3", [28675] = "\xc4\xfe", [28676] = "\xc5\xd3",
-+ [28677] = "\xed\xf4", [28678] = "\xed\xf8", [28679] = "\xbf\xe0",
-+ [28680] = "\xe1\x4f", [28681] = "\xc7\xe7", [28682] = "\xc4\xcc",
-+ [28683] = "\xe1\x50", [28685] = "\xc0\xc2", [28686] = "\xed\xf7",
-+ [28687] = "\xc2\xae", [28688] = "\xc2\xa4", [28689] = "\xed\xf5",
-+ [28690] = "\xb0\xa9", [28691] = "\xcf\xa2", [28695] = "\xed\xfa",
-+ [28696] = "\xe1\x51", [28697] = "\xe1\x52", [28698] = "\xe1\x54",
-+ [28700] = "\xe1\x55", [28701] = "\xe1\x56", [28702] = "\xc2\xe1",
-+ [28703] = "\xe1\x53", [28705] = "\xbd\xb5", [28706] = "\xbf\xca",
-+ [28707] = "\xe1\x57", [28708] = "\xe1\x58", [28709] = "\xed\xfc",
-+ [28710] = "\xed\xfb", [28711] = "\xe1\x59", [28712] = "\xb0\xef",
-+ [28713] = "\xed\xfd", [28716] = "\xc9\xaf", [28718] = "\xee\xa7",
-+ [28719] = "\xe1\x5a", [28721] = "\xc6\xdb", [28722] = "\xbf\xeb",
-+ [28723] = "\xe1\x5b", [28724] = "\xe1\x5c", [28725] = "\xc3\xd9",
-+ [28727] = "\xb6\xf8", [28729] = "\xee\xa6", [28730] = "\xcd\xb7",
-+ [28731] = "\xb1\xbf", [28732] = "\xe1\x5d", [28733] = "\xca\xd7",
-+ [28734] = "\xb2\xe1", [28735] = "\xee\xa1", [28736] = "\xee\xa2",
-+ [28737] = "\xee\xa3", [28738] = "\xee\xa4", [28739] = "\xc6\xbb",
-+ [28740] = "\xc3\xa3", [28741] = "\xb0\xe3", [28742] = "\xee\xa8",
-+ [28744] = "\xee\xa9", [28745] = "\xf4\xa3", [28747] = "\xe1\x5e",
-+ [28748] = "\xc2\xbd", [28749] = "\xe1\x5f", [28750] = "\xee\xaa",
-+ [28752] = "\xb1\xf3", [28753] = "\xc1\xcc", [28754] = "\xe1\x60",
-+ [28755] = "\xb8\xaf", [28757] = "\xcd\xda", [28758] = "\xe1\x61",
-+ [28759] = "\xe1\x62", [28760] = "\xee\xab", [28761] = "\xc5\xac",
-+ [28764] = "\xe1\x63", [28765] = "\xc1\xf8", [28766] = "\xbc\xd7",
-+ [28767] = "\xee\xac", [28768] = "\xe1\x64", [28770] = "\xee\xaf",
-+ [28772] = "\xe1\x65", [28773] = "\xbd\xe5", [28774] = "\xee\xad",
-+ [28775] = "\xc1\xab", [28776] = "\xc1\xaa", [28777] = "\xe1\x66",
-+ [28778] = "\xb0\xe4", [28780] = "\xce\xcb", [28781] = "\xee\xb1",
-+ [28783] = "\xc8\xf2", [28784] = "\xee\xb3", [28785] = "\xee\xb2",
-+ [28786] = "\xee\xb0", [28787] = "\xe3\xe4", [28788] = "\xb4\xd4",
-+ [28789] = "\xe1\x67", [28791] = "\xed\xee", [28792] = "\xe1\x68",
-+ [28793] = "\xee\xb5", [28794] = "\xee\xb4", [28795] = "\xe1\x69",
-+ [28796] = "\xe1\x6a", [28798] = "\xe1\x6b", [28799] = "\xee\xb6",
-+ [28800] = "\xe1\x6c", [28801] = "\xcd\xb8", [28805] = "\xe1\x6d",
-+ [28807] = "\xe1\x6e", [28808] = "\xe1\x6f", [28809] = "\xe1\x70",
-+ [28811] = "\xe1\x71", [28816] = "\xe1\x72", [28817] = "\xe1\x73",
-+ [28818] = "\xe1\x74", [28819] = "\xc6\xe1", [28821] = "\xe1\x75",
-+ [28822] = "\xcb\xae", [28824] = "\xee\xb7", [28826] = "\xbc\xd9",
-+ [28831] = "\xee\xb8", [28832] = "\xe1\x76", [28833] = "\xee\xb9",
-+ [28834] = "\xe1\x77", [28835] = "\xe1\x78", [28836] = "\xe1\x79",
-+ [28837] = "\xee\xba", [28838] = "\xe1\x7a", [28840] = "\xc5\xa1",
-+ [28845] = "\xe1\x7b", [28846] = "\xe1\x7d", [28849] = "\xb0\xea",
-+ [28851] = "\xe1\x7e", [28852] = "\xe2\x21", [28853] = "\xe2\x22",
-+ [28855] = "\xe2\x23", [28856] = "\xe2\x24", [28858] = "\xb9\xd9",
-+ [28860] = "\xe1\x7c", [28862] = "\xcf\xba", [28866] = "\xe2\x2d",
-+ [28869] = "\xe2\x25", [28871] = "\xe2\x26", [28872] = "\xe2\x27",
-+ [28873] = "\xe2\x28", [28875] = "\xee\xbe", [28876] = "\xe2\x29",
-+ [28877] = "\xe2\x2a", [28878] = "\xf4\x6c", [28879] = "\xe2\x2b",
-+ [28881] = "\xb7\xb4", [28882] = "\xee\xbb", [28884] = "\xee\xbc",
-+ [28885] = "\xe2\x2c", [28888] = "\xc9\xf4", [28891] = "\xe2\x2f",
-+ [28893] = "\xb3\xd4", [28895] = "\xe2\x30", [28896] = "\xe2\x31",
-+ [28900] = "\xe2\x32", [28901] = "\xcd\xb9", [28902] = "\xe2\x2e",
-+ [28903] = "\xb6\xbf", [28909] = "\xc5\xd4", [28910] = "\xe2\x33",
-+ [28911] = "\xe2\x34", [28912] = "\xe2\x35", [28914] = "\xee\xbf",
-+ [28916] = "\xe2\x36", [28917] = "\xe2\x37", [28918] = "\xe2\x38",
-+ [28920] = "\xe2\x39", [28925] = "\xe2\x3a", [28928] = "\xe2\x3b",
-+ [28930] = "\xee\xc0", [28932] = "\xe2\x3c", [28933] = "\xf4\x6e",
-+ [28934] = "\xe2\x3d", [28935] = "\xe2\x3e", [28936] = "\xe2\x3f",
-+ [28937] = "\xee\xc1", [28938] = "\xe2\x40", [28940] = "\xe2\x41",
-+ [28942] = "\xe2\x42", [28944] = "\xe2\x43", [28946] = "\xe2\x45",
-+ [28947] = "\xe2\x46", [28949] = "\xe2\x44", [28951] = "\xe2\x47",
-+ [28953] = "\xe2\x48", [28957] = "\xc5\xa2", [28958] = "\xe2\x49",
-+ [28959] = "\xe2\x4a", [28960] = "\xee\xc3", [28961] = "\xe2\x4b",
-+ [28962] = "\xee\xc2", [28964] = "\xe2\x4c", [28966] = "\xe2\x4d",
-+ [28967] = "\xe2\x4e", [28969] = "\xe2\x4f", [28970] = "\xe2\x50",
-+ [28972] = "\xe2\x51", [28973] = "\xe2\x52", [28979] = "\xe2\x53",
-+ [28983] = "\xe2\x54", [28984] = "\xe2\x55", [28985] = "\xc6\xd3",
-+ [28986] = "\xee\xc4", [28987] = "\xbd\xb6", [28988] = "\xbc\xe0",
-+ [28989] = "\xc7\xdb", [28990] = "\xc3\xf1", [28991] = "\xe2\x56",
-+ [28994] = "\xbc\xf2", [28995] = "\xe2\x57", [28996] = "\xbf\xec",
-+ [28998] = "\xee\xc5", [28999] = "\xe2\x58", [29000] = "\xee\xc6",
-+ [29001] = "\xe2\x59", [29002] = "\xe2\x5a", [29003] = "\xe2\x5b",
-+ [29009] = "\xe2\x5c", [29010] = "\xbf\xdd", [29011] = "\xee\xc7",
-+ [29012] = "\xe2\x5d", [29013] = "\xee\xc8", [29015] = "\xe2\x5e",
-+ [29017] = "\xee\xc9", [29018] = "\xcd\xef", [29020] = "\xbd\xb7",
-+ [29021] = "\xe2\x5f", [29026] = "\xee\xcb", [29027] = "\xee\xca",
-+ [29028] = "\xe2\x60", [29029] = "\xb9\xda", [29031] = "\xb9\xf3",
-+ [29032] = "\xbb\xc0", [29033] = "\xe2\x61", [29034] = "\xe2\x62",
-+ [29035] = "\xe2\x63", [29041] = "\xe2\x64", [29042] = "\xee\xce",
-+ [29043] = "\xe2\x65", [29045] = "\xe2\x66", [29046] = "\xe2\x67",
-+ [29047] = "\xbd\xe6", [29049] = "\xee\xcd", [29050] = "\xe2\x68",
-+ [29051] = "\xee\xcc", [29053] = "\xc2\xe9", [29054] = "\xe2\x69",
-+ [29056] = "\xb8\xef", [29057] = "\xe2\x6a", [29058] = "\xc0\xc3",
-+ [29059] = "\xe2\x6b", [29060] = "\xe2\x6c", [29061] = "\xe2\x6d",
-+ [29063] = "\xc8\xb0", [29064] = "\xe2\x6e", [29068] = "\xbd\xb9",
-+ [29070] = "\xe2\x6f", [29073] = "\xe2\x70", [29074] = "\xee\xcf",
-+ [29076] = "\xbe\xdf", [29078] = "\xe2\x71", [29080] = "\xe2\x72",
-+ [29082] = "\xee\xd2", [29083] = "\xee\xd0", [29084] = "\xe2\x73",
-+ [29085] = "\xe2\x74", [29086] = "\xe2\x75", [29087] = "\xee\xd1",
-+ [29088] = "\xe2\x76", [29089] = "\xe2\x77", [29090] = "\xe2\x78",
-+ [29091] = "\xe2\x79", [29092] = "\xee\xd4", [29093] = "\xee\xd3",
-+ [29094] = "\xe2\x7a", [29096] = "\xbe\xfa", [29098] = "\xee\xd5",
-+ [29099] = "\xe2\x7b", [29100] = "\xe2\x7c", [29101] = "\xe2\x7d",
-+ [29103] = "\xe2\x7e", [29104] = "\xee\xd6", [29105] = "\xee\xd7",
-+ [29106] = "\xe3\x21", [29107] = "\xe3\x22", [29109] = "\xe3\x23",
-+ [29110] = "\xc8\xd0", [29111] = "\xba\xd3", [29112] = "\xbc\xe1",
-+ [29113] = "\xee\xd8", [29115] = "\xee\xd9", [29116] = "\xce\xa4",
-+ [29117] = "\xbd\xc5", [29118] = "\xcc\xee", [29119] = "\xce\xcc",
-+ [29120] = "\xee\xda", [29121] = "\xb6\xe2", [29123] = "\xe3\x24",
-+ [29124] = "\xe3\x25", [29126] = "\xee\xdb", [29127] = "\xe3\x26",
-+ [29128] = "\xc5\xa3", [29129] = "\xe3\x27", [29130] = "\xe3\x28",
-+ [29131] = "\xee\xde", [29132] = "\xb3\xf8", [29133] = "\xbf\xcb",
-+ [29134] = "\xe3\x29", [29135] = "\xee\xdc", [29137] = "\xee\xdd",
-+ [29139] = "\xc4\xe0", [29140] = "\xe3\x2a", [29141] = "\xe3\x2b",
-+ [29142] = "\xcb\xd5", [29143] = "\xb6\xfc", [29145] = "\xe3\x2c",
-+ [29146] = "\xe3\x2d", [29148] = "\xe3\x2e", [29149] = "\xe3\x2f",
-+ [29150] = "\xe3\x30", [29151] = "\xe3\x31", [29152] = "\xe3\x32",
-+ [29153] = "\xe3\x33", [29157] = "\xee\xe0", [29158] = "\xee\xe1",
-+ [29159] = "\xe3\x34", [29161] = "\xe3\x35", [29163] = "\xe3\x36",
-+ [29164] = "\xee\xdf", [29165] = "\xe3\x37", [29167] = "\xee\xe3",
-+ [29168] = "\xe3\x38", [29169] = "\xe3\x39", [29172] = "\xe3\x3a",
-+ [29173] = "\xe3\x3b", [29174] = "\xe3\x3c", [29175] = "\xe3\x3d",
-+ [29177] = "\xe3\x3e", [29178] = "\xe3\x3f", [29180] = "\xe3\x40",
-+ [29181] = "\xc6\xdf", [29182] = "\xb3\xc3", [29184] = "\xe3\x41",
-+ [29185] = "\xee\xe7", [29186] = "\xe3\x42", [29187] = "\xe3\x43",
-+ [29188] = "\xee\xe4", [29189] = "\xee\xe6", [29190] = "\xe3\x44",
-+ [29192] = "\xe3\x45", [29196] = "\xe3\x46", [29197] = "\xe3\x47",
-+ [29198] = "\xee\xe2", [29203] = "\xe3\x48", [29204] = "\xe3\x49",
-+ [29205] = "\xe3\x4a", [29206] = "\xe3\x4b", [29208] = "\xe3\x4c",
-+ [29209] = "\xef\xcf", [29212] = "\xee\xe5", [29214] = "\xe3\x4d",
-+ [29215] = "\xe3\x4e", [29216] = "\xe3\x4f", [29219] = "\xe3\x50",
-+ [29220] = "\xce\xeb", [29221] = "\xe3\x51", [29222] = "\xe3\x52",
-+ [29223] = "\xb8\xda", [29224] = "\xe3\x53", [29225] = "\xe3\x54",
-+ [29226] = "\xe3\x55", [29228] = "\xe3\x56", [29230] = "\xe3\x57",
-+ [29231] = "\xee\xef", [29232] = "\xe3\x58", [29234] = "\xe3\x59",
-+ [29235] = "\xe3\x5a", [29236] = "\xc5\xb4", [29237] = "\xee\xea",
-+ [29238] = "\xe3\x5b", [29239] = "\xe3\x5c", [29240] = "\xee\xed",
-+ [29241] = "\xee\xeb", [29242] = "\xe3\x5d", [29243] = "\xee\xf0",
-+ [29245] = "\xe3\x5e", [29246] = "\xe3\x5f", [29247] = "\xe3\x60",
-+ [29248] = "\xee\xf1", [29249] = "\xe3\x61", [29255] = "\xee\xe9",
-+ [29256] = "\xe3\x62", [29257] = "\xe3\x63", [29258] = "\xee\xf6",
-+ [29259] = "\xb1\xf4", [29260] = "\xe3\x64", [29261] = "\xe3\x65",
-+ [29262] = "\xee\xe8", [29264] = "\xe3\x66", [29265] = "\xe3\x67",
-+ [29266] = "\xc8\xad", [29268] = "\xee\xec", [29269] = "\xe3\x68",
-+ [29270] = "\xbe\xe0", [29271] = "\xe3\x69", [29272] = "\xe3\x6a",
-+ [29273] = "\xe3\x6b", [29278] = "\xe3\x6c", [29279] = "\xe3\x6d",
-+ [29280] = "\xe3\x6e", [29281] = "\xb9\xdb", [29285] = "\xe3\x6f",
-+ [29286] = "\xe3\x70", [29287] = "\xe3\x71", [29288] = "\xe3\x72",
-+ [29289] = "\xe3\x73", [29291] = "\xe3\x74", [29292] = "\xe3\x75",
-+ [29293] = "\xe3\x76", [29294] = "\xcb\xc8", [29295] = "\xe3\x77",
-+ [29296] = "\xb6\xe4", [29299] = "\xbd\xc6", [29301] = "\xc6\xbc",
-+ [29304] = "\xe3\x78", [29305] = "\xe3\x79", [29306] = "\xe3\x7a",
-+ [29309] = "\xe3\x7b", [29310] = "\xe3\x7c", [29313] = "\xc1\xad",
-+ [29314] = "\xe3\x7d", [29315] = "\xee\xf4", [29317] = "\xee\xee",
-+ [29318] = "\xee\xf3", [29319] = "\xe3\x7e", [29320] = "\xcc\xc3",
-+ [29321] = "\xe4\x21", [29322] = "\xc4\xb8", [29323] = "\xee\xf5",
-+ [29324] = "\xee\xf2", [29327] = "\xe4\x22", [29328] = "\xe4\x23",
-+ [29332] = "\xe4\x24", [29333] = "\xe4\x25", [29335] = "\xe4\x26",
-+ [29336] = "\xe4\x27", [29339] = "\xe4\x28", [29341] = "\xc1\xac",
-+ [29343] = "\xe4\x29", [29346] = "\xe4\x2a", [29350] = "\xe4\x2b",
-+ [29351] = "\xee\xf9", [29352] = "\xe4\x2c", [29353] = "\xee\xf8",
-+ [29354] = "\xe4\x2d", [29355] = "\xe4\x2e", [29356] = "\xe4\x2f",
-+ [29357] = "\xe4\x30", [29359] = "\xe4\x31", [29360] = "\xe4\x32",
-+ [29361] = "\xe4\x33", [29362] = "\xe4\x34", [29363] = "\xe4\x35",
-+ [29365] = "\xe4\x36", [29366] = "\xe4\x37", [29367] = "\xe4\x38",
-+ [29368] = "\xe4\x39", [29371] = "\xe4\x3a", [29372] = "\xe4\x3b",
-+ [29373] = "\xe4\x3c", [29374] = "\xe4\x3d", [29375] = "\xee\xf7",
-+ [29376] = "\xe4\x3e", [29378] = "\xcb\xaf", [29379] = "\xe4\x3f",
-+ [29381] = "\xe4\x40", [29383] = "\xe4\x41", [29384] = "\xe4\x42",
-+ [29385] = "\xe4\x43", [29388] = "\xe4\x44", [29389] = "\xe4\x45",
-+ [29391] = "\xe4\x46", [29392] = "\xe4\x47", [29393] = "\xe4\x48",
-+ [29395] = "\xe4\x49", [29396] = "\xbd\xfb", [29397] = "\xe4\x4a",
-+ [29399] = "\xe4\x4b", [29400] = "\xe4\x4c", [29401] = "\xee\xfa",
-+ [29402] = "\xca\xdf", [29404] = "\xe4\x4d", [29405] = "\xb1\xd4",
-+ [29406] = "\xe4\x4e", [29408] = "\xe4\x4f", [29410] = "\xc9\xc6",
-+ [29411] = "\xc3\xf2", [29416] = "\xb5\xf8", [29417] = "\xe4\x50",
-+ [29418] = "\xee\xfc", [29419] = "\xe4\x51", [29420] = "\xb9\xdd",
-+ [29423] = "\xe4\x52", [29424] = "\xe4\x53", [29426] = "\xe4\x54",
-+ [29430] = "\xbb\xac", [29432] = "\xe4\x55", [29437] = "\xe4\x56",
-+ [29439] = "\xee\xfb", [29440] = "\xbf\xed", [29441] = "\xe4\x57",
-+ [29444] = "\xe4\x58", [29445] = "\xe4\x59", [29448] = "\xbf\xee",
-+ [29449] = "\xef\xa1", [29450] = "\xef\xa3", [29452] = "\xe4\x5a",
-+ [29453] = "\xe4\x5b", [29454] = "\xe4\x5c", [29455] = "\xe4\x5d",
-+ [29456] = "\xbe\xfb", [29457] = "\xe4\x5e", [29458] = "\xef\xa2",
-+ [29459] = "\xef\xa4", [29460] = "\xe4\x5f", [29461] = "\xe4\x60",
-+ [29462] = "\xb6\xd3", [29463] = "\xe4\x61", [29464] = "\xc9\xc5",
-+ [29465] = "\xe4\x62", [29466] = "\xe4\x63", [29467] = "\xbc\xe2",
-+ [29468] = "\xcf\xa3", [29470] = "\xee\xfe", [29471] = "\xba\xf8",
-+ [29474] = "\xcf\xbf", [29475] = "\xe4\x64", [29476] = "\xe4\x65",
-+ [29477] = "\xef\xa6", [29478] = "\xe4\x66", [29479] = "\xe4\x67",
-+ [29482] = "\xef\xa5", [29483] = "\xef\xa7", [29492] = "\xee\xfd",
-+ [29495] = "\xe4\x68", [29496] = "\xe4\x69", [29497] = "\xe4\x6a",
-+ [29499] = "\xc6\xe9", [29501] = "\xc5\xd5", [29504] = "\xe4\x6b",
-+ [29505] = "\xe4\x6c", [29506] = "\xe4\x6d", [29508] = "\xc4\xd7",
-+ [29509] = "\xe4\x6e", [29510] = "\xef\xac", [29511] = "\xe4\x6f",
-+ [29512] = "\xe4\x70", [29514] = "\xe4\x71", [29515] = "\xc3\xc3",
-+ [29516] = "\xef\xa8", [29518] = "\xe4\x72", [29520] = "\xef\xa9",
-+ [29524] = "\xe4\x73", [29525] = "\xe4\x74", [29527] = "\xe4\x75",
-+ [29529] = "\xe4\x76", [29530] = "\xe4\x77", [29532] = "\xb7\xad",
-+ [29533] = "\xe4\x78", [29534] = "\xef\xab", [29535] = "\xe4\x79",
-+ [29536] = "\xe4\x7a", [29537] = "\xe4\x7b", [29539] = "\xe4\x7c",
-+ [29540] = "\xe4\x7d", [29541] = "\xb8\xb0", [29542] = "\xe4\x7e",
-+ [29546] = "\xe5\x21", [29548] = "\xef\xaa", [29549] = "\xe5\x22",
-+ [29550] = "\xbe\xe1", [29551] = "\xe5\x23", [29552] = "\xe5\x24",
-+ [29553] = "\xe5\x25", [29554] = "\xe5\x26", [29560] = "\xe5\x27",
-+ [29562] = "\xe5\x28", [29563] = "\xe5\x29", [29564] = "\xb3\xf9",
-+ [29565] = "\xe5\x2a", [29567] = "\xe5\x2b", [29570] = "\xe5\x2c",
-+ [29572] = "\xef\xb0", [29573] = "\xe5\x2d", [29574] = "\xba\xbf",
-+ [29575] = "\xc1\xf9", [29576] = "\xe5\x2e", [29578] = "\xc4\xca",
-+ [29579] = "\xe5\x2f", [29582] = "\xe5\x30", [29585] = "\xe5\x31",
-+ [29587] = "\xe5\x32", [29588] = "\xe5\x33", [29590] = "\xe5\x34",
-+ [29591] = "\xb3\xbb", [29592] = "\xe5\x35", [29593] = "\xe5\x3b",
-+ [29595] = "\xe5\x36", [29596] = "\xef\xae", [29597] = "\xef\xaf",
-+ [29598] = "\xc4\xc3", [29600] = "\xef\xad", [29604] = "\xe5\x37",
-+ [29605] = "\xe5\x38", [29606] = "\xe5\x39", [29609] = "\xef\xb1",
-+ [29610] = "\xe5\x3a", [29617] = "\xe5\x3c", [29619] = "\xef\xb7",
-+ [29620] = "\xe5\x3d", [29621] = "\xe5\x3e", [29622] = "\xe5\x3f",
-+ [29623] = "\xe5\x40", [29624] = "\xef\xba", [29625] = "\xe5\x41",
-+ [29626] = "\xe5\x42", [29627] = "\xe5\x43", [29628] = "\xe5\x44",
-+ [29629] = "\xe5\x45", [29632] = "\xef\xb9", [29633] = "\xc5\xad",
-+ [29635] = "\xe5\x46", [29638] = "\xef\xb2", [29639] = "\xef\xb3",
-+ [29640] = "\xef\xb6", [29641] = "\xe5\x47", [29644] = "\xe5\x48",
-+ [29645] = "\xef\xb8", [29646] = "\xe5\x49", [29647] = "\xe5\x4a",
-+ [29649] = "\xb6\xc0", [29650] = "\xe5\x4b", [29652] = "\xef\xbb",
-+ [29653] = "\xef\xb5", [29654] = "\xe5\x4c", [29655] = "\xe5\x4d",
-+ [29656] = "\xef\xb4", [29671] = "\xe5\x4f", [29672] = "\xe5\x50",
-+ [29673] = "\xe5\x4e", [29674] = "\xe5\x51", [29675] = "\xe5\x52",
-+ [29677] = "\xe5\x53", [29681] = "\xe5\x54", [29682] = "\xe5\x55",
-+ [29683] = "\xef\xbf", [29684] = "\xe5\x56", [29687] = "\xef\xc0",
-+ [29688] = "\xe5\x57", [29689] = "\xe5\x58", [29693] = "\xe5\x59",
-+ [29694] = "\xe5\x5a", [29695] = "\xe5\x5b", [29696] = "\xef\xc1",
-+ [29699] = "\xef\xbe", [29700] = "\xef\xbd", [29701] = "\xe5\x5c",
-+ [29702] = "\xe5\x5d", [29703] = "\xe5\x5e", [29704] = "\xbe\xe2",
-+ [29705] = "\xc6\xaa", [29706] = "\xef\xbc", [29711] = "\xe5\x5f",
-+ [29713] = "\xef\xc5", [29723] = "\xef\xc3", [29726] = "\xe5\x60",
-+ [29727] = "\xe5\x61", [29729] = "\xe5\x62", [29730] = "\xe5\x63",
-+ [29731] = "\xe5\x64", [29732] = "\xe5\x65", [29733] = "\xef\xc4",
-+ [29734] = "\xef\xc2", [29736] = "\xc2\xf8", [29738] = "\xef\xc6",
-+ [29739] = "\xe5\x66", [29741] = "\xe5\x68", [29743] = "\xe5\x67",
-+ [29745] = "\xef\xc7", [29747] = "\xe5\x69", [29748] = "\xef\xc9",
-+ [29749] = "\xe5\x6a", [29752] = "\xe5\x6b", [29754] = "\xe5\x6c",
-+ [29756] = "\xe5\x6d", [29761] = "\xb4\xd5", [29762] = "\xef\xc8",
-+ [29763] = "\xcc\xfa", [29765] = "\xe5\x6e", [29769] = "\xe5\x6f",
-+ [29770] = "\xef\xd4", [29771] = "\xef\xca", [29772] = "\xe5\x70",
-+ [29774] = "\xef\xcd", [29775] = "\xe5\x71", [29776] = "\xef\xcb",
-+ [29777] = "\xe5\x72", [29778] = "\xef\xcc", [29779] = "\xe5\x73",
-+ [29784] = "\xe5\x74", [29786] = "\xef\xce", [29787] = "\xe5\x75",
-+ [29789] = "\xe5\x76", [29790] = "\xe5\x77", [29791] = "\xe5\x78",
-+ [29792] = "\xef\xd0", [29793] = "\xe5\x79", [29794] = "\xe5\x7a",
-+ [29797] = "\xef\xd1", [29799] = "\xef\xd2", [29804] = "\xef\xd5",
-+ [29805] = "\xef\xd3", [29806] = "\xef\xd6", [29807] = "\xef\xd8",
-+ [29809] = "\xef\xd7", [29811] = "\xe5\x7c", [29812] = "\xe5\x7b",
-+ [30055] = "\xc4\xb9", [30056] = "\xe5\x7d", [30057] = "\xe5\x7e",
-+ [30062] = "\xe6\x21", [30064] = "\xcc\xe7", [30066] = "\xef\xd9",
-+ [30067] = "\xc1\xae", [30068] = "\xe6\x22", [30071] = "\xef\xda",
-+ [30072] = "\xe6\x23", [30073] = "\xca\xc4", [30074] = "\xef\xdb",
-+ [30075] = "\xb3\xab", [30076] = "\xe6\x24", [30077] = "\xe6\x25",
-+ [30078] = "\xe6\x26", [30079] = "\xb1\xbc", [30081] = "\xb4\xd7",
-+ [30082] = "\xf4\x71", [30083] = "\xb4\xd6", [30084] = "\xef\xdc",
-+ [30086] = "\xef\xdd", [30088] = "\xef\xde", [30089] = "\xef\xdf",
-+ [30093] = "\xe6\x27", [30094] = "\xe6\x28", [30095] = "\xe6\x29",
-+ [30096] = "\xef\xe0", [30097] = "\xe6\x2a", [30098] = "\xb4\xd8",
-+ [30099] = "\xb3\xd5", [30100] = "\xb9\xde", [30101] = "\xc8\xb6",
-+ [30102] = "\xe6\x2b", [30103] = "\xef\xe2", [30104] = "\xef\xe1",
-+ [30105] = "\xe6\x2c", [30107] = "\xe6\x2d", [30108] = "\xe6\x2e",
-+ [30109] = "\xef\xe3", [30114] = "\xb1\xdc", [30116] = "\xe6\x2f",
-+ [30118] = "\xe6\x30", [30121] = "\xef\xe6", [30122] = "\xe6\x31",
-+ [30123] = "\xef\xe5", [30124] = "\xef\xe4", [30125] = "\xe6\x32",
-+ [30126] = "\xef\xe7", [30127] = "\xe6\x33", [30131] = "\xef\xea",
-+ [30134] = "\xe6\x34", [30135] = "\xb0\xc7", [30136] = "\xe6\x35",
-+ [30137] = "\xe6\x36", [30138] = "\xef\xe8", [30139] = "\xe6\x37",
-+ [30140] = "\xef\xec", [30141] = "\xef\xeb", [30144] = "\xe6\x38",
-+ [30145] = "\xe6\x39", [30146] = "\xe6\x3a", [30147] = "\xe6\x3b",
-+ [30148] = "\xef\xee", [30149] = "\xef\xed", [30150] = "\xef\xef",
-+ [30152] = "\xc6\xae", [30153] = "\xe6\x3c", [30154] = "\xe6\x3d",
-+ [30156] = "\xef\xf0", [30157] = "\xe6\x3e", [30158] = "\xe6\x3f",
-+ [30159] = "\xe6\x40", [30160] = "\xe6\x41", [30161] = "\xef\xf1",
-+ [30162] = "\xef\xf3", [30164] = "\xe6\x42", [30165] = "\xef\xf2",
-+ [30166] = "\xe6\x43", [30220] = "\xc9\xec", [30221] = "\xe6\x44",
-+ [30222] = "\xe6\x45", [30225] = "\xef\xf4", [30226] = "\xe6\x46",
-+ [30228] = "\xe6\x47", [30229] = "\xe6\x48", [30230] = "\xe6\x49",
-+ [30232] = "\xef\xf5", [30234] = "\xba\xe5", [30236] = "\xe6\x4a",
-+ [30238] = "\xef\xf6", [30239] = "\xef\xf7", [30241] = "\xe6\x4b",
-+ [30242] = "\xcb\xc9", [30243] = "\xe6\x4c", [30247] = "\xe6\x4d",
-+ [30248] = "\xe6\x4e", [30249] = "\xe6\x4f", [30250] = "\xe6\x50",
-+ [30251] = "\xc1\xcb", [30252] = "\xe6\x51", [30253] = "\xe6\x52",
-+ [30255] = "\xb0\xa4", [30256] = "\xc2\xcb", [30257] = "\xe6\x53",
-+ [30258] = "\xef\xf8", [30260] = "\xc9\xed", [30267] = "\xef\xfb",
-+ [30268] = "\xef\xf9", [30269] = "\xb9\xdf", [30271] = "\xef\xfa",
-+ [30272] = "\xb8\xc2", [30274] = "\xe6\x54", [30276] = "\xe6\x55",
-+ [30278] = "\xe6\x56", [30279] = "\xe6\x57", [30280] = "\xe6\x58",
-+ [30283] = "\xca\xc5", [30284] = "\xef\xfd", [30285] = "\xf0\xa1",
-+ [30286] = "\xef\xfe", [30287] = "\xf0\xa2", [30289] = "\xe6\x59",
-+ [30290] = "\xb1\xa1", [30291] = "\xbf\xd8", [30292] = "\xbd\xfc",
-+ [30293] = "\xb4\xd9", [30294] = "\xf0\xa3", [30298] = "\xc7\xe6",
-+ [30300] = "\xf0\xa5", [30302] = "\xe6\x5a", [30304] = "\xb1\xa2",
-+ [30306] = "\xf0\xa4", [30307] = "\xc4\xc4", [30308] = "\xe6\x5b",
-+ [30309] = "\xce\xcd", [30310] = "\xc6\xab", [30311] = "\xef\xfc",
-+ [30312] = "\xce\xa6", [30314] = "\xb8\xb1", [30315] = "\xe6\x5c",
-+ [30316] = "\xe6\x5d", [30317] = "\xcd\xdb", [30318] = "\xe6\x5e",
-+ [30319] = "\xe6\x5f", [30321] = "\xe6\x60", [30322] = "\xe6\x61",
-+ [30323] = "\xe6\x62", [30324] = "\xe6\x63", [30325] = "\xb6\xf9",
-+ [30326] = "\xce\xb4", [30328] = "\xb7\xa8", [30329] = "\xe6\x64",
-+ [30330] = "\xc2\xe2", [30331] = "\xe7\xa1", [30333] = "\xf0\xa6",
-+ [30334] = "\xb3\xac", [30335] = "\xbf\xef", [30337] = "\xe6\x65",
-+ [30340] = "\xb3\xd6", [30341] = "\xf0\xa8", [30342] = "\xe6\x66",
-+ [30343] = "\xf0\xa9", [30344] = "\xf0\xa7", [30345] = "\xb7\xe4",
-+ [30346] = "\xe6\x67", [30347] = "\xba\xdd", [30348] = "\xbe\xe3",
-+ [30349] = "\xe6\x68", [30351] = "\xe6\x69", [30352] = "\xb1\xa3",
-+ [30355] = "\xce\xd9", [30356] = "\xe6\x6a", [30357] = "\xe6\x6b",
-+ [30358] = "\xe6\x6c", [30359] = "\xf0\xab", [30360] = "\xee\xae",
-+ [30361] = "\xe6\x6d", [30362] = "\xf0\xaa", [30366] = "\xe6\x6e",
-+ [30367] = "\xe6\x6f", [30368] = "\xf0\xae", [30369] = "\xf0\xac",
-+ [30370] = "\xf0\xad", [30371] = "\xe6\x70", [30372] = "\xf0\xaf",
-+ [30374] = "\xf0\xb0", [30375] = "\xce\xec", [30376] = "\xf0\xb1",
-+ [30377] = "\xf0\xb2", [30378] = "\xe6\x71", [30379] = "\xc0\xc9",
-+ [30380] = "\xc8\xbb", [30384] = "\xbf\xfd", [30385] = "\xb4\xe7",
-+ [30388] = "\xcd\xba", [30389] = "\xb2\xed", [30390] = "\xbd\xb8",
-+ [30391] = "\xb8\xdb", [30393] = "\xf0\xb5", [30394] = "\xe6\x72",
-+ [30395] = "\xf0\xb4", [30396] = "\xbb\xf3", [30397] = "\xf0\xb6",
-+ [30398] = "\xf0\xb3", [30401] = "\xbb\xa8", [30402] = "\xe6\x73",
-+ [30405] = "\xf0\xba", [30406] = "\xea\xad", [30408] = "\xe6\x75",
-+ [30409] = "\xd2\xd6", [30410] = "\xe6\x76", [30411] = "\xbf\xf7",
-+ [30412] = "\xf0\xb8", [30413] = "\xe6\x77", [30414] = "\xe6\x78",
-+ [30415] = "\xe6\x79", [30418] = "\xce\xa5", [30419] = "\xc6\xf1",
-+ [30424] = "\xb1\xab", [30425] = "\xe6\x7a", [30426] = "\xc0\xe3",
-+ [30427] = "\xbc\xb6", [30431] = "\xe6\x7b", [30432] = "\xca\xb7",
-+ [30433] = "\xe6\x7c", [30434] = "\xb1\xc0", [30438] = "\xce\xed",
-+ [30439] = "\xcd\xeb", [30441] = "\xf0\xbb", [30442] = "\xe6\x7d",
-+ [30443] = "\xc5\xc5", [30448] = "\xbc\xfb", [30450] = "\xe6\x7e",
-+ [30451] = "\xe7\x21", [30452] = "\xf0\xbc", [30453] = "\xe7\x22",
-+ [30454] = "\xf0\xbd", [30455] = "\xbf\xcc", [30456] = "\xf0\xbe",
-+ [30457] = "\xe7\x23", [30458] = "\xce\xee", [30461] = "\xf0\xb9",
-+ [30462] = "\xf0\xc0", [30463] = "\xf0\xc2", [30465] = "\xf0\xc1",
-+ [30467] = "\xf0\xbf", [30470] = "\xf0\xc3", [30473] = "\xf0\xc4",
-+ [30474] = "\xe7\x24", [30475] = "\xe7\x25", [30476] = "\xc1\xfa",
-+ [30477] = "\xe7\x26", [30478] = "\xb2\xe2", [30481] = "\xe7\x27",
-+ [30482] = "\xe7\x28", [30483] = "\xe7\x29", [30484] = "\xf0\xc5",
-+ [30487] = "\xcc\xb8", [30488] = "\xe7\x2a", [30490] = "\xf0\xc6",
-+ [30496] = "\xf0\xc7", [30497] = "\xe7\x2b", [30498] = "\xcf\xaa",
-+ [30499] = "\xe7\x2c", [30504] = "\xdb\xb1", [30505] = "\xf0\xc8",
-+ [30507] = "\xf4\x74", [30509] = "\xf0\xc9", [30510] = "\xf0\xca",
-+ [30513] = "\xe7\x2d", [30514] = "\xf0\xce", [30515] = "\xe7\x2e",
-+ [30516] = "\xf0\xcb", [30518] = "\xf0\xcc", [30520] = "\xf0\xcd",
-+ [30521] = "\xf0\xcf", [30522] = "\xe7\x2f", [30525] = "\xf4\x75",
-+ [30526] = "\xe7\x30", [30527] = "\xe7\x31", [30529] = "\xf4\x76",
-+ [30530] = "\xc0\xc4", [30533] = "\xe7\x32", [30534] = "\xcc\xf7",
-+ [30535] = "\xe7\x33", [30536] = "\xe7\x34", [30537] = "\xc0\xc5",
-+ [30538] = "\xe7\x35", [30539] = "\xe7\x36", [30540] = "\xf0\xd0",
-+ [30542] = "\xc8\xf3", [30544] = "\xf0\xd1", [30545] = "\xf3\xd3",
-+ [30546] = "\xcc\xcc", [30547] = "\xe7\x37", [30548] = "\xf0\xd2",
-+ [30550] = "\xf0\xd3", [30551] = "\xe7\x38", [30552] = "\xf0\xd4",
-+ [30553] = "\xb3\xd7", [30554] = "\xe7\x39", [30555] = "\xf0\xd6",
-+ [30557] = "\xbf\xd9", [30558] = "\xe7\x3a", [30561] = "\xf0\xd7",
-+ [30563] = "\xe7\x3b", [30564] = "\xb7\xa4", [30566] = "\xe7\x3c",
-+ [30567] = "\xe7\x3d", [30568] = "\xe7\x3e", [30569] = "\xf0\xd8",
-+ [30570] = "\xf0\xdc", [30571] = "\xe7\x3f", [30572] = "\xf0\xda",
-+ [30573] = "\xe7\x40", [30575] = "\xe7\x41", [30576] = "\xe7\x42",
-+ [30577] = "\xf0\xdb", [30580] = "\xb3\xf3", [30581] = "\xf0\xd9",
-+ [30582] = "\xf0\xdd", [30585] = "\xe7\x43", [30587] = "\xf0\xde",
-+ [30589] = "\xb0\xc8", [30591] = "\xf0\xdf", [30592] = "\xf0\xe0",
-+ [30597] = "\xe7\x44", [30598] = "\xe7\x45", [30599] = "\xe7\x46",
-+ [30600] = "\xbe\xe4", [30601] = "\xe7\x47", [30602] = "\xe7\x48",
-+ [30604] = "\xf0\xe1", [30606] = "\xe7\x49", [30607] = "\xe7\x4a",
-+ [30608] = "\xb5\xc7", [30610] = "\xe7\x4b", [30611] = "\xf0\xe4",
-+ [30614] = "\xf0\xe3", [30616] = "\xf0\xe2", [30619] = "\xeb\xf1",
-+ [30620] = "\xe7\x4c", [30621] = "\xca\xdc", [30622] = "\xe7\x4d",
-+ [30625] = "\xe7\x4e", [30626] = "\xe7\x4f", [30627] = "\xf0\xe5",
-+ [30628] = "\xf0\xe6", [30629] = "\xe7\x50", [30630] = "\xe7\x51",
-+ [30632] = "\xe7\x52", [30633] = "\xe7\x53", [30634] = "\xe7\x54",
-+ [30636] = "\xe7\x55", [30638] = "\xe7\x56", [30639] = "\xe7\x57",
-+ [30641] = "\xe7\x58", [30643] = "\xf0\xe7", [30644] = "\xe7\x59",
-+ [30645] = "\xe7\x5a", [30646] = "\xf0\xe8", [30647] = "\xe7\x5b",
-+ [30648] = "\xf0\xe9", [30649] = "\xe7\x5c", [30650] = "\xe7\x5d",
-+ [30651] = "\xf0\xea", [30652] = "\xe7\x5e", [30653] = "\xe7\x5f",
-+ [30654] = "\xe7\x60", [30656] = "\xe7\x61", [30657] = "\xe7\x62",
-+ [30659] = "\xb4\xda", [30660] = "\xe7\x63", [30663] = "\xe7\x64",
-+ [30664] = "\xe7\x65", [30665] = "\xe7\x66", [30667] = "\xe7\x6a",
-+ [30668] = "\xf0\xeb", [30669] = "\xe7\x67", [30670] = "\xe7\x68",
-+ [30672] = "\xe7\x69", [30673] = "\xe7\x6b", [30676] = "\xe7\x6c",
-+ [30685] = "\xf0\xec", [30686] = "\xc7\xa3", [30687] = "\xe7\x6d",
-+ [30689] = "\xe7\x6e", [30690] = "\xf0\xee", [30691] = "\xb2\xbb",
-+ [30692] = "\xe7\x6f", [30693] = "\xf0\xf1", [30694] = "\xf0\xf0",
-+ [30695] = "\xe7\x70", [30696] = "\xe7\x71", [30698] = "\xe7\x72",
-+ [30699] = "\xb1\xa4", [30703] = "\xb6\xc1", [30705] = "\xca\xc7",
-+ [30706] = "\xc4\xba", [30707] = "\xba\xa2", [30709] = "\xb9\xe0",
-+ [30710] = "\xbd\xe7", [30711] = "\xe7\x73", [30712] = "\xbf\xdc",
-+ [30714] = "\xe7\x74", [30716] = "\xf0\xf3", [30717] = "\xe7\x76",
-+ [30718] = "\xe7\x77", [30719] = "\xf0\xf2", [30720] = "\xcd\xc2",
-+ [30721] = "\xb4\xe8", [30722] = "\xc8\xd2", [30723] = "\xc6\xdc",
-+ [30724] = "\xe7\x78", [30726] = "\xe7\x79", [30727] = "\xbf\xfc",
-+ [30728] = "\xce\xce", [30729] = "\xe7\x75", [30730] = "\xb7\xdb",
-+ [30732] = "\xe7\x7a", [30734] = "\xe7\x7b", [30736] = "\xe7\x7c",
-+ [30737] = "\xf0\xf6", [30739] = "\xe7\x7d", [30740] = "\xf0\xf5",
-+ [30741] = "\xe8\x28", [30742] = "\xe7\x7e", [30747] = "\xe8\x21",
-+ [30748] = "\xcb\xcb", [30749] = "\xc6\xac", [30750] = "\xe8\x22",
-+ [30751] = "\xe8\x23", [30752] = "\xe8\x24", [30754] = "\xe8\x25",
-+ [30755] = "\xe8\x26", [30756] = "\xb1\xd0", [30757] = "\xe8\x27",
-+ [30759] = "\xf0\xf7", [30760] = "\xf0\xf4", [30763] = "\xc9\xd1",
-+ [30764] = "\xcd\xea", [30765] = "\xf0\xf8", [30766] = "\xe8\x29",
-+ [30772] = "\xe8\x2a", [30774] = "\xf0\xf9", [30775] = "\xe8\x2b",
-+ [30778] = "\xe8\x2c", [30779] = "\xf0\xfb", [30780] = "\xc2\xea",
-+ [30781] = "\xb3\xdb", [30782] = "\xb3\xdc", [30783] = "\xf0\xfa",
-+ [30785] = "\xe8\x2d", [30786] = "\xe8\x2e", [30787] = "\xe8\x2f",
-+ [30788] = "\xb4\xe9", [30789] = "\xb8\xb2", [30790] = "\xe8\x30",
-+ [30791] = "\xe8\x31", [30792] = "\xb4\xea", [30793] = "\xe8\x32",
-+ [30794] = "\xe8\x33", [30795] = "\xc5\xbf", [30798] = "\xce\xe0",
-+ [30802] = "\xe8\x34", [30803] = "\xe8\x35", [30805] = "\xe8\x36",
-+ [30806] = "\xe8\x37", [30807] = "\xb8\xdc", [30810] = "\xe8\x38",
-+ [30811] = "\xf0\xfc", [30812] = "\xe8\x39", [30815] = "\xf0\xfd",
-+ [30816] = "\xf0\xfe", [30817] = "\xf1\xa1", [30819] = "\xf1\xa3",
-+ [30820] = "\xf1\xa2", [30872] = "\xc9\xf7", [30874] = "\xf1\xa4",
-+ [30875] = "\xe8\x3a", [30877] = "\xe8\x3b", [30878] = "\xe8\x3c",
-+ [30879] = "\xf1\xa5", [30880] = "\xe8\x3d", [30881] = "\xf1\xa6",
-+ [30884] = "\xe8\x3e", [30886] = "\xf1\xa7", [30887] = "\xe8\x3f",
-+ [30888] = "\xe8\x40", [30890] = "\xe8\x41", [30891] = "\xe8\x42",
-+ [30895] = "\xe8\x43", [30898] = "\xe8\x44", [30899] = "\xf1\xa9",
-+ [30900] = "\xf1\xa8", [30901] = "\xe8\x45", [30902] = "\xf1\xaa",
-+ [30904] = "\xe8\x46", [30908] = "\xe8\x47", [30923] = "\xc8\xf4",
-+ [30924] = "\xe6\xcc", [30927] = "\xbf\xa9", [30929] = "\xe8\x48",
-+ [30930] = "\xb5\xb2", [30931] = "\xe8\x49", [30933] = "\xe8\x4a",
-+ [30934] = "\xe8\x4b", [30935] = "\xe8\x4c", [30937] = "\xf1\xab",
-+ [30938] = "\xe8\x4d", [30939] = "\xf1\xac", [30941] = "\xd2\xac",
-+ [30942] = "\xdd\xbb", [30943] = "\xc8\xd3", [30946] = "\xb0\xfb",
-+ [30947] = "\xe8\x4e", [30948] = "\xb0\xbb", [30950] = "\xe8\x4f",
-+ [30956] = "\xbb\xf4", [30957] = "\xcb\xb0", [30958] = "\xbe\xfe",
-+ [30962] = "\xe8\x50", [30963] = "\xf1\xad", [30965] = "\xcc\xdf",
-+ [30967] = "\xe8\x51", [30968] = "\xe8\x52", [30969] = "\xf1\xae",
-+ [30970] = "\xcd\xdc", [30972] = "\xb1\xc2", [30976] = "\xbb\xc1",
-+ [30977] = "\xe8\x53", [30978] = "\xf1\xaf", [30979] = "\xb2\xee",
-+ [30980] = "\xf1\xb0", [30981] = "\xe8\x54", [30982] = "\xe8\x55",
-+ [30983] = "\xe8\x56", [30984] = "\xf1\xb1", [30986] = "\xe8\x57",
-+ [30987] = "\xe8\x58", [30988] = "\xe8\x59", [30989] = "\xf1\xb3",
-+ [30990] = "\xf1\xb4", [30991] = "\xe8\x5a", [30992] = "\xf1\xb6",
-+ [30993] = "\xf1\xb2", [30994] = "\xe8\x5b", [30996] = "\xf1\xb5",
-+ [30998] = "\xe8\x5c", [30999] = "\xe8\x5d", [31000] = "\xb4\xdb",
-+ [31003] = "\xe8\x5e", [31004] = "\xf1\xb7", [31006] = "\xf1\xb8",
-+ [31009] = "\xe8\x5f", [31010] = "\xe8\x60", [31011] = "\xe8\x61",
-+ [31012] = "\xe8\x62", [31013] = "\xe8\x63", [31017] = "\xe8\x64",
-+ [31018] = "\xe8\x65", [31019] = "\xe8\x66", [31020] = "\xe8\x67",
-+ [31021] = "\xf1\xb9", [31022] = "\xf1\xba", [31024] = "\xe8\x68",
-+ [31025] = "\xe8\x69", [31026] = "\xf1\xbb", [31029] = "\xf1\xbd",
-+ [31030] = "\xe8\x6a", [31031] = "\xe8\x6b", [31032] = "\xe8\x6c",
-+ [31033] = "\xf1\xbc", [31035] = "\xf1\xbf", [31036] = "\xf1\xc2",
-+ [31037] = "\xe8\x6d", [31038] = "\xe8\x6e", [31040] = "\xf1\xbe",
-+ [31041] = "\xf1\xc0", [31042] = "\xf1\xc1", [31044] = "\xe8\x6f",
-+ [31045] = "\xf1\xc3", [31047] = "\xb6\xc2", [31048] = "\xe8\x70",
-+ [31049] = "\xe8\x71", [31051] = "\xe8\x72", [31052] = "\xe8\x73",
-+ [31054] = "\xe8\x74", [31055] = "\xe8\x75", [31056] = "\xe8\x76",
-+ [31110] = "\xbc\xf3", [31111] = "\xf1\xc4", [31112] = "\xf1\xc5",
-+ [31113] = "\xb9\xe1", [31115] = "\xe8\x77", [31117] = "\xe8\x78",
-+ [31118] = "\xf4\x7a", [31119] = "\xe8\x79", [31125] = "\xf1\xc6",
-+ [31126] = "\xe8\x7a", [31128] = "\xb3\xbe", [31132] = "\xc7\xcf",
-+ [31133] = "\xf1\xc7", [31134] = "\xf1\xc8", [31136] = "\xe8\x7b",
-+ [31137] = "\xe8\x7c", [31138] = "\xe8\x7d", [31139] = "\xc3\xda",
-+ [31140] = "\xc6\xeb", [31141] = "\xe8\x7e", [31145] = "\xe9\x21",
-+ [31146] = "\xe9\x22", [31148] = "\xf1\xc9", [31149] = "\xe9\x23",
-+ [31151] = "\xe9\x24", [31153] = "\xc7\xfd", [31155] = "\xe9\x25",
-+ [31156] = "\xc2\xcc", [31157] = "\xb1\xd8", [31158] = "\xb6\xee",
-+ [31160] = "\xb6\xef", [31161] = "\xe9\x26", [31168] = "\xc3\xf3",
-+ [31169] = "\xf1\xce", [31170] = "\xb6\xf0", [31171] = "\xe9\x27",
-+ [31172] = "\xe9\x28", [31173] = "\xb2\xef", [31176] = "\xf1\xcd",
-+ [31177] = "\xe9\x29", [31178] = "\xe9\x2a", [31179] = "\xf1\xcb",
-+ [31180] = "\xe9\x2b", [31181] = "\xf1\xcc", [31182] = "\xe9\x2c",
-+ [31183] = "\xf1\xca", [31186] = "\xf1\xd8", [31191] = "\xe9\x2d",
-+ [31194] = "\xe9\x2e", [31195] = "\xe9\x2f", [31196] = "\xe9\x30",
-+ [31197] = "\xf1\xcf", [31198] = "\xf1\xd0", [31200] = "\xe9\x31",
-+ [31201] = "\xf1\xd1", [31202] = "\xf1\xd2", [31204] = "\xe9\x32",
-+ [31205] = "\xe9\x33", [31208] = "\xf1\xd4", [31209] = "\xe9\x34",
-+ [31211] = "\xf1\xd3", [31213] = "\xe9\x35", [31214] = "\xe9\x36",
-+ [31215] = "\xbd\xd9", [31217] = "\xf1\xd5", [31218] = "\xe9\x37",
-+ [31219] = "\xe9\x38", [31220] = "\xe9\x39", [31221] = "\xf1\xd7",
-+ [31227] = "\xe9\x3a", [31228] = "\xe9\x3b", [31230] = "\xb5\xb3",
-+ [31231] = "\xf1\xd6", [31232] = "\xe9\x3c", [31233] = "\xe9\x3d",
-+ [31234] = "\xc1\xfb", [31235] = "\xb8\xb3", [31238] = "\xe9\x3e",
-+ [31241] = "\xf1\xd9", [31246] = "\xe9\x3f", [31248] = "\xe9\x40",
-+ [31250] = "\xe9\x41", [31251] = "\xe9\x42", [31252] = "\xe9\x43",
-+ [31255] = "\xe9\x44", [31256] = "\xc2\xcd", [31259] = "\xf1\xda",
-+ [31261] = "\xe9\x45", [31262] = "\xe9\x46", [31264] = "\xc6\xad",
-+ [31267] = "\xe9\x47", [31269] = "\xe9\x48", [31270] = "\xe9\x49",
-+ [31271] = "\xf1\xdb", [31272] = "\xe9\x4a", [31278] = "\xf1\xe0",
-+ [31280] = "\xf1\xde", [31281] = "\xe9\x4c", [31282] = "\xf1\xdd",
-+ [31283] = "\xf1\xdf", [31284] = "\xe9\x4d", [31285] = "\xf1\xdc",
-+ [31287] = "\xe9\x4b", [31290] = "\xe9\x4e", [31291] = "\xe9\x4f",
-+ [31292] = "\xe9\x50", [31293] = "\xf1\xe2", [31294] = "\xe9\x51",
-+ [31297] = "\xe9\x52", [31300] = "\xe9\x53", [31301] = "\xf1\xe1",
-+ [31302] = "\xe9\x54", [31303] = "\xf1\xe4", [31306] = "\xb6\xc3",
-+ [31307] = "\xf1\xe3", [31309] = "\xe9\x55", [31311] = "\xf1\xe5",
-+ [31314] = "\xf1\xe6", [31316] = "\xf1\xe8", [31317] = "\xf1\xe7",
-+ [31321] = "\xf1\xe9", [31322] = "\xf1\xeb", [31323] = "\xf1\xea",
-+ [31384] = "\xb9\xfc", [31386] = "\xe9\x56", [31388] = "\xe9\x57",
-+ [31389] = "\xf1\xec", [31390] = "\xe9\x58", [31391] = "\xe9\x59",
-+ [31392] = "\xf1\xed", [31394] = "\xe9\x5a", [31396] = "\xe9\x5b",
-+ [31397] = "\xe9\x5c", [31398] = "\xe9\x5d", [31400] = "\xb3\xbc",
-+ [31401] = "\xe9\x5e", [31403] = "\xe9\x5f", [31404] = "\xf1\xee",
-+ [31406] = "\xe9\x60", [31407] = "\xe9\x61", [31408] = "\xf1\xef",
-+ [31409] = "\xe9\x62", [31411] = "\xe9\x63", [31412] = "\xbf\xf1",
-+ [31414] = "\xe9\x64", [31416] = "\xe9\x65", [31422] = "\xe9\x66",
-+ [31423] = "\xf1\xf0", [31424] = "\xe9\x67", [31425] = "\xf1\xf1",
-+ [31426] = "\xe9\x68", [31427] = "\xf1\xf2", [31428] = "\xf1\xf3",
-+ [31429] = "\xe9\x69", [31430] = "\xe9\x6a", [31431] = "\xe9\x6b",
-+ [31432] = "\xb9\xe2", [31433] = "\xf4\x7b", [31435] = "\xe9\x6c",
-+ [31436] = "\xe9\x6d", [31438] = "\xf1\xf4", [31439] = "\xf1\xf5",
-+ [31440] = "\xe9\x6e", [31442] = "\xf1\xf6", [31443] = "\xf1\xf7",
-+ [31444] = "\xe9\x6f", [31445] = "\xe9\x70", [31446] = "\xf1\xf8",
-+ [31447] = "\xe9\x71", [31449] = "\xe9\x72", [31450] = "\xc8\xb1",
-+ [31451] = "\xf1\xfa", [31452] = "\xe9\x73", [31453] = "\xc9\xa6",
-+ [31454] = "\xf1\xfb", [31455] = "\xf1\xf9", [31457] = "\xf1\xfd",
-+ [31458] = "\xe9\x74", [31459] = "\xe9\x75", [31460] = "\xf1\xfc",
-+ [31461] = "\xe9\x76", [31463] = "\xf1\xfe", [31465] = "\xe9\x77",
-+ [31466] = "\xe9\x78", [31467] = "\xf2\xa1", [31469] = "\xe9\x79",
-+ [31471] = "\xe9\x7a", [31472] = "\xe9\x7b", [31473] = "\xe9\x7c",
-+ [31474] = "\xe9\x7d", [31475] = "\xe9\x7e", [31476] = "\xea\x21",
-+ [31477] = "\xea\x22", [31478] = "\xf2\xa2", [31480] = "\xea\x23",
-+ [31481] = "\xea\x24", [31483] = "\xea\x25", [31484] = "\xea\x26",
-+ [31485] = "\xea\x27", [31486] = "\xea\x28", [31488] = "\xea\x29",
-+ [31490] = "\xea\x2a", [31494] = "\xea\x2b", [31496] = "\xf2\xa3",
-+ [31497] = "\xea\x2c", [31498] = "\xf2\xa4", [31499] = "\xea\x2d",
-+ [31500] = "\xea\x2e", [31503] = "\xf2\xa5", [31504] = "\xea\x2f",
-+ [31506] = "\xf2\xa6", [31507] = "\xf2\xa7", [31509] = "\xf2\xa8",
-+ [31510] = "\xea\x30", [31511] = "\xf2\xa9", [31512] = "\xf2\xaa",
-+ [31513] = "\xf2\xab", [31514] = "\xf2\xac", [31515] = "\xea\x31",
-+ [31517] = "\xea\x32", [31518] = "\xf2\xad", [31519] = "\xf2\xae",
-+ [31521] = "\xdd\xb5", [31522] = "\xf2\xaf", [31523] = "\xea\x33",
-+ [31524] = "\xea\x34", [31525] = "\xea\x35", [31527] = "\xea\x36",
-+ [31529] = "\xea\x37", [31530] = "\xea\x38", [31531] = "\xe4\xf8",
-+ [31532] = "\xb5\xb4", [31533] = "\xea\x39", [31537] = "\xb3\xa1",
-+ [31538] = "\xba\xb2", [31539] = "\xf2\xb1", [31540] = "\xf2\xb0",
-+ [31541] = "\xcc\xa5", [31544] = "\xea\x3a", [31547] = "\xea\x3b",
-+ [31548] = "\xea\x3c", [31549] = "\xf2\xb3", [31550] = "\xf2\xb4",
-+ [31551] = "\xf2\xb2", [31553] = "\xf2\xb5", [31556] = "\xcb\xe2",
-+ [31557] = "\xea\x3d", [31558] = "\xea\x3e", [31559] = "\xea\x3f",
-+ [31560] = "\xf2\xb6", [31562] = "\xb5\xfb", [31563] = "\xea\x40",
-+ [31566] = "\xea\x41", [31569] = "\xea\x42", [31571] = "\xea\x43",
-+ [31573] = "\xea\x44", [31574] = "\xea\x45", [31576] = "\xea\x46",
-+ [31578] = "\xea\x47", [31579] = "\xea\x48", [31580] = "\xea\x49",
-+ [31581] = "\xea\x4a", [31582] = "\xea\x4b", [31583] = "\xcf\xa5",
-+ [31586] = "\xf4\x7c", [31587] = "\xea\x4c", [31588] = "\xf2\xb7",
-+ [31589] = "\xea\x4d", [31591] = "\xea\x4e", [31592] = "\xea\x4f",
-+ [31593] = "\xea\x50", [31599] = "\xea\x51", [31600] = "\xea\x52",
-+ [31603] = "\xf2\xb9", [31604] = "\xea\x53", [31605] = "\xea\x54",
-+ [31606] = "\xea\x55", [31607] = "\xea\x56", [31609] = "\xea\x57",
-+ [31610] = "\xea\x58", [31611] = "\xea\x59", [31613] = "\xea\x5a",
-+ [31614] = "\xb0\xbe", [31615] = "\xea\x5b", [31616] = "\xea\x5c",
-+ [31617] = "\xf2\xba", [31618] = "\xca\xab", [31619] = "\xf2\xb8",
-+ [31620] = "\xea\x5d", [31622] = "\xf2\xbb", [31623] = "\xf2\xbc",
-+ [31626] = "\xea\x5e", [31629] = "\xea\x5f", [31630] = "\xea\x60",
-+ [31631] = "\xf2\xbd", [31632] = "\xf2\xbe", [31638] = "\xea\x61",
-+ [31639] = "\xea\x62", [31640] = "\xf2\xbf", [31641] = "\xea\x63",
-+ [31642] = "\xcb\xee", [31643] = "\xbb\xad", [31644] = "\xea\x64",
-+ [31645] = "\xba\xfa", [31646] = "\xc1\xaf", [31648] = "\xea\x65",
-+ [31649] = "\xea\x66", [31650] = "\xea\x67", [31652] = "\xf2\xc0",
-+ [31655] = "\xea\x68", [31656] = "\xea\x69", [31657] = "\xf2\xc3",
-+ [31659] = "\xea\x6a", [31660] = "\xea\x6b", [31662] = "\xea\x6c",
-+ [31663] = "\xea\x6d", [31664] = "\xf2\xc1", [31665] = "\xea\x6e",
-+ [31670] = "\xf2\xc4", [31671] = "\xea\x6f", [31672] = "\xea\x70",
-+ [31673] = "\xb8\xf1", [31674] = "\xf2\xc2", [31678] = "\xea\x71",
-+ [31679] = "\xf2\xc5", [31680] = "\xea\x72", [31681] = "\xf2\xc6",
-+ [31682] = "\xf2\xc7", [31684] = "\xf2\xcb", [31686] = "\xbb\xaa",
-+ [31687] = "\xea\x73", [31688] = "\xea\x74", [31691] = "\xc2\xe4",
-+ [31693] = "\xea\x75", [31695] = "\xea\x76", [31697] = "\xf2\xcc",
-+ [31698] = "\xf2\xc9", [31699] = "\xf2\xc8", [31700] = "\xf2\xca",
-+ [31701] = "\xea\x77", [31703] = "\xea\x78", [31704] = "\xb7\xdf",
-+ [31706] = "\xea\x79", [31707] = "\xea\x7a", [31711] = "\xea\x7b",
-+ [31712] = "\xf2\xd0", [31713] = "\xf2\xcf", [31714] = "\xf2\xce",
-+ [31715] = "\xea\x7c", [31717] = "\xb0\xb3", [31719] = "\xea\x7d",
-+ [31720] = "\xea\x7e", [31721] = "\xeb\x21", [31722] = "\xeb\x22",
-+ [31725] = "\xeb\x23", [31727] = "\xeb\x24", [31728] = "\xeb\x25",
-+ [31730] = "\xeb\x26", [31732] = "\xf2\xda", [31734] = "\xf2\xd6",
-+ [31736] = "\xf2\xd7", [31737] = "\xf2\xd3", [31738] = "\xf2\xd9",
-+ [31739] = "\xeb\x27", [31740] = "\xf2\xd5", [31741] = "\xb3\xe2",
-+ [31743] = "\xeb\x28", [31744] = "\xcf\xcc", [31745] = "\xeb\x29",
-+ [31746] = "\xf2\xd8", [31747] = "\xf2\xd4", [31748] = "\xf2\xd2",
-+ [31749] = "\xf2\xd1", [31750] = "\xeb\x2a", [31752] = "\xeb\x2b",
-+ [31753] = "\xeb\x2c", [31754] = "\xeb\x2d", [31755] = "\xf2\xdc",
-+ [31756] = "\xeb\x2e", [31758] = "\xeb\x2f", [31761] = "\xf2\xdf",
-+ [31762] = "\xeb\x30", [31763] = "\xeb\x31", [31764] = "\xf2\xde",
-+ [31765] = "\xf2\xdd", [31766] = "\xeb\x32", [31767] = "\xeb\x33",
-+ [31768] = "\xeb\x34", [31769] = "\xeb\x35", [31770] = "\xeb\x36",
-+ [31773] = "\xc9\xc9", [31774] = "\xf2\xdb", [31775] = "\xb0\xf3",
-+ [31776] = "\xf2\xe0", [31777] = "\xeb\x37", [31778] = "\xf2\xe2",
-+ [31781] = "\xeb\x38", [31782] = "\xeb\x39", [31783] = "\xeb\x3a",
-+ [31785] = "\xb3\xef", [31786] = "\xf2\xcd", [31787] = "\xb1\xb7",
-+ [31789] = "\xeb\x3b", [31790] = "\xf2\xe4", [31793] = "\xeb\x3c",
-+ [31795] = "\xeb\x3d", [31796] = "\xeb\x3e", [31797] = "\xeb\x3f",
-+ [31798] = "\xf2\xe3", [31799] = "\xf2\xe1", [31800] = "\xc3\xad",
-+ [31801] = "\xeb\x40", [31802] = "\xeb\x41", [31806] = "\xeb\x42",
-+ [31807] = "\xeb\x43", [31808] = "\xeb\x44", [31810] = "\xcb\xf0",
-+ [31811] = "\xeb\x45", [31812] = "\xeb\x46", [31814] = "\xeb\x47",
-+ [31815] = "\xce\xda", [31816] = "\xeb\x48", [31818] = "\xf2\xe5",
-+ [31819] = "\xeb\x49", [31820] = "\xeb\x50", [31821] = "\xeb\x4a",
-+ [31822] = "\xeb\x4b", [31823] = "\xeb\x4c", [31824] = "\xf2\xe6",
-+ [31827] = "\xeb\x4d", [31831] = "\xf2\xe7", [31832] = "\xeb\x52",
-+ [31833] = "\xeb\x4e", [31834] = "\xeb\x4f", [31835] = "\xeb\x51",
-+ [31838] = "\xeb\x53", [31840] = "\xeb\x54", [31842] = "\xeb\x55",
-+ [31845] = "\xeb\x56", [31846] = "\xf2\xe8", [31847] = "\xeb\x57",
-+ [31848] = "\xf2\xe9", [31851] = "\xeb\x58", [31957] = "\xc4\xbb",
-+ [31958] = "\xeb\x59", [31959] = "\xf2\xea", [31961] = "\xc8\xb7",
-+ [31963] = "\xf2\xef", [31964] = "\xf2\xeb", [31968] = "\xf2\xec",
-+ [31970] = "\xeb\x5a", [31971] = "\xcb\xb1", [31972] = "\xcc\xc4",
-+ [31974] = "\xc6\xd0", [31975] = "\xeb\x5b", [31977] = "\xeb\x5c",
-+ [31986] = "\xeb\x5e", [31987] = "\xf2\xf0", [31990] = "\xf2\xf1",
-+ [31991] = "\xc6\xbe", [31992] = "\xf2\xee", [31993] = "\xf2\xed",
-+ [31995] = "\xeb\x5d", [31998] = "\xb2\xaa", [32001] = "\xeb\x5f",
-+ [32002] = "\xf2\xf9", [32005] = "\xf2\xf8", [32007] = "\xeb\x60",
-+ [32008] = "\xeb\x61", [32011] = "\xb1\xf5", [32012] = "\xeb\x62",
-+ [32013] = "\xeb\x63", [32014] = "\xeb\x64", [32015] = "\xf2\xf6",
-+ [32019] = "\xf2\xf5", [32022] = "\xf2\xf3", [32024] = "\xb3\xfb",
-+ [32026] = "\xf2\xf2", [32027] = "\xbc\xb2", [32028] = "\xb2\xa9",
-+ [32031] = "\xeb\x65", [32032] = "\xeb\x66", [32034] = "\xeb\x67",
-+ [32035] = "\xeb\x68", [32036] = "\xeb\x69", [32042] = "\xeb\x6a",
-+ [32043] = "\xb9\xe3", [32044] = "\xeb\x6b", [32045] = "\xeb\x6d",
-+ [32046] = "\xf2\xfc", [32047] = "\xf2\xfb", [32049] = "\xf2\xfa",
-+ [32050] = "\xeb\x6e", [32051] = "\xeb\x6f", [32052] = "\xf2\xf7",
-+ [32053] = "\xeb\x6c", [32054] = "\xf2\xfd", [32055] = "\xeb\x70",
-+ [32056] = "\xf2\xfe", [32058] = "\xeb\x71", [32064] = "\xf3\xa5",
-+ [32065] = "\xf3\xa4", [32067] = "\xeb\x72", [32068] = "\xeb\x73",
-+ [32073] = "\xf3\xa6", [32076] = "\xb1\xad", [32077] = "\xf3\xa1",
-+ [32078] = "\xf3\xa2", [32079] = "\xeb\x74", [32080] = "\xb9\xf4",
-+ [32081] = "\xcc\xb9", [32082] = "\xeb\x76", [32083] = "\xeb\x75",
-+ [32084] = "\xf3\xa3", [32085] = "\xeb\x77", [32089] = "\xeb\x78",
-+ [32090] = "\xeb\x79", [32091] = "\xeb\x7a", [32092] = "\xcb\xb2",
-+ [32095] = "\xf3\xab", [32096] = "\xeb\x7b", [32098] = "\xf3\xa7",
-+ [32102] = "\xeb\x7c", [32103] = "\xeb\x7d", [32106] = "\xf3\xac",
-+ [32107] = "\xeb\x7e", [32108] = "\xec\x21", [32110] = "\xec\x22",
-+ [32115] = "\xec\x23", [32116] = "\xec\x24", [32118] = "\xec\x25",
-+ [32119] = "\xf3\xa9", [32121] = "\xf3\xa8", [32122] = "\xec\x26",
-+ [32125] = "\xec\x27", [32126] = "\xec\x28", [32127] = "\xb7\xdc",
-+ [32130] = "\xec\x29", [32131] = "\xec\x2a", [32133] = "\xec\x2b",
-+ [32134] = "\xec\x2c", [32135] = "\xec\x2d", [32136] = "\xec\x2e",
-+ [32138] = "\xf3\xad", [32145] = "\xec\x2f", [32148] = "\xf3\xae",
-+ [32153] = "\xf3\xaf", [32154] = "\xec\x30", [32155] = "\xf3\xaa",
-+ [32156] = "\xec\x31", [32158] = "\xec\x32", [32159] = "\xf2\xf4",
-+ [32161] = "\xec\x33", [32162] = "\xf3\xb0", [32164] = "\xc4\xe1",
-+ [32165] = "\xec\x34", [32168] = "\xf3\xb4", [32169] = "\xec\x35",
-+ [32170] = "\xf3\xb5", [32171] = "\xf3\xb3", [32172] = "\xec\x36",
-+ [32175] = "\xec\x37", [32177] = "\xf3\xb2", [32178] = "\xf3\xb8",
-+ [32179] = "\xec\x38", [32180] = "\xf3\xb1", [32182] = "\xf3\xb6",
-+ [32183] = "\xec\x39", [32185] = "\xec\x3a", [32186] = "\xec\x3b",
-+ [32191] = "\xf3\xb7", [32195] = "\xf3\xba", [32196] = "\xec\x3c",
-+ [32197] = "\xec\x3d", [32198] = "\xec\x3e", [32199] = "\xec\x3f",
-+ [32201] = "\xf3\xb9", [32202] = "\xec\x40", [32206] = "\xec\x41",
-+ [32207] = "\xec\x42", [32208] = "\xec\x43", [32213] = "\xec\x44",
-+ [32214] = "\xf3\xbc", [32215] = "\xec\x45", [32217] = "\xec\x46",
-+ [32219] = "\xec\x47", [32221] = "\xf3\xbd", [32222] = "\xec\x48",
-+ [32223] = "\xf3\xbe", [32224] = "\xec\x49", [32226] = "\xcf\xc9",
-+ [32227] = "\xec\x4a", [32228] = "\xec\x4b", [32232] = "\xf3\xbb",
-+ [32233] = "\xc2\xeb", [32234] = "\xba\xed", [32237] = "\xf3\xbf",
-+ [32238] = "\xec\x4c", [32242] = "\xec\x4e", [32247] = "\xec\x4f",
-+ [32250] = "\xec\x4d", [32254] = "\xec\x50", [32256] = "\xec\x51",
-+ [32257] = "\xec\x52", [32258] = "\xec\x53", [32261] = "\xec\x54",
-+ [32262] = "\xec\x55", [32265] = "\xec\x56", [32266] = "\xf3\xc0",
-+ [32267] = "\xf3\xc1", [32268] = "\xec\x57", [32269] = "\xec\x58",
-+ [32270] = "\xf3\xc2", [32357] = "\xf3\xc3", [32360] = "\xb8\xb4",
-+ [32361] = "\xf3\xc4", [32362] = "\xec\x59", [32363] = "\xec\x5a",
-+ [32364] = "\xec\x5b", [32365] = "\xf3\xc5", [32367] = "\xbc\xaf",
-+ [32368] = "\xec\x5c", [32369] = "\xf3\xc6", [32370] = "\xec\x5d",
-+ [32371] = "\xec\x5e", [32372] = "\xec\x5f", [32373] = "\xec\x60",
-+ [32375] = "\xec\x61", [32376] = "\xf3\xc7", [32379] = "\xf3\xc8",
-+ [32380] = "\xf3\xc9", [32382] = "\xec\x62", [32383] = "\xec\x63",
-+ [32385] = "\xf3\xcc", [32386] = "\xf3\xca", [32387] = "\xcf\xbc",
-+ [32389] = "\xf3\xcb", [32390] = "\xec\x64", [32391] = "\xce\xef",
-+ [32392] = "\xec\x65", [32395] = "\xec\x66", [32397] = "\xf3\xcd",
-+ [32398] = "\xec\x67", [32399] = "\xce\xdb", [32404] = "\xec\x68",
-+ [32405] = "\xf3\xce", [32406] = "\xc7\xfe", [32408] = "\xec\x69",
-+ [32409] = "\xf3\xcf", [32410] = "\xf3\xd1", [32412] = "\xec\x6a",
-+ [32413] = "\xf3\xd2", [32414] = "\xec\x6b", [32415] = "\xec\x6c",
-+ [32416] = "\xec\x6d", [32419] = "\xec\x6e", [32420] = "\xec\x6f",
-+ [32421] = "\xec\x70", [32424] = "\xf3\xd0", [32425] = "\xb9\xed",
-+ [32426] = "\xcc\xcd", [32427] = "\xcb\xe3", [32428] = "\xd6\xf7",
-+ [32430] = "\xdd\xe0", [32431] = "\xcb\xfb", [32436] = "\xb2\xab",
-+ [32438] = "\xec\x71", [32440] = "\xec\x72", [32443] = "\xec\x73",
-+ [32444] = "\xf3\xd4", [32445] = "\xb5\xd0", [32446] = "\xf3\xd5",
-+ [32447] = "\xf3\xd6", [32448] = "\xf3\xd7", [32449] = "\xf4\x7e",
-+ [32450] = "\xb9\xf5", [32452] = "\xf3\xd8", [32453] = "\xec\x74",
-+ [32456] = "\xe0\xd4", [32457] = "\xcc\xdb", [32459] = "\xc2\xe3",
-+ [32460] = "\xf3\xd9", [32461] = "\xf3\xdb", [32462] = "\xf3\xda",
-+ [32463] = "\xec\x75", [32464] = "\xf3\xdc", [32468] = "\xec\x76",
-+ [32469] = "\xf3\xdd", [32471] = "\xec\x77", [32472] = "\xf3\xde",
-+ [32476] = "\xec\x78", [32477] = "\xec\x79", [32478] = "\xec\x7a",
-+ [32479] = "\xf3\xdf", [32480] = "\xec\x7b", [32481] = "\xec\x7c",
-+ [32482] = "\xec\x7d", [32484] = "\xf3\xe0", [32485] = "\xec\x7e",
-+ [32486] = "\xf3\xe1", [32487] = "\xf3\xe2", [32488] = "\xed\x21",
-+ [32489] = "\xf3\xe3", [32491] = "\xf3\xe4", [32492] = "\xf3\xe5",
-+ [32493] = "\xf3\xe6", [32495] = "\xed\x22", [32498] = "\xed\x23",
-+ [32499] = "\xed\x24", [32503] = "\xf3\xe7", [32504] = "\xf3\xe8",
-+ [32505] = "\xed\x25", [32510] = "\xc5\xa4", [32511] = "\xed\x26",
-+ [32512] = "\xed\x27", [32513] = "\xed\x28", [32514] = "\xed\x29",
-+ [32515] = "\xb8\xdd", [32516] = "\xed\x2a", [32517] = "\xf3\xea",
-+ [32518] = "\xed\x2b", [32519] = "\xed\x2c", [32521] = "\xed\x2d",
-+ [32522] = "\xed\x2e", [32523] = "\xed\x2f", [32527] = "\xed\x30",
-+ [32528] = "\xc1\xcd", [32529] = "\xf3\xeb", [32530] = "\xed\x31",
-+ [32534] = "\xed\x32", [32538] = "\xed\x33", [32539] = "\xed\x34",
-+ [32540] = "\xf3\xec", [32543] = "\xed\x35", [32545] = "\xed\x36",
-+ [32546] = "\xed\x37", [32548] = "\xed\x38", [32551] = "\xed\x39",
-+ [32553] = "\xed\x3a", [32554] = "\xed\x3b", [32555] = "\xc9\xa1",
-+ [32556] = "\xed\x3c", [32557] = "\xed\x3d", [32558] = "\xf3\xed",
-+ [32559] = "\xed\x3e", [32561] = "\xed\x3f", [32563] = "\xed\x40",
-+ [32564] = "\xed\x41", [32565] = "\xed\x42", [32566] = "\xed\x43",
-+ [32567] = "\xed\x44", [32570] = "\xf3\xee", [32571] = "\xe3\xb7",
-+ [32574] = "\xec\xda", [32575] = "\xf0\xed", [32578] = "\xf3\xef",
-+ [32579] = "\xed\x45", [32580] = "\xf3\xf0", [32581] = "\xed\x46",
-+ [32582] = "\xed\x47", [32583] = "\xed\x48", [32584] = "\xed\x49",
-+ [32586] = "\xed\x4a", [32589] = "\xed\x4b", [32590] = "\xed\x4c",
-+ [32591] = "\xf3\xf2", [32592] = "\xf3\xf3", [32593] = "\xf3\xf4",
-+ [32594] = "\xce\xf0", [32595] = "\xf3\xf1", [32598] = "\xf3\xf5",
-+ [32599] = "\xf3\xf6", [32600] = "\xed\x4d", [32601] = "\xed\x4e",
-+ [32602] = "\xf3\xf8", [32604] = "\xf3\xf7", [32605] = "\xed\x4f",
-+ [32606] = "\xed\x50", [32607] = "\xed\x51", [32608] = "\xed\x52",
-+ [32609] = "\xed\x53", [32610] = "\xf3\xfa", [32611] = "\xed\x54",
-+ [32613] = "\xed\x55", [32614] = "\xf3\xfb", [32615] = "\xf3\xf9",
-+ [32618] = "\xed\x56", [32621] = "\xed\x57", [32637] = "\xce\xb6",
-+ [32639] = "\xed\x58", [32640] = "\xed\x59", [32641] = "\xed\x5a",
-+ [32642] = "\xed\x5b", [32644] = "\xed\x5c", [32645] = "\xf3\xfc",
-+ [32646] = "\xed\x5d", [32647] = "\xed\x5e", [32652] = "\xf3\xfd",
-+ [32653] = "\xe3\xd4", [32654] = "\xed\x5f", [32656] = "\xf3\xfe",
-+ [32657] = "\xed\x60", [32658] = "\xed\x61", [32659] = "\xed\x62",
-+ [32661] = "\xed\x63"
-+};
-+
-+static const char from_ucs4_cjkcpt[261][2] =
-+{
-+ /* start = 0xf929, end = 0xfa2d */
-+ [ 0] = "\xf4\x45", [ 179] = "\xf4\x72", [ 229] = "\xf4\x34",
-+ [ 230] = "\xf4\x37", [ 231] = "\xf4\x38", [ 232] = "\xf4\x3d",
-+ [ 233] = "\xf4\x44", [ 234] = "\xf4\x47", [ 235] = "\xf4\x48",
-+ [ 236] = "\xf4\x4e", [ 237] = "\xf4\x4f", [ 238] = "\xf4\x53",
-+ [ 239] = "\xf4\x55", [ 240] = "\xf4\x56", [ 241] = "\xf4\x57",
-+ [ 242] = "\xf4\x58", [ 243] = "\xf4\x5a", [ 244] = "\xf4\x5b",
-+ [ 245] = "\xf4\x5e", [ 246] = "\xf4\x60", [ 247] = "\xf4\x62",
-+ [ 248] = "\xf4\x63", [ 249] = "\xf4\x65", [ 250] = "\xf4\x69",
-+ [ 251] = "\xf4\x6a", [ 252] = "\xf4\x6b", [ 253] = "\xf4\x6d",
-+ [ 254] = "\xf4\x6f", [ 255] = "\xf4\x70", [ 256] = "\xf4\x73",
-+ [ 257] = "\xf4\x77", [ 258] = "\xf4\x78", [ 259] = "\xf4\x79",
-+ [ 260] = "\xf4\x7d"
-+};
-+
-+static const char from_ucs4_extra[229][2] =
-+{
-+ /* start = 0xff01, end = 0xffe5 */
-+ [ 0] = "\xa1\xaa", [ 1] = "\xf4\x2a", [ 2] = "\xa1\xf4",
-+ [ 3] = "\xa1\xf0", [ 4] = "\xa1\xf3", [ 5] = "\xa1\xf5",
-+ [ 6] = "\xf4\x29", [ 7] = "\xa1\xca", [ 8] = "\xa1\xcb",
-+ [ 9] = "\xa1\xf6", [ 10] = "\xa1\xdc", [ 11] = "\xa1\xa4",
-+ [ 12] = "\xa1\xdd", [ 13] = "\xa1\xa5", [ 14] = "\xa1\xbf",
-+ [ 15] = "\xa3\xb0", [ 16] = "\xa3\xb1", [ 17] = "\xa3\xb2",
-+ [ 18] = "\xa3\xb3", [ 19] = "\xa3\xb4", [ 20] = "\xa3\xb5",
-+ [ 21] = "\xa3\xb6", [ 22] = "\xa3\xb7", [ 23] = "\xa3\xb8",
-+ [ 24] = "\xa3\xb9", [ 25] = "\xa1\xa7", [ 26] = "\xa1\xa8",
-+ [ 27] = "\xa1\xe3", [ 28] = "\xa1\xe1", [ 29] = "\xa1\xe4",
-+ [ 30] = "\xa1\xa9", [ 31] = "\xa1\xf7", [ 32] = "\xa3\xc1",
-+ [ 33] = "\xa3\xc2", [ 34] = "\xa3\xc3", [ 35] = "\xa3\xc4",
-+ [ 36] = "\xa3\xc5", [ 37] = "\xa3\xc6", [ 38] = "\xa3\xc7",
-+ [ 39] = "\xa3\xc8", [ 40] = "\xa3\xc9", [ 41] = "\xa3\xca",
-+ [ 42] = "\xa3\xcb", [ 43] = "\xa3\xcc", [ 44] = "\xa3\xcd",
-+ [ 45] = "\xa3\xce", [ 46] = "\xa3\xcf", [ 47] = "\xa3\xd0",
-+ [ 48] = "\xa3\xd1", [ 49] = "\xa3\xd2", [ 50] = "\xa3\xd3",
-+ [ 51] = "\xa3\xd4", [ 52] = "\xa3\xd5", [ 53] = "\xa3\xd6",
-+ [ 54] = "\xa3\xd7", [ 55] = "\xa3\xd8", [ 56] = "\xa3\xd9",
-+ [ 57] = "\xa3\xda", [ 58] = "\xa1\xce", [ 59] = "\xa1\xc0",
-+ [ 60] = "\xa1\xcf", [ 61] = "\xa1\xb0", [ 62] = "\xa1\xb2",
-+ [ 63] = "\xa1\xae", [ 64] = "\xa3\xe1", [ 65] = "\xa3\xe2",
-+ [ 66] = "\xa3\xe3", [ 67] = "\xa3\xe4", [ 68] = "\xa3\xe5",
-+ [ 69] = "\xa3\xe6", [ 70] = "\xa3\xe7", [ 71] = "\xa3\xe8",
-+ [ 72] = "\xa3\xe9", [ 73] = "\xa3\xea", [ 74] = "\xa3\xeb",
-+ [ 75] = "\xa3\xec", [ 76] = "\xa3\xed", [ 77] = "\xa3\xee",
-+ [ 78] = "\xa3\xef", [ 79] = "\xa3\xf0", [ 80] = "\xa3\xf1",
-+ [ 81] = "\xa3\xf2", [ 82] = "\xa3\xf3", [ 83] = "\xa3\xf4",
-+ [ 84] = "\xa3\xf5", [ 85] = "\xa3\xf6", [ 86] = "\xa3\xf7",
-+ [ 87] = "\xa3\xf8", [ 88] = "\xa3\xf9", [ 89] = "\xa3\xfa",
-+ [ 90] = "\xa1\xd0", [ 91] = "\xa1\xc3", [ 92] = "\xa1\xd1",
-+ [ 93] = "\xa1\xc1", [ 96] = "\x8e\xa1", [ 97] = "\x8e\xa2",
-+ [ 98] = "\x8e\xa3", [ 99] = "\x8e\xa4", [ 100] = "\x8e\xa5",
-+ [ 101] = "\x8e\xa6", [ 102] = "\x8e\xa7", [ 103] = "\x8e\xa8",
-+ [ 104] = "\x8e\xa9", [ 105] = "\x8e\xaa", [ 106] = "\x8e\xab",
-+ [ 107] = "\x8e\xac", [ 108] = "\x8e\xad", [ 109] = "\x8e\xae",
-+ [ 110] = "\x8e\xaf", [ 111] = "\x8e\xb0", [ 112] = "\x8e\xb1",
-+ [ 113] = "\x8e\xb2", [ 114] = "\x8e\xb3", [ 115] = "\x8e\xb4",
-+ [ 116] = "\x8e\xb5", [ 117] = "\x8e\xb6", [ 118] = "\x8e\xb7",
-+ [ 119] = "\x8e\xb8", [ 120] = "\x8e\xb9", [ 121] = "\x8e\xba",
-+ [ 122] = "\x8e\xbb", [ 123] = "\x8e\xbc", [ 124] = "\x8e\xbd",
-+ [ 125] = "\x8e\xbe", [ 126] = "\x8e\xbf", [ 127] = "\x8e\xc0",
-+ [ 128] = "\x8e\xc1", [ 129] = "\x8e\xc2", [ 130] = "\x8e\xc3",
-+ [ 131] = "\x8e\xc4", [ 132] = "\x8e\xc5", [ 133] = "\x8e\xc6",
-+ [ 134] = "\x8e\xc7", [ 135] = "\x8e\xc8", [ 136] = "\x8e\xc9",
-+ [ 137] = "\x8e\xca", [ 138] = "\x8e\xcb", [ 139] = "\x8e\xcc",
-+ [ 140] = "\x8e\xcd", [ 141] = "\x8e\xce", [ 142] = "\x8e\xcf",
-+ [ 143] = "\x8e\xd0", [ 144] = "\x8e\xd1", [ 145] = "\x8e\xd2",
-+ [ 146] = "\x8e\xd3", [ 147] = "\x8e\xd4", [ 148] = "\x8e\xd5",
-+ [ 149] = "\x8e\xd6", [ 150] = "\x8e\xd7", [ 151] = "\x8e\xd8",
-+ [ 152] = "\x8e\xd9", [ 153] = "\x8e\xda", [ 154] = "\x8e\xdb",
-+ [ 155] = "\x8e\xdc", [ 156] = "\x8e\xdd", [ 157] = "\x8e\xde",
-+ [ 158] = "\x8e\xdf", [ 223] = "\xa1\xf1", [ 224] = "\xa1\xf2",
-+ [ 225] = "\xa2\xcc", [ 226] = "\xa1\xb1", [ 227] = "\xa2\x43",
-+ [ 228] = "\xa1\xef"
-+};
-+
-+/* Definitions used in the body of the `gconv' function. */
-+#define CHARSET_NAME "EUC-JP-MS//"
-+#define FROM_LOOP from_eucjp_ms
-+#define TO_LOOP to_eucjp_ms
-+#define DEFINE_INIT 1
-+#define DEFINE_FINI 1
-+#define MIN_NEEDED_FROM 1
-+#define MAX_NEEDED_FROM 3
-+#define MIN_NEEDED_TO 4
-+
-+
-+/* First define the conversion function from EUC-JP-MS to UCS4. */
-+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
-+#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
-+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
-+#define LOOPFCT FROM_LOOP
-+#define BODY \
-+ { \
-+ uint32_t ch = (uint32_t)inptr[0] & 0xff; \
-+ \
-+ if (ch < 0x8e || (ch >= 0x90 && ch <= 0x9f)) \
-+ ++inptr; \
-+ else if (ch == 0xff) \
-+ { \
-+ /* This is illegal. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ++inptr; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ else \
-+ { \
-+ /* Two or more byte character. First test whether the next \
-+ character is also available. */ \
-+ unsigned char ch2; \
-+ \
-+ if (__builtin_expect (inptr + 1 >= inend, 0)) \
-+ { \
-+ /* The second character is not available. Store the \
-+ intermediate result. */ \
-+ result = __GCONV_INCOMPLETE_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ch2 = (unsigned char)inptr[1]; \
-+ \
-+ /* All second bytes of a multibyte character must be >= 0xa1. */ \
-+ if (__builtin_expect (ch2 < 0xa1, 0)) \
-+ { \
-+ /* This is an illegal character. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ ++inptr; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ \
-+ if (__builtin_expect(ch == 0x8e, 0)) \
-+ { \
-+ /* This is code set 2: half-width katakana. */ \
-+ ch = jisx0201_to_ucs4 (ch2); \
-+ /*if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR)*/ \
-+ if (__builtin_expect (ch == __UNKNOWN_10646_CHAR, 0)) \
-+ { \
-+ /* Illegal character. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ /* This is an illegal character. */ \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ } \
-+ \
-+ inptr += 2; \
-+ } \
-+ else \
-+ { \
-+ const unsigned char *endp; \
-+ int mblen = 1; \
-+ \
-+ if (__builtin_expect(ch == 0x8f, 0)) \
-+ { \
-+ if (inend - inptr < 3) \
-+ ch = 0; \
-+ else \
-+ { \
-+ unsigned char ch3 = (unsigned char)inptr[2]; \
-+ mblen = 3; \
-+ \
-+ if (__builtin_expect(ch3 == 0xff, 0) \
-+ || __builtin_expect(ch3 < 0xa1, 0)) \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ else if (ch2 <= 0xf2) \
-+ { \
-+ endp = inptr + 1; \
-+ \
-+ /* This is code set 3: JIS X 0212-1990. */ \
-+ ch = jisx0212_to_ucs4 (&endp, inend - endp, 0x80); \
-+ \
-+ if (ch == 0x00a6) /* BROKEN BAR */ \
-+ ch = 0xffe4; /* FULLWIDTH BROKEN BAR */ \
-+ else if (ch == __UNKNOWN_10646_CHAR) \
-+ endp -= 1; \
-+ } \
-+ else if (ch2 <= 0xf4) \
-+ { \
-+ int idx = ((ch2-0xf3)*94 + ch3-0xa1) - (94-12); \
-+ \
-+ if (0 <= idx && idx < 12 + 94) \
-+ { \
-+ if ((ch = cjk_block_ibm[idx]) != 0) \
-+ endp = inptr + mblen; \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ else if (ch2 <= 0xfe) \
-+ { \
-+ ch = 0xe3ac + (ch2 - 0xf5) * 94 + (ch3 - 0xa1); \
-+ endp = inptr + mblen; \
-+ } \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ } \
-+ else if (__builtin_expect(0xa1 <= ch, 1)) \
-+ { \
-+ mblen = 2; \
-+ \
-+ if (inend - inptr < 2) \
-+ ch = 0; \
-+ else if (__builtin_expect(ch2 == 0xff, 0)) \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ else if (ch <= 0xa8) \
-+ { \
-+ if ((ch = cjk_block1[(ch-0xa1)*94 + (ch2-0xa1)]) != 0) \
-+ endp = inptr + mblen; \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ else if (ch == 0xad) \
-+ { \
-+ if ((ch = cjk_block2[(ch-0xad)*94 + (ch2-0xa1)]) != 0) \
-+ endp = inptr + mblen; \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ else if (ch <= 0xf4) \
-+ { \
-+ endp = inptr; \
-+ \
-+ /* This is code set 1: JIS X 0208. */ \
-+ ch = jisx0208_to_ucs4 (&endp, inend - inptr, 0x80); \
-+ } \
-+ else if (ch <= 0xfe) \
-+ { \
-+ ch = 0xe000 + (ch - 0xf5) * 94 + (ch2 - 0xa1); \
-+ endp = inptr + mblen; \
-+ } \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ } \
-+ else \
-+ ch = __UNKNOWN_10646_CHAR; \
-+ \
-+ if (__builtin_expect (ch, 1) == 0) \
-+ { \
-+ /* Not enough input available. */ \
-+ result = __GCONV_INCOMPLETE_INPUT; \
-+ break; \
-+ } \
-+ if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \
-+ { \
-+ /* Illegal character. */ \
-+ if (! ignore_errors_p ()) \
-+ { \
-+ /* This is an illegal character. */ \
-+ result = __GCONV_ILLEGAL_INPUT; \
-+ break; \
-+ } \
-+ \
-+ inptr += mblen; \
-+ ++*irreversible; \
-+ continue; \
-+ } \
-+ inptr = endp; \
-+ } \
-+ } \
-+ \
-+ put32 (outptr, ch); \
-+ outptr += 4; \
-+ }
-+#define LOOP_NEED_FLAGS
-+#include <iconv/loop.c>
-+
-+
-+/* Next, define the other direction. */
-+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
-+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
-+#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
-+#define LOOPFCT TO_LOOP
-+#define BODY \
-+ { \
-+ uint32_t ch = get32 (inptr); \
-+ const unsigned char *cp; \
-+ unsigned char pua[2]; \
-+ \
-+ if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \
-+ { \
-+ if (ch >= 0x0100 && ch <= 0x045f) \
-+ cp = from_ucs4_greek[ch - 0x0100]; \
-+ else if (ch >= 0x2010 && ch <= 0x9fa5) \
-+ cp = from_ucs4_cjk[ch - 0x2010]; \
-+ else if (ch >= 0xe000 && ch <= 0xe757) \
-+ { \
-+ if (ch < 0xe3ac) \
-+ { \
-+ pua[0] = (ch - 0xe000) / 94 + 0xf5; \
-+ pua[1] = (ch - 0xe000) % 94 + 0xa1; \
-+ } \
-+ else \
-+ { \
-+ pua[0] = (ch - 0xe3ac) / 94 + 0xf5; \
-+ pua[1] = (ch - 0xe3ac) % 94 + 0x21; \
-+ } \
-+ cp = (const unsigned char *)&pua[0]; \
-+ } \
-+ else if (ch >= 0xf929 && ch <= 0xfa2d) \
-+ cp = from_ucs4_cjkcpt[ch - 0xf929]; \
-+ else if (__builtin_expect (ch >= 0xff01, 1) \
-+ && __builtin_expect (ch <= 0xffe5, 1)) \
-+ cp = from_ucs4_extra[ch - 0xff01]; \
-+ else \
-+ { \
-+ UNICODE_TAG_HANDLER (ch, 4); \
-+ /* Illegal character. */ \
-+ cp = ""; \
-+ } \
-+ } \
-+ else \
-+ cp = from_ucs4_lat1[ch]; \
-+ \
-+ if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \
-+ { \
-+ /* Illegal character. */ \
-+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
-+ } \
-+ else \
-+ { \
-+ *outptr = cp[0]; \
-+ /* Now test for a possible second byte and write this if possible. */\
-+ if (cp[1] != '\0') \
-+ { \
-+ if (__builtin_expect (outptr + 1 >= outend, 0)) \
-+ { \
-+ /* The result does not fit into the buffer. */ \
-+ result = __GCONV_FULL_OUTPUT; \
-+ break; \
-+ } \
-+ if (__builtin_expect (cp[1] < 0x80, 0)) \
-+ { \
-+ if (__builtin_expect (outptr + 2 >= outend, 0)) \
-+ { \
-+ /* The result does not fit into the buffer. */ \
-+ result = __GCONV_FULL_OUTPUT; \
-+ break; \
-+ } \
-+ *outptr = 0x8f; \
-+ *++outptr = cp[0]; \
-+ *++outptr = cp[1] | 0x80; \
-+ } \
-+ else \
-+ *++outptr = cp[1]; \
-+ } \
-+ ++outptr; \
-+ } \
-+ \
-+ inptr += 4; \
-+ }
-+#define LOOP_NEED_FLAGS
-+#include <iconv/loop.c>
-+
-+
-+/* Now define the toplevel functions. */
-+#include <iconv/skeleton.c>
---- glibc-2.3.2/iconvdata/euc-kr.c 2002-12-02 16:26:10.000000000 -0500
-+++ glibc-2.3.2/iconvdata/euc-kr.c 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Mapping tables for EUC-KR handling.
-- Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jungshik Shin <jshin@pantheon.yale.edu>
- and Ulrich Drepper <drepper@cygnus.com>, 1998.
-@@ -25,6 +25,7 @@
-
-
- static inline void
-+__attribute ((always_inline))
- euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
- {
- if (ch > 0x9f)
---- glibc-2.3.2/iconvdata/euc-tw.c 2002-12-02 16:26:10.000000000 -0500
-+++ glibc-2.3.2/iconvdata/euc-tw.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Mapping tables for EUC-TW handling.
-- Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -143,7 +143,7 @@
- if (__builtin_expect (found, 1) == 0) \
- { \
- /* We ran out of space. */ \
-- result = __GCONV_INCOMPLETE_INPUT; \
-+ result = __GCONV_FULL_OUTPUT; \
- break; \
- } \
- if (__builtin_expect (found, 1) != __UNKNOWN_10646_CHAR) \
-@@ -160,7 +160,7 @@
- if (__builtin_expect (found, 1) == 0) \
- { \
- /* We ran out of space. */ \
-- result = __GCONV_INCOMPLETE_INPUT; \
-+ result = __GCONV_FULL_OUTPUT; \
- break; \
- } \
- if (__builtin_expect (found, 0) == __UNKNOWN_10646_CHAR) \
---- glibc-2.3.2/iconvdata/extra-module.mk 2001-03-18 03:02:29.000000000 -0500
-+++ glibc-2.3.2/iconvdata/extra-module.mk 2003-04-28 08:20:35.000000000 -0400
-@@ -3,7 +3,8 @@
-
- extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines))
-
--$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))
-+$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\
-+ $(common-objpfx)shlib.lds
- $(build-module)
-
- # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
---- glibc-2.3.2/iconvdata/gb2312.h 2001-07-07 15:20:59.000000000 -0400
-+++ glibc-2.3.2/iconvdata/gb2312.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for GB2312 conversion.
-- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -30,6 +30,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- gb2312_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
- {
- unsigned char ch = *(*s);
-@@ -67,6 +68,7 @@
- extern const char __gb2312_from_ucs4_tab9[][2];
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_gb2312 (uint32_t wch, unsigned char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/gconv-modules 2003-01-14 04:32:35.000000000 -0500
-+++ glibc-2.3.2/iconvdata/gconv-modules 2003-08-21 08:37:01.000000000 -0400
-@@ -393,6 +393,8 @@
- alias ISO8859-15// ISO-8859-15//
- alias ISO885915// ISO-8859-15//
- alias ISO-IR-203// ISO-8859-15//
-+alias ISO_8859-15// ISO-8859-15//
-+alias LATIN-9// ISO-8859-15//
- alias ISO_8859-15:1998// ISO-8859-15//
- module ISO-8859-15// INTERNAL ISO8859-15 1
- module INTERNAL ISO-8859-15// ISO8859-15 1
-@@ -403,6 +405,8 @@
- alias ISO-IR-226// ISO-8859-16//
- alias LATIN10// ISO-8859-16//
- alias L10// ISO-8859-16//
-+alias ISO_8859-16:2001// ISO-8859-16//
-+alias ISO_8859-16// ISO-8859-16//
- module ISO-8859-16// INTERNAL ISO8859-16 1
- module INTERNAL ISO-8859-16// ISO8859-16 1
-
-@@ -433,13 +437,21 @@
- # from to module cost
- alias SHIFT-JIS// SJIS//
- alias SHIFT_JIS// SJIS//
--alias CP932// SJIS//
- alias MS_KANJI// SJIS//
- alias CSSHIFTJIS// SJIS//
- module SJIS// INTERNAL SJIS 1
- module INTERNAL SJIS// SJIS 1
-
- # from to module cost
-+alias WINDOWS-31J// CP932//
-+alias MS932// CP932//
-+alias SJIS-OPEN// CP932//
-+alias SJIS-WIN// CP932//
-+alias CSWINDOWS31J// CP932//
-+module CP932// INTERNAL CP932 1
-+module INTERNAL CP932// CP932 1
-+
-+# from to module cost
- alias KOI8// KOI-8//
- module KOI-8// INTERNAL KOI-8 1
- module INTERNAL KOI-8// KOI-8 1
-@@ -996,6 +1008,7 @@
- module INTERNAL IBM1046// IBM1046 1
-
- # from to module cost
-+alias IBM-1047// IBM1047//
- alias CP1047// IBM1047//
- alias 1047// IBM1047//
- alias OSF10020417// IBM1047//
-@@ -1100,6 +1113,13 @@
- module INTERNAL BIG5HKSCS// BIG5HKSCS 1
-
- # from to module cost
-+alias EUCJP-MS// EUC-JP-MS//
-+alias EUCJP-OPEN// EUC-JP-MS//
-+alias EUCJP-WIN// EUC-JP-MS//
-+module EUC-JP-MS// INTERNAL EUC-JP-MS 1
-+module INTERNAL EUC-JP-MS// EUC-JP-MS 1
-+
-+# from to module cost
- alias EUCJP// EUC-JP//
- alias CSEUCPKDFMTJAPANESE// EUC-JP//
- alias OSF00030010// EUC-JP//
-@@ -1122,6 +1142,8 @@
- # from to module cost
- alias GB13000// GBK//
- alias CP936// GBK//
-+alias MS936// GBK//
-+alias WINDOWS-936// GBK//
- module GBK// INTERNAL GBK 1
- module INTERNAL GBK// GBK 1
-
---- glibc-2.3.2/iconvdata/iso-ir-165.h 2001-07-07 15:21:02.000000000 -0400
-+++ glibc-2.3.2/iconvdata/iso-ir-165.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Tables for conversion to and from ISO-IR-165.
- converting from UCS using gaps.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
-@@ -40,6 +40,7 @@
- /* XXX If we at some point need an offset value to decode the byte
- sequences another parameter can be added. */
- static inline uint32_t
-+__attribute ((always_inline))
- isoir165_to_ucs4 (const unsigned char **s, size_t avail)
- {
- unsigned char ch = *(*s);
-@@ -70,6 +71,7 @@
- extern const char __isoir165_from_tab[];
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_isoir165 (uint32_t wch, char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/jis0201.h 2001-07-07 15:21:02.000000000 -0400
-+++ glibc-2.3.2/iconvdata/jis0201.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for JISX0201 conversion.
-- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -26,6 +26,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- jisx0201_to_ucs4 (char ch)
- {
- uint32_t val = __jisx0201_to_ucs4[(unsigned char) ch];
-@@ -38,6 +39,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_jisx0201 (uint32_t wch, char *s)
- {
- char ch;
---- glibc-2.3.2/iconvdata/jis0208.h 2001-07-07 15:21:02.000000000 -0400
-+++ glibc-2.3.2/iconvdata/jis0208.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for JISX0208 conversion.
-- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -43,6 +43,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
- {
- unsigned char ch = *(*s);
-@@ -70,6 +71,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_jisx0208 (uint32_t wch, char *s, size_t avail)
- {
- unsigned int ch = (unsigned int) wch;
---- glibc-2.3.2/iconvdata/jis0212.h 2001-07-07 15:21:02.000000000 -0400
-+++ glibc-2.3.2/iconvdata/jis0212.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for JISX0212 conversion.
-- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -42,6 +42,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
- {
- const struct jisx0212_idx *rp = __jisx0212_to_ucs_idx;
-@@ -77,6 +78,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_jisx0212 (uint32_t wch, char *s, size_t avail)
- {
- const struct jisx0212_idx *rp = __jisx0212_from_ucs_idx;
---- glibc-2.3.2/iconvdata/jisx0213.h 2002-04-20 03:41:04.000000000 -0400
-+++ glibc-2.3.2/iconvdata/jisx0213.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Functions for JISX0213 conversion.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Bruno Haible <bruno@clisp.org>, 2002.
-
-@@ -32,6 +32,7 @@
- #define NELEMS(arr) (sizeof (arr) / sizeof (arr[0]))
-
- static inline uint32_t
-+__attribute ((always_inline))
- jisx0213_to_ucs4 (unsigned int row, unsigned int col)
- {
- uint32_t val;
-@@ -64,6 +65,7 @@
- }
-
- static inline uint16_t
-+__attribute ((always_inline))
- ucs4_to_jisx0213 (uint32_t ucs)
- {
- if (ucs < NELEMS (__jisx0213_from_ucs_level1) << 6)
---- glibc-2.3.2/iconvdata/ksc5601.h 2001-07-07 15:21:02.000000000 -0400
-+++ glibc-2.3.2/iconvdata/ksc5601.h 2003-08-21 08:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Access functions for KS C 5601-1992 based encoding conversion.
-- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000, 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
-@@ -44,6 +44,7 @@
-
-
- static inline uint32_t
-+__attribute ((always_inline))
- ksc5601_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
- {
- unsigned char ch = **s;
-@@ -85,6 +86,7 @@
- }
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_ksc5601_hangul (uint32_t wch, unsigned char *s, size_t avail)
- {
- int l = 0;
-@@ -116,6 +118,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_ksc5601_hanja (uint32_t wch, unsigned char *s, size_t avail)
- {
- int l = 0;
-@@ -146,6 +149,7 @@
- }
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_ksc5601_sym (uint32_t wch, unsigned char *s, size_t avail)
- {
- int l = 0;
-@@ -177,6 +181,7 @@
-
-
- static inline size_t
-+__attribute ((always_inline))
- ucs4_to_ksc5601 (uint32_t wch, unsigned char *s, size_t avail)
- {
- if (wch >= 0xac00 && wch <= 0xd7a3)
---- glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 2001-09-20 01:06:15.000000000 -0400
-+++ glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 1969-12-31 19:00:00.000000000 -0500
-@@ -1,14 +0,0 @@
-- ! " # $ % & ' ( ) * + , - . / 0
--1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
--B C D E F G H I J K L M N O P Q R
--S T U V W X Y Z [ \ ] ^ _ ` a b c
--d e f g h i j k l m n o p q r s t
--u v w x y z { | } ~  € ‚ ƒ „ …
--† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • –
--— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §
--¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸
--¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
--Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
--Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë
--ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü
--ý þ ÿ
---- glibc-2.3.2/iconvdata/tst-tables.sh 2003-01-14 04:26:51.000000000 -0500
-+++ glibc-2.3.2/iconvdata/tst-tables.sh 2003-08-21 08:37:01.000000000 -0400
-@@ -209,6 +209,7 @@
- # Multibyte encodings come here
- #
- SJIS SHIFT_JIS
-+ CP932 WINDOWS-31J
- #IBM932 This converter looks quite strange
- #IBM943 This converter looks quite strange
- EUC-KR
-@@ -217,6 +218,7 @@
- BIG5
- BIG5HKSCS BIG5-HKSCS
- EUC-JP
-+ EUC-JP-MS
- EUC-CN GB2312
- GBK
- EUC-TW
---- glibc-2.3.2/iconvdata/utf-7.c 2002-06-28 15:43:39.000000000 -0400
-+++ glibc-2.3.2/iconvdata/utf-7.c 2003-08-21 08:37:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Conversion module for UTF-7.
-- Copyright (C) 2000-2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
-
-@@ -93,7 +93,7 @@
-
-
- /* Converts a value in the range 0..63 to a base64 encoded char. */
--static inline unsigned char
-+static unsigned char
- base64 (unsigned int i)
- {
- if (i < 26)
---- glibc-2.3.2/include/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/include/atomic.h 2003-05-12 12:13:04.000000000 -0400
-@@ -0,0 +1,246 @@
-+/* Internal macros for atomic operations for GNU C Library.
-+ Copyright (C) 2002, 2003 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.
-+
-+ 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 _ATOMIC_H
-+#define _ATOMIC_H 1
-+
-+#include <stdlib.h>
-+
-+#include <bits/atomic.h>
-+
-+/* Wrapper macros to call pre_NN_post (mem, ...) where NN is the
-+ bit width of *MEM. The calling macro puts parens around MEM
-+ and following args. */
-+#define __atomic_val_bysize(pre, post, mem, ...) \
-+ ({ \
-+ __typeof (*mem) __result; \
-+ if (sizeof (*mem) == 1) \
-+ __result = pre##_8_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 2) \
-+ __result = pre##_16_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 4) \
-+ __result = pre##_32_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = pre##_64_##post (mem, __VA_ARGS__); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+#define __atomic_bool_bysize(pre, post, mem, ...) \
-+ ({ \
-+ int __result; \
-+ if (sizeof (*mem) == 1) \
-+ __result = pre##_8_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 2) \
-+ __result = pre##_16_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 4) \
-+ __result = pre##_32_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = pre##_64_##post (mem, __VA_ARGS__); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+
-+/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
-+ Return the old *MEM value. */
-+#if !defined atomic_compare_and_exchange_val_acq \
-+ && defined __arch_compare_and_exchange_val_32_acq
-+# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_val,acq, \
-+ mem, newval, oldval)
-+#endif
-+
-+
-+#ifndef atomic_compare_and_exchange_val_rel
-+# define atomic_compare_and_exchange_val_rel(mem, oldval, newval) \
-+ atomic_compare_and_exchange_val_acq (mem, oldval, newval)
-+#endif
-+
-+
-+/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
-+ Return zero if *MEM was changed or non-zero if no exchange happened. */
-+#ifndef atomic_compare_and_exchange_bool_acq
-+# ifdef __arch_compare_and_exchange_bool_32_acq
-+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ __atomic_bool_bysize (__arch_compare_and_exchange_bool,acq, \
-+ mem, newval, oldval)
-+# else
-+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ /* Cannot use __oldval here, because macros later in this file might \
-+ call this macro with __oldval argument. */ \
-+ __typeof (oldval) __old = (oldval); \
-+ atomic_compare_and_exchange_val_acq (mem, newval, __old) != __old; \
-+ })
-+# endif
-+#endif
-+
-+
-+#ifndef atomic_compare_and_exchange_bool_rel
-+# define atomic_compare_and_exchange_bool_rel(mem, oldval, newval) \
-+ atomic_compare_and_exchange_bool_acq (mem, oldval, newval)
-+#endif
-+
-+
-+/* Store NEWVALUE in *MEM and return the old value. */
-+#ifndef atomic_exchange_acq
-+# define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __value, \
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval; })
-+#endif
-+
-+#ifndef atomic_exchange_rel
-+# define atomic_exchange_rel(mem, newvalue) atomic_exchange_acq (mem, newvalue)
-+#endif
-+
-+
-+/* Add VALUE to *MEM and return the old value of *MEM. */
-+#ifndef atomic_exchange_and_add
-+# define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (value); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ + __value,\
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval; })
-+#endif
-+
-+
-+#ifndef atomic_add
-+# define atomic_add(mem, value) (void) atomic_exchange_and_add ((mem), (value))
-+#endif
-+
-+
-+#ifndef atomic_increment
-+# define atomic_increment(mem) atomic_add ((mem), 1)
-+#endif
-+
-+
-+/* Add one to *MEM and return true iff it's now zero. */
-+#ifndef atomic_increment_and_test
-+# define atomic_increment_and_test(mem) \
-+ (atomic_exchange_and_add ((mem), 1) + 1 == 0)
-+#endif
-+
-+
-+#ifndef atomic_decrement
-+# define atomic_decrement(mem) atomic_add ((mem), -1)
-+#endif
-+
-+
-+/* Subtract 1 from *MEM and return true iff it's now zero. */
-+#ifndef atomic_decrement_and_test
-+# define atomic_decrement_and_test(mem) \
-+ (atomic_exchange_and_add ((mem), -1) == 1)
-+#endif
-+
-+
-+/* Decrement *MEM if it is > 0, and return the old value. */
-+#ifndef atomic_decrement_if_positive
-+# define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ \
-+ do \
-+ { \
-+ __oldval = *__memp; \
-+ if (__builtin_expect (__oldval <= 0, 0)) \
-+ break; \
-+ } \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ - 1, \
-+ __oldval),\
-+ 0));\
-+ __oldval; })
-+#endif
-+
-+
-+#ifndef atomic_add_negative
-+# define atomic_add_negative(mem, value) \
-+ ({ __typeof (value) __aan_value = (value); \
-+ atomic_exchange_and_add (mem, __aan_value) < -__aan_value; })
-+#endif
-+
-+
-+#ifndef atomic_add_zero
-+# define atomic_add_zero(mem, value) \
-+ ({ __typeof (value) __aaz_value = (value); \
-+ atomic_exchange_and_add (mem, __aaz_value) == -__aaz_value; })
-+#endif
-+
-+
-+#ifndef atomic_bit_set
-+# define atomic_bit_set(mem, bit) \
-+ (void) atomic_bit_test_set(mem, bit)
-+#endif
-+
-+
-+#ifndef atomic_bit_test_set
-+# define atomic_bit_test_set(mem, bit) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __mask = ((__typeof (*(mem))) 1 << (bit)); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ | __mask, \
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval & __mask; })
-+#endif
-+
-+
-+#ifndef atomic_full_barrier
-+# define atomic_full_barrier() __asm ("" ::: "memory")
-+#endif
-+
-+
-+#ifndef atomic_read_barrier
-+# define atomic_read_barrier() atomic_full_barrier ()
-+#endif
-+
-+
-+#ifndef atomic_write_barrier
-+# define atomic_write_barrier() atomic_full_barrier ()
-+#endif
-+
-+#endif /* atomic.h */
---- glibc-2.3.2/include/ctype.h 2002-09-02 14:48:03.000000000 -0400
-+++ glibc-2.3.2/include/ctype.h 2003-08-21 08:37:02.000000000 -0400
-@@ -25,31 +25,43 @@
- CTYPE_EXTERN_INLINE const uint16_t ** __attribute__ ((const))
- __ctype_b_loc (void)
- {
-- const uint16_t **tablep =
-- (const uint16_t **) __libc_tsd_address (CTYPE_B);
-- if (__builtin_expect (*tablep == NULL, 0))
-- *tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128;
-- return tablep;
-+ union
-+ {
-+ void **ptr;
-+ const uint16_t **tablep;
-+ } u;
-+ u.ptr = __libc_tsd_address (CTYPE_B);
-+ if (__builtin_expect (*u.tablep == NULL, 0))
-+ *u.tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128;
-+ return u.tablep;
- }
-
- CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const))
- __ctype_toupper_loc (void)
- {
-- const int32_t **tablep =
-- (const int32_t **) __libc_tsd_address (CTYPE_TOUPPER);
-- if (__builtin_expect (*tablep == NULL, 0))
-- *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128);
-- return tablep;
-+ union
-+ {
-+ void **ptr;
-+ const int32_t **tablep;
-+ } u;
-+ u.ptr = __libc_tsd_address (CTYPE_TOUPPER);
-+ if (__builtin_expect (*u.tablep == NULL, 0))
-+ *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128);
-+ return u.tablep;
- }
-
- CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const))
- __ctype_tolower_loc (void)
- {
-- const int32_t **tablep =
-- (const int32_t **) __libc_tsd_address (CTYPE_TOLOWER);
-- if (__builtin_expect (*tablep == NULL, 0))
-- *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128);
-- return tablep;
-+ union
-+ {
-+ void **ptr;
-+ const int32_t **tablep;
-+ } u;
-+ u.ptr = __libc_tsd_address (CTYPE_TOLOWER);
-+ if (__builtin_expect (*u.tablep == NULL, 0))
-+ *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128);
-+ return u.tablep;
- }
-
- # endif /* Not NOT_IN_libc. */
---- glibc-2.3.2/include/dlfcn.h 2002-11-19 03:18:00.000000000 -0500
-+++ glibc-2.3.2/include/dlfcn.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,5 +1,6 @@
- #ifndef _DLFCN_H
- #include <dlfcn/dlfcn.h>
-+#include <link.h> /* For ElfW. */
-
- /* Internally used flag. */
- #define __RTLD_DLOPEN 0x80000000
-@@ -13,11 +14,17 @@
- extern void *__libc_dlopen_mode (__const char *__name, int __mode);
- extern void *__libc_dlsym (void *__map, __const char *__name);
- extern int __libc_dlclose (void *__map);
-+libc_hidden_proto (__libc_dlopen_mode)
-+libc_hidden_proto (__libc_dlsym)
-+libc_hidden_proto (__libc_dlclose)
-
- /* Locate shared object containing the given address. */
--extern int _dl_addr (const void *address, Dl_info *info)
-+#ifdef ElfW
-+extern int _dl_addr (const void *address, Dl_info *info,
-+ struct link_map **mapp, const ElfW(Sym) **symbolp)
- internal_function;
- libc_hidden_proto (_dl_addr)
-+#endif
-
- /* Open the shared object NAME, relocate it, and run its initializer if it
- hasn't already been run. MODE is as for `dlopen' (see <dlfcn.h>). If
---- glibc-2.3.2/include/fcntl.h 2003-01-12 22:57:51.000000000 -0500
-+++ glibc-2.3.2/include/fcntl.h 2003-09-19 22:37:01.000000000 -0400
-@@ -9,6 +9,7 @@
- libc_hidden_proto (__libc_open)
- extern int __libc_creat (const char *file, mode_t mode);
- extern int __libc_fcntl (int fd, int cmd, ...);
-+extern int __fcntl_nocancel (int fd, int cmd, ...) attribute_hidden;
- libc_hidden_proto (__libc_fcntl)
- extern int __open (__const char *__file, int __oflag, ...);
- libc_hidden_proto (__open)
---- glibc-2.3.2/include/features.h 2002-11-04 04:34:54.000000000 -0500
-+++ glibc-2.3.2/include/features.h 2003-05-24 14:06:21.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1993,1995-2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1993,1995-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
-@@ -188,6 +188,10 @@
- # define __USE_POSIX199506 1
- #endif
-
-+#if (_POSIX_C_SOURCE - 0) >= 200112L
-+# define __USE_XOPEN2K 1
-+#endif
-+
- #ifdef _XOPEN_SOURCE
- # define __USE_XOPEN 1
- # if (_XOPEN_SOURCE - 0) >= 500
---- glibc-2.3.2/include/gmp.h 2000-12-05 12:28:08.000000000 -0500
-+++ glibc-2.3.2/include/gmp.h 2003-03-15 15:02:08.000000000 -0500
-@@ -1,3 +1,7 @@
-+/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
-+ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
-+#include <gmp-mparam.h>
-+
- #ifndef __GMP_H__
-
- #include <stdlib/gmp.h>
---- glibc-2.3.2/include/ifaddrs.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/include/ifaddrs.h 2003-08-21 08:37:02.000000000 -0400
-@@ -0,0 +1,10 @@
-+#ifndef _IFADDRS_H
-+#include <inet/ifaddrs.h>
-+#include <stdbool.h>
-+
-+libc_hidden_proto (getifaddrs)
-+libc_hidden_proto (freeifaddrs)
-+
-+extern void __check_pf (bool *seen_ipv4, bool *seen_ipv6) attribute_hidden;
-+
-+#endif /* ifaddrs.h */
---- glibc-2.3.2/include/libc-symbols.h 2003-01-03 18:21:03.000000000 -0500
-+++ glibc-2.3.2/include/libc-symbols.h 2003-08-21 08:37:02.000000000 -0400
-@@ -244,10 +244,10 @@
- # define link_warning(symbol, msg) \
- __make_section_unallocated (".gnu.warning." #symbol) \
- static const char __evoke_link_warning_##symbol[] \
-- __attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \
-+ __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
- = msg;
- # define libc_freeres_ptr(decl) \
-- __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", @nobits") \
-+ __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", %nobits") \
- decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment)))
- # define __libc_freeres_fn_section \
- __attribute__ ((section ("__libc_freeres_fn")))
-@@ -282,6 +282,16 @@
- link_warning (name, \
- "warning: " #name " is not implemented and will always fail")
-
-+/* Warning for linking functions calling dlopen into static binaries. */
-+#ifdef SHARED
-+#define static_link_warning(name)
-+#else
-+#define static_link_warning(name) static_link_warning1(name)
-+#define static_link_warning1(name) \
-+ link_warning(name, "Using '" #name "' in statically linked applications \
-+requires at runtime the shared libraries from the glibc version used \
-+for linking")
-+#endif
-
- /* Declare SYMBOL to be TYPE (`function' or `object') and of SIZE bytes,
- when the assembler supports such declarations (such as in ELF).
-@@ -334,29 +344,36 @@
- because it will need to be relocated at run time anyway. */
- # define _elf_set_element(set, symbol) \
- static const void *__elf_set_##set##_element_##symbol##__ \
-- __attribute__ ((unused, section (#set))) = &(symbol)
-+ __attribute__ ((used, section (#set))) = &(symbol)
- # else
- # define _elf_set_element(set, symbol) \
- static const void *const __elf_set_##set##_element_##symbol##__ \
-- __attribute__ ((unused, section (#set))) = &(symbol)
-+ __attribute__ ((used, section (#set))) = &(symbol)
- # endif
-
- /* Define SET as a symbol set. This may be required (it is in a.out) to
- be able to use the set's contents. */
- # define symbol_set_define(set) symbol_set_declare(set)
-
--/* Declare SET for use in this module, if defined in another module. */
-+/* Declare SET for use in this module, if defined in another module.
-+ In a shared library, this is always local to that shared object.
-+ For static linking, the set might be wholly absent and so we use
-+ weak references. */
- # define symbol_set_declare(set) \
-- extern void *const __start_##set __attribute__ ((__weak__)); \
-- extern void *const __stop_##set __attribute__ ((__weak__)); \
-- weak_extern (__start_##set) weak_extern (__stop_##set)
-+ extern char const __start_##set[] __symbol_set_attribute; \
-+ extern char const __stop_##set[] __symbol_set_attribute;
-+# ifdef SHARED
-+# define __symbol_set_attribute attribute_hidden
-+# else
-+# define __symbol_set_attribute __attribute__ ((weak))
-+# endif
-
- /* Return a pointer (void *const *) to the first element of SET. */
--# define symbol_set_first_element(set) (&__start_##set)
-+# define symbol_set_first_element(set) ((void *const *) (&__start_##set))
-
- /* Return true iff PTR (a void *const *) has been incremented
- past the last element in SET. */
--# define symbol_set_end_p(set, ptr) ((ptr) >= &__stop_##set)
-+# define symbol_set_end_p(set, ptr) ((ptr) >= (void *const *) &__stop_##set)
-
- # else /* Not ELF: a.out. */
-
-@@ -434,7 +451,8 @@
- strong_alias(real, name)
- #endif
-
--#if defined HAVE_VISIBILITY_ATTRIBUTE && defined SHARED
-+#if defined HAVE_VISIBILITY_ATTRIBUTE \
-+ && (defined SHARED || defined LIBC_NONSHARED)
- # define attribute_hidden __attribute__ ((visibility ("hidden")))
- #else
- # define attribute_hidden
-@@ -720,4 +738,16 @@
- # define libm_hidden_data_ver(local, name)
- #endif
-
-+#ifdef HAVE_BUILTIN_REDIRECTION
-+# define libc_hidden_builtin_proto(name, attrs...) libc_hidden_proto (name, ##attrs)
-+# define libc_hidden_builtin_def(name) libc_hidden_def (name)
-+# define libc_hidden_builtin_weak(name) libc_hidden_weak (name)
-+# define libc_hidden_builtin_ver(local, name) libc_hidden_ver (local, name)
-+#else
-+# define libc_hidden_builtin_proto(name, attrs...)
-+# define libc_hidden_builtin_def(name)
-+# define libc_hidden_builtin_weak(name)
-+# define libc_hidden_builtin_ver(local, name)
-+#endif
-+
- #endif /* libc-symbols.h */
---- glibc-2.3.2/include/link.h 2002-12-02 17:36:09.000000000 -0500
-+++ glibc-2.3.2/include/link.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Data structure for communication from the run-time dynamic linker for
- loaded ELF shared objects.
-- Copyright (C) 1995-1999,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -186,7 +186,9 @@
- the l_libname list. */
- unsigned int l_faked:1; /* Nonzero if this is a faked descriptor
- without associated file. */
--
-+ unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls)
-+ should be called on this link map
-+ when relocation finishes. */
- /* Array with version names. */
- unsigned int l_nversions;
- struct r_found_version *l_versions;
-@@ -268,6 +270,11 @@
- size_t l_tls_blocksize;
- /* Alignment requirement of the TLS block. */
- size_t l_tls_align;
-+ /* Offset of first byte module alignment. */
-+ size_t l_tls_firstbyte_offset;
-+# ifndef NO_TLS_OFFSET
-+# define NO_TLS_OFFSET 0
-+# endif
- /* For objects present at startup time: offset in the static TLS block. */
- ptrdiff_t l_tls_offset;
- /* Index of the module in the dtv array. */
---- glibc-2.3.2/include/netdb.h 2002-12-31 14:14:52.000000000 -0500
-+++ glibc-2.3.2/include/netdb.h 2003-04-24 20:05:57.000000000 -0400
-@@ -181,13 +181,9 @@
- libc_hidden_proto (ruserpass)
-
-
--/* The following declarations and definitions have been removed from
-- the public header since we don't want people to use them. */
-+/* The following definition has been removed from the public header
-+ since we don't want people to use them. */
-
--#define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */
--#define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */
--#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
-- returned address type. */
- #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG)
-
- #include <inet/netgroup.h>
---- glibc-2.3.2/include/netinet/in.h 2002-08-07 22:08:13.000000000 -0400
-+++ glibc-2.3.2/include/netinet/in.h 2003-08-21 08:37:02.000000000 -0400
-@@ -5,5 +5,6 @@
- libc_hidden_proto (bindresvport)
- libc_hidden_proto (in6addr_loopback)
- libc_hidden_proto (in6addr_any)
-+libc_hidden_proto (inet6_option_alloc)
-
- #endif
---- glibc-2.3.2/include/resolv.h 2003-02-21 21:38:02.000000000 -0500
-+++ glibc-2.3.2/include/resolv.h 2003-08-21 08:37:02.000000000 -0400
-@@ -17,9 +17,10 @@
- # if USE___THREAD
- # undef _res
- # ifndef NOT_IN_libc
--# define _res __libc_res
-+# define __resp __libc_resp
- # endif
--extern __thread struct __res_state _res attribute_tls_model_ie;
-+# define _res (*__resp)
-+extern __thread struct __res_state *__resp attribute_tls_model_ie;
- # endif
- # else
- # ifndef __BIND_NOSTATIC
---- glibc-2.3.2/include/sched.h 2002-08-15 01:39:03.000000000 -0400
-+++ glibc-2.3.2/include/sched.h 2003-03-15 15:02:08.000000000 -0500
-@@ -18,5 +18,5 @@
- extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
- int __flags, void *__arg, ...);
- extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
-- size_t __child_stack_size, int __flags, void *__arg);
-+ size_t __child_stack_size, int __flags, void *__arg, ...);
- #endif
---- glibc-2.3.2/include/set-hooks.h 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/include/set-hooks.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Macros for using symbol sets for running lists of functions.
-- Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994, 1995, 1997, 2000, 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
-@@ -40,12 +40,12 @@
- /* Run all the functions hooked on the set called NAME.
- Each function is called like this: `function ARGS'. */
-
--# define RUN_HOOK(NAME, ARGS) \
--do { \
-- void *const *__unbounded ptr; \
-- for (ptr = symbol_set_first_element (NAME); \
-- ! symbol_set_end_p (NAME, ptr); ++ptr) \
-- (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
-+# define RUN_HOOK(NAME, ARGS) \
-+do { \
-+ void *const *__unbounded ptr; \
-+ for (ptr = (void *const *) symbol_set_first_element (NAME); \
-+ ! symbol_set_end_p (NAME, ptr); ++ptr) \
-+ (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
- } while (0)
-
- /* Define a hook variable with NAME and PROTO, and a function called RUNNER
---- glibc-2.3.2/include/setjmp.h 2002-12-31 04:40:20.000000000 -0500
-+++ glibc-2.3.2/include/setjmp.h 2003-09-19 22:37:01.000000000 -0400
-@@ -22,5 +22,6 @@
- libc_hidden_proto (__libc_longjmp)
-
- libc_hidden_proto (_setjmp)
-+libc_hidden_proto (__sigsetjmp)
-
- #endif
---- glibc-2.3.2/include/signal.h 2002-12-31 14:38:14.000000000 -0500
-+++ glibc-2.3.2/include/signal.h 2003-05-12 12:13:04.000000000 -0400
-@@ -6,6 +6,8 @@
-
- libc_hidden_proto (sigemptyset)
- libc_hidden_proto (sigfillset)
-+libc_hidden_proto (sigaddset)
-+libc_hidden_proto (sigdelset)
- libc_hidden_proto (sigismember)
- libc_hidden_proto (__sigpause)
- libc_hidden_proto (raise)
---- glibc-2.3.2/include/stdio.h 2002-08-10 14:08:27.000000000 -0400
-+++ glibc-2.3.2/include/stdio.h 2003-09-19 22:37:01.000000000 -0400
-@@ -108,6 +108,18 @@
- libc_hidden_proto (fgets_unlocked)
- libc_hidden_proto (fputs_unlocked)
- libc_hidden_proto (open_memstream)
-+libc_hidden_proto (__libc_fatal)
-+
-+# if !defined NOT_IN_libc && defined SHARED && defined DO_VERSIONING \
-+ && defined HAVE_VISIBILITY_ATTRIBUTE && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE\
-+ && !defined NO_HIDDEN
-+/* Special gcc builtins. */
-+extern size_t __builtin_fwrite (const void *, size_t, size_t, void *)
-+ __asm ("__GI_fwrite");
-+extern size_t __builtin_fwrite_unlocked (const void *, size_t, size_t, void *)
-+ __asm ("__GI_fwrite_unlocked");
-+
-+# endif
-
- # endif
-
---- glibc-2.3.2/include/string.h 2002-12-31 17:38:31.000000000 -0500
-+++ glibc-2.3.2/include/string.h 2003-05-12 12:13:04.000000000 -0400
-@@ -79,6 +79,23 @@
- libc_hidden_proto (basename)
- libc_hidden_proto (strcoll)
-
-+libc_hidden_builtin_proto (memchr)
-+libc_hidden_builtin_proto (memcpy)
-+libc_hidden_builtin_proto (memmove)
-+libc_hidden_builtin_proto (memset)
-+libc_hidden_builtin_proto (strcat)
-+libc_hidden_builtin_proto (strchr)
-+libc_hidden_builtin_proto (strcmp)
-+libc_hidden_builtin_proto (strcpy)
-+libc_hidden_builtin_proto (strcspn)
-+libc_hidden_builtin_proto (strlen)
-+libc_hidden_builtin_proto (strncmp)
-+libc_hidden_builtin_proto (strncpy)
-+libc_hidden_builtin_proto (strpbrk)
-+libc_hidden_builtin_proto (strrchr)
-+libc_hidden_builtin_proto (strspn)
-+libc_hidden_builtin_proto (strstr)
-+
- # ifndef _ISOMAC
- # ifndef index
- # define index(s, c) (strchr ((s), (c)))
---- glibc-2.3.2/include/sys/resource.h 2002-08-04 00:32:39.000000000 -0400
-+++ glibc-2.3.2/include/sys/resource.h 2003-08-21 08:37:02.000000000 -0400
-@@ -7,7 +7,8 @@
- /* Now define the internal interfaces. */
- extern int __getrlimit (enum __rlimit_resource __resource,
- struct rlimit *__rlimits);
--extern int __getrusage (enum __rusage_who __who, struct rusage *__usage);
-+extern int __getrusage (enum __rusage_who __who, struct rusage *__usage)
-+ attribute_hidden;
-
- extern int __setrlimit (enum __rlimit_resource __resource,
- const struct rlimit *__rlimits);
---- glibc-2.3.2/include/sys/time.h 2002-04-14 05:25:54.000000000 -0400
-+++ glibc-2.3.2/include/sys/time.h 2003-08-21 08:37:02.000000000 -0400
-@@ -5,17 +5,21 @@
- extern int __gettimeofday (struct timeval *__tv,
- struct timezone *__tz);
- extern int __gettimeofday_internal (struct timeval *__tv,
-- struct timezone *__tz) attribute_hidden;
-+ struct timezone *__tz)
-+ attribute_hidden;
- extern int __settimeofday (__const struct timeval *__tv,
-- __const struct timezone *__tz);
-+ __const struct timezone *__tz)
-+ attribute_hidden;
- extern int __adjtime (__const struct timeval *__delta,
- struct timeval *__olddelta);
- extern int __getitimer (enum __itimer_which __which,
- struct itimerval *__value);
- extern int __setitimer (enum __itimer_which __which,
- __const struct itimerval *__restrict __new,
-- struct itimerval *__restrict __old);
--extern int __utimes (__const char *__file, const struct timeval __tvp[2]);
-+ struct itimerval *__restrict __old)
-+ attribute_hidden;
-+extern int __utimes (__const char *__file, const struct timeval __tvp[2])
-+ attribute_hidden;
-
- #ifndef NOT_IN_libc
- # define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz)
---- glibc-2.3.2/include/sys/wait.h 2002-12-20 02:47:59.000000000 -0500
-+++ glibc-2.3.2/include/sys/wait.h 2003-08-21 08:37:02.000000000 -0400
-@@ -13,5 +13,6 @@
- extern __pid_t __wait3 (__WAIT_STATUS __stat_loc,
- int __options, struct rusage * __usage);
- extern __pid_t __wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc,
-- int __options, struct rusage *__usage);
-+ int __options, struct rusage *__usage)
-+ attribute_hidden;
- #endif
---- glibc-2.3.2/include/time.h 2003-02-01 15:47:59.000000000 -0500
-+++ glibc-2.3.2/include/time.h 2003-08-21 08:37:02.000000000 -0400
-@@ -82,5 +82,12 @@
-
- /* Determine CLK_TCK value. */
- extern int __getclktck (void);
-+
-+
-+/* Use in the clock_* functions. Size of the field representing the
-+ actual clock ID. */
-+#ifndef _ISOMAC
-+# define CLOCK_IDFIELD_SIZE 3
-+#endif
- #endif
- #endif
---- glibc-2.3.2/include/tls.h 2002-12-19 15:12:03.000000000 -0500
-+++ glibc-2.3.2/include/tls.h 2003-04-24 20:05:57.000000000 -0400
-@@ -1,5 +1,8 @@
- /* This file defines USE___THREAD to 1 or 0 to cut down on the #if mess. */
-
-+#ifndef _include_tls_h
-+#define _include_tls_h 1
-+
- #include_next <tls.h>
-
- #if USE_TLS && HAVE___THREAD \
-@@ -12,3 +15,5 @@
- # define USE___THREAD 0
-
- #endif
-+
-+#endif
---- glibc-2.3.2/include/unistd.h 2002-12-31 14:14:22.000000000 -0500
-+++ glibc-2.3.2/include/unistd.h 2003-05-12 12:13:04.000000000 -0400
-@@ -140,6 +140,7 @@
- and some functions contained in the C library ignore various
- environment variables that normally affect them. */
- extern int __libc_enable_secure;
-+extern int __libc_enable_secure_decided;
- #ifdef IS_IN_rtld
- /* XXX The #ifdef should go. */
- extern int __libc_enable_secure_internal attribute_hidden;
---- glibc-2.3.2/inet/Makefile 2002-12-28 05:06:33.000000000 -0500
-+++ glibc-2.3.2/inet/Makefile 2003-09-19 22:37:01.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991-1999,2000,01,02 Free Software Foundation, Inc.
-+# Copyright (C) 1991-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
-@@ -22,7 +22,7 @@
- subdir := inet
-
- headers := netinet/ether.h netinet/in.h netinet/in_systm.h \
-- netinet/if_ether.h \
-+ netinet/if_ether.h netinet/igmp.h \
- netinet/tcp.h netinet/ip.h $(wildcard arpa/*.h protocols/*.h) \
- aliases.h ifaddrs.h netinet/ip6.h netinet/icmp6.h bits/in.h
-
-@@ -45,7 +45,9 @@
- rcmd rexec ruserpass \
- getnetgrent_r getnetgrent \
- getaliasent_r getaliasent getaliasname getaliasname_r \
-- in6_addr getnameinfo if_index ifaddrs
-+ in6_addr getnameinfo if_index ifaddrs inet6_option
-+
-+aux := check_pf ifreq
-
- tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
- tst-gethnm test-ifaddrs
-@@ -54,9 +56,33 @@
-
- ifeq ($(have-thread-library),yes)
-
--CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1
--CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1
--CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1
-+CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions
-+CFLAGS-gethstbyad.c = -fexceptions
-+CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1 -fexceptions
-+CFLAGS-gethstbynm.c = -fexceptions
-+CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1 -fexceptions
-+CFLAGS-gethstbynm2.c = -fexceptions
-+CFLAGS-gethstent_r.c = -fexceptions
-+CFLAGS-gethstent.c = -fexceptions
-+CFLAGS-rcmd.c = -fexceptions
-+CFLAGS-getnetbynm_r.c = -fexceptions
-+CFLAGS-getnetbynm.c = -fexceptions
-+CFLAGS-getnetbyad_r.c = -fexceptions
-+CFLAGS-getnetbyad.c = -fexceptions
-+CFLAGS-getnetent_r.c = -fexceptions
-+CFLAGS-getnetent.c = -fexceptions
-+CFLAGS-getaliasent_r.c = -fexceptions
-+CFLAGS-getaliasent.c = -fexceptions
-+CFLAGS-getrpcent_r.c = -fexceptions
-+CFLAGS-getrpcent.c = -fexceptions
-+CFLAGS-getservent_r.c = -fexceptions
-+CFLAGS-getservent.c = -fexceptions
-+CFLAGS-getprtent_r.c = -fexceptions
-+CFLAGS-getprtent.c = -fexceptions
-+CFLAGS-either_ntoh.c = -fexceptions
-+CFLAGS-either_hton.c = -fexceptions
-+CFLAGS-getnetgrent.c = -fexceptions
-+CFLAGS-getnetgrent_r.c = -fexceptions
-
- endif
-
---- glibc-2.3.2/inet/Versions 2002-07-25 04:08:18.000000000 -0400
-+++ glibc-2.3.2/inet/Versions 2003-08-21 08:37:02.000000000 -0400
-@@ -70,6 +70,10 @@
- # g*
- getifaddrs;
- }
-+ GLIBC_2.3.3 {
-+ inet6_option_space; inet6_option_init; inet6_option_append;
-+ inet6_option_alloc; inet6_option_next; inet6_option_find;
-+ }
- GLIBC_PRIVATE {
- # functions used in other libraries
- __internal_endnetgrent; __internal_getnetgrent_r;
---- glibc-2.3.2/inet/inet6_option.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/inet/inet6_option.c 2003-06-14 04:43:24.000000000 -0400
-@@ -0,0 +1,343 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 <assert.h>
-+#include <string.h>
-+#include <netinet/in.h>
-+#include <netinet/ip6.h>
-+#include <sys/param.h>
-+
-+
-+static void
-+internal_function
-+add_pad (struct cmsghdr *cmsg, int len)
-+{
-+ unsigned char *p = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0);
-+
-+ if (len == 1)
-+ /* Special handling for 1, a one-byte solution. */
-+ *p++ = IP6OPT_PAD1;
-+ else if (len != 0)
-+ {
-+ /* Multibyte padding. */
-+ *p++ = IP6OPT_PADN;
-+ *p++ = len - 2; /* Discount the two header bytes. */
-+ /* The rest is filled with zero. */
-+ memset (p, '\0', len - 2);
-+ p += len - 2;
-+ }
-+
-+ /* Account for the bytes. */
-+ cmsg->cmsg_len += len;
-+}
-+
-+
-+static int
-+get_opt_end (const uint8_t **result, const uint8_t *startp,
-+ const uint8_t *endp)
-+{
-+ if (startp >= endp)
-+ /* Out of bounds. */
-+ return -1;
-+
-+ if (*startp == IP6OPT_PAD1)
-+ {
-+ /* Just this one byte. */
-+ *result = startp + 1;
-+ return 0;
-+ }
-+
-+ /* Now we know there must be at least two bytes. */
-+ if (startp + 2 > endp
-+ /* Now we can get the length byte. */
-+ || startp + startp[1] + 2 > endp)
-+ return -1;
-+
-+ *result = startp + startp[1] + 2;
-+
-+ return 0;
-+}
-+
-+
-+/* RFC 2292, 6.3.1
-+
-+ This function returns the number of bytes required to hold an option
-+ when it is stored as ancillary data, including the cmsghdr structure
-+ at the beginning, and any padding at the end (to make its size a
-+ multiple of 8 bytes). The argument is the size of the structure
-+ defining the option, which must include any pad bytes at the
-+ beginning (the value y in the alignment term "xn + y"), the type
-+ byte, the length byte, and the option data. */
-+int
-+inet6_option_space (nbytes)
-+ int nbytes;
-+{
-+ /* Add room for the extension header. */
-+ nbytes += sizeof (struct ip6_ext);
-+
-+ return CMSG_SPACE (roundup (nbytes, 8));
-+}
-+
-+
-+/* RFC 2292, 6.3.2
-+
-+ This function is called once per ancillary data object that will
-+ contain either Hop-by-Hop or Destination options. It returns 0 on
-+ success or -1 on an error. */
-+int
-+inet6_option_init (bp, cmsgp, type)
-+ void *bp;
-+ struct cmsghdr **cmsgp;
-+ int type;
-+{
-+ /* Only Hop-by-Hop or Destination options allowed. */
-+ if (type != IPV6_HOPOPTS && type != IPV6_DSTOPTS)
-+ return -1;
-+
-+ /* BP is a pointer to the previously allocated space. */
-+ struct cmsghdr *newp = (struct cmsghdr *) bp;
-+
-+ /* Initialize the message header.
-+
-+ Length: No data yet, only the cmsghdr struct. */
-+ newp->cmsg_len = CMSG_LEN (0);
-+ /* Originating protocol: obviously IPv6. */
-+ newp->cmsg_level = IPPROTO_IPV6;
-+ /* Message type. */
-+ newp->cmsg_type = type;
-+
-+ /* Pass up the result. */
-+ *cmsgp = newp;
-+
-+ return 0;
-+}
-+
-+
-+/* RFC 2292, 6.3.3
-+
-+ This function appends a Hop-by-Hop option or a Destination option
-+ into an ancillary data object that has been initialized by
-+ inet6_option_init(). This function returns 0 if it succeeds or -1 on
-+ an error. */
-+int
-+inet6_option_append (cmsg, typep, multx, plusy)
-+ struct cmsghdr *cmsg;
-+ const uint8_t *typep;
-+ int multx;
-+ int plusy;
-+{
-+ /* typep is a pointer to the 8-bit option type. It is assumed that this
-+ field is immediately followed by the 8-bit option data length field,
-+ which is then followed immediately by the option data.
-+
-+ The option types IP6OPT_PAD1 and IP6OPT_PADN also must be handled. */
-+ int len = typep[0] == IP6OPT_PAD1 ? 1 : typep[1] + 2;
-+
-+ /* Get the pointer to the space in the message. */
-+ uint8_t *ptr = inet6_option_alloc (cmsg, len, multx, plusy);
-+ if (ptr == NULL)
-+ /* Some problem with the parameters. */
-+ return -1;
-+
-+ /* Copy the content. */
-+ memcpy (ptr, typep, len);
-+
-+ return 0;
-+}
-+
-+
-+/* RFC 2292, 6.3.4
-+
-+ This function appends a Hop-by-Hop option or a Destination option
-+ into an ancillary data object that has been initialized by
-+ inet6_option_init(). This function returns a pointer to the 8-bit
-+ option type field that starts the option on success, or NULL on an
-+ error. */
-+uint8_t *
-+inet6_option_alloc (cmsg, datalen, multx, plusy)
-+ struct cmsghdr *cmsg;
-+ int datalen;
-+ int multx;
-+ int plusy;
-+{
-+ /* The RFC limits the value of the alignment values. */
-+ if ((multx != 1 && multx != 2 && multx != 4 && multx != 8)
-+ || ! (plusy >= 0 && plusy <= 7))
-+ return NULL;
-+
-+ /* Current data size. */
-+ int dsize = cmsg->cmsg_len - CMSG_LEN (0);
-+
-+ /* The first two bytes of the option are for the extended header. */
-+ if (__builtin_expect (dsize == 0, 0))
-+ {
-+ cmsg->cmsg_len += sizeof (struct ip6_ext);
-+ dsize = sizeof (struct ip6_ext);
-+ }
-+
-+ /* First add padding. */
-+ add_pad (cmsg, ((multx - (dsize & (multx - 1))) & (multx - 1)) + plusy);
-+
-+ /* Return the pointer to the start of the option space. */
-+ uint8_t *result = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0);
-+ cmsg->cmsg_len += datalen;
-+
-+ /* The extended option header length is measured in 8-byte groups.
-+ To represent the current length we might have to add padding. */
-+ dsize = cmsg->cmsg_len - CMSG_LEN (0);
-+ add_pad (cmsg, (8 - (dsize & (8 - 1))) & (8 - 1));
-+
-+ /* Record the new length of the option. */
-+ assert (((cmsg->cmsg_len - CMSG_LEN (0)) % 8) == 0);
-+ int len8b = (cmsg->cmsg_len - CMSG_LEN (0)) / 8 - 1;
-+ if (len8b >= 256)
-+ /* Too long. */
-+ return NULL;
-+
-+ ((struct ip6_ext *) CMSG_DATA (cmsg))->ip6e_len = len8b;
-+
-+ return result;
-+}
-+libc_hidden_def (inet6_option_alloc)
-+
-+
-+/* RFC 2292, 6.3.5
-+
-+ This function processes the next Hop-by-Hop option or Destination
-+ option in an ancillary data object. If another option remains to be
-+ processed, the return value of the function is 0 and *tptrp points to
-+ the 8-bit option type field (which is followed by the 8-bit option
-+ data length, followed by the option data). If no more options remain
-+ to be processed, the return value is -1 and *tptrp is NULL. If an
-+ error occurs, the return value is -1 and *tptrp is not NULL. */
-+int
-+inet6_option_next (cmsg, tptrp)
-+ const struct cmsghdr *cmsg;
-+ uint8_t **tptrp;
-+{
-+ /* Make sure it is an option of the right type. */
-+ if (cmsg->cmsg_level != IPPROTO_IPV6
-+ || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS))
-+ return -1;
-+
-+ /* Pointer to the extension header. We only compute the address, we
-+ don't access anything yet. */
-+ const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg);
-+
-+ /* Make sure the message is long enough. */
-+ if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext))
-+ /* Now we can access the extension header. */
-+ || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8))
-+ /* Too small. */
-+ return -1;
-+
-+ /* Determine the address of the byte past the message. */
-+ const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8;
-+
-+ const uint8_t *result;
-+ if (tptrp == NULL)
-+ /* This is the first call, return the first option if there is one. */
-+ result = (const uint8_t *) (ip6e + 1);
-+ else
-+ {
-+ /* Make sure *TPTRP points to a beginning of a new option in
-+ the message. The upper limit is checked in get_opt_end. */
-+ if (*tptrp < (const uint8_t *) (ip6e + 1))
-+ return -1;
-+
-+ /* Get the beginning of the next option. */
-+ if (get_opt_end (&result, *tptrp, endp) != 0)
-+ return -1;
-+ }
-+
-+ /* We know where the next option starts. */
-+ *tptrp = (uint8_t *) result;
-+
-+ /* Check the option is fully represented in the message. */
-+ return get_opt_end (&result, result, endp);
-+}
-+
-+
-+/* RFC 2292, 6.3.6
-+
-+ This function is similar to the previously described
-+ inet6_option_next() function, except this function lets the caller
-+ specify the option type to be searched for, instead of always
-+ returning the next option in the ancillary data object. cmsg is a
-+ pointer to cmsghdr structure of which cmsg_level equals IPPROTO_IPV6
-+ and cmsg_type equals either IPV6_HOPOPTS or IPV6_DSTOPTS. */
-+int
-+inet6_option_find (cmsg, tptrp, type)
-+ const struct cmsghdr *cmsg;
-+ uint8_t **tptrp;
-+ int type;
-+{
-+ /* Make sure it is an option of the right type. */
-+ if (cmsg->cmsg_level != IPPROTO_IPV6
-+ || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS))
-+ return -1;
-+
-+ /* Pointer to the extension header. We only compute the address, we
-+ don't access anything yet. */
-+ const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg);
-+
-+ /* Make sure the message is long enough. */
-+ if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext))
-+ /* Now we can access the extension header. */
-+ || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8))
-+ /* Too small. */
-+ return -1;
-+
-+ /* Determine the address of the byte past the message. */
-+ const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8;
-+
-+ const uint8_t *next;
-+ if (tptrp == NULL)
-+ /* This is the first call, return the first option if there is one. */
-+ next = (const uint8_t *) (ip6e + 1);
-+ else
-+ {
-+ /* Make sure *TPTRP points to a beginning of a new option in
-+ the message. The upper limit is checked in get_opt_end. */
-+ if (*tptrp < (const uint8_t *) (ip6e + 1))
-+ return -1;
-+
-+ /* Get the beginning of the next option. */
-+ if (get_opt_end (&next, *tptrp, endp) != 0)
-+ return -1;
-+ }
-+
-+ /* Now search for the appropriate typed entry. */
-+ const uint8_t *result;
-+ do
-+ {
-+ result = next;
-+
-+ /* Get the end of this entry. */
-+ if (get_opt_end (&next, result, endp) != 0)
-+ return -1;
-+ }
-+ while (*result != type);
-+
-+ /* We know where the next option starts. */
-+ *tptrp = (uint8_t *) result;
-+
-+ /* Success. */
-+ return 0;
-+}
---- glibc-2.3.2/inet/inet_mkadr.c 2002-11-24 21:23:24.000000000 -0500
-+++ glibc-2.3.2/inet/inet_mkadr.c 2003-09-19 22:37:01.000000000 -0400
-@@ -43,17 +43,17 @@
- inet_makeaddr(net, host)
- in_addr_t net, host;
- {
-- u_int32_t addr;
-+ struct in_addr in;
-
- if (net < 128)
-- addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
-+ in.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
- else if (net < 65536)
-- addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
-+ in.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
- else if (net < 16777216L)
-- addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
-+ in.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
- else
-- addr = net | host;
-- addr = htonl(addr);
-- return (*(struct in_addr *)&addr);
-+ in.s_addr = net | host;
-+ in.s_addr = htonl(in.s_addr);
-+ return in;
- }
- libc_hidden_def (inet_makeaddr)
---- glibc-2.3.2/inet/netinet/igmp.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/inet/netinet/igmp.h 2003-05-24 14:06:21.000000000 -0400
-@@ -0,0 +1,126 @@
-+/* Copyright (C) 1997, 1999, 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. */
-+
-+#ifndef _NETINET_IGMP_H
-+#define _NETINET_IGMP_H 1
-+
-+#include <sys/cdefs.h>
-+#include <sys/types.h>
-+
-+#ifdef __USE_BSD
-+
-+#include <netinet/in.h>
-+
-+__BEGIN_DECLS
-+
-+/*
-+ * Copyright (c) 1988 Stephen Deering.
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This code is derived from software contributed to Berkeley by
-+ * Stephen Deering of Stanford University.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 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
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * 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.
-+ *
-+ * @(#)igmp.h 8.1 (Berkeley) 6/10/93
-+ * $FreeBSD$
-+ */
-+
-+struct igmp {
-+ u_int8_t igmp_type; /* IGMP type */
-+ u_int8_t igmp_code; /* routing code */
-+ u_int16_t igmp_cksum; /* checksum */
-+ struct in_addr igmp_group; /* group address */
-+};
-+
-+#define IGMP_MINLEN 8
-+
-+/*
-+ * Message types, including version number.
-+ */
-+#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
-+#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
-+#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
-+#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
-+
-+#define IGMP_DVMRP 0x13 /* DVMRP routing message */
-+#define IGMP_PIM 0x14 /* PIM routing message */
-+#define IGMP_TRACE 0x15
-+
-+#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
-+#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
-+
-+#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
-+ /* query (in seconds) according */
-+ /* to RFC1112 */
-+#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */
-+ /* specifies time in 10th of seconds*/
-+
-+/*
-+ * States for the IGMP v2 state table.
-+ */
-+#define IGMP_DELAYING_MEMBER 1
-+#define IGMP_IDLE_MEMBER 2
-+#define IGMP_LAZY_MEMBER 3
-+#define IGMP_SLEEPING_MEMBER 4
-+#define IGMP_AWAKENING_MEMBER 5
-+
-+/*
-+ * States for IGMP router version cache.
-+ */
-+#define IGMP_v1_ROUTER 1
-+#define IGMP_v2_ROUTER 2
-+
-+/*
-+ * The following four defininitions are for backwards compatibility.
-+ * They should be removed as soon as all applications are updated to
-+ * use the new constant names.
-+ */
-+#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
-+#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
-+#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
-+#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
-+
-+__END_DECLS
-+
-+#endif
-+
-+#endif /* netinet/igmp.h */
---- glibc-2.3.2/inet/netinet/in.h 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/inet/netinet/in.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1999, 2000, 2001, 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
-@@ -21,6 +21,7 @@
-
- #include <features.h>
- #include <stdint.h>
-+#include <sys/socket.h>
- #include <bits/types.h>
-
-
-@@ -79,6 +80,8 @@
- #define IPPROTO_PIM IPPROTO_PIM
- IPPROTO_COMP = 108, /* Compression Header Protocol. */
- #define IPPROTO_COMP IPPROTO_COMP
-+ IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */
-+#define IPPROTO_SCTP IPPROTO_SCTP
- IPPROTO_RAW = 255, /* Raw IP packets. */
- #define IPPROTO_RAW IPPROTO_RAW
- IPPROTO_MAX
-@@ -364,6 +367,23 @@
- unsigned int ipi6_ifindex; /* send/recv interface index */
- };
-
-+
-+#ifdef __USE_GNU
-+/* Hop-by-Hop and Destination Options Processing. */
-+extern int inet6_option_space (int __nbytes);
-+extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
-+ int __type);
-+extern int inet6_option_append (struct cmsghdr *__cmsg,
-+ __const uint8_t *__typep, int __multx,
-+ int __plusy);
-+extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
-+ int __multx, int __plusy);
-+extern int inet6_option_next (__const struct cmsghdr *__cmsg,
-+ uint8_t **__tptrp);
-+extern int inet6_option_find (__const struct cmsghdr *__cmsg,
-+ uint8_t **__tptrp, int __type);
-+#endif /* use GNU */
-+
- __END_DECLS
-
- #endif /* netinet/in.h */
---- glibc-2.3.2/inet/netinet/ip6.h 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/inet/netinet/ip6.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1997, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1997, 2001, 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
-@@ -47,51 +47,58 @@
- #define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
- #define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
-
-+/* Generic extension header. */
-+struct ip6_ext
-+ {
-+ uint8_t ip6e_nxt; /* next header. */
-+ uint8_t ip6e_len; /* length in units of 8 octets. */
-+ };
-+
- /* Hop-by-Hop options header. */
- struct ip6_hbh
- {
-- uint8_t ip6h_nxt; /* next hesder. */
-- uint8_t ip6h_len; /* length in units of 8 octets. */
-+ uint8_t ip6h_nxt; /* next header. */
-+ uint8_t ip6h_len; /* length in units of 8 octets. */
- /* followed by options */
- };
-
- /* Destination options header */
- struct ip6_dest
- {
-- uint8_t ip6d_nxt; /* next header */
-- uint8_t ip6d_len; /* length in units of 8 octets */
-+ uint8_t ip6d_nxt; /* next header */
-+ uint8_t ip6d_len; /* length in units of 8 octets */
- /* followed by options */
- };
-
- /* Routing header */
- struct ip6_rthdr
- {
-- uint8_t ip6r_nxt; /* next header */
-- uint8_t ip6r_len; /* length in units of 8 octets */
-- uint8_t ip6r_type; /* routing type */
-- uint8_t ip6r_segleft; /* segments left */
-+ uint8_t ip6r_nxt; /* next header */
-+ uint8_t ip6r_len; /* length in units of 8 octets */
-+ uint8_t ip6r_type; /* routing type */
-+ uint8_t ip6r_segleft; /* segments left */
- /* followed by routing type specific data */
- };
-
- /* Type 0 Routing header */
- struct ip6_rthdr0
- {
-- uint8_t ip6r0_nxt; /* next header */
-- uint8_t ip6r0_len; /* length in units of 8 octets */
-- uint8_t ip6r0_type; /* always zero */
-- uint8_t ip6r0_segleft; /* segments left */
-- uint8_t ip6r0_reserved; /* reserved field */
-- uint8_t ip6r0_slmap[3]; /* strict/loose bit map */
-+ uint8_t ip6r0_nxt; /* next header */
-+ uint8_t ip6r0_len; /* length in units of 8 octets */
-+ uint8_t ip6r0_type; /* always zero */
-+ uint8_t ip6r0_segleft; /* segments left */
-+ uint8_t ip6r0_reserved; /* reserved field */
-+ uint8_t ip6r0_slmap[3]; /* strict/loose bit map */
- struct in6_addr ip6r0_addr[1]; /* up to 23 addresses */
- };
-
- /* Fragment header */
- struct ip6_frag
- {
-- uint8_t ip6f_nxt; /* next header */
-- uint8_t ip6f_reserved; /* reserved field */
-- uint16_t ip6f_offlg; /* offset, reserved, and flag */
-- uint32_t ip6f_ident; /* identification */
-+ uint8_t ip6f_nxt; /* next header */
-+ uint8_t ip6f_reserved; /* reserved field */
-+ uint16_t ip6f_offlg; /* offset, reserved, and flag */
-+ uint32_t ip6f_ident; /* identification */
- };
-
- #if BYTE_ORDER == BIG_ENDIAN
-@@ -104,4 +111,8 @@
- #define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */
- #endif
-
-+/* Special option types for padding. */
-+#define IP6OPT_PAD1 0
-+#define IP6OPT_PADN 1
-+
- #endif /* netinet/ip6.h */
---- glibc-2.3.2/inet/rcmd.c 2003-02-20 20:50:13.000000000 -0500
-+++ glibc-2.3.2/inet/rcmd.c 2003-09-19 22:37:01.000000000 -0400
-@@ -551,7 +551,7 @@
- cp = _("not regular file");
- else
- {
-- res = fopen (file, "r");
-+ res = fopen (file, "rc");
- if (!res)
- cp = _("cannot open");
- else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0)
---- glibc-2.3.2/inet/ruserpass.c 2002-08-07 22:08:14.000000000 -0400
-+++ glibc-2.3.2/inet/ruserpass.c 2003-09-19 22:37:01.000000000 -0400
-@@ -114,7 +114,7 @@
- buf = alloca (strlen (hdir) + 8);
-
- __stpcpy (__stpcpy (buf, hdir), "/.netrc");
-- cfile = fopen(buf, "r");
-+ cfile = fopen(buf, "rc");
- if (cfile == NULL) {
- if (errno != ENOENT)
- warn("%s", buf);
---- glibc-2.3.2/inet/test-ifaddrs.c 2002-12-02 17:36:09.000000000 -0500
-+++ glibc-2.3.2/inet/test-ifaddrs.c 2003-04-12 11:39:42.000000000 -0400
-@@ -69,6 +69,10 @@
- #endif
- case AF_UNSPEC:
- return "---";
-+
-+ case AF_PACKET:
-+ return "<packet>";
-+
- default:
- ++failures;
- printf ("sa_family=%d %08x\n", sa->sa_family,
---- glibc-2.3.2/intl/Makefile 2002-12-11 19:55:10.000000000 -0500
-+++ glibc-2.3.2/intl/Makefile 2003-08-21 08:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995-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
-@@ -22,8 +22,8 @@
- headers = libintl.h
- routines = bindtextdom dcgettext dgettext gettext \
- dcigettext dcngettext dngettext ngettext \
-- finddomain loadmsgcat localealias textdomain \
-- l10nflist explodename plural plural-exp
-+ finddomain loadmsgcat localealias textdomain
-+aux = l10nflist explodename plural plural-exp hash-string
- distribute = gmo.h gettextP.h hash-string.h loadinfo.h locale.alias \
- plural.y plural-exp.h po2test.sed tst-gettext.sh tst-translit.sh \
- translit.po tst-gettext2.sh tstlang1.po tstlang2.po tstcodeset.po\
-@@ -77,7 +77,7 @@
-
- $(objpfx)msgs.h: po2test.sed ../po/de.po
- $(make-target-directory)
-- sed -f $^ > $@
-+ LC_ALL=C sed -f $^ > $@
-
- CFLAGS-tst-gettext.c = -DTESTSTRS_H=\"$(objpfx)msgs.h\"
- CFLAGS-tst-gettext2.c = -DOBJPFX=\"$(objpfx)\"
---- glibc-2.3.2/intl/dcigettext.c 2002-12-11 19:55:10.000000000 -0500
-+++ glibc-2.3.2/intl/dcigettext.c 2003-08-21 08:37:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Implementation of the internal dcigettext function.
-- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -695,7 +695,7 @@
- {
- /* Use the hashing table. */
- nls_uint32 len = strlen (msgid);
-- nls_uint32 hash_val = hash_string (msgid);
-+ nls_uint32 hash_val = __hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
---- glibc-2.3.2/intl/hash-string.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/intl/hash-string.c 2003-06-11 17:46:03.000000000 -0400
-@@ -0,0 +1,47 @@
-+/* Implements a string hashing function.
-+ Copyright (C) 1995, 1997, 1998, 2000, 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 "hash-string.h"
-+
-+
-+/* Defines the so called `hashpjw' function by P.J. Weinberger
-+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
-+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
-+unsigned long int
-+__hash_string (str_param)
-+ const char *str_param;
-+{
-+ unsigned long int hval, g;
-+ const char *str = str_param;
-+
-+ /* Compute the hash value for the given string. */
-+ hval = 0;
-+ while (*str != '\0')
-+ {
-+ hval <<= 4;
-+ hval += (unsigned long int) *str++;
-+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
-+ if (g != 0)
-+ {
-+ hval ^= g >> (HASHWORDBITS - 8);
-+ hval ^= g;
-+ }
-+ }
-+ return hval;
-+}
---- glibc-2.3.2/intl/hash-string.h 2002-12-11 19:55:10.000000000 -0500
-+++ glibc-2.3.2/intl/hash-string.h 2003-08-21 08:37:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Implements a string hashing function.
-- Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1997, 1998, 2000, 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
-@@ -34,27 +34,5 @@
- /* Defines the so called `hashpjw' function by P.J. Weinberger
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- 1986, 1987 Bell Telephone Laboratories, Inc.] */
--static unsigned long int hash_string PARAMS ((const char *__str_param));
--
--static inline unsigned long int
--hash_string (str_param)
-- const char *str_param;
--{
-- unsigned long int hval, g;
-- const char *str = str_param;
--
-- /* Compute the hash value for the given string. */
-- hval = 0;
-- while (*str != '\0')
-- {
-- hval <<= 4;
-- hval += (unsigned long int) *str++;
-- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
-- if (g != 0)
-- {
-- hval ^= g >> (HASHWORDBITS - 8);
-- hval ^= g;
-- }
-- }
-- return hval;
--}
-+extern unsigned long int __hash_string PARAMS ((const char *__str_param))
-+ attribute_hidden;
---- glibc-2.3.2/intl/loadmsgcat.c 2002-12-12 01:55:11.000000000 -0500
-+++ glibc-2.3.2/intl/loadmsgcat.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Load needed message catalogs.
-- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -87,6 +87,7 @@
-
- #ifdef _LIBC
- # include "../locale/localeinfo.h"
-+# include <not-cancel.h>
- #endif
-
- /* Provide fallback values for macros that ought to be defined in <inttypes.h>.
-@@ -453,11 +454,12 @@
- /* Rename the non ISO C functions. This is required by the standard
- because some ISO C functions will require linking with this object
- file and the name space must not be polluted. */
--# define open __open
--# define close __close
--# define read __read
--# define mmap __mmap
--# define munmap __munmap
-+# define open(name, flags) open_not_cancel_2 (name, flags)
-+# define close(fd) close_not_cancel_no_status (fd)
-+# define read(fd, buf, n) read_not_cancel (fd, buf, n)
-+# define mmap(addr, len, prot, flags, fd, offset) \
-+ __mmap (addr, len, prot, flags, fd, offset)
-+# define munmap(addr, len) __munmap (addr, len)
- #endif
-
- /* For those losing systems which don't have `alloca' we have to add
-@@ -1209,7 +1211,7 @@
- for (i = 0; i < n_sysdep_strings; i++)
- {
- const char *msgid = inmem_orig_sysdep_tab[i].pointer;
-- nls_uint32 hash_val = hash_string (msgid);
-+ nls_uint32 hash_val = __hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
---- glibc-2.3.2/intl/localealias.c 2002-11-19 22:26:47.000000000 -0500
-+++ glibc-2.3.2/intl/localealias.c 2003-09-19 22:37:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Handle aliases for locale names.
-- Copyright (C) 1995-1999, 2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -219,7 +219,9 @@
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
- #endif
-
-- fp = fopen (full_fname, "r");
-+ /* Note the file is opened with cancellation in the I/O functions
-+ disabled. */
-+ fp = fopen (full_fname, "rc");
- freea (full_fname);
- if (fp == NULL)
- return 0;
-@@ -243,11 +245,15 @@
- char *alias;
- char *value;
- char *cp;
-+ int complete_line;
-
- if (FGETS (buf, sizeof buf, fp) == NULL)
- /* EOF reached. */
- break;
-
-+ /* Determine whether the line is complete. */
-+ complete_line = strchr (buf, '\n') != NULL;
-+
- cp = buf;
- /* Ignore leading white space. */
- while (isspace ((unsigned char) cp[0]))
-@@ -334,11 +340,13 @@
-
- /* Possibly not the whole line fits into the buffer. Ignore
- the rest of the line. */
-- while (strchr (buf, '\n') == NULL)
-- if (FGETS (buf, sizeof buf, fp) == NULL)
-- /* Make sure the inner loop will be left. The outer loop
-- will exit at the `feof' test. */
-- break;
-+ if (! complete_line)
-+ do
-+ if (FGETS (buf, sizeof buf, fp) == NULL)
-+ /* Make sure the inner loop will be left. The outer loop
-+ will exit at the `feof' test. */
-+ break;
-+ while (strchr (buf, '\n') == NULL);
- }
-
- /* Should we test for ferror()? I think we have to silently ignore
---- glibc-2.3.2/intl/plural.c 2002-06-18 17:12:35.000000000 -0400
-+++ glibc-2.3.2/intl/plural.c 2003-05-12 12:13:04.000000000 -0400
-@@ -51,6 +51,7 @@
-
- #include <stddef.h>
- #include <stdlib.h>
-+#include <string.h>
- #include "plural-exp.h"
-
- /* The main function generated by the parser is called __gettextparse,
---- glibc-2.3.2/intl/plural.y 2002-03-11 03:32:00.000000000 -0500
-+++ glibc-2.3.2/intl/plural.y 2003-05-12 12:13:04.000000000 -0400
-@@ -32,6 +32,7 @@
-
- #include <stddef.h>
- #include <stdlib.h>
-+#include <string.h>
- #include "plural-exp.h"
-
- /* The main function generated by the parser is called __gettextparse,
---- glibc-2.3.2/intl/po2test.sed 2000-01-22 00:43:54.000000000 -0500
-+++ glibc-2.3.2/intl/po2test.sed 2003-04-12 11:39:42.000000000 -0400
-@@ -1,5 +1,5 @@
- # po2test.sed - Convert Uniforum style .po file to C code for testing.
--# Copyright (C) 2000 Free Software Foundation, Inc.
-+# Copyright (C) 2000,2003 Free Software Foundation, Inc.
- # Ulrich Drepper <drepper@cygnus.com>, 2000.
- #
- # This program is free software; you can redistribute it and/or modify
-@@ -16,55 +16,37 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
-+
- #
- # We copy the original message as a comment into the .msg file. But enclose
- # them with INPUT ( ).
- #
--/^msgid/ {
-- s/msgid[ ]*"\(.*\)"/INPUT ("\1")/
--# Clear flag from last substitution.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)")\(\n.*\)/\1\\\2/
-- P
--# We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
-+s/^msgid[ ]*"\(.*\)"/INPUT ("\1")/
-+# Clear flag from last substitution and jump if matching
-+tb
-+
- #
- # Copy the translations as well and enclose them with OUTPUT ( ).
- #
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
--# Clear flag from last substitution.
-- tb
-+s/^msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
-+# Clear flag from last substitution and jump if matching
-+tb
-+
-+d
-+
-+:b
- # Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)")\(\n.*\)/\1\\\2/
-- P
-+$!N
-+# Check whether second part is a continuation line. If so, before printing
-+# insert '\'.
-+s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
-+P
-+ta
-+# No, go to the top and process it. Note that `D' includes a jump to the start!!
-+D
-+# Yes, we found a continuation line.
-+:a
- # We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
-+s/[^\n]*\n//
-+# Clear the substitution flag and do the next line.
-+tb
---- glibc-2.3.2/intl/tst-gettext2.sh 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/intl/tst-gettext2.sh 2003-09-19 22:37:02.000000000 -0400
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Test of gettext functions.
--# Copyright (C) 2000 Free Software Foundation, Inc.
-+# Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- # This file is part of the GNU C Library.
- #
-
-@@ -22,10 +22,6 @@
- common_objpfx=$1
- objpfx=$2
-
--GCONV_PATH=${common_objpfx}iconvdata
--export GCONV_PATH
--LOCPATH=${objpfx}domaindir
--export LOCPATH
- LC_ALL=C
- export LC_ALL
-
-@@ -64,6 +60,10 @@
- msgfmt -o ${objpfx}domaindir/lang2/LC_MESSAGES/tstlang.mo \
- tstlang2.po
-
-+GCONV_PATH=${common_objpfx}iconvdata
-+export GCONV_PATH
-+LOCPATH=${objpfx}domaindir
-+export LOCPATH
-
- # Now run the test.
- ${common_objpfx}elf/ld.so --library-path $common_objpfx \
---- glibc-2.3.2/io/Makefile 2002-10-23 02:21:16.000000000 -0400
-+++ glibc-2.3.2/io/Makefile 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1992-1999,2000,01,02 Free Software Foundation, Inc.
-+# Copyright (C) 1992-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
-@@ -63,7 +63,20 @@
-
- include ../Rules
-
--CFLAGS-fts.c = -Wno-uninitialized
-+CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-poll.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-lockf.c = -fexceptions
-+CFLAGS-statfs.c = -fexceptions
-+CFLAGS-fstatfs.c = -fexceptions
-+CFLAGS-statvfs.c = -fexceptions
-+CFLAGS-fstatvfs.c = -fexceptions
-+CFLAGS-fts.c = -Wno-uninitialized $(uses-callbacks) -fexceptions
-+CFLAGS-ftw.c = $(uses-callbacks) -fexceptions
-+CFLAGS-ftw64.c = $(uses-callbacks) -fexceptions
-+CFLAGS-lockf.c = -fexceptions
-+CFLAGS-posix_fallocate.c = -fexceptions
-+CFLAGS-posix_fallocate64.c = -fexceptions
-+
- CFLAGS-test-stat.c = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
- CFLAGS-test-lfs.c = -D_LARGEFILE64_SOURCE
-
-@@ -83,5 +96,6 @@
- tests: $(objpfx)ftwtest.out
-
- $(objpfx)ftwtest.out: $(objpfx)ftwtest
-- $(SHELL) -e ftwtest-sh $(common-objpfx) $(<D)/$(<F) > $@
-+ $(SHELL) -e ftwtest-sh $(shell cd $(common-objpfx). && pwd)/ \
-+ $(shell cd $(<D) && pwd)/$(<F) > $@
- endif
---- glibc-2.3.2/io/fcntl.h 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/io/fcntl.h 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1994-2001,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
-@@ -56,41 +56,48 @@
- #endif /* XPG */
-
- /* Do the file control operation described by CMD on FD.
-- The remaining arguments are interpreted depending on CMD. */
--extern int fcntl (int __fd, int __cmd, ...) __THROW;
-+ The remaining arguments are interpreted depending on CMD.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int fcntl (int __fd, int __cmd, ...);
-
- /* Open FILE and return a new file descriptor for it, or -1 on error.
- OFLAG determines the type of access used. If O_CREAT is on OFLAG,
-- the third argument is taken as a `mode_t', the mode of the created file. */
-+ the third argument is taken as a `mode_t', the mode of the created file.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- #ifndef __USE_FILE_OFFSET64
--extern int open (__const char *__file, int __oflag, ...) __THROW;
-+extern int open (__const char *__file, int __oflag, ...);
- #else
- # ifdef __REDIRECT
--extern int __REDIRECT (open, (__const char *__file, int __oflag, ...) __THROW,
-- open64);
-+extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64);
- # else
- # define open open64
- # endif
- #endif
- #ifdef __USE_LARGEFILE64
--extern int open64 (__const char *__file, int __oflag, ...) __THROW;
-+extern int open64 (__const char *__file, int __oflag, ...);
- #endif
-
--/* Create and open FILE, with mode MODE.
-- This takes an `int' MODE argument because that is
-- what `mode_t' will be widened to. */
-+/* Create and open FILE, with mode MODE. This takes an `int' MODE
-+ argument because that is what `mode_t' will be widened to.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- #ifndef __USE_FILE_OFFSET64
--extern int creat (__const char *__file, __mode_t __mode) __THROW;
-+extern int creat (__const char *__file, __mode_t __mode);
- #else
- # ifdef __REDIRECT
--extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode) __THROW,
-+extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
- creat64);
- # else
- # define creat creat64
- # endif
- #endif
- #ifdef __USE_LARGEFILE64
--extern int creat64 (__const char *__file, __mode_t __mode) __THROW;
-+extern int creat64 (__const char *__file, __mode_t __mode);
- #endif
-
- #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
-@@ -109,17 +116,16 @@
- # define F_TEST 3 /* Test a region for other processes locks. */
-
- # ifndef __USE_FILE_OFFSET64
--extern int lockf (int __fd, int __cmd, __off_t __len) __THROW;
-+extern int lockf (int __fd, int __cmd, __off_t __len);
- # else
- # ifdef __REDIRECT
--extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW,
-- lockf64);
-+extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64);
- # else
- # define lockf lockf64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
--extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW;
-+extern int lockf64 (int __fd, int __cmd, __off64_t __len);
- # endif
- #endif
-
-@@ -127,38 +133,40 @@
- /* Advice the system about the expected behaviour of the application with
- respect to the file associated with FD. */
- # ifndef __USE_FILE_OFFSET64
--extern int posix_fadvise (int __fd, __off_t __offset, size_t __len,
-+extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
- int __advise) __THROW;
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (posix_fadvise, (int __fd, __off64_t __offset,
-- size_t __len, int __advise) __THROW,
-+ __off64_t __len, int __advise) __THROW,
- posix_fadvise64);
- # else
- # define posix_fadvise posix_fadvise64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
--extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len,
-+extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
- int __advise) __THROW;
- # endif
-
-
--/* Reserve storage for the data of the file associated with FD. */
-+/* Reserve storage for the data of the file associated with FD.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- # ifndef __USE_FILE_OFFSET64
--extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) __THROW;
-+extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset,
-- size_t __len) __THROW,
-+ __off64_t __len),
- posix_fallocate64);
- # else
- # define posix_fallocate posix_fallocate64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
--extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len)
-- __THROW;
-+extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
- # endif
- #endif
-
---- glibc-2.3.2/io/fts.c 2002-04-08 03:02:07.000000000 -0400
-+++ glibc-2.3.2/io/fts.c 2003-03-18 16:46:07.000000000 -0500
-@@ -581,8 +581,9 @@
- FTSENT *cur, *tail;
- DIR *dirp;
- void *oldaddr;
-- int cderrno, descend, len, level, maxlen, nlinks, saved_errno,
-+ int cderrno, descend, len, level, nlinks, saved_errno,
- nostat, doadjust;
-+ size_t maxlen;
- char *cp;
-
- /* Set current node pointer. */
---- glibc-2.3.2/io/fts.h 2001-11-05 15:57:28.000000000 -0500
-+++ glibc-2.3.2/io/fts.h 2003-09-19 22:37:02.000000000 -0400
-@@ -120,11 +120,11 @@
- } FTSENT;
-
- __BEGIN_DECLS
--FTSENT *fts_children (FTS *, int) __THROW;
--int fts_close (FTS *) __THROW;
-+FTSENT *fts_children (FTS *, int);
-+int fts_close (FTS *);
- FTS *fts_open (char * const *, int,
-- int (*)(const FTSENT **, const FTSENT **)) __THROW;
--FTSENT *fts_read (FTS *) __THROW;
-+ int (*)(const FTSENT **, const FTSENT **));
-+FTSENT *fts_read (FTS *);
- int fts_set (FTS *, FTSENT *, int) __THROW;
- __END_DECLS
-
---- glibc-2.3.2/io/ftw.c 2003-02-08 13:25:54.000000000 -0500
-+++ glibc-2.3.2/io/ftw.c 2003-08-21 08:37:02.000000000 -0400
-@@ -258,6 +258,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- open_dir_stream (struct ftw_data *data, struct dir_data *dirp)
- {
- int result = 0;
-@@ -348,7 +349,8 @@
- }
-
-
--static inline int
-+static int
-+internal_function
- process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
- size_t namlen)
- {
-@@ -482,17 +484,6 @@
- {
- if (__fchdir (dirfd (dir.stream)) < 0)
- {
-- if (errno == ENOSYS)
-- {
-- if (__chdir (data->dirbuf) < 0)
-- result = -1;
-- }
-- else
-- result = -1;
-- }
--
-- if (result != 0)
-- {
- int save_err = errno;
- __closedir (dir.stream);
- __set_errno (save_err);
-@@ -501,7 +492,7 @@
- data->actdir = data->maxdir - 1;
- data->dirstreams[data->actdir] = NULL;
-
-- return result;
-+ return -1;
- }
- }
-
---- glibc-2.3.2/io/ftw.h 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/io/ftw.h 2003-04-24 20:05:57.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1992,1996,1997,1998,1999,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
-@@ -103,40 +103,45 @@
- # endif
- #endif
-
--/* Call a function on every element in a directory tree. */
-+/* Call a function on every element in a directory tree.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- #ifndef __USE_FILE_OFFSET64
--extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)
-- __THROW;
-+extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors);
- #else
- # ifdef __REDIRECT
- extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,
-- int __descriptors) __THROW, ftw64);
-+ int __descriptors), ftw64);
- # else
- # define ftw ftw64
- # endif
- #endif
- #ifdef __USE_LARGEFILE64
- extern int ftw64 (__const char *__dir, __ftw64_func_t __func,
-- int __descriptors) __THROW;
-+ int __descriptors);
- #endif
-
- #ifdef __USE_XOPEN_EXTENDED
- /* Call a function on every element in a directory tree. FLAG allows
-- to specify the behaviour more detailed. */
-+ to specify the behaviour more detailed.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- # ifndef __USE_FILE_OFFSET64
- extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,
-- int __flag) __THROW;
-+ int __flag);
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,
-- int __descriptors, int __flag) __THROW, nftw64);
-+ int __descriptors, int __flag), nftw64);
- # else
- # define nftw nftw64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
- extern int nftw64 (__const char *__dir, __nftw64_func_t __func,
-- int __descriptors, int __flag) __THROW;
-+ int __descriptors, int __flag);
- # endif
- #endif
-
---- glibc-2.3.2/io/test-utime.c 2002-12-12 04:24:33.000000000 -0500
-+++ glibc-2.3.2/io/test-utime.c 2003-08-21 08:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1994, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1994,1996,1997,2000,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
-@@ -76,6 +76,12 @@
- return 1;
- }
-
-+ /* The clocks used to set the modification time and that used in the
-+ time() call need not be the same. They need not have the same
-+ precision. Therefore we delay the following operation by one
-+ second which makes sure we can compare with second precision. */
-+ sleep (1);
-+
- if (utime (file, NULL))
- {
- perror ("utime NULL");
-@@ -83,6 +89,8 @@
- return 1;
- }
-
-+ sleep (1);
-+
- now2 = time (NULL);
- if (now2 == (time_t)-1)
- {
---- glibc-2.3.2/libio/Makefile 2002-10-25 04:02:04.000000000 -0400
-+++ glibc-2.3.2/libio/Makefile 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1995,96,97,98,99,2000,01,02 Free Software Foundation, Inc.
-+# Copyright (C) 1995-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
-@@ -53,7 +53,8 @@
- tst-mmap-setvbuf bug-ungetwc1 bug-ungetwc2 tst-atime tst-eof \
- tst-freopen bug-rewind bug-rewind2 bug-ungetc bug-fseek \
- tst-mmap-eofsync tst-mmap-fflushsync bug-mmap-fflush \
-- tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush
-+ tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush \
-+ bug-ungetc2 bug-ftell
- test-srcs = test-freopen
-
- all: # Make this the default target; it will be defined in Rules.
-@@ -75,10 +76,64 @@
- endif
-
- # Support for exception handling.
--CFLAGS-genops.c = $(exceptions)
--CFLAGS-wgenops.c = $(exceptions)
- CFLAGS-fileops.c = $(exceptions)
-+CFLAGS-fputc.c = $(exceptions)
-+CFLAGS-fputwc.c = $(exceptions)
-+CFLAGS-freopen64.c = $(exceptions)
-+CFLAGS-freopen.c = $(exceptions)
-+CFLAGS-fseek.c = $(exceptions)
-+CFLAGS-fseeko64.c = $(exceptions)
-+CFLAGS-fseeko.c = $(exceptions)
-+CFLAGS-ftello64.c = $(exceptions)
-+CFLAGS-ftello.c = $(exceptions)
-+CFLAGS-fwide.c = $(exceptions)
-+CFLAGS-genops.c = $(exceptions)
-+CFLAGS-getc.c = $(exceptions)
-+CFLAGS-getchar.c = $(exceptions)
-+CFLAGS-getwc.c = $(exceptions)
-+CFLAGS-getwchar.c = $(exceptions)
-+CFLAGS-iofclose.c = $(exceptions)
-+CFLAGS-iofflush.c = $(exceptions)
-+CFLAGS-iofgetpos64.c = $(exceptions)
-+CFLAGS-iofgetpos.c = $(exceptions)
-+CFLAGS-iofgets.c = $(exceptions)
-+CFLAGS-iofgetws.c = $(exceptions)
-+CFLAGS-iofputs.c = $(exceptions)
-+CFLAGS-iofputws.c = $(exceptions)
-+CFLAGS-iofread.c = $(exceptions)
-+CFLAGS-iofsetpos64.c = $(exceptions)
-+CFLAGS-iofsetpos.c = $(exceptions)
-+CFLAGS-ioftell.c = $(exceptions)
-+CFLAGS-iofwrite.c = $(exceptions)
-+CFLAGS-iogetdelim.c = $(exceptions)
-+CFLAGS-iogetline.c = $(exceptions)
-+CFLAGS-iogets.c = $(exceptions)
-+CFLAGS-iogetwline.c = $(exceptions)
-+CFLAGS-ioputs.c = $(exceptions)
-+CFLAGS-ioseekoff.c = $(exceptions)
-+CFLAGS-ioseekpos.c = $(exceptions)
-+CFLAGS-iosetbuffer.c = $(exceptions)
-+CFLAGS-iosetvbuf.c = $(exceptions)
-+CFLAGS-ioungetc.c = $(exceptions)
-+CFLAGS-ioungetwc.c = $(exceptions)
-+CFLAGS-oldfileops.c = $(exceptions)
-+CFLAGS-oldiofclose.c = $(exceptions)
-+CFLAGS-oldiofgetpos64.c = $(exceptions)
-+CFLAGS-oldiofgetpos.c = $(exceptions)
-+CFLAGS-oldiofsetpos64.c = $(exceptions)
-+CFLAGS-oldiofsetpos.c = $(exceptions)
-+CFLAGS-peekc.c = $(exceptions)
-+CFLAGS-putc.c = $(exceptions)
-+CFLAGS-putchar.c = $(exceptions)
-+CFLAGS-putwc.c = $(exceptions)
-+CFLAGS-putwchar.c = $(exceptions)
-+CFLAGS-rewind.c = $(exceptions)
- CFLAGS-wfileops.c = $(exceptions)
-+CFLAGS-wgenops.c = $(exceptions)
-+CFLAGS-oldiofopen.c = $(exceptions)
-+CFLAGS-iofopen.c = $(exceptions)
-+CFLAGS-iofopen64.c = $(exceptions)
-+CFLAGS-oldtmpfile.c = $(exceptions)
- # XXX Do we need filedoalloc and wfiledoalloc? Others?
-
- CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\"
-@@ -93,6 +148,7 @@
- tst-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
- bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
- tst-swscanf-ENV = LOCPATH=$(common-objpfx)localedata
-+bug-ftell-ENV = LOCPATH=$(common-objpfx)localedata
-
- generated = tst-fopenloc.mtrace tst-fopenloc.check
-
---- glibc-2.3.2/libio/Versions 2000-09-01 04:39:09.000000000 -0400
-+++ glibc-2.3.2/libio/Versions 2003-08-21 08:37:02.000000000 -0400
-@@ -145,4 +145,8 @@
- # w*
- wprintf; wscanf;
- }
-+ GLIBC_PRIVATE {
-+ # Used by NPTL and librt
-+ __libc_fatal;
-+ }
- }
---- glibc-2.3.2/libio/bits/stdio.h 2001-08-02 19:39:43.000000000 -0400
-+++ glibc-2.3.2/libio/bits/stdio.h 2003-05-12 12:13:04.000000000 -0400
-@@ -31,14 +31,14 @@
- #ifdef __USE_EXTERN_INLINES
- /* Write formatted output to stdout from argument list ARG. */
- __STDIO_INLINE int
--vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW
-+vprintf (__const char *__restrict __fmt, _G_va_list __arg)
- {
- return vfprintf (stdout, __fmt, __arg);
- }
-
- /* Read a character from stdin. */
- __STDIO_INLINE int
--getchar (void) __THROW
-+getchar (void)
- {
- return _IO_getc (stdin);
- }
-@@ -47,14 +47,14 @@
- # if defined __USE_POSIX || defined __USE_MISC
- /* This is defined in POSIX.1:1996. */
- __STDIO_INLINE int
--getc_unlocked (FILE *__fp) __THROW
-+getc_unlocked (FILE *__fp)
- {
- return _IO_getc_unlocked (__fp);
- }
-
- /* This is defined in POSIX.1:1996. */
- __STDIO_INLINE int
--getchar_unlocked (void) __THROW
-+getchar_unlocked (void)
- {
- return _IO_getc_unlocked (stdin);
- }
-@@ -63,7 +63,7 @@
-
- /* Write a character to stdout. */
- __STDIO_INLINE int
--putchar (int __c) __THROW
-+putchar (int __c)
- {
- return _IO_putc (__c, stdout);
- }
-@@ -72,7 +72,7 @@
- # ifdef __USE_MISC
- /* Faster version when locking is not necessary. */
- __STDIO_INLINE int
--fputc_unlocked (int __c, FILE *__stream) __THROW
-+fputc_unlocked (int __c, FILE *__stream)
- {
- return _IO_putc_unlocked (__c, __stream);
- }
-@@ -82,14 +82,14 @@
- # if defined __USE_POSIX || defined __USE_MISC
- /* This is defined in POSIX.1:1996. */
- __STDIO_INLINE int
--putc_unlocked (int __c, FILE *__stream) __THROW
-+putc_unlocked (int __c, FILE *__stream)
- {
- return _IO_putc_unlocked (__c, __stream);
- }
-
- /* This is defined in POSIX.1:1996. */
- __STDIO_INLINE int
--putchar_unlocked (int __c) __THROW
-+putchar_unlocked (int __c)
- {
- return _IO_putc_unlocked (__c, stdout);
- }
-@@ -99,7 +99,7 @@
- # ifdef __USE_GNU
- /* Like `getdelim', but reads up to a newline. */
- __STDIO_INLINE _IO_ssize_t
--getline (char **__lineptr, size_t *__n, FILE *__stream) __THROW
-+getline (char **__lineptr, size_t *__n, FILE *__stream)
- {
- return __getdelim (__lineptr, __n, '\n', __stream);
- }
---- glibc-2.3.2/libio/bug-ftell.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/libio/bug-ftell.c 2003-09-08 03:04:11.000000000 -0400
-@@ -0,0 +1,57 @@
-+#include <locale.h>
-+#include <stdio.h>
-+#include <wchar.h>
-+#include <sys/types.h>
-+
-+
-+static int
-+do_test (void)
-+{
-+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
-+ {
-+ puts ("setlocale failed");
-+ return 1;
-+ }
-+
-+ FILE *fp = tmpfile ();
-+ if (fp == NULL)
-+ {
-+ puts ("tmpfile failed");
-+ return 1;
-+ }
-+
-+ if (fputws (L"hello", fp) == EOF)
-+ {
-+ puts ("fputws failed");
-+ return 1;
-+ }
-+
-+ rewind (fp);
-+
-+ const wchar_t *cp;
-+ unsigned int cnt;
-+ for (cp = L"hello", cnt = 1; *cp != L'\0'; ++cp, ++cnt)
-+ {
-+ wint_t wc = fgetwc (fp);
-+ if (wc != (wint_t) *cp)
-+ {
-+ printf ("fgetwc failed: got L'%lc', expected L'%lc'\n", wc, *cp);
-+ return 1;
-+ }
-+ off_t o = ftello (fp);
-+ if (o != cnt)
-+ {
-+ printf ("ftello failed: got %lu, expected %u\n",
-+ (unsigned long int) o, cnt);
-+ return 1;
-+ }
-+ printf ("round %u OK\n", cnt);
-+ }
-+
-+ fclose (fp);
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/libio/bug-ungetc2.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/libio/bug-ungetc2.c 2003-09-06 01:41:42.000000000 -0400
-@@ -0,0 +1,98 @@
-+#include <stdio.h>
-+#include <sys/types.h>
-+
-+
-+static int
-+check (FILE *fp, off_t o)
-+{
-+ int result = 0;
-+ if (feof (fp))
-+ {
-+ puts ("feof !");
-+ result = 1;
-+ }
-+ if (ferror (fp))
-+ {
-+ puts ("ferror !");
-+ result = 1;
-+ }
-+ if (ftello (fp) != o)
-+ {
-+ printf ("position = %lu, not %lu\n", (unsigned long int) ftello (fp),
-+ (unsigned long int) o);
-+ result = 1;
-+ }
-+ return result;
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ FILE *fp = tmpfile ();
-+ if (fp == NULL)
-+ {
-+ puts ("tmpfile failed");
-+ return 1;
-+ }
-+ if (check (fp, 0) != 0)
-+ return 1;
-+
-+ puts ("going to write");
-+ if (fputs ("hello", fp) == EOF)
-+ {
-+ puts ("fputs failed");
-+ return 1;
-+ }
-+ if (check (fp, 5) != 0)
-+ return 1;
-+
-+ puts ("going to rewind");
-+ rewind (fp);
-+ if (check (fp, 0) != 0)
-+ return 1;
-+
-+ puts ("going to read char");
-+ int c = fgetc (fp);
-+ if (c != 'h')
-+ {
-+ printf ("read %c, not %c\n", c, 'h');
-+ return 1;
-+ }
-+ if (check (fp, 1) != 0)
-+ return 1;
-+
-+ puts ("going to put back");
-+ if (ungetc (' ', fp) == EOF)
-+ {
-+ puts ("ungetc failed");
-+ return 1;
-+ }
-+ if (check (fp, 0) != 0)
-+ return 1;
-+
-+ puts ("going to write again");
-+ if (fputs ("world", fp) == EOF)
-+ {
-+ puts ("2nd fputs failed");
-+ return 1;
-+ }
-+ if (check (fp, 5) != 0)
-+ return 1;
-+
-+ puts ("going to rewind again");
-+ rewind (fp);
-+ if (check (fp, 0) != 0)
-+ return 1;
-+
-+ if (fclose (fp) != 0)
-+ {
-+ puts ("fclose failed");
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/libio/fileops.c 2003-01-08 00:18:32.000000000 -0500
-+++ glibc-2.3.2/libio/fileops.c 2003-09-19 22:37:02.000000000 -0400
-@@ -47,6 +47,7 @@
- # include "../iconv/gconv_charset.h"
- # include "../iconv/gconv_int.h"
- # include <shlib-compat.h>
-+# include <not-cancel.h>
- #endif
- #ifndef errno
- extern int errno;
-@@ -58,11 +59,11 @@
-
- #ifdef _LIBC
- # define open(Name, Flags, Prot) __open (Name, Flags, Prot)
--# define close(FD) __close (FD)
- # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence)
- # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes)
- # define write(FD, Buf, NBytes) __write (FD, Buf, NBytes)
- # define _IO_do_write _IO_new_do_write /* For macro uses. */
-+# define _IO_file_close_it _IO_new_file_close_it
- #else
- # define _IO_new_do_write _IO_do_write
- # define _IO_new_file_attach _IO_file_attach
-@@ -214,9 +215,6 @@
- }
- INTDEF2(_IO_new_file_finish, _IO_file_finish)
-
--#if defined __GNUC__ && __GNUC__ >= 2
--__inline__
--#endif
- _IO_FILE *
- _IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64)
- _IO_FILE *fp;
-@@ -227,10 +225,12 @@
- int is32not64;
- {
- int fdesc;
--#ifdef _G_OPEN64
-- fdesc = (is32not64
-- ? open (filename, posix_mode, prot)
-- : _G_OPEN64 (filename, posix_mode, prot));
-+#ifdef _LIBC
-+ if (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0))
-+ fdesc = open_not_cancel (filename,
-+ posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot);
-+ else
-+ fdesc = open (filename, posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot);
- #else
- fdesc = open (filename, posix_mode, prot);
- #endif
-@@ -242,7 +242,7 @@
- if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_end, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD && errno != ESPIPE)
- {
-- close (fdesc);
-+ close_not_cancel (fdesc);
- return NULL;
- }
- INTUSE(_IO_link_in) ((struct _IO_FILE_plus *) fp);
-@@ -292,7 +292,7 @@
- #ifdef _LIBC
- last_recognized = mode;
- #endif
-- for (i = 1; i < 5; ++i)
-+ for (i = 1; i < 6; ++i)
- {
- switch (*++mode)
- {
-@@ -319,6 +319,9 @@
- case 'm':
- fp->_flags2 |= _IO_FLAGS2_MMAP;
- continue;
-+ case 'c':
-+ fp->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+ break;
- default:
- /* Ignore. */
- continue;
-@@ -353,6 +356,7 @@
- /* Something went wrong, we cannot load the conversion modules.
- This means we cannot proceed since the user explicitly asked
- for these. */
-+ (void) INTUSE(_IO_file_close_it) (fp);
- __set_errno (EINVAL);
- return NULL;
- }
-@@ -397,10 +401,6 @@
-
- /* Set the mode now. */
- result->_mode = 1;
--
-- /* We don't need the step data structure anymore. */
-- __gconv_release_cache (fcts.towc, fcts.towc_nsteps);
-- __gconv_release_cache (fcts.tomb, fcts.tomb_nsteps);
- }
- }
- #endif /* GNU libc */
-@@ -456,7 +456,7 @@
- _IO_FILE *result;
-
- /* Change the function table. */
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-
- /* And perform the normal operation. */
-@@ -566,16 +566,13 @@
- traditional Unix systems did this for stdout. stderr better
- not be line buffered. So we do just that here
- explicitly. --drepper */
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdout);
-- _IO_flockfile (_IO_stdout);
-+ _IO_acquire_lock (_IO_stdout);
-
- if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
- == (_IO_LINKED | _IO_LINE_BUF))
- _IO_OVERFLOW (_IO_stdout, EOF);
-
-- _IO_funlockfile (_IO_stdout);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdout);
- #endif
- }
-
-@@ -708,7 +705,7 @@
- fp->_IO_buf_base = fp->_IO_buf_end = NULL;
- _IO_setg (fp, NULL, NULL, NULL);
- if (fp->_mode <= 0)
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- else
- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-@@ -801,7 +798,7 @@
- /* We couldn't use mmap, so revert to the vanilla file operations. */
-
- if (fp->_mode <= 0)
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- else
- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-@@ -844,6 +841,15 @@
- makes room for subsequent output.
- Otherwise, set the read pointers to _IO_read_end (leaving that
- alone, so it can continue to correspond to the external position). */
-+ if (__builtin_expect (_IO_in_backup (f), 0))
-+ {
-+ size_t nbackup = f->_IO_read_end - f->_IO_read_ptr;
-+ INTUSE(_IO_free_backup_area) (f);
-+ f->_IO_read_base -= MIN (nbackup,
-+ f->_IO_read_base - f->_IO_buf_base);
-+ f->_IO_read_ptr = f->_IO_read_base;
-+ }
-+
- if (f->_IO_read_ptr == f->_IO_buf_end)
- f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base;
- f->_IO_write_ptr = f->_IO_read_ptr;
-@@ -1207,7 +1213,9 @@
- void *buf;
- _IO_ssize_t size;
- {
-- return read (fp->_fileno, buf, size);
-+ return (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0)
-+ ? read_not_cancel (fp->_fileno, buf, size)
-+ : read (fp->_fileno, buf, size));
- }
- INTDEF(_IO_file_read)
-
-@@ -1245,14 +1253,18 @@
- /* In addition to closing the file descriptor we have to unmap the file. */
- (void) __munmap (fp->_IO_buf_base, fp->_IO_buf_end - fp->_IO_buf_base);
- fp->_IO_buf_base = fp->_IO_buf_end = NULL;
-- return close (fp->_fileno);
-+ /* Cancelling close should be avoided if possible since it leaves an
-+ unrecoverable state behind. */
-+ return close_not_cancel (fp->_fileno);
- }
-
- int
- _IO_file_close (fp)
- _IO_FILE *fp;
- {
-- return close (fp->_fileno);
-+ /* Cancelling close should be avoided if possible since it leaves an
-+ unrecoverable state behind. */
-+ return close_not_cancel (fp->_fileno);
- }
- INTDEF(_IO_file_close)
-
-@@ -1265,7 +1277,10 @@
- _IO_ssize_t to_do = n;
- while (to_do > 0)
- {
-- _IO_ssize_t count = write (f->_fileno, data, to_do);
-+ _IO_ssize_t count = (__builtin_expect (f->_flags2
-+ & _IO_FLAGS2_NOTCANCEL, 0)
-+ ? write_not_cancel (f->_fileno, data, to_do)
-+ : write (f->_fileno, data, to_do));
- if (count < 0)
- {
- f->_flags |= _IO_ERR_SEEN;
-@@ -1548,6 +1563,7 @@
-
- #ifdef _LIBC
- # undef _IO_do_write
-+# undef _IO_file_close_it
- versioned_symbol (libc, _IO_new_do_write, _IO_do_write, GLIBC_2_1);
- versioned_symbol (libc, _IO_new_file_attach, _IO_file_attach, GLIBC_2_1);
- versioned_symbol (libc, _IO_new_file_close_it, _IO_file_close_it, GLIBC_2_1);
-@@ -1586,7 +1602,7 @@
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
- };
--INTVARDEF(_IO_file_jumps)
-+libc_hidden_data_def (_IO_file_jumps)
-
- struct _IO_jump_t _IO_file_jumps_mmap =
- {
---- glibc-2.3.2/libio/fputc.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/fputc.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 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
-@@ -35,11 +35,9 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_putc_unlocked (c, fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/fputwc.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/fputwc.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1996,1997,1998,1999,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
-@@ -35,13 +35,11 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_fwide (fp, 1) < 0)
- result = WEOF;
- else
- result = _IO_putwc_unlocked (wc, fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/freopen.c 2002-10-03 04:11:25.000000000 -0400
-+++ glibc-2.3.2/libio/freopen.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,96,97,98,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,95,96,97,98,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
-@@ -43,8 +44,7 @@
- CHECK_FILE (fp, NULL);
- if (!(fp->_flags & _IO_IS_FILEBUF))
- return NULL;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (filename == NULL && _IO_fileno (fp) >= 0)
- {
- fd = __dup (_IO_fileno (fp));
-@@ -67,9 +67,9 @@
- #endif
- {
- INTUSE(_IO_file_close_it) (fp);
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
-- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
-+ if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
-+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
- result = INTUSE(_IO_file_fopen) (fp, filename, mode, 1);
- if (result != NULL)
- result = __fopen_maybe_mmap (result);
-@@ -83,7 +83,6 @@
- if (filename != NULL)
- free ((char *) filename);
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/freopen64.c 2002-10-03 04:11:32.000000000 -0400
-+++ glibc-2.3.2/libio/freopen64.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002
-+/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002, 2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -44,8 +44,7 @@
- CHECK_FILE (fp, NULL);
- if (!(fp->_flags & _IO_IS_FILEBUF))
- return NULL;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (filename == NULL && _IO_fileno (fp) >= 0)
- {
- fd = __dup (_IO_fileno (fp));
-@@ -53,9 +52,9 @@
- filename = fd_to_filename (fd);
- }
- INTUSE(_IO_file_close_it) (fp);
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
-- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
-+ if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
-+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
- result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0);
- if (result != NULL)
- result = __fopen_maybe_mmap (result);
-@@ -68,8 +67,7 @@
- if (filename != NULL)
- free ((char *) filename);
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- #else
- __set_errno (ENOSYS);
---- glibc-2.3.2/libio/fseek.c 2002-08-04 14:19:41.000000000 -0400
-+++ glibc-2.3.2/libio/fseek.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 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
-@@ -36,11 +37,9 @@
- {
- int result;
- CHECK_FILE (fp, -1);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_fseek (fp, offset, whence);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- libc_hidden_def (fseek)
---- glibc-2.3.2/libio/fseeko.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/fseeko.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1995,1996,1997,1998,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
-@@ -36,10 +36,8 @@
- {
- int result;
- CHECK_FILE (fp, -1);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_fseek (fp, offset, whence);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/fseeko64.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/fseeko64.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1995,1996,1997,1998,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
-@@ -38,11 +38,9 @@
- #ifdef _G_LSEEK64
- int result;
- CHECK_FILE (fp, -1);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_fseek (fp, offset, whence);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- #else
- __set_errno (ENOSYS);
---- glibc-2.3.2/libio/ftello.c 2002-11-05 02:37:46.000000000 -0500
-+++ glibc-2.3.2/libio/ftello.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-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
-@@ -37,16 +37,14 @@
- {
- _IO_off64_t pos;
- CHECK_FILE (fp, -1L);
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- {
- if (fp->_mode <= 0)
- pos -= fp->_IO_save_end - fp->_IO_save_base;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (pos == _IO_pos_BAD)
- {
- #ifdef EIO
---- glibc-2.3.2/libio/ftello64.c 2002-11-05 02:37:15.000000000 -0500
-+++ glibc-2.3.2/libio/ftello64.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-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
-@@ -38,16 +38,14 @@
- #ifdef _G_LSEEK64
- _IO_off64_t pos;
- CHECK_FILE (fp, -1L);
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- {
- if (fp->_mode <= 0)
- pos -= fp->_IO_save_end - fp->_IO_save_base;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (pos == _IO_pos_BAD)
- {
- #ifdef EIO
---- glibc-2.3.2/libio/fwide.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/fwide.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 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
-@@ -44,13 +44,9 @@
- or the orientation already has been determined. */
- return fp->_mode;
-
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
--
-+ _IO_acquire_lock (fp);
- result = _IO_fwide (fp, mode);
--
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
-
- return result;
- }
---- glibc-2.3.2/libio/genops.c 2003-01-08 00:22:10.000000000 -0500
-+++ glibc-2.3.2/libio/genops.c 2003-08-21 08:37:02.000000000 -0400
-@@ -324,7 +324,7 @@
- _IO_FILE *fp;
- {
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
-+ if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1)
- return EOF;
- #endif
-
-@@ -357,7 +357,7 @@
- _IO_FILE *fp;
- {
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
-+ if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1)
- return EOF;
- #endif
-
-@@ -602,12 +602,9 @@
- INTDEF(_IO_init)
-
- void
--_IO_no_init (fp, flags, orientation, wd, jmp)
-+_IO_old_init (fp, flags)
- _IO_FILE *fp;
- int flags;
-- int orientation;
-- struct _IO_wide_data *wd;
-- struct _IO_jump_t *jmp;
- {
- fp->_flags = _IO_MAGIC|flags;
- fp->_flags2 = 0;
-@@ -633,6 +630,17 @@
- if (fp->_lock != NULL)
- _IO_lock_init (*fp->_lock);
- #endif
-+}
-+
-+void
-+_IO_no_init (fp, flags, orientation, wd, jmp)
-+ _IO_FILE *fp;
-+ int flags;
-+ int orientation;
-+ struct _IO_wide_data *wd;
-+ struct _IO_jump_t *jmp;
-+{
-+ _IO_old_init (fp, flags);
- fp->_mode = orientation;
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- if (orientation >= 0)
-@@ -826,7 +834,7 @@
-
- if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base)
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-- || (fp->_vtable_offset == 0
-+ || (_IO_vtable_offset (fp) == 0
- && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr
- > fp->_wide_data->_IO_write_base))
- #endif
---- glibc-2.3.2/libio/getc.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/getc.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 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
-@@ -36,11 +37,9 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_getc_unlocked (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/getchar.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/getchar.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 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
-@@ -34,12 +34,9 @@
- getchar ()
- {
- int result;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdin);
-- _IO_flockfile (_IO_stdin);
-+ _IO_acquire_lock (_IO_stdin);
- result = _IO_getc_unlocked (_IO_stdin);
-- _IO_funlockfile (_IO_stdin);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdin);
- return result;
- }
-
---- glibc-2.3.2/libio/getwc.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/getwc.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 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
-@@ -37,11 +38,9 @@
- {
- wint_t result;
- CHECK_FILE (fp, WEOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_getwc_unlocked (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/getwchar.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/getwchar.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1996,1997,1998,1999,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
-@@ -34,11 +34,8 @@
- getwchar ()
- {
- wint_t result;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdin);
-- _IO_flockfile (_IO_stdin);
-+ _IO_acquire_lock (_IO_stdin);
- result = _IO_getwc_unlocked (_IO_stdin);
-- _IO_funlockfile (_IO_stdin);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdin);
- return result;
- }
---- glibc-2.3.2/libio/iofclose.c 2002-04-02 22:00:56.000000000 -0500
-+++ glibc-2.3.2/libio/iofclose.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1995,1997-2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1995,1997-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
-@@ -49,7 +49,7 @@
- /* We desperately try to help programs which are using streams in a
- strange way and mix old and new functions. Detect old streams
- here. */
-- if (fp->_vtable_offset != 0)
-+ if (_IO_vtable_offset (fp) != 0)
- return _IO_old_fclose (fp);
- #endif
-
-@@ -57,15 +57,13 @@
- if (fp->_IO_file_flags & _IO_IS_FILEBUF)
- INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
-
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (fp->_IO_file_flags & _IO_IS_FILEBUF)
- status = INTUSE(_IO_file_close_it) (fp);
- else
- status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
- _IO_FINISH (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (fp->_mode > 0)
- {
- #if _LIBC
---- glibc-2.3.2/libio/iofdopen.c 2002-08-30 02:56:29.000000000 -0400
-+++ glibc-2.3.2/libio/iofdopen.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1994,1997-1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1994,1997,1998,1999,2000,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
-@@ -152,12 +153,12 @@
- (use_mmap && (read_write & _IO_NO_WRITES))
- ? &_IO_wfile_jumps_maybe_mmap :
- #endif
-- &INTUSE(_IO_wfile_jumps));
-+ &_IO_wfile_jumps);
- _IO_JUMPS (&new_f->fp) =
- #ifdef _G_HAVE_MMAP
- (use_mmap && (read_write & _IO_NO_WRITES)) ? &_IO_file_jumps_maybe_mmap :
- #endif
-- &INTUSE(_IO_file_jumps);
-+ &_IO_file_jumps;
- INTUSE(_IO_file_init) (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
---- glibc-2.3.2/libio/iofflush.c 2002-11-24 21:23:25.000000000 -0500
-+++ glibc-2.3.2/libio/iofflush.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 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
-@@ -38,11 +39,9 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_SYNC (fp) ? EOF : 0;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- }
---- glibc-2.3.2/libio/iofgetpos.c 2002-11-05 02:38:25.000000000 -0500
-+++ glibc-2.3.2/libio/iofgetpos.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-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
-@@ -38,8 +38,7 @@
- _IO_off64_t pos;
- int result = 0;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- {
-@@ -72,8 +71,7 @@
- posp->__state = fp->_wide_data->_IO_state;
- }
-
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/iofgetpos64.c 2002-11-05 02:38:14.000000000 -0500
-+++ glibc-2.3.2/libio/iofgetpos64.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-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
-@@ -37,17 +37,15 @@
- {
- #ifdef _G_LSEEK64
- _IO_off64_t pos;
-+ int result = 0;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- {
- if (fp->_mode <= 0)
- pos -= fp->_IO_save_end - fp->_IO_save_base;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
- if (pos == _IO_pos_BAD)
- {
- /* ANSI explicitly requires setting errno to a positive value on
-@@ -56,14 +54,18 @@
- if (errno == 0)
- __set_errno (EIO);
- # endif
-- return EOF;
-+ result = EOF;
- }
-- posp->__pos = pos;
-- if (fp->_mode > 0
-- && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0)
-- /* This is a stateful encoding, safe the state. */
-- posp->__state = fp->_wide_data->_IO_state;
-- return 0;
-+ else
-+ {
-+ posp->__pos = pos;
-+ if (fp->_mode > 0
-+ && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0)
-+ /* This is a stateful encoding, safe the state. */
-+ posp->__state = fp->_wide_data->_IO_state;
-+ }
-+ _IO_release_lock (fp);
-+ return result;
- #else
- __set_errno (ENOSYS);
- return EOF;
---- glibc-2.3.2/libio/iofgets.c 2002-08-26 17:15:51.000000000 -0400
-+++ glibc-2.3.2/libio/iofgets.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 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
-@@ -40,8 +41,7 @@
- CHECK_FILE (fp, NULL);
- if (n <= 0)
- return NULL;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- /* This is very tricky since a file descriptor may be in the
- non-blocking mode. The error flag doesn't mean much in this
- case. We return an error only when there is a new error. */
-@@ -59,8 +59,7 @@
- result = buf;
- }
- fp->_IO_file_flags |= old_error;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/iofgetws.c 2001-08-08 19:09:25.000000000 -0400
-+++ glibc-2.3.2/libio/iofgetws.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -40,8 +41,7 @@
- CHECK_FILE (fp, NULL);
- if (n <= 0)
- return NULL;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- /* This is very tricky since a file descriptor may be in the
- non-blocking mode. The error flag doesn't mean much in this
- case. We return an error only when there is a new error. */
-@@ -58,7 +58,6 @@
- result = buf;
- }
- fp->_IO_file_flags |= old_error;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/iofopen.c 2002-08-30 02:45:05.000000000 -0400
-+++ glibc-2.3.2/libio/iofopen.c 2003-04-12 11:39:42.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1997,1998,1999,2000,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
-@@ -80,11 +81,11 @@
- new_f->fp.file._lock = &new_f->lock;
- #endif
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-- _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &INTUSE(_IO_wfile_jumps));
-+ _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps);
- #else
- _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL);
- #endif
-- _IO_JUMPS (&new_f->fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS (&new_f->fp) = &_IO_file_jumps;
- INTUSE(_IO_file_init) (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
---- glibc-2.3.2/libio/iofputs.c 2002-08-26 17:15:51.000000000 -0400
-+++ glibc-2.3.2/libio/iofputs.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1996,1997,1998,1999,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 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
-@@ -36,13 +37,11 @@
- _IO_size_t len = strlen (str);
- int result = EOF;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-- if ((fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1)
-+ _IO_acquire_lock (fp);
-+ if ((_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
- && _IO_sputn (fp, str, len) == len)
- result = 1;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- libc_hidden_def (_IO_fputs)
---- glibc-2.3.2/libio/iofputws.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/iofputws.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 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
-@@ -36,12 +37,10 @@
- _IO_size_t len = __wcslen (str);
- int result = EOF;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_fwide (fp, 1) == 1
- && _IO_sputn (fp, (char *) str, len) == len)
- result = 1;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/iofread.c 2002-08-26 17:15:51.000000000 -0400
-+++ glibc-2.3.2/libio/iofread.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1995,1997,1998,1999,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 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
-@@ -39,11 +40,9 @@
- CHECK_FILE (fp, 0);
- if (bytes_requested == 0)
- return 0;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- bytes_read = INTUSE(_IO_sgetn) (fp, (char *) buf, bytes_requested);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return bytes_requested == bytes_read ? count : bytes_read / size;
- }
- INTDEF(_IO_fread)
---- glibc-2.3.2/libio/iofsetpos.c 2002-11-05 02:33:34.000000000 -0500
-+++ glibc-2.3.2/libio/iofsetpos.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 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
-@@ -36,8 +37,7 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD)
- {
-@@ -57,8 +57,7 @@
- /* This is a stateful encoding, restore the state. */
- fp->_wide_data->_IO_state = posp->__state;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/iofsetpos64.c 2002-11-05 02:33:14.000000000 -0500
-+++ glibc-2.3.2/libio/iofsetpos64.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 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
-@@ -37,8 +38,7 @@
- #ifdef _G_LSEEK64
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD)
- {
-@@ -58,8 +58,7 @@
- /* This is a stateful encoding, safe the state. */
- fp->_wide_data->_IO_state = posp->__state;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- #else
- __set_errno (ENOSYS);
---- glibc-2.3.2/libio/ioftell.c 2002-11-05 02:38:39.000000000 -0500
-+++ glibc-2.3.2/libio/ioftell.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1995-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
-@@ -36,16 +36,14 @@
- {
- _IO_off64_t pos;
- CHECK_FILE (fp, -1L);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- {
-- if (fp->_vtable_offset != 0 || fp->_mode <= 0)
-+ if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0)
- pos -= fp->_IO_save_end - fp->_IO_save_base;
- }
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (pos == _IO_pos_BAD)
- {
- #ifdef EIO
---- glibc-2.3.2/libio/iofwide.c 2002-03-13 00:16:37.000000000 -0500
-+++ glibc-2.3.2/libio/iofwide.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -100,20 +100,18 @@
- /* Normalize the value. */
- mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1);
-
-- if (mode == 0)
-- /* The caller simply wants to know about the current orientation. */
-- return fp->_mode;
--
- #if defined SHARED && defined _LIBC \
- && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
- if (__builtin_expect (&_IO_stdin_used == NULL, 0)
-- && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr))
-+ && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr))
- /* This is for a stream in the glibc 2.0 format. */
- return -1;
- #endif
-
-- if (fp->_mode != 0)
-- /* The orientation already has been determined. */
-+ /* The orientation already has been determined. */
-+ if (fp->_mode != 0
-+ /* Or the caller simply wants to know about the current orientation. */
-+ || mode == 0)
- return fp->_mode;
-
- /* Set the orientation appropriately. */
---- glibc-2.3.2/libio/iofwrite.c 2002-11-24 21:23:25.000000000 -0500
-+++ glibc-2.3.2/libio/iofwrite.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,96,97,98,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 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
-@@ -39,12 +40,10 @@
- CHECK_FILE (fp, 0);
- if (request == 0)
- return 0;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-- if (fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1)
-+ _IO_acquire_lock (fp);
-+ if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
- written = _IO_sputn (fp, (const char *) buf, request);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (written == request)
- return count;
- else
---- glibc-2.3.2/libio/iogetdelim.c 2001-12-29 10:26:50.000000000 -0500
-+++ glibc-2.3.2/libio/iogetdelim.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1994, 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1994,1996,1997,1998,2001,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
-@@ -55,8 +55,7 @@
- return -1;
- }
- CHECK_FILE (fp, -1);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_ferror_unlocked (fp))
- {
- result = -1;
-@@ -120,8 +119,7 @@
- result = cur_len;
-
- unlock_return:
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/iogets.c 2002-02-25 01:46:02.000000000 -0500
-+++ glibc-2.3.2/libio/iogets.c 2003-09-19 22:37:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1996,1997,1998,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
-@@ -36,9 +36,7 @@
- int ch;
- char *retval;
-
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdin);
-- _IO_flockfile (_IO_stdin);
-+ _IO_acquire_lock (_IO_stdin);
- ch = _IO_getc_unlocked (_IO_stdin);
- if (ch == EOF)
- {
-@@ -67,8 +65,7 @@
- buf[count] = 0;
- retval = buf;
- unlock_return:
-- _IO_funlockfile (_IO_stdin);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdin);
- return retval;
- }
-
---- glibc-2.3.2/libio/iopopen.c 2003-01-08 00:16:51.000000000 -0500
-+++ glibc-2.3.2/libio/iopopen.c 2003-08-21 08:37:02.000000000 -0400
-@@ -39,6 +39,7 @@
- #ifdef _LIBC
- # include <unistd.h>
- # include <shlib-compat.h>
-+# include <not-cancel.h>
- #endif
- #include <sys/types.h>
- #include <sys/wait.h>
-@@ -74,7 +75,7 @@
-
- #ifndef _IO_waitpid
- #ifdef _LIBC
--#define _IO_waitpid __waitpid
-+#define _IO_waitpid waitpid_not_cancel
- #else
- #define _IO_waitpid waitpid
- #endif
-@@ -89,7 +90,7 @@
-
- #ifndef _IO_close
- #ifdef _LIBC
--#define _IO_close __close
-+#define _IO_close close_not_cancel
- #else
- #define _IO_close close
- #endif
---- glibc-2.3.2/libio/ioputs.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/ioputs.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1996,1997,1998,1999,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
-@@ -34,17 +34,15 @@
- {
- int result = EOF;
- _IO_size_t len = strlen (str);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdout);
-- _IO_flockfile (_IO_stdout);
-+ _IO_acquire_lock (_IO_stdout);
-
-- if ((_IO_stdout->_vtable_offset != 0 || _IO_fwide (_IO_stdout, -1) == -1)
-+ if ((_IO_vtable_offset (_IO_stdout) != 0
-+ || _IO_fwide (_IO_stdout, -1) == -1)
- && _IO_sputn (_IO_stdout, str, len) == len
- && _IO_putc_unlocked ('\n', _IO_stdout) != EOF)
- result = len + 1;
-
-- _IO_funlockfile (_IO_stdout);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdout);
- return result;
- }
-
---- glibc-2.3.2/libio/ioseekoff.c 2002-11-05 02:36:56.000000000 -0500
-+++ glibc-2.3.2/libio/ioseekoff.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1997, 1998, 1999, 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
-@@ -56,7 +57,7 @@
- {
- if (dir == _IO_seek_cur && _IO_in_backup (fp))
- {
-- if (fp->_vtable_offset != 0 || fp->_mode <= 0)
-+ if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0)
- offset -= fp->_IO_read_end - fp->_IO_read_ptr;
- else
- abort ();
-@@ -80,12 +81,8 @@
- {
- _IO_off64_t retval;
-
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
--
-+ _IO_acquire_lock (fp);
- retval = _IO_seekoff_unlocked (fp, offset, dir, mode);
--
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return retval;
- }
---- glibc-2.3.2/libio/ioseekpos.c 2002-11-05 02:32:43.000000000 -0500
-+++ glibc-2.3.2/libio/ioseekpos.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1997,1998,1999,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
-@@ -59,12 +59,8 @@
- {
- _IO_off64_t retval;
-
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
--
-+ _IO_acquire_lock (fp);
- retval = _IO_seekpos_unlocked (fp, pos, mode);
--
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return retval;
- }
---- glibc-2.3.2/libio/iosetbuffer.c 2002-02-24 23:46:33.000000000 -0500
-+++ glibc-2.3.2/libio/iosetbuffer.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,96,97,98,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 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
-@@ -34,17 +35,15 @@
- _IO_size_t size;
- {
- CHECK_FILE (fp, );
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- fp->_flags &= ~_IO_LINE_BUF;
- if (!buf)
- size = 0;
- (void) _IO_SETBUF (fp, buf, size);
-- if (fp->_vtable_offset == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
-+ if (_IO_vtable_offset (fp) == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
- /* We also have to set the buffer using the wide char function. */
- (void) _IO_WSETBUF (fp, buf, size);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- }
- INTDEF(_IO_setbuffer)
-
---- glibc-2.3.2/libio/iosetvbuf.c 2002-06-21 20:58:29.000000000 -0400
-+++ glibc-2.3.2/libio/iosetvbuf.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 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
-@@ -40,8 +41,7 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- switch (mode)
- {
- case _IOFBF:
-@@ -96,8 +96,7 @@
- result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
-
- unlock_return:
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- INTDEF(_IO_setvbuf)
---- glibc-2.3.2/libio/ioungetc.c 2002-02-24 23:44:09.000000000 -0500
-+++ glibc-2.3.2/libio/ioungetc.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1996,1997,1998,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1996,1997,1998,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
-@@ -36,11 +36,9 @@
- CHECK_FILE (fp, EOF);
- if (c == EOF)
- return EOF;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = INTUSE(_IO_sputbackc) (fp, (unsigned char) c);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/ioungetwc.c 2002-02-25 01:54:37.000000000 -0500
-+++ glibc-2.3.2/libio/ioungetwc.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993, 1996-1999, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 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
-@@ -35,14 +36,12 @@
- {
- int result;
- CHECK_FILE (fp, WEOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- _IO_fwide (fp, 1);
- if (c == WEOF)
- result = WEOF;
- else
- result = INTUSE(_IO_sputbackwc) (fp, c);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/iovdprintf.c 2002-08-02 17:46:58.000000000 -0400
-+++ glibc-2.3.2/libio/iovdprintf.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* 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
-@@ -41,8 +41,8 @@
- #ifdef _IO_MTSAFE_IO
- tmpfil.file._lock = NULL;
- #endif
-- _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &INTUSE(_IO_wfile_jumps));
-- _IO_JUMPS (&tmpfil) = &INTUSE(_IO_file_jumps);
-+ _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps);
-+ _IO_JUMPS (&tmpfil) = &_IO_file_jumps;
- INTUSE(_IO_file_init) (&tmpfil);
- #if !_IO_UNIFIED_JUMPTABLES
- tmpfil.vtable = NULL;
---- glibc-2.3.2/libio/iovsprintf.c 2002-02-25 02:01:40.000000000 -0500
-+++ glibc-2.3.2/libio/iovsprintf.c 2003-06-03 09:36:22.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1997-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
-@@ -42,7 +42,7 @@
- #endif
- _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
-- INTUSE(_IO_str_init_static) (&sf, string, -1, string);
-+ _IO_str_init_static_internal (&sf, string, -1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args);
- _IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf);
- return ret;
---- glibc-2.3.2/libio/iovsscanf.c 2002-02-25 01:59:37.000000000 -0500
-+++ glibc-2.3.2/libio/iovsscanf.c 2003-06-03 09:36:22.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1997-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
-@@ -41,7 +41,7 @@
- #endif
- _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
-- INTUSE(_IO_str_init_static) (&sf, (char*)string, 0, NULL);
-+ _IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
- ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
- return ret;
- }
---- glibc-2.3.2/libio/libio.h 2002-08-30 02:45:05.000000000 -0400
-+++ glibc-2.3.2/libio/libio.h 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1995, 1997-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1995, 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Per Bothner <bothner@cygnus.com>.
-
-@@ -138,6 +138,7 @@
- #define _IO_USER_LOCK 0x8000
-
- #define _IO_FLAGS2_MMAP 1
-+#define _IO_FLAGS2_NOTCANCEL 2
-
- /* These are "formatting flags" matching the iostream fmtflags enum values. */
- #define _IO_SKIPWS 01
-@@ -502,7 +503,7 @@
- __result = (__fp)->_mode; \
- } \
- else if (__builtin_constant_p (__mode) && (__mode) == 0) \
-- __result = (__fp)->_mode; \
-+ __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode; \
- else \
- __result = _IO_fwide (__fp, __result); \
- __result; })
---- glibc-2.3.2/libio/libioP.h 2003-01-08 00:18:05.000000000 -0500
-+++ glibc-2.3.2/libio/libioP.h 2003-09-19 22:37:03.000000000 -0400
-@@ -110,8 +110,10 @@
- # define _IO_JUMPS_FUNC(THIS) \
- (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) \
- + (THIS)->_vtable_offset))
-+# define _IO_vtable_offset(THIS) (THIS)->_vtable_offset
- #else
- # define _IO_JUMPS_FUNC(THIS) _IO_JUMPS ((struct _IO_FILE_plus *) (THIS))
-+# define _IO_vtable_offset(THIS) 0
- #endif
- #define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS)
- #ifdef _G_USING_THUNKS
-@@ -450,9 +452,11 @@
- extern void _IO_default_imbue __P ((_IO_FILE *, void *));
-
- extern struct _IO_jump_t _IO_file_jumps;
-+libc_hidden_proto (_IO_file_jumps)
- extern struct _IO_jump_t _IO_file_jumps_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_file_jumps_maybe_mmap attribute_hidden;
--extern struct _IO_jump_t _IO_wfile_jumps attribute_hidden;
-+extern struct _IO_jump_t _IO_wfile_jumps;
-+libc_hidden_proto (_IO_wfile_jumps)
- extern struct _IO_jump_t _IO_wfile_jumps_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_wfile_jumps_maybe_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_old_file_jumps attribute_hidden;
-@@ -477,6 +481,7 @@
- extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *));
- extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
- extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
-+extern void _IO_old_init __P ((_IO_FILE *fp, int flags));
-
-
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-@@ -616,8 +621,7 @@
- extern _IO_ssize_t _IO_str_count __P ((_IO_FILE *));
-
- /* And the wide character versions. */
--extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, int, wchar_t *));
--extern void _IO_wstr_init_readonly __P ((_IO_FILE *, const char *, int));
-+extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, _IO_size_t, wchar_t *));
- extern _IO_ssize_t _IO_wstr_count __P ((_IO_FILE *));
- extern _IO_wint_t _IO_wstr_overflow __P ((_IO_FILE *, _IO_wint_t));
- extern _IO_wint_t _IO_wstr_underflow __P ((_IO_FILE *));
-@@ -707,7 +711,7 @@
- extern _IO_off64_t _IO_str_seekoff_internal __P ((_IO_FILE *, _IO_off64_t,
- int, int));
- extern void _IO_str_init_static_internal __P ((struct _IO_strfile_ *, char *,
-- int, char *));
-+ _IO_size_t, char *));
-
- extern struct _IO_jump_t _IO_file_jumps_internal attribute_hidden;
- extern struct _IO_jump_t _IO_wfile_jumps_internal attribute_hidden;
-@@ -966,3 +970,12 @@
- #else
- # define CHECK_FILE(FILE, RET) COERCE_FILE (FILE)
- #endif
-+
-+static inline void
-+__attribute__ ((__always_inline__))
-+_IO_acquire_lock_fct (_IO_FILE **p)
-+{
-+ _IO_FILE *fp = *p;
-+ if ((fp->_flags & _IO_USER_LOCK) == 0)
-+ _IO_funlockfile (fp);
-+}
---- glibc-2.3.2/libio/memstream.c 2002-08-10 14:08:29.000000000 -0400
-+++ glibc-2.3.2/libio/memstream.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995,1996,1997,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1997,1999,2000,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
-@@ -32,8 +32,6 @@
-
- static int _IO_mem_sync __P ((_IO_FILE* fp));
- static void _IO_mem_finish __P ((_IO_FILE* fp, int));
--static int _IO_wmem_sync __P ((_IO_FILE* fp));
--static void _IO_wmem_finish __P ((_IO_FILE* fp, int));
-
-
- static struct _IO_jump_t _IO_mem_jumps =
-@@ -60,30 +58,6 @@
- JUMP_INIT(imbue, _IO_default_imbue)
- };
-
--static struct _IO_jump_t _IO_wmem_jumps =
--{
-- JUMP_INIT_DUMMY,
-- JUMP_INIT (finish, (_IO_finish_t) _IO_wmem_finish),
-- JUMP_INIT (overflow, (_IO_overflow_t) _IO_wstr_overflow),
-- JUMP_INIT (underflow, (_IO_underflow_t) _IO_wstr_underflow),
-- JUMP_INIT (uflow, (_IO_underflow_t) INTUSE(_IO_wdefault_uflow)),
-- JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wstr_pbackfail),
-- JUMP_INIT (xsputn, (_IO_xsputn_t) INTUSE(_IO_wdefault_xsputn)),
-- JUMP_INIT (xsgetn, (_IO_xsgetn_t) INTUSE(_IO_wdefault_xsgetn)),
-- JUMP_INIT (seekoff, _IO_wstr_seekoff),
-- JUMP_INIT (seekpos, _IO_default_seekpos),
-- JUMP_INIT (setbuf, _IO_default_setbuf),
-- JUMP_INIT (sync, (_IO_sync_t) _IO_wmem_sync),
-- JUMP_INIT (doallocate, INTUSE(_IO_wdefault_doallocate)),
-- JUMP_INIT (read, _IO_default_read),
-- JUMP_INIT (write, _IO_default_write),
-- JUMP_INIT (seek, _IO_default_seek),
-- JUMP_INIT (close, _IO_default_close),
-- JUMP_INIT (stat, _IO_default_stat),
-- JUMP_INIT(showmanyc, _IO_default_showmanyc),
-- JUMP_INIT(imbue, _IO_default_imbue)
--};
--
- /* Open a stream that writes into a malloc'd buffer that is expanded as
- necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
- and the number of characters written on fflush or fclose. */
-@@ -112,9 +86,9 @@
- buf = malloc (_IO_BUFSIZ);
- if (buf == NULL)
- return NULL;
-- _IO_no_init (&new_f->fp._sf._sbf._f, 0, 0, &new_f->wd, &_IO_wmem_jumps);
-+ _IO_init (&new_f->fp._sf._sbf._f, 0);
- _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp._sf._sbf) = &_IO_mem_jumps;
-- INTUSE(_IO_str_init_static) (&new_f->fp._sf, buf, _IO_BUFSIZ, buf);
-+ _IO_str_init_static_internal (&new_f->fp._sf, buf, _IO_BUFSIZ, buf);
- new_f->fp._sf._sbf._f._flags &= ~_IO_USER_BUF;
- new_f->fp._sf._s._allocate_buffer = (_IO_alloc_type) malloc;
- new_f->fp._sf._s._free_buffer = (_IO_free_type) free;
-@@ -172,55 +146,3 @@
-
- INTUSE(_IO_default_finish) (fp, 0);
- }
--
--
--static int
--_IO_wmem_sync (fp)
-- _IO_FILE* fp;
--{
-- struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp;
-- int res;
--
-- res = _IO_default_sync (fp);
-- if (res < 0)
-- return res;
--
-- if (fp->_wide_data->_IO_write_ptr == fp->_wide_data->_IO_write_end)
-- {
-- _IO_wstr_overflow (fp, L'\0');
-- --fp->_wide_data->_IO_write_ptr;
-- }
-- else
-- *fp->_wide_data->_IO_write_ptr = '\0';
--
-- *mp->bufloc = (char *) fp->_wide_data->_IO_write_base;
-- *mp->sizeloc = (fp->_wide_data->_IO_write_ptr
-- - fp->_wide_data->_IO_write_base);
--
-- return 0;
--}
--
--
--static void
--_IO_wmem_finish (fp, dummy)
-- _IO_FILE* fp;
-- int dummy;
--{
-- struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp;
--
-- *mp->bufloc = (char *) realloc (fp->_wide_data->_IO_write_base,
-- (fp->_wide_data->_IO_write_ptr
-- - fp->_wide_data->_IO_write_base + 1)
-- * sizeof (wchar_t));
-- if (*mp->bufloc != NULL)
-- {
-- ((wchar_t *) (*mp->bufloc))[fp->_wide_data->_IO_write_ptr
-- - fp->_wide_data->_IO_write_base] = '\0';
-- *mp->sizeloc = (fp->_wide_data->_IO_write_ptr
-- - fp->_wide_data->_IO_write_base);
-- }
--
-- fp->_wide_data->_IO_buf_base = NULL;
--
-- INTUSE(_IO_default_finish) (fp, 0);
--}
---- glibc-2.3.2/libio/obprintf.c 2002-02-25 02:01:53.000000000 -0500
-+++ glibc-2.3.2/libio/obprintf.c 2003-06-03 09:36:22.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Print output of stream to given obstack.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999-2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -153,9 +153,9 @@
- assert (size != 0);
- }
-
-- INTUSE(_IO_str_init_static) ((struct _IO_strfile_ *) &new_f.ofile,
-- obstack_base (obstack),
-- size, obstack_next_free (obstack));
-+ _IO_str_init_static_internal ((struct _IO_strfile_ *) &new_f.ofile,
-+ obstack_base (obstack),
-+ size, obstack_next_free (obstack));
- /* Now allocate the rest of the current chunk. */
- assert (size == (new_f.ofile.file.file._IO_write_end
- - new_f.ofile.file.file._IO_write_base));
---- glibc-2.3.2/libio/oldfileops.c 2002-09-24 01:11:47.000000000 -0400
-+++ glibc-2.3.2/libio/oldfileops.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,95,97,98,99,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Per Bothner <bothner@cygnus.com>.
-
-@@ -128,6 +128,16 @@
- fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE)
- - (int) sizeof (struct _IO_FILE_complete));
- fp->file._fileno = -1;
-+
-+#if defined SHARED && defined _LIBC
-+ if (__builtin_expect (&_IO_stdin_used != NULL, 1)
-+ || (fp != (struct _IO_FILE_plus *) _IO_stdin
-+ && fp != (struct _IO_FILE_plus *) _IO_stdout
-+ && fp != (struct _IO_FILE_plus *) _IO_stderr))
-+ /* The object is dynamically allocated and large enough. Initialize
-+ the _mode element as well. */
-+ ((struct _IO_FILE_complete *) fp)->_mode = -1;
-+#endif
- }
-
- int
---- glibc-2.3.2/libio/oldiofclose.c 2002-02-25 02:30:49.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofclose.c 2003-09-19 22:37:03.000000000 -0400
-@@ -52,15 +52,13 @@
- if (fp->_IO_file_flags & _IO_IS_FILEBUF)
- INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
-
-- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (fp->_IO_file_flags & _IO_IS_FILEBUF)
- status = _IO_old_file_close_it (fp);
- else
- status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
- _IO_FINISH (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (_IO_have_backup (fp))
- INTUSE(_IO_free_backup_area) (fp);
- if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
---- glibc-2.3.2/libio/oldiofdopen.c 2002-04-09 03:30:11.000000000 -0400
-+++ glibc-2.3.2/libio/oldiofdopen.c 2003-05-12 12:13:04.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,94,97,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,94,97,99,2000,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
-@@ -114,7 +114,7 @@
- #ifdef _IO_MTSAFE_IO
- new_f->fp.file._lock = &new_f->lock;
- #endif
-- INTUSE(_IO_init) (&new_f->fp.file, 0);
-+ _IO_old_init (&new_f->fp.file, 0);
- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
- _IO_old_file_init (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
---- glibc-2.3.2/libio/oldiofgetpos.c 2002-11-05 02:41:48.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofgetpos.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 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
-@@ -38,13 +39,11 @@
- {
- _IO_off_t pos;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- pos -= fp->_IO_save_end - fp->_IO_save_base;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (pos == _IO_pos_BAD)
- {
- /* ANSI explicitly requires setting errno to a positive value on
---- glibc-2.3.2/libio/oldiofgetpos64.c 2002-11-05 02:41:38.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofgetpos64.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 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
-@@ -39,13 +40,11 @@
- #ifdef _G_LSEEK64
- _IO_off64_t pos;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
- if (_IO_in_backup (fp))
- pos -= fp->_IO_save_end - fp->_IO_save_base;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- if (pos == _IO_pos_BAD)
- {
- /* ANSI explicitly requires setting errno to a positive value on
---- glibc-2.3.2/libio/oldiofopen.c 2002-02-25 02:31:13.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofopen.c 2003-05-12 12:13:04.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1997,1999,2000,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
-@@ -53,7 +53,7 @@
- #ifdef _IO_MTSAFE_IO
- new_f->fp.file._lock = &new_f->lock;
- #endif
-- INTUSE(_IO_init) (&new_f->fp.file, 0);
-+ _IO_old_init (&new_f->fp.file, 0);
- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
- _IO_old_file_init (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
---- glibc-2.3.2/libio/oldiofsetpos.c 2002-11-05 02:34:01.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofsetpos.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 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
-@@ -37,8 +38,7 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD)
- {
-@@ -52,8 +52,7 @@
- }
- else
- result = 0;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
-
---- glibc-2.3.2/libio/oldiofsetpos64.c 2002-11-05 02:34:11.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofsetpos64.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 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
-@@ -39,8 +40,7 @@
- #ifdef _G_LSEEK64
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD)
- {
-@@ -54,8 +54,7 @@
- }
- else
- result = 0;
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- #else
- __set_errno (ENOSYS);
---- glibc-2.3.2/libio/oldtmpfile.c 2002-04-08 03:02:09.000000000 -0400
-+++ glibc-2.3.2/libio/oldtmpfile.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1993, 1996-1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1993, 1996-2000, 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
-@@ -43,7 +43,7 @@
-
- /* Note that this relies on the Unix semantics that
- a file is not really removed until it is closed. */
-- (void) remove (buf);
-+ (void) __unlink (buf);
-
- if ((f = _IO_old_fdopen (fd, "w+b")) == NULL)
- __close (fd);
---- glibc-2.3.2/libio/peekc.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/peekc.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1995,1996,1997,1998,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
-@@ -36,10 +36,8 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_peekc_unlocked (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
---- glibc-2.3.2/libio/putc.c 2002-02-25 02:22:50.000000000 -0500
-+++ glibc-2.3.2/libio/putc.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 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
-@@ -28,11 +29,9 @@
- {
- int result;
- CHECK_FILE (fp, EOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_putc_unlocked (c, fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- INTDEF(_IO_putc)
---- glibc-2.3.2/libio/putchar.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/putchar.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1997,1998,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
-@@ -26,12 +26,9 @@
- int c;
- {
- int result;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdout);
-- _IO_flockfile (_IO_stdout);
-+ _IO_acquire_lock (_IO_stdout);
- result = _IO_putc_unlocked (c, _IO_stdout);
-- _IO_funlockfile (_IO_stdout);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdout);
- return result;
- }
-
---- glibc-2.3.2/libio/putwc.c 2002-08-10 14:08:29.000000000 -0400
-+++ glibc-2.3.2/libio/putwc.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,95,96,97,98,99,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 1999, 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
-@@ -26,11 +27,9 @@
- {
- wint_t result;
- CHECK_FILE (fp, WEOF);
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- result = _IO_putwc_unlocked (wc, fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- return result;
- }
- libc_hidden_def (putwc)
---- glibc-2.3.2/libio/putwchar.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/putwchar.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,95,96,97,98,99,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
-@@ -24,11 +24,8 @@
- wchar_t wc;
- {
- wint_t result;
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdout);
-- _IO_flockfile (_IO_stdout);
-+ _IO_acquire_lock (_IO_stdout);
- result = _IO_putwc_unlocked (wc, _IO_stdout);
-- _IO_funlockfile (_IO_stdout);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdout);
- return result;
- }
---- glibc-2.3.2/libio/rewind.c 2002-08-10 14:08:29.000000000 -0400
-+++ glibc-2.3.2/libio/rewind.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,96,97,98,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,96,97,98,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
-@@ -33,11 +33,9 @@
- _IO_FILE *fp;
- {
- CHECK_FILE (fp, );
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-- _IO_flockfile (fp);
-+ _IO_acquire_lock (fp);
- _IO_rewind (fp);
- _IO_clearerr (fp);
-- _IO_funlockfile (fp);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (fp);
- }
- libc_hidden_def (rewind)
---- glibc-2.3.2/libio/stdfiles.c 2002-03-12 20:05:41.000000000 -0500
-+++ glibc-2.3.2/libio/stdfiles.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993-1997,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993-1997,1999,2000,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
-@@ -39,30 +39,30 @@
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- static struct _IO_wide_data _IO_wide_data_##FD \
-- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
-+ = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # else
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # endif
- #else
- # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static struct _IO_wide_data _IO_wide_data_##FD \
-- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
-+ = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # else
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # endif
- #endif
-
---- glibc-2.3.2/libio/stdio.h 2002-08-27 21:55:38.000000000 -0400
-+++ glibc-2.3.2/libio/stdio.h 2003-09-19 22:37:03.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Define ISO C stdio on top of C++ iostreams.
-- Copyright (C) 1991,1994-1999,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1994-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
-@@ -156,25 +156,28 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Create a temporary file and open it read/write. */
-+/* Create a temporary file and open it read/write.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- #ifndef __USE_FILE_OFFSET64
--extern FILE *tmpfile (void) __THROW;
-+extern FILE *tmpfile (void);
- #else
- # ifdef __REDIRECT
--extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64);
-+extern FILE *__REDIRECT (tmpfile, (void), tmpfile64);
- # else
- # define tmpfile tmpfile64
- # endif
- #endif
-
-+#ifdef __USE_LARGEFILE64
-+extern FILE *tmpfile64 (void);
-+#endif
-+
- /* Generate a temporary filename. */
- extern char *tmpnam (char *__s) __THROW;
- __END_NAMESPACE_STD
-
--#ifdef __USE_LARGEFILE64
--extern FILE *tmpfile64 (void) __THROW;
--#endif
--
- #ifdef __USE_MISC
- /* This is the reentrant variant of `tmpnam'. The only difference is
- that it does not allow S to be NULL. */
-@@ -196,41 +199,61 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Close STREAM. */
--extern int fclose (FILE *__stream) __THROW;
--/* Flush STREAM, or all streams if STREAM is NULL. */
--extern int fflush (FILE *__stream) __THROW;
-+/* Close STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fclose (FILE *__stream);
-+/* Flush STREAM, or all streams if STREAM is NULL.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fflush (FILE *__stream);
- __END_NAMESPACE_STD
-
- #ifdef __USE_MISC
--/* Faster versions when locking is not required. */
--extern int fflush_unlocked (FILE *__stream) __THROW;
-+/* Faster versions when locking is not required.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int fflush_unlocked (FILE *__stream);
- #endif
-
- #ifdef __USE_GNU
--/* Close all streams. */
--extern int fcloseall (void) __THROW;
-+/* Close all streams.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int fcloseall (void);
- #endif
-
-
- __BEGIN_NAMESPACE_STD
- #ifndef __USE_FILE_OFFSET64
--/* Open a file and create a new stream for it. */
-+/* Open a file and create a new stream for it.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern FILE *fopen (__const char *__restrict __filename,
-- __const char *__restrict __modes) __THROW;
--/* Open a file, replacing an existing stream with it. */
-+ __const char *__restrict __modes);
-+/* Open a file, replacing an existing stream with it.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern FILE *freopen (__const char *__restrict __filename,
- __const char *__restrict __modes,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- #else
- # ifdef __REDIRECT
- extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
-- __const char *__restrict __modes) __THROW,
-- fopen64);
-+ __const char *__restrict __modes), fopen64);
- extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
- __const char *__restrict __modes,
-- FILE *__restrict __stream) __THROW,
-- freopen64);
-+ FILE *__restrict __stream), freopen64);
- # else
- # define fopen fopen64
- # define freopen freopen64
-@@ -239,10 +262,10 @@
- __END_NAMESPACE_STD
- #ifdef __USE_LARGEFILE64
- extern FILE *fopen64 (__const char *__restrict __filename,
-- __const char *__restrict __modes) __THROW;
-+ __const char *__restrict __modes);
- extern FILE *freopen64 (__const char *__restrict __filename,
- __const char *__restrict __modes,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- #endif
-
- #ifdef __USE_POSIX
-@@ -291,21 +314,32 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Write formatted output to STREAM. */
-+/* Write formatted output to STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int fprintf (FILE *__restrict __stream,
-- __const char *__restrict __format, ...) __THROW;
--/* Write formatted output to stdout. */
--extern int printf (__const char *__restrict __format, ...) __THROW;
-+ __const char *__restrict __format, ...);
-+/* Write formatted output to stdout.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int printf (__const char *__restrict __format, ...);
- /* Write formatted output to S. */
- extern int sprintf (char *__restrict __s,
- __const char *__restrict __format, ...) __THROW;
-
--/* Write formatted output to S from argument list ARG. */
-+/* Write formatted output to S from argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
-- _G_va_list __arg) __THROW;
--/* Write formatted output to stdout from argument list ARG. */
--extern int vprintf (__const char *__restrict __format, _G_va_list __arg)
-- __THROW;
-+ _G_va_list __arg);
-+/* Write formatted output to stdout from argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int vprintf (__const char *__restrict __format, _G_va_list __arg);
- /* Write formatted output to S from argument list ARG. */
- extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
- _G_va_list __arg) __THROW;
-@@ -337,21 +371,32 @@
- __const char *__restrict __fmt, ...)
- __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
-
--/* Write formatted output to a file descriptor. */
-+/* Write formatted output to a file descriptor.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int vdprintf (int __fd, __const char *__restrict __fmt,
- _G_va_list __arg)
-- __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
-+ __attribute__ ((__format__ (__printf__, 2, 0)));
- extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
-- __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
-+ __attribute__ ((__format__ (__printf__, 2, 3)));
- #endif
-
-
- __BEGIN_NAMESPACE_STD
--/* Read formatted input from STREAM. */
-+/* Read formatted input from STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int fscanf (FILE *__restrict __stream,
-- __const char *__restrict __format, ...) __THROW;
--/* Read formatted input from stdin. */
--extern int scanf (__const char *__restrict __format, ...) __THROW;
-+ __const char *__restrict __format, ...);
-+/* Read formatted input from stdin.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int scanf (__const char *__restrict __format, ...);
- /* Read formatted input from S. */
- extern int sscanf (__const char *__restrict __s,
- __const char *__restrict __format, ...) __THROW;
-@@ -359,14 +404,20 @@
-
- #ifdef __USE_ISOC99
- __BEGIN_NAMESPACE_C99
--/* Read formatted input from S into argument list ARG. */
-+/* Read formatted input from S into argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
- _G_va_list __arg)
-- __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
-+ __attribute__ ((__format__ (__scanf__, 2, 0)));
-+
-+/* Read formatted input from stdin into argument list ARG.
-
--/* Read formatted input from stdin into argument list ARG. */
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vscanf (__const char *__restrict __format, _G_va_list __arg)
-- __THROW __attribute__ ((__format__ (__scanf__, 1, 0)));
-+ __attribute__ ((__format__ (__scanf__, 1, 0)));
-
- /* Read formatted input from S into argument list ARG. */
- extern int vsscanf (__const char *__restrict __s,
-@@ -377,12 +428,18 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Read a character from STREAM. */
--extern int fgetc (FILE *__stream) __THROW;
--extern int getc (FILE *__stream) __THROW;
-+/* Read a character from STREAM.
-
--/* Read a character from stdin. */
--extern int getchar (void) __THROW;
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int fgetc (FILE *__stream);
-+extern int getc (FILE *__stream);
-+
-+/* Read a character from stdin.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int getchar (void);
- __END_NAMESPACE_STD
-
- /* The C standard explicitly says this is a macro, so we always do the
-@@ -390,24 +447,41 @@
- #define getc(_fp) _IO_getc (_fp)
-
- #if defined __USE_POSIX || defined __USE_MISC
--/* These are defined in POSIX.1:1996. */
--extern int getc_unlocked (FILE *__stream) __THROW;
--extern int getchar_unlocked (void) __THROW;
-+/* These are defined in POSIX.1:1996.
-+
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int getc_unlocked (FILE *__stream);
-+extern int getchar_unlocked (void);
- #endif /* Use POSIX or MISC. */
-
- #ifdef __USE_MISC
--/* Faster version when locking is not necessary. */
--extern int fgetc_unlocked (FILE *__stream) __THROW;
-+/* Faster version when locking is not necessary.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int fgetc_unlocked (FILE *__stream);
- #endif /* Use MISC. */
-
-
- __BEGIN_NAMESPACE_STD
--/* Write a character to STREAM. */
--extern int fputc (int __c, FILE *__stream) __THROW;
--extern int putc (int __c, FILE *__stream) __THROW;
-+/* Write a character to STREAM.
-+
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW.
-
--/* Write a character to stdout. */
--extern int putchar (int __c) __THROW;
-+ These functions is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fputc (int __c, FILE *__stream);
-+extern int putc (int __c, FILE *__stream);
-+
-+/* Write a character to stdout.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int putchar (int __c);
- __END_NAMESPACE_STD
-
- /* The C standard explicitly says this can be a macro,
-@@ -415,40 +489,59 @@
- #define putc(_ch, _fp) _IO_putc (_ch, _fp)
-
- #ifdef __USE_MISC
--/* Faster version when locking is not necessary. */
--extern int fputc_unlocked (int __c, FILE *__stream) __THROW;
-+/* Faster version when locking is not necessary.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int fputc_unlocked (int __c, FILE *__stream);
- #endif /* Use MISC. */
-
- #if defined __USE_POSIX || defined __USE_MISC
--/* These are defined in POSIX.1:1996. */
--extern int putc_unlocked (int __c, FILE *__stream) __THROW;
--extern int putchar_unlocked (int __c) __THROW;
-+/* These are defined in POSIX.1:1996.
-+
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int putc_unlocked (int __c, FILE *__stream);
-+extern int putchar_unlocked (int __c);
- #endif /* Use POSIX or MISC. */
-
-
--#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
-+#if defined __USE_SVID || defined __USE_MISC \
-+ || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
- /* Get a word (int) from STREAM. */
--extern int getw (FILE *__stream) __THROW;
-+extern int getw (FILE *__stream);
-
- /* Write a word (int) to STREAM. */
--extern int putw (int __w, FILE *__stream) __THROW;
-+extern int putw (int __w, FILE *__stream);
- #endif
-
-
- __BEGIN_NAMESPACE_STD
--/* Get a newline-terminated string of finite length from STREAM. */
--extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
-- __THROW;
-+/* Get a newline-terminated string of finite length from STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
-
- /* Get a newline-terminated string from stdin, removing the newline.
-- DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */
--extern char *gets (char *__s) __THROW;
-+ DO NOT USE THIS FUNCTION!! There is no limit on how much it will read.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern char *gets (char *__s);
- __END_NAMESPACE_STD
-
- #ifdef __USE_GNU
--/* This function does the same as `fgets' but does not lock the stream. */
-+/* This function does the same as `fgets' but does not lock the stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern char *fgets_unlocked (char *__restrict __s, int __n,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- #endif
-
-
-@@ -457,64 +550,107 @@
- (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
- NULL), pointing to *N characters of space. It is realloc'd as
- necessary. Returns the number of characters read (not including the
-- null terminator), or -1 on error or EOF. */
-+ null terminator), or -1 on error or EOF.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern _IO_ssize_t __getdelim (char **__restrict __lineptr,
- size_t *__restrict __n, int __delimiter,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- extern _IO_ssize_t getdelim (char **__restrict __lineptr,
- size_t *__restrict __n, int __delimiter,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
-+
-+/* Like `getdelim', but reads up to a newline.
-
--/* Like `getdelim', but reads up to a newline. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern _IO_ssize_t getline (char **__restrict __lineptr,
- size_t *__restrict __n,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- #endif
-
-
- __BEGIN_NAMESPACE_STD
--/* Write a string to STREAM. */
--extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
-- __THROW;
-+/* Write a string to STREAM.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
-
--/* Write a string, followed by a newline, to stdout. */
--extern int puts (__const char *__s) __THROW;
-+/* Write a string, followed by a newline, to stdout.
-
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int puts (__const char *__s);
-
--/* Push a character back onto the input buffer of STREAM. */
--extern int ungetc (int __c, FILE *__stream) __THROW;
-
-+/* Push a character back onto the input buffer of STREAM.
-
--/* Read chunks of generic data from STREAM. */
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int ungetc (int __c, FILE *__stream);
-+
-+
-+/* Read chunks of generic data from STREAM.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern size_t fread (void *__restrict __ptr, size_t __size,
-- size_t __n, FILE *__restrict __stream) __THROW;
--/* Write chunks of generic data to STREAM. */
-+ size_t __n, FILE *__restrict __stream);
-+/* Write chunks of generic data to STREAM.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
-- size_t __n, FILE *__restrict __s) __THROW;
-+ size_t __n, FILE *__restrict __s);
- __END_NAMESPACE_STD
-
- #ifdef __USE_GNU
--/* This function does the same as `fputs' but does not lock the stream. */
-+/* This function does the same as `fputs' but does not lock the stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int fputs_unlocked (__const char *__restrict __s,
-- FILE *__restrict __stream) __THROW;
-+ FILE *__restrict __stream);
- #endif
-
- #ifdef __USE_MISC
--/* Faster versions when locking is not necessary. */
-+/* Faster versions when locking is not necessary.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
-- size_t __n, FILE *__restrict __stream) __THROW;
-+ size_t __n, FILE *__restrict __stream);
- extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
-- size_t __n, FILE *__restrict __stream) __THROW;
-+ size_t __n, FILE *__restrict __stream);
- #endif
-
-
- __BEGIN_NAMESPACE_STD
--/* Seek to a certain position on STREAM. */
--extern int fseek (FILE *__stream, long int __off, int __whence) __THROW;
--/* Return the current position of STREAM. */
--extern long int ftell (FILE *__stream) __THROW;
--/* Rewind to the beginning of STREAM. */
--extern void rewind (FILE *__stream) __THROW;
-+/* Seek to a certain position on STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fseek (FILE *__stream, long int __off, int __whence);
-+/* Return the current position of STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern long int ftell (FILE *__stream);
-+/* Rewind to the beginning of STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void rewind (FILE *__stream);
- __END_NAMESPACE_STD
-
- /* The Single Unix Specification, Version 2, specifies an alternative,
-@@ -524,16 +660,22 @@
-
- #ifdef __USE_LARGEFILE
- # ifndef __USE_FILE_OFFSET64
--/* Seek to a certain position on STREAM. */
--extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW;
--/* Return the current position of STREAM. */
--extern __off_t ftello (FILE *__stream) __THROW;
-+/* Seek to a certain position on STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
-+/* Return the current position of STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern __off_t ftello (FILE *__stream);
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (fseeko,
-- (FILE *__stream, __off64_t __off, int __whence) __THROW,
-+ (FILE *__stream, __off64_t __off, int __whence),
- fseeko64);
--extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64);
-+extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64);
- # else
- # define fseeko fseeko64
- # define ftello ftello64
-@@ -543,18 +685,22 @@
-
- __BEGIN_NAMESPACE_STD
- #ifndef __USE_FILE_OFFSET64
--/* Get STREAM's position. */
--extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
-- __THROW;
--/* Set STREAM's position. */
--extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW;
-+/* Get STREAM's position.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
-+/* Set STREAM's position.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
- #else
- # ifdef __REDIRECT
- extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
-- fpos_t *__restrict __pos) __THROW, fgetpos64);
-+ fpos_t *__restrict __pos), fgetpos64);
- extern int __REDIRECT (fsetpos,
-- (FILE *__stream, __const fpos_t *__pos) __THROW,
-- fsetpos64);
-+ (FILE *__stream, __const fpos_t *__pos), fsetpos64);
- # else
- # define fgetpos fgetpos64
- # define fsetpos fsetpos64
-@@ -563,11 +709,10 @@
- __END_NAMESPACE_STD
-
- #ifdef __USE_LARGEFILE64
--extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW;
--extern __off64_t ftello64 (FILE *__stream) __THROW;
--extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos)
-- __THROW;
--extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW;
-+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
-+extern __off64_t ftello64 (FILE *__stream);
-+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
-+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
- #endif
-
- __BEGIN_NAMESPACE_STD
-@@ -588,8 +733,11 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Print a message describing the meaning of the value of errno. */
--extern void perror (__const char *__s) __THROW;
-+/* Print a message describing the meaning of the value of errno.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void perror (__const char *__s);
- __END_NAMESPACE_STD
-
- /* Provide the declarations for `sys_errlist' and `sys_nerr' if they
-@@ -612,11 +760,17 @@
-
- #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \
- defined __USE_MISC)
--/* Create a new stream connected to a pipe running the given command. */
--extern FILE *popen (__const char *__command, __const char *__modes) __THROW;
-+/* Create a new stream connected to a pipe running the given command.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern FILE *popen (__const char *__command, __const char *__modes);
-+
-+/* Close a stream opened by popen and return the status of its child.
-
--/* Close a stream opened by popen and return the status of its child. */
--extern int pclose (FILE *__stream) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern int pclose (FILE *__stream);
- #endif
-
-
-@@ -628,7 +782,7 @@
-
- #ifdef __USE_XOPEN
- /* Return the name of the current user. */
--extern char *cuserid (char *__s) __THROW;
-+extern char *cuserid (char *__s);
- #endif /* Use X/Open, but not issue 6. */
-
-
---- glibc-2.3.2/libio/strops.c 2002-02-25 01:49:21.000000000 -0500
-+++ glibc-2.3.2/libio/strops.c 2003-06-03 09:36:22.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1997-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
-@@ -63,33 +63,22 @@
- #endif
-
- void
--_IO_str_init_static (sf, ptr, size, pstart)
-+_IO_str_init_static_internal (sf, ptr, size, pstart)
- _IO_strfile *sf;
- char *ptr;
-- int size;
-+ _IO_size_t size;
- char *pstart;
- {
- _IO_FILE *fp = &sf->_sbf._f;
-+ char *end;
-
- if (size == 0)
-- size = strlen (ptr);
-- else if (size < 0)
-- {
-- /* If size is negative 'the characters are assumed to
-- continue indefinitely.' This is kind of messy ... */
-- int s;
-- size = 512;
-- /* Try increasing powers of 2, as long as we don't wrap around. */
-- for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
-- size = s;
-- /* Try increasing size as much as we can without wrapping around. */
-- for (s = size >> 1; s > 0; s >>= 1)
-- {
-- if (ptr + size + s > ptr)
-- size += s;
-- }
-- }
-- INTUSE(_IO_setb) (fp, ptr, ptr + size, 0);
-+ end = __rawmemchr (ptr, '\0');
-+ else if ((_IO_size_t) ptr + size > (_IO_size_t) ptr)
-+ end = ptr + size;
-+ else
-+ end = (char *) -1;
-+ INTUSE(_IO_setb) (fp, ptr, end, 0);
-
- fp->_IO_write_base = ptr;
- fp->_IO_read_base = ptr;
-@@ -97,19 +86,28 @@
- if (pstart)
- {
- fp->_IO_write_ptr = pstart;
-- fp->_IO_write_end = ptr + size;
-+ fp->_IO_write_end = end;
- fp->_IO_read_end = pstart;
- }
- else
- {
- fp->_IO_write_ptr = ptr;
- fp->_IO_write_end = ptr;
-- fp->_IO_read_end = ptr+size;
-+ fp->_IO_read_end = end;
- }
- /* A null _allocate_buffer function flags the strfile as being static. */
- sf->_s._allocate_buffer = (_IO_alloc_type) 0;
- }
--INTDEF(_IO_str_init_static)
-+
-+void
-+_IO_str_init_static (sf, ptr, size, pstart)
-+ _IO_strfile *sf;
-+ char *ptr;
-+ int size;
-+ char *pstart;
-+{
-+ return _IO_str_init_static_internal (sf, ptr, size < 0 ? -1 : size, pstart);
-+}
-
- void
- _IO_str_init_readonly (sf, ptr, size)
-@@ -117,7 +115,7 @@
- const char *ptr;
- int size;
- {
-- INTUSE(_IO_str_init_static) (sf, (char *) ptr, size, NULL);
-+ _IO_str_init_static_internal (sf, (char *) ptr, size < 0 ? -1 : size, NULL);
- sf->_sbf._f._IO_file_flags |= _IO_NO_WRITES;
- }
-
---- glibc-2.3.2/libio/swprintf.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/swprintf.c 2003-03-15 15:02:08.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1997,1998,1999,2000,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
-@@ -22,10 +23,7 @@
- /* Write formatted output into S, according to the format string FORMAT. */
- /* VARARGS3 */
- int
--swprintf (s, n, format)
-- wchar_t *s;
-- size_t n;
-- const wchar_t *format;
-+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
---- glibc-2.3.2/libio/swscanf.c 2001-07-07 15:21:03.000000000 -0400
-+++ glibc-2.3.2/libio/swscanf.c 2003-03-15 15:02:08.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,1999,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
-@@ -22,9 +22,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--swscanf (s, format)
-- const wchar_t *s;
-- const wchar_t *format;
-+swscanf (const wchar_t *s, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
---- glibc-2.3.2/libio/vasprintf.c 2002-02-25 02:02:03.000000000 -0500
-+++ glibc-2.3.2/libio/vasprintf.c 2003-06-03 09:36:23.000000000 -0400
-@@ -54,7 +54,7 @@
- #endif
- _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
-- INTUSE(_IO_str_init_static) (&sf, string, init_string_size, string);
-+ _IO_str_init_static_internal (&sf, string, init_string_size, string);
- sf._sbf._f._flags &= ~_IO_USER_BUF;
- sf._s._allocate_buffer = (_IO_alloc_type) malloc;
- sf._s._free_buffer = (_IO_free_type) free;
---- glibc-2.3.2/libio/vsnprintf.c 2002-02-25 02:02:12.000000000 -0500
-+++ glibc-2.3.2/libio/vsnprintf.c 2003-06-03 09:36:23.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1994,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1994,1997,1999-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
-@@ -126,7 +126,7 @@
- _IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
- string[0] = '\0';
-- INTUSE(_IO_str_init_static) (&sf.f, string, maxlen - 1, string);
-+ _IO_str_init_static_internal (&sf.f, string, maxlen - 1, string);
- ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
-
- if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
---- glibc-2.3.2/libio/wfileops.c 2002-11-05 02:28:51.000000000 -0500
-+++ glibc-2.3.2/libio/wfileops.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,95,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,95,97,98,99,2000,2001,2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Ulrich Drepper <drepper@cygnus.com>.
- Based on the single byte version by Per Bothner <bothner@cygnus.com>.
-@@ -153,6 +153,7 @@
- fp->_wide_data->_IO_buf_end,
- &fp->_wide_data->_IO_read_end);
-
-+ fp->_IO_read_base = fp->_IO_read_ptr;
- fp->_IO_read_ptr = (char *) read_stop;
-
- /* If we managed to generate some text return the next character. */
-@@ -217,16 +218,13 @@
- traditional Unix systems did this for stdout. stderr better
- not be line buffered. So we do just that here
- explicitly. --drepper */
-- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
-- _IO_stdout);
-- _IO_flockfile (_IO_stdout);
-+ _IO_acquire_lock (_IO_stdout);
-
- if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
- == (_IO_LINKED | _IO_LINE_BUF))
- _IO_OVERFLOW (_IO_stdout, EOF);
-
-- _IO_funlockfile (_IO_stdout);
-- _IO_cleanup_region_end (0);
-+ _IO_release_lock (_IO_stdout);
- #endif
- }
-
-@@ -879,7 +877,7 @@
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
- };
--INTVARDEF(_IO_wfile_jumps)
-+libc_hidden_data_def (_IO_wfile_jumps)
-
-
- struct _IO_jump_t _IO_wfile_jumps_mmap =
---- glibc-2.3.2/libio/wstrops.c 2002-08-24 22:41:38.000000000 -0400
-+++ glibc-2.3.2/libio/wstrops.c 2003-06-03 09:36:23.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1997-1999,2001-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
-@@ -67,28 +67,20 @@
- _IO_wstr_init_static (fp, ptr, size, pstart)
- _IO_FILE *fp;
- wchar_t *ptr;
-- int size;
-+ _IO_size_t size;
- wchar_t *pstart;
- {
-+ wchar_t *end;
-+
- if (size == 0)
-- size = __wcslen (ptr);
-- else if (size < 0)
-- {
-- /* If size is negative 'the characters are assumed to
-- continue indefinitely.' This is kind of messy ... */
-- int s;
-- size = 512;
-- /* Try increasing powers of 2, as long as we don't wrap around. */
-- for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
-- size = s;
-- /* Try increasing size as much as we can without wrapping around. */
-- for (s = size >> 1; s > 0; s >>= 1)
-- {
-- if (ptr + size + s > ptr)
-- size += s;
-- }
-- }
-- INTUSE(_IO_wsetb) (fp, ptr, ptr + size, 0);
-+ end = ptr + __wcslen (ptr);
-+ else if ((_IO_size_t) ptr + size * sizeof (wchar_t) > (_IO_size_t) ptr)
-+ end = ptr + size;
-+ else
-+ /* Even for misaligned ptr make sure there is integral number of wide
-+ characters. */
-+ end = ptr + (-1 - (_IO_size_t) ptr) / sizeof (wchar_t);
-+ INTUSE(_IO_wsetb) (fp, ptr, end, 0);
-
- fp->_wide_data->_IO_write_base = ptr;
- fp->_wide_data->_IO_read_base = ptr;
-@@ -96,29 +88,19 @@
- if (pstart)
- {
- fp->_wide_data->_IO_write_ptr = pstart;
-- fp->_wide_data->_IO_write_end = ptr + size;
-+ fp->_wide_data->_IO_write_end = end;
- fp->_wide_data->_IO_read_end = pstart;
- }
- else
- {
- fp->_wide_data->_IO_write_ptr = ptr;
- fp->_wide_data->_IO_write_end = ptr;
-- fp->_wide_data->_IO_read_end = ptr + size;
-+ fp->_wide_data->_IO_read_end = end;
- }
- /* A null _allocate_buffer function flags the strfile as being static. */
- (((_IO_strfile *) fp)->_s._allocate_buffer) = (_IO_alloc_type)0;
- }
-
--void
--_IO_wstr_init_readonly (fp, ptr, size)
-- _IO_FILE *fp;
-- const char *ptr;
-- int size;
--{
-- _IO_wstr_init_static (fp, (wchar_t *) ptr, size, NULL);
-- fp->_IO_file_flags |= _IO_NO_WRITES;
--}
--
- _IO_wint_t
- _IO_wstr_overflow (fp, c)
- _IO_FILE *fp;
---- glibc-2.3.2/linuxthreads/ChangeLog 2003-02-27 17:40:10.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/ChangeLog 2003-09-19 22:37:03.000000000 -0400
-@@ -1,4 +1,558 @@
--2003-02-27 Roland McGrath <roland@redhat.com>
-+2003-09-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
-+
-+ * tst-attr1.c: New test.
-+ * Makefile (tests): Add tst-attr1.
-+
-+2003-09-17 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/vfork.S: Branch to fork if
-+ libpthread is loaded. Elide backwards compatibility code when not
-+ required.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * descr.h (manager_thread): Rename to...
-+ (__pthread_manager_threadp): ... this.
-+ * pthread.c (manager_thread): Define to __pthread_manager_threadp.
-+ (__pthread_manager_threadp): New variable.
-+ * internals.h (__manager_thread): Define to
-+ __pthread_manager_threadp if USE_TLS.
-+
-+2003-09-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/Makefile (CFLAGS-cancel.c, CFLAGS-manager.c,
-+ CFLAGS-pthread.c, CFLAGS-sighandler.c): Add
-+ -mpreferred-stack-boundary=4.
-+
-+2003-09-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * attr.c (pthread_getattr_np): Correctly fill in the stack-related
-+ values for the initial thread.
-+
-+2003-09-17 Jakub Jelinek <jakub@redhat.com>
-+
-+ * pthread.c (manager_thread): Remove static, add attribute_hidden.
-+ (thread_self_stack): Rename to...
-+ (__pthread_self_stack): ... this. Remove static.
-+ (pthread_handle_sigcancel): Use check_thread_self ().
-+ (pthread_handle_sigrestart): Likewise.
-+ * sighandler.c (__pthread_sighandler, __pthread_sighandler_rt):
-+ Likewise.
-+ * descr.h (manager_thread): Declare.
-+ * internals.h (__pthread_self_stack): New prototype.
-+ (__manager_thread): Define.
-+ (check_thread_self): New function.
-+
-+2003-09-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile (CFLAGS-mutex.c): Add $(uses-callbacks).
-+ (CFLAGS-sighandler.c): Change $(exceptions) into $(uses-callbacks).
-+
-+2003-09-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New.
-+ (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and
-+ __SLONGWORD_TYPE otherwise.
-+
-+2003-09-11 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/pt-machine.h [MEMORY_BARRIER]: Use lwsync.
-+ [READ_MEMORY_BARRIER]: Define.
-+ [WRITE_MEMORY_BARRIER]: Define.
-+
-+2003-09-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Move
-+ ptr___pthread_cond_timedwait to the end of the structure to avoid
-+ breaking Wine unnecessarily.
-+
-+2003-09-08 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.
-+
-+2003-09-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
-+ * sysdeps/unix/sysv/linux/alpha/Versions: New file.
-+ * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
-+ * sysdeps/unix/sysv/linux/ia64/Versions: New file.
-+ * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
-+ * sysdeps/unix/sysv/linux/sparc/Versions: New file.
-+ * attr.c (__old_pthread_attr_setstacksize,
-+ __old_pthread_attr_setstack): New functions.
-+ (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
-+ as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
-+ (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
-+ as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
-+ * tststack.c: Include limits.h and sys/param.h.
-+ (main): Set size to MAX (70 * 1024, PTHREAD_STACK_MIN).
-+
-+ * barrier.c (__pthread_barrierattr_getpshared): Always
-+ return PTHREAD_PROCESS_PRIVATE.
-+ (pthread_barrierattr_setpshared): Return EINVAL if pshared
-+ is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
-+
-+2003-09-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
-+ (DL_SYSINFO_IMPLEMENTATION): Add CFI and make sure the code ends
-+ up in .text.
-+
-+ * barrier.c (pthread_barrierattr_setpshared): We don't handle
-+ inter-process barriers.
-+
-+2003-09-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile (tests): Add tst-tls1.
-+ (module-names): Add tst-tls1mod{,a,b,c,d,e,f}.
-+ ($(objpfx)tst-tls1mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
-+ ($(objpfx)tst-tls1): New.
-+ ($(objpfx)tst-tls2.out): Likewise.
-+ (tests): Depend on $(objpfx)tst-tls2.out.
-+ * tst-tls1.c: New test.
-+ * tst-tls1.h: New.
-+ * tst-tls1mod.c: New.
-+ * tst-tls1moda.c: New.
-+ * tst-tls1modb.c: New.
-+ * tst-tls1modc.c: New.
-+ * tst-tls1modd.c: New.
-+ * tst-tls1mode.c: New.
-+ * tst-tls1modf.c: New.
-+ * tst-tls2.sh: New test.
-+
-+ * internals.h (__pthread_cond_timedwait): New prototype.
-+ * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
-+ ptr___pthread_cond_timedwait.
-+ * pthread.c (__pthread_functions): Initialize them.
-+ * forward.c (pthread_cond_timedwait@GLIBC_2.0,
-+ pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
-+ * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
-+ pthread_cond_timedwait@@GLIBC_2.3.2.
-+
-+2003-08-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/pthread.h: Don't mark pthread_exit,
-+ pthread_join, pthread_cond_wait, and pthread_cond_timedwait with
-+ __THROW to match NPTL.
-+
-+2003-08-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/Makefile [subdir=rt] (CPPFLAGS): Add
-+ -DBROKEN_THREAD_SIGNALS.
-+
-+2003-08-11 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * manager.c (pthread_start_thread) [!(USE_TLS && HAVE___THREAD)]:
-+ Correct spelling of per thread resolver state.
-+
-+2003-08-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
-+ (__rtld_lock_default_lock_recursive,
-+ __rtld_lock_default_unlock_recursive): Define.
-+ [_LIBC && SHARED] (__rtld_lock_lock_recursive,
-+ __rtld_lock_unlock_recursive): Define using
-+ GL(_dl_rtld_*lock_recursive).
-+ * pthread.c (pthread_initialize): Initialize _dl_rtld_lock_recursive
-+ and _dl_rtld_unlock_recursive. Lock GL(_dl_load_lock) the same
-+ number of times as GL(_dl_load_lock) using non-mt implementation was
-+ nested.
-+
-+2003-07-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/pthread/bits/typesizes.h (__SSIZE_T_TYPE): Define.
-+ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file.
-+
-+ * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
-+ pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
-+ PTHREAD_STACK_MIN in comments.
-+
-+ * sysdeps/alpha/pt-machine.h (PT_EI): Add
-+ __attribute__((always_inline)).
-+ * sysdeps/arm/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/cris/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/hppa/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/i386/i686/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/i386/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/ia64/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/m68k/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/mips/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/powerpc/powerpc32/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/powerpc/powerpc64/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/s390/s390-32/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/s390/s390-64/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/sh/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/sparc/sparc32/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/sparc/sparc64/pt-machine.h (PT_EI): Likewise.
-+ * sysdeps/x86_64/pt-machine.h (PT_EI): Likewise.
-+ * spinlock.h (__pthread_set_own_extricate_if): Likewise.
-+ * sysdeps/ia64/tls.h (TLS_INIT_TP): Cast tcbp to __typeof
-+ (__thread_self).
-+ * Examples/ex13.c (main): Change res type to void * to avoid
-+ warnings.
-+ * tst-cancel.c (cleanup, inner, tf1, tf2, tf3): Comment out.
-+
-+2003-07-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ * pthread.c (init_one_static_tls, __pthread_init_static_tls): New
-+ functions.
-+ (pthread_initialize): Initialize GL(dl_init_static_tls).
-+
-+2003-06-19 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
-+ before __timer_dealloc.
-+ * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
-+ Don't call list_unlink.
-+
-+2003-07-29 Roland McGrath <roland@redhat.com>
-+
-+ * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
-+
-+2003-07-25 Roland McGrath <roland@redhat.com>
-+
-+ * manager.c (pthread_start_thread): Fix typo in last change.
-+
-+2003-07-14 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Add IS_IN_librt,
-+ use L() for local labels.
-+
-+2003-07-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * descr.h (struct _pthread_descr_struct): Provide p_res member
-+ even if USE_TLS && HAVE___THREAD.
-+ * sysdeps/pthread/res-state.c (__res_state): Return __resp
-+ if USE___THREAD.
-+ * manager.c: Include resolv.h.
-+ (pthread_start_thread): Initialize __resp.
-+ * libc-tls-loc.c (__res_state): Return __resp.
-+ * Makefile (tests): Add tst-_res1.
-+ (modules-names, extra-objs, test-extras, test-modules): Add support
-+ for test modules.
-+ ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
-+ ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
-+ -lpthread.
-+ * tst-_res1.c: New test.
-+ * tst-_res1mod1.c: New test.
-+ * tst-_res1mod2.c: New test.
-+
-+2003-07-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_push and
-+ __libc_cleanup_pop.
-+
-+ * tst-cancel-wrappers.sh: lseek and llseek are no cancellation points.
-+
-+2003-07-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Fix typo
-+ in test for compilation in libc.
-+
-+2003-07-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
-+ different symbol for the cancellation syscall wrapper and
-+ non-cancellation syscall wrapper.
-+ (PSEUDO_END): Define.
-+
-+2003-07-05 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
-+
-+2003-06-20 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Support cancellation
-+ in librt.
-+
-+2003-06-21 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Support cancellation
-+ in librt.
-+
-+2003-06-20 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/Makefile (libpthread-routines):
-+ Remove ptw-osf_sigprocmask.
-+
-+2003-06-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ * internals.h (__librt_multiple_threads, __librt_enable_asynccancel,
-+ __librt_disable_asynccancel): Declare.
-+ (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET, LIBC_CANCEL_HANDLED): Define
-+ for IS_IN_librt.
-+ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Support cancellation
-+ in librt.
-+ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
-+ * sysdeps/x86_64/tcb-offsets.sym: New file.
-+ * sysdeps/x86_64/Makefile: New file.
-+ * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
-+ * Versions (libc): Export __librt_enable_asynccancel,
-+ __librt_disable_asynccancel and __librt_multiple_threads as
-+ GLIBC_PRIVATE.
-+ * libc-cancellation.c (__librt_multiple_threads,
-+ __librt_enable_asynccancel, __librt_disable_asynccancel): New aliases.
-+
-+2003-06-12 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
-+ (SINGLE_THREAD_P): Replace @ got notation with @toc.
-+
-+2003-06-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/powerpc/pspinlock.c (__pthread_spin_init): Fix
-+ initializer [PR libc/5052].
-+
-+2003-06-09 Andreas Schwab <schwab@suse.de>
-+
-+ * Makefile: Move inclusion of ../Rules down after extra-objs is
-+ fully known.
-+
-+2003-06-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: New sequences for
-+ 5+ arg syscalls only needed for PIC.
-+ Patch by Ralph Siemsen <ralphs@netwinder.org>.
-+
-+2003-06-05 Richard Henderson <rth@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use
-+ and require CFI assembler directives.
-+ * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.
-+
-+2003-05-30 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
-+ (SAVESTK_0): Add CFI directives.
-+ (SAVESTK_3): Likewise.
-+ (SAVESTK_5): Likewise.
-+ (RESTSTK_0): Likewise.
-+ (RESTSTK_3): Likewise.
-+ (RESTSTK_5): Likewise.
-+
-+2003-05-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/i386/tls.h (TLS_DO_SET_THREAD_AREA): Add \n to error
-+ messages.
-+
-+2003-05-04 Roland McGrath <roland@redhat.com>
-+
-+ * Makefile ($(objpfx)../libc.so): New target.
-+
-+2003-04-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * pthread.c (__pthread_initialize_manager): Remove one last
-+ p_multiple_threads call.
-+
-+2003-04-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * pthread.c (__pthread_initialize_manager): Subtract
-+ TLS_PRE_TCB_SIZE bytes from tcbp to get to descr.
-+ * manager.c (pthread_handle_create): Subtract or add TLS_PRE_TCB_SIZE
-+ instead of sizeof (pthread_descr).
-+ (pthread_free): Add TLS_PRE_TCB_SIZE instead of sizeof (pthread_descr).
-+ * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define to 0.
-+ (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
-+ pthread_descr.
-+ (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
-+ to TLS_TCB_ALIGN.
-+ (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
-+ tcbp.
-+ (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
-+ unneccessarily.
-+ (NO_TLS_OFFSET): Define.
-+
-+2003-04-22 Roland McGrath <roland@redhat.com>
-+
-+ * Makeconfig (shared-thread-library): Reverse link order to work
-+ around linker bug.
-+
-+2003-04-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Make sure the
-+ compiler knows we use the ldt_entry variable and that the syscall
-+ modifies the memory.
-+
-+ * internals.h: Split pthread_functions definition into...
-+ * sysdeps/pthread/pthread-functions.h: ...new file.
-+
-+ * sysdeps/i386/useldt.h: Include <sysdep.h>.
-+
-+2003-04-13 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Rename macros to
-+ match changes in NPTL sysdep-cancel.h.
-+
-+2003-04-11 Roland McGrath <roland@redhat.com>
-+
-+ * Makefile (multidir): Don't set the variable here with $(shell ...).
-+ ($(objpfx)multidir.mk): New target, generated makefile; include that.
-+ (generated): Append it.
-+
-+2003-04-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile (multidir, crti-objs, crtn-objs): New variables.
-+ (generated-dirs): Add pathname component of multidir.
-+ (omit-deps, extra-objs): Include $(multidir)/crt? as well.
-+ ($(objpfx)libpthread.so): Depend on $(multidir)/crt?.o as well.
-+ ($(objpfx)$(multidir), $(objpfx)$(multidir)/crti.o,
-+ $(objpfx)$(multidir)/crtn.o): New.
-+ * sysdeps/unix/sysv/linux/sparc/Makefile: Removed.
-+ * sysdeps/unix/sysv/linux/x86_64/Makefile (LDFLAGS-pthread.so,
-+ before-compile, generated): Don't generate and use specs.
-+ ($(objpfx)specs): Remove.
-+
-+2003-04-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/s390/pspinlock.c (__pthread_spin_unlock): Fix asm contraints.
-+
-+2003-04-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h (PSEUDO): Add
-+ missing ; after ENTRY use [PR libc/4997].
-+
-+2003-04-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ * pthread.c (pthread_initialize): Unblock __pthread_sig_cancel
-+ in case the parent blocked it.
-+
-+2003-04-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile (libpthread-routines): Add pthread_atfork.
-+ (libpthread-static-only-routines): Add pthread_atfork.
-+
-+2003-04-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * pthread.c (__pthread_wait_for_restart_signal): Use
-+ __pthread_sigsuspend instead of sigsuspend.
-+ * internals.h (__pthread_sigsuspend): New prototype.
-+ * Makefile (libpthread-routines): Add pt-sigsuspend.
-+ (tests): Add tst-cancel7.
-+ * sysdeps/unix/sysv/linux/pt-sigsuspend.c: New file.
-+ * sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S: New file.
-+ * sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c: New file.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c: New file.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c: New file.
-+ * sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c: New file.
-+ * tst-cancel7.c: New test.
-+
-+2003-03-31 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * alloca_cutoff.c: Include internals.h.
-+ * sysdeps/pthread/errno-loc.c: Include linuxthreads/internals.h.
-+ * sysdeps/pthread/herrno-loc.c: Likewise.
-+ * sysdeps/pthread/res-state.c: Likewise.
-+
-+2003-03-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/bits/typesizes.h: New file.
-+ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file.
-+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file.
-+
-+2003-03-24 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
-+ (DOARGS_5, DOARGS_6, DOARGS_7): Rewritten.
-+
-+2003-03-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
-+
-+2003-03-21 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
-+ (SINGLE_THREAD_P_PIC): Use "reg" instead of "lr".
-+
-+2003-03-21 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/i386/tls.h [__ASSUME_SET_THREAD_AREA_SYSCALL]
-+ (TLS_SETUP_GS_SEGMENT): Fix a typo.
-+
-+2003-03-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/Makefile: Fix cut&paste error.
-+
-+2003-03-18 Roland McGrath <roland@redhat.com>
-+
-+ * Versions (libpthread: GLIBC_2.2): Remove
-+ pthread_barrierattr_getpshared, never really existed.
-+ (libpthread: GLIBC_2.0): Move __pthread_initialize to ...
-+ (libpthread: GLIBC_PRIVATE): ... here.
-+
-+2003-03-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
-+ * sysdeps/unix/sysv/linux/sparc/Makefile ($(objpfx)specs): Use full
-+ path for crt[in].o.
-+
-+2003-03-14 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set
-+ mips2 on new abi.
-+ * sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise.
-+ Handle 64-bit longs on n64.
-+
-+2003-03-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/pspinlock.c (__pthread_spin_lock,
-+ __pthread_spin_trylock): Rewritten.
-+
-+2003-03-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
-+ recent kernels.
-+
-+2003-03-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/pthread/timer_create.c (timer_create): Return correct
-+ error for CPU clocks.
-+
-+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
-+ _POSIX_MONOTONIC_CLOCK.
-+ * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
-+
-+2003-03-01 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/pt-machine.h
-+ (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
-+ New macros.
-+ * sysdeps/powerpc/tls.h: Don't define those here.
-+
-+ * sysdeps/powerpc/tls.h [! USE_TLS && !__powerpc64__]: Define
-+ tcbhead_t with multiple_threads member.
-+ [USE_TLS] (tcbhead_t): Define minimal one-word version.
-+ [USE_TLS && !__powerpc64__] (TLS_MULTIPLE_THREADS_IN_TCB): Define.
-+ * sysdeps/powerpc/tcb-offsets.sym [USE_TLS]: Use tls.h macros to
-+ derive thread register offset of p_multiple_threads member.
-+
-+ * descr.h (struct _pthread_descr_struct) [!USE_TLS || !TLS_DTV_AT_TP]:
-+ Conditionalize p_header member on this.
-+ [TLS_MULTIPLE_THREADS_IN_TCB]: Add p_multiple_threads alternatively.
-+ * sysdeps/ia64/tls.h [USE_TLS] (TLS_MULTIPLE_THREADS_IN_TCB): Define.
-+ * sysdeps/sh/tls.h: Likewise.
-+ * sysdeps/ia64/tcb-offsets.sym [USE_TLS]: Use p_multiple_threads.
-+ * sysdeps/sh/tcb-offsets.sym: Likewise.
-+ * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
-+ (SINGLE_THREAD_P): Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
-+ (SINGLE_THREAD_P): Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
-+ (SINGLE_THREAD_P): Likewise.
-+ * pthread.c (__pthread_initialize_manager): Likewise.
-+ * manager.c (pthread_handle_create): Likewise.
-
- * sysdeps/powerpc/tls.h [HAVE_TLS_SUPPORT]: Define USE_TLS and all
- related macros.
---- glibc-2.3.2/linuxthreads/Examples/ex13.c 2002-09-25 01:28:41.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/Examples/ex13.c 2003-08-21 08:37:03.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test for Pthreads/mutexes.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kurt Garloff <garloff@suse.de>, 2000.
-
-@@ -80,7 +80,7 @@
- struct thr_ctrl threadctrl;
- pthread_t thread;
- int err;
-- int *res = &threadctrl.retval;
-+ void *res = &threadctrl.retval;
- pthread_mutexattr_t mutattr;
- pthread_mutexattr_init (&mutattr);
- pthread_mutex_init (&threadctrl.mutex, &mutattr);
-@@ -106,7 +106,7 @@
- abort ();
- };
- dump_mut (&threadctrl.mutex);
-- pthread_join (thread, (void **) &res);
-+ pthread_join (thread, &res);
- printf ("OK\n");
- return 0;
- }
---- glibc-2.3.2/linuxthreads/Makeconfig 2002-12-31 00:56:27.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/Makeconfig 2003-04-24 20:05:57.000000000 -0400
-@@ -3,8 +3,8 @@
-
- have-thread-library = yes
-
--shared-thread-library = $(common-objpfx)linuxthreads/libpthread.so \
-- $(common-objpfx)linuxthreads/libpthread_nonshared.a
-+shared-thread-library = $(common-objpfx)linuxthreads/libpthread_nonshared.a \
-+ $(common-objpfx)linuxthreads/libpthread.so
- static-thread-library = $(common-objpfx)linuxthreads/libpthread.a
- bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a
-
---- glibc-2.3.2/linuxthreads/Makefile 2003-02-21 20:01:16.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/Makefile 2003-09-19 22:37:03.000000000 -0400
-@@ -21,6 +21,8 @@
- #
- subdir := linuxthreads
-
-+all: # Make this the default target; it will be defined in Rules.
-+
- linuxthreads-version := $(shell sed -n 's/^.*$(subdir)-\([0-9.]*\).*$$/\1/p' \
- Banner)
-
-@@ -36,8 +38,8 @@
- install-lib-ldscripts := libpthread.so
-
- libpthread-routines := attr cancel condvar join manager mutex ptfork \
-- ptlongjmp pthread signals specific errno lockfile \
-- semaphore spinlock rwlock pt-machine \
-+ ptlongjmp pthread pt-sigsuspend signals specific errno \
-+ lockfile semaphore spinlock rwlock pt-machine \
- oldsemaphore events getcpuclockid pspinlock barrier \
- ptclock_gettime ptclock_settime sighandler \
- pthandles libc-tls-loc pt-allocrtsig \
-@@ -47,11 +49,12 @@
- ptw-lseek64 ptw-llseek ptw-msync ptw-nanosleep \
- ptw-open ptw-open64 ptw-pause ptw-pread ptw-pread64 \
- ptw-pwrite ptw-pwrite64 ptw-tcdrain ptw-wait \
-- ptw-waitpid pt-system old_pthread_atfork
-+ ptw-waitpid pt-system old_pthread_atfork pthread_atfork
- # Don't generate deps for calls with no sources. See sysdeps/unix/Makefile.
- omit-deps = $(unix-syscalls:%=ptw-%)
-
- libpthread-shared-only-routines = pt-allocrtsig
-+libpthread-static-only-routines = pthread_atfork
-
- libpthread-nonshared = pthread_atfork
-
-@@ -78,7 +81,24 @@
-
- ifeq ($(build-shared),yes)
-
--extra-objs += crti.o crtn.o
-+# Set the `multidir' variable by grabbing the variable from the compiler.
-+# We do it once and save the result in a generated makefile.
-+-include $(objpfx)multidir.mk
-+$(objpfx)multidir.mk: $(common-objpfx)config.make
-+ dir=`$(CC) $(CFLAGS) $(CPPFLAGS) -print-multi-directory`; \
-+ echo "multidir := $$dir" > $@T
-+ mv -f $@T $@
-+generated += multidir.mk
-+
-+crti-objs := crti.o
-+crtn-objs := crtn.o
-+ifneq (,$(patsubst .,,$(multidir)))
-+generated-dirs := $(firstword $(subst /, , $(multidir)))
-+crti-objs += $(multidir)/crti.o
-+crtn-objs += $(multidir)/crtn.o
-+omit-deps += $(multidir)/crti $(multidir)/crtn
-+endif
-+extra-objs += $(crti-objs) $(crtn-objs)
- omit-deps += crti crtn
-
- CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
-@@ -89,7 +109,7 @@
- tststack $(tests-nodelete-$(have-z-nodelete)) ecmutex ex14 ex15 ex16 \
- ex17 ex18 tst-cancel tst-context bug-sleep \
- tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel4 tst-cancel5 \
-- tst-cancel6 tst-popen tst-popen2
-+ tst-cancel6 tst-cancel7 tst-popen tst-popen2 tst-attr1
- test-srcs = tst-signal
- # These tests are linked with libc before libpthread
- tests-reverse += tst-cancel5
-@@ -101,9 +121,31 @@
-
- ifeq (yes,$(build-shared))
- tests-nodelete-yes = unload
-+tests += tst-tls1 tst-_res1
- endif
-
--include ../Rules
-+modules-names = tst-_res1mod1 tst-_res1mod2 \
-+ tst-tls1mod tst-tls1moda tst-tls1modb tst-tls1modc \
-+ tst-tls1modd tst-tls1mode tst-tls1modf
-+extra-objs += $(addsuffix .os,$(strip $(modules-names)))
-+test-extras += $(modules-names)
-+test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
-+
-+tst-tls1mod.so-no-z-defs = yes
-+tst-tls1moda.so-no-z-defs = yes
-+tst-tls1modb.so-no-z-defs = yes
-+tst-tls1modc.so-no-z-defs = yes
-+tst-tls1modd.so-no-z-defs = yes
-+tst-tls1mode.so-no-z-defs = yes
-+tst-tls1modf.so-no-z-defs = yes
-+
-+$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds
-+ $(build-module)
-+
-+ifeq ($(build-shared),yes)
-+# Build all the modules even when not actually running test programs.
-+tests: $(test-modules)
-+endif
-
- # What we install as libpthread.so for programs to link against is in fact a
- # link script. It contains references for the various libraries we need.
-@@ -131,9 +173,9 @@
-
-
- extra-B-pthread.so = -B$(common-objpfx)linuxthreads/
--$(objpfx)libpthread.so: $(objpfx)crti.o $(objpfx)crtn.o
--$(objpfx)libpthread.so: +preinit += $(objpfx)crti.o
--$(objpfx)libpthread.so: +postinit += $(objpfx)crtn.o
-+$(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs))
-+$(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs))
-+$(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs))
-
- znodelete-yes = -DHAVE_Z_NODELETE
- CFLAGS-mutex.c += -D__NO_WEAK_PTHREAD_ALIASES
-@@ -142,7 +184,8 @@
- CFLAGS-ptfork.c += -D__NO_WEAK_PTHREAD_ALIASES
- CFLAGS-cancel.c += -D__NO_WEAK_PTHREAD_ALIASES -D_RPC_THREAD_SAFE_
- CFLAGS-unload.c += -DPREFIX=\"$(objpfx)\"
--CFLAGS-sighandler.c += $(exceptions)
-+CFLAGS-mutex.c += $(uses-callbacks)
-+CFLAGS-sighandler.c += $(uses-callbacks)
-
- ifeq (yes,$(versioning))
- -include $(common-objpfx)tls.make
-@@ -186,6 +229,8 @@
- libc-link.so = $(common-objpfx)libc.so
- endif
-
-+include ../Rules
-+
- # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
- # This ensures they will load libc.so for needed symbols if loaded by
- # a statically-linked program that hasn't already loaded it.
-@@ -204,6 +249,7 @@
- $(addprefix $(objpfx), $(tests-reverse)): \
- $(objpfx)../libc.so $(objpfx)libpthread.so \
- $(objpfx)libpthread_nonshared.a
-+$(objpfx)../libc.so: $(common-objpfx)libc.so ;
- $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so
- $(objpfx)unload: $(common-objpfx)dlfcn/libdl.so
- $(objpfx)unload.out: $(objpfx)libpthread.so $(objpfx)libpthread_nonshared.a
-@@ -248,6 +294,17 @@
- $(objpfx)crtn.o: $(objpfx)crtn.S $(objpfx)defs.h
- $(compile.S) -g0 $(ASFLAGS-.os) -o $@
-
-+ifneq ($(multidir),.)
-+$(objpfx)$(multidir):
-+ @mkdir -p $(objpfx)$(multidir)
-+
-+$(objpfx)$(multidir)/crti.o: $(objpfx)crti.o $(objpfx)$(multidir)
-+ ln -f $< $@
-+
-+$(objpfx)$(multidir)/crtn.o: $(objpfx)crtn.o $(objpfx)$(multidir)
-+ ln -f $< $@
-+endif
-+
- generated += crti.S crtn.S defs.h pt-initfini.s
- endif
-
-@@ -256,6 +313,21 @@
- $(resolvobjdir)/libresolv.a
- endif
-
-+ifeq (yes,$(build-shared))
-+$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
-+$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
-+
-+$(objpfx)tst-tls1: $(objpfx)tst-tls1mod.so $(shared-thread-library)
-+
-+tests: $(objpfx)tst-tls2.out
-+$(objpfx)tst-tls2.out: tst-tls2.sh $(objpfx)tst-tls1 \
-+ $(objpfx)tst-tls1moda.so $(objpfx)tst-tls1modb.so \
-+ $(objpfx)tst-tls1modc.so $(objpfx)tst-tls1modd.so \
-+ $(objpfx)tst-tls1mode.so $(objpfx)tst-tls1modf.so
-+ $(SHELL) -e tst-tls2.sh $(common-objpfx) $(elf-objpfx) \
-+ $(rtld-installed-name)
-+endif
-+
- ifeq (no,$(cross-compiling))
- ifeq (yes,$(build-shared))
- tests: $(objpfx)tst-signal.out $(objpfx)tst-cancel-wrappers.out
---- glibc-2.3.2/linuxthreads/Versions 2003-01-02 17:33:45.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/Versions 2003-09-19 22:37:03.000000000 -0400
-@@ -7,6 +7,7 @@
- pthread_attr_setschedparam; pthread_attr_setschedpolicy;
- pthread_attr_setscope; pthread_cond_broadcast; pthread_cond_destroy;
- pthread_cond_init; pthread_cond_signal; pthread_cond_wait;
-+ pthread_cond_timedwait;
- pthread_condattr_destroy; pthread_condattr_init; pthread_equal;
- pthread_exit; pthread_getschedparam; pthread_mutex_destroy;
- pthread_mutex_init; pthread_mutex_lock; pthread_mutex_unlock;
-@@ -20,7 +21,7 @@
- # Changed pthread_cond_t.
- pthread_cond_init; pthread_cond_destroy;
- pthread_cond_wait; pthread_cond_signal;
-- pthread_cond_broadcast;
-+ pthread_cond_broadcast; pthread_cond_timedwait;
- }
- GLIBC_PRIVATE {
- # Internal libc interface to libpthread
-@@ -31,7 +32,8 @@
-
- __libc_creat; __libc_poll; __libc_pselect; __libc_select;
- __libc_sigpause; __libc_sigsuspend; __libc_sigwait; __libc_sigwaitinfo;
-- __libc_waitid; __libc___xpg_sigpause;
-+ __libc_waitid; __libc___xpg_sigpause; __librt_enable_asynccancel;
-+ __librt_disable_asynccancel; __librt_multiple_threads;
- }
- }
-
-@@ -80,7 +82,7 @@
- sigwait;
-
- # Protected names for functions used in other shared objects.
-- __pthread_atfork; __pthread_initialize; __pthread_getspecific;
-+ __pthread_atfork; __pthread_getspecific;
- __pthread_key_create; __pthread_mutex_destroy; __pthread_mutex_init;
- __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock;
- __pthread_mutexattr_destroy; __pthread_mutexattr_init;
-@@ -147,7 +149,7 @@
- pthread_getcpuclockid;
- pthread_barrier_destroy; pthread_barrier_init; pthread_barrier_wait;
- pthread_barrierattr_destroy; pthread_barrierattr_init;
-- pthread_barrierattr_getpshared; pthread_barrierattr_setpshared;
-+ pthread_barrierattr_setpshared;
- pthread_mutex_timedlock;
- pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock;
-
-@@ -170,6 +172,7 @@
- }
- GLIBC_PRIVATE {
- # Internal libc interface to libpthread
-+ __pthread_initialize;
- __pthread_kill_other_threads_np;
- }
- }
---- glibc-2.3.2/linuxthreads/alloca_cutoff.c 2002-12-28 05:06:33.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/alloca_cutoff.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Determine whether block of given size can be allocated on the stack or not.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -20,6 +20,7 @@
- #include <alloca.h>
- #include <stdlib.h>
- #include <sys/param.h>
-+#include "internals.h"
- #include <sysdep-cancel.h>
-
- int
---- glibc-2.3.2/linuxthreads/attr.c 2002-12-17 17:49:21.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/attr.c 2003-09-19 22:37:03.000000000 -0400
-@@ -15,6 +15,9 @@
- /* Handling of thread attributes */
-
- #include <errno.h>
-+#include <inttypes.h>
-+#include <stdio.h>
-+#include <stdio_ext.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/param.h>
-@@ -220,7 +223,44 @@
- attr->__stacksize = stacksize;
- return 0;
- }
-+
-+#if PTHREAD_STACK_MIN == 16384
- weak_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize)
-+#else
-+versioned_symbol (libpthread, __pthread_attr_setstacksize,
-+ pthread_attr_setstacksize, GLIBC_2_3_3);
-+
-+# if SHLIB_COMPAT(libpthread, GLIBC_2_1, GLIBC_2_3_3)
-+
-+int __old_pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize)
-+{
-+# ifdef FLOATING_STACKS
-+ /* We have to check against the maximum allowed stack size. This is no
-+ problem if the manager is already started and we determined it. If
-+ this hasn't happened, we have to find the limit outself. */
-+ if (__pthread_max_stacksize == 0)
-+ __pthread_init_max_stacksize ();
-+
-+ if (stacksize > __pthread_max_stacksize)
-+ return EINVAL;
-+# else
-+ /* We have a fixed size limit. */
-+ if (stacksize > STACK_SIZE)
-+ return EINVAL;
-+# endif
-+
-+ /* We don't accept value smaller than old PTHREAD_STACK_MIN. */
-+ if (stacksize < 16384)
-+ return EINVAL;
-+
-+ attr->__stacksize = stacksize;
-+ return 0;
-+}
-+compat_symbol (libpthread, __old_pthread_attr_setstacksize,
-+ pthread_attr_setstacksize, GLIBC_2_1);
-+# endif
-+#endif
-+
-
- int __pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize)
- {
-@@ -251,7 +291,41 @@
-
- return err;
- }
-+
-+#if PTHREAD_STACK_MIN == 16384
- weak_alias (__pthread_attr_setstack, pthread_attr_setstack)
-+#else
-+versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack,
-+ GLIBC_2_3_3);
-+# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3)
-+int __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
-+ size_t stacksize)
-+{
-+ int err;
-+
-+ if ((((uintptr_t) stackaddr)
-+ & (__alignof__ (struct _pthread_descr_struct) - 1)) != 0)
-+ err = EINVAL;
-+ else
-+ err = __old_pthread_attr_setstacksize (attr, stacksize);
-+ if (err == 0)
-+ {
-+# ifndef _STACK_GROWS_UP
-+ attr->__stackaddr = (char *) stackaddr + stacksize;
-+# else
-+ attr->__stackaddr = stackaddr;
-+# endif
-+ attr->__stackaddr_set = 1;
-+ }
-+
-+ return err;
-+}
-+
-+compat_symbol (libpthread, __old_pthread_attr_setstack, pthread_attr_setstack,
-+ GLIBC_2_2);
-+
-+# endif
-+#endif
-
- int __pthread_attr_getstack (const pthread_attr_t *attr, void **stackaddr,
- size_t *stacksize)
-@@ -273,6 +347,7 @@
- {
- pthread_handle handle = thread_handle (thread);
- pthread_descr descr;
-+ int ret = 0;
-
- if (handle == NULL)
- return ENOENT;
-@@ -293,6 +368,7 @@
-
- attr->__inheritsched = descr->p_inheritsched;
- attr->__scope = PTHREAD_SCOPE_SYSTEM;
-+
- #ifdef _STACK_GROWS_DOWN
- # ifdef USE_TLS
- attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr
-@@ -328,5 +404,70 @@
- # endif
- #endif
-
-+#ifdef USE_TLS
-+ if (attr->__stackaddr == NULL)
-+#else
-+ if (descr == &__pthread_initial_thread)
-+#endif
-+ {
-+ /* Defined in ld.so. */
-+ extern void *__libc_stack_end;
-+
-+ /* Stack size limit. */
-+ struct rlimit rl;
-+
-+ /* The safest way to get the top of the stack is to read
-+ /proc/self/maps and locate the line into which
-+ __libc_stack_end falls. */
-+ FILE *fp = fopen ("/proc/self/maps", "rc");
-+ if (fp == NULL)
-+ ret = errno;
-+ /* We need the limit of the stack in any case. */
-+ else if (getrlimit (RLIMIT_STACK, &rl) != 0)
-+ ret = errno;
-+ else
-+ {
-+ /* We need no locking. */
-+ __fsetlocking (fp, FSETLOCKING_BYCALLER);
-+
-+ /* Until we found an entry (which should always be the case)
-+ mark the result as a failure. */
-+ ret = ENOENT;
-+
-+ char *line = NULL;
-+ size_t linelen = 0;
-+
-+ while (! feof_unlocked (fp))
-+ {
-+ if (__getdelim (&line, &linelen, '\n', fp) <= 0)
-+ break;
-+
-+ uintptr_t from;
-+ uintptr_t to;
-+ if (sscanf (line, "%" SCNxPTR "-%" SCNxPTR, &from, &to) == 2
-+ && from <= (uintptr_t) __libc_stack_end
-+ && (uintptr_t) __libc_stack_end < to)
-+ {
-+ /* Found the entry. Now we have the info we need. */
-+ attr->__stacksize = rl.rlim_cur;
-+ attr->__stackaddr = (void *) to;
-+
-+ /* The limit might be too high. This is a bogus
-+ situation but try to avoid making it worse. */
-+ if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr)
-+ attr->__stacksize = (size_t) attr->__stackaddr;
-+
-+ /* We succeed and no need to look further. */
-+ ret = 0;
-+ break;
-+ }
-+ }
-+
-+ fclose (fp);
-+ free (line);
-+ }
-+ }
-+
- return 0;
-+
- }
---- glibc-2.3.2/linuxthreads/barrier.c 2002-08-27 00:52:34.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/barrier.c 2003-09-19 22:37:03.000000000 -0400
-@@ -1,5 +1,5 @@
- /* POSIX barrier implementation for LinuxThreads.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kaz Kylheku <kaz@ashi.footprints.net>, 2000.
-
-@@ -110,7 +110,7 @@
- __pthread_barrierattr_getpshared(const pthread_barrierattr_t *attr,
- int *pshared)
- {
-- *pshared = attr->__pshared;
-+ *pshared = PTHREAD_PROCESS_PRIVATE;
- return 0;
- }
-
-@@ -120,6 +120,9 @@
- if (pshared != PTHREAD_PROCESS_PRIVATE && pshared != PTHREAD_PROCESS_SHARED)
- return EINVAL;
-
-- attr->__pshared = pshared;
-+ /* For now it is not possible to shared a conditional variable. */
-+ if (pshared != PTHREAD_PROCESS_PRIVATE)
-+ return ENOSYS;
-+
- return 0;
- }
---- glibc-2.3.2/linuxthreads/descr.h 2002-12-28 05:06:33.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/descr.h 2003-09-19 22:37:03.000000000 -0400
-@@ -23,6 +23,7 @@
- #include <stdint.h>
- #include <sys/types.h>
- #include <hp-timing.h>
-+#include <tls.h>
-
- /* Fast thread-specific data internal to libc. */
- enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
-@@ -106,22 +107,30 @@
-
- union dtv;
-
--
--struct _pthread_descr_struct {
-- /* XXX Remove this union for IA-64 style TLS module */
-- union {
-- struct {
-+struct _pthread_descr_struct
-+{
-+#if !defined USE_TLS || !TLS_DTV_AT_TP
-+ /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */
-+ union
-+ {
-+ struct
-+ {
- void *tcb; /* Pointer to the TCB. This is not always
- the address of this thread descriptor. */
- union dtv *dtvp;
- pthread_descr self; /* Pointer to this structure */
- int multiple_threads;
--#ifdef NEED_DL_SYSINFO
-+# ifdef NEED_DL_SYSINFO
- uintptr_t sysinfo;
--#endif
-+# endif
- } data;
- void *__padding[16];
- } p_header;
-+# define p_multiple_threads p_header.data.multiple_threads
-+#elif TLS_MULTIPLE_THREADS_IN_TCB
-+ int p_multiple_threads;
-+#endif
-+
- pthread_descr p_nextlive, p_prevlive;
- /* Double chaining of active threads */
- pthread_descr p_nextwaiting; /* Next element in the queue holding the thr */
-@@ -154,8 +163,8 @@
- int * p_h_errnop; /* pointer to used h_errno variable */
- int p_h_errno; /* error returned by last netdb function */
- struct __res_state *p_resp; /* Pointer to resolver state */
-- struct __res_state p_res; /* per-thread resolver state */
- #endif
-+ struct __res_state p_res; /* per-thread resolver state */
- int p_userstack; /* nonzero if the user provided the stack */
- void *p_guardaddr; /* address of guard area or NULL */
- size_t p_guardsize; /* size of guard area */
-@@ -208,6 +217,7 @@
- /* Descriptor of the manager thread */
-
- extern struct _pthread_descr_struct __pthread_manager_thread;
-+extern pthread_descr __pthread_manager_threadp attribute_hidden;
-
- /* Indicate whether at least one thread has a user-defined stack (if 1),
- or all threads have stacks supplied by LinuxThreads (if 0). */
---- glibc-2.3.2/linuxthreads/forward.c 2003-01-02 17:33:45.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/forward.c 2003-09-19 22:37:03.000000000 -0400
-@@ -128,6 +128,15 @@
- #endif
- versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2);
-
-+FORWARD (__pthread_cond_timedwait,
-+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
-+ const struct timespec *abstime), (cond, mutex, abstime), 0)
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
-+strong_alias (__pthread_cond_timedwait, __pthread_cond_timedwait_2_0)
-+compat_symbol (libc, __pthread_cond_timedwait_2_0, pthread_cond_timedwait, GLIBC_2_0);
-+#endif
-+versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait, GLIBC_2_3_2);
-+
-
- FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
- (thread1, thread2), 1)
---- glibc-2.3.2/linuxthreads/internals.h 2003-01-06 19:02:26.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/internals.h 2003-09-19 22:37:03.000000000 -0400
-@@ -29,6 +29,7 @@
- #include "descr.h"
-
- #include "semaphore.h"
-+#include <pthread-functions.h>
-
- #ifndef THREAD_GETMEM
- # define THREAD_GETMEM(descr, member) descr->member
-@@ -256,6 +257,7 @@
-
- /* Defined and used in libc.so. */
- extern int __libc_multiple_threads attribute_hidden;
-+extern int __librt_multiple_threads;
-
- /* Debugging */
-
-@@ -352,12 +354,16 @@
- const pthread_condattr_t *cond_attr);
- extern int __pthread_cond_destroy (pthread_cond_t *cond);
- extern int __pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex);
-+extern int __pthread_cond_timedwait (pthread_cond_t *cond,
-+ pthread_mutex_t *mutex,
-+ const struct timespec *abstime);
- extern int __pthread_cond_signal (pthread_cond_t *cond);
- extern int __pthread_cond_broadcast (pthread_cond_t *cond);
- extern int __pthread_condattr_init (pthread_condattr_t *attr);
- extern int __pthread_condattr_destroy (pthread_condattr_t *attr);
- extern pthread_t __pthread_self (void);
- extern pthread_descr __pthread_thread_self (void);
-+extern pthread_descr __pthread_self_stack (void) attribute_hidden;
- extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
- extern void __pthread_exit (void *retval);
- extern int __pthread_getschedparam (pthread_t thread, int *policy,
-@@ -377,6 +383,8 @@
-
- extern void __pthread_wait_for_restart_signal(pthread_descr self);
-
-+extern void __pthread_sigsuspend (const sigset_t *mask) attribute_hidden;
-+
- extern int __pthread_yield (void);
-
- extern int __pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
-@@ -465,9 +473,12 @@
- extern void __libc_disable_asynccancel (int oldtype)
- internal_function attribute_hidden;
-
-+/* The two functions are in libc.so and are exported. */
-+extern int __librt_enable_asynccancel (void);
-+extern void __librt_disable_asynccancel (int oldtype) internal_function;
-+
- extern void __pthread_cleanup_upto (__jmp_buf target,
- char *targetframe) attribute_hidden;
--struct fork_block;
- extern pid_t __pthread_fork (struct fork_block *b) attribute_hidden;
-
- #if !defined NOT_IN_libc
-@@ -478,7 +489,7 @@
- # define LIBC_CANCEL_HANDLED() \
- __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \
- __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel")
--#elif defined NOT_IN_libc && defined IS_IN_libpthread
-+#elif defined IS_IN_libpthread
- # define LIBC_CANCEL_ASYNC() \
- __pthread_enable_asynccancel ()
- # define LIBC_CANCEL_RESET(oldtype) \
-@@ -486,70 +497,20 @@
- # define LIBC_CANCEL_HANDLED() \
- __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \
- __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel")
-+#elif defined IS_IN_librt
-+# define LIBC_CANCEL_ASYNC() \
-+ __librt_enable_asynccancel ()
-+# define LIBC_CANCEL_RESET(oldtype) \
-+ __librt_disable_asynccancel (oldtype)
-+# define LIBC_CANCEL_HANDLED() \
-+ __asm (".globl " __SYMBOL_PREFIX "__librt_enable_asynccancel"); \
-+ __asm (".globl " __SYMBOL_PREFIX "__librt_disable_asynccancel")
- #else
- # define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
- # define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
- # define LIBC_CANCEL_HANDLED() /* Nothing. */
- #endif
-
--/* Data type shared with libc. The libc uses it to pass on calls to
-- the thread functions. */
--struct pthread_functions
--{
-- pid_t (*ptr_pthread_fork) (struct fork_block *);
-- int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
-- int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
-- int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
-- int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
-- int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
-- int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
-- int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
-- int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
-- struct sched_param *);
-- int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
-- const struct sched_param *);
-- int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
-- int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
-- int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
-- int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
-- int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
-- int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-- int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
-- int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
-- int (*ptr___pthread_cond_init) (pthread_cond_t *,
-- const pthread_condattr_t *);
-- int (*ptr___pthread_cond_signal) (pthread_cond_t *);
-- int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
-- int (*ptr_pthread_equal) (pthread_t, pthread_t);
-- void (*ptr___pthread_exit) (void *);
-- int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
-- int (*ptr_pthread_setschedparam) (pthread_t, int,
-- const struct sched_param *);
-- int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
-- int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
-- const pthread_mutexattr_t *);
-- int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
-- int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
-- int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-- pthread_t (*ptr_pthread_self) (void);
-- int (*ptr_pthread_setcancelstate) (int, int *);
-- int (*ptr_pthread_setcanceltype) (int, int *);
-- void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
-- void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
-- char *targetframe);
-- pthread_descr (*ptr_pthread_thread_self) (void);
-- int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
-- void * (*ptr_pthread_internal_tsd_get) (int key);
-- void ** __attribute__ ((__const__))
-- (*ptr_pthread_internal_tsd_address) (int key);
-- int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
-- struct sigaction *oact);
-- int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
-- int (*ptr_pthread_raise) (int sig);
--};
--
--/* Variable in libc.so. */
--extern struct pthread_functions __libc_pthread_functions attribute_hidden;
- extern int * __libc_pthread_init (const struct pthread_functions *functions);
-
- #if !defined NOT_IN_libc && !defined FLOATING_STACKS
-@@ -562,4 +523,30 @@
- # endif
- #endif
-
-+#ifndef USE_TLS
-+# define __manager_thread (&__pthread_manager_thread)
-+#else
-+# define __manager_thread __pthread_manager_threadp
-+#endif
-+
-+extern inline __attribute__((always_inline)) pthread_descr
-+check_thread_self (void)
-+{
-+ pthread_descr self = thread_self ();
-+#if defined THREAD_SELF && defined INIT_THREAD_SELF
-+ if (self == __manager_thread)
-+ {
-+ /* A new thread might get a cancel signal before it is fully
-+ initialized, so that the thread register might still point to the
-+ manager thread. Double check that this is really the manager
-+ thread. */
-+ self = __pthread_self_stack();
-+ if (self != __manager_thread)
-+ /* Oops, thread_self() isn't working yet.. */
-+ INIT_THREAD_SELF(self, self->p_nr);
-+ }
-+#endif
-+ return self;
-+}
-+
- #endif /* internals.h */
---- glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-01-02 18:26:04.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-08-21 08:37:03.000000000 -0400
-@@ -31,7 +31,8 @@
- weak_extern (__pthread_do_exit)
- # endif
-
--int __libc_multiple_threads attribute_hidden;
-+int __libc_multiple_threads attribute_hidden __attribute__((nocommon));
-+strong_alias (__libc_multiple_threads, __librt_multiple_threads);
-
- /* The next two functions are similar to pthread_setcanceltype() but
- more specialized for the use in the cancelable functions like write().
-@@ -49,6 +50,7 @@
- (PTHREAD_CANCELED, CURRENT_STACK_FRAME), 0);
- return oldtype;
- }
-+strong_alias (__libc_enable_asynccancel, __librt_enable_asynccancel)
-
- void
- internal_function attribute_hidden
-@@ -57,5 +59,6 @@
- pthread_descr self = thread_self();
- LIBC_THREAD_SETMEM(self, p_canceltype, oldtype);
- }
-+strong_alias (__libc_disable_asynccancel, __librt_disable_asynccancel)
-
- #endif
---- glibc-2.3.2/linuxthreads/libc-tls-loc.c 2002-11-14 22:37:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/libc-tls-loc.c 2003-08-21 08:37:03.000000000 -0400
-@@ -43,7 +43,7 @@
- struct __res_state *
- __res_state (void)
- {
-- return &_res;
-+ return __resp;
- }
-
- #endif
---- glibc-2.3.2/linuxthreads/manager.c 2003-01-12 03:37:35.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/manager.c 2003-08-21 08:37:03.000000000 -0400
-@@ -28,6 +28,7 @@
- #include <sys/time.h>
- #include <sys/wait.h> /* for waitpid macros */
- #include <locale.h> /* for __uselocale */
-+#include <resolv.h> /* for __resp */
-
- #include <ldsodefs.h>
- #include "pthread.h"
-@@ -287,6 +288,9 @@
- /* Initialize thread-locale current locale to point to the global one.
- With __thread support, the variable's initializer takes care of this. */
- __uselocale (LC_GLOBAL_LOCALE);
-+#else
-+ /* Initialize __resp. */
-+ __resp = &self->p_res;
- #endif
- /* Make gdb aware of new thread */
- if (__pthread_threads_debug && __pthread_sig_debug > 0) {
-@@ -591,8 +595,8 @@
- if (new_thread == NULL)
- return EAGAIN;
- # if TLS_DTV_AT_TP
-- /* pthread_descr is right below TP. */
-- --new_thread;
-+ /* pthread_descr is below TP. */
-+ new_thread = (pthread_descr) ((char *) new_thread - TLS_PRE_TCB_SIZE);
- # endif
- #else
- /* Prevent warnings. */
-@@ -612,7 +616,7 @@
- {
- #ifdef USE_TLS
- # if TLS_DTV_AT_TP
-- ++new_thread;
-+ new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
- # endif
- _dl_deallocate_tls (new_thread, true);
- #endif
-@@ -638,13 +642,13 @@
- new_thread_id = sseg + pthread_threads_counter;
- /* Initialize the thread descriptor. Elements which have to be
- initialized to zero already have this value. */
--#if defined USE_TLS && TLS_DTV_AT_TP
-- new_thread->p_header.data.tcb = new_thread + 1;
--#else
-+#if !defined USE_TLS || !TLS_DTV_AT_TP
- new_thread->p_header.data.tcb = new_thread;
--#endif
- new_thread->p_header.data.self = new_thread;
-- new_thread->p_header.data.multiple_threads = 1;
-+#endif
-+#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
-+ new_thread->p_multiple_threads = 1;
-+#endif
- new_thread->p_tid = new_thread_id;
- new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
- new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
-@@ -806,7 +810,7 @@
- }
- #ifdef USE_TLS
- # if TLS_DTV_AT_TP
-- ++new_thread;
-+ new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
- # endif
- _dl_deallocate_tls (new_thread, true);
- #endif
-@@ -896,7 +900,7 @@
-
- #ifdef USE_TLS
- # if TLS_DTV_AT_TP
-- ++th;
-+ th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE);
- # endif
- _dl_deallocate_tls (th, true);
- #endif
---- glibc-2.3.2/linuxthreads/pthread.c 2003-01-16 13:14:41.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/pthread.c 2003-09-19 22:37:04.000000000 -0400
-@@ -55,7 +55,8 @@
- #ifdef USE_TLS
-
- /* We need only a few variables. */
--static pthread_descr manager_thread;
-+#define manager_thread __pthread_manager_threadp
-+pthread_descr __pthread_manager_threadp attribute_hidden;
-
- #else
-
-@@ -260,6 +261,7 @@
- .ptr___pthread_cond_init = __pthread_cond_init,
- .ptr___pthread_cond_signal = __pthread_cond_signal,
- .ptr___pthread_cond_wait = __pthread_cond_wait,
-+ .ptr___pthread_cond_timedwait = __pthread_cond_timedwait,
- .ptr_pthread_equal = __pthread_equal,
- .ptr___pthread_exit = __pthread_exit,
- .ptr_pthread_getschedparam = __pthread_getschedparam,
-@@ -462,6 +464,44 @@
- # endif
- #endif
-
-+#ifdef USE_TLS
-+static inline void __attribute__((always_inline))
-+init_one_static_tls (pthread_descr descr, struct link_map *map)
-+{
-+# if TLS_TCB_AT_TP
-+ dtv_t *dtv = GET_DTV (descr);
-+ void *dest = (char *) descr - map->l_tls_offset;
-+# elif TLS_DTV_AT_TP
-+ dtv_t *dtv = GET_DTV ((pthread_descr) ((char *) descr + TLS_PRE_TCB_SIZE));
-+ void *dest = (char *) descr + map->l_tls_offset + TLS_PRE_TCB_SIZE;
-+# else
-+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
-+# endif
-+
-+ /* Fill in the DTV slot so that a later LD/GD access will find it. */
-+ dtv[map->l_tls_modid].pointer = dest;
-+
-+ /* Initialize the memory. */
-+ memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
-+ '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
-+}
-+
-+static void
-+__pthread_init_static_tls (struct link_map *map)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < PTHREAD_THREADS_MAX; ++i)
-+ if (__pthread_handles[i].h_descr != NULL && i != 1)
-+ {
-+ __pthread_lock (&__pthread_handles[i].h_lock, NULL);
-+ if (__pthread_handles[i].h_descr != NULL)
-+ init_one_static_tls (__pthread_handles[i].h_descr, map);
-+ __pthread_unlock (&__pthread_handles[i].h_lock);
-+ }
-+}
-+#endif
-+
- static void pthread_initialize(void)
- {
- struct sigaction sa;
-@@ -529,6 +569,10 @@
- sigemptyset(&mask);
- sigaddset(&mask, __pthread_sig_restart);
- sigprocmask(SIG_BLOCK, &mask, NULL);
-+ /* And unblock __pthread_sig_cancel if it has been blocked. */
-+ sigdelset(&mask, __pthread_sig_restart);
-+ sigaddset(&mask, __pthread_sig_cancel);
-+ sigprocmask(SIG_UNBLOCK, &mask, NULL);
- /* Register an exit function to kill all other threads. */
- /* Do it early so that user-registered atexit functions are called
- before pthread_*exit_process. */
-@@ -546,6 +590,19 @@
- /* Transfer the old value from the dynamic linker's internal location. */
- *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
- GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
-+
-+ /* Make __rtld_lock_{,un}lock_recursive use pthread_mutex_{,un}lock,
-+ keep the lock count from the ld.so implementation. */
-+ GL(dl_rtld_lock_recursive) = (void *) __pthread_mutex_lock;
-+ GL(dl_rtld_unlock_recursive) = (void *) __pthread_mutex_unlock;
-+ unsigned int rtld_lock_count = GL(dl_load_lock).mutex.__m_count;
-+ GL(dl_load_lock).mutex.__m_count = 0;
-+ while (rtld_lock_count-- > 0)
-+ __pthread_mutex_lock (&GL(dl_load_lock).mutex);
-+#endif
-+
-+#ifdef USE_TLS
-+ GL(dl_init_static_tls) = &__pthread_init_static_tls;
- #endif
- }
-
-@@ -566,8 +623,10 @@
- #endif
-
- __pthread_multiple_threads = 1;
-- __pthread_main_thread->p_header.data.multiple_threads = 1;
-- * __libc_multiple_threads_ptr = 1;
-+#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
-+ __pthread_main_thread->p_multiple_threads = 1;
-+#endif
-+ *__libc_multiple_threads_ptr = 1;
-
- #ifndef HAVE_Z_NODELETE
- if (__builtin_expect (&__dso_handle != NULL, 1))
-@@ -606,14 +665,18 @@
- # elif TLS_DTV_AT_TP
- /* pthread_descr is located right below tcbhead_t which _dl_allocate_tls
- returns. */
-- mgr = (pthread_descr) tcbp - 1;
-+ mgr = (pthread_descr) ((char *) tcbp - TLS_PRE_TCB_SIZE);
- # endif
- __pthread_handles[1].h_descr = manager_thread = mgr;
-
- /* Initialize the descriptor. */
-+#if !defined USE_TLS || !TLS_DTV_AT_TP
- mgr->p_header.data.tcb = tcbp;
- mgr->p_header.data.self = mgr;
- mgr->p_header.data.multiple_threads = 1;
-+#elif TLS_MULTIPLE_THREADS_IN_TCB
-+ mgr->p_multiple_threads = 1;
-+#endif
- mgr->p_lock = &__pthread_handles[1].h_lock;
- # ifndef HAVE___THREAD
- mgr->p_errnop = &mgr->p_errno;
-@@ -834,7 +897,7 @@
-
- #else
-
--static pthread_descr thread_self_stack(void)
-+pthread_descr __pthread_self_stack(void)
- {
- char *sp = CURRENT_STACK_FRAME;
- pthread_handle h;
-@@ -961,7 +1024,7 @@
-
- static void pthread_handle_sigrestart(int sig)
- {
-- pthread_descr self = thread_self();
-+ pthread_descr self = check_thread_self();
- THREAD_SETMEM(self, p_signal, sig);
- if (THREAD_GETMEM(self, p_signal_jmp) != NULL)
- siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1);
-@@ -974,31 +1037,13 @@
-
- static void pthread_handle_sigcancel(int sig)
- {
-- pthread_descr self = thread_self();
-+ pthread_descr self = check_thread_self();
- sigjmp_buf * jmpbuf;
-
- if (self == manager_thread)
- {
--#ifdef THREAD_SELF
-- /* A new thread might get a cancel signal before it is fully
-- initialized, so that the thread register might still point to the
-- manager thread. Double check that this is really the manager
-- thread. */
-- pthread_descr real_self = thread_self_stack();
-- if (real_self == manager_thread)
-- {
-- __pthread_manager_sighandler(sig);
-- return;
-- }
-- /* Oops, thread_self() isn't working yet.. */
-- self = real_self;
--# ifdef INIT_THREAD_SELF
-- INIT_THREAD_SELF(self, self->p_nr);
--# endif
--#else
- __pthread_manager_sighandler(sig);
- return;
--#endif
- }
- if (__builtin_expect (__pthread_exit_requested, 0)) {
- /* Main thread should accumulate times for thread manager and its
-@@ -1138,7 +1183,8 @@
- sigdelset(&mask, __pthread_sig_restart); /* Unblock the restart signal */
- THREAD_SETMEM(self, p_signal, 0);
- do {
-- sigsuspend(&mask); /* Wait for signal */
-+ __pthread_sigsuspend(&mask); /* Wait for signal. Must not be a
-+ cancellation point. */
- } while (THREAD_GETMEM(self, p_signal) !=__pthread_sig_restart);
-
- READ_MEMORY_BARRIER(); /* See comment in __pthread_restart_new */
---- glibc-2.3.2/linuxthreads/sighandler.c 2002-05-03 03:29:18.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sighandler.c 2003-09-19 22:37:04.000000000 -0400
-@@ -22,7 +22,8 @@
- {
- pthread_descr self;
- char * in_sighandler;
-- self = thread_self();
-+ self = check_thread_self();
-+
- /* If we're in a sigwait operation, just record the signal received
- and return without calling the user's handler */
- if (THREAD_GETMEM(self, p_sigwaiting)) {
-@@ -46,7 +47,8 @@
- {
- pthread_descr self;
- char * in_sighandler;
-- self = thread_self();
-+ self = check_thread_self();
-+
- /* If we're in a sigwait operation, just record the signal received
- and return without calling the user's handler */
- if (THREAD_GETMEM(self, p_sigwaiting)) {
---- glibc-2.3.2/linuxthreads/spinlock.h 2001-05-24 19:23:00.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/spinlock.h 2003-08-21 08:37:03.000000000 -0400
-@@ -196,7 +196,7 @@
- }
-
-
--static inline void
-+static inline __attribute__((always_inline)) void
- __pthread_set_own_extricate_if (pthread_descr self, pthread_extricate_if *peif)
- {
- /* Only store a non-null peif if the thread has cancellation enabled.
---- glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2002-02-08 20:55:16.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2003-08-21 08:37:03.000000000 -0400
-@@ -45,18 +45,16 @@
- /*@_init_PROLOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- .globl _init \n\
-- .ent _init \n\
-+ .type _init,@function \n\
-+ .usepv _init,std \n\
- _init: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
-- .prologue 1 \n\
- jsr $26, __pthread_initialize_minimal \n\
- ldq $29, 8($30) \n\
- .align 3 \n\
-- .end _init \n\
-- .size _init, 0 \n\
- /*@_init_PROLOG_ENDS*/ \n\
- \n\
- /*@_init_EPILOG_BEGINS*/ \n\
-@@ -70,7 +68,8 @@
- /*@_fini_PROLOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- .globl _fini \n\
-- .ent _fini \n\
-+ .type _fini,@function \n\
-+ .usepv _fini,std \n\
- _fini: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
-@@ -78,8 +77,6 @@
- stq $29, 8($30) \n\
- .prologue 1 \n\
- .align 3 \n\
-- .end _fini \n\
-- .size _fini, 0 \n\
- /*@_fini_PROLOG_ENDS*/ \n\
- \n\
- /*@_fini_EPILOG_BEGINS*/ \n\
---- glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2002-09-09 01:18:20.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,7 @@
- /* Machine-dependent pthreads configuration and inline functions.
- Alpha version.
-- Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
-@@ -23,7 +24,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- #ifdef __linux__
---- glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- ARM version.
-- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>.
-
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- CRIS version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -22,7 +22,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- hppa version.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
-@@ -25,7 +25,7 @@
- #include <bits/initspin.h>
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2002-12-28 16:07:50.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2003-09-19 22:37:04.000000000 -0400
-@@ -6,15 +6,15 @@
- # Most files must not be compiled without frame pointer since we need
- # the frame base address which is stored in %ebp unless the frame pointer
- # is optimized out.
--CFLAGS-cancel.c += -fno-omit-frame-pointer
-+CFLAGS-cancel.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
- CFLAGS-condvar.c += -fno-omit-frame-pointer
- CFLAGS-join.c += -fno-omit-frame-pointer
--CFLAGS-manager.c += -fno-omit-frame-pointer
-+CFLAGS-manager.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
- CFLAGS-oldsemaphore.c += -fno-omit-frame-pointer
--CFLAGS-pthread.c += -fno-omit-frame-pointer
-+CFLAGS-pthread.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
- CFLAGS-ptlongjmp.c += -fno-omit-frame-pointer
- CFLAGS-semaphore.c += -fno-omit-frame-pointer
--CFLAGS-sighandler.c += -fno-omit-frame-pointer
-+CFLAGS-sighandler.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
- endif
-
- ifeq ($(subdir),csu)
---- glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-02-25 19:46:32.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- i686 version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
- #include "kernel-features.h"
-
---- glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-02-25 19:46:32.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- i386 version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
-@@ -24,7 +24,7 @@
-
- #ifndef __ASSEMBLER__
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-02-25 19:46:32.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-05-12 12:13:04.000000000 -0400
-@@ -119,7 +119,7 @@
- # include "useldt.h" /* For the structure. */
- # define TLS_DO_MODIFY_LDT_KERNEL_CHECK(doit) \
- (__builtin_expect (GL(dl_osversion) < 131939, 0) \
-- ? "kernel too old for thread-local storage support" \
-+ ? "kernel too old for thread-local storage support\n" \
- : (doit))
- # endif
-
-@@ -142,7 +142,7 @@
- "d" (sizeof (ldt_entry))); \
- __builtin_expect (result, 0) == 0 \
- ? ({ asm ("movw %w0, %%gs" : : "q" ((nr) * 8 + 7)); NULL; }) \
-- : "cannot set up LDT for thread-local storage"; \
-+ : "cannot set up LDT for thread-local storage\n"; \
- }))
-
- # define TLS_DO_SET_THREAD_AREA(descr, secondcall) \
-@@ -171,8 +171,8 @@
-
- # ifdef __ASSUME_SET_THREAD_AREA_SYSCALL
- # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \
-- (TLS_DO_SET_THREAD_AREA (descr, firstcall) \
-- ? "set_thread_area failed when setting up thread-local storage" : NULL)
-+ (TLS_DO_SET_THREAD_AREA (descr, secondcall) \
-+ ? "set_thread_area failed when setting up thread-local storage\n" : NULL)
- # elif defined __NR_set_thread_area
- # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \
- (TLS_DO_SET_THREAD_AREA (descr, secondcall) \
---- glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2002-12-18 17:49:52.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2003-04-24 20:05:57.000000000 -0400
-@@ -22,6 +22,7 @@
- #ifndef __ASSEMBLER__
- #include <stddef.h> /* For offsetof. */
- #include <stdlib.h> /* For abort(). */
-+#include <sysdep.h>
-
-
- /* We don't want to include the kernel header. So duplicate the
-@@ -109,7 +110,9 @@
- "int $0x80\n\t" \
- USETLS_LOAD_EBX \
- : "=&a" (__result) \
-- : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \
-+ : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \
-+ "m" (ldt_entry) \
-+ : "memory"); \
- if (__result == 0) \
- asm ("movw %w0, %%gs" :: "q" (__gs)); \
- else \
-@@ -127,7 +130,9 @@
- "int $0x80\n\t" \
- USETLS_LOAD_EBX \
- : "=&a" (__result) \
-- : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \
-+ : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \
-+ "m" (ldt_entry) \
-+ : "memory"); \
- if (__result == 0) \
- { \
- __gs = (ldt_entry.entry_number << 3) + 3; \
-@@ -307,4 +312,3 @@
- /* Maximum size of the stack if the rlimit is unlimited. */
- #define ARCH_STACK_MAX_SIZE 8*1024*1024
- #endif
--
---- glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2002-08-27 00:52:35.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2003-03-15 15:02:09.000000000 -0500
-@@ -1,5 +1,5 @@
- /* POSIX spinlock implementation. ia64 version.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jes Sorensen <jes@linuxcare.com>
-
-@@ -21,6 +21,7 @@
- #include <errno.h>
- #include <pthread.h>
- #include "internals.h"
-+#include <ia64intrin.h>
-
- /* This implementation is inspired by the implementation used in the
- Linux kernel. */
-@@ -28,21 +29,15 @@
- int
- __pthread_spin_lock (pthread_spinlock_t *lock)
- {
-- asm volatile
-- ("mov ar.ccv = r0\n\t"
-- "mov r3 = 1\n\t"
-- ";;\n"
-- "1:\n\t"
-- "ld4 r2 = %0\n\t"
-- ";;\n\t"
-- "cmp4.eq p0, p7 = r0, r2\n\t"
-- "(p7) br.cond.spnt.few 1b \n\t"
-- "cmpxchg4.acq r2 = %0, r3, ar.ccv\n\t"
-- ";;\n\t"
-- "cmp4.eq p0, p7 = r0, r2\n\t"
-- "(p7) br.cond.spnt.few 1b\n\t"
-- ";;\n"
-- :: "m" (lock) : "r2", "r3", "p7", "memory");
-+ int *p = (int *) lock;
-+
-+ while (__builtin_expect (__sync_val_compare_and_swap_si (p, 0, 1), 0))
-+ {
-+ /* Spin without using the atomic instruction. */
-+ do
-+ __asm __volatile ("" : : : "memory");
-+ while (*p);
-+ }
- return 0;
- }
- weak_alias (__pthread_spin_lock, pthread_spin_lock)
-@@ -51,16 +46,7 @@
- int
- __pthread_spin_trylock (pthread_spinlock_t *lock)
- {
-- int oldval;
--
-- asm volatile
-- ("mov ar.ccv = r0\n\t"
-- "mov r2 = 1\n\t"
-- ";;\n\t"
-- "cmpxchg4.acq %0 = %1, r2, ar.ccv\n\t"
-- ";;\n"
-- : "=r" (oldval) : "m" (lock) : "r2", "memory");
-- return oldval > 0 ? 0 : EBUSY;
-+ return __sync_val_compare_and_swap_si ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
- }
- weak_alias (__pthread_spin_trylock, pthread_spin_trylock)
-
---- glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -24,7 +24,7 @@
- #include <ia64intrin.h>
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-01-16 13:20:08.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
-@@ -3,7 +3,7 @@
-
- --
- #ifdef USE_TLS
--MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads) - sizeof (struct _pthread_descr_struct)
-+MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
- #else
- MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
- #endif
---- glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-01-16 13:20:08.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-08-21 08:37:03.000000000 -0400
-@@ -84,7 +84,7 @@
- special attention since 'errno' is not yet available and if the
- operation can cause a failure 'errno' must not be touched. */
- # define TLS_INIT_TP(tcbp, secondcall) \
-- (__thread_self = (tcbp), NULL)
-+ (__thread_self = (__typeof (__thread_self)) (tcbp), NULL)
-
- /* Return the address of the dtv for the current thread. */
- # define THREAD_DTV() \
-@@ -98,6 +98,8 @@
- # define INIT_THREAD_SELF(descr, nr) \
- (__thread_self = (struct _pthread_descr_struct *)(descr) + 1)
-
-+# define TLS_MULTIPLE_THREADS_IN_TCB 1
-+
- /* Get the thread descriptor definition. */
- # include <linuxthreads/descr.h>
-
---- glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- m68k version.
-- Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>.
-
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2003-03-15 15:02:09.000000000 -0500
-@@ -1,5 +1,5 @@
- /* POSIX spinlock implementation. MIPS version.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -32,7 +32,9 @@
- ("\t\t\t# spin_lock\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %1,%3\n\t"
- "li %2,1\n\t"
- "bnez %1,1b\n\t"
---- glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,7 @@
- /* Machine-dependent pthreads configuration and inline functions.
-
-- Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
- Based on the Alpha version by Richard Henderson <rth@tamu.edu>.
-@@ -26,7 +27,7 @@
- #include <sys/tas.h>
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
-@@ -60,12 +61,22 @@
- ("/* Inline compare & swap */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "lld %1,%5\n\t"
-+#else
- "ll %1,%5\n\t"
-+#endif
- "move %0,$0\n\t"
- "bne %1,%3,2f\n\t"
- "move %0,%4\n\t"
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "scd %0,%2\n\t"
-+#else
- "sc %0,%2\n\t"
-+#endif
- ".set pop\n\t"
- "beqz %0,1b\n"
- "2:\n\t"
---- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-02-17 15:32:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,7 @@
- /* Machine-dependent pthreads configuration and inline functions.
- powerpc version.
-- Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 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
-@@ -25,7 +26,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2002-09-14 04:55:04.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2003-09-19 22:37:04.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- powerpc version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -25,7 +25,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
-@@ -34,7 +34,9 @@
- /* For multiprocessor systems, we want to ensure all memory accesses
- are completed before we reset a lock. On other systems, we still
- need to make sure that the compiler has flushed everything to memory. */
--#define MEMORY_BARRIER() __asm__ __volatile__ ("sync" : : : "memory")
-+#define MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory")
-+#define READ_MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory")
-+#define WRITE_MEMORY_BARRIER() __asm__ __volatile__ ("eieio" : : : "memory")
-
- /* We want the OS to assign stack addresses. */
- #define FLOATING_STACKS 1
-@@ -57,6 +59,16 @@
- /* Initialize the thread-unique value. */
- #define INIT_THREAD_SELF(descr, nr) (__thread_self = (descr))
-
-+/* Access to data in the thread descriptor is easy. */
-+#define THREAD_GETMEM(descr, member) \
-+ ((void) (descr), THREAD_SELF->member)
-+#define THREAD_GETMEM_NC(descr, member) \
-+ ((void) (descr), THREAD_SELF->member)
-+#define THREAD_SETMEM(descr, member, value) \
-+ ((void) (descr), THREAD_SELF->member = (value))
-+#define THREAD_SETMEM_NC(descr, member, value) \
-+ ((void) (descr), THREAD_SELF->member = (value))
-+
- /* Compare-and-swap for semaphores. */
- /* note that test-and-set(x) is the same as !compare-and-swap(x, 0, 1) */
-
---- glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2003-08-21 08:37:03.000000000 -0400
-@@ -1,5 +1,5 @@
- /* POSIX spinlock implementation. PowerPC version.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -55,7 +55,7 @@
- /* We can ignore the `pshared' parameter. Since we are busy-waiting
- all processes which can access the memory location `lock' points
- to can use the spinlock. */
-- *lock = 1;
-+ *lock = 0;
- return 0;
- }
- weak_alias (__pthread_spin_init, pthread_spin_init)
---- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-02-17 15:32:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
-@@ -1,4 +1,24 @@
- #include <sysdep.h>
- #include <tls.h>
-
--MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
-+--
-+
-+-- This could go into powerpc32/ instead and conditionalize #include of it.
-+#ifndef __powerpc64__
-+
-+# ifdef USE_TLS
-+
-+-- Abuse tls.h macros to derive offsets relative to the thread register.
-+# undef __thread_register
-+# define __thread_register ((void *) 0)
-+# define thread_offsetof(mem) ((void *) &THREAD_SELF->p_##mem - (void *) 0)
-+
-+# else
-+
-+# define thread_offsetof(mem) offsetof (tcbhead_t, mem)
-+
-+# endif
-+
-+MULTIPLE_THREADS_OFFSET thread_offsetof (multiple_threads)
-+
-+#endif
---- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-02-27 17:40:10.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-04-28 08:20:35.000000000 -0400
-@@ -32,15 +32,6 @@
- void *pointer;
- } dtv_t;
-
--typedef struct
--{
-- void *tcb; /* Pointer to the TCB. Not necessary the
-- thread descriptor used by libpthread. */
-- dtv_t *dtv;
-- void *self; /* Pointer to the thread descriptor. */
-- int multiple_threads;
--} tcbhead_t;
--
- #else /* __ASSEMBLER__ */
- # include <tcb-offsets.h>
- #endif /* __ASSEMBLER__ */
-@@ -52,28 +43,38 @@
-
- # ifndef __ASSEMBLER__
-
-+/* This layout is actually wholly private and not affected by the ABI.
-+ Nor does it overlap the pthread data structure, so we need nothing
-+ extra here at all. */
-+typedef struct
-+{
-+ dtv_t *dtv;
-+} tcbhead_t;
-+
- /* This is the size of the initial TCB. */
--# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
-+# define TLS_INIT_TCB_SIZE 0
-
- /* Alignment requirements for the initial TCB. */
--# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
-+# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
-
- /* This is the size of the TCB. */
--# define TLS_TCB_SIZE sizeof (tcbhead_t)
-+# define TLS_TCB_SIZE 0
-
- /* Alignment requirements for the TCB. */
--# define TLS_TCB_ALIGN __alignof__ (tcbhead_t)
-+# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
-
- /* This is the size we need before TCB. */
--# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
-+# define TLS_PRE_TCB_SIZE \
-+ (sizeof (struct _pthread_descr_struct) \
-+ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
-
--/* The following assumes that TP (R13) is points to the end of the
-+/* The following assumes that TP (R2 or R13) is points to the end of the
- TCB + 0x7000 (per the ABI). This implies that TCB address is
-- R13-(TLS_TCB_SIZE + 0x7000). As we define TLS_DTV_AT_TP we can
-+ TP - 0x7000. As we define TLS_DTV_AT_TP we can
- assume that the pthread_descr is allocated immediately ahead of the
- TCB. This implies that the pthread_descr address is
-- R13-(TLS_PRE_TCB_SIZE + TLS_TCB_SIZE + 0x7000). */
--# define TLS_TCB_OFFSET 0x7000
-+ TP - (TLS_PRE_TCB_SIZE + 0x7000). */
-+#define TLS_TCB_OFFSET 0x7000
-
- /* The DTV is allocated at the TP; the TCB is placed elsewhere. */
- /* This is not really true for powerpc64. We are following alpha
-@@ -83,13 +84,13 @@
- /* Install the dtv pointer. The pointer passed is to the element with
- index -1 which contain the length. */
- # define INSTALL_DTV(TCBP, DTVP) \
-- (((tcbhead_t *) (TCBP))->dtv = (DTVP) + 1)
-+ (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1)
-
- /* Install new dtv for current thread. */
- # define INSTALL_NEW_DTV(DTV) (THREAD_DTV() = (DTV))
-
- /* Return dtv of given thread descriptor. */
--# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))->dtv)
-+# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))[-1].dtv)
-
- /* The global register variable is declared in pt-machine.h with
- the wrong type, but the compiler doesn't like us declaring another. */
-@@ -99,47 +100,57 @@
- special attention since 'errno' is not yet available and if the
- operation can cause a failure 'errno' must not be touched. */
- # define TLS_INIT_TP(TCBP, SECONDCALL) \
-- (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET + TLS_TCB_SIZE, 0)
-+ (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET, NULL)
-
- /* Return the address of the dtv for the current thread. */
- # define THREAD_DTV() \
-- (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET - TLS_TCB_SIZE))->dtv)
-+ (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv)
-
- /* Return the thread descriptor for the current thread. */
- # undef THREAD_SELF
- # define THREAD_SELF \
- ((pthread_descr) (__thread_register \
-- - TLS_TCB_OFFSET - TLS_TCB_SIZE - TLS_PRE_TCB_SIZE))
-+ - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
-
- # undef INIT_THREAD_SELF
- # define INIT_THREAD_SELF(DESCR, NR) \
- (__thread_register = ((void *) (DESCR) \
-- + TLS_TCB_OFFSET + TLS_TCB_SIZE + TLS_PRE_TCB_SIZE))
-+ + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE))
-+
-+/* Make sure we have the p_multiple_threads member in the thread structure.
-+ See below. */
-+# ifndef __powerpc64__
-+# define TLS_MULTIPLE_THREADS_IN_TCB 1
-+# endif
-
- /* Get the thread descriptor definition. */
- # include <linuxthreads/descr.h>
-
--/* Generic bits of LinuxThreads may call these macros with
-- DESCR set to NULL. We are expected to be able to reference
-- the "current" value. */
--
--# define THREAD_GETMEM(descr, member) \
-- ((void) sizeof (descr), THREAD_SELF->member)
--# define THREAD_SETMEM(descr, member, value) \
-- ((void) sizeof (descr), THREAD_SELF->member = (value))
--
--#define THREAD_GETMEM_NC(descr, member) THREAD_GETMEM (descr, member)
--#define THREAD_SETMEM_NC(descr, member, value) \
-- THREAD_SETMEM ((descr), member, (value))
-+/* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some
-+ different value to mean unset l_tls_offset. */
-+# define NO_TLS_OFFSET -1
-
- # endif /* __ASSEMBLER__ */
-
--#else /* Not HAVE_TLS_SUPPORT. */
-+#elif !defined __ASSEMBLER__ && !defined __powerpc64__
-+
-+/* This overlaps the start of the pthread_descr. On PPC32, system
-+ calls and such use this to find the multiple_threads flag and need
-+ to use the same offset relative to the thread register in both
-+ single-threaded and multi-threaded code. On PPC64, the global
-+ variable is always used, so single-threaded code without TLS
-+ never needs to initialize the thread register at all. */
-+typedef struct
-+{
-+ void *tcb; /* Never used. */
-+ dtv_t *dtv; /* Never used. */
-+ void *self; /* Used only if multithreaded, and rarely. */
-+ int multiple_threads; /* Only this member is really used. */
-+} tcbhead_t;
-
- #define NONTLS_INIT_TP \
- do { \
-- static const tcbhead_t nontls_init_tp \
-- = { .multiple_threads = 0 }; \
-+ static const tcbhead_t nontls_init_tp = { .multiple_threads = 0 }; \
- __thread_self = (__typeof (__thread_self)) &nontls_init_tp; \
- } while (0)
-
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-02-12 16:40:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-08-21 08:37:03.000000000 -0400
-@@ -1,5 +1,6 @@
- ifeq ($(subdir),rt)
- librt-sysdep_routines += timer_routines
-+CPPFLAGS += -DBROKEN_THREAD_SIGNALS
-
- ifeq (yes,$(build-shared))
- $(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
-@@ -9,5 +10,5 @@
- endif
-
- ifeq ($(subdir),posix)
--CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../nptl/Banner)\""
-+CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../linuxthreads/Banner)\""
- endif
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 2003-01-03 17:10:19.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 1969-12-31 19:00:00.000000000 -0500
-@@ -1,59 +0,0 @@
--/* libc-internal interface for thread-specific data. LinuxThreads version.
-- Copyright (C) 1997,98,99,2001,02 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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; see the file COPYING.LIB. If not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
--
--#ifndef _BITS_LIBC_TSD_H
--#define _BITS_LIBC_TSD_H 1
--
--#include <linuxthreads/descr.h>
--#include <tls.h>
--
--#if USE_TLS && HAVE___THREAD
--
--/* When __thread works, the generic definition is what we want. */
--# include <sysdeps/generic/bits/libc-tsd.h>
--
--#else
--
--# include <bits/libc-lock.h>
--
--# ifndef SHARED
--extern void ** __pthread_internal_tsd_address (int);
--extern void *__pthread_internal_tsd_get (int);
--extern int __pthread_internal_tsd_set (int, const void *);
--
--weak_extern (__pthread_internal_tsd_address)
--weak_extern (__pthread_internal_tsd_get)
--weak_extern (__pthread_internal_tsd_set)
--# endif
--
--#define __libc_tsd_define(CLASS, KEY) CLASS void *__libc_tsd_##KEY##_data;
--#define __libc_tsd_address(KEY) \
-- __libc_maybe_call2 (pthread_internal_tsd_address, \
-- (_LIBC_TSD_KEY_##KEY), &__libc_tsd_##KEY##_data)
--#define __libc_tsd_get(KEY) \
-- __libc_maybe_call2 (pthread_internal_tsd_get, \
-- (_LIBC_TSD_KEY_##KEY), __libc_tsd_##KEY##_data)
--#define __libc_tsd_set(KEY, VALUE) \
-- __libc_maybe_call2 (pthread_internal_tsd_set, \
-- (_LIBC_TSD_KEY_##KEY, (VALUE)), \
-- (__libc_tsd_##KEY##_data = (VALUE), 0))
--
--#endif
--
--#endif /* bits/libc-tsd.h */
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-02-05 04:52:34.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-08-21 08:37:03.000000000 -0400
-@@ -180,7 +180,6 @@
-
- /* Lock the recursive named lock variable. */
- #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex)
--#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
-
- /* Try to lock the named lock variable. */
- #define __libc_lock_trylock(NAME) \
-@@ -203,8 +202,23 @@
-
- /* Unlock the recursive named lock variable. */
- #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex)
--#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
-
-+#if defined _LIBC && defined SHARED
-+# define __rtld_lock_default_lock_recursive(lock) \
-+ ++((pthread_mutex_t *)(lock))->__m_count;
-+
-+# define __rtld_lock_default_unlock_recursive(lock) \
-+ --((pthread_mutex_t *)(lock))->__m_count;
-+
-+# define __rtld_lock_lock_recursive(NAME) \
-+ GL(dl_rtld_lock_recursive) (&(NAME).mutex)
-+
-+# define __rtld_lock_unlock_recursive(NAME) \
-+ GL(dl_rtld_unlock_recursive) (&(NAME).mutex)
-+#else
-+#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
-+#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
-+#endif
-
- /* Define once control variable. */
- #if PTHREAD_ONCE_INIT == 0
-@@ -250,6 +264,20 @@
- _pthread_cleanup_pop_restore (&_buffer, (DOIT)); \
- }
-
-+#define __libc_cleanup_push(fct, arg) \
-+ { struct _pthread_cleanup_buffer _buffer; \
-+ int _avail = _pthread_cleanup_push != NULL; \
-+ if (_avail) { \
-+ _pthread_cleanup_push (&_buffer, (fct), (arg)); \
-+ }
-+
-+#define __libc_cleanup_pop(execute) \
-+ if (_avail) { \
-+ _pthread_cleanup_pop (&_buffer, execute); \
-+ } \
-+ }
-+
-+
- /* Create thread-specific key. */
- #define __libc_key_create(KEY, DESTRUCTOR) \
- (__libc_maybe_call (__pthread_key_create, (KEY, DESTRUCTOR), 1))
-@@ -352,6 +380,8 @@
- weak_extern (BP_SYM (__pthread_once))
- weak_extern (__pthread_initialize)
- weak_extern (__pthread_atfork)
-+weak_extern (BP_SYM (_pthread_cleanup_push))
-+weak_extern (BP_SYM (_pthread_cleanup_pop))
- weak_extern (BP_SYM (_pthread_cleanup_push_defer))
- weak_extern (BP_SYM (_pthread_cleanup_pop_restore))
- # else
-@@ -377,6 +407,8 @@
- # pragma weak __pthread_atfork
- # pragma weak _pthread_cleanup_push_defer
- # pragma weak _pthread_cleanup_pop_restore
-+# pragma weak _pthread_cleanup_push
-+# pragma weak _pthread_cleanup_pop
- # endif
- #endif
-
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 2003-08-21 08:37:03.000000000 -0400
-@@ -0,0 +1,66 @@
-+/* bits/typesizes.h -- underlying types for *_t. Generic version.
-+ Copyright (C) 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. */
-+
-+#ifndef _BITS_TYPES_H
-+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_TYPESIZES_H
-+#define _BITS_TYPESIZES_H 1
-+
-+/* See <bits/types.h> for the meaning of these macros. This file exists so
-+ that <bits/types.h> need not vary across different GNU platforms. */
-+
-+#define __DEV_T_TYPE __UQUAD_TYPE
-+#define __UID_T_TYPE __U32_TYPE
-+#define __GID_T_TYPE __U32_TYPE
-+#define __INO_T_TYPE __ULONGWORD_TYPE
-+#define __INO64_T_TYPE __UQUAD_TYPE
-+#define __MODE_T_TYPE __U32_TYPE
-+#define __NLINK_T_TYPE __UWORD_TYPE
-+#define __OFF_T_TYPE __SLONGWORD_TYPE
-+#define __OFF64_T_TYPE __SQUAD_TYPE
-+#define __PID_T_TYPE __S32_TYPE
-+#define __RLIM_T_TYPE __ULONGWORD_TYPE
-+#define __RLIM64_T_TYPE __UQUAD_TYPE
-+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-+#define __ID_T_TYPE __U32_TYPE
-+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-+#define __TIME_T_TYPE __SLONGWORD_TYPE
-+#define __USECONDS_T_TYPE __U32_TYPE
-+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
-+#define __DADDR_T_TYPE __S32_TYPE
-+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-+#define __KEY_T_TYPE __S32_TYPE
-+#define __CLOCKID_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE __S32_TYPE
-+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-+#define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-+
-+/* Number of descriptors that can fit in an `fd_set'. */
-+#define __FD_SETSIZE 1024
-+
-+
-+#endif /* bits/typesizes.h */
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2002-12-31 14:14:22.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,6 +1,6 @@
- /* MT support function to get address of `errno' variable, linuxthreads
- version.
-- Copyright (C) 1996, 1998, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1998, 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
-@@ -20,6 +20,7 @@
-
- #include <errno.h>
- #include <tls.h>
-+#include <linuxthreads/internals.h>
- #include <sysdep-cancel.h>
-
- #if ! USE___THREAD
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2002-12-31 14:14:22.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 97, 98, 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
-@@ -18,6 +18,7 @@
-
- #include <netdb.h>
- #include <tls.h>
-+#include <linuxthreads/internals.h>
- #include <sysdep-cancel.h>
-
- #if ! USE___THREAD
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 2003-09-19 22:37:04.000000000 -0400
-@@ -0,0 +1,91 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 _PTHREAD_FUNCTIONS_H
-+#define _PTHREAD_FUNCTIONS_H 1
-+
-+#include <pthread.h>
-+#include <setjmp.h>
-+#include <linuxthreads/descr.h>
-+
-+struct fork_block;
-+
-+/* Data type shared with libc. The libc uses it to pass on calls to
-+ the thread functions. Wine pokes directly into this structure,
-+ so if possible avoid breaking it and append new hooks to the end. */
-+struct pthread_functions
-+{
-+ pid_t (*ptr_pthread_fork) (struct fork_block *);
-+ int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
-+ int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
-+ int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
-+ int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
-+ int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
-+ int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
-+ int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
-+ int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
-+ struct sched_param *);
-+ int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
-+ const struct sched_param *);
-+ int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
-+ int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
-+ int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
-+ int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
-+ int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
-+ int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
-+ int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
-+ int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
-+ int (*ptr___pthread_cond_init) (pthread_cond_t *,
-+ const pthread_condattr_t *);
-+ int (*ptr___pthread_cond_signal) (pthread_cond_t *);
-+ int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
-+ int (*ptr_pthread_equal) (pthread_t, pthread_t);
-+ void (*ptr___pthread_exit) (void *);
-+ int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
-+ int (*ptr_pthread_setschedparam) (pthread_t, int,
-+ const struct sched_param *);
-+ int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
-+ int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
-+ const pthread_mutexattr_t *);
-+ int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
-+ int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
-+ int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-+ pthread_t (*ptr_pthread_self) (void);
-+ int (*ptr_pthread_setcancelstate) (int, int *);
-+ int (*ptr_pthread_setcanceltype) (int, int *);
-+ void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
-+ void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
-+ char *targetframe);
-+ pthread_descr (*ptr_pthread_thread_self) (void);
-+ int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
-+ void * (*ptr_pthread_internal_tsd_get) (int key);
-+ void ** __attribute__ ((__const__))
-+ (*ptr_pthread_internal_tsd_address) (int key);
-+ int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
-+ struct sigaction *oact);
-+ int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
-+ int (*ptr_pthread_raise) (int sig);
-+ int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
-+ const struct timespec *);
-+};
-+
-+/* Variable in libc.so. */
-+extern struct pthread_functions __libc_pthread_functions attribute_hidden;
-+
-+#endif /* pthread-functions.h */
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-01-02 18:26:03.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-09-19 22:37:04.000000000 -0400
-@@ -172,13 +172,12 @@
- extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __THROW;
-
- /* Terminate calling thread. */
--extern void pthread_exit (void *__retval)
-- __THROW __attribute__ ((__noreturn__));
-+extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
-
- /* Make calling thread wait for termination of the thread TH. The
- exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN
- is not NULL. */
--extern int pthread_join (pthread_t __th, void **__thread_return) __THROW;
-+extern int pthread_join (pthread_t __th, void **__thread_return);
-
- /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
- The resources of TH will therefore be freed immediately when it
-@@ -256,7 +255,7 @@
- /* Set the starting address of the stack of the thread to be created.
- Depending on whether the stack grows up or down the value must either
- be higher or lower than all the address in the memory block. The
-- minimal size of the block must be PTHREAD_STACK_SIZE. */
-+ minimal size of the block must be PTHREAD_STACK_MIN. */
- extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
- void *__stackaddr) __THROW;
-
-@@ -279,7 +278,7 @@
- #endif
-
- /* Add information about the minimum stack size needed for the thread
-- to be started. This size must never be less than PTHREAD_STACK_SIZE
-+ to be started. This size must never be less than PTHREAD_STACK_MIN
- and must also not exceed the system limits. */
- extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
- size_t __stacksize) __THROW;
-@@ -290,7 +289,9 @@
- __THROW;
-
- #ifdef __USE_GNU
--/* Get thread attributes corresponding to the already running thread TH. */
-+/* Initialize thread attribute *ATTR with attributes corresponding to the
-+ already running thread TH. It shall be called on unitialized ATTR
-+ and destroyed with pthread_attr_destroy when no longer needed. */
- extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __THROW;
- #endif
-
-@@ -403,7 +404,7 @@
- /* Wait for condition variable COND to be signaled or broadcast.
- MUTEX is assumed to be locked before. */
- extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
-- pthread_mutex_t *__restrict __mutex) __THROW;
-+ pthread_mutex_t *__restrict __mutex);
-
- /* Wait for condition variable COND to be signaled or broadcast until
- ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an
-@@ -412,7 +413,7 @@
- extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
- pthread_mutex_t *__restrict __mutex,
- __const struct timespec *__restrict
-- __abstime) __THROW;
-+ __abstime);
-
- /* Functions for handling condition variable attributes. */
-
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2002-12-31 14:14:22.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2003-08-21 08:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 97, 98, 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
-@@ -18,6 +18,7 @@
-
- #include <resolv.h>
- #include <tls.h>
-+#include <linuxthreads/internals.h>
- #include <sysdep-cancel.h>
-
- #if ! USE___THREAD
-@@ -38,7 +39,9 @@
- pthread_descr self = thread_self();
- return LIBC_THREAD_GETMEM (self, p_resp);
- }
--#endif
- return &_res;
-+#else
-+ return __resp;
-+#endif
- }
- libc_hidden_def (__res_state)
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2003-08-21 08:37:03.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
-
-@@ -37,15 +37,23 @@
- struct timer_node *newtimer = NULL;
- struct thread_node *thread = NULL;
-
-- if (clock_id != CLOCK_REALTIME
-+ if (0
- #ifdef _POSIX_CPUTIME
-- && clock_id != CLOCK_PROCESS_CPUTIME_ID
-+ || clock_id == CLOCK_PROCESS_CPUTIME_ID
- #endif
- #ifdef _POSIX_THREAD_CPUTIME
-- && clock_id != CLOCK_THREAD_CPUTIME_ID
-+ || clock_id == CLOCK_THREAD_CPUTIME_ID
- #endif
- )
- {
-+ /* We don't allow timers for CPU clocks. At least not in the
-+ moment. */
-+ __set_errno (ENOTSUP);
-+ return -1;
-+ }
-+
-+ if (clock_id != CLOCK_REALTIME)
-+ {
- __set_errno (EINVAL);
- return -1;
- }
-@@ -170,7 +178,10 @@
- if (thread != NULL)
- __timer_thread_dealloc (thread);
- if (newtimer != NULL)
-- __timer_dealloc (newtimer);
-+ {
-+ timer_delref (newtimer);
-+ __timer_dealloc (newtimer);
-+ }
- }
-
- pthread_mutex_unlock (&__timer_mutex);
---- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2002-08-28 21:46:13.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2003-08-21 08:37:03.000000000 -0400
-@@ -538,10 +538,7 @@
-
- if (thread_attr_compare (desired_attr, &candidate->attr)
- && desired_clock_id == candidate->clock_id)
-- {
-- list_unlink (iter);
-- return candidate;
-- }
-+ return candidate;
-
- iter = list_next (iter);
- }
---- glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2003-04-12 11:39:43.000000000 -0400
-@@ -64,7 +64,7 @@
- {
- asm volatile(" xc 0(4,%0),0(%0)\n"
- " bcr 15,0"
-- : "=a" (lock) );
-+ : : "a" (lock) : "memory" );
- return 0;
- }
- weak_alias (__pthread_spin_unlock, pthread_spin_unlock)
---- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- S390 version.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- 64 bit S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
-@@ -24,7 +24,7 @@
-
- #ifndef __ASSEMBLER__
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-02-07 21:29:53.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
-@@ -3,7 +3,7 @@
-
- --
- #ifdef USE_TLS
--MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads)
-+MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads)
- TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
- #else
- MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
---- glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-02-07 21:29:53.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-03-15 15:02:10.000000000 -0500
-@@ -112,6 +112,8 @@
- __asm __volatile ("ldc %0,gbr" : : "r" (__self + 1)); \
- 0; })
-
-+# define TLS_MULTIPLE_THREADS_IN_TCB 1
-+
- /* Get the thread descriptor definition. This must be after the
- the definition of THREAD_SELF for TLS. */
- # include <linuxthreads/descr.h>
---- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- #define _PT_MACHINE_H 1
-
- #ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-01-06 18:49:01.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-08-21 08:37:04.000000000 -0400
-@@ -1,3 +1,3 @@
- ifeq ($(subdir),linuxthreads)
--libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask ptw-osf_sigprocmask
-+libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask
- endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 2003-09-02 23:01:51.000000000 -0400
-@@ -0,0 +1,6 @@
-+libpthread {
-+ GLIBC_2.3.3 {
-+ # Changed PTHREAD_STACK_MIN.
-+ pthread_attr_setstack; pthread_attr_setstacksize;
-+ }
-+}
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2003-09-02 23:01:32.000000000 -0400
-@@ -0,0 +1,86 @@
-+/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
-+ Copyright (C) 1993-1998, 2000, 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; see the file COPYING.LIB. If not,
-+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* The kernel header pollutes the namespace with the NR_OPEN symbol
-+ and defines LINK_MAX although filesystems have different maxima. A
-+ similar thing is true for OPEN_MAX: the limit can be changed at
-+ runtime and therefore the macro must not be defined. Remove this
-+ after including the header if necessary. */
-+#ifndef NR_OPEN
-+# define __undef_NR_OPEN
-+#endif
-+#ifndef LINK_MAX
-+# define __undef_LINK_MAX
-+#endif
-+#ifndef OPEN_MAX
-+# define __undef_OPEN_MAX
-+#endif
-+
-+/* The kernel sources contain a file with all the needed information. */
-+#include <linux/limits.h>
-+
-+/* Have to remove NR_OPEN? */
-+#ifdef __undef_NR_OPEN
-+# undef NR_OPEN
-+# undef __undef_NR_OPEN
-+#endif
-+/* Have to remove LINK_MAX? */
-+#ifdef __undef_LINK_MAX
-+# undef LINK_MAX
-+# undef __undef_LINK_MAX
-+#endif
-+/* Have to remove OPEN_MAX? */
-+#ifdef __undef_OPEN_MAX
-+# undef OPEN_MAX
-+# undef __undef_OPEN_MAX
-+#endif
-+
-+/* The number of data keys per process. */
-+#define _POSIX_THREAD_KEYS_MAX 128
-+/* This is the value this implementation supports. */
-+#define PTHREAD_KEYS_MAX 1024
-+
-+/* Controlling the iterations of destructors for thread-specific data. */
-+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-+/* Number of iterations this implementation does. */
-+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
-+
-+/* The number of threads per process. */
-+#define _POSIX_THREAD_THREADS_MAX 64
-+/* This is the value this implementation supports. */
-+#define PTHREAD_THREADS_MAX 16384
-+
-+/* Maximum amount by which a process can descrease its asynchronous I/O
-+ priority level. */
-+#define AIO_PRIO_DELTA_MAX 20
-+
-+/* Minimum size for a thread. We are free to choose a reasonable value. */
-+#define PTHREAD_STACK_MIN 24576
-+
-+/* Maximum number of POSIX timers available. */
-+#define TIMER_MAX 256
-+
-+/* Maximum number of timer expiration overruns. */
-+#define DELAYTIMER_MAX 2147483647
-+
-+/* Maximum tty name length. */
-+#define TTY_NAME_MAX 32
-+
-+/* Maximum login name length. This is arbitrary. */
-+#define LOGIN_NAME_MAX 256
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400
-@@ -0,0 +1,66 @@
-+/* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
-+ Copyright (C) 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. */
-+
-+#ifndef _BITS_TYPES_H
-+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_TYPESIZES_H
-+#define _BITS_TYPESIZES_H 1
-+
-+/* See <bits/types.h> for the meaning of these macros. This file exists so
-+ that <bits/types.h> need not vary across different GNU platforms. */
-+
-+#define __DEV_T_TYPE __U64_TYPE
-+#define __UID_T_TYPE __U32_TYPE
-+#define __GID_T_TYPE __U32_TYPE
-+#define __INO_T_TYPE __U32_TYPE
-+#define __INO64_T_TYPE __U64_TYPE
-+#define __MODE_T_TYPE __U32_TYPE
-+#define __NLINK_T_TYPE __U32_TYPE
-+#define __OFF_T_TYPE __SLONGWORD_TYPE
-+#define __OFF64_T_TYPE __S64_TYPE
-+#define __PID_T_TYPE __S32_TYPE
-+#define __RLIM_T_TYPE __ULONGWORD_TYPE
-+#define __RLIM64_T_TYPE __U64_TYPE
-+#define __BLKCNT_T_TYPE __U32_TYPE
-+#define __BLKCNT64_T_TYPE __U64_TYPE
-+#define __FSBLKCNT_T_TYPE __S32_TYPE
-+#define __FSBLKCNT64_T_TYPE __S64_TYPE
-+#define __FSFILCNT_T_TYPE __U32_TYPE
-+#define __FSFILCNT64_T_TYPE __U64_TYPE
-+#define __ID_T_TYPE __U32_TYPE
-+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-+#define __TIME_T_TYPE __SLONGWORD_TYPE
-+#define __USECONDS_T_TYPE __U32_TYPE
-+#define __SUSECONDS_T_TYPE __S64_TYPE
-+#define __DADDR_T_TYPE __S32_TYPE
-+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-+#define __KEY_T_TYPE __S32_TYPE
-+#define __CLOCKID_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE __S32_TYPE
-+#define __BLKSIZE_T_TYPE __U32_TYPE
-+#define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-+
-+/* Number of descriptors that can fit in an `fd_set'. */
-+#define __FD_SETSIZE 1024
-+
-+
-+#endif /* bits/typesizes.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2003-04-01 19:10:44.000000000 -0500
-@@ -0,0 +1,28 @@
-+/* Internal sigsuspend system call for LinuxThreads. Alpha version.
-+ Copyright (C) 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>
-+
-+#undef PSEUDO_PREPARE_ARGS
-+#define PSEUDO_PREPARE_ARGS ldq a0, 0(a0);
-+
-+ .hidden __pthread_sigsuspend
-+PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1)
-+ ret
-+PSEUDO_END_NOERRNO(__pthread_sigsuspend)
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-01-12 14:19:43.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -40,10 +40,11 @@
- # define PSEUDO(name, syscall_name, args) \
- .globl name; \
- .align 4; \
-- .ent name, 0; \
-+ .type name, @function; \
-+ .usepv name, std; \
-+ cfi_startproc; \
- __LABEL(name) \
- ldgp gp, 0(pv); \
-- .prologue 1; \
- PSEUDO_PROF; \
- PSEUDO_PREPARE_ARGS \
- SINGLE_THREAD_P(t0); \
-@@ -55,7 +56,9 @@
- .subsection 2; \
- __LABEL($pseudo_cancel) \
- subq sp, 64, sp; \
-+ cfi_def_cfa_offset(64); \
- stq ra, 0(sp); \
-+ cfi_offset(ra, -64); \
- SAVE_ARGS_##args; \
- CENABLE; \
- LOAD_ARGS_##args; \
-@@ -67,19 +70,27 @@
- ldq ra, 0(sp); \
- ldq v0, 8(sp); \
- addq sp, 64, sp; \
-+ cfi_remember_state; \
-+ cfi_restore(ra); \
-+ cfi_def_cfa_offset(0); \
- ret; \
-+ cfi_restore_state; \
- __LABEL($multi_error) \
- CDISABLE; \
- ldq ra, 0(sp); \
- ldq v0, 8(sp); \
- addq sp, 64, sp; \
-+ cfi_restore(ra); \
-+ cfi_def_cfa_offset(0); \
- __LABEL($syscall_error) \
- SYSCALL_ERROR_HANDLER; \
-- END(name); \
- .previous
-
- # undef PSEUDO_END
--# define PSEUDO_END(sym)
-+# define PSEUDO_END(sym) \
-+ .subsection 2; \
-+ cfi_endproc; \
-+ .size sym, .-sym
-
- # define SAVE_ARGS_0 /* Nothing. */
- # define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-02-11 01:24:43.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-08-21 08:37:04.000000000 -0400
-@@ -19,12 +19,13 @@
-
- #include <sysdep-cancel.h>
-
-- .globl __vfork
- .align 4
-- .ent __vfork,0
--__LABEL(__vfork)
-+ .globl __vfork
-+ .type __vfork, @function
-+ .usepv __vfork, std
-+ cfi_startproc
-+__vfork:
- ldgp gp, 0(pv)
-- .prologue 1
- PSEUDO_PROF
-
- #ifdef SHARED
-@@ -46,18 +47,24 @@
- fork and vfork object files. */
- $do_fork:
- subq sp, 16, sp
-+ cfi_adjust_cfa_offset(16)
- stq ra, 0(sp)
-+ cfi_offset(ra, -16)
- jsr ra, HIDDEN_JUMPTARGET (__fork)
- ldgp gp, 0(ra)
- ldq ra, 0(sp)
- addq sp, 16, sp
-+ cfi_restore(ra)
-+ cfi_adjust_cfa_offset(-16)
- ret
-
- $syscall_error:
- SYSCALL_ERROR_HANDLER
- #endif
-
--PSEUDO_END(__vfork)
-+ cfi_endproc
-+ .size __vfork, .-__vfork
-+
- libc_hidden_def (__vfork)
-
- weak_alias (__vfork, vfork)
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-01-12 04:13:57.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -24,6 +24,17 @@
-
- #if !defined NOT_IN_libc || defined IS_IN_libpthread
-
-+/* We push lr onto the stack, so we have to use ldmib instead of ldmia
-+ to find the saved arguments. */
-+# ifdef PIC
-+# undef DOARGS_5
-+# undef DOARGS_6
-+# undef DOARGS_7
-+# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8];
-+# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5};
-+# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6};
-+# endif
-+
- # undef PSEUDO_RET
- # define PSEUDO_RET \
- ldrcc pc, [sp], $4; \
-@@ -34,7 +45,7 @@
- # define PSEUDO(name, syscall_name, args) \
- .section ".text"; \
- PSEUDO_PROLOGUE; \
-- ENTRY (name) \
-+ ENTRY (name); \
- SINGLE_THREAD_P_INT; \
- bne .Lpseudo_cancel; \
- DO_CALL (syscall_name, args); \
-@@ -110,7 +121,7 @@
- ldr reg, 2b; \
- 3: \
- add ip, pc, ip; \
-- ldr ip, [ip, lr]; \
-+ ldr ip, [ip, reg]; \
- teq ip, #0;
- # define SINGLE_THREAD_P_INT \
- str lr, [sp, $-4]!; \
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-01-14 20:03:38.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-09-19 22:37:04.000000000 -0400
-@@ -20,37 +20,60 @@
- #include <sysdep-cancel.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include <kernel-features.h>
-
--/* Clone the calling process, but without copying the whole address
--pace.
-+/* Clone the calling process, but without copying the whole address space.
- The calling process is suspended until the new process exits or is
-- replaced by a call to `execve'. Return -1 for errors, 0 to the new
--rocess,
-+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
- and the process ID of the new process to the old process. */
-
- PSEUDO_PROLOGUE
-
- ENTRY (__vfork)
-
-- SINGLE_THREAD_P
-- bne HIDDEN_JUMPTARGET (__fork)
- #ifdef __NR_vfork
-+
-+#ifdef SHARED
-+ ldr ip, 1f
-+ ldr r0, 2f
-+3: add ip, pc, ip
-+ ldr r0, [ip, r0]
-+#else
-+ ldr r0, 1f
-+#endif
-+ movs r0, r0
-+ bne HIDDEN_JUMPTARGET (__fork)
-+
- swi __NR_vfork
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
-
-+#ifndef __ASSUME_VFORK_SYSCALL
- /* Check if vfork syscall is known at all. */
-- ldr a2, =-ENOSYS
-- teq a1, a2
-+ cmn a1, #ENOSYS
- bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
- #endif
-
-+#endif
-+
-+#ifndef __ASSUME_VFORK_SYSCALL
- /* If we don't have vfork, fork is close enough. */
- swi __NR_fork
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
-+#elif !defined __NR_vfork
-+# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined"
-+#endif
- b PLTJMP(C_SYMBOL_NAME(__syscall_error))
-
-+#ifdef SHARED
-+1: .word _GLOBAL_OFFSET_TABLE_ - 3b - 8
-+2: .word __libc_pthread_functions(GOTOFF)
-+#else
-+ .weak pthread_create
-+1: .word pthread_create
-+#endif
-+
- PSEUDO_END (__vfork)
- libc_hidden_def (__vfork)
-
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2002-11-28 20:48:24.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Define POSIX options for Linux.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -132,4 +132,7 @@
- /* POSIX message queues are not yet supported. */
- #undef _POSIX_MESSAGE_PASSING
-
-+/* The monotonic clock might be available. */
-+#define _POSIX_MONOTONIC_CLOCK 0
-+
- #endif /* posix_opt.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-01-02 18:26:04.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-04-12 11:39:43.000000000 -0400
-@@ -39,4 +39,5 @@
- return __libc_maybe_call2 (pthread_fork, (&__fork_block), ARCH_FORK ());
- }
- weak_alias (__libc_fork, __fork)
-+libc_hidden_def (__fork)
- weak_alias (__libc_fork, fork)
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2002-11-28 20:47:54.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Define POSIX options for Linux/ix86.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -138,4 +138,7 @@
- /* POSIX message queues are not yet supported. */
- #undef _POSIX_MESSAGE_PASSING
-
-+/* The monotonic clock might be available. */
-+#define _POSIX_MONOTONIC_CLOCK 0
-+
- #endif /* posix_opt.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2002-12-28 02:04:12.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* System-specific settings for dynamic linker code. IA-32 version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -49,12 +49,16 @@
- extern void _dl_sysinfo_int80 (void) attribute_hidden;
- # define DL_SYSINFO_DEFAULT (uintptr_t) _dl_sysinfo_int80
- # define DL_SYSINFO_IMPLEMENTATION \
-- asm (".type _dl_sysinfo_int80,@function\n\t" \
-+ asm (".text\n\t" \
-+ ".type _dl_sysinfo_int80,@function\n\t" \
- ".hidden _dl_sysinfo_int80\n" \
-+ CFI_STARTPROC "\n" \
- "_dl_sysinfo_int80:\n\t" \
- "int $0x80;\n\t" \
- "ret;\n\t" \
-- ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80");
-+ CFI_ENDPROC "\n" \
-+ ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t" \
-+ ".previous");
- #endif
-
- #endif /* dl-sysdep.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2002-12-31 14:16:42.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
-
-@@ -24,7 +24,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -39,12 +39,12 @@
- L(pseudo_cancel): \
- CENABLE \
- SAVE_OLDTYPE_##args \
-- PUSHARGS_##args \
-+ PUSHCARGS_##args \
- DOCARGS_##args \
- movl $SYS_ify (syscall_name), %eax; \
- int $0x80 \
-- POPARGS_##args; \
-- POPCARGS_##args \
-+ POPCARGS_##args; \
-+ POPSTATE_##args \
- cmpl $-4095, %eax; \
- jae SYSCALL_ERROR_LABEL; \
- L(pseudo_end):
-@@ -56,12 +56,41 @@
- # define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2
- # define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2
-
--# define DOCARGS_0 DOARGS_0
--# define DOCARGS_1 DOARGS_1
-+# define PUSHCARGS_0 /* No arguments to push. */
-+# define DOCARGS_0 /* No arguments to frob. */
-+# define POPCARGS_0 /* No arguments to pop. */
-+# define _PUSHCARGS_0 /* No arguments to push. */
-+# define _POPCARGS_0 /* No arguments to pop. */
-+
-+# define PUSHCARGS_1 movl %ebx, %edx; PUSHCARGS_0
-+# define DOCARGS_1 _DOARGS_1 (4)
-+# define POPCARGS_1 POPCARGS_0; movl %edx, %ebx
-+# define _PUSHCARGS_1 pushl %ebx; L(PUSHBX2): _PUSHCARGS_0
-+# define _POPCARGS_1 _POPCARGS_0; popl %ebx; L(POPBX2):
-+
-+# define PUSHCARGS_2 PUSHCARGS_1
- # define DOCARGS_2 _DOARGS_2 (12)
-+# define POPCARGS_2 POPCARGS_1
-+# define _PUSHCARGS_2 _PUSHCARGS_1
-+# define _POPCARGS_2 _POPCARGS_1
-+
-+# define PUSHCARGS_3 _PUSHCARGS_2
- # define DOCARGS_3 _DOARGS_3 (20)
-+# define POPCARGS_3 _POPCARGS_3
-+# define _PUSHCARGS_3 _PUSHCARGS_2
-+# define _POPCARGS_3 _POPCARGS_2
-+
-+# define PUSHCARGS_4 _PUSHCARGS_4
- # define DOCARGS_4 _DOARGS_4 (28)
-+# define POPCARGS_4 _POPCARGS_4
-+# define _PUSHCARGS_4 pushl %esi; L(PUSHSI2): _PUSHCARGS_3
-+# define _POPCARGS_4 _POPCARGS_3; popl %esi; L(POPSI2):
-+
-+# define PUSHCARGS_5 _PUSHCARGS_5
- # define DOCARGS_5 _DOARGS_5 (36)
-+# define POPCARGS_5 _POPCARGS_5
-+# define _PUSHCARGS_5 pushl %edi; L(PUSHDI2): _PUSHCARGS_4
-+# define _POPCARGS_5 _POPCARGS_4; popl %edi; L(POPDI2):
-
- # ifdef IS_IN_libpthread
- # define CENABLE call __pthread_enable_asynccancel;
-@@ -70,17 +99,19 @@
- # define CENABLE call __libc_enable_asynccancel;
- # define CDISABLE call __libc_disable_asynccancel
- # endif
--# define POPCARGS_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax;
--# define POPCARGS_1 POPCARGS_0
--# define POPCARGS_2 xchgl (%esp), %eax; CDISABLE; popl %eax;
--# define POPCARGS_3 POPCARGS_2
--# define POPCARGS_4 POPCARGS_2
--# define POPCARGS_5 POPCARGS_2
-+# define POPSTATE_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax;
-+# define POPSTATE_1 POPSTATE_0
-+# define POPSTATE_2 xchgl (%esp), %eax; CDISABLE; popl %eax;
-+# define POPSTATE_3 POPSTATE_2
-+# define POPSTATE_4 POPSTATE_2
-+# define POPSTATE_5 POPSTATE_2
-
- #if !defined NOT_IN_libc
- # define __local_multiple_threads __libc_multiple_threads
--#else
-+#elif defined IS_IN_libpthread
- # define __local_multiple_threads __pthread_multiple_threads
-+#else
-+# define __local_multiple_threads __librt_multiple_threads
- #endif
-
- # ifndef __ASSEMBLER__
-@@ -89,7 +120,12 @@
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- p_header.data.multiple_threads) == 0, 1)
- # else
--extern int __local_multiple_threads attribute_hidden;
-+extern int __local_multiple_threads
-+# if !defined NOT_IN_libc || defined IS_IN_libpthread
-+ attribute_hidden;
-+# else
-+ ;
-+# endif
- # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
- # endif
- # else
-@@ -98,16 +134,23 @@
- # elif defined FLOATING_STACKS && USE___THREAD
- # define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
- # else
-+# if !defined NOT_IN_libc || defined IS_IN_libpthread
-+# define __SINGLE_THREAD_CMP cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
-+# else
-+# define __SINGLE_THREAD_CMP \
-+ movl __local_multiple_threads@GOT(%ecx), %ecx;\
-+ cmpl $0, (%ecx)
-+# endif
- # if !defined HAVE_HIDDEN || !USE___THREAD
- # define SINGLE_THREAD_P \
- SETUP_PIC_REG (cx); \
- addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
-- cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
-+ __SINGLE_THREAD_CMP
- # else
- # define SINGLE_THREAD_P \
- call __i686.get_pc_thunk.cx; \
- addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
-- cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
-+ __SINGLE_THREAD_CMP
- # endif
- # endif
- # endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 2003-09-02 23:02:33.000000000 -0400
-@@ -0,0 +1,6 @@
-+libpthread {
-+ GLIBC_2.3.3 {
-+ # Changed PTHREAD_STACK_MIN.
-+ pthread_attr_setstack; pthread_attr_setstacksize;
-+ }
-+}
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2003-09-02 23:03:30.000000000 -0400
-@@ -0,0 +1,86 @@
-+/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
-+ Copyright (C) 1993-1998, 2000, 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; see the file COPYING.LIB. If not,
-+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* The kernel header pollutes the namespace with the NR_OPEN symbol
-+ and defines LINK_MAX although filesystems have different maxima. A
-+ similar thing is true for OPEN_MAX: the limit can be changed at
-+ runtime and therefore the macro must not be defined. Remove this
-+ after including the header if necessary. */
-+#ifndef NR_OPEN
-+# define __undef_NR_OPEN
-+#endif
-+#ifndef LINK_MAX
-+# define __undef_LINK_MAX
-+#endif
-+#ifndef OPEN_MAX
-+# define __undef_OPEN_MAX
-+#endif
-+
-+/* The kernel sources contain a file with all the needed information. */
-+#include <linux/limits.h>
-+
-+/* Have to remove NR_OPEN? */
-+#ifdef __undef_NR_OPEN
-+# undef NR_OPEN
-+# undef __undef_NR_OPEN
-+#endif
-+/* Have to remove LINK_MAX? */
-+#ifdef __undef_LINK_MAX
-+# undef LINK_MAX
-+# undef __undef_LINK_MAX
-+#endif
-+/* Have to remove OPEN_MAX? */
-+#ifdef __undef_OPEN_MAX
-+# undef OPEN_MAX
-+# undef __undef_OPEN_MAX
-+#endif
-+
-+/* The number of data keys per process. */
-+#define _POSIX_THREAD_KEYS_MAX 128
-+/* This is the value this implementation supports. */
-+#define PTHREAD_KEYS_MAX 1024
-+
-+/* Controlling the iterations of destructors for thread-specific data. */
-+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-+/* Number of iterations this implementation does. */
-+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
-+
-+/* The number of threads per process. */
-+#define _POSIX_THREAD_THREADS_MAX 64
-+/* This is the value this implementation supports. */
-+#define PTHREAD_THREADS_MAX 16384
-+
-+/* Maximum amount by which a process can descrease its asynchronous I/O
-+ priority level. */
-+#define AIO_PRIO_DELTA_MAX 20
-+
-+/* Minimum size for a thread. We are free to choose a reasonable value. */
-+#define PTHREAD_STACK_MIN 196608
-+
-+/* Maximum number of POSIX timers available. */
-+#define TIMER_MAX 256
-+
-+/* Maximum number of timer expiration overruns. */
-+#define DELAYTIMER_MAX 2147483647
-+
-+/* Maximum tty name length. */
-+#define TTY_NAME_MAX 32
-+
-+/* Maximum login name length. This is arbitrary. */
-+#define LOGIN_NAME_MAX 256
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
-@@ -0,0 +1,33 @@
-+/* Internal sigsuspend system call for LinuxThreads. IA64 version.
-+ Copyright (C) 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 <errno.h>
-+#include <signal.h>
-+#include <unistd.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <linuxthreads/internals.h>
-+
-+void
-+__pthread_sigsuspend (const sigset_t *set)
-+{
-+ INTERNAL_SYSCALL_DECL (err);
-+ INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
-+}
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-01-09 14:43:34.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -38,6 +38,11 @@
- cmp.eq p6,p0=-1,r10; \
- (p6) br.cond.spnt.few __syscall_error; \
- ret;; \
-+ .endp name; \
-+ .proc __GC_##name; \
-+ .globl __GC_##name; \
-+ .hidden __GC_##name; \
-+__GC_##name: \
- .Lpseudo_cancel: \
- .prologue; \
- .regstk args, 5, args, 0; \
-@@ -62,12 +67,13 @@
- mov ar.pfs = loc0; \
- .Lpseudo_end: \
- ret; \
-- .endp name; \
-+ .endp __GC_##name; \
- .section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
- .align 32; \
- .proc __syscall_error_##args; \
- .global __syscall_error_##args; \
- .hidden __syscall_error_##args; \
-+ .size __syscall_error_##args, 64; \
- __syscall_error_##args: \
- .prologue; \
- .regstk args, 5, args, 0; \
-@@ -82,12 +88,18 @@
- mov r8 = -1; \
- mov ar.pfs = loc0
-
-+#undef PSEUDO_END
-+#define PSEUDO_END(name) .endp
-+
- # ifdef IS_IN_libpthread
- # define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
- # define CDISABLE br.call.sptk.many b0 = __pthread_disable_asynccancel
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE br.call.sptk.many b0 = __libc_enable_asynccancel
- # define CDISABLE br.call.sptk.many b0 = __libc_disable_asynccancel
-+# else
-+# define CENABLE br.call.sptk.many b0 = __librt_enable_asynccancel
-+# define CDISABLE br.call.sptk.many b0 = __librt_disable_asynccancel
- # endif
-
- #define COPY_ARGS_0 /* Nothing */
-@@ -101,8 +113,7 @@
-
- # ifndef __ASSEMBLER__
- # define SINGLE_THREAD_P \
-- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-- p_header.data.multiple_threads) == 0, 1)
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
- # else
- # define SINGLE_THREAD_P \
- adds r14 = MULTIPLE_THREADS_OFFSET, r13 ;; ld4 r14 = [r14] ;; cmp4.ne p6, p7 = 0, r14
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-01-05 15:04:06.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -22,7 +22,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -84,7 +84,7 @@
- # define CENABLE jbsr __pthread_enable_asynccancel
- # define CDISABLE jbsr __pthread_disable_asynccancel
- # endif
--# else
-+# elif !defined NOT_IN_libc
- # ifdef PIC
- # define CENABLE jbsr __libc_enable_asynccancel@PLTPC
- # define CDISABLE jbsr __libc_disable_asynccancel@PLTPC
-@@ -92,12 +92,22 @@
- # define CENABLE jbsr __libc_enable_asynccancel
- # define CDISABLE jbsr __libc_disable_asynccancel
- # endif
-+# else
-+# ifdef PIC
-+# define CENABLE jbsr __librt_enable_asynccancel@PLTPC
-+# define CDISABLE jbsr __librt_disable_asynccancel@PLTPC
-+# else
-+# define CENABLE jbsr __librt_enable_asynccancel
-+# define CDISABLE jbsr __librt_disable_asynccancel
-+# endif
- # endif
-
- # if !defined NOT_IN_libc
- # define __local_multiple_threads __libc_multiple_threads
--# else
-+# elif defined IS_IN_libpthread
- # define __local_multiple_threads __pthread_multiple_threads
-+# else
-+# define __local_multiple_threads __librt_multiple_threads
- # endif
-
- # ifndef __ASSEMBLER__
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -22,7 +22,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- #ifdef __PIC__
- # undef PSEUDO
-@@ -35,14 +35,14 @@
- .cpload t9; \
- .set reorder; \
- SINGLE_THREAD_P(t0); \
-- bne zero, t0, Lpseudo_cancel; \
-+ bne zero, t0, L(pseudo_cancel); \
- .set noreorder; \
- li v0, SYS_ify(syscall_name); \
- syscall; \
- .set reorder; \
- bne a3, zero, SYSCALL_ERROR_LABEL; \
- ret; \
-- Lpseudo_cancel: \
-+ L(pseudo_cancel): \
- SAVESTK_##args; \
- sw ra, 28(sp); \
- sw gp, 32(sp); \
-@@ -65,7 +65,7 @@
- lw ra, 28(sp); /* restore return address */ \
- RESTORESTK; \
- bne a3, zero, SYSCALL_ERROR_LABEL; \
-- Lpseudo_end:
-+ L(pseudo_end):
- #endif
-
- # define PUSHARGS_0 /* nothing to do */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-02-17 15:32:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -78,15 +78,17 @@
- # ifdef IS_IN_libpthread
- # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel)
- # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel)
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel)
- # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel)
-+# else
-+# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel)
-+# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel)
- # endif
-
- # ifndef __ASSEMBLER__
- # define SINGLE_THREAD_P \
-- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-- p_header.data.multiple_threads) == 0, 1)
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
- # else
- # define SINGLE_THREAD_P \
- lwz 10,MULTIPLE_THREADS_OFFSET(2); \
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-01-12 03:09:45.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -22,7 +22,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -78,18 +78,31 @@
- # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel)
- # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel)
- # define __local_multiple_threads __pthread_multiple_threads
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel)
- # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel)
- # define __local_multiple_threads __libc_multiple_threads
-+# else
-+# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel); nop
-+# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel); nop
-+# define __local_multiple_threads __librt_multiple_threads
- # endif
-
- # ifndef __ASSEMBLER__
--extern int __local_multiple_threads attribute_hidden;
-+extern int __local_multiple_threads
-+# if !defined NOT_IN_libc || defined IS_IN_libpthread
-+ attribute_hidden;
-+# else
-+ ;
-+# endif
- # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
- # else
- # define SINGLE_THREAD_P \
-- ld 10,__local_multiple_threads@got(2); \
-+ .section ".toc","aw"; \
-+.LC__local_multiple_threads:; \
-+ .tc __local_multiple_threads[TC],__local_multiple_threads; \
-+ .previous; \
-+ ld 10,.LC__local_multiple_threads@toc(2); \
- ld 10,0(10); \
- cmpdi 10,0
- # endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500
-@@ -0,0 +1,56 @@
-+/* Internal sigsuspend system call for LinuxThreads. Generic Linux version.
-+ Copyright (C) 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 <errno.h>
-+#include <signal.h>
-+#include <unistd.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <linuxthreads/internals.h>
-+
-+#include "kernel-features.h"
-+
-+void
-+__pthread_sigsuspend (const sigset_t *set)
-+{
-+ INTERNAL_SYSCALL_DECL (err);
-+#if !__ASSUME_REALTIME_SIGNALS
-+ static int __pthread_missing_rt_sigs;
-+
-+# ifdef __NR_rt_sigsuspend
-+ /* First try the RT signals. */
-+ if (!__pthread_missing_rt_sigs)
-+ {
-+ /* XXX The size argument hopefully will have to be changed to the
-+ real size of the user-level sigset_t. */
-+ int r;
-+ r = INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
-+ if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS)
-+ return;
-+
-+ __pthread_missing_rt_sigs = 1;
-+ }
-+# endif
-+
-+ INTERNAL_SYSCALL (sigsuspend, err, 3, 0, 0, set->__val[0]);
-+#else
-+ INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
-+#endif
-+}
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2003-09-19 22:37:04.000000000 -0400
-@@ -0,0 +1,72 @@
-+/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version.
-+ Copyright (C) 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. */
-+
-+#ifndef _BITS_TYPES_H
-+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_TYPESIZES_H
-+#define _BITS_TYPESIZES_H 1
-+
-+/* See <bits/types.h> for the meaning of these macros. This file exists so
-+ that <bits/types.h> need not vary across different GNU platforms. */
-+
-+#define __DEV_T_TYPE __UQUAD_TYPE
-+#define __UID_T_TYPE __U32_TYPE
-+#define __GID_T_TYPE __U32_TYPE
-+#define __INO_T_TYPE __ULONGWORD_TYPE
-+#define __INO64_T_TYPE __UQUAD_TYPE
-+#define __MODE_T_TYPE __U32_TYPE
-+#define __NLINK_T_TYPE __UWORD_TYPE
-+#define __OFF_T_TYPE __SLONGWORD_TYPE
-+#define __OFF64_T_TYPE __SQUAD_TYPE
-+#define __PID_T_TYPE __S32_TYPE
-+#define __RLIM_T_TYPE __ULONGWORD_TYPE
-+#define __RLIM64_T_TYPE __UQUAD_TYPE
-+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-+#define __ID_T_TYPE __U32_TYPE
-+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-+#define __TIME_T_TYPE __SLONGWORD_TYPE
-+#define __USECONDS_T_TYPE __U32_TYPE
-+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
-+#define __DADDR_T_TYPE __S32_TYPE
-+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-+#define __KEY_T_TYPE __S32_TYPE
-+#define __CLOCKID_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE __S32_TYPE
-+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-+#define __FSID_T_TYPE struct { int __val[2]; }
-+#if defined __GNUC__ && __GNUC__ <= 2
-+/* Compatibility with g++ 2.95.x. */
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-+#else
-+/* size_t is unsigned long int on s390 -m31. */
-+#define __SSIZE_T_TYPE __SLONGWORD_TYPE
-+#endif
-+
-+/* Number of descriptors that can fit in an `fd_set'. */
-+#define __FD_SETSIZE 1024
-+
-+
-+#endif /* bits/typesizes.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-01-13 20:04:15.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -62,9 +62,12 @@
- # ifdef IS_IN_libpthread
- # define CENABLE __pthread_enable_asynccancel
- # define CDISABLE __pthread_disable_asynccancel
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE __libc_enable_asynccancel
- # define CDISABLE __libc_disable_asynccancel
-+# else
-+# define CENABLE __librt_enable_asynccancel
-+# define CDISABLE __librt_disable_asynccancel
- # endif
-
- #define STM_0 /* Nothing */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
-@@ -0,0 +1 @@
-+#include "../../ia64/pt-sigsuspend.c"
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -58,10 +58,13 @@
- # define CENABLE __pthread_enable_asynccancel
- # define CDISABLE __pthread_disable_asynccancel
- # define __local_multiple_threads __pthread_multiple_threads
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE __libc_enable_asynccancel
- # define CDISABLE __libc_disable_asynccancel
- # define __local_multiple_threads __libc_multiple_threads
-+# else
-+# define CENABLE __librt_enable_asynccancel
-+# define CDISABLE __librt_disable_asynccancel
- # endif
-
- #define STM_0 /* Nothing */
-@@ -78,14 +81,31 @@
- #define LM_4 lmg %r2,%r5,16+160(%r15);
- #define LM_5 lmg %r2,%r5,16+160(%r15);
-
--# ifndef __ASSEMBLER__
-+# if !defined NOT_IN_libc || defined IS_IN_libpthread
-+# ifndef __ASSEMBLER__
- extern int __local_multiple_threads attribute_hidden;
--# define SINGLE_THREAD_P \
-+# define SINGLE_THREAD_P \
- __builtin_expect (__local_multiple_threads == 0, 1)
--# else
--# define SINGLE_THREAD_P \
-+# else
-+# define SINGLE_THREAD_P \
- larl %r1,__local_multiple_threads; \
- icm %r0,15,0(%r1);
-+# endif
-+
-+# else
-+
-+# ifndef __ASSEMBLER__
-+# define SINGLE_THREAD_P \
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-+ p_header.data.multiple_threads) == 0, 1)
-+# else
-+# define SINGLE_THREAD_P \
-+ ear %r1,%a0; \
-+ sllg %r1,%r1,32; \
-+ ear %r1,%a1; \
-+ icm %r1,15,MULTIPLE_THREADS_OFFSET(%r1);
-+# endif
-+
- # endif
-
- #elif !defined __ASSEMBLER__
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-02-07 21:29:53.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # define _IMM12 #-12
- # define _IMM16 #-16
-@@ -92,10 +92,13 @@
- # define __local_enable_asynccancel __pthread_enable_asynccancel
- # define __local_disable_asynccancel __pthread_disable_asynccancel
- # define __local_multiple_threads __pthread_multiple_threads
--# else
-+# elif !defined NOT_IN_libc
- # define __local_enable_asynccancel __libc_enable_asynccancel
- # define __local_disable_asynccancel __libc_disable_asynccancel
- # define __local_multiple_threads __libc_multiple_threads
-+# else
-+# define __local_enable_asynccancel __librt_enable_asynccancel
-+# define __local_disable_asynccancel __librt_disable_asynccancel
- # endif
-
- # define CENABLE \
-@@ -121,8 +124,7 @@
- # ifndef __ASSEMBLER__
- # if defined FLOATING_STACKS && USE___THREAD && defined PIC
- # define SINGLE_THREAD_P \
-- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-- p_header.data.multiple_threads) == 0, 1)
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
- # else
- extern int __local_multiple_threads attribute_hidden;
- # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 2003-02-21 13:55:30.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 1969-12-31 19:00:00.000000000 -0500
-@@ -1,11 +0,0 @@
--ifeq ($(subdir),linuxthreads)
--# gcc has /usr/lib{,64}/crti.o hardcoded in the specs file, because otherwise
--# it would normally find {64,32}bit crt[in].o.
--LDFLAGS-pthread.so += -specs=$(objpfx)specs
--before-compile += $(objpfx)specs
--generated += specs
--$(objpfx)specs:
-- $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \
-- | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new
-- mv -f $@.new $@
--endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 2003-09-02 23:04:33.000000000 -0400
-@@ -0,0 +1,6 @@
-+libpthread {
-+ GLIBC_2.3.3 {
-+ # Changed PTHREAD_STACK_MIN.
-+ pthread_attr_setstack; pthread_attr_setstacksize;
-+ }
-+}
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2003-09-02 23:04:08.000000000 -0400
-@@ -0,0 +1,86 @@
-+/* Minimum guaranteed maximum values for system limits. Linux/SPARC version.
-+ Copyright (C) 1993-1998, 2000, 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; see the file COPYING.LIB. If not,
-+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* The kernel header pollutes the namespace with the NR_OPEN symbol
-+ and defines LINK_MAX although filesystems have different maxima. A
-+ similar thing is true for OPEN_MAX: the limit can be changed at
-+ runtime and therefore the macro must not be defined. Remove this
-+ after including the header if necessary. */
-+#ifndef NR_OPEN
-+# define __undef_NR_OPEN
-+#endif
-+#ifndef LINK_MAX
-+# define __undef_LINK_MAX
-+#endif
-+#ifndef OPEN_MAX
-+# define __undef_OPEN_MAX
-+#endif
-+
-+/* The kernel sources contain a file with all the needed information. */
-+#include <linux/limits.h>
-+
-+/* Have to remove NR_OPEN? */
-+#ifdef __undef_NR_OPEN
-+# undef NR_OPEN
-+# undef __undef_NR_OPEN
-+#endif
-+/* Have to remove LINK_MAX? */
-+#ifdef __undef_LINK_MAX
-+# undef LINK_MAX
-+# undef __undef_LINK_MAX
-+#endif
-+/* Have to remove OPEN_MAX? */
-+#ifdef __undef_OPEN_MAX
-+# undef OPEN_MAX
-+# undef __undef_OPEN_MAX
-+#endif
-+
-+/* The number of data keys per process. */
-+#define _POSIX_THREAD_KEYS_MAX 128
-+/* This is the value this implementation supports. */
-+#define PTHREAD_KEYS_MAX 1024
-+
-+/* Controlling the iterations of destructors for thread-specific data. */
-+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-+/* Number of iterations this implementation does. */
-+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
-+
-+/* The number of threads per process. */
-+#define _POSIX_THREAD_THREADS_MAX 64
-+/* This is the value this implementation supports. */
-+#define PTHREAD_THREADS_MAX 16384
-+
-+/* Maximum amount by which a process can descrease its asynchronous I/O
-+ priority level. */
-+#define AIO_PRIO_DELTA_MAX 20
-+
-+/* Minimum size for a thread. We are free to choose a reasonable value. */
-+#define PTHREAD_STACK_MIN 24576
-+
-+/* Maximum number of POSIX timers available. */
-+#define TIMER_MAX 256
-+
-+/* Maximum number of timer expiration overruns. */
-+#define DELAYTIMER_MAX 2147483647
-+
-+/* Maximum tty name length. */
-+#define TTY_NAME_MAX 32
-+
-+/* Maximum login name length. This is arbitrary. */
-+#define LOGIN_NAME_MAX 256
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400
-@@ -0,0 +1,66 @@
-+/* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version.
-+ Copyright (C) 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. */
-+
-+#ifndef _BITS_TYPES_H
-+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_TYPESIZES_H
-+#define _BITS_TYPESIZES_H 1
-+
-+/* See <bits/types.h> for the meaning of these macros. This file exists so
-+ that <bits/types.h> need not vary across different GNU platforms. */
-+
-+#define __DEV_T_TYPE __UQUAD_TYPE
-+#define __UID_T_TYPE __U32_TYPE
-+#define __GID_T_TYPE __U32_TYPE
-+#define __INO_T_TYPE __ULONGWORD_TYPE
-+#define __INO64_T_TYPE __UQUAD_TYPE
-+#define __MODE_T_TYPE __U32_TYPE
-+#define __NLINK_T_TYPE __U32_TYPE
-+#define __OFF_T_TYPE __SLONGWORD_TYPE
-+#define __OFF64_T_TYPE __SQUAD_TYPE
-+#define __PID_T_TYPE __S32_TYPE
-+#define __RLIM_T_TYPE __ULONGWORD_TYPE
-+#define __RLIM64_T_TYPE __UQUAD_TYPE
-+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-+#define __ID_T_TYPE __U32_TYPE
-+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-+#define __TIME_T_TYPE __SLONGWORD_TYPE
-+#define __USECONDS_T_TYPE __U32_TYPE
-+#define __SUSECONDS_T_TYPE __S32_TYPE
-+#define __DADDR_T_TYPE __S32_TYPE
-+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-+#define __KEY_T_TYPE __S32_TYPE
-+#define __CLOCKID_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE __S32_TYPE
-+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-+#define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-+
-+/* Number of descriptors that can fit in an `fd_set'. */
-+#define __FD_SETSIZE 1024
-+
-+
-+#endif /* bits/typesizes.h */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-01-27 15:47:53.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -68,9 +68,12 @@
- # ifdef IS_IN_libpthread
- # define CENABLE call __pthread_enable_asynccancel
- # define CDISABLE call __pthread_disable_asynccancel
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE call __libc_enable_asynccancel
- # define CDISABLE call __libc_disable_asynccancel
-+# else
-+# define CENABLE call __librt_enable_asynccancel
-+# define CDISABLE call __librt_disable_asynccancel
- # endif
-
- #define COPY_ARGS_0 /* Nothing */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 2003-03-14 18:36:52.000000000 -0500
-@@ -0,0 +1,5 @@
-+# glibc makefile fragment for linuxthreads on sparc/sparc64.
-+
-+ifeq ($(subdir),linuxthreads)
-+libpthread-routines += ptw-sigprocmask
-+endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500
-@@ -0,0 +1 @@
-+#include "../../ia64/pt-sigsuspend.c"
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-02-21 13:55:30.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -23,7 +23,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -67,9 +67,12 @@
- # ifdef IS_IN_libpthread
- # define CENABLE call __pthread_enable_asynccancel
- # define CDISABLE call __pthread_disable_asynccancel
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE call __libc_enable_asynccancel
- # define CDISABLE call __libc_disable_asynccancel
-+# else
-+# define CENABLE call __librt_enable_asynccancel
-+# define CDISABLE call __librt_disable_asynccancel
- # endif
-
- #define COPY_ARGS_0 /* Nothing */
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-02-21 13:55:30.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-04-12 11:39:43.000000000 -0400
-@@ -1,12 +1,3 @@
- ifeq ($(subdir),linuxthreads)
- CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables
--# gcc -m64 has /usr/lib64/crti.o hardcoded in the specs file, because otherwise
--# it would normally find 32bit crti.o.
--LDFLAGS-pthread.so += -specs=$(objpfx)specs
--before-compile += $(objpfx)specs
--generated += specs
--$(objpfx)specs:
-- $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \
-- | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new
-- mv -f $@.new $@
- endif
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
-@@ -0,0 +1 @@
-+#include "../ia64/pt-sigsuspend.c"
---- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-02-12 16:45:53.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
-@@ -24,7 +24,7 @@
- # include <linuxthreads/internals.h>
- #endif
-
--#if !defined NOT_IN_libc || defined IS_IN_libpthread
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-
- # undef PSEUDO
- # define PSEUDO(name, syscall_name, args) \
-@@ -74,38 +74,54 @@
- # define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9;
-
- /* We always have to align the stack before calling a function. */
--# define SAVESTK_0 subq $24, %rsp;
-+# define SAVESTK_0 subq $24, %rsp;cfi_adjust_cfa_offset(24);
- # define SAVESTK_1 SAVESTK_0
- # define SAVESTK_2 SAVESTK_1
--# define SAVESTK_3 subq $40, %rsp;
-+# define SAVESTK_3 subq $40, %rsp;cfi_adjust_cfa_offset(40);
- # define SAVESTK_4 SAVESTK_3
--# define SAVESTK_5 subq $56, %rsp;
-+# define SAVESTK_5 subq $56, %rsp;cfi_adjust_cfa_offset(56);
- # define SAVESTK_6 SAVESTK_5
-
--# define RESTSTK_0 addq $24,%rsp;
-+# define RESTSTK_0 addq $24,%rsp;cfi_adjust_cfa_offset(-24);
- # define RESTSTK_1 RESTSTK_0
- # define RESTSTK_2 RESTSTK_1
--# define RESTSTK_3 addq $40, %rsp;
-+# define RESTSTK_3 addq $40, %rsp;cfi_adjust_cfa_offset(-40);
- # define RESTSTK_4 RESTSTK_3
--# define RESTSTK_5 addq $56, %rsp;
-+# define RESTSTK_5 addq $56, %rsp;cfi_adjust_cfa_offset(-56);
- # define RESTSTK_6 RESTSTK_5
-
- # ifdef IS_IN_libpthread
- # define CENABLE call __pthread_enable_asynccancel;
- # define CDISABLE call __pthread_disable_asynccancel;
- # define __local_multiple_threads __pthread_multiple_threads
--# else
-+# elif !defined NOT_IN_libc
- # define CENABLE call __libc_enable_asynccancel;
- # define CDISABLE call __libc_disable_asynccancel;
- # define __local_multiple_threads __libc_multiple_threads
-+# else
-+# define CENABLE call __librt_enable_asynccancel@plt;
-+# define CDISABLE call __librt_disable_asynccancel@plt;
- # endif
-
--# ifndef __ASSEMBLER__
-+# if defined IS_IN_libpthread || !defined NOT_IN_libc
-+# ifndef __ASSEMBLER__
- extern int __local_multiple_threads attribute_hidden;
- # define SINGLE_THREAD_P \
- __builtin_expect (__local_multiple_threads == 0, 1)
-+# else
-+# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip)
-+# endif
-+
- # else
--# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip)
-+
-+# ifndef __ASSEMBLER__
-+# define SINGLE_THREAD_P \
-+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
-+ p_header.data.multiple_threads) == 0, 1)
-+# else
-+# define SINGLE_THREAD_P cmpl $0, %fs:MULTIPLE_THREADS_OFFSET
-+# endif
-+
- # endif
-
- #elif !defined __ASSEMBLER__
---- glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 2003-06-17 18:24:24.000000000 -0400
-@@ -0,0 +1,3 @@
-+ifeq ($(subdir),csu)
-+gen-as-const-headers += tcb-offsets.sym
-+endif
---- glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2002-12-17 19:57:21.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Machine-dependent pthreads configuration and inline functions.
- x86-64 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -28,7 +28,7 @@
-
-
- # ifndef PT_EI
--# define PT_EI extern inline
-+# define PT_EI extern inline __attribute__ ((always_inline))
- # endif
-
- extern long int testandset (int *spinlock);
---- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 2003-06-17 18:23:41.000000000 -0400
-@@ -0,0 +1,4 @@
-+#include <sysdep.h>
-+#include <tls.h>
-+
-+MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
---- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2002-12-28 02:04:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2003-08-21 08:37:05.000000000 -0400
-@@ -39,6 +39,7 @@
- thread descriptor used by libpthread. */
- dtv_t *dtv;
- void *self; /* Pointer to the thread descriptor. */
-+ int multiple_threads;
- } tcbhead_t;
- #endif
-
---- glibc-2.3.2/linuxthreads/tst-_res1.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-_res1.c 2003-07-22 19:07:47.000000000 -0400
-@@ -0,0 +1,69 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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. */
-+
-+/* Test whether _res in glibc 2.1.x and earlier (before __res_state()
-+ was introduced) works. Portable programs should never do the
-+ dirty things below. */
-+
-+#include <pthread.h>
-+#include <resolv.h>
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+void *tf (void *resp)
-+{
-+ if (resp == &_res || resp == __res_state ())
-+ abort ();
-+ _res.retry = 24;
-+ return NULL;
-+}
-+
-+void do_test (struct __res_state *resp)
-+{
-+ if (resp != &_res || resp != __res_state ())
-+ abort ();
-+ if (_res.retry != 12)
-+ abort ();
-+}
-+
-+int main (void)
-+{
-+#undef _res
-+ extern struct __res_state _res;
-+ pthread_t th;
-+
-+ _res.retry = 12;
-+ if (pthread_create (&th, NULL, tf, &_res) != 0)
-+ {
-+ puts ("create failed");
-+ exit (1);
-+ }
-+
-+ do_test (&_res);
-+
-+ if (pthread_join (th, NULL) != 0)
-+ {
-+ puts ("join failed");
-+ exit (1);
-+ }
-+
-+ do_test (&_res);
-+
-+ exit (0);
-+}
---- glibc-2.3.2/linuxthreads/tst-_res1mod1.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-_res1mod1.c 2003-07-22 19:07:47.000000000 -0400
-@@ -0,0 +1,23 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <resolv.h>
-+#undef _res
-+
-+struct __res_state _res;
---- glibc-2.3.2/linuxthreads/tst-_res1mod2.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-_res1mod2.c 2003-07-22 19:07:47.000000000 -0400
-@@ -0,0 +1 @@
-+/* Nothing. */
---- glibc-2.3.2/linuxthreads/tst-attr1.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-attr1.c 2003-09-18 15:15:05.000000000 -0400
-@@ -0,0 +1,358 @@
-+/* pthread_getattr_np test.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <error.h>
-+#include <pthread.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+#include <stackinfo.h>
-+
-+static void *
-+tf (void *arg)
-+{
-+ pthread_attr_t a, *ap, a2;
-+ int err;
-+ void *result = NULL;
-+
-+ if (arg == NULL)
-+ {
-+ ap = &a2;
-+ err = pthread_attr_init (ap);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_init failed");
-+ return tf;
-+ }
-+ }
-+ else
-+ ap = (pthread_attr_t *) arg;
-+
-+ err = pthread_getattr_np (pthread_self (), &a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_getattr_np failed");
-+ result = tf;
-+ }
-+
-+ int detachstate1, detachstate2;
-+ err = pthread_attr_getdetachstate (&a, &detachstate1);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getdetachstate failed");
-+ result = tf;
-+ }
-+ else
-+ {
-+ err = pthread_attr_getdetachstate (ap, &detachstate2);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getdetachstate failed");
-+ result = tf;
-+ }
-+ else if (detachstate1 != detachstate2)
-+ {
-+ error (0, 0, "detachstate differs %d != %d",
-+ detachstate1, detachstate2);
-+ result = tf;
-+ }
-+ }
-+
-+ void *stackaddr;
-+ size_t stacksize;
-+ err = pthread_attr_getstack (&a, &stackaddr, &stacksize);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getstack failed");
-+ result = tf;
-+ }
-+ else if ((void *) &a < stackaddr
-+ || (void *) &a >= stackaddr + stacksize)
-+ {
-+ error (0, 0, "pthread_attr_getstack returned range does not cover thread's stack");
-+ result = tf;
-+ }
-+ else
-+ printf ("thread stack %p-%p (0x%zx)\n", stackaddr, stackaddr + stacksize,
-+ stacksize);
-+
-+ size_t guardsize1, guardsize2;
-+ err = pthread_attr_getguardsize (&a, &guardsize1);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getguardsize failed");
-+ result = tf;
-+ }
-+ else
-+ {
-+ err = pthread_attr_getguardsize (ap, &guardsize2);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getguardsize failed");
-+ result = tf;
-+ }
-+ else if (guardsize1 != guardsize2)
-+ {
-+ error (0, 0, "guardsize differs %zd != %zd",
-+ guardsize1, guardsize2);
-+ result = tf;
-+ }
-+ else
-+ printf ("thread guardsize %zd\n", guardsize1);
-+ }
-+
-+ int scope1, scope2;
-+ err = pthread_attr_getscope (&a, &scope1);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getscope failed");
-+ result = tf;
-+ }
-+ else
-+ {
-+ err = pthread_attr_getscope (ap, &scope2);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getscope failed");
-+ result = tf;
-+ }
-+ else if (scope1 != scope2)
-+ {
-+ error (0, 0, "scope differs %d != %d",
-+ scope1, scope2);
-+ result = tf;
-+ }
-+ }
-+
-+ err = pthread_attr_destroy (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_destroy failed");
-+ result = tf;
-+ }
-+
-+ if (ap == &a2)
-+ {
-+ err = pthread_attr_destroy (ap);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_destroy failed");
-+ result = tf;
-+ }
-+ }
-+
-+ return result;
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ int result = 0;
-+ pthread_attr_t a;
-+
-+ int err = pthread_attr_init (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_init failed");
-+ result = 1;
-+ }
-+
-+ err = pthread_attr_destroy (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_destroy failed");
-+ result = 1;
-+ }
-+
-+ err = pthread_getattr_np (pthread_self (), &a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_getattr_np failed");
-+ result = 1;
-+ }
-+
-+ int detachstate;
-+ err = pthread_attr_getdetachstate (&a, &detachstate);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getdetachstate failed");
-+ result = 1;
-+ }
-+ else if (detachstate != PTHREAD_CREATE_JOINABLE)
-+ {
-+ error (0, 0, "initial thread not joinable");
-+ result = 1;
-+ }
-+
-+ void *stackaddr;
-+ size_t stacksize;
-+ err = pthread_attr_getstack (&a, &stackaddr, &stacksize);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getstack failed");
-+ result = 1;
-+ }
-+ else if ((void *) &a < stackaddr
-+ || (void *) &a >= stackaddr + stacksize)
-+ {
-+ error (0, 0, "pthread_attr_getstack returned range does not cover main's stack");
-+ result = 1;
-+ }
-+ else
-+ printf ("initial thread stack %p-%p (0x%zx)\n", stackaddr,
-+ stackaddr + stacksize, stacksize);
-+
-+ size_t guardsize;
-+ err = pthread_attr_getguardsize (&a, &guardsize);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getguardsize failed");
-+ result = 1;
-+ }
-+ else if (guardsize != 0)
-+ {
-+ error (0, 0, "pthread_attr_getguardsize returned %zd != 0",
-+ guardsize);
-+ result = 1;
-+ }
-+
-+ int scope;
-+ err = pthread_attr_getscope (&a, &scope);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getscope failed");
-+ result = 1;
-+ }
-+ else if (scope != PTHREAD_SCOPE_SYSTEM)
-+ {
-+ error (0, 0, "pthread_attr_getscope returned %d != PTHREAD_SCOPE_SYSTEM",
-+ scope);
-+ result = 1;
-+ }
-+
-+ int inheritsched;
-+ err = pthread_attr_getinheritsched (&a, &inheritsched);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_getinheritsched failed");
-+ result = 1;
-+ }
-+ else if (inheritsched != PTHREAD_INHERIT_SCHED)
-+ {
-+ error (0, 0, "pthread_attr_getinheritsched returned %d != PTHREAD_INHERIT_SCHED",
-+ inheritsched);
-+ result = 1;
-+ }
-+
-+ err = pthread_attr_destroy (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_destroy failed");
-+ result = 1;
-+ }
-+
-+ pthread_t th;
-+ err = pthread_create (&th, NULL, tf, NULL);
-+ if (err)
-+ {
-+ error (0, err, "pthread_create #1 failed");
-+ result = 1;
-+ }
-+ else
-+ {
-+ void *ret;
-+ err = pthread_join (th, &ret);
-+ if (err)
-+ {
-+ error (0, err, "pthread_join #1 failed");
-+ result = 1;
-+ }
-+ else if (ret != NULL)
-+ result = 1;
-+ }
-+
-+ err = pthread_attr_init (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_init failed");
-+ result = 1;
-+ }
-+
-+ err = pthread_create (&th, &a, tf, &a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_create #2 failed");
-+ result = 1;
-+ }
-+ else
-+ {
-+ void *ret;
-+ err = pthread_join (th, &ret);
-+ if (err)
-+ {
-+ error (0, err, "pthread_join #2 failed");
-+ result = 1;
-+ }
-+ else if (ret != NULL)
-+ result = 1;
-+ }
-+
-+ err = pthread_attr_setguardsize (&a, 16 * sysconf (_SC_PAGESIZE));
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_setguardsize failed");
-+ result = 1;
-+ }
-+
-+ err = pthread_create (&th, &a, tf, &a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_create #3 failed");
-+ result = 1;
-+ }
-+ else
-+ {
-+ void *ret;
-+ err = pthread_join (th, &ret);
-+ if (err)
-+ {
-+ error (0, err, "pthread_join #3 failed");
-+ result = 1;
-+ }
-+ else if (ret != NULL)
-+ result = 1;
-+ }
-+
-+ err = pthread_attr_destroy (&a);
-+ if (err)
-+ {
-+ error (0, err, "pthread_attr_destroy failed");
-+ result = 1;
-+ }
-+
-+ return result;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-01-14 19:55:09.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-08-21 08:37:03.000000000 -0400
-@@ -27,8 +27,6 @@
- C["creat"]=1
- C["fcntl"]=1
- C["fsync"]=1
--C["llseek"]=1
--C["lseek"]=1
- C["msgrcv"]=1
- C["msgsnd"]=1
- C["msync"]=1
---- glibc-2.3.2/linuxthreads/tst-cancel.c 2001-04-12 17:55:11.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/tst-cancel.c 2003-08-21 08:37:03.000000000 -0400
-@@ -12,6 +12,7 @@
- pthread_barrier_t bar;
-
-
-+#ifdef NOT_YET
- static void
- cleanup (void *arg)
- {
-@@ -52,7 +53,7 @@
- return NULL;
- pthread_cleanup_pop (0);
- }
--
-+#endif
-
- /* This does not work yet. */
- volatile int cleanupokcnt;
-@@ -63,7 +64,7 @@
- ++cleanupokcnt;
- }
-
--
-+#ifdef NOT_YET
- static void *
- t3 (void *arg)
- {
-@@ -72,7 +73,7 @@
- pthread_exit (NULL);
- pthread_cleanup_pop (0);
- }
--
-+#endif
-
- static void
- innerok (int a)
-@@ -170,7 +171,7 @@
- err = pthread_create (&td, NULL, t4, (void *) 7);
- if (err != 0)
- {
-- printf ("cannot create thread t3: %s\n", strerror (err));
-+ printf ("cannot create thread t4: %s\n", strerror (err));
- exit (1);
- }
-
---- glibc-2.3.2/linuxthreads/tst-cancel4.c 2002-12-28 02:49:20.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-cancel4.c 2003-03-15 15:02:09.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -154,7 +154,7 @@
- exit (1);
- }
-
-- sleep (10000000);
-+ sleep (1000000);
-
- printf ("%s: sleep returns\n", __FUNCTION__);
-
---- glibc-2.3.2/linuxthreads/tst-cancel7.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-cancel7.c 2003-04-01 19:10:44.000000000 -0500
-@@ -0,0 +1,111 @@
-+/* Test for pthread cancellation of mutex blocks.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <pthread.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+
-+pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-+pthread_barrier_t b;
-+int value = 0;
-+
-+static void *
-+tf (void *arg)
-+{
-+ int r = pthread_barrier_wait (&b);
-+ if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
-+ {
-+ printf ("%s: barrier_wait failed\n", __FUNCTION__);
-+ exit (1);
-+ }
-+
-+ pthread_mutex_lock (&lock);
-+ ++value;
-+ pthread_testcancel ();
-+ ++value;
-+ pthread_mutex_unlock (&lock);
-+ return NULL;
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ pthread_mutex_lock (&lock);
-+
-+ if (pthread_barrier_init (&b, NULL, 2) != 0)
-+ {
-+ puts ("barrier init failed");
-+ return 1;
-+ }
-+
-+ pthread_t th;
-+ if (pthread_create (&th, NULL, tf, NULL) != 0)
-+ {
-+ puts ("pthread_create failed");
-+ return 1;
-+ }
-+
-+ int r = pthread_barrier_wait (&b);
-+ if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
-+ {
-+ printf ("%s: barrier_wait failed\n", __FUNCTION__);
-+ exit (1);
-+ }
-+
-+ if (pthread_cancel (th) != 0)
-+ {
-+ puts ("pthread_cancel failed");
-+ return 1;
-+ }
-+
-+ pthread_mutex_unlock (&lock);
-+
-+ void *status;
-+ if (pthread_join (th, &status) != 0)
-+ {
-+ puts ("join failed");
-+ return 1;
-+ }
-+
-+ if (status != PTHREAD_CANCELED)
-+ {
-+ puts ("thread not canceled");
-+ return 1;
-+ }
-+
-+ if (value == 0)
-+ {
-+ puts ("thread cancelled in the pthread_mutex_lock call");
-+ return 1;
-+ }
-+
-+ if (value != 1)
-+ {
-+ puts ("thread not cancelled in pthread_testcancel call");
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/linuxthreads/tst-tls1.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1.c 2003-09-01 20:29:30.000000000 -0400
-@@ -0,0 +1,91 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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. */
-+
-+/* Check alignment, overlapping and layout of TLS variables. */
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <pthread.h>
-+#include <sys/param.h>
-+
-+#include "tst-tls1.h"
-+
-+#ifdef TLS_REGISTER
-+
-+struct tls_obj tls_registry[64];
-+
-+static int
-+tls_addr_cmp (const void *a, const void *b)
-+{
-+ if (((struct tls_obj *)a)->addr < ((struct tls_obj *)b)->addr)
-+ return -1;
-+ if (((struct tls_obj *)a)->addr > ((struct tls_obj *)b)->addr)
-+ return 1;
-+ return 0;
-+}
-+
-+static int
-+do_test (void)
-+{
-+ size_t cnt, i;
-+ int res = 0;
-+ uintptr_t min_addr = ~(uintptr_t) 0, max_addr = 0;
-+
-+ for (cnt = 0; tls_registry[cnt].name; ++cnt);
-+
-+ qsort (tls_registry, cnt, sizeof (struct tls_obj), tls_addr_cmp);
-+
-+ for (i = 0; i < cnt; ++i)
-+ {
-+ printf ("%s = %p, size %zd, align %zd",
-+ tls_registry[i].name, (void *) tls_registry[i].addr,
-+ tls_registry[i].size, tls_registry[i].align);
-+ if (tls_registry[i].addr & (tls_registry[i].align - 1))
-+ {
-+ fputs (", WRONG ALIGNMENT", stdout);
-+ res = 1;
-+ }
-+ if (i > 0
-+ && (tls_registry[i - 1].addr + tls_registry[i - 1].size
-+ > tls_registry[i].addr))
-+ {
-+ fputs (", ADDRESS OVERLAP", stdout);
-+ res = 1;
-+ }
-+ puts ("");
-+ min_addr = MIN (tls_registry[i].addr, min_addr);
-+ max_addr = MAX (tls_registry[i].addr + tls_registry[i].size,
-+ max_addr);
-+ }
-+
-+ if (cnt > 1)
-+ printf ("Initial TLS used block size %zd\n",
-+ (size_t) (max_addr - min_addr));
-+ return res;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+
-+#else
-+
-+#define TEST_FUNCTION 0
-+
-+#endif
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/linuxthreads/tst-tls1.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1.h 2003-09-01 20:29:30.000000000 -0400
-@@ -0,0 +1,28 @@
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <tls.h>
-+
-+#if USE_TLS && HAVE___THREAD
-+
-+struct tls_obj
-+{
-+ const char *name;
-+ uintptr_t addr;
-+ size_t size;
-+ size_t align;
-+};
-+extern struct tls_obj tls_registry[];
-+
-+#define TLS_REGISTER(x) \
-+static void __attribute__((constructor)) \
-+tls_register_##x (void) \
-+{ \
-+ size_t i; \
-+ for (i = 0; tls_registry[i].name; ++i); \
-+ tls_registry[i].name = #x; \
-+ tls_registry[i].addr = (uintptr_t) &x; \
-+ tls_registry[i].size = sizeof (x); \
-+ tls_registry[i].align = __alignof__ (x); \
-+}
-+
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1mod.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1mod.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+/* Ensure tls_registry is exported from the binary. */
-+void *tst_tls1mod attribute_hidden = tls_registry;
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1moda.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1moda.c 2003-09-01 20:29:30.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+static __thread char a [32] __attribute__ ((aligned (64)));
-+TLS_REGISTER (a)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1modb.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1modb.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+static __thread int b;
-+TLS_REGISTER (b)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1modc.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1modc.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+static __thread int c;
-+TLS_REGISTER (c)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1modd.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1modd.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,6 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+static __thread int d;
-+TLS_REGISTER (d)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1mode.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1mode.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,8 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+static __thread int e1 = 24;
-+static __thread char e2 [32] __attribute__ ((aligned (64)));
-+TLS_REGISTER (e1)
-+TLS_REGISTER (e2)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls1modf.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls1modf.c 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,9 @@
-+#include <tst-tls1.h>
-+
-+#ifdef TLS_REGISTER
-+char tst_tls1modf[60] attribute_hidden = { 26 };
-+static __thread int f1 = 24;
-+static __thread char f2 [32] __attribute__ ((aligned (64)));
-+TLS_REGISTER (f1)
-+TLS_REGISTER (f2)
-+#endif
---- glibc-2.3.2/linuxthreads/tst-tls2.sh 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/tst-tls2.sh 2003-09-01 20:29:31.000000000 -0400
-@@ -0,0 +1,53 @@
-+#!/bin/sh
-+
-+common_objpfx=$1; shift
-+elf_objpfx=$1; shift
-+rtld_installed_name=$1; shift
-+logfile=$common_objpfx/linuxthreads/tst-tls2.out
-+
-+# We have to find libc and linuxthreads
-+library_path=${common_objpfx}:${common_objpfx}linuxthreads
-+tst_tls1="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
-+ ${common_objpfx}/linuxthreads/tst-tls1"
-+
-+LC_ALL=C
-+export LC_ALL
-+LANG=C
-+export LANG
-+
-+> $logfile
-+fail=0
-+
-+for aligned in a e f; do
-+ echo "preload tst-tls1mod{$aligned,b,c,d}.so" >> $logfile
-+ echo "===============" >> $logfile
-+ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{$aligned,b,c,d}.so \
-+ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
-+ echo >> $logfile
-+
-+ echo "preload tst-tls1mod{b,$aligned,c,d}.so" >> $logfile
-+ echo "===============" >> $logfile
-+ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,$aligned,c,d}.so \
-+ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
-+ echo >> $logfile
-+
-+ echo "preload tst-tls1mod{b,c,d,$aligned}.so" >> $logfile
-+ echo "===============" >> $logfile
-+ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,c,d,$aligned}.so \
-+ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
-+ echo >> $logfile
-+done
-+
-+echo "preload tst-tls1mod{d,a,b,c,e}" >> $logfile
-+echo "===============" >> $logfile
-+LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,c,e}.so \
-+ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
-+echo >> $logfile
-+
-+echo "preload tst-tls1mod{d,a,b,e,f}" >> $logfile
-+echo "===============" >> $logfile
-+LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,e,f}.so \
-+ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
-+echo >> $logfile
-+
-+exit $fail
---- glibc-2.3.2/linuxthreads/tststack.c 2002-08-27 00:52:35.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/tststack.c 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Tests for variable stack size handling.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -20,6 +20,8 @@
- #include <pthread.h>
- #include <stdio.h>
- #include <unistd.h>
-+#include <limits.h>
-+#include <sys/param.h>
-
- static void *f1 (void *);
- static void *f2 (void *);
-@@ -34,7 +36,7 @@
- void *res2;
-
- pthread_attr_init (&attr);
-- if (pthread_attr_setstacksize (&attr, 70*1024) != 0)
-+ if (pthread_attr_setstacksize (&attr, MAX (70*1024, PTHREAD_STACK_MIN)) != 0)
- {
- puts ("invalid stack size");
- return 1;
---- glibc-2.3.2/linuxthreads_db/ChangeLog 2003-01-30 05:15:38.000000000 -0500
-+++ glibc-2.3.2/linuxthreads_db/ChangeLog 2003-09-19 22:37:04.000000000 -0400
-@@ -1,3 +1,25 @@
-+2003-08-18 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * td_thr_getfpregs.c (td_thr_getfpregs): Use the main thread if
-+ the descriptor is uninitialized.
-+ * td_thr_getgregs.c (td_thr_getgregs): Likewise.
-+
-+2003-03-15 Roland McGrath <roland@redhat.com>
-+
-+ * thread_db.h (td_err_e): Add TD_NOTLS and TD_TLSDEFER.
-+ (td_thr_tlsbase): Declare it.
-+ * td_thr_tlsbase.c: New file.
-+ * Makefile (libthread_db-routines): Add it.
-+ * Versions (libthread_db: GLIBC_2.3.3): New set, add td_thr_tlsbase.
-+ * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Use td_thr_tlsbase.
-+
-+2003-02-27 Roland McGrath <roland@redhat.com>
-+
-+ * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Handle TLS_DTV_AT_TP.
-+
-+ * td_ta_thr_iter.c (handle_descr) [!defined USE_TLS || !TLS_DTV_AT_TP]:
-+ Conditionalize p_header use on this.
-+
- 2003-01-29 Roland McGrath <roland@redhat.com>
-
- * td_ta_new.c (td_ta_new): Cap the `sizeof_descr' value read from the
---- glibc-2.3.2/linuxthreads_db/Makefile 2003-01-05 05:00:22.000000000 -0500
-+++ glibc-2.3.2/linuxthreads_db/Makefile 2003-03-18 16:46:07.000000000 -0500
-@@ -39,7 +39,8 @@
- td_thr_event_enable td_thr_set_event \
- td_thr_clear_event td_thr_event_getmsg \
- td_ta_set_event td_ta_event_getmsg \
-- td_ta_clear_event td_symbol_list td_thr_tls_get_addr
-+ td_ta_clear_event td_symbol_list \
-+ td_thr_tlsbase td_thr_tls_get_addr
-
- libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
-
---- glibc-2.3.2/linuxthreads_db/Versions 2002-07-10 19:08:40.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/Versions 2003-03-18 16:46:07.000000000 -0500
-@@ -18,4 +18,7 @@
- GLIBC_2.3 {
- td_thr_tls_get_addr;
- }
-+ GLIBC_2.3.3 {
-+ td_thr_tlsbase;
-+ }
- }
---- glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2002-07-15 23:34:26.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2003-03-15 15:02:11.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Iterate over a process's threads.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -40,7 +40,9 @@
- memset (&pds, '\0', sizeof (pds));
-
- /* Empty thread descriptor the thread library would create. */
-+#if !defined USE_TLS || !TLS_DTV_AT_TP
- pds.p_header.data.self = &pds;
-+#endif
- pds.p_nextlive = pds.p_prevlive = &pds;
- pds.p_tid = PTHREAD_THREADS_MAX;
- /* The init code also sets up p_lock, p_errnop, p_herrnop, and
---- glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2002-07-15 23:25:16.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get a thread's floating-point register set.
-- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -30,7 +30,10 @@
-
- if (th->th_unique == NULL)
- {
-- memset (regset, '\0', sizeof (*regset));
-+ /* No data yet. Use the main thread. */
-+ pid_t pid = ps_getpid (th->th_ta_p->ph);
-+ if (ps_lgetfpregs (th->th_ta_p->ph, pid, regset) != PS_OK)
-+ return TD_ERR;
- return TD_OK;
- }
-
---- glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2002-07-15 23:24:27.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get a thread's general register set.
-- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -30,8 +30,10 @@
-
- if (th->th_unique == NULL)
- {
-- /* No data yet. */
-- memset (gregs, '\0', sizeof (prgregset_t));
-+ /* No data yet. Use the main thread. */
-+ pid_t pid = ps_getpid (th->th_ta_p->ph);
-+ if (ps_lgetregs (th->th_ta_p->ph, pid, gregs) != PS_OK)
-+ return TD_ERR;
- return TD_OK;
- }
-
---- glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2002-09-28 13:41:11.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2003-03-18 16:46:07.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Get address of thread local variable.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 2002.
-
-@@ -18,14 +18,9 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--
--#include "link.h"
-+#include <link.h>
- #include "thread_dbP.h"
-
--/* Value used for dtv entries for which the allocation is delayed. */
--# define TLS_DTV_UNALLOCATED ((void *) -1l)
--
--
- td_err_e
- td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)),
- void *map_address __attribute__ ((unused)),
-@@ -33,37 +28,17 @@
- void **address __attribute__ ((unused)))
- {
- #if USE_TLS
-- size_t modid;
-- union dtv pdtv, *dtvp;
--
-- LOG ("td_thr_tls_get_addr");
--
-- /* Get the DTV pointer from the thread descriptor. */
-- if (ps_pdread (th->th_ta_p->ph,
-- &((struct _pthread_descr_struct *) th->th_unique)->p_header.data.dtvp,
-- &dtvp, sizeof dtvp) != PS_OK)
-- return TD_ERR; /* XXX Other error value? */
--
- /* Read the module ID from the link_map. */
-+ size_t modid;
- if (ps_pdread (th->th_ta_p->ph,
- &((struct link_map *) map_address)->l_tls_modid,
- &modid, sizeof modid) != PS_OK)
- return TD_ERR; /* XXX Other error value? */
-
-- /* Get the corresponding entry in the DTV. */
-- if (ps_pdread (th->th_ta_p->ph, dtvp + modid,
-- &pdtv, sizeof (union dtv)) != PS_OK)
-- return TD_ERR; /* XXX Other error value? */
--
-- /* It could be that the memory for this module is not allocated for
-- the given thread. */
-- if (pdtv.pointer == TLS_DTV_UNALLOCATED)
-- /* There is not much we can do. */
-- return TD_NOTALLOC;
--
-- *address = (char *) pdtv.pointer + offset;
--
-- return TD_OK;
-+ td_err_e result = td_thr_tlsbase (th, modid, address);
-+ if (result == TD_OK)
-+ *address += offset;
-+ return result;
- #else
- return TD_ERR;
- #endif
---- glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 2003-03-15 18:09:01.000000000 -0500
-@@ -0,0 +1,67 @@
-+/* Locate TLS data for a thread.
-+ Copyright (C) 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 "thread_dbP.h"
-+
-+/* Value used for dtv entries for which the allocation is delayed. */
-+# define TLS_DTV_UNALLOCATED ((void *) -1l)
-+
-+td_err_e
-+td_thr_tlsbase (const td_thrhandle_t *th,
-+ unsigned long int modid,
-+ psaddr_t *base)
-+{
-+ if (modid < 1)
-+ return TD_NOTLS;
-+
-+#if USE_TLS
-+ union dtv pdtv, *dtvp;
-+
-+ LOG ("td_thr_tlsbase");
-+
-+ psaddr_t dtvpp = th->th_unique;
-+#if TLS_TCB_AT_TP
-+ dtvpp += offsetof (struct _pthread_descr_struct, p_header.data.dtvp);
-+#elif TLS_DTV_AT_TP
-+ dtvpp += TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv);
-+#else
-+# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined."
-+#endif
-+
-+ /* Get the DTV pointer from the thread descriptor. */
-+ if (ps_pdread (th->th_ta_p->ph, dtvpp, &dtvp, sizeof dtvp) != PS_OK)
-+ return TD_ERR; /* XXX Other error value? */
-+
-+ /* Get the corresponding entry in the DTV. */
-+ if (ps_pdread (th->th_ta_p->ph, dtvp + modid,
-+ &pdtv, sizeof (union dtv)) != PS_OK)
-+ return TD_ERR; /* XXX Other error value? */
-+
-+ /* It could be that the memory for this module is not allocated for
-+ the given thread. */
-+ if (pdtv.pointer == TLS_DTV_UNALLOCATED)
-+ return TD_TLSDEFER;
-+
-+ *base = (char *) pdtv.pointer;
-+
-+ return TD_OK;
-+#else
-+ return TD_ERR;
-+#endif
-+}
---- glibc-2.3.2/linuxthreads_db/thread_db.h 2002-09-24 19:33:07.000000000 -0400
-+++ glibc-2.3.2/linuxthreads_db/thread_db.h 2003-03-18 16:46:07.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
-+/* thread_db.h -- interface to libthread_db.so library for debugging -lpthread
-+ Copyright (C) 1999,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
-@@ -52,8 +53,10 @@
- TD_MALLOC, /* Out of memory. */
- TD_PARTIALREG, /* Not entire register set was read or written. */
- TD_NOXREGS, /* X register set not available for given thread. */
-- TD_NOTALLOC, /* TLS memory not yet allocated. */
-- TD_VERSION /* Version if libpthread and libthread_db do not match. */
-+ TD_TLSDEFER, /* Thread has not yet allocated TLS for given module. */
-+ TD_NOTALLOC = TD_TLSDEFER,
-+ TD_VERSION, /* Version if libpthread and libthread_db do not match. */
-+ TD_NOTLS /* There is TLS segment in the given module. */
- } td_err_e;
-
-
-@@ -402,6 +405,11 @@
- const void *__addr);
-
-
-+/* Get address of the given module's TLS storage area for the given thread. */
-+extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th,
-+ unsigned long int __modid,
-+ psaddr_t *__base);
-+
- /* Get address of thread local variable. */
- extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th,
- void *__map_address, size_t __offset,
---- glibc-2.3.2/locale/Makefile 2002-10-17 13:05:53.000000000 -0400
-+++ glibc-2.3.2/locale/Makefile 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991,92,1995-1999,2000,2001,2002 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1995-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
-@@ -42,7 +42,7 @@
- categories = ctype messages monetary numeric time paper name \
- address telephone measurement identification collate
- aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
-- xlocale localename global-locale
-+ xlocale localename global-locale coll-lookup
- others = localedef locale
- #others-static = localedef locale
- install-bin = localedef locale
---- glibc-2.3.2/locale/Versions 2002-08-27 21:04:45.000000000 -0400
-+++ glibc-2.3.2/locale/Versions 2003-03-15 15:02:11.000000000 -0500
-@@ -59,13 +59,12 @@
- iswcntrl_l; iswctype_l; iswdigit_l; iswgraph_l; iswlower_l;
- iswprint_l; iswpunct_l; iswspace_l; iswupper_l; iswxdigit_l;
- isxdigit_l; strcasecmp_l; strcoll_l; strfmon_l; strncasecmp_l;
-- strtod_l; strtof_l; strtol_l; strtold_l; strtoll_l; strtoul_l;
-- strtoull_l; strxfrm_l; toascii_l; tolower_l; toupper_l;
-+ strtod_l; strtof_l; strtol_l; strtold_l; strtoul_l;
-+ strxfrm_l; toascii_l; tolower_l; toupper_l;
- towctrans_l; towlower_l; towupper_l; wcscasecmp_l; wcscoll_l;
- wcsncasecmp_l; wcstod_l; wcstof_l; wcstol_l; wcstold_l;
- wcstoll_l; wcstoul_l; wcstoull_l; wcsxfrm_l; wctype_l;
- wctrans_l; nl_langinfo_l;
--
- }
- GLIBC_PRIVATE {
- # global variables
---- glibc-2.3.2/locale/coll-lookup.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/locale/coll-lookup.c 2003-06-13 16:41:58.000000000 -0400
-@@ -0,0 +1,81 @@
-+/* Copyright (C) 2000, 2003 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.
-+
-+ 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 <stdint.h>
-+
-+/* Lookup in a table of int32_t, with default value 0. */
-+int32_t
-+internal_function
-+__collidx_table_lookup (const char *table, uint32_t wc)
-+{
-+ uint32_t shift1 = ((const uint32_t *) table)[0];
-+ uint32_t index1 = wc >> shift1;
-+ uint32_t bound = ((const uint32_t *) table)[1];
-+ if (index1 < bound)
-+ {
-+ uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
-+ if (lookup1 != 0)
-+ {
-+ uint32_t shift2 = ((const uint32_t *) table)[2];
-+ uint32_t mask2 = ((const uint32_t *) table)[3];
-+ uint32_t index2 = (wc >> shift2) & mask2;
-+ uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
-+ if (lookup2 != 0)
-+ {
-+ uint32_t mask3 = ((const uint32_t *) table)[4];
-+ uint32_t index3 = wc & mask3;
-+ int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3];
-+
-+ return lookup3;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+/* Lookup in a table of uint32_t, with default value 0xffffffff. */
-+uint32_t
-+internal_function
-+__collseq_table_lookup (const char *table, uint32_t wc)
-+{
-+ uint32_t shift1 = ((const uint32_t *) table)[0];
-+ uint32_t index1 = wc >> shift1;
-+ uint32_t bound = ((const uint32_t *) table)[1];
-+ if (index1 < bound)
-+ {
-+ uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
-+ if (lookup1 != 0)
-+ {
-+ uint32_t shift2 = ((const uint32_t *) table)[2];
-+ uint32_t mask2 = ((const uint32_t *) table)[3];
-+ uint32_t index2 = (wc >> shift2) & mask2;
-+ uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
-+ if (lookup2 != 0)
-+ {
-+ uint32_t mask3 = ((const uint32_t *) table)[4];
-+ uint32_t index3 = wc & mask3;
-+ uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3];
-+
-+ return lookup3;
-+ }
-+ }
-+ }
-+ return ~((uint32_t) 0);
-+}
---- glibc-2.3.2/locale/coll-lookup.h 2001-07-07 15:21:04.000000000 -0400
-+++ glibc-2.3.2/locale/coll-lookup.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
-
-@@ -17,85 +17,12 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--/* Word tables are accessed by cutting wc in three blocks of bits:
-- - the high 32-q-p bits,
-- - the next q bits,
-- - the next p bits.
--
-- +------------------+-----+-----+
-- wc = + 32-q-p | q | p |
-- +------------------+-----+-----+
--
-- p and q are variable. For 16-bit Unicode it is sufficient to
-- choose p and q such that q+p <= 16.
--
-- The table contains the following uint32_t words:
-- - q+p,
-- - s = upper exclusive bound for wc >> (q+p),
-- - p,
-- - 2^q-1,
-- - 2^p-1,
-- - 1st-level table: s offsets, pointing into the 2nd-level table,
-- - 2nd-level table: k*2^q offsets, pointing into the 3rd-level table,
-- - 3rd-level table: j*2^p words, each containing 32 bits of data.
--*/
--
- #include <stdint.h>
-
- /* Lookup in a table of int32_t, with default value 0. */
--static inline int32_t
--collidx_table_lookup (const char *table, uint32_t wc)
--{
-- uint32_t shift1 = ((const uint32_t *) table)[0];
-- uint32_t index1 = wc >> shift1;
-- uint32_t bound = ((const uint32_t *) table)[1];
-- if (index1 < bound)
-- {
-- uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
-- if (lookup1 != 0)
-- {
-- uint32_t shift2 = ((const uint32_t *) table)[2];
-- uint32_t mask2 = ((const uint32_t *) table)[3];
-- uint32_t index2 = (wc >> shift2) & mask2;
-- uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
-- if (lookup2 != 0)
-- {
-- uint32_t mask3 = ((const uint32_t *) table)[4];
-- uint32_t index3 = wc & mask3;
-- int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3];
--
-- return lookup3;
-- }
-- }
-- }
-- return 0;
--}
-+extern int32_t __collidx_table_lookup (const char *table, uint32_t wc)
-+ internal_function;
-
- /* Lookup in a table of uint32_t, with default value 0xffffffff. */
--static inline uint32_t
--collseq_table_lookup (const char *table, uint32_t wc)
--{
-- uint32_t shift1 = ((const uint32_t *) table)[0];
-- uint32_t index1 = wc >> shift1;
-- uint32_t bound = ((const uint32_t *) table)[1];
-- if (index1 < bound)
-- {
-- uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
-- if (lookup1 != 0)
-- {
-- uint32_t shift2 = ((const uint32_t *) table)[2];
-- uint32_t mask2 = ((const uint32_t *) table)[3];
-- uint32_t index2 = (wc >> shift2) & mask2;
-- uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
-- if (lookup2 != 0)
-- {
-- uint32_t mask3 = ((const uint32_t *) table)[4];
-- uint32_t index3 = wc & mask3;
-- uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3];
--
-- return lookup3;
-- }
-- }
-- }
-- return ~((uint32_t) 0);
--}
-+extern uint32_t __collseq_table_lookup (const char *table, uint32_t wc)
-+ internal_function;
---- glibc-2.3.2/locale/findlocale.c 2002-09-01 14:02:00.000000000 -0400
-+++ glibc-2.3.2/locale/findlocale.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -28,6 +28,7 @@
-
- #include "localeinfo.h"
- #include "../iconv/gconv_charset.h"
-+#include "../iconv/gconv_int.h"
-
-
- #ifdef NL_CURRENT_INDIRECT
---- glibc-2.3.2/locale/iso-639.def 2002-08-02 16:28:38.000000000 -0400
-+++ glibc-2.3.2/locale/iso-639.def 2003-08-21 08:37:05.000000000 -0400
-@@ -6,171 +6,462 @@
- * If you find something missing or wrong contact <bug-glibc@gnu.org>
- */
-
--DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar)
- DEFINE_LANGUAGE_CODE ("Abkhazian", ab, abk, abk)
-+DEFINE_LANGUAGE_CODE3 ("Achinese", ace, ace)
-+DEFINE_LANGUAGE_CODE3 ("Acoli", ach, ach)
-+DEFINE_LANGUAGE_CODE3 ("Adangme", ada, ada)
-+DEFINE_LANGUAGE_CODE3 ("Adygei", ady, ady)
-+DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar)
-+DEFINE_LANGUAGE_CODE3 ("Afrihili", afh, afh)
- DEFINE_LANGUAGE_CODE ("Afrikaans", af, afr, afr)
-+DEFINE_LANGUAGE_CODE3 ("Afro-Asiatic (Other)", afa, afa)
-+DEFINE_LANGUAGE_CODE ("Akan", ak, aka, aka)
-+DEFINE_LANGUAGE_CODE3 ("Akkadian", akk, akk)
- DEFINE_LANGUAGE_CODE ("Albanian", sq, sqi, alb)
-+DEFINE_LANGUAGE_CODE3 ("Aleut", ale, ale)
-+DEFINE_LANGUAGE_CODE3 ("Alonquian languages", alg, alg)
-+DEFINE_LANGUAGE_CODE3 ("Altaic (Other)", tut, tut)
- DEFINE_LANGUAGE_CODE ("Amharic", am, amh, amh)
-+DEFINE_LANGUAGE_CODE3 ("Apache language", apa, apa)
- DEFINE_LANGUAGE_CODE ("Arabic", ar, ara, ara)
-+DEFINE_LANGUAGE_CODE ("Argonese", an, arg, arg)
-+DEFINE_LANGUAGE_CODE3 ("Aramaic", arc, arc)
-+DEFINE_LANGUAGE_CODE3 ("Arapaho", arp, arp)
-+DEFINE_LANGUAGE_CODE3 ("Araucanian", arn, arn)
-+DEFINE_LANGUAGE_CODE3 ("Arawak", arw, arw)
- DEFINE_LANGUAGE_CODE ("Armenian", hy, hye, arm)
-+DEFINE_LANGUAGE_CODE3 ("Artificial (Other)", art, art)
- DEFINE_LANGUAGE_CODE ("Assamese", as, asm, asm)
-+DEFINE_LANGUAGE_CODE3 ("Asturian; Bable", ast, ast)
-+DEFINE_LANGUAGE_CODE3 ("Athapascan languages", ath, ath)
-+DEFINE_LANGUAGE_CODE3 ("Australian languages", aus, aus)
-+DEFINE_LANGUAGE_CODE3 ("Austronesian (Other)", map, map)
-+DEFINE_LANGUAGE_CODE ("Avaric", av, ava, ava)
- DEFINE_LANGUAGE_CODE ("Avestan", ae, ave, ave)
-+DEFINE_LANGUAGE_CODE3 ("Awadhi", awa, awa)
- DEFINE_LANGUAGE_CODE ("Aymara", ay, aym, aym)
- DEFINE_LANGUAGE_CODE ("Azerbaijani", az, aze, aze)
-+DEFINE_LANGUAGE_CODE3 ("Balinese", ban, ban)
-+DEFINE_LANGUAGE_CODE3 ("Baltic (Other)", bat, bat)
-+DEFINE_LANGUAGE_CODE3 ("Baluchi", bal, bal)
-+DEFINE_LANGUAGE_CODE ("Bambara", bm, bam, bam)
-+DEFINE_LANGUAGE_CODE3 ("Bamileke languages", bai, bai)
-+DEFINE_LANGUAGE_CODE3 ("Banda", bad, bad)
-+DEFINE_LANGUAGE_CODE3 ("Bantu (Other)", bnt, bnt)
-+DEFINE_LANGUAGE_CODE3 ("Basa", bas, bas)
- DEFINE_LANGUAGE_CODE ("Bashkir", ba, bak, bak)
- DEFINE_LANGUAGE_CODE ("Basque", eu, eus, baq)
-+DEFINE_LANGUAGE_CODE3 ("Batak (Indonesia)", btk, btk)
-+DEFINE_LANGUAGE_CODE3 ("Beja", bej, bej)
- DEFINE_LANGUAGE_CODE ("Belarusian", be, bel, bel)
-+DEFINE_LANGUAGE_CODE3 ("Bemba", bem, bem)
- DEFINE_LANGUAGE_CODE ("Bengali", bn, ben, ben)
-+DEFINE_LANGUAGE_CODE3 ("Berber (Other)", ber, ber)
-+DEFINE_LANGUAGE_CODE3 ("Bhojpuri", bho, bho)
- DEFINE_LANGUAGE_CODE ("Bihari", bh, bih, bih)
-+DEFINE_LANGUAGE_CODE3 ("Bikol", bik, bik)
-+DEFINE_LANGUAGE_CODE3 ("Bini", bin, bin)
- DEFINE_LANGUAGE_CODE ("Bislama", bi, bis, bis)
- DEFINE_LANGUAGE_CODE ("Bosnian", bs, bos, bos)
-+DEFINE_LANGUAGE_CODE3 ("Braj", bra, bra)
- DEFINE_LANGUAGE_CODE ("Breton", br, bre, bre)
-+DEFINE_LANGUAGE_CODE3 ("Buginese", bug, bug)
- DEFINE_LANGUAGE_CODE ("Bulgarian", bg, bul, bul)
-+DEFINE_LANGUAGE_CODE3 ("Buriat", bua, bua)
- DEFINE_LANGUAGE_CODE ("Burmese", my, mya, bur)
-+DEFINE_LANGUAGE_CODE3 ("Caddo", cad, cad)
-+DEFINE_LANGUAGE_CODE3 ("Carib", car, car)
- DEFINE_LANGUAGE_CODE ("Catalan", ca, cat, cat)
-+DEFINE_LANGUAGE_CODE3 ("Caucasian (Other)", cau, cau)
-+DEFINE_LANGUAGE_CODE3 ("Cebuano", ceb, ceb)
-+DEFINE_LANGUAGE_CODE3 ("Celtic (Other)", cel, cel)
-+DEFINE_LANGUAGE_CODE3 ("Central American Indian (Other)", cai, cai)
-+DEFINE_LANGUAGE_CODE3 ("Chagatai", chg, chg)
-+DEFINE_LANGUAGE_CODE3 ("Canmic languages", cmc, cmc)
- DEFINE_LANGUAGE_CODE ("Chamorro", ch, cha, cha)
- DEFINE_LANGUAGE_CODE ("Chechen", ce, che, che)
-+DEFINE_LANGUAGE_CODE3 ("Cherokee", chr, chr)
-+DEFINE_LANGUAGE_CODE ("Chewa; Chechewa; Nyanja", ny, nya, nya)
-+DEFINE_LANGUAGE_CODE3 ("Cheyenne", chy, chy)
-+DEFINE_LANGUAGE_CODE3 ("Chibcha", chb, chb)
- DEFINE_LANGUAGE_CODE ("Chinese", zh, zho, chi)
-+DEFINE_LANGUAGE_CODE3 ("Chinook jargon", chn, chn)
-+DEFINE_LANGUAGE_CODE3 ("Chipewyan", chp, chp)
-+DEFINE_LANGUAGE_CODE3 ("Choctaw", cho, cho)
- DEFINE_LANGUAGE_CODE ("Church Slavic", cu, chu, chu)
-+DEFINE_LANGUAGE_CODE3 ("Chuukese", chk, chk)
- DEFINE_LANGUAGE_CODE ("Chuvash", cv, chv, chv)
-+DEFINE_LANGUAGE_CODE3 ("Coptic", cop, cop)
- DEFINE_LANGUAGE_CODE ("Cornish", kw, cor, cor)
- DEFINE_LANGUAGE_CODE ("Corsican", co, cos, cos)
-+DEFINE_LANGUAGE_CODE ("Cree", cr, cre, cre)
-+DEFINE_LANGUAGE_CODE3 ("Creek", mus, mus)
-+DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins (Other)", crp, crp)
-+DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, English-based (Other)", cpe, cpe)
-+DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, French-based (Other)", cpf, cpf)
-+DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, Portuguese-based (Other)", cpp, cpp)
-+DEFINE_LANGUAGE_CODE3 ("Crimean Tatar; Crimean Turkish", crh, crh)
-+DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr)
-+DEFINE_LANGUAGE_CODE3 ("Cushitic (Other)", cus, cus)
- DEFINE_LANGUAGE_CODE ("Czech", cs, ces, cze)
-+DEFINE_LANGUAGE_CODE3 ("Dakota", dak, dak)
- DEFINE_LANGUAGE_CODE ("Danish", da, dan, dan)
--DEFINE_LANGUAGE_CODE ("Dutch", nl, nld, dut)
-+DEFINE_LANGUAGE_CODE3 ("Dargwa", dar, dar)
-+DEFINE_LANGUAGE_CODE3 ("Dayak", day, day)
-+DEFINE_LANGUAGE_CODE3 ("Delaware", del, del)
-+DEFINE_LANGUAGE_CODE3 ("Dinka", din, din)
-+DEFINE_LANGUAGE_CODE ("Divehi", dv, div, div)
-+DEFINE_LANGUAGE_CODE3 ("Dogri", doi, doi)
-+DEFINE_LANGUAGE_CODE3 ("Dogrib", dgr, dgr)
-+DEFINE_LANGUAGE_CODE3 ("Dravidian (Other)", dra, dra)
-+DEFINE_LANGUAGE_CODE3 ("Duala", dua, dua)
-+DEFINE_LANGUAGE_CODE ("Dutch; Flemish", nl, nld, dut)
-+DEFINE_LANGUAGE_CODE3 ("Dutch, Middle", dum, dum)
-+DEFINE_LANGUAGE_CODE3 ("Dyula", dyu, dyu)
- DEFINE_LANGUAGE_CODE ("Dzongkha", dz, dzo, dzo)
-+DEFINE_LANGUAGE_CODE3 ("Efik", efi, efi)
-+DEFINE_LANGUAGE_CODE3 ("Egyptian (Ancient)", egy, egy)
-+DEFINE_LANGUAGE_CODE3 ("Ekajuk", eka, eka)
-+DEFINE_LANGUAGE_CODE3 ("Elamite", elx, elx)
- DEFINE_LANGUAGE_CODE ("English", en, eng, eng)
-+DEFINE_LANGUAGE_CODE3 ("English, Middle", enm, enm)
-+DEFINE_LANGUAGE_CODE3 ("English, Old", ang, ang)
-+DEFINE_LANGUAGE_CODE3 ("Erzya", myv, myv)
- DEFINE_LANGUAGE_CODE ("Esperanto", eo, epo, epo)
- DEFINE_LANGUAGE_CODE ("Estonian", et, est, est)
-+DEFINE_LANGUAGE_CODE ("Ewe", ee, ewe, ewe)
-+DEFINE_LANGUAGE_CODE3 ("Ewondo", ewo, ewo)
-+DEFINE_LANGUAGE_CODE3 ("Fang", fan, fan)
-+DEFINE_LANGUAGE_CODE3 ("Fanti", fat, fat)
- DEFINE_LANGUAGE_CODE ("Faroese", fo, fao, fao)
- DEFINE_LANGUAGE_CODE ("Fijian", fj, fij, fij)
- DEFINE_LANGUAGE_CODE ("Finnish", fi, fin, fin)
-+DEFINE_LANGUAGE_CODE3 ("Finno-Ugrian (Other)", fiu, fiu)
-+DEFINE_LANGUAGE_CODE3 ("Fon", fon, fon)
- DEFINE_LANGUAGE_CODE ("French", fr, fra, fre)
-+DEFINE_LANGUAGE_CODE3 ("French, Middle", frm, frm)
-+DEFINE_LANGUAGE_CODE3 ("French, Old", fro, fro)
- DEFINE_LANGUAGE_CODE ("Frisian", fy, fry, fry)
--DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo)
--DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
-+DEFINE_LANGUAGE_CODE3 ("Friulian", fur, fur)
-+DEFINE_LANGUAGE_CODE ("Fulah", ff, ful, ful)
-+DEFINE_LANGUAGE_CODE3 ("Ga", gaa, gaa)
- DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gd, gla, gla)
--DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle)
- DEFINE_LANGUAGE_CODE ("Gallegan", gl, glg, glg)
--DEFINE_LANGUAGE_CODE3 ("Ganda", lug, lug)
--DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv)
--DEFINE_LANGUAGE_CODE ("Greek, Modern ()", el, gre, ell)
-+DEFINE_LANGUAGE_CODE ("Ganda", lg, lug, lug)
-+DEFINE_LANGUAGE_CODE3 ("Gayo", gay, gay)
-+DEFINE_LANGUAGE_CODE3 ("Gbaya", gba, gba)
-+DEFINE_LANGUAGE_CODE3 ("Geez", gez, gez)
-+DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo)
-+DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
-+DEFINE_LANGUAGE_CODE3 ("German, Low; Saxon, Low", nds, nds)
-+DEFINE_LANGUAGE_CODE3 ("German, Middle High", gmh, gmh)
-+DEFINE_LANGUAGE_CODE3 ("German, Old High", goh, goh)
-+DEFINE_LANGUAGE_CODE3 ("Germanic (Other)", gem, gem)
-+DEFINE_LANGUAGE_CODE ("Gikuyu; Kikuyu", ki, kik, kik)
-+DEFINE_LANGUAGE_CODE3 ("Gilbertese", gil, gil)
-+DEFINE_LANGUAGE_CODE3 ("Gondi", gon, gon)
-+DEFINE_LANGUAGE_CODE3 ("Gorontalo", gor, gor)
-+DEFINE_LANGUAGE_CODE3 ("Gothic", got, got)
-+DEFINE_LANGUAGE_CODE3 ("Grebo", grb, grb)
-+DEFINE_LANGUAGE_CODE3 ("Greek, Ancient", grc, grc)
-+DEFINE_LANGUAGE_CODE ("Greek, Modern", el, gre, ell)
- DEFINE_LANGUAGE_CODE ("Guarani", gn, grn, grn)
- DEFINE_LANGUAGE_CODE ("Gujarati", gu, guj, guj)
-+DEFINE_LANGUAGE_CODE3 ("Gwich´in", gwi, gwi)
-+DEFINE_LANGUAGE_CODE3 ("Haida", hai, hai)
-+DEFINE_LANGUAGE_CODE ("Haitian; Haitian Creole", ht, hat, hat)
-+DEFINE_LANGUAGE_CODE ("Hausa", ha, hau, hau)
-+DEFINE_LANGUAGE_CODE3 ("Hawaiian", haw, haw)
- DEFINE_LANGUAGE_CODE ("Hebrew", he, heb, heb)
- DEFINE_LANGUAGE_CODE ("Herero", hz, her, her)
-+DEFINE_LANGUAGE_CODE3 ("Hiligaynon", hil, hil)
-+DEFINE_LANGUAGE_CODE3 ("Himachali", him, him)
- DEFINE_LANGUAGE_CODE ("Hindi", hi, hin, hin)
- DEFINE_LANGUAGE_CODE ("Hiri Motu", ho, hmo, hmo)
-+DEFINE_LANGUAGE_CODE3 ("Hittite", hit, hit)
-+DEFINE_LANGUAGE_CODE3 ("Hmong", hmn, hmn)
- DEFINE_LANGUAGE_CODE ("Hungarian", hu, hun, hun)
-+DEFINE_LANGUAGE_CODE3 ("Hupa", hup, hup)
-+DEFINE_LANGUAGE_CODE3 ("Iban", iba, iba)
- DEFINE_LANGUAGE_CODE ("Icelandic", is, isl, ice)
--DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku)
--DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile)
--DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina)
-+DEFINE_LANGUAGE_CODE ("Ido", io, ido, ido)
-+DEFINE_LANGUAGE_CODE ("Igbo", ig, ibo, ibo)
-+DEFINE_LANGUAGE_CODE3 ("Ijo", ijo, ijo)
-+DEFINE_LANGUAGE_CODE3 ("Iloko", ilo, ilo)
-+DEFINE_LANGUAGE_CODE3 ("Inari Sami", smn, smn)
-+DEFINE_LANGUAGE_CODE3 ("Indic (Other)", inc, inc)
-+DEFINE_LANGUAGE_CODE3 ("Indo-European (Other)", ine, ine)
- DEFINE_LANGUAGE_CODE ("Indonesian", id, ind, ind)
-+DEFINE_LANGUAGE_CODE3 ("Ingush", inh, inh)
-+DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina)
-+DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile)
-+DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku)
- DEFINE_LANGUAGE_CODE ("Inupiaq", ik, ipk, ipk)
-+DEFINE_LANGUAGE_CODE3 ("Iranian (Other)", ira, ira)
-+DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle)
-+DEFINE_LANGUAGE_CODE3 ("Irish, Middle", mga, mga)
-+DEFINE_LANGUAGE_CODE3 ("Irish, Old", sga, sga)
-+DEFINE_LANGUAGE_CODE3 ("Iroquoian languages", iro, iro)
- DEFINE_LANGUAGE_CODE ("Italian", it, ita, ita)
--DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav)
- DEFINE_LANGUAGE_CODE ("Japanese", ja, jpn, jpn)
-+DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav)
-+DEFINE_LANGUAGE_CODE3 ("Judeo-Arabic", jrb, jrb)
-+DEFINE_LANGUAGE_CODE3 ("Judeo-Persian", jpr, jpr)
-+DEFINE_LANGUAGE_CODE3 ("Kabardian", kbd, kbd)
-+DEFINE_LANGUAGE_CODE3 ("Kabyle", kab, kab)
-+DEFINE_LANGUAGE_CODE3 ("Kachin", kac, kac)
- DEFINE_LANGUAGE_CODE ("Kalaallisut (Greenlandic)", kl, kal, kal)
-+DEFINE_LANGUAGE_CODE3 ("Kamba", kam, kam)
- DEFINE_LANGUAGE_CODE ("Kannada", kn, kan, kan)
-+DEFINE_LANGUAGE_CODE ("Kanuri", kr, kau, kau)
-+DEFINE_LANGUAGE_CODE3 ("Karachay-Balkar", krc, krc)
-+DEFINE_LANGUAGE_CODE3 ("Kara-Kalpak", kaa, kaa)
-+DEFINE_LANGUAGE_CODE3 ("Karen", kar, kar)
- DEFINE_LANGUAGE_CODE ("Kashmiri", ks, kas, kas)
-+DEFINE_LANGUAGE_CODE3 ("Kashubian", csb, csb)
-+DEFINE_LANGUAGE_CODE3 ("Kawi", kaw, kaw)
- DEFINE_LANGUAGE_CODE ("Kazakh", kk, kaz, kaz)
-+DEFINE_LANGUAGE_CODE3 ("Khasi", kha, kha)
- DEFINE_LANGUAGE_CODE ("Khmer", km, khm, khm)
-+DEFINE_LANGUAGE_CODE3 ("Khoisan (Other)", khi, khi)
-+DEFINE_LANGUAGE_CODE3 ("Khotanese", kho, kho)
- DEFINE_LANGUAGE_CODE ("Kikuyu", ki, kik, kik)
-+DEFINE_LANGUAGE_CODE3 ("Kimbundu", kmb, kmb)
- DEFINE_LANGUAGE_CODE ("Kinyarwanda", rw, kin, kin)
- DEFINE_LANGUAGE_CODE ("Kirghiz", ky, kir, kir)
- DEFINE_LANGUAGE_CODE ("Komi", kv, kom, kom)
-+DEFINE_LANGUAGE_CODE ("Kongo", kg, kon, kon)
-+DEFINE_LANGUAGE_CODE3 ("Konkani", kok, kok)
- DEFINE_LANGUAGE_CODE ("Korean", ko, kor, kor)
-+DEFINE_LANGUAGE_CODE3 ("Kosraean", kos, kos)
-+DEFINE_LANGUAGE_CODE3 ("Kpelle", kpe, kpe)
-+DEFINE_LANGUAGE_CODE3 ("Kru", kro, kro)
- DEFINE_LANGUAGE_CODE ("Kuanyama", kj, kua, kua)
-+DEFINE_LANGUAGE_CODE3 ("Kumyk", kum, kum)
- DEFINE_LANGUAGE_CODE ("Kurdish", ku, kur, kur)
-+DEFINE_LANGUAGE_CODE3 ("Kurukh", kru, kru)
-+DEFINE_LANGUAGE_CODE3 ("Kutenai", kut, kut)
-+DEFINE_LANGUAGE_CODE3 ("Ladino", lad, lad)
-+DEFINE_LANGUAGE_CODE3 ("Lahnda", lah, lah)
-+DEFINE_LANGUAGE_CODE3 ("Lamba", lam, lam)
- DEFINE_LANGUAGE_CODE ("Lao", lo, lao, lao)
- DEFINE_LANGUAGE_CODE ("Latin", la, lat, lat)
- DEFINE_LANGUAGE_CODE ("Latvian", lv, lav, lav)
-+DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz)
-+DEFINE_LANGUAGE_CODE3 ("Lezghian", lez, lez)
-+DEFINE_LANGUAGE_CODE ("Limburgan; Limburger; Limburgish", li, lim, lim)
- DEFINE_LANGUAGE_CODE ("Lingala", ln, lin, lin)
- DEFINE_LANGUAGE_CODE ("Lithuanian", lt, lit, lit)
--DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz)
-+DEFINE_LANGUAGE_CODE3 ("Lozi", loz, loz)
-+DEFINE_LANGUAGE_CODE ("Luba-Katanga", lu, lub, lub)
-+DEFINE_LANGUAGE_CODE3 ("Luba-Lulua", lua, lua)
-+DEFINE_LANGUAGE_CODE3 ("Luiseno", lui, lui)
-+DEFINE_LANGUAGE_CODE3 ("Lule Sami", smj, smj)
-+DEFINE_LANGUAGE_CODE3 ("Lunda", lun, lun)
-+DEFINE_LANGUAGE_CODE3 ("Luo (Kenya and Tanzania)", luo, luo)
-+DEFINE_LANGUAGE_CODE3 ("Lushai", lus, lus)
- DEFINE_LANGUAGE_CODE ("Macedonian", mk, mkd, mac)
--DEFINE_LANGUAGE_CODE ("Marshall", mh, mah, mah)
-+DEFINE_LANGUAGE_CODE3 ("Madurese", mad, mad)
-+DEFINE_LANGUAGE_CODE3 ("Magahi", mag, mag)
-+DEFINE_LANGUAGE_CODE3 ("Maithili", mai, mai)
-+DEFINE_LANGUAGE_CODE3 ("Makasar", mak, mak)
-+DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg)
-+DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
- DEFINE_LANGUAGE_CODE ("Malayalam", ml, mal, mal)
-+DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt)
-+DEFINE_LANGUAGE_CODE3 ("Manchu", mnc, mnc)
-+DEFINE_LANGUAGE_CODE3 ("Mandar", mdr, mdr)
-+DEFINE_LANGUAGE_CODE3 ("Mandingo", man, man)
-+DEFINE_LANGUAGE_CODE3 ("Manipuri", mni, mni)
-+DEFINE_LANGUAGE_CODE3 ("Manobo languages", mno, mno)
-+DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv)
- DEFINE_LANGUAGE_CODE ("Maori", mi, mri, mao)
- DEFINE_LANGUAGE_CODE ("Marathi", mr, mar, mar)
--DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
--DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg)
--DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt)
-+DEFINE_LANGUAGE_CODE3 ("Mari", chm, chm)
-+DEFINE_LANGUAGE_CODE ("Marshallese", mh, mah, mah)
-+DEFINE_LANGUAGE_CODE3 ("Marwari", mwr, mwr)
-+DEFINE_LANGUAGE_CODE3 ("Masai", mas, mas)
-+DEFINE_LANGUAGE_CODE3 ("Mayan languages", myn, myn)
-+DEFINE_LANGUAGE_CODE3 ("Mende", men, men)
-+DEFINE_LANGUAGE_CODE3 ("Micmac", mic, mic)
-+DEFINE_LANGUAGE_CODE3 ("Minangkabau", min, min)
-+DEFINE_LANGUAGE_CODE3 ("Miscellaneous languages", mis, mis)
-+DEFINE_LANGUAGE_CODE3 ("Mohawk", moh, moh)
-+DEFINE_LANGUAGE_CODE3 ("Moksha", mdf, mdf)
- DEFINE_LANGUAGE_CODE ("Moldavian", mo, mol, mol)
-+DEFINE_LANGUAGE_CODE3 ("Mon-Khmer (Other)", mkh, mkh)
-+DEFINE_LANGUAGE_CODE3 ("Mongo", lol, lol)
- DEFINE_LANGUAGE_CODE ("Mongolian", mn, mon, mon)
-+DEFINE_LANGUAGE_CODE3 ("Mossi", mos, mos)
-+DEFINE_LANGUAGE_CODE3 ("Munda languages", mun, mun)
-+DEFINE_LANGUAGE_CODE3 ("Nahuatl", nah, nah)
- DEFINE_LANGUAGE_CODE ("Nauru", na, nau, nau)
- DEFINE_LANGUAGE_CODE ("Navajo", nv, nav, nav)
--DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl)
- DEFINE_LANGUAGE_CODE ("Ndebele, North", nd, nde, nde)
-+DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl)
- DEFINE_LANGUAGE_CODE ("Ndonga", ng, ndo, ndo)
-+DEFINE_LANGUAGE_CODE3 ("Neapolitan", nap, nap)
- DEFINE_LANGUAGE_CODE ("Nepali", ne, nep, nep)
-+DEFINE_LANGUAGE_CODE3 ("Newari", new, new)
-+DEFINE_LANGUAGE_CODE3 ("Nias", nia, nia)
-+DEFINE_LANGUAGE_CODE3 ("Niger-Kordofanian (Other)", nic, nic)
-+DEFINE_LANGUAGE_CODE3 ("Nilo-Saharan (Other)", ssa, ssa)
-+DEFINE_LANGUAGE_CODE3 ("Niuean", niu, niu)
-+DEFINE_LANGUAGE_CODE3 ("Nogai", nog, nog)
-+DEFINE_LANGUAGE_CODE3 ("Norse, Old", non, non)
-+DEFINE_LANGUAGE_CODE3 ("North American Indian (Other)", nai, nai)
-+DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme)
- DEFINE_LANGUAGE_CODE ("Norwegian", no, nor, nor)
--DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno)
- DEFINE_LANGUAGE_CODE ("Norwegian Bokmål", nb, nob, nob)
--DEFINE_LANGUAGE_CODE ("Chichewa; Nyanja", ny, nya, nya)
--DEFINE_LANGUAGE_CODE ("Occitan (post 1500); Provençal", oc, oci, oci)
-+DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno)
-+DEFINE_LANGUAGE_CODE3 ("Nubian languages", nub, nub)
-+DEFINE_LANGUAGE_CODE3 ("Nyamwezi", nym, nym)
-+DEFINE_LANGUAGE_CODE3 ("Nyankole", nyn, nyn)
-+DEFINE_LANGUAGE_CODE3 ("Nyoro", nyo, nyo)
-+DEFINE_LANGUAGE_CODE3 ("Nzima", nzi, nzi)
-+DEFINE_LANGUAGE_CODE ("Ojibwa", oj, oji, oji)
- DEFINE_LANGUAGE_CODE ("Oriya", or, ori, ori)
- DEFINE_LANGUAGE_CODE ("Oromo", om, orm, orm)
-+DEFINE_LANGUAGE_CODE3 ("Osage", osa, osa)
- DEFINE_LANGUAGE_CODE ("Ossetian; Ossetic", os, oss, oss)
-+DEFINE_LANGUAGE_CODE3 ("Otomian languages", oto, oto)
-+DEFINE_LANGUAGE_CODE3 ("Pahlavi", pal, pal)
-+DEFINE_LANGUAGE_CODE3 ("Palauan", pau, pau)
-+DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli)
-+DEFINE_LANGUAGE_CODE3 ("Pampanga", pam, pam)
-+DEFINE_LANGUAGE_CODE3 ("Pangasinan", pag, pag)
- DEFINE_LANGUAGE_CODE ("Panjabi", pa, pan, pan)
-+DEFINE_LANGUAGE_CODE3 ("Papiamento", pap, pap)
-+DEFINE_LANGUAGE_CODE3 ("Papuan (Other)", paa, paa)
- DEFINE_LANGUAGE_CODE ("Persian", fa, fas, per)
--DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli)
-+DEFINE_LANGUAGE_CODE3 ("Persian, Old (ca.600-400 B.C.E.)", peo, peo)
-+DEFINE_LANGUAGE_CODE3 ("Philippine (Other)", phi, phi)
-+DEFINE_LANGUAGE_CODE3 ("Phoenician", phn, phn)
-+DEFINE_LANGUAGE_CODE3 ("Pohnpeian", pon, pon)
- DEFINE_LANGUAGE_CODE ("Polish", pl, pol, pol)
- DEFINE_LANGUAGE_CODE ("Portuguese", pt, por, por)
-+DEFINE_LANGUAGE_CODE3 ("Prakrit", pra, pra)
-+DEFINE_LANGUAGE_CODE ("Provençal; Occitan (post 1500)", oc, oci, oci)
-+DEFINE_LANGUAGE_CODE3 ("Provençal, Old (to 1500)", pro, pro)
- DEFINE_LANGUAGE_CODE ("Pushto", ps, pus, pus)
- DEFINE_LANGUAGE_CODE ("Quechua", qu, que, que)
- DEFINE_LANGUAGE_CODE ("Raeto-Romance", rm, roh, roh)
-+DEFINE_LANGUAGE_CODE3 ("Rajasthani", raj, raj)
-+DEFINE_LANGUAGE_CODE3 ("Rapanui", rap, rap)
-+DEFINE_LANGUAGE_CODE3 ("Rarotongan", rar, rar)
-+DEFINE_LANGUAGE_CODE3 ("Romance (Other)", roa, roa)
- DEFINE_LANGUAGE_CODE ("Romanian", ro, ron, rum)
-+DEFINE_LANGUAGE_CODE3 ("Romany", rom, rom)
- DEFINE_LANGUAGE_CODE ("Rundi", rn, run, run)
- DEFINE_LANGUAGE_CODE ("Russian", ru, rus, rus)
-+DEFINE_LANGUAGE_CODE3 ("Salishan languages", sal, sal)
-+DEFINE_LANGUAGE_CODE3 ("Samaritan Aramaic", sam, sam)
-+DEFINE_LANGUAGE_CODE3 ("Sami languages (Other)", smi, smi)
-+DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo)
-+DEFINE_LANGUAGE_CODE3 ("Sandawe", sad, sad)
- DEFINE_LANGUAGE_CODE ("Sango", sg, sag, sag)
- DEFINE_LANGUAGE_CODE ("Sanskrit", sa, san, san)
-+DEFINE_LANGUAGE_CODE3 ("Santali", sat, sat)
-+DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd)
-+DEFINE_LANGUAGE_CODE3 ("Sasak", sas, sas)
-+DEFINE_LANGUAGE_CODE3 ("Scots", sco, sco)
-+DEFINE_LANGUAGE_CODE3 ("Selkup", sel, sel)
-+DEFINE_LANGUAGE_CODE3 ("Semitic (Other)", sem, sem)
- DEFINE_LANGUAGE_CODE ("Serbian", sr, srp, scc)
--DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr)
-+DEFINE_LANGUAGE_CODE3 ("Serer", srr, srr)
-+DEFINE_LANGUAGE_CODE3 ("Shan", shn, shn)
-+DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna)
-+DEFINE_LANGUAGE_CODE ("Sichuan Yi", ii, iii, iii)
-+DEFINE_LANGUAGE_CODE3 ("Sidamo", sid, sid)
-+DEFINE_LANGUAGE_CODE3 ("Siksika", bla, bla)
-+DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd)
- DEFINE_LANGUAGE_CODE ("Sinhalese", si, sin, sin)
-+DEFINE_LANGUAGE_CODE3 ("Sino-Tibetan (Other)", sit, sit)
-+DEFINE_LANGUAGE_CODE3 ("Siouan languages", sio, sio)
-+DEFINE_LANGUAGE_CODE3 ("Skolt Sami", sms, sms)
-+DEFINE_LANGUAGE_CODE3 ("Slave (Athapascan)", den, den)
-+DEFINE_LANGUAGE_CODE3 ("Slavic (Other)", sla, sla)
- DEFINE_LANGUAGE_CODE ("Slovak", sk, slk, slo)
- DEFINE_LANGUAGE_CODE ("Slovenian", sl, slv, slv)
--DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme)
--DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo)
--DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna)
--DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd)
-+DEFINE_LANGUAGE_CODE3 ("Sogdian", sog, sog)
- DEFINE_LANGUAGE_CODE ("Somali", so, som, som)
-+DEFINE_LANGUAGE_CODE3 ("Songhai", son, son)
-+DEFINE_LANGUAGE_CODE3 ("Soninke", snk, snk)
-+DEFINE_LANGUAGE_CODE3 ("Sorbian languages", wen, wen)
- DEFINE_LANGUAGE_CODE3 ("Sotho, Northern", nso, nso)
- DEFINE_LANGUAGE_CODE ("Sotho, Southern", st, sot, sot)
-+DEFINE_LANGUAGE_CODE3 ("South American Indian (Other)", sai, sai)
-+DEFINE_LANGUAGE_CODE3 ("Southern Sami", sma, sma)
- DEFINE_LANGUAGE_CODE ("Spanish", es, spa, spa)
--DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd)
--DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw)
-+DEFINE_LANGUAGE_CODE3 ("Sukuma", suk, suk)
-+DEFINE_LANGUAGE_CODE3 ("Sumerian", sux, sux)
- DEFINE_LANGUAGE_CODE ("Sundanese", su, sun, sun)
-+DEFINE_LANGUAGE_CODE3 ("Susu", sus, sus)
- DEFINE_LANGUAGE_CODE ("Swahili", sw, swa, swa)
-+DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw)
- DEFINE_LANGUAGE_CODE ("Swedish", sv, swe, swe)
-+DEFINE_LANGUAGE_CODE3 ("Syriac", syr, syr)
-+DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl)
- DEFINE_LANGUAGE_CODE ("Tahitian", ty, tah, tah)
-+DEFINE_LANGUAGE_CODE3 ("Tai (Other)", tai, tai)
-+DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk)
-+DEFINE_LANGUAGE_CODE3 ("Tamashek", tmh, tmh)
- DEFINE_LANGUAGE_CODE ("Tamil", ta, tam, tam)
- DEFINE_LANGUAGE_CODE ("Tatar", tt, tat, tat)
- DEFINE_LANGUAGE_CODE ("Telugu", te, tel, tel)
--DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk)
--DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl)
-+DEFINE_LANGUAGE_CODE3 ("Tereno", ter, ter)
-+DEFINE_LANGUAGE_CODE3 ("Tetum", tet, tet)
- DEFINE_LANGUAGE_CODE ("Thai", th, tha, tha)
- DEFINE_LANGUAGE_CODE ("Tibetan", bo, bod, tib)
-+DEFINE_LANGUAGE_CODE3 ("Tigre", tig, tig)
- DEFINE_LANGUAGE_CODE ("Tigrinya", ti, tir, tir)
-+DEFINE_LANGUAGE_CODE3 ("Timne", tem, tem)
-+DEFINE_LANGUAGE_CODE3 ("Tiv", tiv, tiv)
-+DEFINE_LANGUAGE_CODE3 ("Tlingit", tli, tli)
-+DEFINE_LANGUAGE_CODE3 ("Tok Pisin", tpi, tpi)
-+DEFINE_LANGUAGE_CODE3 ("Tokelau", tkl, tkl)
-+DEFINE_LANGUAGE_CODE3 ("Tonga (Nyasa)", tog, tog)
- DEFINE_LANGUAGE_CODE ("Tonga (Tonga Islands)", to, ton, ton)
--DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn)
-+DEFINE_LANGUAGE_CODE3 ("Tsimshian", tsi, tsi)
- DEFINE_LANGUAGE_CODE ("Tsonga", ts, tso, tso)
-+DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn)
-+DEFINE_LANGUAGE_CODE3 ("Tumbuka", tum, tum)
-+DEFINE_LANGUAGE_CODE3 ("Tupi languages", tup, tup)
- DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur)
-+DEFINE_LANGUAGE_CODE3 ("Turkish, Ottoman (1500-1928)", ota, ota)
- DEFINE_LANGUAGE_CODE ("Turkmen", tk, tuk, tuk)
-+DEFINE_LANGUAGE_CODE3 ("Tuvalu", tvl, tvl)
-+DEFINE_LANGUAGE_CODE3 ("Tuvinian", tyv, tyv)
- DEFINE_LANGUAGE_CODE ("Twi", tw, twi, twi)
-+DEFINE_LANGUAGE_CODE3 ("Udmurt", udm, udm)
-+DEFINE_LANGUAGE_CODE3 ("Ugaritic", uga, uga)
- DEFINE_LANGUAGE_CODE ("Uighur", ug, uig, uig)
- DEFINE_LANGUAGE_CODE ("Ukrainian", uk, ukr, ukr)
-+DEFINE_LANGUAGE_CODE3 ("Umbundu", umb, umb)
- DEFINE_LANGUAGE_CODE ("Urdu", ur, urd, urd)
- DEFINE_LANGUAGE_CODE ("Uzbek", uz, uzb, uzb)
-+DEFINE_LANGUAGE_CODE3 ("Vai", vai, vai)
- DEFINE_LANGUAGE_CODE3 ("Venda", ven, ven)
- DEFINE_LANGUAGE_CODE ("Vietnamese", vi, vie, vie)
- DEFINE_LANGUAGE_CODE ("Volapük", vo, vol, vol)
-+DEFINE_LANGUAGE_CODE3 ("Votic", vot, vot)
-+DEFINE_LANGUAGE_CODE3 ("Wakashan languages", wak, wak)
-+DEFINE_LANGUAGE_CODE3 ("Walamo", wal, wal)
- DEFINE_LANGUAGE_CODE ("Walloon", wa, wln, wln)
-+DEFINE_LANGUAGE_CODE3 ("Waray", war, war)
-+DEFINE_LANGUAGE_CODE3 ("Washo", was, was)
- DEFINE_LANGUAGE_CODE ("Welsh", cy, cym, wel)
- DEFINE_LANGUAGE_CODE ("Wolof", wo, wol, wol)
- DEFINE_LANGUAGE_CODE ("Xhosa", xh, xho, xho)
-+DEFINE_LANGUAGE_CODE3 ("Yakut", sah, sah)
-+DEFINE_LANGUAGE_CODE3 ("Yao", yao, yao)
-+DEFINE_LANGUAGE_CODE3 ("Yapese", yap, yap)
- DEFINE_LANGUAGE_CODE ("Yiddish", yi, yid, yid)
- DEFINE_LANGUAGE_CODE ("Yoruba", yo, yor, yor)
-+DEFINE_LANGUAGE_CODE3 ("Yupik languages", ypk, ypk)
-+DEFINE_LANGUAGE_CODE3 ("Zande", znd, znd)
-+DEFINE_LANGUAGE_CODE3 ("Zapotec", zap, zap)
-+DEFINE_LANGUAGE_CODE3 ("Zenaga", zen, zen)
- DEFINE_LANGUAGE_CODE ("Zhuang", za, zha, zha)
- DEFINE_LANGUAGE_CODE ("Zulu", zu, zul, zul)
-+DEFINE_LANGUAGE_CODE3 ("Zuni", zun, zun)
---- glibc-2.3.2/locale/loadarchive.c 2002-11-05 14:11:23.000000000 -0500
-+++ glibc-2.3.2/locale/loadarchive.c 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Code to load locale data from the locale archive file.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -32,6 +32,7 @@
-
- #include "localeinfo.h"
- #include "locarchive.h"
-+#include <not-cancel.h>
-
- /* Define the hash function. We define the function as static inline. */
- #define compute_hashval static inline compute_hashval
-@@ -202,7 +203,7 @@
- archmapped = &headmap;
-
- /* The archive has never been opened. */
-- fd = __open64 (archfname, O_RDONLY);
-+ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE);
- if (fd < 0)
- /* Cannot open the archive, for whatever reason. */
- return NULL;
-@@ -212,7 +213,7 @@
- /* stat failed, very strange. */
- close_and_out:
- if (fd >= 0)
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return NULL;
- }
-
-@@ -252,7 +253,7 @@
- {
- /* We've mapped the whole file already, so we can be
- sure we won't need this file descriptor later. */
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- fd = -1;
- }
-
-@@ -393,7 +394,7 @@
- if (fd == -1)
- {
- struct stat64 st;
-- fd = __open64 (archfname, O_RDONLY);
-+ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE);
- if (fd == -1)
- /* Cannot open the archive, for whatever reason. */
- return NULL;
-@@ -446,7 +447,7 @@
-
- /* We don't need the file descriptor any longer. */
- if (fd >= 0)
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- fd = -1;
-
- /* We succeeded in mapping all the necessary regions of the archive.
---- glibc-2.3.2/locale/loadlocale.c 2002-08-28 20:40:34.000000000 -0400
-+++ glibc-2.3.2/locale/loadlocale.c 2003-09-19 22:37:04.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Functions to read locale data files.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -30,6 +30,7 @@
- #endif
- #include <sys/stat.h>
-
-+#include <not-cancel.h>
- #include "localeinfo.h"
-
-
-@@ -142,7 +143,7 @@
- file->decided = 1;
- file->data = NULL;
-
-- fd = __open (file->filename, O_RDONLY);
-+ fd = open_not_cancel_2 (file->filename, O_RDONLY);
- if (__builtin_expect (fd, 0) < 0)
- /* Cannot open the file. */
- return;
-@@ -150,7 +151,7 @@
- if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
- {
- puntfd:
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return;
- }
- if (__builtin_expect (S_ISDIR (st.st_mode), 0))
-@@ -160,7 +161,7 @@
- char *newp;
- size_t filenamelen;
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- filenamelen = strlen (file->filename);
- newp = (char *) alloca (filenamelen
-@@ -170,7 +171,7 @@
- _nl_category_names[category],
- _nl_category_name_sizes[category] + 1);
-
-- fd = __open (newp, O_RDONLY);
-+ fd = open_not_cancel_2 (newp, O_RDONLY);
- if (__builtin_expect (fd, 0) < 0)
- return;
-
-@@ -206,7 +207,7 @@
- char *p = (char *) filedata;
- while (to_read > 0)
- {
-- nread = __read (fd, p, to_read);
-+ nread = read_not_cancel (fd, p, to_read);
- if (__builtin_expect (nread, 1) <= 0)
- {
- free (filedata);
-@@ -225,7 +226,7 @@
- #endif /* _POSIX_MAPPED_FILES */
-
- /* We have mapped the data, so we no longer need the descriptor. */
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- if (__builtin_expect (filedata == NULL, 0))
- /* We failed to map or read the data. */
---- glibc-2.3.2/locale/programs/3level.h 2001-08-07 14:51:49.000000000 -0400
-+++ glibc-2.3.2/locale/programs/3level.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000-2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
-
-@@ -80,6 +80,7 @@
-
- /* Retrieve an entry. */
- static inline ELEMENT
-+__attribute ((always_inline))
- CONCAT(TABLE,_get) (struct TABLE *t, uint32_t wc)
- {
- uint32_t index1 = wc >> (t->q + t->p);
---- glibc-2.3.2/locale/programs/ld-collate.c 2002-05-01 12:44:51.000000000 -0400
-+++ glibc-2.3.2/locale/programs/ld-collate.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
-
-@@ -42,6 +42,7 @@
- #define obstack_chunk_free free
-
- static inline void
-+__attribute ((always_inline))
- obstack_int32_grow (struct obstack *obstack, int32_t data)
- {
- if (sizeof (int32_t) == sizeof (int))
-@@ -51,6 +52,7 @@
- }
-
- static inline void
-+__attribute ((always_inline))
- obstack_int32_grow_fast (struct obstack *obstack, int32_t data)
- {
- if (sizeof (int32_t) == sizeof (int))
-@@ -249,6 +251,7 @@
-
- /* We need UTF-8 encoding of numbers. */
- static inline int
-+__attribute ((always_inline))
- utf8_encode (char *buf, int val)
- {
- int retval;
-@@ -606,10 +609,10 @@
- find_element (struct linereader *ldfile, struct locale_collate_t *collate,
- const char *str, size_t len)
- {
-- struct element_t *result = NULL;
-+ void *result = NULL;
-
- /* Search for the entries among the collation sequences already define. */
-- if (find_entry (&collate->seq_table, str, len, (void **) &result) != 0)
-+ if (find_entry (&collate->seq_table, str, len, &result) != 0)
- {
- /* Nope, not define yet. So we see whether it is a
- collation symbol. */
-@@ -625,8 +628,7 @@
- result = sym->order = new_element (collate, NULL, 0, NULL,
- NULL, 0, 0);
- }
-- else if (find_entry (&collate->elem_table, str, len,
-- (void **) &result) != 0)
-+ else if (find_entry (&collate->elem_table, str, len, &result) != 0)
- {
- /* It's also no collation element. So it is a character
- element defined later. */
-@@ -636,7 +638,7 @@
- }
- }
-
-- return result;
-+ return (struct element_t *) result;
- }
-
-
-@@ -944,8 +946,8 @@
- {
- /* It's no character, so look through the collation elements and
- symbol list. */
-- if (find_entry (&collate->elem_table, symstr, symlen,
-- (void **) &elem) != 0)
-+ void *ptr = elem;
-+ if (find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0)
- {
- void *result;
- struct symbol_t *sym = NULL;
-@@ -976,12 +978,15 @@
- insert_entry (&collate->seq_table, symstr, symlen, elem);
- }
- }
-+ else
-+ /* Copy the result back. */
-+ elem = ptr;
- }
- else
- {
- /* Otherwise the symbols stands for a character. */
-- if (find_entry (&collate->seq_table, symstr, symlen,
-- (void **) &elem) != 0)
-+ void *ptr = elem;
-+ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) != 0)
- {
- uint32_t wcs[2] = { wc, 0 };
-
-@@ -998,6 +1003,9 @@
- }
- else
- {
-+ /* Copy the result back. */
-+ elem = ptr;
-+
- /* Maybe the character was used before the definition. In this case
- we have to insert the byte sequences now. */
- if (elem->mbs == NULL && seq != NULL)
-@@ -1169,8 +1177,9 @@
- /* Now we are ready to insert the new value in the
- sequence. Find out whether the element is
- already known. */
-+ void *ptr;
- if (find_entry (&collate->seq_table, seq->name, namelen,
-- (void **) &elem) != 0)
-+ &ptr) != 0)
- {
- uint32_t wcs[2] = { seq->ucs4, 0 };
-
-@@ -1186,6 +1195,9 @@
- /* This cannot happen. */
- assert (! "Internal error");
- }
-+ else
-+ /* Copy the result. */
-+ elem = ptr;
-
- /* Test whether this element is not already in the list. */
- if (elem->next != NULL || (collate->cursor != NULL
-@@ -1324,9 +1336,12 @@
- sprintf (buf + preflen, base == 10 ? "%ld" : "%lX", from);
-
- /* Look whether this name is already defined. */
-- if (find_entry (&collate->seq_table, buf, symlen,
-- (void **) &elem) == 0)
-+ void *ptr;
-+ if (find_entry (&collate->seq_table, buf, symlen, &ptr) == 0)
- {
-+ /* Copy back the result. */
-+ elem = ptr;
-+
- if (elem->next != NULL || (collate->cursor != NULL
- && elem->next == collate->cursor))
- {
-@@ -3009,7 +3024,7 @@
- size_t newname_len = arg->val.str.lenmb;
- const char *symname;
- size_t symname_len;
-- struct symbol_t *symval;
-+ void *symval; /* Actually struct symbol_t* */
-
- arg = lr_token (ldfile, charmap, result, repertoire, verbose);
- if (arg->tok != tok_bsymbol)
-@@ -3045,7 +3060,7 @@
-
- /* See whether the symbol name is already defined. */
- if (find_entry (&collate->sym_table, symname, symname_len,
-- (void **) &symval) != 0)
-+ &symval) != 0)
- {
- lr_error (ldfile, _("\
- %s: unknown symbol `%s' in equivalent definition"),
-@@ -3294,6 +3309,7 @@
- size_t lenmb;
- struct element_t *insp;
- int no_error = 1;
-+ void *ptr;
-
- if (arg->tok == tok_bsymbol)
- {
-@@ -3307,18 +3323,20 @@
- lenmb = 9;
- }
-
-- if (find_entry (&collate->seq_table, startmb, lenmb,
-- (void **) &insp) == 0)
-+ if (find_entry (&collate->seq_table, startmb, lenmb, &ptr) == 0)
- /* Yes, the symbol exists. Simply point the cursor
- to it. */
-- collate->cursor = insp;
-+ collate->cursor = (struct element_t *) ptr;
- else
- {
- struct symbol_t *symbp;
-+ void *ptr;
-
- if (find_entry (&collate->sym_table, startmb, lenmb,
-- (void **) &symbp) == 0)
-+ &ptr) == 0)
- {
-+ symbp = ptr;
-+
- if (symbp->order->last != NULL
- || symbp->order->next != NULL)
- collate->cursor = symbp->order;
-@@ -3334,8 +3352,10 @@
- }
- }
- else if (find_entry (&collate->elem_table, startmb, lenmb,
-- (void **) &insp) == 0)
-+ &ptr) == 0)
- {
-+ insp = (struct element_t *) ptr;
-+
- if (insp->last != NULL || insp->next != NULL)
- collate->cursor = insp;
- else
-@@ -3517,10 +3537,12 @@
- collation symbols since these are purely abstract
- values and don't need directions associated. */
- struct element_t *seqp;
-+ void *ptr;
-
-- if (find_entry (&collate->seq_table, symstr, symlen,
-- (void **) &seqp) == 0)
-+ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0)
- {
-+ seqp = ptr;
-+
- /* It's already defined. First check whether this
- is really a collating symbol. */
- if (seqp->is_character)
-@@ -3561,8 +3583,9 @@
- {
- /* It is possible that we already have this collation sequence.
- In this case we move the entry. */
-- struct element_t *seqp;
-+ struct element_t *seqp = NULL;
- void *sym;
-+ void *ptr;
-
- /* If the symbol after which we have to insert was not found
- ignore all entries. */
-@@ -3572,17 +3595,19 @@
- break;
- }
-
-- if (find_entry (&collate->seq_table, symstr, symlen,
-- (void **) &seqp) == 0)
-- goto move_entry;
-+ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0)
-+ {
-+ seqp = (struct element_t *) ptr;
-+ goto move_entry;
-+ }
-
- if (find_entry (&collate->sym_table, symstr, symlen, &sym) == 0
- && (seqp = ((struct symbol_t *) sym)->order) != NULL)
- goto move_entry;
-
-- if (find_entry (&collate->elem_table, symstr, symlen,
-- (void **) &seqp) == 0
-- && (seqp->last != NULL || seqp->next != NULL
-+ if (find_entry (&collate->elem_table, symstr, symlen, &ptr) == 0
-+ && (seqp = (struct element_t *) ptr,
-+ seqp->last != NULL || seqp->next != NULL
- || (collate->start != NULL && seqp == collate->start)))
- {
- move_entry:
---- glibc-2.3.2/locale/programs/ld-time.c 2002-04-16 20:45:08.000000000 -0400
-+++ glibc-2.3.2/locale/programs/ld-time.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
-
-@@ -170,7 +170,7 @@
- if (!time->cat##_defined) \
- { \
- const char *initval[] = { noparen val }; \
-- int i; \
-+ unsigned int i; \
- \
- if (! be_quiet && ! nothing) \
- WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
-@@ -670,7 +670,7 @@
- idx[1 + last_idx] = idx[last_idx];
- for (num = 0; num < time->num_era; ++num)
- {
-- size_t l;
-+ size_t l, l2;
-
- iov[2 + cnt].iov_base = (void *) &time->era_entries[num].direction;
- iov[2 + cnt].iov_len = sizeof (int32_t);
-@@ -697,14 +697,16 @@
- iov[2 + cnt].iov_len = sizeof (int32_t);
- ++cnt;
-
-- l = (strchr (time->era_entries[num].format, '\0')
-+ l = ((char *) rawmemchr (time->era_entries[num].format, '\0')
- - time->era_entries[num].name) + 1;
-- l = (l + 3) & ~3;
-- iov[2 + cnt].iov_base = (void *) time->era_entries[num].name;
-- iov[2 + cnt].iov_len = l;
-+ l2 = (l + 3) & ~3;
-+ iov[2 + cnt].iov_base = alloca (l2);
-+ memset (mempcpy (iov[2 + cnt].iov_base, time->era_entries[num].name, l),
-+ '\0', l2 - l);
-+ iov[2 + cnt].iov_len = l2;
- ++cnt;
-
-- idx[1 + last_idx] += 8 * sizeof (int32_t) + l;
-+ idx[1 + last_idx] += 8 * sizeof (int32_t) + l2;
-
- assert (idx[1 + last_idx] % 4 == 0);
-
---- glibc-2.3.2/locale/programs/linereader.c 2002-10-17 13:45:12.000000000 -0400
-+++ glibc-2.3.2/locale/programs/linereader.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
-
-@@ -111,6 +111,35 @@
-
-
- void
-+lr_ignore_rest (struct linereader *lr, int verbose)
-+{
-+ if (verbose)
-+ {
-+ while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n'
-+ && lr->buf[lr->idx] != lr->comment_char)
-+ if (lr->buf[lr->idx] == '\0')
-+ {
-+ if (lr_next (lr) < 0)
-+ return;
-+ }
-+ else
-+ ++lr->idx;
-+
-+ if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp)
-+ && lr->buf[lr->idx] != lr->comment_char)
-+ lr_error (lr, _("trailing garbage at end of line"));
-+ }
-+
-+ /* Ignore continued line. */
-+ while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n')
-+ if (lr_next (lr) < 0)
-+ break;
-+
-+ lr->idx = lr->bufact;
-+}
-+
-+
-+void
- lr_close (struct linereader *lr)
- {
- fclose (lr->fp);
---- glibc-2.3.2/locale/programs/linereader.h 2002-02-05 18:20:05.000000000 -0500
-+++ glibc-2.3.2/locale/programs/linereader.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.org>.
-
-@@ -95,6 +95,7 @@
- struct localedef_t *locale,
- const struct repertoire_t *repertoire,
- int verbose);
-+extern void lr_ignore_rest (struct linereader *lr, int verbose);
-
-
- #define lr_error(lr, fmt, args...) \
-@@ -103,6 +104,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- lr_getc (struct linereader *lr)
- {
- if (lr->idx == lr->bufact)
-@@ -120,6 +122,7 @@
-
-
- static inline int
-+__attribute ((always_inline))
- lr_ungetc (struct linereader *lr, int ch)
- {
- if (lr->idx == 0)
-@@ -142,33 +145,4 @@
- }
-
-
--static inline void
--lr_ignore_rest (struct linereader *lr, int verbose)
--{
-- if (verbose)
-- {
-- while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n'
-- && lr->buf[lr->idx] != lr->comment_char)
-- if (lr->buf[lr->idx] == '\0')
-- {
-- if (lr_next (lr) < 0)
-- return;
-- }
-- else
-- ++lr->idx;
--
-- if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp)
-- && lr->buf[lr->idx] != lr->comment_char)
-- lr_error (lr, _("trailing garbage at end of line"));
-- }
--
-- /* Ignore continued line. */
-- while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n')
-- if (lr_next (lr) < 0)
-- break;
--
-- lr->idx = lr->bufact;
--}
--
--
- #endif /* linereader.h */
---- glibc-2.3.2/locale/programs/locale.c 2003-01-02 15:02:12.000000000 -0500
-+++ glibc-2.3.2/locale/programs/locale.c 2003-05-24 14:06:21.000000000 -0400
-@@ -191,8 +191,10 @@
-
- /* Set locale. Do not set LC_ALL because the other categories must
- not be affected (according to POSIX.2). */
-- setlocale (LC_CTYPE, "");
-- setlocale (LC_MESSAGES, "");
-+ if (setlocale (LC_CTYPE, "") == NULL)
-+ error (0, errno, gettext ("Cannot set LC_CTYPE to default locale"));
-+ if (setlocale (LC_MESSAGES, "") == NULL)
-+ error (0, errno, gettext ("Cannot set LC_MESSAGES to default locale"));
-
- /* Initialize the message catalog. */
- textdomain (PACKAGE);
-@@ -203,7 +205,9 @@
- /* `-a' requests the names of all available locales. */
- if (do_all != 0)
- {
-- setlocale (LC_COLLATE, "");
-+ if (setlocale (LC_COLLATE, "") == NULL)
-+ error (0, errno,
-+ gettext ("Cannot set LC_COLLATE to default locale"));
- write_locales ();
- exit (EXIT_SUCCESS);
- }
-@@ -218,7 +222,8 @@
-
- /* Specific information about the current locale are requested.
- Change to this locale now. */
-- setlocale (LC_ALL, "");
-+ if (setlocale (LC_ALL, "") == NULL)
-+ error (0, errno, gettext ("Cannot set LC_ALL to default locale"));
-
- /* If no real argument is given we have to print the contents of the
- current locale definition variables. These are LANG and the LC_*. */
-@@ -864,7 +869,7 @@
- printf ("%s=", item->name);
-
- if (val != NULL)
-- printf ("%d", *val == CHAR_MAX ? -1 : *val);
-+ printf ("%d", *val == '\177' ? -1 : *val);
- putchar ('\n');
- }
- break;
-@@ -878,12 +883,12 @@
-
- while (cnt > 1)
- {
-- printf ("%d;", *val == CHAR_MAX ? -1 : *val);
-+ printf ("%d;", *val == '\177' ? -1 : *val);
- --cnt;
- ++val;
- }
-
-- printf ("%d\n", cnt == 0 || *val == CHAR_MAX ? -1 : *val);
-+ printf ("%d\n", cnt == 0 || *val == '\177' ? -1 : *val);
- }
- break;
- case word:
---- glibc-2.3.2/locale/programs/locarchive.c 2002-10-23 02:21:17.000000000 -0400
-+++ glibc-2.3.2/locale/programs/locarchive.c 2003-03-18 16:46:07.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -1402,8 +1402,7 @@
- struct locarhead *head;
- struct namehashent *namehashtab;
- struct nameent *names;
-- int cnt;
-- int used;
-+ size_t cnt, used;
-
- /* Open the archive. This call never returns if we cannot
- successfully open the archive. */
---- glibc-2.3.2/locale/programs/locfile.c 2003-01-13 03:55:06.000000000 -0500
-+++ glibc-2.3.2/locale/programs/locfile.c 2003-08-21 08:37:05.000000000 -0400
-@@ -764,3 +764,63 @@
-
- free (fname);
- }
-+
-+
-+/* General handling of `copy'. */
-+void
-+handle_copy (struct linereader *ldfile, const struct charmap_t *charmap,
-+ const char *repertoire_name, struct localedef_t *result,
-+ enum token_t token, int locale, const char *locale_name,
-+ int ignore_content)
-+{
-+ struct token *now;
-+ int warned = 0;
-+
-+ now = lr_token (ldfile, charmap, result, NULL, verbose);
-+ if (now->tok != tok_string)
-+ lr_error (ldfile, _("expect string argument for `copy'"));
-+ else if (!ignore_content)
-+ {
-+ if (now->val.str.startmb == NULL)
-+ lr_error (ldfile, _("\
-+locale name should consist only of portable characters"));
-+ else
-+ {
-+ (void) add_to_readlist (locale, now->val.str.startmb,
-+ repertoire_name, 1, NULL);
-+ result->copy_name[locale] = now->val.str.startmb;
-+ }
-+ }
-+
-+ lr_ignore_rest (ldfile, now->tok == tok_string);
-+
-+ /* The rest of the line must be empty and the next keyword must be
-+ `END xxx'. */
-+ while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok
-+ != tok_end && now->tok != tok_eof)
-+ {
-+ if (warned == 0)
-+ {
-+ lr_error (ldfile, _("\
-+no other keyword shall be specified when `copy' is used"));
-+ warned = 1;
-+ }
-+
-+ lr_ignore_rest (ldfile, 0);
-+ }
-+
-+ if (now->tok != tok_eof)
-+ {
-+ /* Handle `END xxx'. */
-+ now = lr_token (ldfile, charmap, result, NULL, verbose);
-+
-+ if (now->tok != token)
-+ lr_error (ldfile, _("\
-+`%1$s' definition does not end with `END %1$s'"), locale_name);
-+
-+ lr_ignore_rest (ldfile, now->tok == token);
-+ }
-+ else
-+ /* When we come here we reached the end of the file. */
-+ lr_error (ldfile, _("%s: premature end of file"), locale_name);
-+}
---- glibc-2.3.2/locale/programs/locfile.h 2002-04-17 01:11:34.000000000 -0400
-+++ glibc-2.3.2/locale/programs/locfile.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
-
-@@ -45,64 +45,12 @@
-
-
- /* General handling of `copy'. */
--static inline void
--handle_copy (struct linereader *ldfile, const struct charmap_t *charmap,
-- const char *repertoire_name, struct localedef_t *result,
-- enum token_t token, int locale, const char *locale_name,
-- int ignore_content)
--{
-- struct token *now;
-- int warned = 0;
--
-- now = lr_token (ldfile, charmap, result, NULL, verbose);
-- if (now->tok != tok_string)
-- lr_error (ldfile, _("expect string argument for `copy'"));
-- else if (!ignore_content)
-- {
-- if (now->val.str.startmb == NULL)
-- lr_error (ldfile, _("\
--locale name should consist only of portable characters"));
-- else
-- {
-- (void) add_to_readlist (locale, now->val.str.startmb,
-- repertoire_name, 1, NULL);
-- result->copy_name[locale] = now->val.str.startmb;
-- }
-- }
--
-- lr_ignore_rest (ldfile, now->tok == tok_string);
--
-- /* The rest of the line must be empty and the next keyword must be
-- `END xxx'. */
-- while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok
-- != tok_end && now->tok != tok_eof)
-- {
-- if (warned == 0)
-- {
-- lr_error (ldfile, _("\
--no other keyword shall be specified when `copy' is used"));
-- warned = 1;
-- }
--
-- lr_ignore_rest (ldfile, 0);
-- }
--
-- if (now->tok != tok_eof)
-- {
-- /* Handle `END xxx'. */
-- now = lr_token (ldfile, charmap, result, NULL, verbose);
--
-- if (now->tok != token)
-- lr_error (ldfile, _("\
--`%1$s' definition does not end with `END %1$s'"), locale_name);
--
-- lr_ignore_rest (ldfile, now->tok == token);
-- }
-- else
-- /* When we come here we reached the end of the file. */
-- lr_error (ldfile, _("%s: premature end of file"), locale_name);
--}
--
-+extern void handle_copy (struct linereader *ldfile,
-+ const struct charmap_t *charmap,
-+ const char *repertoire_name,
-+ struct localedef_t *result, enum token_t token,
-+ int locale, const char *locale_name,
-+ int ignore_content);
-
- /* Found in locfile.c. */
- extern int locfile_read (struct localedef_t *result,
---- glibc-2.3.2/locale/setlocale.c 2002-12-04 04:53:49.000000000 -0500
-+++ glibc-2.3.2/locale/setlocale.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 95-99, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 92, 1995-2000, 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
-@@ -128,7 +128,7 @@
-
-
- /* Construct a new composite name. */
--static inline char *
-+static char *
- new_composite_name (int category, const char *newnames[__LC_LAST])
- {
- size_t last_len = 0;
---- glibc-2.3.2/locale/tst-C-locale.c 2002-09-03 14:39:41.000000000 -0400
-+++ glibc-2.3.2/locale/tst-C-locale.c 2003-03-18 16:46:07.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Tests of C and POSIX locale contents.
-- Copyright (C) 2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
-
-@@ -450,8 +450,8 @@
- }
-
-
--int
--main (void)
-+static int
-+do_test (void)
- {
- int result;
-
-@@ -475,3 +475,6 @@
-
- return result;
- }
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/locale/weight.h 2001-07-07 15:21:04.000000000 -0400
-+++ glibc-2.3.2/locale/weight.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Ulrich Drepper, <drepper@cygnus.com>.
-
-@@ -19,6 +19,7 @@
-
- /* Find index of weight. */
- static inline int32_t
-+__attribute ((always_inline))
- findidx (const unsigned char **cpp)
- {
- int_fast32_t i = table[*(*cpp)++];
---- glibc-2.3.2/locale/weightwc.h 2001-08-07 00:23:14.000000000 -0400
-+++ glibc-2.3.2/locale/weightwc.h 2003-08-21 08:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Ulrich Drepper, <drepper@cygnus.com>.
-
-@@ -19,6 +19,7 @@
-
- /* Find index of weight. */
- static inline int32_t
-+__attribute ((always_inline))
- findidx (const wint_t **cpp)
- {
- int32_t i;
-@@ -26,7 +27,7 @@
- wint_t ch;
-
- ch = *(*cpp)++;
-- i = collidx_table_lookup ((const char *) table, ch);
-+ i = __collidx_table_lookup ((const char *) table, ch);
-
- if (i >= 0)
- /* This is an index into the weight table. Cool. */
---- glibc-2.3.2/localedata/ChangeLog 2003-01-30 15:21:47.000000000 -0500
-+++ glibc-2.3.2/localedata/ChangeLog 2003-09-19 22:37:05.000000000 -0400
-@@ -1,3 +1,186 @@
-+2003-09-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/lo_LA: Fix duplicated collation entries.
-+ Patch by Anousak Souphavanh <anousak@muanglao.com>.
-+
-+2003-09-01 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/iw_IL: Add comment stating why there are two locales for
-+ Hebrew in Israel, and that he_IL replaces iw_IL.
-+ * locales/he_IL: Likewise.
-+
-+2003-08-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/an_ES: Fix locale header information.
-+ * locales/wa_BE: Likewise.
-+ * locales/yi_US: Likewise.
-+ Patch by Jordi Mallach <jordi@sindominio.net>.
-+
-+2003-08-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * charmaps/WINDOWS-31J: New file.
-+ * charmaps/EUC-JP-MS: New file
-+ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
-+
-+2003-07-27 Andreas Jaeger <aj@suse.de>
-+
-+ * collate-test.c: Include error.h for error prototype.
-+ * xfrm-test.c: Likewise.
-+
-+2003-07-13 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * collate-test.c (main): Correct handling of files with more then
-+ 100 lines. Print error message if argument is missing, instead of
-+ segfaulting.
-+ * xfrm-test.c: Likewise.
-+
-+2003-07-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/lo_LA: Update collation info for U0EAF and U0EC6.
-+ Update era_t_fmt, era_d_t_fmt, country_name, and lang_name fields.
-+ Patch by Anousak Souphavanh <anousak@muanglao.com>.
-+
-+2003-06-25 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/an_ES: Change default charset from ISO-8859-1 to
-+ ISO-8859-15 as the locale need the EURO sign.
-+
-+ * SUPPORTED (SUPPORTED-LOCALES): Add an_ES.ISO-8859-15.
-+
-+2003-06-21 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/no_NO [LC_COLLATE]: Add missing eth letter, sorted as
-+ latin letter d.
-+
-+2003-06-16 Bruno Haible <bruno@clisp.org>
-+
-+ * charmaps/ISO-8859-15: Add aliases ISO_8859-15, LATIN-9.
-+ * charmaps/ISO-8859-16: Add aliases ISO_8859-16:2001, ISO_8859-16.
-+ * charmaps/IBM1047: Add alias IBM-1047.
-+ * charmaps/GBK: Add aliases CP936, MS936, WINDOWS-936.
-+
-+2003-06-15 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/fi_FI [LC_TIME]: Correct month names to make the dates
-+ gramatically correct. Patch from Eero Häkkinen. [PR libc/5013].
-+
-+2003-06-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/an_ES: New file. Contributed by Jordi Mallach Péez.
-+
-+2003-06-15 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * tst-fmon.c (main): Remove unused variable 'monval'.
-+
-+ * tst-fmon.sh: Make sure all tests are executed before an error
-+ code is reported to make.
-+ * tst-numeric.sh: Likewise.
-+
-+2003-06-15 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/is_IS [LC_TIME]: Use lower case letters in month and
-+ week day names. Patch from Bjarni Ingi Gislason.
-+
-+2003-05-31 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/fi_FI: Add URL to a reference documenting Finish in
-+ Finland
-+ * locales/fi_FI [LC_MONETARY]: Correct mon_thousands_sep from
-+ period (U002E) to non-break space (U00A0).
-+ suggestion from Eero Häkkinen.
-+ [LC_NUMERIC]: Correct thousands_sep from period (U002E) to
-+ non-break space (U00A0). Based on suggestion from Eero Häkkinen.
-+
-+2003-06-11 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/lo_LA: New file.
-+ Contributed by Anousak Souphavanh <anousak@muanglao.com>.
-+ * SUPPORTED (SUPPORTED-LOCALES): Add lo_LA.UTF8.
-+
-+2003-05-29 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/uk_UA: Correct mail address of Denys Dmytriyenko.
-+
-+2003-05-10 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/st_ZA: New file.
-+ * locales/xh_ZA: New file.
-+ * locales/zu_ZA: New file.
-+ Contributed by Dwayne Bailey <dwayne@translate.org.za>.
-+
-+2003-05-06 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/de_DE: Use two-letter abday values.
-+ * tst-langinfo.sh: Update after de_DE locale change.
-+
-+2003-05-05 Jakub Jelinek <jakub@redhat.com>
-+
-+ * tests-mbwc/tst_wcsxfrm.c (tst_wcsxfrm): Use %zu instead of %d
-+ format specifier when printing ret.
-+
-+2003-04-30 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * tst-fmon.c: Report name of locale if setlocale() fails.
-+ * tst-numeric.c: Likewise.
-+
-+ * tst-fmon.sh: Ignore lines starting with hash '#' in the data file.
-+ * tst-numeric.sh: Likewise.
-+
-+2003-04-30 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * sort-test.sh: Output 'diff -u' when sorting test failed, to make
-+ it easier to find out what was wrong with the sorting order.
-+
-+2003-04-16 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * Makefile (tests): Add LC_NUMERIC test tst-numeric.out.
-+ (tst-numeric.out): Define.
-+ * tst-numeric.c: New file.
-+ * tst-numeric.sh: New file.
-+ * tst-numeric.data: New file.
-+
-+2003-04-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/ar_BH: Fix spelling of Bahrain.
-+
-+2003-04-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/uk_UA: Fix sorting.
-+ Patch by Leonid Kanter <leon@geon.donetsk.ua>.
-+
-+2003-04-15 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/ar_SD [LC_MONETARY]: Use international currency symbol
-+ 'SDD' for Sudan.
-+ * locales/es_EC [LC_MONETARY]: Use international currency symbol
-+ 'USD' for Ecuador.
-+ Source is CIA World Fact book.
-+
-+2003-04-05 Petter Reinholdtsen <pere@hungry.com>
-+
-+ * locales/sr_YU [LC_MONETARY]: Change int_curr_symbol from 'YUN'
-+ to 'YUM' to match changes commited to ISO-4217 2002-02-13 and get
-+ the locale building again.
-+ * locales/sr_YU@cyrillic: Likewise.
-+
-+2003-04-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * locales/mn_MN: Fix country_post and country_ab2.
-+
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * localedata/en_ZA: Changed %x for LC_TIME to use dd/mm/ccyy.
-+ Added ^ to LC_MESSAGES regex "^[yY].*".
-+ Confirmed LC_PAPER and LC_MEASUREMENT settings.
-+ Added country and language names to LC_ADDRESS.
-+ Added missing info for LC_TELEPHONE.
-+ Patch by Dwayne Bailey <dwayne@obsidian.co.za>.
-+
-+2003-03-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * localedata/mn_MN: New file.
-+ Contributed by Sanlig Badral <badral@chinggis.com>.
-+
- 2003-01-30 Ulrich Drepper <drepper@redhat.com>
-
- * Makefile (LOCALES): Add vi_VN.TCVN5712-1.
---- glibc-2.3.2/localedata/Makefile 2003-01-30 15:09:21.000000000 -0500
-+++ glibc-2.3.2/localedata/Makefile 2003-04-28 08:20:36.000000000 -0400
-@@ -39,7 +39,7 @@
-
- test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
- tst-mbswcs1 tst-mbswcs2 tst-mbswcs3 tst-mbswcs4 tst-mbswcs5 \
-- tst-ctype tst-wctype tst-langinfo
-+ tst-ctype tst-wctype tst-langinfo tst-numeric
- test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \
- hr_HR.ISO-8859-2 sv_SE.ISO-8859-1
- test-input-data = $(addsuffix .in, $(basename $(test-input)))
-@@ -65,6 +65,7 @@
- tst-fmon.data $(test-input-data) $(ld-test-srcs) \
- th_TH.in cs_CZ.in tst-mbswcs.sh tst-trans.sh tst-ctype.sh \
- tst-ctype-de_DE.ISO-8859-1.in \
-+ tst-numeric.sh tst-numeric.data \
- $(wildcard tests-mbwc/*.[ch]) \
- $(addprefix tst-fmon-locales/tstfmon_,$(fmon-tests)) \
- gen-locale.sh show-ucs-data.c tst-langinfo.sh \
-@@ -130,7 +131,7 @@
- LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
- en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \
- hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
-- vi_VN.TCVN5712-1
-+ vi_VN.TCVN5712-1 no_NO.ISO-8859-1 nn_NO.ISO-8859-1
- LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
- CHARMAPS := $(shell echo "$(LOCALES)" | \
- sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
-@@ -151,7 +152,7 @@
- tests: $(objpfx)sort-test.out $(objpfx)tst-fmon.out $(objpfx)tst-locale.out \
- $(objpfx)tst-rpmatch.out $(objpfx)tst-trans.out \
- $(objpfx)tst-mbswcs.out $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
-- $(objpfx)tst-langinfo.out
-+ $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
-
- $(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
- $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
-@@ -162,6 +163,11 @@
- $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-fmon.data \
- > $@
-+$(objpfx)tst-numeric.out: tst-numeric.sh $(objpfx)tst-numeric tst-numeric.data \
-+ $(objpfx)sort-test.out \
-+ $(addprefix $(objpfx),$(CTYPE_FILES))
-+ $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-numeric.data \
-+ > $@
- $(objpfx)tst-locale.out: tst-locale.sh $(common-objpfx)locale/localedef \
- $(ld-test-srcs) $(addprefix $(objpfx),$(CTYPE_FILES))
- $(SHELL) -e $< $(common-objpfx) '$(built-program-cmd)' > $@
---- glibc-2.3.2/localedata/SUPPORTED 2002-02-23 14:30:27.000000000 -0500
-+++ glibc-2.3.2/localedata/SUPPORTED 2003-08-21 08:37:05.000000000 -0400
-@@ -3,6 +3,7 @@
- # appropriate message.
- SUPPORTED-LOCALES=\
- af_ZA/ISO-8859-1 \
-+an_ES/ISO-8859-15 \
- ar_AE/ISO-8859-6 \
- ar_BH/ISO-8859-6 \
- ar_DZ/ISO-8859-6 \
-@@ -112,6 +113,7 @@
- ko_KR.EUC-KR/EUC-KR \
- ko_KR.UTF-8/UTF-8 \
- kw_GB/ISO-8859-1 \
-+lo_LA/UTF-8 \
- lt_LT/ISO-8859-13 \
- lv_LV/ISO-8859-13 \
- mi_NZ/ISO-8859-13 \
---- glibc-2.3.2/localedata/charmaps/EUC-JP-MS 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/charmaps/EUC-JP-MS 2003-08-14 04:49:27.000000000 -0400
-@@ -0,0 +1,15282 @@
-+<code_set_name> EUC-JP-MS
-+<comment_char> %
-+<escape_char> /
-+<mb_cur_min> 1
-+<mb_cur_max> 3
-+
-+% EUC-JP-MS character map
-+% MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
-+% Last changed: 2003-07-18
-+
-+CHARMAP
-+%
-+% ASCII or JIS X 0201 Roman
-+%
-+<U0000> /x00 NULL
-+<U0001> /x01 START OF HEADING
-+<U0002> /x02 START OF TEXT
-+<U0003> /x03 END OF TEXT
-+<U0004> /x04 END OF TRANSMISSION
-+<U0005> /x05 ENQUIRY
-+<U0006> /x06 ACKNOWLEDGE
-+<U0007> /x07 BELL
-+<U0008> /x08 BACKSPACE
-+<U0009> /x09 HORIZONTAL TABULATION
-+<U000A> /x0a LINE FEED
-+<U000B> /x0b VERTICAL TABULATION
-+<U000C> /x0c FORM FEED
-+<U000D> /x0d CARRIAGE RETURN
-+<U000E> /x0e SHIFT OUT
-+<U000F> /x0f SHIFT IN
-+<U0010> /x10 DATA LINK ESCAPE
-+<U0011> /x11 DEVICE CONTROL ONE
-+<U0012> /x12 DEVICE CONTROL TWO
-+<U0013> /x13 DEVICE CONTROL THREE
-+<U0014> /x14 DEVICE CONTROL FOUR
-+<U0015> /x15 NEGATIVE ACKNOWLEDGE
-+<U0016> /x16 SYNCHRONOUS IDLE
-+<U0017> /x17 END OF TRANSMISSION BLOCK
-+<U0018> /x18 CANCEL
-+<U0019> /x19 END OF MEDIUM
-+<U001A> /x1a SUBSTITUTE
-+<U001B> /x1b ESCAPE
-+<U001C> /x1c FILE SEPARATOR
-+<U001D> /x1d GROUP SEPARATOR
-+<U001E> /x1e RECORD SEPARATOR
-+<U001F> /x1f UNIT SEPARATOR
-+<U0020> /x20 SPACE
-+<U0021> /x21 EXCLAMATION MARK
-+<U0022> /x22 QUOTATION MARK
-+<U0023> /x23 NUMBER SIGN
-+<U0024> /x24 DOLLAR SIGN
-+<U0025> /x25 PERCENT SIGN
-+<U0026> /x26 AMPERSAND
-+<U0027> /x27 APOSTROPHE
-+<U0028> /x28 LEFT PARENTHESIS
-+<U0029> /x29 RIGHT PARENTHESIS
-+<U002A> /x2a ASTERISK
-+<U002B> /x2b PLUS SIGN
-+<U002C> /x2c COMMA
-+<U002D> /x2d HYPHEN-MINUS
-+<U002E> /x2e FULL STOP
-+<U002F> /x2f SOLIDUS
-+<U0030> /x30 DIGIT ZERO
-+<U0031> /x31 DIGIT ONE
-+<U0032> /x32 DIGIT TWO
-+<U0033> /x33 DIGIT THREE
-+<U0034> /x34 DIGIT FOUR
-+<U0035> /x35 DIGIT FIVE
-+<U0036> /x36 DIGIT SIX
-+<U0037> /x37 DIGIT SEVEN
-+<U0038> /x38 DIGIT EIGHT
-+<U0039> /x39 DIGIT NINE
-+<U003A> /x3a COLON
-+<U003B> /x3b SEMICOLON
-+<U003C> /x3c LESS-THAN SIGN
-+<U003D> /x3d EQUALS SIGN
-+<U003E> /x3e GREATER-THAN SIGN
-+<U003F> /x3f QUESTION MARK
-+<U0040> /x40 COMMERCIAL AT
-+<U0041> /x41 LATIN CAPITAL LETTER A
-+<U0042> /x42 LATIN CAPITAL LETTER B
-+<U0043> /x43 LATIN CAPITAL LETTER C
-+<U0044> /x44 LATIN CAPITAL LETTER D
-+<U0045> /x45 LATIN CAPITAL LETTER E
-+<U0046> /x46 LATIN CAPITAL LETTER F
-+<U0047> /x47 LATIN CAPITAL LETTER G
-+<U0048> /x48 LATIN CAPITAL LETTER H
-+<U0049> /x49 LATIN CAPITAL LETTER I
-+<U004A> /x4a LATIN CAPITAL LETTER J
-+<U004B> /x4b LATIN CAPITAL LETTER K
-+<U004C> /x4c LATIN CAPITAL LETTER L
-+<U004D> /x4d LATIN CAPITAL LETTER M
-+<U004E> /x4e LATIN CAPITAL LETTER N
-+<U004F> /x4f LATIN CAPITAL LETTER O
-+<U0050> /x50 LATIN CAPITAL LETTER P
-+<U0051> /x51 LATIN CAPITAL LETTER Q
-+<U0052> /x52 LATIN CAPITAL LETTER R
-+<U0053> /x53 LATIN CAPITAL LETTER S
-+<U0054> /x54 LATIN CAPITAL LETTER T
-+<U0055> /x55 LATIN CAPITAL LETTER U
-+<U0056> /x56 LATIN CAPITAL LETTER V
-+<U0057> /x57 LATIN CAPITAL LETTER W
-+<U0058> /x58 LATIN CAPITAL LETTER X
-+<U0059> /x59 LATIN CAPITAL LETTER Y
-+<U005A> /x5a LATIN CAPITAL LETTER Z
-+<U005B> /x5b LEFT SQUARE BRACKET
-+<U005C> /x5c REVERSE SOLIDUS
-+<U005D> /x5d RIGHT SQUARE BRACKET
-+<U005E> /x5e CIRCUMFLEX ACCENT
-+<U005F> /x5f LOW LINE
-+<U0060> /x60 GRAVE ACCENT
-+<U0061> /x61 LATIN SMALL LETTER A
-+<U0062> /x62 LATIN SMALL LETTER B
-+<U0063> /x63 LATIN SMALL LETTER C
-+<U0064> /x64 LATIN SMALL LETTER D
-+<U0065> /x65 LATIN SMALL LETTER E
-+<U0066> /x66 LATIN SMALL LETTER F
-+<U0067> /x67 LATIN SMALL LETTER G
-+<U0068> /x68 LATIN SMALL LETTER H
-+<U0069> /x69 LATIN SMALL LETTER I
-+<U006A> /x6a LATIN SMALL LETTER J
-+<U006B> /x6b LATIN SMALL LETTER K
-+<U006C> /x6c LATIN SMALL LETTER L
-+<U006D> /x6d LATIN SMALL LETTER M
-+<U006E> /x6e LATIN SMALL LETTER N
-+<U006F> /x6f LATIN SMALL LETTER O
-+<U0070> /x70 LATIN SMALL LETTER P
-+<U0071> /x71 LATIN SMALL LETTER Q
-+<U0072> /x72 LATIN SMALL LETTER R
-+<U0073> /x73 LATIN SMALL LETTER S
-+<U0074> /x74 LATIN SMALL LETTER T
-+<U0075> /x75 LATIN SMALL LETTER U
-+<U0076> /x76 LATIN SMALL LETTER V
-+<U0077> /x77 LATIN SMALL LETTER W
-+<U0078> /x78 LATIN SMALL LETTER X
-+<U0079> /x79 LATIN SMALL LETTER Y
-+<U007A> /x7a LATIN SMALL LETTER Z
-+<U007B> /x7b LEFT CURLY BRACKET
-+<U007C> /x7c VERTICAL LINE
-+<U007D> /x7d RIGHT CURLY BRACKET
-+<U007E> /x7e TILDE
-+<U007F> /x7f DELETE
-+
-+%
-+% C1 area is mapped to itself. Excluding SS2 and SS3.
-+%
-+<U0080> /x80 PADDING CHARACTER (PAD)
-+<U0081> /x81 HIGH OCTET PRESET (HOP)
-+<U0082> /x82 BREAK PERMITTED HERE (BPH)
-+<U0083> /x83 NO BREAK HERE (NBH)
-+<U0084> /x84 INDEX (IND)
-+<U0085> /x85 NEXT LINE (NEL)
-+<U0086> /x86 START OF SELECTED AREA (SSA)
-+<U0087> /x87 END OF SELECTED AREA (ESA)
-+<U0088> /x88 CHARACTER TABULATION SET (HTS)
-+<U0089> /x89 CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
-+<U008A> /x8a LINE TABULATION SET (VTS)
-+<U008B> /x8b PARTIAL LINE FORWARD (PLD)
-+<U008C> /x8c PARTIAL LINE BACKWARD (PLU)
-+<U008D> /x8d REVERSE LINE FEED (RI)
-+<U0090> /x90 DEVICE CONTROL STRING (DCS)
-+<U0091> /x91 PRIVATE USE ONE (PU1)
-+<U0092> /x92 PRIVATE USE TWO (PU2)
-+<U0093> /x93 SET TRANSMIT STATE (STS)
-+<U0094> /x94 CANCEL CHARACTER (CCH)
-+<U0095> /x95 MESSAGE WAITING (MW)
-+<U0096> /x96 START OF GUARDED AREA (SPA)
-+<U0097> /x97 END OF GUARDED AREA (EPA)
-+<U0098> /x98 START OF STRING (SOS)
-+<U0099> /x99 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
-+<U009A> /x9a SINGLE CHARACTER INTRODUCER (SCI)
-+<U009B> /x9b CONTROL SEQUENCE INTRODUCER (CSI)
-+<U009C> /x9c STRING TERMINATOR (ST)
-+<U009D> /x9d OPERATING SYSTEM COMMAND (OSC)
-+<U009E> /x9e PRIVACY MESSAGE (PM)
-+<U009F> /x9f APPLICATION PROGRAM COMMAND (APC)
-+
-+%
-+% JIS X 0201 Kana
-+%
-+<UFF61> /x8e/xa1 HALFWIDTH IDEOGRAPHIC FULL STOP
-+<UFF62> /x8e/xa2 HALFWIDTH LEFT CORNER BRACKET
-+<UFF63> /x8e/xa3 HALFWIDTH RIGHT CORNER BRACKET
-+<UFF64> /x8e/xa4 HALFWIDTH IDEOGRAPHIC COMMA
-+<UFF65> /x8e/xa5 HALFWIDTH KATAKANA MIDDLE DOT
-+<UFF66> /x8e/xa6 HALFWIDTH KATAKANA LETTER WO
-+<UFF67> /x8e/xa7 HALFWIDTH KATAKANA LETTER SMALL A
-+<UFF68> /x8e/xa8 HALFWIDTH KATAKANA LETTER SMALL I
-+<UFF69> /x8e/xa9 HALFWIDTH KATAKANA LETTER SMALL U
-+<UFF6A> /x8e/xaa HALFWIDTH KATAKANA LETTER SMALL E
-+<UFF6B> /x8e/xab HALFWIDTH KATAKANA LETTER SMALL O
-+<UFF6C> /x8e/xac HALFWIDTH KATAKANA LETTER SMALL YA
-+<UFF6D> /x8e/xad HALFWIDTH KATAKANA LETTER SMALL YU
-+<UFF6E> /x8e/xae HALFWIDTH KATAKANA LETTER SMALL YO
-+<UFF6F> /x8e/xaf HALFWIDTH KATAKANA LETTER SMALL TU
-+<UFF70> /x8e/xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-+<UFF71> /x8e/xb1 HALFWIDTH KATAKANA LETTER A
-+<UFF72> /x8e/xb2 HALFWIDTH KATAKANA LETTER I
-+<UFF73> /x8e/xb3 HALFWIDTH KATAKANA LETTER U
-+<UFF74> /x8e/xb4 HALFWIDTH KATAKANA LETTER E
-+<UFF75> /x8e/xb5 HALFWIDTH KATAKANA LETTER O
-+<UFF76> /x8e/xb6 HALFWIDTH KATAKANA LETTER KA
-+<UFF77> /x8e/xb7 HALFWIDTH KATAKANA LETTER KI
-+<UFF78> /x8e/xb8 HALFWIDTH KATAKANA LETTER KU
-+<UFF79> /x8e/xb9 HALFWIDTH KATAKANA LETTER KE
-+<UFF7A> /x8e/xba HALFWIDTH KATAKANA LETTER KO
-+<UFF7B> /x8e/xbb HALFWIDTH KATAKANA LETTER SA
-+<UFF7C> /x8e/xbc HALFWIDTH KATAKANA LETTER SI
-+<UFF7D> /x8e/xbd HALFWIDTH KATAKANA LETTER SU
-+<UFF7E> /x8e/xbe HALFWIDTH KATAKANA LETTER SE
-+<UFF7F> /x8e/xbf HALFWIDTH KATAKANA LETTER SO
-+<UFF80> /x8e/xc0 HALFWIDTH KATAKANA LETTER TA
-+<UFF81> /x8e/xc1 HALFWIDTH KATAKANA LETTER TI
-+<UFF82> /x8e/xc2 HALFWIDTH KATAKANA LETTER TU
-+<UFF83> /x8e/xc3 HALFWIDTH KATAKANA LETTER TE
-+<UFF84> /x8e/xc4 HALFWIDTH KATAKANA LETTER TO
-+<UFF85> /x8e/xc5 HALFWIDTH KATAKANA LETTER NA
-+<UFF86> /x8e/xc6 HALFWIDTH KATAKANA LETTER NI
-+<UFF87> /x8e/xc7 HALFWIDTH KATAKANA LETTER NU
-+<UFF88> /x8e/xc8 HALFWIDTH KATAKANA LETTER NE
-+<UFF89> /x8e/xc9 HALFWIDTH KATAKANA LETTER NO
-+<UFF8A> /x8e/xca HALFWIDTH KATAKANA LETTER HA
-+<UFF8B> /x8e/xcb HALFWIDTH KATAKANA LETTER HI
-+<UFF8C> /x8e/xcc HALFWIDTH KATAKANA LETTER HU
-+<UFF8D> /x8e/xcd HALFWIDTH KATAKANA LETTER HE
-+<UFF8E> /x8e/xce HALFWIDTH KATAKANA LETTER HO
-+<UFF8F> /x8e/xcf HALFWIDTH KATAKANA LETTER MA
-+<UFF90> /x8e/xd0 HALFWIDTH KATAKANA LETTER MI
-+<UFF91> /x8e/xd1 HALFWIDTH KATAKANA LETTER MU
-+<UFF92> /x8e/xd2 HALFWIDTH KATAKANA LETTER ME
-+<UFF93> /x8e/xd3 HALFWIDTH KATAKANA LETTER MO
-+<UFF94> /x8e/xd4 HALFWIDTH KATAKANA LETTER YA
-+<UFF95> /x8e/xd5 HALFWIDTH KATAKANA LETTER YU
-+<UFF96> /x8e/xd6 HALFWIDTH KATAKANA LETTER YO
-+<UFF97> /x8e/xd7 HALFWIDTH KATAKANA LETTER RA
-+<UFF98> /x8e/xd8 HALFWIDTH KATAKANA LETTER RI
-+<UFF99> /x8e/xd9 HALFWIDTH KATAKANA LETTER RU
-+<UFF9A> /x8e/xda HALFWIDTH KATAKANA LETTER RE
-+<UFF9B> /x8e/xdb HALFWIDTH KATAKANA LETTER RO
-+<UFF9C> /x8e/xdc HALFWIDTH KATAKANA LETTER WA
-+<UFF9D> /x8e/xdd HALFWIDTH KATAKANA LETTER N
-+<UFF9E> /x8e/xde HALFWIDTH KATAKANA VOICED SOUND MARK
-+<UFF9F> /x8e/xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-+
-+%
-+% JIS X 0208
-+%
-+<U3000> /xa1/xa1 IDEOGRAPHIC SPACE
-+<U3001> /xa1/xa2 IDEOGRAPHIC COMMA
-+<U3002> /xa1/xa3 IDEOGRAPHIC FULL STOP
-+<UFF0C> /xa1/xa4 FULLWIDTH COMMA
-+<UFF0E> /xa1/xa5 FULLWIDTH FULL STOP
-+<U30FB> /xa1/xa6 KATAKANA MIDDLE DOT
-+<UFF1A> /xa1/xa7 FULLWIDTH COLON
-+<UFF1B> /xa1/xa8 FULLWIDTH SEMICOLON
-+<UFF1F> /xa1/xa9 FULLWIDTH QUESTION MARK
-+<UFF01> /xa1/xaa FULLWIDTH EXCLAMATION MARK
-+<U309B> /xa1/xab KATAKANA-HIRAGANA VOICED SOUND MARK
-+<U309C> /xa1/xac KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-+<U00B4> /xa1/xad ACUTE ACCENT
-+<UFF40> /xa1/xae FULLWIDTH GRAVE ACCENT
-+<U00A8> /xa1/xaf DIAERESIS
-+<UFF3E> /xa1/xb0 FULLWIDTH CIRCUMFLEX ACCENT
-+<UFFE3> /xa1/xb1 FULLWIDTH MACRON
-+<UFF3F> /xa1/xb2 FULLWIDTH LOW LINE
-+<U30FD> /xa1/xb3 KATAKANA ITERATION MARK
-+<U30FE> /xa1/xb4 KATAKANA VOICED ITERATION MARK
-+<U309D> /xa1/xb5 HIRAGANA ITERATION MARK
-+<U309E> /xa1/xb6 HIRAGANA VOICED ITERATION MARK
-+<U3003> /xa1/xb7 DITTO MARK
-+<U4EDD> /xa1/xb8 <CJK>
-+<U3005> /xa1/xb9 IDEOGRAPHIC ITERATION MARK
-+<U3006> /xa1/xba IDEOGRAPHIC CLOSING MARK
-+<U3007> /xa1/xbb IDEOGRAPHIC NUMBER ZERO
-+<U30FC> /xa1/xbc KATAKANA-HIRAGANA PROLONGED SOUND MARK
-+<U2015> /xa1/xbd HORIZONTAL BAR
-+<U2010> /xa1/xbe HYPHEN
-+<UFF0F> /xa1/xbf FULLWIDTH SOLIDUS
-+<UFF3C> /xa1/xc0 FULLWIDTH REVERSE SOLIDUS
-+<UFF5E> /xa1/xc1 FULLWIDTH TILDE
-+<U2225> /xa1/xc2 PARALLEL TO
-+<UFF5C> /xa1/xc3 FULLWIDTH VERTICAL LINE
-+<U2026> /xa1/xc4 HORIZONTAL ELLIPSIS
-+<U2025> /xa1/xc5 TWO DOT LEADER
-+<U2018> /xa1/xc6 LEFT SINGLE QUOTATION MARK
-+<U2019> /xa1/xc7 RIGHT SINGLE QUOTATION MARK
-+<U201C> /xa1/xc8 LEFT DOUBLE QUOTATION MARK
-+<U201D> /xa1/xc9 RIGHT DOUBLE QUOTATION MARK
-+<UFF08> /xa1/xca FULLWIDTH LEFT PARENTHESIS
-+<UFF09> /xa1/xcb FULLWIDTH RIGHT PARENTHESIS
-+<U3014> /xa1/xcc LEFT TORTOISE SHELL BRACKET
-+<U3015> /xa1/xcd RIGHT TORTOISE SHELL BRACKET
-+<UFF3B> /xa1/xce FULLWIDTH LEFT SQUARE BRACKET
-+<UFF3D> /xa1/xcf FULLWIDTH RIGHT SQUARE BRACKET
-+<UFF5B> /xa1/xd0 FULLWIDTH LEFT CURLY BRACKET
-+<UFF5D> /xa1/xd1 FULLWIDTH RIGHT CURLY BRACKET
-+<U3008> /xa1/xd2 LEFT ANGLE BRACKET
-+<U3009> /xa1/xd3 RIGHT ANGLE BRACKET
-+<U300A> /xa1/xd4 LEFT DOUBLE ANGLE BRACKET
-+<U300B> /xa1/xd5 RIGHT DOUBLE ANGLE BRACKET
-+<U300C> /xa1/xd6 LEFT CORNER BRACKET
-+<U300D> /xa1/xd7 RIGHT CORNER BRACKET
-+<U300E> /xa1/xd8 LEFT WHITE CORNER BRACKET
-+<U300F> /xa1/xd9 RIGHT WHITE CORNER BRACKET
-+<U3010> /xa1/xda LEFT BLACK LENTICULAR BRACKET
-+<U3011> /xa1/xdb RIGHT BLACK LENTICULAR BRACKET
-+<UFF0B> /xa1/xdc FULLWIDTH PLUS SIGN
-+<UFF0D> /xa1/xdd FULLWIDTH HYPHEN-MINUS
-+<U00B1> /xa1/xde PLUS-MINUS SIGN
-+<U00D7> /xa1/xdf MULTIPLICATION SIGN
-+<U00F7> /xa1/xe0 DIVISION SIGN
-+<UFF1D> /xa1/xe1 FULLWIDTH EQUALS SIGN
-+<U2260> /xa1/xe2 NOT EQUAL TO
-+<UFF1C> /xa1/xe3 FULLWIDTH LESS-THAN SIGN
-+<UFF1E> /xa1/xe4 FULLWIDTH GREATER-THAN SIGN
-+<U2266> /xa1/xe5 LESS-THAN OVER EQUAL TO
-+<U2267> /xa1/xe6 GREATER-THAN OVER EQUAL TO
-+<U221E> /xa1/xe7 INFINITY
-+<U2234> /xa1/xe8 THEREFORE
-+<U2642> /xa1/xe9 MALE SIGN
-+<U2640> /xa1/xea FEMALE SIGN
-+<U00B0> /xa1/xeb DEGREE SIGN
-+<U2032> /xa1/xec PRIME
-+<U2033> /xa1/xed DOUBLE PRIME
-+<U2103> /xa1/xee DEGREE CELSIUS
-+<UFFE5> /xa1/xef FULLWIDTH YEN SIGN
-+<UFF04> /xa1/xf0 FULLWIDTH DOLLAR SIGN
-+<UFFE0> /xa1/xf1 FULLWIDTH CENT SIGN
-+<UFFE1> /xa1/xf2 FULLWIDTH POUND SIGN
-+<UFF05> /xa1/xf3 FULLWIDTH PERCENT SIGN
-+<UFF03> /xa1/xf4 FULLWIDTH NUMBER SIGN
-+<UFF06> /xa1/xf5 FULLWIDTH AMPERSAND
-+<UFF0A> /xa1/xf6 FULLWIDTH ASTERISK
-+<UFF20> /xa1/xf7 FULLWIDTH COMMERCIAL AT
-+<U00A7> /xa1/xf8 SECTION SIGN
-+<U2606> /xa1/xf9 WHITE STAR
-+<U2605> /xa1/xfa BLACK STAR
-+<U25CB> /xa1/xfb WHITE CIRCLE
-+<U25CF> /xa1/xfc BLACK CIRCLE
-+<U25CE> /xa1/xfd BULLSEYE
-+<U25C7> /xa1/xfe WHITE DIAMOND
-+<U25C6> /xa2/xa1 BLACK DIAMOND
-+<U25A1> /xa2/xa2 WHITE SQUARE
-+<U25A0> /xa2/xa3 BLACK SQUARE
-+<U25B3> /xa2/xa4 WHITE UP-POINTING TRIANGLE
-+<U25B2> /xa2/xa5 BLACK UP-POINTING TRIANGLE
-+<U25BD> /xa2/xa6 WHITE DOWN-POINTING TRIANGLE
-+<U25BC> /xa2/xa7 BLACK DOWN-POINTING TRIANGLE
-+<U203B> /xa2/xa8 REFERENCE MARK
-+<U3012> /xa2/xa9 POSTAL MARK
-+<U2192> /xa2/xaa RIGHTWARDS ARROW
-+<U2190> /xa2/xab LEFTWARDS ARROW
-+<U2191> /xa2/xac UPWARDS ARROW
-+<U2193> /xa2/xad DOWNWARDS ARROW
-+<U3013> /xa2/xae GETA MARK
-+<U2208> /xa2/xba ELEMENT OF
-+<U220B> /xa2/xbb CONTAINS AS MEMBER
-+<U2286> /xa2/xbc SUBSET OF OR EQUAL TO
-+<U2287> /xa2/xbd SUPERSET OF OR EQUAL TO
-+<U2282> /xa2/xbe SUBSET OF
-+<U2283> /xa2/xbf SUPERSET OF
-+<U222A> /xa2/xc0 UNION
-+<U2229> /xa2/xc1 INTERSECTION
-+<U2227> /xa2/xca LOGICAL AND
-+<U2228> /xa2/xcb LOGICAL OR
-+<UFFE2> /xa2/xcc FULLWIDTH NOT SIGN
-+<U21D2> /xa2/xcd RIGHTWARDS DOUBLE ARROW
-+<U21D4> /xa2/xce LEFT RIGHT DOUBLE ARROW
-+<U2200> /xa2/xcf FOR ALL
-+<U2203> /xa2/xd0 THERE EXISTS
-+<U2220> /xa2/xdc ANGLE
-+<U22A5> /xa2/xdd UP TACK
-+<U2312> /xa2/xde ARC
-+<U2202> /xa2/xdf PARTIAL DIFFERENTIAL
-+<U2207> /xa2/xe0 NABLA
-+<U2261> /xa2/xe1 IDENTICAL TO
-+<U2252> /xa2/xe2 APPROXIMATELY EQUAL TO OR THE IMAGE OF
-+<U226A> /xa2/xe3 MUCH LESS-THAN
-+<U226B> /xa2/xe4 MUCH GREATER-THAN
-+<U221A> /xa2/xe5 SQUARE ROOT
-+<U223D> /xa2/xe6 REVERSED TILDE
-+<U221D> /xa2/xe7 PROPORTIONAL TO
-+<U2235> /xa2/xe8 BECAUSE
-+<U222B> /xa2/xe9 INTEGRAL
-+<U222C> /xa2/xea DOUBLE INTEGRAL
-+<U212B> /xa2/xf2 ANGSTROM SIGN
-+<U2030> /xa2/xf3 PER MILLE SIGN
-+<U266F> /xa2/xf4 MUSIC SHARP SIGN
-+<U266D> /xa2/xf5 MUSIC FLAT SIGN
-+<U266A> /xa2/xf6 EIGHTH NOTE
-+<U2020> /xa2/xf7 DAGGER
-+<U2021> /xa2/xf8 DOUBLE DAGGER
-+<U00B6> /xa2/xf9 PILCROW SIGN
-+<U25EF> /xa2/xfe LARGE CIRCLE
-+<UFF10> /xa3/xb0 FULLWIDTH DIGIT ZERO
-+<UFF11> /xa3/xb1 FULLWIDTH DIGIT ONE
-+<UFF12> /xa3/xb2 FULLWIDTH DIGIT TWO
-+<UFF13> /xa3/xb3 FULLWIDTH DIGIT THREE
-+<UFF14> /xa3/xb4 FULLWIDTH DIGIT FOUR
-+<UFF15> /xa3/xb5 FULLWIDTH DIGIT FIVE
-+<UFF16> /xa3/xb6 FULLWIDTH DIGIT SIX
-+<UFF17> /xa3/xb7 FULLWIDTH DIGIT SEVEN
-+<UFF18> /xa3/xb8 FULLWIDTH DIGIT EIGHT
-+<UFF19> /xa3/xb9 FULLWIDTH DIGIT NINE
-+<UFF21> /xa3/xc1 FULLWIDTH LATIN CAPITAL LETTER A
-+<UFF22> /xa3/xc2 FULLWIDTH LATIN CAPITAL LETTER B
-+<UFF23> /xa3/xc3 FULLWIDTH LATIN CAPITAL LETTER C
-+<UFF24> /xa3/xc4 FULLWIDTH LATIN CAPITAL LETTER D
-+<UFF25> /xa3/xc5 FULLWIDTH LATIN CAPITAL LETTER E
-+<UFF26> /xa3/xc6 FULLWIDTH LATIN CAPITAL LETTER F
-+<UFF27> /xa3/xc7 FULLWIDTH LATIN CAPITAL LETTER G
-+<UFF28> /xa3/xc8 FULLWIDTH LATIN CAPITAL LETTER H
-+<UFF29> /xa3/xc9 FULLWIDTH LATIN CAPITAL LETTER I
-+<UFF2A> /xa3/xca FULLWIDTH LATIN CAPITAL LETTER J
-+<UFF2B> /xa3/xcb FULLWIDTH LATIN CAPITAL LETTER K
-+<UFF2C> /xa3/xcc FULLWIDTH LATIN CAPITAL LETTER L
-+<UFF2D> /xa3/xcd FULLWIDTH LATIN CAPITAL LETTER M
-+<UFF2E> /xa3/xce FULLWIDTH LATIN CAPITAL LETTER N
-+<UFF2F> /xa3/xcf FULLWIDTH LATIN CAPITAL LETTER O
-+<UFF30> /xa3/xd0 FULLWIDTH LATIN CAPITAL LETTER P
-+<UFF31> /xa3/xd1 FULLWIDTH LATIN CAPITAL LETTER Q
-+<UFF32> /xa3/xd2 FULLWIDTH LATIN CAPITAL LETTER R
-+<UFF33> /xa3/xd3 FULLWIDTH LATIN CAPITAL LETTER S
-+<UFF34> /xa3/xd4 FULLWIDTH LATIN CAPITAL LETTER T
-+<UFF35> /xa3/xd5 FULLWIDTH LATIN CAPITAL LETTER U
-+<UFF36> /xa3/xd6 FULLWIDTH LATIN CAPITAL LETTER V
-+<UFF37> /xa3/xd7 FULLWIDTH LATIN CAPITAL LETTER W
-+<UFF38> /xa3/xd8 FULLWIDTH LATIN CAPITAL LETTER X
-+<UFF39> /xa3/xd9 FULLWIDTH LATIN CAPITAL LETTER Y
-+<UFF3A> /xa3/xda FULLWIDTH LATIN CAPITAL LETTER Z
-+<UFF41> /xa3/xe1 FULLWIDTH LATIN SMALL LETTER A
-+<UFF42> /xa3/xe2 FULLWIDTH LATIN SMALL LETTER B
-+<UFF43> /xa3/xe3 FULLWIDTH LATIN SMALL LETTER C
-+<UFF44> /xa3/xe4 FULLWIDTH LATIN SMALL LETTER D
-+<UFF45> /xa3/xe5 FULLWIDTH LATIN SMALL LETTER E
-+<UFF46> /xa3/xe6 FULLWIDTH LATIN SMALL LETTER F
-+<UFF47> /xa3/xe7 FULLWIDTH LATIN SMALL LETTER G
-+<UFF48> /xa3/xe8 FULLWIDTH LATIN SMALL LETTER H
-+<UFF49> /xa3/xe9 FULLWIDTH LATIN SMALL LETTER I
-+<UFF4A> /xa3/xea FULLWIDTH LATIN SMALL LETTER J
-+<UFF4B> /xa3/xeb FULLWIDTH LATIN SMALL LETTER K
-+<UFF4C> /xa3/xec FULLWIDTH LATIN SMALL LETTER L
-+<UFF4D> /xa3/xed FULLWIDTH LATIN SMALL LETTER M
-+<UFF4E> /xa3/xee FULLWIDTH LATIN SMALL LETTER N
-+<UFF4F> /xa3/xef FULLWIDTH LATIN SMALL LETTER O
-+<UFF50> /xa3/xf0 FULLWIDTH LATIN SMALL LETTER P
-+<UFF51> /xa3/xf1 FULLWIDTH LATIN SMALL LETTER Q
-+<UFF52> /xa3/xf2 FULLWIDTH LATIN SMALL LETTER R
-+<UFF53> /xa3/xf3 FULLWIDTH LATIN SMALL LETTER S
-+<UFF54> /xa3/xf4 FULLWIDTH LATIN SMALL LETTER T
-+<UFF55> /xa3/xf5 FULLWIDTH LATIN SMALL LETTER U
-+<UFF56> /xa3/xf6 FULLWIDTH LATIN SMALL LETTER V
-+<UFF57> /xa3/xf7 FULLWIDTH LATIN SMALL LETTER W
-+<UFF58> /xa3/xf8 FULLWIDTH LATIN SMALL LETTER X
-+<UFF59> /xa3/xf9 FULLWIDTH LATIN SMALL LETTER Y
-+<UFF5A> /xa3/xfa FULLWIDTH LATIN SMALL LETTER Z
-+<U3041> /xa4/xa1 HIRAGANA LETTER SMALL A
-+<U3042> /xa4/xa2 HIRAGANA LETTER A
-+<U3043> /xa4/xa3 HIRAGANA LETTER SMALL I
-+<U3044> /xa4/xa4 HIRAGANA LETTER I
-+<U3045> /xa4/xa5 HIRAGANA LETTER SMALL U
-+<U3046> /xa4/xa6 HIRAGANA LETTER U
-+<U3047> /xa4/xa7 HIRAGANA LETTER SMALL E
-+<U3048> /xa4/xa8 HIRAGANA LETTER E
-+<U3049> /xa4/xa9 HIRAGANA LETTER SMALL O
-+<U304A> /xa4/xaa HIRAGANA LETTER O
-+<U304B> /xa4/xab HIRAGANA LETTER KA
-+<U304C> /xa4/xac HIRAGANA LETTER GA
-+<U304D> /xa4/xad HIRAGANA LETTER KI
-+<U304E> /xa4/xae HIRAGANA LETTER GI
-+<U304F> /xa4/xaf HIRAGANA LETTER KU
-+<U3050> /xa4/xb0 HIRAGANA LETTER GU
-+<U3051> /xa4/xb1 HIRAGANA LETTER KE
-+<U3052> /xa4/xb2 HIRAGANA LETTER GE
-+<U3053> /xa4/xb3 HIRAGANA LETTER KO
-+<U3054> /xa4/xb4 HIRAGANA LETTER GO
-+<U3055> /xa4/xb5 HIRAGANA LETTER SA
-+<U3056> /xa4/xb6 HIRAGANA LETTER ZA
-+<U3057> /xa4/xb7 HIRAGANA LETTER SI
-+<U3058> /xa4/xb8 HIRAGANA LETTER ZI
-+<U3059> /xa4/xb9 HIRAGANA LETTER SU
-+<U305A> /xa4/xba HIRAGANA LETTER ZU
-+<U305B> /xa4/xbb HIRAGANA LETTER SE
-+<U305C> /xa4/xbc HIRAGANA LETTER ZE
-+<U305D> /xa4/xbd HIRAGANA LETTER SO
-+<U305E> /xa4/xbe HIRAGANA LETTER ZO
-+<U305F> /xa4/xbf HIRAGANA LETTER TA
-+<U3060> /xa4/xc0 HIRAGANA LETTER DA
-+<U3061> /xa4/xc1 HIRAGANA LETTER TI
-+<U3062> /xa4/xc2 HIRAGANA LETTER DI
-+<U3063> /xa4/xc3 HIRAGANA LETTER SMALL TU
-+<U3064> /xa4/xc4 HIRAGANA LETTER TU
-+<U3065> /xa4/xc5 HIRAGANA LETTER DU
-+<U3066> /xa4/xc6 HIRAGANA LETTER TE
-+<U3067> /xa4/xc7 HIRAGANA LETTER DE
-+<U3068> /xa4/xc8 HIRAGANA LETTER TO
-+<U3069> /xa4/xc9 HIRAGANA LETTER DO
-+<U306A> /xa4/xca HIRAGANA LETTER NA
-+<U306B> /xa4/xcb HIRAGANA LETTER NI
-+<U306C> /xa4/xcc HIRAGANA LETTER NU
-+<U306D> /xa4/xcd HIRAGANA LETTER NE
-+<U306E> /xa4/xce HIRAGANA LETTER NO
-+<U306F> /xa4/xcf HIRAGANA LETTER HA
-+<U3070> /xa4/xd0 HIRAGANA LETTER BA
-+<U3071> /xa4/xd1 HIRAGANA LETTER PA
-+<U3072> /xa4/xd2 HIRAGANA LETTER HI
-+<U3073> /xa4/xd3 HIRAGANA LETTER BI
-+<U3074> /xa4/xd4 HIRAGANA LETTER PI
-+<U3075> /xa4/xd5 HIRAGANA LETTER HU
-+<U3076> /xa4/xd6 HIRAGANA LETTER BU
-+<U3077> /xa4/xd7 HIRAGANA LETTER PU
-+<U3078> /xa4/xd8 HIRAGANA LETTER HE
-+<U3079> /xa4/xd9 HIRAGANA LETTER BE
-+<U307A> /xa4/xda HIRAGANA LETTER PE
-+<U307B> /xa4/xdb HIRAGANA LETTER HO
-+<U307C> /xa4/xdc HIRAGANA LETTER BO
-+<U307D> /xa4/xdd HIRAGANA LETTER PO
-+<U307E> /xa4/xde HIRAGANA LETTER MA
-+<U307F> /xa4/xdf HIRAGANA LETTER MI
-+<U3080> /xa4/xe0 HIRAGANA LETTER MU
-+<U3081> /xa4/xe1 HIRAGANA LETTER ME
-+<U3082> /xa4/xe2 HIRAGANA LETTER MO
-+<U3083> /xa4/xe3 HIRAGANA LETTER SMALL YA
-+<U3084> /xa4/xe4 HIRAGANA LETTER YA
-+<U3085> /xa4/xe5 HIRAGANA LETTER SMALL YU
-+<U3086> /xa4/xe6 HIRAGANA LETTER YU
-+<U3087> /xa4/xe7 HIRAGANA LETTER SMALL YO
-+<U3088> /xa4/xe8 HIRAGANA LETTER YO
-+<U3089> /xa4/xe9 HIRAGANA LETTER RA
-+<U308A> /xa4/xea HIRAGANA LETTER RI
-+<U308B> /xa4/xeb HIRAGANA LETTER RU
-+<U308C> /xa4/xec HIRAGANA LETTER RE
-+<U308D> /xa4/xed HIRAGANA LETTER RO
-+<U308E> /xa4/xee HIRAGANA LETTER SMALL WA
-+<U308F> /xa4/xef HIRAGANA LETTER WA
-+<U3090> /xa4/xf0 HIRAGANA LETTER WI
-+<U3091> /xa4/xf1 HIRAGANA LETTER WE
-+<U3092> /xa4/xf2 HIRAGANA LETTER WO
-+<U3093> /xa4/xf3 HIRAGANA LETTER N
-+<U30A1> /xa5/xa1 KATAKANA LETTER SMALL A
-+<U30A2> /xa5/xa2 KATAKANA LETTER A
-+<U30A3> /xa5/xa3 KATAKANA LETTER SMALL I
-+<U30A4> /xa5/xa4 KATAKANA LETTER I
-+<U30A5> /xa5/xa5 KATAKANA LETTER SMALL U
-+<U30A6> /xa5/xa6 KATAKANA LETTER U
-+<U30A7> /xa5/xa7 KATAKANA LETTER SMALL E
-+<U30A8> /xa5/xa8 KATAKANA LETTER E
-+<U30A9> /xa5/xa9 KATAKANA LETTER SMALL O
-+<U30AA> /xa5/xaa KATAKANA LETTER O
-+<U30AB> /xa5/xab KATAKANA LETTER KA
-+<U30AC> /xa5/xac KATAKANA LETTER GA
-+<U30AD> /xa5/xad KATAKANA LETTER KI
-+<U30AE> /xa5/xae KATAKANA LETTER GI
-+<U30AF> /xa5/xaf KATAKANA LETTER KU
-+<U30B0> /xa5/xb0 KATAKANA LETTER GU
-+<U30B1> /xa5/xb1 KATAKANA LETTER KE
-+<U30B2> /xa5/xb2 KATAKANA LETTER GE
-+<U30B3> /xa5/xb3 KATAKANA LETTER KO
-+<U30B4> /xa5/xb4 KATAKANA LETTER GO
-+<U30B5> /xa5/xb5 KATAKANA LETTER SA
-+<U30B6> /xa5/xb6 KATAKANA LETTER ZA
-+<U30B7> /xa5/xb7 KATAKANA LETTER SI
-+<U30B8> /xa5/xb8 KATAKANA LETTER ZI
-+<U30B9> /xa5/xb9 KATAKANA LETTER SU
-+<U30BA> /xa5/xba KATAKANA LETTER ZU
-+<U30BB> /xa5/xbb KATAKANA LETTER SE
-+<U30BC> /xa5/xbc KATAKANA LETTER ZE
-+<U30BD> /xa5/xbd KATAKANA LETTER SO
-+<U30BE> /xa5/xbe KATAKANA LETTER ZO
-+<U30BF> /xa5/xbf KATAKANA LETTER TA
-+<U30C0> /xa5/xc0 KATAKANA LETTER DA
-+<U30C1> /xa5/xc1 KATAKANA LETTER TI
-+<U30C2> /xa5/xc2 KATAKANA LETTER DI
-+<U30C3> /xa5/xc3 KATAKANA LETTER SMALL TU
-+<U30C4> /xa5/xc4 KATAKANA LETTER TU
-+<U30C5> /xa5/xc5 KATAKANA LETTER DU
-+<U30C6> /xa5/xc6 KATAKANA LETTER TE
-+<U30C7> /xa5/xc7 KATAKANA LETTER DE
-+<U30C8> /xa5/xc8 KATAKANA LETTER TO
-+<U30C9> /xa5/xc9 KATAKANA LETTER DO
-+<U30CA> /xa5/xca KATAKANA LETTER NA
-+<U30CB> /xa5/xcb KATAKANA LETTER NI
-+<U30CC> /xa5/xcc KATAKANA LETTER NU
-+<U30CD> /xa5/xcd KATAKANA LETTER NE
-+<U30CE> /xa5/xce KATAKANA LETTER NO
-+<U30CF> /xa5/xcf KATAKANA LETTER HA
-+<U30D0> /xa5/xd0 KATAKANA LETTER BA
-+<U30D1> /xa5/xd1 KATAKANA LETTER PA
-+<U30D2> /xa5/xd2 KATAKANA LETTER HI
-+<U30D3> /xa5/xd3 KATAKANA LETTER BI
-+<U30D4> /xa5/xd4 KATAKANA LETTER PI
-+<U30D5> /xa5/xd5 KATAKANA LETTER HU
-+<U30D6> /xa5/xd6 KATAKANA LETTER BU
-+<U30D7> /xa5/xd7 KATAKANA LETTER PU
-+<U30D8> /xa5/xd8 KATAKANA LETTER HE
-+<U30D9> /xa5/xd9 KATAKANA LETTER BE
-+<U30DA> /xa5/xda KATAKANA LETTER PE
-+<U30DB> /xa5/xdb KATAKANA LETTER HO
-+<U30DC> /xa5/xdc KATAKANA LETTER BO
-+<U30DD> /xa5/xdd KATAKANA LETTER PO
-+<U30DE> /xa5/xde KATAKANA LETTER MA
-+<U30DF> /xa5/xdf KATAKANA LETTER MI
-+<U30E0> /xa5/xe0 KATAKANA LETTER MU
-+<U30E1> /xa5/xe1 KATAKANA LETTER ME
-+<U30E2> /xa5/xe2 KATAKANA LETTER MO
-+<U30E3> /xa5/xe3 KATAKANA LETTER SMALL YA
-+<U30E4> /xa5/xe4 KATAKANA LETTER YA
-+<U30E5> /xa5/xe5 KATAKANA LETTER SMALL YU
-+<U30E6> /xa5/xe6 KATAKANA LETTER YU
-+<U30E7> /xa5/xe7 KATAKANA LETTER SMALL YO
-+<U30E8> /xa5/xe8 KATAKANA LETTER YO
-+<U30E9> /xa5/xe9 KATAKANA LETTER RA
-+<U30EA> /xa5/xea KATAKANA LETTER RI
-+<U30EB> /xa5/xeb KATAKANA LETTER RU
-+<U30EC> /xa5/xec KATAKANA LETTER RE
-+<U30ED> /xa5/xed KATAKANA LETTER RO
-+<U30EE> /xa5/xee KATAKANA LETTER SMALL WA
-+<U30EF> /xa5/xef KATAKANA LETTER WA
-+<U30F0> /xa5/xf0 KATAKANA LETTER WI
-+<U30F1> /xa5/xf1 KATAKANA LETTER WE
-+<U30F2> /xa5/xf2 KATAKANA LETTER WO
-+<U30F3> /xa5/xf3 KATAKANA LETTER N
-+<U30F4> /xa5/xf4 KATAKANA LETTER VU
-+<U30F5> /xa5/xf5 KATAKANA LETTER SMALL KA
-+<U30F6> /xa5/xf6 KATAKANA LETTER SMALL KE
-+<U0391> /xa6/xa1 GREEK CAPITAL LETTER ALPHA
-+<U0392> /xa6/xa2 GREEK CAPITAL LETTER BETA
-+<U0393> /xa6/xa3 GREEK CAPITAL LETTER GAMMA
-+<U0394> /xa6/xa4 GREEK CAPITAL LETTER DELTA
-+<U0395> /xa6/xa5 GREEK CAPITAL LETTER EPSILON
-+<U0396> /xa6/xa6 GREEK CAPITAL LETTER ZETA
-+<U0397> /xa6/xa7 GREEK CAPITAL LETTER ETA
-+<U0398> /xa6/xa8 GREEK CAPITAL LETTER THETA
-+<U0399> /xa6/xa9 GREEK CAPITAL LETTER IOTA
-+<U039A> /xa6/xaa GREEK CAPITAL LETTER KAPPA
-+<U039B> /xa6/xab GREEK CAPITAL LETTER LAMDA
-+<U039C> /xa6/xac GREEK CAPITAL LETTER MU
-+<U039D> /xa6/xad GREEK CAPITAL LETTER NU
-+<U039E> /xa6/xae GREEK CAPITAL LETTER XI
-+<U039F> /xa6/xaf GREEK CAPITAL LETTER OMICRON
-+<U03A0> /xa6/xb0 GREEK CAPITAL LETTER PI
-+<U03A1> /xa6/xb1 GREEK CAPITAL LETTER RHO
-+<U03A3> /xa6/xb2 GREEK CAPITAL LETTER SIGMA
-+<U03A4> /xa6/xb3 GREEK CAPITAL LETTER TAU
-+<U03A5> /xa6/xb4 GREEK CAPITAL LETTER UPSILON
-+<U03A6> /xa6/xb5 GREEK CAPITAL LETTER PHI
-+<U03A7> /xa6/xb6 GREEK CAPITAL LETTER CHI
-+<U03A8> /xa6/xb7 GREEK CAPITAL LETTER PSI
-+<U03A9> /xa6/xb8 GREEK CAPITAL LETTER OMEGA
-+<U03B1> /xa6/xc1 GREEK SMALL LETTER ALPHA
-+<U03B2> /xa6/xc2 GREEK SMALL LETTER BETA
-+<U03B3> /xa6/xc3 GREEK SMALL LETTER GAMMA
-+<U03B4> /xa6/xc4 GREEK SMALL LETTER DELTA
-+<U03B5> /xa6/xc5 GREEK SMALL LETTER EPSILON
-+<U03B6> /xa6/xc6 GREEK SMALL LETTER ZETA
-+<U03B7> /xa6/xc7 GREEK SMALL LETTER ETA
-+<U03B8> /xa6/xc8 GREEK SMALL LETTER THETA
-+<U03B9> /xa6/xc9 GREEK SMALL LETTER IOTA
-+<U03BA> /xa6/xca GREEK SMALL LETTER KAPPA
-+<U03BB> /xa6/xcb GREEK SMALL LETTER LAMDA
-+<U03BC> /xa6/xcc GREEK SMALL LETTER MU
-+<U03BD> /xa6/xcd GREEK SMALL LETTER NU
-+<U03BE> /xa6/xce GREEK SMALL LETTER XI
-+<U03BF> /xa6/xcf GREEK SMALL LETTER OMICRON
-+<U03C0> /xa6/xd0 GREEK SMALL LETTER PI
-+<U03C1> /xa6/xd1 GREEK SMALL LETTER RHO
-+<U03C3> /xa6/xd2 GREEK SMALL LETTER SIGMA
-+<U03C4> /xa6/xd3 GREEK SMALL LETTER TAU
-+<U03C5> /xa6/xd4 GREEK SMALL LETTER UPSILON
-+<U03C6> /xa6/xd5 GREEK SMALL LETTER PHI
-+<U03C7> /xa6/xd6 GREEK SMALL LETTER CHI
-+<U03C8> /xa6/xd7 GREEK SMALL LETTER PSI
-+<U03C9> /xa6/xd8 GREEK SMALL LETTER OMEGA
-+<U0410> /xa7/xa1 CYRILLIC CAPITAL LETTER A
-+<U0411> /xa7/xa2 CYRILLIC CAPITAL LETTER BE
-+<U0412> /xa7/xa3 CYRILLIC CAPITAL LETTER VE
-+<U0413> /xa7/xa4 CYRILLIC CAPITAL LETTER GHE
-+<U0414> /xa7/xa5 CYRILLIC CAPITAL LETTER DE
-+<U0415> /xa7/xa6 CYRILLIC CAPITAL LETTER IE
-+<U0401> /xa7/xa7 CYRILLIC CAPITAL LETTER IO
-+<U0416> /xa7/xa8 CYRILLIC CAPITAL LETTER ZHE
-+<U0417> /xa7/xa9 CYRILLIC CAPITAL LETTER ZE
-+<U0418> /xa7/xaa CYRILLIC CAPITAL LETTER I
-+<U0419> /xa7/xab CYRILLIC CAPITAL LETTER SHORT I
-+<U041A> /xa7/xac CYRILLIC CAPITAL LETTER KA
-+<U041B> /xa7/xad CYRILLIC CAPITAL LETTER EL
-+<U041C> /xa7/xae CYRILLIC CAPITAL LETTER EM
-+<U041D> /xa7/xaf CYRILLIC CAPITAL LETTER EN
-+<U041E> /xa7/xb0 CYRILLIC CAPITAL LETTER O
-+<U041F> /xa7/xb1 CYRILLIC CAPITAL LETTER PE
-+<U0420> /xa7/xb2 CYRILLIC CAPITAL LETTER ER
-+<U0421> /xa7/xb3 CYRILLIC CAPITAL LETTER ES
-+<U0422> /xa7/xb4 CYRILLIC CAPITAL LETTER TE
-+<U0423> /xa7/xb5 CYRILLIC CAPITAL LETTER U
-+<U0424> /xa7/xb6 CYRILLIC CAPITAL LETTER EF
-+<U0425> /xa7/xb7 CYRILLIC CAPITAL LETTER HA
-+<U0426> /xa7/xb8 CYRILLIC CAPITAL LETTER TSE
-+<U0427> /xa7/xb9 CYRILLIC CAPITAL LETTER CHE
-+<U0428> /xa7/xba CYRILLIC CAPITAL LETTER SHA
-+<U0429> /xa7/xbb CYRILLIC CAPITAL LETTER SHCHA
-+<U042A> /xa7/xbc CYRILLIC CAPITAL LETTER HARD SIGN
-+<U042B> /xa7/xbd CYRILLIC CAPITAL LETTER YERU
-+<U042C> /xa7/xbe CYRILLIC CAPITAL LETTER SOFT SIGN
-+<U042D> /xa7/xbf CYRILLIC CAPITAL LETTER E
-+<U042E> /xa7/xc0 CYRILLIC CAPITAL LETTER YU
-+<U042F> /xa7/xc1 CYRILLIC CAPITAL LETTER YA
-+<U0430> /xa7/xd1 CYRILLIC SMALL LETTER A
-+<U0431> /xa7/xd2 CYRILLIC SMALL LETTER BE
-+<U0432> /xa7/xd3 CYRILLIC SMALL LETTER VE
-+<U0433> /xa7/xd4 CYRILLIC SMALL LETTER GHE
-+<U0434> /xa7/xd5 CYRILLIC SMALL LETTER DE
-+<U0435> /xa7/xd6 CYRILLIC SMALL LETTER IE
-+<U0451> /xa7/xd7 CYRILLIC SMALL LETTER IO
-+<U0436> /xa7/xd8 CYRILLIC SMALL LETTER ZHE
-+<U0437> /xa7/xd9 CYRILLIC SMALL LETTER ZE
-+<U0438> /xa7/xda CYRILLIC SMALL LETTER I
-+<U0439> /xa7/xdb CYRILLIC SMALL LETTER SHORT I
-+<U043A> /xa7/xdc CYRILLIC SMALL LETTER KA
-+<U043B> /xa7/xdd CYRILLIC SMALL LETTER EL
-+<U043C> /xa7/xde CYRILLIC SMALL LETTER EM
-+<U043D> /xa7/xdf CYRILLIC SMALL LETTER EN
-+<U043E> /xa7/xe0 CYRILLIC SMALL LETTER O
-+<U043F> /xa7/xe1 CYRILLIC SMALL LETTER PE
-+<U0440> /xa7/xe2 CYRILLIC SMALL LETTER ER
-+<U0441> /xa7/xe3 CYRILLIC SMALL LETTER ES
-+<U0442> /xa7/xe4 CYRILLIC SMALL LETTER TE
-+<U0443> /xa7/xe5 CYRILLIC SMALL LETTER U
-+<U0444> /xa7/xe6 CYRILLIC SMALL LETTER EF
-+<U0445> /xa7/xe7 CYRILLIC SMALL LETTER HA
-+<U0446> /xa7/xe8 CYRILLIC SMALL LETTER TSE
-+<U0447> /xa7/xe9 CYRILLIC SMALL LETTER CHE
-+<U0448> /xa7/xea CYRILLIC SMALL LETTER SHA
-+<U0449> /xa7/xeb CYRILLIC SMALL LETTER SHCHA
-+<U044A> /xa7/xec CYRILLIC SMALL LETTER HARD SIGN
-+<U044B> /xa7/xed CYRILLIC SMALL LETTER YERU
-+<U044C> /xa7/xee CYRILLIC SMALL LETTER SOFT SIGN
-+<U044D> /xa7/xef CYRILLIC SMALL LETTER E
-+<U044E> /xa7/xf0 CYRILLIC SMALL LETTER YU
-+<U044F> /xa7/xf1 CYRILLIC SMALL LETTER YA
-+<U2500> /xa8/xa1 BOX DRAWINGS LIGHT HORIZONTAL
-+<U2502> /xa8/xa2 BOX DRAWINGS LIGHT VERTICAL
-+<U250C> /xa8/xa3 BOX DRAWINGS LIGHT DOWN AND RIGHT
-+<U2510> /xa8/xa4 BOX DRAWINGS LIGHT DOWN AND LEFT
-+<U2518> /xa8/xa5 BOX DRAWINGS LIGHT UP AND LEFT
-+<U2514> /xa8/xa6 BOX DRAWINGS LIGHT UP AND RIGHT
-+<U251C> /xa8/xa7 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-+<U252C> /xa8/xa8 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-+<U2524> /xa8/xa9 BOX DRAWINGS LIGHT VERTICAL AND LEFT
-+<U2534> /xa8/xaa BOX DRAWINGS LIGHT UP AND HORIZONTAL
-+<U253C> /xa8/xab BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-+<U2501> /xa8/xac BOX DRAWINGS HEAVY HORIZONTAL
-+<U2503> /xa8/xad BOX DRAWINGS HEAVY VERTICAL
-+<U250F> /xa8/xae BOX DRAWINGS HEAVY DOWN AND RIGHT
-+<U2513> /xa8/xaf BOX DRAWINGS HEAVY DOWN AND LEFT
-+<U251B> /xa8/xb0 BOX DRAWINGS HEAVY UP AND LEFT
-+<U2517> /xa8/xb1 BOX DRAWINGS HEAVY UP AND RIGHT
-+<U2523> /xa8/xb2 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-+<U2533> /xa8/xb3 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-+<U252B> /xa8/xb4 BOX DRAWINGS HEAVY VERTICAL AND LEFT
-+<U253B> /xa8/xb5 BOX DRAWINGS HEAVY UP AND HORIZONTAL
-+<U254B> /xa8/xb6 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-+<U2520> /xa8/xb7 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-+<U252F> /xa8/xb8 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-+<U2528> /xa8/xb9 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-+<U2537> /xa8/xba BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-+<U253F> /xa8/xbb BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-+<U251D> /xa8/xbc BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-+<U2530> /xa8/xbd BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-+<U2525> /xa8/xbe BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-+<U2538> /xa8/xbf BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-+<U2542> /xa8/xc0 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-+<U2460> /xad/xa1 CIRCLED DIGIT ONE
-+<U2461> /xad/xa2 CIRCLED DIGIT TWO
-+<U2462> /xad/xa3 CIRCLED DIGIT THREE
-+<U2463> /xad/xa4 CIRCLED DIGIT FOUR
-+<U2464> /xad/xa5 CIRCLED DIGIT FIVE
-+<U2465> /xad/xa6 CIRCLED DIGIT SIX
-+<U2466> /xad/xa7 CIRCLED DIGIT SEVEN
-+<U2467> /xad/xa8 CIRCLED DIGIT EIGHT
-+<U2468> /xad/xa9 CIRCLED DIGIT NINE
-+<U2469> /xad/xaa CIRCLED NUMBER TEN
-+<U246A> /xad/xab CIRCLED NUMBER ELEVEN
-+<U246B> /xad/xac CIRCLED NUMBER TWELVE
-+<U246C> /xad/xad CIRCLED NUMBER THIRTEEN
-+<U246D> /xad/xae CIRCLED NUMBER FOURTEEN
-+<U246E> /xad/xaf CIRCLED NUMBER FIFTEEN
-+<U246F> /xad/xb0 CIRCLED NUMBER SIXTEEN
-+<U2470> /xad/xb1 CIRCLED NUMBER SEVENTEEN
-+<U2471> /xad/xb2 CIRCLED NUMBER EIGHTEEN
-+<U2472> /xad/xb3 CIRCLED NUMBER NINETEEN
-+<U2473> /xad/xb4 CIRCLED NUMBER TWENTY
-+<U2160> /xad/xb5 ROMAN NUMERAL ONE
-+<U2161> /xad/xb6 ROMAN NUMERAL TWO
-+<U2162> /xad/xb7 ROMAN NUMERAL THREE
-+<U2163> /xad/xb8 ROMAN NUMERAL FOUR
-+<U2164> /xad/xb9 ROMAN NUMERAL FIVE
-+<U2165> /xad/xba ROMAN NUMERAL SIX
-+<U2166> /xad/xbb ROMAN NUMERAL SEVEN
-+<U2167> /xad/xbc ROMAN NUMERAL EIGHT
-+<U2168> /xad/xbd ROMAN NUMERAL NINE
-+<U2169> /xad/xbe ROMAN NUMERAL TEN
-+<U3349> /xad/xc0 SQUARE MIRI
-+<U3314> /xad/xc1 SQUARE KIRO
-+<U3322> /xad/xc2 SQUARE SENTI
-+<U334D> /xad/xc3 SQUARE MEETORU
-+<U3318> /xad/xc4 SQUARE GURAMU
-+<U3327> /xad/xc5 SQUARE TON
-+<U3303> /xad/xc6 SQUARE AARU
-+<U3336> /xad/xc7 SQUARE HEKUTAARU
-+<U3351> /xad/xc8 SQUARE RITTORU
-+<U3357> /xad/xc9 SQUARE WATTO
-+<U330D> /xad/xca SQUARE KARORII
-+<U3326> /xad/xcb SQUARE DORU
-+<U3323> /xad/xcc SQUARE SENTO
-+<U332B> /xad/xcd SQUARE PAASENTO
-+<U334A> /xad/xce SQUARE MIRIBAARU
-+<U333B> /xad/xcf SQUARE PEEZI
-+<U339C> /xad/xd0 SQUARE MM
-+<U339D> /xad/xd1 SQUARE CM
-+<U339E> /xad/xd2 SQUARE KM
-+<U338E> /xad/xd3 SQUARE MG
-+<U338F> /xad/xd4 SQUARE KG
-+<U33C4> /xad/xd5 SQUARE CC
-+<U33A1> /xad/xd6 SQUARE M SQUARED
-+<U337B> /xad/xdf SQUARE ERA NAME HEISEI
-+<U301D> /xad/xe0 REVERSED DOUBLE PRIME QUOTATION MARK
-+<U301F> /xad/xe1 LOW DOUBLE PRIME QUOTATION MARK
-+<U2116> /xad/xe2 NUMERO SIGN
-+<U33CD> /xad/xe3 SQUARE KK
-+<U2121> /xad/xe4 TELEPHONE SIGN
-+<U32A4> /xad/xe5 CIRCLED IDEOGRAPH HIGH
-+<U32A5> /xad/xe6 CIRCLED IDEOGRAPH CENTRE
-+<U32A6> /xad/xe7 CIRCLED IDEOGRAPH LOW
-+<U32A7> /xad/xe8 CIRCLED IDEOGRAPH LEFT
-+<U32A8> /xad/xe9 CIRCLED IDEOGRAPH RIGHT
-+<U3231> /xad/xea PARENTHESIZED IDEOGRAPH STOCK
-+<U3232> /xad/xeb PARENTHESIZED IDEOGRAPH HAVE
-+<U3239> /xad/xec PARENTHESIZED IDEOGRAPH REPRESENT
-+<U337E> /xad/xed SQUARE ERA NAME MEIZI
-+<U337D> /xad/xee SQUARE ERA NAME TAISYOU
-+<U337C> /xad/xef SQUARE ERA NAME SYOUWA
-+%IRREVERSIBLE%<U2252> /xad/xf0 APPROXIMATELY EQUAL TO OR THE IMAGE OF
-+%IRREVERSIBLE%<U2261> /xad/xf1 IDENTICAL TO
-+%IRREVERSIBLE%<U222B> /xad/xf2 INTEGRAL
-+<U222E> /xad/xf3 CONTOUR INTEGRAL
-+<U2211> /xad/xf4 N-ARY SUMMATION
-+%IRREVERSIBLE%<U221A> /xad/xf5 SQUARE ROOT
-+%IRREVERSIBLE%<U22A5> /xad/xf6 UP TACK
-+%IRREVERSIBLE%<U2220> /xad/xf7 ANGLE
-+<U221F> /xad/xf8 RIGHT ANGLE
-+<U22BF> /xad/xf9 RIGHT TRIANGLE
-+%IRREVERSIBLE%<U2235> /xad/xfa BECAUSE
-+%IRREVERSIBLE%<U2229> /xad/xfb INTERSECTION
-+%IRREVERSIBLE%<U222A> /xad/xfc UNION
-+<U4E9C> /xb0/xa1 <CJK>
-+<U5516> /xb0/xa2 <CJK>
-+<U5A03> /xb0/xa3 <CJK>
-+<U963F> /xb0/xa4 <CJK>
-+<U54C0> /xb0/xa5 <CJK>
-+<U611B> /xb0/xa6 <CJK>
-+<U6328> /xb0/xa7 <CJK>
-+<U59F6> /xb0/xa8 <CJK>
-+<U9022> /xb0/xa9 <CJK>
-+<U8475> /xb0/xaa <CJK>
-+<U831C> /xb0/xab <CJK>
-+<U7A50> /xb0/xac <CJK>
-+<U60AA> /xb0/xad <CJK>
-+<U63E1> /xb0/xae <CJK>
-+<U6E25> /xb0/xaf <CJK>
-+<U65ED> /xb0/xb0 <CJK>
-+<U8466> /xb0/xb1 <CJK>
-+<U82A6> /xb0/xb2 <CJK>
-+<U9BF5> /xb0/xb3 <CJK>
-+<U6893> /xb0/xb4 <CJK>
-+<U5727> /xb0/xb5 <CJK>
-+<U65A1> /xb0/xb6 <CJK>
-+<U6271> /xb0/xb7 <CJK>
-+<U5B9B> /xb0/xb8 <CJK>
-+<U59D0> /xb0/xb9 <CJK>
-+<U867B> /xb0/xba <CJK>
-+<U98F4> /xb0/xbb <CJK>
-+<U7D62> /xb0/xbc <CJK>
-+<U7DBE> /xb0/xbd <CJK>
-+<U9B8E> /xb0/xbe <CJK>
-+<U6216> /xb0/xbf <CJK>
-+<U7C9F> /xb0/xc0 <CJK>
-+<U88B7> /xb0/xc1 <CJK>
-+<U5B89> /xb0/xc2 <CJK>
-+<U5EB5> /xb0/xc3 <CJK>
-+<U6309> /xb0/xc4 <CJK>
-+<U6697> /xb0/xc5 <CJK>
-+<U6848> /xb0/xc6 <CJK>
-+<U95C7> /xb0/xc7 <CJK>
-+<U978D> /xb0/xc8 <CJK>
-+<U674F> /xb0/xc9 <CJK>
-+<U4EE5> /xb0/xca <CJK>
-+<U4F0A> /xb0/xcb <CJK>
-+<U4F4D> /xb0/xcc <CJK>
-+<U4F9D> /xb0/xcd <CJK>
-+<U5049> /xb0/xce <CJK>
-+<U56F2> /xb0/xcf <CJK>
-+<U5937> /xb0/xd0 <CJK>
-+<U59D4> /xb0/xd1 <CJK>
-+<U5A01> /xb0/xd2 <CJK>
-+<U5C09> /xb0/xd3 <CJK>
-+<U60DF> /xb0/xd4 <CJK>
-+<U610F> /xb0/xd5 <CJK>
-+<U6170> /xb0/xd6 <CJK>
-+<U6613> /xb0/xd7 <CJK>
-+<U6905> /xb0/xd8 <CJK>
-+<U70BA> /xb0/xd9 <CJK>
-+<U754F> /xb0/xda <CJK>
-+<U7570> /xb0/xdb <CJK>
-+<U79FB> /xb0/xdc <CJK>
-+<U7DAD> /xb0/xdd <CJK>
-+<U7DEF> /xb0/xde <CJK>
-+<U80C3> /xb0/xdf <CJK>
-+<U840E> /xb0/xe0 <CJK>
-+<U8863> /xb0/xe1 <CJK>
-+<U8B02> /xb0/xe2 <CJK>
-+<U9055> /xb0/xe3 <CJK>
-+<U907A> /xb0/xe4 <CJK>
-+<U533B> /xb0/xe5 <CJK>
-+<U4E95> /xb0/xe6 <CJK>
-+<U4EA5> /xb0/xe7 <CJK>
-+<U57DF> /xb0/xe8 <CJK>
-+<U80B2> /xb0/xe9 <CJK>
-+<U90C1> /xb0/xea <CJK>
-+<U78EF> /xb0/xeb <CJK>
-+<U4E00> /xb0/xec <CJK>
-+<U58F1> /xb0/xed <CJK>
-+<U6EA2> /xb0/xee <CJK>
-+<U9038> /xb0/xef <CJK>
-+<U7A32> /xb0/xf0 <CJK>
-+<U8328> /xb0/xf1 <CJK>
-+<U828B> /xb0/xf2 <CJK>
-+<U9C2F> /xb0/xf3 <CJK>
-+<U5141> /xb0/xf4 <CJK>
-+<U5370> /xb0/xf5 <CJK>
-+<U54BD> /xb0/xf6 <CJK>
-+<U54E1> /xb0/xf7 <CJK>
-+<U56E0> /xb0/xf8 <CJK>
-+<U59FB> /xb0/xf9 <CJK>
-+<U5F15> /xb0/xfa <CJK>
-+<U98F2> /xb0/xfb <CJK>
-+<U6DEB> /xb0/xfc <CJK>
-+<U80E4> /xb0/xfd <CJK>
-+<U852D> /xb0/xfe <CJK>
-+<U9662> /xb1/xa1 <CJK>
-+<U9670> /xb1/xa2 <CJK>
-+<U96A0> /xb1/xa3 <CJK>
-+<U97FB> /xb1/xa4 <CJK>
-+<U540B> /xb1/xa5 <CJK>
-+<U53F3> /xb1/xa6 <CJK>
-+<U5B87> /xb1/xa7 <CJK>
-+<U70CF> /xb1/xa8 <CJK>
-+<U7FBD> /xb1/xa9 <CJK>
-+<U8FC2> /xb1/xaa <CJK>
-+<U96E8> /xb1/xab <CJK>
-+<U536F> /xb1/xac <CJK>
-+<U9D5C> /xb1/xad <CJK>
-+<U7ABA> /xb1/xae <CJK>
-+<U4E11> /xb1/xaf <CJK>
-+<U7893> /xb1/xb0 <CJK>
-+<U81FC> /xb1/xb1 <CJK>
-+<U6E26> /xb1/xb2 <CJK>
-+<U5618> /xb1/xb3 <CJK>
-+<U5504> /xb1/xb4 <CJK>
-+<U6B1D> /xb1/xb5 <CJK>
-+<U851A> /xb1/xb6 <CJK>
-+<U9C3B> /xb1/xb7 <CJK>
-+<U59E5> /xb1/xb8 <CJK>
-+<U53A9> /xb1/xb9 <CJK>
-+<U6D66> /xb1/xba <CJK>
-+<U74DC> /xb1/xbb <CJK>
-+<U958F> /xb1/xbc <CJK>
-+<U5642> /xb1/xbd <CJK>
-+<U4E91> /xb1/xbe <CJK>
-+<U904B> /xb1/xbf <CJK>
-+<U96F2> /xb1/xc0 <CJK>
-+<U834F> /xb1/xc1 <CJK>
-+<U990C> /xb1/xc2 <CJK>
-+<U53E1> /xb1/xc3 <CJK>
-+<U55B6> /xb1/xc4 <CJK>
-+<U5B30> /xb1/xc5 <CJK>
-+<U5F71> /xb1/xc6 <CJK>
-+<U6620> /xb1/xc7 <CJK>
-+<U66F3> /xb1/xc8 <CJK>
-+<U6804> /xb1/xc9 <CJK>
-+<U6C38> /xb1/xca <CJK>
-+<U6CF3> /xb1/xcb <CJK>
-+<U6D29> /xb1/xcc <CJK>
-+<U745B> /xb1/xcd <CJK>
-+<U76C8> /xb1/xce <CJK>
-+<U7A4E> /xb1/xcf <CJK>
-+<U9834> /xb1/xd0 <CJK>
-+<U82F1> /xb1/xd1 <CJK>
-+<U885B> /xb1/xd2 <CJK>
-+<U8A60> /xb1/xd3 <CJK>
-+<U92ED> /xb1/xd4 <CJK>
-+<U6DB2> /xb1/xd5 <CJK>
-+<U75AB> /xb1/xd6 <CJK>
-+<U76CA> /xb1/xd7 <CJK>
-+<U99C5> /xb1/xd8 <CJK>
-+<U60A6> /xb1/xd9 <CJK>
-+<U8B01> /xb1/xda <CJK>
-+<U8D8A> /xb1/xdb <CJK>
-+<U95B2> /xb1/xdc <CJK>
-+<U698E> /xb1/xdd <CJK>
-+<U53AD> /xb1/xde <CJK>
-+<U5186> /xb1/xdf <CJK>
-+<U5712> /xb1/xe0 <CJK>
-+<U5830> /xb1/xe1 <CJK>
-+<U5944> /xb1/xe2 <CJK>
-+<U5BB4> /xb1/xe3 <CJK>
-+<U5EF6> /xb1/xe4 <CJK>
-+<U6028> /xb1/xe5 <CJK>
-+<U63A9> /xb1/xe6 <CJK>
-+<U63F4> /xb1/xe7 <CJK>
-+<U6CBF> /xb1/xe8 <CJK>
-+<U6F14> /xb1/xe9 <CJK>
-+<U708E> /xb1/xea <CJK>
-+<U7114> /xb1/xeb <CJK>
-+<U7159> /xb1/xec <CJK>
-+<U71D5> /xb1/xed <CJK>
-+<U733F> /xb1/xee <CJK>
-+<U7E01> /xb1/xef <CJK>
-+<U8276> /xb1/xf0 <CJK>
-+<U82D1> /xb1/xf1 <CJK>
-+<U8597> /xb1/xf2 <CJK>
-+<U9060> /xb1/xf3 <CJK>
-+<U925B> /xb1/xf4 <CJK>
-+<U9D1B> /xb1/xf5 <CJK>
-+<U5869> /xb1/xf6 <CJK>
-+<U65BC> /xb1/xf7 <CJK>
-+<U6C5A> /xb1/xf8 <CJK>
-+<U7525> /xb1/xf9 <CJK>
-+<U51F9> /xb1/xfa <CJK>
-+<U592E> /xb1/xfb <CJK>
-+<U5965> /xb1/xfc <CJK>
-+<U5F80> /xb1/xfd <CJK>
-+<U5FDC> /xb1/xfe <CJK>
-+<U62BC> /xb2/xa1 <CJK>
-+<U65FA> /xb2/xa2 <CJK>
-+<U6A2A> /xb2/xa3 <CJK>
-+<U6B27> /xb2/xa4 <CJK>
-+<U6BB4> /xb2/xa5 <CJK>
-+<U738B> /xb2/xa6 <CJK>
-+<U7FC1> /xb2/xa7 <CJK>
-+<U8956> /xb2/xa8 <CJK>
-+<U9D2C> /xb2/xa9 <CJK>
-+<U9D0E> /xb2/xaa <CJK>
-+<U9EC4> /xb2/xab <CJK>
-+<U5CA1> /xb2/xac <CJK>
-+<U6C96> /xb2/xad <CJK>
-+<U837B> /xb2/xae <CJK>
-+<U5104> /xb2/xaf <CJK>
-+<U5C4B> /xb2/xb0 <CJK>
-+<U61B6> /xb2/xb1 <CJK>
-+<U81C6> /xb2/xb2 <CJK>
-+<U6876> /xb2/xb3 <CJK>
-+<U7261> /xb2/xb4 <CJK>
-+<U4E59> /xb2/xb5 <CJK>
-+<U4FFA> /xb2/xb6 <CJK>
-+<U5378> /xb2/xb7 <CJK>
-+<U6069> /xb2/xb8 <CJK>
-+<U6E29> /xb2/xb9 <CJK>
-+<U7A4F> /xb2/xba <CJK>
-+<U97F3> /xb2/xbb <CJK>
-+<U4E0B> /xb2/xbc <CJK>
-+<U5316> /xb2/xbd <CJK>
-+<U4EEE> /xb2/xbe <CJK>
-+<U4F55> /xb2/xbf <CJK>
-+<U4F3D> /xb2/xc0 <CJK>
-+<U4FA1> /xb2/xc1 <CJK>
-+<U4F73> /xb2/xc2 <CJK>
-+<U52A0> /xb2/xc3 <CJK>
-+<U53EF> /xb2/xc4 <CJK>
-+<U5609> /xb2/xc5 <CJK>
-+<U590F> /xb2/xc6 <CJK>
-+<U5AC1> /xb2/xc7 <CJK>
-+<U5BB6> /xb2/xc8 <CJK>
-+<U5BE1> /xb2/xc9 <CJK>
-+<U79D1> /xb2/xca <CJK>
-+<U6687> /xb2/xcb <CJK>
-+<U679C> /xb2/xcc <CJK>
-+<U67B6> /xb2/xcd <CJK>
-+<U6B4C> /xb2/xce <CJK>
-+<U6CB3> /xb2/xcf <CJK>
-+<U706B> /xb2/xd0 <CJK>
-+<U73C2> /xb2/xd1 <CJK>
-+<U798D> /xb2/xd2 <CJK>
-+<U79BE> /xb2/xd3 <CJK>
-+<U7A3C> /xb2/xd4 <CJK>
-+<U7B87> /xb2/xd5 <CJK>
-+<U82B1> /xb2/xd6 <CJK>
-+<U82DB> /xb2/xd7 <CJK>
-+<U8304> /xb2/xd8 <CJK>
-+<U8377> /xb2/xd9 <CJK>
-+<U83EF> /xb2/xda <CJK>
-+<U83D3> /xb2/xdb <CJK>
-+<U8766> /xb2/xdc <CJK>
-+<U8AB2> /xb2/xdd <CJK>
-+<U5629> /xb2/xde <CJK>
-+<U8CA8> /xb2/xdf <CJK>
-+<U8FE6> /xb2/xe0 <CJK>
-+<U904E> /xb2/xe1 <CJK>
-+<U971E> /xb2/xe2 <CJK>
-+<U868A> /xb2/xe3 <CJK>
-+<U4FC4> /xb2/xe4 <CJK>
-+<U5CE8> /xb2/xe5 <CJK>
-+<U6211> /xb2/xe6 <CJK>
-+<U7259> /xb2/xe7 <CJK>
-+<U753B> /xb2/xe8 <CJK>
-+<U81E5> /xb2/xe9 <CJK>
-+<U82BD> /xb2/xea <CJK>
-+<U86FE> /xb2/xeb <CJK>
-+<U8CC0> /xb2/xec <CJK>
-+<U96C5> /xb2/xed <CJK>
-+<U9913> /xb2/xee <CJK>
-+<U99D5> /xb2/xef <CJK>
-+<U4ECB> /xb2/xf0 <CJK>
-+<U4F1A> /xb2/xf1 <CJK>
-+<U89E3> /xb2/xf2 <CJK>
-+<U56DE> /xb2/xf3 <CJK>
-+<U584A> /xb2/xf4 <CJK>
-+<U58CA> /xb2/xf5 <CJK>
-+<U5EFB> /xb2/xf6 <CJK>
-+<U5FEB> /xb2/xf7 <CJK>
-+<U602A> /xb2/xf8 <CJK>
-+<U6094> /xb2/xf9 <CJK>
-+<U6062> /xb2/xfa <CJK>
-+<U61D0> /xb2/xfb <CJK>
-+<U6212> /xb2/xfc <CJK>
-+<U62D0> /xb2/xfd <CJK>
-+<U6539> /xb2/xfe <CJK>
-+<U9B41> /xb3/xa1 <CJK>
-+<U6666> /xb3/xa2 <CJK>
-+<U68B0> /xb3/xa3 <CJK>
-+<U6D77> /xb3/xa4 <CJK>
-+<U7070> /xb3/xa5 <CJK>
-+<U754C> /xb3/xa6 <CJK>
-+<U7686> /xb3/xa7 <CJK>
-+<U7D75> /xb3/xa8 <CJK>
-+<U82A5> /xb3/xa9 <CJK>
-+<U87F9> /xb3/xaa <CJK>
-+<U958B> /xb3/xab <CJK>
-+<U968E> /xb3/xac <CJK>
-+<U8C9D> /xb3/xad <CJK>
-+<U51F1> /xb3/xae <CJK>
-+<U52BE> /xb3/xaf <CJK>
-+<U5916> /xb3/xb0 <CJK>
-+<U54B3> /xb3/xb1 <CJK>
-+<U5BB3> /xb3/xb2 <CJK>
-+<U5D16> /xb3/xb3 <CJK>
-+<U6168> /xb3/xb4 <CJK>
-+<U6982> /xb3/xb5 <CJK>
-+<U6DAF> /xb3/xb6 <CJK>
-+<U788D> /xb3/xb7 <CJK>
-+<U84CB> /xb3/xb8 <CJK>
-+<U8857> /xb3/xb9 <CJK>
-+<U8A72> /xb3/xba <CJK>
-+<U93A7> /xb3/xbb <CJK>
-+<U9AB8> /xb3/xbc <CJK>
-+<U6D6C> /xb3/xbd <CJK>
-+<U99A8> /xb3/xbe <CJK>
-+<U86D9> /xb3/xbf <CJK>
-+<U57A3> /xb3/xc0 <CJK>
-+<U67FF> /xb3/xc1 <CJK>
-+<U86CE> /xb3/xc2 <CJK>
-+<U920E> /xb3/xc3 <CJK>
-+<U5283> /xb3/xc4 <CJK>
-+<U5687> /xb3/xc5 <CJK>
-+<U5404> /xb3/xc6 <CJK>
-+<U5ED3> /xb3/xc7 <CJK>
-+<U62E1> /xb3/xc8 <CJK>
-+<U64B9> /xb3/xc9 <CJK>
-+<U683C> /xb3/xca <CJK>
-+<U6838> /xb3/xcb <CJK>
-+<U6BBB> /xb3/xcc <CJK>
-+<U7372> /xb3/xcd <CJK>
-+<U78BA> /xb3/xce <CJK>
-+<U7A6B> /xb3/xcf <CJK>
-+<U899A> /xb3/xd0 <CJK>
-+<U89D2> /xb3/xd1 <CJK>
-+<U8D6B> /xb3/xd2 <CJK>
-+<U8F03> /xb3/xd3 <CJK>
-+<U90ED> /xb3/xd4 <CJK>
-+<U95A3> /xb3/xd5 <CJK>
-+<U9694> /xb3/xd6 <CJK>
-+<U9769> /xb3/xd7 <CJK>
-+<U5B66> /xb3/xd8 <CJK>
-+<U5CB3> /xb3/xd9 <CJK>
-+<U697D> /xb3/xda <CJK>
-+<U984D> /xb3/xdb <CJK>
-+<U984E> /xb3/xdc <CJK>
-+<U639B> /xb3/xdd <CJK>
-+<U7B20> /xb3/xde <CJK>
-+<U6A2B> /xb3/xdf <CJK>
-+<U6A7F> /xb3/xe0 <CJK>
-+<U68B6> /xb3/xe1 <CJK>
-+<U9C0D> /xb3/xe2 <CJK>
-+<U6F5F> /xb3/xe3 <CJK>
-+<U5272> /xb3/xe4 <CJK>
-+<U559D> /xb3/xe5 <CJK>
-+<U6070> /xb3/xe6 <CJK>
-+<U62EC> /xb3/xe7 <CJK>
-+<U6D3B> /xb3/xe8 <CJK>
-+<U6E07> /xb3/xe9 <CJK>
-+<U6ED1> /xb3/xea <CJK>
-+<U845B> /xb3/xeb <CJK>
-+<U8910> /xb3/xec <CJK>
-+<U8F44> /xb3/xed <CJK>
-+<U4E14> /xb3/xee <CJK>
-+<U9C39> /xb3/xef <CJK>
-+<U53F6> /xb3/xf0 <CJK>
-+<U691B> /xb3/xf1 <CJK>
-+<U6A3A> /xb3/xf2 <CJK>
-+<U9784> /xb3/xf3 <CJK>
-+<U682A> /xb3/xf4 <CJK>
-+<U515C> /xb3/xf5 <CJK>
-+<U7AC3> /xb3/xf6 <CJK>
-+<U84B2> /xb3/xf7 <CJK>
-+<U91DC> /xb3/xf8 <CJK>
-+<U938C> /xb3/xf9 <CJK>
-+<U565B> /xb3/xfa <CJK>
-+<U9D28> /xb3/xfb <CJK>
-+<U6822> /xb3/xfc <CJK>
-+<U8305> /xb3/xfd <CJK>
-+<U8431> /xb3/xfe <CJK>
-+<U7CA5> /xb4/xa1 <CJK>
-+<U5208> /xb4/xa2 <CJK>
-+<U82C5> /xb4/xa3 <CJK>
-+<U74E6> /xb4/xa4 <CJK>
-+<U4E7E> /xb4/xa5 <CJK>
-+<U4F83> /xb4/xa6 <CJK>
-+<U51A0> /xb4/xa7 <CJK>
-+<U5BD2> /xb4/xa8 <CJK>
-+<U520A> /xb4/xa9 <CJK>
-+<U52D8> /xb4/xaa <CJK>
-+<U52E7> /xb4/xab <CJK>
-+<U5DFB> /xb4/xac <CJK>
-+<U559A> /xb4/xad <CJK>
-+<U582A> /xb4/xae <CJK>
-+<U59E6> /xb4/xaf <CJK>
-+<U5B8C> /xb4/xb0 <CJK>
-+<U5B98> /xb4/xb1 <CJK>
-+<U5BDB> /xb4/xb2 <CJK>
-+<U5E72> /xb4/xb3 <CJK>
-+<U5E79> /xb4/xb4 <CJK>
-+<U60A3> /xb4/xb5 <CJK>
-+<U611F> /xb4/xb6 <CJK>
-+<U6163> /xb4/xb7 <CJK>
-+<U61BE> /xb4/xb8 <CJK>
-+<U63DB> /xb4/xb9 <CJK>
-+<U6562> /xb4/xba <CJK>
-+<U67D1> /xb4/xbb <CJK>
-+<U6853> /xb4/xbc <CJK>
-+<U68FA> /xb4/xbd <CJK>
-+<U6B3E> /xb4/xbe <CJK>
-+<U6B53> /xb4/xbf <CJK>
-+<U6C57> /xb4/xc0 <CJK>
-+<U6F22> /xb4/xc1 <CJK>
-+<U6F97> /xb4/xc2 <CJK>
-+<U6F45> /xb4/xc3 <CJK>
-+<U74B0> /xb4/xc4 <CJK>
-+<U7518> /xb4/xc5 <CJK>
-+<U76E3> /xb4/xc6 <CJK>
-+<U770B> /xb4/xc7 <CJK>
-+<U7AFF> /xb4/xc8 <CJK>
-+<U7BA1> /xb4/xc9 <CJK>
-+<U7C21> /xb4/xca <CJK>
-+<U7DE9> /xb4/xcb <CJK>
-+<U7F36> /xb4/xcc <CJK>
-+<U7FF0> /xb4/xcd <CJK>
-+<U809D> /xb4/xce <CJK>
-+<U8266> /xb4/xcf <CJK>
-+<U839E> /xb4/xd0 <CJK>
-+<U89B3> /xb4/xd1 <CJK>
-+<U8ACC> /xb4/xd2 <CJK>
-+<U8CAB> /xb4/xd3 <CJK>
-+<U9084> /xb4/xd4 <CJK>
-+<U9451> /xb4/xd5 <CJK>
-+<U9593> /xb4/xd6 <CJK>
-+<U9591> /xb4/xd7 <CJK>
-+<U95A2> /xb4/xd8 <CJK>
-+<U9665> /xb4/xd9 <CJK>
-+<U97D3> /xb4/xda <CJK>
-+<U9928> /xb4/xdb <CJK>
-+<U8218> /xb4/xdc <CJK>
-+<U4E38> /xb4/xdd <CJK>
-+<U542B> /xb4/xde <CJK>
-+<U5CB8> /xb4/xdf <CJK>
-+<U5DCC> /xb4/xe0 <CJK>
-+<U73A9> /xb4/xe1 <CJK>
-+<U764C> /xb4/xe2 <CJK>
-+<U773C> /xb4/xe3 <CJK>
-+<U5CA9> /xb4/xe4 <CJK>
-+<U7FEB> /xb4/xe5 <CJK>
-+<U8D0B> /xb4/xe6 <CJK>
-+<U96C1> /xb4/xe7 <CJK>
-+<U9811> /xb4/xe8 <CJK>
-+<U9854> /xb4/xe9 <CJK>
-+<U9858> /xb4/xea <CJK>
-+<U4F01> /xb4/xeb <CJK>
-+<U4F0E> /xb4/xec <CJK>
-+<U5371> /xb4/xed <CJK>
-+<U559C> /xb4/xee <CJK>
-+<U5668> /xb4/xef <CJK>
-+<U57FA> /xb4/xf0 <CJK>
-+<U5947> /xb4/xf1 <CJK>
-+<U5B09> /xb4/xf2 <CJK>
-+<U5BC4> /xb4/xf3 <CJK>
-+<U5C90> /xb4/xf4 <CJK>
-+<U5E0C> /xb4/xf5 <CJK>
-+<U5E7E> /xb4/xf6 <CJK>
-+<U5FCC> /xb4/xf7 <CJK>
-+<U63EE> /xb4/xf8 <CJK>
-+<U673A> /xb4/xf9 <CJK>
-+<U65D7> /xb4/xfa <CJK>
-+<U65E2> /xb4/xfb <CJK>
-+<U671F> /xb4/xfc <CJK>
-+<U68CB> /xb4/xfd <CJK>
-+<U68C4> /xb4/xfe <CJK>
-+<U6A5F> /xb5/xa1 <CJK>
-+<U5E30> /xb5/xa2 <CJK>
-+<U6BC5> /xb5/xa3 <CJK>
-+<U6C17> /xb5/xa4 <CJK>
-+<U6C7D> /xb5/xa5 <CJK>
-+<U757F> /xb5/xa6 <CJK>
-+<U7948> /xb5/xa7 <CJK>
-+<U5B63> /xb5/xa8 <CJK>
-+<U7A00> /xb5/xa9 <CJK>
-+<U7D00> /xb5/xaa <CJK>
-+<U5FBD> /xb5/xab <CJK>
-+<U898F> /xb5/xac <CJK>
-+<U8A18> /xb5/xad <CJK>
-+<U8CB4> /xb5/xae <CJK>
-+<U8D77> /xb5/xaf <CJK>
-+<U8ECC> /xb5/xb0 <CJK>
-+<U8F1D> /xb5/xb1 <CJK>
-+<U98E2> /xb5/xb2 <CJK>
-+<U9A0E> /xb5/xb3 <CJK>
-+<U9B3C> /xb5/xb4 <CJK>
-+<U4E80> /xb5/xb5 <CJK>
-+<U507D> /xb5/xb6 <CJK>
-+<U5100> /xb5/xb7 <CJK>
-+<U5993> /xb5/xb8 <CJK>
-+<U5B9C> /xb5/xb9 <CJK>
-+<U622F> /xb5/xba <CJK>
-+<U6280> /xb5/xbb <CJK>
-+<U64EC> /xb5/xbc <CJK>
-+<U6B3A> /xb5/xbd <CJK>
-+<U72A0> /xb5/xbe <CJK>
-+<U7591> /xb5/xbf <CJK>
-+<U7947> /xb5/xc0 <CJK>
-+<U7FA9> /xb5/xc1 <CJK>
-+<U87FB> /xb5/xc2 <CJK>
-+<U8ABC> /xb5/xc3 <CJK>
-+<U8B70> /xb5/xc4 <CJK>
-+<U63AC> /xb5/xc5 <CJK>
-+<U83CA> /xb5/xc6 <CJK>
-+<U97A0> /xb5/xc7 <CJK>
-+<U5409> /xb5/xc8 <CJK>
-+<U5403> /xb5/xc9 <CJK>
-+<U55AB> /xb5/xca <CJK>
-+<U6854> /xb5/xcb <CJK>
-+<U6A58> /xb5/xcc <CJK>
-+<U8A70> /xb5/xcd <CJK>
-+<U7827> /xb5/xce <CJK>
-+<U6775> /xb5/xcf <CJK>
-+<U9ECD> /xb5/xd0 <CJK>
-+<U5374> /xb5/xd1 <CJK>
-+<U5BA2> /xb5/xd2 <CJK>
-+<U811A> /xb5/xd3 <CJK>
-+<U8650> /xb5/xd4 <CJK>
-+<U9006> /xb5/xd5 <CJK>
-+<U4E18> /xb5/xd6 <CJK>
-+<U4E45> /xb5/xd7 <CJK>
-+<U4EC7> /xb5/xd8 <CJK>
-+<U4F11> /xb5/xd9 <CJK>
-+<U53CA> /xb5/xda <CJK>
-+<U5438> /xb5/xdb <CJK>
-+<U5BAE> /xb5/xdc <CJK>
-+<U5F13> /xb5/xdd <CJK>
-+<U6025> /xb5/xde <CJK>
-+<U6551> /xb5/xdf <CJK>
-+<U673D> /xb5/xe0 <CJK>
-+<U6C42> /xb5/xe1 <CJK>
-+<U6C72> /xb5/xe2 <CJK>
-+<U6CE3> /xb5/xe3 <CJK>
-+<U7078> /xb5/xe4 <CJK>
-+<U7403> /xb5/xe5 <CJK>
-+<U7A76> /xb5/xe6 <CJK>
-+<U7AAE> /xb5/xe7 <CJK>
-+<U7B08> /xb5/xe8 <CJK>
-+<U7D1A> /xb5/xe9 <CJK>
-+<U7CFE> /xb5/xea <CJK>
-+<U7D66> /xb5/xeb <CJK>
-+<U65E7> /xb5/xec <CJK>
-+<U725B> /xb5/xed <CJK>
-+<U53BB> /xb5/xee <CJK>
-+<U5C45> /xb5/xef <CJK>
-+<U5DE8> /xb5/xf0 <CJK>
-+<U62D2> /xb5/xf1 <CJK>
-+<U62E0> /xb5/xf2 <CJK>
-+<U6319> /xb5/xf3 <CJK>
-+<U6E20> /xb5/xf4 <CJK>
-+<U865A> /xb5/xf5 <CJK>
-+<U8A31> /xb5/xf6 <CJK>
-+<U8DDD> /xb5/xf7 <CJK>
-+<U92F8> /xb5/xf8 <CJK>
-+<U6F01> /xb5/xf9 <CJK>
-+<U79A6> /xb5/xfa <CJK>
-+<U9B5A> /xb5/xfb <CJK>
-+<U4EA8> /xb5/xfc <CJK>
-+<U4EAB> /xb5/xfd <CJK>
-+<U4EAC> /xb5/xfe <CJK>
-+<U4F9B> /xb6/xa1 <CJK>
-+<U4FA0> /xb6/xa2 <CJK>
-+<U50D1> /xb6/xa3 <CJK>
-+<U5147> /xb6/xa4 <CJK>
-+<U7AF6> /xb6/xa5 <CJK>
-+<U5171> /xb6/xa6 <CJK>
-+<U51F6> /xb6/xa7 <CJK>
-+<U5354> /xb6/xa8 <CJK>
-+<U5321> /xb6/xa9 <CJK>
-+<U537F> /xb6/xaa <CJK>
-+<U53EB> /xb6/xab <CJK>
-+<U55AC> /xb6/xac <CJK>
-+<U5883> /xb6/xad <CJK>
-+<U5CE1> /xb6/xae <CJK>
-+<U5F37> /xb6/xaf <CJK>
-+<U5F4A> /xb6/xb0 <CJK>
-+<U602F> /xb6/xb1 <CJK>
-+<U6050> /xb6/xb2 <CJK>
-+<U606D> /xb6/xb3 <CJK>
-+<U631F> /xb6/xb4 <CJK>
-+<U6559> /xb6/xb5 <CJK>
-+<U6A4B> /xb6/xb6 <CJK>
-+<U6CC1> /xb6/xb7 <CJK>
-+<U72C2> /xb6/xb8 <CJK>
-+<U72ED> /xb6/xb9 <CJK>
-+<U77EF> /xb6/xba <CJK>
-+<U80F8> /xb6/xbb <CJK>
-+<U8105> /xb6/xbc <CJK>
-+<U8208> /xb6/xbd <CJK>
-+<U854E> /xb6/xbe <CJK>
-+<U90F7> /xb6/xbf <CJK>
-+<U93E1> /xb6/xc0 <CJK>
-+<U97FF> /xb6/xc1 <CJK>
-+<U9957> /xb6/xc2 <CJK>
-+<U9A5A> /xb6/xc3 <CJK>
-+<U4EF0> /xb6/xc4 <CJK>
-+<U51DD> /xb6/xc5 <CJK>
-+<U5C2D> /xb6/xc6 <CJK>
-+<U6681> /xb6/xc7 <CJK>
-+<U696D> /xb6/xc8 <CJK>
-+<U5C40> /xb6/xc9 <CJK>
-+<U66F2> /xb6/xca <CJK>
-+<U6975> /xb6/xcb <CJK>
-+<U7389> /xb6/xcc <CJK>
-+<U6850> /xb6/xcd <CJK>
-+<U7C81> /xb6/xce <CJK>
-+<U50C5> /xb6/xcf <CJK>
-+<U52E4> /xb6/xd0 <CJK>
-+<U5747> /xb6/xd1 <CJK>
-+<U5DFE> /xb6/xd2 <CJK>
-+<U9326> /xb6/xd3 <CJK>
-+<U65A4> /xb6/xd4 <CJK>
-+<U6B23> /xb6/xd5 <CJK>
-+<U6B3D> /xb6/xd6 <CJK>
-+<U7434> /xb6/xd7 <CJK>
-+<U7981> /xb6/xd8 <CJK>
-+<U79BD> /xb6/xd9 <CJK>
-+<U7B4B> /xb6/xda <CJK>
-+<U7DCA> /xb6/xdb <CJK>
-+<U82B9> /xb6/xdc <CJK>
-+<U83CC> /xb6/xdd <CJK>
-+<U887F> /xb6/xde <CJK>
-+<U895F> /xb6/xdf <CJK>
-+<U8B39> /xb6/xe0 <CJK>
-+<U8FD1> /xb6/xe1 <CJK>
-+<U91D1> /xb6/xe2 <CJK>
-+<U541F> /xb6/xe3 <CJK>
-+<U9280> /xb6/xe4 <CJK>
-+<U4E5D> /xb6/xe5 <CJK>
-+<U5036> /xb6/xe6 <CJK>
-+<U53E5> /xb6/xe7 <CJK>
-+<U533A> /xb6/xe8 <CJK>
-+<U72D7> /xb6/xe9 <CJK>
-+<U7396> /xb6/xea <CJK>
-+<U77E9> /xb6/xeb <CJK>
-+<U82E6> /xb6/xec <CJK>
-+<U8EAF> /xb6/xed <CJK>
-+<U99C6> /xb6/xee <CJK>
-+<U99C8> /xb6/xef <CJK>
-+<U99D2> /xb6/xf0 <CJK>
-+<U5177> /xb6/xf1 <CJK>
-+<U611A> /xb6/xf2 <CJK>
-+<U865E> /xb6/xf3 <CJK>
-+<U55B0> /xb6/xf4 <CJK>
-+<U7A7A> /xb6/xf5 <CJK>
-+<U5076> /xb6/xf6 <CJK>
-+<U5BD3> /xb6/xf7 <CJK>
-+<U9047> /xb6/xf8 <CJK>
-+<U9685> /xb6/xf9 <CJK>
-+<U4E32> /xb6/xfa <CJK>
-+<U6ADB> /xb6/xfb <CJK>
-+<U91E7> /xb6/xfc <CJK>
-+<U5C51> /xb6/xfd <CJK>
-+<U5C48> /xb6/xfe <CJK>
-+<U6398> /xb7/xa1 <CJK>
-+<U7A9F> /xb7/xa2 <CJK>
-+<U6C93> /xb7/xa3 <CJK>
-+<U9774> /xb7/xa4 <CJK>
-+<U8F61> /xb7/xa5 <CJK>
-+<U7AAA> /xb7/xa6 <CJK>
-+<U718A> /xb7/xa7 <CJK>
-+<U9688> /xb7/xa8 <CJK>
-+<U7C82> /xb7/xa9 <CJK>
-+<U6817> /xb7/xaa <CJK>
-+<U7E70> /xb7/xab <CJK>
-+<U6851> /xb7/xac <CJK>
-+<U936C> /xb7/xad <CJK>
-+<U52F2> /xb7/xae <CJK>
-+<U541B> /xb7/xaf <CJK>
-+<U85AB> /xb7/xb0 <CJK>
-+<U8A13> /xb7/xb1 <CJK>
-+<U7FA4> /xb7/xb2 <CJK>
-+<U8ECD> /xb7/xb3 <CJK>
-+<U90E1> /xb7/xb4 <CJK>
-+<U5366> /xb7/xb5 <CJK>
-+<U8888> /xb7/xb6 <CJK>
-+<U7941> /xb7/xb7 <CJK>
-+<U4FC2> /xb7/xb8 <CJK>
-+<U50BE> /xb7/xb9 <CJK>
-+<U5211> /xb7/xba <CJK>
-+<U5144> /xb7/xbb <CJK>
-+<U5553> /xb7/xbc <CJK>
-+<U572D> /xb7/xbd <CJK>
-+<U73EA> /xb7/xbe <CJK>
-+<U578B> /xb7/xbf <CJK>
-+<U5951> /xb7/xc0 <CJK>
-+<U5F62> /xb7/xc1 <CJK>
-+<U5F84> /xb7/xc2 <CJK>
-+<U6075> /xb7/xc3 <CJK>
-+<U6176> /xb7/xc4 <CJK>
-+<U6167> /xb7/xc5 <CJK>
-+<U61A9> /xb7/xc6 <CJK>
-+<U63B2> /xb7/xc7 <CJK>
-+<U643A> /xb7/xc8 <CJK>
-+<U656C> /xb7/xc9 <CJK>
-+<U666F> /xb7/xca <CJK>
-+<U6842> /xb7/xcb <CJK>
-+<U6E13> /xb7/xcc <CJK>
-+<U7566> /xb7/xcd <CJK>
-+<U7A3D> /xb7/xce <CJK>
-+<U7CFB> /xb7/xcf <CJK>
-+<U7D4C> /xb7/xd0 <CJK>
-+<U7D99> /xb7/xd1 <CJK>
-+<U7E4B> /xb7/xd2 <CJK>
-+<U7F6B> /xb7/xd3 <CJK>
-+<U830E> /xb7/xd4 <CJK>
-+<U834A> /xb7/xd5 <CJK>
-+<U86CD> /xb7/xd6 <CJK>
-+<U8A08> /xb7/xd7 <CJK>
-+<U8A63> /xb7/xd8 <CJK>
-+<U8B66> /xb7/xd9 <CJK>
-+<U8EFD> /xb7/xda <CJK>
-+<U981A> /xb7/xdb <CJK>
-+<U9D8F> /xb7/xdc <CJK>
-+<U82B8> /xb7/xdd <CJK>
-+<U8FCE> /xb7/xde <CJK>
-+<U9BE8> /xb7/xdf <CJK>
-+<U5287> /xb7/xe0 <CJK>
-+<U621F> /xb7/xe1 <CJK>
-+<U6483> /xb7/xe2 <CJK>
-+<U6FC0> /xb7/xe3 <CJK>
-+<U9699> /xb7/xe4 <CJK>
-+<U6841> /xb7/xe5 <CJK>
-+<U5091> /xb7/xe6 <CJK>
-+<U6B20> /xb7/xe7 <CJK>
-+<U6C7A> /xb7/xe8 <CJK>
-+<U6F54> /xb7/xe9 <CJK>
-+<U7A74> /xb7/xea <CJK>
-+<U7D50> /xb7/xeb <CJK>
-+<U8840> /xb7/xec <CJK>
-+<U8A23> /xb7/xed <CJK>
-+<U6708> /xb7/xee <CJK>
-+<U4EF6> /xb7/xef <CJK>
-+<U5039> /xb7/xf0 <CJK>
-+<U5026> /xb7/xf1 <CJK>
-+<U5065> /xb7/xf2 <CJK>
-+<U517C> /xb7/xf3 <CJK>
-+<U5238> /xb7/xf4 <CJK>
-+<U5263> /xb7/xf5 <CJK>
-+<U55A7> /xb7/xf6 <CJK>
-+<U570F> /xb7/xf7 <CJK>
-+<U5805> /xb7/xf8 <CJK>
-+<U5ACC> /xb7/xf9 <CJK>
-+<U5EFA> /xb7/xfa <CJK>
-+<U61B2> /xb7/xfb <CJK>
-+<U61F8> /xb7/xfc <CJK>
-+<U62F3> /xb7/xfd <CJK>
-+<U6372> /xb7/xfe <CJK>
-+<U691C> /xb8/xa1 <CJK>
-+<U6A29> /xb8/xa2 <CJK>
-+<U727D> /xb8/xa3 <CJK>
-+<U72AC> /xb8/xa4 <CJK>
-+<U732E> /xb8/xa5 <CJK>
-+<U7814> /xb8/xa6 <CJK>
-+<U786F> /xb8/xa7 <CJK>
-+<U7D79> /xb8/xa8 <CJK>
-+<U770C> /xb8/xa9 <CJK>
-+<U80A9> /xb8/xaa <CJK>
-+<U898B> /xb8/xab <CJK>
-+<U8B19> /xb8/xac <CJK>
-+<U8CE2> /xb8/xad <CJK>
-+<U8ED2> /xb8/xae <CJK>
-+<U9063> /xb8/xaf <CJK>
-+<U9375> /xb8/xb0 <CJK>
-+<U967A> /xb8/xb1 <CJK>
-+<U9855> /xb8/xb2 <CJK>
-+<U9A13> /xb8/xb3 <CJK>
-+<U9E78> /xb8/xb4 <CJK>
-+<U5143> /xb8/xb5 <CJK>
-+<U539F> /xb8/xb6 <CJK>
-+<U53B3> /xb8/xb7 <CJK>
-+<U5E7B> /xb8/xb8 <CJK>
-+<U5F26> /xb8/xb9 <CJK>
-+<U6E1B> /xb8/xba <CJK>
-+<U6E90> /xb8/xbb <CJK>
-+<U7384> /xb8/xbc <CJK>
-+<U73FE> /xb8/xbd <CJK>
-+<U7D43> /xb8/xbe <CJK>
-+<U8237> /xb8/xbf <CJK>
-+<U8A00> /xb8/xc0 <CJK>
-+<U8AFA> /xb8/xc1 <CJK>
-+<U9650> /xb8/xc2 <CJK>
-+<U4E4E> /xb8/xc3 <CJK>
-+<U500B> /xb8/xc4 <CJK>
-+<U53E4> /xb8/xc5 <CJK>
-+<U547C> /xb8/xc6 <CJK>
-+<U56FA> /xb8/xc7 <CJK>
-+<U59D1> /xb8/xc8 <CJK>
-+<U5B64> /xb8/xc9 <CJK>
-+<U5DF1> /xb8/xca <CJK>
-+<U5EAB> /xb8/xcb <CJK>
-+<U5F27> /xb8/xcc <CJK>
-+<U6238> /xb8/xcd <CJK>
-+<U6545> /xb8/xce <CJK>
-+<U67AF> /xb8/xcf <CJK>
-+<U6E56> /xb8/xd0 <CJK>
-+<U72D0> /xb8/xd1 <CJK>
-+<U7CCA> /xb8/xd2 <CJK>
-+<U88B4> /xb8/xd3 <CJK>
-+<U80A1> /xb8/xd4 <CJK>
-+<U80E1> /xb8/xd5 <CJK>
-+<U83F0> /xb8/xd6 <CJK>
-+<U864E> /xb8/xd7 <CJK>
-+<U8A87> /xb8/xd8 <CJK>
-+<U8DE8> /xb8/xd9 <CJK>
-+<U9237> /xb8/xda <CJK>
-+<U96C7> /xb8/xdb <CJK>
-+<U9867> /xb8/xdc <CJK>
-+<U9F13> /xb8/xdd <CJK>
-+<U4E94> /xb8/xde <CJK>
-+<U4E92> /xb8/xdf <CJK>
-+<U4F0D> /xb8/xe0 <CJK>
-+<U5348> /xb8/xe1 <CJK>
-+<U5449> /xb8/xe2 <CJK>
-+<U543E> /xb8/xe3 <CJK>
-+<U5A2F> /xb8/xe4 <CJK>
-+<U5F8C> /xb8/xe5 <CJK>
-+<U5FA1> /xb8/xe6 <CJK>
-+<U609F> /xb8/xe7 <CJK>
-+<U68A7> /xb8/xe8 <CJK>
-+<U6A8E> /xb8/xe9 <CJK>
-+<U745A> /xb8/xea <CJK>
-+<U7881> /xb8/xeb <CJK>
-+<U8A9E> /xb8/xec <CJK>
-+<U8AA4> /xb8/xed <CJK>
-+<U8B77> /xb8/xee <CJK>
-+<U9190> /xb8/xef <CJK>
-+<U4E5E> /xb8/xf0 <CJK>
-+<U9BC9> /xb8/xf1 <CJK>
-+<U4EA4> /xb8/xf2 <CJK>
-+<U4F7C> /xb8/xf3 <CJK>
-+<U4FAF> /xb8/xf4 <CJK>
-+<U5019> /xb8/xf5 <CJK>
-+<U5016> /xb8/xf6 <CJK>
-+<U5149> /xb8/xf7 <CJK>
-+<U516C> /xb8/xf8 <CJK>
-+<U529F> /xb8/xf9 <CJK>
-+<U52B9> /xb8/xfa <CJK>
-+<U52FE> /xb8/xfb <CJK>
-+<U539A> /xb8/xfc <CJK>
-+<U53E3> /xb8/xfd <CJK>
-+<U5411> /xb8/xfe <CJK>
-+<U540E> /xb9/xa1 <CJK>
-+<U5589> /xb9/xa2 <CJK>
-+<U5751> /xb9/xa3 <CJK>
-+<U57A2> /xb9/xa4 <CJK>
-+<U597D> /xb9/xa5 <CJK>
-+<U5B54> /xb9/xa6 <CJK>
-+<U5B5D> /xb9/xa7 <CJK>
-+<U5B8F> /xb9/xa8 <CJK>
-+<U5DE5> /xb9/xa9 <CJK>
-+<U5DE7> /xb9/xaa <CJK>
-+<U5DF7> /xb9/xab <CJK>
-+<U5E78> /xb9/xac <CJK>
-+<U5E83> /xb9/xad <CJK>
-+<U5E9A> /xb9/xae <CJK>
-+<U5EB7> /xb9/xaf <CJK>
-+<U5F18> /xb9/xb0 <CJK>
-+<U6052> /xb9/xb1 <CJK>
-+<U614C> /xb9/xb2 <CJK>
-+<U6297> /xb9/xb3 <CJK>
-+<U62D8> /xb9/xb4 <CJK>
-+<U63A7> /xb9/xb5 <CJK>
-+<U653B> /xb9/xb6 <CJK>
-+<U6602> /xb9/xb7 <CJK>
-+<U6643> /xb9/xb8 <CJK>
-+<U66F4> /xb9/xb9 <CJK>
-+<U676D> /xb9/xba <CJK>
-+<U6821> /xb9/xbb <CJK>
-+<U6897> /xb9/xbc <CJK>
-+<U69CB> /xb9/xbd <CJK>
-+<U6C5F> /xb9/xbe <CJK>
-+<U6D2A> /xb9/xbf <CJK>
-+<U6D69> /xb9/xc0 <CJK>
-+<U6E2F> /xb9/xc1 <CJK>
-+<U6E9D> /xb9/xc2 <CJK>
-+<U7532> /xb9/xc3 <CJK>
-+<U7687> /xb9/xc4 <CJK>
-+<U786C> /xb9/xc5 <CJK>
-+<U7A3F> /xb9/xc6 <CJK>
-+<U7CE0> /xb9/xc7 <CJK>
-+<U7D05> /xb9/xc8 <CJK>
-+<U7D18> /xb9/xc9 <CJK>
-+<U7D5E> /xb9/xca <CJK>
-+<U7DB1> /xb9/xcb <CJK>
-+<U8015> /xb9/xcc <CJK>
-+<U8003> /xb9/xcd <CJK>
-+<U80AF> /xb9/xce <CJK>
-+<U80B1> /xb9/xcf <CJK>
-+<U8154> /xb9/xd0 <CJK>
-+<U818F> /xb9/xd1 <CJK>
-+<U822A> /xb9/xd2 <CJK>
-+<U8352> /xb9/xd3 <CJK>
-+<U884C> /xb9/xd4 <CJK>
-+<U8861> /xb9/xd5 <CJK>
-+<U8B1B> /xb9/xd6 <CJK>
-+<U8CA2> /xb9/xd7 <CJK>
-+<U8CFC> /xb9/xd8 <CJK>
-+<U90CA> /xb9/xd9 <CJK>
-+<U9175> /xb9/xda <CJK>
-+<U9271> /xb9/xdb <CJK>
-+<U783F> /xb9/xdc <CJK>
-+<U92FC> /xb9/xdd <CJK>
-+<U95A4> /xb9/xde <CJK>
-+<U964D> /xb9/xdf <CJK>
-+<U9805> /xb9/xe0 <CJK>
-+<U9999> /xb9/xe1 <CJK>
-+<U9AD8> /xb9/xe2 <CJK>
-+<U9D3B> /xb9/xe3 <CJK>
-+<U525B> /xb9/xe4 <CJK>
-+<U52AB> /xb9/xe5 <CJK>
-+<U53F7> /xb9/xe6 <CJK>
-+<U5408> /xb9/xe7 <CJK>
-+<U58D5> /xb9/xe8 <CJK>
-+<U62F7> /xb9/xe9 <CJK>
-+<U6FE0> /xb9/xea <CJK>
-+<U8C6A> /xb9/xeb <CJK>
-+<U8F5F> /xb9/xec <CJK>
-+<U9EB9> /xb9/xed <CJK>
-+<U514B> /xb9/xee <CJK>
-+<U523B> /xb9/xef <CJK>
-+<U544A> /xb9/xf0 <CJK>
-+<U56FD> /xb9/xf1 <CJK>
-+<U7A40> /xb9/xf2 <CJK>
-+<U9177> /xb9/xf3 <CJK>
-+<U9D60> /xb9/xf4 <CJK>
-+<U9ED2> /xb9/xf5 <CJK>
-+<U7344> /xb9/xf6 <CJK>
-+<U6F09> /xb9/xf7 <CJK>
-+<U8170> /xb9/xf8 <CJK>
-+<U7511> /xb9/xf9 <CJK>
-+<U5FFD> /xb9/xfa <CJK>
-+<U60DA> /xb9/xfb <CJK>
-+<U9AA8> /xb9/xfc <CJK>
-+<U72DB> /xb9/xfd <CJK>
-+<U8FBC> /xb9/xfe <CJK>
-+<U6B64> /xba/xa1 <CJK>
-+<U9803> /xba/xa2 <CJK>
-+<U4ECA> /xba/xa3 <CJK>
-+<U56F0> /xba/xa4 <CJK>
-+<U5764> /xba/xa5 <CJK>
-+<U58BE> /xba/xa6 <CJK>
-+<U5A5A> /xba/xa7 <CJK>
-+<U6068> /xba/xa8 <CJK>
-+<U61C7> /xba/xa9 <CJK>
-+<U660F> /xba/xaa <CJK>
-+<U6606> /xba/xab <CJK>
-+<U6839> /xba/xac <CJK>
-+<U68B1> /xba/xad <CJK>
-+<U6DF7> /xba/xae <CJK>
-+<U75D5> /xba/xaf <CJK>
-+<U7D3A> /xba/xb0 <CJK>
-+<U826E> /xba/xb1 <CJK>
-+<U9B42> /xba/xb2 <CJK>
-+<U4E9B> /xba/xb3 <CJK>
-+<U4F50> /xba/xb4 <CJK>
-+<U53C9> /xba/xb5 <CJK>
-+<U5506> /xba/xb6 <CJK>
-+<U5D6F> /xba/xb7 <CJK>
-+<U5DE6> /xba/xb8 <CJK>
-+<U5DEE> /xba/xb9 <CJK>
-+<U67FB> /xba/xba <CJK>
-+<U6C99> /xba/xbb <CJK>
-+<U7473> /xba/xbc <CJK>
-+<U7802> /xba/xbd <CJK>
-+<U8A50> /xba/xbe <CJK>
-+<U9396> /xba/xbf <CJK>
-+<U88DF> /xba/xc0 <CJK>
-+<U5750> /xba/xc1 <CJK>
-+<U5EA7> /xba/xc2 <CJK>
-+<U632B> /xba/xc3 <CJK>
-+<U50B5> /xba/xc4 <CJK>
-+<U50AC> /xba/xc5 <CJK>
-+<U518D> /xba/xc6 <CJK>
-+<U6700> /xba/xc7 <CJK>
-+<U54C9> /xba/xc8 <CJK>
-+<U585E> /xba/xc9 <CJK>
-+<U59BB> /xba/xca <CJK>
-+<U5BB0> /xba/xcb <CJK>
-+<U5F69> /xba/xcc <CJK>
-+<U624D> /xba/xcd <CJK>
-+<U63A1> /xba/xce <CJK>
-+<U683D> /xba/xcf <CJK>
-+<U6B73> /xba/xd0 <CJK>
-+<U6E08> /xba/xd1 <CJK>
-+<U707D> /xba/xd2 <CJK>
-+<U91C7> /xba/xd3 <CJK>
-+<U7280> /xba/xd4 <CJK>
-+<U7815> /xba/xd5 <CJK>
-+<U7826> /xba/xd6 <CJK>
-+<U796D> /xba/xd7 <CJK>
-+<U658E> /xba/xd8 <CJK>
-+<U7D30> /xba/xd9 <CJK>
-+<U83DC> /xba/xda <CJK>
-+<U88C1> /xba/xdb <CJK>
-+<U8F09> /xba/xdc <CJK>
-+<U969B> /xba/xdd <CJK>
-+<U5264> /xba/xde <CJK>
-+<U5728> /xba/xdf <CJK>
-+<U6750> /xba/xe0 <CJK>
-+<U7F6A> /xba/xe1 <CJK>
-+<U8CA1> /xba/xe2 <CJK>
-+<U51B4> /xba/xe3 <CJK>
-+<U5742> /xba/xe4 <CJK>
-+<U962A> /xba/xe5 <CJK>
-+<U583A> /xba/xe6 <CJK>
-+<U698A> /xba/xe7 <CJK>
-+<U80B4> /xba/xe8 <CJK>
-+<U54B2> /xba/xe9 <CJK>
-+<U5D0E> /xba/xea <CJK>
-+<U57FC> /xba/xeb <CJK>
-+<U7895> /xba/xec <CJK>
-+<U9DFA> /xba/xed <CJK>
-+<U4F5C> /xba/xee <CJK>
-+<U524A> /xba/xef <CJK>
-+<U548B> /xba/xf0 <CJK>
-+<U643E> /xba/xf1 <CJK>
-+<U6628> /xba/xf2 <CJK>
-+<U6714> /xba/xf3 <CJK>
-+<U67F5> /xba/xf4 <CJK>
-+<U7A84> /xba/xf5 <CJK>
-+<U7B56> /xba/xf6 <CJK>
-+<U7D22> /xba/xf7 <CJK>
-+<U932F> /xba/xf8 <CJK>
-+<U685C> /xba/xf9 <CJK>
-+<U9BAD> /xba/xfa <CJK>
-+<U7B39> /xba/xfb <CJK>
-+<U5319> /xba/xfc <CJK>
-+<U518A> /xba/xfd <CJK>
-+<U5237> /xba/xfe <CJK>
-+<U5BDF> /xbb/xa1 <CJK>
-+<U62F6> /xbb/xa2 <CJK>
-+<U64AE> /xbb/xa3 <CJK>
-+<U64E6> /xbb/xa4 <CJK>
-+<U672D> /xbb/xa5 <CJK>
-+<U6BBA> /xbb/xa6 <CJK>
-+<U85A9> /xbb/xa7 <CJK>
-+<U96D1> /xbb/xa8 <CJK>
-+<U7690> /xbb/xa9 <CJK>
-+<U9BD6> /xbb/xaa <CJK>
-+<U634C> /xbb/xab <CJK>
-+<U9306> /xbb/xac <CJK>
-+<U9BAB> /xbb/xad <CJK>
-+<U76BF> /xbb/xae <CJK>
-+<U6652> /xbb/xaf <CJK>
-+<U4E09> /xbb/xb0 <CJK>
-+<U5098> /xbb/xb1 <CJK>
-+<U53C2> /xbb/xb2 <CJK>
-+<U5C71> /xbb/xb3 <CJK>
-+<U60E8> /xbb/xb4 <CJK>
-+<U6492> /xbb/xb5 <CJK>
-+<U6563> /xbb/xb6 <CJK>
-+<U685F> /xbb/xb7 <CJK>
-+<U71E6> /xbb/xb8 <CJK>
-+<U73CA> /xbb/xb9 <CJK>
-+<U7523> /xbb/xba <CJK>
-+<U7B97> /xbb/xbb <CJK>
-+<U7E82> /xbb/xbc <CJK>
-+<U8695> /xbb/xbd <CJK>
-+<U8B83> /xbb/xbe <CJK>
-+<U8CDB> /xbb/xbf <CJK>
-+<U9178> /xbb/xc0 <CJK>
-+<U9910> /xbb/xc1 <CJK>
-+<U65AC> /xbb/xc2 <CJK>
-+<U66AB> /xbb/xc3 <CJK>
-+<U6B8B> /xbb/xc4 <CJK>
-+<U4ED5> /xbb/xc5 <CJK>
-+<U4ED4> /xbb/xc6 <CJK>
-+<U4F3A> /xbb/xc7 <CJK>
-+<U4F7F> /xbb/xc8 <CJK>
-+<U523A> /xbb/xc9 <CJK>
-+<U53F8> /xbb/xca <CJK>
-+<U53F2> /xbb/xcb <CJK>
-+<U55E3> /xbb/xcc <CJK>
-+<U56DB> /xbb/xcd <CJK>
-+<U58EB> /xbb/xce <CJK>
-+<U59CB> /xbb/xcf <CJK>
-+<U59C9> /xbb/xd0 <CJK>
-+<U59FF> /xbb/xd1 <CJK>
-+<U5B50> /xbb/xd2 <CJK>
-+<U5C4D> /xbb/xd3 <CJK>
-+<U5E02> /xbb/xd4 <CJK>
-+<U5E2B> /xbb/xd5 <CJK>
-+<U5FD7> /xbb/xd6 <CJK>
-+<U601D> /xbb/xd7 <CJK>
-+<U6307> /xbb/xd8 <CJK>
-+<U652F> /xbb/xd9 <CJK>
-+<U5B5C> /xbb/xda <CJK>
-+<U65AF> /xbb/xdb <CJK>
-+<U65BD> /xbb/xdc <CJK>
-+<U65E8> /xbb/xdd <CJK>
-+<U679D> /xbb/xde <CJK>
-+<U6B62> /xbb/xdf <CJK>
-+<U6B7B> /xbb/xe0 <CJK>
-+<U6C0F> /xbb/xe1 <CJK>
-+<U7345> /xbb/xe2 <CJK>
-+<U7949> /xbb/xe3 <CJK>
-+<U79C1> /xbb/xe4 <CJK>
-+<U7CF8> /xbb/xe5 <CJK>
-+<U7D19> /xbb/xe6 <CJK>
-+<U7D2B> /xbb/xe7 <CJK>
-+<U80A2> /xbb/xe8 <CJK>
-+<U8102> /xbb/xe9 <CJK>
-+<U81F3> /xbb/xea <CJK>
-+<U8996> /xbb/xeb <CJK>
-+<U8A5E> /xbb/xec <CJK>
-+<U8A69> /xbb/xed <CJK>
-+<U8A66> /xbb/xee <CJK>
-+<U8A8C> /xbb/xef <CJK>
-+<U8AEE> /xbb/xf0 <CJK>
-+<U8CC7> /xbb/xf1 <CJK>
-+<U8CDC> /xbb/xf2 <CJK>
-+<U96CC> /xbb/xf3 <CJK>
-+<U98FC> /xbb/xf4 <CJK>
-+<U6B6F> /xbb/xf5 <CJK>
-+<U4E8B> /xbb/xf6 <CJK>
-+<U4F3C> /xbb/xf7 <CJK>
-+<U4F8D> /xbb/xf8 <CJK>
-+<U5150> /xbb/xf9 <CJK>
-+<U5B57> /xbb/xfa <CJK>
-+<U5BFA> /xbb/xfb <CJK>
-+<U6148> /xbb/xfc <CJK>
-+<U6301> /xbb/xfd <CJK>
-+<U6642> /xbb/xfe <CJK>
-+<U6B21> /xbc/xa1 <CJK>
-+<U6ECB> /xbc/xa2 <CJK>
-+<U6CBB> /xbc/xa3 <CJK>
-+<U723E> /xbc/xa4 <CJK>
-+<U74BD> /xbc/xa5 <CJK>
-+<U75D4> /xbc/xa6 <CJK>
-+<U78C1> /xbc/xa7 <CJK>
-+<U793A> /xbc/xa8 <CJK>
-+<U800C> /xbc/xa9 <CJK>
-+<U8033> /xbc/xaa <CJK>
-+<U81EA> /xbc/xab <CJK>
-+<U8494> /xbc/xac <CJK>
-+<U8F9E> /xbc/xad <CJK>
-+<U6C50> /xbc/xae <CJK>
-+<U9E7F> /xbc/xaf <CJK>
-+<U5F0F> /xbc/xb0 <CJK>
-+<U8B58> /xbc/xb1 <CJK>
-+<U9D2B> /xbc/xb2 <CJK>
-+<U7AFA> /xbc/xb3 <CJK>
-+<U8EF8> /xbc/xb4 <CJK>
-+<U5B8D> /xbc/xb5 <CJK>
-+<U96EB> /xbc/xb6 <CJK>
-+<U4E03> /xbc/xb7 <CJK>
-+<U53F1> /xbc/xb8 <CJK>
-+<U57F7> /xbc/xb9 <CJK>
-+<U5931> /xbc/xba <CJK>
-+<U5AC9> /xbc/xbb <CJK>
-+<U5BA4> /xbc/xbc <CJK>
-+<U6089> /xbc/xbd <CJK>
-+<U6E7F> /xbc/xbe <CJK>
-+<U6F06> /xbc/xbf <CJK>
-+<U75BE> /xbc/xc0 <CJK>
-+<U8CEA> /xbc/xc1 <CJK>
-+<U5B9F> /xbc/xc2 <CJK>
-+<U8500> /xbc/xc3 <CJK>
-+<U7BE0> /xbc/xc4 <CJK>
-+<U5072> /xbc/xc5 <CJK>
-+<U67F4> /xbc/xc6 <CJK>
-+<U829D> /xbc/xc7 <CJK>
-+<U5C61> /xbc/xc8 <CJK>
-+<U854A> /xbc/xc9 <CJK>
-+<U7E1E> /xbc/xca <CJK>
-+<U820E> /xbc/xcb <CJK>
-+<U5199> /xbc/xcc <CJK>
-+<U5C04> /xbc/xcd <CJK>
-+<U6368> /xbc/xce <CJK>
-+<U8D66> /xbc/xcf <CJK>
-+<U659C> /xbc/xd0 <CJK>
-+<U716E> /xbc/xd1 <CJK>
-+<U793E> /xbc/xd2 <CJK>
-+<U7D17> /xbc/xd3 <CJK>
-+<U8005> /xbc/xd4 <CJK>
-+<U8B1D> /xbc/xd5 <CJK>
-+<U8ECA> /xbc/xd6 <CJK>
-+<U906E> /xbc/xd7 <CJK>
-+<U86C7> /xbc/xd8 <CJK>
-+<U90AA> /xbc/xd9 <CJK>
-+<U501F> /xbc/xda <CJK>
-+<U52FA> /xbc/xdb <CJK>
-+<U5C3A> /xbc/xdc <CJK>
-+<U6753> /xbc/xdd <CJK>
-+<U707C> /xbc/xde <CJK>
-+<U7235> /xbc/xdf <CJK>
-+<U914C> /xbc/xe0 <CJK>
-+<U91C8> /xbc/xe1 <CJK>
-+<U932B> /xbc/xe2 <CJK>
-+<U82E5> /xbc/xe3 <CJK>
-+<U5BC2> /xbc/xe4 <CJK>
-+<U5F31> /xbc/xe5 <CJK>
-+<U60F9> /xbc/xe6 <CJK>
-+<U4E3B> /xbc/xe7 <CJK>
-+<U53D6> /xbc/xe8 <CJK>
-+<U5B88> /xbc/xe9 <CJK>
-+<U624B> /xbc/xea <CJK>
-+<U6731> /xbc/xeb <CJK>
-+<U6B8A> /xbc/xec <CJK>
-+<U72E9> /xbc/xed <CJK>
-+<U73E0> /xbc/xee <CJK>
-+<U7A2E> /xbc/xef <CJK>
-+<U816B> /xbc/xf0 <CJK>
-+<U8DA3> /xbc/xf1 <CJK>
-+<U9152> /xbc/xf2 <CJK>
-+<U9996> /xbc/xf3 <CJK>
-+<U5112> /xbc/xf4 <CJK>
-+<U53D7> /xbc/xf5 <CJK>
-+<U546A> /xbc/xf6 <CJK>
-+<U5BFF> /xbc/xf7 <CJK>
-+<U6388> /xbc/xf8 <CJK>
-+<U6A39> /xbc/xf9 <CJK>
-+<U7DAC> /xbc/xfa <CJK>
-+<U9700> /xbc/xfb <CJK>
-+<U56DA> /xbc/xfc <CJK>
-+<U53CE> /xbc/xfd <CJK>
-+<U5468> /xbc/xfe <CJK>
-+<U5B97> /xbd/xa1 <CJK>
-+<U5C31> /xbd/xa2 <CJK>
-+<U5DDE> /xbd/xa3 <CJK>
-+<U4FEE> /xbd/xa4 <CJK>
-+<U6101> /xbd/xa5 <CJK>
-+<U62FE> /xbd/xa6 <CJK>
-+<U6D32> /xbd/xa7 <CJK>
-+<U79C0> /xbd/xa8 <CJK>
-+<U79CB> /xbd/xa9 <CJK>
-+<U7D42> /xbd/xaa <CJK>
-+<U7E4D> /xbd/xab <CJK>
-+<U7FD2> /xbd/xac <CJK>
-+<U81ED> /xbd/xad <CJK>
-+<U821F> /xbd/xae <CJK>
-+<U8490> /xbd/xaf <CJK>
-+<U8846> /xbd/xb0 <CJK>
-+<U8972> /xbd/xb1 <CJK>
-+<U8B90> /xbd/xb2 <CJK>
-+<U8E74> /xbd/xb3 <CJK>
-+<U8F2F> /xbd/xb4 <CJK>
-+<U9031> /xbd/xb5 <CJK>
-+<U914B> /xbd/xb6 <CJK>
-+<U916C> /xbd/xb7 <CJK>
-+<U96C6> /xbd/xb8 <CJK>
-+<U919C> /xbd/xb9 <CJK>
-+<U4EC0> /xbd/xba <CJK>
-+<U4F4F> /xbd/xbb <CJK>
-+<U5145> /xbd/xbc <CJK>
-+<U5341> /xbd/xbd <CJK>
-+<U5F93> /xbd/xbe <CJK>
-+<U620E> /xbd/xbf <CJK>
-+<U67D4> /xbd/xc0 <CJK>
-+<U6C41> /xbd/xc1 <CJK>
-+<U6E0B> /xbd/xc2 <CJK>
-+<U7363> /xbd/xc3 <CJK>
-+<U7E26> /xbd/xc4 <CJK>
-+<U91CD> /xbd/xc5 <CJK>
-+<U9283> /xbd/xc6 <CJK>
-+<U53D4> /xbd/xc7 <CJK>
-+<U5919> /xbd/xc8 <CJK>
-+<U5BBF> /xbd/xc9 <CJK>
-+<U6DD1> /xbd/xca <CJK>
-+<U795D> /xbd/xcb <CJK>
-+<U7E2E> /xbd/xcc <CJK>
-+<U7C9B> /xbd/xcd <CJK>
-+<U587E> /xbd/xce <CJK>
-+<U719F> /xbd/xcf <CJK>
-+<U51FA> /xbd/xd0 <CJK>
-+<U8853> /xbd/xd1 <CJK>
-+<U8FF0> /xbd/xd2 <CJK>
-+<U4FCA> /xbd/xd3 <CJK>
-+<U5CFB> /xbd/xd4 <CJK>
-+<U6625> /xbd/xd5 <CJK>
-+<U77AC> /xbd/xd6 <CJK>
-+<U7AE3> /xbd/xd7 <CJK>
-+<U821C> /xbd/xd8 <CJK>
-+<U99FF> /xbd/xd9 <CJK>
-+<U51C6> /xbd/xda <CJK>
-+<U5FAA> /xbd/xdb <CJK>
-+<U65EC> /xbd/xdc <CJK>
-+<U696F> /xbd/xdd <CJK>
-+<U6B89> /xbd/xde <CJK>
-+<U6DF3> /xbd/xdf <CJK>
-+<U6E96> /xbd/xe0 <CJK>
-+<U6F64> /xbd/xe1 <CJK>
-+<U76FE> /xbd/xe2 <CJK>
-+<U7D14> /xbd/xe3 <CJK>
-+<U5DE1> /xbd/xe4 <CJK>
-+<U9075> /xbd/xe5 <CJK>
-+<U9187> /xbd/xe6 <CJK>
-+<U9806> /xbd/xe7 <CJK>
-+<U51E6> /xbd/xe8 <CJK>
-+<U521D> /xbd/xe9 <CJK>
-+<U6240> /xbd/xea <CJK>
-+<U6691> /xbd/xeb <CJK>
-+<U66D9> /xbd/xec <CJK>
-+<U6E1A> /xbd/xed <CJK>
-+<U5EB6> /xbd/xee <CJK>
-+<U7DD2> /xbd/xef <CJK>
-+<U7F72> /xbd/xf0 <CJK>
-+<U66F8> /xbd/xf1 <CJK>
-+<U85AF> /xbd/xf2 <CJK>
-+<U85F7> /xbd/xf3 <CJK>
-+<U8AF8> /xbd/xf4 <CJK>
-+<U52A9> /xbd/xf5 <CJK>
-+<U53D9> /xbd/xf6 <CJK>
-+<U5973> /xbd/xf7 <CJK>
-+<U5E8F> /xbd/xf8 <CJK>
-+<U5F90> /xbd/xf9 <CJK>
-+<U6055> /xbd/xfa <CJK>
-+<U92E4> /xbd/xfb <CJK>
-+<U9664> /xbd/xfc <CJK>
-+<U50B7> /xbd/xfd <CJK>
-+<U511F> /xbd/xfe <CJK>
-+<U52DD> /xbe/xa1 <CJK>
-+<U5320> /xbe/xa2 <CJK>
-+<U5347> /xbe/xa3 <CJK>
-+<U53EC> /xbe/xa4 <CJK>
-+<U54E8> /xbe/xa5 <CJK>
-+<U5546> /xbe/xa6 <CJK>
-+<U5531> /xbe/xa7 <CJK>
-+<U5617> /xbe/xa8 <CJK>
-+<U5968> /xbe/xa9 <CJK>
-+<U59BE> /xbe/xaa <CJK>
-+<U5A3C> /xbe/xab <CJK>
-+<U5BB5> /xbe/xac <CJK>
-+<U5C06> /xbe/xad <CJK>
-+<U5C0F> /xbe/xae <CJK>
-+<U5C11> /xbe/xaf <CJK>
-+<U5C1A> /xbe/xb0 <CJK>
-+<U5E84> /xbe/xb1 <CJK>
-+<U5E8A> /xbe/xb2 <CJK>
-+<U5EE0> /xbe/xb3 <CJK>
-+<U5F70> /xbe/xb4 <CJK>
-+<U627F> /xbe/xb5 <CJK>
-+<U6284> /xbe/xb6 <CJK>
-+<U62DB> /xbe/xb7 <CJK>
-+<U638C> /xbe/xb8 <CJK>
-+<U6377> /xbe/xb9 <CJK>
-+<U6607> /xbe/xba <CJK>
-+<U660C> /xbe/xbb <CJK>
-+<U662D> /xbe/xbc <CJK>
-+<U6676> /xbe/xbd <CJK>
-+<U677E> /xbe/xbe <CJK>
-+<U68A2> /xbe/xbf <CJK>
-+<U6A1F> /xbe/xc0 <CJK>
-+<U6A35> /xbe/xc1 <CJK>
-+<U6CBC> /xbe/xc2 <CJK>
-+<U6D88> /xbe/xc3 <CJK>
-+<U6E09> /xbe/xc4 <CJK>
-+<U6E58> /xbe/xc5 <CJK>
-+<U713C> /xbe/xc6 <CJK>
-+<U7126> /xbe/xc7 <CJK>
-+<U7167> /xbe/xc8 <CJK>
-+<U75C7> /xbe/xc9 <CJK>
-+<U7701> /xbe/xca <CJK>
-+<U785D> /xbe/xcb <CJK>
-+<U7901> /xbe/xcc <CJK>
-+<U7965> /xbe/xcd <CJK>
-+<U79F0> /xbe/xce <CJK>
-+<U7AE0> /xbe/xcf <CJK>
-+<U7B11> /xbe/xd0 <CJK>
-+<U7CA7> /xbe/xd1 <CJK>
-+<U7D39> /xbe/xd2 <CJK>
-+<U8096> /xbe/xd3 <CJK>
-+<U83D6> /xbe/xd4 <CJK>
-+<U848B> /xbe/xd5 <CJK>
-+<U8549> /xbe/xd6 <CJK>
-+<U885D> /xbe/xd7 <CJK>
-+<U88F3> /xbe/xd8 <CJK>
-+<U8A1F> /xbe/xd9 <CJK>
-+<U8A3C> /xbe/xda <CJK>
-+<U8A54> /xbe/xdb <CJK>
-+<U8A73> /xbe/xdc <CJK>
-+<U8C61> /xbe/xdd <CJK>
-+<U8CDE> /xbe/xde <CJK>
-+<U91A4> /xbe/xdf <CJK>
-+<U9266> /xbe/xe0 <CJK>
-+<U937E> /xbe/xe1 <CJK>
-+<U9418> /xbe/xe2 <CJK>
-+<U969C> /xbe/xe3 <CJK>
-+<U9798> /xbe/xe4 <CJK>
-+<U4E0A> /xbe/xe5 <CJK>
-+<U4E08> /xbe/xe6 <CJK>
-+<U4E1E> /xbe/xe7 <CJK>
-+<U4E57> /xbe/xe8 <CJK>
-+<U5197> /xbe/xe9 <CJK>
-+<U5270> /xbe/xea <CJK>
-+<U57CE> /xbe/xeb <CJK>
-+<U5834> /xbe/xec <CJK>
-+<U58CC> /xbe/xed <CJK>
-+<U5B22> /xbe/xee <CJK>
-+<U5E38> /xbe/xef <CJK>
-+<U60C5> /xbe/xf0 <CJK>
-+<U64FE> /xbe/xf1 <CJK>
-+<U6761> /xbe/xf2 <CJK>
-+<U6756> /xbe/xf3 <CJK>
-+<U6D44> /xbe/xf4 <CJK>
-+<U72B6> /xbe/xf5 <CJK>
-+<U7573> /xbe/xf6 <CJK>
-+<U7A63> /xbe/xf7 <CJK>
-+<U84B8> /xbe/xf8 <CJK>
-+<U8B72> /xbe/xf9 <CJK>
-+<U91B8> /xbe/xfa <CJK>
-+<U9320> /xbe/xfb <CJK>
-+<U5631> /xbe/xfc <CJK>
-+<U57F4> /xbe/xfd <CJK>
-+<U98FE> /xbe/xfe <CJK>
-+<U62ED> /xbf/xa1 <CJK>
-+<U690D> /xbf/xa2 <CJK>
-+<U6B96> /xbf/xa3 <CJK>
-+<U71ED> /xbf/xa4 <CJK>
-+<U7E54> /xbf/xa5 <CJK>
-+<U8077> /xbf/xa6 <CJK>
-+<U8272> /xbf/xa7 <CJK>
-+<U89E6> /xbf/xa8 <CJK>
-+<U98DF> /xbf/xa9 <CJK>
-+<U8755> /xbf/xaa <CJK>
-+<U8FB1> /xbf/xab <CJK>
-+<U5C3B> /xbf/xac <CJK>
-+<U4F38> /xbf/xad <CJK>
-+<U4FE1> /xbf/xae <CJK>
-+<U4FB5> /xbf/xaf <CJK>
-+<U5507> /xbf/xb0 <CJK>
-+<U5A20> /xbf/xb1 <CJK>
-+<U5BDD> /xbf/xb2 <CJK>
-+<U5BE9> /xbf/xb3 <CJK>
-+<U5FC3> /xbf/xb4 <CJK>
-+<U614E> /xbf/xb5 <CJK>
-+<U632F> /xbf/xb6 <CJK>
-+<U65B0> /xbf/xb7 <CJK>
-+<U664B> /xbf/xb8 <CJK>
-+<U68EE> /xbf/xb9 <CJK>
-+<U699B> /xbf/xba <CJK>
-+<U6D78> /xbf/xbb <CJK>
-+<U6DF1> /xbf/xbc <CJK>
-+<U7533> /xbf/xbd <CJK>
-+<U75B9> /xbf/xbe <CJK>
-+<U771F> /xbf/xbf <CJK>
-+<U795E> /xbf/xc0 <CJK>
-+<U79E6> /xbf/xc1 <CJK>
-+<U7D33> /xbf/xc2 <CJK>
-+<U81E3> /xbf/xc3 <CJK>
-+<U82AF> /xbf/xc4 <CJK>
-+<U85AA> /xbf/xc5 <CJK>
-+<U89AA> /xbf/xc6 <CJK>
-+<U8A3A> /xbf/xc7 <CJK>
-+<U8EAB> /xbf/xc8 <CJK>
-+<U8F9B> /xbf/xc9 <CJK>
-+<U9032> /xbf/xca <CJK>
-+<U91DD> /xbf/xcb <CJK>
-+<U9707> /xbf/xcc <CJK>
-+<U4EBA> /xbf/xcd <CJK>
-+<U4EC1> /xbf/xce <CJK>
-+<U5203> /xbf/xcf <CJK>
-+<U5875> /xbf/xd0 <CJK>
-+<U58EC> /xbf/xd1 <CJK>
-+<U5C0B> /xbf/xd2 <CJK>
-+<U751A> /xbf/xd3 <CJK>
-+<U5C3D> /xbf/xd4 <CJK>
-+<U814E> /xbf/xd5 <CJK>
-+<U8A0A> /xbf/xd6 <CJK>
-+<U8FC5> /xbf/xd7 <CJK>
-+<U9663> /xbf/xd8 <CJK>
-+<U976D> /xbf/xd9 <CJK>
-+<U7B25> /xbf/xda <CJK>
-+<U8ACF> /xbf/xdb <CJK>
-+<U9808> /xbf/xdc <CJK>
-+<U9162> /xbf/xdd <CJK>
-+<U56F3> /xbf/xde <CJK>
-+<U53A8> /xbf/xdf <CJK>
-+<U9017> /xbf/xe0 <CJK>
-+<U5439> /xbf/xe1 <CJK>
-+<U5782> /xbf/xe2 <CJK>
-+<U5E25> /xbf/xe3 <CJK>
-+<U63A8> /xbf/xe4 <CJK>
-+<U6C34> /xbf/xe5 <CJK>
-+<U708A> /xbf/xe6 <CJK>
-+<U7761> /xbf/xe7 <CJK>
-+<U7C8B> /xbf/xe8 <CJK>
-+<U7FE0> /xbf/xe9 <CJK>
-+<U8870> /xbf/xea <CJK>
-+<U9042> /xbf/xeb <CJK>
-+<U9154> /xbf/xec <CJK>
-+<U9310> /xbf/xed <CJK>
-+<U9318> /xbf/xee <CJK>
-+<U968F> /xbf/xef <CJK>
-+<U745E> /xbf/xf0 <CJK>
-+<U9AC4> /xbf/xf1 <CJK>
-+<U5D07> /xbf/xf2 <CJK>
-+<U5D69> /xbf/xf3 <CJK>
-+<U6570> /xbf/xf4 <CJK>
-+<U67A2> /xbf/xf5 <CJK>
-+<U8DA8> /xbf/xf6 <CJK>
-+<U96DB> /xbf/xf7 <CJK>
-+<U636E> /xbf/xf8 <CJK>
-+<U6749> /xbf/xf9 <CJK>
-+<U6919> /xbf/xfa <CJK>
-+<U83C5> /xbf/xfb <CJK>
-+<U9817> /xbf/xfc <CJK>
-+<U96C0> /xbf/xfd <CJK>
-+<U88FE> /xbf/xfe <CJK>
-+<U6F84> /xc0/xa1 <CJK>
-+<U647A> /xc0/xa2 <CJK>
-+<U5BF8> /xc0/xa3 <CJK>
-+<U4E16> /xc0/xa4 <CJK>
-+<U702C> /xc0/xa5 <CJK>
-+<U755D> /xc0/xa6 <CJK>
-+<U662F> /xc0/xa7 <CJK>
-+<U51C4> /xc0/xa8 <CJK>
-+<U5236> /xc0/xa9 <CJK>
-+<U52E2> /xc0/xaa <CJK>
-+<U59D3> /xc0/xab <CJK>
-+<U5F81> /xc0/xac <CJK>
-+<U6027> /xc0/xad <CJK>
-+<U6210> /xc0/xae <CJK>
-+<U653F> /xc0/xaf <CJK>
-+<U6574> /xc0/xb0 <CJK>
-+<U661F> /xc0/xb1 <CJK>
-+<U6674> /xc0/xb2 <CJK>
-+<U68F2> /xc0/xb3 <CJK>
-+<U6816> /xc0/xb4 <CJK>
-+<U6B63> /xc0/xb5 <CJK>
-+<U6E05> /xc0/xb6 <CJK>
-+<U7272> /xc0/xb7 <CJK>
-+<U751F> /xc0/xb8 <CJK>
-+<U76DB> /xc0/xb9 <CJK>
-+<U7CBE> /xc0/xba <CJK>
-+<U8056> /xc0/xbb <CJK>
-+<U58F0> /xc0/xbc <CJK>
-+<U88FD> /xc0/xbd <CJK>
-+<U897F> /xc0/xbe <CJK>
-+<U8AA0> /xc0/xbf <CJK>
-+<U8A93> /xc0/xc0 <CJK>
-+<U8ACB> /xc0/xc1 <CJK>
-+<U901D> /xc0/xc2 <CJK>
-+<U9192> /xc0/xc3 <CJK>
-+<U9752> /xc0/xc4 <CJK>
-+<U9759> /xc0/xc5 <CJK>
-+<U6589> /xc0/xc6 <CJK>
-+<U7A0E> /xc0/xc7 <CJK>
-+<U8106> /xc0/xc8 <CJK>
-+<U96BB> /xc0/xc9 <CJK>
-+<U5E2D> /xc0/xca <CJK>
-+<U60DC> /xc0/xcb <CJK>
-+<U621A> /xc0/xcc <CJK>
-+<U65A5> /xc0/xcd <CJK>
-+<U6614> /xc0/xce <CJK>
-+<U6790> /xc0/xcf <CJK>
-+<U77F3> /xc0/xd0 <CJK>
-+<U7A4D> /xc0/xd1 <CJK>
-+<U7C4D> /xc0/xd2 <CJK>
-+<U7E3E> /xc0/xd3 <CJK>
-+<U810A> /xc0/xd4 <CJK>
-+<U8CAC> /xc0/xd5 <CJK>
-+<U8D64> /xc0/xd6 <CJK>
-+<U8DE1> /xc0/xd7 <CJK>
-+<U8E5F> /xc0/xd8 <CJK>
-+<U78A9> /xc0/xd9 <CJK>
-+<U5207> /xc0/xda <CJK>
-+<U62D9> /xc0/xdb <CJK>
-+<U63A5> /xc0/xdc <CJK>
-+<U6442> /xc0/xdd <CJK>
-+<U6298> /xc0/xde <CJK>
-+<U8A2D> /xc0/xdf <CJK>
-+<U7A83> /xc0/xe0 <CJK>
-+<U7BC0> /xc0/xe1 <CJK>
-+<U8AAC> /xc0/xe2 <CJK>
-+<U96EA> /xc0/xe3 <CJK>
-+<U7D76> /xc0/xe4 <CJK>
-+<U820C> /xc0/xe5 <CJK>
-+<U8749> /xc0/xe6 <CJK>
-+<U4ED9> /xc0/xe7 <CJK>
-+<U5148> /xc0/xe8 <CJK>
-+<U5343> /xc0/xe9 <CJK>
-+<U5360> /xc0/xea <CJK>
-+<U5BA3> /xc0/xeb <CJK>
-+<U5C02> /xc0/xec <CJK>
-+<U5C16> /xc0/xed <CJK>
-+<U5DDD> /xc0/xee <CJK>
-+<U6226> /xc0/xef <CJK>
-+<U6247> /xc0/xf0 <CJK>
-+<U64B0> /xc0/xf1 <CJK>
-+<U6813> /xc0/xf2 <CJK>
-+<U6834> /xc0/xf3 <CJK>
-+<U6CC9> /xc0/xf4 <CJK>
-+<U6D45> /xc0/xf5 <CJK>
-+<U6D17> /xc0/xf6 <CJK>
-+<U67D3> /xc0/xf7 <CJK>
-+<U6F5C> /xc0/xf8 <CJK>
-+<U714E> /xc0/xf9 <CJK>
-+<U717D> /xc0/xfa <CJK>
-+<U65CB> /xc0/xfb <CJK>
-+<U7A7F> /xc0/xfc <CJK>
-+<U7BAD> /xc0/xfd <CJK>
-+<U7DDA> /xc0/xfe <CJK>
-+<U7E4A> /xc1/xa1 <CJK>
-+<U7FA8> /xc1/xa2 <CJK>
-+<U817A> /xc1/xa3 <CJK>
-+<U821B> /xc1/xa4 <CJK>
-+<U8239> /xc1/xa5 <CJK>
-+<U85A6> /xc1/xa6 <CJK>
-+<U8A6E> /xc1/xa7 <CJK>
-+<U8CCE> /xc1/xa8 <CJK>
-+<U8DF5> /xc1/xa9 <CJK>
-+<U9078> /xc1/xaa <CJK>
-+<U9077> /xc1/xab <CJK>
-+<U92AD> /xc1/xac <CJK>
-+<U9291> /xc1/xad <CJK>
-+<U9583> /xc1/xae <CJK>
-+<U9BAE> /xc1/xaf <CJK>
-+<U524D> /xc1/xb0 <CJK>
-+<U5584> /xc1/xb1 <CJK>
-+<U6F38> /xc1/xb2 <CJK>
-+<U7136> /xc1/xb3 <CJK>
-+<U5168> /xc1/xb4 <CJK>
-+<U7985> /xc1/xb5 <CJK>
-+<U7E55> /xc1/xb6 <CJK>
-+<U81B3> /xc1/xb7 <CJK>
-+<U7CCE> /xc1/xb8 <CJK>
-+<U564C> /xc1/xb9 <CJK>
-+<U5851> /xc1/xba <CJK>
-+<U5CA8> /xc1/xbb <CJK>
-+<U63AA> /xc1/xbc <CJK>
-+<U66FE> /xc1/xbd <CJK>
-+<U66FD> /xc1/xbe <CJK>
-+<U695A> /xc1/xbf <CJK>
-+<U72D9> /xc1/xc0 <CJK>
-+<U758F> /xc1/xc1 <CJK>
-+<U758E> /xc1/xc2 <CJK>
-+<U790E> /xc1/xc3 <CJK>
-+<U7956> /xc1/xc4 <CJK>
-+<U79DF> /xc1/xc5 <CJK>
-+<U7C97> /xc1/xc6 <CJK>
-+<U7D20> /xc1/xc7 <CJK>
-+<U7D44> /xc1/xc8 <CJK>
-+<U8607> /xc1/xc9 <CJK>
-+<U8A34> /xc1/xca <CJK>
-+<U963B> /xc1/xcb <CJK>
-+<U9061> /xc1/xcc <CJK>
-+<U9F20> /xc1/xcd <CJK>
-+<U50E7> /xc1/xce <CJK>
-+<U5275> /xc1/xcf <CJK>
-+<U53CC> /xc1/xd0 <CJK>
-+<U53E2> /xc1/xd1 <CJK>
-+<U5009> /xc1/xd2 <CJK>
-+<U55AA> /xc1/xd3 <CJK>
-+<U58EE> /xc1/xd4 <CJK>
-+<U594F> /xc1/xd5 <CJK>
-+<U723D> /xc1/xd6 <CJK>
-+<U5B8B> /xc1/xd7 <CJK>
-+<U5C64> /xc1/xd8 <CJK>
-+<U531D> /xc1/xd9 <CJK>
-+<U60E3> /xc1/xda <CJK>
-+<U60F3> /xc1/xdb <CJK>
-+<U635C> /xc1/xdc <CJK>
-+<U6383> /xc1/xdd <CJK>
-+<U633F> /xc1/xde <CJK>
-+<U63BB> /xc1/xdf <CJK>
-+<U64CD> /xc1/xe0 <CJK>
-+<U65E9> /xc1/xe1 <CJK>
-+<U66F9> /xc1/xe2 <CJK>
-+<U5DE3> /xc1/xe3 <CJK>
-+<U69CD> /xc1/xe4 <CJK>
-+<U69FD> /xc1/xe5 <CJK>
-+<U6F15> /xc1/xe6 <CJK>
-+<U71E5> /xc1/xe7 <CJK>
-+<U4E89> /xc1/xe8 <CJK>
-+<U75E9> /xc1/xe9 <CJK>
-+<U76F8> /xc1/xea <CJK>
-+<U7A93> /xc1/xeb <CJK>
-+<U7CDF> /xc1/xec <CJK>
-+<U7DCF> /xc1/xed <CJK>
-+<U7D9C> /xc1/xee <CJK>
-+<U8061> /xc1/xef <CJK>
-+<U8349> /xc1/xf0 <CJK>
-+<U8358> /xc1/xf1 <CJK>
-+<U846C> /xc1/xf2 <CJK>
-+<U84BC> /xc1/xf3 <CJK>
-+<U85FB> /xc1/xf4 <CJK>
-+<U88C5> /xc1/xf5 <CJK>
-+<U8D70> /xc1/xf6 <CJK>
-+<U9001> /xc1/xf7 <CJK>
-+<U906D> /xc1/xf8 <CJK>
-+<U9397> /xc1/xf9 <CJK>
-+<U971C> /xc1/xfa <CJK>
-+<U9A12> /xc1/xfb <CJK>
-+<U50CF> /xc1/xfc <CJK>
-+<U5897> /xc1/xfd <CJK>
-+<U618E> /xc1/xfe <CJK>
-+<U81D3> /xc2/xa1 <CJK>
-+<U8535> /xc2/xa2 <CJK>
-+<U8D08> /xc2/xa3 <CJK>
-+<U9020> /xc2/xa4 <CJK>
-+<U4FC3> /xc2/xa5 <CJK>
-+<U5074> /xc2/xa6 <CJK>
-+<U5247> /xc2/xa7 <CJK>
-+<U5373> /xc2/xa8 <CJK>
-+<U606F> /xc2/xa9 <CJK>
-+<U6349> /xc2/xaa <CJK>
-+<U675F> /xc2/xab <CJK>
-+<U6E2C> /xc2/xac <CJK>
-+<U8DB3> /xc2/xad <CJK>
-+<U901F> /xc2/xae <CJK>
-+<U4FD7> /xc2/xaf <CJK>
-+<U5C5E> /xc2/xb0 <CJK>
-+<U8CCA> /xc2/xb1 <CJK>
-+<U65CF> /xc2/xb2 <CJK>
-+<U7D9A> /xc2/xb3 <CJK>
-+<U5352> /xc2/xb4 <CJK>
-+<U8896> /xc2/xb5 <CJK>
-+<U5176> /xc2/xb6 <CJK>
-+<U63C3> /xc2/xb7 <CJK>
-+<U5B58> /xc2/xb8 <CJK>
-+<U5B6B> /xc2/xb9 <CJK>
-+<U5C0A> /xc2/xba <CJK>
-+<U640D> /xc2/xbb <CJK>
-+<U6751> /xc2/xbc <CJK>
-+<U905C> /xc2/xbd <CJK>
-+<U4ED6> /xc2/xbe <CJK>
-+<U591A> /xc2/xbf <CJK>
-+<U592A> /xc2/xc0 <CJK>
-+<U6C70> /xc2/xc1 <CJK>
-+<U8A51> /xc2/xc2 <CJK>
-+<U553E> /xc2/xc3 <CJK>
-+<U5815> /xc2/xc4 <CJK>
-+<U59A5> /xc2/xc5 <CJK>
-+<U60F0> /xc2/xc6 <CJK>
-+<U6253> /xc2/xc7 <CJK>
-+<U67C1> /xc2/xc8 <CJK>
-+<U8235> /xc2/xc9 <CJK>
-+<U6955> /xc2/xca <CJK>
-+<U9640> /xc2/xcb <CJK>
-+<U99C4> /xc2/xcc <CJK>
-+<U9A28> /xc2/xcd <CJK>
-+<U4F53> /xc2/xce <CJK>
-+<U5806> /xc2/xcf <CJK>
-+<U5BFE> /xc2/xd0 <CJK>
-+<U8010> /xc2/xd1 <CJK>
-+<U5CB1> /xc2/xd2 <CJK>
-+<U5E2F> /xc2/xd3 <CJK>
-+<U5F85> /xc2/xd4 <CJK>
-+<U6020> /xc2/xd5 <CJK>
-+<U614B> /xc2/xd6 <CJK>
-+<U6234> /xc2/xd7 <CJK>
-+<U66FF> /xc2/xd8 <CJK>
-+<U6CF0> /xc2/xd9 <CJK>
-+<U6EDE> /xc2/xda <CJK>
-+<U80CE> /xc2/xdb <CJK>
-+<U817F> /xc2/xdc <CJK>
-+<U82D4> /xc2/xdd <CJK>
-+<U888B> /xc2/xde <CJK>
-+<U8CB8> /xc2/xdf <CJK>
-+<U9000> /xc2/xe0 <CJK>
-+<U902E> /xc2/xe1 <CJK>
-+<U968A> /xc2/xe2 <CJK>
-+<U9EDB> /xc2/xe3 <CJK>
-+<U9BDB> /xc2/xe4 <CJK>
-+<U4EE3> /xc2/xe5 <CJK>
-+<U53F0> /xc2/xe6 <CJK>
-+<U5927> /xc2/xe7 <CJK>
-+<U7B2C> /xc2/xe8 <CJK>
-+<U918D> /xc2/xe9 <CJK>
-+<U984C> /xc2/xea <CJK>
-+<U9DF9> /xc2/xeb <CJK>
-+<U6EDD> /xc2/xec <CJK>
-+<U7027> /xc2/xed <CJK>
-+<U5353> /xc2/xee <CJK>
-+<U5544> /xc2/xef <CJK>
-+<U5B85> /xc2/xf0 <CJK>
-+<U6258> /xc2/xf1 <CJK>
-+<U629E> /xc2/xf2 <CJK>
-+<U62D3> /xc2/xf3 <CJK>
-+<U6CA2> /xc2/xf4 <CJK>
-+<U6FEF> /xc2/xf5 <CJK>
-+<U7422> /xc2/xf6 <CJK>
-+<U8A17> /xc2/xf7 <CJK>
-+<U9438> /xc2/xf8 <CJK>
-+<U6FC1> /xc2/xf9 <CJK>
-+<U8AFE> /xc2/xfa <CJK>
-+<U8338> /xc2/xfb <CJK>
-+<U51E7> /xc2/xfc <CJK>
-+<U86F8> /xc2/xfd <CJK>
-+<U53EA> /xc2/xfe <CJK>
-+<U53E9> /xc3/xa1 <CJK>
-+<U4F46> /xc3/xa2 <CJK>
-+<U9054> /xc3/xa3 <CJK>
-+<U8FB0> /xc3/xa4 <CJK>
-+<U596A> /xc3/xa5 <CJK>
-+<U8131> /xc3/xa6 <CJK>
-+<U5DFD> /xc3/xa7 <CJK>
-+<U7AEA> /xc3/xa8 <CJK>
-+<U8FBF> /xc3/xa9 <CJK>
-+<U68DA> /xc3/xaa <CJK>
-+<U8C37> /xc3/xab <CJK>
-+<U72F8> /xc3/xac <CJK>
-+<U9C48> /xc3/xad <CJK>
-+<U6A3D> /xc3/xae <CJK>
-+<U8AB0> /xc3/xaf <CJK>
-+<U4E39> /xc3/xb0 <CJK>
-+<U5358> /xc3/xb1 <CJK>
-+<U5606> /xc3/xb2 <CJK>
-+<U5766> /xc3/xb3 <CJK>
-+<U62C5> /xc3/xb4 <CJK>
-+<U63A2> /xc3/xb5 <CJK>
-+<U65E6> /xc3/xb6 <CJK>
-+<U6B4E> /xc3/xb7 <CJK>
-+<U6DE1> /xc3/xb8 <CJK>
-+<U6E5B> /xc3/xb9 <CJK>
-+<U70AD> /xc3/xba <CJK>
-+<U77ED> /xc3/xbb <CJK>
-+<U7AEF> /xc3/xbc <CJK>
-+<U7BAA> /xc3/xbd <CJK>
-+<U7DBB> /xc3/xbe <CJK>
-+<U803D> /xc3/xbf <CJK>
-+<U80C6> /xc3/xc0 <CJK>
-+<U86CB> /xc3/xc1 <CJK>
-+<U8A95> /xc3/xc2 <CJK>
-+<U935B> /xc3/xc3 <CJK>
-+<U56E3> /xc3/xc4 <CJK>
-+<U58C7> /xc3/xc5 <CJK>
-+<U5F3E> /xc3/xc6 <CJK>
-+<U65AD> /xc3/xc7 <CJK>
-+<U6696> /xc3/xc8 <CJK>
-+<U6A80> /xc3/xc9 <CJK>
-+<U6BB5> /xc3/xca <CJK>
-+<U7537> /xc3/xcb <CJK>
-+<U8AC7> /xc3/xcc <CJK>
-+<U5024> /xc3/xcd <CJK>
-+<U77E5> /xc3/xce <CJK>
-+<U5730> /xc3/xcf <CJK>
-+<U5F1B> /xc3/xd0 <CJK>
-+<U6065> /xc3/xd1 <CJK>
-+<U667A> /xc3/xd2 <CJK>
-+<U6C60> /xc3/xd3 <CJK>
-+<U75F4> /xc3/xd4 <CJK>
-+<U7A1A> /xc3/xd5 <CJK>
-+<U7F6E> /xc3/xd6 <CJK>
-+<U81F4> /xc3/xd7 <CJK>
-+<U8718> /xc3/xd8 <CJK>
-+<U9045> /xc3/xd9 <CJK>
-+<U99B3> /xc3/xda <CJK>
-+<U7BC9> /xc3/xdb <CJK>
-+<U755C> /xc3/xdc <CJK>
-+<U7AF9> /xc3/xdd <CJK>
-+<U7B51> /xc3/xde <CJK>
-+<U84C4> /xc3/xdf <CJK>
-+<U9010> /xc3/xe0 <CJK>
-+<U79E9> /xc3/xe1 <CJK>
-+<U7A92> /xc3/xe2 <CJK>
-+<U8336> /xc3/xe3 <CJK>
-+<U5AE1> /xc3/xe4 <CJK>
-+<U7740> /xc3/xe5 <CJK>
-+<U4E2D> /xc3/xe6 <CJK>
-+<U4EF2> /xc3/xe7 <CJK>
-+<U5B99> /xc3/xe8 <CJK>
-+<U5FE0> /xc3/xe9 <CJK>
-+<U62BD> /xc3/xea <CJK>
-+<U663C> /xc3/xeb <CJK>
-+<U67F1> /xc3/xec <CJK>
-+<U6CE8> /xc3/xed <CJK>
-+<U866B> /xc3/xee <CJK>
-+<U8877> /xc3/xef <CJK>
-+<U8A3B> /xc3/xf0 <CJK>
-+<U914E> /xc3/xf1 <CJK>
-+<U92F3> /xc3/xf2 <CJK>
-+<U99D0> /xc3/xf3 <CJK>
-+<U6A17> /xc3/xf4 <CJK>
-+<U7026> /xc3/xf5 <CJK>
-+<U732A> /xc3/xf6 <CJK>
-+<U82E7> /xc3/xf7 <CJK>
-+<U8457> /xc3/xf8 <CJK>
-+<U8CAF> /xc3/xf9 <CJK>
-+<U4E01> /xc3/xfa <CJK>
-+<U5146> /xc3/xfb <CJK>
-+<U51CB> /xc3/xfc <CJK>
-+<U558B> /xc3/xfd <CJK>
-+<U5BF5> /xc3/xfe <CJK>
-+<U5E16> /xc4/xa1 <CJK>
-+<U5E33> /xc4/xa2 <CJK>
-+<U5E81> /xc4/xa3 <CJK>
-+<U5F14> /xc4/xa4 <CJK>
-+<U5F35> /xc4/xa5 <CJK>
-+<U5F6B> /xc4/xa6 <CJK>
-+<U5FB4> /xc4/xa7 <CJK>
-+<U61F2> /xc4/xa8 <CJK>
-+<U6311> /xc4/xa9 <CJK>
-+<U66A2> /xc4/xaa <CJK>
-+<U671D> /xc4/xab <CJK>
-+<U6F6E> /xc4/xac <CJK>
-+<U7252> /xc4/xad <CJK>
-+<U753A> /xc4/xae <CJK>
-+<U773A> /xc4/xaf <CJK>
-+<U8074> /xc4/xb0 <CJK>
-+<U8139> /xc4/xb1 <CJK>
-+<U8178> /xc4/xb2 <CJK>
-+<U8776> /xc4/xb3 <CJK>
-+<U8ABF> /xc4/xb4 <CJK>
-+<U8ADC> /xc4/xb5 <CJK>
-+<U8D85> /xc4/xb6 <CJK>
-+<U8DF3> /xc4/xb7 <CJK>
-+<U929A> /xc4/xb8 <CJK>
-+<U9577> /xc4/xb9 <CJK>
-+<U9802> /xc4/xba <CJK>
-+<U9CE5> /xc4/xbb <CJK>
-+<U52C5> /xc4/xbc <CJK>
-+<U6357> /xc4/xbd <CJK>
-+<U76F4> /xc4/xbe <CJK>
-+<U6715> /xc4/xbf <CJK>
-+<U6C88> /xc4/xc0 <CJK>
-+<U73CD> /xc4/xc1 <CJK>
-+<U8CC3> /xc4/xc2 <CJK>
-+<U93AE> /xc4/xc3 <CJK>
-+<U9673> /xc4/xc4 <CJK>
-+<U6D25> /xc4/xc5 <CJK>
-+<U589C> /xc4/xc6 <CJK>
-+<U690E> /xc4/xc7 <CJK>
-+<U69CC> /xc4/xc8 <CJK>
-+<U8FFD> /xc4/xc9 <CJK>
-+<U939A> /xc4/xca <CJK>
-+<U75DB> /xc4/xcb <CJK>
-+<U901A> /xc4/xcc <CJK>
-+<U585A> /xc4/xcd <CJK>
-+<U6802> /xc4/xce <CJK>
-+<U63B4> /xc4/xcf <CJK>
-+<U69FB> /xc4/xd0 <CJK>
-+<U4F43> /xc4/xd1 <CJK>
-+<U6F2C> /xc4/xd2 <CJK>
-+<U67D8> /xc4/xd3 <CJK>
-+<U8FBB> /xc4/xd4 <CJK>
-+<U8526> /xc4/xd5 <CJK>
-+<U7DB4> /xc4/xd6 <CJK>
-+<U9354> /xc4/xd7 <CJK>
-+<U693F> /xc4/xd8 <CJK>
-+<U6F70> /xc4/xd9 <CJK>
-+<U576A> /xc4/xda <CJK>
-+<U58F7> /xc4/xdb <CJK>
-+<U5B2C> /xc4/xdc <CJK>
-+<U7D2C> /xc4/xdd <CJK>
-+<U722A> /xc4/xde <CJK>
-+<U540A> /xc4/xdf <CJK>
-+<U91E3> /xc4/xe0 <CJK>
-+<U9DB4> /xc4/xe1 <CJK>
-+<U4EAD> /xc4/xe2 <CJK>
-+<U4F4E> /xc4/xe3 <CJK>
-+<U505C> /xc4/xe4 <CJK>
-+<U5075> /xc4/xe5 <CJK>
-+<U5243> /xc4/xe6 <CJK>
-+<U8C9E> /xc4/xe7 <CJK>
-+<U5448> /xc4/xe8 <CJK>
-+<U5824> /xc4/xe9 <CJK>
-+<U5B9A> /xc4/xea <CJK>
-+<U5E1D> /xc4/xeb <CJK>
-+<U5E95> /xc4/xec <CJK>
-+<U5EAD> /xc4/xed <CJK>
-+<U5EF7> /xc4/xee <CJK>
-+<U5F1F> /xc4/xef <CJK>
-+<U608C> /xc4/xf0 <CJK>
-+<U62B5> /xc4/xf1 <CJK>
-+<U633A> /xc4/xf2 <CJK>
-+<U63D0> /xc4/xf3 <CJK>
-+<U68AF> /xc4/xf4 <CJK>
-+<U6C40> /xc4/xf5 <CJK>
-+<U7887> /xc4/xf6 <CJK>
-+<U798E> /xc4/xf7 <CJK>
-+<U7A0B> /xc4/xf8 <CJK>
-+<U7DE0> /xc4/xf9 <CJK>
-+<U8247> /xc4/xfa <CJK>
-+<U8A02> /xc4/xfb <CJK>
-+<U8AE6> /xc4/xfc <CJK>
-+<U8E44> /xc4/xfd <CJK>
-+<U9013> /xc4/xfe <CJK>
-+<U90B8> /xc5/xa1 <CJK>
-+<U912D> /xc5/xa2 <CJK>
-+<U91D8> /xc5/xa3 <CJK>
-+<U9F0E> /xc5/xa4 <CJK>
-+<U6CE5> /xc5/xa5 <CJK>
-+<U6458> /xc5/xa6 <CJK>
-+<U64E2> /xc5/xa7 <CJK>
-+<U6575> /xc5/xa8 <CJK>
-+<U6EF4> /xc5/xa9 <CJK>
-+<U7684> /xc5/xaa <CJK>
-+<U7B1B> /xc5/xab <CJK>
-+<U9069> /xc5/xac <CJK>
-+<U93D1> /xc5/xad <CJK>
-+<U6EBA> /xc5/xae <CJK>
-+<U54F2> /xc5/xaf <CJK>
-+<U5FB9> /xc5/xb0 <CJK>
-+<U64A4> /xc5/xb1 <CJK>
-+<U8F4D> /xc5/xb2 <CJK>
-+<U8FED> /xc5/xb3 <CJK>
-+<U9244> /xc5/xb4 <CJK>
-+<U5178> /xc5/xb5 <CJK>
-+<U586B> /xc5/xb6 <CJK>
-+<U5929> /xc5/xb7 <CJK>
-+<U5C55> /xc5/xb8 <CJK>
-+<U5E97> /xc5/xb9 <CJK>
-+<U6DFB> /xc5/xba <CJK>
-+<U7E8F> /xc5/xbb <CJK>
-+<U751C> /xc5/xbc <CJK>
-+<U8CBC> /xc5/xbd <CJK>
-+<U8EE2> /xc5/xbe <CJK>
-+<U985B> /xc5/xbf <CJK>
-+<U70B9> /xc5/xc0 <CJK>
-+<U4F1D> /xc5/xc1 <CJK>
-+<U6BBF> /xc5/xc2 <CJK>
-+<U6FB1> /xc5/xc3 <CJK>
-+<U7530> /xc5/xc4 <CJK>
-+<U96FB> /xc5/xc5 <CJK>
-+<U514E> /xc5/xc6 <CJK>
-+<U5410> /xc5/xc7 <CJK>
-+<U5835> /xc5/xc8 <CJK>
-+<U5857> /xc5/xc9 <CJK>
-+<U59AC> /xc5/xca <CJK>
-+<U5C60> /xc5/xcb <CJK>
-+<U5F92> /xc5/xcc <CJK>
-+<U6597> /xc5/xcd <CJK>
-+<U675C> /xc5/xce <CJK>
-+<U6E21> /xc5/xcf <CJK>
-+<U767B> /xc5/xd0 <CJK>
-+<U83DF> /xc5/xd1 <CJK>
-+<U8CED> /xc5/xd2 <CJK>
-+<U9014> /xc5/xd3 <CJK>
-+<U90FD> /xc5/xd4 <CJK>
-+<U934D> /xc5/xd5 <CJK>
-+<U7825> /xc5/xd6 <CJK>
-+<U783A> /xc5/xd7 <CJK>
-+<U52AA> /xc5/xd8 <CJK>
-+<U5EA6> /xc5/xd9 <CJK>
-+<U571F> /xc5/xda <CJK>
-+<U5974> /xc5/xdb <CJK>
-+<U6012> /xc5/xdc <CJK>
-+<U5012> /xc5/xdd <CJK>
-+<U515A> /xc5/xde <CJK>
-+<U51AC> /xc5/xdf <CJK>
-+<U51CD> /xc5/xe0 <CJK>
-+<U5200> /xc5/xe1 <CJK>
-+<U5510> /xc5/xe2 <CJK>
-+<U5854> /xc5/xe3 <CJK>
-+<U5858> /xc5/xe4 <CJK>
-+<U5957> /xc5/xe5 <CJK>
-+<U5B95> /xc5/xe6 <CJK>
-+<U5CF6> /xc5/xe7 <CJK>
-+<U5D8B> /xc5/xe8 <CJK>
-+<U60BC> /xc5/xe9 <CJK>
-+<U6295> /xc5/xea <CJK>
-+<U642D> /xc5/xeb <CJK>
-+<U6771> /xc5/xec <CJK>
-+<U6843> /xc5/xed <CJK>
-+<U68BC> /xc5/xee <CJK>
-+<U68DF> /xc5/xef <CJK>
-+<U76D7> /xc5/xf0 <CJK>
-+<U6DD8> /xc5/xf1 <CJK>
-+<U6E6F> /xc5/xf2 <CJK>
-+<U6D9B> /xc5/xf3 <CJK>
-+<U706F> /xc5/xf4 <CJK>
-+<U71C8> /xc5/xf5 <CJK>
-+<U5F53> /xc5/xf6 <CJK>
-+<U75D8> /xc5/xf7 <CJK>
-+<U7977> /xc5/xf8 <CJK>
-+<U7B49> /xc5/xf9 <CJK>
-+<U7B54> /xc5/xfa <CJK>
-+<U7B52> /xc5/xfb <CJK>
-+<U7CD6> /xc5/xfc <CJK>
-+<U7D71> /xc5/xfd <CJK>
-+<U5230> /xc5/xfe <CJK>
-+<U8463> /xc6/xa1 <CJK>
-+<U8569> /xc6/xa2 <CJK>
-+<U85E4> /xc6/xa3 <CJK>
-+<U8A0E> /xc6/xa4 <CJK>
-+<U8B04> /xc6/xa5 <CJK>
-+<U8C46> /xc6/xa6 <CJK>
-+<U8E0F> /xc6/xa7 <CJK>
-+<U9003> /xc6/xa8 <CJK>
-+<U900F> /xc6/xa9 <CJK>
-+<U9419> /xc6/xaa <CJK>
-+<U9676> /xc6/xab <CJK>
-+<U982D> /xc6/xac <CJK>
-+<U9A30> /xc6/xad <CJK>
-+<U95D8> /xc6/xae <CJK>
-+<U50CD> /xc6/xaf <CJK>
-+<U52D5> /xc6/xb0 <CJK>
-+<U540C> /xc6/xb1 <CJK>
-+<U5802> /xc6/xb2 <CJK>
-+<U5C0E> /xc6/xb3 <CJK>
-+<U61A7> /xc6/xb4 <CJK>
-+<U649E> /xc6/xb5 <CJK>
-+<U6D1E> /xc6/xb6 <CJK>
-+<U77B3> /xc6/xb7 <CJK>
-+<U7AE5> /xc6/xb8 <CJK>
-+<U80F4> /xc6/xb9 <CJK>
-+<U8404> /xc6/xba <CJK>
-+<U9053> /xc6/xbb <CJK>
-+<U9285> /xc6/xbc <CJK>
-+<U5CE0> /xc6/xbd <CJK>
-+<U9D07> /xc6/xbe <CJK>
-+<U533F> /xc6/xbf <CJK>
-+<U5F97> /xc6/xc0 <CJK>
-+<U5FB3> /xc6/xc1 <CJK>
-+<U6D9C> /xc6/xc2 <CJK>
-+<U7279> /xc6/xc3 <CJK>
-+<U7763> /xc6/xc4 <CJK>
-+<U79BF> /xc6/xc5 <CJK>
-+<U7BE4> /xc6/xc6 <CJK>
-+<U6BD2> /xc6/xc7 <CJK>
-+<U72EC> /xc6/xc8 <CJK>
-+<U8AAD> /xc6/xc9 <CJK>
-+<U6803> /xc6/xca <CJK>
-+<U6A61> /xc6/xcb <CJK>
-+<U51F8> /xc6/xcc <CJK>
-+<U7A81> /xc6/xcd <CJK>
-+<U6934> /xc6/xce <CJK>
-+<U5C4A> /xc6/xcf <CJK>
-+<U9CF6> /xc6/xd0 <CJK>
-+<U82EB> /xc6/xd1 <CJK>
-+<U5BC5> /xc6/xd2 <CJK>
-+<U9149> /xc6/xd3 <CJK>
-+<U701E> /xc6/xd4 <CJK>
-+<U5678> /xc6/xd5 <CJK>
-+<U5C6F> /xc6/xd6 <CJK>
-+<U60C7> /xc6/xd7 <CJK>
-+<U6566> /xc6/xd8 <CJK>
-+<U6C8C> /xc6/xd9 <CJK>
-+<U8C5A> /xc6/xda <CJK>
-+<U9041> /xc6/xdb <CJK>
-+<U9813> /xc6/xdc <CJK>
-+<U5451> /xc6/xdd <CJK>
-+<U66C7> /xc6/xde <CJK>
-+<U920D> /xc6/xdf <CJK>
-+<U5948> /xc6/xe0 <CJK>
-+<U90A3> /xc6/xe1 <CJK>
-+<U5185> /xc6/xe2 <CJK>
-+<U4E4D> /xc6/xe3 <CJK>
-+<U51EA> /xc6/xe4 <CJK>
-+<U8599> /xc6/xe5 <CJK>
-+<U8B0E> /xc6/xe6 <CJK>
-+<U7058> /xc6/xe7 <CJK>
-+<U637A> /xc6/xe8 <CJK>
-+<U934B> /xc6/xe9 <CJK>
-+<U6962> /xc6/xea <CJK>
-+<U99B4> /xc6/xeb <CJK>
-+<U7E04> /xc6/xec <CJK>
-+<U7577> /xc6/xed <CJK>
-+<U5357> /xc6/xee <CJK>
-+<U6960> /xc6/xef <CJK>
-+<U8EDF> /xc6/xf0 <CJK>
-+<U96E3> /xc6/xf1 <CJK>
-+<U6C5D> /xc6/xf2 <CJK>
-+<U4E8C> /xc6/xf3 <CJK>
-+<U5C3C> /xc6/xf4 <CJK>
-+<U5F10> /xc6/xf5 <CJK>
-+<U8FE9> /xc6/xf6 <CJK>
-+<U5302> /xc6/xf7 <CJK>
-+<U8CD1> /xc6/xf8 <CJK>
-+<U8089> /xc6/xf9 <CJK>
-+<U8679> /xc6/xfa <CJK>
-+<U5EFF> /xc6/xfb <CJK>
-+<U65E5> /xc6/xfc <CJK>
-+<U4E73> /xc6/xfd <CJK>
-+<U5165> /xc6/xfe <CJK>
-+<U5982> /xc7/xa1 <CJK>
-+<U5C3F> /xc7/xa2 <CJK>
-+<U97EE> /xc7/xa3 <CJK>
-+<U4EFB> /xc7/xa4 <CJK>
-+<U598A> /xc7/xa5 <CJK>
-+<U5FCD> /xc7/xa6 <CJK>
-+<U8A8D> /xc7/xa7 <CJK>
-+<U6FE1> /xc7/xa8 <CJK>
-+<U79B0> /xc7/xa9 <CJK>
-+<U7962> /xc7/xaa <CJK>
-+<U5BE7> /xc7/xab <CJK>
-+<U8471> /xc7/xac <CJK>
-+<U732B> /xc7/xad <CJK>
-+<U71B1> /xc7/xae <CJK>
-+<U5E74> /xc7/xaf <CJK>
-+<U5FF5> /xc7/xb0 <CJK>
-+<U637B> /xc7/xb1 <CJK>
-+<U649A> /xc7/xb2 <CJK>
-+<U71C3> /xc7/xb3 <CJK>
-+<U7C98> /xc7/xb4 <CJK>
-+<U4E43> /xc7/xb5 <CJK>
-+<U5EFC> /xc7/xb6 <CJK>
-+<U4E4B> /xc7/xb7 <CJK>
-+<U57DC> /xc7/xb8 <CJK>
-+<U56A2> /xc7/xb9 <CJK>
-+<U60A9> /xc7/xba <CJK>
-+<U6FC3> /xc7/xbb <CJK>
-+<U7D0D> /xc7/xbc <CJK>
-+<U80FD> /xc7/xbd <CJK>
-+<U8133> /xc7/xbe <CJK>
-+<U81BF> /xc7/xbf <CJK>
-+<U8FB2> /xc7/xc0 <CJK>
-+<U8997> /xc7/xc1 <CJK>
-+<U86A4> /xc7/xc2 <CJK>
-+<U5DF4> /xc7/xc3 <CJK>
-+<U628A> /xc7/xc4 <CJK>
-+<U64AD> /xc7/xc5 <CJK>
-+<U8987> /xc7/xc6 <CJK>
-+<U6777> /xc7/xc7 <CJK>
-+<U6CE2> /xc7/xc8 <CJK>
-+<U6D3E> /xc7/xc9 <CJK>
-+<U7436> /xc7/xca <CJK>
-+<U7834> /xc7/xcb <CJK>
-+<U5A46> /xc7/xcc <CJK>
-+<U7F75> /xc7/xcd <CJK>
-+<U82AD> /xc7/xce <CJK>
-+<U99AC> /xc7/xcf <CJK>
-+<U4FF3> /xc7/xd0 <CJK>
-+<U5EC3> /xc7/xd1 <CJK>
-+<U62DD> /xc7/xd2 <CJK>
-+<U6392> /xc7/xd3 <CJK>
-+<U6557> /xc7/xd4 <CJK>
-+<U676F> /xc7/xd5 <CJK>
-+<U76C3> /xc7/xd6 <CJK>
-+<U724C> /xc7/xd7 <CJK>
-+<U80CC> /xc7/xd8 <CJK>
-+<U80BA> /xc7/xd9 <CJK>
-+<U8F29> /xc7/xda <CJK>
-+<U914D> /xc7/xdb <CJK>
-+<U500D> /xc7/xdc <CJK>
-+<U57F9> /xc7/xdd <CJK>
-+<U5A92> /xc7/xde <CJK>
-+<U6885> /xc7/xdf <CJK>
-+<U6973> /xc7/xe0 <CJK>
-+<U7164> /xc7/xe1 <CJK>
-+<U72FD> /xc7/xe2 <CJK>
-+<U8CB7> /xc7/xe3 <CJK>
-+<U58F2> /xc7/xe4 <CJK>
-+<U8CE0> /xc7/xe5 <CJK>
-+<U966A> /xc7/xe6 <CJK>
-+<U9019> /xc7/xe7 <CJK>
-+<U877F> /xc7/xe8 <CJK>
-+<U79E4> /xc7/xe9 <CJK>
-+<U77E7> /xc7/xea <CJK>
-+<U8429> /xc7/xeb <CJK>
-+<U4F2F> /xc7/xec <CJK>
-+<U5265> /xc7/xed <CJK>
-+<U535A> /xc7/xee <CJK>
-+<U62CD> /xc7/xef <CJK>
-+<U67CF> /xc7/xf0 <CJK>
-+<U6CCA> /xc7/xf1 <CJK>
-+<U767D> /xc7/xf2 <CJK>
-+<U7B94> /xc7/xf3 <CJK>
-+<U7C95> /xc7/xf4 <CJK>
-+<U8236> /xc7/xf5 <CJK>
-+<U8584> /xc7/xf6 <CJK>
-+<U8FEB> /xc7/xf7 <CJK>
-+<U66DD> /xc7/xf8 <CJK>
-+<U6F20> /xc7/xf9 <CJK>
-+<U7206> /xc7/xfa <CJK>
-+<U7E1B> /xc7/xfb <CJK>
-+<U83AB> /xc7/xfc <CJK>
-+<U99C1> /xc7/xfd <CJK>
-+<U9EA6> /xc7/xfe <CJK>
-+<U51FD> /xc8/xa1 <CJK>
-+<U7BB1> /xc8/xa2 <CJK>
-+<U7872> /xc8/xa3 <CJK>
-+<U7BB8> /xc8/xa4 <CJK>
-+<U8087> /xc8/xa5 <CJK>
-+<U7B48> /xc8/xa6 <CJK>
-+<U6AE8> /xc8/xa7 <CJK>
-+<U5E61> /xc8/xa8 <CJK>
-+<U808C> /xc8/xa9 <CJK>
-+<U7551> /xc8/xaa <CJK>
-+<U7560> /xc8/xab <CJK>
-+<U516B> /xc8/xac <CJK>
-+<U9262> /xc8/xad <CJK>
-+<U6E8C> /xc8/xae <CJK>
-+<U767A> /xc8/xaf <CJK>
-+<U9197> /xc8/xb0 <CJK>
-+<U9AEA> /xc8/xb1 <CJK>
-+<U4F10> /xc8/xb2 <CJK>
-+<U7F70> /xc8/xb3 <CJK>
-+<U629C> /xc8/xb4 <CJK>
-+<U7B4F> /xc8/xb5 <CJK>
-+<U95A5> /xc8/xb6 <CJK>
-+<U9CE9> /xc8/xb7 <CJK>
-+<U567A> /xc8/xb8 <CJK>
-+<U5859> /xc8/xb9 <CJK>
-+<U86E4> /xc8/xba <CJK>
-+<U96BC> /xc8/xbb <CJK>
-+<U4F34> /xc8/xbc <CJK>
-+<U5224> /xc8/xbd <CJK>
-+<U534A> /xc8/xbe <CJK>
-+<U53CD> /xc8/xbf <CJK>
-+<U53DB> /xc8/xc0 <CJK>
-+<U5E06> /xc8/xc1 <CJK>
-+<U642C> /xc8/xc2 <CJK>
-+<U6591> /xc8/xc3 <CJK>
-+<U677F> /xc8/xc4 <CJK>
-+<U6C3E> /xc8/xc5 <CJK>
-+<U6C4E> /xc8/xc6 <CJK>
-+<U7248> /xc8/xc7 <CJK>
-+<U72AF> /xc8/xc8 <CJK>
-+<U73ED> /xc8/xc9 <CJK>
-+<U7554> /xc8/xca <CJK>
-+<U7E41> /xc8/xcb <CJK>
-+<U822C> /xc8/xcc <CJK>
-+<U85E9> /xc8/xcd <CJK>
-+<U8CA9> /xc8/xce <CJK>
-+<U7BC4> /xc8/xcf <CJK>
-+<U91C6> /xc8/xd0 <CJK>
-+<U7169> /xc8/xd1 <CJK>
-+<U9812> /xc8/xd2 <CJK>
-+<U98EF> /xc8/xd3 <CJK>
-+<U633D> /xc8/xd4 <CJK>
-+<U6669> /xc8/xd5 <CJK>
-+<U756A> /xc8/xd6 <CJK>
-+<U76E4> /xc8/xd7 <CJK>
-+<U78D0> /xc8/xd8 <CJK>
-+<U8543> /xc8/xd9 <CJK>
-+<U86EE> /xc8/xda <CJK>
-+<U532A> /xc8/xdb <CJK>
-+<U5351> /xc8/xdc <CJK>
-+<U5426> /xc8/xdd <CJK>
-+<U5983> /xc8/xde <CJK>
-+<U5E87> /xc8/xdf <CJK>
-+<U5F7C> /xc8/xe0 <CJK>
-+<U60B2> /xc8/xe1 <CJK>
-+<U6249> /xc8/xe2 <CJK>
-+<U6279> /xc8/xe3 <CJK>
-+<U62AB> /xc8/xe4 <CJK>
-+<U6590> /xc8/xe5 <CJK>
-+<U6BD4> /xc8/xe6 <CJK>
-+<U6CCC> /xc8/xe7 <CJK>
-+<U75B2> /xc8/xe8 <CJK>
-+<U76AE> /xc8/xe9 <CJK>
-+<U7891> /xc8/xea <CJK>
-+<U79D8> /xc8/xeb <CJK>
-+<U7DCB> /xc8/xec <CJK>
-+<U7F77> /xc8/xed <CJK>
-+<U80A5> /xc8/xee <CJK>
-+<U88AB> /xc8/xef <CJK>
-+<U8AB9> /xc8/xf0 <CJK>
-+<U8CBB> /xc8/xf1 <CJK>
-+<U907F> /xc8/xf2 <CJK>
-+<U975E> /xc8/xf3 <CJK>
-+<U98DB> /xc8/xf4 <CJK>
-+<U6A0B> /xc8/xf5 <CJK>
-+<U7C38> /xc8/xf6 <CJK>
-+<U5099> /xc8/xf7 <CJK>
-+<U5C3E> /xc8/xf8 <CJK>
-+<U5FAE> /xc8/xf9 <CJK>
-+<U6787> /xc8/xfa <CJK>
-+<U6BD8> /xc8/xfb <CJK>
-+<U7435> /xc8/xfc <CJK>
-+<U7709> /xc8/xfd <CJK>
-+<U7F8E> /xc8/xfe <CJK>
-+<U9F3B> /xc9/xa1 <CJK>
-+<U67CA> /xc9/xa2 <CJK>
-+<U7A17> /xc9/xa3 <CJK>
-+<U5339> /xc9/xa4 <CJK>
-+<U758B> /xc9/xa5 <CJK>
-+<U9AED> /xc9/xa6 <CJK>
-+<U5F66> /xc9/xa7 <CJK>
-+<U819D> /xc9/xa8 <CJK>
-+<U83F1> /xc9/xa9 <CJK>
-+<U8098> /xc9/xaa <CJK>
-+<U5F3C> /xc9/xab <CJK>
-+<U5FC5> /xc9/xac <CJK>
-+<U7562> /xc9/xad <CJK>
-+<U7B46> /xc9/xae <CJK>
-+<U903C> /xc9/xaf <CJK>
-+<U6867> /xc9/xb0 <CJK>
-+<U59EB> /xc9/xb1 <CJK>
-+<U5A9B> /xc9/xb2 <CJK>
-+<U7D10> /xc9/xb3 <CJK>
-+<U767E> /xc9/xb4 <CJK>
-+<U8B2C> /xc9/xb5 <CJK>
-+<U4FF5> /xc9/xb6 <CJK>
-+<U5F6A> /xc9/xb7 <CJK>
-+<U6A19> /xc9/xb8 <CJK>
-+<U6C37> /xc9/xb9 <CJK>
-+<U6F02> /xc9/xba <CJK>
-+<U74E2> /xc9/xbb <CJK>
-+<U7968> /xc9/xbc <CJK>
-+<U8868> /xc9/xbd <CJK>
-+<U8A55> /xc9/xbe <CJK>
-+<U8C79> /xc9/xbf <CJK>
-+<U5EDF> /xc9/xc0 <CJK>
-+<U63CF> /xc9/xc1 <CJK>
-+<U75C5> /xc9/xc2 <CJK>
-+<U79D2> /xc9/xc3 <CJK>
-+<U82D7> /xc9/xc4 <CJK>
-+<U9328> /xc9/xc5 <CJK>
-+<U92F2> /xc9/xc6 <CJK>
-+<U849C> /xc9/xc7 <CJK>
-+<U86ED> /xc9/xc8 <CJK>
-+<U9C2D> /xc9/xc9 <CJK>
-+<U54C1> /xc9/xca <CJK>
-+<U5F6C> /xc9/xcb <CJK>
-+<U658C> /xc9/xcc <CJK>
-+<U6D5C> /xc9/xcd <CJK>
-+<U7015> /xc9/xce <CJK>
-+<U8CA7> /xc9/xcf <CJK>
-+<U8CD3> /xc9/xd0 <CJK>
-+<U983B> /xc9/xd1 <CJK>
-+<U654F> /xc9/xd2 <CJK>
-+<U74F6> /xc9/xd3 <CJK>
-+<U4E0D> /xc9/xd4 <CJK>
-+<U4ED8> /xc9/xd5 <CJK>
-+<U57E0> /xc9/xd6 <CJK>
-+<U592B> /xc9/xd7 <CJK>
-+<U5A66> /xc9/xd8 <CJK>
-+<U5BCC> /xc9/xd9 <CJK>
-+<U51A8> /xc9/xda <CJK>
-+<U5E03> /xc9/xdb <CJK>
-+<U5E9C> /xc9/xdc <CJK>
-+<U6016> /xc9/xdd <CJK>
-+<U6276> /xc9/xde <CJK>
-+<U6577> /xc9/xdf <CJK>
-+<U65A7> /xc9/xe0 <CJK>
-+<U666E> /xc9/xe1 <CJK>
-+<U6D6E> /xc9/xe2 <CJK>
-+<U7236> /xc9/xe3 <CJK>
-+<U7B26> /xc9/xe4 <CJK>
-+<U8150> /xc9/xe5 <CJK>
-+<U819A> /xc9/xe6 <CJK>
-+<U8299> /xc9/xe7 <CJK>
-+<U8B5C> /xc9/xe8 <CJK>
-+<U8CA0> /xc9/xe9 <CJK>
-+<U8CE6> /xc9/xea <CJK>
-+<U8D74> /xc9/xeb <CJK>
-+<U961C> /xc9/xec <CJK>
-+<U9644> /xc9/xed <CJK>
-+<U4FAE> /xc9/xee <CJK>
-+<U64AB> /xc9/xef <CJK>
-+<U6B66> /xc9/xf0 <CJK>
-+<U821E> /xc9/xf1 <CJK>
-+<U8461> /xc9/xf2 <CJK>
-+<U856A> /xc9/xf3 <CJK>
-+<U90E8> /xc9/xf4 <CJK>
-+<U5C01> /xc9/xf5 <CJK>
-+<U6953> /xc9/xf6 <CJK>
-+<U98A8> /xc9/xf7 <CJK>
-+<U847A> /xc9/xf8 <CJK>
-+<U8557> /xc9/xf9 <CJK>
-+<U4F0F> /xc9/xfa <CJK>
-+<U526F> /xc9/xfb <CJK>
-+<U5FA9> /xc9/xfc <CJK>
-+<U5E45> /xc9/xfd <CJK>
-+<U670D> /xc9/xfe <CJK>
-+<U798F> /xca/xa1 <CJK>
-+<U8179> /xca/xa2 <CJK>
-+<U8907> /xca/xa3 <CJK>
-+<U8986> /xca/xa4 <CJK>
-+<U6DF5> /xca/xa5 <CJK>
-+<U5F17> /xca/xa6 <CJK>
-+<U6255> /xca/xa7 <CJK>
-+<U6CB8> /xca/xa8 <CJK>
-+<U4ECF> /xca/xa9 <CJK>
-+<U7269> /xca/xaa <CJK>
-+<U9B92> /xca/xab <CJK>
-+<U5206> /xca/xac <CJK>
-+<U543B> /xca/xad <CJK>
-+<U5674> /xca/xae <CJK>
-+<U58B3> /xca/xaf <CJK>
-+<U61A4> /xca/xb0 <CJK>
-+<U626E> /xca/xb1 <CJK>
-+<U711A> /xca/xb2 <CJK>
-+<U596E> /xca/xb3 <CJK>
-+<U7C89> /xca/xb4 <CJK>
-+<U7CDE> /xca/xb5 <CJK>
-+<U7D1B> /xca/xb6 <CJK>
-+<U96F0> /xca/xb7 <CJK>
-+<U6587> /xca/xb8 <CJK>
-+<U805E> /xca/xb9 <CJK>
-+<U4E19> /xca/xba <CJK>
-+<U4F75> /xca/xbb <CJK>
-+<U5175> /xca/xbc <CJK>
-+<U5840> /xca/xbd <CJK>
-+<U5E63> /xca/xbe <CJK>
-+<U5E73> /xca/xbf <CJK>
-+<U5F0A> /xca/xc0 <CJK>
-+<U67C4> /xca/xc1 <CJK>
-+<U4E26> /xca/xc2 <CJK>
-+<U853D> /xca/xc3 <CJK>
-+<U9589> /xca/xc4 <CJK>
-+<U965B> /xca/xc5 <CJK>
-+<U7C73> /xca/xc6 <CJK>
-+<U9801> /xca/xc7 <CJK>
-+<U50FB> /xca/xc8 <CJK>
-+<U58C1> /xca/xc9 <CJK>
-+<U7656> /xca/xca <CJK>
-+<U78A7> /xca/xcb <CJK>
-+<U5225> /xca/xcc <CJK>
-+<U77A5> /xca/xcd <CJK>
-+<U8511> /xca/xce <CJK>
-+<U7B86> /xca/xcf <CJK>
-+<U504F> /xca/xd0 <CJK>
-+<U5909> /xca/xd1 <CJK>
-+<U7247> /xca/xd2 <CJK>
-+<U7BC7> /xca/xd3 <CJK>
-+<U7DE8> /xca/xd4 <CJK>
-+<U8FBA> /xca/xd5 <CJK>
-+<U8FD4> /xca/xd6 <CJK>
-+<U904D> /xca/xd7 <CJK>
-+<U4FBF> /xca/xd8 <CJK>
-+<U52C9> /xca/xd9 <CJK>
-+<U5A29> /xca/xda <CJK>
-+<U5F01> /xca/xdb <CJK>
-+<U97AD> /xca/xdc <CJK>
-+<U4FDD> /xca/xdd <CJK>
-+<U8217> /xca/xde <CJK>
-+<U92EA> /xca/xdf <CJK>
-+<U5703> /xca/xe0 <CJK>
-+<U6355> /xca/xe1 <CJK>
-+<U6B69> /xca/xe2 <CJK>
-+<U752B> /xca/xe3 <CJK>
-+<U88DC> /xca/xe4 <CJK>
-+<U8F14> /xca/xe5 <CJK>
-+<U7A42> /xca/xe6 <CJK>
-+<U52DF> /xca/xe7 <CJK>
-+<U5893> /xca/xe8 <CJK>
-+<U6155> /xca/xe9 <CJK>
-+<U620A> /xca/xea <CJK>
-+<U66AE> /xca/xeb <CJK>
-+<U6BCD> /xca/xec <CJK>
-+<U7C3F> /xca/xed <CJK>
-+<U83E9> /xca/xee <CJK>
-+<U5023> /xca/xef <CJK>
-+<U4FF8> /xca/xf0 <CJK>
-+<U5305> /xca/xf1 <CJK>
-+<U5446> /xca/xf2 <CJK>
-+<U5831> /xca/xf3 <CJK>
-+<U5949> /xca/xf4 <CJK>
-+<U5B9D> /xca/xf5 <CJK>
-+<U5CF0> /xca/xf6 <CJK>
-+<U5CEF> /xca/xf7 <CJK>
-+<U5D29> /xca/xf8 <CJK>
-+<U5E96> /xca/xf9 <CJK>
-+<U62B1> /xca/xfa <CJK>
-+<U6367> /xca/xfb <CJK>
-+<U653E> /xca/xfc <CJK>
-+<U65B9> /xca/xfd <CJK>
-+<U670B> /xca/xfe <CJK>
-+<U6CD5> /xcb/xa1 <CJK>
-+<U6CE1> /xcb/xa2 <CJK>
-+<U70F9> /xcb/xa3 <CJK>
-+<U7832> /xcb/xa4 <CJK>
-+<U7E2B> /xcb/xa5 <CJK>
-+<U80DE> /xcb/xa6 <CJK>
-+<U82B3> /xcb/xa7 <CJK>
-+<U840C> /xcb/xa8 <CJK>
-+<U84EC> /xcb/xa9 <CJK>
-+<U8702> /xcb/xaa <CJK>
-+<U8912> /xcb/xab <CJK>
-+<U8A2A> /xcb/xac <CJK>
-+<U8C4A> /xcb/xad <CJK>
-+<U90A6> /xcb/xae <CJK>
-+<U92D2> /xcb/xaf <CJK>
-+<U98FD> /xcb/xb0 <CJK>
-+<U9CF3> /xcb/xb1 <CJK>
-+<U9D6C> /xcb/xb2 <CJK>
-+<U4E4F> /xcb/xb3 <CJK>
-+<U4EA1> /xcb/xb4 <CJK>
-+<U508D> /xcb/xb5 <CJK>
-+<U5256> /xcb/xb6 <CJK>
-+<U574A> /xcb/xb7 <CJK>
-+<U59A8> /xcb/xb8 <CJK>
-+<U5E3D> /xcb/xb9 <CJK>
-+<U5FD8> /xcb/xba <CJK>
-+<U5FD9> /xcb/xbb <CJK>
-+<U623F> /xcb/xbc <CJK>
-+<U66B4> /xcb/xbd <CJK>
-+<U671B> /xcb/xbe <CJK>
-+<U67D0> /xcb/xbf <CJK>
-+<U68D2> /xcb/xc0 <CJK>
-+<U5192> /xcb/xc1 <CJK>
-+<U7D21> /xcb/xc2 <CJK>
-+<U80AA> /xcb/xc3 <CJK>
-+<U81A8> /xcb/xc4 <CJK>
-+<U8B00> /xcb/xc5 <CJK>
-+<U8C8C> /xcb/xc6 <CJK>
-+<U8CBF> /xcb/xc7 <CJK>
-+<U927E> /xcb/xc8 <CJK>
-+<U9632> /xcb/xc9 <CJK>
-+<U5420> /xcb/xca <CJK>
-+<U982C> /xcb/xcb <CJK>
-+<U5317> /xcb/xcc <CJK>
-+<U50D5> /xcb/xcd <CJK>
-+<U535C> /xcb/xce <CJK>
-+<U58A8> /xcb/xcf <CJK>
-+<U64B2> /xcb/xd0 <CJK>
-+<U6734> /xcb/xd1 <CJK>
-+<U7267> /xcb/xd2 <CJK>
-+<U7766> /xcb/xd3 <CJK>
-+<U7A46> /xcb/xd4 <CJK>
-+<U91E6> /xcb/xd5 <CJK>
-+<U52C3> /xcb/xd6 <CJK>
-+<U6CA1> /xcb/xd7 <CJK>
-+<U6B86> /xcb/xd8 <CJK>
-+<U5800> /xcb/xd9 <CJK>
-+<U5E4C> /xcb/xda <CJK>
-+<U5954> /xcb/xdb <CJK>
-+<U672C> /xcb/xdc <CJK>
-+<U7FFB> /xcb/xdd <CJK>
-+<U51E1> /xcb/xde <CJK>
-+<U76C6> /xcb/xdf <CJK>
-+<U6469> /xcb/xe0 <CJK>
-+<U78E8> /xcb/xe1 <CJK>
-+<U9B54> /xcb/xe2 <CJK>
-+<U9EBB> /xcb/xe3 <CJK>
-+<U57CB> /xcb/xe4 <CJK>
-+<U59B9> /xcb/xe5 <CJK>
-+<U6627> /xcb/xe6 <CJK>
-+<U679A> /xcb/xe7 <CJK>
-+<U6BCE> /xcb/xe8 <CJK>
-+<U54E9> /xcb/xe9 <CJK>
-+<U69D9> /xcb/xea <CJK>
-+<U5E55> /xcb/xeb <CJK>
-+<U819C> /xcb/xec <CJK>
-+<U6795> /xcb/xed <CJK>
-+<U9BAA> /xcb/xee <CJK>
-+<U67FE> /xcb/xef <CJK>
-+<U9C52> /xcb/xf0 <CJK>
-+<U685D> /xcb/xf1 <CJK>
-+<U4EA6> /xcb/xf2 <CJK>
-+<U4FE3> /xcb/xf3 <CJK>
-+<U53C8> /xcb/xf4 <CJK>
-+<U62B9> /xcb/xf5 <CJK>
-+<U672B> /xcb/xf6 <CJK>
-+<U6CAB> /xcb/xf7 <CJK>
-+<U8FC4> /xcb/xf8 <CJK>
-+<U4FAD> /xcb/xf9 <CJK>
-+<U7E6D> /xcb/xfa <CJK>
-+<U9EBF> /xcb/xfb <CJK>
-+<U4E07> /xcb/xfc <CJK>
-+<U6162> /xcb/xfd <CJK>
-+<U6E80> /xcb/xfe <CJK>
-+<U6F2B> /xcc/xa1 <CJK>
-+<U8513> /xcc/xa2 <CJK>
-+<U5473> /xcc/xa3 <CJK>
-+<U672A> /xcc/xa4 <CJK>
-+<U9B45> /xcc/xa5 <CJK>
-+<U5DF3> /xcc/xa6 <CJK>
-+<U7B95> /xcc/xa7 <CJK>
-+<U5CAC> /xcc/xa8 <CJK>
-+<U5BC6> /xcc/xa9 <CJK>
-+<U871C> /xcc/xaa <CJK>
-+<U6E4A> /xcc/xab <CJK>
-+<U84D1> /xcc/xac <CJK>
-+<U7A14> /xcc/xad <CJK>
-+<U8108> /xcc/xae <CJK>
-+<U5999> /xcc/xaf <CJK>
-+<U7C8D> /xcc/xb0 <CJK>
-+<U6C11> /xcc/xb1 <CJK>
-+<U7720> /xcc/xb2 <CJK>
-+<U52D9> /xcc/xb3 <CJK>
-+<U5922> /xcc/xb4 <CJK>
-+<U7121> /xcc/xb5 <CJK>
-+<U725F> /xcc/xb6 <CJK>
-+<U77DB> /xcc/xb7 <CJK>
-+<U9727> /xcc/xb8 <CJK>
-+<U9D61> /xcc/xb9 <CJK>
-+<U690B> /xcc/xba <CJK>
-+<U5A7F> /xcc/xbb <CJK>
-+<U5A18> /xcc/xbc <CJK>
-+<U51A5> /xcc/xbd <CJK>
-+<U540D> /xcc/xbe <CJK>
-+<U547D> /xcc/xbf <CJK>
-+<U660E> /xcc/xc0 <CJK>
-+<U76DF> /xcc/xc1 <CJK>
-+<U8FF7> /xcc/xc2 <CJK>
-+<U9298> /xcc/xc3 <CJK>
-+<U9CF4> /xcc/xc4 <CJK>
-+<U59EA> /xcc/xc5 <CJK>
-+<U725D> /xcc/xc6 <CJK>
-+<U6EC5> /xcc/xc7 <CJK>
-+<U514D> /xcc/xc8 <CJK>
-+<U68C9> /xcc/xc9 <CJK>
-+<U7DBF> /xcc/xca <CJK>
-+<U7DEC> /xcc/xcb <CJK>
-+<U9762> /xcc/xcc <CJK>
-+<U9EBA> /xcc/xcd <CJK>
-+<U6478> /xcc/xce <CJK>
-+<U6A21> /xcc/xcf <CJK>
-+<U8302> /xcc/xd0 <CJK>
-+<U5984> /xcc/xd1 <CJK>
-+<U5B5F> /xcc/xd2 <CJK>
-+<U6BDB> /xcc/xd3 <CJK>
-+<U731B> /xcc/xd4 <CJK>
-+<U76F2> /xcc/xd5 <CJK>
-+<U7DB2> /xcc/xd6 <CJK>
-+<U8017> /xcc/xd7 <CJK>
-+<U8499> /xcc/xd8 <CJK>
-+<U5132> /xcc/xd9 <CJK>
-+<U6728> /xcc/xda <CJK>
-+<U9ED9> /xcc/xdb <CJK>
-+<U76EE> /xcc/xdc <CJK>
-+<U6762> /xcc/xdd <CJK>
-+<U52FF> /xcc/xde <CJK>
-+<U9905> /xcc/xdf <CJK>
-+<U5C24> /xcc/xe0 <CJK>
-+<U623B> /xcc/xe1 <CJK>
-+<U7C7E> /xcc/xe2 <CJK>
-+<U8CB0> /xcc/xe3 <CJK>
-+<U554F> /xcc/xe4 <CJK>
-+<U60B6> /xcc/xe5 <CJK>
-+<U7D0B> /xcc/xe6 <CJK>
-+<U9580> /xcc/xe7 <CJK>
-+<U5301> /xcc/xe8 <CJK>
-+<U4E5F> /xcc/xe9 <CJK>
-+<U51B6> /xcc/xea <CJK>
-+<U591C> /xcc/xeb <CJK>
-+<U723A> /xcc/xec <CJK>
-+<U8036> /xcc/xed <CJK>
-+<U91CE> /xcc/xee <CJK>
-+<U5F25> /xcc/xef <CJK>
-+<U77E2> /xcc/xf0 <CJK>
-+<U5384> /xcc/xf1 <CJK>
-+<U5F79> /xcc/xf2 <CJK>
-+<U7D04> /xcc/xf3 <CJK>
-+<U85AC> /xcc/xf4 <CJK>
-+<U8A33> /xcc/xf5 <CJK>
-+<U8E8D> /xcc/xf6 <CJK>
-+<U9756> /xcc/xf7 <CJK>
-+<U67F3> /xcc/xf8 <CJK>
-+<U85AE> /xcc/xf9 <CJK>
-+<U9453> /xcc/xfa <CJK>
-+<U6109> /xcc/xfb <CJK>
-+<U6108> /xcc/xfc <CJK>
-+<U6CB9> /xcc/xfd <CJK>
-+<U7652> /xcc/xfe <CJK>
-+<U8AED> /xcd/xa1 <CJK>
-+<U8F38> /xcd/xa2 <CJK>
-+<U552F> /xcd/xa3 <CJK>
-+<U4F51> /xcd/xa4 <CJK>
-+<U512A> /xcd/xa5 <CJK>
-+<U52C7> /xcd/xa6 <CJK>
-+<U53CB> /xcd/xa7 <CJK>
-+<U5BA5> /xcd/xa8 <CJK>
-+<U5E7D> /xcd/xa9 <CJK>
-+<U60A0> /xcd/xaa <CJK>
-+<U6182> /xcd/xab <CJK>
-+<U63D6> /xcd/xac <CJK>
-+<U6709> /xcd/xad <CJK>
-+<U67DA> /xcd/xae <CJK>
-+<U6E67> /xcd/xaf <CJK>
-+<U6D8C> /xcd/xb0 <CJK>
-+<U7336> /xcd/xb1 <CJK>
-+<U7337> /xcd/xb2 <CJK>
-+<U7531> /xcd/xb3 <CJK>
-+<U7950> /xcd/xb4 <CJK>
-+<U88D5> /xcd/xb5 <CJK>
-+<U8A98> /xcd/xb6 <CJK>
-+<U904A> /xcd/xb7 <CJK>
-+<U9091> /xcd/xb8 <CJK>
-+<U90F5> /xcd/xb9 <CJK>
-+<U96C4> /xcd/xba <CJK>
-+<U878D> /xcd/xbb <CJK>
-+<U5915> /xcd/xbc <CJK>
-+<U4E88> /xcd/xbd <CJK>
-+<U4F59> /xcd/xbe <CJK>
-+<U4E0E> /xcd/xbf <CJK>
-+<U8A89> /xcd/xc0 <CJK>
-+<U8F3F> /xcd/xc1 <CJK>
-+<U9810> /xcd/xc2 <CJK>
-+<U50AD> /xcd/xc3 <CJK>
-+<U5E7C> /xcd/xc4 <CJK>
-+<U5996> /xcd/xc5 <CJK>
-+<U5BB9> /xcd/xc6 <CJK>
-+<U5EB8> /xcd/xc7 <CJK>
-+<U63DA> /xcd/xc8 <CJK>
-+<U63FA> /xcd/xc9 <CJK>
-+<U64C1> /xcd/xca <CJK>
-+<U66DC> /xcd/xcb <CJK>
-+<U694A> /xcd/xcc <CJK>
-+<U69D8> /xcd/xcd <CJK>
-+<U6D0B> /xcd/xce <CJK>
-+<U6EB6> /xcd/xcf <CJK>
-+<U7194> /xcd/xd0 <CJK>
-+<U7528> /xcd/xd1 <CJK>
-+<U7AAF> /xcd/xd2 <CJK>
-+<U7F8A> /xcd/xd3 <CJK>
-+<U8000> /xcd/xd4 <CJK>
-+<U8449> /xcd/xd5 <CJK>
-+<U84C9> /xcd/xd6 <CJK>
-+<U8981> /xcd/xd7 <CJK>
-+<U8B21> /xcd/xd8 <CJK>
-+<U8E0A> /xcd/xd9 <CJK>
-+<U9065> /xcd/xda <CJK>
-+<U967D> /xcd/xdb <CJK>
-+<U990A> /xcd/xdc <CJK>
-+<U617E> /xcd/xdd <CJK>
-+<U6291> /xcd/xde <CJK>
-+<U6B32> /xcd/xdf <CJK>
-+<U6C83> /xcd/xe0 <CJK>
-+<U6D74> /xcd/xe1 <CJK>
-+<U7FCC> /xcd/xe2 <CJK>
-+<U7FFC> /xcd/xe3 <CJK>
-+<U6DC0> /xcd/xe4 <CJK>
-+<U7F85> /xcd/xe5 <CJK>
-+<U87BA> /xcd/xe6 <CJK>
-+<U88F8> /xcd/xe7 <CJK>
-+<U6765> /xcd/xe8 <CJK>
-+<U83B1> /xcd/xe9 <CJK>
-+<U983C> /xcd/xea <CJK>
-+<U96F7> /xcd/xeb <CJK>
-+<U6D1B> /xcd/xec <CJK>
-+<U7D61> /xcd/xed <CJK>
-+<U843D> /xcd/xee <CJK>
-+<U916A> /xcd/xef <CJK>
-+<U4E71> /xcd/xf0 <CJK>
-+<U5375> /xcd/xf1 <CJK>
-+<U5D50> /xcd/xf2 <CJK>
-+<U6B04> /xcd/xf3 <CJK>
-+<U6FEB> /xcd/xf4 <CJK>
-+<U85CD> /xcd/xf5 <CJK>
-+<U862D> /xcd/xf6 <CJK>
-+<U89A7> /xcd/xf7 <CJK>
-+<U5229> /xcd/xf8 <CJK>
-+<U540F> /xcd/xf9 <CJK>
-+<U5C65> /xcd/xfa <CJK>
-+<U674E> /xcd/xfb <CJK>
-+<U68A8> /xcd/xfc <CJK>
-+<U7406> /xcd/xfd <CJK>
-+<U7483> /xcd/xfe <CJK>
-+<U75E2> /xce/xa1 <CJK>
-+<U88CF> /xce/xa2 <CJK>
-+<U88E1> /xce/xa3 <CJK>
-+<U91CC> /xce/xa4 <CJK>
-+<U96E2> /xce/xa5 <CJK>
-+<U9678> /xce/xa6 <CJK>
-+<U5F8B> /xce/xa7 <CJK>
-+<U7387> /xce/xa8 <CJK>
-+<U7ACB> /xce/xa9 <CJK>
-+<U844E> /xce/xaa <CJK>
-+<U63A0> /xce/xab <CJK>
-+<U7565> /xce/xac <CJK>
-+<U5289> /xce/xad <CJK>
-+<U6D41> /xce/xae <CJK>
-+<U6E9C> /xce/xaf <CJK>
-+<U7409> /xce/xb0 <CJK>
-+<U7559> /xce/xb1 <CJK>
-+<U786B> /xce/xb2 <CJK>
-+<U7C92> /xce/xb3 <CJK>
-+<U9686> /xce/xb4 <CJK>
-+<U7ADC> /xce/xb5 <CJK>
-+<U9F8D> /xce/xb6 <CJK>
-+<U4FB6> /xce/xb7 <CJK>
-+<U616E> /xce/xb8 <CJK>
-+<U65C5> /xce/xb9 <CJK>
-+<U865C> /xce/xba <CJK>
-+<U4E86> /xce/xbb <CJK>
-+<U4EAE> /xce/xbc <CJK>
-+<U50DA> /xce/xbd <CJK>
-+<U4E21> /xce/xbe <CJK>
-+<U51CC> /xce/xbf <CJK>
-+<U5BEE> /xce/xc0 <CJK>
-+<U6599> /xce/xc1 <CJK>
-+<U6881> /xce/xc2 <CJK>
-+<U6DBC> /xce/xc3 <CJK>
-+<U731F> /xce/xc4 <CJK>
-+<U7642> /xce/xc5 <CJK>
-+<U77AD> /xce/xc6 <CJK>
-+<U7A1C> /xce/xc7 <CJK>
-+<U7CE7> /xce/xc8 <CJK>
-+<U826F> /xce/xc9 <CJK>
-+<U8AD2> /xce/xca <CJK>
-+<U907C> /xce/xcb <CJK>
-+<U91CF> /xce/xcc <CJK>
-+<U9675> /xce/xcd <CJK>
-+<U9818> /xce/xce <CJK>
-+<U529B> /xce/xcf <CJK>
-+<U7DD1> /xce/xd0 <CJK>
-+<U502B> /xce/xd1 <CJK>
-+<U5398> /xce/xd2 <CJK>
-+<U6797> /xce/xd3 <CJK>
-+<U6DCB> /xce/xd4 <CJK>
-+<U71D0> /xce/xd5 <CJK>
-+<U7433> /xce/xd6 <CJK>
-+<U81E8> /xce/xd7 <CJK>
-+<U8F2A> /xce/xd8 <CJK>
-+<U96A3> /xce/xd9 <CJK>
-+<U9C57> /xce/xda <CJK>
-+<U9E9F> /xce/xdb <CJK>
-+<U7460> /xce/xdc <CJK>
-+<U5841> /xce/xdd <CJK>
-+<U6D99> /xce/xde <CJK>
-+<U7D2F> /xce/xdf <CJK>
-+<U985E> /xce/xe0 <CJK>
-+<U4EE4> /xce/xe1 <CJK>
-+<U4F36> /xce/xe2 <CJK>
-+<U4F8B> /xce/xe3 <CJK>
-+<U51B7> /xce/xe4 <CJK>
-+<U52B1> /xce/xe5 <CJK>
-+<U5DBA> /xce/xe6 <CJK>
-+<U601C> /xce/xe7 <CJK>
-+<U73B2> /xce/xe8 <CJK>
-+<U793C> /xce/xe9 <CJK>
-+<U82D3> /xce/xea <CJK>
-+<U9234> /xce/xeb <CJK>
-+<U96B7> /xce/xec <CJK>
-+<U96F6> /xce/xed <CJK>
-+<U970A> /xce/xee <CJK>
-+<U9E97> /xce/xef <CJK>
-+<U9F62> /xce/xf0 <CJK>
-+<U66A6> /xce/xf1 <CJK>
-+<U6B74> /xce/xf2 <CJK>
-+<U5217> /xce/xf3 <CJK>
-+<U52A3> /xce/xf4 <CJK>
-+<U70C8> /xce/xf5 <CJK>
-+<U88C2> /xce/xf6 <CJK>
-+<U5EC9> /xce/xf7 <CJK>
-+<U604B> /xce/xf8 <CJK>
-+<U6190> /xce/xf9 <CJK>
-+<U6F23> /xce/xfa <CJK>
-+<U7149> /xce/xfb <CJK>
-+<U7C3E> /xce/xfc <CJK>
-+<U7DF4> /xce/xfd <CJK>
-+<U806F> /xce/xfe <CJK>
-+<U84EE> /xcf/xa1 <CJK>
-+<U9023> /xcf/xa2 <CJK>
-+<U932C> /xcf/xa3 <CJK>
-+<U5442> /xcf/xa4 <CJK>
-+<U9B6F> /xcf/xa5 <CJK>
-+<U6AD3> /xcf/xa6 <CJK>
-+<U7089> /xcf/xa7 <CJK>
-+<U8CC2> /xcf/xa8 <CJK>
-+<U8DEF> /xcf/xa9 <CJK>
-+<U9732> /xcf/xaa <CJK>
-+<U52B4> /xcf/xab <CJK>
-+<U5A41> /xcf/xac <CJK>
-+<U5ECA> /xcf/xad <CJK>
-+<U5F04> /xcf/xae <CJK>
-+<U6717> /xcf/xaf <CJK>
-+<U697C> /xcf/xb0 <CJK>
-+<U6994> /xcf/xb1 <CJK>
-+<U6D6A> /xcf/xb2 <CJK>
-+<U6F0F> /xcf/xb3 <CJK>
-+<U7262> /xcf/xb4 <CJK>
-+<U72FC> /xcf/xb5 <CJK>
-+<U7BED> /xcf/xb6 <CJK>
-+<U8001> /xcf/xb7 <CJK>
-+<U807E> /xcf/xb8 <CJK>
-+<U874B> /xcf/xb9 <CJK>
-+<U90CE> /xcf/xba <CJK>
-+<U516D> /xcf/xbb <CJK>
-+<U9E93> /xcf/xbc <CJK>
-+<U7984> /xcf/xbd <CJK>
-+<U808B> /xcf/xbe <CJK>
-+<U9332> /xcf/xbf <CJK>
-+<U8AD6> /xcf/xc0 <CJK>
-+<U502D> /xcf/xc1 <CJK>
-+<U548C> /xcf/xc2 <CJK>
-+<U8A71> /xcf/xc3 <CJK>
-+<U6B6A> /xcf/xc4 <CJK>
-+<U8CC4> /xcf/xc5 <CJK>
-+<U8107> /xcf/xc6 <CJK>
-+<U60D1> /xcf/xc7 <CJK>
-+<U67A0> /xcf/xc8 <CJK>
-+<U9DF2> /xcf/xc9 <CJK>
-+<U4E99> /xcf/xca <CJK>
-+<U4E98> /xcf/xcb <CJK>
-+<U9C10> /xcf/xcc <CJK>
-+<U8A6B> /xcf/xcd <CJK>
-+<U85C1> /xcf/xce <CJK>
-+<U8568> /xcf/xcf <CJK>
-+<U6900> /xcf/xd0 <CJK>
-+<U6E7E> /xcf/xd1 <CJK>
-+<U7897> /xcf/xd2 <CJK>
-+<U8155> /xcf/xd3 <CJK>
-+<U5F0C> /xd0/xa1 <CJK>
-+<U4E10> /xd0/xa2 <CJK>
-+<U4E15> /xd0/xa3 <CJK>
-+<U4E2A> /xd0/xa4 <CJK>
-+<U4E31> /xd0/xa5 <CJK>
-+<U4E36> /xd0/xa6 <CJK>
-+<U4E3C> /xd0/xa7 <CJK>
-+<U4E3F> /xd0/xa8 <CJK>
-+<U4E42> /xd0/xa9 <CJK>
-+<U4E56> /xd0/xaa <CJK>
-+<U4E58> /xd0/xab <CJK>
-+<U4E82> /xd0/xac <CJK>
-+<U4E85> /xd0/xad <CJK>
-+<U8C6B> /xd0/xae <CJK>
-+<U4E8A> /xd0/xaf <CJK>
-+<U8212> /xd0/xb0 <CJK>
-+<U5F0D> /xd0/xb1 <CJK>
-+<U4E8E> /xd0/xb2 <CJK>
-+<U4E9E> /xd0/xb3 <CJK>
-+<U4E9F> /xd0/xb4 <CJK>
-+<U4EA0> /xd0/xb5 <CJK>
-+<U4EA2> /xd0/xb6 <CJK>
-+<U4EB0> /xd0/xb7 <CJK>
-+<U4EB3> /xd0/xb8 <CJK>
-+<U4EB6> /xd0/xb9 <CJK>
-+<U4ECE> /xd0/xba <CJK>
-+<U4ECD> /xd0/xbb <CJK>
-+<U4EC4> /xd0/xbc <CJK>
-+<U4EC6> /xd0/xbd <CJK>
-+<U4EC2> /xd0/xbe <CJK>
-+<U4ED7> /xd0/xbf <CJK>
-+<U4EDE> /xd0/xc0 <CJK>
-+<U4EED> /xd0/xc1 <CJK>
-+<U4EDF> /xd0/xc2 <CJK>
-+<U4EF7> /xd0/xc3 <CJK>
-+<U4F09> /xd0/xc4 <CJK>
-+<U4F5A> /xd0/xc5 <CJK>
-+<U4F30> /xd0/xc6 <CJK>
-+<U4F5B> /xd0/xc7 <CJK>
-+<U4F5D> /xd0/xc8 <CJK>
-+<U4F57> /xd0/xc9 <CJK>
-+<U4F47> /xd0/xca <CJK>
-+<U4F76> /xd0/xcb <CJK>
-+<U4F88> /xd0/xcc <CJK>
-+<U4F8F> /xd0/xcd <CJK>
-+<U4F98> /xd0/xce <CJK>
-+<U4F7B> /xd0/xcf <CJK>
-+<U4F69> /xd0/xd0 <CJK>
-+<U4F70> /xd0/xd1 <CJK>
-+<U4F91> /xd0/xd2 <CJK>
-+<U4F6F> /xd0/xd3 <CJK>
-+<U4F86> /xd0/xd4 <CJK>
-+<U4F96> /xd0/xd5 <CJK>
-+<U5118> /xd0/xd6 <CJK>
-+<U4FD4> /xd0/xd7 <CJK>
-+<U4FDF> /xd0/xd8 <CJK>
-+<U4FCE> /xd0/xd9 <CJK>
-+<U4FD8> /xd0/xda <CJK>
-+<U4FDB> /xd0/xdb <CJK>
-+<U4FD1> /xd0/xdc <CJK>
-+<U4FDA> /xd0/xdd <CJK>
-+<U4FD0> /xd0/xde <CJK>
-+<U4FE4> /xd0/xdf <CJK>
-+<U4FE5> /xd0/xe0 <CJK>
-+<U501A> /xd0/xe1 <CJK>
-+<U5028> /xd0/xe2 <CJK>
-+<U5014> /xd0/xe3 <CJK>
-+<U502A> /xd0/xe4 <CJK>
-+<U5025> /xd0/xe5 <CJK>
-+<U5005> /xd0/xe6 <CJK>
-+<U4F1C> /xd0/xe7 <CJK>
-+<U4FF6> /xd0/xe8 <CJK>
-+<U5021> /xd0/xe9 <CJK>
-+<U5029> /xd0/xea <CJK>
-+<U502C> /xd0/xeb <CJK>
-+<U4FFE> /xd0/xec <CJK>
-+<U4FEF> /xd0/xed <CJK>
-+<U5011> /xd0/xee <CJK>
-+<U5006> /xd0/xef <CJK>
-+<U5043> /xd0/xf0 <CJK>
-+<U5047> /xd0/xf1 <CJK>
-+<U6703> /xd0/xf2 <CJK>
-+<U5055> /xd0/xf3 <CJK>
-+<U5050> /xd0/xf4 <CJK>
-+<U5048> /xd0/xf5 <CJK>
-+<U505A> /xd0/xf6 <CJK>
-+<U5056> /xd0/xf7 <CJK>
-+<U506C> /xd0/xf8 <CJK>
-+<U5078> /xd0/xf9 <CJK>
-+<U5080> /xd0/xfa <CJK>
-+<U509A> /xd0/xfb <CJK>
-+<U5085> /xd0/xfc <CJK>
-+<U50B4> /xd0/xfd <CJK>
-+<U50B2> /xd0/xfe <CJK>
-+<U50C9> /xd1/xa1 <CJK>
-+<U50CA> /xd1/xa2 <CJK>
-+<U50B3> /xd1/xa3 <CJK>
-+<U50C2> /xd1/xa4 <CJK>
-+<U50D6> /xd1/xa5 <CJK>
-+<U50DE> /xd1/xa6 <CJK>
-+<U50E5> /xd1/xa7 <CJK>
-+<U50ED> /xd1/xa8 <CJK>
-+<U50E3> /xd1/xa9 <CJK>
-+<U50EE> /xd1/xaa <CJK>
-+<U50F9> /xd1/xab <CJK>
-+<U50F5> /xd1/xac <CJK>
-+<U5109> /xd1/xad <CJK>
-+<U5101> /xd1/xae <CJK>
-+<U5102> /xd1/xaf <CJK>
-+<U5116> /xd1/xb0 <CJK>
-+<U5115> /xd1/xb1 <CJK>
-+<U5114> /xd1/xb2 <CJK>
-+<U511A> /xd1/xb3 <CJK>
-+<U5121> /xd1/xb4 <CJK>
-+<U513A> /xd1/xb5 <CJK>
-+<U5137> /xd1/xb6 <CJK>
-+<U513C> /xd1/xb7 <CJK>
-+<U513B> /xd1/xb8 <CJK>
-+<U513F> /xd1/xb9 <CJK>
-+<U5140> /xd1/xba <CJK>
-+<U5152> /xd1/xbb <CJK>
-+<U514C> /xd1/xbc <CJK>
-+<U5154> /xd1/xbd <CJK>
-+<U5162> /xd1/xbe <CJK>
-+<U7AF8> /xd1/xbf <CJK>
-+<U5169> /xd1/xc0 <CJK>
-+<U516A> /xd1/xc1 <CJK>
-+<U516E> /xd1/xc2 <CJK>
-+<U5180> /xd1/xc3 <CJK>
-+<U5182> /xd1/xc4 <CJK>
-+<U56D8> /xd1/xc5 <CJK>
-+<U518C> /xd1/xc6 <CJK>
-+<U5189> /xd1/xc7 <CJK>
-+<U518F> /xd1/xc8 <CJK>
-+<U5191> /xd1/xc9 <CJK>
-+<U5193> /xd1/xca <CJK>
-+<U5195> /xd1/xcb <CJK>
-+<U5196> /xd1/xcc <CJK>
-+<U51A4> /xd1/xcd <CJK>
-+<U51A6> /xd1/xce <CJK>
-+<U51A2> /xd1/xcf <CJK>
-+<U51A9> /xd1/xd0 <CJK>
-+<U51AA> /xd1/xd1 <CJK>
-+<U51AB> /xd1/xd2 <CJK>
-+<U51B3> /xd1/xd3 <CJK>
-+<U51B1> /xd1/xd4 <CJK>
-+<U51B2> /xd1/xd5 <CJK>
-+<U51B0> /xd1/xd6 <CJK>
-+<U51B5> /xd1/xd7 <CJK>
-+<U51BD> /xd1/xd8 <CJK>
-+<U51C5> /xd1/xd9 <CJK>
-+<U51C9> /xd1/xda <CJK>
-+<U51DB> /xd1/xdb <CJK>
-+<U51E0> /xd1/xdc <CJK>
-+<U8655> /xd1/xdd <CJK>
-+<U51E9> /xd1/xde <CJK>
-+<U51ED> /xd1/xdf <CJK>
-+<U51F0> /xd1/xe0 <CJK>
-+<U51F5> /xd1/xe1 <CJK>
-+<U51FE> /xd1/xe2 <CJK>
-+<U5204> /xd1/xe3 <CJK>
-+<U520B> /xd1/xe4 <CJK>
-+<U5214> /xd1/xe5 <CJK>
-+<U520E> /xd1/xe6 <CJK>
-+<U5227> /xd1/xe7 <CJK>
-+<U522A> /xd1/xe8 <CJK>
-+<U522E> /xd1/xe9 <CJK>
-+<U5233> /xd1/xea <CJK>
-+<U5239> /xd1/xeb <CJK>
-+<U524F> /xd1/xec <CJK>
-+<U5244> /xd1/xed <CJK>
-+<U524B> /xd1/xee <CJK>
-+<U524C> /xd1/xef <CJK>
-+<U525E> /xd1/xf0 <CJK>
-+<U5254> /xd1/xf1 <CJK>
-+<U526A> /xd1/xf2 <CJK>
-+<U5274> /xd1/xf3 <CJK>
-+<U5269> /xd1/xf4 <CJK>
-+<U5273> /xd1/xf5 <CJK>
-+<U527F> /xd1/xf6 <CJK>
-+<U527D> /xd1/xf7 <CJK>
-+<U528D> /xd1/xf8 <CJK>
-+<U5294> /xd1/xf9 <CJK>
-+<U5292> /xd1/xfa <CJK>
-+<U5271> /xd1/xfb <CJK>
-+<U5288> /xd1/xfc <CJK>
-+<U5291> /xd1/xfd <CJK>
-+<U8FA8> /xd1/xfe <CJK>
-+<U8FA7> /xd2/xa1 <CJK>
-+<U52AC> /xd2/xa2 <CJK>
-+<U52AD> /xd2/xa3 <CJK>
-+<U52BC> /xd2/xa4 <CJK>
-+<U52B5> /xd2/xa5 <CJK>
-+<U52C1> /xd2/xa6 <CJK>
-+<U52CD> /xd2/xa7 <CJK>
-+<U52D7> /xd2/xa8 <CJK>
-+<U52DE> /xd2/xa9 <CJK>
-+<U52E3> /xd2/xaa <CJK>
-+<U52E6> /xd2/xab <CJK>
-+<U98ED> /xd2/xac <CJK>
-+<U52E0> /xd2/xad <CJK>
-+<U52F3> /xd2/xae <CJK>
-+<U52F5> /xd2/xaf <CJK>
-+<U52F8> /xd2/xb0 <CJK>
-+<U52F9> /xd2/xb1 <CJK>
-+<U5306> /xd2/xb2 <CJK>
-+<U5308> /xd2/xb3 <CJK>
-+<U7538> /xd2/xb4 <CJK>
-+<U530D> /xd2/xb5 <CJK>
-+<U5310> /xd2/xb6 <CJK>
-+<U530F> /xd2/xb7 <CJK>
-+<U5315> /xd2/xb8 <CJK>
-+<U531A> /xd2/xb9 <CJK>
-+<U5323> /xd2/xba <CJK>
-+<U532F> /xd2/xbb <CJK>
-+<U5331> /xd2/xbc <CJK>
-+<U5333> /xd2/xbd <CJK>
-+<U5338> /xd2/xbe <CJK>
-+<U5340> /xd2/xbf <CJK>
-+<U5346> /xd2/xc0 <CJK>
-+<U5345> /xd2/xc1 <CJK>
-+<U4E17> /xd2/xc2 <CJK>
-+<U5349> /xd2/xc3 <CJK>
-+<U534D> /xd2/xc4 <CJK>
-+<U51D6> /xd2/xc5 <CJK>
-+<U535E> /xd2/xc6 <CJK>
-+<U5369> /xd2/xc7 <CJK>
-+<U536E> /xd2/xc8 <CJK>
-+<U5918> /xd2/xc9 <CJK>
-+<U537B> /xd2/xca <CJK>
-+<U5377> /xd2/xcb <CJK>
-+<U5382> /xd2/xcc <CJK>
-+<U5396> /xd2/xcd <CJK>
-+<U53A0> /xd2/xce <CJK>
-+<U53A6> /xd2/xcf <CJK>
-+<U53A5> /xd2/xd0 <CJK>
-+<U53AE> /xd2/xd1 <CJK>
-+<U53B0> /xd2/xd2 <CJK>
-+<U53B6> /xd2/xd3 <CJK>
-+<U53C3> /xd2/xd4 <CJK>
-+<U7C12> /xd2/xd5 <CJK>
-+<U96D9> /xd2/xd6 <CJK>
-+<U53DF> /xd2/xd7 <CJK>
-+<U66FC> /xd2/xd8 <CJK>
-+<U71EE> /xd2/xd9 <CJK>
-+<U53EE> /xd2/xda <CJK>
-+<U53E8> /xd2/xdb <CJK>
-+<U53ED> /xd2/xdc <CJK>
-+<U53FA> /xd2/xdd <CJK>
-+<U5401> /xd2/xde <CJK>
-+<U543D> /xd2/xdf <CJK>
-+<U5440> /xd2/xe0 <CJK>
-+<U542C> /xd2/xe1 <CJK>
-+<U542D> /xd2/xe2 <CJK>
-+<U543C> /xd2/xe3 <CJK>
-+<U542E> /xd2/xe4 <CJK>
-+<U5436> /xd2/xe5 <CJK>
-+<U5429> /xd2/xe6 <CJK>
-+<U541D> /xd2/xe7 <CJK>
-+<U544E> /xd2/xe8 <CJK>
-+<U548F> /xd2/xe9 <CJK>
-+<U5475> /xd2/xea <CJK>
-+<U548E> /xd2/xeb <CJK>
-+<U545F> /xd2/xec <CJK>
-+<U5471> /xd2/xed <CJK>
-+<U5477> /xd2/xee <CJK>
-+<U5470> /xd2/xef <CJK>
-+<U5492> /xd2/xf0 <CJK>
-+<U547B> /xd2/xf1 <CJK>
-+<U5480> /xd2/xf2 <CJK>
-+<U5476> /xd2/xf3 <CJK>
-+<U5484> /xd2/xf4 <CJK>
-+<U5490> /xd2/xf5 <CJK>
-+<U5486> /xd2/xf6 <CJK>
-+<U54C7> /xd2/xf7 <CJK>
-+<U54A2> /xd2/xf8 <CJK>
-+<U54B8> /xd2/xf9 <CJK>
-+<U54A5> /xd2/xfa <CJK>
-+<U54AC> /xd2/xfb <CJK>
-+<U54C4> /xd2/xfc <CJK>
-+<U54C8> /xd2/xfd <CJK>
-+<U54A8> /xd2/xfe <CJK>
-+<U54AB> /xd3/xa1 <CJK>
-+<U54C2> /xd3/xa2 <CJK>
-+<U54A4> /xd3/xa3 <CJK>
-+<U54BE> /xd3/xa4 <CJK>
-+<U54BC> /xd3/xa5 <CJK>
-+<U54D8> /xd3/xa6 <CJK>
-+<U54E5> /xd3/xa7 <CJK>
-+<U54E6> /xd3/xa8 <CJK>
-+<U550F> /xd3/xa9 <CJK>
-+<U5514> /xd3/xaa <CJK>
-+<U54FD> /xd3/xab <CJK>
-+<U54EE> /xd3/xac <CJK>
-+<U54ED> /xd3/xad <CJK>
-+<U54FA> /xd3/xae <CJK>
-+<U54E2> /xd3/xaf <CJK>
-+<U5539> /xd3/xb0 <CJK>
-+<U5540> /xd3/xb1 <CJK>
-+<U5563> /xd3/xb2 <CJK>
-+<U554C> /xd3/xb3 <CJK>
-+<U552E> /xd3/xb4 <CJK>
-+<U555C> /xd3/xb5 <CJK>
-+<U5545> /xd3/xb6 <CJK>
-+<U5556> /xd3/xb7 <CJK>
-+<U5557> /xd3/xb8 <CJK>
-+<U5538> /xd3/xb9 <CJK>
-+<U5533> /xd3/xba <CJK>
-+<U555D> /xd3/xbb <CJK>
-+<U5599> /xd3/xbc <CJK>
-+<U5580> /xd3/xbd <CJK>
-+<U54AF> /xd3/xbe <CJK>
-+<U558A> /xd3/xbf <CJK>
-+<U559F> /xd3/xc0 <CJK>
-+<U557B> /xd3/xc1 <CJK>
-+<U557E> /xd3/xc2 <CJK>
-+<U5598> /xd3/xc3 <CJK>
-+<U559E> /xd3/xc4 <CJK>
-+<U55AE> /xd3/xc5 <CJK>
-+<U557C> /xd3/xc6 <CJK>
-+<U5583> /xd3/xc7 <CJK>
-+<U55A9> /xd3/xc8 <CJK>
-+<U5587> /xd3/xc9 <CJK>
-+<U55A8> /xd3/xca <CJK>
-+<U55DA> /xd3/xcb <CJK>
-+<U55C5> /xd3/xcc <CJK>
-+<U55DF> /xd3/xcd <CJK>
-+<U55C4> /xd3/xce <CJK>
-+<U55DC> /xd3/xcf <CJK>
-+<U55E4> /xd3/xd0 <CJK>
-+<U55D4> /xd3/xd1 <CJK>
-+<U5614> /xd3/xd2 <CJK>
-+<U55F7> /xd3/xd3 <CJK>
-+<U5616> /xd3/xd4 <CJK>
-+<U55FE> /xd3/xd5 <CJK>
-+<U55FD> /xd3/xd6 <CJK>
-+<U561B> /xd3/xd7 <CJK>
-+<U55F9> /xd3/xd8 <CJK>
-+<U564E> /xd3/xd9 <CJK>
-+<U5650> /xd3/xda <CJK>
-+<U71DF> /xd3/xdb <CJK>
-+<U5634> /xd3/xdc <CJK>
-+<U5636> /xd3/xdd <CJK>
-+<U5632> /xd3/xde <CJK>
-+<U5638> /xd3/xdf <CJK>
-+<U566B> /xd3/xe0 <CJK>
-+<U5664> /xd3/xe1 <CJK>
-+<U562F> /xd3/xe2 <CJK>
-+<U566C> /xd3/xe3 <CJK>
-+<U566A> /xd3/xe4 <CJK>
-+<U5686> /xd3/xe5 <CJK>
-+<U5680> /xd3/xe6 <CJK>
-+<U568A> /xd3/xe7 <CJK>
-+<U56A0> /xd3/xe8 <CJK>
-+<U5694> /xd3/xe9 <CJK>
-+<U568F> /xd3/xea <CJK>
-+<U56A5> /xd3/xeb <CJK>
-+<U56AE> /xd3/xec <CJK>
-+<U56B6> /xd3/xed <CJK>
-+<U56B4> /xd3/xee <CJK>
-+<U56C2> /xd3/xef <CJK>
-+<U56BC> /xd3/xf0 <CJK>
-+<U56C1> /xd3/xf1 <CJK>
-+<U56C3> /xd3/xf2 <CJK>
-+<U56C0> /xd3/xf3 <CJK>
-+<U56C8> /xd3/xf4 <CJK>
-+<U56CE> /xd3/xf5 <CJK>
-+<U56D1> /xd3/xf6 <CJK>
-+<U56D3> /xd3/xf7 <CJK>
-+<U56D7> /xd3/xf8 <CJK>
-+<U56EE> /xd3/xf9 <CJK>
-+<U56F9> /xd3/xfa <CJK>
-+<U5700> /xd3/xfb <CJK>
-+<U56FF> /xd3/xfc <CJK>
-+<U5704> /xd3/xfd <CJK>
-+<U5709> /xd3/xfe <CJK>
-+<U5708> /xd4/xa1 <CJK>
-+<U570B> /xd4/xa2 <CJK>
-+<U570D> /xd4/xa3 <CJK>
-+<U5713> /xd4/xa4 <CJK>
-+<U5718> /xd4/xa5 <CJK>
-+<U5716> /xd4/xa6 <CJK>
-+<U55C7> /xd4/xa7 <CJK>
-+<U571C> /xd4/xa8 <CJK>
-+<U5726> /xd4/xa9 <CJK>
-+<U5737> /xd4/xaa <CJK>
-+<U5738> /xd4/xab <CJK>
-+<U574E> /xd4/xac <CJK>
-+<U573B> /xd4/xad <CJK>
-+<U5740> /xd4/xae <CJK>
-+<U574F> /xd4/xaf <CJK>
-+<U5769> /xd4/xb0 <CJK>
-+<U57C0> /xd4/xb1 <CJK>
-+<U5788> /xd4/xb2 <CJK>
-+<U5761> /xd4/xb3 <CJK>
-+<U577F> /xd4/xb4 <CJK>
-+<U5789> /xd4/xb5 <CJK>
-+<U5793> /xd4/xb6 <CJK>
-+<U57A0> /xd4/xb7 <CJK>
-+<U57B3> /xd4/xb8 <CJK>
-+<U57A4> /xd4/xb9 <CJK>
-+<U57AA> /xd4/xba <CJK>
-+<U57B0> /xd4/xbb <CJK>
-+<U57C3> /xd4/xbc <CJK>
-+<U57C6> /xd4/xbd <CJK>
-+<U57D4> /xd4/xbe <CJK>
-+<U57D2> /xd4/xbf <CJK>
-+<U57D3> /xd4/xc0 <CJK>
-+<U580A> /xd4/xc1 <CJK>
-+<U57D6> /xd4/xc2 <CJK>
-+<U57E3> /xd4/xc3 <CJK>
-+<U580B> /xd4/xc4 <CJK>
-+<U5819> /xd4/xc5 <CJK>
-+<U581D> /xd4/xc6 <CJK>
-+<U5872> /xd4/xc7 <CJK>
-+<U5821> /xd4/xc8 <CJK>
-+<U5862> /xd4/xc9 <CJK>
-+<U584B> /xd4/xca <CJK>
-+<U5870> /xd4/xcb <CJK>
-+<U6BC0> /xd4/xcc <CJK>
-+<U5852> /xd4/xcd <CJK>
-+<U583D> /xd4/xce <CJK>
-+<U5879> /xd4/xcf <CJK>
-+<U5885> /xd4/xd0 <CJK>
-+<U58B9> /xd4/xd1 <CJK>
-+<U589F> /xd4/xd2 <CJK>
-+<U58AB> /xd4/xd3 <CJK>
-+<U58BA> /xd4/xd4 <CJK>
-+<U58DE> /xd4/xd5 <CJK>
-+<U58BB> /xd4/xd6 <CJK>
-+<U58B8> /xd4/xd7 <CJK>
-+<U58AE> /xd4/xd8 <CJK>
-+<U58C5> /xd4/xd9 <CJK>
-+<U58D3> /xd4/xda <CJK>
-+<U58D1> /xd4/xdb <CJK>
-+<U58D7> /xd4/xdc <CJK>
-+<U58D9> /xd4/xdd <CJK>
-+<U58D8> /xd4/xde <CJK>
-+<U58E5> /xd4/xdf <CJK>
-+<U58DC> /xd4/xe0 <CJK>
-+<U58E4> /xd4/xe1 <CJK>
-+<U58DF> /xd4/xe2 <CJK>
-+<U58EF> /xd4/xe3 <CJK>
-+<U58FA> /xd4/xe4 <CJK>
-+<U58F9> /xd4/xe5 <CJK>
-+<U58FB> /xd4/xe6 <CJK>
-+<U58FC> /xd4/xe7 <CJK>
-+<U58FD> /xd4/xe8 <CJK>
-+<U5902> /xd4/xe9 <CJK>
-+<U590A> /xd4/xea <CJK>
-+<U5910> /xd4/xeb <CJK>
-+<U591B> /xd4/xec <CJK>
-+<U68A6> /xd4/xed <CJK>
-+<U5925> /xd4/xee <CJK>
-+<U592C> /xd4/xef <CJK>
-+<U592D> /xd4/xf0 <CJK>
-+<U5932> /xd4/xf1 <CJK>
-+<U5938> /xd4/xf2 <CJK>
-+<U593E> /xd4/xf3 <CJK>
-+<U7AD2> /xd4/xf4 <CJK>
-+<U5955> /xd4/xf5 <CJK>
-+<U5950> /xd4/xf6 <CJK>
-+<U594E> /xd4/xf7 <CJK>
-+<U595A> /xd4/xf8 <CJK>
-+<U5958> /xd4/xf9 <CJK>
-+<U5962> /xd4/xfa <CJK>
-+<U5960> /xd4/xfb <CJK>
-+<U5967> /xd4/xfc <CJK>
-+<U596C> /xd4/xfd <CJK>
-+<U5969> /xd4/xfe <CJK>
-+<U5978> /xd5/xa1 <CJK>
-+<U5981> /xd5/xa2 <CJK>
-+<U599D> /xd5/xa3 <CJK>
-+<U4F5E> /xd5/xa4 <CJK>
-+<U4FAB> /xd5/xa5 <CJK>
-+<U59A3> /xd5/xa6 <CJK>
-+<U59B2> /xd5/xa7 <CJK>
-+<U59C6> /xd5/xa8 <CJK>
-+<U59E8> /xd5/xa9 <CJK>
-+<U59DC> /xd5/xaa <CJK>
-+<U598D> /xd5/xab <CJK>
-+<U59D9> /xd5/xac <CJK>
-+<U59DA> /xd5/xad <CJK>
-+<U5A25> /xd5/xae <CJK>
-+<U5A1F> /xd5/xaf <CJK>
-+<U5A11> /xd5/xb0 <CJK>
-+<U5A1C> /xd5/xb1 <CJK>
-+<U5A09> /xd5/xb2 <CJK>
-+<U5A1A> /xd5/xb3 <CJK>
-+<U5A40> /xd5/xb4 <CJK>
-+<U5A6C> /xd5/xb5 <CJK>
-+<U5A49> /xd5/xb6 <CJK>
-+<U5A35> /xd5/xb7 <CJK>
-+<U5A36> /xd5/xb8 <CJK>
-+<U5A62> /xd5/xb9 <CJK>
-+<U5A6A> /xd5/xba <CJK>
-+<U5A9A> /xd5/xbb <CJK>
-+<U5ABC> /xd5/xbc <CJK>
-+<U5ABE> /xd5/xbd <CJK>
-+<U5ACB> /xd5/xbe <CJK>
-+<U5AC2> /xd5/xbf <CJK>
-+<U5ABD> /xd5/xc0 <CJK>
-+<U5AE3> /xd5/xc1 <CJK>
-+<U5AD7> /xd5/xc2 <CJK>
-+<U5AE6> /xd5/xc3 <CJK>
-+<U5AE9> /xd5/xc4 <CJK>
-+<U5AD6> /xd5/xc5 <CJK>
-+<U5AFA> /xd5/xc6 <CJK>
-+<U5AFB> /xd5/xc7 <CJK>
-+<U5B0C> /xd5/xc8 <CJK>
-+<U5B0B> /xd5/xc9 <CJK>
-+<U5B16> /xd5/xca <CJK>
-+<U5B32> /xd5/xcb <CJK>
-+<U5AD0> /xd5/xcc <CJK>
-+<U5B2A> /xd5/xcd <CJK>
-+<U5B36> /xd5/xce <CJK>
-+<U5B3E> /xd5/xcf <CJK>
-+<U5B43> /xd5/xd0 <CJK>
-+<U5B45> /xd5/xd1 <CJK>
-+<U5B40> /xd5/xd2 <CJK>
-+<U5B51> /xd5/xd3 <CJK>
-+<U5B55> /xd5/xd4 <CJK>
-+<U5B5A> /xd5/xd5 <CJK>
-+<U5B5B> /xd5/xd6 <CJK>
-+<U5B65> /xd5/xd7 <CJK>
-+<U5B69> /xd5/xd8 <CJK>
-+<U5B70> /xd5/xd9 <CJK>
-+<U5B73> /xd5/xda <CJK>
-+<U5B75> /xd5/xdb <CJK>
-+<U5B78> /xd5/xdc <CJK>
-+<U6588> /xd5/xdd <CJK>
-+<U5B7A> /xd5/xde <CJK>
-+<U5B80> /xd5/xdf <CJK>
-+<U5B83> /xd5/xe0 <CJK>
-+<U5BA6> /xd5/xe1 <CJK>
-+<U5BB8> /xd5/xe2 <CJK>
-+<U5BC3> /xd5/xe3 <CJK>
-+<U5BC7> /xd5/xe4 <CJK>
-+<U5BC9> /xd5/xe5 <CJK>
-+<U5BD4> /xd5/xe6 <CJK>
-+<U5BD0> /xd5/xe7 <CJK>
-+<U5BE4> /xd5/xe8 <CJK>
-+<U5BE6> /xd5/xe9 <CJK>
-+<U5BE2> /xd5/xea <CJK>
-+<U5BDE> /xd5/xeb <CJK>
-+<U5BE5> /xd5/xec <CJK>
-+<U5BEB> /xd5/xed <CJK>
-+<U5BF0> /xd5/xee <CJK>
-+<U5BF6> /xd5/xef <CJK>
-+<U5BF3> /xd5/xf0 <CJK>
-+<U5C05> /xd5/xf1 <CJK>
-+<U5C07> /xd5/xf2 <CJK>
-+<U5C08> /xd5/xf3 <CJK>
-+<U5C0D> /xd5/xf4 <CJK>
-+<U5C13> /xd5/xf5 <CJK>
-+<U5C20> /xd5/xf6 <CJK>
-+<U5C22> /xd5/xf7 <CJK>
-+<U5C28> /xd5/xf8 <CJK>
-+<U5C38> /xd5/xf9 <CJK>
-+<U5C39> /xd5/xfa <CJK>
-+<U5C41> /xd5/xfb <CJK>
-+<U5C46> /xd5/xfc <CJK>
-+<U5C4E> /xd5/xfd <CJK>
-+<U5C53> /xd5/xfe <CJK>
-+<U5C50> /xd6/xa1 <CJK>
-+<U5C4F> /xd6/xa2 <CJK>
-+<U5B71> /xd6/xa3 <CJK>
-+<U5C6C> /xd6/xa4 <CJK>
-+<U5C6E> /xd6/xa5 <CJK>
-+<U4E62> /xd6/xa6 <CJK>
-+<U5C76> /xd6/xa7 <CJK>
-+<U5C79> /xd6/xa8 <CJK>
-+<U5C8C> /xd6/xa9 <CJK>
-+<U5C91> /xd6/xaa <CJK>
-+<U5C94> /xd6/xab <CJK>
-+<U599B> /xd6/xac <CJK>
-+<U5CAB> /xd6/xad <CJK>
-+<U5CBB> /xd6/xae <CJK>
-+<U5CB6> /xd6/xaf <CJK>
-+<U5CBC> /xd6/xb0 <CJK>
-+<U5CB7> /xd6/xb1 <CJK>
-+<U5CC5> /xd6/xb2 <CJK>
-+<U5CBE> /xd6/xb3 <CJK>
-+<U5CC7> /xd6/xb4 <CJK>
-+<U5CD9> /xd6/xb5 <CJK>
-+<U5CE9> /xd6/xb6 <CJK>
-+<U5CFD> /xd6/xb7 <CJK>
-+<U5CFA> /xd6/xb8 <CJK>
-+<U5CED> /xd6/xb9 <CJK>
-+<U5D8C> /xd6/xba <CJK>
-+<U5CEA> /xd6/xbb <CJK>
-+<U5D0B> /xd6/xbc <CJK>
-+<U5D15> /xd6/xbd <CJK>
-+<U5D17> /xd6/xbe <CJK>
-+<U5D5C> /xd6/xbf <CJK>
-+<U5D1F> /xd6/xc0 <CJK>
-+<U5D1B> /xd6/xc1 <CJK>
-+<U5D11> /xd6/xc2 <CJK>
-+<U5D14> /xd6/xc3 <CJK>
-+<U5D22> /xd6/xc4 <CJK>
-+<U5D1A> /xd6/xc5 <CJK>
-+<U5D19> /xd6/xc6 <CJK>
-+<U5D18> /xd6/xc7 <CJK>
-+<U5D4C> /xd6/xc8 <CJK>
-+<U5D52> /xd6/xc9 <CJK>
-+<U5D4E> /xd6/xca <CJK>
-+<U5D4B> /xd6/xcb <CJK>
-+<U5D6C> /xd6/xcc <CJK>
-+<U5D73> /xd6/xcd <CJK>
-+<U5D76> /xd6/xce <CJK>
-+<U5D87> /xd6/xcf <CJK>
-+<U5D84> /xd6/xd0 <CJK>
-+<U5D82> /xd6/xd1 <CJK>
-+<U5DA2> /xd6/xd2 <CJK>
-+<U5D9D> /xd6/xd3 <CJK>
-+<U5DAC> /xd6/xd4 <CJK>
-+<U5DAE> /xd6/xd5 <CJK>
-+<U5DBD> /xd6/xd6 <CJK>
-+<U5D90> /xd6/xd7 <CJK>
-+<U5DB7> /xd6/xd8 <CJK>
-+<U5DBC> /xd6/xd9 <CJK>
-+<U5DC9> /xd6/xda <CJK>
-+<U5DCD> /xd6/xdb <CJK>
-+<U5DD3> /xd6/xdc <CJK>
-+<U5DD2> /xd6/xdd <CJK>
-+<U5DD6> /xd6/xde <CJK>
-+<U5DDB> /xd6/xdf <CJK>
-+<U5DEB> /xd6/xe0 <CJK>
-+<U5DF2> /xd6/xe1 <CJK>
-+<U5DF5> /xd6/xe2 <CJK>
-+<U5E0B> /xd6/xe3 <CJK>
-+<U5E1A> /xd6/xe4 <CJK>
-+<U5E19> /xd6/xe5 <CJK>
-+<U5E11> /xd6/xe6 <CJK>
-+<U5E1B> /xd6/xe7 <CJK>
-+<U5E36> /xd6/xe8 <CJK>
-+<U5E37> /xd6/xe9 <CJK>
-+<U5E44> /xd6/xea <CJK>
-+<U5E43> /xd6/xeb <CJK>
-+<U5E40> /xd6/xec <CJK>
-+<U5E4E> /xd6/xed <CJK>
-+<U5E57> /xd6/xee <CJK>
-+<U5E54> /xd6/xef <CJK>
-+<U5E5F> /xd6/xf0 <CJK>
-+<U5E62> /xd6/xf1 <CJK>
-+<U5E64> /xd6/xf2 <CJK>
-+<U5E47> /xd6/xf3 <CJK>
-+<U5E75> /xd6/xf4 <CJK>
-+<U5E76> /xd6/xf5 <CJK>
-+<U5E7A> /xd6/xf6 <CJK>
-+<U9EBC> /xd6/xf7 <CJK>
-+<U5E7F> /xd6/xf8 <CJK>
-+<U5EA0> /xd6/xf9 <CJK>
-+<U5EC1> /xd6/xfa <CJK>
-+<U5EC2> /xd6/xfb <CJK>
-+<U5EC8> /xd6/xfc <CJK>
-+<U5ED0> /xd6/xfd <CJK>
-+<U5ECF> /xd6/xfe <CJK>
-+<U5ED6> /xd7/xa1 <CJK>
-+<U5EE3> /xd7/xa2 <CJK>
-+<U5EDD> /xd7/xa3 <CJK>
-+<U5EDA> /xd7/xa4 <CJK>
-+<U5EDB> /xd7/xa5 <CJK>
-+<U5EE2> /xd7/xa6 <CJK>
-+<U5EE1> /xd7/xa7 <CJK>
-+<U5EE8> /xd7/xa8 <CJK>
-+<U5EE9> /xd7/xa9 <CJK>
-+<U5EEC> /xd7/xaa <CJK>
-+<U5EF1> /xd7/xab <CJK>
-+<U5EF3> /xd7/xac <CJK>
-+<U5EF0> /xd7/xad <CJK>
-+<U5EF4> /xd7/xae <CJK>
-+<U5EF8> /xd7/xaf <CJK>
-+<U5EFE> /xd7/xb0 <CJK>
-+<U5F03> /xd7/xb1 <CJK>
-+<U5F09> /xd7/xb2 <CJK>
-+<U5F5D> /xd7/xb3 <CJK>
-+<U5F5C> /xd7/xb4 <CJK>
-+<U5F0B> /xd7/xb5 <CJK>
-+<U5F11> /xd7/xb6 <CJK>
-+<U5F16> /xd7/xb7 <CJK>
-+<U5F29> /xd7/xb8 <CJK>
-+<U5F2D> /xd7/xb9 <CJK>
-+<U5F38> /xd7/xba <CJK>
-+<U5F41> /xd7/xbb <CJK>
-+<U5F48> /xd7/xbc <CJK>
-+<U5F4C> /xd7/xbd <CJK>
-+<U5F4E> /xd7/xbe <CJK>
-+<U5F2F> /xd7/xbf <CJK>
-+<U5F51> /xd7/xc0 <CJK>
-+<U5F56> /xd7/xc1 <CJK>
-+<U5F57> /xd7/xc2 <CJK>
-+<U5F59> /xd7/xc3 <CJK>
-+<U5F61> /xd7/xc4 <CJK>
-+<U5F6D> /xd7/xc5 <CJK>
-+<U5F73> /xd7/xc6 <CJK>
-+<U5F77> /xd7/xc7 <CJK>
-+<U5F83> /xd7/xc8 <CJK>
-+<U5F82> /xd7/xc9 <CJK>
-+<U5F7F> /xd7/xca <CJK>
-+<U5F8A> /xd7/xcb <CJK>
-+<U5F88> /xd7/xcc <CJK>
-+<U5F91> /xd7/xcd <CJK>
-+<U5F87> /xd7/xce <CJK>
-+<U5F9E> /xd7/xcf <CJK>
-+<U5F99> /xd7/xd0 <CJK>
-+<U5F98> /xd7/xd1 <CJK>
-+<U5FA0> /xd7/xd2 <CJK>
-+<U5FA8> /xd7/xd3 <CJK>
-+<U5FAD> /xd7/xd4 <CJK>
-+<U5FBC> /xd7/xd5 <CJK>
-+<U5FD6> /xd7/xd6 <CJK>
-+<U5FFB> /xd7/xd7 <CJK>
-+<U5FE4> /xd7/xd8 <CJK>
-+<U5FF8> /xd7/xd9 <CJK>
-+<U5FF1> /xd7/xda <CJK>
-+<U5FDD> /xd7/xdb <CJK>
-+<U60B3> /xd7/xdc <CJK>
-+<U5FFF> /xd7/xdd <CJK>
-+<U6021> /xd7/xde <CJK>
-+<U6060> /xd7/xdf <CJK>
-+<U6019> /xd7/xe0 <CJK>
-+<U6010> /xd7/xe1 <CJK>
-+<U6029> /xd7/xe2 <CJK>
-+<U600E> /xd7/xe3 <CJK>
-+<U6031> /xd7/xe4 <CJK>
-+<U601B> /xd7/xe5 <CJK>
-+<U6015> /xd7/xe6 <CJK>
-+<U602B> /xd7/xe7 <CJK>
-+<U6026> /xd7/xe8 <CJK>
-+<U600F> /xd7/xe9 <CJK>
-+<U603A> /xd7/xea <CJK>
-+<U605A> /xd7/xeb <CJK>
-+<U6041> /xd7/xec <CJK>
-+<U606A> /xd7/xed <CJK>
-+<U6077> /xd7/xee <CJK>
-+<U605F> /xd7/xef <CJK>
-+<U604A> /xd7/xf0 <CJK>
-+<U6046> /xd7/xf1 <CJK>
-+<U604D> /xd7/xf2 <CJK>
-+<U6063> /xd7/xf3 <CJK>
-+<U6043> /xd7/xf4 <CJK>
-+<U6064> /xd7/xf5 <CJK>
-+<U6042> /xd7/xf6 <CJK>
-+<U606C> /xd7/xf7 <CJK>
-+<U606B> /xd7/xf8 <CJK>
-+<U6059> /xd7/xf9 <CJK>
-+<U6081> /xd7/xfa <CJK>
-+<U608D> /xd7/xfb <CJK>
-+<U60E7> /xd7/xfc <CJK>
-+<U6083> /xd7/xfd <CJK>
-+<U609A> /xd7/xfe <CJK>
-+<U6084> /xd8/xa1 <CJK>
-+<U609B> /xd8/xa2 <CJK>
-+<U6096> /xd8/xa3 <CJK>
-+<U6097> /xd8/xa4 <CJK>
-+<U6092> /xd8/xa5 <CJK>
-+<U60A7> /xd8/xa6 <CJK>
-+<U608B> /xd8/xa7 <CJK>
-+<U60E1> /xd8/xa8 <CJK>
-+<U60B8> /xd8/xa9 <CJK>
-+<U60E0> /xd8/xaa <CJK>
-+<U60D3> /xd8/xab <CJK>
-+<U60B4> /xd8/xac <CJK>
-+<U5FF0> /xd8/xad <CJK>
-+<U60BD> /xd8/xae <CJK>
-+<U60C6> /xd8/xaf <CJK>
-+<U60B5> /xd8/xb0 <CJK>
-+<U60D8> /xd8/xb1 <CJK>
-+<U614D> /xd8/xb2 <CJK>
-+<U6115> /xd8/xb3 <CJK>
-+<U6106> /xd8/xb4 <CJK>
-+<U60F6> /xd8/xb5 <CJK>
-+<U60F7> /xd8/xb6 <CJK>
-+<U6100> /xd8/xb7 <CJK>
-+<U60F4> /xd8/xb8 <CJK>
-+<U60FA> /xd8/xb9 <CJK>
-+<U6103> /xd8/xba <CJK>
-+<U6121> /xd8/xbb <CJK>
-+<U60FB> /xd8/xbc <CJK>
-+<U60F1> /xd8/xbd <CJK>
-+<U610D> /xd8/xbe <CJK>
-+<U610E> /xd8/xbf <CJK>
-+<U6147> /xd8/xc0 <CJK>
-+<U613E> /xd8/xc1 <CJK>
-+<U6128> /xd8/xc2 <CJK>
-+<U6127> /xd8/xc3 <CJK>
-+<U614A> /xd8/xc4 <CJK>
-+<U613F> /xd8/xc5 <CJK>
-+<U613C> /xd8/xc6 <CJK>
-+<U612C> /xd8/xc7 <CJK>
-+<U6134> /xd8/xc8 <CJK>
-+<U613D> /xd8/xc9 <CJK>
-+<U6142> /xd8/xca <CJK>
-+<U6144> /xd8/xcb <CJK>
-+<U6173> /xd8/xcc <CJK>
-+<U6177> /xd8/xcd <CJK>
-+<U6158> /xd8/xce <CJK>
-+<U6159> /xd8/xcf <CJK>
-+<U615A> /xd8/xd0 <CJK>
-+<U616B> /xd8/xd1 <CJK>
-+<U6174> /xd8/xd2 <CJK>
-+<U616F> /xd8/xd3 <CJK>
-+<U6165> /xd8/xd4 <CJK>
-+<U6171> /xd8/xd5 <CJK>
-+<U615F> /xd8/xd6 <CJK>
-+<U615D> /xd8/xd7 <CJK>
-+<U6153> /xd8/xd8 <CJK>
-+<U6175> /xd8/xd9 <CJK>
-+<U6199> /xd8/xda <CJK>
-+<U6196> /xd8/xdb <CJK>
-+<U6187> /xd8/xdc <CJK>
-+<U61AC> /xd8/xdd <CJK>
-+<U6194> /xd8/xde <CJK>
-+<U619A> /xd8/xdf <CJK>
-+<U618A> /xd8/xe0 <CJK>
-+<U6191> /xd8/xe1 <CJK>
-+<U61AB> /xd8/xe2 <CJK>
-+<U61AE> /xd8/xe3 <CJK>
-+<U61CC> /xd8/xe4 <CJK>
-+<U61CA> /xd8/xe5 <CJK>
-+<U61C9> /xd8/xe6 <CJK>
-+<U61F7> /xd8/xe7 <CJK>
-+<U61C8> /xd8/xe8 <CJK>
-+<U61C3> /xd8/xe9 <CJK>
-+<U61C6> /xd8/xea <CJK>
-+<U61BA> /xd8/xeb <CJK>
-+<U61CB> /xd8/xec <CJK>
-+<U7F79> /xd8/xed <CJK>
-+<U61CD> /xd8/xee <CJK>
-+<U61E6> /xd8/xef <CJK>
-+<U61E3> /xd8/xf0 <CJK>
-+<U61F6> /xd8/xf1 <CJK>
-+<U61FA> /xd8/xf2 <CJK>
-+<U61F4> /xd8/xf3 <CJK>
-+<U61FF> /xd8/xf4 <CJK>
-+<U61FD> /xd8/xf5 <CJK>
-+<U61FC> /xd8/xf6 <CJK>
-+<U61FE> /xd8/xf7 <CJK>
-+<U6200> /xd8/xf8 <CJK>
-+<U6208> /xd8/xf9 <CJK>
-+<U6209> /xd8/xfa <CJK>
-+<U620D> /xd8/xfb <CJK>
-+<U620C> /xd8/xfc <CJK>
-+<U6214> /xd8/xfd <CJK>
-+<U621B> /xd8/xfe <CJK>
-+<U621E> /xd9/xa1 <CJK>
-+<U6221> /xd9/xa2 <CJK>
-+<U622A> /xd9/xa3 <CJK>
-+<U622E> /xd9/xa4 <CJK>
-+<U6230> /xd9/xa5 <CJK>
-+<U6232> /xd9/xa6 <CJK>
-+<U6233> /xd9/xa7 <CJK>
-+<U6241> /xd9/xa8 <CJK>
-+<U624E> /xd9/xa9 <CJK>
-+<U625E> /xd9/xaa <CJK>
-+<U6263> /xd9/xab <CJK>
-+<U625B> /xd9/xac <CJK>
-+<U6260> /xd9/xad <CJK>
-+<U6268> /xd9/xae <CJK>
-+<U627C> /xd9/xaf <CJK>
-+<U6282> /xd9/xb0 <CJK>
-+<U6289> /xd9/xb1 <CJK>
-+<U627E> /xd9/xb2 <CJK>
-+<U6292> /xd9/xb3 <CJK>
-+<U6293> /xd9/xb4 <CJK>
-+<U6296> /xd9/xb5 <CJK>
-+<U62D4> /xd9/xb6 <CJK>
-+<U6283> /xd9/xb7 <CJK>
-+<U6294> /xd9/xb8 <CJK>
-+<U62D7> /xd9/xb9 <CJK>
-+<U62D1> /xd9/xba <CJK>
-+<U62BB> /xd9/xbb <CJK>
-+<U62CF> /xd9/xbc <CJK>
-+<U62FF> /xd9/xbd <CJK>
-+<U62C6> /xd9/xbe <CJK>
-+<U64D4> /xd9/xbf <CJK>
-+<U62C8> /xd9/xc0 <CJK>
-+<U62DC> /xd9/xc1 <CJK>
-+<U62CC> /xd9/xc2 <CJK>
-+<U62CA> /xd9/xc3 <CJK>
-+<U62C2> /xd9/xc4 <CJK>
-+<U62C7> /xd9/xc5 <CJK>
-+<U629B> /xd9/xc6 <CJK>
-+<U62C9> /xd9/xc7 <CJK>
-+<U630C> /xd9/xc8 <CJK>
-+<U62EE> /xd9/xc9 <CJK>
-+<U62F1> /xd9/xca <CJK>
-+<U6327> /xd9/xcb <CJK>
-+<U6302> /xd9/xcc <CJK>
-+<U6308> /xd9/xcd <CJK>
-+<U62EF> /xd9/xce <CJK>
-+<U62F5> /xd9/xcf <CJK>
-+<U6350> /xd9/xd0 <CJK>
-+<U633E> /xd9/xd1 <CJK>
-+<U634D> /xd9/xd2 <CJK>
-+<U641C> /xd9/xd3 <CJK>
-+<U634F> /xd9/xd4 <CJK>
-+<U6396> /xd9/xd5 <CJK>
-+<U638E> /xd9/xd6 <CJK>
-+<U6380> /xd9/xd7 <CJK>
-+<U63AB> /xd9/xd8 <CJK>
-+<U6376> /xd9/xd9 <CJK>
-+<U63A3> /xd9/xda <CJK>
-+<U638F> /xd9/xdb <CJK>
-+<U6389> /xd9/xdc <CJK>
-+<U639F> /xd9/xdd <CJK>
-+<U63B5> /xd9/xde <CJK>
-+<U636B> /xd9/xdf <CJK>
-+<U6369> /xd9/xe0 <CJK>
-+<U63BE> /xd9/xe1 <CJK>
-+<U63E9> /xd9/xe2 <CJK>
-+<U63C0> /xd9/xe3 <CJK>
-+<U63C6> /xd9/xe4 <CJK>
-+<U63E3> /xd9/xe5 <CJK>
-+<U63C9> /xd9/xe6 <CJK>
-+<U63D2> /xd9/xe7 <CJK>
-+<U63F6> /xd9/xe8 <CJK>
-+<U63C4> /xd9/xe9 <CJK>
-+<U6416> /xd9/xea <CJK>
-+<U6434> /xd9/xeb <CJK>
-+<U6406> /xd9/xec <CJK>
-+<U6413> /xd9/xed <CJK>
-+<U6426> /xd9/xee <CJK>
-+<U6436> /xd9/xef <CJK>
-+<U651D> /xd9/xf0 <CJK>
-+<U6417> /xd9/xf1 <CJK>
-+<U6428> /xd9/xf2 <CJK>
-+<U640F> /xd9/xf3 <CJK>
-+<U6467> /xd9/xf4 <CJK>
-+<U646F> /xd9/xf5 <CJK>
-+<U6476> /xd9/xf6 <CJK>
-+<U644E> /xd9/xf7 <CJK>
-+<U652A> /xd9/xf8 <CJK>
-+<U6495> /xd9/xf9 <CJK>
-+<U6493> /xd9/xfa <CJK>
-+<U64A5> /xd9/xfb <CJK>
-+<U64A9> /xd9/xfc <CJK>
-+<U6488> /xd9/xfd <CJK>
-+<U64BC> /xd9/xfe <CJK>
-+<U64DA> /xda/xa1 <CJK>
-+<U64D2> /xda/xa2 <CJK>
-+<U64C5> /xda/xa3 <CJK>
-+<U64C7> /xda/xa4 <CJK>
-+<U64BB> /xda/xa5 <CJK>
-+<U64D8> /xda/xa6 <CJK>
-+<U64C2> /xda/xa7 <CJK>
-+<U64F1> /xda/xa8 <CJK>
-+<U64E7> /xda/xa9 <CJK>
-+<U8209> /xda/xaa <CJK>
-+<U64E0> /xda/xab <CJK>
-+<U64E1> /xda/xac <CJK>
-+<U62AC> /xda/xad <CJK>
-+<U64E3> /xda/xae <CJK>
-+<U64EF> /xda/xaf <CJK>
-+<U652C> /xda/xb0 <CJK>
-+<U64F6> /xda/xb1 <CJK>
-+<U64F4> /xda/xb2 <CJK>
-+<U64F2> /xda/xb3 <CJK>
-+<U64FA> /xda/xb4 <CJK>
-+<U6500> /xda/xb5 <CJK>
-+<U64FD> /xda/xb6 <CJK>
-+<U6518> /xda/xb7 <CJK>
-+<U651C> /xda/xb8 <CJK>
-+<U6505> /xda/xb9 <CJK>
-+<U6524> /xda/xba <CJK>
-+<U6523> /xda/xbb <CJK>
-+<U652B> /xda/xbc <CJK>
-+<U6534> /xda/xbd <CJK>
-+<U6535> /xda/xbe <CJK>
-+<U6537> /xda/xbf <CJK>
-+<U6536> /xda/xc0 <CJK>
-+<U6538> /xda/xc1 <CJK>
-+<U754B> /xda/xc2 <CJK>
-+<U6548> /xda/xc3 <CJK>
-+<U6556> /xda/xc4 <CJK>
-+<U6555> /xda/xc5 <CJK>
-+<U654D> /xda/xc6 <CJK>
-+<U6558> /xda/xc7 <CJK>
-+<U655E> /xda/xc8 <CJK>
-+<U655D> /xda/xc9 <CJK>
-+<U6572> /xda/xca <CJK>
-+<U6578> /xda/xcb <CJK>
-+<U6582> /xda/xcc <CJK>
-+<U6583> /xda/xcd <CJK>
-+<U8B8A> /xda/xce <CJK>
-+<U659B> /xda/xcf <CJK>
-+<U659F> /xda/xd0 <CJK>
-+<U65AB> /xda/xd1 <CJK>
-+<U65B7> /xda/xd2 <CJK>
-+<U65C3> /xda/xd3 <CJK>
-+<U65C6> /xda/xd4 <CJK>
-+<U65C1> /xda/xd5 <CJK>
-+<U65C4> /xda/xd6 <CJK>
-+<U65CC> /xda/xd7 <CJK>
-+<U65D2> /xda/xd8 <CJK>
-+<U65DB> /xda/xd9 <CJK>
-+<U65D9> /xda/xda <CJK>
-+<U65E0> /xda/xdb <CJK>
-+<U65E1> /xda/xdc <CJK>
-+<U65F1> /xda/xdd <CJK>
-+<U6772> /xda/xde <CJK>
-+<U660A> /xda/xdf <CJK>
-+<U6603> /xda/xe0 <CJK>
-+<U65FB> /xda/xe1 <CJK>
-+<U6773> /xda/xe2 <CJK>
-+<U6635> /xda/xe3 <CJK>
-+<U6636> /xda/xe4 <CJK>
-+<U6634> /xda/xe5 <CJK>
-+<U661C> /xda/xe6 <CJK>
-+<U664F> /xda/xe7 <CJK>
-+<U6644> /xda/xe8 <CJK>
-+<U6649> /xda/xe9 <CJK>
-+<U6641> /xda/xea <CJK>
-+<U665E> /xda/xeb <CJK>
-+<U665D> /xda/xec <CJK>
-+<U6664> /xda/xed <CJK>
-+<U6667> /xda/xee <CJK>
-+<U6668> /xda/xef <CJK>
-+<U665F> /xda/xf0 <CJK>
-+<U6662> /xda/xf1 <CJK>
-+<U6670> /xda/xf2 <CJK>
-+<U6683> /xda/xf3 <CJK>
-+<U6688> /xda/xf4 <CJK>
-+<U668E> /xda/xf5 <CJK>
-+<U6689> /xda/xf6 <CJK>
-+<U6684> /xda/xf7 <CJK>
-+<U6698> /xda/xf8 <CJK>
-+<U669D> /xda/xf9 <CJK>
-+<U66C1> /xda/xfa <CJK>
-+<U66B9> /xda/xfb <CJK>
-+<U66C9> /xda/xfc <CJK>
-+<U66BE> /xda/xfd <CJK>
-+<U66BC> /xda/xfe <CJK>
-+<U66C4> /xdb/xa1 <CJK>
-+<U66B8> /xdb/xa2 <CJK>
-+<U66D6> /xdb/xa3 <CJK>
-+<U66DA> /xdb/xa4 <CJK>
-+<U66E0> /xdb/xa5 <CJK>
-+<U663F> /xdb/xa6 <CJK>
-+<U66E6> /xdb/xa7 <CJK>
-+<U66E9> /xdb/xa8 <CJK>
-+<U66F0> /xdb/xa9 <CJK>
-+<U66F5> /xdb/xaa <CJK>
-+<U66F7> /xdb/xab <CJK>
-+<U670F> /xdb/xac <CJK>
-+<U6716> /xdb/xad <CJK>
-+<U671E> /xdb/xae <CJK>
-+<U6726> /xdb/xaf <CJK>
-+<U6727> /xdb/xb0 <CJK>
-+<U9738> /xdb/xb1 <CJK>
-+<U672E> /xdb/xb2 <CJK>
-+<U673F> /xdb/xb3 <CJK>
-+<U6736> /xdb/xb4 <CJK>
-+<U6741> /xdb/xb5 <CJK>
-+<U6738> /xdb/xb6 <CJK>
-+<U6737> /xdb/xb7 <CJK>
-+<U6746> /xdb/xb8 <CJK>
-+<U675E> /xdb/xb9 <CJK>
-+<U6760> /xdb/xba <CJK>
-+<U6759> /xdb/xbb <CJK>
-+<U6763> /xdb/xbc <CJK>
-+<U6764> /xdb/xbd <CJK>
-+<U6789> /xdb/xbe <CJK>
-+<U6770> /xdb/xbf <CJK>
-+<U67A9> /xdb/xc0 <CJK>
-+<U677C> /xdb/xc1 <CJK>
-+<U676A> /xdb/xc2 <CJK>
-+<U678C> /xdb/xc3 <CJK>
-+<U678B> /xdb/xc4 <CJK>
-+<U67A6> /xdb/xc5 <CJK>
-+<U67A1> /xdb/xc6 <CJK>
-+<U6785> /xdb/xc7 <CJK>
-+<U67B7> /xdb/xc8 <CJK>
-+<U67EF> /xdb/xc9 <CJK>
-+<U67B4> /xdb/xca <CJK>
-+<U67EC> /xdb/xcb <CJK>
-+<U67B3> /xdb/xcc <CJK>
-+<U67E9> /xdb/xcd <CJK>
-+<U67B8> /xdb/xce <CJK>
-+<U67E4> /xdb/xcf <CJK>
-+<U67DE> /xdb/xd0 <CJK>
-+<U67DD> /xdb/xd1 <CJK>
-+<U67E2> /xdb/xd2 <CJK>
-+<U67EE> /xdb/xd3 <CJK>
-+<U67B9> /xdb/xd4 <CJK>
-+<U67CE> /xdb/xd5 <CJK>
-+<U67C6> /xdb/xd6 <CJK>
-+<U67E7> /xdb/xd7 <CJK>
-+<U6A9C> /xdb/xd8 <CJK>
-+<U681E> /xdb/xd9 <CJK>
-+<U6846> /xdb/xda <CJK>
-+<U6829> /xdb/xdb <CJK>
-+<U6840> /xdb/xdc <CJK>
-+<U684D> /xdb/xdd <CJK>
-+<U6832> /xdb/xde <CJK>
-+<U684E> /xdb/xdf <CJK>
-+<U68B3> /xdb/xe0 <CJK>
-+<U682B> /xdb/xe1 <CJK>
-+<U6859> /xdb/xe2 <CJK>
-+<U6863> /xdb/xe3 <CJK>
-+<U6877> /xdb/xe4 <CJK>
-+<U687F> /xdb/xe5 <CJK>
-+<U689F> /xdb/xe6 <CJK>
-+<U688F> /xdb/xe7 <CJK>
-+<U68AD> /xdb/xe8 <CJK>
-+<U6894> /xdb/xe9 <CJK>
-+<U689D> /xdb/xea <CJK>
-+<U689B> /xdb/xeb <CJK>
-+<U6883> /xdb/xec <CJK>
-+<U6AAE> /xdb/xed <CJK>
-+<U68B9> /xdb/xee <CJK>
-+<U6874> /xdb/xef <CJK>
-+<U68B5> /xdb/xf0 <CJK>
-+<U68A0> /xdb/xf1 <CJK>
-+<U68BA> /xdb/xf2 <CJK>
-+<U690F> /xdb/xf3 <CJK>
-+<U688D> /xdb/xf4 <CJK>
-+<U687E> /xdb/xf5 <CJK>
-+<U6901> /xdb/xf6 <CJK>
-+<U68CA> /xdb/xf7 <CJK>
-+<U6908> /xdb/xf8 <CJK>
-+<U68D8> /xdb/xf9 <CJK>
-+<U6922> /xdb/xfa <CJK>
-+<U6926> /xdb/xfb <CJK>
-+<U68E1> /xdb/xfc <CJK>
-+<U690C> /xdb/xfd <CJK>
-+<U68CD> /xdb/xfe <CJK>
-+<U68D4> /xdc/xa1 <CJK>
-+<U68E7> /xdc/xa2 <CJK>
-+<U68D5> /xdc/xa3 <CJK>
-+<U6936> /xdc/xa4 <CJK>
-+<U6912> /xdc/xa5 <CJK>
-+<U6904> /xdc/xa6 <CJK>
-+<U68D7> /xdc/xa7 <CJK>
-+<U68E3> /xdc/xa8 <CJK>
-+<U6925> /xdc/xa9 <CJK>
-+<U68F9> /xdc/xaa <CJK>
-+<U68E0> /xdc/xab <CJK>
-+<U68EF> /xdc/xac <CJK>
-+<U6928> /xdc/xad <CJK>
-+<U692A> /xdc/xae <CJK>
-+<U691A> /xdc/xaf <CJK>
-+<U6923> /xdc/xb0 <CJK>
-+<U6921> /xdc/xb1 <CJK>
-+<U68C6> /xdc/xb2 <CJK>
-+<U6979> /xdc/xb3 <CJK>
-+<U6977> /xdc/xb4 <CJK>
-+<U695C> /xdc/xb5 <CJK>
-+<U6978> /xdc/xb6 <CJK>
-+<U696B> /xdc/xb7 <CJK>
-+<U6954> /xdc/xb8 <CJK>
-+<U697E> /xdc/xb9 <CJK>
-+<U696E> /xdc/xba <CJK>
-+<U6939> /xdc/xbb <CJK>
-+<U6974> /xdc/xbc <CJK>
-+<U693D> /xdc/xbd <CJK>
-+<U6959> /xdc/xbe <CJK>
-+<U6930> /xdc/xbf <CJK>
-+<U6961> /xdc/xc0 <CJK>
-+<U695E> /xdc/xc1 <CJK>
-+<U695D> /xdc/xc2 <CJK>
-+<U6981> /xdc/xc3 <CJK>
-+<U696A> /xdc/xc4 <CJK>
-+<U69B2> /xdc/xc5 <CJK>
-+<U69AE> /xdc/xc6 <CJK>
-+<U69D0> /xdc/xc7 <CJK>
-+<U69BF> /xdc/xc8 <CJK>
-+<U69C1> /xdc/xc9 <CJK>
-+<U69D3> /xdc/xca <CJK>
-+<U69BE> /xdc/xcb <CJK>
-+<U69CE> /xdc/xcc <CJK>
-+<U5BE8> /xdc/xcd <CJK>
-+<U69CA> /xdc/xce <CJK>
-+<U69DD> /xdc/xcf <CJK>
-+<U69BB> /xdc/xd0 <CJK>
-+<U69C3> /xdc/xd1 <CJK>
-+<U69A7> /xdc/xd2 <CJK>
-+<U6A2E> /xdc/xd3 <CJK>
-+<U6991> /xdc/xd4 <CJK>
-+<U69A0> /xdc/xd5 <CJK>
-+<U699C> /xdc/xd6 <CJK>
-+<U6995> /xdc/xd7 <CJK>
-+<U69B4> /xdc/xd8 <CJK>
-+<U69DE> /xdc/xd9 <CJK>
-+<U69E8> /xdc/xda <CJK>
-+<U6A02> /xdc/xdb <CJK>
-+<U6A1B> /xdc/xdc <CJK>
-+<U69FF> /xdc/xdd <CJK>
-+<U6B0A> /xdc/xde <CJK>
-+<U69F9> /xdc/xdf <CJK>
-+<U69F2> /xdc/xe0 <CJK>
-+<U69E7> /xdc/xe1 <CJK>
-+<U6A05> /xdc/xe2 <CJK>
-+<U69B1> /xdc/xe3 <CJK>
-+<U6A1E> /xdc/xe4 <CJK>
-+<U69ED> /xdc/xe5 <CJK>
-+<U6A14> /xdc/xe6 <CJK>
-+<U69EB> /xdc/xe7 <CJK>
-+<U6A0A> /xdc/xe8 <CJK>
-+<U6A12> /xdc/xe9 <CJK>
-+<U6AC1> /xdc/xea <CJK>
-+<U6A23> /xdc/xeb <CJK>
-+<U6A13> /xdc/xec <CJK>
-+<U6A44> /xdc/xed <CJK>
-+<U6A0C> /xdc/xee <CJK>
-+<U6A72> /xdc/xef <CJK>
-+<U6A36> /xdc/xf0 <CJK>
-+<U6A78> /xdc/xf1 <CJK>
-+<U6A47> /xdc/xf2 <CJK>
-+<U6A62> /xdc/xf3 <CJK>
-+<U6A59> /xdc/xf4 <CJK>
-+<U6A66> /xdc/xf5 <CJK>
-+<U6A48> /xdc/xf6 <CJK>
-+<U6A38> /xdc/xf7 <CJK>
-+<U6A22> /xdc/xf8 <CJK>
-+<U6A90> /xdc/xf9 <CJK>
-+<U6A8D> /xdc/xfa <CJK>
-+<U6AA0> /xdc/xfb <CJK>
-+<U6A84> /xdc/xfc <CJK>
-+<U6AA2> /xdc/xfd <CJK>
-+<U6AA3> /xdc/xfe <CJK>
-+<U6A97> /xdd/xa1 <CJK>
-+<U8617> /xdd/xa2 <CJK>
-+<U6ABB> /xdd/xa3 <CJK>
-+<U6AC3> /xdd/xa4 <CJK>
-+<U6AC2> /xdd/xa5 <CJK>
-+<U6AB8> /xdd/xa6 <CJK>
-+<U6AB3> /xdd/xa7 <CJK>
-+<U6AAC> /xdd/xa8 <CJK>
-+<U6ADE> /xdd/xa9 <CJK>
-+<U6AD1> /xdd/xaa <CJK>
-+<U6ADF> /xdd/xab <CJK>
-+<U6AAA> /xdd/xac <CJK>
-+<U6ADA> /xdd/xad <CJK>
-+<U6AEA> /xdd/xae <CJK>
-+<U6AFB> /xdd/xaf <CJK>
-+<U6B05> /xdd/xb0 <CJK>
-+<U8616> /xdd/xb1 <CJK>
-+<U6AFA> /xdd/xb2 <CJK>
-+<U6B12> /xdd/xb3 <CJK>
-+<U6B16> /xdd/xb4 <CJK>
-+<U9B31> /xdd/xb5 <CJK>
-+<U6B1F> /xdd/xb6 <CJK>
-+<U6B38> /xdd/xb7 <CJK>
-+<U6B37> /xdd/xb8 <CJK>
-+<U76DC> /xdd/xb9 <CJK>
-+<U6B39> /xdd/xba <CJK>
-+<U98EE> /xdd/xbb <CJK>
-+<U6B47> /xdd/xbc <CJK>
-+<U6B43> /xdd/xbd <CJK>
-+<U6B49> /xdd/xbe <CJK>
-+<U6B50> /xdd/xbf <CJK>
-+<U6B59> /xdd/xc0 <CJK>
-+<U6B54> /xdd/xc1 <CJK>
-+<U6B5B> /xdd/xc2 <CJK>
-+<U6B5F> /xdd/xc3 <CJK>
-+<U6B61> /xdd/xc4 <CJK>
-+<U6B78> /xdd/xc5 <CJK>
-+<U6B79> /xdd/xc6 <CJK>
-+<U6B7F> /xdd/xc7 <CJK>
-+<U6B80> /xdd/xc8 <CJK>
-+<U6B84> /xdd/xc9 <CJK>
-+<U6B83> /xdd/xca <CJK>
-+<U6B8D> /xdd/xcb <CJK>
-+<U6B98> /xdd/xcc <CJK>
-+<U6B95> /xdd/xcd <CJK>
-+<U6B9E> /xdd/xce <CJK>
-+<U6BA4> /xdd/xcf <CJK>
-+<U6BAA> /xdd/xd0 <CJK>
-+<U6BAB> /xdd/xd1 <CJK>
-+<U6BAF> /xdd/xd2 <CJK>
-+<U6BB2> /xdd/xd3 <CJK>
-+<U6BB1> /xdd/xd4 <CJK>
-+<U6BB3> /xdd/xd5 <CJK>
-+<U6BB7> /xdd/xd6 <CJK>
-+<U6BBC> /xdd/xd7 <CJK>
-+<U6BC6> /xdd/xd8 <CJK>
-+<U6BCB> /xdd/xd9 <CJK>
-+<U6BD3> /xdd/xda <CJK>
-+<U6BDF> /xdd/xdb <CJK>
-+<U6BEC> /xdd/xdc <CJK>
-+<U6BEB> /xdd/xdd <CJK>
-+<U6BF3> /xdd/xde <CJK>
-+<U6BEF> /xdd/xdf <CJK>
-+<U9EBE> /xdd/xe0 <CJK>
-+<U6C08> /xdd/xe1 <CJK>
-+<U6C13> /xdd/xe2 <CJK>
-+<U6C14> /xdd/xe3 <CJK>
-+<U6C1B> /xdd/xe4 <CJK>
-+<U6C24> /xdd/xe5 <CJK>
-+<U6C23> /xdd/xe6 <CJK>
-+<U6C5E> /xdd/xe7 <CJK>
-+<U6C55> /xdd/xe8 <CJK>
-+<U6C62> /xdd/xe9 <CJK>
-+<U6C6A> /xdd/xea <CJK>
-+<U6C82> /xdd/xeb <CJK>
-+<U6C8D> /xdd/xec <CJK>
-+<U6C9A> /xdd/xed <CJK>
-+<U6C81> /xdd/xee <CJK>
-+<U6C9B> /xdd/xef <CJK>
-+<U6C7E> /xdd/xf0 <CJK>
-+<U6C68> /xdd/xf1 <CJK>
-+<U6C73> /xdd/xf2 <CJK>
-+<U6C92> /xdd/xf3 <CJK>
-+<U6C90> /xdd/xf4 <CJK>
-+<U6CC4> /xdd/xf5 <CJK>
-+<U6CF1> /xdd/xf6 <CJK>
-+<U6CD3> /xdd/xf7 <CJK>
-+<U6CBD> /xdd/xf8 <CJK>
-+<U6CD7> /xdd/xf9 <CJK>
-+<U6CC5> /xdd/xfa <CJK>
-+<U6CDD> /xdd/xfb <CJK>
-+<U6CAE> /xdd/xfc <CJK>
-+<U6CB1> /xdd/xfd <CJK>
-+<U6CBE> /xdd/xfe <CJK>
-+<U6CBA> /xde/xa1 <CJK>
-+<U6CDB> /xde/xa2 <CJK>
-+<U6CEF> /xde/xa3 <CJK>
-+<U6CD9> /xde/xa4 <CJK>
-+<U6CEA> /xde/xa5 <CJK>
-+<U6D1F> /xde/xa6 <CJK>
-+<U884D> /xde/xa7 <CJK>
-+<U6D36> /xde/xa8 <CJK>
-+<U6D2B> /xde/xa9 <CJK>
-+<U6D3D> /xde/xaa <CJK>
-+<U6D38> /xde/xab <CJK>
-+<U6D19> /xde/xac <CJK>
-+<U6D35> /xde/xad <CJK>
-+<U6D33> /xde/xae <CJK>
-+<U6D12> /xde/xaf <CJK>
-+<U6D0C> /xde/xb0 <CJK>
-+<U6D63> /xde/xb1 <CJK>
-+<U6D93> /xde/xb2 <CJK>
-+<U6D64> /xde/xb3 <CJK>
-+<U6D5A> /xde/xb4 <CJK>
-+<U6D79> /xde/xb5 <CJK>
-+<U6D59> /xde/xb6 <CJK>
-+<U6D8E> /xde/xb7 <CJK>
-+<U6D95> /xde/xb8 <CJK>
-+<U6FE4> /xde/xb9 <CJK>
-+<U6D85> /xde/xba <CJK>
-+<U6DF9> /xde/xbb <CJK>
-+<U6E15> /xde/xbc <CJK>
-+<U6E0A> /xde/xbd <CJK>
-+<U6DB5> /xde/xbe <CJK>
-+<U6DC7> /xde/xbf <CJK>
-+<U6DE6> /xde/xc0 <CJK>
-+<U6DB8> /xde/xc1 <CJK>
-+<U6DC6> /xde/xc2 <CJK>
-+<U6DEC> /xde/xc3 <CJK>
-+<U6DDE> /xde/xc4 <CJK>
-+<U6DCC> /xde/xc5 <CJK>
-+<U6DE8> /xde/xc6 <CJK>
-+<U6DD2> /xde/xc7 <CJK>
-+<U6DC5> /xde/xc8 <CJK>
-+<U6DFA> /xde/xc9 <CJK>
-+<U6DD9> /xde/xca <CJK>
-+<U6DE4> /xde/xcb <CJK>
-+<U6DD5> /xde/xcc <CJK>
-+<U6DEA> /xde/xcd <CJK>
-+<U6DEE> /xde/xce <CJK>
-+<U6E2D> /xde/xcf <CJK>
-+<U6E6E> /xde/xd0 <CJK>
-+<U6E2E> /xde/xd1 <CJK>
-+<U6E19> /xde/xd2 <CJK>
-+<U6E72> /xde/xd3 <CJK>
-+<U6E5F> /xde/xd4 <CJK>
-+<U6E3E> /xde/xd5 <CJK>
-+<U6E23> /xde/xd6 <CJK>
-+<U6E6B> /xde/xd7 <CJK>
-+<U6E2B> /xde/xd8 <CJK>
-+<U6E76> /xde/xd9 <CJK>
-+<U6E4D> /xde/xda <CJK>
-+<U6E1F> /xde/xdb <CJK>
-+<U6E43> /xde/xdc <CJK>
-+<U6E3A> /xde/xdd <CJK>
-+<U6E4E> /xde/xde <CJK>
-+<U6E24> /xde/xdf <CJK>
-+<U6EFF> /xde/xe0 <CJK>
-+<U6E1D> /xde/xe1 <CJK>
-+<U6E38> /xde/xe2 <CJK>
-+<U6E82> /xde/xe3 <CJK>
-+<U6EAA> /xde/xe4 <CJK>
-+<U6E98> /xde/xe5 <CJK>
-+<U6EC9> /xde/xe6 <CJK>
-+<U6EB7> /xde/xe7 <CJK>
-+<U6ED3> /xde/xe8 <CJK>
-+<U6EBD> /xde/xe9 <CJK>
-+<U6EAF> /xde/xea <CJK>
-+<U6EC4> /xde/xeb <CJK>
-+<U6EB2> /xde/xec <CJK>
-+<U6ED4> /xde/xed <CJK>
-+<U6ED5> /xde/xee <CJK>
-+<U6E8F> /xde/xef <CJK>
-+<U6EA5> /xde/xf0 <CJK>
-+<U6EC2> /xde/xf1 <CJK>
-+<U6E9F> /xde/xf2 <CJK>
-+<U6F41> /xde/xf3 <CJK>
-+<U6F11> /xde/xf4 <CJK>
-+<U704C> /xde/xf5 <CJK>
-+<U6EEC> /xde/xf6 <CJK>
-+<U6EF8> /xde/xf7 <CJK>
-+<U6EFE> /xde/xf8 <CJK>
-+<U6F3F> /xde/xf9 <CJK>
-+<U6EF2> /xde/xfa <CJK>
-+<U6F31> /xde/xfb <CJK>
-+<U6EEF> /xde/xfc <CJK>
-+<U6F32> /xde/xfd <CJK>
-+<U6ECC> /xde/xfe <CJK>
-+<U6F3E> /xdf/xa1 <CJK>
-+<U6F13> /xdf/xa2 <CJK>
-+<U6EF7> /xdf/xa3 <CJK>
-+<U6F86> /xdf/xa4 <CJK>
-+<U6F7A> /xdf/xa5 <CJK>
-+<U6F78> /xdf/xa6 <CJK>
-+<U6F81> /xdf/xa7 <CJK>
-+<U6F80> /xdf/xa8 <CJK>
-+<U6F6F> /xdf/xa9 <CJK>
-+<U6F5B> /xdf/xaa <CJK>
-+<U6FF3> /xdf/xab <CJK>
-+<U6F6D> /xdf/xac <CJK>
-+<U6F82> /xdf/xad <CJK>
-+<U6F7C> /xdf/xae <CJK>
-+<U6F58> /xdf/xaf <CJK>
-+<U6F8E> /xdf/xb0 <CJK>
-+<U6F91> /xdf/xb1 <CJK>
-+<U6FC2> /xdf/xb2 <CJK>
-+<U6F66> /xdf/xb3 <CJK>
-+<U6FB3> /xdf/xb4 <CJK>
-+<U6FA3> /xdf/xb5 <CJK>
-+<U6FA1> /xdf/xb6 <CJK>
-+<U6FA4> /xdf/xb7 <CJK>
-+<U6FB9> /xdf/xb8 <CJK>
-+<U6FC6> /xdf/xb9 <CJK>
-+<U6FAA> /xdf/xba <CJK>
-+<U6FDF> /xdf/xbb <CJK>
-+<U6FD5> /xdf/xbc <CJK>
-+<U6FEC> /xdf/xbd <CJK>
-+<U6FD4> /xdf/xbe <CJK>
-+<U6FD8> /xdf/xbf <CJK>
-+<U6FF1> /xdf/xc0 <CJK>
-+<U6FEE> /xdf/xc1 <CJK>
-+<U6FDB> /xdf/xc2 <CJK>
-+<U7009> /xdf/xc3 <CJK>
-+<U700B> /xdf/xc4 <CJK>
-+<U6FFA> /xdf/xc5 <CJK>
-+<U7011> /xdf/xc6 <CJK>
-+<U7001> /xdf/xc7 <CJK>
-+<U700F> /xdf/xc8 <CJK>
-+<U6FFE> /xdf/xc9 <CJK>
-+<U701B> /xdf/xca <CJK>
-+<U701A> /xdf/xcb <CJK>
-+<U6F74> /xdf/xcc <CJK>
-+<U701D> /xdf/xcd <CJK>
-+<U7018> /xdf/xce <CJK>
-+<U701F> /xdf/xcf <CJK>
-+<U7030> /xdf/xd0 <CJK>
-+<U703E> /xdf/xd1 <CJK>
-+<U7032> /xdf/xd2 <CJK>
-+<U7051> /xdf/xd3 <CJK>
-+<U7063> /xdf/xd4 <CJK>
-+<U7099> /xdf/xd5 <CJK>
-+<U7092> /xdf/xd6 <CJK>
-+<U70AF> /xdf/xd7 <CJK>
-+<U70F1> /xdf/xd8 <CJK>
-+<U70AC> /xdf/xd9 <CJK>
-+<U70B8> /xdf/xda <CJK>
-+<U70B3> /xdf/xdb <CJK>
-+<U70AE> /xdf/xdc <CJK>
-+<U70DF> /xdf/xdd <CJK>
-+<U70CB> /xdf/xde <CJK>
-+<U70DD> /xdf/xdf <CJK>
-+<U70D9> /xdf/xe0 <CJK>
-+<U7109> /xdf/xe1 <CJK>
-+<U70FD> /xdf/xe2 <CJK>
-+<U711C> /xdf/xe3 <CJK>
-+<U7119> /xdf/xe4 <CJK>
-+<U7165> /xdf/xe5 <CJK>
-+<U7155> /xdf/xe6 <CJK>
-+<U7188> /xdf/xe7 <CJK>
-+<U7166> /xdf/xe8 <CJK>
-+<U7162> /xdf/xe9 <CJK>
-+<U714C> /xdf/xea <CJK>
-+<U7156> /xdf/xeb <CJK>
-+<U716C> /xdf/xec <CJK>
-+<U718F> /xdf/xed <CJK>
-+<U71FB> /xdf/xee <CJK>
-+<U7184> /xdf/xef <CJK>
-+<U7195> /xdf/xf0 <CJK>
-+<U71A8> /xdf/xf1 <CJK>
-+<U71AC> /xdf/xf2 <CJK>
-+<U71D7> /xdf/xf3 <CJK>
-+<U71B9> /xdf/xf4 <CJK>
-+<U71BE> /xdf/xf5 <CJK>
-+<U71D2> /xdf/xf6 <CJK>
-+<U71C9> /xdf/xf7 <CJK>
-+<U71D4> /xdf/xf8 <CJK>
-+<U71CE> /xdf/xf9 <CJK>
-+<U71E0> /xdf/xfa <CJK>
-+<U71EC> /xdf/xfb <CJK>
-+<U71E7> /xdf/xfc <CJK>
-+<U71F5> /xdf/xfd <CJK>
-+<U71FC> /xdf/xfe <CJK>
-+<U71F9> /xe0/xa1 <CJK>
-+<U71FF> /xe0/xa2 <CJK>
-+<U720D> /xe0/xa3 <CJK>
-+<U7210> /xe0/xa4 <CJK>
-+<U721B> /xe0/xa5 <CJK>
-+<U7228> /xe0/xa6 <CJK>
-+<U722D> /xe0/xa7 <CJK>
-+<U722C> /xe0/xa8 <CJK>
-+<U7230> /xe0/xa9 <CJK>
-+<U7232> /xe0/xaa <CJK>
-+<U723B> /xe0/xab <CJK>
-+<U723C> /xe0/xac <CJK>
-+<U723F> /xe0/xad <CJK>
-+<U7240> /xe0/xae <CJK>
-+<U7246> /xe0/xaf <CJK>
-+<U724B> /xe0/xb0 <CJK>
-+<U7258> /xe0/xb1 <CJK>
-+<U7274> /xe0/xb2 <CJK>
-+<U727E> /xe0/xb3 <CJK>
-+<U7282> /xe0/xb4 <CJK>
-+<U7281> /xe0/xb5 <CJK>
-+<U7287> /xe0/xb6 <CJK>
-+<U7292> /xe0/xb7 <CJK>
-+<U7296> /xe0/xb8 <CJK>
-+<U72A2> /xe0/xb9 <CJK>
-+<U72A7> /xe0/xba <CJK>
-+<U72B9> /xe0/xbb <CJK>
-+<U72B2> /xe0/xbc <CJK>
-+<U72C3> /xe0/xbd <CJK>
-+<U72C6> /xe0/xbe <CJK>
-+<U72C4> /xe0/xbf <CJK>
-+<U72CE> /xe0/xc0 <CJK>
-+<U72D2> /xe0/xc1 <CJK>
-+<U72E2> /xe0/xc2 <CJK>
-+<U72E0> /xe0/xc3 <CJK>
-+<U72E1> /xe0/xc4 <CJK>
-+<U72F9> /xe0/xc5 <CJK>
-+<U72F7> /xe0/xc6 <CJK>
-+<U500F> /xe0/xc7 <CJK>
-+<U7317> /xe0/xc8 <CJK>
-+<U730A> /xe0/xc9 <CJK>
-+<U731C> /xe0/xca <CJK>
-+<U7316> /xe0/xcb <CJK>
-+<U731D> /xe0/xcc <CJK>
-+<U7334> /xe0/xcd <CJK>
-+<U732F> /xe0/xce <CJK>
-+<U7329> /xe0/xcf <CJK>
-+<U7325> /xe0/xd0 <CJK>
-+<U733E> /xe0/xd1 <CJK>
-+<U734E> /xe0/xd2 <CJK>
-+<U734F> /xe0/xd3 <CJK>
-+<U9ED8> /xe0/xd4 <CJK>
-+<U7357> /xe0/xd5 <CJK>
-+<U736A> /xe0/xd6 <CJK>
-+<U7368> /xe0/xd7 <CJK>
-+<U7370> /xe0/xd8 <CJK>
-+<U7378> /xe0/xd9 <CJK>
-+<U7375> /xe0/xda <CJK>
-+<U737B> /xe0/xdb <CJK>
-+<U737A> /xe0/xdc <CJK>
-+<U73C8> /xe0/xdd <CJK>
-+<U73B3> /xe0/xde <CJK>
-+<U73CE> /xe0/xdf <CJK>
-+<U73BB> /xe0/xe0 <CJK>
-+<U73C0> /xe0/xe1 <CJK>
-+<U73E5> /xe0/xe2 <CJK>
-+<U73EE> /xe0/xe3 <CJK>
-+<U73DE> /xe0/xe4 <CJK>
-+<U74A2> /xe0/xe5 <CJK>
-+<U7405> /xe0/xe6 <CJK>
-+<U746F> /xe0/xe7 <CJK>
-+<U7425> /xe0/xe8 <CJK>
-+<U73F8> /xe0/xe9 <CJK>
-+<U7432> /xe0/xea <CJK>
-+<U743A> /xe0/xeb <CJK>
-+<U7455> /xe0/xec <CJK>
-+<U743F> /xe0/xed <CJK>
-+<U745F> /xe0/xee <CJK>
-+<U7459> /xe0/xef <CJK>
-+<U7441> /xe0/xf0 <CJK>
-+<U745C> /xe0/xf1 <CJK>
-+<U7469> /xe0/xf2 <CJK>
-+<U7470> /xe0/xf3 <CJK>
-+<U7463> /xe0/xf4 <CJK>
-+<U746A> /xe0/xf5 <CJK>
-+<U7476> /xe0/xf6 <CJK>
-+<U747E> /xe0/xf7 <CJK>
-+<U748B> /xe0/xf8 <CJK>
-+<U749E> /xe0/xf9 <CJK>
-+<U74A7> /xe0/xfa <CJK>
-+<U74CA> /xe0/xfb <CJK>
-+<U74CF> /xe0/xfc <CJK>
-+<U74D4> /xe0/xfd <CJK>
-+<U73F1> /xe0/xfe <CJK>
-+<U74E0> /xe1/xa1 <CJK>
-+<U74E3> /xe1/xa2 <CJK>
-+<U74E7> /xe1/xa3 <CJK>
-+<U74E9> /xe1/xa4 <CJK>
-+<U74EE> /xe1/xa5 <CJK>
-+<U74F2> /xe1/xa6 <CJK>
-+<U74F0> /xe1/xa7 <CJK>
-+<U74F1> /xe1/xa8 <CJK>
-+<U74F8> /xe1/xa9 <CJK>
-+<U74F7> /xe1/xaa <CJK>
-+<U7504> /xe1/xab <CJK>
-+<U7503> /xe1/xac <CJK>
-+<U7505> /xe1/xad <CJK>
-+<U750C> /xe1/xae <CJK>
-+<U750E> /xe1/xaf <CJK>
-+<U750D> /xe1/xb0 <CJK>
-+<U7515> /xe1/xb1 <CJK>
-+<U7513> /xe1/xb2 <CJK>
-+<U751E> /xe1/xb3 <CJK>
-+<U7526> /xe1/xb4 <CJK>
-+<U752C> /xe1/xb5 <CJK>
-+<U753C> /xe1/xb6 <CJK>
-+<U7544> /xe1/xb7 <CJK>
-+<U754D> /xe1/xb8 <CJK>
-+<U754A> /xe1/xb9 <CJK>
-+<U7549> /xe1/xba <CJK>
-+<U755B> /xe1/xbb <CJK>
-+<U7546> /xe1/xbc <CJK>
-+<U755A> /xe1/xbd <CJK>
-+<U7569> /xe1/xbe <CJK>
-+<U7564> /xe1/xbf <CJK>
-+<U7567> /xe1/xc0 <CJK>
-+<U756B> /xe1/xc1 <CJK>
-+<U756D> /xe1/xc2 <CJK>
-+<U7578> /xe1/xc3 <CJK>
-+<U7576> /xe1/xc4 <CJK>
-+<U7586> /xe1/xc5 <CJK>
-+<U7587> /xe1/xc6 <CJK>
-+<U7574> /xe1/xc7 <CJK>
-+<U758A> /xe1/xc8 <CJK>
-+<U7589> /xe1/xc9 <CJK>
-+<U7582> /xe1/xca <CJK>
-+<U7594> /xe1/xcb <CJK>
-+<U759A> /xe1/xcc <CJK>
-+<U759D> /xe1/xcd <CJK>
-+<U75A5> /xe1/xce <CJK>
-+<U75A3> /xe1/xcf <CJK>
-+<U75C2> /xe1/xd0 <CJK>
-+<U75B3> /xe1/xd1 <CJK>
-+<U75C3> /xe1/xd2 <CJK>
-+<U75B5> /xe1/xd3 <CJK>
-+<U75BD> /xe1/xd4 <CJK>
-+<U75B8> /xe1/xd5 <CJK>
-+<U75BC> /xe1/xd6 <CJK>
-+<U75B1> /xe1/xd7 <CJK>
-+<U75CD> /xe1/xd8 <CJK>
-+<U75CA> /xe1/xd9 <CJK>
-+<U75D2> /xe1/xda <CJK>
-+<U75D9> /xe1/xdb <CJK>
-+<U75E3> /xe1/xdc <CJK>
-+<U75DE> /xe1/xdd <CJK>
-+<U75FE> /xe1/xde <CJK>
-+<U75FF> /xe1/xdf <CJK>
-+<U75FC> /xe1/xe0 <CJK>
-+<U7601> /xe1/xe1 <CJK>
-+<U75F0> /xe1/xe2 <CJK>
-+<U75FA> /xe1/xe3 <CJK>
-+<U75F2> /xe1/xe4 <CJK>
-+<U75F3> /xe1/xe5 <CJK>
-+<U760B> /xe1/xe6 <CJK>
-+<U760D> /xe1/xe7 <CJK>
-+<U7609> /xe1/xe8 <CJK>
-+<U761F> /xe1/xe9 <CJK>
-+<U7627> /xe1/xea <CJK>
-+<U7620> /xe1/xeb <CJK>
-+<U7621> /xe1/xec <CJK>
-+<U7622> /xe1/xed <CJK>
-+<U7624> /xe1/xee <CJK>
-+<U7634> /xe1/xef <CJK>
-+<U7630> /xe1/xf0 <CJK>
-+<U763B> /xe1/xf1 <CJK>
-+<U7647> /xe1/xf2 <CJK>
-+<U7648> /xe1/xf3 <CJK>
-+<U7646> /xe1/xf4 <CJK>
-+<U765C> /xe1/xf5 <CJK>
-+<U7658> /xe1/xf6 <CJK>
-+<U7661> /xe1/xf7 <CJK>
-+<U7662> /xe1/xf8 <CJK>
-+<U7668> /xe1/xf9 <CJK>
-+<U7669> /xe1/xfa <CJK>
-+<U766A> /xe1/xfb <CJK>
-+<U7667> /xe1/xfc <CJK>
-+<U766C> /xe1/xfd <CJK>
-+<U7670> /xe1/xfe <CJK>
-+<U7672> /xe2/xa1 <CJK>
-+<U7676> /xe2/xa2 <CJK>
-+<U7678> /xe2/xa3 <CJK>
-+<U767C> /xe2/xa4 <CJK>
-+<U7680> /xe2/xa5 <CJK>
-+<U7683> /xe2/xa6 <CJK>
-+<U7688> /xe2/xa7 <CJK>
-+<U768B> /xe2/xa8 <CJK>
-+<U768E> /xe2/xa9 <CJK>
-+<U7696> /xe2/xaa <CJK>
-+<U7693> /xe2/xab <CJK>
-+<U7699> /xe2/xac <CJK>
-+<U769A> /xe2/xad <CJK>
-+<U76B0> /xe2/xae <CJK>
-+<U76B4> /xe2/xaf <CJK>
-+<U76B8> /xe2/xb0 <CJK>
-+<U76B9> /xe2/xb1 <CJK>
-+<U76BA> /xe2/xb2 <CJK>
-+<U76C2> /xe2/xb3 <CJK>
-+<U76CD> /xe2/xb4 <CJK>
-+<U76D6> /xe2/xb5 <CJK>
-+<U76D2> /xe2/xb6 <CJK>
-+<U76DE> /xe2/xb7 <CJK>
-+<U76E1> /xe2/xb8 <CJK>
-+<U76E5> /xe2/xb9 <CJK>
-+<U76E7> /xe2/xba <CJK>
-+<U76EA> /xe2/xbb <CJK>
-+<U862F> /xe2/xbc <CJK>
-+<U76FB> /xe2/xbd <CJK>
-+<U7708> /xe2/xbe <CJK>
-+<U7707> /xe2/xbf <CJK>
-+<U7704> /xe2/xc0 <CJK>
-+<U7729> /xe2/xc1 <CJK>
-+<U7724> /xe2/xc2 <CJK>
-+<U771E> /xe2/xc3 <CJK>
-+<U7725> /xe2/xc4 <CJK>
-+<U7726> /xe2/xc5 <CJK>
-+<U771B> /xe2/xc6 <CJK>
-+<U7737> /xe2/xc7 <CJK>
-+<U7738> /xe2/xc8 <CJK>
-+<U7747> /xe2/xc9 <CJK>
-+<U775A> /xe2/xca <CJK>
-+<U7768> /xe2/xcb <CJK>
-+<U776B> /xe2/xcc <CJK>
-+<U775B> /xe2/xcd <CJK>
-+<U7765> /xe2/xce <CJK>
-+<U777F> /xe2/xcf <CJK>
-+<U777E> /xe2/xd0 <CJK>
-+<U7779> /xe2/xd1 <CJK>
-+<U778E> /xe2/xd2 <CJK>
-+<U778B> /xe2/xd3 <CJK>
-+<U7791> /xe2/xd4 <CJK>
-+<U77A0> /xe2/xd5 <CJK>
-+<U779E> /xe2/xd6 <CJK>
-+<U77B0> /xe2/xd7 <CJK>
-+<U77B6> /xe2/xd8 <CJK>
-+<U77B9> /xe2/xd9 <CJK>
-+<U77BF> /xe2/xda <CJK>
-+<U77BC> /xe2/xdb <CJK>
-+<U77BD> /xe2/xdc <CJK>
-+<U77BB> /xe2/xdd <CJK>
-+<U77C7> /xe2/xde <CJK>
-+<U77CD> /xe2/xdf <CJK>
-+<U77D7> /xe2/xe0 <CJK>
-+<U77DA> /xe2/xe1 <CJK>
-+<U77DC> /xe2/xe2 <CJK>
-+<U77E3> /xe2/xe3 <CJK>
-+<U77EE> /xe2/xe4 <CJK>
-+<U77FC> /xe2/xe5 <CJK>
-+<U780C> /xe2/xe6 <CJK>
-+<U7812> /xe2/xe7 <CJK>
-+<U7926> /xe2/xe8 <CJK>
-+<U7820> /xe2/xe9 <CJK>
-+<U792A> /xe2/xea <CJK>
-+<U7845> /xe2/xeb <CJK>
-+<U788E> /xe2/xec <CJK>
-+<U7874> /xe2/xed <CJK>
-+<U7886> /xe2/xee <CJK>
-+<U787C> /xe2/xef <CJK>
-+<U789A> /xe2/xf0 <CJK>
-+<U788C> /xe2/xf1 <CJK>
-+<U78A3> /xe2/xf2 <CJK>
-+<U78B5> /xe2/xf3 <CJK>
-+<U78AA> /xe2/xf4 <CJK>
-+<U78AF> /xe2/xf5 <CJK>
-+<U78D1> /xe2/xf6 <CJK>
-+<U78C6> /xe2/xf7 <CJK>
-+<U78CB> /xe2/xf8 <CJK>
-+<U78D4> /xe2/xf9 <CJK>
-+<U78BE> /xe2/xfa <CJK>
-+<U78BC> /xe2/xfb <CJK>
-+<U78C5> /xe2/xfc <CJK>
-+<U78CA> /xe2/xfd <CJK>
-+<U78EC> /xe2/xfe <CJK>
-+<U78E7> /xe3/xa1 <CJK>
-+<U78DA> /xe3/xa2 <CJK>
-+<U78FD> /xe3/xa3 <CJK>
-+<U78F4> /xe3/xa4 <CJK>
-+<U7907> /xe3/xa5 <CJK>
-+<U7912> /xe3/xa6 <CJK>
-+<U7911> /xe3/xa7 <CJK>
-+<U7919> /xe3/xa8 <CJK>
-+<U792C> /xe3/xa9 <CJK>
-+<U792B> /xe3/xaa <CJK>
-+<U7940> /xe3/xab <CJK>
-+<U7960> /xe3/xac <CJK>
-+<U7957> /xe3/xad <CJK>
-+<U795F> /xe3/xae <CJK>
-+<U795A> /xe3/xaf <CJK>
-+<U7955> /xe3/xb0 <CJK>
-+<U7953> /xe3/xb1 <CJK>
-+<U797A> /xe3/xb2 <CJK>
-+<U797F> /xe3/xb3 <CJK>
-+<U798A> /xe3/xb4 <CJK>
-+<U799D> /xe3/xb5 <CJK>
-+<U79A7> /xe3/xb6 <CJK>
-+<U9F4B> /xe3/xb7 <CJK>
-+<U79AA> /xe3/xb8 <CJK>
-+<U79AE> /xe3/xb9 <CJK>
-+<U79B3> /xe3/xba <CJK>
-+<U79B9> /xe3/xbb <CJK>
-+<U79BA> /xe3/xbc <CJK>
-+<U79C9> /xe3/xbd <CJK>
-+<U79D5> /xe3/xbe <CJK>
-+<U79E7> /xe3/xbf <CJK>
-+<U79EC> /xe3/xc0 <CJK>
-+<U79E1> /xe3/xc1 <CJK>
-+<U79E3> /xe3/xc2 <CJK>
-+<U7A08> /xe3/xc3 <CJK>
-+<U7A0D> /xe3/xc4 <CJK>
-+<U7A18> /xe3/xc5 <CJK>
-+<U7A19> /xe3/xc6 <CJK>
-+<U7A20> /xe3/xc7 <CJK>
-+<U7A1F> /xe3/xc8 <CJK>
-+<U7980> /xe3/xc9 <CJK>
-+<U7A31> /xe3/xca <CJK>
-+<U7A3B> /xe3/xcb <CJK>
-+<U7A3E> /xe3/xcc <CJK>
-+<U7A37> /xe3/xcd <CJK>
-+<U7A43> /xe3/xce <CJK>
-+<U7A57> /xe3/xcf <CJK>
-+<U7A49> /xe3/xd0 <CJK>
-+<U7A61> /xe3/xd1 <CJK>
-+<U7A62> /xe3/xd2 <CJK>
-+<U7A69> /xe3/xd3 <CJK>
-+<U9F9D> /xe3/xd4 <CJK>
-+<U7A70> /xe3/xd5 <CJK>
-+<U7A79> /xe3/xd6 <CJK>
-+<U7A7D> /xe3/xd7 <CJK>
-+<U7A88> /xe3/xd8 <CJK>
-+<U7A97> /xe3/xd9 <CJK>
-+<U7A95> /xe3/xda <CJK>
-+<U7A98> /xe3/xdb <CJK>
-+<U7A96> /xe3/xdc <CJK>
-+<U7AA9> /xe3/xdd <CJK>
-+<U7AC8> /xe3/xde <CJK>
-+<U7AB0> /xe3/xdf <CJK>
-+<U7AB6> /xe3/xe0 <CJK>
-+<U7AC5> /xe3/xe1 <CJK>
-+<U7AC4> /xe3/xe2 <CJK>
-+<U7ABF> /xe3/xe3 <CJK>
-+<U9083> /xe3/xe4 <CJK>
-+<U7AC7> /xe3/xe5 <CJK>
-+<U7ACA> /xe3/xe6 <CJK>
-+<U7ACD> /xe3/xe7 <CJK>
-+<U7ACF> /xe3/xe8 <CJK>
-+<U7AD5> /xe3/xe9 <CJK>
-+<U7AD3> /xe3/xea <CJK>
-+<U7AD9> /xe3/xeb <CJK>
-+<U7ADA> /xe3/xec <CJK>
-+<U7ADD> /xe3/xed <CJK>
-+<U7AE1> /xe3/xee <CJK>
-+<U7AE2> /xe3/xef <CJK>
-+<U7AE6> /xe3/xf0 <CJK>
-+<U7AED> /xe3/xf1 <CJK>
-+<U7AF0> /xe3/xf2 <CJK>
-+<U7B02> /xe3/xf3 <CJK>
-+<U7B0F> /xe3/xf4 <CJK>
-+<U7B0A> /xe3/xf5 <CJK>
-+<U7B06> /xe3/xf6 <CJK>
-+<U7B33> /xe3/xf7 <CJK>
-+<U7B18> /xe3/xf8 <CJK>
-+<U7B19> /xe3/xf9 <CJK>
-+<U7B1E> /xe3/xfa <CJK>
-+<U7B35> /xe3/xfb <CJK>
-+<U7B28> /xe3/xfc <CJK>
-+<U7B36> /xe3/xfd <CJK>
-+<U7B50> /xe3/xfe <CJK>
-+<U7B7A> /xe4/xa1 <CJK>
-+<U7B04> /xe4/xa2 <CJK>
-+<U7B4D> /xe4/xa3 <CJK>
-+<U7B0B> /xe4/xa4 <CJK>
-+<U7B4C> /xe4/xa5 <CJK>
-+<U7B45> /xe4/xa6 <CJK>
-+<U7B75> /xe4/xa7 <CJK>
-+<U7B65> /xe4/xa8 <CJK>
-+<U7B74> /xe4/xa9 <CJK>
-+<U7B67> /xe4/xaa <CJK>
-+<U7B70> /xe4/xab <CJK>
-+<U7B71> /xe4/xac <CJK>
-+<U7B6C> /xe4/xad <CJK>
-+<U7B6E> /xe4/xae <CJK>
-+<U7B9D> /xe4/xaf <CJK>
-+<U7B98> /xe4/xb0 <CJK>
-+<U7B9F> /xe4/xb1 <CJK>
-+<U7B8D> /xe4/xb2 <CJK>
-+<U7B9C> /xe4/xb3 <CJK>
-+<U7B9A> /xe4/xb4 <CJK>
-+<U7B8B> /xe4/xb5 <CJK>
-+<U7B92> /xe4/xb6 <CJK>
-+<U7B8F> /xe4/xb7 <CJK>
-+<U7B5D> /xe4/xb8 <CJK>
-+<U7B99> /xe4/xb9 <CJK>
-+<U7BCB> /xe4/xba <CJK>
-+<U7BC1> /xe4/xbb <CJK>
-+<U7BCC> /xe4/xbc <CJK>
-+<U7BCF> /xe4/xbd <CJK>
-+<U7BB4> /xe4/xbe <CJK>
-+<U7BC6> /xe4/xbf <CJK>
-+<U7BDD> /xe4/xc0 <CJK>
-+<U7BE9> /xe4/xc1 <CJK>
-+<U7C11> /xe4/xc2 <CJK>
-+<U7C14> /xe4/xc3 <CJK>
-+<U7BE6> /xe4/xc4 <CJK>
-+<U7BE5> /xe4/xc5 <CJK>
-+<U7C60> /xe4/xc6 <CJK>
-+<U7C00> /xe4/xc7 <CJK>
-+<U7C07> /xe4/xc8 <CJK>
-+<U7C13> /xe4/xc9 <CJK>
-+<U7BF3> /xe4/xca <CJK>
-+<U7BF7> /xe4/xcb <CJK>
-+<U7C17> /xe4/xcc <CJK>
-+<U7C0D> /xe4/xcd <CJK>
-+<U7BF6> /xe4/xce <CJK>
-+<U7C23> /xe4/xcf <CJK>
-+<U7C27> /xe4/xd0 <CJK>
-+<U7C2A> /xe4/xd1 <CJK>
-+<U7C1F> /xe4/xd2 <CJK>
-+<U7C37> /xe4/xd3 <CJK>
-+<U7C2B> /xe4/xd4 <CJK>
-+<U7C3D> /xe4/xd5 <CJK>
-+<U7C4C> /xe4/xd6 <CJK>
-+<U7C43> /xe4/xd7 <CJK>
-+<U7C54> /xe4/xd8 <CJK>
-+<U7C4F> /xe4/xd9 <CJK>
-+<U7C40> /xe4/xda <CJK>
-+<U7C50> /xe4/xdb <CJK>
-+<U7C58> /xe4/xdc <CJK>
-+<U7C5F> /xe4/xdd <CJK>
-+<U7C64> /xe4/xde <CJK>
-+<U7C56> /xe4/xdf <CJK>
-+<U7C65> /xe4/xe0 <CJK>
-+<U7C6C> /xe4/xe1 <CJK>
-+<U7C75> /xe4/xe2 <CJK>
-+<U7C83> /xe4/xe3 <CJK>
-+<U7C90> /xe4/xe4 <CJK>
-+<U7CA4> /xe4/xe5 <CJK>
-+<U7CAD> /xe4/xe6 <CJK>
-+<U7CA2> /xe4/xe7 <CJK>
-+<U7CAB> /xe4/xe8 <CJK>
-+<U7CA1> /xe4/xe9 <CJK>
-+<U7CA8> /xe4/xea <CJK>
-+<U7CB3> /xe4/xeb <CJK>
-+<U7CB2> /xe4/xec <CJK>
-+<U7CB1> /xe4/xed <CJK>
-+<U7CAE> /xe4/xee <CJK>
-+<U7CB9> /xe4/xef <CJK>
-+<U7CBD> /xe4/xf0 <CJK>
-+<U7CC0> /xe4/xf1 <CJK>
-+<U7CC5> /xe4/xf2 <CJK>
-+<U7CC2> /xe4/xf3 <CJK>
-+<U7CD8> /xe4/xf4 <CJK>
-+<U7CD2> /xe4/xf5 <CJK>
-+<U7CDC> /xe4/xf6 <CJK>
-+<U7CE2> /xe4/xf7 <CJK>
-+<U9B3B> /xe4/xf8 <CJK>
-+<U7CEF> /xe4/xf9 <CJK>
-+<U7CF2> /xe4/xfa <CJK>
-+<U7CF4> /xe4/xfb <CJK>
-+<U7CF6> /xe4/xfc <CJK>
-+<U7CFA> /xe4/xfd <CJK>
-+<U7D06> /xe4/xfe <CJK>
-+<U7D02> /xe5/xa1 <CJK>
-+<U7D1C> /xe5/xa2 <CJK>
-+<U7D15> /xe5/xa3 <CJK>
-+<U7D0A> /xe5/xa4 <CJK>
-+<U7D45> /xe5/xa5 <CJK>
-+<U7D4B> /xe5/xa6 <CJK>
-+<U7D2E> /xe5/xa7 <CJK>
-+<U7D32> /xe5/xa8 <CJK>
-+<U7D3F> /xe5/xa9 <CJK>
-+<U7D35> /xe5/xaa <CJK>
-+<U7D46> /xe5/xab <CJK>
-+<U7D73> /xe5/xac <CJK>
-+<U7D56> /xe5/xad <CJK>
-+<U7D4E> /xe5/xae <CJK>
-+<U7D72> /xe5/xaf <CJK>
-+<U7D68> /xe5/xb0 <CJK>
-+<U7D6E> /xe5/xb1 <CJK>
-+<U7D4F> /xe5/xb2 <CJK>
-+<U7D63> /xe5/xb3 <CJK>
-+<U7D93> /xe5/xb4 <CJK>
-+<U7D89> /xe5/xb5 <CJK>
-+<U7D5B> /xe5/xb6 <CJK>
-+<U7D8F> /xe5/xb7 <CJK>
-+<U7D7D> /xe5/xb8 <CJK>
-+<U7D9B> /xe5/xb9 <CJK>
-+<U7DBA> /xe5/xba <CJK>
-+<U7DAE> /xe5/xbb <CJK>
-+<U7DA3> /xe5/xbc <CJK>
-+<U7DB5> /xe5/xbd <CJK>
-+<U7DC7> /xe5/xbe <CJK>
-+<U7DBD> /xe5/xbf <CJK>
-+<U7DAB> /xe5/xc0 <CJK>
-+<U7E3D> /xe5/xc1 <CJK>
-+<U7DA2> /xe5/xc2 <CJK>
-+<U7DAF> /xe5/xc3 <CJK>
-+<U7DDC> /xe5/xc4 <CJK>
-+<U7DB8> /xe5/xc5 <CJK>
-+<U7D9F> /xe5/xc6 <CJK>
-+<U7DB0> /xe5/xc7 <CJK>
-+<U7DD8> /xe5/xc8 <CJK>
-+<U7DDD> /xe5/xc9 <CJK>
-+<U7DE4> /xe5/xca <CJK>
-+<U7DDE> /xe5/xcb <CJK>
-+<U7DFB> /xe5/xcc <CJK>
-+<U7DF2> /xe5/xcd <CJK>
-+<U7DE1> /xe5/xce <CJK>
-+<U7E05> /xe5/xcf <CJK>
-+<U7E0A> /xe5/xd0 <CJK>
-+<U7E23> /xe5/xd1 <CJK>
-+<U7E21> /xe5/xd2 <CJK>
-+<U7E12> /xe5/xd3 <CJK>
-+<U7E31> /xe5/xd4 <CJK>
-+<U7E1F> /xe5/xd5 <CJK>
-+<U7E09> /xe5/xd6 <CJK>
-+<U7E0B> /xe5/xd7 <CJK>
-+<U7E22> /xe5/xd8 <CJK>
-+<U7E46> /xe5/xd9 <CJK>
-+<U7E66> /xe5/xda <CJK>
-+<U7E3B> /xe5/xdb <CJK>
-+<U7E35> /xe5/xdc <CJK>
-+<U7E39> /xe5/xdd <CJK>
-+<U7E43> /xe5/xde <CJK>
-+<U7E37> /xe5/xdf <CJK>
-+<U7E32> /xe5/xe0 <CJK>
-+<U7E3A> /xe5/xe1 <CJK>
-+<U7E67> /xe5/xe2 <CJK>
-+<U7E5D> /xe5/xe3 <CJK>
-+<U7E56> /xe5/xe4 <CJK>
-+<U7E5E> /xe5/xe5 <CJK>
-+<U7E59> /xe5/xe6 <CJK>
-+<U7E5A> /xe5/xe7 <CJK>
-+<U7E79> /xe5/xe8 <CJK>
-+<U7E6A> /xe5/xe9 <CJK>
-+<U7E69> /xe5/xea <CJK>
-+<U7E7C> /xe5/xeb <CJK>
-+<U7E7B> /xe5/xec <CJK>
-+<U7E83> /xe5/xed <CJK>
-+<U7DD5> /xe5/xee <CJK>
-+<U7E7D> /xe5/xef <CJK>
-+<U8FAE> /xe5/xf0 <CJK>
-+<U7E7F> /xe5/xf1 <CJK>
-+<U7E88> /xe5/xf2 <CJK>
-+<U7E89> /xe5/xf3 <CJK>
-+<U7E8C> /xe5/xf4 <CJK>
-+<U7E92> /xe5/xf5 <CJK>
-+<U7E90> /xe5/xf6 <CJK>
-+<U7E93> /xe5/xf7 <CJK>
-+<U7E94> /xe5/xf8 <CJK>
-+<U7E96> /xe5/xf9 <CJK>
-+<U7E8E> /xe5/xfa <CJK>
-+<U7E9B> /xe5/xfb <CJK>
-+<U7E9C> /xe5/xfc <CJK>
-+<U7F38> /xe5/xfd <CJK>
-+<U7F3A> /xe5/xfe <CJK>
-+<U7F45> /xe6/xa1 <CJK>
-+<U7F4C> /xe6/xa2 <CJK>
-+<U7F4D> /xe6/xa3 <CJK>
-+<U7F4E> /xe6/xa4 <CJK>
-+<U7F50> /xe6/xa5 <CJK>
-+<U7F51> /xe6/xa6 <CJK>
-+<U7F55> /xe6/xa7 <CJK>
-+<U7F54> /xe6/xa8 <CJK>
-+<U7F58> /xe6/xa9 <CJK>
-+<U7F5F> /xe6/xaa <CJK>
-+<U7F60> /xe6/xab <CJK>
-+<U7F68> /xe6/xac <CJK>
-+<U7F69> /xe6/xad <CJK>
-+<U7F67> /xe6/xae <CJK>
-+<U7F78> /xe6/xaf <CJK>
-+<U7F82> /xe6/xb0 <CJK>
-+<U7F86> /xe6/xb1 <CJK>
-+<U7F83> /xe6/xb2 <CJK>
-+<U7F88> /xe6/xb3 <CJK>
-+<U7F87> /xe6/xb4 <CJK>
-+<U7F8C> /xe6/xb5 <CJK>
-+<U7F94> /xe6/xb6 <CJK>
-+<U7F9E> /xe6/xb7 <CJK>
-+<U7F9D> /xe6/xb8 <CJK>
-+<U7F9A> /xe6/xb9 <CJK>
-+<U7FA3> /xe6/xba <CJK>
-+<U7FAF> /xe6/xbb <CJK>
-+<U7FB2> /xe6/xbc <CJK>
-+<U7FB9> /xe6/xbd <CJK>
-+<U7FAE> /xe6/xbe <CJK>
-+<U7FB6> /xe6/xbf <CJK>
-+<U7FB8> /xe6/xc0 <CJK>
-+<U8B71> /xe6/xc1 <CJK>
-+<U7FC5> /xe6/xc2 <CJK>
-+<U7FC6> /xe6/xc3 <CJK>
-+<U7FCA> /xe6/xc4 <CJK>
-+<U7FD5> /xe6/xc5 <CJK>
-+<U7FD4> /xe6/xc6 <CJK>
-+<U7FE1> /xe6/xc7 <CJK>
-+<U7FE6> /xe6/xc8 <CJK>
-+<U7FE9> /xe6/xc9 <CJK>
-+<U7FF3> /xe6/xca <CJK>
-+<U7FF9> /xe6/xcb <CJK>
-+<U98DC> /xe6/xcc <CJK>
-+<U8006> /xe6/xcd <CJK>
-+<U8004> /xe6/xce <CJK>
-+<U800B> /xe6/xcf <CJK>
-+<U8012> /xe6/xd0 <CJK>
-+<U8018> /xe6/xd1 <CJK>
-+<U8019> /xe6/xd2 <CJK>
-+<U801C> /xe6/xd3 <CJK>
-+<U8021> /xe6/xd4 <CJK>
-+<U8028> /xe6/xd5 <CJK>
-+<U803F> /xe6/xd6 <CJK>
-+<U803B> /xe6/xd7 <CJK>
-+<U804A> /xe6/xd8 <CJK>
-+<U8046> /xe6/xd9 <CJK>
-+<U8052> /xe6/xda <CJK>
-+<U8058> /xe6/xdb <CJK>
-+<U805A> /xe6/xdc <CJK>
-+<U805F> /xe6/xdd <CJK>
-+<U8062> /xe6/xde <CJK>
-+<U8068> /xe6/xdf <CJK>
-+<U8073> /xe6/xe0 <CJK>
-+<U8072> /xe6/xe1 <CJK>
-+<U8070> /xe6/xe2 <CJK>
-+<U8076> /xe6/xe3 <CJK>
-+<U8079> /xe6/xe4 <CJK>
-+<U807D> /xe6/xe5 <CJK>
-+<U807F> /xe6/xe6 <CJK>
-+<U8084> /xe6/xe7 <CJK>
-+<U8086> /xe6/xe8 <CJK>
-+<U8085> /xe6/xe9 <CJK>
-+<U809B> /xe6/xea <CJK>
-+<U8093> /xe6/xeb <CJK>
-+<U809A> /xe6/xec <CJK>
-+<U80AD> /xe6/xed <CJK>
-+<U5190> /xe6/xee <CJK>
-+<U80AC> /xe6/xef <CJK>
-+<U80DB> /xe6/xf0 <CJK>
-+<U80E5> /xe6/xf1 <CJK>
-+<U80D9> /xe6/xf2 <CJK>
-+<U80DD> /xe6/xf3 <CJK>
-+<U80C4> /xe6/xf4 <CJK>
-+<U80DA> /xe6/xf5 <CJK>
-+<U80D6> /xe6/xf6 <CJK>
-+<U8109> /xe6/xf7 <CJK>
-+<U80EF> /xe6/xf8 <CJK>
-+<U80F1> /xe6/xf9 <CJK>
-+<U811B> /xe6/xfa <CJK>
-+<U8129> /xe6/xfb <CJK>
-+<U8123> /xe6/xfc <CJK>
-+<U812F> /xe6/xfd <CJK>
-+<U814B> /xe6/xfe <CJK>
-+<U968B> /xe7/xa1 <CJK>
-+<U8146> /xe7/xa2 <CJK>
-+<U813E> /xe7/xa3 <CJK>
-+<U8153> /xe7/xa4 <CJK>
-+<U8151> /xe7/xa5 <CJK>
-+<U80FC> /xe7/xa6 <CJK>
-+<U8171> /xe7/xa7 <CJK>
-+<U816E> /xe7/xa8 <CJK>
-+<U8165> /xe7/xa9 <CJK>
-+<U8166> /xe7/xaa <CJK>
-+<U8174> /xe7/xab <CJK>
-+<U8183> /xe7/xac <CJK>
-+<U8188> /xe7/xad <CJK>
-+<U818A> /xe7/xae <CJK>
-+<U8180> /xe7/xaf <CJK>
-+<U8182> /xe7/xb0 <CJK>
-+<U81A0> /xe7/xb1 <CJK>
-+<U8195> /xe7/xb2 <CJK>
-+<U81A4> /xe7/xb3 <CJK>
-+<U81A3> /xe7/xb4 <CJK>
-+<U815F> /xe7/xb5 <CJK>
-+<U8193> /xe7/xb6 <CJK>
-+<U81A9> /xe7/xb7 <CJK>
-+<U81B0> /xe7/xb8 <CJK>
-+<U81B5> /xe7/xb9 <CJK>
-+<U81BE> /xe7/xba <CJK>
-+<U81B8> /xe7/xbb <CJK>
-+<U81BD> /xe7/xbc <CJK>
-+<U81C0> /xe7/xbd <CJK>
-+<U81C2> /xe7/xbe <CJK>
-+<U81BA> /xe7/xbf <CJK>
-+<U81C9> /xe7/xc0 <CJK>
-+<U81CD> /xe7/xc1 <CJK>
-+<U81D1> /xe7/xc2 <CJK>
-+<U81D9> /xe7/xc3 <CJK>
-+<U81D8> /xe7/xc4 <CJK>
-+<U81C8> /xe7/xc5 <CJK>
-+<U81DA> /xe7/xc6 <CJK>
-+<U81DF> /xe7/xc7 <CJK>
-+<U81E0> /xe7/xc8 <CJK>
-+<U81E7> /xe7/xc9 <CJK>
-+<U81FA> /xe7/xca <CJK>
-+<U81FB> /xe7/xcb <CJK>
-+<U81FE> /xe7/xcc <CJK>
-+<U8201> /xe7/xcd <CJK>
-+<U8202> /xe7/xce <CJK>
-+<U8205> /xe7/xcf <CJK>
-+<U8207> /xe7/xd0 <CJK>
-+<U820A> /xe7/xd1 <CJK>
-+<U820D> /xe7/xd2 <CJK>
-+<U8210> /xe7/xd3 <CJK>
-+<U8216> /xe7/xd4 <CJK>
-+<U8229> /xe7/xd5 <CJK>
-+<U822B> /xe7/xd6 <CJK>
-+<U8238> /xe7/xd7 <CJK>
-+<U8233> /xe7/xd8 <CJK>
-+<U8240> /xe7/xd9 <CJK>
-+<U8259> /xe7/xda <CJK>
-+<U8258> /xe7/xdb <CJK>
-+<U825D> /xe7/xdc <CJK>
-+<U825A> /xe7/xdd <CJK>
-+<U825F> /xe7/xde <CJK>
-+<U8264> /xe7/xdf <CJK>
-+<U8262> /xe7/xe0 <CJK>
-+<U8268> /xe7/xe1 <CJK>
-+<U826A> /xe7/xe2 <CJK>
-+<U826B> /xe7/xe3 <CJK>
-+<U822E> /xe7/xe4 <CJK>
-+<U8271> /xe7/xe5 <CJK>
-+<U8277> /xe7/xe6 <CJK>
-+<U8278> /xe7/xe7 <CJK>
-+<U827E> /xe7/xe8 <CJK>
-+<U828D> /xe7/xe9 <CJK>
-+<U8292> /xe7/xea <CJK>
-+<U82AB> /xe7/xeb <CJK>
-+<U829F> /xe7/xec <CJK>
-+<U82BB> /xe7/xed <CJK>
-+<U82AC> /xe7/xee <CJK>
-+<U82E1> /xe7/xef <CJK>
-+<U82E3> /xe7/xf0 <CJK>
-+<U82DF> /xe7/xf1 <CJK>
-+<U82D2> /xe7/xf2 <CJK>
-+<U82F4> /xe7/xf3 <CJK>
-+<U82F3> /xe7/xf4 <CJK>
-+<U82FA> /xe7/xf5 <CJK>
-+<U8393> /xe7/xf6 <CJK>
-+<U8303> /xe7/xf7 <CJK>
-+<U82FB> /xe7/xf8 <CJK>
-+<U82F9> /xe7/xf9 <CJK>
-+<U82DE> /xe7/xfa <CJK>
-+<U8306> /xe7/xfb <CJK>
-+<U82DC> /xe7/xfc <CJK>
-+<U8309> /xe7/xfd <CJK>
-+<U82D9> /xe7/xfe <CJK>
-+<U8335> /xe8/xa1 <CJK>
-+<U8334> /xe8/xa2 <CJK>
-+<U8316> /xe8/xa3 <CJK>
-+<U8332> /xe8/xa4 <CJK>
-+<U8331> /xe8/xa5 <CJK>
-+<U8340> /xe8/xa6 <CJK>
-+<U8339> /xe8/xa7 <CJK>
-+<U8350> /xe8/xa8 <CJK>
-+<U8345> /xe8/xa9 <CJK>
-+<U832F> /xe8/xaa <CJK>
-+<U832B> /xe8/xab <CJK>
-+<U8317> /xe8/xac <CJK>
-+<U8318> /xe8/xad <CJK>
-+<U8385> /xe8/xae <CJK>
-+<U839A> /xe8/xaf <CJK>
-+<U83AA> /xe8/xb0 <CJK>
-+<U839F> /xe8/xb1 <CJK>
-+<U83A2> /xe8/xb2 <CJK>
-+<U8396> /xe8/xb3 <CJK>
-+<U8323> /xe8/xb4 <CJK>
-+<U838E> /xe8/xb5 <CJK>
-+<U8387> /xe8/xb6 <CJK>
-+<U838A> /xe8/xb7 <CJK>
-+<U837C> /xe8/xb8 <CJK>
-+<U83B5> /xe8/xb9 <CJK>
-+<U8373> /xe8/xba <CJK>
-+<U8375> /xe8/xbb <CJK>
-+<U83A0> /xe8/xbc <CJK>
-+<U8389> /xe8/xbd <CJK>
-+<U83A8> /xe8/xbe <CJK>
-+<U83F4> /xe8/xbf <CJK>
-+<U8413> /xe8/xc0 <CJK>
-+<U83EB> /xe8/xc1 <CJK>
-+<U83CE> /xe8/xc2 <CJK>
-+<U83FD> /xe8/xc3 <CJK>
-+<U8403> /xe8/xc4 <CJK>
-+<U83D8> /xe8/xc5 <CJK>
-+<U840B> /xe8/xc6 <CJK>
-+<U83C1> /xe8/xc7 <CJK>
-+<U83F7> /xe8/xc8 <CJK>
-+<U8407> /xe8/xc9 <CJK>
-+<U83E0> /xe8/xca <CJK>
-+<U83F2> /xe8/xcb <CJK>
-+<U840D> /xe8/xcc <CJK>
-+<U8422> /xe8/xcd <CJK>
-+<U8420> /xe8/xce <CJK>
-+<U83BD> /xe8/xcf <CJK>
-+<U8438> /xe8/xd0 <CJK>
-+<U8506> /xe8/xd1 <CJK>
-+<U83FB> /xe8/xd2 <CJK>
-+<U846D> /xe8/xd3 <CJK>
-+<U842A> /xe8/xd4 <CJK>
-+<U843C> /xe8/xd5 <CJK>
-+<U855A> /xe8/xd6 <CJK>
-+<U8484> /xe8/xd7 <CJK>
-+<U8477> /xe8/xd8 <CJK>
-+<U846B> /xe8/xd9 <CJK>
-+<U84AD> /xe8/xda <CJK>
-+<U846E> /xe8/xdb <CJK>
-+<U8482> /xe8/xdc <CJK>
-+<U8469> /xe8/xdd <CJK>
-+<U8446> /xe8/xde <CJK>
-+<U842C> /xe8/xdf <CJK>
-+<U846F> /xe8/xe0 <CJK>
-+<U8479> /xe8/xe1 <CJK>
-+<U8435> /xe8/xe2 <CJK>
-+<U84CA> /xe8/xe3 <CJK>
-+<U8462> /xe8/xe4 <CJK>
-+<U84B9> /xe8/xe5 <CJK>
-+<U84BF> /xe8/xe6 <CJK>
-+<U849F> /xe8/xe7 <CJK>
-+<U84D9> /xe8/xe8 <CJK>
-+<U84CD> /xe8/xe9 <CJK>
-+<U84BB> /xe8/xea <CJK>
-+<U84DA> /xe8/xeb <CJK>
-+<U84D0> /xe8/xec <CJK>
-+<U84C1> /xe8/xed <CJK>
-+<U84C6> /xe8/xee <CJK>
-+<U84D6> /xe8/xef <CJK>
-+<U84A1> /xe8/xf0 <CJK>
-+<U8521> /xe8/xf1 <CJK>
-+<U84FF> /xe8/xf2 <CJK>
-+<U84F4> /xe8/xf3 <CJK>
-+<U8517> /xe8/xf4 <CJK>
-+<U8518> /xe8/xf5 <CJK>
-+<U852C> /xe8/xf6 <CJK>
-+<U851F> /xe8/xf7 <CJK>
-+<U8515> /xe8/xf8 <CJK>
-+<U8514> /xe8/xf9 <CJK>
-+<U84FC> /xe8/xfa <CJK>
-+<U8540> /xe8/xfb <CJK>
-+<U8563> /xe8/xfc <CJK>
-+<U8558> /xe8/xfd <CJK>
-+<U8548> /xe8/xfe <CJK>
-+<U8541> /xe9/xa1 <CJK>
-+<U8602> /xe9/xa2 <CJK>
-+<U854B> /xe9/xa3 <CJK>
-+<U8555> /xe9/xa4 <CJK>
-+<U8580> /xe9/xa5 <CJK>
-+<U85A4> /xe9/xa6 <CJK>
-+<U8588> /xe9/xa7 <CJK>
-+<U8591> /xe9/xa8 <CJK>
-+<U858A> /xe9/xa9 <CJK>
-+<U85A8> /xe9/xaa <CJK>
-+<U856D> /xe9/xab <CJK>
-+<U8594> /xe9/xac <CJK>
-+<U859B> /xe9/xad <CJK>
-+<U85EA> /xe9/xae <CJK>
-+<U8587> /xe9/xaf <CJK>
-+<U859C> /xe9/xb0 <CJK>
-+<U8577> /xe9/xb1 <CJK>
-+<U857E> /xe9/xb2 <CJK>
-+<U8590> /xe9/xb3 <CJK>
-+<U85C9> /xe9/xb4 <CJK>
-+<U85BA> /xe9/xb5 <CJK>
-+<U85CF> /xe9/xb6 <CJK>
-+<U85B9> /xe9/xb7 <CJK>
-+<U85D0> /xe9/xb8 <CJK>
-+<U85D5> /xe9/xb9 <CJK>
-+<U85DD> /xe9/xba <CJK>
-+<U85E5> /xe9/xbb <CJK>
-+<U85DC> /xe9/xbc <CJK>
-+<U85F9> /xe9/xbd <CJK>
-+<U860A> /xe9/xbe <CJK>
-+<U8613> /xe9/xbf <CJK>
-+<U860B> /xe9/xc0 <CJK>
-+<U85FE> /xe9/xc1 <CJK>
-+<U85FA> /xe9/xc2 <CJK>
-+<U8606> /xe9/xc3 <CJK>
-+<U8622> /xe9/xc4 <CJK>
-+<U861A> /xe9/xc5 <CJK>
-+<U8630> /xe9/xc6 <CJK>
-+<U863F> /xe9/xc7 <CJK>
-+<U864D> /xe9/xc8 <CJK>
-+<U4E55> /xe9/xc9 <CJK>
-+<U8654> /xe9/xca <CJK>
-+<U865F> /xe9/xcb <CJK>
-+<U8667> /xe9/xcc <CJK>
-+<U8671> /xe9/xcd <CJK>
-+<U8693> /xe9/xce <CJK>
-+<U86A3> /xe9/xcf <CJK>
-+<U86A9> /xe9/xd0 <CJK>
-+<U86AA> /xe9/xd1 <CJK>
-+<U868B> /xe9/xd2 <CJK>
-+<U868C> /xe9/xd3 <CJK>
-+<U86B6> /xe9/xd4 <CJK>
-+<U86AF> /xe9/xd5 <CJK>
-+<U86C4> /xe9/xd6 <CJK>
-+<U86C6> /xe9/xd7 <CJK>
-+<U86B0> /xe9/xd8 <CJK>
-+<U86C9> /xe9/xd9 <CJK>
-+<U8823> /xe9/xda <CJK>
-+<U86AB> /xe9/xdb <CJK>
-+<U86D4> /xe9/xdc <CJK>
-+<U86DE> /xe9/xdd <CJK>
-+<U86E9> /xe9/xde <CJK>
-+<U86EC> /xe9/xdf <CJK>
-+<U86DF> /xe9/xe0 <CJK>
-+<U86DB> /xe9/xe1 <CJK>
-+<U86EF> /xe9/xe2 <CJK>
-+<U8712> /xe9/xe3 <CJK>
-+<U8706> /xe9/xe4 <CJK>
-+<U8708> /xe9/xe5 <CJK>
-+<U8700> /xe9/xe6 <CJK>
-+<U8703> /xe9/xe7 <CJK>
-+<U86FB> /xe9/xe8 <CJK>
-+<U8711> /xe9/xe9 <CJK>
-+<U8709> /xe9/xea <CJK>
-+<U870D> /xe9/xeb <CJK>
-+<U86F9> /xe9/xec <CJK>
-+<U870A> /xe9/xed <CJK>
-+<U8734> /xe9/xee <CJK>
-+<U873F> /xe9/xef <CJK>
-+<U8737> /xe9/xf0 <CJK>
-+<U873B> /xe9/xf1 <CJK>
-+<U8725> /xe9/xf2 <CJK>
-+<U8729> /xe9/xf3 <CJK>
-+<U871A> /xe9/xf4 <CJK>
-+<U8760> /xe9/xf5 <CJK>
-+<U875F> /xe9/xf6 <CJK>
-+<U8778> /xe9/xf7 <CJK>
-+<U874C> /xe9/xf8 <CJK>
-+<U874E> /xe9/xf9 <CJK>
-+<U8774> /xe9/xfa <CJK>
-+<U8757> /xe9/xfb <CJK>
-+<U8768> /xe9/xfc <CJK>
-+<U876E> /xe9/xfd <CJK>
-+<U8759> /xe9/xfe <CJK>
-+<U8753> /xea/xa1 <CJK>
-+<U8763> /xea/xa2 <CJK>
-+<U876A> /xea/xa3 <CJK>
-+<U8805> /xea/xa4 <CJK>
-+<U87A2> /xea/xa5 <CJK>
-+<U879F> /xea/xa6 <CJK>
-+<U8782> /xea/xa7 <CJK>
-+<U87AF> /xea/xa8 <CJK>
-+<U87CB> /xea/xa9 <CJK>
-+<U87BD> /xea/xaa <CJK>
-+<U87C0> /xea/xab <CJK>
-+<U87D0> /xea/xac <CJK>
-+<U96D6> /xea/xad <CJK>
-+<U87AB> /xea/xae <CJK>
-+<U87C4> /xea/xaf <CJK>
-+<U87B3> /xea/xb0 <CJK>
-+<U87C7> /xea/xb1 <CJK>
-+<U87C6> /xea/xb2 <CJK>
-+<U87BB> /xea/xb3 <CJK>
-+<U87EF> /xea/xb4 <CJK>
-+<U87F2> /xea/xb5 <CJK>
-+<U87E0> /xea/xb6 <CJK>
-+<U880F> /xea/xb7 <CJK>
-+<U880D> /xea/xb8 <CJK>
-+<U87FE> /xea/xb9 <CJK>
-+<U87F6> /xea/xba <CJK>
-+<U87F7> /xea/xbb <CJK>
-+<U880E> /xea/xbc <CJK>
-+<U87D2> /xea/xbd <CJK>
-+<U8811> /xea/xbe <CJK>
-+<U8816> /xea/xbf <CJK>
-+<U8815> /xea/xc0 <CJK>
-+<U8822> /xea/xc1 <CJK>
-+<U8821> /xea/xc2 <CJK>
-+<U8831> /xea/xc3 <CJK>
-+<U8836> /xea/xc4 <CJK>
-+<U8839> /xea/xc5 <CJK>
-+<U8827> /xea/xc6 <CJK>
-+<U883B> /xea/xc7 <CJK>
-+<U8844> /xea/xc8 <CJK>
-+<U8842> /xea/xc9 <CJK>
-+<U8852> /xea/xca <CJK>
-+<U8859> /xea/xcb <CJK>
-+<U885E> /xea/xcc <CJK>
-+<U8862> /xea/xcd <CJK>
-+<U886B> /xea/xce <CJK>
-+<U8881> /xea/xcf <CJK>
-+<U887E> /xea/xd0 <CJK>
-+<U889E> /xea/xd1 <CJK>
-+<U8875> /xea/xd2 <CJK>
-+<U887D> /xea/xd3 <CJK>
-+<U88B5> /xea/xd4 <CJK>
-+<U8872> /xea/xd5 <CJK>
-+<U8882> /xea/xd6 <CJK>
-+<U8897> /xea/xd7 <CJK>
-+<U8892> /xea/xd8 <CJK>
-+<U88AE> /xea/xd9 <CJK>
-+<U8899> /xea/xda <CJK>
-+<U88A2> /xea/xdb <CJK>
-+<U888D> /xea/xdc <CJK>
-+<U88A4> /xea/xdd <CJK>
-+<U88B0> /xea/xde <CJK>
-+<U88BF> /xea/xdf <CJK>
-+<U88B1> /xea/xe0 <CJK>
-+<U88C3> /xea/xe1 <CJK>
-+<U88C4> /xea/xe2 <CJK>
-+<U88D4> /xea/xe3 <CJK>
-+<U88D8> /xea/xe4 <CJK>
-+<U88D9> /xea/xe5 <CJK>
-+<U88DD> /xea/xe6 <CJK>
-+<U88F9> /xea/xe7 <CJK>
-+<U8902> /xea/xe8 <CJK>
-+<U88FC> /xea/xe9 <CJK>
-+<U88F4> /xea/xea <CJK>
-+<U88E8> /xea/xeb <CJK>
-+<U88F2> /xea/xec <CJK>
-+<U8904> /xea/xed <CJK>
-+<U890C> /xea/xee <CJK>
-+<U890A> /xea/xef <CJK>
-+<U8913> /xea/xf0 <CJK>
-+<U8943> /xea/xf1 <CJK>
-+<U891E> /xea/xf2 <CJK>
-+<U8925> /xea/xf3 <CJK>
-+<U892A> /xea/xf4 <CJK>
-+<U892B> /xea/xf5 <CJK>
-+<U8941> /xea/xf6 <CJK>
-+<U8944> /xea/xf7 <CJK>
-+<U893B> /xea/xf8 <CJK>
-+<U8936> /xea/xf9 <CJK>
-+<U8938> /xea/xfa <CJK>
-+<U894C> /xea/xfb <CJK>
-+<U891D> /xea/xfc <CJK>
-+<U8960> /xea/xfd <CJK>
-+<U895E> /xea/xfe <CJK>
-+<U8966> /xeb/xa1 <CJK>
-+<U8964> /xeb/xa2 <CJK>
-+<U896D> /xeb/xa3 <CJK>
-+<U896A> /xeb/xa4 <CJK>
-+<U896F> /xeb/xa5 <CJK>
-+<U8974> /xeb/xa6 <CJK>
-+<U8977> /xeb/xa7 <CJK>
-+<U897E> /xeb/xa8 <CJK>
-+<U8983> /xeb/xa9 <CJK>
-+<U8988> /xeb/xaa <CJK>
-+<U898A> /xeb/xab <CJK>
-+<U8993> /xeb/xac <CJK>
-+<U8998> /xeb/xad <CJK>
-+<U89A1> /xeb/xae <CJK>
-+<U89A9> /xeb/xaf <CJK>
-+<U89A6> /xeb/xb0 <CJK>
-+<U89AC> /xeb/xb1 <CJK>
-+<U89AF> /xeb/xb2 <CJK>
-+<U89B2> /xeb/xb3 <CJK>
-+<U89BA> /xeb/xb4 <CJK>
-+<U89BD> /xeb/xb5 <CJK>
-+<U89BF> /xeb/xb6 <CJK>
-+<U89C0> /xeb/xb7 <CJK>
-+<U89DA> /xeb/xb8 <CJK>
-+<U89DC> /xeb/xb9 <CJK>
-+<U89DD> /xeb/xba <CJK>
-+<U89E7> /xeb/xbb <CJK>
-+<U89F4> /xeb/xbc <CJK>
-+<U89F8> /xeb/xbd <CJK>
-+<U8A03> /xeb/xbe <CJK>
-+<U8A16> /xeb/xbf <CJK>
-+<U8A10> /xeb/xc0 <CJK>
-+<U8A0C> /xeb/xc1 <CJK>
-+<U8A1B> /xeb/xc2 <CJK>
-+<U8A1D> /xeb/xc3 <CJK>
-+<U8A25> /xeb/xc4 <CJK>
-+<U8A36> /xeb/xc5 <CJK>
-+<U8A41> /xeb/xc6 <CJK>
-+<U8A5B> /xeb/xc7 <CJK>
-+<U8A52> /xeb/xc8 <CJK>
-+<U8A46> /xeb/xc9 <CJK>
-+<U8A48> /xeb/xca <CJK>
-+<U8A7C> /xeb/xcb <CJK>
-+<U8A6D> /xeb/xcc <CJK>
-+<U8A6C> /xeb/xcd <CJK>
-+<U8A62> /xeb/xce <CJK>
-+<U8A85> /xeb/xcf <CJK>
-+<U8A82> /xeb/xd0 <CJK>
-+<U8A84> /xeb/xd1 <CJK>
-+<U8AA8> /xeb/xd2 <CJK>
-+<U8AA1> /xeb/xd3 <CJK>
-+<U8A91> /xeb/xd4 <CJK>
-+<U8AA5> /xeb/xd5 <CJK>
-+<U8AA6> /xeb/xd6 <CJK>
-+<U8A9A> /xeb/xd7 <CJK>
-+<U8AA3> /xeb/xd8 <CJK>
-+<U8AC4> /xeb/xd9 <CJK>
-+<U8ACD> /xeb/xda <CJK>
-+<U8AC2> /xeb/xdb <CJK>
-+<U8ADA> /xeb/xdc <CJK>
-+<U8AEB> /xeb/xdd <CJK>
-+<U8AF3> /xeb/xde <CJK>
-+<U8AE7> /xeb/xdf <CJK>
-+<U8AE4> /xeb/xe0 <CJK>
-+<U8AF1> /xeb/xe1 <CJK>
-+<U8B14> /xeb/xe2 <CJK>
-+<U8AE0> /xeb/xe3 <CJK>
-+<U8AE2> /xeb/xe4 <CJK>
-+<U8AF7> /xeb/xe5 <CJK>
-+<U8ADE> /xeb/xe6 <CJK>
-+<U8ADB> /xeb/xe7 <CJK>
-+<U8B0C> /xeb/xe8 <CJK>
-+<U8B07> /xeb/xe9 <CJK>
-+<U8B1A> /xeb/xea <CJK>
-+<U8AE1> /xeb/xeb <CJK>
-+<U8B16> /xeb/xec <CJK>
-+<U8B10> /xeb/xed <CJK>
-+<U8B17> /xeb/xee <CJK>
-+<U8B20> /xeb/xef <CJK>
-+<U8B33> /xeb/xf0 <CJK>
-+<U97AB> /xeb/xf1 <CJK>
-+<U8B26> /xeb/xf2 <CJK>
-+<U8B2B> /xeb/xf3 <CJK>
-+<U8B3E> /xeb/xf4 <CJK>
-+<U8B28> /xeb/xf5 <CJK>
-+<U8B41> /xeb/xf6 <CJK>
-+<U8B4C> /xeb/xf7 <CJK>
-+<U8B4F> /xeb/xf8 <CJK>
-+<U8B4E> /xeb/xf9 <CJK>
-+<U8B49> /xeb/xfa <CJK>
-+<U8B56> /xeb/xfb <CJK>
-+<U8B5B> /xeb/xfc <CJK>
-+<U8B5A> /xeb/xfd <CJK>
-+<U8B6B> /xeb/xfe <CJK>
-+<U8B5F> /xec/xa1 <CJK>
-+<U8B6C> /xec/xa2 <CJK>
-+<U8B6F> /xec/xa3 <CJK>
-+<U8B74> /xec/xa4 <CJK>
-+<U8B7D> /xec/xa5 <CJK>
-+<U8B80> /xec/xa6 <CJK>
-+<U8B8C> /xec/xa7 <CJK>
-+<U8B8E> /xec/xa8 <CJK>
-+<U8B92> /xec/xa9 <CJK>
-+<U8B93> /xec/xaa <CJK>
-+<U8B96> /xec/xab <CJK>
-+<U8B99> /xec/xac <CJK>
-+<U8B9A> /xec/xad <CJK>
-+<U8C3A> /xec/xae <CJK>
-+<U8C41> /xec/xaf <CJK>
-+<U8C3F> /xec/xb0 <CJK>
-+<U8C48> /xec/xb1 <CJK>
-+<U8C4C> /xec/xb2 <CJK>
-+<U8C4E> /xec/xb3 <CJK>
-+<U8C50> /xec/xb4 <CJK>
-+<U8C55> /xec/xb5 <CJK>
-+<U8C62> /xec/xb6 <CJK>
-+<U8C6C> /xec/xb7 <CJK>
-+<U8C78> /xec/xb8 <CJK>
-+<U8C7A> /xec/xb9 <CJK>
-+<U8C82> /xec/xba <CJK>
-+<U8C89> /xec/xbb <CJK>
-+<U8C85> /xec/xbc <CJK>
-+<U8C8A> /xec/xbd <CJK>
-+<U8C8D> /xec/xbe <CJK>
-+<U8C8E> /xec/xbf <CJK>
-+<U8C94> /xec/xc0 <CJK>
-+<U8C7C> /xec/xc1 <CJK>
-+<U8C98> /xec/xc2 <CJK>
-+<U621D> /xec/xc3 <CJK>
-+<U8CAD> /xec/xc4 <CJK>
-+<U8CAA> /xec/xc5 <CJK>
-+<U8CBD> /xec/xc6 <CJK>
-+<U8CB2> /xec/xc7 <CJK>
-+<U8CB3> /xec/xc8 <CJK>
-+<U8CAE> /xec/xc9 <CJK>
-+<U8CB6> /xec/xca <CJK>
-+<U8CC8> /xec/xcb <CJK>
-+<U8CC1> /xec/xcc <CJK>
-+<U8CE4> /xec/xcd <CJK>
-+<U8CE3> /xec/xce <CJK>
-+<U8CDA> /xec/xcf <CJK>
-+<U8CFD> /xec/xd0 <CJK>
-+<U8CFA> /xec/xd1 <CJK>
-+<U8CFB> /xec/xd2 <CJK>
-+<U8D04> /xec/xd3 <CJK>
-+<U8D05> /xec/xd4 <CJK>
-+<U8D0A> /xec/xd5 <CJK>
-+<U8D07> /xec/xd6 <CJK>
-+<U8D0F> /xec/xd7 <CJK>
-+<U8D0D> /xec/xd8 <CJK>
-+<U8D10> /xec/xd9 <CJK>
-+<U9F4E> /xec/xda <CJK>
-+<U8D13> /xec/xdb <CJK>
-+<U8CCD> /xec/xdc <CJK>
-+<U8D14> /xec/xdd <CJK>
-+<U8D16> /xec/xde <CJK>
-+<U8D67> /xec/xdf <CJK>
-+<U8D6D> /xec/xe0 <CJK>
-+<U8D71> /xec/xe1 <CJK>
-+<U8D73> /xec/xe2 <CJK>
-+<U8D81> /xec/xe3 <CJK>
-+<U8D99> /xec/xe4 <CJK>
-+<U8DC2> /xec/xe5 <CJK>
-+<U8DBE> /xec/xe6 <CJK>
-+<U8DBA> /xec/xe7 <CJK>
-+<U8DCF> /xec/xe8 <CJK>
-+<U8DDA> /xec/xe9 <CJK>
-+<U8DD6> /xec/xea <CJK>
-+<U8DCC> /xec/xeb <CJK>
-+<U8DDB> /xec/xec <CJK>
-+<U8DCB> /xec/xed <CJK>
-+<U8DEA> /xec/xee <CJK>
-+<U8DEB> /xec/xef <CJK>
-+<U8DDF> /xec/xf0 <CJK>
-+<U8DE3> /xec/xf1 <CJK>
-+<U8DFC> /xec/xf2 <CJK>
-+<U8E08> /xec/xf3 <CJK>
-+<U8E09> /xec/xf4 <CJK>
-+<U8DFF> /xec/xf5 <CJK>
-+<U8E1D> /xec/xf6 <CJK>
-+<U8E1E> /xec/xf7 <CJK>
-+<U8E10> /xec/xf8 <CJK>
-+<U8E1F> /xec/xf9 <CJK>
-+<U8E42> /xec/xfa <CJK>
-+<U8E35> /xec/xfb <CJK>
-+<U8E30> /xec/xfc <CJK>
-+<U8E34> /xec/xfd <CJK>
-+<U8E4A> /xec/xfe <CJK>
-+<U8E47> /xed/xa1 <CJK>
-+<U8E49> /xed/xa2 <CJK>
-+<U8E4C> /xed/xa3 <CJK>
-+<U8E50> /xed/xa4 <CJK>
-+<U8E48> /xed/xa5 <CJK>
-+<U8E59> /xed/xa6 <CJK>
-+<U8E64> /xed/xa7 <CJK>
-+<U8E60> /xed/xa8 <CJK>
-+<U8E2A> /xed/xa9 <CJK>
-+<U8E63> /xed/xaa <CJK>
-+<U8E55> /xed/xab <CJK>
-+<U8E76> /xed/xac <CJK>
-+<U8E72> /xed/xad <CJK>
-+<U8E7C> /xed/xae <CJK>
-+<U8E81> /xed/xaf <CJK>
-+<U8E87> /xed/xb0 <CJK>
-+<U8E85> /xed/xb1 <CJK>
-+<U8E84> /xed/xb2 <CJK>
-+<U8E8B> /xed/xb3 <CJK>
-+<U8E8A> /xed/xb4 <CJK>
-+<U8E93> /xed/xb5 <CJK>
-+<U8E91> /xed/xb6 <CJK>
-+<U8E94> /xed/xb7 <CJK>
-+<U8E99> /xed/xb8 <CJK>
-+<U8EAA> /xed/xb9 <CJK>
-+<U8EA1> /xed/xba <CJK>
-+<U8EAC> /xed/xbb <CJK>
-+<U8EB0> /xed/xbc <CJK>
-+<U8EC6> /xed/xbd <CJK>
-+<U8EB1> /xed/xbe <CJK>
-+<U8EBE> /xed/xbf <CJK>
-+<U8EC5> /xed/xc0 <CJK>
-+<U8EC8> /xed/xc1 <CJK>
-+<U8ECB> /xed/xc2 <CJK>
-+<U8EDB> /xed/xc3 <CJK>
-+<U8EE3> /xed/xc4 <CJK>
-+<U8EFC> /xed/xc5 <CJK>
-+<U8EFB> /xed/xc6 <CJK>
-+<U8EEB> /xed/xc7 <CJK>
-+<U8EFE> /xed/xc8 <CJK>
-+<U8F0A> /xed/xc9 <CJK>
-+<U8F05> /xed/xca <CJK>
-+<U8F15> /xed/xcb <CJK>
-+<U8F12> /xed/xcc <CJK>
-+<U8F19> /xed/xcd <CJK>
-+<U8F13> /xed/xce <CJK>
-+<U8F1C> /xed/xcf <CJK>
-+<U8F1F> /xed/xd0 <CJK>
-+<U8F1B> /xed/xd1 <CJK>
-+<U8F0C> /xed/xd2 <CJK>
-+<U8F26> /xed/xd3 <CJK>
-+<U8F33> /xed/xd4 <CJK>
-+<U8F3B> /xed/xd5 <CJK>
-+<U8F39> /xed/xd6 <CJK>
-+<U8F45> /xed/xd7 <CJK>
-+<U8F42> /xed/xd8 <CJK>
-+<U8F3E> /xed/xd9 <CJK>
-+<U8F4C> /xed/xda <CJK>
-+<U8F49> /xed/xdb <CJK>
-+<U8F46> /xed/xdc <CJK>
-+<U8F4E> /xed/xdd <CJK>
-+<U8F57> /xed/xde <CJK>
-+<U8F5C> /xed/xdf <CJK>
-+<U8F62> /xed/xe0 <CJK>
-+<U8F63> /xed/xe1 <CJK>
-+<U8F64> /xed/xe2 <CJK>
-+<U8F9C> /xed/xe3 <CJK>
-+<U8F9F> /xed/xe4 <CJK>
-+<U8FA3> /xed/xe5 <CJK>
-+<U8FAD> /xed/xe6 <CJK>
-+<U8FAF> /xed/xe7 <CJK>
-+<U8FB7> /xed/xe8 <CJK>
-+<U8FDA> /xed/xe9 <CJK>
-+<U8FE5> /xed/xea <CJK>
-+<U8FE2> /xed/xeb <CJK>
-+<U8FEA> /xed/xec <CJK>
-+<U8FEF> /xed/xed <CJK>
-+<U9087> /xed/xee <CJK>
-+<U8FF4> /xed/xef <CJK>
-+<U9005> /xed/xf0 <CJK>
-+<U8FF9> /xed/xf1 <CJK>
-+<U8FFA> /xed/xf2 <CJK>
-+<U9011> /xed/xf3 <CJK>
-+<U9015> /xed/xf4 <CJK>
-+<U9021> /xed/xf5 <CJK>
-+<U900D> /xed/xf6 <CJK>
-+<U901E> /xed/xf7 <CJK>
-+<U9016> /xed/xf8 <CJK>
-+<U900B> /xed/xf9 <CJK>
-+<U9027> /xed/xfa <CJK>
-+<U9036> /xed/xfb <CJK>
-+<U9035> /xed/xfc <CJK>
-+<U9039> /xed/xfd <CJK>
-+<U8FF8> /xed/xfe <CJK>
-+<U904F> /xee/xa1 <CJK>
-+<U9050> /xee/xa2 <CJK>
-+<U9051> /xee/xa3 <CJK>
-+<U9052> /xee/xa4 <CJK>
-+<U900E> /xee/xa5 <CJK>
-+<U9049> /xee/xa6 <CJK>
-+<U903E> /xee/xa7 <CJK>
-+<U9056> /xee/xa8 <CJK>
-+<U9058> /xee/xa9 <CJK>
-+<U905E> /xee/xaa <CJK>
-+<U9068> /xee/xab <CJK>
-+<U906F> /xee/xac <CJK>
-+<U9076> /xee/xad <CJK>
-+<U96A8> /xee/xae <CJK>
-+<U9072> /xee/xaf <CJK>
-+<U9082> /xee/xb0 <CJK>
-+<U907D> /xee/xb1 <CJK>
-+<U9081> /xee/xb2 <CJK>
-+<U9080> /xee/xb3 <CJK>
-+<U908A> /xee/xb4 <CJK>
-+<U9089> /xee/xb5 <CJK>
-+<U908F> /xee/xb6 <CJK>
-+<U90A8> /xee/xb7 <CJK>
-+<U90AF> /xee/xb8 <CJK>
-+<U90B1> /xee/xb9 <CJK>
-+<U90B5> /xee/xba <CJK>
-+<U90E2> /xee/xbb <CJK>
-+<U90E4> /xee/xbc <CJK>
-+<U6248> /xee/xbd <CJK>
-+<U90DB> /xee/xbe <CJK>
-+<U9102> /xee/xbf <CJK>
-+<U9112> /xee/xc0 <CJK>
-+<U9119> /xee/xc1 <CJK>
-+<U9132> /xee/xc2 <CJK>
-+<U9130> /xee/xc3 <CJK>
-+<U914A> /xee/xc4 <CJK>
-+<U9156> /xee/xc5 <CJK>
-+<U9158> /xee/xc6 <CJK>
-+<U9163> /xee/xc7 <CJK>
-+<U9165> /xee/xc8 <CJK>
-+<U9169> /xee/xc9 <CJK>
-+<U9173> /xee/xca <CJK>
-+<U9172> /xee/xcb <CJK>
-+<U918B> /xee/xcc <CJK>
-+<U9189> /xee/xcd <CJK>
-+<U9182> /xee/xce <CJK>
-+<U91A2> /xee/xcf <CJK>
-+<U91AB> /xee/xd0 <CJK>
-+<U91AF> /xee/xd1 <CJK>
-+<U91AA> /xee/xd2 <CJK>
-+<U91B5> /xee/xd3 <CJK>
-+<U91B4> /xee/xd4 <CJK>
-+<U91BA> /xee/xd5 <CJK>
-+<U91C0> /xee/xd6 <CJK>
-+<U91C1> /xee/xd7 <CJK>
-+<U91C9> /xee/xd8 <CJK>
-+<U91CB> /xee/xd9 <CJK>
-+<U91D0> /xee/xda <CJK>
-+<U91D6> /xee/xdb <CJK>
-+<U91DF> /xee/xdc <CJK>
-+<U91E1> /xee/xdd <CJK>
-+<U91DB> /xee/xde <CJK>
-+<U91FC> /xee/xdf <CJK>
-+<U91F5> /xee/xe0 <CJK>
-+<U91F6> /xee/xe1 <CJK>
-+<U921E> /xee/xe2 <CJK>
-+<U91FF> /xee/xe3 <CJK>
-+<U9214> /xee/xe4 <CJK>
-+<U922C> /xee/xe5 <CJK>
-+<U9215> /xee/xe6 <CJK>
-+<U9211> /xee/xe7 <CJK>
-+<U925E> /xee/xe8 <CJK>
-+<U9257> /xee/xe9 <CJK>
-+<U9245> /xee/xea <CJK>
-+<U9249> /xee/xeb <CJK>
-+<U9264> /xee/xec <CJK>
-+<U9248> /xee/xed <CJK>
-+<U9295> /xee/xee <CJK>
-+<U923F> /xee/xef <CJK>
-+<U924B> /xee/xf0 <CJK>
-+<U9250> /xee/xf1 <CJK>
-+<U929C> /xee/xf2 <CJK>
-+<U9296> /xee/xf3 <CJK>
-+<U9293> /xee/xf4 <CJK>
-+<U929B> /xee/xf5 <CJK>
-+<U925A> /xee/xf6 <CJK>
-+<U92CF> /xee/xf7 <CJK>
-+<U92B9> /xee/xf8 <CJK>
-+<U92B7> /xee/xf9 <CJK>
-+<U92E9> /xee/xfa <CJK>
-+<U930F> /xee/xfb <CJK>
-+<U92FA> /xee/xfc <CJK>
-+<U9344> /xee/xfd <CJK>
-+<U932E> /xee/xfe <CJK>
-+<U9319> /xef/xa1 <CJK>
-+<U9322> /xef/xa2 <CJK>
-+<U931A> /xef/xa3 <CJK>
-+<U9323> /xef/xa4 <CJK>
-+<U933A> /xef/xa5 <CJK>
-+<U9335> /xef/xa6 <CJK>
-+<U933B> /xef/xa7 <CJK>
-+<U935C> /xef/xa8 <CJK>
-+<U9360> /xef/xa9 <CJK>
-+<U937C> /xef/xaa <CJK>
-+<U936E> /xef/xab <CJK>
-+<U9356> /xef/xac <CJK>
-+<U93B0> /xef/xad <CJK>
-+<U93AC> /xef/xae <CJK>
-+<U93AD> /xef/xaf <CJK>
-+<U9394> /xef/xb0 <CJK>
-+<U93B9> /xef/xb1 <CJK>
-+<U93D6> /xef/xb2 <CJK>
-+<U93D7> /xef/xb3 <CJK>
-+<U93E8> /xef/xb4 <CJK>
-+<U93E5> /xef/xb5 <CJK>
-+<U93D8> /xef/xb6 <CJK>
-+<U93C3> /xef/xb7 <CJK>
-+<U93DD> /xef/xb8 <CJK>
-+<U93D0> /xef/xb9 <CJK>
-+<U93C8> /xef/xba <CJK>
-+<U93E4> /xef/xbb <CJK>
-+<U941A> /xef/xbc <CJK>
-+<U9414> /xef/xbd <CJK>
-+<U9413> /xef/xbe <CJK>
-+<U9403> /xef/xbf <CJK>
-+<U9407> /xef/xc0 <CJK>
-+<U9410> /xef/xc1 <CJK>
-+<U9436> /xef/xc2 <CJK>
-+<U942B> /xef/xc3 <CJK>
-+<U9435> /xef/xc4 <CJK>
-+<U9421> /xef/xc5 <CJK>
-+<U943A> /xef/xc6 <CJK>
-+<U9441> /xef/xc7 <CJK>
-+<U9452> /xef/xc8 <CJK>
-+<U9444> /xef/xc9 <CJK>
-+<U945B> /xef/xca <CJK>
-+<U9460> /xef/xcb <CJK>
-+<U9462> /xef/xcc <CJK>
-+<U945E> /xef/xcd <CJK>
-+<U946A> /xef/xce <CJK>
-+<U9229> /xef/xcf <CJK>
-+<U9470> /xef/xd0 <CJK>
-+<U9475> /xef/xd1 <CJK>
-+<U9477> /xef/xd2 <CJK>
-+<U947D> /xef/xd3 <CJK>
-+<U945A> /xef/xd4 <CJK>
-+<U947C> /xef/xd5 <CJK>
-+<U947E> /xef/xd6 <CJK>
-+<U9481> /xef/xd7 <CJK>
-+<U947F> /xef/xd8 <CJK>
-+<U9582> /xef/xd9 <CJK>
-+<U9587> /xef/xda <CJK>
-+<U958A> /xef/xdb <CJK>
-+<U9594> /xef/xdc <CJK>
-+<U9596> /xef/xdd <CJK>
-+<U9598> /xef/xde <CJK>
-+<U9599> /xef/xdf <CJK>
-+<U95A0> /xef/xe0 <CJK>
-+<U95A8> /xef/xe1 <CJK>
-+<U95A7> /xef/xe2 <CJK>
-+<U95AD> /xef/xe3 <CJK>
-+<U95BC> /xef/xe4 <CJK>
-+<U95BB> /xef/xe5 <CJK>
-+<U95B9> /xef/xe6 <CJK>
-+<U95BE> /xef/xe7 <CJK>
-+<U95CA> /xef/xe8 <CJK>
-+<U6FF6> /xef/xe9 <CJK>
-+<U95C3> /xef/xea <CJK>
-+<U95CD> /xef/xeb <CJK>
-+<U95CC> /xef/xec <CJK>
-+<U95D5> /xef/xed <CJK>
-+<U95D4> /xef/xee <CJK>
-+<U95D6> /xef/xef <CJK>
-+<U95DC> /xef/xf0 <CJK>
-+<U95E1> /xef/xf1 <CJK>
-+<U95E5> /xef/xf2 <CJK>
-+<U95E2> /xef/xf3 <CJK>
-+<U9621> /xef/xf4 <CJK>
-+<U9628> /xef/xf5 <CJK>
-+<U962E> /xef/xf6 <CJK>
-+<U962F> /xef/xf7 <CJK>
-+<U9642> /xef/xf8 <CJK>
-+<U964C> /xef/xf9 <CJK>
-+<U964F> /xef/xfa <CJK>
-+<U964B> /xef/xfb <CJK>
-+<U9677> /xef/xfc <CJK>
-+<U965C> /xef/xfd <CJK>
-+<U965E> /xef/xfe <CJK>
-+<U965D> /xf0/xa1 <CJK>
-+<U965F> /xf0/xa2 <CJK>
-+<U9666> /xf0/xa3 <CJK>
-+<U9672> /xf0/xa4 <CJK>
-+<U966C> /xf0/xa5 <CJK>
-+<U968D> /xf0/xa6 <CJK>
-+<U9698> /xf0/xa7 <CJK>
-+<U9695> /xf0/xa8 <CJK>
-+<U9697> /xf0/xa9 <CJK>
-+<U96AA> /xf0/xaa <CJK>
-+<U96A7> /xf0/xab <CJK>
-+<U96B1> /xf0/xac <CJK>
-+<U96B2> /xf0/xad <CJK>
-+<U96B0> /xf0/xae <CJK>
-+<U96B4> /xf0/xaf <CJK>
-+<U96B6> /xf0/xb0 <CJK>
-+<U96B8> /xf0/xb1 <CJK>
-+<U96B9> /xf0/xb2 <CJK>
-+<U96CE> /xf0/xb3 <CJK>
-+<U96CB> /xf0/xb4 <CJK>
-+<U96C9> /xf0/xb5 <CJK>
-+<U96CD> /xf0/xb6 <CJK>
-+<U894D> /xf0/xb7 <CJK>
-+<U96DC> /xf0/xb8 <CJK>
-+<U970D> /xf0/xb9 <CJK>
-+<U96D5> /xf0/xba <CJK>
-+<U96F9> /xf0/xbb <CJK>
-+<U9704> /xf0/xbc <CJK>
-+<U9706> /xf0/xbd <CJK>
-+<U9708> /xf0/xbe <CJK>
-+<U9713> /xf0/xbf <CJK>
-+<U970E> /xf0/xc0 <CJK>
-+<U9711> /xf0/xc1 <CJK>
-+<U970F> /xf0/xc2 <CJK>
-+<U9716> /xf0/xc3 <CJK>
-+<U9719> /xf0/xc4 <CJK>
-+<U9724> /xf0/xc5 <CJK>
-+<U972A> /xf0/xc6 <CJK>
-+<U9730> /xf0/xc7 <CJK>
-+<U9739> /xf0/xc8 <CJK>
-+<U973D> /xf0/xc9 <CJK>
-+<U973E> /xf0/xca <CJK>
-+<U9744> /xf0/xcb <CJK>
-+<U9746> /xf0/xcc <CJK>
-+<U9748> /xf0/xcd <CJK>
-+<U9742> /xf0/xce <CJK>
-+<U9749> /xf0/xcf <CJK>
-+<U975C> /xf0/xd0 <CJK>
-+<U9760> /xf0/xd1 <CJK>
-+<U9764> /xf0/xd2 <CJK>
-+<U9766> /xf0/xd3 <CJK>
-+<U9768> /xf0/xd4 <CJK>
-+<U52D2> /xf0/xd5 <CJK>
-+<U976B> /xf0/xd6 <CJK>
-+<U9771> /xf0/xd7 <CJK>
-+<U9779> /xf0/xd8 <CJK>
-+<U9785> /xf0/xd9 <CJK>
-+<U977C> /xf0/xda <CJK>
-+<U9781> /xf0/xdb <CJK>
-+<U977A> /xf0/xdc <CJK>
-+<U9786> /xf0/xdd <CJK>
-+<U978B> /xf0/xde <CJK>
-+<U978F> /xf0/xdf <CJK>
-+<U9790> /xf0/xe0 <CJK>
-+<U979C> /xf0/xe1 <CJK>
-+<U97A8> /xf0/xe2 <CJK>
-+<U97A6> /xf0/xe3 <CJK>
-+<U97A3> /xf0/xe4 <CJK>
-+<U97B3> /xf0/xe5 <CJK>
-+<U97B4> /xf0/xe6 <CJK>
-+<U97C3> /xf0/xe7 <CJK>
-+<U97C6> /xf0/xe8 <CJK>
-+<U97C8> /xf0/xe9 <CJK>
-+<U97CB> /xf0/xea <CJK>
-+<U97DC> /xf0/xeb <CJK>
-+<U97ED> /xf0/xec <CJK>
-+<U9F4F> /xf0/xed <CJK>
-+<U97F2> /xf0/xee <CJK>
-+<U7ADF> /xf0/xef <CJK>
-+<U97F6> /xf0/xf0 <CJK>
-+<U97F5> /xf0/xf1 <CJK>
-+<U980F> /xf0/xf2 <CJK>
-+<U980C> /xf0/xf3 <CJK>
-+<U9838> /xf0/xf4 <CJK>
-+<U9824> /xf0/xf5 <CJK>
-+<U9821> /xf0/xf6 <CJK>
-+<U9837> /xf0/xf7 <CJK>
-+<U983D> /xf0/xf8 <CJK>
-+<U9846> /xf0/xf9 <CJK>
-+<U984F> /xf0/xfa <CJK>
-+<U984B> /xf0/xfb <CJK>
-+<U986B> /xf0/xfc <CJK>
-+<U986F> /xf0/xfd <CJK>
-+<U9870> /xf0/xfe <CJK>
-+<U9871> /xf1/xa1 <CJK>
-+<U9874> /xf1/xa2 <CJK>
-+<U9873> /xf1/xa3 <CJK>
-+<U98AA> /xf1/xa4 <CJK>
-+<U98AF> /xf1/xa5 <CJK>
-+<U98B1> /xf1/xa6 <CJK>
-+<U98B6> /xf1/xa7 <CJK>
-+<U98C4> /xf1/xa8 <CJK>
-+<U98C3> /xf1/xa9 <CJK>
-+<U98C6> /xf1/xaa <CJK>
-+<U98E9> /xf1/xab <CJK>
-+<U98EB> /xf1/xac <CJK>
-+<U9903> /xf1/xad <CJK>
-+<U9909> /xf1/xae <CJK>
-+<U9912> /xf1/xaf <CJK>
-+<U9914> /xf1/xb0 <CJK>
-+<U9918> /xf1/xb1 <CJK>
-+<U9921> /xf1/xb2 <CJK>
-+<U991D> /xf1/xb3 <CJK>
-+<U991E> /xf1/xb4 <CJK>
-+<U9924> /xf1/xb5 <CJK>
-+<U9920> /xf1/xb6 <CJK>
-+<U992C> /xf1/xb7 <CJK>
-+<U992E> /xf1/xb8 <CJK>
-+<U993D> /xf1/xb9 <CJK>
-+<U993E> /xf1/xba <CJK>
-+<U9942> /xf1/xbb <CJK>
-+<U9949> /xf1/xbc <CJK>
-+<U9945> /xf1/xbd <CJK>
-+<U9950> /xf1/xbe <CJK>
-+<U994B> /xf1/xbf <CJK>
-+<U9951> /xf1/xc0 <CJK>
-+<U9952> /xf1/xc1 <CJK>
-+<U994C> /xf1/xc2 <CJK>
-+<U9955> /xf1/xc3 <CJK>
-+<U9997> /xf1/xc4 <CJK>
-+<U9998> /xf1/xc5 <CJK>
-+<U99A5> /xf1/xc6 <CJK>
-+<U99AD> /xf1/xc7 <CJK>
-+<U99AE> /xf1/xc8 <CJK>
-+<U99BC> /xf1/xc9 <CJK>
-+<U99DF> /xf1/xca <CJK>
-+<U99DB> /xf1/xcb <CJK>
-+<U99DD> /xf1/xcc <CJK>
-+<U99D8> /xf1/xcd <CJK>
-+<U99D1> /xf1/xce <CJK>
-+<U99ED> /xf1/xcf <CJK>
-+<U99EE> /xf1/xd0 <CJK>
-+<U99F1> /xf1/xd1 <CJK>
-+<U99F2> /xf1/xd2 <CJK>
-+<U99FB> /xf1/xd3 <CJK>
-+<U99F8> /xf1/xd4 <CJK>
-+<U9A01> /xf1/xd5 <CJK>
-+<U9A0F> /xf1/xd6 <CJK>
-+<U9A05> /xf1/xd7 <CJK>
-+<U99E2> /xf1/xd8 <CJK>
-+<U9A19> /xf1/xd9 <CJK>
-+<U9A2B> /xf1/xda <CJK>
-+<U9A37> /xf1/xdb <CJK>
-+<U9A45> /xf1/xdc <CJK>
-+<U9A42> /xf1/xdd <CJK>
-+<U9A40> /xf1/xde <CJK>
-+<U9A43> /xf1/xdf <CJK>
-+<U9A3E> /xf1/xe0 <CJK>
-+<U9A55> /xf1/xe1 <CJK>
-+<U9A4D> /xf1/xe2 <CJK>
-+<U9A5B> /xf1/xe3 <CJK>
-+<U9A57> /xf1/xe4 <CJK>
-+<U9A5F> /xf1/xe5 <CJK>
-+<U9A62> /xf1/xe6 <CJK>
-+<U9A65> /xf1/xe7 <CJK>
-+<U9A64> /xf1/xe8 <CJK>
-+<U9A69> /xf1/xe9 <CJK>
-+<U9A6B> /xf1/xea <CJK>
-+<U9A6A> /xf1/xeb <CJK>
-+<U9AAD> /xf1/xec <CJK>
-+<U9AB0> /xf1/xed <CJK>
-+<U9ABC> /xf1/xee <CJK>
-+<U9AC0> /xf1/xef <CJK>
-+<U9ACF> /xf1/xf0 <CJK>
-+<U9AD1> /xf1/xf1 <CJK>
-+<U9AD3> /xf1/xf2 <CJK>
-+<U9AD4> /xf1/xf3 <CJK>
-+<U9ADE> /xf1/xf4 <CJK>
-+<U9ADF> /xf1/xf5 <CJK>
-+<U9AE2> /xf1/xf6 <CJK>
-+<U9AE3> /xf1/xf7 <CJK>
-+<U9AE6> /xf1/xf8 <CJK>
-+<U9AEF> /xf1/xf9 <CJK>
-+<U9AEB> /xf1/xfa <CJK>
-+<U9AEE> /xf1/xfb <CJK>
-+<U9AF4> /xf1/xfc <CJK>
-+<U9AF1> /xf1/xfd <CJK>
-+<U9AF7> /xf1/xfe <CJK>
-+<U9AFB> /xf2/xa1 <CJK>
-+<U9B06> /xf2/xa2 <CJK>
-+<U9B18> /xf2/xa3 <CJK>
-+<U9B1A> /xf2/xa4 <CJK>
-+<U9B1F> /xf2/xa5 <CJK>
-+<U9B22> /xf2/xa6 <CJK>
-+<U9B23> /xf2/xa7 <CJK>
-+<U9B25> /xf2/xa8 <CJK>
-+<U9B27> /xf2/xa9 <CJK>
-+<U9B28> /xf2/xaa <CJK>
-+<U9B29> /xf2/xab <CJK>
-+<U9B2A> /xf2/xac <CJK>
-+<U9B2E> /xf2/xad <CJK>
-+<U9B2F> /xf2/xae <CJK>
-+<U9B32> /xf2/xaf <CJK>
-+<U9B44> /xf2/xb0 <CJK>
-+<U9B43> /xf2/xb1 <CJK>
-+<U9B4F> /xf2/xb2 <CJK>
-+<U9B4D> /xf2/xb3 <CJK>
-+<U9B4E> /xf2/xb4 <CJK>
-+<U9B51> /xf2/xb5 <CJK>
-+<U9B58> /xf2/xb6 <CJK>
-+<U9B74> /xf2/xb7 <CJK>
-+<U9B93> /xf2/xb8 <CJK>
-+<U9B83> /xf2/xb9 <CJK>
-+<U9B91> /xf2/xba <CJK>
-+<U9B96> /xf2/xbb <CJK>
-+<U9B97> /xf2/xbc <CJK>
-+<U9B9F> /xf2/xbd <CJK>
-+<U9BA0> /xf2/xbe <CJK>
-+<U9BA8> /xf2/xbf <CJK>
-+<U9BB4> /xf2/xc0 <CJK>
-+<U9BC0> /xf2/xc1 <CJK>
-+<U9BCA> /xf2/xc2 <CJK>
-+<U9BB9> /xf2/xc3 <CJK>
-+<U9BC6> /xf2/xc4 <CJK>
-+<U9BCF> /xf2/xc5 <CJK>
-+<U9BD1> /xf2/xc6 <CJK>
-+<U9BD2> /xf2/xc7 <CJK>
-+<U9BE3> /xf2/xc8 <CJK>
-+<U9BE2> /xf2/xc9 <CJK>
-+<U9BE4> /xf2/xca <CJK>
-+<U9BD4> /xf2/xcb <CJK>
-+<U9BE1> /xf2/xcc <CJK>
-+<U9C3A> /xf2/xcd <CJK>
-+<U9BF2> /xf2/xce <CJK>
-+<U9BF1> /xf2/xcf <CJK>
-+<U9BF0> /xf2/xd0 <CJK>
-+<U9C15> /xf2/xd1 <CJK>
-+<U9C14> /xf2/xd2 <CJK>
-+<U9C09> /xf2/xd3 <CJK>
-+<U9C13> /xf2/xd4 <CJK>
-+<U9C0C> /xf2/xd5 <CJK>
-+<U9C06> /xf2/xd6 <CJK>
-+<U9C08> /xf2/xd7 <CJK>
-+<U9C12> /xf2/xd8 <CJK>
-+<U9C0A> /xf2/xd9 <CJK>
-+<U9C04> /xf2/xda <CJK>
-+<U9C2E> /xf2/xdb <CJK>
-+<U9C1B> /xf2/xdc <CJK>
-+<U9C25> /xf2/xdd <CJK>
-+<U9C24> /xf2/xde <CJK>
-+<U9C21> /xf2/xdf <CJK>
-+<U9C30> /xf2/xe0 <CJK>
-+<U9C47> /xf2/xe1 <CJK>
-+<U9C32> /xf2/xe2 <CJK>
-+<U9C46> /xf2/xe3 <CJK>
-+<U9C3E> /xf2/xe4 <CJK>
-+<U9C5A> /xf2/xe5 <CJK>
-+<U9C60> /xf2/xe6 <CJK>
-+<U9C67> /xf2/xe7 <CJK>
-+<U9C76> /xf2/xe8 <CJK>
-+<U9C78> /xf2/xe9 <CJK>
-+<U9CE7> /xf2/xea <CJK>
-+<U9CEC> /xf2/xeb <CJK>
-+<U9CF0> /xf2/xec <CJK>
-+<U9D09> /xf2/xed <CJK>
-+<U9D08> /xf2/xee <CJK>
-+<U9CEB> /xf2/xef <CJK>
-+<U9D03> /xf2/xf0 <CJK>
-+<U9D06> /xf2/xf1 <CJK>
-+<U9D2A> /xf2/xf2 <CJK>
-+<U9D26> /xf2/xf3 <CJK>
-+<U9DAF> /xf2/xf4 <CJK>
-+<U9D23> /xf2/xf5 <CJK>
-+<U9D1F> /xf2/xf6 <CJK>
-+<U9D44> /xf2/xf7 <CJK>
-+<U9D15> /xf2/xf8 <CJK>
-+<U9D12> /xf2/xf9 <CJK>
-+<U9D41> /xf2/xfa <CJK>
-+<U9D3F> /xf2/xfb <CJK>
-+<U9D3E> /xf2/xfc <CJK>
-+<U9D46> /xf2/xfd <CJK>
-+<U9D48> /xf2/xfe <CJK>
-+<U9D5D> /xf3/xa1 <CJK>
-+<U9D5E> /xf3/xa2 <CJK>
-+<U9D64> /xf3/xa3 <CJK>
-+<U9D51> /xf3/xa4 <CJK>
-+<U9D50> /xf3/xa5 <CJK>
-+<U9D59> /xf3/xa6 <CJK>
-+<U9D72> /xf3/xa7 <CJK>
-+<U9D89> /xf3/xa8 <CJK>
-+<U9D87> /xf3/xa9 <CJK>
-+<U9DAB> /xf3/xaa <CJK>
-+<U9D6F> /xf3/xab <CJK>
-+<U9D7A> /xf3/xac <CJK>
-+<U9D9A> /xf3/xad <CJK>
-+<U9DA4> /xf3/xae <CJK>
-+<U9DA9> /xf3/xaf <CJK>
-+<U9DB2> /xf3/xb0 <CJK>
-+<U9DC4> /xf3/xb1 <CJK>
-+<U9DC1> /xf3/xb2 <CJK>
-+<U9DBB> /xf3/xb3 <CJK>
-+<U9DB8> /xf3/xb4 <CJK>
-+<U9DBA> /xf3/xb5 <CJK>
-+<U9DC6> /xf3/xb6 <CJK>
-+<U9DCF> /xf3/xb7 <CJK>
-+<U9DC2> /xf3/xb8 <CJK>
-+<U9DD9> /xf3/xb9 <CJK>
-+<U9DD3> /xf3/xba <CJK>
-+<U9DF8> /xf3/xbb <CJK>
-+<U9DE6> /xf3/xbc <CJK>
-+<U9DED> /xf3/xbd <CJK>
-+<U9DEF> /xf3/xbe <CJK>
-+<U9DFD> /xf3/xbf <CJK>
-+<U9E1A> /xf3/xc0 <CJK>
-+<U9E1B> /xf3/xc1 <CJK>
-+<U9E1E> /xf3/xc2 <CJK>
-+<U9E75> /xf3/xc3 <CJK>
-+<U9E79> /xf3/xc4 <CJK>
-+<U9E7D> /xf3/xc5 <CJK>
-+<U9E81> /xf3/xc6 <CJK>
-+<U9E88> /xf3/xc7 <CJK>
-+<U9E8B> /xf3/xc8 <CJK>
-+<U9E8C> /xf3/xc9 <CJK>
-+<U9E92> /xf3/xca <CJK>
-+<U9E95> /xf3/xcb <CJK>
-+<U9E91> /xf3/xcc <CJK>
-+<U9E9D> /xf3/xcd <CJK>
-+<U9EA5> /xf3/xce <CJK>
-+<U9EA9> /xf3/xcf <CJK>
-+<U9EB8> /xf3/xd0 <CJK>
-+<U9EAA> /xf3/xd1 <CJK>
-+<U9EAD> /xf3/xd2 <CJK>
-+<U9761> /xf3/xd3 <CJK>
-+<U9ECC> /xf3/xd4 <CJK>
-+<U9ECE> /xf3/xd5 <CJK>
-+<U9ECF> /xf3/xd6 <CJK>
-+<U9ED0> /xf3/xd7 <CJK>
-+<U9ED4> /xf3/xd8 <CJK>
-+<U9EDC> /xf3/xd9 <CJK>
-+<U9EDE> /xf3/xda <CJK>
-+<U9EDD> /xf3/xdb <CJK>
-+<U9EE0> /xf3/xdc <CJK>
-+<U9EE5> /xf3/xdd <CJK>
-+<U9EE8> /xf3/xde <CJK>
-+<U9EEF> /xf3/xdf <CJK>
-+<U9EF4> /xf3/xe0 <CJK>
-+<U9EF6> /xf3/xe1 <CJK>
-+<U9EF7> /xf3/xe2 <CJK>
-+<U9EF9> /xf3/xe3 <CJK>
-+<U9EFB> /xf3/xe4 <CJK>
-+<U9EFC> /xf3/xe5 <CJK>
-+<U9EFD> /xf3/xe6 <CJK>
-+<U9F07> /xf3/xe7 <CJK>
-+<U9F08> /xf3/xe8 <CJK>
-+<U76B7> /xf3/xe9 <CJK>
-+<U9F15> /xf3/xea <CJK>
-+<U9F21> /xf3/xeb <CJK>
-+<U9F2C> /xf3/xec <CJK>
-+<U9F3E> /xf3/xed <CJK>
-+<U9F4A> /xf3/xee <CJK>
-+<U9F52> /xf3/xef <CJK>
-+<U9F54> /xf3/xf0 <CJK>
-+<U9F63> /xf3/xf1 <CJK>
-+<U9F5F> /xf3/xf2 <CJK>
-+<U9F60> /xf3/xf3 <CJK>
-+<U9F61> /xf3/xf4 <CJK>
-+<U9F66> /xf3/xf5 <CJK>
-+<U9F67> /xf3/xf6 <CJK>
-+<U9F6C> /xf3/xf7 <CJK>
-+<U9F6A> /xf3/xf8 <CJK>
-+<U9F77> /xf3/xf9 <CJK>
-+<U9F72> /xf3/xfa <CJK>
-+<U9F76> /xf3/xfb <CJK>
-+<U9F95> /xf3/xfc <CJK>
-+<U9F9C> /xf3/xfd <CJK>
-+<U9FA0> /xf3/xfe <CJK>
-+<U582F> /xf4/xa1 <CJK>
-+<U69C7> /xf4/xa2 <CJK>
-+<U9059> /xf4/xa3 <CJK>
-+<U7464> /xf4/xa4 <CJK>
-+<U51DC> /xf4/xa5 <CJK>
-+<U7199> /xf4/xa6 <CJK>
-+
-+%
-+% User Defined Characters (EUC Code Set 1)
-+%
-+<UE000> /xf5/xa1 <Private Use>
-+<UE001> /xf5/xa2 <Private Use>
-+<UE002> /xf5/xa3 <Private Use>
-+<UE003> /xf5/xa4 <Private Use>
-+<UE004> /xf5/xa5 <Private Use>
-+<UE005> /xf5/xa6 <Private Use>
-+<UE006> /xf5/xa7 <Private Use>
-+<UE007> /xf5/xa8 <Private Use>
-+<UE008> /xf5/xa9 <Private Use>
-+<UE009> /xf5/xaa <Private Use>
-+<UE00A> /xf5/xab <Private Use>
-+<UE00B> /xf5/xac <Private Use>
-+<UE00C> /xf5/xad <Private Use>
-+<UE00D> /xf5/xae <Private Use>
-+<UE00E> /xf5/xaf <Private Use>
-+<UE00F> /xf5/xb0 <Private Use>
-+<UE010> /xf5/xb1 <Private Use>
-+<UE011> /xf5/xb2 <Private Use>
-+<UE012> /xf5/xb3 <Private Use>
-+<UE013> /xf5/xb4 <Private Use>
-+<UE014> /xf5/xb5 <Private Use>
-+<UE015> /xf5/xb6 <Private Use>
-+<UE016> /xf5/xb7 <Private Use>
-+<UE017> /xf5/xb8 <Private Use>
-+<UE018> /xf5/xb9 <Private Use>
-+<UE019> /xf5/xba <Private Use>
-+<UE01A> /xf5/xbb <Private Use>
-+<UE01B> /xf5/xbc <Private Use>
-+<UE01C> /xf5/xbd <Private Use>
-+<UE01D> /xf5/xbe <Private Use>
-+<UE01E> /xf5/xbf <Private Use>
-+<UE01F> /xf5/xc0 <Private Use>
-+<UE020> /xf5/xc1 <Private Use>
-+<UE021> /xf5/xc2 <Private Use>
-+<UE022> /xf5/xc3 <Private Use>
-+<UE023> /xf5/xc4 <Private Use>
-+<UE024> /xf5/xc5 <Private Use>
-+<UE025> /xf5/xc6 <Private Use>
-+<UE026> /xf5/xc7 <Private Use>
-+<UE027> /xf5/xc8 <Private Use>
-+<UE028> /xf5/xc9 <Private Use>
-+<UE029> /xf5/xca <Private Use>
-+<UE02A> /xf5/xcb <Private Use>
-+<UE02B> /xf5/xcc <Private Use>
-+<UE02C> /xf5/xcd <Private Use>
-+<UE02D> /xf5/xce <Private Use>
-+<UE02E> /xf5/xcf <Private Use>
-+<UE02F> /xf5/xd0 <Private Use>
-+<UE030> /xf5/xd1 <Private Use>
-+<UE031> /xf5/xd2 <Private Use>
-+<UE032> /xf5/xd3 <Private Use>
-+<UE033> /xf5/xd4 <Private Use>
-+<UE034> /xf5/xd5 <Private Use>
-+<UE035> /xf5/xd6 <Private Use>
-+<UE036> /xf5/xd7 <Private Use>
-+<UE037> /xf5/xd8 <Private Use>
-+<UE038> /xf5/xd9 <Private Use>
-+<UE039> /xf5/xda <Private Use>
-+<UE03A> /xf5/xdb <Private Use>
-+<UE03B> /xf5/xdc <Private Use>
-+<UE03C> /xf5/xdd <Private Use>
-+<UE03D> /xf5/xde <Private Use>
-+<UE03E> /xf5/xdf <Private Use>
-+<UE03F> /xf5/xe0 <Private Use>
-+<UE040> /xf5/xe1 <Private Use>
-+<UE041> /xf5/xe2 <Private Use>
-+<UE042> /xf5/xe3 <Private Use>
-+<UE043> /xf5/xe4 <Private Use>
-+<UE044> /xf5/xe5 <Private Use>
-+<UE045> /xf5/xe6 <Private Use>
-+<UE046> /xf5/xe7 <Private Use>
-+<UE047> /xf5/xe8 <Private Use>
-+<UE048> /xf5/xe9 <Private Use>
-+<UE049> /xf5/xea <Private Use>
-+<UE04A> /xf5/xeb <Private Use>
-+<UE04B> /xf5/xec <Private Use>
-+<UE04C> /xf5/xed <Private Use>
-+<UE04D> /xf5/xee <Private Use>
-+<UE04E> /xf5/xef <Private Use>
-+<UE04F> /xf5/xf0 <Private Use>
-+<UE050> /xf5/xf1 <Private Use>
-+<UE051> /xf5/xf2 <Private Use>
-+<UE052> /xf5/xf3 <Private Use>
-+<UE053> /xf5/xf4 <Private Use>
-+<UE054> /xf5/xf5 <Private Use>
-+<UE055> /xf5/xf6 <Private Use>
-+<UE056> /xf5/xf7 <Private Use>
-+<UE057> /xf5/xf8 <Private Use>
-+<UE058> /xf5/xf9 <Private Use>
-+<UE059> /xf5/xfa <Private Use>
-+<UE05A> /xf5/xfb <Private Use>
-+<UE05B> /xf5/xfc <Private Use>
-+<UE05C> /xf5/xfd <Private Use>
-+<UE05D> /xf5/xfe <Private Use>
-+<UE05E> /xf6/xa1 <Private Use>
-+<UE05F> /xf6/xa2 <Private Use>
-+<UE060> /xf6/xa3 <Private Use>
-+<UE061> /xf6/xa4 <Private Use>
-+<UE062> /xf6/xa5 <Private Use>
-+<UE063> /xf6/xa6 <Private Use>
-+<UE064> /xf6/xa7 <Private Use>
-+<UE065> /xf6/xa8 <Private Use>
-+<UE066> /xf6/xa9 <Private Use>
-+<UE067> /xf6/xaa <Private Use>
-+<UE068> /xf6/xab <Private Use>
-+<UE069> /xf6/xac <Private Use>
-+<UE06A> /xf6/xad <Private Use>
-+<UE06B> /xf6/xae <Private Use>
-+<UE06C> /xf6/xaf <Private Use>
-+<UE06D> /xf6/xb0 <Private Use>
-+<UE06E> /xf6/xb1 <Private Use>
-+<UE06F> /xf6/xb2 <Private Use>
-+<UE070> /xf6/xb3 <Private Use>
-+<UE071> /xf6/xb4 <Private Use>
-+<UE072> /xf6/xb5 <Private Use>
-+<UE073> /xf6/xb6 <Private Use>
-+<UE074> /xf6/xb7 <Private Use>
-+<UE075> /xf6/xb8 <Private Use>
-+<UE076> /xf6/xb9 <Private Use>
-+<UE077> /xf6/xba <Private Use>
-+<UE078> /xf6/xbb <Private Use>
-+<UE079> /xf6/xbc <Private Use>
-+<UE07A> /xf6/xbd <Private Use>
-+<UE07B> /xf6/xbe <Private Use>
-+<UE07C> /xf6/xbf <Private Use>
-+<UE07D> /xf6/xc0 <Private Use>
-+<UE07E> /xf6/xc1 <Private Use>
-+<UE07F> /xf6/xc2 <Private Use>
-+<UE080> /xf6/xc3 <Private Use>
-+<UE081> /xf6/xc4 <Private Use>
-+<UE082> /xf6/xc5 <Private Use>
-+<UE083> /xf6/xc6 <Private Use>
-+<UE084> /xf6/xc7 <Private Use>
-+<UE085> /xf6/xc8 <Private Use>
-+<UE086> /xf6/xc9 <Private Use>
-+<UE087> /xf6/xca <Private Use>
-+<UE088> /xf6/xcb <Private Use>
-+<UE089> /xf6/xcc <Private Use>
-+<UE08A> /xf6/xcd <Private Use>
-+<UE08B> /xf6/xce <Private Use>
-+<UE08C> /xf6/xcf <Private Use>
-+<UE08D> /xf6/xd0 <Private Use>
-+<UE08E> /xf6/xd1 <Private Use>
-+<UE08F> /xf6/xd2 <Private Use>
-+<UE090> /xf6/xd3 <Private Use>
-+<UE091> /xf6/xd4 <Private Use>
-+<UE092> /xf6/xd5 <Private Use>
-+<UE093> /xf6/xd6 <Private Use>
-+<UE094> /xf6/xd7 <Private Use>
-+<UE095> /xf6/xd8 <Private Use>
-+<UE096> /xf6/xd9 <Private Use>
-+<UE097> /xf6/xda <Private Use>
-+<UE098> /xf6/xdb <Private Use>
-+<UE099> /xf6/xdc <Private Use>
-+<UE09A> /xf6/xdd <Private Use>
-+<UE09B> /xf6/xde <Private Use>
-+<UE09C> /xf6/xdf <Private Use>
-+<UE09D> /xf6/xe0 <Private Use>
-+<UE09E> /xf6/xe1 <Private Use>
-+<UE09F> /xf6/xe2 <Private Use>
-+<UE0A0> /xf6/xe3 <Private Use>
-+<UE0A1> /xf6/xe4 <Private Use>
-+<UE0A2> /xf6/xe5 <Private Use>
-+<UE0A3> /xf6/xe6 <Private Use>
-+<UE0A4> /xf6/xe7 <Private Use>
-+<UE0A5> /xf6/xe8 <Private Use>
-+<UE0A6> /xf6/xe9 <Private Use>
-+<UE0A7> /xf6/xea <Private Use>
-+<UE0A8> /xf6/xeb <Private Use>
-+<UE0A9> /xf6/xec <Private Use>
-+<UE0AA> /xf6/xed <Private Use>
-+<UE0AB> /xf6/xee <Private Use>
-+<UE0AC> /xf6/xef <Private Use>
-+<UE0AD> /xf6/xf0 <Private Use>
-+<UE0AE> /xf6/xf1 <Private Use>
-+<UE0AF> /xf6/xf2 <Private Use>
-+<UE0B0> /xf6/xf3 <Private Use>
-+<UE0B1> /xf6/xf4 <Private Use>
-+<UE0B2> /xf6/xf5 <Private Use>
-+<UE0B3> /xf6/xf6 <Private Use>
-+<UE0B4> /xf6/xf7 <Private Use>
-+<UE0B5> /xf6/xf8 <Private Use>
-+<UE0B6> /xf6/xf9 <Private Use>
-+<UE0B7> /xf6/xfa <Private Use>
-+<UE0B8> /xf6/xfb <Private Use>
-+<UE0B9> /xf6/xfc <Private Use>
-+<UE0BA> /xf6/xfd <Private Use>
-+<UE0BB> /xf6/xfe <Private Use>
-+<UE0BC> /xf7/xa1 <Private Use>
-+<UE0BD> /xf7/xa2 <Private Use>
-+<UE0BE> /xf7/xa3 <Private Use>
-+<UE0BF> /xf7/xa4 <Private Use>
-+<UE0C0> /xf7/xa5 <Private Use>
-+<UE0C1> /xf7/xa6 <Private Use>
-+<UE0C2> /xf7/xa7 <Private Use>
-+<UE0C3> /xf7/xa8 <Private Use>
-+<UE0C4> /xf7/xa9 <Private Use>
-+<UE0C5> /xf7/xaa <Private Use>
-+<UE0C6> /xf7/xab <Private Use>
-+<UE0C7> /xf7/xac <Private Use>
-+<UE0C8> /xf7/xad <Private Use>
-+<UE0C9> /xf7/xae <Private Use>
-+<UE0CA> /xf7/xaf <Private Use>
-+<UE0CB> /xf7/xb0 <Private Use>
-+<UE0CC> /xf7/xb1 <Private Use>
-+<UE0CD> /xf7/xb2 <Private Use>
-+<UE0CE> /xf7/xb3 <Private Use>
-+<UE0CF> /xf7/xb4 <Private Use>
-+<UE0D0> /xf7/xb5 <Private Use>
-+<UE0D1> /xf7/xb6 <Private Use>
-+<UE0D2> /xf7/xb7 <Private Use>
-+<UE0D3> /xf7/xb8 <Private Use>
-+<UE0D4> /xf7/xb9 <Private Use>
-+<UE0D5> /xf7/xba <Private Use>
-+<UE0D6> /xf7/xbb <Private Use>
-+<UE0D7> /xf7/xbc <Private Use>
-+<UE0D8> /xf7/xbd <Private Use>
-+<UE0D9> /xf7/xbe <Private Use>
-+<UE0DA> /xf7/xbf <Private Use>
-+<UE0DB> /xf7/xc0 <Private Use>
-+<UE0DC> /xf7/xc1 <Private Use>
-+<UE0DD> /xf7/xc2 <Private Use>
-+<UE0DE> /xf7/xc3 <Private Use>
-+<UE0DF> /xf7/xc4 <Private Use>
-+<UE0E0> /xf7/xc5 <Private Use>
-+<UE0E1> /xf7/xc6 <Private Use>
-+<UE0E2> /xf7/xc7 <Private Use>
-+<UE0E3> /xf7/xc8 <Private Use>
-+<UE0E4> /xf7/xc9 <Private Use>
-+<UE0E5> /xf7/xca <Private Use>
-+<UE0E6> /xf7/xcb <Private Use>
-+<UE0E7> /xf7/xcc <Private Use>
-+<UE0E8> /xf7/xcd <Private Use>
-+<UE0E9> /xf7/xce <Private Use>
-+<UE0EA> /xf7/xcf <Private Use>
-+<UE0EB> /xf7/xd0 <Private Use>
-+<UE0EC> /xf7/xd1 <Private Use>
-+<UE0ED> /xf7/xd2 <Private Use>
-+<UE0EE> /xf7/xd3 <Private Use>
-+<UE0EF> /xf7/xd4 <Private Use>
-+<UE0F0> /xf7/xd5 <Private Use>
-+<UE0F1> /xf7/xd6 <Private Use>
-+<UE0F2> /xf7/xd7 <Private Use>
-+<UE0F3> /xf7/xd8 <Private Use>
-+<UE0F4> /xf7/xd9 <Private Use>
-+<UE0F5> /xf7/xda <Private Use>
-+<UE0F6> /xf7/xdb <Private Use>
-+<UE0F7> /xf7/xdc <Private Use>
-+<UE0F8> /xf7/xdd <Private Use>
-+<UE0F9> /xf7/xde <Private Use>
-+<UE0FA> /xf7/xdf <Private Use>
-+<UE0FB> /xf7/xe0 <Private Use>
-+<UE0FC> /xf7/xe1 <Private Use>
-+<UE0FD> /xf7/xe2 <Private Use>
-+<UE0FE> /xf7/xe3 <Private Use>
-+<UE0FF> /xf7/xe4 <Private Use>
-+<UE100> /xf7/xe5 <Private Use>
-+<UE101> /xf7/xe6 <Private Use>
-+<UE102> /xf7/xe7 <Private Use>
-+<UE103> /xf7/xe8 <Private Use>
-+<UE104> /xf7/xe9 <Private Use>
-+<UE105> /xf7/xea <Private Use>
-+<UE106> /xf7/xeb <Private Use>
-+<UE107> /xf7/xec <Private Use>
-+<UE108> /xf7/xed <Private Use>
-+<UE109> /xf7/xee <Private Use>
-+<UE10A> /xf7/xef <Private Use>
-+<UE10B> /xf7/xf0 <Private Use>
-+<UE10C> /xf7/xf1 <Private Use>
-+<UE10D> /xf7/xf2 <Private Use>
-+<UE10E> /xf7/xf3 <Private Use>
-+<UE10F> /xf7/xf4 <Private Use>
-+<UE110> /xf7/xf5 <Private Use>
-+<UE111> /xf7/xf6 <Private Use>
-+<UE112> /xf7/xf7 <Private Use>
-+<UE113> /xf7/xf8 <Private Use>
-+<UE114> /xf7/xf9 <Private Use>
-+<UE115> /xf7/xfa <Private Use>
-+<UE116> /xf7/xfb <Private Use>
-+<UE117> /xf7/xfc <Private Use>
-+<UE118> /xf7/xfd <Private Use>
-+<UE119> /xf7/xfe <Private Use>
-+<UE11A> /xf8/xa1 <Private Use>
-+<UE11B> /xf8/xa2 <Private Use>
-+<UE11C> /xf8/xa3 <Private Use>
-+<UE11D> /xf8/xa4 <Private Use>
-+<UE11E> /xf8/xa5 <Private Use>
-+<UE11F> /xf8/xa6 <Private Use>
-+<UE120> /xf8/xa7 <Private Use>
-+<UE121> /xf8/xa8 <Private Use>
-+<UE122> /xf8/xa9 <Private Use>
-+<UE123> /xf8/xaa <Private Use>
-+<UE124> /xf8/xab <Private Use>
-+<UE125> /xf8/xac <Private Use>
-+<UE126> /xf8/xad <Private Use>
-+<UE127> /xf8/xae <Private Use>
-+<UE128> /xf8/xaf <Private Use>
-+<UE129> /xf8/xb0 <Private Use>
-+<UE12A> /xf8/xb1 <Private Use>
-+<UE12B> /xf8/xb2 <Private Use>
-+<UE12C> /xf8/xb3 <Private Use>
-+<UE12D> /xf8/xb4 <Private Use>
-+<UE12E> /xf8/xb5 <Private Use>
-+<UE12F> /xf8/xb6 <Private Use>
-+<UE130> /xf8/xb7 <Private Use>
-+<UE131> /xf8/xb8 <Private Use>
-+<UE132> /xf8/xb9 <Private Use>
-+<UE133> /xf8/xba <Private Use>
-+<UE134> /xf8/xbb <Private Use>
-+<UE135> /xf8/xbc <Private Use>
-+<UE136> /xf8/xbd <Private Use>
-+<UE137> /xf8/xbe <Private Use>
-+<UE138> /xf8/xbf <Private Use>
-+<UE139> /xf8/xc0 <Private Use>
-+<UE13A> /xf8/xc1 <Private Use>
-+<UE13B> /xf8/xc2 <Private Use>
-+<UE13C> /xf8/xc3 <Private Use>
-+<UE13D> /xf8/xc4 <Private Use>
-+<UE13E> /xf8/xc5 <Private Use>
-+<UE13F> /xf8/xc6 <Private Use>
-+<UE140> /xf8/xc7 <Private Use>
-+<UE141> /xf8/xc8 <Private Use>
-+<UE142> /xf8/xc9 <Private Use>
-+<UE143> /xf8/xca <Private Use>
-+<UE144> /xf8/xcb <Private Use>
-+<UE145> /xf8/xcc <Private Use>
-+<UE146> /xf8/xcd <Private Use>
-+<UE147> /xf8/xce <Private Use>
-+<UE148> /xf8/xcf <Private Use>
-+<UE149> /xf8/xd0 <Private Use>
-+<UE14A> /xf8/xd1 <Private Use>
-+<UE14B> /xf8/xd2 <Private Use>
-+<UE14C> /xf8/xd3 <Private Use>
-+<UE14D> /xf8/xd4 <Private Use>
-+<UE14E> /xf8/xd5 <Private Use>
-+<UE14F> /xf8/xd6 <Private Use>
-+<UE150> /xf8/xd7 <Private Use>
-+<UE151> /xf8/xd8 <Private Use>
-+<UE152> /xf8/xd9 <Private Use>
-+<UE153> /xf8/xda <Private Use>
-+<UE154> /xf8/xdb <Private Use>
-+<UE155> /xf8/xdc <Private Use>
-+<UE156> /xf8/xdd <Private Use>
-+<UE157> /xf8/xde <Private Use>
-+<UE158> /xf8/xdf <Private Use>
-+<UE159> /xf8/xe0 <Private Use>
-+<UE15A> /xf8/xe1 <Private Use>
-+<UE15B> /xf8/xe2 <Private Use>
-+<UE15C> /xf8/xe3 <Private Use>
-+<UE15D> /xf8/xe4 <Private Use>
-+<UE15E> /xf8/xe5 <Private Use>
-+<UE15F> /xf8/xe6 <Private Use>
-+<UE160> /xf8/xe7 <Private Use>
-+<UE161> /xf8/xe8 <Private Use>
-+<UE162> /xf8/xe9 <Private Use>
-+<UE163> /xf8/xea <Private Use>
-+<UE164> /xf8/xeb <Private Use>
-+<UE165> /xf8/xec <Private Use>
-+<UE166> /xf8/xed <Private Use>
-+<UE167> /xf8/xee <Private Use>
-+<UE168> /xf8/xef <Private Use>
-+<UE169> /xf8/xf0 <Private Use>
-+<UE16A> /xf8/xf1 <Private Use>
-+<UE16B> /xf8/xf2 <Private Use>
-+<UE16C> /xf8/xf3 <Private Use>
-+<UE16D> /xf8/xf4 <Private Use>
-+<UE16E> /xf8/xf5 <Private Use>
-+<UE16F> /xf8/xf6 <Private Use>
-+<UE170> /xf8/xf7 <Private Use>
-+<UE171> /xf8/xf8 <Private Use>
-+<UE172> /xf8/xf9 <Private Use>
-+<UE173> /xf8/xfa <Private Use>
-+<UE174> /xf8/xfb <Private Use>
-+<UE175> /xf8/xfc <Private Use>
-+<UE176> /xf8/xfd <Private Use>
-+<UE177> /xf8/xfe <Private Use>
-+<UE178> /xf9/xa1 <Private Use>
-+<UE179> /xf9/xa2 <Private Use>
-+<UE17A> /xf9/xa3 <Private Use>
-+<UE17B> /xf9/xa4 <Private Use>
-+<UE17C> /xf9/xa5 <Private Use>
-+<UE17D> /xf9/xa6 <Private Use>
-+<UE17E> /xf9/xa7 <Private Use>
-+<UE17F> /xf9/xa8 <Private Use>
-+<UE180> /xf9/xa9 <Private Use>
-+<UE181> /xf9/xaa <Private Use>
-+<UE182> /xf9/xab <Private Use>
-+<UE183> /xf9/xac <Private Use>
-+<UE184> /xf9/xad <Private Use>
-+<UE185> /xf9/xae <Private Use>
-+<UE186> /xf9/xaf <Private Use>
-+<UE187> /xf9/xb0 <Private Use>
-+<UE188> /xf9/xb1 <Private Use>
-+<UE189> /xf9/xb2 <Private Use>
-+<UE18A> /xf9/xb3 <Private Use>
-+<UE18B> /xf9/xb4 <Private Use>
-+<UE18C> /xf9/xb5 <Private Use>
-+<UE18D> /xf9/xb6 <Private Use>
-+<UE18E> /xf9/xb7 <Private Use>
-+<UE18F> /xf9/xb8 <Private Use>
-+<UE190> /xf9/xb9 <Private Use>
-+<UE191> /xf9/xba <Private Use>
-+<UE192> /xf9/xbb <Private Use>
-+<UE193> /xf9/xbc <Private Use>
-+<UE194> /xf9/xbd <Private Use>
-+<UE195> /xf9/xbe <Private Use>
-+<UE196> /xf9/xbf <Private Use>
-+<UE197> /xf9/xc0 <Private Use>
-+<UE198> /xf9/xc1 <Private Use>
-+<UE199> /xf9/xc2 <Private Use>
-+<UE19A> /xf9/xc3 <Private Use>
-+<UE19B> /xf9/xc4 <Private Use>
-+<UE19C> /xf9/xc5 <Private Use>
-+<UE19D> /xf9/xc6 <Private Use>
-+<UE19E> /xf9/xc7 <Private Use>
-+<UE19F> /xf9/xc8 <Private Use>
-+<UE1A0> /xf9/xc9 <Private Use>
-+<UE1A1> /xf9/xca <Private Use>
-+<UE1A2> /xf9/xcb <Private Use>
-+<UE1A3> /xf9/xcc <Private Use>
-+<UE1A4> /xf9/xcd <Private Use>
-+<UE1A5> /xf9/xce <Private Use>
-+<UE1A6> /xf9/xcf <Private Use>
-+<UE1A7> /xf9/xd0 <Private Use>
-+<UE1A8> /xf9/xd1 <Private Use>
-+<UE1A9> /xf9/xd2 <Private Use>
-+<UE1AA> /xf9/xd3 <Private Use>
-+<UE1AB> /xf9/xd4 <Private Use>
-+<UE1AC> /xf9/xd5 <Private Use>
-+<UE1AD> /xf9/xd6 <Private Use>
-+<UE1AE> /xf9/xd7 <Private Use>
-+<UE1AF> /xf9/xd8 <Private Use>
-+<UE1B0> /xf9/xd9 <Private Use>
-+<UE1B1> /xf9/xda <Private Use>
-+<UE1B2> /xf9/xdb <Private Use>
-+<UE1B3> /xf9/xdc <Private Use>
-+<UE1B4> /xf9/xdd <Private Use>
-+<UE1B5> /xf9/xde <Private Use>
-+<UE1B6> /xf9/xdf <Private Use>
-+<UE1B7> /xf9/xe0 <Private Use>
-+<UE1B8> /xf9/xe1 <Private Use>
-+<UE1B9> /xf9/xe2 <Private Use>
-+<UE1BA> /xf9/xe3 <Private Use>
-+<UE1BB> /xf9/xe4 <Private Use>
-+<UE1BC> /xf9/xe5 <Private Use>
-+<UE1BD> /xf9/xe6 <Private Use>
-+<UE1BE> /xf9/xe7 <Private Use>
-+<UE1BF> /xf9/xe8 <Private Use>
-+<UE1C0> /xf9/xe9 <Private Use>
-+<UE1C1> /xf9/xea <Private Use>
-+<UE1C2> /xf9/xeb <Private Use>
-+<UE1C3> /xf9/xec <Private Use>
-+<UE1C4> /xf9/xed <Private Use>
-+<UE1C5> /xf9/xee <Private Use>
-+<UE1C6> /xf9/xef <Private Use>
-+<UE1C7> /xf9/xf0 <Private Use>
-+<UE1C8> /xf9/xf1 <Private Use>
-+<UE1C9> /xf9/xf2 <Private Use>
-+<UE1CA> /xf9/xf3 <Private Use>
-+<UE1CB> /xf9/xf4 <Private Use>
-+<UE1CC> /xf9/xf5 <Private Use>
-+<UE1CD> /xf9/xf6 <Private Use>
-+<UE1CE> /xf9/xf7 <Private Use>
-+<UE1CF> /xf9/xf8 <Private Use>
-+<UE1D0> /xf9/xf9 <Private Use>
-+<UE1D1> /xf9/xfa <Private Use>
-+<UE1D2> /xf9/xfb <Private Use>
-+<UE1D3> /xf9/xfc <Private Use>
-+<UE1D4> /xf9/xfd <Private Use>
-+<UE1D5> /xf9/xfe <Private Use>
-+<UE1D6> /xfa/xa1 <Private Use>
-+<UE1D7> /xfa/xa2 <Private Use>
-+<UE1D8> /xfa/xa3 <Private Use>
-+<UE1D9> /xfa/xa4 <Private Use>
-+<UE1DA> /xfa/xa5 <Private Use>
-+<UE1DB> /xfa/xa6 <Private Use>
-+<UE1DC> /xfa/xa7 <Private Use>
-+<UE1DD> /xfa/xa8 <Private Use>
-+<UE1DE> /xfa/xa9 <Private Use>
-+<UE1DF> /xfa/xaa <Private Use>
-+<UE1E0> /xfa/xab <Private Use>
-+<UE1E1> /xfa/xac <Private Use>
-+<UE1E2> /xfa/xad <Private Use>
-+<UE1E3> /xfa/xae <Private Use>
-+<UE1E4> /xfa/xaf <Private Use>
-+<UE1E5> /xfa/xb0 <Private Use>
-+<UE1E6> /xfa/xb1 <Private Use>
-+<UE1E7> /xfa/xb2 <Private Use>
-+<UE1E8> /xfa/xb3 <Private Use>
-+<UE1E9> /xfa/xb4 <Private Use>
-+<UE1EA> /xfa/xb5 <Private Use>
-+<UE1EB> /xfa/xb6 <Private Use>
-+<UE1EC> /xfa/xb7 <Private Use>
-+<UE1ED> /xfa/xb8 <Private Use>
-+<UE1EE> /xfa/xb9 <Private Use>
-+<UE1EF> /xfa/xba <Private Use>
-+<UE1F0> /xfa/xbb <Private Use>
-+<UE1F1> /xfa/xbc <Private Use>
-+<UE1F2> /xfa/xbd <Private Use>
-+<UE1F3> /xfa/xbe <Private Use>
-+<UE1F4> /xfa/xbf <Private Use>
-+<UE1F5> /xfa/xc0 <Private Use>
-+<UE1F6> /xfa/xc1 <Private Use>
-+<UE1F7> /xfa/xc2 <Private Use>
-+<UE1F8> /xfa/xc3 <Private Use>
-+<UE1F9> /xfa/xc4 <Private Use>
-+<UE1FA> /xfa/xc5 <Private Use>
-+<UE1FB> /xfa/xc6 <Private Use>
-+<UE1FC> /xfa/xc7 <Private Use>
-+<UE1FD> /xfa/xc8 <Private Use>
-+<UE1FE> /xfa/xc9 <Private Use>
-+<UE1FF> /xfa/xca <Private Use>
-+<UE200> /xfa/xcb <Private Use>
-+<UE201> /xfa/xcc <Private Use>
-+<UE202> /xfa/xcd <Private Use>
-+<UE203> /xfa/xce <Private Use>
-+<UE204> /xfa/xcf <Private Use>
-+<UE205> /xfa/xd0 <Private Use>
-+<UE206> /xfa/xd1 <Private Use>
-+<UE207> /xfa/xd2 <Private Use>
-+<UE208> /xfa/xd3 <Private Use>
-+<UE209> /xfa/xd4 <Private Use>
-+<UE20A> /xfa/xd5 <Private Use>
-+<UE20B> /xfa/xd6 <Private Use>
-+<UE20C> /xfa/xd7 <Private Use>
-+<UE20D> /xfa/xd8 <Private Use>
-+<UE20E> /xfa/xd9 <Private Use>
-+<UE20F> /xfa/xda <Private Use>
-+<UE210> /xfa/xdb <Private Use>
-+<UE211> /xfa/xdc <Private Use>
-+<UE212> /xfa/xdd <Private Use>
-+<UE213> /xfa/xde <Private Use>
-+<UE214> /xfa/xdf <Private Use>
-+<UE215> /xfa/xe0 <Private Use>
-+<UE216> /xfa/xe1 <Private Use>
-+<UE217> /xfa/xe2 <Private Use>
-+<UE218> /xfa/xe3 <Private Use>
-+<UE219> /xfa/xe4 <Private Use>
-+<UE21A> /xfa/xe5 <Private Use>
-+<UE21B> /xfa/xe6 <Private Use>
-+<UE21C> /xfa/xe7 <Private Use>
-+<UE21D> /xfa/xe8 <Private Use>
-+<UE21E> /xfa/xe9 <Private Use>
-+<UE21F> /xfa/xea <Private Use>
-+<UE220> /xfa/xeb <Private Use>
-+<UE221> /xfa/xec <Private Use>
-+<UE222> /xfa/xed <Private Use>
-+<UE223> /xfa/xee <Private Use>
-+<UE224> /xfa/xef <Private Use>
-+<UE225> /xfa/xf0 <Private Use>
-+<UE226> /xfa/xf1 <Private Use>
-+<UE227> /xfa/xf2 <Private Use>
-+<UE228> /xfa/xf3 <Private Use>
-+<UE229> /xfa/xf4 <Private Use>
-+<UE22A> /xfa/xf5 <Private Use>
-+<UE22B> /xfa/xf6 <Private Use>
-+<UE22C> /xfa/xf7 <Private Use>
-+<UE22D> /xfa/xf8 <Private Use>
-+<UE22E> /xfa/xf9 <Private Use>
-+<UE22F> /xfa/xfa <Private Use>
-+<UE230> /xfa/xfb <Private Use>
-+<UE231> /xfa/xfc <Private Use>
-+<UE232> /xfa/xfd <Private Use>
-+<UE233> /xfa/xfe <Private Use>
-+<UE234> /xfb/xa1 <Private Use>
-+<UE235> /xfb/xa2 <Private Use>
-+<UE236> /xfb/xa3 <Private Use>
-+<UE237> /xfb/xa4 <Private Use>
-+<UE238> /xfb/xa5 <Private Use>
-+<UE239> /xfb/xa6 <Private Use>
-+<UE23A> /xfb/xa7 <Private Use>
-+<UE23B> /xfb/xa8 <Private Use>
-+<UE23C> /xfb/xa9 <Private Use>
-+<UE23D> /xfb/xaa <Private Use>
-+<UE23E> /xfb/xab <Private Use>
-+<UE23F> /xfb/xac <Private Use>
-+<UE240> /xfb/xad <Private Use>
-+<UE241> /xfb/xae <Private Use>
-+<UE242> /xfb/xaf <Private Use>
-+<UE243> /xfb/xb0 <Private Use>
-+<UE244> /xfb/xb1 <Private Use>
-+<UE245> /xfb/xb2 <Private Use>
-+<UE246> /xfb/xb3 <Private Use>
-+<UE247> /xfb/xb4 <Private Use>
-+<UE248> /xfb/xb5 <Private Use>
-+<UE249> /xfb/xb6 <Private Use>
-+<UE24A> /xfb/xb7 <Private Use>
-+<UE24B> /xfb/xb8 <Private Use>
-+<UE24C> /xfb/xb9 <Private Use>
-+<UE24D> /xfb/xba <Private Use>
-+<UE24E> /xfb/xbb <Private Use>
-+<UE24F> /xfb/xbc <Private Use>
-+<UE250> /xfb/xbd <Private Use>
-+<UE251> /xfb/xbe <Private Use>
-+<UE252> /xfb/xbf <Private Use>
-+<UE253> /xfb/xc0 <Private Use>
-+<UE254> /xfb/xc1 <Private Use>
-+<UE255> /xfb/xc2 <Private Use>
-+<UE256> /xfb/xc3 <Private Use>
-+<UE257> /xfb/xc4 <Private Use>
-+<UE258> /xfb/xc5 <Private Use>
-+<UE259> /xfb/xc6 <Private Use>
-+<UE25A> /xfb/xc7 <Private Use>
-+<UE25B> /xfb/xc8 <Private Use>
-+<UE25C> /xfb/xc9 <Private Use>
-+<UE25D> /xfb/xca <Private Use>
-+<UE25E> /xfb/xcb <Private Use>
-+<UE25F> /xfb/xcc <Private Use>
-+<UE260> /xfb/xcd <Private Use>
-+<UE261> /xfb/xce <Private Use>
-+<UE262> /xfb/xcf <Private Use>
-+<UE263> /xfb/xd0 <Private Use>
-+<UE264> /xfb/xd1 <Private Use>
-+<UE265> /xfb/xd2 <Private Use>
-+<UE266> /xfb/xd3 <Private Use>
-+<UE267> /xfb/xd4 <Private Use>
-+<UE268> /xfb/xd5 <Private Use>
-+<UE269> /xfb/xd6 <Private Use>
-+<UE26A> /xfb/xd7 <Private Use>
-+<UE26B> /xfb/xd8 <Private Use>
-+<UE26C> /xfb/xd9 <Private Use>
-+<UE26D> /xfb/xda <Private Use>
-+<UE26E> /xfb/xdb <Private Use>
-+<UE26F> /xfb/xdc <Private Use>
-+<UE270> /xfb/xdd <Private Use>
-+<UE271> /xfb/xde <Private Use>
-+<UE272> /xfb/xdf <Private Use>
-+<UE273> /xfb/xe0 <Private Use>
-+<UE274> /xfb/xe1 <Private Use>
-+<UE275> /xfb/xe2 <Private Use>
-+<UE276> /xfb/xe3 <Private Use>
-+<UE277> /xfb/xe4 <Private Use>
-+<UE278> /xfb/xe5 <Private Use>
-+<UE279> /xfb/xe6 <Private Use>
-+<UE27A> /xfb/xe7 <Private Use>
-+<UE27B> /xfb/xe8 <Private Use>
-+<UE27C> /xfb/xe9 <Private Use>
-+<UE27D> /xfb/xea <Private Use>
-+<UE27E> /xfb/xeb <Private Use>
-+<UE27F> /xfb/xec <Private Use>
-+<UE280> /xfb/xed <Private Use>
-+<UE281> /xfb/xee <Private Use>
-+<UE282> /xfb/xef <Private Use>
-+<UE283> /xfb/xf0 <Private Use>
-+<UE284> /xfb/xf1 <Private Use>
-+<UE285> /xfb/xf2 <Private Use>
-+<UE286> /xfb/xf3 <Private Use>
-+<UE287> /xfb/xf4 <Private Use>
-+<UE288> /xfb/xf5 <Private Use>
-+<UE289> /xfb/xf6 <Private Use>
-+<UE28A> /xfb/xf7 <Private Use>
-+<UE28B> /xfb/xf8 <Private Use>
-+<UE28C> /xfb/xf9 <Private Use>
-+<UE28D> /xfb/xfa <Private Use>
-+<UE28E> /xfb/xfb <Private Use>
-+<UE28F> /xfb/xfc <Private Use>
-+<UE290> /xfb/xfd <Private Use>
-+<UE291> /xfb/xfe <Private Use>
-+<UE292> /xfc/xa1 <Private Use>
-+<UE293> /xfc/xa2 <Private Use>
-+<UE294> /xfc/xa3 <Private Use>
-+<UE295> /xfc/xa4 <Private Use>
-+<UE296> /xfc/xa5 <Private Use>
-+<UE297> /xfc/xa6 <Private Use>
-+<UE298> /xfc/xa7 <Private Use>
-+<UE299> /xfc/xa8 <Private Use>
-+<UE29A> /xfc/xa9 <Private Use>
-+<UE29B> /xfc/xaa <Private Use>
-+<UE29C> /xfc/xab <Private Use>
-+<UE29D> /xfc/xac <Private Use>
-+<UE29E> /xfc/xad <Private Use>
-+<UE29F> /xfc/xae <Private Use>
-+<UE2A0> /xfc/xaf <Private Use>
-+<UE2A1> /xfc/xb0 <Private Use>
-+<UE2A2> /xfc/xb1 <Private Use>
-+<UE2A3> /xfc/xb2 <Private Use>
-+<UE2A4> /xfc/xb3 <Private Use>
-+<UE2A5> /xfc/xb4 <Private Use>
-+<UE2A6> /xfc/xb5 <Private Use>
-+<UE2A7> /xfc/xb6 <Private Use>
-+<UE2A8> /xfc/xb7 <Private Use>
-+<UE2A9> /xfc/xb8 <Private Use>
-+<UE2AA> /xfc/xb9 <Private Use>
-+<UE2AB> /xfc/xba <Private Use>
-+<UE2AC> /xfc/xbb <Private Use>
-+<UE2AD> /xfc/xbc <Private Use>
-+<UE2AE> /xfc/xbd <Private Use>
-+<UE2AF> /xfc/xbe <Private Use>
-+<UE2B0> /xfc/xbf <Private Use>
-+<UE2B1> /xfc/xc0 <Private Use>
-+<UE2B2> /xfc/xc1 <Private Use>
-+<UE2B3> /xfc/xc2 <Private Use>
-+<UE2B4> /xfc/xc3 <Private Use>
-+<UE2B5> /xfc/xc4 <Private Use>
-+<UE2B6> /xfc/xc5 <Private Use>
-+<UE2B7> /xfc/xc6 <Private Use>
-+<UE2B8> /xfc/xc7 <Private Use>
-+<UE2B9> /xfc/xc8 <Private Use>
-+<UE2BA> /xfc/xc9 <Private Use>
-+<UE2BB> /xfc/xca <Private Use>
-+<UE2BC> /xfc/xcb <Private Use>
-+<UE2BD> /xfc/xcc <Private Use>
-+<UE2BE> /xfc/xcd <Private Use>
-+<UE2BF> /xfc/xce <Private Use>
-+<UE2C0> /xfc/xcf <Private Use>
-+<UE2C1> /xfc/xd0 <Private Use>
-+<UE2C2> /xfc/xd1 <Private Use>
-+<UE2C3> /xfc/xd2 <Private Use>
-+<UE2C4> /xfc/xd3 <Private Use>
-+<UE2C5> /xfc/xd4 <Private Use>
-+<UE2C6> /xfc/xd5 <Private Use>
-+<UE2C7> /xfc/xd6 <Private Use>
-+<UE2C8> /xfc/xd7 <Private Use>
-+<UE2C9> /xfc/xd8 <Private Use>
-+<UE2CA> /xfc/xd9 <Private Use>
-+<UE2CB> /xfc/xda <Private Use>
-+<UE2CC> /xfc/xdb <Private Use>
-+<UE2CD> /xfc/xdc <Private Use>
-+<UE2CE> /xfc/xdd <Private Use>
-+<UE2CF> /xfc/xde <Private Use>
-+<UE2D0> /xfc/xdf <Private Use>
-+<UE2D1> /xfc/xe0 <Private Use>
-+<UE2D2> /xfc/xe1 <Private Use>
-+<UE2D3> /xfc/xe2 <Private Use>
-+<UE2D4> /xfc/xe3 <Private Use>
-+<UE2D5> /xfc/xe4 <Private Use>
-+<UE2D6> /xfc/xe5 <Private Use>
-+<UE2D7> /xfc/xe6 <Private Use>
-+<UE2D8> /xfc/xe7 <Private Use>
-+<UE2D9> /xfc/xe8 <Private Use>
-+<UE2DA> /xfc/xe9 <Private Use>
-+<UE2DB> /xfc/xea <Private Use>
-+<UE2DC> /xfc/xeb <Private Use>
-+<UE2DD> /xfc/xec <Private Use>
-+<UE2DE> /xfc/xed <Private Use>
-+<UE2DF> /xfc/xee <Private Use>
-+<UE2E0> /xfc/xef <Private Use>
-+<UE2E1> /xfc/xf0 <Private Use>
-+<UE2E2> /xfc/xf1 <Private Use>
-+<UE2E3> /xfc/xf2 <Private Use>
-+<UE2E4> /xfc/xf3 <Private Use>
-+<UE2E5> /xfc/xf4 <Private Use>
-+<UE2E6> /xfc/xf5 <Private Use>
-+<UE2E7> /xfc/xf6 <Private Use>
-+<UE2E8> /xfc/xf7 <Private Use>
-+<UE2E9> /xfc/xf8 <Private Use>
-+<UE2EA> /xfc/xf9 <Private Use>
-+<UE2EB> /xfc/xfa <Private Use>
-+<UE2EC> /xfc/xfb <Private Use>
-+<UE2ED> /xfc/xfc <Private Use>
-+<UE2EE> /xfc/xfd <Private Use>
-+<UE2EF> /xfc/xfe <Private Use>
-+<UE2F0> /xfd/xa1 <Private Use>
-+<UE2F1> /xfd/xa2 <Private Use>
-+<UE2F2> /xfd/xa3 <Private Use>
-+<UE2F3> /xfd/xa4 <Private Use>
-+<UE2F4> /xfd/xa5 <Private Use>
-+<UE2F5> /xfd/xa6 <Private Use>
-+<UE2F6> /xfd/xa7 <Private Use>
-+<UE2F7> /xfd/xa8 <Private Use>
-+<UE2F8> /xfd/xa9 <Private Use>
-+<UE2F9> /xfd/xaa <Private Use>
-+<UE2FA> /xfd/xab <Private Use>
-+<UE2FB> /xfd/xac <Private Use>
-+<UE2FC> /xfd/xad <Private Use>
-+<UE2FD> /xfd/xae <Private Use>
-+<UE2FE> /xfd/xaf <Private Use>
-+<UE2FF> /xfd/xb0 <Private Use>
-+<UE300> /xfd/xb1 <Private Use>
-+<UE301> /xfd/xb2 <Private Use>
-+<UE302> /xfd/xb3 <Private Use>
-+<UE303> /xfd/xb4 <Private Use>
-+<UE304> /xfd/xb5 <Private Use>
-+<UE305> /xfd/xb6 <Private Use>
-+<UE306> /xfd/xb7 <Private Use>
-+<UE307> /xfd/xb8 <Private Use>
-+<UE308> /xfd/xb9 <Private Use>
-+<UE309> /xfd/xba <Private Use>
-+<UE30A> /xfd/xbb <Private Use>
-+<UE30B> /xfd/xbc <Private Use>
-+<UE30C> /xfd/xbd <Private Use>
-+<UE30D> /xfd/xbe <Private Use>
-+<UE30E> /xfd/xbf <Private Use>
-+<UE30F> /xfd/xc0 <Private Use>
-+<UE310> /xfd/xc1 <Private Use>
-+<UE311> /xfd/xc2 <Private Use>
-+<UE312> /xfd/xc3 <Private Use>
-+<UE313> /xfd/xc4 <Private Use>
-+<UE314> /xfd/xc5 <Private Use>
-+<UE315> /xfd/xc6 <Private Use>
-+<UE316> /xfd/xc7 <Private Use>
-+<UE317> /xfd/xc8 <Private Use>
-+<UE318> /xfd/xc9 <Private Use>
-+<UE319> /xfd/xca <Private Use>
-+<UE31A> /xfd/xcb <Private Use>
-+<UE31B> /xfd/xcc <Private Use>
-+<UE31C> /xfd/xcd <Private Use>
-+<UE31D> /xfd/xce <Private Use>
-+<UE31E> /xfd/xcf <Private Use>
-+<UE31F> /xfd/xd0 <Private Use>
-+<UE320> /xfd/xd1 <Private Use>
-+<UE321> /xfd/xd2 <Private Use>
-+<UE322> /xfd/xd3 <Private Use>
-+<UE323> /xfd/xd4 <Private Use>
-+<UE324> /xfd/xd5 <Private Use>
-+<UE325> /xfd/xd6 <Private Use>
-+<UE326> /xfd/xd7 <Private Use>
-+<UE327> /xfd/xd8 <Private Use>
-+<UE328> /xfd/xd9 <Private Use>
-+<UE329> /xfd/xda <Private Use>
-+<UE32A> /xfd/xdb <Private Use>
-+<UE32B> /xfd/xdc <Private Use>
-+<UE32C> /xfd/xdd <Private Use>
-+<UE32D> /xfd/xde <Private Use>
-+<UE32E> /xfd/xdf <Private Use>
-+<UE32F> /xfd/xe0 <Private Use>
-+<UE330> /xfd/xe1 <Private Use>
-+<UE331> /xfd/xe2 <Private Use>
-+<UE332> /xfd/xe3 <Private Use>
-+<UE333> /xfd/xe4 <Private Use>
-+<UE334> /xfd/xe5 <Private Use>
-+<UE335> /xfd/xe6 <Private Use>
-+<UE336> /xfd/xe7 <Private Use>
-+<UE337> /xfd/xe8 <Private Use>
-+<UE338> /xfd/xe9 <Private Use>
-+<UE339> /xfd/xea <Private Use>
-+<UE33A> /xfd/xeb <Private Use>
-+<UE33B> /xfd/xec <Private Use>
-+<UE33C> /xfd/xed <Private Use>
-+<UE33D> /xfd/xee <Private Use>
-+<UE33E> /xfd/xef <Private Use>
-+<UE33F> /xfd/xf0 <Private Use>
-+<UE340> /xfd/xf1 <Private Use>
-+<UE341> /xfd/xf2 <Private Use>
-+<UE342> /xfd/xf3 <Private Use>
-+<UE343> /xfd/xf4 <Private Use>
-+<UE344> /xfd/xf5 <Private Use>
-+<UE345> /xfd/xf6 <Private Use>
-+<UE346> /xfd/xf7 <Private Use>
-+<UE347> /xfd/xf8 <Private Use>
-+<UE348> /xfd/xf9 <Private Use>
-+<UE349> /xfd/xfa <Private Use>
-+<UE34A> /xfd/xfb <Private Use>
-+<UE34B> /xfd/xfc <Private Use>
-+<UE34C> /xfd/xfd <Private Use>
-+<UE34D> /xfd/xfe <Private Use>
-+<UE34E> /xfe/xa1 <Private Use>
-+<UE34F> /xfe/xa2 <Private Use>
-+<UE350> /xfe/xa3 <Private Use>
-+<UE351> /xfe/xa4 <Private Use>
-+<UE352> /xfe/xa5 <Private Use>
-+<UE353> /xfe/xa6 <Private Use>
-+<UE354> /xfe/xa7 <Private Use>
-+<UE355> /xfe/xa8 <Private Use>
-+<UE356> /xfe/xa9 <Private Use>
-+<UE357> /xfe/xaa <Private Use>
-+<UE358> /xfe/xab <Private Use>
-+<UE359> /xfe/xac <Private Use>
-+<UE35A> /xfe/xad <Private Use>
-+<UE35B> /xfe/xae <Private Use>
-+<UE35C> /xfe/xaf <Private Use>
-+<UE35D> /xfe/xb0 <Private Use>
-+<UE35E> /xfe/xb1 <Private Use>
-+<UE35F> /xfe/xb2 <Private Use>
-+<UE360> /xfe/xb3 <Private Use>
-+<UE361> /xfe/xb4 <Private Use>
-+<UE362> /xfe/xb5 <Private Use>
-+<UE363> /xfe/xb6 <Private Use>
-+<UE364> /xfe/xb7 <Private Use>
-+<UE365> /xfe/xb8 <Private Use>
-+<UE366> /xfe/xb9 <Private Use>
-+<UE367> /xfe/xba <Private Use>
-+<UE368> /xfe/xbb <Private Use>
-+<UE369> /xfe/xbc <Private Use>
-+<UE36A> /xfe/xbd <Private Use>
-+<UE36B> /xfe/xbe <Private Use>
-+<UE36C> /xfe/xbf <Private Use>
-+<UE36D> /xfe/xc0 <Private Use>
-+<UE36E> /xfe/xc1 <Private Use>
-+<UE36F> /xfe/xc2 <Private Use>
-+<UE370> /xfe/xc3 <Private Use>
-+<UE371> /xfe/xc4 <Private Use>
-+<UE372> /xfe/xc5 <Private Use>
-+<UE373> /xfe/xc6 <Private Use>
-+<UE374> /xfe/xc7 <Private Use>
-+<UE375> /xfe/xc8 <Private Use>
-+<UE376> /xfe/xc9 <Private Use>
-+<UE377> /xfe/xca <Private Use>
-+<UE378> /xfe/xcb <Private Use>
-+<UE379> /xfe/xcc <Private Use>
-+<UE37A> /xfe/xcd <Private Use>
-+<UE37B> /xfe/xce <Private Use>
-+<UE37C> /xfe/xcf <Private Use>
-+<UE37D> /xfe/xd0 <Private Use>
-+<UE37E> /xfe/xd1 <Private Use>
-+<UE37F> /xfe/xd2 <Private Use>
-+<UE380> /xfe/xd3 <Private Use>
-+<UE381> /xfe/xd4 <Private Use>
-+<UE382> /xfe/xd5 <Private Use>
-+<UE383> /xfe/xd6 <Private Use>
-+<UE384> /xfe/xd7 <Private Use>
-+<UE385> /xfe/xd8 <Private Use>
-+<UE386> /xfe/xd9 <Private Use>
-+<UE387> /xfe/xda <Private Use>
-+<UE388> /xfe/xdb <Private Use>
-+<UE389> /xfe/xdc <Private Use>
-+<UE38A> /xfe/xdd <Private Use>
-+<UE38B> /xfe/xde <Private Use>
-+<UE38C> /xfe/xdf <Private Use>
-+<UE38D> /xfe/xe0 <Private Use>
-+<UE38E> /xfe/xe1 <Private Use>
-+<UE38F> /xfe/xe2 <Private Use>
-+<UE390> /xfe/xe3 <Private Use>
-+<UE391> /xfe/xe4 <Private Use>
-+<UE392> /xfe/xe5 <Private Use>
-+<UE393> /xfe/xe6 <Private Use>
-+<UE394> /xfe/xe7 <Private Use>
-+<UE395> /xfe/xe8 <Private Use>
-+<UE396> /xfe/xe9 <Private Use>
-+<UE397> /xfe/xea <Private Use>
-+<UE398> /xfe/xeb <Private Use>
-+<UE399> /xfe/xec <Private Use>
-+<UE39A> /xfe/xed <Private Use>
-+<UE39B> /xfe/xee <Private Use>
-+<UE39C> /xfe/xef <Private Use>
-+<UE39D> /xfe/xf0 <Private Use>
-+<UE39E> /xfe/xf1 <Private Use>
-+<UE39F> /xfe/xf2 <Private Use>
-+<UE3A0> /xfe/xf3 <Private Use>
-+<UE3A1> /xfe/xf4 <Private Use>
-+<UE3A2> /xfe/xf5 <Private Use>
-+<UE3A3> /xfe/xf6 <Private Use>
-+<UE3A4> /xfe/xf7 <Private Use>
-+<UE3A5> /xfe/xf8 <Private Use>
-+<UE3A6> /xfe/xf9 <Private Use>
-+<UE3A7> /xfe/xfa <Private Use>
-+<UE3A8> /xfe/xfb <Private Use>
-+<UE3A9> /xfe/xfc <Private Use>
-+<UE3AA> /xfe/xfd <Private Use>
-+<UE3AB> /xfe/xfe <Private Use>
-+
-+%
-+% JIS X 0212
-+%
-+<U02D8> /x8f/xa2/xaf BREVE
-+<U02C7> /x8f/xa2/xb0 CARON (Mandarin Chinese third tone)
-+<U00B8> /x8f/xa2/xb1 CEDILLA
-+<U02D9> /x8f/xa2/xb2 DOT ABOVE (Mandarin Chinese light tone)
-+<U02DD> /x8f/xa2/xb3 DOUBLE ACUTE ACCENT
-+<U00AF> /x8f/xa2/xb4 MACRON
-+<U02DB> /x8f/xa2/xb5 OGONEK
-+<U02DA> /x8f/xa2/xb6 RING ABOVE
-+%IRREVERSIBLE%<UFF5E> /x8f/xa2/xb7 FULLWIDTH TILDE
-+<U0384> /x8f/xa2/xb8 GREEK TONOS
-+<U0385> /x8f/xa2/xb9 GREEK DIALYTIKA TONOS
-+<U00A1> /x8f/xa2/xc2 INVERTED EXCLAMATION MARK
-+<UFFE4> /x8f/xa2/xc3 FULLWIDTH BROKEN BAR
-+<U00BF> /x8f/xa2/xc4 INVERTED QUESTION MARK
-+<U00BA> /x8f/xa2/xeb MASCULINE ORDINAL INDICATOR
-+<U00AA> /x8f/xa2/xec FEMININE ORDINAL INDICATOR
-+<U00A9> /x8f/xa2/xed COPYRIGHT SIGN
-+<U00AE> /x8f/xa2/xee REGISTERED SIGN
-+<U2122> /x8f/xa2/xef TRADE MARK SIGN
-+<U00A4> /x8f/xa2/xf0 CURRENCY SIGN
-+%IRREVERSIBLE%<U2116> /x8f/xa2/xf1 NUMERO SIGN
-+<U0386> /x8f/xa6/xe1 GREEK CAPITAL LETTER ALPHA WITH TONOS
-+<U0388> /x8f/xa6/xe2 GREEK CAPITAL LETTER EPSILON WITH TONOS
-+<U0389> /x8f/xa6/xe3 GREEK CAPITAL LETTER ETA WITH TONOS
-+<U038A> /x8f/xa6/xe4 GREEK CAPITAL LETTER IOTA WITH TONOS
-+<U03AA> /x8f/xa6/xe5 GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-+<U038C> /x8f/xa6/xe7 GREEK CAPITAL LETTER OMICRON WITH TONOS
-+<U038E> /x8f/xa6/xe9 GREEK CAPITAL LETTER UPSILON WITH TONOS
-+<U03AB> /x8f/xa6/xea GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-+<U038F> /x8f/xa6/xec GREEK CAPITAL LETTER OMEGA WITH TONOS
-+<U03AC> /x8f/xa6/xf1 GREEK SMALL LETTER ALPHA WITH TONOS
-+<U03AD> /x8f/xa6/xf2 GREEK SMALL LETTER EPSILON WITH TONOS
-+<U03AE> /x8f/xa6/xf3 GREEK SMALL LETTER ETA WITH TONOS
-+<U03AF> /x8f/xa6/xf4 GREEK SMALL LETTER IOTA WITH TONOS
-+<U03CA> /x8f/xa6/xf5 GREEK SMALL LETTER IOTA WITH DIALYTIKA
-+<U0390> /x8f/xa6/xf6 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-+<U03CC> /x8f/xa6/xf7 GREEK SMALL LETTER OMICRON WITH TONOS
-+<U03C2> /x8f/xa6/xf8 GREEK SMALL LETTER FINAL SIGMA
-+<U03CD> /x8f/xa6/xf9 GREEK SMALL LETTER UPSILON WITH TONOS
-+<U03CB> /x8f/xa6/xfa GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-+<U03B0> /x8f/xa6/xfb GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-+<U03CE> /x8f/xa6/xfc GREEK SMALL LETTER OMEGA WITH TONOS
-+<U0402> /x8f/xa7/xc2 CYRILLIC CAPITAL LETTER DJE
-+<U0403> /x8f/xa7/xc3 CYRILLIC CAPITAL LETTER GJE
-+<U0404> /x8f/xa7/xc4 CYRILLIC CAPITAL LETTER UKRAINIAN IE
-+<U0405> /x8f/xa7/xc5 CYRILLIC CAPITAL LETTER DZE
-+<U0406> /x8f/xa7/xc6 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-+<U0407> /x8f/xa7/xc7 CYRILLIC CAPITAL LETTER YI
-+<U0408> /x8f/xa7/xc8 CYRILLIC CAPITAL LETTER JE
-+<U0409> /x8f/xa7/xc9 CYRILLIC CAPITAL LETTER LJE
-+<U040A> /x8f/xa7/xca CYRILLIC CAPITAL LETTER NJE
-+<U040B> /x8f/xa7/xcb CYRILLIC CAPITAL LETTER TSHE
-+<U040C> /x8f/xa7/xcc CYRILLIC CAPITAL LETTER KJE
-+<U040E> /x8f/xa7/xcd CYRILLIC CAPITAL LETTER SHORT U
-+<U040F> /x8f/xa7/xce CYRILLIC CAPITAL LETTER DZHE
-+<U0452> /x8f/xa7/xf2 CYRILLIC SMALL LETTER DJE
-+<U0453> /x8f/xa7/xf3 CYRILLIC SMALL LETTER GJE
-+<U0454> /x8f/xa7/xf4 CYRILLIC SMALL LETTER UKRAINIAN IE
-+<U0455> /x8f/xa7/xf5 CYRILLIC SMALL LETTER DZE
-+<U0456> /x8f/xa7/xf6 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-+<U0457> /x8f/xa7/xf7 CYRILLIC SMALL LETTER YI
-+<U0458> /x8f/xa7/xf8 CYRILLIC SMALL LETTER JE
-+<U0459> /x8f/xa7/xf9 CYRILLIC SMALL LETTER LJE
-+<U045A> /x8f/xa7/xfa CYRILLIC SMALL LETTER NJE
-+<U045B> /x8f/xa7/xfb CYRILLIC SMALL LETTER TSHE
-+<U045C> /x8f/xa7/xfc CYRILLIC SMALL LETTER KJE
-+<U045E> /x8f/xa7/xfd CYRILLIC SMALL LETTER SHORT U
-+<U045F> /x8f/xa7/xfe CYRILLIC SMALL LETTER DZHE
-+<U00C6> /x8f/xa9/xa1 LATIN CAPITAL LIGATURE AE
-+<U0110> /x8f/xa9/xa2 LATIN CAPITAL LETTER D WITH STROKE
-+<U0126> /x8f/xa9/xa4 LATIN CAPITAL LETTER H WITH STROKE
-+<U0132> /x8f/xa9/xa6 LATIN CAPITAL LIGATURE IJ
-+<U0141> /x8f/xa9/xa8 LATIN CAPITAL LETTER L WITH STROKE
-+<U013F> /x8f/xa9/xa9 LATIN CAPITAL LETTER L WITH MIDDLE DOT
-+<U014A> /x8f/xa9/xab LATIN CAPITAL LETTER ENG
-+<U00D8> /x8f/xa9/xac LATIN CAPITAL LETTER O WITH STROKE
-+<U0152> /x8f/xa9/xad LATIN CAPITAL LIGATURE OE
-+<U0166> /x8f/xa9/xaf LATIN CAPITAL LETTER T WITH STROKE
-+<U00DE> /x8f/xa9/xb0 LATIN CAPITAL LETTER THORN
-+<U00E6> /x8f/xa9/xc1 LATIN SMALL LIGATURE AE
-+<U0111> /x8f/xa9/xc2 LATIN SMALL LETTER D WITH STROKE
-+<U00F0> /x8f/xa9/xc3 LATIN SMALL LETTER ETH
-+<U0127> /x8f/xa9/xc4 LATIN SMALL LETTER H WITH STROKE
-+<U0131> /x8f/xa9/xc5 LATIN SMALL LETTER DOTLESS I
-+<U0133> /x8f/xa9/xc6 LATIN SMALL LIGATURE IJ
-+<U0138> /x8f/xa9/xc7 LATIN SMALL LETTER KRA
-+<U0142> /x8f/xa9/xc8 LATIN SMALL LETTER L WITH STROKE
-+<U0140> /x8f/xa9/xc9 LATIN SMALL LETTER L WITH MIDDLE DOT
-+<U0149> /x8f/xa9/xca LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-+<U014B> /x8f/xa9/xcb LATIN SMALL LETTER ENG
-+<U00F8> /x8f/xa9/xcc LATIN SMALL LETTER O WITH STROKE
-+<U0153> /x8f/xa9/xcd LATIN SMALL LIGATURE OE
-+<U00DF> /x8f/xa9/xce LATIN SMALL LETTER SHARP S
-+<U0167> /x8f/xa9/xcf LATIN SMALL LETTER T WITH STROKE
-+<U00FE> /x8f/xa9/xd0 LATIN SMALL LETTER THORN
-+<U00C1> /x8f/xaa/xa1 LATIN CAPITAL LETTER A WITH ACUTE
-+<U00C0> /x8f/xaa/xa2 LATIN CAPITAL LETTER A WITH GRAVE
-+<U00C4> /x8f/xaa/xa3 LATIN CAPITAL LETTER A WITH DIAERESIS
-+<U00C2> /x8f/xaa/xa4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-+<U0102> /x8f/xaa/xa5 LATIN CAPITAL LETTER A WITH BREVE
-+<U01CD> /x8f/xaa/xa6 LATIN CAPITAL LETTER A WITH CARON
-+<U0100> /x8f/xaa/xa7 LATIN CAPITAL LETTER A WITH MACRON
-+<U0104> /x8f/xaa/xa8 LATIN CAPITAL LETTER A WITH OGONEK
-+<U00C5> /x8f/xaa/xa9 LATIN CAPITAL LETTER A WITH RING ABOVE
-+<U00C3> /x8f/xaa/xaa LATIN CAPITAL LETTER A WITH TILDE
-+<U0106> /x8f/xaa/xab LATIN CAPITAL LETTER C WITH ACUTE
-+<U0108> /x8f/xaa/xac LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-+<U010C> /x8f/xaa/xad LATIN CAPITAL LETTER C WITH CARON
-+<U00C7> /x8f/xaa/xae LATIN CAPITAL LETTER C WITH CEDILLA
-+<U010A> /x8f/xaa/xaf LATIN CAPITAL LETTER C WITH DOT ABOVE
-+<U010E> /x8f/xaa/xb0 LATIN CAPITAL LETTER D WITH CARON
-+<U00C9> /x8f/xaa/xb1 LATIN CAPITAL LETTER E WITH ACUTE
-+<U00C8> /x8f/xaa/xb2 LATIN CAPITAL LETTER E WITH GRAVE
-+<U00CB> /x8f/xaa/xb3 LATIN CAPITAL LETTER E WITH DIAERESIS
-+<U00CA> /x8f/xaa/xb4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-+<U011A> /x8f/xaa/xb5 LATIN CAPITAL LETTER E WITH CARON
-+<U0116> /x8f/xaa/xb6 LATIN CAPITAL LETTER E WITH DOT ABOVE
-+<U0112> /x8f/xaa/xb7 LATIN CAPITAL LETTER E WITH MACRON
-+<U0118> /x8f/xaa/xb8 LATIN CAPITAL LETTER E WITH OGONEK
-+<U011C> /x8f/xaa/xba LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-+<U011E> /x8f/xaa/xbb LATIN CAPITAL LETTER G WITH BREVE
-+<U0122> /x8f/xaa/xbc LATIN CAPITAL LETTER G WITH CEDILLA
-+<U0120> /x8f/xaa/xbd LATIN CAPITAL LETTER G WITH DOT ABOVE
-+<U0124> /x8f/xaa/xbe LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-+<U00CD> /x8f/xaa/xbf LATIN CAPITAL LETTER I WITH ACUTE
-+<U00CC> /x8f/xaa/xc0 LATIN CAPITAL LETTER I WITH GRAVE
-+<U00CF> /x8f/xaa/xc1 LATIN CAPITAL LETTER I WITH DIAERESIS
-+<U00CE> /x8f/xaa/xc2 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-+<U01CF> /x8f/xaa/xc3 LATIN CAPITAL LETTER I WITH CARON
-+<U0130> /x8f/xaa/xc4 LATIN CAPITAL LETTER I WITH DOT ABOVE
-+<U012A> /x8f/xaa/xc5 LATIN CAPITAL LETTER I WITH MACRON
-+<U012E> /x8f/xaa/xc6 LATIN CAPITAL LETTER I WITH OGONEK
-+<U0128> /x8f/xaa/xc7 LATIN CAPITAL LETTER I WITH TILDE
-+<U0134> /x8f/xaa/xc8 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-+<U0136> /x8f/xaa/xc9 LATIN CAPITAL LETTER K WITH CEDILLA
-+<U0139> /x8f/xaa/xca LATIN CAPITAL LETTER L WITH ACUTE
-+<U013D> /x8f/xaa/xcb LATIN CAPITAL LETTER L WITH CARON
-+<U013B> /x8f/xaa/xcc LATIN CAPITAL LETTER L WITH CEDILLA
-+<U0143> /x8f/xaa/xcd LATIN CAPITAL LETTER N WITH ACUTE
-+<U0147> /x8f/xaa/xce LATIN CAPITAL LETTER N WITH CARON
-+<U0145> /x8f/xaa/xcf LATIN CAPITAL LETTER N WITH CEDILLA
-+<U00D1> /x8f/xaa/xd0 LATIN CAPITAL LETTER N WITH TILDE
-+<U00D3> /x8f/xaa/xd1 LATIN CAPITAL LETTER O WITH ACUTE
-+<U00D2> /x8f/xaa/xd2 LATIN CAPITAL LETTER O WITH GRAVE
-+<U00D6> /x8f/xaa/xd3 LATIN CAPITAL LETTER O WITH DIAERESIS
-+<U00D4> /x8f/xaa/xd4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-+<U01D1> /x8f/xaa/xd5 LATIN CAPITAL LETTER O WITH CARON
-+<U0150> /x8f/xaa/xd6 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-+<U014C> /x8f/xaa/xd7 LATIN CAPITAL LETTER O WITH MACRON
-+<U00D5> /x8f/xaa/xd8 LATIN CAPITAL LETTER O WITH TILDE
-+<U0154> /x8f/xaa/xd9 LATIN CAPITAL LETTER R WITH ACUTE
-+<U0158> /x8f/xaa/xda LATIN CAPITAL LETTER R WITH CARON
-+<U0156> /x8f/xaa/xdb LATIN CAPITAL LETTER R WITH CEDILLA
-+<U015A> /x8f/xaa/xdc LATIN CAPITAL LETTER S WITH ACUTE
-+<U015C> /x8f/xaa/xdd LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-+<U0160> /x8f/xaa/xde LATIN CAPITAL LETTER S WITH CARON
-+<U015E> /x8f/xaa/xdf LATIN CAPITAL LETTER S WITH CEDILLA
-+<U0164> /x8f/xaa/xe0 LATIN CAPITAL LETTER T WITH CARON
-+<U0162> /x8f/xaa/xe1 LATIN CAPITAL LETTER T WITH CEDILLA
-+<U00DA> /x8f/xaa/xe2 LATIN CAPITAL LETTER U WITH ACUTE
-+<U00D9> /x8f/xaa/xe3 LATIN CAPITAL LETTER U WITH GRAVE
-+<U00DC> /x8f/xaa/xe4 LATIN CAPITAL LETTER U WITH DIAERESIS
-+<U00DB> /x8f/xaa/xe5 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-+<U016C> /x8f/xaa/xe6 LATIN CAPITAL LETTER U WITH BREVE
-+<U01D3> /x8f/xaa/xe7 LATIN CAPITAL LETTER U WITH CARON
-+<U0170> /x8f/xaa/xe8 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-+<U016A> /x8f/xaa/xe9 LATIN CAPITAL LETTER U WITH MACRON
-+<U0172> /x8f/xaa/xea LATIN CAPITAL LETTER U WITH OGONEK
-+<U016E> /x8f/xaa/xeb LATIN CAPITAL LETTER U WITH RING ABOVE
-+<U0168> /x8f/xaa/xec LATIN CAPITAL LETTER U WITH TILDE
-+<U01D7> /x8f/xaa/xed LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-+<U01DB> /x8f/xaa/xee LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-+<U01D9> /x8f/xaa/xef LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-+<U01D5> /x8f/xaa/xf0 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-+<U0174> /x8f/xaa/xf1 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-+<U00DD> /x8f/xaa/xf2 LATIN CAPITAL LETTER Y WITH ACUTE
-+<U0178> /x8f/xaa/xf3 LATIN CAPITAL LETTER Y WITH DIAERESIS
-+<U0176> /x8f/xaa/xf4 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-+<U0179> /x8f/xaa/xf5 LATIN CAPITAL LETTER Z WITH ACUTE
-+<U017D> /x8f/xaa/xf6 LATIN CAPITAL LETTER Z WITH CARON
-+<U017B> /x8f/xaa/xf7 LATIN CAPITAL LETTER Z WITH DOT ABOVE
-+<U00E1> /x8f/xab/xa1 LATIN SMALL LETTER A WITH ACUTE
-+<U00E0> /x8f/xab/xa2 LATIN SMALL LETTER A WITH GRAVE
-+<U00E4> /x8f/xab/xa3 LATIN SMALL LETTER A WITH DIAERESIS
-+<U00E2> /x8f/xab/xa4 LATIN SMALL LETTER A WITH CIRCUMFLEX
-+<U0103> /x8f/xab/xa5 LATIN SMALL LETTER A WITH BREVE
-+<U01CE> /x8f/xab/xa6 LATIN SMALL LETTER A WITH CARON
-+<U0101> /x8f/xab/xa7 LATIN SMALL LETTER A WITH MACRON
-+<U0105> /x8f/xab/xa8 LATIN SMALL LETTER A WITH OGONEK
-+<U00E5> /x8f/xab/xa9 LATIN SMALL LETTER A WITH RING ABOVE
-+<U00E3> /x8f/xab/xaa LATIN SMALL LETTER A WITH TILDE
-+<U0107> /x8f/xab/xab LATIN SMALL LETTER C WITH ACUTE
-+<U0109> /x8f/xab/xac LATIN SMALL LETTER C WITH CIRCUMFLEX
-+<U010D> /x8f/xab/xad LATIN SMALL LETTER C WITH CARON
-+<U00E7> /x8f/xab/xae LATIN SMALL LETTER C WITH CEDILLA
-+<U010B> /x8f/xab/xaf LATIN SMALL LETTER C WITH DOT ABOVE
-+<U010F> /x8f/xab/xb0 LATIN SMALL LETTER D WITH CARON
-+<U00E9> /x8f/xab/xb1 LATIN SMALL LETTER E WITH ACUTE
-+<U00E8> /x8f/xab/xb2 LATIN SMALL LETTER E WITH GRAVE
-+<U00EB> /x8f/xab/xb3 LATIN SMALL LETTER E WITH DIAERESIS
-+<U00EA> /x8f/xab/xb4 LATIN SMALL LETTER E WITH CIRCUMFLEX
-+<U011B> /x8f/xab/xb5 LATIN SMALL LETTER E WITH CARON
-+<U0117> /x8f/xab/xb6 LATIN SMALL LETTER E WITH DOT ABOVE
-+<U0113> /x8f/xab/xb7 LATIN SMALL LETTER E WITH MACRON
-+<U0119> /x8f/xab/xb8 LATIN SMALL LETTER E WITH OGONEK
-+<U01F5> /x8f/xab/xb9 LATIN SMALL LETTER G WITH ACUTE
-+<U011D> /x8f/xab/xba LATIN SMALL LETTER G WITH CIRCUMFLEX
-+<U011F> /x8f/xab/xbb LATIN SMALL LETTER G WITH BREVE
-+<U0121> /x8f/xab/xbd LATIN SMALL LETTER G WITH DOT ABOVE
-+<U0125> /x8f/xab/xbe LATIN SMALL LETTER H WITH CIRCUMFLEX
-+<U00ED> /x8f/xab/xbf LATIN SMALL LETTER I WITH ACUTE
-+<U00EC> /x8f/xab/xc0 LATIN SMALL LETTER I WITH GRAVE
-+<U00EF> /x8f/xab/xc1 LATIN SMALL LETTER I WITH DIAERESIS
-+<U00EE> /x8f/xab/xc2 LATIN SMALL LETTER I WITH CIRCUMFLEX
-+<U01D0> /x8f/xab/xc3 LATIN SMALL LETTER I WITH CARON
-+<U012B> /x8f/xab/xc5 LATIN SMALL LETTER I WITH MACRON
-+<U012F> /x8f/xab/xc6 LATIN SMALL LETTER I WITH OGONEK
-+<U0129> /x8f/xab/xc7 LATIN SMALL LETTER I WITH TILDE
-+<U0135> /x8f/xab/xc8 LATIN SMALL LETTER J WITH CIRCUMFLEX
-+<U0137> /x8f/xab/xc9 LATIN SMALL LETTER K WITH CEDILLA
-+<U013A> /x8f/xab/xca LATIN SMALL LETTER L WITH ACUTE
-+<U013E> /x8f/xab/xcb LATIN SMALL LETTER L WITH CARON
-+<U013C> /x8f/xab/xcc LATIN SMALL LETTER L WITH CEDILLA
-+<U0144> /x8f/xab/xcd LATIN SMALL LETTER N WITH ACUTE
-+<U0148> /x8f/xab/xce LATIN SMALL LETTER N WITH CARON
-+<U0146> /x8f/xab/xcf LATIN SMALL LETTER N WITH CEDILLA
-+<U00F1> /x8f/xab/xd0 LATIN SMALL LETTER N WITH TILDE
-+<U00F3> /x8f/xab/xd1 LATIN SMALL LETTER O WITH ACUTE
-+<U00F2> /x8f/xab/xd2 LATIN SMALL LETTER O WITH GRAVE
-+<U00F6> /x8f/xab/xd3 LATIN SMALL LETTER O WITH DIAERESIS
-+<U00F4> /x8f/xab/xd4 LATIN SMALL LETTER O WITH CIRCUMFLEX
-+<U01D2> /x8f/xab/xd5 LATIN SMALL LETTER O WITH CARON
-+<U0151> /x8f/xab/xd6 LATIN SMALL LETTER O WITH DOUBLE ACUTE
-+<U014D> /x8f/xab/xd7 LATIN SMALL LETTER O WITH MACRON
-+<U00F5> /x8f/xab/xd8 LATIN SMALL LETTER O WITH TILDE
-+<U0155> /x8f/xab/xd9 LATIN SMALL LETTER R WITH ACUTE
-+<U0159> /x8f/xab/xda LATIN SMALL LETTER R WITH CARON
-+<U0157> /x8f/xab/xdb LATIN SMALL LETTER R WITH CEDILLA
-+<U015B> /x8f/xab/xdc LATIN SMALL LETTER S WITH ACUTE
-+<U015D> /x8f/xab/xdd LATIN SMALL LETTER S WITH CIRCUMFLEX
-+<U0161> /x8f/xab/xde LATIN SMALL LETTER S WITH CARON
-+<U015F> /x8f/xab/xdf LATIN SMALL LETTER S WITH CEDILLA
-+<U0165> /x8f/xab/xe0 LATIN SMALL LETTER T WITH CARON
-+<U0163> /x8f/xab/xe1 LATIN SMALL LETTER T WITH CEDILLA
-+<U00FA> /x8f/xab/xe2 LATIN SMALL LETTER U WITH ACUTE
-+<U00F9> /x8f/xab/xe3 LATIN SMALL LETTER U WITH GRAVE
-+<U00FC> /x8f/xab/xe4 LATIN SMALL LETTER U WITH DIAERESIS
-+<U00FB> /x8f/xab/xe5 LATIN SMALL LETTER U WITH CIRCUMFLEX
-+<U016D> /x8f/xab/xe6 LATIN SMALL LETTER U WITH BREVE
-+<U01D4> /x8f/xab/xe7 LATIN SMALL LETTER U WITH CARON
-+<U0171> /x8f/xab/xe8 LATIN SMALL LETTER U WITH DOUBLE ACUTE
-+<U016B> /x8f/xab/xe9 LATIN SMALL LETTER U WITH MACRON
-+<U0173> /x8f/xab/xea LATIN SMALL LETTER U WITH OGONEK
-+<U016F> /x8f/xab/xeb LATIN SMALL LETTER U WITH RING ABOVE
-+<U0169> /x8f/xab/xec LATIN SMALL LETTER U WITH TILDE
-+<U01D8> /x8f/xab/xed LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-+<U01DC> /x8f/xab/xee LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
-+<U01DA> /x8f/xab/xef LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-+<U01D6> /x8f/xab/xf0 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-+<U0175> /x8f/xab/xf1 LATIN SMALL LETTER W WITH CIRCUMFLEX
-+<U00FD> /x8f/xab/xf2 LATIN SMALL LETTER Y WITH ACUTE
-+<U00FF> /x8f/xab/xf3 LATIN SMALL LETTER Y WITH DIAERESIS
-+<U0177> /x8f/xab/xf4 LATIN SMALL LETTER Y WITH CIRCUMFLEX
-+<U017A> /x8f/xab/xf5 LATIN SMALL LETTER Z WITH ACUTE
-+<U017E> /x8f/xab/xf6 LATIN SMALL LETTER Z WITH CARON
-+<U017C> /x8f/xab/xf7 LATIN SMALL LETTER Z WITH DOT ABOVE
-+<U4E02> /x8f/xb0/xa1 <CJK>
-+<U4E04> /x8f/xb0/xa2 <CJK>
-+<U4E05> /x8f/xb0/xa3 <CJK>
-+<U4E0C> /x8f/xb0/xa4 <CJK>
-+<U4E12> /x8f/xb0/xa5 <CJK>
-+<U4E1F> /x8f/xb0/xa6 <CJK>
-+<U4E23> /x8f/xb0/xa7 <CJK>
-+<U4E24> /x8f/xb0/xa8 <CJK>
-+<U4E28> /x8f/xb0/xa9 <CJK>
-+<U4E2B> /x8f/xb0/xaa <CJK>
-+<U4E2E> /x8f/xb0/xab <CJK>
-+<U4E2F> /x8f/xb0/xac <CJK>
-+<U4E30> /x8f/xb0/xad <CJK>
-+<U4E35> /x8f/xb0/xae <CJK>
-+<U4E40> /x8f/xb0/xaf <CJK>
-+<U4E41> /x8f/xb0/xb0 <CJK>
-+<U4E44> /x8f/xb0/xb1 <CJK>
-+<U4E47> /x8f/xb0/xb2 <CJK>
-+<U4E51> /x8f/xb0/xb3 <CJK>
-+<U4E5A> /x8f/xb0/xb4 <CJK>
-+<U4E5C> /x8f/xb0/xb5 <CJK>
-+<U4E63> /x8f/xb0/xb6 <CJK>
-+<U4E68> /x8f/xb0/xb7 <CJK>
-+<U4E69> /x8f/xb0/xb8 <CJK>
-+<U4E74> /x8f/xb0/xb9 <CJK>
-+<U4E75> /x8f/xb0/xba <CJK>
-+<U4E79> /x8f/xb0/xbb <CJK>
-+<U4E7F> /x8f/xb0/xbc <CJK>
-+<U4E8D> /x8f/xb0/xbd <CJK>
-+<U4E96> /x8f/xb0/xbe <CJK>
-+<U4E97> /x8f/xb0/xbf <CJK>
-+<U4E9D> /x8f/xb0/xc0 <CJK>
-+<U4EAF> /x8f/xb0/xc1 <CJK>
-+<U4EB9> /x8f/xb0/xc2 <CJK>
-+<U4EC3> /x8f/xb0/xc3 <CJK>
-+<U4ED0> /x8f/xb0/xc4 <CJK>
-+<U4EDA> /x8f/xb0/xc5 <CJK>
-+<U4EDB> /x8f/xb0/xc6 <CJK>
-+<U4EE0> /x8f/xb0/xc7 <CJK>
-+<U4EE1> /x8f/xb0/xc8 <CJK>
-+<U4EE2> /x8f/xb0/xc9 <CJK>
-+<U4EE8> /x8f/xb0/xca <CJK>
-+<U4EEF> /x8f/xb0/xcb <CJK>
-+<U4EF1> /x8f/xb0/xcc <CJK>
-+<U4EF3> /x8f/xb0/xcd <CJK>
-+<U4EF5> /x8f/xb0/xce <CJK>
-+<U4EFD> /x8f/xb0/xcf <CJK>
-+<U4EFE> /x8f/xb0/xd0 <CJK>
-+<U4EFF> /x8f/xb0/xd1 <CJK>
-+<U4F00> /x8f/xb0/xd2 <CJK>
-+<U4F02> /x8f/xb0/xd3 <CJK>
-+<U4F03> /x8f/xb0/xd4 <CJK>
-+<U4F08> /x8f/xb0/xd5 <CJK>
-+<U4F0B> /x8f/xb0/xd6 <CJK>
-+<U4F0C> /x8f/xb0/xd7 <CJK>
-+<U4F12> /x8f/xb0/xd8 <CJK>
-+<U4F15> /x8f/xb0/xd9 <CJK>
-+<U4F16> /x8f/xb0/xda <CJK>
-+<U4F17> /x8f/xb0/xdb <CJK>
-+<U4F19> /x8f/xb0/xdc <CJK>
-+<U4F2E> /x8f/xb0/xdd <CJK>
-+<U4F31> /x8f/xb0/xde <CJK>
-+<U4F60> /x8f/xb0/xdf <CJK>
-+<U4F33> /x8f/xb0/xe0 <CJK>
-+<U4F35> /x8f/xb0/xe1 <CJK>
-+<U4F37> /x8f/xb0/xe2 <CJK>
-+<U4F39> /x8f/xb0/xe3 <CJK>
-+<U4F3B> /x8f/xb0/xe4 <CJK>
-+<U4F3E> /x8f/xb0/xe5 <CJK>
-+<U4F40> /x8f/xb0/xe6 <CJK>
-+<U4F42> /x8f/xb0/xe7 <CJK>
-+<U4F48> /x8f/xb0/xe8 <CJK>
-+<U4F49> /x8f/xb0/xe9 <CJK>
-+<U4F4B> /x8f/xb0/xea <CJK>
-+<U4F4C> /x8f/xb0/xeb <CJK>
-+<U4F52> /x8f/xb0/xec <CJK>
-+<U4F54> /x8f/xb0/xed <CJK>
-+<U4F56> /x8f/xb0/xee <CJK>
-+<U4F58> /x8f/xb0/xef <CJK>
-+<U4F5F> /x8f/xb0/xf0 <CJK>
-+<U4F63> /x8f/xb0/xf1 <CJK>
-+<U4F6A> /x8f/xb0/xf2 <CJK>
-+<U4F6C> /x8f/xb0/xf3 <CJK>
-+<U4F6E> /x8f/xb0/xf4 <CJK>
-+<U4F71> /x8f/xb0/xf5 <CJK>
-+<U4F77> /x8f/xb0/xf6 <CJK>
-+<U4F78> /x8f/xb0/xf7 <CJK>
-+<U4F79> /x8f/xb0/xf8 <CJK>
-+<U4F7A> /x8f/xb0/xf9 <CJK>
-+<U4F7D> /x8f/xb0/xfa <CJK>
-+<U4F7E> /x8f/xb0/xfb <CJK>
-+<U4F81> /x8f/xb0/xfc <CJK>
-+<U4F82> /x8f/xb0/xfd <CJK>
-+<U4F84> /x8f/xb0/xfe <CJK>
-+<U4F85> /x8f/xb1/xa1 <CJK>
-+<U4F89> /x8f/xb1/xa2 <CJK>
-+<U4F8A> /x8f/xb1/xa3 <CJK>
-+<U4F8C> /x8f/xb1/xa4 <CJK>
-+<U4F8E> /x8f/xb1/xa5 <CJK>
-+<U4F90> /x8f/xb1/xa6 <CJK>
-+<U4F92> /x8f/xb1/xa7 <CJK>
-+<U4F93> /x8f/xb1/xa8 <CJK>
-+<U4F94> /x8f/xb1/xa9 <CJK>
-+<U4F97> /x8f/xb1/xaa <CJK>
-+<U4F99> /x8f/xb1/xab <CJK>
-+<U4F9A> /x8f/xb1/xac <CJK>
-+<U4F9E> /x8f/xb1/xad <CJK>
-+<U4F9F> /x8f/xb1/xae <CJK>
-+<U4FB2> /x8f/xb1/xaf <CJK>
-+<U4FB7> /x8f/xb1/xb0 <CJK>
-+<U4FB9> /x8f/xb1/xb1 <CJK>
-+<U4FBB> /x8f/xb1/xb2 <CJK>
-+<U4FBC> /x8f/xb1/xb3 <CJK>
-+<U4FBD> /x8f/xb1/xb4 <CJK>
-+<U4FBE> /x8f/xb1/xb5 <CJK>
-+<U4FC0> /x8f/xb1/xb6 <CJK>
-+<U4FC1> /x8f/xb1/xb7 <CJK>
-+<U4FC5> /x8f/xb1/xb8 <CJK>
-+<U4FC6> /x8f/xb1/xb9 <CJK>
-+<U4FC8> /x8f/xb1/xba <CJK>
-+<U4FC9> /x8f/xb1/xbb <CJK>
-+<U4FCB> /x8f/xb1/xbc <CJK>
-+<U4FCC> /x8f/xb1/xbd <CJK>
-+<U4FCD> /x8f/xb1/xbe <CJK>
-+<U4FCF> /x8f/xb1/xbf <CJK>
-+<U4FD2> /x8f/xb1/xc0 <CJK>
-+<U4FDC> /x8f/xb1/xc1 <CJK>
-+<U4FE0> /x8f/xb1/xc2 <CJK>
-+<U4FE2> /x8f/xb1/xc3 <CJK>
-+<U4FF0> /x8f/xb1/xc4 <CJK>
-+<U4FF2> /x8f/xb1/xc5 <CJK>
-+<U4FFC> /x8f/xb1/xc6 <CJK>
-+<U4FFD> /x8f/xb1/xc7 <CJK>
-+<U4FFF> /x8f/xb1/xc8 <CJK>
-+<U5000> /x8f/xb1/xc9 <CJK>
-+<U5001> /x8f/xb1/xca <CJK>
-+<U5004> /x8f/xb1/xcb <CJK>
-+<U5007> /x8f/xb1/xcc <CJK>
-+<U500A> /x8f/xb1/xcd <CJK>
-+<U500C> /x8f/xb1/xce <CJK>
-+<U500E> /x8f/xb1/xcf <CJK>
-+<U5010> /x8f/xb1/xd0 <CJK>
-+<U5013> /x8f/xb1/xd1 <CJK>
-+<U5017> /x8f/xb1/xd2 <CJK>
-+<U5018> /x8f/xb1/xd3 <CJK>
-+<U501B> /x8f/xb1/xd4 <CJK>
-+<U501C> /x8f/xb1/xd5 <CJK>
-+<U501D> /x8f/xb1/xd6 <CJK>
-+<U501E> /x8f/xb1/xd7 <CJK>
-+<U5022> /x8f/xb1/xd8 <CJK>
-+<U5027> /x8f/xb1/xd9 <CJK>
-+<U502E> /x8f/xb1/xda <CJK>
-+<U5030> /x8f/xb1/xdb <CJK>
-+<U5032> /x8f/xb1/xdc <CJK>
-+<U5033> /x8f/xb1/xdd <CJK>
-+<U5035> /x8f/xb1/xde <CJK>
-+<U5040> /x8f/xb1/xdf <CJK>
-+<U5041> /x8f/xb1/xe0 <CJK>
-+<U5042> /x8f/xb1/xe1 <CJK>
-+<U5045> /x8f/xb1/xe2 <CJK>
-+<U5046> /x8f/xb1/xe3 <CJK>
-+<U504A> /x8f/xb1/xe4 <CJK>
-+<U504C> /x8f/xb1/xe5 <CJK>
-+<U504E> /x8f/xb1/xe6 <CJK>
-+<U5051> /x8f/xb1/xe7 <CJK>
-+<U5052> /x8f/xb1/xe8 <CJK>
-+<U5053> /x8f/xb1/xe9 <CJK>
-+<U5057> /x8f/xb1/xea <CJK>
-+<U5059> /x8f/xb1/xeb <CJK>
-+<U505F> /x8f/xb1/xec <CJK>
-+<U5060> /x8f/xb1/xed <CJK>
-+<U5062> /x8f/xb1/xee <CJK>
-+<U5063> /x8f/xb1/xef <CJK>
-+<U5066> /x8f/xb1/xf0 <CJK>
-+<U5067> /x8f/xb1/xf1 <CJK>
-+<U506A> /x8f/xb1/xf2 <CJK>
-+<U506D> /x8f/xb1/xf3 <CJK>
-+<U5070> /x8f/xb1/xf4 <CJK>
-+<U5071> /x8f/xb1/xf5 <CJK>
-+<U503B> /x8f/xb1/xf6 <CJK>
-+<U5081> /x8f/xb1/xf7 <CJK>
-+<U5083> /x8f/xb1/xf8 <CJK>
-+<U5084> /x8f/xb1/xf9 <CJK>
-+<U5086> /x8f/xb1/xfa <CJK>
-+<U508A> /x8f/xb1/xfb <CJK>
-+<U508E> /x8f/xb1/xfc <CJK>
-+<U508F> /x8f/xb1/xfd <CJK>
-+<U5090> /x8f/xb1/xfe <CJK>
-+<U5092> /x8f/xb2/xa1 <CJK>
-+<U5093> /x8f/xb2/xa2 <CJK>
-+<U5094> /x8f/xb2/xa3 <CJK>
-+<U5096> /x8f/xb2/xa4 <CJK>
-+<U509B> /x8f/xb2/xa5 <CJK>
-+<U509C> /x8f/xb2/xa6 <CJK>
-+<U509E> /x8f/xb2/xa7 <CJK>
-+<U509F> /x8f/xb2/xa8 <CJK>
-+<U50A0> /x8f/xb2/xa9 <CJK>
-+<U50A1> /x8f/xb2/xaa <CJK>
-+<U50A2> /x8f/xb2/xab <CJK>
-+<U50AA> /x8f/xb2/xac <CJK>
-+<U50AF> /x8f/xb2/xad <CJK>
-+<U50B0> /x8f/xb2/xae <CJK>
-+<U50B9> /x8f/xb2/xaf <CJK>
-+<U50BA> /x8f/xb2/xb0 <CJK>
-+<U50BD> /x8f/xb2/xb1 <CJK>
-+<U50C0> /x8f/xb2/xb2 <CJK>
-+<U50C3> /x8f/xb2/xb3 <CJK>
-+<U50C4> /x8f/xb2/xb4 <CJK>
-+<U50C7> /x8f/xb2/xb5 <CJK>
-+<U50CC> /x8f/xb2/xb6 <CJK>
-+<U50CE> /x8f/xb2/xb7 <CJK>
-+<U50D0> /x8f/xb2/xb8 <CJK>
-+<U50D3> /x8f/xb2/xb9 <CJK>
-+<U50D4> /x8f/xb2/xba <CJK>
-+<U50D8> /x8f/xb2/xbb <CJK>
-+<U50DC> /x8f/xb2/xbc <CJK>
-+<U50DD> /x8f/xb2/xbd <CJK>
-+<U50DF> /x8f/xb2/xbe <CJK>
-+<U50E2> /x8f/xb2/xbf <CJK>
-+<U50E4> /x8f/xb2/xc0 <CJK>
-+<U50E6> /x8f/xb2/xc1 <CJK>
-+<U50E8> /x8f/xb2/xc2 <CJK>
-+<U50E9> /x8f/xb2/xc3 <CJK>
-+<U50EF> /x8f/xb2/xc4 <CJK>
-+<U50F1> /x8f/xb2/xc5 <CJK>
-+<U50F6> /x8f/xb2/xc6 <CJK>
-+<U50FA> /x8f/xb2/xc7 <CJK>
-+<U50FE> /x8f/xb2/xc8 <CJK>
-+<U5103> /x8f/xb2/xc9 <CJK>
-+<U5106> /x8f/xb2/xca <CJK>
-+<U5107> /x8f/xb2/xcb <CJK>
-+<U5108> /x8f/xb2/xcc <CJK>
-+<U510B> /x8f/xb2/xcd <CJK>
-+<U510C> /x8f/xb2/xce <CJK>
-+<U510D> /x8f/xb2/xcf <CJK>
-+<U510E> /x8f/xb2/xd0 <CJK>
-+<U50F2> /x8f/xb2/xd1 <CJK>
-+<U5110> /x8f/xb2/xd2 <CJK>
-+<U5117> /x8f/xb2/xd3 <CJK>
-+<U5119> /x8f/xb2/xd4 <CJK>
-+<U511B> /x8f/xb2/xd5 <CJK>
-+<U511C> /x8f/xb2/xd6 <CJK>
-+<U511D> /x8f/xb2/xd7 <CJK>
-+<U511E> /x8f/xb2/xd8 <CJK>
-+<U5123> /x8f/xb2/xd9 <CJK>
-+<U5127> /x8f/xb2/xda <CJK>
-+<U5128> /x8f/xb2/xdb <CJK>
-+<U512C> /x8f/xb2/xdc <CJK>
-+<U512D> /x8f/xb2/xdd <CJK>
-+<U512F> /x8f/xb2/xde <CJK>
-+<U5131> /x8f/xb2/xdf <CJK>
-+<U5133> /x8f/xb2/xe0 <CJK>
-+<U5134> /x8f/xb2/xe1 <CJK>
-+<U5135> /x8f/xb2/xe2 <CJK>
-+<U5138> /x8f/xb2/xe3 <CJK>
-+<U5139> /x8f/xb2/xe4 <CJK>
-+<U5142> /x8f/xb2/xe5 <CJK>
-+<U514A> /x8f/xb2/xe6 <CJK>
-+<U514F> /x8f/xb2/xe7 <CJK>
-+<U5153> /x8f/xb2/xe8 <CJK>
-+<U5155> /x8f/xb2/xe9 <CJK>
-+<U5157> /x8f/xb2/xea <CJK>
-+<U5158> /x8f/xb2/xeb <CJK>
-+<U515F> /x8f/xb2/xec <CJK>
-+<U5164> /x8f/xb2/xed <CJK>
-+<U5166> /x8f/xb2/xee <CJK>
-+<U517E> /x8f/xb2/xef <CJK>
-+<U5183> /x8f/xb2/xf0 <CJK>
-+<U5184> /x8f/xb2/xf1 <CJK>
-+<U518B> /x8f/xb2/xf2 <CJK>
-+<U518E> /x8f/xb2/xf3 <CJK>
-+<U5198> /x8f/xb2/xf4 <CJK>
-+<U519D> /x8f/xb2/xf5 <CJK>
-+<U51A1> /x8f/xb2/xf6 <CJK>
-+<U51A3> /x8f/xb2/xf7 <CJK>
-+<U51AD> /x8f/xb2/xf8 <CJK>
-+<U51B8> /x8f/xb2/xf9 <CJK>
-+<U51BA> /x8f/xb2/xfa <CJK>
-+<U51BC> /x8f/xb2/xfb <CJK>
-+<U51BE> /x8f/xb2/xfc <CJK>
-+<U51BF> /x8f/xb2/xfd <CJK>
-+<U51C2> /x8f/xb2/xfe <CJK>
-+<U51C8> /x8f/xb3/xa1 <CJK>
-+<U51CF> /x8f/xb3/xa2 <CJK>
-+<U51D1> /x8f/xb3/xa3 <CJK>
-+<U51D2> /x8f/xb3/xa4 <CJK>
-+<U51D3> /x8f/xb3/xa5 <CJK>
-+<U51D5> /x8f/xb3/xa6 <CJK>
-+<U51D8> /x8f/xb3/xa7 <CJK>
-+<U51DE> /x8f/xb3/xa8 <CJK>
-+<U51E2> /x8f/xb3/xa9 <CJK>
-+<U51E5> /x8f/xb3/xaa <CJK>
-+<U51EE> /x8f/xb3/xab <CJK>
-+<U51F2> /x8f/xb3/xac <CJK>
-+<U51F3> /x8f/xb3/xad <CJK>
-+<U51F4> /x8f/xb3/xae <CJK>
-+<U51F7> /x8f/xb3/xaf <CJK>
-+<U5201> /x8f/xb3/xb0 <CJK>
-+<U5202> /x8f/xb3/xb1 <CJK>
-+<U5205> /x8f/xb3/xb2 <CJK>
-+<U5212> /x8f/xb3/xb3 <CJK>
-+<U5213> /x8f/xb3/xb4 <CJK>
-+<U5215> /x8f/xb3/xb5 <CJK>
-+<U5216> /x8f/xb3/xb6 <CJK>
-+<U5218> /x8f/xb3/xb7 <CJK>
-+<U5222> /x8f/xb3/xb8 <CJK>
-+<U5228> /x8f/xb3/xb9 <CJK>
-+<U5231> /x8f/xb3/xba <CJK>
-+<U5232> /x8f/xb3/xbb <CJK>
-+<U5235> /x8f/xb3/xbc <CJK>
-+<U523C> /x8f/xb3/xbd <CJK>
-+<U5245> /x8f/xb3/xbe <CJK>
-+<U5249> /x8f/xb3/xbf <CJK>
-+<U5255> /x8f/xb3/xc0 <CJK>
-+<U5257> /x8f/xb3/xc1 <CJK>
-+<U5258> /x8f/xb3/xc2 <CJK>
-+<U525A> /x8f/xb3/xc3 <CJK>
-+<U525C> /x8f/xb3/xc4 <CJK>
-+<U525F> /x8f/xb3/xc5 <CJK>
-+<U5260> /x8f/xb3/xc6 <CJK>
-+<U5261> /x8f/xb3/xc7 <CJK>
-+<U5266> /x8f/xb3/xc8 <CJK>
-+<U526E> /x8f/xb3/xc9 <CJK>
-+<U5277> /x8f/xb3/xca <CJK>
-+<U5278> /x8f/xb3/xcb <CJK>
-+<U5279> /x8f/xb3/xcc <CJK>
-+<U5280> /x8f/xb3/xcd <CJK>
-+<U5282> /x8f/xb3/xce <CJK>
-+<U5285> /x8f/xb3/xcf <CJK>
-+<U528A> /x8f/xb3/xd0 <CJK>
-+<U528C> /x8f/xb3/xd1 <CJK>
-+<U5293> /x8f/xb3/xd2 <CJK>
-+<U5295> /x8f/xb3/xd3 <CJK>
-+<U5296> /x8f/xb3/xd4 <CJK>
-+<U5297> /x8f/xb3/xd5 <CJK>
-+<U5298> /x8f/xb3/xd6 <CJK>
-+<U529A> /x8f/xb3/xd7 <CJK>
-+<U529C> /x8f/xb3/xd8 <CJK>
-+<U52A4> /x8f/xb3/xd9 <CJK>
-+<U52A5> /x8f/xb3/xda <CJK>
-+<U52A6> /x8f/xb3/xdb <CJK>
-+<U52A7> /x8f/xb3/xdc <CJK>
-+<U52AF> /x8f/xb3/xdd <CJK>
-+<U52B0> /x8f/xb3/xde <CJK>
-+<U52B6> /x8f/xb3/xdf <CJK>
-+<U52B7> /x8f/xb3/xe0 <CJK>
-+<U52B8> /x8f/xb3/xe1 <CJK>
-+<U52BA> /x8f/xb3/xe2 <CJK>
-+<U52BB> /x8f/xb3/xe3 <CJK>
-+<U52BD> /x8f/xb3/xe4 <CJK>
-+<U52C0> /x8f/xb3/xe5 <CJK>
-+<U52C4> /x8f/xb3/xe6 <CJK>
-+<U52C6> /x8f/xb3/xe7 <CJK>
-+<U52C8> /x8f/xb3/xe8 <CJK>
-+<U52CC> /x8f/xb3/xe9 <CJK>
-+<U52CF> /x8f/xb3/xea <CJK>
-+<U52D1> /x8f/xb3/xeb <CJK>
-+<U52D4> /x8f/xb3/xec <CJK>
-+<U52D6> /x8f/xb3/xed <CJK>
-+<U52DB> /x8f/xb3/xee <CJK>
-+<U52DC> /x8f/xb3/xef <CJK>
-+<U52E1> /x8f/xb3/xf0 <CJK>
-+<U52E5> /x8f/xb3/xf1 <CJK>
-+<U52E8> /x8f/xb3/xf2 <CJK>
-+<U52E9> /x8f/xb3/xf3 <CJK>
-+<U52EA> /x8f/xb3/xf4 <CJK>
-+<U52EC> /x8f/xb3/xf5 <CJK>
-+<U52F0> /x8f/xb3/xf6 <CJK>
-+<U52F1> /x8f/xb3/xf7 <CJK>
-+<U52F4> /x8f/xb3/xf8 <CJK>
-+<U52F6> /x8f/xb3/xf9 <CJK>
-+<U52F7> /x8f/xb3/xfa <CJK>
-+<U5300> /x8f/xb3/xfb <CJK>
-+<U5303> /x8f/xb3/xfc <CJK>
-+<U530A> /x8f/xb3/xfd <CJK>
-+<U530B> /x8f/xb3/xfe <CJK>
-+<U530C> /x8f/xb4/xa1 <CJK>
-+<U5311> /x8f/xb4/xa2 <CJK>
-+<U5313> /x8f/xb4/xa3 <CJK>
-+<U5318> /x8f/xb4/xa4 <CJK>
-+<U531B> /x8f/xb4/xa5 <CJK>
-+<U531C> /x8f/xb4/xa6 <CJK>
-+<U531E> /x8f/xb4/xa7 <CJK>
-+<U531F> /x8f/xb4/xa8 <CJK>
-+<U5325> /x8f/xb4/xa9 <CJK>
-+<U5327> /x8f/xb4/xaa <CJK>
-+<U5328> /x8f/xb4/xab <CJK>
-+<U5329> /x8f/xb4/xac <CJK>
-+<U532B> /x8f/xb4/xad <CJK>
-+<U532C> /x8f/xb4/xae <CJK>
-+<U532D> /x8f/xb4/xaf <CJK>
-+<U5330> /x8f/xb4/xb0 <CJK>
-+<U5332> /x8f/xb4/xb1 <CJK>
-+<U5335> /x8f/xb4/xb2 <CJK>
-+<U533C> /x8f/xb4/xb3 <CJK>
-+<U533D> /x8f/xb4/xb4 <CJK>
-+<U533E> /x8f/xb4/xb5 <CJK>
-+<U5342> /x8f/xb4/xb6 <CJK>
-+<U534C> /x8f/xb4/xb7 <CJK>
-+<U534B> /x8f/xb4/xb8 <CJK>
-+<U5359> /x8f/xb4/xb9 <CJK>
-+<U535B> /x8f/xb4/xba <CJK>
-+<U5361> /x8f/xb4/xbb <CJK>
-+<U5363> /x8f/xb4/xbc <CJK>
-+<U5365> /x8f/xb4/xbd <CJK>
-+<U536C> /x8f/xb4/xbe <CJK>
-+<U536D> /x8f/xb4/xbf <CJK>
-+<U5372> /x8f/xb4/xc0 <CJK>
-+<U5379> /x8f/xb4/xc1 <CJK>
-+<U537E> /x8f/xb4/xc2 <CJK>
-+<U5383> /x8f/xb4/xc3 <CJK>
-+<U5387> /x8f/xb4/xc4 <CJK>
-+<U5388> /x8f/xb4/xc5 <CJK>
-+<U538E> /x8f/xb4/xc6 <CJK>
-+<U5393> /x8f/xb4/xc7 <CJK>
-+<U5394> /x8f/xb4/xc8 <CJK>
-+<U5399> /x8f/xb4/xc9 <CJK>
-+<U539D> /x8f/xb4/xca <CJK>
-+<U53A1> /x8f/xb4/xcb <CJK>
-+<U53A4> /x8f/xb4/xcc <CJK>
-+<U53AA> /x8f/xb4/xcd <CJK>
-+<U53AB> /x8f/xb4/xce <CJK>
-+<U53AF> /x8f/xb4/xcf <CJK>
-+<U53B2> /x8f/xb4/xd0 <CJK>
-+<U53B4> /x8f/xb4/xd1 <CJK>
-+<U53B5> /x8f/xb4/xd2 <CJK>
-+<U53B7> /x8f/xb4/xd3 <CJK>
-+<U53B8> /x8f/xb4/xd4 <CJK>
-+<U53BA> /x8f/xb4/xd5 <CJK>
-+<U53BD> /x8f/xb4/xd6 <CJK>
-+<U53C0> /x8f/xb4/xd7 <CJK>
-+<U53C5> /x8f/xb4/xd8 <CJK>
-+<U53CF> /x8f/xb4/xd9 <CJK>
-+<U53D2> /x8f/xb4/xda <CJK>
-+<U53D3> /x8f/xb4/xdb <CJK>
-+<U53D5> /x8f/xb4/xdc <CJK>
-+<U53DA> /x8f/xb4/xdd <CJK>
-+<U53DD> /x8f/xb4/xde <CJK>
-+<U53DE> /x8f/xb4/xdf <CJK>
-+<U53E0> /x8f/xb4/xe0 <CJK>
-+<U53E6> /x8f/xb4/xe1 <CJK>
-+<U53E7> /x8f/xb4/xe2 <CJK>
-+<U53F5> /x8f/xb4/xe3 <CJK>
-+<U5402> /x8f/xb4/xe4 <CJK>
-+<U5413> /x8f/xb4/xe5 <CJK>
-+<U541A> /x8f/xb4/xe6 <CJK>
-+<U5421> /x8f/xb4/xe7 <CJK>
-+<U5427> /x8f/xb4/xe8 <CJK>
-+<U5428> /x8f/xb4/xe9 <CJK>
-+<U542A> /x8f/xb4/xea <CJK>
-+<U542F> /x8f/xb4/xeb <CJK>
-+<U5431> /x8f/xb4/xec <CJK>
-+<U5434> /x8f/xb4/xed <CJK>
-+<U5435> /x8f/xb4/xee <CJK>
-+<U5443> /x8f/xb4/xef <CJK>
-+<U5444> /x8f/xb4/xf0 <CJK>
-+<U5447> /x8f/xb4/xf1 <CJK>
-+<U544D> /x8f/xb4/xf2 <CJK>
-+<U544F> /x8f/xb4/xf3 <CJK>
-+<U545E> /x8f/xb4/xf4 <CJK>
-+<U5462> /x8f/xb4/xf5 <CJK>
-+<U5464> /x8f/xb4/xf6 <CJK>
-+<U5466> /x8f/xb4/xf7 <CJK>
-+<U5467> /x8f/xb4/xf8 <CJK>
-+<U5469> /x8f/xb4/xf9 <CJK>
-+<U546B> /x8f/xb4/xfa <CJK>
-+<U546D> /x8f/xb4/xfb <CJK>
-+<U546E> /x8f/xb4/xfc <CJK>
-+<U5474> /x8f/xb4/xfd <CJK>
-+<U547F> /x8f/xb4/xfe <CJK>
-+<U5481> /x8f/xb5/xa1 <CJK>
-+<U5483> /x8f/xb5/xa2 <CJK>
-+<U5485> /x8f/xb5/xa3 <CJK>
-+<U5488> /x8f/xb5/xa4 <CJK>
-+<U5489> /x8f/xb5/xa5 <CJK>
-+<U548D> /x8f/xb5/xa6 <CJK>
-+<U5491> /x8f/xb5/xa7 <CJK>
-+<U5495> /x8f/xb5/xa8 <CJK>
-+<U5496> /x8f/xb5/xa9 <CJK>
-+<U549C> /x8f/xb5/xaa <CJK>
-+<U549F> /x8f/xb5/xab <CJK>
-+<U54A1> /x8f/xb5/xac <CJK>
-+<U54A6> /x8f/xb5/xad <CJK>
-+<U54A7> /x8f/xb5/xae <CJK>
-+<U54A9> /x8f/xb5/xaf <CJK>
-+<U54AA> /x8f/xb5/xb0 <CJK>
-+<U54AD> /x8f/xb5/xb1 <CJK>
-+<U54AE> /x8f/xb5/xb2 <CJK>
-+<U54B1> /x8f/xb5/xb3 <CJK>
-+<U54B7> /x8f/xb5/xb4 <CJK>
-+<U54B9> /x8f/xb5/xb5 <CJK>
-+<U54BA> /x8f/xb5/xb6 <CJK>
-+<U54BB> /x8f/xb5/xb7 <CJK>
-+<U54BF> /x8f/xb5/xb8 <CJK>
-+<U54C6> /x8f/xb5/xb9 <CJK>
-+<U54CA> /x8f/xb5/xba <CJK>
-+<U54CD> /x8f/xb5/xbb <CJK>
-+<U54CE> /x8f/xb5/xbc <CJK>
-+<U54E0> /x8f/xb5/xbd <CJK>
-+<U54EA> /x8f/xb5/xbe <CJK>
-+<U54EC> /x8f/xb5/xbf <CJK>
-+<U54EF> /x8f/xb5/xc0 <CJK>
-+<U54F6> /x8f/xb5/xc1 <CJK>
-+<U54FC> /x8f/xb5/xc2 <CJK>
-+<U54FE> /x8f/xb5/xc3 <CJK>
-+<U54FF> /x8f/xb5/xc4 <CJK>
-+<U5500> /x8f/xb5/xc5 <CJK>
-+<U5501> /x8f/xb5/xc6 <CJK>
-+<U5505> /x8f/xb5/xc7 <CJK>
-+<U5508> /x8f/xb5/xc8 <CJK>
-+<U5509> /x8f/xb5/xc9 <CJK>
-+<U550C> /x8f/xb5/xca <CJK>
-+<U550D> /x8f/xb5/xcb <CJK>
-+<U550E> /x8f/xb5/xcc <CJK>
-+<U5515> /x8f/xb5/xcd <CJK>
-+<U552A> /x8f/xb5/xce <CJK>
-+<U552B> /x8f/xb5/xcf <CJK>
-+<U5532> /x8f/xb5/xd0 <CJK>
-+<U5535> /x8f/xb5/xd1 <CJK>
-+<U5536> /x8f/xb5/xd2 <CJK>
-+<U553B> /x8f/xb5/xd3 <CJK>
-+<U553C> /x8f/xb5/xd4 <CJK>
-+<U553D> /x8f/xb5/xd5 <CJK>
-+<U5541> /x8f/xb5/xd6 <CJK>
-+<U5547> /x8f/xb5/xd7 <CJK>
-+<U5549> /x8f/xb5/xd8 <CJK>
-+<U554A> /x8f/xb5/xd9 <CJK>
-+<U554D> /x8f/xb5/xda <CJK>
-+<U5550> /x8f/xb5/xdb <CJK>
-+<U5551> /x8f/xb5/xdc <CJK>
-+<U5558> /x8f/xb5/xdd <CJK>
-+<U555A> /x8f/xb5/xde <CJK>
-+<U555B> /x8f/xb5/xdf <CJK>
-+<U555E> /x8f/xb5/xe0 <CJK>
-+<U5560> /x8f/xb5/xe1 <CJK>
-+<U5561> /x8f/xb5/xe2 <CJK>
-+<U5564> /x8f/xb5/xe3 <CJK>
-+<U5566> /x8f/xb5/xe4 <CJK>
-+<U557F> /x8f/xb5/xe5 <CJK>
-+<U5581> /x8f/xb5/xe6 <CJK>
-+<U5582> /x8f/xb5/xe7 <CJK>
-+<U5586> /x8f/xb5/xe8 <CJK>
-+<U5588> /x8f/xb5/xe9 <CJK>
-+<U558E> /x8f/xb5/xea <CJK>
-+<U558F> /x8f/xb5/xeb <CJK>
-+<U5591> /x8f/xb5/xec <CJK>
-+<U5592> /x8f/xb5/xed <CJK>
-+<U5593> /x8f/xb5/xee <CJK>
-+<U5594> /x8f/xb5/xef <CJK>
-+<U5597> /x8f/xb5/xf0 <CJK>
-+<U55A3> /x8f/xb5/xf1 <CJK>
-+<U55A4> /x8f/xb5/xf2 <CJK>
-+<U55AD> /x8f/xb5/xf3 <CJK>
-+<U55B2> /x8f/xb5/xf4 <CJK>
-+<U55BF> /x8f/xb5/xf5 <CJK>
-+<U55C1> /x8f/xb5/xf6 <CJK>
-+<U55C3> /x8f/xb5/xf7 <CJK>
-+<U55C6> /x8f/xb5/xf8 <CJK>
-+<U55C9> /x8f/xb5/xf9 <CJK>
-+<U55CB> /x8f/xb5/xfa <CJK>
-+<U55CC> /x8f/xb5/xfb <CJK>
-+<U55CE> /x8f/xb5/xfc <CJK>
-+<U55D1> /x8f/xb5/xfd <CJK>
-+<U55D2> /x8f/xb5/xfe <CJK>
-+<U55D3> /x8f/xb6/xa1 <CJK>
-+<U55D7> /x8f/xb6/xa2 <CJK>
-+<U55D8> /x8f/xb6/xa3 <CJK>
-+<U55DB> /x8f/xb6/xa4 <CJK>
-+<U55DE> /x8f/xb6/xa5 <CJK>
-+<U55E2> /x8f/xb6/xa6 <CJK>
-+<U55E9> /x8f/xb6/xa7 <CJK>
-+<U55F6> /x8f/xb6/xa8 <CJK>
-+<U55FF> /x8f/xb6/xa9 <CJK>
-+<U5605> /x8f/xb6/xaa <CJK>
-+<U5608> /x8f/xb6/xab <CJK>
-+<U560A> /x8f/xb6/xac <CJK>
-+<U560D> /x8f/xb6/xad <CJK>
-+<U560E> /x8f/xb6/xae <CJK>
-+<U560F> /x8f/xb6/xaf <CJK>
-+<U5610> /x8f/xb6/xb0 <CJK>
-+<U5611> /x8f/xb6/xb1 <CJK>
-+<U5612> /x8f/xb6/xb2 <CJK>
-+<U5619> /x8f/xb6/xb3 <CJK>
-+<U562C> /x8f/xb6/xb4 <CJK>
-+<U5630> /x8f/xb6/xb5 <CJK>
-+<U5633> /x8f/xb6/xb6 <CJK>
-+<U5635> /x8f/xb6/xb7 <CJK>
-+<U5637> /x8f/xb6/xb8 <CJK>
-+<U5639> /x8f/xb6/xb9 <CJK>
-+<U563B> /x8f/xb6/xba <CJK>
-+<U563C> /x8f/xb6/xbb <CJK>
-+<U563D> /x8f/xb6/xbc <CJK>
-+<U563F> /x8f/xb6/xbd <CJK>
-+<U5640> /x8f/xb6/xbe <CJK>
-+<U5641> /x8f/xb6/xbf <CJK>
-+<U5643> /x8f/xb6/xc0 <CJK>
-+<U5644> /x8f/xb6/xc1 <CJK>
-+<U5646> /x8f/xb6/xc2 <CJK>
-+<U5649> /x8f/xb6/xc3 <CJK>
-+<U564B> /x8f/xb6/xc4 <CJK>
-+<U564D> /x8f/xb6/xc5 <CJK>
-+<U564F> /x8f/xb6/xc6 <CJK>
-+<U5654> /x8f/xb6/xc7 <CJK>
-+<U565E> /x8f/xb6/xc8 <CJK>
-+<U5660> /x8f/xb6/xc9 <CJK>
-+<U5661> /x8f/xb6/xca <CJK>
-+<U5662> /x8f/xb6/xcb <CJK>
-+<U5663> /x8f/xb6/xcc <CJK>
-+<U5666> /x8f/xb6/xcd <CJK>
-+<U5669> /x8f/xb6/xce <CJK>
-+<U566D> /x8f/xb6/xcf <CJK>
-+<U566F> /x8f/xb6/xd0 <CJK>
-+<U5671> /x8f/xb6/xd1 <CJK>
-+<U5672> /x8f/xb6/xd2 <CJK>
-+<U5675> /x8f/xb6/xd3 <CJK>
-+<U5684> /x8f/xb6/xd4 <CJK>
-+<U5685> /x8f/xb6/xd5 <CJK>
-+<U5688> /x8f/xb6/xd6 <CJK>
-+<U568B> /x8f/xb6/xd7 <CJK>
-+<U568C> /x8f/xb6/xd8 <CJK>
-+<U5695> /x8f/xb6/xd9 <CJK>
-+<U5699> /x8f/xb6/xda <CJK>
-+<U569A> /x8f/xb6/xdb <CJK>
-+<U569D> /x8f/xb6/xdc <CJK>
-+<U569E> /x8f/xb6/xdd <CJK>
-+<U569F> /x8f/xb6/xde <CJK>
-+<U56A6> /x8f/xb6/xdf <CJK>
-+<U56A7> /x8f/xb6/xe0 <CJK>
-+<U56A8> /x8f/xb6/xe1 <CJK>
-+<U56A9> /x8f/xb6/xe2 <CJK>
-+<U56AB> /x8f/xb6/xe3 <CJK>
-+<U56AC> /x8f/xb6/xe4 <CJK>
-+<U56AD> /x8f/xb6/xe5 <CJK>
-+<U56B1> /x8f/xb6/xe6 <CJK>
-+<U56B3> /x8f/xb6/xe7 <CJK>
-+<U56B7> /x8f/xb6/xe8 <CJK>
-+<U56BE> /x8f/xb6/xe9 <CJK>
-+<U56C5> /x8f/xb6/xea <CJK>
-+<U56C9> /x8f/xb6/xeb <CJK>
-+<U56CA> /x8f/xb6/xec <CJK>
-+<U56CB> /x8f/xb6/xed <CJK>
-+<U56CF> /x8f/xb6/xee <CJK>
-+<U56D0> /x8f/xb6/xef <CJK>
-+<U56CC> /x8f/xb6/xf0 <CJK>
-+<U56CD> /x8f/xb6/xf1 <CJK>
-+<U56D9> /x8f/xb6/xf2 <CJK>
-+<U56DC> /x8f/xb6/xf3 <CJK>
-+<U56DD> /x8f/xb6/xf4 <CJK>
-+<U56DF> /x8f/xb6/xf5 <CJK>
-+<U56E1> /x8f/xb6/xf6 <CJK>
-+<U56E4> /x8f/xb6/xf7 <CJK>
-+<U56E5> /x8f/xb6/xf8 <CJK>
-+<U56E6> /x8f/xb6/xf9 <CJK>
-+<U56E7> /x8f/xb6/xfa <CJK>
-+<U56E8> /x8f/xb6/xfb <CJK>
-+<U56F1> /x8f/xb6/xfc <CJK>
-+<U56EB> /x8f/xb6/xfd <CJK>
-+<U56ED> /x8f/xb6/xfe <CJK>
-+<U56F6> /x8f/xb7/xa1 <CJK>
-+<U56F7> /x8f/xb7/xa2 <CJK>
-+<U5701> /x8f/xb7/xa3 <CJK>
-+<U5702> /x8f/xb7/xa4 <CJK>
-+<U5707> /x8f/xb7/xa5 <CJK>
-+<U570A> /x8f/xb7/xa6 <CJK>
-+<U570C> /x8f/xb7/xa7 <CJK>
-+<U5711> /x8f/xb7/xa8 <CJK>
-+<U5715> /x8f/xb7/xa9 <CJK>
-+<U571A> /x8f/xb7/xaa <CJK>
-+<U571B> /x8f/xb7/xab <CJK>
-+<U571D> /x8f/xb7/xac <CJK>
-+<U5720> /x8f/xb7/xad <CJK>
-+<U5722> /x8f/xb7/xae <CJK>
-+<U5723> /x8f/xb7/xaf <CJK>
-+<U5724> /x8f/xb7/xb0 <CJK>
-+<U5725> /x8f/xb7/xb1 <CJK>
-+<U5729> /x8f/xb7/xb2 <CJK>
-+<U572A> /x8f/xb7/xb3 <CJK>
-+<U572C> /x8f/xb7/xb4 <CJK>
-+<U572E> /x8f/xb7/xb5 <CJK>
-+<U572F> /x8f/xb7/xb6 <CJK>
-+<U5733> /x8f/xb7/xb7 <CJK>
-+<U5734> /x8f/xb7/xb8 <CJK>
-+<U573D> /x8f/xb7/xb9 <CJK>
-+<U573E> /x8f/xb7/xba <CJK>
-+<U573F> /x8f/xb7/xbb <CJK>
-+<U5745> /x8f/xb7/xbc <CJK>
-+<U5746> /x8f/xb7/xbd <CJK>
-+<U574C> /x8f/xb7/xbe <CJK>
-+<U574D> /x8f/xb7/xbf <CJK>
-+<U5752> /x8f/xb7/xc0 <CJK>
-+<U5762> /x8f/xb7/xc1 <CJK>
-+<U5765> /x8f/xb7/xc2 <CJK>
-+<U5767> /x8f/xb7/xc3 <CJK>
-+<U5768> /x8f/xb7/xc4 <CJK>
-+<U576B> /x8f/xb7/xc5 <CJK>
-+<U576D> /x8f/xb7/xc6 <CJK>
-+<U576E> /x8f/xb7/xc7 <CJK>
-+<U576F> /x8f/xb7/xc8 <CJK>
-+<U5770> /x8f/xb7/xc9 <CJK>
-+<U5771> /x8f/xb7/xca <CJK>
-+<U5773> /x8f/xb7/xcb <CJK>
-+<U5774> /x8f/xb7/xcc <CJK>
-+<U5775> /x8f/xb7/xcd <CJK>
-+<U5777> /x8f/xb7/xce <CJK>
-+<U5779> /x8f/xb7/xcf <CJK>
-+<U577A> /x8f/xb7/xd0 <CJK>
-+<U577B> /x8f/xb7/xd1 <CJK>
-+<U577C> /x8f/xb7/xd2 <CJK>
-+<U577E> /x8f/xb7/xd3 <CJK>
-+<U5781> /x8f/xb7/xd4 <CJK>
-+<U5783> /x8f/xb7/xd5 <CJK>
-+<U578C> /x8f/xb7/xd6 <CJK>
-+<U5794> /x8f/xb7/xd7 <CJK>
-+<U5797> /x8f/xb7/xd8 <CJK>
-+<U5799> /x8f/xb7/xd9 <CJK>
-+<U579A> /x8f/xb7/xda <CJK>
-+<U579C> /x8f/xb7/xdb <CJK>
-+<U579D> /x8f/xb7/xdc <CJK>
-+<U579E> /x8f/xb7/xdd <CJK>
-+<U579F> /x8f/xb7/xde <CJK>
-+<U57A1> /x8f/xb7/xdf <CJK>
-+<U5795> /x8f/xb7/xe0 <CJK>
-+<U57A7> /x8f/xb7/xe1 <CJK>
-+<U57A8> /x8f/xb7/xe2 <CJK>
-+<U57A9> /x8f/xb7/xe3 <CJK>
-+<U57AC> /x8f/xb7/xe4 <CJK>
-+<U57B8> /x8f/xb7/xe5 <CJK>
-+<U57BD> /x8f/xb7/xe6 <CJK>
-+<U57C7> /x8f/xb7/xe7 <CJK>
-+<U57C8> /x8f/xb7/xe8 <CJK>
-+<U57CC> /x8f/xb7/xe9 <CJK>
-+<U57CF> /x8f/xb7/xea <CJK>
-+<U57D5> /x8f/xb7/xeb <CJK>
-+<U57DD> /x8f/xb7/xec <CJK>
-+<U57DE> /x8f/xb7/xed <CJK>
-+<U57E4> /x8f/xb7/xee <CJK>
-+<U57E6> /x8f/xb7/xef <CJK>
-+<U57E7> /x8f/xb7/xf0 <CJK>
-+<U57E9> /x8f/xb7/xf1 <CJK>
-+<U57ED> /x8f/xb7/xf2 <CJK>
-+<U57F0> /x8f/xb7/xf3 <CJK>
-+<U57F5> /x8f/xb7/xf4 <CJK>
-+<U57F6> /x8f/xb7/xf5 <CJK>
-+<U57F8> /x8f/xb7/xf6 <CJK>
-+<U57FD> /x8f/xb7/xf7 <CJK>
-+<U57FE> /x8f/xb7/xf8 <CJK>
-+<U57FF> /x8f/xb7/xf9 <CJK>
-+<U5803> /x8f/xb7/xfa <CJK>
-+<U5804> /x8f/xb7/xfb <CJK>
-+<U5808> /x8f/xb7/xfc <CJK>
-+<U5809> /x8f/xb7/xfd <CJK>
-+<U57E1> /x8f/xb7/xfe <CJK>
-+<U580C> /x8f/xb8/xa1 <CJK>
-+<U580D> /x8f/xb8/xa2 <CJK>
-+<U581B> /x8f/xb8/xa3 <CJK>
-+<U581E> /x8f/xb8/xa4 <CJK>
-+<U581F> /x8f/xb8/xa5 <CJK>
-+<U5820> /x8f/xb8/xa6 <CJK>
-+<U5826> /x8f/xb8/xa7 <CJK>
-+<U5827> /x8f/xb8/xa8 <CJK>
-+<U582D> /x8f/xb8/xa9 <CJK>
-+<U5832> /x8f/xb8/xaa <CJK>
-+<U5839> /x8f/xb8/xab <CJK>
-+<U583F> /x8f/xb8/xac <CJK>
-+<U5849> /x8f/xb8/xad <CJK>
-+<U584C> /x8f/xb8/xae <CJK>
-+<U584D> /x8f/xb8/xaf <CJK>
-+<U584F> /x8f/xb8/xb0 <CJK>
-+<U5850> /x8f/xb8/xb1 <CJK>
-+<U5855> /x8f/xb8/xb2 <CJK>
-+<U585F> /x8f/xb8/xb3 <CJK>
-+<U5861> /x8f/xb8/xb4 <CJK>
-+<U5864> /x8f/xb8/xb5 <CJK>
-+<U5867> /x8f/xb8/xb6 <CJK>
-+<U5868> /x8f/xb8/xb7 <CJK>
-+<U5878> /x8f/xb8/xb8 <CJK>
-+<U587C> /x8f/xb8/xb9 <CJK>
-+<U587F> /x8f/xb8/xba <CJK>
-+<U5880> /x8f/xb8/xbb <CJK>
-+<U5881> /x8f/xb8/xbc <CJK>
-+<U5887> /x8f/xb8/xbd <CJK>
-+<U5888> /x8f/xb8/xbe <CJK>
-+<U5889> /x8f/xb8/xbf <CJK>
-+<U588A> /x8f/xb8/xc0 <CJK>
-+<U588C> /x8f/xb8/xc1 <CJK>
-+<U588D> /x8f/xb8/xc2 <CJK>
-+<U588F> /x8f/xb8/xc3 <CJK>
-+<U5890> /x8f/xb8/xc4 <CJK>
-+<U5894> /x8f/xb8/xc5 <CJK>
-+<U5896> /x8f/xb8/xc6 <CJK>
-+<U589D> /x8f/xb8/xc7 <CJK>
-+<U58A0> /x8f/xb8/xc8 <CJK>
-+<U58A1> /x8f/xb8/xc9 <CJK>
-+<U58A2> /x8f/xb8/xca <CJK>
-+<U58A6> /x8f/xb8/xcb <CJK>
-+<U58A9> /x8f/xb8/xcc <CJK>
-+<U58B1> /x8f/xb8/xcd <CJK>
-+<U58B2> /x8f/xb8/xce <CJK>
-+<U58C4> /x8f/xb8/xcf <CJK>
-+<U58BC> /x8f/xb8/xd0 <CJK>
-+<U58C2> /x8f/xb8/xd1 <CJK>
-+<U58C8> /x8f/xb8/xd2 <CJK>
-+<U58CD> /x8f/xb8/xd3 <CJK>
-+<U58CE> /x8f/xb8/xd4 <CJK>
-+<U58D0> /x8f/xb8/xd5 <CJK>
-+<U58D2> /x8f/xb8/xd6 <CJK>
-+<U58D4> /x8f/xb8/xd7 <CJK>
-+<U58D6> /x8f/xb8/xd8 <CJK>
-+<U58DA> /x8f/xb8/xd9 <CJK>
-+<U58DD> /x8f/xb8/xda <CJK>
-+<U58E1> /x8f/xb8/xdb <CJK>
-+<U58E2> /x8f/xb8/xdc <CJK>
-+<U58E9> /x8f/xb8/xdd <CJK>
-+<U58F3> /x8f/xb8/xde <CJK>
-+<U5905> /x8f/xb8/xdf <CJK>
-+<U5906> /x8f/xb8/xe0 <CJK>
-+<U590B> /x8f/xb8/xe1 <CJK>
-+<U590C> /x8f/xb8/xe2 <CJK>
-+<U5912> /x8f/xb8/xe3 <CJK>
-+<U5913> /x8f/xb8/xe4 <CJK>
-+<U5914> /x8f/xb8/xe5 <CJK>
-+<U8641> /x8f/xb8/xe6 <CJK>
-+<U591D> /x8f/xb8/xe7 <CJK>
-+<U5921> /x8f/xb8/xe8 <CJK>
-+<U5923> /x8f/xb8/xe9 <CJK>
-+<U5924> /x8f/xb8/xea <CJK>
-+<U5928> /x8f/xb8/xeb <CJK>
-+<U592F> /x8f/xb8/xec <CJK>
-+<U5930> /x8f/xb8/xed <CJK>
-+<U5933> /x8f/xb8/xee <CJK>
-+<U5935> /x8f/xb8/xef <CJK>
-+<U5936> /x8f/xb8/xf0 <CJK>
-+<U593F> /x8f/xb8/xf1 <CJK>
-+<U5943> /x8f/xb8/xf2 <CJK>
-+<U5946> /x8f/xb8/xf3 <CJK>
-+<U5952> /x8f/xb8/xf4 <CJK>
-+<U5953> /x8f/xb8/xf5 <CJK>
-+<U5959> /x8f/xb8/xf6 <CJK>
-+<U595B> /x8f/xb8/xf7 <CJK>
-+<U595D> /x8f/xb8/xf8 <CJK>
-+<U595E> /x8f/xb8/xf9 <CJK>
-+<U595F> /x8f/xb8/xfa <CJK>
-+<U5961> /x8f/xb8/xfb <CJK>
-+<U5963> /x8f/xb8/xfc <CJK>
-+<U596B> /x8f/xb8/xfd <CJK>
-+<U596D> /x8f/xb8/xfe <CJK>
-+<U596F> /x8f/xb9/xa1 <CJK>
-+<U5972> /x8f/xb9/xa2 <CJK>
-+<U5975> /x8f/xb9/xa3 <CJK>
-+<U5976> /x8f/xb9/xa4 <CJK>
-+<U5979> /x8f/xb9/xa5 <CJK>
-+<U597B> /x8f/xb9/xa6 <CJK>
-+<U597C> /x8f/xb9/xa7 <CJK>
-+<U598B> /x8f/xb9/xa8 <CJK>
-+<U598C> /x8f/xb9/xa9 <CJK>
-+<U598E> /x8f/xb9/xaa <CJK>
-+<U5992> /x8f/xb9/xab <CJK>
-+<U5995> /x8f/xb9/xac <CJK>
-+<U5997> /x8f/xb9/xad <CJK>
-+<U599F> /x8f/xb9/xae <CJK>
-+<U59A4> /x8f/xb9/xaf <CJK>
-+<U59A7> /x8f/xb9/xb0 <CJK>
-+<U59AD> /x8f/xb9/xb1 <CJK>
-+<U59AE> /x8f/xb9/xb2 <CJK>
-+<U59AF> /x8f/xb9/xb3 <CJK>
-+<U59B0> /x8f/xb9/xb4 <CJK>
-+<U59B3> /x8f/xb9/xb5 <CJK>
-+<U59B7> /x8f/xb9/xb6 <CJK>
-+<U59BA> /x8f/xb9/xb7 <CJK>
-+<U59BC> /x8f/xb9/xb8 <CJK>
-+<U59C1> /x8f/xb9/xb9 <CJK>
-+<U59C3> /x8f/xb9/xba <CJK>
-+<U59C4> /x8f/xb9/xbb <CJK>
-+<U59C8> /x8f/xb9/xbc <CJK>
-+<U59CA> /x8f/xb9/xbd <CJK>
-+<U59CD> /x8f/xb9/xbe <CJK>
-+<U59D2> /x8f/xb9/xbf <CJK>
-+<U59DD> /x8f/xb9/xc0 <CJK>
-+<U59DE> /x8f/xb9/xc1 <CJK>
-+<U59DF> /x8f/xb9/xc2 <CJK>
-+<U59E3> /x8f/xb9/xc3 <CJK>
-+<U59E4> /x8f/xb9/xc4 <CJK>
-+<U59E7> /x8f/xb9/xc5 <CJK>
-+<U59EE> /x8f/xb9/xc6 <CJK>
-+<U59EF> /x8f/xb9/xc7 <CJK>
-+<U59F1> /x8f/xb9/xc8 <CJK>
-+<U59F2> /x8f/xb9/xc9 <CJK>
-+<U59F4> /x8f/xb9/xca <CJK>
-+<U59F7> /x8f/xb9/xcb <CJK>
-+<U5A00> /x8f/xb9/xcc <CJK>
-+<U5A04> /x8f/xb9/xcd <CJK>
-+<U5A0C> /x8f/xb9/xce <CJK>
-+<U5A0D> /x8f/xb9/xcf <CJK>
-+<U5A0E> /x8f/xb9/xd0 <CJK>
-+<U5A12> /x8f/xb9/xd1 <CJK>
-+<U5A13> /x8f/xb9/xd2 <CJK>
-+<U5A1E> /x8f/xb9/xd3 <CJK>
-+<U5A23> /x8f/xb9/xd4 <CJK>
-+<U5A24> /x8f/xb9/xd5 <CJK>
-+<U5A27> /x8f/xb9/xd6 <CJK>
-+<U5A28> /x8f/xb9/xd7 <CJK>
-+<U5A2A> /x8f/xb9/xd8 <CJK>
-+<U5A2D> /x8f/xb9/xd9 <CJK>
-+<U5A30> /x8f/xb9/xda <CJK>
-+<U5A44> /x8f/xb9/xdb <CJK>
-+<U5A45> /x8f/xb9/xdc <CJK>
-+<U5A47> /x8f/xb9/xdd <CJK>
-+<U5A48> /x8f/xb9/xde <CJK>
-+<U5A4C> /x8f/xb9/xdf <CJK>
-+<U5A50> /x8f/xb9/xe0 <CJK>
-+<U5A55> /x8f/xb9/xe1 <CJK>
-+<U5A5E> /x8f/xb9/xe2 <CJK>
-+<U5A63> /x8f/xb9/xe3 <CJK>
-+<U5A65> /x8f/xb9/xe4 <CJK>
-+<U5A67> /x8f/xb9/xe5 <CJK>
-+<U5A6D> /x8f/xb9/xe6 <CJK>
-+<U5A77> /x8f/xb9/xe7 <CJK>
-+<U5A7A> /x8f/xb9/xe8 <CJK>
-+<U5A7B> /x8f/xb9/xe9 <CJK>
-+<U5A7E> /x8f/xb9/xea <CJK>
-+<U5A8B> /x8f/xb9/xeb <CJK>
-+<U5A90> /x8f/xb9/xec <CJK>
-+<U5A93> /x8f/xb9/xed <CJK>
-+<U5A96> /x8f/xb9/xee <CJK>
-+<U5A99> /x8f/xb9/xef <CJK>
-+<U5A9C> /x8f/xb9/xf0 <CJK>
-+<U5A9E> /x8f/xb9/xf1 <CJK>
-+<U5A9F> /x8f/xb9/xf2 <CJK>
-+<U5AA0> /x8f/xb9/xf3 <CJK>
-+<U5AA2> /x8f/xb9/xf4 <CJK>
-+<U5AA7> /x8f/xb9/xf5 <CJK>
-+<U5AAC> /x8f/xb9/xf6 <CJK>
-+<U5AB1> /x8f/xb9/xf7 <CJK>
-+<U5AB2> /x8f/xb9/xf8 <CJK>
-+<U5AB3> /x8f/xb9/xf9 <CJK>
-+<U5AB5> /x8f/xb9/xfa <CJK>
-+<U5AB8> /x8f/xb9/xfb <CJK>
-+<U5ABA> /x8f/xb9/xfc <CJK>
-+<U5ABB> /x8f/xb9/xfd <CJK>
-+<U5ABF> /x8f/xb9/xfe <CJK>
-+<U5AC4> /x8f/xba/xa1 <CJK>
-+<U5AC6> /x8f/xba/xa2 <CJK>
-+<U5AC8> /x8f/xba/xa3 <CJK>
-+<U5ACF> /x8f/xba/xa4 <CJK>
-+<U5ADA> /x8f/xba/xa5 <CJK>
-+<U5ADC> /x8f/xba/xa6 <CJK>
-+<U5AE0> /x8f/xba/xa7 <CJK>
-+<U5AE5> /x8f/xba/xa8 <CJK>
-+<U5AEA> /x8f/xba/xa9 <CJK>
-+<U5AEE> /x8f/xba/xaa <CJK>
-+<U5AF5> /x8f/xba/xab <CJK>
-+<U5AF6> /x8f/xba/xac <CJK>
-+<U5AFD> /x8f/xba/xad <CJK>
-+<U5B00> /x8f/xba/xae <CJK>
-+<U5B01> /x8f/xba/xaf <CJK>
-+<U5B08> /x8f/xba/xb0 <CJK>
-+<U5B17> /x8f/xba/xb1 <CJK>
-+<U5B34> /x8f/xba/xb2 <CJK>
-+<U5B19> /x8f/xba/xb3 <CJK>
-+<U5B1B> /x8f/xba/xb4 <CJK>
-+<U5B1D> /x8f/xba/xb5 <CJK>
-+<U5B21> /x8f/xba/xb6 <CJK>
-+<U5B25> /x8f/xba/xb7 <CJK>
-+<U5B2D> /x8f/xba/xb8 <CJK>
-+<U5B38> /x8f/xba/xb9 <CJK>
-+<U5B41> /x8f/xba/xba <CJK>
-+<U5B4B> /x8f/xba/xbb <CJK>
-+<U5B4C> /x8f/xba/xbc <CJK>
-+<U5B52> /x8f/xba/xbd <CJK>
-+<U5B56> /x8f/xba/xbe <CJK>
-+<U5B5E> /x8f/xba/xbf <CJK>
-+<U5B68> /x8f/xba/xc0 <CJK>
-+<U5B6E> /x8f/xba/xc1 <CJK>
-+<U5B6F> /x8f/xba/xc2 <CJK>
-+<U5B7C> /x8f/xba/xc3 <CJK>
-+<U5B7D> /x8f/xba/xc4 <CJK>
-+<U5B7E> /x8f/xba/xc5 <CJK>
-+<U5B7F> /x8f/xba/xc6 <CJK>
-+<U5B81> /x8f/xba/xc7 <CJK>
-+<U5B84> /x8f/xba/xc8 <CJK>
-+<U5B86> /x8f/xba/xc9 <CJK>
-+<U5B8A> /x8f/xba/xca <CJK>
-+<U5B8E> /x8f/xba/xcb <CJK>
-+<U5B90> /x8f/xba/xcc <CJK>
-+<U5B91> /x8f/xba/xcd <CJK>
-+<U5B93> /x8f/xba/xce <CJK>
-+<U5B94> /x8f/xba/xcf <CJK>
-+<U5B96> /x8f/xba/xd0 <CJK>
-+<U5BA8> /x8f/xba/xd1 <CJK>
-+<U5BA9> /x8f/xba/xd2 <CJK>
-+<U5BAC> /x8f/xba/xd3 <CJK>
-+<U5BAD> /x8f/xba/xd4 <CJK>
-+<U5BAF> /x8f/xba/xd5 <CJK>
-+<U5BB1> /x8f/xba/xd6 <CJK>
-+<U5BB2> /x8f/xba/xd7 <CJK>
-+<U5BB7> /x8f/xba/xd8 <CJK>
-+<U5BBA> /x8f/xba/xd9 <CJK>
-+<U5BBC> /x8f/xba/xda <CJK>
-+<U5BC0> /x8f/xba/xdb <CJK>
-+<U5BC1> /x8f/xba/xdc <CJK>
-+<U5BCD> /x8f/xba/xdd <CJK>
-+<U5BCF> /x8f/xba/xde <CJK>
-+<U5BD6> /x8f/xba/xdf <CJK>
-+<U5BD7> /x8f/xba/xe0 <CJK>
-+<U5BD8> /x8f/xba/xe1 <CJK>
-+<U5BD9> /x8f/xba/xe2 <CJK>
-+<U5BDA> /x8f/xba/xe3 <CJK>
-+<U5BE0> /x8f/xba/xe4 <CJK>
-+<U5BEF> /x8f/xba/xe5 <CJK>
-+<U5BF1> /x8f/xba/xe6 <CJK>
-+<U5BF4> /x8f/xba/xe7 <CJK>
-+<U5BFD> /x8f/xba/xe8 <CJK>
-+<U5C0C> /x8f/xba/xe9 <CJK>
-+<U5C17> /x8f/xba/xea <CJK>
-+<U5C1E> /x8f/xba/xeb <CJK>
-+<U5C1F> /x8f/xba/xec <CJK>
-+<U5C23> /x8f/xba/xed <CJK>
-+<U5C26> /x8f/xba/xee <CJK>
-+<U5C29> /x8f/xba/xef <CJK>
-+<U5C2B> /x8f/xba/xf0 <CJK>
-+<U5C2C> /x8f/xba/xf1 <CJK>
-+<U5C2E> /x8f/xba/xf2 <CJK>
-+<U5C30> /x8f/xba/xf3 <CJK>
-+<U5C32> /x8f/xba/xf4 <CJK>
-+<U5C35> /x8f/xba/xf5 <CJK>
-+<U5C36> /x8f/xba/xf6 <CJK>
-+<U5C59> /x8f/xba/xf7 <CJK>
-+<U5C5A> /x8f/xba/xf8 <CJK>
-+<U5C5C> /x8f/xba/xf9 <CJK>
-+<U5C62> /x8f/xba/xfa <CJK>
-+<U5C63> /x8f/xba/xfb <CJK>
-+<U5C67> /x8f/xba/xfc <CJK>
-+<U5C68> /x8f/xba/xfd <CJK>
-+<U5C69> /x8f/xba/xfe <CJK>
-+<U5C6D> /x8f/xbb/xa1 <CJK>
-+<U5C70> /x8f/xbb/xa2 <CJK>
-+<U5C74> /x8f/xbb/xa3 <CJK>
-+<U5C75> /x8f/xbb/xa4 <CJK>
-+<U5C7A> /x8f/xbb/xa5 <CJK>
-+<U5C7B> /x8f/xbb/xa6 <CJK>
-+<U5C7C> /x8f/xbb/xa7 <CJK>
-+<U5C7D> /x8f/xbb/xa8 <CJK>
-+<U5C87> /x8f/xbb/xa9 <CJK>
-+<U5C88> /x8f/xbb/xaa <CJK>
-+<U5C8A> /x8f/xbb/xab <CJK>
-+<U5C8F> /x8f/xbb/xac <CJK>
-+<U5C92> /x8f/xbb/xad <CJK>
-+<U5C9D> /x8f/xbb/xae <CJK>
-+<U5C9F> /x8f/xbb/xaf <CJK>
-+<U5CA0> /x8f/xbb/xb0 <CJK>
-+<U5CA2> /x8f/xbb/xb1 <CJK>
-+<U5CA3> /x8f/xbb/xb2 <CJK>
-+<U5CA6> /x8f/xbb/xb3 <CJK>
-+<U5CAA> /x8f/xbb/xb4 <CJK>
-+<U5CB2> /x8f/xbb/xb5 <CJK>
-+<U5CB4> /x8f/xbb/xb6 <CJK>
-+<U5CB5> /x8f/xbb/xb7 <CJK>
-+<U5CBA> /x8f/xbb/xb8 <CJK>
-+<U5CC9> /x8f/xbb/xb9 <CJK>
-+<U5CCB> /x8f/xbb/xba <CJK>
-+<U5CD2> /x8f/xbb/xbb <CJK>
-+<U5CDD> /x8f/xbb/xbc <CJK>
-+<U5CD7> /x8f/xbb/xbd <CJK>
-+<U5CEE> /x8f/xbb/xbe <CJK>
-+<U5CF1> /x8f/xbb/xbf <CJK>
-+<U5CF2> /x8f/xbb/xc0 <CJK>
-+<U5CF4> /x8f/xbb/xc1 <CJK>
-+<U5D01> /x8f/xbb/xc2 <CJK>
-+<U5D06> /x8f/xbb/xc3 <CJK>
-+<U5D0D> /x8f/xbb/xc4 <CJK>
-+<U5D12> /x8f/xbb/xc5 <CJK>
-+<U5D2B> /x8f/xbb/xc6 <CJK>
-+<U5D23> /x8f/xbb/xc7 <CJK>
-+<U5D24> /x8f/xbb/xc8 <CJK>
-+<U5D26> /x8f/xbb/xc9 <CJK>
-+<U5D27> /x8f/xbb/xca <CJK>
-+<U5D31> /x8f/xbb/xcb <CJK>
-+<U5D34> /x8f/xbb/xcc <CJK>
-+<U5D39> /x8f/xbb/xcd <CJK>
-+<U5D3D> /x8f/xbb/xce <CJK>
-+<U5D3F> /x8f/xbb/xcf <CJK>
-+<U5D42> /x8f/xbb/xd0 <CJK>
-+<U5D43> /x8f/xbb/xd1 <CJK>
-+<U5D46> /x8f/xbb/xd2 <CJK>
-+<U5D48> /x8f/xbb/xd3 <CJK>
-+<U5D55> /x8f/xbb/xd4 <CJK>
-+<U5D51> /x8f/xbb/xd5 <CJK>
-+<U5D59> /x8f/xbb/xd6 <CJK>
-+<U5D4A> /x8f/xbb/xd7 <CJK>
-+<U5D5F> /x8f/xbb/xd8 <CJK>
-+<U5D60> /x8f/xbb/xd9 <CJK>
-+<U5D61> /x8f/xbb/xda <CJK>
-+<U5D62> /x8f/xbb/xdb <CJK>
-+<U5D64> /x8f/xbb/xdc <CJK>
-+<U5D6A> /x8f/xbb/xdd <CJK>
-+<U5D6D> /x8f/xbb/xde <CJK>
-+<U5D70> /x8f/xbb/xdf <CJK>
-+<U5D79> /x8f/xbb/xe0 <CJK>
-+<U5D7A> /x8f/xbb/xe1 <CJK>
-+<U5D7E> /x8f/xbb/xe2 <CJK>
-+<U5D7F> /x8f/xbb/xe3 <CJK>
-+<U5D81> /x8f/xbb/xe4 <CJK>
-+<U5D83> /x8f/xbb/xe5 <CJK>
-+<U5D88> /x8f/xbb/xe6 <CJK>
-+<U5D8A> /x8f/xbb/xe7 <CJK>
-+<U5D92> /x8f/xbb/xe8 <CJK>
-+<U5D93> /x8f/xbb/xe9 <CJK>
-+<U5D94> /x8f/xbb/xea <CJK>
-+<U5D95> /x8f/xbb/xeb <CJK>
-+<U5D99> /x8f/xbb/xec <CJK>
-+<U5D9B> /x8f/xbb/xed <CJK>
-+<U5D9F> /x8f/xbb/xee <CJK>
-+<U5DA0> /x8f/xbb/xef <CJK>
-+<U5DA7> /x8f/xbb/xf0 <CJK>
-+<U5DAB> /x8f/xbb/xf1 <CJK>
-+<U5DB0> /x8f/xbb/xf2 <CJK>
-+<U5DB4> /x8f/xbb/xf3 <CJK>
-+<U5DB8> /x8f/xbb/xf4 <CJK>
-+<U5DB9> /x8f/xbb/xf5 <CJK>
-+<U5DC3> /x8f/xbb/xf6 <CJK>
-+<U5DC7> /x8f/xbb/xf7 <CJK>
-+<U5DCB> /x8f/xbb/xf8 <CJK>
-+<U5DD0> /x8f/xbb/xf9 <CJK>
-+<U5DCE> /x8f/xbb/xfa <CJK>
-+<U5DD8> /x8f/xbb/xfb <CJK>
-+<U5DD9> /x8f/xbb/xfc <CJK>
-+<U5DE0> /x8f/xbb/xfd <CJK>
-+<U5DE4> /x8f/xbb/xfe <CJK>
-+<U5DE9> /x8f/xbc/xa1 <CJK>
-+<U5DF8> /x8f/xbc/xa2 <CJK>
-+<U5DF9> /x8f/xbc/xa3 <CJK>
-+<U5E00> /x8f/xbc/xa4 <CJK>
-+<U5E07> /x8f/xbc/xa5 <CJK>
-+<U5E0D> /x8f/xbc/xa6 <CJK>
-+<U5E12> /x8f/xbc/xa7 <CJK>
-+<U5E14> /x8f/xbc/xa8 <CJK>
-+<U5E15> /x8f/xbc/xa9 <CJK>
-+<U5E18> /x8f/xbc/xaa <CJK>
-+<U5E1F> /x8f/xbc/xab <CJK>
-+<U5E20> /x8f/xbc/xac <CJK>
-+<U5E2E> /x8f/xbc/xad <CJK>
-+<U5E28> /x8f/xbc/xae <CJK>
-+<U5E32> /x8f/xbc/xaf <CJK>
-+<U5E35> /x8f/xbc/xb0 <CJK>
-+<U5E3E> /x8f/xbc/xb1 <CJK>
-+<U5E4B> /x8f/xbc/xb2 <CJK>
-+<U5E50> /x8f/xbc/xb3 <CJK>
-+<U5E49> /x8f/xbc/xb4 <CJK>
-+<U5E51> /x8f/xbc/xb5 <CJK>
-+<U5E56> /x8f/xbc/xb6 <CJK>
-+<U5E58> /x8f/xbc/xb7 <CJK>
-+<U5E5B> /x8f/xbc/xb8 <CJK>
-+<U5E5C> /x8f/xbc/xb9 <CJK>
-+<U5E5E> /x8f/xbc/xba <CJK>
-+<U5E68> /x8f/xbc/xbb <CJK>
-+<U5E6A> /x8f/xbc/xbc <CJK>
-+<U5E6B> /x8f/xbc/xbd <CJK>
-+<U5E6C> /x8f/xbc/xbe <CJK>
-+<U5E6D> /x8f/xbc/xbf <CJK>
-+<U5E6E> /x8f/xbc/xc0 <CJK>
-+<U5E70> /x8f/xbc/xc1 <CJK>
-+<U5E80> /x8f/xbc/xc2 <CJK>
-+<U5E8B> /x8f/xbc/xc3 <CJK>
-+<U5E8E> /x8f/xbc/xc4 <CJK>
-+<U5EA2> /x8f/xbc/xc5 <CJK>
-+<U5EA4> /x8f/xbc/xc6 <CJK>
-+<U5EA5> /x8f/xbc/xc7 <CJK>
-+<U5EA8> /x8f/xbc/xc8 <CJK>
-+<U5EAA> /x8f/xbc/xc9 <CJK>
-+<U5EAC> /x8f/xbc/xca <CJK>
-+<U5EB1> /x8f/xbc/xcb <CJK>
-+<U5EB3> /x8f/xbc/xcc <CJK>
-+<U5EBD> /x8f/xbc/xcd <CJK>
-+<U5EBE> /x8f/xbc/xce <CJK>
-+<U5EBF> /x8f/xbc/xcf <CJK>
-+<U5EC6> /x8f/xbc/xd0 <CJK>
-+<U5ECC> /x8f/xbc/xd1 <CJK>
-+<U5ECB> /x8f/xbc/xd2 <CJK>
-+<U5ECE> /x8f/xbc/xd3 <CJK>
-+<U5ED1> /x8f/xbc/xd4 <CJK>
-+<U5ED2> /x8f/xbc/xd5 <CJK>
-+<U5ED4> /x8f/xbc/xd6 <CJK>
-+<U5ED5> /x8f/xbc/xd7 <CJK>
-+<U5EDC> /x8f/xbc/xd8 <CJK>
-+<U5EDE> /x8f/xbc/xd9 <CJK>
-+<U5EE5> /x8f/xbc/xda <CJK>
-+<U5EEB> /x8f/xbc/xdb <CJK>
-+<U5F02> /x8f/xbc/xdc <CJK>
-+<U5F06> /x8f/xbc/xdd <CJK>
-+<U5F07> /x8f/xbc/xde <CJK>
-+<U5F08> /x8f/xbc/xdf <CJK>
-+<U5F0E> /x8f/xbc/xe0 <CJK>
-+<U5F19> /x8f/xbc/xe1 <CJK>
-+<U5F1C> /x8f/xbc/xe2 <CJK>
-+<U5F1D> /x8f/xbc/xe3 <CJK>
-+<U5F21> /x8f/xbc/xe4 <CJK>
-+<U5F22> /x8f/xbc/xe5 <CJK>
-+<U5F23> /x8f/xbc/xe6 <CJK>
-+<U5F24> /x8f/xbc/xe7 <CJK>
-+<U5F28> /x8f/xbc/xe8 <CJK>
-+<U5F2B> /x8f/xbc/xe9 <CJK>
-+<U5F2C> /x8f/xbc/xea <CJK>
-+<U5F2E> /x8f/xbc/xeb <CJK>
-+<U5F30> /x8f/xbc/xec <CJK>
-+<U5F34> /x8f/xbc/xed <CJK>
-+<U5F36> /x8f/xbc/xee <CJK>
-+<U5F3B> /x8f/xbc/xef <CJK>
-+<U5F3D> /x8f/xbc/xf0 <CJK>
-+<U5F3F> /x8f/xbc/xf1 <CJK>
-+<U5F40> /x8f/xbc/xf2 <CJK>
-+<U5F44> /x8f/xbc/xf3 <CJK>
-+<U5F45> /x8f/xbc/xf4 <CJK>
-+<U5F47> /x8f/xbc/xf5 <CJK>
-+<U5F4D> /x8f/xbc/xf6 <CJK>
-+<U5F50> /x8f/xbc/xf7 <CJK>
-+<U5F54> /x8f/xbc/xf8 <CJK>
-+<U5F58> /x8f/xbc/xf9 <CJK>
-+<U5F5B> /x8f/xbc/xfa <CJK>
-+<U5F60> /x8f/xbc/xfb <CJK>
-+<U5F63> /x8f/xbc/xfc <CJK>
-+<U5F64> /x8f/xbc/xfd <CJK>
-+<U5F67> /x8f/xbc/xfe <CJK>
-+<U5F6F> /x8f/xbd/xa1 <CJK>
-+<U5F72> /x8f/xbd/xa2 <CJK>
-+<U5F74> /x8f/xbd/xa3 <CJK>
-+<U5F75> /x8f/xbd/xa4 <CJK>
-+<U5F78> /x8f/xbd/xa5 <CJK>
-+<U5F7A> /x8f/xbd/xa6 <CJK>
-+<U5F7D> /x8f/xbd/xa7 <CJK>
-+<U5F7E> /x8f/xbd/xa8 <CJK>
-+<U5F89> /x8f/xbd/xa9 <CJK>
-+<U5F8D> /x8f/xbd/xaa <CJK>
-+<U5F8F> /x8f/xbd/xab <CJK>
-+<U5F96> /x8f/xbd/xac <CJK>
-+<U5F9C> /x8f/xbd/xad <CJK>
-+<U5F9D> /x8f/xbd/xae <CJK>
-+<U5FA2> /x8f/xbd/xaf <CJK>
-+<U5FA7> /x8f/xbd/xb0 <CJK>
-+<U5FAB> /x8f/xbd/xb1 <CJK>
-+<U5FA4> /x8f/xbd/xb2 <CJK>
-+<U5FAC> /x8f/xbd/xb3 <CJK>
-+<U5FAF> /x8f/xbd/xb4 <CJK>
-+<U5FB0> /x8f/xbd/xb5 <CJK>
-+<U5FB1> /x8f/xbd/xb6 <CJK>
-+<U5FB8> /x8f/xbd/xb7 <CJK>
-+<U5FC4> /x8f/xbd/xb8 <CJK>
-+<U5FC7> /x8f/xbd/xb9 <CJK>
-+<U5FC8> /x8f/xbd/xba <CJK>
-+<U5FC9> /x8f/xbd/xbb <CJK>
-+<U5FCB> /x8f/xbd/xbc <CJK>
-+<U5FD0> /x8f/xbd/xbd <CJK>
-+<U5FD1> /x8f/xbd/xbe <CJK>
-+<U5FD2> /x8f/xbd/xbf <CJK>
-+<U5FD3> /x8f/xbd/xc0 <CJK>
-+<U5FD4> /x8f/xbd/xc1 <CJK>
-+<U5FDE> /x8f/xbd/xc2 <CJK>
-+<U5FE1> /x8f/xbd/xc3 <CJK>
-+<U5FE2> /x8f/xbd/xc4 <CJK>
-+<U5FE8> /x8f/xbd/xc5 <CJK>
-+<U5FE9> /x8f/xbd/xc6 <CJK>
-+<U5FEA> /x8f/xbd/xc7 <CJK>
-+<U5FEC> /x8f/xbd/xc8 <CJK>
-+<U5FED> /x8f/xbd/xc9 <CJK>
-+<U5FEE> /x8f/xbd/xca <CJK>
-+<U5FEF> /x8f/xbd/xcb <CJK>
-+<U5FF2> /x8f/xbd/xcc <CJK>
-+<U5FF3> /x8f/xbd/xcd <CJK>
-+<U5FF6> /x8f/xbd/xce <CJK>
-+<U5FFA> /x8f/xbd/xcf <CJK>
-+<U5FFC> /x8f/xbd/xd0 <CJK>
-+<U6007> /x8f/xbd/xd1 <CJK>
-+<U600A> /x8f/xbd/xd2 <CJK>
-+<U600D> /x8f/xbd/xd3 <CJK>
-+<U6013> /x8f/xbd/xd4 <CJK>
-+<U6014> /x8f/xbd/xd5 <CJK>
-+<U6017> /x8f/xbd/xd6 <CJK>
-+<U6018> /x8f/xbd/xd7 <CJK>
-+<U601A> /x8f/xbd/xd8 <CJK>
-+<U601F> /x8f/xbd/xd9 <CJK>
-+<U6024> /x8f/xbd/xda <CJK>
-+<U602D> /x8f/xbd/xdb <CJK>
-+<U6033> /x8f/xbd/xdc <CJK>
-+<U6035> /x8f/xbd/xdd <CJK>
-+<U6040> /x8f/xbd/xde <CJK>
-+<U6047> /x8f/xbd/xdf <CJK>
-+<U6048> /x8f/xbd/xe0 <CJK>
-+<U6049> /x8f/xbd/xe1 <CJK>
-+<U604C> /x8f/xbd/xe2 <CJK>
-+<U6051> /x8f/xbd/xe3 <CJK>
-+<U6054> /x8f/xbd/xe4 <CJK>
-+<U6056> /x8f/xbd/xe5 <CJK>
-+<U6057> /x8f/xbd/xe6 <CJK>
-+<U605D> /x8f/xbd/xe7 <CJK>
-+<U6061> /x8f/xbd/xe8 <CJK>
-+<U6067> /x8f/xbd/xe9 <CJK>
-+<U6071> /x8f/xbd/xea <CJK>
-+<U607E> /x8f/xbd/xeb <CJK>
-+<U607F> /x8f/xbd/xec <CJK>
-+<U6082> /x8f/xbd/xed <CJK>
-+<U6086> /x8f/xbd/xee <CJK>
-+<U6088> /x8f/xbd/xef <CJK>
-+<U608A> /x8f/xbd/xf0 <CJK>
-+<U608E> /x8f/xbd/xf1 <CJK>
-+<U6091> /x8f/xbd/xf2 <CJK>
-+<U6093> /x8f/xbd/xf3 <CJK>
-+<U6095> /x8f/xbd/xf4 <CJK>
-+<U6098> /x8f/xbd/xf5 <CJK>
-+<U609D> /x8f/xbd/xf6 <CJK>
-+<U609E> /x8f/xbd/xf7 <CJK>
-+<U60A2> /x8f/xbd/xf8 <CJK>
-+<U60A4> /x8f/xbd/xf9 <CJK>
-+<U60A5> /x8f/xbd/xfa <CJK>
-+<U60A8> /x8f/xbd/xfb <CJK>
-+<U60B0> /x8f/xbd/xfc <CJK>
-+<U60B1> /x8f/xbd/xfd <CJK>
-+<U60B7> /x8f/xbd/xfe <CJK>
-+<U60BB> /x8f/xbe/xa1 <CJK>
-+<U60BE> /x8f/xbe/xa2 <CJK>
-+<U60C2> /x8f/xbe/xa3 <CJK>
-+<U60C4> /x8f/xbe/xa4 <CJK>
-+<U60C8> /x8f/xbe/xa5 <CJK>
-+<U60C9> /x8f/xbe/xa6 <CJK>
-+<U60CA> /x8f/xbe/xa7 <CJK>
-+<U60CB> /x8f/xbe/xa8 <CJK>
-+<U60CE> /x8f/xbe/xa9 <CJK>
-+<U60CF> /x8f/xbe/xaa <CJK>
-+<U60D4> /x8f/xbe/xab <CJK>
-+<U60D5> /x8f/xbe/xac <CJK>
-+<U60D9> /x8f/xbe/xad <CJK>
-+<U60DB> /x8f/xbe/xae <CJK>
-+<U60DD> /x8f/xbe/xaf <CJK>
-+<U60DE> /x8f/xbe/xb0 <CJK>
-+<U60E2> /x8f/xbe/xb1 <CJK>
-+<U60E5> /x8f/xbe/xb2 <CJK>
-+<U60F2> /x8f/xbe/xb3 <CJK>
-+<U60F5> /x8f/xbe/xb4 <CJK>
-+<U60F8> /x8f/xbe/xb5 <CJK>
-+<U60FC> /x8f/xbe/xb6 <CJK>
-+<U60FD> /x8f/xbe/xb7 <CJK>
-+<U6102> /x8f/xbe/xb8 <CJK>
-+<U6107> /x8f/xbe/xb9 <CJK>
-+<U610A> /x8f/xbe/xba <CJK>
-+<U610C> /x8f/xbe/xbb <CJK>
-+<U6110> /x8f/xbe/xbc <CJK>
-+<U6111> /x8f/xbe/xbd <CJK>
-+<U6112> /x8f/xbe/xbe <CJK>
-+<U6113> /x8f/xbe/xbf <CJK>
-+<U6114> /x8f/xbe/xc0 <CJK>
-+<U6116> /x8f/xbe/xc1 <CJK>
-+<U6117> /x8f/xbe/xc2 <CJK>
-+<U6119> /x8f/xbe/xc3 <CJK>
-+<U611C> /x8f/xbe/xc4 <CJK>
-+<U611E> /x8f/xbe/xc5 <CJK>
-+<U6122> /x8f/xbe/xc6 <CJK>
-+<U612A> /x8f/xbe/xc7 <CJK>
-+<U612B> /x8f/xbe/xc8 <CJK>
-+<U6130> /x8f/xbe/xc9 <CJK>
-+<U6131> /x8f/xbe/xca <CJK>
-+<U6135> /x8f/xbe/xcb <CJK>
-+<U6136> /x8f/xbe/xcc <CJK>
-+<U6137> /x8f/xbe/xcd <CJK>
-+<U6139> /x8f/xbe/xce <CJK>
-+<U6141> /x8f/xbe/xcf <CJK>
-+<U6145> /x8f/xbe/xd0 <CJK>
-+<U6146> /x8f/xbe/xd1 <CJK>
-+<U6149> /x8f/xbe/xd2 <CJK>
-+<U615E> /x8f/xbe/xd3 <CJK>
-+<U6160> /x8f/xbe/xd4 <CJK>
-+<U616C> /x8f/xbe/xd5 <CJK>
-+<U6172> /x8f/xbe/xd6 <CJK>
-+<U6178> /x8f/xbe/xd7 <CJK>
-+<U617B> /x8f/xbe/xd8 <CJK>
-+<U617C> /x8f/xbe/xd9 <CJK>
-+<U617F> /x8f/xbe/xda <CJK>
-+<U6180> /x8f/xbe/xdb <CJK>
-+<U6181> /x8f/xbe/xdc <CJK>
-+<U6183> /x8f/xbe/xdd <CJK>
-+<U6184> /x8f/xbe/xde <CJK>
-+<U618B> /x8f/xbe/xdf <CJK>
-+<U618D> /x8f/xbe/xe0 <CJK>
-+<U6192> /x8f/xbe/xe1 <CJK>
-+<U6193> /x8f/xbe/xe2 <CJK>
-+<U6197> /x8f/xbe/xe3 <CJK>
-+<U6198> /x8f/xbe/xe4 <CJK>
-+<U619C> /x8f/xbe/xe5 <CJK>
-+<U619D> /x8f/xbe/xe6 <CJK>
-+<U619F> /x8f/xbe/xe7 <CJK>
-+<U61A0> /x8f/xbe/xe8 <CJK>
-+<U61A5> /x8f/xbe/xe9 <CJK>
-+<U61A8> /x8f/xbe/xea <CJK>
-+<U61AA> /x8f/xbe/xeb <CJK>
-+<U61AD> /x8f/xbe/xec <CJK>
-+<U61B8> /x8f/xbe/xed <CJK>
-+<U61B9> /x8f/xbe/xee <CJK>
-+<U61BC> /x8f/xbe/xef <CJK>
-+<U61C0> /x8f/xbe/xf0 <CJK>
-+<U61C1> /x8f/xbe/xf1 <CJK>
-+<U61C2> /x8f/xbe/xf2 <CJK>
-+<U61CE> /x8f/xbe/xf3 <CJK>
-+<U61CF> /x8f/xbe/xf4 <CJK>
-+<U61D5> /x8f/xbe/xf5 <CJK>
-+<U61DC> /x8f/xbe/xf6 <CJK>
-+<U61DD> /x8f/xbe/xf7 <CJK>
-+<U61DE> /x8f/xbe/xf8 <CJK>
-+<U61DF> /x8f/xbe/xf9 <CJK>
-+<U61E1> /x8f/xbe/xfa <CJK>
-+<U61E2> /x8f/xbe/xfb <CJK>
-+<U61E7> /x8f/xbe/xfc <CJK>
-+<U61E9> /x8f/xbe/xfd <CJK>
-+<U61E5> /x8f/xbe/xfe <CJK>
-+<U61EC> /x8f/xbf/xa1 <CJK>
-+<U61ED> /x8f/xbf/xa2 <CJK>
-+<U61EF> /x8f/xbf/xa3 <CJK>
-+<U6201> /x8f/xbf/xa4 <CJK>
-+<U6203> /x8f/xbf/xa5 <CJK>
-+<U6204> /x8f/xbf/xa6 <CJK>
-+<U6207> /x8f/xbf/xa7 <CJK>
-+<U6213> /x8f/xbf/xa8 <CJK>
-+<U6215> /x8f/xbf/xa9 <CJK>
-+<U621C> /x8f/xbf/xaa <CJK>
-+<U6220> /x8f/xbf/xab <CJK>
-+<U6222> /x8f/xbf/xac <CJK>
-+<U6223> /x8f/xbf/xad <CJK>
-+<U6227> /x8f/xbf/xae <CJK>
-+<U6229> /x8f/xbf/xaf <CJK>
-+<U622B> /x8f/xbf/xb0 <CJK>
-+<U6239> /x8f/xbf/xb1 <CJK>
-+<U623D> /x8f/xbf/xb2 <CJK>
-+<U6242> /x8f/xbf/xb3 <CJK>
-+<U6243> /x8f/xbf/xb4 <CJK>
-+<U6244> /x8f/xbf/xb5 <CJK>
-+<U6246> /x8f/xbf/xb6 <CJK>
-+<U624C> /x8f/xbf/xb7 <CJK>
-+<U6250> /x8f/xbf/xb8 <CJK>
-+<U6251> /x8f/xbf/xb9 <CJK>
-+<U6252> /x8f/xbf/xba <CJK>
-+<U6254> /x8f/xbf/xbb <CJK>
-+<U6256> /x8f/xbf/xbc <CJK>
-+<U625A> /x8f/xbf/xbd <CJK>
-+<U625C> /x8f/xbf/xbe <CJK>
-+<U6264> /x8f/xbf/xbf <CJK>
-+<U626D> /x8f/xbf/xc0 <CJK>
-+<U626F> /x8f/xbf/xc1 <CJK>
-+<U6273> /x8f/xbf/xc2 <CJK>
-+<U627A> /x8f/xbf/xc3 <CJK>
-+<U627D> /x8f/xbf/xc4 <CJK>
-+<U628D> /x8f/xbf/xc5 <CJK>
-+<U628E> /x8f/xbf/xc6 <CJK>
-+<U628F> /x8f/xbf/xc7 <CJK>
-+<U6290> /x8f/xbf/xc8 <CJK>
-+<U62A6> /x8f/xbf/xc9 <CJK>
-+<U62A8> /x8f/xbf/xca <CJK>
-+<U62B3> /x8f/xbf/xcb <CJK>
-+<U62B6> /x8f/xbf/xcc <CJK>
-+<U62B7> /x8f/xbf/xcd <CJK>
-+<U62BA> /x8f/xbf/xce <CJK>
-+<U62BE> /x8f/xbf/xcf <CJK>
-+<U62BF> /x8f/xbf/xd0 <CJK>
-+<U62C4> /x8f/xbf/xd1 <CJK>
-+<U62CE> /x8f/xbf/xd2 <CJK>
-+<U62D5> /x8f/xbf/xd3 <CJK>
-+<U62D6> /x8f/xbf/xd4 <CJK>
-+<U62DA> /x8f/xbf/xd5 <CJK>
-+<U62EA> /x8f/xbf/xd6 <CJK>
-+<U62F2> /x8f/xbf/xd7 <CJK>
-+<U62F4> /x8f/xbf/xd8 <CJK>
-+<U62FC> /x8f/xbf/xd9 <CJK>
-+<U62FD> /x8f/xbf/xda <CJK>
-+<U6303> /x8f/xbf/xdb <CJK>
-+<U6304> /x8f/xbf/xdc <CJK>
-+<U630A> /x8f/xbf/xdd <CJK>
-+<U630B> /x8f/xbf/xde <CJK>
-+<U630D> /x8f/xbf/xdf <CJK>
-+<U6310> /x8f/xbf/xe0 <CJK>
-+<U6313> /x8f/xbf/xe1 <CJK>
-+<U6316> /x8f/xbf/xe2 <CJK>
-+<U6318> /x8f/xbf/xe3 <CJK>
-+<U6329> /x8f/xbf/xe4 <CJK>
-+<U632A> /x8f/xbf/xe5 <CJK>
-+<U632D> /x8f/xbf/xe6 <CJK>
-+<U6335> /x8f/xbf/xe7 <CJK>
-+<U6336> /x8f/xbf/xe8 <CJK>
-+<U6339> /x8f/xbf/xe9 <CJK>
-+<U633C> /x8f/xbf/xea <CJK>
-+<U6341> /x8f/xbf/xeb <CJK>
-+<U6342> /x8f/xbf/xec <CJK>
-+<U6343> /x8f/xbf/xed <CJK>
-+<U6344> /x8f/xbf/xee <CJK>
-+<U6346> /x8f/xbf/xef <CJK>
-+<U634A> /x8f/xbf/xf0 <CJK>
-+<U634B> /x8f/xbf/xf1 <CJK>
-+<U634E> /x8f/xbf/xf2 <CJK>
-+<U6352> /x8f/xbf/xf3 <CJK>
-+<U6353> /x8f/xbf/xf4 <CJK>
-+<U6354> /x8f/xbf/xf5 <CJK>
-+<U6358> /x8f/xbf/xf6 <CJK>
-+<U635B> /x8f/xbf/xf7 <CJK>
-+<U6365> /x8f/xbf/xf8 <CJK>
-+<U6366> /x8f/xbf/xf9 <CJK>
-+<U636C> /x8f/xbf/xfa <CJK>
-+<U636D> /x8f/xbf/xfb <CJK>
-+<U6371> /x8f/xbf/xfc <CJK>
-+<U6374> /x8f/xbf/xfd <CJK>
-+<U6375> /x8f/xbf/xfe <CJK>
-+<U6378> /x8f/xc0/xa1 <CJK>
-+<U637C> /x8f/xc0/xa2 <CJK>
-+<U637D> /x8f/xc0/xa3 <CJK>
-+<U637F> /x8f/xc0/xa4 <CJK>
-+<U6382> /x8f/xc0/xa5 <CJK>
-+<U6384> /x8f/xc0/xa6 <CJK>
-+<U6387> /x8f/xc0/xa7 <CJK>
-+<U638A> /x8f/xc0/xa8 <CJK>
-+<U6390> /x8f/xc0/xa9 <CJK>
-+<U6394> /x8f/xc0/xaa <CJK>
-+<U6395> /x8f/xc0/xab <CJK>
-+<U6399> /x8f/xc0/xac <CJK>
-+<U639A> /x8f/xc0/xad <CJK>
-+<U639E> /x8f/xc0/xae <CJK>
-+<U63A4> /x8f/xc0/xaf <CJK>
-+<U63A6> /x8f/xc0/xb0 <CJK>
-+<U63AD> /x8f/xc0/xb1 <CJK>
-+<U63AE> /x8f/xc0/xb2 <CJK>
-+<U63AF> /x8f/xc0/xb3 <CJK>
-+<U63BD> /x8f/xc0/xb4 <CJK>
-+<U63C1> /x8f/xc0/xb5 <CJK>
-+<U63C5> /x8f/xc0/xb6 <CJK>
-+<U63C8> /x8f/xc0/xb7 <CJK>
-+<U63CE> /x8f/xc0/xb8 <CJK>
-+<U63D1> /x8f/xc0/xb9 <CJK>
-+<U63D3> /x8f/xc0/xba <CJK>
-+<U63D4> /x8f/xc0/xbb <CJK>
-+<U63D5> /x8f/xc0/xbc <CJK>
-+<U63DC> /x8f/xc0/xbd <CJK>
-+<U63E0> /x8f/xc0/xbe <CJK>
-+<U63E5> /x8f/xc0/xbf <CJK>
-+<U63EA> /x8f/xc0/xc0 <CJK>
-+<U63EC> /x8f/xc0/xc1 <CJK>
-+<U63F2> /x8f/xc0/xc2 <CJK>
-+<U63F3> /x8f/xc0/xc3 <CJK>
-+<U63F5> /x8f/xc0/xc4 <CJK>
-+<U63F8> /x8f/xc0/xc5 <CJK>
-+<U63F9> /x8f/xc0/xc6 <CJK>
-+<U6409> /x8f/xc0/xc7 <CJK>
-+<U640A> /x8f/xc0/xc8 <CJK>
-+<U6410> /x8f/xc0/xc9 <CJK>
-+<U6412> /x8f/xc0/xca <CJK>
-+<U6414> /x8f/xc0/xcb <CJK>
-+<U6418> /x8f/xc0/xcc <CJK>
-+<U641E> /x8f/xc0/xcd <CJK>
-+<U6420> /x8f/xc0/xce <CJK>
-+<U6422> /x8f/xc0/xcf <CJK>
-+<U6424> /x8f/xc0/xd0 <CJK>
-+<U6425> /x8f/xc0/xd1 <CJK>
-+<U6429> /x8f/xc0/xd2 <CJK>
-+<U642A> /x8f/xc0/xd3 <CJK>
-+<U642F> /x8f/xc0/xd4 <CJK>
-+<U6430> /x8f/xc0/xd5 <CJK>
-+<U6435> /x8f/xc0/xd6 <CJK>
-+<U643D> /x8f/xc0/xd7 <CJK>
-+<U643F> /x8f/xc0/xd8 <CJK>
-+<U644B> /x8f/xc0/xd9 <CJK>
-+<U644F> /x8f/xc0/xda <CJK>
-+<U6451> /x8f/xc0/xdb <CJK>
-+<U6452> /x8f/xc0/xdc <CJK>
-+<U6453> /x8f/xc0/xdd <CJK>
-+<U6454> /x8f/xc0/xde <CJK>
-+<U645A> /x8f/xc0/xdf <CJK>
-+<U645B> /x8f/xc0/xe0 <CJK>
-+<U645C> /x8f/xc0/xe1 <CJK>
-+<U645D> /x8f/xc0/xe2 <CJK>
-+<U645F> /x8f/xc0/xe3 <CJK>
-+<U6460> /x8f/xc0/xe4 <CJK>
-+<U6461> /x8f/xc0/xe5 <CJK>
-+<U6463> /x8f/xc0/xe6 <CJK>
-+<U646D> /x8f/xc0/xe7 <CJK>
-+<U6473> /x8f/xc0/xe8 <CJK>
-+<U6474> /x8f/xc0/xe9 <CJK>
-+<U647B> /x8f/xc0/xea <CJK>
-+<U647D> /x8f/xc0/xeb <CJK>
-+<U6485> /x8f/xc0/xec <CJK>
-+<U6487> /x8f/xc0/xed <CJK>
-+<U648F> /x8f/xc0/xee <CJK>
-+<U6490> /x8f/xc0/xef <CJK>
-+<U6491> /x8f/xc0/xf0 <CJK>
-+<U6498> /x8f/xc0/xf1 <CJK>
-+<U6499> /x8f/xc0/xf2 <CJK>
-+<U649B> /x8f/xc0/xf3 <CJK>
-+<U649D> /x8f/xc0/xf4 <CJK>
-+<U649F> /x8f/xc0/xf5 <CJK>
-+<U64A1> /x8f/xc0/xf6 <CJK>
-+<U64A3> /x8f/xc0/xf7 <CJK>
-+<U64A6> /x8f/xc0/xf8 <CJK>
-+<U64A8> /x8f/xc0/xf9 <CJK>
-+<U64AC> /x8f/xc0/xfa <CJK>
-+<U64B3> /x8f/xc0/xfb <CJK>
-+<U64BD> /x8f/xc0/xfc <CJK>
-+<U64BE> /x8f/xc0/xfd <CJK>
-+<U64BF> /x8f/xc0/xfe <CJK>
-+<U64C4> /x8f/xc1/xa1 <CJK>
-+<U64C9> /x8f/xc1/xa2 <CJK>
-+<U64CA> /x8f/xc1/xa3 <CJK>
-+<U64CB> /x8f/xc1/xa4 <CJK>
-+<U64CC> /x8f/xc1/xa5 <CJK>
-+<U64CE> /x8f/xc1/xa6 <CJK>
-+<U64D0> /x8f/xc1/xa7 <CJK>
-+<U64D1> /x8f/xc1/xa8 <CJK>
-+<U64D5> /x8f/xc1/xa9 <CJK>
-+<U64D7> /x8f/xc1/xaa <CJK>
-+<U64E4> /x8f/xc1/xab <CJK>
-+<U64E5> /x8f/xc1/xac <CJK>
-+<U64E9> /x8f/xc1/xad <CJK>
-+<U64EA> /x8f/xc1/xae <CJK>
-+<U64ED> /x8f/xc1/xaf <CJK>
-+<U64F0> /x8f/xc1/xb0 <CJK>
-+<U64F5> /x8f/xc1/xb1 <CJK>
-+<U64F7> /x8f/xc1/xb2 <CJK>
-+<U64FB> /x8f/xc1/xb3 <CJK>
-+<U64FF> /x8f/xc1/xb4 <CJK>
-+<U6501> /x8f/xc1/xb5 <CJK>
-+<U6504> /x8f/xc1/xb6 <CJK>
-+<U6508> /x8f/xc1/xb7 <CJK>
-+<U6509> /x8f/xc1/xb8 <CJK>
-+<U650A> /x8f/xc1/xb9 <CJK>
-+<U650F> /x8f/xc1/xba <CJK>
-+<U6513> /x8f/xc1/xbb <CJK>
-+<U6514> /x8f/xc1/xbc <CJK>
-+<U6516> /x8f/xc1/xbd <CJK>
-+<U6519> /x8f/xc1/xbe <CJK>
-+<U651B> /x8f/xc1/xbf <CJK>
-+<U651E> /x8f/xc1/xc0 <CJK>
-+<U651F> /x8f/xc1/xc1 <CJK>
-+<U6522> /x8f/xc1/xc2 <CJK>
-+<U6526> /x8f/xc1/xc3 <CJK>
-+<U6529> /x8f/xc1/xc4 <CJK>
-+<U652E> /x8f/xc1/xc5 <CJK>
-+<U6531> /x8f/xc1/xc6 <CJK>
-+<U653A> /x8f/xc1/xc7 <CJK>
-+<U653C> /x8f/xc1/xc8 <CJK>
-+<U653D> /x8f/xc1/xc9 <CJK>
-+<U6543> /x8f/xc1/xca <CJK>
-+<U6547> /x8f/xc1/xcb <CJK>
-+<U6549> /x8f/xc1/xcc <CJK>
-+<U6550> /x8f/xc1/xcd <CJK>
-+<U6552> /x8f/xc1/xce <CJK>
-+<U6554> /x8f/xc1/xcf <CJK>
-+<U655F> /x8f/xc1/xd0 <CJK>
-+<U6560> /x8f/xc1/xd1 <CJK>
-+<U6567> /x8f/xc1/xd2 <CJK>
-+<U656B> /x8f/xc1/xd3 <CJK>
-+<U657A> /x8f/xc1/xd4 <CJK>
-+<U657D> /x8f/xc1/xd5 <CJK>
-+<U6581> /x8f/xc1/xd6 <CJK>
-+<U6585> /x8f/xc1/xd7 <CJK>
-+<U658A> /x8f/xc1/xd8 <CJK>
-+<U6592> /x8f/xc1/xd9 <CJK>
-+<U6595> /x8f/xc1/xda <CJK>
-+<U6598> /x8f/xc1/xdb <CJK>
-+<U659D> /x8f/xc1/xdc <CJK>
-+<U65A0> /x8f/xc1/xdd <CJK>
-+<U65A3> /x8f/xc1/xde <CJK>
-+<U65A6> /x8f/xc1/xdf <CJK>
-+<U65AE> /x8f/xc1/xe0 <CJK>
-+<U65B2> /x8f/xc1/xe1 <CJK>
-+<U65B3> /x8f/xc1/xe2 <CJK>
-+<U65B4> /x8f/xc1/xe3 <CJK>
-+<U65BF> /x8f/xc1/xe4 <CJK>
-+<U65C2> /x8f/xc1/xe5 <CJK>
-+<U65C8> /x8f/xc1/xe6 <CJK>
-+<U65C9> /x8f/xc1/xe7 <CJK>
-+<U65CE> /x8f/xc1/xe8 <CJK>
-+<U65D0> /x8f/xc1/xe9 <CJK>
-+<U65D4> /x8f/xc1/xea <CJK>
-+<U65D6> /x8f/xc1/xeb <CJK>
-+<U65D8> /x8f/xc1/xec <CJK>
-+<U65DF> /x8f/xc1/xed <CJK>
-+<U65F0> /x8f/xc1/xee <CJK>
-+<U65F2> /x8f/xc1/xef <CJK>
-+<U65F4> /x8f/xc1/xf0 <CJK>
-+<U65F5> /x8f/xc1/xf1 <CJK>
-+<U65F9> /x8f/xc1/xf2 <CJK>
-+<U65FE> /x8f/xc1/xf3 <CJK>
-+<U65FF> /x8f/xc1/xf4 <CJK>
-+<U6600> /x8f/xc1/xf5 <CJK>
-+<U6604> /x8f/xc1/xf6 <CJK>
-+<U6608> /x8f/xc1/xf7 <CJK>
-+<U6609> /x8f/xc1/xf8 <CJK>
-+<U660D> /x8f/xc1/xf9 <CJK>
-+<U6611> /x8f/xc1/xfa <CJK>
-+<U6612> /x8f/xc1/xfb <CJK>
-+<U6615> /x8f/xc1/xfc <CJK>
-+<U6616> /x8f/xc1/xfd <CJK>
-+<U661D> /x8f/xc1/xfe <CJK>
-+<U661E> /x8f/xc2/xa1 <CJK>
-+<U6621> /x8f/xc2/xa2 <CJK>
-+<U6622> /x8f/xc2/xa3 <CJK>
-+<U6623> /x8f/xc2/xa4 <CJK>
-+<U6624> /x8f/xc2/xa5 <CJK>
-+<U6626> /x8f/xc2/xa6 <CJK>
-+<U6629> /x8f/xc2/xa7 <CJK>
-+<U662A> /x8f/xc2/xa8 <CJK>
-+<U662B> /x8f/xc2/xa9 <CJK>
-+<U662C> /x8f/xc2/xaa <CJK>
-+<U662E> /x8f/xc2/xab <CJK>
-+<U6630> /x8f/xc2/xac <CJK>
-+<U6631> /x8f/xc2/xad <CJK>
-+<U6633> /x8f/xc2/xae <CJK>
-+<U6639> /x8f/xc2/xaf <CJK>
-+<U6637> /x8f/xc2/xb0 <CJK>
-+<U6640> /x8f/xc2/xb1 <CJK>
-+<U6645> /x8f/xc2/xb2 <CJK>
-+<U6646> /x8f/xc2/xb3 <CJK>
-+<U664A> /x8f/xc2/xb4 <CJK>
-+<U664C> /x8f/xc2/xb5 <CJK>
-+<U6651> /x8f/xc2/xb6 <CJK>
-+<U664E> /x8f/xc2/xb7 <CJK>
-+<U6657> /x8f/xc2/xb8 <CJK>
-+<U6658> /x8f/xc2/xb9 <CJK>
-+<U6659> /x8f/xc2/xba <CJK>
-+<U665B> /x8f/xc2/xbb <CJK>
-+<U665C> /x8f/xc2/xbc <CJK>
-+<U6660> /x8f/xc2/xbd <CJK>
-+<U6661> /x8f/xc2/xbe <CJK>
-+<U66FB> /x8f/xc2/xbf <CJK>
-+<U666A> /x8f/xc2/xc0 <CJK>
-+<U666B> /x8f/xc2/xc1 <CJK>
-+<U666C> /x8f/xc2/xc2 <CJK>
-+<U667E> /x8f/xc2/xc3 <CJK>
-+<U6673> /x8f/xc2/xc4 <CJK>
-+<U6675> /x8f/xc2/xc5 <CJK>
-+<U667F> /x8f/xc2/xc6 <CJK>
-+<U6677> /x8f/xc2/xc7 <CJK>
-+<U6678> /x8f/xc2/xc8 <CJK>
-+<U6679> /x8f/xc2/xc9 <CJK>
-+<U667B> /x8f/xc2/xca <CJK>
-+<U6680> /x8f/xc2/xcb <CJK>
-+<U667C> /x8f/xc2/xcc <CJK>
-+<U668B> /x8f/xc2/xcd <CJK>
-+<U668C> /x8f/xc2/xce <CJK>
-+<U668D> /x8f/xc2/xcf <CJK>
-+<U6690> /x8f/xc2/xd0 <CJK>
-+<U6692> /x8f/xc2/xd1 <CJK>
-+<U6699> /x8f/xc2/xd2 <CJK>
-+<U669A> /x8f/xc2/xd3 <CJK>
-+<U669B> /x8f/xc2/xd4 <CJK>
-+<U669C> /x8f/xc2/xd5 <CJK>
-+<U669F> /x8f/xc2/xd6 <CJK>
-+<U66A0> /x8f/xc2/xd7 <CJK>
-+<U66A4> /x8f/xc2/xd8 <CJK>
-+<U66AD> /x8f/xc2/xd9 <CJK>
-+<U66B1> /x8f/xc2/xda <CJK>
-+<U66B2> /x8f/xc2/xdb <CJK>
-+<U66B5> /x8f/xc2/xdc <CJK>
-+<U66BB> /x8f/xc2/xdd <CJK>
-+<U66BF> /x8f/xc2/xde <CJK>
-+<U66C0> /x8f/xc2/xdf <CJK>
-+<U66C2> /x8f/xc2/xe0 <CJK>
-+<U66C3> /x8f/xc2/xe1 <CJK>
-+<U66C8> /x8f/xc2/xe2 <CJK>
-+<U66CC> /x8f/xc2/xe3 <CJK>
-+<U66CE> /x8f/xc2/xe4 <CJK>
-+<U66CF> /x8f/xc2/xe5 <CJK>
-+<U66D4> /x8f/xc2/xe6 <CJK>
-+<U66DB> /x8f/xc2/xe7 <CJK>
-+<U66DF> /x8f/xc2/xe8 <CJK>
-+<U66E8> /x8f/xc2/xe9 <CJK>
-+<U66EB> /x8f/xc2/xea <CJK>
-+<U66EC> /x8f/xc2/xeb <CJK>
-+<U66EE> /x8f/xc2/xec <CJK>
-+<U66FA> /x8f/xc2/xed <CJK>
-+<U6705> /x8f/xc2/xee <CJK>
-+<U6707> /x8f/xc2/xef <CJK>
-+<U670E> /x8f/xc2/xf0 <CJK>
-+<U6713> /x8f/xc2/xf1 <CJK>
-+<U6719> /x8f/xc2/xf2 <CJK>
-+<U671C> /x8f/xc2/xf3 <CJK>
-+<U6720> /x8f/xc2/xf4 <CJK>
-+<U6722> /x8f/xc2/xf5 <CJK>
-+<U6733> /x8f/xc2/xf6 <CJK>
-+<U673E> /x8f/xc2/xf7 <CJK>
-+<U6745> /x8f/xc2/xf8 <CJK>
-+<U6747> /x8f/xc2/xf9 <CJK>
-+<U6748> /x8f/xc2/xfa <CJK>
-+<U674C> /x8f/xc2/xfb <CJK>
-+<U6754> /x8f/xc2/xfc <CJK>
-+<U6755> /x8f/xc2/xfd <CJK>
-+<U675D> /x8f/xc2/xfe <CJK>
-+<U6766> /x8f/xc3/xa1 <CJK>
-+<U676C> /x8f/xc3/xa2 <CJK>
-+<U676E> /x8f/xc3/xa3 <CJK>
-+<U6774> /x8f/xc3/xa4 <CJK>
-+<U6776> /x8f/xc3/xa5 <CJK>
-+<U677B> /x8f/xc3/xa6 <CJK>
-+<U6781> /x8f/xc3/xa7 <CJK>
-+<U6784> /x8f/xc3/xa8 <CJK>
-+<U678E> /x8f/xc3/xa9 <CJK>
-+<U678F> /x8f/xc3/xaa <CJK>
-+<U6791> /x8f/xc3/xab <CJK>
-+<U6793> /x8f/xc3/xac <CJK>
-+<U6796> /x8f/xc3/xad <CJK>
-+<U6798> /x8f/xc3/xae <CJK>
-+<U6799> /x8f/xc3/xaf <CJK>
-+<U679B> /x8f/xc3/xb0 <CJK>
-+<U67B0> /x8f/xc3/xb1 <CJK>
-+<U67B1> /x8f/xc3/xb2 <CJK>
-+<U67B2> /x8f/xc3/xb3 <CJK>
-+<U67B5> /x8f/xc3/xb4 <CJK>
-+<U67BB> /x8f/xc3/xb5 <CJK>
-+<U67BC> /x8f/xc3/xb6 <CJK>
-+<U67BD> /x8f/xc3/xb7 <CJK>
-+<U67F9> /x8f/xc3/xb8 <CJK>
-+<U67C0> /x8f/xc3/xb9 <CJK>
-+<U67C2> /x8f/xc3/xba <CJK>
-+<U67C3> /x8f/xc3/xbb <CJK>
-+<U67C5> /x8f/xc3/xbc <CJK>
-+<U67C8> /x8f/xc3/xbd <CJK>
-+<U67C9> /x8f/xc3/xbe <CJK>
-+<U67D2> /x8f/xc3/xbf <CJK>
-+<U67D7> /x8f/xc3/xc0 <CJK>
-+<U67D9> /x8f/xc3/xc1 <CJK>
-+<U67DC> /x8f/xc3/xc2 <CJK>
-+<U67E1> /x8f/xc3/xc3 <CJK>
-+<U67E6> /x8f/xc3/xc4 <CJK>
-+<U67F0> /x8f/xc3/xc5 <CJK>
-+<U67F2> /x8f/xc3/xc6 <CJK>
-+<U67F6> /x8f/xc3/xc7 <CJK>
-+<U67F7> /x8f/xc3/xc8 <CJK>
-+<U6852> /x8f/xc3/xc9 <CJK>
-+<U6814> /x8f/xc3/xca <CJK>
-+<U6819> /x8f/xc3/xcb <CJK>
-+<U681D> /x8f/xc3/xcc <CJK>
-+<U681F> /x8f/xc3/xcd <CJK>
-+<U6828> /x8f/xc3/xce <CJK>
-+<U6827> /x8f/xc3/xcf <CJK>
-+<U682C> /x8f/xc3/xd0 <CJK>
-+<U682D> /x8f/xc3/xd1 <CJK>
-+<U682F> /x8f/xc3/xd2 <CJK>
-+<U6830> /x8f/xc3/xd3 <CJK>
-+<U6831> /x8f/xc3/xd4 <CJK>
-+<U6833> /x8f/xc3/xd5 <CJK>
-+<U683B> /x8f/xc3/xd6 <CJK>
-+<U683F> /x8f/xc3/xd7 <CJK>
-+<U6844> /x8f/xc3/xd8 <CJK>
-+<U6845> /x8f/xc3/xd9 <CJK>
-+<U684A> /x8f/xc3/xda <CJK>
-+<U684C> /x8f/xc3/xdb <CJK>
-+<U6855> /x8f/xc3/xdc <CJK>
-+<U6857> /x8f/xc3/xdd <CJK>
-+<U6858> /x8f/xc3/xde <CJK>
-+<U685B> /x8f/xc3/xdf <CJK>
-+<U686B> /x8f/xc3/xe0 <CJK>
-+<U686E> /x8f/xc3/xe1 <CJK>
-+<U686F> /x8f/xc3/xe2 <CJK>
-+<U6870> /x8f/xc3/xe3 <CJK>
-+<U6871> /x8f/xc3/xe4 <CJK>
-+<U6872> /x8f/xc3/xe5 <CJK>
-+<U6875> /x8f/xc3/xe6 <CJK>
-+<U6879> /x8f/xc3/xe7 <CJK>
-+<U687A> /x8f/xc3/xe8 <CJK>
-+<U687B> /x8f/xc3/xe9 <CJK>
-+<U687C> /x8f/xc3/xea <CJK>
-+<U6882> /x8f/xc3/xeb <CJK>
-+<U6884> /x8f/xc3/xec <CJK>
-+<U6886> /x8f/xc3/xed <CJK>
-+<U6888> /x8f/xc3/xee <CJK>
-+<U6896> /x8f/xc3/xef <CJK>
-+<U6898> /x8f/xc3/xf0 <CJK>
-+<U689A> /x8f/xc3/xf1 <CJK>
-+<U689C> /x8f/xc3/xf2 <CJK>
-+<U68A1> /x8f/xc3/xf3 <CJK>
-+<U68A3> /x8f/xc3/xf4 <CJK>
-+<U68A5> /x8f/xc3/xf5 <CJK>
-+<U68A9> /x8f/xc3/xf6 <CJK>
-+<U68AA> /x8f/xc3/xf7 <CJK>
-+<U68AE> /x8f/xc3/xf8 <CJK>
-+<U68B2> /x8f/xc3/xf9 <CJK>
-+<U68BB> /x8f/xc3/xfa <CJK>
-+<U68C5> /x8f/xc3/xfb <CJK>
-+<U68C8> /x8f/xc3/xfc <CJK>
-+<U68CC> /x8f/xc3/xfd <CJK>
-+<U68CF> /x8f/xc3/xfe <CJK>
-+<U68D0> /x8f/xc4/xa1 <CJK>
-+<U68D1> /x8f/xc4/xa2 <CJK>
-+<U68D3> /x8f/xc4/xa3 <CJK>
-+<U68D6> /x8f/xc4/xa4 <CJK>
-+<U68D9> /x8f/xc4/xa5 <CJK>
-+<U68DC> /x8f/xc4/xa6 <CJK>
-+<U68DD> /x8f/xc4/xa7 <CJK>
-+<U68E5> /x8f/xc4/xa8 <CJK>
-+<U68E8> /x8f/xc4/xa9 <CJK>
-+<U68EA> /x8f/xc4/xaa <CJK>
-+<U68EB> /x8f/xc4/xab <CJK>
-+<U68EC> /x8f/xc4/xac <CJK>
-+<U68ED> /x8f/xc4/xad <CJK>
-+<U68F0> /x8f/xc4/xae <CJK>
-+<U68F1> /x8f/xc4/xaf <CJK>
-+<U68F5> /x8f/xc4/xb0 <CJK>
-+<U68F6> /x8f/xc4/xb1 <CJK>
-+<U68FB> /x8f/xc4/xb2 <CJK>
-+<U68FC> /x8f/xc4/xb3 <CJK>
-+<U68FD> /x8f/xc4/xb4 <CJK>
-+<U6906> /x8f/xc4/xb5 <CJK>
-+<U6909> /x8f/xc4/xb6 <CJK>
-+<U690A> /x8f/xc4/xb7 <CJK>
-+<U6910> /x8f/xc4/xb8 <CJK>
-+<U6911> /x8f/xc4/xb9 <CJK>
-+<U6913> /x8f/xc4/xba <CJK>
-+<U6916> /x8f/xc4/xbb <CJK>
-+<U6917> /x8f/xc4/xbc <CJK>
-+<U6931> /x8f/xc4/xbd <CJK>
-+<U6933> /x8f/xc4/xbe <CJK>
-+<U6935> /x8f/xc4/xbf <CJK>
-+<U6938> /x8f/xc4/xc0 <CJK>
-+<U693B> /x8f/xc4/xc1 <CJK>
-+<U6942> /x8f/xc4/xc2 <CJK>
-+<U6945> /x8f/xc4/xc3 <CJK>
-+<U6949> /x8f/xc4/xc4 <CJK>
-+<U694E> /x8f/xc4/xc5 <CJK>
-+<U6957> /x8f/xc4/xc6 <CJK>
-+<U695B> /x8f/xc4/xc7 <CJK>
-+<U6963> /x8f/xc4/xc8 <CJK>
-+<U6964> /x8f/xc4/xc9 <CJK>
-+<U6965> /x8f/xc4/xca <CJK>
-+<U6966> /x8f/xc4/xcb <CJK>
-+<U6968> /x8f/xc4/xcc <CJK>
-+<U6969> /x8f/xc4/xcd <CJK>
-+<U696C> /x8f/xc4/xce <CJK>
-+<U6970> /x8f/xc4/xcf <CJK>
-+<U6971> /x8f/xc4/xd0 <CJK>
-+<U6972> /x8f/xc4/xd1 <CJK>
-+<U697A> /x8f/xc4/xd2 <CJK>
-+<U697B> /x8f/xc4/xd3 <CJK>
-+<U697F> /x8f/xc4/xd4 <CJK>
-+<U6980> /x8f/xc4/xd5 <CJK>
-+<U698D> /x8f/xc4/xd6 <CJK>
-+<U6992> /x8f/xc4/xd7 <CJK>
-+<U6996> /x8f/xc4/xd8 <CJK>
-+<U6998> /x8f/xc4/xd9 <CJK>
-+<U69A1> /x8f/xc4/xda <CJK>
-+<U69A5> /x8f/xc4/xdb <CJK>
-+<U69A6> /x8f/xc4/xdc <CJK>
-+<U69A8> /x8f/xc4/xdd <CJK>
-+<U69AB> /x8f/xc4/xde <CJK>
-+<U69AD> /x8f/xc4/xdf <CJK>
-+<U69AF> /x8f/xc4/xe0 <CJK>
-+<U69B7> /x8f/xc4/xe1 <CJK>
-+<U69B8> /x8f/xc4/xe2 <CJK>
-+<U69BA> /x8f/xc4/xe3 <CJK>
-+<U69BC> /x8f/xc4/xe4 <CJK>
-+<U69C5> /x8f/xc4/xe5 <CJK>
-+<U69C8> /x8f/xc4/xe6 <CJK>
-+<U69D1> /x8f/xc4/xe7 <CJK>
-+<U69D6> /x8f/xc4/xe8 <CJK>
-+<U69D7> /x8f/xc4/xe9 <CJK>
-+<U69E2> /x8f/xc4/xea <CJK>
-+<U69E5> /x8f/xc4/xeb <CJK>
-+<U69EE> /x8f/xc4/xec <CJK>
-+<U69EF> /x8f/xc4/xed <CJK>
-+<U69F1> /x8f/xc4/xee <CJK>
-+<U69F3> /x8f/xc4/xef <CJK>
-+<U69F5> /x8f/xc4/xf0 <CJK>
-+<U69FE> /x8f/xc4/xf1 <CJK>
-+<U6A00> /x8f/xc4/xf2 <CJK>
-+<U6A01> /x8f/xc4/xf3 <CJK>
-+<U6A03> /x8f/xc4/xf4 <CJK>
-+<U6A0F> /x8f/xc4/xf5 <CJK>
-+<U6A11> /x8f/xc4/xf6 <CJK>
-+<U6A15> /x8f/xc4/xf7 <CJK>
-+<U6A1A> /x8f/xc4/xf8 <CJK>
-+<U6A1D> /x8f/xc4/xf9 <CJK>
-+<U6A20> /x8f/xc4/xfa <CJK>
-+<U6A24> /x8f/xc4/xfb <CJK>
-+<U6A28> /x8f/xc4/xfc <CJK>
-+<U6A30> /x8f/xc4/xfd <CJK>
-+<U6A32> /x8f/xc4/xfe <CJK>
-+<U6A34> /x8f/xc5/xa1 <CJK>
-+<U6A37> /x8f/xc5/xa2 <CJK>
-+<U6A3B> /x8f/xc5/xa3 <CJK>
-+<U6A3E> /x8f/xc5/xa4 <CJK>
-+<U6A3F> /x8f/xc5/xa5 <CJK>
-+<U6A45> /x8f/xc5/xa6 <CJK>
-+<U6A46> /x8f/xc5/xa7 <CJK>
-+<U6A49> /x8f/xc5/xa8 <CJK>
-+<U6A4A> /x8f/xc5/xa9 <CJK>
-+<U6A4E> /x8f/xc5/xaa <CJK>
-+<U6A50> /x8f/xc5/xab <CJK>
-+<U6A51> /x8f/xc5/xac <CJK>
-+<U6A52> /x8f/xc5/xad <CJK>
-+<U6A55> /x8f/xc5/xae <CJK>
-+<U6A56> /x8f/xc5/xaf <CJK>
-+<U6A5B> /x8f/xc5/xb0 <CJK>
-+<U6A64> /x8f/xc5/xb1 <CJK>
-+<U6A67> /x8f/xc5/xb2 <CJK>
-+<U6A6A> /x8f/xc5/xb3 <CJK>
-+<U6A71> /x8f/xc5/xb4 <CJK>
-+<U6A73> /x8f/xc5/xb5 <CJK>
-+<U6A7E> /x8f/xc5/xb6 <CJK>
-+<U6A81> /x8f/xc5/xb7 <CJK>
-+<U6A83> /x8f/xc5/xb8 <CJK>
-+<U6A86> /x8f/xc5/xb9 <CJK>
-+<U6A87> /x8f/xc5/xba <CJK>
-+<U6A89> /x8f/xc5/xbb <CJK>
-+<U6A8B> /x8f/xc5/xbc <CJK>
-+<U6A91> /x8f/xc5/xbd <CJK>
-+<U6A9B> /x8f/xc5/xbe <CJK>
-+<U6A9D> /x8f/xc5/xbf <CJK>
-+<U6A9E> /x8f/xc5/xc0 <CJK>
-+<U6A9F> /x8f/xc5/xc1 <CJK>
-+<U6AA5> /x8f/xc5/xc2 <CJK>
-+<U6AAB> /x8f/xc5/xc3 <CJK>
-+<U6AAF> /x8f/xc5/xc4 <CJK>
-+<U6AB0> /x8f/xc5/xc5 <CJK>
-+<U6AB1> /x8f/xc5/xc6 <CJK>
-+<U6AB4> /x8f/xc5/xc7 <CJK>
-+<U6ABD> /x8f/xc5/xc8 <CJK>
-+<U6ABE> /x8f/xc5/xc9 <CJK>
-+<U6ABF> /x8f/xc5/xca <CJK>
-+<U6AC6> /x8f/xc5/xcb <CJK>
-+<U6AC9> /x8f/xc5/xcc <CJK>
-+<U6AC8> /x8f/xc5/xcd <CJK>
-+<U6ACC> /x8f/xc5/xce <CJK>
-+<U6AD0> /x8f/xc5/xcf <CJK>
-+<U6AD4> /x8f/xc5/xd0 <CJK>
-+<U6AD5> /x8f/xc5/xd1 <CJK>
-+<U6AD6> /x8f/xc5/xd2 <CJK>
-+<U6ADC> /x8f/xc5/xd3 <CJK>
-+<U6ADD> /x8f/xc5/xd4 <CJK>
-+<U6AE4> /x8f/xc5/xd5 <CJK>
-+<U6AE7> /x8f/xc5/xd6 <CJK>
-+<U6AEC> /x8f/xc5/xd7 <CJK>
-+<U6AF0> /x8f/xc5/xd8 <CJK>
-+<U6AF1> /x8f/xc5/xd9 <CJK>
-+<U6AF2> /x8f/xc5/xda <CJK>
-+<U6AFC> /x8f/xc5/xdb <CJK>
-+<U6AFD> /x8f/xc5/xdc <CJK>
-+<U6B02> /x8f/xc5/xdd <CJK>
-+<U6B03> /x8f/xc5/xde <CJK>
-+<U6B06> /x8f/xc5/xdf <CJK>
-+<U6B07> /x8f/xc5/xe0 <CJK>
-+<U6B09> /x8f/xc5/xe1 <CJK>
-+<U6B0F> /x8f/xc5/xe2 <CJK>
-+<U6B10> /x8f/xc5/xe3 <CJK>
-+<U6B11> /x8f/xc5/xe4 <CJK>
-+<U6B17> /x8f/xc5/xe5 <CJK>
-+<U6B1B> /x8f/xc5/xe6 <CJK>
-+<U6B1E> /x8f/xc5/xe7 <CJK>
-+<U6B24> /x8f/xc5/xe8 <CJK>
-+<U6B28> /x8f/xc5/xe9 <CJK>
-+<U6B2B> /x8f/xc5/xea <CJK>
-+<U6B2C> /x8f/xc5/xeb <CJK>
-+<U6B2F> /x8f/xc5/xec <CJK>
-+<U6B35> /x8f/xc5/xed <CJK>
-+<U6B36> /x8f/xc5/xee <CJK>
-+<U6B3B> /x8f/xc5/xef <CJK>
-+<U6B3F> /x8f/xc5/xf0 <CJK>
-+<U6B46> /x8f/xc5/xf1 <CJK>
-+<U6B4A> /x8f/xc5/xf2 <CJK>
-+<U6B4D> /x8f/xc5/xf3 <CJK>
-+<U6B52> /x8f/xc5/xf4 <CJK>
-+<U6B56> /x8f/xc5/xf5 <CJK>
-+<U6B58> /x8f/xc5/xf6 <CJK>
-+<U6B5D> /x8f/xc5/xf7 <CJK>
-+<U6B60> /x8f/xc5/xf8 <CJK>
-+<U6B67> /x8f/xc5/xf9 <CJK>
-+<U6B6B> /x8f/xc5/xfa <CJK>
-+<U6B6E> /x8f/xc5/xfb <CJK>
-+<U6B70> /x8f/xc5/xfc <CJK>
-+<U6B75> /x8f/xc5/xfd <CJK>
-+<U6B7D> /x8f/xc5/xfe <CJK>
-+<U6B7E> /x8f/xc6/xa1 <CJK>
-+<U6B82> /x8f/xc6/xa2 <CJK>
-+<U6B85> /x8f/xc6/xa3 <CJK>
-+<U6B97> /x8f/xc6/xa4 <CJK>
-+<U6B9B> /x8f/xc6/xa5 <CJK>
-+<U6B9F> /x8f/xc6/xa6 <CJK>
-+<U6BA0> /x8f/xc6/xa7 <CJK>
-+<U6BA2> /x8f/xc6/xa8 <CJK>
-+<U6BA3> /x8f/xc6/xa9 <CJK>
-+<U6BA8> /x8f/xc6/xaa <CJK>
-+<U6BA9> /x8f/xc6/xab <CJK>
-+<U6BAC> /x8f/xc6/xac <CJK>
-+<U6BAD> /x8f/xc6/xad <CJK>
-+<U6BAE> /x8f/xc6/xae <CJK>
-+<U6BB0> /x8f/xc6/xaf <CJK>
-+<U6BB8> /x8f/xc6/xb0 <CJK>
-+<U6BB9> /x8f/xc6/xb1 <CJK>
-+<U6BBD> /x8f/xc6/xb2 <CJK>
-+<U6BBE> /x8f/xc6/xb3 <CJK>
-+<U6BC3> /x8f/xc6/xb4 <CJK>
-+<U6BC4> /x8f/xc6/xb5 <CJK>
-+<U6BC9> /x8f/xc6/xb6 <CJK>
-+<U6BCC> /x8f/xc6/xb7 <CJK>
-+<U6BD6> /x8f/xc6/xb8 <CJK>
-+<U6BDA> /x8f/xc6/xb9 <CJK>
-+<U6BE1> /x8f/xc6/xba <CJK>
-+<U6BE3> /x8f/xc6/xbb <CJK>
-+<U6BE6> /x8f/xc6/xbc <CJK>
-+<U6BE7> /x8f/xc6/xbd <CJK>
-+<U6BEE> /x8f/xc6/xbe <CJK>
-+<U6BF1> /x8f/xc6/xbf <CJK>
-+<U6BF7> /x8f/xc6/xc0 <CJK>
-+<U6BF9> /x8f/xc6/xc1 <CJK>
-+<U6BFF> /x8f/xc6/xc2 <CJK>
-+<U6C02> /x8f/xc6/xc3 <CJK>
-+<U6C04> /x8f/xc6/xc4 <CJK>
-+<U6C05> /x8f/xc6/xc5 <CJK>
-+<U6C09> /x8f/xc6/xc6 <CJK>
-+<U6C0D> /x8f/xc6/xc7 <CJK>
-+<U6C0E> /x8f/xc6/xc8 <CJK>
-+<U6C10> /x8f/xc6/xc9 <CJK>
-+<U6C12> /x8f/xc6/xca <CJK>
-+<U6C19> /x8f/xc6/xcb <CJK>
-+<U6C1F> /x8f/xc6/xcc <CJK>
-+<U6C26> /x8f/xc6/xcd <CJK>
-+<U6C27> /x8f/xc6/xce <CJK>
-+<U6C28> /x8f/xc6/xcf <CJK>
-+<U6C2C> /x8f/xc6/xd0 <CJK>
-+<U6C2E> /x8f/xc6/xd1 <CJK>
-+<U6C33> /x8f/xc6/xd2 <CJK>
-+<U6C35> /x8f/xc6/xd3 <CJK>
-+<U6C36> /x8f/xc6/xd4 <CJK>
-+<U6C3A> /x8f/xc6/xd5 <CJK>
-+<U6C3B> /x8f/xc6/xd6 <CJK>
-+<U6C3F> /x8f/xc6/xd7 <CJK>
-+<U6C4A> /x8f/xc6/xd8 <CJK>
-+<U6C4B> /x8f/xc6/xd9 <CJK>
-+<U6C4D> /x8f/xc6/xda <CJK>
-+<U6C4F> /x8f/xc6/xdb <CJK>
-+<U6C52> /x8f/xc6/xdc <CJK>
-+<U6C54> /x8f/xc6/xdd <CJK>
-+<U6C59> /x8f/xc6/xde <CJK>
-+<U6C5B> /x8f/xc6/xdf <CJK>
-+<U6C5C> /x8f/xc6/xe0 <CJK>
-+<U6C6B> /x8f/xc6/xe1 <CJK>
-+<U6C6D> /x8f/xc6/xe2 <CJK>
-+<U6C6F> /x8f/xc6/xe3 <CJK>
-+<U6C74> /x8f/xc6/xe4 <CJK>
-+<U6C76> /x8f/xc6/xe5 <CJK>
-+<U6C78> /x8f/xc6/xe6 <CJK>
-+<U6C79> /x8f/xc6/xe7 <CJK>
-+<U6C7B> /x8f/xc6/xe8 <CJK>
-+<U6C85> /x8f/xc6/xe9 <CJK>
-+<U6C86> /x8f/xc6/xea <CJK>
-+<U6C87> /x8f/xc6/xeb <CJK>
-+<U6C89> /x8f/xc6/xec <CJK>
-+<U6C94> /x8f/xc6/xed <CJK>
-+<U6C95> /x8f/xc6/xee <CJK>
-+<U6C97> /x8f/xc6/xef <CJK>
-+<U6C98> /x8f/xc6/xf0 <CJK>
-+<U6C9C> /x8f/xc6/xf1 <CJK>
-+<U6C9F> /x8f/xc6/xf2 <CJK>
-+<U6CB0> /x8f/xc6/xf3 <CJK>
-+<U6CB2> /x8f/xc6/xf4 <CJK>
-+<U6CB4> /x8f/xc6/xf5 <CJK>
-+<U6CC2> /x8f/xc6/xf6 <CJK>
-+<U6CC6> /x8f/xc6/xf7 <CJK>
-+<U6CCD> /x8f/xc6/xf8 <CJK>
-+<U6CCF> /x8f/xc6/xf9 <CJK>
-+<U6CD0> /x8f/xc6/xfa <CJK>
-+<U6CD1> /x8f/xc6/xfb <CJK>
-+<U6CD2> /x8f/xc6/xfc <CJK>
-+<U6CD4> /x8f/xc6/xfd <CJK>
-+<U6CD6> /x8f/xc6/xfe <CJK>
-+<U6CDA> /x8f/xc7/xa1 <CJK>
-+<U6CDC> /x8f/xc7/xa2 <CJK>
-+<U6CE0> /x8f/xc7/xa3 <CJK>
-+<U6CE7> /x8f/xc7/xa4 <CJK>
-+<U6CE9> /x8f/xc7/xa5 <CJK>
-+<U6CEB> /x8f/xc7/xa6 <CJK>
-+<U6CEC> /x8f/xc7/xa7 <CJK>
-+<U6CEE> /x8f/xc7/xa8 <CJK>
-+<U6CF2> /x8f/xc7/xa9 <CJK>
-+<U6CF4> /x8f/xc7/xaa <CJK>
-+<U6D04> /x8f/xc7/xab <CJK>
-+<U6D07> /x8f/xc7/xac <CJK>
-+<U6D0A> /x8f/xc7/xad <CJK>
-+<U6D0E> /x8f/xc7/xae <CJK>
-+<U6D0F> /x8f/xc7/xaf <CJK>
-+<U6D11> /x8f/xc7/xb0 <CJK>
-+<U6D13> /x8f/xc7/xb1 <CJK>
-+<U6D1A> /x8f/xc7/xb2 <CJK>
-+<U6D26> /x8f/xc7/xb3 <CJK>
-+<U6D27> /x8f/xc7/xb4 <CJK>
-+<U6D28> /x8f/xc7/xb5 <CJK>
-+<U6C67> /x8f/xc7/xb6 <CJK>
-+<U6D2E> /x8f/xc7/xb7 <CJK>
-+<U6D2F> /x8f/xc7/xb8 <CJK>
-+<U6D31> /x8f/xc7/xb9 <CJK>
-+<U6D39> /x8f/xc7/xba <CJK>
-+<U6D3C> /x8f/xc7/xbb <CJK>
-+<U6D3F> /x8f/xc7/xbc <CJK>
-+<U6D57> /x8f/xc7/xbd <CJK>
-+<U6D5E> /x8f/xc7/xbe <CJK>
-+<U6D5F> /x8f/xc7/xbf <CJK>
-+<U6D61> /x8f/xc7/xc0 <CJK>
-+<U6D65> /x8f/xc7/xc1 <CJK>
-+<U6D67> /x8f/xc7/xc2 <CJK>
-+<U6D6F> /x8f/xc7/xc3 <CJK>
-+<U6D70> /x8f/xc7/xc4 <CJK>
-+<U6D7C> /x8f/xc7/xc5 <CJK>
-+<U6D82> /x8f/xc7/xc6 <CJK>
-+<U6D87> /x8f/xc7/xc7 <CJK>
-+<U6D91> /x8f/xc7/xc8 <CJK>
-+<U6D92> /x8f/xc7/xc9 <CJK>
-+<U6D94> /x8f/xc7/xca <CJK>
-+<U6D96> /x8f/xc7/xcb <CJK>
-+<U6D97> /x8f/xc7/xcc <CJK>
-+<U6D98> /x8f/xc7/xcd <CJK>
-+<U6DAA> /x8f/xc7/xce <CJK>
-+<U6DAC> /x8f/xc7/xcf <CJK>
-+<U6DB4> /x8f/xc7/xd0 <CJK>
-+<U6DB7> /x8f/xc7/xd1 <CJK>
-+<U6DB9> /x8f/xc7/xd2 <CJK>
-+<U6DBD> /x8f/xc7/xd3 <CJK>
-+<U6DBF> /x8f/xc7/xd4 <CJK>
-+<U6DC4> /x8f/xc7/xd5 <CJK>
-+<U6DC8> /x8f/xc7/xd6 <CJK>
-+<U6DCA> /x8f/xc7/xd7 <CJK>
-+<U6DCE> /x8f/xc7/xd8 <CJK>
-+<U6DCF> /x8f/xc7/xd9 <CJK>
-+<U6DD6> /x8f/xc7/xda <CJK>
-+<U6DDB> /x8f/xc7/xdb <CJK>
-+<U6DDD> /x8f/xc7/xdc <CJK>
-+<U6DDF> /x8f/xc7/xdd <CJK>
-+<U6DE0> /x8f/xc7/xde <CJK>
-+<U6DE2> /x8f/xc7/xdf <CJK>
-+<U6DE5> /x8f/xc7/xe0 <CJK>
-+<U6DE9> /x8f/xc7/xe1 <CJK>
-+<U6DEF> /x8f/xc7/xe2 <CJK>
-+<U6DF0> /x8f/xc7/xe3 <CJK>
-+<U6DF4> /x8f/xc7/xe4 <CJK>
-+<U6DF6> /x8f/xc7/xe5 <CJK>
-+<U6DFC> /x8f/xc7/xe6 <CJK>
-+<U6E00> /x8f/xc7/xe7 <CJK>
-+<U6E04> /x8f/xc7/xe8 <CJK>
-+<U6E1E> /x8f/xc7/xe9 <CJK>
-+<U6E22> /x8f/xc7/xea <CJK>
-+<U6E27> /x8f/xc7/xeb <CJK>
-+<U6E32> /x8f/xc7/xec <CJK>
-+<U6E36> /x8f/xc7/xed <CJK>
-+<U6E39> /x8f/xc7/xee <CJK>
-+<U6E3B> /x8f/xc7/xef <CJK>
-+<U6E3C> /x8f/xc7/xf0 <CJK>
-+<U6E44> /x8f/xc7/xf1 <CJK>
-+<U6E45> /x8f/xc7/xf2 <CJK>
-+<U6E48> /x8f/xc7/xf3 <CJK>
-+<U6E49> /x8f/xc7/xf4 <CJK>
-+<U6E4B> /x8f/xc7/xf5 <CJK>
-+<U6E4F> /x8f/xc7/xf6 <CJK>
-+<U6E51> /x8f/xc7/xf7 <CJK>
-+<U6E52> /x8f/xc7/xf8 <CJK>
-+<U6E53> /x8f/xc7/xf9 <CJK>
-+<U6E54> /x8f/xc7/xfa <CJK>
-+<U6E57> /x8f/xc7/xfb <CJK>
-+<U6E5C> /x8f/xc7/xfc <CJK>
-+<U6E5D> /x8f/xc7/xfd <CJK>
-+<U6E5E> /x8f/xc7/xfe <CJK>
-+<U6E62> /x8f/xc8/xa1 <CJK>
-+<U6E63> /x8f/xc8/xa2 <CJK>
-+<U6E68> /x8f/xc8/xa3 <CJK>
-+<U6E73> /x8f/xc8/xa4 <CJK>
-+<U6E7B> /x8f/xc8/xa5 <CJK>
-+<U6E7D> /x8f/xc8/xa6 <CJK>
-+<U6E8D> /x8f/xc8/xa7 <CJK>
-+<U6E93> /x8f/xc8/xa8 <CJK>
-+<U6E99> /x8f/xc8/xa9 <CJK>
-+<U6EA0> /x8f/xc8/xaa <CJK>
-+<U6EA7> /x8f/xc8/xab <CJK>
-+<U6EAD> /x8f/xc8/xac <CJK>
-+<U6EAE> /x8f/xc8/xad <CJK>
-+<U6EB1> /x8f/xc8/xae <CJK>
-+<U6EB3> /x8f/xc8/xaf <CJK>
-+<U6EBB> /x8f/xc8/xb0 <CJK>
-+<U6EBF> /x8f/xc8/xb1 <CJK>
-+<U6EC0> /x8f/xc8/xb2 <CJK>
-+<U6EC1> /x8f/xc8/xb3 <CJK>
-+<U6EC3> /x8f/xc8/xb4 <CJK>
-+<U6EC7> /x8f/xc8/xb5 <CJK>
-+<U6EC8> /x8f/xc8/xb6 <CJK>
-+<U6ECA> /x8f/xc8/xb7 <CJK>
-+<U6ECD> /x8f/xc8/xb8 <CJK>
-+<U6ECE> /x8f/xc8/xb9 <CJK>
-+<U6ECF> /x8f/xc8/xba <CJK>
-+<U6EEB> /x8f/xc8/xbb <CJK>
-+<U6EED> /x8f/xc8/xbc <CJK>
-+<U6EEE> /x8f/xc8/xbd <CJK>
-+<U6EF9> /x8f/xc8/xbe <CJK>
-+<U6EFB> /x8f/xc8/xbf <CJK>
-+<U6EFD> /x8f/xc8/xc0 <CJK>
-+<U6F04> /x8f/xc8/xc1 <CJK>
-+<U6F08> /x8f/xc8/xc2 <CJK>
-+<U6F0A> /x8f/xc8/xc3 <CJK>
-+<U6F0C> /x8f/xc8/xc4 <CJK>
-+<U6F0D> /x8f/xc8/xc5 <CJK>
-+<U6F16> /x8f/xc8/xc6 <CJK>
-+<U6F18> /x8f/xc8/xc7 <CJK>
-+<U6F1A> /x8f/xc8/xc8 <CJK>
-+<U6F1B> /x8f/xc8/xc9 <CJK>
-+<U6F26> /x8f/xc8/xca <CJK>
-+<U6F29> /x8f/xc8/xcb <CJK>
-+<U6F2A> /x8f/xc8/xcc <CJK>
-+<U6F2F> /x8f/xc8/xcd <CJK>
-+<U6F30> /x8f/xc8/xce <CJK>
-+<U6F33> /x8f/xc8/xcf <CJK>
-+<U6F36> /x8f/xc8/xd0 <CJK>
-+<U6F3B> /x8f/xc8/xd1 <CJK>
-+<U6F3C> /x8f/xc8/xd2 <CJK>
-+<U6F2D> /x8f/xc8/xd3 <CJK>
-+<U6F4F> /x8f/xc8/xd4 <CJK>
-+<U6F51> /x8f/xc8/xd5 <CJK>
-+<U6F52> /x8f/xc8/xd6 <CJK>
-+<U6F53> /x8f/xc8/xd7 <CJK>
-+<U6F57> /x8f/xc8/xd8 <CJK>
-+<U6F59> /x8f/xc8/xd9 <CJK>
-+<U6F5A> /x8f/xc8/xda <CJK>
-+<U6F5D> /x8f/xc8/xdb <CJK>
-+<U6F5E> /x8f/xc8/xdc <CJK>
-+<U6F61> /x8f/xc8/xdd <CJK>
-+<U6F62> /x8f/xc8/xde <CJK>
-+<U6F68> /x8f/xc8/xdf <CJK>
-+<U6F6C> /x8f/xc8/xe0 <CJK>
-+<U6F7D> /x8f/xc8/xe1 <CJK>
-+<U6F7E> /x8f/xc8/xe2 <CJK>
-+<U6F83> /x8f/xc8/xe3 <CJK>
-+<U6F87> /x8f/xc8/xe4 <CJK>
-+<U6F88> /x8f/xc8/xe5 <CJK>
-+<U6F8B> /x8f/xc8/xe6 <CJK>
-+<U6F8C> /x8f/xc8/xe7 <CJK>
-+<U6F8D> /x8f/xc8/xe8 <CJK>
-+<U6F90> /x8f/xc8/xe9 <CJK>
-+<U6F92> /x8f/xc8/xea <CJK>
-+<U6F93> /x8f/xc8/xeb <CJK>
-+<U6F94> /x8f/xc8/xec <CJK>
-+<U6F96> /x8f/xc8/xed <CJK>
-+<U6F9A> /x8f/xc8/xee <CJK>
-+<U6F9F> /x8f/xc8/xef <CJK>
-+<U6FA0> /x8f/xc8/xf0 <CJK>
-+<U6FA5> /x8f/xc8/xf1 <CJK>
-+<U6FA6> /x8f/xc8/xf2 <CJK>
-+<U6FA7> /x8f/xc8/xf3 <CJK>
-+<U6FA8> /x8f/xc8/xf4 <CJK>
-+<U6FAE> /x8f/xc8/xf5 <CJK>
-+<U6FAF> /x8f/xc8/xf6 <CJK>
-+<U6FB0> /x8f/xc8/xf7 <CJK>
-+<U6FB5> /x8f/xc8/xf8 <CJK>
-+<U6FB6> /x8f/xc8/xf9 <CJK>
-+<U6FBC> /x8f/xc8/xfa <CJK>
-+<U6FC5> /x8f/xc8/xfb <CJK>
-+<U6FC7> /x8f/xc8/xfc <CJK>
-+<U6FC8> /x8f/xc8/xfd <CJK>
-+<U6FCA> /x8f/xc8/xfe <CJK>
-+<U6FDA> /x8f/xc9/xa1 <CJK>
-+<U6FDE> /x8f/xc9/xa2 <CJK>
-+<U6FE8> /x8f/xc9/xa3 <CJK>
-+<U6FE9> /x8f/xc9/xa4 <CJK>
-+<U6FF0> /x8f/xc9/xa5 <CJK>
-+<U6FF5> /x8f/xc9/xa6 <CJK>
-+<U6FF9> /x8f/xc9/xa7 <CJK>
-+<U6FFC> /x8f/xc9/xa8 <CJK>
-+<U6FFD> /x8f/xc9/xa9 <CJK>
-+<U7000> /x8f/xc9/xaa <CJK>
-+<U7005> /x8f/xc9/xab <CJK>
-+<U7006> /x8f/xc9/xac <CJK>
-+<U7007> /x8f/xc9/xad <CJK>
-+<U700D> /x8f/xc9/xae <CJK>
-+<U7017> /x8f/xc9/xaf <CJK>
-+<U7020> /x8f/xc9/xb0 <CJK>
-+<U7023> /x8f/xc9/xb1 <CJK>
-+<U702F> /x8f/xc9/xb2 <CJK>
-+<U7034> /x8f/xc9/xb3 <CJK>
-+<U7037> /x8f/xc9/xb4 <CJK>
-+<U7039> /x8f/xc9/xb5 <CJK>
-+<U703C> /x8f/xc9/xb6 <CJK>
-+<U7043> /x8f/xc9/xb7 <CJK>
-+<U7044> /x8f/xc9/xb8 <CJK>
-+<U7048> /x8f/xc9/xb9 <CJK>
-+<U7049> /x8f/xc9/xba <CJK>
-+<U704A> /x8f/xc9/xbb <CJK>
-+<U704B> /x8f/xc9/xbc <CJK>
-+<U7054> /x8f/xc9/xbd <CJK>
-+<U7055> /x8f/xc9/xbe <CJK>
-+<U705D> /x8f/xc9/xbf <CJK>
-+<U705E> /x8f/xc9/xc0 <CJK>
-+<U704E> /x8f/xc9/xc1 <CJK>
-+<U7064> /x8f/xc9/xc2 <CJK>
-+<U7065> /x8f/xc9/xc3 <CJK>
-+<U706C> /x8f/xc9/xc4 <CJK>
-+<U706E> /x8f/xc9/xc5 <CJK>
-+<U7075> /x8f/xc9/xc6 <CJK>
-+<U7076> /x8f/xc9/xc7 <CJK>
-+<U707E> /x8f/xc9/xc8 <CJK>
-+<U7081> /x8f/xc9/xc9 <CJK>
-+<U7085> /x8f/xc9/xca <CJK>
-+<U7086> /x8f/xc9/xcb <CJK>
-+<U7094> /x8f/xc9/xcc <CJK>
-+<U7095> /x8f/xc9/xcd <CJK>
-+<U7096> /x8f/xc9/xce <CJK>
-+<U7097> /x8f/xc9/xcf <CJK>
-+<U7098> /x8f/xc9/xd0 <CJK>
-+<U709B> /x8f/xc9/xd1 <CJK>
-+<U70A4> /x8f/xc9/xd2 <CJK>
-+<U70AB> /x8f/xc9/xd3 <CJK>
-+<U70B0> /x8f/xc9/xd4 <CJK>
-+<U70B1> /x8f/xc9/xd5 <CJK>
-+<U70B4> /x8f/xc9/xd6 <CJK>
-+<U70B7> /x8f/xc9/xd7 <CJK>
-+<U70CA> /x8f/xc9/xd8 <CJK>
-+<U70D1> /x8f/xc9/xd9 <CJK>
-+<U70D3> /x8f/xc9/xda <CJK>
-+<U70D4> /x8f/xc9/xdb <CJK>
-+<U70D5> /x8f/xc9/xdc <CJK>
-+<U70D6> /x8f/xc9/xdd <CJK>
-+<U70D8> /x8f/xc9/xde <CJK>
-+<U70DC> /x8f/xc9/xdf <CJK>
-+<U70E4> /x8f/xc9/xe0 <CJK>
-+<U70FA> /x8f/xc9/xe1 <CJK>
-+<U7103> /x8f/xc9/xe2 <CJK>
-+<U7104> /x8f/xc9/xe3 <CJK>
-+<U7105> /x8f/xc9/xe4 <CJK>
-+<U7106> /x8f/xc9/xe5 <CJK>
-+<U7107> /x8f/xc9/xe6 <CJK>
-+<U710B> /x8f/xc9/xe7 <CJK>
-+<U710C> /x8f/xc9/xe8 <CJK>
-+<U710F> /x8f/xc9/xe9 <CJK>
-+<U711E> /x8f/xc9/xea <CJK>
-+<U7120> /x8f/xc9/xeb <CJK>
-+<U712B> /x8f/xc9/xec <CJK>
-+<U712D> /x8f/xc9/xed <CJK>
-+<U712F> /x8f/xc9/xee <CJK>
-+<U7130> /x8f/xc9/xef <CJK>
-+<U7131> /x8f/xc9/xf0 <CJK>
-+<U7138> /x8f/xc9/xf1 <CJK>
-+<U7141> /x8f/xc9/xf2 <CJK>
-+<U7145> /x8f/xc9/xf3 <CJK>
-+<U7146> /x8f/xc9/xf4 <CJK>
-+<U7147> /x8f/xc9/xf5 <CJK>
-+<U714A> /x8f/xc9/xf6 <CJK>
-+<U714B> /x8f/xc9/xf7 <CJK>
-+<U7150> /x8f/xc9/xf8 <CJK>
-+<U7152> /x8f/xc9/xf9 <CJK>
-+<U7157> /x8f/xc9/xfa <CJK>
-+<U715A> /x8f/xc9/xfb <CJK>
-+<U715C> /x8f/xc9/xfc <CJK>
-+<U715E> /x8f/xc9/xfd <CJK>
-+<U7160> /x8f/xc9/xfe <CJK>
-+<U7168> /x8f/xca/xa1 <CJK>
-+<U7179> /x8f/xca/xa2 <CJK>
-+<U7180> /x8f/xca/xa3 <CJK>
-+<U7185> /x8f/xca/xa4 <CJK>
-+<U7187> /x8f/xca/xa5 <CJK>
-+<U718C> /x8f/xca/xa6 <CJK>
-+<U7192> /x8f/xca/xa7 <CJK>
-+<U719A> /x8f/xca/xa8 <CJK>
-+<U719B> /x8f/xca/xa9 <CJK>
-+<U71A0> /x8f/xca/xaa <CJK>
-+<U71A2> /x8f/xca/xab <CJK>
-+<U71AF> /x8f/xca/xac <CJK>
-+<U71B0> /x8f/xca/xad <CJK>
-+<U71B2> /x8f/xca/xae <CJK>
-+<U71B3> /x8f/xca/xaf <CJK>
-+<U71BA> /x8f/xca/xb0 <CJK>
-+<U71BF> /x8f/xca/xb1 <CJK>
-+<U71C0> /x8f/xca/xb2 <CJK>
-+<U71C1> /x8f/xca/xb3 <CJK>
-+<U71C4> /x8f/xca/xb4 <CJK>
-+<U71CB> /x8f/xca/xb5 <CJK>
-+<U71CC> /x8f/xca/xb6 <CJK>
-+<U71D3> /x8f/xca/xb7 <CJK>
-+<U71D6> /x8f/xca/xb8 <CJK>
-+<U71D9> /x8f/xca/xb9 <CJK>
-+<U71DA> /x8f/xca/xba <CJK>
-+<U71DC> /x8f/xca/xbb <CJK>
-+<U71F8> /x8f/xca/xbc <CJK>
-+<U71FE> /x8f/xca/xbd <CJK>
-+<U7200> /x8f/xca/xbe <CJK>
-+<U7207> /x8f/xca/xbf <CJK>
-+<U7208> /x8f/xca/xc0 <CJK>
-+<U7209> /x8f/xca/xc1 <CJK>
-+<U7213> /x8f/xca/xc2 <CJK>
-+<U7217> /x8f/xca/xc3 <CJK>
-+<U721A> /x8f/xca/xc4 <CJK>
-+<U721D> /x8f/xca/xc5 <CJK>
-+<U721F> /x8f/xca/xc6 <CJK>
-+<U7224> /x8f/xca/xc7 <CJK>
-+<U722B> /x8f/xca/xc8 <CJK>
-+<U722F> /x8f/xca/xc9 <CJK>
-+<U7234> /x8f/xca/xca <CJK>
-+<U7238> /x8f/xca/xcb <CJK>
-+<U7239> /x8f/xca/xcc <CJK>
-+<U7241> /x8f/xca/xcd <CJK>
-+<U7242> /x8f/xca/xce <CJK>
-+<U7243> /x8f/xca/xcf <CJK>
-+<U7245> /x8f/xca/xd0 <CJK>
-+<U724E> /x8f/xca/xd1 <CJK>
-+<U724F> /x8f/xca/xd2 <CJK>
-+<U7250> /x8f/xca/xd3 <CJK>
-+<U7253> /x8f/xca/xd4 <CJK>
-+<U7255> /x8f/xca/xd5 <CJK>
-+<U7256> /x8f/xca/xd6 <CJK>
-+<U725A> /x8f/xca/xd7 <CJK>
-+<U725C> /x8f/xca/xd8 <CJK>
-+<U725E> /x8f/xca/xd9 <CJK>
-+<U7260> /x8f/xca/xda <CJK>
-+<U7263> /x8f/xca/xdb <CJK>
-+<U7268> /x8f/xca/xdc <CJK>
-+<U726B> /x8f/xca/xdd <CJK>
-+<U726E> /x8f/xca/xde <CJK>
-+<U726F> /x8f/xca/xdf <CJK>
-+<U7271> /x8f/xca/xe0 <CJK>
-+<U7277> /x8f/xca/xe1 <CJK>
-+<U7278> /x8f/xca/xe2 <CJK>
-+<U727B> /x8f/xca/xe3 <CJK>
-+<U727C> /x8f/xca/xe4 <CJK>
-+<U727F> /x8f/xca/xe5 <CJK>
-+<U7284> /x8f/xca/xe6 <CJK>
-+<U7289> /x8f/xca/xe7 <CJK>
-+<U728D> /x8f/xca/xe8 <CJK>
-+<U728E> /x8f/xca/xe9 <CJK>
-+<U7293> /x8f/xca/xea <CJK>
-+<U729B> /x8f/xca/xeb <CJK>
-+<U72A8> /x8f/xca/xec <CJK>
-+<U72AD> /x8f/xca/xed <CJK>
-+<U72AE> /x8f/xca/xee <CJK>
-+<U72B1> /x8f/xca/xef <CJK>
-+<U72B4> /x8f/xca/xf0 <CJK>
-+<U72BE> /x8f/xca/xf1 <CJK>
-+<U72C1> /x8f/xca/xf2 <CJK>
-+<U72C7> /x8f/xca/xf3 <CJK>
-+<U72C9> /x8f/xca/xf4 <CJK>
-+<U72CC> /x8f/xca/xf5 <CJK>
-+<U72D5> /x8f/xca/xf6 <CJK>
-+<U72D6> /x8f/xca/xf7 <CJK>
-+<U72D8> /x8f/xca/xf8 <CJK>
-+<U72DF> /x8f/xca/xf9 <CJK>
-+<U72E5> /x8f/xca/xfa <CJK>
-+<U72F3> /x8f/xca/xfb <CJK>
-+<U72F4> /x8f/xca/xfc <CJK>
-+<U72FA> /x8f/xca/xfd <CJK>
-+<U72FB> /x8f/xca/xfe <CJK>
-+<U72FE> /x8f/xcb/xa1 <CJK>
-+<U7302> /x8f/xcb/xa2 <CJK>
-+<U7304> /x8f/xcb/xa3 <CJK>
-+<U7305> /x8f/xcb/xa4 <CJK>
-+<U7307> /x8f/xcb/xa5 <CJK>
-+<U730B> /x8f/xcb/xa6 <CJK>
-+<U730D> /x8f/xcb/xa7 <CJK>
-+<U7312> /x8f/xcb/xa8 <CJK>
-+<U7313> /x8f/xcb/xa9 <CJK>
-+<U7318> /x8f/xcb/xaa <CJK>
-+<U7319> /x8f/xcb/xab <CJK>
-+<U731E> /x8f/xcb/xac <CJK>
-+<U7322> /x8f/xcb/xad <CJK>
-+<U7324> /x8f/xcb/xae <CJK>
-+<U7327> /x8f/xcb/xaf <CJK>
-+<U7328> /x8f/xcb/xb0 <CJK>
-+<U732C> /x8f/xcb/xb1 <CJK>
-+<U7331> /x8f/xcb/xb2 <CJK>
-+<U7332> /x8f/xcb/xb3 <CJK>
-+<U7335> /x8f/xcb/xb4 <CJK>
-+<U733A> /x8f/xcb/xb5 <CJK>
-+<U733B> /x8f/xcb/xb6 <CJK>
-+<U733D> /x8f/xcb/xb7 <CJK>
-+<U7343> /x8f/xcb/xb8 <CJK>
-+<U734D> /x8f/xcb/xb9 <CJK>
-+<U7350> /x8f/xcb/xba <CJK>
-+<U7352> /x8f/xcb/xbb <CJK>
-+<U7356> /x8f/xcb/xbc <CJK>
-+<U7358> /x8f/xcb/xbd <CJK>
-+<U735D> /x8f/xcb/xbe <CJK>
-+<U735E> /x8f/xcb/xbf <CJK>
-+<U735F> /x8f/xcb/xc0 <CJK>
-+<U7360> /x8f/xcb/xc1 <CJK>
-+<U7366> /x8f/xcb/xc2 <CJK>
-+<U7367> /x8f/xcb/xc3 <CJK>
-+<U7369> /x8f/xcb/xc4 <CJK>
-+<U736B> /x8f/xcb/xc5 <CJK>
-+<U736C> /x8f/xcb/xc6 <CJK>
-+<U736E> /x8f/xcb/xc7 <CJK>
-+<U736F> /x8f/xcb/xc8 <CJK>
-+<U7371> /x8f/xcb/xc9 <CJK>
-+<U7377> /x8f/xcb/xca <CJK>
-+<U7379> /x8f/xcb/xcb <CJK>
-+<U737C> /x8f/xcb/xcc <CJK>
-+<U7380> /x8f/xcb/xcd <CJK>
-+<U7381> /x8f/xcb/xce <CJK>
-+<U7383> /x8f/xcb/xcf <CJK>
-+<U7385> /x8f/xcb/xd0 <CJK>
-+<U7386> /x8f/xcb/xd1 <CJK>
-+<U738E> /x8f/xcb/xd2 <CJK>
-+<U7390> /x8f/xcb/xd3 <CJK>
-+<U7393> /x8f/xcb/xd4 <CJK>
-+<U7395> /x8f/xcb/xd5 <CJK>
-+<U7397> /x8f/xcb/xd6 <CJK>
-+<U7398> /x8f/xcb/xd7 <CJK>
-+<U739C> /x8f/xcb/xd8 <CJK>
-+<U739E> /x8f/xcb/xd9 <CJK>
-+<U739F> /x8f/xcb/xda <CJK>
-+<U73A0> /x8f/xcb/xdb <CJK>
-+<U73A2> /x8f/xcb/xdc <CJK>
-+<U73A5> /x8f/xcb/xdd <CJK>
-+<U73A6> /x8f/xcb/xde <CJK>
-+<U73AA> /x8f/xcb/xdf <CJK>
-+<U73AB> /x8f/xcb/xe0 <CJK>
-+<U73AD> /x8f/xcb/xe1 <CJK>
-+<U73B5> /x8f/xcb/xe2 <CJK>
-+<U73B7> /x8f/xcb/xe3 <CJK>
-+<U73B9> /x8f/xcb/xe4 <CJK>
-+<U73BC> /x8f/xcb/xe5 <CJK>
-+<U73BD> /x8f/xcb/xe6 <CJK>
-+<U73BF> /x8f/xcb/xe7 <CJK>
-+<U73C5> /x8f/xcb/xe8 <CJK>
-+<U73C6> /x8f/xcb/xe9 <CJK>
-+<U73C9> /x8f/xcb/xea <CJK>
-+<U73CB> /x8f/xcb/xeb <CJK>
-+<U73CC> /x8f/xcb/xec <CJK>
-+<U73CF> /x8f/xcb/xed <CJK>
-+<U73D2> /x8f/xcb/xee <CJK>
-+<U73D3> /x8f/xcb/xef <CJK>
-+<U73D6> /x8f/xcb/xf0 <CJK>
-+<U73D9> /x8f/xcb/xf1 <CJK>
-+<U73DD> /x8f/xcb/xf2 <CJK>
-+<U73E1> /x8f/xcb/xf3 <CJK>
-+<U73E3> /x8f/xcb/xf4 <CJK>
-+<U73E6> /x8f/xcb/xf5 <CJK>
-+<U73E7> /x8f/xcb/xf6 <CJK>
-+<U73E9> /x8f/xcb/xf7 <CJK>
-+<U73F4> /x8f/xcb/xf8 <CJK>
-+<U73F5> /x8f/xcb/xf9 <CJK>
-+<U73F7> /x8f/xcb/xfa <CJK>
-+<U73F9> /x8f/xcb/xfb <CJK>
-+<U73FA> /x8f/xcb/xfc <CJK>
-+<U73FB> /x8f/xcb/xfd <CJK>
-+<U73FD> /x8f/xcb/xfe <CJK>
-+<U73FF> /x8f/xcc/xa1 <CJK>
-+<U7400> /x8f/xcc/xa2 <CJK>
-+<U7401> /x8f/xcc/xa3 <CJK>
-+<U7404> /x8f/xcc/xa4 <CJK>
-+<U7407> /x8f/xcc/xa5 <CJK>
-+<U740A> /x8f/xcc/xa6 <CJK>
-+<U7411> /x8f/xcc/xa7 <CJK>
-+<U741A> /x8f/xcc/xa8 <CJK>
-+<U741B> /x8f/xcc/xa9 <CJK>
-+<U7424> /x8f/xcc/xaa <CJK>
-+<U7426> /x8f/xcc/xab <CJK>
-+<U7428> /x8f/xcc/xac <CJK>
-+<U7429> /x8f/xcc/xad <CJK>
-+<U742A> /x8f/xcc/xae <CJK>
-+<U742B> /x8f/xcc/xaf <CJK>
-+<U742C> /x8f/xcc/xb0 <CJK>
-+<U742D> /x8f/xcc/xb1 <CJK>
-+<U742E> /x8f/xcc/xb2 <CJK>
-+<U742F> /x8f/xcc/xb3 <CJK>
-+<U7430> /x8f/xcc/xb4 <CJK>
-+<U7431> /x8f/xcc/xb5 <CJK>
-+<U7439> /x8f/xcc/xb6 <CJK>
-+<U7440> /x8f/xcc/xb7 <CJK>
-+<U7443> /x8f/xcc/xb8 <CJK>
-+<U7444> /x8f/xcc/xb9 <CJK>
-+<U7446> /x8f/xcc/xba <CJK>
-+<U7447> /x8f/xcc/xbb <CJK>
-+<U744B> /x8f/xcc/xbc <CJK>
-+<U744D> /x8f/xcc/xbd <CJK>
-+<U7451> /x8f/xcc/xbe <CJK>
-+<U7452> /x8f/xcc/xbf <CJK>
-+<U7457> /x8f/xcc/xc0 <CJK>
-+<U745D> /x8f/xcc/xc1 <CJK>
-+<U7462> /x8f/xcc/xc2 <CJK>
-+<U7466> /x8f/xcc/xc3 <CJK>
-+<U7467> /x8f/xcc/xc4 <CJK>
-+<U7468> /x8f/xcc/xc5 <CJK>
-+<U746B> /x8f/xcc/xc6 <CJK>
-+<U746D> /x8f/xcc/xc7 <CJK>
-+<U746E> /x8f/xcc/xc8 <CJK>
-+<U7471> /x8f/xcc/xc9 <CJK>
-+<U7472> /x8f/xcc/xca <CJK>
-+<U7480> /x8f/xcc/xcb <CJK>
-+<U7481> /x8f/xcc/xcc <CJK>
-+<U7485> /x8f/xcc/xcd <CJK>
-+<U7486> /x8f/xcc/xce <CJK>
-+<U7487> /x8f/xcc/xcf <CJK>
-+<U7489> /x8f/xcc/xd0 <CJK>
-+<U748F> /x8f/xcc/xd1 <CJK>
-+<U7490> /x8f/xcc/xd2 <CJK>
-+<U7491> /x8f/xcc/xd3 <CJK>
-+<U7492> /x8f/xcc/xd4 <CJK>
-+<U7498> /x8f/xcc/xd5 <CJK>
-+<U7499> /x8f/xcc/xd6 <CJK>
-+<U749A> /x8f/xcc/xd7 <CJK>
-+<U749C> /x8f/xcc/xd8 <CJK>
-+<U749F> /x8f/xcc/xd9 <CJK>
-+<U74A0> /x8f/xcc/xda <CJK>
-+<U74A1> /x8f/xcc/xdb <CJK>
-+<U74A3> /x8f/xcc/xdc <CJK>
-+<U74A6> /x8f/xcc/xdd <CJK>
-+<U74A8> /x8f/xcc/xde <CJK>
-+<U74A9> /x8f/xcc/xdf <CJK>
-+<U74AA> /x8f/xcc/xe0 <CJK>
-+<U74AB> /x8f/xcc/xe1 <CJK>
-+<U74AE> /x8f/xcc/xe2 <CJK>
-+<U74AF> /x8f/xcc/xe3 <CJK>
-+<U74B1> /x8f/xcc/xe4 <CJK>
-+<U74B2> /x8f/xcc/xe5 <CJK>
-+<U74B5> /x8f/xcc/xe6 <CJK>
-+<U74B9> /x8f/xcc/xe7 <CJK>
-+<U74BB> /x8f/xcc/xe8 <CJK>
-+<U74BF> /x8f/xcc/xe9 <CJK>
-+<U74C8> /x8f/xcc/xea <CJK>
-+<U74C9> /x8f/xcc/xeb <CJK>
-+<U74CC> /x8f/xcc/xec <CJK>
-+<U74D0> /x8f/xcc/xed <CJK>
-+<U74D3> /x8f/xcc/xee <CJK>
-+<U74D8> /x8f/xcc/xef <CJK>
-+<U74DA> /x8f/xcc/xf0 <CJK>
-+<U74DB> /x8f/xcc/xf1 <CJK>
-+<U74DE> /x8f/xcc/xf2 <CJK>
-+<U74DF> /x8f/xcc/xf3 <CJK>
-+<U74E4> /x8f/xcc/xf4 <CJK>
-+<U74E8> /x8f/xcc/xf5 <CJK>
-+<U74EA> /x8f/xcc/xf6 <CJK>
-+<U74EB> /x8f/xcc/xf7 <CJK>
-+<U74EF> /x8f/xcc/xf8 <CJK>
-+<U74F4> /x8f/xcc/xf9 <CJK>
-+<U74FA> /x8f/xcc/xfa <CJK>
-+<U74FB> /x8f/xcc/xfb <CJK>
-+<U74FC> /x8f/xcc/xfc <CJK>
-+<U74FF> /x8f/xcc/xfd <CJK>
-+<U7506> /x8f/xcc/xfe <CJK>
-+<U7512> /x8f/xcd/xa1 <CJK>
-+<U7516> /x8f/xcd/xa2 <CJK>
-+<U7517> /x8f/xcd/xa3 <CJK>
-+<U7520> /x8f/xcd/xa4 <CJK>
-+<U7521> /x8f/xcd/xa5 <CJK>
-+<U7524> /x8f/xcd/xa6 <CJK>
-+<U7527> /x8f/xcd/xa7 <CJK>
-+<U7529> /x8f/xcd/xa8 <CJK>
-+<U752A> /x8f/xcd/xa9 <CJK>
-+<U752F> /x8f/xcd/xaa <CJK>
-+<U7536> /x8f/xcd/xab <CJK>
-+<U7539> /x8f/xcd/xac <CJK>
-+<U753D> /x8f/xcd/xad <CJK>
-+<U753E> /x8f/xcd/xae <CJK>
-+<U753F> /x8f/xcd/xaf <CJK>
-+<U7540> /x8f/xcd/xb0 <CJK>
-+<U7543> /x8f/xcd/xb1 <CJK>
-+<U7547> /x8f/xcd/xb2 <CJK>
-+<U7548> /x8f/xcd/xb3 <CJK>
-+<U754E> /x8f/xcd/xb4 <CJK>
-+<U7550> /x8f/xcd/xb5 <CJK>
-+<U7552> /x8f/xcd/xb6 <CJK>
-+<U7557> /x8f/xcd/xb7 <CJK>
-+<U755E> /x8f/xcd/xb8 <CJK>
-+<U755F> /x8f/xcd/xb9 <CJK>
-+<U7561> /x8f/xcd/xba <CJK>
-+<U756F> /x8f/xcd/xbb <CJK>
-+<U7571> /x8f/xcd/xbc <CJK>
-+<U7579> /x8f/xcd/xbd <CJK>
-+<U757A> /x8f/xcd/xbe <CJK>
-+<U757B> /x8f/xcd/xbf <CJK>
-+<U757C> /x8f/xcd/xc0 <CJK>
-+<U757D> /x8f/xcd/xc1 <CJK>
-+<U757E> /x8f/xcd/xc2 <CJK>
-+<U7581> /x8f/xcd/xc3 <CJK>
-+<U7585> /x8f/xcd/xc4 <CJK>
-+<U7590> /x8f/xcd/xc5 <CJK>
-+<U7592> /x8f/xcd/xc6 <CJK>
-+<U7593> /x8f/xcd/xc7 <CJK>
-+<U7595> /x8f/xcd/xc8 <CJK>
-+<U7599> /x8f/xcd/xc9 <CJK>
-+<U759C> /x8f/xcd/xca <CJK>
-+<U75A2> /x8f/xcd/xcb <CJK>
-+<U75A4> /x8f/xcd/xcc <CJK>
-+<U75B4> /x8f/xcd/xcd <CJK>
-+<U75BA> /x8f/xcd/xce <CJK>
-+<U75BF> /x8f/xcd/xcf <CJK>
-+<U75C0> /x8f/xcd/xd0 <CJK>
-+<U75C1> /x8f/xcd/xd1 <CJK>
-+<U75C4> /x8f/xcd/xd2 <CJK>
-+<U75C6> /x8f/xcd/xd3 <CJK>
-+<U75CC> /x8f/xcd/xd4 <CJK>
-+<U75CE> /x8f/xcd/xd5 <CJK>
-+<U75CF> /x8f/xcd/xd6 <CJK>
-+<U75D7> /x8f/xcd/xd7 <CJK>
-+<U75DC> /x8f/xcd/xd8 <CJK>
-+<U75DF> /x8f/xcd/xd9 <CJK>
-+<U75E0> /x8f/xcd/xda <CJK>
-+<U75E1> /x8f/xcd/xdb <CJK>
-+<U75E4> /x8f/xcd/xdc <CJK>
-+<U75E7> /x8f/xcd/xdd <CJK>
-+<U75EC> /x8f/xcd/xde <CJK>
-+<U75EE> /x8f/xcd/xdf <CJK>
-+<U75EF> /x8f/xcd/xe0 <CJK>
-+<U75F1> /x8f/xcd/xe1 <CJK>
-+<U75F9> /x8f/xcd/xe2 <CJK>
-+<U7600> /x8f/xcd/xe3 <CJK>
-+<U7602> /x8f/xcd/xe4 <CJK>
-+<U7603> /x8f/xcd/xe5 <CJK>
-+<U7604> /x8f/xcd/xe6 <CJK>
-+<U7607> /x8f/xcd/xe7 <CJK>
-+<U7608> /x8f/xcd/xe8 <CJK>
-+<U760A> /x8f/xcd/xe9 <CJK>
-+<U760C> /x8f/xcd/xea <CJK>
-+<U760F> /x8f/xcd/xeb <CJK>
-+<U7612> /x8f/xcd/xec <CJK>
-+<U7613> /x8f/xcd/xed <CJK>
-+<U7615> /x8f/xcd/xee <CJK>
-+<U7616> /x8f/xcd/xef <CJK>
-+<U7619> /x8f/xcd/xf0 <CJK>
-+<U761B> /x8f/xcd/xf1 <CJK>
-+<U761C> /x8f/xcd/xf2 <CJK>
-+<U761D> /x8f/xcd/xf3 <CJK>
-+<U761E> /x8f/xcd/xf4 <CJK>
-+<U7623> /x8f/xcd/xf5 <CJK>
-+<U7625> /x8f/xcd/xf6 <CJK>
-+<U7626> /x8f/xcd/xf7 <CJK>
-+<U7629> /x8f/xcd/xf8 <CJK>
-+<U762D> /x8f/xcd/xf9 <CJK>
-+<U7632> /x8f/xcd/xfa <CJK>
-+<U7633> /x8f/xcd/xfb <CJK>
-+<U7635> /x8f/xcd/xfc <CJK>
-+<U7638> /x8f/xcd/xfd <CJK>
-+<U7639> /x8f/xcd/xfe <CJK>
-+<U763A> /x8f/xce/xa1 <CJK>
-+<U763C> /x8f/xce/xa2 <CJK>
-+<U764A> /x8f/xce/xa3 <CJK>
-+<U7640> /x8f/xce/xa4 <CJK>
-+<U7641> /x8f/xce/xa5 <CJK>
-+<U7643> /x8f/xce/xa6 <CJK>
-+<U7644> /x8f/xce/xa7 <CJK>
-+<U7645> /x8f/xce/xa8 <CJK>
-+<U7649> /x8f/xce/xa9 <CJK>
-+<U764B> /x8f/xce/xaa <CJK>
-+<U7655> /x8f/xce/xab <CJK>
-+<U7659> /x8f/xce/xac <CJK>
-+<U765F> /x8f/xce/xad <CJK>
-+<U7664> /x8f/xce/xae <CJK>
-+<U7665> /x8f/xce/xaf <CJK>
-+<U766D> /x8f/xce/xb0 <CJK>
-+<U766E> /x8f/xce/xb1 <CJK>
-+<U766F> /x8f/xce/xb2 <CJK>
-+<U7671> /x8f/xce/xb3 <CJK>
-+<U7674> /x8f/xce/xb4 <CJK>
-+<U7681> /x8f/xce/xb5 <CJK>
-+<U7685> /x8f/xce/xb6 <CJK>
-+<U768C> /x8f/xce/xb7 <CJK>
-+<U768D> /x8f/xce/xb8 <CJK>
-+<U7695> /x8f/xce/xb9 <CJK>
-+<U769B> /x8f/xce/xba <CJK>
-+<U769C> /x8f/xce/xbb <CJK>
-+<U769D> /x8f/xce/xbc <CJK>
-+<U769F> /x8f/xce/xbd <CJK>
-+<U76A0> /x8f/xce/xbe <CJK>
-+<U76A2> /x8f/xce/xbf <CJK>
-+<U76A3> /x8f/xce/xc0 <CJK>
-+<U76A4> /x8f/xce/xc1 <CJK>
-+<U76A5> /x8f/xce/xc2 <CJK>
-+<U76A6> /x8f/xce/xc3 <CJK>
-+<U76A7> /x8f/xce/xc4 <CJK>
-+<U76A8> /x8f/xce/xc5 <CJK>
-+<U76AA> /x8f/xce/xc6 <CJK>
-+<U76AD> /x8f/xce/xc7 <CJK>
-+<U76BD> /x8f/xce/xc8 <CJK>
-+<U76C1> /x8f/xce/xc9 <CJK>
-+<U76C5> /x8f/xce/xca <CJK>
-+<U76C9> /x8f/xce/xcb <CJK>
-+<U76CB> /x8f/xce/xcc <CJK>
-+<U76CC> /x8f/xce/xcd <CJK>
-+<U76CE> /x8f/xce/xce <CJK>
-+<U76D4> /x8f/xce/xcf <CJK>
-+<U76D9> /x8f/xce/xd0 <CJK>
-+<U76E0> /x8f/xce/xd1 <CJK>
-+<U76E6> /x8f/xce/xd2 <CJK>
-+<U76E8> /x8f/xce/xd3 <CJK>
-+<U76EC> /x8f/xce/xd4 <CJK>
-+<U76F0> /x8f/xce/xd5 <CJK>
-+<U76F1> /x8f/xce/xd6 <CJK>
-+<U76F6> /x8f/xce/xd7 <CJK>
-+<U76F9> /x8f/xce/xd8 <CJK>
-+<U76FC> /x8f/xce/xd9 <CJK>
-+<U7700> /x8f/xce/xda <CJK>
-+<U7706> /x8f/xce/xdb <CJK>
-+<U770A> /x8f/xce/xdc <CJK>
-+<U770E> /x8f/xce/xdd <CJK>
-+<U7712> /x8f/xce/xde <CJK>
-+<U7714> /x8f/xce/xdf <CJK>
-+<U7715> /x8f/xce/xe0 <CJK>
-+<U7717> /x8f/xce/xe1 <CJK>
-+<U7719> /x8f/xce/xe2 <CJK>
-+<U771A> /x8f/xce/xe3 <CJK>
-+<U771C> /x8f/xce/xe4 <CJK>
-+<U7722> /x8f/xce/xe5 <CJK>
-+<U7728> /x8f/xce/xe6 <CJK>
-+<U772D> /x8f/xce/xe7 <CJK>
-+<U772E> /x8f/xce/xe8 <CJK>
-+<U772F> /x8f/xce/xe9 <CJK>
-+<U7734> /x8f/xce/xea <CJK>
-+<U7735> /x8f/xce/xeb <CJK>
-+<U7736> /x8f/xce/xec <CJK>
-+<U7739> /x8f/xce/xed <CJK>
-+<U773D> /x8f/xce/xee <CJK>
-+<U773E> /x8f/xce/xef <CJK>
-+<U7742> /x8f/xce/xf0 <CJK>
-+<U7745> /x8f/xce/xf1 <CJK>
-+<U7746> /x8f/xce/xf2 <CJK>
-+<U774A> /x8f/xce/xf3 <CJK>
-+<U774D> /x8f/xce/xf4 <CJK>
-+<U774E> /x8f/xce/xf5 <CJK>
-+<U774F> /x8f/xce/xf6 <CJK>
-+<U7752> /x8f/xce/xf7 <CJK>
-+<U7756> /x8f/xce/xf8 <CJK>
-+<U7757> /x8f/xce/xf9 <CJK>
-+<U775C> /x8f/xce/xfa <CJK>
-+<U775E> /x8f/xce/xfb <CJK>
-+<U775F> /x8f/xce/xfc <CJK>
-+<U7760> /x8f/xce/xfd <CJK>
-+<U7762> /x8f/xce/xfe <CJK>
-+<U7764> /x8f/xcf/xa1 <CJK>
-+<U7767> /x8f/xcf/xa2 <CJK>
-+<U776A> /x8f/xcf/xa3 <CJK>
-+<U776C> /x8f/xcf/xa4 <CJK>
-+<U7770> /x8f/xcf/xa5 <CJK>
-+<U7772> /x8f/xcf/xa6 <CJK>
-+<U7773> /x8f/xcf/xa7 <CJK>
-+<U7774> /x8f/xcf/xa8 <CJK>
-+<U777A> /x8f/xcf/xa9 <CJK>
-+<U777D> /x8f/xcf/xaa <CJK>
-+<U7780> /x8f/xcf/xab <CJK>
-+<U7784> /x8f/xcf/xac <CJK>
-+<U778C> /x8f/xcf/xad <CJK>
-+<U778D> /x8f/xcf/xae <CJK>
-+<U7794> /x8f/xcf/xaf <CJK>
-+<U7795> /x8f/xcf/xb0 <CJK>
-+<U7796> /x8f/xcf/xb1 <CJK>
-+<U779A> /x8f/xcf/xb2 <CJK>
-+<U779F> /x8f/xcf/xb3 <CJK>
-+<U77A2> /x8f/xcf/xb4 <CJK>
-+<U77A7> /x8f/xcf/xb5 <CJK>
-+<U77AA> /x8f/xcf/xb6 <CJK>
-+<U77AE> /x8f/xcf/xb7 <CJK>
-+<U77AF> /x8f/xcf/xb8 <CJK>
-+<U77B1> /x8f/xcf/xb9 <CJK>
-+<U77B5> /x8f/xcf/xba <CJK>
-+<U77BE> /x8f/xcf/xbb <CJK>
-+<U77C3> /x8f/xcf/xbc <CJK>
-+<U77C9> /x8f/xcf/xbd <CJK>
-+<U77D1> /x8f/xcf/xbe <CJK>
-+<U77D2> /x8f/xcf/xbf <CJK>
-+<U77D5> /x8f/xcf/xc0 <CJK>
-+<U77D9> /x8f/xcf/xc1 <CJK>
-+<U77DE> /x8f/xcf/xc2 <CJK>
-+<U77DF> /x8f/xcf/xc3 <CJK>
-+<U77E0> /x8f/xcf/xc4 <CJK>
-+<U77E4> /x8f/xcf/xc5 <CJK>
-+<U77E6> /x8f/xcf/xc6 <CJK>
-+<U77EA> /x8f/xcf/xc7 <CJK>
-+<U77EC> /x8f/xcf/xc8 <CJK>
-+<U77F0> /x8f/xcf/xc9 <CJK>
-+<U77F1> /x8f/xcf/xca <CJK>
-+<U77F4> /x8f/xcf/xcb <CJK>
-+<U77F8> /x8f/xcf/xcc <CJK>
-+<U77FB> /x8f/xcf/xcd <CJK>
-+<U7805> /x8f/xcf/xce <CJK>
-+<U7806> /x8f/xcf/xcf <CJK>
-+<U7809> /x8f/xcf/xd0 <CJK>
-+<U780D> /x8f/xcf/xd1 <CJK>
-+<U780E> /x8f/xcf/xd2 <CJK>
-+<U7811> /x8f/xcf/xd3 <CJK>
-+<U781D> /x8f/xcf/xd4 <CJK>
-+<U7821> /x8f/xcf/xd5 <CJK>
-+<U7822> /x8f/xcf/xd6 <CJK>
-+<U7823> /x8f/xcf/xd7 <CJK>
-+<U782D> /x8f/xcf/xd8 <CJK>
-+<U782E> /x8f/xcf/xd9 <CJK>
-+<U7830> /x8f/xcf/xda <CJK>
-+<U7835> /x8f/xcf/xdb <CJK>
-+<U7837> /x8f/xcf/xdc <CJK>
-+<U7843> /x8f/xcf/xdd <CJK>
-+<U7844> /x8f/xcf/xde <CJK>
-+<U7847> /x8f/xcf/xdf <CJK>
-+<U7848> /x8f/xcf/xe0 <CJK>
-+<U784C> /x8f/xcf/xe1 <CJK>
-+<U784E> /x8f/xcf/xe2 <CJK>
-+<U7852> /x8f/xcf/xe3 <CJK>
-+<U785C> /x8f/xcf/xe4 <CJK>
-+<U785E> /x8f/xcf/xe5 <CJK>
-+<U7860> /x8f/xcf/xe6 <CJK>
-+<U7861> /x8f/xcf/xe7 <CJK>
-+<U7863> /x8f/xcf/xe8 <CJK>
-+<U7864> /x8f/xcf/xe9 <CJK>
-+<U7868> /x8f/xcf/xea <CJK>
-+<U786A> /x8f/xcf/xeb <CJK>
-+<U786E> /x8f/xcf/xec <CJK>
-+<U787A> /x8f/xcf/xed <CJK>
-+<U787E> /x8f/xcf/xee <CJK>
-+<U788A> /x8f/xcf/xef <CJK>
-+<U788F> /x8f/xcf/xf0 <CJK>
-+<U7894> /x8f/xcf/xf1 <CJK>
-+<U7898> /x8f/xcf/xf2 <CJK>
-+<U78A1> /x8f/xcf/xf3 <CJK>
-+<U789D> /x8f/xcf/xf4 <CJK>
-+<U789E> /x8f/xcf/xf5 <CJK>
-+<U789F> /x8f/xcf/xf6 <CJK>
-+<U78A4> /x8f/xcf/xf7 <CJK>
-+<U78A8> /x8f/xcf/xf8 <CJK>
-+<U78AC> /x8f/xcf/xf9 <CJK>
-+<U78AD> /x8f/xcf/xfa <CJK>
-+<U78B0> /x8f/xcf/xfb <CJK>
-+<U78B1> /x8f/xcf/xfc <CJK>
-+<U78B2> /x8f/xcf/xfd <CJK>
-+<U78B3> /x8f/xcf/xfe <CJK>
-+<U78BB> /x8f/xd0/xa1 <CJK>
-+<U78BD> /x8f/xd0/xa2 <CJK>
-+<U78BF> /x8f/xd0/xa3 <CJK>
-+<U78C7> /x8f/xd0/xa4 <CJK>
-+<U78C8> /x8f/xd0/xa5 <CJK>
-+<U78C9> /x8f/xd0/xa6 <CJK>
-+<U78CC> /x8f/xd0/xa7 <CJK>
-+<U78CE> /x8f/xd0/xa8 <CJK>
-+<U78D2> /x8f/xd0/xa9 <CJK>
-+<U78D3> /x8f/xd0/xaa <CJK>
-+<U78D5> /x8f/xd0/xab <CJK>
-+<U78D6> /x8f/xd0/xac <CJK>
-+<U78E4> /x8f/xd0/xad <CJK>
-+<U78DB> /x8f/xd0/xae <CJK>
-+<U78DF> /x8f/xd0/xaf <CJK>
-+<U78E0> /x8f/xd0/xb0 <CJK>
-+<U78E1> /x8f/xd0/xb1 <CJK>
-+<U78E6> /x8f/xd0/xb2 <CJK>
-+<U78EA> /x8f/xd0/xb3 <CJK>
-+<U78F2> /x8f/xd0/xb4 <CJK>
-+<U78F3> /x8f/xd0/xb5 <CJK>
-+<U7900> /x8f/xd0/xb6 <CJK>
-+<U78F6> /x8f/xd0/xb7 <CJK>
-+<U78F7> /x8f/xd0/xb8 <CJK>
-+<U78FA> /x8f/xd0/xb9 <CJK>
-+<U78FB> /x8f/xd0/xba <CJK>
-+<U78FF> /x8f/xd0/xbb <CJK>
-+<U7906> /x8f/xd0/xbc <CJK>
-+<U790C> /x8f/xd0/xbd <CJK>
-+<U7910> /x8f/xd0/xbe <CJK>
-+<U791A> /x8f/xd0/xbf <CJK>
-+<U791C> /x8f/xd0/xc0 <CJK>
-+<U791E> /x8f/xd0/xc1 <CJK>
-+<U791F> /x8f/xd0/xc2 <CJK>
-+<U7920> /x8f/xd0/xc3 <CJK>
-+<U7925> /x8f/xd0/xc4 <CJK>
-+<U7927> /x8f/xd0/xc5 <CJK>
-+<U7929> /x8f/xd0/xc6 <CJK>
-+<U792D> /x8f/xd0/xc7 <CJK>
-+<U7931> /x8f/xd0/xc8 <CJK>
-+<U7934> /x8f/xd0/xc9 <CJK>
-+<U7935> /x8f/xd0/xca <CJK>
-+<U793B> /x8f/xd0/xcb <CJK>
-+<U793D> /x8f/xd0/xcc <CJK>
-+<U793F> /x8f/xd0/xcd <CJK>
-+<U7944> /x8f/xd0/xce <CJK>
-+<U7945> /x8f/xd0/xcf <CJK>
-+<U7946> /x8f/xd0/xd0 <CJK>
-+<U794A> /x8f/xd0/xd1 <CJK>
-+<U794B> /x8f/xd0/xd2 <CJK>
-+<U794F> /x8f/xd0/xd3 <CJK>
-+<U7951> /x8f/xd0/xd4 <CJK>
-+<U7954> /x8f/xd0/xd5 <CJK>
-+<U7958> /x8f/xd0/xd6 <CJK>
-+<U795B> /x8f/xd0/xd7 <CJK>
-+<U795C> /x8f/xd0/xd8 <CJK>
-+<U7967> /x8f/xd0/xd9 <CJK>
-+<U7969> /x8f/xd0/xda <CJK>
-+<U796B> /x8f/xd0/xdb <CJK>
-+<U7972> /x8f/xd0/xdc <CJK>
-+<U7979> /x8f/xd0/xdd <CJK>
-+<U797B> /x8f/xd0/xde <CJK>
-+<U797C> /x8f/xd0/xdf <CJK>
-+<U797E> /x8f/xd0/xe0 <CJK>
-+<U798B> /x8f/xd0/xe1 <CJK>
-+<U798C> /x8f/xd0/xe2 <CJK>
-+<U7991> /x8f/xd0/xe3 <CJK>
-+<U7993> /x8f/xd0/xe4 <CJK>
-+<U7994> /x8f/xd0/xe5 <CJK>
-+<U7995> /x8f/xd0/xe6 <CJK>
-+<U7996> /x8f/xd0/xe7 <CJK>
-+<U7998> /x8f/xd0/xe8 <CJK>
-+<U799B> /x8f/xd0/xe9 <CJK>
-+<U799C> /x8f/xd0/xea <CJK>
-+<U79A1> /x8f/xd0/xeb <CJK>
-+<U79A8> /x8f/xd0/xec <CJK>
-+<U79A9> /x8f/xd0/xed <CJK>
-+<U79AB> /x8f/xd0/xee <CJK>
-+<U79AF> /x8f/xd0/xef <CJK>
-+<U79B1> /x8f/xd0/xf0 <CJK>
-+<U79B4> /x8f/xd0/xf1 <CJK>
-+<U79B8> /x8f/xd0/xf2 <CJK>
-+<U79BB> /x8f/xd0/xf3 <CJK>
-+<U79C2> /x8f/xd0/xf4 <CJK>
-+<U79C4> /x8f/xd0/xf5 <CJK>
-+<U79C7> /x8f/xd0/xf6 <CJK>
-+<U79C8> /x8f/xd0/xf7 <CJK>
-+<U79CA> /x8f/xd0/xf8 <CJK>
-+<U79CF> /x8f/xd0/xf9 <CJK>
-+<U79D4> /x8f/xd0/xfa <CJK>
-+<U79D6> /x8f/xd0/xfb <CJK>
-+<U79DA> /x8f/xd0/xfc <CJK>
-+<U79DD> /x8f/xd0/xfd <CJK>
-+<U79DE> /x8f/xd0/xfe <CJK>
-+<U79E0> /x8f/xd1/xa1 <CJK>
-+<U79E2> /x8f/xd1/xa2 <CJK>
-+<U79E5> /x8f/xd1/xa3 <CJK>
-+<U79EA> /x8f/xd1/xa4 <CJK>
-+<U79EB> /x8f/xd1/xa5 <CJK>
-+<U79ED> /x8f/xd1/xa6 <CJK>
-+<U79F1> /x8f/xd1/xa7 <CJK>
-+<U79F8> /x8f/xd1/xa8 <CJK>
-+<U79FC> /x8f/xd1/xa9 <CJK>
-+<U7A02> /x8f/xd1/xaa <CJK>
-+<U7A03> /x8f/xd1/xab <CJK>
-+<U7A07> /x8f/xd1/xac <CJK>
-+<U7A09> /x8f/xd1/xad <CJK>
-+<U7A0A> /x8f/xd1/xae <CJK>
-+<U7A0C> /x8f/xd1/xaf <CJK>
-+<U7A11> /x8f/xd1/xb0 <CJK>
-+<U7A15> /x8f/xd1/xb1 <CJK>
-+<U7A1B> /x8f/xd1/xb2 <CJK>
-+<U7A1E> /x8f/xd1/xb3 <CJK>
-+<U7A21> /x8f/xd1/xb4 <CJK>
-+<U7A27> /x8f/xd1/xb5 <CJK>
-+<U7A2B> /x8f/xd1/xb6 <CJK>
-+<U7A2D> /x8f/xd1/xb7 <CJK>
-+<U7A2F> /x8f/xd1/xb8 <CJK>
-+<U7A30> /x8f/xd1/xb9 <CJK>
-+<U7A34> /x8f/xd1/xba <CJK>
-+<U7A35> /x8f/xd1/xbb <CJK>
-+<U7A38> /x8f/xd1/xbc <CJK>
-+<U7A39> /x8f/xd1/xbd <CJK>
-+<U7A3A> /x8f/xd1/xbe <CJK>
-+<U7A44> /x8f/xd1/xbf <CJK>
-+<U7A45> /x8f/xd1/xc0 <CJK>
-+<U7A47> /x8f/xd1/xc1 <CJK>
-+<U7A48> /x8f/xd1/xc2 <CJK>
-+<U7A4C> /x8f/xd1/xc3 <CJK>
-+<U7A55> /x8f/xd1/xc4 <CJK>
-+<U7A56> /x8f/xd1/xc5 <CJK>
-+<U7A59> /x8f/xd1/xc6 <CJK>
-+<U7A5C> /x8f/xd1/xc7 <CJK>
-+<U7A5D> /x8f/xd1/xc8 <CJK>
-+<U7A5F> /x8f/xd1/xc9 <CJK>
-+<U7A60> /x8f/xd1/xca <CJK>
-+<U7A65> /x8f/xd1/xcb <CJK>
-+<U7A67> /x8f/xd1/xcc <CJK>
-+<U7A6A> /x8f/xd1/xcd <CJK>
-+<U7A6D> /x8f/xd1/xce <CJK>
-+<U7A75> /x8f/xd1/xcf <CJK>
-+<U7A78> /x8f/xd1/xd0 <CJK>
-+<U7A7E> /x8f/xd1/xd1 <CJK>
-+<U7A80> /x8f/xd1/xd2 <CJK>
-+<U7A82> /x8f/xd1/xd3 <CJK>
-+<U7A85> /x8f/xd1/xd4 <CJK>
-+<U7A86> /x8f/xd1/xd5 <CJK>
-+<U7A8A> /x8f/xd1/xd6 <CJK>
-+<U7A8B> /x8f/xd1/xd7 <CJK>
-+<U7A90> /x8f/xd1/xd8 <CJK>
-+<U7A91> /x8f/xd1/xd9 <CJK>
-+<U7A94> /x8f/xd1/xda <CJK>
-+<U7A9E> /x8f/xd1/xdb <CJK>
-+<U7AA0> /x8f/xd1/xdc <CJK>
-+<U7AA3> /x8f/xd1/xdd <CJK>
-+<U7AAC> /x8f/xd1/xde <CJK>
-+<U7AB3> /x8f/xd1/xdf <CJK>
-+<U7AB5> /x8f/xd1/xe0 <CJK>
-+<U7AB9> /x8f/xd1/xe1 <CJK>
-+<U7ABB> /x8f/xd1/xe2 <CJK>
-+<U7ABC> /x8f/xd1/xe3 <CJK>
-+<U7AC6> /x8f/xd1/xe4 <CJK>
-+<U7AC9> /x8f/xd1/xe5 <CJK>
-+<U7ACC> /x8f/xd1/xe6 <CJK>
-+<U7ACE> /x8f/xd1/xe7 <CJK>
-+<U7AD1> /x8f/xd1/xe8 <CJK>
-+<U7ADB> /x8f/xd1/xe9 <CJK>
-+<U7AE8> /x8f/xd1/xea <CJK>
-+<U7AE9> /x8f/xd1/xeb <CJK>
-+<U7AEB> /x8f/xd1/xec <CJK>
-+<U7AEC> /x8f/xd1/xed <CJK>
-+<U7AF1> /x8f/xd1/xee <CJK>
-+<U7AF4> /x8f/xd1/xef <CJK>
-+<U7AFB> /x8f/xd1/xf0 <CJK>
-+<U7AFD> /x8f/xd1/xf1 <CJK>
-+<U7AFE> /x8f/xd1/xf2 <CJK>
-+<U7B07> /x8f/xd1/xf3 <CJK>
-+<U7B14> /x8f/xd1/xf4 <CJK>
-+<U7B1F> /x8f/xd1/xf5 <CJK>
-+<U7B23> /x8f/xd1/xf6 <CJK>
-+<U7B27> /x8f/xd1/xf7 <CJK>
-+<U7B29> /x8f/xd1/xf8 <CJK>
-+<U7B2A> /x8f/xd1/xf9 <CJK>
-+<U7B2B> /x8f/xd1/xfa <CJK>
-+<U7B2D> /x8f/xd1/xfb <CJK>
-+<U7B2E> /x8f/xd1/xfc <CJK>
-+<U7B2F> /x8f/xd1/xfd <CJK>
-+<U7B30> /x8f/xd1/xfe <CJK>
-+<U7B31> /x8f/xd2/xa1 <CJK>
-+<U7B34> /x8f/xd2/xa2 <CJK>
-+<U7B3D> /x8f/xd2/xa3 <CJK>
-+<U7B3F> /x8f/xd2/xa4 <CJK>
-+<U7B40> /x8f/xd2/xa5 <CJK>
-+<U7B41> /x8f/xd2/xa6 <CJK>
-+<U7B47> /x8f/xd2/xa7 <CJK>
-+<U7B4E> /x8f/xd2/xa8 <CJK>
-+<U7B55> /x8f/xd2/xa9 <CJK>
-+<U7B60> /x8f/xd2/xaa <CJK>
-+<U7B64> /x8f/xd2/xab <CJK>
-+<U7B66> /x8f/xd2/xac <CJK>
-+<U7B69> /x8f/xd2/xad <CJK>
-+<U7B6A> /x8f/xd2/xae <CJK>
-+<U7B6D> /x8f/xd2/xaf <CJK>
-+<U7B6F> /x8f/xd2/xb0 <CJK>
-+<U7B72> /x8f/xd2/xb1 <CJK>
-+<U7B73> /x8f/xd2/xb2 <CJK>
-+<U7B77> /x8f/xd2/xb3 <CJK>
-+<U7B84> /x8f/xd2/xb4 <CJK>
-+<U7B89> /x8f/xd2/xb5 <CJK>
-+<U7B8E> /x8f/xd2/xb6 <CJK>
-+<U7B90> /x8f/xd2/xb7 <CJK>
-+<U7B91> /x8f/xd2/xb8 <CJK>
-+<U7B96> /x8f/xd2/xb9 <CJK>
-+<U7B9B> /x8f/xd2/xba <CJK>
-+<U7B9E> /x8f/xd2/xbb <CJK>
-+<U7BA0> /x8f/xd2/xbc <CJK>
-+<U7BA5> /x8f/xd2/xbd <CJK>
-+<U7BAC> /x8f/xd2/xbe <CJK>
-+<U7BAF> /x8f/xd2/xbf <CJK>
-+<U7BB0> /x8f/xd2/xc0 <CJK>
-+<U7BB2> /x8f/xd2/xc1 <CJK>
-+<U7BB5> /x8f/xd2/xc2 <CJK>
-+<U7BB6> /x8f/xd2/xc3 <CJK>
-+<U7BBA> /x8f/xd2/xc4 <CJK>
-+<U7BBB> /x8f/xd2/xc5 <CJK>
-+<U7BBC> /x8f/xd2/xc6 <CJK>
-+<U7BBD> /x8f/xd2/xc7 <CJK>
-+<U7BC2> /x8f/xd2/xc8 <CJK>
-+<U7BC5> /x8f/xd2/xc9 <CJK>
-+<U7BC8> /x8f/xd2/xca <CJK>
-+<U7BCA> /x8f/xd2/xcb <CJK>
-+<U7BD4> /x8f/xd2/xcc <CJK>
-+<U7BD6> /x8f/xd2/xcd <CJK>
-+<U7BD7> /x8f/xd2/xce <CJK>
-+<U7BD9> /x8f/xd2/xcf <CJK>
-+<U7BDA> /x8f/xd2/xd0 <CJK>
-+<U7BDB> /x8f/xd2/xd1 <CJK>
-+<U7BE8> /x8f/xd2/xd2 <CJK>
-+<U7BEA> /x8f/xd2/xd3 <CJK>
-+<U7BF2> /x8f/xd2/xd4 <CJK>
-+<U7BF4> /x8f/xd2/xd5 <CJK>
-+<U7BF5> /x8f/xd2/xd6 <CJK>
-+<U7BF8> /x8f/xd2/xd7 <CJK>
-+<U7BF9> /x8f/xd2/xd8 <CJK>
-+<U7BFA> /x8f/xd2/xd9 <CJK>
-+<U7BFC> /x8f/xd2/xda <CJK>
-+<U7BFE> /x8f/xd2/xdb <CJK>
-+<U7C01> /x8f/xd2/xdc <CJK>
-+<U7C02> /x8f/xd2/xdd <CJK>
-+<U7C03> /x8f/xd2/xde <CJK>
-+<U7C04> /x8f/xd2/xdf <CJK>
-+<U7C06> /x8f/xd2/xe0 <CJK>
-+<U7C09> /x8f/xd2/xe1 <CJK>
-+<U7C0B> /x8f/xd2/xe2 <CJK>
-+<U7C0C> /x8f/xd2/xe3 <CJK>
-+<U7C0E> /x8f/xd2/xe4 <CJK>
-+<U7C0F> /x8f/xd2/xe5 <CJK>
-+<U7C19> /x8f/xd2/xe6 <CJK>
-+<U7C1B> /x8f/xd2/xe7 <CJK>
-+<U7C20> /x8f/xd2/xe8 <CJK>
-+<U7C25> /x8f/xd2/xe9 <CJK>
-+<U7C26> /x8f/xd2/xea <CJK>
-+<U7C28> /x8f/xd2/xeb <CJK>
-+<U7C2C> /x8f/xd2/xec <CJK>
-+<U7C31> /x8f/xd2/xed <CJK>
-+<U7C33> /x8f/xd2/xee <CJK>
-+<U7C34> /x8f/xd2/xef <CJK>
-+<U7C36> /x8f/xd2/xf0 <CJK>
-+<U7C39> /x8f/xd2/xf1 <CJK>
-+<U7C3A> /x8f/xd2/xf2 <CJK>
-+<U7C46> /x8f/xd2/xf3 <CJK>
-+<U7C4A> /x8f/xd2/xf4 <CJK>
-+<U7C55> /x8f/xd2/xf5 <CJK>
-+<U7C51> /x8f/xd2/xf6 <CJK>
-+<U7C52> /x8f/xd2/xf7 <CJK>
-+<U7C53> /x8f/xd2/xf8 <CJK>
-+<U7C59> /x8f/xd2/xf9 <CJK>
-+<U7C5A> /x8f/xd2/xfa <CJK>
-+<U7C5B> /x8f/xd2/xfb <CJK>
-+<U7C5C> /x8f/xd2/xfc <CJK>
-+<U7C5D> /x8f/xd2/xfd <CJK>
-+<U7C5E> /x8f/xd2/xfe <CJK>
-+<U7C61> /x8f/xd3/xa1 <CJK>
-+<U7C63> /x8f/xd3/xa2 <CJK>
-+<U7C67> /x8f/xd3/xa3 <CJK>
-+<U7C69> /x8f/xd3/xa4 <CJK>
-+<U7C6D> /x8f/xd3/xa5 <CJK>
-+<U7C6E> /x8f/xd3/xa6 <CJK>
-+<U7C70> /x8f/xd3/xa7 <CJK>
-+<U7C72> /x8f/xd3/xa8 <CJK>
-+<U7C79> /x8f/xd3/xa9 <CJK>
-+<U7C7C> /x8f/xd3/xaa <CJK>
-+<U7C7D> /x8f/xd3/xab <CJK>
-+<U7C86> /x8f/xd3/xac <CJK>
-+<U7C87> /x8f/xd3/xad <CJK>
-+<U7C8F> /x8f/xd3/xae <CJK>
-+<U7C94> /x8f/xd3/xaf <CJK>
-+<U7C9E> /x8f/xd3/xb0 <CJK>
-+<U7CA0> /x8f/xd3/xb1 <CJK>
-+<U7CA6> /x8f/xd3/xb2 <CJK>
-+<U7CB0> /x8f/xd3/xb3 <CJK>
-+<U7CB6> /x8f/xd3/xb4 <CJK>
-+<U7CB7> /x8f/xd3/xb5 <CJK>
-+<U7CBA> /x8f/xd3/xb6 <CJK>
-+<U7CBB> /x8f/xd3/xb7 <CJK>
-+<U7CBC> /x8f/xd3/xb8 <CJK>
-+<U7CBF> /x8f/xd3/xb9 <CJK>
-+<U7CC4> /x8f/xd3/xba <CJK>
-+<U7CC7> /x8f/xd3/xbb <CJK>
-+<U7CC8> /x8f/xd3/xbc <CJK>
-+<U7CC9> /x8f/xd3/xbd <CJK>
-+<U7CCD> /x8f/xd3/xbe <CJK>
-+<U7CCF> /x8f/xd3/xbf <CJK>
-+<U7CD3> /x8f/xd3/xc0 <CJK>
-+<U7CD4> /x8f/xd3/xc1 <CJK>
-+<U7CD5> /x8f/xd3/xc2 <CJK>
-+<U7CD7> /x8f/xd3/xc3 <CJK>
-+<U7CD9> /x8f/xd3/xc4 <CJK>
-+<U7CDA> /x8f/xd3/xc5 <CJK>
-+<U7CDD> /x8f/xd3/xc6 <CJK>
-+<U7CE6> /x8f/xd3/xc7 <CJK>
-+<U7CE9> /x8f/xd3/xc8 <CJK>
-+<U7CEB> /x8f/xd3/xc9 <CJK>
-+<U7CF5> /x8f/xd3/xca <CJK>
-+<U7D03> /x8f/xd3/xcb <CJK>
-+<U7D07> /x8f/xd3/xcc <CJK>
-+<U7D08> /x8f/xd3/xcd <CJK>
-+<U7D09> /x8f/xd3/xce <CJK>
-+<U7D0F> /x8f/xd3/xcf <CJK>
-+<U7D11> /x8f/xd3/xd0 <CJK>
-+<U7D12> /x8f/xd3/xd1 <CJK>
-+<U7D13> /x8f/xd3/xd2 <CJK>
-+<U7D16> /x8f/xd3/xd3 <CJK>
-+<U7D1D> /x8f/xd3/xd4 <CJK>
-+<U7D1E> /x8f/xd3/xd5 <CJK>
-+<U7D23> /x8f/xd3/xd6 <CJK>
-+<U7D26> /x8f/xd3/xd7 <CJK>
-+<U7D2A> /x8f/xd3/xd8 <CJK>
-+<U7D2D> /x8f/xd3/xd9 <CJK>
-+<U7D31> /x8f/xd3/xda <CJK>
-+<U7D3C> /x8f/xd3/xdb <CJK>
-+<U7D3D> /x8f/xd3/xdc <CJK>
-+<U7D3E> /x8f/xd3/xdd <CJK>
-+<U7D40> /x8f/xd3/xde <CJK>
-+<U7D41> /x8f/xd3/xdf <CJK>
-+<U7D47> /x8f/xd3/xe0 <CJK>
-+<U7D48> /x8f/xd3/xe1 <CJK>
-+<U7D4D> /x8f/xd3/xe2 <CJK>
-+<U7D51> /x8f/xd3/xe3 <CJK>
-+<U7D53> /x8f/xd3/xe4 <CJK>
-+<U7D57> /x8f/xd3/xe5 <CJK>
-+<U7D59> /x8f/xd3/xe6 <CJK>
-+<U7D5A> /x8f/xd3/xe7 <CJK>
-+<U7D5C> /x8f/xd3/xe8 <CJK>
-+<U7D5D> /x8f/xd3/xe9 <CJK>
-+<U7D65> /x8f/xd3/xea <CJK>
-+<U7D67> /x8f/xd3/xeb <CJK>
-+<U7D6A> /x8f/xd3/xec <CJK>
-+<U7D70> /x8f/xd3/xed <CJK>
-+<U7D78> /x8f/xd3/xee <CJK>
-+<U7D7A> /x8f/xd3/xef <CJK>
-+<U7D7B> /x8f/xd3/xf0 <CJK>
-+<U7D7F> /x8f/xd3/xf1 <CJK>
-+<U7D81> /x8f/xd3/xf2 <CJK>
-+<U7D82> /x8f/xd3/xf3 <CJK>
-+<U7D83> /x8f/xd3/xf4 <CJK>
-+<U7D85> /x8f/xd3/xf5 <CJK>
-+<U7D86> /x8f/xd3/xf6 <CJK>
-+<U7D88> /x8f/xd3/xf7 <CJK>
-+<U7D8B> /x8f/xd3/xf8 <CJK>
-+<U7D8C> /x8f/xd3/xf9 <CJK>
-+<U7D8D> /x8f/xd3/xfa <CJK>
-+<U7D91> /x8f/xd3/xfb <CJK>
-+<U7D96> /x8f/xd3/xfc <CJK>
-+<U7D97> /x8f/xd3/xfd <CJK>
-+<U7D9D> /x8f/xd3/xfe <CJK>
-+<U7D9E> /x8f/xd4/xa1 <CJK>
-+<U7DA6> /x8f/xd4/xa2 <CJK>
-+<U7DA7> /x8f/xd4/xa3 <CJK>
-+<U7DAA> /x8f/xd4/xa4 <CJK>
-+<U7DB3> /x8f/xd4/xa5 <CJK>
-+<U7DB6> /x8f/xd4/xa6 <CJK>
-+<U7DB7> /x8f/xd4/xa7 <CJK>
-+<U7DB9> /x8f/xd4/xa8 <CJK>
-+<U7DC2> /x8f/xd4/xa9 <CJK>
-+<U7DC3> /x8f/xd4/xaa <CJK>
-+<U7DC4> /x8f/xd4/xab <CJK>
-+<U7DC5> /x8f/xd4/xac <CJK>
-+<U7DC6> /x8f/xd4/xad <CJK>
-+<U7DCC> /x8f/xd4/xae <CJK>
-+<U7DCD> /x8f/xd4/xaf <CJK>
-+<U7DCE> /x8f/xd4/xb0 <CJK>
-+<U7DD7> /x8f/xd4/xb1 <CJK>
-+<U7DD9> /x8f/xd4/xb2 <CJK>
-+<U7E00> /x8f/xd4/xb3 <CJK>
-+<U7DE2> /x8f/xd4/xb4 <CJK>
-+<U7DE5> /x8f/xd4/xb5 <CJK>
-+<U7DE6> /x8f/xd4/xb6 <CJK>
-+<U7DEA> /x8f/xd4/xb7 <CJK>
-+<U7DEB> /x8f/xd4/xb8 <CJK>
-+<U7DED> /x8f/xd4/xb9 <CJK>
-+<U7DF1> /x8f/xd4/xba <CJK>
-+<U7DF5> /x8f/xd4/xbb <CJK>
-+<U7DF6> /x8f/xd4/xbc <CJK>
-+<U7DF9> /x8f/xd4/xbd <CJK>
-+<U7DFA> /x8f/xd4/xbe <CJK>
-+<U7E08> /x8f/xd4/xbf <CJK>
-+<U7E10> /x8f/xd4/xc0 <CJK>
-+<U7E11> /x8f/xd4/xc1 <CJK>
-+<U7E15> /x8f/xd4/xc2 <CJK>
-+<U7E17> /x8f/xd4/xc3 <CJK>
-+<U7E1C> /x8f/xd4/xc4 <CJK>
-+<U7E1D> /x8f/xd4/xc5 <CJK>
-+<U7E20> /x8f/xd4/xc6 <CJK>
-+<U7E27> /x8f/xd4/xc7 <CJK>
-+<U7E28> /x8f/xd4/xc8 <CJK>
-+<U7E2C> /x8f/xd4/xc9 <CJK>
-+<U7E2D> /x8f/xd4/xca <CJK>
-+<U7E2F> /x8f/xd4/xcb <CJK>
-+<U7E33> /x8f/xd4/xcc <CJK>
-+<U7E36> /x8f/xd4/xcd <CJK>
-+<U7E3F> /x8f/xd4/xce <CJK>
-+<U7E44> /x8f/xd4/xcf <CJK>
-+<U7E45> /x8f/xd4/xd0 <CJK>
-+<U7E47> /x8f/xd4/xd1 <CJK>
-+<U7E4E> /x8f/xd4/xd2 <CJK>
-+<U7E50> /x8f/xd4/xd3 <CJK>
-+<U7E52> /x8f/xd4/xd4 <CJK>
-+<U7E58> /x8f/xd4/xd5 <CJK>
-+<U7E5F> /x8f/xd4/xd6 <CJK>
-+<U7E61> /x8f/xd4/xd7 <CJK>
-+<U7E62> /x8f/xd4/xd8 <CJK>
-+<U7E65> /x8f/xd4/xd9 <CJK>
-+<U7E6B> /x8f/xd4/xda <CJK>
-+<U7E6E> /x8f/xd4/xdb <CJK>
-+<U7E6F> /x8f/xd4/xdc <CJK>
-+<U7E73> /x8f/xd4/xdd <CJK>
-+<U7E78> /x8f/xd4/xde <CJK>
-+<U7E7E> /x8f/xd4/xdf <CJK>
-+<U7E81> /x8f/xd4/xe0 <CJK>
-+<U7E86> /x8f/xd4/xe1 <CJK>
-+<U7E87> /x8f/xd4/xe2 <CJK>
-+<U7E8A> /x8f/xd4/xe3 <CJK>
-+<U7E8D> /x8f/xd4/xe4 <CJK>
-+<U7E91> /x8f/xd4/xe5 <CJK>
-+<U7E95> /x8f/xd4/xe6 <CJK>
-+<U7E98> /x8f/xd4/xe7 <CJK>
-+<U7E9A> /x8f/xd4/xe8 <CJK>
-+<U7E9D> /x8f/xd4/xe9 <CJK>
-+<U7E9E> /x8f/xd4/xea <CJK>
-+<U7F3C> /x8f/xd4/xeb <CJK>
-+<U7F3B> /x8f/xd4/xec <CJK>
-+<U7F3D> /x8f/xd4/xed <CJK>
-+<U7F3E> /x8f/xd4/xee <CJK>
-+<U7F3F> /x8f/xd4/xef <CJK>
-+<U7F43> /x8f/xd4/xf0 <CJK>
-+<U7F44> /x8f/xd4/xf1 <CJK>
-+<U7F47> /x8f/xd4/xf2 <CJK>
-+<U7F4F> /x8f/xd4/xf3 <CJK>
-+<U7F52> /x8f/xd4/xf4 <CJK>
-+<U7F53> /x8f/xd4/xf5 <CJK>
-+<U7F5B> /x8f/xd4/xf6 <CJK>
-+<U7F5C> /x8f/xd4/xf7 <CJK>
-+<U7F5D> /x8f/xd4/xf8 <CJK>
-+<U7F61> /x8f/xd4/xf9 <CJK>
-+<U7F63> /x8f/xd4/xfa <CJK>
-+<U7F64> /x8f/xd4/xfb <CJK>
-+<U7F65> /x8f/xd4/xfc <CJK>
-+<U7F66> /x8f/xd4/xfd <CJK>
-+<U7F6D> /x8f/xd4/xfe <CJK>
-+<U7F71> /x8f/xd5/xa1 <CJK>
-+<U7F7D> /x8f/xd5/xa2 <CJK>
-+<U7F7E> /x8f/xd5/xa3 <CJK>
-+<U7F7F> /x8f/xd5/xa4 <CJK>
-+<U7F80> /x8f/xd5/xa5 <CJK>
-+<U7F8B> /x8f/xd5/xa6 <CJK>
-+<U7F8D> /x8f/xd5/xa7 <CJK>
-+<U7F8F> /x8f/xd5/xa8 <CJK>
-+<U7F90> /x8f/xd5/xa9 <CJK>
-+<U7F91> /x8f/xd5/xaa <CJK>
-+<U7F96> /x8f/xd5/xab <CJK>
-+<U7F97> /x8f/xd5/xac <CJK>
-+<U7F9C> /x8f/xd5/xad <CJK>
-+<U7FA1> /x8f/xd5/xae <CJK>
-+<U7FA2> /x8f/xd5/xaf <CJK>
-+<U7FA6> /x8f/xd5/xb0 <CJK>
-+<U7FAA> /x8f/xd5/xb1 <CJK>
-+<U7FAD> /x8f/xd5/xb2 <CJK>
-+<U7FB4> /x8f/xd5/xb3 <CJK>
-+<U7FBC> /x8f/xd5/xb4 <CJK>
-+<U7FBF> /x8f/xd5/xb5 <CJK>
-+<U7FC0> /x8f/xd5/xb6 <CJK>
-+<U7FC3> /x8f/xd5/xb7 <CJK>
-+<U7FC8> /x8f/xd5/xb8 <CJK>
-+<U7FCE> /x8f/xd5/xb9 <CJK>
-+<U7FCF> /x8f/xd5/xba <CJK>
-+<U7FDB> /x8f/xd5/xbb <CJK>
-+<U7FDF> /x8f/xd5/xbc <CJK>
-+<U7FE3> /x8f/xd5/xbd <CJK>
-+<U7FE5> /x8f/xd5/xbe <CJK>
-+<U7FE8> /x8f/xd5/xbf <CJK>
-+<U7FEC> /x8f/xd5/xc0 <CJK>
-+<U7FEE> /x8f/xd5/xc1 <CJK>
-+<U7FEF> /x8f/xd5/xc2 <CJK>
-+<U7FF2> /x8f/xd5/xc3 <CJK>
-+<U7FFA> /x8f/xd5/xc4 <CJK>
-+<U7FFD> /x8f/xd5/xc5 <CJK>
-+<U7FFE> /x8f/xd5/xc6 <CJK>
-+<U7FFF> /x8f/xd5/xc7 <CJK>
-+<U8007> /x8f/xd5/xc8 <CJK>
-+<U8008> /x8f/xd5/xc9 <CJK>
-+<U800A> /x8f/xd5/xca <CJK>
-+<U800D> /x8f/xd5/xcb <CJK>
-+<U800E> /x8f/xd5/xcc <CJK>
-+<U800F> /x8f/xd5/xcd <CJK>
-+<U8011> /x8f/xd5/xce <CJK>
-+<U8013> /x8f/xd5/xcf <CJK>
-+<U8014> /x8f/xd5/xd0 <CJK>
-+<U8016> /x8f/xd5/xd1 <CJK>
-+<U801D> /x8f/xd5/xd2 <CJK>
-+<U801E> /x8f/xd5/xd3 <CJK>
-+<U801F> /x8f/xd5/xd4 <CJK>
-+<U8020> /x8f/xd5/xd5 <CJK>
-+<U8024> /x8f/xd5/xd6 <CJK>
-+<U8026> /x8f/xd5/xd7 <CJK>
-+<U802C> /x8f/xd5/xd8 <CJK>
-+<U802E> /x8f/xd5/xd9 <CJK>
-+<U8030> /x8f/xd5/xda <CJK>
-+<U8034> /x8f/xd5/xdb <CJK>
-+<U8035> /x8f/xd5/xdc <CJK>
-+<U8037> /x8f/xd5/xdd <CJK>
-+<U8039> /x8f/xd5/xde <CJK>
-+<U803A> /x8f/xd5/xdf <CJK>
-+<U803C> /x8f/xd5/xe0 <CJK>
-+<U803E> /x8f/xd5/xe1 <CJK>
-+<U8040> /x8f/xd5/xe2 <CJK>
-+<U8044> /x8f/xd5/xe3 <CJK>
-+<U8060> /x8f/xd5/xe4 <CJK>
-+<U8064> /x8f/xd5/xe5 <CJK>
-+<U8066> /x8f/xd5/xe6 <CJK>
-+<U806D> /x8f/xd5/xe7 <CJK>
-+<U8071> /x8f/xd5/xe8 <CJK>
-+<U8075> /x8f/xd5/xe9 <CJK>
-+<U8081> /x8f/xd5/xea <CJK>
-+<U8088> /x8f/xd5/xeb <CJK>
-+<U808E> /x8f/xd5/xec <CJK>
-+<U809C> /x8f/xd5/xed <CJK>
-+<U809E> /x8f/xd5/xee <CJK>
-+<U80A6> /x8f/xd5/xef <CJK>
-+<U80A7> /x8f/xd5/xf0 <CJK>
-+<U80AB> /x8f/xd5/xf1 <CJK>
-+<U80B8> /x8f/xd5/xf2 <CJK>
-+<U80B9> /x8f/xd5/xf3 <CJK>
-+<U80C8> /x8f/xd5/xf4 <CJK>
-+<U80CD> /x8f/xd5/xf5 <CJK>
-+<U80CF> /x8f/xd5/xf6 <CJK>
-+<U80D2> /x8f/xd5/xf7 <CJK>
-+<U80D4> /x8f/xd5/xf8 <CJK>
-+<U80D5> /x8f/xd5/xf9 <CJK>
-+<U80D7> /x8f/xd5/xfa <CJK>
-+<U80D8> /x8f/xd5/xfb <CJK>
-+<U80E0> /x8f/xd5/xfc <CJK>
-+<U80ED> /x8f/xd5/xfd <CJK>
-+<U80EE> /x8f/xd5/xfe <CJK>
-+<U80F0> /x8f/xd6/xa1 <CJK>
-+<U80F2> /x8f/xd6/xa2 <CJK>
-+<U80F3> /x8f/xd6/xa3 <CJK>
-+<U80F6> /x8f/xd6/xa4 <CJK>
-+<U80F9> /x8f/xd6/xa5 <CJK>
-+<U80FA> /x8f/xd6/xa6 <CJK>
-+<U80FE> /x8f/xd6/xa7 <CJK>
-+<U8103> /x8f/xd6/xa8 <CJK>
-+<U810B> /x8f/xd6/xa9 <CJK>
-+<U8116> /x8f/xd6/xaa <CJK>
-+<U8117> /x8f/xd6/xab <CJK>
-+<U8118> /x8f/xd6/xac <CJK>
-+<U811C> /x8f/xd6/xad <CJK>
-+<U811E> /x8f/xd6/xae <CJK>
-+<U8120> /x8f/xd6/xaf <CJK>
-+<U8124> /x8f/xd6/xb0 <CJK>
-+<U8127> /x8f/xd6/xb1 <CJK>
-+<U812C> /x8f/xd6/xb2 <CJK>
-+<U8130> /x8f/xd6/xb3 <CJK>
-+<U8135> /x8f/xd6/xb4 <CJK>
-+<U813A> /x8f/xd6/xb5 <CJK>
-+<U813C> /x8f/xd6/xb6 <CJK>
-+<U8145> /x8f/xd6/xb7 <CJK>
-+<U8147> /x8f/xd6/xb8 <CJK>
-+<U814A> /x8f/xd6/xb9 <CJK>
-+<U814C> /x8f/xd6/xba <CJK>
-+<U8152> /x8f/xd6/xbb <CJK>
-+<U8157> /x8f/xd6/xbc <CJK>
-+<U8160> /x8f/xd6/xbd <CJK>
-+<U8161> /x8f/xd6/xbe <CJK>
-+<U8167> /x8f/xd6/xbf <CJK>
-+<U8168> /x8f/xd6/xc0 <CJK>
-+<U8169> /x8f/xd6/xc1 <CJK>
-+<U816D> /x8f/xd6/xc2 <CJK>
-+<U816F> /x8f/xd6/xc3 <CJK>
-+<U8177> /x8f/xd6/xc4 <CJK>
-+<U8181> /x8f/xd6/xc5 <CJK>
-+<U8190> /x8f/xd6/xc6 <CJK>
-+<U8184> /x8f/xd6/xc7 <CJK>
-+<U8185> /x8f/xd6/xc8 <CJK>
-+<U8186> /x8f/xd6/xc9 <CJK>
-+<U818B> /x8f/xd6/xca <CJK>
-+<U818E> /x8f/xd6/xcb <CJK>
-+<U8196> /x8f/xd6/xcc <CJK>
-+<U8198> /x8f/xd6/xcd <CJK>
-+<U819B> /x8f/xd6/xce <CJK>
-+<U819E> /x8f/xd6/xcf <CJK>
-+<U81A2> /x8f/xd6/xd0 <CJK>
-+<U81AE> /x8f/xd6/xd1 <CJK>
-+<U81B2> /x8f/xd6/xd2 <CJK>
-+<U81B4> /x8f/xd6/xd3 <CJK>
-+<U81BB> /x8f/xd6/xd4 <CJK>
-+<U81CB> /x8f/xd6/xd5 <CJK>
-+<U81C3> /x8f/xd6/xd6 <CJK>
-+<U81C5> /x8f/xd6/xd7 <CJK>
-+<U81CA> /x8f/xd6/xd8 <CJK>
-+<U81CE> /x8f/xd6/xd9 <CJK>
-+<U81CF> /x8f/xd6/xda <CJK>
-+<U81D5> /x8f/xd6/xdb <CJK>
-+<U81D7> /x8f/xd6/xdc <CJK>
-+<U81DB> /x8f/xd6/xdd <CJK>
-+<U81DD> /x8f/xd6/xde <CJK>
-+<U81DE> /x8f/xd6/xdf <CJK>
-+<U81E1> /x8f/xd6/xe0 <CJK>
-+<U81E4> /x8f/xd6/xe1 <CJK>
-+<U81EB> /x8f/xd6/xe2 <CJK>
-+<U81EC> /x8f/xd6/xe3 <CJK>
-+<U81F0> /x8f/xd6/xe4 <CJK>
-+<U81F1> /x8f/xd6/xe5 <CJK>
-+<U81F2> /x8f/xd6/xe6 <CJK>
-+<U81F5> /x8f/xd6/xe7 <CJK>
-+<U81F6> /x8f/xd6/xe8 <CJK>
-+<U81F8> /x8f/xd6/xe9 <CJK>
-+<U81F9> /x8f/xd6/xea <CJK>
-+<U81FD> /x8f/xd6/xeb <CJK>
-+<U81FF> /x8f/xd6/xec <CJK>
-+<U8200> /x8f/xd6/xed <CJK>
-+<U8203> /x8f/xd6/xee <CJK>
-+<U820F> /x8f/xd6/xef <CJK>
-+<U8213> /x8f/xd6/xf0 <CJK>
-+<U8214> /x8f/xd6/xf1 <CJK>
-+<U8219> /x8f/xd6/xf2 <CJK>
-+<U821A> /x8f/xd6/xf3 <CJK>
-+<U821D> /x8f/xd6/xf4 <CJK>
-+<U8221> /x8f/xd6/xf5 <CJK>
-+<U8222> /x8f/xd6/xf6 <CJK>
-+<U8228> /x8f/xd6/xf7 <CJK>
-+<U8232> /x8f/xd6/xf8 <CJK>
-+<U8234> /x8f/xd6/xf9 <CJK>
-+<U823A> /x8f/xd6/xfa <CJK>
-+<U8243> /x8f/xd6/xfb <CJK>
-+<U8244> /x8f/xd6/xfc <CJK>
-+<U8245> /x8f/xd6/xfd <CJK>
-+<U8246> /x8f/xd6/xfe <CJK>
-+<U824B> /x8f/xd7/xa1 <CJK>
-+<U824E> /x8f/xd7/xa2 <CJK>
-+<U824F> /x8f/xd7/xa3 <CJK>
-+<U8251> /x8f/xd7/xa4 <CJK>
-+<U8256> /x8f/xd7/xa5 <CJK>
-+<U825C> /x8f/xd7/xa6 <CJK>
-+<U8260> /x8f/xd7/xa7 <CJK>
-+<U8263> /x8f/xd7/xa8 <CJK>
-+<U8267> /x8f/xd7/xa9 <CJK>
-+<U826D> /x8f/xd7/xaa <CJK>
-+<U8274> /x8f/xd7/xab <CJK>
-+<U827B> /x8f/xd7/xac <CJK>
-+<U827D> /x8f/xd7/xad <CJK>
-+<U827F> /x8f/xd7/xae <CJK>
-+<U8280> /x8f/xd7/xaf <CJK>
-+<U8281> /x8f/xd7/xb0 <CJK>
-+<U8283> /x8f/xd7/xb1 <CJK>
-+<U8284> /x8f/xd7/xb2 <CJK>
-+<U8287> /x8f/xd7/xb3 <CJK>
-+<U8289> /x8f/xd7/xb4 <CJK>
-+<U828A> /x8f/xd7/xb5 <CJK>
-+<U828E> /x8f/xd7/xb6 <CJK>
-+<U8291> /x8f/xd7/xb7 <CJK>
-+<U8294> /x8f/xd7/xb8 <CJK>
-+<U8296> /x8f/xd7/xb9 <CJK>
-+<U8298> /x8f/xd7/xba <CJK>
-+<U829A> /x8f/xd7/xbb <CJK>
-+<U829B> /x8f/xd7/xbc <CJK>
-+<U82A0> /x8f/xd7/xbd <CJK>
-+<U82A1> /x8f/xd7/xbe <CJK>
-+<U82A3> /x8f/xd7/xbf <CJK>
-+<U82A4> /x8f/xd7/xc0 <CJK>
-+<U82A7> /x8f/xd7/xc1 <CJK>
-+<U82A8> /x8f/xd7/xc2 <CJK>
-+<U82A9> /x8f/xd7/xc3 <CJK>
-+<U82AA> /x8f/xd7/xc4 <CJK>
-+<U82AE> /x8f/xd7/xc5 <CJK>
-+<U82B0> /x8f/xd7/xc6 <CJK>
-+<U82B2> /x8f/xd7/xc7 <CJK>
-+<U82B4> /x8f/xd7/xc8 <CJK>
-+<U82B7> /x8f/xd7/xc9 <CJK>
-+<U82BA> /x8f/xd7/xca <CJK>
-+<U82BC> /x8f/xd7/xcb <CJK>
-+<U82BE> /x8f/xd7/xcc <CJK>
-+<U82BF> /x8f/xd7/xcd <CJK>
-+<U82C6> /x8f/xd7/xce <CJK>
-+<U82D0> /x8f/xd7/xcf <CJK>
-+<U82D5> /x8f/xd7/xd0 <CJK>
-+<U82DA> /x8f/xd7/xd1 <CJK>
-+<U82E0> /x8f/xd7/xd2 <CJK>
-+<U82E2> /x8f/xd7/xd3 <CJK>
-+<U82E4> /x8f/xd7/xd4 <CJK>
-+<U82E8> /x8f/xd7/xd5 <CJK>
-+<U82EA> /x8f/xd7/xd6 <CJK>
-+<U82ED> /x8f/xd7/xd7 <CJK>
-+<U82EF> /x8f/xd7/xd8 <CJK>
-+<U82F6> /x8f/xd7/xd9 <CJK>
-+<U82F7> /x8f/xd7/xda <CJK>
-+<U82FD> /x8f/xd7/xdb <CJK>
-+<U82FE> /x8f/xd7/xdc <CJK>
-+<U8300> /x8f/xd7/xdd <CJK>
-+<U8301> /x8f/xd7/xde <CJK>
-+<U8307> /x8f/xd7/xdf <CJK>
-+<U8308> /x8f/xd7/xe0 <CJK>
-+<U830A> /x8f/xd7/xe1 <CJK>
-+<U830B> /x8f/xd7/xe2 <CJK>
-+<U8354> /x8f/xd7/xe3 <CJK>
-+<U831B> /x8f/xd7/xe4 <CJK>
-+<U831D> /x8f/xd7/xe5 <CJK>
-+<U831E> /x8f/xd7/xe6 <CJK>
-+<U831F> /x8f/xd7/xe7 <CJK>
-+<U8321> /x8f/xd7/xe8 <CJK>
-+<U8322> /x8f/xd7/xe9 <CJK>
-+<U832C> /x8f/xd7/xea <CJK>
-+<U832D> /x8f/xd7/xeb <CJK>
-+<U832E> /x8f/xd7/xec <CJK>
-+<U8330> /x8f/xd7/xed <CJK>
-+<U8333> /x8f/xd7/xee <CJK>
-+<U8337> /x8f/xd7/xef <CJK>
-+<U833A> /x8f/xd7/xf0 <CJK>
-+<U833C> /x8f/xd7/xf1 <CJK>
-+<U833D> /x8f/xd7/xf2 <CJK>
-+<U8342> /x8f/xd7/xf3 <CJK>
-+<U8343> /x8f/xd7/xf4 <CJK>
-+<U8344> /x8f/xd7/xf5 <CJK>
-+<U8347> /x8f/xd7/xf6 <CJK>
-+<U834D> /x8f/xd7/xf7 <CJK>
-+<U834E> /x8f/xd7/xf8 <CJK>
-+<U8351> /x8f/xd7/xf9 <CJK>
-+<U8355> /x8f/xd7/xfa <CJK>
-+<U8356> /x8f/xd7/xfb <CJK>
-+<U8357> /x8f/xd7/xfc <CJK>
-+<U8370> /x8f/xd7/xfd <CJK>
-+<U8378> /x8f/xd7/xfe <CJK>
-+<U837D> /x8f/xd8/xa1 <CJK>
-+<U837F> /x8f/xd8/xa2 <CJK>
-+<U8380> /x8f/xd8/xa3 <CJK>
-+<U8382> /x8f/xd8/xa4 <CJK>
-+<U8384> /x8f/xd8/xa5 <CJK>
-+<U8386> /x8f/xd8/xa6 <CJK>
-+<U838D> /x8f/xd8/xa7 <CJK>
-+<U8392> /x8f/xd8/xa8 <CJK>
-+<U8394> /x8f/xd8/xa9 <CJK>
-+<U8395> /x8f/xd8/xaa <CJK>
-+<U8398> /x8f/xd8/xab <CJK>
-+<U8399> /x8f/xd8/xac <CJK>
-+<U839B> /x8f/xd8/xad <CJK>
-+<U839C> /x8f/xd8/xae <CJK>
-+<U839D> /x8f/xd8/xaf <CJK>
-+<U83A6> /x8f/xd8/xb0 <CJK>
-+<U83A7> /x8f/xd8/xb1 <CJK>
-+<U83A9> /x8f/xd8/xb2 <CJK>
-+<U83AC> /x8f/xd8/xb3 <CJK>
-+<U83BE> /x8f/xd8/xb4 <CJK>
-+<U83BF> /x8f/xd8/xb5 <CJK>
-+<U83C0> /x8f/xd8/xb6 <CJK>
-+<U83C7> /x8f/xd8/xb7 <CJK>
-+<U83C9> /x8f/xd8/xb8 <CJK>
-+<U83CF> /x8f/xd8/xb9 <CJK>
-+<U83D0> /x8f/xd8/xba <CJK>
-+<U83D1> /x8f/xd8/xbb <CJK>
-+<U83D4> /x8f/xd8/xbc <CJK>
-+<U83DD> /x8f/xd8/xbd <CJK>
-+<U8353> /x8f/xd8/xbe <CJK>
-+<U83E8> /x8f/xd8/xbf <CJK>
-+<U83EA> /x8f/xd8/xc0 <CJK>
-+<U83F6> /x8f/xd8/xc1 <CJK>
-+<U83F8> /x8f/xd8/xc2 <CJK>
-+<U83F9> /x8f/xd8/xc3 <CJK>
-+<U83FC> /x8f/xd8/xc4 <CJK>
-+<U8401> /x8f/xd8/xc5 <CJK>
-+<U8406> /x8f/xd8/xc6 <CJK>
-+<U840A> /x8f/xd8/xc7 <CJK>
-+<U840F> /x8f/xd8/xc8 <CJK>
-+<U8411> /x8f/xd8/xc9 <CJK>
-+<U8415> /x8f/xd8/xca <CJK>
-+<U8419> /x8f/xd8/xcb <CJK>
-+<U83AD> /x8f/xd8/xcc <CJK>
-+<U842F> /x8f/xd8/xcd <CJK>
-+<U8439> /x8f/xd8/xce <CJK>
-+<U8445> /x8f/xd8/xcf <CJK>
-+<U8447> /x8f/xd8/xd0 <CJK>
-+<U8448> /x8f/xd8/xd1 <CJK>
-+<U844A> /x8f/xd8/xd2 <CJK>
-+<U844D> /x8f/xd8/xd3 <CJK>
-+<U844F> /x8f/xd8/xd4 <CJK>
-+<U8451> /x8f/xd8/xd5 <CJK>
-+<U8452> /x8f/xd8/xd6 <CJK>
-+<U8456> /x8f/xd8/xd7 <CJK>
-+<U8458> /x8f/xd8/xd8 <CJK>
-+<U8459> /x8f/xd8/xd9 <CJK>
-+<U845A> /x8f/xd8/xda <CJK>
-+<U845C> /x8f/xd8/xdb <CJK>
-+<U8460> /x8f/xd8/xdc <CJK>
-+<U8464> /x8f/xd8/xdd <CJK>
-+<U8465> /x8f/xd8/xde <CJK>
-+<U8467> /x8f/xd8/xdf <CJK>
-+<U846A> /x8f/xd8/xe0 <CJK>
-+<U8470> /x8f/xd8/xe1 <CJK>
-+<U8473> /x8f/xd8/xe2 <CJK>
-+<U8474> /x8f/xd8/xe3 <CJK>
-+<U8476> /x8f/xd8/xe4 <CJK>
-+<U8478> /x8f/xd8/xe5 <CJK>
-+<U847C> /x8f/xd8/xe6 <CJK>
-+<U847D> /x8f/xd8/xe7 <CJK>
-+<U8481> /x8f/xd8/xe8 <CJK>
-+<U8485> /x8f/xd8/xe9 <CJK>
-+<U8492> /x8f/xd8/xea <CJK>
-+<U8493> /x8f/xd8/xeb <CJK>
-+<U8495> /x8f/xd8/xec <CJK>
-+<U849E> /x8f/xd8/xed <CJK>
-+<U84A6> /x8f/xd8/xee <CJK>
-+<U84A8> /x8f/xd8/xef <CJK>
-+<U84A9> /x8f/xd8/xf0 <CJK>
-+<U84AA> /x8f/xd8/xf1 <CJK>
-+<U84AF> /x8f/xd8/xf2 <CJK>
-+<U84B1> /x8f/xd8/xf3 <CJK>
-+<U84B4> /x8f/xd8/xf4 <CJK>
-+<U84BA> /x8f/xd8/xf5 <CJK>
-+<U84BD> /x8f/xd8/xf6 <CJK>
-+<U84BE> /x8f/xd8/xf7 <CJK>
-+<U84C0> /x8f/xd8/xf8 <CJK>
-+<U84C2> /x8f/xd8/xf9 <CJK>
-+<U84C7> /x8f/xd8/xfa <CJK>
-+<U84C8> /x8f/xd8/xfb <CJK>
-+<U84CC> /x8f/xd8/xfc <CJK>
-+<U84CF> /x8f/xd8/xfd <CJK>
-+<U84D3> /x8f/xd8/xfe <CJK>
-+<U84DC> /x8f/xd9/xa1 <CJK>
-+<U84E7> /x8f/xd9/xa2 <CJK>
-+<U84EA> /x8f/xd9/xa3 <CJK>
-+<U84EF> /x8f/xd9/xa4 <CJK>
-+<U84F0> /x8f/xd9/xa5 <CJK>
-+<U84F1> /x8f/xd9/xa6 <CJK>
-+<U84F2> /x8f/xd9/xa7 <CJK>
-+<U84F7> /x8f/xd9/xa8 <CJK>
-+<U8532> /x8f/xd9/xa9 <CJK>
-+<U84FA> /x8f/xd9/xaa <CJK>
-+<U84FB> /x8f/xd9/xab <CJK>
-+<U84FD> /x8f/xd9/xac <CJK>
-+<U8502> /x8f/xd9/xad <CJK>
-+<U8503> /x8f/xd9/xae <CJK>
-+<U8507> /x8f/xd9/xaf <CJK>
-+<U850C> /x8f/xd9/xb0 <CJK>
-+<U850E> /x8f/xd9/xb1 <CJK>
-+<U8510> /x8f/xd9/xb2 <CJK>
-+<U851C> /x8f/xd9/xb3 <CJK>
-+<U851E> /x8f/xd9/xb4 <CJK>
-+<U8522> /x8f/xd9/xb5 <CJK>
-+<U8523> /x8f/xd9/xb6 <CJK>
-+<U8524> /x8f/xd9/xb7 <CJK>
-+<U8525> /x8f/xd9/xb8 <CJK>
-+<U8527> /x8f/xd9/xb9 <CJK>
-+<U852A> /x8f/xd9/xba <CJK>
-+<U852B> /x8f/xd9/xbb <CJK>
-+<U852F> /x8f/xd9/xbc <CJK>
-+<U8533> /x8f/xd9/xbd <CJK>
-+<U8534> /x8f/xd9/xbe <CJK>
-+<U8536> /x8f/xd9/xbf <CJK>
-+<U853F> /x8f/xd9/xc0 <CJK>
-+<U8546> /x8f/xd9/xc1 <CJK>
-+<U854F> /x8f/xd9/xc2 <CJK>
-+<U8550> /x8f/xd9/xc3 <CJK>
-+<U8551> /x8f/xd9/xc4 <CJK>
-+<U8552> /x8f/xd9/xc5 <CJK>
-+<U8553> /x8f/xd9/xc6 <CJK>
-+<U8556> /x8f/xd9/xc7 <CJK>
-+<U8559> /x8f/xd9/xc8 <CJK>
-+<U855C> /x8f/xd9/xc9 <CJK>
-+<U855D> /x8f/xd9/xca <CJK>
-+<U855E> /x8f/xd9/xcb <CJK>
-+<U855F> /x8f/xd9/xcc <CJK>
-+<U8560> /x8f/xd9/xcd <CJK>
-+<U8561> /x8f/xd9/xce <CJK>
-+<U8562> /x8f/xd9/xcf <CJK>
-+<U8564> /x8f/xd9/xd0 <CJK>
-+<U856B> /x8f/xd9/xd1 <CJK>
-+<U856F> /x8f/xd9/xd2 <CJK>
-+<U8579> /x8f/xd9/xd3 <CJK>
-+<U857A> /x8f/xd9/xd4 <CJK>
-+<U857B> /x8f/xd9/xd5 <CJK>
-+<U857D> /x8f/xd9/xd6 <CJK>
-+<U857F> /x8f/xd9/xd7 <CJK>
-+<U8581> /x8f/xd9/xd8 <CJK>
-+<U8585> /x8f/xd9/xd9 <CJK>
-+<U8586> /x8f/xd9/xda <CJK>
-+<U8589> /x8f/xd9/xdb <CJK>
-+<U858B> /x8f/xd9/xdc <CJK>
-+<U858C> /x8f/xd9/xdd <CJK>
-+<U858F> /x8f/xd9/xde <CJK>
-+<U8593> /x8f/xd9/xdf <CJK>
-+<U8598> /x8f/xd9/xe0 <CJK>
-+<U859D> /x8f/xd9/xe1 <CJK>
-+<U859F> /x8f/xd9/xe2 <CJK>
-+<U85A0> /x8f/xd9/xe3 <CJK>
-+<U85A2> /x8f/xd9/xe4 <CJK>
-+<U85A5> /x8f/xd9/xe5 <CJK>
-+<U85A7> /x8f/xd9/xe6 <CJK>
-+<U85B4> /x8f/xd9/xe7 <CJK>
-+<U85B6> /x8f/xd9/xe8 <CJK>
-+<U85B7> /x8f/xd9/xe9 <CJK>
-+<U85B8> /x8f/xd9/xea <CJK>
-+<U85BC> /x8f/xd9/xeb <CJK>
-+<U85BD> /x8f/xd9/xec <CJK>
-+<U85BE> /x8f/xd9/xed <CJK>
-+<U85BF> /x8f/xd9/xee <CJK>
-+<U85C2> /x8f/xd9/xef <CJK>
-+<U85C7> /x8f/xd9/xf0 <CJK>
-+<U85CA> /x8f/xd9/xf1 <CJK>
-+<U85CB> /x8f/xd9/xf2 <CJK>
-+<U85CE> /x8f/xd9/xf3 <CJK>
-+<U85AD> /x8f/xd9/xf4 <CJK>
-+<U85D8> /x8f/xd9/xf5 <CJK>
-+<U85DA> /x8f/xd9/xf6 <CJK>
-+<U85DF> /x8f/xd9/xf7 <CJK>
-+<U85E0> /x8f/xd9/xf8 <CJK>
-+<U85E6> /x8f/xd9/xf9 <CJK>
-+<U85E8> /x8f/xd9/xfa <CJK>
-+<U85ED> /x8f/xd9/xfb <CJK>
-+<U85F3> /x8f/xd9/xfc <CJK>
-+<U85F6> /x8f/xd9/xfd <CJK>
-+<U85FC> /x8f/xd9/xfe <CJK>
-+<U85FF> /x8f/xda/xa1 <CJK>
-+<U8600> /x8f/xda/xa2 <CJK>
-+<U8604> /x8f/xda/xa3 <CJK>
-+<U8605> /x8f/xda/xa4 <CJK>
-+<U860D> /x8f/xda/xa5 <CJK>
-+<U860E> /x8f/xda/xa6 <CJK>
-+<U8610> /x8f/xda/xa7 <CJK>
-+<U8611> /x8f/xda/xa8 <CJK>
-+<U8612> /x8f/xda/xa9 <CJK>
-+<U8618> /x8f/xda/xaa <CJK>
-+<U8619> /x8f/xda/xab <CJK>
-+<U861B> /x8f/xda/xac <CJK>
-+<U861E> /x8f/xda/xad <CJK>
-+<U8621> /x8f/xda/xae <CJK>
-+<U8627> /x8f/xda/xaf <CJK>
-+<U8629> /x8f/xda/xb0 <CJK>
-+<U8636> /x8f/xda/xb1 <CJK>
-+<U8638> /x8f/xda/xb2 <CJK>
-+<U863A> /x8f/xda/xb3 <CJK>
-+<U863C> /x8f/xda/xb4 <CJK>
-+<U863D> /x8f/xda/xb5 <CJK>
-+<U8640> /x8f/xda/xb6 <CJK>
-+<U8642> /x8f/xda/xb7 <CJK>
-+<U8646> /x8f/xda/xb8 <CJK>
-+<U8652> /x8f/xda/xb9 <CJK>
-+<U8653> /x8f/xda/xba <CJK>
-+<U8656> /x8f/xda/xbb <CJK>
-+<U8657> /x8f/xda/xbc <CJK>
-+<U8658> /x8f/xda/xbd <CJK>
-+<U8659> /x8f/xda/xbe <CJK>
-+<U865D> /x8f/xda/xbf <CJK>
-+<U8660> /x8f/xda/xc0 <CJK>
-+<U8661> /x8f/xda/xc1 <CJK>
-+<U8662> /x8f/xda/xc2 <CJK>
-+<U8663> /x8f/xda/xc3 <CJK>
-+<U8664> /x8f/xda/xc4 <CJK>
-+<U8669> /x8f/xda/xc5 <CJK>
-+<U866C> /x8f/xda/xc6 <CJK>
-+<U866F> /x8f/xda/xc7 <CJK>
-+<U8675> /x8f/xda/xc8 <CJK>
-+<U8676> /x8f/xda/xc9 <CJK>
-+<U8677> /x8f/xda/xca <CJK>
-+<U867A> /x8f/xda/xcb <CJK>
-+<U868D> /x8f/xda/xcc <CJK>
-+<U8691> /x8f/xda/xcd <CJK>
-+<U8696> /x8f/xda/xce <CJK>
-+<U8698> /x8f/xda/xcf <CJK>
-+<U869A> /x8f/xda/xd0 <CJK>
-+<U869C> /x8f/xda/xd1 <CJK>
-+<U86A1> /x8f/xda/xd2 <CJK>
-+<U86A6> /x8f/xda/xd3 <CJK>
-+<U86A7> /x8f/xda/xd4 <CJK>
-+<U86A8> /x8f/xda/xd5 <CJK>
-+<U86AD> /x8f/xda/xd6 <CJK>
-+<U86B1> /x8f/xda/xd7 <CJK>
-+<U86B3> /x8f/xda/xd8 <CJK>
-+<U86B4> /x8f/xda/xd9 <CJK>
-+<U86B5> /x8f/xda/xda <CJK>
-+<U86B7> /x8f/xda/xdb <CJK>
-+<U86B8> /x8f/xda/xdc <CJK>
-+<U86B9> /x8f/xda/xdd <CJK>
-+<U86BF> /x8f/xda/xde <CJK>
-+<U86C0> /x8f/xda/xdf <CJK>
-+<U86C1> /x8f/xda/xe0 <CJK>
-+<U86C3> /x8f/xda/xe1 <CJK>
-+<U86C5> /x8f/xda/xe2 <CJK>
-+<U86D1> /x8f/xda/xe3 <CJK>
-+<U86D2> /x8f/xda/xe4 <CJK>
-+<U86D5> /x8f/xda/xe5 <CJK>
-+<U86D7> /x8f/xda/xe6 <CJK>
-+<U86DA> /x8f/xda/xe7 <CJK>
-+<U86DC> /x8f/xda/xe8 <CJK>
-+<U86E0> /x8f/xda/xe9 <CJK>
-+<U86E3> /x8f/xda/xea <CJK>
-+<U86E5> /x8f/xda/xeb <CJK>
-+<U86E7> /x8f/xda/xec <CJK>
-+<U8688> /x8f/xda/xed <CJK>
-+<U86FA> /x8f/xda/xee <CJK>
-+<U86FC> /x8f/xda/xef <CJK>
-+<U86FD> /x8f/xda/xf0 <CJK>
-+<U8704> /x8f/xda/xf1 <CJK>
-+<U8705> /x8f/xda/xf2 <CJK>
-+<U8707> /x8f/xda/xf3 <CJK>
-+<U870B> /x8f/xda/xf4 <CJK>
-+<U870E> /x8f/xda/xf5 <CJK>
-+<U870F> /x8f/xda/xf6 <CJK>
-+<U8710> /x8f/xda/xf7 <CJK>
-+<U8713> /x8f/xda/xf8 <CJK>
-+<U8714> /x8f/xda/xf9 <CJK>
-+<U8719> /x8f/xda/xfa <CJK>
-+<U871E> /x8f/xda/xfb <CJK>
-+<U871F> /x8f/xda/xfc <CJK>
-+<U8721> /x8f/xda/xfd <CJK>
-+<U8723> /x8f/xda/xfe <CJK>
-+<U8728> /x8f/xdb/xa1 <CJK>
-+<U872E> /x8f/xdb/xa2 <CJK>
-+<U872F> /x8f/xdb/xa3 <CJK>
-+<U8731> /x8f/xdb/xa4 <CJK>
-+<U8732> /x8f/xdb/xa5 <CJK>
-+<U8739> /x8f/xdb/xa6 <CJK>
-+<U873A> /x8f/xdb/xa7 <CJK>
-+<U873C> /x8f/xdb/xa8 <CJK>
-+<U873D> /x8f/xdb/xa9 <CJK>
-+<U873E> /x8f/xdb/xaa <CJK>
-+<U8740> /x8f/xdb/xab <CJK>
-+<U8743> /x8f/xdb/xac <CJK>
-+<U8745> /x8f/xdb/xad <CJK>
-+<U874D> /x8f/xdb/xae <CJK>
-+<U8758> /x8f/xdb/xaf <CJK>
-+<U875D> /x8f/xdb/xb0 <CJK>
-+<U8761> /x8f/xdb/xb1 <CJK>
-+<U8764> /x8f/xdb/xb2 <CJK>
-+<U8765> /x8f/xdb/xb3 <CJK>
-+<U876F> /x8f/xdb/xb4 <CJK>
-+<U8771> /x8f/xdb/xb5 <CJK>
-+<U8772> /x8f/xdb/xb6 <CJK>
-+<U877B> /x8f/xdb/xb7 <CJK>
-+<U8783> /x8f/xdb/xb8 <CJK>
-+<U8784> /x8f/xdb/xb9 <CJK>
-+<U8785> /x8f/xdb/xba <CJK>
-+<U8786> /x8f/xdb/xbb <CJK>
-+<U8787> /x8f/xdb/xbc <CJK>
-+<U8788> /x8f/xdb/xbd <CJK>
-+<U8789> /x8f/xdb/xbe <CJK>
-+<U878B> /x8f/xdb/xbf <CJK>
-+<U878C> /x8f/xdb/xc0 <CJK>
-+<U8790> /x8f/xdb/xc1 <CJK>
-+<U8793> /x8f/xdb/xc2 <CJK>
-+<U8795> /x8f/xdb/xc3 <CJK>
-+<U8797> /x8f/xdb/xc4 <CJK>
-+<U8798> /x8f/xdb/xc5 <CJK>
-+<U8799> /x8f/xdb/xc6 <CJK>
-+<U879E> /x8f/xdb/xc7 <CJK>
-+<U87A0> /x8f/xdb/xc8 <CJK>
-+<U87A3> /x8f/xdb/xc9 <CJK>
-+<U87A7> /x8f/xdb/xca <CJK>
-+<U87AC> /x8f/xdb/xcb <CJK>
-+<U87AD> /x8f/xdb/xcc <CJK>
-+<U87AE> /x8f/xdb/xcd <CJK>
-+<U87B1> /x8f/xdb/xce <CJK>
-+<U87B5> /x8f/xdb/xcf <CJK>
-+<U87BE> /x8f/xdb/xd0 <CJK>
-+<U87BF> /x8f/xdb/xd1 <CJK>
-+<U87C1> /x8f/xdb/xd2 <CJK>
-+<U87C8> /x8f/xdb/xd3 <CJK>
-+<U87C9> /x8f/xdb/xd4 <CJK>
-+<U87CA> /x8f/xdb/xd5 <CJK>
-+<U87CE> /x8f/xdb/xd6 <CJK>
-+<U87D5> /x8f/xdb/xd7 <CJK>
-+<U87D6> /x8f/xdb/xd8 <CJK>
-+<U87D9> /x8f/xdb/xd9 <CJK>
-+<U87DA> /x8f/xdb/xda <CJK>
-+<U87DC> /x8f/xdb/xdb <CJK>
-+<U87DF> /x8f/xdb/xdc <CJK>
-+<U87E2> /x8f/xdb/xdd <CJK>
-+<U87E3> /x8f/xdb/xde <CJK>
-+<U87E4> /x8f/xdb/xdf <CJK>
-+<U87EA> /x8f/xdb/xe0 <CJK>
-+<U87EB> /x8f/xdb/xe1 <CJK>
-+<U87ED> /x8f/xdb/xe2 <CJK>
-+<U87F1> /x8f/xdb/xe3 <CJK>
-+<U87F3> /x8f/xdb/xe4 <CJK>
-+<U87F8> /x8f/xdb/xe5 <CJK>
-+<U87FA> /x8f/xdb/xe6 <CJK>
-+<U87FF> /x8f/xdb/xe7 <CJK>
-+<U8801> /x8f/xdb/xe8 <CJK>
-+<U8803> /x8f/xdb/xe9 <CJK>
-+<U8806> /x8f/xdb/xea <CJK>
-+<U8809> /x8f/xdb/xeb <CJK>
-+<U880A> /x8f/xdb/xec <CJK>
-+<U880B> /x8f/xdb/xed <CJK>
-+<U8810> /x8f/xdb/xee <CJK>
-+<U8819> /x8f/xdb/xef <CJK>
-+<U8812> /x8f/xdb/xf0 <CJK>
-+<U8813> /x8f/xdb/xf1 <CJK>
-+<U8814> /x8f/xdb/xf2 <CJK>
-+<U8818> /x8f/xdb/xf3 <CJK>
-+<U881A> /x8f/xdb/xf4 <CJK>
-+<U881B> /x8f/xdb/xf5 <CJK>
-+<U881C> /x8f/xdb/xf6 <CJK>
-+<U881E> /x8f/xdb/xf7 <CJK>
-+<U881F> /x8f/xdb/xf8 <CJK>
-+<U8828> /x8f/xdb/xf9 <CJK>
-+<U882D> /x8f/xdb/xfa <CJK>
-+<U882E> /x8f/xdb/xfb <CJK>
-+<U8830> /x8f/xdb/xfc <CJK>
-+<U8832> /x8f/xdb/xfd <CJK>
-+<U8835> /x8f/xdb/xfe <CJK>
-+<U883A> /x8f/xdc/xa1 <CJK>
-+<U883C> /x8f/xdc/xa2 <CJK>
-+<U8841> /x8f/xdc/xa3 <CJK>
-+<U8843> /x8f/xdc/xa4 <CJK>
-+<U8845> /x8f/xdc/xa5 <CJK>
-+<U8848> /x8f/xdc/xa6 <CJK>
-+<U8849> /x8f/xdc/xa7 <CJK>
-+<U884A> /x8f/xdc/xa8 <CJK>
-+<U884B> /x8f/xdc/xa9 <CJK>
-+<U884E> /x8f/xdc/xaa <CJK>
-+<U8851> /x8f/xdc/xab <CJK>
-+<U8855> /x8f/xdc/xac <CJK>
-+<U8856> /x8f/xdc/xad <CJK>
-+<U8858> /x8f/xdc/xae <CJK>
-+<U885A> /x8f/xdc/xaf <CJK>
-+<U885C> /x8f/xdc/xb0 <CJK>
-+<U885F> /x8f/xdc/xb1 <CJK>
-+<U8860> /x8f/xdc/xb2 <CJK>
-+<U8864> /x8f/xdc/xb3 <CJK>
-+<U8869> /x8f/xdc/xb4 <CJK>
-+<U8871> /x8f/xdc/xb5 <CJK>
-+<U8879> /x8f/xdc/xb6 <CJK>
-+<U887B> /x8f/xdc/xb7 <CJK>
-+<U8880> /x8f/xdc/xb8 <CJK>
-+<U8898> /x8f/xdc/xb9 <CJK>
-+<U889A> /x8f/xdc/xba <CJK>
-+<U889B> /x8f/xdc/xbb <CJK>
-+<U889C> /x8f/xdc/xbc <CJK>
-+<U889F> /x8f/xdc/xbd <CJK>
-+<U88A0> /x8f/xdc/xbe <CJK>
-+<U88A8> /x8f/xdc/xbf <CJK>
-+<U88AA> /x8f/xdc/xc0 <CJK>
-+<U88BA> /x8f/xdc/xc1 <CJK>
-+<U88BD> /x8f/xdc/xc2 <CJK>
-+<U88BE> /x8f/xdc/xc3 <CJK>
-+<U88C0> /x8f/xdc/xc4 <CJK>
-+<U88CA> /x8f/xdc/xc5 <CJK>
-+<U88CB> /x8f/xdc/xc6 <CJK>
-+<U88CC> /x8f/xdc/xc7 <CJK>
-+<U88CD> /x8f/xdc/xc8 <CJK>
-+<U88CE> /x8f/xdc/xc9 <CJK>
-+<U88D1> /x8f/xdc/xca <CJK>
-+<U88D2> /x8f/xdc/xcb <CJK>
-+<U88D3> /x8f/xdc/xcc <CJK>
-+<U88DB> /x8f/xdc/xcd <CJK>
-+<U88DE> /x8f/xdc/xce <CJK>
-+<U88E7> /x8f/xdc/xcf <CJK>
-+<U88EF> /x8f/xdc/xd0 <CJK>
-+<U88F0> /x8f/xdc/xd1 <CJK>
-+<U88F1> /x8f/xdc/xd2 <CJK>
-+<U88F5> /x8f/xdc/xd3 <CJK>
-+<U88F7> /x8f/xdc/xd4 <CJK>
-+<U8901> /x8f/xdc/xd5 <CJK>
-+<U8906> /x8f/xdc/xd6 <CJK>
-+<U890D> /x8f/xdc/xd7 <CJK>
-+<U890E> /x8f/xdc/xd8 <CJK>
-+<U890F> /x8f/xdc/xd9 <CJK>
-+<U8915> /x8f/xdc/xda <CJK>
-+<U8916> /x8f/xdc/xdb <CJK>
-+<U8918> /x8f/xdc/xdc <CJK>
-+<U8919> /x8f/xdc/xdd <CJK>
-+<U891A> /x8f/xdc/xde <CJK>
-+<U891C> /x8f/xdc/xdf <CJK>
-+<U8920> /x8f/xdc/xe0 <CJK>
-+<U8926> /x8f/xdc/xe1 <CJK>
-+<U8927> /x8f/xdc/xe2 <CJK>
-+<U8928> /x8f/xdc/xe3 <CJK>
-+<U8930> /x8f/xdc/xe4 <CJK>
-+<U8931> /x8f/xdc/xe5 <CJK>
-+<U8932> /x8f/xdc/xe6 <CJK>
-+<U8935> /x8f/xdc/xe7 <CJK>
-+<U8939> /x8f/xdc/xe8 <CJK>
-+<U893A> /x8f/xdc/xe9 <CJK>
-+<U893E> /x8f/xdc/xea <CJK>
-+<U8940> /x8f/xdc/xeb <CJK>
-+<U8942> /x8f/xdc/xec <CJK>
-+<U8945> /x8f/xdc/xed <CJK>
-+<U8946> /x8f/xdc/xee <CJK>
-+<U8949> /x8f/xdc/xef <CJK>
-+<U894F> /x8f/xdc/xf0 <CJK>
-+<U8952> /x8f/xdc/xf1 <CJK>
-+<U8957> /x8f/xdc/xf2 <CJK>
-+<U895A> /x8f/xdc/xf3 <CJK>
-+<U895B> /x8f/xdc/xf4 <CJK>
-+<U895C> /x8f/xdc/xf5 <CJK>
-+<U8961> /x8f/xdc/xf6 <CJK>
-+<U8962> /x8f/xdc/xf7 <CJK>
-+<U8963> /x8f/xdc/xf8 <CJK>
-+<U896B> /x8f/xdc/xf9 <CJK>
-+<U896E> /x8f/xdc/xfa <CJK>
-+<U8970> /x8f/xdc/xfb <CJK>
-+<U8973> /x8f/xdc/xfc <CJK>
-+<U8975> /x8f/xdc/xfd <CJK>
-+<U897A> /x8f/xdc/xfe <CJK>
-+<U897B> /x8f/xdd/xa1 <CJK>
-+<U897C> /x8f/xdd/xa2 <CJK>
-+<U897D> /x8f/xdd/xa3 <CJK>
-+<U8989> /x8f/xdd/xa4 <CJK>
-+<U898D> /x8f/xdd/xa5 <CJK>
-+<U8990> /x8f/xdd/xa6 <CJK>
-+<U8994> /x8f/xdd/xa7 <CJK>
-+<U8995> /x8f/xdd/xa8 <CJK>
-+<U899B> /x8f/xdd/xa9 <CJK>
-+<U899C> /x8f/xdd/xaa <CJK>
-+<U899F> /x8f/xdd/xab <CJK>
-+<U89A0> /x8f/xdd/xac <CJK>
-+<U89A5> /x8f/xdd/xad <CJK>
-+<U89B0> /x8f/xdd/xae <CJK>
-+<U89B4> /x8f/xdd/xaf <CJK>
-+<U89B5> /x8f/xdd/xb0 <CJK>
-+<U89B6> /x8f/xdd/xb1 <CJK>
-+<U89B7> /x8f/xdd/xb2 <CJK>
-+<U89BC> /x8f/xdd/xb3 <CJK>
-+<U89D4> /x8f/xdd/xb4 <CJK>
-+<U89D5> /x8f/xdd/xb5 <CJK>
-+<U89D6> /x8f/xdd/xb6 <CJK>
-+<U89D7> /x8f/xdd/xb7 <CJK>
-+<U89D8> /x8f/xdd/xb8 <CJK>
-+<U89E5> /x8f/xdd/xb9 <CJK>
-+<U89E9> /x8f/xdd/xba <CJK>
-+<U89EB> /x8f/xdd/xbb <CJK>
-+<U89ED> /x8f/xdd/xbc <CJK>
-+<U89F1> /x8f/xdd/xbd <CJK>
-+<U89F3> /x8f/xdd/xbe <CJK>
-+<U89F6> /x8f/xdd/xbf <CJK>
-+<U89F9> /x8f/xdd/xc0 <CJK>
-+<U89FD> /x8f/xdd/xc1 <CJK>
-+<U89FF> /x8f/xdd/xc2 <CJK>
-+<U8A04> /x8f/xdd/xc3 <CJK>
-+<U8A05> /x8f/xdd/xc4 <CJK>
-+<U8A07> /x8f/xdd/xc5 <CJK>
-+<U8A0F> /x8f/xdd/xc6 <CJK>
-+<U8A11> /x8f/xdd/xc7 <CJK>
-+<U8A12> /x8f/xdd/xc8 <CJK>
-+<U8A14> /x8f/xdd/xc9 <CJK>
-+<U8A15> /x8f/xdd/xca <CJK>
-+<U8A1E> /x8f/xdd/xcb <CJK>
-+<U8A20> /x8f/xdd/xcc <CJK>
-+<U8A22> /x8f/xdd/xcd <CJK>
-+<U8A24> /x8f/xdd/xce <CJK>
-+<U8A26> /x8f/xdd/xcf <CJK>
-+<U8A2B> /x8f/xdd/xd0 <CJK>
-+<U8A2C> /x8f/xdd/xd1 <CJK>
-+<U8A2F> /x8f/xdd/xd2 <CJK>
-+<U8A35> /x8f/xdd/xd3 <CJK>
-+<U8A37> /x8f/xdd/xd4 <CJK>
-+<U8A3D> /x8f/xdd/xd5 <CJK>
-+<U8A3E> /x8f/xdd/xd6 <CJK>
-+<U8A40> /x8f/xdd/xd7 <CJK>
-+<U8A43> /x8f/xdd/xd8 <CJK>
-+<U8A45> /x8f/xdd/xd9 <CJK>
-+<U8A47> /x8f/xdd/xda <CJK>
-+<U8A49> /x8f/xdd/xdb <CJK>
-+<U8A4D> /x8f/xdd/xdc <CJK>
-+<U8A4E> /x8f/xdd/xdd <CJK>
-+<U8A53> /x8f/xdd/xde <CJK>
-+<U8A56> /x8f/xdd/xdf <CJK>
-+<U8A57> /x8f/xdd/xe0 <CJK>
-+<U8A58> /x8f/xdd/xe1 <CJK>
-+<U8A5C> /x8f/xdd/xe2 <CJK>
-+<U8A5D> /x8f/xdd/xe3 <CJK>
-+<U8A61> /x8f/xdd/xe4 <CJK>
-+<U8A65> /x8f/xdd/xe5 <CJK>
-+<U8A67> /x8f/xdd/xe6 <CJK>
-+<U8A75> /x8f/xdd/xe7 <CJK>
-+<U8A76> /x8f/xdd/xe8 <CJK>
-+<U8A77> /x8f/xdd/xe9 <CJK>
-+<U8A79> /x8f/xdd/xea <CJK>
-+<U8A7A> /x8f/xdd/xeb <CJK>
-+<U8A7B> /x8f/xdd/xec <CJK>
-+<U8A7E> /x8f/xdd/xed <CJK>
-+<U8A7F> /x8f/xdd/xee <CJK>
-+<U8A80> /x8f/xdd/xef <CJK>
-+<U8A83> /x8f/xdd/xf0 <CJK>
-+<U8A86> /x8f/xdd/xf1 <CJK>
-+<U8A8B> /x8f/xdd/xf2 <CJK>
-+<U8A8F> /x8f/xdd/xf3 <CJK>
-+<U8A90> /x8f/xdd/xf4 <CJK>
-+<U8A92> /x8f/xdd/xf5 <CJK>
-+<U8A96> /x8f/xdd/xf6 <CJK>
-+<U8A97> /x8f/xdd/xf7 <CJK>
-+<U8A99> /x8f/xdd/xf8 <CJK>
-+<U8A9F> /x8f/xdd/xf9 <CJK>
-+<U8AA7> /x8f/xdd/xfa <CJK>
-+<U8AA9> /x8f/xdd/xfb <CJK>
-+<U8AAE> /x8f/xdd/xfc <CJK>
-+<U8AAF> /x8f/xdd/xfd <CJK>
-+<U8AB3> /x8f/xdd/xfe <CJK>
-+<U8AB6> /x8f/xde/xa1 <CJK>
-+<U8AB7> /x8f/xde/xa2 <CJK>
-+<U8ABB> /x8f/xde/xa3 <CJK>
-+<U8ABE> /x8f/xde/xa4 <CJK>
-+<U8AC3> /x8f/xde/xa5 <CJK>
-+<U8AC6> /x8f/xde/xa6 <CJK>
-+<U8AC8> /x8f/xde/xa7 <CJK>
-+<U8AC9> /x8f/xde/xa8 <CJK>
-+<U8ACA> /x8f/xde/xa9 <CJK>
-+<U8AD1> /x8f/xde/xaa <CJK>
-+<U8AD3> /x8f/xde/xab <CJK>
-+<U8AD4> /x8f/xde/xac <CJK>
-+<U8AD5> /x8f/xde/xad <CJK>
-+<U8AD7> /x8f/xde/xae <CJK>
-+<U8ADD> /x8f/xde/xaf <CJK>
-+<U8ADF> /x8f/xde/xb0 <CJK>
-+<U8AEC> /x8f/xde/xb1 <CJK>
-+<U8AF0> /x8f/xde/xb2 <CJK>
-+<U8AF4> /x8f/xde/xb3 <CJK>
-+<U8AF5> /x8f/xde/xb4 <CJK>
-+<U8AF6> /x8f/xde/xb5 <CJK>
-+<U8AFC> /x8f/xde/xb6 <CJK>
-+<U8AFF> /x8f/xde/xb7 <CJK>
-+<U8B05> /x8f/xde/xb8 <CJK>
-+<U8B06> /x8f/xde/xb9 <CJK>
-+<U8B0B> /x8f/xde/xba <CJK>
-+<U8B11> /x8f/xde/xbb <CJK>
-+<U8B1C> /x8f/xde/xbc <CJK>
-+<U8B1E> /x8f/xde/xbd <CJK>
-+<U8B1F> /x8f/xde/xbe <CJK>
-+<U8B0A> /x8f/xde/xbf <CJK>
-+<U8B2D> /x8f/xde/xc0 <CJK>
-+<U8B30> /x8f/xde/xc1 <CJK>
-+<U8B37> /x8f/xde/xc2 <CJK>
-+<U8B3C> /x8f/xde/xc3 <CJK>
-+<U8B42> /x8f/xde/xc4 <CJK>
-+<U8B43> /x8f/xde/xc5 <CJK>
-+<U8B44> /x8f/xde/xc6 <CJK>
-+<U8B45> /x8f/xde/xc7 <CJK>
-+<U8B46> /x8f/xde/xc8 <CJK>
-+<U8B48> /x8f/xde/xc9 <CJK>
-+<U8B52> /x8f/xde/xca <CJK>
-+<U8B53> /x8f/xde/xcb <CJK>
-+<U8B54> /x8f/xde/xcc <CJK>
-+<U8B59> /x8f/xde/xcd <CJK>
-+<U8B4D> /x8f/xde/xce <CJK>
-+<U8B5E> /x8f/xde/xcf <CJK>
-+<U8B63> /x8f/xde/xd0 <CJK>
-+<U8B6D> /x8f/xde/xd1 <CJK>
-+<U8B76> /x8f/xde/xd2 <CJK>
-+<U8B78> /x8f/xde/xd3 <CJK>
-+<U8B79> /x8f/xde/xd4 <CJK>
-+<U8B7C> /x8f/xde/xd5 <CJK>
-+<U8B7E> /x8f/xde/xd6 <CJK>
-+<U8B81> /x8f/xde/xd7 <CJK>
-+<U8B84> /x8f/xde/xd8 <CJK>
-+<U8B85> /x8f/xde/xd9 <CJK>
-+<U8B8B> /x8f/xde/xda <CJK>
-+<U8B8D> /x8f/xde/xdb <CJK>
-+<U8B8F> /x8f/xde/xdc <CJK>
-+<U8B94> /x8f/xde/xdd <CJK>
-+<U8B95> /x8f/xde/xde <CJK>
-+<U8B9C> /x8f/xde/xdf <CJK>
-+<U8B9E> /x8f/xde/xe0 <CJK>
-+<U8B9F> /x8f/xde/xe1 <CJK>
-+<U8C38> /x8f/xde/xe2 <CJK>
-+<U8C39> /x8f/xde/xe3 <CJK>
-+<U8C3D> /x8f/xde/xe4 <CJK>
-+<U8C3E> /x8f/xde/xe5 <CJK>
-+<U8C45> /x8f/xde/xe6 <CJK>
-+<U8C47> /x8f/xde/xe7 <CJK>
-+<U8C49> /x8f/xde/xe8 <CJK>
-+<U8C4B> /x8f/xde/xe9 <CJK>
-+<U8C4F> /x8f/xde/xea <CJK>
-+<U8C51> /x8f/xde/xeb <CJK>
-+<U8C53> /x8f/xde/xec <CJK>
-+<U8C54> /x8f/xde/xed <CJK>
-+<U8C57> /x8f/xde/xee <CJK>
-+<U8C58> /x8f/xde/xef <CJK>
-+<U8C5B> /x8f/xde/xf0 <CJK>
-+<U8C5D> /x8f/xde/xf1 <CJK>
-+<U8C59> /x8f/xde/xf2 <CJK>
-+<U8C63> /x8f/xde/xf3 <CJK>
-+<U8C64> /x8f/xde/xf4 <CJK>
-+<U8C66> /x8f/xde/xf5 <CJK>
-+<U8C68> /x8f/xde/xf6 <CJK>
-+<U8C69> /x8f/xde/xf7 <CJK>
-+<U8C6D> /x8f/xde/xf8 <CJK>
-+<U8C73> /x8f/xde/xf9 <CJK>
-+<U8C75> /x8f/xde/xfa <CJK>
-+<U8C76> /x8f/xde/xfb <CJK>
-+<U8C7B> /x8f/xde/xfc <CJK>
-+<U8C7E> /x8f/xde/xfd <CJK>
-+<U8C86> /x8f/xde/xfe <CJK>
-+<U8C87> /x8f/xdf/xa1 <CJK>
-+<U8C8B> /x8f/xdf/xa2 <CJK>
-+<U8C90> /x8f/xdf/xa3 <CJK>
-+<U8C92> /x8f/xdf/xa4 <CJK>
-+<U8C93> /x8f/xdf/xa5 <CJK>
-+<U8C99> /x8f/xdf/xa6 <CJK>
-+<U8C9B> /x8f/xdf/xa7 <CJK>
-+<U8C9C> /x8f/xdf/xa8 <CJK>
-+<U8CA4> /x8f/xdf/xa9 <CJK>
-+<U8CB9> /x8f/xdf/xaa <CJK>
-+<U8CBA> /x8f/xdf/xab <CJK>
-+<U8CC5> /x8f/xdf/xac <CJK>
-+<U8CC6> /x8f/xdf/xad <CJK>
-+<U8CC9> /x8f/xdf/xae <CJK>
-+<U8CCB> /x8f/xdf/xaf <CJK>
-+<U8CCF> /x8f/xdf/xb0 <CJK>
-+<U8CD6> /x8f/xdf/xb1 <CJK>
-+<U8CD5> /x8f/xdf/xb2 <CJK>
-+<U8CD9> /x8f/xdf/xb3 <CJK>
-+<U8CDD> /x8f/xdf/xb4 <CJK>
-+<U8CE1> /x8f/xdf/xb5 <CJK>
-+<U8CE8> /x8f/xdf/xb6 <CJK>
-+<U8CEC> /x8f/xdf/xb7 <CJK>
-+<U8CEF> /x8f/xdf/xb8 <CJK>
-+<U8CF0> /x8f/xdf/xb9 <CJK>
-+<U8CF2> /x8f/xdf/xba <CJK>
-+<U8CF5> /x8f/xdf/xbb <CJK>
-+<U8CF7> /x8f/xdf/xbc <CJK>
-+<U8CF8> /x8f/xdf/xbd <CJK>
-+<U8CFE> /x8f/xdf/xbe <CJK>
-+<U8CFF> /x8f/xdf/xbf <CJK>
-+<U8D01> /x8f/xdf/xc0 <CJK>
-+<U8D03> /x8f/xdf/xc1 <CJK>
-+<U8D09> /x8f/xdf/xc2 <CJK>
-+<U8D12> /x8f/xdf/xc3 <CJK>
-+<U8D17> /x8f/xdf/xc4 <CJK>
-+<U8D1B> /x8f/xdf/xc5 <CJK>
-+<U8D65> /x8f/xdf/xc6 <CJK>
-+<U8D69> /x8f/xdf/xc7 <CJK>
-+<U8D6C> /x8f/xdf/xc8 <CJK>
-+<U8D6E> /x8f/xdf/xc9 <CJK>
-+<U8D7F> /x8f/xdf/xca <CJK>
-+<U8D82> /x8f/xdf/xcb <CJK>
-+<U8D84> /x8f/xdf/xcc <CJK>
-+<U8D88> /x8f/xdf/xcd <CJK>
-+<U8D8D> /x8f/xdf/xce <CJK>
-+<U8D90> /x8f/xdf/xcf <CJK>
-+<U8D91> /x8f/xdf/xd0 <CJK>
-+<U8D95> /x8f/xdf/xd1 <CJK>
-+<U8D9E> /x8f/xdf/xd2 <CJK>
-+<U8D9F> /x8f/xdf/xd3 <CJK>
-+<U8DA0> /x8f/xdf/xd4 <CJK>
-+<U8DA6> /x8f/xdf/xd5 <CJK>
-+<U8DAB> /x8f/xdf/xd6 <CJK>
-+<U8DAC> /x8f/xdf/xd7 <CJK>
-+<U8DAF> /x8f/xdf/xd8 <CJK>
-+<U8DB2> /x8f/xdf/xd9 <CJK>
-+<U8DB5> /x8f/xdf/xda <CJK>
-+<U8DB7> /x8f/xdf/xdb <CJK>
-+<U8DB9> /x8f/xdf/xdc <CJK>
-+<U8DBB> /x8f/xdf/xdd <CJK>
-+<U8DC0> /x8f/xdf/xde <CJK>
-+<U8DC5> /x8f/xdf/xdf <CJK>
-+<U8DC6> /x8f/xdf/xe0 <CJK>
-+<U8DC7> /x8f/xdf/xe1 <CJK>
-+<U8DC8> /x8f/xdf/xe2 <CJK>
-+<U8DCA> /x8f/xdf/xe3 <CJK>
-+<U8DCE> /x8f/xdf/xe4 <CJK>
-+<U8DD1> /x8f/xdf/xe5 <CJK>
-+<U8DD4> /x8f/xdf/xe6 <CJK>
-+<U8DD5> /x8f/xdf/xe7 <CJK>
-+<U8DD7> /x8f/xdf/xe8 <CJK>
-+<U8DD9> /x8f/xdf/xe9 <CJK>
-+<U8DE4> /x8f/xdf/xea <CJK>
-+<U8DE5> /x8f/xdf/xeb <CJK>
-+<U8DE7> /x8f/xdf/xec <CJK>
-+<U8DEC> /x8f/xdf/xed <CJK>
-+<U8DF0> /x8f/xdf/xee <CJK>
-+<U8DBC> /x8f/xdf/xef <CJK>
-+<U8DF1> /x8f/xdf/xf0 <CJK>
-+<U8DF2> /x8f/xdf/xf1 <CJK>
-+<U8DF4> /x8f/xdf/xf2 <CJK>
-+<U8DFD> /x8f/xdf/xf3 <CJK>
-+<U8E01> /x8f/xdf/xf4 <CJK>
-+<U8E04> /x8f/xdf/xf5 <CJK>
-+<U8E05> /x8f/xdf/xf6 <CJK>
-+<U8E06> /x8f/xdf/xf7 <CJK>
-+<U8E0B> /x8f/xdf/xf8 <CJK>
-+<U8E11> /x8f/xdf/xf9 <CJK>
-+<U8E14> /x8f/xdf/xfa <CJK>
-+<U8E16> /x8f/xdf/xfb <CJK>
-+<U8E20> /x8f/xdf/xfc <CJK>
-+<U8E21> /x8f/xdf/xfd <CJK>
-+<U8E22> /x8f/xdf/xfe <CJK>
-+<U8E23> /x8f/xe0/xa1 <CJK>
-+<U8E26> /x8f/xe0/xa2 <CJK>
-+<U8E27> /x8f/xe0/xa3 <CJK>
-+<U8E31> /x8f/xe0/xa4 <CJK>
-+<U8E33> /x8f/xe0/xa5 <CJK>
-+<U8E36> /x8f/xe0/xa6 <CJK>
-+<U8E37> /x8f/xe0/xa7 <CJK>
-+<U8E38> /x8f/xe0/xa8 <CJK>
-+<U8E39> /x8f/xe0/xa9 <CJK>
-+<U8E3D> /x8f/xe0/xaa <CJK>
-+<U8E40> /x8f/xe0/xab <CJK>
-+<U8E41> /x8f/xe0/xac <CJK>
-+<U8E4B> /x8f/xe0/xad <CJK>
-+<U8E4D> /x8f/xe0/xae <CJK>
-+<U8E4E> /x8f/xe0/xaf <CJK>
-+<U8E4F> /x8f/xe0/xb0 <CJK>
-+<U8E54> /x8f/xe0/xb1 <CJK>
-+<U8E5B> /x8f/xe0/xb2 <CJK>
-+<U8E5C> /x8f/xe0/xb3 <CJK>
-+<U8E5D> /x8f/xe0/xb4 <CJK>
-+<U8E5E> /x8f/xe0/xb5 <CJK>
-+<U8E61> /x8f/xe0/xb6 <CJK>
-+<U8E62> /x8f/xe0/xb7 <CJK>
-+<U8E69> /x8f/xe0/xb8 <CJK>
-+<U8E6C> /x8f/xe0/xb9 <CJK>
-+<U8E6D> /x8f/xe0/xba <CJK>
-+<U8E6F> /x8f/xe0/xbb <CJK>
-+<U8E70> /x8f/xe0/xbc <CJK>
-+<U8E71> /x8f/xe0/xbd <CJK>
-+<U8E79> /x8f/xe0/xbe <CJK>
-+<U8E7A> /x8f/xe0/xbf <CJK>
-+<U8E7B> /x8f/xe0/xc0 <CJK>
-+<U8E82> /x8f/xe0/xc1 <CJK>
-+<U8E83> /x8f/xe0/xc2 <CJK>
-+<U8E89> /x8f/xe0/xc3 <CJK>
-+<U8E90> /x8f/xe0/xc4 <CJK>
-+<U8E92> /x8f/xe0/xc5 <CJK>
-+<U8E95> /x8f/xe0/xc6 <CJK>
-+<U8E9A> /x8f/xe0/xc7 <CJK>
-+<U8E9B> /x8f/xe0/xc8 <CJK>
-+<U8E9D> /x8f/xe0/xc9 <CJK>
-+<U8E9E> /x8f/xe0/xca <CJK>
-+<U8EA2> /x8f/xe0/xcb <CJK>
-+<U8EA7> /x8f/xe0/xcc <CJK>
-+<U8EA9> /x8f/xe0/xcd <CJK>
-+<U8EAD> /x8f/xe0/xce <CJK>
-+<U8EAE> /x8f/xe0/xcf <CJK>
-+<U8EB3> /x8f/xe0/xd0 <CJK>
-+<U8EB5> /x8f/xe0/xd1 <CJK>
-+<U8EBA> /x8f/xe0/xd2 <CJK>
-+<U8EBB> /x8f/xe0/xd3 <CJK>
-+<U8EC0> /x8f/xe0/xd4 <CJK>
-+<U8EC1> /x8f/xe0/xd5 <CJK>
-+<U8EC3> /x8f/xe0/xd6 <CJK>
-+<U8EC4> /x8f/xe0/xd7 <CJK>
-+<U8EC7> /x8f/xe0/xd8 <CJK>
-+<U8ECF> /x8f/xe0/xd9 <CJK>
-+<U8ED1> /x8f/xe0/xda <CJK>
-+<U8ED4> /x8f/xe0/xdb <CJK>
-+<U8EDC> /x8f/xe0/xdc <CJK>
-+<U8EE8> /x8f/xe0/xdd <CJK>
-+<U8EEE> /x8f/xe0/xde <CJK>
-+<U8EF0> /x8f/xe0/xdf <CJK>
-+<U8EF1> /x8f/xe0/xe0 <CJK>
-+<U8EF7> /x8f/xe0/xe1 <CJK>
-+<U8EF9> /x8f/xe0/xe2 <CJK>
-+<U8EFA> /x8f/xe0/xe3 <CJK>
-+<U8EED> /x8f/xe0/xe4 <CJK>
-+<U8F00> /x8f/xe0/xe5 <CJK>
-+<U8F02> /x8f/xe0/xe6 <CJK>
-+<U8F07> /x8f/xe0/xe7 <CJK>
-+<U8F08> /x8f/xe0/xe8 <CJK>
-+<U8F0F> /x8f/xe0/xe9 <CJK>
-+<U8F10> /x8f/xe0/xea <CJK>
-+<U8F16> /x8f/xe0/xeb <CJK>
-+<U8F17> /x8f/xe0/xec <CJK>
-+<U8F18> /x8f/xe0/xed <CJK>
-+<U8F1E> /x8f/xe0/xee <CJK>
-+<U8F20> /x8f/xe0/xef <CJK>
-+<U8F21> /x8f/xe0/xf0 <CJK>
-+<U8F23> /x8f/xe0/xf1 <CJK>
-+<U8F25> /x8f/xe0/xf2 <CJK>
-+<U8F27> /x8f/xe0/xf3 <CJK>
-+<U8F28> /x8f/xe0/xf4 <CJK>
-+<U8F2C> /x8f/xe0/xf5 <CJK>
-+<U8F2D> /x8f/xe0/xf6 <CJK>
-+<U8F2E> /x8f/xe0/xf7 <CJK>
-+<U8F34> /x8f/xe0/xf8 <CJK>
-+<U8F35> /x8f/xe0/xf9 <CJK>
-+<U8F36> /x8f/xe0/xfa <CJK>
-+<U8F37> /x8f/xe0/xfb <CJK>
-+<U8F3A> /x8f/xe0/xfc <CJK>
-+<U8F40> /x8f/xe0/xfd <CJK>
-+<U8F41> /x8f/xe0/xfe <CJK>
-+<U8F43> /x8f/xe1/xa1 <CJK>
-+<U8F47> /x8f/xe1/xa2 <CJK>
-+<U8F4F> /x8f/xe1/xa3 <CJK>
-+<U8F51> /x8f/xe1/xa4 <CJK>
-+<U8F52> /x8f/xe1/xa5 <CJK>
-+<U8F53> /x8f/xe1/xa6 <CJK>
-+<U8F54> /x8f/xe1/xa7 <CJK>
-+<U8F55> /x8f/xe1/xa8 <CJK>
-+<U8F58> /x8f/xe1/xa9 <CJK>
-+<U8F5D> /x8f/xe1/xaa <CJK>
-+<U8F5E> /x8f/xe1/xab <CJK>
-+<U8F65> /x8f/xe1/xac <CJK>
-+<U8F9D> /x8f/xe1/xad <CJK>
-+<U8FA0> /x8f/xe1/xae <CJK>
-+<U8FA1> /x8f/xe1/xaf <CJK>
-+<U8FA4> /x8f/xe1/xb0 <CJK>
-+<U8FA5> /x8f/xe1/xb1 <CJK>
-+<U8FA6> /x8f/xe1/xb2 <CJK>
-+<U8FB5> /x8f/xe1/xb3 <CJK>
-+<U8FB6> /x8f/xe1/xb4 <CJK>
-+<U8FB8> /x8f/xe1/xb5 <CJK>
-+<U8FBE> /x8f/xe1/xb6 <CJK>
-+<U8FC0> /x8f/xe1/xb7 <CJK>
-+<U8FC1> /x8f/xe1/xb8 <CJK>
-+<U8FC6> /x8f/xe1/xb9 <CJK>
-+<U8FCA> /x8f/xe1/xba <CJK>
-+<U8FCB> /x8f/xe1/xbb <CJK>
-+<U8FCD> /x8f/xe1/xbc <CJK>
-+<U8FD0> /x8f/xe1/xbd <CJK>
-+<U8FD2> /x8f/xe1/xbe <CJK>
-+<U8FD3> /x8f/xe1/xbf <CJK>
-+<U8FD5> /x8f/xe1/xc0 <CJK>
-+<U8FE0> /x8f/xe1/xc1 <CJK>
-+<U8FE3> /x8f/xe1/xc2 <CJK>
-+<U8FE4> /x8f/xe1/xc3 <CJK>
-+<U8FE8> /x8f/xe1/xc4 <CJK>
-+<U8FEE> /x8f/xe1/xc5 <CJK>
-+<U8FF1> /x8f/xe1/xc6 <CJK>
-+<U8FF5> /x8f/xe1/xc7 <CJK>
-+<U8FF6> /x8f/xe1/xc8 <CJK>
-+<U8FFB> /x8f/xe1/xc9 <CJK>
-+<U8FFE> /x8f/xe1/xca <CJK>
-+<U9002> /x8f/xe1/xcb <CJK>
-+<U9004> /x8f/xe1/xcc <CJK>
-+<U9008> /x8f/xe1/xcd <CJK>
-+<U900C> /x8f/xe1/xce <CJK>
-+<U9018> /x8f/xe1/xcf <CJK>
-+<U901B> /x8f/xe1/xd0 <CJK>
-+<U9028> /x8f/xe1/xd1 <CJK>
-+<U9029> /x8f/xe1/xd2 <CJK>
-+<U902F> /x8f/xe1/xd3 <CJK>
-+<U902A> /x8f/xe1/xd4 <CJK>
-+<U902C> /x8f/xe1/xd5 <CJK>
-+<U902D> /x8f/xe1/xd6 <CJK>
-+<U9033> /x8f/xe1/xd7 <CJK>
-+<U9034> /x8f/xe1/xd8 <CJK>
-+<U9037> /x8f/xe1/xd9 <CJK>
-+<U903F> /x8f/xe1/xda <CJK>
-+<U9043> /x8f/xe1/xdb <CJK>
-+<U9044> /x8f/xe1/xdc <CJK>
-+<U904C> /x8f/xe1/xdd <CJK>
-+<U905B> /x8f/xe1/xde <CJK>
-+<U905D> /x8f/xe1/xdf <CJK>
-+<U9062> /x8f/xe1/xe0 <CJK>
-+<U9066> /x8f/xe1/xe1 <CJK>
-+<U9067> /x8f/xe1/xe2 <CJK>
-+<U906C> /x8f/xe1/xe3 <CJK>
-+<U9070> /x8f/xe1/xe4 <CJK>
-+<U9074> /x8f/xe1/xe5 <CJK>
-+<U9079> /x8f/xe1/xe6 <CJK>
-+<U9085> /x8f/xe1/xe7 <CJK>
-+<U9088> /x8f/xe1/xe8 <CJK>
-+<U908B> /x8f/xe1/xe9 <CJK>
-+<U908C> /x8f/xe1/xea <CJK>
-+<U908E> /x8f/xe1/xeb <CJK>
-+<U9090> /x8f/xe1/xec <CJK>
-+<U9095> /x8f/xe1/xed <CJK>
-+<U9097> /x8f/xe1/xee <CJK>
-+<U9098> /x8f/xe1/xef <CJK>
-+<U9099> /x8f/xe1/xf0 <CJK>
-+<U909B> /x8f/xe1/xf1 <CJK>
-+<U90A0> /x8f/xe1/xf2 <CJK>
-+<U90A1> /x8f/xe1/xf3 <CJK>
-+<U90A2> /x8f/xe1/xf4 <CJK>
-+<U90A5> /x8f/xe1/xf5 <CJK>
-+<U90B0> /x8f/xe1/xf6 <CJK>
-+<U90B2> /x8f/xe1/xf7 <CJK>
-+<U90B3> /x8f/xe1/xf8 <CJK>
-+<U90B4> /x8f/xe1/xf9 <CJK>
-+<U90B6> /x8f/xe1/xfa <CJK>
-+<U90BD> /x8f/xe1/xfb <CJK>
-+<U90CC> /x8f/xe1/xfc <CJK>
-+<U90BE> /x8f/xe1/xfd <CJK>
-+<U90C3> /x8f/xe1/xfe <CJK>
-+<U90C4> /x8f/xe2/xa1 <CJK>
-+<U90C5> /x8f/xe2/xa2 <CJK>
-+<U90C7> /x8f/xe2/xa3 <CJK>
-+<U90C8> /x8f/xe2/xa4 <CJK>
-+<U90D5> /x8f/xe2/xa5 <CJK>
-+<U90D7> /x8f/xe2/xa6 <CJK>
-+<U90D8> /x8f/xe2/xa7 <CJK>
-+<U90D9> /x8f/xe2/xa8 <CJK>
-+<U90DC> /x8f/xe2/xa9 <CJK>
-+<U90DD> /x8f/xe2/xaa <CJK>
-+<U90DF> /x8f/xe2/xab <CJK>
-+<U90E5> /x8f/xe2/xac <CJK>
-+<U90D2> /x8f/xe2/xad <CJK>
-+<U90F6> /x8f/xe2/xae <CJK>
-+<U90EB> /x8f/xe2/xaf <CJK>
-+<U90EF> /x8f/xe2/xb0 <CJK>
-+<U90F0> /x8f/xe2/xb1 <CJK>
-+<U90F4> /x8f/xe2/xb2 <CJK>
-+<U90FE> /x8f/xe2/xb3 <CJK>
-+<U90FF> /x8f/xe2/xb4 <CJK>
-+<U9100> /x8f/xe2/xb5 <CJK>
-+<U9104> /x8f/xe2/xb6 <CJK>
-+<U9105> /x8f/xe2/xb7 <CJK>
-+<U9106> /x8f/xe2/xb8 <CJK>
-+<U9108> /x8f/xe2/xb9 <CJK>
-+<U910D> /x8f/xe2/xba <CJK>
-+<U9110> /x8f/xe2/xbb <CJK>
-+<U9114> /x8f/xe2/xbc <CJK>
-+<U9116> /x8f/xe2/xbd <CJK>
-+<U9117> /x8f/xe2/xbe <CJK>
-+<U9118> /x8f/xe2/xbf <CJK>
-+<U911A> /x8f/xe2/xc0 <CJK>
-+<U911C> /x8f/xe2/xc1 <CJK>
-+<U911E> /x8f/xe2/xc2 <CJK>
-+<U9120> /x8f/xe2/xc3 <CJK>
-+<U9125> /x8f/xe2/xc4 <CJK>
-+<U9122> /x8f/xe2/xc5 <CJK>
-+<U9123> /x8f/xe2/xc6 <CJK>
-+<U9127> /x8f/xe2/xc7 <CJK>
-+<U9129> /x8f/xe2/xc8 <CJK>
-+<U912E> /x8f/xe2/xc9 <CJK>
-+<U912F> /x8f/xe2/xca <CJK>
-+<U9131> /x8f/xe2/xcb <CJK>
-+<U9134> /x8f/xe2/xcc <CJK>
-+<U9136> /x8f/xe2/xcd <CJK>
-+<U9137> /x8f/xe2/xce <CJK>
-+<U9139> /x8f/xe2/xcf <CJK>
-+<U913A> /x8f/xe2/xd0 <CJK>
-+<U913C> /x8f/xe2/xd1 <CJK>
-+<U913D> /x8f/xe2/xd2 <CJK>
-+<U9143> /x8f/xe2/xd3 <CJK>
-+<U9147> /x8f/xe2/xd4 <CJK>
-+<U9148> /x8f/xe2/xd5 <CJK>
-+<U914F> /x8f/xe2/xd6 <CJK>
-+<U9153> /x8f/xe2/xd7 <CJK>
-+<U9157> /x8f/xe2/xd8 <CJK>
-+<U9159> /x8f/xe2/xd9 <CJK>
-+<U915A> /x8f/xe2/xda <CJK>
-+<U915B> /x8f/xe2/xdb <CJK>
-+<U9161> /x8f/xe2/xdc <CJK>
-+<U9164> /x8f/xe2/xdd <CJK>
-+<U9167> /x8f/xe2/xde <CJK>
-+<U916D> /x8f/xe2/xdf <CJK>
-+<U9174> /x8f/xe2/xe0 <CJK>
-+<U9179> /x8f/xe2/xe1 <CJK>
-+<U917A> /x8f/xe2/xe2 <CJK>
-+<U917B> /x8f/xe2/xe3 <CJK>
-+<U9181> /x8f/xe2/xe4 <CJK>
-+<U9183> /x8f/xe2/xe5 <CJK>
-+<U9185> /x8f/xe2/xe6 <CJK>
-+<U9186> /x8f/xe2/xe7 <CJK>
-+<U918A> /x8f/xe2/xe8 <CJK>
-+<U918E> /x8f/xe2/xe9 <CJK>
-+<U9191> /x8f/xe2/xea <CJK>
-+<U9193> /x8f/xe2/xeb <CJK>
-+<U9194> /x8f/xe2/xec <CJK>
-+<U9195> /x8f/xe2/xed <CJK>
-+<U9198> /x8f/xe2/xee <CJK>
-+<U919E> /x8f/xe2/xef <CJK>
-+<U91A1> /x8f/xe2/xf0 <CJK>
-+<U91A6> /x8f/xe2/xf1 <CJK>
-+<U91A8> /x8f/xe2/xf2 <CJK>
-+<U91AC> /x8f/xe2/xf3 <CJK>
-+<U91AD> /x8f/xe2/xf4 <CJK>
-+<U91AE> /x8f/xe2/xf5 <CJK>
-+<U91B0> /x8f/xe2/xf6 <CJK>
-+<U91B1> /x8f/xe2/xf7 <CJK>
-+<U91B2> /x8f/xe2/xf8 <CJK>
-+<U91B3> /x8f/xe2/xf9 <CJK>
-+<U91B6> /x8f/xe2/xfa <CJK>
-+<U91BB> /x8f/xe2/xfb <CJK>
-+<U91BC> /x8f/xe2/xfc <CJK>
-+<U91BD> /x8f/xe2/xfd <CJK>
-+<U91BF> /x8f/xe2/xfe <CJK>
-+<U91C2> /x8f/xe3/xa1 <CJK>
-+<U91C3> /x8f/xe3/xa2 <CJK>
-+<U91C5> /x8f/xe3/xa3 <CJK>
-+<U91D3> /x8f/xe3/xa4 <CJK>
-+<U91D4> /x8f/xe3/xa5 <CJK>
-+<U91D7> /x8f/xe3/xa6 <CJK>
-+<U91D9> /x8f/xe3/xa7 <CJK>
-+<U91DA> /x8f/xe3/xa8 <CJK>
-+<U91DE> /x8f/xe3/xa9 <CJK>
-+<U91E4> /x8f/xe3/xaa <CJK>
-+<U91E5> /x8f/xe3/xab <CJK>
-+<U91E9> /x8f/xe3/xac <CJK>
-+<U91EA> /x8f/xe3/xad <CJK>
-+<U91EC> /x8f/xe3/xae <CJK>
-+<U91ED> /x8f/xe3/xaf <CJK>
-+<U91EE> /x8f/xe3/xb0 <CJK>
-+<U91EF> /x8f/xe3/xb1 <CJK>
-+<U91F0> /x8f/xe3/xb2 <CJK>
-+<U91F1> /x8f/xe3/xb3 <CJK>
-+<U91F7> /x8f/xe3/xb4 <CJK>
-+<U91F9> /x8f/xe3/xb5 <CJK>
-+<U91FB> /x8f/xe3/xb6 <CJK>
-+<U91FD> /x8f/xe3/xb7 <CJK>
-+<U9200> /x8f/xe3/xb8 <CJK>
-+<U9201> /x8f/xe3/xb9 <CJK>
-+<U9204> /x8f/xe3/xba <CJK>
-+<U9205> /x8f/xe3/xbb <CJK>
-+<U9206> /x8f/xe3/xbc <CJK>
-+<U9207> /x8f/xe3/xbd <CJK>
-+<U9209> /x8f/xe3/xbe <CJK>
-+<U920A> /x8f/xe3/xbf <CJK>
-+<U920C> /x8f/xe3/xc0 <CJK>
-+<U9210> /x8f/xe3/xc1 <CJK>
-+<U9212> /x8f/xe3/xc2 <CJK>
-+<U9213> /x8f/xe3/xc3 <CJK>
-+<U9216> /x8f/xe3/xc4 <CJK>
-+<U9218> /x8f/xe3/xc5 <CJK>
-+<U921C> /x8f/xe3/xc6 <CJK>
-+<U921D> /x8f/xe3/xc7 <CJK>
-+<U9223> /x8f/xe3/xc8 <CJK>
-+<U9224> /x8f/xe3/xc9 <CJK>
-+<U9225> /x8f/xe3/xca <CJK>
-+<U9226> /x8f/xe3/xcb <CJK>
-+<U9228> /x8f/xe3/xcc <CJK>
-+<U922E> /x8f/xe3/xcd <CJK>
-+<U922F> /x8f/xe3/xce <CJK>
-+<U9230> /x8f/xe3/xcf <CJK>
-+<U9233> /x8f/xe3/xd0 <CJK>
-+<U9235> /x8f/xe3/xd1 <CJK>
-+<U9236> /x8f/xe3/xd2 <CJK>
-+<U9238> /x8f/xe3/xd3 <CJK>
-+<U9239> /x8f/xe3/xd4 <CJK>
-+<U923A> /x8f/xe3/xd5 <CJK>
-+<U923C> /x8f/xe3/xd6 <CJK>
-+<U923E> /x8f/xe3/xd7 <CJK>
-+<U9240> /x8f/xe3/xd8 <CJK>
-+<U9242> /x8f/xe3/xd9 <CJK>
-+<U9243> /x8f/xe3/xda <CJK>
-+<U9246> /x8f/xe3/xdb <CJK>
-+<U9247> /x8f/xe3/xdc <CJK>
-+<U924A> /x8f/xe3/xdd <CJK>
-+<U924D> /x8f/xe3/xde <CJK>
-+<U924E> /x8f/xe3/xdf <CJK>
-+<U924F> /x8f/xe3/xe0 <CJK>
-+<U9251> /x8f/xe3/xe1 <CJK>
-+<U9258> /x8f/xe3/xe2 <CJK>
-+<U9259> /x8f/xe3/xe3 <CJK>
-+<U925C> /x8f/xe3/xe4 <CJK>
-+<U925D> /x8f/xe3/xe5 <CJK>
-+<U9260> /x8f/xe3/xe6 <CJK>
-+<U9261> /x8f/xe3/xe7 <CJK>
-+<U9265> /x8f/xe3/xe8 <CJK>
-+<U9267> /x8f/xe3/xe9 <CJK>
-+<U9268> /x8f/xe3/xea <CJK>
-+<U9269> /x8f/xe3/xeb <CJK>
-+<U926E> /x8f/xe3/xec <CJK>
-+<U926F> /x8f/xe3/xed <CJK>
-+<U9270> /x8f/xe3/xee <CJK>
-+<U9275> /x8f/xe3/xef <CJK>
-+<U9276> /x8f/xe3/xf0 <CJK>
-+<U9277> /x8f/xe3/xf1 <CJK>
-+<U9278> /x8f/xe3/xf2 <CJK>
-+<U9279> /x8f/xe3/xf3 <CJK>
-+<U927B> /x8f/xe3/xf4 <CJK>
-+<U927C> /x8f/xe3/xf5 <CJK>
-+<U927D> /x8f/xe3/xf6 <CJK>
-+<U927F> /x8f/xe3/xf7 <CJK>
-+<U9288> /x8f/xe3/xf8 <CJK>
-+<U9289> /x8f/xe3/xf9 <CJK>
-+<U928A> /x8f/xe3/xfa <CJK>
-+<U928D> /x8f/xe3/xfb <CJK>
-+<U928E> /x8f/xe3/xfc <CJK>
-+<U9292> /x8f/xe3/xfd <CJK>
-+<U9297> /x8f/xe3/xfe <CJK>
-+<U9299> /x8f/xe4/xa1 <CJK>
-+<U929F> /x8f/xe4/xa2 <CJK>
-+<U92A0> /x8f/xe4/xa3 <CJK>
-+<U92A4> /x8f/xe4/xa4 <CJK>
-+<U92A5> /x8f/xe4/xa5 <CJK>
-+<U92A7> /x8f/xe4/xa6 <CJK>
-+<U92A8> /x8f/xe4/xa7 <CJK>
-+<U92AB> /x8f/xe4/xa8 <CJK>
-+<U92AF> /x8f/xe4/xa9 <CJK>
-+<U92B2> /x8f/xe4/xaa <CJK>
-+<U92B6> /x8f/xe4/xab <CJK>
-+<U92B8> /x8f/xe4/xac <CJK>
-+<U92BA> /x8f/xe4/xad <CJK>
-+<U92BB> /x8f/xe4/xae <CJK>
-+<U92BC> /x8f/xe4/xaf <CJK>
-+<U92BD> /x8f/xe4/xb0 <CJK>
-+<U92BF> /x8f/xe4/xb1 <CJK>
-+<U92C0> /x8f/xe4/xb2 <CJK>
-+<U92C1> /x8f/xe4/xb3 <CJK>
-+<U92C2> /x8f/xe4/xb4 <CJK>
-+<U92C3> /x8f/xe4/xb5 <CJK>
-+<U92C5> /x8f/xe4/xb6 <CJK>
-+<U92C6> /x8f/xe4/xb7 <CJK>
-+<U92C7> /x8f/xe4/xb8 <CJK>
-+<U92C8> /x8f/xe4/xb9 <CJK>
-+<U92CB> /x8f/xe4/xba <CJK>
-+<U92CC> /x8f/xe4/xbb <CJK>
-+<U92CD> /x8f/xe4/xbc <CJK>
-+<U92CE> /x8f/xe4/xbd <CJK>
-+<U92D0> /x8f/xe4/xbe <CJK>
-+<U92D3> /x8f/xe4/xbf <CJK>
-+<U92D5> /x8f/xe4/xc0 <CJK>
-+<U92D7> /x8f/xe4/xc1 <CJK>
-+<U92D8> /x8f/xe4/xc2 <CJK>
-+<U92D9> /x8f/xe4/xc3 <CJK>
-+<U92DC> /x8f/xe4/xc4 <CJK>
-+<U92DD> /x8f/xe4/xc5 <CJK>
-+<U92DF> /x8f/xe4/xc6 <CJK>
-+<U92E0> /x8f/xe4/xc7 <CJK>
-+<U92E1> /x8f/xe4/xc8 <CJK>
-+<U92E3> /x8f/xe4/xc9 <CJK>
-+<U92E5> /x8f/xe4/xca <CJK>
-+<U92E7> /x8f/xe4/xcb <CJK>
-+<U92E8> /x8f/xe4/xcc <CJK>
-+<U92EC> /x8f/xe4/xcd <CJK>
-+<U92EE> /x8f/xe4/xce <CJK>
-+<U92F0> /x8f/xe4/xcf <CJK>
-+<U92F9> /x8f/xe4/xd0 <CJK>
-+<U92FB> /x8f/xe4/xd1 <CJK>
-+<U92FF> /x8f/xe4/xd2 <CJK>
-+<U9300> /x8f/xe4/xd3 <CJK>
-+<U9302> /x8f/xe4/xd4 <CJK>
-+<U9308> /x8f/xe4/xd5 <CJK>
-+<U930D> /x8f/xe4/xd6 <CJK>
-+<U9311> /x8f/xe4/xd7 <CJK>
-+<U9314> /x8f/xe4/xd8 <CJK>
-+<U9315> /x8f/xe4/xd9 <CJK>
-+<U931C> /x8f/xe4/xda <CJK>
-+<U931D> /x8f/xe4/xdb <CJK>
-+<U931E> /x8f/xe4/xdc <CJK>
-+<U931F> /x8f/xe4/xdd <CJK>
-+<U9321> /x8f/xe4/xde <CJK>
-+<U9324> /x8f/xe4/xdf <CJK>
-+<U9325> /x8f/xe4/xe0 <CJK>
-+<U9327> /x8f/xe4/xe1 <CJK>
-+<U9329> /x8f/xe4/xe2 <CJK>
-+<U932A> /x8f/xe4/xe3 <CJK>
-+<U9333> /x8f/xe4/xe4 <CJK>
-+<U9334> /x8f/xe4/xe5 <CJK>
-+<U9336> /x8f/xe4/xe6 <CJK>
-+<U9337> /x8f/xe4/xe7 <CJK>
-+<U9347> /x8f/xe4/xe8 <CJK>
-+<U9348> /x8f/xe4/xe9 <CJK>
-+<U9349> /x8f/xe4/xea <CJK>
-+<U9350> /x8f/xe4/xeb <CJK>
-+<U9351> /x8f/xe4/xec <CJK>
-+<U9352> /x8f/xe4/xed <CJK>
-+<U9355> /x8f/xe4/xee <CJK>
-+<U9357> /x8f/xe4/xef <CJK>
-+<U9358> /x8f/xe4/xf0 <CJK>
-+<U935A> /x8f/xe4/xf1 <CJK>
-+<U935E> /x8f/xe4/xf2 <CJK>
-+<U9364> /x8f/xe4/xf3 <CJK>
-+<U9365> /x8f/xe4/xf4 <CJK>
-+<U9367> /x8f/xe4/xf5 <CJK>
-+<U9369> /x8f/xe4/xf6 <CJK>
-+<U936A> /x8f/xe4/xf7 <CJK>
-+<U936D> /x8f/xe4/xf8 <CJK>
-+<U936F> /x8f/xe4/xf9 <CJK>
-+<U9370> /x8f/xe4/xfa <CJK>
-+<U9371> /x8f/xe4/xfb <CJK>
-+<U9373> /x8f/xe4/xfc <CJK>
-+<U9374> /x8f/xe4/xfd <CJK>
-+<U9376> /x8f/xe4/xfe <CJK>
-+<U937A> /x8f/xe5/xa1 <CJK>
-+<U937D> /x8f/xe5/xa2 <CJK>
-+<U937F> /x8f/xe5/xa3 <CJK>
-+<U9380> /x8f/xe5/xa4 <CJK>
-+<U9381> /x8f/xe5/xa5 <CJK>
-+<U9382> /x8f/xe5/xa6 <CJK>
-+<U9388> /x8f/xe5/xa7 <CJK>
-+<U938A> /x8f/xe5/xa8 <CJK>
-+<U938B> /x8f/xe5/xa9 <CJK>
-+<U938D> /x8f/xe5/xaa <CJK>
-+<U938F> /x8f/xe5/xab <CJK>
-+<U9392> /x8f/xe5/xac <CJK>
-+<U9395> /x8f/xe5/xad <CJK>
-+<U9398> /x8f/xe5/xae <CJK>
-+<U939B> /x8f/xe5/xaf <CJK>
-+<U939E> /x8f/xe5/xb0 <CJK>
-+<U93A1> /x8f/xe5/xb1 <CJK>
-+<U93A3> /x8f/xe5/xb2 <CJK>
-+<U93A4> /x8f/xe5/xb3 <CJK>
-+<U93A6> /x8f/xe5/xb4 <CJK>
-+<U93A8> /x8f/xe5/xb5 <CJK>
-+<U93AB> /x8f/xe5/xb6 <CJK>
-+<U93B4> /x8f/xe5/xb7 <CJK>
-+<U93B5> /x8f/xe5/xb8 <CJK>
-+<U93B6> /x8f/xe5/xb9 <CJK>
-+<U93BA> /x8f/xe5/xba <CJK>
-+<U93A9> /x8f/xe5/xbb <CJK>
-+<U93C1> /x8f/xe5/xbc <CJK>
-+<U93C4> /x8f/xe5/xbd <CJK>
-+<U93C5> /x8f/xe5/xbe <CJK>
-+<U93C6> /x8f/xe5/xbf <CJK>
-+<U93C7> /x8f/xe5/xc0 <CJK>
-+<U93C9> /x8f/xe5/xc1 <CJK>
-+<U93CA> /x8f/xe5/xc2 <CJK>
-+<U93CB> /x8f/xe5/xc3 <CJK>
-+<U93CC> /x8f/xe5/xc4 <CJK>
-+<U93CD> /x8f/xe5/xc5 <CJK>
-+<U93D3> /x8f/xe5/xc6 <CJK>
-+<U93D9> /x8f/xe5/xc7 <CJK>
-+<U93DC> /x8f/xe5/xc8 <CJK>
-+<U93DE> /x8f/xe5/xc9 <CJK>
-+<U93DF> /x8f/xe5/xca <CJK>
-+<U93E2> /x8f/xe5/xcb <CJK>
-+<U93E6> /x8f/xe5/xcc <CJK>
-+<U93E7> /x8f/xe5/xcd <CJK>
-+<U93F9> /x8f/xe5/xce <CJK>
-+<U93F7> /x8f/xe5/xcf <CJK>
-+<U93F8> /x8f/xe5/xd0 <CJK>
-+<U93FA> /x8f/xe5/xd1 <CJK>
-+<U93FB> /x8f/xe5/xd2 <CJK>
-+<U93FD> /x8f/xe5/xd3 <CJK>
-+<U9401> /x8f/xe5/xd4 <CJK>
-+<U9402> /x8f/xe5/xd5 <CJK>
-+<U9404> /x8f/xe5/xd6 <CJK>
-+<U9408> /x8f/xe5/xd7 <CJK>
-+<U9409> /x8f/xe5/xd8 <CJK>
-+<U940D> /x8f/xe5/xd9 <CJK>
-+<U940E> /x8f/xe5/xda <CJK>
-+<U940F> /x8f/xe5/xdb <CJK>
-+<U9415> /x8f/xe5/xdc <CJK>
-+<U9416> /x8f/xe5/xdd <CJK>
-+<U9417> /x8f/xe5/xde <CJK>
-+<U941F> /x8f/xe5/xdf <CJK>
-+<U942E> /x8f/xe5/xe0 <CJK>
-+<U942F> /x8f/xe5/xe1 <CJK>
-+<U9431> /x8f/xe5/xe2 <CJK>
-+<U9432> /x8f/xe5/xe3 <CJK>
-+<U9433> /x8f/xe5/xe4 <CJK>
-+<U9434> /x8f/xe5/xe5 <CJK>
-+<U943B> /x8f/xe5/xe6 <CJK>
-+<U943F> /x8f/xe5/xe7 <CJK>
-+<U943D> /x8f/xe5/xe8 <CJK>
-+<U9443> /x8f/xe5/xe9 <CJK>
-+<U9445> /x8f/xe5/xea <CJK>
-+<U9448> /x8f/xe5/xeb <CJK>
-+<U944A> /x8f/xe5/xec <CJK>
-+<U944C> /x8f/xe5/xed <CJK>
-+<U9455> /x8f/xe5/xee <CJK>
-+<U9459> /x8f/xe5/xef <CJK>
-+<U945C> /x8f/xe5/xf0 <CJK>
-+<U945F> /x8f/xe5/xf1 <CJK>
-+<U9461> /x8f/xe5/xf2 <CJK>
-+<U9463> /x8f/xe5/xf3 <CJK>
-+<U9468> /x8f/xe5/xf4 <CJK>
-+<U946B> /x8f/xe5/xf5 <CJK>
-+<U946D> /x8f/xe5/xf6 <CJK>
-+<U946E> /x8f/xe5/xf7 <CJK>
-+<U946F> /x8f/xe5/xf8 <CJK>
-+<U9471> /x8f/xe5/xf9 <CJK>
-+<U9472> /x8f/xe5/xfa <CJK>
-+<U9484> /x8f/xe5/xfb <CJK>
-+<U9483> /x8f/xe5/xfc <CJK>
-+<U9578> /x8f/xe5/xfd <CJK>
-+<U9579> /x8f/xe5/xfe <CJK>
-+<U957E> /x8f/xe6/xa1 <CJK>
-+<U9584> /x8f/xe6/xa2 <CJK>
-+<U9588> /x8f/xe6/xa3 <CJK>
-+<U958C> /x8f/xe6/xa4 <CJK>
-+<U958D> /x8f/xe6/xa5 <CJK>
-+<U958E> /x8f/xe6/xa6 <CJK>
-+<U959D> /x8f/xe6/xa7 <CJK>
-+<U959E> /x8f/xe6/xa8 <CJK>
-+<U959F> /x8f/xe6/xa9 <CJK>
-+<U95A1> /x8f/xe6/xaa <CJK>
-+<U95A6> /x8f/xe6/xab <CJK>
-+<U95A9> /x8f/xe6/xac <CJK>
-+<U95AB> /x8f/xe6/xad <CJK>
-+<U95AC> /x8f/xe6/xae <CJK>
-+<U95B4> /x8f/xe6/xaf <CJK>
-+<U95B6> /x8f/xe6/xb0 <CJK>
-+<U95BA> /x8f/xe6/xb1 <CJK>
-+<U95BD> /x8f/xe6/xb2 <CJK>
-+<U95BF> /x8f/xe6/xb3 <CJK>
-+<U95C6> /x8f/xe6/xb4 <CJK>
-+<U95C8> /x8f/xe6/xb5 <CJK>
-+<U95C9> /x8f/xe6/xb6 <CJK>
-+<U95CB> /x8f/xe6/xb7 <CJK>
-+<U95D0> /x8f/xe6/xb8 <CJK>
-+<U95D1> /x8f/xe6/xb9 <CJK>
-+<U95D2> /x8f/xe6/xba <CJK>
-+<U95D3> /x8f/xe6/xbb <CJK>
-+<U95D9> /x8f/xe6/xbc <CJK>
-+<U95DA> /x8f/xe6/xbd <CJK>
-+<U95DD> /x8f/xe6/xbe <CJK>
-+<U95DE> /x8f/xe6/xbf <CJK>
-+<U95DF> /x8f/xe6/xc0 <CJK>
-+<U95E0> /x8f/xe6/xc1 <CJK>
-+<U95E4> /x8f/xe6/xc2 <CJK>
-+<U95E6> /x8f/xe6/xc3 <CJK>
-+<U961D> /x8f/xe6/xc4 <CJK>
-+<U961E> /x8f/xe6/xc5 <CJK>
-+<U9622> /x8f/xe6/xc6 <CJK>
-+<U9624> /x8f/xe6/xc7 <CJK>
-+<U9625> /x8f/xe6/xc8 <CJK>
-+<U9626> /x8f/xe6/xc9 <CJK>
-+<U962C> /x8f/xe6/xca <CJK>
-+<U9631> /x8f/xe6/xcb <CJK>
-+<U9633> /x8f/xe6/xcc <CJK>
-+<U9637> /x8f/xe6/xcd <CJK>
-+<U9638> /x8f/xe6/xce <CJK>
-+<U9639> /x8f/xe6/xcf <CJK>
-+<U963A> /x8f/xe6/xd0 <CJK>
-+<U963C> /x8f/xe6/xd1 <CJK>
-+<U963D> /x8f/xe6/xd2 <CJK>
-+<U9641> /x8f/xe6/xd3 <CJK>
-+<U9652> /x8f/xe6/xd4 <CJK>
-+<U9654> /x8f/xe6/xd5 <CJK>
-+<U9656> /x8f/xe6/xd6 <CJK>
-+<U9657> /x8f/xe6/xd7 <CJK>
-+<U9658> /x8f/xe6/xd8 <CJK>
-+<U9661> /x8f/xe6/xd9 <CJK>
-+<U966E> /x8f/xe6/xda <CJK>
-+<U9674> /x8f/xe6/xdb <CJK>
-+<U967B> /x8f/xe6/xdc <CJK>
-+<U967C> /x8f/xe6/xdd <CJK>
-+<U967E> /x8f/xe6/xde <CJK>
-+<U967F> /x8f/xe6/xdf <CJK>
-+<U9681> /x8f/xe6/xe0 <CJK>
-+<U9682> /x8f/xe6/xe1 <CJK>
-+<U9683> /x8f/xe6/xe2 <CJK>
-+<U9684> /x8f/xe6/xe3 <CJK>
-+<U9689> /x8f/xe6/xe4 <CJK>
-+<U9691> /x8f/xe6/xe5 <CJK>
-+<U9696> /x8f/xe6/xe6 <CJK>
-+<U969A> /x8f/xe6/xe7 <CJK>
-+<U969D> /x8f/xe6/xe8 <CJK>
-+<U969F> /x8f/xe6/xe9 <CJK>
-+<U96A4> /x8f/xe6/xea <CJK>
-+<U96A5> /x8f/xe6/xeb <CJK>
-+<U96A6> /x8f/xe6/xec <CJK>
-+<U96A9> /x8f/xe6/xed <CJK>
-+<U96AE> /x8f/xe6/xee <CJK>
-+<U96AF> /x8f/xe6/xef <CJK>
-+<U96B3> /x8f/xe6/xf0 <CJK>
-+<U96BA> /x8f/xe6/xf1 <CJK>
-+<U96CA> /x8f/xe6/xf2 <CJK>
-+<U96D2> /x8f/xe6/xf3 <CJK>
-+<U5DB2> /x8f/xe6/xf4 <CJK>
-+<U96D8> /x8f/xe6/xf5 <CJK>
-+<U96DA> /x8f/xe6/xf6 <CJK>
-+<U96DD> /x8f/xe6/xf7 <CJK>
-+<U96DE> /x8f/xe6/xf8 <CJK>
-+<U96DF> /x8f/xe6/xf9 <CJK>
-+<U96E9> /x8f/xe6/xfa <CJK>
-+<U96EF> /x8f/xe6/xfb <CJK>
-+<U96F1> /x8f/xe6/xfc <CJK>
-+<U96FA> /x8f/xe6/xfd <CJK>
-+<U9702> /x8f/xe6/xfe <CJK>
-+<U9703> /x8f/xe7/xa1 <CJK>
-+<U9705> /x8f/xe7/xa2 <CJK>
-+<U9709> /x8f/xe7/xa3 <CJK>
-+<U971A> /x8f/xe7/xa4 <CJK>
-+<U971B> /x8f/xe7/xa5 <CJK>
-+<U971D> /x8f/xe7/xa6 <CJK>
-+<U9721> /x8f/xe7/xa7 <CJK>
-+<U9722> /x8f/xe7/xa8 <CJK>
-+<U9723> /x8f/xe7/xa9 <CJK>
-+<U9728> /x8f/xe7/xaa <CJK>
-+<U9731> /x8f/xe7/xab <CJK>
-+<U9733> /x8f/xe7/xac <CJK>
-+<U9741> /x8f/xe7/xad <CJK>
-+<U9743> /x8f/xe7/xae <CJK>
-+<U974A> /x8f/xe7/xaf <CJK>
-+<U974E> /x8f/xe7/xb0 <CJK>
-+<U974F> /x8f/xe7/xb1 <CJK>
-+<U9755> /x8f/xe7/xb2 <CJK>
-+<U9757> /x8f/xe7/xb3 <CJK>
-+<U9758> /x8f/xe7/xb4 <CJK>
-+<U975A> /x8f/xe7/xb5 <CJK>
-+<U975B> /x8f/xe7/xb6 <CJK>
-+<U9763> /x8f/xe7/xb7 <CJK>
-+<U9767> /x8f/xe7/xb8 <CJK>
-+<U976A> /x8f/xe7/xb9 <CJK>
-+<U976E> /x8f/xe7/xba <CJK>
-+<U9773> /x8f/xe7/xbb <CJK>
-+<U9776> /x8f/xe7/xbc <CJK>
-+<U9777> /x8f/xe7/xbd <CJK>
-+<U9778> /x8f/xe7/xbe <CJK>
-+<U977B> /x8f/xe7/xbf <CJK>
-+<U977D> /x8f/xe7/xc0 <CJK>
-+<U977F> /x8f/xe7/xc1 <CJK>
-+<U9780> /x8f/xe7/xc2 <CJK>
-+<U9789> /x8f/xe7/xc3 <CJK>
-+<U9795> /x8f/xe7/xc4 <CJK>
-+<U9796> /x8f/xe7/xc5 <CJK>
-+<U9797> /x8f/xe7/xc6 <CJK>
-+<U9799> /x8f/xe7/xc7 <CJK>
-+<U979A> /x8f/xe7/xc8 <CJK>
-+<U979E> /x8f/xe7/xc9 <CJK>
-+<U979F> /x8f/xe7/xca <CJK>
-+<U97A2> /x8f/xe7/xcb <CJK>
-+<U97AC> /x8f/xe7/xcc <CJK>
-+<U97AE> /x8f/xe7/xcd <CJK>
-+<U97B1> /x8f/xe7/xce <CJK>
-+<U97B2> /x8f/xe7/xcf <CJK>
-+<U97B5> /x8f/xe7/xd0 <CJK>
-+<U97B6> /x8f/xe7/xd1 <CJK>
-+<U97B8> /x8f/xe7/xd2 <CJK>
-+<U97B9> /x8f/xe7/xd3 <CJK>
-+<U97BA> /x8f/xe7/xd4 <CJK>
-+<U97BC> /x8f/xe7/xd5 <CJK>
-+<U97BE> /x8f/xe7/xd6 <CJK>
-+<U97BF> /x8f/xe7/xd7 <CJK>
-+<U97C1> /x8f/xe7/xd8 <CJK>
-+<U97C4> /x8f/xe7/xd9 <CJK>
-+<U97C5> /x8f/xe7/xda <CJK>
-+<U97C7> /x8f/xe7/xdb <CJK>
-+<U97C9> /x8f/xe7/xdc <CJK>
-+<U97CA> /x8f/xe7/xdd <CJK>
-+<U97CC> /x8f/xe7/xde <CJK>
-+<U97CD> /x8f/xe7/xdf <CJK>
-+<U97CE> /x8f/xe7/xe0 <CJK>
-+<U97D0> /x8f/xe7/xe1 <CJK>
-+<U97D1> /x8f/xe7/xe2 <CJK>
-+<U97D4> /x8f/xe7/xe3 <CJK>
-+<U97D7> /x8f/xe7/xe4 <CJK>
-+<U97D8> /x8f/xe7/xe5 <CJK>
-+<U97D9> /x8f/xe7/xe6 <CJK>
-+<U97DD> /x8f/xe7/xe7 <CJK>
-+<U97DE> /x8f/xe7/xe8 <CJK>
-+<U97E0> /x8f/xe7/xe9 <CJK>
-+<U97DB> /x8f/xe7/xea <CJK>
-+<U97E1> /x8f/xe7/xeb <CJK>
-+<U97E4> /x8f/xe7/xec <CJK>
-+<U97EF> /x8f/xe7/xed <CJK>
-+<U97F1> /x8f/xe7/xee <CJK>
-+<U97F4> /x8f/xe7/xef <CJK>
-+<U97F7> /x8f/xe7/xf0 <CJK>
-+<U97F8> /x8f/xe7/xf1 <CJK>
-+<U97FA> /x8f/xe7/xf2 <CJK>
-+<U9807> /x8f/xe7/xf3 <CJK>
-+<U980A> /x8f/xe7/xf4 <CJK>
-+<U9819> /x8f/xe7/xf5 <CJK>
-+<U980D> /x8f/xe7/xf6 <CJK>
-+<U980E> /x8f/xe7/xf7 <CJK>
-+<U9814> /x8f/xe7/xf8 <CJK>
-+<U9816> /x8f/xe7/xf9 <CJK>
-+<U981C> /x8f/xe7/xfa <CJK>
-+<U981E> /x8f/xe7/xfb <CJK>
-+<U9820> /x8f/xe7/xfc <CJK>
-+<U9823> /x8f/xe7/xfd <CJK>
-+<U9826> /x8f/xe7/xfe <CJK>
-+<U982B> /x8f/xe8/xa1 <CJK>
-+<U982E> /x8f/xe8/xa2 <CJK>
-+<U982F> /x8f/xe8/xa3 <CJK>
-+<U9830> /x8f/xe8/xa4 <CJK>
-+<U9832> /x8f/xe8/xa5 <CJK>
-+<U9833> /x8f/xe8/xa6 <CJK>
-+<U9835> /x8f/xe8/xa7 <CJK>
-+<U9825> /x8f/xe8/xa8 <CJK>
-+<U983E> /x8f/xe8/xa9 <CJK>
-+<U9844> /x8f/xe8/xaa <CJK>
-+<U9847> /x8f/xe8/xab <CJK>
-+<U984A> /x8f/xe8/xac <CJK>
-+<U9851> /x8f/xe8/xad <CJK>
-+<U9852> /x8f/xe8/xae <CJK>
-+<U9853> /x8f/xe8/xaf <CJK>
-+<U9856> /x8f/xe8/xb0 <CJK>
-+<U9857> /x8f/xe8/xb1 <CJK>
-+<U9859> /x8f/xe8/xb2 <CJK>
-+<U985A> /x8f/xe8/xb3 <CJK>
-+<U9862> /x8f/xe8/xb4 <CJK>
-+<U9863> /x8f/xe8/xb5 <CJK>
-+<U9865> /x8f/xe8/xb6 <CJK>
-+<U9866> /x8f/xe8/xb7 <CJK>
-+<U986A> /x8f/xe8/xb8 <CJK>
-+<U986C> /x8f/xe8/xb9 <CJK>
-+<U98AB> /x8f/xe8/xba <CJK>
-+<U98AD> /x8f/xe8/xbb <CJK>
-+<U98AE> /x8f/xe8/xbc <CJK>
-+<U98B0> /x8f/xe8/xbd <CJK>
-+<U98B4> /x8f/xe8/xbe <CJK>
-+<U98B7> /x8f/xe8/xbf <CJK>
-+<U98B8> /x8f/xe8/xc0 <CJK>
-+<U98BA> /x8f/xe8/xc1 <CJK>
-+<U98BB> /x8f/xe8/xc2 <CJK>
-+<U98BF> /x8f/xe8/xc3 <CJK>
-+<U98C2> /x8f/xe8/xc4 <CJK>
-+<U98C5> /x8f/xe8/xc5 <CJK>
-+<U98C8> /x8f/xe8/xc6 <CJK>
-+<U98CC> /x8f/xe8/xc7 <CJK>
-+<U98E1> /x8f/xe8/xc8 <CJK>
-+<U98E3> /x8f/xe8/xc9 <CJK>
-+<U98E5> /x8f/xe8/xca <CJK>
-+<U98E6> /x8f/xe8/xcb <CJK>
-+<U98E7> /x8f/xe8/xcc <CJK>
-+<U98EA> /x8f/xe8/xcd <CJK>
-+<U98F3> /x8f/xe8/xce <CJK>
-+<U98F6> /x8f/xe8/xcf <CJK>
-+<U9902> /x8f/xe8/xd0 <CJK>
-+<U9907> /x8f/xe8/xd1 <CJK>
-+<U9908> /x8f/xe8/xd2 <CJK>
-+<U9911> /x8f/xe8/xd3 <CJK>
-+<U9915> /x8f/xe8/xd4 <CJK>
-+<U9916> /x8f/xe8/xd5 <CJK>
-+<U9917> /x8f/xe8/xd6 <CJK>
-+<U991A> /x8f/xe8/xd7 <CJK>
-+<U991B> /x8f/xe8/xd8 <CJK>
-+<U991C> /x8f/xe8/xd9 <CJK>
-+<U991F> /x8f/xe8/xda <CJK>
-+<U9922> /x8f/xe8/xdb <CJK>
-+<U9926> /x8f/xe8/xdc <CJK>
-+<U9927> /x8f/xe8/xdd <CJK>
-+<U992B> /x8f/xe8/xde <CJK>
-+<U9931> /x8f/xe8/xdf <CJK>
-+<U9932> /x8f/xe8/xe0 <CJK>
-+<U9933> /x8f/xe8/xe1 <CJK>
-+<U9934> /x8f/xe8/xe2 <CJK>
-+<U9935> /x8f/xe8/xe3 <CJK>
-+<U9939> /x8f/xe8/xe4 <CJK>
-+<U993A> /x8f/xe8/xe5 <CJK>
-+<U993B> /x8f/xe8/xe6 <CJK>
-+<U993C> /x8f/xe8/xe7 <CJK>
-+<U9940> /x8f/xe8/xe8 <CJK>
-+<U9941> /x8f/xe8/xe9 <CJK>
-+<U9946> /x8f/xe8/xea <CJK>
-+<U9947> /x8f/xe8/xeb <CJK>
-+<U9948> /x8f/xe8/xec <CJK>
-+<U994D> /x8f/xe8/xed <CJK>
-+<U994E> /x8f/xe8/xee <CJK>
-+<U9954> /x8f/xe8/xef <CJK>
-+<U9958> /x8f/xe8/xf0 <CJK>
-+<U9959> /x8f/xe8/xf1 <CJK>
-+<U995B> /x8f/xe8/xf2 <CJK>
-+<U995C> /x8f/xe8/xf3 <CJK>
-+<U995E> /x8f/xe8/xf4 <CJK>
-+<U995F> /x8f/xe8/xf5 <CJK>
-+<U9960> /x8f/xe8/xf6 <CJK>
-+<U999B> /x8f/xe8/xf7 <CJK>
-+<U999D> /x8f/xe8/xf8 <CJK>
-+<U999F> /x8f/xe8/xf9 <CJK>
-+<U99A6> /x8f/xe8/xfa <CJK>
-+<U99B0> /x8f/xe8/xfb <CJK>
-+<U99B1> /x8f/xe8/xfc <CJK>
-+<U99B2> /x8f/xe8/xfd <CJK>
-+<U99B5> /x8f/xe8/xfe <CJK>
-+<U99B9> /x8f/xe9/xa1 <CJK>
-+<U99BA> /x8f/xe9/xa2 <CJK>
-+<U99BD> /x8f/xe9/xa3 <CJK>
-+<U99BF> /x8f/xe9/xa4 <CJK>
-+<U99C3> /x8f/xe9/xa5 <CJK>
-+<U99C9> /x8f/xe9/xa6 <CJK>
-+<U99D3> /x8f/xe9/xa7 <CJK>
-+<U99D4> /x8f/xe9/xa8 <CJK>
-+<U99D9> /x8f/xe9/xa9 <CJK>
-+<U99DA> /x8f/xe9/xaa <CJK>
-+<U99DC> /x8f/xe9/xab <CJK>
-+<U99DE> /x8f/xe9/xac <CJK>
-+<U99E7> /x8f/xe9/xad <CJK>
-+<U99EA> /x8f/xe9/xae <CJK>
-+<U99EB> /x8f/xe9/xaf <CJK>
-+<U99EC> /x8f/xe9/xb0 <CJK>
-+<U99F0> /x8f/xe9/xb1 <CJK>
-+<U99F4> /x8f/xe9/xb2 <CJK>
-+<U99F5> /x8f/xe9/xb3 <CJK>
-+<U99F9> /x8f/xe9/xb4 <CJK>
-+<U99FD> /x8f/xe9/xb5 <CJK>
-+<U99FE> /x8f/xe9/xb6 <CJK>
-+<U9A02> /x8f/xe9/xb7 <CJK>
-+<U9A03> /x8f/xe9/xb8 <CJK>
-+<U9A04> /x8f/xe9/xb9 <CJK>
-+<U9A0B> /x8f/xe9/xba <CJK>
-+<U9A0C> /x8f/xe9/xbb <CJK>
-+<U9A10> /x8f/xe9/xbc <CJK>
-+<U9A11> /x8f/xe9/xbd <CJK>
-+<U9A16> /x8f/xe9/xbe <CJK>
-+<U9A1E> /x8f/xe9/xbf <CJK>
-+<U9A20> /x8f/xe9/xc0 <CJK>
-+<U9A22> /x8f/xe9/xc1 <CJK>
-+<U9A23> /x8f/xe9/xc2 <CJK>
-+<U9A24> /x8f/xe9/xc3 <CJK>
-+<U9A27> /x8f/xe9/xc4 <CJK>
-+<U9A2D> /x8f/xe9/xc5 <CJK>
-+<U9A2E> /x8f/xe9/xc6 <CJK>
-+<U9A33> /x8f/xe9/xc7 <CJK>
-+<U9A35> /x8f/xe9/xc8 <CJK>
-+<U9A36> /x8f/xe9/xc9 <CJK>
-+<U9A38> /x8f/xe9/xca <CJK>
-+<U9A47> /x8f/xe9/xcb <CJK>
-+<U9A41> /x8f/xe9/xcc <CJK>
-+<U9A44> /x8f/xe9/xcd <CJK>
-+<U9A4A> /x8f/xe9/xce <CJK>
-+<U9A4B> /x8f/xe9/xcf <CJK>
-+<U9A4C> /x8f/xe9/xd0 <CJK>
-+<U9A4E> /x8f/xe9/xd1 <CJK>
-+<U9A51> /x8f/xe9/xd2 <CJK>
-+<U9A54> /x8f/xe9/xd3 <CJK>
-+<U9A56> /x8f/xe9/xd4 <CJK>
-+<U9A5D> /x8f/xe9/xd5 <CJK>
-+<U9AAA> /x8f/xe9/xd6 <CJK>
-+<U9AAC> /x8f/xe9/xd7 <CJK>
-+<U9AAE> /x8f/xe9/xd8 <CJK>
-+<U9AAF> /x8f/xe9/xd9 <CJK>
-+<U9AB2> /x8f/xe9/xda <CJK>
-+<U9AB4> /x8f/xe9/xdb <CJK>
-+<U9AB5> /x8f/xe9/xdc <CJK>
-+<U9AB6> /x8f/xe9/xdd <CJK>
-+<U9AB9> /x8f/xe9/xde <CJK>
-+<U9ABB> /x8f/xe9/xdf <CJK>
-+<U9ABE> /x8f/xe9/xe0 <CJK>
-+<U9ABF> /x8f/xe9/xe1 <CJK>
-+<U9AC1> /x8f/xe9/xe2 <CJK>
-+<U9AC3> /x8f/xe9/xe3 <CJK>
-+<U9AC6> /x8f/xe9/xe4 <CJK>
-+<U9AC8> /x8f/xe9/xe5 <CJK>
-+<U9ACE> /x8f/xe9/xe6 <CJK>
-+<U9AD0> /x8f/xe9/xe7 <CJK>
-+<U9AD2> /x8f/xe9/xe8 <CJK>
-+<U9AD5> /x8f/xe9/xe9 <CJK>
-+<U9AD6> /x8f/xe9/xea <CJK>
-+<U9AD7> /x8f/xe9/xeb <CJK>
-+<U9ADB> /x8f/xe9/xec <CJK>
-+<U9ADC> /x8f/xe9/xed <CJK>
-+<U9AE0> /x8f/xe9/xee <CJK>
-+<U9AE4> /x8f/xe9/xef <CJK>
-+<U9AE5> /x8f/xe9/xf0 <CJK>
-+<U9AE7> /x8f/xe9/xf1 <CJK>
-+<U9AE9> /x8f/xe9/xf2 <CJK>
-+<U9AEC> /x8f/xe9/xf3 <CJK>
-+<U9AF2> /x8f/xe9/xf4 <CJK>
-+<U9AF3> /x8f/xe9/xf5 <CJK>
-+<U9AF5> /x8f/xe9/xf6 <CJK>
-+<U9AF9> /x8f/xe9/xf7 <CJK>
-+<U9AFA> /x8f/xe9/xf8 <CJK>
-+<U9AFD> /x8f/xe9/xf9 <CJK>
-+<U9AFF> /x8f/xe9/xfa <CJK>
-+<U9B00> /x8f/xe9/xfb <CJK>
-+<U9B01> /x8f/xe9/xfc <CJK>
-+<U9B02> /x8f/xe9/xfd <CJK>
-+<U9B03> /x8f/xe9/xfe <CJK>
-+<U9B04> /x8f/xea/xa1 <CJK>
-+<U9B05> /x8f/xea/xa2 <CJK>
-+<U9B08> /x8f/xea/xa3 <CJK>
-+<U9B09> /x8f/xea/xa4 <CJK>
-+<U9B0B> /x8f/xea/xa5 <CJK>
-+<U9B0C> /x8f/xea/xa6 <CJK>
-+<U9B0D> /x8f/xea/xa7 <CJK>
-+<U9B0E> /x8f/xea/xa8 <CJK>
-+<U9B10> /x8f/xea/xa9 <CJK>
-+<U9B12> /x8f/xea/xaa <CJK>
-+<U9B16> /x8f/xea/xab <CJK>
-+<U9B19> /x8f/xea/xac <CJK>
-+<U9B1B> /x8f/xea/xad <CJK>
-+<U9B1C> /x8f/xea/xae <CJK>
-+<U9B20> /x8f/xea/xaf <CJK>
-+<U9B26> /x8f/xea/xb0 <CJK>
-+<U9B2B> /x8f/xea/xb1 <CJK>
-+<U9B2D> /x8f/xea/xb2 <CJK>
-+<U9B33> /x8f/xea/xb3 <CJK>
-+<U9B34> /x8f/xea/xb4 <CJK>
-+<U9B35> /x8f/xea/xb5 <CJK>
-+<U9B37> /x8f/xea/xb6 <CJK>
-+<U9B39> /x8f/xea/xb7 <CJK>
-+<U9B3A> /x8f/xea/xb8 <CJK>
-+<U9B3D> /x8f/xea/xb9 <CJK>
-+<U9B48> /x8f/xea/xba <CJK>
-+<U9B4B> /x8f/xea/xbb <CJK>
-+<U9B4C> /x8f/xea/xbc <CJK>
-+<U9B55> /x8f/xea/xbd <CJK>
-+<U9B56> /x8f/xea/xbe <CJK>
-+<U9B57> /x8f/xea/xbf <CJK>
-+<U9B5B> /x8f/xea/xc0 <CJK>
-+<U9B5E> /x8f/xea/xc1 <CJK>
-+<U9B61> /x8f/xea/xc2 <CJK>
-+<U9B63> /x8f/xea/xc3 <CJK>
-+<U9B65> /x8f/xea/xc4 <CJK>
-+<U9B66> /x8f/xea/xc5 <CJK>
-+<U9B68> /x8f/xea/xc6 <CJK>
-+<U9B6A> /x8f/xea/xc7 <CJK>
-+<U9B6B> /x8f/xea/xc8 <CJK>
-+<U9B6C> /x8f/xea/xc9 <CJK>
-+<U9B6D> /x8f/xea/xca <CJK>
-+<U9B6E> /x8f/xea/xcb <CJK>
-+<U9B73> /x8f/xea/xcc <CJK>
-+<U9B75> /x8f/xea/xcd <CJK>
-+<U9B77> /x8f/xea/xce <CJK>
-+<U9B78> /x8f/xea/xcf <CJK>
-+<U9B79> /x8f/xea/xd0 <CJK>
-+<U9B7F> /x8f/xea/xd1 <CJK>
-+<U9B80> /x8f/xea/xd2 <CJK>
-+<U9B84> /x8f/xea/xd3 <CJK>
-+<U9B85> /x8f/xea/xd4 <CJK>
-+<U9B86> /x8f/xea/xd5 <CJK>
-+<U9B87> /x8f/xea/xd6 <CJK>
-+<U9B89> /x8f/xea/xd7 <CJK>
-+<U9B8A> /x8f/xea/xd8 <CJK>
-+<U9B8B> /x8f/xea/xd9 <CJK>
-+<U9B8D> /x8f/xea/xda <CJK>
-+<U9B8F> /x8f/xea/xdb <CJK>
-+<U9B90> /x8f/xea/xdc <CJK>
-+<U9B94> /x8f/xea/xdd <CJK>
-+<U9B9A> /x8f/xea/xde <CJK>
-+<U9B9D> /x8f/xea/xdf <CJK>
-+<U9B9E> /x8f/xea/xe0 <CJK>
-+<U9BA6> /x8f/xea/xe1 <CJK>
-+<U9BA7> /x8f/xea/xe2 <CJK>
-+<U9BA9> /x8f/xea/xe3 <CJK>
-+<U9BAC> /x8f/xea/xe4 <CJK>
-+<U9BB0> /x8f/xea/xe5 <CJK>
-+<U9BB1> /x8f/xea/xe6 <CJK>
-+<U9BB2> /x8f/xea/xe7 <CJK>
-+<U9BB7> /x8f/xea/xe8 <CJK>
-+<U9BB8> /x8f/xea/xe9 <CJK>
-+<U9BBB> /x8f/xea/xea <CJK>
-+<U9BBC> /x8f/xea/xeb <CJK>
-+<U9BBE> /x8f/xea/xec <CJK>
-+<U9BBF> /x8f/xea/xed <CJK>
-+<U9BC1> /x8f/xea/xee <CJK>
-+<U9BC7> /x8f/xea/xef <CJK>
-+<U9BC8> /x8f/xea/xf0 <CJK>
-+<U9BCE> /x8f/xea/xf1 <CJK>
-+<U9BD0> /x8f/xea/xf2 <CJK>
-+<U9BD7> /x8f/xea/xf3 <CJK>
-+<U9BD8> /x8f/xea/xf4 <CJK>
-+<U9BDD> /x8f/xea/xf5 <CJK>
-+<U9BDF> /x8f/xea/xf6 <CJK>
-+<U9BE5> /x8f/xea/xf7 <CJK>
-+<U9BE7> /x8f/xea/xf8 <CJK>
-+<U9BEA> /x8f/xea/xf9 <CJK>
-+<U9BEB> /x8f/xea/xfa <CJK>
-+<U9BEF> /x8f/xea/xfb <CJK>
-+<U9BF3> /x8f/xea/xfc <CJK>
-+<U9BF7> /x8f/xea/xfd <CJK>
-+<U9BF8> /x8f/xea/xfe <CJK>
-+<U9BF9> /x8f/xeb/xa1 <CJK>
-+<U9BFA> /x8f/xeb/xa2 <CJK>
-+<U9BFD> /x8f/xeb/xa3 <CJK>
-+<U9BFF> /x8f/xeb/xa4 <CJK>
-+<U9C00> /x8f/xeb/xa5 <CJK>
-+<U9C02> /x8f/xeb/xa6 <CJK>
-+<U9C0B> /x8f/xeb/xa7 <CJK>
-+<U9C0F> /x8f/xeb/xa8 <CJK>
-+<U9C11> /x8f/xeb/xa9 <CJK>
-+<U9C16> /x8f/xeb/xaa <CJK>
-+<U9C18> /x8f/xeb/xab <CJK>
-+<U9C19> /x8f/xeb/xac <CJK>
-+<U9C1A> /x8f/xeb/xad <CJK>
-+<U9C1C> /x8f/xeb/xae <CJK>
-+<U9C1E> /x8f/xeb/xaf <CJK>
-+<U9C22> /x8f/xeb/xb0 <CJK>
-+<U9C23> /x8f/xeb/xb1 <CJK>
-+<U9C26> /x8f/xeb/xb2 <CJK>
-+<U9C27> /x8f/xeb/xb3 <CJK>
-+<U9C28> /x8f/xeb/xb4 <CJK>
-+<U9C29> /x8f/xeb/xb5 <CJK>
-+<U9C2A> /x8f/xeb/xb6 <CJK>
-+<U9C31> /x8f/xeb/xb7 <CJK>
-+<U9C35> /x8f/xeb/xb8 <CJK>
-+<U9C36> /x8f/xeb/xb9 <CJK>
-+<U9C37> /x8f/xeb/xba <CJK>
-+<U9C3D> /x8f/xeb/xbb <CJK>
-+<U9C41> /x8f/xeb/xbc <CJK>
-+<U9C43> /x8f/xeb/xbd <CJK>
-+<U9C44> /x8f/xeb/xbe <CJK>
-+<U9C45> /x8f/xeb/xbf <CJK>
-+<U9C49> /x8f/xeb/xc0 <CJK>
-+<U9C4A> /x8f/xeb/xc1 <CJK>
-+<U9C4E> /x8f/xeb/xc2 <CJK>
-+<U9C4F> /x8f/xeb/xc3 <CJK>
-+<U9C50> /x8f/xeb/xc4 <CJK>
-+<U9C53> /x8f/xeb/xc5 <CJK>
-+<U9C54> /x8f/xeb/xc6 <CJK>
-+<U9C56> /x8f/xeb/xc7 <CJK>
-+<U9C58> /x8f/xeb/xc8 <CJK>
-+<U9C5B> /x8f/xeb/xc9 <CJK>
-+<U9C5D> /x8f/xeb/xca <CJK>
-+<U9C5E> /x8f/xeb/xcb <CJK>
-+<U9C5F> /x8f/xeb/xcc <CJK>
-+<U9C63> /x8f/xeb/xcd <CJK>
-+<U9C69> /x8f/xeb/xce <CJK>
-+<U9C6A> /x8f/xeb/xcf <CJK>
-+<U9C5C> /x8f/xeb/xd0 <CJK>
-+<U9C6B> /x8f/xeb/xd1 <CJK>
-+<U9C68> /x8f/xeb/xd2 <CJK>
-+<U9C6E> /x8f/xeb/xd3 <CJK>
-+<U9C70> /x8f/xeb/xd4 <CJK>
-+<U9C72> /x8f/xeb/xd5 <CJK>
-+<U9C75> /x8f/xeb/xd6 <CJK>
-+<U9C77> /x8f/xeb/xd7 <CJK>
-+<U9C7B> /x8f/xeb/xd8 <CJK>
-+<U9CE6> /x8f/xeb/xd9 <CJK>
-+<U9CF2> /x8f/xeb/xda <CJK>
-+<U9CF7> /x8f/xeb/xdb <CJK>
-+<U9CF9> /x8f/xeb/xdc <CJK>
-+<U9D0B> /x8f/xeb/xdd <CJK>
-+<U9D02> /x8f/xeb/xde <CJK>
-+<U9D11> /x8f/xeb/xdf <CJK>
-+<U9D17> /x8f/xeb/xe0 <CJK>
-+<U9D18> /x8f/xeb/xe1 <CJK>
-+<U9D1C> /x8f/xeb/xe2 <CJK>
-+<U9D1D> /x8f/xeb/xe3 <CJK>
-+<U9D1E> /x8f/xeb/xe4 <CJK>
-+<U9D2F> /x8f/xeb/xe5 <CJK>
-+<U9D30> /x8f/xeb/xe6 <CJK>
-+<U9D32> /x8f/xeb/xe7 <CJK>
-+<U9D33> /x8f/xeb/xe8 <CJK>
-+<U9D34> /x8f/xeb/xe9 <CJK>
-+<U9D3A> /x8f/xeb/xea <CJK>
-+<U9D3C> /x8f/xeb/xeb <CJK>
-+<U9D45> /x8f/xeb/xec <CJK>
-+<U9D3D> /x8f/xeb/xed <CJK>
-+<U9D42> /x8f/xeb/xee <CJK>
-+<U9D43> /x8f/xeb/xef <CJK>
-+<U9D47> /x8f/xeb/xf0 <CJK>
-+<U9D4A> /x8f/xeb/xf1 <CJK>
-+<U9D53> /x8f/xeb/xf2 <CJK>
-+<U9D54> /x8f/xeb/xf3 <CJK>
-+<U9D5F> /x8f/xeb/xf4 <CJK>
-+<U9D63> /x8f/xeb/xf5 <CJK>
-+<U9D62> /x8f/xeb/xf6 <CJK>
-+<U9D65> /x8f/xeb/xf7 <CJK>
-+<U9D69> /x8f/xeb/xf8 <CJK>
-+<U9D6A> /x8f/xeb/xf9 <CJK>
-+<U9D6B> /x8f/xeb/xfa <CJK>
-+<U9D70> /x8f/xeb/xfb <CJK>
-+<U9D76> /x8f/xeb/xfc <CJK>
-+<U9D77> /x8f/xeb/xfd <CJK>
-+<U9D7B> /x8f/xeb/xfe <CJK>
-+<U9D7C> /x8f/xec/xa1 <CJK>
-+<U9D7E> /x8f/xec/xa2 <CJK>
-+<U9D83> /x8f/xec/xa3 <CJK>
-+<U9D84> /x8f/xec/xa4 <CJK>
-+<U9D86> /x8f/xec/xa5 <CJK>
-+<U9D8A> /x8f/xec/xa6 <CJK>
-+<U9D8D> /x8f/xec/xa7 <CJK>
-+<U9D8E> /x8f/xec/xa8 <CJK>
-+<U9D92> /x8f/xec/xa9 <CJK>
-+<U9D93> /x8f/xec/xaa <CJK>
-+<U9D95> /x8f/xec/xab <CJK>
-+<U9D96> /x8f/xec/xac <CJK>
-+<U9D97> /x8f/xec/xad <CJK>
-+<U9D98> /x8f/xec/xae <CJK>
-+<U9DA1> /x8f/xec/xaf <CJK>
-+<U9DAA> /x8f/xec/xb0 <CJK>
-+<U9DAC> /x8f/xec/xb1 <CJK>
-+<U9DAE> /x8f/xec/xb2 <CJK>
-+<U9DB1> /x8f/xec/xb3 <CJK>
-+<U9DB5> /x8f/xec/xb4 <CJK>
-+<U9DB9> /x8f/xec/xb5 <CJK>
-+<U9DBC> /x8f/xec/xb6 <CJK>
-+<U9DBF> /x8f/xec/xb7 <CJK>
-+<U9DC3> /x8f/xec/xb8 <CJK>
-+<U9DC7> /x8f/xec/xb9 <CJK>
-+<U9DC9> /x8f/xec/xba <CJK>
-+<U9DCA> /x8f/xec/xbb <CJK>
-+<U9DD4> /x8f/xec/xbc <CJK>
-+<U9DD5> /x8f/xec/xbd <CJK>
-+<U9DD6> /x8f/xec/xbe <CJK>
-+<U9DD7> /x8f/xec/xbf <CJK>
-+<U9DDA> /x8f/xec/xc0 <CJK>
-+<U9DDE> /x8f/xec/xc1 <CJK>
-+<U9DDF> /x8f/xec/xc2 <CJK>
-+<U9DE0> /x8f/xec/xc3 <CJK>
-+<U9DE5> /x8f/xec/xc4 <CJK>
-+<U9DE7> /x8f/xec/xc5 <CJK>
-+<U9DE9> /x8f/xec/xc6 <CJK>
-+<U9DEB> /x8f/xec/xc7 <CJK>
-+<U9DEE> /x8f/xec/xc8 <CJK>
-+<U9DF0> /x8f/xec/xc9 <CJK>
-+<U9DF3> /x8f/xec/xca <CJK>
-+<U9DF4> /x8f/xec/xcb <CJK>
-+<U9DFE> /x8f/xec/xcc <CJK>
-+<U9E0A> /x8f/xec/xcd <CJK>
-+<U9E02> /x8f/xec/xce <CJK>
-+<U9E07> /x8f/xec/xcf <CJK>
-+<U9E0E> /x8f/xec/xd0 <CJK>
-+<U9E10> /x8f/xec/xd1 <CJK>
-+<U9E11> /x8f/xec/xd2 <CJK>
-+<U9E12> /x8f/xec/xd3 <CJK>
-+<U9E15> /x8f/xec/xd4 <CJK>
-+<U9E16> /x8f/xec/xd5 <CJK>
-+<U9E19> /x8f/xec/xd6 <CJK>
-+<U9E1C> /x8f/xec/xd7 <CJK>
-+<U9E1D> /x8f/xec/xd8 <CJK>
-+<U9E7A> /x8f/xec/xd9 <CJK>
-+<U9E7B> /x8f/xec/xda <CJK>
-+<U9E7C> /x8f/xec/xdb <CJK>
-+<U9E80> /x8f/xec/xdc <CJK>
-+<U9E82> /x8f/xec/xdd <CJK>
-+<U9E83> /x8f/xec/xde <CJK>
-+<U9E84> /x8f/xec/xdf <CJK>
-+<U9E85> /x8f/xec/xe0 <CJK>
-+<U9E87> /x8f/xec/xe1 <CJK>
-+<U9E8E> /x8f/xec/xe2 <CJK>
-+<U9E8F> /x8f/xec/xe3 <CJK>
-+<U9E96> /x8f/xec/xe4 <CJK>
-+<U9E98> /x8f/xec/xe5 <CJK>
-+<U9E9B> /x8f/xec/xe6 <CJK>
-+<U9E9E> /x8f/xec/xe7 <CJK>
-+<U9EA4> /x8f/xec/xe8 <CJK>
-+<U9EA8> /x8f/xec/xe9 <CJK>
-+<U9EAC> /x8f/xec/xea <CJK>
-+<U9EAE> /x8f/xec/xeb <CJK>
-+<U9EAF> /x8f/xec/xec <CJK>
-+<U9EB0> /x8f/xec/xed <CJK>
-+<U9EB3> /x8f/xec/xee <CJK>
-+<U9EB4> /x8f/xec/xef <CJK>
-+<U9EB5> /x8f/xec/xf0 <CJK>
-+<U9EC6> /x8f/xec/xf1 <CJK>
-+<U9EC8> /x8f/xec/xf2 <CJK>
-+<U9ECB> /x8f/xec/xf3 <CJK>
-+<U9ED5> /x8f/xec/xf4 <CJK>
-+<U9EDF> /x8f/xec/xf5 <CJK>
-+<U9EE4> /x8f/xec/xf6 <CJK>
-+<U9EE7> /x8f/xec/xf7 <CJK>
-+<U9EEC> /x8f/xec/xf8 <CJK>
-+<U9EED> /x8f/xec/xf9 <CJK>
-+<U9EEE> /x8f/xec/xfa <CJK>
-+<U9EF0> /x8f/xec/xfb <CJK>
-+<U9EF1> /x8f/xec/xfc <CJK>
-+<U9EF2> /x8f/xec/xfd <CJK>
-+<U9EF5> /x8f/xec/xfe <CJK>
-+<U9EF8> /x8f/xed/xa1 <CJK>
-+<U9EFF> /x8f/xed/xa2 <CJK>
-+<U9F02> /x8f/xed/xa3 <CJK>
-+<U9F03> /x8f/xed/xa4 <CJK>
-+<U9F09> /x8f/xed/xa5 <CJK>
-+<U9F0F> /x8f/xed/xa6 <CJK>
-+<U9F10> /x8f/xed/xa7 <CJK>
-+<U9F11> /x8f/xed/xa8 <CJK>
-+<U9F12> /x8f/xed/xa9 <CJK>
-+<U9F14> /x8f/xed/xaa <CJK>
-+<U9F16> /x8f/xed/xab <CJK>
-+<U9F17> /x8f/xed/xac <CJK>
-+<U9F19> /x8f/xed/xad <CJK>
-+<U9F1A> /x8f/xed/xae <CJK>
-+<U9F1B> /x8f/xed/xaf <CJK>
-+<U9F1F> /x8f/xed/xb0 <CJK>
-+<U9F22> /x8f/xed/xb1 <CJK>
-+<U9F26> /x8f/xed/xb2 <CJK>
-+<U9F2A> /x8f/xed/xb3 <CJK>
-+<U9F2B> /x8f/xed/xb4 <CJK>
-+<U9F2F> /x8f/xed/xb5 <CJK>
-+<U9F31> /x8f/xed/xb6 <CJK>
-+<U9F32> /x8f/xed/xb7 <CJK>
-+<U9F34> /x8f/xed/xb8 <CJK>
-+<U9F37> /x8f/xed/xb9 <CJK>
-+<U9F39> /x8f/xed/xba <CJK>
-+<U9F3A> /x8f/xed/xbb <CJK>
-+<U9F3C> /x8f/xed/xbc <CJK>
-+<U9F3D> /x8f/xed/xbd <CJK>
-+<U9F3F> /x8f/xed/xbe <CJK>
-+<U9F41> /x8f/xed/xbf <CJK>
-+<U9F43> /x8f/xed/xc0 <CJK>
-+<U9F44> /x8f/xed/xc1 <CJK>
-+<U9F45> /x8f/xed/xc2 <CJK>
-+<U9F46> /x8f/xed/xc3 <CJK>
-+<U9F47> /x8f/xed/xc4 <CJK>
-+<U9F53> /x8f/xed/xc5 <CJK>
-+<U9F55> /x8f/xed/xc6 <CJK>
-+<U9F56> /x8f/xed/xc7 <CJK>
-+<U9F57> /x8f/xed/xc8 <CJK>
-+<U9F58> /x8f/xed/xc9 <CJK>
-+<U9F5A> /x8f/xed/xca <CJK>
-+<U9F5D> /x8f/xed/xcb <CJK>
-+<U9F5E> /x8f/xed/xcc <CJK>
-+<U9F68> /x8f/xed/xcd <CJK>
-+<U9F69> /x8f/xed/xce <CJK>
-+<U9F6D> /x8f/xed/xcf <CJK>
-+<U9F6E> /x8f/xed/xd0 <CJK>
-+<U9F6F> /x8f/xed/xd1 <CJK>
-+<U9F70> /x8f/xed/xd2 <CJK>
-+<U9F71> /x8f/xed/xd3 <CJK>
-+<U9F73> /x8f/xed/xd4 <CJK>
-+<U9F75> /x8f/xed/xd5 <CJK>
-+<U9F7A> /x8f/xed/xd6 <CJK>
-+<U9F7D> /x8f/xed/xd7 <CJK>
-+<U9F8F> /x8f/xed/xd8 <CJK>
-+<U9F90> /x8f/xed/xd9 <CJK>
-+<U9F91> /x8f/xed/xda <CJK>
-+<U9F92> /x8f/xed/xdb <CJK>
-+<U9F94> /x8f/xed/xdc <CJK>
-+<U9F96> /x8f/xed/xdd <CJK>
-+<U9F97> /x8f/xed/xde <CJK>
-+<U9F9E> /x8f/xed/xdf <CJK>
-+<U9FA1> /x8f/xed/xe0 <CJK>
-+<U9FA2> /x8f/xed/xe1 <CJK>
-+<U9FA3> /x8f/xed/xe2 <CJK>
-+<U9FA5> /x8f/xed/xe3 <CJK>
-+<U2170> /x8f/xf3/xf3 SMALL ROMAN NUMERAL ONE
-+<U2171> /x8f/xf3/xf4 SMALL ROMAN NUMERAL TWO
-+<U2172> /x8f/xf3/xf5 SMALL ROMAN NUMERAL THREE
-+<U2173> /x8f/xf3/xf6 SMALL ROMAN NUMERAL FOUR
-+<U2174> /x8f/xf3/xf7 SMALL ROMAN NUMERAL FIVE
-+<U2175> /x8f/xf3/xf8 SMALL ROMAN NUMERAL SIX
-+<U2176> /x8f/xf3/xf9 SMALL ROMAN NUMERAL SEVEN
-+<U2177> /x8f/xf3/xfa SMALL ROMAN NUMERAL EIGHT
-+<U2178> /x8f/xf3/xfb SMALL ROMAN NUMERAL NINE
-+<U2179> /x8f/xf3/xfc SMALL ROMAN NUMERAL TEN
-+%IRREVERSIBLE%<U2160> /x8f/xf3/xfd ROMAN NUMERAL ONE
-+%IRREVERSIBLE%<U2161> /x8f/xf3/xfe ROMAN NUMERAL TWO
-+%IRREVERSIBLE%<U2162> /x8f/xf4/xa1 ROMAN NUMERAL THREE
-+%IRREVERSIBLE%<U2163> /x8f/xf4/xa2 ROMAN NUMERAL FOUR
-+%IRREVERSIBLE%<U2164> /x8f/xf4/xa3 ROMAN NUMERAL FIVE
-+%IRREVERSIBLE%<U2165> /x8f/xf4/xa4 ROMAN NUMERAL SIX
-+%IRREVERSIBLE%<U2166> /x8f/xf4/xa5 ROMAN NUMERAL SEVEN
-+%IRREVERSIBLE%<U2167> /x8f/xf4/xa6 ROMAN NUMERAL EIGHT
-+%IRREVERSIBLE%<U2168> /x8f/xf4/xa7 ROMAN NUMERAL NINE
-+%IRREVERSIBLE%<U2169> /x8f/xf4/xa8 ROMAN NUMERAL TEN
-+<UFF07> /x8f/xf4/xa9 FULLWIDTH APOSTROPHE
-+<UFF02> /x8f/xf4/xaa FULLWIDTH QUOTATION MARK
-+%IRREVERSIBLE%<U3231> /x8f/xf4/xab PARENTHESIZED IDEOGRAPH STOCK
-+%IRREVERSIBLE%<U2116> /x8f/xf4/xac NUMERO SIGN
-+%IRREVERSIBLE%<U2121> /x8f/xf4/xad TELEPHONE SIGN
-+<U70BB> /x8f/xf4/xae <CJK>
-+<U4EFC> /x8f/xf4/xaf <CJK>
-+<U50F4> /x8f/xf4/xb0 <CJK>
-+<U51EC> /x8f/xf4/xb1 <CJK>
-+<U5307> /x8f/xf4/xb2 <CJK>
-+<U5324> /x8f/xf4/xb3 <CJK>
-+<UFA0E> /x8f/xf4/xb4 CJK COMPATIBILITY IDEOGRAPH-FA0E
-+<U548A> /x8f/xf4/xb5 <CJK>
-+<U5759> /x8f/xf4/xb6 <CJK>
-+<UFA0F> /x8f/xf4/xb7 CJK COMPATIBILITY IDEOGRAPH-FA0F
-+<UFA10> /x8f/xf4/xb8 CJK COMPATIBILITY IDEOGRAPH-FA10
-+<U589E> /x8f/xf4/xb9 <CJK>
-+<U5BEC> /x8f/xf4/xba <CJK>
-+<U5CF5> /x8f/xf4/xbb <CJK>
-+<U5D53> /x8f/xf4/xbc <CJK>
-+<UFA11> /x8f/xf4/xbd CJK COMPATIBILITY IDEOGRAPH-FA11
-+<U5FB7> /x8f/xf4/xbe <CJK>
-+<U6085> /x8f/xf4/xbf <CJK>
-+<U6120> /x8f/xf4/xc0 <CJK>
-+<U654E> /x8f/xf4/xc1 <CJK>
-+<U663B> /x8f/xf4/xc2 <CJK>
-+<U6665> /x8f/xf4/xc3 <CJK>
-+<UFA12> /x8f/xf4/xc4 CJK COMPATIBILITY IDEOGRAPH-FA12
-+<UF929> /x8f/xf4/xc5 CJK COMPATIBILITY IDEOGRAPH-F929
-+<U6801> /x8f/xf4/xc6 <CJK>
-+<UFA13> /x8f/xf4/xc7 CJK COMPATIBILITY IDEOGRAPH-FA13
-+<UFA14> /x8f/xf4/xc8 CJK COMPATIBILITY IDEOGRAPH-FA14
-+<U6A6B> /x8f/xf4/xc9 <CJK>
-+<U6AE2> /x8f/xf4/xca <CJK>
-+<U6DF8> /x8f/xf4/xcb <CJK>
-+<U6DF2> /x8f/xf4/xcc <CJK>
-+<U7028> /x8f/xf4/xcd <CJK>
-+<UFA15> /x8f/xf4/xce CJK COMPATIBILITY IDEOGRAPH-FA15
-+<UFA16> /x8f/xf4/xcf CJK COMPATIBILITY IDEOGRAPH-FA16
-+<U7501> /x8f/xf4/xd0 <CJK>
-+<U7682> /x8f/xf4/xd1 <CJK>
-+<U769E> /x8f/xf4/xd2 <CJK>
-+<UFA17> /x8f/xf4/xd3 CJK COMPATIBILITY IDEOGRAPH-FA17
-+<U7930> /x8f/xf4/xd4 <CJK>
-+<UFA18> /x8f/xf4/xd5 CJK COMPATIBILITY IDEOGRAPH-FA18
-+<UFA19> /x8f/xf4/xd6 CJK COMPATIBILITY IDEOGRAPH-FA19
-+<UFA1A> /x8f/xf4/xd7 CJK COMPATIBILITY IDEOGRAPH-FA1A
-+<UFA1B> /x8f/xf4/xd8 CJK COMPATIBILITY IDEOGRAPH-FA1B
-+<U7AE7> /x8f/xf4/xd9 <CJK>
-+<UFA1C> /x8f/xf4/xda CJK COMPATIBILITY IDEOGRAPH-FA1C
-+<UFA1D> /x8f/xf4/xdb CJK COMPATIBILITY IDEOGRAPH-FA1D
-+<U7DA0> /x8f/xf4/xdc <CJK>
-+<U7DD6> /x8f/xf4/xdd <CJK>
-+<UFA1E> /x8f/xf4/xde CJK COMPATIBILITY IDEOGRAPH-FA1E
-+<U8362> /x8f/xf4/xdf <CJK>
-+<UFA1F> /x8f/xf4/xe0 CJK COMPATIBILITY IDEOGRAPH-FA1F
-+<U85B0> /x8f/xf4/xe1 <CJK>
-+<UFA20> /x8f/xf4/xe2 CJK COMPATIBILITY IDEOGRAPH-FA20
-+<UFA21> /x8f/xf4/xe3 CJK COMPATIBILITY IDEOGRAPH-FA21
-+<U8807> /x8f/xf4/xe4 <CJK>
-+<UFA22> /x8f/xf4/xe5 CJK COMPATIBILITY IDEOGRAPH-FA22
-+<U8B7F> /x8f/xf4/xe6 <CJK>
-+<U8CF4> /x8f/xf4/xe7 <CJK>
-+<U8D76> /x8f/xf4/xe8 <CJK>
-+<UFA23> /x8f/xf4/xe9 CJK COMPATIBILITY IDEOGRAPH-FA23
-+<UFA24> /x8f/xf4/xea CJK COMPATIBILITY IDEOGRAPH-FA24
-+<UFA25> /x8f/xf4/xeb CJK COMPATIBILITY IDEOGRAPH-FA25
-+<U90DE> /x8f/xf4/xec <CJK>
-+<UFA26> /x8f/xf4/xed CJK COMPATIBILITY IDEOGRAPH-FA26
-+<U9115> /x8f/xf4/xee <CJK>
-+<UFA27> /x8f/xf4/xef CJK COMPATIBILITY IDEOGRAPH-FA27
-+<UFA28> /x8f/xf4/xf0 CJK COMPATIBILITY IDEOGRAPH-FA28
-+<U9592> /x8f/xf4/xf1 <CJK>
-+<UF9DC> /x8f/xf4/xf2 CJK COMPATIBILITY IDEOGRAPH-F9DC
-+<UFA29> /x8f/xf4/xf3 CJK COMPATIBILITY IDEOGRAPH-FA29
-+<U973B> /x8f/xf4/xf4 <CJK>
-+<U974D> /x8f/xf4/xf5 <CJK>
-+<U9751> /x8f/xf4/xf6 <CJK>
-+<UFA2A> /x8f/xf4/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2A
-+<UFA2B> /x8f/xf4/xf8 CJK COMPATIBILITY IDEOGRAPH-FA2B
-+<UFA2C> /x8f/xf4/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C
-+<U999E> /x8f/xf4/xfa <CJK>
-+<U9AD9> /x8f/xf4/xfb <CJK>
-+<U9B72> /x8f/xf4/xfc <CJK>
-+<UFA2D> /x8f/xf4/xfd CJK COMPATIBILITY IDEOGRAPH-FA2D
-+<U9ED1> /x8f/xf4/xfe <CJK>
-+
-+%
-+% User Defined Characters (EUC Code Set 3)
-+%
-+<UE3AC> /x8f/xf5/xa1 <Private Use>
-+<UE3AD> /x8f/xf5/xa2 <Private Use>
-+<UE3AE> /x8f/xf5/xa3 <Private Use>
-+<UE3AF> /x8f/xf5/xa4 <Private Use>
-+<UE3B0> /x8f/xf5/xa5 <Private Use>
-+<UE3B1> /x8f/xf5/xa6 <Private Use>
-+<UE3B2> /x8f/xf5/xa7 <Private Use>
-+<UE3B3> /x8f/xf5/xa8 <Private Use>
-+<UE3B4> /x8f/xf5/xa9 <Private Use>
-+<UE3B5> /x8f/xf5/xaa <Private Use>
-+<UE3B6> /x8f/xf5/xab <Private Use>
-+<UE3B7> /x8f/xf5/xac <Private Use>
-+<UE3B8> /x8f/xf5/xad <Private Use>
-+<UE3B9> /x8f/xf5/xae <Private Use>
-+<UE3BA> /x8f/xf5/xaf <Private Use>
-+<UE3BB> /x8f/xf5/xb0 <Private Use>
-+<UE3BC> /x8f/xf5/xb1 <Private Use>
-+<UE3BD> /x8f/xf5/xb2 <Private Use>
-+<UE3BE> /x8f/xf5/xb3 <Private Use>
-+<UE3BF> /x8f/xf5/xb4 <Private Use>
-+<UE3C0> /x8f/xf5/xb5 <Private Use>
-+<UE3C1> /x8f/xf5/xb6 <Private Use>
-+<UE3C2> /x8f/xf5/xb7 <Private Use>
-+<UE3C3> /x8f/xf5/xb8 <Private Use>
-+<UE3C4> /x8f/xf5/xb9 <Private Use>
-+<UE3C5> /x8f/xf5/xba <Private Use>
-+<UE3C6> /x8f/xf5/xbb <Private Use>
-+<UE3C7> /x8f/xf5/xbc <Private Use>
-+<UE3C8> /x8f/xf5/xbd <Private Use>
-+<UE3C9> /x8f/xf5/xbe <Private Use>
-+<UE3CA> /x8f/xf5/xbf <Private Use>
-+<UE3CB> /x8f/xf5/xc0 <Private Use>
-+<UE3CC> /x8f/xf5/xc1 <Private Use>
-+<UE3CD> /x8f/xf5/xc2 <Private Use>
-+<UE3CE> /x8f/xf5/xc3 <Private Use>
-+<UE3CF> /x8f/xf5/xc4 <Private Use>
-+<UE3D0> /x8f/xf5/xc5 <Private Use>
-+<UE3D1> /x8f/xf5/xc6 <Private Use>
-+<UE3D2> /x8f/xf5/xc7 <Private Use>
-+<UE3D3> /x8f/xf5/xc8 <Private Use>
-+<UE3D4> /x8f/xf5/xc9 <Private Use>
-+<UE3D5> /x8f/xf5/xca <Private Use>
-+<UE3D6> /x8f/xf5/xcb <Private Use>
-+<UE3D7> /x8f/xf5/xcc <Private Use>
-+<UE3D8> /x8f/xf5/xcd <Private Use>
-+<UE3D9> /x8f/xf5/xce <Private Use>
-+<UE3DA> /x8f/xf5/xcf <Private Use>
-+<UE3DB> /x8f/xf5/xd0 <Private Use>
-+<UE3DC> /x8f/xf5/xd1 <Private Use>
-+<UE3DD> /x8f/xf5/xd2 <Private Use>
-+<UE3DE> /x8f/xf5/xd3 <Private Use>
-+<UE3DF> /x8f/xf5/xd4 <Private Use>
-+<UE3E0> /x8f/xf5/xd5 <Private Use>
-+<UE3E1> /x8f/xf5/xd6 <Private Use>
-+<UE3E2> /x8f/xf5/xd7 <Private Use>
-+<UE3E3> /x8f/xf5/xd8 <Private Use>
-+<UE3E4> /x8f/xf5/xd9 <Private Use>
-+<UE3E5> /x8f/xf5/xda <Private Use>
-+<UE3E6> /x8f/xf5/xdb <Private Use>
-+<UE3E7> /x8f/xf5/xdc <Private Use>
-+<UE3E8> /x8f/xf5/xdd <Private Use>
-+<UE3E9> /x8f/xf5/xde <Private Use>
-+<UE3EA> /x8f/xf5/xdf <Private Use>
-+<UE3EB> /x8f/xf5/xe0 <Private Use>
-+<UE3EC> /x8f/xf5/xe1 <Private Use>
-+<UE3ED> /x8f/xf5/xe2 <Private Use>
-+<UE3EE> /x8f/xf5/xe3 <Private Use>
-+<UE3EF> /x8f/xf5/xe4 <Private Use>
-+<UE3F0> /x8f/xf5/xe5 <Private Use>
-+<UE3F1> /x8f/xf5/xe6 <Private Use>
-+<UE3F2> /x8f/xf5/xe7 <Private Use>
-+<UE3F3> /x8f/xf5/xe8 <Private Use>
-+<UE3F4> /x8f/xf5/xe9 <Private Use>
-+<UE3F5> /x8f/xf5/xea <Private Use>
-+<UE3F6> /x8f/xf5/xeb <Private Use>
-+<UE3F7> /x8f/xf5/xec <Private Use>
-+<UE3F8> /x8f/xf5/xed <Private Use>
-+<UE3F9> /x8f/xf5/xee <Private Use>
-+<UE3FA> /x8f/xf5/xef <Private Use>
-+<UE3FB> /x8f/xf5/xf0 <Private Use>
-+<UE3FC> /x8f/xf5/xf1 <Private Use>
-+<UE3FD> /x8f/xf5/xf2 <Private Use>
-+<UE3FE> /x8f/xf5/xf3 <Private Use>
-+<UE3FF> /x8f/xf5/xf4 <Private Use>
-+<UE400> /x8f/xf5/xf5 <Private Use>
-+<UE401> /x8f/xf5/xf6 <Private Use>
-+<UE402> /x8f/xf5/xf7 <Private Use>
-+<UE403> /x8f/xf5/xf8 <Private Use>
-+<UE404> /x8f/xf5/xf9 <Private Use>
-+<UE405> /x8f/xf5/xfa <Private Use>
-+<UE406> /x8f/xf5/xfb <Private Use>
-+<UE407> /x8f/xf5/xfc <Private Use>
-+<UE408> /x8f/xf5/xfd <Private Use>
-+<UE409> /x8f/xf5/xfe <Private Use>
-+<UE40A> /x8f/xf6/xa1 <Private Use>
-+<UE40B> /x8f/xf6/xa2 <Private Use>
-+<UE40C> /x8f/xf6/xa3 <Private Use>
-+<UE40D> /x8f/xf6/xa4 <Private Use>
-+<UE40E> /x8f/xf6/xa5 <Private Use>
-+<UE40F> /x8f/xf6/xa6 <Private Use>
-+<UE410> /x8f/xf6/xa7 <Private Use>
-+<UE411> /x8f/xf6/xa8 <Private Use>
-+<UE412> /x8f/xf6/xa9 <Private Use>
-+<UE413> /x8f/xf6/xaa <Private Use>
-+<UE414> /x8f/xf6/xab <Private Use>
-+<UE415> /x8f/xf6/xac <Private Use>
-+<UE416> /x8f/xf6/xad <Private Use>
-+<UE417> /x8f/xf6/xae <Private Use>
-+<UE418> /x8f/xf6/xaf <Private Use>
-+<UE419> /x8f/xf6/xb0 <Private Use>
-+<UE41A> /x8f/xf6/xb1 <Private Use>
-+<UE41B> /x8f/xf6/xb2 <Private Use>
-+<UE41C> /x8f/xf6/xb3 <Private Use>
-+<UE41D> /x8f/xf6/xb4 <Private Use>
-+<UE41E> /x8f/xf6/xb5 <Private Use>
-+<UE41F> /x8f/xf6/xb6 <Private Use>
-+<UE420> /x8f/xf6/xb7 <Private Use>
-+<UE421> /x8f/xf6/xb8 <Private Use>
-+<UE422> /x8f/xf6/xb9 <Private Use>
-+<UE423> /x8f/xf6/xba <Private Use>
-+<UE424> /x8f/xf6/xbb <Private Use>
-+<UE425> /x8f/xf6/xbc <Private Use>
-+<UE426> /x8f/xf6/xbd <Private Use>
-+<UE427> /x8f/xf6/xbe <Private Use>
-+<UE428> /x8f/xf6/xbf <Private Use>
-+<UE429> /x8f/xf6/xc0 <Private Use>
-+<UE42A> /x8f/xf6/xc1 <Private Use>
-+<UE42B> /x8f/xf6/xc2 <Private Use>
-+<UE42C> /x8f/xf6/xc3 <Private Use>
-+<UE42D> /x8f/xf6/xc4 <Private Use>
-+<UE42E> /x8f/xf6/xc5 <Private Use>
-+<UE42F> /x8f/xf6/xc6 <Private Use>
-+<UE430> /x8f/xf6/xc7 <Private Use>
-+<UE431> /x8f/xf6/xc8 <Private Use>
-+<UE432> /x8f/xf6/xc9 <Private Use>
-+<UE433> /x8f/xf6/xca <Private Use>
-+<UE434> /x8f/xf6/xcb <Private Use>
-+<UE435> /x8f/xf6/xcc <Private Use>
-+<UE436> /x8f/xf6/xcd <Private Use>
-+<UE437> /x8f/xf6/xce <Private Use>
-+<UE438> /x8f/xf6/xcf <Private Use>
-+<UE439> /x8f/xf6/xd0 <Private Use>
-+<UE43A> /x8f/xf6/xd1 <Private Use>
-+<UE43B> /x8f/xf6/xd2 <Private Use>
-+<UE43C> /x8f/xf6/xd3 <Private Use>
-+<UE43D> /x8f/xf6/xd4 <Private Use>
-+<UE43E> /x8f/xf6/xd5 <Private Use>
-+<UE43F> /x8f/xf6/xd6 <Private Use>
-+<UE440> /x8f/xf6/xd7 <Private Use>
-+<UE441> /x8f/xf6/xd8 <Private Use>
-+<UE442> /x8f/xf6/xd9 <Private Use>
-+<UE443> /x8f/xf6/xda <Private Use>
-+<UE444> /x8f/xf6/xdb <Private Use>
-+<UE445> /x8f/xf6/xdc <Private Use>
-+<UE446> /x8f/xf6/xdd <Private Use>
-+<UE447> /x8f/xf6/xde <Private Use>
-+<UE448> /x8f/xf6/xdf <Private Use>
-+<UE449> /x8f/xf6/xe0 <Private Use>
-+<UE44A> /x8f/xf6/xe1 <Private Use>
-+<UE44B> /x8f/xf6/xe2 <Private Use>
-+<UE44C> /x8f/xf6/xe3 <Private Use>
-+<UE44D> /x8f/xf6/xe4 <Private Use>
-+<UE44E> /x8f/xf6/xe5 <Private Use>
-+<UE44F> /x8f/xf6/xe6 <Private Use>
-+<UE450> /x8f/xf6/xe7 <Private Use>
-+<UE451> /x8f/xf6/xe8 <Private Use>
-+<UE452> /x8f/xf6/xe9 <Private Use>
-+<UE453> /x8f/xf6/xea <Private Use>
-+<UE454> /x8f/xf6/xeb <Private Use>
-+<UE455> /x8f/xf6/xec <Private Use>
-+<UE456> /x8f/xf6/xed <Private Use>
-+<UE457> /x8f/xf6/xee <Private Use>
-+<UE458> /x8f/xf6/xef <Private Use>
-+<UE459> /x8f/xf6/xf0 <Private Use>
-+<UE45A> /x8f/xf6/xf1 <Private Use>
-+<UE45B> /x8f/xf6/xf2 <Private Use>
-+<UE45C> /x8f/xf6/xf3 <Private Use>
-+<UE45D> /x8f/xf6/xf4 <Private Use>
-+<UE45E> /x8f/xf6/xf5 <Private Use>
-+<UE45F> /x8f/xf6/xf6 <Private Use>
-+<UE460> /x8f/xf6/xf7 <Private Use>
-+<UE461> /x8f/xf6/xf8 <Private Use>
-+<UE462> /x8f/xf6/xf9 <Private Use>
-+<UE463> /x8f/xf6/xfa <Private Use>
-+<UE464> /x8f/xf6/xfb <Private Use>
-+<UE465> /x8f/xf6/xfc <Private Use>
-+<UE466> /x8f/xf6/xfd <Private Use>
-+<UE467> /x8f/xf6/xfe <Private Use>
-+<UE468> /x8f/xf7/xa1 <Private Use>
-+<UE469> /x8f/xf7/xa2 <Private Use>
-+<UE46A> /x8f/xf7/xa3 <Private Use>
-+<UE46B> /x8f/xf7/xa4 <Private Use>
-+<UE46C> /x8f/xf7/xa5 <Private Use>
-+<UE46D> /x8f/xf7/xa6 <Private Use>
-+<UE46E> /x8f/xf7/xa7 <Private Use>
-+<UE46F> /x8f/xf7/xa8 <Private Use>
-+<UE470> /x8f/xf7/xa9 <Private Use>
-+<UE471> /x8f/xf7/xaa <Private Use>
-+<UE472> /x8f/xf7/xab <Private Use>
-+<UE473> /x8f/xf7/xac <Private Use>
-+<UE474> /x8f/xf7/xad <Private Use>
-+<UE475> /x8f/xf7/xae <Private Use>
-+<UE476> /x8f/xf7/xaf <Private Use>
-+<UE477> /x8f/xf7/xb0 <Private Use>
-+<UE478> /x8f/xf7/xb1 <Private Use>
-+<UE479> /x8f/xf7/xb2 <Private Use>
-+<UE47A> /x8f/xf7/xb3 <Private Use>
-+<UE47B> /x8f/xf7/xb4 <Private Use>
-+<UE47C> /x8f/xf7/xb5 <Private Use>
-+<UE47D> /x8f/xf7/xb6 <Private Use>
-+<UE47E> /x8f/xf7/xb7 <Private Use>
-+<UE47F> /x8f/xf7/xb8 <Private Use>
-+<UE480> /x8f/xf7/xb9 <Private Use>
-+<UE481> /x8f/xf7/xba <Private Use>
-+<UE482> /x8f/xf7/xbb <Private Use>
-+<UE483> /x8f/xf7/xbc <Private Use>
-+<UE484> /x8f/xf7/xbd <Private Use>
-+<UE485> /x8f/xf7/xbe <Private Use>
-+<UE486> /x8f/xf7/xbf <Private Use>
-+<UE487> /x8f/xf7/xc0 <Private Use>
-+<UE488> /x8f/xf7/xc1 <Private Use>
-+<UE489> /x8f/xf7/xc2 <Private Use>
-+<UE48A> /x8f/xf7/xc3 <Private Use>
-+<UE48B> /x8f/xf7/xc4 <Private Use>
-+<UE48C> /x8f/xf7/xc5 <Private Use>
-+<UE48D> /x8f/xf7/xc6 <Private Use>
-+<UE48E> /x8f/xf7/xc7 <Private Use>
-+<UE48F> /x8f/xf7/xc8 <Private Use>
-+<UE490> /x8f/xf7/xc9 <Private Use>
-+<UE491> /x8f/xf7/xca <Private Use>
-+<UE492> /x8f/xf7/xcb <Private Use>
-+<UE493> /x8f/xf7/xcc <Private Use>
-+<UE494> /x8f/xf7/xcd <Private Use>
-+<UE495> /x8f/xf7/xce <Private Use>
-+<UE496> /x8f/xf7/xcf <Private Use>
-+<UE497> /x8f/xf7/xd0 <Private Use>
-+<UE498> /x8f/xf7/xd1 <Private Use>
-+<UE499> /x8f/xf7/xd2 <Private Use>
-+<UE49A> /x8f/xf7/xd3 <Private Use>
-+<UE49B> /x8f/xf7/xd4 <Private Use>
-+<UE49C> /x8f/xf7/xd5 <Private Use>
-+<UE49D> /x8f/xf7/xd6 <Private Use>
-+<UE49E> /x8f/xf7/xd7 <Private Use>
-+<UE49F> /x8f/xf7/xd8 <Private Use>
-+<UE4A0> /x8f/xf7/xd9 <Private Use>
-+<UE4A1> /x8f/xf7/xda <Private Use>
-+<UE4A2> /x8f/xf7/xdb <Private Use>
-+<UE4A3> /x8f/xf7/xdc <Private Use>
-+<UE4A4> /x8f/xf7/xdd <Private Use>
-+<UE4A5> /x8f/xf7/xde <Private Use>
-+<UE4A6> /x8f/xf7/xdf <Private Use>
-+<UE4A7> /x8f/xf7/xe0 <Private Use>
-+<UE4A8> /x8f/xf7/xe1 <Private Use>
-+<UE4A9> /x8f/xf7/xe2 <Private Use>
-+<UE4AA> /x8f/xf7/xe3 <Private Use>
-+<UE4AB> /x8f/xf7/xe4 <Private Use>
-+<UE4AC> /x8f/xf7/xe5 <Private Use>
-+<UE4AD> /x8f/xf7/xe6 <Private Use>
-+<UE4AE> /x8f/xf7/xe7 <Private Use>
-+<UE4AF> /x8f/xf7/xe8 <Private Use>
-+<UE4B0> /x8f/xf7/xe9 <Private Use>
-+<UE4B1> /x8f/xf7/xea <Private Use>
-+<UE4B2> /x8f/xf7/xeb <Private Use>
-+<UE4B3> /x8f/xf7/xec <Private Use>
-+<UE4B4> /x8f/xf7/xed <Private Use>
-+<UE4B5> /x8f/xf7/xee <Private Use>
-+<UE4B6> /x8f/xf7/xef <Private Use>
-+<UE4B7> /x8f/xf7/xf0 <Private Use>
-+<UE4B8> /x8f/xf7/xf1 <Private Use>
-+<UE4B9> /x8f/xf7/xf2 <Private Use>
-+<UE4BA> /x8f/xf7/xf3 <Private Use>
-+<UE4BB> /x8f/xf7/xf4 <Private Use>
-+<UE4BC> /x8f/xf7/xf5 <Private Use>
-+<UE4BD> /x8f/xf7/xf6 <Private Use>
-+<UE4BE> /x8f/xf7/xf7 <Private Use>
-+<UE4BF> /x8f/xf7/xf8 <Private Use>
-+<UE4C0> /x8f/xf7/xf9 <Private Use>
-+<UE4C1> /x8f/xf7/xfa <Private Use>
-+<UE4C2> /x8f/xf7/xfb <Private Use>
-+<UE4C3> /x8f/xf7/xfc <Private Use>
-+<UE4C4> /x8f/xf7/xfd <Private Use>
-+<UE4C5> /x8f/xf7/xfe <Private Use>
-+<UE4C6> /x8f/xf8/xa1 <Private Use>
-+<UE4C7> /x8f/xf8/xa2 <Private Use>
-+<UE4C8> /x8f/xf8/xa3 <Private Use>
-+<UE4C9> /x8f/xf8/xa4 <Private Use>
-+<UE4CA> /x8f/xf8/xa5 <Private Use>
-+<UE4CB> /x8f/xf8/xa6 <Private Use>
-+<UE4CC> /x8f/xf8/xa7 <Private Use>
-+<UE4CD> /x8f/xf8/xa8 <Private Use>
-+<UE4CE> /x8f/xf8/xa9 <Private Use>
-+<UE4CF> /x8f/xf8/xaa <Private Use>
-+<UE4D0> /x8f/xf8/xab <Private Use>
-+<UE4D1> /x8f/xf8/xac <Private Use>
-+<UE4D2> /x8f/xf8/xad <Private Use>
-+<UE4D3> /x8f/xf8/xae <Private Use>
-+<UE4D4> /x8f/xf8/xaf <Private Use>
-+<UE4D5> /x8f/xf8/xb0 <Private Use>
-+<UE4D6> /x8f/xf8/xb1 <Private Use>
-+<UE4D7> /x8f/xf8/xb2 <Private Use>
-+<UE4D8> /x8f/xf8/xb3 <Private Use>
-+<UE4D9> /x8f/xf8/xb4 <Private Use>
-+<UE4DA> /x8f/xf8/xb5 <Private Use>
-+<UE4DB> /x8f/xf8/xb6 <Private Use>
-+<UE4DC> /x8f/xf8/xb7 <Private Use>
-+<UE4DD> /x8f/xf8/xb8 <Private Use>
-+<UE4DE> /x8f/xf8/xb9 <Private Use>
-+<UE4DF> /x8f/xf8/xba <Private Use>
-+<UE4E0> /x8f/xf8/xbb <Private Use>
-+<UE4E1> /x8f/xf8/xbc <Private Use>
-+<UE4E2> /x8f/xf8/xbd <Private Use>
-+<UE4E3> /x8f/xf8/xbe <Private Use>
-+<UE4E4> /x8f/xf8/xbf <Private Use>
-+<UE4E5> /x8f/xf8/xc0 <Private Use>
-+<UE4E6> /x8f/xf8/xc1 <Private Use>
-+<UE4E7> /x8f/xf8/xc2 <Private Use>
-+<UE4E8> /x8f/xf8/xc3 <Private Use>
-+<UE4E9> /x8f/xf8/xc4 <Private Use>
-+<UE4EA> /x8f/xf8/xc5 <Private Use>
-+<UE4EB> /x8f/xf8/xc6 <Private Use>
-+<UE4EC> /x8f/xf8/xc7 <Private Use>
-+<UE4ED> /x8f/xf8/xc8 <Private Use>
-+<UE4EE> /x8f/xf8/xc9 <Private Use>
-+<UE4EF> /x8f/xf8/xca <Private Use>
-+<UE4F0> /x8f/xf8/xcb <Private Use>
-+<UE4F1> /x8f/xf8/xcc <Private Use>
-+<UE4F2> /x8f/xf8/xcd <Private Use>
-+<UE4F3> /x8f/xf8/xce <Private Use>
-+<UE4F4> /x8f/xf8/xcf <Private Use>
-+<UE4F5> /x8f/xf8/xd0 <Private Use>
-+<UE4F6> /x8f/xf8/xd1 <Private Use>
-+<UE4F7> /x8f/xf8/xd2 <Private Use>
-+<UE4F8> /x8f/xf8/xd3 <Private Use>
-+<UE4F9> /x8f/xf8/xd4 <Private Use>
-+<UE4FA> /x8f/xf8/xd5 <Private Use>
-+<UE4FB> /x8f/xf8/xd6 <Private Use>
-+<UE4FC> /x8f/xf8/xd7 <Private Use>
-+<UE4FD> /x8f/xf8/xd8 <Private Use>
-+<UE4FE> /x8f/xf8/xd9 <Private Use>
-+<UE4FF> /x8f/xf8/xda <Private Use>
-+<UE500> /x8f/xf8/xdb <Private Use>
-+<UE501> /x8f/xf8/xdc <Private Use>
-+<UE502> /x8f/xf8/xdd <Private Use>
-+<UE503> /x8f/xf8/xde <Private Use>
-+<UE504> /x8f/xf8/xdf <Private Use>
-+<UE505> /x8f/xf8/xe0 <Private Use>
-+<UE506> /x8f/xf8/xe1 <Private Use>
-+<UE507> /x8f/xf8/xe2 <Private Use>
-+<UE508> /x8f/xf8/xe3 <Private Use>
-+<UE509> /x8f/xf8/xe4 <Private Use>
-+<UE50A> /x8f/xf8/xe5 <Private Use>
-+<UE50B> /x8f/xf8/xe6 <Private Use>
-+<UE50C> /x8f/xf8/xe7 <Private Use>
-+<UE50D> /x8f/xf8/xe8 <Private Use>
-+<UE50E> /x8f/xf8/xe9 <Private Use>
-+<UE50F> /x8f/xf8/xea <Private Use>
-+<UE510> /x8f/xf8/xeb <Private Use>
-+<UE511> /x8f/xf8/xec <Private Use>
-+<UE512> /x8f/xf8/xed <Private Use>
-+<UE513> /x8f/xf8/xee <Private Use>
-+<UE514> /x8f/xf8/xef <Private Use>
-+<UE515> /x8f/xf8/xf0 <Private Use>
-+<UE516> /x8f/xf8/xf1 <Private Use>
-+<UE517> /x8f/xf8/xf2 <Private Use>
-+<UE518> /x8f/xf8/xf3 <Private Use>
-+<UE519> /x8f/xf8/xf4 <Private Use>
-+<UE51A> /x8f/xf8/xf5 <Private Use>
-+<UE51B> /x8f/xf8/xf6 <Private Use>
-+<UE51C> /x8f/xf8/xf7 <Private Use>
-+<UE51D> /x8f/xf8/xf8 <Private Use>
-+<UE51E> /x8f/xf8/xf9 <Private Use>
-+<UE51F> /x8f/xf8/xfa <Private Use>
-+<UE520> /x8f/xf8/xfb <Private Use>
-+<UE521> /x8f/xf8/xfc <Private Use>
-+<UE522> /x8f/xf8/xfd <Private Use>
-+<UE523> /x8f/xf8/xfe <Private Use>
-+<UE524> /x8f/xf9/xa1 <Private Use>
-+<UE525> /x8f/xf9/xa2 <Private Use>
-+<UE526> /x8f/xf9/xa3 <Private Use>
-+<UE527> /x8f/xf9/xa4 <Private Use>
-+<UE528> /x8f/xf9/xa5 <Private Use>
-+<UE529> /x8f/xf9/xa6 <Private Use>
-+<UE52A> /x8f/xf9/xa7 <Private Use>
-+<UE52B> /x8f/xf9/xa8 <Private Use>
-+<UE52C> /x8f/xf9/xa9 <Private Use>
-+<UE52D> /x8f/xf9/xaa <Private Use>
-+<UE52E> /x8f/xf9/xab <Private Use>
-+<UE52F> /x8f/xf9/xac <Private Use>
-+<UE530> /x8f/xf9/xad <Private Use>
-+<UE531> /x8f/xf9/xae <Private Use>
-+<UE532> /x8f/xf9/xaf <Private Use>
-+<UE533> /x8f/xf9/xb0 <Private Use>
-+<UE534> /x8f/xf9/xb1 <Private Use>
-+<UE535> /x8f/xf9/xb2 <Private Use>
-+<UE536> /x8f/xf9/xb3 <Private Use>
-+<UE537> /x8f/xf9/xb4 <Private Use>
-+<UE538> /x8f/xf9/xb5 <Private Use>
-+<UE539> /x8f/xf9/xb6 <Private Use>
-+<UE53A> /x8f/xf9/xb7 <Private Use>
-+<UE53B> /x8f/xf9/xb8 <Private Use>
-+<UE53C> /x8f/xf9/xb9 <Private Use>
-+<UE53D> /x8f/xf9/xba <Private Use>
-+<UE53E> /x8f/xf9/xbb <Private Use>
-+<UE53F> /x8f/xf9/xbc <Private Use>
-+<UE540> /x8f/xf9/xbd <Private Use>
-+<UE541> /x8f/xf9/xbe <Private Use>
-+<UE542> /x8f/xf9/xbf <Private Use>
-+<UE543> /x8f/xf9/xc0 <Private Use>
-+<UE544> /x8f/xf9/xc1 <Private Use>
-+<UE545> /x8f/xf9/xc2 <Private Use>
-+<UE546> /x8f/xf9/xc3 <Private Use>
-+<UE547> /x8f/xf9/xc4 <Private Use>
-+<UE548> /x8f/xf9/xc5 <Private Use>
-+<UE549> /x8f/xf9/xc6 <Private Use>
-+<UE54A> /x8f/xf9/xc7 <Private Use>
-+<UE54B> /x8f/xf9/xc8 <Private Use>
-+<UE54C> /x8f/xf9/xc9 <Private Use>
-+<UE54D> /x8f/xf9/xca <Private Use>
-+<UE54E> /x8f/xf9/xcb <Private Use>
-+<UE54F> /x8f/xf9/xcc <Private Use>
-+<UE550> /x8f/xf9/xcd <Private Use>
-+<UE551> /x8f/xf9/xce <Private Use>
-+<UE552> /x8f/xf9/xcf <Private Use>
-+<UE553> /x8f/xf9/xd0 <Private Use>
-+<UE554> /x8f/xf9/xd1 <Private Use>
-+<UE555> /x8f/xf9/xd2 <Private Use>
-+<UE556> /x8f/xf9/xd3 <Private Use>
-+<UE557> /x8f/xf9/xd4 <Private Use>
-+<UE558> /x8f/xf9/xd5 <Private Use>
-+<UE559> /x8f/xf9/xd6 <Private Use>
-+<UE55A> /x8f/xf9/xd7 <Private Use>
-+<UE55B> /x8f/xf9/xd8 <Private Use>
-+<UE55C> /x8f/xf9/xd9 <Private Use>
-+<UE55D> /x8f/xf9/xda <Private Use>
-+<UE55E> /x8f/xf9/xdb <Private Use>
-+<UE55F> /x8f/xf9/xdc <Private Use>
-+<UE560> /x8f/xf9/xdd <Private Use>
-+<UE561> /x8f/xf9/xde <Private Use>
-+<UE562> /x8f/xf9/xdf <Private Use>
-+<UE563> /x8f/xf9/xe0 <Private Use>
-+<UE564> /x8f/xf9/xe1 <Private Use>
-+<UE565> /x8f/xf9/xe2 <Private Use>
-+<UE566> /x8f/xf9/xe3 <Private Use>
-+<UE567> /x8f/xf9/xe4 <Private Use>
-+<UE568> /x8f/xf9/xe5 <Private Use>
-+<UE569> /x8f/xf9/xe6 <Private Use>
-+<UE56A> /x8f/xf9/xe7 <Private Use>
-+<UE56B> /x8f/xf9/xe8 <Private Use>
-+<UE56C> /x8f/xf9/xe9 <Private Use>
-+<UE56D> /x8f/xf9/xea <Private Use>
-+<UE56E> /x8f/xf9/xeb <Private Use>
-+<UE56F> /x8f/xf9/xec <Private Use>
-+<UE570> /x8f/xf9/xed <Private Use>
-+<UE571> /x8f/xf9/xee <Private Use>
-+<UE572> /x8f/xf9/xef <Private Use>
-+<UE573> /x8f/xf9/xf0 <Private Use>
-+<UE574> /x8f/xf9/xf1 <Private Use>
-+<UE575> /x8f/xf9/xf2 <Private Use>
-+<UE576> /x8f/xf9/xf3 <Private Use>
-+<UE577> /x8f/xf9/xf4 <Private Use>
-+<UE578> /x8f/xf9/xf5 <Private Use>
-+<UE579> /x8f/xf9/xf6 <Private Use>
-+<UE57A> /x8f/xf9/xf7 <Private Use>
-+<UE57B> /x8f/xf9/xf8 <Private Use>
-+<UE57C> /x8f/xf9/xf9 <Private Use>
-+<UE57D> /x8f/xf9/xfa <Private Use>
-+<UE57E> /x8f/xf9/xfb <Private Use>
-+<UE57F> /x8f/xf9/xfc <Private Use>
-+<UE580> /x8f/xf9/xfd <Private Use>
-+<UE581> /x8f/xf9/xfe <Private Use>
-+<UE582> /x8f/xfa/xa1 <Private Use>
-+<UE583> /x8f/xfa/xa2 <Private Use>
-+<UE584> /x8f/xfa/xa3 <Private Use>
-+<UE585> /x8f/xfa/xa4 <Private Use>
-+<UE586> /x8f/xfa/xa5 <Private Use>
-+<UE587> /x8f/xfa/xa6 <Private Use>
-+<UE588> /x8f/xfa/xa7 <Private Use>
-+<UE589> /x8f/xfa/xa8 <Private Use>
-+<UE58A> /x8f/xfa/xa9 <Private Use>
-+<UE58B> /x8f/xfa/xaa <Private Use>
-+<UE58C> /x8f/xfa/xab <Private Use>
-+<UE58D> /x8f/xfa/xac <Private Use>
-+<UE58E> /x8f/xfa/xad <Private Use>
-+<UE58F> /x8f/xfa/xae <Private Use>
-+<UE590> /x8f/xfa/xaf <Private Use>
-+<UE591> /x8f/xfa/xb0 <Private Use>
-+<UE592> /x8f/xfa/xb1 <Private Use>
-+<UE593> /x8f/xfa/xb2 <Private Use>
-+<UE594> /x8f/xfa/xb3 <Private Use>
-+<UE595> /x8f/xfa/xb4 <Private Use>
-+<UE596> /x8f/xfa/xb5 <Private Use>
-+<UE597> /x8f/xfa/xb6 <Private Use>
-+<UE598> /x8f/xfa/xb7 <Private Use>
-+<UE599> /x8f/xfa/xb8 <Private Use>
-+<UE59A> /x8f/xfa/xb9 <Private Use>
-+<UE59B> /x8f/xfa/xba <Private Use>
-+<UE59C> /x8f/xfa/xbb <Private Use>
-+<UE59D> /x8f/xfa/xbc <Private Use>
-+<UE59E> /x8f/xfa/xbd <Private Use>
-+<UE59F> /x8f/xfa/xbe <Private Use>
-+<UE5A0> /x8f/xfa/xbf <Private Use>
-+<UE5A1> /x8f/xfa/xc0 <Private Use>
-+<UE5A2> /x8f/xfa/xc1 <Private Use>
-+<UE5A3> /x8f/xfa/xc2 <Private Use>
-+<UE5A4> /x8f/xfa/xc3 <Private Use>
-+<UE5A5> /x8f/xfa/xc4 <Private Use>
-+<UE5A6> /x8f/xfa/xc5 <Private Use>
-+<UE5A7> /x8f/xfa/xc6 <Private Use>
-+<UE5A8> /x8f/xfa/xc7 <Private Use>
-+<UE5A9> /x8f/xfa/xc8 <Private Use>
-+<UE5AA> /x8f/xfa/xc9 <Private Use>
-+<UE5AB> /x8f/xfa/xca <Private Use>
-+<UE5AC> /x8f/xfa/xcb <Private Use>
-+<UE5AD> /x8f/xfa/xcc <Private Use>
-+<UE5AE> /x8f/xfa/xcd <Private Use>
-+<UE5AF> /x8f/xfa/xce <Private Use>
-+<UE5B0> /x8f/xfa/xcf <Private Use>
-+<UE5B1> /x8f/xfa/xd0 <Private Use>
-+<UE5B2> /x8f/xfa/xd1 <Private Use>
-+<UE5B3> /x8f/xfa/xd2 <Private Use>
-+<UE5B4> /x8f/xfa/xd3 <Private Use>
-+<UE5B5> /x8f/xfa/xd4 <Private Use>
-+<UE5B6> /x8f/xfa/xd5 <Private Use>
-+<UE5B7> /x8f/xfa/xd6 <Private Use>
-+<UE5B8> /x8f/xfa/xd7 <Private Use>
-+<UE5B9> /x8f/xfa/xd8 <Private Use>
-+<UE5BA> /x8f/xfa/xd9 <Private Use>
-+<UE5BB> /x8f/xfa/xda <Private Use>
-+<UE5BC> /x8f/xfa/xdb <Private Use>
-+<UE5BD> /x8f/xfa/xdc <Private Use>
-+<UE5BE> /x8f/xfa/xdd <Private Use>
-+<UE5BF> /x8f/xfa/xde <Private Use>
-+<UE5C0> /x8f/xfa/xdf <Private Use>
-+<UE5C1> /x8f/xfa/xe0 <Private Use>
-+<UE5C2> /x8f/xfa/xe1 <Private Use>
-+<UE5C3> /x8f/xfa/xe2 <Private Use>
-+<UE5C4> /x8f/xfa/xe3 <Private Use>
-+<UE5C5> /x8f/xfa/xe4 <Private Use>
-+<UE5C6> /x8f/xfa/xe5 <Private Use>
-+<UE5C7> /x8f/xfa/xe6 <Private Use>
-+<UE5C8> /x8f/xfa/xe7 <Private Use>
-+<UE5C9> /x8f/xfa/xe8 <Private Use>
-+<UE5CA> /x8f/xfa/xe9 <Private Use>
-+<UE5CB> /x8f/xfa/xea <Private Use>
-+<UE5CC> /x8f/xfa/xeb <Private Use>
-+<UE5CD> /x8f/xfa/xec <Private Use>
-+<UE5CE> /x8f/xfa/xed <Private Use>
-+<UE5CF> /x8f/xfa/xee <Private Use>
-+<UE5D0> /x8f/xfa/xef <Private Use>
-+<UE5D1> /x8f/xfa/xf0 <Private Use>
-+<UE5D2> /x8f/xfa/xf1 <Private Use>
-+<UE5D3> /x8f/xfa/xf2 <Private Use>
-+<UE5D4> /x8f/xfa/xf3 <Private Use>
-+<UE5D5> /x8f/xfa/xf4 <Private Use>
-+<UE5D6> /x8f/xfa/xf5 <Private Use>
-+<UE5D7> /x8f/xfa/xf6 <Private Use>
-+<UE5D8> /x8f/xfa/xf7 <Private Use>
-+<UE5D9> /x8f/xfa/xf8 <Private Use>
-+<UE5DA> /x8f/xfa/xf9 <Private Use>
-+<UE5DB> /x8f/xfa/xfa <Private Use>
-+<UE5DC> /x8f/xfa/xfb <Private Use>
-+<UE5DD> /x8f/xfa/xfc <Private Use>
-+<UE5DE> /x8f/xfa/xfd <Private Use>
-+<UE5DF> /x8f/xfa/xfe <Private Use>
-+<UE5E0> /x8f/xfb/xa1 <Private Use>
-+<UE5E1> /x8f/xfb/xa2 <Private Use>
-+<UE5E2> /x8f/xfb/xa3 <Private Use>
-+<UE5E3> /x8f/xfb/xa4 <Private Use>
-+<UE5E4> /x8f/xfb/xa5 <Private Use>
-+<UE5E5> /x8f/xfb/xa6 <Private Use>
-+<UE5E6> /x8f/xfb/xa7 <Private Use>
-+<UE5E7> /x8f/xfb/xa8 <Private Use>
-+<UE5E8> /x8f/xfb/xa9 <Private Use>
-+<UE5E9> /x8f/xfb/xaa <Private Use>
-+<UE5EA> /x8f/xfb/xab <Private Use>
-+<UE5EB> /x8f/xfb/xac <Private Use>
-+<UE5EC> /x8f/xfb/xad <Private Use>
-+<UE5ED> /x8f/xfb/xae <Private Use>
-+<UE5EE> /x8f/xfb/xaf <Private Use>
-+<UE5EF> /x8f/xfb/xb0 <Private Use>
-+<UE5F0> /x8f/xfb/xb1 <Private Use>
-+<UE5F1> /x8f/xfb/xb2 <Private Use>
-+<UE5F2> /x8f/xfb/xb3 <Private Use>
-+<UE5F3> /x8f/xfb/xb4 <Private Use>
-+<UE5F4> /x8f/xfb/xb5 <Private Use>
-+<UE5F5> /x8f/xfb/xb6 <Private Use>
-+<UE5F6> /x8f/xfb/xb7 <Private Use>
-+<UE5F7> /x8f/xfb/xb8 <Private Use>
-+<UE5F8> /x8f/xfb/xb9 <Private Use>
-+<UE5F9> /x8f/xfb/xba <Private Use>
-+<UE5FA> /x8f/xfb/xbb <Private Use>
-+<UE5FB> /x8f/xfb/xbc <Private Use>
-+<UE5FC> /x8f/xfb/xbd <Private Use>
-+<UE5FD> /x8f/xfb/xbe <Private Use>
-+<UE5FE> /x8f/xfb/xbf <Private Use>
-+<UE5FF> /x8f/xfb/xc0 <Private Use>
-+<UE600> /x8f/xfb/xc1 <Private Use>
-+<UE601> /x8f/xfb/xc2 <Private Use>
-+<UE602> /x8f/xfb/xc3 <Private Use>
-+<UE603> /x8f/xfb/xc4 <Private Use>
-+<UE604> /x8f/xfb/xc5 <Private Use>
-+<UE605> /x8f/xfb/xc6 <Private Use>
-+<UE606> /x8f/xfb/xc7 <Private Use>
-+<UE607> /x8f/xfb/xc8 <Private Use>
-+<UE608> /x8f/xfb/xc9 <Private Use>
-+<UE609> /x8f/xfb/xca <Private Use>
-+<UE60A> /x8f/xfb/xcb <Private Use>
-+<UE60B> /x8f/xfb/xcc <Private Use>
-+<UE60C> /x8f/xfb/xcd <Private Use>
-+<UE60D> /x8f/xfb/xce <Private Use>
-+<UE60E> /x8f/xfb/xcf <Private Use>
-+<UE60F> /x8f/xfb/xd0 <Private Use>
-+<UE610> /x8f/xfb/xd1 <Private Use>
-+<UE611> /x8f/xfb/xd2 <Private Use>
-+<UE612> /x8f/xfb/xd3 <Private Use>
-+<UE613> /x8f/xfb/xd4 <Private Use>
-+<UE614> /x8f/xfb/xd5 <Private Use>
-+<UE615> /x8f/xfb/xd6 <Private Use>
-+<UE616> /x8f/xfb/xd7 <Private Use>
-+<UE617> /x8f/xfb/xd8 <Private Use>
-+<UE618> /x8f/xfb/xd9 <Private Use>
-+<UE619> /x8f/xfb/xda <Private Use>
-+<UE61A> /x8f/xfb/xdb <Private Use>
-+<UE61B> /x8f/xfb/xdc <Private Use>
-+<UE61C> /x8f/xfb/xdd <Private Use>
-+<UE61D> /x8f/xfb/xde <Private Use>
-+<UE61E> /x8f/xfb/xdf <Private Use>
-+<UE61F> /x8f/xfb/xe0 <Private Use>
-+<UE620> /x8f/xfb/xe1 <Private Use>
-+<UE621> /x8f/xfb/xe2 <Private Use>
-+<UE622> /x8f/xfb/xe3 <Private Use>
-+<UE623> /x8f/xfb/xe4 <Private Use>
-+<UE624> /x8f/xfb/xe5 <Private Use>
-+<UE625> /x8f/xfb/xe6 <Private Use>
-+<UE626> /x8f/xfb/xe7 <Private Use>
-+<UE627> /x8f/xfb/xe8 <Private Use>
-+<UE628> /x8f/xfb/xe9 <Private Use>
-+<UE629> /x8f/xfb/xea <Private Use>
-+<UE62A> /x8f/xfb/xeb <Private Use>
-+<UE62B> /x8f/xfb/xec <Private Use>
-+<UE62C> /x8f/xfb/xed <Private Use>
-+<UE62D> /x8f/xfb/xee <Private Use>
-+<UE62E> /x8f/xfb/xef <Private Use>
-+<UE62F> /x8f/xfb/xf0 <Private Use>
-+<UE630> /x8f/xfb/xf1 <Private Use>
-+<UE631> /x8f/xfb/xf2 <Private Use>
-+<UE632> /x8f/xfb/xf3 <Private Use>
-+<UE633> /x8f/xfb/xf4 <Private Use>
-+<UE634> /x8f/xfb/xf5 <Private Use>
-+<UE635> /x8f/xfb/xf6 <Private Use>
-+<UE636> /x8f/xfb/xf7 <Private Use>
-+<UE637> /x8f/xfb/xf8 <Private Use>
-+<UE638> /x8f/xfb/xf9 <Private Use>
-+<UE639> /x8f/xfb/xfa <Private Use>
-+<UE63A> /x8f/xfb/xfb <Private Use>
-+<UE63B> /x8f/xfb/xfc <Private Use>
-+<UE63C> /x8f/xfb/xfd <Private Use>
-+<UE63D> /x8f/xfb/xfe <Private Use>
-+<UE63E> /x8f/xfc/xa1 <Private Use>
-+<UE63F> /x8f/xfc/xa2 <Private Use>
-+<UE640> /x8f/xfc/xa3 <Private Use>
-+<UE641> /x8f/xfc/xa4 <Private Use>
-+<UE642> /x8f/xfc/xa5 <Private Use>
-+<UE643> /x8f/xfc/xa6 <Private Use>
-+<UE644> /x8f/xfc/xa7 <Private Use>
-+<UE645> /x8f/xfc/xa8 <Private Use>
-+<UE646> /x8f/xfc/xa9 <Private Use>
-+<UE647> /x8f/xfc/xaa <Private Use>
-+<UE648> /x8f/xfc/xab <Private Use>
-+<UE649> /x8f/xfc/xac <Private Use>
-+<UE64A> /x8f/xfc/xad <Private Use>
-+<UE64B> /x8f/xfc/xae <Private Use>
-+<UE64C> /x8f/xfc/xaf <Private Use>
-+<UE64D> /x8f/xfc/xb0 <Private Use>
-+<UE64E> /x8f/xfc/xb1 <Private Use>
-+<UE64F> /x8f/xfc/xb2 <Private Use>
-+<UE650> /x8f/xfc/xb3 <Private Use>
-+<UE651> /x8f/xfc/xb4 <Private Use>
-+<UE652> /x8f/xfc/xb5 <Private Use>
-+<UE653> /x8f/xfc/xb6 <Private Use>
-+<UE654> /x8f/xfc/xb7 <Private Use>
-+<UE655> /x8f/xfc/xb8 <Private Use>
-+<UE656> /x8f/xfc/xb9 <Private Use>
-+<UE657> /x8f/xfc/xba <Private Use>
-+<UE658> /x8f/xfc/xbb <Private Use>
-+<UE659> /x8f/xfc/xbc <Private Use>
-+<UE65A> /x8f/xfc/xbd <Private Use>
-+<UE65B> /x8f/xfc/xbe <Private Use>
-+<UE65C> /x8f/xfc/xbf <Private Use>
-+<UE65D> /x8f/xfc/xc0 <Private Use>
-+<UE65E> /x8f/xfc/xc1 <Private Use>
-+<UE65F> /x8f/xfc/xc2 <Private Use>
-+<UE660> /x8f/xfc/xc3 <Private Use>
-+<UE661> /x8f/xfc/xc4 <Private Use>
-+<UE662> /x8f/xfc/xc5 <Private Use>
-+<UE663> /x8f/xfc/xc6 <Private Use>
-+<UE664> /x8f/xfc/xc7 <Private Use>
-+<UE665> /x8f/xfc/xc8 <Private Use>
-+<UE666> /x8f/xfc/xc9 <Private Use>
-+<UE667> /x8f/xfc/xca <Private Use>
-+<UE668> /x8f/xfc/xcb <Private Use>
-+<UE669> /x8f/xfc/xcc <Private Use>
-+<UE66A> /x8f/xfc/xcd <Private Use>
-+<UE66B> /x8f/xfc/xce <Private Use>
-+<UE66C> /x8f/xfc/xcf <Private Use>
-+<UE66D> /x8f/xfc/xd0 <Private Use>
-+<UE66E> /x8f/xfc/xd1 <Private Use>
-+<UE66F> /x8f/xfc/xd2 <Private Use>
-+<UE670> /x8f/xfc/xd3 <Private Use>
-+<UE671> /x8f/xfc/xd4 <Private Use>
-+<UE672> /x8f/xfc/xd5 <Private Use>
-+<UE673> /x8f/xfc/xd6 <Private Use>
-+<UE674> /x8f/xfc/xd7 <Private Use>
-+<UE675> /x8f/xfc/xd8 <Private Use>
-+<UE676> /x8f/xfc/xd9 <Private Use>
-+<UE677> /x8f/xfc/xda <Private Use>
-+<UE678> /x8f/xfc/xdb <Private Use>
-+<UE679> /x8f/xfc/xdc <Private Use>
-+<UE67A> /x8f/xfc/xdd <Private Use>
-+<UE67B> /x8f/xfc/xde <Private Use>
-+<UE67C> /x8f/xfc/xdf <Private Use>
-+<UE67D> /x8f/xfc/xe0 <Private Use>
-+<UE67E> /x8f/xfc/xe1 <Private Use>
-+<UE67F> /x8f/xfc/xe2 <Private Use>
-+<UE680> /x8f/xfc/xe3 <Private Use>
-+<UE681> /x8f/xfc/xe4 <Private Use>
-+<UE682> /x8f/xfc/xe5 <Private Use>
-+<UE683> /x8f/xfc/xe6 <Private Use>
-+<UE684> /x8f/xfc/xe7 <Private Use>
-+<UE685> /x8f/xfc/xe8 <Private Use>
-+<UE686> /x8f/xfc/xe9 <Private Use>
-+<UE687> /x8f/xfc/xea <Private Use>
-+<UE688> /x8f/xfc/xeb <Private Use>
-+<UE689> /x8f/xfc/xec <Private Use>
-+<UE68A> /x8f/xfc/xed <Private Use>
-+<UE68B> /x8f/xfc/xee <Private Use>
-+<UE68C> /x8f/xfc/xef <Private Use>
-+<UE68D> /x8f/xfc/xf0 <Private Use>
-+<UE68E> /x8f/xfc/xf1 <Private Use>
-+<UE68F> /x8f/xfc/xf2 <Private Use>
-+<UE690> /x8f/xfc/xf3 <Private Use>
-+<UE691> /x8f/xfc/xf4 <Private Use>
-+<UE692> /x8f/xfc/xf5 <Private Use>
-+<UE693> /x8f/xfc/xf6 <Private Use>
-+<UE694> /x8f/xfc/xf7 <Private Use>
-+<UE695> /x8f/xfc/xf8 <Private Use>
-+<UE696> /x8f/xfc/xf9 <Private Use>
-+<UE697> /x8f/xfc/xfa <Private Use>
-+<UE698> /x8f/xfc/xfb <Private Use>
-+<UE699> /x8f/xfc/xfc <Private Use>
-+<UE69A> /x8f/xfc/xfd <Private Use>
-+<UE69B> /x8f/xfc/xfe <Private Use>
-+<UE69C> /x8f/xfd/xa1 <Private Use>
-+<UE69D> /x8f/xfd/xa2 <Private Use>
-+<UE69E> /x8f/xfd/xa3 <Private Use>
-+<UE69F> /x8f/xfd/xa4 <Private Use>
-+<UE6A0> /x8f/xfd/xa5 <Private Use>
-+<UE6A1> /x8f/xfd/xa6 <Private Use>
-+<UE6A2> /x8f/xfd/xa7 <Private Use>
-+<UE6A3> /x8f/xfd/xa8 <Private Use>
-+<UE6A4> /x8f/xfd/xa9 <Private Use>
-+<UE6A5> /x8f/xfd/xaa <Private Use>
-+<UE6A6> /x8f/xfd/xab <Private Use>
-+<UE6A7> /x8f/xfd/xac <Private Use>
-+<UE6A8> /x8f/xfd/xad <Private Use>
-+<UE6A9> /x8f/xfd/xae <Private Use>
-+<UE6AA> /x8f/xfd/xaf <Private Use>
-+<UE6AB> /x8f/xfd/xb0 <Private Use>
-+<UE6AC> /x8f/xfd/xb1 <Private Use>
-+<UE6AD> /x8f/xfd/xb2 <Private Use>
-+<UE6AE> /x8f/xfd/xb3 <Private Use>
-+<UE6AF> /x8f/xfd/xb4 <Private Use>
-+<UE6B0> /x8f/xfd/xb5 <Private Use>
-+<UE6B1> /x8f/xfd/xb6 <Private Use>
-+<UE6B2> /x8f/xfd/xb7 <Private Use>
-+<UE6B3> /x8f/xfd/xb8 <Private Use>
-+<UE6B4> /x8f/xfd/xb9 <Private Use>
-+<UE6B5> /x8f/xfd/xba <Private Use>
-+<UE6B6> /x8f/xfd/xbb <Private Use>
-+<UE6B7> /x8f/xfd/xbc <Private Use>
-+<UE6B8> /x8f/xfd/xbd <Private Use>
-+<UE6B9> /x8f/xfd/xbe <Private Use>
-+<UE6BA> /x8f/xfd/xbf <Private Use>
-+<UE6BB> /x8f/xfd/xc0 <Private Use>
-+<UE6BC> /x8f/xfd/xc1 <Private Use>
-+<UE6BD> /x8f/xfd/xc2 <Private Use>
-+<UE6BE> /x8f/xfd/xc3 <Private Use>
-+<UE6BF> /x8f/xfd/xc4 <Private Use>
-+<UE6C0> /x8f/xfd/xc5 <Private Use>
-+<UE6C1> /x8f/xfd/xc6 <Private Use>
-+<UE6C2> /x8f/xfd/xc7 <Private Use>
-+<UE6C3> /x8f/xfd/xc8 <Private Use>
-+<UE6C4> /x8f/xfd/xc9 <Private Use>
-+<UE6C5> /x8f/xfd/xca <Private Use>
-+<UE6C6> /x8f/xfd/xcb <Private Use>
-+<UE6C7> /x8f/xfd/xcc <Private Use>
-+<UE6C8> /x8f/xfd/xcd <Private Use>
-+<UE6C9> /x8f/xfd/xce <Private Use>
-+<UE6CA> /x8f/xfd/xcf <Private Use>
-+<UE6CB> /x8f/xfd/xd0 <Private Use>
-+<UE6CC> /x8f/xfd/xd1 <Private Use>
-+<UE6CD> /x8f/xfd/xd2 <Private Use>
-+<UE6CE> /x8f/xfd/xd3 <Private Use>
-+<UE6CF> /x8f/xfd/xd4 <Private Use>
-+<UE6D0> /x8f/xfd/xd5 <Private Use>
-+<UE6D1> /x8f/xfd/xd6 <Private Use>
-+<UE6D2> /x8f/xfd/xd7 <Private Use>
-+<UE6D3> /x8f/xfd/xd8 <Private Use>
-+<UE6D4> /x8f/xfd/xd9 <Private Use>
-+<UE6D5> /x8f/xfd/xda <Private Use>
-+<UE6D6> /x8f/xfd/xdb <Private Use>
-+<UE6D7> /x8f/xfd/xdc <Private Use>
-+<UE6D8> /x8f/xfd/xdd <Private Use>
-+<UE6D9> /x8f/xfd/xde <Private Use>
-+<UE6DA> /x8f/xfd/xdf <Private Use>
-+<UE6DB> /x8f/xfd/xe0 <Private Use>
-+<UE6DC> /x8f/xfd/xe1 <Private Use>
-+<UE6DD> /x8f/xfd/xe2 <Private Use>
-+<UE6DE> /x8f/xfd/xe3 <Private Use>
-+<UE6DF> /x8f/xfd/xe4 <Private Use>
-+<UE6E0> /x8f/xfd/xe5 <Private Use>
-+<UE6E1> /x8f/xfd/xe6 <Private Use>
-+<UE6E2> /x8f/xfd/xe7 <Private Use>
-+<UE6E3> /x8f/xfd/xe8 <Private Use>
-+<UE6E4> /x8f/xfd/xe9 <Private Use>
-+<UE6E5> /x8f/xfd/xea <Private Use>
-+<UE6E6> /x8f/xfd/xeb <Private Use>
-+<UE6E7> /x8f/xfd/xec <Private Use>
-+<UE6E8> /x8f/xfd/xed <Private Use>
-+<UE6E9> /x8f/xfd/xee <Private Use>
-+<UE6EA> /x8f/xfd/xef <Private Use>
-+<UE6EB> /x8f/xfd/xf0 <Private Use>
-+<UE6EC> /x8f/xfd/xf1 <Private Use>
-+<UE6ED> /x8f/xfd/xf2 <Private Use>
-+<UE6EE> /x8f/xfd/xf3 <Private Use>
-+<UE6EF> /x8f/xfd/xf4 <Private Use>
-+<UE6F0> /x8f/xfd/xf5 <Private Use>
-+<UE6F1> /x8f/xfd/xf6 <Private Use>
-+<UE6F2> /x8f/xfd/xf7 <Private Use>
-+<UE6F3> /x8f/xfd/xf8 <Private Use>
-+<UE6F4> /x8f/xfd/xf9 <Private Use>
-+<UE6F5> /x8f/xfd/xfa <Private Use>
-+<UE6F6> /x8f/xfd/xfb <Private Use>
-+<UE6F7> /x8f/xfd/xfc <Private Use>
-+<UE6F8> /x8f/xfd/xfd <Private Use>
-+<UE6F9> /x8f/xfd/xfe <Private Use>
-+<UE6FA> /x8f/xfe/xa1 <Private Use>
-+<UE6FB> /x8f/xfe/xa2 <Private Use>
-+<UE6FC> /x8f/xfe/xa3 <Private Use>
-+<UE6FD> /x8f/xfe/xa4 <Private Use>
-+<UE6FE> /x8f/xfe/xa5 <Private Use>
-+<UE6FF> /x8f/xfe/xa6 <Private Use>
-+<UE700> /x8f/xfe/xa7 <Private Use>
-+<UE701> /x8f/xfe/xa8 <Private Use>
-+<UE702> /x8f/xfe/xa9 <Private Use>
-+<UE703> /x8f/xfe/xaa <Private Use>
-+<UE704> /x8f/xfe/xab <Private Use>
-+<UE705> /x8f/xfe/xac <Private Use>
-+<UE706> /x8f/xfe/xad <Private Use>
-+<UE707> /x8f/xfe/xae <Private Use>
-+<UE708> /x8f/xfe/xaf <Private Use>
-+<UE709> /x8f/xfe/xb0 <Private Use>
-+<UE70A> /x8f/xfe/xb1 <Private Use>
-+<UE70B> /x8f/xfe/xb2 <Private Use>
-+<UE70C> /x8f/xfe/xb3 <Private Use>
-+<UE70D> /x8f/xfe/xb4 <Private Use>
-+<UE70E> /x8f/xfe/xb5 <Private Use>
-+<UE70F> /x8f/xfe/xb6 <Private Use>
-+<UE710> /x8f/xfe/xb7 <Private Use>
-+<UE711> /x8f/xfe/xb8 <Private Use>
-+<UE712> /x8f/xfe/xb9 <Private Use>
-+<UE713> /x8f/xfe/xba <Private Use>
-+<UE714> /x8f/xfe/xbb <Private Use>
-+<UE715> /x8f/xfe/xbc <Private Use>
-+<UE716> /x8f/xfe/xbd <Private Use>
-+<UE717> /x8f/xfe/xbe <Private Use>
-+<UE718> /x8f/xfe/xbf <Private Use>
-+<UE719> /x8f/xfe/xc0 <Private Use>
-+<UE71A> /x8f/xfe/xc1 <Private Use>
-+<UE71B> /x8f/xfe/xc2 <Private Use>
-+<UE71C> /x8f/xfe/xc3 <Private Use>
-+<UE71D> /x8f/xfe/xc4 <Private Use>
-+<UE71E> /x8f/xfe/xc5 <Private Use>
-+<UE71F> /x8f/xfe/xc6 <Private Use>
-+<UE720> /x8f/xfe/xc7 <Private Use>
-+<UE721> /x8f/xfe/xc8 <Private Use>
-+<UE722> /x8f/xfe/xc9 <Private Use>
-+<UE723> /x8f/xfe/xca <Private Use>
-+<UE724> /x8f/xfe/xcb <Private Use>
-+<UE725> /x8f/xfe/xcc <Private Use>
-+<UE726> /x8f/xfe/xcd <Private Use>
-+<UE727> /x8f/xfe/xce <Private Use>
-+<UE728> /x8f/xfe/xcf <Private Use>
-+<UE729> /x8f/xfe/xd0 <Private Use>
-+<UE72A> /x8f/xfe/xd1 <Private Use>
-+<UE72B> /x8f/xfe/xd2 <Private Use>
-+<UE72C> /x8f/xfe/xd3 <Private Use>
-+<UE72D> /x8f/xfe/xd4 <Private Use>
-+<UE72E> /x8f/xfe/xd5 <Private Use>
-+<UE72F> /x8f/xfe/xd6 <Private Use>
-+<UE730> /x8f/xfe/xd7 <Private Use>
-+<UE731> /x8f/xfe/xd8 <Private Use>
-+<UE732> /x8f/xfe/xd9 <Private Use>
-+<UE733> /x8f/xfe/xda <Private Use>
-+<UE734> /x8f/xfe/xdb <Private Use>
-+<UE735> /x8f/xfe/xdc <Private Use>
-+<UE736> /x8f/xfe/xdd <Private Use>
-+<UE737> /x8f/xfe/xde <Private Use>
-+<UE738> /x8f/xfe/xdf <Private Use>
-+<UE739> /x8f/xfe/xe0 <Private Use>
-+<UE73A> /x8f/xfe/xe1 <Private Use>
-+<UE73B> /x8f/xfe/xe2 <Private Use>
-+<UE73C> /x8f/xfe/xe3 <Private Use>
-+<UE73D> /x8f/xfe/xe4 <Private Use>
-+<UE73E> /x8f/xfe/xe5 <Private Use>
-+<UE73F> /x8f/xfe/xe6 <Private Use>
-+<UE740> /x8f/xfe/xe7 <Private Use>
-+<UE741> /x8f/xfe/xe8 <Private Use>
-+<UE742> /x8f/xfe/xe9 <Private Use>
-+<UE743> /x8f/xfe/xea <Private Use>
-+<UE744> /x8f/xfe/xeb <Private Use>
-+<UE745> /x8f/xfe/xec <Private Use>
-+<UE746> /x8f/xfe/xed <Private Use>
-+<UE747> /x8f/xfe/xee <Private Use>
-+<UE748> /x8f/xfe/xef <Private Use>
-+<UE749> /x8f/xfe/xf0 <Private Use>
-+<UE74A> /x8f/xfe/xf1 <Private Use>
-+<UE74B> /x8f/xfe/xf2 <Private Use>
-+<UE74C> /x8f/xfe/xf3 <Private Use>
-+<UE74D> /x8f/xfe/xf4 <Private Use>
-+<UE74E> /x8f/xfe/xf5 <Private Use>
-+<UE74F> /x8f/xfe/xf6 <Private Use>
-+<UE750> /x8f/xfe/xf7 <Private Use>
-+<UE751> /x8f/xfe/xf8 <Private Use>
-+<UE752> /x8f/xfe/xf9 <Private Use>
-+<UE753> /x8f/xfe/xfa <Private Use>
-+<UE754> /x8f/xfe/xfb <Private Use>
-+<UE755> /x8f/xfe/xfc <Private Use>
-+<UE756> /x8f/xfe/xfd <Private Use>
-+<UE757> /x8f/xfe/xfe <Private Use>
-+END CHARMAP
-+
-+WIDTH
-+<U3000>...<U7199> 2
-+<UE000>...<UE3AB> 2
-+<U02D8>...<U9ED1> 2
-+<UE3AC>...<UE757> 2
-+END WIDTH
---- glibc-2.3.2/localedata/charmaps/GBK 2002-11-02 23:49:08.000000000 -0500
-+++ glibc-2.3.2/localedata/charmaps/GBK 2003-08-21 08:37:06.000000000 -0400
-@@ -4,6 +4,9 @@
- <comment_char> %
- <escape_char> /
-
-+% alias CP936
-+% alias MS936
-+% alias WINDOWS-936
- CHARMAP
- <U0000> /x00 NULL (NUL)
- <U0001> /x01 START OF HEADING (SOH)
---- glibc-2.3.2/localedata/charmaps/IBM1047 2000-06-23 14:38:48.000000000 -0400
-+++ glibc-2.3.2/localedata/charmaps/IBM1047 2003-08-21 08:37:06.000000000 -0400
-@@ -6,6 +6,7 @@
-
- % Registry SC09-1391-00 p 150.
-
-+% alias IBM-1047
- % alias CP1047
- % alias 1047
- CHARMAP
---- glibc-2.3.2/localedata/charmaps/ISO-8859-15 2000-06-23 15:02:28.000000000 -0400
-+++ glibc-2.3.2/localedata/charmaps/ISO-8859-15 2003-08-21 08:37:06.000000000 -0400
-@@ -3,6 +3,8 @@
- <escape_char> /
- % automatically generated from the charDB
-
-+% alias ISO_8859-15
-+% alias LATIN-9
- CHARMAP
- <U0000> /x00 NULL
- <U0001> /x01 START OF HEADING
---- glibc-2.3.2/localedata/charmaps/ISO-8859-16 2001-11-26 22:44:03.000000000 -0500
-+++ glibc-2.3.2/localedata/charmaps/ISO-8859-16 2003-08-21 08:37:06.000000000 -0400
-@@ -4,6 +4,8 @@
- % automatically generated from the charDB
-
- % alias ISO-IR-226
-+% alias ISO_8859-16:2001
-+% alias ISO_8859-16
- % alias LATIN10
- % alias L10
- CHARMAP
---- glibc-2.3.2/localedata/charmaps/WINDOWS-31J 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/charmaps/WINDOWS-31J 2003-08-14 04:48:04.000000000 -0400
-@@ -0,0 +1,9823 @@
-+<code_set_name> WINDOWS-31J
-+<comment_char> %
-+<escape_char> /
-+<mb_cur_min> 1
-+<mb_cur_max> 2
-+
-+% WINDOWS-31J character map
-+% MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
-+% Last changed: 2003-07-18
-+
-+alias CP932
-+
-+CHARMAP
-+<U0000> /x00 NULL
-+<U0001> /x01 START OF HEADING
-+<U0002> /x02 START OF TEXT
-+<U0003> /x03 END OF TEXT
-+<U0004> /x04 END OF TRANSMISSION
-+<U0005> /x05 ENQUIRY
-+<U0006> /x06 ACKNOWLEDGE
-+<U0007> /x07 BELL
-+<U0008> /x08 BACKSPACE
-+<U0009> /x09 HORIZONTAL TABULATION
-+<U000A> /x0a LINE FEED
-+<U000B> /x0b VERTICAL TABULATION
-+<U000C> /x0c FORM FEED
-+<U000D> /x0d CARRIAGE RETURN
-+<U000E> /x0e SHIFT OUT
-+<U000F> /x0f SHIFT IN
-+<U0010> /x10 DATA LINK ESCAPE
-+<U0011> /x11 DEVICE CONTROL ONE
-+<U0012> /x12 DEVICE CONTROL TWO
-+<U0013> /x13 DEVICE CONTROL THREE
-+<U0014> /x14 DEVICE CONTROL FOUR
-+<U0015> /x15 NEGATIVE ACKNOWLEDGE
-+<U0016> /x16 SYNCHRONOUS IDLE
-+<U0017> /x17 END OF TRANSMISSION BLOCK
-+<U0018> /x18 CANCEL
-+<U0019> /x19 END OF MEDIUM
-+<U001A> /x1a SUBSTITUTE
-+<U001B> /x1b ESCAPE
-+<U001C> /x1c FILE SEPARATOR
-+<U001D> /x1d GROUP SEPARATOR
-+<U001E> /x1e RECORD SEPARATOR
-+<U001F> /x1f UNIT SEPARATOR
-+<U0020> /x20 SPACE
-+<U0021> /x21 EXCLAMATION MARK
-+<U0022> /x22 QUOTATION MARK
-+<U0023> /x23 NUMBER SIGN
-+<U0024> /x24 DOLLAR SIGN
-+<U0025> /x25 PERCENT SIGN
-+<U0026> /x26 AMPERSAND
-+<U0027> /x27 APOSTROPHE
-+<U0028> /x28 LEFT PARENTHESIS
-+<U0029> /x29 RIGHT PARENTHESIS
-+<U002A> /x2a ASTERISK
-+<U002B> /x2b PLUS SIGN
-+<U002C> /x2c COMMA
-+<U002D> /x2d HYPHEN-MINUS
-+<U002E> /x2e FULL STOP
-+<U002F> /x2f SOLIDUS
-+<U0030> /x30 DIGIT ZERO
-+<U0031> /x31 DIGIT ONE
-+<U0032> /x32 DIGIT TWO
-+<U0033> /x33 DIGIT THREE
-+<U0034> /x34 DIGIT FOUR
-+<U0035> /x35 DIGIT FIVE
-+<U0036> /x36 DIGIT SIX
-+<U0037> /x37 DIGIT SEVEN
-+<U0038> /x38 DIGIT EIGHT
-+<U0039> /x39 DIGIT NINE
-+<U003A> /x3a COLON
-+<U003B> /x3b SEMICOLON
-+<U003C> /x3c LESS-THAN SIGN
-+<U003D> /x3d EQUALS SIGN
-+<U003E> /x3e GREATER-THAN SIGN
-+<U003F> /x3f QUESTION MARK
-+<U0040> /x40 COMMERCIAL AT
-+<U0041> /x41 LATIN CAPITAL LETTER A
-+<U0042> /x42 LATIN CAPITAL LETTER B
-+<U0043> /x43 LATIN CAPITAL LETTER C
-+<U0044> /x44 LATIN CAPITAL LETTER D
-+<U0045> /x45 LATIN CAPITAL LETTER E
-+<U0046> /x46 LATIN CAPITAL LETTER F
-+<U0047> /x47 LATIN CAPITAL LETTER G
-+<U0048> /x48 LATIN CAPITAL LETTER H
-+<U0049> /x49 LATIN CAPITAL LETTER I
-+<U004A> /x4a LATIN CAPITAL LETTER J
-+<U004B> /x4b LATIN CAPITAL LETTER K
-+<U004C> /x4c LATIN CAPITAL LETTER L
-+<U004D> /x4d LATIN CAPITAL LETTER M
-+<U004E> /x4e LATIN CAPITAL LETTER N
-+<U004F> /x4f LATIN CAPITAL LETTER O
-+<U0050> /x50 LATIN CAPITAL LETTER P
-+<U0051> /x51 LATIN CAPITAL LETTER Q
-+<U0052> /x52 LATIN CAPITAL LETTER R
-+<U0053> /x53 LATIN CAPITAL LETTER S
-+<U0054> /x54 LATIN CAPITAL LETTER T
-+<U0055> /x55 LATIN CAPITAL LETTER U
-+<U0056> /x56 LATIN CAPITAL LETTER V
-+<U0057> /x57 LATIN CAPITAL LETTER W
-+<U0058> /x58 LATIN CAPITAL LETTER X
-+<U0059> /x59 LATIN CAPITAL LETTER Y
-+<U005A> /x5a LATIN CAPITAL LETTER Z
-+<U005B> /x5b LEFT SQUARE BRACKET
-+<U005C> /x5c REVERSE SOLIDUS
-+<U005D> /x5d RIGHT SQUARE BRACKET
-+<U005E> /x5e CIRCUMFLEX ACCENT
-+<U005F> /x5f LOW LINE
-+<U0060> /x60 GRAVE ACCENT
-+<U0061> /x61 LATIN SMALL LETTER A
-+<U0062> /x62 LATIN SMALL LETTER B
-+<U0063> /x63 LATIN SMALL LETTER C
-+<U0064> /x64 LATIN SMALL LETTER D
-+<U0065> /x65 LATIN SMALL LETTER E
-+<U0066> /x66 LATIN SMALL LETTER F
-+<U0067> /x67 LATIN SMALL LETTER G
-+<U0068> /x68 LATIN SMALL LETTER H
-+<U0069> /x69 LATIN SMALL LETTER I
-+<U006A> /x6a LATIN SMALL LETTER J
-+<U006B> /x6b LATIN SMALL LETTER K
-+<U006C> /x6c LATIN SMALL LETTER L
-+<U006D> /x6d LATIN SMALL LETTER M
-+<U006E> /x6e LATIN SMALL LETTER N
-+<U006F> /x6f LATIN SMALL LETTER O
-+<U0070> /x70 LATIN SMALL LETTER P
-+<U0071> /x71 LATIN SMALL LETTER Q
-+<U0072> /x72 LATIN SMALL LETTER R
-+<U0073> /x73 LATIN SMALL LETTER S
-+<U0074> /x74 LATIN SMALL LETTER T
-+<U0075> /x75 LATIN SMALL LETTER U
-+<U0076> /x76 LATIN SMALL LETTER V
-+<U0077> /x77 LATIN SMALL LETTER W
-+<U0078> /x78 LATIN SMALL LETTER X
-+<U0079> /x79 LATIN SMALL LETTER Y
-+<U007A> /x7a LATIN SMALL LETTER Z
-+<U007B> /x7b LEFT CURLY BRACKET
-+<U007C> /x7c VERTICAL LINE
-+<U007D> /x7d RIGHT CURLY BRACKET
-+<U007E> /x7e TILDE
-+<U007F> /x7f DELETE
-+
-+<U3000> /x81/x40 IDEOGRAPHIC SPACE
-+<U3001> /x81/x41 IDEOGRAPHIC COMMA
-+<U3002> /x81/x42 IDEOGRAPHIC FULL STOP
-+<UFF0C> /x81/x43 FULLWIDTH COMMA
-+<UFF0E> /x81/x44 FULLWIDTH FULL STOP
-+<U30FB> /x81/x45 KATAKANA MIDDLE DOT
-+<UFF1A> /x81/x46 FULLWIDTH COLON
-+<UFF1B> /x81/x47 FULLWIDTH SEMICOLON
-+<UFF1F> /x81/x48 FULLWIDTH QUESTION MARK
-+<UFF01> /x81/x49 FULLWIDTH EXCLAMATION MARK
-+<U309B> /x81/x4a KATAKANA-HIRAGANA VOICED SOUND MARK
-+<U309C> /x81/x4b KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-+<U00B4> /x81/x4c ACUTE ACCENT
-+<UFF40> /x81/x4d FULLWIDTH GRAVE ACCENT
-+<U00A8> /x81/x4e DIAERESIS
-+<UFF3E> /x81/x4f FULLWIDTH CIRCUMFLEX ACCENT
-+<UFFE3> /x81/x50 FULLWIDTH MACRON
-+<UFF3F> /x81/x51 FULLWIDTH LOW LINE
-+<U30FD> /x81/x52 KATAKANA ITERATION MARK
-+<U30FE> /x81/x53 KATAKANA VOICED ITERATION MARK
-+<U309D> /x81/x54 HIRAGANA ITERATION MARK
-+<U309E> /x81/x55 HIRAGANA VOICED ITERATION MARK
-+<U3003> /x81/x56 DITTO MARK
-+<U4EDD> /x81/x57 <CJK>
-+<U3005> /x81/x58 IDEOGRAPHIC ITERATION MARK
-+<U3006> /x81/x59 IDEOGRAPHIC CLOSING MARK
-+<U3007> /x81/x5a IDEOGRAPHIC NUMBER ZERO
-+<U30FC> /x81/x5b KATAKANA-HIRAGANA PROLONGED SOUND MARK
-+<U2015> /x81/x5c HORIZONTAL BAR
-+<U2010> /x81/x5d HYPHEN
-+<UFF0F> /x81/x5e FULLWIDTH SOLIDUS
-+<UFF3C> /x81/x5f FULLWIDTH REVERSE SOLIDUS
-+<UFF5E> /x81/x60 FULLWIDTH TILDE
-+<U2225> /x81/x61 PARALLEL TO
-+<UFF5C> /x81/x62 FULLWIDTH VERTICAL LINE
-+<U2026> /x81/x63 HORIZONTAL ELLIPSIS
-+<U2025> /x81/x64 TWO DOT LEADER
-+<U2018> /x81/x65 LEFT SINGLE QUOTATION MARK
-+<U2019> /x81/x66 RIGHT SINGLE QUOTATION MARK
-+<U201C> /x81/x67 LEFT DOUBLE QUOTATION MARK
-+<U201D> /x81/x68 RIGHT DOUBLE QUOTATION MARK
-+<UFF08> /x81/x69 FULLWIDTH LEFT PARENTHESIS
-+<UFF09> /x81/x6a FULLWIDTH RIGHT PARENTHESIS
-+<U3014> /x81/x6b LEFT TORTOISE SHELL BRACKET
-+<U3015> /x81/x6c RIGHT TORTOISE SHELL BRACKET
-+<UFF3B> /x81/x6d FULLWIDTH LEFT SQUARE BRACKET
-+<UFF3D> /x81/x6e FULLWIDTH RIGHT SQUARE BRACKET
-+<UFF5B> /x81/x6f FULLWIDTH LEFT CURLY BRACKET
-+<UFF5D> /x81/x70 FULLWIDTH RIGHT CURLY BRACKET
-+<U3008> /x81/x71 LEFT ANGLE BRACKET
-+<U3009> /x81/x72 RIGHT ANGLE BRACKET
-+<U300A> /x81/x73 LEFT DOUBLE ANGLE BRACKET
-+<U300B> /x81/x74 RIGHT DOUBLE ANGLE BRACKET
-+<U300C> /x81/x75 LEFT CORNER BRACKET
-+<U300D> /x81/x76 RIGHT CORNER BRACKET
-+<U300E> /x81/x77 LEFT WHITE CORNER BRACKET
-+<U300F> /x81/x78 RIGHT WHITE CORNER BRACKET
-+<U3010> /x81/x79 LEFT BLACK LENTICULAR BRACKET
-+<U3011> /x81/x7a RIGHT BLACK LENTICULAR BRACKET
-+<UFF0B> /x81/x7b FULLWIDTH PLUS SIGN
-+<UFF0D> /x81/x7c FULLWIDTH HYPHEN-MINUS
-+<U00B1> /x81/x7d PLUS-MINUS SIGN
-+<U00D7> /x81/x7e MULTIPLICATION SIGN
-+<U00F7> /x81/x80 DIVISION SIGN
-+<UFF1D> /x81/x81 FULLWIDTH EQUALS SIGN
-+<U2260> /x81/x82 NOT EQUAL TO
-+<UFF1C> /x81/x83 FULLWIDTH LESS-THAN SIGN
-+<UFF1E> /x81/x84 FULLWIDTH GREATER-THAN SIGN
-+<U2266> /x81/x85 LESS-THAN OVER EQUAL TO
-+<U2267> /x81/x86 GREATER-THAN OVER EQUAL TO
-+<U221E> /x81/x87 INFINITY
-+<U2234> /x81/x88 THEREFORE
-+<U2642> /x81/x89 MALE SIGN
-+<U2640> /x81/x8a FEMALE SIGN
-+<U00B0> /x81/x8b DEGREE SIGN
-+<U2032> /x81/x8c PRIME
-+<U2033> /x81/x8d DOUBLE PRIME
-+<U2103> /x81/x8e DEGREE CELSIUS
-+<UFFE5> /x81/x8f FULLWIDTH YEN SIGN
-+<UFF04> /x81/x90 FULLWIDTH DOLLAR SIGN
-+<UFFE0> /x81/x91 FULLWIDTH CENT SIGN
-+<UFFE1> /x81/x92 FULLWIDTH POUND SIGN
-+<UFF05> /x81/x93 FULLWIDTH PERCENT SIGN
-+<UFF03> /x81/x94 FULLWIDTH NUMBER SIGN
-+<UFF06> /x81/x95 FULLWIDTH AMPERSAND
-+<UFF0A> /x81/x96 FULLWIDTH ASTERISK
-+<UFF20> /x81/x97 FULLWIDTH COMMERCIAL AT
-+<U00A7> /x81/x98 SECTION SIGN
-+<U2606> /x81/x99 WHITE STAR
-+<U2605> /x81/x9a BLACK STAR
-+<U25CB> /x81/x9b WHITE CIRCLE
-+<U25CF> /x81/x9c BLACK CIRCLE
-+<U25CE> /x81/x9d BULLSEYE
-+<U25C7> /x81/x9e WHITE DIAMOND
-+<U25C6> /x81/x9f BLACK DIAMOND
-+<U25A1> /x81/xa0 WHITE SQUARE
-+<U25A0> /x81/xa1 BLACK SQUARE
-+<U25B3> /x81/xa2 WHITE UP-POINTING TRIANGLE
-+<U25B2> /x81/xa3 BLACK UP-POINTING TRIANGLE
-+<U25BD> /x81/xa4 WHITE DOWN-POINTING TRIANGLE
-+<U25BC> /x81/xa5 BLACK DOWN-POINTING TRIANGLE
-+<U203B> /x81/xa6 REFERENCE MARK
-+<U3012> /x81/xa7 POSTAL MARK
-+<U2192> /x81/xa8 RIGHTWARDS ARROW
-+<U2190> /x81/xa9 LEFTWARDS ARROW
-+<U2191> /x81/xaa UPWARDS ARROW
-+<U2193> /x81/xab DOWNWARDS ARROW
-+<U3013> /x81/xac GETA MARK
-+<U2208> /x81/xb8 ELEMENT OF
-+<U220B> /x81/xb9 CONTAINS AS MEMBER
-+<U2286> /x81/xba SUBSET OF OR EQUAL TO
-+<U2287> /x81/xbb SUPERSET OF OR EQUAL TO
-+<U2282> /x81/xbc SUBSET OF
-+<U2283> /x81/xbd SUPERSET OF
-+<U222A> /x81/xbe UNION
-+<U2229> /x81/xbf INTERSECTION
-+<U2227> /x81/xc8 LOGICAL AND
-+<U2228> /x81/xc9 LOGICAL OR
-+<UFFE2> /x81/xca FULLWIDTH NOT SIGN
-+<U21D2> /x81/xcb RIGHTWARDS DOUBLE ARROW
-+<U21D4> /x81/xcc LEFT RIGHT DOUBLE ARROW
-+<U2200> /x81/xcd FOR ALL
-+<U2203> /x81/xce THERE EXISTS
-+<U2220> /x81/xda ANGLE
-+<U22A5> /x81/xdb UP TACK
-+<U2312> /x81/xdc ARC
-+<U2202> /x81/xdd PARTIAL DIFFERENTIAL
-+<U2207> /x81/xde NABLA
-+<U2261> /x81/xdf IDENTICAL TO
-+<U2252> /x81/xe0 APPROXIMATELY EQUAL TO OR THE IMAGE OF
-+<U226A> /x81/xe1 MUCH LESS-THAN
-+<U226B> /x81/xe2 MUCH GREATER-THAN
-+<U221A> /x81/xe3 SQUARE ROOT
-+<U223D> /x81/xe4 REVERSED TILDE
-+<U221D> /x81/xe5 PROPORTIONAL TO
-+<U2235> /x81/xe6 BECAUSE
-+<U222B> /x81/xe7 INTEGRAL
-+<U222C> /x81/xe8 DOUBLE INTEGRAL
-+<U212B> /x81/xf0 ANGSTROM SIGN
-+<U2030> /x81/xf1 PER MILLE SIGN
-+<U266F> /x81/xf2 MUSIC SHARP SIGN
-+<U266D> /x81/xf3 MUSIC FLAT SIGN
-+<U266A> /x81/xf4 EIGHTH NOTE
-+<U2020> /x81/xf5 DAGGER
-+<U2021> /x81/xf6 DOUBLE DAGGER
-+<U00B6> /x81/xf7 PILCROW SIGN
-+<U25EF> /x81/xfc LARGE CIRCLE
-+<UFF10> /x82/x4f FULLWIDTH DIGIT ZERO
-+<UFF11> /x82/x50 FULLWIDTH DIGIT ONE
-+<UFF12> /x82/x51 FULLWIDTH DIGIT TWO
-+<UFF13> /x82/x52 FULLWIDTH DIGIT THREE
-+<UFF14> /x82/x53 FULLWIDTH DIGIT FOUR
-+<UFF15> /x82/x54 FULLWIDTH DIGIT FIVE
-+<UFF16> /x82/x55 FULLWIDTH DIGIT SIX
-+<UFF17> /x82/x56 FULLWIDTH DIGIT SEVEN
-+<UFF18> /x82/x57 FULLWIDTH DIGIT EIGHT
-+<UFF19> /x82/x58 FULLWIDTH DIGIT NINE
-+<UFF21> /x82/x60 FULLWIDTH LATIN CAPITAL LETTER A
-+<UFF22> /x82/x61 FULLWIDTH LATIN CAPITAL LETTER B
-+<UFF23> /x82/x62 FULLWIDTH LATIN CAPITAL LETTER C
-+<UFF24> /x82/x63 FULLWIDTH LATIN CAPITAL LETTER D
-+<UFF25> /x82/x64 FULLWIDTH LATIN CAPITAL LETTER E
-+<UFF26> /x82/x65 FULLWIDTH LATIN CAPITAL LETTER F
-+<UFF27> /x82/x66 FULLWIDTH LATIN CAPITAL LETTER G
-+<UFF28> /x82/x67 FULLWIDTH LATIN CAPITAL LETTER H
-+<UFF29> /x82/x68 FULLWIDTH LATIN CAPITAL LETTER I
-+<UFF2A> /x82/x69 FULLWIDTH LATIN CAPITAL LETTER J
-+<UFF2B> /x82/x6a FULLWIDTH LATIN CAPITAL LETTER K
-+<UFF2C> /x82/x6b FULLWIDTH LATIN CAPITAL LETTER L
-+<UFF2D> /x82/x6c FULLWIDTH LATIN CAPITAL LETTER M
-+<UFF2E> /x82/x6d FULLWIDTH LATIN CAPITAL LETTER N
-+<UFF2F> /x82/x6e FULLWIDTH LATIN CAPITAL LETTER O
-+<UFF30> /x82/x6f FULLWIDTH LATIN CAPITAL LETTER P
-+<UFF31> /x82/x70 FULLWIDTH LATIN CAPITAL LETTER Q
-+<UFF32> /x82/x71 FULLWIDTH LATIN CAPITAL LETTER R
-+<UFF33> /x82/x72 FULLWIDTH LATIN CAPITAL LETTER S
-+<UFF34> /x82/x73 FULLWIDTH LATIN CAPITAL LETTER T
-+<UFF35> /x82/x74 FULLWIDTH LATIN CAPITAL LETTER U
-+<UFF36> /x82/x75 FULLWIDTH LATIN CAPITAL LETTER V
-+<UFF37> /x82/x76 FULLWIDTH LATIN CAPITAL LETTER W
-+<UFF38> /x82/x77 FULLWIDTH LATIN CAPITAL LETTER X
-+<UFF39> /x82/x78 FULLWIDTH LATIN CAPITAL LETTER Y
-+<UFF3A> /x82/x79 FULLWIDTH LATIN CAPITAL LETTER Z
-+<UFF41> /x82/x81 FULLWIDTH LATIN SMALL LETTER A
-+<UFF42> /x82/x82 FULLWIDTH LATIN SMALL LETTER B
-+<UFF43> /x82/x83 FULLWIDTH LATIN SMALL LETTER C
-+<UFF44> /x82/x84 FULLWIDTH LATIN SMALL LETTER D
-+<UFF45> /x82/x85 FULLWIDTH LATIN SMALL LETTER E
-+<UFF46> /x82/x86 FULLWIDTH LATIN SMALL LETTER F
-+<UFF47> /x82/x87 FULLWIDTH LATIN SMALL LETTER G
-+<UFF48> /x82/x88 FULLWIDTH LATIN SMALL LETTER H
-+<UFF49> /x82/x89 FULLWIDTH LATIN SMALL LETTER I
-+<UFF4A> /x82/x8a FULLWIDTH LATIN SMALL LETTER J
-+<UFF4B> /x82/x8b FULLWIDTH LATIN SMALL LETTER K
-+<UFF4C> /x82/x8c FULLWIDTH LATIN SMALL LETTER L
-+<UFF4D> /x82/x8d FULLWIDTH LATIN SMALL LETTER M
-+<UFF4E> /x82/x8e FULLWIDTH LATIN SMALL LETTER N
-+<UFF4F> /x82/x8f FULLWIDTH LATIN SMALL LETTER O
-+<UFF50> /x82/x90 FULLWIDTH LATIN SMALL LETTER P
-+<UFF51> /x82/x91 FULLWIDTH LATIN SMALL LETTER Q
-+<UFF52> /x82/x92 FULLWIDTH LATIN SMALL LETTER R
-+<UFF53> /x82/x93 FULLWIDTH LATIN SMALL LETTER S
-+<UFF54> /x82/x94 FULLWIDTH LATIN SMALL LETTER T
-+<UFF55> /x82/x95 FULLWIDTH LATIN SMALL LETTER U
-+<UFF56> /x82/x96 FULLWIDTH LATIN SMALL LETTER V
-+<UFF57> /x82/x97 FULLWIDTH LATIN SMALL LETTER W
-+<UFF58> /x82/x98 FULLWIDTH LATIN SMALL LETTER X
-+<UFF59> /x82/x99 FULLWIDTH LATIN SMALL LETTER Y
-+<UFF5A> /x82/x9a FULLWIDTH LATIN SMALL LETTER Z
-+<U3041> /x82/x9f HIRAGANA LETTER SMALL A
-+<U3042> /x82/xa0 HIRAGANA LETTER A
-+<U3043> /x82/xa1 HIRAGANA LETTER SMALL I
-+<U3044> /x82/xa2 HIRAGANA LETTER I
-+<U3045> /x82/xa3 HIRAGANA LETTER SMALL U
-+<U3046> /x82/xa4 HIRAGANA LETTER U
-+<U3047> /x82/xa5 HIRAGANA LETTER SMALL E
-+<U3048> /x82/xa6 HIRAGANA LETTER E
-+<U3049> /x82/xa7 HIRAGANA LETTER SMALL O
-+<U304A> /x82/xa8 HIRAGANA LETTER O
-+<U304B> /x82/xa9 HIRAGANA LETTER KA
-+<U304C> /x82/xaa HIRAGANA LETTER GA
-+<U304D> /x82/xab HIRAGANA LETTER KI
-+<U304E> /x82/xac HIRAGANA LETTER GI
-+<U304F> /x82/xad HIRAGANA LETTER KU
-+<U3050> /x82/xae HIRAGANA LETTER GU
-+<U3051> /x82/xaf HIRAGANA LETTER KE
-+<U3052> /x82/xb0 HIRAGANA LETTER GE
-+<U3053> /x82/xb1 HIRAGANA LETTER KO
-+<U3054> /x82/xb2 HIRAGANA LETTER GO
-+<U3055> /x82/xb3 HIRAGANA LETTER SA
-+<U3056> /x82/xb4 HIRAGANA LETTER ZA
-+<U3057> /x82/xb5 HIRAGANA LETTER SI
-+<U3058> /x82/xb6 HIRAGANA LETTER ZI
-+<U3059> /x82/xb7 HIRAGANA LETTER SU
-+<U305A> /x82/xb8 HIRAGANA LETTER ZU
-+<U305B> /x82/xb9 HIRAGANA LETTER SE
-+<U305C> /x82/xba HIRAGANA LETTER ZE
-+<U305D> /x82/xbb HIRAGANA LETTER SO
-+<U305E> /x82/xbc HIRAGANA LETTER ZO
-+<U305F> /x82/xbd HIRAGANA LETTER TA
-+<U3060> /x82/xbe HIRAGANA LETTER DA
-+<U3061> /x82/xbf HIRAGANA LETTER TI
-+<U3062> /x82/xc0 HIRAGANA LETTER DI
-+<U3063> /x82/xc1 HIRAGANA LETTER SMALL TU
-+<U3064> /x82/xc2 HIRAGANA LETTER TU
-+<U3065> /x82/xc3 HIRAGANA LETTER DU
-+<U3066> /x82/xc4 HIRAGANA LETTER TE
-+<U3067> /x82/xc5 HIRAGANA LETTER DE
-+<U3068> /x82/xc6 HIRAGANA LETTER TO
-+<U3069> /x82/xc7 HIRAGANA LETTER DO
-+<U306A> /x82/xc8 HIRAGANA LETTER NA
-+<U306B> /x82/xc9 HIRAGANA LETTER NI
-+<U306C> /x82/xca HIRAGANA LETTER NU
-+<U306D> /x82/xcb HIRAGANA LETTER NE
-+<U306E> /x82/xcc HIRAGANA LETTER NO
-+<U306F> /x82/xcd HIRAGANA LETTER HA
-+<U3070> /x82/xce HIRAGANA LETTER BA
-+<U3071> /x82/xcf HIRAGANA LETTER PA
-+<U3072> /x82/xd0 HIRAGANA LETTER HI
-+<U3073> /x82/xd1 HIRAGANA LETTER BI
-+<U3074> /x82/xd2 HIRAGANA LETTER PI
-+<U3075> /x82/xd3 HIRAGANA LETTER HU
-+<U3076> /x82/xd4 HIRAGANA LETTER BU
-+<U3077> /x82/xd5 HIRAGANA LETTER PU
-+<U3078> /x82/xd6 HIRAGANA LETTER HE
-+<U3079> /x82/xd7 HIRAGANA LETTER BE
-+<U307A> /x82/xd8 HIRAGANA LETTER PE
-+<U307B> /x82/xd9 HIRAGANA LETTER HO
-+<U307C> /x82/xda HIRAGANA LETTER BO
-+<U307D> /x82/xdb HIRAGANA LETTER PO
-+<U307E> /x82/xdc HIRAGANA LETTER MA
-+<U307F> /x82/xdd HIRAGANA LETTER MI
-+<U3080> /x82/xde HIRAGANA LETTER MU
-+<U3081> /x82/xdf HIRAGANA LETTER ME
-+<U3082> /x82/xe0 HIRAGANA LETTER MO
-+<U3083> /x82/xe1 HIRAGANA LETTER SMALL YA
-+<U3084> /x82/xe2 HIRAGANA LETTER YA
-+<U3085> /x82/xe3 HIRAGANA LETTER SMALL YU
-+<U3086> /x82/xe4 HIRAGANA LETTER YU
-+<U3087> /x82/xe5 HIRAGANA LETTER SMALL YO
-+<U3088> /x82/xe6 HIRAGANA LETTER YO
-+<U3089> /x82/xe7 HIRAGANA LETTER RA
-+<U308A> /x82/xe8 HIRAGANA LETTER RI
-+<U308B> /x82/xe9 HIRAGANA LETTER RU
-+<U308C> /x82/xea HIRAGANA LETTER RE
-+<U308D> /x82/xeb HIRAGANA LETTER RO
-+<U308E> /x82/xec HIRAGANA LETTER SMALL WA
-+<U308F> /x82/xed HIRAGANA LETTER WA
-+<U3090> /x82/xee HIRAGANA LETTER WI
-+<U3091> /x82/xef HIRAGANA LETTER WE
-+<U3092> /x82/xf0 HIRAGANA LETTER WO
-+<U3093> /x82/xf1 HIRAGANA LETTER N
-+<U30A1> /x83/x40 KATAKANA LETTER SMALL A
-+<U30A2> /x83/x41 KATAKANA LETTER A
-+<U30A3> /x83/x42 KATAKANA LETTER SMALL I
-+<U30A4> /x83/x43 KATAKANA LETTER I
-+<U30A5> /x83/x44 KATAKANA LETTER SMALL U
-+<U30A6> /x83/x45 KATAKANA LETTER U
-+<U30A7> /x83/x46 KATAKANA LETTER SMALL E
-+<U30A8> /x83/x47 KATAKANA LETTER E
-+<U30A9> /x83/x48 KATAKANA LETTER SMALL O
-+<U30AA> /x83/x49 KATAKANA LETTER O
-+<U30AB> /x83/x4a KATAKANA LETTER KA
-+<U30AC> /x83/x4b KATAKANA LETTER GA
-+<U30AD> /x83/x4c KATAKANA LETTER KI
-+<U30AE> /x83/x4d KATAKANA LETTER GI
-+<U30AF> /x83/x4e KATAKANA LETTER KU
-+<U30B0> /x83/x4f KATAKANA LETTER GU
-+<U30B1> /x83/x50 KATAKANA LETTER KE
-+<U30B2> /x83/x51 KATAKANA LETTER GE
-+<U30B3> /x83/x52 KATAKANA LETTER KO
-+<U30B4> /x83/x53 KATAKANA LETTER GO
-+<U30B5> /x83/x54 KATAKANA LETTER SA
-+<U30B6> /x83/x55 KATAKANA LETTER ZA
-+<U30B7> /x83/x56 KATAKANA LETTER SI
-+<U30B8> /x83/x57 KATAKANA LETTER ZI
-+<U30B9> /x83/x58 KATAKANA LETTER SU
-+<U30BA> /x83/x59 KATAKANA LETTER ZU
-+<U30BB> /x83/x5a KATAKANA LETTER SE
-+<U30BC> /x83/x5b KATAKANA LETTER ZE
-+<U30BD> /x83/x5c KATAKANA LETTER SO
-+<U30BE> /x83/x5d KATAKANA LETTER ZO
-+<U30BF> /x83/x5e KATAKANA LETTER TA
-+<U30C0> /x83/x5f KATAKANA LETTER DA
-+<U30C1> /x83/x60 KATAKANA LETTER TI
-+<U30C2> /x83/x61 KATAKANA LETTER DI
-+<U30C3> /x83/x62 KATAKANA LETTER SMALL TU
-+<U30C4> /x83/x63 KATAKANA LETTER TU
-+<U30C5> /x83/x64 KATAKANA LETTER DU
-+<U30C6> /x83/x65 KATAKANA LETTER TE
-+<U30C7> /x83/x66 KATAKANA LETTER DE
-+<U30C8> /x83/x67 KATAKANA LETTER TO
-+<U30C9> /x83/x68 KATAKANA LETTER DO
-+<U30CA> /x83/x69 KATAKANA LETTER NA
-+<U30CB> /x83/x6a KATAKANA LETTER NI
-+<U30CC> /x83/x6b KATAKANA LETTER NU
-+<U30CD> /x83/x6c KATAKANA LETTER NE
-+<U30CE> /x83/x6d KATAKANA LETTER NO
-+<U30CF> /x83/x6e KATAKANA LETTER HA
-+<U30D0> /x83/x6f KATAKANA LETTER BA
-+<U30D1> /x83/x70 KATAKANA LETTER PA
-+<U30D2> /x83/x71 KATAKANA LETTER HI
-+<U30D3> /x83/x72 KATAKANA LETTER BI
-+<U30D4> /x83/x73 KATAKANA LETTER PI
-+<U30D5> /x83/x74 KATAKANA LETTER HU
-+<U30D6> /x83/x75 KATAKANA LETTER BU
-+<U30D7> /x83/x76 KATAKANA LETTER PU
-+<U30D8> /x83/x77 KATAKANA LETTER HE
-+<U30D9> /x83/x78 KATAKANA LETTER BE
-+<U30DA> /x83/x79 KATAKANA LETTER PE
-+<U30DB> /x83/x7a KATAKANA LETTER HO
-+<U30DC> /x83/x7b KATAKANA LETTER BO
-+<U30DD> /x83/x7c KATAKANA LETTER PO
-+<U30DE> /x83/x7d KATAKANA LETTER MA
-+<U30DF> /x83/x7e KATAKANA LETTER MI
-+<U30E0> /x83/x80 KATAKANA LETTER MU
-+<U30E1> /x83/x81 KATAKANA LETTER ME
-+<U30E2> /x83/x82 KATAKANA LETTER MO
-+<U30E3> /x83/x83 KATAKANA LETTER SMALL YA
-+<U30E4> /x83/x84 KATAKANA LETTER YA
-+<U30E5> /x83/x85 KATAKANA LETTER SMALL YU
-+<U30E6> /x83/x86 KATAKANA LETTER YU
-+<U30E7> /x83/x87 KATAKANA LETTER SMALL YO
-+<U30E8> /x83/x88 KATAKANA LETTER YO
-+<U30E9> /x83/x89 KATAKANA LETTER RA
-+<U30EA> /x83/x8a KATAKANA LETTER RI
-+<U30EB> /x83/x8b KATAKANA LETTER RU
-+<U30EC> /x83/x8c KATAKANA LETTER RE
-+<U30ED> /x83/x8d KATAKANA LETTER RO
-+<U30EE> /x83/x8e KATAKANA LETTER SMALL WA
-+<U30EF> /x83/x8f KATAKANA LETTER WA
-+<U30F0> /x83/x90 KATAKANA LETTER WI
-+<U30F1> /x83/x91 KATAKANA LETTER WE
-+<U30F2> /x83/x92 KATAKANA LETTER WO
-+<U30F3> /x83/x93 KATAKANA LETTER N
-+<U30F4> /x83/x94 KATAKANA LETTER VU
-+<U30F5> /x83/x95 KATAKANA LETTER SMALL KA
-+<U30F6> /x83/x96 KATAKANA LETTER SMALL KE
-+<U0391> /x83/x9f GREEK CAPITAL LETTER ALPHA
-+<U0392> /x83/xa0 GREEK CAPITAL LETTER BETA
-+<U0393> /x83/xa1 GREEK CAPITAL LETTER GAMMA
-+<U0394> /x83/xa2 GREEK CAPITAL LETTER DELTA
-+<U0395> /x83/xa3 GREEK CAPITAL LETTER EPSILON
-+<U0396> /x83/xa4 GREEK CAPITAL LETTER ZETA
-+<U0397> /x83/xa5 GREEK CAPITAL LETTER ETA
-+<U0398> /x83/xa6 GREEK CAPITAL LETTER THETA
-+<U0399> /x83/xa7 GREEK CAPITAL LETTER IOTA
-+<U039A> /x83/xa8 GREEK CAPITAL LETTER KAPPA
-+<U039B> /x83/xa9 GREEK CAPITAL LETTER LAMDA
-+<U039C> /x83/xaa GREEK CAPITAL LETTER MU
-+<U039D> /x83/xab GREEK CAPITAL LETTER NU
-+<U039E> /x83/xac GREEK CAPITAL LETTER XI
-+<U039F> /x83/xad GREEK CAPITAL LETTER OMICRON
-+<U03A0> /x83/xae GREEK CAPITAL LETTER PI
-+<U03A1> /x83/xaf GREEK CAPITAL LETTER RHO
-+<U03A3> /x83/xb0 GREEK CAPITAL LETTER SIGMA
-+<U03A4> /x83/xb1 GREEK CAPITAL LETTER TAU
-+<U03A5> /x83/xb2 GREEK CAPITAL LETTER UPSILON
-+<U03A6> /x83/xb3 GREEK CAPITAL LETTER PHI
-+<U03A7> /x83/xb4 GREEK CAPITAL LETTER CHI
-+<U03A8> /x83/xb5 GREEK CAPITAL LETTER PSI
-+<U03A9> /x83/xb6 GREEK CAPITAL LETTER OMEGA
-+<U03B1> /x83/xbf GREEK SMALL LETTER ALPHA
-+<U03B2> /x83/xc0 GREEK SMALL LETTER BETA
-+<U03B3> /x83/xc1 GREEK SMALL LETTER GAMMA
-+<U03B4> /x83/xc2 GREEK SMALL LETTER DELTA
-+<U03B5> /x83/xc3 GREEK SMALL LETTER EPSILON
-+<U03B6> /x83/xc4 GREEK SMALL LETTER ZETA
-+<U03B7> /x83/xc5 GREEK SMALL LETTER ETA
-+<U03B8> /x83/xc6 GREEK SMALL LETTER THETA
-+<U03B9> /x83/xc7 GREEK SMALL LETTER IOTA
-+<U03BA> /x83/xc8 GREEK SMALL LETTER KAPPA
-+<U03BB> /x83/xc9 GREEK SMALL LETTER LAMDA
-+<U03BC> /x83/xca GREEK SMALL LETTER MU
-+<U03BD> /x83/xcb GREEK SMALL LETTER NU
-+<U03BE> /x83/xcc GREEK SMALL LETTER XI
-+<U03BF> /x83/xcd GREEK SMALL LETTER OMICRON
-+<U03C0> /x83/xce GREEK SMALL LETTER PI
-+<U03C1> /x83/xcf GREEK SMALL LETTER RHO
-+<U03C3> /x83/xd0 GREEK SMALL LETTER SIGMA
-+<U03C4> /x83/xd1 GREEK SMALL LETTER TAU
-+<U03C5> /x83/xd2 GREEK SMALL LETTER UPSILON
-+<U03C6> /x83/xd3 GREEK SMALL LETTER PHI
-+<U03C7> /x83/xd4 GREEK SMALL LETTER CHI
-+<U03C8> /x83/xd5 GREEK SMALL LETTER PSI
-+<U03C9> /x83/xd6 GREEK SMALL LETTER OMEGA
-+<U0410> /x84/x40 CYRILLIC CAPITAL LETTER A
-+<U0411> /x84/x41 CYRILLIC CAPITAL LETTER BE
-+<U0412> /x84/x42 CYRILLIC CAPITAL LETTER VE
-+<U0413> /x84/x43 CYRILLIC CAPITAL LETTER GHE
-+<U0414> /x84/x44 CYRILLIC CAPITAL LETTER DE
-+<U0415> /x84/x45 CYRILLIC CAPITAL LETTER IE
-+<U0401> /x84/x46 CYRILLIC CAPITAL LETTER IO
-+<U0416> /x84/x47 CYRILLIC CAPITAL LETTER ZHE
-+<U0417> /x84/x48 CYRILLIC CAPITAL LETTER ZE
-+<U0418> /x84/x49 CYRILLIC CAPITAL LETTER I
-+<U0419> /x84/x4a CYRILLIC CAPITAL LETTER SHORT I
-+<U041A> /x84/x4b CYRILLIC CAPITAL LETTER KA
-+<U041B> /x84/x4c CYRILLIC CAPITAL LETTER EL
-+<U041C> /x84/x4d CYRILLIC CAPITAL LETTER EM
-+<U041D> /x84/x4e CYRILLIC CAPITAL LETTER EN
-+<U041E> /x84/x4f CYRILLIC CAPITAL LETTER O
-+<U041F> /x84/x50 CYRILLIC CAPITAL LETTER PE
-+<U0420> /x84/x51 CYRILLIC CAPITAL LETTER ER
-+<U0421> /x84/x52 CYRILLIC CAPITAL LETTER ES
-+<U0422> /x84/x53 CYRILLIC CAPITAL LETTER TE
-+<U0423> /x84/x54 CYRILLIC CAPITAL LETTER U
-+<U0424> /x84/x55 CYRILLIC CAPITAL LETTER EF
-+<U0425> /x84/x56 CYRILLIC CAPITAL LETTER HA
-+<U0426> /x84/x57 CYRILLIC CAPITAL LETTER TSE
-+<U0427> /x84/x58 CYRILLIC CAPITAL LETTER CHE
-+<U0428> /x84/x59 CYRILLIC CAPITAL LETTER SHA
-+<U0429> /x84/x5a CYRILLIC CAPITAL LETTER SHCHA
-+<U042A> /x84/x5b CYRILLIC CAPITAL LETTER HARD SIGN
-+<U042B> /x84/x5c CYRILLIC CAPITAL LETTER YERU
-+<U042C> /x84/x5d CYRILLIC CAPITAL LETTER SOFT SIGN
-+<U042D> /x84/x5e CYRILLIC CAPITAL LETTER E
-+<U042E> /x84/x5f CYRILLIC CAPITAL LETTER YU
-+<U042F> /x84/x60 CYRILLIC CAPITAL LETTER YA
-+<U0430> /x84/x70 CYRILLIC SMALL LETTER A
-+<U0431> /x84/x71 CYRILLIC SMALL LETTER BE
-+<U0432> /x84/x72 CYRILLIC SMALL LETTER VE
-+<U0433> /x84/x73 CYRILLIC SMALL LETTER GHE
-+<U0434> /x84/x74 CYRILLIC SMALL LETTER DE
-+<U0435> /x84/x75 CYRILLIC SMALL LETTER IE
-+<U0451> /x84/x76 CYRILLIC SMALL LETTER IO
-+<U0436> /x84/x77 CYRILLIC SMALL LETTER ZHE
-+<U0437> /x84/x78 CYRILLIC SMALL LETTER ZE
-+<U0438> /x84/x79 CYRILLIC SMALL LETTER I
-+<U0439> /x84/x7a CYRILLIC SMALL LETTER SHORT I
-+<U043A> /x84/x7b CYRILLIC SMALL LETTER KA
-+<U043B> /x84/x7c CYRILLIC SMALL LETTER EL
-+<U043C> /x84/x7d CYRILLIC SMALL LETTER EM
-+<U043D> /x84/x7e CYRILLIC SMALL LETTER EN
-+<U043E> /x84/x80 CYRILLIC SMALL LETTER O
-+<U043F> /x84/x81 CYRILLIC SMALL LETTER PE
-+<U0440> /x84/x82 CYRILLIC SMALL LETTER ER
-+<U0441> /x84/x83 CYRILLIC SMALL LETTER ES
-+<U0442> /x84/x84 CYRILLIC SMALL LETTER TE
-+<U0443> /x84/x85 CYRILLIC SMALL LETTER U
-+<U0444> /x84/x86 CYRILLIC SMALL LETTER EF
-+<U0445> /x84/x87 CYRILLIC SMALL LETTER HA
-+<U0446> /x84/x88 CYRILLIC SMALL LETTER TSE
-+<U0447> /x84/x89 CYRILLIC SMALL LETTER CHE
-+<U0448> /x84/x8a CYRILLIC SMALL LETTER SHA
-+<U0449> /x84/x8b CYRILLIC SMALL LETTER SHCHA
-+<U044A> /x84/x8c CYRILLIC SMALL LETTER HARD SIGN
-+<U044B> /x84/x8d CYRILLIC SMALL LETTER YERU
-+<U044C> /x84/x8e CYRILLIC SMALL LETTER SOFT SIGN
-+<U044D> /x84/x8f CYRILLIC SMALL LETTER E
-+<U044E> /x84/x90 CYRILLIC SMALL LETTER YU
-+<U044F> /x84/x91 CYRILLIC SMALL LETTER YA
-+<U2500> /x84/x9f BOX DRAWINGS LIGHT HORIZONTAL
-+<U2502> /x84/xa0 BOX DRAWINGS LIGHT VERTICAL
-+<U250C> /x84/xa1 BOX DRAWINGS LIGHT DOWN AND RIGHT
-+<U2510> /x84/xa2 BOX DRAWINGS LIGHT DOWN AND LEFT
-+<U2518> /x84/xa3 BOX DRAWINGS LIGHT UP AND LEFT
-+<U2514> /x84/xa4 BOX DRAWINGS LIGHT UP AND RIGHT
-+<U251C> /x84/xa5 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-+<U252C> /x84/xa6 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-+<U2524> /x84/xa7 BOX DRAWINGS LIGHT VERTICAL AND LEFT
-+<U2534> /x84/xa8 BOX DRAWINGS LIGHT UP AND HORIZONTAL
-+<U253C> /x84/xa9 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-+<U2501> /x84/xaa BOX DRAWINGS HEAVY HORIZONTAL
-+<U2503> /x84/xab BOX DRAWINGS HEAVY VERTICAL
-+<U250F> /x84/xac BOX DRAWINGS HEAVY DOWN AND RIGHT
-+<U2513> /x84/xad BOX DRAWINGS HEAVY DOWN AND LEFT
-+<U251B> /x84/xae BOX DRAWINGS HEAVY UP AND LEFT
-+<U2517> /x84/xaf BOX DRAWINGS HEAVY UP AND RIGHT
-+<U2523> /x84/xb0 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-+<U2533> /x84/xb1 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-+<U252B> /x84/xb2 BOX DRAWINGS HEAVY VERTICAL AND LEFT
-+<U253B> /x84/xb3 BOX DRAWINGS HEAVY UP AND HORIZONTAL
-+<U254B> /x84/xb4 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-+<U2520> /x84/xb5 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-+<U252F> /x84/xb6 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-+<U2528> /x84/xb7 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-+<U2537> /x84/xb8 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-+<U253F> /x84/xb9 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-+<U251D> /x84/xba BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-+<U2530> /x84/xbb BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-+<U2525> /x84/xbc BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-+<U2538> /x84/xbd BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-+<U2542> /x84/xbe BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-+<U2460> /x87/x40 CIRCLED DIGIT ONE
-+<U2461> /x87/x41 CIRCLED DIGIT TWO
-+<U2462> /x87/x42 CIRCLED DIGIT THREE
-+<U2463> /x87/x43 CIRCLED DIGIT FOUR
-+<U2464> /x87/x44 CIRCLED DIGIT FIVE
-+<U2465> /x87/x45 CIRCLED DIGIT SIX
-+<U2466> /x87/x46 CIRCLED DIGIT SEVEN
-+<U2467> /x87/x47 CIRCLED DIGIT EIGHT
-+<U2468> /x87/x48 CIRCLED DIGIT NINE
-+<U2469> /x87/x49 CIRCLED NUMBER TEN
-+<U246A> /x87/x4a CIRCLED NUMBER ELEVEN
-+<U246B> /x87/x4b CIRCLED NUMBER TWELVE
-+<U246C> /x87/x4c CIRCLED NUMBER THIRTEEN
-+<U246D> /x87/x4d CIRCLED NUMBER FOURTEEN
-+<U246E> /x87/x4e CIRCLED NUMBER FIFTEEN
-+<U246F> /x87/x4f CIRCLED NUMBER SIXTEEN
-+<U2470> /x87/x50 CIRCLED NUMBER SEVENTEEN
-+<U2471> /x87/x51 CIRCLED NUMBER EIGHTEEN
-+<U2472> /x87/x52 CIRCLED NUMBER NINETEEN
-+<U2473> /x87/x53 CIRCLED NUMBER TWENTY
-+<U2160> /x87/x54 ROMAN NUMERAL ONE
-+<U2161> /x87/x55 ROMAN NUMERAL TWO
-+<U2162> /x87/x56 ROMAN NUMERAL THREE
-+<U2163> /x87/x57 ROMAN NUMERAL FOUR
-+<U2164> /x87/x58 ROMAN NUMERAL FIVE
-+<U2165> /x87/x59 ROMAN NUMERAL SIX
-+<U2166> /x87/x5a ROMAN NUMERAL SEVEN
-+<U2167> /x87/x5b ROMAN NUMERAL EIGHT
-+<U2168> /x87/x5c ROMAN NUMERAL NINE
-+<U2169> /x87/x5d ROMAN NUMERAL TEN
-+<U3349> /x87/x5f SQUARE MIRI
-+<U3314> /x87/x60 SQUARE KIRO
-+<U3322> /x87/x61 SQUARE SENTI
-+<U334D> /x87/x62 SQUARE MEETORU
-+<U3318> /x87/x63 SQUARE GURAMU
-+<U3327> /x87/x64 SQUARE TON
-+<U3303> /x87/x65 SQUARE AARU
-+<U3336> /x87/x66 SQUARE HEKUTAARU
-+<U3351> /x87/x67 SQUARE RITTORU
-+<U3357> /x87/x68 SQUARE WATTO
-+<U330D> /x87/x69 SQUARE KARORII
-+<U3326> /x87/x6a SQUARE DORU
-+<U3323> /x87/x6b SQUARE SENTO
-+<U332B> /x87/x6c SQUARE PAASENTO
-+<U334A> /x87/x6d SQUARE MIRIBAARU
-+<U333B> /x87/x6e SQUARE PEEZI
-+<U339C> /x87/x6f SQUARE MM
-+<U339D> /x87/x70 SQUARE CM
-+<U339E> /x87/x71 SQUARE KM
-+<U338E> /x87/x72 SQUARE MG
-+<U338F> /x87/x73 SQUARE KG
-+<U33C4> /x87/x74 SQUARE CC
-+<U33A1> /x87/x75 SQUARE M SQUARED
-+<U337B> /x87/x7e SQUARE ERA NAME HEISEI
-+<U301D> /x87/x80 REVERSED DOUBLE PRIME QUOTATION MARK
-+<U301F> /x87/x81 LOW DOUBLE PRIME QUOTATION MARK
-+<U2116> /x87/x82 NUMERO SIGN
-+<U33CD> /x87/x83 SQUARE KK
-+<U2121> /x87/x84 TELEPHONE SIGN
-+<U32A4> /x87/x85 CIRCLED IDEOGRAPH HIGH
-+<U32A5> /x87/x86 CIRCLED IDEOGRAPH CENTRE
-+<U32A6> /x87/x87 CIRCLED IDEOGRAPH LOW
-+<U32A7> /x87/x88 CIRCLED IDEOGRAPH LEFT
-+<U32A8> /x87/x89 CIRCLED IDEOGRAPH RIGHT
-+<U3231> /x87/x8a PARENTHESIZED IDEOGRAPH STOCK
-+<U3232> /x87/x8b PARENTHESIZED IDEOGRAPH HAVE
-+<U3239> /x87/x8c PARENTHESIZED IDEOGRAPH REPRESENT
-+<U337E> /x87/x8d SQUARE ERA NAME MEIZI
-+<U337D> /x87/x8e SQUARE ERA NAME TAISYOU
-+<U337C> /x87/x8f SQUARE ERA NAME SYOUWA
-+%IRREVERSIBLE%<U2252> /x87/x90 APPROXIMATELY EQUAL TO OR THE IMAGE OF
-+%IRREVERSIBLE%<U2261> /x87/x91 IDENTICAL TO
-+%IRREVERSIBLE%<U222B> /x87/x92 INTEGRAL
-+<U222E> /x87/x93 CONTOUR INTEGRAL
-+<U2211> /x87/x94 N-ARY SUMMATION
-+%IRREVERSIBLE%<U221A> /x87/x95 SQUARE ROOT
-+%IRREVERSIBLE%<U22A5> /x87/x96 UP TACK
-+%IRREVERSIBLE%<U2220> /x87/x97 ANGLE
-+<U221F> /x87/x98 RIGHT ANGLE
-+<U22BF> /x87/x99 RIGHT TRIANGLE
-+%IRREVERSIBLE%<U2235> /x87/x9a BECAUSE
-+%IRREVERSIBLE%<U2229> /x87/x9b INTERSECTION
-+%IRREVERSIBLE%<U222A> /x87/x9c UNION
-+<U4E9C> /x88/x9f <CJK>
-+<U5516> /x88/xa0 <CJK>
-+<U5A03> /x88/xa1 <CJK>
-+<U963F> /x88/xa2 <CJK>
-+<U54C0> /x88/xa3 <CJK>
-+<U611B> /x88/xa4 <CJK>
-+<U6328> /x88/xa5 <CJK>
-+<U59F6> /x88/xa6 <CJK>
-+<U9022> /x88/xa7 <CJK>
-+<U8475> /x88/xa8 <CJK>
-+<U831C> /x88/xa9 <CJK>
-+<U7A50> /x88/xaa <CJK>
-+<U60AA> /x88/xab <CJK>
-+<U63E1> /x88/xac <CJK>
-+<U6E25> /x88/xad <CJK>
-+<U65ED> /x88/xae <CJK>
-+<U8466> /x88/xaf <CJK>
-+<U82A6> /x88/xb0 <CJK>
-+<U9BF5> /x88/xb1 <CJK>
-+<U6893> /x88/xb2 <CJK>
-+<U5727> /x88/xb3 <CJK>
-+<U65A1> /x88/xb4 <CJK>
-+<U6271> /x88/xb5 <CJK>
-+<U5B9B> /x88/xb6 <CJK>
-+<U59D0> /x88/xb7 <CJK>
-+<U867B> /x88/xb8 <CJK>
-+<U98F4> /x88/xb9 <CJK>
-+<U7D62> /x88/xba <CJK>
-+<U7DBE> /x88/xbb <CJK>
-+<U9B8E> /x88/xbc <CJK>
-+<U6216> /x88/xbd <CJK>
-+<U7C9F> /x88/xbe <CJK>
-+<U88B7> /x88/xbf <CJK>
-+<U5B89> /x88/xc0 <CJK>
-+<U5EB5> /x88/xc1 <CJK>
-+<U6309> /x88/xc2 <CJK>
-+<U6697> /x88/xc3 <CJK>
-+<U6848> /x88/xc4 <CJK>
-+<U95C7> /x88/xc5 <CJK>
-+<U978D> /x88/xc6 <CJK>
-+<U674F> /x88/xc7 <CJK>
-+<U4EE5> /x88/xc8 <CJK>
-+<U4F0A> /x88/xc9 <CJK>
-+<U4F4D> /x88/xca <CJK>
-+<U4F9D> /x88/xcb <CJK>
-+<U5049> /x88/xcc <CJK>
-+<U56F2> /x88/xcd <CJK>
-+<U5937> /x88/xce <CJK>
-+<U59D4> /x88/xcf <CJK>
-+<U5A01> /x88/xd0 <CJK>
-+<U5C09> /x88/xd1 <CJK>
-+<U60DF> /x88/xd2 <CJK>
-+<U610F> /x88/xd3 <CJK>
-+<U6170> /x88/xd4 <CJK>
-+<U6613> /x88/xd5 <CJK>
-+<U6905> /x88/xd6 <CJK>
-+<U70BA> /x88/xd7 <CJK>
-+<U754F> /x88/xd8 <CJK>
-+<U7570> /x88/xd9 <CJK>
-+<U79FB> /x88/xda <CJK>
-+<U7DAD> /x88/xdb <CJK>
-+<U7DEF> /x88/xdc <CJK>
-+<U80C3> /x88/xdd <CJK>
-+<U840E> /x88/xde <CJK>
-+<U8863> /x88/xdf <CJK>
-+<U8B02> /x88/xe0 <CJK>
-+<U9055> /x88/xe1 <CJK>
-+<U907A> /x88/xe2 <CJK>
-+<U533B> /x88/xe3 <CJK>
-+<U4E95> /x88/xe4 <CJK>
-+<U4EA5> /x88/xe5 <CJK>
-+<U57DF> /x88/xe6 <CJK>
-+<U80B2> /x88/xe7 <CJK>
-+<U90C1> /x88/xe8 <CJK>
-+<U78EF> /x88/xe9 <CJK>
-+<U4E00> /x88/xea <CJK>
-+<U58F1> /x88/xeb <CJK>
-+<U6EA2> /x88/xec <CJK>
-+<U9038> /x88/xed <CJK>
-+<U7A32> /x88/xee <CJK>
-+<U8328> /x88/xef <CJK>
-+<U828B> /x88/xf0 <CJK>
-+<U9C2F> /x88/xf1 <CJK>
-+<U5141> /x88/xf2 <CJK>
-+<U5370> /x88/xf3 <CJK>
-+<U54BD> /x88/xf4 <CJK>
-+<U54E1> /x88/xf5 <CJK>
-+<U56E0> /x88/xf6 <CJK>
-+<U59FB> /x88/xf7 <CJK>
-+<U5F15> /x88/xf8 <CJK>
-+<U98F2> /x88/xf9 <CJK>
-+<U6DEB> /x88/xfa <CJK>
-+<U80E4> /x88/xfb <CJK>
-+<U852D> /x88/xfc <CJK>
-+<U9662> /x89/x40 <CJK>
-+<U9670> /x89/x41 <CJK>
-+<U96A0> /x89/x42 <CJK>
-+<U97FB> /x89/x43 <CJK>
-+<U540B> /x89/x44 <CJK>
-+<U53F3> /x89/x45 <CJK>
-+<U5B87> /x89/x46 <CJK>
-+<U70CF> /x89/x47 <CJK>
-+<U7FBD> /x89/x48 <CJK>
-+<U8FC2> /x89/x49 <CJK>
-+<U96E8> /x89/x4a <CJK>
-+<U536F> /x89/x4b <CJK>
-+<U9D5C> /x89/x4c <CJK>
-+<U7ABA> /x89/x4d <CJK>
-+<U4E11> /x89/x4e <CJK>
-+<U7893> /x89/x4f <CJK>
-+<U81FC> /x89/x50 <CJK>
-+<U6E26> /x89/x51 <CJK>
-+<U5618> /x89/x52 <CJK>
-+<U5504> /x89/x53 <CJK>
-+<U6B1D> /x89/x54 <CJK>
-+<U851A> /x89/x55 <CJK>
-+<U9C3B> /x89/x56 <CJK>
-+<U59E5> /x89/x57 <CJK>
-+<U53A9> /x89/x58 <CJK>
-+<U6D66> /x89/x59 <CJK>
-+<U74DC> /x89/x5a <CJK>
-+<U958F> /x89/x5b <CJK>
-+<U5642> /x89/x5c <CJK>
-+<U4E91> /x89/x5d <CJK>
-+<U904B> /x89/x5e <CJK>
-+<U96F2> /x89/x5f <CJK>
-+<U834F> /x89/x60 <CJK>
-+<U990C> /x89/x61 <CJK>
-+<U53E1> /x89/x62 <CJK>
-+<U55B6> /x89/x63 <CJK>
-+<U5B30> /x89/x64 <CJK>
-+<U5F71> /x89/x65 <CJK>
-+<U6620> /x89/x66 <CJK>
-+<U66F3> /x89/x67 <CJK>
-+<U6804> /x89/x68 <CJK>
-+<U6C38> /x89/x69 <CJK>
-+<U6CF3> /x89/x6a <CJK>
-+<U6D29> /x89/x6b <CJK>
-+<U745B> /x89/x6c <CJK>
-+<U76C8> /x89/x6d <CJK>
-+<U7A4E> /x89/x6e <CJK>
-+<U9834> /x89/x6f <CJK>
-+<U82F1> /x89/x70 <CJK>
-+<U885B> /x89/x71 <CJK>
-+<U8A60> /x89/x72 <CJK>
-+<U92ED> /x89/x73 <CJK>
-+<U6DB2> /x89/x74 <CJK>
-+<U75AB> /x89/x75 <CJK>
-+<U76CA> /x89/x76 <CJK>
-+<U99C5> /x89/x77 <CJK>
-+<U60A6> /x89/x78 <CJK>
-+<U8B01> /x89/x79 <CJK>
-+<U8D8A> /x89/x7a <CJK>
-+<U95B2> /x89/x7b <CJK>
-+<U698E> /x89/x7c <CJK>
-+<U53AD> /x89/x7d <CJK>
-+<U5186> /x89/x7e <CJK>
-+<U5712> /x89/x80 <CJK>
-+<U5830> /x89/x81 <CJK>
-+<U5944> /x89/x82 <CJK>
-+<U5BB4> /x89/x83 <CJK>
-+<U5EF6> /x89/x84 <CJK>
-+<U6028> /x89/x85 <CJK>
-+<U63A9> /x89/x86 <CJK>
-+<U63F4> /x89/x87 <CJK>
-+<U6CBF> /x89/x88 <CJK>
-+<U6F14> /x89/x89 <CJK>
-+<U708E> /x89/x8a <CJK>
-+<U7114> /x89/x8b <CJK>
-+<U7159> /x89/x8c <CJK>
-+<U71D5> /x89/x8d <CJK>
-+<U733F> /x89/x8e <CJK>
-+<U7E01> /x89/x8f <CJK>
-+<U8276> /x89/x90 <CJK>
-+<U82D1> /x89/x91 <CJK>
-+<U8597> /x89/x92 <CJK>
-+<U9060> /x89/x93 <CJK>
-+<U925B> /x89/x94 <CJK>
-+<U9D1B> /x89/x95 <CJK>
-+<U5869> /x89/x96 <CJK>
-+<U65BC> /x89/x97 <CJK>
-+<U6C5A> /x89/x98 <CJK>
-+<U7525> /x89/x99 <CJK>
-+<U51F9> /x89/x9a <CJK>
-+<U592E> /x89/x9b <CJK>
-+<U5965> /x89/x9c <CJK>
-+<U5F80> /x89/x9d <CJK>
-+<U5FDC> /x89/x9e <CJK>
-+<U62BC> /x89/x9f <CJK>
-+<U65FA> /x89/xa0 <CJK>
-+<U6A2A> /x89/xa1 <CJK>
-+<U6B27> /x89/xa2 <CJK>
-+<U6BB4> /x89/xa3 <CJK>
-+<U738B> /x89/xa4 <CJK>
-+<U7FC1> /x89/xa5 <CJK>
-+<U8956> /x89/xa6 <CJK>
-+<U9D2C> /x89/xa7 <CJK>
-+<U9D0E> /x89/xa8 <CJK>
-+<U9EC4> /x89/xa9 <CJK>
-+<U5CA1> /x89/xaa <CJK>
-+<U6C96> /x89/xab <CJK>
-+<U837B> /x89/xac <CJK>
-+<U5104> /x89/xad <CJK>
-+<U5C4B> /x89/xae <CJK>
-+<U61B6> /x89/xaf <CJK>
-+<U81C6> /x89/xb0 <CJK>
-+<U6876> /x89/xb1 <CJK>
-+<U7261> /x89/xb2 <CJK>
-+<U4E59> /x89/xb3 <CJK>
-+<U4FFA> /x89/xb4 <CJK>
-+<U5378> /x89/xb5 <CJK>
-+<U6069> /x89/xb6 <CJK>
-+<U6E29> /x89/xb7 <CJK>
-+<U7A4F> /x89/xb8 <CJK>
-+<U97F3> /x89/xb9 <CJK>
-+<U4E0B> /x89/xba <CJK>
-+<U5316> /x89/xbb <CJK>
-+<U4EEE> /x89/xbc <CJK>
-+<U4F55> /x89/xbd <CJK>
-+<U4F3D> /x89/xbe <CJK>
-+<U4FA1> /x89/xbf <CJK>
-+<U4F73> /x89/xc0 <CJK>
-+<U52A0> /x89/xc1 <CJK>
-+<U53EF> /x89/xc2 <CJK>
-+<U5609> /x89/xc3 <CJK>
-+<U590F> /x89/xc4 <CJK>
-+<U5AC1> /x89/xc5 <CJK>
-+<U5BB6> /x89/xc6 <CJK>
-+<U5BE1> /x89/xc7 <CJK>
-+<U79D1> /x89/xc8 <CJK>
-+<U6687> /x89/xc9 <CJK>
-+<U679C> /x89/xca <CJK>
-+<U67B6> /x89/xcb <CJK>
-+<U6B4C> /x89/xcc <CJK>
-+<U6CB3> /x89/xcd <CJK>
-+<U706B> /x89/xce <CJK>
-+<U73C2> /x89/xcf <CJK>
-+<U798D> /x89/xd0 <CJK>
-+<U79BE> /x89/xd1 <CJK>
-+<U7A3C> /x89/xd2 <CJK>
-+<U7B87> /x89/xd3 <CJK>
-+<U82B1> /x89/xd4 <CJK>
-+<U82DB> /x89/xd5 <CJK>
-+<U8304> /x89/xd6 <CJK>
-+<U8377> /x89/xd7 <CJK>
-+<U83EF> /x89/xd8 <CJK>
-+<U83D3> /x89/xd9 <CJK>
-+<U8766> /x89/xda <CJK>
-+<U8AB2> /x89/xdb <CJK>
-+<U5629> /x89/xdc <CJK>
-+<U8CA8> /x89/xdd <CJK>
-+<U8FE6> /x89/xde <CJK>
-+<U904E> /x89/xdf <CJK>
-+<U971E> /x89/xe0 <CJK>
-+<U868A> /x89/xe1 <CJK>
-+<U4FC4> /x89/xe2 <CJK>
-+<U5CE8> /x89/xe3 <CJK>
-+<U6211> /x89/xe4 <CJK>
-+<U7259> /x89/xe5 <CJK>
-+<U753B> /x89/xe6 <CJK>
-+<U81E5> /x89/xe7 <CJK>
-+<U82BD> /x89/xe8 <CJK>
-+<U86FE> /x89/xe9 <CJK>
-+<U8CC0> /x89/xea <CJK>
-+<U96C5> /x89/xeb <CJK>
-+<U9913> /x89/xec <CJK>
-+<U99D5> /x89/xed <CJK>
-+<U4ECB> /x89/xee <CJK>
-+<U4F1A> /x89/xef <CJK>
-+<U89E3> /x89/xf0 <CJK>
-+<U56DE> /x89/xf1 <CJK>
-+<U584A> /x89/xf2 <CJK>
-+<U58CA> /x89/xf3 <CJK>
-+<U5EFB> /x89/xf4 <CJK>
-+<U5FEB> /x89/xf5 <CJK>
-+<U602A> /x89/xf6 <CJK>
-+<U6094> /x89/xf7 <CJK>
-+<U6062> /x89/xf8 <CJK>
-+<U61D0> /x89/xf9 <CJK>
-+<U6212> /x89/xfa <CJK>
-+<U62D0> /x89/xfb <CJK>
-+<U6539> /x89/xfc <CJK>
-+<U9B41> /x8a/x40 <CJK>
-+<U6666> /x8a/x41 <CJK>
-+<U68B0> /x8a/x42 <CJK>
-+<U6D77> /x8a/x43 <CJK>
-+<U7070> /x8a/x44 <CJK>
-+<U754C> /x8a/x45 <CJK>
-+<U7686> /x8a/x46 <CJK>
-+<U7D75> /x8a/x47 <CJK>
-+<U82A5> /x8a/x48 <CJK>
-+<U87F9> /x8a/x49 <CJK>
-+<U958B> /x8a/x4a <CJK>
-+<U968E> /x8a/x4b <CJK>
-+<U8C9D> /x8a/x4c <CJK>
-+<U51F1> /x8a/x4d <CJK>
-+<U52BE> /x8a/x4e <CJK>
-+<U5916> /x8a/x4f <CJK>
-+<U54B3> /x8a/x50 <CJK>
-+<U5BB3> /x8a/x51 <CJK>
-+<U5D16> /x8a/x52 <CJK>
-+<U6168> /x8a/x53 <CJK>
-+<U6982> /x8a/x54 <CJK>
-+<U6DAF> /x8a/x55 <CJK>
-+<U788D> /x8a/x56 <CJK>
-+<U84CB> /x8a/x57 <CJK>
-+<U8857> /x8a/x58 <CJK>
-+<U8A72> /x8a/x59 <CJK>
-+<U93A7> /x8a/x5a <CJK>
-+<U9AB8> /x8a/x5b <CJK>
-+<U6D6C> /x8a/x5c <CJK>
-+<U99A8> /x8a/x5d <CJK>
-+<U86D9> /x8a/x5e <CJK>
-+<U57A3> /x8a/x5f <CJK>
-+<U67FF> /x8a/x60 <CJK>
-+<U86CE> /x8a/x61 <CJK>
-+<U920E> /x8a/x62 <CJK>
-+<U5283> /x8a/x63 <CJK>
-+<U5687> /x8a/x64 <CJK>
-+<U5404> /x8a/x65 <CJK>
-+<U5ED3> /x8a/x66 <CJK>
-+<U62E1> /x8a/x67 <CJK>
-+<U64B9> /x8a/x68 <CJK>
-+<U683C> /x8a/x69 <CJK>
-+<U6838> /x8a/x6a <CJK>
-+<U6BBB> /x8a/x6b <CJK>
-+<U7372> /x8a/x6c <CJK>
-+<U78BA> /x8a/x6d <CJK>
-+<U7A6B> /x8a/x6e <CJK>
-+<U899A> /x8a/x6f <CJK>
-+<U89D2> /x8a/x70 <CJK>
-+<U8D6B> /x8a/x71 <CJK>
-+<U8F03> /x8a/x72 <CJK>
-+<U90ED> /x8a/x73 <CJK>
-+<U95A3> /x8a/x74 <CJK>
-+<U9694> /x8a/x75 <CJK>
-+<U9769> /x8a/x76 <CJK>
-+<U5B66> /x8a/x77 <CJK>
-+<U5CB3> /x8a/x78 <CJK>
-+<U697D> /x8a/x79 <CJK>
-+<U984D> /x8a/x7a <CJK>
-+<U984E> /x8a/x7b <CJK>
-+<U639B> /x8a/x7c <CJK>
-+<U7B20> /x8a/x7d <CJK>
-+<U6A2B> /x8a/x7e <CJK>
-+<U6A7F> /x8a/x80 <CJK>
-+<U68B6> /x8a/x81 <CJK>
-+<U9C0D> /x8a/x82 <CJK>
-+<U6F5F> /x8a/x83 <CJK>
-+<U5272> /x8a/x84 <CJK>
-+<U559D> /x8a/x85 <CJK>
-+<U6070> /x8a/x86 <CJK>
-+<U62EC> /x8a/x87 <CJK>
-+<U6D3B> /x8a/x88 <CJK>
-+<U6E07> /x8a/x89 <CJK>
-+<U6ED1> /x8a/x8a <CJK>
-+<U845B> /x8a/x8b <CJK>
-+<U8910> /x8a/x8c <CJK>
-+<U8F44> /x8a/x8d <CJK>
-+<U4E14> /x8a/x8e <CJK>
-+<U9C39> /x8a/x8f <CJK>
-+<U53F6> /x8a/x90 <CJK>
-+<U691B> /x8a/x91 <CJK>
-+<U6A3A> /x8a/x92 <CJK>
-+<U9784> /x8a/x93 <CJK>
-+<U682A> /x8a/x94 <CJK>
-+<U515C> /x8a/x95 <CJK>
-+<U7AC3> /x8a/x96 <CJK>
-+<U84B2> /x8a/x97 <CJK>
-+<U91DC> /x8a/x98 <CJK>
-+<U938C> /x8a/x99 <CJK>
-+<U565B> /x8a/x9a <CJK>
-+<U9D28> /x8a/x9b <CJK>
-+<U6822> /x8a/x9c <CJK>
-+<U8305> /x8a/x9d <CJK>
-+<U8431> /x8a/x9e <CJK>
-+<U7CA5> /x8a/x9f <CJK>
-+<U5208> /x8a/xa0 <CJK>
-+<U82C5> /x8a/xa1 <CJK>
-+<U74E6> /x8a/xa2 <CJK>
-+<U4E7E> /x8a/xa3 <CJK>
-+<U4F83> /x8a/xa4 <CJK>
-+<U51A0> /x8a/xa5 <CJK>
-+<U5BD2> /x8a/xa6 <CJK>
-+<U520A> /x8a/xa7 <CJK>
-+<U52D8> /x8a/xa8 <CJK>
-+<U52E7> /x8a/xa9 <CJK>
-+<U5DFB> /x8a/xaa <CJK>
-+<U559A> /x8a/xab <CJK>
-+<U582A> /x8a/xac <CJK>
-+<U59E6> /x8a/xad <CJK>
-+<U5B8C> /x8a/xae <CJK>
-+<U5B98> /x8a/xaf <CJK>
-+<U5BDB> /x8a/xb0 <CJK>
-+<U5E72> /x8a/xb1 <CJK>
-+<U5E79> /x8a/xb2 <CJK>
-+<U60A3> /x8a/xb3 <CJK>
-+<U611F> /x8a/xb4 <CJK>
-+<U6163> /x8a/xb5 <CJK>
-+<U61BE> /x8a/xb6 <CJK>
-+<U63DB> /x8a/xb7 <CJK>
-+<U6562> /x8a/xb8 <CJK>
-+<U67D1> /x8a/xb9 <CJK>
-+<U6853> /x8a/xba <CJK>
-+<U68FA> /x8a/xbb <CJK>
-+<U6B3E> /x8a/xbc <CJK>
-+<U6B53> /x8a/xbd <CJK>
-+<U6C57> /x8a/xbe <CJK>
-+<U6F22> /x8a/xbf <CJK>
-+<U6F97> /x8a/xc0 <CJK>
-+<U6F45> /x8a/xc1 <CJK>
-+<U74B0> /x8a/xc2 <CJK>
-+<U7518> /x8a/xc3 <CJK>
-+<U76E3> /x8a/xc4 <CJK>
-+<U770B> /x8a/xc5 <CJK>
-+<U7AFF> /x8a/xc6 <CJK>
-+<U7BA1> /x8a/xc7 <CJK>
-+<U7C21> /x8a/xc8 <CJK>
-+<U7DE9> /x8a/xc9 <CJK>
-+<U7F36> /x8a/xca <CJK>
-+<U7FF0> /x8a/xcb <CJK>
-+<U809D> /x8a/xcc <CJK>
-+<U8266> /x8a/xcd <CJK>
-+<U839E> /x8a/xce <CJK>
-+<U89B3> /x8a/xcf <CJK>
-+<U8ACC> /x8a/xd0 <CJK>
-+<U8CAB> /x8a/xd1 <CJK>
-+<U9084> /x8a/xd2 <CJK>
-+<U9451> /x8a/xd3 <CJK>
-+<U9593> /x8a/xd4 <CJK>
-+<U9591> /x8a/xd5 <CJK>
-+<U95A2> /x8a/xd6 <CJK>
-+<U9665> /x8a/xd7 <CJK>
-+<U97D3> /x8a/xd8 <CJK>
-+<U9928> /x8a/xd9 <CJK>
-+<U8218> /x8a/xda <CJK>
-+<U4E38> /x8a/xdb <CJK>
-+<U542B> /x8a/xdc <CJK>
-+<U5CB8> /x8a/xdd <CJK>
-+<U5DCC> /x8a/xde <CJK>
-+<U73A9> /x8a/xdf <CJK>
-+<U764C> /x8a/xe0 <CJK>
-+<U773C> /x8a/xe1 <CJK>
-+<U5CA9> /x8a/xe2 <CJK>
-+<U7FEB> /x8a/xe3 <CJK>
-+<U8D0B> /x8a/xe4 <CJK>
-+<U96C1> /x8a/xe5 <CJK>
-+<U9811> /x8a/xe6 <CJK>
-+<U9854> /x8a/xe7 <CJK>
-+<U9858> /x8a/xe8 <CJK>
-+<U4F01> /x8a/xe9 <CJK>
-+<U4F0E> /x8a/xea <CJK>
-+<U5371> /x8a/xeb <CJK>
-+<U559C> /x8a/xec <CJK>
-+<U5668> /x8a/xed <CJK>
-+<U57FA> /x8a/xee <CJK>
-+<U5947> /x8a/xef <CJK>
-+<U5B09> /x8a/xf0 <CJK>
-+<U5BC4> /x8a/xf1 <CJK>
-+<U5C90> /x8a/xf2 <CJK>
-+<U5E0C> /x8a/xf3 <CJK>
-+<U5E7E> /x8a/xf4 <CJK>
-+<U5FCC> /x8a/xf5 <CJK>
-+<U63EE> /x8a/xf6 <CJK>
-+<U673A> /x8a/xf7 <CJK>
-+<U65D7> /x8a/xf8 <CJK>
-+<U65E2> /x8a/xf9 <CJK>
-+<U671F> /x8a/xfa <CJK>
-+<U68CB> /x8a/xfb <CJK>
-+<U68C4> /x8a/xfc <CJK>
-+<U6A5F> /x8b/x40 <CJK>
-+<U5E30> /x8b/x41 <CJK>
-+<U6BC5> /x8b/x42 <CJK>
-+<U6C17> /x8b/x43 <CJK>
-+<U6C7D> /x8b/x44 <CJK>
-+<U757F> /x8b/x45 <CJK>
-+<U7948> /x8b/x46 <CJK>
-+<U5B63> /x8b/x47 <CJK>
-+<U7A00> /x8b/x48 <CJK>
-+<U7D00> /x8b/x49 <CJK>
-+<U5FBD> /x8b/x4a <CJK>
-+<U898F> /x8b/x4b <CJK>
-+<U8A18> /x8b/x4c <CJK>
-+<U8CB4> /x8b/x4d <CJK>
-+<U8D77> /x8b/x4e <CJK>
-+<U8ECC> /x8b/x4f <CJK>
-+<U8F1D> /x8b/x50 <CJK>
-+<U98E2> /x8b/x51 <CJK>
-+<U9A0E> /x8b/x52 <CJK>
-+<U9B3C> /x8b/x53 <CJK>
-+<U4E80> /x8b/x54 <CJK>
-+<U507D> /x8b/x55 <CJK>
-+<U5100> /x8b/x56 <CJK>
-+<U5993> /x8b/x57 <CJK>
-+<U5B9C> /x8b/x58 <CJK>
-+<U622F> /x8b/x59 <CJK>
-+<U6280> /x8b/x5a <CJK>
-+<U64EC> /x8b/x5b <CJK>
-+<U6B3A> /x8b/x5c <CJK>
-+<U72A0> /x8b/x5d <CJK>
-+<U7591> /x8b/x5e <CJK>
-+<U7947> /x8b/x5f <CJK>
-+<U7FA9> /x8b/x60 <CJK>
-+<U87FB> /x8b/x61 <CJK>
-+<U8ABC> /x8b/x62 <CJK>
-+<U8B70> /x8b/x63 <CJK>
-+<U63AC> /x8b/x64 <CJK>
-+<U83CA> /x8b/x65 <CJK>
-+<U97A0> /x8b/x66 <CJK>
-+<U5409> /x8b/x67 <CJK>
-+<U5403> /x8b/x68 <CJK>
-+<U55AB> /x8b/x69 <CJK>
-+<U6854> /x8b/x6a <CJK>
-+<U6A58> /x8b/x6b <CJK>
-+<U8A70> /x8b/x6c <CJK>
-+<U7827> /x8b/x6d <CJK>
-+<U6775> /x8b/x6e <CJK>
-+<U9ECD> /x8b/x6f <CJK>
-+<U5374> /x8b/x70 <CJK>
-+<U5BA2> /x8b/x71 <CJK>
-+<U811A> /x8b/x72 <CJK>
-+<U8650> /x8b/x73 <CJK>
-+<U9006> /x8b/x74 <CJK>
-+<U4E18> /x8b/x75 <CJK>
-+<U4E45> /x8b/x76 <CJK>
-+<U4EC7> /x8b/x77 <CJK>
-+<U4F11> /x8b/x78 <CJK>
-+<U53CA> /x8b/x79 <CJK>
-+<U5438> /x8b/x7a <CJK>
-+<U5BAE> /x8b/x7b <CJK>
-+<U5F13> /x8b/x7c <CJK>
-+<U6025> /x8b/x7d <CJK>
-+<U6551> /x8b/x7e <CJK>
-+<U673D> /x8b/x80 <CJK>
-+<U6C42> /x8b/x81 <CJK>
-+<U6C72> /x8b/x82 <CJK>
-+<U6CE3> /x8b/x83 <CJK>
-+<U7078> /x8b/x84 <CJK>
-+<U7403> /x8b/x85 <CJK>
-+<U7A76> /x8b/x86 <CJK>
-+<U7AAE> /x8b/x87 <CJK>
-+<U7B08> /x8b/x88 <CJK>
-+<U7D1A> /x8b/x89 <CJK>
-+<U7CFE> /x8b/x8a <CJK>
-+<U7D66> /x8b/x8b <CJK>
-+<U65E7> /x8b/x8c <CJK>
-+<U725B> /x8b/x8d <CJK>
-+<U53BB> /x8b/x8e <CJK>
-+<U5C45> /x8b/x8f <CJK>
-+<U5DE8> /x8b/x90 <CJK>
-+<U62D2> /x8b/x91 <CJK>
-+<U62E0> /x8b/x92 <CJK>
-+<U6319> /x8b/x93 <CJK>
-+<U6E20> /x8b/x94 <CJK>
-+<U865A> /x8b/x95 <CJK>
-+<U8A31> /x8b/x96 <CJK>
-+<U8DDD> /x8b/x97 <CJK>
-+<U92F8> /x8b/x98 <CJK>
-+<U6F01> /x8b/x99 <CJK>
-+<U79A6> /x8b/x9a <CJK>
-+<U9B5A> /x8b/x9b <CJK>
-+<U4EA8> /x8b/x9c <CJK>
-+<U4EAB> /x8b/x9d <CJK>
-+<U4EAC> /x8b/x9e <CJK>
-+<U4F9B> /x8b/x9f <CJK>
-+<U4FA0> /x8b/xa0 <CJK>
-+<U50D1> /x8b/xa1 <CJK>
-+<U5147> /x8b/xa2 <CJK>
-+<U7AF6> /x8b/xa3 <CJK>
-+<U5171> /x8b/xa4 <CJK>
-+<U51F6> /x8b/xa5 <CJK>
-+<U5354> /x8b/xa6 <CJK>
-+<U5321> /x8b/xa7 <CJK>
-+<U537F> /x8b/xa8 <CJK>
-+<U53EB> /x8b/xa9 <CJK>
-+<U55AC> /x8b/xaa <CJK>
-+<U5883> /x8b/xab <CJK>
-+<U5CE1> /x8b/xac <CJK>
-+<U5F37> /x8b/xad <CJK>
-+<U5F4A> /x8b/xae <CJK>
-+<U602F> /x8b/xaf <CJK>
-+<U6050> /x8b/xb0 <CJK>
-+<U606D> /x8b/xb1 <CJK>
-+<U631F> /x8b/xb2 <CJK>
-+<U6559> /x8b/xb3 <CJK>
-+<U6A4B> /x8b/xb4 <CJK>
-+<U6CC1> /x8b/xb5 <CJK>
-+<U72C2> /x8b/xb6 <CJK>
-+<U72ED> /x8b/xb7 <CJK>
-+<U77EF> /x8b/xb8 <CJK>
-+<U80F8> /x8b/xb9 <CJK>
-+<U8105> /x8b/xba <CJK>
-+<U8208> /x8b/xbb <CJK>
-+<U854E> /x8b/xbc <CJK>
-+<U90F7> /x8b/xbd <CJK>
-+<U93E1> /x8b/xbe <CJK>
-+<U97FF> /x8b/xbf <CJK>
-+<U9957> /x8b/xc0 <CJK>
-+<U9A5A> /x8b/xc1 <CJK>
-+<U4EF0> /x8b/xc2 <CJK>
-+<U51DD> /x8b/xc3 <CJK>
-+<U5C2D> /x8b/xc4 <CJK>
-+<U6681> /x8b/xc5 <CJK>
-+<U696D> /x8b/xc6 <CJK>
-+<U5C40> /x8b/xc7 <CJK>
-+<U66F2> /x8b/xc8 <CJK>
-+<U6975> /x8b/xc9 <CJK>
-+<U7389> /x8b/xca <CJK>
-+<U6850> /x8b/xcb <CJK>
-+<U7C81> /x8b/xcc <CJK>
-+<U50C5> /x8b/xcd <CJK>
-+<U52E4> /x8b/xce <CJK>
-+<U5747> /x8b/xcf <CJK>
-+<U5DFE> /x8b/xd0 <CJK>
-+<U9326> /x8b/xd1 <CJK>
-+<U65A4> /x8b/xd2 <CJK>
-+<U6B23> /x8b/xd3 <CJK>
-+<U6B3D> /x8b/xd4 <CJK>
-+<U7434> /x8b/xd5 <CJK>
-+<U7981> /x8b/xd6 <CJK>
-+<U79BD> /x8b/xd7 <CJK>
-+<U7B4B> /x8b/xd8 <CJK>
-+<U7DCA> /x8b/xd9 <CJK>
-+<U82B9> /x8b/xda <CJK>
-+<U83CC> /x8b/xdb <CJK>
-+<U887F> /x8b/xdc <CJK>
-+<U895F> /x8b/xdd <CJK>
-+<U8B39> /x8b/xde <CJK>
-+<U8FD1> /x8b/xdf <CJK>
-+<U91D1> /x8b/xe0 <CJK>
-+<U541F> /x8b/xe1 <CJK>
-+<U9280> /x8b/xe2 <CJK>
-+<U4E5D> /x8b/xe3 <CJK>
-+<U5036> /x8b/xe4 <CJK>
-+<U53E5> /x8b/xe5 <CJK>
-+<U533A> /x8b/xe6 <CJK>
-+<U72D7> /x8b/xe7 <CJK>
-+<U7396> /x8b/xe8 <CJK>
-+<U77E9> /x8b/xe9 <CJK>
-+<U82E6> /x8b/xea <CJK>
-+<U8EAF> /x8b/xeb <CJK>
-+<U99C6> /x8b/xec <CJK>
-+<U99C8> /x8b/xed <CJK>
-+<U99D2> /x8b/xee <CJK>
-+<U5177> /x8b/xef <CJK>
-+<U611A> /x8b/xf0 <CJK>
-+<U865E> /x8b/xf1 <CJK>
-+<U55B0> /x8b/xf2 <CJK>
-+<U7A7A> /x8b/xf3 <CJK>
-+<U5076> /x8b/xf4 <CJK>
-+<U5BD3> /x8b/xf5 <CJK>
-+<U9047> /x8b/xf6 <CJK>
-+<U9685> /x8b/xf7 <CJK>
-+<U4E32> /x8b/xf8 <CJK>
-+<U6ADB> /x8b/xf9 <CJK>
-+<U91E7> /x8b/xfa <CJK>
-+<U5C51> /x8b/xfb <CJK>
-+<U5C48> /x8b/xfc <CJK>
-+<U6398> /x8c/x40 <CJK>
-+<U7A9F> /x8c/x41 <CJK>
-+<U6C93> /x8c/x42 <CJK>
-+<U9774> /x8c/x43 <CJK>
-+<U8F61> /x8c/x44 <CJK>
-+<U7AAA> /x8c/x45 <CJK>
-+<U718A> /x8c/x46 <CJK>
-+<U9688> /x8c/x47 <CJK>
-+<U7C82> /x8c/x48 <CJK>
-+<U6817> /x8c/x49 <CJK>
-+<U7E70> /x8c/x4a <CJK>
-+<U6851> /x8c/x4b <CJK>
-+<U936C> /x8c/x4c <CJK>
-+<U52F2> /x8c/x4d <CJK>
-+<U541B> /x8c/x4e <CJK>
-+<U85AB> /x8c/x4f <CJK>
-+<U8A13> /x8c/x50 <CJK>
-+<U7FA4> /x8c/x51 <CJK>
-+<U8ECD> /x8c/x52 <CJK>
-+<U90E1> /x8c/x53 <CJK>
-+<U5366> /x8c/x54 <CJK>
-+<U8888> /x8c/x55 <CJK>
-+<U7941> /x8c/x56 <CJK>
-+<U4FC2> /x8c/x57 <CJK>
-+<U50BE> /x8c/x58 <CJK>
-+<U5211> /x8c/x59 <CJK>
-+<U5144> /x8c/x5a <CJK>
-+<U5553> /x8c/x5b <CJK>
-+<U572D> /x8c/x5c <CJK>
-+<U73EA> /x8c/x5d <CJK>
-+<U578B> /x8c/x5e <CJK>
-+<U5951> /x8c/x5f <CJK>
-+<U5F62> /x8c/x60 <CJK>
-+<U5F84> /x8c/x61 <CJK>
-+<U6075> /x8c/x62 <CJK>
-+<U6176> /x8c/x63 <CJK>
-+<U6167> /x8c/x64 <CJK>
-+<U61A9> /x8c/x65 <CJK>
-+<U63B2> /x8c/x66 <CJK>
-+<U643A> /x8c/x67 <CJK>
-+<U656C> /x8c/x68 <CJK>
-+<U666F> /x8c/x69 <CJK>
-+<U6842> /x8c/x6a <CJK>
-+<U6E13> /x8c/x6b <CJK>
-+<U7566> /x8c/x6c <CJK>
-+<U7A3D> /x8c/x6d <CJK>
-+<U7CFB> /x8c/x6e <CJK>
-+<U7D4C> /x8c/x6f <CJK>
-+<U7D99> /x8c/x70 <CJK>
-+<U7E4B> /x8c/x71 <CJK>
-+<U7F6B> /x8c/x72 <CJK>
-+<U830E> /x8c/x73 <CJK>
-+<U834A> /x8c/x74 <CJK>
-+<U86CD> /x8c/x75 <CJK>
-+<U8A08> /x8c/x76 <CJK>
-+<U8A63> /x8c/x77 <CJK>
-+<U8B66> /x8c/x78 <CJK>
-+<U8EFD> /x8c/x79 <CJK>
-+<U981A> /x8c/x7a <CJK>
-+<U9D8F> /x8c/x7b <CJK>
-+<U82B8> /x8c/x7c <CJK>
-+<U8FCE> /x8c/x7d <CJK>
-+<U9BE8> /x8c/x7e <CJK>
-+<U5287> /x8c/x80 <CJK>
-+<U621F> /x8c/x81 <CJK>
-+<U6483> /x8c/x82 <CJK>
-+<U6FC0> /x8c/x83 <CJK>
-+<U9699> /x8c/x84 <CJK>
-+<U6841> /x8c/x85 <CJK>
-+<U5091> /x8c/x86 <CJK>
-+<U6B20> /x8c/x87 <CJK>
-+<U6C7A> /x8c/x88 <CJK>
-+<U6F54> /x8c/x89 <CJK>
-+<U7A74> /x8c/x8a <CJK>
-+<U7D50> /x8c/x8b <CJK>
-+<U8840> /x8c/x8c <CJK>
-+<U8A23> /x8c/x8d <CJK>
-+<U6708> /x8c/x8e <CJK>
-+<U4EF6> /x8c/x8f <CJK>
-+<U5039> /x8c/x90 <CJK>
-+<U5026> /x8c/x91 <CJK>
-+<U5065> /x8c/x92 <CJK>
-+<U517C> /x8c/x93 <CJK>
-+<U5238> /x8c/x94 <CJK>
-+<U5263> /x8c/x95 <CJK>
-+<U55A7> /x8c/x96 <CJK>
-+<U570F> /x8c/x97 <CJK>
-+<U5805> /x8c/x98 <CJK>
-+<U5ACC> /x8c/x99 <CJK>
-+<U5EFA> /x8c/x9a <CJK>
-+<U61B2> /x8c/x9b <CJK>
-+<U61F8> /x8c/x9c <CJK>
-+<U62F3> /x8c/x9d <CJK>
-+<U6372> /x8c/x9e <CJK>
-+<U691C> /x8c/x9f <CJK>
-+<U6A29> /x8c/xa0 <CJK>
-+<U727D> /x8c/xa1 <CJK>
-+<U72AC> /x8c/xa2 <CJK>
-+<U732E> /x8c/xa3 <CJK>
-+<U7814> /x8c/xa4 <CJK>
-+<U786F> /x8c/xa5 <CJK>
-+<U7D79> /x8c/xa6 <CJK>
-+<U770C> /x8c/xa7 <CJK>
-+<U80A9> /x8c/xa8 <CJK>
-+<U898B> /x8c/xa9 <CJK>
-+<U8B19> /x8c/xaa <CJK>
-+<U8CE2> /x8c/xab <CJK>
-+<U8ED2> /x8c/xac <CJK>
-+<U9063> /x8c/xad <CJK>
-+<U9375> /x8c/xae <CJK>
-+<U967A> /x8c/xaf <CJK>
-+<U9855> /x8c/xb0 <CJK>
-+<U9A13> /x8c/xb1 <CJK>
-+<U9E78> /x8c/xb2 <CJK>
-+<U5143> /x8c/xb3 <CJK>
-+<U539F> /x8c/xb4 <CJK>
-+<U53B3> /x8c/xb5 <CJK>
-+<U5E7B> /x8c/xb6 <CJK>
-+<U5F26> /x8c/xb7 <CJK>
-+<U6E1B> /x8c/xb8 <CJK>
-+<U6E90> /x8c/xb9 <CJK>
-+<U7384> /x8c/xba <CJK>
-+<U73FE> /x8c/xbb <CJK>
-+<U7D43> /x8c/xbc <CJK>
-+<U8237> /x8c/xbd <CJK>
-+<U8A00> /x8c/xbe <CJK>
-+<U8AFA> /x8c/xbf <CJK>
-+<U9650> /x8c/xc0 <CJK>
-+<U4E4E> /x8c/xc1 <CJK>
-+<U500B> /x8c/xc2 <CJK>
-+<U53E4> /x8c/xc3 <CJK>
-+<U547C> /x8c/xc4 <CJK>
-+<U56FA> /x8c/xc5 <CJK>
-+<U59D1> /x8c/xc6 <CJK>
-+<U5B64> /x8c/xc7 <CJK>
-+<U5DF1> /x8c/xc8 <CJK>
-+<U5EAB> /x8c/xc9 <CJK>
-+<U5F27> /x8c/xca <CJK>
-+<U6238> /x8c/xcb <CJK>
-+<U6545> /x8c/xcc <CJK>
-+<U67AF> /x8c/xcd <CJK>
-+<U6E56> /x8c/xce <CJK>
-+<U72D0> /x8c/xcf <CJK>
-+<U7CCA> /x8c/xd0 <CJK>
-+<U88B4> /x8c/xd1 <CJK>
-+<U80A1> /x8c/xd2 <CJK>
-+<U80E1> /x8c/xd3 <CJK>
-+<U83F0> /x8c/xd4 <CJK>
-+<U864E> /x8c/xd5 <CJK>
-+<U8A87> /x8c/xd6 <CJK>
-+<U8DE8> /x8c/xd7 <CJK>
-+<U9237> /x8c/xd8 <CJK>
-+<U96C7> /x8c/xd9 <CJK>
-+<U9867> /x8c/xda <CJK>
-+<U9F13> /x8c/xdb <CJK>
-+<U4E94> /x8c/xdc <CJK>
-+<U4E92> /x8c/xdd <CJK>
-+<U4F0D> /x8c/xde <CJK>
-+<U5348> /x8c/xdf <CJK>
-+<U5449> /x8c/xe0 <CJK>
-+<U543E> /x8c/xe1 <CJK>
-+<U5A2F> /x8c/xe2 <CJK>
-+<U5F8C> /x8c/xe3 <CJK>
-+<U5FA1> /x8c/xe4 <CJK>
-+<U609F> /x8c/xe5 <CJK>
-+<U68A7> /x8c/xe6 <CJK>
-+<U6A8E> /x8c/xe7 <CJK>
-+<U745A> /x8c/xe8 <CJK>
-+<U7881> /x8c/xe9 <CJK>
-+<U8A9E> /x8c/xea <CJK>
-+<U8AA4> /x8c/xeb <CJK>
-+<U8B77> /x8c/xec <CJK>
-+<U9190> /x8c/xed <CJK>
-+<U4E5E> /x8c/xee <CJK>
-+<U9BC9> /x8c/xef <CJK>
-+<U4EA4> /x8c/xf0 <CJK>
-+<U4F7C> /x8c/xf1 <CJK>
-+<U4FAF> /x8c/xf2 <CJK>
-+<U5019> /x8c/xf3 <CJK>
-+<U5016> /x8c/xf4 <CJK>
-+<U5149> /x8c/xf5 <CJK>
-+<U516C> /x8c/xf6 <CJK>
-+<U529F> /x8c/xf7 <CJK>
-+<U52B9> /x8c/xf8 <CJK>
-+<U52FE> /x8c/xf9 <CJK>
-+<U539A> /x8c/xfa <CJK>
-+<U53E3> /x8c/xfb <CJK>
-+<U5411> /x8c/xfc <CJK>
-+<U540E> /x8d/x40 <CJK>
-+<U5589> /x8d/x41 <CJK>
-+<U5751> /x8d/x42 <CJK>
-+<U57A2> /x8d/x43 <CJK>
-+<U597D> /x8d/x44 <CJK>
-+<U5B54> /x8d/x45 <CJK>
-+<U5B5D> /x8d/x46 <CJK>
-+<U5B8F> /x8d/x47 <CJK>
-+<U5DE5> /x8d/x48 <CJK>
-+<U5DE7> /x8d/x49 <CJK>
-+<U5DF7> /x8d/x4a <CJK>
-+<U5E78> /x8d/x4b <CJK>
-+<U5E83> /x8d/x4c <CJK>
-+<U5E9A> /x8d/x4d <CJK>
-+<U5EB7> /x8d/x4e <CJK>
-+<U5F18> /x8d/x4f <CJK>
-+<U6052> /x8d/x50 <CJK>
-+<U614C> /x8d/x51 <CJK>
-+<U6297> /x8d/x52 <CJK>
-+<U62D8> /x8d/x53 <CJK>
-+<U63A7> /x8d/x54 <CJK>
-+<U653B> /x8d/x55 <CJK>
-+<U6602> /x8d/x56 <CJK>
-+<U6643> /x8d/x57 <CJK>
-+<U66F4> /x8d/x58 <CJK>
-+<U676D> /x8d/x59 <CJK>
-+<U6821> /x8d/x5a <CJK>
-+<U6897> /x8d/x5b <CJK>
-+<U69CB> /x8d/x5c <CJK>
-+<U6C5F> /x8d/x5d <CJK>
-+<U6D2A> /x8d/x5e <CJK>
-+<U6D69> /x8d/x5f <CJK>
-+<U6E2F> /x8d/x60 <CJK>
-+<U6E9D> /x8d/x61 <CJK>
-+<U7532> /x8d/x62 <CJK>
-+<U7687> /x8d/x63 <CJK>
-+<U786C> /x8d/x64 <CJK>
-+<U7A3F> /x8d/x65 <CJK>
-+<U7CE0> /x8d/x66 <CJK>
-+<U7D05> /x8d/x67 <CJK>
-+<U7D18> /x8d/x68 <CJK>
-+<U7D5E> /x8d/x69 <CJK>
-+<U7DB1> /x8d/x6a <CJK>
-+<U8015> /x8d/x6b <CJK>
-+<U8003> /x8d/x6c <CJK>
-+<U80AF> /x8d/x6d <CJK>
-+<U80B1> /x8d/x6e <CJK>
-+<U8154> /x8d/x6f <CJK>
-+<U818F> /x8d/x70 <CJK>
-+<U822A> /x8d/x71 <CJK>
-+<U8352> /x8d/x72 <CJK>
-+<U884C> /x8d/x73 <CJK>
-+<U8861> /x8d/x74 <CJK>
-+<U8B1B> /x8d/x75 <CJK>
-+<U8CA2> /x8d/x76 <CJK>
-+<U8CFC> /x8d/x77 <CJK>
-+<U90CA> /x8d/x78 <CJK>
-+<U9175> /x8d/x79 <CJK>
-+<U9271> /x8d/x7a <CJK>
-+<U783F> /x8d/x7b <CJK>
-+<U92FC> /x8d/x7c <CJK>
-+<U95A4> /x8d/x7d <CJK>
-+<U964D> /x8d/x7e <CJK>
-+<U9805> /x8d/x80 <CJK>
-+<U9999> /x8d/x81 <CJK>
-+<U9AD8> /x8d/x82 <CJK>
-+<U9D3B> /x8d/x83 <CJK>
-+<U525B> /x8d/x84 <CJK>
-+<U52AB> /x8d/x85 <CJK>
-+<U53F7> /x8d/x86 <CJK>
-+<U5408> /x8d/x87 <CJK>
-+<U58D5> /x8d/x88 <CJK>
-+<U62F7> /x8d/x89 <CJK>
-+<U6FE0> /x8d/x8a <CJK>
-+<U8C6A> /x8d/x8b <CJK>
-+<U8F5F> /x8d/x8c <CJK>
-+<U9EB9> /x8d/x8d <CJK>
-+<U514B> /x8d/x8e <CJK>
-+<U523B> /x8d/x8f <CJK>
-+<U544A> /x8d/x90 <CJK>
-+<U56FD> /x8d/x91 <CJK>
-+<U7A40> /x8d/x92 <CJK>
-+<U9177> /x8d/x93 <CJK>
-+<U9D60> /x8d/x94 <CJK>
-+<U9ED2> /x8d/x95 <CJK>
-+<U7344> /x8d/x96 <CJK>
-+<U6F09> /x8d/x97 <CJK>
-+<U8170> /x8d/x98 <CJK>
-+<U7511> /x8d/x99 <CJK>
-+<U5FFD> /x8d/x9a <CJK>
-+<U60DA> /x8d/x9b <CJK>
-+<U9AA8> /x8d/x9c <CJK>
-+<U72DB> /x8d/x9d <CJK>
-+<U8FBC> /x8d/x9e <CJK>
-+<U6B64> /x8d/x9f <CJK>
-+<U9803> /x8d/xa0 <CJK>
-+<U4ECA> /x8d/xa1 <CJK>
-+<U56F0> /x8d/xa2 <CJK>
-+<U5764> /x8d/xa3 <CJK>
-+<U58BE> /x8d/xa4 <CJK>
-+<U5A5A> /x8d/xa5 <CJK>
-+<U6068> /x8d/xa6 <CJK>
-+<U61C7> /x8d/xa7 <CJK>
-+<U660F> /x8d/xa8 <CJK>
-+<U6606> /x8d/xa9 <CJK>
-+<U6839> /x8d/xaa <CJK>
-+<U68B1> /x8d/xab <CJK>
-+<U6DF7> /x8d/xac <CJK>
-+<U75D5> /x8d/xad <CJK>
-+<U7D3A> /x8d/xae <CJK>
-+<U826E> /x8d/xaf <CJK>
-+<U9B42> /x8d/xb0 <CJK>
-+<U4E9B> /x8d/xb1 <CJK>
-+<U4F50> /x8d/xb2 <CJK>
-+<U53C9> /x8d/xb3 <CJK>
-+<U5506> /x8d/xb4 <CJK>
-+<U5D6F> /x8d/xb5 <CJK>
-+<U5DE6> /x8d/xb6 <CJK>
-+<U5DEE> /x8d/xb7 <CJK>
-+<U67FB> /x8d/xb8 <CJK>
-+<U6C99> /x8d/xb9 <CJK>
-+<U7473> /x8d/xba <CJK>
-+<U7802> /x8d/xbb <CJK>
-+<U8A50> /x8d/xbc <CJK>
-+<U9396> /x8d/xbd <CJK>
-+<U88DF> /x8d/xbe <CJK>
-+<U5750> /x8d/xbf <CJK>
-+<U5EA7> /x8d/xc0 <CJK>
-+<U632B> /x8d/xc1 <CJK>
-+<U50B5> /x8d/xc2 <CJK>
-+<U50AC> /x8d/xc3 <CJK>
-+<U518D> /x8d/xc4 <CJK>
-+<U6700> /x8d/xc5 <CJK>
-+<U54C9> /x8d/xc6 <CJK>
-+<U585E> /x8d/xc7 <CJK>
-+<U59BB> /x8d/xc8 <CJK>
-+<U5BB0> /x8d/xc9 <CJK>
-+<U5F69> /x8d/xca <CJK>
-+<U624D> /x8d/xcb <CJK>
-+<U63A1> /x8d/xcc <CJK>
-+<U683D> /x8d/xcd <CJK>
-+<U6B73> /x8d/xce <CJK>
-+<U6E08> /x8d/xcf <CJK>
-+<U707D> /x8d/xd0 <CJK>
-+<U91C7> /x8d/xd1 <CJK>
-+<U7280> /x8d/xd2 <CJK>
-+<U7815> /x8d/xd3 <CJK>
-+<U7826> /x8d/xd4 <CJK>
-+<U796D> /x8d/xd5 <CJK>
-+<U658E> /x8d/xd6 <CJK>
-+<U7D30> /x8d/xd7 <CJK>
-+<U83DC> /x8d/xd8 <CJK>
-+<U88C1> /x8d/xd9 <CJK>
-+<U8F09> /x8d/xda <CJK>
-+<U969B> /x8d/xdb <CJK>
-+<U5264> /x8d/xdc <CJK>
-+<U5728> /x8d/xdd <CJK>
-+<U6750> /x8d/xde <CJK>
-+<U7F6A> /x8d/xdf <CJK>
-+<U8CA1> /x8d/xe0 <CJK>
-+<U51B4> /x8d/xe1 <CJK>
-+<U5742> /x8d/xe2 <CJK>
-+<U962A> /x8d/xe3 <CJK>
-+<U583A> /x8d/xe4 <CJK>
-+<U698A> /x8d/xe5 <CJK>
-+<U80B4> /x8d/xe6 <CJK>
-+<U54B2> /x8d/xe7 <CJK>
-+<U5D0E> /x8d/xe8 <CJK>
-+<U57FC> /x8d/xe9 <CJK>
-+<U7895> /x8d/xea <CJK>
-+<U9DFA> /x8d/xeb <CJK>
-+<U4F5C> /x8d/xec <CJK>
-+<U524A> /x8d/xed <CJK>
-+<U548B> /x8d/xee <CJK>
-+<U643E> /x8d/xef <CJK>
-+<U6628> /x8d/xf0 <CJK>
-+<U6714> /x8d/xf1 <CJK>
-+<U67F5> /x8d/xf2 <CJK>
-+<U7A84> /x8d/xf3 <CJK>
-+<U7B56> /x8d/xf4 <CJK>
-+<U7D22> /x8d/xf5 <CJK>
-+<U932F> /x8d/xf6 <CJK>
-+<U685C> /x8d/xf7 <CJK>
-+<U9BAD> /x8d/xf8 <CJK>
-+<U7B39> /x8d/xf9 <CJK>
-+<U5319> /x8d/xfa <CJK>
-+<U518A> /x8d/xfb <CJK>
-+<U5237> /x8d/xfc <CJK>
-+<U5BDF> /x8e/x40 <CJK>
-+<U62F6> /x8e/x41 <CJK>
-+<U64AE> /x8e/x42 <CJK>
-+<U64E6> /x8e/x43 <CJK>
-+<U672D> /x8e/x44 <CJK>
-+<U6BBA> /x8e/x45 <CJK>
-+<U85A9> /x8e/x46 <CJK>
-+<U96D1> /x8e/x47 <CJK>
-+<U7690> /x8e/x48 <CJK>
-+<U9BD6> /x8e/x49 <CJK>
-+<U634C> /x8e/x4a <CJK>
-+<U9306> /x8e/x4b <CJK>
-+<U9BAB> /x8e/x4c <CJK>
-+<U76BF> /x8e/x4d <CJK>
-+<U6652> /x8e/x4e <CJK>
-+<U4E09> /x8e/x4f <CJK>
-+<U5098> /x8e/x50 <CJK>
-+<U53C2> /x8e/x51 <CJK>
-+<U5C71> /x8e/x52 <CJK>
-+<U60E8> /x8e/x53 <CJK>
-+<U6492> /x8e/x54 <CJK>
-+<U6563> /x8e/x55 <CJK>
-+<U685F> /x8e/x56 <CJK>
-+<U71E6> /x8e/x57 <CJK>
-+<U73CA> /x8e/x58 <CJK>
-+<U7523> /x8e/x59 <CJK>
-+<U7B97> /x8e/x5a <CJK>
-+<U7E82> /x8e/x5b <CJK>
-+<U8695> /x8e/x5c <CJK>
-+<U8B83> /x8e/x5d <CJK>
-+<U8CDB> /x8e/x5e <CJK>
-+<U9178> /x8e/x5f <CJK>
-+<U9910> /x8e/x60 <CJK>
-+<U65AC> /x8e/x61 <CJK>
-+<U66AB> /x8e/x62 <CJK>
-+<U6B8B> /x8e/x63 <CJK>
-+<U4ED5> /x8e/x64 <CJK>
-+<U4ED4> /x8e/x65 <CJK>
-+<U4F3A> /x8e/x66 <CJK>
-+<U4F7F> /x8e/x67 <CJK>
-+<U523A> /x8e/x68 <CJK>
-+<U53F8> /x8e/x69 <CJK>
-+<U53F2> /x8e/x6a <CJK>
-+<U55E3> /x8e/x6b <CJK>
-+<U56DB> /x8e/x6c <CJK>
-+<U58EB> /x8e/x6d <CJK>
-+<U59CB> /x8e/x6e <CJK>
-+<U59C9> /x8e/x6f <CJK>
-+<U59FF> /x8e/x70 <CJK>
-+<U5B50> /x8e/x71 <CJK>
-+<U5C4D> /x8e/x72 <CJK>
-+<U5E02> /x8e/x73 <CJK>
-+<U5E2B> /x8e/x74 <CJK>
-+<U5FD7> /x8e/x75 <CJK>
-+<U601D> /x8e/x76 <CJK>
-+<U6307> /x8e/x77 <CJK>
-+<U652F> /x8e/x78 <CJK>
-+<U5B5C> /x8e/x79 <CJK>
-+<U65AF> /x8e/x7a <CJK>
-+<U65BD> /x8e/x7b <CJK>
-+<U65E8> /x8e/x7c <CJK>
-+<U679D> /x8e/x7d <CJK>
-+<U6B62> /x8e/x7e <CJK>
-+<U6B7B> /x8e/x80 <CJK>
-+<U6C0F> /x8e/x81 <CJK>
-+<U7345> /x8e/x82 <CJK>
-+<U7949> /x8e/x83 <CJK>
-+<U79C1> /x8e/x84 <CJK>
-+<U7CF8> /x8e/x85 <CJK>
-+<U7D19> /x8e/x86 <CJK>
-+<U7D2B> /x8e/x87 <CJK>
-+<U80A2> /x8e/x88 <CJK>
-+<U8102> /x8e/x89 <CJK>
-+<U81F3> /x8e/x8a <CJK>
-+<U8996> /x8e/x8b <CJK>
-+<U8A5E> /x8e/x8c <CJK>
-+<U8A69> /x8e/x8d <CJK>
-+<U8A66> /x8e/x8e <CJK>
-+<U8A8C> /x8e/x8f <CJK>
-+<U8AEE> /x8e/x90 <CJK>
-+<U8CC7> /x8e/x91 <CJK>
-+<U8CDC> /x8e/x92 <CJK>
-+<U96CC> /x8e/x93 <CJK>
-+<U98FC> /x8e/x94 <CJK>
-+<U6B6F> /x8e/x95 <CJK>
-+<U4E8B> /x8e/x96 <CJK>
-+<U4F3C> /x8e/x97 <CJK>
-+<U4F8D> /x8e/x98 <CJK>
-+<U5150> /x8e/x99 <CJK>
-+<U5B57> /x8e/x9a <CJK>
-+<U5BFA> /x8e/x9b <CJK>
-+<U6148> /x8e/x9c <CJK>
-+<U6301> /x8e/x9d <CJK>
-+<U6642> /x8e/x9e <CJK>
-+<U6B21> /x8e/x9f <CJK>
-+<U6ECB> /x8e/xa0 <CJK>
-+<U6CBB> /x8e/xa1 <CJK>
-+<U723E> /x8e/xa2 <CJK>
-+<U74BD> /x8e/xa3 <CJK>
-+<U75D4> /x8e/xa4 <CJK>
-+<U78C1> /x8e/xa5 <CJK>
-+<U793A> /x8e/xa6 <CJK>
-+<U800C> /x8e/xa7 <CJK>
-+<U8033> /x8e/xa8 <CJK>
-+<U81EA> /x8e/xa9 <CJK>
-+<U8494> /x8e/xaa <CJK>
-+<U8F9E> /x8e/xab <CJK>
-+<U6C50> /x8e/xac <CJK>
-+<U9E7F> /x8e/xad <CJK>
-+<U5F0F> /x8e/xae <CJK>
-+<U8B58> /x8e/xaf <CJK>
-+<U9D2B> /x8e/xb0 <CJK>
-+<U7AFA> /x8e/xb1 <CJK>
-+<U8EF8> /x8e/xb2 <CJK>
-+<U5B8D> /x8e/xb3 <CJK>
-+<U96EB> /x8e/xb4 <CJK>
-+<U4E03> /x8e/xb5 <CJK>
-+<U53F1> /x8e/xb6 <CJK>
-+<U57F7> /x8e/xb7 <CJK>
-+<U5931> /x8e/xb8 <CJK>
-+<U5AC9> /x8e/xb9 <CJK>
-+<U5BA4> /x8e/xba <CJK>
-+<U6089> /x8e/xbb <CJK>
-+<U6E7F> /x8e/xbc <CJK>
-+<U6F06> /x8e/xbd <CJK>
-+<U75BE> /x8e/xbe <CJK>
-+<U8CEA> /x8e/xbf <CJK>
-+<U5B9F> /x8e/xc0 <CJK>
-+<U8500> /x8e/xc1 <CJK>
-+<U7BE0> /x8e/xc2 <CJK>
-+<U5072> /x8e/xc3 <CJK>
-+<U67F4> /x8e/xc4 <CJK>
-+<U829D> /x8e/xc5 <CJK>
-+<U5C61> /x8e/xc6 <CJK>
-+<U854A> /x8e/xc7 <CJK>
-+<U7E1E> /x8e/xc8 <CJK>
-+<U820E> /x8e/xc9 <CJK>
-+<U5199> /x8e/xca <CJK>
-+<U5C04> /x8e/xcb <CJK>
-+<U6368> /x8e/xcc <CJK>
-+<U8D66> /x8e/xcd <CJK>
-+<U659C> /x8e/xce <CJK>
-+<U716E> /x8e/xcf <CJK>
-+<U793E> /x8e/xd0 <CJK>
-+<U7D17> /x8e/xd1 <CJK>
-+<U8005> /x8e/xd2 <CJK>
-+<U8B1D> /x8e/xd3 <CJK>
-+<U8ECA> /x8e/xd4 <CJK>
-+<U906E> /x8e/xd5 <CJK>
-+<U86C7> /x8e/xd6 <CJK>
-+<U90AA> /x8e/xd7 <CJK>
-+<U501F> /x8e/xd8 <CJK>
-+<U52FA> /x8e/xd9 <CJK>
-+<U5C3A> /x8e/xda <CJK>
-+<U6753> /x8e/xdb <CJK>
-+<U707C> /x8e/xdc <CJK>
-+<U7235> /x8e/xdd <CJK>
-+<U914C> /x8e/xde <CJK>
-+<U91C8> /x8e/xdf <CJK>
-+<U932B> /x8e/xe0 <CJK>
-+<U82E5> /x8e/xe1 <CJK>
-+<U5BC2> /x8e/xe2 <CJK>
-+<U5F31> /x8e/xe3 <CJK>
-+<U60F9> /x8e/xe4 <CJK>
-+<U4E3B> /x8e/xe5 <CJK>
-+<U53D6> /x8e/xe6 <CJK>
-+<U5B88> /x8e/xe7 <CJK>
-+<U624B> /x8e/xe8 <CJK>
-+<U6731> /x8e/xe9 <CJK>
-+<U6B8A> /x8e/xea <CJK>
-+<U72E9> /x8e/xeb <CJK>
-+<U73E0> /x8e/xec <CJK>
-+<U7A2E> /x8e/xed <CJK>
-+<U816B> /x8e/xee <CJK>
-+<U8DA3> /x8e/xef <CJK>
-+<U9152> /x8e/xf0 <CJK>
-+<U9996> /x8e/xf1 <CJK>
-+<U5112> /x8e/xf2 <CJK>
-+<U53D7> /x8e/xf3 <CJK>
-+<U546A> /x8e/xf4 <CJK>
-+<U5BFF> /x8e/xf5 <CJK>
-+<U6388> /x8e/xf6 <CJK>
-+<U6A39> /x8e/xf7 <CJK>
-+<U7DAC> /x8e/xf8 <CJK>
-+<U9700> /x8e/xf9 <CJK>
-+<U56DA> /x8e/xfa <CJK>
-+<U53CE> /x8e/xfb <CJK>
-+<U5468> /x8e/xfc <CJK>
-+<U5B97> /x8f/x40 <CJK>
-+<U5C31> /x8f/x41 <CJK>
-+<U5DDE> /x8f/x42 <CJK>
-+<U4FEE> /x8f/x43 <CJK>
-+<U6101> /x8f/x44 <CJK>
-+<U62FE> /x8f/x45 <CJK>
-+<U6D32> /x8f/x46 <CJK>
-+<U79C0> /x8f/x47 <CJK>
-+<U79CB> /x8f/x48 <CJK>
-+<U7D42> /x8f/x49 <CJK>
-+<U7E4D> /x8f/x4a <CJK>
-+<U7FD2> /x8f/x4b <CJK>
-+<U81ED> /x8f/x4c <CJK>
-+<U821F> /x8f/x4d <CJK>
-+<U8490> /x8f/x4e <CJK>
-+<U8846> /x8f/x4f <CJK>
-+<U8972> /x8f/x50 <CJK>
-+<U8B90> /x8f/x51 <CJK>
-+<U8E74> /x8f/x52 <CJK>
-+<U8F2F> /x8f/x53 <CJK>
-+<U9031> /x8f/x54 <CJK>
-+<U914B> /x8f/x55 <CJK>
-+<U916C> /x8f/x56 <CJK>
-+<U96C6> /x8f/x57 <CJK>
-+<U919C> /x8f/x58 <CJK>
-+<U4EC0> /x8f/x59 <CJK>
-+<U4F4F> /x8f/x5a <CJK>
-+<U5145> /x8f/x5b <CJK>
-+<U5341> /x8f/x5c <CJK>
-+<U5F93> /x8f/x5d <CJK>
-+<U620E> /x8f/x5e <CJK>
-+<U67D4> /x8f/x5f <CJK>
-+<U6C41> /x8f/x60 <CJK>
-+<U6E0B> /x8f/x61 <CJK>
-+<U7363> /x8f/x62 <CJK>
-+<U7E26> /x8f/x63 <CJK>
-+<U91CD> /x8f/x64 <CJK>
-+<U9283> /x8f/x65 <CJK>
-+<U53D4> /x8f/x66 <CJK>
-+<U5919> /x8f/x67 <CJK>
-+<U5BBF> /x8f/x68 <CJK>
-+<U6DD1> /x8f/x69 <CJK>
-+<U795D> /x8f/x6a <CJK>
-+<U7E2E> /x8f/x6b <CJK>
-+<U7C9B> /x8f/x6c <CJK>
-+<U587E> /x8f/x6d <CJK>
-+<U719F> /x8f/x6e <CJK>
-+<U51FA> /x8f/x6f <CJK>
-+<U8853> /x8f/x70 <CJK>
-+<U8FF0> /x8f/x71 <CJK>
-+<U4FCA> /x8f/x72 <CJK>
-+<U5CFB> /x8f/x73 <CJK>
-+<U6625> /x8f/x74 <CJK>
-+<U77AC> /x8f/x75 <CJK>
-+<U7AE3> /x8f/x76 <CJK>
-+<U821C> /x8f/x77 <CJK>
-+<U99FF> /x8f/x78 <CJK>
-+<U51C6> /x8f/x79 <CJK>
-+<U5FAA> /x8f/x7a <CJK>
-+<U65EC> /x8f/x7b <CJK>
-+<U696F> /x8f/x7c <CJK>
-+<U6B89> /x8f/x7d <CJK>
-+<U6DF3> /x8f/x7e <CJK>
-+<U6E96> /x8f/x80 <CJK>
-+<U6F64> /x8f/x81 <CJK>
-+<U76FE> /x8f/x82 <CJK>
-+<U7D14> /x8f/x83 <CJK>
-+<U5DE1> /x8f/x84 <CJK>
-+<U9075> /x8f/x85 <CJK>
-+<U9187> /x8f/x86 <CJK>
-+<U9806> /x8f/x87 <CJK>
-+<U51E6> /x8f/x88 <CJK>
-+<U521D> /x8f/x89 <CJK>
-+<U6240> /x8f/x8a <CJK>
-+<U6691> /x8f/x8b <CJK>
-+<U66D9> /x8f/x8c <CJK>
-+<U6E1A> /x8f/x8d <CJK>
-+<U5EB6> /x8f/x8e <CJK>
-+<U7DD2> /x8f/x8f <CJK>
-+<U7F72> /x8f/x90 <CJK>
-+<U66F8> /x8f/x91 <CJK>
-+<U85AF> /x8f/x92 <CJK>
-+<U85F7> /x8f/x93 <CJK>
-+<U8AF8> /x8f/x94 <CJK>
-+<U52A9> /x8f/x95 <CJK>
-+<U53D9> /x8f/x96 <CJK>
-+<U5973> /x8f/x97 <CJK>
-+<U5E8F> /x8f/x98 <CJK>
-+<U5F90> /x8f/x99 <CJK>
-+<U6055> /x8f/x9a <CJK>
-+<U92E4> /x8f/x9b <CJK>
-+<U9664> /x8f/x9c <CJK>
-+<U50B7> /x8f/x9d <CJK>
-+<U511F> /x8f/x9e <CJK>
-+<U52DD> /x8f/x9f <CJK>
-+<U5320> /x8f/xa0 <CJK>
-+<U5347> /x8f/xa1 <CJK>
-+<U53EC> /x8f/xa2 <CJK>
-+<U54E8> /x8f/xa3 <CJK>
-+<U5546> /x8f/xa4 <CJK>
-+<U5531> /x8f/xa5 <CJK>
-+<U5617> /x8f/xa6 <CJK>
-+<U5968> /x8f/xa7 <CJK>
-+<U59BE> /x8f/xa8 <CJK>
-+<U5A3C> /x8f/xa9 <CJK>
-+<U5BB5> /x8f/xaa <CJK>
-+<U5C06> /x8f/xab <CJK>
-+<U5C0F> /x8f/xac <CJK>
-+<U5C11> /x8f/xad <CJK>
-+<U5C1A> /x8f/xae <CJK>
-+<U5E84> /x8f/xaf <CJK>
-+<U5E8A> /x8f/xb0 <CJK>
-+<U5EE0> /x8f/xb1 <CJK>
-+<U5F70> /x8f/xb2 <CJK>
-+<U627F> /x8f/xb3 <CJK>
-+<U6284> /x8f/xb4 <CJK>
-+<U62DB> /x8f/xb5 <CJK>
-+<U638C> /x8f/xb6 <CJK>
-+<U6377> /x8f/xb7 <CJK>
-+<U6607> /x8f/xb8 <CJK>
-+<U660C> /x8f/xb9 <CJK>
-+<U662D> /x8f/xba <CJK>
-+<U6676> /x8f/xbb <CJK>
-+<U677E> /x8f/xbc <CJK>
-+<U68A2> /x8f/xbd <CJK>
-+<U6A1F> /x8f/xbe <CJK>
-+<U6A35> /x8f/xbf <CJK>
-+<U6CBC> /x8f/xc0 <CJK>
-+<U6D88> /x8f/xc1 <CJK>
-+<U6E09> /x8f/xc2 <CJK>
-+<U6E58> /x8f/xc3 <CJK>
-+<U713C> /x8f/xc4 <CJK>
-+<U7126> /x8f/xc5 <CJK>
-+<U7167> /x8f/xc6 <CJK>
-+<U75C7> /x8f/xc7 <CJK>
-+<U7701> /x8f/xc8 <CJK>
-+<U785D> /x8f/xc9 <CJK>
-+<U7901> /x8f/xca <CJK>
-+<U7965> /x8f/xcb <CJK>
-+<U79F0> /x8f/xcc <CJK>
-+<U7AE0> /x8f/xcd <CJK>
-+<U7B11> /x8f/xce <CJK>
-+<U7CA7> /x8f/xcf <CJK>
-+<U7D39> /x8f/xd0 <CJK>
-+<U8096> /x8f/xd1 <CJK>
-+<U83D6> /x8f/xd2 <CJK>
-+<U848B> /x8f/xd3 <CJK>
-+<U8549> /x8f/xd4 <CJK>
-+<U885D> /x8f/xd5 <CJK>
-+<U88F3> /x8f/xd6 <CJK>
-+<U8A1F> /x8f/xd7 <CJK>
-+<U8A3C> /x8f/xd8 <CJK>
-+<U8A54> /x8f/xd9 <CJK>
-+<U8A73> /x8f/xda <CJK>
-+<U8C61> /x8f/xdb <CJK>
-+<U8CDE> /x8f/xdc <CJK>
-+<U91A4> /x8f/xdd <CJK>
-+<U9266> /x8f/xde <CJK>
-+<U937E> /x8f/xdf <CJK>
-+<U9418> /x8f/xe0 <CJK>
-+<U969C> /x8f/xe1 <CJK>
-+<U9798> /x8f/xe2 <CJK>
-+<U4E0A> /x8f/xe3 <CJK>
-+<U4E08> /x8f/xe4 <CJK>
-+<U4E1E> /x8f/xe5 <CJK>
-+<U4E57> /x8f/xe6 <CJK>
-+<U5197> /x8f/xe7 <CJK>
-+<U5270> /x8f/xe8 <CJK>
-+<U57CE> /x8f/xe9 <CJK>
-+<U5834> /x8f/xea <CJK>
-+<U58CC> /x8f/xeb <CJK>
-+<U5B22> /x8f/xec <CJK>
-+<U5E38> /x8f/xed <CJK>
-+<U60C5> /x8f/xee <CJK>
-+<U64FE> /x8f/xef <CJK>
-+<U6761> /x8f/xf0 <CJK>
-+<U6756> /x8f/xf1 <CJK>
-+<U6D44> /x8f/xf2 <CJK>
-+<U72B6> /x8f/xf3 <CJK>
-+<U7573> /x8f/xf4 <CJK>
-+<U7A63> /x8f/xf5 <CJK>
-+<U84B8> /x8f/xf6 <CJK>
-+<U8B72> /x8f/xf7 <CJK>
-+<U91B8> /x8f/xf8 <CJK>
-+<U9320> /x8f/xf9 <CJK>
-+<U5631> /x8f/xfa <CJK>
-+<U57F4> /x8f/xfb <CJK>
-+<U98FE> /x8f/xfc <CJK>
-+<U62ED> /x90/x40 <CJK>
-+<U690D> /x90/x41 <CJK>
-+<U6B96> /x90/x42 <CJK>
-+<U71ED> /x90/x43 <CJK>
-+<U7E54> /x90/x44 <CJK>
-+<U8077> /x90/x45 <CJK>
-+<U8272> /x90/x46 <CJK>
-+<U89E6> /x90/x47 <CJK>
-+<U98DF> /x90/x48 <CJK>
-+<U8755> /x90/x49 <CJK>
-+<U8FB1> /x90/x4a <CJK>
-+<U5C3B> /x90/x4b <CJK>
-+<U4F38> /x90/x4c <CJK>
-+<U4FE1> /x90/x4d <CJK>
-+<U4FB5> /x90/x4e <CJK>
-+<U5507> /x90/x4f <CJK>
-+<U5A20> /x90/x50 <CJK>
-+<U5BDD> /x90/x51 <CJK>
-+<U5BE9> /x90/x52 <CJK>
-+<U5FC3> /x90/x53 <CJK>
-+<U614E> /x90/x54 <CJK>
-+<U632F> /x90/x55 <CJK>
-+<U65B0> /x90/x56 <CJK>
-+<U664B> /x90/x57 <CJK>
-+<U68EE> /x90/x58 <CJK>
-+<U699B> /x90/x59 <CJK>
-+<U6D78> /x90/x5a <CJK>
-+<U6DF1> /x90/x5b <CJK>
-+<U7533> /x90/x5c <CJK>
-+<U75B9> /x90/x5d <CJK>
-+<U771F> /x90/x5e <CJK>
-+<U795E> /x90/x5f <CJK>
-+<U79E6> /x90/x60 <CJK>
-+<U7D33> /x90/x61 <CJK>
-+<U81E3> /x90/x62 <CJK>
-+<U82AF> /x90/x63 <CJK>
-+<U85AA> /x90/x64 <CJK>
-+<U89AA> /x90/x65 <CJK>
-+<U8A3A> /x90/x66 <CJK>
-+<U8EAB> /x90/x67 <CJK>
-+<U8F9B> /x90/x68 <CJK>
-+<U9032> /x90/x69 <CJK>
-+<U91DD> /x90/x6a <CJK>
-+<U9707> /x90/x6b <CJK>
-+<U4EBA> /x90/x6c <CJK>
-+<U4EC1> /x90/x6d <CJK>
-+<U5203> /x90/x6e <CJK>
-+<U5875> /x90/x6f <CJK>
-+<U58EC> /x90/x70 <CJK>
-+<U5C0B> /x90/x71 <CJK>
-+<U751A> /x90/x72 <CJK>
-+<U5C3D> /x90/x73 <CJK>
-+<U814E> /x90/x74 <CJK>
-+<U8A0A> /x90/x75 <CJK>
-+<U8FC5> /x90/x76 <CJK>
-+<U9663> /x90/x77 <CJK>
-+<U976D> /x90/x78 <CJK>
-+<U7B25> /x90/x79 <CJK>
-+<U8ACF> /x90/x7a <CJK>
-+<U9808> /x90/x7b <CJK>
-+<U9162> /x90/x7c <CJK>
-+<U56F3> /x90/x7d <CJK>
-+<U53A8> /x90/x7e <CJK>
-+<U9017> /x90/x80 <CJK>
-+<U5439> /x90/x81 <CJK>
-+<U5782> /x90/x82 <CJK>
-+<U5E25> /x90/x83 <CJK>
-+<U63A8> /x90/x84 <CJK>
-+<U6C34> /x90/x85 <CJK>
-+<U708A> /x90/x86 <CJK>
-+<U7761> /x90/x87 <CJK>
-+<U7C8B> /x90/x88 <CJK>
-+<U7FE0> /x90/x89 <CJK>
-+<U8870> /x90/x8a <CJK>
-+<U9042> /x90/x8b <CJK>
-+<U9154> /x90/x8c <CJK>
-+<U9310> /x90/x8d <CJK>
-+<U9318> /x90/x8e <CJK>
-+<U968F> /x90/x8f <CJK>
-+<U745E> /x90/x90 <CJK>
-+<U9AC4> /x90/x91 <CJK>
-+<U5D07> /x90/x92 <CJK>
-+<U5D69> /x90/x93 <CJK>
-+<U6570> /x90/x94 <CJK>
-+<U67A2> /x90/x95 <CJK>
-+<U8DA8> /x90/x96 <CJK>
-+<U96DB> /x90/x97 <CJK>
-+<U636E> /x90/x98 <CJK>
-+<U6749> /x90/x99 <CJK>
-+<U6919> /x90/x9a <CJK>
-+<U83C5> /x90/x9b <CJK>
-+<U9817> /x90/x9c <CJK>
-+<U96C0> /x90/x9d <CJK>
-+<U88FE> /x90/x9e <CJK>
-+<U6F84> /x90/x9f <CJK>
-+<U647A> /x90/xa0 <CJK>
-+<U5BF8> /x90/xa1 <CJK>
-+<U4E16> /x90/xa2 <CJK>
-+<U702C> /x90/xa3 <CJK>
-+<U755D> /x90/xa4 <CJK>
-+<U662F> /x90/xa5 <CJK>
-+<U51C4> /x90/xa6 <CJK>
-+<U5236> /x90/xa7 <CJK>
-+<U52E2> /x90/xa8 <CJK>
-+<U59D3> /x90/xa9 <CJK>
-+<U5F81> /x90/xaa <CJK>
-+<U6027> /x90/xab <CJK>
-+<U6210> /x90/xac <CJK>
-+<U653F> /x90/xad <CJK>
-+<U6574> /x90/xae <CJK>
-+<U661F> /x90/xaf <CJK>
-+<U6674> /x90/xb0 <CJK>
-+<U68F2> /x90/xb1 <CJK>
-+<U6816> /x90/xb2 <CJK>
-+<U6B63> /x90/xb3 <CJK>
-+<U6E05> /x90/xb4 <CJK>
-+<U7272> /x90/xb5 <CJK>
-+<U751F> /x90/xb6 <CJK>
-+<U76DB> /x90/xb7 <CJK>
-+<U7CBE> /x90/xb8 <CJK>
-+<U8056> /x90/xb9 <CJK>
-+<U58F0> /x90/xba <CJK>
-+<U88FD> /x90/xbb <CJK>
-+<U897F> /x90/xbc <CJK>
-+<U8AA0> /x90/xbd <CJK>
-+<U8A93> /x90/xbe <CJK>
-+<U8ACB> /x90/xbf <CJK>
-+<U901D> /x90/xc0 <CJK>
-+<U9192> /x90/xc1 <CJK>
-+<U9752> /x90/xc2 <CJK>
-+<U9759> /x90/xc3 <CJK>
-+<U6589> /x90/xc4 <CJK>
-+<U7A0E> /x90/xc5 <CJK>
-+<U8106> /x90/xc6 <CJK>
-+<U96BB> /x90/xc7 <CJK>
-+<U5E2D> /x90/xc8 <CJK>
-+<U60DC> /x90/xc9 <CJK>
-+<U621A> /x90/xca <CJK>
-+<U65A5> /x90/xcb <CJK>
-+<U6614> /x90/xcc <CJK>
-+<U6790> /x90/xcd <CJK>
-+<U77F3> /x90/xce <CJK>
-+<U7A4D> /x90/xcf <CJK>
-+<U7C4D> /x90/xd0 <CJK>
-+<U7E3E> /x90/xd1 <CJK>
-+<U810A> /x90/xd2 <CJK>
-+<U8CAC> /x90/xd3 <CJK>
-+<U8D64> /x90/xd4 <CJK>
-+<U8DE1> /x90/xd5 <CJK>
-+<U8E5F> /x90/xd6 <CJK>
-+<U78A9> /x90/xd7 <CJK>
-+<U5207> /x90/xd8 <CJK>
-+<U62D9> /x90/xd9 <CJK>
-+<U63A5> /x90/xda <CJK>
-+<U6442> /x90/xdb <CJK>
-+<U6298> /x90/xdc <CJK>
-+<U8A2D> /x90/xdd <CJK>
-+<U7A83> /x90/xde <CJK>
-+<U7BC0> /x90/xdf <CJK>
-+<U8AAC> /x90/xe0 <CJK>
-+<U96EA> /x90/xe1 <CJK>
-+<U7D76> /x90/xe2 <CJK>
-+<U820C> /x90/xe3 <CJK>
-+<U8749> /x90/xe4 <CJK>
-+<U4ED9> /x90/xe5 <CJK>
-+<U5148> /x90/xe6 <CJK>
-+<U5343> /x90/xe7 <CJK>
-+<U5360> /x90/xe8 <CJK>
-+<U5BA3> /x90/xe9 <CJK>
-+<U5C02> /x90/xea <CJK>
-+<U5C16> /x90/xeb <CJK>
-+<U5DDD> /x90/xec <CJK>
-+<U6226> /x90/xed <CJK>
-+<U6247> /x90/xee <CJK>
-+<U64B0> /x90/xef <CJK>
-+<U6813> /x90/xf0 <CJK>
-+<U6834> /x90/xf1 <CJK>
-+<U6CC9> /x90/xf2 <CJK>
-+<U6D45> /x90/xf3 <CJK>
-+<U6D17> /x90/xf4 <CJK>
-+<U67D3> /x90/xf5 <CJK>
-+<U6F5C> /x90/xf6 <CJK>
-+<U714E> /x90/xf7 <CJK>
-+<U717D> /x90/xf8 <CJK>
-+<U65CB> /x90/xf9 <CJK>
-+<U7A7F> /x90/xfa <CJK>
-+<U7BAD> /x90/xfb <CJK>
-+<U7DDA> /x90/xfc <CJK>
-+<U7E4A> /x91/x40 <CJK>
-+<U7FA8> /x91/x41 <CJK>
-+<U817A> /x91/x42 <CJK>
-+<U821B> /x91/x43 <CJK>
-+<U8239> /x91/x44 <CJK>
-+<U85A6> /x91/x45 <CJK>
-+<U8A6E> /x91/x46 <CJK>
-+<U8CCE> /x91/x47 <CJK>
-+<U8DF5> /x91/x48 <CJK>
-+<U9078> /x91/x49 <CJK>
-+<U9077> /x91/x4a <CJK>
-+<U92AD> /x91/x4b <CJK>
-+<U9291> /x91/x4c <CJK>
-+<U9583> /x91/x4d <CJK>
-+<U9BAE> /x91/x4e <CJK>
-+<U524D> /x91/x4f <CJK>
-+<U5584> /x91/x50 <CJK>
-+<U6F38> /x91/x51 <CJK>
-+<U7136> /x91/x52 <CJK>
-+<U5168> /x91/x53 <CJK>
-+<U7985> /x91/x54 <CJK>
-+<U7E55> /x91/x55 <CJK>
-+<U81B3> /x91/x56 <CJK>
-+<U7CCE> /x91/x57 <CJK>
-+<U564C> /x91/x58 <CJK>
-+<U5851> /x91/x59 <CJK>
-+<U5CA8> /x91/x5a <CJK>
-+<U63AA> /x91/x5b <CJK>
-+<U66FE> /x91/x5c <CJK>
-+<U66FD> /x91/x5d <CJK>
-+<U695A> /x91/x5e <CJK>
-+<U72D9> /x91/x5f <CJK>
-+<U758F> /x91/x60 <CJK>
-+<U758E> /x91/x61 <CJK>
-+<U790E> /x91/x62 <CJK>
-+<U7956> /x91/x63 <CJK>
-+<U79DF> /x91/x64 <CJK>
-+<U7C97> /x91/x65 <CJK>
-+<U7D20> /x91/x66 <CJK>
-+<U7D44> /x91/x67 <CJK>
-+<U8607> /x91/x68 <CJK>
-+<U8A34> /x91/x69 <CJK>
-+<U963B> /x91/x6a <CJK>
-+<U9061> /x91/x6b <CJK>
-+<U9F20> /x91/x6c <CJK>
-+<U50E7> /x91/x6d <CJK>
-+<U5275> /x91/x6e <CJK>
-+<U53CC> /x91/x6f <CJK>
-+<U53E2> /x91/x70 <CJK>
-+<U5009> /x91/x71 <CJK>
-+<U55AA> /x91/x72 <CJK>
-+<U58EE> /x91/x73 <CJK>
-+<U594F> /x91/x74 <CJK>
-+<U723D> /x91/x75 <CJK>
-+<U5B8B> /x91/x76 <CJK>
-+<U5C64> /x91/x77 <CJK>
-+<U531D> /x91/x78 <CJK>
-+<U60E3> /x91/x79 <CJK>
-+<U60F3> /x91/x7a <CJK>
-+<U635C> /x91/x7b <CJK>
-+<U6383> /x91/x7c <CJK>
-+<U633F> /x91/x7d <CJK>
-+<U63BB> /x91/x7e <CJK>
-+<U64CD> /x91/x80 <CJK>
-+<U65E9> /x91/x81 <CJK>
-+<U66F9> /x91/x82 <CJK>
-+<U5DE3> /x91/x83 <CJK>
-+<U69CD> /x91/x84 <CJK>
-+<U69FD> /x91/x85 <CJK>
-+<U6F15> /x91/x86 <CJK>
-+<U71E5> /x91/x87 <CJK>
-+<U4E89> /x91/x88 <CJK>
-+<U75E9> /x91/x89 <CJK>
-+<U76F8> /x91/x8a <CJK>
-+<U7A93> /x91/x8b <CJK>
-+<U7CDF> /x91/x8c <CJK>
-+<U7DCF> /x91/x8d <CJK>
-+<U7D9C> /x91/x8e <CJK>
-+<U8061> /x91/x8f <CJK>
-+<U8349> /x91/x90 <CJK>
-+<U8358> /x91/x91 <CJK>
-+<U846C> /x91/x92 <CJK>
-+<U84BC> /x91/x93 <CJK>
-+<U85FB> /x91/x94 <CJK>
-+<U88C5> /x91/x95 <CJK>
-+<U8D70> /x91/x96 <CJK>
-+<U9001> /x91/x97 <CJK>
-+<U906D> /x91/x98 <CJK>
-+<U9397> /x91/x99 <CJK>
-+<U971C> /x91/x9a <CJK>
-+<U9A12> /x91/x9b <CJK>
-+<U50CF> /x91/x9c <CJK>
-+<U5897> /x91/x9d <CJK>
-+<U618E> /x91/x9e <CJK>
-+<U81D3> /x91/x9f <CJK>
-+<U8535> /x91/xa0 <CJK>
-+<U8D08> /x91/xa1 <CJK>
-+<U9020> /x91/xa2 <CJK>
-+<U4FC3> /x91/xa3 <CJK>
-+<U5074> /x91/xa4 <CJK>
-+<U5247> /x91/xa5 <CJK>
-+<U5373> /x91/xa6 <CJK>
-+<U606F> /x91/xa7 <CJK>
-+<U6349> /x91/xa8 <CJK>
-+<U675F> /x91/xa9 <CJK>
-+<U6E2C> /x91/xaa <CJK>
-+<U8DB3> /x91/xab <CJK>
-+<U901F> /x91/xac <CJK>
-+<U4FD7> /x91/xad <CJK>
-+<U5C5E> /x91/xae <CJK>
-+<U8CCA> /x91/xaf <CJK>
-+<U65CF> /x91/xb0 <CJK>
-+<U7D9A> /x91/xb1 <CJK>
-+<U5352> /x91/xb2 <CJK>
-+<U8896> /x91/xb3 <CJK>
-+<U5176> /x91/xb4 <CJK>
-+<U63C3> /x91/xb5 <CJK>
-+<U5B58> /x91/xb6 <CJK>
-+<U5B6B> /x91/xb7 <CJK>
-+<U5C0A> /x91/xb8 <CJK>
-+<U640D> /x91/xb9 <CJK>
-+<U6751> /x91/xba <CJK>
-+<U905C> /x91/xbb <CJK>
-+<U4ED6> /x91/xbc <CJK>
-+<U591A> /x91/xbd <CJK>
-+<U592A> /x91/xbe <CJK>
-+<U6C70> /x91/xbf <CJK>
-+<U8A51> /x91/xc0 <CJK>
-+<U553E> /x91/xc1 <CJK>
-+<U5815> /x91/xc2 <CJK>
-+<U59A5> /x91/xc3 <CJK>
-+<U60F0> /x91/xc4 <CJK>
-+<U6253> /x91/xc5 <CJK>
-+<U67C1> /x91/xc6 <CJK>
-+<U8235> /x91/xc7 <CJK>
-+<U6955> /x91/xc8 <CJK>
-+<U9640> /x91/xc9 <CJK>
-+<U99C4> /x91/xca <CJK>
-+<U9A28> /x91/xcb <CJK>
-+<U4F53> /x91/xcc <CJK>
-+<U5806> /x91/xcd <CJK>
-+<U5BFE> /x91/xce <CJK>
-+<U8010> /x91/xcf <CJK>
-+<U5CB1> /x91/xd0 <CJK>
-+<U5E2F> /x91/xd1 <CJK>
-+<U5F85> /x91/xd2 <CJK>
-+<U6020> /x91/xd3 <CJK>
-+<U614B> /x91/xd4 <CJK>
-+<U6234> /x91/xd5 <CJK>
-+<U66FF> /x91/xd6 <CJK>
-+<U6CF0> /x91/xd7 <CJK>
-+<U6EDE> /x91/xd8 <CJK>
-+<U80CE> /x91/xd9 <CJK>
-+<U817F> /x91/xda <CJK>
-+<U82D4> /x91/xdb <CJK>
-+<U888B> /x91/xdc <CJK>
-+<U8CB8> /x91/xdd <CJK>
-+<U9000> /x91/xde <CJK>
-+<U902E> /x91/xdf <CJK>
-+<U968A> /x91/xe0 <CJK>
-+<U9EDB> /x91/xe1 <CJK>
-+<U9BDB> /x91/xe2 <CJK>
-+<U4EE3> /x91/xe3 <CJK>
-+<U53F0> /x91/xe4 <CJK>
-+<U5927> /x91/xe5 <CJK>
-+<U7B2C> /x91/xe6 <CJK>
-+<U918D> /x91/xe7 <CJK>
-+<U984C> /x91/xe8 <CJK>
-+<U9DF9> /x91/xe9 <CJK>
-+<U6EDD> /x91/xea <CJK>
-+<U7027> /x91/xeb <CJK>
-+<U5353> /x91/xec <CJK>
-+<U5544> /x91/xed <CJK>
-+<U5B85> /x91/xee <CJK>
-+<U6258> /x91/xef <CJK>
-+<U629E> /x91/xf0 <CJK>
-+<U62D3> /x91/xf1 <CJK>
-+<U6CA2> /x91/xf2 <CJK>
-+<U6FEF> /x91/xf3 <CJK>
-+<U7422> /x91/xf4 <CJK>
-+<U8A17> /x91/xf5 <CJK>
-+<U9438> /x91/xf6 <CJK>
-+<U6FC1> /x91/xf7 <CJK>
-+<U8AFE> /x91/xf8 <CJK>
-+<U8338> /x91/xf9 <CJK>
-+<U51E7> /x91/xfa <CJK>
-+<U86F8> /x91/xfb <CJK>
-+<U53EA> /x91/xfc <CJK>
-+<U53E9> /x92/x40 <CJK>
-+<U4F46> /x92/x41 <CJK>
-+<U9054> /x92/x42 <CJK>
-+<U8FB0> /x92/x43 <CJK>
-+<U596A> /x92/x44 <CJK>
-+<U8131> /x92/x45 <CJK>
-+<U5DFD> /x92/x46 <CJK>
-+<U7AEA> /x92/x47 <CJK>
-+<U8FBF> /x92/x48 <CJK>
-+<U68DA> /x92/x49 <CJK>
-+<U8C37> /x92/x4a <CJK>
-+<U72F8> /x92/x4b <CJK>
-+<U9C48> /x92/x4c <CJK>
-+<U6A3D> /x92/x4d <CJK>
-+<U8AB0> /x92/x4e <CJK>
-+<U4E39> /x92/x4f <CJK>
-+<U5358> /x92/x50 <CJK>
-+<U5606> /x92/x51 <CJK>
-+<U5766> /x92/x52 <CJK>
-+<U62C5> /x92/x53 <CJK>
-+<U63A2> /x92/x54 <CJK>
-+<U65E6> /x92/x55 <CJK>
-+<U6B4E> /x92/x56 <CJK>
-+<U6DE1> /x92/x57 <CJK>
-+<U6E5B> /x92/x58 <CJK>
-+<U70AD> /x92/x59 <CJK>
-+<U77ED> /x92/x5a <CJK>
-+<U7AEF> /x92/x5b <CJK>
-+<U7BAA> /x92/x5c <CJK>
-+<U7DBB> /x92/x5d <CJK>
-+<U803D> /x92/x5e <CJK>
-+<U80C6> /x92/x5f <CJK>
-+<U86CB> /x92/x60 <CJK>
-+<U8A95> /x92/x61 <CJK>
-+<U935B> /x92/x62 <CJK>
-+<U56E3> /x92/x63 <CJK>
-+<U58C7> /x92/x64 <CJK>
-+<U5F3E> /x92/x65 <CJK>
-+<U65AD> /x92/x66 <CJK>
-+<U6696> /x92/x67 <CJK>
-+<U6A80> /x92/x68 <CJK>
-+<U6BB5> /x92/x69 <CJK>
-+<U7537> /x92/x6a <CJK>
-+<U8AC7> /x92/x6b <CJK>
-+<U5024> /x92/x6c <CJK>
-+<U77E5> /x92/x6d <CJK>
-+<U5730> /x92/x6e <CJK>
-+<U5F1B> /x92/x6f <CJK>
-+<U6065> /x92/x70 <CJK>
-+<U667A> /x92/x71 <CJK>
-+<U6C60> /x92/x72 <CJK>
-+<U75F4> /x92/x73 <CJK>
-+<U7A1A> /x92/x74 <CJK>
-+<U7F6E> /x92/x75 <CJK>
-+<U81F4> /x92/x76 <CJK>
-+<U8718> /x92/x77 <CJK>
-+<U9045> /x92/x78 <CJK>
-+<U99B3> /x92/x79 <CJK>
-+<U7BC9> /x92/x7a <CJK>
-+<U755C> /x92/x7b <CJK>
-+<U7AF9> /x92/x7c <CJK>
-+<U7B51> /x92/x7d <CJK>
-+<U84C4> /x92/x7e <CJK>
-+<U9010> /x92/x80 <CJK>
-+<U79E9> /x92/x81 <CJK>
-+<U7A92> /x92/x82 <CJK>
-+<U8336> /x92/x83 <CJK>
-+<U5AE1> /x92/x84 <CJK>
-+<U7740> /x92/x85 <CJK>
-+<U4E2D> /x92/x86 <CJK>
-+<U4EF2> /x92/x87 <CJK>
-+<U5B99> /x92/x88 <CJK>
-+<U5FE0> /x92/x89 <CJK>
-+<U62BD> /x92/x8a <CJK>
-+<U663C> /x92/x8b <CJK>
-+<U67F1> /x92/x8c <CJK>
-+<U6CE8> /x92/x8d <CJK>
-+<U866B> /x92/x8e <CJK>
-+<U8877> /x92/x8f <CJK>
-+<U8A3B> /x92/x90 <CJK>
-+<U914E> /x92/x91 <CJK>
-+<U92F3> /x92/x92 <CJK>
-+<U99D0> /x92/x93 <CJK>
-+<U6A17> /x92/x94 <CJK>
-+<U7026> /x92/x95 <CJK>
-+<U732A> /x92/x96 <CJK>
-+<U82E7> /x92/x97 <CJK>
-+<U8457> /x92/x98 <CJK>
-+<U8CAF> /x92/x99 <CJK>
-+<U4E01> /x92/x9a <CJK>
-+<U5146> /x92/x9b <CJK>
-+<U51CB> /x92/x9c <CJK>
-+<U558B> /x92/x9d <CJK>
-+<U5BF5> /x92/x9e <CJK>
-+<U5E16> /x92/x9f <CJK>
-+<U5E33> /x92/xa0 <CJK>
-+<U5E81> /x92/xa1 <CJK>
-+<U5F14> /x92/xa2 <CJK>
-+<U5F35> /x92/xa3 <CJK>
-+<U5F6B> /x92/xa4 <CJK>
-+<U5FB4> /x92/xa5 <CJK>
-+<U61F2> /x92/xa6 <CJK>
-+<U6311> /x92/xa7 <CJK>
-+<U66A2> /x92/xa8 <CJK>
-+<U671D> /x92/xa9 <CJK>
-+<U6F6E> /x92/xaa <CJK>
-+<U7252> /x92/xab <CJK>
-+<U753A> /x92/xac <CJK>
-+<U773A> /x92/xad <CJK>
-+<U8074> /x92/xae <CJK>
-+<U8139> /x92/xaf <CJK>
-+<U8178> /x92/xb0 <CJK>
-+<U8776> /x92/xb1 <CJK>
-+<U8ABF> /x92/xb2 <CJK>
-+<U8ADC> /x92/xb3 <CJK>
-+<U8D85> /x92/xb4 <CJK>
-+<U8DF3> /x92/xb5 <CJK>
-+<U929A> /x92/xb6 <CJK>
-+<U9577> /x92/xb7 <CJK>
-+<U9802> /x92/xb8 <CJK>
-+<U9CE5> /x92/xb9 <CJK>
-+<U52C5> /x92/xba <CJK>
-+<U6357> /x92/xbb <CJK>
-+<U76F4> /x92/xbc <CJK>
-+<U6715> /x92/xbd <CJK>
-+<U6C88> /x92/xbe <CJK>
-+<U73CD> /x92/xbf <CJK>
-+<U8CC3> /x92/xc0 <CJK>
-+<U93AE> /x92/xc1 <CJK>
-+<U9673> /x92/xc2 <CJK>
-+<U6D25> /x92/xc3 <CJK>
-+<U589C> /x92/xc4 <CJK>
-+<U690E> /x92/xc5 <CJK>
-+<U69CC> /x92/xc6 <CJK>
-+<U8FFD> /x92/xc7 <CJK>
-+<U939A> /x92/xc8 <CJK>
-+<U75DB> /x92/xc9 <CJK>
-+<U901A> /x92/xca <CJK>
-+<U585A> /x92/xcb <CJK>
-+<U6802> /x92/xcc <CJK>
-+<U63B4> /x92/xcd <CJK>
-+<U69FB> /x92/xce <CJK>
-+<U4F43> /x92/xcf <CJK>
-+<U6F2C> /x92/xd0 <CJK>
-+<U67D8> /x92/xd1 <CJK>
-+<U8FBB> /x92/xd2 <CJK>
-+<U8526> /x92/xd3 <CJK>
-+<U7DB4> /x92/xd4 <CJK>
-+<U9354> /x92/xd5 <CJK>
-+<U693F> /x92/xd6 <CJK>
-+<U6F70> /x92/xd7 <CJK>
-+<U576A> /x92/xd8 <CJK>
-+<U58F7> /x92/xd9 <CJK>
-+<U5B2C> /x92/xda <CJK>
-+<U7D2C> /x92/xdb <CJK>
-+<U722A> /x92/xdc <CJK>
-+<U540A> /x92/xdd <CJK>
-+<U91E3> /x92/xde <CJK>
-+<U9DB4> /x92/xdf <CJK>
-+<U4EAD> /x92/xe0 <CJK>
-+<U4F4E> /x92/xe1 <CJK>
-+<U505C> /x92/xe2 <CJK>
-+<U5075> /x92/xe3 <CJK>
-+<U5243> /x92/xe4 <CJK>
-+<U8C9E> /x92/xe5 <CJK>
-+<U5448> /x92/xe6 <CJK>
-+<U5824> /x92/xe7 <CJK>
-+<U5B9A> /x92/xe8 <CJK>
-+<U5E1D> /x92/xe9 <CJK>
-+<U5E95> /x92/xea <CJK>
-+<U5EAD> /x92/xeb <CJK>
-+<U5EF7> /x92/xec <CJK>
-+<U5F1F> /x92/xed <CJK>
-+<U608C> /x92/xee <CJK>
-+<U62B5> /x92/xef <CJK>
-+<U633A> /x92/xf0 <CJK>
-+<U63D0> /x92/xf1 <CJK>
-+<U68AF> /x92/xf2 <CJK>
-+<U6C40> /x92/xf3 <CJK>
-+<U7887> /x92/xf4 <CJK>
-+<U798E> /x92/xf5 <CJK>
-+<U7A0B> /x92/xf6 <CJK>
-+<U7DE0> /x92/xf7 <CJK>
-+<U8247> /x92/xf8 <CJK>
-+<U8A02> /x92/xf9 <CJK>
-+<U8AE6> /x92/xfa <CJK>
-+<U8E44> /x92/xfb <CJK>
-+<U9013> /x92/xfc <CJK>
-+<U90B8> /x93/x40 <CJK>
-+<U912D> /x93/x41 <CJK>
-+<U91D8> /x93/x42 <CJK>
-+<U9F0E> /x93/x43 <CJK>
-+<U6CE5> /x93/x44 <CJK>
-+<U6458> /x93/x45 <CJK>
-+<U64E2> /x93/x46 <CJK>
-+<U6575> /x93/x47 <CJK>
-+<U6EF4> /x93/x48 <CJK>
-+<U7684> /x93/x49 <CJK>
-+<U7B1B> /x93/x4a <CJK>
-+<U9069> /x93/x4b <CJK>
-+<U93D1> /x93/x4c <CJK>
-+<U6EBA> /x93/x4d <CJK>
-+<U54F2> /x93/x4e <CJK>
-+<U5FB9> /x93/x4f <CJK>
-+<U64A4> /x93/x50 <CJK>
-+<U8F4D> /x93/x51 <CJK>
-+<U8FED> /x93/x52 <CJK>
-+<U9244> /x93/x53 <CJK>
-+<U5178> /x93/x54 <CJK>
-+<U586B> /x93/x55 <CJK>
-+<U5929> /x93/x56 <CJK>
-+<U5C55> /x93/x57 <CJK>
-+<U5E97> /x93/x58 <CJK>
-+<U6DFB> /x93/x59 <CJK>
-+<U7E8F> /x93/x5a <CJK>
-+<U751C> /x93/x5b <CJK>
-+<U8CBC> /x93/x5c <CJK>
-+<U8EE2> /x93/x5d <CJK>
-+<U985B> /x93/x5e <CJK>
-+<U70B9> /x93/x5f <CJK>
-+<U4F1D> /x93/x60 <CJK>
-+<U6BBF> /x93/x61 <CJK>
-+<U6FB1> /x93/x62 <CJK>
-+<U7530> /x93/x63 <CJK>
-+<U96FB> /x93/x64 <CJK>
-+<U514E> /x93/x65 <CJK>
-+<U5410> /x93/x66 <CJK>
-+<U5835> /x93/x67 <CJK>
-+<U5857> /x93/x68 <CJK>
-+<U59AC> /x93/x69 <CJK>
-+<U5C60> /x93/x6a <CJK>
-+<U5F92> /x93/x6b <CJK>
-+<U6597> /x93/x6c <CJK>
-+<U675C> /x93/x6d <CJK>
-+<U6E21> /x93/x6e <CJK>
-+<U767B> /x93/x6f <CJK>
-+<U83DF> /x93/x70 <CJK>
-+<U8CED> /x93/x71 <CJK>
-+<U9014> /x93/x72 <CJK>
-+<U90FD> /x93/x73 <CJK>
-+<U934D> /x93/x74 <CJK>
-+<U7825> /x93/x75 <CJK>
-+<U783A> /x93/x76 <CJK>
-+<U52AA> /x93/x77 <CJK>
-+<U5EA6> /x93/x78 <CJK>
-+<U571F> /x93/x79 <CJK>
-+<U5974> /x93/x7a <CJK>
-+<U6012> /x93/x7b <CJK>
-+<U5012> /x93/x7c <CJK>
-+<U515A> /x93/x7d <CJK>
-+<U51AC> /x93/x7e <CJK>
-+<U51CD> /x93/x80 <CJK>
-+<U5200> /x93/x81 <CJK>
-+<U5510> /x93/x82 <CJK>
-+<U5854> /x93/x83 <CJK>
-+<U5858> /x93/x84 <CJK>
-+<U5957> /x93/x85 <CJK>
-+<U5B95> /x93/x86 <CJK>
-+<U5CF6> /x93/x87 <CJK>
-+<U5D8B> /x93/x88 <CJK>
-+<U60BC> /x93/x89 <CJK>
-+<U6295> /x93/x8a <CJK>
-+<U642D> /x93/x8b <CJK>
-+<U6771> /x93/x8c <CJK>
-+<U6843> /x93/x8d <CJK>
-+<U68BC> /x93/x8e <CJK>
-+<U68DF> /x93/x8f <CJK>
-+<U76D7> /x93/x90 <CJK>
-+<U6DD8> /x93/x91 <CJK>
-+<U6E6F> /x93/x92 <CJK>
-+<U6D9B> /x93/x93 <CJK>
-+<U706F> /x93/x94 <CJK>
-+<U71C8> /x93/x95 <CJK>
-+<U5F53> /x93/x96 <CJK>
-+<U75D8> /x93/x97 <CJK>
-+<U7977> /x93/x98 <CJK>
-+<U7B49> /x93/x99 <CJK>
-+<U7B54> /x93/x9a <CJK>
-+<U7B52> /x93/x9b <CJK>
-+<U7CD6> /x93/x9c <CJK>
-+<U7D71> /x93/x9d <CJK>
-+<U5230> /x93/x9e <CJK>
-+<U8463> /x93/x9f <CJK>
-+<U8569> /x93/xa0 <CJK>
-+<U85E4> /x93/xa1 <CJK>
-+<U8A0E> /x93/xa2 <CJK>
-+<U8B04> /x93/xa3 <CJK>
-+<U8C46> /x93/xa4 <CJK>
-+<U8E0F> /x93/xa5 <CJK>
-+<U9003> /x93/xa6 <CJK>
-+<U900F> /x93/xa7 <CJK>
-+<U9419> /x93/xa8 <CJK>
-+<U9676> /x93/xa9 <CJK>
-+<U982D> /x93/xaa <CJK>
-+<U9A30> /x93/xab <CJK>
-+<U95D8> /x93/xac <CJK>
-+<U50CD> /x93/xad <CJK>
-+<U52D5> /x93/xae <CJK>
-+<U540C> /x93/xaf <CJK>
-+<U5802> /x93/xb0 <CJK>
-+<U5C0E> /x93/xb1 <CJK>
-+<U61A7> /x93/xb2 <CJK>
-+<U649E> /x93/xb3 <CJK>
-+<U6D1E> /x93/xb4 <CJK>
-+<U77B3> /x93/xb5 <CJK>
-+<U7AE5> /x93/xb6 <CJK>
-+<U80F4> /x93/xb7 <CJK>
-+<U8404> /x93/xb8 <CJK>
-+<U9053> /x93/xb9 <CJK>
-+<U9285> /x93/xba <CJK>
-+<U5CE0> /x93/xbb <CJK>
-+<U9D07> /x93/xbc <CJK>
-+<U533F> /x93/xbd <CJK>
-+<U5F97> /x93/xbe <CJK>
-+<U5FB3> /x93/xbf <CJK>
-+<U6D9C> /x93/xc0 <CJK>
-+<U7279> /x93/xc1 <CJK>
-+<U7763> /x93/xc2 <CJK>
-+<U79BF> /x93/xc3 <CJK>
-+<U7BE4> /x93/xc4 <CJK>
-+<U6BD2> /x93/xc5 <CJK>
-+<U72EC> /x93/xc6 <CJK>
-+<U8AAD> /x93/xc7 <CJK>
-+<U6803> /x93/xc8 <CJK>
-+<U6A61> /x93/xc9 <CJK>
-+<U51F8> /x93/xca <CJK>
-+<U7A81> /x93/xcb <CJK>
-+<U6934> /x93/xcc <CJK>
-+<U5C4A> /x93/xcd <CJK>
-+<U9CF6> /x93/xce <CJK>
-+<U82EB> /x93/xcf <CJK>
-+<U5BC5> /x93/xd0 <CJK>
-+<U9149> /x93/xd1 <CJK>
-+<U701E> /x93/xd2 <CJK>
-+<U5678> /x93/xd3 <CJK>
-+<U5C6F> /x93/xd4 <CJK>
-+<U60C7> /x93/xd5 <CJK>
-+<U6566> /x93/xd6 <CJK>
-+<U6C8C> /x93/xd7 <CJK>
-+<U8C5A> /x93/xd8 <CJK>
-+<U9041> /x93/xd9 <CJK>
-+<U9813> /x93/xda <CJK>
-+<U5451> /x93/xdb <CJK>
-+<U66C7> /x93/xdc <CJK>
-+<U920D> /x93/xdd <CJK>
-+<U5948> /x93/xde <CJK>
-+<U90A3> /x93/xdf <CJK>
-+<U5185> /x93/xe0 <CJK>
-+<U4E4D> /x93/xe1 <CJK>
-+<U51EA> /x93/xe2 <CJK>
-+<U8599> /x93/xe3 <CJK>
-+<U8B0E> /x93/xe4 <CJK>
-+<U7058> /x93/xe5 <CJK>
-+<U637A> /x93/xe6 <CJK>
-+<U934B> /x93/xe7 <CJK>
-+<U6962> /x93/xe8 <CJK>
-+<U99B4> /x93/xe9 <CJK>
-+<U7E04> /x93/xea <CJK>
-+<U7577> /x93/xeb <CJK>
-+<U5357> /x93/xec <CJK>
-+<U6960> /x93/xed <CJK>
-+<U8EDF> /x93/xee <CJK>
-+<U96E3> /x93/xef <CJK>
-+<U6C5D> /x93/xf0 <CJK>
-+<U4E8C> /x93/xf1 <CJK>
-+<U5C3C> /x93/xf2 <CJK>
-+<U5F10> /x93/xf3 <CJK>
-+<U8FE9> /x93/xf4 <CJK>
-+<U5302> /x93/xf5 <CJK>
-+<U8CD1> /x93/xf6 <CJK>
-+<U8089> /x93/xf7 <CJK>
-+<U8679> /x93/xf8 <CJK>
-+<U5EFF> /x93/xf9 <CJK>
-+<U65E5> /x93/xfa <CJK>
-+<U4E73> /x93/xfb <CJK>
-+<U5165> /x93/xfc <CJK>
-+<U5982> /x94/x40 <CJK>
-+<U5C3F> /x94/x41 <CJK>
-+<U97EE> /x94/x42 <CJK>
-+<U4EFB> /x94/x43 <CJK>
-+<U598A> /x94/x44 <CJK>
-+<U5FCD> /x94/x45 <CJK>
-+<U8A8D> /x94/x46 <CJK>
-+<U6FE1> /x94/x47 <CJK>
-+<U79B0> /x94/x48 <CJK>
-+<U7962> /x94/x49 <CJK>
-+<U5BE7> /x94/x4a <CJK>
-+<U8471> /x94/x4b <CJK>
-+<U732B> /x94/x4c <CJK>
-+<U71B1> /x94/x4d <CJK>
-+<U5E74> /x94/x4e <CJK>
-+<U5FF5> /x94/x4f <CJK>
-+<U637B> /x94/x50 <CJK>
-+<U649A> /x94/x51 <CJK>
-+<U71C3> /x94/x52 <CJK>
-+<U7C98> /x94/x53 <CJK>
-+<U4E43> /x94/x54 <CJK>
-+<U5EFC> /x94/x55 <CJK>
-+<U4E4B> /x94/x56 <CJK>
-+<U57DC> /x94/x57 <CJK>
-+<U56A2> /x94/x58 <CJK>
-+<U60A9> /x94/x59 <CJK>
-+<U6FC3> /x94/x5a <CJK>
-+<U7D0D> /x94/x5b <CJK>
-+<U80FD> /x94/x5c <CJK>
-+<U8133> /x94/x5d <CJK>
-+<U81BF> /x94/x5e <CJK>
-+<U8FB2> /x94/x5f <CJK>
-+<U8997> /x94/x60 <CJK>
-+<U86A4> /x94/x61 <CJK>
-+<U5DF4> /x94/x62 <CJK>
-+<U628A> /x94/x63 <CJK>
-+<U64AD> /x94/x64 <CJK>
-+<U8987> /x94/x65 <CJK>
-+<U6777> /x94/x66 <CJK>
-+<U6CE2> /x94/x67 <CJK>
-+<U6D3E> /x94/x68 <CJK>
-+<U7436> /x94/x69 <CJK>
-+<U7834> /x94/x6a <CJK>
-+<U5A46> /x94/x6b <CJK>
-+<U7F75> /x94/x6c <CJK>
-+<U82AD> /x94/x6d <CJK>
-+<U99AC> /x94/x6e <CJK>
-+<U4FF3> /x94/x6f <CJK>
-+<U5EC3> /x94/x70 <CJK>
-+<U62DD> /x94/x71 <CJK>
-+<U6392> /x94/x72 <CJK>
-+<U6557> /x94/x73 <CJK>
-+<U676F> /x94/x74 <CJK>
-+<U76C3> /x94/x75 <CJK>
-+<U724C> /x94/x76 <CJK>
-+<U80CC> /x94/x77 <CJK>
-+<U80BA> /x94/x78 <CJK>
-+<U8F29> /x94/x79 <CJK>
-+<U914D> /x94/x7a <CJK>
-+<U500D> /x94/x7b <CJK>
-+<U57F9> /x94/x7c <CJK>
-+<U5A92> /x94/x7d <CJK>
-+<U6885> /x94/x7e <CJK>
-+<U6973> /x94/x80 <CJK>
-+<U7164> /x94/x81 <CJK>
-+<U72FD> /x94/x82 <CJK>
-+<U8CB7> /x94/x83 <CJK>
-+<U58F2> /x94/x84 <CJK>
-+<U8CE0> /x94/x85 <CJK>
-+<U966A> /x94/x86 <CJK>
-+<U9019> /x94/x87 <CJK>
-+<U877F> /x94/x88 <CJK>
-+<U79E4> /x94/x89 <CJK>
-+<U77E7> /x94/x8a <CJK>
-+<U8429> /x94/x8b <CJK>
-+<U4F2F> /x94/x8c <CJK>
-+<U5265> /x94/x8d <CJK>
-+<U535A> /x94/x8e <CJK>
-+<U62CD> /x94/x8f <CJK>
-+<U67CF> /x94/x90 <CJK>
-+<U6CCA> /x94/x91 <CJK>
-+<U767D> /x94/x92 <CJK>
-+<U7B94> /x94/x93 <CJK>
-+<U7C95> /x94/x94 <CJK>
-+<U8236> /x94/x95 <CJK>
-+<U8584> /x94/x96 <CJK>
-+<U8FEB> /x94/x97 <CJK>
-+<U66DD> /x94/x98 <CJK>
-+<U6F20> /x94/x99 <CJK>
-+<U7206> /x94/x9a <CJK>
-+<U7E1B> /x94/x9b <CJK>
-+<U83AB> /x94/x9c <CJK>
-+<U99C1> /x94/x9d <CJK>
-+<U9EA6> /x94/x9e <CJK>
-+<U51FD> /x94/x9f <CJK>
-+<U7BB1> /x94/xa0 <CJK>
-+<U7872> /x94/xa1 <CJK>
-+<U7BB8> /x94/xa2 <CJK>
-+<U8087> /x94/xa3 <CJK>
-+<U7B48> /x94/xa4 <CJK>
-+<U6AE8> /x94/xa5 <CJK>
-+<U5E61> /x94/xa6 <CJK>
-+<U808C> /x94/xa7 <CJK>
-+<U7551> /x94/xa8 <CJK>
-+<U7560> /x94/xa9 <CJK>
-+<U516B> /x94/xaa <CJK>
-+<U9262> /x94/xab <CJK>
-+<U6E8C> /x94/xac <CJK>
-+<U767A> /x94/xad <CJK>
-+<U9197> /x94/xae <CJK>
-+<U9AEA> /x94/xaf <CJK>
-+<U4F10> /x94/xb0 <CJK>
-+<U7F70> /x94/xb1 <CJK>
-+<U629C> /x94/xb2 <CJK>
-+<U7B4F> /x94/xb3 <CJK>
-+<U95A5> /x94/xb4 <CJK>
-+<U9CE9> /x94/xb5 <CJK>
-+<U567A> /x94/xb6 <CJK>
-+<U5859> /x94/xb7 <CJK>
-+<U86E4> /x94/xb8 <CJK>
-+<U96BC> /x94/xb9 <CJK>
-+<U4F34> /x94/xba <CJK>
-+<U5224> /x94/xbb <CJK>
-+<U534A> /x94/xbc <CJK>
-+<U53CD> /x94/xbd <CJK>
-+<U53DB> /x94/xbe <CJK>
-+<U5E06> /x94/xbf <CJK>
-+<U642C> /x94/xc0 <CJK>
-+<U6591> /x94/xc1 <CJK>
-+<U677F> /x94/xc2 <CJK>
-+<U6C3E> /x94/xc3 <CJK>
-+<U6C4E> /x94/xc4 <CJK>
-+<U7248> /x94/xc5 <CJK>
-+<U72AF> /x94/xc6 <CJK>
-+<U73ED> /x94/xc7 <CJK>
-+<U7554> /x94/xc8 <CJK>
-+<U7E41> /x94/xc9 <CJK>
-+<U822C> /x94/xca <CJK>
-+<U85E9> /x94/xcb <CJK>
-+<U8CA9> /x94/xcc <CJK>
-+<U7BC4> /x94/xcd <CJK>
-+<U91C6> /x94/xce <CJK>
-+<U7169> /x94/xcf <CJK>
-+<U9812> /x94/xd0 <CJK>
-+<U98EF> /x94/xd1 <CJK>
-+<U633D> /x94/xd2 <CJK>
-+<U6669> /x94/xd3 <CJK>
-+<U756A> /x94/xd4 <CJK>
-+<U76E4> /x94/xd5 <CJK>
-+<U78D0> /x94/xd6 <CJK>
-+<U8543> /x94/xd7 <CJK>
-+<U86EE> /x94/xd8 <CJK>
-+<U532A> /x94/xd9 <CJK>
-+<U5351> /x94/xda <CJK>
-+<U5426> /x94/xdb <CJK>
-+<U5983> /x94/xdc <CJK>
-+<U5E87> /x94/xdd <CJK>
-+<U5F7C> /x94/xde <CJK>
-+<U60B2> /x94/xdf <CJK>
-+<U6249> /x94/xe0 <CJK>
-+<U6279> /x94/xe1 <CJK>
-+<U62AB> /x94/xe2 <CJK>
-+<U6590> /x94/xe3 <CJK>
-+<U6BD4> /x94/xe4 <CJK>
-+<U6CCC> /x94/xe5 <CJK>
-+<U75B2> /x94/xe6 <CJK>
-+<U76AE> /x94/xe7 <CJK>
-+<U7891> /x94/xe8 <CJK>
-+<U79D8> /x94/xe9 <CJK>
-+<U7DCB> /x94/xea <CJK>
-+<U7F77> /x94/xeb <CJK>
-+<U80A5> /x94/xec <CJK>
-+<U88AB> /x94/xed <CJK>
-+<U8AB9> /x94/xee <CJK>
-+<U8CBB> /x94/xef <CJK>
-+<U907F> /x94/xf0 <CJK>
-+<U975E> /x94/xf1 <CJK>
-+<U98DB> /x94/xf2 <CJK>
-+<U6A0B> /x94/xf3 <CJK>
-+<U7C38> /x94/xf4 <CJK>
-+<U5099> /x94/xf5 <CJK>
-+<U5C3E> /x94/xf6 <CJK>
-+<U5FAE> /x94/xf7 <CJK>
-+<U6787> /x94/xf8 <CJK>
-+<U6BD8> /x94/xf9 <CJK>
-+<U7435> /x94/xfa <CJK>
-+<U7709> /x94/xfb <CJK>
-+<U7F8E> /x94/xfc <CJK>
-+<U9F3B> /x95/x40 <CJK>
-+<U67CA> /x95/x41 <CJK>
-+<U7A17> /x95/x42 <CJK>
-+<U5339> /x95/x43 <CJK>
-+<U758B> /x95/x44 <CJK>
-+<U9AED> /x95/x45 <CJK>
-+<U5F66> /x95/x46 <CJK>
-+<U819D> /x95/x47 <CJK>
-+<U83F1> /x95/x48 <CJK>
-+<U8098> /x95/x49 <CJK>
-+<U5F3C> /x95/x4a <CJK>
-+<U5FC5> /x95/x4b <CJK>
-+<U7562> /x95/x4c <CJK>
-+<U7B46> /x95/x4d <CJK>
-+<U903C> /x95/x4e <CJK>
-+<U6867> /x95/x4f <CJK>
-+<U59EB> /x95/x50 <CJK>
-+<U5A9B> /x95/x51 <CJK>
-+<U7D10> /x95/x52 <CJK>
-+<U767E> /x95/x53 <CJK>
-+<U8B2C> /x95/x54 <CJK>
-+<U4FF5> /x95/x55 <CJK>
-+<U5F6A> /x95/x56 <CJK>
-+<U6A19> /x95/x57 <CJK>
-+<U6C37> /x95/x58 <CJK>
-+<U6F02> /x95/x59 <CJK>
-+<U74E2> /x95/x5a <CJK>
-+<U7968> /x95/x5b <CJK>
-+<U8868> /x95/x5c <CJK>
-+<U8A55> /x95/x5d <CJK>
-+<U8C79> /x95/x5e <CJK>
-+<U5EDF> /x95/x5f <CJK>
-+<U63CF> /x95/x60 <CJK>
-+<U75C5> /x95/x61 <CJK>
-+<U79D2> /x95/x62 <CJK>
-+<U82D7> /x95/x63 <CJK>
-+<U9328> /x95/x64 <CJK>
-+<U92F2> /x95/x65 <CJK>
-+<U849C> /x95/x66 <CJK>
-+<U86ED> /x95/x67 <CJK>
-+<U9C2D> /x95/x68 <CJK>
-+<U54C1> /x95/x69 <CJK>
-+<U5F6C> /x95/x6a <CJK>
-+<U658C> /x95/x6b <CJK>
-+<U6D5C> /x95/x6c <CJK>
-+<U7015> /x95/x6d <CJK>
-+<U8CA7> /x95/x6e <CJK>
-+<U8CD3> /x95/x6f <CJK>
-+<U983B> /x95/x70 <CJK>
-+<U654F> /x95/x71 <CJK>
-+<U74F6> /x95/x72 <CJK>
-+<U4E0D> /x95/x73 <CJK>
-+<U4ED8> /x95/x74 <CJK>
-+<U57E0> /x95/x75 <CJK>
-+<U592B> /x95/x76 <CJK>
-+<U5A66> /x95/x77 <CJK>
-+<U5BCC> /x95/x78 <CJK>
-+<U51A8> /x95/x79 <CJK>
-+<U5E03> /x95/x7a <CJK>
-+<U5E9C> /x95/x7b <CJK>
-+<U6016> /x95/x7c <CJK>
-+<U6276> /x95/x7d <CJK>
-+<U6577> /x95/x7e <CJK>
-+<U65A7> /x95/x80 <CJK>
-+<U666E> /x95/x81 <CJK>
-+<U6D6E> /x95/x82 <CJK>
-+<U7236> /x95/x83 <CJK>
-+<U7B26> /x95/x84 <CJK>
-+<U8150> /x95/x85 <CJK>
-+<U819A> /x95/x86 <CJK>
-+<U8299> /x95/x87 <CJK>
-+<U8B5C> /x95/x88 <CJK>
-+<U8CA0> /x95/x89 <CJK>
-+<U8CE6> /x95/x8a <CJK>
-+<U8D74> /x95/x8b <CJK>
-+<U961C> /x95/x8c <CJK>
-+<U9644> /x95/x8d <CJK>
-+<U4FAE> /x95/x8e <CJK>
-+<U64AB> /x95/x8f <CJK>
-+<U6B66> /x95/x90 <CJK>
-+<U821E> /x95/x91 <CJK>
-+<U8461> /x95/x92 <CJK>
-+<U856A> /x95/x93 <CJK>
-+<U90E8> /x95/x94 <CJK>
-+<U5C01> /x95/x95 <CJK>
-+<U6953> /x95/x96 <CJK>
-+<U98A8> /x95/x97 <CJK>
-+<U847A> /x95/x98 <CJK>
-+<U8557> /x95/x99 <CJK>
-+<U4F0F> /x95/x9a <CJK>
-+<U526F> /x95/x9b <CJK>
-+<U5FA9> /x95/x9c <CJK>
-+<U5E45> /x95/x9d <CJK>
-+<U670D> /x95/x9e <CJK>
-+<U798F> /x95/x9f <CJK>
-+<U8179> /x95/xa0 <CJK>
-+<U8907> /x95/xa1 <CJK>
-+<U8986> /x95/xa2 <CJK>
-+<U6DF5> /x95/xa3 <CJK>
-+<U5F17> /x95/xa4 <CJK>
-+<U6255> /x95/xa5 <CJK>
-+<U6CB8> /x95/xa6 <CJK>
-+<U4ECF> /x95/xa7 <CJK>
-+<U7269> /x95/xa8 <CJK>
-+<U9B92> /x95/xa9 <CJK>
-+<U5206> /x95/xaa <CJK>
-+<U543B> /x95/xab <CJK>
-+<U5674> /x95/xac <CJK>
-+<U58B3> /x95/xad <CJK>
-+<U61A4> /x95/xae <CJK>
-+<U626E> /x95/xaf <CJK>
-+<U711A> /x95/xb0 <CJK>
-+<U596E> /x95/xb1 <CJK>
-+<U7C89> /x95/xb2 <CJK>
-+<U7CDE> /x95/xb3 <CJK>
-+<U7D1B> /x95/xb4 <CJK>
-+<U96F0> /x95/xb5 <CJK>
-+<U6587> /x95/xb6 <CJK>
-+<U805E> /x95/xb7 <CJK>
-+<U4E19> /x95/xb8 <CJK>
-+<U4F75> /x95/xb9 <CJK>
-+<U5175> /x95/xba <CJK>
-+<U5840> /x95/xbb <CJK>
-+<U5E63> /x95/xbc <CJK>
-+<U5E73> /x95/xbd <CJK>
-+<U5F0A> /x95/xbe <CJK>
-+<U67C4> /x95/xbf <CJK>
-+<U4E26> /x95/xc0 <CJK>
-+<U853D> /x95/xc1 <CJK>
-+<U9589> /x95/xc2 <CJK>
-+<U965B> /x95/xc3 <CJK>
-+<U7C73> /x95/xc4 <CJK>
-+<U9801> /x95/xc5 <CJK>
-+<U50FB> /x95/xc6 <CJK>
-+<U58C1> /x95/xc7 <CJK>
-+<U7656> /x95/xc8 <CJK>
-+<U78A7> /x95/xc9 <CJK>
-+<U5225> /x95/xca <CJK>
-+<U77A5> /x95/xcb <CJK>
-+<U8511> /x95/xcc <CJK>
-+<U7B86> /x95/xcd <CJK>
-+<U504F> /x95/xce <CJK>
-+<U5909> /x95/xcf <CJK>
-+<U7247> /x95/xd0 <CJK>
-+<U7BC7> /x95/xd1 <CJK>
-+<U7DE8> /x95/xd2 <CJK>
-+<U8FBA> /x95/xd3 <CJK>
-+<U8FD4> /x95/xd4 <CJK>
-+<U904D> /x95/xd5 <CJK>
-+<U4FBF> /x95/xd6 <CJK>
-+<U52C9> /x95/xd7 <CJK>
-+<U5A29> /x95/xd8 <CJK>
-+<U5F01> /x95/xd9 <CJK>
-+<U97AD> /x95/xda <CJK>
-+<U4FDD> /x95/xdb <CJK>
-+<U8217> /x95/xdc <CJK>
-+<U92EA> /x95/xdd <CJK>
-+<U5703> /x95/xde <CJK>
-+<U6355> /x95/xdf <CJK>
-+<U6B69> /x95/xe0 <CJK>
-+<U752B> /x95/xe1 <CJK>
-+<U88DC> /x95/xe2 <CJK>
-+<U8F14> /x95/xe3 <CJK>
-+<U7A42> /x95/xe4 <CJK>
-+<U52DF> /x95/xe5 <CJK>
-+<U5893> /x95/xe6 <CJK>
-+<U6155> /x95/xe7 <CJK>
-+<U620A> /x95/xe8 <CJK>
-+<U66AE> /x95/xe9 <CJK>
-+<U6BCD> /x95/xea <CJK>
-+<U7C3F> /x95/xeb <CJK>
-+<U83E9> /x95/xec <CJK>
-+<U5023> /x95/xed <CJK>
-+<U4FF8> /x95/xee <CJK>
-+<U5305> /x95/xef <CJK>
-+<U5446> /x95/xf0 <CJK>
-+<U5831> /x95/xf1 <CJK>
-+<U5949> /x95/xf2 <CJK>
-+<U5B9D> /x95/xf3 <CJK>
-+<U5CF0> /x95/xf4 <CJK>
-+<U5CEF> /x95/xf5 <CJK>
-+<U5D29> /x95/xf6 <CJK>
-+<U5E96> /x95/xf7 <CJK>
-+<U62B1> /x95/xf8 <CJK>
-+<U6367> /x95/xf9 <CJK>
-+<U653E> /x95/xfa <CJK>
-+<U65B9> /x95/xfb <CJK>
-+<U670B> /x95/xfc <CJK>
-+<U6CD5> /x96/x40 <CJK>
-+<U6CE1> /x96/x41 <CJK>
-+<U70F9> /x96/x42 <CJK>
-+<U7832> /x96/x43 <CJK>
-+<U7E2B> /x96/x44 <CJK>
-+<U80DE> /x96/x45 <CJK>
-+<U82B3> /x96/x46 <CJK>
-+<U840C> /x96/x47 <CJK>
-+<U84EC> /x96/x48 <CJK>
-+<U8702> /x96/x49 <CJK>
-+<U8912> /x96/x4a <CJK>
-+<U8A2A> /x96/x4b <CJK>
-+<U8C4A> /x96/x4c <CJK>
-+<U90A6> /x96/x4d <CJK>
-+<U92D2> /x96/x4e <CJK>
-+<U98FD> /x96/x4f <CJK>
-+<U9CF3> /x96/x50 <CJK>
-+<U9D6C> /x96/x51 <CJK>
-+<U4E4F> /x96/x52 <CJK>
-+<U4EA1> /x96/x53 <CJK>
-+<U508D> /x96/x54 <CJK>
-+<U5256> /x96/x55 <CJK>
-+<U574A> /x96/x56 <CJK>
-+<U59A8> /x96/x57 <CJK>
-+<U5E3D> /x96/x58 <CJK>
-+<U5FD8> /x96/x59 <CJK>
-+<U5FD9> /x96/x5a <CJK>
-+<U623F> /x96/x5b <CJK>
-+<U66B4> /x96/x5c <CJK>
-+<U671B> /x96/x5d <CJK>
-+<U67D0> /x96/x5e <CJK>
-+<U68D2> /x96/x5f <CJK>
-+<U5192> /x96/x60 <CJK>
-+<U7D21> /x96/x61 <CJK>
-+<U80AA> /x96/x62 <CJK>
-+<U81A8> /x96/x63 <CJK>
-+<U8B00> /x96/x64 <CJK>
-+<U8C8C> /x96/x65 <CJK>
-+<U8CBF> /x96/x66 <CJK>
-+<U927E> /x96/x67 <CJK>
-+<U9632> /x96/x68 <CJK>
-+<U5420> /x96/x69 <CJK>
-+<U982C> /x96/x6a <CJK>
-+<U5317> /x96/x6b <CJK>
-+<U50D5> /x96/x6c <CJK>
-+<U535C> /x96/x6d <CJK>
-+<U58A8> /x96/x6e <CJK>
-+<U64B2> /x96/x6f <CJK>
-+<U6734> /x96/x70 <CJK>
-+<U7267> /x96/x71 <CJK>
-+<U7766> /x96/x72 <CJK>
-+<U7A46> /x96/x73 <CJK>
-+<U91E6> /x96/x74 <CJK>
-+<U52C3> /x96/x75 <CJK>
-+<U6CA1> /x96/x76 <CJK>
-+<U6B86> /x96/x77 <CJK>
-+<U5800> /x96/x78 <CJK>
-+<U5E4C> /x96/x79 <CJK>
-+<U5954> /x96/x7a <CJK>
-+<U672C> /x96/x7b <CJK>
-+<U7FFB> /x96/x7c <CJK>
-+<U51E1> /x96/x7d <CJK>
-+<U76C6> /x96/x7e <CJK>
-+<U6469> /x96/x80 <CJK>
-+<U78E8> /x96/x81 <CJK>
-+<U9B54> /x96/x82 <CJK>
-+<U9EBB> /x96/x83 <CJK>
-+<U57CB> /x96/x84 <CJK>
-+<U59B9> /x96/x85 <CJK>
-+<U6627> /x96/x86 <CJK>
-+<U679A> /x96/x87 <CJK>
-+<U6BCE> /x96/x88 <CJK>
-+<U54E9> /x96/x89 <CJK>
-+<U69D9> /x96/x8a <CJK>
-+<U5E55> /x96/x8b <CJK>
-+<U819C> /x96/x8c <CJK>
-+<U6795> /x96/x8d <CJK>
-+<U9BAA> /x96/x8e <CJK>
-+<U67FE> /x96/x8f <CJK>
-+<U9C52> /x96/x90 <CJK>
-+<U685D> /x96/x91 <CJK>
-+<U4EA6> /x96/x92 <CJK>
-+<U4FE3> /x96/x93 <CJK>
-+<U53C8> /x96/x94 <CJK>
-+<U62B9> /x96/x95 <CJK>
-+<U672B> /x96/x96 <CJK>
-+<U6CAB> /x96/x97 <CJK>
-+<U8FC4> /x96/x98 <CJK>
-+<U4FAD> /x96/x99 <CJK>
-+<U7E6D> /x96/x9a <CJK>
-+<U9EBF> /x96/x9b <CJK>
-+<U4E07> /x96/x9c <CJK>
-+<U6162> /x96/x9d <CJK>
-+<U6E80> /x96/x9e <CJK>
-+<U6F2B> /x96/x9f <CJK>
-+<U8513> /x96/xa0 <CJK>
-+<U5473> /x96/xa1 <CJK>
-+<U672A> /x96/xa2 <CJK>
-+<U9B45> /x96/xa3 <CJK>
-+<U5DF3> /x96/xa4 <CJK>
-+<U7B95> /x96/xa5 <CJK>
-+<U5CAC> /x96/xa6 <CJK>
-+<U5BC6> /x96/xa7 <CJK>
-+<U871C> /x96/xa8 <CJK>
-+<U6E4A> /x96/xa9 <CJK>
-+<U84D1> /x96/xaa <CJK>
-+<U7A14> /x96/xab <CJK>
-+<U8108> /x96/xac <CJK>
-+<U5999> /x96/xad <CJK>
-+<U7C8D> /x96/xae <CJK>
-+<U6C11> /x96/xaf <CJK>
-+<U7720> /x96/xb0 <CJK>
-+<U52D9> /x96/xb1 <CJK>
-+<U5922> /x96/xb2 <CJK>
-+<U7121> /x96/xb3 <CJK>
-+<U725F> /x96/xb4 <CJK>
-+<U77DB> /x96/xb5 <CJK>
-+<U9727> /x96/xb6 <CJK>
-+<U9D61> /x96/xb7 <CJK>
-+<U690B> /x96/xb8 <CJK>
-+<U5A7F> /x96/xb9 <CJK>
-+<U5A18> /x96/xba <CJK>
-+<U51A5> /x96/xbb <CJK>
-+<U540D> /x96/xbc <CJK>
-+<U547D> /x96/xbd <CJK>
-+<U660E> /x96/xbe <CJK>
-+<U76DF> /x96/xbf <CJK>
-+<U8FF7> /x96/xc0 <CJK>
-+<U9298> /x96/xc1 <CJK>
-+<U9CF4> /x96/xc2 <CJK>
-+<U59EA> /x96/xc3 <CJK>
-+<U725D> /x96/xc4 <CJK>
-+<U6EC5> /x96/xc5 <CJK>
-+<U514D> /x96/xc6 <CJK>
-+<U68C9> /x96/xc7 <CJK>
-+<U7DBF> /x96/xc8 <CJK>
-+<U7DEC> /x96/xc9 <CJK>
-+<U9762> /x96/xca <CJK>
-+<U9EBA> /x96/xcb <CJK>
-+<U6478> /x96/xcc <CJK>
-+<U6A21> /x96/xcd <CJK>
-+<U8302> /x96/xce <CJK>
-+<U5984> /x96/xcf <CJK>
-+<U5B5F> /x96/xd0 <CJK>
-+<U6BDB> /x96/xd1 <CJK>
-+<U731B> /x96/xd2 <CJK>
-+<U76F2> /x96/xd3 <CJK>
-+<U7DB2> /x96/xd4 <CJK>
-+<U8017> /x96/xd5 <CJK>
-+<U8499> /x96/xd6 <CJK>
-+<U5132> /x96/xd7 <CJK>
-+<U6728> /x96/xd8 <CJK>
-+<U9ED9> /x96/xd9 <CJK>
-+<U76EE> /x96/xda <CJK>
-+<U6762> /x96/xdb <CJK>
-+<U52FF> /x96/xdc <CJK>
-+<U9905> /x96/xdd <CJK>
-+<U5C24> /x96/xde <CJK>
-+<U623B> /x96/xdf <CJK>
-+<U7C7E> /x96/xe0 <CJK>
-+<U8CB0> /x96/xe1 <CJK>
-+<U554F> /x96/xe2 <CJK>
-+<U60B6> /x96/xe3 <CJK>
-+<U7D0B> /x96/xe4 <CJK>
-+<U9580> /x96/xe5 <CJK>
-+<U5301> /x96/xe6 <CJK>
-+<U4E5F> /x96/xe7 <CJK>
-+<U51B6> /x96/xe8 <CJK>
-+<U591C> /x96/xe9 <CJK>
-+<U723A> /x96/xea <CJK>
-+<U8036> /x96/xeb <CJK>
-+<U91CE> /x96/xec <CJK>
-+<U5F25> /x96/xed <CJK>
-+<U77E2> /x96/xee <CJK>
-+<U5384> /x96/xef <CJK>
-+<U5F79> /x96/xf0 <CJK>
-+<U7D04> /x96/xf1 <CJK>
-+<U85AC> /x96/xf2 <CJK>
-+<U8A33> /x96/xf3 <CJK>
-+<U8E8D> /x96/xf4 <CJK>
-+<U9756> /x96/xf5 <CJK>
-+<U67F3> /x96/xf6 <CJK>
-+<U85AE> /x96/xf7 <CJK>
-+<U9453> /x96/xf8 <CJK>
-+<U6109> /x96/xf9 <CJK>
-+<U6108> /x96/xfa <CJK>
-+<U6CB9> /x96/xfb <CJK>
-+<U7652> /x96/xfc <CJK>
-+<U8AED> /x97/x40 <CJK>
-+<U8F38> /x97/x41 <CJK>
-+<U552F> /x97/x42 <CJK>
-+<U4F51> /x97/x43 <CJK>
-+<U512A> /x97/x44 <CJK>
-+<U52C7> /x97/x45 <CJK>
-+<U53CB> /x97/x46 <CJK>
-+<U5BA5> /x97/x47 <CJK>
-+<U5E7D> /x97/x48 <CJK>
-+<U60A0> /x97/x49 <CJK>
-+<U6182> /x97/x4a <CJK>
-+<U63D6> /x97/x4b <CJK>
-+<U6709> /x97/x4c <CJK>
-+<U67DA> /x97/x4d <CJK>
-+<U6E67> /x97/x4e <CJK>
-+<U6D8C> /x97/x4f <CJK>
-+<U7336> /x97/x50 <CJK>
-+<U7337> /x97/x51 <CJK>
-+<U7531> /x97/x52 <CJK>
-+<U7950> /x97/x53 <CJK>
-+<U88D5> /x97/x54 <CJK>
-+<U8A98> /x97/x55 <CJK>
-+<U904A> /x97/x56 <CJK>
-+<U9091> /x97/x57 <CJK>
-+<U90F5> /x97/x58 <CJK>
-+<U96C4> /x97/x59 <CJK>
-+<U878D> /x97/x5a <CJK>
-+<U5915> /x97/x5b <CJK>
-+<U4E88> /x97/x5c <CJK>
-+<U4F59> /x97/x5d <CJK>
-+<U4E0E> /x97/x5e <CJK>
-+<U8A89> /x97/x5f <CJK>
-+<U8F3F> /x97/x60 <CJK>
-+<U9810> /x97/x61 <CJK>
-+<U50AD> /x97/x62 <CJK>
-+<U5E7C> /x97/x63 <CJK>
-+<U5996> /x97/x64 <CJK>
-+<U5BB9> /x97/x65 <CJK>
-+<U5EB8> /x97/x66 <CJK>
-+<U63DA> /x97/x67 <CJK>
-+<U63FA> /x97/x68 <CJK>
-+<U64C1> /x97/x69 <CJK>
-+<U66DC> /x97/x6a <CJK>
-+<U694A> /x97/x6b <CJK>
-+<U69D8> /x97/x6c <CJK>
-+<U6D0B> /x97/x6d <CJK>
-+<U6EB6> /x97/x6e <CJK>
-+<U7194> /x97/x6f <CJK>
-+<U7528> /x97/x70 <CJK>
-+<U7AAF> /x97/x71 <CJK>
-+<U7F8A> /x97/x72 <CJK>
-+<U8000> /x97/x73 <CJK>
-+<U8449> /x97/x74 <CJK>
-+<U84C9> /x97/x75 <CJK>
-+<U8981> /x97/x76 <CJK>
-+<U8B21> /x97/x77 <CJK>
-+<U8E0A> /x97/x78 <CJK>
-+<U9065> /x97/x79 <CJK>
-+<U967D> /x97/x7a <CJK>
-+<U990A> /x97/x7b <CJK>
-+<U617E> /x97/x7c <CJK>
-+<U6291> /x97/x7d <CJK>
-+<U6B32> /x97/x7e <CJK>
-+<U6C83> /x97/x80 <CJK>
-+<U6D74> /x97/x81 <CJK>
-+<U7FCC> /x97/x82 <CJK>
-+<U7FFC> /x97/x83 <CJK>
-+<U6DC0> /x97/x84 <CJK>
-+<U7F85> /x97/x85 <CJK>
-+<U87BA> /x97/x86 <CJK>
-+<U88F8> /x97/x87 <CJK>
-+<U6765> /x97/x88 <CJK>
-+<U83B1> /x97/x89 <CJK>
-+<U983C> /x97/x8a <CJK>
-+<U96F7> /x97/x8b <CJK>
-+<U6D1B> /x97/x8c <CJK>
-+<U7D61> /x97/x8d <CJK>
-+<U843D> /x97/x8e <CJK>
-+<U916A> /x97/x8f <CJK>
-+<U4E71> /x97/x90 <CJK>
-+<U5375> /x97/x91 <CJK>
-+<U5D50> /x97/x92 <CJK>
-+<U6B04> /x97/x93 <CJK>
-+<U6FEB> /x97/x94 <CJK>
-+<U85CD> /x97/x95 <CJK>
-+<U862D> /x97/x96 <CJK>
-+<U89A7> /x97/x97 <CJK>
-+<U5229> /x97/x98 <CJK>
-+<U540F> /x97/x99 <CJK>
-+<U5C65> /x97/x9a <CJK>
-+<U674E> /x97/x9b <CJK>
-+<U68A8> /x97/x9c <CJK>
-+<U7406> /x97/x9d <CJK>
-+<U7483> /x97/x9e <CJK>
-+<U75E2> /x97/x9f <CJK>
-+<U88CF> /x97/xa0 <CJK>
-+<U88E1> /x97/xa1 <CJK>
-+<U91CC> /x97/xa2 <CJK>
-+<U96E2> /x97/xa3 <CJK>
-+<U9678> /x97/xa4 <CJK>
-+<U5F8B> /x97/xa5 <CJK>
-+<U7387> /x97/xa6 <CJK>
-+<U7ACB> /x97/xa7 <CJK>
-+<U844E> /x97/xa8 <CJK>
-+<U63A0> /x97/xa9 <CJK>
-+<U7565> /x97/xaa <CJK>
-+<U5289> /x97/xab <CJK>
-+<U6D41> /x97/xac <CJK>
-+<U6E9C> /x97/xad <CJK>
-+<U7409> /x97/xae <CJK>
-+<U7559> /x97/xaf <CJK>
-+<U786B> /x97/xb0 <CJK>
-+<U7C92> /x97/xb1 <CJK>
-+<U9686> /x97/xb2 <CJK>
-+<U7ADC> /x97/xb3 <CJK>
-+<U9F8D> /x97/xb4 <CJK>
-+<U4FB6> /x97/xb5 <CJK>
-+<U616E> /x97/xb6 <CJK>
-+<U65C5> /x97/xb7 <CJK>
-+<U865C> /x97/xb8 <CJK>
-+<U4E86> /x97/xb9 <CJK>
-+<U4EAE> /x97/xba <CJK>
-+<U50DA> /x97/xbb <CJK>
-+<U4E21> /x97/xbc <CJK>
-+<U51CC> /x97/xbd <CJK>
-+<U5BEE> /x97/xbe <CJK>
-+<U6599> /x97/xbf <CJK>
-+<U6881> /x97/xc0 <CJK>
-+<U6DBC> /x97/xc1 <CJK>
-+<U731F> /x97/xc2 <CJK>
-+<U7642> /x97/xc3 <CJK>
-+<U77AD> /x97/xc4 <CJK>
-+<U7A1C> /x97/xc5 <CJK>
-+<U7CE7> /x97/xc6 <CJK>
-+<U826F> /x97/xc7 <CJK>
-+<U8AD2> /x97/xc8 <CJK>
-+<U907C> /x97/xc9 <CJK>
-+<U91CF> /x97/xca <CJK>
-+<U9675> /x97/xcb <CJK>
-+<U9818> /x97/xcc <CJK>
-+<U529B> /x97/xcd <CJK>
-+<U7DD1> /x97/xce <CJK>
-+<U502B> /x97/xcf <CJK>
-+<U5398> /x97/xd0 <CJK>
-+<U6797> /x97/xd1 <CJK>
-+<U6DCB> /x97/xd2 <CJK>
-+<U71D0> /x97/xd3 <CJK>
-+<U7433> /x97/xd4 <CJK>
-+<U81E8> /x97/xd5 <CJK>
-+<U8F2A> /x97/xd6 <CJK>
-+<U96A3> /x97/xd7 <CJK>
-+<U9C57> /x97/xd8 <CJK>
-+<U9E9F> /x97/xd9 <CJK>
-+<U7460> /x97/xda <CJK>
-+<U5841> /x97/xdb <CJK>
-+<U6D99> /x97/xdc <CJK>
-+<U7D2F> /x97/xdd <CJK>
-+<U985E> /x97/xde <CJK>
-+<U4EE4> /x97/xdf <CJK>
-+<U4F36> /x97/xe0 <CJK>
-+<U4F8B> /x97/xe1 <CJK>
-+<U51B7> /x97/xe2 <CJK>
-+<U52B1> /x97/xe3 <CJK>
-+<U5DBA> /x97/xe4 <CJK>
-+<U601C> /x97/xe5 <CJK>
-+<U73B2> /x97/xe6 <CJK>
-+<U793C> /x97/xe7 <CJK>
-+<U82D3> /x97/xe8 <CJK>
-+<U9234> /x97/xe9 <CJK>
-+<U96B7> /x97/xea <CJK>
-+<U96F6> /x97/xeb <CJK>
-+<U970A> /x97/xec <CJK>
-+<U9E97> /x97/xed <CJK>
-+<U9F62> /x97/xee <CJK>
-+<U66A6> /x97/xef <CJK>
-+<U6B74> /x97/xf0 <CJK>
-+<U5217> /x97/xf1 <CJK>
-+<U52A3> /x97/xf2 <CJK>
-+<U70C8> /x97/xf3 <CJK>
-+<U88C2> /x97/xf4 <CJK>
-+<U5EC9> /x97/xf5 <CJK>
-+<U604B> /x97/xf6 <CJK>
-+<U6190> /x97/xf7 <CJK>
-+<U6F23> /x97/xf8 <CJK>
-+<U7149> /x97/xf9 <CJK>
-+<U7C3E> /x97/xfa <CJK>
-+<U7DF4> /x97/xfb <CJK>
-+<U806F> /x97/xfc <CJK>
-+<U84EE> /x98/x40 <CJK>
-+<U9023> /x98/x41 <CJK>
-+<U932C> /x98/x42 <CJK>
-+<U5442> /x98/x43 <CJK>
-+<U9B6F> /x98/x44 <CJK>
-+<U6AD3> /x98/x45 <CJK>
-+<U7089> /x98/x46 <CJK>
-+<U8CC2> /x98/x47 <CJK>
-+<U8DEF> /x98/x48 <CJK>
-+<U9732> /x98/x49 <CJK>
-+<U52B4> /x98/x4a <CJK>
-+<U5A41> /x98/x4b <CJK>
-+<U5ECA> /x98/x4c <CJK>
-+<U5F04> /x98/x4d <CJK>
-+<U6717> /x98/x4e <CJK>
-+<U697C> /x98/x4f <CJK>
-+<U6994> /x98/x50 <CJK>
-+<U6D6A> /x98/x51 <CJK>
-+<U6F0F> /x98/x52 <CJK>
-+<U7262> /x98/x53 <CJK>
-+<U72FC> /x98/x54 <CJK>
-+<U7BED> /x98/x55 <CJK>
-+<U8001> /x98/x56 <CJK>
-+<U807E> /x98/x57 <CJK>
-+<U874B> /x98/x58 <CJK>
-+<U90CE> /x98/x59 <CJK>
-+<U516D> /x98/x5a <CJK>
-+<U9E93> /x98/x5b <CJK>
-+<U7984> /x98/x5c <CJK>
-+<U808B> /x98/x5d <CJK>
-+<U9332> /x98/x5e <CJK>
-+<U8AD6> /x98/x5f <CJK>
-+<U502D> /x98/x60 <CJK>
-+<U548C> /x98/x61 <CJK>
-+<U8A71> /x98/x62 <CJK>
-+<U6B6A> /x98/x63 <CJK>
-+<U8CC4> /x98/x64 <CJK>
-+<U8107> /x98/x65 <CJK>
-+<U60D1> /x98/x66 <CJK>
-+<U67A0> /x98/x67 <CJK>
-+<U9DF2> /x98/x68 <CJK>
-+<U4E99> /x98/x69 <CJK>
-+<U4E98> /x98/x6a <CJK>
-+<U9C10> /x98/x6b <CJK>
-+<U8A6B> /x98/x6c <CJK>
-+<U85C1> /x98/x6d <CJK>
-+<U8568> /x98/x6e <CJK>
-+<U6900> /x98/x6f <CJK>
-+<U6E7E> /x98/x70 <CJK>
-+<U7897> /x98/x71 <CJK>
-+<U8155> /x98/x72 <CJK>
-+<U5F0C> /x98/x9f <CJK>
-+<U4E10> /x98/xa0 <CJK>
-+<U4E15> /x98/xa1 <CJK>
-+<U4E2A> /x98/xa2 <CJK>
-+<U4E31> /x98/xa3 <CJK>
-+<U4E36> /x98/xa4 <CJK>
-+<U4E3C> /x98/xa5 <CJK>
-+<U4E3F> /x98/xa6 <CJK>
-+<U4E42> /x98/xa7 <CJK>
-+<U4E56> /x98/xa8 <CJK>
-+<U4E58> /x98/xa9 <CJK>
-+<U4E82> /x98/xaa <CJK>
-+<U4E85> /x98/xab <CJK>
-+<U8C6B> /x98/xac <CJK>
-+<U4E8A> /x98/xad <CJK>
-+<U8212> /x98/xae <CJK>
-+<U5F0D> /x98/xaf <CJK>
-+<U4E8E> /x98/xb0 <CJK>
-+<U4E9E> /x98/xb1 <CJK>
-+<U4E9F> /x98/xb2 <CJK>
-+<U4EA0> /x98/xb3 <CJK>
-+<U4EA2> /x98/xb4 <CJK>
-+<U4EB0> /x98/xb5 <CJK>
-+<U4EB3> /x98/xb6 <CJK>
-+<U4EB6> /x98/xb7 <CJK>
-+<U4ECE> /x98/xb8 <CJK>
-+<U4ECD> /x98/xb9 <CJK>
-+<U4EC4> /x98/xba <CJK>
-+<U4EC6> /x98/xbb <CJK>
-+<U4EC2> /x98/xbc <CJK>
-+<U4ED7> /x98/xbd <CJK>
-+<U4EDE> /x98/xbe <CJK>
-+<U4EED> /x98/xbf <CJK>
-+<U4EDF> /x98/xc0 <CJK>
-+<U4EF7> /x98/xc1 <CJK>
-+<U4F09> /x98/xc2 <CJK>
-+<U4F5A> /x98/xc3 <CJK>
-+<U4F30> /x98/xc4 <CJK>
-+<U4F5B> /x98/xc5 <CJK>
-+<U4F5D> /x98/xc6 <CJK>
-+<U4F57> /x98/xc7 <CJK>
-+<U4F47> /x98/xc8 <CJK>
-+<U4F76> /x98/xc9 <CJK>
-+<U4F88> /x98/xca <CJK>
-+<U4F8F> /x98/xcb <CJK>
-+<U4F98> /x98/xcc <CJK>
-+<U4F7B> /x98/xcd <CJK>
-+<U4F69> /x98/xce <CJK>
-+<U4F70> /x98/xcf <CJK>
-+<U4F91> /x98/xd0 <CJK>
-+<U4F6F> /x98/xd1 <CJK>
-+<U4F86> /x98/xd2 <CJK>
-+<U4F96> /x98/xd3 <CJK>
-+<U5118> /x98/xd4 <CJK>
-+<U4FD4> /x98/xd5 <CJK>
-+<U4FDF> /x98/xd6 <CJK>
-+<U4FCE> /x98/xd7 <CJK>
-+<U4FD8> /x98/xd8 <CJK>
-+<U4FDB> /x98/xd9 <CJK>
-+<U4FD1> /x98/xda <CJK>
-+<U4FDA> /x98/xdb <CJK>
-+<U4FD0> /x98/xdc <CJK>
-+<U4FE4> /x98/xdd <CJK>
-+<U4FE5> /x98/xde <CJK>
-+<U501A> /x98/xdf <CJK>
-+<U5028> /x98/xe0 <CJK>
-+<U5014> /x98/xe1 <CJK>
-+<U502A> /x98/xe2 <CJK>
-+<U5025> /x98/xe3 <CJK>
-+<U5005> /x98/xe4 <CJK>
-+<U4F1C> /x98/xe5 <CJK>
-+<U4FF6> /x98/xe6 <CJK>
-+<U5021> /x98/xe7 <CJK>
-+<U5029> /x98/xe8 <CJK>
-+<U502C> /x98/xe9 <CJK>
-+<U4FFE> /x98/xea <CJK>
-+<U4FEF> /x98/xeb <CJK>
-+<U5011> /x98/xec <CJK>
-+<U5006> /x98/xed <CJK>
-+<U5043> /x98/xee <CJK>
-+<U5047> /x98/xef <CJK>
-+<U6703> /x98/xf0 <CJK>
-+<U5055> /x98/xf1 <CJK>
-+<U5050> /x98/xf2 <CJK>
-+<U5048> /x98/xf3 <CJK>
-+<U505A> /x98/xf4 <CJK>
-+<U5056> /x98/xf5 <CJK>
-+<U506C> /x98/xf6 <CJK>
-+<U5078> /x98/xf7 <CJK>
-+<U5080> /x98/xf8 <CJK>
-+<U509A> /x98/xf9 <CJK>
-+<U5085> /x98/xfa <CJK>
-+<U50B4> /x98/xfb <CJK>
-+<U50B2> /x98/xfc <CJK>
-+<U50C9> /x99/x40 <CJK>
-+<U50CA> /x99/x41 <CJK>
-+<U50B3> /x99/x42 <CJK>
-+<U50C2> /x99/x43 <CJK>
-+<U50D6> /x99/x44 <CJK>
-+<U50DE> /x99/x45 <CJK>
-+<U50E5> /x99/x46 <CJK>
-+<U50ED> /x99/x47 <CJK>
-+<U50E3> /x99/x48 <CJK>
-+<U50EE> /x99/x49 <CJK>
-+<U50F9> /x99/x4a <CJK>
-+<U50F5> /x99/x4b <CJK>
-+<U5109> /x99/x4c <CJK>
-+<U5101> /x99/x4d <CJK>
-+<U5102> /x99/x4e <CJK>
-+<U5116> /x99/x4f <CJK>
-+<U5115> /x99/x50 <CJK>
-+<U5114> /x99/x51 <CJK>
-+<U511A> /x99/x52 <CJK>
-+<U5121> /x99/x53 <CJK>
-+<U513A> /x99/x54 <CJK>
-+<U5137> /x99/x55 <CJK>
-+<U513C> /x99/x56 <CJK>
-+<U513B> /x99/x57 <CJK>
-+<U513F> /x99/x58 <CJK>
-+<U5140> /x99/x59 <CJK>
-+<U5152> /x99/x5a <CJK>
-+<U514C> /x99/x5b <CJK>
-+<U5154> /x99/x5c <CJK>
-+<U5162> /x99/x5d <CJK>
-+<U7AF8> /x99/x5e <CJK>
-+<U5169> /x99/x5f <CJK>
-+<U516A> /x99/x60 <CJK>
-+<U516E> /x99/x61 <CJK>
-+<U5180> /x99/x62 <CJK>
-+<U5182> /x99/x63 <CJK>
-+<U56D8> /x99/x64 <CJK>
-+<U518C> /x99/x65 <CJK>
-+<U5189> /x99/x66 <CJK>
-+<U518F> /x99/x67 <CJK>
-+<U5191> /x99/x68 <CJK>
-+<U5193> /x99/x69 <CJK>
-+<U5195> /x99/x6a <CJK>
-+<U5196> /x99/x6b <CJK>
-+<U51A4> /x99/x6c <CJK>
-+<U51A6> /x99/x6d <CJK>
-+<U51A2> /x99/x6e <CJK>
-+<U51A9> /x99/x6f <CJK>
-+<U51AA> /x99/x70 <CJK>
-+<U51AB> /x99/x71 <CJK>
-+<U51B3> /x99/x72 <CJK>
-+<U51B1> /x99/x73 <CJK>
-+<U51B2> /x99/x74 <CJK>
-+<U51B0> /x99/x75 <CJK>
-+<U51B5> /x99/x76 <CJK>
-+<U51BD> /x99/x77 <CJK>
-+<U51C5> /x99/x78 <CJK>
-+<U51C9> /x99/x79 <CJK>
-+<U51DB> /x99/x7a <CJK>
-+<U51E0> /x99/x7b <CJK>
-+<U8655> /x99/x7c <CJK>
-+<U51E9> /x99/x7d <CJK>
-+<U51ED> /x99/x7e <CJK>
-+<U51F0> /x99/x80 <CJK>
-+<U51F5> /x99/x81 <CJK>
-+<U51FE> /x99/x82 <CJK>
-+<U5204> /x99/x83 <CJK>
-+<U520B> /x99/x84 <CJK>
-+<U5214> /x99/x85 <CJK>
-+<U520E> /x99/x86 <CJK>
-+<U5227> /x99/x87 <CJK>
-+<U522A> /x99/x88 <CJK>
-+<U522E> /x99/x89 <CJK>
-+<U5233> /x99/x8a <CJK>
-+<U5239> /x99/x8b <CJK>
-+<U524F> /x99/x8c <CJK>
-+<U5244> /x99/x8d <CJK>
-+<U524B> /x99/x8e <CJK>
-+<U524C> /x99/x8f <CJK>
-+<U525E> /x99/x90 <CJK>
-+<U5254> /x99/x91 <CJK>
-+<U526A> /x99/x92 <CJK>
-+<U5274> /x99/x93 <CJK>
-+<U5269> /x99/x94 <CJK>
-+<U5273> /x99/x95 <CJK>
-+<U527F> /x99/x96 <CJK>
-+<U527D> /x99/x97 <CJK>
-+<U528D> /x99/x98 <CJK>
-+<U5294> /x99/x99 <CJK>
-+<U5292> /x99/x9a <CJK>
-+<U5271> /x99/x9b <CJK>
-+<U5288> /x99/x9c <CJK>
-+<U5291> /x99/x9d <CJK>
-+<U8FA8> /x99/x9e <CJK>
-+<U8FA7> /x99/x9f <CJK>
-+<U52AC> /x99/xa0 <CJK>
-+<U52AD> /x99/xa1 <CJK>
-+<U52BC> /x99/xa2 <CJK>
-+<U52B5> /x99/xa3 <CJK>
-+<U52C1> /x99/xa4 <CJK>
-+<U52CD> /x99/xa5 <CJK>
-+<U52D7> /x99/xa6 <CJK>
-+<U52DE> /x99/xa7 <CJK>
-+<U52E3> /x99/xa8 <CJK>
-+<U52E6> /x99/xa9 <CJK>
-+<U98ED> /x99/xaa <CJK>
-+<U52E0> /x99/xab <CJK>
-+<U52F3> /x99/xac <CJK>
-+<U52F5> /x99/xad <CJK>
-+<U52F8> /x99/xae <CJK>
-+<U52F9> /x99/xaf <CJK>
-+<U5306> /x99/xb0 <CJK>
-+<U5308> /x99/xb1 <CJK>
-+<U7538> /x99/xb2 <CJK>
-+<U530D> /x99/xb3 <CJK>
-+<U5310> /x99/xb4 <CJK>
-+<U530F> /x99/xb5 <CJK>
-+<U5315> /x99/xb6 <CJK>
-+<U531A> /x99/xb7 <CJK>
-+<U5323> /x99/xb8 <CJK>
-+<U532F> /x99/xb9 <CJK>
-+<U5331> /x99/xba <CJK>
-+<U5333> /x99/xbb <CJK>
-+<U5338> /x99/xbc <CJK>
-+<U5340> /x99/xbd <CJK>
-+<U5346> /x99/xbe <CJK>
-+<U5345> /x99/xbf <CJK>
-+<U4E17> /x99/xc0 <CJK>
-+<U5349> /x99/xc1 <CJK>
-+<U534D> /x99/xc2 <CJK>
-+<U51D6> /x99/xc3 <CJK>
-+<U535E> /x99/xc4 <CJK>
-+<U5369> /x99/xc5 <CJK>
-+<U536E> /x99/xc6 <CJK>
-+<U5918> /x99/xc7 <CJK>
-+<U537B> /x99/xc8 <CJK>
-+<U5377> /x99/xc9 <CJK>
-+<U5382> /x99/xca <CJK>
-+<U5396> /x99/xcb <CJK>
-+<U53A0> /x99/xcc <CJK>
-+<U53A6> /x99/xcd <CJK>
-+<U53A5> /x99/xce <CJK>
-+<U53AE> /x99/xcf <CJK>
-+<U53B0> /x99/xd0 <CJK>
-+<U53B6> /x99/xd1 <CJK>
-+<U53C3> /x99/xd2 <CJK>
-+<U7C12> /x99/xd3 <CJK>
-+<U96D9> /x99/xd4 <CJK>
-+<U53DF> /x99/xd5 <CJK>
-+<U66FC> /x99/xd6 <CJK>
-+<U71EE> /x99/xd7 <CJK>
-+<U53EE> /x99/xd8 <CJK>
-+<U53E8> /x99/xd9 <CJK>
-+<U53ED> /x99/xda <CJK>
-+<U53FA> /x99/xdb <CJK>
-+<U5401> /x99/xdc <CJK>
-+<U543D> /x99/xdd <CJK>
-+<U5440> /x99/xde <CJK>
-+<U542C> /x99/xdf <CJK>
-+<U542D> /x99/xe0 <CJK>
-+<U543C> /x99/xe1 <CJK>
-+<U542E> /x99/xe2 <CJK>
-+<U5436> /x99/xe3 <CJK>
-+<U5429> /x99/xe4 <CJK>
-+<U541D> /x99/xe5 <CJK>
-+<U544E> /x99/xe6 <CJK>
-+<U548F> /x99/xe7 <CJK>
-+<U5475> /x99/xe8 <CJK>
-+<U548E> /x99/xe9 <CJK>
-+<U545F> /x99/xea <CJK>
-+<U5471> /x99/xeb <CJK>
-+<U5477> /x99/xec <CJK>
-+<U5470> /x99/xed <CJK>
-+<U5492> /x99/xee <CJK>
-+<U547B> /x99/xef <CJK>
-+<U5480> /x99/xf0 <CJK>
-+<U5476> /x99/xf1 <CJK>
-+<U5484> /x99/xf2 <CJK>
-+<U5490> /x99/xf3 <CJK>
-+<U5486> /x99/xf4 <CJK>
-+<U54C7> /x99/xf5 <CJK>
-+<U54A2> /x99/xf6 <CJK>
-+<U54B8> /x99/xf7 <CJK>
-+<U54A5> /x99/xf8 <CJK>
-+<U54AC> /x99/xf9 <CJK>
-+<U54C4> /x99/xfa <CJK>
-+<U54C8> /x99/xfb <CJK>
-+<U54A8> /x99/xfc <CJK>
-+<U54AB> /x9a/x40 <CJK>
-+<U54C2> /x9a/x41 <CJK>
-+<U54A4> /x9a/x42 <CJK>
-+<U54BE> /x9a/x43 <CJK>
-+<U54BC> /x9a/x44 <CJK>
-+<U54D8> /x9a/x45 <CJK>
-+<U54E5> /x9a/x46 <CJK>
-+<U54E6> /x9a/x47 <CJK>
-+<U550F> /x9a/x48 <CJK>
-+<U5514> /x9a/x49 <CJK>
-+<U54FD> /x9a/x4a <CJK>
-+<U54EE> /x9a/x4b <CJK>
-+<U54ED> /x9a/x4c <CJK>
-+<U54FA> /x9a/x4d <CJK>
-+<U54E2> /x9a/x4e <CJK>
-+<U5539> /x9a/x4f <CJK>
-+<U5540> /x9a/x50 <CJK>
-+<U5563> /x9a/x51 <CJK>
-+<U554C> /x9a/x52 <CJK>
-+<U552E> /x9a/x53 <CJK>
-+<U555C> /x9a/x54 <CJK>
-+<U5545> /x9a/x55 <CJK>
-+<U5556> /x9a/x56 <CJK>
-+<U5557> /x9a/x57 <CJK>
-+<U5538> /x9a/x58 <CJK>
-+<U5533> /x9a/x59 <CJK>
-+<U555D> /x9a/x5a <CJK>
-+<U5599> /x9a/x5b <CJK>
-+<U5580> /x9a/x5c <CJK>
-+<U54AF> /x9a/x5d <CJK>
-+<U558A> /x9a/x5e <CJK>
-+<U559F> /x9a/x5f <CJK>
-+<U557B> /x9a/x60 <CJK>
-+<U557E> /x9a/x61 <CJK>
-+<U5598> /x9a/x62 <CJK>
-+<U559E> /x9a/x63 <CJK>
-+<U55AE> /x9a/x64 <CJK>
-+<U557C> /x9a/x65 <CJK>
-+<U5583> /x9a/x66 <CJK>
-+<U55A9> /x9a/x67 <CJK>
-+<U5587> /x9a/x68 <CJK>
-+<U55A8> /x9a/x69 <CJK>
-+<U55DA> /x9a/x6a <CJK>
-+<U55C5> /x9a/x6b <CJK>
-+<U55DF> /x9a/x6c <CJK>
-+<U55C4> /x9a/x6d <CJK>
-+<U55DC> /x9a/x6e <CJK>
-+<U55E4> /x9a/x6f <CJK>
-+<U55D4> /x9a/x70 <CJK>
-+<U5614> /x9a/x71 <CJK>
-+<U55F7> /x9a/x72 <CJK>
-+<U5616> /x9a/x73 <CJK>
-+<U55FE> /x9a/x74 <CJK>
-+<U55FD> /x9a/x75 <CJK>
-+<U561B> /x9a/x76 <CJK>
-+<U55F9> /x9a/x77 <CJK>
-+<U564E> /x9a/x78 <CJK>
-+<U5650> /x9a/x79 <CJK>
-+<U71DF> /x9a/x7a <CJK>
-+<U5634> /x9a/x7b <CJK>
-+<U5636> /x9a/x7c <CJK>
-+<U5632> /x9a/x7d <CJK>
-+<U5638> /x9a/x7e <CJK>
-+<U566B> /x9a/x80 <CJK>
-+<U5664> /x9a/x81 <CJK>
-+<U562F> /x9a/x82 <CJK>
-+<U566C> /x9a/x83 <CJK>
-+<U566A> /x9a/x84 <CJK>
-+<U5686> /x9a/x85 <CJK>
-+<U5680> /x9a/x86 <CJK>
-+<U568A> /x9a/x87 <CJK>
-+<U56A0> /x9a/x88 <CJK>
-+<U5694> /x9a/x89 <CJK>
-+<U568F> /x9a/x8a <CJK>
-+<U56A5> /x9a/x8b <CJK>
-+<U56AE> /x9a/x8c <CJK>
-+<U56B6> /x9a/x8d <CJK>
-+<U56B4> /x9a/x8e <CJK>
-+<U56C2> /x9a/x8f <CJK>
-+<U56BC> /x9a/x90 <CJK>
-+<U56C1> /x9a/x91 <CJK>
-+<U56C3> /x9a/x92 <CJK>
-+<U56C0> /x9a/x93 <CJK>
-+<U56C8> /x9a/x94 <CJK>
-+<U56CE> /x9a/x95 <CJK>
-+<U56D1> /x9a/x96 <CJK>
-+<U56D3> /x9a/x97 <CJK>
-+<U56D7> /x9a/x98 <CJK>
-+<U56EE> /x9a/x99 <CJK>
-+<U56F9> /x9a/x9a <CJK>
-+<U5700> /x9a/x9b <CJK>
-+<U56FF> /x9a/x9c <CJK>
-+<U5704> /x9a/x9d <CJK>
-+<U5709> /x9a/x9e <CJK>
-+<U5708> /x9a/x9f <CJK>
-+<U570B> /x9a/xa0 <CJK>
-+<U570D> /x9a/xa1 <CJK>
-+<U5713> /x9a/xa2 <CJK>
-+<U5718> /x9a/xa3 <CJK>
-+<U5716> /x9a/xa4 <CJK>
-+<U55C7> /x9a/xa5 <CJK>
-+<U571C> /x9a/xa6 <CJK>
-+<U5726> /x9a/xa7 <CJK>
-+<U5737> /x9a/xa8 <CJK>
-+<U5738> /x9a/xa9 <CJK>
-+<U574E> /x9a/xaa <CJK>
-+<U573B> /x9a/xab <CJK>
-+<U5740> /x9a/xac <CJK>
-+<U574F> /x9a/xad <CJK>
-+<U5769> /x9a/xae <CJK>
-+<U57C0> /x9a/xaf <CJK>
-+<U5788> /x9a/xb0 <CJK>
-+<U5761> /x9a/xb1 <CJK>
-+<U577F> /x9a/xb2 <CJK>
-+<U5789> /x9a/xb3 <CJK>
-+<U5793> /x9a/xb4 <CJK>
-+<U57A0> /x9a/xb5 <CJK>
-+<U57B3> /x9a/xb6 <CJK>
-+<U57A4> /x9a/xb7 <CJK>
-+<U57AA> /x9a/xb8 <CJK>
-+<U57B0> /x9a/xb9 <CJK>
-+<U57C3> /x9a/xba <CJK>
-+<U57C6> /x9a/xbb <CJK>
-+<U57D4> /x9a/xbc <CJK>
-+<U57D2> /x9a/xbd <CJK>
-+<U57D3> /x9a/xbe <CJK>
-+<U580A> /x9a/xbf <CJK>
-+<U57D6> /x9a/xc0 <CJK>
-+<U57E3> /x9a/xc1 <CJK>
-+<U580B> /x9a/xc2 <CJK>
-+<U5819> /x9a/xc3 <CJK>
-+<U581D> /x9a/xc4 <CJK>
-+<U5872> /x9a/xc5 <CJK>
-+<U5821> /x9a/xc6 <CJK>
-+<U5862> /x9a/xc7 <CJK>
-+<U584B> /x9a/xc8 <CJK>
-+<U5870> /x9a/xc9 <CJK>
-+<U6BC0> /x9a/xca <CJK>
-+<U5852> /x9a/xcb <CJK>
-+<U583D> /x9a/xcc <CJK>
-+<U5879> /x9a/xcd <CJK>
-+<U5885> /x9a/xce <CJK>
-+<U58B9> /x9a/xcf <CJK>
-+<U589F> /x9a/xd0 <CJK>
-+<U58AB> /x9a/xd1 <CJK>
-+<U58BA> /x9a/xd2 <CJK>
-+<U58DE> /x9a/xd3 <CJK>
-+<U58BB> /x9a/xd4 <CJK>
-+<U58B8> /x9a/xd5 <CJK>
-+<U58AE> /x9a/xd6 <CJK>
-+<U58C5> /x9a/xd7 <CJK>
-+<U58D3> /x9a/xd8 <CJK>
-+<U58D1> /x9a/xd9 <CJK>
-+<U58D7> /x9a/xda <CJK>
-+<U58D9> /x9a/xdb <CJK>
-+<U58D8> /x9a/xdc <CJK>
-+<U58E5> /x9a/xdd <CJK>
-+<U58DC> /x9a/xde <CJK>
-+<U58E4> /x9a/xdf <CJK>
-+<U58DF> /x9a/xe0 <CJK>
-+<U58EF> /x9a/xe1 <CJK>
-+<U58FA> /x9a/xe2 <CJK>
-+<U58F9> /x9a/xe3 <CJK>
-+<U58FB> /x9a/xe4 <CJK>
-+<U58FC> /x9a/xe5 <CJK>
-+<U58FD> /x9a/xe6 <CJK>
-+<U5902> /x9a/xe7 <CJK>
-+<U590A> /x9a/xe8 <CJK>
-+<U5910> /x9a/xe9 <CJK>
-+<U591B> /x9a/xea <CJK>
-+<U68A6> /x9a/xeb <CJK>
-+<U5925> /x9a/xec <CJK>
-+<U592C> /x9a/xed <CJK>
-+<U592D> /x9a/xee <CJK>
-+<U5932> /x9a/xef <CJK>
-+<U5938> /x9a/xf0 <CJK>
-+<U593E> /x9a/xf1 <CJK>
-+<U7AD2> /x9a/xf2 <CJK>
-+<U5955> /x9a/xf3 <CJK>
-+<U5950> /x9a/xf4 <CJK>
-+<U594E> /x9a/xf5 <CJK>
-+<U595A> /x9a/xf6 <CJK>
-+<U5958> /x9a/xf7 <CJK>
-+<U5962> /x9a/xf8 <CJK>
-+<U5960> /x9a/xf9 <CJK>
-+<U5967> /x9a/xfa <CJK>
-+<U596C> /x9a/xfb <CJK>
-+<U5969> /x9a/xfc <CJK>
-+<U5978> /x9b/x40 <CJK>
-+<U5981> /x9b/x41 <CJK>
-+<U599D> /x9b/x42 <CJK>
-+<U4F5E> /x9b/x43 <CJK>
-+<U4FAB> /x9b/x44 <CJK>
-+<U59A3> /x9b/x45 <CJK>
-+<U59B2> /x9b/x46 <CJK>
-+<U59C6> /x9b/x47 <CJK>
-+<U59E8> /x9b/x48 <CJK>
-+<U59DC> /x9b/x49 <CJK>
-+<U598D> /x9b/x4a <CJK>
-+<U59D9> /x9b/x4b <CJK>
-+<U59DA> /x9b/x4c <CJK>
-+<U5A25> /x9b/x4d <CJK>
-+<U5A1F> /x9b/x4e <CJK>
-+<U5A11> /x9b/x4f <CJK>
-+<U5A1C> /x9b/x50 <CJK>
-+<U5A09> /x9b/x51 <CJK>
-+<U5A1A> /x9b/x52 <CJK>
-+<U5A40> /x9b/x53 <CJK>
-+<U5A6C> /x9b/x54 <CJK>
-+<U5A49> /x9b/x55 <CJK>
-+<U5A35> /x9b/x56 <CJK>
-+<U5A36> /x9b/x57 <CJK>
-+<U5A62> /x9b/x58 <CJK>
-+<U5A6A> /x9b/x59 <CJK>
-+<U5A9A> /x9b/x5a <CJK>
-+<U5ABC> /x9b/x5b <CJK>
-+<U5ABE> /x9b/x5c <CJK>
-+<U5ACB> /x9b/x5d <CJK>
-+<U5AC2> /x9b/x5e <CJK>
-+<U5ABD> /x9b/x5f <CJK>
-+<U5AE3> /x9b/x60 <CJK>
-+<U5AD7> /x9b/x61 <CJK>
-+<U5AE6> /x9b/x62 <CJK>
-+<U5AE9> /x9b/x63 <CJK>
-+<U5AD6> /x9b/x64 <CJK>
-+<U5AFA> /x9b/x65 <CJK>
-+<U5AFB> /x9b/x66 <CJK>
-+<U5B0C> /x9b/x67 <CJK>
-+<U5B0B> /x9b/x68 <CJK>
-+<U5B16> /x9b/x69 <CJK>
-+<U5B32> /x9b/x6a <CJK>
-+<U5AD0> /x9b/x6b <CJK>
-+<U5B2A> /x9b/x6c <CJK>
-+<U5B36> /x9b/x6d <CJK>
-+<U5B3E> /x9b/x6e <CJK>
-+<U5B43> /x9b/x6f <CJK>
-+<U5B45> /x9b/x70 <CJK>
-+<U5B40> /x9b/x71 <CJK>
-+<U5B51> /x9b/x72 <CJK>
-+<U5B55> /x9b/x73 <CJK>
-+<U5B5A> /x9b/x74 <CJK>
-+<U5B5B> /x9b/x75 <CJK>
-+<U5B65> /x9b/x76 <CJK>
-+<U5B69> /x9b/x77 <CJK>
-+<U5B70> /x9b/x78 <CJK>
-+<U5B73> /x9b/x79 <CJK>
-+<U5B75> /x9b/x7a <CJK>
-+<U5B78> /x9b/x7b <CJK>
-+<U6588> /x9b/x7c <CJK>
-+<U5B7A> /x9b/x7d <CJK>
-+<U5B80> /x9b/x7e <CJK>
-+<U5B83> /x9b/x80 <CJK>
-+<U5BA6> /x9b/x81 <CJK>
-+<U5BB8> /x9b/x82 <CJK>
-+<U5BC3> /x9b/x83 <CJK>
-+<U5BC7> /x9b/x84 <CJK>
-+<U5BC9> /x9b/x85 <CJK>
-+<U5BD4> /x9b/x86 <CJK>
-+<U5BD0> /x9b/x87 <CJK>
-+<U5BE4> /x9b/x88 <CJK>
-+<U5BE6> /x9b/x89 <CJK>
-+<U5BE2> /x9b/x8a <CJK>
-+<U5BDE> /x9b/x8b <CJK>
-+<U5BE5> /x9b/x8c <CJK>
-+<U5BEB> /x9b/x8d <CJK>
-+<U5BF0> /x9b/x8e <CJK>
-+<U5BF6> /x9b/x8f <CJK>
-+<U5BF3> /x9b/x90 <CJK>
-+<U5C05> /x9b/x91 <CJK>
-+<U5C07> /x9b/x92 <CJK>
-+<U5C08> /x9b/x93 <CJK>
-+<U5C0D> /x9b/x94 <CJK>
-+<U5C13> /x9b/x95 <CJK>
-+<U5C20> /x9b/x96 <CJK>
-+<U5C22> /x9b/x97 <CJK>
-+<U5C28> /x9b/x98 <CJK>
-+<U5C38> /x9b/x99 <CJK>
-+<U5C39> /x9b/x9a <CJK>
-+<U5C41> /x9b/x9b <CJK>
-+<U5C46> /x9b/x9c <CJK>
-+<U5C4E> /x9b/x9d <CJK>
-+<U5C53> /x9b/x9e <CJK>
-+<U5C50> /x9b/x9f <CJK>
-+<U5C4F> /x9b/xa0 <CJK>
-+<U5B71> /x9b/xa1 <CJK>
-+<U5C6C> /x9b/xa2 <CJK>
-+<U5C6E> /x9b/xa3 <CJK>
-+<U4E62> /x9b/xa4 <CJK>
-+<U5C76> /x9b/xa5 <CJK>
-+<U5C79> /x9b/xa6 <CJK>
-+<U5C8C> /x9b/xa7 <CJK>
-+<U5C91> /x9b/xa8 <CJK>
-+<U5C94> /x9b/xa9 <CJK>
-+<U599B> /x9b/xaa <CJK>
-+<U5CAB> /x9b/xab <CJK>
-+<U5CBB> /x9b/xac <CJK>
-+<U5CB6> /x9b/xad <CJK>
-+<U5CBC> /x9b/xae <CJK>
-+<U5CB7> /x9b/xaf <CJK>
-+<U5CC5> /x9b/xb0 <CJK>
-+<U5CBE> /x9b/xb1 <CJK>
-+<U5CC7> /x9b/xb2 <CJK>
-+<U5CD9> /x9b/xb3 <CJK>
-+<U5CE9> /x9b/xb4 <CJK>
-+<U5CFD> /x9b/xb5 <CJK>
-+<U5CFA> /x9b/xb6 <CJK>
-+<U5CED> /x9b/xb7 <CJK>
-+<U5D8C> /x9b/xb8 <CJK>
-+<U5CEA> /x9b/xb9 <CJK>
-+<U5D0B> /x9b/xba <CJK>
-+<U5D15> /x9b/xbb <CJK>
-+<U5D17> /x9b/xbc <CJK>
-+<U5D5C> /x9b/xbd <CJK>
-+<U5D1F> /x9b/xbe <CJK>
-+<U5D1B> /x9b/xbf <CJK>
-+<U5D11> /x9b/xc0 <CJK>
-+<U5D14> /x9b/xc1 <CJK>
-+<U5D22> /x9b/xc2 <CJK>
-+<U5D1A> /x9b/xc3 <CJK>
-+<U5D19> /x9b/xc4 <CJK>
-+<U5D18> /x9b/xc5 <CJK>
-+<U5D4C> /x9b/xc6 <CJK>
-+<U5D52> /x9b/xc7 <CJK>
-+<U5D4E> /x9b/xc8 <CJK>
-+<U5D4B> /x9b/xc9 <CJK>
-+<U5D6C> /x9b/xca <CJK>
-+<U5D73> /x9b/xcb <CJK>
-+<U5D76> /x9b/xcc <CJK>
-+<U5D87> /x9b/xcd <CJK>
-+<U5D84> /x9b/xce <CJK>
-+<U5D82> /x9b/xcf <CJK>
-+<U5DA2> /x9b/xd0 <CJK>
-+<U5D9D> /x9b/xd1 <CJK>
-+<U5DAC> /x9b/xd2 <CJK>
-+<U5DAE> /x9b/xd3 <CJK>
-+<U5DBD> /x9b/xd4 <CJK>
-+<U5D90> /x9b/xd5 <CJK>
-+<U5DB7> /x9b/xd6 <CJK>
-+<U5DBC> /x9b/xd7 <CJK>
-+<U5DC9> /x9b/xd8 <CJK>
-+<U5DCD> /x9b/xd9 <CJK>
-+<U5DD3> /x9b/xda <CJK>
-+<U5DD2> /x9b/xdb <CJK>
-+<U5DD6> /x9b/xdc <CJK>
-+<U5DDB> /x9b/xdd <CJK>
-+<U5DEB> /x9b/xde <CJK>
-+<U5DF2> /x9b/xdf <CJK>
-+<U5DF5> /x9b/xe0 <CJK>
-+<U5E0B> /x9b/xe1 <CJK>
-+<U5E1A> /x9b/xe2 <CJK>
-+<U5E19> /x9b/xe3 <CJK>
-+<U5E11> /x9b/xe4 <CJK>
-+<U5E1B> /x9b/xe5 <CJK>
-+<U5E36> /x9b/xe6 <CJK>
-+<U5E37> /x9b/xe7 <CJK>
-+<U5E44> /x9b/xe8 <CJK>
-+<U5E43> /x9b/xe9 <CJK>
-+<U5E40> /x9b/xea <CJK>
-+<U5E4E> /x9b/xeb <CJK>
-+<U5E57> /x9b/xec <CJK>
-+<U5E54> /x9b/xed <CJK>
-+<U5E5F> /x9b/xee <CJK>
-+<U5E62> /x9b/xef <CJK>
-+<U5E64> /x9b/xf0 <CJK>
-+<U5E47> /x9b/xf1 <CJK>
-+<U5E75> /x9b/xf2 <CJK>
-+<U5E76> /x9b/xf3 <CJK>
-+<U5E7A> /x9b/xf4 <CJK>
-+<U9EBC> /x9b/xf5 <CJK>
-+<U5E7F> /x9b/xf6 <CJK>
-+<U5EA0> /x9b/xf7 <CJK>
-+<U5EC1> /x9b/xf8 <CJK>
-+<U5EC2> /x9b/xf9 <CJK>
-+<U5EC8> /x9b/xfa <CJK>
-+<U5ED0> /x9b/xfb <CJK>
-+<U5ECF> /x9b/xfc <CJK>
-+<U5ED6> /x9c/x40 <CJK>
-+<U5EE3> /x9c/x41 <CJK>
-+<U5EDD> /x9c/x42 <CJK>
-+<U5EDA> /x9c/x43 <CJK>
-+<U5EDB> /x9c/x44 <CJK>
-+<U5EE2> /x9c/x45 <CJK>
-+<U5EE1> /x9c/x46 <CJK>
-+<U5EE8> /x9c/x47 <CJK>
-+<U5EE9> /x9c/x48 <CJK>
-+<U5EEC> /x9c/x49 <CJK>
-+<U5EF1> /x9c/x4a <CJK>
-+<U5EF3> /x9c/x4b <CJK>
-+<U5EF0> /x9c/x4c <CJK>
-+<U5EF4> /x9c/x4d <CJK>
-+<U5EF8> /x9c/x4e <CJK>
-+<U5EFE> /x9c/x4f <CJK>
-+<U5F03> /x9c/x50 <CJK>
-+<U5F09> /x9c/x51 <CJK>
-+<U5F5D> /x9c/x52 <CJK>
-+<U5F5C> /x9c/x53 <CJK>
-+<U5F0B> /x9c/x54 <CJK>
-+<U5F11> /x9c/x55 <CJK>
-+<U5F16> /x9c/x56 <CJK>
-+<U5F29> /x9c/x57 <CJK>
-+<U5F2D> /x9c/x58 <CJK>
-+<U5F38> /x9c/x59 <CJK>
-+<U5F41> /x9c/x5a <CJK>
-+<U5F48> /x9c/x5b <CJK>
-+<U5F4C> /x9c/x5c <CJK>
-+<U5F4E> /x9c/x5d <CJK>
-+<U5F2F> /x9c/x5e <CJK>
-+<U5F51> /x9c/x5f <CJK>
-+<U5F56> /x9c/x60 <CJK>
-+<U5F57> /x9c/x61 <CJK>
-+<U5F59> /x9c/x62 <CJK>
-+<U5F61> /x9c/x63 <CJK>
-+<U5F6D> /x9c/x64 <CJK>
-+<U5F73> /x9c/x65 <CJK>
-+<U5F77> /x9c/x66 <CJK>
-+<U5F83> /x9c/x67 <CJK>
-+<U5F82> /x9c/x68 <CJK>
-+<U5F7F> /x9c/x69 <CJK>
-+<U5F8A> /x9c/x6a <CJK>
-+<U5F88> /x9c/x6b <CJK>
-+<U5F91> /x9c/x6c <CJK>
-+<U5F87> /x9c/x6d <CJK>
-+<U5F9E> /x9c/x6e <CJK>
-+<U5F99> /x9c/x6f <CJK>
-+<U5F98> /x9c/x70 <CJK>
-+<U5FA0> /x9c/x71 <CJK>
-+<U5FA8> /x9c/x72 <CJK>
-+<U5FAD> /x9c/x73 <CJK>
-+<U5FBC> /x9c/x74 <CJK>
-+<U5FD6> /x9c/x75 <CJK>
-+<U5FFB> /x9c/x76 <CJK>
-+<U5FE4> /x9c/x77 <CJK>
-+<U5FF8> /x9c/x78 <CJK>
-+<U5FF1> /x9c/x79 <CJK>
-+<U5FDD> /x9c/x7a <CJK>
-+<U60B3> /x9c/x7b <CJK>
-+<U5FFF> /x9c/x7c <CJK>
-+<U6021> /x9c/x7d <CJK>
-+<U6060> /x9c/x7e <CJK>
-+<U6019> /x9c/x80 <CJK>
-+<U6010> /x9c/x81 <CJK>
-+<U6029> /x9c/x82 <CJK>
-+<U600E> /x9c/x83 <CJK>
-+<U6031> /x9c/x84 <CJK>
-+<U601B> /x9c/x85 <CJK>
-+<U6015> /x9c/x86 <CJK>
-+<U602B> /x9c/x87 <CJK>
-+<U6026> /x9c/x88 <CJK>
-+<U600F> /x9c/x89 <CJK>
-+<U603A> /x9c/x8a <CJK>
-+<U605A> /x9c/x8b <CJK>
-+<U6041> /x9c/x8c <CJK>
-+<U606A> /x9c/x8d <CJK>
-+<U6077> /x9c/x8e <CJK>
-+<U605F> /x9c/x8f <CJK>
-+<U604A> /x9c/x90 <CJK>
-+<U6046> /x9c/x91 <CJK>
-+<U604D> /x9c/x92 <CJK>
-+<U6063> /x9c/x93 <CJK>
-+<U6043> /x9c/x94 <CJK>
-+<U6064> /x9c/x95 <CJK>
-+<U6042> /x9c/x96 <CJK>
-+<U606C> /x9c/x97 <CJK>
-+<U606B> /x9c/x98 <CJK>
-+<U6059> /x9c/x99 <CJK>
-+<U6081> /x9c/x9a <CJK>
-+<U608D> /x9c/x9b <CJK>
-+<U60E7> /x9c/x9c <CJK>
-+<U6083> /x9c/x9d <CJK>
-+<U609A> /x9c/x9e <CJK>
-+<U6084> /x9c/x9f <CJK>
-+<U609B> /x9c/xa0 <CJK>
-+<U6096> /x9c/xa1 <CJK>
-+<U6097> /x9c/xa2 <CJK>
-+<U6092> /x9c/xa3 <CJK>
-+<U60A7> /x9c/xa4 <CJK>
-+<U608B> /x9c/xa5 <CJK>
-+<U60E1> /x9c/xa6 <CJK>
-+<U60B8> /x9c/xa7 <CJK>
-+<U60E0> /x9c/xa8 <CJK>
-+<U60D3> /x9c/xa9 <CJK>
-+<U60B4> /x9c/xaa <CJK>
-+<U5FF0> /x9c/xab <CJK>
-+<U60BD> /x9c/xac <CJK>
-+<U60C6> /x9c/xad <CJK>
-+<U60B5> /x9c/xae <CJK>
-+<U60D8> /x9c/xaf <CJK>
-+<U614D> /x9c/xb0 <CJK>
-+<U6115> /x9c/xb1 <CJK>
-+<U6106> /x9c/xb2 <CJK>
-+<U60F6> /x9c/xb3 <CJK>
-+<U60F7> /x9c/xb4 <CJK>
-+<U6100> /x9c/xb5 <CJK>
-+<U60F4> /x9c/xb6 <CJK>
-+<U60FA> /x9c/xb7 <CJK>
-+<U6103> /x9c/xb8 <CJK>
-+<U6121> /x9c/xb9 <CJK>
-+<U60FB> /x9c/xba <CJK>
-+<U60F1> /x9c/xbb <CJK>
-+<U610D> /x9c/xbc <CJK>
-+<U610E> /x9c/xbd <CJK>
-+<U6147> /x9c/xbe <CJK>
-+<U613E> /x9c/xbf <CJK>
-+<U6128> /x9c/xc0 <CJK>
-+<U6127> /x9c/xc1 <CJK>
-+<U614A> /x9c/xc2 <CJK>
-+<U613F> /x9c/xc3 <CJK>
-+<U613C> /x9c/xc4 <CJK>
-+<U612C> /x9c/xc5 <CJK>
-+<U6134> /x9c/xc6 <CJK>
-+<U613D> /x9c/xc7 <CJK>
-+<U6142> /x9c/xc8 <CJK>
-+<U6144> /x9c/xc9 <CJK>
-+<U6173> /x9c/xca <CJK>
-+<U6177> /x9c/xcb <CJK>
-+<U6158> /x9c/xcc <CJK>
-+<U6159> /x9c/xcd <CJK>
-+<U615A> /x9c/xce <CJK>
-+<U616B> /x9c/xcf <CJK>
-+<U6174> /x9c/xd0 <CJK>
-+<U616F> /x9c/xd1 <CJK>
-+<U6165> /x9c/xd2 <CJK>
-+<U6171> /x9c/xd3 <CJK>
-+<U615F> /x9c/xd4 <CJK>
-+<U615D> /x9c/xd5 <CJK>
-+<U6153> /x9c/xd6 <CJK>
-+<U6175> /x9c/xd7 <CJK>
-+<U6199> /x9c/xd8 <CJK>
-+<U6196> /x9c/xd9 <CJK>
-+<U6187> /x9c/xda <CJK>
-+<U61AC> /x9c/xdb <CJK>
-+<U6194> /x9c/xdc <CJK>
-+<U619A> /x9c/xdd <CJK>
-+<U618A> /x9c/xde <CJK>
-+<U6191> /x9c/xdf <CJK>
-+<U61AB> /x9c/xe0 <CJK>
-+<U61AE> /x9c/xe1 <CJK>
-+<U61CC> /x9c/xe2 <CJK>
-+<U61CA> /x9c/xe3 <CJK>
-+<U61C9> /x9c/xe4 <CJK>
-+<U61F7> /x9c/xe5 <CJK>
-+<U61C8> /x9c/xe6 <CJK>
-+<U61C3> /x9c/xe7 <CJK>
-+<U61C6> /x9c/xe8 <CJK>
-+<U61BA> /x9c/xe9 <CJK>
-+<U61CB> /x9c/xea <CJK>
-+<U7F79> /x9c/xeb <CJK>
-+<U61CD> /x9c/xec <CJK>
-+<U61E6> /x9c/xed <CJK>
-+<U61E3> /x9c/xee <CJK>
-+<U61F6> /x9c/xef <CJK>
-+<U61FA> /x9c/xf0 <CJK>
-+<U61F4> /x9c/xf1 <CJK>
-+<U61FF> /x9c/xf2 <CJK>
-+<U61FD> /x9c/xf3 <CJK>
-+<U61FC> /x9c/xf4 <CJK>
-+<U61FE> /x9c/xf5 <CJK>
-+<U6200> /x9c/xf6 <CJK>
-+<U6208> /x9c/xf7 <CJK>
-+<U6209> /x9c/xf8 <CJK>
-+<U620D> /x9c/xf9 <CJK>
-+<U620C> /x9c/xfa <CJK>
-+<U6214> /x9c/xfb <CJK>
-+<U621B> /x9c/xfc <CJK>
-+<U621E> /x9d/x40 <CJK>
-+<U6221> /x9d/x41 <CJK>
-+<U622A> /x9d/x42 <CJK>
-+<U622E> /x9d/x43 <CJK>
-+<U6230> /x9d/x44 <CJK>
-+<U6232> /x9d/x45 <CJK>
-+<U6233> /x9d/x46 <CJK>
-+<U6241> /x9d/x47 <CJK>
-+<U624E> /x9d/x48 <CJK>
-+<U625E> /x9d/x49 <CJK>
-+<U6263> /x9d/x4a <CJK>
-+<U625B> /x9d/x4b <CJK>
-+<U6260> /x9d/x4c <CJK>
-+<U6268> /x9d/x4d <CJK>
-+<U627C> /x9d/x4e <CJK>
-+<U6282> /x9d/x4f <CJK>
-+<U6289> /x9d/x50 <CJK>
-+<U627E> /x9d/x51 <CJK>
-+<U6292> /x9d/x52 <CJK>
-+<U6293> /x9d/x53 <CJK>
-+<U6296> /x9d/x54 <CJK>
-+<U62D4> /x9d/x55 <CJK>
-+<U6283> /x9d/x56 <CJK>
-+<U6294> /x9d/x57 <CJK>
-+<U62D7> /x9d/x58 <CJK>
-+<U62D1> /x9d/x59 <CJK>
-+<U62BB> /x9d/x5a <CJK>
-+<U62CF> /x9d/x5b <CJK>
-+<U62FF> /x9d/x5c <CJK>
-+<U62C6> /x9d/x5d <CJK>
-+<U64D4> /x9d/x5e <CJK>
-+<U62C8> /x9d/x5f <CJK>
-+<U62DC> /x9d/x60 <CJK>
-+<U62CC> /x9d/x61 <CJK>
-+<U62CA> /x9d/x62 <CJK>
-+<U62C2> /x9d/x63 <CJK>
-+<U62C7> /x9d/x64 <CJK>
-+<U629B> /x9d/x65 <CJK>
-+<U62C9> /x9d/x66 <CJK>
-+<U630C> /x9d/x67 <CJK>
-+<U62EE> /x9d/x68 <CJK>
-+<U62F1> /x9d/x69 <CJK>
-+<U6327> /x9d/x6a <CJK>
-+<U6302> /x9d/x6b <CJK>
-+<U6308> /x9d/x6c <CJK>
-+<U62EF> /x9d/x6d <CJK>
-+<U62F5> /x9d/x6e <CJK>
-+<U6350> /x9d/x6f <CJK>
-+<U633E> /x9d/x70 <CJK>
-+<U634D> /x9d/x71 <CJK>
-+<U641C> /x9d/x72 <CJK>
-+<U634F> /x9d/x73 <CJK>
-+<U6396> /x9d/x74 <CJK>
-+<U638E> /x9d/x75 <CJK>
-+<U6380> /x9d/x76 <CJK>
-+<U63AB> /x9d/x77 <CJK>
-+<U6376> /x9d/x78 <CJK>
-+<U63A3> /x9d/x79 <CJK>
-+<U638F> /x9d/x7a <CJK>
-+<U6389> /x9d/x7b <CJK>
-+<U639F> /x9d/x7c <CJK>
-+<U63B5> /x9d/x7d <CJK>
-+<U636B> /x9d/x7e <CJK>
-+<U6369> /x9d/x80 <CJK>
-+<U63BE> /x9d/x81 <CJK>
-+<U63E9> /x9d/x82 <CJK>
-+<U63C0> /x9d/x83 <CJK>
-+<U63C6> /x9d/x84 <CJK>
-+<U63E3> /x9d/x85 <CJK>
-+<U63C9> /x9d/x86 <CJK>
-+<U63D2> /x9d/x87 <CJK>
-+<U63F6> /x9d/x88 <CJK>
-+<U63C4> /x9d/x89 <CJK>
-+<U6416> /x9d/x8a <CJK>
-+<U6434> /x9d/x8b <CJK>
-+<U6406> /x9d/x8c <CJK>
-+<U6413> /x9d/x8d <CJK>
-+<U6426> /x9d/x8e <CJK>
-+<U6436> /x9d/x8f <CJK>
-+<U651D> /x9d/x90 <CJK>
-+<U6417> /x9d/x91 <CJK>
-+<U6428> /x9d/x92 <CJK>
-+<U640F> /x9d/x93 <CJK>
-+<U6467> /x9d/x94 <CJK>
-+<U646F> /x9d/x95 <CJK>
-+<U6476> /x9d/x96 <CJK>
-+<U644E> /x9d/x97 <CJK>
-+<U652A> /x9d/x98 <CJK>
-+<U6495> /x9d/x99 <CJK>
-+<U6493> /x9d/x9a <CJK>
-+<U64A5> /x9d/x9b <CJK>
-+<U64A9> /x9d/x9c <CJK>
-+<U6488> /x9d/x9d <CJK>
-+<U64BC> /x9d/x9e <CJK>
-+<U64DA> /x9d/x9f <CJK>
-+<U64D2> /x9d/xa0 <CJK>
-+<U64C5> /x9d/xa1 <CJK>
-+<U64C7> /x9d/xa2 <CJK>
-+<U64BB> /x9d/xa3 <CJK>
-+<U64D8> /x9d/xa4 <CJK>
-+<U64C2> /x9d/xa5 <CJK>
-+<U64F1> /x9d/xa6 <CJK>
-+<U64E7> /x9d/xa7 <CJK>
-+<U8209> /x9d/xa8 <CJK>
-+<U64E0> /x9d/xa9 <CJK>
-+<U64E1> /x9d/xaa <CJK>
-+<U62AC> /x9d/xab <CJK>
-+<U64E3> /x9d/xac <CJK>
-+<U64EF> /x9d/xad <CJK>
-+<U652C> /x9d/xae <CJK>
-+<U64F6> /x9d/xaf <CJK>
-+<U64F4> /x9d/xb0 <CJK>
-+<U64F2> /x9d/xb1 <CJK>
-+<U64FA> /x9d/xb2 <CJK>
-+<U6500> /x9d/xb3 <CJK>
-+<U64FD> /x9d/xb4 <CJK>
-+<U6518> /x9d/xb5 <CJK>
-+<U651C> /x9d/xb6 <CJK>
-+<U6505> /x9d/xb7 <CJK>
-+<U6524> /x9d/xb8 <CJK>
-+<U6523> /x9d/xb9 <CJK>
-+<U652B> /x9d/xba <CJK>
-+<U6534> /x9d/xbb <CJK>
-+<U6535> /x9d/xbc <CJK>
-+<U6537> /x9d/xbd <CJK>
-+<U6536> /x9d/xbe <CJK>
-+<U6538> /x9d/xbf <CJK>
-+<U754B> /x9d/xc0 <CJK>
-+<U6548> /x9d/xc1 <CJK>
-+<U6556> /x9d/xc2 <CJK>
-+<U6555> /x9d/xc3 <CJK>
-+<U654D> /x9d/xc4 <CJK>
-+<U6558> /x9d/xc5 <CJK>
-+<U655E> /x9d/xc6 <CJK>
-+<U655D> /x9d/xc7 <CJK>
-+<U6572> /x9d/xc8 <CJK>
-+<U6578> /x9d/xc9 <CJK>
-+<U6582> /x9d/xca <CJK>
-+<U6583> /x9d/xcb <CJK>
-+<U8B8A> /x9d/xcc <CJK>
-+<U659B> /x9d/xcd <CJK>
-+<U659F> /x9d/xce <CJK>
-+<U65AB> /x9d/xcf <CJK>
-+<U65B7> /x9d/xd0 <CJK>
-+<U65C3> /x9d/xd1 <CJK>
-+<U65C6> /x9d/xd2 <CJK>
-+<U65C1> /x9d/xd3 <CJK>
-+<U65C4> /x9d/xd4 <CJK>
-+<U65CC> /x9d/xd5 <CJK>
-+<U65D2> /x9d/xd6 <CJK>
-+<U65DB> /x9d/xd7 <CJK>
-+<U65D9> /x9d/xd8 <CJK>
-+<U65E0> /x9d/xd9 <CJK>
-+<U65E1> /x9d/xda <CJK>
-+<U65F1> /x9d/xdb <CJK>
-+<U6772> /x9d/xdc <CJK>
-+<U660A> /x9d/xdd <CJK>
-+<U6603> /x9d/xde <CJK>
-+<U65FB> /x9d/xdf <CJK>
-+<U6773> /x9d/xe0 <CJK>
-+<U6635> /x9d/xe1 <CJK>
-+<U6636> /x9d/xe2 <CJK>
-+<U6634> /x9d/xe3 <CJK>
-+<U661C> /x9d/xe4 <CJK>
-+<U664F> /x9d/xe5 <CJK>
-+<U6644> /x9d/xe6 <CJK>
-+<U6649> /x9d/xe7 <CJK>
-+<U6641> /x9d/xe8 <CJK>
-+<U665E> /x9d/xe9 <CJK>
-+<U665D> /x9d/xea <CJK>
-+<U6664> /x9d/xeb <CJK>
-+<U6667> /x9d/xec <CJK>
-+<U6668> /x9d/xed <CJK>
-+<U665F> /x9d/xee <CJK>
-+<U6662> /x9d/xef <CJK>
-+<U6670> /x9d/xf0 <CJK>
-+<U6683> /x9d/xf1 <CJK>
-+<U6688> /x9d/xf2 <CJK>
-+<U668E> /x9d/xf3 <CJK>
-+<U6689> /x9d/xf4 <CJK>
-+<U6684> /x9d/xf5 <CJK>
-+<U6698> /x9d/xf6 <CJK>
-+<U669D> /x9d/xf7 <CJK>
-+<U66C1> /x9d/xf8 <CJK>
-+<U66B9> /x9d/xf9 <CJK>
-+<U66C9> /x9d/xfa <CJK>
-+<U66BE> /x9d/xfb <CJK>
-+<U66BC> /x9d/xfc <CJK>
-+<U66C4> /x9e/x40 <CJK>
-+<U66B8> /x9e/x41 <CJK>
-+<U66D6> /x9e/x42 <CJK>
-+<U66DA> /x9e/x43 <CJK>
-+<U66E0> /x9e/x44 <CJK>
-+<U663F> /x9e/x45 <CJK>
-+<U66E6> /x9e/x46 <CJK>
-+<U66E9> /x9e/x47 <CJK>
-+<U66F0> /x9e/x48 <CJK>
-+<U66F5> /x9e/x49 <CJK>
-+<U66F7> /x9e/x4a <CJK>
-+<U670F> /x9e/x4b <CJK>
-+<U6716> /x9e/x4c <CJK>
-+<U671E> /x9e/x4d <CJK>
-+<U6726> /x9e/x4e <CJK>
-+<U6727> /x9e/x4f <CJK>
-+<U9738> /x9e/x50 <CJK>
-+<U672E> /x9e/x51 <CJK>
-+<U673F> /x9e/x52 <CJK>
-+<U6736> /x9e/x53 <CJK>
-+<U6741> /x9e/x54 <CJK>
-+<U6738> /x9e/x55 <CJK>
-+<U6737> /x9e/x56 <CJK>
-+<U6746> /x9e/x57 <CJK>
-+<U675E> /x9e/x58 <CJK>
-+<U6760> /x9e/x59 <CJK>
-+<U6759> /x9e/x5a <CJK>
-+<U6763> /x9e/x5b <CJK>
-+<U6764> /x9e/x5c <CJK>
-+<U6789> /x9e/x5d <CJK>
-+<U6770> /x9e/x5e <CJK>
-+<U67A9> /x9e/x5f <CJK>
-+<U677C> /x9e/x60 <CJK>
-+<U676A> /x9e/x61 <CJK>
-+<U678C> /x9e/x62 <CJK>
-+<U678B> /x9e/x63 <CJK>
-+<U67A6> /x9e/x64 <CJK>
-+<U67A1> /x9e/x65 <CJK>
-+<U6785> /x9e/x66 <CJK>
-+<U67B7> /x9e/x67 <CJK>
-+<U67EF> /x9e/x68 <CJK>
-+<U67B4> /x9e/x69 <CJK>
-+<U67EC> /x9e/x6a <CJK>
-+<U67B3> /x9e/x6b <CJK>
-+<U67E9> /x9e/x6c <CJK>
-+<U67B8> /x9e/x6d <CJK>
-+<U67E4> /x9e/x6e <CJK>
-+<U67DE> /x9e/x6f <CJK>
-+<U67DD> /x9e/x70 <CJK>
-+<U67E2> /x9e/x71 <CJK>
-+<U67EE> /x9e/x72 <CJK>
-+<U67B9> /x9e/x73 <CJK>
-+<U67CE> /x9e/x74 <CJK>
-+<U67C6> /x9e/x75 <CJK>
-+<U67E7> /x9e/x76 <CJK>
-+<U6A9C> /x9e/x77 <CJK>
-+<U681E> /x9e/x78 <CJK>
-+<U6846> /x9e/x79 <CJK>
-+<U6829> /x9e/x7a <CJK>
-+<U6840> /x9e/x7b <CJK>
-+<U684D> /x9e/x7c <CJK>
-+<U6832> /x9e/x7d <CJK>
-+<U684E> /x9e/x7e <CJK>
-+<U68B3> /x9e/x80 <CJK>
-+<U682B> /x9e/x81 <CJK>
-+<U6859> /x9e/x82 <CJK>
-+<U6863> /x9e/x83 <CJK>
-+<U6877> /x9e/x84 <CJK>
-+<U687F> /x9e/x85 <CJK>
-+<U689F> /x9e/x86 <CJK>
-+<U688F> /x9e/x87 <CJK>
-+<U68AD> /x9e/x88 <CJK>
-+<U6894> /x9e/x89 <CJK>
-+<U689D> /x9e/x8a <CJK>
-+<U689B> /x9e/x8b <CJK>
-+<U6883> /x9e/x8c <CJK>
-+<U6AAE> /x9e/x8d <CJK>
-+<U68B9> /x9e/x8e <CJK>
-+<U6874> /x9e/x8f <CJK>
-+<U68B5> /x9e/x90 <CJK>
-+<U68A0> /x9e/x91 <CJK>
-+<U68BA> /x9e/x92 <CJK>
-+<U690F> /x9e/x93 <CJK>
-+<U688D> /x9e/x94 <CJK>
-+<U687E> /x9e/x95 <CJK>
-+<U6901> /x9e/x96 <CJK>
-+<U68CA> /x9e/x97 <CJK>
-+<U6908> /x9e/x98 <CJK>
-+<U68D8> /x9e/x99 <CJK>
-+<U6922> /x9e/x9a <CJK>
-+<U6926> /x9e/x9b <CJK>
-+<U68E1> /x9e/x9c <CJK>
-+<U690C> /x9e/x9d <CJK>
-+<U68CD> /x9e/x9e <CJK>
-+<U68D4> /x9e/x9f <CJK>
-+<U68E7> /x9e/xa0 <CJK>
-+<U68D5> /x9e/xa1 <CJK>
-+<U6936> /x9e/xa2 <CJK>
-+<U6912> /x9e/xa3 <CJK>
-+<U6904> /x9e/xa4 <CJK>
-+<U68D7> /x9e/xa5 <CJK>
-+<U68E3> /x9e/xa6 <CJK>
-+<U6925> /x9e/xa7 <CJK>
-+<U68F9> /x9e/xa8 <CJK>
-+<U68E0> /x9e/xa9 <CJK>
-+<U68EF> /x9e/xaa <CJK>
-+<U6928> /x9e/xab <CJK>
-+<U692A> /x9e/xac <CJK>
-+<U691A> /x9e/xad <CJK>
-+<U6923> /x9e/xae <CJK>
-+<U6921> /x9e/xaf <CJK>
-+<U68C6> /x9e/xb0 <CJK>
-+<U6979> /x9e/xb1 <CJK>
-+<U6977> /x9e/xb2 <CJK>
-+<U695C> /x9e/xb3 <CJK>
-+<U6978> /x9e/xb4 <CJK>
-+<U696B> /x9e/xb5 <CJK>
-+<U6954> /x9e/xb6 <CJK>
-+<U697E> /x9e/xb7 <CJK>
-+<U696E> /x9e/xb8 <CJK>
-+<U6939> /x9e/xb9 <CJK>
-+<U6974> /x9e/xba <CJK>
-+<U693D> /x9e/xbb <CJK>
-+<U6959> /x9e/xbc <CJK>
-+<U6930> /x9e/xbd <CJK>
-+<U6961> /x9e/xbe <CJK>
-+<U695E> /x9e/xbf <CJK>
-+<U695D> /x9e/xc0 <CJK>
-+<U6981> /x9e/xc1 <CJK>
-+<U696A> /x9e/xc2 <CJK>
-+<U69B2> /x9e/xc3 <CJK>
-+<U69AE> /x9e/xc4 <CJK>
-+<U69D0> /x9e/xc5 <CJK>
-+<U69BF> /x9e/xc6 <CJK>
-+<U69C1> /x9e/xc7 <CJK>
-+<U69D3> /x9e/xc8 <CJK>
-+<U69BE> /x9e/xc9 <CJK>
-+<U69CE> /x9e/xca <CJK>
-+<U5BE8> /x9e/xcb <CJK>
-+<U69CA> /x9e/xcc <CJK>
-+<U69DD> /x9e/xcd <CJK>
-+<U69BB> /x9e/xce <CJK>
-+<U69C3> /x9e/xcf <CJK>
-+<U69A7> /x9e/xd0 <CJK>
-+<U6A2E> /x9e/xd1 <CJK>
-+<U6991> /x9e/xd2 <CJK>
-+<U69A0> /x9e/xd3 <CJK>
-+<U699C> /x9e/xd4 <CJK>
-+<U6995> /x9e/xd5 <CJK>
-+<U69B4> /x9e/xd6 <CJK>
-+<U69DE> /x9e/xd7 <CJK>
-+<U69E8> /x9e/xd8 <CJK>
-+<U6A02> /x9e/xd9 <CJK>
-+<U6A1B> /x9e/xda <CJK>
-+<U69FF> /x9e/xdb <CJK>
-+<U6B0A> /x9e/xdc <CJK>
-+<U69F9> /x9e/xdd <CJK>
-+<U69F2> /x9e/xde <CJK>
-+<U69E7> /x9e/xdf <CJK>
-+<U6A05> /x9e/xe0 <CJK>
-+<U69B1> /x9e/xe1 <CJK>
-+<U6A1E> /x9e/xe2 <CJK>
-+<U69ED> /x9e/xe3 <CJK>
-+<U6A14> /x9e/xe4 <CJK>
-+<U69EB> /x9e/xe5 <CJK>
-+<U6A0A> /x9e/xe6 <CJK>
-+<U6A12> /x9e/xe7 <CJK>
-+<U6AC1> /x9e/xe8 <CJK>
-+<U6A23> /x9e/xe9 <CJK>
-+<U6A13> /x9e/xea <CJK>
-+<U6A44> /x9e/xeb <CJK>
-+<U6A0C> /x9e/xec <CJK>
-+<U6A72> /x9e/xed <CJK>
-+<U6A36> /x9e/xee <CJK>
-+<U6A78> /x9e/xef <CJK>
-+<U6A47> /x9e/xf0 <CJK>
-+<U6A62> /x9e/xf1 <CJK>
-+<U6A59> /x9e/xf2 <CJK>
-+<U6A66> /x9e/xf3 <CJK>
-+<U6A48> /x9e/xf4 <CJK>
-+<U6A38> /x9e/xf5 <CJK>
-+<U6A22> /x9e/xf6 <CJK>
-+<U6A90> /x9e/xf7 <CJK>
-+<U6A8D> /x9e/xf8 <CJK>
-+<U6AA0> /x9e/xf9 <CJK>
-+<U6A84> /x9e/xfa <CJK>
-+<U6AA2> /x9e/xfb <CJK>
-+<U6AA3> /x9e/xfc <CJK>
-+<U6A97> /x9f/x40 <CJK>
-+<U8617> /x9f/x41 <CJK>
-+<U6ABB> /x9f/x42 <CJK>
-+<U6AC3> /x9f/x43 <CJK>
-+<U6AC2> /x9f/x44 <CJK>
-+<U6AB8> /x9f/x45 <CJK>
-+<U6AB3> /x9f/x46 <CJK>
-+<U6AAC> /x9f/x47 <CJK>
-+<U6ADE> /x9f/x48 <CJK>
-+<U6AD1> /x9f/x49 <CJK>
-+<U6ADF> /x9f/x4a <CJK>
-+<U6AAA> /x9f/x4b <CJK>
-+<U6ADA> /x9f/x4c <CJK>
-+<U6AEA> /x9f/x4d <CJK>
-+<U6AFB> /x9f/x4e <CJK>
-+<U6B05> /x9f/x4f <CJK>
-+<U8616> /x9f/x50 <CJK>
-+<U6AFA> /x9f/x51 <CJK>
-+<U6B12> /x9f/x52 <CJK>
-+<U6B16> /x9f/x53 <CJK>
-+<U9B31> /x9f/x54 <CJK>
-+<U6B1F> /x9f/x55 <CJK>
-+<U6B38> /x9f/x56 <CJK>
-+<U6B37> /x9f/x57 <CJK>
-+<U76DC> /x9f/x58 <CJK>
-+<U6B39> /x9f/x59 <CJK>
-+<U98EE> /x9f/x5a <CJK>
-+<U6B47> /x9f/x5b <CJK>
-+<U6B43> /x9f/x5c <CJK>
-+<U6B49> /x9f/x5d <CJK>
-+<U6B50> /x9f/x5e <CJK>
-+<U6B59> /x9f/x5f <CJK>
-+<U6B54> /x9f/x60 <CJK>
-+<U6B5B> /x9f/x61 <CJK>
-+<U6B5F> /x9f/x62 <CJK>
-+<U6B61> /x9f/x63 <CJK>
-+<U6B78> /x9f/x64 <CJK>
-+<U6B79> /x9f/x65 <CJK>
-+<U6B7F> /x9f/x66 <CJK>
-+<U6B80> /x9f/x67 <CJK>
-+<U6B84> /x9f/x68 <CJK>
-+<U6B83> /x9f/x69 <CJK>
-+<U6B8D> /x9f/x6a <CJK>
-+<U6B98> /x9f/x6b <CJK>
-+<U6B95> /x9f/x6c <CJK>
-+<U6B9E> /x9f/x6d <CJK>
-+<U6BA4> /x9f/x6e <CJK>
-+<U6BAA> /x9f/x6f <CJK>
-+<U6BAB> /x9f/x70 <CJK>
-+<U6BAF> /x9f/x71 <CJK>
-+<U6BB2> /x9f/x72 <CJK>
-+<U6BB1> /x9f/x73 <CJK>
-+<U6BB3> /x9f/x74 <CJK>
-+<U6BB7> /x9f/x75 <CJK>
-+<U6BBC> /x9f/x76 <CJK>
-+<U6BC6> /x9f/x77 <CJK>
-+<U6BCB> /x9f/x78 <CJK>
-+<U6BD3> /x9f/x79 <CJK>
-+<U6BDF> /x9f/x7a <CJK>
-+<U6BEC> /x9f/x7b <CJK>
-+<U6BEB> /x9f/x7c <CJK>
-+<U6BF3> /x9f/x7d <CJK>
-+<U6BEF> /x9f/x7e <CJK>
-+<U9EBE> /x9f/x80 <CJK>
-+<U6C08> /x9f/x81 <CJK>
-+<U6C13> /x9f/x82 <CJK>
-+<U6C14> /x9f/x83 <CJK>
-+<U6C1B> /x9f/x84 <CJK>
-+<U6C24> /x9f/x85 <CJK>
-+<U6C23> /x9f/x86 <CJK>
-+<U6C5E> /x9f/x87 <CJK>
-+<U6C55> /x9f/x88 <CJK>
-+<U6C62> /x9f/x89 <CJK>
-+<U6C6A> /x9f/x8a <CJK>
-+<U6C82> /x9f/x8b <CJK>
-+<U6C8D> /x9f/x8c <CJK>
-+<U6C9A> /x9f/x8d <CJK>
-+<U6C81> /x9f/x8e <CJK>
-+<U6C9B> /x9f/x8f <CJK>
-+<U6C7E> /x9f/x90 <CJK>
-+<U6C68> /x9f/x91 <CJK>
-+<U6C73> /x9f/x92 <CJK>
-+<U6C92> /x9f/x93 <CJK>
-+<U6C90> /x9f/x94 <CJK>
-+<U6CC4> /x9f/x95 <CJK>
-+<U6CF1> /x9f/x96 <CJK>
-+<U6CD3> /x9f/x97 <CJK>
-+<U6CBD> /x9f/x98 <CJK>
-+<U6CD7> /x9f/x99 <CJK>
-+<U6CC5> /x9f/x9a <CJK>
-+<U6CDD> /x9f/x9b <CJK>
-+<U6CAE> /x9f/x9c <CJK>
-+<U6CB1> /x9f/x9d <CJK>
-+<U6CBE> /x9f/x9e <CJK>
-+<U6CBA> /x9f/x9f <CJK>
-+<U6CDB> /x9f/xa0 <CJK>
-+<U6CEF> /x9f/xa1 <CJK>
-+<U6CD9> /x9f/xa2 <CJK>
-+<U6CEA> /x9f/xa3 <CJK>
-+<U6D1F> /x9f/xa4 <CJK>
-+<U884D> /x9f/xa5 <CJK>
-+<U6D36> /x9f/xa6 <CJK>
-+<U6D2B> /x9f/xa7 <CJK>
-+<U6D3D> /x9f/xa8 <CJK>
-+<U6D38> /x9f/xa9 <CJK>
-+<U6D19> /x9f/xaa <CJK>
-+<U6D35> /x9f/xab <CJK>
-+<U6D33> /x9f/xac <CJK>
-+<U6D12> /x9f/xad <CJK>
-+<U6D0C> /x9f/xae <CJK>
-+<U6D63> /x9f/xaf <CJK>
-+<U6D93> /x9f/xb0 <CJK>
-+<U6D64> /x9f/xb1 <CJK>
-+<U6D5A> /x9f/xb2 <CJK>
-+<U6D79> /x9f/xb3 <CJK>
-+<U6D59> /x9f/xb4 <CJK>
-+<U6D8E> /x9f/xb5 <CJK>
-+<U6D95> /x9f/xb6 <CJK>
-+<U6FE4> /x9f/xb7 <CJK>
-+<U6D85> /x9f/xb8 <CJK>
-+<U6DF9> /x9f/xb9 <CJK>
-+<U6E15> /x9f/xba <CJK>
-+<U6E0A> /x9f/xbb <CJK>
-+<U6DB5> /x9f/xbc <CJK>
-+<U6DC7> /x9f/xbd <CJK>
-+<U6DE6> /x9f/xbe <CJK>
-+<U6DB8> /x9f/xbf <CJK>
-+<U6DC6> /x9f/xc0 <CJK>
-+<U6DEC> /x9f/xc1 <CJK>
-+<U6DDE> /x9f/xc2 <CJK>
-+<U6DCC> /x9f/xc3 <CJK>
-+<U6DE8> /x9f/xc4 <CJK>
-+<U6DD2> /x9f/xc5 <CJK>
-+<U6DC5> /x9f/xc6 <CJK>
-+<U6DFA> /x9f/xc7 <CJK>
-+<U6DD9> /x9f/xc8 <CJK>
-+<U6DE4> /x9f/xc9 <CJK>
-+<U6DD5> /x9f/xca <CJK>
-+<U6DEA> /x9f/xcb <CJK>
-+<U6DEE> /x9f/xcc <CJK>
-+<U6E2D> /x9f/xcd <CJK>
-+<U6E6E> /x9f/xce <CJK>
-+<U6E2E> /x9f/xcf <CJK>
-+<U6E19> /x9f/xd0 <CJK>
-+<U6E72> /x9f/xd1 <CJK>
-+<U6E5F> /x9f/xd2 <CJK>
-+<U6E3E> /x9f/xd3 <CJK>
-+<U6E23> /x9f/xd4 <CJK>
-+<U6E6B> /x9f/xd5 <CJK>
-+<U6E2B> /x9f/xd6 <CJK>
-+<U6E76> /x9f/xd7 <CJK>
-+<U6E4D> /x9f/xd8 <CJK>
-+<U6E1F> /x9f/xd9 <CJK>
-+<U6E43> /x9f/xda <CJK>
-+<U6E3A> /x9f/xdb <CJK>
-+<U6E4E> /x9f/xdc <CJK>
-+<U6E24> /x9f/xdd <CJK>
-+<U6EFF> /x9f/xde <CJK>
-+<U6E1D> /x9f/xdf <CJK>
-+<U6E38> /x9f/xe0 <CJK>
-+<U6E82> /x9f/xe1 <CJK>
-+<U6EAA> /x9f/xe2 <CJK>
-+<U6E98> /x9f/xe3 <CJK>
-+<U6EC9> /x9f/xe4 <CJK>
-+<U6EB7> /x9f/xe5 <CJK>
-+<U6ED3> /x9f/xe6 <CJK>
-+<U6EBD> /x9f/xe7 <CJK>
-+<U6EAF> /x9f/xe8 <CJK>
-+<U6EC4> /x9f/xe9 <CJK>
-+<U6EB2> /x9f/xea <CJK>
-+<U6ED4> /x9f/xeb <CJK>
-+<U6ED5> /x9f/xec <CJK>
-+<U6E8F> /x9f/xed <CJK>
-+<U6EA5> /x9f/xee <CJK>
-+<U6EC2> /x9f/xef <CJK>
-+<U6E9F> /x9f/xf0 <CJK>
-+<U6F41> /x9f/xf1 <CJK>
-+<U6F11> /x9f/xf2 <CJK>
-+<U704C> /x9f/xf3 <CJK>
-+<U6EEC> /x9f/xf4 <CJK>
-+<U6EF8> /x9f/xf5 <CJK>
-+<U6EFE> /x9f/xf6 <CJK>
-+<U6F3F> /x9f/xf7 <CJK>
-+<U6EF2> /x9f/xf8 <CJK>
-+<U6F31> /x9f/xf9 <CJK>
-+<U6EEF> /x9f/xfa <CJK>
-+<U6F32> /x9f/xfb <CJK>
-+<U6ECC> /x9f/xfc <CJK>
-+
-+<UFF61> /xa1 HALFWIDTH IDEOGRAPHIC FULL STOP
-+<UFF62> /xa2 HALFWIDTH LEFT CORNER BRACKET
-+<UFF63> /xa3 HALFWIDTH RIGHT CORNER BRACKET
-+<UFF64> /xa4 HALFWIDTH IDEOGRAPHIC COMMA
-+<UFF65> /xa5 HALFWIDTH KATAKANA MIDDLE DOT
-+<UFF66> /xa6 HALFWIDTH KATAKANA LETTER WO
-+<UFF67> /xa7 HALFWIDTH KATAKANA LETTER SMALL A
-+<UFF68> /xa8 HALFWIDTH KATAKANA LETTER SMALL I
-+<UFF69> /xa9 HALFWIDTH KATAKANA LETTER SMALL U
-+<UFF6A> /xaa HALFWIDTH KATAKANA LETTER SMALL E
-+<UFF6B> /xab HALFWIDTH KATAKANA LETTER SMALL O
-+<UFF6C> /xac HALFWIDTH KATAKANA LETTER SMALL YA
-+<UFF6D> /xad HALFWIDTH KATAKANA LETTER SMALL YU
-+<UFF6E> /xae HALFWIDTH KATAKANA LETTER SMALL YO
-+<UFF6F> /xaf HALFWIDTH KATAKANA LETTER SMALL TU
-+<UFF70> /xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-+<UFF71> /xb1 HALFWIDTH KATAKANA LETTER A
-+<UFF72> /xb2 HALFWIDTH KATAKANA LETTER I
-+<UFF73> /xb3 HALFWIDTH KATAKANA LETTER U
-+<UFF74> /xb4 HALFWIDTH KATAKANA LETTER E
-+<UFF75> /xb5 HALFWIDTH KATAKANA LETTER O
-+<UFF76> /xb6 HALFWIDTH KATAKANA LETTER KA
-+<UFF77> /xb7 HALFWIDTH KATAKANA LETTER KI
-+<UFF78> /xb8 HALFWIDTH KATAKANA LETTER KU
-+<UFF79> /xb9 HALFWIDTH KATAKANA LETTER KE
-+<UFF7A> /xba HALFWIDTH KATAKANA LETTER KO
-+<UFF7B> /xbb HALFWIDTH KATAKANA LETTER SA
-+<UFF7C> /xbc HALFWIDTH KATAKANA LETTER SI
-+<UFF7D> /xbd HALFWIDTH KATAKANA LETTER SU
-+<UFF7E> /xbe HALFWIDTH KATAKANA LETTER SE
-+<UFF7F> /xbf HALFWIDTH KATAKANA LETTER SO
-+<UFF80> /xc0 HALFWIDTH KATAKANA LETTER TA
-+<UFF81> /xc1 HALFWIDTH KATAKANA LETTER TI
-+<UFF82> /xc2 HALFWIDTH KATAKANA LETTER TU
-+<UFF83> /xc3 HALFWIDTH KATAKANA LETTER TE
-+<UFF84> /xc4 HALFWIDTH KATAKANA LETTER TO
-+<UFF85> /xc5 HALFWIDTH KATAKANA LETTER NA
-+<UFF86> /xc6 HALFWIDTH KATAKANA LETTER NI
-+<UFF87> /xc7 HALFWIDTH KATAKANA LETTER NU
-+<UFF88> /xc8 HALFWIDTH KATAKANA LETTER NE
-+<UFF89> /xc9 HALFWIDTH KATAKANA LETTER NO
-+<UFF8A> /xca HALFWIDTH KATAKANA LETTER HA
-+<UFF8B> /xcb HALFWIDTH KATAKANA LETTER HI
-+<UFF8C> /xcc HALFWIDTH KATAKANA LETTER HU
-+<UFF8D> /xcd HALFWIDTH KATAKANA LETTER HE
-+<UFF8E> /xce HALFWIDTH KATAKANA LETTER HO
-+<UFF8F> /xcf HALFWIDTH KATAKANA LETTER MA
-+<UFF90> /xd0 HALFWIDTH KATAKANA LETTER MI
-+<UFF91> /xd1 HALFWIDTH KATAKANA LETTER MU
-+<UFF92> /xd2 HALFWIDTH KATAKANA LETTER ME
-+<UFF93> /xd3 HALFWIDTH KATAKANA LETTER MO
-+<UFF94> /xd4 HALFWIDTH KATAKANA LETTER YA
-+<UFF95> /xd5 HALFWIDTH KATAKANA LETTER YU
-+<UFF96> /xd6 HALFWIDTH KATAKANA LETTER YO
-+<UFF97> /xd7 HALFWIDTH KATAKANA LETTER RA
-+<UFF98> /xd8 HALFWIDTH KATAKANA LETTER RI
-+<UFF99> /xd9 HALFWIDTH KATAKANA LETTER RU
-+<UFF9A> /xda HALFWIDTH KATAKANA LETTER RE
-+<UFF9B> /xdb HALFWIDTH KATAKANA LETTER RO
-+<UFF9C> /xdc HALFWIDTH KATAKANA LETTER WA
-+<UFF9D> /xdd HALFWIDTH KATAKANA LETTER N
-+<UFF9E> /xde HALFWIDTH KATAKANA VOICED SOUND MARK
-+<UFF9F> /xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-+
-+<U6F3E> /xe0/x40 <CJK>
-+<U6F13> /xe0/x41 <CJK>
-+<U6EF7> /xe0/x42 <CJK>
-+<U6F86> /xe0/x43 <CJK>
-+<U6F7A> /xe0/x44 <CJK>
-+<U6F78> /xe0/x45 <CJK>
-+<U6F81> /xe0/x46 <CJK>
-+<U6F80> /xe0/x47 <CJK>
-+<U6F6F> /xe0/x48 <CJK>
-+<U6F5B> /xe0/x49 <CJK>
-+<U6FF3> /xe0/x4a <CJK>
-+<U6F6D> /xe0/x4b <CJK>
-+<U6F82> /xe0/x4c <CJK>
-+<U6F7C> /xe0/x4d <CJK>
-+<U6F58> /xe0/x4e <CJK>
-+<U6F8E> /xe0/x4f <CJK>
-+<U6F91> /xe0/x50 <CJK>
-+<U6FC2> /xe0/x51 <CJK>
-+<U6F66> /xe0/x52 <CJK>
-+<U6FB3> /xe0/x53 <CJK>
-+<U6FA3> /xe0/x54 <CJK>
-+<U6FA1> /xe0/x55 <CJK>
-+<U6FA4> /xe0/x56 <CJK>
-+<U6FB9> /xe0/x57 <CJK>
-+<U6FC6> /xe0/x58 <CJK>
-+<U6FAA> /xe0/x59 <CJK>
-+<U6FDF> /xe0/x5a <CJK>
-+<U6FD5> /xe0/x5b <CJK>
-+<U6FEC> /xe0/x5c <CJK>
-+<U6FD4> /xe0/x5d <CJK>
-+<U6FD8> /xe0/x5e <CJK>
-+<U6FF1> /xe0/x5f <CJK>
-+<U6FEE> /xe0/x60 <CJK>
-+<U6FDB> /xe0/x61 <CJK>
-+<U7009> /xe0/x62 <CJK>
-+<U700B> /xe0/x63 <CJK>
-+<U6FFA> /xe0/x64 <CJK>
-+<U7011> /xe0/x65 <CJK>
-+<U7001> /xe0/x66 <CJK>
-+<U700F> /xe0/x67 <CJK>
-+<U6FFE> /xe0/x68 <CJK>
-+<U701B> /xe0/x69 <CJK>
-+<U701A> /xe0/x6a <CJK>
-+<U6F74> /xe0/x6b <CJK>
-+<U701D> /xe0/x6c <CJK>
-+<U7018> /xe0/x6d <CJK>
-+<U701F> /xe0/x6e <CJK>
-+<U7030> /xe0/x6f <CJK>
-+<U703E> /xe0/x70 <CJK>
-+<U7032> /xe0/x71 <CJK>
-+<U7051> /xe0/x72 <CJK>
-+<U7063> /xe0/x73 <CJK>
-+<U7099> /xe0/x74 <CJK>
-+<U7092> /xe0/x75 <CJK>
-+<U70AF> /xe0/x76 <CJK>
-+<U70F1> /xe0/x77 <CJK>
-+<U70AC> /xe0/x78 <CJK>
-+<U70B8> /xe0/x79 <CJK>
-+<U70B3> /xe0/x7a <CJK>
-+<U70AE> /xe0/x7b <CJK>
-+<U70DF> /xe0/x7c <CJK>
-+<U70CB> /xe0/x7d <CJK>
-+<U70DD> /xe0/x7e <CJK>
-+<U70D9> /xe0/x80 <CJK>
-+<U7109> /xe0/x81 <CJK>
-+<U70FD> /xe0/x82 <CJK>
-+<U711C> /xe0/x83 <CJK>
-+<U7119> /xe0/x84 <CJK>
-+<U7165> /xe0/x85 <CJK>
-+<U7155> /xe0/x86 <CJK>
-+<U7188> /xe0/x87 <CJK>
-+<U7166> /xe0/x88 <CJK>
-+<U7162> /xe0/x89 <CJK>
-+<U714C> /xe0/x8a <CJK>
-+<U7156> /xe0/x8b <CJK>
-+<U716C> /xe0/x8c <CJK>
-+<U718F> /xe0/x8d <CJK>
-+<U71FB> /xe0/x8e <CJK>
-+<U7184> /xe0/x8f <CJK>
-+<U7195> /xe0/x90 <CJK>
-+<U71A8> /xe0/x91 <CJK>
-+<U71AC> /xe0/x92 <CJK>
-+<U71D7> /xe0/x93 <CJK>
-+<U71B9> /xe0/x94 <CJK>
-+<U71BE> /xe0/x95 <CJK>
-+<U71D2> /xe0/x96 <CJK>
-+<U71C9> /xe0/x97 <CJK>
-+<U71D4> /xe0/x98 <CJK>
-+<U71CE> /xe0/x99 <CJK>
-+<U71E0> /xe0/x9a <CJK>
-+<U71EC> /xe0/x9b <CJK>
-+<U71E7> /xe0/x9c <CJK>
-+<U71F5> /xe0/x9d <CJK>
-+<U71FC> /xe0/x9e <CJK>
-+<U71F9> /xe0/x9f <CJK>
-+<U71FF> /xe0/xa0 <CJK>
-+<U720D> /xe0/xa1 <CJK>
-+<U7210> /xe0/xa2 <CJK>
-+<U721B> /xe0/xa3 <CJK>
-+<U7228> /xe0/xa4 <CJK>
-+<U722D> /xe0/xa5 <CJK>
-+<U722C> /xe0/xa6 <CJK>
-+<U7230> /xe0/xa7 <CJK>
-+<U7232> /xe0/xa8 <CJK>
-+<U723B> /xe0/xa9 <CJK>
-+<U723C> /xe0/xaa <CJK>
-+<U723F> /xe0/xab <CJK>
-+<U7240> /xe0/xac <CJK>
-+<U7246> /xe0/xad <CJK>
-+<U724B> /xe0/xae <CJK>
-+<U7258> /xe0/xaf <CJK>
-+<U7274> /xe0/xb0 <CJK>
-+<U727E> /xe0/xb1 <CJK>
-+<U7282> /xe0/xb2 <CJK>
-+<U7281> /xe0/xb3 <CJK>
-+<U7287> /xe0/xb4 <CJK>
-+<U7292> /xe0/xb5 <CJK>
-+<U7296> /xe0/xb6 <CJK>
-+<U72A2> /xe0/xb7 <CJK>
-+<U72A7> /xe0/xb8 <CJK>
-+<U72B9> /xe0/xb9 <CJK>
-+<U72B2> /xe0/xba <CJK>
-+<U72C3> /xe0/xbb <CJK>
-+<U72C6> /xe0/xbc <CJK>
-+<U72C4> /xe0/xbd <CJK>
-+<U72CE> /xe0/xbe <CJK>
-+<U72D2> /xe0/xbf <CJK>
-+<U72E2> /xe0/xc0 <CJK>
-+<U72E0> /xe0/xc1 <CJK>
-+<U72E1> /xe0/xc2 <CJK>
-+<U72F9> /xe0/xc3 <CJK>
-+<U72F7> /xe0/xc4 <CJK>
-+<U500F> /xe0/xc5 <CJK>
-+<U7317> /xe0/xc6 <CJK>
-+<U730A> /xe0/xc7 <CJK>
-+<U731C> /xe0/xc8 <CJK>
-+<U7316> /xe0/xc9 <CJK>
-+<U731D> /xe0/xca <CJK>
-+<U7334> /xe0/xcb <CJK>
-+<U732F> /xe0/xcc <CJK>
-+<U7329> /xe0/xcd <CJK>
-+<U7325> /xe0/xce <CJK>
-+<U733E> /xe0/xcf <CJK>
-+<U734E> /xe0/xd0 <CJK>
-+<U734F> /xe0/xd1 <CJK>
-+<U9ED8> /xe0/xd2 <CJK>
-+<U7357> /xe0/xd3 <CJK>
-+<U736A> /xe0/xd4 <CJK>
-+<U7368> /xe0/xd5 <CJK>
-+<U7370> /xe0/xd6 <CJK>
-+<U7378> /xe0/xd7 <CJK>
-+<U7375> /xe0/xd8 <CJK>
-+<U737B> /xe0/xd9 <CJK>
-+<U737A> /xe0/xda <CJK>
-+<U73C8> /xe0/xdb <CJK>
-+<U73B3> /xe0/xdc <CJK>
-+<U73CE> /xe0/xdd <CJK>
-+<U73BB> /xe0/xde <CJK>
-+<U73C0> /xe0/xdf <CJK>
-+<U73E5> /xe0/xe0 <CJK>
-+<U73EE> /xe0/xe1 <CJK>
-+<U73DE> /xe0/xe2 <CJK>
-+<U74A2> /xe0/xe3 <CJK>
-+<U7405> /xe0/xe4 <CJK>
-+<U746F> /xe0/xe5 <CJK>
-+<U7425> /xe0/xe6 <CJK>
-+<U73F8> /xe0/xe7 <CJK>
-+<U7432> /xe0/xe8 <CJK>
-+<U743A> /xe0/xe9 <CJK>
-+<U7455> /xe0/xea <CJK>
-+<U743F> /xe0/xeb <CJK>
-+<U745F> /xe0/xec <CJK>
-+<U7459> /xe0/xed <CJK>
-+<U7441> /xe0/xee <CJK>
-+<U745C> /xe0/xef <CJK>
-+<U7469> /xe0/xf0 <CJK>
-+<U7470> /xe0/xf1 <CJK>
-+<U7463> /xe0/xf2 <CJK>
-+<U746A> /xe0/xf3 <CJK>
-+<U7476> /xe0/xf4 <CJK>
-+<U747E> /xe0/xf5 <CJK>
-+<U748B> /xe0/xf6 <CJK>
-+<U749E> /xe0/xf7 <CJK>
-+<U74A7> /xe0/xf8 <CJK>
-+<U74CA> /xe0/xf9 <CJK>
-+<U74CF> /xe0/xfa <CJK>
-+<U74D4> /xe0/xfb <CJK>
-+<U73F1> /xe0/xfc <CJK>
-+<U74E0> /xe1/x40 <CJK>
-+<U74E3> /xe1/x41 <CJK>
-+<U74E7> /xe1/x42 <CJK>
-+<U74E9> /xe1/x43 <CJK>
-+<U74EE> /xe1/x44 <CJK>
-+<U74F2> /xe1/x45 <CJK>
-+<U74F0> /xe1/x46 <CJK>
-+<U74F1> /xe1/x47 <CJK>
-+<U74F8> /xe1/x48 <CJK>
-+<U74F7> /xe1/x49 <CJK>
-+<U7504> /xe1/x4a <CJK>
-+<U7503> /xe1/x4b <CJK>
-+<U7505> /xe1/x4c <CJK>
-+<U750C> /xe1/x4d <CJK>
-+<U750E> /xe1/x4e <CJK>
-+<U750D> /xe1/x4f <CJK>
-+<U7515> /xe1/x50 <CJK>
-+<U7513> /xe1/x51 <CJK>
-+<U751E> /xe1/x52 <CJK>
-+<U7526> /xe1/x53 <CJK>
-+<U752C> /xe1/x54 <CJK>
-+<U753C> /xe1/x55 <CJK>
-+<U7544> /xe1/x56 <CJK>
-+<U754D> /xe1/x57 <CJK>
-+<U754A> /xe1/x58 <CJK>
-+<U7549> /xe1/x59 <CJK>
-+<U755B> /xe1/x5a <CJK>
-+<U7546> /xe1/x5b <CJK>
-+<U755A> /xe1/x5c <CJK>
-+<U7569> /xe1/x5d <CJK>
-+<U7564> /xe1/x5e <CJK>
-+<U7567> /xe1/x5f <CJK>
-+<U756B> /xe1/x60 <CJK>
-+<U756D> /xe1/x61 <CJK>
-+<U7578> /xe1/x62 <CJK>
-+<U7576> /xe1/x63 <CJK>
-+<U7586> /xe1/x64 <CJK>
-+<U7587> /xe1/x65 <CJK>
-+<U7574> /xe1/x66 <CJK>
-+<U758A> /xe1/x67 <CJK>
-+<U7589> /xe1/x68 <CJK>
-+<U7582> /xe1/x69 <CJK>
-+<U7594> /xe1/x6a <CJK>
-+<U759A> /xe1/x6b <CJK>
-+<U759D> /xe1/x6c <CJK>
-+<U75A5> /xe1/x6d <CJK>
-+<U75A3> /xe1/x6e <CJK>
-+<U75C2> /xe1/x6f <CJK>
-+<U75B3> /xe1/x70 <CJK>
-+<U75C3> /xe1/x71 <CJK>
-+<U75B5> /xe1/x72 <CJK>
-+<U75BD> /xe1/x73 <CJK>
-+<U75B8> /xe1/x74 <CJK>
-+<U75BC> /xe1/x75 <CJK>
-+<U75B1> /xe1/x76 <CJK>
-+<U75CD> /xe1/x77 <CJK>
-+<U75CA> /xe1/x78 <CJK>
-+<U75D2> /xe1/x79 <CJK>
-+<U75D9> /xe1/x7a <CJK>
-+<U75E3> /xe1/x7b <CJK>
-+<U75DE> /xe1/x7c <CJK>
-+<U75FE> /xe1/x7d <CJK>
-+<U75FF> /xe1/x7e <CJK>
-+<U75FC> /xe1/x80 <CJK>
-+<U7601> /xe1/x81 <CJK>
-+<U75F0> /xe1/x82 <CJK>
-+<U75FA> /xe1/x83 <CJK>
-+<U75F2> /xe1/x84 <CJK>
-+<U75F3> /xe1/x85 <CJK>
-+<U760B> /xe1/x86 <CJK>
-+<U760D> /xe1/x87 <CJK>
-+<U7609> /xe1/x88 <CJK>
-+<U761F> /xe1/x89 <CJK>
-+<U7627> /xe1/x8a <CJK>
-+<U7620> /xe1/x8b <CJK>
-+<U7621> /xe1/x8c <CJK>
-+<U7622> /xe1/x8d <CJK>
-+<U7624> /xe1/x8e <CJK>
-+<U7634> /xe1/x8f <CJK>
-+<U7630> /xe1/x90 <CJK>
-+<U763B> /xe1/x91 <CJK>
-+<U7647> /xe1/x92 <CJK>
-+<U7648> /xe1/x93 <CJK>
-+<U7646> /xe1/x94 <CJK>
-+<U765C> /xe1/x95 <CJK>
-+<U7658> /xe1/x96 <CJK>
-+<U7661> /xe1/x97 <CJK>
-+<U7662> /xe1/x98 <CJK>
-+<U7668> /xe1/x99 <CJK>
-+<U7669> /xe1/x9a <CJK>
-+<U766A> /xe1/x9b <CJK>
-+<U7667> /xe1/x9c <CJK>
-+<U766C> /xe1/x9d <CJK>
-+<U7670> /xe1/x9e <CJK>
-+<U7672> /xe1/x9f <CJK>
-+<U7676> /xe1/xa0 <CJK>
-+<U7678> /xe1/xa1 <CJK>
-+<U767C> /xe1/xa2 <CJK>
-+<U7680> /xe1/xa3 <CJK>
-+<U7683> /xe1/xa4 <CJK>
-+<U7688> /xe1/xa5 <CJK>
-+<U768B> /xe1/xa6 <CJK>
-+<U768E> /xe1/xa7 <CJK>
-+<U7696> /xe1/xa8 <CJK>
-+<U7693> /xe1/xa9 <CJK>
-+<U7699> /xe1/xaa <CJK>
-+<U769A> /xe1/xab <CJK>
-+<U76B0> /xe1/xac <CJK>
-+<U76B4> /xe1/xad <CJK>
-+<U76B8> /xe1/xae <CJK>
-+<U76B9> /xe1/xaf <CJK>
-+<U76BA> /xe1/xb0 <CJK>
-+<U76C2> /xe1/xb1 <CJK>
-+<U76CD> /xe1/xb2 <CJK>
-+<U76D6> /xe1/xb3 <CJK>
-+<U76D2> /xe1/xb4 <CJK>
-+<U76DE> /xe1/xb5 <CJK>
-+<U76E1> /xe1/xb6 <CJK>
-+<U76E5> /xe1/xb7 <CJK>
-+<U76E7> /xe1/xb8 <CJK>
-+<U76EA> /xe1/xb9 <CJK>
-+<U862F> /xe1/xba <CJK>
-+<U76FB> /xe1/xbb <CJK>
-+<U7708> /xe1/xbc <CJK>
-+<U7707> /xe1/xbd <CJK>
-+<U7704> /xe1/xbe <CJK>
-+<U7729> /xe1/xbf <CJK>
-+<U7724> /xe1/xc0 <CJK>
-+<U771E> /xe1/xc1 <CJK>
-+<U7725> /xe1/xc2 <CJK>
-+<U7726> /xe1/xc3 <CJK>
-+<U771B> /xe1/xc4 <CJK>
-+<U7737> /xe1/xc5 <CJK>
-+<U7738> /xe1/xc6 <CJK>
-+<U7747> /xe1/xc7 <CJK>
-+<U775A> /xe1/xc8 <CJK>
-+<U7768> /xe1/xc9 <CJK>
-+<U776B> /xe1/xca <CJK>
-+<U775B> /xe1/xcb <CJK>
-+<U7765> /xe1/xcc <CJK>
-+<U777F> /xe1/xcd <CJK>
-+<U777E> /xe1/xce <CJK>
-+<U7779> /xe1/xcf <CJK>
-+<U778E> /xe1/xd0 <CJK>
-+<U778B> /xe1/xd1 <CJK>
-+<U7791> /xe1/xd2 <CJK>
-+<U77A0> /xe1/xd3 <CJK>
-+<U779E> /xe1/xd4 <CJK>
-+<U77B0> /xe1/xd5 <CJK>
-+<U77B6> /xe1/xd6 <CJK>
-+<U77B9> /xe1/xd7 <CJK>
-+<U77BF> /xe1/xd8 <CJK>
-+<U77BC> /xe1/xd9 <CJK>
-+<U77BD> /xe1/xda <CJK>
-+<U77BB> /xe1/xdb <CJK>
-+<U77C7> /xe1/xdc <CJK>
-+<U77CD> /xe1/xdd <CJK>
-+<U77D7> /xe1/xde <CJK>
-+<U77DA> /xe1/xdf <CJK>
-+<U77DC> /xe1/xe0 <CJK>
-+<U77E3> /xe1/xe1 <CJK>
-+<U77EE> /xe1/xe2 <CJK>
-+<U77FC> /xe1/xe3 <CJK>
-+<U780C> /xe1/xe4 <CJK>
-+<U7812> /xe1/xe5 <CJK>
-+<U7926> /xe1/xe6 <CJK>
-+<U7820> /xe1/xe7 <CJK>
-+<U792A> /xe1/xe8 <CJK>
-+<U7845> /xe1/xe9 <CJK>
-+<U788E> /xe1/xea <CJK>
-+<U7874> /xe1/xeb <CJK>
-+<U7886> /xe1/xec <CJK>
-+<U787C> /xe1/xed <CJK>
-+<U789A> /xe1/xee <CJK>
-+<U788C> /xe1/xef <CJK>
-+<U78A3> /xe1/xf0 <CJK>
-+<U78B5> /xe1/xf1 <CJK>
-+<U78AA> /xe1/xf2 <CJK>
-+<U78AF> /xe1/xf3 <CJK>
-+<U78D1> /xe1/xf4 <CJK>
-+<U78C6> /xe1/xf5 <CJK>
-+<U78CB> /xe1/xf6 <CJK>
-+<U78D4> /xe1/xf7 <CJK>
-+<U78BE> /xe1/xf8 <CJK>
-+<U78BC> /xe1/xf9 <CJK>
-+<U78C5> /xe1/xfa <CJK>
-+<U78CA> /xe1/xfb <CJK>
-+<U78EC> /xe1/xfc <CJK>
-+<U78E7> /xe2/x40 <CJK>
-+<U78DA> /xe2/x41 <CJK>
-+<U78FD> /xe2/x42 <CJK>
-+<U78F4> /xe2/x43 <CJK>
-+<U7907> /xe2/x44 <CJK>
-+<U7912> /xe2/x45 <CJK>
-+<U7911> /xe2/x46 <CJK>
-+<U7919> /xe2/x47 <CJK>
-+<U792C> /xe2/x48 <CJK>
-+<U792B> /xe2/x49 <CJK>
-+<U7940> /xe2/x4a <CJK>
-+<U7960> /xe2/x4b <CJK>
-+<U7957> /xe2/x4c <CJK>
-+<U795F> /xe2/x4d <CJK>
-+<U795A> /xe2/x4e <CJK>
-+<U7955> /xe2/x4f <CJK>
-+<U7953> /xe2/x50 <CJK>
-+<U797A> /xe2/x51 <CJK>
-+<U797F> /xe2/x52 <CJK>
-+<U798A> /xe2/x53 <CJK>
-+<U799D> /xe2/x54 <CJK>
-+<U79A7> /xe2/x55 <CJK>
-+<U9F4B> /xe2/x56 <CJK>
-+<U79AA> /xe2/x57 <CJK>
-+<U79AE> /xe2/x58 <CJK>
-+<U79B3> /xe2/x59 <CJK>
-+<U79B9> /xe2/x5a <CJK>
-+<U79BA> /xe2/x5b <CJK>
-+<U79C9> /xe2/x5c <CJK>
-+<U79D5> /xe2/x5d <CJK>
-+<U79E7> /xe2/x5e <CJK>
-+<U79EC> /xe2/x5f <CJK>
-+<U79E1> /xe2/x60 <CJK>
-+<U79E3> /xe2/x61 <CJK>
-+<U7A08> /xe2/x62 <CJK>
-+<U7A0D> /xe2/x63 <CJK>
-+<U7A18> /xe2/x64 <CJK>
-+<U7A19> /xe2/x65 <CJK>
-+<U7A20> /xe2/x66 <CJK>
-+<U7A1F> /xe2/x67 <CJK>
-+<U7980> /xe2/x68 <CJK>
-+<U7A31> /xe2/x69 <CJK>
-+<U7A3B> /xe2/x6a <CJK>
-+<U7A3E> /xe2/x6b <CJK>
-+<U7A37> /xe2/x6c <CJK>
-+<U7A43> /xe2/x6d <CJK>
-+<U7A57> /xe2/x6e <CJK>
-+<U7A49> /xe2/x6f <CJK>
-+<U7A61> /xe2/x70 <CJK>
-+<U7A62> /xe2/x71 <CJK>
-+<U7A69> /xe2/x72 <CJK>
-+<U9F9D> /xe2/x73 <CJK>
-+<U7A70> /xe2/x74 <CJK>
-+<U7A79> /xe2/x75 <CJK>
-+<U7A7D> /xe2/x76 <CJK>
-+<U7A88> /xe2/x77 <CJK>
-+<U7A97> /xe2/x78 <CJK>
-+<U7A95> /xe2/x79 <CJK>
-+<U7A98> /xe2/x7a <CJK>
-+<U7A96> /xe2/x7b <CJK>
-+<U7AA9> /xe2/x7c <CJK>
-+<U7AC8> /xe2/x7d <CJK>
-+<U7AB0> /xe2/x7e <CJK>
-+<U7AB6> /xe2/x80 <CJK>
-+<U7AC5> /xe2/x81 <CJK>
-+<U7AC4> /xe2/x82 <CJK>
-+<U7ABF> /xe2/x83 <CJK>
-+<U9083> /xe2/x84 <CJK>
-+<U7AC7> /xe2/x85 <CJK>
-+<U7ACA> /xe2/x86 <CJK>
-+<U7ACD> /xe2/x87 <CJK>
-+<U7ACF> /xe2/x88 <CJK>
-+<U7AD5> /xe2/x89 <CJK>
-+<U7AD3> /xe2/x8a <CJK>
-+<U7AD9> /xe2/x8b <CJK>
-+<U7ADA> /xe2/x8c <CJK>
-+<U7ADD> /xe2/x8d <CJK>
-+<U7AE1> /xe2/x8e <CJK>
-+<U7AE2> /xe2/x8f <CJK>
-+<U7AE6> /xe2/x90 <CJK>
-+<U7AED> /xe2/x91 <CJK>
-+<U7AF0> /xe2/x92 <CJK>
-+<U7B02> /xe2/x93 <CJK>
-+<U7B0F> /xe2/x94 <CJK>
-+<U7B0A> /xe2/x95 <CJK>
-+<U7B06> /xe2/x96 <CJK>
-+<U7B33> /xe2/x97 <CJK>
-+<U7B18> /xe2/x98 <CJK>
-+<U7B19> /xe2/x99 <CJK>
-+<U7B1E> /xe2/x9a <CJK>
-+<U7B35> /xe2/x9b <CJK>
-+<U7B28> /xe2/x9c <CJK>
-+<U7B36> /xe2/x9d <CJK>
-+<U7B50> /xe2/x9e <CJK>
-+<U7B7A> /xe2/x9f <CJK>
-+<U7B04> /xe2/xa0 <CJK>
-+<U7B4D> /xe2/xa1 <CJK>
-+<U7B0B> /xe2/xa2 <CJK>
-+<U7B4C> /xe2/xa3 <CJK>
-+<U7B45> /xe2/xa4 <CJK>
-+<U7B75> /xe2/xa5 <CJK>
-+<U7B65> /xe2/xa6 <CJK>
-+<U7B74> /xe2/xa7 <CJK>
-+<U7B67> /xe2/xa8 <CJK>
-+<U7B70> /xe2/xa9 <CJK>
-+<U7B71> /xe2/xaa <CJK>
-+<U7B6C> /xe2/xab <CJK>
-+<U7B6E> /xe2/xac <CJK>
-+<U7B9D> /xe2/xad <CJK>
-+<U7B98> /xe2/xae <CJK>
-+<U7B9F> /xe2/xaf <CJK>
-+<U7B8D> /xe2/xb0 <CJK>
-+<U7B9C> /xe2/xb1 <CJK>
-+<U7B9A> /xe2/xb2 <CJK>
-+<U7B8B> /xe2/xb3 <CJK>
-+<U7B92> /xe2/xb4 <CJK>
-+<U7B8F> /xe2/xb5 <CJK>
-+<U7B5D> /xe2/xb6 <CJK>
-+<U7B99> /xe2/xb7 <CJK>
-+<U7BCB> /xe2/xb8 <CJK>
-+<U7BC1> /xe2/xb9 <CJK>
-+<U7BCC> /xe2/xba <CJK>
-+<U7BCF> /xe2/xbb <CJK>
-+<U7BB4> /xe2/xbc <CJK>
-+<U7BC6> /xe2/xbd <CJK>
-+<U7BDD> /xe2/xbe <CJK>
-+<U7BE9> /xe2/xbf <CJK>
-+<U7C11> /xe2/xc0 <CJK>
-+<U7C14> /xe2/xc1 <CJK>
-+<U7BE6> /xe2/xc2 <CJK>
-+<U7BE5> /xe2/xc3 <CJK>
-+<U7C60> /xe2/xc4 <CJK>
-+<U7C00> /xe2/xc5 <CJK>
-+<U7C07> /xe2/xc6 <CJK>
-+<U7C13> /xe2/xc7 <CJK>
-+<U7BF3> /xe2/xc8 <CJK>
-+<U7BF7> /xe2/xc9 <CJK>
-+<U7C17> /xe2/xca <CJK>
-+<U7C0D> /xe2/xcb <CJK>
-+<U7BF6> /xe2/xcc <CJK>
-+<U7C23> /xe2/xcd <CJK>
-+<U7C27> /xe2/xce <CJK>
-+<U7C2A> /xe2/xcf <CJK>
-+<U7C1F> /xe2/xd0 <CJK>
-+<U7C37> /xe2/xd1 <CJK>
-+<U7C2B> /xe2/xd2 <CJK>
-+<U7C3D> /xe2/xd3 <CJK>
-+<U7C4C> /xe2/xd4 <CJK>
-+<U7C43> /xe2/xd5 <CJK>
-+<U7C54> /xe2/xd6 <CJK>
-+<U7C4F> /xe2/xd7 <CJK>
-+<U7C40> /xe2/xd8 <CJK>
-+<U7C50> /xe2/xd9 <CJK>
-+<U7C58> /xe2/xda <CJK>
-+<U7C5F> /xe2/xdb <CJK>
-+<U7C64> /xe2/xdc <CJK>
-+<U7C56> /xe2/xdd <CJK>
-+<U7C65> /xe2/xde <CJK>
-+<U7C6C> /xe2/xdf <CJK>
-+<U7C75> /xe2/xe0 <CJK>
-+<U7C83> /xe2/xe1 <CJK>
-+<U7C90> /xe2/xe2 <CJK>
-+<U7CA4> /xe2/xe3 <CJK>
-+<U7CAD> /xe2/xe4 <CJK>
-+<U7CA2> /xe2/xe5 <CJK>
-+<U7CAB> /xe2/xe6 <CJK>
-+<U7CA1> /xe2/xe7 <CJK>
-+<U7CA8> /xe2/xe8 <CJK>
-+<U7CB3> /xe2/xe9 <CJK>
-+<U7CB2> /xe2/xea <CJK>
-+<U7CB1> /xe2/xeb <CJK>
-+<U7CAE> /xe2/xec <CJK>
-+<U7CB9> /xe2/xed <CJK>
-+<U7CBD> /xe2/xee <CJK>
-+<U7CC0> /xe2/xef <CJK>
-+<U7CC5> /xe2/xf0 <CJK>
-+<U7CC2> /xe2/xf1 <CJK>
-+<U7CD8> /xe2/xf2 <CJK>
-+<U7CD2> /xe2/xf3 <CJK>
-+<U7CDC> /xe2/xf4 <CJK>
-+<U7CE2> /xe2/xf5 <CJK>
-+<U9B3B> /xe2/xf6 <CJK>
-+<U7CEF> /xe2/xf7 <CJK>
-+<U7CF2> /xe2/xf8 <CJK>
-+<U7CF4> /xe2/xf9 <CJK>
-+<U7CF6> /xe2/xfa <CJK>
-+<U7CFA> /xe2/xfb <CJK>
-+<U7D06> /xe2/xfc <CJK>
-+<U7D02> /xe3/x40 <CJK>
-+<U7D1C> /xe3/x41 <CJK>
-+<U7D15> /xe3/x42 <CJK>
-+<U7D0A> /xe3/x43 <CJK>
-+<U7D45> /xe3/x44 <CJK>
-+<U7D4B> /xe3/x45 <CJK>
-+<U7D2E> /xe3/x46 <CJK>
-+<U7D32> /xe3/x47 <CJK>
-+<U7D3F> /xe3/x48 <CJK>
-+<U7D35> /xe3/x49 <CJK>
-+<U7D46> /xe3/x4a <CJK>
-+<U7D73> /xe3/x4b <CJK>
-+<U7D56> /xe3/x4c <CJK>
-+<U7D4E> /xe3/x4d <CJK>
-+<U7D72> /xe3/x4e <CJK>
-+<U7D68> /xe3/x4f <CJK>
-+<U7D6E> /xe3/x50 <CJK>
-+<U7D4F> /xe3/x51 <CJK>
-+<U7D63> /xe3/x52 <CJK>
-+<U7D93> /xe3/x53 <CJK>
-+<U7D89> /xe3/x54 <CJK>
-+<U7D5B> /xe3/x55 <CJK>
-+<U7D8F> /xe3/x56 <CJK>
-+<U7D7D> /xe3/x57 <CJK>
-+<U7D9B> /xe3/x58 <CJK>
-+<U7DBA> /xe3/x59 <CJK>
-+<U7DAE> /xe3/x5a <CJK>
-+<U7DA3> /xe3/x5b <CJK>
-+<U7DB5> /xe3/x5c <CJK>
-+<U7DC7> /xe3/x5d <CJK>
-+<U7DBD> /xe3/x5e <CJK>
-+<U7DAB> /xe3/x5f <CJK>
-+<U7E3D> /xe3/x60 <CJK>
-+<U7DA2> /xe3/x61 <CJK>
-+<U7DAF> /xe3/x62 <CJK>
-+<U7DDC> /xe3/x63 <CJK>
-+<U7DB8> /xe3/x64 <CJK>
-+<U7D9F> /xe3/x65 <CJK>
-+<U7DB0> /xe3/x66 <CJK>
-+<U7DD8> /xe3/x67 <CJK>
-+<U7DDD> /xe3/x68 <CJK>
-+<U7DE4> /xe3/x69 <CJK>
-+<U7DDE> /xe3/x6a <CJK>
-+<U7DFB> /xe3/x6b <CJK>
-+<U7DF2> /xe3/x6c <CJK>
-+<U7DE1> /xe3/x6d <CJK>
-+<U7E05> /xe3/x6e <CJK>
-+<U7E0A> /xe3/x6f <CJK>
-+<U7E23> /xe3/x70 <CJK>
-+<U7E21> /xe3/x71 <CJK>
-+<U7E12> /xe3/x72 <CJK>
-+<U7E31> /xe3/x73 <CJK>
-+<U7E1F> /xe3/x74 <CJK>
-+<U7E09> /xe3/x75 <CJK>
-+<U7E0B> /xe3/x76 <CJK>
-+<U7E22> /xe3/x77 <CJK>
-+<U7E46> /xe3/x78 <CJK>
-+<U7E66> /xe3/x79 <CJK>
-+<U7E3B> /xe3/x7a <CJK>
-+<U7E35> /xe3/x7b <CJK>
-+<U7E39> /xe3/x7c <CJK>
-+<U7E43> /xe3/x7d <CJK>
-+<U7E37> /xe3/x7e <CJK>
-+<U7E32> /xe3/x80 <CJK>
-+<U7E3A> /xe3/x81 <CJK>
-+<U7E67> /xe3/x82 <CJK>
-+<U7E5D> /xe3/x83 <CJK>
-+<U7E56> /xe3/x84 <CJK>
-+<U7E5E> /xe3/x85 <CJK>
-+<U7E59> /xe3/x86 <CJK>
-+<U7E5A> /xe3/x87 <CJK>
-+<U7E79> /xe3/x88 <CJK>
-+<U7E6A> /xe3/x89 <CJK>
-+<U7E69> /xe3/x8a <CJK>
-+<U7E7C> /xe3/x8b <CJK>
-+<U7E7B> /xe3/x8c <CJK>
-+<U7E83> /xe3/x8d <CJK>
-+<U7DD5> /xe3/x8e <CJK>
-+<U7E7D> /xe3/x8f <CJK>
-+<U8FAE> /xe3/x90 <CJK>
-+<U7E7F> /xe3/x91 <CJK>
-+<U7E88> /xe3/x92 <CJK>
-+<U7E89> /xe3/x93 <CJK>
-+<U7E8C> /xe3/x94 <CJK>
-+<U7E92> /xe3/x95 <CJK>
-+<U7E90> /xe3/x96 <CJK>
-+<U7E93> /xe3/x97 <CJK>
-+<U7E94> /xe3/x98 <CJK>
-+<U7E96> /xe3/x99 <CJK>
-+<U7E8E> /xe3/x9a <CJK>
-+<U7E9B> /xe3/x9b <CJK>
-+<U7E9C> /xe3/x9c <CJK>
-+<U7F38> /xe3/x9d <CJK>
-+<U7F3A> /xe3/x9e <CJK>
-+<U7F45> /xe3/x9f <CJK>
-+<U7F4C> /xe3/xa0 <CJK>
-+<U7F4D> /xe3/xa1 <CJK>
-+<U7F4E> /xe3/xa2 <CJK>
-+<U7F50> /xe3/xa3 <CJK>
-+<U7F51> /xe3/xa4 <CJK>
-+<U7F55> /xe3/xa5 <CJK>
-+<U7F54> /xe3/xa6 <CJK>
-+<U7F58> /xe3/xa7 <CJK>
-+<U7F5F> /xe3/xa8 <CJK>
-+<U7F60> /xe3/xa9 <CJK>
-+<U7F68> /xe3/xaa <CJK>
-+<U7F69> /xe3/xab <CJK>
-+<U7F67> /xe3/xac <CJK>
-+<U7F78> /xe3/xad <CJK>
-+<U7F82> /xe3/xae <CJK>
-+<U7F86> /xe3/xaf <CJK>
-+<U7F83> /xe3/xb0 <CJK>
-+<U7F88> /xe3/xb1 <CJK>
-+<U7F87> /xe3/xb2 <CJK>
-+<U7F8C> /xe3/xb3 <CJK>
-+<U7F94> /xe3/xb4 <CJK>
-+<U7F9E> /xe3/xb5 <CJK>
-+<U7F9D> /xe3/xb6 <CJK>
-+<U7F9A> /xe3/xb7 <CJK>
-+<U7FA3> /xe3/xb8 <CJK>
-+<U7FAF> /xe3/xb9 <CJK>
-+<U7FB2> /xe3/xba <CJK>
-+<U7FB9> /xe3/xbb <CJK>
-+<U7FAE> /xe3/xbc <CJK>
-+<U7FB6> /xe3/xbd <CJK>
-+<U7FB8> /xe3/xbe <CJK>
-+<U8B71> /xe3/xbf <CJK>
-+<U7FC5> /xe3/xc0 <CJK>
-+<U7FC6> /xe3/xc1 <CJK>
-+<U7FCA> /xe3/xc2 <CJK>
-+<U7FD5> /xe3/xc3 <CJK>
-+<U7FD4> /xe3/xc4 <CJK>
-+<U7FE1> /xe3/xc5 <CJK>
-+<U7FE6> /xe3/xc6 <CJK>
-+<U7FE9> /xe3/xc7 <CJK>
-+<U7FF3> /xe3/xc8 <CJK>
-+<U7FF9> /xe3/xc9 <CJK>
-+<U98DC> /xe3/xca <CJK>
-+<U8006> /xe3/xcb <CJK>
-+<U8004> /xe3/xcc <CJK>
-+<U800B> /xe3/xcd <CJK>
-+<U8012> /xe3/xce <CJK>
-+<U8018> /xe3/xcf <CJK>
-+<U8019> /xe3/xd0 <CJK>
-+<U801C> /xe3/xd1 <CJK>
-+<U8021> /xe3/xd2 <CJK>
-+<U8028> /xe3/xd3 <CJK>
-+<U803F> /xe3/xd4 <CJK>
-+<U803B> /xe3/xd5 <CJK>
-+<U804A> /xe3/xd6 <CJK>
-+<U8046> /xe3/xd7 <CJK>
-+<U8052> /xe3/xd8 <CJK>
-+<U8058> /xe3/xd9 <CJK>
-+<U805A> /xe3/xda <CJK>
-+<U805F> /xe3/xdb <CJK>
-+<U8062> /xe3/xdc <CJK>
-+<U8068> /xe3/xdd <CJK>
-+<U8073> /xe3/xde <CJK>
-+<U8072> /xe3/xdf <CJK>
-+<U8070> /xe3/xe0 <CJK>
-+<U8076> /xe3/xe1 <CJK>
-+<U8079> /xe3/xe2 <CJK>
-+<U807D> /xe3/xe3 <CJK>
-+<U807F> /xe3/xe4 <CJK>
-+<U8084> /xe3/xe5 <CJK>
-+<U8086> /xe3/xe6 <CJK>
-+<U8085> /xe3/xe7 <CJK>
-+<U809B> /xe3/xe8 <CJK>
-+<U8093> /xe3/xe9 <CJK>
-+<U809A> /xe3/xea <CJK>
-+<U80AD> /xe3/xeb <CJK>
-+<U5190> /xe3/xec <CJK>
-+<U80AC> /xe3/xed <CJK>
-+<U80DB> /xe3/xee <CJK>
-+<U80E5> /xe3/xef <CJK>
-+<U80D9> /xe3/xf0 <CJK>
-+<U80DD> /xe3/xf1 <CJK>
-+<U80C4> /xe3/xf2 <CJK>
-+<U80DA> /xe3/xf3 <CJK>
-+<U80D6> /xe3/xf4 <CJK>
-+<U8109> /xe3/xf5 <CJK>
-+<U80EF> /xe3/xf6 <CJK>
-+<U80F1> /xe3/xf7 <CJK>
-+<U811B> /xe3/xf8 <CJK>
-+<U8129> /xe3/xf9 <CJK>
-+<U8123> /xe3/xfa <CJK>
-+<U812F> /xe3/xfb <CJK>
-+<U814B> /xe3/xfc <CJK>
-+<U968B> /xe4/x40 <CJK>
-+<U8146> /xe4/x41 <CJK>
-+<U813E> /xe4/x42 <CJK>
-+<U8153> /xe4/x43 <CJK>
-+<U8151> /xe4/x44 <CJK>
-+<U80FC> /xe4/x45 <CJK>
-+<U8171> /xe4/x46 <CJK>
-+<U816E> /xe4/x47 <CJK>
-+<U8165> /xe4/x48 <CJK>
-+<U8166> /xe4/x49 <CJK>
-+<U8174> /xe4/x4a <CJK>
-+<U8183> /xe4/x4b <CJK>
-+<U8188> /xe4/x4c <CJK>
-+<U818A> /xe4/x4d <CJK>
-+<U8180> /xe4/x4e <CJK>
-+<U8182> /xe4/x4f <CJK>
-+<U81A0> /xe4/x50 <CJK>
-+<U8195> /xe4/x51 <CJK>
-+<U81A4> /xe4/x52 <CJK>
-+<U81A3> /xe4/x53 <CJK>
-+<U815F> /xe4/x54 <CJK>
-+<U8193> /xe4/x55 <CJK>
-+<U81A9> /xe4/x56 <CJK>
-+<U81B0> /xe4/x57 <CJK>
-+<U81B5> /xe4/x58 <CJK>
-+<U81BE> /xe4/x59 <CJK>
-+<U81B8> /xe4/x5a <CJK>
-+<U81BD> /xe4/x5b <CJK>
-+<U81C0> /xe4/x5c <CJK>
-+<U81C2> /xe4/x5d <CJK>
-+<U81BA> /xe4/x5e <CJK>
-+<U81C9> /xe4/x5f <CJK>
-+<U81CD> /xe4/x60 <CJK>
-+<U81D1> /xe4/x61 <CJK>
-+<U81D9> /xe4/x62 <CJK>
-+<U81D8> /xe4/x63 <CJK>
-+<U81C8> /xe4/x64 <CJK>
-+<U81DA> /xe4/x65 <CJK>
-+<U81DF> /xe4/x66 <CJK>
-+<U81E0> /xe4/x67 <CJK>
-+<U81E7> /xe4/x68 <CJK>
-+<U81FA> /xe4/x69 <CJK>
-+<U81FB> /xe4/x6a <CJK>
-+<U81FE> /xe4/x6b <CJK>
-+<U8201> /xe4/x6c <CJK>
-+<U8202> /xe4/x6d <CJK>
-+<U8205> /xe4/x6e <CJK>
-+<U8207> /xe4/x6f <CJK>
-+<U820A> /xe4/x70 <CJK>
-+<U820D> /xe4/x71 <CJK>
-+<U8210> /xe4/x72 <CJK>
-+<U8216> /xe4/x73 <CJK>
-+<U8229> /xe4/x74 <CJK>
-+<U822B> /xe4/x75 <CJK>
-+<U8238> /xe4/x76 <CJK>
-+<U8233> /xe4/x77 <CJK>
-+<U8240> /xe4/x78 <CJK>
-+<U8259> /xe4/x79 <CJK>
-+<U8258> /xe4/x7a <CJK>
-+<U825D> /xe4/x7b <CJK>
-+<U825A> /xe4/x7c <CJK>
-+<U825F> /xe4/x7d <CJK>
-+<U8264> /xe4/x7e <CJK>
-+<U8262> /xe4/x80 <CJK>
-+<U8268> /xe4/x81 <CJK>
-+<U826A> /xe4/x82 <CJK>
-+<U826B> /xe4/x83 <CJK>
-+<U822E> /xe4/x84 <CJK>
-+<U8271> /xe4/x85 <CJK>
-+<U8277> /xe4/x86 <CJK>
-+<U8278> /xe4/x87 <CJK>
-+<U827E> /xe4/x88 <CJK>
-+<U828D> /xe4/x89 <CJK>
-+<U8292> /xe4/x8a <CJK>
-+<U82AB> /xe4/x8b <CJK>
-+<U829F> /xe4/x8c <CJK>
-+<U82BB> /xe4/x8d <CJK>
-+<U82AC> /xe4/x8e <CJK>
-+<U82E1> /xe4/x8f <CJK>
-+<U82E3> /xe4/x90 <CJK>
-+<U82DF> /xe4/x91 <CJK>
-+<U82D2> /xe4/x92 <CJK>
-+<U82F4> /xe4/x93 <CJK>
-+<U82F3> /xe4/x94 <CJK>
-+<U82FA> /xe4/x95 <CJK>
-+<U8393> /xe4/x96 <CJK>
-+<U8303> /xe4/x97 <CJK>
-+<U82FB> /xe4/x98 <CJK>
-+<U82F9> /xe4/x99 <CJK>
-+<U82DE> /xe4/x9a <CJK>
-+<U8306> /xe4/x9b <CJK>
-+<U82DC> /xe4/x9c <CJK>
-+<U8309> /xe4/x9d <CJK>
-+<U82D9> /xe4/x9e <CJK>
-+<U8335> /xe4/x9f <CJK>
-+<U8334> /xe4/xa0 <CJK>
-+<U8316> /xe4/xa1 <CJK>
-+<U8332> /xe4/xa2 <CJK>
-+<U8331> /xe4/xa3 <CJK>
-+<U8340> /xe4/xa4 <CJK>
-+<U8339> /xe4/xa5 <CJK>
-+<U8350> /xe4/xa6 <CJK>
-+<U8345> /xe4/xa7 <CJK>
-+<U832F> /xe4/xa8 <CJK>
-+<U832B> /xe4/xa9 <CJK>
-+<U8317> /xe4/xaa <CJK>
-+<U8318> /xe4/xab <CJK>
-+<U8385> /xe4/xac <CJK>
-+<U839A> /xe4/xad <CJK>
-+<U83AA> /xe4/xae <CJK>
-+<U839F> /xe4/xaf <CJK>
-+<U83A2> /xe4/xb0 <CJK>
-+<U8396> /xe4/xb1 <CJK>
-+<U8323> /xe4/xb2 <CJK>
-+<U838E> /xe4/xb3 <CJK>
-+<U8387> /xe4/xb4 <CJK>
-+<U838A> /xe4/xb5 <CJK>
-+<U837C> /xe4/xb6 <CJK>
-+<U83B5> /xe4/xb7 <CJK>
-+<U8373> /xe4/xb8 <CJK>
-+<U8375> /xe4/xb9 <CJK>
-+<U83A0> /xe4/xba <CJK>
-+<U8389> /xe4/xbb <CJK>
-+<U83A8> /xe4/xbc <CJK>
-+<U83F4> /xe4/xbd <CJK>
-+<U8413> /xe4/xbe <CJK>
-+<U83EB> /xe4/xbf <CJK>
-+<U83CE> /xe4/xc0 <CJK>
-+<U83FD> /xe4/xc1 <CJK>
-+<U8403> /xe4/xc2 <CJK>
-+<U83D8> /xe4/xc3 <CJK>
-+<U840B> /xe4/xc4 <CJK>
-+<U83C1> /xe4/xc5 <CJK>
-+<U83F7> /xe4/xc6 <CJK>
-+<U8407> /xe4/xc7 <CJK>
-+<U83E0> /xe4/xc8 <CJK>
-+<U83F2> /xe4/xc9 <CJK>
-+<U840D> /xe4/xca <CJK>
-+<U8422> /xe4/xcb <CJK>
-+<U8420> /xe4/xcc <CJK>
-+<U83BD> /xe4/xcd <CJK>
-+<U8438> /xe4/xce <CJK>
-+<U8506> /xe4/xcf <CJK>
-+<U83FB> /xe4/xd0 <CJK>
-+<U846D> /xe4/xd1 <CJK>
-+<U842A> /xe4/xd2 <CJK>
-+<U843C> /xe4/xd3 <CJK>
-+<U855A> /xe4/xd4 <CJK>
-+<U8484> /xe4/xd5 <CJK>
-+<U8477> /xe4/xd6 <CJK>
-+<U846B> /xe4/xd7 <CJK>
-+<U84AD> /xe4/xd8 <CJK>
-+<U846E> /xe4/xd9 <CJK>
-+<U8482> /xe4/xda <CJK>
-+<U8469> /xe4/xdb <CJK>
-+<U8446> /xe4/xdc <CJK>
-+<U842C> /xe4/xdd <CJK>
-+<U846F> /xe4/xde <CJK>
-+<U8479> /xe4/xdf <CJK>
-+<U8435> /xe4/xe0 <CJK>
-+<U84CA> /xe4/xe1 <CJK>
-+<U8462> /xe4/xe2 <CJK>
-+<U84B9> /xe4/xe3 <CJK>
-+<U84BF> /xe4/xe4 <CJK>
-+<U849F> /xe4/xe5 <CJK>
-+<U84D9> /xe4/xe6 <CJK>
-+<U84CD> /xe4/xe7 <CJK>
-+<U84BB> /xe4/xe8 <CJK>
-+<U84DA> /xe4/xe9 <CJK>
-+<U84D0> /xe4/xea <CJK>
-+<U84C1> /xe4/xeb <CJK>
-+<U84C6> /xe4/xec <CJK>
-+<U84D6> /xe4/xed <CJK>
-+<U84A1> /xe4/xee <CJK>
-+<U8521> /xe4/xef <CJK>
-+<U84FF> /xe4/xf0 <CJK>
-+<U84F4> /xe4/xf1 <CJK>
-+<U8517> /xe4/xf2 <CJK>
-+<U8518> /xe4/xf3 <CJK>
-+<U852C> /xe4/xf4 <CJK>
-+<U851F> /xe4/xf5 <CJK>
-+<U8515> /xe4/xf6 <CJK>
-+<U8514> /xe4/xf7 <CJK>
-+<U84FC> /xe4/xf8 <CJK>
-+<U8540> /xe4/xf9 <CJK>
-+<U8563> /xe4/xfa <CJK>
-+<U8558> /xe4/xfb <CJK>
-+<U8548> /xe4/xfc <CJK>
-+<U8541> /xe5/x40 <CJK>
-+<U8602> /xe5/x41 <CJK>
-+<U854B> /xe5/x42 <CJK>
-+<U8555> /xe5/x43 <CJK>
-+<U8580> /xe5/x44 <CJK>
-+<U85A4> /xe5/x45 <CJK>
-+<U8588> /xe5/x46 <CJK>
-+<U8591> /xe5/x47 <CJK>
-+<U858A> /xe5/x48 <CJK>
-+<U85A8> /xe5/x49 <CJK>
-+<U856D> /xe5/x4a <CJK>
-+<U8594> /xe5/x4b <CJK>
-+<U859B> /xe5/x4c <CJK>
-+<U85EA> /xe5/x4d <CJK>
-+<U8587> /xe5/x4e <CJK>
-+<U859C> /xe5/x4f <CJK>
-+<U8577> /xe5/x50 <CJK>
-+<U857E> /xe5/x51 <CJK>
-+<U8590> /xe5/x52 <CJK>
-+<U85C9> /xe5/x53 <CJK>
-+<U85BA> /xe5/x54 <CJK>
-+<U85CF> /xe5/x55 <CJK>
-+<U85B9> /xe5/x56 <CJK>
-+<U85D0> /xe5/x57 <CJK>
-+<U85D5> /xe5/x58 <CJK>
-+<U85DD> /xe5/x59 <CJK>
-+<U85E5> /xe5/x5a <CJK>
-+<U85DC> /xe5/x5b <CJK>
-+<U85F9> /xe5/x5c <CJK>
-+<U860A> /xe5/x5d <CJK>
-+<U8613> /xe5/x5e <CJK>
-+<U860B> /xe5/x5f <CJK>
-+<U85FE> /xe5/x60 <CJK>
-+<U85FA> /xe5/x61 <CJK>
-+<U8606> /xe5/x62 <CJK>
-+<U8622> /xe5/x63 <CJK>
-+<U861A> /xe5/x64 <CJK>
-+<U8630> /xe5/x65 <CJK>
-+<U863F> /xe5/x66 <CJK>
-+<U864D> /xe5/x67 <CJK>
-+<U4E55> /xe5/x68 <CJK>
-+<U8654> /xe5/x69 <CJK>
-+<U865F> /xe5/x6a <CJK>
-+<U8667> /xe5/x6b <CJK>
-+<U8671> /xe5/x6c <CJK>
-+<U8693> /xe5/x6d <CJK>
-+<U86A3> /xe5/x6e <CJK>
-+<U86A9> /xe5/x6f <CJK>
-+<U86AA> /xe5/x70 <CJK>
-+<U868B> /xe5/x71 <CJK>
-+<U868C> /xe5/x72 <CJK>
-+<U86B6> /xe5/x73 <CJK>
-+<U86AF> /xe5/x74 <CJK>
-+<U86C4> /xe5/x75 <CJK>
-+<U86C6> /xe5/x76 <CJK>
-+<U86B0> /xe5/x77 <CJK>
-+<U86C9> /xe5/x78 <CJK>
-+<U8823> /xe5/x79 <CJK>
-+<U86AB> /xe5/x7a <CJK>
-+<U86D4> /xe5/x7b <CJK>
-+<U86DE> /xe5/x7c <CJK>
-+<U86E9> /xe5/x7d <CJK>
-+<U86EC> /xe5/x7e <CJK>
-+<U86DF> /xe5/x80 <CJK>
-+<U86DB> /xe5/x81 <CJK>
-+<U86EF> /xe5/x82 <CJK>
-+<U8712> /xe5/x83 <CJK>
-+<U8706> /xe5/x84 <CJK>
-+<U8708> /xe5/x85 <CJK>
-+<U8700> /xe5/x86 <CJK>
-+<U8703> /xe5/x87 <CJK>
-+<U86FB> /xe5/x88 <CJK>
-+<U8711> /xe5/x89 <CJK>
-+<U8709> /xe5/x8a <CJK>
-+<U870D> /xe5/x8b <CJK>
-+<U86F9> /xe5/x8c <CJK>
-+<U870A> /xe5/x8d <CJK>
-+<U8734> /xe5/x8e <CJK>
-+<U873F> /xe5/x8f <CJK>
-+<U8737> /xe5/x90 <CJK>
-+<U873B> /xe5/x91 <CJK>
-+<U8725> /xe5/x92 <CJK>
-+<U8729> /xe5/x93 <CJK>
-+<U871A> /xe5/x94 <CJK>
-+<U8760> /xe5/x95 <CJK>
-+<U875F> /xe5/x96 <CJK>
-+<U8778> /xe5/x97 <CJK>
-+<U874C> /xe5/x98 <CJK>
-+<U874E> /xe5/x99 <CJK>
-+<U8774> /xe5/x9a <CJK>
-+<U8757> /xe5/x9b <CJK>
-+<U8768> /xe5/x9c <CJK>
-+<U876E> /xe5/x9d <CJK>
-+<U8759> /xe5/x9e <CJK>
-+<U8753> /xe5/x9f <CJK>
-+<U8763> /xe5/xa0 <CJK>
-+<U876A> /xe5/xa1 <CJK>
-+<U8805> /xe5/xa2 <CJK>
-+<U87A2> /xe5/xa3 <CJK>
-+<U879F> /xe5/xa4 <CJK>
-+<U8782> /xe5/xa5 <CJK>
-+<U87AF> /xe5/xa6 <CJK>
-+<U87CB> /xe5/xa7 <CJK>
-+<U87BD> /xe5/xa8 <CJK>
-+<U87C0> /xe5/xa9 <CJK>
-+<U87D0> /xe5/xaa <CJK>
-+<U96D6> /xe5/xab <CJK>
-+<U87AB> /xe5/xac <CJK>
-+<U87C4> /xe5/xad <CJK>
-+<U87B3> /xe5/xae <CJK>
-+<U87C7> /xe5/xaf <CJK>
-+<U87C6> /xe5/xb0 <CJK>
-+<U87BB> /xe5/xb1 <CJK>
-+<U87EF> /xe5/xb2 <CJK>
-+<U87F2> /xe5/xb3 <CJK>
-+<U87E0> /xe5/xb4 <CJK>
-+<U880F> /xe5/xb5 <CJK>
-+<U880D> /xe5/xb6 <CJK>
-+<U87FE> /xe5/xb7 <CJK>
-+<U87F6> /xe5/xb8 <CJK>
-+<U87F7> /xe5/xb9 <CJK>
-+<U880E> /xe5/xba <CJK>
-+<U87D2> /xe5/xbb <CJK>
-+<U8811> /xe5/xbc <CJK>
-+<U8816> /xe5/xbd <CJK>
-+<U8815> /xe5/xbe <CJK>
-+<U8822> /xe5/xbf <CJK>
-+<U8821> /xe5/xc0 <CJK>
-+<U8831> /xe5/xc1 <CJK>
-+<U8836> /xe5/xc2 <CJK>
-+<U8839> /xe5/xc3 <CJK>
-+<U8827> /xe5/xc4 <CJK>
-+<U883B> /xe5/xc5 <CJK>
-+<U8844> /xe5/xc6 <CJK>
-+<U8842> /xe5/xc7 <CJK>
-+<U8852> /xe5/xc8 <CJK>
-+<U8859> /xe5/xc9 <CJK>
-+<U885E> /xe5/xca <CJK>
-+<U8862> /xe5/xcb <CJK>
-+<U886B> /xe5/xcc <CJK>
-+<U8881> /xe5/xcd <CJK>
-+<U887E> /xe5/xce <CJK>
-+<U889E> /xe5/xcf <CJK>
-+<U8875> /xe5/xd0 <CJK>
-+<U887D> /xe5/xd1 <CJK>
-+<U88B5> /xe5/xd2 <CJK>
-+<U8872> /xe5/xd3 <CJK>
-+<U8882> /xe5/xd4 <CJK>
-+<U8897> /xe5/xd5 <CJK>
-+<U8892> /xe5/xd6 <CJK>
-+<U88AE> /xe5/xd7 <CJK>
-+<U8899> /xe5/xd8 <CJK>
-+<U88A2> /xe5/xd9 <CJK>
-+<U888D> /xe5/xda <CJK>
-+<U88A4> /xe5/xdb <CJK>
-+<U88B0> /xe5/xdc <CJK>
-+<U88BF> /xe5/xdd <CJK>
-+<U88B1> /xe5/xde <CJK>
-+<U88C3> /xe5/xdf <CJK>
-+<U88C4> /xe5/xe0 <CJK>
-+<U88D4> /xe5/xe1 <CJK>
-+<U88D8> /xe5/xe2 <CJK>
-+<U88D9> /xe5/xe3 <CJK>
-+<U88DD> /xe5/xe4 <CJK>
-+<U88F9> /xe5/xe5 <CJK>
-+<U8902> /xe5/xe6 <CJK>
-+<U88FC> /xe5/xe7 <CJK>
-+<U88F4> /xe5/xe8 <CJK>
-+<U88E8> /xe5/xe9 <CJK>
-+<U88F2> /xe5/xea <CJK>
-+<U8904> /xe5/xeb <CJK>
-+<U890C> /xe5/xec <CJK>
-+<U890A> /xe5/xed <CJK>
-+<U8913> /xe5/xee <CJK>
-+<U8943> /xe5/xef <CJK>
-+<U891E> /xe5/xf0 <CJK>
-+<U8925> /xe5/xf1 <CJK>
-+<U892A> /xe5/xf2 <CJK>
-+<U892B> /xe5/xf3 <CJK>
-+<U8941> /xe5/xf4 <CJK>
-+<U8944> /xe5/xf5 <CJK>
-+<U893B> /xe5/xf6 <CJK>
-+<U8936> /xe5/xf7 <CJK>
-+<U8938> /xe5/xf8 <CJK>
-+<U894C> /xe5/xf9 <CJK>
-+<U891D> /xe5/xfa <CJK>
-+<U8960> /xe5/xfb <CJK>
-+<U895E> /xe5/xfc <CJK>
-+<U8966> /xe6/x40 <CJK>
-+<U8964> /xe6/x41 <CJK>
-+<U896D> /xe6/x42 <CJK>
-+<U896A> /xe6/x43 <CJK>
-+<U896F> /xe6/x44 <CJK>
-+<U8974> /xe6/x45 <CJK>
-+<U8977> /xe6/x46 <CJK>
-+<U897E> /xe6/x47 <CJK>
-+<U8983> /xe6/x48 <CJK>
-+<U8988> /xe6/x49 <CJK>
-+<U898A> /xe6/x4a <CJK>
-+<U8993> /xe6/x4b <CJK>
-+<U8998> /xe6/x4c <CJK>
-+<U89A1> /xe6/x4d <CJK>
-+<U89A9> /xe6/x4e <CJK>
-+<U89A6> /xe6/x4f <CJK>
-+<U89AC> /xe6/x50 <CJK>
-+<U89AF> /xe6/x51 <CJK>
-+<U89B2> /xe6/x52 <CJK>
-+<U89BA> /xe6/x53 <CJK>
-+<U89BD> /xe6/x54 <CJK>
-+<U89BF> /xe6/x55 <CJK>
-+<U89C0> /xe6/x56 <CJK>
-+<U89DA> /xe6/x57 <CJK>
-+<U89DC> /xe6/x58 <CJK>
-+<U89DD> /xe6/x59 <CJK>
-+<U89E7> /xe6/x5a <CJK>
-+<U89F4> /xe6/x5b <CJK>
-+<U89F8> /xe6/x5c <CJK>
-+<U8A03> /xe6/x5d <CJK>
-+<U8A16> /xe6/x5e <CJK>
-+<U8A10> /xe6/x5f <CJK>
-+<U8A0C> /xe6/x60 <CJK>
-+<U8A1B> /xe6/x61 <CJK>
-+<U8A1D> /xe6/x62 <CJK>
-+<U8A25> /xe6/x63 <CJK>
-+<U8A36> /xe6/x64 <CJK>
-+<U8A41> /xe6/x65 <CJK>
-+<U8A5B> /xe6/x66 <CJK>
-+<U8A52> /xe6/x67 <CJK>
-+<U8A46> /xe6/x68 <CJK>
-+<U8A48> /xe6/x69 <CJK>
-+<U8A7C> /xe6/x6a <CJK>
-+<U8A6D> /xe6/x6b <CJK>
-+<U8A6C> /xe6/x6c <CJK>
-+<U8A62> /xe6/x6d <CJK>
-+<U8A85> /xe6/x6e <CJK>
-+<U8A82> /xe6/x6f <CJK>
-+<U8A84> /xe6/x70 <CJK>
-+<U8AA8> /xe6/x71 <CJK>
-+<U8AA1> /xe6/x72 <CJK>
-+<U8A91> /xe6/x73 <CJK>
-+<U8AA5> /xe6/x74 <CJK>
-+<U8AA6> /xe6/x75 <CJK>
-+<U8A9A> /xe6/x76 <CJK>
-+<U8AA3> /xe6/x77 <CJK>
-+<U8AC4> /xe6/x78 <CJK>
-+<U8ACD> /xe6/x79 <CJK>
-+<U8AC2> /xe6/x7a <CJK>
-+<U8ADA> /xe6/x7b <CJK>
-+<U8AEB> /xe6/x7c <CJK>
-+<U8AF3> /xe6/x7d <CJK>
-+<U8AE7> /xe6/x7e <CJK>
-+<U8AE4> /xe6/x80 <CJK>
-+<U8AF1> /xe6/x81 <CJK>
-+<U8B14> /xe6/x82 <CJK>
-+<U8AE0> /xe6/x83 <CJK>
-+<U8AE2> /xe6/x84 <CJK>
-+<U8AF7> /xe6/x85 <CJK>
-+<U8ADE> /xe6/x86 <CJK>
-+<U8ADB> /xe6/x87 <CJK>
-+<U8B0C> /xe6/x88 <CJK>
-+<U8B07> /xe6/x89 <CJK>
-+<U8B1A> /xe6/x8a <CJK>
-+<U8AE1> /xe6/x8b <CJK>
-+<U8B16> /xe6/x8c <CJK>
-+<U8B10> /xe6/x8d <CJK>
-+<U8B17> /xe6/x8e <CJK>
-+<U8B20> /xe6/x8f <CJK>
-+<U8B33> /xe6/x90 <CJK>
-+<U97AB> /xe6/x91 <CJK>
-+<U8B26> /xe6/x92 <CJK>
-+<U8B2B> /xe6/x93 <CJK>
-+<U8B3E> /xe6/x94 <CJK>
-+<U8B28> /xe6/x95 <CJK>
-+<U8B41> /xe6/x96 <CJK>
-+<U8B4C> /xe6/x97 <CJK>
-+<U8B4F> /xe6/x98 <CJK>
-+<U8B4E> /xe6/x99 <CJK>
-+<U8B49> /xe6/x9a <CJK>
-+<U8B56> /xe6/x9b <CJK>
-+<U8B5B> /xe6/x9c <CJK>
-+<U8B5A> /xe6/x9d <CJK>
-+<U8B6B> /xe6/x9e <CJK>
-+<U8B5F> /xe6/x9f <CJK>
-+<U8B6C> /xe6/xa0 <CJK>
-+<U8B6F> /xe6/xa1 <CJK>
-+<U8B74> /xe6/xa2 <CJK>
-+<U8B7D> /xe6/xa3 <CJK>
-+<U8B80> /xe6/xa4 <CJK>
-+<U8B8C> /xe6/xa5 <CJK>
-+<U8B8E> /xe6/xa6 <CJK>
-+<U8B92> /xe6/xa7 <CJK>
-+<U8B93> /xe6/xa8 <CJK>
-+<U8B96> /xe6/xa9 <CJK>
-+<U8B99> /xe6/xaa <CJK>
-+<U8B9A> /xe6/xab <CJK>
-+<U8C3A> /xe6/xac <CJK>
-+<U8C41> /xe6/xad <CJK>
-+<U8C3F> /xe6/xae <CJK>
-+<U8C48> /xe6/xaf <CJK>
-+<U8C4C> /xe6/xb0 <CJK>
-+<U8C4E> /xe6/xb1 <CJK>
-+<U8C50> /xe6/xb2 <CJK>
-+<U8C55> /xe6/xb3 <CJK>
-+<U8C62> /xe6/xb4 <CJK>
-+<U8C6C> /xe6/xb5 <CJK>
-+<U8C78> /xe6/xb6 <CJK>
-+<U8C7A> /xe6/xb7 <CJK>
-+<U8C82> /xe6/xb8 <CJK>
-+<U8C89> /xe6/xb9 <CJK>
-+<U8C85> /xe6/xba <CJK>
-+<U8C8A> /xe6/xbb <CJK>
-+<U8C8D> /xe6/xbc <CJK>
-+<U8C8E> /xe6/xbd <CJK>
-+<U8C94> /xe6/xbe <CJK>
-+<U8C7C> /xe6/xbf <CJK>
-+<U8C98> /xe6/xc0 <CJK>
-+<U621D> /xe6/xc1 <CJK>
-+<U8CAD> /xe6/xc2 <CJK>
-+<U8CAA> /xe6/xc3 <CJK>
-+<U8CBD> /xe6/xc4 <CJK>
-+<U8CB2> /xe6/xc5 <CJK>
-+<U8CB3> /xe6/xc6 <CJK>
-+<U8CAE> /xe6/xc7 <CJK>
-+<U8CB6> /xe6/xc8 <CJK>
-+<U8CC8> /xe6/xc9 <CJK>
-+<U8CC1> /xe6/xca <CJK>
-+<U8CE4> /xe6/xcb <CJK>
-+<U8CE3> /xe6/xcc <CJK>
-+<U8CDA> /xe6/xcd <CJK>
-+<U8CFD> /xe6/xce <CJK>
-+<U8CFA> /xe6/xcf <CJK>
-+<U8CFB> /xe6/xd0 <CJK>
-+<U8D04> /xe6/xd1 <CJK>
-+<U8D05> /xe6/xd2 <CJK>
-+<U8D0A> /xe6/xd3 <CJK>
-+<U8D07> /xe6/xd4 <CJK>
-+<U8D0F> /xe6/xd5 <CJK>
-+<U8D0D> /xe6/xd6 <CJK>
-+<U8D10> /xe6/xd7 <CJK>
-+<U9F4E> /xe6/xd8 <CJK>
-+<U8D13> /xe6/xd9 <CJK>
-+<U8CCD> /xe6/xda <CJK>
-+<U8D14> /xe6/xdb <CJK>
-+<U8D16> /xe6/xdc <CJK>
-+<U8D67> /xe6/xdd <CJK>
-+<U8D6D> /xe6/xde <CJK>
-+<U8D71> /xe6/xdf <CJK>
-+<U8D73> /xe6/xe0 <CJK>
-+<U8D81> /xe6/xe1 <CJK>
-+<U8D99> /xe6/xe2 <CJK>
-+<U8DC2> /xe6/xe3 <CJK>
-+<U8DBE> /xe6/xe4 <CJK>
-+<U8DBA> /xe6/xe5 <CJK>
-+<U8DCF> /xe6/xe6 <CJK>
-+<U8DDA> /xe6/xe7 <CJK>
-+<U8DD6> /xe6/xe8 <CJK>
-+<U8DCC> /xe6/xe9 <CJK>
-+<U8DDB> /xe6/xea <CJK>
-+<U8DCB> /xe6/xeb <CJK>
-+<U8DEA> /xe6/xec <CJK>
-+<U8DEB> /xe6/xed <CJK>
-+<U8DDF> /xe6/xee <CJK>
-+<U8DE3> /xe6/xef <CJK>
-+<U8DFC> /xe6/xf0 <CJK>
-+<U8E08> /xe6/xf1 <CJK>
-+<U8E09> /xe6/xf2 <CJK>
-+<U8DFF> /xe6/xf3 <CJK>
-+<U8E1D> /xe6/xf4 <CJK>
-+<U8E1E> /xe6/xf5 <CJK>
-+<U8E10> /xe6/xf6 <CJK>
-+<U8E1F> /xe6/xf7 <CJK>
-+<U8E42> /xe6/xf8 <CJK>
-+<U8E35> /xe6/xf9 <CJK>
-+<U8E30> /xe6/xfa <CJK>
-+<U8E34> /xe6/xfb <CJK>
-+<U8E4A> /xe6/xfc <CJK>
-+<U8E47> /xe7/x40 <CJK>
-+<U8E49> /xe7/x41 <CJK>
-+<U8E4C> /xe7/x42 <CJK>
-+<U8E50> /xe7/x43 <CJK>
-+<U8E48> /xe7/x44 <CJK>
-+<U8E59> /xe7/x45 <CJK>
-+<U8E64> /xe7/x46 <CJK>
-+<U8E60> /xe7/x47 <CJK>
-+<U8E2A> /xe7/x48 <CJK>
-+<U8E63> /xe7/x49 <CJK>
-+<U8E55> /xe7/x4a <CJK>
-+<U8E76> /xe7/x4b <CJK>
-+<U8E72> /xe7/x4c <CJK>
-+<U8E7C> /xe7/x4d <CJK>
-+<U8E81> /xe7/x4e <CJK>
-+<U8E87> /xe7/x4f <CJK>
-+<U8E85> /xe7/x50 <CJK>
-+<U8E84> /xe7/x51 <CJK>
-+<U8E8B> /xe7/x52 <CJK>
-+<U8E8A> /xe7/x53 <CJK>
-+<U8E93> /xe7/x54 <CJK>
-+<U8E91> /xe7/x55 <CJK>
-+<U8E94> /xe7/x56 <CJK>
-+<U8E99> /xe7/x57 <CJK>
-+<U8EAA> /xe7/x58 <CJK>
-+<U8EA1> /xe7/x59 <CJK>
-+<U8EAC> /xe7/x5a <CJK>
-+<U8EB0> /xe7/x5b <CJK>
-+<U8EC6> /xe7/x5c <CJK>
-+<U8EB1> /xe7/x5d <CJK>
-+<U8EBE> /xe7/x5e <CJK>
-+<U8EC5> /xe7/x5f <CJK>
-+<U8EC8> /xe7/x60 <CJK>
-+<U8ECB> /xe7/x61 <CJK>
-+<U8EDB> /xe7/x62 <CJK>
-+<U8EE3> /xe7/x63 <CJK>
-+<U8EFC> /xe7/x64 <CJK>
-+<U8EFB> /xe7/x65 <CJK>
-+<U8EEB> /xe7/x66 <CJK>
-+<U8EFE> /xe7/x67 <CJK>
-+<U8F0A> /xe7/x68 <CJK>
-+<U8F05> /xe7/x69 <CJK>
-+<U8F15> /xe7/x6a <CJK>
-+<U8F12> /xe7/x6b <CJK>
-+<U8F19> /xe7/x6c <CJK>
-+<U8F13> /xe7/x6d <CJK>
-+<U8F1C> /xe7/x6e <CJK>
-+<U8F1F> /xe7/x6f <CJK>
-+<U8F1B> /xe7/x70 <CJK>
-+<U8F0C> /xe7/x71 <CJK>
-+<U8F26> /xe7/x72 <CJK>
-+<U8F33> /xe7/x73 <CJK>
-+<U8F3B> /xe7/x74 <CJK>
-+<U8F39> /xe7/x75 <CJK>
-+<U8F45> /xe7/x76 <CJK>
-+<U8F42> /xe7/x77 <CJK>
-+<U8F3E> /xe7/x78 <CJK>
-+<U8F4C> /xe7/x79 <CJK>
-+<U8F49> /xe7/x7a <CJK>
-+<U8F46> /xe7/x7b <CJK>
-+<U8F4E> /xe7/x7c <CJK>
-+<U8F57> /xe7/x7d <CJK>
-+<U8F5C> /xe7/x7e <CJK>
-+<U8F62> /xe7/x80 <CJK>
-+<U8F63> /xe7/x81 <CJK>
-+<U8F64> /xe7/x82 <CJK>
-+<U8F9C> /xe7/x83 <CJK>
-+<U8F9F> /xe7/x84 <CJK>
-+<U8FA3> /xe7/x85 <CJK>
-+<U8FAD> /xe7/x86 <CJK>
-+<U8FAF> /xe7/x87 <CJK>
-+<U8FB7> /xe7/x88 <CJK>
-+<U8FDA> /xe7/x89 <CJK>
-+<U8FE5> /xe7/x8a <CJK>
-+<U8FE2> /xe7/x8b <CJK>
-+<U8FEA> /xe7/x8c <CJK>
-+<U8FEF> /xe7/x8d <CJK>
-+<U9087> /xe7/x8e <CJK>
-+<U8FF4> /xe7/x8f <CJK>
-+<U9005> /xe7/x90 <CJK>
-+<U8FF9> /xe7/x91 <CJK>
-+<U8FFA> /xe7/x92 <CJK>
-+<U9011> /xe7/x93 <CJK>
-+<U9015> /xe7/x94 <CJK>
-+<U9021> /xe7/x95 <CJK>
-+<U900D> /xe7/x96 <CJK>
-+<U901E> /xe7/x97 <CJK>
-+<U9016> /xe7/x98 <CJK>
-+<U900B> /xe7/x99 <CJK>
-+<U9027> /xe7/x9a <CJK>
-+<U9036> /xe7/x9b <CJK>
-+<U9035> /xe7/x9c <CJK>
-+<U9039> /xe7/x9d <CJK>
-+<U8FF8> /xe7/x9e <CJK>
-+<U904F> /xe7/x9f <CJK>
-+<U9050> /xe7/xa0 <CJK>
-+<U9051> /xe7/xa1 <CJK>
-+<U9052> /xe7/xa2 <CJK>
-+<U900E> /xe7/xa3 <CJK>
-+<U9049> /xe7/xa4 <CJK>
-+<U903E> /xe7/xa5 <CJK>
-+<U9056> /xe7/xa6 <CJK>
-+<U9058> /xe7/xa7 <CJK>
-+<U905E> /xe7/xa8 <CJK>
-+<U9068> /xe7/xa9 <CJK>
-+<U906F> /xe7/xaa <CJK>
-+<U9076> /xe7/xab <CJK>
-+<U96A8> /xe7/xac <CJK>
-+<U9072> /xe7/xad <CJK>
-+<U9082> /xe7/xae <CJK>
-+<U907D> /xe7/xaf <CJK>
-+<U9081> /xe7/xb0 <CJK>
-+<U9080> /xe7/xb1 <CJK>
-+<U908A> /xe7/xb2 <CJK>
-+<U9089> /xe7/xb3 <CJK>
-+<U908F> /xe7/xb4 <CJK>
-+<U90A8> /xe7/xb5 <CJK>
-+<U90AF> /xe7/xb6 <CJK>
-+<U90B1> /xe7/xb7 <CJK>
-+<U90B5> /xe7/xb8 <CJK>
-+<U90E2> /xe7/xb9 <CJK>
-+<U90E4> /xe7/xba <CJK>
-+<U6248> /xe7/xbb <CJK>
-+<U90DB> /xe7/xbc <CJK>
-+<U9102> /xe7/xbd <CJK>
-+<U9112> /xe7/xbe <CJK>
-+<U9119> /xe7/xbf <CJK>
-+<U9132> /xe7/xc0 <CJK>
-+<U9130> /xe7/xc1 <CJK>
-+<U914A> /xe7/xc2 <CJK>
-+<U9156> /xe7/xc3 <CJK>
-+<U9158> /xe7/xc4 <CJK>
-+<U9163> /xe7/xc5 <CJK>
-+<U9165> /xe7/xc6 <CJK>
-+<U9169> /xe7/xc7 <CJK>
-+<U9173> /xe7/xc8 <CJK>
-+<U9172> /xe7/xc9 <CJK>
-+<U918B> /xe7/xca <CJK>
-+<U9189> /xe7/xcb <CJK>
-+<U9182> /xe7/xcc <CJK>
-+<U91A2> /xe7/xcd <CJK>
-+<U91AB> /xe7/xce <CJK>
-+<U91AF> /xe7/xcf <CJK>
-+<U91AA> /xe7/xd0 <CJK>
-+<U91B5> /xe7/xd1 <CJK>
-+<U91B4> /xe7/xd2 <CJK>
-+<U91BA> /xe7/xd3 <CJK>
-+<U91C0> /xe7/xd4 <CJK>
-+<U91C1> /xe7/xd5 <CJK>
-+<U91C9> /xe7/xd6 <CJK>
-+<U91CB> /xe7/xd7 <CJK>
-+<U91D0> /xe7/xd8 <CJK>
-+<U91D6> /xe7/xd9 <CJK>
-+<U91DF> /xe7/xda <CJK>
-+<U91E1> /xe7/xdb <CJK>
-+<U91DB> /xe7/xdc <CJK>
-+<U91FC> /xe7/xdd <CJK>
-+<U91F5> /xe7/xde <CJK>
-+<U91F6> /xe7/xdf <CJK>
-+<U921E> /xe7/xe0 <CJK>
-+<U91FF> /xe7/xe1 <CJK>
-+<U9214> /xe7/xe2 <CJK>
-+<U922C> /xe7/xe3 <CJK>
-+<U9215> /xe7/xe4 <CJK>
-+<U9211> /xe7/xe5 <CJK>
-+<U925E> /xe7/xe6 <CJK>
-+<U9257> /xe7/xe7 <CJK>
-+<U9245> /xe7/xe8 <CJK>
-+<U9249> /xe7/xe9 <CJK>
-+<U9264> /xe7/xea <CJK>
-+<U9248> /xe7/xeb <CJK>
-+<U9295> /xe7/xec <CJK>
-+<U923F> /xe7/xed <CJK>
-+<U924B> /xe7/xee <CJK>
-+<U9250> /xe7/xef <CJK>
-+<U929C> /xe7/xf0 <CJK>
-+<U9296> /xe7/xf1 <CJK>
-+<U9293> /xe7/xf2 <CJK>
-+<U929B> /xe7/xf3 <CJK>
-+<U925A> /xe7/xf4 <CJK>
-+<U92CF> /xe7/xf5 <CJK>
-+<U92B9> /xe7/xf6 <CJK>
-+<U92B7> /xe7/xf7 <CJK>
-+<U92E9> /xe7/xf8 <CJK>
-+<U930F> /xe7/xf9 <CJK>
-+<U92FA> /xe7/xfa <CJK>
-+<U9344> /xe7/xfb <CJK>
-+<U932E> /xe7/xfc <CJK>
-+<U9319> /xe8/x40 <CJK>
-+<U9322> /xe8/x41 <CJK>
-+<U931A> /xe8/x42 <CJK>
-+<U9323> /xe8/x43 <CJK>
-+<U933A> /xe8/x44 <CJK>
-+<U9335> /xe8/x45 <CJK>
-+<U933B> /xe8/x46 <CJK>
-+<U935C> /xe8/x47 <CJK>
-+<U9360> /xe8/x48 <CJK>
-+<U937C> /xe8/x49 <CJK>
-+<U936E> /xe8/x4a <CJK>
-+<U9356> /xe8/x4b <CJK>
-+<U93B0> /xe8/x4c <CJK>
-+<U93AC> /xe8/x4d <CJK>
-+<U93AD> /xe8/x4e <CJK>
-+<U9394> /xe8/x4f <CJK>
-+<U93B9> /xe8/x50 <CJK>
-+<U93D6> /xe8/x51 <CJK>
-+<U93D7> /xe8/x52 <CJK>
-+<U93E8> /xe8/x53 <CJK>
-+<U93E5> /xe8/x54 <CJK>
-+<U93D8> /xe8/x55 <CJK>
-+<U93C3> /xe8/x56 <CJK>
-+<U93DD> /xe8/x57 <CJK>
-+<U93D0> /xe8/x58 <CJK>
-+<U93C8> /xe8/x59 <CJK>
-+<U93E4> /xe8/x5a <CJK>
-+<U941A> /xe8/x5b <CJK>
-+<U9414> /xe8/x5c <CJK>
-+<U9413> /xe8/x5d <CJK>
-+<U9403> /xe8/x5e <CJK>
-+<U9407> /xe8/x5f <CJK>
-+<U9410> /xe8/x60 <CJK>
-+<U9436> /xe8/x61 <CJK>
-+<U942B> /xe8/x62 <CJK>
-+<U9435> /xe8/x63 <CJK>
-+<U9421> /xe8/x64 <CJK>
-+<U943A> /xe8/x65 <CJK>
-+<U9441> /xe8/x66 <CJK>
-+<U9452> /xe8/x67 <CJK>
-+<U9444> /xe8/x68 <CJK>
-+<U945B> /xe8/x69 <CJK>
-+<U9460> /xe8/x6a <CJK>
-+<U9462> /xe8/x6b <CJK>
-+<U945E> /xe8/x6c <CJK>
-+<U946A> /xe8/x6d <CJK>
-+<U9229> /xe8/x6e <CJK>
-+<U9470> /xe8/x6f <CJK>
-+<U9475> /xe8/x70 <CJK>
-+<U9477> /xe8/x71 <CJK>
-+<U947D> /xe8/x72 <CJK>
-+<U945A> /xe8/x73 <CJK>
-+<U947C> /xe8/x74 <CJK>
-+<U947E> /xe8/x75 <CJK>
-+<U9481> /xe8/x76 <CJK>
-+<U947F> /xe8/x77 <CJK>
-+<U9582> /xe8/x78 <CJK>
-+<U9587> /xe8/x79 <CJK>
-+<U958A> /xe8/x7a <CJK>
-+<U9594> /xe8/x7b <CJK>
-+<U9596> /xe8/x7c <CJK>
-+<U9598> /xe8/x7d <CJK>
-+<U9599> /xe8/x7e <CJK>
-+<U95A0> /xe8/x80 <CJK>
-+<U95A8> /xe8/x81 <CJK>
-+<U95A7> /xe8/x82 <CJK>
-+<U95AD> /xe8/x83 <CJK>
-+<U95BC> /xe8/x84 <CJK>
-+<U95BB> /xe8/x85 <CJK>
-+<U95B9> /xe8/x86 <CJK>
-+<U95BE> /xe8/x87 <CJK>
-+<U95CA> /xe8/x88 <CJK>
-+<U6FF6> /xe8/x89 <CJK>
-+<U95C3> /xe8/x8a <CJK>
-+<U95CD> /xe8/x8b <CJK>
-+<U95CC> /xe8/x8c <CJK>
-+<U95D5> /xe8/x8d <CJK>
-+<U95D4> /xe8/x8e <CJK>
-+<U95D6> /xe8/x8f <CJK>
-+<U95DC> /xe8/x90 <CJK>
-+<U95E1> /xe8/x91 <CJK>
-+<U95E5> /xe8/x92 <CJK>
-+<U95E2> /xe8/x93 <CJK>
-+<U9621> /xe8/x94 <CJK>
-+<U9628> /xe8/x95 <CJK>
-+<U962E> /xe8/x96 <CJK>
-+<U962F> /xe8/x97 <CJK>
-+<U9642> /xe8/x98 <CJK>
-+<U964C> /xe8/x99 <CJK>
-+<U964F> /xe8/x9a <CJK>
-+<U964B> /xe8/x9b <CJK>
-+<U9677> /xe8/x9c <CJK>
-+<U965C> /xe8/x9d <CJK>
-+<U965E> /xe8/x9e <CJK>
-+<U965D> /xe8/x9f <CJK>
-+<U965F> /xe8/xa0 <CJK>
-+<U9666> /xe8/xa1 <CJK>
-+<U9672> /xe8/xa2 <CJK>
-+<U966C> /xe8/xa3 <CJK>
-+<U968D> /xe8/xa4 <CJK>
-+<U9698> /xe8/xa5 <CJK>
-+<U9695> /xe8/xa6 <CJK>
-+<U9697> /xe8/xa7 <CJK>
-+<U96AA> /xe8/xa8 <CJK>
-+<U96A7> /xe8/xa9 <CJK>
-+<U96B1> /xe8/xaa <CJK>
-+<U96B2> /xe8/xab <CJK>
-+<U96B0> /xe8/xac <CJK>
-+<U96B4> /xe8/xad <CJK>
-+<U96B6> /xe8/xae <CJK>
-+<U96B8> /xe8/xaf <CJK>
-+<U96B9> /xe8/xb0 <CJK>
-+<U96CE> /xe8/xb1 <CJK>
-+<U96CB> /xe8/xb2 <CJK>
-+<U96C9> /xe8/xb3 <CJK>
-+<U96CD> /xe8/xb4 <CJK>
-+<U894D> /xe8/xb5 <CJK>
-+<U96DC> /xe8/xb6 <CJK>
-+<U970D> /xe8/xb7 <CJK>
-+<U96D5> /xe8/xb8 <CJK>
-+<U96F9> /xe8/xb9 <CJK>
-+<U9704> /xe8/xba <CJK>
-+<U9706> /xe8/xbb <CJK>
-+<U9708> /xe8/xbc <CJK>
-+<U9713> /xe8/xbd <CJK>
-+<U970E> /xe8/xbe <CJK>
-+<U9711> /xe8/xbf <CJK>
-+<U970F> /xe8/xc0 <CJK>
-+<U9716> /xe8/xc1 <CJK>
-+<U9719> /xe8/xc2 <CJK>
-+<U9724> /xe8/xc3 <CJK>
-+<U972A> /xe8/xc4 <CJK>
-+<U9730> /xe8/xc5 <CJK>
-+<U9739> /xe8/xc6 <CJK>
-+<U973D> /xe8/xc7 <CJK>
-+<U973E> /xe8/xc8 <CJK>
-+<U9744> /xe8/xc9 <CJK>
-+<U9746> /xe8/xca <CJK>
-+<U9748> /xe8/xcb <CJK>
-+<U9742> /xe8/xcc <CJK>
-+<U9749> /xe8/xcd <CJK>
-+<U975C> /xe8/xce <CJK>
-+<U9760> /xe8/xcf <CJK>
-+<U9764> /xe8/xd0 <CJK>
-+<U9766> /xe8/xd1 <CJK>
-+<U9768> /xe8/xd2 <CJK>
-+<U52D2> /xe8/xd3 <CJK>
-+<U976B> /xe8/xd4 <CJK>
-+<U9771> /xe8/xd5 <CJK>
-+<U9779> /xe8/xd6 <CJK>
-+<U9785> /xe8/xd7 <CJK>
-+<U977C> /xe8/xd8 <CJK>
-+<U9781> /xe8/xd9 <CJK>
-+<U977A> /xe8/xda <CJK>
-+<U9786> /xe8/xdb <CJK>
-+<U978B> /xe8/xdc <CJK>
-+<U978F> /xe8/xdd <CJK>
-+<U9790> /xe8/xde <CJK>
-+<U979C> /xe8/xdf <CJK>
-+<U97A8> /xe8/xe0 <CJK>
-+<U97A6> /xe8/xe1 <CJK>
-+<U97A3> /xe8/xe2 <CJK>
-+<U97B3> /xe8/xe3 <CJK>
-+<U97B4> /xe8/xe4 <CJK>
-+<U97C3> /xe8/xe5 <CJK>
-+<U97C6> /xe8/xe6 <CJK>
-+<U97C8> /xe8/xe7 <CJK>
-+<U97CB> /xe8/xe8 <CJK>
-+<U97DC> /xe8/xe9 <CJK>
-+<U97ED> /xe8/xea <CJK>
-+<U9F4F> /xe8/xeb <CJK>
-+<U97F2> /xe8/xec <CJK>
-+<U7ADF> /xe8/xed <CJK>
-+<U97F6> /xe8/xee <CJK>
-+<U97F5> /xe8/xef <CJK>
-+<U980F> /xe8/xf0 <CJK>
-+<U980C> /xe8/xf1 <CJK>
-+<U9838> /xe8/xf2 <CJK>
-+<U9824> /xe8/xf3 <CJK>
-+<U9821> /xe8/xf4 <CJK>
-+<U9837> /xe8/xf5 <CJK>
-+<U983D> /xe8/xf6 <CJK>
-+<U9846> /xe8/xf7 <CJK>
-+<U984F> /xe8/xf8 <CJK>
-+<U984B> /xe8/xf9 <CJK>
-+<U986B> /xe8/xfa <CJK>
-+<U986F> /xe8/xfb <CJK>
-+<U9870> /xe8/xfc <CJK>
-+<U9871> /xe9/x40 <CJK>
-+<U9874> /xe9/x41 <CJK>
-+<U9873> /xe9/x42 <CJK>
-+<U98AA> /xe9/x43 <CJK>
-+<U98AF> /xe9/x44 <CJK>
-+<U98B1> /xe9/x45 <CJK>
-+<U98B6> /xe9/x46 <CJK>
-+<U98C4> /xe9/x47 <CJK>
-+<U98C3> /xe9/x48 <CJK>
-+<U98C6> /xe9/x49 <CJK>
-+<U98E9> /xe9/x4a <CJK>
-+<U98EB> /xe9/x4b <CJK>
-+<U9903> /xe9/x4c <CJK>
-+<U9909> /xe9/x4d <CJK>
-+<U9912> /xe9/x4e <CJK>
-+<U9914> /xe9/x4f <CJK>
-+<U9918> /xe9/x50 <CJK>
-+<U9921> /xe9/x51 <CJK>
-+<U991D> /xe9/x52 <CJK>
-+<U991E> /xe9/x53 <CJK>
-+<U9924> /xe9/x54 <CJK>
-+<U9920> /xe9/x55 <CJK>
-+<U992C> /xe9/x56 <CJK>
-+<U992E> /xe9/x57 <CJK>
-+<U993D> /xe9/x58 <CJK>
-+<U993E> /xe9/x59 <CJK>
-+<U9942> /xe9/x5a <CJK>
-+<U9949> /xe9/x5b <CJK>
-+<U9945> /xe9/x5c <CJK>
-+<U9950> /xe9/x5d <CJK>
-+<U994B> /xe9/x5e <CJK>
-+<U9951> /xe9/x5f <CJK>
-+<U9952> /xe9/x60 <CJK>
-+<U994C> /xe9/x61 <CJK>
-+<U9955> /xe9/x62 <CJK>
-+<U9997> /xe9/x63 <CJK>
-+<U9998> /xe9/x64 <CJK>
-+<U99A5> /xe9/x65 <CJK>
-+<U99AD> /xe9/x66 <CJK>
-+<U99AE> /xe9/x67 <CJK>
-+<U99BC> /xe9/x68 <CJK>
-+<U99DF> /xe9/x69 <CJK>
-+<U99DB> /xe9/x6a <CJK>
-+<U99DD> /xe9/x6b <CJK>
-+<U99D8> /xe9/x6c <CJK>
-+<U99D1> /xe9/x6d <CJK>
-+<U99ED> /xe9/x6e <CJK>
-+<U99EE> /xe9/x6f <CJK>
-+<U99F1> /xe9/x70 <CJK>
-+<U99F2> /xe9/x71 <CJK>
-+<U99FB> /xe9/x72 <CJK>
-+<U99F8> /xe9/x73 <CJK>
-+<U9A01> /xe9/x74 <CJK>
-+<U9A0F> /xe9/x75 <CJK>
-+<U9A05> /xe9/x76 <CJK>
-+<U99E2> /xe9/x77 <CJK>
-+<U9A19> /xe9/x78 <CJK>
-+<U9A2B> /xe9/x79 <CJK>
-+<U9A37> /xe9/x7a <CJK>
-+<U9A45> /xe9/x7b <CJK>
-+<U9A42> /xe9/x7c <CJK>
-+<U9A40> /xe9/x7d <CJK>
-+<U9A43> /xe9/x7e <CJK>
-+<U9A3E> /xe9/x80 <CJK>
-+<U9A55> /xe9/x81 <CJK>
-+<U9A4D> /xe9/x82 <CJK>
-+<U9A5B> /xe9/x83 <CJK>
-+<U9A57> /xe9/x84 <CJK>
-+<U9A5F> /xe9/x85 <CJK>
-+<U9A62> /xe9/x86 <CJK>
-+<U9A65> /xe9/x87 <CJK>
-+<U9A64> /xe9/x88 <CJK>
-+<U9A69> /xe9/x89 <CJK>
-+<U9A6B> /xe9/x8a <CJK>
-+<U9A6A> /xe9/x8b <CJK>
-+<U9AAD> /xe9/x8c <CJK>
-+<U9AB0> /xe9/x8d <CJK>
-+<U9ABC> /xe9/x8e <CJK>
-+<U9AC0> /xe9/x8f <CJK>
-+<U9ACF> /xe9/x90 <CJK>
-+<U9AD1> /xe9/x91 <CJK>
-+<U9AD3> /xe9/x92 <CJK>
-+<U9AD4> /xe9/x93 <CJK>
-+<U9ADE> /xe9/x94 <CJK>
-+<U9ADF> /xe9/x95 <CJK>
-+<U9AE2> /xe9/x96 <CJK>
-+<U9AE3> /xe9/x97 <CJK>
-+<U9AE6> /xe9/x98 <CJK>
-+<U9AEF> /xe9/x99 <CJK>
-+<U9AEB> /xe9/x9a <CJK>
-+<U9AEE> /xe9/x9b <CJK>
-+<U9AF4> /xe9/x9c <CJK>
-+<U9AF1> /xe9/x9d <CJK>
-+<U9AF7> /xe9/x9e <CJK>
-+<U9AFB> /xe9/x9f <CJK>
-+<U9B06> /xe9/xa0 <CJK>
-+<U9B18> /xe9/xa1 <CJK>
-+<U9B1A> /xe9/xa2 <CJK>
-+<U9B1F> /xe9/xa3 <CJK>
-+<U9B22> /xe9/xa4 <CJK>
-+<U9B23> /xe9/xa5 <CJK>
-+<U9B25> /xe9/xa6 <CJK>
-+<U9B27> /xe9/xa7 <CJK>
-+<U9B28> /xe9/xa8 <CJK>
-+<U9B29> /xe9/xa9 <CJK>
-+<U9B2A> /xe9/xaa <CJK>
-+<U9B2E> /xe9/xab <CJK>
-+<U9B2F> /xe9/xac <CJK>
-+<U9B32> /xe9/xad <CJK>
-+<U9B44> /xe9/xae <CJK>
-+<U9B43> /xe9/xaf <CJK>
-+<U9B4F> /xe9/xb0 <CJK>
-+<U9B4D> /xe9/xb1 <CJK>
-+<U9B4E> /xe9/xb2 <CJK>
-+<U9B51> /xe9/xb3 <CJK>
-+<U9B58> /xe9/xb4 <CJK>
-+<U9B74> /xe9/xb5 <CJK>
-+<U9B93> /xe9/xb6 <CJK>
-+<U9B83> /xe9/xb7 <CJK>
-+<U9B91> /xe9/xb8 <CJK>
-+<U9B96> /xe9/xb9 <CJK>
-+<U9B97> /xe9/xba <CJK>
-+<U9B9F> /xe9/xbb <CJK>
-+<U9BA0> /xe9/xbc <CJK>
-+<U9BA8> /xe9/xbd <CJK>
-+<U9BB4> /xe9/xbe <CJK>
-+<U9BC0> /xe9/xbf <CJK>
-+<U9BCA> /xe9/xc0 <CJK>
-+<U9BB9> /xe9/xc1 <CJK>
-+<U9BC6> /xe9/xc2 <CJK>
-+<U9BCF> /xe9/xc3 <CJK>
-+<U9BD1> /xe9/xc4 <CJK>
-+<U9BD2> /xe9/xc5 <CJK>
-+<U9BE3> /xe9/xc6 <CJK>
-+<U9BE2> /xe9/xc7 <CJK>
-+<U9BE4> /xe9/xc8 <CJK>
-+<U9BD4> /xe9/xc9 <CJK>
-+<U9BE1> /xe9/xca <CJK>
-+<U9C3A> /xe9/xcb <CJK>
-+<U9BF2> /xe9/xcc <CJK>
-+<U9BF1> /xe9/xcd <CJK>
-+<U9BF0> /xe9/xce <CJK>
-+<U9C15> /xe9/xcf <CJK>
-+<U9C14> /xe9/xd0 <CJK>
-+<U9C09> /xe9/xd1 <CJK>
-+<U9C13> /xe9/xd2 <CJK>
-+<U9C0C> /xe9/xd3 <CJK>
-+<U9C06> /xe9/xd4 <CJK>
-+<U9C08> /xe9/xd5 <CJK>
-+<U9C12> /xe9/xd6 <CJK>
-+<U9C0A> /xe9/xd7 <CJK>
-+<U9C04> /xe9/xd8 <CJK>
-+<U9C2E> /xe9/xd9 <CJK>
-+<U9C1B> /xe9/xda <CJK>
-+<U9C25> /xe9/xdb <CJK>
-+<U9C24> /xe9/xdc <CJK>
-+<U9C21> /xe9/xdd <CJK>
-+<U9C30> /xe9/xde <CJK>
-+<U9C47> /xe9/xdf <CJK>
-+<U9C32> /xe9/xe0 <CJK>
-+<U9C46> /xe9/xe1 <CJK>
-+<U9C3E> /xe9/xe2 <CJK>
-+<U9C5A> /xe9/xe3 <CJK>
-+<U9C60> /xe9/xe4 <CJK>
-+<U9C67> /xe9/xe5 <CJK>
-+<U9C76> /xe9/xe6 <CJK>
-+<U9C78> /xe9/xe7 <CJK>
-+<U9CE7> /xe9/xe8 <CJK>
-+<U9CEC> /xe9/xe9 <CJK>
-+<U9CF0> /xe9/xea <CJK>
-+<U9D09> /xe9/xeb <CJK>
-+<U9D08> /xe9/xec <CJK>
-+<U9CEB> /xe9/xed <CJK>
-+<U9D03> /xe9/xee <CJK>
-+<U9D06> /xe9/xef <CJK>
-+<U9D2A> /xe9/xf0 <CJK>
-+<U9D26> /xe9/xf1 <CJK>
-+<U9DAF> /xe9/xf2 <CJK>
-+<U9D23> /xe9/xf3 <CJK>
-+<U9D1F> /xe9/xf4 <CJK>
-+<U9D44> /xe9/xf5 <CJK>
-+<U9D15> /xe9/xf6 <CJK>
-+<U9D12> /xe9/xf7 <CJK>
-+<U9D41> /xe9/xf8 <CJK>
-+<U9D3F> /xe9/xf9 <CJK>
-+<U9D3E> /xe9/xfa <CJK>
-+<U9D46> /xe9/xfb <CJK>
-+<U9D48> /xe9/xfc <CJK>
-+<U9D5D> /xea/x40 <CJK>
-+<U9D5E> /xea/x41 <CJK>
-+<U9D64> /xea/x42 <CJK>
-+<U9D51> /xea/x43 <CJK>
-+<U9D50> /xea/x44 <CJK>
-+<U9D59> /xea/x45 <CJK>
-+<U9D72> /xea/x46 <CJK>
-+<U9D89> /xea/x47 <CJK>
-+<U9D87> /xea/x48 <CJK>
-+<U9DAB> /xea/x49 <CJK>
-+<U9D6F> /xea/x4a <CJK>
-+<U9D7A> /xea/x4b <CJK>
-+<U9D9A> /xea/x4c <CJK>
-+<U9DA4> /xea/x4d <CJK>
-+<U9DA9> /xea/x4e <CJK>
-+<U9DB2> /xea/x4f <CJK>
-+<U9DC4> /xea/x50 <CJK>
-+<U9DC1> /xea/x51 <CJK>
-+<U9DBB> /xea/x52 <CJK>
-+<U9DB8> /xea/x53 <CJK>
-+<U9DBA> /xea/x54 <CJK>
-+<U9DC6> /xea/x55 <CJK>
-+<U9DCF> /xea/x56 <CJK>
-+<U9DC2> /xea/x57 <CJK>
-+<U9DD9> /xea/x58 <CJK>
-+<U9DD3> /xea/x59 <CJK>
-+<U9DF8> /xea/x5a <CJK>
-+<U9DE6> /xea/x5b <CJK>
-+<U9DED> /xea/x5c <CJK>
-+<U9DEF> /xea/x5d <CJK>
-+<U9DFD> /xea/x5e <CJK>
-+<U9E1A> /xea/x5f <CJK>
-+<U9E1B> /xea/x60 <CJK>
-+<U9E1E> /xea/x61 <CJK>
-+<U9E75> /xea/x62 <CJK>
-+<U9E79> /xea/x63 <CJK>
-+<U9E7D> /xea/x64 <CJK>
-+<U9E81> /xea/x65 <CJK>
-+<U9E88> /xea/x66 <CJK>
-+<U9E8B> /xea/x67 <CJK>
-+<U9E8C> /xea/x68 <CJK>
-+<U9E92> /xea/x69 <CJK>
-+<U9E95> /xea/x6a <CJK>
-+<U9E91> /xea/x6b <CJK>
-+<U9E9D> /xea/x6c <CJK>
-+<U9EA5> /xea/x6d <CJK>
-+<U9EA9> /xea/x6e <CJK>
-+<U9EB8> /xea/x6f <CJK>
-+<U9EAA> /xea/x70 <CJK>
-+<U9EAD> /xea/x71 <CJK>
-+<U9761> /xea/x72 <CJK>
-+<U9ECC> /xea/x73 <CJK>
-+<U9ECE> /xea/x74 <CJK>
-+<U9ECF> /xea/x75 <CJK>
-+<U9ED0> /xea/x76 <CJK>
-+<U9ED4> /xea/x77 <CJK>
-+<U9EDC> /xea/x78 <CJK>
-+<U9EDE> /xea/x79 <CJK>
-+<U9EDD> /xea/x7a <CJK>
-+<U9EE0> /xea/x7b <CJK>
-+<U9EE5> /xea/x7c <CJK>
-+<U9EE8> /xea/x7d <CJK>
-+<U9EEF> /xea/x7e <CJK>
-+<U9EF4> /xea/x80 <CJK>
-+<U9EF6> /xea/x81 <CJK>
-+<U9EF7> /xea/x82 <CJK>
-+<U9EF9> /xea/x83 <CJK>
-+<U9EFB> /xea/x84 <CJK>
-+<U9EFC> /xea/x85 <CJK>
-+<U9EFD> /xea/x86 <CJK>
-+<U9F07> /xea/x87 <CJK>
-+<U9F08> /xea/x88 <CJK>
-+<U76B7> /xea/x89 <CJK>
-+<U9F15> /xea/x8a <CJK>
-+<U9F21> /xea/x8b <CJK>
-+<U9F2C> /xea/x8c <CJK>
-+<U9F3E> /xea/x8d <CJK>
-+<U9F4A> /xea/x8e <CJK>
-+<U9F52> /xea/x8f <CJK>
-+<U9F54> /xea/x90 <CJK>
-+<U9F63> /xea/x91 <CJK>
-+<U9F5F> /xea/x92 <CJK>
-+<U9F60> /xea/x93 <CJK>
-+<U9F61> /xea/x94 <CJK>
-+<U9F66> /xea/x95 <CJK>
-+<U9F67> /xea/x96 <CJK>
-+<U9F6C> /xea/x97 <CJK>
-+<U9F6A> /xea/x98 <CJK>
-+<U9F77> /xea/x99 <CJK>
-+<U9F72> /xea/x9a <CJK>
-+<U9F76> /xea/x9b <CJK>
-+<U9F95> /xea/x9c <CJK>
-+<U9F9C> /xea/x9d <CJK>
-+<U9FA0> /xea/x9e <CJK>
-+<U582F> /xea/x9f <CJK>
-+<U69C7> /xea/xa0 <CJK>
-+<U9059> /xea/xa1 <CJK>
-+<U7464> /xea/xa2 <CJK>
-+<U51DC> /xea/xa3 <CJK>
-+<U7199> /xea/xa4 <CJK>
-+
-+%IRREVERSIBLE%<U7E8A> /xed/x40 <CJK>
-+%IRREVERSIBLE%<U891C> /xed/x41 <CJK>
-+%IRREVERSIBLE%<U9348> /xed/x42 <CJK>
-+%IRREVERSIBLE%<U9288> /xed/x43 <CJK>
-+%IRREVERSIBLE%<U84DC> /xed/x44 <CJK>
-+%IRREVERSIBLE%<U4FC9> /xed/x45 <CJK>
-+%IRREVERSIBLE%<U70BB> /xed/x46 <CJK>
-+%IRREVERSIBLE%<U6631> /xed/x47 <CJK>
-+%IRREVERSIBLE%<U68C8> /xed/x48 <CJK>
-+%IRREVERSIBLE%<U92F9> /xed/x49 <CJK>
-+%IRREVERSIBLE%<U66FB> /xed/x4a <CJK>
-+%IRREVERSIBLE%<U5F45> /xed/x4b <CJK>
-+%IRREVERSIBLE%<U4E28> /xed/x4c <CJK>
-+%IRREVERSIBLE%<U4EE1> /xed/x4d <CJK>
-+%IRREVERSIBLE%<U4EFC> /xed/x4e <CJK>
-+%IRREVERSIBLE%<U4F00> /xed/x4f <CJK>
-+%IRREVERSIBLE%<U4F03> /xed/x50 <CJK>
-+%IRREVERSIBLE%<U4F39> /xed/x51 <CJK>
-+%IRREVERSIBLE%<U4F56> /xed/x52 <CJK>
-+%IRREVERSIBLE%<U4F92> /xed/x53 <CJK>
-+%IRREVERSIBLE%<U4F8A> /xed/x54 <CJK>
-+%IRREVERSIBLE%<U4F9A> /xed/x55 <CJK>
-+%IRREVERSIBLE%<U4F94> /xed/x56 <CJK>
-+%IRREVERSIBLE%<U4FCD> /xed/x57 <CJK>
-+%IRREVERSIBLE%<U5040> /xed/x58 <CJK>
-+%IRREVERSIBLE%<U5022> /xed/x59 <CJK>
-+%IRREVERSIBLE%<U4FFF> /xed/x5a <CJK>
-+%IRREVERSIBLE%<U501E> /xed/x5b <CJK>
-+%IRREVERSIBLE%<U5046> /xed/x5c <CJK>
-+%IRREVERSIBLE%<U5070> /xed/x5d <CJK>
-+%IRREVERSIBLE%<U5042> /xed/x5e <CJK>
-+%IRREVERSIBLE%<U5094> /xed/x5f <CJK>
-+%IRREVERSIBLE%<U50F4> /xed/x60 <CJK>
-+%IRREVERSIBLE%<U50D8> /xed/x61 <CJK>
-+%IRREVERSIBLE%<U514A> /xed/x62 <CJK>
-+%IRREVERSIBLE%<U5164> /xed/x63 <CJK>
-+%IRREVERSIBLE%<U519D> /xed/x64 <CJK>
-+%IRREVERSIBLE%<U51BE> /xed/x65 <CJK>
-+%IRREVERSIBLE%<U51EC> /xed/x66 <CJK>
-+%IRREVERSIBLE%<U5215> /xed/x67 <CJK>
-+%IRREVERSIBLE%<U529C> /xed/x68 <CJK>
-+%IRREVERSIBLE%<U52A6> /xed/x69 <CJK>
-+%IRREVERSIBLE%<U52C0> /xed/x6a <CJK>
-+%IRREVERSIBLE%<U52DB> /xed/x6b <CJK>
-+%IRREVERSIBLE%<U5300> /xed/x6c <CJK>
-+%IRREVERSIBLE%<U5307> /xed/x6d <CJK>
-+%IRREVERSIBLE%<U5324> /xed/x6e <CJK>
-+%IRREVERSIBLE%<U5372> /xed/x6f <CJK>
-+%IRREVERSIBLE%<U5393> /xed/x70 <CJK>
-+%IRREVERSIBLE%<U53B2> /xed/x71 <CJK>
-+%IRREVERSIBLE%<U53DD> /xed/x72 <CJK>
-+%IRREVERSIBLE%<UFA0E> /xed/x73 CJK COMPATIBILITY IDEOGRAPH-FA0E
-+%IRREVERSIBLE%<U549C> /xed/x74 <CJK>
-+%IRREVERSIBLE%<U548A> /xed/x75 <CJK>
-+%IRREVERSIBLE%<U54A9> /xed/x76 <CJK>
-+%IRREVERSIBLE%<U54FF> /xed/x77 <CJK>
-+%IRREVERSIBLE%<U5586> /xed/x78 <CJK>
-+%IRREVERSIBLE%<U5759> /xed/x79 <CJK>
-+%IRREVERSIBLE%<U5765> /xed/x7a <CJK>
-+%IRREVERSIBLE%<U57AC> /xed/x7b <CJK>
-+%IRREVERSIBLE%<U57C8> /xed/x7c <CJK>
-+%IRREVERSIBLE%<U57C7> /xed/x7d <CJK>
-+%IRREVERSIBLE%<UFA0F> /xed/x7e CJK COMPATIBILITY IDEOGRAPH-FA0F
-+%IRREVERSIBLE%<UFA10> /xed/x80 CJK COMPATIBILITY IDEOGRAPH-FA10
-+%IRREVERSIBLE%<U589E> /xed/x81 <CJK>
-+%IRREVERSIBLE%<U58B2> /xed/x82 <CJK>
-+%IRREVERSIBLE%<U590B> /xed/x83 <CJK>
-+%IRREVERSIBLE%<U5953> /xed/x84 <CJK>
-+%IRREVERSIBLE%<U595B> /xed/x85 <CJK>
-+%IRREVERSIBLE%<U595D> /xed/x86 <CJK>
-+%IRREVERSIBLE%<U5963> /xed/x87 <CJK>
-+%IRREVERSIBLE%<U59A4> /xed/x88 <CJK>
-+%IRREVERSIBLE%<U59BA> /xed/x89 <CJK>
-+%IRREVERSIBLE%<U5B56> /xed/x8a <CJK>
-+%IRREVERSIBLE%<U5BC0> /xed/x8b <CJK>
-+%IRREVERSIBLE%<U752F> /xed/x8c <CJK>
-+%IRREVERSIBLE%<U5BD8> /xed/x8d <CJK>
-+%IRREVERSIBLE%<U5BEC> /xed/x8e <CJK>
-+%IRREVERSIBLE%<U5C1E> /xed/x8f <CJK>
-+%IRREVERSIBLE%<U5CA6> /xed/x90 <CJK>
-+%IRREVERSIBLE%<U5CBA> /xed/x91 <CJK>
-+%IRREVERSIBLE%<U5CF5> /xed/x92 <CJK>
-+%IRREVERSIBLE%<U5D27> /xed/x93 <CJK>
-+%IRREVERSIBLE%<U5D53> /xed/x94 <CJK>
-+%IRREVERSIBLE%<UFA11> /xed/x95 CJK COMPATIBILITY IDEOGRAPH-FA11
-+%IRREVERSIBLE%<U5D42> /xed/x96 <CJK>
-+%IRREVERSIBLE%<U5D6D> /xed/x97 <CJK>
-+%IRREVERSIBLE%<U5DB8> /xed/x98 <CJK>
-+%IRREVERSIBLE%<U5DB9> /xed/x99 <CJK>
-+%IRREVERSIBLE%<U5DD0> /xed/x9a <CJK>
-+%IRREVERSIBLE%<U5F21> /xed/x9b <CJK>
-+%IRREVERSIBLE%<U5F34> /xed/x9c <CJK>
-+%IRREVERSIBLE%<U5F67> /xed/x9d <CJK>
-+%IRREVERSIBLE%<U5FB7> /xed/x9e <CJK>
-+%IRREVERSIBLE%<U5FDE> /xed/x9f <CJK>
-+%IRREVERSIBLE%<U605D> /xed/xa0 <CJK>
-+%IRREVERSIBLE%<U6085> /xed/xa1 <CJK>
-+%IRREVERSIBLE%<U608A> /xed/xa2 <CJK>
-+%IRREVERSIBLE%<U60DE> /xed/xa3 <CJK>
-+%IRREVERSIBLE%<U60D5> /xed/xa4 <CJK>
-+%IRREVERSIBLE%<U6120> /xed/xa5 <CJK>
-+%IRREVERSIBLE%<U60F2> /xed/xa6 <CJK>
-+%IRREVERSIBLE%<U6111> /xed/xa7 <CJK>
-+%IRREVERSIBLE%<U6137> /xed/xa8 <CJK>
-+%IRREVERSIBLE%<U6130> /xed/xa9 <CJK>
-+%IRREVERSIBLE%<U6198> /xed/xaa <CJK>
-+%IRREVERSIBLE%<U6213> /xed/xab <CJK>
-+%IRREVERSIBLE%<U62A6> /xed/xac <CJK>
-+%IRREVERSIBLE%<U63F5> /xed/xad <CJK>
-+%IRREVERSIBLE%<U6460> /xed/xae <CJK>
-+%IRREVERSIBLE%<U649D> /xed/xaf <CJK>
-+%IRREVERSIBLE%<U64CE> /xed/xb0 <CJK>
-+%IRREVERSIBLE%<U654E> /xed/xb1 <CJK>
-+%IRREVERSIBLE%<U6600> /xed/xb2 <CJK>
-+%IRREVERSIBLE%<U6615> /xed/xb3 <CJK>
-+%IRREVERSIBLE%<U663B> /xed/xb4 <CJK>
-+%IRREVERSIBLE%<U6609> /xed/xb5 <CJK>
-+%IRREVERSIBLE%<U662E> /xed/xb6 <CJK>
-+%IRREVERSIBLE%<U661E> /xed/xb7 <CJK>
-+%IRREVERSIBLE%<U6624> /xed/xb8 <CJK>
-+%IRREVERSIBLE%<U6665> /xed/xb9 <CJK>
-+%IRREVERSIBLE%<U6657> /xed/xba <CJK>
-+%IRREVERSIBLE%<U6659> /xed/xbb <CJK>
-+%IRREVERSIBLE%<UFA12> /xed/xbc CJK COMPATIBILITY IDEOGRAPH-FA12
-+%IRREVERSIBLE%<U6673> /xed/xbd <CJK>
-+%IRREVERSIBLE%<U6699> /xed/xbe <CJK>
-+%IRREVERSIBLE%<U66A0> /xed/xbf <CJK>
-+%IRREVERSIBLE%<U66B2> /xed/xc0 <CJK>
-+%IRREVERSIBLE%<U66BF> /xed/xc1 <CJK>
-+%IRREVERSIBLE%<U66FA> /xed/xc2 <CJK>
-+%IRREVERSIBLE%<U670E> /xed/xc3 <CJK>
-+%IRREVERSIBLE%<UF929> /xed/xc4 CJK COMPATIBILITY IDEOGRAPH-F929
-+%IRREVERSIBLE%<U6766> /xed/xc5 <CJK>
-+%IRREVERSIBLE%<U67BB> /xed/xc6 <CJK>
-+%IRREVERSIBLE%<U6852> /xed/xc7 <CJK>
-+%IRREVERSIBLE%<U67C0> /xed/xc8 <CJK>
-+%IRREVERSIBLE%<U6801> /xed/xc9 <CJK>
-+%IRREVERSIBLE%<U6844> /xed/xca <CJK>
-+%IRREVERSIBLE%<U68CF> /xed/xcb <CJK>
-+%IRREVERSIBLE%<UFA13> /xed/xcc CJK COMPATIBILITY IDEOGRAPH-FA13
-+%IRREVERSIBLE%<U6968> /xed/xcd <CJK>
-+%IRREVERSIBLE%<UFA14> /xed/xce CJK COMPATIBILITY IDEOGRAPH-FA14
-+%IRREVERSIBLE%<U6998> /xed/xcf <CJK>
-+%IRREVERSIBLE%<U69E2> /xed/xd0 <CJK>
-+%IRREVERSIBLE%<U6A30> /xed/xd1 <CJK>
-+%IRREVERSIBLE%<U6A6B> /xed/xd2 <CJK>
-+%IRREVERSIBLE%<U6A46> /xed/xd3 <CJK>
-+%IRREVERSIBLE%<U6A73> /xed/xd4 <CJK>
-+%IRREVERSIBLE%<U6A7E> /xed/xd5 <CJK>
-+%IRREVERSIBLE%<U6AE2> /xed/xd6 <CJK>
-+%IRREVERSIBLE%<U6AE4> /xed/xd7 <CJK>
-+%IRREVERSIBLE%<U6BD6> /xed/xd8 <CJK>
-+%IRREVERSIBLE%<U6C3F> /xed/xd9 <CJK>
-+%IRREVERSIBLE%<U6C5C> /xed/xda <CJK>
-+%IRREVERSIBLE%<U6C86> /xed/xdb <CJK>
-+%IRREVERSIBLE%<U6C6F> /xed/xdc <CJK>
-+%IRREVERSIBLE%<U6CDA> /xed/xdd <CJK>
-+%IRREVERSIBLE%<U6D04> /xed/xde <CJK>
-+%IRREVERSIBLE%<U6D87> /xed/xdf <CJK>
-+%IRREVERSIBLE%<U6D6F> /xed/xe0 <CJK>
-+%IRREVERSIBLE%<U6D96> /xed/xe1 <CJK>
-+%IRREVERSIBLE%<U6DAC> /xed/xe2 <CJK>
-+%IRREVERSIBLE%<U6DCF> /xed/xe3 <CJK>
-+%IRREVERSIBLE%<U6DF8> /xed/xe4 <CJK>
-+%IRREVERSIBLE%<U6DF2> /xed/xe5 <CJK>
-+%IRREVERSIBLE%<U6DFC> /xed/xe6 <CJK>
-+%IRREVERSIBLE%<U6E39> /xed/xe7 <CJK>
-+%IRREVERSIBLE%<U6E5C> /xed/xe8 <CJK>
-+%IRREVERSIBLE%<U6E27> /xed/xe9 <CJK>
-+%IRREVERSIBLE%<U6E3C> /xed/xea <CJK>
-+%IRREVERSIBLE%<U6EBF> /xed/xeb <CJK>
-+%IRREVERSIBLE%<U6F88> /xed/xec <CJK>
-+%IRREVERSIBLE%<U6FB5> /xed/xed <CJK>
-+%IRREVERSIBLE%<U6FF5> /xed/xee <CJK>
-+%IRREVERSIBLE%<U7005> /xed/xef <CJK>
-+%IRREVERSIBLE%<U7007> /xed/xf0 <CJK>
-+%IRREVERSIBLE%<U7028> /xed/xf1 <CJK>
-+%IRREVERSIBLE%<U7085> /xed/xf2 <CJK>
-+%IRREVERSIBLE%<U70AB> /xed/xf3 <CJK>
-+%IRREVERSIBLE%<U710F> /xed/xf4 <CJK>
-+%IRREVERSIBLE%<U7104> /xed/xf5 <CJK>
-+%IRREVERSIBLE%<U715C> /xed/xf6 <CJK>
-+%IRREVERSIBLE%<U7146> /xed/xf7 <CJK>
-+%IRREVERSIBLE%<U7147> /xed/xf8 <CJK>
-+%IRREVERSIBLE%<UFA15> /xed/xf9 CJK COMPATIBILITY IDEOGRAPH-FA15
-+%IRREVERSIBLE%<U71C1> /xed/xfa <CJK>
-+%IRREVERSIBLE%<U71FE> /xed/xfb <CJK>
-+%IRREVERSIBLE%<U72B1> /xed/xfc <CJK>
-+%IRREVERSIBLE%<U72BE> /xee/x40 <CJK>
-+%IRREVERSIBLE%<U7324> /xee/x41 <CJK>
-+%IRREVERSIBLE%<UFA16> /xee/x42 CJK COMPATIBILITY IDEOGRAPH-FA16
-+%IRREVERSIBLE%<U7377> /xee/x43 <CJK>
-+%IRREVERSIBLE%<U73BD> /xee/x44 <CJK>
-+%IRREVERSIBLE%<U73C9> /xee/x45 <CJK>
-+%IRREVERSIBLE%<U73D6> /xee/x46 <CJK>
-+%IRREVERSIBLE%<U73E3> /xee/x47 <CJK>
-+%IRREVERSIBLE%<U73D2> /xee/x48 <CJK>
-+%IRREVERSIBLE%<U7407> /xee/x49 <CJK>
-+%IRREVERSIBLE%<U73F5> /xee/x4a <CJK>
-+%IRREVERSIBLE%<U7426> /xee/x4b <CJK>
-+%IRREVERSIBLE%<U742A> /xee/x4c <CJK>
-+%IRREVERSIBLE%<U7429> /xee/x4d <CJK>
-+%IRREVERSIBLE%<U742E> /xee/x4e <CJK>
-+%IRREVERSIBLE%<U7462> /xee/x4f <CJK>
-+%IRREVERSIBLE%<U7489> /xee/x50 <CJK>
-+%IRREVERSIBLE%<U749F> /xee/x51 <CJK>
-+%IRREVERSIBLE%<U7501> /xee/x52 <CJK>
-+%IRREVERSIBLE%<U756F> /xee/x53 <CJK>
-+%IRREVERSIBLE%<U7682> /xee/x54 <CJK>
-+%IRREVERSIBLE%<U769C> /xee/x55 <CJK>
-+%IRREVERSIBLE%<U769E> /xee/x56 <CJK>
-+%IRREVERSIBLE%<U769B> /xee/x57 <CJK>
-+%IRREVERSIBLE%<U76A6> /xee/x58 <CJK>
-+%IRREVERSIBLE%<UFA17> /xee/x59 CJK COMPATIBILITY IDEOGRAPH-FA17
-+%IRREVERSIBLE%<U7746> /xee/x5a <CJK>
-+%IRREVERSIBLE%<U52AF> /xee/x5b <CJK>
-+%IRREVERSIBLE%<U7821> /xee/x5c <CJK>
-+%IRREVERSIBLE%<U784E> /xee/x5d <CJK>
-+%IRREVERSIBLE%<U7864> /xee/x5e <CJK>
-+%IRREVERSIBLE%<U787A> /xee/x5f <CJK>
-+%IRREVERSIBLE%<U7930> /xee/x60 <CJK>
-+%IRREVERSIBLE%<UFA18> /xee/x61 CJK COMPATIBILITY IDEOGRAPH-FA18
-+%IRREVERSIBLE%<UFA19> /xee/x62 CJK COMPATIBILITY IDEOGRAPH-FA19
-+%IRREVERSIBLE%<UFA1A> /xee/x63 CJK COMPATIBILITY IDEOGRAPH-FA1A
-+%IRREVERSIBLE%<U7994> /xee/x64 <CJK>
-+%IRREVERSIBLE%<UFA1B> /xee/x65 CJK COMPATIBILITY IDEOGRAPH-FA1B
-+%IRREVERSIBLE%<U799B> /xee/x66 <CJK>
-+%IRREVERSIBLE%<U7AD1> /xee/x67 <CJK>
-+%IRREVERSIBLE%<U7AE7> /xee/x68 <CJK>
-+%IRREVERSIBLE%<UFA1C> /xee/x69 CJK COMPATIBILITY IDEOGRAPH-FA1C
-+%IRREVERSIBLE%<U7AEB> /xee/x6a <CJK>
-+%IRREVERSIBLE%<U7B9E> /xee/x6b <CJK>
-+%IRREVERSIBLE%<UFA1D> /xee/x6c CJK COMPATIBILITY IDEOGRAPH-FA1D
-+%IRREVERSIBLE%<U7D48> /xee/x6d <CJK>
-+%IRREVERSIBLE%<U7D5C> /xee/x6e <CJK>
-+%IRREVERSIBLE%<U7DB7> /xee/x6f <CJK>
-+%IRREVERSIBLE%<U7DA0> /xee/x70 <CJK>
-+%IRREVERSIBLE%<U7DD6> /xee/x71 <CJK>
-+%IRREVERSIBLE%<U7E52> /xee/x72 <CJK>
-+%IRREVERSIBLE%<U7F47> /xee/x73 <CJK>
-+%IRREVERSIBLE%<U7FA1> /xee/x74 <CJK>
-+%IRREVERSIBLE%<UFA1E> /xee/x75 CJK COMPATIBILITY IDEOGRAPH-FA1E
-+%IRREVERSIBLE%<U8301> /xee/x76 <CJK>
-+%IRREVERSIBLE%<U8362> /xee/x77 <CJK>
-+%IRREVERSIBLE%<U837F> /xee/x78 <CJK>
-+%IRREVERSIBLE%<U83C7> /xee/x79 <CJK>
-+%IRREVERSIBLE%<U83F6> /xee/x7a <CJK>
-+%IRREVERSIBLE%<U8448> /xee/x7b <CJK>
-+%IRREVERSIBLE%<U84B4> /xee/x7c <CJK>
-+%IRREVERSIBLE%<U8553> /xee/x7d <CJK>
-+%IRREVERSIBLE%<U8559> /xee/x7e <CJK>
-+%IRREVERSIBLE%<U856B> /xee/x80 <CJK>
-+%IRREVERSIBLE%<UFA1F> /xee/x81 CJK COMPATIBILITY IDEOGRAPH-FA1F
-+%IRREVERSIBLE%<U85B0> /xee/x82 <CJK>
-+%IRREVERSIBLE%<UFA20> /xee/x83 CJK COMPATIBILITY IDEOGRAPH-FA20
-+%IRREVERSIBLE%<UFA21> /xee/x84 CJK COMPATIBILITY IDEOGRAPH-FA21
-+%IRREVERSIBLE%<U8807> /xee/x85 <CJK>
-+%IRREVERSIBLE%<U88F5> /xee/x86 <CJK>
-+%IRREVERSIBLE%<U8A12> /xee/x87 <CJK>
-+%IRREVERSIBLE%<U8A37> /xee/x88 <CJK>
-+%IRREVERSIBLE%<U8A79> /xee/x89 <CJK>
-+%IRREVERSIBLE%<U8AA7> /xee/x8a <CJK>
-+%IRREVERSIBLE%<U8ABE> /xee/x8b <CJK>
-+%IRREVERSIBLE%<U8ADF> /xee/x8c <CJK>
-+%IRREVERSIBLE%<UFA22> /xee/x8d CJK COMPATIBILITY IDEOGRAPH-FA22
-+%IRREVERSIBLE%<U8AF6> /xee/x8e <CJK>
-+%IRREVERSIBLE%<U8B53> /xee/x8f <CJK>
-+%IRREVERSIBLE%<U8B7F> /xee/x90 <CJK>
-+%IRREVERSIBLE%<U8CF0> /xee/x91 <CJK>
-+%IRREVERSIBLE%<U8CF4> /xee/x92 <CJK>
-+%IRREVERSIBLE%<U8D12> /xee/x93 <CJK>
-+%IRREVERSIBLE%<U8D76> /xee/x94 <CJK>
-+%IRREVERSIBLE%<UFA23> /xee/x95 CJK COMPATIBILITY IDEOGRAPH-FA23
-+%IRREVERSIBLE%<U8ECF> /xee/x96 <CJK>
-+%IRREVERSIBLE%<UFA24> /xee/x97 CJK COMPATIBILITY IDEOGRAPH-FA24
-+%IRREVERSIBLE%<UFA25> /xee/x98 CJK COMPATIBILITY IDEOGRAPH-FA25
-+%IRREVERSIBLE%<U9067> /xee/x99 <CJK>
-+%IRREVERSIBLE%<U90DE> /xee/x9a <CJK>
-+%IRREVERSIBLE%<UFA26> /xee/x9b CJK COMPATIBILITY IDEOGRAPH-FA26
-+%IRREVERSIBLE%<U9115> /xee/x9c <CJK>
-+%IRREVERSIBLE%<U9127> /xee/x9d <CJK>
-+%IRREVERSIBLE%<U91DA> /xee/x9e <CJK>
-+%IRREVERSIBLE%<U91D7> /xee/x9f <CJK>
-+%IRREVERSIBLE%<U91DE> /xee/xa0 <CJK>
-+%IRREVERSIBLE%<U91ED> /xee/xa1 <CJK>
-+%IRREVERSIBLE%<U91EE> /xee/xa2 <CJK>
-+%IRREVERSIBLE%<U91E4> /xee/xa3 <CJK>
-+%IRREVERSIBLE%<U91E5> /xee/xa4 <CJK>
-+%IRREVERSIBLE%<U9206> /xee/xa5 <CJK>
-+%IRREVERSIBLE%<U9210> /xee/xa6 <CJK>
-+%IRREVERSIBLE%<U920A> /xee/xa7 <CJK>
-+%IRREVERSIBLE%<U923A> /xee/xa8 <CJK>
-+%IRREVERSIBLE%<U9240> /xee/xa9 <CJK>
-+%IRREVERSIBLE%<U923C> /xee/xaa <CJK>
-+%IRREVERSIBLE%<U924E> /xee/xab <CJK>
-+%IRREVERSIBLE%<U9259> /xee/xac <CJK>
-+%IRREVERSIBLE%<U9251> /xee/xad <CJK>
-+%IRREVERSIBLE%<U9239> /xee/xae <CJK>
-+%IRREVERSIBLE%<U9267> /xee/xaf <CJK>
-+%IRREVERSIBLE%<U92A7> /xee/xb0 <CJK>
-+%IRREVERSIBLE%<U9277> /xee/xb1 <CJK>
-+%IRREVERSIBLE%<U9278> /xee/xb2 <CJK>
-+%IRREVERSIBLE%<U92E7> /xee/xb3 <CJK>
-+%IRREVERSIBLE%<U92D7> /xee/xb4 <CJK>
-+%IRREVERSIBLE%<U92D9> /xee/xb5 <CJK>
-+%IRREVERSIBLE%<U92D0> /xee/xb6 <CJK>
-+%IRREVERSIBLE%<UFA27> /xee/xb7 CJK COMPATIBILITY IDEOGRAPH-FA27
-+%IRREVERSIBLE%<U92D5> /xee/xb8 <CJK>
-+%IRREVERSIBLE%<U92E0> /xee/xb9 <CJK>
-+%IRREVERSIBLE%<U92D3> /xee/xba <CJK>
-+%IRREVERSIBLE%<U9325> /xee/xbb <CJK>
-+%IRREVERSIBLE%<U9321> /xee/xbc <CJK>
-+%IRREVERSIBLE%<U92FB> /xee/xbd <CJK>
-+%IRREVERSIBLE%<UFA28> /xee/xbe CJK COMPATIBILITY IDEOGRAPH-FA28
-+%IRREVERSIBLE%<U931E> /xee/xbf <CJK>
-+%IRREVERSIBLE%<U92FF> /xee/xc0 <CJK>
-+%IRREVERSIBLE%<U931D> /xee/xc1 <CJK>
-+%IRREVERSIBLE%<U9302> /xee/xc2 <CJK>
-+%IRREVERSIBLE%<U9370> /xee/xc3 <CJK>
-+%IRREVERSIBLE%<U9357> /xee/xc4 <CJK>
-+%IRREVERSIBLE%<U93A4> /xee/xc5 <CJK>
-+%IRREVERSIBLE%<U93C6> /xee/xc6 <CJK>
-+%IRREVERSIBLE%<U93DE> /xee/xc7 <CJK>
-+%IRREVERSIBLE%<U93F8> /xee/xc8 <CJK>
-+%IRREVERSIBLE%<U9431> /xee/xc9 <CJK>
-+%IRREVERSIBLE%<U9445> /xee/xca <CJK>
-+%IRREVERSIBLE%<U9448> /xee/xcb <CJK>
-+%IRREVERSIBLE%<U9592> /xee/xcc <CJK>
-+%IRREVERSIBLE%<UF9DC> /xee/xcd CJK COMPATIBILITY IDEOGRAPH-F9DC
-+%IRREVERSIBLE%<UFA29> /xee/xce CJK COMPATIBILITY IDEOGRAPH-FA29
-+%IRREVERSIBLE%<U969D> /xee/xcf <CJK>
-+%IRREVERSIBLE%<U96AF> /xee/xd0 <CJK>
-+%IRREVERSIBLE%<U9733> /xee/xd1 <CJK>
-+%IRREVERSIBLE%<U973B> /xee/xd2 <CJK>
-+%IRREVERSIBLE%<U9743> /xee/xd3 <CJK>
-+%IRREVERSIBLE%<U974D> /xee/xd4 <CJK>
-+%IRREVERSIBLE%<U974F> /xee/xd5 <CJK>
-+%IRREVERSIBLE%<U9751> /xee/xd6 <CJK>
-+%IRREVERSIBLE%<U9755> /xee/xd7 <CJK>
-+%IRREVERSIBLE%<U9857> /xee/xd8 <CJK>
-+%IRREVERSIBLE%<U9865> /xee/xd9 <CJK>
-+%IRREVERSIBLE%<UFA2A> /xee/xda CJK COMPATIBILITY IDEOGRAPH-FA2A
-+%IRREVERSIBLE%<UFA2B> /xee/xdb CJK COMPATIBILITY IDEOGRAPH-FA2B
-+%IRREVERSIBLE%<U9927> /xee/xdc <CJK>
-+%IRREVERSIBLE%<UFA2C> /xee/xdd CJK COMPATIBILITY IDEOGRAPH-FA2C
-+%IRREVERSIBLE%<U999E> /xee/xde <CJK>
-+%IRREVERSIBLE%<U9A4E> /xee/xdf <CJK>
-+%IRREVERSIBLE%<U9AD9> /xee/xe0 <CJK>
-+%IRREVERSIBLE%<U9ADC> /xee/xe1 <CJK>
-+%IRREVERSIBLE%<U9B75> /xee/xe2 <CJK>
-+%IRREVERSIBLE%<U9B72> /xee/xe3 <CJK>
-+%IRREVERSIBLE%<U9B8F> /xee/xe4 <CJK>
-+%IRREVERSIBLE%<U9BB1> /xee/xe5 <CJK>
-+%IRREVERSIBLE%<U9BBB> /xee/xe6 <CJK>
-+%IRREVERSIBLE%<U9C00> /xee/xe7 <CJK>
-+%IRREVERSIBLE%<U9D70> /xee/xe8 <CJK>
-+%IRREVERSIBLE%<U9D6B> /xee/xe9 <CJK>
-+%IRREVERSIBLE%<UFA2D> /xee/xea CJK COMPATIBILITY IDEOGRAPH-FA2D
-+%IRREVERSIBLE%<U9E19> /xee/xeb <CJK>
-+%IRREVERSIBLE%<U9ED1> /xee/xec <CJK>
-+%IRREVERSIBLE%<U2170> /xee/xef SMALL ROMAN NUMERAL ONE
-+%IRREVERSIBLE%<U2171> /xee/xf0 SMALL ROMAN NUMERAL TWO
-+%IRREVERSIBLE%<U2172> /xee/xf1 SMALL ROMAN NUMERAL THREE
-+%IRREVERSIBLE%<U2173> /xee/xf2 SMALL ROMAN NUMERAL FOUR
-+%IRREVERSIBLE%<U2174> /xee/xf3 SMALL ROMAN NUMERAL FIVE
-+%IRREVERSIBLE%<U2175> /xee/xf4 SMALL ROMAN NUMERAL SIX
-+%IRREVERSIBLE%<U2176> /xee/xf5 SMALL ROMAN NUMERAL SEVEN
-+%IRREVERSIBLE%<U2177> /xee/xf6 SMALL ROMAN NUMERAL EIGHT
-+%IRREVERSIBLE%<U2178> /xee/xf7 SMALL ROMAN NUMERAL NINE
-+%IRREVERSIBLE%<U2179> /xee/xf8 SMALL ROMAN NUMERAL TEN
-+%IRREVERSIBLE%<UFFE2> /xee/xf9 FULLWIDTH NOT SIGN
-+%IRREVERSIBLE%<UFFE4> /xee/xfa FULLWIDTH BROKEN BAR
-+%IRREVERSIBLE%<UFF07> /xee/xfb FULLWIDTH APOSTROPHE
-+%IRREVERSIBLE%<UFF02> /xee/xfc FULLWIDTH QUOTATION MARK
-+
-+<UE000> /xf0/x40 <Private Use>
-+<UE001> /xf0/x41 <Private Use>
-+<UE002> /xf0/x42 <Private Use>
-+<UE003> /xf0/x43 <Private Use>
-+<UE004> /xf0/x44 <Private Use>
-+<UE005> /xf0/x45 <Private Use>
-+<UE006> /xf0/x46 <Private Use>
-+<UE007> /xf0/x47 <Private Use>
-+<UE008> /xf0/x48 <Private Use>
-+<UE009> /xf0/x49 <Private Use>
-+<UE00A> /xf0/x4a <Private Use>
-+<UE00B> /xf0/x4b <Private Use>
-+<UE00C> /xf0/x4c <Private Use>
-+<UE00D> /xf0/x4d <Private Use>
-+<UE00E> /xf0/x4e <Private Use>
-+<UE00F> /xf0/x4f <Private Use>
-+<UE010> /xf0/x50 <Private Use>
-+<UE011> /xf0/x51 <Private Use>
-+<UE012> /xf0/x52 <Private Use>
-+<UE013> /xf0/x53 <Private Use>
-+<UE014> /xf0/x54 <Private Use>
-+<UE015> /xf0/x55 <Private Use>
-+<UE016> /xf0/x56 <Private Use>
-+<UE017> /xf0/x57 <Private Use>
-+<UE018> /xf0/x58 <Private Use>
-+<UE019> /xf0/x59 <Private Use>
-+<UE01A> /xf0/x5a <Private Use>
-+<UE01B> /xf0/x5b <Private Use>
-+<UE01C> /xf0/x5c <Private Use>
-+<UE01D> /xf0/x5d <Private Use>
-+<UE01E> /xf0/x5e <Private Use>
-+<UE01F> /xf0/x5f <Private Use>
-+<UE020> /xf0/x60 <Private Use>
-+<UE021> /xf0/x61 <Private Use>
-+<UE022> /xf0/x62 <Private Use>
-+<UE023> /xf0/x63 <Private Use>
-+<UE024> /xf0/x64 <Private Use>
-+<UE025> /xf0/x65 <Private Use>
-+<UE026> /xf0/x66 <Private Use>
-+<UE027> /xf0/x67 <Private Use>
-+<UE028> /xf0/x68 <Private Use>
-+<UE029> /xf0/x69 <Private Use>
-+<UE02A> /xf0/x6a <Private Use>
-+<UE02B> /xf0/x6b <Private Use>
-+<UE02C> /xf0/x6c <Private Use>
-+<UE02D> /xf0/x6d <Private Use>
-+<UE02E> /xf0/x6e <Private Use>
-+<UE02F> /xf0/x6f <Private Use>
-+<UE030> /xf0/x70 <Private Use>
-+<UE031> /xf0/x71 <Private Use>
-+<UE032> /xf0/x72 <Private Use>
-+<UE033> /xf0/x73 <Private Use>
-+<UE034> /xf0/x74 <Private Use>
-+<UE035> /xf0/x75 <Private Use>
-+<UE036> /xf0/x76 <Private Use>
-+<UE037> /xf0/x77 <Private Use>
-+<UE038> /xf0/x78 <Private Use>
-+<UE039> /xf0/x79 <Private Use>
-+<UE03A> /xf0/x7a <Private Use>
-+<UE03B> /xf0/x7b <Private Use>
-+<UE03C> /xf0/x7c <Private Use>
-+<UE03D> /xf0/x7d <Private Use>
-+<UE03E> /xf0/x7e <Private Use>
-+<UE03F> /xf0/x80 <Private Use>
-+<UE040> /xf0/x81 <Private Use>
-+<UE041> /xf0/x82 <Private Use>
-+<UE042> /xf0/x83 <Private Use>
-+<UE043> /xf0/x84 <Private Use>
-+<UE044> /xf0/x85 <Private Use>
-+<UE045> /xf0/x86 <Private Use>
-+<UE046> /xf0/x87 <Private Use>
-+<UE047> /xf0/x88 <Private Use>
-+<UE048> /xf0/x89 <Private Use>
-+<UE049> /xf0/x8a <Private Use>
-+<UE04A> /xf0/x8b <Private Use>
-+<UE04B> /xf0/x8c <Private Use>
-+<UE04C> /xf0/x8d <Private Use>
-+<UE04D> /xf0/x8e <Private Use>
-+<UE04E> /xf0/x8f <Private Use>
-+<UE04F> /xf0/x90 <Private Use>
-+<UE050> /xf0/x91 <Private Use>
-+<UE051> /xf0/x92 <Private Use>
-+<UE052> /xf0/x93 <Private Use>
-+<UE053> /xf0/x94 <Private Use>
-+<UE054> /xf0/x95 <Private Use>
-+<UE055> /xf0/x96 <Private Use>
-+<UE056> /xf0/x97 <Private Use>
-+<UE057> /xf0/x98 <Private Use>
-+<UE058> /xf0/x99 <Private Use>
-+<UE059> /xf0/x9a <Private Use>
-+<UE05A> /xf0/x9b <Private Use>
-+<UE05B> /xf0/x9c <Private Use>
-+<UE05C> /xf0/x9d <Private Use>
-+<UE05D> /xf0/x9e <Private Use>
-+<UE05E> /xf0/x9f <Private Use>
-+<UE05F> /xf0/xa0 <Private Use>
-+<UE060> /xf0/xa1 <Private Use>
-+<UE061> /xf0/xa2 <Private Use>
-+<UE062> /xf0/xa3 <Private Use>
-+<UE063> /xf0/xa4 <Private Use>
-+<UE064> /xf0/xa5 <Private Use>
-+<UE065> /xf0/xa6 <Private Use>
-+<UE066> /xf0/xa7 <Private Use>
-+<UE067> /xf0/xa8 <Private Use>
-+<UE068> /xf0/xa9 <Private Use>
-+<UE069> /xf0/xaa <Private Use>
-+<UE06A> /xf0/xab <Private Use>
-+<UE06B> /xf0/xac <Private Use>
-+<UE06C> /xf0/xad <Private Use>
-+<UE06D> /xf0/xae <Private Use>
-+<UE06E> /xf0/xaf <Private Use>
-+<UE06F> /xf0/xb0 <Private Use>
-+<UE070> /xf0/xb1 <Private Use>
-+<UE071> /xf0/xb2 <Private Use>
-+<UE072> /xf0/xb3 <Private Use>
-+<UE073> /xf0/xb4 <Private Use>
-+<UE074> /xf0/xb5 <Private Use>
-+<UE075> /xf0/xb6 <Private Use>
-+<UE076> /xf0/xb7 <Private Use>
-+<UE077> /xf0/xb8 <Private Use>
-+<UE078> /xf0/xb9 <Private Use>
-+<UE079> /xf0/xba <Private Use>
-+<UE07A> /xf0/xbb <Private Use>
-+<UE07B> /xf0/xbc <Private Use>
-+<UE07C> /xf0/xbd <Private Use>
-+<UE07D> /xf0/xbe <Private Use>
-+<UE07E> /xf0/xbf <Private Use>
-+<UE07F> /xf0/xc0 <Private Use>
-+<UE080> /xf0/xc1 <Private Use>
-+<UE081> /xf0/xc2 <Private Use>
-+<UE082> /xf0/xc3 <Private Use>
-+<UE083> /xf0/xc4 <Private Use>
-+<UE084> /xf0/xc5 <Private Use>
-+<UE085> /xf0/xc6 <Private Use>
-+<UE086> /xf0/xc7 <Private Use>
-+<UE087> /xf0/xc8 <Private Use>
-+<UE088> /xf0/xc9 <Private Use>
-+<UE089> /xf0/xca <Private Use>
-+<UE08A> /xf0/xcb <Private Use>
-+<UE08B> /xf0/xcc <Private Use>
-+<UE08C> /xf0/xcd <Private Use>
-+<UE08D> /xf0/xce <Private Use>
-+<UE08E> /xf0/xcf <Private Use>
-+<UE08F> /xf0/xd0 <Private Use>
-+<UE090> /xf0/xd1 <Private Use>
-+<UE091> /xf0/xd2 <Private Use>
-+<UE092> /xf0/xd3 <Private Use>
-+<UE093> /xf0/xd4 <Private Use>
-+<UE094> /xf0/xd5 <Private Use>
-+<UE095> /xf0/xd6 <Private Use>
-+<UE096> /xf0/xd7 <Private Use>
-+<UE097> /xf0/xd8 <Private Use>
-+<UE098> /xf0/xd9 <Private Use>
-+<UE099> /xf0/xda <Private Use>
-+<UE09A> /xf0/xdb <Private Use>
-+<UE09B> /xf0/xdc <Private Use>
-+<UE09C> /xf0/xdd <Private Use>
-+<UE09D> /xf0/xde <Private Use>
-+<UE09E> /xf0/xdf <Private Use>
-+<UE09F> /xf0/xe0 <Private Use>
-+<UE0A0> /xf0/xe1 <Private Use>
-+<UE0A1> /xf0/xe2 <Private Use>
-+<UE0A2> /xf0/xe3 <Private Use>
-+<UE0A3> /xf0/xe4 <Private Use>
-+<UE0A4> /xf0/xe5 <Private Use>
-+<UE0A5> /xf0/xe6 <Private Use>
-+<UE0A6> /xf0/xe7 <Private Use>
-+<UE0A7> /xf0/xe8 <Private Use>
-+<UE0A8> /xf0/xe9 <Private Use>
-+<UE0A9> /xf0/xea <Private Use>
-+<UE0AA> /xf0/xeb <Private Use>
-+<UE0AB> /xf0/xec <Private Use>
-+<UE0AC> /xf0/xed <Private Use>
-+<UE0AD> /xf0/xee <Private Use>
-+<UE0AE> /xf0/xef <Private Use>
-+<UE0AF> /xf0/xf0 <Private Use>
-+<UE0B0> /xf0/xf1 <Private Use>
-+<UE0B1> /xf0/xf2 <Private Use>
-+<UE0B2> /xf0/xf3 <Private Use>
-+<UE0B3> /xf0/xf4 <Private Use>
-+<UE0B4> /xf0/xf5 <Private Use>
-+<UE0B5> /xf0/xf6 <Private Use>
-+<UE0B6> /xf0/xf7 <Private Use>
-+<UE0B7> /xf0/xf8 <Private Use>
-+<UE0B8> /xf0/xf9 <Private Use>
-+<UE0B9> /xf0/xfa <Private Use>
-+<UE0BA> /xf0/xfb <Private Use>
-+<UE0BB> /xf0/xfc <Private Use>
-+<UE0BC> /xf1/x40 <Private Use>
-+<UE0BD> /xf1/x41 <Private Use>
-+<UE0BE> /xf1/x42 <Private Use>
-+<UE0BF> /xf1/x43 <Private Use>
-+<UE0C0> /xf1/x44 <Private Use>
-+<UE0C1> /xf1/x45 <Private Use>
-+<UE0C2> /xf1/x46 <Private Use>
-+<UE0C3> /xf1/x47 <Private Use>
-+<UE0C4> /xf1/x48 <Private Use>
-+<UE0C5> /xf1/x49 <Private Use>
-+<UE0C6> /xf1/x4a <Private Use>
-+<UE0C7> /xf1/x4b <Private Use>
-+<UE0C8> /xf1/x4c <Private Use>
-+<UE0C9> /xf1/x4d <Private Use>
-+<UE0CA> /xf1/x4e <Private Use>
-+<UE0CB> /xf1/x4f <Private Use>
-+<UE0CC> /xf1/x50 <Private Use>
-+<UE0CD> /xf1/x51 <Private Use>
-+<UE0CE> /xf1/x52 <Private Use>
-+<UE0CF> /xf1/x53 <Private Use>
-+<UE0D0> /xf1/x54 <Private Use>
-+<UE0D1> /xf1/x55 <Private Use>
-+<UE0D2> /xf1/x56 <Private Use>
-+<UE0D3> /xf1/x57 <Private Use>
-+<UE0D4> /xf1/x58 <Private Use>
-+<UE0D5> /xf1/x59 <Private Use>
-+<UE0D6> /xf1/x5a <Private Use>
-+<UE0D7> /xf1/x5b <Private Use>
-+<UE0D8> /xf1/x5c <Private Use>
-+<UE0D9> /xf1/x5d <Private Use>
-+<UE0DA> /xf1/x5e <Private Use>
-+<UE0DB> /xf1/x5f <Private Use>
-+<UE0DC> /xf1/x60 <Private Use>
-+<UE0DD> /xf1/x61 <Private Use>
-+<UE0DE> /xf1/x62 <Private Use>
-+<UE0DF> /xf1/x63 <Private Use>
-+<UE0E0> /xf1/x64 <Private Use>
-+<UE0E1> /xf1/x65 <Private Use>
-+<UE0E2> /xf1/x66 <Private Use>
-+<UE0E3> /xf1/x67 <Private Use>
-+<UE0E4> /xf1/x68 <Private Use>
-+<UE0E5> /xf1/x69 <Private Use>
-+<UE0E6> /xf1/x6a <Private Use>
-+<UE0E7> /xf1/x6b <Private Use>
-+<UE0E8> /xf1/x6c <Private Use>
-+<UE0E9> /xf1/x6d <Private Use>
-+<UE0EA> /xf1/x6e <Private Use>
-+<UE0EB> /xf1/x6f <Private Use>
-+<UE0EC> /xf1/x70 <Private Use>
-+<UE0ED> /xf1/x71 <Private Use>
-+<UE0EE> /xf1/x72 <Private Use>
-+<UE0EF> /xf1/x73 <Private Use>
-+<UE0F0> /xf1/x74 <Private Use>
-+<UE0F1> /xf1/x75 <Private Use>
-+<UE0F2> /xf1/x76 <Private Use>
-+<UE0F3> /xf1/x77 <Private Use>
-+<UE0F4> /xf1/x78 <Private Use>
-+<UE0F5> /xf1/x79 <Private Use>
-+<UE0F6> /xf1/x7a <Private Use>
-+<UE0F7> /xf1/x7b <Private Use>
-+<UE0F8> /xf1/x7c <Private Use>
-+<UE0F9> /xf1/x7d <Private Use>
-+<UE0FA> /xf1/x7e <Private Use>
-+<UE0FB> /xf1/x80 <Private Use>
-+<UE0FC> /xf1/x81 <Private Use>
-+<UE0FD> /xf1/x82 <Private Use>
-+<UE0FE> /xf1/x83 <Private Use>
-+<UE0FF> /xf1/x84 <Private Use>
-+<UE100> /xf1/x85 <Private Use>
-+<UE101> /xf1/x86 <Private Use>
-+<UE102> /xf1/x87 <Private Use>
-+<UE103> /xf1/x88 <Private Use>
-+<UE104> /xf1/x89 <Private Use>
-+<UE105> /xf1/x8a <Private Use>
-+<UE106> /xf1/x8b <Private Use>
-+<UE107> /xf1/x8c <Private Use>
-+<UE108> /xf1/x8d <Private Use>
-+<UE109> /xf1/x8e <Private Use>
-+<UE10A> /xf1/x8f <Private Use>
-+<UE10B> /xf1/x90 <Private Use>
-+<UE10C> /xf1/x91 <Private Use>
-+<UE10D> /xf1/x92 <Private Use>
-+<UE10E> /xf1/x93 <Private Use>
-+<UE10F> /xf1/x94 <Private Use>
-+<UE110> /xf1/x95 <Private Use>
-+<UE111> /xf1/x96 <Private Use>
-+<UE112> /xf1/x97 <Private Use>
-+<UE113> /xf1/x98 <Private Use>
-+<UE114> /xf1/x99 <Private Use>
-+<UE115> /xf1/x9a <Private Use>
-+<UE116> /xf1/x9b <Private Use>
-+<UE117> /xf1/x9c <Private Use>
-+<UE118> /xf1/x9d <Private Use>
-+<UE119> /xf1/x9e <Private Use>
-+<UE11A> /xf1/x9f <Private Use>
-+<UE11B> /xf1/xa0 <Private Use>
-+<UE11C> /xf1/xa1 <Private Use>
-+<UE11D> /xf1/xa2 <Private Use>
-+<UE11E> /xf1/xa3 <Private Use>
-+<UE11F> /xf1/xa4 <Private Use>
-+<UE120> /xf1/xa5 <Private Use>
-+<UE121> /xf1/xa6 <Private Use>
-+<UE122> /xf1/xa7 <Private Use>
-+<UE123> /xf1/xa8 <Private Use>
-+<UE124> /xf1/xa9 <Private Use>
-+<UE125> /xf1/xaa <Private Use>
-+<UE126> /xf1/xab <Private Use>
-+<UE127> /xf1/xac <Private Use>
-+<UE128> /xf1/xad <Private Use>
-+<UE129> /xf1/xae <Private Use>
-+<UE12A> /xf1/xaf <Private Use>
-+<UE12B> /xf1/xb0 <Private Use>
-+<UE12C> /xf1/xb1 <Private Use>
-+<UE12D> /xf1/xb2 <Private Use>
-+<UE12E> /xf1/xb3 <Private Use>
-+<UE12F> /xf1/xb4 <Private Use>
-+<UE130> /xf1/xb5 <Private Use>
-+<UE131> /xf1/xb6 <Private Use>
-+<UE132> /xf1/xb7 <Private Use>
-+<UE133> /xf1/xb8 <Private Use>
-+<UE134> /xf1/xb9 <Private Use>
-+<UE135> /xf1/xba <Private Use>
-+<UE136> /xf1/xbb <Private Use>
-+<UE137> /xf1/xbc <Private Use>
-+<UE138> /xf1/xbd <Private Use>
-+<UE139> /xf1/xbe <Private Use>
-+<UE13A> /xf1/xbf <Private Use>
-+<UE13B> /xf1/xc0 <Private Use>
-+<UE13C> /xf1/xc1 <Private Use>
-+<UE13D> /xf1/xc2 <Private Use>
-+<UE13E> /xf1/xc3 <Private Use>
-+<UE13F> /xf1/xc4 <Private Use>
-+<UE140> /xf1/xc5 <Private Use>
-+<UE141> /xf1/xc6 <Private Use>
-+<UE142> /xf1/xc7 <Private Use>
-+<UE143> /xf1/xc8 <Private Use>
-+<UE144> /xf1/xc9 <Private Use>
-+<UE145> /xf1/xca <Private Use>
-+<UE146> /xf1/xcb <Private Use>
-+<UE147> /xf1/xcc <Private Use>
-+<UE148> /xf1/xcd <Private Use>
-+<UE149> /xf1/xce <Private Use>
-+<UE14A> /xf1/xcf <Private Use>
-+<UE14B> /xf1/xd0 <Private Use>
-+<UE14C> /xf1/xd1 <Private Use>
-+<UE14D> /xf1/xd2 <Private Use>
-+<UE14E> /xf1/xd3 <Private Use>
-+<UE14F> /xf1/xd4 <Private Use>
-+<UE150> /xf1/xd5 <Private Use>
-+<UE151> /xf1/xd6 <Private Use>
-+<UE152> /xf1/xd7 <Private Use>
-+<UE153> /xf1/xd8 <Private Use>
-+<UE154> /xf1/xd9 <Private Use>
-+<UE155> /xf1/xda <Private Use>
-+<UE156> /xf1/xdb <Private Use>
-+<UE157> /xf1/xdc <Private Use>
-+<UE158> /xf1/xdd <Private Use>
-+<UE159> /xf1/xde <Private Use>
-+<UE15A> /xf1/xdf <Private Use>
-+<UE15B> /xf1/xe0 <Private Use>
-+<UE15C> /xf1/xe1 <Private Use>
-+<UE15D> /xf1/xe2 <Private Use>
-+<UE15E> /xf1/xe3 <Private Use>
-+<UE15F> /xf1/xe4 <Private Use>
-+<UE160> /xf1/xe5 <Private Use>
-+<UE161> /xf1/xe6 <Private Use>
-+<UE162> /xf1/xe7 <Private Use>
-+<UE163> /xf1/xe8 <Private Use>
-+<UE164> /xf1/xe9 <Private Use>
-+<UE165> /xf1/xea <Private Use>
-+<UE166> /xf1/xeb <Private Use>
-+<UE167> /xf1/xec <Private Use>
-+<UE168> /xf1/xed <Private Use>
-+<UE169> /xf1/xee <Private Use>
-+<UE16A> /xf1/xef <Private Use>
-+<UE16B> /xf1/xf0 <Private Use>
-+<UE16C> /xf1/xf1 <Private Use>
-+<UE16D> /xf1/xf2 <Private Use>
-+<UE16E> /xf1/xf3 <Private Use>
-+<UE16F> /xf1/xf4 <Private Use>
-+<UE170> /xf1/xf5 <Private Use>
-+<UE171> /xf1/xf6 <Private Use>
-+<UE172> /xf1/xf7 <Private Use>
-+<UE173> /xf1/xf8 <Private Use>
-+<UE174> /xf1/xf9 <Private Use>
-+<UE175> /xf1/xfa <Private Use>
-+<UE176> /xf1/xfb <Private Use>
-+<UE177> /xf1/xfc <Private Use>
-+<UE178> /xf2/x40 <Private Use>
-+<UE179> /xf2/x41 <Private Use>
-+<UE17A> /xf2/x42 <Private Use>
-+<UE17B> /xf2/x43 <Private Use>
-+<UE17C> /xf2/x44 <Private Use>
-+<UE17D> /xf2/x45 <Private Use>
-+<UE17E> /xf2/x46 <Private Use>
-+<UE17F> /xf2/x47 <Private Use>
-+<UE180> /xf2/x48 <Private Use>
-+<UE181> /xf2/x49 <Private Use>
-+<UE182> /xf2/x4a <Private Use>
-+<UE183> /xf2/x4b <Private Use>
-+<UE184> /xf2/x4c <Private Use>
-+<UE185> /xf2/x4d <Private Use>
-+<UE186> /xf2/x4e <Private Use>
-+<UE187> /xf2/x4f <Private Use>
-+<UE188> /xf2/x50 <Private Use>
-+<UE189> /xf2/x51 <Private Use>
-+<UE18A> /xf2/x52 <Private Use>
-+<UE18B> /xf2/x53 <Private Use>
-+<UE18C> /xf2/x54 <Private Use>
-+<UE18D> /xf2/x55 <Private Use>
-+<UE18E> /xf2/x56 <Private Use>
-+<UE18F> /xf2/x57 <Private Use>
-+<UE190> /xf2/x58 <Private Use>
-+<UE191> /xf2/x59 <Private Use>
-+<UE192> /xf2/x5a <Private Use>
-+<UE193> /xf2/x5b <Private Use>
-+<UE194> /xf2/x5c <Private Use>
-+<UE195> /xf2/x5d <Private Use>
-+<UE196> /xf2/x5e <Private Use>
-+<UE197> /xf2/x5f <Private Use>
-+<UE198> /xf2/x60 <Private Use>
-+<UE199> /xf2/x61 <Private Use>
-+<UE19A> /xf2/x62 <Private Use>
-+<UE19B> /xf2/x63 <Private Use>
-+<UE19C> /xf2/x64 <Private Use>
-+<UE19D> /xf2/x65 <Private Use>
-+<UE19E> /xf2/x66 <Private Use>
-+<UE19F> /xf2/x67 <Private Use>
-+<UE1A0> /xf2/x68 <Private Use>
-+<UE1A1> /xf2/x69 <Private Use>
-+<UE1A2> /xf2/x6a <Private Use>
-+<UE1A3> /xf2/x6b <Private Use>
-+<UE1A4> /xf2/x6c <Private Use>
-+<UE1A5> /xf2/x6d <Private Use>
-+<UE1A6> /xf2/x6e <Private Use>
-+<UE1A7> /xf2/x6f <Private Use>
-+<UE1A8> /xf2/x70 <Private Use>
-+<UE1A9> /xf2/x71 <Private Use>
-+<UE1AA> /xf2/x72 <Private Use>
-+<UE1AB> /xf2/x73 <Private Use>
-+<UE1AC> /xf2/x74 <Private Use>
-+<UE1AD> /xf2/x75 <Private Use>
-+<UE1AE> /xf2/x76 <Private Use>
-+<UE1AF> /xf2/x77 <Private Use>
-+<UE1B0> /xf2/x78 <Private Use>
-+<UE1B1> /xf2/x79 <Private Use>
-+<UE1B2> /xf2/x7a <Private Use>
-+<UE1B3> /xf2/x7b <Private Use>
-+<UE1B4> /xf2/x7c <Private Use>
-+<UE1B5> /xf2/x7d <Private Use>
-+<UE1B6> /xf2/x7e <Private Use>
-+<UE1B7> /xf2/x80 <Private Use>
-+<UE1B8> /xf2/x81 <Private Use>
-+<UE1B9> /xf2/x82 <Private Use>
-+<UE1BA> /xf2/x83 <Private Use>
-+<UE1BB> /xf2/x84 <Private Use>
-+<UE1BC> /xf2/x85 <Private Use>
-+<UE1BD> /xf2/x86 <Private Use>
-+<UE1BE> /xf2/x87 <Private Use>
-+<UE1BF> /xf2/x88 <Private Use>
-+<UE1C0> /xf2/x89 <Private Use>
-+<UE1C1> /xf2/x8a <Private Use>
-+<UE1C2> /xf2/x8b <Private Use>
-+<UE1C3> /xf2/x8c <Private Use>
-+<UE1C4> /xf2/x8d <Private Use>
-+<UE1C5> /xf2/x8e <Private Use>
-+<UE1C6> /xf2/x8f <Private Use>
-+<UE1C7> /xf2/x90 <Private Use>
-+<UE1C8> /xf2/x91 <Private Use>
-+<UE1C9> /xf2/x92 <Private Use>
-+<UE1CA> /xf2/x93 <Private Use>
-+<UE1CB> /xf2/x94 <Private Use>
-+<UE1CC> /xf2/x95 <Private Use>
-+<UE1CD> /xf2/x96 <Private Use>
-+<UE1CE> /xf2/x97 <Private Use>
-+<UE1CF> /xf2/x98 <Private Use>
-+<UE1D0> /xf2/x99 <Private Use>
-+<UE1D1> /xf2/x9a <Private Use>
-+<UE1D2> /xf2/x9b <Private Use>
-+<UE1D3> /xf2/x9c <Private Use>
-+<UE1D4> /xf2/x9d <Private Use>
-+<UE1D5> /xf2/x9e <Private Use>
-+<UE1D6> /xf2/x9f <Private Use>
-+<UE1D7> /xf2/xa0 <Private Use>
-+<UE1D8> /xf2/xa1 <Private Use>
-+<UE1D9> /xf2/xa2 <Private Use>
-+<UE1DA> /xf2/xa3 <Private Use>
-+<UE1DB> /xf2/xa4 <Private Use>
-+<UE1DC> /xf2/xa5 <Private Use>
-+<UE1DD> /xf2/xa6 <Private Use>
-+<UE1DE> /xf2/xa7 <Private Use>
-+<UE1DF> /xf2/xa8 <Private Use>
-+<UE1E0> /xf2/xa9 <Private Use>
-+<UE1E1> /xf2/xaa <Private Use>
-+<UE1E2> /xf2/xab <Private Use>
-+<UE1E3> /xf2/xac <Private Use>
-+<UE1E4> /xf2/xad <Private Use>
-+<UE1E5> /xf2/xae <Private Use>
-+<UE1E6> /xf2/xaf <Private Use>
-+<UE1E7> /xf2/xb0 <Private Use>
-+<UE1E8> /xf2/xb1 <Private Use>
-+<UE1E9> /xf2/xb2 <Private Use>
-+<UE1EA> /xf2/xb3 <Private Use>
-+<UE1EB> /xf2/xb4 <Private Use>
-+<UE1EC> /xf2/xb5 <Private Use>
-+<UE1ED> /xf2/xb6 <Private Use>
-+<UE1EE> /xf2/xb7 <Private Use>
-+<UE1EF> /xf2/xb8 <Private Use>
-+<UE1F0> /xf2/xb9 <Private Use>
-+<UE1F1> /xf2/xba <Private Use>
-+<UE1F2> /xf2/xbb <Private Use>
-+<UE1F3> /xf2/xbc <Private Use>
-+<UE1F4> /xf2/xbd <Private Use>
-+<UE1F5> /xf2/xbe <Private Use>
-+<UE1F6> /xf2/xbf <Private Use>
-+<UE1F7> /xf2/xc0 <Private Use>
-+<UE1F8> /xf2/xc1 <Private Use>
-+<UE1F9> /xf2/xc2 <Private Use>
-+<UE1FA> /xf2/xc3 <Private Use>
-+<UE1FB> /xf2/xc4 <Private Use>
-+<UE1FC> /xf2/xc5 <Private Use>
-+<UE1FD> /xf2/xc6 <Private Use>
-+<UE1FE> /xf2/xc7 <Private Use>
-+<UE1FF> /xf2/xc8 <Private Use>
-+<UE200> /xf2/xc9 <Private Use>
-+<UE201> /xf2/xca <Private Use>
-+<UE202> /xf2/xcb <Private Use>
-+<UE203> /xf2/xcc <Private Use>
-+<UE204> /xf2/xcd <Private Use>
-+<UE205> /xf2/xce <Private Use>
-+<UE206> /xf2/xcf <Private Use>
-+<UE207> /xf2/xd0 <Private Use>
-+<UE208> /xf2/xd1 <Private Use>
-+<UE209> /xf2/xd2 <Private Use>
-+<UE20A> /xf2/xd3 <Private Use>
-+<UE20B> /xf2/xd4 <Private Use>
-+<UE20C> /xf2/xd5 <Private Use>
-+<UE20D> /xf2/xd6 <Private Use>
-+<UE20E> /xf2/xd7 <Private Use>
-+<UE20F> /xf2/xd8 <Private Use>
-+<UE210> /xf2/xd9 <Private Use>
-+<UE211> /xf2/xda <Private Use>
-+<UE212> /xf2/xdb <Private Use>
-+<UE213> /xf2/xdc <Private Use>
-+<UE214> /xf2/xdd <Private Use>
-+<UE215> /xf2/xde <Private Use>
-+<UE216> /xf2/xdf <Private Use>
-+<UE217> /xf2/xe0 <Private Use>
-+<UE218> /xf2/xe1 <Private Use>
-+<UE219> /xf2/xe2 <Private Use>
-+<UE21A> /xf2/xe3 <Private Use>
-+<UE21B> /xf2/xe4 <Private Use>
-+<UE21C> /xf2/xe5 <Private Use>
-+<UE21D> /xf2/xe6 <Private Use>
-+<UE21E> /xf2/xe7 <Private Use>
-+<UE21F> /xf2/xe8 <Private Use>
-+<UE220> /xf2/xe9 <Private Use>
-+<UE221> /xf2/xea <Private Use>
-+<UE222> /xf2/xeb <Private Use>
-+<UE223> /xf2/xec <Private Use>
-+<UE224> /xf2/xed <Private Use>
-+<UE225> /xf2/xee <Private Use>
-+<UE226> /xf2/xef <Private Use>
-+<UE227> /xf2/xf0 <Private Use>
-+<UE228> /xf2/xf1 <Private Use>
-+<UE229> /xf2/xf2 <Private Use>
-+<UE22A> /xf2/xf3 <Private Use>
-+<UE22B> /xf2/xf4 <Private Use>
-+<UE22C> /xf2/xf5 <Private Use>
-+<UE22D> /xf2/xf6 <Private Use>
-+<UE22E> /xf2/xf7 <Private Use>
-+<UE22F> /xf2/xf8 <Private Use>
-+<UE230> /xf2/xf9 <Private Use>
-+<UE231> /xf2/xfa <Private Use>
-+<UE232> /xf2/xfb <Private Use>
-+<UE233> /xf2/xfc <Private Use>
-+<UE234> /xf3/x40 <Private Use>
-+<UE235> /xf3/x41 <Private Use>
-+<UE236> /xf3/x42 <Private Use>
-+<UE237> /xf3/x43 <Private Use>
-+<UE238> /xf3/x44 <Private Use>
-+<UE239> /xf3/x45 <Private Use>
-+<UE23A> /xf3/x46 <Private Use>
-+<UE23B> /xf3/x47 <Private Use>
-+<UE23C> /xf3/x48 <Private Use>
-+<UE23D> /xf3/x49 <Private Use>
-+<UE23E> /xf3/x4a <Private Use>
-+<UE23F> /xf3/x4b <Private Use>
-+<UE240> /xf3/x4c <Private Use>
-+<UE241> /xf3/x4d <Private Use>
-+<UE242> /xf3/x4e <Private Use>
-+<UE243> /xf3/x4f <Private Use>
-+<UE244> /xf3/x50 <Private Use>
-+<UE245> /xf3/x51 <Private Use>
-+<UE246> /xf3/x52 <Private Use>
-+<UE247> /xf3/x53 <Private Use>
-+<UE248> /xf3/x54 <Private Use>
-+<UE249> /xf3/x55 <Private Use>
-+<UE24A> /xf3/x56 <Private Use>
-+<UE24B> /xf3/x57 <Private Use>
-+<UE24C> /xf3/x58 <Private Use>
-+<UE24D> /xf3/x59 <Private Use>
-+<UE24E> /xf3/x5a <Private Use>
-+<UE24F> /xf3/x5b <Private Use>
-+<UE250> /xf3/x5c <Private Use>
-+<UE251> /xf3/x5d <Private Use>
-+<UE252> /xf3/x5e <Private Use>
-+<UE253> /xf3/x5f <Private Use>
-+<UE254> /xf3/x60 <Private Use>
-+<UE255> /xf3/x61 <Private Use>
-+<UE256> /xf3/x62 <Private Use>
-+<UE257> /xf3/x63 <Private Use>
-+<UE258> /xf3/x64 <Private Use>
-+<UE259> /xf3/x65 <Private Use>
-+<UE25A> /xf3/x66 <Private Use>
-+<UE25B> /xf3/x67 <Private Use>
-+<UE25C> /xf3/x68 <Private Use>
-+<UE25D> /xf3/x69 <Private Use>
-+<UE25E> /xf3/x6a <Private Use>
-+<UE25F> /xf3/x6b <Private Use>
-+<UE260> /xf3/x6c <Private Use>
-+<UE261> /xf3/x6d <Private Use>
-+<UE262> /xf3/x6e <Private Use>
-+<UE263> /xf3/x6f <Private Use>
-+<UE264> /xf3/x70 <Private Use>
-+<UE265> /xf3/x71 <Private Use>
-+<UE266> /xf3/x72 <Private Use>
-+<UE267> /xf3/x73 <Private Use>
-+<UE268> /xf3/x74 <Private Use>
-+<UE269> /xf3/x75 <Private Use>
-+<UE26A> /xf3/x76 <Private Use>
-+<UE26B> /xf3/x77 <Private Use>
-+<UE26C> /xf3/x78 <Private Use>
-+<UE26D> /xf3/x79 <Private Use>
-+<UE26E> /xf3/x7a <Private Use>
-+<UE26F> /xf3/x7b <Private Use>
-+<UE270> /xf3/x7c <Private Use>
-+<UE271> /xf3/x7d <Private Use>
-+<UE272> /xf3/x7e <Private Use>
-+<UE273> /xf3/x80 <Private Use>
-+<UE274> /xf3/x81 <Private Use>
-+<UE275> /xf3/x82 <Private Use>
-+<UE276> /xf3/x83 <Private Use>
-+<UE277> /xf3/x84 <Private Use>
-+<UE278> /xf3/x85 <Private Use>
-+<UE279> /xf3/x86 <Private Use>
-+<UE27A> /xf3/x87 <Private Use>
-+<UE27B> /xf3/x88 <Private Use>
-+<UE27C> /xf3/x89 <Private Use>
-+<UE27D> /xf3/x8a <Private Use>
-+<UE27E> /xf3/x8b <Private Use>
-+<UE27F> /xf3/x8c <Private Use>
-+<UE280> /xf3/x8d <Private Use>
-+<UE281> /xf3/x8e <Private Use>
-+<UE282> /xf3/x8f <Private Use>
-+<UE283> /xf3/x90 <Private Use>
-+<UE284> /xf3/x91 <Private Use>
-+<UE285> /xf3/x92 <Private Use>
-+<UE286> /xf3/x93 <Private Use>
-+<UE287> /xf3/x94 <Private Use>
-+<UE288> /xf3/x95 <Private Use>
-+<UE289> /xf3/x96 <Private Use>
-+<UE28A> /xf3/x97 <Private Use>
-+<UE28B> /xf3/x98 <Private Use>
-+<UE28C> /xf3/x99 <Private Use>
-+<UE28D> /xf3/x9a <Private Use>
-+<UE28E> /xf3/x9b <Private Use>
-+<UE28F> /xf3/x9c <Private Use>
-+<UE290> /xf3/x9d <Private Use>
-+<UE291> /xf3/x9e <Private Use>
-+<UE292> /xf3/x9f <Private Use>
-+<UE293> /xf3/xa0 <Private Use>
-+<UE294> /xf3/xa1 <Private Use>
-+<UE295> /xf3/xa2 <Private Use>
-+<UE296> /xf3/xa3 <Private Use>
-+<UE297> /xf3/xa4 <Private Use>
-+<UE298> /xf3/xa5 <Private Use>
-+<UE299> /xf3/xa6 <Private Use>
-+<UE29A> /xf3/xa7 <Private Use>
-+<UE29B> /xf3/xa8 <Private Use>
-+<UE29C> /xf3/xa9 <Private Use>
-+<UE29D> /xf3/xaa <Private Use>
-+<UE29E> /xf3/xab <Private Use>
-+<UE29F> /xf3/xac <Private Use>
-+<UE2A0> /xf3/xad <Private Use>
-+<UE2A1> /xf3/xae <Private Use>
-+<UE2A2> /xf3/xaf <Private Use>
-+<UE2A3> /xf3/xb0 <Private Use>
-+<UE2A4> /xf3/xb1 <Private Use>
-+<UE2A5> /xf3/xb2 <Private Use>
-+<UE2A6> /xf3/xb3 <Private Use>
-+<UE2A7> /xf3/xb4 <Private Use>
-+<UE2A8> /xf3/xb5 <Private Use>
-+<UE2A9> /xf3/xb6 <Private Use>
-+<UE2AA> /xf3/xb7 <Private Use>
-+<UE2AB> /xf3/xb8 <Private Use>
-+<UE2AC> /xf3/xb9 <Private Use>
-+<UE2AD> /xf3/xba <Private Use>
-+<UE2AE> /xf3/xbb <Private Use>
-+<UE2AF> /xf3/xbc <Private Use>
-+<UE2B0> /xf3/xbd <Private Use>
-+<UE2B1> /xf3/xbe <Private Use>
-+<UE2B2> /xf3/xbf <Private Use>
-+<UE2B3> /xf3/xc0 <Private Use>
-+<UE2B4> /xf3/xc1 <Private Use>
-+<UE2B5> /xf3/xc2 <Private Use>
-+<UE2B6> /xf3/xc3 <Private Use>
-+<UE2B7> /xf3/xc4 <Private Use>
-+<UE2B8> /xf3/xc5 <Private Use>
-+<UE2B9> /xf3/xc6 <Private Use>
-+<UE2BA> /xf3/xc7 <Private Use>
-+<UE2BB> /xf3/xc8 <Private Use>
-+<UE2BC> /xf3/xc9 <Private Use>
-+<UE2BD> /xf3/xca <Private Use>
-+<UE2BE> /xf3/xcb <Private Use>
-+<UE2BF> /xf3/xcc <Private Use>
-+<UE2C0> /xf3/xcd <Private Use>
-+<UE2C1> /xf3/xce <Private Use>
-+<UE2C2> /xf3/xcf <Private Use>
-+<UE2C3> /xf3/xd0 <Private Use>
-+<UE2C4> /xf3/xd1 <Private Use>
-+<UE2C5> /xf3/xd2 <Private Use>
-+<UE2C6> /xf3/xd3 <Private Use>
-+<UE2C7> /xf3/xd4 <Private Use>
-+<UE2C8> /xf3/xd5 <Private Use>
-+<UE2C9> /xf3/xd6 <Private Use>
-+<UE2CA> /xf3/xd7 <Private Use>
-+<UE2CB> /xf3/xd8 <Private Use>
-+<UE2CC> /xf3/xd9 <Private Use>
-+<UE2CD> /xf3/xda <Private Use>
-+<UE2CE> /xf3/xdb <Private Use>
-+<UE2CF> /xf3/xdc <Private Use>
-+<UE2D0> /xf3/xdd <Private Use>
-+<UE2D1> /xf3/xde <Private Use>
-+<UE2D2> /xf3/xdf <Private Use>
-+<UE2D3> /xf3/xe0 <Private Use>
-+<UE2D4> /xf3/xe1 <Private Use>
-+<UE2D5> /xf3/xe2 <Private Use>
-+<UE2D6> /xf3/xe3 <Private Use>
-+<UE2D7> /xf3/xe4 <Private Use>
-+<UE2D8> /xf3/xe5 <Private Use>
-+<UE2D9> /xf3/xe6 <Private Use>
-+<UE2DA> /xf3/xe7 <Private Use>
-+<UE2DB> /xf3/xe8 <Private Use>
-+<UE2DC> /xf3/xe9 <Private Use>
-+<UE2DD> /xf3/xea <Private Use>
-+<UE2DE> /xf3/xeb <Private Use>
-+<UE2DF> /xf3/xec <Private Use>
-+<UE2E0> /xf3/xed <Private Use>
-+<UE2E1> /xf3/xee <Private Use>
-+<UE2E2> /xf3/xef <Private Use>
-+<UE2E3> /xf3/xf0 <Private Use>
-+<UE2E4> /xf3/xf1 <Private Use>
-+<UE2E5> /xf3/xf2 <Private Use>
-+<UE2E6> /xf3/xf3 <Private Use>
-+<UE2E7> /xf3/xf4 <Private Use>
-+<UE2E8> /xf3/xf5 <Private Use>
-+<UE2E9> /xf3/xf6 <Private Use>
-+<UE2EA> /xf3/xf7 <Private Use>
-+<UE2EB> /xf3/xf8 <Private Use>
-+<UE2EC> /xf3/xf9 <Private Use>
-+<UE2ED> /xf3/xfa <Private Use>
-+<UE2EE> /xf3/xfb <Private Use>
-+<UE2EF> /xf3/xfc <Private Use>
-+<UE2F0> /xf4/x40 <Private Use>
-+<UE2F1> /xf4/x41 <Private Use>
-+<UE2F2> /xf4/x42 <Private Use>
-+<UE2F3> /xf4/x43 <Private Use>
-+<UE2F4> /xf4/x44 <Private Use>
-+<UE2F5> /xf4/x45 <Private Use>
-+<UE2F6> /xf4/x46 <Private Use>
-+<UE2F7> /xf4/x47 <Private Use>
-+<UE2F8> /xf4/x48 <Private Use>
-+<UE2F9> /xf4/x49 <Private Use>
-+<UE2FA> /xf4/x4a <Private Use>
-+<UE2FB> /xf4/x4b <Private Use>
-+<UE2FC> /xf4/x4c <Private Use>
-+<UE2FD> /xf4/x4d <Private Use>
-+<UE2FE> /xf4/x4e <Private Use>
-+<UE2FF> /xf4/x4f <Private Use>
-+<UE300> /xf4/x50 <Private Use>
-+<UE301> /xf4/x51 <Private Use>
-+<UE302> /xf4/x52 <Private Use>
-+<UE303> /xf4/x53 <Private Use>
-+<UE304> /xf4/x54 <Private Use>
-+<UE305> /xf4/x55 <Private Use>
-+<UE306> /xf4/x56 <Private Use>
-+<UE307> /xf4/x57 <Private Use>
-+<UE308> /xf4/x58 <Private Use>
-+<UE309> /xf4/x59 <Private Use>
-+<UE30A> /xf4/x5a <Private Use>
-+<UE30B> /xf4/x5b <Private Use>
-+<UE30C> /xf4/x5c <Private Use>
-+<UE30D> /xf4/x5d <Private Use>
-+<UE30E> /xf4/x5e <Private Use>
-+<UE30F> /xf4/x5f <Private Use>
-+<UE310> /xf4/x60 <Private Use>
-+<UE311> /xf4/x61 <Private Use>
-+<UE312> /xf4/x62 <Private Use>
-+<UE313> /xf4/x63 <Private Use>
-+<UE314> /xf4/x64 <Private Use>
-+<UE315> /xf4/x65 <Private Use>
-+<UE316> /xf4/x66 <Private Use>
-+<UE317> /xf4/x67 <Private Use>
-+<UE318> /xf4/x68 <Private Use>
-+<UE319> /xf4/x69 <Private Use>
-+<UE31A> /xf4/x6a <Private Use>
-+<UE31B> /xf4/x6b <Private Use>
-+<UE31C> /xf4/x6c <Private Use>
-+<UE31D> /xf4/x6d <Private Use>
-+<UE31E> /xf4/x6e <Private Use>
-+<UE31F> /xf4/x6f <Private Use>
-+<UE320> /xf4/x70 <Private Use>
-+<UE321> /xf4/x71 <Private Use>
-+<UE322> /xf4/x72 <Private Use>
-+<UE323> /xf4/x73 <Private Use>
-+<UE324> /xf4/x74 <Private Use>
-+<UE325> /xf4/x75 <Private Use>
-+<UE326> /xf4/x76 <Private Use>
-+<UE327> /xf4/x77 <Private Use>
-+<UE328> /xf4/x78 <Private Use>
-+<UE329> /xf4/x79 <Private Use>
-+<UE32A> /xf4/x7a <Private Use>
-+<UE32B> /xf4/x7b <Private Use>
-+<UE32C> /xf4/x7c <Private Use>
-+<UE32D> /xf4/x7d <Private Use>
-+<UE32E> /xf4/x7e <Private Use>
-+<UE32F> /xf4/x80 <Private Use>
-+<UE330> /xf4/x81 <Private Use>
-+<UE331> /xf4/x82 <Private Use>
-+<UE332> /xf4/x83 <Private Use>
-+<UE333> /xf4/x84 <Private Use>
-+<UE334> /xf4/x85 <Private Use>
-+<UE335> /xf4/x86 <Private Use>
-+<UE336> /xf4/x87 <Private Use>
-+<UE337> /xf4/x88 <Private Use>
-+<UE338> /xf4/x89 <Private Use>
-+<UE339> /xf4/x8a <Private Use>
-+<UE33A> /xf4/x8b <Private Use>
-+<UE33B> /xf4/x8c <Private Use>
-+<UE33C> /xf4/x8d <Private Use>
-+<UE33D> /xf4/x8e <Private Use>
-+<UE33E> /xf4/x8f <Private Use>
-+<UE33F> /xf4/x90 <Private Use>
-+<UE340> /xf4/x91 <Private Use>
-+<UE341> /xf4/x92 <Private Use>
-+<UE342> /xf4/x93 <Private Use>
-+<UE343> /xf4/x94 <Private Use>
-+<UE344> /xf4/x95 <Private Use>
-+<UE345> /xf4/x96 <Private Use>
-+<UE346> /xf4/x97 <Private Use>
-+<UE347> /xf4/x98 <Private Use>
-+<UE348> /xf4/x99 <Private Use>
-+<UE349> /xf4/x9a <Private Use>
-+<UE34A> /xf4/x9b <Private Use>
-+<UE34B> /xf4/x9c <Private Use>
-+<UE34C> /xf4/x9d <Private Use>
-+<UE34D> /xf4/x9e <Private Use>
-+<UE34E> /xf4/x9f <Private Use>
-+<UE34F> /xf4/xa0 <Private Use>
-+<UE350> /xf4/xa1 <Private Use>
-+<UE351> /xf4/xa2 <Private Use>
-+<UE352> /xf4/xa3 <Private Use>
-+<UE353> /xf4/xa4 <Private Use>
-+<UE354> /xf4/xa5 <Private Use>
-+<UE355> /xf4/xa6 <Private Use>
-+<UE356> /xf4/xa7 <Private Use>
-+<UE357> /xf4/xa8 <Private Use>
-+<UE358> /xf4/xa9 <Private Use>
-+<UE359> /xf4/xaa <Private Use>
-+<UE35A> /xf4/xab <Private Use>
-+<UE35B> /xf4/xac <Private Use>
-+<UE35C> /xf4/xad <Private Use>
-+<UE35D> /xf4/xae <Private Use>
-+<UE35E> /xf4/xaf <Private Use>
-+<UE35F> /xf4/xb0 <Private Use>
-+<UE360> /xf4/xb1 <Private Use>
-+<UE361> /xf4/xb2 <Private Use>
-+<UE362> /xf4/xb3 <Private Use>
-+<UE363> /xf4/xb4 <Private Use>
-+<UE364> /xf4/xb5 <Private Use>
-+<UE365> /xf4/xb6 <Private Use>
-+<UE366> /xf4/xb7 <Private Use>
-+<UE367> /xf4/xb8 <Private Use>
-+<UE368> /xf4/xb9 <Private Use>
-+<UE369> /xf4/xba <Private Use>
-+<UE36A> /xf4/xbb <Private Use>
-+<UE36B> /xf4/xbc <Private Use>
-+<UE36C> /xf4/xbd <Private Use>
-+<UE36D> /xf4/xbe <Private Use>
-+<UE36E> /xf4/xbf <Private Use>
-+<UE36F> /xf4/xc0 <Private Use>
-+<UE370> /xf4/xc1 <Private Use>
-+<UE371> /xf4/xc2 <Private Use>
-+<UE372> /xf4/xc3 <Private Use>
-+<UE373> /xf4/xc4 <Private Use>
-+<UE374> /xf4/xc5 <Private Use>
-+<UE375> /xf4/xc6 <Private Use>
-+<UE376> /xf4/xc7 <Private Use>
-+<UE377> /xf4/xc8 <Private Use>
-+<UE378> /xf4/xc9 <Private Use>
-+<UE379> /xf4/xca <Private Use>
-+<UE37A> /xf4/xcb <Private Use>
-+<UE37B> /xf4/xcc <Private Use>
-+<UE37C> /xf4/xcd <Private Use>
-+<UE37D> /xf4/xce <Private Use>
-+<UE37E> /xf4/xcf <Private Use>
-+<UE37F> /xf4/xd0 <Private Use>
-+<UE380> /xf4/xd1 <Private Use>
-+<UE381> /xf4/xd2 <Private Use>
-+<UE382> /xf4/xd3 <Private Use>
-+<UE383> /xf4/xd4 <Private Use>
-+<UE384> /xf4/xd5 <Private Use>
-+<UE385> /xf4/xd6 <Private Use>
-+<UE386> /xf4/xd7 <Private Use>
-+<UE387> /xf4/xd8 <Private Use>
-+<UE388> /xf4/xd9 <Private Use>
-+<UE389> /xf4/xda <Private Use>
-+<UE38A> /xf4/xdb <Private Use>
-+<UE38B> /xf4/xdc <Private Use>
-+<UE38C> /xf4/xdd <Private Use>
-+<UE38D> /xf4/xde <Private Use>
-+<UE38E> /xf4/xdf <Private Use>
-+<UE38F> /xf4/xe0 <Private Use>
-+<UE390> /xf4/xe1 <Private Use>
-+<UE391> /xf4/xe2 <Private Use>
-+<UE392> /xf4/xe3 <Private Use>
-+<UE393> /xf4/xe4 <Private Use>
-+<UE394> /xf4/xe5 <Private Use>
-+<UE395> /xf4/xe6 <Private Use>
-+<UE396> /xf4/xe7 <Private Use>
-+<UE397> /xf4/xe8 <Private Use>
-+<UE398> /xf4/xe9 <Private Use>
-+<UE399> /xf4/xea <Private Use>
-+<UE39A> /xf4/xeb <Private Use>
-+<UE39B> /xf4/xec <Private Use>
-+<UE39C> /xf4/xed <Private Use>
-+<UE39D> /xf4/xee <Private Use>
-+<UE39E> /xf4/xef <Private Use>
-+<UE39F> /xf4/xf0 <Private Use>
-+<UE3A0> /xf4/xf1 <Private Use>
-+<UE3A1> /xf4/xf2 <Private Use>
-+<UE3A2> /xf4/xf3 <Private Use>
-+<UE3A3> /xf4/xf4 <Private Use>
-+<UE3A4> /xf4/xf5 <Private Use>
-+<UE3A5> /xf4/xf6 <Private Use>
-+<UE3A6> /xf4/xf7 <Private Use>
-+<UE3A7> /xf4/xf8 <Private Use>
-+<UE3A8> /xf4/xf9 <Private Use>
-+<UE3A9> /xf4/xfa <Private Use>
-+<UE3AA> /xf4/xfb <Private Use>
-+<UE3AB> /xf4/xfc <Private Use>
-+<UE3AC> /xf5/x40 <Private Use>
-+<UE3AD> /xf5/x41 <Private Use>
-+<UE3AE> /xf5/x42 <Private Use>
-+<UE3AF> /xf5/x43 <Private Use>
-+<UE3B0> /xf5/x44 <Private Use>
-+<UE3B1> /xf5/x45 <Private Use>
-+<UE3B2> /xf5/x46 <Private Use>
-+<UE3B3> /xf5/x47 <Private Use>
-+<UE3B4> /xf5/x48 <Private Use>
-+<UE3B5> /xf5/x49 <Private Use>
-+<UE3B6> /xf5/x4a <Private Use>
-+<UE3B7> /xf5/x4b <Private Use>
-+<UE3B8> /xf5/x4c <Private Use>
-+<UE3B9> /xf5/x4d <Private Use>
-+<UE3BA> /xf5/x4e <Private Use>
-+<UE3BB> /xf5/x4f <Private Use>
-+<UE3BC> /xf5/x50 <Private Use>
-+<UE3BD> /xf5/x51 <Private Use>
-+<UE3BE> /xf5/x52 <Private Use>
-+<UE3BF> /xf5/x53 <Private Use>
-+<UE3C0> /xf5/x54 <Private Use>
-+<UE3C1> /xf5/x55 <Private Use>
-+<UE3C2> /xf5/x56 <Private Use>
-+<UE3C3> /xf5/x57 <Private Use>
-+<UE3C4> /xf5/x58 <Private Use>
-+<UE3C5> /xf5/x59 <Private Use>
-+<UE3C6> /xf5/x5a <Private Use>
-+<UE3C7> /xf5/x5b <Private Use>
-+<UE3C8> /xf5/x5c <Private Use>
-+<UE3C9> /xf5/x5d <Private Use>
-+<UE3CA> /xf5/x5e <Private Use>
-+<UE3CB> /xf5/x5f <Private Use>
-+<UE3CC> /xf5/x60 <Private Use>
-+<UE3CD> /xf5/x61 <Private Use>
-+<UE3CE> /xf5/x62 <Private Use>
-+<UE3CF> /xf5/x63 <Private Use>
-+<UE3D0> /xf5/x64 <Private Use>
-+<UE3D1> /xf5/x65 <Private Use>
-+<UE3D2> /xf5/x66 <Private Use>
-+<UE3D3> /xf5/x67 <Private Use>
-+<UE3D4> /xf5/x68 <Private Use>
-+<UE3D5> /xf5/x69 <Private Use>
-+<UE3D6> /xf5/x6a <Private Use>
-+<UE3D7> /xf5/x6b <Private Use>
-+<UE3D8> /xf5/x6c <Private Use>
-+<UE3D9> /xf5/x6d <Private Use>
-+<UE3DA> /xf5/x6e <Private Use>
-+<UE3DB> /xf5/x6f <Private Use>
-+<UE3DC> /xf5/x70 <Private Use>
-+<UE3DD> /xf5/x71 <Private Use>
-+<UE3DE> /xf5/x72 <Private Use>
-+<UE3DF> /xf5/x73 <Private Use>
-+<UE3E0> /xf5/x74 <Private Use>
-+<UE3E1> /xf5/x75 <Private Use>
-+<UE3E2> /xf5/x76 <Private Use>
-+<UE3E3> /xf5/x77 <Private Use>
-+<UE3E4> /xf5/x78 <Private Use>
-+<UE3E5> /xf5/x79 <Private Use>
-+<UE3E6> /xf5/x7a <Private Use>
-+<UE3E7> /xf5/x7b <Private Use>
-+<UE3E8> /xf5/x7c <Private Use>
-+<UE3E9> /xf5/x7d <Private Use>
-+<UE3EA> /xf5/x7e <Private Use>
-+<UE3EB> /xf5/x80 <Private Use>
-+<UE3EC> /xf5/x81 <Private Use>
-+<UE3ED> /xf5/x82 <Private Use>
-+<UE3EE> /xf5/x83 <Private Use>
-+<UE3EF> /xf5/x84 <Private Use>
-+<UE3F0> /xf5/x85 <Private Use>
-+<UE3F1> /xf5/x86 <Private Use>
-+<UE3F2> /xf5/x87 <Private Use>
-+<UE3F3> /xf5/x88 <Private Use>
-+<UE3F4> /xf5/x89 <Private Use>
-+<UE3F5> /xf5/x8a <Private Use>
-+<UE3F6> /xf5/x8b <Private Use>
-+<UE3F7> /xf5/x8c <Private Use>
-+<UE3F8> /xf5/x8d <Private Use>
-+<UE3F9> /xf5/x8e <Private Use>
-+<UE3FA> /xf5/x8f <Private Use>
-+<UE3FB> /xf5/x90 <Private Use>
-+<UE3FC> /xf5/x91 <Private Use>
-+<UE3FD> /xf5/x92 <Private Use>
-+<UE3FE> /xf5/x93 <Private Use>
-+<UE3FF> /xf5/x94 <Private Use>
-+<UE400> /xf5/x95 <Private Use>
-+<UE401> /xf5/x96 <Private Use>
-+<UE402> /xf5/x97 <Private Use>
-+<UE403> /xf5/x98 <Private Use>
-+<UE404> /xf5/x99 <Private Use>
-+<UE405> /xf5/x9a <Private Use>
-+<UE406> /xf5/x9b <Private Use>
-+<UE407> /xf5/x9c <Private Use>
-+<UE408> /xf5/x9d <Private Use>
-+<UE409> /xf5/x9e <Private Use>
-+<UE40A> /xf5/x9f <Private Use>
-+<UE40B> /xf5/xa0 <Private Use>
-+<UE40C> /xf5/xa1 <Private Use>
-+<UE40D> /xf5/xa2 <Private Use>
-+<UE40E> /xf5/xa3 <Private Use>
-+<UE40F> /xf5/xa4 <Private Use>
-+<UE410> /xf5/xa5 <Private Use>
-+<UE411> /xf5/xa6 <Private Use>
-+<UE412> /xf5/xa7 <Private Use>
-+<UE413> /xf5/xa8 <Private Use>
-+<UE414> /xf5/xa9 <Private Use>
-+<UE415> /xf5/xaa <Private Use>
-+<UE416> /xf5/xab <Private Use>
-+<UE417> /xf5/xac <Private Use>
-+<UE418> /xf5/xad <Private Use>
-+<UE419> /xf5/xae <Private Use>
-+<UE41A> /xf5/xaf <Private Use>
-+<UE41B> /xf5/xb0 <Private Use>
-+<UE41C> /xf5/xb1 <Private Use>
-+<UE41D> /xf5/xb2 <Private Use>
-+<UE41E> /xf5/xb3 <Private Use>
-+<UE41F> /xf5/xb4 <Private Use>
-+<UE420> /xf5/xb5 <Private Use>
-+<UE421> /xf5/xb6 <Private Use>
-+<UE422> /xf5/xb7 <Private Use>
-+<UE423> /xf5/xb8 <Private Use>
-+<UE424> /xf5/xb9 <Private Use>
-+<UE425> /xf5/xba <Private Use>
-+<UE426> /xf5/xbb <Private Use>
-+<UE427> /xf5/xbc <Private Use>
-+<UE428> /xf5/xbd <Private Use>
-+<UE429> /xf5/xbe <Private Use>
-+<UE42A> /xf5/xbf <Private Use>
-+<UE42B> /xf5/xc0 <Private Use>
-+<UE42C> /xf5/xc1 <Private Use>
-+<UE42D> /xf5/xc2 <Private Use>
-+<UE42E> /xf5/xc3 <Private Use>
-+<UE42F> /xf5/xc4 <Private Use>
-+<UE430> /xf5/xc5 <Private Use>
-+<UE431> /xf5/xc6 <Private Use>
-+<UE432> /xf5/xc7 <Private Use>
-+<UE433> /xf5/xc8 <Private Use>
-+<UE434> /xf5/xc9 <Private Use>
-+<UE435> /xf5/xca <Private Use>
-+<UE436> /xf5/xcb <Private Use>
-+<UE437> /xf5/xcc <Private Use>
-+<UE438> /xf5/xcd <Private Use>
-+<UE439> /xf5/xce <Private Use>
-+<UE43A> /xf5/xcf <Private Use>
-+<UE43B> /xf5/xd0 <Private Use>
-+<UE43C> /xf5/xd1 <Private Use>
-+<UE43D> /xf5/xd2 <Private Use>
-+<UE43E> /xf5/xd3 <Private Use>
-+<UE43F> /xf5/xd4 <Private Use>
-+<UE440> /xf5/xd5 <Private Use>
-+<UE441> /xf5/xd6 <Private Use>
-+<UE442> /xf5/xd7 <Private Use>
-+<UE443> /xf5/xd8 <Private Use>
-+<UE444> /xf5/xd9 <Private Use>
-+<UE445> /xf5/xda <Private Use>
-+<UE446> /xf5/xdb <Private Use>
-+<UE447> /xf5/xdc <Private Use>
-+<UE448> /xf5/xdd <Private Use>
-+<UE449> /xf5/xde <Private Use>
-+<UE44A> /xf5/xdf <Private Use>
-+<UE44B> /xf5/xe0 <Private Use>
-+<UE44C> /xf5/xe1 <Private Use>
-+<UE44D> /xf5/xe2 <Private Use>
-+<UE44E> /xf5/xe3 <Private Use>
-+<UE44F> /xf5/xe4 <Private Use>
-+<UE450> /xf5/xe5 <Private Use>
-+<UE451> /xf5/xe6 <Private Use>
-+<UE452> /xf5/xe7 <Private Use>
-+<UE453> /xf5/xe8 <Private Use>
-+<UE454> /xf5/xe9 <Private Use>
-+<UE455> /xf5/xea <Private Use>
-+<UE456> /xf5/xeb <Private Use>
-+<UE457> /xf5/xec <Private Use>
-+<UE458> /xf5/xed <Private Use>
-+<UE459> /xf5/xee <Private Use>
-+<UE45A> /xf5/xef <Private Use>
-+<UE45B> /xf5/xf0 <Private Use>
-+<UE45C> /xf5/xf1 <Private Use>
-+<UE45D> /xf5/xf2 <Private Use>
-+<UE45E> /xf5/xf3 <Private Use>
-+<UE45F> /xf5/xf4 <Private Use>
-+<UE460> /xf5/xf5 <Private Use>
-+<UE461> /xf5/xf6 <Private Use>
-+<UE462> /xf5/xf7 <Private Use>
-+<UE463> /xf5/xf8 <Private Use>
-+<UE464> /xf5/xf9 <Private Use>
-+<UE465> /xf5/xfa <Private Use>
-+<UE466> /xf5/xfb <Private Use>
-+<UE467> /xf5/xfc <Private Use>
-+<UE468> /xf6/x40 <Private Use>
-+<UE469> /xf6/x41 <Private Use>
-+<UE46A> /xf6/x42 <Private Use>
-+<UE46B> /xf6/x43 <Private Use>
-+<UE46C> /xf6/x44 <Private Use>
-+<UE46D> /xf6/x45 <Private Use>
-+<UE46E> /xf6/x46 <Private Use>
-+<UE46F> /xf6/x47 <Private Use>
-+<UE470> /xf6/x48 <Private Use>
-+<UE471> /xf6/x49 <Private Use>
-+<UE472> /xf6/x4a <Private Use>
-+<UE473> /xf6/x4b <Private Use>
-+<UE474> /xf6/x4c <Private Use>
-+<UE475> /xf6/x4d <Private Use>
-+<UE476> /xf6/x4e <Private Use>
-+<UE477> /xf6/x4f <Private Use>
-+<UE478> /xf6/x50 <Private Use>
-+<UE479> /xf6/x51 <Private Use>
-+<UE47A> /xf6/x52 <Private Use>
-+<UE47B> /xf6/x53 <Private Use>
-+<UE47C> /xf6/x54 <Private Use>
-+<UE47D> /xf6/x55 <Private Use>
-+<UE47E> /xf6/x56 <Private Use>
-+<UE47F> /xf6/x57 <Private Use>
-+<UE480> /xf6/x58 <Private Use>
-+<UE481> /xf6/x59 <Private Use>
-+<UE482> /xf6/x5a <Private Use>
-+<UE483> /xf6/x5b <Private Use>
-+<UE484> /xf6/x5c <Private Use>
-+<UE485> /xf6/x5d <Private Use>
-+<UE486> /xf6/x5e <Private Use>
-+<UE487> /xf6/x5f <Private Use>
-+<UE488> /xf6/x60 <Private Use>
-+<UE489> /xf6/x61 <Private Use>
-+<UE48A> /xf6/x62 <Private Use>
-+<UE48B> /xf6/x63 <Private Use>
-+<UE48C> /xf6/x64 <Private Use>
-+<UE48D> /xf6/x65 <Private Use>
-+<UE48E> /xf6/x66 <Private Use>
-+<UE48F> /xf6/x67 <Private Use>
-+<UE490> /xf6/x68 <Private Use>
-+<UE491> /xf6/x69 <Private Use>
-+<UE492> /xf6/x6a <Private Use>
-+<UE493> /xf6/x6b <Private Use>
-+<UE494> /xf6/x6c <Private Use>
-+<UE495> /xf6/x6d <Private Use>
-+<UE496> /xf6/x6e <Private Use>
-+<UE497> /xf6/x6f <Private Use>
-+<UE498> /xf6/x70 <Private Use>
-+<UE499> /xf6/x71 <Private Use>
-+<UE49A> /xf6/x72 <Private Use>
-+<UE49B> /xf6/x73 <Private Use>
-+<UE49C> /xf6/x74 <Private Use>
-+<UE49D> /xf6/x75 <Private Use>
-+<UE49E> /xf6/x76 <Private Use>
-+<UE49F> /xf6/x77 <Private Use>
-+<UE4A0> /xf6/x78 <Private Use>
-+<UE4A1> /xf6/x79 <Private Use>
-+<UE4A2> /xf6/x7a <Private Use>
-+<UE4A3> /xf6/x7b <Private Use>
-+<UE4A4> /xf6/x7c <Private Use>
-+<UE4A5> /xf6/x7d <Private Use>
-+<UE4A6> /xf6/x7e <Private Use>
-+<UE4A7> /xf6/x80 <Private Use>
-+<UE4A8> /xf6/x81 <Private Use>
-+<UE4A9> /xf6/x82 <Private Use>
-+<UE4AA> /xf6/x83 <Private Use>
-+<UE4AB> /xf6/x84 <Private Use>
-+<UE4AC> /xf6/x85 <Private Use>
-+<UE4AD> /xf6/x86 <Private Use>
-+<UE4AE> /xf6/x87 <Private Use>
-+<UE4AF> /xf6/x88 <Private Use>
-+<UE4B0> /xf6/x89 <Private Use>
-+<UE4B1> /xf6/x8a <Private Use>
-+<UE4B2> /xf6/x8b <Private Use>
-+<UE4B3> /xf6/x8c <Private Use>
-+<UE4B4> /xf6/x8d <Private Use>
-+<UE4B5> /xf6/x8e <Private Use>
-+<UE4B6> /xf6/x8f <Private Use>
-+<UE4B7> /xf6/x90 <Private Use>
-+<UE4B8> /xf6/x91 <Private Use>
-+<UE4B9> /xf6/x92 <Private Use>
-+<UE4BA> /xf6/x93 <Private Use>
-+<UE4BB> /xf6/x94 <Private Use>
-+<UE4BC> /xf6/x95 <Private Use>
-+<UE4BD> /xf6/x96 <Private Use>
-+<UE4BE> /xf6/x97 <Private Use>
-+<UE4BF> /xf6/x98 <Private Use>
-+<UE4C0> /xf6/x99 <Private Use>
-+<UE4C1> /xf6/x9a <Private Use>
-+<UE4C2> /xf6/x9b <Private Use>
-+<UE4C3> /xf6/x9c <Private Use>
-+<UE4C4> /xf6/x9d <Private Use>
-+<UE4C5> /xf6/x9e <Private Use>
-+<UE4C6> /xf6/x9f <Private Use>
-+<UE4C7> /xf6/xa0 <Private Use>
-+<UE4C8> /xf6/xa1 <Private Use>
-+<UE4C9> /xf6/xa2 <Private Use>
-+<UE4CA> /xf6/xa3 <Private Use>
-+<UE4CB> /xf6/xa4 <Private Use>
-+<UE4CC> /xf6/xa5 <Private Use>
-+<UE4CD> /xf6/xa6 <Private Use>
-+<UE4CE> /xf6/xa7 <Private Use>
-+<UE4CF> /xf6/xa8 <Private Use>
-+<UE4D0> /xf6/xa9 <Private Use>
-+<UE4D1> /xf6/xaa <Private Use>
-+<UE4D2> /xf6/xab <Private Use>
-+<UE4D3> /xf6/xac <Private Use>
-+<UE4D4> /xf6/xad <Private Use>
-+<UE4D5> /xf6/xae <Private Use>
-+<UE4D6> /xf6/xaf <Private Use>
-+<UE4D7> /xf6/xb0 <Private Use>
-+<UE4D8> /xf6/xb1 <Private Use>
-+<UE4D9> /xf6/xb2 <Private Use>
-+<UE4DA> /xf6/xb3 <Private Use>
-+<UE4DB> /xf6/xb4 <Private Use>
-+<UE4DC> /xf6/xb5 <Private Use>
-+<UE4DD> /xf6/xb6 <Private Use>
-+<UE4DE> /xf6/xb7 <Private Use>
-+<UE4DF> /xf6/xb8 <Private Use>
-+<UE4E0> /xf6/xb9 <Private Use>
-+<UE4E1> /xf6/xba <Private Use>
-+<UE4E2> /xf6/xbb <Private Use>
-+<UE4E3> /xf6/xbc <Private Use>
-+<UE4E4> /xf6/xbd <Private Use>
-+<UE4E5> /xf6/xbe <Private Use>
-+<UE4E6> /xf6/xbf <Private Use>
-+<UE4E7> /xf6/xc0 <Private Use>
-+<UE4E8> /xf6/xc1 <Private Use>
-+<UE4E9> /xf6/xc2 <Private Use>
-+<UE4EA> /xf6/xc3 <Private Use>
-+<UE4EB> /xf6/xc4 <Private Use>
-+<UE4EC> /xf6/xc5 <Private Use>
-+<UE4ED> /xf6/xc6 <Private Use>
-+<UE4EE> /xf6/xc7 <Private Use>
-+<UE4EF> /xf6/xc8 <Private Use>
-+<UE4F0> /xf6/xc9 <Private Use>
-+<UE4F1> /xf6/xca <Private Use>
-+<UE4F2> /xf6/xcb <Private Use>
-+<UE4F3> /xf6/xcc <Private Use>
-+<UE4F4> /xf6/xcd <Private Use>
-+<UE4F5> /xf6/xce <Private Use>
-+<UE4F6> /xf6/xcf <Private Use>
-+<UE4F7> /xf6/xd0 <Private Use>
-+<UE4F8> /xf6/xd1 <Private Use>
-+<UE4F9> /xf6/xd2 <Private Use>
-+<UE4FA> /xf6/xd3 <Private Use>
-+<UE4FB> /xf6/xd4 <Private Use>
-+<UE4FC> /xf6/xd5 <Private Use>
-+<UE4FD> /xf6/xd6 <Private Use>
-+<UE4FE> /xf6/xd7 <Private Use>
-+<UE4FF> /xf6/xd8 <Private Use>
-+<UE500> /xf6/xd9 <Private Use>
-+<UE501> /xf6/xda <Private Use>
-+<UE502> /xf6/xdb <Private Use>
-+<UE503> /xf6/xdc <Private Use>
-+<UE504> /xf6/xdd <Private Use>
-+<UE505> /xf6/xde <Private Use>
-+<UE506> /xf6/xdf <Private Use>
-+<UE507> /xf6/xe0 <Private Use>
-+<UE508> /xf6/xe1 <Private Use>
-+<UE509> /xf6/xe2 <Private Use>
-+<UE50A> /xf6/xe3 <Private Use>
-+<UE50B> /xf6/xe4 <Private Use>
-+<UE50C> /xf6/xe5 <Private Use>
-+<UE50D> /xf6/xe6 <Private Use>
-+<UE50E> /xf6/xe7 <Private Use>
-+<UE50F> /xf6/xe8 <Private Use>
-+<UE510> /xf6/xe9 <Private Use>
-+<UE511> /xf6/xea <Private Use>
-+<UE512> /xf6/xeb <Private Use>
-+<UE513> /xf6/xec <Private Use>
-+<UE514> /xf6/xed <Private Use>
-+<UE515> /xf6/xee <Private Use>
-+<UE516> /xf6/xef <Private Use>
-+<UE517> /xf6/xf0 <Private Use>
-+<UE518> /xf6/xf1 <Private Use>
-+<UE519> /xf6/xf2 <Private Use>
-+<UE51A> /xf6/xf3 <Private Use>
-+<UE51B> /xf6/xf4 <Private Use>
-+<UE51C> /xf6/xf5 <Private Use>
-+<UE51D> /xf6/xf6 <Private Use>
-+<UE51E> /xf6/xf7 <Private Use>
-+<UE51F> /xf6/xf8 <Private Use>
-+<UE520> /xf6/xf9 <Private Use>
-+<UE521> /xf6/xfa <Private Use>
-+<UE522> /xf6/xfb <Private Use>
-+<UE523> /xf6/xfc <Private Use>
-+<UE524> /xf7/x40 <Private Use>
-+<UE525> /xf7/x41 <Private Use>
-+<UE526> /xf7/x42 <Private Use>
-+<UE527> /xf7/x43 <Private Use>
-+<UE528> /xf7/x44 <Private Use>
-+<UE529> /xf7/x45 <Private Use>
-+<UE52A> /xf7/x46 <Private Use>
-+<UE52B> /xf7/x47 <Private Use>
-+<UE52C> /xf7/x48 <Private Use>
-+<UE52D> /xf7/x49 <Private Use>
-+<UE52E> /xf7/x4a <Private Use>
-+<UE52F> /xf7/x4b <Private Use>
-+<UE530> /xf7/x4c <Private Use>
-+<UE531> /xf7/x4d <Private Use>
-+<UE532> /xf7/x4e <Private Use>
-+<UE533> /xf7/x4f <Private Use>
-+<UE534> /xf7/x50 <Private Use>
-+<UE535> /xf7/x51 <Private Use>
-+<UE536> /xf7/x52 <Private Use>
-+<UE537> /xf7/x53 <Private Use>
-+<UE538> /xf7/x54 <Private Use>
-+<UE539> /xf7/x55 <Private Use>
-+<UE53A> /xf7/x56 <Private Use>
-+<UE53B> /xf7/x57 <Private Use>
-+<UE53C> /xf7/x58 <Private Use>
-+<UE53D> /xf7/x59 <Private Use>
-+<UE53E> /xf7/x5a <Private Use>
-+<UE53F> /xf7/x5b <Private Use>
-+<UE540> /xf7/x5c <Private Use>
-+<UE541> /xf7/x5d <Private Use>
-+<UE542> /xf7/x5e <Private Use>
-+<UE543> /xf7/x5f <Private Use>
-+<UE544> /xf7/x60 <Private Use>
-+<UE545> /xf7/x61 <Private Use>
-+<UE546> /xf7/x62 <Private Use>
-+<UE547> /xf7/x63 <Private Use>
-+<UE548> /xf7/x64 <Private Use>
-+<UE549> /xf7/x65 <Private Use>
-+<UE54A> /xf7/x66 <Private Use>
-+<UE54B> /xf7/x67 <Private Use>
-+<UE54C> /xf7/x68 <Private Use>
-+<UE54D> /xf7/x69 <Private Use>
-+<UE54E> /xf7/x6a <Private Use>
-+<UE54F> /xf7/x6b <Private Use>
-+<UE550> /xf7/x6c <Private Use>
-+<UE551> /xf7/x6d <Private Use>
-+<UE552> /xf7/x6e <Private Use>
-+<UE553> /xf7/x6f <Private Use>
-+<UE554> /xf7/x70 <Private Use>
-+<UE555> /xf7/x71 <Private Use>
-+<UE556> /xf7/x72 <Private Use>
-+<UE557> /xf7/x73 <Private Use>
-+<UE558> /xf7/x74 <Private Use>
-+<UE559> /xf7/x75 <Private Use>
-+<UE55A> /xf7/x76 <Private Use>
-+<UE55B> /xf7/x77 <Private Use>
-+<UE55C> /xf7/x78 <Private Use>
-+<UE55D> /xf7/x79 <Private Use>
-+<UE55E> /xf7/x7a <Private Use>
-+<UE55F> /xf7/x7b <Private Use>
-+<UE560> /xf7/x7c <Private Use>
-+<UE561> /xf7/x7d <Private Use>
-+<UE562> /xf7/x7e <Private Use>
-+<UE563> /xf7/x80 <Private Use>
-+<UE564> /xf7/x81 <Private Use>
-+<UE565> /xf7/x82 <Private Use>
-+<UE566> /xf7/x83 <Private Use>
-+<UE567> /xf7/x84 <Private Use>
-+<UE568> /xf7/x85 <Private Use>
-+<UE569> /xf7/x86 <Private Use>
-+<UE56A> /xf7/x87 <Private Use>
-+<UE56B> /xf7/x88 <Private Use>
-+<UE56C> /xf7/x89 <Private Use>
-+<UE56D> /xf7/x8a <Private Use>
-+<UE56E> /xf7/x8b <Private Use>
-+<UE56F> /xf7/x8c <Private Use>
-+<UE570> /xf7/x8d <Private Use>
-+<UE571> /xf7/x8e <Private Use>
-+<UE572> /xf7/x8f <Private Use>
-+<UE573> /xf7/x90 <Private Use>
-+<UE574> /xf7/x91 <Private Use>
-+<UE575> /xf7/x92 <Private Use>
-+<UE576> /xf7/x93 <Private Use>
-+<UE577> /xf7/x94 <Private Use>
-+<UE578> /xf7/x95 <Private Use>
-+<UE579> /xf7/x96 <Private Use>
-+<UE57A> /xf7/x97 <Private Use>
-+<UE57B> /xf7/x98 <Private Use>
-+<UE57C> /xf7/x99 <Private Use>
-+<UE57D> /xf7/x9a <Private Use>
-+<UE57E> /xf7/x9b <Private Use>
-+<UE57F> /xf7/x9c <Private Use>
-+<UE580> /xf7/x9d <Private Use>
-+<UE581> /xf7/x9e <Private Use>
-+<UE582> /xf7/x9f <Private Use>
-+<UE583> /xf7/xa0 <Private Use>
-+<UE584> /xf7/xa1 <Private Use>
-+<UE585> /xf7/xa2 <Private Use>
-+<UE586> /xf7/xa3 <Private Use>
-+<UE587> /xf7/xa4 <Private Use>
-+<UE588> /xf7/xa5 <Private Use>
-+<UE589> /xf7/xa6 <Private Use>
-+<UE58A> /xf7/xa7 <Private Use>
-+<UE58B> /xf7/xa8 <Private Use>
-+<UE58C> /xf7/xa9 <Private Use>
-+<UE58D> /xf7/xaa <Private Use>
-+<UE58E> /xf7/xab <Private Use>
-+<UE58F> /xf7/xac <Private Use>
-+<UE590> /xf7/xad <Private Use>
-+<UE591> /xf7/xae <Private Use>
-+<UE592> /xf7/xaf <Private Use>
-+<UE593> /xf7/xb0 <Private Use>
-+<UE594> /xf7/xb1 <Private Use>
-+<UE595> /xf7/xb2 <Private Use>
-+<UE596> /xf7/xb3 <Private Use>
-+<UE597> /xf7/xb4 <Private Use>
-+<UE598> /xf7/xb5 <Private Use>
-+<UE599> /xf7/xb6 <Private Use>
-+<UE59A> /xf7/xb7 <Private Use>
-+<UE59B> /xf7/xb8 <Private Use>
-+<UE59C> /xf7/xb9 <Private Use>
-+<UE59D> /xf7/xba <Private Use>
-+<UE59E> /xf7/xbb <Private Use>
-+<UE59F> /xf7/xbc <Private Use>
-+<UE5A0> /xf7/xbd <Private Use>
-+<UE5A1> /xf7/xbe <Private Use>
-+<UE5A2> /xf7/xbf <Private Use>
-+<UE5A3> /xf7/xc0 <Private Use>
-+<UE5A4> /xf7/xc1 <Private Use>
-+<UE5A5> /xf7/xc2 <Private Use>
-+<UE5A6> /xf7/xc3 <Private Use>
-+<UE5A7> /xf7/xc4 <Private Use>
-+<UE5A8> /xf7/xc5 <Private Use>
-+<UE5A9> /xf7/xc6 <Private Use>
-+<UE5AA> /xf7/xc7 <Private Use>
-+<UE5AB> /xf7/xc8 <Private Use>
-+<UE5AC> /xf7/xc9 <Private Use>
-+<UE5AD> /xf7/xca <Private Use>
-+<UE5AE> /xf7/xcb <Private Use>
-+<UE5AF> /xf7/xcc <Private Use>
-+<UE5B0> /xf7/xcd <Private Use>
-+<UE5B1> /xf7/xce <Private Use>
-+<UE5B2> /xf7/xcf <Private Use>
-+<UE5B3> /xf7/xd0 <Private Use>
-+<UE5B4> /xf7/xd1 <Private Use>
-+<UE5B5> /xf7/xd2 <Private Use>
-+<UE5B6> /xf7/xd3 <Private Use>
-+<UE5B7> /xf7/xd4 <Private Use>
-+<UE5B8> /xf7/xd5 <Private Use>
-+<UE5B9> /xf7/xd6 <Private Use>
-+<UE5BA> /xf7/xd7 <Private Use>
-+<UE5BB> /xf7/xd8 <Private Use>
-+<UE5BC> /xf7/xd9 <Private Use>
-+<UE5BD> /xf7/xda <Private Use>
-+<UE5BE> /xf7/xdb <Private Use>
-+<UE5BF> /xf7/xdc <Private Use>
-+<UE5C0> /xf7/xdd <Private Use>
-+<UE5C1> /xf7/xde <Private Use>
-+<UE5C2> /xf7/xdf <Private Use>
-+<UE5C3> /xf7/xe0 <Private Use>
-+<UE5C4> /xf7/xe1 <Private Use>
-+<UE5C5> /xf7/xe2 <Private Use>
-+<UE5C6> /xf7/xe3 <Private Use>
-+<UE5C7> /xf7/xe4 <Private Use>
-+<UE5C8> /xf7/xe5 <Private Use>
-+<UE5C9> /xf7/xe6 <Private Use>
-+<UE5CA> /xf7/xe7 <Private Use>
-+<UE5CB> /xf7/xe8 <Private Use>
-+<UE5CC> /xf7/xe9 <Private Use>
-+<UE5CD> /xf7/xea <Private Use>
-+<UE5CE> /xf7/xeb <Private Use>
-+<UE5CF> /xf7/xec <Private Use>
-+<UE5D0> /xf7/xed <Private Use>
-+<UE5D1> /xf7/xee <Private Use>
-+<UE5D2> /xf7/xef <Private Use>
-+<UE5D3> /xf7/xf0 <Private Use>
-+<UE5D4> /xf7/xf1 <Private Use>
-+<UE5D5> /xf7/xf2 <Private Use>
-+<UE5D6> /xf7/xf3 <Private Use>
-+<UE5D7> /xf7/xf4 <Private Use>
-+<UE5D8> /xf7/xf5 <Private Use>
-+<UE5D9> /xf7/xf6 <Private Use>
-+<UE5DA> /xf7/xf7 <Private Use>
-+<UE5DB> /xf7/xf8 <Private Use>
-+<UE5DC> /xf7/xf9 <Private Use>
-+<UE5DD> /xf7/xfa <Private Use>
-+<UE5DE> /xf7/xfb <Private Use>
-+<UE5DF> /xf7/xfc <Private Use>
-+<UE5E0> /xf8/x40 <Private Use>
-+<UE5E1> /xf8/x41 <Private Use>
-+<UE5E2> /xf8/x42 <Private Use>
-+<UE5E3> /xf8/x43 <Private Use>
-+<UE5E4> /xf8/x44 <Private Use>
-+<UE5E5> /xf8/x45 <Private Use>
-+<UE5E6> /xf8/x46 <Private Use>
-+<UE5E7> /xf8/x47 <Private Use>
-+<UE5E8> /xf8/x48 <Private Use>
-+<UE5E9> /xf8/x49 <Private Use>
-+<UE5EA> /xf8/x4a <Private Use>
-+<UE5EB> /xf8/x4b <Private Use>
-+<UE5EC> /xf8/x4c <Private Use>
-+<UE5ED> /xf8/x4d <Private Use>
-+<UE5EE> /xf8/x4e <Private Use>
-+<UE5EF> /xf8/x4f <Private Use>
-+<UE5F0> /xf8/x50 <Private Use>
-+<UE5F1> /xf8/x51 <Private Use>
-+<UE5F2> /xf8/x52 <Private Use>
-+<UE5F3> /xf8/x53 <Private Use>
-+<UE5F4> /xf8/x54 <Private Use>
-+<UE5F5> /xf8/x55 <Private Use>
-+<UE5F6> /xf8/x56 <Private Use>
-+<UE5F7> /xf8/x57 <Private Use>
-+<UE5F8> /xf8/x58 <Private Use>
-+<UE5F9> /xf8/x59 <Private Use>
-+<UE5FA> /xf8/x5a <Private Use>
-+<UE5FB> /xf8/x5b <Private Use>
-+<UE5FC> /xf8/x5c <Private Use>
-+<UE5FD> /xf8/x5d <Private Use>
-+<UE5FE> /xf8/x5e <Private Use>
-+<UE5FF> /xf8/x5f <Private Use>
-+<UE600> /xf8/x60 <Private Use>
-+<UE601> /xf8/x61 <Private Use>
-+<UE602> /xf8/x62 <Private Use>
-+<UE603> /xf8/x63 <Private Use>
-+<UE604> /xf8/x64 <Private Use>
-+<UE605> /xf8/x65 <Private Use>
-+<UE606> /xf8/x66 <Private Use>
-+<UE607> /xf8/x67 <Private Use>
-+<UE608> /xf8/x68 <Private Use>
-+<UE609> /xf8/x69 <Private Use>
-+<UE60A> /xf8/x6a <Private Use>
-+<UE60B> /xf8/x6b <Private Use>
-+<UE60C> /xf8/x6c <Private Use>
-+<UE60D> /xf8/x6d <Private Use>
-+<UE60E> /xf8/x6e <Private Use>
-+<UE60F> /xf8/x6f <Private Use>
-+<UE610> /xf8/x70 <Private Use>
-+<UE611> /xf8/x71 <Private Use>
-+<UE612> /xf8/x72 <Private Use>
-+<UE613> /xf8/x73 <Private Use>
-+<UE614> /xf8/x74 <Private Use>
-+<UE615> /xf8/x75 <Private Use>
-+<UE616> /xf8/x76 <Private Use>
-+<UE617> /xf8/x77 <Private Use>
-+<UE618> /xf8/x78 <Private Use>
-+<UE619> /xf8/x79 <Private Use>
-+<UE61A> /xf8/x7a <Private Use>
-+<UE61B> /xf8/x7b <Private Use>
-+<UE61C> /xf8/x7c <Private Use>
-+<UE61D> /xf8/x7d <Private Use>
-+<UE61E> /xf8/x7e <Private Use>
-+<UE61F> /xf8/x80 <Private Use>
-+<UE620> /xf8/x81 <Private Use>
-+<UE621> /xf8/x82 <Private Use>
-+<UE622> /xf8/x83 <Private Use>
-+<UE623> /xf8/x84 <Private Use>
-+<UE624> /xf8/x85 <Private Use>
-+<UE625> /xf8/x86 <Private Use>
-+<UE626> /xf8/x87 <Private Use>
-+<UE627> /xf8/x88 <Private Use>
-+<UE628> /xf8/x89 <Private Use>
-+<UE629> /xf8/x8a <Private Use>
-+<UE62A> /xf8/x8b <Private Use>
-+<UE62B> /xf8/x8c <Private Use>
-+<UE62C> /xf8/x8d <Private Use>
-+<UE62D> /xf8/x8e <Private Use>
-+<UE62E> /xf8/x8f <Private Use>
-+<UE62F> /xf8/x90 <Private Use>
-+<UE630> /xf8/x91 <Private Use>
-+<UE631> /xf8/x92 <Private Use>
-+<UE632> /xf8/x93 <Private Use>
-+<UE633> /xf8/x94 <Private Use>
-+<UE634> /xf8/x95 <Private Use>
-+<UE635> /xf8/x96 <Private Use>
-+<UE636> /xf8/x97 <Private Use>
-+<UE637> /xf8/x98 <Private Use>
-+<UE638> /xf8/x99 <Private Use>
-+<UE639> /xf8/x9a <Private Use>
-+<UE63A> /xf8/x9b <Private Use>
-+<UE63B> /xf8/x9c <Private Use>
-+<UE63C> /xf8/x9d <Private Use>
-+<UE63D> /xf8/x9e <Private Use>
-+<UE63E> /xf8/x9f <Private Use>
-+<UE63F> /xf8/xa0 <Private Use>
-+<UE640> /xf8/xa1 <Private Use>
-+<UE641> /xf8/xa2 <Private Use>
-+<UE642> /xf8/xa3 <Private Use>
-+<UE643> /xf8/xa4 <Private Use>
-+<UE644> /xf8/xa5 <Private Use>
-+<UE645> /xf8/xa6 <Private Use>
-+<UE646> /xf8/xa7 <Private Use>
-+<UE647> /xf8/xa8 <Private Use>
-+<UE648> /xf8/xa9 <Private Use>
-+<UE649> /xf8/xaa <Private Use>
-+<UE64A> /xf8/xab <Private Use>
-+<UE64B> /xf8/xac <Private Use>
-+<UE64C> /xf8/xad <Private Use>
-+<UE64D> /xf8/xae <Private Use>
-+<UE64E> /xf8/xaf <Private Use>
-+<UE64F> /xf8/xb0 <Private Use>
-+<UE650> /xf8/xb1 <Private Use>
-+<UE651> /xf8/xb2 <Private Use>
-+<UE652> /xf8/xb3 <Private Use>
-+<UE653> /xf8/xb4 <Private Use>
-+<UE654> /xf8/xb5 <Private Use>
-+<UE655> /xf8/xb6 <Private Use>
-+<UE656> /xf8/xb7 <Private Use>
-+<UE657> /xf8/xb8 <Private Use>
-+<UE658> /xf8/xb9 <Private Use>
-+<UE659> /xf8/xba <Private Use>
-+<UE65A> /xf8/xbb <Private Use>
-+<UE65B> /xf8/xbc <Private Use>
-+<UE65C> /xf8/xbd <Private Use>
-+<UE65D> /xf8/xbe <Private Use>
-+<UE65E> /xf8/xbf <Private Use>
-+<UE65F> /xf8/xc0 <Private Use>
-+<UE660> /xf8/xc1 <Private Use>
-+<UE661> /xf8/xc2 <Private Use>
-+<UE662> /xf8/xc3 <Private Use>
-+<UE663> /xf8/xc4 <Private Use>
-+<UE664> /xf8/xc5 <Private Use>
-+<UE665> /xf8/xc6 <Private Use>
-+<UE666> /xf8/xc7 <Private Use>
-+<UE667> /xf8/xc8 <Private Use>
-+<UE668> /xf8/xc9 <Private Use>
-+<UE669> /xf8/xca <Private Use>
-+<UE66A> /xf8/xcb <Private Use>
-+<UE66B> /xf8/xcc <Private Use>
-+<UE66C> /xf8/xcd <Private Use>
-+<UE66D> /xf8/xce <Private Use>
-+<UE66E> /xf8/xcf <Private Use>
-+<UE66F> /xf8/xd0 <Private Use>
-+<UE670> /xf8/xd1 <Private Use>
-+<UE671> /xf8/xd2 <Private Use>
-+<UE672> /xf8/xd3 <Private Use>
-+<UE673> /xf8/xd4 <Private Use>
-+<UE674> /xf8/xd5 <Private Use>
-+<UE675> /xf8/xd6 <Private Use>
-+<UE676> /xf8/xd7 <Private Use>
-+<UE677> /xf8/xd8 <Private Use>
-+<UE678> /xf8/xd9 <Private Use>
-+<UE679> /xf8/xda <Private Use>
-+<UE67A> /xf8/xdb <Private Use>
-+<UE67B> /xf8/xdc <Private Use>
-+<UE67C> /xf8/xdd <Private Use>
-+<UE67D> /xf8/xde <Private Use>
-+<UE67E> /xf8/xdf <Private Use>
-+<UE67F> /xf8/xe0 <Private Use>
-+<UE680> /xf8/xe1 <Private Use>
-+<UE681> /xf8/xe2 <Private Use>
-+<UE682> /xf8/xe3 <Private Use>
-+<UE683> /xf8/xe4 <Private Use>
-+<UE684> /xf8/xe5 <Private Use>
-+<UE685> /xf8/xe6 <Private Use>
-+<UE686> /xf8/xe7 <Private Use>
-+<UE687> /xf8/xe8 <Private Use>
-+<UE688> /xf8/xe9 <Private Use>
-+<UE689> /xf8/xea <Private Use>
-+<UE68A> /xf8/xeb <Private Use>
-+<UE68B> /xf8/xec <Private Use>
-+<UE68C> /xf8/xed <Private Use>
-+<UE68D> /xf8/xee <Private Use>
-+<UE68E> /xf8/xef <Private Use>
-+<UE68F> /xf8/xf0 <Private Use>
-+<UE690> /xf8/xf1 <Private Use>
-+<UE691> /xf8/xf2 <Private Use>
-+<UE692> /xf8/xf3 <Private Use>
-+<UE693> /xf8/xf4 <Private Use>
-+<UE694> /xf8/xf5 <Private Use>
-+<UE695> /xf8/xf6 <Private Use>
-+<UE696> /xf8/xf7 <Private Use>
-+<UE697> /xf8/xf8 <Private Use>
-+<UE698> /xf8/xf9 <Private Use>
-+<UE699> /xf8/xfa <Private Use>
-+<UE69A> /xf8/xfb <Private Use>
-+<UE69B> /xf8/xfc <Private Use>
-+<UE69C> /xf9/x40 <Private Use>
-+<UE69D> /xf9/x41 <Private Use>
-+<UE69E> /xf9/x42 <Private Use>
-+<UE69F> /xf9/x43 <Private Use>
-+<UE6A0> /xf9/x44 <Private Use>
-+<UE6A1> /xf9/x45 <Private Use>
-+<UE6A2> /xf9/x46 <Private Use>
-+<UE6A3> /xf9/x47 <Private Use>
-+<UE6A4> /xf9/x48 <Private Use>
-+<UE6A5> /xf9/x49 <Private Use>
-+<UE6A6> /xf9/x4a <Private Use>
-+<UE6A7> /xf9/x4b <Private Use>
-+<UE6A8> /xf9/x4c <Private Use>
-+<UE6A9> /xf9/x4d <Private Use>
-+<UE6AA> /xf9/x4e <Private Use>
-+<UE6AB> /xf9/x4f <Private Use>
-+<UE6AC> /xf9/x50 <Private Use>
-+<UE6AD> /xf9/x51 <Private Use>
-+<UE6AE> /xf9/x52 <Private Use>
-+<UE6AF> /xf9/x53 <Private Use>
-+<UE6B0> /xf9/x54 <Private Use>
-+<UE6B1> /xf9/x55 <Private Use>
-+<UE6B2> /xf9/x56 <Private Use>
-+<UE6B3> /xf9/x57 <Private Use>
-+<UE6B4> /xf9/x58 <Private Use>
-+<UE6B5> /xf9/x59 <Private Use>
-+<UE6B6> /xf9/x5a <Private Use>
-+<UE6B7> /xf9/x5b <Private Use>
-+<UE6B8> /xf9/x5c <Private Use>
-+<UE6B9> /xf9/x5d <Private Use>
-+<UE6BA> /xf9/x5e <Private Use>
-+<UE6BB> /xf9/x5f <Private Use>
-+<UE6BC> /xf9/x60 <Private Use>
-+<UE6BD> /xf9/x61 <Private Use>
-+<UE6BE> /xf9/x62 <Private Use>
-+<UE6BF> /xf9/x63 <Private Use>
-+<UE6C0> /xf9/x64 <Private Use>
-+<UE6C1> /xf9/x65 <Private Use>
-+<UE6C2> /xf9/x66 <Private Use>
-+<UE6C3> /xf9/x67 <Private Use>
-+<UE6C4> /xf9/x68 <Private Use>
-+<UE6C5> /xf9/x69 <Private Use>
-+<UE6C6> /xf9/x6a <Private Use>
-+<UE6C7> /xf9/x6b <Private Use>
-+<UE6C8> /xf9/x6c <Private Use>
-+<UE6C9> /xf9/x6d <Private Use>
-+<UE6CA> /xf9/x6e <Private Use>
-+<UE6CB> /xf9/x6f <Private Use>
-+<UE6CC> /xf9/x70 <Private Use>
-+<UE6CD> /xf9/x71 <Private Use>
-+<UE6CE> /xf9/x72 <Private Use>
-+<UE6CF> /xf9/x73 <Private Use>
-+<UE6D0> /xf9/x74 <Private Use>
-+<UE6D1> /xf9/x75 <Private Use>
-+<UE6D2> /xf9/x76 <Private Use>
-+<UE6D3> /xf9/x77 <Private Use>
-+<UE6D4> /xf9/x78 <Private Use>
-+<UE6D5> /xf9/x79 <Private Use>
-+<UE6D6> /xf9/x7a <Private Use>
-+<UE6D7> /xf9/x7b <Private Use>
-+<UE6D8> /xf9/x7c <Private Use>
-+<UE6D9> /xf9/x7d <Private Use>
-+<UE6DA> /xf9/x7e <Private Use>
-+<UE6DB> /xf9/x80 <Private Use>
-+<UE6DC> /xf9/x81 <Private Use>
-+<UE6DD> /xf9/x82 <Private Use>
-+<UE6DE> /xf9/x83 <Private Use>
-+<UE6DF> /xf9/x84 <Private Use>
-+<UE6E0> /xf9/x85 <Private Use>
-+<UE6E1> /xf9/x86 <Private Use>
-+<UE6E2> /xf9/x87 <Private Use>
-+<UE6E3> /xf9/x88 <Private Use>
-+<UE6E4> /xf9/x89 <Private Use>
-+<UE6E5> /xf9/x8a <Private Use>
-+<UE6E6> /xf9/x8b <Private Use>
-+<UE6E7> /xf9/x8c <Private Use>
-+<UE6E8> /xf9/x8d <Private Use>
-+<UE6E9> /xf9/x8e <Private Use>
-+<UE6EA> /xf9/x8f <Private Use>
-+<UE6EB> /xf9/x90 <Private Use>
-+<UE6EC> /xf9/x91 <Private Use>
-+<UE6ED> /xf9/x92 <Private Use>
-+<UE6EE> /xf9/x93 <Private Use>
-+<UE6EF> /xf9/x94 <Private Use>
-+<UE6F0> /xf9/x95 <Private Use>
-+<UE6F1> /xf9/x96 <Private Use>
-+<UE6F2> /xf9/x97 <Private Use>
-+<UE6F3> /xf9/x98 <Private Use>
-+<UE6F4> /xf9/x99 <Private Use>
-+<UE6F5> /xf9/x9a <Private Use>
-+<UE6F6> /xf9/x9b <Private Use>
-+<UE6F7> /xf9/x9c <Private Use>
-+<UE6F8> /xf9/x9d <Private Use>
-+<UE6F9> /xf9/x9e <Private Use>
-+<UE6FA> /xf9/x9f <Private Use>
-+<UE6FB> /xf9/xa0 <Private Use>
-+<UE6FC> /xf9/xa1 <Private Use>
-+<UE6FD> /xf9/xa2 <Private Use>
-+<UE6FE> /xf9/xa3 <Private Use>
-+<UE6FF> /xf9/xa4 <Private Use>
-+<UE700> /xf9/xa5 <Private Use>
-+<UE701> /xf9/xa6 <Private Use>
-+<UE702> /xf9/xa7 <Private Use>
-+<UE703> /xf9/xa8 <Private Use>
-+<UE704> /xf9/xa9 <Private Use>
-+<UE705> /xf9/xaa <Private Use>
-+<UE706> /xf9/xab <Private Use>
-+<UE707> /xf9/xac <Private Use>
-+<UE708> /xf9/xad <Private Use>
-+<UE709> /xf9/xae <Private Use>
-+<UE70A> /xf9/xaf <Private Use>
-+<UE70B> /xf9/xb0 <Private Use>
-+<UE70C> /xf9/xb1 <Private Use>
-+<UE70D> /xf9/xb2 <Private Use>
-+<UE70E> /xf9/xb3 <Private Use>
-+<UE70F> /xf9/xb4 <Private Use>
-+<UE710> /xf9/xb5 <Private Use>
-+<UE711> /xf9/xb6 <Private Use>
-+<UE712> /xf9/xb7 <Private Use>
-+<UE713> /xf9/xb8 <Private Use>
-+<UE714> /xf9/xb9 <Private Use>
-+<UE715> /xf9/xba <Private Use>
-+<UE716> /xf9/xbb <Private Use>
-+<UE717> /xf9/xbc <Private Use>
-+<UE718> /xf9/xbd <Private Use>
-+<UE719> /xf9/xbe <Private Use>
-+<UE71A> /xf9/xbf <Private Use>
-+<UE71B> /xf9/xc0 <Private Use>
-+<UE71C> /xf9/xc1 <Private Use>
-+<UE71D> /xf9/xc2 <Private Use>
-+<UE71E> /xf9/xc3 <Private Use>
-+<UE71F> /xf9/xc4 <Private Use>
-+<UE720> /xf9/xc5 <Private Use>
-+<UE721> /xf9/xc6 <Private Use>
-+<UE722> /xf9/xc7 <Private Use>
-+<UE723> /xf9/xc8 <Private Use>
-+<UE724> /xf9/xc9 <Private Use>
-+<UE725> /xf9/xca <Private Use>
-+<UE726> /xf9/xcb <Private Use>
-+<UE727> /xf9/xcc <Private Use>
-+<UE728> /xf9/xcd <Private Use>
-+<UE729> /xf9/xce <Private Use>
-+<UE72A> /xf9/xcf <Private Use>
-+<UE72B> /xf9/xd0 <Private Use>
-+<UE72C> /xf9/xd1 <Private Use>
-+<UE72D> /xf9/xd2 <Private Use>
-+<UE72E> /xf9/xd3 <Private Use>
-+<UE72F> /xf9/xd4 <Private Use>
-+<UE730> /xf9/xd5 <Private Use>
-+<UE731> /xf9/xd6 <Private Use>
-+<UE732> /xf9/xd7 <Private Use>
-+<UE733> /xf9/xd8 <Private Use>
-+<UE734> /xf9/xd9 <Private Use>
-+<UE735> /xf9/xda <Private Use>
-+<UE736> /xf9/xdb <Private Use>
-+<UE737> /xf9/xdc <Private Use>
-+<UE738> /xf9/xdd <Private Use>
-+<UE739> /xf9/xde <Private Use>
-+<UE73A> /xf9/xdf <Private Use>
-+<UE73B> /xf9/xe0 <Private Use>
-+<UE73C> /xf9/xe1 <Private Use>
-+<UE73D> /xf9/xe2 <Private Use>
-+<UE73E> /xf9/xe3 <Private Use>
-+<UE73F> /xf9/xe4 <Private Use>
-+<UE740> /xf9/xe5 <Private Use>
-+<UE741> /xf9/xe6 <Private Use>
-+<UE742> /xf9/xe7 <Private Use>
-+<UE743> /xf9/xe8 <Private Use>
-+<UE744> /xf9/xe9 <Private Use>
-+<UE745> /xf9/xea <Private Use>
-+<UE746> /xf9/xeb <Private Use>
-+<UE747> /xf9/xec <Private Use>
-+<UE748> /xf9/xed <Private Use>
-+<UE749> /xf9/xee <Private Use>
-+<UE74A> /xf9/xef <Private Use>
-+<UE74B> /xf9/xf0 <Private Use>
-+<UE74C> /xf9/xf1 <Private Use>
-+<UE74D> /xf9/xf2 <Private Use>
-+<UE74E> /xf9/xf3 <Private Use>
-+<UE74F> /xf9/xf4 <Private Use>
-+<UE750> /xf9/xf5 <Private Use>
-+<UE751> /xf9/xf6 <Private Use>
-+<UE752> /xf9/xf7 <Private Use>
-+<UE753> /xf9/xf8 <Private Use>
-+<UE754> /xf9/xf9 <Private Use>
-+<UE755> /xf9/xfa <Private Use>
-+<UE756> /xf9/xfb <Private Use>
-+<UE757> /xf9/xfc <Private Use>
-+
-+<U2170> /xfa/x40 SMALL ROMAN NUMERAL ONE
-+<U2171> /xfa/x41 SMALL ROMAN NUMERAL TWO
-+<U2172> /xfa/x42 SMALL ROMAN NUMERAL THREE
-+<U2173> /xfa/x43 SMALL ROMAN NUMERAL FOUR
-+<U2174> /xfa/x44 SMALL ROMAN NUMERAL FIVE
-+<U2175> /xfa/x45 SMALL ROMAN NUMERAL SIX
-+<U2176> /xfa/x46 SMALL ROMAN NUMERAL SEVEN
-+<U2177> /xfa/x47 SMALL ROMAN NUMERAL EIGHT
-+<U2178> /xfa/x48 SMALL ROMAN NUMERAL NINE
-+<U2179> /xfa/x49 SMALL ROMAN NUMERAL TEN
-+%IRREVERSIBLE%<U2160> /xfa/x4a ROMAN NUMERAL ONE
-+%IRREVERSIBLE%<U2161> /xfa/x4b ROMAN NUMERAL TWO
-+%IRREVERSIBLE%<U2162> /xfa/x4c ROMAN NUMERAL THREE
-+%IRREVERSIBLE%<U2163> /xfa/x4d ROMAN NUMERAL FOUR
-+%IRREVERSIBLE%<U2164> /xfa/x4e ROMAN NUMERAL FIVE
-+%IRREVERSIBLE%<U2165> /xfa/x4f ROMAN NUMERAL SIX
-+%IRREVERSIBLE%<U2166> /xfa/x50 ROMAN NUMERAL SEVEN
-+%IRREVERSIBLE%<U2167> /xfa/x51 ROMAN NUMERAL EIGHT
-+%IRREVERSIBLE%<U2168> /xfa/x52 ROMAN NUMERAL NINE
-+%IRREVERSIBLE%<U2169> /xfa/x53 ROMAN NUMERAL TEN
-+%IRREVERSIBLE%<UFFE2> /xfa/x54 FULLWIDTH NOT SIGN
-+<UFFE4> /xfa/x55 FULLWIDTH BROKEN BAR
-+<UFF07> /xfa/x56 FULLWIDTH APOSTROPHE
-+<UFF02> /xfa/x57 FULLWIDTH QUOTATION MARK
-+%IRREVERSIBLE%<U3231> /xfa/x58 PARENTHESIZED IDEOGRAPH STOCK
-+%IRREVERSIBLE%<U2116> /xfa/x59 NUMERO SIGN
-+%IRREVERSIBLE%<U2121> /xfa/x5a TELEPHONE SIGN
-+%IRREVERSIBLE%<U2235> /xfa/x5b BECAUSE
-+<U7E8A> /xfa/x5c <CJK>
-+<U891C> /xfa/x5d <CJK>
-+<U9348> /xfa/x5e <CJK>
-+<U9288> /xfa/x5f <CJK>
-+<U84DC> /xfa/x60 <CJK>
-+<U4FC9> /xfa/x61 <CJK>
-+<U70BB> /xfa/x62 <CJK>
-+<U6631> /xfa/x63 <CJK>
-+<U68C8> /xfa/x64 <CJK>
-+<U92F9> /xfa/x65 <CJK>
-+<U66FB> /xfa/x66 <CJK>
-+<U5F45> /xfa/x67 <CJK>
-+<U4E28> /xfa/x68 <CJK>
-+<U4EE1> /xfa/x69 <CJK>
-+<U4EFC> /xfa/x6a <CJK>
-+<U4F00> /xfa/x6b <CJK>
-+<U4F03> /xfa/x6c <CJK>
-+<U4F39> /xfa/x6d <CJK>
-+<U4F56> /xfa/x6e <CJK>
-+<U4F92> /xfa/x6f <CJK>
-+<U4F8A> /xfa/x70 <CJK>
-+<U4F9A> /xfa/x71 <CJK>
-+<U4F94> /xfa/x72 <CJK>
-+<U4FCD> /xfa/x73 <CJK>
-+<U5040> /xfa/x74 <CJK>
-+<U5022> /xfa/x75 <CJK>
-+<U4FFF> /xfa/x76 <CJK>
-+<U501E> /xfa/x77 <CJK>
-+<U5046> /xfa/x78 <CJK>
-+<U5070> /xfa/x79 <CJK>
-+<U5042> /xfa/x7a <CJK>
-+<U5094> /xfa/x7b <CJK>
-+<U50F4> /xfa/x7c <CJK>
-+<U50D8> /xfa/x7d <CJK>
-+<U514A> /xfa/x7e <CJK>
-+<U5164> /xfa/x80 <CJK>
-+<U519D> /xfa/x81 <CJK>
-+<U51BE> /xfa/x82 <CJK>
-+<U51EC> /xfa/x83 <CJK>
-+<U5215> /xfa/x84 <CJK>
-+<U529C> /xfa/x85 <CJK>
-+<U52A6> /xfa/x86 <CJK>
-+<U52C0> /xfa/x87 <CJK>
-+<U52DB> /xfa/x88 <CJK>
-+<U5300> /xfa/x89 <CJK>
-+<U5307> /xfa/x8a <CJK>
-+<U5324> /xfa/x8b <CJK>
-+<U5372> /xfa/x8c <CJK>
-+<U5393> /xfa/x8d <CJK>
-+<U53B2> /xfa/x8e <CJK>
-+<U53DD> /xfa/x8f <CJK>
-+<UFA0E> /xfa/x90 CJK COMPATIBILITY IDEOGRAPH-FA0E
-+<U549C> /xfa/x91 <CJK>
-+<U548A> /xfa/x92 <CJK>
-+<U54A9> /xfa/x93 <CJK>
-+<U54FF> /xfa/x94 <CJK>
-+<U5586> /xfa/x95 <CJK>
-+<U5759> /xfa/x96 <CJK>
-+<U5765> /xfa/x97 <CJK>
-+<U57AC> /xfa/x98 <CJK>
-+<U57C8> /xfa/x99 <CJK>
-+<U57C7> /xfa/x9a <CJK>
-+<UFA0F> /xfa/x9b CJK COMPATIBILITY IDEOGRAPH-FA0F
-+<UFA10> /xfa/x9c CJK COMPATIBILITY IDEOGRAPH-FA10
-+<U589E> /xfa/x9d <CJK>
-+<U58B2> /xfa/x9e <CJK>
-+<U590B> /xfa/x9f <CJK>
-+<U5953> /xfa/xa0 <CJK>
-+<U595B> /xfa/xa1 <CJK>
-+<U595D> /xfa/xa2 <CJK>
-+<U5963> /xfa/xa3 <CJK>
-+<U59A4> /xfa/xa4 <CJK>
-+<U59BA> /xfa/xa5 <CJK>
-+<U5B56> /xfa/xa6 <CJK>
-+<U5BC0> /xfa/xa7 <CJK>
-+<U752F> /xfa/xa8 <CJK>
-+<U5BD8> /xfa/xa9 <CJK>
-+<U5BEC> /xfa/xaa <CJK>
-+<U5C1E> /xfa/xab <CJK>
-+<U5CA6> /xfa/xac <CJK>
-+<U5CBA> /xfa/xad <CJK>
-+<U5CF5> /xfa/xae <CJK>
-+<U5D27> /xfa/xaf <CJK>
-+<U5D53> /xfa/xb0 <CJK>
-+<UFA11> /xfa/xb1 CJK COMPATIBILITY IDEOGRAPH-FA11
-+<U5D42> /xfa/xb2 <CJK>
-+<U5D6D> /xfa/xb3 <CJK>
-+<U5DB8> /xfa/xb4 <CJK>
-+<U5DB9> /xfa/xb5 <CJK>
-+<U5DD0> /xfa/xb6 <CJK>
-+<U5F21> /xfa/xb7 <CJK>
-+<U5F34> /xfa/xb8 <CJK>
-+<U5F67> /xfa/xb9 <CJK>
-+<U5FB7> /xfa/xba <CJK>
-+<U5FDE> /xfa/xbb <CJK>
-+<U605D> /xfa/xbc <CJK>
-+<U6085> /xfa/xbd <CJK>
-+<U608A> /xfa/xbe <CJK>
-+<U60DE> /xfa/xbf <CJK>
-+<U60D5> /xfa/xc0 <CJK>
-+<U6120> /xfa/xc1 <CJK>
-+<U60F2> /xfa/xc2 <CJK>
-+<U6111> /xfa/xc3 <CJK>
-+<U6137> /xfa/xc4 <CJK>
-+<U6130> /xfa/xc5 <CJK>
-+<U6198> /xfa/xc6 <CJK>
-+<U6213> /xfa/xc7 <CJK>
-+<U62A6> /xfa/xc8 <CJK>
-+<U63F5> /xfa/xc9 <CJK>
-+<U6460> /xfa/xca <CJK>
-+<U649D> /xfa/xcb <CJK>
-+<U64CE> /xfa/xcc <CJK>
-+<U654E> /xfa/xcd <CJK>
-+<U6600> /xfa/xce <CJK>
-+<U6615> /xfa/xcf <CJK>
-+<U663B> /xfa/xd0 <CJK>
-+<U6609> /xfa/xd1 <CJK>
-+<U662E> /xfa/xd2 <CJK>
-+<U661E> /xfa/xd3 <CJK>
-+<U6624> /xfa/xd4 <CJK>
-+<U6665> /xfa/xd5 <CJK>
-+<U6657> /xfa/xd6 <CJK>
-+<U6659> /xfa/xd7 <CJK>
-+<UFA12> /xfa/xd8 CJK COMPATIBILITY IDEOGRAPH-FA12
-+<U6673> /xfa/xd9 <CJK>
-+<U6699> /xfa/xda <CJK>
-+<U66A0> /xfa/xdb <CJK>
-+<U66B2> /xfa/xdc <CJK>
-+<U66BF> /xfa/xdd <CJK>
-+<U66FA> /xfa/xde <CJK>
-+<U670E> /xfa/xdf <CJK>
-+<UF929> /xfa/xe0 CJK COMPATIBILITY IDEOGRAPH-F929
-+<U6766> /xfa/xe1 <CJK>
-+<U67BB> /xfa/xe2 <CJK>
-+<U6852> /xfa/xe3 <CJK>
-+<U67C0> /xfa/xe4 <CJK>
-+<U6801> /xfa/xe5 <CJK>
-+<U6844> /xfa/xe6 <CJK>
-+<U68CF> /xfa/xe7 <CJK>
-+<UFA13> /xfa/xe8 CJK COMPATIBILITY IDEOGRAPH-FA13
-+<U6968> /xfa/xe9 <CJK>
-+<UFA14> /xfa/xea CJK COMPATIBILITY IDEOGRAPH-FA14
-+<U6998> /xfa/xeb <CJK>
-+<U69E2> /xfa/xec <CJK>
-+<U6A30> /xfa/xed <CJK>
-+<U6A6B> /xfa/xee <CJK>
-+<U6A46> /xfa/xef <CJK>
-+<U6A73> /xfa/xf0 <CJK>
-+<U6A7E> /xfa/xf1 <CJK>
-+<U6AE2> /xfa/xf2 <CJK>
-+<U6AE4> /xfa/xf3 <CJK>
-+<U6BD6> /xfa/xf4 <CJK>
-+<U6C3F> /xfa/xf5 <CJK>
-+<U6C5C> /xfa/xf6 <CJK>
-+<U6C86> /xfa/xf7 <CJK>
-+<U6C6F> /xfa/xf8 <CJK>
-+<U6CDA> /xfa/xf9 <CJK>
-+<U6D04> /xfa/xfa <CJK>
-+<U6D87> /xfa/xfb <CJK>
-+<U6D6F> /xfa/xfc <CJK>
-+<U6D96> /xfb/x40 <CJK>
-+<U6DAC> /xfb/x41 <CJK>
-+<U6DCF> /xfb/x42 <CJK>
-+<U6DF8> /xfb/x43 <CJK>
-+<U6DF2> /xfb/x44 <CJK>
-+<U6DFC> /xfb/x45 <CJK>
-+<U6E39> /xfb/x46 <CJK>
-+<U6E5C> /xfb/x47 <CJK>
-+<U6E27> /xfb/x48 <CJK>
-+<U6E3C> /xfb/x49 <CJK>
-+<U6EBF> /xfb/x4a <CJK>
-+<U6F88> /xfb/x4b <CJK>
-+<U6FB5> /xfb/x4c <CJK>
-+<U6FF5> /xfb/x4d <CJK>
-+<U7005> /xfb/x4e <CJK>
-+<U7007> /xfb/x4f <CJK>
-+<U7028> /xfb/x50 <CJK>
-+<U7085> /xfb/x51 <CJK>
-+<U70AB> /xfb/x52 <CJK>
-+<U710F> /xfb/x53 <CJK>
-+<U7104> /xfb/x54 <CJK>
-+<U715C> /xfb/x55 <CJK>
-+<U7146> /xfb/x56 <CJK>
-+<U7147> /xfb/x57 <CJK>
-+<UFA15> /xfb/x58 CJK COMPATIBILITY IDEOGRAPH-FA15
-+<U71C1> /xfb/x59 <CJK>
-+<U71FE> /xfb/x5a <CJK>
-+<U72B1> /xfb/x5b <CJK>
-+<U72BE> /xfb/x5c <CJK>
-+<U7324> /xfb/x5d <CJK>
-+<UFA16> /xfb/x5e CJK COMPATIBILITY IDEOGRAPH-FA16
-+<U7377> /xfb/x5f <CJK>
-+<U73BD> /xfb/x60 <CJK>
-+<U73C9> /xfb/x61 <CJK>
-+<U73D6> /xfb/x62 <CJK>
-+<U73E3> /xfb/x63 <CJK>
-+<U73D2> /xfb/x64 <CJK>
-+<U7407> /xfb/x65 <CJK>
-+<U73F5> /xfb/x66 <CJK>
-+<U7426> /xfb/x67 <CJK>
-+<U742A> /xfb/x68 <CJK>
-+<U7429> /xfb/x69 <CJK>
-+<U742E> /xfb/x6a <CJK>
-+<U7462> /xfb/x6b <CJK>
-+<U7489> /xfb/x6c <CJK>
-+<U749F> /xfb/x6d <CJK>
-+<U7501> /xfb/x6e <CJK>
-+<U756F> /xfb/x6f <CJK>
-+<U7682> /xfb/x70 <CJK>
-+<U769C> /xfb/x71 <CJK>
-+<U769E> /xfb/x72 <CJK>
-+<U769B> /xfb/x73 <CJK>
-+<U76A6> /xfb/x74 <CJK>
-+<UFA17> /xfb/x75 CJK COMPATIBILITY IDEOGRAPH-FA17
-+<U7746> /xfb/x76 <CJK>
-+<U52AF> /xfb/x77 <CJK>
-+<U7821> /xfb/x78 <CJK>
-+<U784E> /xfb/x79 <CJK>
-+<U7864> /xfb/x7a <CJK>
-+<U787A> /xfb/x7b <CJK>
-+<U7930> /xfb/x7c <CJK>
-+<UFA18> /xfb/x7d CJK COMPATIBILITY IDEOGRAPH-FA18
-+<UFA19> /xfb/x7e CJK COMPATIBILITY IDEOGRAPH-FA19
-+<UFA1A> /xfb/x80 CJK COMPATIBILITY IDEOGRAPH-FA1A
-+<U7994> /xfb/x81 <CJK>
-+<UFA1B> /xfb/x82 CJK COMPATIBILITY IDEOGRAPH-FA1B
-+<U799B> /xfb/x83 <CJK>
-+<U7AD1> /xfb/x84 <CJK>
-+<U7AE7> /xfb/x85 <CJK>
-+<UFA1C> /xfb/x86 CJK COMPATIBILITY IDEOGRAPH-FA1C
-+<U7AEB> /xfb/x87 <CJK>
-+<U7B9E> /xfb/x88 <CJK>
-+<UFA1D> /xfb/x89 CJK COMPATIBILITY IDEOGRAPH-FA1D
-+<U7D48> /xfb/x8a <CJK>
-+<U7D5C> /xfb/x8b <CJK>
-+<U7DB7> /xfb/x8c <CJK>
-+<U7DA0> /xfb/x8d <CJK>
-+<U7DD6> /xfb/x8e <CJK>
-+<U7E52> /xfb/x8f <CJK>
-+<U7F47> /xfb/x90 <CJK>
-+<U7FA1> /xfb/x91 <CJK>
-+<UFA1E> /xfb/x92 CJK COMPATIBILITY IDEOGRAPH-FA1E
-+<U8301> /xfb/x93 <CJK>
-+<U8362> /xfb/x94 <CJK>
-+<U837F> /xfb/x95 <CJK>
-+<U83C7> /xfb/x96 <CJK>
-+<U83F6> /xfb/x97 <CJK>
-+<U8448> /xfb/x98 <CJK>
-+<U84B4> /xfb/x99 <CJK>
-+<U8553> /xfb/x9a <CJK>
-+<U8559> /xfb/x9b <CJK>
-+<U856B> /xfb/x9c <CJK>
-+<UFA1F> /xfb/x9d CJK COMPATIBILITY IDEOGRAPH-FA1F
-+<U85B0> /xfb/x9e <CJK>
-+<UFA20> /xfb/x9f CJK COMPATIBILITY IDEOGRAPH-FA20
-+<UFA21> /xfb/xa0 CJK COMPATIBILITY IDEOGRAPH-FA21
-+<U8807> /xfb/xa1 <CJK>
-+<U88F5> /xfb/xa2 <CJK>
-+<U8A12> /xfb/xa3 <CJK>
-+<U8A37> /xfb/xa4 <CJK>
-+<U8A79> /xfb/xa5 <CJK>
-+<U8AA7> /xfb/xa6 <CJK>
-+<U8ABE> /xfb/xa7 <CJK>
-+<U8ADF> /xfb/xa8 <CJK>
-+<UFA22> /xfb/xa9 CJK COMPATIBILITY IDEOGRAPH-FA22
-+<U8AF6> /xfb/xaa <CJK>
-+<U8B53> /xfb/xab <CJK>
-+<U8B7F> /xfb/xac <CJK>
-+<U8CF0> /xfb/xad <CJK>
-+<U8CF4> /xfb/xae <CJK>
-+<U8D12> /xfb/xaf <CJK>
-+<U8D76> /xfb/xb0 <CJK>
-+<UFA23> /xfb/xb1 CJK COMPATIBILITY IDEOGRAPH-FA23
-+<U8ECF> /xfb/xb2 <CJK>
-+<UFA24> /xfb/xb3 CJK COMPATIBILITY IDEOGRAPH-FA24
-+<UFA25> /xfb/xb4 CJK COMPATIBILITY IDEOGRAPH-FA25
-+<U9067> /xfb/xb5 <CJK>
-+<U90DE> /xfb/xb6 <CJK>
-+<UFA26> /xfb/xb7 CJK COMPATIBILITY IDEOGRAPH-FA26
-+<U9115> /xfb/xb8 <CJK>
-+<U9127> /xfb/xb9 <CJK>
-+<U91DA> /xfb/xba <CJK>
-+<U91D7> /xfb/xbb <CJK>
-+<U91DE> /xfb/xbc <CJK>
-+<U91ED> /xfb/xbd <CJK>
-+<U91EE> /xfb/xbe <CJK>
-+<U91E4> /xfb/xbf <CJK>
-+<U91E5> /xfb/xc0 <CJK>
-+<U9206> /xfb/xc1 <CJK>
-+<U9210> /xfb/xc2 <CJK>
-+<U920A> /xfb/xc3 <CJK>
-+<U923A> /xfb/xc4 <CJK>
-+<U9240> /xfb/xc5 <CJK>
-+<U923C> /xfb/xc6 <CJK>
-+<U924E> /xfb/xc7 <CJK>
-+<U9259> /xfb/xc8 <CJK>
-+<U9251> /xfb/xc9 <CJK>
-+<U9239> /xfb/xca <CJK>
-+<U9267> /xfb/xcb <CJK>
-+<U92A7> /xfb/xcc <CJK>
-+<U9277> /xfb/xcd <CJK>
-+<U9278> /xfb/xce <CJK>
-+<U92E7> /xfb/xcf <CJK>
-+<U92D7> /xfb/xd0 <CJK>
-+<U92D9> /xfb/xd1 <CJK>
-+<U92D0> /xfb/xd2 <CJK>
-+<UFA27> /xfb/xd3 CJK COMPATIBILITY IDEOGRAPH-FA27
-+<U92D5> /xfb/xd4 <CJK>
-+<U92E0> /xfb/xd5 <CJK>
-+<U92D3> /xfb/xd6 <CJK>
-+<U9325> /xfb/xd7 <CJK>
-+<U9321> /xfb/xd8 <CJK>
-+<U92FB> /xfb/xd9 <CJK>
-+<UFA28> /xfb/xda CJK COMPATIBILITY IDEOGRAPH-FA28
-+<U931E> /xfb/xdb <CJK>
-+<U92FF> /xfb/xdc <CJK>
-+<U931D> /xfb/xdd <CJK>
-+<U9302> /xfb/xde <CJK>
-+<U9370> /xfb/xdf <CJK>
-+<U9357> /xfb/xe0 <CJK>
-+<U93A4> /xfb/xe1 <CJK>
-+<U93C6> /xfb/xe2 <CJK>
-+<U93DE> /xfb/xe3 <CJK>
-+<U93F8> /xfb/xe4 <CJK>
-+<U9431> /xfb/xe5 <CJK>
-+<U9445> /xfb/xe6 <CJK>
-+<U9448> /xfb/xe7 <CJK>
-+<U9592> /xfb/xe8 <CJK>
-+<UF9DC> /xfb/xe9 CJK COMPATIBILITY IDEOGRAPH-F9DC
-+<UFA29> /xfb/xea CJK COMPATIBILITY IDEOGRAPH-FA29
-+<U969D> /xfb/xeb <CJK>
-+<U96AF> /xfb/xec <CJK>
-+<U9733> /xfb/xed <CJK>
-+<U973B> /xfb/xee <CJK>
-+<U9743> /xfb/xef <CJK>
-+<U974D> /xfb/xf0 <CJK>
-+<U974F> /xfb/xf1 <CJK>
-+<U9751> /xfb/xf2 <CJK>
-+<U9755> /xfb/xf3 <CJK>
-+<U9857> /xfb/xf4 <CJK>
-+<U9865> /xfb/xf5 <CJK>
-+<UFA2A> /xfb/xf6 CJK COMPATIBILITY IDEOGRAPH-FA2A
-+<UFA2B> /xfb/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2B
-+<U9927> /xfb/xf8 <CJK>
-+<UFA2C> /xfb/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C
-+<U999E> /xfb/xfa <CJK>
-+<U9A4E> /xfb/xfb <CJK>
-+<U9AD9> /xfb/xfc <CJK>
-+<U9ADC> /xfc/x40 <CJK>
-+<U9B75> /xfc/x41 <CJK>
-+<U9B72> /xfc/x42 <CJK>
-+<U9B8F> /xfc/x43 <CJK>
-+<U9BB1> /xfc/x44 <CJK>
-+<U9BBB> /xfc/x45 <CJK>
-+<U9C00> /xfc/x46 <CJK>
-+<U9D70> /xfc/x47 <CJK>
-+<U9D6B> /xfc/x48 <CJK>
-+<UFA2D> /xfc/x49 CJK COMPATIBILITY IDEOGRAPH-FA2D
-+<U9E19> /xfc/x4a <CJK>
-+<U9ED1> /xfc/x4b <CJK>
-+END CHARMAP
-+
-+WIDTH
-+<U3000>...<U6ECC> 2
-+<U6F3E>...<U7199> 2
-+<U7E8A>...<UFF02> 2
-+<UE000>...<UE757> 2
-+<U2170>...<U9ED1> 2
-+END WIDTH
---- glibc-2.3.2/localedata/collate-test.c 2001-07-07 15:21:05.000000000 -0400
-+++ glibc-2.3.2/localedata/collate-test.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test collation function using real data.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,6 +19,7 @@
- 02111-1307 USA. */
-
- #include <ctype.h>
-+#include <error.h>
- #include <locale.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -27,8 +28,8 @@
-
- struct lines
- {
-- const char *key;
-- const char *line;
-+ char *key;
-+ char *line;
- };
-
- static int xstrcoll (const void *, const void *);
-@@ -43,6 +44,9 @@
- size_t len = 0;
- size_t n;
-
-+ if (argc < 2)
-+ error (1, 0, "usage: %s <random seed>", argv[0]);
-+
- setlocale (LC_ALL, "");
-
- nstrings_max = 100;
-@@ -63,8 +67,8 @@
- if (nstrings == nstrings_max)
- {
- strings = (struct lines *) realloc (strings,
-- (nstrings_max *= 2
-- * sizeof (*strings)));
-+ (nstrings_max *= 2)
-+ * sizeof (*strings));
- if (strings == NULL)
- {
- perror (argv[0]);
-@@ -78,6 +82,7 @@
- strings[nstrings].key = strndup (line, l);
- ++nstrings;
- }
-+ free (line);
-
- /* First shuffle. */
- srandom (atoi (argv[1]));
-@@ -105,7 +110,12 @@
-
- /* Print the result. */
- for (n = 0; n < nstrings; ++n)
-- fputs (strings[n].line, stdout);
-+ {
-+ fputs (strings[n].line, stdout);
-+ free (strings[n].line);
-+ free (strings[n].key);
-+ }
-+ free (strings);
-
- return result;
- }
---- glibc-2.3.2/localedata/locales/an_ES 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/an_ES 2003-09-19 22:37:05.000000000 -0400
-@@ -0,0 +1,126 @@
-+comment_char %
-+escape_char /
-+%
-+% Aragonese Language Locale for Spain
-+% Source:
-+% Address:
-+% Contact: Jordi Mallach Pérez
-+% Email: jordi@gnu.org
-+% Language: an
-+% Territory: ES
-+% Revision: 1.0
-+% Date: 2003-05-22
-+% Application: general
-+% Users: general
-+% Charset: ISO-8859-15
-+%
-+% This file is under the
-+% GNU General Public License.
-+% Based in the gl_ES Locale
-+
-+LC_IDENTIFICATION
-+title "Aragonese locale for Spain"
-+source ""
-+address ""
-+contact "Jordi Mallach Pérez"
-+email "bug-glibc@gnu.org"
-+tel ""
-+fax ""
-+language "Aragonese"
-+territory "Spain"
-+revision "1.1"
-+date "2003-08-25"
-+%
-+category "i18n:1999";LC_IDENTIFICATION
-+category "i18n:1999";LC_CTYPE
-+category "i18n:1999";LC_COLLATE
-+category "i18n:1999";LC_TIME
-+category "posix:1993";LC_NUMERIC
-+category "i18n:1999";LC_MONETARY
-+category "i18n:1999";LC_MESSAGES
-+category "i18n:1999";LC_PAPER
-+category "i18n:1999";LC_NAME
-+category "i18n:1999";LC_ADDRESS
-+category "i18n:1999";LC_TELEPHONE
-+END LC_IDENTIFICATION
-+
-+LC_COLLATE
-+copy "es_ES"
-+END LC_COLLATE
-+
-+LC_CTYPE
-+copy "es_ES"
-+END LC_CTYPE
-+
-+LC_MESSAGES
-+yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>"
-+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
-+END LC_MESSAGES
-+
-+LC_MONETARY
-+copy "es_ES"
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+copy "es_ES"
-+END LC_NUMERIC
-+
-+LC_TIME
-+abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/
-+ "<U006D><U0061><U0072>";"<U006D><U0069><U0065>";/
-+ "<U0063><U0068><U0075>";"<U0062><U0069><U0065>";/
-+ "<U0073><U0061><U0062>"
-+day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/
-+ "<U006C><U0075><U006E><U0073>";/
-+ "<U006D><U0061><U0072><U0074><U0065><U0073>";/
-+ "<U006D><U0069><U0065><U0063><U006F><U006c><U0073>";/
-+ "<U0063><U0068><U0075><U0065><U0062><U0065><U0073>";/
-+ "<U0062><U0069><U0065><U0072><U006E><U0065><U0073>";/
-+ "<U0073><U0061><U0062><U0061><U0064><U006F>"
-+abmon "<U0063><U0068><U0069>";"<U0066><U0072><U0065>";/
-+ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/
-+ "<U006D><U0061><U0079>";"<U0063><U0068><U006E>";/
-+ "<U0063><U0068><U006C>";"<U0061><U0067><U006F>";/
-+ "<U0073><U0065><U0074>";"<U006f><U0063><U0074>";/
-+ "<U006E><U006F><U0062>";"<U0061><U0062><U0069>"
-+mon "<U0063><U0068><U0069><U006E><U0065><U0072><U006F>";/
-+ "<U0066><U0072><U0065><U0062><U0065><U0072><U006F>";/
-+ "<U006D><U0061><U0072><U007A><U006F>";/
-+ "<U0061><U0062><U0072><U0069><U006C>";/
-+ "<U006D><U0061><U0079><U006F>";/
-+ "<U0063><U0068><U0075><U006E><U0069><U006F>";/
-+ "<U0063><U0068><U0075><U006C><U0069><U006F>";/
-+ "<U0061><U0067><U006F><U0073><U0074><U006F>";/
-+ "<U0073><U0065><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/
-+ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/
-+ "<U006E><U006F><U0062><U0069><U0065><U006D><U0062><U0072><U0065>";/
-+ "<U0061><U0062><U0069><U0065><U006E><U0074><U006F>"
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
-+t_fmt "<U0025><U0054>"
-+am_pm "";""
-+t_fmt_ampm ""
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-+<U0025><U005A><U0020><U0025><U0059>"
-+END LC_TIME
-+
-+LC_PAPER
-+copy "es_ES"
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+copy "es_ES"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+copy "es_ES"
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+copy "es_ES"
-+END LC_NAME
-+
-+LC_ADDRESS
-+copy "es_ES"
-+END LC_ADDRESS
---- glibc-2.3.2/localedata/locales/ar_BH 2000-10-26 13:42:04.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/ar_BH 2003-04-24 20:05:58.000000000 -0400
-@@ -5,7 +5,7 @@
- % Tetsuji Orita <orita@jp.ibm.com>.
-
- LC_IDENTIFICATION
--title "Arabic language locale for Bahrein"
-+title "Arabic language locale for Bahrain"
- source "IBM Globalization Center of Competency, Yamato Software Laboratory"
- address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan"
- contact ""
-@@ -13,7 +13,7 @@
- tel ""
- fax ""
- language "Arabic"
--territory "Bahrein"
-+territory "Bahrain"
- revision "1.0"
- date "2000-07-20"
- %
---- glibc-2.3.2/localedata/locales/ar_SD 2000-10-26 13:44:45.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/ar_SD 2003-04-24 20:05:58.000000000 -0400
-@@ -47,7 +47,7 @@
- % These are generated based on XML base Locale difintion file
- % for IBM Class for Unicode/Java
- %
--int_curr_symbol "<U0053><U0044><U0050><U0020>"
-+int_curr_symbol "<U0053><U0044><U0044><U0020>"
- currency_symbol "<U062C><U002E><U0633><U002E>"
- mon_decimal_point "<U002E>"
- mon_thousands_sep "<U002C>"
---- glibc-2.3.2/localedata/locales/de_DE 2002-02-28 03:34:13.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/de_DE 2003-05-12 12:13:05.000000000 -0400
-@@ -94,10 +94,10 @@
- END LC_NUMERIC
-
- LC_TIME
--abday "<U0053><U006F><U006E>";"<U004D><U006F><U006E>";/
-- "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/
-- "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/
-- "<U0053><U0061><U006D>"
-+abday "<U0053><U006F>";"<U004D><U006F>";/
-+ "<U0044><U0069>";"<U004D><U0069>";/
-+ "<U0044><U006F>";"<U0046><U0072>";/
-+ "<U0053><U0061>"
- day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/
- "<U004D><U006F><U006E><U0074><U0061><U0067>";/
- "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/
---- glibc-2.3.2/localedata/locales/en_ZA 2000-10-26 13:48:46.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/en_ZA 2003-03-18 16:46:07.000000000 -0500
-@@ -2,44 +2,54 @@
- comment_char %
-
- % English language locale for South Africa
--% Source: RAP
--% Email: nic@sig.co.za
--% Tel: +27 83 7659503
--% Fax: +27 12 3478098
-+% Source: Zuza Software Foundation
-+% Email: dwayne@translate.org.za
-+% Tel: +27 21 4487827
-+% Fax: +27 21 4489574
- % Language: en
- % Territory: ZA
--% Revision: 1.0
--% Date: 1999-03-28
-+% Revision: 1.1
-+% Date: 2003-03-14
- % Users: general
- % Repertoiremap: mnemonic,ds
- % Charset: ISO-8859-1
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% Changelog
-+% 1.1 (2003-03-14):
-+% - Updated maintainer to Zuza Sofware Foundation
-+% - Changed %x for LC_TIME to use dd/mm/ccyy
-+% - Added ^ to LC_MESSAGES regex "^[yY].*"
-+% - Confirmed LC_PAPER and LC_MEASUREMENT settings
-+% - Added country and language names to LC_ADDRESS
-+% - Added missing info for LC_TELEPHONE
-
- LC_IDENTIFICATION
- title "English locale for South Africa"
--source "RAP"
--address ""
--contact ""
--email "bug-glibc@gnu.org"
--tel ""
--fax ""
-+source "Zuza Software Foundation"
-+address "Box 13412, Mowbray, 7701, South Africa"
-+contact "Dwayne Bailey"
-+email "dwayne@translate.org.za"
-+tel "+27 21 448 7827"
-+fax "+27 21 448 9574"
- language "English"
- territory "South Africa"
--revision "1.0"
--date "2000-06-29"
-+revision "1.1"
-+date "2003-03-14"
- %
--category "en_ZA:2000";LC_IDENTIFICATION
-+category "en_ZA:2003";LC_IDENTIFICATION
- category "en_ZA:2000";LC_CTYPE
- category "en_ZA:2000";LC_COLLATE
--category "en_ZA:2000";LC_TIME
-+category "en_ZA:2003";LC_TIME
- category "en_ZA:2000";LC_NUMERIC
- category "en_ZA:2000";LC_MONETARY
--category "en_ZA:2000";LC_MESSAGES
-+category "en_ZA:2003";LC_MESSAGES
- category "en_ZA:2000";LC_PAPER
-+category "en_ZA:2000";LC_MEASUREMENT
- category "en_ZA:2000";LC_NAME
--category "en_ZA:2000";LC_ADDRESS
--category "en_ZA:2000";LC_TELEPHONE
-+category "en_ZA:2003";LC_ADDRESS
-+category "en_ZA:2003";LC_TELEPHONE
-
- END LC_IDENTIFICATION
-
-@@ -106,7 +116,7 @@
- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
- d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
--d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
- t_fmt "<U0025><U0054>"
- am_pm "";""
- t_fmt_ampm ""
-@@ -116,25 +126,25 @@
- END LC_TIME
-
- LC_MESSAGES
--yesexpr "<U005B><U0079><U0059><U005D><U002E><U002A>"
--noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
-+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
-+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
- END LC_MESSAGES
-
- LC_PAPER
--% FIXME
- height 297
--% FIXME
- width 210
- END LC_PAPER
-
- LC_TELEPHONE
- tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
- <U006C>"
-+tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
-+int_select "<U0030><U0039>"
- int_prefix "<U0032><U0037>"
-+
- END LC_TELEPHONE
-
- LC_MEASUREMENT
--% FIXME
- measurement 1
- END LC_MEASUREMENT
-
-@@ -149,4 +159,7 @@
- <U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
- <U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
- <U004E><U0025><U0063><U0025><U004E>"
-+country_name "<U0053><U006F><U0075><U0074><U0068><U0020>/
-+<U0041><U0066><U0072><U0069><U0063><U0061>"
-+lang_name "<U0045><U006E><U0067><U006C><U0069><U0073><U0068>"
- END LC_ADDRESS
---- glibc-2.3.2/localedata/locales/es_EC 2002-08-02 16:00:00.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/es_EC 2003-04-24 20:05:58.000000000 -0400
-@@ -61,7 +61,7 @@
- END LC_MESSAGES
-
- LC_MONETARY
--int_curr_symbol "<U0045><U0043><U0053><U0020>"
-+int_curr_symbol "<U0055><U0053><U0044><U0020>"
- currency_symbol "<U0024>"
- mon_decimal_point "<U002C>"
- mon_thousands_sep "<U002E>"
---- glibc-2.3.2/localedata/locales/fi_FI 2002-02-28 03:45:33.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/fi_FI 2003-08-21 08:37:06.000000000 -0400
-@@ -19,6 +19,10 @@
- % Charset: ISO-8859-1
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% Useful sources:
-+% Locale info for Finnish in Finland
-+% http://std.dkuug.dk/cultreg/registrations/narrative/fi_FI,_1.0
-
- LC_IDENTIFICATION
- title "Finnish locale for Finland"
-@@ -2121,7 +2125,7 @@
- int_curr_symbol "<U0045><U0055><U0052><U0020>"
- currency_symbol "<U20AC>"
- mon_decimal_point "<U002C>"
--mon_thousands_sep "<U002E>"
-+mon_thousands_sep "<U00A0>"
- mon_grouping 3;3
- positive_sign ""
- negative_sign "<U002D>"
-@@ -2139,7 +2143,7 @@
-
- LC_NUMERIC
- decimal_point "<U002C>"
--thousands_sep "<U002E>"
-+thousands_sep "<U00A0>"
- grouping 3;3
- END LC_NUMERIC
-
-@@ -2178,14 +2182,15 @@
- "<U006C><U006F><U006B><U0061><U006B><U0075><U0075>";/
- "<U006D><U0061><U0072><U0072><U0061><U0073><U006B><U0075><U0075>";/
- "<U006A><U006F><U0075><U006C><U0075><U006B><U0075><U0075>"
--d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054>"
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0020><U0025><U0042>/
-+<U0074><U0061><U0020><U0025><U0059><U0020><U0025><U0054>"
- d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
- t_fmt "<U0025><U0054>"
- am_pm "";""
- t_fmt_ampm ""
--date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
--<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
--<U0025><U005A><U0020><U0025><U0059>"
-+date_fmt "<U0025><U0061><U0020><U0025><U0042><U006E><U0020><U0025>/
-+<U0065><U002E><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025>/
-+<U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
- END LC_TIME
-
- LC_MESSAGES
---- glibc-2.3.2/localedata/locales/he_IL 2000-10-26 13:53:59.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/he_IL 2003-09-19 22:37:05.000000000 -0400
-@@ -18,6 +18,10 @@
- % Charset: ISO-8859-8
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% This locale replaces iw_IL, as the ISO-639 code for Hebrew was changed
-+% from 'iw' to 'he' in 1989, according to Bruno Haible on libc-alpha
-+% 2003-09-01.
-
- LC_IDENTIFICATION
- title "Hebrew locale for Israel"
---- glibc-2.3.2/localedata/locales/is_IS 2000-10-26 13:54:41.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/is_IS 2003-08-21 08:37:06.000000000 -0400
-@@ -2185,35 +2185,35 @@
- END LC_NUMERIC
-
- LC_TIME
--abday "<U0053><U0075><U006E>";"<U004D><U00E1><U006E>";/
-- "<U00DE><U0072><U0069>";"<U004D><U0069><U00F0>";/
-- "<U0046><U0069><U006D>";"<U0046><U00F6><U0073>";/
-- "<U004C><U0061><U0075>"
--day "<U0053><U0075><U006E><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U004D><U00E1><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U00DE><U0072><U0069><U00F0><U006A><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U004D><U0069><U00F0><U0076><U0069><U006B><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U0046><U0069><U006D><U006D><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U0046><U00F6><U0073><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
-- "<U004C><U0061><U0075><U0067><U0061><U0072><U0064><U0061><U0067><U0075><U0072>"
--abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
-- "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
-- "<U004D><U0061><U00ED>";"<U004A><U00FA><U006E>";/
-- "<U004A><U00FA><U006C>";"<U00C1><U0067><U00FA>";/
-- "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
-- "<U004E><U00F3><U0076>";"<U0044><U0065><U0073>"
--mon "<U004A><U0061><U006E><U00FA><U0061><U0072>";/
-- "<U0046><U0065><U0062><U0072><U00FA><U0061><U0072>";/
-- "<U004D><U0061><U0072><U0073>";/
-- "<U0041><U0070><U0072><U00ED><U006C>";/
-- "<U004D><U0061><U00ED>";/
-- "<U004A><U00FA><U006E><U00ED>";/
-- "<U004A><U00FA><U006C><U00ED>";/
-- "<U00C1><U0067><U00FA><U0073><U0074>";/
-- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
-- "<U004F><U006B><U0074><U00F3><U0062><U0065><U0072>";/
-- "<U004E><U00F3><U0076><U0065><U006D><U0062><U0065><U0072>";/
-- "<U0044><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
-+abday "<U0073><U0075><U006E>";"<U006D><U00E1><U006E>";/
-+ "<U00FE><U0072><U0069>";"<U006D><U0069><U00F0>";/
-+ "<U0066><U0069><U006D>";"<U0066><U00F6><U0073>";/
-+ "<U006C><U0061><U0075>"
-+day "<U0073><U0075><U006E><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U006D><U00E1><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U00FE><U0072><U0069><U00F0><U006A><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U006D><U0069><U00F0><U0076><U0069><U006B><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U0066><U0069><U006D><U006D><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U0066><U00F6><U0073><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
-+ "<U006C><U0061><U0075><U0067><U0061><U0072><U0064><U0061><U0067><U0075><U0072>"
-+abmon "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
-+ "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
-+ "<U006D><U0061><U00ED>";"<U006A><U00FA><U006E>";/
-+ "<U006A><U00FA><U006C>";"<U00E1><U0067><U00FA>";/
-+ "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
-+ "<U006E><U00F3><U0076>";"<U0064><U0065><U0073>"
-+mon "<U006A><U0061><U006E><U00FA><U0061><U0072>";/
-+ "<U0066><U0065><U0062><U0072><U00FA><U0061><U0072>";/
-+ "<U006D><U0061><U0072><U0073>";/
-+ "<U0061><U0070><U0072><U00ED><U006C>";/
-+ "<U006D><U0061><U00ED>";/
-+ "<U006A><U00FA><U006E><U00ED>";/
-+ "<U006A><U00FA><U006C><U00ED>";/
-+ "<U00E1><U0067><U00FA><U0073><U0074>";/
-+ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
-+ "<U006F><U006B><U0074><U00F3><U0062><U0065><U0072>";/
-+ "<U006E><U00F3><U0076><U0065><U006D><U0062><U0065><U0072>";/
-+ "<U0064><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
- d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0025><U0062><U0020><U0025><U0059><U002C><U0020><U0025><U0054><U0020><U0025><U005A>"
- d_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0025><U0062><U0020><U0025><U0059>"
- t_fmt "<U0025><U0054>"
---- glibc-2.3.2/localedata/locales/iw_IL 2000-10-26 13:55:07.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/iw_IL 2003-09-19 22:37:05.000000000 -0400
-@@ -18,6 +18,9 @@
- % Charset: ISO-8859-8
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% Obsolete locale. The ISO-639 code for Hebrew was changed from 'iw'
-+% to 'he' in 1989, according to Bruno Haible on libc-alpha 2003-09-01.
-
- LC_IDENTIFICATION
- title "Hebrew locale for Israel"
---- glibc-2.3.2/localedata/locales/lo_LA 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/lo_LA 2003-09-19 22:37:05.000000000 -0400
-@@ -0,0 +1,782 @@
-+escape_char /
-+comment_char %
-+
-+%
-+% Lao Lanuage Locale for Laos
-+%
-+% Name: lo_LA
-+% Author: Anousak Souphavanh
-+% Contact:
-+% E-mail: Anousak@muanglao.com
-+% Language: Lao
-+% Territory: Laos
-+% Charset: UTF-8
-+% Revision: 1.2
-+% Date: 2003-15-09
-+%
-+
-+%
-+% Copyright (C) 2002 Anousak Souphavanh
-+
-+%
-+% Permission is hereby granted, free of charge, to any person obtaining
-+% a copy of this software and associated documentation files (the "Software"),
-+% to deal in the Software without restriction, including without limitation
-+% the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+% and/or sell copies of the Software, and to permit persons to whom the
-+% Software is furnished to do so, subject to the following conditions:
-+%
-+% The above copyright notice and this permission notice shall be included
-+% in all copies or substantial portions of the Software.
-+%
-+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+% OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+% ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+% OTHER DEALINGS IN THE SOFTWARE.
-+%
-+%
-+%
-+% Note: I would like to give a special thank to Mr. Pablo Salatxaga @ Mandrake , email "srtxg@chanae.alphanet.ch"
-+% & Theppitak Karoonboonyanan, email: 'thep@linux.thai.net', all had guided me in the right direction.
-+
-+LC_IDENTIFICATION
-+title "Lao locale for Laos"
-+source ""
-+address ""
-+contact "Anousak Souphavanh at: anousak@muanglao.com"
-+email "bug-glibc@gnu.org"
-+tel ""
-+fax ""
-+language "Lao"
-+territory "Laos"
-+revision "1.0"
-+date "2003-4-1"
-+%
-+category "lo_LA:2000";LC_IDENTIFICATION
-+category "lo_LA:2000";LC_CTYPE
-+category "lo_LA:2000";LC_COLLATE
-+category "lo_LA:2000";LC_TIME
-+category "lo_LA:2000";LC_NUMERIC
-+category "lo_LA:2000";LC_MONETARY
-+category "lo_LA:2000";LC_MESSAGES
-+category "lo_LA:2000";LC_PAPER
-+category "lo_LA:2000";LC_NAME
-+category "lo_LA:2000";LC_ADDRESS
-+category "lo_LA:2000";LC_TELEPHONE
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+copy "i18n"
-+translit_start
-+include "translit_combining";""
-+translit_end
-+END LC_CTYPE
-+
-+LC_COLLATE
-+
-+%
-+
-+collating-element <ko-e> from "<U0EC0><U0E81>"
-+collating-element <ko-ae> from "<U0EC1><U0E81>"
-+collating-element <ko-o> from "<U0EC2><U0E81>"
-+collating-element <ko-ai-maimuan> from "<U0EC3><U0E81>"
-+collating-element <ko-ai-maimalai> from "<U0EC4><U0E81>"
-+
-+collating-element <kho-sung-e> from "<U0EC0><U0E82>"
-+collating-element <kho-sung-ae> from "<U0EC1><U0E82>"
-+collating-element <kho-sung-o> from "<U0EC2><U0E82>"
-+collating-element <kho-sung-ai-maimuan> from "<U0EC3><U0E82>"
-+collating-element <kho-sung-ai-maimalai> from "<U0EC4><U0E82>"
-+
-+collating-element <kho-tam-e> from "<U0EC0><U0E84>"
-+collating-element <kho-tam-ae> from "<U0EC1><U0E84>"
-+collating-element <kho-tam-o> from "<U0EC2><U0E84>"
-+collating-element <kho-tam-ai-maimuan> from "<U0EC3><U0E84>"
-+collating-element <kho-tam-ai-maimalai> from "<U0EC4><U0E84>"
-+
-+collating-element <ngo-e> from "<U0EC0><U0E87>"
-+collating-element <ngo-ae> from "<U0EC1><U0E87>"
-+collating-element <ngo-o> from "<U0EC2><U0E87>"
-+collating-element <ngo-ai-maimuan> from "<U0EC3><U0E87>"
-+collating-element <ngo-ai-maimalai> from "<U0EC4><U0E87>"
-+
-+collating-element <cho-e> from "<U0EC0><U0E88>"
-+collating-element <cho-ae> from "<U0EC1><U0E88>"
-+collating-element <cho-o> from "<U0EC2><U0E88>"
-+collating-element <cho-ai-maimuan> from "<U0EC3><U0E88>"
-+collating-element <cho-ai-maimalai> from "<U0EC4><U0E88>"
-+
-+collating-element <xo-e> from "<U0EC0><U0E8A>"
-+collating-element <xo-ae> from "<U0EC1><U0E8A>"
-+collating-element <xo-o> from "<U0EC2><U0E8A>"
-+collating-element <xo-ai-maimuan> from "<U0EC3><U0E8A>"
-+collating-element <xo-ai-maimalai> from "<U0EC4><U0E8A>"
-+
-+collating-element <nyo-e> from "<U0EC0><U0E8D>"
-+collating-element <nyo-ae> from "<U0EC1><U0E8D>"
-+collating-element <nyo-o> from "<U0EC2><U0E8D>"
-+collating-element <nyo-ai-maimuan> from "<U0EC3><U0E8D>"
-+collating-element <nyo-ai-maimalai> from "<U0EC4><U0E8D>"
-+
-+collating-element <do-e> from "<U0EC0><U0E94>"
-+collating-element <do-ae> from "<U0EC1><U0E94>"
-+collating-element <do-o> from "<U0EC2><U0E94>"
-+collating-element <do-ai-maimuan> from "<U0EC3><U0E94>"
-+collating-element <do-ai-maimalai> from "<U0EC4><U0E94>"
-+
-+collating-element <to-e> from "<U0EC0><U0E95>"
-+collating-element <to-ae> from "<U0EC1><U0E95>"
-+collating-element <to-o> from "<U0EC2><U0E95>"
-+collating-element <to-ai-maimuan> from "<U0EC3><U0E95>"
-+collating-element <to-ai-maimalai> from "<U0EC4><U0E95>"
-+
-+collating-element <tho-sung-e> from "<U0EC0><U0E96>"
-+collating-element <tho-sung-ae> from "<U0EC1><U0E96>"
-+collating-element <tho-sung-o> from "<U0EC2><U0E96>"
-+collating-element <tho-sung-ai-maimuan> from "<U0EC3><U0E96>"
-+collating-element <tho-sung-ai-maimalai> from "<U0EC4><U0E96>"
-+
-+collating-element <tho-tam-e> from "<U0EC0><U0E97>"
-+collating-element <tho-tam-ae> from "<U0EC1><U0E97>"
-+collating-element <tho-tam-o> from "<U0EC2><U0E97>"
-+collating-element <tho-tam-ai-maimuan> from "<U0EC3><U0E97>"
-+collating-element <tho-tam-ai-maimalai> from "<U0EC4><U0E97>"
-+
-+collating-element <no-e> from "<U0EC0><U0E99>"
-+collating-element <no-ae> from "<U0EC1><U0E99>"
-+collating-element <no-o> from "<U0EC2><U0E99>"
-+collating-element <no-ai-maimuan> from "<U0EC3><U0E99>"
-+collating-element <no-ai-maimalai> from "<U0EC4><U0E99>"
-+
-+collating-element <bo-e> from "<U0EC0><U0E9A>"
-+collating-element <bo-ae> from "<U0EC1><U0E9A>"
-+collating-element <bo-o> from "<U0EC2><U0E9A>"
-+collating-element <bo-ai-maimuan> from "<U0EC3><U0E9A>"
-+collating-element <bo-ai-maimalai> from "<U0EC4><U0E9A>"
-+
-+collating-element <po-e> from "<U0EC0><U0E9B>"
-+collating-element <po-ae> from "<U0EC1><U0E9B>"
-+collating-element <po-o> from "<U0EC2><U0E9B>"
-+collating-element <po-ai-maimuan> from "<U0EC3><U0E9B>"
-+collating-element <po-ai-maimalai> from "<U0EC4><U0E9B>"
-+
-+collating-element <pho-sung-e> from "<U0EC0><U0E9C>"
-+collating-element <pho-sung-ae> from "<U0EC1><U0E9C>"
-+collating-element <pho-sung-o> from "<U0EC2><U0E9C>"
-+collating-element <pho-sung-ai-maimuan> from "<U0EC3><U0E9C>"
-+collating-element <pho-sung-ai-maimalai> from "<U0EC4><U0E9C>"
-+
-+collating-element <fo-tam-e> from "<U0EC0><U0E9D>"
-+collating-element <fo-tam-ae> from "<U0EC1><U0E9D>"
-+collating-element <fo-tam-o> from "<U0EC2><U0E9D>"
-+collating-element <fo-tam-ai-maimuan> from "<U0EC3><U0E9D>"
-+collating-element <fo-tam-ai-maimalai> from "<U0EC4><U0E9D>"
-+
-+collating-element <pho-tam-e> from "<U0EC0><U0E9E>"
-+collating-element <pho-tam-ae> from "<U0EC1><U0E9E>"
-+collating-element <pho-tam-o> from "<U0EC2><U0E9E>"
-+collating-element <pho-tam-ai-maimuan> from "<U0EC3><U0E9E>"
-+collating-element <pho-tam-ai-maimalai> from "<U0EC4><U0E9E>"
-+
-+collating-element <fo-sung-e> from "<U0EC0><U0E9F>"
-+collating-element <fo-sung-ae> from "<U0EC1><U0E9F>"
-+collating-element <fo-sung-o> from "<U0EC2><U0E9F>"
-+collating-element <fo-sung-ai-maimuan> from "<U0EC3><U0E9F>"
-+collating-element <fo-sung-ai-maimalai> from "<U0EC4><U0E9F>"
-+
-+collating-element <mo-e> from "<U0EC0><U0EA1>"
-+collating-element <mo-ae> from "<U0EC1><U0EA1>"
-+collating-element <mo-o> from "<U0EC2><U0EA1>"
-+collating-element <mo-ai-maimuan> from "<U0EC3><U0EA1>"
-+collating-element <mo-ai-maimalai> from "<U0EC4><U0EA1>"
-+
-+collating-element <yo-e> from "<U0EC0><U0EA2>"
-+collating-element <yo-ae> from "<U0EC1><U0EA2>"
-+collating-element <yo-o> from "<U0EC2><U0EA2>"
-+collating-element <yo-ai-maimuan> from "<U0EC3><U0EA2>"
-+collating-element <yo-ai-maimalai> from "<U0EC4><U0EA2>"
-+
-+collating-element <ro-e> from "<U0EC0><U0EA3>"
-+collating-element <ro-ae> from "<U0EC1><U0EA3>"
-+collating-element <ro-o> from "<U0EC2><U0EA3>"
-+collating-element <ro-ai-maimuan> from "<U0EC3><U0EA3>"
-+collating-element <ro-ai-maimalai> from "<U0EC4><U0EA3>"
-+
-+collating-element <lo-e> from "<U0EC0><U0EA5>"
-+collating-element <lo-ae> from "<U0EC1><U0EA5>"
-+collating-element <lo-o> from "<U0EC2><U0EA5>"
-+collating-element <lo-ai-maimuan> from "<U0EC3><U0EA5>"
-+collating-element <lo-ai-maimalai> from "<U0EC4><U0EA5>"
-+
-+collating-element <wo-e> from "<U0EC0><U0EA7>"
-+collating-element <wo-ae> from "<U0EC1><U0EA7>"
-+collating-element <wo-o> from "<U0EC2><U0EA7>"
-+collating-element <wo-ai-maimuan> from "<U0EC3><U0EA7>"
-+collating-element <wo-ai-maimalai> from "<U0EC4><U0EA7>"
-+
-+collating-element <so-e> from "<U0EC0><U0EAA>"
-+collating-element <so-ae> from "<U0EC1><U0EAA>"
-+collating-element <so-o> from "<U0EC2><U0EAA>"
-+collating-element <so-ai-maimuan> from "<U0EC3><U0EAA>"
-+collating-element <so-ai-maimalai> from "<U0EC4><U0EAA>"
-+
-+collating-element <ho-e> from "<U0EC0><U0EAB>"
-+collating-element <ho-ae> from "<U0EC1><U0EAB>"
-+collating-element <ho-o> from "<U0EC2><U0EAB>"
-+collating-element <ho-ai-maimuan> from "<U0EC3><U0EAB>"
-+collating-element <ho-ai-maimalai> from "<U0EC4><U0EAB>"
-+
-+collating-element <o-ae> from "<U0EC1><U0EAD>"
-+collating-element <o-o> from "<U0EC2><U0EAD>"
-+collating-element <o-ai-maimuan> from "<U0EC3><U0EAD>"
-+collating-element <o-ai-maimalai> from "<U0EC4><U0EAD>"
-+
-+collating-element <hor-e> from "<U0EC0><U0EAE>"
-+collating-element <hor-ae> from "<U0EC1><U0EAE>"
-+collating-element <hor-o> from "<U0EC2><U0EAE>"
-+collating-element <hor-ai-maimuan> from "<U0EC3><U0EAE>"
-+collating-element <hor-ai-maimalai> from "<U0EC4><U0EAE>"
-+
-+collating-element <nhor-e> from "<U0EC0><U0EDC>"
-+collating-element <nhor-ae> from "<U0EC1><U0EDC>"
-+collating-element <nhor-o> from "<U0EC2><U0EDC>"
-+collating-element <nhor-ai-maimuan> from "<U0EC3><U0EDC>"
-+collating-element <nhor-ai-maimalai> from "<U0EC4><U0EDC>"
-+
-+collating-element <mhor-e> from "<U0EC0><U0EDD>"
-+collating-element <mhor-ae> from "<U0EC1><U0EDD>"
-+collating-element <mhor-o> from "<U0EC2><U0EDD>"
-+collating-element <mhor-ai-maimuan> from "<U0EC3><U0EDD>"
-+collating-element <mhor-ai-maimalai> from "<U0EC4><U0EDD>"
-+
-+
-+collating-symbol <BLANK>
-+collating-symbol <LaoI>
-+collating-symbol <CAP>
-+collating-symbol <MIN>
-+collating-symbol <EXTRA>
-+
-+order_start forward;forward;forward;forward
-+
-+% definitions of extra collating symbols
-+<BLANK>
-+<LaoI>
-+<CAP>
-+<MIN>
-+<EXTRA>
-+
-+UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE
-+
-+% punctuation marks, ordered after ISO/IEC 14651
-+<U0020> IGNORE;IGNORE;<U0020>;IGNORE % SPACE
-+<U005F> IGNORE;IGNORE;<U005F>;IGNORE % LOW LINE
-+<U002D> IGNORE;IGNORE;<U002D>;IGNORE % HYPHEN-MINUS
-+<U002C> IGNORE;IGNORE;<U002C>;IGNORE % COMMA
-+<U003B> IGNORE;IGNORE;<U003B>;IGNORE % SEMICOLON
-+<U003A> IGNORE;IGNORE;<U003A>;IGNORE % COLON
-+<U0021> IGNORE;IGNORE;<U0021>;IGNORE % EXCLAMATION MARK
-+<U003F> IGNORE;IGNORE;<U003F>;IGNORE % QUESTION MARK
-+<U002F> IGNORE;IGNORE;<U002F>;IGNORE % SOLIDUS
-+<U002E> IGNORE;IGNORE;<U002E>;IGNORE % FULL STOP
-+<U0EAF> IGNORE;IGNORE;<U0EAF>;IGNORE % Lao CHARACTER Lao Ellipse
-+<U0060> IGNORE;IGNORE;<U0060>;IGNORE % GRAVE ACCENT
-+<U005E> IGNORE;IGNORE;<U005E>;IGNORE % CIRCUMFLEX
-+<U007E> IGNORE;IGNORE;<U007E>;IGNORE % TILDE
-+<U0027> IGNORE;IGNORE;<U0027>;IGNORE % APOSTROPHE
-+<U0022> IGNORE;IGNORE;<U0022>;IGNORE % QUOTATION MARK
-+<U0028> IGNORE;IGNORE;<U0028>;IGNORE % LEFT PAREN.
-+<U005B> IGNORE;IGNORE;<U005B>;IGNORE % LT BRACKET
-+<U007B> IGNORE;IGNORE;<U007B>;IGNORE % LEFT CURLY BRACKET
-+<U007D> IGNORE;IGNORE;<U007D>;IGNORE % RIGHT CURLY BRACKET
-+<U005D> IGNORE;IGNORE;<U005D>;IGNORE % RT BRACKET
-+<U0029> IGNORE;IGNORE;<U0029>;IGNORE % RIGHT PAREN.
-+<U0040> IGNORE;IGNORE;<U0040>;IGNORE % COMMERCIAL AT
-+<U20AD> IGNORE;IGNORE;<U20AD>;IGNORE % Lao CHARACTER SYMBOL KIP
-+<U0024> IGNORE;IGNORE;<U0024>;IGNORE % DOLLAR SIGN
-+<U002A> IGNORE;IGNORE;<U002A>;IGNORE % ASTERISK
-+<U005C> IGNORE;IGNORE;<U005C>;IGNORE % BACK SOLIDUS
-+<U0026> IGNORE;IGNORE;<U0026>;IGNORE % AMPERSAND
-+<U0023> IGNORE;IGNORE;<U0023>;IGNORE % NUMBER SIGN
-+<U0025> IGNORE;IGNORE;<U0025>;IGNORE % PERCENT
-+<U002B> IGNORE;IGNORE;<U002B>;IGNORE % PLUS
-+<U003C> IGNORE;IGNORE;<U003C>;IGNORE % LESS THAN
-+<U003D> IGNORE;IGNORE;<U003D>;IGNORE % EQUAL
-+<U003E> IGNORE;IGNORE;<U003E>;IGNORE % GREATER THAN
-+<U007C> IGNORE;IGNORE;<U007C>;IGNORE % VERTICAL LINE
-+
-+% Lao tone marks and diacritics
-+
-+<U0ECC> IGNORE;<U0ECC>;<BLANK>;<BLANK> % Lao CHARACTER THANTHAKHAT Or Cancellation Mark
-+<U0EC8> IGNORE;<U0EC8>;<BLANK>;<BLANK> % Lao CHARACTER MAI EK
-+<U0EC9> IGNORE;<U0EC9>;<BLANK>;<BLANK> % Lao CHARACTER MAI THO
-+<U0ECA> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI TI
-+<U0ECB> IGNORE;<U0ECB>;<BLANK>;<BLANK> % Lao CHARACTER MAI CHATTAWA
-+<U0EBB> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Kon
-+<U0ECD> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Niggahita
-+<U0EC6> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Ko Lao
-+
-+
-+
-+
-+% Arabic and Lao decimal digits
-+<U0030> <U0030>;<BLANK>;<BLANK>;<BLANK> % DIGIT ZERO
-+<U0ED0> <U0030>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT ZERO
-+<U0031> <U0031>;<BLANK>;<BLANK>;<BLANK> % DIGIT ONE
-+<U0ED1> <U0031>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT ONE
-+<U0032> <U0032>;<BLANK>;<BLANK>;<BLANK> % DIGIT TWO
-+<U0ED2> <U0032>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT TWO
-+<U0033> <U0033>;<BLANK>;<BLANK>;<BLANK> % DIGIT THREE
-+<U0ED3> <U0033>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT THREE
-+<U0034> <U0034>;<BLANK>;<BLANK>;<BLANK> % DIGIT FOUR
-+<U0ED4> <U0034>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT FOUR
-+<U0035> <U0035>;<BLANK>;<BLANK>;<BLANK> % DIGIT FIVE
-+<U0ED5> <U0035>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT FIVE
-+<U0036> <U0036>;<BLANK>;<BLANK>;<BLANK> % DIGIT SIX
-+<U0ED6> <U0036>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT SIX
-+<U0037> <U0037>;<BLANK>;<BLANK>;<BLANK> % DIGIT SEVEN
-+<U0ED7> <U0037>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT SEVEN
-+<U0038> <U0038>;<BLANK>;<BLANK>;<BLANK> % DIGIT EIGHT
-+<U0ED8> <U0038>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT EIGHT
-+<U0039> <U0039>;<BLANK>;<BLANK>;<BLANK> % DIGIT NINE
-+<U0ED9> <U0039>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT NINE
-+
-+% Latin alphabet
-+<U0041> <U0041>;<BLANK>;<BLANK>;<CAP> % A
-+<U0061> <U0041>;<BLANK>;<BLANK>;<MIN> % a
-+<U0042> <U0042>;<BLANK>;<BLANK>;<CAP> % B
-+<U0062> <U0042>;<BLANK>;<BLANK>;<MIN> % b
-+<U0043> <U0043>;<BLANK>;<BLANK>;<CAP> % C
-+<U0063> <U0043>;<BLANK>;<BLANK>;<MIN> % c
-+<U0044> <U0044>;<BLANK>;<BLANK>;<CAP> % D
-+<U0064> <U0044>;<BLANK>;<BLANK>;<MIN> % d
-+<U0045> <U0045>;<BLANK>;<BLANK>;<CAP> % E
-+<U0065> <U0045>;<BLANK>;<BLANK>;<MIN> % e
-+<U0046> <U0046>;<BLANK>;<BLANK>;<CAP> % F
-+<U0066> <U0046>;<BLANK>;<BLANK>;<MIN> % f
-+<U0047> <U0047>;<BLANK>;<BLANK>;<CAP> % G
-+<U0067> <U0047>;<BLANK>;<BLANK>;<MIN> % g
-+<U0048> <U0048>;<BLANK>;<BLANK>;<CAP> % H
-+<U0068> <U0048>;<BLANK>;<BLANK>;<MIN> % h
-+<U0049> <U0049>;<BLANK>;<BLANK>;<CAP> % I
-+<U0069> <U0049>;<BLANK>;<BLANK>;<MIN> % i
-+<U004A> <U004A>;<BLANK>;<BLANK>;<CAP> % J
-+<U006A> <U004A>;<BLANK>;<BLANK>;<MIN> % j
-+<U004B> <U004B>;<BLANK>;<BLANK>;<CAP> % K
-+<U006B> <U004B>;<BLANK>;<BLANK>;<MIN> % k
-+<U004C> <U004C>;<BLANK>;<BLANK>;<CAP> % L
-+<U006C> <U004C>;<BLANK>;<BLANK>;<MIN> % l
-+<U004D> <U004D>;<BLANK>;<BLANK>;<CAP> % M
-+<U006D> <U004D>;<BLANK>;<BLANK>;<MIN> % m
-+<U004E> <U004E>;<BLANK>;<BLANK>;<CAP> % N
-+<U006E> <U004E>;<BLANK>;<BLANK>;<MIN> % n
-+<U004F> <U004F>;<BLANK>;<BLANK>;<CAP> % O
-+<U006F> <U004F>;<BLANK>;<BLANK>;<MIN> % o
-+<U0050> <U0050>;<BLANK>;<BLANK>;<CAP> % P
-+<U0070> <U0050>;<BLANK>;<BLANK>;<MIN> % p
-+<U0051> <U0051>;<BLANK>;<BLANK>;<CAP> % Q
-+<U0071> <U0051>;<BLANK>;<BLANK>;<MIN> % q
-+<U0052> <U0052>;<BLANK>;<BLANK>;<CAP> % R
-+<U0072> <U0052>;<BLANK>;<BLANK>;<MIN> % r
-+<U0053> <U0053>;<BLANK>;<BLANK>;<CAP> % S
-+<U0073> <U0053>;<BLANK>;<BLANK>;<MIN> % s
-+<U0054> <U0054>;<BLANK>;<BLANK>;<CAP> % T
-+<U0074> <U0054>;<BLANK>;<BLANK>;<MIN> % t
-+<U0055> <U0055>;<BLANK>;<BLANK>;<CAP> % U
-+<U0075> <U0055>;<BLANK>;<BLANK>;<MIN> % u
-+<U0056> <U0056>;<BLANK>;<BLANK>;<CAP> % V
-+<U0076> <U0056>;<BLANK>;<BLANK>;<MIN> % v
-+<U0057> <U0057>;<BLANK>;<BLANK>;<CAP> % W
-+<U0077> <U0057>;<BLANK>;<BLANK>;<MIN> % w
-+<U0058> <U0058>;<BLANK>;<BLANK>;<CAP> % X
-+<U0078> <U0058>;<BLANK>;<BLANK>;<MIN> % x
-+<U0059> <U0059>;<BLANK>;<BLANK>;<CAP> % Y
-+<U0079> <U0059>;<BLANK>;<BLANK>;<MIN> % y
-+<U005A> <U005A>;<BLANK>;<BLANK>;<CAP> % Z
-+<U007A> <U005A>;<BLANK>;<BLANK>;<MIN> % z
-+
-+%
-+% Lao consonants, with leading vowels rearrangement
-+%
-+<U0E81> <U0E81>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KO
-+<ko-e> "<U0E81><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<ko-ae> "<U0E81><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<ko-o> "<U0E81><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<ko-ai-maimuan> "<U0E81><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<ko-ai-maimalai> "<U0E81><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E82> <U0E82>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KHO sung
-+<kho-sung-e> "<U0E82><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<kho-sung-ae> "<U0E82><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<kho-sung-o> "<U0E82><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<kho-sung-ai-maimuan> "<U0E82><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<kho-sung-ai-maimalai> "<U0E82><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E84> <U0E84>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KHO tam
-+<kho-tam-e> "<U0E84><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<kho-tam-ae> "<U0E84><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<kho-tam-o> "<U0E84><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<kho-tam-ai-maimuan> "<U0E84><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<kho-tam-ai-maimalai> "<U0E84><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E87> <U0E87>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NGO
-+<ngo-e> "<U0E87><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<ngo-ae> "<U0E87><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<ngo-o> "<U0E87><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<ngo-ai-maimuan> "<U0E87><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<ngo-ai-maimalai> "<U0E87><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E88> <U0E88>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER CHO
-+<cho-e> "<U0E88><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<cho-ae> "<U0E88><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<cho-o> "<U0E88><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<cho-ai-maimuan> "<U0E88><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<cho-ai-maimalai> "<U0E88><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E8A> <U0E8A>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SO
-+<xo-e> "<U0E8A><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<xo-ae> "<U0E8A><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<xo-o> "<U0E8A><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<xo-ai-maimuan> "<U0E8A><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<xo-ai-maimalai> "<U0E8A><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E8D> <U0E8D>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Nyo
-+<nyo-e> "<U0E8D><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<nyo-ae> "<U0E8D><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<nyo-o> "<U0E8D><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<nyo-ai-maimuan> "<U0E8D><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<nyo-ai-maimalai> "<U0E8D><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E94> <U0E94>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER DO
-+<do-e> "<U0E94><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<do-ae> "<U0E94><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<do-o> "<U0E94><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<do-ai-maimuan> "<U0E94><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<do-ai-maimalai> "<U0E94><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E95> <U0E95>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER TO
-+<to-e> "<U0E95><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<to-ae> "<U0E95><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<to-o> "<U0E95><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<to-ai-maimuan> "<U0E95><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<to-ai-maimalai> "<U0E95><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E96> <U0E96>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER THO Sung
-+<tho-sung-e> "<U0E96><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<tho-sung-ae> "<U0E96><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<tho-sung-o> "<U0E96><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<tho-sung-ai-maimuan> "<U0E96><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<tho-sung-ai-maimalai> "<U0E96><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E97> <U0E97>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER THO Tam
-+<tho-tam-e> "<U0E97><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<tho-tam-ae> "<U0E97><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<tho-tam-o> "<U0E97><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<tho-tam-ai-maimuan> "<U0E97><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<tho-tam-ai-maimalai> "<U0E97><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E99> <U0E99>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NO
-+<no-e> "<U0E99><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<no-ae> "<U0E99><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<no-o> "<U0E99><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<no-ai-maimuan> "<U0E99><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<no-ai-maimalai> "<U0E99><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9A> <U0E9A>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER BO
-+<bo-e> "<U0E9A><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<bo-ae> "<U0E9A><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<bo-o> "<U0E9A><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<bo-ai-maimuan> "<U0E9A><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<bo-ai-maimalai> "<U0E9A><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9B> <U0E9B>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER PO
-+<po-e> "<U0E9B><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<po-ae> "<U0E9B><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<po-o> "<U0E9B><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<po-ai-maimuan> "<U0E9B><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<po-ai-maimalai> "<U0E9B><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9C> <U0E9C>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER PHO sUNG
-+<pho-sung-e> "<U0E9C><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<pho-sung-ae> "<U0E9C><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<pho-sung-o> "<U0E9C><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<pho-sung-ai-maimuan> "<U0E9C><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<pho-sung-ai-maimalai> "<U0E9C><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9D> <U0E9D>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER FO tam
-+<fo-tam-e> "<U0E9D><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<fo-tam-ae> "<U0E9D><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<fo-tam-o> "<U0E9D><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<fo-tam-ai-maimuan> "<U0E9D><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<fo-tam-ai-maimalai> "<U0E9D><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9E> <U0E9E>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER pho tam
-+<pho-tam-e> "<U0E9E><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<pho-tam-ae> "<U0E9E><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<pho-tam-o> "<U0E9E><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<pho-tam-ai-maimuan> "<U0E9E><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<pho-tam-ai-maimalai> "<U0E9E><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0E9F> <U0E9F>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER fo sung
-+<fo-sung-e> "<U0E9F><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<fo-sung-ae> "<U0E9F><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<fo-sung-o> "<U0E9F><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<fo-sung-ai-maimuan> "<U0E9F><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<fo-sung-ai-maimalai> "<U0E9F><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EA1> <U0EA1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER MO
-+<mo-e> "<U0EA1><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<mo-ae> "<U0EA1><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<mo-o> "<U0EA1><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<mo-ai-maimuan> "<U0EA1><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<mo-ai-maimalai> "<U0EA1><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EA2> <U0EA2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER YO
-+<yo-e> "<U0EA2><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<yo-ae> "<U0EA2><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<yo-o> "<U0EA2><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<yo-ai-maimuan> "<U0EA2><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<yo-ai-maimalai> "<U0EA2><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EA3> <U0EA3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER RO
-+<ro-e> "<U0EA3><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<ro-ae> "<U0EA3><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<ro-o> "<U0EA3><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<ro-ai-maimuan> "<U0EA3><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<ro-ai-maimalai> "<U0EA3><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EA5> <U0EA5>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER LO
-+<lo-e> "<U0EA5><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<lo-ae> "<U0EA5><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<lo-o> "<U0EA5><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<lo-ai-maimuan> "<U0EA5><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<lo-ai-maimalai> "<U0EA5><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EA7> <U0EA7>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER WO
-+<wo-e> "<U0EA7><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<wo-ae> "<U0EA7><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<wo-o> "<U0EA7><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<wo-ai-maimuan> "<U0EA7><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<wo-ai-maimalai> "<U0EA7><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EAA> <U0EAA>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SO
-+<so-e> "<U0EAA><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<so-ae> "<U0EAA><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<so-o> "<U0EAA><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<so-ai-maimuan> "<U0EAA><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<so-ai-maimalai> "<U0EAA><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EAB> <U0EAB>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HO
-+<ho-e> "<U0EAB><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<ho-ae> "<U0EAB><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<ho-o> "<U0EAB><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<ho-ai-maimuan> "<U0EAB><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<ho-ai-maimalai> "<U0EAB><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EAD> <U0EAD>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER O
-+<o-e> "<U0EAD><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<o-ae> "<U0EAD><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<o-o> "<U0EAD><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<o-ai-maimuan> "<U0EAD><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<o-ai-maimalai> "<U0EAD><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+<U0EAE> <U0EAE>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HOr
-+<hor-e> "<U0EAE><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<hor-ae> "<U0EAE><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<hor-o> "<U0EAE><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<hor-ai-maimuan> "<U0EAE><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<hor-ai-maimalai> "<U0EAE><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+
-+<U0EDC> <U0EDC>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NHOr
-+<nhor-e> "<U0EDC><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<nhor-ae> "<U0EDC><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<nhor-o> "<U0EDC><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<nhor-ai-maimuan> "<U0EDC><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<nhor-ai-maimalai> "<U0EDC><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+
-+<U0EDD> <U0EDC>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HHOr
-+<mhor-e> "<U0EDD><U0EC0>";<BLANK>;<BLANK>;<BLANK>
-+<mor-ae> "<U0EDD><U0EC1>";<BLANK>;<BLANK>;<BLANK>
-+<mor-o> "<U0EDD><U0EC2>";<BLANK>;<BLANK>;<BLANK>
-+<mor-ai-maimuan> "<U0EDD><U0EC3>";<BLANK>;<BLANK>;<BLANK>
-+<mor-ai-maimalai> "<U0EDD><U0EC4>";<BLANK>;<BLANK>;<BLANK>
-+
-+
-+% order of Lao vowels
-+<U0EB0> <U0EB0>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SAlA A
-+<U0EB1> <U0EB1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER MAI HAN-AKAT
-+<U0EB2> <U0EB2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SAlA AA
-+<U0EB3> <U0EB3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AM
-+<U0EB4> <U0EB4>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala I
-+<U0EB5> <U0EB5>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala II
-+<U0EB6> <U0EB6>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UE
-+<U0EB7> <U0EB7>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UEE
-+<U0EB8> <U0EB8>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala U
-+<U0EB9> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UU
-+<U0EBC> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala Lo
-+<U0EBD> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala Oy
-+<U0EC0> <U0EC0>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala E
-+<U0EC1> <U0EC1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AE
-+<U0EC2> <U0EC2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala O
-+<U0EC3> <U0EC3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AI MAIMUAN
-+<U0EC4> <U0EC4>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AI MAIMALAI
-+
-+order_end
-+
-+END LC_COLLATE
-+
-+LC_MONETARY
-+
-+int_curr_symbol "<U004C><U0041><U004B><U0020>"
-+
-+% monetary unit: Kip
-+currency_symbol "<U20AD>"
-+mon_decimal_point "<U002E>"
-+mon_thousands_sep "<U002C>"
-+mon_grouping 3;3
-+positive_sign ""
-+negative_sign "<U002D>"
-+int_frac_digits 2
-+frac_digits 2
-+p_cs_precedes 1
-+p_sep_by_space 2
-+n_cs_precedes 1
-+n_sep_by_space 2
-+p_sign_posn 4
-+n_sign_posn 4
-+END LC_MONETARY
-+
-+
-+LC_NUMERIC
-+
-+decimal_point "<U002E>"
-+thousands_sep "<U002C>"
-+grouping 3
-+
-+END LC_NUMERIC
-+
-+LC_TIME
-+
-+abday "<U0EAD><U0EB2><U002E>";"<U0E88><U002E>";"<U0E84><U002E>";/
-+ "<U0E9E><U002E>";"<U0E9E><U0EAB><U002E>";"<U0EAA><U002E>";/
-+ "<U0EAA><U002E>"
-+day "<U0EAD><U0EB2><U0E97><U0EB4><U0E94>";/
-+ "<U0E88><U0EB1><U0E99>";/
-+ "<U0EAD><U0EB1><U0E87><U0E84><U0EB2><U0E99>";/
-+ "<U0E9E><U0EB8><U0E94>";/
-+ "<U0E9E><U0EB0><U0EAB><U0EB1><U0E94>";/
-+ "<U0EAA><U0EB8><U0E81>";/
-+ "<U0EC0><U0EAA><U0EBB><U0EB2>"
-+abmon "<U0EA1><U002E><U0E81><U002E>";/
-+ "<U0E81><U002E><U0E9E><U002E>";/
-+ "<U0EA1><U002E><U0E99><U002E>";/
-+ "<U0EA1><U002E><U0EAA><U002E>";/
-+ "<U0E9E><U002E><U0E9E><U002E>";/
-+ "<U0EA1><U0EB4><U002E><U0E96><U002E>";/
-+ "<U0E81><U002E><U0EA5><U002E>";/
-+ "<U0EAA><U002E><U0EAB><U002E>";/
-+ "<U0E81><U002E><U0E8D><U002E>";/
-+ "<U0E95><U002E><U0EA5><U002E>";/
-+ "<U0E9E><U002E><U0E88><U002E>";/
-+ "<U0E97><U002E><U0EA7><U002E>"
-+mon "<U0EA1><U0EB1><U0E87><U0E81><U0EAD><U0E99>";/
-+ "<U0E81><U0EB8><U0EA1><U0E9F><U0EB2>";/
-+ "<U0EA1><U0EB5><U0E99><U0EB2>";/
-+ "<U0EC0><U0EA1><U0EAA><U0EB2>";/
-+ "<U0E9E><U0EB6><U0E94><U0EAA><U0EB0><U0E9E><U0EB2>";/
-+ "<U0EA1><U0EB4><U0E96><U0EB8><U0E99><U0EB2>";/
-+ "<U0E81><U0ECD><U0EA5><U0EB0><U0E81><U0EBB><U0E94>";/
-+ "<U0EAA><U0EB4><U0E87><U0EAB><U0EB2>";/
-+ "<U0E81><U0EB1><U0E99><U0E8D><U0EB2>";/
-+ "<U0E95><U0EB8><U0EA5><U0EB2>";/
-+ "<U0E9E><U0EB0><U0E88><U0EB4><U0E81>";/
-+ "<U0E97><U0EB1><U0E99><U0EA7><U0EB2>"
-+% Appropriate date & time representation "%a %e %b %Ey, %H:%M:%S"
-+d_t_fmt "%a<U0020>%e<U0020>%b<U0020>%Ey<U002C><U0020>%H<U003A>%M<U003A>%S"
-+% Appropriate date representation "%d/%m/%Ey"
-+d_fmt "%d<U002F>%m<U002F>%Ey"
-+% Appropriate time representation "%H:%M:%S"
-+t_fmt "%H<U003A>%M<U003A>%S"
-+% AM/PM signs
-+am_pm "<U0041><U004D>";"<U0050><U004D>"
-+% Appropriate 12-hour clock representation "%I:%M:%S %p"
-+t_fmt_ampm "%I<U003A>%M<U003A>%S<U0020>%p"
-+% Era : Buddhist Era
-+era "+:1:-543<U002F>01<U002F>01:+*:<U0E9E><U002E><U0EAA><U002E>:%EC<U0020>%Ey"
-+era_d_fmt "%e<U0020>%b<U0020>%Ey"
-+era_t_fmt "%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
-+era_d_t_fmt "<U0EA7><U0EB1><U0E99>%A<U0E97><U0EB5><U0EC8><U0020>%e<U0020>%B<U0020>%EC<U0020>%Ey<U002C><U0020>%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
-+% Appropriate date representation (date(1)) "%a %e %b %Ey %H:%M:%S %Z"
-+date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/
-+<U0020><U0025><U0045><U0079><U0020><U0025><U0048><U003A><U0025><U004D>/
-+<U003A><U0025><U0053><U0020><U0025><U005A>"
-+% ICT-7ICT-7
-+timezone "<U0049><U0043><U0054><U002D><U0037><U0049><U0043><U0054><U002d><U0037>"
-+END LC_TIME
-+
-+LC_MESSAGES
-+
-+% yesexpr : begins with "y", "Y", or mo
-+% noexpr : begins with "n", "N", or Bo
-+% yesstr = "men" = Sala ae + Mo + MAI EK + No
-+% nostr = "Bo Men" = Letter Bo +salo Or+ MAI EK + mo+ Ma Ek+ No
-+
-+yesexpr "<U005E><U005B><U0079><U0059><U0EA1><U005D>"
-+noexpr "<U005E><U005B><U006E><U004E><U0E9A><U005D>"
-+yesstr "<U0EC1><U0EA1><U0EC8><U0E99>"
-+nostr "<U0E9A><U0ECD><U0EC8><U0EC1><U0EA1><U0EC8><U0E99>"
-+
-+END LC_MESSAGES
-+
-+LC_PAPER
-+height 297
-+width 210
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
-+<U006C>"
-+tel_dom_fmt "<U0028><U0025><U0041><U0029><U0025><U006C>"
-+int_select "<U0030><U0030><U0031>"
-+int_prefix "<U0038><U0035><U0036>"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+% FIXME
-+measurement 1
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+
-+name_mr "<U0E97>."
-+name_mrs "<U0E99>."
-+END LC_NAME
-+
-+LC_ADDRESS
-+% "%f%N%a%N%d%N%r%t%e%t%b%N%h%t%s%N%T%N%S%N%z%c%N"
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0072><U0025><U0074><U0025><U0065>/
-+<U0025><U0074><U0025><U0062><U0025><U004E><U0025><U0068><U0025><U0074>/
-+<U0025><U0073><U0025><U004E><U0025><U0054><U0025><U004E><U0025><U0053>/
-+<U0025><U004E><U0025><U007A><U0025><U0063><U0025><U004E>"
-+country_name "<U0EA5><U0EB2><U0EA7>"
-+%FIXME
-+%country_post ""
-+country_ab2 "<U004C><U0041>"
-+country_ab3 "<U004C><U0041><U004F>"
-+country_num 418
-+country_car "<U004C><U0041><U004F>"
-+%FIXME
-+%country_isbn ""
-+lang_name "<U0EA5><U0EB2><U0EA7>"
-+lang_ab "<U006C><U006F>"
-+lang_term "<U006c><U0061><U006F>"
-+lang_lib "<U006C><U0061><U006F>"
-+END LC_ADDRESS
---- glibc-2.3.2/localedata/locales/mn_MN 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/mn_MN 2003-04-24 20:05:58.000000000 -0400
-@@ -0,0 +1,196 @@
-+comment_char %
-+escape_char /
-+% Mongolian language (cyrillic) locale for Mongolia
-+% Sanlig Badral <badral@chinggis.com>
-+% Revision: 0.9 (2003-2-27)
-+% Charsets: UTF-8
-+% Distribution and use is free, also
-+% for commercial purposes.
-+
-+LC_IDENTIFICATION
-+title "Mongolian locale for Mongolia"
-+source "OPENMN"
-+address ""
-+contact ""
-+email "bug-glibc@gnu.org"
-+tel ""
-+fax ""
-+language "Mongolian"
-+territory "Mongolia"
-+revision "0.9"
-+date "2003-02-27"
-+
-+category "mn_MN:2000";LC_IDENTIFICATION
-+category "mn_MN:2000";LC_CTYPE
-+category "mn_MN:2000";LC_COLLATE
-+category "mn_MN:2000";LC_TIME
-+category "mn_MN:2000";LC_NUMERIC
-+category "mn_MN:2000";LC_MONETARY
-+category "mn_MN:2000";LC_MESSAGES
-+category "mn_MN:2000";LC_PAPER
-+category "mn_MN:2000";LC_NAME
-+category "mn_MN:2000";LC_ADDRESS
-+category "mn_MN:2000";LC_TELEPHONE
-+
-+END LC_IDENTIFICATION
-+
-+LC_COLLATE
-+copy "iso14651_t1"
-+
-+% iso14651_t1 is missing Mongolian ue(straight u), oe(barred o)
-+% like russian, but with <o-=> (<barred-o>) after <o=> and
-+% <u'=>(straight u) after <u=>
-+
-+collating-symbol <o-=>
-+collating-symbol <u'=>
-+
-+reorder-after <CYR-O>
-+<o-=>
-+reorder-after <CYR-OUBRE>
-+<u'=>
-+
-+reorder-after <U043E>
-+<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
-+reorder-after <U041E>
-+<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
-+
-+reorder-after <U0443>
-+<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
-+reorder-after <U0423>
-+<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
-+
-+reorder-end
-+END LC_COLLATE
-+
-+LC_CTYPE
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_MONETARY
-+int_curr_symbol "<U004D><U004E><U0054><U0020>"
-+currency_symbol "<U20AE>"
-+mon_decimal_point "<U002E>"
-+mon_thousands_sep "<U0020>"
-+mon_grouping 3;3
-+positive_sign ""
-+negative_sign "<U002D>"
-+int_frac_digits 2
-+frac_digits 2
-+p_cs_precedes 0
-+p_sep_by_space 1
-+n_cs_precedes 0
-+n_sep_by_space 1
-+p_sign_posn 1
-+n_sign_posn 1
-+
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+decimal_point "<U002C>"
-+thousands_sep "<U002E>"
-+grouping 3;3
-+END LC_NUMERIC
-+
-+LC_TIME
-+% Abbreviated weekday names (%a)
-+abday "<U041D><U044F>";"<U0414><U0430>";/
-+ "<U041C><U044F>";"<U041B><U0445>";/
-+ "<U041F><U04AF>";"<U0411><U0430>";/
-+ "<U0411><U044F>"
-+% Full weekday names (%A)
-+day "<U041D><U044F><U043C>";/
-+ "<U0414><U0430><U0432><U0430><U0430>";/
-+ "<U041C><U044F><U0433><U043C><U0430><U0440>";/
-+ "<U041B><U0445><U0430><U0433><U0432><U0430>";/
-+ "<U041F><U04AF><U0440><U044D><U0432>";/
-+ "<U0411><U0430><U0430><U0441><U0430><U043D>";/
-+ "<U0411><U044F><U043C><U0431><U0430>"
-+% Abbreviated month names (%b)
-+abmon "<U0031><U002D><U0440>";"<U0032><U002D><U0440>";/
-+ "<U0033><U002D><U0440>";"<U0034><U002D><U0440>";/
-+ "<U0035><U002D><U0440>";"<U0036><U002D><U0440>";/
-+ "<U0037><U002D><U0440>";"<U0038><U002D><U0440>";/
-+ "<U0039><U002D><U0440>";"<U0031><U0030><U002D><U0440>";/
-+ "<U0031><U0031><U002D><U0440>";"<U0031><U0032><U002D><U0440>"
-+% Full month names (%B)
-+mon "<U041D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0425><U043E><U0451><U0440><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0413><U0443><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0414><U04E9><U0440><U04E9><U0432><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0422><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0417><U0443><U0440><U0433><U0430><U0430><U0434><U0443><U0433><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0414><U043E><U043B><U043E><U043E><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U041D><U0430><U0439><U043C><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0415><U0441><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0432><U0430><U043D><U043D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0432><U0430><U043D><U0445><U043E><U0451><U0440><U0434><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>"
-+% Appropriate date and time representation
-+% "%a %d %b %Y %T %Z"
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+
-+% Appropriate date representation
-+% "%Y.%m.%d"
-+d_fmt "<U0025><U0059><U002E><U0025><U006D><U002E><U0025><U0064>"
-+% Appropriate time representation
-+% "%T"
-+t_fmt "<U0025><U0054>"
-+% Appropriate 12 h time representation (%r)
-+am_pm "";""
-+t_fmt_ampm ""
-+% Full date and time representation
-+% "%a %b %e %H:%M:%S %Z %Y"
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
-+END LC_TIME
-+
-+LC_MESSAGES
-+yesexpr "<U005E><U005B><U0442><U0422><U0079><U0059><U005D><U002E><U002A>"
-+noexpr "<U005E><U005B><U04AF><U04AE><U006E><U004E><U005D><U002E><U002A>"
-+END LC_MESSAGES
-+
-+% Paper format
-+LC_PAPER
-+height 297
-+width 210
-+END LC_PAPER
-+
-+LC_NAME
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+
-+name_miss "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+name_mr "<U041D><U043E><U0451><U043D>"
-+name_mrs "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+name_ms "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+END LC_NAME
-+
-+LC_ADDRESS
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+
-+country_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061>"
-+country_post "<U004D><U004E>"
-+country_ab2 "<U004D><U004E>"
-+country_ab3 "<U004D><U004E><U0047>"
-+country_num 496
-+country_car "<U004D><U0047><U004C>"
-+country_isbn 99929
-+lang_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061><U006E>"
-+lang_ab "<U006D><U006E>"
-+lang_term "<U006D><U006F><U006E>"
-+lang_lib "<U006D><U006F><U006E>"
-+END LC_ADDRESS
-+
-+LC_TELEPHONE
-+tel_int_fmt "<U0028><U002B><U0025><U0063><U0020><U0025><U0061><U0029><U0020><U0025><U006C>"
-+tel_dom_fmt "<U0028><U0030><U0025><U0061><U0029><U0020><U0025><U006C>"
-+int_select "<U0030><U0030>"
-+int_prefix "<U0039><U0037><U0036>"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+measurement 1
-+END LC_MEASUREMENT
---- glibc-2.3.2/localedata/locales/no_NO 2000-10-26 13:57:17.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/no_NO 2003-08-21 08:37:06.000000000 -0400
-@@ -1056,6 +1056,8 @@
- <U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
- <U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
- <U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
-+<U00D0> <U0044>;<U00D0>;<CAPITAL>;IGNORE %LATIN CAPITAL LETTER ETH (Icelandic)
-+<U00F0> <U0044>;<U00D0>;<SMALL>;IGNORE %LATIN SMALL LETTER ETH (Icelandic)
- <d8>
- <U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
- <U0065> <U0045>;<NONE>;<SMALL>;IGNORE
---- glibc-2.3.2/localedata/locales/se_NO 2001-11-15 20:26:50.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/se_NO 2002-11-16 08:55:43.000000000 -0500
-@@ -1,4 +1,4 @@
--# $Id: se_NO,v 1.1 2001/11/16 01:26:50 drepper Exp $
-+# $Id: se_NO,v 1.10 2001/11/10 01:35:26 boerre Exp $
- comment_char %
- escape_char /
- %
---- glibc-2.3.2/localedata/locales/sr_YU 2002-02-13 19:58:15.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/sr_YU 2003-04-24 20:05:58.000000000 -0400
-@@ -224,7 +224,7 @@
- END LC_MESSAGES
-
- LC_MONETARY
--int_curr_symbol "<U0059><U0055><U004E><U0020>"
-+int_curr_symbol "<U0059><U0055><U004D><U0020>"
- currency_symbol "<U0064><U0069><U006E>"
- mon_decimal_point "<U002C>"
- mon_thousands_sep "<U0020>"
---- glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2000-10-27 15:33:59.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2003-04-24 20:05:58.000000000 -0400
-@@ -61,7 +61,7 @@
- END LC_MESSAGES
-
- LC_MONETARY
--int_curr_symbol "<U0059><U0055><U004E><U0020>"
-+int_curr_symbol "<U0059><U0055><U004D><U0020>"
- currency_symbol "<U0434><U0438><U043D>"
- mon_decimal_point "<U002C>"
- mon_thousands_sep "<U0020>"
---- glibc-2.3.2/localedata/locales/st_ZA 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/st_ZA 2003-05-10 04:39:17.000000000 -0400
-@@ -0,0 +1,254 @@
-+escape_char /
-+comment_char %
-+
-+% ChangeLog
-+% 0.1 (2003-04-21):
-+% - Initial Sotho locale for South Africa
-+% by Zuza Software Foundation
-+
-+LC_IDENTIFICATION
-+title "Sotho locale for South Africa"
-+source "Zuza Software Foundation"
-+address "PO Box 13412, Mowbray, 7705, South Africa"
-+contact "Dwayne Bailey"
-+email "dwayne@translate.org.za"
-+tel "+27 (0)21 448 9265"
-+fax "+27 (0)21 448 9574"
-+language "Sotho"
-+territory "South Africa"
-+revision "0.1"
-+date "2003-04-21"
-+%
-+category "st_ZA:2003";LC_IDENTIFICATION
-+category "st_ZA:2003";LC_CTYPE
-+category "st_ZA:2003";LC_COLLATE
-+category "st_ZA:2003";LC_TIME
-+category "st_ZA:2003";LC_NUMERIC
-+category "st_ZA:2003";LC_MONETARY
-+category "st_ZA:2003";LC_MESSAGES
-+category "st_ZA:2003";LC_PAPER
-+category "st_ZA:2003";LC_NAME
-+category "st_ZA:2003";LC_ADDRESS
-+category "st_ZA:2003";LC_TELEPHONE
-+category "st_ZA:2003";LC_MEASUREMENT
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+% Use the characters described in the charmap file "i18n.tgz"
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_COLLATE
-+% Copy the template from ISO/IEC 14651 i.e.
-+% use the rules there when making ordered lists of words.
-+copy "iso14651_t1"
-+END LC_COLLATE
-+
-+LC_MONETARY
-+copy "en_ZA"
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+copy "en_ZA"
-+END LC_NUMERIC
-+
-+LC_TIME
-+
-+% abday - The abbreviations for the week days:
-+% - Son, Mma, Bed, Rar, Ne, Hla, Moq
-+abday "<U0053><U006F><U006E>";/
-+ "<U004D><U006D><U0061>";/
-+ "<U0042><U0065><U0064>";/
-+ "<U0052><U0061><U0072>";/
-+ "<U004E><U0065>";/
-+ "<U0048><U006C><U0061>";/
-+ "<U004D><U006F><U0071>"
-+
-+% day - The full names of the week days:
-+% - Sontaha, Mmantaha, Labobedi, Laboraru, Labone, Labohlane, Moqebelo
-+day "<U0053><U006F><U006E><U0074><U0061><U0068><U0061>";/
-+ "<U004D><U006D><U0061><U006E><U0074><U0061><U0068><U0061>";/
-+ "<U004C><U0061><U0062><U006F><U0062><U0065><U0064><U0069>";/
-+ "<U004C><U0061><U0062><U006F><U0072><U0061><U0072><U0075>";/
-+ "<U004C><U0061><U0062><U006F><U006E><U0065>";/
-+ "<U004C><U0061><U0062><U006F><U0068><U006C><U0061><U006E><U0065>";/
-+ "<U004D><U006F><U0071><U0065><U0062><U0065><U006C><U006F>"
-+
-+% abmon - The abbreviations for the months
-+% - Phe, Kol, Ube, Mme, Mot, Jan, Upu, Pha, Leo, Mph, Pun, Tsh
-+abmon "<U0050><U0068><U0065>";"<U004B><U006F><U006C>";/
-+ "<U0055><U0062><U0065>";"<U004D><U006D><U0065>";/
-+ "<U004D><U006F><U0074>";"<U004A><U0061><U006E>";/
-+ "<U0055><U0070><U0075>";"<U0050><U0068><U0061>";/
-+ "<U004C><U0065><U006F>";"<U004D><U0070><U0068>";/
-+ "<U0050><U0075><U006E>";"<U0054><U0073><U0068>"
-+
-+% mon - The full names of the months -
-+% - Phesekgong, Hlakola, Hlakubele, Mmese, Motsheanong, Phupjane,
-+% Phupu, Phata, Leotshe, Mphalane, Pundungwane, Tshitwe
-+mon "<U0050><U0068><U0065><U0073><U0065><U006B><U0067><U006F><U006E><U0067>";/
-+ "<U0048><U006C><U0061><U006B><U006F><U006C><U0061>";/
-+ "<U0048><U006C><U0061><U006B><U0075><U0062><U0065><U006C><U0065>";/
-+ "<U004D><U006D><U0065><U0073><U0065>";/
-+ "<U004D><U006F><U0074><U0073><U0068><U0065><U0061><U006E><U006F><U006E><U0067>";/
-+ "<U0050><U0068><U0075><U0070><U006A><U0061><U006E><U0065>";/
-+ "<U0050><U0068><U0075><U0070><U0075>";/
-+ "<U0050><U0068><U0061><U0074><U0061>";/
-+ "<U004C><U0065><U006F><U0074><U0073><U0068><U0065>";/
-+ "<U004D><U0070><U0068><U0061><U006C><U0061><U006E><U0065>";/
-+ "<U0050><U0075><U006E><U0064><U0075><U006E><U0067><U0077><U0061><U006E><U0065>";/
-+ "<U0054><U0073><U0068><U0069><U0074><U0077><U0065>"
-+
-+% Abreviated date and time representation to be referenced by the "%c" field descriptor -
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+%
-+% "%a" (short weekday name),
-+% "%d" (day of month as a decimal number),
-+% "%b" (short month name),
-+% "%Y" (year with century as a decimal number),
-+% "%T" (24-hour clock time in format HH:MM:SS),
-+% "%Z" (Time zone name)
-+
-+% Date representation to be referenced by the "%x" field descriptor -
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
-+% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
-+
-+% Time representation to be referenced by the "%X" field descriptor -
-+t_fmt "<U0025><U0054>"
-+% "%T" (24-hour clock time in format HH:MM:SS)
-+
-+% Define representation of ante meridiem and post meridiem strings -
-+am_pm "";""
-+% The "" mean 'default to "AM" and "PM".
-+
-+% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
-+t_fmt_ampm ""
-+% The "" means that this format is not supported.
-+
-+% Date representation not described in ISO/IEC 14652. Comes out as -
-+% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-+<U0025><U005A><U0020><U0025><U0059>"
-+%
-+% %a - abbreviated weekday name,
-+% %b - abreviated month name,
-+% %e - day of month as a decimal number with leading space (1 to 31),
-+% %H - hour (24-hour clock) as a decimal number (00 to 23),
-+% %M - minute as a decimal number (00 to 59),
-+% %S - seconds as a decimal number (00 to 59),
-+% %Z - time-zone name,
-+% %Y - year with century as a decimal number,e.g. 2001.
-+
-+END LC_TIME
-+
-+LC_MESSAGES
-+% FIXME: Check both of these
-+% The affirmative response -
-+% "^[yY].*"
-+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
-+
-+% The negative response -
-+% "^[nN].*"
-+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
-+END LC_MESSAGES
-+
-+LC_PAPER
-+copy "en_ZA"
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+copy "en_ZA"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+copy "en_ZA"
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+% Format for addressing a person.
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+% "%d%t%g%t%m%t%f"
-+% "Salutation",
-+% "Empty string, or <Space>",
-+% "First given name",
-+% "Empty string, or <Space>",
-+% "Middle names",
-+% "Empty string, or <Space>",
-+% "Clan names"
-+
-+% FIXME - define all the following name_*
-+% General salutation for any sex
-+% name_gen ""
-+
-+% Salutation for unmarried females - ""
-+% name_miss ""
-+
-+% Salutation for males - ""
-+% name_mr ""
-+
-+% Salutation for married females - ""
-+% name_mrs ""
-+
-+% Salutation valid for all females - "" (no term)
-+% name_ms ""
-+
-+END LC_NAME
-+
-+LC_ADDRESS
-+% Country name in Sotho - "Afrika Borwa"
-+country_name "<U0041><U0066><U0072><U0069><U006B><U0061><U0020><U0042><U006F><U0072><U0077><U0061>"
-+
-+% Abbreviated country postal name - "ZA"
-+country_post "<U005A><U0041>"
-+
-+% ISO 3166 two letter country abbreviation - "ZA"
-+country_ab2 "<U005A><U0041>"
-+
-+% FIXME define the following correctly
-+% country_ab3 ""
-+% country_car ""
-+% country_isbn ""
-+% country_num
-+
-+% Language name in Sotho - "Sesotho"
-+lang_name "<U0053><U0065><U0073><U006F><U0074><U0068><U006F>"
-+
-+% FIXME define the following correctly
-+% lang_ab ""
-+% lang_term ""
-+
-+% Representation of postal addresses (minus the addressee's name) in South
-+% Africa. (Ignored for now)
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
-+% "firm name",
-+% "end of line",
-+% "C/O address",
-+% "end of line",
-+% "department name",
-+% "Building name",
-+% "end of line",
-+% "street or block name",
-+% "space",
-+% "house number or designation",
-+% "space",
-+% "floor number",
-+% "space",
-+% "room number, door designation",
-+% "end of line",
-+% "postal code",
-+% "space",
-+% "town, city",
-+% "end of line",
-+% "country designation for the <country_post> keyword",
-+% "end of line
-+%
-+END LC_ADDRESS
-+
---- glibc-2.3.2/localedata/locales/uk_UA 2001-08-03 04:17:35.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/uk_UA 2003-06-03 09:36:24.000000000 -0400
-@@ -4,7 +4,7 @@
- % Ukrainian Language Locale for Ukraine
- % Source: RFC 2319
- % Contact: Denis V. Dmitrienko
--% Email: denis@null.net
-+% Email: denis@denix.org
- % Language: uk
- % Territory: UA
- % Revision: 1.2
-@@ -14,6 +14,8 @@
- % Charset: KOI8-U
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% Some collate fixes by Valentyn Solomko vesna@slovnyk.org
-
- LC_IDENTIFICATION
- title "Ukrainian locale for Ukraine"
-@@ -25,8 +27,8 @@
- fax ""
- language "Ukrainian"
- territory "Ukraine"
--revision "1.0"
--date "2000-06-29"
-+revision "1.3"
-+date "2003-01-31"
- %
- category "uk_UA:2000";LC_IDENTIFICATION
- category "uk_UA:2000";LC_CTYPE
-@@ -47,19 +49,30 @@
- END LC_CTYPE
-
- LC_COLLATE
-+
- copy "iso14651_t1"
-
- % iso14651_t1 is missing Ukrainian ghe
- collating-symbol <UKR-GHE>
-
--reorder-after <CYR-GZHE>
-+reorder-after <CYR-GHE>
- <UKR-GHE>
-
--reorder-after <U0453>
--<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
--
--reorder-after <U0403>
--<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
-+reorder-after <U0433>
-+% <U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
-+<U0491> <CYR-GHE>;<UKR-GHE>;<MIN>;IGNORE
-+
-+reorder-after <U0438>
-+% <U0456> <UKR-I>;<BAS>;<MIN>;IGNORE
-+<U0456> <CYR-I>;<UKR-I>;<MIN>;IGNORE
-+
-+reorder-after <U0413>
-+% <U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
-+<U0490> <CYR-GHE>;<UKR-GHE>;<CAP>;IGNORE
-+
-+reorder-after <U0418>
-+% <U0406> <UKR-I>;<BAS>;<CAP>;IGNORE
-+<U0406> <CYR-I>;<UKR-I>;<CAP>;IGNORE
-
- reorder-end
- END LC_COLLATE
---- glibc-2.3.2/localedata/locales/wa_BE 2002-02-23 14:15:47.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/wa_BE 2003-09-19 22:37:05.000000000 -0400
-@@ -11,8 +11,8 @@
- address ""
- tel ""
- fax ""
--language "wa"
--territory "BE"
-+language "Walloon"
-+territory "Belgium"
- revision "0.7"
- date "2002-02-11"
-
---- glibc-2.3.2/localedata/locales/xh_ZA 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/xh_ZA 2003-05-10 04:39:31.000000000 -0400
-@@ -0,0 +1,235 @@
-+escape_char /
-+comment_char %
-+
-+% ChangeLog
-+% 0.1 (2003-05-08):
-+% - Initial Xhosa locale by Zuza Software Foundation
-+
-+LC_IDENTIFICATION
-+title "Xhosa locale for South Africa"
-+source "Zuza Software Foundation"
-+address "PO Box 13412, Mowbray, 7705, South Africa"
-+contact "Dwayne Bailey"
-+email "dwayne@translate.org.za"
-+tel "+27 (0)21 448 9265"
-+fax "+27 (0)21 448 9574"
-+language "Xhosa"
-+territory "South Africa"
-+revision "0.1"
-+date "2003-05-08"
-+%
-+category "xh_ZA:2003";LC_IDENTIFICATION
-+category "xh_ZA:2003";LC_CTYPE
-+category "xh_ZA:2003";LC_COLLATE
-+category "xh_ZA:2003";LC_TIME
-+category "xh_ZA:2003";LC_NUMERIC
-+category "xh_ZA:2003";LC_MONETARY
-+category "xh_ZA:2003";LC_MESSAGES
-+category "xh_ZA:2003";LC_PAPER
-+category "xh_ZA:2003";LC_NAME
-+category "xh_ZA:2003";LC_ADDRESS
-+category "xh_ZA:2003";LC_TELEPHONE
-+category "xh_ZA:2003";LC_MEASUREMENT
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+% Use the characters described in the charmap file "i18n.tgz"
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_COLLATE
-+% Copy the template from ISO/IEC 14651 i.e.
-+% use the rules there when making ordered lists of words.
-+copy "iso14651_t1"
-+END LC_COLLATE
-+
-+LC_MONETARY
-+copy "en_ZA"
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+copy "en_ZA"
-+END LC_NUMERIC
-+
-+LC_TIME
-+% The abbreviations for the week days:
-+% - Caw, Mvu, Bin, Tha, Sin, Hla, Mgq
-+abday "<U0043><U0061><U0077>";/
-+ "<U004D><U0076><U0075>";/
-+ "<U0042><U0069><U006E>";/
-+ "<U0054><U0068><U0061>";/
-+ "<U0053><U0069><U006E>";/
-+ "<U0048><U006C><U0061>";/
-+ "<U004D><U0067><U0071>"
-+%
-+% The full names of the week days:
-+% - Cawe, Mvulo, Lwesibini, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo
-+day "<U0043><U0061><U0077><U0065>";/
-+ "<U004D><U0076><U0075><U006C><U006F>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0062><U0069><U006E><U0069>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0074><U0068><U0061><U0074><U0068><U0075>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U006E><U0065>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0068><U006C><U0061><U006E><U0075>";/
-+ "<U004D><U0067><U0071><U0069><U0062><U0065><U006C><U006F>"
-+%
-+% The abbreviations for the months
-+% - Jan, Feb, Mat, Epr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis
-+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
-+ "<U004D><U0061><U0074>";"<U0045><U0070><U0072>";/
-+ "<U004D><U0065><U0079>";"<U004A><U0075><U006E>";/
-+ "<U004A><U0075><U006C>";"<U0041><U0067><U0061>";/
-+ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
-+ "<U004E><U006F><U0076>";"<U0044><U0069><U0073>"
-+%
-+% The full names of the months -
-+% - Janyuwari, Februwari, Matshi, Epreli, Meyi, Juni, Julayi, Agasti, Septemba,
-+% Okthoba, Novemba, Disemba
-+mon "<U004A><U0061><U006E><U0079><U0075><U0077><U0061><U0072><U0069>";/
-+ "<U0046><U0065><U0062><U0072><U0075><U0077><U0061><U0072><U0069>";/
-+ "<U004D><U0061><U0074><U0073><U0068><U0069>";/
-+ "<U0045><U0070><U0072><U0065><U006C><U0069>";/
-+ "<U004D><U0065><U0079><U0069>";/
-+ "<U004A><U0075><U006E><U0069>";/
-+ "<U004A><U0075><U006C><U0061><U0079><U0069>";/
-+ "<U0041><U0067><U0061><U0073><U0074><U0069>";/
-+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0061>";/
-+ "<U004F><U006B><U0074><U0068><U006F><U0062><U0061>";/
-+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0061>";/
-+ "<U0044><U0069><U0073><U0065><U006D><U0062><U0061>"
-+%
-+% Abreviated date and time representation to be referenced by the "%c" field descriptor -
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+% "%a" (weekday name),
-+% "%d" (day of month as a decimal number),
-+% "%b" (month name),
-+% "%Y" (year with century as a decimal number),
-+% "%T" (24-hour clock time in format HH:MM:SS),
-+% "%Z" (Time zone name)
-+%
-+% Date representation to be referenced by the "%x" field % descriptor -
-+% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
-+%
-+% Time representation to be referenced by the "%X" field descriptor -
-+% "%T" (24-hour clock time in format HH:MM:SS)
-+t_fmt "<U0025><U0054>"
-+%
-+% Define representation of ante meridiem and post meridiem strings -
-+% The ""s means default to "AM" and "PM".
-+am_pm "";""
-+%
-+% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
-+% field descriptor -
-+% The "" means that this format is not supported.
-+t_fmt_ampm ""
-+%
-+% Date representation not described in ISO/IEC 14652.
-+% Comes out as - "%a %b %e %H:%M:%S %Z %Y"
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-+<U0025><U005A><U0020><U0025><U0059>"
-+% which is:
-+% abbreviated weekday name,
-+% day of month as a decimal number (01 to 31),
-+% day of month as a decimal number with leading space (1 to 31),
-+% hour (24-hour clock) as a decimal number (00 to 23),
-+% minute as a decimal number (00 to 59),
-+% seconds as a decimal number (00 to 59),
-+% time-zone name,
-+% year with century as a decimal number,e.g. 2001.
-+%
-+END LC_TIME
-+
-+LC_MESSAGES
-+% The affirmative response -
-+% "^[yYeE].*"
-+yesexpr "<U005E><U005B><U0079><U0059><U0065><U0045><U005D><U002E><U002A>"
-+%
-+% The negative response -
-+% "^[nNhH].*"
-+noexpr "<U005E><U005B><U006E><U004E><U0068><U0048><U005D><U002E><U002A>"
-+%
-+END LC_MESSAGES
-+
-+LC_PAPER
-+copy "en_ZA"
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+copy "en_ZA"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+copy "en_ZA"
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+% Format for addressing a person.
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+% "%d%t%g%t%m%t%f"
-+% "Salutation",
-+% "Empty string, or <Space>",
-+% "First given name",
-+% "Empty string, or <Space>",
-+% "Middle names",
-+% "Empty string, or <Space>",
-+% "Clan names"
-+%
-+% Salutation for unmarried females - "Nkosazana"
-+name_miss "<U004E><U006B><U006F><U0073><U0061><U007A><U0061><U006E><U0061>"
-+%
-+% Salutation for males - "Mnumzana"
-+name_mr "<U004D><U006E><U0075><U006D><U007A><U0061><U006E><U0061>"
-+%
-+% Salutation for married females - "Nkosikazi"
-+name_mrs "<U004E><U006B><U006F><U0073><U0069><U006B><U0061><U007A><U0069>"
-+%
-+% Salutation valid for all females - "" (no term)
-+name_ms ""
-+END LC_NAME
-+
-+LC_ADDRESS
-+% Country name in Xhosa - "Mzantsi Afrika"
-+country_name "<U004D><U007A><U0061><U006E><U0074><U0073><U0069><U0020>/
-+<U0041><U0066><U0072><U0069><U006B><U0061>"
-+%
-+% Abbreviated country postal name - "ZA"
-+country_post "<U005A><U0041>"
-+%
-+% ISO 3166 two letter country abbreviation - "ZA"
-+country_ab2 "<U005A><U0041>"
-+%
-+% Representation of postal addresses (minus the addressee's name) in South
-+% Africa. (Ignored for now)
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
-+% "firm name",
-+% "end of line",
-+% "C/O address",
-+% "end of line",
-+% "department name",
-+% "Building name",
-+% "end of line",
-+% "street or block name",
-+% "space",
-+% "house number or designation",
-+% "space",
-+% "floor number",
-+% "space",
-+% "room number, door designation",
-+% "end of line",
-+% "postal code",
-+% "space",
-+% "town, city",
-+% "end of line",
-+% "country designation for the <country_post> keyword",
-+% "end of line
-+%
-+END LC_ADDRESS
-+
---- glibc-2.3.2/localedata/locales/yi_US 2001-08-03 04:30:36.000000000 -0400
-+++ glibc-2.3.2/localedata/locales/yi_US 2003-09-19 22:37:05.000000000 -0400
-@@ -11,8 +11,8 @@
- email "pablo@mandrakesoft.com"
- tel ""
- fax ""
--language "yi"
--territory "US"
-+language "Yiddish"
-+territory "USA"
- revision "0.3"
- date "2001-01-28"
-
---- glibc-2.3.2/localedata/locales/zu_ZA 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/locales/zu_ZA 2003-05-10 04:39:46.000000000 -0400
-@@ -0,0 +1,241 @@
-+escape_char /
-+comment_char %
-+
-+% ChangeLog
-+% 0.1 (2003-04-19):
-+% - Initial Zulu locale by Zuza Software Foundation
-+
-+LC_IDENTIFICATION
-+title "Zulu locale for South Africa"
-+source "Zuza Software Foundation"
-+address "PO Box 13412, Mowbray, 7705, South Africa"
-+contact "Dwayne Bailey"
-+email "dwayne@translate.org.za"
-+tel "+27 (0)21 448 9265"
-+fax "+27 (0)21 448 9574"
-+language "Zulu"
-+territory "South Africa"
-+revision "0.1"
-+date "2003-04-19"
-+%
-+category "zu_ZA:2003";LC_IDENTIFICATION
-+category "zu_ZA:2003";LC_CTYPE
-+category "zu_ZA:2003";LC_COLLATE
-+category "zu_ZA:2003";LC_TIME
-+category "zu_ZA:2003";LC_NUMERIC
-+category "zu_ZA:2003";LC_MONETARY
-+category "zu_ZA:2003";LC_MESSAGES
-+category "zu_ZA:2003";LC_PAPER
-+category "zu_ZA:2003";LC_NAME
-+category "zu_ZA:2003";LC_ADDRESS
-+category "zu_ZA:2003";LC_TELEPHONE
-+category "zu_ZA:2003";LC_MEASUREMENT
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+% Use the characters described in the charmap file "i18n.tgz"
-+%
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_COLLATE
-+% Copy the template from ISO/IEC 14651 i.e.
-+% use the rules there when making ordered lists of words.
-+%
-+copy "iso14651_t1"
-+END LC_COLLATE
-+
-+LC_MONETARY
-+copy "en_ZA"
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+copy "en_ZA"
-+END LC_NUMERIC
-+
-+LC_TIME
-+% abday - The abbreviations for the week days:
-+% - Son, Mso, Bil, Tha, Sin, Hla, Mgq
-+abday "<U0053><U006F><U006E>";/
-+ "<U004D><U0073><U006F>";/
-+ "<U0042><U0069><U006C>";/
-+ "<U0054><U0068><U0061>";/
-+ "<U0053><U0069><U006E>";/
-+ "<U0048><U006C><U0061>";/
-+ "<U004D><U0067><U0071>"
-+
-+% day - The full names of the week days:
-+% - Sonto, Msombuluko, Lwesibili, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo
-+day "<U0053><U006F><U006E><U0074><U006F>";/
-+ "<U004D><U0073><U006F><U006D><U0062><U0075><U006C><U0075><U006B><U006F>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0062><U0069><U006C><U0069>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0074><U0068><U0061><U0074><U0068><U0075>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U006E><U0065>";/
-+ "<U004C><U0077><U0065><U0073><U0069><U0068><U006C><U0061><U006E><U0075>";/
-+ "<U004D><U0067><U0071><U0069><U0062><U0065><U006C><U006F>"
-+
-+% abmon - The abbreviations for the months
-+% - Jan, Feb, Mas, Apr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis
-+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
-+ "<U004D><U0061><U0073>";"<U0041><U0070><U0072>";/
-+ "<U004D><U0065><U0079>";"<U004A><U0075><U006E>";/
-+ "<U004A><U0075><U006C>";"<U0041><U0067><U0061>";/
-+ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
-+ "<U004E><U006F><U0076>";"<U0044><U0069><U0073>"
-+
-+% mon - The full names of the months -
-+% - Januwari, Februwari, Mashi, Apreli, Meyi, Juni, Julayi, Agasti, Septemba,
-+% Okthoba, Novemba, Disemba
-+mon "<U004A><U0061><U006E><U0075><U0077><U0061><U0072><U0069>";/
-+ "<U0046><U0065><U0062><U0072><U0075><U0077><U0061><U0072><U0069>";/
-+ "<U004D><U0061><U0073><U0068><U0069>";/
-+ "<U0041><U0070><U0072><U0065><U006C><U0069>";/
-+ "<U004D><U0065><U0079><U0069>";/
-+ "<U004A><U0075><U006E><U0069>";/
-+ "<U004A><U0075><U006C><U0061><U0079><U0069>";/
-+ "<U0041><U0067><U0061><U0073><U0074><U0069>";/
-+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0061>";/
-+ "<U004F><U006B><U0074><U0068><U006F><U0062><U0061>";/
-+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0061>";/
-+ "<U0044><U0069><U0073><U0065><U006D><U0062><U0061>"
-+
-+% Abreviated date and time representation to be referenced by the "%c" field descriptor -
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+%
-+% "%a" (short weekday name),
-+% "%d" (day of month as a decimal number),
-+% "%b" (short month name),
-+% "%Y" (year with century as a decimal number),
-+% "%T" (24-hour clock time in format HH:MM:SS),
-+% "%Z" (Time zone name)
-+
-+% Date representation to be referenced by the "%x" field descriptor -
-+% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
-+
-+% Time representation to be referenced by the "%X" field descriptor -
-+% "%T" (24-hour clock time in format HH:MM:SS)
-+t_fmt "<U0025><U0054>"
-+
-+% Define representation of ante meridiem and post meridiem strings -
-+% The ""s mean default to "AM" and "PM".
-+am_pm "";""
-+
-+% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
-+% field descriptor -
-+% The "" means that this format is not supported.
-+t_fmt_ampm ""
-+
-+% Date representation not described in ISO/IEC 14652. Comes out as -
-+% "%a %b %e %H:%M:%S %Z %Y"
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
-+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
-+<U0025><U005A><U0020><U0025><U0059>"
-+% which is
-+% %a - abbreviated weekday name,
-+% %b - abreviated month name,
-+% %e - day of month as a decimal number with leading space (1 to 31),
-+% %H - hour (24-hour clock) as a decimal number (00 to 23),
-+% %M - minute as a decimal number (00 to 59),
-+% %S - seconds as a decimal number (00 to 59),
-+% %Z - time-zone name,
-+% %Y - year with century as a decimal number,e.g. 2001.
-+
-+END LC_TIME
-+
-+LC_MESSAGES
-+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
-+% The affirmative response -
-+% "^[yY].*"
-+%
-+noexpr "<U005E><U005B><U006E><U004E><U0063><U0043><U005D><U002E><U002A>"
-+% The negative response -
-+% "^[nNcC].*"
-+%
-+END LC_MESSAGES
-+
-+LC_PAPER
-+copy "en_ZA"
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+copy "en_ZA"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+copy "en_ZA"
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+% Format for addressing a person.
-+% "%d%t%g%t%m%t%f"
-+% "Salutation",
-+% "Empty string, or <Space>",
-+% "First given name",
-+% "Empty string, or <Space>",
-+% "Middle names",
-+% "Empty string, or <Space>",
-+% "Clan names"
-+%
-+name_miss "<U004E><U006B><U006F><U0073><U0061><U007A><U0061><U006E><U0065>"
-+% Salutation for unmarried females - "Nkosazane"
-+%
-+name_mr "<U004D><U006E><U0075><U006D><U007A><U0061><U006E><U0065>"
-+% Salutation for males - "Mnumzane"
-+%
-+name_mrs "<U004E><U006B><U006F><U0073><U0069><U006B><U0061><U007A><U0069>"
-+% Salutation for married females - "Nkosikazi"
-+%
-+name_ms ""
-+% Salutation valid for all females - "" (no term)
-+END LC_NAME
-+
-+LC_ADDRESS
-+country_name "<U004D><U007A><U0061><U006E><U0073><U0069><U0020>/
-+<U0041><U0066><U0072><U0069><U006B><U0061>"
-+% Country name in Zulu - "Mzansi Afrika"
-+%
-+country_post "<U005A><U0041>"
-+% Abbreviated country postal name - "ZA"
-+%
-+country_ab2 "<U005A><U0041>"
-+% ISO 3166 two letter country abbreviation - "ZA"
-+%
-+lang_name "<U0049><U0073><U0069><U007A><U0075><U006C><U0075>"
-+% Language name in Zulu - "Isizulu"
-+%
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+% Representation of postal addresses (minus the addressee's name) in South
-+% Africa. (Ignored for now)
-+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
-+% "firm name",
-+% "end of line",
-+% "C/O address",
-+% "end of line",
-+% "department name",
-+% "Building name",
-+% "end of line",
-+% "street or block name",
-+% "space",
-+% "house number or designation",
-+% "space",
-+% "floor number",
-+% "space",
-+% "room number, door designation",
-+% "end of line",
-+% "postal code",
-+% "space",
-+% "town, city",
-+% "end of line",
-+% "country designation for the <country_post> keyword",
-+% "end of line
-+%
-+END LC_ADDRESS
-+
---- glibc-2.3.2/localedata/sort-test.sh 2000-08-22 03:52:13.000000000 -0400
-+++ glibc-2.3.2/localedata/sort-test.sh 2003-05-12 12:13:05.000000000 -0400
-@@ -27,6 +27,7 @@
- echo "$l OK"
- else
- echo "$l FAIL"
-+ diff -u $cns.in ${common_objpfx}localedata/$cns.xout
- status=1
- fi
- done
---- glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2000-06-27 11:53:19.000000000 -0400
-+++ glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2003-05-12 12:13:05.000000000 -0400
-@@ -47,7 +47,7 @@
- if (debug_flg)
- {
- fprintf (stdout, "tst_wcsxfrm() : REC = %d\n", rec + 1);
-- fprintf (stdout, "tst_wcsxfrm() : 1st ret = %d\n", ret);
-+ fprintf (stdout, "tst_wcsxfrm() : 1st ret = %zu\n", ret);
- }
-
- if (ret == -1 || ret >= n1 || errno_save != 0)
-@@ -78,7 +78,7 @@
-
- if (debug_flg)
- {
-- fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %d\n", ret);
-+ fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %zu\n", ret);
- }
-
- /* wcscoll() */
---- glibc-2.3.2/localedata/tst-fmon.c 2001-07-07 15:21:05.000000000 -0400
-+++ glibc-2.3.2/localedata/tst-fmon.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Testing the implementation of strfmon(3).
-- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
-
-@@ -42,15 +42,12 @@
- main (int argc, char *argv[])
- {
- char *s = malloc (201);
-- double monval;
-
- if (setlocale (LC_MONETARY, argv[1]) == NULL)
- {
-- perror ("setlocale");
-+ fprintf (stderr, "setlocale(LC_MONETARY, \"%s\"): %m\n", argv[1]);
- exit (EXIT_SETLOCALE);
- }
-- /* This is locale-dependent! see setlocale(3) for details */
-- monval = strtod (argv[3], NULL);
-
- if (strfmon (s, 200, argv[2], (double) atof (argv[3])) == -1)
- {
---- glibc-2.3.2/localedata/tst-fmon.sh 2001-07-07 15:21:05.000000000 -0400
-+++ glibc-2.3.2/localedata/tst-fmon.sh 2003-08-21 08:37:05.000000000 -0400
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Testing the implementation of strfmon(3).
--# Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- # This file is part of the GNU C Library.
- # Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
- #
-@@ -39,24 +39,26 @@
- done
-
- # Run the tests.
-+errcode=0
- # There's a TAB for IFS
- while IFS=" " read locale format value expect; do
-+ case "$locale" in '#'*) continue ;; esac
- if [ -n "$format" ]; then
-- LOCPATH=${common_objpfx}localedata \
-- GCONV_PATH=${common_objpfx}/iconvdata \
-- ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \
-- "$locale" "$format" "$value" "$expect"
-- if [ $? -eq 0 ]; then
-+ if LOCPATH=${common_objpfx}localedata \
-+ GCONV_PATH=${common_objpfx}/iconvdata \
-+ ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \
-+ "$locale" "$format" "$value" "$expect" ; then
- echo "Locale: \"${locale}\" Format: \"${format}\"" \
- "Value: \"${value}\" Expect: \"${expect}\" passed"
- else
-+ errcode=$?
- echo "Locale: \"${locale}\" Format: \"${format}\"" \
- "Value: \"${value}\" Expect: \"${expect}\" failed"
- fi
- fi
- done < $datafile
-
--exit $?
-+exit $errcode
- # Local Variables:
- # mode:shell-script
- # End:
---- glibc-2.3.2/localedata/tst-langinfo.sh 2001-07-07 15:21:05.000000000 -0400
-+++ glibc-2.3.2/localedata/tst-langinfo.sh 2003-05-12 12:13:05.000000000 -0400
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Test nl_langinfo.
--# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- # This file is part of the GNU C Library.
- #
-
-@@ -155,13 +155,13 @@
- en_US.ISO-8859-1 THOUSEP ,
- en_US.ISO-8859-1 YESEXPR ^[yY].*
- en_US.ISO-8859-1 NOEXPR ^[nN].*
--de_DE.ISO-8859-1 ABDAY_1 Son
--de_DE.ISO-8859-1 ABDAY_2 Mon
--de_DE.ISO-8859-1 ABDAY_3 Die
--de_DE.ISO-8859-1 ABDAY_4 Mit
--de_DE.ISO-8859-1 ABDAY_5 Don
--de_DE.ISO-8859-1 ABDAY_6 Fre
--de_DE.ISO-8859-1 ABDAY_7 Sam
-+de_DE.ISO-8859-1 ABDAY_1 So
-+de_DE.ISO-8859-1 ABDAY_2 Mo
-+de_DE.ISO-8859-1 ABDAY_3 Di
-+de_DE.ISO-8859-1 ABDAY_4 Mi
-+de_DE.ISO-8859-1 ABDAY_5 Do
-+de_DE.ISO-8859-1 ABDAY_6 Fr
-+de_DE.ISO-8859-1 ABDAY_7 Sa
- de_DE.ISO-8859-1 DAY_1 Sonntag
- de_DE.ISO-8859-1 DAY_2 Montag
- de_DE.ISO-8859-1 DAY_3 Dienstag
-@@ -200,13 +200,13 @@
- de_DE.ISO-8859-1 THOUSEP .
- de_DE.ISO-8859-1 YESEXPR ^[jJyY].*
- de_DE.ISO-8859-1 NOEXPR ^[nN].*
--de_DE.UTF-8 ABDAY_1 Son
--de_DE.UTF-8 ABDAY_2 Mon
--de_DE.UTF-8 ABDAY_3 Die
--de_DE.UTF-8 ABDAY_4 Mit
--de_DE.UTF-8 ABDAY_5 Don
--de_DE.UTF-8 ABDAY_6 Fre
--de_DE.UTF-8 ABDAY_7 Sam
-+de_DE.UTF-8 ABDAY_1 So
-+de_DE.UTF-8 ABDAY_2 Mo
-+de_DE.UTF-8 ABDAY_3 Di
-+de_DE.UTF-8 ABDAY_4 Mi
-+de_DE.UTF-8 ABDAY_5 Do
-+de_DE.UTF-8 ABDAY_6 Fr
-+de_DE.UTF-8 ABDAY_7 Sa
- de_DE.UTF-8 DAY_1 Sonntag
- de_DE.UTF-8 DAY_2 Montag
- de_DE.UTF-8 DAY_3 Dienstag
---- glibc-2.3.2/localedata/tst-numeric.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/tst-numeric.c 2003-05-12 12:13:05.000000000 -0400
-@@ -0,0 +1,74 @@
-+/* Testing the implementation of LC_NUMERIC and snprintf().
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Petter Reinholdtsen <pere@hungry.com>, 2003
-+
-+ Based on tst-fmon.c by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
-+
-+ 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 <stdio.h>
-+#include <locale.h>
-+#include <string.h>
-+#include <stdlib.h>
-+
-+/*
-+ test-numeric gets called with three parameters:
-+ - the locale
-+ - the format-string to be used
-+ - the actual number to be formatted
-+ - the expected string
-+ If the test passes, test-numeric terminates with returncode 0,
-+ otherwise with 1
-+*/
-+#define EXIT_SUCCESS 0
-+#define EXIT_FAILURE 1
-+#define EXIT_SETLOCALE 2
-+#define EXIT_SNPRINTF 3
-+
-+int
-+main (int argc, char *argv[])
-+{
-+ char *s = malloc (201);
-+ double val;
-+
-+ /* Make sure to read the value before setting of the locale, as
-+ strtod() is locale-dependent. */
-+ val = strtod (argv[3], NULL);
-+
-+ if (setlocale (LC_ALL, argv[1]) == NULL)
-+ {
-+ fprintf (stderr, "setlocale(LC_ALL, \"%s\"): %m\n", argv[1]);
-+ exit (EXIT_SETLOCALE);
-+ }
-+
-+ if (snprintf (s, 200, argv[2], val) == -1)
-+ {
-+ perror ("snprintf");
-+ exit (EXIT_SNPRINTF);
-+ }
-+
-+ if (strcmp (s, argv[4]) != 0)
-+ {
-+ printf ("\
-+locale: \"%s\", format: \"%s\", expected: \"%s\", got: \"%s\" => %s\n",
-+ argv[1], argv[2], argv[4], s,
-+ strcmp (s, argv[4]) != 0 ? "false" : "correct");
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ return EXIT_SUCCESS;
-+}
---- glibc-2.3.2/localedata/tst-numeric.data 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/tst-numeric.data 2003-04-27 05:02:25.000000000 -0400
-@@ -0,0 +1,49 @@
-+# Test data for tst-nomeric, which checks it's implementation in glibc
-+# Copyright (C) 2003 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+# Contributed by Petter Reinholdtsen <pere@hungry.com>, 2003
-+# Based on code by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
-+#
-+
-+# 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.
-+
-+# The format of this file is pretty simple: Each line contains a test
-+# for strfmon. Fields are separated by TABs. Lines that start with a
-+# '#' are comments and are ignored.
-+#
-+# Field Description
-+# #1 locale which is to be checked
-+# #2 format string which is fed into snprintf
-+# #3 double value that is used for formatting
-+# #4 the expected result (may contain trailing spaces!)
-+#
-+# First the implementation without any locale-dependent data
-+C %g 1.23 1.23
-+C %g -1.23 -1.23
-+C %g 0 0
-+C %% 0 %
-+C %'g 123.45 123.45
-+C %'g -123.45 -123.45
-+C *%g* 1.23 *1.23*
-+C %9g 1.23 1.23
-+C %9g -1.23 -1.23
-+#
-+# check both the norwegian locales and snprintf with that data
-+#
-+no_NO.ISO-8859-1 %'g 123.45 123,45
-+no_NO.ISO-8859-1 %'g -123.45 -123,45
-+nn_NO.ISO-8859-1 %'g 123.45 123,45
-+nn_NO.ISO-8859-1 %'g -123.45 -123,45
---- glibc-2.3.2/localedata/tst-numeric.sh 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/localedata/tst-numeric.sh 2003-08-21 08:37:05.000000000 -0400
-@@ -0,0 +1,51 @@
-+#! /bin/sh
-+# Testing the implementation of LC_NUMERIC and snprintf(3).
-+# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+# Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
-+#
-+
-+# 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.
-+
-+common_objpfx=$1
-+run_program_prefix=$2
-+datafile=$3
-+
-+# Run the tests.
-+errcode=0
-+# There's a TAB for IFS
-+while IFS=" " read locale format value expect; do
-+ case "$locale" in '#'*) continue ;; esac
-+ if [ -n "$format" ]; then
-+ if LOCPATH=${common_objpfx}localedata \
-+ GCONV_PATH=${common_objpfx}/iconvdata \
-+ ${run_program_prefix} ${common_objpfx}localedata/tst-numeric \
-+ "$locale" "$format" "$value" "$expect"
-+ then
-+ echo "Locale: \"${locale}\" Format: \"${format}\"" \
-+ "Value: \"${value}\" Expect: \"${expect}\" passed"
-+ else
-+ errcode=$?
-+ echo "Locale: \"${locale}\" Format: \"${format}\"" \
-+ "Value: \"${value}\" Expect: \"${expect}\" failed"
-+ fi
-+ fi
-+done < $datafile
-+
-+exit $errcode
-+# Local Variables:
-+# mode:shell-script
-+# End:
---- glibc-2.3.2/localedata/xfrm-test.c 2001-07-07 15:21:05.000000000 -0400
-+++ glibc-2.3.2/localedata/xfrm-test.c 2003-08-21 08:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test collation function via transformation using real data.
-- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,6 +19,7 @@
- 02111-1307 USA. */
-
- #include <ctype.h>
-+#include <error.h>
- #include <locale.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -27,8 +28,8 @@
-
- struct lines
- {
-- const char *xfrm;
-- const char *line;
-+ char *xfrm;
-+ char *line;
- };
-
- static int xstrcmp (const void *, const void *);
-@@ -43,6 +44,9 @@
- size_t len = 0;
- size_t n;
-
-+ if (argc < 2)
-+ error (1, 0, "usage: %s <random seed>", argv[0]);
-+
- setlocale (LC_ALL, "");
-
- nstrings_max = 100;
-@@ -65,8 +69,8 @@
- if (nstrings == nstrings_max)
- {
- strings = (struct lines *) realloc (strings,
-- (nstrings_max *= 2
-- * sizeof (*strings)));
-+ (nstrings_max *= 2)
-+ * sizeof (*strings));
- if (strings == NULL)
- {
- perror (argv[0]);
-@@ -87,6 +91,7 @@
- line[l] = saved;
- ++nstrings;
- }
-+ free (line);
-
- /* First shuffle. */
- srandom (atoi (argv[1]));
-@@ -116,7 +121,12 @@
-
- /* Print the result. */
- for (n = 0; n < nstrings; ++n)
-- fputs (strings[n].line, stdout);
-+ {
-+ fputs (strings[n].line, stdout);
-+ free (strings[n].line);
-+ free (strings[n].xfrm);
-+ }
-+ free (strings);
-
- return result;
- }
---- glibc-2.3.2/login/Makefile 2002-10-02 03:19:57.000000000 -0400
-+++ glibc-2.3.2/login/Makefile 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
-+# Copyright (C) 1996-1998,2000-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
-@@ -47,6 +47,8 @@
-
- include ../Rules
-
-+CFLAGS-getpt.c = -fexceptions
-+
- ifeq (yes,$(build-static-nss))
- otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
- $(resolvobjdir)/libresolv.a $(common-objpfx)libc.a
---- glibc-2.3.2/login/programs/utmpdump.c 2002-10-02 16:39:00.000000000 -0400
-+++ glibc-2.3.2/login/programs/utmpdump.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* utmpdump - dump utmp-like files.
-- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
-
-@@ -28,16 +28,16 @@
- print_entry (struct utmp *up)
- {
- /* Mixed 32-/64-bit systems may have timeval structs of different sixe
-- but need struct utmp to be the same size. So in 64-bit up->ut_tv may
-+ but need struct utmp to be the same size. So in 64-bit up->ut_tv may
- not be a timeval but a struct of __int32_t's. This would cause a compile
- time warning and a formating error when 32-bit int is passed where
- a 64-bit long is expected. So copy up->up_tv to a temporary timeval.
-- This is 32-/64-bit agnostic and expands the timeval fields to the
-+ This is 32-/64-bit agnostic and expands the timeval fields to the
- expected size as needed. */
- struct timeval temp_tv;
- temp_tv.tv_sec = up->ut_tv.tv_sec;
- temp_tv.tv_usec = up->ut_tv.tv_usec;
--
-+
- (printf) (
- /* The format string. */
- #if _HAVE_UT_TYPE
-@@ -74,7 +74,7 @@
- #endif
- #if _HAVE_UT_TV
- , 4 + ctime (&temp_tv.tv_sec)
-- , temp_tv.tv_usec
-+ , (long int) temp_tv.tv_usec
- #else
- , 4 + ctime (&up->ut_time)
- #endif
---- glibc-2.3.2/mach/Makefile 2003-02-17 13:58:01.000000000 -0500
-+++ glibc-2.3.2/mach/Makefile 2003-06-03 09:36:24.000000000 -0400
-@@ -79,12 +79,17 @@
- $(make-target-directory)
- # We must use $(CFLAGS) to get -O flags that affect #if's in header files.
- echo '#include <mach/syscall_sw.h>' | \
-- DEPENDENCIES_OUTPUT='$@-dep $@' \
-- $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - \
-+ $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \
-+ -x c-header - \
- -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
- sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\
- | $(AWK) -f $< > $@-new
-- cat $@-dep >> $@-new; rm -f $@-dep
-+ifneq (,$(objpfx))
-+ sed $(sed-remove-objpfx) $@-dep >> $@-new
-+else
-+ cat $@-dep >> $@-new
-+endif
-+ rm -f $@-dep
- mv -f $@-new $@
- generated += mach-syscalls.mk
-
---- glibc-2.3.2/mach/err_boot.sub 1992-10-06 14:29:52.000000000 -0400
-+++ glibc-2.3.2/mach/err_boot.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -25,10 +25,7 @@
- */
- /*
- * HISTORY
-- * $Log: err_boot.sub,v $
-- * Revision 1.1 1992/10/06 18:29:52 roland
-- * entered into RCS
-- *
-+ * $Log: err_bootstrap.sub,v $
- * Revision 2.2 92/04/01 19:37:59 rpd
- * Created.
- * [92/03/09 rpd]
---- glibc-2.3.2/mach/err_ipc.sub 1992-10-06 14:29:52.000000000 -0400
-+++ glibc-2.3.2/mach/err_ipc.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -25,10 +25,7 @@
- */
- /*
- * HISTORY
-- * $Log: err_ipc.sub,v $
-- * Revision 1.1 1992/10/06 18:29:52 roland
-- * entered into RCS
-- *
-+ * $Log: err_ipc.sub,v $
- * Revision 2.2 92/01/16 00:08:40 rpd
- * Moved from user collection to mk collection.
- *
---- glibc-2.3.2/mach/err_kern.sub 1996-12-19 20:32:34.000000000 -0500
-+++ glibc-2.3.2/mach/err_kern.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -26,9 +26,6 @@
- /*
- * HISTORY
- * $Log: err_kern.sub,v $
-- * 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.
- *
---- glibc-2.3.2/mach/err_mach.sub 1992-10-06 14:29:52.000000000 -0400
-+++ glibc-2.3.2/mach/err_mach.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -25,10 +25,7 @@
- */
- /*
- * HISTORY
-- * $Log: err_mach.sub,v $
-- * Revision 1.1 1992/10/06 18:29:52 roland
-- * entered into RCS
-- *
-+ * $Log: err_mach_ipc.sub,v $
- * Revision 2.3 92/04/01 19:38:05 rpd
- * Added MIG_DESTROY_REQUEST.
- * [92/03/09 rpd]
---- glibc-2.3.2/mach/err_server.sub 1992-10-06 14:29:53.000000000 -0400
-+++ glibc-2.3.2/mach/err_server.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -25,10 +25,7 @@
- */
- /*
- * HISTORY
-- * $Log: err_server.sub,v $
-- * Revision 1.1 1992/10/06 18:29:53 roland
-- * entered into RCS
-- *
-+ * $Log: err_server.sub,v $
- * Revision 2.2 92/01/16 00:10:29 rpd
- * Moved from user collection to mk collection.
- *
---- glibc-2.3.2/mach/err_us.sub 1993-11-23 16:14:05.000000000 -0500
-+++ glibc-2.3.2/mach/err_us.sub 2002-11-16 08:55:47.000000000 -0500
-@@ -25,10 +25,7 @@
- */
- /*
- * HISTORY
-- * $Log: err_us.sub,v $
-- * Revision 1.2 1993/11/23 21:14:05 mib
-- * entered into RCS
-- *
-+ * $Log: err_us.sub,v $
- * Revision 2.2 92/01/16 00:10:45 rpd
- * Moved from user collection to mk collection.
- *
---- glibc-2.3.2/mach/error_compat.c 1997-03-16 12:41:36.000000000 -0500
-+++ glibc-2.3.2/mach/error_compat.c 2002-11-16 08:55:47.000000000 -0500
-@@ -26,9 +26,6 @@
-
- /* This file was broken out from:
- $Log: error_compat.c,v $
-- 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>
-
---- glibc-2.3.2/mach/errorlib.h 1995-03-10 18:57:44.000000000 -0500
-+++ glibc-2.3.2/mach/errorlib.h 2002-11-16 08:55:47.000000000 -0500
-@@ -26,9 +26,6 @@
- /*
- * HISTORY
- * $Log: errorlib.h,v $
-- * 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
- *
---- glibc-2.3.2/mach/errstring.c 1997-03-16 12:41:48.000000000 -0500
-+++ glibc-2.3.2/mach/errstring.c 2002-11-16 08:55:47.000000000 -0500
-@@ -26,9 +26,6 @@
- /*
- * HISTORY
- * $Log: errstring.c,v $
-- * 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>
- *
---- glibc-2.3.2/mach/mach/error.h 1997-03-16 12:43:08.000000000 -0500
-+++ glibc-2.3.2/mach/mach/error.h 2002-11-16 08:55:47.000000000 -0500
-@@ -27,10 +27,6 @@
- /*
- * HISTORY
- * $Log: error.h,v $
-- * 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>
- *
---- glibc-2.3.2/mach/mach_error.c 1997-03-16 12:42:02.000000000 -0500
-+++ glibc-2.3.2/mach/mach_error.c 2002-11-16 08:55:47.000000000 -0500
-@@ -26,9 +26,6 @@
- /*
- * HISTORY
- * $Log: mach_error.c,v $
-- * 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>
- *
---- glibc-2.3.2/mach/mach_error.h 2001-04-03 20:02:00.000000000 -0400
-+++ glibc-2.3.2/mach/mach_error.h 2002-11-16 08:55:47.000000000 -0500
-@@ -26,12 +26,6 @@
- /*
- * HISTORY
- * $Log: mach_error.h,v $
-- * 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.
---- glibc-2.3.2/mach/msg-destroy.c 2002-02-19 02:34:36.000000000 -0500
-+++ glibc-2.3.2/mach/msg-destroy.c 2002-11-16 08:55:47.000000000 -0500
-@@ -26,15 +26,6 @@
- /*
- * HISTORY
- * $Log: msg-destroy.c,v $
-- * 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.
- *
---- glibc-2.3.2/mach/msgserver.c 2002-02-19 02:34:36.000000000 -0500
-+++ glibc-2.3.2/mach/msgserver.c 2002-11-16 08:55:47.000000000 -0500
-@@ -49,12 +49,6 @@
- /*
- * HISTORY
- * $Log: msgserver.c,v $
-- * 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>
- *
---- glibc-2.3.2/malloc/Makefile 2003-02-21 20:01:17.000000000 -0500
-+++ glibc-2.3.2/malloc/Makefile 2003-04-24 20:05:58.000000000 -0400
-@@ -56,6 +56,7 @@
-
- include ../Makeconfig
-
-+CFLAGS-malloc.c += -DDEFAULT_TOP_PAD=131072
- CPPFLAGS-memusagestat = -DNOT_IN_libc
-
- # The Perl script to analyze the output of the mtrace functions.
---- glibc-2.3.2/malloc/arena.c 2002-12-27 18:22:15.000000000 -0500
-+++ glibc-2.3.2/malloc/arena.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Malloc implementation for multiple threads without lock contention.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
-
-@@ -758,6 +758,7 @@
- /* Add the new arena to the global list. */
- (void)mutex_lock(&list_lock);
- a->next = main_arena.next;
-+ atomic_write_barrier ();
- main_arena.next = a;
- (void)mutex_unlock(&list_lock);
-
---- glibc-2.3.2/malloc/hooks.c 2003-01-27 13:32:36.000000000 -0500
-+++ glibc-2.3.2/malloc/hooks.c 2003-09-19 22:37:05.000000000 -0400
-@@ -106,7 +106,18 @@
- __realloc_hook = realloc_check;
- __memalign_hook = memalign_check;
- if(check_action & 1)
-- fprintf(stderr, "malloc: using debugging hooks\n");
-+ {
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
-+ fprintf(stderr, "malloc: using debugging hooks\n");
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
-+ }
- }
-
- /* A simple, standard set of debugging hooks. Overhead is `only' one
-@@ -224,7 +235,18 @@
- t == initial_top(&main_arena)) return 0;
-
- if(check_action & 1)
-- fprintf(stderr, "malloc: top chunk is corrupt\n");
-+ {
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
-+ fprintf(stderr, "malloc: top chunk is corrupt\n");
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
-+ }
- if(check_action & 2)
- abort();
-
-@@ -278,7 +300,18 @@
- if(!p) {
- (void)mutex_unlock(&main_arena.mutex);
- if(check_action & 1)
-- fprintf(stderr, "free(): invalid pointer %p!\n", mem);
-+ {
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
-+ fprintf(stderr, "free(): invalid pointer %p!\n", mem);
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
-+ }
- if(check_action & 2)
- abort();
- return;
-@@ -315,7 +348,18 @@
- (void)mutex_unlock(&main_arena.mutex);
- if(!oldp) {
- if(check_action & 1)
-- fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem);
-+ {
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
-+ fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem);
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
-+ }
- if(check_action & 2)
- abort();
- return malloc_check(bytes, NULL);
---- glibc-2.3.2/malloc/malloc.c 2003-01-30 13:36:54.000000000 -0500
-+++ glibc-2.3.2/malloc/malloc.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
--/* Malloc implementation for multiple threads without lock contention.
-- Copyright (C) 1996,1997,1998,1999,2000,01,02 Free Software Foundation, Inc.
-+ /* Malloc implementation for multiple threads without lock contention.
-+ Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Wolfram Gloger <wg@malloc.de>
- and Doug Lea <dl@cs.oswego.edu>, 2001.
-@@ -24,7 +24,7 @@
- Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
-
- * Version ptmalloc2-20011215
-- $Id: malloc.c,v 1.108 2003/01/30 18:36:54 drepper Exp $
-+ $Id: malloc.c,v 1.114 2003/09/08 16:32:37 drepper Exp $
- based on:
- VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee)
-
-@@ -2969,9 +2969,6 @@
- */
-
- else {
-- /* Count foreign sbrk as system_mem. */
-- if (old_size)
-- av->system_mem += brk - old_end;
- front_misalign = 0;
- end_misalign = 0;
- correction = 0;
-@@ -2980,6 +2977,10 @@
- /* handle contiguous cases */
- if (contiguous(av)) {
-
-+ /* Count foreign sbrk as system_mem. */
-+ if (old_size)
-+ av->system_mem += brk - old_end;
-+
- /* Guarantee alignment of first new chunk made from this space */
-
- front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
-@@ -3474,6 +3475,7 @@
- ar_ptr == arena_for_chunk(mem2chunk(p)));
- return p;
- }
-+strong_alias (public_mEMALIGn, __memalign_internal)
-
- Void_t*
- public_vALLOc(size_t bytes)
-@@ -3707,6 +3709,8 @@
- {
- struct mallinfo m;
-
-+ if(__malloc_initialized < 0)
-+ ptmalloc_init ();
- (void)mutex_lock(&main_arena.mutex);
- m = mALLINFo(&main_arena);
- (void)mutex_unlock(&main_arena.mutex);
-@@ -4128,6 +4132,30 @@
- p = mem2chunk(mem);
- size = chunksize(p);
-
-+ /* Little security check which won't hurt performance: the
-+ allocator never wrapps around at the end of the address space.
-+ Therefore we can exclude some size values which might appear
-+ here by accident or by "design" from some intruder. */
-+ if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0))
-+ {
-+ if (check_action & 1)
-+ {
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
-+ fprintf (stderr, "free(): invalid pointer %p!\n", mem);
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
-+ }
-+ if (check_action & 2)
-+ abort ();
-+ return;
-+ }
-+
- check_inuse_chunk(av, p);
-
- /*
-@@ -5089,6 +5117,13 @@
- long stat_lock_direct = 0, stat_lock_loop = 0, stat_lock_wait = 0;
- #endif
-
-+ if(__malloc_initialized < 0)
-+ ptmalloc_init ();
-+#ifdef _LIBC
-+ _IO_flockfile (stderr);
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+#endif
- for (i=0, ar_ptr = &main_arena;; i++) {
- (void)mutex_lock(&ar_ptr->mutex);
- mi = mALLINFo(ar_ptr);
-@@ -5133,6 +5168,10 @@
- fprintf(stderr, "locked total = %10ld\n",
- stat_lock_direct + stat_lock_loop + stat_lock_wait);
- #endif
-+#ifdef _LIBC
-+ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
-+ _IO_funlockfile (stderr);
-+#endif
- }
-
-
-@@ -5146,11 +5185,11 @@
- int mALLOPt(param_number, value) int param_number; int value;
- #endif
- {
-- if(__malloc_initialized < 0)
-- ptmalloc_init ();
- mstate av = &main_arena;
- int res = 1;
-
-+ if(__malloc_initialized < 0)
-+ ptmalloc_init ();
- (void)mutex_lock(&av->mutex);
- /* Ensure initialization/consolidation */
- malloc_consolidate(av);
-@@ -5353,7 +5392,7 @@
- if (alignment % sizeof (void *) != 0 || !powerof2 (alignment) != 0)
- return EINVAL;
-
-- mem = __libc_memalign (alignment, size);
-+ mem = __memalign_internal (alignment, size);
-
- if (mem != NULL) {
- *memptr = mem;
---- glibc-2.3.2/malloc/malloc.h 2003-01-12 22:58:02.000000000 -0500
-+++ glibc-2.3.2/malloc/malloc.h 2003-08-21 08:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Prototypes and definition for malloc implementation.
-- Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999,2000,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
-@@ -25,7 +25,7 @@
- #endif
-
- /*
-- $Id: malloc.h,v 1.23 2003/01/13 03:42:16 roland Exp $
-+ $Id: malloc.h,v 1.24 2003/05/28 21:01:42 roland Exp $
- `ptmalloc2', a malloc implementation for multiple threads without
- lock contention, by Wolfram Gloger <wg@malloc.de>.
-
-@@ -85,11 +85,19 @@
- # define __MALLOC_P(args) args
- # define __MALLOC_PMT(args) args
-
-+# ifndef __const
-+# define __const const
-+# endif
-+
- # else /* Not ANSI C or C++. */
-
- # define __MALLOC_P(args) () /* No prototypes. */
- # define __MALLOC_PMT(args) ()
-
-+# ifndef __const
-+# define __const
-+# endif
-+
- # endif /* ANSI C or C++. */
-
- #endif /* GCC. */
-@@ -226,7 +234,7 @@
-
-
- #ifdef __cplusplus
--}; /* end of extern "C" */
-+} /* end of extern "C" */
- #endif
-
- #endif /* malloc.h */
---- glibc-2.3.2/malloc/memusagestat.c 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/malloc/memusagestat.c 2003-04-12 11:39:43.000000000 -0400
-@@ -405,7 +405,7 @@
- }
-
-
-- snprintf (buf, sizeof (buf), "%llu", total);
-+ snprintf (buf, sizeof (buf), "%llu", (unsigned long long) total);
- gdImageString (im_out, gdFontSmall, xsize - 50, ysize - 14, buf, blue);
-
- if (!time_based)
---- glibc-2.3.2/malloc/mtrace.c 2002-12-31 16:18:43.000000000 -0500
-+++ glibc-2.3.2/malloc/mtrace.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* More debugging hooks for `malloc'.
-- Copyright (C) 1991-1994,1996-2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991-1994,1996-2001,2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written April 2, 1991 by John Gilmore of Cygnus Support.
- Based on mcheck.c by Mike Haertel.
-@@ -103,7 +103,7 @@
- {
- #ifdef HAVE_ELF
- Dl_info info;
-- if (_dl_addr (caller, &info))
-+ if (_dl_addr (caller, &info, NULL, NULL))
- {
- char *buf = (char *) "";
- if (info.dli_sname != NULL)
-@@ -280,7 +280,7 @@
- if (mtb == NULL)
- return;
-
-- mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "w");
-+ mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "wc");
- if (mallstream != NULL)
- {
- /* Make sure we close the file descriptor on exec. */
---- glibc-2.3.2/malloc/set-freeres.c 2002-11-01 21:15:52.000000000 -0500
-+++ glibc-2.3.2/malloc/set-freeres.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1999,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
-@@ -16,7 +16,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <atomicity.h>
-+#include <atomic.h>
- #include <stdlib.h>
- #include <set-hooks.h>
- #include <libc-internal.h>
-@@ -36,7 +36,7 @@
- protect for multiple executions since these are fatal. */
- static long int already_called;
-
-- if (compare_and_swap (&already_called, 0, 1))
-+ if (! atomic_compare_and_exchange_bool_acq (&already_called, 1, 0))
- {
- void * const *p;
-
---- glibc-2.3.2/malloc/thread-m.h 2002-12-31 17:12:17.000000000 -0500
-+++ glibc-2.3.2/malloc/thread-m.h 2003-08-21 08:37:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Basic platform-independent macro definitions for mutexes and
- thread-specific data.
-- Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-1998,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
-
-@@ -19,7 +19,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--/* $Id: thread-m.h,v 1.20 2002/12/31 21:05:27 drepper Exp $
-+/* $Id: thread-m.h,v 1.22 2003/05/09 03:15:50 drepper Exp $
- One out of _LIBC, USE_PTHREADS, USE_THR or USE_SPROC should be
- defined, otherwise the token NO_THREADS and dummy implementations
- of the macros will be defined. */
-@@ -31,6 +31,7 @@
-
- #if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
-
-+#include <atomic.h>
- #include <bits/libc-lock.h>
-
- #ifdef PTHREAD_MUTEX_INITIALIZER
-@@ -306,4 +307,16 @@
-
- #endif /* defined(NO_THREADS) */
-
-+#ifndef atomic_full_barrier
-+# define atomic_full_barrier() __asm ("" ::: "memory")
-+#endif
-+
-+#ifndef atomic_read_barrier
-+# define atomic_read_barrier() atomic_full_barrier ()
-+#endif
-+
-+#ifndef atomic_write_barrier
-+# define atomic_write_barrier() atomic_full_barrier ()
-+#endif
-+
- #endif /* !defined(_THREAD_M_H) */
---- glibc-2.3.2/math/Makefile 2003-02-21 01:03:48.000000000 -0500
-+++ glibc-2.3.2/math/Makefile 2003-08-21 08:37:07.000000000 -0400
-@@ -87,7 +87,7 @@
-
- # Rules for the test suite.
- tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
-- test-misc test-fpucw tst-definitions test-tgmath
-+ test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret
- # We do the `long double' tests only if this data type is available and
- # distinct from `double'.
- test-longdouble-yes = test-ldouble test-ildoubl
-@@ -126,6 +126,7 @@
- CFLAGS-test-double.c = -fno-inline -ffloat-store
- CFLAGS-test-ldouble.c = -fno-inline -ffloat-store
- CFLAGS-test-tgmath.c = -fno-builtin
-+CFLAGS-test-tgmath-ret.c = -fno-builtin
- CPPFLAGS-test-ifloat.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \
- -DTEST_FAST_MATH
- CPPFLAGS-test-idouble.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \
---- glibc-2.3.2/math/libm-test.inc 2003-02-15 01:55:23.000000000 -0500
-+++ glibc-2.3.2/math/libm-test.inc 2003-04-12 11:39:43.000000000 -0400
-@@ -1537,7 +1537,7 @@
- TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L);
-- TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L);
-+ TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L);
-
- END (ccos, complex);
- }
-@@ -1606,7 +1606,7 @@
-
- TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L);
-
-- TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L);
-+ TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L);
-
- END (ccosh, complex);
- }
-@@ -1836,7 +1836,7 @@
- TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L);
-- TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L);
-+ TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L);
-
- END (clog10, complex);
- }
-@@ -2072,7 +2072,7 @@
- TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L);
-- TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L);
-+ TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L);
-
- END (csin, complex);
- }
-@@ -2140,7 +2140,7 @@
- TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L);
-- TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L);
-+ TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L);
-
- END (csinh, complex);
- }
-@@ -2264,7 +2264,7 @@
- TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L);
-- TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L);
-+ TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L);
-
- END (ctan, complex);
- }
-@@ -2323,7 +2323,7 @@
- TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
-
- TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L);
-- TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L);
-+ TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L);
-
- END (ctanh, complex);
- }
-@@ -3067,8 +3067,8 @@
-
- TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
- TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
-- TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1);
-- TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1);
-+ TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
-+ TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
-
- END (lgamma);
- }
-@@ -4078,8 +4078,8 @@
- TEST_f_f (tgamma, 1, 1);
- TEST_f_f (tgamma, 4, 6);
-
-- TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L);
-- TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L);
-+ TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L);
-+ TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L);
-
- END (tgamma);
- }
---- glibc-2.3.2/math/math_private.h 2001-09-24 21:13:41.000000000 -0400
-+++ glibc-2.3.2/math/math_private.h 2003-09-19 22:37:05.000000000 -0400
-@@ -232,6 +232,9 @@
- extern float __kernel_tanf (float,float,int);
- extern int __kernel_rem_pio2f (float*,float*,int,int,int, const int32_t*);
-
-+/* internal functions. */
-+extern float __copysignf (float x, float __y);
-+
-
- /* ieee style elementary long double functions */
- extern long double __ieee754_sqrtl (long double);
---- glibc-2.3.2/math/test-fenv.c 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/math/test-fenv.c 2003-05-24 14:06:22.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de> and
- Ulrich Drepper <drepper@cygnus.com>, 1997.
-@@ -350,7 +350,8 @@
- int status;
- pid_t pid;
-
-- printf ("Test: after fedisable (%s) processes will abort\n", flag_name);
-+ printf ("Test: after fedisableexcept (%s) processes will abort\n",
-+ flag_name);
- printf (" when feraiseexcept (%s) is called.\n", flag_name);
- pid = fork ();
- if (pid == 0)
-@@ -403,7 +404,8 @@
- int exception;
- pid_t pid;
-
-- printf ("Test: after fedisable (%s) processes will not abort\n", flag_name);
-+ printf ("Test: after fedisableexcept (%s) processes will not abort\n",
-+ flag_name);
- printf (" when feraiseexcept (%s) is called.\n", flag_name);
- pid = fork ();
- if (pid == 0)
---- glibc-2.3.2/math/test-tgmath-ret.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/math/test-tgmath-ret.c 2003-06-16 03:52:41.000000000 -0400
-@@ -0,0 +1,85 @@
-+/* Test compilation of tgmath macros.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Jaeger <aj@suse.de>, 2003.
-+
-+ 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 <math.h>
-+#include <complex.h>
-+#include <tgmath.h>
-+#include <stdio.h>
-+
-+static float fx;
-+static double dx;
-+static long double lx;
-+static int errors = 0;
-+
-+static void
-+our_error (const char *c)
-+{
-+ puts (c);
-+ ++errors;
-+}
-+
-+/* First function where the return type is constant. */
-+
-+#define CHECK_RET_CONST_TYPE(func, rettype, arg, name) \
-+ if (sizeof (func (arg)) != sizeof (rettype)) \
-+ our_error ("Return size of " #func " is wrong with " #name " argument");
-+
-+#define CHECK_RET_CONST_FLOAT(func, rettype) \
-+ CHECK_RET_CONST_TYPE (func, rettype, fx, float)
-+#define CHECK_RET_CONST_DOUBLE(func, rettype) \
-+ CHECK_RET_CONST_TYPE (func, rettype, dx, double)
-+#ifdef NO_LONG_DOUBLE
-+# define CHECK_RET_CONST_LDOUBLE(func, rettype)
-+#else
-+# define CHECK_RET_CONST_LDOUBLE(func, rettype) \
-+ CHECK_RET_CONST_TYPE (func, rettype, lx, long double)
-+#endif
-+
-+#define CHECK_RET_CONST(func, rettype) \
-+static void \
-+check_return_ ##func (void) \
-+{ \
-+ CHECK_RET_CONST_FLOAT (func, rettype) \
-+ CHECK_RET_CONST_DOUBLE (func, rettype) \
-+ CHECK_RET_CONST_LDOUBLE (func, rettype) \
-+}
-+
-+CHECK_RET_CONST(ilogb, int)
-+CHECK_RET_CONST(lrint, long)
-+CHECK_RET_CONST(lround, long)
-+CHECK_RET_CONST(llrint, long long)
-+CHECK_RET_CONST(llround, long long)
-+
-+static int
-+do_test (void)
-+{
-+ check_return_ilogb ();
-+ check_return_lrint ();
-+ check_return_lround ();
-+ check_return_llrint ();
-+ check_return_llround ();
-+
-+ printf ("%Zd\n", sizeof(carg (lx)));
-+
-+ return errors != 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/math/test-tgmath.c 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/math/test-tgmath.c 2003-04-12 11:39:43.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test compilation of tgmath macros.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com> and
- Ulrich Drepper <drepper@redhat.com>, 2001.
-@@ -162,7 +162,7 @@
- static void
- F(compile_test) (void)
- {
-- TYPE a, b, c;
-+ TYPE a, b, c = 1.0;
- int i;
- long int j;
- long long int k;
---- glibc-2.3.2/math/tgmath.h 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/math/tgmath.h 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 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
-@@ -70,7 +70,18 @@
- __tgmres = Fct (Val); \
- else if (sizeof (Val) == sizeof (float)) \
- __tgmres = Fct##f (Val); \
-- else \
-+ else \
-+ __tgmres = __tgml(Fct) (Val); \
-+ __tgmres; }))
-+
-+# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \
-+ (__extension__ ({ RetType __tgmres; \
-+ if (sizeof (Val) == sizeof (double) \
-+ || __builtin_classify_type (Val) != 8) \
-+ __tgmres = Fct (Val); \
-+ else if (sizeof (Val) == sizeof (float)) \
-+ __tgmres = Fct##f (Val); \
-+ else \
- __tgmres = __tgml(Fct) (Val); \
- __tgmres; }))
-
-@@ -81,7 +92,7 @@
- __tgmres = Fct (Val1, Val2); \
- else if (sizeof (Val1) == sizeof (float)) \
- __tgmres = Fct##f (Val1, Val2); \
-- else \
-+ else \
- __tgmres = __tgml(Fct) (Val1, Val2); \
- __tgmres; }))
-
-@@ -155,7 +166,7 @@
- else \
- __tgmres = Cfct (Val); \
- } \
-- else \
-+ else \
- { \
- if (sizeof (__real__ (Val)) == sizeof (Val)) \
- __tgmres = Fct##f (Val); \
-@@ -166,19 +177,6 @@
-
- /* XXX This definition has to be changed as soon as the compiler understands
- the imaginary keyword. */
--# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
-- (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
-- if (sizeof (Val) == sizeof (__complex__ double) \
-- || __builtin_classify_type (__real__ (Val)) != 8) \
-- __tgmres = Fct (Val); \
-- else if (sizeof (Val) == sizeof (__complex__ float)) \
-- __tgmres = Fct##f (Val); \
-- else \
-- __tgmres = __tgml(Fct) (Val); \
-- __tgmres; }))
--
--/* XXX This definition has to be changed as soon as the compiler understands
-- the imaginary keyword. */
- # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \
- (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
- if ((sizeof (__real__ (Val1)) > sizeof (double) \
-@@ -345,13 +343,13 @@
-
- /* Round X to nearest integral value according to current rounding
- direction. */
--#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
--#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
-+#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint)
-+#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint)
-
- /* Round X to nearest integral value, rounding halfway cases away from
- zero. */
--#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
--#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
-+#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround)
-+#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround)
-
-
- /* Return X with its signed changed to Y's. */
-@@ -389,7 +387,7 @@
- __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln)
-
- /* Return the binary exponent of X, which must be nonzero. */
--#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb)
-+#define ilogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, int, ilogb)
-
-
- /* Return positive difference between X and Y. */
-@@ -410,21 +408,21 @@
- /* Absolute value, conjugates, and projection. */
-
- /* Argument value of Z. */
--#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg)
-+#define carg(Val) __TGMATH_UNARY_REAL_IMAG (Val, carg, carg)
-
- /* Complex conjugate of Z. */
--#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj)
-+#define conj(Val) __TGMATH_UNARY_REAL_IMAG (Val, conj, conj)
-
- /* Projection of Z onto the Riemann sphere. */
--#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj)
-+#define cproj(Val) __TGMATH_UNARY_REAL_IMAG (Val, cproj, cproj)
-
-
- /* Decomposing complex values. */
-
- /* Imaginary part of Z. */
--#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag)
-+#define cimag(Val) __TGMATH_UNARY_REAL_IMAG (Val, cimag, cimag)
-
- /* Real part of Z. */
--#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal)
-+#define creal(Val) __TGMATH_UNARY_REAL_IMAG (Val, creal, creal)
-
- #endif /* tgmath.h */
---- glibc-2.3.2/misc/Makefile 2002-08-27 00:52:37.000000000 -0400
-+++ glibc-2.3.2/misc/Makefile 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1991-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
-@@ -52,7 +52,7 @@
- chflags fchflags \
- insremque getttyent getusershell getpass ttyslot \
- syslog syscall daemon \
-- mmap mmap64 munmap mprotect msync madvise mincore \
-+ mmap mmap64 munmap mprotect msync madvise mincore remap_file_pages\
- mlock munlock mlockall munlockall \
- efgcvt efgcvt_r qefgcvt qefgcvt_r \
- hsearch hsearch_r tsearch lsearch \
-@@ -75,8 +75,21 @@
-
- tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch
-
--CFLAGS-tsearch.c = $(exceptions)
--CFLAGS-lsearch.c = $(exceptions)
-+CFLAGS-tsearch.c = $(uses-callbacks)
-+CFLAGS-lsearch.c = $(uses-callbacks)
-+CFLAGS-pselect.c = -fexceptions
-+CFLAGS-readv.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-usleep.c = -fexceptions
-+CFLAGS-syslog.c = -fexceptions
-+CFLAGS-error.c = -fexceptions
-+CFLAGS-getpass.c = -fexceptions
-+CFLAGS-mkstemp.c = -fexceptions
-+CFLAGS-mkstemp64.c = -fexceptions
-+CFLAGS-getsysstats.c = -fexceptions
-+CFLAGS-getusershell.c = -fexceptions
-+CFLAGS-err.c = -fexceptions
-+CFLAGS-tst-tsearch.c = $(stack-align-test-flags)
-
- include ../Rules
-
---- glibc-2.3.2/misc/Versions 2002-12-18 17:49:52.000000000 -0500
-+++ glibc-2.3.2/misc/Versions 2003-03-15 15:02:11.000000000 -0500
-@@ -127,6 +127,9 @@
- # s*
- setxattr;
- }
-+ GLIBC_2.3.3 {
-+ remap_file_pages;
-+ }
- GLIBC_PRIVATE {
- # functions which have an additional interface since they are
- # cancelable.
---- glibc-2.3.2/misc/daemon.c 2002-04-08 03:02:09.000000000 -0400
-+++ glibc-2.3.2/misc/daemon.c 2003-04-24 20:05:58.000000000 -0400
-@@ -31,12 +31,14 @@
- static char sccsid[] = "@(#)daemon.c 8.1 (Berkeley) 6/4/93";
- #endif /* LIBC_SCCS and not lint */
-
-+#include <errno.h>
- #include <fcntl.h>
- #include <paths.h>
- #include <unistd.h>
- #include <sys/stat.h>
-
- #include <device-nrs.h>
-+#include <not-cancel.h>
-
- int
- daemon(nochdir, noclose)
-@@ -59,7 +61,8 @@
- if (!nochdir)
- (void)__chdir("/");
-
-- if (!noclose && (fd = __open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
-+ if (!noclose
-+ && (fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- struct stat64 st;
-
- if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) == 0
-@@ -74,7 +77,7 @@
- if (fd > 2)
- (void)__close (fd);
- } else {
-- (void)__close (fd);
-+ close_not_cancel_no_status (fd);
- return -1;
- }
- }
---- glibc-2.3.2/misc/err.h 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/misc/err.h 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* 4.4BSD utility functions for error messages.
-- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -33,25 +33,25 @@
- /* Print "program: ", FORMAT, ": ", the standard error string for errno,
- and a newline, on stderr. */
- extern void warn (__const char *__format, ...)
-- __THROW __attribute__ ((__format__ (__printf__, 1, 2)));
-+ __attribute__ ((__format__ (__printf__, 1, 2)));
- extern void vwarn (__const char *__format, __gnuc_va_list)
-- __THROW __attribute__ ((__format__ (__printf__, 1, 0)));
-+ __attribute__ ((__format__ (__printf__, 1, 0)));
-
- /* Likewise, but without ": " and the standard error string. */
- extern void warnx (__const char *__format, ...)
-- __THROW __attribute__ ((__format__ (__printf__, 1, 2)));
-+ __attribute__ ((__format__ (__printf__, 1, 2)));
- extern void vwarnx (__const char *__format, __gnuc_va_list)
-- __THROW __attribute__ ((__format__ (__printf__, 1, 0)));
-+ __attribute__ ((__format__ (__printf__, 1, 0)));
-
- /* Likewise, and then exit with STATUS. */
- extern void err (int __status, __const char *__format, ...)
-- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
-+ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
- extern void verr (int __status, __const char *__format, __gnuc_va_list)
-- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
-+ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
- extern void errx (int __status, __const char *__format, ...)
-- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
-+ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
- extern void verrx (int __status, __const char *, __gnuc_va_list)
-- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
-+ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
-
- __END_DECLS
-
---- glibc-2.3.2/misc/error.c 2002-12-09 03:20:33.000000000 -0500
-+++ glibc-2.3.2/misc/error.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Error handler for noninteractive utilities
-- Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library. Its master source is NOT part of
- the C library, however. The master source lives in /gd/gnu/lib.
-
-@@ -92,6 +92,8 @@
- # undef putc
- # define putc(c, fp) INTUSE(_IO_putc) (c, fp)
-
-+# include <bits/libc-lock.h>
-+
- #else /* not _LIBC */
-
- # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
-@@ -255,6 +257,14 @@
- va_list args;
- #endif
-
-+#if defined _LIBC && defined __libc_ptf_call
-+ /* We do not want this call to be cut short by a thread
-+ cancellation. Therefore disable cancellation for now. */
-+ int state = PTHREAD_CANCEL_ENABLE;
-+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-+ 0);
-+#endif
-+
- fflush (stdout);
- #ifdef _LIBC
- _IO_flockfile (stderr);
-@@ -288,6 +298,9 @@
-
- #ifdef _LIBC
- _IO_funlockfile (stderr);
-+# ifdef __libc_ptf_call
-+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-+# endif
- #endif
- }
-
-@@ -328,6 +341,14 @@
- old_line_number = line_number;
- }
-
-+#if defined _LIBC && defined __libc_ptf_call
-+ /* We do not want this call to be cut short by a thread
-+ cancellation. Therefore disable cancellation for now. */
-+ int state = PTHREAD_CANCEL_ENABLE;
-+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-+ 0);
-+#endif
-+
- fflush (stdout);
- #ifdef _LIBC
- _IO_flockfile (stderr);
-@@ -371,6 +392,9 @@
-
- #ifdef _LIBC
- _IO_funlockfile (stderr);
-+# ifdef __libc_ptf_call
-+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-+# endif
- #endif
- }
-
---- glibc-2.3.2/misc/error.h 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/misc/error.h 2003-09-19 22:37:05.000000000 -0400
-@@ -1,7 +1,6 @@
- /* Declaration for error-reporting function
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-- This file is part of the GNU C Library. Its master source is NOT part of
-- the C library, however. The master source lives in /gd/gnu/lib.
-+ Copyright (C) 1995, 1996, 1997, 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
-@@ -38,17 +37,17 @@
- extern "C" {
- #endif
-
--#if defined (__STDC__) && __STDC__
-+#if defined __STDC__ && __STDC__
-
- /* Print a message with `fprintf (stderr, FORMAT, ...)';
- if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
- If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
-
--extern void error (int status, int errnum, const char *format, ...)
-+extern void error (int __status, int __errnum, const char *__format, ...)
- __attribute__ ((__format__ (__printf__, 3, 4)));
-
--extern void error_at_line (int status, int errnum, const char *fname,
-- unsigned int lineno, const char *format, ...)
-+extern void error_at_line (int __status, int __errnum, const char *__fname,
-+ unsigned int __lineno, const char *__format, ...)
- __attribute__ ((__format__ (__printf__, 5, 6)));
-
- /* If NULL, error will flush stdout, then print on stderr the program
---- glibc-2.3.2/misc/getpass.c 2001-08-17 10:28:56.000000000 -0400
-+++ glibc-2.3.2/misc/getpass.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992,93,94,95,96,97,98,99,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1992-1999, 2001, 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
-@@ -21,11 +21,10 @@
- #include <termios.h>
- #include <unistd.h>
-
--#ifdef USE_IN_LIBIO
--# include <wchar.h>
--# define flockfile(s) _IO_flockfile (s)
--# define funlockfile(s) _IO_funlockfile (s)
--#endif
-+#include <wchar.h>
-+#define flockfile(s) _IO_flockfile (s)
-+#define funlockfile(s) _IO_funlockfile (s)
-+#include <bits/libc-lock.h>
-
- /* It is desirable to use this bit on systems that have it.
- The only bit of terminal state we want to twiddle is echoing, which is
-@@ -36,6 +35,13 @@
- #define TCSASOFT 0
- #endif
-
-+static void
-+call_fclose (void *arg)
-+{
-+ if (arg != NULL)
-+ fclose (arg);
-+}
-+
- char *
- getpass (prompt)
- const char *prompt;
-@@ -50,7 +56,7 @@
- /* Try to write to and read from the terminal if we can.
- If we can't open the terminal, use stderr and stdin. */
-
-- in = fopen ("/dev/tty", "w+");
-+ in = fopen ("/dev/tty", "w+c");
- if (in == NULL)
- {
- in = stdin;
-@@ -64,6 +70,10 @@
- out = in;
- }
-
-+ /* Make sure the stream we opened is closed even if the thread is
-+ canceled. */
-+ __libc_cleanup_push (call_fclose, in == out ? in : NULL);
-+
- flockfile (out);
-
- /* Turn echoing off if it is on now. */
-@@ -117,6 +127,8 @@
-
- funlockfile (out);
-
-+ __libc_cleanup_pop (0);
-+
- if (in != stdin)
- /* We opened the terminal; now close it. */
- fclose (in);
---- glibc-2.3.2/misc/getttyent.c 2002-08-03 22:19:58.000000000 -0400
-+++ glibc-2.3.2/misc/getttyent.c 2003-09-19 22:37:05.000000000 -0400
-@@ -192,7 +192,7 @@
- if (tf) {
- (void)rewind(tf);
- return (1);
-- } else if ((tf = fopen(_PATH_TTYS, "r"))) {
-+ } else if ((tf = fopen(_PATH_TTYS, "rc"))) {
- /* We do the locking ourselves. */
- __fsetlocking (tf, FSETLOCKING_BYCALLER);
- return (1);
---- glibc-2.3.2/misc/getusershell.c 2001-07-17 04:05:26.000000000 -0400
-+++ glibc-2.3.2/misc/getusershell.c 2003-09-19 22:37:05.000000000 -0400
-@@ -100,7 +100,7 @@
- if (strings != NULL)
- free(strings);
- strings = NULL;
-- if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
-+ if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL)
- return (char **) okshells;
- if (fstat64(fileno(fp), &statb) == -1) {
- (void)fclose(fp);
---- glibc-2.3.2/misc/mntent_r.c 2002-04-09 03:16:43.000000000 -0400
-+++ glibc-2.3.2/misc/mntent_r.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Utilities for reading/writing fstab, mtab, etc.
-- Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -38,7 +38,12 @@
- FILE *
- __setmntent (const char *file, const char *mode)
- {
-- FILE *result = fopen (file, mode);
-+ /* Extend the mode parameter with "c" to disable cancellation in the
-+ I/O functions. */
-+ size_t modelen = strlen (mode);
-+ char newmode[modelen + 2];
-+ memcpy (mempcpy (newmode, mode, modelen), "c", 2);
-+ FILE *result = fopen (file, newmode);
-
- if (result != NULL)
- /* We do the locking ourselves. */
---- glibc-2.3.2/misc/sys/mman.h 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/misc/sys/mman.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Definitions for BSD-style memory management.
-- Copyright (C) 1994-1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1999, 2000, 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
-@@ -83,8 +83,11 @@
-
- /* Synchronize the region starting at ADDR and extending LEN bytes with the
- file it maps. Filesystem operations on a file being mapped are
-- unpredictable before this is done. Flags are from the MS_* set. */
--extern int msync (void *__addr, size_t __len, int __flags) __THROW;
-+ unpredictable before this is done. Flags are from the MS_* set.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int msync (void *__addr, size_t __len, int __flags);
-
- #ifdef __USE_BSD
- /* Advise the system about particular usage patterns the program follows
-@@ -124,7 +127,13 @@
- The status is returned in a vector of bytes. The least significant
- bit of each byte is 1 if the referenced page is in memory, otherwise
- it is zero. */
--extern int mincore (void *__start, size_t __len, unsigned char *__vec);
-+extern int mincore (void *__start, size_t __len, unsigned char *__vec)
-+ __THROW;
-+
-+/* Remap arbitrary pages of a shared backing store within an existing
-+ VMA. */
-+extern int remap_file_pages (void *__start, size_t __size, int __prot,
-+ size_t __pgoff, int __flags) __THROW;
- #endif
-
-
---- glibc-2.3.2/misc/sys/select.h 2002-08-02 01:00:55.000000000 -0400
-+++ glibc-2.3.2/misc/sys/select.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* `fd_set' type and related macros, and `select'/`pselect' declarations.
-- Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1996,97,98,99,2000,01,02,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
-@@ -102,21 +102,27 @@
- readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
- (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
- after waiting the interval specified therein. Returns the number of ready
-- descriptors, or -1 for errors. */
-+ descriptors, or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int select (int __nfds, fd_set *__restrict __readfds,
- fd_set *__restrict __writefds,
- fd_set *__restrict __exceptfds,
-- struct timeval *__restrict __timeout) __THROW;
-+ struct timeval *__restrict __timeout);
-
- #ifdef __USE_XOPEN2K
- /* Same as above only that the TIMEOUT value is given with higher
- resolution and a sigmask which is been set temporarily. This version
-- should be used. */
-+ should be used.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int pselect (int __nfds, fd_set *__restrict __readfds,
- fd_set *__restrict __writefds,
- fd_set *__restrict __exceptfds,
- const struct timespec *__restrict __timeout,
-- const __sigset_t *__restrict __sigmask) __THROW;
-+ const __sigset_t *__restrict __sigmask);
- #endif
-
- __END_DECLS
---- glibc-2.3.2/misc/sys/syslog.h 2000-12-08 12:05:25.000000000 -0500
-+++ glibc-2.3.2/misc/sys/syslog.h 2003-09-19 22:37:05.000000000 -0400
-@@ -168,24 +168,37 @@
-
- __BEGIN_DECLS
-
--/* Close desriptor used to write to system logger. */
--extern void closelog (void) __THROW;
-+/* Close desriptor used to write to system logger.
-
--/* Open connection to system logger. */
--extern void openlog (__const char *__ident, int __option, int __facility)
-- __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void closelog (void);
-+
-+/* Open connection to system logger.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void openlog (__const char *__ident, int __option, int __facility);
-
- /* Set the log mask level. */
- extern int setlogmask (int __mask) __THROW;
-
--/* Generate a log message using FMT string and option arguments. */
--extern void syslog (int __pri, __const char *__fmt, ...) __THROW
-+/* Generate a log message using FMT string and option arguments.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void syslog (int __pri, __const char *__fmt, ...)
- __attribute__ ((__format__(__printf__, 2, 3)));
-
- #ifdef __USE_BSD
--/* Generate a log message using FMT and using arguments pointed to by AP. */
-+/* Generate a log message using FMT and using arguments pointed to by AP.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
-- __THROW __attribute__ ((__format__(__printf__, 2, 0)));
-+ __attribute__ ((__format__(__printf__, 2, 0)));
- #endif
-
- __END_DECLS
---- glibc-2.3.2/misc/sys/uio.h 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/misc/sys/uio.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 92, 96, 97, 98, 99, 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
-@@ -33,17 +33,21 @@
- buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
- The buffers are filled in the order specified.
- Operates just like `read' (see <unistd.h>) except that data are
-- put in VECTOR instead of a contiguous buffer. */
--extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count)
-- __THROW;
-+ put in VECTOR instead of a contiguous buffer.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count);
-
- /* Write data pointed by the buffers described by VECTOR, which
- is a vector of COUNT `struct iovec's, to file descriptor FD.
- The data is written in the order specified.
- Operates just like `write' (see <unistd.h>) except that the data
-- are taken from VECTOR instead of a contiguous buffer. */
--extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count)
-- __THROW;
-+ are taken from VECTOR instead of a contiguous buffer.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count);
-
- __END_DECLS
-
---- glibc-2.3.2/misc/syslog.c 2002-12-11 21:00:24.000000000 -0500
-+++ glibc-2.3.2/misc/syslog.c 2003-08-21 08:37:07.000000000 -0400
-@@ -41,6 +41,7 @@
- #include <fcntl.h>
- #include <paths.h>
- #include <stdio.h>
-+#include <stdio_ext.h>
- #include <string.h>
- #include <time.h>
- #include <unistd.h>
-@@ -74,9 +75,27 @@
- static void openlog_internal(const char *, int, int) internal_function;
- static void closelog_internal(void);
- static void sigpipe_handler (int);
--#ifdef _LIBC_REENTRANT
--static void cancel_handler (void *);
--#endif
-+
-+
-+struct cleanup_arg
-+{
-+ void *buf;
-+ struct sigaction *oldaction;
-+};
-+
-+static void
-+cancel_handler (void *ptr)
-+{
-+ /* Restore the old signal handler. */
-+ struct cleanup_arg *clarg = (struct cleanup_arg *) ptr;
-+
-+ if (clarg != NULL && clarg->oldaction != NULL)
-+ __sigaction (SIGPIPE, clarg->oldaction, NULL);
-+
-+ /* Free the lock. */
-+ __libc_lock_unlock (syslog_lock);
-+}
-+
-
- /*
- * syslog, vsyslog --
-@@ -118,7 +137,6 @@
- size_t bufsize = 0;
- size_t prioff, msgoff;
- struct sigaction action, oldaction;
-- struct sigaction *oldaction_ptr = NULL;
- int sigpipe;
- int saved_errno = errno;
- char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"];
-@@ -165,6 +183,7 @@
- }
- else
- {
-+ __fsetlocking (f, FSETLOCKING_BYCALLER);
- prioff = fprintf (f, "<%d>", pri);
- (void) time (&now);
- #ifdef USE_IN_LIBIO
-@@ -182,9 +201,12 @@
- if (LogTag != NULL)
- fputs_unlocked (LogTag, f);
- if (LogStat & LOG_PID)
-- fprintf (f, "[%d]", __getpid ());
-+ fprintf (f, "[%d]", (int) __getpid ());
- if (LogTag != NULL)
-- putc_unlocked (':', f), putc_unlocked (' ', f);
-+ {
-+ putc_unlocked (':', f);
-+ putc_unlocked (' ', f);
-+ }
-
- /* Restore errno for %m format. */
- __set_errno (saved_errno);
-@@ -212,16 +234,22 @@
- v->iov_base = (char *) "\n";
- v->iov_len = 1;
- }
-+
-+ __libc_cleanup_push (free, buf);
-+
-+ /* writev is a cancellation point. */
- (void)__writev(STDERR_FILENO, iov, v - iov + 1);
-+
-+ __libc_cleanup_pop (0);
- }
-
--#ifdef _LIBC_REENTRANT
- /* Prepare for multiple users. We have to take care: open and
- write are cancellation points. */
-- __libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler,
-- &oldaction_ptr);
-+ struct cleanup_arg clarg;
-+ clarg.buf = buf;
-+ clarg.oldaction = NULL;
-+ __libc_cleanup_push (cancel_handler, &clarg);
- __libc_lock_lock (syslog_lock);
--#endif
-
- /* Prepare for a broken connection. */
- memset (&action, 0, sizeof (action));
-@@ -229,7 +257,7 @@
- sigemptyset (&action.sa_mask);
- sigpipe = __sigaction (SIGPIPE, &action, &oldaction);
- if (sigpipe == 0)
-- oldaction_ptr = &oldaction;
-+ clarg.oldaction = &oldaction;
-
- /* Get connected, output the message to the local logger. */
- if (!connected)
-@@ -271,11 +299,9 @@
- if (sigpipe == 0)
- __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
-
--#ifdef _LIBC_REENTRANT
- /* End of critical section. */
-- __libc_cleanup_region_end (0);
-+ __libc_cleanup_pop (0);
- __libc_lock_unlock (syslog_lock);
--#endif
-
- free (buf);
- }
-@@ -283,6 +309,7 @@
-
- static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */
-
-+
- static void
- internal_function
- openlog_internal(const char *ident, int logstat, int logfac)
-@@ -312,8 +339,9 @@
- == -1)
- {
- int saved_errno = errno;
-- (void)__close(LogFile);
-+ int fd = LogFile;
- LogFile = -1;
-+ (void)__close(fd);
- if (LogType == SOCK_DGRAM
- && saved_errno == EPROTOTYPE)
- {
-@@ -329,28 +357,16 @@
- }
- }
-
--
--static void
--log_cleanup (void *arg)
--{
-- __libc_lock_unlock (syslog_lock);
--}
--
- void
- openlog (const char *ident, int logstat, int logfac)
- {
--#ifdef _LIBC_REENTRANT
-- /* Protect against multiple users. */
-- __libc_cleanup_region_start (1, log_cleanup, NULL);
-+ /* Protect against multiple users and cancellation. */
-+ __libc_cleanup_push (cancel_handler, NULL);
- __libc_lock_lock (syslog_lock);
--#endif
-
- openlog_internal (ident, logstat, logfac);
-
--#ifdef _LIBC_REENTRANT
-- /* Free the lock. */
-- __libc_cleanup_region_end (1);
--#endif
-+ __libc_cleanup_pop (1);
- }
-
- static void
-@@ -373,36 +389,17 @@
- void
- closelog ()
- {
--#ifdef _LIBC_REENTRANT
-- /* Protect against multiple users. */
-- __libc_cleanup_region_start (1, log_cleanup, NULL);
-+ /* Protect against multiple users and cancellation. */
-+ __libc_cleanup_push (cancel_handler, NULL);
- __libc_lock_lock (syslog_lock);
--#endif
-
- closelog_internal ();
- LogTag = NULL;
- LogType = SOCK_DGRAM; /* this is the default */
-
--#ifdef _LIBC_REENTRANT
-- /* Free the lock. */
-- __libc_cleanup_region_end (1);
--#endif
--}
--
--#ifdef _LIBC_REENTRANT
--static void
--cancel_handler (void *ptr)
--{
-- /* Restore the old signal handler. */
-- struct sigaction *oldaction = *((struct sigaction **) ptr);
--
-- if (oldaction != (struct sigaction *) NULL)
-- __sigaction (SIGPIPE, oldaction, (struct sigaction *) NULL);
--
- /* Free the lock. */
-- __libc_lock_unlock (syslog_lock);
-+ __libc_cleanup_pop (1);
- }
--#endif
-
- /* setlogmask -- set the log mask level */
- int
---- glibc-2.3.2/misc/tst-tsearch.c 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/misc/tst-tsearch.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test program for tsearch et al.
-- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 2001, 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
-@@ -25,6 +25,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <search.h>
-+#include <tst-stack-align.h>
-
- #define SEED 0
- #define BALANCED 1
-@@ -72,10 +73,14 @@
- /* Maximum depth during a tree walk. */
- static int max_depth;
-
-+static int stack_align_check[2];
-+
- /* Compare two keys. */
- static int
- cmp_fn (const void *a, const void *b)
- {
-+ if (!stack_align_check[0])
-+ stack_align_check[0] = TEST_STACK_ALIGN () ? -1 : 1;
- return *(const int *) a - *(const int *) b;
- }
-
-@@ -103,6 +108,9 @@
- {
- int key = **(int **) nodep;
-
-+ if (!stack_align_check[1])
-+ stack_align_check[1] = TEST_STACK_ALIGN () ? -1 : 1;
-+
- if (depth > max_depth)
- max_depth = depth;
- if (which == leaf || which == preorder)
-@@ -329,5 +337,17 @@
- total_error |= error;
- }
-
-+ for (i = 0; i < 2; ++i)
-+ if (stack_align_check[i] == 0)
-+ {
-+ printf ("stack alignment check %d not run\n", i);
-+ total_error |= 1;
-+ }
-+ else if (stack_align_check[i] != 1)
-+ {
-+ printf ("stack insufficiently aligned in check %d\n", i);
-+ total_error |= 1;
-+ }
-+
- return total_error;
- }
---- glibc-2.3.2/nis/Makefile 2002-04-09 13:33:04.000000000 -0400
-+++ glibc-2.3.2/nis/Makefile 2003-08-21 08:37:07.000000000 -0400
-@@ -54,8 +54,7 @@
- nis_findserv nis_callback nis_clone_dir nis_clone_obj\
- nis_clone_res
-
--libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
-- nisplus-parser nss-nis nss-nisplus
-+libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
- libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
-
- libnss_nis-routines := $(addprefix nis-,$(databases)) nis-initgroups \
---- glibc-2.3.2/nis/nis_table.c 2001-07-07 15:21:06.000000000 -0400
-+++ glibc-2.3.2/nis/nis_table.c 2003-03-18 16:46:07.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (c) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
-
-@@ -30,7 +30,7 @@
- struct ib_request *ibreq = calloc (1, sizeof (ib_request));
- char buf[strlen (name) + 1];
- nis_attr *search_val = NULL;
-- int search_len = 0;
-+ size_t search_len = 0;
- char *cptr;
- size_t size = 0;
-
---- glibc-2.3.2/nis/nss_compat/compat-grp.c 2002-08-26 01:04:55.000000000 -0400
-+++ glibc-2.3.2/nis/nss_compat/compat-grp.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,1999,2001,2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
-
-@@ -17,25 +17,28 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
--#include <nss.h>
- #include <grp.h>
--#include <ctype.h>
--#include <bits/libc-lock.h>
--#include <string.h>
--#include <rpcsvc/yp.h>
--#include <rpcsvc/ypclnt.h>
--#include <rpcsvc/nis.h>
-+#include <nss.h>
- #include <nsswitch.h>
--
--#include "nss-nisplus.h"
--#include "nisplus-parser.h"
-+#include <stdio_ext.h>
-+#include <string.h>
-+#include <rpc/types.h>
-+#include <bits/libc-lock.h>
-
- static service_user *ni;
--static bool_t use_nisplus; /* default: group_compat: nis */
--static nis_name grptable; /* Name of the group table */
--static size_t grptablelen;
-+static enum nss_status (*nss_setgrent) (int stayopen);
-+static enum nss_status (*nss_getgrnam_r) (const char *name,
-+ struct group * grp, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_endgrent) (void);
-
- /* Get the declaration of the parser function. */
- #define ENTNAME grent
-@@ -47,25 +50,21 @@
- #define BLACKLIST_INITIAL_SIZE 512
- #define BLACKLIST_INCREMENT 256
- struct blacklist_t
-- {
-- char *data;
-- int current;
-- int size;
-- };
-+{
-+ char *data;
-+ int current;
-+ int size;
-+};
-
- struct ent_t
-- {
-- bool_t nis;
-- bool_t nis_first;
-- char *oldkey;
-- int oldkeylen;
-- nis_result *result;
-- FILE *stream;
-- struct blacklist_t blacklist;
-+{
-+ bool_t files;
-+ FILE *stream;
-+ struct blacklist_t blacklist;
- };
- typedef struct ent_t ent_t;
-
--static ent_t ext_ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
-+static ent_t ext_ent = {TRUE, NULL, {NULL, 0, 0}};
-
- /* Protect global state against multiple changers. */
- __libc_lock_define_initialized (static, lock)
-@@ -74,56 +73,27 @@
- static void blacklist_store_name (const char *, ent_t *);
- static int in_blacklist (const char *, int, ent_t *);
-
--static enum nss_status
--_nss_first_init (void)
-+/* Initialize the NSS interface/functions. The calling function must
-+ hold the lock. */
-+static void
-+init_nss_interface (void)
- {
-- if (ni == NULL)
-- {
-- __nss_database_lookup ("group_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
--
-- if (grptable == NULL)
-+ if (__nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0)
- {
-- static const char key[] = "group.org_dir.";
-- const char *local_dir = nis_local_directory ();
-- size_t len_local_dir = strlen (local_dir);
--
-- grptable = malloc (sizeof (key) + len_local_dir);
-- if (grptable == NULL)
-- return NSS_STATUS_TRYAGAIN;
--
-- grptablelen = ((char *) mempcpy (mempcpy (grptable,
-- key, sizeof (key) - 1),
-- local_dir, len_local_dir + 1)
-- - grptable) - 1;
-+ nss_setgrent = __nss_lookup_function (ni, "setgrent");
-+ nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
-+ nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
-+ nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
-+ nss_endgrent = __nss_lookup_function (ni, "endgrent");
- }
--
-- return NSS_STATUS_SUCCESS;
- }
-
- static enum nss_status
--internal_setgrent (ent_t *ent)
-+internal_setgrent (ent_t *ent, int stayopen)
- {
- enum nss_status status = NSS_STATUS_SUCCESS;
-
-- ent->nis = ent->nis_first = 0;
--
-- if (_nss_first_init () != NSS_STATUS_SUCCESS)
-- return NSS_STATUS_UNAVAIL;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
-+ ent->files = TRUE;
-
- if (ent->blacklist.data != NULL)
- {
-@@ -136,7 +106,7 @@
-
- if (ent->stream == NULL)
- {
-- ent->stream = fopen ("/etc/group", "r");
-+ ent->stream = fopen ("/etc/group", "rm");
-
- if (ent->stream == NULL)
- status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-@@ -145,25 +115,31 @@
- /* We have to make sure the file is `closed on exec'. */
- int result, flags;
-
-- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
-+ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
- if (result >= 0)
- {
- flags |= FD_CLOEXEC;
-- result = fcntl (fileno (ent->stream), F_SETFD, flags);
-+ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
- }
- if (result < 0)
- {
- /* Something went wrong. Close the stream and return a
-- failure. */
-+ failure. */
- fclose (ent->stream);
- ent->stream = NULL;
- status = NSS_STATUS_UNAVAIL;
- }
-+ else
-+ /* We take care of locking ourself. */
-+ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
- }
- }
- else
- rewind (ent->stream);
-
-+ if (status == NSS_STATUS_SUCCESS && nss_setgrent)
-+ return nss_setgrent (stayopen);
-+
- return status;
- }
-
-@@ -175,7 +151,10 @@
-
- __libc_lock_lock (lock);
-
-- result = internal_setgrent (&ext_ent);
-+ if (ni == NULL)
-+ init_nss_interface ();
-+
-+ result = internal_setgrent (&ext_ent, stayopen);
-
- __libc_lock_unlock (lock);
-
-@@ -186,27 +165,15 @@
- static enum nss_status
- internal_endgrent (ent_t *ent)
- {
-+ if (nss_endgrent)
-+ nss_endgrent ();
-+
- if (ent->stream != NULL)
- {
- fclose (ent->stream);
- ent->stream = NULL;
- }
-
-- ent->nis = ent->nis_first = 0;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
--
- if (ent->blacklist.data != NULL)
- {
- ent->blacklist.current = 1;
-@@ -233,239 +200,44 @@
- return result;
- }
-
-+/* get the next group from NSS (+ entry) */
- static enum nss_status
--getgrent_next_nis (struct group *result, ent_t *ent, char *buffer,
-+getgrent_next_nss (struct group *result, ent_t *ent, char *buffer,
- size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- char *domain;
-- char *outkey, *outval;
-- int outkeylen, outvallen, parse_res;
-- char *p;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_NOTFOUND;
-- }
-+ if (!nss_getgrent_r)
-+ return NSS_STATUS_UNAVAIL;
-
- do
- {
-- char *save_oldkey;
-- int save_oldlen;
-- bool_t save_nis_first;
-+ enum nss_status status;
-
-- if (ent->nis_first)
-- {
-- if (yp_first (domain, "group.byname", &outkey, &outkeylen,
-- &outval, &outvallen) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_UNAVAIL;
-- }
--
-- if ( buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- save_oldkey = ent->oldkey;
-- save_oldlen = ent->oldkeylen;
-- save_nis_first = TRUE;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- ent->nis_first = FALSE;
-- }
-- else
-- {
-- if (yp_next (domain, "group.byname", ent->oldkey, ent->oldkeylen,
-- &outkey, &outkeylen, &outval, &outvallen)
-- != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_NOTFOUND;
-- }
--
-- if ( buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- save_oldkey = ent->oldkey;
-- save_oldlen = ent->oldkeylen;
-- save_nis_first = FALSE;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- }
--
-- /* Copy the found data to our buffer... */
-- p = strncpy (buffer, outval, buflen);
--
-- /* ...and free the data. */
-- free (outval);
--
-- while (isspace (*p))
-- ++p;
--
-- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- free (ent->oldkey);
-- ent->oldkey = save_oldkey;
-- ent->oldkeylen = save_oldlen;
-- ent->nis_first = save_nis_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!save_nis_first)
-- free (save_oldkey);
-- }
--
-- if (parse_res &&
-- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
-- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
-+ if ((status = nss_getgrent_r (result, buffer, buflen, errnop)) !=
-+ NSS_STATUS_SUCCESS)
-+ return status;
- }
-- while (!parse_res);
--
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
--{
-- int parse_res;
--
-- do
-- {
-- nis_result *save_oldres;
-- bool_t save_nis_first;
--
-- if (ent->nis_first)
-- {
-- save_oldres = ent->result;
-- save_nis_first = TRUE;
-- ent->result = nis_first_entry(grptable);
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- return niserr2nss (ent->result->status);
-- }
-- ent->nis_first = FALSE;
-- }
-- else
-- {
-- nis_result *res;
--
-- save_oldres = ent->result;
-- save_nis_first = FALSE;
-- res = nis_next_entry(grptable, &ent->result->cookie);
-- ent->result = res;
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- return niserr2nss (ent->result->status);
-- }
-- }
-- parse_res = _nss_nisplus_parse_grent (ent->result, 0, result,
-- buffer, buflen, errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (ent->result);
-- ent->result = save_oldres;
-- ent->nis_first = save_nis_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!save_nis_first)
-- nis_freeresult (save_oldres);
-- }
--
-- if (parse_res &&
-- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
-- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
-- }
-- while (!parse_res);
-+ while (in_blacklist (result->gr_name, strlen (result->gr_name), ent));
-
- return NSS_STATUS_SUCCESS;
- }
-
- /* This function handle the +group entrys in /etc/group */
- static enum nss_status
--getgrnam_plusgroup (const char *name, struct group *result, char *buffer,
-- size_t buflen, int *errnop)
-+getgrnam_plusgroup (const char *name, struct group *result, ent_t *ent,
-+ char *buffer, size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- int parse_res;
--
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[strlen (name) + 24 + grptablelen];
--
-- sprintf(buf, "[name=%s],%s", name, grptable);
-- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen,
-- errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (res);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (res);
-- }
-- else /* Use NIS */
-- {
-- char *domain, *outval, *p;
-- int outvallen;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (yp_match (domain, "group.byname", name, strlen (name),
-- &outval, &outvallen) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ if (!nss_getgrnam_r)
-+ return NSS_STATUS_UNAVAIL;
-
-- /* Copy the found data to our buffer... */
-- p = strncpy (buffer, outval, buflen);
-+ if (nss_getgrnam_r (name, result, buffer, buflen, errnop) !=
-+ NSS_STATUS_SUCCESS)
-+ return NSS_STATUS_NOTFOUND;
-
-- /* ... and free the data. */
-- free (outval);
-- while (isspace (*p))
-- ++p;
-- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ if (in_blacklist (result->gr_name, strlen (result->gr_name), ent))
-+ return NSS_STATUS_NOTFOUND;
-
-- if (parse_res)
-- /* We found the entry. */
-- return NSS_STATUS_SUCCESS;
-- else
-- return NSS_STATUS_RETURN;
-+ /* We found the entry. */
-+ return NSS_STATUS_SUCCESS;
- }
-
- static enum nss_status
-@@ -483,8 +255,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -501,9 +273,9 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
- errnop)));
-
-@@ -531,41 +303,39 @@
- if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
- && result->gr_name[1] != '@')
- {
-- enum nss_status status;
-+ size_t len = strlen (result->gr_name);
-+ char buf[len];
-+ enum nss_status status;
-
- /* Store the group in the blacklist for the "+" at the end of
- /etc/group */
-- blacklist_store_name (&result->gr_name[1], ent);
-- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
-- buflen, errnop);
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-- break;
-- else
-- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-- || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
-- continue;
-- else
-- {
-- if (status == NSS_STATUS_TRYAGAIN)
-- {
-- /* The parser ran out of space. */
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- }
-- return status;
-- }
-+ memcpy (buf, &result->gr_name[1], len);
-+ status = getgrnam_plusgroup (&result->gr_name[1], result, ent,
-+ buffer, buflen, errnop);
-+ blacklist_store_name (buf, ent);
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ break;
-+ else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-+ || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
-+ continue;
-+ else
-+ {
-+ if (status == NSS_STATUS_TRYAGAIN)
-+ {
-+ /* The parser ran out of space. */
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ }
-+ return status;
-+ }
- }
-
- /* +:... */
- if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
- {
-- ent->nis = TRUE;
-- ent->nis_first = TRUE;
-+ ent->files = FALSE;
-
-- if (use_nisplus)
-- return getgrent_next_nisplus (result, ent, buffer, buflen, errnop);
-- else
-- return getgrent_next_nis (result, ent, buffer, buflen, errnop);
-+ return getgrent_next_nss (result, ent, buffer, buflen, errnop);
- }
- }
-
-@@ -573,39 +343,31 @@
- }
-
-
--static enum nss_status
--internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
--{
-- if (ent->nis)
-- {
-- if (use_nisplus)
-- return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop);
-- else
-- return getgrent_next_nis (gr, ent, buffer, buflen, errnop);
-- }
-- else
-- return getgrent_next_file (gr, ent, buffer, buflen, errnop);
--}
--
- enum nss_status
- _nss_compat_getgrent_r (struct group *grp, char *buffer, size_t buflen,
- int *errnop)
- {
-- enum nss_status status = NSS_STATUS_SUCCESS;
-+ enum nss_status result = NSS_STATUS_SUCCESS;
-
- __libc_lock_lock (lock);
-
- /* Be prepared that the setgrent function was not called before. */
-- if (ext_ent.stream == NULL)
-- status = internal_setgrent (&ext_ent);
-+ if (ni == NULL)
-+ init_nss_interface ();
-
-- if (status == NSS_STATUS_SUCCESS)
-- status = internal_getgrent_r (grp, &ext_ent, buffer, buflen, errnop);
-+ if (ext_ent.stream == NULL)
-+ result = internal_setgrent (&ext_ent, 1);
-
-+ if (result == NSS_STATUS_SUCCESS)
-+ {
-+ if (ext_ent.files)
-+ result = getgrent_next_file (grp, &ext_ent, buffer, buflen, errnop);
-+ else
-+ result = getgrent_next_nss (grp, &ext_ent, buffer, buflen, errnop);
-+ }
- __libc_lock_unlock (lock);
-
-- return status;
-+ return result;
- }
-
- /* Searches in /etc/group and the NIS/NIS+ map for a special group */
-@@ -624,9 +386,9 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-- return NSS_STATUS_NOTFOUND;
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
-+ return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
- {
-@@ -642,9 +404,9 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
- errnop)));
-
-@@ -681,8 +443,8 @@
- {
- enum nss_status status;
-
-- status = getgrnam_plusgroup (name, result, buffer, buflen,
-- errnop);
-+ status = getgrnam_plusgroup (name, result, ent,
-+ buffer, buflen, errnop);
- if (status == NSS_STATUS_RETURN)
- /* We couldn't parse the entry */
- continue;
-@@ -695,7 +457,8 @@
- {
- enum nss_status status;
-
-- status = getgrnam_plusgroup (name, result, buffer, buflen, errnop);
-+ status = getgrnam_plusgroup (name, result, ent,
-+ buffer, buflen, errnop);
- if (status == NSS_STATUS_RETURN)
- /* We couldn't parse the entry */
- continue;
-@@ -711,99 +474,27 @@
- _nss_compat_getgrnam_r (const char *name, struct group *grp,
- char *buffer, size_t buflen, int *errnop)
- {
-- ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
-- enum nss_status status;
-+ ent_t ent = {TRUE, NULL, {NULL, 0, 0}};
-+ enum nss_status result;
-
- if (name[0] == '-' || name[0] == '+')
- return NSS_STATUS_NOTFOUND;
-
- __libc_lock_lock (lock);
-
-- status = internal_setgrent (&ent);
-+ if (ni == NULL)
-+ init_nss_interface ();
-
- __libc_lock_unlock (lock);
-
-- if (status != NSS_STATUS_SUCCESS)
-- return status;
-+ result = internal_setgrent (&ent, 0);
-
-- status = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop);
-
- internal_endgrent (&ent);
-
-- return status;
--}
--
--/* This function handle the + entry in /etc/group */
--static enum nss_status
--getgrgid_plusgroup (gid_t gid, struct group *result, char *buffer,
-- size_t buflen, int *errnop)
--{
-- struct parser_data *data = (void *) buffer;
-- int parse_res;
--
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[24 + grptablelen];
--
-- sprintf(buf, "[gid=%lu],%s", (unsigned long int) gid, grptable);
-- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- if ((parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer,
-- buflen, errnop)) == -1)
-- {
-- nis_freeresult (res);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (res);
-- }
-- else /* Use NIS */
-- {
-- char buf[24];
-- char *domain, *outval, *p;
-- int outvallen;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- snprintf (buf, sizeof (buf), "%lu", (unsigned long int) gid);
--
-- if (yp_match (domain, "group.bygid", buf, strlen (buf),
-- &outval, &outvallen) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- /* Copy the found data to our buffer... */
-- p = strncpy (buffer, outval, buflen);
--
-- /* ... and free the data. */
-- free (outval);
--
-- while (isspace (*p))
-- p++;
-- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (parse_res)
-- /* We found the entry. */
-- return NSS_STATUS_SUCCESS;
-- else
-- return NSS_STATUS_RETURN;
-+ return result;
- }
-
- /* Searches in /etc/group and the NIS/NIS+ map for a special group id */
-@@ -822,8 +513,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -840,9 +531,9 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
- errnop)));
-
-@@ -866,8 +557,8 @@
- /* -group */
- if (result->gr_name[0] == '-' && result->gr_name[1] != '\0')
- {
-- blacklist_store_name (&result->gr_name[1], ent);
-- continue;
-+ blacklist_store_name (&result->gr_name[1], ent);
-+ continue;
- }
-
- /* +group */
-@@ -876,10 +567,10 @@
- enum nss_status status;
-
- /* Store the group in the blacklist for the "+" at the end of
-- /etc/group */
-- blacklist_store_name (&result->gr_name[1], ent);
-- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
-- buflen, errnop);
-+ /etc/group */
-+ blacklist_store_name (&result->gr_name[1], ent);
-+ status = getgrnam_plusgroup (&result->gr_name[1], result, ent,
-+ buffer, buflen, errnop);
- if (status == NSS_STATUS_SUCCESS && result->gr_gid == gid)
- break;
- else
-@@ -890,7 +581,7 @@
- {
- enum nss_status status;
-
-- status = getgrgid_plusgroup (gid, result, buffer, buflen, errnop);
-+ status = nss_getgrgid_r (gid, result, buffer, buflen, errnop);
- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
- return NSS_STATUS_NOTFOUND;
- else
-@@ -905,23 +596,24 @@
- _nss_compat_getgrgid_r (gid_t gid, struct group *grp,
- char *buffer, size_t buflen, int *errnop)
- {
-- ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
-- enum nss_status status;
-+ ent_t ent = {TRUE, NULL, {NULL, 0, 0}};
-+ enum nss_status result;
-
- __libc_lock_lock (lock);
-
-- status = internal_setgrent (&ent);
-+ if (ni == NULL)
-+ init_nss_interface ();
-
- __libc_lock_unlock (lock);
-
-- if (status != NSS_STATUS_SUCCESS)
-- return status;
-+ result = internal_setgrent (&ent, 0);
-
-- status = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop);
-
- internal_endgrent (&ent);
-
-- return status;
-+ return result;
- }
-
-
-@@ -983,7 +675,7 @@
-
- buf[0] = '|';
- cp = stpcpy (&buf[1], name);
-- *cp++= '|';
-+ *cp++ = '|';
- *cp = '\0';
- return strstr (ent->blacklist.data, buf) != NULL;
- }
---- glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2002-08-26 01:05:19.000000000 -0400
-+++ glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -17,27 +17,39 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <alloca.h>
-+#include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
--#include <nss.h>
- #include <grp.h>
--#include <ctype.h>
-+#include <nss.h>
-+#include <stdio_ext.h>
- #include <string.h>
- #include <unistd.h>
--#include <rpcsvc/yp.h>
--#include <rpcsvc/ypclnt.h>
--#include <rpcsvc/nis.h>
-+#include <rpc/types.h>
- #include <sys/param.h>
- #include <nsswitch.h>
--
--#include "nss-nis.h"
--#include "nss-nisplus.h"
--#include "nisplus-parser.h"
-+#include <bits/libc-lock.h>
-
- static service_user *ni;
--static bool_t use_nisplus; /* default: group_compat: nis */
--static nis_name grptable; /* Name of the group table */
--static size_t grptablelen;
-+/* Type of the lookup function. */
-+static enum nss_status (*nss_initgroups_dyn) (const char *, gid_t,
-+ long int *, long int *,
-+ gid_t **, long int, int *);
-+static enum nss_status (*nss_setgrent) (int stayopen);
-+static enum nss_status (*nss_getgrnam_r) (const char *name,
-+ struct group * grp, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_endgrent) (void);
-+
-+/* Protect global state against multiple changers. */
-+__libc_lock_define_initialized (static, lock)
-+
-
- /* Get the declaration of the parser function. */
- #define ENTNAME grent
-@@ -49,29 +61,17 @@
- #define BLACKLIST_INITIAL_SIZE 512
- #define BLACKLIST_INCREMENT 256
- struct blacklist_t
-- {
-- char *data;
-- int current;
-- int size;
-- };
--
--struct response_t
- {
-- char *val;
-- struct response_t *next;
-+ char *data;
-+ int current;
-+ int size;
- };
-
- struct ent_t
-- {
-- bool_t nis;
-- bool_t nis_first;
-- char *oldkey;
-- int oldkeylen;
-- nis_result *result;
-- FILE *stream;
-- struct blacklist_t blacklist;
-- struct response_t *start;
-- struct response_t *next;
-+{
-+ bool_t files;
-+ FILE *stream;
-+ struct blacklist_t blacklist;
- };
- typedef struct ent_t ent_t;
-
-@@ -80,68 +80,26 @@
- static void blacklist_store_name (const char *, ent_t *);
- static int in_blacklist (const char *, int, ent_t *);
-
--static int
--saveit (int instatus, char *inkey, int inkeylen, char *inval,
-- int invallen, char *indata)
--{
-- ent_t *intern = (ent_t *) indata;
--
-- if (instatus != YP_TRUE)
-- return instatus;
--
-- if (inkey && inkeylen > 0 && inval && invallen > 0)
-- {
-- if (intern->start == NULL)
-- {
-- intern->start = malloc (sizeof (struct response_t));
-- if (intern->start == NULL)
-- return YP_FALSE;
-- intern->next = intern->start;
-- }
-- else
-- {
-- intern->next->next = malloc (sizeof (struct response_t));
-- if (intern->next->next == NULL)
-- return YP_FALSE;
-- intern->next = intern->next->next;
-- }
-- intern->next->next = NULL;
-- intern->next->val = malloc (invallen + 1);
-- if (intern->next->val == NULL)
-- return YP_FALSE;
-- strncpy (intern->next->val, inval, invallen);
-- intern->next->val[invallen] = '\0';
-- }
--
-- return 0;
--}
--
--static enum nss_status
--_nss_first_init (void)
-+/* Initialize the NSS interface/functions. The calling function must
-+ hold the lock. */
-+static void
-+init_nss_interface (void)
- {
-- if (ni == NULL)
-- {
-- __nss_database_lookup ("group_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ __libc_lock_lock (lock);
-
-- if (grptable == NULL)
-+ /* Retest. */
-+ if (ni == NULL
-+ && __nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0)
- {
-- static const char key[] = "group.org_dir.";
-- const char *local_dir = nis_local_directory ();
-- size_t len_local_dir = strlen (local_dir);
--
-- grptable = malloc (sizeof (key) + len_local_dir);
-- if (grptable == NULL)
-- return NSS_STATUS_TRYAGAIN;
--
-- grptablelen = ((char *) mempcpy (mempcpy (grptable,
-- key, sizeof (key) - 1),
-- local_dir, len_local_dir + 1)
-- - grptable) - 1;
-+ nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn");
-+ nss_setgrent = __nss_lookup_function (ni, "setgrent");
-+ nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
-+ nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
-+ nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
-+ nss_endgrent = __nss_lookup_function (ni, "endgrent");
- }
-
-- return NSS_STATUS_SUCCESS;
-+ __libc_lock_unlock (lock);
- }
-
- static enum nss_status
-@@ -149,26 +107,10 @@
- {
- enum nss_status status = NSS_STATUS_SUCCESS;
-
-- ent->nis = ent->nis_first = 0;
--
-- ent->start = NULL;
-- ent->next = NULL;
--
-- if (_nss_first_init () != NSS_STATUS_SUCCESS)
-- return NSS_STATUS_UNAVAIL;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
-+ ent->files = TRUE;
-
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
-+ if (ni == NULL)
-+ init_nss_interface ();
-
- if (ent->blacklist.data != NULL)
- {
-@@ -179,35 +121,33 @@
- else
- ent->blacklist.current = 0;
-
-+ ent->stream = fopen ("/etc/group", "rm");
-+
- if (ent->stream == NULL)
-+ status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-+ else
- {
-- ent->stream = fopen ("/etc/group", "r");
-+ /* We have to make sure the file is `closed on exec'. */
-+ int result, flags;
-
-- if (ent->stream == NULL)
-- status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-- else
-+ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
-+ if (result >= 0)
- {
-- /* We have to make sure the file is `closed on exec'. */
-- int result, flags;
--
-- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
-- if (result >= 0)
-- {
-- flags |= FD_CLOEXEC;
-- result = fcntl (fileno (ent->stream), F_SETFD, flags);
-- }
-- if (result < 0)
-- {
-- /* Something went wrong. Close the stream and return a
-- failure. */
-- fclose (ent->stream);
-- ent->stream = NULL;
-- status = NSS_STATUS_UNAVAIL;
-- }
-+ flags |= FD_CLOEXEC;
-+ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
-+ }
-+ if (result < 0)
-+ {
-+ /* Something went wrong. Close the stream and return a
-+ failure. */
-+ fclose (ent->stream);
-+ ent->stream = NULL;
-+ status = NSS_STATUS_UNAVAIL;
- }
-+ else
-+ /* We take care of locking ourself. */
-+ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
- }
-- else
-- rewind (ent->stream);
-
- return status;
- }
-@@ -222,21 +162,6 @@
- ent->stream = NULL;
- }
-
-- ent->nis = ent->nis_first = 0;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
--
- if (ent->blacklist.data != NULL)
- {
- ent->blacklist.current = 1;
-@@ -246,222 +171,145 @@
- else
- ent->blacklist.current = 0;
-
-- while (ent->start != NULL)
-- {
-- if (ent->start->val != NULL)
-- free (ent->start->val);
-- ent->next = ent->start;
-- ent->start = ent->start->next;
-- free (ent->next);
-- }
--
--
- return NSS_STATUS_SUCCESS;
- }
-
--static enum nss_status
--getgrent_next_nis (struct group *result, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
-+/* This function checks, if the user is a member of this group and if
-+ yes, add the group id to the list. */
-+static void
-+check_and_add_group (const char *user, gid_t group, long int *start,
-+ long int *size, gid_t **groupsp, long int limit,
-+ struct group *grp)
- {
-- struct parser_data *data = (void *) buffer;
-- char *domain, *p;
-- int parse_res;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_NOTFOUND;
-- }
--
-- if (ent->start == NULL)
-- {
-- struct ypall_callback ypcb;
-- enum nss_status status;
--
-- ypcb.foreach = saveit;
-- ypcb.data = (char *) ent;
-- status = yperr2nss (yp_all (domain, "group.byname", &ypcb));
-- ent->next = ent->start;
-+ gid_t *groups = *groupsp;
-+ char **member;
-
-- if (ent->start == NULL || status != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_UNAVAIL;
-- }
-- }
-+ /* Don't add main group to list of groups. */
-+ if (grp->gr_gid == group)
-+ return;
-+
-+ for (member = grp->gr_mem; *member != NULL; ++member)
-+ if (strcmp (*member, user) == 0)
-+ {
-+ /* Matches user. Insert this group. */
-+ if (*start == *size)
-+ {
-+ /* Need a bigger buffer. */
-+ gid_t *newgroups;
-+ long int newsize;
-
-+ if (limit > 0 && *size == limit)
-+ /* We reached the maximum. */
-+ return;
-
-- do
-- {
-- if (ent->next == NULL)
-- {
-- ent->nis = 0;
-- return NSS_STATUS_NOTFOUND;
-- }
--
-- /* Copy the found data to our buffer... */
-- p = strncpy (buffer, ent->next->val, buflen);
-- while (isspace (*p))
-- ++p;
-+ if (limit <= 0)
-+ newsize = 2 * *size;
-+ else
-+ newsize = MIN (limit, 2 * *size);
-
-- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ newgroups = realloc (groups, newsize * sizeof (*groups));
-+ if (newgroups == NULL)
-+ return;
-+ *groupsp = groups = newgroups;
-+ *size = newsize;
-+ }
-
-- ent->next = ent->next->next;
-+ groups[*start] = grp->gr_gid;
-+ *start += 1;
-
-- if (parse_res &&
-- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
-- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
-- }
-- while (!parse_res);
--
-- return NSS_STATUS_SUCCESS;
-+ break;
-+ }
- }
-
-+/* get the next group from NSS (+ entry). If the NSS module supports
-+ initgroups_dyn, get all entries at once. */
- static enum nss_status
--getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
-+getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
-+ gid_t group, long int *start, long int *size,
-+ gid_t **groupsp, long int limit, int *errnop)
- {
-- int parse_res;
-+ enum nss_status status;
-+ struct group grpbuf;
-
-- do
-- {
-- nis_result *save_oldres;
-- bool_t save_nis_first;
-+ /* if this module does not support getgrent_r and initgroups_dyn,
-+ abort. We cannot find the needed group entries. */
-+ if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
-+ return NSS_STATUS_UNAVAIL;
-
-- if (ent->nis_first)
-- {
-- save_oldres = ent->result;
-- save_nis_first = TRUE;
-- ent->result = nis_first_entry(grptable);
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- return niserr2nss (ent->result->status);
-- }
-- ent->nis_first = FALSE;
-- }
-- else
-- {
-- nis_result *res;
-+ /* Try nss_initgroups_dyn if supported. We also need getgrgid_r.
-+ If this function is not supported, step through the whole group
-+ database with getgrent_r. */
-+ if (nss_initgroups_dyn && nss_getgrgid_r)
-+ {
-+ long int mystart = 0, mysize = limit;
-+ gid_t *mygroupsp = __alloca (limit * sizeof (gid_t));
-+
-+ /* For every gid in the list we get from the NSS module,
-+ get the whole group entry. We need to do this, since we
-+ need the group name to check if it is in the blacklist.
-+ In worst case, this is as twice as slow as stepping with
-+ getgrent_r through the whole group database. But for large
-+ group databases this is faster, since the user can only be
-+ in a limited number of groups. */
-+ if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroupsp,
-+ limit, errnop) == NSS_STATUS_SUCCESS)
-+ {
-+ /* A temporary buffer. We use the normal buffer, until we found
-+ an entry, for which this buffer is to small. In this case, we
-+ overwrite the pointer with one to a bigger buffer. */
-+ char *tmpbuf = buffer;
-+ size_t tmplen = buflen;
-+ int i;
-
-- save_oldres = ent->result;
-- save_nis_first = FALSE;
-- res = nis_next_entry(grptable, &ent->result->cookie);
-- ent->result = res;
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- return niserr2nss (ent->result->status);
-- }
-- }
-- parse_res = _nss_nisplus_parse_grent (ent->result, 0, result,
-- buffer, buflen, errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (ent->result);
-- ent->result = save_oldres;
-- ent->nis_first = save_nis_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!save_nis_first)
-- nis_freeresult (save_oldres);
-+ for (i = 0; i < mystart; i++)
-+ {
-+ while ((status = nss_getgrgid_r (mygroupsp[i], &grpbuf, tmpbuf,
-+ tmplen,
-+ errnop)) == NSS_STATUS_TRYAGAIN
-+ && *errnop == ERANGE)
-+ if (tmpbuf == buffer)
-+ {
-+ tmplen *= 2;
-+ tmpbuf = __alloca (tmplen);
-+ }
-+ else
-+ tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
-+
-+ if (!in_blacklist (grpbuf.gr_name,
-+ strlen (grpbuf.gr_name), ent))
-+ check_and_add_group (user, group, start, size, groupsp,
-+ limit, &grpbuf);
-+ }
-+ return NSS_STATUS_NOTFOUND;
- }
-+ }
-
-- if (parse_res &&
-- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
-- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
-+ /* If we come here, the NSS module does not support initgroups_dyn
-+ and we have to step through the whole list ourself. */
-+ do
-+ {
-+ if ((status = nss_getgrent_r (&grpbuf, buffer, buflen, errnop)) !=
-+ NSS_STATUS_SUCCESS)
-+ return status;
- }
-- while (!parse_res);
-+ while (in_blacklist (grpbuf.gr_name, strlen (grpbuf.gr_name), ent));
-
-+ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
- return NSS_STATUS_SUCCESS;
- }
-
--/* This function handle the +group entrys in /etc/group */
- static enum nss_status
--getgrnam_plusgroup (const char *name, struct group *result, char *buffer,
-- size_t buflen, int *errnop)
-+internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user,
-+ gid_t group, long int *start, long int *size,
-+ gid_t **groupsp, long int limit, int *errnop)
- {
- struct parser_data *data = (void *) buffer;
-- int parse_res;
--
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[strlen (name) + 24 + grptablelen];
--
-- sprintf(buf, "[name=%s],%s", name, grptable);
-- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen,
-- errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (res);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (res);
-- }
-- else /* Use NIS */
-- {
-- char *domain, *outval, *p;
-- int outvallen;
-+ struct group grpbuf;
-
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
-+ if (!ent->files)
-+ return getgrent_next_nss (ent, buffer, buflen, user, group,
-+ start, size, groupsp, limit, errnop);
-
-- if (yp_match (domain, "group.byname", name, strlen (name),
-- &outval, &outvallen) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- /* Copy the found data to our buffer... */
-- p = strncpy (buffer, outval, buflen);
--
-- /* ... and free the data. */
-- free (outval);
-- while (isspace (*p))
-- ++p;
-- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- }
--
-- if (parse_res)
-- /* We found the entry. */
-- return NSS_STATUS_SUCCESS;
-- else
-- return NSS_STATUS_RETURN;
--}
--
--static enum nss_status
--getgrent_next_file (struct group *result, ent_t *ent,
-- char *buffer, size_t buflen, int *errnop)
--{
-- struct parser_data *data = (void *) buffer;
- while (1)
- {
- fpos_t pos;
-@@ -472,8 +320,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -490,10 +338,10 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-- !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
-+ !(parse_res = _nss_files_parse_grent (p, &grpbuf, data, buflen,
- errnop)));
-
- if (parse_res == -1)
-@@ -504,90 +352,64 @@
- return NSS_STATUS_TRYAGAIN;
- }
-
-- if (result->gr_name[0] != '+' && result->gr_name[0] != '-')
-+ if (grpbuf.gr_name[0] != '+' && grpbuf.gr_name[0] != '-')
- /* This is a real entry. */
- break;
-
- /* -group */
-- if (result->gr_name[0] == '-' && result->gr_name[1] != '\0'
-- && result->gr_name[1] != '@')
-+ if (grpbuf.gr_name[0] == '-' && grpbuf.gr_name[1] != '\0'
-+ && grpbuf.gr_name[1] != '@')
- {
-- blacklist_store_name (&result->gr_name[1], ent);
-+ blacklist_store_name (&grpbuf.gr_name[1], ent);
- continue;
- }
-
- /* +group */
-- if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
-- && result->gr_name[1] != '@')
-+ if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] != '\0'
-+ && grpbuf.gr_name[1] != '@')
- {
-- enum nss_status status;
--
-- /* Store the group in the blacklist for the "+" at the end of
-+ if (in_blacklist (&grpbuf.gr_name[1],
-+ strlen (&grpbuf.gr_name[1]), ent))
-+ continue;
-+ /* Store the group in the blacklist for the "+" at the end of
- /etc/group */
-- blacklist_store_name (&result->gr_name[1], ent);
-- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
-- buflen, errnop);
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-- break;
-- else
-- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-- || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
-- continue;
-- else
-- {
-- if (status == NSS_STATUS_TRYAGAIN)
-- {
-- /* The parser ran out of space. */
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- }
-- return status;
-- }
-+ blacklist_store_name (&grpbuf.gr_name[1], ent);
-+ if (nss_getgrnam_r == NULL)
-+ return NSS_STATUS_UNAVAIL;
-+ else if (nss_getgrnam_r (&grpbuf.gr_name[1], &grpbuf, buffer,
-+ buflen, errnop) != NSS_STATUS_SUCCESS)
-+ continue;
-+
-+ check_and_add_group (user, group, start, size, groupsp,
-+ limit, &grpbuf);
-+
-+ return NSS_STATUS_SUCCESS;
- }
-
- /* +:... */
-- if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
-+ if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] == '\0')
- {
-- ent->nis = TRUE;
-- ent->nis_first = TRUE;
--
-- if (use_nisplus)
-- return getgrent_next_nisplus (result, ent, buffer, buflen, errnop);
-- else
-- return getgrent_next_nis (result, ent, buffer, buflen, errnop);
-+ ent->files = FALSE;
-+ return getgrent_next_nss (ent, buffer, buflen, user, group,
-+ start, size, groupsp, limit, errnop);
- }
- }
-
-+ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
-+
- return NSS_STATUS_SUCCESS;
- }
-
-
--static enum nss_status
--internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
--{
-- if (ent->nis)
-- {
-- if (use_nisplus)
-- return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop);
-- else
-- return getgrent_next_nis (gr, ent, buffer, buflen, errnop);
-- }
-- else
-- return getgrent_next_file (gr, ent, buffer, buflen, errnop);
--}
--
- enum nss_status
- _nss_compat_initgroups_dyn (const char *user, gid_t group, long int *start,
- long int *size, gid_t **groupsp, long int limit,
- int *errnop)
- {
-- struct group grpbuf, *g;
- size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
- char *tmpbuf;
- enum nss_status status;
-- ent_t intern = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
-- gid_t *groups = *groupsp;
-+ ent_t intern = { TRUE, NULL, {NULL, 0, 0} };
-
- status = internal_setgrent (&intern);
- if (status != NSS_STATUS_SUCCESS)
-@@ -597,59 +419,14 @@
-
- do
- {
-- while ((status =
-- internal_getgrent_r (&grpbuf, &intern, tmpbuf, buflen,
-- errnop)) == NSS_STATUS_TRYAGAIN
-- && *errnop == ERANGE)
-- {
-- buflen *= 2;
-- tmpbuf = __alloca (buflen);
-- }
--
-- if (status != NSS_STATUS_SUCCESS)
-- goto done;
--
-- g = &grpbuf;
-- if (g->gr_gid != group)
-- {
-- char **m;
--
-- for (m = g->gr_mem; *m != NULL; ++m)
-- if (strcmp (*m, user) == 0)
-- {
-- /* Matches user. Insert this group. */
-- if (*start == *size)
-- {
-- /* Need a bigger buffer. */
-- gid_t *newgroups;
-- long int newsize;
--
-- if (limit > 0 && *size == limit)
-- /* We reached the maximum. */
-- goto done;
--
-- if (limit <= 0)
-- newsize = 2 * *size;
-- else
-- newsize = MIN (limit, 2 * *size);
--
-- newgroups = realloc (groups, newsize * sizeof (*groups));
-- if (newgroups == NULL)
-- goto done;
-- *groupsp = groups = newgroups;
-- *size = newsize;
-- }
--
-- groups[*start] = g->gr_gid;
-- *start += 1;
--
-- break;
-- }
-- }
-+ while ((status = internal_getgrent_r (&intern, tmpbuf, buflen,
-+ user, group, start, size,
-+ groupsp, limit, errnop))
-+ == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
-+ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
- }
- while (status == NSS_STATUS_SUCCESS);
-
--done:
- internal_endgrent (&intern);
-
- return NSS_STATUS_SUCCESS;
-@@ -664,7 +441,7 @@
- int namelen = strlen (name);
- char *tmp;
-
-- /* first call, setup cache */
-+ /* First call, setup cache. */
- if (ent->blacklist.size == 0)
- {
- ent->blacklist.size = MAX (BLACKLIST_INITIAL_SIZE, 2 * namelen);
-@@ -714,7 +491,7 @@
-
- buf[0] = '|';
- cp = stpcpy (&buf[1], name);
-- *cp++= '|';
-+ *cp++ = '|';
- *cp = '\0';
- return strstr (ent->blacklist.data, buf) != NULL;
- }
---- glibc-2.3.2/nis/nss_compat/compat-pwd.c 2002-08-26 01:07:27.000000000 -0400
-+++ glibc-2.3.2/nis/nss_compat/compat-pwd.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
-
-@@ -17,27 +17,32 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <nss.h>
--#include <pwd.h>
--#include <errno.h>
- #include <ctype.h>
-+#include <errno.h>
- #include <fcntl.h>
- #include <netdb.h>
-+#include <nss.h>
-+#include <nsswitch.h>
-+#include <pwd.h>
-+#include <stdio_ext.h>
- #include <string.h>
--#include <bits/libc-lock.h>
--#include <rpcsvc/yp.h>
-+#include <rpc/types.h>
- #include <rpcsvc/ypclnt.h>
--#include <rpcsvc/nis.h>
--#include <nsswitch.h>
-+#include <bits/libc-lock.h>
-
- #include "netgroup.h"
--#include "nss-nisplus.h"
--#include "nisplus-parser.h"
-
- static service_user *ni;
--static bool_t use_nisplus; /* default: passwd_compat: nis */
--static nis_name pwdtable; /* Name of the pwd table */
--static size_t pwdtablelen;
-+static enum nss_status (*nss_setpwent) (int stayopen);
-+static enum nss_status (*nss_getpwnam_r) (const char *name,
-+ struct passwd * pwd, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_getpwuid_r) (uid_t uid, struct passwd * pwd,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+static enum nss_status (*nss_getpwent_r) (struct passwd * pwd, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_endpwent) (void);
-
- /* Get the declaration of the parser function. */
- #define ENTNAME pwent
-@@ -49,29 +54,26 @@
- #define BLACKLIST_INITIAL_SIZE 512
- #define BLACKLIST_INCREMENT 256
- struct blacklist_t
-- {
-- char *data;
-- int current;
-- int size;
-- };
-+{
-+ char *data;
-+ int current;
-+ int size;
-+};
-
- struct ent_t
-- {
-- bool_t netgroup;
-- bool_t nis;
-- bool_t first;
-- char *oldkey;
-- int oldkeylen;
-- nis_result *result;
-- FILE *stream;
-- struct blacklist_t blacklist;
-- struct passwd pwd;
-- struct __netgrent netgrdata;
-- };
-+{
-+ bool_t netgroup;
-+ bool_t first;
-+ bool_t files;
-+ FILE *stream;
-+ struct blacklist_t blacklist;
-+ struct passwd pwd;
-+ struct __netgrent netgrdata;
-+};
- typedef struct ent_t ent_t;
-
--static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
-- {NULL, NULL, 0, 0, NULL, NULL, NULL}};
-+static ent_t ext_ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
-+ {NULL, NULL, 0, 0, NULL, NULL, NULL}};
-
- /* Protect global state against multiple changers. */
- __libc_lock_define_initialized (static, lock)
-@@ -80,6 +82,21 @@
- static void blacklist_store_name (const char *, ent_t *);
- static int in_blacklist (const char *, int, ent_t *);
-
-+/* Initialize the NSS interface/functions. The calling function must
-+ hold the lock. */
-+static void
-+init_nss_interface (void)
-+{
-+ if (__nss_database_lookup ("passwd_compat", NULL, "nis", &ni) >= 0)
-+ {
-+ nss_setpwent = __nss_lookup_function (ni, "setpwent");
-+ nss_getpwnam_r = __nss_lookup_function (ni, "getpwnam_r");
-+ nss_getpwuid_r = __nss_lookup_function (ni, "getpwuid_r");
-+ nss_getpwent_r = __nss_lookup_function (ni, "getpwent_r");
-+ nss_endpwent = __nss_lookup_function (ni, "endpwent");
-+ }
-+}
-+
- static void
- give_pwd_free (struct passwd *pwd)
- {
-@@ -156,8 +173,7 @@
- {
- if (buffer == NULL)
- dest->pw_dir = strdup (src->pw_dir);
-- else if (dest->pw_dir &&
-- strlen (dest->pw_dir) >= strlen (src->pw_dir))
-+ else if (dest->pw_dir && strlen (dest->pw_dir) >= strlen (src->pw_dir))
- strcpy (dest->pw_dir, src->pw_dir);
- else
- {
-@@ -186,100 +202,17 @@
- }
-
- static enum nss_status
--insert_passwd_adjunct (char **result, int *len, char *domain, int *errnop)
--{
-- char *p1, *p2, *result2, *res;
-- int len2;
-- size_t namelen;
--
-- /* Check for adjunct style secret passwords. They can be
-- recognized by a password starting with "##". */
-- p1 = strchr (*result, ':');
-- if (p1 == NULL || p1[1] != '#' || p1[2] != '#')
-- return NSS_STATUS_SUCCESS;
-- p2 = strchr (p1 + 3, ':');
--
-- namelen = p2 - p1 - 3;
--
-- if (yp_match (domain, "passwd.adjunct.byname", &p1[3], namelen,
-- &result2, &len2) == YPERR_SUCCESS)
-- {
-- /* We found a passwd.adjunct entry. Merge encrypted
-- password therein into original result. */
-- char *encrypted = strchr (result2, ':');
-- char *endp;
-- size_t restlen;
--
-- if (encrypted == NULL || (endp = strchr (++encrypted, ':')) == NULL)
-- {
-- /* Invalid format of the entry. This never should happen
-- unless the data from which the NIS table is generated is
-- wrong. We simply ignore it. */
-- free (result2);
-- return NSS_STATUS_SUCCESS;
-- }
--
-- restlen = *len - (p2 - *result);
-- if ((res = malloc (namelen + restlen + (endp - encrypted) + 2)) == NULL)
-- {
-- free (result2);
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- __mempcpy (__mempcpy (__mempcpy (__mempcpy
-- (res, *result, (p1 - *result)),
-- ":", 1),
-- encrypted, endp - encrypted),
-- p2, restlen + 1);
--
-- free (result2);
-- free (*result);
-- *result = res;
-- *len = strlen (res);
-- }
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--internal_setpwent (ent_t *ent)
-+internal_setpwent (ent_t *ent, int stayopen)
- {
- enum nss_status status = NSS_STATUS_SUCCESS;
-
-- ent->nis = ent->first = ent->netgroup = 0;
-+ ent->first = ent->netgroup = FALSE;
-+ ent->files = TRUE;
-
- /* If something was left over free it. */
- if (ent->netgroup)
- __internal_endnetgrent (&ent->netgrdata);
-
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
--
-- if (pwdtable == NULL)
-- {
-- static const char key[] = "passwd.org_dir.";
-- const char *local_dir = nis_local_directory ();
-- size_t len_local_dir = strlen (local_dir);
--
-- pwdtable = malloc (sizeof (key) + len_local_dir);
-- if (pwdtable == NULL)
-- return NSS_STATUS_TRYAGAIN;
--
-- pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable,
-- key, sizeof (key) - 1),
-- local_dir, len_local_dir + 1)
-- - pwdtable) - 1;
-- }
--
- if (ent->blacklist.data != NULL)
- {
- ent->blacklist.current = 1;
-@@ -291,7 +224,7 @@
-
- if (ent->stream == NULL)
- {
-- ent->stream = fopen ("/etc/passwd", "r");
-+ ent->stream = fopen ("/etc/passwd", "rm");
-
- if (ent->stream == NULL)
- status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-@@ -300,20 +233,23 @@
- /* We have to make sure the file is `closed on exec'. */
- int result, flags;
-
-- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
-+ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
- if (result >= 0)
- {
- flags |= FD_CLOEXEC;
-- result = fcntl (fileno (ent->stream), F_SETFD, flags);
-+ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
- }
- if (result < 0)
- {
- /* Something went wrong. Close the stream and return a
-- failure. */
-+ failure. */
- fclose (ent->stream);
- ent->stream = NULL;
- status = NSS_STATUS_UNAVAIL;
- }
-+ else
-+ /* We take care of locking ourself. */
-+ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
- }
- }
- else
-@@ -321,6 +257,9 @@
-
- give_pwd_free (&ent->pwd);
-
-+ if (status == NSS_STATUS_SUCCESS && nss_setpwent)
-+ return nss_setpwent (stayopen);
-+
- return status;
- }
-
-@@ -333,12 +272,9 @@
- __libc_lock_lock (lock);
-
- if (ni == NULL)
-- {
-- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
-- result = internal_setpwent (&ext_ent);
-+ result = internal_setpwent (&ext_ent, stayopen);
-
- __libc_lock_unlock (lock);
-
-@@ -349,6 +285,9 @@
- static enum nss_status
- internal_endpwent (ent_t *ent)
- {
-+ if (nss_endpwent)
-+ nss_endpwent ();
-+
- if (ent->stream != NULL)
- {
- fclose (ent->stream);
-@@ -358,26 +297,13 @@
- if (ent->netgroup)
- __internal_endnetgrent (&ent->netgrdata);
-
-- ent->nis = ent->first = ent->netgroup = 0;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
-+ ent->first = ent->netgroup = FALSE;
-
- if (ent->blacklist.data != NULL)
- {
- ent->blacklist.current = 1;
- ent->blacklist.data[0] = '|';
-- ent->blacklist.data[1] = '\0';
-+ ent->blacklist.data[1] = '\0';
- }
- else
- ent->blacklist.current = 0;
-@@ -401,19 +327,25 @@
- return result;
- }
-
-+
- static enum nss_status
--getpwent_next_nis_netgr (const char *name, struct passwd *result, ent_t *ent,
-- char *group, char *buffer, size_t buflen, int *errnop)
-+getpwent_next_nss_netgr (const char *name, struct passwd *result, ent_t *ent,
-+ char *group, char *buffer, size_t buflen,
-+ int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- char *ypdomain, *host, *user, *domain, *outval, *p, *p2;
-- int status, outvallen;
-+ char *curdomain, *host, *user, *domain, *p2;
-+ int status;
- size_t p2len;
-
-- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
-+ /* Leave function if NSS module does not support getpwnam_r,
-+ we need this function here. */
-+ if (!nss_getpwnam_r)
-+ return NSS_STATUS_UNAVAIL;
-+
-+ if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
- {
-- ent->netgroup = 0;
-- ent->first = 0;
-+ ent->netgroup = FALSE;
-+ ent->first = FALSE;
- give_pwd_free (&ent->pwd);
- return NSS_STATUS_UNAVAIL;
- }
-@@ -428,7 +360,6 @@
- while (1)
- {
- char *saved_cursor;
-- int parse_res;
-
- saved_cursor = ent->netgrdata.cursor;
- status = __internal_getnetgrent_r (&host, &user, &domain,
-@@ -445,7 +376,7 @@
- if (user == NULL || user[0] == '-')
- continue;
-
-- if (domain != NULL && strcmp (ypdomain, domain) != 0)
-+ if (domain != NULL && strcmp (curdomain, domain) != 0)
- continue;
-
- /* If name != NULL, we are called from getpwnam. */
-@@ -453,148 +384,23 @@
- if (strcmp (user, name) != 0)
- continue;
-
-- if (yp_match (ypdomain, "passwd.byname", user,
-- strlen (user), &outval, &outvallen)
-- != YPERR_SUCCESS)
-- continue;
--
-- if (insert_passwd_adjunct (&outval, &outvallen, ypdomain, errnop)
-- != NSS_STATUS_SUCCESS)
-- {
-- free (outval);
-- return NSS_STATUS_TRYAGAIN;
-- }
--
- p2len = pwd_need_buflen (&ent->pwd);
- if (p2len > buflen)
- {
-- free (outval);
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- p2 = buffer + (buflen - p2len);
- buflen -= p2len;
-
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p = strncpy (buffer, outval, buflen);
--
-- while (isspace (*p))
-- p++;
-- free (outval);
-- parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- ent->netgrdata.cursor = saved_cursor;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (parse_res && !in_blacklist (result->pw_name,
-- strlen (result->pw_name), ent))
-- {
-- /* Store the User in the blacklist for the "+" at the end of
-- /etc/passwd */
-- blacklist_store_name (result->pw_name, ent);
-- copy_pwd_changes (result, &ent->pwd, p2, p2len);
-- break;
-- }
-- }
--
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--getpwent_next_nisplus_netgr (const char *name, struct passwd *result,
-- ent_t *ent, char *group, char *buffer,
-- size_t buflen, int *errnop)
--{
-- char *ypdomain, *host, *user, *domain, *p2;
-- int status, parse_res;
-- size_t p2len;
-- nis_result *nisres;
--
-- /* Maybe we should use domainname here ? We need the current
-- domainname for the domain field in netgroups */
-- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
-- {
-- ent->netgroup = 0;
-- ent->first = 0;
-- give_pwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
--
-- if (ent->first == TRUE)
-- {
-- bzero (&ent->netgrdata, sizeof (struct __netgrent));
-- __internal_setnetgrent (group, &ent->netgrdata);
-- ent->first = FALSE;
-- }
--
-- while (1)
-- {
-- char *saved_cursor;
--
-- saved_cursor = ent->netgrdata.cursor;
-- status = __internal_getnetgrent_r (&host, &user, &domain,
-- &ent->netgrdata, buffer, buflen,
-- errnop);
-- if (status != 1)
-- {
-- __internal_endnetgrent (&ent->netgrdata);
-- ent->netgroup = 0;
-- give_pwd_free (&ent->pwd);
-- return NSS_STATUS_RETURN;
-- }
--
-- if (user == NULL || user[0] == '-')
-+ if (nss_getpwnam_r (user, result, buffer, buflen, errnop) !=
-+ NSS_STATUS_SUCCESS)
- continue;
-
-- if (domain != NULL && strcmp (ypdomain, domain) != 0)
-- continue;
--
-- /* If name != NULL, we are called from getpwnam */
-- if (name != NULL)
-- if (strcmp (user, name) != 0)
-- continue;
--
-- p2len = pwd_need_buflen (&ent->pwd);
-- if (p2len > buflen)
-+ if (!in_blacklist (result->pw_name, strlen (result->pw_name), ent))
- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p2 = buffer + (buflen - p2len);
-- buflen -= p2len;
-- {
-- char buf[strlen (user) + 30 + pwdtablelen];
-- sprintf(buf, "[name=%s],%s", user, pwdtable);
-- nisres = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- }
-- if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS)
-- {
-- nis_freeresult (nisres);
-- continue;
-- }
-- parse_res = _nss_nisplus_parse_pwent (nisres, result, buffer,
-- buflen, errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (nisres);
-- ent->netgrdata.cursor = saved_cursor;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (nisres);
--
-- if (parse_res && !in_blacklist (result->pw_name,
-- strlen (result->pw_name), ent))
-- {
-- /* Store the User in the blacklist for the "+" at the end of
-- /etc/passwd */
-+ /* Store the User in the blacklist for possible the "+" at the
-+ end of /etc/passwd */
- blacklist_store_name (result->pw_name, ent);
- copy_pwd_changes (result, &ent->pwd, p2, p2len);
- break;
-@@ -604,100 +410,18 @@
- return NSS_STATUS_SUCCESS;
- }
-
--/* get the next user from NIS+ (+ entry) */
-+/* get the next user from NSS (+ entry) */
- static enum nss_status
--getpwent_next_nisplus (struct passwd *result, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
--{
-- int parse_res;
-- size_t p2len;
-- char *p2;
--
-- p2len = pwd_need_buflen (&ent->pwd);
-- if (p2len > buflen)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p2 = buffer + (buflen - p2len);
-- buflen -= p2len;
-- do
-- {
-- bool_t saved_first;
-- nis_result *saved_res;
--
-- if (ent->first)
-- {
-- saved_first = TRUE;
-- saved_res = ent->result;
--
-- ent->result = nis_first_entry (pwdtable);
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- give_pwd_free (&ent->pwd);
-- return niserr2nss (ent->result->status);
-- }
-- ent->first = FALSE;
-- }
-- else
-- {
-- nis_result *res;
--
-- res = nis_next_entry (pwdtable, &ent->result->cookie);
-- saved_res = ent->result;
-- saved_first = FALSE;
-- ent->result = res;
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- nis_freeresult (saved_res);
-- give_pwd_free (&ent->pwd);
-- return niserr2nss (ent->result->status);
-- }
-- }
-- parse_res = _nss_nisplus_parse_pwent (ent->result, result, buffer,
-- buflen, errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (ent->result);
-- ent->result = saved_res;
-- ent->first = saved_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!saved_first)
-- nis_freeresult (saved_res);
-- }
--
-- if (parse_res &&
-- in_blacklist (result->pw_name, strlen (result->pw_name), ent))
-- parse_res = 0; /* if result->pw_name in blacklist,search next entry */
-- }
-- while (!parse_res);
--
-- copy_pwd_changes (result, &ent->pwd, p2, p2len);
--
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
-+getpwent_next_nss (struct passwd *result, ent_t *ent, char *buffer,
- size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- char *domain, *outkey, *outval, *p, *p2;
-- int outkeylen, outvallen, parse_res;
-+ enum nss_status status;
-+ char *p2;
- size_t p2len;
-
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_pwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
-+ /* Return if NSS module does not support getpwent_r. */
-+ if (!nss_getpwent_r)
-+ return NSS_STATUS_UNAVAIL;
-
- p2len = pwd_need_buflen (&ent->pwd);
- if (p2len > buflen)
-@@ -707,103 +431,17 @@
- }
- p2 = buffer + (buflen - p2len);
- buflen -= p2len;
-- do
-- {
-- bool_t saved_first;
-- char *saved_oldkey;
-- int saved_oldlen;
--
-- if (ent->first)
-- {
-- if (yp_first (domain, "passwd.byname", &outkey, &outkeylen,
-- &outval, &outvallen) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_pwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
--
-- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) !=
-- NSS_STATUS_SUCCESS)
-- {
-- free (outval);
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- saved_first = TRUE;
-- saved_oldkey = ent->oldkey;
-- saved_oldlen = ent->oldkeylen;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- ent->first = FALSE;
-- }
-- else
-- {
-- if (yp_next (domain, "passwd.byname", ent->oldkey, ent->oldkeylen,
-- &outkey, &outkeylen, &outval, &outvallen)
-- != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_pwd_free (&ent->pwd);
-- return NSS_STATUS_NOTFOUND;
-- }
--
-- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
-- != NSS_STATUS_SUCCESS)
-- {
-- free (outval);
-- return NSS_STATUS_TRYAGAIN;
-- }
-
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ if (ent->first)
-+ ent->first = FALSE;
-
-- saved_first = FALSE;
-- saved_oldkey = ent->oldkey;
-- saved_oldlen = ent->oldkeylen;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- }
--
-- /* Copy the found data to our buffer */
-- p = strncpy (buffer, outval, buflen);
--
-- /* ...and free the data. */
-- free (outval);
--
-- while (isspace (*p))
-- ++p;
-- parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- free (ent->oldkey);
-- ent->oldkey = saved_oldkey;
-- ent->oldkeylen = saved_oldlen;
-- ent->first = saved_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!saved_first)
-- free (saved_oldkey);
-- }
-- if (parse_res
-- && in_blacklist (result->pw_name, strlen (result->pw_name), ent))
-- parse_res = 0;
-+ do
-+ {
-+ if ((status = nss_getpwent_r (result, buffer, buflen, errnop)) !=
-+ NSS_STATUS_SUCCESS)
-+ return status;
- }
-- while (!parse_res);
-+ while (in_blacklist (result->pw_name, strlen (result->pw_name), ent));
-
- copy_pwd_changes (result, &ent->pwd, p2, p2len);
-
-@@ -815,12 +453,13 @@
- getpwnam_plususer (const char *name, struct passwd *result, ent_t *ent,
- char *buffer, size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
- struct passwd pwd;
-- int parse_res;
- char *p;
- size_t plen;
-
-+ if (!nss_getpwnam_r)
-+ return NSS_STATUS_UNAVAIL;
-+
- memset (&pwd, '\0', sizeof (struct passwd));
-
- copy_pwd_changes (&pwd, result, NULL, 0);
-@@ -834,88 +473,17 @@
- p = buffer + (buflen - plen);
- buflen -= plen;
-
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[strlen (name) + 24 + pwdtablelen];
--
-- sprintf(buf, "[name=%s],%s", name, pwdtable);
-- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- parse_res = _nss_nisplus_parse_pwent (res, result, buffer,
-- buflen, errnop);
--
-- nis_freeresult (res);
--
-- if (parse_res == -1)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
-- return NSS_STATUS_NOTFOUND;
-- }
-- else /* Use NIS */
-- {
-- char *domain, *outval, *ptr;
-- int outvallen;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (yp_match (domain, "passwd.byname", name, strlen (name),
-- &outval, &outvallen) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
-- != NSS_STATUS_SUCCESS)
-- {
-- free (outval);
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- ptr = strncpy (buffer, outval, buflen);
-- free (outval);
--
-- while (isspace (*ptr))
-- ptr++;
--
-- parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop);
-- if (parse_res == -1)
-- return NSS_STATUS_TRYAGAIN;
-+ if (nss_getpwnam_r (name, result, buffer, buflen, errnop) !=
-+ NSS_STATUS_SUCCESS)
-+ return NSS_STATUS_NOTFOUND;
-
-- if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
-- return NSS_STATUS_NOTFOUND;
-- }
-+ if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
-+ return NSS_STATUS_NOTFOUND;
-
-- if (parse_res > 0)
-- {
-- copy_pwd_changes (result, &pwd, p, plen);
-- give_pwd_free (&pwd);
-- /* We found the entry. */
-- return NSS_STATUS_SUCCESS;
-- }
-- else
-- {
-- /* Give buffer the old len back */
-- buflen += plen;
-- give_pwd_free (&pwd);
-- }
-- return NSS_STATUS_RETURN;
-+ copy_pwd_changes (result, &pwd, p, plen);
-+ give_pwd_free (&pwd);
-+ /* We found the entry. */
-+ return NSS_STATUS_SUCCESS;
- }
-
- static enum nss_status
-@@ -933,8 +501,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -951,9 +519,9 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
- errnop)));
-
-@@ -1000,14 +568,9 @@
- ent->first = TRUE;
- copy_pwd_changes (&ent->pwd, result, NULL, 0);
-
-- if (use_nisplus)
-- status = getpwent_next_nisplus_netgr (NULL, result, ent,
-- &result->pw_name[2],
-- buffer, buflen, errnop);
-- else
-- status = getpwent_next_nis_netgr (NULL, result, ent,
-- &result->pw_name[2],
-- buffer, buflen, errnop);
-+ status = getpwent_next_nss_netgr (NULL, result, ent,
-+ &result->pw_name[2],
-+ buffer, buflen, errnop);
- if (status == NSS_STATUS_RETURN)
- continue;
- else
-@@ -1026,45 +589,42 @@
- if (result->pw_name[0] == '+' && result->pw_name[1] != '\0'
- && result->pw_name[1] != '@')
- {
-- char buf[strlen (result->pw_name)];
-+ size_t len = strlen (result->pw_name);
-+ char buf[len];
- enum nss_status status;
-
- /* Store the User in the blacklist for the "+" at the end of
- /etc/passwd */
-- strcpy (buf, &result->pw_name[1]);
-+ memcpy (buf, &result->pw_name[1], len);
- status = getpwnam_plususer (&result->pw_name[1], result, ent,
- buffer, buflen, errnop);
- blacklist_store_name (buf, ent);
-
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
- break;
-+ else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-+ || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
-+ continue;
- else
-- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-- || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
-- continue;
-- else
-- {
-- if (status == NSS_STATUS_TRYAGAIN)
-- {
-- /* The parser ran out of space */
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- }
-- return status;
-- }
-+ {
-+ if (status == NSS_STATUS_TRYAGAIN)
-+ {
-+ /* The parser ran out of space */
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ }
-+ return status;
-+ }
- }
-
- /* +:... */
- if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')
- {
-- ent->nis = TRUE;
-+ ent->files = FALSE;
- ent->first = TRUE;
- copy_pwd_changes (&ent->pwd, result, NULL, 0);
-
-- if (use_nisplus)
-- return getpwent_next_nisplus (result, ent, buffer, buflen, errnop);
-- else
-- return getpwent_next_nis (result, ent, buffer, buflen, errnop);
-+ return getpwent_next_nss (result, ent, buffer, buflen, errnop);
- }
- }
-
-@@ -1082,53 +642,41 @@
-
- /* We are searching members in a netgroup */
- /* Since this is not the first call, we don't need the group name */
-- if (use_nisplus)
-- status = getpwent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer,
-- buflen, errnop);
-- else
-- status = getpwent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen,
-- errnop);
-+ status = getpwent_next_nss_netgr (NULL, pw, ent, NULL, buffer, buflen,
-+ errnop);
- if (status == NSS_STATUS_RETURN)
- return getpwent_next_file (pw, ent, buffer, buflen, errnop);
- else
- return status;
- }
-+ else if (ent->files)
-+ return getpwent_next_file (pw, ent, buffer, buflen, errnop);
- else
-- if (ent->nis)
-- {
-- if (use_nisplus)
-- return getpwent_next_nisplus (pw, ent, buffer, buflen, errnop);
-- else
-- return getpwent_next_nis (pw, ent, buffer, buflen, errnop);
-- }
-- else
-- return getpwent_next_file (pw, ent, buffer, buflen, errnop);
-+ return getpwent_next_nss (pw, ent, buffer, buflen, errnop);
-+
- }
-
- enum nss_status
- _nss_compat_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
- int *errnop)
- {
-- enum nss_status status = NSS_STATUS_SUCCESS;
-+ enum nss_status result = NSS_STATUS_SUCCESS;
-
- __libc_lock_lock (lock);
-
-+ /* Be prepared that the setpwent function was not called before. */
- if (ni == NULL)
-- {
-- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
-- /* Be prepared that the setpwent function was not called before. */
- if (ext_ent.stream == NULL)
-- status = internal_setpwent (&ext_ent);
-+ result = internal_setpwent (&ext_ent, 1);
-
-- if (status == NSS_STATUS_SUCCESS)
-- status = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop);
-
- __libc_lock_unlock (lock);
-
-- return status;
-+ return result;
- }
-
- /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */
-@@ -1148,8 +696,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- {
- return NSS_STATUS_NOTFOUND;
- }
-@@ -1167,9 +715,9 @@
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
- errnop)));
-
-@@ -1210,8 +758,8 @@
- status = getpwnam_plususer (name, result, ent, buffer,
- buflen, errnop);
-
-- if (status == NSS_STATUS_RETURN)
-- continue;
-+ if (status == NSS_STATUS_RETURN)
-+ continue;
-
- return status;
- }
-@@ -1253,13 +801,12 @@
-
- status = getpwnam_plususer (name, result, ent,
- buffer, buflen, errnop);
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
- break;
-+ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
- else
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-- else
-- return status;
-+ return status;
- }
- }
- return NSS_STATUS_SUCCESS;
-@@ -1269,9 +816,9 @@
- _nss_compat_getpwnam_r (const char *name, struct passwd *pwd,
- char *buffer, size_t buflen, int *errnop)
- {
-- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
-- {NULL, NULL, 0, 0, NULL, NULL, NULL}};
-- enum nss_status status;
-+ enum nss_status result;
-+ ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
-+ {NULL, NULL, 0, 0, NULL, NULL, NULL}};
-
- if (name[0] == '-' || name[0] == '+')
- return NSS_STATUS_NOTFOUND;
-@@ -1279,35 +826,32 @@
- __libc_lock_lock (lock);
-
- if (ni == NULL)
-- {
-- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
- __libc_lock_unlock (lock);
-
-- status = internal_setpwent (&ent);
-- if (status != NSS_STATUS_SUCCESS)
-- return status;
-+ result = internal_setpwent (&ent, 0);
-
-- status = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop);
-
- internal_endpwent (&ent);
-
-- return status;
-+ return result;
- }
-
- /* This function handle the + entry in /etc/passwd for getpwuid */
- static enum nss_status
- getpwuid_plususer (uid_t uid, struct passwd *result, char *buffer,
-- size_t buflen, int *errnop)
-+ size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
- struct passwd pwd;
-- int parse_res;
- char *p;
- size_t plen;
-
-+ if (!nss_getpwuid_r)
-+ return NSS_STATUS_UNAVAIL;
-+
- memset (&pwd, '\0', sizeof (struct passwd));
-
- copy_pwd_changes (&pwd, result, NULL, 0);
-@@ -1321,70 +865,8 @@
- p = buffer + (buflen - plen);
- buflen -= plen;
-
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[1024 + pwdtablelen];
--
-- snprintf (buf, sizeof (buf), "[uid=%lu],%s", (unsigned long int) uid,
-- pwdtable);
-- res = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- if ((parse_res = _nss_nisplus_parse_pwent (res, result, buffer,
-- buflen, errnop)) == -1)
-- {
-- nis_freeresult (res);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (res);
-- }
-- else /* Use NIS */
-- {
-- char buf[1024];
-- char *domain, *outval, *ptr;
-- int outvallen;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- sprintf (buf, "%lu", (unsigned long int) uid);
-- if (yp_match (domain, "passwd.byuid", buf, strlen (buf),
-- &outval, &outvallen)
-- != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
-- != NSS_STATUS_SUCCESS)
-- {
-- free (outval);
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- ptr = strncpy (buffer, outval, buflen);
-- free (outval);
--
-- while (isspace (*ptr))
-- ptr++;
-- parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop);
-- if (parse_res == -1)
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (parse_res > 0)
-+ if (nss_getpwuid_r (uid, result, buffer, buflen, errnop) ==
-+ NSS_STATUS_SUCCESS)
- {
- copy_pwd_changes (result, &pwd, p, plen);
- give_pwd_free (&pwd);
-@@ -1400,10 +882,10 @@
- return NSS_STATUS_RETURN;
- }
-
--/* Searches in /etc/passwd and the NIS/NIS+ map for a special user id */
-+/* Searches in /etc/passwd and the NSS subsystem for a special user id */
- static enum nss_status
- internal_getpwuid_r (uid_t uid, struct passwd *result, ent_t *ent,
-- char *buffer, size_t buflen, int *errnop)
-+ char *buffer, size_t buflen, int *errnop)
- {
- struct parser_data *data = (void *) buffer;
-
-@@ -1414,75 +896,79 @@
- int parse_res;
-
- do
-- {
-- fgetpos (ent->stream, &pos);
-- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ {
-+ fgetpos (ent->stream, &pos);
-+ buffer[buflen - 1] = '\xff';
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
-- if (p == NULL || buffer[buflen - 1] != '\xff')
-- {
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- /* Terminate the line for any case. */
-- buffer[buflen - 1] = '\0';
--
-- /* Skip leading blanks. */
-- while (isspace (*p))
-- ++p;
-- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-- !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
-- errnop)));
-+ if (p == NULL || buffer[buflen - 1] != '\xff')
-+ {
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ return NSS_STATUS_TRYAGAIN;
-+ }
-+
-+ /* Terminate the line for any case. */
-+ buffer[buflen - 1] = '\0';
-+
-+ /* Skip leading blanks. */
-+ while (isspace (*p))
-+ ++p;
-+ }
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
-+ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
-+ errnop)));
-
- if (parse_res == -1)
-- {
-- /* The parser ran out of space. */
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ {
-+ /* The parser ran out of space. */
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ return NSS_STATUS_TRYAGAIN;
-+ }
-
- /* This is a real entry. */
- if (result->pw_name[0] != '+' && result->pw_name[0] != '-')
-- {
-- if (result->pw_uid == uid)
-- return NSS_STATUS_SUCCESS;
-- else
-- continue;
-- }
-+ {
-+ if (result->pw_uid == uid)
-+ return NSS_STATUS_SUCCESS;
-+ else
-+ continue;
-+ }
-
- /* -@netgroup */
- if (result->pw_name[0] == '-' && result->pw_name[1] == '@'
-- && result->pw_name[2] != '\0')
-- {
-- char buf[strlen (result->pw_name)];
-+ && result->pw_name[2] != '\0')
-+ {
-+ /* -1, because we remove first two character of pw_name. */
-+ size_t len = strlen (result->pw_name) - 1;
-+ char buf[len];
- enum nss_status status;
-
-- strcpy (buf, &result->pw_name[2]);
-+ memcpy (buf, &result->pw_name[2], len);
-
- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
- if (status == NSS_STATUS_SUCCESS &&
- innetgr (buf, NULL, result->pw_name, NULL))
- return NSS_STATUS_NOTFOUND;
-
-- continue;
-- }
-+ continue;
-+ }
-
- /* +@netgroup */
- if (result->pw_name[0] == '+' && result->pw_name[1] == '@'
-- && result->pw_name[2] != '\0')
-- {
-- char buf[strlen (result->pw_name)];
-+ && result->pw_name[2] != '\0')
-+ {
-+ /* -1, because we remove first two characters of pw_name. */
-+ size_t len = strlen (result->pw_name) - 1;
-+ char buf[len];
- enum nss_status status;
-
-- strcpy (buf, &result->pw_name[2]);
-+ memcpy (buf, &result->pw_name[2], len);
-
- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
-
-@@ -1494,39 +980,40 @@
- if (innetgr (buf, NULL, result->pw_name, NULL))
- return NSS_STATUS_SUCCESS;
- }
-+ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
- else
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-- else
-- return status;
-+ return status;
-
-- continue;
-+ continue;
- }
-
- /* -user */
- if (result->pw_name[0] == '-' && result->pw_name[1] != '\0'
-- && result->pw_name[1] != '@')
-- {
-- char buf[strlen (result->pw_name)];
-+ && result->pw_name[1] != '@')
-+ {
-+ size_t len = strlen (result->pw_name);
-+ char buf[len];
- enum nss_status status;
-
-- strcpy (buf, &result->pw_name[1]);
-+ memcpy (buf, &result->pw_name[1], len);
-
- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
- if (status == NSS_STATUS_SUCCESS &&
- innetgr (buf, NULL, result->pw_name, NULL))
- return NSS_STATUS_NOTFOUND;
-- continue;
-- }
-+ continue;
-+ }
-
- /* +user */
- if (result->pw_name[0] == '+' && result->pw_name[1] != '\0'
-- && result->pw_name[1] != '@')
-- {
-- char buf[strlen (result->pw_name)];
-+ && result->pw_name[1] != '@')
-+ {
-+ size_t len = strlen (result->pw_name);
-+ char buf[len];
- enum nss_status status;
-
-- strcpy (buf, &result->pw_name[1]);
-+ memcpy (buf, &result->pw_name[1], len);
-
- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
-
-@@ -1538,60 +1025,54 @@
- if (strcmp (buf, result->pw_name) == 0)
- return NSS_STATUS_SUCCESS;
- }
-+ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
- else
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-- else
-- return status;
-+ return status;
-
-- continue;
-- }
-+ continue;
-+ }
-
- /* +:... */
- if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')
-- {
-- enum nss_status status;
-+ {
-+ enum nss_status status;
-
-- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-- break;
-- else
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-- else
-- return status;
-- }
-+ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ break;
-+ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
-+ else
-+ return status;
-+ }
- }
- return NSS_STATUS_SUCCESS;
- }
-
- enum nss_status
- _nss_compat_getpwuid_r (uid_t uid, struct passwd *pwd,
-- char *buffer, size_t buflen, int *errnop)
-+ char *buffer, size_t buflen, int *errnop)
- {
-- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
-+ enum nss_status result;
-+ ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
- {NULL, NULL, 0, 0, NULL, NULL, NULL}};
-- enum nss_status status;
-
- __libc_lock_lock (lock);
-
- if (ni == NULL)
-- {
-- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
- __libc_lock_unlock (lock);
-
-- status = internal_setpwent (&ent);
-- if (status != NSS_STATUS_SUCCESS)
-- return status;
-+ result = internal_setpwent (&ent, 0);
-
-- status = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop);
-
- internal_endpwent (&ent);
-
-- return status;
-+ return result;
- }
-
-
-@@ -1653,7 +1134,7 @@
-
- buf[0] = '|';
- cp = stpcpy (&buf[1], name);
-- *cp++= '|';
-+ *cp++ = '|';
- *cp = '\0';
- return strstr (ent->blacklist.data, buf) != NULL;
- }
---- glibc-2.3.2/nis/nss_compat/compat-spwd.c 2002-08-26 01:08:20.000000000 -0400
-+++ glibc-2.3.2/nis/nss_compat/compat-spwd.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
-
-@@ -17,27 +17,29 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <nss.h>
--#include <errno.h>
- #include <ctype.h>
-+#include <errno.h>
- #include <fcntl.h>
- #include <netdb.h>
-+#include <nss.h>
-+#include <nsswitch.h>
- #include <shadow.h>
-+#include <stdio_ext.h>
- #include <string.h>
--#include <bits/libc-lock.h>
--#include <rpcsvc/yp.h>
-+#include <rpc/types.h>
- #include <rpcsvc/ypclnt.h>
--#include <rpcsvc/nis.h>
--#include <nsswitch.h>
-+#include <bits/libc-lock.h>
-
- #include "netgroup.h"
--#include "nss-nisplus.h"
--#include "nisplus-parser.h"
-
- static service_user *ni;
--static bool_t use_nisplus; /* default: passwd_compat: nis */
--static nis_name pwdtable; /* Name of the password table */
--static size_t pwdtablelen;
-+static enum nss_status (*nss_setspent) (int stayopen);
-+static enum nss_status (*nss_getspnam_r) (const char *name, struct spwd * sp,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+static enum nss_status (*nss_getspent_r) (struct spwd * sp, char *buffer,
-+ size_t buflen, int *errnop);
-+static enum nss_status (*nss_endspent) (void);
-
- /* Get the declaration of the parser function. */
- #define ENTNAME spent
-@@ -49,28 +51,25 @@
- #define BLACKLIST_INITIAL_SIZE 512
- #define BLACKLIST_INCREMENT 256
- struct blacklist_t
-- {
-- char *data;
-- int current;
-- int size;
-- };
-+{
-+ char *data;
-+ int current;
-+ int size;
-+};
-
- struct ent_t
-- {
-- bool_t netgroup;
-- bool_t nis;
-- bool_t first;
-- char *oldkey;
-- int oldkeylen;
-- nis_result *result;
-- FILE *stream;
-- struct blacklist_t blacklist;
-- struct spwd pwd;
-- struct __netgrent netgrdata;
-- };
-+{
-+ bool_t netgroup;
-+ bool_t files;
-+ bool_t first;
-+ FILE *stream;
-+ struct blacklist_t blacklist;
-+ struct spwd pwd;
-+ struct __netgrent netgrdata;
-+};
- typedef struct ent_t ent_t;
-
--static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
-+static ent_t ext_ent = {0, TRUE, 0, NULL, {NULL, 0, 0},
- {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}};
-
- /* Protect global state against multiple changers. */
-@@ -80,6 +79,21 @@
- static void blacklist_store_name (const char *, ent_t *);
- static int in_blacklist (const char *, int, ent_t *);
-
-+/* Initialize the NSS interface/functions. The calling function must
-+ hold the lock. */
-+static void
-+init_nss_interface (void)
-+{
-+ if (__nss_database_lookup ("shadow_compat", "passwd_compat",
-+ "nis", &ni) >= 0)
-+ {
-+ nss_setspent = __nss_lookup_function (ni, "setspent");
-+ nss_getspnam_r = __nss_lookup_function (ni, "getspnam_r");
-+ nss_getspent_r = __nss_lookup_function (ni, "getspent_r");
-+ nss_endspent = __nss_lookup_function (ni, "endspent");
-+ }
-+}
-+
- static void
- give_spwd_free (struct spwd *pwd)
- {
-@@ -142,45 +156,17 @@
- }
-
- static enum nss_status
--internal_setspent (ent_t *ent)
-+internal_setspent (ent_t *ent, int stayopen)
- {
- enum nss_status status = NSS_STATUS_SUCCESS;
-
-- ent->nis = ent->first = ent->netgroup = 0;
-+ ent->first = ent->netgroup = 0;
-+ ent->files = TRUE;
-
- /* If something was left over free it. */
- if (ent->netgroup)
- __internal_endnetgrent (&ent->netgrdata);
-
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
--
-- if (pwdtable == NULL)
-- {
-- static const char key[] = "passwd.org_dir.";
-- const char *local_dir = nis_local_directory ();
-- size_t len_local_dir = strlen (local_dir);
--
-- pwdtable = malloc (sizeof (key) + len_local_dir);
-- if (pwdtable == NULL)
-- return NSS_STATUS_TRYAGAIN;
--
-- pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable,
-- key, sizeof (key) - 1),
-- local_dir, len_local_dir + 1)
-- - pwdtable) - 1;
-- }
--
- if (ent->blacklist.data != NULL)
- {
- ent->blacklist.current = 1;
-@@ -192,7 +178,7 @@
-
- if (ent->stream == NULL)
- {
-- ent->stream = fopen ("/etc/shadow", "r");
-+ ent->stream = fopen ("/etc/shadow", "rm");
-
- if (ent->stream == NULL)
- status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-@@ -201,20 +187,23 @@
- /* We have to make sure the file is `closed on exec'. */
- int result, flags;
-
-- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
-+ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
- if (result >= 0)
- {
- flags |= FD_CLOEXEC;
-- result = fcntl (fileno (ent->stream), F_SETFD, flags);
-+ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
- }
- if (result < 0)
- {
- /* Something went wrong. Close the stream and return a
-- failure. */
-+ failure. */
- fclose (ent->stream);
- ent->stream = NULL;
- status = NSS_STATUS_UNAVAIL;
- }
-+ else
-+ /* We take care of locking ourself. */
-+ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
- }
- }
- else
-@@ -222,6 +211,9 @@
-
- give_spwd_free (&ent->pwd);
-
-+ if (status == NSS_STATUS_SUCCESS && nss_setspent)
-+ return nss_setspent (stayopen);
-+
- return status;
- }
-
-@@ -234,12 +226,9 @@
- __libc_lock_lock (lock);
-
- if (ni == NULL)
-- {
-- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
-- result = internal_setspent (&ext_ent);
-+ result = internal_setspent (&ext_ent, stayopen);
-
- __libc_lock_unlock (lock);
-
-@@ -250,6 +239,9 @@
- static enum nss_status
- internal_endspent (ent_t *ent)
- {
-+ if (nss_endspent)
-+ nss_endspent ();
-+
- if (ent->stream != NULL)
- {
- fclose (ent->stream);
-@@ -259,20 +251,8 @@
- if (ent->netgroup)
- __internal_endnetgrent (&ent->netgrdata);
-
-- ent->nis = ent->first = ent->netgroup = 0;
--
-- if (ent->oldkey != NULL)
-- {
-- free (ent->oldkey);
-- ent->oldkey = NULL;
-- ent->oldkeylen = 0;
-- }
--
-- if (ent->result != NULL)
-- {
-- nis_freeresult (ent->result);
-- ent->result = NULL;
-- }
-+ ent->first = ent->netgroup = FALSE;
-+ ent->files = TRUE;
-
- if (ent->blacklist.data != NULL)
- {
-@@ -304,25 +284,27 @@
-
-
- static enum nss_status
--getspent_next_nis_netgr (const char *name, struct spwd *result, ent_t *ent,
-- char *group, char *buffer, size_t buflen, int *errnop)
-+getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent,
-+ char *group, char *buffer, size_t buflen,
-+ int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- char *ypdomain, *host, *user, *domain, *outval, *p, *p2;
-- int status, outvallen;
-+ char *curdomain, *host, *user, *domain, *p2;
- size_t p2len;
-
-- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
-+ if (!nss_getspnam_r)
-+ return NSS_STATUS_UNAVAIL;
-+
-+ if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
- {
-- ent->netgroup = 0;
-- ent->first = 0;
-+ ent->netgroup = FALSE;
-+ ent->first = FALSE;
- give_spwd_free (&ent->pwd);
- return NSS_STATUS_UNAVAIL;
- }
-
- if (ent->first == TRUE)
- {
-- bzero (&ent->netgrdata, sizeof (struct __netgrent));
-+ memset (&ent->netgrdata, 0, sizeof (struct __netgrent));
- __internal_setnetgrent (group, &ent->netgrdata);
- ent->first = FALSE;
- }
-@@ -330,7 +312,7 @@
- while (1)
- {
- char *saved_cursor;
-- int parse_res;
-+ enum nss_status status;
-
- saved_cursor = ent->netgrdata.cursor;
- status = __internal_getnetgrent_r (&host, &user, &domain,
-@@ -339,7 +321,7 @@
- if (status != 1)
- {
- __internal_endnetgrent (&ent->netgrdata);
-- ent->netgroup = 0;
-+ ent->netgroup = FALSE;
- give_spwd_free (&ent->pwd);
- return NSS_STATUS_RETURN;
- }
-@@ -347,7 +329,7 @@
- if (user == NULL || user[0] == '-')
- continue;
-
-- if (domain != NULL && strcmp (ypdomain, domain) != 0)
-+ if (domain != NULL && strcmp (curdomain, domain) != 0)
- continue;
-
- /* If name != NULL, we are called from getpwnam */
-@@ -355,240 +337,43 @@
- if (strcmp (user, name) != 0)
- continue;
-
-- if (yp_match (ypdomain, "shadow.byname", user,
-- strlen (user), &outval, &outvallen)
-- != YPERR_SUCCESS)
-- continue;
--
- p2len = spwd_need_buflen (&ent->pwd);
- if (p2len > buflen)
- {
-- free (outval);
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- p2 = buffer + (buflen - p2len);
- buflen -= p2len;
-- if (buflen < ((size_t) outval + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p = strncpy (buffer, outval, buflen);
-- while (isspace (*p))
-- p++;
-- free (outval);
-- parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- ent->netgrdata.cursor = saved_cursor;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- if (parse_res)
-- {
-- /* Store the User in the blacklist for the "+" at the end of
-- /etc/passwd */
-- blacklist_store_name (result->sp_namp, ent);
-- copy_spwd_changes (result, &ent->pwd, p2, p2len);
-- break;
-- }
-- }
--
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--getspent_next_nisplus_netgr (const char *name, struct spwd *result,
-- ent_t *ent, char *group, char *buffer,
-- size_t buflen, int *errnop)
--{
-- char *ypdomain, *host, *user, *domain, *p2;
-- int status, parse_res;
-- size_t p2len;
-- nis_result *nisres;
-
-- /* Maybe we should use domainname here ? We need the current
-- domainname for the domain field in netgroups */
-- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
-- {
-- ent->netgroup = 0;
-- ent->first = 0;
-- give_spwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
--
-- if (ent->first == TRUE)
-- {
-- bzero (&ent->netgrdata, sizeof (struct __netgrent));
-- __internal_setnetgrent (group, &ent->netgrdata);
-- ent->first = FALSE;
-- }
--
-- while (1)
-- {
-- char *saved_cursor;
--
-- saved_cursor = ent->netgrdata.cursor;
-- status = __internal_getnetgrent_r (&host, &user, &domain,
-- &ent->netgrdata, buffer, buflen,
-- errnop);
-- if (status != 1)
-- {
-- __internal_endnetgrent (&ent->netgrdata);
-- ent->netgroup = 0;
-- give_spwd_free (&ent->pwd);
-- return NSS_STATUS_RETURN;
-- }
--
-- if (user == NULL || user[0] == '-')
-- continue;
--
-- if (domain != NULL && strcmp (ypdomain, domain) != 0)
-- continue;
--
-- /* If name != NULL, we are called from getpwnam */
-- if (name != NULL)
-- if (strcmp (user, name) != 0)
-- continue;
-+ if (nss_getspnam_r (user, result, buffer, buflen, errnop) !=
-+ NSS_STATUS_SUCCESS)
-+ continue;
-
-- p2len = spwd_need_buflen (&ent->pwd);
-- if (p2len > buflen)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p2 = buffer + (buflen - p2len);
-- buflen -= p2len;
-- {
-- char buf[strlen (user) + 30 + pwdtablelen];
-- sprintf (buf, "[name=%s],%s", user, pwdtable);
-- nisres = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
-- }
-- if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS)
-- {
-- nis_freeresult (nisres);
-- continue;
-- }
-- parse_res = _nss_nisplus_parse_spent (nisres, result, buffer,
-- buflen, errnop);
-- if (parse_res == -1)
-+ if (!in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
- {
-- nis_freeresult (nisres);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (nisres);
--
-- if (parse_res)
-- {
-- /* Store the User in the blacklist for the "+" at the end of
-- /etc/passwd */
-+ /* Store the User in the blacklist for possible the "+" at the
-+ end of /etc/passwd */
- blacklist_store_name (result->sp_namp, ent);
- copy_spwd_changes (result, &ent->pwd, p2, p2len);
-- break;
-- }
-- }
--
-- return NSS_STATUS_SUCCESS;
--}
--
--static enum nss_status
--getspent_next_nisplus (struct spwd *result, ent_t *ent, char *buffer,
-- size_t buflen, int *errnop)
--{
-- int parse_res;
-- size_t p2len;
-- char *p2;
--
-- p2len = spwd_need_buflen (&ent->pwd);
-- if (p2len > buflen)
-- {
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- p2 = buffer + (buflen - p2len);
-- buflen -= p2len;
-- do
-- {
-- bool_t saved_first;
-- nis_result *saved_res;
--
-- if (ent->first)
-- {
-- saved_first = TRUE;
-- saved_res = ent->result;
--
-- ent->result = nis_first_entry (pwdtable);
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- ent->nis = 0;
-- give_spwd_free (&ent->pwd);
-- return niserr2nss (ent->result->status);
-- }
-- ent->first = FALSE;
-- }
-- else
-- {
-- nis_result *res;
--
-- saved_first = FALSE;
-- saved_res = ent->result;
--
-- res = nis_next_entry (pwdtable, &ent->result->cookie);
-- ent->result = res;
-- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
-- {
-- nis_freeresult (saved_res);
-- ent->nis = 0;
-- give_spwd_free (&ent->pwd);
-- return niserr2nss (ent->result->status);
-- }
-- }
-- parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer,
-- buflen, errnop);
-- if (parse_res == -1)
-- {
-- ent->first = saved_first;
-- nis_freeresult (ent->result);
-- ent->result = saved_res;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!saved_first)
-- nis_freeresult (saved_res);
-+ break;
- }
-- if (parse_res &&
-- in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
-- parse_res = 0; /* if result->pw_name in blacklist,search next entry */
- }
-- while (!parse_res);
--
-- copy_spwd_changes (result, &ent->pwd, p2, p2len);
-
- return NSS_STATUS_SUCCESS;
- }
-
-
- static enum nss_status
--getspent_next_nis (struct spwd *result, ent_t *ent,
-+getspent_next_nss (struct spwd *result, ent_t *ent,
- char *buffer, size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
-- char *domain, *outkey, *outval, *p, *p2;
-- int outkeylen, outvallen, parse_res;
-+ enum nss_status status;
-+ char *p2;
- size_t p2len;
-
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_spwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
-+ if (!nss_getspent_r)
-+ return NSS_STATUS_UNAVAIL;
-
- p2len = spwd_need_buflen (&ent->pwd);
- if (p2len > buflen)
-@@ -600,87 +385,11 @@
- buflen -= p2len;
- do
- {
-- bool_t saved_first;
-- char *saved_oldkey;
-- int saved_oldlen;
--
-- if (ent->first)
-- {
-- if (yp_first (domain, "shadow.byname", &outkey, &outkeylen,
-- &outval, &outvallen) != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_spwd_free (&ent->pwd);
-- return NSS_STATUS_UNAVAIL;
-- }
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- saved_first = TRUE;
-- saved_oldkey = ent->oldkey;
-- saved_oldlen = ent->oldkeylen;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- ent->first = FALSE;
-- }
-- else
-- {
-- if (yp_next (domain, "shadow.byname", ent->oldkey, ent->oldkeylen,
-- &outkey, &outkeylen, &outval, &outvallen)
-- != YPERR_SUCCESS)
-- {
-- ent->nis = 0;
-- give_spwd_free (&ent->pwd);
-- return NSS_STATUS_NOTFOUND;
-- }
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
--
-- saved_first = FALSE;
-- saved_oldkey = ent->oldkey;
-- saved_oldlen = ent->oldkeylen;
-- ent->oldkey = outkey;
-- ent->oldkeylen = outkeylen;
-- }
--
-- /* Copy the found data to our buffer */
-- p = strncpy (buffer, outval, buflen);
--
-- /* ...and free the data. */
-- free (outval);
--
-- while (isspace (*p))
-- ++p;
-- parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop);
-- if (parse_res == -1)
-- {
-- free (ent->oldkey);
-- ent->oldkey = saved_oldkey;
-- ent->oldkeylen = saved_oldlen;
-- ent->first = saved_first;
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- else
-- {
-- if (!saved_first)
-- free (saved_oldkey);
-- }
-- if (parse_res &&
-- in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
-- parse_res = 0;
-+ if ((status = nss_getspent_r (result, buffer, buflen, errnop)) !=
-+ NSS_STATUS_SUCCESS)
-+ return status;
- }
-- while (!parse_res);
-+ while (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent));
-
- copy_spwd_changes (result, &ent->pwd, p2, p2len);
-
-@@ -689,15 +398,16 @@
-
- /* This function handle the +user entrys in /etc/shadow */
- static enum nss_status
--getspnam_plususer (const char *name, struct spwd *result, char *buffer,
-- size_t buflen, int *errnop)
-+getspnam_plususer (const char *name, struct spwd *result, ent_t *ent,
-+ char *buffer, size_t buflen, int *errnop)
- {
-- struct parser_data *data = (void *) buffer;
- struct spwd pwd;
-- int parse_res;
- char *p;
- size_t plen;
-
-+ if (!nss_getspnam_r)
-+ return NSS_STATUS_UNAVAIL;
-+
- memset (&pwd, '\0', sizeof (struct spwd));
- pwd.sp_warn = -1;
- pwd.sp_inact = -1;
-@@ -715,72 +425,17 @@
- p = buffer + (buflen - plen);
- buflen -= plen;
-
-- if (use_nisplus) /* Do the NIS+ query here */
-- {
-- nis_result *res;
-- char buf[strlen (name) + 24 + pwdtablelen];
--
-- sprintf(buf, "[name=%s],%s", name, pwdtable);
-- res = nis_list(buf, 0, NULL, NULL);
-- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
-- {
-- enum nss_status status = niserr2nss (res->status);
--
-- nis_freeresult (res);
-- return status;
-- }
-- parse_res = _nss_nisplus_parse_spent (res, result, buffer,
-- buflen, errnop);
-- if (parse_res == -1)
-- {
-- nis_freeresult (res);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-- nis_freeresult (res);
-- }
-- else /* Use NIS */
-- {
-- char *domain, *outval, *ptr;
-- int outvallen;
--
-- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (yp_match (domain, "shadow.byname", name, strlen (name),
-- &outval, &outvallen) != YPERR_SUCCESS)
-- return NSS_STATUS_NOTFOUND;
--
-- if (buflen < ((size_t) outvallen + 1))
-- {
-- free (outval);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ if (nss_getspnam_r (name, result, buffer, buflen, errnop) !=
-+ NSS_STATUS_SUCCESS)
-+ return NSS_STATUS_NOTFOUND;
-
-- ptr = strncpy (buffer, outval, buflen);
-- free (outval);
-- while (isspace (*ptr))
-- ptr++;
-- parse_res = _nss_files_parse_spent (ptr, result, data, buflen, errnop);
-- if (parse_res == -1)
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ if (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
-+ return NSS_STATUS_NOTFOUND;
-
-- if (parse_res)
-- {
-- copy_spwd_changes (result, &pwd, p, plen);
-- give_spwd_free (&pwd);
-- /* We found the entry. */
-- return NSS_STATUS_SUCCESS;
-- }
-- else
-- {
-- /* Give buffer the old len back */
-- buflen += plen;
-- give_spwd_free (&pwd);
-- }
-- return NSS_STATUS_RETURN;
-+ copy_spwd_changes (result, &pwd, p, plen);
-+ give_spwd_free (&pwd);
-+ /* We found the entry. */
-+ return NSS_STATUS_SUCCESS;
- }
-
- static enum nss_status
-@@ -798,8 +453,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -814,18 +469,18 @@
- ++p;
- }
- while (*p == '\0' || *p == '#' /* Ignore empty and comment lines. */
-- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ /* Parse the line. If it is invalid, loop to
-+ get the next line of the file to parse. */
- || !(parse_res = _nss_files_parse_spent (p, result, data,
- buflen, errnop)));
-
- if (parse_res == -1)
-- {
-- /* The parser ran out of space. */
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- return NSS_STATUS_TRYAGAIN;
-- }
-+ {
-+ /* The parser ran out of space. */
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ return NSS_STATUS_TRYAGAIN;
-+ }
-
- if (result->sp_namp[0] != '+' && result->sp_namp[0] != '-')
- /* This is a real entry. */
-@@ -836,12 +491,12 @@
- && result->sp_namp[2] != '\0')
- {
- /* XXX Do not use fixed length buffers. */
-- char buf2[1024];
-+ char buf2[1024];
- char *user, *host, *domain;
-- struct __netgrent netgrdata;
-+ struct __netgrent netgrdata;
-
-- bzero (&netgrdata, sizeof (struct __netgrent));
-- __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
-+ bzero (&netgrdata, sizeof (struct __netgrent));
-+ __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
- while (__internal_getnetgrent_r (&host, &user, &domain,
- &netgrdata, buf2, sizeof (buf2),
- errnop))
-@@ -863,14 +518,9 @@
- ent->first = TRUE;
- copy_spwd_changes (&ent->pwd, result, NULL, 0);
-
-- if (use_nisplus)
-- status = getspent_next_nisplus_netgr (NULL, result, ent,
-- &result->sp_namp[2],
-- buffer, buflen, errnop);
-- else
-- status = getspent_next_nis_netgr (NULL, result, ent,
-- &result->sp_namp[2],
-- buffer, buflen, errnop);
-+ status = getspent_next_nss_netgr (NULL, result, ent,
-+ &result->sp_namp[2],
-+ buffer, buflen, errnop);
- if (status == NSS_STATUS_RETURN)
- continue;
- else
-@@ -889,41 +539,43 @@
- if (result->sp_namp[0] == '+' && result->sp_namp[1] != '\0'
- && result->sp_namp[1] != '@')
- {
-- enum nss_status status;
-+ size_t len = strlen (result->sp_namp);
-+ char buf[len];
-+ enum nss_status status;
-
- /* Store the User in the blacklist for the "+" at the end of
- /etc/passwd */
-- blacklist_store_name (&result->sp_namp[1], ent);
-- status = getspnam_plususer (&result->sp_namp[1], result, buffer,
-- buflen, errnop);
-- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-- break;
-- else
-- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
-- || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
-- continue;
-- else
-- {
-- if (status == NSS_STATUS_TRYAGAIN)
-- {
-- fsetpos (ent->stream, &pos);
-- *errnop = ERANGE;
-- }
-- return status;
-- }
-+ memcpy (buf, &result->sp_namp[1], len);
-+ status = getspnam_plususer (&result->sp_namp[1], result, ent,
-+ buffer, buflen, errnop);
-+ blacklist_store_name (buf, ent);
-+
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ break;
-+ /* We couldn't parse the entry */
-+ else if (status == NSS_STATUS_RETURN
-+ /* entry doesn't exist */
-+ || status == NSS_STATUS_NOTFOUND)
-+ continue;
-+ else
-+ {
-+ if (status == NSS_STATUS_TRYAGAIN)
-+ {
-+ fsetpos (ent->stream, &pos);
-+ *errnop = ERANGE;
-+ }
-+ return status;
-+ }
- }
-
- /* +:... */
- if (result->sp_namp[0] == '+' && result->sp_namp[1] == '\0')
- {
-- ent->nis = TRUE;
-+ ent->files = FALSE;
- ent->first = TRUE;
- copy_spwd_changes (&ent->pwd, result, NULL, 0);
-
-- if (use_nisplus)
-- return getspent_next_nisplus (result, ent, buffer, buflen, errnop);
-- else
-- return getspent_next_nis (result, ent, buffer, buflen, errnop);
-+ return getspent_next_nss (result, ent, buffer, buflen, errnop);
- }
- }
-
-@@ -937,57 +589,45 @@
- {
- if (ent->netgroup)
- {
-- int status;
-+ enum nss_status status;
-
- /* We are searching members in a netgroup */
- /* Since this is not the first call, we don't need the group name */
-- if (use_nisplus)
-- status = getspent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer,
-- buflen, errnop);
-- else
-- status = getspent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen,
-- errnop);
-+ status = getspent_next_nss_netgr (NULL, pw, ent, NULL, buffer,
-+ buflen, errnop);
-+
- if (status == NSS_STATUS_RETURN)
- return getspent_next_file (pw, ent, buffer, buflen, errnop);
- else
- return status;
- }
-+ else if (ent->files)
-+ return getspent_next_file (pw, ent, buffer, buflen, errnop);
- else
-- if (ent->nis)
-- {
-- if (use_nisplus)
-- return getspent_next_nisplus (pw, ent, buffer, buflen, errnop);
-- else
-- return getspent_next_nis (pw, ent, buffer, buflen, errnop);
-- }
-- else
-- return getspent_next_file (pw, ent, buffer, buflen, errnop);
-+ return getspent_next_nss (pw, ent, buffer, buflen, errnop);
- }
-
- enum nss_status
- _nss_compat_getspent_r (struct spwd *pwd, char *buffer, size_t buflen,
- int *errnop)
- {
-- enum nss_status status = NSS_STATUS_SUCCESS;
-+ enum nss_status result = NSS_STATUS_SUCCESS;
-
- __libc_lock_lock (lock);
-
-+ /* Be prepared that the setpwent function was not called before. */
- if (ni == NULL)
-- {
-- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
-- /* Be prepared that the setspent function was not called before. */
- if (ext_ent.stream == NULL)
-- status = internal_setspent (&ext_ent);
-+ result = internal_setspent (&ext_ent, 1);
-
-- if (status == NSS_STATUS_SUCCESS)
-- status = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop);
-
- __libc_lock_unlock (lock);
-
-- return status;
-+ return result;
- }
-
- /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */
-@@ -1007,8 +647,8 @@
- {
- fgetpos (ent->stream, &pos);
- buffer[buflen - 1] = '\xff';
-- p = fgets (buffer, buflen, ent->stream);
-- if (p == NULL && feof (ent->stream))
-+ p = fgets_unlocked (buffer, buflen, ent->stream);
-+ if (p == NULL && feof_unlocked (ent->stream))
- return NSS_STATUS_NOTFOUND;
-
- if (p == NULL || buffer[buflen - 1] != '\xff')
-@@ -1018,13 +658,16 @@
- return NSS_STATUS_TRYAGAIN;
- }
-
-+ /* Terminate the line for any case. */
-+ buffer[buflen - 1] = '\0';
-+
- /* Skip leading blanks. */
- while (isspace (*p))
- ++p;
- }
-- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
-+ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
- /* Parse the line. If it is invalid, loop to
-- get the next line of the file to parse. */
-+ get the next line of the file to parse. */
- !(parse_res = _nss_files_parse_spent (p, result, data, buflen,
- errnop)));
-
-@@ -1046,24 +689,13 @@
- }
-
- /* -@netgroup */
-+ /* If the loaded NSS module does not support this service, add
-+ all users from a +@netgroup entry to the blacklist, too. */
- if (result->sp_namp[0] == '-' && result->sp_namp[1] == '@'
- && result->sp_namp[2] != '\0')
- {
-- /* XXX Do not use fixed length buffers. */
-- char buf2[1024];
-- char *user, *host, *domain;
-- struct __netgrent netgrdata;
--
-- bzero (&netgrdata, sizeof (struct __netgrent));
-- __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
-- while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata,
-- buf2, sizeof (buf2), errnop))
-- {
-- if (user != NULL && user[0] != '-')
-- if (strcmp (user, name) == 0)
-- return NSS_STATUS_NOTFOUND;
-- }
-- __internal_endnetgrent (&netgrdata);
-+ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
-+ return NSS_STATUS_NOTFOUND;
- continue;
- }
-
-@@ -1071,28 +703,18 @@
- if (result->sp_namp[0] == '+' && result->sp_namp[1] == '@'
- && result->sp_namp[2] != '\0')
- {
-- char *buf = strdupa (&result->sp_namp[2]);
-- int status;
--
-- ent->netgroup = TRUE;
-- ent->first = TRUE;
-- copy_spwd_changes (&ent->pwd, result, NULL, 0);
-+ enum nss_status status;
-
-- do
-+ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
- {
-- if (use_nisplus)
-- status = getspent_next_nisplus_netgr (name, result, ent, buf,
-- buffer, buflen, errnop);
-- else
-- status = getspent_next_nis_netgr (name, result, ent, buf,
-- buffer, buflen, errnop);
-+ status = getspnam_plususer (name, result, ent, buffer,
-+ buflen, errnop);
-+
- if (status == NSS_STATUS_RETURN)
- continue;
-
-- if (status == NSS_STATUS_SUCCESS
-- && strcmp (result->sp_namp, name) == 0)
-- return NSS_STATUS_SUCCESS;
-- } while (status == NSS_STATUS_SUCCESS);
-+ return status;
-+ }
- continue;
- }
-
-@@ -1114,8 +736,9 @@
- {
- enum nss_status status;
-
-- status = getspnam_plususer (name, result, buffer, buflen,
-- errnop);
-+ status = getspnam_plususer (name, result, ent,
-+ buffer, buflen, errnop);
-+
- if (status == NSS_STATUS_RETURN)
- /* We couldn't parse the entry */
- return NSS_STATUS_NOTFOUND;
-@@ -1129,9 +752,15 @@
- {
- enum nss_status status;
-
-- status = getspnam_plususer (name, result, buffer, buflen, errnop);
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-+ status = getspnam_plususer (name, result, ent,
-+ buffer, buflen, errnop);
-+
-+ if (status == NSS_STATUS_SUCCESS)
-+ /* We found the entry. */
-+ break;
-+ else if (status == NSS_STATUS_RETURN)
-+ /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
- else
- return status;
- }
-@@ -1143,28 +772,28 @@
- _nss_compat_getspnam_r (const char *name, struct spwd *pwd,
- char *buffer, size_t buflen, int *errnop)
- {
-- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
-+ enum nss_status result;
-+ ent_t ent = {0, TRUE, 0, NULL, {NULL, 0, 0},
- {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}};
-- enum nss_status status;
-
- if (name[0] == '-' || name[0] == '+')
- return NSS_STATUS_NOTFOUND;
-
-+ __libc_lock_lock (lock);
-+
- if (ni == NULL)
-- {
-- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
-- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
-- }
-+ init_nss_interface ();
-
-- status = internal_setspent (&ent);
-- if (status != NSS_STATUS_SUCCESS)
-- return status;
-+ __libc_lock_unlock (lock);
-+
-+ result = internal_setspent (&ent, 0);
-
-- status = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
-
- internal_endspent (&ent);
-
-- return status;
-+ return result;
- }
-
- /* Support routines for remembering -@netgroup and -user entries.
-@@ -1225,7 +854,7 @@
-
- buf[0] = '|';
- cp = stpcpy (&buf[1], name);
-- *cp++= '|';
-+ *cp++ = '|';
- *cp = '\0';
- return strstr (ent->blacklist.data, buf) != NULL;
- }
---- glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-01-18 05:21:02.000000000 -0500
-+++ glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-03-18 16:46:07.000000000 -0500
-@@ -214,7 +214,7 @@
- char *p;
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- if (name == NULL)
- {
---- glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-01-18 05:40:11.000000000 -0500
-+++ glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-03-18 16:46:07.000000000 -0500
-@@ -261,7 +261,7 @@
- /* Convert name to lowercase. */
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- for (i = 0; i < namlen; ++i)
- name2[i] = tolower (name[i]);
---- glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2002-08-26 00:47:19.000000000 -0400
-+++ glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -17,10 +17,11 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <nss.h>
--#include <grp.h>
-+#include <alloca.h>
- #include <ctype.h>
- #include <errno.h>
-+#include <grp.h>
-+#include <nss.h>
- #include <string.h>
- #include <unistd.h>
- #include <rpcsvc/yp.h>
-@@ -159,10 +160,7 @@
- internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
- &intern)) == NSS_STATUS_TRYAGAIN
- && *errnop == ERANGE)
-- {
-- buflen *= 2;
-- tmpbuf = __alloca (buflen);
-- }
-+ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
-
- if (status != NSS_STATUS_SUCCESS)
- goto done;
---- glibc-2.3.2/nis/nss_nis/nis-network.c 2003-01-19 14:06:27.000000000 -0500
-+++ glibc-2.3.2/nis/nss_nis/nis-network.c 2003-03-18 16:46:07.000000000 -0500
-@@ -181,7 +181,7 @@
- /* Convert name to lowercase. */
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- for (i = 0; i < namlen; ++i)
- name2[i] = _tolower (name[i]);
---- glibc-2.3.2/nis/ypclnt.c 2002-03-20 19:37:12.000000000 -0500
-+++ glibc-2.3.2/nis/ypclnt.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
-
-@@ -66,15 +66,12 @@
- if (domain == NULL || domain[0] == '\0')
- return YPERR_BADARGS;
-
-- if (ypdb != NULL)
-+ ysd = *ypdb;
-+ while (ysd != NULL)
- {
-- ysd = *ypdb;
-- while (ysd != NULL)
-- {
-- if (strcmp (domain, ysd->dom_domain) == 0)
-- break;
-- ysd = ysd->dom_pnext;
-- }
-+ if (strcmp (domain, ysd->dom_domain) == 0)
-+ break;
-+ ysd = ysd->dom_pnext;
- }
-
- if (ysd == NULL)
-@@ -205,7 +202,7 @@
- return YPERR_YPSERV;
- }
-
-- if (is_new && ypdb != NULL)
-+ if (is_new)
- {
- ysd->dom_pnext = *ypdb;
- *ypdb = ysd;
-@@ -219,6 +216,7 @@
- {
- clnt_destroy (ydb->dom_client);
- ydb->dom_client = NULL;
-+ free (ydb);
- }
-
- int
-@@ -255,7 +253,6 @@
- else
- ydbptr2 = ydbptr->dom_pnext;
- __yp_unbind (work);
-- free (work);
- break;
- }
- ydbptr2 = ydbptr;
-@@ -335,10 +332,7 @@
- use_ypbindlist = FALSE;
- }
- else
-- {
-- __yp_unbind (ydb);
-- free (ydb);
-- }
-+ __yp_unbind (ydb);
-
- ydb = NULL;
- status = YPERR_RPC;
-@@ -355,11 +349,7 @@
- }
- else
- if (ydb != NULL)
-- {
-- __yp_unbind (ydb);
-- free (ydb);
-- ydb = NULL;
-- }
-+ __yp_unbind (ydb);
-
- __set_errno (saved_errno);
-
-@@ -710,6 +700,7 @@
-
- /* We don't need the UDP connection anymore. */
- __yp_unbind (ydb);
-+ ydb = NULL;
-
- clnt = clnttcp_create (&clnt_sin, YPPROG, YPVERS, &clnt_sock, 0, 0);
- if (clnt == NULL)
---- glibc-2.3.2/nscd/Makefile 2002-10-17 13:05:53.000000000 -0400
-+++ glibc-2.3.2/nscd/Makefile 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1998, 2000, 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
-@@ -30,7 +30,7 @@
-
- nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
- getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm2_r \
-- dbg_log nscd_conf nscd_stat cache xmalloc
-+ dbg_log nscd_conf nscd_stat cache xmalloc xstrdup
-
- ifeq ($(have-thread-library),yes)
-
-@@ -53,6 +53,10 @@
-
- include ../Rules
-
-+CFLAGS-nscd_getpw_r.c = -fexceptions
-+CFLAGS-nscd_getgr_r.c = -fexceptions
-+CFLAGS-nscd_gethst_r.c = -fexceptions
-+
- # This makes sure -DNOT_IN_libc is passed for all these modules.
- cpp-srcs-left := $(nscd-modules:=.c)
- lib := nonlib
---- glibc-2.3.2/nscd/cache.c 2001-07-07 15:21:07.000000000 -0400
-+++ glibc-2.3.2/nscd/cache.c 2003-04-28 08:20:36.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -17,7 +17,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <atomicity.h>
-+#include <atomic.h>
- #include <errno.h>
- #include <error.h>
- #include <limits.h>
-@@ -39,16 +39,19 @@
-
- This function must be called with the read-lock held. */
- struct hashentry *
--cache_search (int type, void *key, size_t len, struct database *table,
-+cache_search (request_type type, void *key, size_t len, struct database *table,
- uid_t owner)
- {
- unsigned long int hash = __nis_hash (key, len) % table->module;
- struct hashentry *work;
-+ unsigned long int nsearched = 0;
-
- work = table->array[hash];
-
- while (work != NULL)
- {
-+ ++nsearched;
-+
- if (type == work->type && len == work->len
- && memcmp (key, work->key, len) == 0 && work->owner == owner)
- {
-@@ -58,13 +61,16 @@
- else
- ++table->poshit;
-
-- return work;
-+ break;
- }
-
- work = work->next;
- }
-
-- return NULL;
-+ if (nsearched > table->maxnsearched)
-+ table->maxnsearched = nsearched;
-+
-+ return work;
- }
-
- /* Add a new entry to the cache. The return value is zero if the function
-@@ -101,14 +107,20 @@
- /* Put the new entry in the first position. */
- do
- newp->next = table->array[hash];
-- while (! compare_and_swap ((volatile long int *) &table->array[hash],
-- (long int) newp->next, (long int) newp));
-+ while (atomic_compare_and_exchange_bool_acq (&table->array[hash], newp,
-+ newp->next));
-
- /* Update the statistics. */
- if (data == (void *) -1)
- ++table->negmiss;
- else if (last)
- ++table->posmiss;
-+
-+ /* Instead of slowing down the normal process for statistics
-+ collection we accept living with some incorrect data. */
-+ unsigned long int nentries = ++table->nentries;
-+ if (nentries > table->maxnentries)
-+ table->maxnentries = nentries;
- }
-
- /* Walk through the table and remove all entries which lifetime ended.
-@@ -165,10 +177,10 @@
-
- /* We run through the table and find values which are not valid anymore.
-
-- Note that for the initial step, finding the entries to be removed,
-- we don't need to get any lock. It is at all timed assured that the
-- linked lists are set up correctly and that no second thread prunes
-- the cache. */
-+ Note that for the initial step, finding the entries to be removed,
-+ we don't need to get any lock. It is at all timed assured that the
-+ linked lists are set up correctly and that no second thread prunes
-+ the cache. */
- do
- {
- struct hashentry *runp = table->array[--cnt];
-@@ -195,7 +207,11 @@
-
- /* Now we have to get the write lock since we are about to modify
- the table. */
-- pthread_rwlock_wrlock (&table->lock);
-+ if (__builtin_expect (pthread_rwlock_trywrlock (&table->lock) != 0, 0))
-+ {
-+ ++table->wrlockdelayed;
-+ pthread_rwlock_wrlock (&table->lock);
-+ }
-
- while (first <= last)
- {
-@@ -208,6 +224,7 @@
- table->array[first]->dellist = head;
- head = table->array[first];
- table->array[first] = head->next;
-+ --table->nentries;
- if (--mark[first] == 0)
- break;
- }
-@@ -221,6 +238,7 @@
- head = runp->next;
- runp->next = head->next;
- --mark[first];
-+ --table->nentries;
- }
- else
- runp = runp->next;
-@@ -232,29 +250,35 @@
- /* It's all done. */
- pthread_rwlock_unlock (&table->lock);
-
-- /* And another run to free the data. */
-- do
-+ /* One extra pass if we do debugging. */
-+ if (__builtin_expect (debug_level > 0, 0))
- {
-- struct hashentry *old = head;
-+ struct hashentry *runp = head;
-
-- if (debug_level > 0)
-+ while (runp != NULL)
- {
- char buf[INET6_ADDRSTRLEN];
- const char *str;
-
-- if ((old->type == GETHOSTBYADDR || old->type == GETHOSTBYADDRv6)
-- && (old->last || old->data == (void *) -1))
-+ if (runp->type == GETHOSTBYADDR || runp->type == GETHOSTBYADDRv6)
- {
-- inet_ntop (old->type == GETHOSTBYADDR ? AF_INET : AF_INET6,
-- old->key, buf, sizeof (buf));
-+ inet_ntop (runp->type == GETHOSTBYADDR ? AF_INET : AF_INET6,
-+ runp->key, buf, sizeof (buf));
- str = buf;
- }
- else
-- str = old->last ? old->key : (old->data == (void *) -1
-- ? old->key : "???");
-+ str = runp->key;
-
-- dbg_log ("remove %s entry \"%s\"", serv2str[old->type], str);
-+ dbg_log ("remove %s entry \"%s\"", serv2str[runp->type], str);
-+
-+ runp = runp->next;
- }
-+ }
-+
-+ /* And another run to free the data. */
-+ do
-+ {
-+ struct hashentry *old = head;
-
- /* Free the data structures. */
- if (old->data == (void *) -1)
---- glibc-2.3.2/nscd/connections.c 2003-01-16 02:52:01.000000000 -0500
-+++ glibc-2.3.2/nscd/connections.c 2003-05-12 12:13:06.000000000 -0400
-@@ -19,6 +19,7 @@
- 02111-1307 USA. */
-
- #include <assert.h>
-+#include <atomic.h>
- #include <error.h>
- #include <errno.h>
- #include <grp.h>
-@@ -47,6 +48,8 @@
- const char *server_user;
- static uid_t server_uid;
- static gid_t server_gid;
-+const char *stat_user;
-+uid_t stat_uid;
- static gid_t *server_groups;
- #ifndef NGROUPS
- # define NGROUPS 32
-@@ -87,7 +90,7 @@
- };
-
- /* The control data structures for the services. */
--static struct database dbs[lastdb] =
-+struct database dbs[lastdb] =
- {
- [pwddb] = {
- .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
-@@ -130,23 +133,17 @@
- /* Socket for incoming connections. */
- static int sock;
-
-+/* Number of times clients had to wait. */
-+unsigned long int client_queued;
-+
-
- /* Initialize database information structures. */
- void
--nscd_init (const char *conffile)
-+nscd_init (void)
- {
- struct sockaddr_un sock_addr;
- size_t cnt;
-
-- /* Read the configuration file. */
-- if (nscd_parse_file (conffile, dbs) != 0)
-- {
-- /* We couldn't read the configuration file. Disable all services
-- by shutting down the srever. */
-- dbg_log (_("cannot read configuration file; this is fatal"));
-- exit (1);
-- }
--
- /* Secure mode and unprivileged mode are incompatible */
- if (server_user != NULL && secure_in_use)
- {
-@@ -233,6 +230,7 @@
- close (sock);
- }
-
-+
- static void
- invalidate_cache (char *key)
- {
-@@ -256,10 +254,6 @@
- static void
- handle_request (int fd, request_header *req, void *key, uid_t uid)
- {
-- if (__builtin_expect (debug_level, 0) > 0)
-- dbg_log (_("handle_request: request received (Version = %d)"),
-- req->version);
--
- if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION)
- {
- if (debug_level > 0)
-@@ -296,7 +290,7 @@
- /* No, sent the prepared record. */
- if (TEMP_FAILURE_RETRY (write (fd, db->disabled_iov->iov_base,
- db->disabled_iov->iov_len))
-- != db->disabled_iov->iov_len
-+ != (ssize_t) db->disabled_iov->iov_len
- && __builtin_expect (debug_level, 0) > 0)
- {
- /* We have problems sending the result. */
-@@ -309,7 +303,11 @@
- }
-
- /* Be sure we can read the data. */
-- pthread_rwlock_rdlock (&db->lock);
-+ if (__builtin_expect (pthread_rwlock_tryrdlock (&db->lock) != 0, 0))
-+ {
-+ ++db->rdlockdelayed;
-+ pthread_rwlock_rdlock (&db->lock);
-+ }
-
- /* See whether we can handle it from the cache. */
- cached = (struct hashentry *) cache_search (req->type, key, req->key_len,
-@@ -380,20 +378,9 @@
- case GETSTAT:
- case SHUTDOWN:
- case INVALIDATE:
-- /* Accept shutdown, getstat and invalidate only from root */
-- if (secure_in_use && uid == 0)
-+ if (! secure_in_use)
- {
-- if (req->type == GETSTAT)
-- send_stats (fd, dbs);
-- else if (req->type == INVALIDATE)
-- invalidate_cache (key);
-- else
-- termination_handler (0);
-- }
-- else
-- {
-- /* Some systems have no SO_PEERCRED implementation. They don't
-- care about security so we don't as well. */
-+ /* Get the callers credentials. */
- #ifdef SO_PEERCRED
- struct ucred caller;
- socklen_t optlen = sizeof (caller);
-@@ -404,18 +391,30 @@
-
- dbg_log (_("error getting callers id: %s"),
- strerror_r (errno, buf, sizeof (buf)));
-+ break;
- }
-- else
-- if (caller.uid == 0)
-+
-+ uid = caller.uid;
-+#else
-+ /* Some systems have no SO_PEERCRED implementation. They don't
-+ care about security so we don't as well. */
-+ uid = 0;
- #endif
-- {
-- if (req->type == GETSTAT)
-- send_stats (fd, dbs);
-- else if (req->type == INVALIDATE)
-- invalidate_cache (key);
-- else
-- termination_handler (0);
-- }
-+ }
-+
-+ /* Accept shutdown, getstat and invalidate only from root. For
-+ the stat call also allow the user specified in the config file. */
-+ if (req->type == GETSTAT)
-+ {
-+ if (uid == 0 || uid == stat_uid)
-+ send_stats (fd, dbs);
-+ }
-+ else if (uid == 0)
-+ {
-+ if (req->type == INVALIDATE)
-+ invalidate_cache (key);
-+ else
-+ termination_handler (0);
- }
- break;
-
-@@ -435,118 +434,163 @@
- long int my_number = (long int) p;
- struct pollfd conn;
- int run_prune = my_number < lastdb && dbs[my_number].enabled;
-- time_t now = time (NULL);
-- time_t next_prune = now + CACHE_PRUNE_INTERVAL;
-- int timeout = run_prune ? 1000 * (next_prune - now) : -1;
-+ time_t next_prune = run_prune ? time (NULL) + CACHE_PRUNE_INTERVAL : 0;
-+ static unsigned long int nready;
-
- conn.fd = sock;
- conn.events = POLLRDNORM;
-
- while (1)
- {
-- int nr = poll (&conn, 1, timeout);
-+ int nr;
-+
-+ /* One more thread available. */
-+ atomic_increment (&nready);
-+
-+ no_conn:
-+ if (run_prune)
-+ do
-+ {
-+ time_t now = time (NULL);
-+ int timeout = now < next_prune ? 1000 * (next_prune - now) : 0;
-+
-+ nr = poll (&conn, 1, timeout);
-+
-+ if (nr == 0)
-+ {
-+ /* The `poll' call timed out. It's time to clean up the
-+ cache. */
-+ atomic_decrement (&nready);
-+ assert (my_number < lastdb);
-+ prune_cache (&dbs[my_number], time(NULL));
-+ now = time (NULL);
-+ next_prune = now + CACHE_PRUNE_INTERVAL;
-+ goto try_get;
-+ }
-+ }
-+ while ((conn.revents & POLLRDNORM) == 0);
-+
-+ got_data:;
-+ /* We have a new incoming connection. Accept the connection. */
-+ int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL));
-+ request_header req;
-+ char buf[256];
-+ uid_t uid = -1;
-+#ifdef SO_PEERCRED
-+ pid_t pid = 0;
-+#endif
-
-- if (nr == 0)
-+ if (__builtin_expect (fd, 0) < 0)
- {
-- /* The `poll' call timed out. It's time to clean up the cache. */
-- assert (my_number < lastdb);
-- now = time (NULL);
-- prune_cache (&dbs[my_number], now);
-- next_prune = now + CACHE_PRUNE_INTERVAL;
-- timeout = 1000 * (next_prune - now);
-+ dbg_log (_("while accepting connection: %s"),
-+ strerror_r (errno, buf, sizeof (buf)));
-+ goto no_conn;
-+ }
-+
-+ /* This thread is busy. */
-+ atomic_decrement (&nready);
-+
-+ /* Now read the request. */
-+ if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req, sizeof (req)))
-+ != sizeof (req), 0))
-+ {
-+ if (debug_level > 0)
-+ dbg_log (_("short read while reading request: %s"),
-+ strerror_r (errno, buf, sizeof (buf)));
-+ close (fd);
- continue;
- }
-
-- /* We have a new incoming connection. */
-- if (conn.revents & (POLLRDNORM|POLLERR|POLLHUP|POLLNVAL))
-+ /* Some systems have no SO_PEERCRED implementation. They don't
-+ care about security so we don't as well. */
-+#ifdef SO_PEERCRED
-+ if (secure_in_use)
- {
-- /* Accept the connection. */
-- int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL));
-- request_header req;
-- char buf[256];
-- uid_t uid = 0;
-+ struct ucred caller;
-+ socklen_t optlen = sizeof (caller);
-
-- if (__builtin_expect (fd, 0) < 0)
-+ if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) < 0)
- {
-- dbg_log (_("while accepting connection: %s"),
-+ dbg_log (_("error getting callers id: %s"),
- strerror_r (errno, buf, sizeof (buf)));
-- continue;
-- }
--
-- /* Now read the request. */
-- if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req,
-- sizeof (req)))
-- != sizeof (req), 0))
-- {
-- if (debug_level > 0)
-- dbg_log (_("short read while reading request: %s"),
-- strerror_r (errno, buf, sizeof (buf)));
- close (fd);
- continue;
- }
-
-- /* Some systems have no SO_PEERCRED implementation. They don't
-- care about security so we don't as well. */
--#ifdef SO_PEERCRED
-- if (secure_in_use)
-- {
-- struct ucred caller;
-- socklen_t optlen = sizeof (caller);
-+ if (req.type < GETPWBYNAME || req.type > LASTDBREQ
-+ || secure[serv2db[req.type]])
-+ uid = caller.uid;
-
-- if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED,
-- &caller, &optlen) < 0)
-- {
-- dbg_log (_("error getting callers id: %s"),
-- strerror_r (errno, buf, sizeof (buf)));
-- close (fd);
-- continue;
-- }
--
-- if (req.type < GETPWBYNAME || req.type > LASTDBREQ
-- || secure[serv2db[req.type]])
-- uid = caller.uid;
-- }
-+ pid = caller.pid;
-+ }
-+ else if (__builtin_expect (debug_level > 0, 0))
-+ {
-+ struct ucred caller;
-+ socklen_t optlen = sizeof (caller);
-+
-+ if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0)
-+ pid = caller.pid;
-+ }
- #endif
-
-- /* It should not be possible to crash the nscd with a silly
-- request (i.e., a terribly large key). We limit the size
-- to 1kb. */
-- if (__builtin_expect (req.key_len, 1) < 0
-- || __builtin_expect (req.key_len, 1) > 1024)
-+ /* It should not be possible to crash the nscd with a silly
-+ request (i.e., a terribly large key). We limit the size to 1kb. */
-+ if (__builtin_expect (req.key_len, 1) < 0
-+ || __builtin_expect (req.key_len, 1) > 1024)
-+ {
-+ if (debug_level > 0)
-+ dbg_log (_("key length in request too long: %d"), req.key_len);
-+ close (fd);
-+ continue;
-+ }
-+ else
-+ {
-+ /* Get the key. */
-+ char keybuf[req.key_len];
-+
-+ if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
-+ req.key_len))
-+ != req.key_len, 0))
- {
- if (debug_level > 0)
-- dbg_log (_("key length in request too long: %d"), req.key_len);
-+ dbg_log (_("short read while reading request key: %s"),
-+ strerror_r (errno, buf, sizeof (buf)));
- close (fd);
- continue;
- }
-- else
-- {
-- /* Get the key. */
-- char keybuf[req.key_len];
-
-- if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
-- req.key_len))
-- != req.key_len, 0))
-- {
-- if (debug_level > 0)
-- dbg_log (_("short read while reading request key: %s"),
-- strerror_r (errno, buf, sizeof (buf)));
-- close (fd);
-- continue;
-- }
-+ if (__builtin_expect (debug_level, 0) > 0)
-+ {
-+#ifdef SO_PEERCRED
-+ if (pid != 0)
-+ dbg_log (_("\
-+handle_request: request received (Version = %d) from PID %ld"),
-+ req.version, (long int) pid);
-+ else
-+#endif
-+ dbg_log (_("\
-+handle_request: request received (Version = %d)"), req.version);
-+ }
-
-- /* Phew, we got all the data, now process it. */
-- handle_request (fd, &req, keybuf, uid);
-+ /* Phew, we got all the data, now process it. */
-+ handle_request (fd, &req, keybuf, uid);
-
-- /* We are done. */
-- close (fd);
-- }
-+ /* We are done. */
-+ close (fd);
- }
-
-- if (run_prune)
-+ /* Just determine whether any data is present. We do this to
-+ measure whether clients are queued up. */
-+ try_get:
-+ nr = poll (&conn, 1, 0);
-+ if (nr != 0)
- {
-- now = time (NULL);
-- timeout = now < next_prune ? 1000 * (next_prune - now) : 0;
-+ if (nready == 0)
-+ ++client_queued;
-+
-+ atomic_increment (&nready);
-+
-+ goto got_data;
- }
- }
- }
---- glibc-2.3.2/nscd/grpcache.c 2003-01-15 05:27:22.000000000 -0500
-+++ glibc-2.3.2/nscd/grpcache.c 2003-04-28 08:20:36.000000000 -0400
-@@ -152,6 +152,7 @@
- /* There is no reason to go on. */
- error (EXIT_FAILURE, errno, _("while allocating cache entry"));
-
-+ data->resp.version = NSCD_VERSION;
- data->resp.found = 1;
- data->resp.gr_name_len = gr_name_len;
- data->resp.gr_passwd_len = gr_passwd_len;
---- glibc-2.3.2/nscd/hstcache.c 2003-01-15 05:29:40.000000000 -0500
-+++ glibc-2.3.2/nscd/hstcache.c 2003-04-28 08:20:36.000000000 -0400
-@@ -167,6 +167,7 @@
- /* There is no reason to go on. */
- error (EXIT_FAILURE, errno, _("while allocating cache entry"));
-
-+ data->resp.version = NSCD_VERSION;
- data->resp.found = 1;
- data->resp.h_name_len = h_name_len;
- data->resp.h_aliases_cnt = h_aliases_cnt;
---- glibc-2.3.2/nscd/nscd-client.h 2001-07-07 15:21:07.000000000 -0400
-+++ glibc-2.3.2/nscd/nscd-client.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -110,4 +110,7 @@
- } hst_response_header;
-
-
-+/* Open socket connection to nscd server. */
-+extern int __nscd_open_socket (void) attribute_hidden;
-+
- #endif /* nscd.h */
---- glibc-2.3.2/nscd/nscd.c 2003-01-15 14:32:47.000000000 -0500
-+++ glibc-2.3.2/nscd/nscd.c 2003-05-12 12:13:06.000000000 -0400
-@@ -30,6 +30,7 @@
- #include <paths.h>
- #include <pthread.h>
- #include <signal.h>
-+#include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -41,6 +42,7 @@
-
- #include "dbg_log.h"
- #include "nscd.h"
-+#include "../nss/nsswitch.h"
- #include <device-nrs.h>
-
- /* Get libc version number. */
-@@ -71,6 +73,8 @@
- int secure_in_use;
- static const char *conffile = _PATH_NSCDCONF;
-
-+time_t start_time;
-+
- static int check_pid (const char *file);
- static int write_pid (const char *file);
-
-@@ -106,6 +110,9 @@
- options, parse_opt, NULL, doc,
- };
-
-+/* True if only statistics are requested. */
-+static bool get_stats;
-+
- int
- main (int argc, char **argv)
- {
-@@ -126,10 +133,27 @@
- exit (EXIT_FAILURE);
- }
-
-+ /* Read the configuration file. */
-+ if (nscd_parse_file (conffile, dbs) != 0)
-+ {
-+ /* We couldn't read the configuration file. We don't start the
-+ server. */
-+ dbg_log (_("cannot read configuration file; this is fatal"));
-+ exit (1);
-+ }
-+
-+ /* Do we only get statistics? */
-+ if (get_stats)
-+ /* Does not return. */
-+ receive_print_stats ();
-+
- /* Check if we are already running. */
- if (check_pid (_PATH_NSCDPID))
- error (EXIT_FAILURE, 0, _("already running"));
-
-+ /* Remember when we started. */
-+ start_time = time (NULL);
-+
- /* Behave like a daemon. */
- if (go_background)
- {
-@@ -175,7 +199,7 @@
- while ((dirent = readdir64 (d)) != NULL)
- {
- char *endp;
-- unsigned long int fdn = strtoul (dirent->d_name, &endp, 10);
-+ long int fdn = strtol (dirent->d_name, &endp, 10);
-
- if (*endp == '\0' && fdn != dfdn && fdn >= min_close_fd)
- close ((int) fdn);
-@@ -213,8 +237,11 @@
- /* Cleanup files created by a previous `bind'. */
- unlink (_PATH_NSCDSOCKET);
-
-+ /* Make sure we do not get recursive calls. */
-+ __nss_disable_nscd ();
-+
- /* Init databases. */
-- nscd_init (conffile);
-+ nscd_init ();
-
- /* Handle incoming requests */
- start_threads ();
-@@ -259,10 +286,8 @@
- }
-
- case 'g':
-- if (getuid () != 0)
-- error (EXIT_FAILURE, 0, _("Only root is allowed to use this option!"));
-- receive_print_stats ();
-- /* Does not return. */
-+ get_stats = true;
-+ break;
-
- case 'i':
- if (getuid () != 0)
---- glibc-2.3.2/nscd/nscd.conf 2000-04-30 00:25:38.000000000 -0400
-+++ glibc-2.3.2/nscd/nscd.conf 2003-05-12 12:13:06.000000000 -0400
-@@ -10,6 +10,7 @@
- # threads <#threads to use>
- # server-user <user to run server as instead of root>
- # server-user is ignored if nscd is started with -S parameters
-+# stat-user <user who is allowed to request statistics>
- #
- # enable-cache <service> <yes|no>
- # positive-time-to-live <service> <time in seconds>
-@@ -24,6 +25,7 @@
- # logfile /var/log/nscd.log
- # threads 6
- # server-user nobody
-+# stat-user somebody
- debug-level 0
-
- enable-cache passwd yes
---- glibc-2.3.2/nscd/nscd.h 2001-07-07 15:21:07.000000000 -0400
-+++ glibc-2.3.2/nscd/nscd.h 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -77,11 +77,19 @@
- unsigned long int posmiss;
- unsigned long int negmiss;
-
-+ unsigned long int nentries;
-+ unsigned long int maxnentries;
-+ unsigned long int maxnsearched;
-+
-+ unsigned long int rdlockdelayed;
-+ unsigned long int wrlockdelayed;
-+
- struct hashentry **array;
- };
-
-
- /* Global variables. */
-+extern struct database dbs[lastdb];
- extern const char *dbnames[lastdb];
- extern const char *serv2str[LASTREQ];
-
-@@ -92,13 +100,23 @@
- /* Number of threads to run. */
- extern int nthreads;
-
--/* Tables for which we cache data with uid */
-+/* Tables for which we cache data with uid. */
- extern int secure[lastdb];
--extern int secure_in_use; /* Is one of the above 1 ? */
-+extern int secure_in_use; /* Is one of the above 1? */
-
--/* User name to run server processes as */
-+/* User name to run server processes as. */
- extern const char *server_user;
-
-+/* Name and UID of user who is allowed to request statistics. */
-+extern const char *stat_user;
-+extern uid_t stat_uid;
-+
-+/* Time the server was started. */
-+extern time_t start_time;
-+
-+/* Number of times clients had to wait. */
-+extern unsigned long int client_queued;
-+
- /* Prototypes for global functions. */
-
- /* nscd.c */
-@@ -106,7 +124,7 @@
- extern int nscd_open_socket (void);
-
- /* connections.c */
--extern void nscd_init (const char *conffile);
-+extern void nscd_init (void);
- extern void close_sockets (void);
- extern void start_threads (void) __attribute__ ((__noreturn__));
-
-@@ -118,7 +136,7 @@
- extern int receive_print_stats (void) __attribute__ ((__noreturn__));
-
- /* cache.c */
--extern struct hashentry *cache_search (int type, void *key, size_t len,
-+extern struct hashentry *cache_search (request_type, void *key, size_t len,
- struct database *table, uid_t owner);
- extern void cache_add (int type, void *key, size_t len,
- const void *packet, size_t iovtotal, void *data,
---- glibc-2.3.2/nscd/nscd_conf.c 2001-07-07 15:21:07.000000000 -0400
-+++ glibc-2.3.2/nscd/nscd_conf.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -19,6 +19,7 @@
-
- #include <ctype.h>
- #include <malloc.h>
-+#include <pwd.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -29,6 +30,10 @@
- #include "dbg_log.h"
- #include "nscd.h"
-
-+/* Wrapper functions with error checking for standard functions. */
-+extern char *xstrdup (const char *s);
-+
-+
- /* Names of the databases. */
- const char *dbnames[lastdb] =
- {
-@@ -181,7 +186,20 @@
- if (!arg1)
- dbg_log (_("Must specify user name for server-user option"));
- else
-- server_user = strdup (arg1);
-+ server_user = xstrdup (arg1);
-+ }
-+ else if (strcmp (entry, "stat-user") == 0)
-+ {
-+ if (!arg1)
-+ dbg_log (_("Must specify user name for stat-user option"));
-+ else
-+ {
-+ stat_user = xstrdup (arg1);
-+
-+ struct passwd *pw = getpwnam (stat_user);
-+ if (pw != NULL)
-+ stat_uid = pw->pw_uid;
-+ }
- }
- else
- dbg_log (_("Unknown option: %s %s %s"), entry, arg1, arg2);
---- glibc-2.3.2/nscd/nscd_getgr_r.c 2003-01-15 05:42:36.000000000 -0500
-+++ glibc-2.3.2/nscd/nscd_getgr_r.c 2003-04-28 08:20:36.000000000 -0400
-@@ -60,44 +60,17 @@
- }
-
-
--/* Create a socket connected to a name. */
--static int
--open_socket (void)
--{
-- struct sockaddr_un addr;
-- int sock;
-- int saved_errno = errno;
--
-- sock = __socket (PF_UNIX, SOCK_STREAM, 0);
-- if (sock < 0)
-- {
-- __set_errno (saved_errno);
-- return -1;
-- }
--
-- addr.sun_family = AF_UNIX;
-- strcpy (addr.sun_path, _PATH_NSCDSOCKET);
-- if (__connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
-- {
-- __close (sock);
-- __set_errno (saved_errno);
-- return -1;
-- }
--
-- return sock;
--}
--
--
- static int
- internal_function
- nscd_getgr_r (const char *key, size_t keylen, request_type type,
- struct group *resultbuf, char *buffer, size_t buflen)
- {
-- int sock = open_socket ();
-+ int sock = __nscd_open_socket ();
- request_header req;
- gr_response_header gr_resp;
- ssize_t nbytes;
- struct iovec vec[2];
-+ int result = -1;
-
- if (sock == -1)
- {
-@@ -114,27 +87,20 @@
- vec[1].iov_base = (void *) key;
- vec[1].iov_len = keylen;
-
-- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-- if (nbytes != sizeof (request_header) + keylen)
-- {
-- __close (sock);
-- return -1;
-- }
-+ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-+ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
-+ goto out;
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, &gr_resp,
- sizeof (gr_response_header)));
-- if (nbytes != sizeof (gr_response_header))
-- {
-- __close (sock);
-- return -1;
-- }
-+ if (nbytes != (ssize_t) sizeof (gr_response_header))
-+ goto out;
-
- if (gr_resp.found == -1)
- {
- /* The daemon does not cache this database. */
-- __close (sock);
- __nss_not_use_nscd_group = 1;
-- return -1;
-+ goto out;
- }
-
- if (gr_resp.found == 1)
-@@ -143,7 +109,7 @@
- char *p = buffer;
- size_t total_len;
- uintptr_t align;
-- size_t cnt;
-+ nscd_ssize_t cnt;
-
- /* Now allocate the buffer the array for the group members. We must
- align the pointer. */
-@@ -151,12 +117,12 @@
- & (__alignof__ (char *) - 1));
- total_len = align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *)
- + gr_resp.gr_name_len + gr_resp.gr_passwd_len;
-- if (buflen < total_len)
-+ if (__builtin_expect (buflen < total_len, 0))
- {
- no_room:
- __set_errno (ERANGE);
-- __close (sock);
-- return ERANGE;
-+ result = ERANGE;
-+ goto out;
- }
- buflen -= total_len;
-
-@@ -184,11 +150,9 @@
- total_len += gr_resp.gr_name_len + gr_resp.gr_passwd_len;
-
- /* Get this data. */
-- if ((size_t) TEMP_FAILURE_RETRY (__readv (sock, vec, 2)) != total_len)
-- {
-- __close (sock);
-- return -1;
-- }
-+ size_t n = TEMP_FAILURE_RETRY (__readv (sock, vec, 2));
-+ if (__builtin_expect (n != total_len, 0))
-+ goto out;
-
- /* Clear the terminating entry. */
- resultbuf->gr_mem[gr_resp.gr_mem_cnt] = NULL;
-@@ -202,26 +166,28 @@
- p += len[cnt];
- }
-
-- if (total_len > buflen)
-+ if (__builtin_expect (total_len > buflen, 0))
- goto no_room;
-
-- if ((size_t) TEMP_FAILURE_RETRY (__read (sock, resultbuf->gr_mem[0],
-- total_len)) != total_len)
-+ result = 0;
-+ n = TEMP_FAILURE_RETRY (__read (sock, resultbuf->gr_mem[0],
-+ total_len));
-+ if (__builtin_expect (n != total_len, 0))
- {
-- __close (sock);
- /* The `errno' to some value != ERANGE. */
- __set_errno (ENOENT);
-- return ENOENT;
-+ result = ENOENT;
- }
--
-- __close (sock);
-- return 0;
- }
- else
- {
-- __close (sock);
- /* The `errno' to some value != ERANGE. */
- __set_errno (ENOENT);
-- return ENOENT;
-+ result = ENOENT;
- }
-+
-+ out:
-+ __close (sock);
-+
-+ return result;
- }
---- glibc-2.3.2/nscd/nscd_gethst_r.c 2003-01-15 05:40:44.000000000 -0500
-+++ glibc-2.3.2/nscd/nscd_gethst_r.c 2003-04-28 08:20:36.000000000 -0400
-@@ -86,8 +86,8 @@
-
-
- /* Create a socket connected to a name. */
--static int
--open_socket (void)
-+int
-+__nscd_open_socket (void)
- {
- struct sockaddr_un addr;
- int sock;
-@@ -119,11 +119,12 @@
- struct hostent *resultbuf, char *buffer, size_t buflen,
- int *h_errnop)
- {
-- int sock = open_socket ();
-+ int sock = __nscd_open_socket ();
- hst_response_header hst_resp;
- request_header req;
- ssize_t nbytes;
- struct iovec vec[4];
-+ int result = -1;
-
- if (sock == -1)
- {
-@@ -142,25 +143,18 @@
-
- nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
- if ((size_t) nbytes != sizeof (request_header) + req.key_len)
-- {
-- __close (sock);
-- return -1;
-- }
-+ goto out;
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, &hst_resp,
- sizeof (hst_response_header)));
-- if (nbytes != sizeof (hst_response_header))
-- {
-- __close (sock);
-- return -1;
-- }
-+ if (__builtin_expect (nbytes != sizeof (hst_response_header), 0))
-+ goto out;
-
- if (hst_resp.found == -1)
- {
- /* The daemon does not cache this database. */
-- __close (sock);
- __nss_not_use_nscd_hosts = 1;
-- return -1;
-+ goto out;
- }
-
- if (hst_resp.found == 1)
-@@ -190,8 +184,8 @@
- {
- no_room:
- __set_errno (ERANGE);
-- __close (sock);
-- return ERANGE;
-+ result = ERANGE;
-+ goto out;
- }
- cp += align1;
-
-@@ -264,10 +258,7 @@
- resultbuf->h_addr_list[cnt] = NULL;
-
- if ((size_t) TEMP_FAILURE_RETRY (__readv (sock, vec, n)) != total_len)
-- {
-- __close (sock);
-- return -1;
-- }
-+ goto out;
-
- /* Now we also can read the aliases. */
- total_len = 0;
-@@ -285,23 +276,21 @@
-
- /* And finally read the aliases. */
- if ((size_t) TEMP_FAILURE_RETRY (__read (sock, resultbuf->h_aliases[0],
-- total_len)) != total_len)
-- {
-- __close (sock);
-- return -1;
-- }
--
-- __close (sock);
-- return 0;
-+ total_len)) == total_len)
-+ result = 0;
- }
- else
- {
- /* Store the error number. */
- *h_errnop = hst_resp.error;
-
-- __close (sock);
- /* The `errno' to some value != ERANGE. */
- __set_errno (ENOENT);
-- return ENOENT;
-+ result = ENOENT;
- }
-+
-+ out:
-+ __close (sock);
-+
-+ return result;
- }
---- glibc-2.3.2/nscd/nscd_getpw_r.c 2003-01-15 05:44:16.000000000 -0500
-+++ glibc-2.3.2/nscd/nscd_getpw_r.c 2003-04-28 08:20:36.000000000 -0400
-@@ -60,43 +60,18 @@
- return nscd_getpw_r (buf, n, GETPWBYUID, resultbuf, buffer, buflen);
- }
-
--/* Create a socket connected to a name. */
--static int
--open_socket (void)
--{
-- struct sockaddr_un addr;
-- int sock;
-- int saved_errno = errno;
--
-- sock = __socket (PF_UNIX, SOCK_STREAM, 0);
-- if (sock < 0)
-- {
-- __set_errno (saved_errno);
-- return -1;
-- }
--
-- addr.sun_family = AF_UNIX;
-- strcpy (addr.sun_path, _PATH_NSCDSOCKET);
-- if (__connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
-- {
-- __close (sock);
-- __set_errno (saved_errno);
-- return -1;
-- }
--
-- return sock;
--}
-
- static int
- internal_function
- nscd_getpw_r (const char *key, size_t keylen, request_type type,
- struct passwd *resultbuf, char *buffer, size_t buflen)
- {
-- int sock = open_socket ();
-+ int sock = __nscd_open_socket ();
- request_header req;
- pw_response_header pw_resp;
- ssize_t nbytes;
- struct iovec vec[2];
-+ int result = -1;
-
- if (sock == -1)
- {
-@@ -113,27 +88,20 @@
- vec[1].iov_base = (void *) key;
- vec[1].iov_len = keylen;
-
-- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-- if (nbytes != sizeof (request_header) + keylen)
-- {
-- __close (sock);
-- return -1;
-- }
-+ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-+ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
-+ goto out;
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, &pw_resp,
- sizeof (pw_response_header)));
-- if (nbytes != sizeof (pw_response_header))
-- {
-- __close (sock);
-- return -1;
-- }
-+ if (nbytes != (ssize_t) sizeof (pw_response_header))
-+ goto out;
-
-- if (pw_resp.found == -1)
-+ if (__builtin_expect (pw_resp.found == -1, 0))
- {
- /* The daemon does not cache this database. */
-- __close (sock);
- __nss_not_use_nscd_passwd = 1;
-- return -1;
-+ goto out;
- }
-
- if (pw_resp.found == 1)
-@@ -143,11 +111,11 @@
- + pw_resp.pw_gecos_len + pw_resp.pw_dir_len
- + pw_resp.pw_shell_len);
-
-- if (buflen < total)
-+ if (__builtin_expect (buflen < total, 0))
- {
- __set_errno (ERANGE);
-- __close (sock);
-- return ERANGE;
-+ result = ERANGE;
-+ goto out;
- }
-
- /* Set the information we already have. */
-@@ -171,15 +139,18 @@
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, buffer, total));
-
-- __close (sock);
--
-- return nbytes == total ? 0 : -1;
-+ if (nbytes == (ssize_t) total)
-+ result = 0;
- }
- else
- {
-- __close (sock);
- /* The `errno' to some value != ERANGE. */
- __set_errno (ENOENT);
-- return ENOENT;
-+ result = ENOENT;
- }
-+
-+ out:
-+ __close (sock);
-+
-+ return result;
- }
---- glibc-2.3.2/nscd/nscd_stat.c 2001-07-07 15:21:07.000000000 -0400
-+++ glibc-2.3.2/nscd/nscd_stat.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
-
-@@ -46,6 +46,13 @@
- unsigned long int neghit;
- unsigned long int posmiss;
- unsigned long int negmiss;
-+
-+ unsigned long int nentries;
-+ unsigned long int maxnentries;
-+ unsigned long int maxnsearched;
-+
-+ unsigned long int rdlockdelayed;
-+ unsigned long int wrlockdelayed;
- };
-
- /* Record for transmitting statistics. */
-@@ -53,6 +60,8 @@
- {
- char version[sizeof (compilation)];
- int debug_level;
-+ time_t runtime;
-+ unsigned long int client_queued;
- int ndbs;
- struct dbstat dbs[lastdb];
- };
-@@ -66,6 +75,8 @@
-
- memcpy (data.version, compilation, sizeof (compilation));
- data.debug_level = debug_level;
-+ data.runtime = time (NULL) - start_time;
-+ data.client_queued = client_queued;
- data.ndbs = lastdb;
-
- for (cnt = 0; cnt < lastdb; ++cnt)
-@@ -79,6 +90,11 @@
- data.dbs[cnt].neghit = dbs[cnt].neghit;
- data.dbs[cnt].posmiss = dbs[cnt].posmiss;
- data.dbs[cnt].negmiss = dbs[cnt].negmiss;
-+ data.dbs[cnt].nentries = dbs[cnt].nentries;
-+ data.dbs[cnt].maxnentries = dbs[cnt].maxnentries;
-+ data.dbs[cnt].maxnsearched = dbs[cnt].maxnsearched;
-+ data.dbs[cnt].rdlockdelayed = dbs[cnt].rdlockdelayed;
-+ data.dbs[cnt].wrlockdelayed = dbs[cnt].wrlockdelayed;
- }
-
- if (TEMP_FAILURE_RETRY (write (fd, &data, sizeof (data))) != sizeof (data))
-@@ -98,6 +114,24 @@
- ssize_t nbytes;
- int fd;
- int i;
-+ uid_t uid = getuid ();
-+
-+ /* Find out whether there is another user but root allowed to
-+ request statistics. */
-+ if (uid != 0)
-+ {
-+ /* User specified? */
-+ if(stat_user == NULL || stat_uid != uid)
-+ {
-+ if (stat_user != NULL)
-+ error (EXIT_FAILURE, 0,
-+ _("Only root or %s is allowed to use this option!"),
-+ stat_user);
-+ else
-+ error (EXIT_FAILURE, 0,
-+ _("Only root is allowed to use this option!"));
-+ }
-+ }
-
- /* Open a socket to the running nscd. */
- fd = nscd_open_socket ();
-@@ -120,7 +154,7 @@
- if (TEMP_FAILURE_RETRY (read (fd, &data, sizeof (data))) != sizeof (data)
- || (memcmp (data.version, compilation, sizeof (compilation)) != 0
- /* Yes, this is an assignment! */
-- && errno == EINVAL))
-+ && (errno = EINVAL)))
- {
- /* Not the right version. */
- int err = errno;
-@@ -131,6 +165,39 @@
- printf (_("nscd configuration:\n\n%15d server debug level\n"),
- data.debug_level);
-
-+ /* We know that we can simply subtract time_t values. */
-+ unsigned long int diff = data.runtime;
-+ unsigned int ndays = 0;
-+ unsigned int nhours = 0;
-+ unsigned int nmins = 0;
-+ if (diff > 24 * 60 * 60)
-+ {
-+ ndays = diff / (24 * 60 * 60);
-+ diff %= 24 * 60 * 60;
-+ }
-+ if (diff > 60 * 60)
-+ {
-+ nhours = diff / (60 * 60);
-+ diff %= 60 * 60;
-+ }
-+ if (diff > 60)
-+ {
-+ nmins = diff / 60;
-+ diff %= 60;
-+ }
-+ if (ndays != 0)
-+ printf (_("%3ud %2uh %2um %2lus server runtime\n"),
-+ ndays, nhours, nmins, diff);
-+ else if (nhours != 0)
-+ printf (_(" %2uh %2um %2lus server runtime\n"), nhours, nmins, diff);
-+ else if (nmins != 0)
-+ printf (_(" %2um %2lus server runtime\n"), nmins, diff);
-+ else
-+ printf (_(" %2lus server runtime\n"), diff);
-+
-+ printf (_("%15lu number of times clients had to wait\n"),
-+ data.client_queued);
-+
- for (i = 0; i < lastdb; ++i)
- {
- unsigned long int hit = data.dbs[i].poshit + data.dbs[i].neghit;
-@@ -153,14 +220,19 @@
-
- printf (_("\n%s cache:\n\n"
- "%15s cache is enabled\n"
-- "%15Zd suggested size\n"
-- "%15ld seconds time to live for positive entries\n"
-- "%15ld seconds time to live for negative entries\n"
-- "%15ld cache hits on positive entries\n"
-- "%15ld cache hits on negative entries\n"
-- "%15ld cache misses on positive entries\n"
-- "%15ld cache misses on negative entries\n"
-- "%15ld%% cache hit rate\n"
-+ "%15Zu suggested size\n"
-+ "%15lu seconds time to live for positive entries\n"
-+ "%15lu seconds time to live for negative entries\n"
-+ "%15lu cache hits on positive entries\n"
-+ "%15lu cache hits on negative entries\n"
-+ "%15lu cache misses on positive entries\n"
-+ "%15lu cache misses on negative entries\n"
-+ "%15lu%% cache hit rate\n"
-+ "%15lu current number of cached values\n"
-+ "%15lu maximum number of cached values\n"
-+ "%15lu maximum chain length searched\n"
-+ "%15lu number of delays on rdlock\n"
-+ "%15lu number of delays on wrlock\n"
- "%15s check /etc/%s for changes\n"),
- dbnames[i], enabled,
- data.dbs[i].module,
-@@ -168,7 +240,10 @@
- data.dbs[i].poshit, data.dbs[i].neghit,
- data.dbs[i].posmiss, data.dbs[i].negmiss,
- (100 * hit) / all,
-- check_file, dbnames[i]);
-+ data.dbs[i].nentries, data.dbs[i].maxnentries,
-+ data.dbs[i].maxnsearched,
-+ data.dbs[i].rdlockdelayed,
-+ data.dbs[i].wrlockdelayed, check_file, dbnames[i]);
- }
-
- close (fd);
---- glibc-2.3.2/nscd/pwdcache.c 2003-01-15 05:28:00.000000000 -0500
-+++ glibc-2.3.2/nscd/pwdcache.c 2003-04-28 08:20:36.000000000 -0400
-@@ -145,6 +145,7 @@
- /* There is no reason to go on. */
- error (EXIT_FAILURE, errno, _("while allocating cache entry"));
-
-+ data->resp.version = NSCD_VERSION;
- data->resp.found = 1;
- data->resp.pw_name_len = pw_name_len;
- data->resp.pw_passwd_len = pw_passwd_len;
---- glibc-2.3.2/nss/Versions 2002-02-01 16:16:41.000000000 -0500
-+++ glibc-2.3.2/nss/Versions 2003-08-21 08:37:07.000000000 -0400
-@@ -9,6 +9,7 @@
- }
- GLIBC_PRIVATE {
- _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
-+ __nss_disable_nscd; __nss_lookup_function;
- }
- }
-
---- glibc-2.3.2/nss/db-Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/db-Makefile 2002-11-16 08:56:02.000000000 -0500
-@@ -0,0 +1,139 @@
-+# Makefile to (re-)generate db versions of system database files.
-+# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-+#
-+
-+# 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.
-+
-+DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
-+ /etc/rpc /etc/services /etc/shadow /etc/netgroup)
-+
-+VAR_DB = /var/db
-+
-+AWK = awk
-+MAKEDB = makedb --quiet
-+
-+all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
-+
-+
-+$(VAR_DB)/passwd.db: /etc/passwd
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$3; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/group.db: /etc/group
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$3; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/ethers.db: /etc/ethers
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/protocols.db: /etc/protocols
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print; \
-+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/rpc.db: /etc/rpc
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print; \
-+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/services.db: /etc/services
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS="[ \t/]+"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s/%s ", $$1, $$3; print; \
-+ printf ".%s/ ", $$1; print; \
-+ printf "=%s/%s ", $$2, $$3; print; \
-+ printf "=%s/ ", $$2; print; \
-+ for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s/%s ", $$i, $$3; print; \
-+ printf ".%s/ ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/shadow.db: /etc/shadow
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
-+ (umask 077 && $(MAKEDB) -o $@ -)
-+ @echo "done."
-+ @if chgrp shadow $@ 2>/dev/null; then \
-+ chmod g+r $@; \
-+ else \
-+ chown 0 $@; chgrp 0 $@; chmod 600 $@; \
-+ echo; \
-+ echo "Warning: The shadow password database $@"; \
-+ echo "has been set to be readable only by root. You may want"; \
-+ echo "to make it readable by the \`shadow' group depending"; \
-+ echo "on your configuration."; \
-+ echo; \
-+ fi
-+
-+$(VAR_DB)/netgroup.db: /etc/netgroup
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { end=sub(/\\/, " "); \
-+ gsub(/[ \t]+/, " "); \
-+ if(end == 1) printf "%s", $$0; else print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
---- glibc-2.3.2/nss/getXXbyYY.c 2002-11-01 21:15:52.000000000 -0500
-+++ glibc-2.3.2/nss/getXXbyYY.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2001,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
-@@ -95,7 +95,6 @@
- static size_t buffer_size;
- static LOOKUP_TYPE resbuf;
- LOOKUP_TYPE *result;
-- int save;
- #ifdef NEED_H_ERRNO
- int h_errno_tmp = 0;
- #endif
-@@ -106,7 +105,7 @@
- if (buffer == NULL)
- {
- buffer_size = BUFLEN;
-- buffer = malloc (buffer_size);
-+ buffer = (char *) malloc (buffer_size);
- }
-
- #ifdef HANDLE_DIGITS_DOTS
-@@ -132,14 +131,13 @@
- {
- char *new_buf;
- buffer_size += BUFLEN;
-- new_buf = realloc (buffer, buffer_size);
-+ new_buf = (char *) realloc (buffer, buffer_size);
- if (new_buf == NULL)
- {
- /* We are out of memory. Free the current buffer so that the
- process gets a chance for a normal termination. */
-- save = errno;
- free (buffer);
-- __set_errno (save);
-+ __set_errno (ENOMEM);
- }
- buffer = new_buf;
- }
-@@ -150,10 +148,8 @@
- #ifdef HANDLE_DIGITS_DOTS
- done:
- #endif
-- /* Release lock. Preserve error value. */
-- save = errno;
-+ /* Release lock. */
- __libc_lock_unlock (lock);
-- __set_errno (save);
-
- #ifdef NEED_H_ERRNO
- if (h_errno_tmp != 0)
-@@ -162,3 +158,5 @@
-
- return result;
- }
-+
-+static_link_warning (FUNCTION_NAME)
---- glibc-2.3.2/nss/getXXbyYY_r.c 2003-02-17 22:59:12.000000000 -0500
-+++ glibc-2.3.2/nss/getXXbyYY_r.c 2003-09-19 22:37:05.000000000 -0400
-@@ -163,7 +163,7 @@
- #endif
-
- #ifdef USE_NSCD
-- if (NOT_USENSCD_NAME && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY)
-+ if (NOT_USENSCD_NAME > 0 && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY)
- NOT_USENSCD_NAME = 0;
-
- if (!NOT_USENSCD_NAME)
-@@ -247,12 +247,23 @@
- #ifdef POSTPROCESS
- POSTPROCESS;
- #endif
-- return (status != NSS_STATUS_TRYAGAIN ? 0
-+
-+ int res;
-+ if (status == NSS_STATUS_SUCCESS)
-+ res = 0;
-+ /* Don't pass back ERANGE if this is not for a too-small buffer. */
-+ else if (errno == ERANGE && status != NSS_STATUS_TRYAGAIN)
-+ res = EINVAL;
- #ifdef NEED_H_ERRNO
-- /* These functions only set errno if h_errno is NETDB_INTERNAL. */
-- : *h_errnop != NETDB_INTERNAL ? EAGAIN
-+ /* These functions only set errno if h_errno is NETDB_INTERNAL. */
-+ else if (status == NSS_STATUS_TRYAGAIN && *h_errnop != NETDB_INTERNAL)
-+ res = EAGAIN;
- #endif
-- : errno);
-+ else
-+ return errno;
-+
-+ __set_errno (res);
-+ return res;
- }
-
-
-@@ -288,3 +299,5 @@
- versioned_symbol (libc, real, name, version)
- do_default_symbol_version (NEW (REENTRANT_NAME),
- REENTRANT_NAME, GLIBC_2_1_2);
-+
-+static_link_warning (REENTRANT_NAME)
---- glibc-2.3.2/nss/getXXent.c 2002-11-11 20:55:18.000000000 -0500
-+++ glibc-2.3.2/nss/getXXent.c 2003-08-21 08:37:07.000000000 -0400
-@@ -91,3 +91,5 @@
- __set_errno (save);
- return result;
- }
-+
-+static_link_warning (GETFUNC_NAME)
---- glibc-2.3.2/nss/getXXent_r.c 2002-11-04 05:15:12.000000000 -0500
-+++ glibc-2.3.2/nss/getXXent_r.c 2003-08-21 08:37:07.000000000 -0400
-@@ -201,3 +201,7 @@
- versioned_symbol (libc, real, name, version)
- do_default_symbol_version (NEW (REENTRANT_GETNAME),
- REENTRANT_GETNAME, GLIBC_2_1_2);
-+
-+static_link_warning (SETFUNC_NAME)
-+static_link_warning (ENDFUNC_NAME)
-+static_link_warning (REENTRANT_GETNAME)
---- glibc-2.3.2/nss/getent.c 2003-02-16 14:38:13.000000000 -0500
-+++ glibc-2.3.2/nss/getent.c 2003-08-21 08:37:07.000000000 -0400
-@@ -229,7 +229,7 @@
- }
-
- /* This is for hosts */
--static inline void
-+static void
- print_hosts (struct hostent *host)
- {
- unsigned int cnt;
-@@ -296,6 +296,73 @@
- return result;
- }
-
-+/* This is for hosts, but using getaddrinfo */
-+static int
-+ahosts_keys (int number, char *key[])
-+{
-+ int result = 0;
-+ int i;
-+ struct hostent *host;
-+
-+ if (number == 0)
-+ {
-+ sethostent (0);
-+ while ((host = gethostent ()) != NULL)
-+ print_hosts (host);
-+ endhostent ();
-+ return result;
-+ }
-+
-+ struct addrinfo hint;
-+ memset (&hint, '\0', sizeof (hint));
-+ hint.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG | AI_CANONNAME;
-+ hint.ai_family = AF_UNSPEC;
-+
-+ for (i = 0; i < number; ++i)
-+ {
-+ struct addrinfo *res;
-+
-+ if (getaddrinfo (key[i], NULL, &hint, &res) != 0)
-+ result = 2;
-+ else
-+ {
-+ struct addrinfo *runp = res;
-+
-+ while (runp != NULL)
-+ {
-+ char sockbuf[20];
-+ const char *sockstr;
-+ if (runp->ai_socktype == SOCK_STREAM)
-+ sockstr = "STREAM";
-+ else if (runp->ai_socktype == SOCK_DGRAM)
-+ sockstr = "DGRAM";
-+ else if (runp->ai_socktype == SOCK_RAW)
-+ sockstr = "RAW";
-+ else
-+ {
-+ snprintf (sockbuf, sizeof (sockbuf), "%d",
-+ runp->ai_socktype);
-+ sockstr = sockbuf;
-+ }
-+
-+ char buf[INET6_ADDRSTRLEN];
-+ printf ("%-15s %-6s %s\n",
-+ inet_ntop (runp->ai_family,
-+ &((struct sockaddr_in *) runp->ai_addr)->sin_addr,
-+ buf, sizeof (buf)),
-+ sockstr,
-+ runp->ai_canonname);
-+
-+ runp = runp->ai_next;
-+ }
-+
-+ freeaddrinfo (res);
-+ }
-+ }
-+
-+ return result;
-+}
-+
- /* This is for netgroup */
- static int
- netgroup_keys (int number, char *key[])
-@@ -329,7 +396,7 @@
- }
-
- /* This is for networks */
--static inline void
-+static void
- print_networks (struct netent *net)
- {
- unsigned int i;
-@@ -624,7 +691,7 @@
- }
-
- /* This is for shadow */
--static inline void
-+static void
- print_shadow (struct spwd *sp)
- {
- printf ("%s:%s:",
-@@ -688,6 +755,7 @@
- } databases[] =
- {
- #define D(name) { #name, name ## _keys },
-+D(ahosts)
- D(aliases)
- D(ethers)
- D(group)
-@@ -723,7 +791,7 @@
- }
-
- /* build doc */
--static inline void
-+static void
- build_doc (void)
- {
- int i, j, len;
---- glibc-2.3.2/nss/makedb.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/makedb.c 2002-11-16 08:56:02.000000000 -0500
-@@ -0,0 +1,389 @@
-+/* Create simple DB database from textual input.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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.
-+
-+ 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 <argp.h>
-+#include <ctype.h>
-+#include <dlfcn.h>
-+#include <errno.h>
-+#include <error.h>
-+#include <fcntl.h>
-+#include <libintl.h>
-+#include <locale.h>
-+#include <stdio.h>
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/stat.h>
-+#include "nss_db/dummy-db.h"
-+
-+/* Get libc version number. */
-+#include "../version.h"
-+
-+#define PACKAGE _libc_intl_domainname
-+
-+/* If non-zero convert key to lower case. */
-+static int to_lowercase;
-+
-+/* If non-zero print content of input file, one entry per line. */
-+static int do_undo;
-+
-+/* If non-zero do not print informational messages. */
-+static int be_quiet;
-+
-+/* Name of output file. */
-+static const char *output_name;
-+
-+/* 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;
-+
-+/* Definitions of arguments for argp functions. */
-+static const struct argp_option options[] =
-+{
-+ { "fold-case", 'f', NULL, 0, N_("Convert key to lower case") },
-+ { "output", 'o', N_("NAME"), 0, N_("Write output to file NAME") },
-+ { "quiet", 'q', NULL, 0,
-+ N_("Do not print messages while building database") },
-+ { "undo", 'u', NULL, 0,
-+ N_("Print content of database file, one entry a line") },
-+ { NULL, 0, NULL, 0, NULL }
-+};
-+
-+/* Short description of program. */
-+static const char doc[] = N_("Create simple DB database from textual input.");
-+
-+/* Strings for arguments in help texts. */
-+static const char args_doc[] = N_("\
-+INPUT-FILE OUTPUT-FILE\n-o OUTPUT-FILE INPUT-FILE\n-u INPUT-FILE");
-+
-+/* Prototype for option handler. */
-+static error_t parse_opt (int key, char *arg, struct argp_state *state);
-+
-+/* Function to print some extra text in the help message. */
-+static char *more_help (int key, const char *text, void *input);
-+
-+/* Data structure to communicate with argp functions. */
-+static struct argp argp =
-+{
-+ options, parse_opt, args_doc, doc, NULL, more_help
-+};
-+
-+
-+/* Prototypes for local functions. */
-+static int process_input (FILE *input, const char *inname, NSS_DB *output,
-+ int to_lowercase, int be_quiet);
-+static int print_database (NSS_DB *db);
-+
-+
-+int
-+main (int argc, char *argv[])
-+{
-+ const char *input_name;
-+ FILE *input_file;
-+ NSS_DB *db_file;
-+ int status;
-+ int remaining;
-+ int mode = 0666;
-+
-+ /* Set locale via LC_ALL. */
-+ setlocale (LC_ALL, "");
-+
-+ /* Set the text message domain. */
-+ textdomain (_libc_intl_domainname);
-+
-+ /* Initialize local variables. */
-+ input_name = NULL;
-+
-+ /* Parse and process arguments. */
-+ argp_parse (&argp, argc, argv, 0, &remaining, NULL);
-+
-+ /* Determine file names. */
-+ if (do_undo || output_name != NULL)
-+ {
-+ if (remaining + 1 != argc)
-+ {
-+ wrong_arguments:
-+ error (0, 0, gettext ("wrong number of arguments"));
-+ argp_help (&argp, stdout, ARGP_HELP_SEE,
-+ program_invocation_short_name);
-+ exit (1);
-+ }
-+ input_name = argv[remaining];
-+ }
-+ else
-+ {
-+ if (remaining + 2 != argc)
-+ goto wrong_arguments;
-+
-+ input_name = argv[remaining++];
-+ output_name = argv[remaining];
-+ }
-+
-+ /* First load the shared object to initialize version dependend
-+ variables. */
-+ if (load_db () != NSS_STATUS_SUCCESS)
-+ error (EXIT_FAILURE, 0, gettext ("No usable database library found."));
-+
-+ /* Special handling if we are asked to print the database. */
-+ if (do_undo)
-+ {
-+ dbopen (input_name, db_rdonly, 0666, &db_file);
-+ if (db_file == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("cannot open database file `%s': %s"),
-+ input_name,
-+ (errno == EINVAL ? gettext ("incorrectly formatted file")
-+ : strerror (errno)));
-+
-+ status = print_database (db_file);
-+
-+ db_file->close (db_file->db, 0);
-+
-+ return status;
-+ }
-+
-+ /* Open input file. */
-+ if (strcmp (input_name, "-") == 0 || strcmp (input_name, "/dev/stdin") == 0)
-+ input_file = stdin;
-+ else
-+ {
-+ struct stat st;
-+
-+ input_file = fopen (input_name, "r");
-+ if (input_file == NULL)
-+ error (EXIT_FAILURE, errno, gettext ("cannot open input file `%s'"),
-+ input_name);
-+
-+ /* Get the access rights from the source file. The output file should
-+ have the same. */
-+ if (fstat (fileno (input_file), &st) >= 0)
-+ mode = st.st_mode & ACCESSPERMS;
-+ }
-+
-+ /* Open output file. This must not be standard output so we don't
-+ handle "-" and "/dev/stdout" special. */
-+ dbopen (output_name, DB_CREATE | db_truncate, mode, &db_file);
-+ if (db_file == NULL)
-+ error (EXIT_FAILURE, errno, gettext ("cannot open output file `%s'"),
-+ output_name);
-+
-+ /* Start the real work. */
-+ status = process_input (input_file, input_name, db_file, to_lowercase,
-+ be_quiet);
-+
-+ /* Close files. */
-+ if (input_file != stdin)
-+ fclose (input_file);
-+ db_file->close (db_file->db, 0);
-+
-+ return status;
-+}
-+
-+
-+/* Handle program arguments. */
-+static error_t
-+parse_opt (int key, char *arg, struct argp_state *state)
-+{
-+ switch (key)
-+ {
-+ case 'f':
-+ to_lowercase = 1;
-+ break;
-+ case 'o':
-+ output_name = arg;
-+ break;
-+ case 'q':
-+ be_quiet = 1;
-+ break;
-+ case 'u':
-+ do_undo = 1;
-+ break;
-+ default:
-+ return ARGP_ERR_UNKNOWN;
-+ }
-+ return 0;
-+}
-+
-+
-+static char *
-+more_help (int key, const char *text, void *input)
-+{
-+ switch (key)
-+ {
-+ case ARGP_KEY_HELP_EXTRA:
-+ /* We print some extra information. */
-+ return strdup (gettext ("\
-+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
-+ default:
-+ break;
-+ }
-+ return (char *) text;
-+}
-+
-+/* Print the version information. */
-+static void
-+print_version (FILE *stream, struct argp_state *state)
-+{
-+ fprintf (stream, "makedb (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\
-+"), "2000");
-+ fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
-+}
-+
-+
-+static int
-+process_input (input, inname, output, to_lowercase, be_quiet)
-+ FILE *input;
-+ const char *inname;
-+ NSS_DB *output;
-+ int to_lowercase;
-+ int be_quiet;
-+{
-+ char *line;
-+ size_t linelen;
-+ int status;
-+ size_t linenr;
-+
-+ line = NULL;
-+ linelen = 0;
-+ status = EXIT_SUCCESS;
-+ linenr = 0;
-+
-+ while (!feof (input))
-+ {
-+ DBT key;
-+ DBT val;
-+ char *cp;
-+ int n;
-+
-+ n = getline (&line, &linelen, input);
-+ if (n < 0)
-+ /* This means end of file or some bug. */
-+ break;
-+ if (n == 0)
-+ /* Short read. Probably interrupted system call. */
-+ continue;
-+
-+ ++linenr;
-+
-+ if (line[n - 1] == '\n')
-+ /* Remove trailing newline. */
-+ line[--n] = '\0';
-+
-+ cp = line;
-+ while (isspace (*cp))
-+ ++cp;
-+
-+ if (*cp == '#')
-+ /* First non-space character in line '#': it's a comment. */
-+ continue;
-+
-+ key.data = cp;
-+ while (*cp != '\0' && !isspace (*cp))
-+ {
-+ if (to_lowercase)
-+ *cp = tolower (*cp);
-+ ++cp;
-+ }
-+
-+ if (key.data == cp)
-+ /* It's an empty line. */
-+ continue;
-+
-+ key.size = cp - (char *) key.data;
-+ key.flags = 0;
-+
-+ while (isspace (*cp))
-+ ++cp;
-+
-+ val.data = cp;
-+ val.size = (&line[n] - cp) + 1;
-+ val.flags = 0;
-+
-+ /* Store the value. */
-+ status = output->put (output->db, NULL, &key, &val, db_nooverwrite);
-+ if (status != 0)
-+ {
-+ if (status == db_keyexist)
-+ {
-+ if (!be_quiet)
-+ error_at_line (0, 0, inname, linenr,
-+ gettext ("duplicate key"));
-+ /* This is no real error. Just give a warning. */
-+ status = 0;
-+ continue;
-+ }
-+ else
-+ error (0, status, gettext ("while writing database file"));
-+
-+ status = EXIT_FAILURE;
-+
-+ clearerr (input);
-+ break;
-+ }
-+ }
-+
-+ if (ferror (input))
-+ {
-+ error (0, 0, gettext ("problems while reading `%s'"), inname);
-+ status = EXIT_FAILURE;
-+ }
-+
-+ return status;
-+}
-+
-+
-+static int
-+print_database (db)
-+ NSS_DB *db;
-+{
-+ DBT key;
-+ DBT val;
-+ NSS_DBC *cursor;
-+ int status;
-+
-+ status = db->cursor (db->db, NULL, &cursor);
-+ if (status != 0)
-+ {
-+ error (0, status, gettext ("while reading database"));
-+ return EXIT_FAILURE;
-+ }
-+
-+ key.flags = 0;
-+ val.flags = 0;
-+ status = cursor->c_get (cursor->cursor, &key, &val, db_first);
-+ while (status == 0)
-+ {
-+ printf ("%.*s %s\n", (int) key.size, (char *) key.data,
-+ (char *) val.data);
-+
-+ status = cursor->c_get (cursor->cursor, &key, &val, db_next);
-+ }
-+
-+ if (status != db_notfound)
-+ {
-+ error (0, status, gettext ("while reading database"));
-+ return EXIT_FAILURE;
-+ }
-+
-+ return EXIT_SUCCESS;
-+}
---- glibc-2.3.2/nss/nss_db/db-XXX.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/db-XXX.c 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,261 @@
-+/* Common code for DB-based databases in nss_db module.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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 <dlfcn.h>
-+#include <fcntl.h>
-+#include <bits/libc-lock.h>
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+/* These symbols are defined by the including source file:
-+
-+ ENTNAME -- database name of the structure and functions (hostent, pwent).
-+ STRUCTURE -- struct name, define only if not ENTNAME (passwd, group).
-+ DATABASE -- database file name, ("hosts", "passwd")
-+
-+ NEED_H_ERRNO - defined iff an arg `int *herrnop' is used.
-+*/
-+
-+#define ENTNAME_r CONCAT(ENTNAME,_r)
-+
-+#include <paths.h>
-+#define DBFILE _PATH_VARDB DATABASE ".db"
-+
-+#ifdef NEED_H_ERRNO
-+#define H_ERRNO_PROTO , int *herrnop
-+#define H_ERRNO_ARG , herrnop
-+#define H_ERRNO_SET(val) (*herrnop = (val))
-+#else
-+#define H_ERRNO_PROTO
-+#define H_ERRNO_ARG
-+#define H_ERRNO_SET(val) ((void) 0)
-+#endif
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+
-+static NSS_DB *db;
-+static int keep_db;
-+static int entidx;
-+
-+
-+/* Open the database. */
-+enum nss_status
-+CONCAT(_nss_db_set,ENTNAME) (int stayopen)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (DBFILE, &db);
-+
-+ /* Remember STAYOPEN flag. */
-+ if (db != NULL)
-+ keep_db |= stayopen;
-+ /* Reset the sequential index. */
-+ entidx = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+/* Close it again. */
-+enum nss_status
-+CONCAT(_nss_db_end,ENTNAME) (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ /* Reset STAYOPEN flag. */
-+ keep_db = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+/* Do a database lookup for KEY. */
-+static enum nss_status
-+lookup (DBT *key, struct STRUCTURE *result,
-+ void *buffer, size_t buflen, int *errnop H_ERRNO_PROTO EXTRA_ARGS_DECL)
-+{
-+ char *p;
-+ enum nss_status status;
-+ int err;
-+ DBT value;
-+
-+ /* Open the database. */
-+ if (db == NULL)
-+ {
-+ status = internal_setent (DBFILE, &db);
-+ if (status != NSS_STATUS_SUCCESS)
-+ {
-+ *errnop = errno;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ return status;
-+ }
-+ }
-+
-+ /* Succeed iff it matches a value that parses correctly. */
-+ value.flags = 0;
-+ err = DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0));
-+ if (err != 0)
-+ {
-+ if (err == db_notfound)
-+ {
-+ H_ERRNO_SET (HOST_NOT_FOUND);
-+ status = NSS_STATUS_NOTFOUND;
-+ }
-+ else
-+ {
-+ *errnop = err;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_UNAVAIL;
-+ }
-+ }
-+ else if (buflen < value.size)
-+ {
-+ /* No room to copy the data to. */
-+ *errnop = ERANGE;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_TRYAGAIN;
-+ }
-+ else
-+ {
-+ /* Copy the result to a safe place. */
-+ p = (char *) memcpy (buffer, value.data, value.size);
-+
-+ /* Skip leading blanks. */
-+ while (isspace (*p))
-+ ++p;
-+
-+ err = parse_line (p, result, buffer, buflen, errnop EXTRA_ARGS);
-+
-+ if (err == 0)
-+ {
-+ /* If the key begins with '0' we are trying to get the next
-+ entry. We want to ignore unparsable lines in this case. */
-+ if (((char *) key->data)[0] == '0')
-+ {
-+ /* Super magical return value. We need to tell our caller
-+ that it should continue looping. This value cannot
-+ happen in other cases. */
-+ status = NSS_STATUS_RETURN;
-+ }
-+ else
-+ {
-+ H_ERRNO_SET (HOST_NOT_FOUND);
-+ status = NSS_STATUS_NOTFOUND;
-+ }
-+ }
-+ else if (err < 0)
-+ {
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_TRYAGAIN;
-+ }
-+ else
-+ status = NSS_STATUS_SUCCESS;
-+ }
-+
-+ if (! keep_db)
-+ internal_endent (&db);
-+
-+ return status;
-+}
-+
-+
-+/* Macro for defining lookup functions for this DB-based database.
-+
-+ NAME is the name of the lookup; e.g. `pwnam'.
-+
-+ KEYPATTERN gives `printf' args to construct a key string;
-+ e.g. `(".%s", name)'.
-+
-+ KEYSIZE gives the allocation size of a buffer to construct it in;
-+ e.g. `1 + strlen (name)'.
-+
-+ PROTO describes the arguments for the lookup key;
-+ e.g. `const char *name'.
-+
-+ BREAK_IF_MATCH is ignored, but used by ../nss_files/files-XXX.c. */
-+
-+#define DB_LOOKUP(name, keysize, keypattern, break_if_match, proto...) \
-+enum nss_status \
-+_nss_db_get##name##_r (proto, \
-+ struct STRUCTURE *result, \
-+ char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO)\
-+{ \
-+ DBT key; \
-+ enum nss_status status; \
-+ const size_t size = (keysize) + 1; \
-+ key.data = __alloca (size); \
-+ key.size = KEYPRINTF keypattern; \
-+ key.flags = 0; \
-+ __libc_lock_lock (lock); \
-+ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG \
-+ EXTRA_ARGS_VALUE); \
-+ __libc_lock_unlock (lock); \
-+ return status; \
-+}
-+
-+#define KEYPRINTF(pattern, args...) snprintf (key.data, size, pattern ,##args)
-+
-+
-+
-+
-+/* Return the next entry from the database file, doing locking. */
-+enum nss_status
-+CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer,
-+ size_t buflen, int *errnop H_ERRNO_PROTO)
-+{
-+ /* Return next entry in host file. */
-+ enum nss_status status;
-+ char buf[20];
-+ DBT key;
-+
-+ __libc_lock_lock (lock);
-+
-+ /* Loop until we find a valid entry or hit EOF. See above for the
-+ special meaning of the status value. */
-+ do
-+ {
-+ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
-+ key.flags = 0;
-+ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG
-+ EXTRA_ARGS_VALUE);
-+ if (status == NSS_STATUS_TRYAGAIN
-+#ifdef NEED_H_ERRNO
-+ && *herrnop == NETDB_INTERNAL
-+#endif
-+ && *errnop == ERANGE)
-+ /* Give the user a chance to get the same entry with a larger
-+ buffer. */
-+ --entidx;
-+ }
-+ while (status == NSS_STATUS_RETURN);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
---- glibc-2.3.2/nss/nss_db/db-alias.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/db-alias.c 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,215 @@
-+/* Mail alias file parser in nss_db module.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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.
-+
-+ 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 <aliases.h>
-+#include <alloca.h>
-+#include <ctype.h>
-+#include <dlfcn.h>
-+#include <errno.h>
-+#include <bits/libc-lock.h>
-+#include <paths.h>
-+#include <string.h>
-+
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+
-+static NSS_DB *db;
-+static int keep_db;
-+static unsigned int entidx; /* Index for `getaliasent_r'. */
-+
-+
-+/* Open database. */
-+enum nss_status
-+_nss_db_setaliasent (int stayopen)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (_PATH_VARDB "aliases.db", &db);
-+
-+ /* Remember STAYOPEN flag. */
-+ if (db != NULL)
-+ keep_db |= stayopen;
-+
-+ /* Reset the sequential index. */
-+ entidx = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+/* Close it again. */
-+enum nss_status
-+_nss_db_endaliasent (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ /* Reset STAYOPEN flag. */
-+ keep_db = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+/* We provide the parse function here. The parser in libnss_files
-+ cannot be used. The generation of the db file already resolved all
-+ :include: statements so we simply have to parse the list and store
-+ the result. */
-+static enum nss_status
-+lookup (DBT *key, struct aliasent *result, char *buffer,
-+ size_t buflen, int *errnop)
-+{
-+ enum nss_status status;
-+ DBT value;
-+
-+ /* Open the database. */
-+ if (db == NULL)
-+ {
-+ status = internal_setent (_PATH_VARDB "aliases.db", &db);
-+ if (status != NSS_STATUS_SUCCESS)
-+ {
-+ *errnop = errno;
-+ return status;
-+ }
-+ }
-+
-+ value.flags = 0;
-+ if (DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0)) == 0)
-+ {
-+ const char *src = value.data;
-+ char *cp;
-+ size_t cnt;
-+
-+ result->alias_members_len = 0;
-+
-+ /* We now have to fill the BUFFER with all the information. */
-+ if (buflen < key->size + 1)
-+ {
-+ no_more_room:
-+ *errnop = ERANGE;
-+ return NSS_STATUS_TRYAGAIN;
-+ }
-+
-+ buffer = stpncpy (buffer, key->data, key->size) + 1;
-+ buflen -= key->size + 1;
-+
-+ while (*src != '\0')
-+ {
-+ const char *end, *upto;
-+ while (isspace (*src))
-+ ++src;
-+
-+ end = strchr (src, ',');
-+ if (end == NULL)
-+ end = strchr (src, '\0');
-+ for (upto = end; upto > src && isspace (upto[-1]); --upto);
-+
-+ if (upto != src)
-+ {
-+ if ((upto - src) + __alignof__ (char *) > buflen)
-+ goto no_more_room;
-+ buffer = stpncpy (buffer, src, upto - src) + 1;
-+ buflen -= (upto - src) + __alignof (char *);
-+ ++result->alias_members_len;
-+ }
-+ src = end + (*end != '\0');
-+ }
-+
-+ /* Now prepare the return. Provide string pointers for the
-+ currently selected aliases. */
-+
-+ /* Adjust the pointer so it is aligned for storing pointers. */
-+ buffer += __alignof__ (char *) - 1;
-+ buffer -= ((buffer - (char *) 0) % __alignof__ (char *));
-+ result->alias_members = (char **) buffer;
-+
-+ /* Compute addresses of alias entry strings. */
-+ cp = result->alias_name;
-+ for (cnt = 0; cnt < result->alias_members_len; ++cnt)
-+ {
-+ cp = strchr (cp, '\0') + 1;
-+ result->alias_members[cnt] = cp;
-+ }
-+
-+ status = (result->alias_members_len == 0
-+ ? NSS_STATUS_RETURN : NSS_STATUS_SUCCESS);
-+ }
-+ else
-+ status = NSS_STATUS_NOTFOUND;
-+
-+ if (! keep_db)
-+ internal_endent (&db);
-+
-+ return status;
-+}
-+
-+enum nss_status
-+_nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
-+ int *errnop)
-+{
-+ /* Return next entry in alias file. */
-+ enum nss_status status;
-+ char buf[20];
-+ DBT key;
-+
-+ __libc_lock_lock (lock);
-+ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
-+ key.flags = 0;
-+ status = lookup (&key, result, buffer, buflen, errnop);
-+ if (status == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
-+ /* Give the user a chance to get the same entry with a larger buffer. */
-+ --entidx;
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+enum nss_status
-+_nss_db_getaliasbyname_r (const char *name, struct aliasent *result,
-+ char *buffer, size_t buflen, int *errnop)
-+{
-+ DBT key;
-+ enum nss_status status;
-+
-+ key.size = 1 + strlen (name);
-+
-+ key.data = __alloca (key.size);
-+ ((char *) key.data)[0] = '.';
-+ memcpy (&((char *) key.data)[1], name, key.size - 1);
-+ key.flags = 0;
-+
-+ __libc_lock_lock (lock);
-+ status = lookup (&key, result, buffer, buflen, errnop);
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
---- glibc-2.3.2/nss/nss_db/db-netgrp.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/db-netgrp.c 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,103 @@
-+/* Netgroup file parser in nss_db modules.
-+ Copyright (C) 1996, 1997, 1999, 2000 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.
-+
-+ 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 <dlfcn.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <netgroup.h>
-+#include <string.h>
-+#include <bits/libc-lock.h>
-+#include <paths.h>
-+
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+
-+#define DBFILE _PATH_VARDB "netgroup.db"
-+
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+static NSS_DB *db;
-+static char *entry;
-+static char *cursor;
-+
-+enum nss_status
-+_nss_db_setnetgrent (const char *group)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (DBFILE, &db);
-+
-+ if (status == NSS_STATUS_SUCCESS)
-+ {
-+ DBT key = { data: (void *) group, size: strlen (group), flags: 0 };
-+ DBT value;
-+
-+ value.flags = 0;
-+ if (DL_CALL_FCT (db->get, (db->db, NULL, &key, &value, 0)) != 0)
-+ status = NSS_STATUS_NOTFOUND;
-+ else
-+ cursor = entry = value.data;
-+ }
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+
-+}
-+
-+
-+enum nss_status
-+_nss_db_endnetgrent (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+
-+extern enum nss_status _nss_netgroup_parseline (char **cursor,
-+ struct __netgrent *result,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+
-+enum nss_status
-+_nss_db_getnetgrent_r (struct __netgrent *result, char *buffer, size_t buflen,
-+ int *errnop)
-+{
-+ int status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = _nss_netgroup_parseline (&cursor, result, buffer, buflen, errnop);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
---- glibc-2.3.2/nss/nss_db/db-open.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/db-open.c 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,389 @@
-+/* Common database routines for nss_db.
-+ Copyright (C) 2000 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 <dlfcn.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <bits/libc-lock.h>
-+
-+#include "dummy-db.h"
-+#include "nss_db.h"
-+
-+/* This file contains the functions used to open and close the databases
-+ read by the rest of libnss_db. Not all of them are thread safe;
-+ make sure the caller does the appropriate locking.
-+
-+ We dynamically load the database library, so that it does not have
-+ to be present when glibc is compiled. Once loaded, the database
-+ library is never never unloaded again until the libnss_db module is
-+ unloaded (from the free_mem routine in nsswitch.c) -- we catch the
-+ unload by providing a shlib destructor. (XXX Does that actually
-+ work?) */
-+
-+/* Handle for the shared Berkeley DB library. If non-null, the
-+ database library is completely loaded and ready to be used by
-+ multithreaded code. */
-+static void *libdb_handle;
-+
-+/* The version of the Berkeley DB library we are using. */
-+enum {
-+ nodb,
-+ db24,
-+ db27,
-+ db30
-+} libdb_version;
-+
-+/* Pointer to the db_open function. For use with DB 2.x. */
-+static int (*libdb_db_open) (const char *, int,
-+ uint32_t, int, void *, void *, void **);
-+
-+/* Pointer to the db_create function. For use with DB 3.x. */
-+static int (*libdb_db_create) (void *, void *, uint32_t);
-+
-+/* Constants which vary from version to version are actually variables
-+ here. */
-+int db_first;
-+int db_next;
-+int db_nooverwrite;
-+int db_truncate;
-+int db_rdonly;
-+/* Variables which keep track of the error values. */
-+int db_keyexist;
-+int db_notfound;
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Dynamically load the database library. Return zero if successful,
-+ non-zero if no suitable version of the library could be loaded.
-+ Must be called with the above lock held if it might run in a
-+ multithreaded context.
-+
-+ We try currently:
-+ - libdb.so.3: the name used by glibc 2.1
-+ - libdb-3.0.so: the name used by db-3.0.x
-+ and maybe others in the future. */
-+
-+enum nss_status
-+load_db (void)
-+{
-+ static const char *libnames[] = { "libdb.so.3", "libdb-3.0.so" };
-+ int x;
-+
-+ for (x = 0; x < sizeof (libnames) / sizeof (libnames[0]); ++x)
-+ {
-+ libdb_handle = dlopen (libnames[x], RTLD_LAZY);
-+ if (libdb_handle == NULL)
-+ continue;
-+
-+ /* DB 3.0 has db_create instead of db_open. */
-+ libdb_db_create = dlsym (libdb_handle, "db_create");
-+
-+ if (libdb_db_create == NULL)
-+ /* DB 2.x uses db_open. */
-+ libdb_db_open = dlsym (libdb_handle, "db_open");
-+
-+ if (libdb_db_open != NULL || libdb_db_create != NULL)
-+ {
-+ /* Alright, we got a library. Now find out which version it is. */
-+ const char *(*db_version) (int *, int *, int *);
-+
-+ db_version = dlsym (libdb_handle, "db_version");
-+ if (db_version != NULL)
-+ {
-+ /* Call the function and get the information. */
-+ int major, minor, subminor;
-+
-+ DL_CALL_FCT (db_version, (&major, &minor, &subminor));
-+ switch (major)
-+ {
-+ case 2:
-+ /* Sanity check: Do we have db_open? */
-+ if (libdb_db_open != NULL)
-+ {
-+ if (minor < 6 || (minor == 6 && subminor < 4))
-+ {
-+ libdb_version = db24;
-+ db_first = DB24_FIRST;
-+ db_next = DB24_NEXT;
-+ db_nooverwrite = DB24_NOOVERWRITE;
-+ db_truncate = DB24_TRUNCATE;
-+ }
-+ else
-+ {
-+ libdb_version = db27;
-+ db_first = DB27_FIRST;
-+ db_next = DB27_NEXT;
-+ db_nooverwrite = DB27_NOOVERWRITE;
-+ db_truncate = DB27_TRUNCATE;
-+ }
-+ db_keyexist = DB2x_KEYEXIST;
-+ db_notfound = DB2x_NOTFOUND;
-+ db_rdonly = DB2x_RDONLY;
-+ }
-+ break;
-+
-+ case 3:
-+ /* Sanity check: Do we have db_create? */
-+ if (libdb_db_create != NULL)
-+ {
-+ libdb_version = db30;
-+ db_first = DB30_FIRST;
-+ db_next = DB30_NEXT;
-+ db_keyexist = DB30_KEYEXIST;
-+ db_notfound = DB30_NOTFOUND;
-+ db_rdonly = DB30_RDONLY;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ }
-+
-+ if (libdb_version != nodb)
-+ return NSS_STATUS_SUCCESS;
-+
-+ /* Clear variables. */
-+ libdb_db_open = NULL;
-+ libdb_db_create = NULL;
-+ }
-+
-+ dlclose (libdb_handle);
-+ }
-+
-+ (void) dlerror ();
-+ return NSS_STATUS_UNAVAIL;
-+}
-+
-+/* Set the `FD_CLOEXEC' flag of FD. Return 0 on success, or -1 on
-+ error with `errno' set. */
-+static int
-+set_cloexec_flag (int fd)
-+{
-+ int oldflags = fcntl (fd, F_GETFD, 0);
-+
-+ if (oldflags < 0)
-+ return oldflags;
-+
-+ oldflags |= FD_CLOEXEC;
-+
-+ return fcntl (fd, F_SETFD, oldflags);
-+}
-+
-+/* Make sure we don't use the library anymore once we are shutting down. */
-+static void __attribute__ ((destructor))
-+unload_db (void)
-+{
-+ if (libdb_handle != NULL)
-+ {
-+ libdb_db_open = NULL;
-+ libdb_db_create = NULL;
-+ libdb_version = nodb;
-+ dlclose (libdb_handle);
-+ }
-+}
-+
-+/* Open the database stored in FILE. If succesful, store the database
-+ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
-+ the appropriate lookup status. */
-+enum nss_status
-+internal_setent (const char *file, NSS_DB **dbp)
-+{
-+ enum nss_status status = NSS_STATUS_SUCCESS;
-+
-+ if (*dbp == NULL)
-+ {
-+ if (libdb_db_open == NULL && libdb_db_create == NULL)
-+ {
-+ __libc_lock_lock (lock);
-+
-+ if (libdb_db_open == NULL && libdb_db_create == NULL)
-+ status = load_db ();
-+
-+ __libc_lock_unlock (lock);
-+ }
-+
-+ if (status == NSS_STATUS_SUCCESS)
-+ status = dbopen (file, db_rdonly, 0, dbp);
-+ }
-+
-+ return status;
-+}
-+
-+
-+/* Close the database *DBP. */
-+void
-+internal_endent (NSS_DB **dbp)
-+{
-+ NSS_DB *db = *dbp;
-+
-+ if (db != NULL)
-+ {
-+ DL_CALL_FCT (db->close, (db->db, 0));
-+ *dbp = NULL;
-+ }
-+}
-+
-+/* Allocate a cursor for database DB and transaction TXN. On success,
-+ store the cursor in *DBCP and return zero. Otherwise return an
-+ error value. */
-+int
-+db_cursor (void *db, void *txn, NSS_DBC **dbcp)
-+{
-+ NSS_DBC *dbc;
-+ int ret;
-+
-+ dbc = (NSS_DBC *) malloc (sizeof (NSS_DBC));
-+ if (dbc == NULL)
-+ return ENOMEM;
-+
-+ switch (libdb_version)
-+ {
-+ case db24:
-+ ret = ((struct db24 *) db)->cursor (db, txn, &dbc->cursor);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc24 *) dbc->cursor)->c_get;
-+ break;
-+
-+ case db27:
-+ ret = ((struct db27 *) db)->cursor (db, txn, &dbc->cursor, 0);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc27 *) dbc->cursor)->c_get;
-+ break;
-+
-+ case db30:
-+ ret = ((struct db30 *) db)->cursor (db, txn, &dbc->cursor, 0);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc30 *) dbc->cursor)->c_get;
-+ break;
-+
-+ default:
-+ abort ();
-+ }
-+
-+ if (ret != 0)
-+ {
-+ free (dbc);
-+ return ret;
-+ }
-+
-+ *dbcp = dbc;
-+
-+ return 0;
-+}
-+
-+
-+/* Open the database in FNAME, for access specified by FLAGS. If
-+ opening the database causes the file FNAME to be created, it is
-+ created with MODE. If succesful, store the database handle in *DBP
-+ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
-+ lookup status. */
-+int
-+dbopen (const char *fname, int oper, int mode, NSS_DB **dbp)
-+{
-+ int err;
-+ int fd;
-+ NSS_DB *db;
-+
-+ /* Construct the object we pass up. */
-+ db = (NSS_DB *) calloc (1, sizeof (NSS_DB));
-+ if (db == NULL)
-+ return NSS_STATUS_UNAVAIL;
-+
-+ /* Initialize the object. */
-+ db->cursor = db_cursor;
-+
-+ /* Actually open the database. */
-+ switch (libdb_version)
-+ {
-+ case db24:
-+ case db27:
-+ err = DL_CALL_FCT (libdb_db_open,
-+ (fname, DB_BTREE, oper, mode, NULL, NULL, &db->db));
-+ if (err != 0)
-+ goto fail;
-+
-+ if (libdb_version)
-+ {
-+ db->close = ((struct db24 *) db->db)->close;
-+ db->fd = ((struct db24 *) db->db)->fd;
-+ db->get = ((struct db24 *) db->db)->get;
-+ db->put = ((struct db24 *) db->db)->put;
-+ }
-+ else
-+ {
-+ db->close = ((struct db27 *) db->db)->close;
-+ db->fd = ((struct db27 *) db->db)->fd;
-+ db->get = ((struct db27 *) db->db)->get;
-+ db->put = ((struct db27 *) db->db)->put;
-+ }
-+ break;
-+
-+ case db30:
-+ err = DL_CALL_FCT (libdb_db_create, (db->db, NULL, 0));
-+ if (err != 0)
-+ goto fail;
-+
-+ db->close = ((struct db30 *) db->db)->close;
-+ db->fd = ((struct db30 *) db->db)->fd;
-+ db->get = ((struct db30 *) db->db)->get;
-+ db->put = ((struct db30 *) db->db)->put;
-+
-+ err = ((struct db30 *) db->db)->open (db->db, fname, NULL, DB_BTREE,
-+ oper, mode);
-+ if (err != 0)
-+ goto fail;
-+ break;
-+
-+ default:
-+ abort ();
-+ }
-+
-+ /* We have to make sure the file is `closed on exec'. */
-+ err = DL_CALL_FCT (db->fd, (db->db, &fd));
-+ if (err != 0)
-+ goto fail;
-+ if (set_cloexec_flag (fd) < 0)
-+ goto fail;
-+
-+ *dbp = db;
-+
-+ return NSS_STATUS_UNAVAIL;
-+
-+ fail:
-+ /* Something went wrong. Close the database if necessary. */
-+ if (db)
-+ {
-+ if (db->db && db->close)
-+ DL_CALL_FCT (db->close, (db->db, 0));
-+ free (db);
-+ }
-+
-+ /* Make sure `errno' is set. */
-+ if (err)
-+ __set_errno (err);
-+
-+ return err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-+}
---- glibc-2.3.2/nss/nss_db/dummy-db.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/dummy-db.h 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,333 @@
-+/* Constants and structures from the various Berkeley DB releases.
-+ Copyright (C) 1999, 2000 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 <stdint.h>
-+
-+#include "nss_db.h"
-+
-+/* This file contains dummy definitions for various constants and
-+ structures from the Berkeley release. We only provide those
-+ definitions that are actually needed. In case of the structures,
-+ we're only interested in the function pointers, since that's the
-+ interface to the database. Unfortunately the structures have been
-+ changed several times. */
-+
-+/* The value for the btree database type has not been changed (yet?). */
-+#define DB_BTREE (1)
-+
-+/* Permission flags for all 2.x releases. */
-+#define DB2x_RDONLY 0x010000
-+
-+/* The error values for all 2.x releases. */
-+#define DB2x_KEYEXIST ( -3)
-+#define DB2x_NOTFOUND ( -7)
-+
-+/* For all 2.x releases up to 2.6.3 we can use the same definitions.
-+ We'll refer to them as 2.4 since that's the version distributed
-+ with glibc 2.1. */
-+
-+/* Access methods from version 2.4. */
-+#define DB24_FIRST 0x000020
-+#define DB24_NEXT 0x000800
-+#define DB24_NOOVERWRITE 0x001000
-+
-+/* Permission flags from version 2.4. */
-+#define DB24_TRUNCATE 0x080000
-+
-+/* The DB structure from version 2.4. */
-+struct db24
-+{
-+ void *mutexp;
-+ enum { dummy24 } type;
-+ void *dbenv;
-+ void *mp_dbenv;
-+ void *master;
-+ void *internal;
-+ void *mp;
-+ void *mpf;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } curs_queue;
-+ struct {
-+ void *lh_first;
-+ } handleq;
-+ struct {
-+ void *le_next;
-+ void **le_prev;
-+ } links;
-+ uint32_t log_fileid;
-+ void *txn;
-+ uint32_t locker;
-+ struct db24_dbt {
-+ void *data;
-+ uint32_t size;
-+ uint32_t ulen;
-+ uint32_t dlen;
-+ uint32_t doff;
-+ uint32_t flags;
-+ } lock_dbt;
-+ struct{
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ size_t pgsize;
-+ void *db_malloc;
-+ /* Functions. */
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure for the 2.4 release. */
-+struct dbc24
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ void *internal;
-+ void *c_close;
-+ void *c_del;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ void *c_put;
-+};
-+
-+/* The 2.7 release is slighty different. */
-+
-+/* Access methods from version 2.7. */
-+#define DB27_FIRST 7
-+#define DB27_NEXT 15
-+#define DB27_NOOVERWRITE 17
-+
-+/* Permission flags from version 2.7. */
-+#define DB27_TRUNCATE 0x020000
-+
-+/* The DB structure from version 2.7. */
-+struct db27
-+{
-+ void *mutexp;
-+ enum { dummy27 } type;
-+ int byteswapped;
-+ int saved_open_fd;
-+ void *dbenv;
-+ void *mp_dbenv;
-+ void *internal;
-+ void *mp;
-+ void *mpf;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } free_queue;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } active_queue;
-+ uint8_t fileid[20];
-+ uint32_t log_fileid;
-+ size_t pgsize;
-+ void *db_malloc;
-+ void *dup_compare;
-+ void *h_hash;
-+ /* Functions. */
-+ int (*am_close) (void *);
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **, uint32_t);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*join) (void *, void **, uint32_t, void **);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure for version 2.7. */
-+struct dbc27
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ uint32_t lid;
-+ uint32_t locker;
-+ DBT lock_dbt;
-+ struct{
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ size_t mylock;
-+ DBT rkey;
-+ DBT rdata;
-+ void *c_am_close;
-+ void *c_am_destroy;
-+ void *c_close;
-+ void *c_del;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ void *c_put;
-+ void *internal;
-+ uint32_t flags;
-+};
-+
-+/* Version 3.0 is mostly incompatible with 2.x. */
-+
-+/* Access methods from version 3.0. */
-+#define DB30_FIRST 9
-+#define DB30_NEXT 17
-+#define DB30_NOOVERWRITE 20
-+
-+/* Error values from version 3.0. */
-+#define DB30_KEYEXIST (-30997)
-+#define DB30_NOTFOUND (-30994)
-+
-+/* Permission flags from version 3.0. */
-+#define DB30_RDONLY 0x000010
-+#define DB30_TRUNCATE 0x020000
-+
-+/* The DB structure from version 3.0. */
-+struct db30
-+{
-+ size_t pgsize;
-+ void (*db_feedback) (void *, int, int);
-+ void *(*db_malloc) (size_t);
-+ void *(*db_realloc) (void *, size_t);
-+ int (*dup_compare) (const DBT *, const DBT *);
-+ void *dbenv;
-+ enum { dummy30 } type;
-+ void *mpf;
-+ void *mutexp;
-+ u_int8_t fileid[20];
-+ int32_t log_fileid;
-+ void *open_txn;
-+ void *saved_open_fhp;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } free_queue;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } active_queue;
-+ void *bt_internal;
-+ void *cj_internal;
-+ void *h_internal;
-+ void *q_internal;
-+ void *xa_internal;
-+ /* Functions. */
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **, uint32_t);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ void (*err) (void *, int, const char *, ...);
-+ void (*errx) (void *, const char *, ...);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*get_byteswapped) (void *);
-+ int (*get_type) (void *);
-+ int (*join) (void *, void **, void **, uint32_t);
-+ int (*open) (void *, const char *, const char *, int, uint32_t, int);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*remove) (void *, const char *, const char *, uint32_t);
-+ int (*set_cachesize) (void *, uint32_t, uint32_t, int);
-+ int (*set_dup_compare) (void *, int (*)(const DBT *, const DBT *));
-+ void (*set_errcall) (void *, void (*)(const char *, char *));
-+ void (*set_errfile) (void *, void *);
-+ void (*set_errpfx) (void *, const char *);
-+ void (*set_feedback) (void *, void (*)(void *, int, int));
-+ int (*set_flags) (void *, uint32_t);
-+ int (*set_lorder) (void *, int);
-+ int (*set_malloc) (void *, void *(*)(size_t));
-+ int (*set_pagesize) (void *, uint32_t);
-+ void (*set_paniccall) (void *, void (*)(void *, int));
-+ int (*set_realloc) (void *, void *(*)(void *, size_t));
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ int (*upgrade) (void *, const char *, uint32_t);
-+
-+ int (*set_bt_compare) (void *, int (*)(const DBT *, const DBT *));
-+ int (*set_bt_maxkey) (void *, uint32_t);
-+ int (*set_bt_minkey) (void *, uint32_t);
-+ int (*set_bt_prefix) (void *, size_t (*)(const DBT *, const DBT *));
-+
-+ int (*set_h_ffactor) (void *, uint32_t);
-+ int (*set_h_hash) (void *, uint32_t (*)(const void *, uint32_t));
-+ int (*set_h_nelem) (void *, uint32_t);
-+
-+ int (*set_re_delim) (void *, int);
-+ int (*set_re_len) (void *, uint32_t);
-+ int (*set_re_pad) (void *, int);
-+ int (*set_re_source) (void *, const char *);
-+
-+ uint32_t am_ok;
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure from version 3.0. */
-+struct dbc30
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ uint32_t lid; /* Default process' locker id. */
-+ uint32_t locker; /* Locker for this operation. */
-+ DBT lock_dbt; /* DBT referencing lock. */
-+ struct
-+ {
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ struct
-+ {
-+ size_t off;
-+ uint32_t ndx;
-+ uint32_t gen;
-+ } mylock;
-+ DBT rkey;
-+ DBT rdata;
-+ int (*c_close) (void *);
-+ int (*c_del) (void *, uint32_t);
-+ int (*c_dup) (void *, void **, uint32_t);
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ int (*c_put) (void *, DBT *, DBT *, uint32_t);
-+ int (*c_am_close) (void *);
-+ int (*c_am_destroy) (void *);
-+ void *internal;
-+ uint32_t flags;
-+};
---- glibc-2.3.2/nss/nss_db/nss_db.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/nss/nss_db/nss_db.h 2002-11-16 08:56:03.000000000 -0500
-@@ -0,0 +1,94 @@
-+/* Common database open/close routines for nss_db.
-+ Copyright (C) 1999, 2000 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 _NSS_DB_H
-+#define _NSS_DB_H 1
-+
-+#include <nss.h>
-+#include <stdint.h>
-+
-+/* Variables which keep track of the error values. */
-+extern int db_keyexist;
-+extern int db_notfound;
-+
-+/* This flag is the same for all versions of the Berkeley DB library. */
-+#define DB_CREATE 0x000001
-+
-+/* But constants which vary from version to version are actually
-+ variables here. */
-+extern int db_first;
-+extern int db_next;
-+extern int db_nooverwrite;
-+extern int db_truncate;
-+extern int db_rdonly;
-+
-+/* The `DBT' type is the same in all versions we support. */
-+typedef struct
-+{
-+ void *data;
-+ uint32_t size;
-+ uint32_t ulen;
-+ uint32_t dlen;
-+ uint32_t doff;
-+ uint32_t flags;
-+} DBT;
-+
-+/* But the cursor object is very different from version to version. */
-+typedef struct
-+{
-+ void *cursor;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+} NSS_DBC;
-+
-+/* We need a helper function for it. */
-+extern int db_cursor (void *db, void *txn, NSS_DBC **dbcp);
-+
-+/* This is the wrapper we put around the `DB' structures to provide a
-+ uniform interface to the higher-level functions. */
-+typedef struct
-+{
-+ void *db;
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, NSS_DBC **);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+} NSS_DB;
-+
-+/* Open the database stored in FILE. If succesful, store the database
-+ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
-+ the appropriate lookup status. */
-+extern enum nss_status internal_setent (const char *file, NSS_DB **dbp);
-+
-+/* Close the database *DBP. */
-+extern void internal_endent (NSS_DB **dbp);
-+
-+/* Dynamically load the Berkeley DB library. Return zero if
-+ successful, non-zero if no suitable version of the library could be
-+ loaded. */
-+extern enum nss_status load_db (void);
-+
-+/* Open the database in FNAME, for access specified by FLAGS. If
-+ opening the database causes the file FNAME to be created, it is
-+ created with MODE. If succesful, store the database handle in *DBP
-+ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
-+ lookup status. */
-+extern int dbopen (const char *fname, int oper, int mode, NSS_DB **dbp);
-+
-+#endif /* nss_db.h */
---- glibc-2.3.2/nss/nss_files/files-hosts.c 2003-02-12 02:37:22.000000000 -0500
-+++ glibc-2.3.2/nss/nss_files/files-hosts.c 2003-03-18 16:46:08.000000000 -0500
-@@ -280,7 +280,7 @@
-
- DB_LOOKUP (hostbyaddr, ,,
- {
-- if (result->h_length == len
-+ if (result->h_length == (int) len
- && ! memcmp (addr, result->h_addr_list[0], len))
- break;
- }, const void *addr, socklen_t len, int af)
---- glibc-2.3.2/nss/nss_files/files-parse.c 2002-08-10 14:09:07.000000000 -0400
-+++ glibc-2.3.2/nss/nss_files/files-parse.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Common code for file-based database parsers in nss_files module.
-- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2000, 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
-@@ -67,7 +67,7 @@
- #ifdef ENTDATA
- /* The function can't be exported, because the entdata structure
- is defined only in files-foo.c. */
--# define parser_stclass static inline
-+# define parser_stclass static
- # define nss_files_parse_hidden_def(name)
- #else
- /* Export the line parser function so it can be used in nss_db. */
-@@ -171,6 +171,7 @@
- }
-
- static inline char **
-+__attribute ((always_inline))
- parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
- {
- char *eol, **list, **p;
---- glibc-2.3.2/nss/nsswitch.c 2002-11-01 21:15:52.000000000 -0500
-+++ glibc-2.3.2/nss/nsswitch.c 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -39,6 +39,7 @@
- #endif
-
- #include "nsswitch.h"
-+#include "../nscd/nscd_proto.h"
-
- /* Prototypes for the local functions. */
- static name_database *nss_parse_file (const char *fname) internal_function;
-@@ -413,6 +414,7 @@
-
- return result;
- }
-+libc_hidden_def (__nss_lookup_function)
-
-
- static name_database *
-@@ -426,7 +428,7 @@
- size_t len;
-
- /* Open the configuration file. */
-- fp = fopen (fname, "r");
-+ fp = fopen (fname, "rc");
- if (fp == NULL)
- return NULL;
-
-@@ -696,6 +698,17 @@
- }
-
-
-+/* Called by nscd and nscd alone. */
-+void
-+__nss_disable_nscd (void)
-+{
-+ /* Disable all uses of NSCD. */
-+ __nss_not_use_nscd_passwd = -1;
-+ __nss_not_use_nscd_group = -1;
-+ __nss_not_use_nscd_hosts = -1;
-+}
-+
-+
- /* Free all resources if necessary. */
- libc_freeres_fn (free_mem)
- {
---- glibc-2.3.2/nss/nsswitch.h 2002-08-10 14:08:37.000000000 -0400
-+++ glibc-2.3.2/nss/nsswitch.h 2003-09-19 22:37:05.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-1999,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
-@@ -101,14 +101,15 @@
- If there is no configuration for this database in the file,
- parse a service list from DEFCONFIG and use that. More
- than one function can use the database. */
--int __nss_database_lookup (const char *database, const char *alternative_name,
-- const char *defconfig, service_user **ni);
-+extern int __nss_database_lookup (const char *database,
-+ const char *alternative_name,
-+ const char *defconfig, service_user **ni);
- libc_hidden_proto (__nss_database_lookup)
-
- /* Put first function with name FCT_NAME for SERVICE in FCTP. The
- position is remembered in NI. The function returns a value < 0 if
- an error occurred or no such function exists. */
--int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
-+extern int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
-
- /* Determine the next step in the lookup process according to the
- result STATUS of the call to the last function returned by
-@@ -123,13 +124,18 @@
- services. In other words, only if all four lookup results have
- the action RETURN associated the lookup process stops before the
- natural end. */
--int __nss_next (service_user **ni, const char *fct_name, void **fctp,
-- int status, int all_values);
-+extern int __nss_next (service_user **ni, const char *fct_name, void **fctp,
-+ int status, int all_values);
- libc_hidden_proto (__nss_next)
-
- /* Search for the service described in NI for a function named FCT_NAME
- and return a pointer to this function if successful. */
--void *__nss_lookup_function (service_user *ni, const char *fct_name);
-+extern void *__nss_lookup_function (service_user *ni, const char *fct_name);
-+libc_hidden_proto (__nss_lookup_function)
-+
-+
-+/* Called by NSCD to disable recursive calls. */
-+extern void __nss_disable_nscd (void);
-
-
- typedef int (*db_lookup_function) (service_user **, const char *, void **)
---- glibc-2.3.2/po/ca.po 2002-11-04 01:56:29.000000000 -0500
-+++ glibc-2.3.2/po/ca.po 2003-03-15 15:02:12.000000000 -0500
-@@ -1,12 +1,12 @@
- # Catalan messages for GNU libc.
- # Copyright (C) 2002 Free Software Foundation, Inc.
--# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002.
-+# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-29 18:59+0100\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-09 23:39+0100\n"
- "Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
- "Language-Team: Catalan <ca@dodds.net>\n"
- "MIME-Version: 1.0\n"
-@@ -267,8 +267,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "les conversions des de «%s» i cap a «%s» no són suportades"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "la conversió des de «%s» cap a «%s» no és suportada"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -293,15 +293,15 @@
- msgid "error while closing output file"
- msgstr "error en tancar el fitxer d'eixida"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Informeu dels errors amb el guió «glibcbug» a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -314,9 +314,9 @@
- "de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
- "ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -370,15 +370,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefix a usar en tots els accessos a fitxer"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "no hi ha fitxer d'eixida perquè s'han produït avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "en inserir en l'arbre de recerca"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "no s'ha pogut generar el fitxer d'eixida"
-
-@@ -1295,7 +1295,7 @@
- msgid "unterminated symbolic name"
- msgstr "el nom simbòlic no és terminat"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "la seqüència d'escapada no és vàlida"
-
-@@ -1325,41 +1325,41 @@
- msgid "trailing garbage at end of line"
- msgstr "fem al final de la línia"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Informació del sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Mostra els noms dels locales disponibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Mostra els noms dels mapes de caràcters disponibles"
-
- # ivb (2001/10/30)
- # ivb Aquesta línia dóna pas a un conjunt d'opcions que modif. l'eixida.
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modificadors del format de l'eixida:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Mostra els noms de les categories seleccionades"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Mostra els noms de les paraules clau seleccionades"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Mostra més informació"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obté la informació específica d'un locale."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1367,7 +1367,7 @@
- "NOM\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "en preparar l'eixida"
-
-@@ -1504,16 +1504,16 @@
- msgid "cannot create temporary file"
- msgstr "no s'ha pogut crear un fitxer temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "no s'ha pogut iniciar el fitxer arxiu"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "no s'ha pogut redimensionar el fitxer arxiu"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "no s'ha pogut mapar la capçalera de l'arxiu"
-
-@@ -1531,92 +1531,92 @@
- msgid "cannot map locale archive file"
- msgstr "no s'ha pogut mapar el fitxer arxiu de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "no s'ha pogut blocar el nou arxiu"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "no s'ha pogut estendre el fitxer arxiu de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "no s'ha pogut canviar el mode de l'arxiu de locales redimensionat"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "no s'ha pogut reanomenar el nou arxiu"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "no s'ha pogut obrir l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "ha fallat stat() sobre l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "no s'ha pogut blocar l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "no s'ha pogut llegir la capçalera de l'arxiu"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "el locale «%s» ja existeix"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "no s'ha pogut afegir a l'arxiu de locales"
-
- # ivb (2002/10/21)
- # ivb El fitxer conté àlies de diversos locales (locale.alias).
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "no s'ha trobat el fitxer «%s» d'àlies de locales"
-
- # ivb (2002/10/21)
- # ivb És un missatge, no un error.
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "S'està afegint «%s»\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "ha fallat stat() sobre «%s»: %s: es descarta"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "«%s» no és un directori: es descarta"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "no s'ha pogut obrir el directori «%s»: %s: es descarta"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "el joc de fitxers de locale en «%s» no és complet"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "no s'han pogut llegir tots els fitxers de «%s»: es descarta"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "el locale «%s» no es troba en l'arxiu"
-@@ -1687,8 +1687,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "el límit superior del rang no és menor que l'inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "la memòria s'ha exhaurit"
-
-@@ -1714,7 +1714,7 @@
- msgid "Another string for testing."
- msgstr "Altra cadena de prova."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOM"
-
-@@ -1758,7 +1758,7 @@
- msgid "duplicate set definition"
- msgstr "la definició del joc de missatges és duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "aquesta és la primera definició"
-
-@@ -1776,44 +1776,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "la directiva «%s» no és coneguda: es descarta la línia"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "el número de missatge és duplicat"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "l'identificador de missatge és duplicat"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "el caràcter no és vàlid: es descarta el missatge"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "la línia no és vàlida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "es descarta la línia malmesa"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "no s'ha pogut obrir el fitxer d'eixida «%s»"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "el missatge no és terminat"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "en obrir el fitxer antic de catàleg"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "els mòduls de conversió no es troben disponibles"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "no s'ha pogut determinar el caràcter d'escapada"
-
-@@ -1821,7 +1821,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: no es poden tractar més de 8 arguments\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Èxit"
-@@ -3024,23 +3024,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSenyal desconegut %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "la memòria és consistent; la biblioteca té errors\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "s'ha sobreescrit la memòria d'abans del bloc reservat\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "s'ha sobreescrit la memòria de després del bloc reservat\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "s'ha alliberat el bloc dues voltes\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "el valor d'«mcheck_status» és estrany; la biblioteca té errors\n"
-
-@@ -3076,6 +3076,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FITXERDADES [FITXEREIXIDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Error desconegut"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3102,7 +3106,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: La memòria s'ha exhaurit: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Error desconegut del sistema"
-
-@@ -3507,27 +3511,23 @@
- msgid "Interrupted by a signal"
- msgstr "Interromput per un senyal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Error desconegut"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Forma d'ús: %s [-v especificació] nom_de_la_variable [camí]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "l'especificació «%s» no és coneguda"
-
- # ivb (2001/11/01)
- # ivb Es refereix a variables de configuració -> femení.
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "indefinida"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "La variable «%s» no és reconeguda"
-@@ -3589,71 +3589,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: l'opció «-W %s» no admet arguments\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "No hi ha cap coincidència"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "L'expressió regular no és vàlida"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "El caràcter d'ordenació no és vàlid"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "El nom de la classe de caràcters no és vàlid"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Hi ha una barra invertida sobrant al final"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "La referència cap enrere no és vàlida"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ o [^ desaparellat"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( o \\( desaparellat"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ desaparellat"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "El contingut de \\{\\} no és vàlid"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "El final del rang no és vàlid"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "La memòria s'ha exhaurit"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "L'expressió regular precedent és incorrecta"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fí prematur de l'expressió regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "L'expressió regular és massa llarga"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") o \\) desaparellat"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "No hi ha expressió regular prèvia"
-
-@@ -3812,24 +3812,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuració a usar del servei"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "No es suporta l'enumeració sobre «%s»\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obté les entrades de les bases de dades d'administració."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de dades suportades:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "el nombre d'arguments és incorrecte"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "La base de dades no és coneguda: %s\n"
-@@ -3866,70 +3866,74 @@
- msgid "invalid pointer size"
- msgstr "el tamany del punter no és vàlid"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: No s'ha pogut reservar memòria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Tots els ports estan sent usats\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "connexió amb l'adreça «%s»: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "S'està provant amb «%s»...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (en preparar l'eixida estàndard d'errors): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (en preparar l'exida estàndard d'errors): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallada del protocol en configurar el circuit\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallada del protocol en configurar el circuit\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura incompleta"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "ha fallat lstat()"
-
- # ivb (2001/10/31)
- # ivb Cal tenir en compte que «ordinary» a l'anglés és cosa pler diferent ;)
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "no és un fitxer ordinari"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "no s'ha pogut obrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "ha fallat fstat()"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "el propietari no és vàlid"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "és modificable per altres que no en són el propietari"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "té un enllaç fort en altre lloc"
-
-@@ -4146,109 +4150,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "No s'ha pogut rebre una resposta a la difusió"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: l'eixida sobreescriuria «%s»\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: no s'ha pogut obrir «%s»: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: en escriure en l'eixida «%s»: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "no s'ha pogut trobar el preprocessador de C: %s\n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "no s'ha pogut trobar cap preprocessador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: el preprocessador de C ha fallat amb el senyal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: el preprocessador de C ha fallat amb el codi d'eixida %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "el tipus de xarxa no és permés: «%s»\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: hi ha massa definicions\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: error en codificar els arguments\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "el fitxer «%s» ja existeix i podria ser sobreescrit\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "No es pot especificar més d'un fitxer d'entrada!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Aquesta implementació no suporta l'estil nou ni el codi compatible amb MT!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "No es pot usar l'opció idxarxa (-n) amb l'opció inetd (-I)!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "No es pot usar l'opció idxarxa (-n) sense TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "No es pot usar opcions de taula amb l'estil nou (-N)!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "cal «fitxerentrada» pels senyaladors de generació de plantilles.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "No es pot tenir més d'un senyalador de generació de fitxers!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "Forma d'ús: %s fitxerentrada\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnom[=valor]] [-i tamany] [-I [-K segons]] [-Y camí] fitxerentrada\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fitxereixida] [fitxerentrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tipusdexarxa]* [-o fitxereixida] [fitxerentrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n idxarxa]* [-o fitxereixida] [fitxerentrada]\n"
-@@ -5126,7 +5130,7 @@
- msgid "while allocating hash table entry"
- msgstr "en reservar una entrada en la taula de dispersió"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "ha fallat stat() sobre el fitxer «%s»: %s"
-@@ -5139,27 +5143,32 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "no es pot executar «nscd» en mode segur com a usuari sense privilegis"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "en reservar la memòria cau: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "no s'ha pogut obrir el connector: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "no s'ha pogut habilitar el connector per acceptar connexions: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: s'ha rebut una petició (Versió = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "no s'ha pogut atendre la petició amb versió antiga %d; la versió actual és %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "no s'ha pogut escriure el resultat: %s"
-@@ -5169,130 +5178,130 @@
- # ivb dimoni «nscd» per consultar la memòria cau o invalidar-la. Per
- # ivb això faig servir «programa de control» (com «ndc» amb «named» o
- # ivb «chronyc» amb «chronyd»).
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "error en obtenir l'identificador del programa de control: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "en acceptar la connexió: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura incompleta en llegir la petició: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "la longitud de la clau de la petició és massa gran: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "lectura incompleta en llegir la clau de la petició: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "No s'ha pogut executar «nscd» com a l'usuari «%s»"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "ha fallat getgrouplist()"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "ha fallat setgroups()"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "en reservar una còpia de la clau"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "en reservar una entrada en la memòria cau"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escriptura incompleta en «%s»: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau de grups!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "«%s» no és un gid numèric vàlid!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "No s'ha trobat «%d» en la memòria cau de grups!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau d'estacions!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Llig les dades de configuració de NOM"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "No fa fork() i mostra els missatges en el terminal actual"
-
- # ivb (2001/10/30)
- # ivb Es refereix al _nombre_ de fils a llançar.
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NOMBRE"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Llança NOMBRE fils d'exeució"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Termina el servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Mostra estadístiques de la configuració actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TAULA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida la memòria cau especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TAULA,yes"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Usa una memòria cau diferent per cada usuari"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Dimoni de memòria cau del servei de noms."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "ja es troba en marxa"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Només root pot usar aquesta opció!"
-
-@@ -5382,22 +5391,22 @@
- "%15ld%% ràtio d'encerts de memòria cau\n"
- "%15s comprovar /etc/%s per si hi ha hagut canvis?\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau d'usuaris!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "«%s» no és un uid numèric vàlid!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "No s'ha trobat «%d» en la memòria cau d'usuaris!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "no s'ha pogut crear la llista de capacitats"
-
-@@ -5454,7 +5463,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI del SO: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "No s'ha pogut obrir el fitxer «%s» de memòria cau\n"
-@@ -5500,19 +5509,19 @@
- msgid "Renaming of %s to %s failed"
- msgstr "No s'ha pogut reanomenar «%s» a «%s»"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "l'objecte compartit no és obert"
-
- # ivb (2002/10/29)
- # ivb TLS = Thread Local Storage
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "El comptador de generació de TLS s'ha esgotat! Per favor, envieu un informe amb el guió «glibcbug»."
-
- # ivb (2001/11/05)
- # ivb DST = Dynamic String Token (component cadena dinàmica)
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "no es permeten components cadena dinàmica (DST) en programes SUID/SGID"
-
-@@ -5531,183 +5540,195 @@
- msgid "cannot allocate dependency list"
- msgstr "no s'ha pogut reservar la llista de dependències"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "no s'ha pogut reservar la llista de recerca de símbols"
-
- # ivb (2002/10/21)
- # ivb LD_TRACE_PRELINKING és una variable d'entorn, no és part del filtre.
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Amb LD_TRACE_PRELINKING no es suporten els filtres"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "ERROR EN L'ENLLAÇADOR DINÀMIC!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "error en carregar les biblioteques dinàmiques"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "no s'ha pogut reservar el registre de nom"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "no s'ha pogut crear la memòria cau dels camins de recerca"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "no s'ha pogut crear una còpia de RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "no s'ha pogut crear el vector de camins de recerca"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "ha fallat stat() sobre l'objecte compartit"
-
- # ivb (2001/10/28)
- # ivb Es refereix a /dev/zero .
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "no s'ha pogut obrir el dispositiu de zeros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "no s'ha pogut crear el descriptor d'objecte compartit"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "no s'han pogut llegir les dades del fitxer"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "L'alineament de l'ordre ELF de càrrega no està alineada amb la pàgina"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "L'adreça/desplaçament de l'ordre ELF de càrrega no està correctament alineada"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "no s'han pogut reservar les estructures de dades TLS pel fil inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "no es pot tractar amb dades TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "no s'ha pogut mapar un segment de l'objecte compartit"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "no s'ha pogut carregar dinàmicament l'executable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "no s'han pogut canviar les proteccions de memòria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "no s'han pogut mapar les pàgines plenes de zeros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "no s'ha pogut reservar memòria per la capçalera del programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "el fitxer objecte no té secció dinàmica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "ha fallat dlopen() sobre l'objecte compartit"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "no s'ha pogut crear la llista de recerca"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "el fitxer és massa curt"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "la capçalera ELF no és vàlida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "La codificació de les dades del fitxer ELF no és big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "La codificació de les dades del fitxer ELF no és little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "La identificació de la versió del fitxer ELF no concorda amb l'actual"
-
- # ivb (2001/11(06)
- # ivb ABI = Application Binary Interface (interfície binària d'aplicació)
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "L'ABI de sistema operatiu del fitxer ELF no és vàlida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "La versió de l'ABI del fitxer ELF no és vàlida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "error intern"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "La versió del fitxer ELF no concorda amb l'actual"
-
- # ivb (2001/11/01)
- # ivb La traducció completa de «phentsize» vindria a ser: tamany d'entrada
- # ivb de taula de la capçalera de programa.
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "El valor de «phentsize» del fitxer ELF no és l'esperat"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "només es poden carregar els tipus ET_DYN i ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "no s'ha pogut obrir el fitxer objecte compartit"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "error de reubicació"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "no s'ha pogut estendre l'àmbit global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "la substitució del component cadena dinàmica és buida"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "no s'ha pogut crear la llista d'àmbits"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "no s'han pogut crear les estructures de dades TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "el mode de dlopen() no és vàlid"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "ha fallat dlopen() sobre l'objecte compartit: la memòria TLS estàtica és massa menuda"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "no s'ha pogut fer escrivible el segment per reubicar-lo"
-
- # ivb (2002/10/21)
- # ivb PLT = Procedure Linkage Table, Taula d'Enllaçat de Procediments
- # ivb PLTREL = tipus de reubicació usada per la PLT
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: el perfilador no ha trobat el PLTREL de l'objecte «%s»\n"
-@@ -5715,12 +5736,12 @@
- # ivb (2002/10/29)
- # ivb Açò és un cacau, però pense que ací hauria de posar PLT i no PLTREL.
- # ivb Total, qui ho va a llegir?
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: el perfilador ha exhaurit la memòria en calcular el PLTREL de «%s»\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "no s'ha pogut restaurar la protecció del segment després de reubicar-lo"
-
-@@ -5776,123 +5797,123 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura els vincles en temps d'execució de l'enllaçador dinàmic."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "S'ha especificat el camí «%s» més d'una volta"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "«%s» no és un tipus conegut de biblioteca"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Ha fallat stat() sobre «%s»"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Ha fallat stat() sobre «%s»\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "«%s» no és un enllaç simbòlic\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "No s'ha pogut desenllaçar «%s»"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "No s'ha pogut crear un enllaç des de «%s» cap a «%s»"
-
- # ivb (2001/10/28)
- # ivb Es refereix a un enllaç -> masculí.
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (canviat)\n"
-
- # ivb (2001/10/28)
- # ivb Es refereix a fer o no l'enllaç, no importa el gènere.
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (SALTAT)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "No s'ha pogut trobar «%s»"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Ha fallat lstat() sobre «%s»"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Es descarta el fitxer «%s» que no és un fitxer ordinari."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "No s'ha creat l'enllaç perquè no s'ha trobat el nom d'objecte compartit de «%s»"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "No s'ha pogut obrir el directori «%s»"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Ha fallat lstat() sobre «%s»"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Ha fallat stat() sobre «%s»"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "No s'ha trobat el fitxer d'entrada «%s».\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "la bibliotexa «%s» per libc5 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "la biblioteca «%s» per libc6 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "la biblioteca «%s» per libc4 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d'objecte compartit però diferent tipus."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "No s'ha pogut obrir el fitxer «%s» de configuració"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "No s'ha pogut canviar al directori /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "No s'ha pogut obrir el directori «%s» de fitxers de memòria cau\n"
-@@ -6005,12 +6026,3 @@
- #: elf/sprof.c:936 elf/sprof.c:988
- msgid "cannot allocate symbol data"
- msgstr "no s'han pogut reservar les dades de símbols"
--
--#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
--#~ msgstr "\t\t\t\t\t\t\t %s: el valor del camp «%s» ha d'estar en el rang %d...%d"
--
--#~ msgid "Failed to look up user '%s' to run server as"
--#~ msgstr "Ha fallat la recerca de l'usuari «%s», com a qui executar el servidor"
--
--#~ msgid "no filename for profiling data given and shared object `%s' has no soname"
--#~ msgstr "no s'ha especificat un fitxer de dades de perfilat i «%s» no té nom d'objecte compartit"
---- glibc-2.3.2/po/da.po 2002-11-10 18:14:07.000000000 -0500
-+++ glibc-2.3.2/po/da.po 2003-03-15 15:02:12.000000000 -0500
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-11-09 20:18+01:00\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-08 20:18+01:00\n"
- "Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
- "Language-Team: Danish <dansk@klid.dk>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "konverteringer fra '%s' og til '%s' er ikke understøttet"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "konvertering fra '%s' og til '%s' er ikke understøttet"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "fejl ved lukning af udfil"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Rapportér fejl ved at bruge skriptet 'glibcbug' til <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -306,9 +306,9 @@
- "Programmellet har ingen garanti, ikke en gang for SALGBARHED eller EGNETHED\n"
- "TIL NOGEN SPECIEL OPGAVE.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Præfiks brugt for alle filadgange"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "på grund af advarsler blev ingen udfil oprettet"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "fejl ved indsætning i søgetræ"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "kan ikke generere udfil"
-
-@@ -1280,7 +1280,7 @@
- msgid "unterminated symbolic name"
- msgstr "uafsluttet symbolsk navn"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "ugyldig undtagelsessekvens"
-
-@@ -1310,39 +1310,39 @@
- msgid "trailing garbage at end of line"
- msgstr "efterfølgende snavs på slutningen af linien"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systeminformation:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Skriv navnene til tilgængelige lokaler"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Skriv navnene til tilgængelige tegntabel"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Ændre format for uddata:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Skriv navnene til valgte kategorier"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Skriv navnene til valgte nøgleord"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Skriv mere information"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hent information specifik for lokalet."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1350,7 +1350,7 @@
- "NAVN\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "da uddata blev forberedt"
-
-@@ -1481,16 +1481,16 @@
- msgid "cannot create temporary file"
- msgstr "Kan ikke oprette midlertidig fil"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "kan ikke initiere arkivfil"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "kan ikke skifte størrelse på arkivfil"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "kan ikke læse arkivhoved med mmap"
-
-@@ -1506,88 +1506,88 @@
- msgid "cannot map locale archive file"
- msgstr "kan ikke åbne lokalearkivfil med mmap"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "kan ikke låse nyt arkiv"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "kan ikke udvide lokalearkivfil"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "kan ikke ændre adgangtilstand på størrelsesændret lokalearkiv"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "kan ikke omdøbe nyt arkiv"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "kan ikke åbne lokalearkiv \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "kan ikke udføre 'stat' på lokalearkiv '%s'"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "kan ikke låse lokalearkiv '%s'"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "kan ikke læse arkivhoved"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "lokale '%s' eksisterer allerede"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "kan ikke tilføje til lokalearkiv"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "fil \"%s\" for lokalealias findes ikke"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Tilføjer %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "status på \"%s\" mislykkedes: %s: ignoreret"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" er ikke et katalog, ignoreret"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "kan ikke åbne katalog \"%s\": %s: ignoreret"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "ufuldstændig opsætning af lokalefiler i \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kan ikke læse alle filer i \"%s\": ignoreret"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "lokale \"%s\" findes ikke i arkivet"
-@@ -1656,8 +1656,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "øvre grænse i område er ikke mindre end nedre grænse"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "lageret opbrugt"
-
-@@ -1683,7 +1683,7 @@
- msgid "Another string for testing."
- msgstr "En ny streng til afprøvning."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NAVN"
-
-@@ -1727,7 +1727,7 @@
- msgid "duplicate set definition"
- msgstr "duplikeret definition af sæt"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "dette er den første definition"
-
-@@ -1745,44 +1745,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "ukendt nøgleord '%s': linie ignoreret"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "duplikeret meddelelsesnummer"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "duplikeret meddelelsesidentifikator"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "Ugyldigt tegn: besked ignoreret"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "ugyldig linje"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "fejlagtig linie ignoreret"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "kan ikke åbne udfil '%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "uafsluttet meddelelse"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "da den gamle katalogfil blev åbnet"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "konverteringsmoduler ikke tilgængelige"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "kan ikke bestemme undvigetegn"
-
-@@ -1790,7 +1790,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: véd ikke hvordan mere end 8 argumenter skal behandles\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Succes"
-@@ -2979,23 +2979,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sUkendt signal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "lageret er konsistent, biblioteket er fejlbehæftet\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "området foran tildelt lagerblok snavset til\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "området efter tildelt lagerblok snavset til\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok frigjort to gange\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "fejlagtig mcheck_status, biblioteket er fejlbehæftet\n"
-
-@@ -3031,6 +3031,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFIL [UDFIL]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Ukendt fejl"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3055,7 +3059,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Lageret opbrugt: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Ukendt systemfejl"
-
-@@ -3448,25 +3452,21 @@
- msgid "Interrupted by a signal"
- msgstr "Afbrudt af et signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Ukendt fejl"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Brug: %s [-v specifikation] variabelnavn [søgesti]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "ukendt specifikation '%s'"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "udefineret"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Ukendt variabel '%s'"
-@@ -3528,71 +3528,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: flaget '-W %s' tager ikke argumenter\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ingen træf"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Ugyldigt regulært udtryk"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Ugyldigt sammenligningstegn"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Ugyldigt tegnklassenavn"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Efterfølgende backslash"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Ugyldig tilbage-reference"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Ubalanceret [ eller [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Ubalanceret ( eller \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Ubalanceret \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Ugyldig brug af \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Ugyldigt intervalslut"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Lageret opbrugt"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Ugyldigt foregående regulært udtryk"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "For tidlig afslutning på regulært udtryk"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Regulært udtryk for stort"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Ubalanceret ) eller \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Intet foregående regulært udtryk"
-
-@@ -3746,24 +3746,24 @@
- msgid "Service configuration to be used"
- msgstr "Tjenestekonfiguration som skal bruges"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Enumeration er ikke understøttet på %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hent indtastninger fra administrativ database."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Understøttede databaser:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "galt antal argumenter"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Ukendt database: %s\n"
-@@ -3792,68 +3792,72 @@
- msgid "invalid pointer size"
- msgstr "ugyldig størrelse for pegere"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Kan ikke tildele lager\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: sokkel: Alle porte i brug\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "koble til adresse %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Prøver %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write: (opsætter standard error): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (opsætter stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokolfejl i opsætning af forbindelse\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "sokkel: protokolfejl i opsætning af forbindelse\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: kort indlæsning"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat fejlede"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "ikke en almindelig fil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "kan ikke åbne"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat fejlede"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "forkert ejer"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "skrivbar af andre end ejer"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hårdlænket et eller andet sted"
-
-@@ -4064,109 +4068,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Kan ikke tage imod svar på rundsending"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: udskrift ville overskrive %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: kan ikke åbne %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: under skrivning af uddata %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "kan ikke finde C-præprocessor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "kan ikke finde nogen C-præprocessor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C-præprocessoren fejlede med signal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C-præprocessoren fejlede med slutkode %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "ulovlig nettype: '%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: for mange definitioner\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: arglist kode-fejl\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "filen '%s' eksisterer allerede og kan blive overskrevet\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Kan ikke specificere mere end én indfil!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Denne implementation understøtter ikke nystil eller MT-sikker kode!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Kan ikke bruge netid-flag med inetd-flag!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Kan ikke bruge netid-flag uden TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Kan ikke bruge tabelflag med ny stil!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "'indfil' er nødvendig for flag til at generere skabelon.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Kan ikke have mere end et fil-genereringsflag!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "brug: %s indfil\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM] [-Dnavn[=værdi]] [-i størrelse] [-I [-K sekunder]] [-Y søgesti] indfil\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o udfil] [indfil]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nettype]* [-o udfil] [indfil]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o udfil] [indfil]\n"
-@@ -5024,7 +5028,7 @@
- msgid "while allocating hash table entry"
- msgstr "under allokering af hashtabel-indtastninger"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "kan ikke udføre stat() på fil '%s': %s"
-@@ -5037,153 +5041,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Kan ikke køre nscd i sikker tilstand som upriviligieret bruger"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "under allokering af buffer: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "kan ikke åbne sokkel: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "kan ikke få sokkel til at acceptere forbindelser: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: forespørgsel modtaget (version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "kan ikke håndtere gammel forespørgsel af version %d. Nuværende version er %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "kan ikke udskrive resultat: '%s'"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "fejl ved forespørgsel på opkaldets id: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "under accept af forbindelse: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "afkortet læsning ved læsning af forespørgsel: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "nøglelængde i forespørgsel for lang: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "afkortet læsning ved læsning af forespørgsels-nøgle: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Kunne ikke køre nscd som bruger \"%s\""
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist mislykkedes"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups mislykkedes"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "under allokering af nøglekopi"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "under allokering af nærbuffer-indtastninger"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "afkortet skrivning i %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Har ikke fundet '%s' i gruppe-nærbuffer!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Ugyldigt numerisk gruppe-id (gid) \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Har ikke fundet '%d' i gruppe-nærbuffer!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Har ikke fundet '%s' i værts-nærbuffer!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Læs konfigurationsdata fra NAVN"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Udspalt ikke ny proces og vis meddelelser på nuværende tty"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NUMMER"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Start ANTAL tråde"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Afbryd tjeneren"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Skriv nuværende konfigurationsstatistik ud"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABEL"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Ugyldiggør den opgivne hurtigbuffer"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABEL,ja"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Brug separat buffer for hver bruger"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Dæmon for bufring af navnetjeneste"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "kører allerede"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Kun 'root' har lov til at bruge dette flag!"
-
-@@ -5273,22 +5282,22 @@
- "%15ld%% træfrate for hurtigbuffer\n"
- "%15s tjek /etc/%s for ændringer\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Har ikke fundet '%s' i adgangskode-nærbuffer!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Ugyldig numerisk bruger-id (uid) \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Har ikke fundet '%d' i adgangskode-nærbuffer!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kan ikke oprette egenskabsliste"
-
-@@ -5339,7 +5348,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Kan ikke åbne hurtigbufferfil %s\n"
-@@ -5385,17 +5394,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Omdøbning af %s til %s fejlede"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "delt objekt er ikke åbent"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "Generationstæller for TLS tilbagestillet! Vær sød at indsende fejlrapport med\n"
- "\"glibcbug\"-skriptet"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST er ikke tilladt i SUIT/SGID-programmer"
-
-@@ -5414,181 +5423,193 @@
- msgid "cannot allocate dependency list"
- msgstr "kan ikke allokere afhængighedsliste"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "kan ikke allokere symbolsøgningsliste"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filter understøttes ej med LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "FEJL I DYNAMISK LÆNKER!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "fejl da delte biblioteker indlæstes"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "Kan ikke allokere navnepost"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Kan ikke oprette buffer for søgesti"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "kan ikke oprette RUNPATH/RPATH kopi"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "kan ikke oprette tabel over søgestier"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "kan ikke tage status på delt objekt"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "kan ikke åbne nulstil-enhed"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "kan ikke oprette delt objektbeskriver"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "kan ikke indlæse fildata"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-indlæsningskommandos tilpasning er ikke tilpasset siden"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF-indlæsningskommandos adresse/tillæg er ikke tilpasset ordentligt"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "kan ikke oprette TLS-datastrukturer for første tråd"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "kan ikke behandle TLS-data"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "klarede ikke at afbilde fra delt objekt'"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "kan ikke indlæse udførbare dynamisk"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "kan ikke ændre lagerbeskyttelser"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "kan ikke mappe nulstil-sider"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Kan ikke allokere lager til programhoved"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektfil har ingen dynamisk sektion"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "delt objekt kan ikke åbnes med dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "kan ikke læse søgningsliste"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "For kort fil"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ugyldigt ELF-hoved"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kodning for ELF-fildata er ikke \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kodning for ELF-fildata er ikke \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-filens version-identitet passer ikke med den aktuelle"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-filens OS ABI er ugyldig"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-filens ABI-version er ugyldig"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "Intern fejl"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-filens version passer ikke med den aktuelle"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-filens 'phentsize' er ikke den forventede størrelse"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "kun ET_DYN og ET_EXEC kan indlæses"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "kan ikke åbne delt objektfil"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "fejl ved relokering"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "Kan ikke udvide globalt defineringområde"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "tom dynamisk strengelement-erstatning"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "kan ikke oprette omfangsliste"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "kan ikke oprette datastrukturer for TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "ugyldig modus for dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "delt objekt kan ikke åbnes med dlopen(): statisk TLS-hukommelse for lille"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "Kan ikke gøre segment skrivbart for omflytning"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profilereren fandt ingen PLTREL i objekt %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profilereren fik slut på hukommelse for kopiering af PLTREL i %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "kan ikke genskabe segmentbeskyttelse efter omflytning"
-
-@@ -5644,119 +5665,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurerer værdier til Dynamisk Lænker"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Stien '%s' givet mere end én gang"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s er ikke en kendt bibliotekstype"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Kan ikke stat() %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Kan ikke stat() %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s er ikke en symbolsk lænke\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Kan ikke aflænke %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Kan ikke lænke %s til %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (ændret)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (UDELADT)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Kan ikke finde %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Kan ikke lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorerede filen %s da den ikke er en almindelig fil."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Kan ikke åbne katalog %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Kan ikke lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Kan ikke stat() %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Indputfilen %s ikke fundet\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type"
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Kan ikke åbne konfigurationsfil %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Kan ikke chdir til /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Kan ikke åbne hurtigbufferkatalog %s\n"
---- glibc-2.3.2/po/es.po 2002-11-04 01:56:19.000000000 -0500
-+++ glibc-2.3.2/po/es.po 2003-03-15 15:02:12.000000000 -0500
-@@ -1,13 +1,13 @@
- # Mensajes en español para GNU libc.
--# Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
- # Enrique Melero Gómez <melero@eurolands.com>, 1996, 1997.
--# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002.
-+# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002, 2003.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: GNU libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-11-02 16:52+0100\n"
-+"Project-Id-Version: GNU libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 17:20+0100\n"
- "Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
- "Language-Team: Spanish <es@li.org>\n"
- "MIME-Version: 1.0\n"
-@@ -301,8 +301,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "no se admiten conversiones de `%s' a `%s'"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "no se admite la conversión de `%s' a `%s'"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -327,15 +327,15 @@
- msgid "error while closing output file"
- msgstr "error al cerrar el fichero de salida"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Comunicar bichos usando el programa `glibcbug' a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -348,9 +348,9 @@
- "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n"
- "FIN DETERMINADO.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -409,15 +409,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefijo utilizado para todos los accesos a ficheros"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "no se ha producido ningún fichero de salida debido a la existencia de avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "al insertar en el árbol de búsqueda"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "no se puede generar el fichero de salida"
-
-@@ -1368,7 +1368,7 @@
- msgid "unterminated symbolic name"
- msgstr "nombre simbólico sin terminar"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "secuencia de escape inválida"
-
-@@ -1398,39 +1398,39 @@
- msgid "trailing garbage at end of line"
- msgstr "hay inconsistencias al final de la línea"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Información del sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Escribe los nombres de los locales disponibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Escribe los nombres de las asignaciones de caracteres disponibles"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifica el formato de salida:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Escribe los nombres de las categorías seleccionadas"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Escribe los nombres de las palabras clave seleccionadas"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Muestra más información"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obtiene la información específica del locale."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1438,7 +1438,7 @@
- "NOMBRE\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "al preparar la salida"
-
-@@ -1571,16 +1571,16 @@
- msgid "cannot create temporary file"
- msgstr "no se puede crear un fichero temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "no se puede inicializar el archivo"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "no se puede cambiar el tamaño del archivo"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "no se puede leer la cabecera del archivo"
-
-@@ -1596,88 +1596,88 @@
- msgid "cannot map locale archive file"
- msgstr "no se puede leer el fichero de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "no se puede bloquear el archivo nuevo"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "no se puede extender el archivo de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "no se puede cambiar el modo de un archivo de locales redimensionado"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "no se puede renombrar el nuevo archivo"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "no se puede abrir el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "no se puede efectuar `stat' sobre el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "no se puede bloquear el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "no se puede leer la cabecera del archivo"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "el local `%s' ya existe"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "no se puede añadir al archivo de locales"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "no se encontró el fichero de alias de locales `%s'"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Añadiendo %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "falló la llamada a `stat' sobre \"%s\": %s: descartado"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" no es un directorio; descarrtado"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "no se puede abrir el directorio \"%s\": %s: descartado"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "conjunto incompleto de ficheros de locales en \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "no se pueden leer todos los ficheros de \"%s\": descartado"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "el local \"%s\" no está en el archivo"
-@@ -1749,8 +1749,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "el límite superior del rango no es menor que el límite inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "memoria agotada"
-
-@@ -1793,7 +1793,7 @@
- msgid "Another string for testing."
- msgstr "Otra cadena para hacer pruebas."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOMBRE"
-
-@@ -1839,7 +1839,7 @@
- msgid "duplicate set definition"
- msgstr "definición de conjunto duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "esta es la primera vez que aparece la definición"
-
-@@ -1860,44 +1860,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "directiva desconocida `%s': línea pasada por alto"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "número de mensaje duplicado"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "identificador de mensaje duplicado"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "carácter inválido: mensaje descartado"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "línea inválida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "una línea incorrecta no se tendrá en cuenta"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "no se puede abrir el fichero de salida `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "mensaje sin terminar"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "al abrir el fichero de catálogo antiguo"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "no están disponibles los módulos de conversión"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "no se puede determinar el carácter de escape"
-
-@@ -1909,7 +1909,7 @@
- # me gustaría que hubiera otra palabra mejor. SV
- # Siempre me han gustado F&C ;-)
- # A mí también :-) sv
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Conseguido"
-@@ -3316,24 +3316,24 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSeñal desconocida %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "la memoria es consistente, la biblioteca tiene un bicho\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "memoria alterada antes del bloque de memoria asignado\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "memoria alterada pasado el final del bloque de memoria asignado\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "bloque liberado dos veces\n"
-
- # Revisar lo de bogus. creo que es eso.
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "valor de mcheck_status incorrecto, la biblioteca tiene un bicho\n"
-
-@@ -3372,6 +3372,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FICHERODEDATOS [FICHERODESALIDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Error desconocido"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3396,7 +3400,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Memoria agotada: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Error del sistema desconocido"
-
-@@ -3855,25 +3859,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrumpido por una señal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Error desconocido"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Modo de empleo: %s [-v especificación] nombre_de_variable [ruta]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "especificación \"%s\" desconocida"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "sin definir"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable no reconocida `%s'"
-@@ -3949,71 +3949,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "No hay ninguna coincidencia"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "La expresión regular es errónea"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Carácter de unión inválido"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nombre de clase de carácter inválido"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barra invertida extra al final `\\'"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Referencia hacia atrás inválida"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ó ^[ desemparejados"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ó \\( desemparejados"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ desemparejado"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contenido de \\{\\} inválido"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Final de rango inválido"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Memoria agotada"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "La expresión regular precedente es inválida"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fin no esperado de la expresión regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "La expresión regular es demasiado grande"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ó \\) desemparejados"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "No existe ninguna expresión regular anterior"
-
-@@ -4174,24 +4174,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuración del servicio"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "La enumeración no está soportada sobre %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obtiene entradas de la base de datos administrativa."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de datos admitidas:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "número incorrecto de argumentos"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de datos desconocida: %s\n"
-@@ -4221,77 +4221,81 @@
- msgid "invalid pointer size"
- msgstr "tamaño de puntero inválido"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: No se puede asignar memoria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Se están usando todos los puertos\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "conexión a la dirección %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Intentando %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (activando la salida de error estándar): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (activando la salida de error estándar): %m\n"
-
- # ¿en la configuración del servicio?, ¿del circuito?, ¿o dejarlo así?
- # Es de locos, estuve viendo las/los fuentes, preferí dejarlo así. em
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallo de protocolo al configurar el circuito\n"
-
- # ??? lo mismo que arriba
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallo de protocolo al configurar el circuito\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura insuficiente"
-
- # ## Lo mismo con lstat. sv
- # Antes decía: No se pudo obtener información (lstat) del fichero .rhosts
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat ha fallado"
-
- # Antes decía: .rhosts no es un fichero regular
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "no es un fichero regular"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "no se puede abrir"
-
- # ## Sugerencia: Añadir (fstat) después de información. sv
- # Antes decía: No se pudo obtener información (fstat) del fichero .rhosts
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat ha fallado"
-
- # Antes decía: El propietario del fichero .rhosts no es válido
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "propietario incorrecto"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "puede ser modificado por otros además del propietario"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hay un enlace duro en alguna parte"
-
-@@ -4539,115 +4543,115 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "No se puede recibir la respuesta al `broadcast'"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: la salida sobreescribiría %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: no se pudo abrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: al escribir el resultado %s: %m:"
-
- # FIXME: El espacio final.
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "no se puede encontrar el preprocesador de C: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "no se puede encontrar ningún preprocesador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: El preprocesador de C falló con la señal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: El preprocesador de C falló con un código de retorno %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "tipodered ilegal :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: demasiados defines\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: error de codificación de la lista de argumentos\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "el fichero `%s' ya existe y podría ser sobreescrito\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "No se puede especificar más de un fichero de entrada\n"
-
- # Se admiten sugerencias para MT-safe. sv
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "¡Esta implementación no admite código de nuevo estilo o `MT-safe'!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "No se puede usar la opción netid con la opción inetd\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "No se puede usar la opción netid sin TIRPC\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "No se pueden usar las opciones de la tabla con el nuevo estilo\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr ""
- "se necesita un \"fichero_de_entrada\" para las opciones de generación\n"
- "de plantillas\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "No se puede tener más de una opción de generación de fichero\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "modo de empleo: %s fichero_de_entrada\n"
-
- # Este mensaje tal vez habría que cortarlo por algún lado. sv
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnombre[=valor]] [-i tamaño] [-I [-K segundos]] [-Y camino] fichero_de_entrada\n"
-
- # Y este también. sv
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichero_de_salida] [fichero_de_entrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tipored]* [-o fichero_de_salida] [fichero_de_entrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o fichero_de_salida] [fichero_de_entrada]\n"
-@@ -5549,7 +5553,7 @@
- msgid "while allocating hash table entry"
- msgstr "al asignar espacio para la entrada en la tabla `hash'"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "no se puede ejecutar stat() sobre el fichero `%s': %s"
-@@ -5562,155 +5566,160 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "No se puede ejecutar nscd en modo seguro como usuario no privilegiado"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "al asignar espacio para el caché: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "no se puede abrir el `socket': %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "no se puede activar el `socket' para aceptar conexiones: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: petición recibida (Versión = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr ""
- "no se pueden manejar peticiones de la versión %d, la versión\n"
- "actual es %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "no se puede escribir el resultado: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "error al obtener el id de los llamantes: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "al aceptar la conexión: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura insuficiente mientras se leía la petición: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "la longitud de la clave en la petición es demasiado larga: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "se acabaron los datos mientras se leía la clave de petición: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Fallo al ejecutar nscd como usuario `%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "falló `getgrouplist'"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "falló `setgroups'"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "al asignar espacio para la copia de la clave"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "al asignar espacio para la entrada en el caché"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escritura insuficiente en %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de grupos"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "¡gid numérico inválido \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "No se ha encontrado \"%d\" en el caché de grupo"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de `hosts'"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lee datos de configuración de NOMBRE"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "No se divide y muestra los mensajes en la terminal actual"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NÚMERO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Comienza NÚMERO hilos"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Apagar el servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Muestra una estadística sobre la configuración actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida la caché especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLA,sí"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Utiliza una caché separada para cada usuario"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Daemon de Caché del Servicio de Nombres."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "ya está funcionando"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Solamente root puede usar esta opción"
-
-@@ -5800,22 +5809,22 @@
- "%15ld%% tasa de aciertos de caché\n"
- "%15s compruebe /etc/%s para cambios\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de contraseñas"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "¡uid numérico inválido \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "No se ha encontrado \"%d\" en el caché de contraseñas"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "no se puede crear la lista de capacidades"
-
-@@ -5867,7 +5876,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI del SO: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "No se puede abrir el fichero de caché %s\n"
-@@ -5914,17 +5923,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Falló el renombramiento de %s a %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "el objeto compartido no está abierto"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "¡El contador de generaciones TLS ha vuelto a cero! Por favor envíe un informe\n"
- "con el script 'glibcbug'"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "No se permite DST en programas SUID/SGID"
-
-@@ -5946,185 +5955,199 @@
- msgid "cannot allocate dependency list"
- msgstr "no se pudo asignar espacio para la lista de dependencias"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "no se puede asignar espacio para la lista de búsqueda de los símbolos"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "No se admiten filtros con LD_TRACE_PRELINKING"
-
- # Véase "A bug's life".
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "¡¡¡HAY UN BICHO EN EL ENLAZADOR DINÁMICO!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "error al cargar las bibliotecas compartidas"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "no se puede asignar el registro del nombre"
-
- # He intentado mejorarlo un poco ...
- #
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "no se puede crear un caché para la ruta de búsqueda"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "no se puede crear una copia RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "no se puede crear la matriz de la ruta de búsqueda"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "no se puede efectuar `stat' sobre el objeto compartido"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "no se puede abrir el dispositivo de `zero fill'"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "no se puede crear el descriptor del objeto compartido"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "no se pueden leer los datos del fichero"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "El alineamiento de la orden de carga ELF no está alineada a la página"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "La dirección/desplazamiento de la orden de carga ELF no está bien alineada"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "no se pueden crear las estructuras de datos TLS para el hilo inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "no se pueden manejar los datos de TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "fallo al asignar un segmento del objeto compartido"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "no se puede cargar el ejecutable dinámicamente"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "no se pueden cambiar las protecciones de memoria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "no se pueden asignar páginas de tipo `zero-fill'"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "no se puede asignar memoria para la cabecera del programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "el fichero objeto no tiene sección dinámica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "no se puede efectuar dlopen() sobre el objeto compartido"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "no se puede crear la lista de búsqueda"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "fichero demasiado corto"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "cabecera ELF inválida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "La codificación de los datos del fichero ELF no es `big-endian'"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "La codificación de los datos del fichero ELF no es `little-endian'"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "La identificación de versión del fichero ELF no encaja con la actual"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ABI del OS del fichero ELF inválida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Versión de ABI del fichero ELF inválida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "error interno"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "La versión del fichero ELF no coincide con la actual"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "El `phentsize' del fichero ELF no es el tamaño esperado"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "solamente pueden cargarse ET_DYN y ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "no se puede abrir el fichero del objeto compartido"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "error de relocalización"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "no se puede extender el ámbito global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "sustitución dinámica de un elemento por una cadena vacía"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "no se puede crear la lista de ámbito"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "no se pueden crear las estructuras de datos TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "modo inválido para dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr ""
-+"no se puede efectuar dlopen() sobre el objeto compartido: memoria estática TLS\n"
-+"demasiado pequeña"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "no se puede hacer el segmento escribible para su relocalización"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s el `profiler' no encontró ningún PLTREL en el objeto %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: el `profiler' se quedó sin memoria al ocultar el PLTREL de %s\n"
-
- # Se admiten sugerencias. sv
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "no se puede restaurar el `prot' del segmento después de la relocalización"
-
-@@ -6183,119 +6206,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura las asociaciones de tiempo de ejecución del enlazador dinámico"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Se ha dado la ruta `%s' más de una vez"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s no es un tipo de biblioteca conocido"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "No se puede efectuar `stat' sobre %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "No se puede efectuar `stat' sobre %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s no es un enlace simbólico\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "No se puede efectuar `unlink' sobre %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "No se puede crear un enlace de %s a %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (cambiado)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (SALTADO)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "No se encuentra %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "No se puede efectuar `lstat' sobre %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Descartado el fichero %s dado que no es un fichero regular."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "No se creó el enlace ya que no se encontró el soname para %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "No se puede abrir el directorio %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "No se puede efectuar `lstat' sobre %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "No se puede efectuar `stat' sobre %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "No se encontró el fichero de entrada %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "biblioteca libc5 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "biblioteca libc6 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "biblioteca libc4 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "las bibliotecas %s y %s en el directorio %s tienen el mismo soname pero distinto tipo."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "No se puede abrir el fichero de configuración `%s'"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "No se puede cambiar al directorio /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "No se puede leer el directorio de ficheros de caché %s\n"
---- glibc-2.3.2/po/fi.po 2002-12-02 13:11:53.000000000 -0500
-+++ glibc-2.3.2/po/fi.po 2003-03-15 15:02:12.000000000 -0500
-@@ -1,11 +1,16 @@
- # Finnish messages for GNU libc.
--# Copyright © 2002 Free Software Foundation, Inc.
--# Lauri Nurmi <lanurmi@iki.fi>, 2002.
-+# Copyright © 2003 Free Software Foundation, Inc.
-+# Lauri Nurmi <lanurmi@iki.fi>, 2002, 2003.
- # Thanks to:
- # * Timo Laine <tila at surfeu.fi> for suggestions
- #
- # "locale" on suomennettu uudella sanalla "maa-asetusto".
- #
-+# Pitäisikö signaalien nimien olla aktiivissa vai passiivissa?
-+# esim. Terminated = Päättynyt vai Päätetty?
-+# Aborted = Keskeytynyt vai Keskeytetty?
-+#
-+#
- # (parempia) suomennosehdotuksia kaivataan sanoille:
- # exchange -- vaihto? (mitä ihmettä?)
- # ellipsis -- sanankatkaisu? ATK-sanakirja sanoo näin.
-@@ -13,9 +18,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-12-02 05:20+0300\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-08 21:53+0200\n"
- "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
- "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
-@@ -79,7 +84,7 @@
-
- #: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
- msgid "Terminated"
--msgstr "Päättynyt"
-+msgstr "Päätetty"
-
- #: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
- msgid "Urgent I/O condition"
-@@ -87,11 +92,11 @@
-
- #: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
- msgid "Stopped (signal)"
--msgstr "Pysähtynyt (signaali)"
-+msgstr "Pysäytetty (signaali)"
-
- #: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
- msgid "Stopped"
--msgstr "Pysähtynyt"
-+msgstr "Pysäytetty"
-
- #: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
- msgid "Continued"
-@@ -103,11 +108,11 @@
-
- #: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
- msgid "Stopped (tty input)"
--msgstr "Pysähtynyt (päätteen syöte)"
-+msgstr "Pysäytetty (päätteen syöte)"
-
- #: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
- msgid "Stopped (tty output)"
--msgstr "Pysähtynyt (päätteen tuloste)"
-+msgstr "Pysäytetty (päätteen tuloste)"
-
- #: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
- msgid "I/O possible"
-@@ -268,7 +273,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "muunnos \"%s\" <-> \"%s\" ei ole tuettu"
-
- #: iconv/iconv_prog.c:246
-@@ -294,7 +299,7 @@
- msgid "error while closing output file"
- msgstr "virhe suljettaessa tulostiedostoa"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -302,9 +307,9 @@
- "Ilmoita ohjelmistovirheistä \"glibcbug\"-skriptillä (englanniksi) osoitteeseen <bugs@gnu.org>.\n"
- "Suomennoksen virheistä voit ilmoittaa listalle <translation-team-fi@lists.sourceforge.net>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -316,9 +321,9 @@
- "Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n"
- "ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -370,15 +375,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Jokaisen tiedoston käsittelyssä käytettävä etuliite"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "tulostiedostoa ei tuotettu varoituksen takia"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "lisättäessä hakupuuhun"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "tulostiedostoa ei voi luoda"
-
-@@ -1288,7 +1293,7 @@
- msgid "unterminated symbolic name"
- msgstr "päättämätön symbolinen nimi"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "virheellinen ohjaussarja"
-
-@@ -1318,39 +1323,39 @@
- msgid "trailing garbage at end of line"
- msgstr "roskaa rivin lopussa"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Tietoa järjestelmästä:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Näytä käytettävissä olevien maa-asetustojen nimet"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Näytä käytettävissä olevien merkistökarttojen nimet"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Muuta tulostemuotoa:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Näytä valittujen kategorioiden nimet"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Näytä valittujen avainsanojen nimet"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Näytä lisää tietoa"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hae maa-asetustokohtaiset tiedot."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1358,7 +1363,7 @@
- "NIMI\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "valmisteltaessa tulostetta"
-
-@@ -1489,16 +1494,16 @@
- msgid "cannot create temporary file"
- msgstr "tilapäistä tiedostoa ei voi luoda"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "arkistotiedostoa ei voi alustaa"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "arkistotiedoston kokoa ei voi muuttaa"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "arkiston otsaketta ei voi kartoittaa"
-
-@@ -1514,88 +1519,88 @@
- msgid "cannot map locale archive file"
- msgstr "maa-asetustoarkistoa \"%s\" ei voi kartoittaa"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "uutta arkistoa ei voi lukita"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "maa-asetustoarkistoa ei voi laajentaa"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "maa-asetustoarkiston tilaa ei voi muuttaa"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "uutta arkistoa ei voi nimetä uudelleen"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "maa-asetustoarkistoa \"%s\" ei voi avata"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "maa-asetustoarkiston \"%s\" tilaa ei voi lukea"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "maa-asetustoarkistoa \"%s\" ei voi lukita"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "arkiston otsaketta ei voi lukea"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "maa-asetusto \"%s\" on jo olemassa"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "ei voi lisätä maa-asetustoarkistoon"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "maa-asetustojen aliastiedostoa \"%s\" ei löydy"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Listätään %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "tiedoston \"%s\" tilan lukeminen epäonnistui: %s: ei huomioida"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" ei ole hakemisto: ei huomioida"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "hakemistoa \"%s\" ei voi avata: %s: ei huomioida"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "epätäydellinen valikoima maa-asetustotiedostoja hakemistossa \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kaikkia tiedostoja hakemistossa \"%s\" ei voi lukea: ei huomioida"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "maa-asetusto \"%s\" ei ole arkistossa"
-@@ -1664,8 +1669,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "välin yläraja ei ole pienempi kuin alaraja"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "muisti lopussa"
-
-@@ -1692,7 +1697,7 @@
- msgid "Another string for testing."
- msgstr "Toinen merkkijono testausta varten"
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NIMI"
-
-@@ -1736,7 +1741,7 @@
- msgid "duplicate set definition"
- msgstr "kaksinkertainen joukon määrittely"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "tämä on ensimmäinen määrittely"
-
-@@ -1754,44 +1759,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "tuntematon direktiivi \"%s\": riviä ei huomioida"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "kaksinkertainen viestinumero"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "kaksinkertainen viestitunniste"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "virheellinen merkki: viestiä ei huomioida"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "virheellinen rivi"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "väärän muotoinen rivi jätetty huomioimatta"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "tulostiedostoa \"%s\" ei voi avata"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "päättämätön viesti"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "avattaessa vanhaa katalogitiedostoa"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "muunnosmoduulit eivät ole käytettävissä"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "ohjausmerkkiä ei voi määrittää"
-
-@@ -1799,7 +1804,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: ei osaa käsitellä yli kahdeksaa argumenttia\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Onnistui"
-@@ -2988,23 +2993,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sTuntematon signaali %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "muisti on yhtenäinen, kirjastossa on ohjelmistovirheitä\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "muisti kärsinyt ennen varattuja lohkoja\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "muisti kärsinyt varattujen lohkojen jälkeen\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "lohko vapautettu kahdesti\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "väärä mcheck_status, kirjastossa on ohjelmavirhe\n"
-
-@@ -3040,6 +3045,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATATIEDOSTO [TULOSTIEDOSTO]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Tuntematon virhe"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3064,7 +3073,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Muisti lopussa: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Tuntematon järjestelmävirhe"
-
-@@ -3457,25 +3466,21 @@
- msgid "Interrupted by a signal"
- msgstr "Signaalin keskeyttämä"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Tuntematon virhe"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "tuntematon määrittely \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "määrittelemätön"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Tunnistamaton muuttuja \"%s\""
-@@ -3537,71 +3542,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ei vastaavuutta"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Virheellinen säännöllinen ilmaus"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Virheellinen vertailumerkki"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Virheellinen merkkiluokan nimi"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Kenoviiva lopussa"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Virheellinen takaisinviittaus"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Pariton [ tai [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Pariton ( tai \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Pariton \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Virheellinen \\{\\}:n sisältö"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Virheellinen välin loppu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Muisti lopussa"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Virheellinen edeltävä säännöllinen ilmaus"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Ennenaikainen säännöllisen ilmauksen loppu"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Liian suuri säännöllinen ilmaus"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Pariton ) tai \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Ei edeltävää säännöllistä lauseketta"
-
-@@ -3622,7 +3627,7 @@
-
- #: argp/argp-help.c:1189
- msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
--msgstr "Pakolliset tai valinnaiset argumentit pitkille optioille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille optioille."
-+msgstr "Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille."
-
- #: argp/argp-help.c:1572
- msgid "Usage:"
-@@ -3755,24 +3760,24 @@
- msgid "Service configuration to be used"
- msgstr "Käytettävät palveluasetukset"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "%s ei tue luettelemista\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hae merkintöjä hallinnollisesta tietokannasta."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Tuetut tietokannat:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "väärä määrä argumentteja"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Tuntematon tietokanta: %s\n"
-@@ -3801,68 +3806,72 @@
- msgid "invalid pointer size"
- msgstr "virheellinen osoittimen koko"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Muistin varaaminen ei onnistu\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Kaikki portit käytössä\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "yhdistä osoitteeseen %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Yritetään %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (alustetaan vakiovirhetuloste): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (alustetaan vakiovirhetuloste): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokollavirhe piiriasetuksissa\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: protokollavirhe piiriasetuksissa\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: vajaa luku"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "tiedoston tilan luku epäonnistui"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "ei ole tavallinen tiedosto"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "ei voi avata"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "tiedoston tilan luku epäonnistui"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "virheellinen omistaja"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "kirjoitusoikeus muulla kuin omistajalla"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "kovalinkitetty johonkin"
-
-@@ -4035,7 +4044,7 @@
-
- #: sunrpc/pm_getmaps.c:74
- msgid "pmap_getmaps rpc problem"
--msgstr "pmap_getmaps rpc-ongelma"
-+msgstr "pmap_getmaps-rpc-ongelma"
-
- #: sunrpc/pmap_clnt.c:72
- msgid "__get_myaddress: ioctl (get interface configuration)"
-@@ -4073,109 +4082,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Vastausta yleislähetykseen ei pystytä vastaanottamaan"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: tuloste ylikirjoittaisi tiedoston %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: tiedostoa %s ei voi avata: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: kirjoitettaessa tulostetta %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "C-esikääntäjää ei löydy: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C-esikääntäjä epäonnistui signaalilla %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C-esikääntäjä epäonnistui paluuarvolla %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "virheellinen verkkotyyppi :\"%s\"\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: liian monta määrittelyä\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: argumenttillistan koodausvirhe\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "tiedosto \"%s\" on olemassa ja saatetaan ylikirjoittaa\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Voidaan antaa vain yksi syötetiedosto!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Tämä toteutus ei tue uudentyyppistä MT-turvallista koodia!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Netid-lippua ei voi käyttää inetd-lipun kanssa!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Lippua netid ei voi käyttää ilman TIRPC:tä!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Table-lippuja ei voi käyttää \"newstyle\":n kanssa!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"syötetiedosto\" vaaditaan mallin luontilippuja varten.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Tiedostonluontilippuja voi olla vain yksi!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "käyttö: %s syötetiedosto\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnimi[=arvo]] [-i koko] [-I [-K sekuntit]] [-Y polku] syötetiedosto\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tulostiedosto] [syötetiedosto]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s verkkotyyppi]* [-o tulostiedosto] [syötetiedosto]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n verkkoid]* [-o tulostiedosto] [syötetiedosto]\n"
-@@ -5032,7 +5041,7 @@
- msgid "while allocating hash table entry"
- msgstr "varattaessa tilaa tiivistetaulukkomerkinnälle"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "tiedoston \"%s\" tilaa ei voi lukea: %s"
-@@ -5045,153 +5054,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Ohjelmaa nscd ei voi ajaa turvallisessa tilassa normaalin käyttäjän oikeuksilla"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "varattaessa välimuistia: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "pistoketta ei voi avata: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "vanhaa pyyntöversiota %d ei voi käsitellä; nykyinen versio on %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "tulosta ei voi kirjoittaa: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "hyväksyttäessä yhteyksiä: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "vajaa luku luettaessa pyyntöä: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "avaimen pituus pyynnössä liian pitkä: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "vajaa luku luettaessa pyyntöavainta: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Ohjelman nscd ajaminen käyttäjän \"%s\" oikeuksilla epäonnistui"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist epäonnistui"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups epäonnistui"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "varattaessa tilaa avainkopiolle"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "varattaessa tilaa välimuistimerkinnälle"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "vajaa kirjoitus tiedostossa %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "\"%s\" ei löytynyt ryhmävälimuistista!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Virheellinen numeerinen gid \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "\"%d\" ei löytynyt ryhmävälimuistista!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "\"%s\" ei löytynyt isäntävälimuistista!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lue asetukset tiedostosta NIMI"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Älä haaraudu ja näytä viestit nykyisessä tty:ssä"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "MÄÄRÄ"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Käynnistä MÄÄRÄ säiettä"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Sammuta palvelin"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Näytä nykyiset asetustilastot"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TAULUKKO"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Poista käytöstä määritelty välimuisti"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TAULUKKO,kyllä"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Käytä erillistä välimuistia jokaiselle käyttäjälle"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Nimipalvelun välimuistidemoni."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "on jo käynnissä"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Vain root voi käyttää tätä valitsinta!"
-
-@@ -5281,22 +5295,22 @@
- "%15ld%% välimuistiosuma-aste\n"
- "%15s tarkista muutokset tiedostosta /etc/%s\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "\"%s\" ei löytynyt salasanavälimuistista!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Virheellinen numeerinen uid \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "\"%d\" ei löytynyt salasanavälimuistista!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kykylistaa ei voi luoda"
-
-@@ -5347,7 +5361,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Välimuistitiedostoa %s ei voi avata\n"
-@@ -5393,15 +5407,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Uudelleennimeäminen %s -> %s epäonnistui"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "jaettu objekti ei ole avoin"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "TLS-luontilaskurin ylivuoto! Lähetä raportti \"glibcbug\"-skriptillä."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST ei ole sallittu SUID/SGID-ohjelmissa"
-
-@@ -5418,181 +5432,193 @@
- msgid "cannot allocate dependency list"
- msgstr "riippuvuuslistalle ei voi varata muistia"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "symbolihakulistalle ei voi varata muistia"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Suodattimet eivät ole tuettuja LD_TRACE_RPELINKING:in kanssa"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "DYNAAMISEN LINKITTÄJÄN OHJELMISTOVIRHE!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "virhe ladattaessa jaettuja kirjastoja"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "nimitietueelle ei voi varata muistia"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "hakupolulle ei voi luoda välimuistia"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "RUNPATH/RPATH-kopiota ei voi luoda"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "hakupolkutaulukkoa ei voi luoda"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "jaetun objektin tilaa ei voi lukea"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "nollatäyttölaitetta ei voi avata"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "jaettua objektikahvaa ei voi luoda"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "tiedoston dataa ei voi lukea"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-latauskomennon tasaus ei ole sivutasattu"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF-latauskomennon osoite/siirtymä ei ole tasattu oikein"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "alkusäikeelle ei voi varata TLS-tietorakenteita"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "TLS-dataa ei voi käsitellä"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "segmentin kartoitus jaetusta objektista epäonnistui"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "käynnistettävää tiedostoa ei voi ladata dynaamisesti"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "muistin suojausta ei voi muuttaa"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "nollatäytteisiä sivuja ei voi kartoittaa"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "ohjelman otsakkeelle ei voi varata muistia"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektitiedostossa ei ole dynaamista osaa"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "jaettua objektia ei voi avata funktiolla dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "hakulistaa ei voi luoda"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "tiedosto on liian lyhyt"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "virheellinen ELF-otsikko"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "ELF-tiedoston tavujärjestys ei ole \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "ELF-tiedoston tavujärjestys ei ole \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-tiedoston versiotunnus ei vastaa nykyistä"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-tiedoston OS ABI on virheellinen"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-tiedoston ABI-versio virheellinen"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "sisäinen virhe"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-tiedoston versio ei vastaa nykyistä"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-tiedoston phent-koko ei ole odotetun kokoinen"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "vain ET_DYN ja ET_EXEC voidaan ladata"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "jaettua objektitiedostoa ei voi avata"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "uudelleensijoitusvirhe"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "globaalia aluetta ei voi laajentaa"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "aluelistaa ei voi luoda"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "TLS-tietorakenteita ei voi luoda"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "virheellinen tila funktiolle dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "jaettua objektia ei voi avata funktiolla dlopen(): staattinen TLS-muisti on liian pieni"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "segmenttiä ei voi muuttaa kirjoitettavaksi uudelleensijoitusta varten"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiloija ei löytänyt PLTREL-kenttää objektista %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profiloijan muisti loppui varjostettaessa objektin %s PLTREL-kenttää\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen"
-
-@@ -5648,119 +5674,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Polku \"%s\" on annettu useammin kuin kerran"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s ei ole tunnettu kirjastotyyppi"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Tiedoston %s tilaa ei voi lukea\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s ei ole symbolinen linkki\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Tiedoston %s linkitystä ei voi poistaa"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Linkitys %s -> %s ei onnistu"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (muutettu)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (OHITETTU)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "%s ei löydy"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Hakemistoa %s ei voi avata"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Syötetiedostoa %s ei löydy.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Asetustiedostoa %s ei voi avata"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Juurihakemistoon / siirtyminen ei onnistu"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Välimuistihakemistoa %s ei voi avata\n"
---- glibc-2.3.2/po/fr.po 2002-10-12 22:01:44.000000000 -0400
-+++ glibc-2.3.2/po/fr.po 2003-03-15 15:02:12.000000000 -0500
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: GNU libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-12 12:00-0500\n"
-+"Project-Id-Version: GNU libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 08:00-0500\n"
- "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
- "Language-Team: French <traduc@traduc.org>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "conversions de « %s » vers « %s » ne sont pas supportées"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "conversions de « %s » et de , vers « %s » ne sont pas supportées"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "Erreur lors de la fermeture du fichier de sortie"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Rapporter toutes anomalies via le script « glibcbug » à <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -306,9 +306,9 @@
- "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
- "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Préfixe utilisé pour tous les accès fichiers"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "Aucun fichier de sortie généré en raison d'un avertissement déjà émis"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "lors d'une insertion dans un arbre de recherche"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "Ne peut générer le fichier de sortie"
-
-@@ -1288,7 +1288,7 @@
- msgid "unterminated symbolic name"
- msgstr "Nom symbolique incomplet"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "Séquence d'échappement invalide"
-
-@@ -1318,39 +1318,39 @@
- msgid "trailing garbage at end of line"
- msgstr "rebut en suffixe à la fin de la ligne"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Information système:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Écriture des noms disponibles des localisations"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Écriture des noms disponibles des tables de caractères"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Format de sortie de modification:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Écriture des noms sélectionnés des catégories"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Écriture des noms sélectionnés des mots clés"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Afficher plus informations"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Trouver l'information locale spécifique"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1358,7 +1358,7 @@
- "NOM\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "lors de la préparation de la sortie"
-
-@@ -1489,16 +1489,16 @@
- msgid "cannot create temporary file"
- msgstr "ne peut créer un fichier temporaire"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "ne peut initialiser le fichier d'archive"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "ne peut modifier la taille du fichier d'archive"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "ne peut mapper l'en-tête de l'archive"
-
-@@ -1514,88 +1514,88 @@
- msgid "cannot map locale archive file"
- msgstr "ne peut mapper l'archive de localisation"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "ne peut verrouiller la nouvelle archive"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "ne peut augmenter la taille du fichier de l'archive de localisation"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "ne peut modifier les protections de l'archive des localisations dont la taille a changé"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "ne peut changer le nom de la nouvelle archive"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "ne peut ouvrir l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "ne peut évaluer par `stat' l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "ne peut verrouiller l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "ne peut lire l'en-tête de l'archive"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "localisation « %s » existe déjà"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "ne peut l'ajouter à l'archive des localisations"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "alias du fichier des localisations « %s » non trouvé"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Ajout de %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "échec d'évaluation par stat() de « %s »: %s: ignoré"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "« %s » n'est pas un répertoire; ignoré"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "ne peut ouvrir le répertoire « %s »: %s: ignoré"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "jeu incomplet de fichiers dea localisations dans « %s »"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "ne peut lire tous les fichiers dans « %s »: ignoré"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "localisation « %s » n'est pas dans l'archive"
-@@ -1666,8 +1666,8 @@
- "La limite supérieure de l'intervalle n'est pas plus petite\n"
- "que la limite inférieure."
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "Mémoire épuisée"
-
-@@ -1693,7 +1693,7 @@
- msgid "Another string for testing."
- msgstr "Une autre chaîne pour fins de test."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOM"
-
-@@ -1737,7 +1737,7 @@
- msgid "duplicate set definition"
- msgstr "Double définitions de jeux"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "Ceci est la première définition."
-
-@@ -1755,44 +1755,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "Directive inconnue « %s »: ligne ignorée"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "Double messages du numéro"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "Double identificateurs de message"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "Caractères invalide: message ignoré"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "Ligne invalide"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "Ligne incorrecte ignorée"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "Ne peut ouvrir le fichier de sortie « %s »"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "Message incomplet"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "lors de l'ouverture du vieux fichier du catalogue"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "Module de conversion 'est pas disponible"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "Ne peut déterminer une séquence de caractère"
-
-@@ -1800,7 +1800,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: ne sait pas comment traiter plus de 8 arguments\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Succès"
-@@ -2989,23 +2989,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%ssignal inconnu %d.\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "La mémoire est consistente, la librairie est fautive.\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "Mémoire écrasée avant le bloc alloué\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "Mémoire écrasée après la fin du bloc alloué\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "Bloc libéré deux fois\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "Statut de « mcheck_status » erroné, la librarie est erronée.\n"
-
-@@ -3041,6 +3041,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFILE [FICHIER_DE_SORTIE]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Erreur inconnue"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3065,7 +3069,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: mémoire épuisée: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Erreur système inconnue"
-
-@@ -3465,25 +3469,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrompu par un signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Erreur inconnue"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Usage: %s [-v spécification] nom_de_variable [chemin_d_accès]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "spécification inconnu « %s »"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "indéfini"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable non reconnue « %s »"
-@@ -3545,71 +3545,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: l'option « -W %s » ne permet pas d'argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Pas de concordance"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Expression régulière invalide"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Caractère de fusionnement invalide"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nom de classe de caractères invalide"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barre oblique inverse en suffixe"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Référence arrière invalide"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Échec du pairage de [ ou de [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Échec du pairage de ( ou de \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Échec du pairage de \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contenu invalide de \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Fin d'intervalle invalide"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Mémoire épuisée"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Expression régulière précédente invalide"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fin prématurée de l'expression régulière"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Expression régulière trop grosse"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Échec du pairage de ) ou de \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Aucune expression régulière précédente"
-
-@@ -3765,24 +3765,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuration de service à être utilisée"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Énumération non supportée sur %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent() - obtenir les entrées de la base de données administratives"
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Base de données supportées:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "Mauvais nombre d'arguments"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de données inconnue: « %s »\n"
-@@ -3811,68 +3811,72 @@
- msgid "invalid pointer size"
- msgstr "Taille de pointeur invalide"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: ne peut allouer de la mémoire\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: tous les ports sont occupés\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "Connexion établie à l'adresse %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "On tente %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: écriture (configuration de stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (configuration de stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: échec du protocole dans la configuration du circuit\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: échec de protocole dans la configuration du circuit.\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lecture écourtée"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "Échec d'évaluation lstat()"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "N'est pas un fichier régulier"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "Ne peut ouvrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "Échec d'évaluation fstat()"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "Mauvais propriétaire"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "accessible en écriture par d'autres que le propriétaire"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "lien direct rencontré"
-
-@@ -4083,109 +4087,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Ne peut recevoir l'accusé réception à la requête faite par diffusion"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: la sortie écraserait %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: incapable d'ouvrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: lors de l'écriture sur la sortie %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "Ne peut trouver le préprocesseur C: %s\n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "Ne peut trouver un préprocesseur C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "« nettype » illégal :« %s »\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: trop de définitions\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: erreur dans la liste d'arguments de codage\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "Le fichier « %s » existe déjà et peut avoir été écrasé.\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Ne peut spécifier plus d'un fichier d'entrée!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Cette implantation ne supporte pas le nouveau style ou le code MT-safe!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Ne utiliser le sémaphore « netid » avec le sémaphore « inetd »!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Ne peut utiliser le sémaphore « netid » sans « TIRPC »!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Ne peut utiliser la table des sémaphores avec « newstyle »!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"fichier_d_entrée\" est requis pour la génération du gabarit des indicateurs.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Ne peut avoir plus d'un fichier de génération de sémaphores!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "usage: %s fichier_d_entrée\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dname[=valeur]] [-i taille] [-I [-K secondes]] [-Y chemin] fichier\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s type_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n id_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-@@ -5042,7 +5046,7 @@
- msgid "while allocating hash table entry"
- msgstr "lors de l'allocation d'entrées dans la table de hachage"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "Ne peut évaluer par stat() le fichier « %s »: %s"
-@@ -5055,153 +5059,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Ne peut exécuter nscd en mode sécuritaire en tant qu'usager sans privilège"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "lors de l'allocation de la cache: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "Ne peut ouvrir le socket: « %s »"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "Ne peut activer le socket pour accepter des connexions: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: requête reçue (Version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "Ne peut traiter une requête d'une vieille version %d; la version courante est %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "Ne peut écrire les résultats: « %s »"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "erreur lors de la recherche de l'identificateur de l'appelant: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "lors de l'acceptation de connexion: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "Lecture écourtée lors de la lecture de la requête: « %s »"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "La longueur de la clé de la requête est trop longue: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "Lecture écourtée lors de la lecture de la clé de requête: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Échec d'exécution de nscd en tant qu'usager « %s »"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "échec de getgrouplist"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "échec de setgroups"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "lors de l'allocation d'une copie de clé"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "lors de l'allocation d'entrée dans la cache"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "Écriture écourtée dans %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "N'a pas trouvé « %s » dans la cache du groupe!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "gid numérique invalide « %s »!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "N'a pas trouvé « %d » dans la cache du groupe!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "N'a pas trouvé « %s » dans la cache de la liste des hôtes!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lire les données de configuration du NOM"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Ne pas cloner le processus par fork() et ne pas afficher de message sur le tty courant"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NUMÉRO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Démarrage du NOMBRE de « threads »"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Arrêter le serveur"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Afficher les statistiques de la configuration courante"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLE"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalide la cache spécifiée"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLE,oui"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Utiliser une cache séparée pour chaque usager"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "« Daemon » de la cache du service de noms"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "déjà en exécution"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Seul ROOT est autorisé à utiliser cette option!"
-
-@@ -5291,22 +5300,22 @@
- "%15ld%% taux de repérage\n"
- "%15s vérifier /etc/%s pour les changements\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "N'a pas trouvé « %s » dans la cache des mots de passe!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "uid numérique invalide « %s »!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "N'a pas trouvé « %d » dans la cache des mots de passe!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "Ne peut créer une liste des possibilités"
-
-@@ -5357,7 +5366,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI Système d'exploitation: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Ne peut ouvrir le fichier de la cache %s\n"
-@@ -5403,15 +5412,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "ÉCHEC du changement de nom de %s vers %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "Objet partagé non ouvert"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "Compteut de génération TLS a bouclé! SVP expédier un rapport avec le script 'glibcbug'"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST non permis dans un programme SUID/SGID"
-
-@@ -5428,181 +5437,193 @@
- msgid "cannot allocate dependency list"
- msgstr "Ne peut allouer une liste de dépendances"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "Ne peut allouer la liste des symboles recherchées"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filtres non supportés avec LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "PROBLÈME DANS LE CHARGEUR DE LIENS DYNAMIQUES"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "erreur lors du chargement des librairies partagées"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "Ne peut allouer une nom d'enregistrement"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Ne peut créer une cache pour le chemin de recherche"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "Ne peut créer une copie RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "Ne peut créer un tableau des chemins de recherche"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "Échec évaluer par stat() l'objet partagé"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "Ne peut ouvrir le fichier de périphérique rempli de zéros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "Ne peut créer un objet descripteur partagé"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "Ne peut lire le fichier de données"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "Commande de chargement sur une page ELF qui n'est pas alignée"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "Commande de chargement sur une adresse ELF incorrectement alignée"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "ne peut allouer une structure de données TLS pour un thread initial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "ne peut traiter les données TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "Échec d'adressage (mapping) du segement de l'objet partagé"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "Ne peut dynamiquement charger un exécutable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "Ne peut modifier les protections de mémoire"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "Ne peut adresser des pages rempliez de zéros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Ne peut allouer de la mémoire pour une en-tête de programme"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "Le fichier objet n'a pas de section dynamique"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "L'objet partagé ne peut pas être ouvert via dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "Ne peut créer une liste de recherche"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "Fichier trop court"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "En-tête ELF invalide"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Données d'encodage du fichier ELF n'est pas big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Données d'encodage du fichier ELF n'est pas little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "Identificateur de version du fichier ELF ne concorde pas avec la version courante"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "Système d'exploitation du fichier ELF ABI invalide"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Version du fichier ELF ABI invalide"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "Erreur interne"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "Version du fichier ELF ne concorde pas avec la version courante"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "« Phentize » du fichier ELF ne concorde pas avec la taille prévue"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "Seuls ET_DYN et ET_EXEC peuvent être chargés"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "Ne peut ouvrir le fichier d'objet partagé"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "erreur de relocalisation"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "Ne peut augmenter l'étendue de la plage"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "La chaîne dynamique d'un jeton de substition est vide."
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "ne peut créer une liste d'étendue"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "ne peut créer les structures de données TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "mode invalide pour dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "l'objet partagé ne peut pas être ouvert via dlopen(): mémoire statiques TLS trop petite"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "Ne peut rendre le segment inscritible lors d'une relocalisation"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profileur n'a repéré aucun PLTREL dans l'objet %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profileur mémoire épuisée par l'ombrage PLTREL de %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "ne peut restaurer le segment prot après reloc"
-
-@@ -5658,119 +5679,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configuration dynamique des éditions de liens lors de l'exécution"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Chemin « %s » donné plus d'une fois"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s n'est pas un type de librairie connue"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Ne peut évaluer par stat %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Ne peut évaluer par stat %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s n,est pas un lien symbolique\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Ne peut enlever le lien (unlink) %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Ne peut établir un lien entre %s et %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (a été modifié)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (ESCAMOTÉ)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Ne peut repérer %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Ne peut évaluer par lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorer le fichier %s étant donné que ce n'est pas un fichier régulier"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Aucun lien créé étant donné qu'il n'a pas été repéré pour %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Ne peut ouvrir le répertoire %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Ne peut évaluer par lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Ne peut évaluer par stat %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Fichier d'entrée %s non repéré\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "librairie libc5 %s est dans le mauvais répertoire"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "librairie libc6 %s est dans el mauvais répertoire"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "librairie libc4 %s est dans le mauvais répertoire"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "Les librairies %s et %s du répertoire %s ont le même nom mais sont de types différents"
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Ne peut ouvrir le fichier de configuration %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Ne peut se positionner (chdir) dans /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Ne peut ouvrir le fichier de la cache des répertoires %s\n"
---- glibc-2.3.2/po/gl.po 2002-10-05 14:15:44.000000000 -0400
-+++ glibc-2.3.2/po/gl.po 2003-03-15 15:02:12.000000000 -0500
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-05 15:13+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 20:13+0100\n"
- "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
- "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "as conversións de `%s' a `%s' non están soportadas"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "as conversións de `%s' e a `%s' non están soportadas"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "erro ao pecha-lo ficheiro de saída"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Informe dos erros usando o script `glibcbug' a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -305,9 +305,9 @@
- "Isto é software libre; vexa o código fonte polas condicións de copia. NON hai\n"
- "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -359,15 +359,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefixo a empregar para tódolos accesos a ficheiro"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "non se producíu un ficheiro de saída porque se deron avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "ao inserir na árbore de busca"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "non se pode xera-lo ficheiro de saída"
-
-@@ -1277,7 +1277,7 @@
- msgid "unterminated symbolic name"
- msgstr "nome simbólico non rematado"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "secuencia de escape non válida"
-
-@@ -1307,39 +1307,39 @@
- msgid "trailing garbage at end of line"
- msgstr "lixo na fin da liña"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Información do sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Escribi-los nomes dos `locales' dispoñibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Escribi-los nomes dos mapas de caracteres dispoñibles"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifica-lo formato de saída:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Escribi-los nomes das categorías seleccionadas"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Escribi-los nomes das claves seleccionadas"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Amosar máis información"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obter información específica do `locale'."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1347,7 +1347,7 @@
- "NOME\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "ao prepara-la saída"
-
-@@ -1478,16 +1478,16 @@
- msgid "cannot create temporary file"
- msgstr "non se pode crea-lo ficheiro temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "non se pode inicializa-lo ficheiro de arquivo"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "non se pode cambia-lo tamaño do ficheiro de arquivo"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "non se pode mapea-la cabeceira do arquivo"
-
-@@ -1503,88 +1503,88 @@
- msgid "cannot map locale archive file"
- msgstr "non se pode mapea-lo ficheiro de arquivo de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "non se pode bloquea-lo novo arquivo"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "non se pode extende-lo ficheiro de arquivo de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "non se pode cambia-lo modo do arquivo de locales co novo tamaño"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "non se pode renomea-lo novo arquivo"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "non se pode abri-lo arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "non se pode facer stat do arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "non se pode bloquea-lo arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "non se pode le-la cabeceira do arquivo"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "o locale '%s' xa existe"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "non se pode engadir no arquivo de locales"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "non se atopou o ficheiro de alias de locales `%s'"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Engadindo %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "a chamada a stat de \"%s\" fallou: %s: ignórase"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" non é un directorio; ignórase"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "non se pode abr-lo directorio \"%s\": %s: ignorado"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "conxunto de ficheiros de locale incompleto en \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "non se poden ler tódolos ficheiros de \"%s\": ignorado"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "o locale \"%s\" non está no arquivo"
-@@ -1653,8 +1653,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "o límite superior do rango non é menor có límite inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "memoria esgotada"
-
-@@ -1680,7 +1680,7 @@
- msgid "Another string for testing."
- msgstr "Outra cadea para facer probas."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOME"
-
-@@ -1725,7 +1725,7 @@
- msgid "duplicate set definition"
- msgstr "definición de conxunto duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "esta é a primeira definición"
-
-@@ -1743,44 +1743,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "directiva `%s' descoñecida: liña ignorada"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "número de mensaxe duplicado"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "identificador de mensaxes duplicado"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "carácter non válido: mensaxe ignorada"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "liña non válida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "ignórase unha liña mal formada"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "non se pode abri-lo ficheiro de saída `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "mensaxe non rematada"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "ao abrir un antigo ficheiro de catálogo"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "os módulos de conversión non están dispoñibles"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "non se pode determina-lo carácter de escape"
-
-@@ -1788,7 +1788,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: non se sabe como manexar máis de 8 argumentos\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Éxito"
-@@ -2977,23 +2977,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSinal descoñecido %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "a memoria é consistente, a biblioteca ten erros\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "memoria alterada antes do bloque reservado\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "memoria alterada despois do bloque reservado\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "bloque liberado dúas veces\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "mcheck_status falso, a biblioteca ten erros\n"
-
-@@ -3029,6 +3029,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FICHEIRO_DATOS [FICHEIRO_SAÍDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Erro descoñecido"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3053,7 +3057,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Memoria esgotada: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Erro de sistema descoñecido"
-
-@@ -3446,25 +3450,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrompido por un sinal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Erro descoñecido"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Uso: %s [-v especificación] nome_variable [nome]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "especificación `%s' descoñecida"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "non definido"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable `%s' non recoñecida"
-@@ -3526,71 +3526,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: a opción `-W %s' non acepta parámetros\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Nada coincide"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Expresión regular incorrecta"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Carácter de ordenación incorrecto"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nome da clase de caracteres incorrecto"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barra invertida extra ó final"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Referencia cara a atrás incorrecta"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ou [^ sen parella"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ou \\( sen parella"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ sen parella"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contido de \\{\\} incorrecto"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Final do rango incorrecto"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Memoria esgotada"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Expresión regular precedente incorrecta"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Final prematura da expresión regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Expresión regular demasiado grande"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ou \\) sen parella"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Non hai unha expresión regular precedente"
-
-@@ -3744,24 +3744,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuración do servicio a empregar"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "A enumeración non está soportada en %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obte-las entradas da base de datos administrativa."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de datos soportadas:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "número de parámetros incorrecto"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de datos descoñecida: %s\n"
-@@ -3790,68 +3790,72 @@
- msgid "invalid pointer size"
- msgstr "tamaño de punteiro non válido"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Non se pode reservar memoria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmp: socket: Tódolos portos están sendo utilizados\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "conectarse ao enderezo %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Probando %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (configurando stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (configurando stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallo de protocolo no establecemento do circuito\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallo do protocolo no establecemento do circuito\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura curta"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "fallou a chamada a lstat"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "non é un ficheiro normal"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "non se pode abrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fallou a chamada a fstat"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "propietario incorrecto"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "escribible por alguén distinto do propietario"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "ten un enlace duro nalgún sitio"
-
-@@ -4062,109 +4066,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Non se pode recibi-la resposta á multidifusión"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: a saída sobreescribiría %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: non se pode abrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: ao escribir á saída %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "non podo atopa-lo preprocesador de C: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "non podo atopar un preprocesador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: O preprocesador de C fallou co sinal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: O preprocesador de C fallou co código de saída %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "tipo de rede ilegal :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: demasiadas definicións\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: erro de codificación da lista de parámetros\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "o ficheiro `%s' xa existe e pode ser sobreescrito\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "¡Non se pode indicar máis dun ficheiro de entrada!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "¡Esta implementación non soporta código de novo estilo ou seguro para MT!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "¡Non se pode utiliza-la opción netid coa opción inetd!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "¡Non se pode utiliza-la opción netid sen TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "¡Non se poden utiliza-las opcións de táboa con newstyle!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "Precísase dun ficheiro de \"entrada\" para as opcións de xeración de patróns.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Non se pode ter máis dunha opción de xeración de ficheiros\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "uso: %s ficheiro-de-entrada\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnome[=valor]] [-i tamaño] [-I [-K segundos]] [-Y rota] entrada\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o saída] [entrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tiporede]* [-o saída] [entrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n idrede]* [-o saída] [entrada]\n"
-@@ -5021,7 +5025,7 @@
- msgid "while allocating hash table entry"
- msgstr "ao reservar espacio para a entrada da táboa hash"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "non se pode facer stat() sobre o ficheiro `%s': %s"
-@@ -5034,153 +5038,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Non se pode executar nscd en modo seguro coma usuario non privilexiado"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "ao reservar espacio para a caché: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "non se pode abrir un socket: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "non se pode facer que o socket acepte conexións: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: petición recibida (Version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "non se pode manexa-la antiga petición versión %d; a versión actual é %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "non se pode escribi-lo resultado: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "erro ao obte-lo identificador do chamante: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "ao aceptar unha conexión: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura demasiado curta ao le-la petición: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "lonxitude da clave da petición demasiado grande: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "lectura demasiado curta ao le-la clave de petición: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Non se puido executar nscd coma o usuario '%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "fallou a chamada a getgrouplist"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "fallou a chamada a setgroups"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "ao reservar espacio para a copia da clave"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "ao reservar espacio para a entrada de caché"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escritura demasiado curta en %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "¡Non atopei \"%s\" na caché de grupos!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "¡Identificación numérica de grupo \"%s\" non válida!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "¡Non atopei \"%d\" na caché de grupos!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "¡Non atopei \"%s\" na caché de servidores!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Le-los datos de configuración de NOME"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Non bifurcar e visualiza-las mensaxes no terminal actual"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NÚMERO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Comezar NÚMERO fíos"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Apaga-lo servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Visualiza-la estatística da configuración actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TÁBOA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida-la caché especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TÁBOA,si"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Usar unha caché separada para cada usuario"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Demo de Cache de Servicio de Nomes."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "xa en execución"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "¡Só root pode usar esa opción!"
-
-@@ -5270,22 +5279,22 @@
- "%15ld%% tasa de acertos de caché\n"
- "%15s comprobe /etc/%s para ve-los cambios\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "¡Non atopei \"%s\" na caché de contrasinais!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "¡Identificación numérica de usuario \"%s\" non válida!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "¡Non atopei \"%d\" na caché de contrasinais!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "non se pode crea-la lista de capacidades"
-
-@@ -5336,7 +5345,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Non se puido abri-lo ficheiro de caché %s\n"
-@@ -5382,15 +5391,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Fallou o renomeado de %s a %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "o obxecto compartido non está aberto"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "O xerador de TLS deu unha volta completa. Informe co script 'glibcbug'."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "Non se admite DST en programas SUID/SGID"
-
-@@ -5407,181 +5416,193 @@
- msgid "cannot allocate dependency list"
- msgstr "non se pode localiza-la lista de dependencias"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "non se pode localiza-la lista de busca de símbolos"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Non se soportan os filtros con LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "¡¡¡ERRO NO LIGADOR DINÁMICO!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "erro ao carga-las bibliotecas compartidas"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "non se pode localiza-lo rexistro de nome"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "non se pode crea-la caché para a ruta de busca"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "non se pode crear unha copia de RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "non se pode crea-lo vector de rutas de busca"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "non se puido facer stat sobre o obxecto compartido"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "non se pode abrir un dispositivo de recheo de ceros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "non se pode crear un descriptor de obxecto compartido"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "non se pode le-los datos do ficheiro"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "O comando de carga ELF non está aliñado coa páxina"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "O enderezo/desprazamento do comando de carga ELF non está ben aliñado"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "non se poden crea-las estructuras de datos TLS para o fío inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "non se poden manexa-los datos TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "non se puido mapear un segmento dun obxecto compartido"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "non se pode cargar dinamicamente o executable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "non se poden cambia-las proteccións de memoria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "non se poden mapear páxinas de recheo de ceros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Non se pode reservar memoria para a cabeceira do programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "o ficheiro obxecto non ten unha sección dinámica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "non se pode facer dlopen() sobre o obxecto compartido"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "non se pode crea-la lista de busca"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "ficheiro pequeno de máis"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "cabeceira ELF non válida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "A codificación dos datos do ficheiro ELF non é \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "A codificación dos datos do ficheiro ELF non é \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "O identificador da versión do ficheiro ELF non coincide co actual"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ABI do SO do ficheiro ELF non válida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Versión do ABI do ficheiro ELF non válida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "erro interno"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "A versión do ficheiro ELF non coincide coa actual"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "O phentsize do ficheiro ELF non é o tamaño esperado"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "só se pode cargar ET_DYN e ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "non se pode abrir un ficheiro de obxecto compartido"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "erro de cambio de reserva"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "non se pode extende-lo alcance global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "substitución de elementos da cadea dinámica baleira"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "non se pode crea-la lista de alcance"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "non se poden crea-las estructuras de datos TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "modo incorrecto para dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "non se pode facer dlopen() sobre o obxecto compartido: a memoria TLS estática é pequena de máis"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "non se pode face-lo segmento gravable para o movemento"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: o perfilador non atopou PLTREL no obxecto %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: o perfilador esgotou a memoria sombreando o PLTREL de %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "non se pode restaura-la protección do segmento despois de movelo"
-
-@@ -5637,119 +5658,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura-las Asignacións de Tempo de Execución do Ligador Dinámico"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Proporcionouse a ruta `%s' máis dunha vez"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s non é un tipo de biblioteca coñecido"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Non se puido executar `stat' sobre %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Non se puido executar `stat' sobre %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s non é unha ligazón simbólica\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Non se puido borrar %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Non se puido ligar %s a %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (cambiou)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (OMITIDO)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Non se pode atopar %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Non se pode facer lstat sobre %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorouse o ficheiro %s porque non é un ficheiro normal"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Non se creou unha ligazón porque non se atopou o soname para %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Non se puido abri-lo directorio %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Non se pode facer lstat sobre %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Non se pode executar `stat' sobre %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Non se atopou o ficheiro de entrada %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "biblioteca libc5 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "biblioteca libc6 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "biblioteca libc4 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "as bibliotecas %s e %s do directorio %s teñen o mesmo soname pero diferente tipo."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Non se puido abri-lo ficheiro de configuración %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Non se pode cambiar ao directorio /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Non se puido abri-lo directorio de ficheiros caché %s\n"
---- glibc-2.3.2/po/sk.po 2002-10-14 04:29:01.000000000 -0400
-+++ glibc-2.3.2/po/sk.po 2003-03-15 15:02:13.000000000 -0500
-@@ -1,13 +1,13 @@
- # Slovak translation of the GNU-libc-messages.
--# Copyright (C) 1998-2001, 2002 Free Software Foundation, Inc.
--# Marcel Telka <marcel@telka.sk>, 2002.
-+# Copyright (C) 1998-2001, 2002, 2003 Free Software Foundation, Inc.
-+# Marcel Telka <marcel@telka.sk>, 2002, 2003.
- # Stanislav Meduna <stano@meduna.org>, 1998-2001.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-14 09:46+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 08:31+0200\n"
- "Last-Translator: Marcel Telka <marcel@telka.sk>\n"
- "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
- "MIME-Version: 1.0\n"
-@@ -260,7 +260,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "konverzie z `%s' a do `%s' nie sú podporované"
-
- #: iconv/iconv_prog.c:246
-@@ -286,15 +286,15 @@
- msgid "error while closing output file"
- msgstr "chyba poÄas zatvárania výstupného súboru"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Chyby hláste na adrese <bugs@gnu.org> - použite skript `glibcbug'.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -302,14 +302,14 @@
- "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"
- msgstr ""
--"Autorské práva (C) %s Free Software Foundation, Inc.\n"
-+"Autorské práva © %s Free Software Foundation, Inc.\n"
- "Toto je voľne šíriteľný softvér; pre podmienky kopírovania pozri zdrojový kód.\n"
- "Neposkytuje sa ŽIADNA záruka; ani Äo sa týka OBCHODOVATEĽNOSTI alebo VHODNOSTI\n"
- "NA KONKRÉTNY ÚČEL.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Predpona použitá pre všetky prístupy k súborom"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "výstupný súbor nebol vytvorený kvôli výskytu varovaní"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "poÄas vkladania do vyhľadávacieho stromu"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "nie je možné vygenerovať výstupný súbor"
-
-@@ -1278,7 +1278,7 @@
- msgid "unterminated symbolic name"
- msgstr "neukonÄené symbolické meno"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "neprípustná escape-sekvencia"
-
-@@ -1308,39 +1308,39 @@
- msgid "trailing garbage at end of line"
- msgstr "smetie na konci riadku"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systémové informácie:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Vypísať názvy dostupných národných prostredí"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Vypísať názvy dostupných znakových sád"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifikovať výstupný formát:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Vypísať názvy vybraných kategórií"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "VypísaÅ¥ názvy vybraných kľúÄových slov"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Vypisovať viac informácií"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Získať informáciu špecifickú pre národné prostredie."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1348,7 +1348,7 @@
- "NÃZOV\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "poÄas prípravy výstupu"
-
-@@ -1479,16 +1479,16 @@
- msgid "cannot create temporary file"
- msgstr "nie je možné vytvoriÅ¥ doÄasný súbor"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "nie je možné inicializovať archívny súbor"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "nie je možné zmeniť veľkosť archívneho súboru"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "nie je možné namapovaÅ¥ hlaviÄku archívu"
-
-@@ -1504,88 +1504,88 @@
- msgid "cannot map locale archive file"
- msgstr "nie je možné namapovať súbor archívu národného prostredia"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "nie je možné uzamknúť nový archív"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "nie je možné rozšíriť súbor archívu národného prostredia"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "nie je možné zmeniť mód archívu národného prostredia s upravenou veľkosťou"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "nie je možné premenovať nový archív"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "nie je možné otvoriť archív národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "nie je možné zistiť stav archívu národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "nie je možné uzamknúť archív národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "nie je možné preÄítaÅ¥ hlaviÄku archívu"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "národné prostredie `%s' už existuje"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "nie je možné pridať do archívu národného prostredia"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "súbor aliasu národného prostredia `%s' nebol nájdený"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Pridávam %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "zistenie stavu \"%s\" zlyhalo: %s: ignorované"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" nie je adresár; ignorované"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "nie je možné otvoriť adresár \"%s\": %s: ignorované"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "nekompletná skupina súborov národných prostredí v \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "nie je možné naÄítaÅ¥ vÅ¡etky súbory v \"%s\": ignorované"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "národné prostredie \"%s\" nie je v archíve"
-@@ -1654,8 +1654,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "horný limit rozsahu je menší ako dolný"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "nedostatok pamäti"
-
-@@ -1681,7 +1681,7 @@
- msgid "Another string for testing."
- msgstr "Iný reťazec pre testovanie."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NÃZOV"
-
-@@ -1725,7 +1725,7 @@
- msgid "duplicate set definition"
- msgstr "duplicitná definícia sady"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "toto je prvá definícia"
-
-@@ -1743,44 +1743,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "neznáma direktíva `%s' - riadok ignorovaný"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "duplicitné Äíslo správy"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "duplicitný identifikátor správy"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "neprípustný znak: správa ignorovaná"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "neprípustný riadok"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "nesprávny riadok ignorovaný"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "nie je možné otvoriť výstupný súbor `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "neukonÄená správa"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "poÄas otvárania starého katalógu"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "moduly konverzie nie sú dostupné"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "nie je možné urÄiÅ¥ znak escape"
-
-@@ -1788,7 +1788,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: nevie ako má spracovať viac ako 8 argumentov\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Úspech"
-@@ -2977,23 +2977,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sNeznámy signál %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "pamäť je konzistentná, knižnica je chybná\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "pamäť pred prideleným blokom prepísaná\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "pamäť za koncom prideleného bloku prepísaná\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok uvoľnený dvakrát\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "pochybný mcheck_status, knižnica má chyby\n"
-
-@@ -3029,6 +3029,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DÃTOVÃ_SÚBOR [VÃSTUPNÃ_SÚBOR]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Neznáma chyba"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3053,7 +3057,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Nedostatok pamäti: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Neznáma chyba systému"
-
-@@ -3446,25 +3450,21 @@
- msgid "Interrupted by a signal"
- msgstr "Prerušené signálom"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Neznáma chyba"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Použitie: %s [-v špecifikácia] meno_premennej [cesta]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "neznáma špecifikácia \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "nedefinované"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Nerozpoznaná premenná `%s'"
-@@ -3526,71 +3526,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: voľba `-W %s' nedovoľuje pouťiť argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Žiadna zhoda"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Neprípustný regulérny výraz"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Neprípustný znak triedenia"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Neprípustný názov triedy znakov"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Koncové spätné lomítko"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Neprípustný spätný odkaz"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Nepárová [ or [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Nepárová ( or \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Nepárová \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Neprípustný obsah \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Neprípustný koniec rozsahu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Pamäť vyÄerpaná"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Neprípustný predchádzajúci regulérny výraz"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "PredÄasný koniec regulérneho výrazu"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Regulérny výraz príliš veľký"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Nepárová ) or \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Žiadny predchádzajúci regulérny výraz"
-
-@@ -3744,24 +3744,24 @@
- msgid "Service configuration to be used"
- msgstr "Konfigurácia služby, ktorá má byť použitá"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Enumerácia %s nie je podporované\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - získať záznamy z administratívnej databázy."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Podporované databázy:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "chybný poÄet argumentov"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Neznáma databáza %s\n"
-@@ -3790,68 +3790,72 @@
- msgid "invalid pointer size"
- msgstr "neprípustná veľkostť ukazovateľa"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Nie je možné prideliť pamäť\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Všetky porty sú použité\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "spojiť sa s adresou %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Skúšam %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (nastavenie stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (nastavenie stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: chyba protokolu poÄas prípravy okruhu\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: chyba protokolu pri príprave okruhu\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: krátke Äítanie"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat zlyhal"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "nie je regulérny súbor"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "nie je možné otvoriť"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat sa nepodaril"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "chybný vlastník"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "zapisovateľný nielen pre vlastníka"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "niekde existuje pevný odkaz"
-
-@@ -4062,109 +4066,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Nie je možné prijaÅ¥ odpoveÄ na broadcast"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: výstup by prepísal %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: nie je možné otvoriť %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: poÄas zápisu výstupu %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "nie je možné nájsť preprocesor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "nie je možné nájsť žiadny C preprocesor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C preprocesor zlyhal so signálom %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C preprocesor zlyhal s výstupným kódom %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "chybný nettype :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: priveľa defines\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: chyba kódovania zoznamu argumentov\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "súbor `%s' už existuje a môže byť prepísaný\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Nie je možné zadať viac ako jeden vstupný súbor!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Táto implementácia nepodporuje nový Å¡týl alebo MT-bezpeÄný kód!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Príznaky netid a inetd nie je možné použiÅ¥ súÄasne!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Nie je možné použiť príznak netid bez TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Pri použití nového štýlu nie je možné použiť príznaky tabuľky!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"vst_súbor\" je vyžadovaný pri použití príznakov tvorby vzoru.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Nie je možné použiť viac ako jeden príznak tvorby súboru!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "použitie: %s vstupný_súbor\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnázov[=hodnota]] [-i veľkosť] [-I [-K sekundy]] [-Y cesta] vst_súbor\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o výst_súbor] [vst_súbor]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nettype]* [-o výst_súbor] [vst_súbor]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o výst_súbor] [vst_súbor]\n"
-@@ -5027,7 +5031,7 @@
- msgid "while allocating hash table entry"
- msgstr "poÄas pridelenia záznamu hash-tabuľky"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "nie je možné vykonať stat() súboru `%s': %s"
-@@ -5040,153 +5044,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Nie je možné spustiÅ¥ nscd v bezpeÄnom režime ako neprivilegovaný používateľ"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "poÄas pridelenia cache: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "nie je možné otvoriť socket `%s'"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "nie je možné povoliť socketu prijímať spojenia: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: žiadosť prijatá (verzia = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "nie je možné spracovať starú verziu žiadosti %d; aktuálna verzia je %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "nie je možné zapísať výsledok: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "chyba pri získaní id volajúceho: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "poÄas prijatia spojenia: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "neúplné Äítanie žiadosti: `%s'"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "dĺžka kľúÄa v žiadosti príliÅ¡ dlhá: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "neúplné Äítanie kľúÄa žiadosti: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Zlyhalo spustenie nscd ako používateľ '%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist zlyhalo"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups zlyhalo"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "poÄas pridelenia kópie kľúÄa"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "poÄas pridelenia záznamu cache"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "neúplný zápis v %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Nenájdené \"%s\" v cache skupín!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Neplatné Äíselné gid \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Nenájdené \"%d\" v cache skupín!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Nenájdené \"%s\" v cache poÄítaÄov!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "NaÄítaÅ¥ údaje o konfigurácii z NÃZOV"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Nespúšťať samostatný proces a zobrazovať správy na aktuálnom termináli"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "POÄŒET"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Spustiť POČET vlákien"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Zastaviť server"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Vypísať štatistiku aktuálnej konfigurácie"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABUĽKA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Zneplatniť zadanú cache"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABUĽKA,áno"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Použiť samostatnú cache pre každého používateľa"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Démon cache služby názvov."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "už beží"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Táto voľba je dostupná iba superužívateľovi!"
-
-@@ -5276,22 +5285,22 @@
- "%15ld%% úspešnosť cache\n"
- "%15s skontrolujte /etc/%s na zmeny\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Nenájdené \"%s\" v cache hesiel!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Neplatné Äíselné uid \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Nenájdené \"%d\" v cache hesiel!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "nie je možné vytvoriÅ¥ zoznam zluÄiteľnosti"
-
-@@ -5342,7 +5351,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Nie je možné otvoriť cache súbor %s\n"
-@@ -5388,15 +5397,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Premenovanie %s na %s zlyhalo"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "zdieľaný objekt nie je otvorený"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "PoÄítadlo generovania TLS pretieklo! Prosím poÅ¡lite správu pomocou skriptu 'glibcbug'."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST nie je pre SUID/SGID programy povolené"
-
-@@ -5413,181 +5422,193 @@
- msgid "cannot allocate dependency list"
- msgstr "nie je možné prideliť pamäť pre zoznam závislostí"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "nie je možné prideliť pamäť pre vyhľadávací zoznam symbolov"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filtre nie sú podporované s LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "CHYBA V DYNAMICKOM LINKERI!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "chyba poÄas naÄítavania zdieľaných knižníc"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "nie je možné prideliť pamäť pre záznam názvu"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Nie je možné vytvoriť cache pre hľadanie v ceste"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "nie je možné vytvoriť kópiu RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "nie je možné vytvoriť pole ciest"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "nepodarilo sa zistiť stav zdieľaného objektu"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "nie je možné otvoriť zariadenie pre naplnenie nulami"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "nie je možné vytvoriť deskriptor zdieľaného objektu"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "nie je možné naÄítaÅ¥ údaje súboru"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF zarovnanie príkazu nie je zarovnané na stránku"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF zavádzacia adresa/posunutie nie je správne zarovnaná"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "nie je možné prideliÅ¥ dátové Å¡truktúry TLS pre poÄiatoÄné vlákno"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "nie je možné spracovať TLS dáta"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "nepodarilo sa namapovať segment zo zdieľaného objektu"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "nie je možné dynamicky naÄítaÅ¥ spustiteľný súbor"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "nie je možné zmeniť ochranu pamäti"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "nie je možné namapovať stránky vyplnené nulami"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "nie je možné prideliÅ¥ pamäť pre hlaviÄku programu"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektový súbor neobsahuje žiadnu dynamickú sekciu"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "nie je možné vytvoriť vyhľadávací zoznam"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "súbor je príliš krátky"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "neprípustná ELF hlaviÄka"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kódovanie dát v ELF súbore nie je big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kódovanie dát v ELF súbore nie je little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "Identifikácia verzie ELF súboru sa nezhoduje s aktuálnou"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "Neplatný OS ABI ELF súboru"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Neplatná verzia ABI ELF súboru"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "interná chyba"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "Verzia súboru ELF sa nezhoduje s aktuálnou"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "phentsize ELF súboru nie je oÄakávaná"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "iba ET_DYN a ET_EXEC môžu byÅ¥ naÄítané"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "nie je možné otvoriť súbor zdieľaného objektu"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "chyba relokácie"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "nie je možné rozšíriť globálny rozsah"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "prázdna substitúcia tokenu dynamického reťazca"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "nie je možné vytvoriť zoznam pôsobnosti"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "nie je možné dátové štruktúry TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "neprípustný mód pre dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen(): statická pamäť TLS je príliš malá"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "nie je možné zmeniť segment na zapisovateľný pre relokáciu"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiler nenašiel PLTREL v objekte %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profiler vyÄerpal pamäť pri vytváraní kópie PLTREL z %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "nie je možné obnoviť segment prot po reloc"
-
-@@ -5643,119 +5664,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurácia runtime väzieb dynamického linkera."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Cesta `%s' bola zadaná viac ako raz"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s nie je známy typ knižnice"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Zlyhal stat %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Zlyhal stat %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s nie je symbolický odkaz\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Nie je možné odstrániť %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Nie je možné vytvoriť odkaz %s na %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (zmenené)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (VYNECHANÉ)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Nie je možné nájsť %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Zlyhal lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Súbor %s ignorovaný, keÄže nie je regulérnym súborom."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Odkaz nebol vytvorený, keÄže pre %s nebolo možné nájsÅ¥ soname"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Nie je možné otvoriť adresár %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Zlyhal lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Zlyhal stat %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Vstupný súbor %s nebol nájdený.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "knižnice %s a %s v adresári %s majú rovnaké soname, ale odlišný typ."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Nie je možné otvoriÅ¥ konfiguraÄný súbor %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Nie je možné zmeniť adresár na /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Nie je možné otvoriť adresár cache súboru %s\n"
---- glibc-2.3.2/po/sv.po 2002-10-14 16:03:36.000000000 -0400
-+++ glibc-2.3.2/po/sv.po 2003-03-15 15:02:13.000000000 -0500
-@@ -1,13 +1,13 @@
- # GNU libc message catalog for swedish
--# Copyright © 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
--# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002.
--# Revision: 1.43
-+# Copyright © 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
-+# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003.
-+# Revision: 1.46
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-14 21:09+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-04 18:46+0100\n"
- "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
- "Language-Team: Swedish <sv@li.org>\n"
- "MIME-Version: 1.0\n"
-@@ -260,7 +260,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "konvertering från \"%s\" och till \"%s\" stöds ej"
-
- #: iconv/iconv_prog.c:246
-@@ -286,7 +286,7 @@
- msgid "error while closing output file"
- msgstr "fel vid stängning av utfilen"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -294,9 +294,9 @@
- "Rapportera fel med programmet \"glibcbug\" till <bugs@gnu.org>.\n"
- "Rapportera fel på översättningen till <sv@li.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -309,9 +309,9 @@
- "INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n"
- "ÄNDAMÅL.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -363,15 +363,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefix att använda för alla filåtkomster"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "ingen utfil skapad på grund av varningar"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "vid insättning i sökträd"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "kan inte generera utfil"
-
-@@ -1283,7 +1283,7 @@
- msgid "unterminated symbolic name"
- msgstr "oavslutat symboliskt namn"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "ogiltig kontrollsekvens"
-
-@@ -1313,39 +1313,39 @@
- msgid "trailing garbage at end of line"
- msgstr "avslutande skräp vid radslutet"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systeminformation:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Skriv namn på tillgängliga lokaler"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Skriv namn på tillgängliga teckenuppsättningar"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Ändra utdataformat:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Skriv namn på valda kategorier"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Skriv namn på valda nyckelord"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Skriv mer information"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hämta lokal-specifik information"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1353,7 +1353,7 @@
- "NAMN\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "när utdata förbereddes"
-
-@@ -1484,16 +1484,16 @@
- msgid "cannot create temporary file"
- msgstr "kan inte skapa temporärfil"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "kan inte initiera arkivfil"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "kan inte byta storlek på arkivfil"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "kan inte läsa arkivhuvud med mmap"
-
-@@ -1509,88 +1509,88 @@
- msgid "cannot map locale archive file"
- msgstr "kan inte öppna lokalarkivfil med mmap"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "kan inte låsa nytt arkiv"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "kan inte utöka lokalarkivfil"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "kan inte ändra åtkomstläge på storleksändrat lokalarkiv"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "kan inte byta namn på nytt arkiv"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "kan inte öppna lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "kan inte ta status på lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "kan inte låsa lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "kan inte läsa arkivhuvud"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "lokal \"%s\" finns redan"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "kan inte lägga till till lokalarkiv"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "fil \"%s\" för lokalalias hittas inte"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Lägger till %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "ta status på \"%s\" misslyckades: %s: ignorerad"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" är inte en katalog, ignorerad"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "kan inte öppna katalog \"%s\": %s: ignorerad"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "ofullständig uppsättning av lokalfiler i \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kan inte läsa alla filer i \"%s\": ignorerad"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "lokal \"%s\" finns inte i arkivet"
-@@ -1659,8 +1659,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "övre gräns i intervall är inte mindre än undre gräns"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "minne slut"
-
-@@ -1686,7 +1686,7 @@
- msgid "Another string for testing."
- msgstr "En till sträng för test."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NAMN"
-
-@@ -1730,7 +1730,7 @@
- msgid "duplicate set definition"
- msgstr "dubblerad definition av mängd"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "detta är den första definitionen"
-
-@@ -1748,44 +1748,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "okänt direktiv \"%s\": rad ignorerad"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "dubblerat meddelandenummer"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "dubblerad meddelandeidentifierare"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "ogiltigt tecken: meddelandet ignorerat"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "ogiltig rad"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "felaktig rad ignorerad"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "kan inte öppna utfil \"%s\""
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "oavslutat meddelande"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "när gammal katalogfil öppnades"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "konverteringsmoduler inte tillgängliga"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "kan inte avgöra kontrolltecken"
-
-@@ -1793,7 +1793,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: kan inte hantera mer än 8 argument\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Lyckat"
-@@ -2982,23 +2982,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sOkänd signal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "minnet är konsistent, biblioteket är felaktigt\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "minnet förstört före allokerat block\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "minnet förstört efter slutet på allokerat block\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "block frigjort två gånger\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "felaktig mcheck_status, biblioteket är felaktigt\n"
-
-@@ -3034,6 +3034,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFIL [UTFIL]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Okänt fel"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3058,7 +3062,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Minnet slut: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Okänt systemfel"
-
-@@ -3451,25 +3455,21 @@
- msgid "Interrupted by a signal"
- msgstr "Avbruten av en signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Okänt fel"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Användning: %s [-v specifikation] variabelnamn [sökväg]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "okänd specifikation \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "odefinierad"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Okänd variabel \"%s\""
-@@ -3531,71 +3531,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ingen träff"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Ogiltigt reguljärt uttryck"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Ogiltigt kollationeringstecken"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Ogiltigt teckenklassnamn"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Avslutande omvänt snedstreck"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Ogiltig bakåtreferens"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Obalanserade [ eller [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Obalanserade ( eller \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Obalanserad \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Ogiltigt innehåll i \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Ogiltigt intervallslut"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Minnet slut"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Ogiltigt föregående reguljärt uttryck"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "För tidigt slut på reguljärt uttryck"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Reguljärt uttryck för stort"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Obalanserade ) eller \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Inget föregående reguljärt uttryck"
-
-@@ -3749,24 +3749,24 @@
- msgid "Service configuration to be used"
- msgstr "Tjänstekonfiguration som ska användas"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Uppräkning stöds inte på %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hämta poster från administrativ databas"
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Databaser som stöds:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "fel antal argument"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Okänd databas: %s\n"
-@@ -3795,68 +3795,72 @@
- msgid "invalid pointer size"
- msgstr "ogiltig pekarstorlek"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Kan inte allokera minne\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: uttag (socket): Alla portar används\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "anslut till adress %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Provar %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write: (sätter upp standard fel): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (sätter upp standard fel): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokollfel i förbindelseuppsättning\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "uttag (socket): protokollfel i förbindelseuppsättning\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: läsning gav för lite data"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "misslyckades ta status (lstat)"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "inte en normal fil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "kan inte öppna"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "misslyckades ta status (fstat)"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "olämplig ägare"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "skrivbar för andra än ägaren"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hårdlänkad någonstans"
-
-@@ -4067,109 +4071,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Kan inte ta emot svar på utsändning"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: utdata skulle skriva över %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: kan inte öppna %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: när resultatet %s skrevs: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "kan inte hitta C preprocessor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "kan inte hitta någon C preprocessor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C preprocessorn avslutades med signal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C preprocessorn avslutades med kod %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "otillåten nättyp: \"%s\"\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: för många \"define\"\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: arglist kodningsfel\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "fil \"%s\" finns redan och kan bli överskriven\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Kan inte ange mer än en infil!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Denna implementation stödjer inte \"newstyle\" eller trådsäker kod!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Kan inte ange netid-flaggan tillsammans med inetd-flaggan!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Kan inte ange netid-flaggan utan TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Kan inte ange tabellflaggor med ny stil\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"infil\" är obligatorisk för mallgenereringsflaggor.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Kan inte ha mer än en filgenereringsflagga!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "användning: %s infil\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnamn[=värde]] [-i storlek] [-I [-K sekunder]] [-Y sökväg] infil\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o utfil] [infil]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nättyp]* [-o utfil] [infil]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n nätid]* [-o utfil] [infil]\n"
-@@ -4698,7 +4702,7 @@
-
- #: nis/nis_print.c:239
- msgid "\tAccess rights: "
--msgstr "\tÅtkomsträttigheter: "
-+msgstr "\tRättigheter : "
-
- #: nis/nis_print.c:252
- msgid "Group Flags :"
-@@ -4710,7 +4714,7 @@
- "Group Members :\n"
- msgstr ""
- "\n"
--"Guppmedlemmar:\n"
-+"Gruppmedlemmar:\n"
-
- #: nis/nis_print.c:266
- #, c-format
-@@ -4725,7 +4729,7 @@
- #: nis/nis_print.c:268
- #, c-format
- msgid "Character Separator : %c\n"
--msgstr "Teckenseparator: %c\n"
-+msgstr "Teckenseparator : %c\n"
-
- #: nis/nis_print.c:269
- #, c-format
-@@ -4747,7 +4751,7 @@
-
- #: nis/nis_print.c:277
- msgid "\t\tAccess Rights : "
--msgstr "\t\tÅtkomsträttigheter: "
-+msgstr "\t\tRättigheter : "
-
- #: nis/nis_print.c:286
- msgid "Linked Object Type : "
-@@ -4798,7 +4802,7 @@
-
- #: nis/nis_print.c:324
- msgid "Access Rights : "
--msgstr "Åtkomsträttigheter: "
-+msgstr "Rättigheter : "
-
- #: nis/nis_print.c:326
- msgid ""
-@@ -4811,7 +4815,7 @@
- #: nis/nis_print.c:329
- #, c-format
- msgid "Creation Time : %s"
--msgstr "Skapad: %s"
-+msgstr "Skapad : %s"
-
- #: nis/nis_print.c:331
- #, c-format
-@@ -5026,7 +5030,7 @@
- msgid "while allocating hash table entry"
- msgstr "när hashtabellspost allokerades"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "kan inte ta status på fil \"%s\": %s"
-@@ -5039,153 +5043,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Kan inte köra nscd i säkert läge som opriviligierad användare"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "när cache-post allokerades: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "kan inte öppna uttag (socket): %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: begäran mottagen (version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "Kan inte hantera äldre förfrågansversion %d, nuvarande version är %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "kan inte skriva resultat: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "kunde inte hämta anropandes identitet: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "när förbindelse accepterades: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "fattas data vid läsning av begäran: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "nyckellängd i begäran för lång: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "fattas data vid läsning av begäransnyckel: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Misslyckades att köra nscd som användare \"%s\""
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist misslyckades"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups misslyckades"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "när nyckelkopia allokerades"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "när cache-post allokerades"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "ofullständig skrivning i %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Hittar inte \"%s\" i gruppcache!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Ogiltigt numeriskt gruppid (gid) \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Hittar inte \"%d\" i gruppcache!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Hittar inte \"%s\" i värdcache!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Läs konfigurationsdata från NAMN"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Skapa inte barnprocess, visa meddelanden på nuvarande tty"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "ANTAL"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Starta ANTAL trådar"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Avsluta servern"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Skriv ut nuvarande konfigurationsstatistik"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABELL"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalidera den angivna cachen"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABELL,yes"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Använd separat cache för varje användare"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Namntjänst cache-demon"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "kör redan"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Bara root har tillåtelse att använda denna operation!"
-
-@@ -5275,22 +5284,22 @@
- "%15ld%% cache träffprocent\n"
- "%15s kontrollera /etc/%s för ändringar\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Hittar inte \"%s\" i lösenordscache!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Ogiltigt numeriskt användarid (uid) \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Hittar inte \"%d\" i lösenordscache!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kan inte skapa egenskapslista"
-
-@@ -5341,7 +5350,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Kan inte öppna cache-fil \"%s\"\n"
-@@ -5387,17 +5396,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Namnbyte på %s till %s misslyckades"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "delat objekt är inte öppnat"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "Generationsräknare för TLS slog runt! Var snäll och skicka felrapport med\n"
- "\"glibcbug\"-skriptet"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST inte tillåten i SUID/SGID-program"
-
-@@ -5416,181 +5425,193 @@
- msgid "cannot allocate dependency list"
- msgstr "kan inte allokera beroendelista"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "kan inte allokera söklista för symboler"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filter stöds ej med LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "FEL I DYNAMISK LÄNKARE!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "fel när delade bibliotek laddades"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "kan inte allokera namnpost"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "kan inte skapa cache för sökväg"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "kan inte skapa kopia av RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "kan inte skapa säkvägslista"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "kan inte ta status på delat objekt"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "kan inte öppna nollfyllnadsenhet"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "kan inte skapa delad objektdeskriptor"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "kan inte läsa fildata"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-laddkommando är inte på sidgräns"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "Address/position för ELF-laddkommando är inte på rätt bytegräns"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "kan inte skapa TLS-datastrukturer för första tråden"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "kan inte hantera TLS-data"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "misslyckades att mappa segment från delat objekt"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "kan inte ladda exekverbar fil dynamiskt"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "kan inte ändra minnesskydd"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "kan inte mappa nollfyllda sidor"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Kan inte allokera minne för programhuvud"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektfilen har ingen dynamisk sektion"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "delat objekt kan inte göras dlopen() på"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "kan inte skapa söklista"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "fil för kort"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ogiltigt ELF-huvud"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kodning för ELF-fildata är inte \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kodning för ELF-fildata är inte \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-filens versionsidentitet stämmer inte med nuvarande"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-fil har felaktig version på OS-ABI"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-fil har felaktig version på ABI"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "internt fel"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-filens version stämmer inte med nuvarande"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-filens värde på \"phentsize\" är inte den förväntade"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "bara ET_DYN och ET_EXEC kan laddas"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "kan inte öppna delad objektfil"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "fel vid relokering"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "kan inte utöka globalt område"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "substitution av \"dynamic string token\" är tom"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "kan inte skapa omfångslista"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "kan inte skapa datastrukturer för TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "ogiltiga flaggor för dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "delat objekt kan inte göras dlopen() på: statiskt TLS-minne är för litet"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "kan inte göra segment skrivbart för relokering"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profileraren hittade inga PLTREL i objekt %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profileraren fick slut minne för kopiering av PLTREL i %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "kan inte återställa segmenträttigheter efter relokering"
-
-@@ -5646,119 +5667,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurera bindningar för den dynamiska länkaren."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Sökväg \"%s\" given mer än en gång"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s är inte en känd bibliotekstyp"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Kan inte ta status på %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Kan inte ta status på %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s är inte en symbolisk länk\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Kan inte ta bort (unlink) %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Kan inte länka %s till %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (ändrad)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (HOPPAR ÖVER)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Kan inte hitta %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Kan inte ta länkstatus på %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Ingen länk skapad eftersom \"soname\" inte hittades för %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Kan inte öppna katalog %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Kan inte ta status (lstat) på %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Kan inte ta status på %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Hittar inte infil %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "bibliotek %s och %s i katalog %s har samma \"soname\" men olika typ."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Kan inte öppna konfigurationsfil \"%s\""
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Kan inte byta katalog till /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Kan inte läsa cache-filkatalog \"%s\"\n"
---- glibc-2.3.2/po/tr.po 2002-10-05 14:15:39.000000000 -0400
-+++ glibc-2.3.2/po/tr.po 2003-03-15 15:02:13.000000000 -0500
-@@ -1,13 +1,13 @@
- # Turkish translations for GNU libc messages.
--# Copyright (C) 2002 Free Software Foundation, Inc.
--# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, 2002.
-+# Copyright (C) 2003 Free Software Foundation, Inc.
-+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2003.
- # Onur Tolga ÅžehitoÄŸlu <onur@lcsl.metu.edu.tr>, 1998.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-05 17:08+0300\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-04 05:51+0200\n"
- "Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
- "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
-@@ -261,8 +261,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "`%s'e ve ondan `%s'e dönüşüm desteklenmiyor"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "`%s'den ve `%s'e dönüşüm desteklenmiyor"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -287,7 +287,7 @@
- msgid "error while closing output file"
- msgstr "çıktı dosyası kapatılırken hata"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -296,9 +296,9 @@
- "ise `glibcbug' betiğini kullanarak oluşturacağınız hata raporuyla\n"
- "<bugs@gnu.org> adresine bildiriniz.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -311,9 +311,9 @@
- "HİÇBİR garanti yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ KULLANIMINIZA\n"
- "UYGUNLUĞU için bile garanti verilmez.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -365,15 +365,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Tüm dosya erişimlerinde kullanılan önek"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "uyarı yayınlandığından üretilen bir çıktı dosyası yok"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "arama ağacına eklenirken"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "çıktı dosyası üretilemiyor"
-
-@@ -1283,7 +1283,7 @@
- msgid "unterminated symbolic name"
- msgstr "sonlandırılmamış sembolik isim"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "geçersiz escape dizisi"
-
-@@ -1313,39 +1313,39 @@
- msgid "trailing garbage at end of line"
- msgstr "satır sonu bozuk"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Sistem bilgileri:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Mevcut yerellerin isimlerini yazar"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Mevcut karakter eÅŸlemlerin isimlerini yazar"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Değiştirme çıktı biçemi:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Seçilmiş kategorilerin isimlerini yazar"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Seçilmiş anahtar kelimelerin isimlerini yazar"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Daha fazla ileti basar"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Dile özel bilgiler alınır"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1353,7 +1353,7 @@
- "Ä°SÄ°M\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "çıktıyı hazırlarken"
-
-@@ -1484,16 +1484,16 @@
- msgid "cannot create temporary file"
- msgstr "geçici dosya oluşturulamıyor"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "arşiv dosyası ilklendirilemiyor"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "arşiv dosyasının boyutu değiştirilemiyor"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "arşiv başlığı eşlenemiyor"
-
-@@ -1509,88 +1509,88 @@
- msgid "cannot map locale archive file"
- msgstr "yerel arşiv dosyası eşlenemiyor"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "yeni arÅŸiv kilitlenemiyor"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "yerel arşiv dosyası genişletilemiyor"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "boyutu deÄŸiÅŸtirilen yerel arÅŸivin kipi deÄŸiÅŸtirilemiyor"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "yeni arÅŸivin ismi deÄŸiÅŸtirilemiyor"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "yerel arşiv `%s' açılamıyor"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "\"%s\" yerel arşivi durumlanamıyor"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "\"%s\" yerel arÅŸivi kilitlenemiyor"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "arşiv başlığı okunamıyor"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "`%s' yereli zaten var"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "yerel arşive ekleme yapılamıyor"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "`%s' yerel isim dosyası bulunamadı"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "%s ekleniyor\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "\"%s\" durumlaması başarısız: %s: yoksayıldı"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" dizinsiz; yoksayıldı"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "\"%s\" dizini açılamıyor: %s: yoksayıldı"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "\"%s\" içindeki yerel dosyaları kümesi tamamlanmamış"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "\"%s\" içindeki hiçbir dosya okunamıyor: yoksayıldı"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "\"%s\" yeri arÅŸivde deÄŸil"
-@@ -1659,8 +1659,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "kapsamdaki üst sınır alt sınırdan küçük değil"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "bellek tükendi"
-
-@@ -1686,7 +1686,7 @@
- msgid "Another string for testing."
- msgstr "Test edilecek diÄŸer dizge."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "Ä°SÄ°M"
-
-@@ -1708,7 +1708,7 @@
- "Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
- "is -, output is written to standard output.\n"
- msgstr ""
--"İleti kataloğu üretilir.GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
-+"İleti kataloğu üretilir. GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
- "ÇIKTI-DOSYASI - verilirse standart çıktıya yazılır.\n"
-
- #: catgets/gencat.c:125
-@@ -1731,7 +1731,7 @@
- msgid "duplicate set definition"
- msgstr "küme ataması tekrarlanmış"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "bu ilk tanım"
-
-@@ -1749,44 +1749,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "bilinmeyen `%s' yönergesi: satır yoksayıldı"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "tekrarlanmış ileti numarası"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "ileti tanıtıcı tekrarlanmış"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "geçersiz karakter: ileti yoksayıldı"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "satır geçersiz"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "hatalı satır yoksayıldı"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "`%s' çıktı dosyası açılamıyor"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "sonlandırılmamış ileti"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "eski katalog dosyası açılırken"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "dönüşüm modülleri yok"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "öncelem karakteri saptanamıyor"
-
-@@ -1794,7 +1794,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: 8 argümandan fazlasının nasıl elde edileceği bilinmiyor\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Başarılı"
-@@ -2983,23 +2983,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sBilinmeyen sinyal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "bellek tutarlı, kitaplık hatalı\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "bellek ayrılmış bloğun öncesine taştı\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "bellek ayrılmış bloğun sonrasına taştı\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok iki kere serbest bırakıldı\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "mcheck_status sahte, kitaplık hatalı\n"
-
-@@ -3037,6 +3037,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "VERİDOSYASI [ÇIKTIDOSYASI]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Bilinmeyen hata"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3061,7 +3065,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Bellek tükendi: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Bilinmeyen sistem hatası"
-
-@@ -3454,25 +3458,21 @@
- msgid "Interrupted by a signal"
- msgstr "Bir sinyal ile engellendi"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Bilinmeyen hata"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Kullanımı: %s [-v özellik] değişken_ismi [dosyayolu_ismi]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "Özellik \"%s\" bilinmiyor"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "atanmamış"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Tanınmayan değişken `%s'"
-@@ -3534,71 +3534,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "EÅŸleÅŸme yok"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Düzenli ifade geçersiz"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Karşılaştırma karakteri geçersiz"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Geçersiz karakter sınıfı ismi"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "İzleyen tersbölü"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Geriye başvuru geçersiz"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ya da [^ eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ya da \\( eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "\\{\\} içeriği geçersiz"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Geçersiz kapsam sonu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Bellek tükendi"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Önceleme düzenli ifadesi geçersiz"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Düzenli ifadenin sonu eksik"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Düzenli ifade çok büyük"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ya da \\) eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Önceki düzenli ifade yok"
-
-@@ -3754,24 +3754,24 @@
- msgid "Service configuration to be used"
- msgstr "Kullanılacak yapılandırmayı hizmete alır"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Numaralama %s ile desteklenmiyor\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - yönetim veritabanından girdiler alınıyor."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Desteklenen veritabanları:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "argüman sayısı hatalı"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Bilinmeyen veritabanı: %s\n"
-@@ -3800,68 +3800,72 @@
- msgid "invalid pointer size"
- msgstr "imleyici uzunluğu geçersiz"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Bellek ayrılamadı\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: soket: Tüm portlar kullanımda\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "%s adresine bağlantı:"
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "%s deneniyor...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (stderr ayarlaması): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (stderr ayarlaması): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: devre ayarında protokol hatası\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "soket: devre ayarında protokol hatası\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: kısa okuma"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat başarısız"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "düzenli dosya değil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "açılamıyor"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat başarısız"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "Sahip hatalı"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "sahibinden başkası yazabilir"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "bir yere sabit bağlı"
-
-@@ -4072,109 +4076,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "yayından yanıt alınamıyor"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: çıktı %s üzerine yazacak\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: %s dosyasını açmak mümkün değil: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: %s çıktısını yazarken: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "C ön işlemci bulunamıyor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "hiç C ön işlemci (cpp) bulunamadı\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C önişlemcisi %d sinyali vererek başarısız oldu\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C önişlemcisi %d çıkış kodu vererek başarısız oldu\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "kuraldışı ağ türü: `%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: çok fazla atama\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: argüman listesi kodlama hatası\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "`%s' dosyası zaten var ve üzerine yazılabilir\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Bir girdi dosyasından fazlası belirtilemez!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Bu tamamlama yenibiçimi ya da MT-safe kodu desteklemez!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "AğKimlik flaması inetd flaması ile kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "AğKimlik flaması TIRPC olmaksızın kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Tablo flamaları yenibiçimle kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"girdiDosyası\" şablon üretim flamaları için gerekli.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Birden fazla dosya üretim flaması olamaz!?\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "kullanımı: %s girdi-dosyası\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Disim[=değer]] [-i boyut] [-I [-K saniye]] [-Y dosyaYolu] girdiDosyası\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o çıktıDosyası] [girdiDosyası]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s ağTürü]* [-o çıktıDosyası] [girdiDosyası]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n ağKimlik]* [-o çıktıDosyası] [girdiDosyası]\n"
-@@ -5031,7 +5035,7 @@
- msgid "while allocating hash table entry"
- msgstr "arama (hash) tablosu girdisi ayrılırken"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "`%s' dosyası stat() olamıyor: %s"
-@@ -5044,153 +5048,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "nscd güvenli kipte yetkisiz kullanıcı olarak çalıştırılamaz"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "arabellek girdisi ayrılırken: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "soket açılamıyor: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "bağlantıları kabul etmek üzere soket etkinleştirilemiyor: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: istek alındı (Sürüm = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "eski istem sürümü %d elde edilemedi; mevcut sürüm %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "sonuç yazılamıyor: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "çağrıcı kimliği alınırken hata: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "bağlantı kabul edilirken: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "istenen okuma kısa: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "istenen anahtar uzunluÄŸu fazla: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "istenen tuş okunurken kısa okuma: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "nscd '%s' kullanıcısı olarak çalıştırılamadı"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist başarısız"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups başarısız"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "tuş kopyası ayrılırken"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "arabellek girdisi ayrılırken"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "%s içinde kısa yazma: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "\"%s\" grup arabelleÄŸinde yok!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "\"%s\" grup numarası geçersiz!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "\"%d\" grup arabelleÄŸinde yok!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "\"%s\" makinalar arabelleÄŸinde yok!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Yapılandırma verisini İSİM den okur"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Üzerinde çalışılan tty de iletiler ayrılmaz ve gösterilir"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "SAYI"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "SAYIlı başlıkları başlatır"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Sunucuyu indirir"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Şu anki yapılandırma istatistiklerini basar"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLO"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Belirtilen arabellek geçersiz kılındı"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLO,evet"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Her kullanıcı için ayrı arabellek kullanılır"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Name Service Cache Daemon."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "Zaten çalışıyor"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Bu seçenek sadece root tarafından kullanılabilir!"
-
-@@ -5280,22 +5289,22 @@
- "%15ld%% arabellekleme oranı\n"
- " /etc/%s'deki değişiklikler için %15s kontrol uygulandı\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "\"%s\" parola arabelleÄŸinde yok!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "\"%s\" kullanıcı numarası geçersiz!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "\"%d\" parola arabelleÄŸinde yok!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "yetenek listesi oluşturulamıyor"
-
-@@ -5346,7 +5355,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Arabellek dosyası %s açılamıyor\n"
-@@ -5392,15 +5401,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "%s'in ismi %s olarak deÄŸiÅŸtirilemedi"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "paylaşımlı nesne açık değil"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "TLS üretecinin sayacı başa döndü! Lütfen 'glibcbug' betiğini kullanarak bir hata raporu gönderin."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "SUID/SGID programlarda DST'ye izin verilmez"
-
-@@ -5417,181 +5426,193 @@
- msgid "cannot allocate dependency list"
- msgstr "bağımlılık listesi ayrılamadı"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "sembol arama listesi ayrılamadı"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "LD_TRACE_PRELINKING'li süzgeçler destenlenmez"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "DÄ°NAMÄ°K BAÄžLAYICI HATASI!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "paylaşımlı kitaplıklar yüklenirken hata oluştu"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "isim kaydı ayrılamadı"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "dosya arama yolu için arabellek oluşturulamıyor"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "RUNPATH/RPATH kopyası oluşturulamıyor"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "dosya arama yolu dizisi oluşturulamıyor"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "paylaşımlı nesne durumlanamıyor"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "sıfırlar içeren aygıt açılamaz"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "paylaşımlı nesne tanımlayıcı oluşturulamıyor"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "dosya verisi okunamıyor"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF yükleme komutu hizalaması sayfa-hizalamalı değil"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF yükleme komutu adresi/başvurusu gereği gibi hizalanamıyor"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "ilk kanak için TLS veri yapıları oluşturulamıyor"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "TLS verisi alınamıyor"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "parça paylaşımlı nesneden eşleştirilemedi"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "çalıştırılabilir dosya dinamik olarak yüklenemiyor"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "bellek korumaları değiştirilemiyor"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "sıfırlar içeren sayfalar eşleştirilemez"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "uygulama başlığı için bellek ayrılamadı"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "nesne dosyasının dinamik bölümü yok"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "paylaşımlı nesne dlopen()'lanamıyor"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "arama listesi oluşturulamıyor"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "dosya çok küçük"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ELF başlığı geçersiz"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-ilk (big-endian) değil"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-son (little-endian) değil"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF dosyası sürüm kimliği mevcut biriyle eşleşmiyor"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF dosyası OS ABI geçersiz"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF dosyası ABI sürümü geçersiz"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "iç hata"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF dosyası sürümü mevcut biriyle eşleşmiyor"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF dosyasının phent uzunluğu beklenen uzunlukta değil"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "sadece ET_DYN ve ET_EXEC yüklü olabilir"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "paylaşımlı nesne dosyası açılamıyor"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "yeniden konumlama hatası"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "genel kapsam geniÅŸletilemiyor"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "boÅŸ dinamik dizge simge ikamesi"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "etki alanı listesi oluşturulamıyor"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "TLS veri yapıları oluşturulamıyor"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "dlopen() için kip geçersiz"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "paylaşımlı nesne dlopen()'lanamıyor: statik TLS belleği çok küçük"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "yeniden konumlama için parça yazılabilir yapılamıyor"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiler %s nesnesinde PLTREL bulamadı\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: %s PLTREL gölgelenirken profiler bellekdışı\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "reloc işleminden sonra prot segmanı eski haline getirilemedi"
-
-@@ -5647,119 +5668,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Dinamik Bağlayıcının İcra Zamanı Bağıntılarını Yapılandırır."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "`%s' dosya yolu birden fazla verilmiÅŸ"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s bilinen bir kitaplık türü değil"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "stat %s yapılamıyor"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "stat %s yapılamıyor\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s bir sembolik baÄŸ deÄŸil\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "%s bağı kaldırılamadı"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "%s den %s'e bağ yapılamıyor"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (deÄŸiÅŸti)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (ATLANDI)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "%s bulunamıyor"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "lstat %s yapılamıyor"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Normal bir dosya olmadığından %s dosyası yoksayıldı"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "%s için kitaplık ismi bulunamadığından bağ oluşturulmadı"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "%s dizini açılamıyor"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "lstat %s yapılamıyor"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "stat %s yapılamıyor"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Girdi dosyası %s bulunamadı.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "%s ve %s kitaplıkları %s dizininde ve aynı isme sahip oldukları halde farklı türde."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Yapılandırma dosyası %s açılamıyor"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "/ dizinine geçilemiyor"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Arabellek dosyasının dizini %s açılamıyor\n"
---- glibc-2.3.2/po/zh_CN.po 2002-09-24 01:38:27.000000000 -0400
-+++ glibc-2.3.2/po/zh_CN.po 2003-08-21 08:37:07.000000000 -0400
-@@ -4,4985 +4,5214 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.2.5\n"
--"POT-Creation-Date: 2001-08-17 13:03-0700\n"
--"PO-Revision-Date: 2002-09-24 13:13+0800\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-06-06 15:10+0800\n"
- "Last-Translator: Wang Li <charles@linux.net.cn>\n"
- "Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=gb2312\n"
- "Content-Transfer-Encoding: 8bit\n"
-
--#: locale/programs/ld-monetary.c:278
--#, c-format
--msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
--msgstr "\t\t\t\t\t\t\t %s£ºÓò¡°%s¡±µÄÖµ±ØÐë´¦ÓÚ·¶Î§ %d...%d Ö®ÄÚ"
--
--#: nis/nis_print.c:277
--msgid "\t\tAccess Rights : "
--msgstr "\t\t·ÃÎÊȨÏÞ £º"
--
--#: nis/nis_print.c:275
--msgid "\t\tAttributes : "
--msgstr "\t\tÊôÐÔ £º"
--
--#: sunrpc/rpc_main.c:1427
--#, c-format
--msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
--msgstr "\t%s [-abkCLNTM][-DÃû×Ö[=Öµ]] [-i ´óС] [-I [-K ÃëÊý]] [-Y ·¾¶] ÊäÈëÎļþ\n"
--
--#: sunrpc/rpc_main.c:1429
--#, c-format
--msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
--msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-+#: sysdeps/generic/siglist.h:29 stdio-common/../sysdeps/unix/siglist.c:27
-+msgid "Hangup"
-+msgstr "¹ÒÆð"
-
--#: sunrpc/rpc_main.c:1432
--#, c-format
--msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
--msgstr "\t%s [-n ÍøÂç id]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-+#: sysdeps/generic/siglist.h:30 stdio-common/../sysdeps/unix/siglist.c:28
-+msgid "Interrupt"
-+msgstr "ÖжÏ"
-
--#: sunrpc/rpc_main.c:1431
--#, c-format
--msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
--msgstr "\t%s [-s ÍøÂçÀàÐÍ]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-+#: sysdeps/generic/siglist.h:31 stdio-common/../sysdeps/unix/siglist.c:29
-+msgid "Quit"
-+msgstr "Í˳ö"
-
--#: nis/nis_print.c:239
--msgid "\tAccess rights: "
--msgstr "\t·ÃÎÊȨÏÞ £º"
-+#: sysdeps/generic/siglist.h:32 stdio-common/../sysdeps/unix/siglist.c:30
-+msgid "Illegal instruction"
-+msgstr "·Ç·¨Ö¸Áî"
-
--#: nis/nis_print.c:297
--#, c-format
--msgid "\tEntry data of type %s\n"
-+#: sysdeps/generic/siglist.h:33 stdio-common/../sysdeps/unix/siglist.c:31
-+msgid "Trace/breakpoint trap"
- msgstr ""
-
--#: nis/nis_print.c:175
--#, c-format
--msgid "\tName : %s\n"
--msgstr "\tÃû³Æ £º%s\n"
-+#: sysdeps/generic/siglist.h:34
-+msgid "Aborted"
-+msgstr "ÒÑ·ÅÆú"
-
--#: nis/nis_print.c:176
--msgid "\tPublic Key : "
--msgstr "\t¹«Ô¿ £º"
-+#: sysdeps/generic/siglist.h:35 stdio-common/../sysdeps/unix/siglist.c:34
-+msgid "Floating point exception"
-+msgstr "¸¡µãÊýÀýÍâ"
-
--#: nis/nis_print.c:238
--#, c-format
--msgid "\tType : %s\n"
--msgstr "\tÀàÐÍ £º%s\n"
-+#: sysdeps/generic/siglist.h:36 stdio-common/../sysdeps/unix/siglist.c:35
-+msgid "Killed"
-+msgstr "ÒÑɱËÀ"
-
--#: nis/nis_print.c:205
--#, c-format
--msgid "\tUniversal addresses (%u)\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:37 stdio-common/../sysdeps/unix/siglist.c:36
-+msgid "Bus error"
-+msgstr "×ÜÏß´íÎó"
-
--#: nis/nis_print.c:273
--#, c-format
--msgid "\t[%d]\tName : %s\n"
--msgstr "\t[%d]\tÃû³Æ £º%s\n"
-+#: sysdeps/generic/siglist.h:38 stdio-common/../sysdeps/unix/siglist.c:37
-+msgid "Segmentation fault"
-+msgstr "¶Î´íÎó"
-
--#: nis/nis_print.c:300
--#, c-format
--msgid "\t[%u] - [%u bytes] "
--msgstr "\t[%u] - [%u ×Ö½Ú] "
-+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
-+#. TRANS Every library function that returns this error code also generates a
-+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
-+#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
-+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
-+#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
-+#: stdio-common/../sysdeps/unix/siglist.c:39
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
-+msgid "Broken pipe"
-+msgstr "¶Ï¿ªµÄ¹ÜµÀ"
-
--#: nscd/nscd_stat.c:154
--#, c-format
--msgid ""
--"\n"
--"%s cache:\n"
--"\n"
--"%15s cache is enabled\n"
--"%15Zd suggested size\n"
--"%15ld seconds time to live for positive entries\n"
--"%15ld seconds time to live for negative entries\n"
--"%15ld cache hits on positive entries\n"
--"%15ld cache hits on negative entries\n"
--"%15ld cache misses on positive entries\n"
--"%15ld cache misses on negative entries\n"
--"%15ld%% cache hit rate\n"
--"%15s check /etc/%s for changes\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:40 stdio-common/../sysdeps/unix/siglist.c:40
-+msgid "Alarm clock"
-+msgstr "ÄÖÖÓ"
-
--#: nis/nis_print.c:255
--msgid ""
--"\n"
--"Group Members :\n"
--msgstr ""
--"\n"
--"×é³ÉÔ± £º\n"
-+#: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
-+msgid "Terminated"
-+msgstr "ÒÑÖÕÖ¹"
-
--#: nis/nis_print.c:326
--msgid ""
--"\n"
--"Time to Live : "
-+#: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
-+msgid "Urgent I/O condition"
- msgstr ""
--"\n"
--"´æÔÚµÄʱ¼ä £º"
--
--#: sunrpc/rpcinfo.c:679
--msgid " rpcinfo -b prognum versnum\n"
--msgstr " rpcinfo -b ³ÌÐòºÅ °æ±¾ºÅ\n"
--
--#: sunrpc/rpcinfo.c:680
--msgid " rpcinfo -d prognum versnum\n"
--msgstr " rpcinfo -d ³ÌÐòºÅ °æ±¾ºÅ\n"
-
--#: sunrpc/rpcinfo.c:678
--msgid " rpcinfo -p [ host ]\n"
--msgstr " rpcinfo -p [ Ö÷»ú ]\n"
-+#: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
-+msgid "Stopped (signal)"
-+msgstr "Í£Ö¹ (ÐźÅ)"
-
--#: sunrpc/rpcinfo.c:676
--msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
--msgstr " rpcinfo [ -n ¶Ë¿ÚºÅ ] -t Ö÷»ú ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
-+#: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
-+msgid "Stopped"
-+msgstr "Í£Ö¹"
-
--#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
--msgid " no"
--msgstr " ·ñ"
-+#: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
-+msgid "Continued"
-+msgstr "¼ÌÐø"
-
--#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
--msgid " yes"
--msgstr " ÊÇ"
-+#: sysdeps/generic/siglist.h:46 stdio-common/../sysdeps/unix/siglist.c:46
-+msgid "Child exited"
-+msgstr "×Ó½ø³ÌÒÑÍ˳ö"
-
--#: nis/nis_print.c:352
--#, c-format
--msgid " Data Length = %u\n"
--msgstr " Êý¾Ý³¤¶È = %u\n"
-+#: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
-+msgid "Stopped (tty input)"
-+msgstr "Í£Ö¹ (tty ÊäÈë)"
-
--#: nis/nis_print_group_entry.c:123
--msgid " Explicit members:\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
-+msgid "Stopped (tty output)"
-+msgstr "Í£Ö¹ (tty Êä³ö)"
-
--#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
--msgid " Explicit nonmembers:\n"
-+#: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
-+msgid "I/O possible"
- msgstr ""
-
--#: nis/nis_print_group_entry.c:131
--msgid " Implicit members:\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:50 stdio-common/../sysdeps/unix/siglist.c:50
-+msgid "CPU time limit exceeded"
-+msgstr "³¬³ö CPU ʱÏÞ"
-
--#: nis/nis_print_group_entry.c:155
--msgid " Implicit nonmembers:\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:51 stdio-common/../sysdeps/unix/siglist.c:51
-+msgid "File size limit exceeded"
-+msgstr "Îļþ´óС³¬³öÏÞÖÆ"
-
--#: nis/nis_print_group_entry.c:128
--msgid " No explicit members\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:52 stdio-common/../sysdeps/unix/siglist.c:52
-+msgid "Virtual timer expired"
-+msgstr "ÐéÄâ¼ÆʱÆ÷³¬Ê±"
-
--#: nis/nis_print_group_entry.c:152
--msgid " No explicit nonmembers\n"
-+#: sysdeps/generic/siglist.h:53 stdio-common/../sysdeps/unix/siglist.c:53
-+msgid "Profiling timer expired"
- msgstr ""
-
--#: nis/nis_print_group_entry.c:136
--msgid " No implicit members\n"
-+#: sysdeps/generic/siglist.h:54 stdio-common/../sysdeps/unix/siglist.c:54
-+msgid "Window changed"
- msgstr ""
-
--#: nis/nis_print_group_entry.c:160
--msgid " No implicit nonmembers\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:55 stdio-common/../sysdeps/unix/siglist.c:56
-+msgid "User defined signal 1"
-+msgstr "Óû§¶¨ÒåÐźŠ1"
-
--#: nis/nis_print_group_entry.c:144
--msgid " No recursive members\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:56 stdio-common/../sysdeps/unix/siglist.c:57
-+msgid "User defined signal 2"
-+msgstr "Óû§¶¨ÒåÐźŠ2"
-
--#: nis/nis_print_group_entry.c:168
--msgid " No recursive nonmembers\n"
-+#: sysdeps/generic/siglist.h:60 stdio-common/../sysdeps/unix/siglist.c:33
-+msgid "EMT trap"
- msgstr ""
-
--#: nis/nis_print_group_entry.c:139
--msgid " Recursive members:\n"
--msgstr ""
-+#: sysdeps/generic/siglist.h:63 stdio-common/../sysdeps/unix/siglist.c:38
-+msgid "Bad system call"
-+msgstr "´íÎóµÄϵͳµ÷ÓÃ"
-
--#: sunrpc/rpcinfo.c:574
--msgid " program vers proto port\n"
--msgstr " ³ÌÐò °æ±¾ ЭÒé ¶Ë¿Ú\n"
-+#: sysdeps/generic/siglist.h:66
-+msgid "Stack fault"
-+msgstr "ջʧЧ"
-
--#: argp/argp-help.c:1572
--msgid " or: "
--msgstr " »ò£º"
-+#: sysdeps/generic/siglist.h:69
-+msgid "Information request"
-+msgstr "ÐÅÏ¢ÇëÇó"
-
--#: elf/ldconfig.c:457
--msgid " (SKIPPED)\n"
--msgstr " (Ìø¹ý)\n"
-+#: sysdeps/generic/siglist.h:71
-+msgid "Power failure"
-+msgstr "µçԴʧЧ"
-
--#: elf/ldconfig.c:455
--msgid " (changed)\n"
--msgstr " (¸Ä±ä)\n"
-+#: sysdeps/generic/siglist.h:74 stdio-common/../sysdeps/unix/siglist.c:55
-+msgid "Resource lost"
-+msgstr "×ÊÔ´¶ªÊ§"
-
--#: timezone/zic.c:427
--#, c-format
--msgid " (rule from \"%s\", line %d)"
--msgstr ""
-+#: sysdeps/mach/hurd/mips/dl-machine.c:68
-+#: string/../sysdeps/mach/_strerror.c:57
-+msgid "Error in unknown error system: "
-+msgstr "δ֪µÄ´íÎóϵͳÖгö´í£º"
-
--#: argp/argp-help.c:1584
--msgid " [OPTION...]"
--msgstr " [Ñ¡Ïî...]"
-+#: sysdeps/mach/hurd/mips/dl-machine.c:83
-+#: string/../sysdeps/generic/_strerror.c:44
-+#: string/../sysdeps/mach/_strerror.c:87
-+msgid "Unknown error "
-+msgstr "δ֪µÄ´íÎó "
-
--#: timezone/zic.c:424
-+#: sysdeps/unix/sysv/linux/lddlibc4.c:64
- #, c-format
--msgid "\"%s\", line %d: %s"
--msgstr "¡°%s¡±£¬ÐÐ %d£º%s"
-+msgid "cannot open `%s'"
-+msgstr "ÎÞ·¨´ò¿ª¡°%s¡±"
-
--#: timezone/zic.c:989
-+#: sysdeps/unix/sysv/linux/lddlibc4.c:68
- #, c-format
--msgid "\"Zone %s\" line and -l option are mutually exclusive"
--msgstr ""
-+msgid "cannot read header from `%s'"
-+msgstr "ÎÞ·¨´Ó¡°%s¡±ÖжÁÈëÍ·"
-
--#: timezone/zic.c:997
-+#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:293 catgets/gencat.c:288
- #, c-format
--msgid "\"Zone %s\" line and -p option are mutually exclusive"
--msgstr ""
--
--#: sunrpc/rpc_main.c:1412
--msgid "\"infile\" is required for template generation flags.\n"
--msgstr "¡°ÊäÈëÎļþ¡±¶ÔÄ£°åÉú³É±êÖ¾À´ËµÊDZØÐëµÄ¡£\n"
-+msgid "cannot open input file `%s'"
-+msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ¡°%s¡±"
-
--#: argp/argp-help.c:209
-+#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:311
- #, c-format
--msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
--msgstr "%.*s£º²ÎÊý ARGP_HELP_FMT ÐèÒªÒ»¸öÖµ"
-+msgid "error while closing input `%s'"
-+msgstr "¹Ø±ÕÊäÈë¡°%s¡±Ê±³ö´í"
-
--#: argp/argp-help.c:218
-+#: iconv/iconv_charmap.c:443
- #, c-format
--msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
--msgstr "%.*s£ºÎ´ÖªµÄ ARGP_HELP_FMT ²ÎÊý"
-+msgid "illegal input sequence at position %Zd"
-+msgstr "λÓÚ %Zd µÄ·Ç·¨ÊäÈëÐòÁÐ"
-
--#: locale/programs/ld-address.c:581 locale/programs/ld-collate.c:2612
--#: locale/programs/ld-collate.c:3740 locale/programs/ld-ctype.c:2112
--#: locale/programs/ld-ctype.c:2849 locale/programs/ld-identification.c:448
--#: locale/programs/ld-measurement.c:237 locale/programs/ld-messages.c:331
--#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:305
--#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:238
--#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1199
--#, c-format
--msgid "%1$s: definition does not end with `END %1$s'"
--msgstr "%1$s£º¶¨Òå²»ÒÔ¡°END %1$s¡±½áβ"
-+#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:503
-+msgid "incomplete character or shift sequence at end of buffer"
-+msgstr "λÓÚ»º³åÇøĩβµÄ²»ÍêÕû×Ö·û»òתÒåÐòÁÐ"
-
--#: elf/cache.c:190 elf/cache.c:200
--#, c-format
--msgid "%d libs found in cache `%s'\n"
--msgstr "ÔÚ»º³åÇø¡°%2$s¡±ÖÐÕÒµ½ %1$d ¸ö¿â\n"
-+#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:546
-+#: iconv/iconv_prog.c:582
-+msgid "error while reading the input"
-+msgstr "¶ÁÈ¡ÊäÈëʱ³ö´í"
-
--#: timezone/zic.c:799
--#, c-format
--msgid "%s in ruleless zone"
--msgstr ""
-+#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:564
-+msgid "unable to allocate buffer for input"
-+msgstr "ÎÞ·¨ÎªÊäÈë·ÖÅ仺³åÇø"
-
--#: elf/../sysdeps/generic/readelflib.c:67
--#, c-format
--msgid "%s is a 32 bit ELF file.\n"
--msgstr "%s ÊÇÒ»¸ö 32 λ ELF Îļþ¡£\n"
-+#: iconv/iconv_prog.c:61
-+msgid "Input/Output format specification:"
-+msgstr "ÊäÈë/Êä³ö¸ñʽ¹æ·¶£º"
-
--#: elf/../sysdeps/generic/readelflib.c:69
--#, c-format
--msgid "%s is a 64 bit ELF file.\n"
--msgstr "%s ÊÇÒ»¸ö 64 λ ELF Îļþ¡£\n"
-+#: iconv/iconv_prog.c:62
-+msgid "encoding of original text"
-+msgstr "ԭʼÎı¾±àÂë"
-
--#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
--#, c-format
--msgid "%s is for unknown machine %d.\n"
--msgstr "%s ÓÃÓÚδ֪µÄ»úÆ÷ %d¡£\n"
-+#: iconv/iconv_prog.c:63
-+msgid "encoding for output"
-+msgstr "Êä³ö±àÂë"
-
--#: elf/ldconfig.c:326
--#, c-format
--msgid "%s is not a known library type"
--msgstr "%s ²»ÊÇÒÑÖªÀàÐ͵Ŀâ"
-+#: iconv/iconv_prog.c:64
-+msgid "Information:"
-+msgstr "ÐÅÏ¢£º"
-
--#: elf/../sysdeps/generic/readelflib.c:78
--#, c-format
--msgid "%s is not a shared object file (Type: %d).\n"
--msgstr "%s ²»Êǹ²ÏíÄ¿±êÎļþ (ÀàÐÍ£º%d)¡£\n"
-+#: iconv/iconv_prog.c:65
-+msgid "list all known coded character sets"
-+msgstr "ÁоÙËùÓÐÒÑÖªµÄ×Ö·û¼¯"
-
--#: elf/ldconfig.c:424
--#, c-format
--msgid "%s is not a symbolic link\n"
--msgstr "%s ²»ÊÇ·ûºÅÁ¬½Ó\n"
-+#: iconv/iconv_prog.c:66 locale/programs/localedef.c:128
-+msgid "Output control:"
-+msgstr "Êä³ö¿ØÖÆ£º"
-+
-+#: iconv/iconv_prog.c:67
-+msgid "omit invalid characters from output"
-+msgstr "´ÓÊä³öÖкöÂÔÎÞЧµÄ×Ö·û"
-+
-+#: iconv/iconv_prog.c:68
-+msgid "output file"
-+msgstr "Êä³öÎļþ"
-+
-+#: iconv/iconv_prog.c:69
-+msgid "suppress warnings"
-+msgstr "¹Ø±Õ¾¯¸æ"
-+
-+#: iconv/iconv_prog.c:70
-+msgid "print progress information"
-+msgstr "´òÓ¡½ø¶ÈÐÅÏ¢"
-+
-+#: iconv/iconv_prog.c:75
-+msgid "Convert encoding of given files from one encoding to another."
-+msgstr "ת»»¸ø¶¨ÎļþµÄ±àÂë¡£"
-+
-+#: iconv/iconv_prog.c:79
-+msgid "[FILE...]"
-+msgstr "[Îļþ...]"
-+
-+#: iconv/iconv_prog.c:199
-+msgid "cannot open output file"
-+msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ"
-
--#: elf/readlib.c:155
-+#: iconv/iconv_prog.c:241
- #, c-format
--msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
--msgstr "%s ²»ÊÇ ELF Îļþ - ËüÆðʼµÄħÊý´íÎó¡£\n"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
-
--#: assert/assert.c:54
-+#: iconv/iconv_prog.c:246
- #, c-format
--msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
--msgstr "%s%s%s£º%u£º%s%s¶ÏÑÔ¡°%s¡±Ê§°Ü¡£\n"
-+msgid "conversion from `%s' is not supported"
-+msgstr "²»Ö§³ÖÒÔ¡°%s¡±ÎªÔ´Í·µÄת»»"
-
--#: assert/assert-perr.c:56
-+#: iconv/iconv_prog.c:253
- #, c-format
--msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
--msgstr "%s%s%s£º%u£º%s%sÒâÍâµÄ´íÎó£º%s¡£\n"
-+msgid "conversion to `%s' is not supported"
-+msgstr "²»Ö§³ÖÒÔ¡°%s¡±ÎªÄ¿±êµÄת»»"
-
--#: stdio-common/psignal.c:62
-+#: iconv/iconv_prog.c:257
- #, c-format
--msgid "%s%sUnknown signal %d\n"
--msgstr "%s%sδ֪µÄÐźŠ%d\n"
-+msgid "conversion from `%s' to `%s' is not supported"
-+msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
-+
-+#: iconv/iconv_prog.c:263
-+msgid "failed to start conversion processing"
-+msgstr "Æô¶¯×ª»»´¦Àíʧ°Ü"
-+
-+#: iconv/iconv_prog.c:358
-+msgid "error while closing output file"
-+msgstr "¹Ø±ÕÊä³öÎļþʱ³ö´í"
-
--#: timezone/zic.c:2234
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
-+#: locale/programs/localedef.c:372 catgets/gencat.c:233
-+#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
-+msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-+msgstr "Óá°glibcbug¡±½Å±¾½«´íÎ󱨸æ¸ø <bugs@gnu.org>¡£\n"
-+
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
-+#: elf/sprof.c:349
- #, c-format
--msgid "%s: %d did not sign extend correctly\n"
-+msgid ""
-+"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"
- msgstr ""
-
--#: locale/programs/charmap.c:331
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
-+#: elf/sprof.c:355
- #, c-format
--msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
--msgstr "%s£º<mb_cur_max> ±ØÐë´óÓÚ <mb_cur_min>\n"
-+msgid "Written by %s.\n"
-+msgstr "ÓÉ %s ±àд¡£\n"
-
--#: sunrpc/rpc_main.c:423
--#, c-format
--msgid "%s: C preprocessor failed with exit code %d\n"
--msgstr "%s£ºC Ô¤´¦ÀíÆ÷ʧ°Ü£¬·µ»Ø %d\n"
-+#: iconv/iconv_prog.c:456 iconv/iconv_prog.c:482
-+msgid "conversion stopped due to problem in writing the output"
-+msgstr "ÓÉÓÚдÈëÊä³öʱ³öÏÖµÄÎÊÌâת»»Í£Ö¹"
-
--#: sunrpc/rpc_main.c:420
-+#: iconv/iconv_prog.c:499
- #, c-format
--msgid "%s: C preprocessor failed with signal %d\n"
--msgstr "%s£ºC Ô¤´¦ÀíÆ÷ÒòÐźŠ%d ¶øʧ°Ü\n"
-+msgid "illegal input sequence at position %ld"
-+msgstr "δ֪ %ld ´¦µÄ·Ç·¨ÊäÈëÐòÁÐ"
-
--#: timezone/zic.c:1500
--#, c-format
--msgid "%s: Can't create %s: %s\n"
--msgstr "%s£ºÎÞ·¨´´½¨ %s£º%s\n"
-+#: iconv/iconv_prog.c:507
-+msgid "internal error (illegal descriptor)"
-+msgstr "ÄÚ²¿´íÎó (·Ç·¨µÄÃèÊö·û)"
-
--#: timezone/zic.c:2212
-+#: iconv/iconv_prog.c:510
- #, c-format
--msgid "%s: Can't create directory %s: %s\n"
--msgstr "%s£ºÎÞ·¨´´½¨Ä¿Â¼ %s£º%s\n"
-+msgid "unknown iconv() error %d"
-+msgstr "δ֪µÄ iconv() ´íÎó %d"
-
--#: timezone/zic.c:651
--#, c-format
--msgid "%s: Can't link from %s to %s: %s\n"
--msgstr "%s£ºÎÞ·¨´Ó %s Á¬½Óµ½ %s£º%s\n"
-+#: iconv/iconv_prog.c:753
-+msgid ""
-+"The following list contain all the coded character sets known. This does\n"
-+"not necessarily mean that all combinations of these names can be used for\n"
-+"the FROM and TO command line parameters. One coded character set can be\n"
-+"listed with several different names (aliases).\n"
-+"\n"
-+" "
-+msgstr ""
-
--#: timezone/zic.c:825
--#, c-format
--msgid "%s: Can't open %s: %s\n"
--msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%s\n"
-+#: iconv/iconvconfig.c:110
-+msgid "Create fastloading iconv module configuration file."
-+msgstr "´´½¨¿ìËÙ×°Èë iconv Ä£¿éÅäÖÃÎļþ¡£"
-
--#: timezone/zic.c:1490
--#, c-format
--msgid "%s: Can't remove %s: %s\n"
--msgstr "%s£ºÎÞ·¨É¾³ý %s£º%s\n"
-+#: iconv/iconvconfig.c:114
-+msgid "[DIR...]"
-+msgstr "[Ŀ¼...]"
-
--#: timezone/zic.c:636
--#, c-format
--msgid "%s: Can't unlink %s: %s\n"
--msgstr "%s£ºÎÞ·¨½â³ýÁ¬½Ó %s£º%s\n"
-+#: iconv/iconvconfig.c:126
-+msgid "Prefix used for all file accesses"
-+msgstr "ÓÃÓÚËùÓÐÎļþ·ÃÎʵÄǰ׺"
-+
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
-+msgid "no output file produced because warning were issued"
-+msgstr "ÓÉÓÚ³öÏÖ¾¯¸æ¶øδÉú³ÉÊä³öÎļþ"
-+
-+#: iconv/iconvconfig.c:405
-+msgid "while inserting in search tree"
-+msgstr "²åÈëËÑË÷Ê÷ʱ"
-+
-+#: iconv/iconvconfig.c:1204
-+msgid "cannot generate output file"
-+msgstr "ÎÞ·¨Éú³ÉÊä³öÎļþ"
-
--#: timezone/zic.c:894
-+#: locale/programs/charmap-dir.c:59
- #, c-format
--msgid "%s: Error closing %s: %s\n"
--msgstr "%s£º¹Ø±Õ %s ´íÎó£º%s\n"
-+msgid "cannot read character map directory `%s'"
-+msgstr "ÎÞ·¨¶ÁÈë×ÖĸӳÉäĿ¼¡°%s¡±"
-
--#: timezone/zic.c:887
-+#: locale/programs/charmap.c:135
- #, c-format
--msgid "%s: Error reading %s\n"
--msgstr "%s£º¶Á %s ´íÎó\n"
-+msgid "character map file `%s' not found"
-+msgstr "ÕÒ²»µ½×Ö·ûÓ³ÉäÎļþ¡°%s¡±"
-
--#: timezone/zic.c:1566
-+#: locale/programs/charmap.c:193
- #, c-format
--msgid "%s: Error writing %s\n"
--msgstr "%s£ºÐ´ %s ´íÎó\n"
-+msgid "default character map file `%s' not found"
-+msgstr "ÕÒ²»µ½Ä¬ÈÏ×Ö·ûÓ³ÉäÎļþ¡°%s¡±"
-
--#: timezone/zic.c:872
-+#: locale/programs/charmap.c:255
- #, c-format
--msgid "%s: Leap line in non leap seconds file %s\n"
-+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
- msgstr ""
-
--#: timezone/zic.c:365
-+#: locale/programs/charmap.c:332
- #, c-format
--msgid "%s: Memory exhausted: %s\n"
--msgstr "%s£ºÄÚ´æºÄ¾¡£º%s\n"
-+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
-+msgstr "%s£º<mb_cur_max> ±ØÐë´óÓÚ <mb_cur_min>\n"
-
--#: timezone/zic.c:531
-+#: locale/programs/charmap.c:352 locale/programs/charmap.c:369
-+#: locale/programs/repertoire.c:175
- #, c-format
--msgid "%s: More than one -L option specified\n"
--msgstr "%s£º¸ø³öÁ˶à¸ö -L Ñ¡Ïî\n"
-+msgid "syntax error in prolog: %s"
-+msgstr "ÐòÑÔÖÐÓï·¨´íÎó£º%s"
-
--#: timezone/zic.c:491
--#, c-format
--msgid "%s: More than one -d option specified\n"
--msgstr "%s£º¸ø³öÁ˶à¸ö -d Ñ¡Ïî\n"
-+#: locale/programs/charmap.c:353
-+msgid "invalid definition"
-+msgstr "ÎÞЧµÄ¶¨Òå"
-
--#: timezone/zic.c:501
--#, c-format
--msgid "%s: More than one -l option specified\n"
--msgstr "%s£º¸ø³öÁ˶à¸ö -l Ñ¡Ïî\n"
-+#: locale/programs/charmap.c:370 locale/programs/locfile.c:126
-+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
-+msgid "bad argument"
-+msgstr "´íÎóµÄ²ÎÊý"
-
--#: timezone/zic.c:511
-+#: locale/programs/charmap.c:398
- #, c-format
--msgid "%s: More than one -p option specified\n"
--msgstr "%s£º¸ø³öÁ˶à¸ö -p Ñ¡Ïî\n"
-+msgid "duplicate definition of <%s>"
-+msgstr "Öظ´¶¨Òå <%s>"
-
--#: timezone/zic.c:521
-+#: locale/programs/charmap.c:405
- #, c-format
--msgid "%s: More than one -y option specified\n"
--msgstr "%s£º¸ø³öÁ˶à¸ö -y Ñ¡Ïî\n"
-+msgid "value for <%s> must be 1 or greater"
-+msgstr "<%s>µÄÖµ±ØÐëÊÇ 1 »ò¸ü´ó"
-
--#: argp/argp-parse.c:646
-+#: locale/programs/charmap.c:417
- #, c-format
--msgid "%s: Too many arguments\n"
--msgstr "%s£º¹ý¶àµÄÑ¡Ïî\n"
-+msgid "value of <%s> must be greater or equal than the value of <%s>"
-+msgstr "<%s> µÄÖµ±ØÐë´óÓÚµÈÓÚ <%s> µÄÖµ"
-
--#: locale/programs/ld-collate.c:457 locale/programs/ld-collate.c:483
--#: locale/programs/ld-collate.c:499
-+#: locale/programs/charmap.c:440 locale/programs/repertoire.c:184
- #, c-format
--msgid "%s: `%s' mentioned more than once in definition of weight %d"
--msgstr ""
-+msgid "argument to <%s> must be a single character"
-+msgstr "<%s>µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
-
--#: locale/programs/ld-collate.c:1336
--#, c-format
--msgid "%s: `%s' must be a character"
--msgstr "%s£º¡°%s¡±±ØÐëÊÇÒ»¸ö×Ö·û"
-+#: locale/programs/charmap.c:466
-+msgid "character sets with locking states are not supported"
-+msgstr "²»Ö§³Ö´øÓÐËø¶¨×´Ì¬µÄ×Ö·û¼¯"
-
--#: locale/programs/ld-address.c:248 locale/programs/ld-address.c:276
--#: locale/programs/ld-address.c:309 locale/programs/ld-address.c:321
-+#: locale/programs/charmap.c:493 locale/programs/charmap.c:547
-+#: locale/programs/charmap.c:579 locale/programs/charmap.c:673
-+#: locale/programs/charmap.c:728 locale/programs/charmap.c:769
-+#: locale/programs/charmap.c:810
- #, c-format
--msgid "%s: `%s' value does not match `%s' value"
--msgstr "%s£º¡°%s¡±µÄÖµ²»ÄÜÆ¥Åä¡°%s¡±µÄÖµ"
-+msgid "syntax error in %s definition: %s"
-+msgstr "%s µÄ¶¨ÒåÖеÄÓï·¨´íÎó£º%s"
-
--#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:318
--#, c-format
--msgid "%s: `-1' must be last entry in `%s' field"
--msgstr "%s£º¡°-1¡±±ØÐëÊÇ¡°%s¡±ÓòÖеÄ×îºóÒ»¸öÌõÄ¿"
-+#: locale/programs/charmap.c:494 locale/programs/charmap.c:674
-+#: locale/programs/charmap.c:770 locale/programs/repertoire.c:231
-+msgid "no symbolic name given"
-+msgstr "ûÓиø³ö·ûºÅÃû"
-+
-+#: locale/programs/charmap.c:548
-+msgid "invalid encoding given"
-+msgstr "¸ø³öÎÞЧµÄ±àÂë"
-+
-+#: locale/programs/charmap.c:557
-+msgid "too few bytes in character encoding"
-+msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ýÉÙ"
-+
-+#: locale/programs/charmap.c:559
-+msgid "too many bytes in character encoding"
-+msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ý¶à"
-+
-+#: locale/programs/charmap.c:581 locale/programs/charmap.c:729
-+#: locale/programs/charmap.c:812 locale/programs/repertoire.c:297
-+msgid "no symbolic name given for end of range"
-+msgstr "ûÓÐΪ·¶Î§µÄ½áÊø¸ø³ö·ûºÅ»¯µÄÃû³Æ"
-
--#: locale/programs/ld-collate.c:447 locale/programs/ld-collate.c:473
-+#: locale/programs/charmap.c:605 locale/programs/locfile.h:96
-+#: locale/programs/repertoire.c:314
- #, c-format
--msgid "%s: `forward' and `backward' are mutually excluding each other"
-+msgid "`%1$s' definition does not end with `END %1$s'"
-+msgstr "¶Ô¡°%1$s¡±µÄ¶¨Òå²¢²»ÒÔ¡°END %1%s¡±½áÊø"
-+
-+#: locale/programs/charmap.c:638
-+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1528
-+#: locale/programs/charmap.c:646 locale/programs/charmap.c:709
- #, c-format
--msgid "%s: `position' must be used for a specific level in all sections or none"
--msgstr ""
-+msgid "value for %s must be an integer"
-+msgstr "%s µÄÖµ±ØÐëΪÕûÊý"
-
--#: locale/programs/ld-ctype.c:2637 locale/programs/ld-ctype.c:2777
-+#: locale/programs/charmap.c:837
- #, c-format
--msgid "%s: `translit_start' section does not end with `translit_end'"
--msgstr "%s£º¡°translit_start¡±½Ú²»ÒÔ¡°translit_end¡±½áÊø"
-+msgid "%s: error in state machine"
-+msgstr "%s£º×´Ì¬»ú³ö´í"
-
--#: locale/programs/ld-collate.c:1136
-+#: locale/programs/charmap.c:845 locale/programs/ld-address.c:605
-+#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3793
-+#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2977
-+#: locale/programs/ld-identification.c:469
-+#: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
-+#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:324
-+#: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
-+#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1217
-+#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
- #, c-format
--msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
--msgstr ""
-+msgid "%s: premature end of file"
-+msgstr "%s£ºÎļþ²»ÍêÕû"
-
--#: locale/programs/ld-collate.c:1094
-+#: locale/programs/charmap.c:864 locale/programs/charmap.c:875
- #, c-format
--msgid "%s: byte sequences of first and last character must have the same length"
--msgstr "%s£º×Ö½ÚÐòÁеĵÚÒ»¸öºÍ×îºóÒ»¸ö×Ö·ûµÄ³Ì¶È±ØÐëÏàͬ"
-+msgid "unknown character `%s'"
-+msgstr "δ֪µÄ×Ö·û¡°%s¡±"
-
--#: locale/programs/ld-collate.c:3663
-+#: locale/programs/charmap.c:883
- #, c-format
--msgid "%s: cannot have `%s' as end of ellipsis range"
-+msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
- msgstr ""
-
--#: locale/programs/ld-collate.c:3327
--#, c-format
--msgid "%s: cannot reorder after %.*s: symbol not known"
-+#: locale/programs/charmap.c:987 locale/programs/ld-collate.c:2915
-+#: locale/programs/repertoire.c:420
-+msgid "invalid names for character range"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:2912 locale/programs/ld-ctype.c:2996
--#: locale/programs/ld-ctype.c:3016 locale/programs/ld-ctype.c:3037
--#: locale/programs/ld-ctype.c:3058 locale/programs/ld-ctype.c:3079
--#: locale/programs/ld-ctype.c:3100 locale/programs/ld-ctype.c:3140
--#: locale/programs/ld-ctype.c:3161 locale/programs/ld-ctype.c:3228
--#, c-format
--msgid "%s: character `%s' in charmap not representable with one byte"
-+#: locale/programs/charmap.c:999 locale/programs/repertoire.c:432
-+msgid "hexadecimal range format should use only capital characters"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:3272 locale/programs/ld-ctype.c:3297
-+#: locale/programs/charmap.c:1017
- #, c-format
--msgid "%s: character `%s' needed as default value not representable with one byte"
--msgstr "%s£ºÐèÒª×÷ΪĬÈÏÖµµÄ×Ö·û¡°%s¡±ÎÞ·¨ÒÔµ¥¸ö×Ö½ÚÀ´±íʾ"
-+msgid "<%s> and <%s> are illegal names for range"
-+msgstr "<%s> ºÍ <%s> ÊÇ·Ç·¨µÄ·¶Î§Ãû"
-
--#: locale/programs/ld-ctype.c:2907
--#, c-format
--msgid "%s: character `%s' not defined in charmap while needed as default value"
--msgstr ""
-+#: locale/programs/charmap.c:1023
-+msgid "upper limit in range is not higher then lower limit"
-+msgstr "·¶Î§µÄÉÏÏÞ²¢²»¸ßÓÚÏÂÏÞ"
-
--#: locale/programs/ld-ctype.c:2991 locale/programs/ld-ctype.c:3011
--#: locale/programs/ld-ctype.c:3053 locale/programs/ld-ctype.c:3074
--#: locale/programs/ld-ctype.c:3095 locale/programs/ld-ctype.c:3135
--#: locale/programs/ld-ctype.c:3156 locale/programs/ld-ctype.c:3223
--#: locale/programs/ld-ctype.c:3265 locale/programs/ld-ctype.c:3290
--#, c-format
--msgid "%s: character `%s' not defined while needed as default value"
-+#: locale/programs/charmap.c:1081
-+msgid "resulting bytes for range not representable."
- msgstr ""
-
--#: timezone/zic.c:1933
-+#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1519
-+#: locale/programs/ld-ctype.c:416 locale/programs/ld-identification.c:134
-+#: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
-+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
-+#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
-+#: locale/programs/ld-telephone.c:95 locale/programs/ld-time.c:160
- #, c-format
--msgid "%s: command was '%s', result was %d\n"
--msgstr "%s£ºÃüÁîΪ¡°%s¡±£¬½á¹ûΪ %d\n"
-+msgid "No definition for %s category found"
-+msgstr ""
-
--#: locale/programs/ld-time.c:246
-+#: locale/programs/ld-address.c:145 locale/programs/ld-address.c:183
-+#: locale/programs/ld-address.c:201 locale/programs/ld-address.c:228
-+#: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
-+#: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
-+#: locale/programs/ld-measurement.c:106 locale/programs/ld-monetary.c:206
-+#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
-+#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:106
-+#: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
-+#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
-+#: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
-+#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:176
-+#: locale/programs/ld-time.c:197
- #, c-format
--msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
--msgstr ""
-+msgid "%s: field `%s' not defined"
-+msgstr "%s£ºÓò¡°%s¡±Î´¶¨Òå"
-
--#: locale/programs/ld-time.c:258
-+#: locale/programs/ld-address.c:157 locale/programs/ld-address.c:209
-+#: locale/programs/ld-address.c:235 locale/programs/ld-address.c:265
-+#: locale/programs/ld-name.c:118 locale/programs/ld-telephone.c:118
- #, c-format
--msgid "%s: direction flag in string %Zd in `era' field is not a single character"
--msgstr ""
-+msgid "%s: field `%s' must not be empty"
-+msgstr "%s£ºÓò¡°%s¡±²»ÄÜΪ¿Õ"
-
--#: locale/programs/ld-ctype.c:2729
-+#: locale/programs/ld-address.c:169
- #, c-format
--msgid "%s: duplicate `default_missing' definition"
--msgstr "%s£ºÖظ´¶¨Òå¡°default_missing¡±"
-+msgid "%s: invalid escape `%%%c' sequence in field `%s'"
-+msgstr "%1$s£ºÓò¡°%3$s¡±ÖÐÎÞЧµÄתÒå¡°%%%2$c¡±ÐòÁÐ"
-
--#: locale/programs/ld-identification.c:431
-+#: locale/programs/ld-address.c:220
- #, c-format
--msgid "%s: duplicate category version definition"
-+msgid "%s: terminology language code `%s' not defined"
- msgstr ""
-
--#: locale/programs/ld-collate.c:2730
-+#: locale/programs/ld-address.c:247 locale/programs/ld-address.c:276
- #, c-format
--msgid "%s: duplicate declaration of section `%s'"
--msgstr "%s£ºÖظ´ÉùÃ÷½Ú¡°%s¡±"
-+msgid "%s: language abbreviation `%s' not defined"
-+msgstr "%s£ºÎ´¶¨ÒåµÄÓïÑÔËõд¡°%s¡±"
-
--#: locale/programs/ld-collate.c:2694
-+#: locale/programs/ld-address.c:254 locale/programs/ld-address.c:282
-+#: locale/programs/ld-address.c:316 locale/programs/ld-address.c:328
- #, c-format
--msgid "%s: duplicate definition of `%s'"
--msgstr "%s£ºÖظ´¶¨Òå¡°%s¡±"
-+msgid "%s: `%s' value does not match `%s' value"
-+msgstr "%s£º¡°%s¡±µÄÖµ²»ÄÜÆ¥Åä¡°%s¡±µÄÖµ"
-
--#: locale/programs/ld-collate.c:3712
-+#: locale/programs/ld-address.c:301
- #, c-format
--msgid "%s: empty category description not allowed"
--msgstr "%s£º²»ÔÊÐí¿Õ·¶³ëÃèÊö"
-+msgid "%s: numeric country code `%d' not valid"
-+msgstr "%s£ºÊýÖµ¹ú¼Ò±àÂë¡°%d¡±ÎÞЧ"
-
--#: locale/programs/ld-collate.c:755
-+#: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
-+#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2592
-+#: locale/programs/ld-identification.c:365
-+#: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
-+#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
-+#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:281
-+#: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
-+#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1106
-+#: locale/programs/ld-time.c:1148
- #, c-format
--msgid "%s: empty weight string not allowed"
--msgstr "%s£º²»ÔÊÐí¿ÕȨ×Ö·û´®"
-+msgid "%s: field `%s' declared more than once"
-+msgstr "%s£º¶à´ÎÉùÃ÷Óò¡°%s¡±"
-
--#: locale/programs/charmap.c:836
-+#: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
-+#: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
-+#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
-+#: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
-+#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1000
-+#: locale/programs/ld-time.c:1069 locale/programs/ld-time.c:1111
- #, c-format
--msgid "%s: error in state machine"
--msgstr "%s£º×´Ì¬»ú³ö´í"
-+msgid "%s: unknown character in field `%s'"
-+msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐδ֪×Ö·û"
-
--#: locale/programs/ld-address.c:489 locale/programs/ld-address.c:526
--#: locale/programs/ld-address.c:564 locale/programs/ld-ctype.c:2485
--#: locale/programs/ld-identification.c:360
--#: locale/programs/ld-measurement.c:220 locale/programs/ld-messages.c:300
--#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
--#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:278
--#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:221
--#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1104
--#: locale/programs/ld-time.c:1146
-+#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3775
-+#: locale/programs/ld-ctype.c:2957 locale/programs/ld-identification.c:450
-+#: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
-+#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:306
-+#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
-+#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1199
- #, c-format
--msgid "%s: field `%s' declared more than once"
--msgstr "%s£º¶à´ÎÉùÃ÷Óò¡°%s¡±"
-+msgid "%s: incomplete `END' line"
-+msgstr "%s£º²»ÍêÕûµÄ¡°END¡±ÐÐ"
-
--#: locale/programs/ld-ctype.c:1526 locale/programs/ld-ctype.c:1651
--#: locale/programs/ld-ctype.c:1757 locale/programs/ld-ctype.c:2348
--#: locale/programs/ld-ctype.c:3331
-+#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2638
-+#: locale/programs/ld-collate.c:3777 locale/programs/ld-ctype.c:2219
-+#: locale/programs/ld-ctype.c:2960 locale/programs/ld-identification.c:453
-+#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
-+#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:308
-+#: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
-+#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1201
- #, c-format
--msgid "%s: field `%s' does not contain exactly ten entries"
--msgstr "%s£ºÓò¡°%s¡±º¬ÓÐÌõÄ¿µÄ¸öÊý²»ÊÇÊ®¸ö"
-+msgid "%1$s: definition does not end with `END %1$s'"
-+msgstr "%1$s£º¶¨Òå²»ÒÔ¡°END %1$s¡±½áβ"
-
--#: locale/programs/ld-address.c:154 locale/programs/ld-address.c:205
--#: locale/programs/ld-address.c:230 locale/programs/ld-address.c:259
--#: locale/programs/ld-name.c:115 locale/programs/ld-telephone.c:117
-+#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:520
-+#: locale/programs/ld-collate.c:572 locale/programs/ld-collate.c:869
-+#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2625
-+#: locale/programs/ld-collate.c:3784 locale/programs/ld-ctype.c:1947
-+#: locale/programs/ld-ctype.c:2206 locale/programs/ld-ctype.c:2782
-+#: locale/programs/ld-ctype.c:2968 locale/programs/ld-identification.c:460
-+#: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
-+#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:315
-+#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
-+#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1208
- #, c-format
--msgid "%s: field `%s' must not be empty"
--msgstr "%s£ºÓò¡°%s¡±²»ÄÜΪ¿Õ"
-+msgid "%s: syntax error"
-+msgstr "%s£ºÓï·¨´íÎó"
-
--#: locale/programs/ld-address.c:142 locale/programs/ld-address.c:180
--#: locale/programs/ld-address.c:197 locale/programs/ld-address.c:224
--#: locale/programs/ld-address.c:284 locale/programs/ld-address.c:303
--#: locale/programs/ld-address.c:315 locale/programs/ld-identification.c:145
--#: locale/programs/ld-measurement.c:104 locale/programs/ld-monetary.c:206
--#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
--#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:104
--#: locale/programs/ld-name.c:141 locale/programs/ld-numeric.c:113
--#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:101
--#: locale/programs/ld-paper.c:109 locale/programs/ld-telephone.c:105
--#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:175
--#: locale/programs/ld-time.c:195
-+#: locale/programs/ld-collate.c:395
- #, c-format
--msgid "%s: field `%s' not defined"
--msgstr "%s£ºÓò¡°%s¡±Î´¶¨Òå"
-+msgid "`%.*s' already defined in charmap"
-+msgstr "ÒѾ­ÔÚ×Ö·ûÓ³Éä±íÖж¨ÒåÁË¡°%.*s¡±"
-
--#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:148
-+#: locale/programs/ld-collate.c:404
- #, c-format
--msgid "%s: field `%s' undefined"
--msgstr "%s£º½â³ýÓò¡°%s¡±µÄ¶¨Òå"
-+msgid "`%.*s' already defined in repertoire"
-+msgstr "ÒѾ­ÔÚÖ¸Áî±íÖж¨ÒåÁË¡°%.*s¡±"
-
--#: locale/programs/ld-time.c:279
-+#: locale/programs/ld-collate.c:411
- #, c-format
--msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-+msgid "`%.*s' already defined as collating symbol"
- msgstr ""
-
--#: locale/programs/ld-time.c:339
-+#: locale/programs/ld-collate.c:418
- #, c-format
--msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-+msgid "`%.*s' already defined as collating element"
- msgstr ""
-
--#: locale/programs/ld-time.c:416
-+#: locale/programs/ld-collate.c:449 locale/programs/ld-collate.c:475
- #, c-format
--msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-+msgid "%s: `forward' and `backward' are mutually excluding each other"
-+msgstr "%s£º¡°forward¡±ºÍ¡°backward¡±ÊÇ»¥³âµÄ"
-+
-+#: locale/programs/ld-collate.c:459 locale/programs/ld-collate.c:485
-+#: locale/programs/ld-collate.c:501
-+#, c-format
-+msgid "%s: `%s' mentioned more than once in definition of weight %d"
- msgstr ""
-
--#: posix/getopt.c:887 posix/getopt.c:890
-+#: locale/programs/ld-collate.c:557
- #, c-format
--msgid "%s: illegal option -- %c\n"
--msgstr "%s£ºÎÞЧѡÏî -- %c\n"
-+msgid "%s: too many rules; first entry only had %d"
-+msgstr "%s£º¹æÔò¹ý¶à£»µÚÒ»¸öÌõÄ¿Ö»º¬ÓÐ %d"
-
--#: locale/programs/ld-address.c:578 locale/programs/ld-collate.c:3738
--#: locale/programs/ld-ctype.c:2846 locale/programs/ld-identification.c:445
--#: locale/programs/ld-measurement.c:234 locale/programs/ld-messages.c:329
--#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:303
--#: locale/programs/ld-numeric.c:373 locale/programs/ld-paper.c:236
--#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1197
-+#: locale/programs/ld-collate.c:593
- #, c-format
--msgid "%s: incomplete `END' line"
--msgstr "%s£º²»ÍêÕûµÄ¡°END¡±ÐÐ"
-+msgid "%s: not enough sorting rules"
-+msgstr "%s£ºÅÅÐò¹æÔò²»×ã"
-
--#: locale/programs/ld-address.c:166
-+#: locale/programs/ld-collate.c:759
- #, c-format
--msgid "%s: invalid escape `%%%c' sequence in field `%s'"
--msgstr "%1$s£ºÓò¡°%3$s¡±ÖÐÎÞЧµÄתÒå¡°%%%2$c¡±ÐòÁÐ"
-+msgid "%s: empty weight string not allowed"
-+msgstr "%s£º²»ÔÊÐí¿ÕȨ×Ö·û´®"
-
--#: locale/programs/ld-name.c:127 locale/programs/ld-telephone.c:126
--#: locale/programs/ld-telephone.c:150
-+#: locale/programs/ld-collate.c:854
- #, c-format
--msgid "%s: invalid escape sequence in field `%s'"
--msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐÎÞЧתÒåÐòÁÐ"
-+msgid "%s: weights must use the same ellipsis symbol as the name"
-+msgstr ""
-
--#: locale/programs/ld-time.c:271
-+#: locale/programs/ld-collate.c:910
- #, c-format
--msgid "%s: invalid number for offset in string %Zd in `era' field"
-+msgid "%s: too many values"
-+msgstr "%s£ºÖµ¹ý¶à"
-+
-+#: locale/programs/ld-collate.c:1023 locale/programs/ld-collate.c:1194
-+#, c-format
-+msgid "order for `%.*s' already defined at %s:%Zu"
- msgstr ""
-
--#: locale/programs/ld-collate.c:3162
-+#: locale/programs/ld-collate.c:1073
- #, c-format
--msgid "%s: invalid number of sorting rules"
-+msgid "%s: the start and the end symbol of a range must stand for characters"
- msgstr ""
-
--#: posix/getopt.c:896 posix/getopt.c:899
-+#: locale/programs/ld-collate.c:1100
- #, c-format
--msgid "%s: invalid option -- %c\n"
--msgstr "%s£ºÎÞЧѡÏî -- %c\n"
-+msgid "%s: byte sequences of first and last character must have the same length"
-+msgstr "%s£º×Ö½ÚÐòÁеĵÚÒ»¸öºÍ×îºóÒ»¸ö×Ö·ûµÄ³Ì¶È±ØÐëÏàͬ"
-
--#: locale/programs/ld-time.c:330
-+#: locale/programs/ld-collate.c:1142
- #, c-format
--msgid "%s: invalid starting date in string %Zd in `era' field"
-+msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
- msgstr ""
-
--#: locale/programs/ld-time.c:407
-+#: locale/programs/ld-collate.c:1263
- #, c-format
--msgid "%s: invalid stopping date in string %Zd in `era' field"
-+msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
- msgstr ""
-
--#: locale/programs/ld-measurement.c:112
-+#: locale/programs/ld-collate.c:1267
- #, c-format
--msgid "%s: invalid value for field `%s'"
--msgstr "%s£ºÓò¡°%s¡±ÖеÄÖµÎÞЧ"
-+msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
-+msgstr ""
-
--#: locale/programs/ld-address.c:242 locale/programs/ld-address.c:270
-+#: locale/programs/ld-collate.c:1287 locale/programs/ld-ctype.c:1467
- #, c-format
--msgid "%s: language abbreviation `%s' not defined"
--msgstr "%s£ºÎ´¶¨ÒåµÄÓïÑÔËõд¡°%s¡±"
-+msgid "`%s' and `%.*s' are no valid names for symbolic range"
-+msgstr ""
-
--#: resolv/res_hconf.c:366
-+#: locale/programs/ld-collate.c:1333 locale/programs/ld-collate.c:3712
- #, c-format
--msgid "%s: line %d: bad command `%s'\n"
--msgstr "%s£ºÐÐ %d£º´íÎóÃüÁî¡°%s¡±\n"
-+msgid "%s: order for `%.*s' already defined at %s:%Zu"
-+msgstr ""
-
--#: resolv/res_hconf.c:165
-+#: locale/programs/ld-collate.c:1342
- #, c-format
--msgid "%s: line %d: cannot specify more than %d services"
--msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö·þÎñ"
-+msgid "%s: `%s' must be a character"
-+msgstr "%s£º¡°%s¡±±ØÐëÊÇÒ»¸ö×Ö·û"
-
--#: resolv/res_hconf.c:231
-+#: locale/programs/ld-collate.c:1535
- #, c-format
--msgid "%s: line %d: cannot specify more than %d trim domains"
--msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö¹æÕûÓò"
-+msgid "%s: `position' must be used for a specific level in all sections or none"
-+msgstr ""
-
--#: resolv/res_hconf.c:319
-+#: locale/programs/ld-collate.c:1560
- #, c-format
--msgid "%s: line %d: expected `on' or `off', found `%s'\n"
--msgstr "%s£ºÐÐ %d£ºÓ¦Îª¡°on¡±»ò¡°off¡±£¬µÃµ½¡°%s¡±\n"
-+msgid "symbol `%s' not defined"
-+msgstr "·ûºÅ¡°%s¡±Î´¶¨Òå"
-
--#: resolv/res_hconf.c:147
-+#: locale/programs/ld-collate.c:1636 locale/programs/ld-collate.c:1742
- #, c-format
--msgid "%s: line %d: expected service, found `%s'\n"
--msgstr "%s£ºÐÐ %d£ºÓ¦Îª service£¬µÃµ½¡°%s¡±\n"
-+msgid "symbol `%s' has the same encoding as"
-+msgstr ""
-
--#: resolv/res_hconf.c:395
-+#: locale/programs/ld-collate.c:1640 locale/programs/ld-collate.c:1746
- #, c-format
--msgid "%s: line %d: ignoring trailing garbage `%s'\n"
--msgstr ""
-+msgid "symbol `%s'"
-+msgstr "·ûºÅ¡°%s¡±"
-
--#: resolv/res_hconf.c:256
-+#: locale/programs/ld-collate.c:1788
-+msgid "no definition of `UNDEFINED'"
-+msgstr "ûÓйØÓÚ¡°UNDEFINIED¡±µÄ¶¨Òå"
-+
-+#: locale/programs/ld-collate.c:1817
-+msgid "too many errors; giving up"
-+msgstr "´íÎó¹ý¶à£»·ÅÆú"
-+
-+#: locale/programs/ld-collate.c:2720
- #, c-format
--msgid "%s: line %d: list delimiter not followed by domain"
--msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔÚÓòÖ®ºó"
-+msgid "%s: duplicate definition of `%s'"
-+msgstr "%s£ºÖظ´¶¨Òå¡°%s¡±"
-
--#: resolv/res_hconf.c:191
-+#: locale/programs/ld-collate.c:2756
- #, c-format
--msgid "%s: line %d: list delimiter not followed by keyword"
--msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔڹؼü×ÖÖ®ºó"
-+msgid "%s: duplicate declaration of section `%s'"
-+msgstr "%s£ºÖظ´ÉùÃ÷½Ú¡°%s¡±"
-
--#: locale/programs/ld-collate.c:3242 locale/programs/ld-collate.c:3365
--#: locale/programs/ld-collate.c:3716
-+#: locale/programs/ld-collate.c:2895
- #, c-format
--msgid "%s: missing `order_end' keyword"
--msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°order_end¡±"
-+msgid "%s: unknown character in collating symbol name"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3379 locale/programs/ld-collate.c:3728
-+#: locale/programs/ld-collate.c:3027
- #, c-format
--msgid "%s: missing `reorder-end' keyword"
--msgstr "%s£ºÒÔºó¹Ø¼ü×Ö¡°reorder-end¡±"
-+msgid "%s: unknown character in equivalent definition name"
-+msgstr "%s£ºµÈ¼Û¶¨ÒåÃûÖÐδ֪µÄ×Ö·û"
-
--#: locale/programs/ld-collate.c:3731
-+#: locale/programs/ld-collate.c:3040
- #, c-format
--msgid "%s: missing `reorder-sections-end' keyword"
--msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°reorder-sections-end¡±"
-+msgid "%s: unknown character in equivalent definition value"
-+msgstr "%s£ºµÈ¼Û¶¨ÒåÖµÖÐδ֪µÄ×Ö·û"
-
--#: locale/programs/ld-time.c:456
-+#: locale/programs/ld-collate.c:3050
- #, c-format
--msgid "%s: missing era format in string %Zd in `era' field"
-+msgid "%s: unknown symbol `%s' in equivalent definition"
-+msgstr "%s£ºµÈ¼Û¶¨ÒåÖÐδ֪µÄ·ûºÅ¡°%s¡±"
-+
-+#: locale/programs/ld-collate.c:3059
-+msgid "error while adding equivalent collating symbol"
- msgstr ""
-
--#: locale/programs/ld-time.c:444
-+#: locale/programs/ld-collate.c:3089
- #, c-format
--msgid "%s: missing era name in string %Zd in `era' field"
--msgstr ""
-+msgid "duplicate definition of script `%s'"
-+msgstr "Öظ´¶¨Òå½Å±¾¡°%s¡±"
-+
-+#: locale/programs/ld-collate.c:3137
-+#, c-format
-+msgid "%s: unknown section name `%s'"
-+msgstr "%s£ºÎ´ÖªµÄ½ÚÃû¡°%s¡±"
-
--#: locale/programs/ld-collate.c:3138
-+#: locale/programs/ld-collate.c:3165
- #, c-format
- msgid "%s: multiple order definitions for section `%s'"
- msgstr "%s£º¹ØÓÚ¡°%s¡±½Ú³öÏÖ¶à¸ö˳Ðò¶¨Òå"
-
--#: locale/programs/ld-collate.c:3188
-+#: locale/programs/ld-collate.c:3190
-+#, c-format
-+msgid "%s: invalid number of sorting rules"
-+msgstr "%s£ºÅÅÐò¹æÔòµÄÊýÁ¿ÎÞЧ"
-+
-+#: locale/programs/ld-collate.c:3217
- #, c-format
- msgid "%s: multiple order definitions for unnamed section"
- msgstr "%s£º¹ØÓÚδÃüÃû½Ú³öÏÖ¶à¸ö˳Ðò¶¨Òå"
-
--#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:170
-+#: locale/programs/ld-collate.c:3271 locale/programs/ld-collate.c:3394
-+#: locale/programs/ld-collate.c:3753
- #, c-format
--msgid "%s: no correct regular expression for field `%s': %s"
--msgstr "%s£ºÓò¡°%s¡±ÖÐûÓÐÕýÈ·µÄ³£¹æ±í´ïʽ£º%s"
-+msgid "%s: missing `order_end' keyword"
-+msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°order_end¡±"
-
--#: locale/programs/ld-identification.c:169
-+#: locale/programs/ld-collate.c:3329
- #, c-format
--msgid "%s: no identification for category `%s'"
-+msgid "%s: order for collating symbol %.*s not yet defined"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:2755
-+#: locale/programs/ld-collate.c:3345
- #, c-format
--msgid "%s: no representable `default_missing' definition found"
-+msgid "%s: order for collating element %.*s not yet defined"
- msgstr ""
-
--#: locale/programs/ld-collate.c:591
-+#: locale/programs/ld-collate.c:3356
- #, c-format
--msgid "%s: not enough sorting rules"
-+msgid "%s: cannot reorder after %.*s: symbol not known"
- msgstr ""
-
--#: locale/programs/ld-address.c:295
-+#: locale/programs/ld-collate.c:3408 locale/programs/ld-collate.c:3765
- #, c-format
--msgid "%s: numeric country code `%d' not valid"
--msgstr "%s£ºÊýÖµ¹ú¼Ò±àÂë¡°%d¡±ÎÞЧ"
-+msgid "%s: missing `reorder-end' keyword"
-+msgstr "%s£ºÒÔºó¹Ø¼ü×Ö¡°reorder-end¡±"
-
--#: posix/getopt.c:743 posix/getopt.c:748
-+#: locale/programs/ld-collate.c:3442 locale/programs/ld-collate.c:3637
- #, c-format
--msgid "%s: option `%c%s' doesn't allow an argument\n"
--msgstr "%s£ºÑ¡Ïî¡°%c%s¡±²»½ÓÊܲÎÊý\n"
-+msgid "%s: section `%.*s' not known"
-+msgstr "%s£ºÎ´ÖªµÄ½Ú¡°%.*s¡±"
-
--#: posix/getopt.c:688 posix/getopt.c:698
-+#: locale/programs/ld-collate.c:3507
- #, c-format
--msgid "%s: option `%s' is ambiguous\n"
--msgstr "%s£ºÑ¡Ïî¡°%s¡±¾ßÓжþÒåÐÔ\n"
-+msgid "%s: bad symbol <%.*s>"
-+msgstr ""
-
--#: posix/getopt.c:782 posix/getopt.c:793 posix/getopt.c:1070
--#: posix/getopt.c:1082
-+#: locale/programs/ld-collate.c:3700
- #, c-format
--msgid "%s: option `%s' requires an argument\n"
--msgstr "%s£ºÑ¡Ïî¡°%s¡±ÐèÒªÒ»¸ö²ÎÊý\n"
-+msgid "%s: cannot have `%s' as end of ellipsis range"
-+msgstr ""
-
--#: posix/getopt.c:730 posix/getopt.c:734
-+#: locale/programs/ld-collate.c:3749
- #, c-format
--msgid "%s: option `--%s' doesn't allow an argument\n"
--msgstr "%s£ºÑ¡Ïî¡°--%s¡±²»½ÓÊÜÈκβÎÊý\n"
-+msgid "%s: empty category description not allowed"
-+msgstr "%s£º²»ÔÊÐí¿Õ·¶³ëÃèÊö"
-
--#: posix/getopt.c:1038 posix/getopt.c:1049
-+#: locale/programs/ld-collate.c:3768
- #, c-format
--msgid "%s: option `-W %s' doesn't allow an argument\n"
--msgstr "%s£ºÑ¡Ïî¡°-W %s¡±²»½ÓÊܲÎÊý\n"
-+msgid "%s: missing `reorder-sections-end' keyword"
-+msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°reorder-sections-end¡±"
-
--#: posix/getopt.c:1004 posix/getopt.c:1014
--#, c-format
--msgid "%s: option `-W %s' is ambiguous\n"
--msgstr "%s£ºÑ¡Ïî¡°-W %s¡±¾ßÓжþÒåÐÔ\n"
-+#: locale/programs/ld-ctype.c:435
-+msgid "No character set name specified in charmap"
-+msgstr "×Ö·ûÓ³Éä±íÖÐδ¸ø³ö×Ö·û¼¯Ãû³Æ"
-
--#: posix/getopt.c:942 posix/getopt.c:952 posix/getopt.c:1136
--#: posix/getopt.c:1147
-+#: locale/programs/ld-ctype.c:464
- #, c-format
--msgid "%s: option requires an argument -- %c\n"
--msgstr "%s£ºÑ¡ÏîÐèÒªÒ»¸ö²ÎÊý -- %c\n"
-+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:1327 locale/programs/ld-collate.c:3675
-+# msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û L'\\u%0*x' ±ØÐëÊôÓÚÀà¡°%3$s¡±"
-+#: locale/programs/ld-ctype.c:479
- #, c-format
--msgid "%s: order for `%.*s' already defined at %s:%Zu"
-+msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
- msgstr ""
-
--#: locale/programs/ld-collate.c:3316
-+#: locale/programs/ld-ctype.c:493 locale/programs/ld-ctype.c:551
- #, c-format
--msgid "%s: order for collating element %.*s not yet defined"
--msgstr ""
-+msgid "internal error in %s, line %u"
-+msgstr "ÔÚ %s µÄµÚ %u ÐгöÏÖÄÚ²¿´íÎó"
-
--#: locale/programs/ld-collate.c:3300
-+#: locale/programs/ld-ctype.c:522
- #, c-format
--msgid "%s: order for collating symbol %.*s not yet defined"
--msgstr ""
-+msgid "character '%s' in class `%s' must be in class `%s'"
-+msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±±ØÐëÊôÓÚÀà¡°%3$s¡±"
-
--#: sunrpc/rpc_main.c:289
-+#: locale/programs/ld-ctype.c:538
- #, c-format
--msgid "%s: output would overwrite %s\n"
--msgstr "%s£ºÊä³ö½«¸²¸Ç %s\n"
-+msgid "character '%s' in class `%s' must not be in class `%s'"
-+msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±²»µÃÊôÓÚÀà¡°%3$s¡±"
-
--#: timezone/zic.c:879 timezone/zic.c:1293 timezone/zic.c:1318
-+#: locale/programs/ld-ctype.c:568 locale/programs/ld-ctype.c:606
- #, c-format
--msgid "%s: panic: Invalid l_value %d\n"
--msgstr ""
-+msgid "<SP> character not in class `%s'"
-+msgstr "×Ö·û <SP> ²»ÔÚÀà¡°%s¡±ÖÐ"
-
--#: locale/programs/charmap.c:843 locale/programs/ld-address.c:597
--#: locale/programs/ld-collate.c:2609 locale/programs/ld-collate.c:3756
--#: locale/programs/ld-ctype.c:2109 locale/programs/ld-ctype.c:2866
--#: locale/programs/ld-identification.c:464
--#: locale/programs/ld-measurement.c:253 locale/programs/ld-messages.c:347
--#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:321
--#: locale/programs/ld-numeric.c:391 locale/programs/ld-paper.c:254
--#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1215
--#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
-+#: locale/programs/ld-ctype.c:580 locale/programs/ld-ctype.c:617
- #, c-format
--msgid "%s: premature end of file"
--msgstr "%s£ºÎļþ²»ÍêÕû"
-+msgid "<SP> character must not be in class `%s'"
-+msgstr "×Ö·û <SP> ²»ÄÜÊôÓÚÀà¡°%s¡±"
-+
-+#: locale/programs/ld-ctype.c:595
-+msgid "character <SP> not defined in character map"
-+msgstr "×Ö·ûÓ³ÉäÖÐ䶨Òå×Ö·û <SP>"
-+
-+#: locale/programs/ld-ctype.c:709
-+msgid "`digit' category has not entries in groups of ten"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:758
-+msgid "no input digits defined and none of the standard names in the charmap"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:823
-+msgid "not all characters used in `outdigit' are available in the charmap"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:840
-+msgid "not all characters used in `outdigit' are available in the repertoire"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3413 locale/programs/ld-collate.c:3601
-+#: locale/programs/ld-ctype.c:1235
- #, c-format
--msgid "%s: section `%.*s' not known"
--msgstr "%s£ºÎ´ÖªµÄ½Ú¡°%.*s¡±"
-+msgid "character class `%s' already defined"
-+msgstr "×Ö·ûÀà¡°%s¡±ÒѶ¨Òå"
-
--#: locale/programs/ld-time.c:358
-+#: locale/programs/ld-ctype.c:1241
- #, c-format
--msgid "%s: starting date is invalid in string %Zd in `era' field"
-+msgid "implementation limit: no more than %Zd character classes allowed"
- msgstr ""
-
--#: locale/programs/ld-time.c:435
-+#: locale/programs/ld-ctype.c:1267
- #, c-format
--msgid "%s: stopping date is invalid in string %Zd in `era' field"
-+msgid "character map `%s' already defined"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1261
-+#: locale/programs/ld-ctype.c:1273
- #, c-format
--msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
--msgstr ""
-+msgid "implementation limit: no more than %d character maps allowed"
-+msgstr "ʵÏÖÏÞÖÆ£º²»µÃ¶àÓÚ %d ¸ö×Ö·ûÓ³Éä±í"
-
--#: locale/programs/ld-collate.c:1257
-+#: locale/programs/ld-ctype.c:1538 locale/programs/ld-ctype.c:1663
-+#: locale/programs/ld-ctype.c:1769 locale/programs/ld-ctype.c:2455
-+#: locale/programs/ld-ctype.c:3443
- #, c-format
--msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
--msgstr ""
-+msgid "%s: field `%s' does not contain exactly ten entries"
-+msgstr "%s£ºÓò¡°%s¡±º¬ÓÐÌõÄ¿µÄ¸öÊý²»ÊÇÊ®¸ö"
-
--#: locale/programs/ld-address.c:588 locale/programs/ld-collate.c:518
--#: locale/programs/ld-collate.c:570 locale/programs/ld-collate.c:865
--#: locale/programs/ld-collate.c:878 locale/programs/ld-collate.c:2599
--#: locale/programs/ld-collate.c:3747 locale/programs/ld-ctype.c:1841
--#: locale/programs/ld-ctype.c:2099 locale/programs/ld-ctype.c:2675
--#: locale/programs/ld-ctype.c:2857 locale/programs/ld-identification.c:455
--#: locale/programs/ld-measurement.c:244 locale/programs/ld-messages.c:338
--#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:312
--#: locale/programs/ld-numeric.c:382 locale/programs/ld-paper.c:245
--#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1206
-+#: locale/programs/ld-ctype.c:1566 locale/programs/ld-ctype.c:2137
- #, c-format
--msgid "%s: syntax error"
--msgstr "%s£ºÓï·¨´íÎó"
-+msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:1693
-+msgid "start and end character sequence of range must have the same length"
-+msgstr "·¶Î§µÄÆðʼºÍÖÕÖ¹×Ö·ûÐòÁбØÐë¾ßÓÐÏàͬµÄ³¤¶È"
-+
-+#: locale/programs/ld-ctype.c:1700
-+msgid "to-value character sequence is smaller than from-value sequence"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:2057 locale/programs/ld-ctype.c:2108
-+msgid "premature end of `translit_ignore' definition"
-+msgstr ""
-+
-+#: locale/programs/ld-ctype.c:2063 locale/programs/ld-ctype.c:2114
-+#: locale/programs/ld-ctype.c:2156
-+msgid "syntax error"
-+msgstr "Óï·¨´íÎó"
-
--#: locale/programs/ld-ctype.c:2180
-+#: locale/programs/ld-ctype.c:2287
- #, c-format
- msgid "%s: syntax error in definition of new character class"
- msgstr "%s£ºÔÚ¶¨ÒåÐÂ×Ö·û¼¯ºÏÖгöÏÖÓï·¨´íÎó"
-
--#: locale/programs/ld-ctype.c:2195
-+#: locale/programs/ld-ctype.c:2302
- #, c-format
- msgid "%s: syntax error in definition of new character map"
- msgstr "%s£ºÔÚÐÂ×Ö·ûÓ³ÉäÖгöÏÖÓï·¨´íÎó"
-
--#: locale/programs/ld-ctype.c:3737
--#, c-format
--msgid "%s: table for class \"%s\": %lu bytes\n"
-+#: locale/programs/ld-ctype.c:2477
-+msgid "ellipsis range must be marked by two operands of same type"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:3805
--#, c-format
--msgid "%s: table for map \"%s\": %lu bytes\n"
-+#: locale/programs/ld-ctype.c:2486
-+msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:3937
--#, c-format
--msgid "%s: table for width: %lu bytes\n"
-+#: locale/programs/ld-ctype.c:2501
-+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
- msgstr ""
-
--#: locale/programs/ld-address.c:216
--#, c-format
--msgid "%s: terminology language code `%s' not defined"
-+#: locale/programs/ld-ctype.c:2515
-+msgid "with character code range values one must use the absolute ellipsis `...'"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1067
-+#: locale/programs/ld-ctype.c:2666
- #, c-format
--msgid "%s: the start and the end symbol of a range must stand for characters"
--msgstr ""
-+msgid "duplicated definition for mapping `%s'"
-+msgstr "Öظ´¶¨ÒåÓ³Éä¡°%s¡±"
-
--#: locale/programs/ld-time.c:485
-+#: locale/programs/ld-ctype.c:2744 locale/programs/ld-ctype.c:2888
- #, c-format
--msgid "%s: third operand for value of field `%s' must not be larger than %d"
--msgstr ""
-+msgid "%s: `translit_start' section does not end with `translit_end'"
-+msgstr "%s£º¡°translit_start¡±½Ú²»ÒÔ¡°translit_end¡±½áÊø"
-
--#: locale/programs/ld-time.c:983
-+#: locale/programs/ld-ctype.c:2839
- #, c-format
--msgid "%s: too few values for field `%s'"
--msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ýÉÙ"
-+msgid "%s: duplicate `default_missing' definition"
-+msgstr "%s£ºÖظ´¶¨Òå¡°default_missing¡±"
-
--#: locale/programs/ld-collate.c:555
-+#: locale/programs/ld-ctype.c:2844
-+msgid "previous definition was here"
-+msgstr "Ç°Ò»¸ö¶¨ÒåÔÚÕâÀï"
-+
-+#: locale/programs/ld-ctype.c:2866
- #, c-format
--msgid "%s: too many rules; first entry only had %d"
--msgstr "%s£º¹æÔò¹ý¶à£»µÚÒ»¸öÌõÄ¿Ö»º¬ÓÐ %d"
-+msgid "%s: no representable `default_missing' definition found"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:906
-+#: locale/programs/ld-ctype.c:3019
- #, c-format
--msgid "%s: too many values"
--msgstr "%s£ºÖµ¹ý¶à"
-+msgid "%s: character `%s' not defined in charmap while needed as default value"
-+msgstr ""
-
--#: locale/programs/ld-time.c:1030
-+#: locale/programs/ld-ctype.c:3024 locale/programs/ld-ctype.c:3108
-+#: locale/programs/ld-ctype.c:3128 locale/programs/ld-ctype.c:3149
-+#: locale/programs/ld-ctype.c:3170 locale/programs/ld-ctype.c:3191
-+#: locale/programs/ld-ctype.c:3212 locale/programs/ld-ctype.c:3252
-+#: locale/programs/ld-ctype.c:3273 locale/programs/ld-ctype.c:3340
- #, c-format
--msgid "%s: too many values for field `%s'"
--msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ý¶à"
-+msgid "%s: character `%s' in charmap not representable with one byte"
-+msgstr ""
-
--#: locale/programs/ld-ctype.c:3641
-+#: locale/programs/ld-ctype.c:3103 locale/programs/ld-ctype.c:3123
-+#: locale/programs/ld-ctype.c:3165 locale/programs/ld-ctype.c:3186
-+#: locale/programs/ld-ctype.c:3207 locale/programs/ld-ctype.c:3247
-+#: locale/programs/ld-ctype.c:3268 locale/programs/ld-ctype.c:3335
-+#: locale/programs/ld-ctype.c:3377 locale/programs/ld-ctype.c:3402
- #, c-format
--msgid "%s: transliteration data from locale `%s' not available"
-+msgid "%s: character `%s' not defined while needed as default value"
- msgstr ""
-
--#: sunrpc/rpc_main.c:296
-+# msgstr "Àà¡°%s¡±ÖеÄ×Ö·û L'\\u%0*x' ²»µÃÊôÓÚÀà¡°%s¡±"
-+#: locale/programs/ld-ctype.c:3144
- #, c-format
--msgid "%s: unable to open %s: %m\n"
--msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%m\n"
-+msgid "character `%s' not defined while needed as default value"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:2868
-+#: locale/programs/ld-ctype.c:3384 locale/programs/ld-ctype.c:3409
- #, c-format
--msgid "%s: unknown character in collating symbol name"
-+msgid "%s: character `%s' needed as default value not representable with one byte"
-+msgstr "%s£ºÐèÒª×÷ΪĬÈÏÖµµÄ×Ö·û¡°%s¡±ÎÞ·¨ÒÔµ¥¸ö×Ö½ÚÀ´±íʾ"
-+
-+#: locale/programs/ld-ctype.c:3464
-+msgid "no output digits defined and none of the standard names in the charmap"
- msgstr ""
-
--#: locale/programs/ld-collate.c:3000
-+#: locale/programs/ld-ctype.c:3755
- #, c-format
--msgid "%s: unknown character in equivalent definition name"
--msgstr "%s£ºµÈ¼Û¶¨ÒåÃûÖÐδ֪µÄ×Ö·û"
-+msgid "%s: transliteration data from locale `%s' not available"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3013
-+#: locale/programs/ld-ctype.c:3851
- #, c-format
--msgid "%s: unknown character in equivalent definition value"
--msgstr "%s£ºµÈ¼Û¶¨ÒåÖµÖÐδ֪µÄ×Ö·û"
-+msgid "%s: table for class \"%s\": %lu bytes\n"
-+msgstr ""
-
--#: locale/programs/ld-address.c:493 locale/programs/ld-address.c:531
--#: locale/programs/ld-identification.c:364 locale/programs/ld-messages.c:310
--#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
--#: locale/programs/ld-name.c:282 locale/programs/ld-numeric.c:267
--#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:999
--#: locale/programs/ld-time.c:1067 locale/programs/ld-time.c:1109
-+#: locale/programs/ld-ctype.c:3920
- #, c-format
--msgid "%s: unknown character in field `%s'"
--msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐδ֪×Ö·û"
-+msgid "%s: table for map \"%s\": %lu bytes\n"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3110
-+#: locale/programs/ld-ctype.c:4053
- #, c-format
--msgid "%s: unknown section name `%s'"
--msgstr "%s£ºÎ´ÖªµÄ½ÚÃû¡°%s¡±"
-+msgid "%s: table for width: %lu bytes\n"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3023
-+#: locale/programs/ld-identification.c:171
- #, c-format
--msgid "%s: unknown symbol `%s' in equivalent definition"
--msgstr "%s£ºµÈ¼Û¶¨ÒåÖÐδ֪µÄ·ûºÅ¡°%s¡±"
-+msgid "%s: no identification for category `%s'"
-+msgstr ""
-
--#: posix/getopt.c:841 posix/getopt.c:844
-+#: locale/programs/ld-identification.c:436
- #, c-format
--msgid "%s: unrecognized option `%c%s'\n"
--msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°%c%s¡±\n"
-+msgid "%s: duplicate category version definition"
-+msgstr ""
-
--#: posix/getopt.c:830 posix/getopt.c:833
-+#: locale/programs/ld-measurement.c:114
- #, c-format
--msgid "%s: unrecognized option `--%s'\n"
--msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°--%s¡±\n"
-+msgid "%s: invalid value for field `%s'"
-+msgstr "%s£ºÓò¡°%s¡±ÖеÄÖµÎÞЧ"
-
--#: timezone/zic.c:449
-+#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:149
- #, c-format
--msgid ""
--"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
--"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
--msgstr ""
--"%s£ºÓ÷¨Îª %s [ -s ] [ -v ] [ -l ±¾µØʱ¼ä ] [ -p posix ¹æÔò ] \\\n"
--"\t[ -d Ŀ¼ ] [ -L leapseconds ] [ -y yearistype ] [ ÎļþÃû ... ]\n"
-+msgid "%s: field `%s' undefined"
-+msgstr "%s£º½â³ýÓò¡°%s¡±µÄ¶¨Òå"
-
--#: timezone/zdump.c:175
-+#: locale/programs/ld-messages.c:122 locale/programs/ld-messages.c:156
- #, c-format
--msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
--msgstr "%s£ºÓ÷¨Îª %s [ -v ] [ -c cutoff ] ÇøÓòÃû ...\n"
-+msgid "%s: value for field `%s' must not be an empty string"
-+msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
-
--#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:274
-+#: locale/programs/ld-messages.c:138 locale/programs/ld-messages.c:172
- #, c-format
--msgid "%s: value for field `%s' must be a single character"
--msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÊǵ¥¸ö×Ö·û"
-+msgid "%s: no correct regular expression for field `%s': %s"
-+msgstr "%s£ºÓò¡°%s¡±ÖÐûÓÐÕýÈ·µÄ³£¹æ±í´ïʽ£º%s"
-
--#: locale/programs/ld-monetary.c:308
-+#: locale/programs/ld-monetary.c:224
- #, c-format
--msgid "%s: value for field `%s' must be in range %d...%d"
--msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÔÚ %d...%d µÄ·¶Î§ÄÚ"
-+msgid "%s: value of field `int_curr_symbol' has wrong length"
-+msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµµÄ³¤¶È´íÎó"
-
--#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:154
-+#: locale/programs/ld-monetary.c:232
- #, c-format
--msgid "%s: value for field `%s' must not be an empty string"
--msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
-+msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
-+msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµÓÚ ISO 4217 ÖÐÈκÎÒ»¸öºÏ·¨µÄÃû³Æ¶¼²»¶ÔÓ¦"
-
- #: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
- #, c-format
- msgid "%s: value for field `%s' must not be the empty string"
- msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
-
--#: locale/programs/ld-monetary.c:232
-+#: locale/programs/ld-monetary.c:278 locale/programs/ld-monetary.c:308
- #, c-format
--msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
--msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµÓÚ ISO 4217 ÖÐÈκÎÒ»¸öºÏ·¨µÄÃû³Æ¶¼²»¶ÔÓ¦"
-+msgid "%s: value for field `%s' must be in range %d...%d"
-+msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÔÚ %d...%d µÄ·¶Î§ÄÚ"
-
--#: locale/programs/ld-monetary.c:224
-+#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:275
- #, c-format
--msgid "%s: value of field `int_curr_symbol' has wrong length"
--msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµµÄ³¤¶È´íÎó"
-+msgid "%s: value for field `%s' must be a single character"
-+msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÊǵ¥¸ö×Ö·û"
-+
-+#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:319
-+#, c-format
-+msgid "%s: `-1' must be last entry in `%s' field"
-+msgstr "%s£º¡°-1¡±±ØÐëÊÇ¡°%s¡±ÓòÖеÄ×îºóÒ»¸öÌõÄ¿"
-
--#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:339
-+#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:340
- #, c-format
- msgid "%s: values for field `%s' must be smaller than 127"
- msgstr "%s£ºÓò¡°%s¡±µÄÖµ±ØÐëСÓÚ 127"
-
--#: locale/programs/ld-time.c:509
--#, c-format
--msgid "%s: values for field `%s' must not be larger than %d"
--msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
-+#: locale/programs/ld-monetary.c:902
-+msgid "conversion rate value cannot be zero"
-+msgstr "ת»»ÂʵÄÖµ²»ÄÜΪ 0"
-
--#: locale/programs/ld-time.c:493 locale/programs/ld-time.c:501
-+#: locale/programs/ld-name.c:130 locale/programs/ld-telephone.c:127
-+#: locale/programs/ld-telephone.c:150
- #, c-format
--msgid "%s: values of field `%s' must not be larger than %d"
--msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
-+msgid "%s: invalid escape sequence in field `%s'"
-+msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐÎÞЧתÒåÐòÁÐ"
-
--#: locale/programs/ld-collate.c:850
-+#: locale/programs/ld-time.c:248
- #, c-format
--msgid "%s: weights must use the same ellipsis symbol as the name"
-+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
- msgstr ""
-
--#: sunrpc/rpc_main.c:308
-+#: locale/programs/ld-time.c:259
- #, c-format
--msgid "%s: while writing output %s: %m"
--msgstr "%s£ºÐ´ÈëÊä³ö %s ʱ£º%m"
--
--#: argp/argp-parse.c:170
--msgid "(PROGRAM ERROR) No version known!?"
--msgstr "(³ÌÐò´íÎó) ²»ÖªµÀ°æ±¾ºÅ£¡£¿"
--
--#: argp/argp-parse.c:787
--msgid "(PROGRAM ERROR) Option should have been recognized!?"
--msgstr "(³ÌÐò´íÎó) Ñ¡ÏîÓ¦¸Ã¿Éʶ±ð£¡£¿"
--
--#: nis/nis_print.c:133
--msgid "(Unknown object)\n"
--msgstr "(δ֪¶ÔÏó)\n"
-+msgid "%s: direction flag in string %Zd in `era' field is not a single character"
-+msgstr ""
-
--#: sunrpc/clnt_perr.c:133
-+#: locale/programs/ld-time.c:272
- #, c-format
--msgid "(unknown authentication error - %d)"
--msgstr "(δ֪µÄÈÏÖ¤´íÎó - %d)"
-+msgid "%s: invalid number for offset in string %Zd in `era' field"
-+msgstr ""
-
--#: sunrpc/rpcinfo.c:613
--msgid "(unknown)"
--msgstr "(δ֪)"
-+#: locale/programs/ld-time.c:280
-+#, c-format
-+msgid "%s: garbage at end of offset value in string %Zd in `era' field"
-+msgstr ""
-
--#: elf/sprof.c:570
-+#: locale/programs/ld-time.c:331
- #, c-format
--msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
--msgstr "*** Îļþ¡°%s¡±ÒÑ°þÀ룺²»¿ÉÄܽøÐÐϸ½Ú·ÖÎö\n"
-+msgid "%s: invalid starting date in string %Zd in `era' field"
-+msgstr ""
-
--#: catgets/gencat.c:282
--msgid "*standard input*"
--msgstr "*±ê×¼ÊäÈë*"
-+#: locale/programs/ld-time.c:340
-+#, c-format
-+msgid "%s: garbage at end of starting date in string %Zd in `era' field "
-+msgstr ""
-
--#: elf/cache.c:105
-+#: locale/programs/ld-time.c:359
- #, c-format
--msgid ", OS ABI: %s %d.%d.%d"
-+msgid "%s: starting date is invalid in string %Zd in `era' field"
- msgstr ""
-
--#: catgets/gencat.c:125
--msgid ""
--"-o OUTPUT-FILE [INPUT-FILE]...\n"
--"[OUTPUT-FILE [INPUT-FILE]...]"
-+#: locale/programs/ld-time.c:408
-+#, c-format
-+msgid "%s: invalid stopping date in string %Zd in `era' field"
- msgstr ""
--"-o Êä³öÎļþ [ÊäÈëÎļþ]...\n"
--"[Êä³öÎļþ [ÊäÈëÎļþ]...]"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:797
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
--msgid ".lib section in a.out corrupted"
--msgstr "a.out ÖÐµÄ .lib ½ÚÒѻٻµ"
-+#: locale/programs/ld-time.c:417
-+#, c-format
-+msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
-+msgstr ""
-
--#: sunrpc/clnt_perr.c:119 sunrpc/clnt_perr.c:140
-+#: locale/programs/ld-time.c:436
- #, c-format
--msgid "; low version = %lu, high version = %lu"
-+msgid "%s: stopping date is invalid in string %Zd in `era' field"
- msgstr ""
-
--#: sunrpc/clnt_perr.c:126
--msgid "; why = "
-+#: locale/programs/ld-time.c:445
-+#, c-format
-+msgid "%s: missing era name in string %Zd in `era' field"
- msgstr ""
-
--#: locale/programs/charmap.c:1004
-+#: locale/programs/ld-time.c:457
- #, c-format
--msgid "<%s> and <%s> are illegal names for range"
--msgstr "<%s> ºÍ <%s> ÊÇ·Ç·¨µÄ·¶Î§Ãû"
-+msgid "%s: missing era format in string %Zd in `era' field"
-+msgstr ""
-
--#: locale/programs/repertoire.c:448
-+#: locale/programs/ld-time.c:486
- #, c-format
--msgid "<%s> and <%s> are invalid names for range"
--msgstr "<%s> ºÍ <%s> ÊÇÎÞЧµÄ·¶Î§Ãû"
-+msgid "%s: third operand for value of field `%s' must not be larger than %d"
-+msgstr ""
-
--#: locale/programs/ld-ctype.c:573 locale/programs/ld-ctype.c:608
-+#: locale/programs/ld-time.c:494 locale/programs/ld-time.c:502
- #, c-format
--msgid "<SP> character must not be in class `%s'"
--msgstr "×Ö·û <SP> ²»ÄÜÊôÓÚÀà¡°%s¡±"
-+msgid "%s: values of field `%s' must not be larger than %d"
-+msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
-
--#: locale/programs/ld-ctype.c:561 locale/programs/ld-ctype.c:597
-+#: locale/programs/ld-time.c:510
- #, c-format
--msgid "<SP> character not in class `%s'"
--msgstr "×Ö·û <SP> ²»ÔÚÀà¡°%s¡±ÖÐ"
-+msgid "%s: values for field `%s' must not be larger than %d"
-+msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
-
--#. TRANS The experienced user will know what is wrong.
--#. TRANS @c This error code is a joke. Its perror text is part of the joke.
--#. TRANS @c Don't change it.
--#: stdio-common/../sysdeps/gnu/errlist.c:622
--msgid "?"
--msgstr "£¿"
-+#: locale/programs/ld-time.c:984
-+#, c-format
-+msgid "%s: too few values for field `%s'"
-+msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ýÉÙ"
-
--#: sysdeps/generic/siglist.h:34
--msgid "Aborted"
--msgstr "ÒÑ·ÅÆú"
-+#: locale/programs/ld-time.c:1029
-+msgid "extra trailing semicolon"
-+msgstr "¶àÓàµÄÖÕÖ¹·ÖºÅ"
-
--#: nis/nis_print.c:324
--msgid "Access Rights : "
--msgstr "·ÃÎÊȨÏÞ£º"
-+#: locale/programs/ld-time.c:1032
-+#, c-format
-+msgid "%s: too many values for field `%s'"
-+msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ý¶à"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:793
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
--msgid "Accessing a corrupted shared library"
--msgstr "ÕýÔÚ·ÃÎÊÒ»¸öÒѻٻµµÄ¹²Ïí¿â"
-+#: locale/programs/linereader.c:275
-+msgid "garbage at end of number"
-+msgstr "Êý×ÖĩβÓÐÀ¬»ø"
-
--#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
--#: stdio-common/../sysdeps/gnu/errlist.c:367
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
--msgid "Address already in use"
--msgstr "µØÖ·ÒÑÔÚʹÓÃ"
-+#: locale/programs/linereader.c:387
-+msgid "garbage at end of character code specification"
-+msgstr ""
-
--#: posix/../sysdeps/posix/gai_strerror.c:31
--msgid "Address family for hostname not supported"
--msgstr "²»Ö§³ÖµÄÖ÷»úÃûµØÖ·×å"
-+#: locale/programs/linereader.c:473
-+msgid "unterminated symbolic name"
-+msgstr "δÖÕÖ¹µÄ·ûºÅÃû"
-
--#. TRANS The address family specified for a socket is not supported; it is
--#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
--#: stdio-common/../sysdeps/gnu/errlist.c:362
--msgid "Address family not supported by protocol"
--msgstr "ЭÒé²»Ö§³ÖµÄµØÖ·×å"
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
-+msgid "invalid escape sequence"
-+msgstr "ÎÞЧµÄתÒåÐòÁÐ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
--msgid "Address family not supported by protocol family"
--msgstr "ЭÒé×å²»Ö§³ÖµÄµØÖ·×å"
-+#: locale/programs/linereader.c:600
-+msgid "illegal escape sequence at end of string"
-+msgstr "×Ö·û´®Ä©Î²µÄ·Ç·¨×ªÒåÐòÁÐ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:761
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
--msgid "Advertise error"
--msgstr ""
-+#: locale/programs/linereader.c:604 locale/programs/linereader.c:832
-+msgid "unterminated string"
-+msgstr "δÖÕÖ¹µÄ×Ö·û´®"
-
--#: stdio-common/../sysdeps/unix/siglist.c:40 sysdeps/generic/siglist.h:40
--msgid "Alarm clock"
--msgstr "ÄÖÖÓ"
-+#: locale/programs/linereader.c:646
-+msgid "non-symbolic character value should not be used"
-+msgstr "²»Ó¦¸ÃʹÓ÷ǷûºÅ×Ö·ûµÄÖµ"
-
--#: posix/../sysdeps/posix/gai_strerror.c:45
--msgid "All requests done"
--msgstr "Íê³ÉËùÓÐÇëÇó"
-+#: locale/programs/linereader.c:793
-+#, c-format
-+msgid "symbol `%.*s' not in charmap"
-+msgstr ""
-
--#: malloc/memusagestat.c:57
--msgid "Also draw graph for total memory consumption"
-+#: locale/programs/linereader.c:814
-+#, c-format
-+msgid "symbol `%.*s' not in repertoire map"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
--msgid "Anode table overflow"
-+#: locale/programs/linereader.h:162
-+msgid "trailing garbage at end of line"
- msgstr ""
-
--#: intl/tst-gettext2.c:38
--msgid "Another string for testing."
--msgstr "ÁíÒ»¸ö²âÊÔ×Ö·û´®¡£"
-+#: locale/programs/locale.c:75
-+msgid "System information:"
-+msgstr "ϵͳÐÅÏ¢£º"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
--msgid "Arg list too long"
--msgstr "²ÎÊýÁбí¹ý³¤"
-+#: locale/programs/locale.c:77
-+msgid "Write names of available locales"
-+msgstr "д³ö¿ÉÓÃÇøÓòµÄÃû³Æ"
-
--#. TRANS Argument list too long; used when the arguments passed to a new program
--#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
--#. TRANS File}) occupy too much memory space. This condition never arises in the
--#. TRANS GNU system.
--#: stdio-common/../sysdeps/gnu/errlist.c:70
--msgid "Argument list too long"
--msgstr "²ÎÊýÁбí¹ý³¤"
-+#: locale/programs/locale.c:79
-+msgid "Write names of available charmaps"
-+msgstr "д³ö¿ÉÓÃ×Ö·ûÓ³ÉäµÄÃû³Æ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
--msgid "Argument out of domain"
--msgstr ""
-+#: locale/programs/locale.c:80
-+msgid "Modify output format:"
-+msgstr "ÐÞ¸ÄÊä³ö¸ñʽ£º"
-
--#: nis/nis_error.c:66
--msgid "Attempt to remove a non-empty table"
--msgstr "ÊÔͼɾ³ý·Ç¿ÕµÄ±í"
-+#: locale/programs/locale.c:81
-+msgid "Write names of selected categories"
-+msgstr "д³öÑ¡Öз¶³ëµÄÃû³Æ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
--msgid "Attempting to link in more shared libraries than system limit"
--msgstr "ÊÔͼÁ¬½ÓµÄ¹²Ïí¿â¸öÊý³¬³öϵͳÏÞÖÆ"
-+#: locale/programs/locale.c:82
-+msgid "Write names of selected keywords"
-+msgstr "д³öÑ¡Öйؼü×ÖµÄÃû³Æ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:801
--msgid "Attempting to link in too many shared libraries"
--msgstr "ÊÔͼÓÚ¹ý¶àµÄ¹²Ïí¿âÏàÁ¬½Ó"
-+#: locale/programs/locale.c:83
-+msgid "Print more information"
-+msgstr "´òÓ¡¸ü¶àÐÅÏ¢"
-
--#: sunrpc/clnt_perr.c:354
--msgid "Authentication OK"
--msgstr "ÈÏÖ¤³É¹¦"
-+#: locale/programs/locale.c:88
-+msgid "Get locale-specific information."
-+msgstr "¸ø³öÇøÓòÌض¨µÄÐÅÏ¢¡£"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:562
--msgid "Authentication error"
--msgstr "ÈÏÖ¤´íÎó"
-+#: locale/programs/locale.c:91
-+msgid ""
-+"NAME\n"
-+"[-a|-m]"
-+msgstr ""
-
--#: nis/nis_print.c:109
--msgid "BOGUS OBJECT\n"
-+#: locale/programs/locale.c:512
-+msgid "while preparing output"
-+msgstr "×¼±¸Êä³öʱ"
-+
-+#: locale/programs/localedef.c:121
-+msgid "Input Files:"
-+msgstr "ÊäÈëÎļþ£º"
-+
-+#: locale/programs/localedef.c:123
-+msgid "Symbolic character names defined in FILE"
- msgstr ""
-
--#. TRANS Bad address; an invalid pointer was detected.
--#. TRANS In the GNU system, this error never happens; you get a signal instead.
--#: stdio-common/../sysdeps/gnu/errlist.c:115
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
--msgid "Bad address"
--msgstr "´íÎóµÄµØÖ·"
-+#: locale/programs/localedef.c:124
-+msgid "Source definitions are found in FILE"
-+msgstr "ÔÚ FILE ÖÐÕÒµ½Ô´¶¨Òå"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
--msgid "Bad exchange descriptor"
--msgstr "´íÎóµÄ½»»»ÃèÊö·û"
-+#: locale/programs/localedef.c:126
-+msgid "FILE contains mapping from symbolic names to UCS4 values"
-+msgstr ""
-
--#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
--#. TRANS closed or reading from a descriptor open only for writing (or vice
--#. TRANS versa).
--#: stdio-common/../sysdeps/gnu/errlist.c:83
--msgid "Bad file descriptor"
--msgstr "´íÎóµÄÎļþÃèÊö·û"
-+#: locale/programs/localedef.c:130
-+msgid "Create output even if warning messages were issued"
-+msgstr "¼´Ê¹³öÏÖ¾¯¸æÏûÏ¢Ò²´´½¨Êä³ö"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
--msgid "Bad file number"
--msgstr "´íÎóµÄÎļþ±àºÅ"
-+#: locale/programs/localedef.c:131
-+msgid "Create old-style tables"
-+msgstr "´´½¨¾É·ç¸ñ±í¸ñ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:749
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
--msgid "Bad font file format"
--msgstr "´íÎóµÄ×ÖÌåÎļþ¸ñʽ"
-+#: locale/programs/localedef.c:132
-+msgid "Optional output file prefix"
-+msgstr "¿ÉÑ¡µÄÊä³öÎļþǰ׺"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:641
--msgid "Bad message"
--msgstr "´íÎóµÄÏûÏ¢"
-+#: locale/programs/localedef.c:133
-+msgid "Be strictly POSIX conform"
-+msgstr "Ñϸñ×ñÑ­ POSIX"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
--msgid "Bad request code"
--msgstr "´íÎóµÄÇëÇóÂë"
-+#: locale/programs/localedef.c:135
-+msgid "Suppress warnings and information messages"
-+msgstr "¹Ø±Õ¾¯¸æºÍÐÅÏ¢ÏûÏ¢"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
--msgid "Bad request descriptor"
--msgstr "´íÎóµÄÇëÇóÃèÊö·û"
-+#: locale/programs/localedef.c:136
-+msgid "Print more messages"
-+msgstr "´òÓ¡¸ü¶àÏûÏ¢"
-
--#: stdio-common/../sysdeps/unix/siglist.c:38 sysdeps/generic/siglist.h:63
--msgid "Bad system call"
--msgstr "´íÎóµÄϵͳµ÷ÓÃ"
-+#: locale/programs/localedef.c:137
-+msgid "Archive control:"
-+msgstr "¹éµµ¿ØÖÆ£º"
-+
-+#: locale/programs/localedef.c:139
-+msgid "Don't add new data to archive"
-+msgstr "²»Òª½«ÐÂÊý¾ÝÌí¼Óµ½¹éµµÎļþÖÐ"
-+
-+#: locale/programs/localedef.c:141
-+msgid "Add locales named by parameters to archive"
-+msgstr "½«ÓɲÎÊýÃüÃûµÄÇøÓòÌí¼Óµ½¹éµµÎļþÖÐ"
-+
-+#: locale/programs/localedef.c:142
-+msgid "Replace existing archive content"
-+msgstr "Ìæ»»ÏÖÓеĹ鵵ÎļþÄÚÈÝ"
-+
-+#: locale/programs/localedef.c:144
-+msgid "Remove locales named by parameters from archive"
-+msgstr "´Ó¹éµµÎļþÖÐɾ³ýÓɲÎÊýÃüÃûµÄÇøÓò"
-+
-+#: locale/programs/localedef.c:145
-+msgid "List content of archive"
-+msgstr "Áгö¹éµµÎļþµÄÄÚÈÝ"
-+
-+#: locale/programs/localedef.c:147
-+msgid "locale.alias file to consult when making archive"
-+msgstr "ÔÚÖÆ×÷¹éµµÎļþʱ²Î¿¼ locale.alias Îļþ"
-
--#: posix/../sysdeps/posix/gai_strerror.c:33
--msgid "Bad value for ai_flags"
--msgstr "´íÎóµÄ ai_flags µÄÖµ"
-+#: locale/programs/localedef.c:152
-+msgid "Compile locale specification"
-+msgstr "±àÒëÇøÓò¹æ·¶"
-
--#: locale/programs/localedef.c:104
--msgid "Be strictly POSIX conform"
--msgstr "Ñϸñ×ñÑ­ POSIX"
-+#: locale/programs/localedef.c:155
-+msgid ""
-+"NAME\n"
-+"[--add-to-archive|--delete-from-archive] FILE...\n"
-+"--list-archive [FILE]"
-+msgstr ""
-+"Ãû³Æ\n"
-+"[--add-to-archive|--delete-from-archive] Îļþ...\n"
-+"--list-archive [Îļþ]"
-+
-+#: locale/programs/localedef.c:233
-+msgid "cannot create directory for output files"
-+msgstr "ÎÞ·¨ÎªÊä³öÎļþ´´½¨Ä¿Â¼"
-
--#: nis/nis_print.c:305
--msgid "Binary data\n"
--msgstr "¶þ½øÖÆÊý¾Ý\n"
-+#: locale/programs/localedef.c:244
-+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
-+msgstr "ÖÂÃü´íÎó£ºÏµÍ³Î´¶¨Òå¡°_POSIX2_LOCALEDEF¡±"
-
--#. TRANS A file that isn't a block special file was given in a situation that
--#. TRANS requires one. For example, trying to mount an ordinary file as a file
--#. TRANS system in Unix gives this error.
--#: stdio-common/../sysdeps/gnu/errlist.c:122
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
--msgid "Block device required"
--msgstr "ÐèÒª¿éÉ豸"
-+#: locale/programs/localedef.c:258 locale/programs/localedef.c:274
-+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
-+#, c-format
-+msgid "cannot open locale definition file `%s'"
-+msgstr "ÎÞ·¨´ò¿ªÇøÓò¶¨ÒåÎļþ¡°%s¡±"
-
--#: sunrpc/pmap_rmt.c:348
--msgid "Broadcast poll problem"
-+#: locale/programs/localedef.c:286
-+#, c-format
-+msgid "cannot write output files to `%s'"
-+msgstr "ÎÞ·¨½«Êä³öÎļþдÈë¡°%s¡±"
-+
-+#: locale/programs/localedef.c:367
-+#, c-format
-+msgid ""
-+"System's directory for character maps : %s\n"
-+" repertoire maps: %s\n"
-+" locale path : %s\n"
-+"%s"
- msgstr ""
-
--#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
--#. TRANS Every library function that returns this error code also generates a
--#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
--#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
--#. TRANS unless it has handled or blocked @code{SIGPIPE}.
--#: stdio-common/../sysdeps/gnu/errlist.c:235
--#: stdio-common/../sysdeps/unix/siglist.c:39
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
--#: sysdeps/generic/siglist.h:39
--msgid "Broken pipe"
--msgstr "¶Ï¿ªµÄ¹ÜµÀ"
-+#: locale/programs/localedef.c:567
-+msgid "circular dependencies between locale definitions"
-+msgstr "ÇøÓò¶¨ÒåÖеÄÑ­»·ÒÐÀµ"
-
--#: stdio-common/../sysdeps/unix/siglist.c:36 sysdeps/generic/siglist.h:37
--msgid "Bus error"
--msgstr "×ÜÏß´íÎó"
-+#: locale/programs/localedef.c:573
-+#, c-format
-+msgid "cannot add already read locale `%s' a second time"
-+msgstr "ÎÞ·¨ÔÙ´ÎÌí¼ÓÒѾ­¶ÁÈëµÄ¡°%s¡±"
-
--#: stdio-common/../sysdeps/unix/siglist.c:50 sysdeps/generic/siglist.h:50
--msgid "CPU time limit exceeded"
--msgstr "³¬³ö CPU ʱÏÞ"
-+#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
-+msgid "cannot create temporary file"
-+msgstr "ÎÞ·¨´´½¨ÁÙʱÎļþ"
-
--#: nis/nis_error.c:33
--msgid "Cache expired"
--msgstr "»º³åÆ÷¹ýÆÚ"
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
-+msgid "cannot initialize archive file"
-+msgstr "ÎÞ·¨³õʼ»¯¹éµµÎļþ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:789
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
--msgid "Can not access a needed shared library"
--msgstr "ÎÞ·¨·ÃÎʱØÐëµÄ¹²Ïí¿â"
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
-+msgid "cannot resize archive file"
-+msgstr "ÎÞ·¨¸Ä±ä¹éµµÎļþµÄ´óС"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
--msgid "Can not exec a shared library directly"
--msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
-+msgid "cannot map archive header"
-+msgstr "ÎÞ·¨Ó³Éä¹éµµÎļþÍ·"
-
--#: nis/ypclnt.c:794
--msgid "Can't bind to server which serves this domain"
--msgstr "ÎÞ·¨ÓÚΪ´ËÓò·þÎñµÄ·þÎñÆ÷°ó¶¨"
-+#: locale/programs/locarchive.c:156
-+msgid "failed to create new locale archive"
-+msgstr "ÎÞ·¨´´½¨ÐÂÇøÓò¹éµµÎļþ"
-
--#: elf/ldconfig.c:1008
--msgid "Can't chdir to /"
--msgstr ""
-+#: locale/programs/locarchive.c:168
-+msgid "cannot change mode of new locale archive"
-+msgstr "ÎÞ·¨¸Ä±äй鵵ÎļþµÄģʽ"
-
--#: nis/ypclnt.c:806
--msgid "Can't communicate with portmapper"
--msgstr "ÎÞ·¨Óë portmapper ͨѶ"
-+#: locale/programs/locarchive.c:253
-+msgid "cannot map locale archive file"
-+msgstr "ÎÞ·¨Ó³ÉäÇøÓò¹éµµÎļþ"
-
--#: nis/ypclnt.c:808
--msgid "Can't communicate with ypbind"
--msgstr "ÎÞ·¨Óë ypbind ͨѶ"
-+#: locale/programs/locarchive.c:329
-+msgid "cannot lock new archive"
-+msgstr "ÎÞ·¨Ëø¶¨Ð¹鵵Îļþ"
-
--#: nis/ypclnt.c:810
--msgid "Can't communicate with ypserv"
--msgstr "ÎÞ·¨Óë ypserv ͨѶ"
-+#: locale/programs/locarchive.c:380
-+msgid "cannot extend locale archive file"
-+msgstr "ÎÞ·¨À©Õ¹ÇøÓò¹éµµÎļþ"
-+
-+#: locale/programs/locarchive.c:389
-+msgid "cannot change mode of resized locale archive"
-+msgstr "ÎÞ·¨¸Ä±ä¹ý´óСµÄÇøÓò¹éµµÎļþµÄģʽ"
-+
-+#: locale/programs/locarchive.c:397
-+msgid "cannot rename new archive"
-+msgstr "ÎÞ·¨¸Ä±äй鵵ÎļþµÄÃû³Æ"
-
--#: elf/cache.c:394
-+#: locale/programs/locarchive.c:450
- #, c-format
--msgid "Can't create temporary cache file %s"
--msgstr "ÎÞ·¨´´½¨ÁÙʱ»º³åÎļþ %s"
-+msgid "cannot open locale archive \"%s\""
-+msgstr "ÎÞ·¨´ò¿ªÇøÓò¹éµµÎļþ¡°%s¡±"
-
--#: elf/ldconfig.c:512
-+#: locale/programs/locarchive.c:455
- #, c-format
--msgid "Can't find %s"
--msgstr "ÎÞ·¨ÕÒµ½ %s"
-+msgid "cannot stat locale archive \"%s\""
-+msgstr "ÎÞ·¨¶ÔÇøÓò¹éµµÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷"
-
--#: elf/ldconfig.c:449
-+#: locale/programs/locarchive.c:474
- #, c-format
--msgid "Can't link %s to %s"
--msgstr "ÎÞ·¨½« %s Á¬½Óµ½ %s"
-+msgid "cannot lock locale archive \"%s\""
-+msgstr "ÎÞ·¨Ëø¶¨ÇøÓò¹éµµÎļþ¡°%s¡±"
-
--#: elf/ldconfig.c:528
-+#: locale/programs/locarchive.c:497
-+msgid "cannot read archive header"
-+msgstr "ÎÞ·¨¶ÁÈë¹éµµÎļþÍ·"
-+
-+#: locale/programs/locarchive.c:557
- #, c-format
--msgid "Can't lstat %s"
--msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
-+msgid "locale '%s' already exists"
-+msgstr "ÇøÓò¡°%s¡±ÒÑ´æÔÚ"
-+
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
-+#: locale/programs/locfile.c:343
-+msgid "cannot add to locale archive"
-+msgstr "ÎÞ·¨Ìí¼Óµ½ÇøÓò¹éµµÎļþ"
-
--#: elf/cache.c:131 elf/ldconfig.c:1029
-+#: locale/programs/locarchive.c:982
- #, c-format
--msgid "Can't open cache file %s\n"
--msgstr "ÎÞ·¨´ò¿ª»º³åÎļþ %s\n"
-+msgid "locale alias file `%s' not found"
-+msgstr "ÕÒ²»µ½ÇøÓò±ðÃûÎļþ¡°%s¡±"
-
--#: elf/ldconfig.c:1050
-+#: locale/programs/locarchive.c:1126
- #, c-format
--msgid "Can't open cache file directory %s\n"
--msgstr "ÎÞ·¨´ò¿ª»º³åÎļþĿ¼ %s\n"
-+msgid "Adding %s\n"
-+msgstr "ÕýÔÚÌí¼Ó %s\n"
-
--#: elf/ldconfig.c:924
-+#: locale/programs/locarchive.c:1132
- #, c-format
--msgid "Can't open configuration file %s"
--msgstr "ÎÞ·¨´ò¿ªÅäÖÃÎļþ %s"
-+msgid "stat of \"%s\" failed: %s: ignored"
-+msgstr "ÎÞ·¨¶Ô¡°%s¡±ÔËÐÐ stat£º%s£ººöÂÔ"
-
--#: elf/ldconfig.c:634
-+#: locale/programs/locarchive.c:1138
- #, c-format
--msgid "Can't open directory %s"
--msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼ %s"
-+msgid "\"%s\" is no directory; ignored"
-+msgstr "¡°%s¡±²»ÊÇĿ¼£»ºöÂÔ"
-
--#: elf/cache.c:387
-+#: locale/programs/locarchive.c:1145
- #, c-format
--msgid "Can't remove old temporary cache file %s"
--msgstr "ÎÞ·¨É¾³ý¾ÉÁÙʱ»º³åÎļþ %s"
-+msgid "cannot open directory \"%s\": %s: ignored"
-+msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼¡°%s¡±£º%s£ººöÂÔ"
-
--#: elf/ldconfig.c:344
-+#: locale/programs/locarchive.c:1217
- #, c-format
--msgid "Can't stat %s"
--msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
-+msgid "incomplete set of locale files in \"%s\""
-+msgstr "¡°%s¡±ÖеÄÇøÓòÎļþ²»ÍêÕû"
-
--#: elf/ldconfig.c:414
-+#: locale/programs/locarchive.c:1281
- #, c-format
--msgid "Can't stat %s\n"
--msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷\n"
-+msgid "cannot read all files in \"%s\": ignored"
-+msgstr "ÎÞ·¨¶ÁÈë¡°%s¡±ÖеÄËùÓÐÎļþ£ººöÂÔ"
-
--#: elf/ldconfig.c:443
-+#: locale/programs/locarchive.c:1351
- #, c-format
--msgid "Can't unlink %s"
--msgstr ""
--
--#. TRANS No memory available. The system cannot allocate more virtual memory
--#. TRANS because its capacity is full.
--#: stdio-common/../sysdeps/gnu/errlist.c:104
--msgid "Cannot allocate memory"
--msgstr "ÎÞ·¨·ÖÅäÄÚ´æ"
--
--#. TRANS The requested socket address is not available; for example, you tried
--#. TRANS to give a socket a name that doesn't match the local host name.
--#. TRANS @xref{Socket Addresses}.
--#: stdio-common/../sysdeps/gnu/errlist.c:374
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
--msgid "Cannot assign requested address"
--msgstr "ÎÞ·¨Ö¸¶¨±»ÇëÇóµÄµØÖ·"
--
--#: sunrpc/pmap_rmt.c:265
--msgid "Cannot create socket for broadcast rpc"
--msgstr "ÎÞ·¨Îª¹ã²¥ rpc ´´½¨Ì×½Ó×Ö"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:805
--msgid "Cannot exec a shared library directly"
--msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
-+msgid "locale \"%s\" not in archive"
-+msgstr "ÇøÓò¡°%s¡±Ôڹ鵵ÎļþÖÐ"
-
--#: elf/readlib.c:99
-+#: locale/programs/locfile.c:132
- #, c-format
--msgid "Cannot fstat file %s.\n"
--msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ fstat ²Ù×÷¡£\n"
-+msgid "argument to `%s' must be a single character"
-+msgstr "¡°%s¡±µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
-
--#: sunrpc/rpc_main.c:1417
--msgid "Cannot have more than one file generation flag!\n"
--msgstr "ÎÞ·¨Ê¹ÓöàÓÚÒ»¸öµÄÎļþÉú³É±êÖ¾£¡\n"
-+#: locale/programs/locfile.c:251
-+msgid "syntax error: not inside a locale definition section"
-+msgstr "Óï·¨´íÎ󣺲»ÔÚÇøÓò¶¨Òå½ÚÖ®ÖÐ"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:732
-+#: locale/programs/locfile.c:625
- #, c-format
--msgid "Cannot lstat %s"
--msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
-+msgid "cannot open output file `%s' for category `%s'"
-+msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´ò¿ªÊä³öÎļþ¡°%1$s¡±"
-
--#: elf/readlib.c:118
-+#: locale/programs/locfile.c:649
- #, c-format
--msgid "Cannot mmap file %s.\n"
--msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ mmap ²Ù×÷¡£\n"
--
--#: sunrpc/pmap_rmt.c:361
--msgid "Cannot receive reply to broadcast"
--msgstr "ÎÞ·¨½ÓÊնԹ㲥µÄÓ¦´ð"
--
--#: sunrpc/pmap_clnt.c:136
--msgid "Cannot register service"
--msgstr "ÎÞ·¨×¢²á·þÎñ"
--
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
--msgid "Cannot send after socket shutdown"
--msgstr "ÎÞ·¨ÔÚÌ×½Ó×ֹرպó·¢ËÍ"
-+msgid "failure while writing data for category `%s'"
-+msgstr "Ϊ·¶³ë¡°%s¡±Ð´ÈëÊý¾Ýʧ°Ü"
-
--#. TRANS The socket has already been shut down.
--#: stdio-common/../sysdeps/gnu/errlist.c:435
--msgid "Cannot send after transport endpoint shutdown"
--msgstr "ÎÞ·¨ÔÚ´«Êä¶Ëµã¹Ø±ÕÒÔºó·¢ËÍ"
-+#: locale/programs/locfile.c:745
-+#, c-format
-+msgid "cannot create output file `%s' for category `%s'"
-+msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´´½¨Êä³öÎļþ¡°%1$s¡±"
-
--#: sunrpc/pmap_rmt.c:323
--msgid "Cannot send broadcast packet"
--msgstr "ÎÞ·¨·¢Ë͹㲥°ü"
-+#: locale/programs/locfile.h:59
-+msgid "expect string argument for `copy'"
-+msgstr "¡°copy¡±ÐèÒª×Ö·û´®²ÎÊý"
-
--#: sunrpc/pmap_rmt.c:272
--msgid "Cannot set socket option SO_BROADCAST"
--msgstr "ÎÞ·¨ÉèÖÃÌ×½Ó×ÖÑ¡Ïî SO_BROADCAST"
-+#: locale/programs/locfile.h:63
-+msgid "locale name should consist only of portable characters"
-+msgstr "ÇøÓòÃû³ÆÓ¦¸Ã½öÓÉ¿ÉÒÆÖ²µÄ×Ö·û×é³É"
-
--#: sunrpc/rpc_main.c:1195
--msgid "Cannot specify more than one input file!\n"
--msgstr "ÎÞ·¨Ö¸¶¨¶à¸öÊäÈëÎļþ£¡\n"
-+#: locale/programs/locfile.h:82
-+msgid "no other keyword shall be specified when `copy' is used"
-+msgstr "ʹÓá°copy¡±Ê±²»Ó¦ÔÙʹÓÃÆäËü¹Ø¼ü×Ö"
-
--#: elf/ldconfig.c:701
-+#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-+#: locale/programs/repertoire.c:296
- #, c-format
--msgid "Cannot stat %s"
--msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
--
--#: sunrpc/rpc_main.c:1374
--msgid "Cannot use netid flag with inetd flag!\n"
--msgstr "ÎÞ·¨ÔÚʹÓà inetd ±êÖ¾µÄͬʱʹÓà netid ±êÖ¾£¡\n"
--
--#: sunrpc/rpc_main.c:1386
--msgid "Cannot use netid flag without TIRPC!\n"
--msgstr "ÎÞ·¨ÔÚδʹÓà TIRPC µÄʱºòʹÓà netid ±êÖ¾£¡\n"
-+msgid "syntax error in repertoire map definition: %s"
-+msgstr ""
-
--#: sunrpc/rpc_main.c:1393
--msgid "Cannot use table flags with newstyle!\n"
--msgstr "ÎÞ·¨ÒÔзç¸ñʹÓñí¸ñ±êÖ¾£¡\n"
-+#: locale/programs/repertoire.c:272
-+msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
-+msgstr "¼´Î´¸ø³ö <Uxxxx> Ҳδ¸ø³ö <Uxxxxxxxx>"
-
--#: elf/ldconfig.c:126
--msgid "Change to and use ROOT as root directory"
--msgstr "½øÈë ROOT Ŀ¼²¢½«Æä×÷Ϊ¸ùĿ¼"
-+#: locale/programs/repertoire.c:332
-+msgid "cannot safe new repertoire map"
-+msgstr ""
-
--#: elf/cache.c:426
-+#: locale/programs/repertoire.c:343
- #, c-format
--msgid "Changing access rights of %s to %#o failed"
--msgstr "½« %s µÄ·ÃÎÊȨÏ޸ıäΪ %#o ʧ°Ü"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:689
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
--msgid "Channel number out of range"
-+msgid "repertoire map file `%s' not found"
- msgstr ""
-
--#: nis/nis_print.c:268
-+#: locale/programs/repertoire.c:450
- #, c-format
--msgid "Character Separator : %c\n"
--msgstr "×Ö·û·Ö¸ô·û£º%c\n"
-+msgid "<%s> and <%s> are invalid names for range"
-+msgstr "<%s> ºÍ <%s> ÊÇÎÞЧµÄ·¶Î§Ãû"
-
--#: stdio-common/../sysdeps/unix/siglist.c:46 sysdeps/generic/siglist.h:46
--msgid "Child exited"
--msgstr "×Ó½ø³ÌÒÑÍ˳ö"
-+#: locale/programs/repertoire.c:457
-+msgid "upper limit in range is not smaller then lower limit"
-+msgstr "·¶Î§µÄÉÏÏÞ²¢²»Ð¡ÓÚÏÂÏÞ"
-
--#: sunrpc/clnt_perr.c:373
--msgid "Client credential too weak"
--msgstr ""
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
-+msgid "memory exhausted"
-+msgstr "ÄÚ´æºÄ¾¡"
-
--#: nis/nis_print.c:270
--msgid "Columns :\n"
--msgstr ""
-+#: assert/assert-perr.c:57
-+#, c-format
-+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-+msgstr "%s%s%s£º%u£º%s%sÒâÍâµÄ´íÎó£º%s¡£\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:769
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
--msgid "Communication error on send"
--msgstr "·¢ËÍʱ³öÏÖͨѶ´íÎó"
-+#: assert/assert.c:56
-+#, c-format
-+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-+msgstr "%s%s%s£º%u£º%s%s¶ÏÑÔ¡°%s¡±Ê§°Ü¡£\n"
-
--#: locale/programs/localedef.c:112
--msgid "Compile locale specification"
--msgstr "±àÒëÇøÓò¹æ·¶"
-+#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
-+msgid "cheese"
-+msgstr "ÄÌÀÒ"
-
--#. TRANS Go home and have a glass of warm, dairy-fresh milk.
--#: stdio-common/../sysdeps/gnu/errlist.c:632
--msgid "Computer bought the farm"
--msgstr ""
-+#: intl/tst-gettext2.c:37
-+msgid "First string for testing."
-+msgstr "µÚÒ»¸öÓÃÓÚ²âÊÔµÄ×Ö·û´®¡£"
-
--#: elf/ldconfig.c:136
--msgid "Configure Dynamic Linker Run Time Bindings."
--msgstr ""
-+#: intl/tst-gettext2.c:38
-+msgid "Another string for testing."
-+msgstr "ÁíÒ»¸ö²âÊÔ×Ö·û´®¡£"
-
--#. TRANS A remote host refused to allow the network connection (typically because
--#. TRANS it is not running the requested service).
--#: stdio-common/../sysdeps/gnu/errlist.c:452
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
--msgid "Connection refused"
--msgstr "¾Ü¾øÁ¬½Ó"
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
-+msgid "NAME"
-+msgstr "Ãû³Æ"
-
--#. TRANS A network connection was closed for reasons outside the control of the
--#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
--#. TRANS protocol violation.
--#: stdio-common/../sysdeps/gnu/errlist.c:402
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
--msgid "Connection reset by peer"
--msgstr ""
-+#: catgets/gencat.c:112
-+msgid "Create C header file NAME containing symbol definitions"
-+msgstr "´´½¨º¬ÓзûºÅ¶¨ÒåµÄ¸ø¶¨Ãû³ÆµÄ C Í·Îļþ"
-
--#. TRANS A socket operation with a specified timeout received no response during
--#. TRANS the timeout period.
--#: stdio-common/../sysdeps/gnu/errlist.c:446
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
--msgid "Connection timed out"
--msgstr "Á¬½Ó³¬Ê±"
-+#: catgets/gencat.c:114
-+msgid "Do not use existing catalog, force new output file"
-+msgstr "²»Ê¹ÓÃÏÖÓеķÖÀ࣬ǿÖÆ´´½¨ÐÂÊä³öÎļþ"
-
--#: stdio-common/../sysdeps/unix/siglist.c:45 sysdeps/generic/siglist.h:45
--msgid "Continued"
--msgstr ""
-+#: catgets/gencat.c:115
-+msgid "Write output to file NAME"
-+msgstr "½«Êä³öдÈëµ½Ö¸¶¨ÎļþÖÐ"
-
--#: iconv/iconv_prog.c:73
--msgid "Convert encoding of given files from one encoding to another."
-+#: catgets/gencat.c:120
-+msgid ""
-+"Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
-+"is -, output is written to standard output.\n"
- msgstr ""
-
--#: catgets/gencat.c:246 elf/ldconfig.c:259 elf/sprof.c:355
--#: iconv/iconv_prog.c:393 iconv/iconvconfig.c:335 locale/programs/locale.c:281
--#: locale/programs/localedef.c:311 nscd/nscd.c:287 nscd/nscd_nischeck.c:90
--#: nss/getent.c:63 posix/getconf.c:904
--#, c-format
-+#: catgets/gencat.c:125
- msgid ""
--"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"
-+"-o OUTPUT-FILE [INPUT-FILE]...\n"
-+"[OUTPUT-FILE [INPUT-FILE]...]"
- msgstr ""
-+"-o Êä³öÎļþ [ÊäÈëÎļþ]...\n"
-+"[Êä³öÎļþ [ÊäÈëÎļþ]...]"
-
--#: nscd/nscd_conf.c:166
--#, c-format
--msgid "Could not create log file \"%s\""
--msgstr "ÎÞ·¨´´½¨ÈÕÖ¾Îļþ¡°%s¡±"
-+#: catgets/gencat.c:282
-+msgid "*standard input*"
-+msgstr "*±ê×¼ÊäÈë*"
-
--#: catgets/gencat.c:112
--msgid "Create C header file NAME containing symbol definitions"
--msgstr ""
-+#: catgets/gencat.c:417 catgets/gencat.c:494
-+msgid "illegal set number"
-+msgstr "·Ç·¨µÄ¼¯ºÏ±àºÅ"
-
--#: iconv/iconvconfig.c:110
--msgid "Create fastloading iconv module configuration file."
--msgstr "´´½¨¿ìËÙ×°Èë iconv Ä£¿éÅäÖÃÎļþ¡£"
-+#: catgets/gencat.c:444
-+msgid "duplicate set definition"
-+msgstr "Öظ´µÄ¼¯ºÏ¶¨Òå"
-
--#: locale/programs/localedef.c:102
--msgid "Create old-style tables"
--msgstr "´´½¨¾É·ç¸ñ±í¸ñ"
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
-+msgid "this is the first definition"
-+msgstr "ÕâÊǵÚÒ»¸ö¶¨Òå"
-
--#: locale/programs/localedef.c:101
--msgid "Create output even if warning messages were issued"
--msgstr "¼´Ê¹³öÏÖ¾¯¸æÏûÏ¢Ò²´´½¨Êä³ö"
-+#: catgets/gencat.c:522
-+#, c-format
-+msgid "unknown set `%s'"
-+msgstr "δ֪¼¯ºÏ¡°%s¡±"
-
--#: nis/nis_print.c:329
-+#: catgets/gencat.c:563
-+msgid "invalid quote character"
-+msgstr "ÎÞЧµÄÒýÓÃ×Ö·û"
-+
-+#: catgets/gencat.c:576
- #, c-format
--msgid "Creation Time : %s"
--msgstr "´´½¨Ê±¼ä£º%s"
-+msgid "unknown directive `%s': line ignored"
-+msgstr "δ֪µÄÖ¸Áî¡°%s¡±£ººöÂÔ´ËÐÐ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
--msgid "Cross-device link"
--msgstr "¿çÉ豸Á¬½Ó"
-+#: catgets/gencat.c:621
-+msgid "duplicated message number"
-+msgstr "Öظ´µÄÏûÏ¢±àºÅ"
-
--#: malloc/memusagestat.c:67
--msgid "DATAFILE [OUTFILE]"
--msgstr "Êý¾ÝÎļþ [Êä³öÎļþ]"
-+#: catgets/gencat.c:674
-+msgid "duplicated message identifier"
-+msgstr "Öظ´µÄÏûÏ¢±êʶ·û"
-
--#: nis/nss_nisplus/nisplus-publickey.c:96
--#: nis/nss_nisplus/nisplus-publickey.c:172
--#, c-format
--msgid "DES entry for netname %s not unique\n"
--msgstr ""
-+#: catgets/gencat.c:731
-+msgid "invalid character: message ignored"
-+msgstr "ÎÞЧµÄ×Ö·û£ººöÂÔÏûÏ¢"
-
--#: nis/nis_print.c:115
--msgid "DIRECTORY\n"
--msgstr "Ŀ¼\n"
-+#: catgets/gencat.c:774
-+msgid "invalid line"
-+msgstr "ÎÞЧµÄÐÐ"
-
--#: elf/dl-deps.c:101 elf/dl-open.c:188
--msgid "DST not allowed in SUID/SGID programs"
-+#: catgets/gencat.c:828
-+msgid "malformed line ignored"
- msgstr ""
-
--#: elf/dl-error.c:71
--msgid "DYNAMIC LINKER BUG!!!"
--msgstr ""
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
-+#, c-format
-+msgid "cannot open output file `%s'"
-+msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ¡°%s¡±"
-
--#: nis/nis_error.c:52
--msgid "Database for table does not exist"
--msgstr "±í¸ñÊý¾Ý¿â²»´æÔÚ"
-+#: catgets/gencat.c:1217
-+msgid "unterminated message"
-+msgstr "δÖÕÖ¹µÄÏûÏ¢"
-
--#: nis/ypclnt.c:820
--msgid "Database is busy"
--msgstr "Êý¾Ý¿âæ"
-+#: catgets/gencat.c:1241
-+msgid "while opening old catalog file"
-+msgstr "ÔÚ´ò¿ª¾É·ÖÀàÎļþʱ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
--msgid "Deadlock situation detected/avoided"
--msgstr ""
--
--#: nis/nis_print.c:229
--msgid "Default Access rights :\n"
--msgstr "ĬÈÏ·ÃÎÊȨÏÞ £º\n"
--
--#. TRANS No default destination address was set for the socket. You get this
--#. TRANS error when you try to transmit data over a connectionless socket,
--#. TRANS without first specifying a destination for the data with @code{connect}.
--#: stdio-common/../sysdeps/gnu/errlist.c:430
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
--msgid "Destination address required"
--msgstr "ÐèҪĿ±êµØÖ·"
--
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
--msgid "Device busy"
--msgstr "É豸æ"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:669
--msgid "Device not a stream"
--msgstr "É豸²»ÊÇÁ÷"
--
--#. TRANS Resource busy; a system resource that can't be shared is already in use.
--#. TRANS For example, if you try to delete a file that is the root of a currently
--#. TRANS mounted filesystem, you get this error.
--#: stdio-common/../sysdeps/gnu/errlist.c:129
--msgid "Device or resource busy"
--msgstr "É豸»ò×ÊԴæ"
--
--#: nis/nis_print.c:183
--#, c-format
--msgid "Diffie-Hellmann (%d bits)\n"
--msgstr ""
--
--#: nis/nis_print.c:321
--#, c-format
--msgid "Directory : %s\n"
--msgstr "Ŀ¼ £º%s\n"
--
--#. TRANS Directory not empty, where an empty directory was expected. Typically,
--#. TRANS this error occurs when you are trying to delete a directory.
--#: stdio-common/../sysdeps/gnu/errlist.c:481
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
--msgid "Directory not empty"
--msgstr "Ŀ¼·Ç¿Õ"
--
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
--msgid "Disc quota exceeded"
--msgstr "³¬³ö´ÅÅÌÏÞ¶î"
--
--#. TRANS The user's disk quota was exceeded.
--#: stdio-common/../sysdeps/gnu/errlist.c:499
--msgid "Disk quota exceeded"
--msgstr "³¬³ö´ÅÅÌÏÞ¶î"
--
--#: nscd/nscd.c:86
--msgid "Do not fork and display messages on the current tty"
--msgstr ""
--
--#: catgets/gencat.c:114
--msgid "Do not use existing catalog, force new output file"
--msgstr ""
--
--#: nis/ypclnt.c:866
--msgid "Domain not bound"
--msgstr "δ°ó¶¨Óò"
-+#: catgets/gencat.c:1332
-+msgid "conversion modules not available"
-+msgstr "ת»»Ä£¿é²»¿ÉÓÃ"
-
--#: elf/ldconfig.c:124
--msgid "Don't build cache"
--msgstr "²»Òª´´½¨»º³åÇø"
-+#: catgets/gencat.c:1358
-+msgid "cannot determine escape character"
-+msgstr "ÎÞ·¨È·¶¨×ªÒå×Ö·û"
-
--#: elf/ldconfig.c:125
--msgid "Don't generate links"
--msgstr "²»ÒªÉú³ÉÁ¬½Ó"
-+#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
-+msgid "makecontext: does not know how to handle more than 8 arguments\n"
-+msgstr "makecontext£º²»ÖªµÀ¸ÃÈçºÎ´¦Àí¶àÓÚ 8 ¸ö²ÎÊýµÄÇé¿ö\n"
-
--#: debug/pcprofiledump.c:56
--msgid "Dump information generated by PC profiling."
--msgstr ""
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
-+#: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
-+msgid "Success"
-+msgstr "³É¹¦"
-
--#: elf/dl-load.c:1293
--msgid "ELF file ABI version invalid"
--msgstr ""
-+#. TRANS Operation not permitted; only the owner of the file (or other resource)
-+#. TRANS or processes with special privileges can perform the operation.
-+#: stdio-common/../sysdeps/gnu/errlist.c:17
-+msgid "Operation not permitted"
-+msgstr "²»ÔÊÐíµÄ²Ù×÷"
-
--#: elf/dl-load.c:1290
--msgid "ELF file OS ABI invalid"
--msgstr ""
-+#. TRANS No such file or directory. This is a ``file doesn't exist'' error
-+#. TRANS for ordinary files that are referenced in contexts where they are
-+#. TRANS expected to already exist.
-+#: stdio-common/../sysdeps/gnu/errlist.c:28
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
-+msgid "No such file or directory"
-+msgstr "ûÓÐÄǸöÎļþ»òĿ¼"
-
--#: elf/dl-load.c:1299
--msgid "ELF file version does not match current one"
--msgstr "ELF Îļþ°æ±¾Ó뵱ǰ°æ±¾²»Æ¥Åä"
-+#. TRANS No process matches the specified process ID.
-+#: stdio-common/../sysdeps/gnu/errlist.c:37
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
-+msgid "No such process"
-+msgstr "ûÓÐÄǸö½ø³Ì"
-
--#: elf/dl-load.c:1286
--msgid "ELF file version ident does not match current one"
--msgstr ""
-+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
-+#. TRANS completion of the call. When this happens, you should try the call
-+#. TRANS again.
-+#. TRANS
-+#. TRANS You can choose to have functions resume after a signal that is handled,
-+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
-+#. TRANS Primitives}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:52
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
-+msgid "Interrupted system call"
-+msgstr "±»ÖжϵÄϵͳµ÷ÓÃ"
-
--#: elf/dl-load.c:1305
--msgid "ELF file's phentsize not the expected size"
--msgstr ""
-+#. TRANS Input/output error; usually used for physical read or write errors.
-+#: stdio-common/../sysdeps/gnu/errlist.c:61
-+msgid "Input/output error"
-+msgstr "ÊäÈë/Êä³ö´íÎó"
-
--#: elf/dl-load.c:884
--msgid "ELF load command address/offset not properly aligned"
--msgstr "ELF ×°ÈëÃüÁîµÄµØÖ·/Æ«ÒÆÁ¿Ã»ÓÐÕýÈ·µØ¶ÔÆë"
-+#. TRANS No such device or address. The system tried to use the device
-+#. TRANS represented by a file you specified, and it couldn't find the device.
-+#. TRANS This can mean that the device file was installed incorrectly, or that
-+#. TRANS the physical device is missing or not correctly attached to the
-+#. TRANS computer.
-+#: stdio-common/../sysdeps/gnu/errlist.c:74
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
-+msgid "No such device or address"
-+msgstr "ûÓÐÄǸöÉ豸»òµØÖ·"
-
--#: elf/dl-load.c:881
--msgid "ELF load command alignment not page-aligned"
--msgstr ""
-+#. TRANS Argument list too long; used when the arguments passed to a new program
-+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
-+#. TRANS File}) occupy too much memory space. This condition never arises in the
-+#. TRANS GNU system.
-+#: stdio-common/../sysdeps/gnu/errlist.c:86
-+msgid "Argument list too long"
-+msgstr "²ÎÊýÁбí¹ý³¤"
-
--#: stdio-common/../sysdeps/unix/siglist.c:33 sysdeps/generic/siglist.h:60
--msgid "EMT trap"
--msgstr ""
-+#. TRANS Invalid executable file format. This condition is detected by the
-+#. TRANS @code{exec} functions; see @ref{Executing a File}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:96
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
-+msgid "Exec format error"
-+msgstr "¿ÉÖ´ÐÐÎļþ¸ñʽ´íÎó"
-
--#: nis/nis_print.c:124
--msgid "ENTRY\n"
--msgstr ""
-+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
-+#. TRANS closed or reading from a descriptor open only for writing (or vice
-+#. TRANS versa).
-+#: stdio-common/../sysdeps/gnu/errlist.c:107
-+msgid "Bad file descriptor"
-+msgstr "´íÎóµÄÎļþÃèÊö·û"
-
--#: nis/nis_print.c:303
--msgid "Encrypted data\n"
--msgstr "ÒѼÓÃܵÄÊý¾Ý\n"
-+#. TRANS There are no child processes. This error happens on operations that are
-+#. TRANS supposed to manipulate child processes, when there aren't any processes
-+#. TRANS to manipulate.
-+#: stdio-common/../sysdeps/gnu/errlist.c:118
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
-+msgid "No child processes"
-+msgstr "ûÓÐ×Ó½ø³Ì"
-
--#: nis/nis_error.c:53
--msgid "Entry/table type mismatch"
--msgstr "ÌõÄ¿/±í¸ñÀàÐͲ»Æ¥Åä"
-+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
-+#. TRANS deadlock situation. The system does not guarantee that it will notice
-+#. TRANS all such situations. This error means you got lucky and the system
-+#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
-+#: stdio-common/../sysdeps/gnu/errlist.c:130
-+msgid "Resource deadlock avoided"
-+msgstr "ÒѱÜÃâ×ÊÔ´ËÀËø"
-
--#: nss/getent.c:127 nss/getent.c:292
--#, c-format
--msgid "Enumeration not supported on %s\n"
--msgstr ""
-+#. TRANS No memory available. The system cannot allocate more virtual memory
-+#. TRANS because its capacity is full.
-+#: stdio-common/../sysdeps/gnu/errlist.c:140
-+msgid "Cannot allocate memory"
-+msgstr "ÎÞ·¨·ÖÅäÄÚ´æ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
--msgid "Error 0"
--msgstr "´íÎó 0"
-+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-+#: stdio-common/../sysdeps/gnu/errlist.c:149
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
-+#: nis/nis_error.c:39 nis/ypclnt.c:817
-+msgid "Permission denied"
-+msgstr "ȨÏÞ²»¹»"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
--msgid "Error 100"
--msgstr "´íÎó 100"
-+#. TRANS Bad address; an invalid pointer was detected.
-+#. TRANS In the GNU system, this error never happens; you get a signal instead.
-+#: stdio-common/../sysdeps/gnu/errlist.c:159
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
-+msgid "Bad address"
-+msgstr "´íÎóµÄµØÖ·"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
--msgid "Error 101"
--msgstr "´íÎó 101"
-+#. TRANS A file that isn't a block special file was given in a situation that
-+#. TRANS requires one. For example, trying to mount an ordinary file as a file
-+#. TRANS system in Unix gives this error.
-+#: stdio-common/../sysdeps/gnu/errlist.c:170
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
-+msgid "Block device required"
-+msgstr "ÐèÒª¿éÉ豸"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
--msgid "Error 102"
--msgstr "´íÎó 102"
-+#. TRANS Resource busy; a system resource that can't be shared is already in use.
-+#. TRANS For example, if you try to delete a file that is the root of a currently
-+#. TRANS mounted filesystem, you get this error.
-+#: stdio-common/../sysdeps/gnu/errlist.c:181
-+msgid "Device or resource busy"
-+msgstr "É豸»ò×ÊԴæ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
--msgid "Error 103"
--msgstr "´íÎó 103"
-+#. TRANS File exists; an existing file was specified in a context where it only
-+#. TRANS makes sense to specify a new file.
-+#: stdio-common/../sysdeps/gnu/errlist.c:191
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
-+msgid "File exists"
-+msgstr "ÎļþÒÑ´æÔÚ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
--msgid "Error 104"
--msgstr "´íÎó 104"
-+#. TRANS An attempt to make an improper link across file systems was detected.
-+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
-+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
-+#: stdio-common/../sysdeps/gnu/errlist.c:202
-+msgid "Invalid cross-device link"
-+msgstr "ÎÞЧµÄ¿çÉ豸Á¬½Ó"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
--msgid "Error 105"
--msgstr "´íÎó 105"
-+#. TRANS The wrong type of device was given to a function that expects a
-+#. TRANS particular sort of device.
-+#: stdio-common/../sysdeps/gnu/errlist.c:212
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
-+msgid "No such device"
-+msgstr "ûÓÐÄǸöÉ豸"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
--msgid "Error 106"
--msgstr "´íÎó 106"
-+#. TRANS A file that isn't a directory was specified when a directory is required.
-+#: stdio-common/../sysdeps/gnu/errlist.c:221
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
-+msgid "Not a directory"
-+msgstr "²»ÊÇĿ¼"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
--msgid "Error 107"
--msgstr "´íÎó 107"
-+#. TRANS File is a directory; you cannot open a directory for writing,
-+#. TRANS or create or remove hard links to it.
-+#: stdio-common/../sysdeps/gnu/errlist.c:231
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
-+msgid "Is a directory"
-+msgstr "ÊÇÒ»¸öĿ¼"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
--msgid "Error 108"
--msgstr "´íÎó 108"
-+#. TRANS Invalid argument. This is used to indicate various kinds of problems
-+#. TRANS with passing the wrong argument to a library function.
-+#: stdio-common/../sysdeps/gnu/errlist.c:241
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
-+msgid "Invalid argument"
-+msgstr "ÎÞЧµÄ²ÎÊý"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
--msgid "Error 109"
--msgstr "´íÎó 109"
-+#. TRANS The current process has too many files open and can't open any more.
-+#. TRANS Duplicate descriptors do count toward this limit.
-+#. TRANS
-+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
-+#. TRANS limit that can usually be increased. If you get this error, you might
-+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
-+#. TRANS @pxref{Limits on Resources}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:256
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
-+msgid "Too many open files"
-+msgstr "´ò¿ªµÄÎļþ¹ý¶à"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
--msgid "Error 110"
--msgstr "´íÎó 110"
-+#. TRANS There are too many distinct file openings in the entire system. Note
-+#. TRANS that any number of linked channels count as just one file opening; see
-+#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
-+#: stdio-common/../sysdeps/gnu/errlist.c:267
-+msgid "Too many open files in system"
-+msgstr "ϵͳÖдò¿ªµÄÎļþ¹ý¶à"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
--msgid "Error 111"
--msgstr "´íÎó 111"
-+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
-+#. TRANS modes on an ordinary file.
-+#: stdio-common/../sysdeps/gnu/errlist.c:277
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
-+msgid "Inappropriate ioctl for device"
-+msgstr "¶ÔÉ豸²»Êʵ±µÄ ioctl ²Ù×÷"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
--msgid "Error 112"
--msgstr "´íÎó 112"
-+#. TRANS An attempt to execute a file that is currently open for writing, or
-+#. TRANS write to a file that is currently being executed. Often using a
-+#. TRANS debugger to run a program is considered having it open for writing and
-+#. TRANS will cause this error. (The name stands for ``text file busy''.) This
-+#. TRANS is not an error in the GNU system; the text is copied as necessary.
-+#: stdio-common/../sysdeps/gnu/errlist.c:290
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
-+msgid "Text file busy"
-+msgstr "Îı¾Îļþæ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
--msgid "Error 113"
--msgstr "´íÎó 113"
-+#. TRANS File too big; the size of a file would be larger than allowed by the system.
-+#: stdio-common/../sysdeps/gnu/errlist.c:299
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
-+msgid "File too large"
-+msgstr "Îļþ¹ý´ó"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
--msgid "Error 114"
--msgstr "´íÎó 114"
-+#. TRANS No space left on device; write operation on a file failed because the
-+#. TRANS disk is full.
-+#: stdio-common/../sysdeps/gnu/errlist.c:309
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
-+msgid "No space left on device"
-+msgstr "É豸ÉÏûÓпռä"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
--msgid "Error 115"
--msgstr "´íÎó 115"
-+#. TRANS Invalid seek operation (such as on a pipe).
-+#: stdio-common/../sysdeps/gnu/errlist.c:318
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
-+msgid "Illegal seek"
-+msgstr "·Ç·¨ seek ²Ù×÷"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
--msgid "Error 116"
--msgstr "´íÎó 116"
-+#. TRANS An attempt was made to modify something on a read-only file system.
-+#: stdio-common/../sysdeps/gnu/errlist.c:327
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
-+msgid "Read-only file system"
-+msgstr "Ö»¶ÁÎļþϵͳ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
--msgid "Error 117"
--msgstr "´íÎó 117"
-+#. TRANS Too many links; the link count of a single file would become too large.
-+#. TRANS @code{rename} can cause this error if the file being renamed already has
-+#. TRANS as many links as it can take (@pxref{Renaming Files}).
-+#: stdio-common/../sysdeps/gnu/errlist.c:338
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
-+msgid "Too many links"
-+msgstr "¹ý¶àµÄÁ¬½Ó"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
--msgid "Error 118"
--msgstr "´íÎó 118"
-+#. TRANS Domain error; used by mathematical functions when an argument value does
-+#. TRANS not fall into the domain over which the function is defined.
-+#: stdio-common/../sysdeps/gnu/errlist.c:361
-+msgid "Numerical argument out of domain"
-+msgstr "ÊýÖµ²ÎÊý³¬³öÓò"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
--msgid "Error 119"
--msgstr "´íÎó 119"
-+#. TRANS Range error; used by mathematical functions when the result value is
-+#. TRANS not representable because of overflow or underflow.
-+#: stdio-common/../sysdeps/gnu/errlist.c:371
-+msgid "Numerical result out of range"
-+msgstr "ÊýÖµ½á¹û³¬³ö·¶Î§"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
--msgid "Error 136"
--msgstr "´íÎó 136"
-+#. TRANS Resource temporarily unavailable; the call might work if you try again
-+#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
-+#. TRANS they are always the same in the GNU C library.
-+#. TRANS
-+#. TRANS This error can happen in a few different situations:
-+#. TRANS
-+#. TRANS @itemize @bullet
-+#. TRANS @item
-+#. TRANS An operation that would block was attempted on an object that has
-+#. TRANS non-blocking mode selected. Trying the same operation again will block
-+#. TRANS until some external condition makes it possible to read, write, or
-+#. TRANS connect (whatever the operation). You can use @code{select} to find out
-+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
-+#. TRANS
-+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
-+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
-+#. TRANS different from @code{EAGAIN}. To make your program portable, you should
-+#. TRANS check for both codes and treat them the same.
-+#. TRANS
-+#. TRANS @item
-+#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
-+#. TRANS can return this error. It indicates that the shortage is expected to
-+#. TRANS pass, so your program can try the call again later and it may succeed.
-+#. TRANS It is probably a good idea to delay for a few seconds before trying it
-+#. TRANS again, to allow time for other processes to release scarce resources.
-+#. TRANS Such shortages are usually fairly serious and affect the whole system,
-+#. TRANS so usually an interactive program should report the error to the user
-+#. TRANS and return to its command loop.
-+#. TRANS @end itemize
-+#: stdio-common/../sysdeps/gnu/errlist.c:408
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
-+msgid "Resource temporarily unavailable"
-+msgstr "×ÊÔ´ÔÝʱ²»¿ÉÓÃ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
--msgid "Error 142"
--msgstr "´íÎó 142"
-+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
-+#. TRANS The values are always the same, on every operating system.
-+#. TRANS
-+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
-+#. TRANS separate error code.
-+#: stdio-common/../sysdeps/gnu/errlist.c:421
-+msgid "Operation would block"
-+msgstr "²Ù×÷½«×èÈû"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
--msgid "Error 58"
--msgstr "´íÎó 58"
-+#. TRANS An operation that cannot complete immediately was initiated on an object
-+#. TRANS that has non-blocking mode selected. Some functions that must always
-+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
-+#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
-+#. TRANS the operation has begun and will take some time. Attempts to manipulate
-+#. TRANS the object before the call completes return @code{EALREADY}. You can
-+#. TRANS use the @code{select} function to find out when the pending operation
-+#. TRANS has completed; @pxref{Waiting for I/O}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:437
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
-+msgid "Operation now in progress"
-+msgstr "²Ù×÷ÏÖÔÚÕýÔÚ½øÐÐ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
--msgid "Error 59"
--msgstr "´íÎó 59"
-+#. TRANS An operation is already in progress on an object that has non-blocking
-+#. TRANS mode selected.
-+#: stdio-common/../sysdeps/gnu/errlist.c:447
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
-+msgid "Operation already in progress"
-+msgstr "²Ù×÷ÒѾ­ÔÚ½øÐÐ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
--msgid "Error 72"
--msgstr "´íÎó 72"
-+#. TRANS A file that isn't a socket was specified when a socket is required.
-+#: stdio-common/../sysdeps/gnu/errlist.c:456
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
-+msgid "Socket operation on non-socket"
-+msgstr "¶Ô·ÇÌ×½Ó×Ö½øÐÐÌ×½Ó×Ö²Ù×÷"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
--msgid "Error 73"
--msgstr "´íÎó 73"
-+#. TRANS The size of a message sent on a socket was larger than the supported
-+#. TRANS maximum size.
-+#: stdio-common/../sysdeps/gnu/errlist.c:466
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
-+msgid "Message too long"
-+msgstr "ÏûÏ¢¹ý³¤"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
--msgid "Error 75"
--msgstr "´íÎó 75"
-+#. TRANS The socket type does not support the requested communications protocol.
-+#: stdio-common/../sysdeps/gnu/errlist.c:475
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
-+msgid "Protocol wrong type for socket"
-+msgstr "´íÎóµÄ socket ЭÒéÀàÐÍ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
--msgid "Error 76"
--msgstr "´íÎó 76"
-+#. TRANS You specified a socket option that doesn't make sense for the
-+#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:485
-+msgid "Protocol not available"
-+msgstr "²»¿ÉÓõÄЭÒé"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
--msgid "Error 91"
--msgstr "´íÎó 91"
-+#. TRANS The socket domain does not support the requested communications protocol
-+#. TRANS (perhaps because the requested protocol is completely invalid).
-+#. TRANS @xref{Creating a Socket}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:496
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
-+msgid "Protocol not supported"
-+msgstr "²»Ö§³ÖµÄЭÒé"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
--msgid "Error 92"
--msgstr "´íÎó 92"
-+#. TRANS The socket type is not supported.
-+#: stdio-common/../sysdeps/gnu/errlist.c:505
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
-+msgid "Socket type not supported"
-+msgstr "²»Ö§³ÖµÄÌ×½Ó×ÖÀàÐÍ"
-
--#: nis/nis_error.c:57
--msgid "Error in RPC subsystem"
--msgstr "RPC ×ÓϵͳÖгö´í"
-+#. TRANS The operation you requested is not supported. Some socket functions
-+#. TRANS don't make sense for all types of sockets, and others may not be
-+#. TRANS implemented for all communications protocols. In the GNU system, this
-+#. TRANS error can happen for many calls when the object does not support the
-+#. TRANS particular operation; it is a generic indication that the server knows
-+#. TRANS nothing to do for that call.
-+#: stdio-common/../sysdeps/gnu/errlist.c:519
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
-+msgid "Operation not supported"
-+msgstr "²»Ö§³ÖµÄ²Ù×÷"
-
--#: nis/nis_error.c:67
--msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
--msgstr "·ÃÎÊ NIS+ ÀäÆô¶¯Îļþ³ö´í¡£NIS+ °²×°ÁËÂð£¿"
-+#. TRANS The socket communications protocol family you requested is not supported.
-+#: stdio-common/../sysdeps/gnu/errlist.c:528
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
-+msgid "Protocol family not supported"
-+msgstr "²»Ö§³ÖµÄЭÒé×å"
-
--#: string/../sysdeps/mach/_strerror.c:58
--#: sysdeps/mach/hurd/mips/dl-machine.c:68
--msgid "Error in unknown error system: "
--msgstr "δ֪µÄ´íÎóϵͳÖгö´í£º"
-+#. TRANS The address family specified for a socket is not supported; it is
-+#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:538
-+msgid "Address family not supported by protocol"
-+msgstr "ЭÒé²»Ö§³ÖµÄµØÖ·×å"
-
--#: nis/nis_error.c:60
--msgid "Error while talking to callback proc"
--msgstr "Óë»Øµ÷º¯Êý½»»¥Ê±³ö´í"
-+#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:547
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
-+msgid "Address already in use"
-+msgstr "µØÖ·ÒÑÔÚʹÓÃ"
-
--#: timezone/zdump.c:268
--msgid "Error writing standard output"
--msgstr "дÈë±ê×¼Êä³ö³ö´í"
-+#. TRANS The requested socket address is not available; for example, you tried
-+#. TRANS to give a socket a name that doesn't match the local host name.
-+#. TRANS @xref{Socket Addresses}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:558
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
-+msgid "Cannot assign requested address"
-+msgstr "ÎÞ·¨Ö¸¶¨±»ÇëÇóµÄµØÖ·"
-
--#: inet/ruserpass.c:184
--msgid "Error: .netrc file is readable by others."
--msgstr "´íÎó£º.netrc ¶ÔÆäËüÈËÊǿɶÁµÄ¡£"
-+#. TRANS A socket operation failed because the network was down.
-+#: stdio-common/../sysdeps/gnu/errlist.c:567
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
-+msgid "Network is down"
-+msgstr "ÍøÂçÒѹرÕ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:729
--msgid "Exchange full"
--msgstr ""
-+#. TRANS A socket operation failed because the subnet containing the remote host
-+#. TRANS was unreachable.
-+#: stdio-common/../sysdeps/gnu/errlist.c:577
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
-+msgid "Network is unreachable"
-+msgstr "ÍøÂç²»¿É´ï"
-
--#. TRANS Invalid executable file format. This condition is detected by the
--#. TRANS @code{exec} functions; see @ref{Executing a File}.
--#: stdio-common/../sysdeps/gnu/errlist.c:76
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
--msgid "Exec format error"
--msgstr "¿ÉÖ´ÐÐÎļþ¸ñʽ´íÎó"
-+#. TRANS A network connection was reset because the remote host crashed.
-+#: stdio-common/../sysdeps/gnu/errlist.c:586
-+msgid "Network dropped connection on reset"
-+msgstr "ÖØÖÃʱ¶Ï¿ªÍøÂçÁ¬½Ó"
-
--#: locale/programs/localedef.c:190
--msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
--msgstr "ÖÂÃü´íÎó£ºÏµÍ³Î´¶¨Òå¡°_POSIX2_LOCALEDEF¡±"
-+#. TRANS A network connection was aborted locally.
-+#: stdio-common/../sysdeps/gnu/errlist.c:595
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
-+msgid "Software caused connection abort"
-+msgstr "ÓÉÈí¼þµ¼ÖµÄÁ¬½Ó¶Ï¿ª"
-
--#: locale/programs/localedef.c:97
--msgid "FILE contains mapping from symbolic names to UCS4 values"
-+#. TRANS A network connection was closed for reasons outside the control of the
-+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
-+#. TRANS protocol violation.
-+#: stdio-common/../sysdeps/gnu/errlist.c:606
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
-+msgid "Connection reset by peer"
- msgstr ""
-
--#: sunrpc/clnt_perr.c:381
--msgid "Failed (unspecified error)"
--msgstr "ʧ°Ü (δָÃ÷µÄ´íÎó)"
-+#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
-+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
-+#. TRANS other from network operations.
-+#: stdio-common/../sysdeps/gnu/errlist.c:617
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
-+msgid "No buffer space available"
-+msgstr "ûÓпÉÓõĻº³åÇø¿Õ¼ä"
-
--#: nscd/nscd.c:400
--#, c-format
--msgid "Failed to look up user '%s' to run server as"
--msgstr ""
-+#. TRANS You tried to connect a socket that is already connected.
-+#. TRANS @xref{Connecting}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:627
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
-+msgid "Transport endpoint is already connected"
-+msgstr "´«Êä¶ËµãÒÑÁ¬½Ó"
-
--#: elf/readlib.c:109
--#, c-format
--msgid "File %s is too small, not checked."
--msgstr "Îļþ %s ¹ýС£¬Î´¼ì²é¡£"
-+#. TRANS The socket is not connected to anything. You get this error when you
-+#. TRANS try to transmit data over a socket, without first specifying a
-+#. TRANS destination for the data. For a connectionless socket (for datagram
-+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
-+#: stdio-common/../sysdeps/gnu/errlist.c:639
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
-+msgid "Transport endpoint is not connected"
-+msgstr "´«Êä¶ËµãÉÐδÁ¬½Ó"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:781
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
--msgid "File descriptor in bad state"
--msgstr "ÎļþÃèÊö·û´¦ÓÚ´íÎó״̬"
-+#. TRANS No default destination address was set for the socket. You get this
-+#. TRANS error when you try to transmit data over a connectionless socket,
-+#. TRANS without first specifying a destination for the data with @code{connect}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:650
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
-+msgid "Destination address required"
-+msgstr "ÐèҪĿ±êµØÖ·"
-
--#. TRANS File exists; an existing file was specified in a context where it only
--#. TRANS makes sense to specify a new file.
--#: stdio-common/../sysdeps/gnu/errlist.c:135
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
--msgid "File exists"
--msgstr "ÎļþÒÑ´æÔÚ"
-+#. TRANS The socket has already been shut down.
-+#: stdio-common/../sysdeps/gnu/errlist.c:659
-+msgid "Cannot send after transport endpoint shutdown"
-+msgstr "ÎÞ·¨ÔÚ´«Êä¶Ëµã¹Ø±ÕÒÔºó·¢ËÍ"
-
--#: elf/cache.c:147 elf/cache.c:157
--msgid "File is not a cache file.\n"
--msgstr "Îļþ²»ÊÇ»º³åÇøÎļþ¡£\n"
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:668
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
-+msgid "Too many references: cannot splice"
-+msgstr "¹ý¶àµÄÒýÓãºÎÞ·¨½ÓºÏ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
--msgid "File locking deadlock"
--msgstr "ÎļþËøËÀËø"
-+#. TRANS A socket operation with a specified timeout received no response during
-+#. TRANS the timeout period.
-+#: stdio-common/../sysdeps/gnu/errlist.c:678
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
-+msgid "Connection timed out"
-+msgstr "Á¬½Ó³¬Ê±"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:745
--msgid "File locking deadlock error"
--msgstr "ÎļþËøËÀËø´íÎó"
-+#. TRANS A remote host refused to allow the network connection (typically because
-+#. TRANS it is not running the requested service).
-+#: stdio-common/../sysdeps/gnu/errlist.c:688
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
-+msgid "Connection refused"
-+msgstr "¾Ü¾øÁ¬½Ó"
-+
-+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
-+#. TRANS This often indicates a cycle of symbolic links.
-+#: stdio-common/../sysdeps/gnu/errlist.c:698
-+msgid "Too many levels of symbolic links"
-+msgstr "·ûºÅÁ¬½ÓµÄ²ãÊý¹ý¶à"
-
- #. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
- #. TRANS Files}) or host name too long (in @code{gethostname} or
- #. TRANS @code{sethostname}; @pxref{Host Identification}).
--#: stdio-common/../sysdeps/gnu/errlist.c:465
-+#: stdio-common/../sysdeps/gnu/errlist.c:709
- #: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
- msgid "File name too long"
- msgstr "ÎļþÃû¹ý³¤"
-
--#: stdio-common/../sysdeps/unix/siglist.c:51 sysdeps/generic/siglist.h:51
--msgid "File size limit exceeded"
--msgstr "Îļþ´óС³¬³öÏÞÖÆ"
-+#. TRANS The remote host for a requested network connection is down.
-+#: stdio-common/../sysdeps/gnu/errlist.c:718
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
-+msgid "Host is down"
-+msgstr "Ö÷»ú¹Ø±Õ"
-+
-+#. TRANS The remote host for a requested network connection is not reachable.
-+#: stdio-common/../sysdeps/gnu/errlist.c:727
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
-+msgid "No route to host"
-+msgstr "ûÓе½Ö÷»úµÄ·ÓÉ"
-+
-+#. TRANS Directory not empty, where an empty directory was expected. Typically,
-+#. TRANS this error occurs when you are trying to delete a directory.
-+#: stdio-common/../sysdeps/gnu/errlist.c:737
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
-+msgid "Directory not empty"
-+msgstr "Ŀ¼·Ç¿Õ"
-+
-+#. TRANS This means that the per-user limit on new process would be exceeded by
-+#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
-+#. TRANS the @code{RLIMIT_NPROC} limit.
-+#: stdio-common/../sysdeps/gnu/errlist.c:748
-+msgid "Too many processes"
-+msgstr "½ø³Ì¹ý¶à"
-+
-+#. TRANS The file quota system is confused because there are too many users.
-+#. TRANS @c This can probably happen in a GNU system when using NFS.
-+#: stdio-common/../sysdeps/gnu/errlist.c:758
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
-+msgid "Too many users"
-+msgstr "Óû§¹ý¶à"
-+
-+#. TRANS The user's disk quota was exceeded.
-+#: stdio-common/../sysdeps/gnu/errlist.c:767
-+msgid "Disk quota exceeded"
-+msgstr "³¬³ö´ÅÅÌÏÞ¶î"
-+
-+#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
-+#. TRANS system which is due to file system rearrangements on the server host.
-+#. TRANS Repairing this condition usually requires unmounting and remounting
-+#. TRANS the NFS file system on the local host.
-+#: stdio-common/../sysdeps/gnu/errlist.c:779
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
-+msgid "Stale NFS file handle"
-+msgstr ""
-+
-+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
-+#. TRANS already specifies an NFS-mounted file.
-+#. TRANS (This is an error on some operating systems, but we expect it to work
-+#. TRANS properly on the GNU system, making this error code impossible.)
-+#: stdio-common/../sysdeps/gnu/errlist.c:791
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
-+msgid "Object is remote"
-+msgstr "¶ÔÏóÊÇÔ¶³ÌµÄ"
-+
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:800
-+msgid "RPC struct is bad"
-+msgstr "RPC ½á¹¹´íÎó"
-+
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:809
-+msgid "RPC version wrong"
-+msgstr "RPC °æ±¾´íÎó"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
--msgid "File table overflow"
--msgstr "Îļþ±íÒç³ö"
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:818
-+msgid "RPC program not available"
-+msgstr "RPC ³ÌÐò²»¿ÉÓÃ"
-
--#. TRANS File too big; the size of a file would be larger than allowed by the system.
--#: stdio-common/../sysdeps/gnu/errlist.c:203
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
--msgid "File too large"
--msgstr "Îļþ¹ý´ó"
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:827
-+msgid "RPC program version wrong"
-+msgstr "RPC ³ÌÐò°æ±¾´íÎó"
-
--#: intl/tst-gettext2.c:37
--msgid "First string for testing."
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:836
-+msgid "RPC bad procedure for program"
- msgstr ""
-
--#: nis/nis_error.c:38
--msgid "First/next chain broken"
--msgstr ""
-+#. TRANS No locks available. This is used by the file locking facilities; see
-+#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
-+#. TRANS it can result from an operation to an NFS server running another
-+#. TRANS operating system.
-+#: stdio-common/../sysdeps/gnu/errlist.c:848
-+msgid "No locks available"
-+msgstr "ûÓпÉÓõÄËø"
-
--#: stdio-common/../sysdeps/unix/siglist.c:34 sysdeps/generic/siglist.h:35
--msgid "Floating point exception"
--msgstr "¸¡µãÊýÀýÍâ"
-+#. TRANS Inappropriate file type or format. The file was the wrong type for the
-+#. TRANS operation, or a data file had the wrong format.
-+#. TRANS
-+#. TRANS On some systems @code{chmod} returns this error if you try to set the
-+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:861
-+msgid "Inappropriate file type or format"
-+msgstr "²»Êʵ±µÄÎļþÀàÐÍ»ò¸ñʽ"
-
--#: elf/ldconfig.c:131
--msgid "Format to use: new, old or compat (default)"
--msgstr "²ÉÓõĸñʽ£ºÐ¡¢¾É»ò¼æÈÝ(ĬÈÏ)"
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:870
-+msgid "Authentication error"
-+msgstr "ÈÏÖ¤´íÎó"
-
--#: nis/nis_error.c:68
--msgid "Full resync required for directory"
--msgstr ""
-+#. TRANS ???
-+#: stdio-common/../sysdeps/gnu/errlist.c:879
-+msgid "Need authenticator"
-+msgstr "ÐèÒªÈÏÖ¤Æ÷"
-
- #. TRANS Function not implemented. This indicates that the function called is
- #. TRANS not implemented at all, either in the C library itself or in the
- #. TRANS operating system. When you get this error, you can be sure that this
- #. TRANS particular function will always fail with @code{ENOSYS} unless you
- #. TRANS install a new version of the C library or the operating system.
--#: stdio-common/../sysdeps/gnu/errlist.c:576
-+#: stdio-common/../sysdeps/gnu/errlist.c:892
- msgid "Function not implemented"
- msgstr "º¯ÊýδʵÏÖ"
-
--#: nis/nis_print.c:118
--msgid "GROUP\n"
--msgstr "×é\n"
-+#. TRANS Not supported. A function returns this error when certain parameter
-+#. TRANS values are valid, but the functionality they request is not available.
-+#. TRANS This can mean that the function does not implement a particular command
-+#. TRANS or option value or flag bit at all. For functions that operate on some
-+#. TRANS object given in a parameter, such as a file descriptor or a port, it
-+#. TRANS might instead mean that only @emph{that specific object} (file
-+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
-+#. TRANS different file descriptors might support different ranges of parameter
-+#. TRANS values.
-+#. TRANS
-+#. TRANS If the entire function is not available at all in the implementation,
-+#. TRANS it returns @code{ENOSYS} instead.
-+#: stdio-common/../sysdeps/gnu/errlist.c:912
-+msgid "Not supported"
-+msgstr "²»Ö§³Ö"
-
--#: argp/argp-help.c:230
--#, c-format
--msgid "Garbage in ARGP_HELP_FMT: %s"
-+#. TRANS While decoding a multibyte character the function came along an invalid
-+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
-+#: stdio-common/../sysdeps/gnu/errlist.c:922
-+msgid "Invalid or incomplete multibyte or wide character"
-+msgstr "ÎÞЧ»ò²»ÍêÕûµÄ¶à×Ö½Ú×Ö·û»ò¿í×Ö·û"
-+
-+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
-+#. TRANS this error for certain operations when the caller is not in the
-+#. TRANS foreground process group of the terminal. Users do not usually see this
-+#. TRANS error because functions such as @code{read} and @code{write} translate
-+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
-+#. TRANS for information on process groups and these signals.
-+#: stdio-common/../sysdeps/gnu/errlist.c:936
-+msgid "Inappropriate operation for background process"
-+msgstr "¶Ôºǫ́½ø³ÌµÄ²»Êʵ±²Ù×÷"
-+
-+#. TRANS In the GNU system, opening a file returns this error when the file is
-+#. TRANS translated by a program and the translator program dies while starting
-+#. TRANS up, before it has connected to the file.
-+#: stdio-common/../sysdeps/gnu/errlist.c:947
-+msgid "Translator died"
- msgstr ""
-
--#: malloc/memusagestat.c:64
--msgid "Generate graphic from memory profiling data"
-+#. TRANS The experienced user will know what is wrong.
-+#. TRANS @c This error code is a joke. Its perror text is part of the joke.
-+#. TRANS @c Don't change it.
-+#: stdio-common/../sysdeps/gnu/errlist.c:958
-+msgid "?"
-+msgstr "£¿"
-+
-+#. TRANS You did @strong{what}?
-+#: stdio-common/../sysdeps/gnu/errlist.c:967
-+msgid "You really blew it this time"
- msgstr ""
-
--#: catgets/gencat.c:120
--msgid ""
--"Generate message catalog.\\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
--"is -, output is written to standard output.\n"
-+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
-+#: stdio-common/../sysdeps/gnu/errlist.c:976
-+msgid "Computer bought the farm"
- msgstr ""
-
--#: malloc/memusagestat.c:55
--msgid "Generate output linear to time (default is linear to number of function calls)"
-+#. TRANS This error code has no purpose.
-+#: stdio-common/../sysdeps/gnu/errlist.c:985
-+msgid "Gratuitous error"
- msgstr ""
-
--#: elf/ldconfig.c:123
--msgid "Generate verbose messages"
--msgstr "Éú³ÉÏêϸÏûÏ¢"
-+#: stdio-common/../sysdeps/gnu/errlist.c:993
-+msgid "Bad message"
-+msgstr "´íÎóµÄÏûÏ¢"
-
--#: nis/nis_error.c:37
--msgid "Generic system error"
--msgstr "ͨÓÃϵͳ´íÎó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1001
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
-+msgid "Identifier removed"
-+msgstr "±êʶ·ûÒÑɾ³ý"
-
--#: locale/programs/locale.c:86
--msgid "Get locale-specific information."
--msgstr "¸ø³öÇøÓòÌض¨µÄÐÅÏ¢¡£"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1009
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
-+msgid "Multihop attempted"
-+msgstr ""
-
--#: argp/argp-parse.c:94
--msgid "Give a short usage message"
--msgstr "¸ø³ö¼òÒªµÄÓ÷¨ÐÅÏ¢"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1017
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
-+msgid "No data available"
-+msgstr "ûÓпÉÓõÄÊý¾Ý"
-
--#: argp/argp-parse.c:93
--msgid "Give this help list"
--msgstr "¸ø³ö¸ÃϵͳÇóÖúÁбí"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1025
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
-+msgid "Link has been severed"
-+msgstr ""
-
--#. TRANS This error code has no purpose.
--#: stdio-common/../sysdeps/gnu/errlist.c:637
--msgid "Gratuitous error"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1033
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
-+msgid "No message of desired type"
- msgstr ""
-
--#: nis/nis_print.c:323
--#, c-format
--msgid "Group : %s\n"
--msgstr "×é £º%s\n"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1041
-+msgid "Out of streams resources"
-+msgstr "Á÷×ÊÔ´²»×ã"
-
--#: nis/nis_print.c:252
--msgid "Group Flags :"
--msgstr "×é±êÖ¾ £º"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1049
-+msgid "Device not a stream"
-+msgstr "É豸²»ÊÇÁ÷"
-
--#: nis/nis_print_group_entry.c:115
--#, c-format
--msgid "Group entry for \"%s.%s\" group:\n"
--msgstr ""
-+#: stdio-common/../sysdeps/gnu/errlist.c:1057
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
-+msgid "Value too large for defined data type"
-+msgstr "¶ÔÒѶ¨ÒåµÄÊý¾ÝÀàÐÍÀ´ËµÖµ¹ý´ó"
-
--#: argp/argp-parse.c:97
--msgid "Hang for SECS seconds (default 3600)"
--msgstr "¹ÒÆð SECS Ãë (ĬÈÏ 3600)"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1065
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
-+msgid "Protocol error"
-+msgstr "ЭÒé´íÎó"
-
--#: stdio-common/../sysdeps/unix/siglist.c:27 sysdeps/generic/siglist.h:29
--msgid "Hangup"
--msgstr "¹ÒÆð"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1073
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
-+msgid "Timer expired"
-+msgstr "¼ÆʱÆ÷³¬Ê±"
-
--#: nscd/grpcache.c:253
--#, c-format
--msgid "Haven't found \"%d\" in group cache!"
--msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%d¡±£¡"
-+#. TRANS Operation canceled; an asynchronous operation was canceled before it
-+#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
-+#. TRANS the normal result is for the operations affected to complete with this
-+#. TRANS error; @pxref{Cancel AIO Operations}.
-+#: stdio-common/../sysdeps/gnu/errlist.c:1085
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
-+msgid "Operation canceled"
-+msgstr "²Ù×÷ÒÑÈ¡Ïû"
-
--#: nscd/pwdcache.c:249
--#, c-format
--msgid "Haven't found \"%d\" in password cache!"
--msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%d¡±£¡"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1093
-+msgid "Interrupted system call should be restarted"
-+msgstr "±»ÖжϵÄϵͳµ÷ÓÃÓ¦¸ÃÖØÐÂÆô¶¯"
-
--#: nscd/grpcache.c:214
--#, c-format
--msgid "Haven't found \"%s\" in group cache!"
--msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1101
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
-+msgid "Channel number out of range"
-+msgstr "ͨµÀ±àºÅ³¬³ö·¶Î§"
-
--#: nscd/hstcache.c:299 nscd/hstcache.c:341 nscd/hstcache.c:386
--#: nscd/hstcache.c:430
--#, c-format
--msgid "Haven't found \"%s\" in hosts cache!"
--msgstr "ÎÞ·¨ÔÚÖ÷»ú»º³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1109
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
-+msgid "Level 2 not synchronized"
-+msgstr "¼¶±ð 2 ÉÐδͬ²½"
-
--#: nscd/pwdcache.c:210
--#, c-format
--msgid "Haven't found \"%s\" in password cache!"
--msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1117
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
-+msgid "Level 3 halted"
-+msgstr "¼¶±ð 3 ÒѹرÕ"
-
--#. TRANS The remote host for a requested network connection is down.
--#: stdio-common/../sysdeps/gnu/errlist.c:470
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
--msgid "Host is down"
--msgstr "Ö÷»ú¹Ø±Õ"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1125
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
-+msgid "Level 3 reset"
-+msgstr "¼¶±ð 3 ÒÑÖØÖÃ"
-
--#: resolv/herror.c:69
--msgid "Host name lookup failure"
--msgstr "Ö÷»úÃûËÑË÷ʧ°Ü"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1133
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
-+msgid "Link number out of range"
-+msgstr "Á¬½ÓÊý³¬³ö·¶Î§"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
--msgid "I/O error"
--msgstr "I/O ´íÎó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1141
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
-+msgid "Protocol driver not attached"
-+msgstr "δ¼ÓÔØЭÒéÇý¶¯³ÌÐò"
-
--#: stdio-common/../sysdeps/unix/siglist.c:49 sysdeps/generic/siglist.h:49
--msgid "I/O possible"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1149
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
-+msgid "No CSI structure available"
-+msgstr "ûÓпÉÓÃµÄ CSI ½á¹¹"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1157
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
-+msgid "Level 2 halted"
-+msgstr "¼¶±ð 2 ¼º¹Ø±Õ"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1165
-+msgid "Invalid exchange"
-+msgstr "ÎÞЧµÄ½»»»"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1173
-+msgid "Invalid request descriptor"
-+msgstr "ÎÞЧµÄÇëÇóÃèÊö·û"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1181
-+msgid "Exchange full"
-+msgstr "½»»»Âú"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1189
-+msgid "No anode"
-+msgstr "ûÓÐ anode"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1197
-+msgid "Invalid request code"
-+msgstr "ÎÞЧµÄÇëÇóÂë"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1205
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
-+msgid "Invalid slot"
-+msgstr ""
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1213
-+msgid "File locking deadlock error"
-+msgstr "ÎļþËøËÀËø´íÎó"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1221
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
-+msgid "Bad font file format"
-+msgstr "´íÎóµÄ×ÖÌåÎļþ¸ñʽ"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1229
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
-+msgid "Machine is not on the network"
-+msgstr "»úÆ÷²»ÔÚÍøÂçÖÐ"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1237
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
-+msgid "Package not installed"
-+msgstr "°üδ°²×°"
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1245
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
-+msgid "Advertise error"
-+msgstr ""
-+
-+#: stdio-common/../sysdeps/gnu/errlist.c:1253
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
-+msgid "Srmount error"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/siglist.c:32
--msgid "IOT trap"
--msgstr ""
-+#: stdio-common/../sysdeps/gnu/errlist.c:1261
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
-+msgid "Communication error on send"
-+msgstr "·¢ËÍʱ³öÏÖͨѶ´íÎó"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:645
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
--msgid "Identifier removed"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1269
-+msgid "RFS specific error"
- msgstr ""
-
--#: elf/ldconfig.c:535
--#, c-format
--msgid "Ignored file %s since it is not a regular file."
-+#: stdio-common/../sysdeps/gnu/errlist.c:1277
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
-+msgid "Name not unique on network"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
--msgid "Illegal byte sequence"
--msgstr "·Ç·¨µÄ×Ö½ÚÐò"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1285
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
-+msgid "File descriptor in bad state"
-+msgstr "ÎļþÃèÊö·û´¦ÓÚ´íÎó״̬"
-
--#: stdio-common/../sysdeps/unix/siglist.c:30 sysdeps/generic/siglist.h:32
--msgid "Illegal instruction"
--msgstr "·Ç·¨Ö¸Áî"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1293
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
-+msgid "Remote address changed"
-+msgstr "Ô¶³ÌµØÖ·ÒѸıä"
-
--#: nis/nis_error.c:62
--msgid "Illegal object type for operation"
--msgstr "²Ù×÷µÄ·Ç·¨¶ÔÏóÀàÐÍ"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1301
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
-+msgid "Can not access a needed shared library"
-+msgstr "ÎÞ·¨·ÃÎʱØÐëµÄ¹²Ïí¿â"
-
--#. TRANS Invalid seek operation (such as on a pipe).
--#: stdio-common/../sysdeps/gnu/errlist.c:214
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
--msgid "Illegal seek"
--msgstr "·Ç·¨ seek ²Ù×÷"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1309
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
-+msgid "Accessing a corrupted shared library"
-+msgstr "ÕýÔÚ·ÃÎÊÒ»¸öÒѻٻµµÄ¹²Ïí¿â"
-
--#. TRANS Inappropriate file type or format. The file was the wrong type for the
--#. TRANS operation, or a data file had the wrong format.
--#. TRANS
--#. TRANS On some systems @code{chmod} returns this error if you try to set the
--#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
--#: stdio-common/../sysdeps/gnu/errlist.c:557
--msgid "Inappropriate file type or format"
--msgstr "²»Êʵ±µÄÎļþÀàÐÍ»ò¸ñʽ"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1317
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
-+msgid ".lib section in a.out corrupted"
-+msgstr "a.out ÖÐµÄ .lib ½ÚÒѻٻµ"
-
--#. TRANS Inappropriate I/O control operation, such as trying to set terminal
--#. TRANS modes on an ordinary file.
--#: stdio-common/../sysdeps/gnu/errlist.c:189
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
--msgid "Inappropriate ioctl for device"
--msgstr "¶ÔÉ豸²»Êʵ±µÄ ioctl ²Ù×÷"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1325
-+msgid "Attempting to link in too many shared libraries"
-+msgstr "ÊÔͼÓÚ¹ý¶àµÄ¹²Ïí¿âÏàÁ¬½Ó"
-
--#. TRANS In the GNU system, servers supporting the @code{term} protocol return
--#. TRANS this error for certain operations when the caller is not in the
--#. TRANS foreground process group of the terminal. Users do not usually see this
--#. TRANS error because functions such as @code{read} and @code{write} translate
--#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
--#. TRANS for information on process groups and these signals.
--#: stdio-common/../sysdeps/gnu/errlist.c:608
--msgid "Inappropriate operation for background process"
--msgstr "¶Ôºǫ́½ø³ÌµÄ²»Êʵ±²Ù×÷"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1333
-+msgid "Cannot exec a shared library directly"
-+msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
-
--#: sysdeps/generic/siglist.h:69
--msgid "Information request"
--msgstr "ÐÅÏ¢ÇëÇó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1341
-+msgid "Streams pipe error"
-+msgstr "Á÷¹ÜµÀ´íÎó"
-
--#: iconv/iconv_prog.c:62
--msgid "Information:"
--msgstr "ÐÅÏ¢£º"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1349
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
-+msgid "Structure needs cleaning"
-+msgstr "½á¹¹ÐèÒªÇåÀí"
-
--#: locale/programs/localedef.c:92
--msgid "Input Files:"
--msgstr "ÊäÈëÎļþ£º"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1357
-+msgid "Not a XENIX named type file"
-+msgstr "²»ÊÇ XENIX ÃüÃûµÄÀàÐÍÎļþ"
-
--#: elf/ldconfig.c:754 elf/readlib.c:93
--#, c-format
--msgid "Input file %s not found.\n"
--msgstr "δÕÒµ½ÊäÈëÎļþ %s¡£\n"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1365
-+msgid "No XENIX semaphores available"
-+msgstr "ûÓпÉÓÃµÄ XENIX ÐźÅÁ¿"
-
--#: iconv/iconv_prog.c:59
--msgid "Input/Output format specification:"
--msgstr "ÊäÈë/Êä³ö¸ñʽ¹æ·¶£º"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1373
-+msgid "Is a named type file"
-+msgstr "ÊÇÒ»¸öÓÐÃûÀàÐÍÎļþ"
-
--#. TRANS Input/output error; usually used for physical read or write errors.
--#: stdio-common/../sysdeps/gnu/errlist.c:53
--msgid "Input/output error"
--msgstr "ÊäÈë/Êä³ö´íÎó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1381
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
-+msgid "Remote I/O error"
-+msgstr "Ô¶³Ì I/O ´íÎó"
-
--#: nis/ypclnt.c:800
--msgid "Internal NIS error"
--msgstr "ÄÚ²¿ NIS ´íÎó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1389
-+msgid "No medium found"
-+msgstr "ÕÒ²»µ½½éÖÊ"
-
--#: nis/ypclnt.c:864
--msgid "Internal ypbind error"
--msgstr "ÄÚ²¿ ypbind ´íÎó"
-+#: stdio-common/../sysdeps/gnu/errlist.c:1397
-+msgid "Wrong medium type"
-+msgstr "´íÎóµÄ½éÖÊÀàÐÍ"
-
--#: stdio-common/../sysdeps/unix/siglist.c:28 sysdeps/generic/siglist.h:30
--msgid "Interrupt"
--msgstr "ÖжÏ"
-+#: stdio-common/../sysdeps/unix/siglist.c:26
-+msgid "Signal 0"
-+msgstr "ÐźŠ0"
-
--#: posix/../sysdeps/posix/gai_strerror.c:46
--msgid "Interrupted by a signal"
--msgstr "±»ÐźÅÖжÏ"
-+#: stdio-common/../sysdeps/unix/siglist.c:32
-+msgid "IOT trap"
-+msgstr ""
-
--#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
--#. TRANS completion of the call. When this happens, you should try the call
--#. TRANS again.
--#. TRANS
--#. TRANS You can choose to have functions resume after a signal that is handled,
--#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
--#. TRANS Primitives}.
--#: stdio-common/../sysdeps/gnu/errlist.c:48
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
--msgid "Interrupted system call"
--msgstr "±»ÖжϵÄϵͳµ÷ÓÃ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-+msgid "Error 0"
-+msgstr "´íÎó 0"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:685
--msgid "Interrupted system call should be restarted"
--msgstr "±»ÖжϵÄϵͳµ÷ÓÃÓ¦¸ÃÖØÐÂÆô¶¯"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-+#: nis/nis_error.c:40
-+msgid "Not owner"
-+msgstr "²»ÊÇËùÓÐÕß"
-
--#. TRANS Invalid argument. This is used to indicate various kinds of problems
--#. TRANS with passing the wrong argument to a library function.
--#: stdio-common/../sysdeps/gnu/errlist.c:165
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
--msgid "Invalid argument"
--msgstr "ÎÞЧµÄ²ÎÊý"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-+msgid "I/O error"
-+msgstr "I/O ´íÎó"
-
--#: posix/regex.c:1384
--msgid "Invalid back reference"
--msgstr "ÎÞЧµÄÏòºóÒýÓÃ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-+msgid "Arg list too long"
-+msgstr "²ÎÊýÁбí¹ý³¤"
-
--#: posix/regex.c:1378
--msgid "Invalid character class name"
--msgstr "ÎÞЧµÄ×Ö·ûÀàÃû"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-+msgid "Bad file number"
-+msgstr "´íÎóµÄÎļþ±àºÅ"
-
--#: sunrpc/clnt_perr.c:357
--msgid "Invalid client credential"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-+msgid "Not enough space"
-+msgstr "¿Õ¼ä²»¹»"
-
--#: sunrpc/clnt_perr.c:365
--msgid "Invalid client verifier"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-+msgid "Device busy"
-+msgstr "É豸æ"
-
--#: posix/regex.c:1375
--msgid "Invalid collation character"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-+msgid "Cross-device link"
-+msgstr "¿çÉ豸Á¬½Ó"
-+
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-+msgid "File table overflow"
-+msgstr "Îļþ±íÒç³ö"
-+
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-+msgid "Argument out of domain"
- msgstr ""
-
--#: posix/regex.c:1396
--msgid "Invalid content of \\{\\}"
--msgstr "ÎÞЧµÄ \\{\\} µÄÄÚÈÝ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-+msgid "Result too large"
-+msgstr "½á¹ûÌ«´ó"
-
--#. TRANS An attempt to make an improper link across file systems was detected.
--#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
--#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
--#: stdio-common/../sysdeps/gnu/errlist.c:142
--msgid "Invalid cross-device link"
--msgstr "ÎÞЧµÄ¿çÉ豸Á¬½Ó"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-+msgid "Deadlock situation detected/avoided"
-+msgstr "̽²âµ½/ÒѱÜÃâËÀËø"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:721
--msgid "Invalid exchange"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-+msgid "No record locks available"
-+msgstr "ûÓпÉÓõļǼËø"
-
--#: nis/nis_error.c:45
--msgid "Invalid object for operation"
--msgstr "²Ù×÷ÎÞЧµÄ¶ÔÏó"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-+msgid "Disc quota exceeded"
-+msgstr "³¬³ö´ÅÅÌÏÞ¶î"
-
--#. TRANS While decoding a multibyte character the function came along an invalid
--#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
--#: stdio-common/../sysdeps/gnu/errlist.c:598
--msgid "Invalid or incomplete multibyte or wide character"
--msgstr "ÎÞЧ»ò²»ÍêÕûµÄ¶à×Ö½Ú×Ö·û»ò¿í×Ö·û"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-+msgid "Bad exchange descriptor"
-+msgstr "´íÎóµÄ½»»»ÃèÊö·û"
-
--#: posix/regex.c:1405
--msgid "Invalid preceding regular expression"
--msgstr "ÎÞЧµÄÇ°µ¼³£¹æ±í´ïʽ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-+msgid "Bad request descriptor"
-+msgstr "´íÎóµÄÇëÇóÃèÊö·û"
-
--#: posix/regex.c:1399
--msgid "Invalid range end"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-+msgid "Message tables full"
-+msgstr "ÄÚ´æ±íÒÑÂú"
-
--#: posix/regex.c:1372
--msgid "Invalid regular expression"
--msgstr "ÎÞЧµÄ³£¹æ±í´ïʽ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-+msgid "Anode table overflow"
-+msgstr "Anode ±íÒç³ö"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:737
--msgid "Invalid request code"
--msgstr "ÎÞЧµÄÇëÇóÂë"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-+msgid "Bad request code"
-+msgstr "´íÎóµÄÇëÇóÂë"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:725
--msgid "Invalid request descriptor"
--msgstr "ÎÞЧµÄÇëÇóÃèÊö·û"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-+msgid "File locking deadlock"
-+msgstr "ÎļþËøËÀËø"
-
--#: sunrpc/clnt_perr.c:377
--msgid "Invalid server verifier"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-+msgid "Error 58"
-+msgstr "´íÎó 58"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:741
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
--msgid "Invalid slot"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-+msgid "Error 59"
-+msgstr "´íÎó 59"
-
--#: nscd/nscd.c:91
--msgid "Invalidate the specified cache"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-+msgid "Not a stream device"
-+msgstr "²»ÊÇÁ÷É豸"
-
--#. TRANS File is a directory; you cannot open a directory for writing,
--#. TRANS or create or remove hard links to it.
--#: stdio-common/../sysdeps/gnu/errlist.c:159
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
--msgid "Is a directory"
--msgstr "ÊÇÒ»¸öĿ¼"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-+msgid "Out of stream resources"
-+msgstr "Á÷×ÊÔ´²»×ã"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
--msgid "Is a name file"
--msgstr "ÊÇÒ»¸öÓÐÃûÎļþ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-+msgid "Error 72"
-+msgstr "´íÎó 72"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:825
--msgid "Is a named type file"
--msgstr "ÊÇÒ»¸öÓÐÃûÀàÐÍÎļþ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-+msgid "Error 73"
-+msgstr "´íÎó 73"
-
--#: nis/nis_print.c:191
--msgid "Kerberos.\n"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-+msgid "Error 75"
-+msgstr "´íÎó 75"
-
--#: stdio-common/../sysdeps/unix/siglist.c:35 sysdeps/generic/siglist.h:36
--msgid "Killed"
--msgstr "ÒÑɱËÀ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-+msgid "Error 76"
-+msgstr "´íÎó 76"
-
--#: nis/nis_print.c:127
--msgid "LINK\n"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-+msgid "Not a data message"
-+msgstr "²»ÊÇÊý¾ÝÏûÏ¢"
-
--#: nis/nis_local_names.c:126
--#, c-format
--msgid "LOCAL entry for UID %d in directory %s not unique\n"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-+msgid "Attempting to link in more shared libraries than system limit"
-+msgstr "ÊÔͼÁ¬½ÓµÄ¹²Ïí¿â¸öÊý³¬³öϵͳÏÞÖÆ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:717
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
--msgid "Level 2 halted"
--msgstr "¼¶±ð 2 ¼º¹Ø±Õ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-+msgid "Can not exec a shared library directly"
-+msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:693
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
--msgid "Level 2 not synchronized"
--msgstr "¼¶±ð 2 ÉÐδͬ²½"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-+msgid "Illegal byte sequence"
-+msgstr "·Ç·¨µÄ×Ö½ÚÐò"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:697
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
--msgid "Level 3 halted"
--msgstr "¼¶±ð 3 ÒѹرÕ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-+msgid "Operation not applicable"
-+msgstr "²»¿ÉÓ¦ÓõIJÙ×÷"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:701
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
--msgid "Level 3 reset"
--msgstr "¼¶±ð 3 ÒÑÖØÖÃ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-+msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
-+msgstr "·¾¶±éÀúÖÐÓöµ½µÄ·ûºÅÁ¬½ÓµÄÊýÁ¿³¬¹ýÁË MAXSYMLINKS"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:657
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
--msgid "Link has been severed"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-+msgid "Error 91"
-+msgstr "´íÎó 91"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:705
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
--msgid "Link number out of range"
--msgstr "Á¬½ÓÊý³¬³ö·¶Î§"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-+msgid "Error 92"
-+msgstr "´íÎó 92"
-
--#: nis/nis_error.c:54
--msgid "Link points to illegal name"
--msgstr "Á¬½ÓÖ¸Ïò·Ç·¨Ãû³Æ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-+msgid "Option not supported by protocol"
-+msgstr "ЭÒé²»Ö§³ÖµÄÑ¡Ïî"
-
--#: nis/nis_print.c:286
--msgid "Linked Object Type : "
--msgstr "Á¬½Óµ½¶ÔÏóÀàÐÍ £º"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-+msgid "Error 100"
-+msgstr "´íÎó 100"
-
--#: nis/nis_print.c:288
--#, c-format
--msgid "Linked to : %s\n"
--msgstr "Á¬½Óµ½ £º%s\n"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-+msgid "Error 101"
-+msgstr "´íÎó 101"
-
--#: nis/ypclnt.c:812
--msgid "Local domain name not set"
--msgstr "δÉèÖñ¾µØÓòÃû"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-+msgid "Error 102"
-+msgstr "´íÎó 102"
-
--#: nis/ypclnt.c:802
--msgid "Local resource allocation failure"
--msgstr "±¾µØ×ÊÔ´·ÖÅäʧ°Ü"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-+msgid "Error 103"
-+msgstr "´íÎó 103"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:753
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
--msgid "Machine is not on the network"
--msgstr "»úÆ÷²»ÔÚÍøÂçÖÐ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-+msgid "Error 104"
-+msgstr "´íÎó 104"
-
--#: nis/nis_error.c:46
--msgid "Malformed name, or illegal name"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-+msgid "Error 105"
-+msgstr "´íÎó 105"
-
--#: argp/argp-help.c:1185
--msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-+msgid "Error 106"
-+msgstr "´íÎó 106"
-
--#: elf/ldconfig.c:130
--msgid "Manually link individual libraries."
--msgstr "ÊÖ¹¤Á¬½Ó¶ÀÁ¢µÄ¿â¡£"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-+msgid "Error 107"
-+msgstr "´íÎó 107"
-
--#: nis/nis_print.c:172
--msgid "Master Server :\n"
--msgstr "Ö÷·þÎñÆ÷ £º\n"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-+msgid "Error 108"
-+msgstr "´íÎó 108"
-
--#: nis/nis_error.c:76
--msgid "Master server busy, full dump rescheduled."
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-+msgid "Error 109"
-+msgstr "´íÎó 109"
-
--#: posix/../sysdeps/posix/gai_strerror.c:36
--msgid "Memory allocation failure"
--msgstr "ÄÚ´æ·ÖÅäʧ°Ü"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-+msgid "Error 110"
-+msgstr "´íÎó 110"
-
--#: posix/regex.c:1402
--msgid "Memory exhausted"
--msgstr "ÄÚ´æºÄ¾¡"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-+msgid "Error 111"
-+msgstr "´íÎó 111"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
--msgid "Message tables full"
--msgstr "ÄÚ´æ±íÒÑÂú"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-+msgid "Error 112"
-+msgstr "´íÎó 112"
-
--#. TRANS The size of a message sent on a socket was larger than the supported
--#. TRANS maximum size.
--#: stdio-common/../sysdeps/gnu/errlist.c:318
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
--msgid "Message too long"
--msgstr "ÏûÏ¢¹ý³¤"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-+msgid "Error 113"
-+msgstr "´íÎó 113"
-
--#: nis/nis_error.c:58
--msgid "Missing or malformed attribute"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-+msgid "Error 114"
-+msgstr "´íÎó 114"
-
--#: nis/nis_print.c:331
--#, c-format
--msgid "Mod. Time : %s"
--msgstr "ÐÞ¸Äʱ¼ä £º%s"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-+msgid "Error 115"
-+msgstr "´íÎó 115"
-
--#: nis/nis_error.c:51
--msgid "Modification failed"
--msgstr "ÐÞ¸Äʧ°Ü"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-+msgid "Error 116"
-+msgstr "´íÎó 116"
-
--#: nis/nis_error.c:64
--msgid "Modify operation failed"
--msgstr "Ð޸IJÙ×÷ʧ°Ü"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-+msgid "Error 117"
-+msgstr "´íÎó 117"
-
--#: locale/programs/locale.c:78
--msgid "Modify output format:"
--msgstr "ÐÞ¸ÄÊä³ö¸ñʽ£º"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-+msgid "Error 118"
-+msgstr "´íÎó 118"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:649
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
--msgid "Multihop attempted"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-+msgid "Error 119"
-+msgstr "´íÎó 119"
-
--#: nscd/nscd_conf.c:182
--msgid "Must specify user name for server-user option"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-+msgid "Operation not supported on transport endpoint"
-+msgstr "´«Êä¶Ëµã²»Ö§³ÖµÄ²Ù×÷"
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 locale/programs/localedef.c:115
--#: nscd/nscd.c:83
--msgid "NAME"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-+msgid "Address family not supported by protocol family"
-+msgstr "ЭÒé×å²»Ö§³ÖµÄµØÖ·×å"
-
--#: locale/programs/locale.c:89
--msgid ""
--"NAME\n"
--"[-a|-m]"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-+msgid "Network dropped connection because of reset"
-+msgstr "ÒòΪÖØÖöø¶Ï¿ªÍøÂçÁ¬½Ó"
-
--#: nis/ypclnt.c:816
--msgid "NIS client/server version mismatch - can't supply service"
--msgstr "NIS ¿Í»§¶Ë/·þÎñÆ÷°æ±¾²»Æ¥Åä - ÎÞ·¨Ö§³Ö·þÎñ"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-+msgid "Error 136"
-+msgstr "´íÎó 136"
-
--#: nis/ypclnt.c:814
--msgid "NIS map database is bad"
--msgstr "NIS Ó³ÉäÊý¾Ý¿â´íÎó"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-+msgid "Not a name file"
-+msgstr "²»ÊÇÓÐÃûÎļþ"
-
--#: nis/nis_error.c:69
--msgid "NIS+ operation failed"
--msgstr "NIS+ ²Ù×÷ʧ°Ü"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-+msgid "Not available"
-+msgstr "²»¿ÉÓÃ"
-
--#: nis/nis_error.c:34
--msgid "NIS+ servers unreachable"
--msgstr "NIS+ ·þÎñÆ÷²»¿É´ï"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-+msgid "Is a name file"
-+msgstr "ÊÇÒ»¸öÓÐÃûÎļþ"
-
--#: nis/nis_error.c:70
--msgid "NIS+ service is unavailable or not installed"
--msgstr "NIS+ ·þÎñÆ÷²»¿ÉÓûòδ°²×°"
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-+msgid "Reserved for future use"
-+msgstr "±£ÁôÓÃÓÚδÀ´"
-
--#: nis/nis_print.c:112
--msgid "NO OBJECT\n"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-+msgid "Error 142"
-+msgstr "´íÎó 142"
-
--#: nscd/nscd.c:87
--msgid "NUMBER"
--msgstr ""
-+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-+msgid "Cannot send after socket shutdown"
-+msgstr "ÎÞ·¨ÔÚÌ×½Ó×ֹرպó·¢ËÍ"
-
--#: nis/nis_print.c:166
-+#: stdio-common/psignal.c:63
- #, c-format
--msgid "Name : `%s'\n"
--msgstr ""
-+msgid "%s%sUnknown signal %d\n"
-+msgstr "%s%sδ֪µÄÐźŠ%d\n"
-+
-+#: malloc/mcheck.c:346
-+msgid "memory is consistent, library is buggy\n"
-+msgstr "ÄÚ´æ²»Ò»Ö£¬¿âÓдíÎó\n"
-
--#: nscd/nscd.c:97
--msgid "Name Service Cache Daemon."
-+#: malloc/mcheck.c:349
-+msgid "memory clobbered before allocated block\n"
- msgstr ""
-
--#: nis/nis_error.c:41
--msgid "Name not served by this server"
-+#: malloc/mcheck.c:352
-+msgid "memory clobbered past end of allocated block\n"
- msgstr ""
-
--#: stdio-common/../sysdeps/gnu/errlist.c:777
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
--msgid "Name not unique on network"
--msgstr ""
-+#: malloc/mcheck.c:355
-+msgid "block freed twice\n"
-+msgstr "¿éÊÍ·ÅÁËÁ½´Î\n"
-
--#: posix/../sysdeps/posix/gai_strerror.c:38
--msgid "Name or service not known"
-+#: malloc/mcheck.c:358
-+msgid "bogus mcheck_status, library is buggy\n"
- msgstr ""
-
- #: malloc/memusagestat.c:53
- msgid "Name output file"
- msgstr "ÃûÊä³öÎļþ"
-
--#: nis/nis_error.c:50
--msgid "Name/entry isn't unique"
--msgstr "Ãû³Æ/ÌõÄ¿²»Î¨Ò»"
--
--#: nis/nis_error.c:59
--msgid "Named object is not searchable"
--msgstr "²»ÄÜËÑË÷ÃüÃû¶ÔÏó"
--
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:567
--msgid "Need authenticator"
--msgstr "ÐèÒªÈÏÖ¤Æ÷"
--
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
--msgid "Network dropped connection because of reset"
--msgstr "ÒòΪÖØÖöø¶Ï¿ªÍøÂçÁ¬½Ó"
--
--#. TRANS A network connection was reset because the remote host crashed.
--#: stdio-common/../sysdeps/gnu/errlist.c:390
--msgid "Network dropped connection on reset"
--msgstr "ÖØÖÃʱ¶Ï¿ªÍøÂçÁ¬½Ó"
--
--#. TRANS A socket operation failed because the network was down.
--#: stdio-common/../sysdeps/gnu/errlist.c:379
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
--msgid "Network is down"
--msgstr "ÍøÂçÒѹرÕ"
--
--#. TRANS A socket operation failed because the subnet containing the remote host
--#. TRANS was unreachable.
--#: stdio-common/../sysdeps/gnu/errlist.c:385
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
--msgid "Network is unreachable"
--msgstr "ÍøÂç²»¿É´ï"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:713
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
--msgid "No CSI structure available"
--msgstr "ûÓпÉÓÃµÄ CSI ½á¹¹"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:821
--msgid "No XENIX semaphores available"
--msgstr "ûÓпÉÓÃµÄ XENIX ÐźÅÁ¿"
-+#: malloc/memusagestat.c:54
-+msgid "Title string used in output graphic"
-+msgstr "ÓÃÓÚÊä³öͼÐεıêÌâ×Ö·û´®"
-
--#: posix/../sysdeps/posix/gai_strerror.c:37
--msgid "No address associated with hostname"
--msgstr "ûÓÐÓëÖ÷»úÃû¹ØÁªµÄµØÖ·"
-+#: malloc/memusagestat.c:55
-+msgid "Generate output linear to time (default is linear to number of function calls)"
-+msgstr ""
-
--#: resolv/herror.c:71
--msgid "No address associated with name"
--msgstr "ûÓÐÓëÃû×Ö¹ØÁªµÄµØÖ·"
-+#: malloc/memusagestat.c:57
-+msgid "Also draw graph for total memory consumption"
-+msgstr ""
-
--#: stdio-common/../sysdeps/gnu/errlist.c:733
--msgid "No anode"
-+#: malloc/memusagestat.c:58
-+msgid "make output graphic VALUE pixel wide"
- msgstr ""
-
--#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
--#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
--#. TRANS other from network operations.
--#: stdio-common/../sysdeps/gnu/errlist.c:409
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
--msgid "No buffer space available"
--msgstr "ûÓпÉÓõĻº³åÇø¿Õ¼ä"
-+#: malloc/memusagestat.c:59
-+msgid "make output graphic VALUE pixel high"
-+msgstr ""
-
--#: locale/programs/ld-ctype.c:433
--msgid "No character set name specified in charmap"
-+#: malloc/memusagestat.c:64
-+msgid "Generate graphic from memory profiling data"
- msgstr ""
-
--#. TRANS There are no child processes. This error happens on operations that are
--#. TRANS supposed to manipulate child processes, when there aren't any processes
--#. TRANS to manipulate.
--#: stdio-common/../sysdeps/gnu/errlist.c:90
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
--msgid "No child processes"
--msgstr "ûÓÐ×Ó½ø³Ì"
-+#: malloc/memusagestat.c:67
-+msgid "DATAFILE [OUTFILE]"
-+msgstr "Êý¾ÝÎļþ [Êä³öÎļþ]"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:653
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
--msgid "No data available"
--msgstr "ûÓпÉÓõÄÊý¾Ý"
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "δ֪µÄ´íÎó"
-
--#: locale/programs/ld-address.c:131 locale/programs/ld-collate.c:1513
--#: locale/programs/ld-ctype.c:415 locale/programs/ld-identification.c:132
--#: locale/programs/ld-measurement.c:93 locale/programs/ld-messages.c:98
--#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
--#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:91
--#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:160
-+#: string/strsignal.c:69
- #, c-format
--msgid "No definition for %s category found"
--msgstr ""
-+msgid "Real-time signal %d"
-+msgstr "ʵʱÐźŠ%d"
-
--#: nis/nis_error.c:74
--msgid "No file space on server"
--msgstr "·þÎñÆ÷ÉÏûÓÐÎļþ¿Õ¼ä"
-+#: string/strsignal.c:73
-+#, c-format
-+msgid "Unknown signal %d"
-+msgstr "δ֪ÐźŠ%d"
-
--#: elf/ldconfig.c:543
-+#: timezone/zdump.c:175
- #, c-format
--msgid "No link created since soname could not be found for %s"
--msgstr ""
-+msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
-+msgstr "%s£ºÓ÷¨Îª %s [ -v ] [ -c cutoff ] ÇøÓòÃû ...\n"
-
--#. TRANS No locks available. This is used by the file locking facilities; see
--#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
--#. TRANS it can result from an operation to an NFS server running another
--#. TRANS operating system.
--#: stdio-common/../sysdeps/gnu/errlist.c:548
--msgid "No locks available"
--msgstr "ûÓпÉÓõÄËø"
-+#: timezone/zdump.c:268
-+msgid "Error writing standard output"
-+msgstr "дÈë±ê×¼Êä³ö³ö´í"
-
--#: posix/regex.c:1369
--msgid "No match"
--msgstr "ûÓÐÆ¥Åä"
-+#: timezone/zic.c:365
-+#, c-format
-+msgid "%s: Memory exhausted: %s\n"
-+msgstr "%s£ºÄÚ´æºÄ¾¡£º%s\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:833
--msgid "No medium found"
--msgstr "ÕÒ²»µ½½éÖÊ"
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
-+msgid "Unknown system error"
-+msgstr "δ֪µÄϵͳ´íÎó"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:661
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
--msgid "No message of desired type"
--msgstr ""
-+#: timezone/zic.c:424
-+#, c-format
-+msgid "\"%s\", line %d: %s"
-+msgstr "¡°%s¡±£¬ÐÐ %d£º%s"
-
--#: nis/ypclnt.c:804
--msgid "No more records in map database"
-+#: timezone/zic.c:427
-+#, c-format
-+msgid " (rule from \"%s\", line %d)"
- msgstr ""
-
--#: posix/regex.c:7956
--msgid "No previous regular expression"
--msgstr "ûÓÐÇ°Ò»¸ö³£¹æ±í´ïʽ"
-+#: timezone/zic.c:439
-+msgid "warning: "
-+msgstr "¾¯¸æ£º"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
--msgid "No record locks available"
--msgstr "ûÓпÉÓõļǼËø"
-+#: timezone/zic.c:449
-+#, c-format
-+msgid ""
-+"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
-+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
-+msgstr ""
-+"%s£ºÓ÷¨Îª %s [ -s ] [ -v ] [ -l ±¾µØʱ¼ä ] [ -p posix ¹æÔò ] \\\n"
-+"\t[ -d Ŀ¼ ] [ -L leapseconds ] [ -y yearistype ] [ ÎļþÃû ... ]\n"
-
--#: sunrpc/rpcinfo.c:570
--msgid "No remote programs registered.\n"
--msgstr "ûÓÐ×¢²áµÄÔ¶³Ì³ÌÐò¡£\n"
-+#: timezone/zic.c:491
-+#, c-format
-+msgid "%s: More than one -d option specified\n"
-+msgstr "%s£º¸ø³öÁ˶à¸ö -d Ñ¡Ïî\n"
-
--#. TRANS The remote host for a requested network connection is not reachable.
--#: stdio-common/../sysdeps/gnu/errlist.c:475
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
--msgid "No route to host"
--msgstr "ûÓе½Ö÷»úµÄ·ÓÉ"
-+#: timezone/zic.c:501
-+#, c-format
-+msgid "%s: More than one -l option specified\n"
-+msgstr "%s£º¸ø³öÁ˶à¸ö -l Ñ¡Ïî\n"
-
--#. TRANS No space left on device; write operation on a file failed because the
--#. TRANS disk is full.
--#: stdio-common/../sysdeps/gnu/errlist.c:209
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
--msgid "No space left on device"
--msgstr "É豸ÉÏûÓпռä"
-+#: timezone/zic.c:511
-+#, c-format
-+msgid "%s: More than one -p option specified\n"
-+msgstr "%s£º¸ø³öÁ˶à¸ö -p Ñ¡Ïî\n"
-
--#. TRANS The wrong type of device was given to a function that expects a
--#. TRANS particular sort of device.
--#: stdio-common/../sysdeps/gnu/errlist.c:148
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
--msgid "No such device"
--msgstr "ûÓÐÄǸöÉ豸"
-+#: timezone/zic.c:521
-+#, c-format
-+msgid "%s: More than one -y option specified\n"
-+msgstr "%s£º¸ø³öÁ˶à¸ö -y Ñ¡Ïî\n"
-
--#. TRANS No such device or address. The system tried to use the device
--#. TRANS represented by a file you specified, and it couldn't find the device.
--#. TRANS This can mean that the device file was installed incorrectly, or that
--#. TRANS the physical device is missing or not correctly attached to the
--#. TRANS computer.
--#: stdio-common/../sysdeps/gnu/errlist.c:62
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
--msgid "No such device or address"
--msgstr "ûÓÐÄǸöÉ豸»òµØÖ·"
-+#: timezone/zic.c:531
-+#, c-format
-+msgid "%s: More than one -L option specified\n"
-+msgstr "%s£º¸ø³öÁ˶à¸ö -L Ñ¡Ïî\n"
-
--#. TRANS No such file or directory. This is a ``file doesn't exist'' error
--#. TRANS for ordinary files that are referenced in contexts where they are
--#. TRANS expected to already exist.
--#: stdio-common/../sysdeps/gnu/errlist.c:32
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
--msgid "No such file or directory"
--msgstr "ûÓÐÄǸöÎļþ»òĿ¼"
-+#: timezone/zic.c:638
-+#, c-format
-+msgid "%s: Can't unlink %s: %s\n"
-+msgstr "%s£ºÎÞ·¨½â³ýÁ¬½Ó %s£º%s\n"
-
--#: nis/ypclnt.c:798
--msgid "No such key in map"
--msgstr ""
-+#: timezone/zic.c:645
-+msgid "hard link failed, symbolic link used"
-+msgstr "Ó²Á¬½Óʧ°Ü£¬Ê¹Ó÷ûºÅÁ¬½Ó"
-
--#: nis/ypclnt.c:796
--msgid "No such map in server's domain"
--msgstr ""
-+#: timezone/zic.c:653
-+#, c-format
-+msgid "%s: Can't link from %s to %s: %s\n"
-+msgstr "%s£ºÎÞ·¨´Ó %s Á¬½Óµ½ %s£º%s\n"
-
--#. TRANS No process matches the specified process ID.
--#: stdio-common/../sysdeps/gnu/errlist.c:37
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
--msgid "No such process"
--msgstr "ûÓÐÄǸö½ø³Ì"
-+#: timezone/zic.c:751 timezone/zic.c:753
-+msgid "same rule name in multiple files"
-+msgstr "¶à¸öÎļþÖеÄÏàͬ¹æÔòÃû"
-
--#: nis/nis_error.c:61
--msgid "Non NIS+ namespace encountered"
-+#: timezone/zic.c:794
-+msgid "unruly zone"
- msgstr ""
-
--#: posix/../sysdeps/posix/gai_strerror.c:34
--msgid "Non-recoverable failure in name resolution"
--msgstr "ÓòÃû½âÎöÖгöÏÖ²»¿ÉÐÞ¸´µÄʧ°Ü"
--
--#: nis/nis_print.c:180
--msgid "None.\n"
--msgstr "ÎÞ¡£\n"
-+#: timezone/zic.c:801
-+#, c-format
-+msgid "%s in ruleless zone"
-+msgstr ""
-
--#: stdio-common/../sysdeps/gnu/errlist.c:817
--msgid "Not a XENIX named type file"
--msgstr "²»ÊÇ XENIX ÃüÃûµÄÀàÐÍÎļþ"
-+#: timezone/zic.c:822
-+msgid "standard input"
-+msgstr "±ê×¼ÊäÈë"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
--msgid "Not a data message"
--msgstr "²»ÊÇÊý¾ÝÏûÏ¢"
-+#: timezone/zic.c:827
-+#, c-format
-+msgid "%s: Can't open %s: %s\n"
-+msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%s\n"
-
--#. TRANS A file that isn't a directory was specified when a directory is required.
--#: stdio-common/../sysdeps/gnu/errlist.c:153
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
--msgid "Not a directory"
--msgstr "²»ÊÇĿ¼"
-+#: timezone/zic.c:838
-+msgid "line too long"
-+msgstr "Ðйý³¤"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
--msgid "Not a name file"
--msgstr "²»ÊÇÓÐÃûÎļþ"
-+#: timezone/zic.c:858
-+msgid "input line of unknown type"
-+msgstr "δ֪ÀàÐ͵ÄÊäÈëÐÐ"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
--msgid "Not a stream device"
--msgstr "²»ÊÇÁ÷É豸"
-+#: timezone/zic.c:874
-+#, c-format
-+msgid "%s: Leap line in non leap seconds file %s\n"
-+msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
--msgid "Not available"
--msgstr "²»¿ÉÓÃ"
-+#: timezone/zic.c:881 timezone/zic.c:1295 timezone/zic.c:1320
-+#, c-format
-+msgid "%s: panic: Invalid l_value %d\n"
-+msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
--msgid "Not enough space"
--msgstr "¿Õ¼ä²»¹»"
-+#: timezone/zic.c:889
-+#, c-format
-+msgid "%s: Error reading %s\n"
-+msgstr "%s£º¶Á %s ´íÎó\n"
-
--#: nis/nis_error.c:31
--msgid "Not found"
--msgstr "ÕÒ²»µ½"
-+#: timezone/zic.c:896
-+#, c-format
-+msgid "%s: Error closing %s: %s\n"
-+msgstr "%s£º¹Ø±Õ %s ´íÎó£º%s\n"
-
--#: nis/nis_error.c:49
--msgid "Not found, no such name"
--msgstr "ÕÒ²»µ½£¬Ã»ÓÐÄǸöÃû×Ö"
-+#: timezone/zic.c:901
-+msgid "expected continuation line not found"
-+msgstr "ÕÒ²»µ½Ó¦¸Ã³öÏÖµÄÐøÐÐ"
-
--#: nis/nis_error.c:44
--msgid "Not master server for this domain"
--msgstr "¸ÃÓòûÓÐÖ÷·þÎñÆ÷"
-+#: timezone/zic.c:957
-+msgid "wrong number of fields on Rule line"
-+msgstr "¹æÔòÐÐÖÐÓòµÄ¸öÊý´íÎó"
-
--#: nis/nis_error.c:40
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
--msgid "Not owner"
--msgstr "²»ÊÇËùÓÐÕß"
-+#: timezone/zic.c:961
-+msgid "nameless rule"
-+msgstr "ÎÞÃû¹æÔò"
-
--#. TRANS Not supported. A function returns this error when certain parameter
--#. TRANS values are valid, but the functionality they request is not available.
--#. TRANS This can mean that the function does not implement a particular command
--#. TRANS or option value or flag bit at all. For functions that operate on some
--#. TRANS object given in a parameter, such as a file descriptor or a port, it
--#. TRANS might instead mean that only @emph{that specific object} (file
--#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
--#. TRANS different file descriptors might support different ranges of parameter
--#. TRANS values.
--#. TRANS
--#. TRANS If the entire function is not available at all in the implementation,
--#. TRANS it returns @code{ENOSYS} instead.
--#: stdio-common/../sysdeps/gnu/errlist.c:592
--msgid "Not supported"
--msgstr "²»Ö§³Ö"
-+#: timezone/zic.c:966
-+msgid "invalid saved time"
-+msgstr ""
-
--#: nis/nis_print.c:267
-+#: timezone/zic.c:985
-+msgid "wrong number of fields on Zone line"
-+msgstr "ÇøÓòÐÐÖÐÓòµÄ¸öÊý´íÎó"
-+
-+#: timezone/zic.c:991
- #, c-format
--msgid "Number of Columns : %d\n"
--msgstr "ÁеÄÊýÁ¿ £º%d\n"
-+msgid "\"Zone %s\" line and -l option are mutually exclusive"
-+msgstr ""
-
--#: nis/nis_print.c:366
-+#: timezone/zic.c:999
- #, c-format
--msgid "Number of objects : %u\n"
-+msgid "\"Zone %s\" line and -p option are mutually exclusive"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
--msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
-+#: timezone/zic.c:1011
-+#, c-format
-+msgid "duplicate zone name %s (file \"%s\", line %d)"
-+msgstr "Öظ´µÄÇøÓòÃû %s (Îļþ¡°%s¡±£¬ÐÐ %d)"
-+
-+#: timezone/zic.c:1027
-+msgid "wrong number of fields on Zone continuation line"
- msgstr ""
-
--#. TRANS Domain error; used by mathematical functions when an argument value does
--#. TRANS not fall into the domain over which the function is defined.
--#: stdio-common/../sysdeps/gnu/errlist.c:241
--msgid "Numerical argument out of domain"
--msgstr "ÊýÖµ²ÎÊý³¬³öÓò"
-+#: timezone/zic.c:1067
-+msgid "invalid UTC offset"
-+msgstr "ÎÞЧµÄ UTC Æ«ÒÆÁ¿"
-
--#. TRANS Range error; used by mathematical functions when the result value is
--#. TRANS not representable because of overflow or underflow.
--#: stdio-common/../sysdeps/gnu/errlist.c:247
--msgid "Numerical result out of range"
--msgstr "ÊýÖµ½á¹û³¬³ö·¶Î§"
-+#: timezone/zic.c:1070
-+msgid "invalid abbreviation format"
-+msgstr "ÎÞЧµÄËõÂÔ¸ñʽ"
-
--#: nis/nis_print.c:370
--#, c-format
--msgid "Object #%d:\n"
--msgstr "¶ÔÏó #%d£º\n"
-+#: timezone/zic.c:1096
-+msgid "Zone continuation line end time is not after end time of previous line"
-+msgstr ""
-
--#: nis/nis_print.c:320
--#, c-format
--msgid "Object Name : %s\n"
--msgstr "¶ÔÏóÃû³Æ £º%s\n"
-+#: timezone/zic.c:1123
-+msgid "wrong number of fields on Leap line"
-+msgstr ""
-
--#: nis/nis_print.c:332
--msgid "Object Type : "
--msgstr "¶ÔÏóÀàÐÍ £º%s"
-+#: timezone/zic.c:1132
-+msgid "invalid leaping year"
-+msgstr "ÎÞЧµÄÈòÄê"
-
--#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
--#. TRANS already specifies an NFS-mounted file.
--#. TRANS (This is an error on some operating systems, but we expect it to work
--#. TRANS properly on the GNU system, making this error code impossible.)
--#: stdio-common/../sysdeps/gnu/errlist.c:515
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
--msgid "Object is remote"
--msgstr "¶ÔÏóÊÇÔ¶³ÌµÄ"
-+#: timezone/zic.c:1147 timezone/zic.c:1250
-+msgid "invalid month name"
-+msgstr "ÎÞЧµÄÔÂÃû³Æ"
-
--#: nis/nis_error.c:43
--msgid "Object with same name exists"
--msgstr "ͬÃû¶ÔÏóÒÑ´æÔÚ"
-+#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
-+msgid "invalid day of month"
-+msgstr "ÎÞЧµÄÈÕ"
-
--#: timezone/zic.c:2028
--msgid "Odd number of quotation marks"
--msgstr "ÆæÊý¸öÒýºÅ"
-+#: timezone/zic.c:1165
-+msgid "time before zero"
-+msgstr ""
-
--#: elf/ldconfig.c:129
--msgid "Only process directories specified on the command line. Don't build cache."
--msgstr "Ö»ÔÚÃüÁîÐÐÖиø³öÁ˽ø³ÌĿ¼¡£Î´´´½¨»º³åÇø¡£"
-+#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
-+msgid "time overflow"
-+msgstr "ʱ¼äÒç³ö"
-
--#: nscd/nscd.c:200 nscd/nscd.c:220 nscd/nscd.c:226
--msgid "Only root is allowed to use this option!"
--msgstr "Ö»ÓиùÓû§ÔÊÐíʹÓñ¾Ñ¡Ï"
-+#: timezone/zic.c:1176 timezone/zic.c:1279
-+msgid "invalid time of day"
-+msgstr "ÎÞЧµÄʱ¼ä"
-
--#. TRANS An operation is already in progress on an object that has non-blocking
--#. TRANS mode selected.
--#: stdio-common/../sysdeps/gnu/errlist.c:307
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
--msgid "Operation already in progress"
--msgstr "²Ù×÷ÒѾ­ÔÚ½øÐÐ"
-+#: timezone/zic.c:1195
-+msgid "illegal CORRECTION field on Leap line"
-+msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
--msgid "Operation canceled"
--msgstr "²Ù×÷ÒÑÈ¡Ïû"
-+#: timezone/zic.c:1199
-+msgid "illegal Rolling/Stationary field on Leap line"
-+msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
--msgid "Operation not applicable"
--msgstr "²»¿ÉÓ¦ÓõIJÙ×÷"
-+#: timezone/zic.c:1214
-+msgid "wrong number of fields on Link line"
-+msgstr "Á¬½ÓÐÐÖÐÓòµÄ¸öÊý´íÎó"
-
--#. TRANS Operation not permitted; only the owner of the file (or other resource)
--#. TRANS or processes with special privileges can perform the operation.
--#: stdio-common/../sysdeps/gnu/errlist.c:25
--msgid "Operation not permitted"
--msgstr "²»ÔÊÐíµÄ²Ù×÷"
-+#: timezone/zic.c:1218
-+msgid "blank FROM field on Link line"
-+msgstr "Link ÐÐÖÐ¿Õ°×µÄ FROM Óò"
-
--#. TRANS The operation you requested is not supported. Some socket functions
--#. TRANS don't make sense for all types of sockets, and others may not be
--#. TRANS implemented for all communications protocols. In the GNU system, this
--#. TRANS error can happen for many calls when the object does not support the
--#. TRANS particular operation; it is a generic indication that the server knows
--#. TRANS nothing to do for that call.
--#: stdio-common/../sysdeps/gnu/errlist.c:351
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
--msgid "Operation not supported"
--msgstr "²»Ö§³ÖµÄ²Ù×÷"
-+#: timezone/zic.c:1222
-+msgid "blank TO field on Link line"
-+msgstr "Link ÐÐÖÐ¿Õ°×µÄ TO Óò"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
--msgid "Operation not supported on transport endpoint"
--msgstr "´«Êä¶Ëµã²»Ö§³ÖµÄ²Ù×÷"
-+#: timezone/zic.c:1299
-+msgid "invalid starting year"
-+msgstr "ÎÞЧµÄÆðʼÄê·Ý"
-
--#. TRANS An operation that cannot complete immediately was initiated on an object
--#. TRANS that has non-blocking mode selected. Some functions that must always
--#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
--#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
--#. TRANS the operation has begun and will take some time. Attempts to manipulate
--#. TRANS the object before the call completes return @code{EALREADY}. You can
--#. TRANS use the @code{select} function to find out when the pending operation
--#. TRANS has completed; @pxref{Waiting for I/O}.
--#: stdio-common/../sysdeps/gnu/errlist.c:301
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
--msgid "Operation now in progress"
--msgstr "²Ù×÷ÏÖÔÚÕýÔÚ½øÐÐ"
-+#: timezone/zic.c:1303 timezone/zic.c:1328
-+msgid "starting year too low to be represented"
-+msgstr ""
-
--#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
--#. TRANS The values are always the same, on every operating system.
--#. TRANS
--#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
--#. TRANS separate error code.
--#: stdio-common/../sysdeps/gnu/errlist.c:289
--msgid "Operation would block"
--msgstr "²Ù×÷½«×èÈû"
-+#: timezone/zic.c:1305 timezone/zic.c:1330
-+msgid "starting year too high to be represented"
-+msgstr ""
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
--msgid "Option not supported by protocol"
--msgstr "ЭÒé²»Ö§³ÖµÄÑ¡Ïî"
-+#: timezone/zic.c:1324
-+msgid "invalid ending year"
-+msgstr "ÎÞЧµÄÖÕÖ¹Äê·Ý"
-
--#: locale/programs/localedef.c:103
--msgid "Optional output file prefix"
--msgstr "¿ÉÑ¡µÄÊä³öÎļþǰ׺"
-+#: timezone/zic.c:1333
-+msgid "starting year greater than ending year"
-+msgstr "ÆðʼÄê·Ý´óÓÚÖÕÖ¹Äê·Ý"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
--msgid "Out of stream resources"
--msgstr "Á÷×ÊÔ´²»×ã"
-+#: timezone/zic.c:1340
-+msgid "typed single year"
-+msgstr ""
-
--#: stdio-common/../sysdeps/gnu/errlist.c:665
--msgid "Out of streams resources"
--msgstr "Á÷×ÊÔ´²»×ã"
-+#: timezone/zic.c:1377
-+msgid "invalid weekday name"
-+msgstr "ÎÞЧµÄÐÇÆÚÃû"
-
--#: iconv/iconv_prog.c:64 locale/programs/localedef.c:99
--msgid "Output control:"
--msgstr "Êä³ö¿ØÖÆ£º"
-+#: timezone/zic.c:1492
-+#, c-format
-+msgid "%s: Can't remove %s: %s\n"
-+msgstr "%s£ºÎÞ·¨É¾³ý %s£º%s\n"
-
--#: elf/sprof.c:72
--msgid "Output selection:"
--msgstr "Êä³öÑ¡Ôñ£º"
-+#: timezone/zic.c:1502
-+#, c-format
-+msgid "%s: Can't create %s: %s\n"
-+msgstr "%s£ºÎÞ·¨´´½¨ %s£º%s\n"
-
--#: nis/nis_print.c:322
-+#: timezone/zic.c:1568
- #, c-format
--msgid "Owner : %s\n"
--msgstr "ËùÓÐÕß £º%s\n"
-+msgid "%s: Error writing %s\n"
-+msgstr "%s£ºÐ´ %s ´íÎó\n"
-
--#: nis/nis_print.c:130
--msgid "PRIVATE\n"
-+#: timezone/zic.c:1758
-+msgid "can't determine time zone abbreviation to use just after until time"
- msgstr ""
-
--#: stdio-common/../sysdeps/gnu/errlist.c:757
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
--msgid "Package not installed"
--msgstr "°üδ°²×°"
-+#: timezone/zic.c:1801
-+msgid "too many transitions?!"
-+msgstr ""
-
--#: nscd/nscd_conf.c:83
--#, c-format
--msgid "Parse error: %s"
--msgstr "½âÎö´íÎó£º%s"
-+#: timezone/zic.c:1820
-+msgid "internal error - addtype called with bad isdst"
-+msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ isdst µ÷Óà addtype"
-+
-+#: timezone/zic.c:1824
-+msgid "internal error - addtype called with bad ttisstd"
-+msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisstd µ÷Óà addtype"
-+
-+#: timezone/zic.c:1828
-+msgid "internal error - addtype called with bad ttisgmt"
-+msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisgmt µ÷Óà addtype"
-+
-+#: timezone/zic.c:1847
-+msgid "too many local time types"
-+msgstr "¹ý¶àµÄ±¾µØʱ¼äÀàÐÍ"
-+
-+#: timezone/zic.c:1875
-+msgid "too many leap seconds"
-+msgstr ""
-
--#: nis/nis_error.c:55
--msgid "Partial success"
-+#: timezone/zic.c:1881
-+msgid "repeated leap second moment"
- msgstr ""
-
--#: nis/nis_error.c:63
--msgid "Passed object is not the same object on server"
-+#: timezone/zic.c:1933
-+msgid "Wild result from command execution"
- msgstr ""
-
--#: elf/ldconfig.c:282
-+#: timezone/zic.c:1934
- #, c-format
--msgid "Path `%s' given more than once"
--msgstr "¶à´Î¸ø³ö·¾¶¡°%s¡±"
--
--#. TRANS Permission denied; the file permissions do not allow the attempted operation.
--#: nis/nis_error.c:39 nis/ypclnt.c:818
--#: stdio-common/../sysdeps/gnu/errlist.c:109
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
--msgid "Permission denied"
--msgstr "ȨÏÞ²»¹»"
--
--#: sysdeps/generic/siglist.h:71
--msgid "Power failure"
--msgstr "µçԴʧЧ"
--
--#: posix/regex.c:1408
--msgid "Premature end of regular expression"
--msgstr "³£¹æ±í´ïʽ·ÇÕý³£½áÊø"
-+msgid "%s: command was '%s', result was %d\n"
-+msgstr "%s£ºÃüÁîΪ¡°%s¡±£¬½á¹ûΪ %d\n"
-
--#: elf/ldconfig.c:122
--msgid "Print cache"
--msgstr "´òÓ¡»º³åÇø"
-+#: timezone/zic.c:2029
-+msgid "Odd number of quotation marks"
-+msgstr "ÆæÊý¸öÒýºÅ"
-
--#: nscd/nscd.c:89
--msgid "Print current configuration statistic"
--msgstr "´òÓ¡µ±Ç°ÅäÖÃͳ¼Æ"
-+#: timezone/zic.c:2115
-+msgid "use of 2/29 in non leap-year"
-+msgstr ""
-
--#: locale/programs/locale.c:81
--msgid "Print more information"
--msgstr "´òÓ¡¸ü¶àÐÅÏ¢"
-+#: timezone/zic.c:2149
-+msgid "no day in month matches rule"
-+msgstr ""
-
--#: locale/programs/localedef.c:107
--msgid "Print more messages"
--msgstr "´òÓ¡¸ü¶àÏûÏ¢"
-+#: timezone/zic.c:2172
-+msgid "too many, or too long, time zone abbreviations"
-+msgstr "¹ý¶à»ò¹ý³¤µÄʱÇøËõд"
-
--#: argp/argp-parse.c:154
--msgid "Print program version"
--msgstr "´òÓ¡³ÌÐò°æ±¾ºÅ"
-+#: timezone/zic.c:2213
-+#, c-format
-+msgid "%s: Can't create directory %s: %s\n"
-+msgstr "%s£ºÎÞ·¨´´½¨Ä¿Â¼ %s£º%s\n"
-
--#: nis/nis_error.c:30
--msgid "Probable success"
-+#: timezone/zic.c:2235
-+#, c-format
-+msgid "%s: %d did not sign extend correctly\n"
- msgstr ""
-
--#: nis/nis_error.c:32
--msgid "Probably not found"
--msgstr ""
-+#: posix/../sysdeps/generic/wordexp.c:1801
-+msgid "parameter null or not set"
-+msgstr "²ÎÊýΪ null »òδÉèÖÃ"
-
--#: posix/../sysdeps/posix/gai_strerror.c:42
--msgid "Processing request in progress"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:31
-+msgid "Address family for hostname not supported"
-+msgstr "²»Ö§³ÖµÄÖ÷»úÃûµØÖ·×å"
-
--#: stdio-common/../sysdeps/unix/siglist.c:53 sysdeps/generic/siglist.h:53
--msgid "Profiling timer expired"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:32
-+msgid "Temporary failure in name resolution"
-+msgstr "ÓòÃû½âÎöÔÝʱʧ°Ü"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:709
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
--msgid "Protocol driver not attached"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:33
-+msgid "Bad value for ai_flags"
-+msgstr "´íÎóµÄ ai_flags µÄÖµ"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:677
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
--msgid "Protocol error"
--msgstr "ЭÒé´íÎó"
-+#: posix/../sysdeps/posix/gai_strerror.c:34
-+msgid "Non-recoverable failure in name resolution"
-+msgstr "ÓòÃû½âÎöÖгöÏÖ²»¿ÉÐÞ¸´µÄʧ°Ü"
-
--#. TRANS The socket communications protocol family you requested is not supported.
--#: stdio-common/../sysdeps/gnu/errlist.c:356
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
--msgid "Protocol family not supported"
--msgstr "²»Ö§³ÖµÄЭÒé×å"
-+#: posix/../sysdeps/posix/gai_strerror.c:35
-+msgid "ai_family not supported"
-+msgstr "²»Ö§³Ö ai_family"
-
--#. TRANS You specified a socket option that doesn't make sense for the
--#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
--#: stdio-common/../sysdeps/gnu/errlist.c:329
--msgid "Protocol not available"
--msgstr "²»¿ÉÓõÄЭÒé"
-+#: posix/../sysdeps/posix/gai_strerror.c:36
-+msgid "Memory allocation failure"
-+msgstr "ÄÚ´æ·ÖÅäʧ°Ü"
-
--#. TRANS The socket domain does not support the requested communications protocol
--#. TRANS (perhaps because the requested protocol is completely invalid).
--#. TRANS @xref{Creating a Socket}.
--#: stdio-common/../sysdeps/gnu/errlist.c:336
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
--msgid "Protocol not supported"
--msgstr "²»Ö§³ÖµÄЭÒé"
-+#: posix/../sysdeps/posix/gai_strerror.c:37
-+msgid "No address associated with hostname"
-+msgstr "ûÓÐÓëÖ÷»úÃû¹ØÁªµÄµØÖ·"
-
--#. TRANS The socket type does not support the requested communications protocol.
--#: stdio-common/../sysdeps/gnu/errlist.c:323
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
--msgid "Protocol wrong type for socket"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:38
-+msgid "Name or service not known"
-+msgstr "δ֪µÄÃû³Æ»ò·þÎñ"
-
--#: nis/nis_error.c:65
--msgid "Query illegal for named table"
-+#: posix/../sysdeps/posix/gai_strerror.c:39
-+msgid "Servname not supported for ai_socktype"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/siglist.c:29 sysdeps/generic/siglist.h:31
--msgid "Quit"
--msgstr "Í˳ö"
-+#: posix/../sysdeps/posix/gai_strerror.c:40
-+msgid "ai_socktype not supported"
-+msgstr "²»Ö§³Ö ai_socktype"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:773
--msgid "RFS specific error"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:41
-+msgid "System error"
-+msgstr "ϵͳ´íÎó"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:540
--msgid "RPC bad procedure for program"
-+#: posix/../sysdeps/posix/gai_strerror.c:42
-+msgid "Processing request in progress"
- msgstr ""
-
--#: nis/ypclnt.c:792
--msgid "RPC failure on NIS operation"
--msgstr ""
-+#: posix/../sysdeps/posix/gai_strerror.c:43
-+msgid "Request canceled"
-+msgstr "ÇëÇóÒÑÈ¡Ïû"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:530
--msgid "RPC program not available"
--msgstr "RPC ³ÌÐò²»¿ÉÓÃ"
-+#: posix/../sysdeps/posix/gai_strerror.c:44
-+msgid "Request not canceled"
-+msgstr "ÇëÇóδȡÏû"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:535
--msgid "RPC program version wrong"
--msgstr "RPC ³ÌÐò°æ±¾´íÎó"
-+#: posix/../sysdeps/posix/gai_strerror.c:45
-+msgid "All requests done"
-+msgstr "Íê³ÉËùÓÐÇëÇó"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:520
--msgid "RPC struct is bad"
--msgstr "RPC ½á¹¹´íÎó"
-+#: posix/../sysdeps/posix/gai_strerror.c:46
-+msgid "Interrupted by a signal"
-+msgstr "±»ÐźÅÖжÏ"
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:525
--msgid "RPC version wrong"
--msgstr "RPC °æ±¾´íÎó"
-+#: posix/getconf.c:889
-+#, c-format
-+msgid "Usage: %s [-v specification] variable_name [pathname]\n"
-+msgstr "Ó÷¨£º%s [-v ¹æ·¶] ±äÁ¿Ãû [·¾¶Ãû]\n"
-
--#: sunrpc/clnt_perr.c:284
--msgid "RPC: (unknown error code)"
--msgstr "RPC£º(δ֪µÄ´íÎóÂë)"
-+#: posix/getconf.c:947
-+#, c-format
-+msgid "unknown specification \"%s\""
-+msgstr "δ֪µÄ¹æ·¶¡°%s¡±"
-
--#: sunrpc/clnt_perr.c:203
--msgid "RPC: Authentication error"
--msgstr "RPC£ºÈÏÖ¤´íÎó"
-+#: posix/getconf.c:974 posix/getconf.c:990
-+msgid "undefined"
-+msgstr "䶨Òå"
-
--#: sunrpc/clnt_perr.c:183
--msgid "RPC: Can't decode result"
--msgstr "RPC£ºÎÞ·¨¶Ô½á¹û½øÐнâÂë"
-+#: posix/getconf.c:1012
-+#, c-format
-+msgid "Unrecognized variable `%s'"
-+msgstr "²»¿Éʶ±ðµÄ±äÁ¿¡°%s¡±"
-
--#: sunrpc/clnt_perr.c:179
--msgid "RPC: Can't encode arguments"
--msgstr "RPC£ºÎÞ·¨¶Ô²ÎÊý½øÐбàÂë"
-+#: posix/getopt.c:692 posix/getopt.c:704
-+#, c-format
-+msgid "%s: option `%s' is ambiguous\n"
-+msgstr "%s£ºÑ¡Ïî¡°%s¡±¾ßÓжþÒåÐÔ\n"
-
--#: sunrpc/clnt_perr.c:243
--msgid "RPC: Failed (unspecified error)"
--msgstr "RPC£ºÊ§°Ü (δָÃ÷µÄ´íÎó)"
-+#: posix/getopt.c:737 posix/getopt.c:741
-+#, c-format
-+msgid "%s: option `--%s' doesn't allow an argument\n"
-+msgstr "%s£ºÑ¡Ïî¡°--%s¡±²»½ÓÊÜÈκβÎÊý\n"
-
--#: sunrpc/clnt_perr.c:199
--msgid "RPC: Incompatible versions of RPC"
--msgstr "RPC£ºRPC °æ±¾²»¼æÈÝ"
-+#: posix/getopt.c:750 posix/getopt.c:755
-+#, c-format
-+msgid "%s: option `%c%s' doesn't allow an argument\n"
-+msgstr "%s£ºÑ¡Ïî¡°%c%s¡±²»½ÓÊܲÎÊý\n"
-
--#: sunrpc/clnt_perr.c:235
--msgid "RPC: Port mapper failure"
--msgstr ""
-+#: posix/getopt.c:791 posix/getopt.c:804 posix/getopt.c:1093
-+#: posix/getopt.c:1106
-+#, c-format
-+msgid "%s: option `%s' requires an argument\n"
-+msgstr "%s£ºÑ¡Ïî¡°%s¡±ÐèÒªÒ»¸ö²ÎÊý\n"
-
--#: sunrpc/clnt_perr.c:215
--msgid "RPC: Procedure unavailable"
--msgstr ""
-+#: posix/getopt.c:842 posix/getopt.c:845
-+#, c-format
-+msgid "%s: unrecognized option `--%s'\n"
-+msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°--%s¡±\n"
-
--#: sunrpc/clnt_perr.c:239
--msgid "RPC: Program not registered"
--msgstr "RPC£º³ÌÐòδע²á"
-+#: posix/getopt.c:853 posix/getopt.c:856
-+#, c-format
-+msgid "%s: unrecognized option `%c%s'\n"
-+msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°%c%s¡±\n"
-
--#: sunrpc/clnt_perr.c:207
--msgid "RPC: Program unavailable"
--msgstr "RPC£º³ÌÐò²»¿ÉÓÃ"
-+#: posix/getopt.c:903 posix/getopt.c:906
-+#, c-format
-+msgid "%s: illegal option -- %c\n"
-+msgstr "%s£ºÎÞЧѡÏî -- %c\n"
-
--#: sunrpc/clnt_perr.c:211
--msgid "RPC: Program/version mismatch"
--msgstr "RPC£º³ÌÐò/°æ±¾²»Æ¥Åä"
-+#: posix/getopt.c:912 posix/getopt.c:915
-+#, c-format
-+msgid "%s: invalid option -- %c\n"
-+msgstr "%s£ºÎÞЧѡÏî -- %c\n"
-
--#: sunrpc/clnt_perr.c:223
--msgid "RPC: Remote system error"
--msgstr "RPC£ºÔ¶³Ìϵͳ´íÎó"
-+#: posix/getopt.c:962 posix/getopt.c:973 posix/getopt.c:1159
-+#: posix/getopt.c:1172
-+#, c-format
-+msgid "%s: option requires an argument -- %c\n"
-+msgstr "%s£ºÑ¡ÏîÐèÒªÒ»¸ö²ÎÊý -- %c\n"
-
--#: sunrpc/clnt_perr.c:219
--msgid "RPC: Server can't decode arguments"
--msgstr "RPC£º·þÎñÆ÷ÎÞ·¨¶Ô²ÎÊý½øÐнâÂë"
-+#: posix/getopt.c:1025 posix/getopt.c:1036
-+#, c-format
-+msgid "%s: option `-W %s' is ambiguous\n"
-+msgstr "%s£ºÑ¡Ïî¡°-W %s¡±¾ßÓжþÒåÐÔ\n"
-
--#: sunrpc/clnt_perr.c:176
--msgid "RPC: Success"
--msgstr "RPC£º³É¹¦"
-+#: posix/getopt.c:1060 posix/getopt.c:1072
-+#, c-format
-+msgid "%s: option `-W %s' doesn't allow an argument\n"
-+msgstr "%s£ºÑ¡Ïî¡°-W %s¡±²»½ÓÊܲÎÊý\n"
-
--#: sunrpc/clnt_perr.c:195
--msgid "RPC: Timed out"
--msgstr "RPC£º³¬Ê±"
-+#: posix/regcomp.c:136
-+msgid "No match"
-+msgstr "ûÓÐÆ¥Åä"
-
--#: sunrpc/clnt_perr.c:191
--msgid "RPC: Unable to receive"
--msgstr "RPC£ºÎÞ·¨½ÓÊÕ"
-+#: posix/regcomp.c:139
-+msgid "Invalid regular expression"
-+msgstr "ÎÞЧµÄ³£¹æ±í´ïʽ"
-
--#: sunrpc/clnt_perr.c:187
--msgid "RPC: Unable to send"
--msgstr "RPC£ºÎÞ·¨·¢ËÍ"
-+#: posix/regcomp.c:142
-+msgid "Invalid collation character"
-+msgstr ""
-
--#: sunrpc/clnt_perr.c:227
--msgid "RPC: Unknown host"
--msgstr "RPC£ºÎ´ÖªÖ÷»ú"
-+#: posix/regcomp.c:145
-+msgid "Invalid character class name"
-+msgstr "ÎÞЧµÄ×Ö·ûÀàÃû"
-
--#: sunrpc/clnt_perr.c:231
--msgid "RPC: Unknown protocol"
--msgstr "RPC£ºÎ´ÖªÐ­Òé"
-+#: posix/regcomp.c:148
-+msgid "Trailing backslash"
-+msgstr ""
-
--#: nis/nis_print.c:188
--#, c-format
--msgid "RSA (%d bits)\n"
--msgstr "RSA (%d λ)\n"
-+#: posix/regcomp.c:151
-+msgid "Invalid back reference"
-+msgstr "ÎÞЧµÄÏòºóÒýÓÃ"
-+
-+#: posix/regcomp.c:154
-+msgid "Unmatched [ or [^"
-+msgstr " ²»Æ¥ÅäµÄ [ »ò [^"
-+
-+#: posix/regcomp.c:157
-+msgid "Unmatched ( or \\("
-+msgstr "²»Æ¥ÅäµÄ ( »ò \\("
-
--#: elf/dl-sym.c:72 elf/dl-sym.c:134
--msgid "RTLD_NEXT used in code not dynamically loaded"
--msgstr ""
-+#: posix/regcomp.c:160
-+msgid "Unmatched \\{"
-+msgstr "²»Æ¥ÅäµÄ \\{"
-
--#: elf/sprof.c:84
--msgid "Read and display shared object profiling data"
-+#: posix/regcomp.c:163
-+msgid "Invalid content of \\{\\}"
-+msgstr "ÎÞЧµÄ \\{\\} µÄÄÚÈÝ"
-+
-+#: posix/regcomp.c:166
-+msgid "Invalid range end"
- msgstr ""
-
--#: nscd/nscd.c:84
--msgid "Read configuration data from NAME"
--msgstr "´Ó NAME ÖжÁÈ¡ÅäÖÃÊý¾Ý"
-+#: posix/regcomp.c:169
-+msgid "Memory exhausted"
-+msgstr "ÄÚ´æºÄ¾¡"
-
--#. TRANS An attempt was made to modify something on a read-only file system.
--#: stdio-common/../sysdeps/gnu/errlist.c:219
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
--msgid "Read-only file system"
--msgstr "Ö»¶ÁÎļþϵͳ"
-+#: posix/regcomp.c:172
-+msgid "Invalid preceding regular expression"
-+msgstr "ÎÞЧµÄÇ°µ¼³£¹æ±í´ïʽ"
-
--#: string/strsignal.c:67
--#, c-format
--msgid "Real-time signal %d"
--msgstr "ʵʱÐźŠ%d"
-+#: posix/regcomp.c:175
-+msgid "Premature end of regular expression"
-+msgstr "³£¹æ±í´ïʽ·ÇÕý³£½áÊø"
-
--#: posix/regex.c:1411
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "³£¹æ±í´ïʽ¹ý´ó"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:829
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
--msgid "Remote I/O error"
--msgstr "Ô¶³Ì I/O ´íÎó"
--
--#: stdio-common/../sysdeps/gnu/errlist.c:785
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
--msgid "Remote address changed"
--msgstr "Ô¶³ÌµØÖ·ÒѸıä"
-+#: posix/regcomp.c:181
-+msgid "Unmatched ) or \\)"
-+msgstr "²»Æ¥ÅäµÄ ) »ò \\)"
-
--#: inet/ruserpass.c:185
--msgid "Remove password or make file unreadable by others."
--msgstr "ɾ³ý²»ÄÜÓÉÆäËüÈ˶ÁÈëµÄ¿ÚÁî»ò make Îļþ"
-+#: posix/regcomp.c:615
-+msgid "No previous regular expression"
-+msgstr "ûÓÐÇ°Ò»¸ö³£¹æ±í´ïʽ"
-
--#: elf/cache.c:431
-+#: argp/argp-help.c:213
- #, c-format
--msgid "Renaming of %s to %s failed"
--msgstr "½« %s ¸ÄÃûΪ %s ʧ°Ü"
-+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-+msgstr "%.*s£º²ÎÊý ARGP_HELP_FMT ÐèÒªÒ»¸öÖµ"
-
--#: elf/sprof.c:532
-+#: argp/argp-help.c:222
- #, c-format
--msgid "Reopening shared object `%s' failed"
--msgstr "ÖØÏÖ´ò¿ª¹²Ïí¶ÔÏó¡°%s¡±Ê§°Ü"
--
--#: nis/nis_print.c:174
--msgid "Replicate :\n"
--msgstr ""
-+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-+msgstr "%.*s£ºÎ´ÖªµÄ ARGP_HELP_FMT ²ÎÊý"
-
--#: argp/argp-help.c:1639
-+#: argp/argp-help.c:234
- #, c-format
--msgid "Report bugs to %s.\n"
--msgstr "½«´íÎ󱨸æ¸ø %s¡£\n"
--
--#: catgets/gencat.c:233 debug/pcprofiledump.c:181 iconv/iconv_prog.c:379
--#: iconv/iconvconfig.c:321 locale/programs/locale.c:268
--#: locale/programs/localedef.c:297 malloc/memusagestat.c:602
--msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
--msgstr "Óá°glibcbug¡±½Å±¾½«´íÎ󱨸æ¸ø <bugs@gnu.org>¡£\n"
-+msgid "Garbage in ARGP_HELP_FMT: %s"
-+msgstr ""
-
--#: nis/ypclnt.c:790
--msgid "Request arguments bad"
--msgstr "ÇëÇó²ÎÊý´íÎó"
-+#: argp/argp-help.c:1189
-+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
-+msgstr ""
-
--#: posix/../sysdeps/posix/gai_strerror.c:43
--msgid "Request canceled"
--msgstr "ÇëÇóÒÑÈ¡Ïû"
-+#: argp/argp-help.c:1572
-+msgid "Usage:"
-+msgstr "Ó÷¨£º"
-
--#: posix/../sysdeps/posix/gai_strerror.c:44
--msgid "Request not canceled"
--msgstr "ÇëÇóδȡÏû"
-+#: argp/argp-help.c:1576
-+msgid " or: "
-+msgstr " »ò£º"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
--msgid "Reserved for future use"
--msgstr ""
-+#: argp/argp-help.c:1588
-+msgid " [OPTION...]"
-+msgstr " [Ñ¡Ïî...]"
-
--#: resolv/herror.c:67
--msgid "Resolver Error 0 (no error)"
--msgstr "½âÎöÆ÷´íÎó 0 (ÎÞ´íÎó)"
-+#: argp/argp-help.c:1615
-+#, c-format
-+msgid "Try `%s --help' or `%s --usage' for more information.\n"
-+msgstr "ÊÔÓá°%s --help¡±»ò¡°%s --usage¡±ÒÔ»ñÈ¡¸ü¶àÐÅÏ¢¡£\n"
-
--#: resolv/herror.c:107
--msgid "Resolver internal error"
--msgstr "½âÎöÆ÷ÄÚ²¿´íÎó"
-+#: argp/argp-help.c:1643
-+#, c-format
-+msgid "Report bugs to %s.\n"
-+msgstr "½«´íÎ󱨸æ¸ø %s¡£\n"
-
--#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
--#. TRANS deadlock situation. The system does not guarantee that it will notice
--#. TRANS all such situations. This error means you got lucky and the system
--#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
--#: stdio-common/../sysdeps/gnu/errlist.c:98
--msgid "Resource deadlock avoided"
--msgstr "ÒѱÜÃâ×ÊÔ´ËÀËø"
-+#: argp/argp-parse.c:100
-+msgid "Give this help list"
-+msgstr "¸ø³ö¸ÃϵͳÇóÖúÁбí"
-
--#: stdio-common/../sysdeps/unix/siglist.c:55 sysdeps/generic/siglist.h:74
--msgid "Resource lost"
--msgstr "×ÊÔ´¶ªÊ§"
-+#: argp/argp-parse.c:101
-+msgid "Give a short usage message"
-+msgstr "¸ø³ö¼òÒªµÄÓ÷¨ÐÅÏ¢"
-
--#. TRANS Resource temporarily unavailable; the call might work if you try again
--#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
--#. TRANS they are always the same in the GNU C library.
--#. TRANS
--#. TRANS This error can happen in a few different situations:
--#. TRANS
--#. TRANS @itemize @bullet
--#. TRANS @item
--#. TRANS An operation that would block was attempted on an object that has
--#. TRANS non-blocking mode selected. Trying the same operation again will block
--#. TRANS until some external condition makes it possible to read, write, or
--#. TRANS connect (whatever the operation). You can use @code{select} to find out
--#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
--#. TRANS
--#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
--#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
--#. TRANS different from @code{EAGAIN}. To make your program portable, you should
--#. TRANS check for both codes and treat them the same.
--#. TRANS
--#. TRANS @item
--#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
--#. TRANS can return this error. It indicates that the shortage is expected to
--#. TRANS pass, so your program can try the call again later and it may succeed.
--#. TRANS It is probably a good idea to delay for a few seconds before trying it
--#. TRANS again, to allow time for other processes to release scarce resources.
--#. TRANS Such shortages are usually fairly serious and affect the whole system,
--#. TRANS so usually an interactive program should report the error to the user
--#. TRANS and return to its command loop.
--#. TRANS @end itemize
--#: stdio-common/../sysdeps/gnu/errlist.c:280
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
--msgid "Resource temporarily unavailable"
--msgstr "×ÊÔ´ÔÝʱ²»¿ÉÓÃ"
-+#: argp/argp-parse.c:102
-+msgid "Set the program name"
-+msgstr "É趨³ÌÐòÃû"
-
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
--msgid "Result too large"
--msgstr "½á¹ûÌ«´ó"
-+#: argp/argp-parse.c:104
-+msgid "Hang for SECS seconds (default 3600)"
-+msgstr "¹ÒÆð SECS Ãë (ĬÈÏ 3600)"
-
--#: nis/nis_error.c:48
--msgid "Results sent to callback proc"
--msgstr ""
-+#: argp/argp-parse.c:161
-+msgid "Print program version"
-+msgstr "´òÓ¡³ÌÐò°æ±¾ºÅ"
-
--#: elf/sprof.c:87
--msgid "SHOBJ [PROFDATA]"
--msgstr ""
-+#: argp/argp-parse.c:177
-+msgid "(PROGRAM ERROR) No version known!?"
-+msgstr "(³ÌÐò´íÎó) ²»ÖªµÀ°æ±¾ºÅ£¡£¿"
-
--#: nis/nis_print.c:269
-+#: argp/argp-parse.c:653
- #, c-format
--msgid "Search Path : %s\n"
--msgstr "ËÑË÷·¾¶ £º%s\n"
--
--#: stdio-common/../sysdeps/unix/siglist.c:37 sysdeps/generic/siglist.h:38
--msgid "Segmentation fault"
--msgstr "¶Î´íÎó"
-+msgid "%s: Too many arguments\n"
-+msgstr "%s£º¹ý¶àµÄÑ¡Ïî\n"
-
--#: nis/nis_error.c:36
--msgid "Server busy, try again"
--msgstr "·þÎñÆ÷棬ÖØÊÔ"
-+#: argp/argp-parse.c:794
-+msgid "(PROGRAM ERROR) Option should have been recognized!?"
-+msgstr "(³ÌÐò´íÎó) Ñ¡ÏîÓ¦¸Ã¿Éʶ±ð£¡£¿"
-
--#: nis/nis_error.c:42
--msgid "Server out of memory"
--msgstr "·þÎñÆ÷ÄÚ´æ²»×ã"
-+#: resolv/herror.c:67
-+msgid "Resolver Error 0 (no error)"
-+msgstr "½âÎöÆ÷´íÎó 0 (ÎÞ´íÎó)"
-
--#: sunrpc/clnt_perr.c:361
--msgid "Server rejected credential"
--msgstr ""
-+#: resolv/herror.c:68
-+msgid "Unknown host"
-+msgstr "δ֪µÄÖ÷»ú"
-
--#: sunrpc/clnt_perr.c:369
--msgid "Server rejected verifier"
--msgstr ""
-+#: resolv/herror.c:69
-+msgid "Host name lookup failure"
-+msgstr "Ö÷»úÃûËÑË÷ʧ°Ü"
-
--#: posix/../sysdeps/posix/gai_strerror.c:39
--msgid "Servname not supported for ai_socktype"
--msgstr ""
-+#: resolv/herror.c:70
-+msgid "Unknown server error"
-+msgstr "δ֪µÄ·þÎñÆ÷´íÎó"
-
--#: argp/argp-parse.c:95
--msgid "Set the program name"
--msgstr "É趨³ÌÐòÃû"
-+#: resolv/herror.c:71
-+msgid "No address associated with name"
-+msgstr "ûÓÐÓëÃû×Ö¹ØÁªµÄµØÖ·"
-
--#: nscd/nscd.c:88
--msgid "Shut the server down"
--msgstr "¹Ø±Õ·þÎñÆ÷"
-+#: resolv/herror.c:107
-+msgid "Resolver internal error"
-+msgstr "½âÎöÆ÷ÄÚ²¿´íÎó"
-
--#: stdio-common/../sysdeps/unix/siglist.c:26
--msgid "Signal 0"
--msgstr "ÐźŠ0"
-+#: resolv/herror.c:110
-+msgid "Unknown resolver error"
-+msgstr "δ֪µÄ½âÎöÆ÷´íÎó"
-
--#. TRANS A file that isn't a socket was specified when a socket is required.
--#: stdio-common/../sysdeps/gnu/errlist.c:312
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
--msgid "Socket operation on non-socket"
--msgstr "¶Ô·ÇÌ×½Ó×Ö½øÐÐÌ×½Ó×Ö²Ù×÷"
-+#: resolv/res_hconf.c:147
-+#, c-format
-+msgid "%s: line %d: expected service, found `%s'\n"
-+msgstr "%s£ºÐÐ %d£ºÓ¦Îª service£¬µÃµ½¡°%s¡±\n"
-
--#. TRANS The socket type is not supported.
--#: stdio-common/../sysdeps/gnu/errlist.c:341
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
--msgid "Socket type not supported"
--msgstr "²»Ö§³ÖµÄÌ×½Ó×ÖÀàÐÍ"
-+#: resolv/res_hconf.c:165
-+#, c-format
-+msgid "%s: line %d: cannot specify more than %d services"
-+msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö·þÎñ"
-
--#. TRANS A network connection was aborted locally.
--#: stdio-common/../sysdeps/gnu/errlist.c:395
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
--msgid "Software caused connection abort"
--msgstr "ÓÉÈí¼þµ¼ÖµÄÁ¬½Ó¶Ï¿ª"
-+#: resolv/res_hconf.c:191
-+#, c-format
-+msgid "%s: line %d: list delimiter not followed by keyword"
-+msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔڹؼü×ÖÖ®ºó"
-
--#: sunrpc/rpcinfo.c:658
--msgid "Sorry. You are not root\n"
--msgstr "±§Ç¸¡£Äú²»ÊǸùÓû§\n"
-+#: resolv/res_hconf.c:231
-+#, c-format
-+msgid "%s: line %d: cannot specify more than %d trim domains"
-+msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö¹æÕûÓò"
-
--#: locale/programs/localedef.c:95
--msgid "Source definitions are found in FILE"
--msgstr "ÔÚ FILE ÖÐÕÒµ½Ô´¶¨Òå"
-+#: resolv/res_hconf.c:256
-+#, c-format
-+msgid "%s: line %d: list delimiter not followed by domain"
-+msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔÚÓòÖ®ºó"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:765
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
--msgid "Srmount error"
--msgstr ""
-+#: resolv/res_hconf.c:319
-+#, c-format
-+msgid "%s: line %d: expected `on' or `off', found `%s'\n"
-+msgstr "%s£ºÐÐ %d£ºÓ¦Îª¡°on¡±»ò¡°off¡±£¬µÃµ½¡°%s¡±\n"
-
--#: sysdeps/generic/siglist.h:66
--msgid "Stack fault"
--msgstr ""
-+#: resolv/res_hconf.c:366
-+#, c-format
-+msgid "%s: line %d: bad command `%s'\n"
-+msgstr "%s£ºÐÐ %d£º´íÎóÃüÁî¡°%s¡±\n"
-
--#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
--#. TRANS system which is due to file system rearrangements on the server host.
--#. TRANS Repairing this condition usually requires unmounting and remounting
--#. TRANS the NFS file system on the local host.
--#: stdio-common/../sysdeps/gnu/errlist.c:507
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
--msgid "Stale NFS file handle"
-+#: resolv/res_hconf.c:395
-+#, c-format
-+msgid "%s: line %d: ignoring trailing garbage `%s'\n"
- msgstr ""
-
--#: nscd/nscd.c:87
--msgid "Start NUMBER threads"
--msgstr "Æô¶¯ NUMBER ¸öÏß³Ì"
-+#: nss/getent.c:51
-+msgid "database [key ...]"
-+msgstr "Êý¾Ý¿â [¼ü ...]"
-
--#: nis/nis_print.c:365
-+#: nss/getent.c:56
-+msgid "Service configuration to be used"
-+msgstr "ҪʹÓõķþÎñÅäÖÃ"
-+
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
--msgid "Status : %s\n"
--msgstr "״̬ £º%s\n"
-+msgid "Enumeration not supported on %s\n"
-+msgstr "%s ²»Ö§³Öö¾Ù\n"
-
--#: stdio-common/../sysdeps/unix/siglist.c:44 sysdeps/generic/siglist.h:44
--msgid "Stopped"
--msgstr "Í£Ö¹"
-+#: nss/getent.c:732
-+msgid "getent - get entries from administrative database."
-+msgstr "getent - ÖعÜÀíÊý¾Ý¿â»ñÈ¡ÌõÄ¿¡£"
-
--#: stdio-common/../sysdeps/unix/siglist.c:43 sysdeps/generic/siglist.h:43
--msgid "Stopped (signal)"
--msgstr "Í£Ö¹ (ÐźÅ)"
-+#: nss/getent.c:733
-+msgid "Supported databases:"
-+msgstr "Ö§³ÖµÄÊý¾Ý¿â£º"
-
--#: stdio-common/../sysdeps/unix/siglist.c:47 sysdeps/generic/siglist.h:47
--msgid "Stopped (tty input)"
--msgstr "Í£Ö¹ (tty ÊäÈë)"
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
-+msgid "wrong number of arguments"
-+msgstr "²ÎÊý¸öÊý´íÎó"
-
--#: stdio-common/../sysdeps/unix/siglist.c:48 sysdeps/generic/siglist.h:48
--msgid "Stopped (tty output)"
--msgstr "Í£Ö¹ (tty Êä³ö)"
-+#: nss/getent.c:800
-+#, c-format
-+msgid "Unknown database: %s\n"
-+msgstr "δ֪µÄÊý¾Ý¿â£º%s\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:809
--msgid "Streams pipe error"
--msgstr "Á÷¹ÜµÀ´íÎó"
-+#: debug/pcprofiledump.c:52
-+msgid "Don't buffer output"
-+msgstr "²»Òª¶ÔÊä³ö½øÐлº³å"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:813
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
--msgid "Structure needs cleaning"
--msgstr "½á¹¹ÐèÒªÇåÀí"
-+#: debug/pcprofiledump.c:57
-+msgid "Dump information generated by PC profiling."
-+msgstr ""
-
--#: nis/nis_error.c:29 nis/ypclnt.c:788 nis/ypclnt.c:862 posix/regex.c:1366
--#: stdio-common/../sysdeps/gnu/errlist.c:20
--msgid "Success"
--msgstr "³É¹¦"
-+#: debug/pcprofiledump.c:60
-+msgid "[FILE]"
-+msgstr "[Îļþ]"
-
--#: nss/getent.c:703
--msgid "Supported databases:"
--msgstr "Ö§³ÖµÄÊý¾Ý¿â£º"
-+#: debug/pcprofiledump.c:100
-+msgid "cannot open input file"
-+msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ"
-
--#: locale/programs/localedef.c:106
--msgid "Suppress warnings and information messages"
--msgstr ""
-+#: debug/pcprofiledump.c:106
-+msgid "cannot read header"
-+msgstr "ÎÞ·¨¶ÁÈëÍ·"
-
--#: locale/programs/localedef.c:94
--msgid "Symbolic character names defined in FILE"
--msgstr ""
-+#: debug/pcprofiledump.c:170
-+msgid "invalid pointer size"
-+msgstr "ÎÞЧµÄÖ¸Õë´óС"
-
--#: posix/../sysdeps/posix/gai_strerror.c:41
--msgid "System error"
--msgstr "ϵͳ´íÎó"
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd£ºÎÞ·¨·ÖÅäÄÚ´æ\n"
-
--#: locale/programs/locale.c:73
--msgid "System information:"
--msgstr "ϵͳÐÅÏ¢£º"
-+#: inet/rcmd.c:185 inet/rcmd.c:188
-+msgid "rcmd: socket: All ports in use\n"
-+msgstr "rcmd£ºsocket£ºËùÓж˿ڶ¼ÒÑÔÚʹÓÃÁË\n"
-
--#: nis/ypclnt.c:868
--msgid "System resource allocation failure"
--msgstr "ϵͳ×ÊÔ´·ÖÅäʧ°Ü"
-+#: inet/rcmd.c:222
-+#, c-format
-+msgid "connect to address %s: "
-+msgstr "Á¬½Óµ½µØÖ· %s£º"
-
--#: locale/programs/localedef.c:292
-+#: inet/rcmd.c:240
- #, c-format
--msgid ""
--"System's directory for character maps : %s\n"
--" repertoire maps: %s\n"
--" locale path : %s\n"
--"%s"
-+msgid "Trying %s...\n"
-+msgstr "ÕýÔÚ³¢ÊÔ %s...\n"
-+
-+#: inet/rcmd.c:289
-+#, c-format
-+msgid "rcmd: write (setting up stderr): %m\n"
- msgstr ""
-
--#: nscd/nscd.c:90
--msgid "TABLE"
-+#: inet/rcmd.c:310
-+#, c-format
-+msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr ""
-
--#: nis/nis_print.c:121
--msgid "TABLE\n"
-+#: inet/rcmd.c:313
-+msgid "poll: protocol failure in circuit setup\n"
- msgstr ""
-
--#: nscd/nscd.c:92
--msgid "TABLE,yes"
-+#: inet/rcmd.c:358
-+msgid "socket: protocol failure in circuit setup\n"
- msgstr ""
-
--#: nis/nis_print.c:266
-+#: inet/rcmd.c:387
- #, c-format
--msgid "Table Type : %s\n"
--msgstr "±í¸ñÀàÐÍ £º%s\n"
-+msgid "rcmd: %s: short read"
-+msgstr ""
-
--#: posix/../sysdeps/posix/gai_strerror.c:32
--msgid "Temporary failure in name resolution"
--msgstr "ÓòÃû½âÎöÔÝʱʧ°Ü"
-+#: inet/rcmd.c:549
-+msgid "lstat failed"
-+msgstr "lstat ²Ù×÷ʧ°Ü"
-
--#: stdio-common/../sysdeps/unix/siglist.c:41 sysdeps/generic/siglist.h:41
--msgid "Terminated"
--msgstr "ÒÑÖÕÖ¹"
-+#: inet/rcmd.c:551
-+msgid "not regular file"
-+msgstr "²»ÊÇÆÕͨÎļþ"
-
--#. TRANS An attempt to execute a file that is currently open for writing, or
--#. TRANS write to a file that is currently being executed. Often using a
--#. TRANS debugger to run a program is considered having it open for writing and
--#. TRANS will cause this error. (The name stands for ``text file busy''.) This
--#. TRANS is not an error in the GNU system; the text is copied as necessary.
--#: stdio-common/../sysdeps/gnu/errlist.c:198
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
--msgid "Text file busy"
--msgstr "Îı¾Îļþæ"
-+#: inet/rcmd.c:556
-+msgid "cannot open"
-+msgstr "ÎÞ·¨´ò¿ª"
-
--#: iconv/iconv_prog.c:680
--msgid ""
--"The following list contain all the coded character sets known. This does\n"
--"not necessarily mean that all combinations of these names can be used for\n"
--"the FROM and TO command line parameters. One coded character set can be\n"
--"listed with several different names (aliases).\n"
--"\n"
--" "
--msgstr ""
-+#: inet/rcmd.c:558
-+msgid "fstat failed"
-+msgstr "fstat ʧ°Ü"
-
--#: sunrpc/rpc_main.c:1365
--msgid "This implementation doesn't support newstyle or MT-safe code!\n"
--msgstr ""
-+#: inet/rcmd.c:560
-+msgid "bad owner"
-+msgstr "´íÎóµÄÓµÓÐÕß"
-
--#: nis/nis_print.c:227
--msgid "Time to live : "
--msgstr "´æÔÚµÄʱ¼ä £º"
-+#: inet/rcmd.c:562
-+msgid "writeable by other than owner"
-+msgstr "¿ÉÓɳýËùÓÐÕßÖ®ÍâµÄÈËдÈë"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:681
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
--msgid "Timer expired"
--msgstr "¼ÆʱÆ÷³¬Ê±"
-+#: inet/rcmd.c:564
-+msgid "hard linked somewhere"
-+msgstr "ij´¦µÄÓ²Á¬½Ó"
-
--#: malloc/memusagestat.c:54
--msgid "Title string used in output graphic"
--msgstr "ÓÃÓÚÊä³öͼÐεıêÌâ×Ö·û´®"
-+#: inet/ruserpass.c:170 inet/ruserpass.c:193
-+msgid "out of memory"
-+msgstr "ÄÚ´æ²»×ã"
-
--#: nis/nis_error.c:56
--msgid "Too many attributes"
--msgstr "ÊôÐÔ¹ý¶à"
-+#: inet/ruserpass.c:184
-+msgid "Error: .netrc file is readable by others."
-+msgstr "´íÎó£º.netrc ¶ÔÆäËüÈËÊǿɶÁµÄ¡£"
-
--#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
--#. TRANS This often indicates a cycle of symbolic links.
--#: stdio-common/../sysdeps/gnu/errlist.c:458
--msgid "Too many levels of symbolic links"
--msgstr "·ûºÅÁ¬½ÓµÄ²ãÊý¹ý¶à"
-+#: inet/ruserpass.c:185
-+msgid "Remove password or make file unreadable by others."
-+msgstr "ɾ³ý²»ÄÜÓÉÆäËüÈ˶ÁÈëµÄ¿ÚÁî»ò make Îļþ"
-
--#. TRANS Too many links; the link count of a single file would become too large.
--#. TRANS @code{rename} can cause this error if the file being renamed already has
--#. TRANS as many links as it can take (@pxref{Renaming Files}).
--#: stdio-common/../sysdeps/gnu/errlist.c:226
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
--msgid "Too many links"
--msgstr "¹ý¶àµÄÁ¬½Ó"
-+#: inet/ruserpass.c:277
-+#, c-format
-+msgid "Unknown .netrc keyword %s"
-+msgstr "δ֪µÄ .netrc ¹Ø¼ü×Ö %s"
-
--#. TRANS The current process has too many files open and can't open any more.
--#. TRANS Duplicate descriptors do count toward this limit.
--#. TRANS
--#. TRANS In BSD and GNU, the number of open files is controlled by a resource
--#. TRANS limit that can usually be increased. If you get this error, you might
--#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
--#. TRANS @pxref{Limits on Resources}.
--#: stdio-common/../sysdeps/gnu/errlist.c:176
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
--msgid "Too many open files"
--msgstr "´ò¿ªµÄÎļþ¹ý¶à"
-+#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
-+msgid "authunix_create: out of memory\n"
-+msgstr "authunix_create£ºÄÚ´æ²»×ã\n"
-
--#. TRANS There are too many distinct file openings in the entire system. Note
--#. TRANS that any number of linked channels count as just one file opening; see
--#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
--#: stdio-common/../sysdeps/gnu/errlist.c:183
--msgid "Too many open files in system"
--msgstr "ϵͳÖдò¿ªµÄÎļþ¹ý¶à"
-+#: sunrpc/auth_unix.c:318
-+msgid "auth_none.c - Fatal marshalling problem"
-+msgstr ""
-
--#. TRANS This means that the per-user limit on new process would be exceeded by
--#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
--#. TRANS the @code{RLIMIT_NPROC} limit.
--#: stdio-common/../sysdeps/gnu/errlist.c:488
--msgid "Too many processes"
--msgstr "½ø³Ì¹ý¶à"
-+#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
-+#, c-format
-+msgid "; low version = %lu, high version = %lu"
-+msgstr ""
-
--#. TRANS ???
--#: stdio-common/../sysdeps/gnu/errlist.c:440
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
--msgid "Too many references: cannot splice"
-+#: sunrpc/clnt_perr.c:125
-+msgid "; why = "
- msgstr ""
-
--#. TRANS The file quota system is confused because there are too many users.
--#. TRANS @c This can probably happen in a GNU system when using NFS.
--#: stdio-common/../sysdeps/gnu/errlist.c:494
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
--msgid "Too many users"
--msgstr "Óû§¹ý¶à"
-+#: sunrpc/clnt_perr.c:132
-+#, c-format
-+msgid "(unknown authentication error - %d)"
-+msgstr "(δ֪µÄÈÏÖ¤´íÎó - %d)"
-
--#: stdio-common/../sysdeps/unix/siglist.c:31 sysdeps/generic/siglist.h:33
--msgid "Trace/breakpoint trap"
--msgstr ""
-+#: sunrpc/clnt_perr.c:177
-+msgid "RPC: Success"
-+msgstr "RPC£º³É¹¦"
-
--#: posix/regex.c:1381
--msgid "Trailing backslash"
--msgstr ""
-+#: sunrpc/clnt_perr.c:180
-+msgid "RPC: Can't encode arguments"
-+msgstr "RPC£ºÎÞ·¨¶Ô²ÎÊý½øÐбàÂë"
-
--#. TRANS In the GNU system, opening a file returns this error when the file is
--#. TRANS translated by a program and the translator program dies while starting
--#. TRANS up, before it has connected to the file.
--#: stdio-common/../sysdeps/gnu/errlist.c:615
--msgid "Translator died"
--msgstr ""
-+#: sunrpc/clnt_perr.c:184
-+msgid "RPC: Can't decode result"
-+msgstr "RPC£ºÎÞ·¨¶Ô½á¹û½øÐнâÂë"
-
--#. TRANS You tried to connect a socket that is already connected.
--#. TRANS @xref{Connecting}.
--#: stdio-common/../sysdeps/gnu/errlist.c:415
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
--msgid "Transport endpoint is already connected"
--msgstr "´«Êä¶ËµãÒÑÁ¬½Ó"
-+#: sunrpc/clnt_perr.c:188
-+msgid "RPC: Unable to send"
-+msgstr "RPC£ºÎÞ·¨·¢ËÍ"
-
--#. TRANS The socket is not connected to anything. You get this error when you
--#. TRANS try to transmit data over a socket, without first specifying a
--#. TRANS destination for the data. For a connectionless socket (for datagram
--#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
--#: stdio-common/../sysdeps/gnu/errlist.c:423
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
--msgid "Transport endpoint is not connected"
--msgstr "´«Êä¶ËµãÉÐδÁ¬½Ó"
-+#: sunrpc/clnt_perr.c:192
-+msgid "RPC: Unable to receive"
-+msgstr "RPC£ºÎÞ·¨½ÓÊÕ"
-+
-+#: sunrpc/clnt_perr.c:196
-+msgid "RPC: Timed out"
-+msgstr "RPC£º³¬Ê±"
-+
-+#: sunrpc/clnt_perr.c:200
-+msgid "RPC: Incompatible versions of RPC"
-+msgstr "RPC£ºRPC °æ±¾²»¼æÈÝ"
-+
-+#: sunrpc/clnt_perr.c:204
-+msgid "RPC: Authentication error"
-+msgstr "RPC£ºÈÏÖ¤´íÎó"
-+
-+#: sunrpc/clnt_perr.c:208
-+msgid "RPC: Program unavailable"
-+msgstr "RPC£º³ÌÐò²»¿ÉÓÃ"
-+
-+#: sunrpc/clnt_perr.c:212
-+msgid "RPC: Program/version mismatch"
-+msgstr "RPC£º³ÌÐò/°æ±¾²»Æ¥Åä"
-+
-+#: sunrpc/clnt_perr.c:216
-+msgid "RPC: Procedure unavailable"
-+msgstr ""
-
--#: argp/argp-help.c:1611
--#, c-format
--msgid "Try `%s --help' or `%s --usage' for more information.\n"
--msgstr "ÊÔÓá°%s --help¡±»ò¡°%s --usage¡±ÒÔ»ñÈ¡¸ü¶àÐÅÏ¢¡£\n"
-+#: sunrpc/clnt_perr.c:220
-+msgid "RPC: Server can't decode arguments"
-+msgstr "RPC£º·þÎñÆ÷ÎÞ·¨¶Ô²ÎÊý½øÐнâÂë"
-
--#: inet/rcmd.c:223
--#, c-format
--msgid "Trying %s...\n"
--msgstr "ÕýÔÚ³¢ÊÔ %s...\n"
-+#: sunrpc/clnt_perr.c:224
-+msgid "RPC: Remote system error"
-+msgstr "RPC£ºÔ¶³Ìϵͳ´íÎó"
-
--#: nis/nis_print.c:167
--#, c-format
--msgid "Type : %s\n"
--msgstr "ÀàÐÍ £º %s\n"
-+#: sunrpc/clnt_perr.c:228
-+msgid "RPC: Unknown host"
-+msgstr "RPC£ºÎ´ÖªÖ÷»ú"
-
--#: nis/nis_print.c:51
--msgid "UNKNOWN"
--msgstr "δ֪"
-+#: sunrpc/clnt_perr.c:232
-+msgid "RPC: Unknown protocol"
-+msgstr "RPC£ºÎ´ÖªÐ­Òé"
-
--#: nis/nis_error.c:73
--msgid "Unable to authenticate NIS+ client"
--msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ¿Í»§¶Ë"
-+#: sunrpc/clnt_perr.c:236
-+msgid "RPC: Port mapper failure"
-+msgstr ""
-
--#: nis/nis_error.c:72
--msgid "Unable to authenticate NIS+ server"
--msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ·þÎñÆ÷"
-+#: sunrpc/clnt_perr.c:240
-+msgid "RPC: Program not registered"
-+msgstr "RPC£º³ÌÐòδע²á"
-
--#: nis/nis_error.c:47
--msgid "Unable to create callback"
--msgstr "ÎÞ·¨´´½¨»Øµ÷º¯Êý"
-+#: sunrpc/clnt_perr.c:244
-+msgid "RPC: Failed (unspecified error)"
-+msgstr "RPC£ºÊ§°Ü (δָÃ÷µÄ´íÎó)"
-
--#: nis/nis_error.c:75
--msgid "Unable to create process on server"
--msgstr "ÎÞ·¨ÔÚ·þÎñÆ÷ÉÏ´´½¨½ø³Ì"
-+#: sunrpc/clnt_perr.c:285
-+msgid "RPC: (unknown error code)"
-+msgstr "RPC£º(δ֪µÄ´íÎóÂë)"
-
--#: nis/nis_print.c:194
--#, c-format
--msgid "Unknown (type = %d, bits = %d)\n"
--msgstr "δ֪ (ÀàÐÍ = %d£¬Î» = %d)\n"
-+#: sunrpc/clnt_perr.c:357
-+msgid "Authentication OK"
-+msgstr "ÈÏÖ¤³É¹¦"
-
--#: inet/ruserpass.c:277
--#, c-format
--msgid "Unknown .netrc keyword %s"
--msgstr "δ֪µÄ .netrc ¹Ø¼ü×Ö %s"
-+#: sunrpc/clnt_perr.c:360
-+msgid "Invalid client credential"
-+msgstr "ÎÞЧµÄ¿Í»§Ö¤Êé"
-
--#: elf/../sysdeps/generic/readelflib.c:71
--#, c-format
--msgid "Unknown ELFCLASS in file %s.\n"
--msgstr "Îļþ %s ÖÐδ֪µÄ ELFCLASS¡£\n"
-+#: sunrpc/clnt_perr.c:364
-+msgid "Server rejected credential"
-+msgstr "·þÎñÆ÷¾Ü¾øÖ¤Êé"
-
--#: nis/ypclnt.c:822
--msgid "Unknown NIS error code"
--msgstr "δ֪µÄ NIS ´íÎóÂë"
-+#: sunrpc/clnt_perr.c:368
-+msgid "Invalid client verifier"
-+msgstr "ÎÞЧµÄ¿Í»§Ð£Ñé"
-
--#: elf/cache.c:101
--msgid "Unknown OS"
--msgstr "δ֪µÄ²Ù×÷ϵͳ"
-+#: sunrpc/clnt_perr.c:372
-+msgid "Server rejected verifier"
-+msgstr "·þÎñÆ÷¾Ü¾øУÑé"
-
--#: nss/getent.c:771
--#, c-format
--msgid "Unknown database: %s\n"
--msgstr "δ֪µÄÊý¾Ý¿â£º%s\n"
-+#: sunrpc/clnt_perr.c:376
-+msgid "Client credential too weak"
-+msgstr "¿Í»§Ö¤ÊéÌ«Èõ"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "δ֪µÄ´íÎó"
-+#: sunrpc/clnt_perr.c:380
-+msgid "Invalid server verifier"
-+msgstr "ÎÞЧµÄ·þÎñÆ÷УÑé"
-
--#: string/../sysdeps/generic/_strerror.c:48
--#: string/../sysdeps/mach/_strerror.c:88
--#: sysdeps/mach/hurd/mips/dl-machine.c:83
--msgid "Unknown error "
--msgstr "δ֪µÄ´íÎó "
-+#: sunrpc/clnt_perr.c:384
-+msgid "Failed (unspecified error)"
-+msgstr "ʧ°Ü (δָÃ÷µÄ´íÎó)"
-
--#: resolv/herror.c:68
--msgid "Unknown host"
--msgstr "δ֪µÄÖ÷»ú"
-+#: sunrpc/clnt_raw.c:117
-+msgid "clnt_raw.c - Fatal header serialization error."
-+msgstr "clnt_raw.c - ÖÂÃüµÄÍ·±àÐò´íÎó¡£"
-
--#: nis/nis_error.c:35
--msgid "Unknown object"
--msgstr "δ֪µÄ¶ÔÏó"
-+#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
-+msgid "clnttcp_create: out of memory\n"
-+msgstr "clnttcp_create£ºÄÚ´æ²»×ã\n"
-
--#: nscd/nscd_conf.c:187
--#, c-format
--msgid "Unknown option: %s %s %s"
--msgstr "δ֪µÄÑ¡Ï%s %s %s"
-+#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
-+msgid "clntudp_create: out of memory\n"
-+msgstr "clntudp_create£ºÄÚ´æ²»×ã\n"
-
--#: resolv/herror.c:110
--msgid "Unknown resolver error"
--msgstr "δ֪µÄ½âÎöÆ÷´íÎó"
-+#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
-+msgid "clntunix_create: out of memory\n"
-+msgstr "clntunix_create£ºÄÚ´æ²»×ã\n"
-
--#: resolv/herror.c:70
--msgid "Unknown server error"
--msgstr "δ֪µÄ·þÎñÆ÷´íÎó"
-+#: sunrpc/get_myaddr.c:78
-+msgid "get_myaddress: ioctl (get interface configuration)"
-+msgstr "get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
-
--#: string/strsignal.c:71
--#, c-format
--msgid "Unknown signal %d"
--msgstr "δ֪ÐźŠ%d"
-+#: sunrpc/pm_getmaps.c:74
-+msgid "pmap_getmaps rpc problem"
-+msgstr ""
-
--#: misc/error.c:117 timezone/zic.c:390
--msgid "Unknown system error"
--msgstr "δ֪µÄϵͳ´íÎó"
-+#: sunrpc/pmap_clnt.c:72
-+msgid "__get_myaddress: ioctl (get interface configuration)"
-+msgstr "__get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
-
--#: nis/ypclnt.c:870
--msgid "Unknown ypbind error"
--msgstr "δ֪µÄ ypbind ´íÎó"
-+#: sunrpc/pmap_clnt.c:137
-+msgid "Cannot register service"
-+msgstr "ÎÞ·¨×¢²á·þÎñ"
-
--#: posix/regex.c:1390
--msgid "Unmatched ( or \\("
--msgstr "²»Æ¥ÅäµÄ ( »ò \\("
-+#: sunrpc/pmap_rmt.c:190
-+msgid "broadcast: ioctl (get interface configuration)"
-+msgstr "broadcast£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
-
--#: posix/regex.c:1414
--msgid "Unmatched ) or \\)"
--msgstr "²»Æ¥ÅäµÄ ) »ò \\)"
-+#: sunrpc/pmap_rmt.c:199
-+msgid "broadcast: ioctl (get interface flags)"
-+msgstr "broadcast£ºioctl (»ñÈ¡½çÃæ±êÖ¾)"
-
--#: posix/regex.c:1387
--msgid "Unmatched [ or [^"
--msgstr " ²»Æ¥ÅäµÄ [ »ò [^"
-+#: sunrpc/pmap_rmt.c:269
-+msgid "Cannot create socket for broadcast rpc"
-+msgstr "ÎÞ·¨Îª¹ã²¥ rpc ´´½¨Ì×½Ó×Ö"
-
--#: posix/regex.c:1393
--msgid "Unmatched \\{"
--msgstr "²»Æ¥ÅäµÄ \\{"
-+#: sunrpc/pmap_rmt.c:276
-+msgid "Cannot set socket option SO_BROADCAST"
-+msgstr "ÎÞ·¨ÉèÖÃÌ×½Ó×ÖÑ¡Ïî SO_BROADCAST"
-
--#: posix/getconf.c:1006
--#, c-format
--msgid "Unrecognized variable `%s'"
--msgstr "²»¿Éʶ±ðµÄ±äÁ¿¡°%s¡±"
-+#: sunrpc/pmap_rmt.c:328
-+msgid "Cannot send broadcast packet"
-+msgstr "ÎÞ·¨·¢Ë͹㲥°ü"
-
--#: stdio-common/../sysdeps/unix/siglist.c:42 sysdeps/generic/siglist.h:42
--msgid "Urgent I/O condition"
-+#: sunrpc/pmap_rmt.c:353
-+msgid "Broadcast poll problem"
- msgstr ""
-
--#: argp/argp-help.c:1568
--msgid "Usage:"
--msgstr "Ó÷¨£º"
-+#: sunrpc/pmap_rmt.c:366
-+msgid "Cannot receive reply to broadcast"
-+msgstr "ÎÞ·¨½ÓÊնԹ㲥µÄÓ¦´ð"
-
--#: posix/getconf.c:883
-+#: sunrpc/rpc_main.c:288
- #, c-format
--msgid "Usage: %s [-v specification] variable_name [pathname]\n"
--msgstr ""
-+msgid "%s: output would overwrite %s\n"
-+msgstr "%s£ºÊä³ö½«¸²¸Ç %s\n"
-
--#: sunrpc/rpcinfo.c:674
--msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
--msgstr "Ó÷¨£ºrpcinfo [ -n ¶Ë¿ÚºÅ ] -u Ö÷»úÃû ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
-+#: sunrpc/rpc_main.c:295
-+#, c-format
-+msgid "%s: unable to open %s: %m\n"
-+msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%m\n"
-
--#: elf/ldconfig.c:127
--msgid "Use CACHE as cache file"
--msgstr "½« CACHE ÓÃ×÷»º³åÇøÎļþ"
-+#: sunrpc/rpc_main.c:307
-+#, c-format
-+msgid "%s: while writing output %s: %m"
-+msgstr "%s£ºÐ´ÈëÊä³ö %s ʱ£º%m"
-
--#: elf/ldconfig.c:128
--msgid "Use CONF as configuration file"
--msgstr "½« CONF ÓÃ×÷ÅäÖÃÎļþ"
-+#: sunrpc/rpc_main.c:342
-+#, c-format
-+msgid "cannot find C preprocessor: %s \n"
-+msgstr "ÎÞ·¨ÕÒµ½ C Ô¤´¦ÀíÆ÷£º%s\n"
-
--#: nscd/nscd.c:92
--msgid "Use separate cache for each user"
--msgstr "Ϊÿ¸öÓû§Ê¹Ó÷ÖÀëµÄ»º³åÇø"
-+#: sunrpc/rpc_main.c:350
-+msgid "cannot find any C preprocessor (cpp)\n"
-+msgstr "ÎÞ·¨ÕÒµ½ÈκΠC Ô¤´¦ÀíÆ÷ (cpp)\n"
-
--#: stdio-common/../sysdeps/unix/siglist.c:56 sysdeps/generic/siglist.h:55
--msgid "User defined signal 1"
--msgstr "Óû§¶¨ÒåÐźŠ1"
-+#: sunrpc/rpc_main.c:419
-+#, c-format
-+msgid "%s: C preprocessor failed with signal %d\n"
-+msgstr "%s£ºC Ô¤´¦ÀíÆ÷ÒòÐźŠ%d ¶øʧ°Ü\n"
-
--#: stdio-common/../sysdeps/unix/siglist.c:57 sysdeps/generic/siglist.h:56
--msgid "User defined signal 2"
--msgstr "Óû§¶¨ÒåÐźŠ2"
-+#: sunrpc/rpc_main.c:422
-+#, c-format
-+msgid "%s: C preprocessor failed with exit code %d\n"
-+msgstr "%s£ºC Ô¤´¦ÀíÆ÷ʧ°Ü£¬·µ»Ø %d\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:673
--#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
--msgid "Value too large for defined data type"
--msgstr "¶ÔÒѶ¨ÒåµÄÊý¾ÝÀàÐÍÀ´ËµÖµ¹ý´ó"
-+#: sunrpc/rpc_main.c:462
-+#, c-format
-+msgid "illegal nettype :`%s'\n"
-+msgstr "·Ç·¨ÍøÂçÀàÐÍ£º¡°%s¡±\n"
-
--#: stdio-common/../sysdeps/unix/siglist.c:52 sysdeps/generic/siglist.h:52
--msgid "Virtual timer expired"
--msgstr "ÐéÄâ¼ÆʱÆ÷³¬Ê±"
-+#: sunrpc/rpc_main.c:1104
-+msgid "rpcgen: too many defines\n"
-+msgstr "rpcgen£º¶¨Òå¹ý¶à\n"
-
--#: timezone/zic.c:1932
--msgid "Wild result from command execution"
-+#: sunrpc/rpc_main.c:1116
-+msgid "rpcgen: arglist coding error\n"
- msgstr ""
-
--#: stdio-common/../sysdeps/unix/siglist.c:54 sysdeps/generic/siglist.h:54
--msgid "Window changed"
--msgstr ""
-+#. TRANS: the file will not be removed; this is an
-+#. TRANS: informative message.
-+#: sunrpc/rpc_main.c:1149
-+#, c-format
-+msgid "file `%s' already exists and may be overwritten\n"
-+msgstr "Îļþ¡°%s¡±ÒÑ´æÔÚ²¢¿ÉÄܱ»¸²¸Ç\n"
-
--#: locale/programs/locale.c:77
--msgid "Write names of available charmaps"
--msgstr ""
-+#: sunrpc/rpc_main.c:1194
-+msgid "Cannot specify more than one input file!\n"
-+msgstr "ÎÞ·¨Ö¸¶¨¶à¸öÊäÈëÎļþ£¡\n"
-
--#: locale/programs/locale.c:75
--msgid "Write names of available locales"
-+#: sunrpc/rpc_main.c:1364
-+msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr ""
-
--#: locale/programs/locale.c:79
--msgid "Write names of selected categories"
--msgstr ""
-+#: sunrpc/rpc_main.c:1373
-+msgid "Cannot use netid flag with inetd flag!\n"
-+msgstr "ÎÞ·¨ÔÚʹÓà inetd ±êÖ¾µÄͬʱʹÓà netid ±êÖ¾£¡\n"
-
--#: locale/programs/locale.c:80
--msgid "Write names of selected keywords"
--msgstr ""
-+#: sunrpc/rpc_main.c:1385
-+msgid "Cannot use netid flag without TIRPC!\n"
-+msgstr "ÎÞ·¨ÔÚδʹÓà TIRPC µÄʱºòʹÓà netid ±êÖ¾£¡\n"
-
--#: catgets/gencat.c:115
--msgid "Write output to file NAME"
--msgstr ""
-+#: sunrpc/rpc_main.c:1392
-+msgid "Cannot use table flags with newstyle!\n"
-+msgstr "ÎÞ·¨ÒÔзç¸ñʹÓñí¸ñ±êÖ¾£¡\n"
-
--#: elf/cache.c:402 elf/cache.c:411 elf/cache.c:415
--msgid "Writing of cache data failed"
--msgstr ""
-+#: sunrpc/rpc_main.c:1411
-+msgid "\"infile\" is required for template generation flags.\n"
-+msgstr "¡°ÊäÈëÎļþ¡±¶ÔÄ£°åÉú³É±êÖ¾À´ËµÊDZØÐëµÄ¡£\n"
-
--#: elf/cache.c:419
--msgid "Writing of cache data failed."
--msgstr ""
-+#: sunrpc/rpc_main.c:1416
-+msgid "Cannot have more than one file generation flag!\n"
-+msgstr "ÎÞ·¨Ê¹ÓöàÓÚÒ»¸öµÄÎļþÉú³É±êÖ¾£¡\n"
-
--#: catgets/gencat.c:251 elf/ldconfig.c:264 elf/sprof.c:361
--#: iconv/iconv_prog.c:398 iconv/iconvconfig.c:340 locale/programs/locale.c:286
--#: locale/programs/localedef.c:316 nscd/nscd.c:292 nscd/nscd_nischeck.c:95
--#: nss/getent.c:68 posix/getconf.c:909
-+#: sunrpc/rpc_main.c:1425
- #, c-format
--msgid "Written by %s.\n"
--msgstr ""
--
--#: stdio-common/../sysdeps/gnu/errlist.c:837
--msgid "Wrong medium type"
--msgstr "´íÎóµÄ½éÖÊÀàÐÍ"
-+msgid "usage: %s infile\n"
-+msgstr "Ó÷¨£º%s ÊäÈëÎļþ\n"
-
--#: nis/ypclnt.c:174
-+#: sunrpc/rpc_main.c:1426
- #, c-format
--msgid "YPBINDPROC_DOMAIN: %s\n"
--msgstr ""
-+msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
-+msgstr "\t%s [-abkCLNTM][-DÃû×Ö[=Öµ]] [-i ´óС] [-I [-K ÃëÊý]] [-Y ·¾¶] ÊäÈëÎļþ\n"
-
--#: nis/nis_error.c:71
--msgid "Yes, 42 is the meaning of life"
--msgstr ""
-+#: sunrpc/rpc_main.c:1428
-+#, c-format
-+msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
-+msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-
--#. TRANS You did @strong{what}?
--#: stdio-common/../sysdeps/gnu/errlist.c:627
--msgid "You really blew it this time"
--msgstr ""
-+#: sunrpc/rpc_main.c:1430
-+#, c-format
-+msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
-+msgstr "\t%s [-s ÍøÂçÀàÐÍ]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-
--#: timezone/zic.c:1094
--msgid "Zone continuation line end time is not after end time of previous line"
--msgstr ""
-+#: sunrpc/rpc_main.c:1431
-+#, c-format
-+msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
-+msgstr "\t%s [-n ÍøÂç id]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
-
--#: iconv/iconvconfig.c:114
--msgid "[DIR...]"
--msgstr "[Ŀ¼...]"
-+#: sunrpc/rpc_scan.c:116
-+msgid "constant or identifier expected"
-+msgstr "ӦΪ³£Á¿»ò±êʶ·û"
-
--#: iconv/iconv_prog.c:77
--msgid "[FILE...]"
--msgstr "[Îļþ...]"
-+#: sunrpc/rpc_scan.c:312
-+msgid "illegal character in file: "
-+msgstr "ÎļþÖеķǷ¨×Ö·û£º"
-
--#: debug/pcprofiledump.c:59
--msgid "[FILE]"
--msgstr "[Îļþ]"
-+#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
-+msgid "unterminated string constant"
-+msgstr "δÖÕÖ¹µÄ×Ö·û´®³£Á¿"
-
--#: sunrpc/pmap_clnt.c:72
--msgid "__get_myaddress: ioctl (get interface configuration)"
-+#: sunrpc/rpc_scan.c:383
-+msgid "empty char string"
- msgstr ""
-
--#: locale/programs/ld-collate.c:417
--#, c-format
--msgid "`%.*s' already defined as collating element"
--msgstr ""
-+#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
-+msgid "preprocessor error"
-+msgstr "Ô¤´¦Àí´íÎó"
-
--#: locale/programs/ld-collate.c:410
-+#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
- #, c-format
--msgid "`%.*s' already defined as collating symbol"
--msgstr ""
-+msgid "program %lu is not available\n"
-+msgstr "³ÌÐò %lu ²»¿ÉÓÃ\n"
-
--#: locale/programs/ld-collate.c:394
-+#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
-+#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
-+#: sunrpc/rpcinfo.c:510
- #, c-format
--msgid "`%.*s' already defined in charmap"
--msgstr ""
-+msgid "program %lu version %lu is not available\n"
-+msgstr "³ÌÐò %lu °æ±¾ %lu ²»¿ÉÓÃ\n"
-
--#: locale/programs/ld-collate.c:403
-+#: sunrpc/rpcinfo.c:515
- #, c-format
--msgid "`%.*s' already defined in repertoire"
--msgstr ""
-+msgid "program %lu version %lu ready and waiting\n"
-+msgstr "³ÌÐò %lu °æ±¾ %lu ¾ÍÐ÷²¢µÈ´ý\n"
-
--#: locale/programs/charmap.c:604 locale/programs/locfile.h:96
--#: locale/programs/repertoire.c:314
--#, c-format
--msgid "`%1$s' definition does not end with `END %1$s'"
--msgstr ""
-+#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
-+msgid "rpcinfo: can't contact portmapper"
-+msgstr "rpcinfo£ºÎÞ·¨Í¬ portmapper ½»»¥"
-+
-+#: sunrpc/rpcinfo.c:570
-+msgid "No remote programs registered.\n"
-+msgstr "ûÓÐ×¢²áµÄÔ¶³Ì³ÌÐò¡£\n"
-+
-+#: sunrpc/rpcinfo.c:574
-+msgid " program vers proto port\n"
-+msgstr " ³ÌÐò °æ±¾ ЭÒé ¶Ë¿Ú\n"
-+
-+#: sunrpc/rpcinfo.c:613
-+msgid "(unknown)"
-+msgstr "(δ֪)"
-
--#: locale/programs/ld-collate.c:1281 locale/programs/ld-ctype.c:1455
-+#: sunrpc/rpcinfo.c:637
- #, c-format
--msgid "`%s' and `%.*s' are no valid names for symbolic range"
--msgstr ""
-+msgid "rpcinfo: broadcast failed: %s\n"
-+msgstr "rpcinfo£º¹ã²¥Ê§°Ü£º%s\n"
-+
-+#: sunrpc/rpcinfo.c:658
-+msgid "Sorry. You are not root\n"
-+msgstr "±§Ç¸¡£Äú²»ÊǸùÓû§\n"
-
--#: elf/sprof.c:762
-+#: sunrpc/rpcinfo.c:665
- #, c-format
--msgid "`%s' is no correct profile data file for `%s'"
--msgstr ""
-+msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
-+msgstr "rpcinfo£ºÎÞ·¨É¾³ý³ÌÐò %s °æ±¾ %s µÄ×¢²á\n"
-
--#: locale/programs/ld-ctype.c:699
--msgid "`digit' category has not entries in groups of ten"
--msgstr ""
-+#: sunrpc/rpcinfo.c:674
-+msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
-+msgstr "Ó÷¨£ºrpcinfo [ -n ¶Ë¿ÚºÅ ] -u Ö÷»úÃû ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
-
--#: posix/../sysdeps/posix/gai_strerror.c:35
--msgid "ai_family not supported"
--msgstr "²»Ö§³Ö ai_family"
-+#: sunrpc/rpcinfo.c:676
-+msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
-+msgstr " rpcinfo [ -n ¶Ë¿ÚºÅ ] -t Ö÷»ú ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
-
--#: posix/../sysdeps/posix/gai_strerror.c:40
--msgid "ai_socktype not supported"
--msgstr "²»Ö§³Ö ai_socktype"
-+#: sunrpc/rpcinfo.c:678
-+msgid " rpcinfo -p [ host ]\n"
-+msgstr " rpcinfo -p [ Ö÷»ú ]\n"
-
--#: nscd/nscd.c:130
--msgid "already running"
--msgstr "ÒѾ­ÔÚÔËÐÐ"
-+#: sunrpc/rpcinfo.c:679
-+msgid " rpcinfo -b prognum versnum\n"
-+msgstr " rpcinfo -b ³ÌÐòºÅ °æ±¾ºÅ\n"
-+
-+#: sunrpc/rpcinfo.c:680
-+msgid " rpcinfo -d prognum versnum\n"
-+msgstr " rpcinfo -d ³ÌÐòºÅ °æ±¾ºÅ\n"
-
--#: locale/programs/charmap.c:439 locale/programs/repertoire.c:184
-+#: sunrpc/rpcinfo.c:695
- #, c-format
--msgid "argument to <%s> must be a single character"
--msgstr "<%s>µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
-+msgid "rpcinfo: %s is unknown service\n"
-+msgstr "rpcinfo£º%s ÊÇδ֪µÄ·þÎñ\n"
-
--#: locale/programs/locfile.c:126
-+#: sunrpc/rpcinfo.c:732
- #, c-format
--msgid "argument to `%s' must be a single character"
--msgstr "¡°%s¡±µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
-+msgid "rpcinfo: %s is unknown host\n"
-+msgstr "rpcinfo£º%s ÊÇδ֪µÄÖ÷»ú\n"
-
--#: sunrpc/auth_unix.c:322
--msgid "auth_none.c - Fatal marshalling problem"
-+#: sunrpc/svc_run.c:76
-+msgid "svc_run: - poll failed"
- msgstr ""
-
--#: sunrpc/auth_unix.c:114 sunrpc/auth_unix.c:117 sunrpc/auth_unix.c:150
--#: sunrpc/auth_unix.c:153
--msgid "authunix_create: out of memory\n"
--msgstr "authunix_create£ºÄÚ´æ²»×ã\n"
-+#: sunrpc/svc_simple.c:87
-+#, c-format
-+msgid "can't reassign procedure number %ld\n"
-+msgstr "ÎÞ·¨ÖØÐÂÖ¸¶¨½ø³Ì±àºÅ %ld\n"
-
--#: locale/programs/charmap.c:369 locale/programs/locfile.c:120
--#: locale/programs/locfile.c:147 locale/programs/repertoire.c:176
--msgid "bad argument"
--msgstr "´íÎóµÄ²ÎÊý"
-+#: sunrpc/svc_simple.c:96
-+msgid "couldn't create an rpc server\n"
-+msgstr "ÎÞ·¨´´½¨ rpc ·þÎñÆ÷\n"
-
--#: inet/rcmd.c:514
--msgid "bad owner"
--msgstr "´íÎóµÄÓµÓÐÕß"
-+#: sunrpc/svc_simple.c:104
-+#, c-format
-+msgid "couldn't register prog %ld vers %ld\n"
-+msgstr "ÎÞ·¨×¢²á³ÌÐò %ld °æ±¾ %ld\n"
-
--#: timezone/zic.c:1216
--msgid "blank FROM field on Link line"
--msgstr "Link ÐÐÖÐ¿Õ°×µÄ FROM Óò"
-+#: sunrpc/svc_simple.c:111
-+msgid "registerrpc: out of memory\n"
-+msgstr "registerrpc£ºÄÚ´æ²»×ã\n"
-
--#: timezone/zic.c:1220
--msgid "blank TO field on Link line"
--msgstr "Link ÐÐÖÐ¿Õ°×µÄ TO Óò"
-+#: sunrpc/svc_simple.c:175
-+#, c-format
-+msgid "trouble replying to prog %d\n"
-+msgstr ""
-
--#: malloc/mcheck.c:302
--msgid "block freed twice\n"
--msgstr "¿éÊÍ·ÅÁËÁ½´Î\n"
-+#: sunrpc/svc_simple.c:183
-+#, c-format
-+msgid "never registered prog %d\n"
-+msgstr "´Óδע²áµÄ³ÌÐò %d\n"
-
--#: malloc/mcheck.c:305
--msgid "bogus mcheck_status, library is buggy\n"
--msgstr ""
-+#: sunrpc/svc_tcp.c:155
-+msgid "svc_tcp.c - tcp socket creation problem"
-+msgstr "svc_tcp.c - tcp Ì×½Ó×Ö´´½¨ÎÊÌâ"
-
--#: sunrpc/pmap_rmt.c:186
--msgid "broadcast: ioctl (get interface configuration)"
--msgstr "broadcast£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
-+#: sunrpc/svc_tcp.c:170
-+msgid "svc_tcp.c - cannot getsockname or listen"
-+msgstr "svc_tcp.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
-
--#: sunrpc/pmap_rmt.c:195
--msgid "broadcast: ioctl (get interface flags)"
--msgstr "broadcast£ºioctl (»ñÈ¡½çÃæ±êÖ¾)"
-+#: sunrpc/svc_tcp.c:181 sunrpc/svc_tcp.c:184
-+msgid "svctcp_create: out of memory\n"
-+msgstr "svctcp_create£ºÄÚ´æ²»×ã\n"
-
--#: sunrpc/svc_udp.c:541
--msgid "cache_set: could not allocate new rpc_buffer"
--msgstr "cache_set£ºÎÞ·¨·ÖÅäÐ嵀 rpc_buffer"
-+#: sunrpc/svc_tcp.c:225 sunrpc/svc_tcp.c:228
-+msgid "svc_tcp: makefd_xprt: out of memory\n"
-+msgstr "svc_tcp£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
-
--#: sunrpc/svc_udp.c:535
--msgid "cache_set: victim alloc failed"
--msgstr ""
-+#: sunrpc/svc_udp.c:128
-+msgid "svcudp_create: socket creation problem"
-+msgstr "svcudp_create: Ì×½Ó×Ö´´½¨ÎÊÌâ"
-
--#: sunrpc/svc_udp.c:524
--msgid "cache_set: victim not found"
--msgstr ""
-+#: sunrpc/svc_udp.c:142
-+msgid "svcudp_create - cannot getsockname"
-+msgstr "svcudp_create - ÎÞ·¨µ÷Óà getsockname"
-
--#: timezone/zic.c:1757
--msgid "can't determine time zone abbreviation to use just after until time"
--msgstr ""
-+#: sunrpc/svc_udp.c:154 sunrpc/svc_udp.c:157
-+msgid "svcudp_create: out of memory\n"
-+msgstr "svcudp_create£ºÄÚ´æ²»×ã\n"
-
--#: sunrpc/svc_simple.c:88
--#, c-format
--msgid "can't reassign procedure number %ld\n"
--msgstr ""
-+#: sunrpc/svc_udp.c:182 sunrpc/svc_udp.c:185
-+msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
-+msgstr "svcudp_create£ºxp_pad ¶Ô IP_PKTINFO À´ËµÌ«Ð¡\n"
-
--#: elf/dl-reloc.c:152
--msgid "can't restore segment prot after reloc"
--msgstr ""
-+#: sunrpc/svc_udp.c:471
-+msgid "enablecache: cache already enabled"
-+msgstr "enablecache£º»º³åÇøÒѾ­ÆôÓÃ"
-
--#: locale/programs/localedef.c:487
--#, c-format
--msgid "cannot add already read locale `%s' a second time"
--msgstr "ÎÞ·¨ÔÙ´ÎÌí¼ÓÒѾ­¶ÁÈëµÄ¡°%s¡±"
-+#: sunrpc/svc_udp.c:477
-+msgid "enablecache: could not allocate cache"
-+msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇø"
-
--#: elf/dl-deps.c:454
--msgid "cannot allocate dependency list"
--msgstr "ÎÞ·¨·ÖÅäÒÐÀµÁбí"
-+#: sunrpc/svc_udp.c:485
-+msgid "enablecache: could not allocate cache data"
-+msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇøÊý¾Ý"
-
--#: elf/dl-load.c:1039
--msgid "cannot allocate memory for program header"
--msgstr "ÎÞ·¨Îª³ÌÐòÍ··ÖÅäÄÚ´æ"
-+#: sunrpc/svc_udp.c:492
-+msgid "enablecache: could not allocate cache fifo"
-+msgstr ""
-
--#: elf/dl-load.c:348
--msgid "cannot allocate name record"
--msgstr "ÎÞ·¨·ÖÅäÃû¼Ç¼"
-+#: sunrpc/svc_udp.c:528
-+msgid "cache_set: victim not found"
-+msgstr "cache_set£ºÕÒ²»µ½ victim"
-
--#: elf/sprof.c:930 elf/sprof.c:982
--msgid "cannot allocate symbol data"
--msgstr "ÎÞ·¨·ÖÅä·ûºÅÊý¾Ý"
-+#: sunrpc/svc_udp.c:539
-+msgid "cache_set: victim alloc failed"
-+msgstr "cache_set£º·ÖÅä victim ʧ°Ü"
-
--#: elf/dl-deps.c:484
--msgid "cannot allocate symbol search list"
--msgstr "ÎÞ·¨·ÖÅä·ûºÅËÑË÷Áбí"
-+#: sunrpc/svc_udp.c:545
-+msgid "cache_set: could not allocate new rpc_buffer"
-+msgstr "cache_set£ºÎÞ·¨·ÖÅäÐ嵀 rpc_buffer"
-
--#: elf/dl-version.c:292
--msgid "cannot allocate version reference table"
--msgstr "ÎÞ·¨·ÖÅä°æ±¾ÒýÓñí¸ñ"
-+#: sunrpc/svc_unix.c:150
-+msgid "svc_unix.c - AF_UNIX socket creation problem"
-+msgstr "svc_unix.c - AF_UNIX Ì×½Ó×Ö´´½¨ÎÊÌâ"
-
--#: elf/dl-load.c:1008
--msgid "cannot change memory protections"
--msgstr "ÎÞ·¨¸Ä±äÄÚ´æ±£»¤"
-+#: sunrpc/svc_unix.c:166
-+msgid "svc_unix.c - cannot getsockname or listen"
-+msgstr "svc_unix.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
-
--#: elf/dl-load.c:540
--msgid "cannot create RUNPATH/RPATH copy"
--msgstr "ÎÞ·¨´´½¨ RUNPATH/RPATH µÄ¸±±¾"
-+#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
-+msgid "svcunix_create: out of memory\n"
-+msgstr "svcunix_create£ºÄÚ´æ²»×ã\n"
-
--#: elf/dl-load.c:456 elf/dl-load.c:525 elf/dl-load.c:553 elf/dl-load.c:600
--#: elf/dl-load.c:693
--msgid "cannot create cache for search path"
--msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶»º³åÆ÷"
-+#: sunrpc/svc_unix.c:222 sunrpc/svc_unix.c:225
-+msgid "svc_unix: makefd_xprt: out of memory\n"
-+msgstr "svc_unix£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
-
--#: elf/sprof.c:715 elf/sprof.c:773
--msgid "cannot create internal descriptor"
--msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
-+#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
-+msgid "xdr_bytes: out of memory\n"
-+msgstr "xdr_bytes£ºÄÚ´æ²»×ã\n"
-
--#: elf/sprof.c:413
--msgid "cannot create internal descriptors"
--msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
-+#: sunrpc/xdr.c:725 sunrpc/xdr.c:728
-+msgid "xdr_string: out of memory\n"
-+msgstr "xdr_string£ºÄÚ´æ²»×ã\n"
-
--#: locale/programs/locfile.c:693
--#, c-format
--msgid "cannot create output file `%s' for category `%s'"
--msgstr ""
-+#: sunrpc/xdr_array.c:111 sunrpc/xdr_array.c:114
-+msgid "xdr_array: out of memory\n"
-+msgstr "xdr_array£ºÄÚ´æ²»×ã\n"
-
--#: elf/dl-load.c:590
--msgid "cannot create search path array"
--msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
-+#: sunrpc/xdr_rec.c:158 sunrpc/xdr_rec.c:161
-+msgid "xdrrec_create: out of memory\n"
-+msgstr "xdrrec_create£ºÄÚ´æ²»×ã\n"
-
--#: elf/dl-load.c:1125
--msgid "cannot create searchlist"
--msgstr "ÎÞ·¨´´½¨ËÑË÷Áбí"
-+#: sunrpc/xdr_ref.c:88 sunrpc/xdr_ref.c:91
-+msgid "xdr_reference: out of memory\n"
-+msgstr "xdr_reference£ºÄÚ´æ²»×ã\n"
-
--#: elf/dl-load.c:830 elf/dl-load.c:1724
--msgid "cannot create shared object descriptor"
--msgstr "ÎÞ·¨´´½¨¹²Ïí¶ÔÏóÃèÊö·û"
-+#: nis/nis_callback.c:189
-+msgid "unable to free arguments"
-+msgstr "ÎÞ·¨ÊͷŲÎÊý"
-
--#: catgets/gencat.c:1315
--msgid "cannot determine escape character"
--msgstr "ÎÞ·¨È·¶¨×ªÒå×Ö·û"
-+#: nis/nis_error.c:30
-+msgid "Probable success"
-+msgstr ""
-
--#: elf/dl-load.c:958
--msgid "cannot dynamically load executable"
--msgstr "ÎÞ·¨¶¯Ì¬×°Èë¿ÉÖ´ÐÐÎļþ"
-+#: nis/nis_error.c:31
-+msgid "Not found"
-+msgstr "ÕÒ²»µ½"
-
--#: nscd/connections.c:183
--#, c-format
--msgid "cannot enable socket to accept connections: %s"
--msgstr "ÎÞ·¨ÆôÓÃÌ×½Ó×ÖÒÔ½ÓÊÜÁ¬½Ó£º%s"
-+#: nis/nis_error.c:32
-+msgid "Probably not found"
-+msgstr ""
-
--#: elf/dl-open.c:121
--msgid "cannot extend global scope"
--msgstr "ÎÞ·¨À©Õ¹È«¾Ö·¶Î§"
-+#: nis/nis_error.c:33
-+msgid "Cache expired"
-+msgstr "»º³åÆ÷¹ýÆÚ"
-
--#: sunrpc/rpc_main.c:343
--#, c-format
--msgid "cannot find C preprocessor: %s \n"
--msgstr "ÎÞ·¨ÕÒµ½ C Ô¤´¦ÀíÆ÷£º%s\n"
-+#: nis/nis_error.c:34
-+msgid "NIS+ servers unreachable"
-+msgstr "NIS+ ·þÎñÆ÷²»¿É´ï"
-
--#: sunrpc/rpc_main.c:351
--msgid "cannot find any C preprocessor (cpp)\n"
--msgstr "ÎÞ·¨ÕÒµ½ÈκΠC Ô¤´¦ÀíÆ÷ (cpp)\n"
-+#: nis/nis_error.c:35
-+msgid "Unknown object"
-+msgstr "δ֪µÄ¶ÔÏó"
-
--#: iconv/iconvconfig.c:1159
--msgid "cannot generate output file"
--msgstr "ÎÞ·¨Éú³ÉÊä³öÎļþ"
-+#: nis/nis_error.c:36
-+msgid "Server busy, try again"
-+msgstr "·þÎñÆ÷棬ÖØÊÔ"
-
--#: nscd/connections.c:227
--#, c-format
--msgid "cannot handle old request version %d; current version is %d"
--msgstr "ÎÞ·¨´¦Àí¾ÉÇëÇó°æ±¾ %d£»µ±Ç°°æ±¾Îª %d"
-+#: nis/nis_error.c:37
-+msgid "Generic system error"
-+msgstr "ͨÓÃϵͳ´íÎó"
-
--#: elf/sprof.c:670
--msgid "cannot load profiling data"
-+#: nis/nis_error.c:38
-+msgid "First/next chain broken"
- msgstr ""
-
--#: elf/dl-reloc.c:62
--msgid "cannot make segment writable for relocation"
-+#: nis/nis_error.c:41
-+msgid "Name not served by this server"
- msgstr ""
-
--#: elf/dl-load.c:1024
--msgid "cannot map zero-fill pages"
--msgstr ""
-+#: nis/nis_error.c:42
-+msgid "Server out of memory"
-+msgstr "·þÎñÆ÷ÄÚ´æ²»×ã"
-
--#: inet/rcmd.c:510
--msgid "cannot open"
--msgstr "ÎÞ·¨´ò¿ª"
-+#: nis/nis_error.c:43
-+msgid "Object with same name exists"
-+msgstr "ͬÃû¶ÔÏóÒÑ´æÔÚ"
-
--#: sysdeps/unix/sysv/linux/lddlibc4.c:64
--#, c-format
--msgid "cannot open `%s'"
--msgstr "ÎÞ·¨´ò¿ª¡°%s¡±"
-+#: nis/nis_error.c:44
-+msgid "Not master server for this domain"
-+msgstr "¸ÃÓòûÓÐÖ÷·þÎñÆ÷"
-
--#: debug/pcprofiledump.c:96
--msgid "cannot open input file"
--msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ"
-+#: nis/nis_error.c:45
-+msgid "Invalid object for operation"
-+msgstr "²Ù×÷ÎÞЧµÄ¶ÔÏó"
-
--#: catgets/gencat.c:288 iconv/iconv_charmap.c:159 iconv/iconv_prog.c:265
--#, c-format
--msgid "cannot open input file `%s'"
--msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ¡°%s¡±"
-+#: nis/nis_error.c:46
-+msgid "Malformed name, or illegal name"
-+msgstr ""
-
--#: locale/programs/localedef.c:203 locale/programs/localedef.c:218
--#: locale/programs/localedef.c:513 locale/programs/localedef.c:533
--#, c-format
--msgid "cannot open locale definition file `%s'"
--msgstr "ÎÞ·¨´ò¿ªÇøÓò¶¨ÒåÎļþ¡°%s¡±"
-+#: nis/nis_error.c:47
-+msgid "Unable to create callback"
-+msgstr "ÎÞ·¨´´½¨»Øµ÷º¯Êý"
-
--#: iconv/iconv_prog.c:209
--msgid "cannot open output file"
--msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ"
-+#: nis/nis_error.c:48
-+msgid "Results sent to callback proc"
-+msgstr ""
-
--#: catgets/gencat.c:949 catgets/gencat.c:990
--#, c-format
--msgid "cannot open output file `%s'"
--msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ¡°%s¡±"
-+#: nis/nis_error.c:49
-+msgid "Not found, no such name"
-+msgstr "ÕÒ²»µ½£¬Ã»ÓÐÄǸöÃû×Ö"
-
--#: locale/programs/locfile.c:571
--#, c-format
--msgid "cannot open output file `%s' for category `%s'"
--msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´ò¿ªÊä³öÎļþ¡°%1$s¡±"
-+#: nis/nis_error.c:50
-+msgid "Name/entry isn't unique"
-+msgstr "Ãû³Æ/ÌõÄ¿²»Î¨Ò»"
-
--#: elf/dl-load.c:1737
--msgid "cannot open shared object file"
--msgstr "ÎÞ·¨´ò¿ª¹²Ïí¶ÔÏóÎļþ"
-+#: nis/nis_error.c:51
-+msgid "Modification failed"
-+msgstr "ÐÞ¸Äʧ°Ü"
-
--#: nscd/connections.c:165
--#, c-format
--msgid "cannot open socket: %s"
--msgstr "ÎÞ·¨´ò¿ªÌ×½Ó×Ö£º%s"
-+#: nis/nis_error.c:52
-+msgid "Database for table does not exist"
-+msgstr "±í¸ñÊý¾Ý¿â²»´æÔÚ"
-
--#: elf/dl-load.c:822
--msgid "cannot open zero fill device"
--msgstr "ÎÞ·¨´ò¿ªÁãÌî³äÉ豸"
-+#: nis/nis_error.c:53
-+msgid "Entry/table type mismatch"
-+msgstr "ÌõÄ¿/±í¸ñÀàÐͲ»Æ¥Åä"
-
--#: locale/programs/charmap-dir.c:61
--#, c-format
--msgid "cannot read character map directory `%s'"
--msgstr ""
-+#: nis/nis_error.c:54
-+msgid "Link points to illegal name"
-+msgstr "Á¬½ÓÖ¸Ïò·Ç·¨Ãû³Æ"
-
--#: nscd/connections.c:125
--msgid "cannot read configuration file; this is fatal"
--msgstr "ÎÞ·¨¶ÁÈëÅäÖÃÎļþ£»ÕâÊÇÖÂÃüµÄ"
-+#: nis/nis_error.c:55
-+msgid "Partial success"
-+msgstr "²¿·Ö³É¹¦"
-
--#: elf/dl-load.c:846 elf/dl-load.c:1247 elf/dl-load.c:1319 elf/dl-load.c:1333
--msgid "cannot read file data"
--msgstr "ÎÞ·¨¶ÁÈëÎļþÊý¾Ý"
-+#: nis/nis_error.c:56
-+msgid "Too many attributes"
-+msgstr "ÊôÐÔ¹ý¶à"
-
--#: debug/pcprofiledump.c:102
--msgid "cannot read header"
--msgstr "ÎÞ·¨¶ÁÈëÍ·"
-+#: nis/nis_error.c:57
-+msgid "Error in RPC subsystem"
-+msgstr "RPC ×ÓϵͳÖгö´í"
-
--#: sysdeps/unix/sysv/linux/lddlibc4.c:68
--#, c-format
--msgid "cannot read header from `%s'"
--msgstr "ÎÞ·¨´Ó¡°%s¡±ÖжÁÈëÍ·"
-+#: nis/nis_error.c:58
-+msgid "Missing or malformed attribute"
-+msgstr "ÒÅ©»ò»ûÐεÄÊôÐÔ"
-
--#: nscd/nscd_stat.c:128
--msgid "cannot read statistics data"
--msgstr "ÎÞ·¨¶ÁÈëͳ¼ÆÊý¾Ý"
-+#: nis/nis_error.c:59
-+msgid "Named object is not searchable"
-+msgstr "²»ÄÜËÑË÷ÃüÃû¶ÔÏó"
-
--#: locale/programs/repertoire.c:331
--msgid "cannot safe new repertoire map"
-+#: nis/nis_error.c:60
-+msgid "Error while talking to callback proc"
-+msgstr "Óë»Øµ÷º¯Êý½»»¥Ê±³ö´í"
-+
-+#: nis/nis_error.c:61
-+msgid "Non NIS+ namespace encountered"
- msgstr ""
-
--#: elf/dl-load.c:784
--msgid "cannot stat shared object"
--msgstr "ÎÞ·¨¶Ô¹²ÏíÄ¿±ê½øÐÐ stat ²Ù×÷"
-+#: nis/nis_error.c:62
-+msgid "Illegal object type for operation"
-+msgstr "²Ù×÷µÄ·Ç·¨¶ÔÏóÀàÐÍ"
-
--#: nscd/cache.c:150 nscd/connections.c:151
--#, c-format
--msgid "cannot stat() file `%s': %s"
--msgstr "ÎÞ·¨¶ÔÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷£º%s"
-+#: nis/nis_error.c:63
-+msgid "Passed object is not the same object on server"
-+msgstr ""
-
--#: locale/programs/localedef.c:230
--#, c-format
--msgid "cannot write output files to `%s'"
--msgstr "ÎÞ·¨½«Êä³öÎļþдÈë¡°%s¡±"
-+#: nis/nis_error.c:64
-+msgid "Modify operation failed"
-+msgstr "Ð޸IJÙ×÷ʧ°Ü"
-
--#: nscd/connections.c:265 nscd/connections.c:287
--#, c-format
--msgid "cannot write result: %s"
--msgstr "ÎÞ·¨Ð´Èë½á¹û£º¡°%s¡±"
-+#: nis/nis_error.c:65
-+msgid "Query illegal for named table"
-+msgstr "¶ÔÃüÃû±íÀ´Ëµ²éѯ·Ç·¨"
-
--#: nscd/nscd_stat.c:87
--#, c-format
--msgid "cannot write statistics: %s"
--msgstr "ÎÞ·¨Ð´Èëͳ¼Æ£º%s"
-+#: nis/nis_error.c:66
-+msgid "Attempt to remove a non-empty table"
-+msgstr "ÊÔͼɾ³ý·Ç¿ÕµÄ±í"
-
--#: locale/programs/ld-ctype.c:517
--#, c-format
--msgid "character '%s' in class `%s' must be in class `%s'"
--msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±±ØÐëÊôÓÚÀà¡°%3$s¡±"
-+#: nis/nis_error.c:67
-+msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
-+msgstr "·ÃÎÊ NIS+ ÀäÆô¶¯Îļþ³ö´í¡£NIS+ °²×°ÁËÂð£¿"
-
--#: locale/programs/ld-ctype.c:532
--#, c-format
--msgid "character '%s' in class `%s' must not be in class `%s'"
--msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±²»µÃÊôÓÚÀà¡°%3$s¡±"
-+#: nis/nis_error.c:68
-+msgid "Full resync required for directory"
-+msgstr "ÐèÒª¶ÔĿ¼½øÐÐÍêÈ«µÄÖØÐÂͬ²½"
-
--#: locale/programs/ld-ctype.c:587
--msgid "character <SP> not defined in character map"
--msgstr ""
-+#: nis/nis_error.c:69
-+msgid "NIS+ operation failed"
-+msgstr "NIS+ ²Ù×÷ʧ°Ü"
-
--#: locale/programs/ld-ctype.c:461
--#, c-format
--msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
--msgstr ""
-+#: nis/nis_error.c:70
-+msgid "NIS+ service is unavailable or not installed"
-+msgstr "NIS+ ·þÎñÆ÷²»¿ÉÓûòδ°²×°"
-
--# msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û L'\\u%0*x' ±ØÐëÊôÓÚÀà¡°%3$s¡±"
--#: locale/programs/ld-ctype.c:475
--#, c-format
--msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
-+#: nis/nis_error.c:71
-+msgid "Yes, 42 is the meaning of life"
- msgstr ""
-
--# msgstr "Àà¡°%s¡±ÖеÄ×Ö·û L'\\u%0*x' ²»µÃÊôÓÚÀà¡°%s¡±"
--#: locale/programs/ld-ctype.c:3032
--#, c-format
--msgid "character `%s' not defined while needed as default value"
--msgstr ""
-+#: nis/nis_error.c:72
-+msgid "Unable to authenticate NIS+ server"
-+msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ·þÎñÆ÷"
-
--#: locale/programs/ld-ctype.c:1223
--#, c-format
--msgid "character class `%s' already defined"
--msgstr "×Ö·ûÀà¡°%s¡±ÒѶ¨Òå"
-+#: nis/nis_error.c:73
-+msgid "Unable to authenticate NIS+ client"
-+msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ¿Í»§¶Ë"
-
--#: locale/programs/ld-ctype.c:1255
--#, c-format
--msgid "character map `%s' already defined"
--msgstr ""
-+#: nis/nis_error.c:74
-+msgid "No file space on server"
-+msgstr "·þÎñÆ÷ÉÏûÓÐÎļþ¿Õ¼ä"
-
--#: locale/programs/charmap.c:254
--#, c-format
--msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
-+#: nis/nis_error.c:75
-+msgid "Unable to create process on server"
-+msgstr "ÎÞ·¨ÔÚ·þÎñÆ÷ÉÏ´´½¨½ø³Ì"
-+
-+#: nis/nis_error.c:76
-+msgid "Master server busy, full dump rescheduled."
- msgstr ""
-
--#: locale/programs/charmap.c:140
-+#: nis/nis_local_names.c:126
- #, c-format
--msgid "character map file `%s' not found"
-+msgid "LOCAL entry for UID %d in directory %s not unique\n"
- msgstr ""
-
--#: locale/programs/charmap.c:465
--msgid "character sets with locking states are not supported"
--msgstr "²»Ö§³Ö´øÓÐËø¶¨×´Ì¬µÄ×Ö·û¼¯"
-+#: nis/nis_print.c:51
-+msgid "UNKNOWN"
-+msgstr "δ֪"
-
--#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
--msgid "cheese"
--msgstr "ÄÌÀÒ"
-+#: nis/nis_print.c:109
-+msgid "BOGUS OBJECT\n"
-+msgstr ""
-
--#: locale/programs/localedef.c:482
--msgid "circular dependencies between locale definitions"
--msgstr "ÇøÓò¶¨ÒåÖеÄÑ­»·ÒÐÀµ"
-+#: nis/nis_print.c:112
-+msgid "NO OBJECT\n"
-+msgstr "ÎÞ¶ÔÏó\n"
-
--#: sunrpc/clnt_raw.c:115
--msgid "clnt_raw.c - Fatal header serialization error."
--msgstr ""
-+#: nis/nis_print.c:115
-+msgid "DIRECTORY\n"
-+msgstr "Ŀ¼\n"
-
--#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
--msgid "clnttcp_create: out of memory\n"
--msgstr "clnttcp_create£ºÄÚ´æ²»×ã\n"
-+#: nis/nis_print.c:118
-+msgid "GROUP\n"
-+msgstr "×é\n"
-
--#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
--msgid "clntudp_create: out of memory\n"
--msgstr "clntudp_create£ºÄÚ´æ²»×ã\n"
-+#: nis/nis_print.c:121
-+msgid "TABLE\n"
-+msgstr "±í\n"
-
--#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
--msgid "clntunix_create: out of memory\n"
--msgstr "clntunix_create£ºÄÚ´æ²»×ã\n"
-+#: nis/nis_print.c:124
-+msgid "ENTRY\n"
-+msgstr "ÌõÄ¿\n"
-
--#: inet/rcmd.c:209
--#, c-format
--msgid "connect to address %s: "
--msgstr "Á¬½Óµ½µØÖ· %s£º"
-+#: nis/nis_print.c:127
-+msgid "LINK\n"
-+msgstr "Á¬½Ó\n"
-
--#: sunrpc/rpc_scan.c:116
--msgid "constant or identifier expected"
--msgstr "ӦΪ³£Á¿»ò±êʶ·û"
-+#: nis/nis_print.c:130
-+msgid "PRIVATE\n"
-+msgstr "˽ÓÐ\n"
-
--#: iconv/iconv_prog.c:231
--#, c-format
--msgid "conversion from `%s' to `%s' not supported"
--msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
-+#: nis/nis_print.c:133
-+msgid "(Unknown object)\n"
-+msgstr "(δ֪¶ÔÏó)\n"
-
--#: catgets/gencat.c:1289
--msgid "conversion modules not available"
--msgstr "ת»»Ä£¿é²»¿ÉÓÃ"
-+#: nis/nis_print.c:166
-+#, c-format
-+msgid "Name : `%s'\n"
-+msgstr "Ãû³Æ £º¡°%s¡±\n"
-
--#: locale/programs/ld-monetary.c:902
--msgid "conversion rate value cannot be zero"
--msgstr "ת»»ÂʵÄÖµ²»ÄÜΪ 0"
-+#: nis/nis_print.c:167
-+#, c-format
-+msgid "Type : %s\n"
-+msgstr "ÀàÐÍ £º %s\n"
-
--#: iconv/iconv_prog.c:427 iconv/iconv_prog.c:452
--msgid "conversion stopped due to problem in writing the output"
--msgstr "ÓÉÓÚдÈëÊä³öʱ³öÏÖµÄÎÊÌâת»»Í£Ö¹"
-+#: nis/nis_print.c:172
-+msgid "Master Server :\n"
-+msgstr "Ö÷·þÎñÆ÷ £º\n"
-
--#: sunrpc/svc_simple.c:97
--msgid "couldn't create an rpc server\n"
--msgstr "ÎÞ·¨´´½¨ rpc ·þÎñÆ÷\n"
-+#: nis/nis_print.c:174
-+msgid "Replicate :\n"
-+msgstr ""
-
--#: sunrpc/svc_simple.c:105
-+#: nis/nis_print.c:175
- #, c-format
--msgid "couldn't register prog %ld vers %ld\n"
--msgstr "ÎÞ·¨×¢²á³ÌÐò %ld °æ±¾ %ld\n"
-+msgid "\tName : %s\n"
-+msgstr "\tÃû³Æ £º%s\n"
-
--#: nss/getent.c:51
--msgid "database [key ...]"
--msgstr "Êý¾Ý¿â [¼ü ...]"
-+#: nis/nis_print.c:176
-+msgid "\tPublic Key : "
-+msgstr "\t¹«Ô¿ £º"
-
--#: locale/programs/charmap.c:197
--#, c-format
--msgid "default character map file `%s' not found"
--msgstr ""
-+#: nis/nis_print.c:180
-+msgid "None.\n"
-+msgstr "ÎÞ¡£\n"
-
--#: locale/programs/charmap.c:397
-+#: nis/nis_print.c:183
- #, c-format
--msgid "duplicate definition of <%s>"
--msgstr "Öظ´¶¨Òå <%s>"
-+msgid "Diffie-Hellmann (%d bits)\n"
-+msgstr ""
-
--#: locale/programs/ld-collate.c:3062
-+#: nis/nis_print.c:188
- #, c-format
--msgid "duplicate definition of script `%s'"
--msgstr "Öظ´¶¨Òå½Å±¾¡°%s¡±"
-+msgid "RSA (%d bits)\n"
-+msgstr "RSA (%d λ)\n"
-
--#: catgets/gencat.c:430
--msgid "duplicate set definition"
-+#: nis/nis_print.c:191
-+msgid "Kerberos.\n"
- msgstr ""
-
--#: timezone/zic.c:1009
-+#: nis/nis_print.c:194
- #, c-format
--msgid "duplicate zone name %s (file \"%s\", line %d)"
--msgstr "Öظ´µÄÇøÓòÃû %s (Îļþ¡°%s¡±£¬ÐÐ %d)"
-+msgid "Unknown (type = %d, bits = %d)\n"
-+msgstr "δ֪ (ÀàÐÍ = %d£¬Î» = %d)\n"
-
--#: locale/programs/ld-ctype.c:2559
-+#: nis/nis_print.c:205
- #, c-format
--msgid "duplicated definition for mapping `%s'"
-+msgid "\tUniversal addresses (%u)\n"
- msgstr ""
-
--#: catgets/gencat.c:631
--msgid "duplicated message identifier"
--msgstr "Öظ´µÄÏûÏ¢±êʶ·û"
-+#: nis/nis_print.c:227
-+msgid "Time to live : "
-+msgstr "´æÔÚµÄʱ¼ä £º"
-
--#: catgets/gencat.c:603
--msgid "duplicated message number"
--msgstr "Öظ´µÄÏûÏ¢±àºÅ"
-+#: nis/nis_print.c:229
-+msgid "Default Access rights :\n"
-+msgstr "ĬÈÏ·ÃÎÊȨÏÞ £º\n"
-
--#: locale/programs/ld-ctype.c:2370
--msgid "ellipsis range must be marked by two operands of same type"
--msgstr ""
-+#: nis/nis_print.c:238
-+#, c-format
-+msgid "\tType : %s\n"
-+msgstr "\tÀàÐÍ £º%s\n"
-
--#: sunrpc/rpc_scan.c:383
--msgid "empty char string"
--msgstr ""
-+#: nis/nis_print.c:239
-+msgid "\tAccess rights: "
-+msgstr "\t·ÃÎÊȨÏÞ £º"
-
--#: elf/dl-open.c:219
--msgid "empty dynamic string token substitution"
--msgstr ""
-+#: nis/nis_print.c:252
-+msgid "Group Flags :"
-+msgstr "×é±êÖ¾ £º"
-
--#: elf/dl-deps.c:113
--msgid "empty dynamics string token substitution"
-+#: nis/nis_print.c:255
-+msgid ""
-+"\n"
-+"Group Members :\n"
- msgstr ""
-+"\n"
-+"×é³ÉÔ± £º\n"
-
--#: sunrpc/svc_udp.c:467
--msgid "enablecache: cache already enabled"
--msgstr "enablecache£º»º³åÇøÒѾ­ÆôÓÃ"
-+#: nis/nis_print.c:266
-+#, c-format
-+msgid "Table Type : %s\n"
-+msgstr "±í¸ñÀàÐÍ £º%s\n"
-
--#: sunrpc/svc_udp.c:473
--msgid "enablecache: could not allocate cache"
--msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇø"
-+#: nis/nis_print.c:267
-+#, c-format
-+msgid "Number of Columns : %d\n"
-+msgstr "ÁеÄÊýÁ¿ £º%d\n"
-
--#: sunrpc/svc_udp.c:481
--msgid "enablecache: could not allocate cache data"
--msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇøÊý¾Ý"
-+#: nis/nis_print.c:268
-+#, c-format
-+msgid "Character Separator : %c\n"
-+msgstr "×Ö·û·Ö¸ô·û£º%c\n"
-
--#: sunrpc/svc_udp.c:488
--msgid "enablecache: could not allocate cache fifo"
-+#: nis/nis_print.c:269
-+#, c-format
-+msgid "Search Path : %s\n"
-+msgstr "ËÑË÷·¾¶ £º%s\n"
-+
-+#: nis/nis_print.c:270
-+msgid "Columns :\n"
- msgstr ""
-
--#: iconv/iconv_prog.c:61
--msgid "encoding for output"
--msgstr "Êä³ö±àÂë"
-+#: nis/nis_print.c:273
-+#, c-format
-+msgid "\t[%d]\tName : %s\n"
-+msgstr "\t[%d]\tÃû³Æ £º%s\n"
-
--#: iconv/iconv_prog.c:60
--msgid "encoding of original text"
--msgstr "ԭʼÎı¾±àÂë"
-+#: nis/nis_print.c:275
-+msgid "\t\tAttributes : "
-+msgstr "\t\tÊôÐÔ £º"
-
--#: nscd/connections.c:366 nscd/connections.c:460
--#, c-format
--msgid "error getting callers id: %s"
--msgstr ""
-+#: nis/nis_print.c:277
-+msgid "\t\tAccess Rights : "
-+msgstr "\t\t·ÃÎÊȨÏÞ £º"
-
--#: locale/programs/ld-collate.c:3032
--msgid "error while adding equivalent collating symbol"
--msgstr ""
-+#: nis/nis_print.c:286
-+msgid "Linked Object Type : "
-+msgstr "Á¬½Óµ½¶ÔÏóÀàÐÍ £º"
-
--#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:283
-+#: nis/nis_print.c:288
- #, c-format
--msgid "error while closing input `%s'"
--msgstr "¹Ø±ÕÊäÈë¡°%s¡±Ê±³ö´í"
--
--#: iconv/iconv_prog.c:330
--msgid "error while closing output file"
--msgstr "¹Ø±ÕÊä³öÎļþʱ³ö´í"
-+msgid "Linked to : %s\n"
-+msgstr "Á¬½Óµ½ £º%s\n"
-
--#: elf/sprof.c:706
--msgid "error while closing the profiling data file"
-+#: nis/nis_print.c:297
-+#, c-format
-+msgid "\tEntry data of type %s\n"
- msgstr ""
-
--#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:538 iconv/iconv_prog.c:516
--#: iconv/iconv_prog.c:547
--msgid "error while reading the input"
--msgstr "¶ÁÈ¡ÊäÈëʱ³ö´í"
-+#: nis/nis_print.c:300
-+#, c-format
-+msgid "\t[%u] - [%u bytes] "
-+msgstr "\t[%u] - [%u ×Ö½Ú] "
-
--#: locale/programs/locfile.h:59
--msgid "expect string argument for `copy'"
--msgstr ""
-+#: nis/nis_print.c:303
-+msgid "Encrypted data\n"
-+msgstr "ÒѼÓÃܵÄÊý¾Ý\n"
-
--#: timezone/zic.c:899
--msgid "expected continuation line not found"
--msgstr ""
-+#: nis/nis_print.c:305
-+msgid "Binary data\n"
-+msgstr "¶þ½øÖÆÊý¾Ý\n"
-
--#: locale/programs/ld-time.c:1027
--msgid "extra trailing semicolon"
--msgstr ""
-+#: nis/nis_print.c:320
-+#, c-format
-+msgid "Object Name : %s\n"
-+msgstr "¶ÔÏóÃû³Æ £º%s\n"
-
--#: elf/sprof.c:404
-+#: nis/nis_print.c:321
- #, c-format
--msgid "failed to load shared object `%s'"
--msgstr "×°Èë¹²ÏíÄ¿±êÎļþ¡°%s¡±Ê§°Ü"
-+msgid "Directory : %s\n"
-+msgstr "Ŀ¼ £º%s\n"
-
--#: elf/sprof.c:600
--msgid "failed to load symbol data"
--msgstr "×°Èë·ûºÅÊý¾Ýʧ°Ü"
-+#: nis/nis_print.c:322
-+#, c-format
-+msgid "Owner : %s\n"
-+msgstr "ËùÓÐÕß £º%s\n"
-
--#: elf/dl-load.c:771
--msgid "failed to map segment from shared object"
--msgstr ""
-+#: nis/nis_print.c:323
-+#, c-format
-+msgid "Group : %s\n"
-+msgstr "×é £º%s\n"
-
--#: elf/sprof.c:698
--msgid "failed to mmap the profiling data file"
--msgstr ""
-+#: nis/nis_print.c:324
-+msgid "Access Rights : "
-+msgstr "·ÃÎÊȨÏÞ£º"
-
--#: iconv/iconv_prog.c:235
--msgid "failed to start conversion processing"
-+#: nis/nis_print.c:326
-+msgid ""
-+"\n"
-+"Time to Live : "
- msgstr ""
-+"\n"
-+"´æÔÚµÄʱ¼ä £º"
-
--#: locale/programs/locfile.c:596
-+#: nis/nis_print.c:329
- #, c-format
--msgid "failure while writing data for category `%s'"
--msgstr ""
-+msgid "Creation Time : %s"
-+msgstr "´´½¨Ê±¼ä£º%s"
-+
-+#: nis/nis_print.c:331
-+#, c-format
-+msgid "Mod. Time : %s"
-+msgstr "ÐÞ¸Äʱ¼ä £º%s"
-+
-+#: nis/nis_print.c:332
-+msgid "Object Type : "
-+msgstr "¶ÔÏóÀàÐÍ £º%s"
-
--#: elf/../sysdeps/generic/readelflib.c:35
-+#: nis/nis_print.c:352
- #, c-format
--msgid "file %s is truncated\n"
--msgstr "Îļþ %s ¼º±»½Ø¶Ï\n"
-+msgid " Data Length = %u\n"
-+msgstr " Êý¾Ý³¤¶È = %u\n"
-
--#. TRANS: the file will not be removed; this is an
--#. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: nis/nis_print.c:365
- #, c-format
--msgid "file `%s' already exists and may be overwritten\n"
--msgstr "Îļþ¡°%s¡±ÒÑ´æÔÚ²¢¿ÉÄܱ»¸²¸Ç\n"
-+msgid "Status : %s\n"
-+msgstr "״̬ £º%s\n"
-
--#: elf/dl-load.c:1247
--msgid "file too short"
--msgstr "Îļþ¹ý¶Ì"
-+#: nis/nis_print.c:366
-+#, c-format
-+msgid "Number of objects : %u\n"
-+msgstr "¶ÔÏóµÄÊýÁ¿ £º%u\n"
-
--#: inet/rcmd.c:512
--msgid "fstat failed"
--msgstr "fstat ʧ°Ü"
-+#: nis/nis_print.c:370
-+#, c-format
-+msgid "Object #%d:\n"
-+msgstr "¶ÔÏó #%d£º\n"
-
--#: locale/programs/linereader.c:388
--msgid "garbage at end of character code specification"
-+#: nis/nis_print_group_entry.c:115
-+#, c-format
-+msgid "Group entry for \"%s.%s\" group:\n"
- msgstr ""
-
--#: locale/programs/linereader.c:276
--msgid "garbage at end of number"
--msgstr "Êý×ÖĩβÓÐÀ¬»ø"
--
--#: elf/sprof.c:77
--msgid "generate call graph"
--msgstr "Éú³Éµ÷ÓÃͼ"
-+#: nis/nis_print_group_entry.c:123
-+msgid " Explicit members:\n"
-+msgstr " ÏÔʽ³ÉÔ±£º\n"
-
--#: elf/sprof.c:76
--msgid "generate flat profile with counts and ticks"
--msgstr ""
-+#: nis/nis_print_group_entry.c:128
-+msgid " No explicit members\n"
-+msgstr " ÎÞÏÔʽ³ÉÔ±\n"
-
--#: sunrpc/get_myaddr.c:78
--msgid "get_myaddress: ioctl (get interface configuration)"
--msgstr "get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
-+#: nis/nis_print_group_entry.c:131
-+msgid " Implicit members:\n"
-+msgstr " Òþº¬³ÉÔ±£º\n"
-
--#: nss/getent.c:702
--msgid "getent - get entries from administrative database."
--msgstr "getent - ÖعÜÀíÊý¾Ý¿â»ñÈ¡ÌõÄ¿¡£"
-+#: nis/nis_print_group_entry.c:136
-+msgid " No implicit members\n"
-+msgstr " ÎÞÒþº¬³ÉÔ±\n"
-
--#: nscd/connections.c:221
--#, c-format
--msgid "handle_request: request received (Version = %d)"
--msgstr "´¦ÀíÇëÇó£ºÒÑÊÕµ½ÇëÇó (°æ±¾ = %d)"
-+#: nis/nis_print_group_entry.c:139
-+msgid " Recursive members:\n"
-+msgstr " µÝ¹é³ÉÔ±£º\n"
-
--#: timezone/zic.c:643
--msgid "hard link failed, symbolic link used"
--msgstr "Ó²Á¬½Óʧ°Ü£¬Ê¹Ó÷ûºÅÁ¬½Ó"
-+#: nis/nis_print_group_entry.c:144
-+msgid " No recursive members\n"
-+msgstr " Î޵ݹé³ÉÔ±\n"
-
--#: inet/rcmd.c:518
--msgid "hard linked somewhere"
-+#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
-+msgid " Explicit nonmembers:\n"
- msgstr ""
-
--#: locale/programs/charmap.c:986 locale/programs/repertoire.c:430
--msgid "hexadecimal range format should use only capital characters"
-+#: nis/nis_print_group_entry.c:152
-+msgid " No explicit nonmembers\n"
- msgstr ""
-
--#: timezone/zic.c:1193
--msgid "illegal CORRECTION field on Leap line"
-+#: nis/nis_print_group_entry.c:155
-+msgid " Implicit nonmembers:\n"
- msgstr ""
-
--#: timezone/zic.c:1197
--msgid "illegal Rolling/Stationary field on Leap line"
-+#: nis/nis_print_group_entry.c:160
-+msgid " No implicit nonmembers\n"
- msgstr ""
-
--#: sunrpc/rpc_scan.c:312
--msgid "illegal character in file: "
--msgstr "ÎļþÖеķǷ¨×Ö·û£º"
--
--#: locale/programs/linereader.c:600
--msgid "illegal escape sequence at end of string"
--msgstr "×Ö·û´®Ä©Î²µÄ·Ç·¨×ªÒåÐòÁÐ"
-+#: nis/nis_print_group_entry.c:168
-+msgid " No recursive nonmembers\n"
-+msgstr ""
-
--#: iconv/iconv_charmap.c:443
-+#: nis/nss_nisplus/nisplus-publickey.c:96
-+#: nis/nss_nisplus/nisplus-publickey.c:172
- #, c-format
--msgid "illegal input sequence at position %Zd"
-+msgid "DES entry for netname %s not unique\n"
- msgstr ""
-
--#: iconv/iconv_prog.c:469
-+#: nis/nss_nisplus/nisplus-publickey.c:208
- #, c-format
--msgid "illegal input sequence at position %ld"
--msgstr "δ֪ %ld ´¦µÄ·Ç·¨ÊäÈëÐòÁÐ"
-+msgid "netname2user: missing group id list in `%s'."
-+msgstr ""
-
--#: sunrpc/rpc_main.c:463
-+#: nis/nss_nisplus/nisplus-publickey.c:285
-+#: nis/nss_nisplus/nisplus-publickey.c:291
-+#: nis/nss_nisplus/nisplus-publickey.c:350
-+#: nis/nss_nisplus/nisplus-publickey.c:359
- #, c-format
--msgid "illegal nettype :`%s'\n"
--msgstr "·Ç·¨ÍøÂçÀàÐÍ£º¡°%s¡±\n"
--
--#: catgets/gencat.c:403 catgets/gencat.c:480
--msgid "illegal set number"
-+msgid "netname2user: (nis+ lookup): %s\n"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:1229
-+#: nis/nss_nisplus/nisplus-publickey.c:304
- #, c-format
--msgid "implementation limit: no more than %Zd character classes allowed"
-+msgid "netname2user: DES entry for %s in directory %s not unique"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:1261
-+#: nis/nss_nisplus/nisplus-publickey.c:322
- #, c-format
--msgid "implementation limit: no more than %d character maps allowed"
--msgstr ""
-+msgid "netname2user: principal name `%s' too long"
-+msgstr "netname2user£º»ù±¾Ãû³Æ¡°%s¡±¹ý³¤"
-
--#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:473
--msgid "incomplete character or shift sequence at end of buffer"
-+#: nis/nss_nisplus/nisplus-publickey.c:372
-+#, c-format
-+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
- msgstr ""
-
--#: timezone/zic.c:856
--msgid "input line of unknown type"
--msgstr "δ֪ÀàÐ͵ÄÊäÈëÐÐ"
--
--#: elf/dl-load.c:1294
--msgid "internal error"
--msgstr "ÄÚ²¿´íÎó"
--
--#: iconv/iconv_prog.c:477
--msgid "internal error (illegal descriptor)"
--msgstr "ÄÚ²¿´íÎó (·Ç·¨µÄÃèÊö·û)"
-+#: nis/nss_nisplus/nisplus-publickey.c:379
-+msgid "netname2user: should not have uid 0"
-+msgstr "netname2user£ºuid ²»Ó¦Îª 0"
-
--#: timezone/zic.c:1819
--msgid "internal error - addtype called with bad isdst"
--msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ isdst µ÷Óà addtype"
-+#: nis/ypclnt.c:174
-+#, c-format
-+msgid "YPBINDPROC_DOMAIN: %s\n"
-+msgstr "YPBINDPROC_DOMAIN£º%s\n"
-
--#: timezone/zic.c:1827
--msgid "internal error - addtype called with bad ttisgmt"
--msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisgmt µ÷Óà addtype"
-+#: nis/ypclnt.c:789
-+msgid "Request arguments bad"
-+msgstr "ÇëÇó²ÎÊý´íÎó"
-
--#: timezone/zic.c:1823
--msgid "internal error - addtype called with bad ttisstd"
--msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisstd µ÷Óà addtype"
-+#: nis/ypclnt.c:791
-+msgid "RPC failure on NIS operation"
-+msgstr ""
-
--#: locale/programs/ld-ctype.c:488 locale/programs/ld-ctype.c:544
--#, c-format
--msgid "internal error in %s, line %u"
--msgstr "ÔÚ %s µÄµÚ %u ÐгöÏÖÄÚ²¿´íÎó"
-+#: nis/ypclnt.c:793
-+msgid "Can't bind to server which serves this domain"
-+msgstr "ÎÞ·¨ÓÚΪ´ËÓò·þÎñµÄ·þÎñÆ÷°ó¶¨"
-
--#: elf/dl-load.c:1267
--msgid "invalid ELF header"
--msgstr "ÎÞЧµÄ ELF Í·"
-+#: nis/ypclnt.c:795
-+msgid "No such map in server's domain"
-+msgstr ""
-
--#: timezone/zic.c:1065
--msgid "invalid UTC offset"
--msgstr "ÎÞЧµÄ UTC Æ«ÒÆÁ¿"
-+#: nis/ypclnt.c:797
-+msgid "No such key in map"
-+msgstr ""
-
--#: timezone/zic.c:1068
--msgid "invalid abbreviation format"
--msgstr "ÎÞЧµÄËõÂÔ¸ñʽ"
-+#: nis/ypclnt.c:799
-+msgid "Internal NIS error"
-+msgstr "ÄÚ²¿ NIS ´íÎó"
-
--#: catgets/gencat.c:688
--msgid "invalid character: message ignored"
--msgstr "ÎÞЧµÄ×Ö·û£ººöÂÔÏûÏ¢"
-+#: nis/ypclnt.c:801
-+msgid "Local resource allocation failure"
-+msgstr "±¾µØ×ÊÔ´·ÖÅäʧ°Ü"
-
--#: timezone/zic.c:1158 timezone/zic.c:1370 timezone/zic.c:1384
--msgid "invalid day of month"
-+#: nis/ypclnt.c:803
-+msgid "No more records in map database"
- msgstr ""
-
--#: locale/programs/charmap.c:352
--msgid "invalid definition"
--msgstr "ÎÞЧµÄ¶¨Òå"
-+#: nis/ypclnt.c:805
-+msgid "Can't communicate with portmapper"
-+msgstr "ÎÞ·¨Óë portmapper ͨѶ"
-
--#: locale/programs/charmap.c:547
--msgid "invalid encoding given"
--msgstr ""
-+#: nis/ypclnt.c:807
-+msgid "Can't communicate with ypbind"
-+msgstr "ÎÞ·¨Óë ypbind ͨѶ"
-
--#: timezone/zic.c:1322
--msgid "invalid ending year"
--msgstr "ÎÞЧµÄÖÕÖ¹Äê·Ý"
-+#: nis/ypclnt.c:809
-+msgid "Can't communicate with ypserv"
-+msgstr "ÎÞ·¨Óë ypserv ͨѶ"
-
--#: catgets/gencat.c:1152 locale/programs/linereader.c:538
--msgid "invalid escape sequence"
--msgstr "ÎÞЧµÄתÒåÐòÁÐ"
-+#: nis/ypclnt.c:811
-+msgid "Local domain name not set"
-+msgstr "δÉèÖñ¾µØÓòÃû"
-
--#: timezone/zic.c:1130
--msgid "invalid leaping year"
--msgstr ""
-+#: nis/ypclnt.c:813
-+msgid "NIS map database is bad"
-+msgstr "NIS Ó³ÉäÊý¾Ý¿â´íÎó"
-
--#: catgets/gencat.c:731
--msgid "invalid line"
--msgstr "ÎÞЧµÄÐÐ"
-+#: nis/ypclnt.c:815
-+msgid "NIS client/server version mismatch - can't supply service"
-+msgstr "NIS ¿Í»§¶Ë/·þÎñÆ÷°æ±¾²»Æ¥Åä - ÎÞ·¨Ö§³Ö·þÎñ"
-
--#: elf/dl-open.c:349
--msgid "invalid mode for dlopen()"
--msgstr "ÎÞЧµÄ dlopen() ģʽ"
-+#: nis/ypclnt.c:819
-+msgid "Database is busy"
-+msgstr "Êý¾Ý¿âæ"
-
--#: timezone/zic.c:1145 timezone/zic.c:1248
--msgid "invalid month name"
--msgstr "ÎÞЧµÄÔÂÃû³Æ"
-+#: nis/ypclnt.c:821
-+msgid "Unknown NIS error code"
-+msgstr "δ֪µÄ NIS ´íÎóÂë"
-
--#: locale/programs/charmap.c:974 locale/programs/ld-collate.c:2888
--#: locale/programs/repertoire.c:418
--msgid "invalid names for character range"
--msgstr ""
-+#: nis/ypclnt.c:863
-+msgid "Internal ypbind error"
-+msgstr "ÄÚ²¿ ypbind ´íÎó"
-
--#: debug/pcprofiledump.c:166
--msgid "invalid pointer size"
--msgstr "ÎÞЧµÄÖ¸Õë´óС"
-+#: nis/ypclnt.c:865
-+msgid "Domain not bound"
-+msgstr "δ°ó¶¨Óò"
-
--#: catgets/gencat.c:549
--msgid "invalid quote character"
--msgstr "ÎÞЧµÄÒýÓÃ×Ö·û"
-+#: nis/ypclnt.c:867
-+msgid "System resource allocation failure"
-+msgstr "ϵͳ×ÊÔ´·ÖÅäʧ°Ü"
-
--#: timezone/zic.c:964
--msgid "invalid saved time"
--msgstr ""
-+#: nis/ypclnt.c:869
-+msgid "Unknown ypbind error"
-+msgstr "δ֪µÄ ypbind ´íÎó"
-
--#: timezone/zic.c:1297
--msgid "invalid starting year"
--msgstr "ÎÞЧµÄÆðʼÄê·Ý"
-+#: nis/ypclnt.c:908
-+msgid "yp_update: cannot convert host to netname\n"
-+msgstr "yp_update£ºÎÞ·¨½«Ö÷»úÃûת»»ÎªÍøÃû\n"
-
--#: timezone/zic.c:1174 timezone/zic.c:1277
--msgid "invalid time of day"
--msgstr "ÎÞЧµÄʱ¼ä"
-+#: nis/ypclnt.c:920
-+msgid "yp_update: cannot get server address\n"
-+msgstr "yp_update£ºÎÞ·¨»ñÈ¡·þÎñÆ÷µØÖ·\n"
-
--#: timezone/zic.c:1375
--msgid "invalid weekday name"
--msgstr "ÎÞЧµÄÐÇÆÚÃû"
-+#: nscd/cache.c:88
-+msgid "while allocating hash table entry"
-+msgstr "·ÖÅäÔÓ´Õ±íÌõĿʱ"
-
--#: nscd/connections.c:479
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
--msgid "key length in request too long: %d"
--msgstr "ÇëÇóÖеļü¹ý³¤£º%d"
-+msgid "cannot stat() file `%s': %s"
-+msgstr "ÎÞ·¨¶ÔÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷£º%s"
-
--#: elf/ldconfig.c:794
--#, c-format
--msgid "libc4 library %s in wrong directory"
--msgstr "libc4 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-+#: nscd/connections.c:146
-+msgid "cannot read configuration file; this is fatal"
-+msgstr "ÎÞ·¨¶ÁÈëÅäÖÃÎļþ£»ÕâÊÇÖÂÃüµÄ"
-
--#: elf/ldconfig.c:788
--#, c-format
--msgid "libc5 library %s in wrong directory"
--msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-+#: nscd/connections.c:153
-+msgid "Cannot run nscd in secure mode as unprivileged user"
-+msgstr ""
-
--#: elf/ldconfig.c:791
-+#: nscd/connections.c:175
- #, c-format
--msgid "libc6 library %s in wrong directory"
--msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-+msgid "while allocating cache: %s"
-+msgstr "·ÖÅ仺³åÇøʱ£º%s"
-
--#: elf/ldconfig.c:821
-+#: nscd/connections.c:200
- #, c-format
--msgid "libraries %s and %s in directory %s have same soname but different type."
--msgstr "Ŀ¼ %3$s ÖÐµÄ %1$s ºÍ %2$s µÄ so Ãû³ÆÏàͬµ«ÀàÐͲ»Í¬¡£"
--
--#: timezone/zic.c:836
--msgid "line too long"
--msgstr "Ðйý³¤"
--
--#: iconv/iconv_prog.c:63
--msgid "list all known coded character sets"
--msgstr "ÁоÙËùÓÐÒÑÖªµÄ×Ö·û¼¯"
-+msgid "cannot open socket: %s"
-+msgstr "ÎÞ·¨´ò¿ªÌ×½Ó×Ö£º%s"
-
--#: locale/programs/locfile.h:63
--msgid "locale name should consist only of portable characters"
--msgstr "ÇøÓòÃû³ÆÓ¦¸Ã½öÓÉ¿ÉÒÆÖ²µÄ×Ö·û×é³É"
-+#: nscd/connections.c:218
-+#, c-format
-+msgid "cannot enable socket to accept connections: %s"
-+msgstr "ÎÞ·¨ÆôÓÃÌ×½Ó×ÖÒÔ½ÓÊÜÁ¬½Ó£º%s"
-
--#: inet/rcmd.c:503
--msgid "lstat failed"
--msgstr "lstat ²Ù×÷ʧ°Ü"
-+#: nscd/connections.c:260
-+#, c-format
-+msgid "handle_request: request received (Version = %d)"
-+msgstr "´¦ÀíÇëÇó£ºÒÑÊÕµ½ÇëÇó (°æ±¾ = %d)"
-
--#: malloc/memusagestat.c:59
--msgid "make output graphic VALUE pixel high"
--msgstr ""
-+#: nscd/connections.c:266
-+#, c-format
-+msgid "cannot handle old request version %d; current version is %d"
-+msgstr "ÎÞ·¨´¦Àí¾ÉÇëÇó°æ±¾ %d£»µ±Ç°°æ±¾Îª %d"
-
--#: malloc/memusagestat.c:58
--msgid "make output graphic VALUE pixel wide"
--msgstr ""
-+#: nscd/connections.c:304 nscd/connections.c:326
-+#, c-format
-+msgid "cannot write result: %s"
-+msgstr "ÎÞ·¨Ð´Èë½á¹û£º¡°%s¡±"
-
--#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
--msgid "makecontext: does not know how to handle more than 8 arguments\n"
-+#: nscd/connections.c:405 nscd/connections.c:499
-+#, c-format
-+msgid "error getting callers id: %s"
- msgstr ""
-
--#: catgets/gencat.c:785
--msgid "malformed line ignored"
--msgstr ""
-+#: nscd/connections.c:471
-+#, c-format
-+msgid "while accepting connection: %s"
-+msgstr "½ÓÊÜÁ¬½Óʱ£º%s"
-
--#: elf/sprof.c:550
--msgid "mapping of section header string table failed"
--msgstr ""
-+#: nscd/connections.c:482
-+#, c-format
-+msgid "short read while reading request: %s"
-+msgstr "¶ÁÈ¡ÇëÇóʱûÓжÁÈë×ã¹»µÄÊý¾Ý£º%s"
-
--#: elf/sprof.c:540
--msgid "mapping of section headers failed"
--msgstr ""
-+#: nscd/connections.c:518
-+#, c-format
-+msgid "key length in request too long: %d"
-+msgstr "ÇëÇóÖеļü¹ý³¤£º%d"
-
--#: malloc/mcheck.c:296
--msgid "memory clobbered before allocated block\n"
--msgstr ""
-+#: nscd/connections.c:532
-+#, c-format
-+msgid "short read while reading request key: %s"
-+msgstr "¶ÁÈëÇëÇó¼üµÄʱºòûÓжÁÈë×ã¹»µÄÊý¾Ý£º%s"
-
--#: malloc/mcheck.c:299
--msgid "memory clobbered past end of allocated block\n"
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
-+#, c-format
-+msgid "Failed to run nscd as user '%s'"
- msgstr ""
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:489 malloc/obstack.c:493
--#: posix/getconf.c:996
--msgid "memory exhausted"
--msgstr "ÄÚ´æºÄ¾¡"
--
--#: malloc/mcheck.c:293
--msgid "memory is consistent, library is buggy\n"
--msgstr "ÄÚ´æ²»Ò»Ö£¬¿âÓдíÎó\n"
-+#: nscd/connections.c:612
-+msgid "getgrouplist failed"
-+msgstr "getgrouplist ʧ°Ü"
-
--#: elf/cache.c:143
--msgid "mmap of cache file failed.\n"
--msgstr ""
-+#: nscd/connections.c:625
-+msgid "setgroups failed"
-+msgstr "setgroups ʧ°Ü"
-
--#: elf/../sysdeps/generic/readelflib.c:110
--msgid "more than one dynamic segment\n"
--msgstr "¶àÓÚÒ»¸ö¶¯Ì¬¶Î\n"
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
-+msgid "while allocating key copy"
-+msgstr "·ÖÅä¼ü¸±±¾Ê±"
-
--#: timezone/zic.c:959
--msgid "nameless rule"
--msgstr "ÎÞÃû¹æÔò"
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
-+msgid "while allocating cache entry"
-+msgstr "·ÖÅ仺³åÇøÌõĿʱ"
-
--#: nis/nss_nisplus/nisplus-publickey.c:281
--#: nis/nss_nisplus/nisplus-publickey.c:287
--#: nis/nss_nisplus/nisplus-publickey.c:346
--#: nis/nss_nisplus/nisplus-publickey.c:355
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
--msgid "netname2user: (nis+ lookup): %s\n"
-+msgid "short write in %s: %s"
- msgstr ""
-
--#: nis/nss_nisplus/nisplus-publickey.c:300
-+#: nscd/grpcache.c:218
- #, c-format
--msgid "netname2user: DES entry for %s in directory %s not unique"
--msgstr ""
-+msgid "Haven't found \"%s\" in group cache!"
-+msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-
--#: nis/nss_nisplus/nisplus-publickey.c:368
-+#: nscd/grpcache.c:284
- #, c-format
--msgid "netname2user: LOCAL entry for %s in directory %s not unique"
-+msgid "Invalid numeric gid \"%s\"!"
- msgstr ""
-
--#: nis/nss_nisplus/nisplus-publickey.c:207
-+#: nscd/grpcache.c:291
- #, c-format
--msgid "netname2user: missing group id list in `%s'."
--msgstr ""
-+msgid "Haven't found \"%d\" in group cache!"
-+msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%d¡±£¡"
-
--#: nis/nss_nisplus/nisplus-publickey.c:318
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
--msgid "netname2user: principal name `%s' too long"
--msgstr "netname2user£º»ù±¾Ãû³Æ¡°%s¡±¹ý³¤"
-+msgid "Haven't found \"%s\" in hosts cache!"
-+msgstr "ÎÞ·¨ÔÚÖ÷»ú»º³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-
--#: nis/nss_nisplus/nisplus-publickey.c:375
--msgid "netname2user: should not have uid 0"
--msgstr "netname2user£ºuid ²»Ó¦Îª 0"
-+#: nscd/nscd.c:85
-+msgid "Read configuration data from NAME"
-+msgstr "´Ó NAME ÖжÁÈ¡ÅäÖÃÊý¾Ý"
-
--#: sunrpc/svc_simple.c:183
--#, c-format
--msgid "never registered prog %d\n"
-+#: nscd/nscd.c:87
-+msgid "Do not fork and display messages on the current tty"
- msgstr ""
-
--#: locale/programs/repertoire.c:272
--msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
--msgstr "¼´Î´¸ø³ö <Uxxxx> Ҳδ¸ø³ö <Uxxxxxxxx>"
--
--#: timezone/zic.c:2148
--msgid "no day in month matches rule"
-+#: nscd/nscd.c:88
-+msgid "NUMBER"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1770
--msgid "no definition of `UNDEFINED'"
--msgstr "ûÓйØÓÚ¡°UNDEFINIED¡±µÄ¶¨Òå"
-+#: nscd/nscd.c:88
-+msgid "Start NUMBER threads"
-+msgstr "Æô¶¯ NUMBER ¸öÏß³Ì"
-
--#: elf/sprof.c:272
--#, c-format
--msgid "no filename for profiling data given and shared object `%s' has no soname"
-+#: nscd/nscd.c:89
-+msgid "Shut the server down"
-+msgstr "¹Ø±Õ·þÎñÆ÷"
-+
-+#: nscd/nscd.c:90
-+msgid "Print current configuration statistic"
-+msgstr "´òÓ¡µ±Ç°ÅäÖÃͳ¼Æ"
-+
-+#: nscd/nscd.c:91
-+msgid "TABLE"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:747
--msgid "no input digits defined and none of the standard names in the charmap"
-+#: nscd/nscd.c:92
-+msgid "Invalidate the specified cache"
- msgstr ""
-
--#: locale/programs/locfile.h:82
--msgid "no other keyword shall be specified when `copy' is used"
--msgstr "ʹÓá°copy¡±Ê±²»Ó¦ÔÙʹÓÃÆäËü¹Ø¼ü×Ö"
-+#: nscd/nscd.c:93
-+msgid "TABLE,yes"
-+msgstr ""
-
--#: locale/programs/ld-ctype.c:3351
--msgid "no output digits defined and none of the standard names in the charmap"
-+#: nscd/nscd.c:93
-+msgid "Use separate cache for each user"
-+msgstr "Ϊÿ¸öÓû§Ê¹Ó÷ÖÀëµÄ»º³åÇø"
-+
-+#: nscd/nscd.c:98
-+msgid "Name Service Cache Daemon."
- msgstr ""
-
--#: iconv/iconvconfig.c:308 locale/programs/localedef.c:236
--msgid "no output file produced because warning were issued"
--msgstr "ÓÉÓÚ³öÏÖ¾¯¸æ¶øδÉú³ÉÊä³öÎļþ"
-+#: nscd/nscd.c:131
-+msgid "already running"
-+msgstr "ÒѾ­ÔÚÔËÐÐ"
-
--#: locale/programs/charmap.c:493 locale/programs/charmap.c:673
--#: locale/programs/charmap.c:769 locale/programs/repertoire.c:231
--msgid "no symbolic name given"
--msgstr "ûÓиø³ö·ûºÅÃû"
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
-+msgid "Only root is allowed to use this option!"
-+msgstr "Ö»ÓиùÓû§ÔÊÐíʹÓñ¾Ñ¡Ï"
-
--#: locale/programs/charmap.c:580 locale/programs/charmap.c:728
--#: locale/programs/charmap.c:811 locale/programs/repertoire.c:297
--msgid "no symbolic name given for end of range"
--msgstr ""
-+#: nscd/nscd_conf.c:83
-+#, c-format
-+msgid "Parse error: %s"
-+msgstr "½âÎö´íÎó£º%s"
-
--#: locale/programs/linereader.c:646
--msgid "non-symbolic character value should not be used"
--msgstr "²»Ó¦¸ÃʹÓ÷ǷûºÅ×Ö·ûµÄÖµ"
-+#: nscd/nscd_conf.c:166
-+#, c-format
-+msgid "Could not create log file \"%s\""
-+msgstr "ÎÞ·¨´´½¨ÈÕÖ¾Îļþ¡°%s¡±"
-
--#: locale/programs/ld-ctype.c:812
--msgid "not all characters used in `outdigit' are available in the charmap"
-+#: nscd/nscd_conf.c:182
-+msgid "Must specify user name for server-user option"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:829
--msgid "not all characters used in `outdigit' are available in the repertoire"
--msgstr ""
-+#: nscd/nscd_conf.c:187
-+#, c-format
-+msgid "Unknown option: %s %s %s"
-+msgstr "δ֪µÄÑ¡Ï%s %s %s"
-
--#: inet/rcmd.c:505
--msgid "not regular file"
--msgstr "²»ÊÇÆÕͨÎļþ"
-+#: nscd/nscd_stat.c:87
-+#, c-format
-+msgid "cannot write statistics: %s"
-+msgstr "ÎÞ·¨Ð´Èëͳ¼Æ£º%s"
-+
-+#: nscd/nscd_stat.c:105
-+msgid "nscd not running!\n"
-+msgstr "nscd δÔËÐУ¡\n"
-+
-+#: nscd/nscd_stat.c:116
-+msgid "write incomplete"
-+msgstr "дÈë²»ÍêÕû"
-+
-+#: nscd/nscd_stat.c:128
-+msgid "cannot read statistics data"
-+msgstr "ÎÞ·¨¶ÁÈëͳ¼ÆÊý¾Ý"
-
- #: nscd/nscd_stat.c:131
- #, c-format
-@@ -4995,578 +5224,637 @@
- "\n"
- "%15d ·þÎñÆ÷µ÷ÊÔ¼¶±ð\n"
-
--#: nscd/nscd_stat.c:105
--msgid "nscd not running!\n"
--msgstr "nscd δÔËÐУ¡\n"
--
--#: elf/dl-load.c:1059
--msgid "object file has no dynamic section"
--msgstr "Ä¿±êÎļþûÓж¯Ì¬½Ú"
-+#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-+msgid " no"
-+msgstr " ·ñ"
-
--#: iconv/iconv_prog.c:65
--msgid "omit invalid characters from output"
--msgstr "´ÓÊä³öÖкöÂÔÎÞЧµÄ×Ö·û"
-+#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-+msgid " yes"
-+msgstr " ÊÇ"
-
--#: elf/dl-load.c:1309
--msgid "only ET_DYN and ET_EXEC can be loaded"
-+#: nscd/nscd_stat.c:154
-+#, c-format
-+msgid ""
-+"\n"
-+"%s cache:\n"
-+"\n"
-+"%15s cache is enabled\n"
-+"%15Zd suggested size\n"
-+"%15ld seconds time to live for positive entries\n"
-+"%15ld seconds time to live for negative entries\n"
-+"%15ld cache hits on positive entries\n"
-+"%15ld cache hits on negative entries\n"
-+"%15ld cache misses on positive entries\n"
-+"%15ld cache misses on negative entries\n"
-+"%15ld%% cache hit rate\n"
-+"%15s check /etc/%s for changes\n"
- msgstr ""
-
--#: locale/programs/charmap.c:637
--msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
--msgstr ""
-+#: nscd/pwdcache.c:214
-+#, c-format
-+msgid "Haven't found \"%s\" in password cache!"
-+msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%s¡±£¡"
-
--#: locale/programs/ld-collate.c:1018 locale/programs/ld-collate.c:1188
-+#: nscd/pwdcache.c:280
- #, c-format
--msgid "order for `%.*s' already defined at %s:%Zu"
-+msgid "Invalid numeric uid \"%s\"!"
- msgstr ""
-
--#: inet/ruserpass.c:170 inet/ruserpass.c:193
--msgid "out of memory"
--msgstr "ÄÚ´æ²»×ã"
-+#: nscd/pwdcache.c:287
-+#, c-format
-+msgid "Haven't found \"%d\" in password cache!"
-+msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%d¡±£¡"
-
--#: iconv/iconv_prog.c:66
--msgid "output file"
--msgstr "Êä³öÎļþ"
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
-+msgid "cannot create capability list"
-+msgstr "ÎÞ·¨´´½¨¹¦ÄÜÁбí"
-
--#: posix/../sysdeps/generic/wordexp.c:1801
--msgid "parameter null or not set"
--msgstr "²ÎÊýΪ null »òδÉèÖÃ"
-+#: elf/../sysdeps/generic/readelflib.c:35
-+#, c-format
-+msgid "file %s is truncated\n"
-+msgstr "Îļþ %s ¼º±»½Ø¶Ï\n"
-
--#: sunrpc/pm_getmaps.c:74
--msgid "pmap_getmaps rpc problem"
--msgstr ""
-+#: elf/../sysdeps/generic/readelflib.c:67
-+#, c-format
-+msgid "%s is a 32 bit ELF file.\n"
-+msgstr "%s ÊÇÒ»¸ö 32 λ ELF Îļþ¡£\n"
-
--#: inet/rcmd.c:293
--msgid "poll: protocol failure in circuit setup\n"
--msgstr ""
-+#: elf/../sysdeps/generic/readelflib.c:69
-+#, c-format
-+msgid "%s is a 64 bit ELF file.\n"
-+msgstr "%s ÊÇÒ»¸ö 64 λ ELF Îļþ¡£\n"
-
--#: locale/programs/ld-ctype.c:1950 locale/programs/ld-ctype.c:2001
--msgid "premature end of `translit_ignore' definition"
--msgstr ""
-+#: elf/../sysdeps/generic/readelflib.c:71
-+#, c-format
-+msgid "Unknown ELFCLASS in file %s.\n"
-+msgstr "Îļþ %s ÖÐδ֪µÄ ELFCLASS¡£\n"
-
--#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
--msgid "preprocessor error"
--msgstr "Ô¤´¦Àí´íÎó"
-+#: elf/../sysdeps/generic/readelflib.c:78
-+#, c-format
-+msgid "%s is not a shared object file (Type: %d).\n"
-+msgstr "%s ²»Êǹ²ÏíÄ¿±êÎļþ (ÀàÐÍ£º%d)¡£\n"
-
--#: locale/programs/ld-ctype.c:2733
--msgid "previous definition was here"
--msgstr "Ç°Ò»¸ö¶¨ÒåÔÚÕâÀï"
-+#: elf/../sysdeps/generic/readelflib.c:109
-+msgid "more than one dynamic segment\n"
-+msgstr "¶àÓÚÒ»¸ö¶¯Ì¬¶Î\n"
-
--#: elf/sprof.c:74
--msgid "print list of count paths and their number of use"
--msgstr "´òÓ¡µ±Ç°Â·¾¶µÄÁбíºÍËûÃǵÄʹÓôÎÊý"
-+#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
-+#, c-format
-+msgid "%s is for unknown machine %d.\n"
-+msgstr "%s ÓÃÓÚδ֪µÄ»úÆ÷ %d¡£\n"
-
--#: iconv/iconv_prog.c:68
--msgid "print progress information"
--msgstr "´òÓ¡½ø¶ÈÐÅÏ¢"
-+#: elf/cache.c:69
-+msgid "unknown"
-+msgstr "δ֪"
-+
-+#: elf/cache.c:105
-+msgid "Unknown OS"
-+msgstr "δ֪µÄ²Ù×÷ϵͳ"
-+
-+#: elf/cache.c:110
-+#, c-format
-+msgid ", OS ABI: %s %d.%d.%d"
-+msgstr ""
-
--#: elf/sprof.c:687
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
--msgid "profiling data file `%s' does not match shared object `%s'"
-+msgid "Can't open cache file %s\n"
-+msgstr "ÎÞ·¨´ò¿ª»º³åÎļþ %s\n"
-+
-+#: elf/cache.c:148
-+msgid "mmap of cache file failed.\n"
- msgstr ""
-
--#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
--#, c-format
--msgid "program %lu is not available\n"
--msgstr "³ÌÐò %lu ²»¿ÉÓÃ\n"
-+#: elf/cache.c:152 elf/cache.c:162
-+msgid "File is not a cache file.\n"
-+msgstr "Îļþ²»ÊÇ»º³åÇøÎļþ¡£\n"
-
--#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
--#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
--#: sunrpc/rpcinfo.c:510
-+#: elf/cache.c:195 elf/cache.c:205
- #, c-format
--msgid "program %lu version %lu is not available\n"
--msgstr "³ÌÐò %lu °æ±¾ %lu ²»¿ÉÓÃ\n"
-+msgid "%d libs found in cache `%s'\n"
-+msgstr "ÔÚ»º³åÇø¡°%2$s¡±ÖÐÕÒµ½ %1$d ¸ö¿â\n"
-
--#: sunrpc/rpcinfo.c:515
-+#: elf/cache.c:392
- #, c-format
--msgid "program %lu version %lu ready and waiting\n"
--msgstr "³ÌÐò %lu °æ±¾ %lu ¾ÍÐ÷²¢µÈ´ý\n"
-+msgid "Can't remove old temporary cache file %s"
-+msgstr "ÎÞ·¨É¾³ý¾ÉÁÙʱ»º³åÎļþ %s"
-
--#: inet/rcmd.c:354
-+#: elf/cache.c:399
- #, c-format
--msgid "rcmd: %s: short read"
--msgstr ""
-+msgid "Can't create temporary cache file %s"
-+msgstr "ÎÞ·¨´´½¨ÁÙʱ»º³åÎļþ %s"
-
--#: inet/rcmd.c:290
--#, c-format
--msgid "rcmd: poll (setting up stderr): %m\n"
-+#: elf/cache.c:407 elf/cache.c:416 elf/cache.c:420
-+msgid "Writing of cache data failed"
- msgstr ""
-
--#: inet/rcmd.c:172 inet/rcmd.c:175
--msgid "rcmd: socket: All ports in use\n"
-+#: elf/cache.c:424
-+msgid "Writing of cache data failed."
- msgstr ""
-
--#: inet/rcmd.c:270
-+#: elf/cache.c:431
- #, c-format
--msgid "rcmd: write (setting up stderr): %m\n"
-+msgid "Changing access rights of %s to %#o failed"
-+msgstr "½« %s µÄ·ÃÎÊȨÏ޸ıäΪ %#o ʧ°Ü"
-+
-+#: elf/cache.c:436
-+#, c-format
-+msgid "Renaming of %s to %s failed"
-+msgstr "½« %s ¸ÄÃûΪ %s ʧ°Ü"
-+
-+#: elf/dl-close.c:128
-+msgid "shared object not open"
-+msgstr "¹²Ïí¿âδ´ò¿ª"
-+
-+#: elf/dl-close.c:486 elf/dl-open.c:444
-+msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
-
--#: sunrpc/svc_simple.c:112
--msgid "registerrpc: out of memory\n"
--msgstr "registerrpc£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
-+msgid "DST not allowed in SUID/SGID programs"
-+msgstr ""
-
--#: timezone/zic.c:1880
--msgid "repeated leap second moment"
-+#: elf/dl-deps.c:124
-+msgid "empty dynamics string token substitution"
- msgstr ""
-
--#: locale/programs/repertoire.c:342
-+#: elf/dl-deps.c:130
- #, c-format
--msgid "repertoire map file `%s' not found"
-+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
- msgstr ""
-
--#: locale/programs/charmap.c:1068
--msgid "resulting bytes for range not representable."
-+#: elf/dl-deps.c:461
-+msgid "cannot allocate dependency list"
-+msgstr "ÎÞ·¨·ÖÅäÒÐÀµÁбí"
-+
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
-+msgid "cannot allocate symbol search list"
-+msgstr "ÎÞ·¨·ÖÅä·ûºÅËÑË÷Áбí"
-+
-+#: elf/dl-deps.c:534
-+msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr ""
-
--#: sunrpc/rpc_main.c:1117
--msgid "rpcgen: arglist coding error\n"
-+#: elf/dl-error.c:75
-+msgid "DYNAMIC LINKER BUG!!!"
- msgstr ""
-
--#: sunrpc/rpc_main.c:1105
--msgid "rpcgen: too many defines\n"
--msgstr "rpcgen£º¶¨Òå¹ý¶à\n"
-+#: elf/dl-error.c:108
-+msgid "error while loading shared libraries"
-+msgstr "×°Èë¹²Ïí¿âʱ³ö´í"
-
--#: sunrpc/rpcinfo.c:732
--#, c-format
--msgid "rpcinfo: %s is unknown host\n"
--msgstr "rpcinfo£º%s ÊÇδ֪µÄÖ÷»ú\n"
-+#: elf/dl-load.c:339
-+msgid "cannot allocate name record"
-+msgstr "ÎÞ·¨·ÖÅäÃû¼Ç¼"
-
--#: sunrpc/rpcinfo.c:695
--#, c-format
--msgid "rpcinfo: %s is unknown service\n"
--msgstr "rpcinfo£º%s ÊÇδ֪µÄ·þÎñ\n"
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
-+msgid "cannot create cache for search path"
-+msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶»º³åÆ÷"
-
--#: sunrpc/rpcinfo.c:665
--#, c-format
--msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
--msgstr "rpcinfo£ºÎÞ·¨É¾³ý³ÌÐò %s °æ±¾ %s µÄ×¢²á\n"
-+#: elf/dl-load.c:543
-+msgid "cannot create RUNPATH/RPATH copy"
-+msgstr "ÎÞ·¨´´½¨ RUNPATH/RPATH µÄ¸±±¾"
-
--#: sunrpc/rpcinfo.c:637
--#, c-format
--msgid "rpcinfo: broadcast failed: %s\n"
--msgstr "rpcinfo£º¹ã²¥Ê§°Ü£º%s\n"
-+#: elf/dl-load.c:598
-+msgid "cannot create search path array"
-+msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
-
--#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
--msgid "rpcinfo: can't contact portmapper"
--msgstr "rpcinfo£ºÎÞ·¨Í¬ portmapper ½»»¥"
-+#: elf/dl-load.c:794
-+msgid "cannot stat shared object"
-+msgstr "ÎÞ·¨¶Ô¹²ÏíÄ¿±ê½øÐÐ stat ²Ù×÷"
-
--#: timezone/zic.c:749 timezone/zic.c:751
--msgid "same rule name in multiple files"
--msgstr "¶à¸öÎļþÖеÄÏàͬ¹æÔòÃû"
-+#: elf/dl-load.c:838
-+msgid "cannot open zero fill device"
-+msgstr "ÎÞ·¨´ò¿ªÁãÌî³äÉ豸"
-
--#: elf/dl-load.c:1104
--msgid "shared object cannot be dlopen()ed"
--msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¿â"
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
-+msgid "cannot create shared object descriptor"
-+msgstr "ÎÞ·¨´´½¨¹²Ïí¶ÔÏóÃèÊö·û"
-
--#: elf/dl-close.c:61
--msgid "shared object not open"
--msgstr "¹²Ïí¿âδ´ò¿ª"
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
-+msgid "cannot read file data"
-+msgstr "ÎÞ·¨¶ÁÈëÎļþÊý¾Ý"
-
--#: nscd/connections.c:493
--#, c-format
--msgid "short read while reading request key: %s"
-+#: elf/dl-load.c:906
-+msgid "ELF load command alignment not page-aligned"
- msgstr ""
-
--#: nscd/connections.c:443
--#, c-format
--msgid "short read while reading request: %s"
-+#: elf/dl-load.c:913
-+msgid "ELF load command address/offset not properly aligned"
-+msgstr "ELF ×°ÈëÃüÁîµÄµØÖ·/Æ«ÒÆÁ¿Ã»ÓÐÕýÈ·µØ¶ÔÆë"
-+
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
- msgstr ""
-
--#: nscd/grpcache.c:193 nscd/hstcache.c:278 nscd/pwdcache.c:189
--#, c-format
--msgid "short write in %s: %s"
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "ÎÞ·¨´¦Àí TLS Êý¾Ý"
-+
-+#: elf/dl-load.c:1047
-+msgid "failed to map segment from shared object"
- msgstr ""
-
--#: inet/rcmd.c:335
--msgid "socket: protocol failure in circuit setup\n"
-+#: elf/dl-load.c:1071
-+msgid "cannot dynamically load executable"
-+msgstr "ÎÞ·¨¶¯Ì¬×°Èë¿ÉÖ´ÐÐÎļþ"
-+
-+#: elf/dl-load.c:1132
-+msgid "cannot change memory protections"
-+msgstr "ÎÞ·¨¸Ä±äÄÚ´æ±£»¤"
-+
-+#: elf/dl-load.c:1151
-+msgid "cannot map zero-fill pages"
- msgstr ""
-
--#: timezone/zic.c:820
--msgid "standard input"
--msgstr "±ê×¼ÊäÈë"
-+#: elf/dl-load.c:1169
-+msgid "cannot allocate memory for program header"
-+msgstr "ÎÞ·¨Îª³ÌÐòÍ··ÖÅäÄÚ´æ"
-
--#: locale/programs/ld-ctype.c:1681
--msgid "start and end character sequence of range must have the same length"
--msgstr "·¶Î§µÄÆðʼºÍÖÕÖ¹×Ö·ûÐòÁбØÐë¾ßÓÐÏàͬµÄ³¤¶È"
-+#: elf/dl-load.c:1200
-+msgid "object file has no dynamic section"
-+msgstr "Ä¿±êÎļþûÓж¯Ì¬½Ú"
-
--#: timezone/zic.c:1331
--msgid "starting year greater than ending year"
--msgstr "ÆðʼÄê·Ý´óÓÚÖÕÖ¹Äê·Ý"
-+#: elf/dl-load.c:1240
-+msgid "shared object cannot be dlopen()ed"
-+msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¿â"
-
--#: timezone/zic.c:1303 timezone/zic.c:1328
--msgid "starting year too high to be represented"
-+#: elf/dl-load.c:1263
-+msgid "cannot create searchlist"
-+msgstr "ÎÞ·¨´´½¨ËÑË÷Áбí"
-+
-+#: elf/dl-load.c:1398
-+msgid "file too short"
-+msgstr "Îļþ¹ý¶Ì"
-+
-+#: elf/dl-load.c:1421
-+msgid "invalid ELF header"
-+msgstr "ÎÞЧµÄ ELF Í·"
-+
-+#: elf/dl-load.c:1430
-+msgid "ELF file data encoding not big-endian"
- msgstr ""
-
--#: timezone/zic.c:1301 timezone/zic.c:1326
--msgid "starting year too low to be represented"
-+#: elf/dl-load.c:1432
-+msgid "ELF file data encoding not little-endian"
- msgstr ""
-
--#: iconv/iconv_prog.c:67
--msgid "suppress warnings"
-+#: elf/dl-load.c:1436
-+msgid "ELF file version ident does not match current one"
- msgstr ""
-
--#: sunrpc/svc_run.c:76
--msgid "svc_run: - poll failed"
-+#: elf/dl-load.c:1440
-+msgid "ELF file OS ABI invalid"
- msgstr ""
-
--#: sunrpc/svc_tcp.c:171
--msgid "svc_tcp.c - cannot getsockname or listen"
--msgstr "svc_tcp.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
-+#: elf/dl-load.c:1442
-+msgid "ELF file ABI version invalid"
-+msgstr ""
-
--#: sunrpc/svc_tcp.c:156
--msgid "svc_tcp.c - tcp socket creation problem"
--msgstr "svc_tcp.c - tcp Ì×½Ó×Ö´´½¨ÎÊÌâ"
-+#: elf/dl-load.c:1445
-+msgid "internal error"
-+msgstr "ÄÚ²¿´íÎó"
-
--#: sunrpc/svc_tcp.c:224 sunrpc/svc_tcp.c:227
--msgid "svc_tcp: makefd_xprt: out of memory\n"
--msgstr "svc_tcp£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-load.c:1452
-+msgid "ELF file version does not match current one"
-+msgstr "ELF Îļþ°æ±¾Ó뵱ǰ°æ±¾²»Æ¥Åä"
-
--#: sunrpc/svc_unix.c:150
--msgid "svc_unix.c - AF_UNIX socket creation problem"
--msgstr "svc_unix.c - AF_UNIX Ì×½Ó×Ö´´½¨ÎÊÌâ"
-+#: elf/dl-load.c:1460
-+msgid "ELF file's phentsize not the expected size"
-+msgstr ""
-
--#: sunrpc/svc_unix.c:166
--msgid "svc_unix.c - cannot getsockname or listen"
--msgstr "svc_unix.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
-+#: elf/dl-load.c:1466
-+msgid "only ET_DYN and ET_EXEC can be loaded"
-+msgstr ""
-
--#: sunrpc/svc_unix.c:220 sunrpc/svc_unix.c:223
--msgid "svc_unix: makefd_xprt: out of memory\n"
--msgstr "svc_unix£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-load.c:1917
-+msgid "cannot open shared object file"
-+msgstr "ÎÞ·¨´ò¿ª¹²Ïí¶ÔÏóÎļþ"
-
--#: sunrpc/svc_tcp.c:182 sunrpc/svc_tcp.c:185
--msgid "svctcp_create: out of memory\n"
--msgstr "svctcp_create£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
-+msgid "relocation error"
-+msgstr "Öض¨Î»´íÎó"
-
--#: sunrpc/svc_udp.c:143
--msgid "svcudp_create - cannot getsockname"
--msgstr "svcudp_create - ÎÞ·¨µ÷Óà getsockname"
-+#: elf/dl-open.c:111
-+msgid "cannot extend global scope"
-+msgstr "ÎÞ·¨À©Õ¹È«¾Ö·¶Î§"
-
--#: sunrpc/svc_udp.c:155 sunrpc/svc_udp.c:158
--msgid "svcudp_create: out of memory\n"
--msgstr "svcudp_create£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-open.c:214
-+msgid "empty dynamic string token substitution"
-+msgstr ""
-
--#: sunrpc/svc_udp.c:129
--msgid "svcudp_create: socket creation problem"
--msgstr "svcudp_create: Ì×½Ó×Ö´´½¨ÎÊÌâ"
-+#: elf/dl-open.c:351 elf/dl-open.c:362
-+msgid "cannot create scope list"
-+msgstr "ÎÞ·¨´´½¨·¶Î§Áбí"
-+
-+#: elf/dl-open.c:424
-+msgid "cannot create TLS data structures"
-+msgstr "ÎÞ·¨´´½¨ TLS Êý¾Ý½á¹¹"
-
--#: sunrpc/svc_udp.c:179 sunrpc/svc_udp.c:182
--msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
--msgstr "svcudp_create£ºxp_pad ¶Ô IP_PKTINFO À´ËµÌ«Ð¡\n"
-+#: elf/dl-open.c:486
-+msgid "invalid mode for dlopen()"
-+msgstr "ÎÞЧµÄ dlopen() ģʽ"
-
--#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
--msgid "svcunix_create: out of memory\n"
--msgstr "svcunix_create£ºÄÚ´æ²»×ã\n"
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¶ÔÏ󣺾²Ì¬ TLS ÄÚ´æ¹ýС"
-
--#: locale/programs/linereader.c:750
--#, c-format
--msgid "symbol `%.*s' not in charmap"
-+#: elf/dl-reloc.c:118
-+msgid "cannot make segment writable for relocation"
- msgstr ""
-
--#: locale/programs/linereader.c:771
-+#: elf/dl-reloc.c:219
- #, c-format
--msgid "symbol `%.*s' not in repertoire map"
-+msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1630 locale/programs/ld-collate.c:1729
--#, c-format
--msgid "symbol `%s'"
--msgstr "·ûºÅ¡°%s¡±"
--
--#: locale/programs/ld-collate.c:1627 locale/programs/ld-collate.c:1726
-+#: elf/dl-reloc.c:231
- #, c-format
--msgid "symbol `%s' has the same encoding as"
-+msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr ""
-
--#: locale/programs/ld-collate.c:1552
--#, c-format
--msgid "symbol `%s' not defined"
--msgstr "·ûºÅ¡°%s¡±Î´¶¨Òå"
-+#: elf/dl-reloc.c:246
-+#, fuzzy
-+msgid "cannot restore segment prot after reloc"
-+msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
-
--#: locale/programs/ld-ctype.c:1956 locale/programs/ld-ctype.c:2007
--#: locale/programs/ld-ctype.c:2049
--msgid "syntax error"
--msgstr "Óï·¨´íÎó"
-+#: elf/dl-sym.c:74 elf/dl-sym.c:145
-+msgid "RTLD_NEXT used in code not dynamically loaded"
-+msgstr ""
-
--#: locale/programs/charmap.c:492 locale/programs/charmap.c:546
--#: locale/programs/charmap.c:578 locale/programs/charmap.c:672
--#: locale/programs/charmap.c:727 locale/programs/charmap.c:768
--#: locale/programs/charmap.c:809
--#, c-format
--msgid "syntax error in %s definition: %s"
--msgstr "%s µÄ¶¨ÒåÖеÄÓï·¨´íÎó£º%s"
-+#: elf/dl-version.c:302
-+msgid "cannot allocate version reference table"
-+msgstr "ÎÞ·¨·ÖÅä°æ±¾ÒýÓñí¸ñ"
-
--#: locale/programs/charmap.c:351 locale/programs/charmap.c:368
--#: locale/programs/repertoire.c:175
--#, c-format
--msgid "syntax error in prolog: %s"
--msgstr ""
-+#: elf/ldconfig.c:122
-+msgid "Print cache"
-+msgstr "´òÓ¡»º³åÇø"
-
--#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
--#: locale/programs/repertoire.c:296
--#, c-format
--msgid "syntax error in repertoire map definition: %s"
--msgstr ""
-+#: elf/ldconfig.c:123
-+msgid "Generate verbose messages"
-+msgstr "Éú³ÉÏêϸÏûÏ¢"
-
--#: locale/programs/locfile.c:245
--msgid "syntax error: not inside a locale definition section"
--msgstr "Óï·¨´íÎ󣺲»ÔÚÇøÓò¶¨Òå½ÚÖ®ÖÐ"
-+#: elf/ldconfig.c:124
-+msgid "Don't build cache"
-+msgstr "²»Òª´´½¨»º³åÇø"
-
--#: catgets/gencat.c:432 catgets/gencat.c:605 catgets/gencat.c:634
--msgid "this is the first definition"
--msgstr "ÕâÊǵÚÒ»¸ö¶¨Òå"
-+#: elf/ldconfig.c:125
-+msgid "Don't generate links"
-+msgstr "²»ÒªÉú³ÉÁ¬½Ó"
-
--#: timezone/zic.c:1163
--msgid "time before zero"
--msgstr ""
-+#: elf/ldconfig.c:126
-+msgid "Change to and use ROOT as root directory"
-+msgstr "½øÈë ROOT Ŀ¼²¢½«Æä×÷Ϊ¸ùĿ¼"
-
--#: timezone/zic.c:1171 timezone/zic.c:2048 timezone/zic.c:2067
--msgid "time overflow"
--msgstr "ʱ¼äÒç³ö"
-+#: elf/ldconfig.c:127
-+msgid "Use CACHE as cache file"
-+msgstr "½« CACHE ÓÃ×÷»º³åÇøÎļþ"
-
--#: locale/programs/ld-ctype.c:1554 locale/programs/ld-ctype.c:2030
--#, c-format
--msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
--msgstr ""
-+#: elf/ldconfig.c:128
-+msgid "Use CONF as configuration file"
-+msgstr "½« CONF ÓÃ×÷ÅäÖÃÎļþ"
-
--#: locale/programs/ld-ctype.c:1688
--msgid "to-value character sequence is smaller than from-value sequence"
--msgstr ""
-+#: elf/ldconfig.c:129
-+msgid "Only process directories specified on the command line. Don't build cache."
-+msgstr "Ö»ÔÚÃüÁîÐÐÖиø³öÁ˽ø³ÌĿ¼¡£Î´´´½¨»º³åÇø¡£"
-
--#: locale/programs/charmap.c:556
--msgid "too few bytes in character encoding"
--msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ýÉÙ"
-+#: elf/ldconfig.c:130
-+msgid "Manually link individual libraries."
-+msgstr "ÊÖ¹¤Á¬½Ó¶ÀÁ¢µÄ¿â¡£"
-
--#: locale/programs/charmap.c:558
--msgid "too many bytes in character encoding"
--msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ý¶à"
-+#: elf/ldconfig.c:131
-+msgid "Format to use: new, old or compat (default)"
-+msgstr "²ÉÓõĸñʽ£ºÐ¡¢¾É»ò¼æÈÝ(ĬÈÏ)"
-
--#: timezone/zic.c:1874
--msgid "too many leap seconds"
-+#: elf/ldconfig.c:136
-+msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr ""
-
--#: timezone/zic.c:1846
--msgid "too many local time types"
--msgstr "¹ý¶àµÄ±¾µØʱ¼äÀàÐÍ"
-+#: elf/ldconfig.c:294
-+#, c-format
-+msgid "Path `%s' given more than once"
-+msgstr "¶à´Î¸ø³ö·¾¶¡°%s¡±"
-
--#: timezone/zic.c:1800
--msgid "too many transitions?!"
--msgstr ""
-+#: elf/ldconfig.c:338
-+#, c-format
-+msgid "%s is not a known library type"
-+msgstr "%s ²»ÊÇÒÑÖªÀàÐ͵Ŀâ"
-
--#: timezone/zic.c:2171
--msgid "too many, or too long, time zone abbreviations"
--msgstr "¹ý¶à»ò¹ý³¤µÄʱÇøËõд"
-+#: elf/ldconfig.c:356
-+#, c-format
-+msgid "Can't stat %s"
-+msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
-
--#: locale/programs/linereader.h:160
--msgid "trailing garbage at end of line"
--msgstr ""
-+#: elf/ldconfig.c:426
-+#, c-format
-+msgid "Can't stat %s\n"
-+msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷\n"
-
--#: sunrpc/svc_simple.c:175
-+#: elf/ldconfig.c:436
- #, c-format
--msgid "trouble replying to prog %d\n"
--msgstr ""
-+msgid "%s is not a symbolic link\n"
-+msgstr "%s ²»ÊÇ·ûºÅÁ¬½Ó\n"
-
--#: timezone/zic.c:1338
--msgid "typed single year"
-+#: elf/ldconfig.c:455
-+#, c-format
-+msgid "Can't unlink %s"
- msgstr ""
-
--#: iconv/iconv_charmap.c:524 iconv/iconv_prog.c:533
--msgid "unable to allocate buffer for input"
--msgstr "ÎÞ·¨ÎªÊäÈë·ÖÅ仺³åÇø"
--
--#: nis/nis_callback.c:189
--msgid "unable to free arguments"
--msgstr "ÎÞ·¨ÊͷŲÎÊý"
-+#: elf/ldconfig.c:461
-+#, c-format
-+msgid "Can't link %s to %s"
-+msgstr "ÎÞ·¨½« %s Á¬½Óµ½ %s"
-
--#: posix/getconf.c:968 posix/getconf.c:984
--msgid "undefined"
--msgstr "䶨Òå"
-+#: elf/ldconfig.c:467
-+msgid " (changed)\n"
-+msgstr " (¸Ä±ä)\n"
-
--#: elf/cache.c:69
--msgid "unknown"
--msgstr "δ֪"
-+#: elf/ldconfig.c:469
-+msgid " (SKIPPED)\n"
-+msgstr " (Ìø¹ý)\n"
-
--#: locale/programs/charmap.c:861 locale/programs/charmap.c:872
-+#: elf/ldconfig.c:524
- #, c-format
--msgid "unknown character `%s'"
--msgstr "δ֪µÄ×Ö·û¡°%s¡±"
-+msgid "Can't find %s"
-+msgstr "ÎÞ·¨ÕÒµ½ %s"
-
--#: catgets/gencat.c:562
-+#: elf/ldconfig.c:540
- #, c-format
--msgid "unknown directive `%s': line ignored"
--msgstr "δ֪µÄÖ¸Áî¡°%s¡±£ººöÂÔ´ËÐÐ"
-+msgid "Can't lstat %s"
-+msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
-
--#: iconv/iconv_prog.c:480
-+#: elf/ldconfig.c:547
- #, c-format
--msgid "unknown iconv() error %d"
--msgstr "δ֪µÄ iconv() ´íÎó %d"
-+msgid "Ignored file %s since it is not a regular file."
-+msgstr ""
-
--#: catgets/gencat.c:508
-+#: elf/ldconfig.c:555
- #, c-format
--msgid "unknown set `%s'"
--msgstr "δ֪¼¯ºÏ¡°%s¡±"
-+msgid "No link created since soname could not be found for %s"
-+msgstr ""
-
--#: posix/getconf.c:941
-+#: elf/ldconfig.c:646
- #, c-format
--msgid "unknown specification \"%s\""
--msgstr "δ֪µÄ¹æ·¶¡°%s¡±"
-+msgid "Can't open directory %s"
-+msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼ %s"
-
--#: timezone/zic.c:792
--msgid "unruly zone"
--msgstr ""
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
-+#, c-format
-+msgid "Cannot lstat %s"
-+msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
-
--#: catgets/gencat.c:1174
--msgid "unterminated message"
--msgstr "δÖÕÖ¹µÄÏûÏ¢"
-+#: elf/ldconfig.c:713
-+#, c-format
-+msgid "Cannot stat %s"
-+msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
-
--#: locale/programs/linereader.c:604 locale/programs/linereader.c:789
--msgid "unterminated string"
--msgstr "δÖÕÖ¹µÄ×Ö·û´®"
-+#: elf/ldconfig.c:770 elf/readlib.c:93
-+#, c-format
-+msgid "Input file %s not found.\n"
-+msgstr "δÕÒµ½ÊäÈëÎļþ %s¡£\n"
-
--#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
--msgid "unterminated string constant"
--msgstr "δÖÕÖ¹µÄ×Ö·û´®³£Á¿"
-+#: elf/ldconfig.c:804
-+#, c-format
-+msgid "libc5 library %s in wrong directory"
-+msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-
--#: locale/programs/linereader.c:474
--msgid "unterminated symbolic name"
--msgstr "δÖÕÖ¹µÄ·ûºÅÃû"
-+#: elf/ldconfig.c:807
-+#, c-format
-+msgid "libc6 library %s in wrong directory"
-+msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-
--#: locale/programs/charmap.c:1010
--msgid "upper limit in range is not higher then lower limit"
--msgstr "·¶Î§µÄÉÏÏÞ²¢²»¸ßÓÚÏÂÏÞ"
-+#: elf/ldconfig.c:810
-+#, c-format
-+msgid "libc4 library %s in wrong directory"
-+msgstr "libc4 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
-
--#: locale/programs/repertoire.c:455
--msgid "upper limit in range is not smaller then lower limit"
--msgstr "·¶Î§µÄÉÏÏÞ²¢²»Ð¡ÓÚÏÂÏÞ"
-+#: elf/ldconfig.c:837
-+#, c-format
-+msgid "libraries %s and %s in directory %s have same soname but different type."
-+msgstr "Ŀ¼ %3$s ÖÐµÄ %1$s ºÍ %2$s µÄ so Ãû³ÆÏàͬµ«ÀàÐͲ»Í¬¡£"
-
--#: sunrpc/rpc_main.c:1426
-+#: elf/ldconfig.c:940
- #, c-format
--msgid "usage: %s infile\n"
--msgstr "Ó÷¨£º%s ÊäÈëÎļþ\n"
-+msgid "Can't open configuration file %s"
-+msgstr "ÎÞ·¨´ò¿ªÅäÖÃÎļþ %s"
-
--#: timezone/zic.c:2114
--msgid "use of 2/29 in non leap-year"
--msgstr ""
-+#: elf/ldconfig.c:1024
-+msgid "Can't chdir to /"
-+msgstr "ÎÞ·¨¸Ä±äĿ¼µ½ /"
-
--#: locale/programs/charmap.c:645 locale/programs/charmap.c:708
-+#: elf/ldconfig.c:1066
- #, c-format
--msgid "value for %s must be an integer"
--msgstr "%s µÄÖµ±ØÐëΪÕûÊý"
-+msgid "Can't open cache file directory %s\n"
-+msgstr "ÎÞ·¨´ò¿ª»º³åÎļþĿ¼ %s\n"
-
--#: locale/programs/charmap.c:404
-+#: elf/readlib.c:99
- #, c-format
--msgid "value for <%s> must be 1 or greater"
--msgstr "<%s>µÄÖµ±ØÐëÊÇ 1 »ò¸ü´ó"
-+msgid "Cannot fstat file %s.\n"
-+msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ fstat ²Ù×÷¡£\n"
-
--#: locale/programs/charmap.c:416
-+#: elf/readlib.c:109
- #, c-format
--msgid "value of <%s> must be greater or equal than the value of <%s>"
--msgstr "<%s> µÄÖµ±ØÐë´óÓÚµÈÓÚ <%s> µÄÖµ"
--
--#: timezone/zic.c:439
--msgid "warning: "
--msgstr "¾¯¸æ£º"
-+msgid "File %s is too small, not checked."
-+msgstr "Îļþ %s ¹ýС£¬Î´¼ì²é¡£"
-
--#: nscd/connections.c:432
-+#: elf/readlib.c:118
- #, c-format
--msgid "while accepting connection: %s"
--msgstr "½ÓÊÜÁ¬½Óʱ£º%s"
--
--#: nscd/grpcache.c:150 nscd/hstcache.c:165 nscd/pwdcache.c:143
--msgid "while allocating cache entry"
--msgstr "·ÖÅ仺³åÇøÌõĿʱ"
-+msgid "Cannot mmap file %s.\n"
-+msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ mmap ²Ù×÷¡£\n"
-
--#: nscd/cache.c:88
--msgid "while allocating hash table entry"
--msgstr "·ÖÅäÔÓ´Õ±íÌõĿʱ"
-+#: elf/readlib.c:158
-+#, c-format
-+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
-+msgstr "%s ²»ÊÇ ELF Îļþ - ËüÆðʼµÄħÊý´íÎó¡£\n"
-
--#: nscd/grpcache.c:100 nscd/hstcache.c:108 nscd/pwdcache.c:106
--msgid "while allocating key copy"
--msgstr "·ÖÅä¼ü¸±±¾Ê±"
-+#: elf/sprof.c:72
-+msgid "Output selection:"
-+msgstr "Êä³öÑ¡Ôñ£º"
-
--#: iconv/iconvconfig.c:369
--msgid "while inserting in search tree"
--msgstr "²åÈëËÑË÷Ê÷ʱ"
-+#: elf/sprof.c:74
-+msgid "print list of count paths and their number of use"
-+msgstr "´òÓ¡µ±Ç°Â·¾¶µÄÁбíºÍËûÃǵÄʹÓôÎÊý"
-
--#: catgets/gencat.c:1198
--msgid "while opening old catalog file"
-+#: elf/sprof.c:76
-+msgid "generate flat profile with counts and ticks"
- msgstr ""
-
--#: locale/programs/locale.c:353
--msgid "while preparing output"
--msgstr "×¼±¸Êä³öʱ"
-+#: elf/sprof.c:77
-+msgid "generate call graph"
-+msgstr "Éú³Éµ÷ÓÃͼ"
-
--#: elf/sprof.c:679
--msgid "while stat'ing profiling data file"
-+#: elf/sprof.c:84
-+msgid "Read and display shared object profiling data"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:2394
--msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
-+#: elf/sprof.c:87
-+msgid "SHOBJ [PROFDATA]"
- msgstr ""
-
--#: locale/programs/ld-ctype.c:2408
--msgid "with character code range values one must use the absolute ellipsis `...'"
--msgstr ""
-+#: elf/sprof.c:398
-+#, c-format
-+msgid "failed to load shared object `%s'"
-+msgstr "×°Èë¹²ÏíÄ¿±êÎļþ¡°%s¡±Ê§°Ü"
-
--#: locale/programs/ld-ctype.c:2379
--msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
--msgstr ""
-+#: elf/sprof.c:407
-+msgid "cannot create internal descriptors"
-+msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
-
--#: nscd/nscd_stat.c:116
--msgid "write incomplete"
--msgstr "дÈë²»ÍêÕû"
-+#: elf/sprof.c:526
-+#, c-format
-+msgid "Reopening shared object `%s' failed"
-+msgstr "ÖØÏÖ´ò¿ª¹²Ïí¶ÔÏó¡°%s¡±Ê§°Ü"
-
--#: inet/rcmd.c:516
--msgid "writeable by other than owner"
-+#: elf/sprof.c:534
-+msgid "mapping of section headers failed"
- msgstr ""
-
--#: nscd/nscd.c:123 nscd/nscd_nischeck.c:64 nss/getent.c:761
--msgid "wrong number of arguments"
--msgstr "²ÎÊý¸öÊý´íÎó"
--
--#: timezone/zic.c:1121
--msgid "wrong number of fields on Leap line"
-+#: elf/sprof.c:544
-+msgid "mapping of section header string table failed"
- msgstr ""
-
--#: timezone/zic.c:1212
--msgid "wrong number of fields on Link line"
--msgstr "Á¬½ÓÐÐÖÐÓòµÄ¸öÊý´íÎó"
-+#: elf/sprof.c:564
-+#, c-format
-+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
-+msgstr "*** Îļþ¡°%s¡±ÒÑ°þÀ룺²»¿ÉÄܽøÐÐϸ½Ú·ÖÎö\n"
-
--#: timezone/zic.c:955
--msgid "wrong number of fields on Rule line"
--msgstr "¹æÔòÐÐÖÐÓòµÄ¸öÊý´íÎó"
-+#: elf/sprof.c:594
-+msgid "failed to load symbol data"
-+msgstr "×°Èë·ûºÅÊý¾Ýʧ°Ü"
-
--#: timezone/zic.c:1025
--msgid "wrong number of fields on Zone continuation line"
-+#: elf/sprof.c:664
-+msgid "cannot load profiling data"
- msgstr ""
-
--#: timezone/zic.c:983
--msgid "wrong number of fields on Zone line"
--msgstr "ÇøÓòÐÐÖÐÓòµÄ¸öÊý´íÎó"
-+#: elf/sprof.c:673
-+msgid "while stat'ing profiling data file"
-+msgstr ""
-
--#: sunrpc/xdr_array.c:106 sunrpc/xdr_array.c:109
--msgid "xdr_array: out of memory\n"
--msgstr "xdr_array£ºÄÚ´æ²»×ã\n"
-+#: elf/sprof.c:681
-+#, c-format
-+msgid "profiling data file `%s' does not match shared object `%s'"
-+msgstr ""
-
--#: sunrpc/xdr.c:558 sunrpc/xdr.c:561
--msgid "xdr_bytes: out of memory\n"
--msgstr "xdr_bytes£ºÄÚ´æ²»×ã\n"
-+#: elf/sprof.c:692
-+msgid "failed to mmap the profiling data file"
-+msgstr ""
-
--#: sunrpc/xdr_ref.c:89 sunrpc/xdr_ref.c:92
--msgid "xdr_reference: out of memory\n"
--msgstr "xdr_reference£ºÄÚ´æ²»×ã\n"
-+#: elf/sprof.c:700
-+msgid "error while closing the profiling data file"
-+msgstr ""
-
--#: sunrpc/xdr.c:710 sunrpc/xdr.c:713
--msgid "xdr_string: out of memory\n"
--msgstr "xdr_string£ºÄÚ´æ²»×ã\n"
-+#: elf/sprof.c:709 elf/sprof.c:779
-+msgid "cannot create internal descriptor"
-+msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
-
--#: sunrpc/xdr_rec.c:155 sunrpc/xdr_rec.c:158
--msgid "xdrrec_create: out of memory\n"
--msgstr "xdrrec_create£ºÄÚ´æ²»×ã\n"
-+#: elf/sprof.c:755
-+#, c-format
-+msgid "`%s' is no correct profile data file for `%s'"
-+msgstr ""
-
--#: nis/ypclnt.c:909
--msgid "yp_update: cannot convert host to netname\n"
--msgstr "yp_update£ºÎÞ·¨½«Ö÷»úÃûת»»ÎªÍøÃû\n"
-+#: elf/sprof.c:936 elf/sprof.c:988
-+msgid "cannot allocate symbol data"
-+msgstr "ÎÞ·¨·ÖÅä·ûºÅÊý¾Ý"
-
--#: nis/ypclnt.c:921
--msgid "yp_update: cannot get server address\n"
--msgstr "yp_update£ºÎÞ·¨»ñÈ¡·þÎñÆ÷µØÖ·\n"
-+#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
-+#~ msgstr "\t\t\t\t\t\t\t %s£ºÓò¡°%s¡±µÄÖµ±ØÐë´¦ÓÚ·¶Î§ %d...%d Ö®ÄÚ"
---- glibc-2.3.2/posix/Makefile 2003-02-23 04:23:05.000000000 -0500
-+++ glibc-2.3.2/posix/Makefile 2003-09-19 22:37:05.000000000 -0400
-@@ -63,7 +63,8 @@
- spawnattr_getflags spawnattr_setflags \
- spawnattr_getpgroup spawnattr_setpgroup spawn spawnp spawni \
- spawnattr_getsigmask spawnattr_getschedpolicy spawnattr_getschedparam \
-- spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam
-+ spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam \
-+ posix_madvise
-
- include ../Makeconfig
-
-@@ -75,7 +76,8 @@
- tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
- tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
- bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
-- bug-regex13 bug-regex14 bug-regex15 bug-regex16
-+ bug-regex13 bug-regex14 bug-regex15 bug-regex16 tst-nice \
-+ tst-nanosleep transbug
- ifeq (yes,$(build-shared))
- test-srcs := globtest
- tests += wordexp-test tst-exec tst-spawn
-@@ -116,7 +118,27 @@
- endif
-
- CFLAGS-regex.c = -Wno-strict-prototypes
--CFLAGS-getaddrinfo.c = -DRESOLVER
-+CFLAGS-getaddrinfo.c = -DRESOLVER -fexceptions
-+CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-sleep.c = -fexceptions
-+CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-waitid.c = -fexceptions
-+CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-getopt.c = -fexceptions
-+CFLAGS-wordexp.c = -fexceptions
-+CFLAGS-sysconf.c = -fexceptions
-+CFLAGS-pathconf.c = -fexceptions
-+CFLAGS-fpathconf.c = -fexceptions
-+CFLAGS-spawn.c = -fexceptions
-+CFLAGS-spawnp.c = -fexceptions
-+CFLAGS-spawni.c = -fexceptions
-+CFLAGS-pause.c = -fexceptions
-+CFLAGS-glob.c = $(uses-callbacks) -fexceptions
-+CFLAGS-glob64.c = $(uses-callbacks) -fexceptions
-+
- tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
- --none random --col --color --colour
-
---- glibc-2.3.2/posix/Versions 2002-11-20 14:49:41.000000000 -0500
-+++ glibc-2.3.2/posix/Versions 2003-09-19 22:37:05.000000000 -0400
-@@ -110,14 +110,15 @@
- __nanosleep;
- }
- GLIBC_2.3.2 {
-- sched_getaffinity; sched_setaffinity;
--
- # Note that these symbols appear in sysdeps/unix/sysv/linux/Versions
- # under GLIBC_2.0; the first instance in the script is taken as the
- # default, so linux configurations put them in GLIBC_2.0 while other
- # configuration put them in GLIBC_2.3.2.
- getresuid; getresgid; setresuid; setresgid;
- }
-+ GLIBC_2.3.3 {
-+ sched_getaffinity; sched_setaffinity;
-+ }
- GLIBC_PRIVATE {
- # functions which have an additional interface since they are
- # are cancelable.
---- glibc-2.3.2/posix/bits/posix1_lim.h 2003-02-17 17:42:16.000000000 -0500
-+++ glibc-2.3.2/posix/bits/posix1_lim.h 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,93,96,98,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1993,96,98,2000,01,02,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
-@@ -60,7 +60,11 @@
- #define _POSIX_MQ_PRIO_MAX 32
-
- /* Number of simultaneous supplementary group IDs per process. */
--#define _POSIX_NGROUPS_MAX 0
-+#ifdef __USE_XOPEN2K
-+# define _POSIX_NGROUPS_MAX 8
-+#else
-+# define _POSIX_NGROUPS_MAX 0
-+#endif
-
- /* Number of files one process can have open at once. */
- #define _POSIX_OPEN_MAX 16
-@@ -135,7 +139,7 @@
- The current maximum can be got from `sysconf'. */
-
- #ifndef NGROUPS_MAX
--# define NGROUPS_MAX _POSIX_NGROUPS_MAX
-+# define NGROUPS_MAX 8
- #endif
-
- #endif /* bits/posix1_lim.h */
---- glibc-2.3.2/posix/bug-regex4.c 2002-07-27 04:20:58.000000000 -0400
-+++ glibc-2.3.2/posix/bug-regex4.c 2003-04-12 11:39:44.000000000 -0400
-@@ -43,9 +43,9 @@
- }
- else
- {
-- match[0] = re_search_2 (&regex, "xyabez", 6, "", 0, 1, 9, NULL, 10);
-+ match[0] = re_search_2 (&regex, "xyabez", 6, "", 0, 1, 5, NULL, 6);
- match[1] = re_search_2 (&regex, NULL, 0, "abc", 3, 0, 3, NULL, 3);
-- match[2] = re_search_2 (&regex, "xya", 3, "bd", 2, 2, 6, NULL, 8);
-+ match[2] = re_search_2 (&regex, "xya", 3, "bd", 2, 2, 3, NULL, 5);
- if (match[0] != 2 || match[1] != 0 || match[2] != 2)
- {
- printf ("re_search_2 returned %d,%d,%d, expected 2,0,2\n",
---- glibc-2.3.2/posix/confstr.c 2003-02-12 16:15:00.000000000 -0500
-+++ glibc-2.3.2/posix/confstr.c 2003-03-15 15:02:13.000000000 -0500
-@@ -143,12 +143,13 @@
-
- case _CS_GNU_LIBC_VERSION:
- string = "glibc " VERSION;
-- string_len = strlen (string);
-+ string_len = sizeof ("glibc " VERSION);
-+ break;
-
- case _CS_GNU_LIBPTHREAD_VERSION:
- #ifdef LIBPTHREAD_VERSION
- string = LIBPTHREAD_VERSION;
-- string_len = strlen (string);
-+ string_len = sizeof LIBPTHREAD_VERSION;
- break;
- #else
- /* No thread library. */
---- glibc-2.3.2/posix/fnmatch.c 2002-08-04 00:32:39.000000000 -0400
-+++ glibc-2.3.2/posix/fnmatch.c 2003-03-18 16:46:08.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991-93,96-99,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,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
-@@ -333,7 +334,7 @@
- /* Convert the strings into wide characters. */
- memset (&ps, '\0', sizeof (ps));
- n = mbsrtowcs (NULL, &pattern, 0, &ps);
-- if (__builtin_expect (n, 0) == (size_t) -1)
-+ if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
-@@ -344,7 +345,7 @@
-
- assert (mbsinit (&ps));
- n = mbsrtowcs (NULL, &string, 0, &ps);
-- if (__builtin_expect (n, 0) == (size_t) -1)
-+ if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
---- glibc-2.3.2/posix/fnmatch_loop.c 2002-03-11 03:32:00.000000000 -0500
-+++ glibc-2.3.2/posix/fnmatch_loop.c 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991-1993, 1996-2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,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
-@@ -539,11 +540,13 @@
- if (! is_range)
- {
- # ifdef WIDE_CHAR_VERSION
-- for (c1 = 0; c1 < wextra[idx]; ++c1)
-+ for (c1 = 0;
-+ (int32_t) c1 < wextra[idx];
-+ ++c1)
- if (n[c1] != wextra[1 + c1])
- break;
-
-- if (c1 == wextra[idx])
-+ if ((int32_t) c1 == wextra[idx])
- goto matched;
- # else
- for (c1 = 0; c1 < extra[idx]; ++c1)
-@@ -619,7 +622,7 @@
-
- # ifdef WIDE_CHAR_VERSION
- /* Search in the `names' array for the characters. */
-- fcollseq = collseq_table_lookup (collseq, fn);
-+ fcollseq = __collseq_table_lookup (collseq, fn);
- if (fcollseq == ~((uint32_t) 0))
- /* XXX We don't know anything about the character
- we are supposed to match. This means we are
-@@ -629,7 +632,7 @@
- if (is_seqval)
- lcollseq = cold;
- else
-- lcollseq = collseq_table_lookup (collseq, cold);
-+ lcollseq = __collseq_table_lookup (collseq, cold);
- # else
- fcollseq = collseq[fn];
- lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
-@@ -791,7 +794,7 @@
- {
- # ifdef WIDE_CHAR_VERSION
- hcollseq =
-- collseq_table_lookup (collseq, cend);
-+ __collseq_table_lookup (collseq, cend);
- if (hcollseq == ~((uint32_t) 0))
- {
- /* Hum, no information about the upper
-@@ -932,7 +935,7 @@
- case L('/'):
- if (NO_LEADING_PERIOD (flags))
- {
-- if (n == string_end || c != *n)
-+ if (n == string_end || c != (UCHAR) *n)
- return FNM_NOMATCH;
-
- new_no_leading_period = 1;
---- glibc-2.3.2/posix/getconf.c 2003-02-12 16:09:19.000000000 -0500
-+++ glibc-2.3.2/posix/getconf.c 2003-06-03 09:36:27.000000000 -0400
-@@ -865,6 +865,9 @@
- #ifdef _CS_GNU_LIBPTHREAD_VERSION
- { "GNU_LIBPTHREAD_VERSION", _CS_GNU_LIBPTHREAD_VERSION, CONFSTR },
- #endif
-+#ifdef _PC_2_SYMLINKS
-+ { "POSIX2_SYMLINKS", _PC_2_SYMLINKS, PATHCONF },
-+#endif
-
- { NULL, 0, SYSCONF }
- };
-@@ -954,7 +957,9 @@
- usage ();
-
- for (c = vars; c->name != NULL; ++c)
-- if (!strcmp (c->name, argv[1]))
-+ if (strcmp (c->name, argv[1]) == 0
-+ || (strncmp (c->name, "_POSIX_", 7) == 0
-+ && strcmp (c->name + 7, argv[1]) == 0))
- {
- long int value;
- size_t clen;
---- glibc-2.3.2/posix/getopt.c 2002-04-08 03:02:12.000000000 -0400
-+++ glibc-2.3.2/posix/getopt.c 2003-09-19 22:37:05.000000000 -0400
-@@ -2,7 +2,7 @@
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to drepper@gnu.org
- before changing it!
-- Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
-+ Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -692,12 +692,19 @@
- if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -761,11 +768,20 @@
- #if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2
-+ |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #endif
-@@ -792,11 +808,20 @@
- %s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2
-+ |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -861,11 +886,19 @@
- #if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #endif
-@@ -919,11 +952,19 @@
- #if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #endif
-@@ -962,11 +1003,19 @@
- _("%s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -1025,11 +1074,19 @@
- if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -1061,11 +1118,20 @@
- %s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2
-+ |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -1094,11 +1160,20 @@
- %s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2
-+ |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
-@@ -1160,11 +1235,19 @@
- %s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
-+ _IO_flockfile (stderr);
-+
-+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
-+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-+
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
-+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
-+ _IO_funlockfile (stderr);
-+
- free (buf);
- }
- #else
---- glibc-2.3.2/posix/getopt.h 2002-03-11 03:32:00.000000000 -0500
-+++ glibc-2.3.2/posix/getopt.h 2003-09-19 22:37:05.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Declarations for getopt.
-- Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1989-1994, 1996-1999,2001,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
-@@ -34,6 +34,14 @@
- # include <ctype.h>
- #endif
-
-+#ifndef __THROW
-+# if defined __cplusplus && __GNUC_PREREQ (2,8)
-+# define __THROW throw ()
-+# else
-+# define __THROW
-+# endif
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -142,7 +150,8 @@
- /* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
--extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
-+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
-+ __THROW;
- # else /* not __GNU_LIBRARY__ */
- extern int getopt ();
- # endif /* __GNU_LIBRARY__ */
-@@ -150,10 +159,12 @@
- # ifndef __need_getopt
- extern int getopt_long (int ___argc, char *const *___argv,
- const char *__shortopts,
-- const struct option *__longopts, int *__longind);
-+ const struct option *__longopts, int *__longind)
-+ __THROW;
- extern int getopt_long_only (int ___argc, char *const *___argv,
- const char *__shortopts,
-- const struct option *__longopts, int *__longind);
-+ const struct option *__longopts, int *__longind)
-+ __THROW;
-
- /* Internal only. Users should not call this directly. */
- extern int _getopt_internal (int ___argc, char *const *___argv,
---- glibc-2.3.2/posix/glob/ChangeLog 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/ChangeLog 2002-11-16 08:56:16.000000000 -0500
-@@ -0,0 +1,23 @@
-+Sat Jul 20 21:55:31 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ Win32 hacks from <Rob_Tulloh@tivoli.com>.
-+ * posix/glob.c [WIN32]: Don't include <pwd.h>; don't use d_ino;
-+ use void * for my_realloc; include <malloc.h> for alloca.
-+ (glob) [WIN32]: Use "c:/users/default" for ~ if no HOME variable.
-+ * posix/fnmatch.h [WIN32]: Use prototypes even if [!__STDC__].
-+ * posix/glob.h: Likewise.
-+
-+Fri Jul 19 16:56:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/glob.h [!_AMIGA && !VMS]: Check this instead of just [!_AMIGA]
-+ for `struct stat;' forward decl.
-+
-+Sat Jun 22 10:44:09 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/glob.c: Include <alloca.h> only [HAVE_ALLOCA_H], not [sparc].
-+
-+Fri Jun 21 00:27:51 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/fnmatch.c (fnmatch): Fix \*[*?]+ case to increment name ptr
-+ only for ?s, not for *s. Fix from Chet Ramey.
-+
---- glibc-2.3.2/posix/glob/Makefile.ami 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/Makefile.ami 2002-11-16 08:56:16.000000000 -0500
-@@ -0,0 +1,69 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+
-+# Copyright (C) 1991, 92, 93, 94, 95, 97 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+
-+# This 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 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; see the file COPYING.LIB. If not,
-+# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+# Boston, MA 02111-1307, USA.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = /glob/
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = /glob/
-+
-+CC = sc
-+RM = delete
-+CPPFLAGS =
-+CFLAGS =
-+
-+# Information determined by configure.
-+DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
-+ Define HAVE_DIRENT_H
-+
-+# How to invoke ar.
-+AR = join
-+ARFLAGS = as
-+
-+# How to invoke ranlib.
-+RANLIB = ;
-+
-+.PHONY: all
-+all: glob.lib
-+
-+glob.lib : glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)foo.c!!
-+glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-+fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-+
-+OUTPUT_OPTION =
-+.c.o:
-+ $(CC) IDir "" \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -$(RM) glob.lib "#?.o" core
-+distclean glob-realclean: clean
-+ -$(RM) TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
---- glibc-2.3.2/posix/glob/Makefile.in 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/Makefile.in 2002-11-16 08:56:16.000000000 -0500
-@@ -0,0 +1,66 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+
-+# Copyright (C) 1991, 92, 93, 94, 95 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+
-+# This 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 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 this library; see the file COPYING.LIB. If
-+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-+# Suite 330, Boston, MA 02111 USA.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = @srcdir@
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = @srcdir@
-+
-+CC = @CC@
-+CPPFLAGS = @CPPFLAGS@
-+CFLAGS = @CFLAGS@
-+
-+# Information determined by configure.
-+DEFS = @DEFS@
-+
-+# How to invoke ar.
-+AR = @AR@
-+ARFLAGS = rv
-+
-+# How to invoke ranlib.
-+RANLIB = @RANLIB@
-+
-+.PHONY: all
-+all: libglob.a
-+
-+libglob.a: glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)/foo.c!!
-+glob.o: $(srcdir)/glob.h $(srcdir)/fnmatch.h glob.c
-+fnmatch.o: $(srcdir)/fnmatch.h fnmatch.c
-+
-+.c.o:
-+ $(CC) -I. -I$(srcdir) -c \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -rm -f libglob.a *.o core
-+distclean glob-realclean: clean
-+ -rm -f TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
---- glibc-2.3.2/posix/glob/SCOPTIONS 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/SCOPTIONS 2002-11-16 08:56:16.000000000 -0500
-@@ -0,0 +1,13 @@
-+ERRORREXX
-+OPTIMIZE
-+NOVERSION
-+OPTIMIZERTIME
-+OPTIMIZERALIAS
-+DEFINE INCLUDEDIR="include:"
-+DEFINE LIBDIR="lib:"
-+DEFINE NO_ALLOCA
-+DEFINE NO_FLOAT
-+DEFINE NO_ARCHIVES
-+IGNORE=161
-+IGNORE=100
-+STARTUP=cres
---- glibc-2.3.2/posix/glob/SMakefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/SMakefile 2002-11-16 08:56:16.000000000 -0500
-@@ -0,0 +1,68 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+# Copyright (C) 1991, 92, 93, 94, 95, 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.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = /glob/
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = /glob/
-+
-+CC = sc
-+CPPFLAGS =
-+CFLAGS =
-+MAKE = smake
-+RM = delete
-+
-+# Information determined by configure.
-+DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
-+ Define HAVE_DIRENT_H
-+
-+# How to invoke ar.
-+AR = join
-+ARFLAGS = as
-+
-+# How to invoke ranlib.
-+RANLIB = ;
-+
-+.PHONY: all
-+all: glob.lib
-+
-+glob.lib : glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)foo.c!!
-+glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-+fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-+
-+.c.o:
-+ $(CC) IDir "" \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -$(RM) -f glob.lib *.o core
-+distclean glob-realclean: clean
-+ -$(RM) -f TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
---- glibc-2.3.2/posix/glob/configure 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/configure 2002-11-16 08:56:17.000000000 -0500
-@@ -0,0 +1,1664 @@
-+#! /bin/sh
-+
-+# Guess values for system-dependent variables and create Makefiles.
-+# Generated automatically using autoconf version 2.7
-+# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-+#
-+# This configure script is free software; the Free Software Foundation
-+# gives unlimited permission to copy, distribute and modify it.
-+
-+# Defaults:
-+ac_help=
-+ac_default_prefix=/usr/local
-+# Any additions from configure.in:
-+
-+# Initialize some variables set by options.
-+# The variables have the same names as the options, with
-+# dashes changed to underlines.
-+build=NONE
-+cache_file=./config.cache
-+exec_prefix=NONE
-+host=NONE
-+no_create=
-+nonopt=NONE
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+target=NONE
-+verbose=
-+x_includes=NONE
-+x_libraries=NONE
-+bindir='${exec_prefix}/bin'
-+sbindir='${exec_prefix}/sbin'
-+libexecdir='${exec_prefix}/libexec'
-+datadir='${prefix}/share'
-+sysconfdir='${prefix}/etc'
-+sharedstatedir='${prefix}/com'
-+localstatedir='${prefix}/var'
-+libdir='${exec_prefix}/lib'
-+includedir='${prefix}/include'
-+oldincludedir='/usr/include'
-+infodir='${prefix}/info'
-+mandir='${prefix}/man'
-+
-+# Initialize some other variables.
-+subdirs=
-+MFLAGS= MAKEFLAGS=
-+
-+ac_prev=
-+for ac_option
-+do
-+
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ case "$ac_option" in
-+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-+ *) ac_optarg= ;;
-+ esac
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case "$ac_option" in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir="$ac_optarg" ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build="$ac_optarg" ;;
-+
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-+ cache_file="$ac_optarg" ;;
-+
-+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ ac_prev=datadir ;;
-+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-+ | --da=*)
-+ datadir="$ac_optarg" ;;
-+
-+ -disable-* | --disable-*)
-+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-+ fi
-+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-+ eval "enable_${ac_feature}=no" ;;
-+
-+ -enable-* | --enable-*)
-+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-+ fi
-+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-+ case "$ac_option" in
-+ *=*) ;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "enable_${ac_feature}='$ac_optarg'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ exec_prefix="$ac_optarg" ;;
-+
-+ -gas | --gas | --ga | --g)
-+ # Obsolete; use --with-gas.
-+ with_gas=yes ;;
-+
-+ -help | --help | --hel | --he)
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat << EOF
-+Usage: configure [options] [host]
-+Options: [defaults in brackets after descriptions]
-+Configuration:
-+ --cache-file=FILE cache test results in FILE
-+ --help print this message
-+ --no-create do not create output files
-+ --quiet, --silent do not print \`checking...' messages
-+ --version print the version of autoconf that created configure
-+Directory and file names:
-+ --prefix=PREFIX install architecture-independent files in PREFIX
-+ [$ac_default_prefix]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [same as prefix]
-+ --bindir=DIR user executables in DIR [EPREFIX/bin]
-+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
-+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
-+ --datadir=DIR read-only architecture-independent data in DIR
-+ [PREFIX/share]
-+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
-+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
-+ [PREFIX/com]
-+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
-+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
-+ --includedir=DIR C header files in DIR [PREFIX/include]
-+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
-+ --infodir=DIR info documentation in DIR [PREFIX/info]
-+ --mandir=DIR man documentation in DIR [PREFIX/man]
-+ --srcdir=DIR find the sources in DIR [configure dir or ..]
-+ --program-prefix=PREFIX prepend PREFIX to installed program names
-+ --program-suffix=SUFFIX append SUFFIX to installed program names
-+ --program-transform-name=PROGRAM
-+ run sed PROGRAM on installed program names
-+EOF
-+ cat << EOF
-+Host type:
-+ --build=BUILD configure for building on BUILD [BUILD=HOST]
-+ --host=HOST configure for HOST [guessed]
-+ --target=TARGET configure for TARGET [TARGET=HOST]
-+Features and packages:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --x-includes=DIR X include files are in DIR
-+ --x-libraries=DIR X library files are in DIR
-+EOF
-+ if test -n "$ac_help"; then
-+ echo "--enable and --with options recognized:$ac_help"
-+ fi
-+ exit 0 ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host="$ac_optarg" ;;
-+
-+ -includedir | --includedir | --includedi | --included | --include \
-+ | --includ | --inclu | --incl | --inc)
-+ ac_prev=includedir ;;
-+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-+ | --includ=* | --inclu=* | --incl=* | --inc=*)
-+ includedir="$ac_optarg" ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir="$ac_optarg" ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ libdir="$ac_optarg" ;;
-+
-+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-+ | --libexe | --libex | --libe)
-+ ac_prev=libexecdir ;;
-+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-+ | --libexe=* | --libex=* | --libe=*)
-+ libexecdir="$ac_optarg" ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir="$ac_optarg" ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ mandir="$ac_optarg" ;;
-+
-+ -nfp | --nfp | --nf)
-+ # Obsolete; use --without-fp.
-+ with_fp=no ;;
-+
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c)
-+ no_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir="$ac_optarg" ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ prefix="$ac_optarg" ;;
-+
-+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
-+ | --program-pre | --program-pr | --program-p)
-+ ac_prev=program_prefix ;;
-+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
-+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-+ program_prefix="$ac_optarg" ;;
-+
-+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
-+ | --program-suf | --program-su | --program-s)
-+ ac_prev=program_suffix ;;
-+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
-+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-+ program_suffix="$ac_optarg" ;;
-+
-+ -program-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name="$ac_optarg" ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir="$ac_optarg" ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir="$ac_optarg" ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site="$ac_optarg" ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ srcdir="$ac_optarg" ;;
-+
-+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-+ | --syscon | --sysco | --sysc | --sys | --sy)
-+ ac_prev=sysconfdir ;;
-+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-+ sysconfdir="$ac_optarg" ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target="$ac_optarg" ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers)
-+ echo "configure generated by autoconf version 2.7"
-+ exit 0 ;;
-+
-+ -with-* | --with-*)
-+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-+ fi
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ case "$ac_option" in
-+ *=*) ;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "with_${ac_package}='$ac_optarg'" ;;
-+
-+ -without-* | --without-*)
-+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-+ fi
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ eval "with_${ac_package}=no" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ ac_prev=x_includes ;;
-+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-+ x_includes="$ac_optarg" ;;
-+
-+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
-+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-+ ac_prev=x_libraries ;;
-+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-+ x_libraries="$ac_optarg" ;;
-+
-+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-+ ;;
-+
-+ *)
-+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-+ echo "configure: warning: $ac_option: invalid host type" 1>&2
-+ fi
-+ if test "x$nonopt" != xNONE; then
-+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-+ fi
-+ nonopt="$ac_option"
-+ ;;
-+
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-+fi
-+
-+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-+
-+# File descriptor usage:
-+# 0 standard input
-+# 1 file creation
-+# 2 errors and warnings
-+# 3 some systems may open it to /dev/tty
-+# 4 used on the Kubota Titan
-+# 6 checking for... messages and results
-+# 5 compiler messages saved in config.log
-+if test "$silent" = yes; then
-+ exec 6>/dev/null
-+else
-+ exec 6>&1
-+fi
-+exec 5>./config.log
-+
-+echo "\
-+This file contains any messages produced by compilers while
-+running configure, to aid debugging if configure makes a mistake.
-+" 1>&5
-+
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Also quote any args containing shell metacharacters.
-+ac_configure_args=
-+for ac_arg
-+do
-+ case "$ac_arg" in
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c) ;;
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-+ esac
-+done
-+
-+# NLS nuisances.
-+# Only set LANG and LC_ALL to C if already set.
-+# These must not be set unconditionally because not all systems understand
-+# e.g. LANG=C (notably SCO).
-+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-+
-+# confdefs.h avoids OS command line length limits that DEFS can exceed.
-+rm -rf conftest* confdefs.h
-+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-+echo > confdefs.h
-+
-+# A filename unique to this package, relative to the directory that
-+# configure is in, which we can look for to find out if srcdir is correct.
-+ac_unique_file=fnmatch.c
-+
-+# Find the source files, if location was not specified.
-+if test -z "$srcdir"; then
-+ ac_srcdir_defaulted=yes
-+ # Try the directory containing this script, then its parent.
-+ ac_prog=$0
-+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-+ srcdir=$ac_confdir
-+ if test ! -r $srcdir/$ac_unique_file; then
-+ srcdir=..
-+ fi
-+else
-+ ac_srcdir_defaulted=no
-+fi
-+if test ! -r $srcdir/$ac_unique_file; then
-+ if test "$ac_srcdir_defaulted" = yes; then
-+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-+ else
-+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-+ fi
-+fi
-+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-+
-+# Prefer explicitly selected file to automatically selected ones.
-+if test -z "$CONFIG_SITE"; then
-+ if test "x$prefix" != xNONE; then
-+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-+ else
-+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-+ fi
-+fi
-+for ac_site_file in $CONFIG_SITE; do
-+ if test -r "$ac_site_file"; then
-+ echo "loading site script $ac_site_file"
-+ . "$ac_site_file"
-+ fi
-+done
-+
-+if test -r "$cache_file"; then
-+ echo "loading cache $cache_file"
-+ . $cache_file
-+else
-+ echo "creating cache $cache_file"
-+ > $cache_file
-+fi
-+
-+ac_ext=c
-+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+
-+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-+ ac_n= ac_c='
-+' ac_t=' '
-+ else
-+ ac_n=-n ac_c= ac_t=
-+ fi
-+else
-+ ac_n= ac_c='\c' ac_t=
-+fi
-+
-+ # Extract the first word of "gcc", so it can be a program name with args.
-+set dummy gcc; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_CC="gcc"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+fi
-+fi
-+CC="$ac_cv_prog_CC"
-+if test -n "$CC"; then
-+ echo "$ac_t""$CC" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+if test -z "$CC"; then
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ ac_prog_rejected=no
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $# -gt 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ set dummy "$ac_dir/$ac_word" "$@"
-+ shift
-+ ac_cv_prog_CC="$@"
-+ fi
-+fi
-+fi
-+fi
-+CC="$ac_cv_prog_CC"
-+if test -n "$CC"; then
-+ echo "$ac_t""$CC" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-+fi
-+
-+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.c <<EOF
-+#ifdef __GNUC__
-+ yes;
-+#endif
-+EOF
-+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-+ ac_cv_prog_gcc=yes
-+else
-+ ac_cv_prog_gcc=no
-+fi
-+fi
-+
-+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-+if test $ac_cv_prog_gcc = yes; then
-+ GCC=yes
-+ if test "${CFLAGS+set}" != set; then
-+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ echo 'void f(){}' > conftest.c
-+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-+ ac_cv_prog_gcc_g=yes
-+else
-+ ac_cv_prog_gcc_g=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
-+ if test $ac_cv_prog_gcc_g = yes; then
-+ CFLAGS="-g -O"
-+ else
-+ CFLAGS="-O"
-+ fi
-+ fi
-+else
-+ GCC=
-+ test "${CFLAGS+set}" = set || CFLAGS="-g"
-+fi
-+
-+# Extract the first word of "ar", so it can be a program name with args.
-+set dummy ar; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$AR"; then
-+ ac_cv_prog_AR="$AR" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_AR="ar"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
-+fi
-+fi
-+AR="$ac_cv_prog_AR"
-+if test -n "$AR"; then
-+ echo "$ac_t""$AR" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+# Extract the first word of "ranlib", so it can be a program name with args.
-+set dummy ranlib; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_RANLIB="ranlib"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-+fi
-+fi
-+RANLIB="$ac_cv_prog_RANLIB"
-+if test -n "$RANLIB"; then
-+ echo "$ac_t""$RANLIB" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-+# On Suns, sometimes $CPP names a directory.
-+if test -n "$CPP" && test -d "$CPP"; then
-+ CPP=
-+fi
-+if test -z "$CPP"; then
-+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ # This must be in double quotes, not single quotes, because CPP may get
-+ # substituted into the Makefile and "${CC-cc}" will confuse make.
-+ CPP="${CC-cc} -E"
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp.
-+ cat > conftest.$ac_ext <<EOF
-+#line 709 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ CPP="${CC-cc} -E -traditional-cpp"
-+ cat > conftest.$ac_ext <<EOF
-+#line 724 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ CPP=/lib/cpp
-+fi
-+rm -f conftest*
-+fi
-+rm -f conftest*
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+ CPP="$ac_cv_prog_CPP"
-+else
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+echo "$ac_t""$CPP" 1>&6
-+ echo $ac_n "checking for AIX""... $ac_c" 1>&6
-+cat > conftest.$ac_ext <<EOF
-+#line 751 "configure"
-+#include "confdefs.h"
-+#ifdef _AIX
-+ yes
-+#endif
-+
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "yes" >/dev/null 2>&1; then
-+ rm -rf conftest*
-+ echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
-+#define _ALL_SOURCE 1
-+EOF
-+
-+else
-+ rm -rf conftest*
-+ echo "$ac_t""no" 1>&6
-+fi
-+rm -f conftest*
-+
-+
-+ac_safe=`echo "minix/config.h" | tr './\055' '___'`
-+echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 778 "configure"
-+#include "confdefs.h"
-+#include <minix/config.h>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ MINIX=yes
-+else
-+ echo "$ac_t""no" 1>&6
-+MINIX=
-+fi
-+
-+if test "$MINIX" = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_SOURCE 1
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_1_SOURCE 2
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define _MINIX 1
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-+if test -d /etc/conf/kconfig.d &&
-+ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-+then
-+ echo "$ac_t""yes" 1>&6
-+ ISC=yes # If later tests want to check for ISC.
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_SOURCE 1
-+EOF
-+
-+ if test "$GCC" = yes; then
-+ CC="$CC -posix"
-+ else
-+ CC="$CC -Xp"
-+ fi
-+else
-+ echo "$ac_t""no" 1>&6
-+ ISC=
-+fi
-+
-+echo $ac_n "checking for working const""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 843 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+
-+/* Ultrix mips cc rejects this. */
-+typedef int charset[2]; const charset x;
-+/* SunOS 4.1.1 cc rejects this. */
-+char const *const *ccp;
-+char **p;
-+/* NEC SVR4.0.2 mips cc rejects this. */
-+struct point {int x, y;};
-+static struct point const zero = {0,0};
-+/* AIX XL C 1.02.0.0 rejects this.
-+ It does not let you subtract one const X* pointer from another in an arm
-+ of an if-expression whose if-part is not a constant expression */
-+const char *g = "string";
-+ccp = &g + (g ? g-g : 0);
-+/* HPUX 7.0 cc rejects these. */
-+++ccp;
-+p = (char**) ccp;
-+ccp = (char const *const *) p;
-+{ /* SCO 3.2v4 cc rejects this. */
-+ char *t;
-+ char const *s = 0 ? (char *) 0 : (char const *) 0;
-+
-+ *t++ = 0;
-+}
-+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
-+ int x[] = {25, 17};
-+ const int *foo = &x[0];
-+ ++foo;
-+}
-+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-+ typedef const int *iptr;
-+ iptr p = 0;
-+ ++p;
-+}
-+{ /* AIX XL C 1.02.0.0 rejects this saying
-+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-+ struct s { int j; const int *ap[3]; };
-+ struct s *b; b->j = 5;
-+}
-+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-+ const int foo = 10;
-+}
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_c_const=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_c_const=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_c_const" 1>&6
-+if test $ac_cv_c_const = no; then
-+ cat >> confdefs.h <<\EOF
-+#define const
-+EOF
-+
-+fi
-+
-+# If we cannot run a trivial program, we must be cross compiling.
-+echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_c_cross=yes
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 921 "configure"
-+#include "confdefs.h"
-+main(){return(0);}
-+EOF
-+{ (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_c_cross=no
-+else
-+ ac_cv_c_cross=yes
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_c_cross" 1>&6
-+cross_compiling=$ac_cv_c_cross
-+
-+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 943 "configure"
-+#include "confdefs.h"
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.h>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ ac_cv_header_stdc=yes
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-+cat > conftest.$ac_ext <<EOF
-+#line 966 "configure"
-+#include "confdefs.h"
-+#include <string.h>
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "memchr" >/dev/null 2>&1; then
-+ :
-+else
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+cat > conftest.$ac_ext <<EOF
-+#line 984 "configure"
-+#include "confdefs.h"
-+#include <stdlib.h>
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "free" >/dev/null 2>&1; then
-+ :
-+else
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+if test "$cross_compiling" = yes; then
-+ :
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1005 "configure"
-+#include "confdefs.h"
-+#include <ctype.h>
-+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int main () { int i; for (i = 0; i < 256; i++)
-+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-+exit (0); }
-+
-+EOF
-+{ (eval echo configure:1016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+fi
-+
-+echo "$ac_t""$ac_cv_header_stdc" 1>&6
-+if test $ac_cv_header_stdc = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define STDC_HEADERS 1
-+EOF
-+
-+fi
-+
-+for ac_hdr in memory.h unistd.h string.h
-+do
-+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1043 "configure"
-+#include "confdefs.h"
-+#include <$ac_hdr>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+
-+ac_header_dirent=no
-+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
-+do
-+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1081 "configure"
-+#include "confdefs.h"
-+#include <sys/types.h>
-+#include <$ac_hdr>
-+int main() { return 0; }
-+int t() {
-+DIR *dirp = 0;
-+; return 0; }
-+EOF
-+if { (eval echo configure:1090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_dirent_$ac_safe=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_header_dirent_$ac_safe=no"
-+fi
-+rm -f conftest*
-+
-+fi
-+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdedfghijklmnopqrstuvwxyz./\055' 'ABCDEDFGHIJKLMNOPQRSTUVWXYZ___'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+ ac_header_dirent=$ac_hdr; break
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-+if test $ac_header_dirent = dirent.h; then
-+echo $ac_n "checking for -ldir""... $ac_c" 1>&6
-+ac_lib_var=`echo dir | tr '.-/+' '___p'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-ldir $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 1121 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+opendir()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ LIBS="$LIBS -ldir"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+else
-+echo $ac_n "checking for -lx""... $ac_c" 1>&6
-+ac_lib_var=`echo x | tr '.-/+' '___p'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-lx $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 1156 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+opendir()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ LIBS="$LIBS -lx"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+fi
-+
-+echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_func_closedir_void=yes
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1192 "configure"
-+#include "confdefs.h"
-+#include <sys/types.h>
-+#include <$ac_header_dirent>
-+int closedir(); main() { exit(closedir(opendir(".")) != 0); }
-+EOF
-+{ (eval echo configure:1198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_func_closedir_void=no
-+else
-+ ac_cv_func_closedir_void=yes
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_func_closedir_void" 1>&6
-+if test $ac_cv_func_closedir_void = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define CLOSEDIR_VOID 1
-+EOF
-+
-+fi
-+
-+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-+# for constant arguments. Useless!
-+echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1223 "configure"
-+#include "confdefs.h"
-+#include <alloca.h>
-+int main() { return 0; }
-+int t() {
-+char *p = alloca(2 * sizeof(int));
-+; return 0; }
-+EOF
-+if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_header_alloca_h=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_header_alloca_h=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
-+if test $ac_cv_header_alloca_h = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_ALLOCA_H 1
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for alloca""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_alloca'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1255 "configure"
-+#include "confdefs.h"
-+
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+#else
-+# if HAVE_ALLOCA_H
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca /* predefined by HP cc +Olibcalls */
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+int main() { return 0; }
-+int t() {
-+char *p = (char *) alloca(1);
-+; return 0; }
-+EOF
-+if { (eval echo configure:1279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_func_alloca=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_func_alloca=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_func_alloca" 1>&6
-+if test $ac_cv_func_alloca = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_ALLOCA 1
-+EOF
-+
-+fi
-+
-+if test $ac_cv_func_alloca = no; then
-+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-+ # that cause trouble. Some versions do not even contain alloca or
-+ # contain a buggy version. If you still want to use their alloca,
-+ # use ar to extract alloca.o from them instead of compiling alloca.c.
-+ ALLOCA=alloca.o
-+ cat >> confdefs.h <<\EOF
-+#define C_ALLOCA 1
-+EOF
-+
-+
-+echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1314 "configure"
-+#include "confdefs.h"
-+#if defined(CRAY) && ! defined(CRAY2)
-+webecray
-+#else
-+wenotbecray
-+#endif
-+
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "webecray" >/dev/null 2>&1; then
-+ rm -rf conftest*
-+ ac_cv_os_cray=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_os_cray=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_os_cray" 1>&6
-+if test $ac_cv_os_cray = yes; then
-+for ac_func in _getb67 GETB67 getb67; do
-+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1343 "configure"
-+#include "confdefs.h"
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func(); below. */
-+#include <assert.h>
-+/* Override any gcc2 internal prototype to avoid an error. */
-+char $ac_func();
-+
-+int main() { return 0; }
-+int t() {
-+
-+/* 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
-+$ac_func();
-+#endif
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:1365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=no"
-+fi
-+rm -f conftest*
-+
-+fi
-+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ cat >> confdefs.h <<EOF
-+#define CRAY_STACKSEG_END $ac_func
-+EOF
-+
-+ break
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+done
-+fi
-+
-+echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_c_stack_direction=0
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1397 "configure"
-+#include "confdefs.h"
-+find_stack_direction ()
-+{
-+ static char *addr = 0;
-+ auto char dummy;
-+ if (addr == 0)
-+ {
-+ addr = &dummy;
-+ return find_stack_direction ();
-+ }
-+ else
-+ return (&dummy > addr) ? 1 : -1;
-+}
-+main ()
-+{
-+ exit (find_stack_direction() < 0);
-+}
-+EOF
-+{ (eval echo configure:1416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_c_stack_direction=1
-+else
-+ ac_cv_c_stack_direction=-1
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_c_stack_direction" 1>&6
-+cat >> confdefs.h <<EOF
-+#define STACK_DIRECTION $ac_cv_c_stack_direction
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for strcoll""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_strcoll'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_func_strcoll=no
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1441 "configure"
-+#include "confdefs.h"
-+#include <string.h>
-+main ()
-+{
-+ exit (strcoll ("abc", "def") >= 0 ||
-+ strcoll ("ABC", "DEF") >= 0 ||
-+ strcoll ("123", "456") >= 0);
-+}
-+EOF
-+{ (eval echo configure:1451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_func_strcoll=yes
-+else
-+ ac_cv_func_strcoll=no
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_func_strcoll" 1>&6
-+if test $ac_cv_func_strcoll = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_STRCOLL 1
-+EOF
-+
-+fi
-+
-+trap '' 1 2 15
-+cat > confcache <<\EOF
-+# This file is a shell script that caches the results of configure
-+# tests run on this system so they can be shared between configure
-+# scripts and configure runs. It is not useful on other systems.
-+# If it contains results you don't want to keep, you may remove or edit it.
-+#
-+# By default, configure uses ./config.cache as the cache file,
-+# creating it if it does not exist already. You can give configure
-+# the --cache-file=FILE option to use a different cache file; that is
-+# what configure does when it calls configure scripts in
-+# subdirectories, so they share the cache.
-+# Giving --cache-file=/dev/null disables caching, for debugging configure.
-+# config.status only pays attention to the cache file if you give it the
-+# --recheck option to rerun configure.
-+#
-+EOF
-+# Ultrix sh set writes to stderr and can't be redirected directly,
-+# and sets the high bit in the cache file unless we assign to the vars.
-+(set) 2>&1 |
-+ sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
-+ >> confcache
-+if cmp -s $cache_file confcache; then
-+ :
-+else
-+ if test -w $cache_file; then
-+ echo "updating cache $cache_file"
-+ cat confcache > $cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-+
-+test "x$prefix" = xNONE && prefix=$ac_default_prefix
-+# Let make expand exec_prefix.
-+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-+
-+# Any assignment to VPATH causes Sun make to only execute
-+# the first set of double-colon rules, so remove it if not needed.
-+# If there is a colon in the path, we need to keep it.
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-+fi
-+
-+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-+
-+# Transform confdefs.h into DEFS.
-+# Protect against shell expansion while executing Makefile rules.
-+# Protect against Makefile macro expansion.
-+cat > conftest.defs <<\EOF
-+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-+s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-+s%\[%\\&%g
-+s%\]%\\&%g
-+s%\$%$$%g
-+EOF
-+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-+rm -f conftest.defs
-+
-+
-+# Without the "./", some shells look in PATH for config.status.
-+: ${CONFIG_STATUS=./config.status}
-+
-+echo creating $CONFIG_STATUS
-+rm -f $CONFIG_STATUS
-+cat > $CONFIG_STATUS <<EOF
-+#! /bin/sh
-+# Generated automatically by configure.
-+# Run this file to recreate the current configuration.
-+# This directory was configured as follows,
-+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+#
-+# $0 $ac_configure_args
-+#
-+# Compiler output produced by configure, useful for debugging
-+# configure, is in ./config.log if it exists.
-+
-+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-+for ac_option
-+do
-+ case "\$ac_option" in
-+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-+ echo "$CONFIG_STATUS generated by autoconf version 2.7"
-+ exit 0 ;;
-+ -help | --help | --hel | --he | --h)
-+ echo "\$ac_cs_usage"; exit 0 ;;
-+ *) echo "\$ac_cs_usage"; exit 1 ;;
-+ esac
-+done
-+
-+ac_given_srcdir=$srcdir
-+
-+trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-+EOF
-+cat >> $CONFIG_STATUS <<EOF
-+
-+# Protect against being on the right side of a sed subst in config.status.
-+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
-+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-+$ac_vpsub
-+$extrasub
-+s%@CFLAGS@%$CFLAGS%g
-+s%@CPPFLAGS@%$CPPFLAGS%g
-+s%@CXXFLAGS@%$CXXFLAGS%g
-+s%@DEFS@%$DEFS%g
-+s%@LDFLAGS@%$LDFLAGS%g
-+s%@LIBS@%$LIBS%g
-+s%@exec_prefix@%$exec_prefix%g
-+s%@prefix@%$prefix%g
-+s%@program_transform_name@%$program_transform_name%g
-+s%@bindir@%$bindir%g
-+s%@sbindir@%$sbindir%g
-+s%@libexecdir@%$libexecdir%g
-+s%@datadir@%$datadir%g
-+s%@sysconfdir@%$sysconfdir%g
-+s%@sharedstatedir@%$sharedstatedir%g
-+s%@localstatedir@%$localstatedir%g
-+s%@libdir@%$libdir%g
-+s%@includedir@%$includedir%g
-+s%@oldincludedir@%$oldincludedir%g
-+s%@infodir@%$infodir%g
-+s%@mandir@%$mandir%g
-+s%@CC@%$CC%g
-+s%@AR@%$AR%g
-+s%@RANLIB@%$RANLIB%g
-+s%@CPP@%$CPP%g
-+s%@ALLOCA@%$ALLOCA%g
-+
-+CEOF
-+EOF
-+cat >> $CONFIG_STATUS <<EOF
-+
-+CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-+EOF
-+cat >> $CONFIG_STATUS <<\EOF
-+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-+ # Support "outfile[:infile]", defaulting infile="outfile.in".
-+ case "$ac_file" in
-+ *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
-+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-+ *) ac_file_in="${ac_file}.in" ;;
-+ esac
-+
-+ # Adjust relative srcdir, etc. for subdirectories.
-+
-+ # Remove last slash and all that follows it. Not all systems have dirname.
-+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-+ # The file is in a subdirectory.
-+ test ! -d "$ac_dir" && mkdir "$ac_dir"
-+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-+ else
-+ ac_dir_suffix= ac_dots=
-+ fi
-+
-+ case "$ac_given_srcdir" in
-+ .) srcdir=.
-+ if test -z "$ac_dots"; then top_srcdir=.
-+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-+ *) # Relative path.
-+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ esac
-+
-+ echo creating "$ac_file"
-+ rm -f "$ac_file"
-+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-+ case "$ac_file" in
-+ *Makefile*) ac_comsub="1i\\
-+# $configure_input" ;;
-+ *) ac_comsub= ;;
-+ esac
-+ sed -e "$ac_comsub
-+s%@configure_input@%$configure_input%g
-+s%@srcdir@%$srcdir%g
-+s%@top_srcdir@%$top_srcdir%g
-+" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-+fi; done
-+rm -f conftest.subs
-+
-+
-+
-+exit 0
-+EOF
-+chmod +x $CONFIG_STATUS
-+rm -fr confdefs* $ac_clean_files
-+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-+
---- glibc-2.3.2/posix/glob/configure.bat 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/configure.bat 2002-11-16 08:56:17.000000000 -0500
-@@ -0,0 +1,26 @@
-+@echo off
-+echo Configuring glob for GO32
-+rem This batch file assumes a unix-type "sed" program
-+
-+echo # Makefile generated by "configure.bat"> Makefile
-+
-+if exist config.sed del config.sed
-+
-+echo "s/@srcdir@/./ ">> config.sed
-+echo "s/@CC@/gcc/ ">> config.sed
-+echo "s/@CFLAGS@/-O2 -g/ ">> config.sed
-+echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../ ">> config.sed
-+echo "s/@AR@/ar/ ">> config.sed
-+echo "s/@RANLIB@/ranlib/ ">> config.sed
-+echo "s/@LDFLAGS@// ">> config.sed
-+echo "s/@DEFS@// ">> config.sed
-+echo "s/@ALLOCA@// ">> config.sed
-+echo "s/@LIBS@// ">> config.sed
-+echo "s/@LIBOBJS@// ">> config.sed
-+echo "s/^Makefile *:/_Makefile:/ ">> config.sed
-+echo "s/^config.h *:/_config.h:/ ">> config.sed
-+
-+sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
-+sed -f config2.sed Makefile.in >> Makefile
-+del config.sed
-+del config2.sed
---- glibc-2.3.2/posix/glob/configure.in 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/glob/configure.in 2002-11-16 08:56:17.000000000 -0500
-@@ -0,0 +1,19 @@
-+dnl Process this file with autoconf to produce a configure script.
-+AC_INIT(fnmatch.c) dnl A distinctive file to look for in srcdir.
-+AC_PREREQ(2.1) dnl Minimum Autoconf version required.
-+AC_PROG_CC
-+AC_CHECK_PROG(AR, ar, ar, ar)
-+AC_PROG_RANLIB
-+AC_PROG_CPP dnl Later checks need this.
-+dnl These two want to come early.
-+AC_AIX
-+AC_MINIX
-+AC_ISC_POSIX
-+AC_CONST
-+AC_HEADER_STDC
-+AC_CHECK_HEADERS(memory.h unistd.h string.h)
-+AC_HEADER_DIRENT
-+AC_FUNC_CLOSEDIR_VOID
-+AC_FUNC_ALLOCA
-+AC_FUNC_STRCOLL
-+AC_OUTPUT(Makefile)
---- glibc-2.3.2/posix/globtest.sh 2002-04-29 00:19:36.000000000 -0400
-+++ glibc-2.3.2/posix/globtest.sh 2003-08-21 08:37:07.000000000 -0400
-@@ -30,6 +30,7 @@
-
- trap 'chmod 777 $testdir/noread; rm -fr $testdir $testout' 1 2 3 15
-
-+test -d $testdir/noread && chmod 777 $testdir/noread
- rm -fr $testdir 2>/dev/null
- mkdir $testdir
- echo 1 > $testdir/file1
-@@ -44,6 +45,7 @@
- chmod a-r $testdir/noread
- echo 1_1 > $testdir/dir1/file1_1
- echo 1_2 > $testdir/dir1/file1_2
-+ln -fs dir1 $testdir/link1
-
- # Run some tests.
- result=0
-@@ -61,6 +63,7 @@
- `dir2'
- `file1'
- `file2'
-+`link1'
- `noread'
- `~file4'
- EOF
-@@ -81,6 +84,7 @@
- `dir2'
- `file1'
- `file2'
-+`link1'
- `noread'
- `~file4'
- EOF
-@@ -101,6 +105,7 @@
- `dir2/'
- `file1'
- `file2'
-+`link1/'
- `noread/'
- `~file4'
- EOF
-@@ -124,6 +129,7 @@
- `dir2'
- `file1'
- `file2'
-+`link1'
- `noread'
- `~file4'
- EOF
-@@ -232,6 +238,8 @@
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
- `dir1/file1_2'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "Subdirs test failed" >> $logfile
-@@ -258,6 +266,7 @@
- sort > $testout
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
-+`link1/file1_1'
- EOF
- if test $failed -ne 0; then
- echo "Wildcard subdir test failed" >> $logfile
-@@ -272,6 +281,8 @@
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
- `dir1/file1_2'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "Wildcard2 subdir test failed" >> $logfile
-@@ -284,6 +295,7 @@
- sort > $testout
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
-+`link1/file1_1'
- EOF
- if test $failed -ne 0; then
- echo "Wildcard3 subdir test failed" >> $logfile
-@@ -322,6 +334,8 @@
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
- `dir1/file1_2'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "Wildcard6 subdir test failed" >> $logfile
-@@ -336,6 +350,8 @@
- cat <<"EOF" | cmp - $testout >> $logfile || failed=1
- `dir1/file1_1'
- `dir1/file1_2'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "Brackets test failed" >> $logfile
-@@ -544,6 +560,8 @@
- `dir1/file1_1'
- `dir1/file1_2'
- `file1'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "GLOB_APPEND test failed" >> $logfile
-@@ -560,6 +578,8 @@
- `dir1/file1_1'
- `dir1/file1_2'
- `file1'
-+`link1/file1_1'
-+`link1/file1_2'
- EOF
- if test $failed -ne 0; then
- echo "GLOB_APPEND2 test failed" >> $logfile
---- glibc-2.3.2/posix/regcomp.c 2003-02-20 20:17:47.000000000 -0500
-+++ glibc-2.3.2/posix/regcomp.c 2003-08-21 08:37:07.000000000 -0400
-@@ -104,7 +104,8 @@
- re_charset_t *mbcset,
- int *equiv_class_alloc,
- const unsigned char *name);
--static reg_errcode_t build_charclass (re_bitset_ptr_t sbcset,
-+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
-+ re_bitset_ptr_t sbcset,
- re_charset_t *mbcset,
- int *char_class_alloc,
- const unsigned char *class_name,
-@@ -112,11 +113,13 @@
- #else /* not RE_ENABLE_I18N */
- static reg_errcode_t build_equiv_class (re_bitset_ptr_t sbcset,
- const unsigned char *name);
--static reg_errcode_t build_charclass (re_bitset_ptr_t sbcset,
-+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
-+ re_bitset_ptr_t sbcset,
- const unsigned char *class_name,
- reg_syntax_t syntax);
- #endif /* not RE_ENABLE_I18N */
--static bin_tree_t *build_word_op (re_dfa_t *dfa, int not, reg_errcode_t *err);
-+static bin_tree_t *build_word_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
-+ int not, reg_errcode_t *err);
- static void free_bin_tree (bin_tree_t *tree);
- static bin_tree_t *create_tree (bin_tree_t *left, bin_tree_t *right,
- re_token_type_t type, int index);
-@@ -288,6 +291,7 @@
- #endif
-
- static inline void
-+__attribute ((always_inline))
- re_set_fastmap (char *fastmap, int icase, int ch)
- {
- fastmap[ch] = 1;
-@@ -2073,12 +2077,12 @@
- dfa->has_mb_node = 1;
- break;
- case OP_WORD:
-- tree = build_word_op (dfa, 0, err);
-+ tree = build_word_op (dfa, regexp->trans, 0, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
- return NULL;
- break;
- case OP_NOTWORD:
-- tree = build_word_op (dfa, 1, err);
-+ tree = build_word_op (dfa, regexp->trans, 1, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
- return NULL;
- break;
-@@ -2512,6 +2516,7 @@
- Return the index of the symbol in the SYMB_TABLE. */
-
- static inline int32_t
-+ __attribute ((always_inline))
- seek_collating_symbol_entry (name, name_len)
- const unsigned char *name;
- size_t name_len;
-@@ -2544,6 +2549,7 @@
- Return the value if succeeded, UINT_MAX otherwise. */
-
- static inline unsigned int
-+ __attribute ((always_inline))
- lookup_collation_sequence_value (br_elem)
- bracket_elem_t *br_elem;
- {
-@@ -2557,12 +2563,12 @@
- else
- {
- wint_t wc = __btowc (br_elem->opr.ch);
-- return collseq_table_lookup (collseqwc, wc);
-+ return __collseq_table_lookup (collseqwc, wc);
- }
- }
- else if (br_elem->type == MB_CHAR)
- {
-- return collseq_table_lookup (collseqwc, br_elem->opr.wch);
-+ return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
- }
- else if (br_elem->type == COLL_SYM)
- {
-@@ -2611,6 +2617,7 @@
- update it. */
-
- static inline reg_errcode_t
-+ __attribute ((always_inline))
- # ifdef RE_ENABLE_I18N
- build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
- re_charset_t *mbcset;
-@@ -2683,7 +2690,7 @@
- if (nrules == 0)
- ch_collseq = collseqmb[ch];
- else
-- ch_collseq = collseq_table_lookup (collseqwc, __btowc (ch));
-+ ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
- if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
- bitset_set (sbcset, ch);
- }
-@@ -2697,6 +2704,7 @@
- pointer argument sinse we may update it. */
-
- static inline reg_errcode_t
-+ __attribute ((always_inline))
- # ifdef RE_ENABLE_I18N
- build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
- re_charset_t *mbcset;
-@@ -2949,7 +2957,7 @@
- goto parse_bracket_exp_free_return;
- break;
- case CHAR_CLASS:
-- *err = build_charclass (sbcset,
-+ *err = build_charclass (regexp->trans, sbcset,
- #ifdef RE_ENABLE_I18N
- mbcset, &char_class_alloc,
- #endif /* RE_ENABLE_I18N */
-@@ -3200,12 +3208,13 @@
-
- static reg_errcode_t
- #ifdef RE_ENABLE_I18N
--build_charclass (sbcset, mbcset, char_class_alloc, class_name, syntax)
-+build_charclass (trans, sbcset, mbcset, char_class_alloc, class_name, syntax)
- re_charset_t *mbcset;
- int *char_class_alloc;
- #else /* not RE_ENABLE_I18N */
--build_charclass (sbcset, class_name, syntax)
-+build_charclass (trans, sbcset, class_name, syntax)
- #endif /* not RE_ENABLE_I18N */
-+ RE_TRANSLATE_TYPE trans;
- re_bitset_ptr_t sbcset;
- const unsigned char *class_name;
- reg_syntax_t syntax;
-@@ -3235,11 +3244,14 @@
- mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
- #endif /* RE_ENABLE_I18N */
-
--#define BUILD_CHARCLASS_LOOP(ctype_func)\
-- for (i = 0; i < SBC_MAX; ++i) \
-- { \
-- if (ctype_func (i)) \
-- bitset_set (sbcset, i); \
-+#define BUILD_CHARCLASS_LOOP(ctype_func) \
-+ for (i = 0; i < SBC_MAX; ++i) \
-+ { \
-+ if (ctype_func (i)) \
-+ { \
-+ int ch = trans ? trans[i] : i; \
-+ bitset_set (sbcset, ch); \
-+ } \
- }
-
- if (strcmp (name, "alnum") == 0)
-@@ -3273,8 +3285,9 @@
- }
-
- static bin_tree_t *
--build_word_op (dfa, not, err)
-+build_word_op (dfa, trans, not, err)
- re_dfa_t *dfa;
-+ RE_TRANSLATE_TYPE trans;
- int not;
- reg_errcode_t *err;
- {
-@@ -3324,11 +3337,11 @@
- }
-
- /* We don't care the syntax in this case. */
-- ret = build_charclass (sbcset,
-+ ret = build_charclass (trans, sbcset,
- #ifdef RE_ENABLE_I18N
- mbcset, &alloc,
- #endif /* RE_ENABLE_I18N */
-- (const unsigned char *) "alpha", 0);
-+ (const unsigned char *) "alnum", 0);
-
- if (BE (ret != REG_NOERROR, 0))
- {
---- glibc-2.3.2/posix/regex.h 2002-05-24 04:38:26.000000000 -0400
-+++ glibc-2.3.2/posix/regex.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Definitions for data structures and routines for the regular
- expression library.
-- Copyright (C) 1985,1989-93,1995-98,2000,2001,2002
-+ Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -22,6 +22,8 @@
- #ifndef _REGEX_H
- #define _REGEX_H 1
-
-+#include <sys/types.h>
-+
- /* Allow the use in C++ code. */
- #ifdef __cplusplus
- extern "C" {
---- glibc-2.3.2/posix/regexec.c 2003-02-28 19:13:12.000000000 -0500
-+++ glibc-2.3.2/posix/regexec.c 2003-08-21 08:37:07.000000000 -0400
-@@ -50,10 +50,10 @@
- int ret_len);
- static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
- int nregs, int regs_allocated);
--static inline re_dfastate_t *acquire_init_state_context (reg_errcode_t *err,
-- const regex_t *preg,
-- const re_match_context_t *mctx,
-- int idx);
-+static re_dfastate_t *acquire_init_state_context (reg_errcode_t *err,
-+ const regex_t *preg,
-+ const re_match_context_t *mctx,
-+ int idx);
- static reg_errcode_t prune_impossible_nodes (const regex_t *preg,
- re_match_context_t *mctx);
- static int check_matching (const regex_t *preg, re_match_context_t *mctx,
-@@ -906,7 +906,7 @@
- We must select appropriate initial state depending on the context,
- since initial states may have constraints like "\<", "^", etc.. */
-
--static inline re_dfastate_t *
-+static re_dfastate_t *
- acquire_init_state_context (err, preg, mctx, idx)
- reg_errcode_t *err;
- const regex_t *preg;
-@@ -1507,7 +1507,7 @@
-
- /* Helper functions. */
-
--static inline reg_errcode_t
-+static reg_errcode_t
- clean_state_log_if_need (mctx, next_state_log_idx)
- re_match_context_t *mctx;
- int next_state_log_idx;
-@@ -3334,12 +3334,6 @@
- match it the context. */
- if (constraint)
- {
-- if (constraint & NEXT_WORD_CONSTRAINT)
-- for (j = 0; j < BITSET_UINTS; ++j)
-- accepts[j] &= dfa->word_char[j];
-- if (constraint & NEXT_NOTWORD_CONSTRAINT)
-- for (j = 0; j < BITSET_UINTS; ++j)
-- accepts[j] &= ~dfa->word_char[j];
- if (constraint & NEXT_NEWLINE_CONSTRAINT)
- {
- int accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
-@@ -3349,6 +3343,17 @@
- else
- continue;
- }
-+ if (constraint & NEXT_ENDBUF_CONSTRAINT)
-+ {
-+ bitset_empty (accepts);
-+ continue;
-+ }
-+ if (constraint & NEXT_WORD_CONSTRAINT)
-+ for (j = 0; j < BITSET_UINTS; ++j)
-+ accepts[j] &= dfa->word_char[j];
-+ if (constraint & NEXT_NOTWORD_CONSTRAINT)
-+ for (j = 0; j < BITSET_UINTS; ++j)
-+ accepts[j] &= ~dfa->word_char[j];
- }
-
- /* Then divide `accepts' into DFA states, or create a new
-@@ -3523,7 +3528,7 @@
- if (elem_len <= char_len)
- {
- collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
-- in_collseq = collseq_table_lookup (collseqwc, wc);
-+ in_collseq = __collseq_table_lookup (collseqwc, wc);
- }
- else
- in_collseq = find_collation_sequence_value (pin, elem_len);
---- glibc-2.3.2/posix/sched.h 2003-02-06 14:11:56.000000000 -0500
-+++ glibc-2.3.2/posix/sched.h 2003-05-12 12:13:06.000000000 -0400
-@@ -64,13 +64,20 @@
-
-
- #ifdef __USE_GNU
-+/* Access macros for `cpu_set'. */
-+#define CPU_SETSIZE __CPU_SETSIZE
-+#define CPU_SET(cpu, cpusetp) __CPU_SET (cpu, cpusetp)
-+#define CPU_CLR(cpu, cpusetp) __CPU_CLR (cpu, cpusetp)
-+#define CPU_ISSET(cpu, cpusetp) __CPU_ISSET (cpu, cpusetp)
-+#define CPU_ZERO(cpusetp) __CPU_ZERO (cpusetp)
-+
-+
- /* Set the CPU affinity for a task */
--extern int sched_setaffinity (__pid_t __pid, unsigned int __len,
-- unsigned long int *__mask) __THROW;
-+extern int sched_setaffinity (__pid_t __pid, __const cpu_set_t *__mask)
-+ __THROW;
-
- /* Get the CPU affinity for a task */
--extern int sched_getaffinity (__pid_t __pid, unsigned int __len,
-- unsigned long int *__mask) __THROW;
-+extern int sched_getaffinity (__pid_t __pid, cpu_set_t *__mask) __THROW;
- #endif
-
- __END_DECLS
---- glibc-2.3.2/posix/spawn.h 2001-07-07 15:21:16.000000000 -0400
-+++ glibc-2.3.2/posix/spawn.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX spawn interface.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -62,20 +62,26 @@
- __BEGIN_DECLS
-
- /* Spawn a new process executing PATH with the attributes describes in *ATTRP.
-- Before running the process perform the actions described in FILE-ACTIONS. */
-+ Before running the process perform the actions described in FILE-ACTIONS.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern int posix_spawn (pid_t *__restrict __pid,
- __const char *__restrict __path,
- __const posix_spawn_file_actions_t *__restrict
- __file_actions,
- __const posix_spawnattr_t *__restrict __attrp,
- char *__const argv[__restrict_arr],
-- char *__const envp[__restrict_arr]) __THROW;
-+ char *__const envp[__restrict_arr]);
-+
-+/* Similar to `posix_spawn' but search for FILE in the PATH.
-
--/* Similar to `posix_spawn' but search for FILE in the PATH. */
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern int posix_spawnp (pid_t *__pid, __const char *__file,
- __const posix_spawn_file_actions_t *__file_actions,
- __const posix_spawnattr_t *__attrp,
-- char *__const argv[], char *__const envp[]) __THROW;
-+ char *__const argv[], char *__const envp[]);
-
-
- /* Initialize data structure with attributes for `spawn' to default values. */
---- glibc-2.3.2/posix/sys/wait.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/posix/sys/wait.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1994,1996-2001,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
-@@ -105,8 +105,11 @@
-
-
- /* Wait for a child to die. When one does, put its status in *STAT_LOC
-- and return its process ID. For errors, return (pid_t) -1. */
--extern __pid_t wait (__WAIT_STATUS __stat_loc) __THROW;
-+ and return its process ID. For errors, return (pid_t) -1.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern __pid_t wait (__WAIT_STATUS __stat_loc);
-
- #ifdef __USE_BSD
- /* Special values for the PID argument to `waitpid' and `wait4'. */
-@@ -125,8 +128,11 @@
- is not already dead, return (pid_t) 0. If successful,
- return PID and store the dead child's status in STAT_LOC.
- Return (pid_t) -1 for errors. If the WUNTRACED bit is
-- set in OPTIONS, return status for stopped children; otherwise don't. */
--extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options) __THROW;
-+ set in OPTIONS, return status for stopped children; otherwise don't.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options);
-
- #if defined __USE_SVID || defined __USE_XOPEN
- # define __need_siginfo_t
-@@ -138,9 +144,12 @@
- If IDTYPE is P_ALL, match any process.
- If the WNOHANG bit is set in OPTIONS, and that child
- is not already dead, clear *INFOP and return 0. If successful, store
-- exit code and status in *INFOP. */
-+ exit code and status in *INFOP.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop,
-- int __options) __THROW;
-+ int __options);
- #endif
-
- #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
---- glibc-2.3.2/posix/transbug.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/transbug.c 2003-06-25 07:04:48.000000000 -0400
-@@ -0,0 +1,142 @@
-+#include <stdio.h>
-+#include <ctype.h>
-+#include <errno.h>
-+#include <locale.h>
-+#include <regex.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <string.h>
-+
-+/* lowercase chars mapped to uppercase */
-+static const char casetable[] = {
-+ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
-+ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
-+ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
-+ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
-+ /* ' ' '!' '"' '#' '$' '%' '&' ''' */
-+ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
-+ /* '(' ')' '*' '+' ',' '-' '.' '/' */
-+ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
-+ /* '0' '1' '2' '3' '4' '5' '6' '7' */
-+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
-+ /* '8' '9' ':' ';' '<' '=' '>' '?' */
-+ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
-+ /* '@' 'A' 'B' 'C' 'D' 'E' 'F' 'G' */
-+ '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
-+ /* 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' */
-+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
-+ /* 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' */
-+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
-+ /* 'X' 'Y' 'Z' '[' '\' ']' '^' '_' */
-+ '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
-+ /* '`' 'a' 'b' 'c' 'd' 'e' 'f' 'g' */
-+ '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
-+ /* 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' */
-+ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
-+ /* 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' */
-+ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
-+ /* 'x' 'y' 'z' '{' '|' '}' '~' */
-+ '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
-+
-+ /* Latin 1: */
-+ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
-+ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
-+ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
-+ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
-+ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
-+ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
-+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
-+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
-+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
-+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
-+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327',
-+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337',
-+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
-+ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
-+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
-+ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
-+};
-+
-+
-+static int
-+run_test (const char *pattern, struct re_registers *regs)
-+{
-+ static char text[] = "1111AAAA2222bbbb";
-+
-+ struct re_pattern_buffer pat;
-+
-+ const char *err;
-+ int res;
-+ int start2;
-+
-+ memset (&pat, '\0', sizeof (pat));
-+ memset (regs, '\0', 2 * sizeof (regs[0]));
-+ pat.allocated = 0; /* regex will allocate the buffer */
-+ pat.fastmap = (char *) malloc (256);
-+ if (pat.fastmap == NULL)
-+ {
-+ puts ("out of memory");
-+ exit (1);
-+ }
-+
-+ pat.translate = (char *) casetable;
-+
-+ err = re_compile_pattern (pattern, strlen (pattern), &pat);
-+ if (err != NULL)
-+ {
-+ fprintf (stderr, "/%s/: %s\n", pattern, err);
-+ exit (1);
-+ }
-+ res = re_search (&pat, text, strlen (text), 0, strlen (text), &regs[0]);
-+ if (res < 0)
-+ printf ("search 1: res = %d\n", res);
-+ else
-+ printf ("search 1: res = %d, start = %d, end = %d\n",
-+ res, regs[0].start[0], regs[0].end[0]);
-+
-+ if (regs[0].end == NULL)
-+ start2 = 8;
-+ else
-+ start2 = regs[0].end[0] + 1;
-+ regs[1] = regs[0];
-+ res = re_search (&pat, text, strlen (text), start2, strlen (text), &regs[1]);
-+ if (res < 0)
-+ printf ("search 2: res = %d\n", res);
-+ else
-+ printf ("search 2: res = %d, start = %d, end = %d\n",
-+ res, regs[1].start[0], regs[1].end[0]);
-+
-+ return res < 0 ? 1 : 0;
-+}
-+
-+
-+static int
-+do_test (void)
-+{
-+ static const char lower[] = "[[:lower:]]+";
-+ static const char upper[] = "[[:upper:]]+";
-+ struct re_registers regs[4];
-+
-+ setlocale (LC_ALL, "C");
-+
-+ (void) re_set_syntax (RE_SYNTAX_GNU_AWK);
-+
-+ int result;
-+#define CHECK(exp) \
-+ if (exp) { puts (#exp); result = 1; }
-+
-+ result = run_test (lower, regs);
-+ result |= run_test (upper, &regs[2]);
-+ if (! result)
-+ {
-+ CHECK (regs[0].start[0] != regs[2].start[0]);
-+ CHECK (regs[0].end[0] != regs[2].end[0]);
-+ CHECK (regs[1].start[0] != regs[3].start[0]);
-+ CHECK (regs[1].end[0] != regs[3].end[0]);
-+ }
-+
-+ return result;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/posix/tst-nanosleep.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/tst-nanosleep.c 2003-08-21 08:37:07.000000000 -0400
-@@ -0,0 +1,58 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <sys/time.h>
-+#include <time.h>
-+
-+
-+/* Test that nanosleep() does sleep. */
-+static int
-+do_test (void)
-+{
-+ /* Current time. */
-+ struct timeval tv1;
-+ (void) gettimeofday (&tv1, NULL);
-+
-+ struct timespec ts;
-+ ts.tv_sec = 1;
-+ ts.tv_nsec = 0;
-+ TEMP_FAILURE_RETRY (nanosleep (&ts, &ts));
-+
-+ /* At least one second must have passed. */
-+ struct timeval tv2;
-+ (void) gettimeofday (&tv2, NULL);
-+
-+ tv2.tv_sec -= tv1.tv_sec;
-+ tv2.tv_usec -= tv1.tv_usec;
-+ if (tv2.tv_usec < 0)
-+ --tv2.tv_sec;
-+
-+ if (tv2.tv_sec < 1)
-+ {
-+ puts ("nanosleep didn't sleep long enough");
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/posix/tst-nice.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/posix/tst-nice.c 2003-03-20 06:40:36.000000000 -0500
-@@ -0,0 +1,66 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+
-+
-+/* Test that nice() does not incorrectly return 0. */
-+static int
-+do_test (void)
-+{
-+ int ret;
-+ const int incr = 10;
-+ int old;
-+
-+ /* Discover current nice value. */
-+ errno = 0;
-+ old = nice (0);
-+ if (old == -1 && errno != 0)
-+ {
-+ printf ("break: nice(%d) return: %d, %m\n", 0, old);
-+ return 1;
-+ }
-+
-+ /* Nice ourselves up. */
-+ errno = 0;
-+ ret = nice (incr);
-+ if (ret == -1 && errno != 0)
-+ {
-+ printf ("break: nice(%d) return: %d, %m\n", incr, ret);
-+ return 1;
-+ }
-+
-+ /* Check for return value being zero when it shouldn't. Cannot simply
-+ check for expected value since nice values are capped at 2^n-1.
-+ But we assume that we didn't start at the cap and so should have
-+ increased some. */
-+ if (ret <= old)
-+ {
-+ printf ("FAIL: retval (%d) of nice(%d) != %d\n", ret, incr, old + incr);
-+ return 1;
-+ }
-+
-+ printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret);
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/posix/unistd.h 2002-10-14 00:03:29.000000000 -0400
-+++ glibc-2.3.2/posix/unistd.h 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-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
-@@ -30,34 +30,30 @@
- /* These may be used to determine what facilities are present at compile time.
- Their values can be obtained at run time from `sysconf'. */
-
--/* POSIX Standard approved as ISO/IEC 9945-1 as of August, 1988 and
-- extended by POSIX-1b (aka POSIX-4) and POSIX-1c (aka POSIX threads). */
--#define _POSIX_VERSION 199506L
-+/* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */
-+#define _POSIX_VERSION 200112L
-
- /* These are not #ifdef __USE_POSIX2 because they are
- in the theoretically application-owned namespace. */
-
--/* POSIX Standard approved as ISO/IEC 9945-2 as of December, 1993. */
--#define _POSIX2_C_VERSION 199209L
--
- /* The utilities on GNU systems also correspond to this version. */
--#define _POSIX2_VERSION 199209L
-+#define _POSIX2_VERSION 200112L
-
- /* If defined, the implementation supports the
- C Language Bindings Option. */
--#define _POSIX2_C_BIND 1
-+#define _POSIX2_C_BIND 200112L
-
- /* If defined, the implementation supports the
- C Language Development Utilities Option. */
--#define _POSIX2_C_DEV 1
-+#define _POSIX2_C_DEV 200112L
-
- /* If defined, the implementation supports the
- Software Development Utilities Option. */
--#define _POSIX2_SW_DEV 1
-+#define _POSIX2_SW_DEV 200112L
-
- /* If defined, the implementation supports the
- creation of locales with the localedef utility. */
--#define _POSIX2_LOCALEDEF 1
-+#define _POSIX2_LOCALEDEF 200112L
-
- /* X/Open version number to which the library conforms. It is selectable. */
- #ifdef __USE_UNIX98
-@@ -302,31 +298,51 @@
- extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW;
- #endif
-
--/* Close the file descriptor FD. */
--extern int close (int __fd) __THROW;
-+/* Close the file descriptor FD.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int close (int __fd);
-
- /* Read NBYTES into BUF from FD. Return the
-- number read, -1 for errors or 0 for EOF. */
--extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __THROW;
-+ number read, -1 for errors or 0 for EOF.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t read (int __fd, void *__buf, size_t __nbytes);
-
--/* Write N bytes of BUF to FD. Return the number written, or -1. */
--extern ssize_t write (int __fd, __const void *__buf, size_t __n) __THROW;
-+/* Write N bytes of BUF to FD. Return the number written, or -1.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t write (int __fd, __const void *__buf, size_t __n);
-
- #ifdef __USE_UNIX98
- # ifndef __USE_FILE_OFFSET64
--extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
-- __THROW;
-+/* Read NBYTES into BUF from FD at the given position OFFSET without
-+ changing the file pointer. Return the number read, -1 for errors
-+ or 0 for EOF.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
-+ __off_t __offset);
-+
-+/* Write N bytes of BUF to FD at the given position OFFSET without
-+ changing the file pointer. Return the number written, or -1.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
-- __off_t __offset) __THROW;
-+ __off_t __offset);
- # else
- # ifdef __REDIRECT
- extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
-- __off64_t __offset) __THROW,
-+ __off64_t __offset),
- pread64);
- extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
-- size_t __nbytes, __off64_t __offset)
-- __THROW,
-- pwrite64);
-+ size_t __nbytes, __off64_t __offset),
-+ pwrite64);
- # else
- # define pread pread64
- # define pwrite pwrite64
-@@ -338,11 +354,11 @@
- changing the file pointer. Return the number read, -1 for errors
- or 0 for EOF. */
- extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
-- __off64_t __offset) __THROW;
-+ __off64_t __offset);
- /* Write N bytes of BUF to FD at the given position OFFSET without
- changing the file pointer. Return the number written, or -1. */
- extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
-- __off64_t __offset) __THROW;
-+ __off64_t __offset);
- # endif
- #endif
-
-@@ -367,8 +383,11 @@
- If a signal handler does a `longjmp' or modifies the handling of the
- SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
- signal afterwards is undefined. There is no return value to indicate
-- error, but if `sleep' returns SECONDS, it probably didn't work. */
--extern unsigned int sleep (unsigned int __seconds) __THROW;
-+ error, but if `sleep' returns SECONDS, it probably didn't work.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern unsigned int sleep (unsigned int __seconds);
-
- #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
- /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
-@@ -379,14 +398,20 @@
- __THROW;
-
- /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
-- or ignored. */
--extern int usleep (__useconds_t __useconds) __THROW;
-+ or ignored.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int usleep (__useconds_t __useconds);
- #endif
-
-
- /* Suspend the process until a signal arrives.
-- This always returns -1 and sets `errno' to EINTR. */
--extern int pause (void) __THROW;
-+ This always returns -1 and sets `errno' to EINTR.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int pause (void);
-
-
- /* Change the owner and group of FILE. */
-@@ -721,13 +746,19 @@
- extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
-
-
--/* Return the login name of the user. */
--extern char *getlogin (void) __THROW;
-+/* Return the login name of the user.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern char *getlogin (void);
- #if defined __USE_REENTRANT || defined __USE_UNIX98
- /* Return at most NAME_LEN characters of the login name of the user in NAME.
- If it cannot be determined or some other error occurred, return the error
-- code. Otherwise return 0. */
--extern int getlogin_r (char *__name, size_t __name_len) __THROW;
-+ code. Otherwise return 0.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern int getlogin_r (char *__name, size_t __name_len);
- #endif
-
- #ifdef __USE_BSD
-@@ -814,20 +845,23 @@
-
- /* Prompt with PROMPT and read a string from the terminal without echoing.
- Uses /dev/tty if possible; otherwise stderr and stdin. */
--extern char *getpass (__const char *__prompt) __THROW;
-+extern char *getpass (__const char *__prompt);
- #endif /* Use BSD || X/Open. */
-
-
- #if defined __USE_BSD || defined __USE_XOPEN
--/* Make all changes done to FD actually appear on disk. */
--extern int fsync (int __fd) __THROW;
-+/* Make all changes done to FD actually appear on disk.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int fsync (int __fd);
- #endif /* Use BSD || X/Open. */
-
-
- #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-
--/* Return the current machine's Internet number. */
--extern long int gethostid (void) __THROW;
-+/* Return identifier for the current host. */
-+extern long int gethostid (void);
-
- /* Make all changes done to all files actually appear on disk. */
- extern void sync (void) __THROW;
-@@ -914,7 +948,10 @@
-
- /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
- LEN is always relative to the current file position.
-- The CMD argument is one of the following. */
-+ The CMD argument is one of the following.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-
- # define F_ULOCK 0 /* Unlock a previously locked region. */
- # define F_LOCK 1 /* Lock a region for exclusive use. */
-@@ -922,17 +959,17 @@
- # define F_TEST 3 /* Test a region for other processes locks. */
-
- # ifndef __USE_FILE_OFFSET64
--extern int lockf (int __fd, int __cmd, __off_t __len) __THROW;
-+extern int lockf (int __fd, int __cmd, __off_t __len);
- # else
- # ifdef __REDIRECT
--extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW,
-+extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
- lockf64);
- # else
- # define lockf lockf64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
--extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW;
-+extern int lockf64 (int __fd, int __cmd, __off64_t __len);
- # endif
- #endif /* Use misc and F_LOCK not already defined. */
-
-@@ -984,25 +1021,6 @@
- extern char *ctermid (char *__s) __THROW;
- #endif
-
--
--#ifdef __USE_POSIX199309
--/* This function is only available if the system has POSIX threads. */
--
--/* Install handlers to be called when a new process is created with FORK.
-- The PREPARE handler is called in the parent process just before performing
-- FORK. The PARENT handler is called in the parent process just after FORK.
-- The CHILD handler is called in the child process. Each of the three
-- handlers can be NULL, meaning that no handler needs to be called at that
-- point.
-- PTHREAD_ATFORK can be called several times, in which case the PREPARE
-- handlers are called in LIFO order (last added with PTHREAD_ATFORK,
-- first called before FORK), and the PARENT and CHILD handlers are called
-- in FIFO (first added, first called). */
--extern int pthread_atfork (void (*__prepare) (void),
-- void (*__parent) (void),
-- void (*__child) (void)) __THROW;
--#endif
--
- __END_DECLS
-
- #endif /* unistd.h */
---- glibc-2.3.2/posix/wordexp-test.c 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/posix/wordexp-test.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2001, 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
-@@ -109,6 +109,11 @@
- { 0, NULL, "$((-1))", 0, 1, { "-1", }, IFS },
- { 0, NULL, "$[50+20]", 0, 1, { "70", }, IFS },
- { 0, NULL, "$(((2+3)*(4+5)))", 0, 1, { "45", }, IFS },
-+ { 0, NULL, "$((010))", 0, 1, { "8" }, IFS },
-+ { 0, NULL, "$((0x10))", 0, 1, { "16" }, IFS },
-+ { 0, NULL, "$((010+0x10))", 0, 1, { "24" }, IFS },
-+ { 0, NULL, "$((-010+0x10))", 0, 1, { "8" }, IFS },
-+ { 0, NULL, "$((-0x10+010))", 0, 1, { "-8" }, IFS },
-
- /* Advanced parameter expansion */
- { 0, NULL, "${var:-bar}", 0, 1, { "bar", }, IFS },
-@@ -201,6 +206,7 @@
- { WRDE_SYNTAX, NULL, "$(for i in)", 0, 0, { NULL, }, IFS },
- { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
- { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
-+ { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
-
- { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
- };
---- glibc-2.3.2/posix/wordexp.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/posix/wordexp.h 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 92, 1996-1999, 2001, 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
-@@ -61,7 +61,7 @@
-
- /* Do word expansion of WORDS into PWORDEXP. */
- extern int wordexp (__const char *__restrict __words,
-- wordexp_t *__restrict __pwordexp, int __flags) __THROW;
-+ wordexp_t *__restrict __pwordexp, int __flags);
-
- /* Free the storage allocated by a `wordexp' call. */
- extern void wordfree (wordexp_t *__wordexp) __THROW;
---- glibc-2.3.2/pwd/Makefile 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/pwd/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1996,1997,1998,1999,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
-@@ -34,6 +34,9 @@
-
- CFLAGS-getpwuid_r.c = -DUSE_NSCD=1
- CFLAGS-getpwnam_r.c = -DUSE_NSCD=1
-+CFLAGS-getpwent_r.c = -fexceptions
-+CFLAGS-getpwent.c = -fexceptions
-+CFLAGS-getpw.c = -fexceptions
-
- endif
-
---- glibc-2.3.2/pwd/pwd.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/pwd/pwd.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,95,96,97,98,99,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1995-2001,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
-@@ -66,30 +66,55 @@
-
-
- #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN_EXTENDED
--/* Rewind the password-file stream. */
--extern void setpwent (void) __THROW;
-+/* Rewind the password-file stream.
-
--/* Close the password-file stream. */
--extern void endpwent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setpwent (void);
-
--/* Read an entry from the password-file stream, opening it if necessary. */
--extern struct passwd *getpwent (void) __THROW;
-+/* Close the password-file stream.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endpwent (void);
-+
-+/* Read an entry from the password-file stream, opening it if necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct passwd *getpwent (void);
- #endif
-
- #ifdef __USE_SVID
--/* Read an entry from STREAM. */
--extern struct passwd *fgetpwent (FILE *__stream) __THROW;
-+/* Read an entry from STREAM.
-
--/* Write the given entry onto the given stream. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct passwd *fgetpwent (FILE *__stream);
-+
-+/* Write the given entry onto the given stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int putpwent (__const struct passwd *__restrict __p,
-- FILE *__restrict __f) __THROW;
-+ FILE *__restrict __f);
- #endif
-
--/* Search for an entry with a matching user ID. */
--extern struct passwd *getpwuid (__uid_t __uid) __THROW;
-+/* Search for an entry with a matching user ID.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct passwd *getpwuid (__uid_t __uid);
-
--/* Search for an entry with a matching username. */
--extern struct passwd *getpwnam (__const char *__name) __THROW;
-+/* Search for an entry with a matching username.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct passwd *getpwnam (__const char *__name);
-
- #if defined __USE_POSIX || defined __USE_MISC
-
-@@ -108,29 +133,38 @@
- POSIX people would choose. */
-
- # if defined __USE_SVID || defined __USE_MISC
-+/* This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getpwent_r (struct passwd *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct passwd **__restrict __result) __THROW;
-+ struct passwd **__restrict __result);
- # endif
-
- extern int getpwuid_r (__uid_t __uid,
- struct passwd *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct passwd **__restrict __result) __THROW;
-+ struct passwd **__restrict __result);
-
- extern int getpwnam_r (__const char *__restrict __name,
- struct passwd *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct passwd **__restrict __result) __THROW;
-+ struct passwd **__restrict __result);
-
-
- # ifdef __USE_SVID
- /* Read an entry from STREAM. This function is not standardized and
-- probably never will. */
-+ probably never will.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int fgetpwent_r (FILE *__restrict __stream,
- struct passwd *__restrict __resultbuf,
- char *__restrict __buffer, size_t __buflen,
-- struct passwd **__restrict __result) __THROW;
-+ struct passwd **__restrict __result);
- # endif
-
- #endif /* POSIX or reentrant */
-@@ -138,8 +172,13 @@
- #ifdef __USE_GNU
- /* Re-construct the password-file line for the given uid
- in the given buffer. This knows the format that the caller
-- will expect, but this need not be the format of the password file. */
--extern int getpw (__uid_t __uid, char *__buffer) __THROW;
-+ will expect, but this need not be the format of the password file.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int getpw (__uid_t __uid, char *__buffer);
- #endif
-
- __END_DECLS
---- glibc-2.3.2/resolv/Makefile 2003-02-25 18:40:08.000000000 -0500
-+++ glibc-2.3.2/resolv/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -34,6 +34,8 @@
-
- tests = tst-aton tst-leaks
-
-+generate := mtrace-tst-leaks tst-leaks.mtrace
-+
- include ../Makeconfig
-
- extra-libs := libresolv libnss_dns
-@@ -71,6 +73,8 @@
- -Dgetnetbyname=res_getnetbyname \
- -Dgetnetbyaddr=res_getnetbyaddr
-
-+CFLAGS-res_hconf.c = -fexceptions
-+
- # The BIND code elicits some harmless warnings.
- +cflags += -Wno-strict-prototypes -Wno-write-strings
-
-@@ -93,6 +97,8 @@
- tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
- $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
- $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@
-+ifeq (no,$(cross-compiling))
- ifneq (no,$(PERL))
- tests: $(objpfx)mtrace-tst-leaks
- endif
-+endif
---- glibc-2.3.2/resolv/Versions 2002-12-15 19:57:39.000000000 -0500
-+++ glibc-2.3.2/resolv/Versions 2003-08-21 08:37:07.000000000 -0400
-@@ -4,9 +4,11 @@
- GLIBC_2.0 {
- %if !(USE_TLS && HAVE___THREAD)
- # global variables
-- _h_errno; _res;
-+ _h_errno;
- %endif
-
-+ _res;
-+
- # helper functions
- __h_errno_location;
-
-@@ -34,7 +36,7 @@
-
- %if USE_TLS && HAVE___THREAD
- # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
-- h_errno; _res;
-+ h_errno; __resp;
- %endif
- }
- }
---- glibc-2.3.2/resolv/gethnamaddr.c 2003-01-02 05:37:12.000000000 -0500
-+++ glibc-2.3.2/resolv/gethnamaddr.c 2003-01-04 12:48:02.000000000 -0500
-@@ -51,7 +51,7 @@
-
- #if defined(LIBC_SCCS) && !defined(lint)
- static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
--static char rcsid[] = "$Id: gethnamaddr.c,v 1.44 2003/01/01 16:29:36 aj Exp $";
-+static char rcsid[] = "$Id: gethnamaddr.c,v 1.43 2002/10/17 21:49:34 drepper Exp $";
- #endif /* LIBC_SCCS and not lint */
-
- #include <sys/types.h>
---- glibc-2.3.2/resolv/herror.c 2002-08-07 22:08:20.000000000 -0400
-+++ glibc-2.3.2/resolv/herror.c 2003-09-19 22:37:06.000000000 -0400
-@@ -62,6 +62,7 @@
- #include <unistd.h>
-
- #include <libintl.h>
-+#include <not-cancel.h>
-
- const char *h_errlist[] = {
- N_("Resolver Error 0 (no error)"),
-@@ -94,7 +95,7 @@
- v++;
- v->iov_base = "\n";
- v->iov_len = 1;
-- __writev(STDERR_FILENO, iov, (v - iov) + 1);
-+ writev_not_cancel_no_status(STDERR_FILENO, iov, (v - iov) + 1);
- }
-
- /*
---- glibc-2.3.2/resolv/netdb.h 2002-08-09 22:52:19.000000000 -0400
-+++ glibc-2.3.2/resolv/netdb.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
-+ /* Copyright (C) 1996-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
-@@ -104,102 +104,146 @@
- };
-
- /* Open host data base files and mark them as staying open even after
-- a later search if STAY_OPEN is non-zero. */
--extern void sethostent (int __stay_open) __THROW;
-+ a later search if STAY_OPEN is non-zero.
-
--/* Close host data base files and clear `stay open' flag. */
--extern void endhostent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void sethostent (int __stay_open);
-+
-+/* Close host data base files and clear `stay open' flag.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endhostent (void);
-
- /* Get next entry from host data base file. Open data base if
-- necessary. */
--extern struct hostent *gethostent (void) __THROW;
-+ necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct hostent *gethostent (void);
-
- /* Return entry from host data base which address match ADDR with
-- length LEN and type TYPE. */
-+ length LEN and type TYPE.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len,
-- int __type) __THROW;
-+ int __type);
-
--/* Return entry from host data base for host with NAME. */
--extern struct hostent *gethostbyname (__const char *__name) __THROW;
-+/* Return entry from host data base for host with NAME.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct hostent *gethostbyname (__const char *__name);
-
- #ifdef __USE_MISC
- /* Return entry from host data base for host with NAME. AF must be
- set to the address type which is `AF_INET' for IPv4 or `AF_INET6'
-- for IPv6. */
--extern struct hostent *gethostbyname2 (__const char *__name, int __af) __THROW;
-+ for IPv6.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct hostent *gethostbyname2 (__const char *__name, int __af);
-
- /* Reentrant versions of the functions above. The additional
- arguments specify a buffer of BUFLEN starting at BUF. The last
- argument is a pointer to a variable which gets the value which
- would be stored in the global variable `herrno' by the
-- non-reentrant functions. */
-+ non-reentrant functions.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int gethostent_r (struct hostent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct hostent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
-
- extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len,
- int __type,
- struct hostent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct hostent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
-
- extern int gethostbyname_r (__const char *__restrict __name,
- struct hostent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct hostent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
-
- extern int gethostbyname2_r (__const char *__restrict __name, int __af,
- struct hostent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct hostent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
- #endif /* misc */
-
-
- /* Open network data base files and mark them as staying open even
-- after a later search if STAY_OPEN is non-zero. */
--extern void setnetent (int __stay_open) __THROW;
-+ after a later search if STAY_OPEN is non-zero.
-
--/* Close network data base files and clear `stay open' flag. */
--extern void endnetent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setnetent (int __stay_open);
-+
-+/* Close network data base files and clear `stay open' flag.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endnetent (void);
-
- /* Get next entry from network data base file. Open data base if
-- necessary. */
--extern struct netent *getnetent (void) __THROW;
-+ necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct netent *getnetent (void);
-
- /* Return entry from network data base which address match NET and
-- type TYPE. */
--extern struct netent *getnetbyaddr (uint32_t __net, int __type)
-- __THROW;
-+ type TYPE.
-
--/* Return entry from network data base for network with NAME. */
--extern struct netent *getnetbyname (__const char *__name) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct netent *getnetbyaddr (uint32_t __net, int __type);
-+
-+/* Return entry from network data base for network with NAME.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct netent *getnetbyname (__const char *__name);
-
- #ifdef __USE_MISC
- /* Reentrant versions of the functions above. The additional
- arguments specify a buffer of BUFLEN starting at BUF. The last
- argument is a pointer to a variable which gets the value which
- would be stored in the global variable `herrno' by the
-- non-reentrant functions. */
-+ non-reentrant functions.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int getnetent_r (struct netent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct netent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
-
- extern int getnetbyaddr_r (uint32_t __net, int __type,
- struct netent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct netent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
-
- extern int getnetbyname_r (__const char *__restrict __name,
- struct netent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
- struct netent **__restrict __result,
-- int *__restrict __h_errnop) __THROW;
-+ int *__restrict __h_errnop);
- #endif /* misc */
-
-
-@@ -213,44 +257,63 @@
- };
-
- /* Open service data base files and mark them as staying open even
-- after a later search if STAY_OPEN is non-zero. */
--extern void setservent (int __stay_open) __THROW;
-+ after a later search if STAY_OPEN is non-zero.
-
--/* Close service data base files and clear `stay open' flag. */
--extern void endservent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setservent (int __stay_open);
-+
-+/* Close service data base files and clear `stay open' flag.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endservent (void);
-
- /* Get next entry from service data base file. Open data base if
-- necessary. */
--extern struct servent *getservent (void) __THROW;
-+ necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct servent *getservent (void);
-
- /* Return entry from network data base for network with NAME and
-- protocol PROTO. */
-+ protocol PROTO.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern struct servent *getservbyname (__const char *__name,
-- __const char *__proto) __THROW;
-+ __const char *__proto);
-
- /* Return entry from service data base which matches port PORT and
-- protocol PROTO. */
--extern struct servent *getservbyport (int __port, __const char *__proto)
-- __THROW;
-+ protocol PROTO.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct servent *getservbyport (int __port, __const char *__proto);
-
-
- #ifdef __USE_MISC
- /* Reentrant versions of the functions above. The additional
-- arguments specify a buffer of BUFLEN starting at BUF. */
-+ arguments specify a buffer of BUFLEN starting at BUF.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int getservent_r (struct servent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct servent **__restrict __result) __THROW;
-+ struct servent **__restrict __result);
-
- extern int getservbyname_r (__const char *__restrict __name,
- __const char *__restrict __proto,
- struct servent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct servent **__restrict __result) __THROW;
-+ struct servent **__restrict __result);
-
- extern int getservbyport_r (int __port, __const char *__restrict __proto,
- struct servent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct servent **__restrict __result) __THROW;
-+ struct servent **__restrict __result);
- #endif /* misc */
-
-
-@@ -263,64 +326,108 @@
- };
-
- /* Open protocol data base files and mark them as staying open even
-- after a later search if STAY_OPEN is non-zero. */
--extern void setprotoent (int __stay_open) __THROW;
-+ after a later search if STAY_OPEN is non-zero.
-
--/* Close protocol data base files and clear `stay open' flag. */
--extern void endprotoent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setprotoent (int __stay_open);
-+
-+/* Close protocol data base files and clear `stay open' flag.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endprotoent (void);
-
- /* Get next entry from protocol data base file. Open data base if
-- necessary. */
--extern struct protoent *getprotoent (void) __THROW;
-+ necessary.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct protoent *getprotoent (void);
-
--/* Return entry from protocol data base for network with NAME. */
--extern struct protoent *getprotobyname (__const char *__name) __THROW;
-+/* Return entry from protocol data base for network with NAME.
-
--/* Return entry from protocol data base which number is PROTO. */
--extern struct protoent *getprotobynumber (int __proto) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct protoent *getprotobyname (__const char *__name);
-+
-+/* Return entry from protocol data base which number is PROTO.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct protoent *getprotobynumber (int __proto);
-
-
- #ifdef __USE_MISC
- /* Reentrant versions of the functions above. The additional
-- arguments specify a buffer of BUFLEN starting at BUF. */
-+ arguments specify a buffer of BUFLEN starting at BUF.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int getprotoent_r (struct protoent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct protoent **__restrict __result) __THROW;
-+ struct protoent **__restrict __result);
-
- extern int getprotobyname_r (__const char *__restrict __name,
- struct protoent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct protoent **__restrict __result) __THROW;
-+ struct protoent **__restrict __result);
-
- extern int getprotobynumber_r (int __proto,
- struct protoent *__restrict __result_buf,
- char *__restrict __buf, size_t __buflen,
-- struct protoent **__restrict __result) __THROW;
--#endif /* misc */
-+ struct protoent **__restrict __result);
-+
-+
-+/* Establish network group NETGROUP for enumeration.
-
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int setnetgrent (__const char *__netgroup);
-
--/* Establish network group NETGROUP for enumeration. */
--extern int setnetgrent (__const char *__netgroup) __THROW;
-+/* Free all space allocated by previous `setnetgrent' call.
-
--/* Free all space allocated by previous `setnetgrent' call. */
--extern void endnetgrent (void) __THROW;
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern void endnetgrent (void);
-
- /* Get next member of netgroup established by last `setnetgrent' call
-- and return pointers to elements in HOSTP, USERP, and DOMAINP. */
-+ and return pointers to elements in HOSTP, USERP, and DOMAINP.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getnetgrent (char **__restrict __hostp,
- char **__restrict __userp,
-- char **__restrict __domainp) __THROW;
-+ char **__restrict __domainp);
-
--#ifdef __USE_MISC
--/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN). */
-+
-+/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN).
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int innetgr (__const char *__netgroup, __const char *__host,
-- __const char *__user, __const char *domain) __THROW;
-+ __const char *__user, __const char *domain);
-+
-+/* Reentrant version of `getnetgrent' where result is placed in BUFFER.
-
--/* Reentrant version of `getnetgrent' where result is placed in BUFFER. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getnetgrent_r (char **__restrict __hostp,
- char **__restrict __userp,
- char **__restrict __domainp,
-- char *__restrict __buffer, size_t __buflen) __THROW;
-+ char *__restrict __buffer, size_t __buflen);
- #endif /* misc */
-
-
-@@ -330,60 +437,98 @@
- executed as REMUSER. In *FD2P the descriptor to the socket for the
- connection is returned. The caller must have the right to use a
- reserved port. When the function returns *AHOST contains the
-- official host name. */
-+ official host name.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
- __const char *__restrict __locuser,
- __const char *__restrict __remuser,
-- __const char *__restrict __cmd, int *__restrict __fd2p)
-- __THROW;
-+ __const char *__restrict __cmd, int *__restrict __fd2p);
-
- /* This is the equivalent function where the protocol can be selected
-- and which therefore can be used for IPv6. */
-+ and which therefore can be used for IPv6.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
- __const char *__restrict __locuser,
- __const char *__restrict __remuser,
- __const char *__restrict __cmd, int *__restrict __fd2p,
-- sa_family_t __af) __THROW;
-+ sa_family_t __af);
-
- /* Call `rexecd' at port RPORT on remote machine *AHOST to execute
- CMD. The process runs at the remote machine using the ID of user
- NAME whose cleartext password is PASSWD. In *FD2P the descriptor
- to the socket for the connection is returned. When the function
-- returns *AHOST contains the official host name. */
-+ returns *AHOST contains the official host name.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int rexec (char **__restrict __ahost, int __rport,
- __const char *__restrict __name,
- __const char *__restrict __pass,
-- __const char *__restrict __cmd, int *__restrict __fd2p)
-- __THROW;
-+ __const char *__restrict __cmd, int *__restrict __fd2p);
-
- /* This is the equivalent function where the protocol can be selected
-- and which therefore can be used for IPv6. */
-+ and which therefore can be used for IPv6.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int rexec_af (char **__restrict __ahost, int __rport,
- __const char *__restrict __name,
- __const char *__restrict __pass,
- __const char *__restrict __cmd, int *__restrict __fd2p,
-- sa_family_t __af) __THROW;
-+ sa_family_t __af);
-
- /* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER.
- If SUSER is not zero the user tries to become superuser. Return 0 if
-- it is possible. */
-+ it is possible.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int ruserok (__const char *__rhost, int __suser,
-- __const char *__remuser, __const char *__locuser) __THROW;
-+ __const char *__remuser, __const char *__locuser);
-
- /* This is the equivalent function where the protocol can be selected
-- and which therefore can be used for IPv6. */
-+ and which therefore can be used for IPv6.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int ruserok_af (__const char *__rhost, int __suser,
- __const char *__remuser, __const char *__locuser,
-- sa_family_t __af) __THROW;
-+ sa_family_t __af);
-
- /* Try to allocate reserved port, returning a descriptor for a socket opened
- at this port or -1 if unsuccessful. The search for an available port
-- will start at ALPORT and continues with lower numbers. */
--extern int rresvport (int *__alport) __THROW;
-+ will start at ALPORT and continues with lower numbers.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int rresvport (int *__alport);
-
- /* This is the equivalent function where the protocol can be selected
-- and which therefore can be used for IPv6. */
--extern int rresvport_af (int *__alport, sa_family_t __af) __THROW;
-+ and which therefore can be used for IPv6.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int rresvport_af (int *__alport, sa_family_t __af);
- #endif
-
-
-@@ -424,6 +569,10 @@
- # define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */
- # define AI_CANONNAME 0x0002 /* Request for canonical name. */
- # define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */
-+# define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */
-+# define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
-+# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
-+ returned address type.. */
-
- /* Error values for `getaddrinfo' function. */
- # define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
-@@ -455,11 +604,14 @@
- # define NI_DGRAM 16 /* Look up UDP service rather than TCP. */
-
- /* Translate name of a service location and/or a service name to set of
-- socket addresses. */
-+ socket addresses.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int getaddrinfo (__const char *__restrict __name,
- __const char *__restrict __service,
- __const struct addrinfo *__restrict __req,
-- struct addrinfo **__restrict __pai) __THROW;
-+ struct addrinfo **__restrict __pai);
-
- /* Free `addrinfo' structure AI including associated storage. */
- extern void freeaddrinfo (struct addrinfo *__ai) __THROW;
-@@ -467,33 +619,45 @@
- /* Convert error return from getaddrinfo() to a string. */
- extern __const char *gai_strerror (int __ecode) __THROW;
-
--/* Translate a socket address to a location and service name. */
-+/* Translate a socket address to a location and service name.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int getnameinfo (__const struct sockaddr *__restrict __sa,
- socklen_t __salen, char *__restrict __host,
- socklen_t __hostlen, char *__restrict __serv,
-- socklen_t __servlen, unsigned int __flags) __THROW;
-+ socklen_t __servlen, unsigned int __flags);
-+#endif /* POSIX */
-
--# ifdef __USE_GNU
-+#ifdef __USE_GNU
- /* Enqueue ENT requests from the LIST. If MODE is GAI_WAIT wait until all
- requests are handled. If WAIT is GAI_NOWAIT return immediately after
-- queueing the requests and signal completion according to SIG. */
-+ queueing the requests and signal completion according to SIG.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
-- int __ent, struct sigevent *__restrict __sig)
-- __THROW;
-+ int __ent, struct sigevent *__restrict __sig);
-
- /* Suspend execution of the thread until at least one of the ENT requests
- in LIST is handled. If TIMEOUT is not a null pointer it specifies the
-- longest time the function keeps waiting before returning with an error. */
-+ longest time the function keeps waiting before returning with an error.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int gai_suspend (__const struct gaicb *__const __list[], int __ent,
-- __const struct timespec *__timeout) __THROW;
-+ __const struct timespec *__timeout);
-
- /* Get the error status of the request REQ. */
- extern int gai_error (struct gaicb *__req) __THROW;
-
- /* Cancel the requests associated with GAICBP. */
- extern int gai_cancel (struct gaicb *__gaicbp) __THROW;
--# endif /* GNU */
--#endif /* POSIX */
-+#endif /* GNU */
-
- __END_DECLS
-
---- glibc-2.3.2/resolv/res_hconf.c 2002-11-01 21:15:53.000000000 -0500
-+++ glibc-2.3.2/resolv/res_hconf.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@azstarnet.com).
-
-@@ -425,7 +425,7 @@
- if (hconf_name == NULL)
- hconf_name = _PATH_HOSTCONF;
-
-- fp = fopen (hconf_name, "r");
-+ fp = fopen (hconf_name, "rc");
- if (!fp)
- /* make up something reasonable: */
- _res_hconf.service[_res_hconf.num_services++] = SERVICE_BIND;
---- glibc-2.3.2/resolv/res_init.c 2003-02-25 18:40:08.000000000 -0500
-+++ glibc-2.3.2/resolv/res_init.c 2003-09-19 22:37:06.000000000 -0400
-@@ -86,6 +86,8 @@
- #include <string.h>
- #include <unistd.h>
-
-+#include <not-cancel.h>
-+
- /* Options. Should all be left alone. */
- #define RESOLVSORT
- #define RFC1535
-@@ -231,7 +233,7 @@
- (line[sizeof(name) - 1] == ' ' || \
- line[sizeof(name) - 1] == '\t'))
-
-- if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
-+ if ((fp = fopen(_PATH_RESCONF, "rc")) != NULL) {
- /* No threads use this stream. */
- __fsetlocking (fp, FSETLOCKING_BYCALLER);
- /* read the config file */
-@@ -541,7 +543,7 @@
- int ns;
-
- if (statp->_vcsock >= 0) {
-- (void) __close(statp->_vcsock);
-+ close_not_cancel_no_status(statp->_vcsock);
- statp->_vcsock = -1;
- statp->_flags &= ~(RES_F_VC | RES_F_CONN);
- }
-@@ -552,7 +554,7 @@
- #endif
- if (statp->_u._ext.nsaddrs[ns]
- && statp->_u._ext.nssocks[ns] != -1) {
-- (void) __close(statp->_u._ext.nssocks[ns]);
-+ close_not_cancel_no_status(statp->_u._ext.nssocks[ns]);
- statp->_u._ext.nssocks[ns] = -1;
- }
- statp->_u._ext.nsinit = 0;
---- glibc-2.3.2/resolv/res_libc.c 2003-02-27 04:14:31.000000000 -0500
-+++ glibc-2.3.2/resolv/res_libc.c 2003-08-21 08:37:07.000000000 -0400
-@@ -68,27 +68,26 @@
- /* This needs to be after the use of _res in res_init, above. */
- #undef _res
-
--#include <tls.h>
--
--#if USE___THREAD
--/* With __thread support, this per-thread variable is used in all cases. */
--__thread struct __res_state _res;
--extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
-- attribute_hidden;
--# define _res __libc_res
--#else
- /* The resolver state for use by single-threaded programs.
- This differs from plain `struct __res_state _res;' in that it doesn't
- create a common definition, but a plain symbol that resides in .bss,
- which can have an alias. */
- struct __res_state _res __attribute__((section (".bss")));
-
-+#include <tls.h>
-+
-+#if USE___THREAD
-+#undef __resp
-+__thread struct __res_state *__resp = &_res;
-+extern __thread struct __res_state *__libc_resp
-+ __attribute__ ((alias ("__resp"))) attribute_hidden;
-+#endif
-+
- /* We declare this with compat_symbol so that it's not
- visible at link time. Programs must use the accessor functions. */
--# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
--# include <shlib-compat.h>
-+#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
-+# include <shlib-compat.h>
- compat_symbol (libc, _res, _res, GLIBC_2_0);
--# endif
- #endif
-
- #include <shlib-compat.h>
---- glibc-2.3.2/resolv/res_send.c 2002-10-17 17:45:42.000000000 -0400
-+++ glibc-2.3.2/resolv/res_send.c 2003-08-21 08:37:07.000000000 -0400
-@@ -108,63 +108,46 @@
-
- /* From ev_streams.c. */
-
--static inline struct iovec
--evConsIovec(void *buf, size_t cnt) {
-- struct iovec ret;
--
-- memset(&ret, 0xf5, sizeof ret);
-- ret.iov_base = buf;
-- ret.iov_len = cnt;
-- return (ret);
-+static inline void
-+__attribute ((always_inline))
-+evConsIovec(void *buf, size_t cnt, struct iovec *vec) {
-+ memset(vec, 0xf5, sizeof (*vec));
-+ vec->iov_base = buf;
-+ vec->iov_len = cnt;
- }
-
- /* From ev_timers.c. */
-
- #define BILLION 1000000000
-
--static inline struct timespec
--evTimeSpec(struct timeval tv) {
-- struct timespec ts;
--
-- ts.tv_sec = tv.tv_sec;
-- ts.tv_nsec = tv.tv_usec * 1000;
-- return (ts);
-+static inline void
-+evConsTime(struct timespec *res, time_t sec, long nsec) {
-+ res->tv_sec = sec;
-+ res->tv_nsec = nsec;
- }
-
--static inline struct timespec
--evConsTime(time_t sec, long nsec) {
-- struct timespec x;
--
-- x.tv_sec = sec;
-- x.tv_nsec = nsec;
-- return (x);
--}
--
--static inline struct timespec
--evAddTime(struct timespec addend1, struct timespec addend2) {
-- struct timespec x;
--
-- x.tv_sec = addend1.tv_sec + addend2.tv_sec;
-- x.tv_nsec = addend1.tv_nsec + addend2.tv_nsec;
-- if (x.tv_nsec >= BILLION) {
-- x.tv_sec++;
-- x.tv_nsec -= BILLION;
-+static inline void
-+evAddTime(struct timespec *res, const struct timespec *addend1,
-+ const struct timespec *addend2) {
-+ res->tv_sec = addend1->tv_sec + addend2->tv_sec;
-+ res->tv_nsec = addend1->tv_nsec + addend2->tv_nsec;
-+ if (res->tv_nsec >= BILLION) {
-+ res->tv_sec++;
-+ res->tv_nsec -= BILLION;
- }
-- return (x);
- }
-
--static inline struct timespec
--evSubTime(struct timespec minuend, struct timespec subtrahend) {
-- struct timespec x;
--
-- x.tv_sec = minuend.tv_sec - subtrahend.tv_sec;
-- if (minuend.tv_nsec >= subtrahend.tv_nsec)
-- x.tv_nsec = minuend.tv_nsec - subtrahend.tv_nsec;
-+static inline void
-+evSubTime(struct timespec *res, const struct timespec *minuend,
-+ const struct timespec *subtrahend) {
-+ res->tv_sec = minuend->tv_sec - subtrahend->tv_sec;
-+ if (minuend->tv_nsec >= subtrahend->tv_nsec)
-+ res->tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec;
- else {
-- x.tv_nsec = BILLION - subtrahend.tv_nsec + minuend.tv_nsec;
-- x.tv_sec--;
-+ res->tv_nsec = (BILLION
-+ - subtrahend->tv_nsec + minuend->tv_nsec);
-+ res->tv_sec--;
- }
-- return (x);
- }
-
- static inline int
-@@ -176,13 +159,14 @@
- return (x < 0L ? (-1) : x > 0L ? (1) : (0));
- }
-
--static inline struct timespec
--evNowTime() {
-+static inline void
-+evNowTime(struct timespec *res) {
- struct timeval now;
-
- if (gettimeofday(&now, NULL) < 0)
-- return (evConsTime(0, 0));
-- return (evTimeSpec(now));
-+ evConsTime(res, 0, 0);
-+ else
-+ TIMEVAL_TO_TIMESPEC (&now, res);
- }
-
- #endif
-@@ -561,9 +545,11 @@
- res_sendhookact act;
-
- #ifdef _LIBC
-- act = (*statp->qhook)((struct sockaddr_in **)
-- &nsap, &buf, &buflen,
-+ struct sockaddr_in *nsap4;
-+ nsap4 = (struct sockaddr_in *) nsap;
-+ act = (*statp->qhook)(&nsap4, &buf, &buflen,
- ans, anssiz, &resplen);
-+ nsap = (struct sockaddr_in6 *) nsap4;
- #else
- act = (*statp->qhook)(&nsap, &buf, &buflen,
- ans, anssiz, &resplen);
-@@ -768,9 +754,10 @@
- * Send length & message
- */
- putshort((u_short)buflen, (u_char*)&len);
-- iov[0] = evConsIovec(&len, INT16SZ);
-- iov[1] = evConsIovec((void*)buf, buflen);
-- if (writev(statp->_vcsock, iov, 2) != (INT16SZ + buflen)) {
-+ evConsIovec(&len, INT16SZ, &iov[0]);
-+ evConsIovec((void*)buf, buflen, &iov[1]);
-+ if (TEMP_FAILURE_RETRY (writev(statp->_vcsock, iov, 2))
-+ != (INT16SZ + buflen)) {
- *terrno = errno;
- Perror(statp, stderr, "write failed", errno);
- res_nclose(statp);
-@@ -782,7 +769,8 @@
- read_len:
- cp = ans;
- len = INT16SZ;
-- while ((n = read(statp->_vcsock, (char *)cp, (int)len)) > 0) {
-+ while ((n = TEMP_FAILURE_RETRY (read(statp->_vcsock, (char *)cp,
-+ (int)len))) > 0) {
- cp += n;
- if ((len -= n) <= 0)
- break;
-@@ -998,9 +986,9 @@
- seconds /= statp->nscount;
- if (seconds <= 0)
- seconds = 1;
-- now = evNowTime();
-- timeout = evConsTime(seconds, 0);
-- finish = evAddTime(now, timeout);
-+ evNowTime(&now);
-+ evConsTime(&timeout, seconds, 0);
-+ evAddTime(&finish, &now, &timeout);
- wait:
- #ifdef _LIBC
- /* Convert struct timespec in milliseconds. */
-@@ -1021,9 +1009,9 @@
- }
- if (n < 0) {
- if (errno == EINTR) {
-- now = evNowTime();
-+ evNowTime(&now);
- if (evCmpTime(finish, now) > 0) {
-- timeout = evSubTime(finish, now);
-+ evSubTime(&timeout, &finish, &now);
- goto wait;
- }
- }
-@@ -1244,7 +1232,7 @@
- if (sigmask)
- sigprocmask(SIG_SETMASK, &sigs, NULL);
- if (tsp)
-- *tsp = evTimeSpec(tv);
-+ TIMEVAL_TO_TIMESPEC (tv, *tsp);
- return (n);
- }
- #endif
---- glibc-2.3.2/rt/Makefile 2003-01-05 04:48:59.000000000 -0500
-+++ glibc-2.3.2/rt/Makefile 2003-08-21 08:37:07.000000000 -0400
-@@ -38,7 +38,7 @@
- $(clock-routines) $(timer-routines) \
- $(shm-routines)
-
--tests := tst-shm tst-clock tst-timer \
-+tests := tst-shm tst-clock tst-clock_nanosleep tst-timer tst-timer2 \
- tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
- tst-aio7
-
-@@ -49,6 +49,10 @@
-
- include ../Rules
-
-+CFLAGS-aio_suspend.c = -fexceptions
-+CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables
-+
- # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
- # This ensures they will load libc.so for needed symbols if loaded by
- # a statically-linked program that hasn't already loaded it.
---- glibc-2.3.2/rt/aio.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/rt/aio.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,1999,2000,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
-@@ -161,9 +161,12 @@
- extern int aio_cancel (int __fildes, struct aiocb *__aiocbp) __THROW;
-
- /* Suspend calling thread until at least one of the asynchronous I/O
-- operations referenced by LIST has completed. */
-+ operations referenced by LIST has completed.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int aio_suspend (__const struct aiocb *__const __list[], int __nent,
-- __const struct timespec *__restrict __timeout) __THROW;
-+ __const struct timespec *__restrict __timeout);
-
- /* Force all operations associated with file desriptor described by
- `aio_fildes' member of AIOCBP. */
---- glibc-2.3.2/rt/tst-aio7.c 2002-09-30 18:02:39.000000000 -0400
-+++ glibc-2.3.2/rt/tst-aio7.c 2003-03-15 15:02:14.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Test for AIO POSIX compliance.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 2001,02, 03 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
-@@ -117,12 +117,13 @@
-
- /* Test for aio_suspend() suspending even if completed elements in list. */
- {
-- const int BYTES = 8, ELEMS = 2;
-+#define BYTES 8
-+ const int ELEMS = 2;
- int i, r, fd;
-- char buff[BYTES];
-+ static char buff[BYTES];
- char name[] = "/tmp/aio7.XXXXXX";
- struct timespec timeout;
-- struct aiocb cb0, cb1;
-+ static struct aiocb cb0, cb1;
- struct aiocb *list[ELEMS];
-
- fd = mkstemp (name);
-@@ -180,6 +181,9 @@
- puts ("aio_suspend([done,blocked],2,3) suspended thread");
- ++result;
- }
-+
-+ /* Note that CB1 is still pending, and so cannot be an auto variable.
-+ Thus we also test that exiting with an outstanding request works. */
- }
-
- return result;
---- glibc-2.3.2/rt/tst-clock_nanosleep.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/rt/tst-clock_nanosleep.c 2003-05-17 13:37:34.000000000 -0400
-@@ -0,0 +1,58 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <sys/time.h>
-+#include <time.h>
-+
-+
-+/* Test that clock_nanosleep() does sleep. */
-+static int
-+do_test (void)
-+{
-+ /* Current time. */
-+ struct timeval tv1;
-+ (void) gettimeofday (&tv1, NULL);
-+
-+ struct timespec ts;
-+ ts.tv_sec = 1;
-+ ts.tv_nsec = 0;
-+ TEMP_FAILURE_RETRY (clock_nanosleep (CLOCK_REALTIME, 0, &ts, &ts));
-+
-+ /* At least one second must have passed. */
-+ struct timeval tv2;
-+ (void) gettimeofday (&tv2, NULL);
-+
-+ tv2.tv_sec -= tv1.tv_sec;
-+ tv2.tv_usec -= tv1.tv_usec;
-+ if (tv2.tv_usec < 0)
-+ --tv2.tv_sec;
-+
-+ if (tv2.tv_sec < 1)
-+ {
-+ puts ("clock_nanosleep didn't sleep long enough");
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/rt/tst-timer2.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/rt/tst-timer2.c 2003-07-29 05:31:49.000000000 -0400
-@@ -0,0 +1,62 @@
-+/* Test for crashing bugs when trying to create too many timers. */
-+
-+#include <stdio.h>
-+#include <time.h>
-+#include <signal.h>
-+#include <sys/time.h>
-+#include <sys/resource.h>
-+#include <unistd.h>
-+
-+#if _POSIX_THREADS
-+# include <pthread.h>
-+
-+void
-+thread (union sigval arg)
-+{
-+ puts ("Timeout");
-+}
-+
-+int
-+do_test (void)
-+{
-+ int i, res;
-+ timer_t timerId;
-+ struct itimerspec itval;
-+ struct sigevent sigev;
-+
-+ itval.it_interval.tv_sec = 2;
-+ itval.it_interval.tv_nsec = 0;
-+ itval.it_value.tv_sec = 2;
-+ itval.it_value.tv_nsec = 0;
-+
-+ sigev.sigev_notify = SIGEV_THREAD;
-+ sigev.sigev_signo = SIGRTMIN;
-+ sigev.sigev_notify_function = thread;
-+ sigev.sigev_notify_attributes = 0;
-+ sigev.sigev_value.sival_ptr = (void *) &timerId;
-+
-+ for (i = 0; i < 100; i++)
-+ {
-+ printf ("cnt = %d\n", i);
-+
-+ if (timer_create (CLOCK_REALTIME, &sigev, &timerId) < 0)
-+ perror ("timer_create");
-+
-+ res = timer_settime (timerId, 0, &itval, NULL);
-+ if (res < 0)
-+ perror ("timer_settime");
-+
-+ res = timer_delete (timerId);
-+ if (res < 0)
-+ perror ("timer_delete");
-+ }
-+
-+ return 0;
-+}
-+
-+# define TEST_FUNCTION do_test ()
-+#else
-+# define TEST_FUNCTION 0
-+#endif
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/scripts/abilist.awk 2002-12-23 14:11:45.000000000 -0500
-+++ glibc-2.3.2/scripts/abilist.awk 2003-04-12 11:39:44.000000000 -0400
-@@ -1,6 +1,33 @@
- # This awk script processes the output of objdump --dynamic-syms
- # into a simple format that should not change when the ABI is not changing.
-
-+BEGIN {
-+ if (combine_fullname)
-+ combine = 1;
-+ if (combine)
-+ parse_names = 1;
-+}
-+
-+# Per-file header.
-+/[^ :]+\.so\.[0-9.]+:[ ]+.file format .*$/ {
-+ emit(0);
-+
-+ seen_opd = 0;
-+
-+ sofullname = $1;
-+ sub(/:$/, "", sofullname);
-+ soname = sofullname;
-+ sub(/^.*\//, "", soname);
-+ sub(/\.so\.[0-9.]+$/, "", soname);
-+
-+ suppress = ((filename_regexp != "" && sofullname !~ filename_regexp) \
-+ || (libname_regexp != "" && soname !~ libname_regexp));
-+
-+ next
-+}
-+
-+suppress { next }
-+
- # Normalize columns.
- /^[0-9a-fA-F]+ / { sub(/ /, " - ") }
-
-@@ -22,14 +49,18 @@
-
- if (version == "GLIBC_PRIVATE") next;
-
-+ desc = "";
- if (type == "D" && $4 == ".tbss") {
- type = "T";
- }
- else if (type == "D" && $4 == ".opd") {
-- type = "O";
-+ type = "F";
- size = "";
-+ if (seen_opd < 0)
-+ type = "O";
-+ seen_opd = 1;
- }
-- else if (type == "DO" && $4 == "*ABS*") {
-+ else if ($4 == "*ABS*") {
- type = "A";
- size = "";
- }
-@@ -37,15 +68,26 @@
- type = "D";
- }
- else if (type == "DF") {
-+ if (symbol ~ /^\./ && seen_opd >= 0)
-+ next;
-+ seen_opd = -1;
- type = "F";
- size = "";
- }
- else {
-- print symbol, version, weak, "?", type, $4, $5;
-- next;
-+ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
-+ }
-+ if (size == " 0x") {
-+ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
- }
-
-- desc = " " symbol " " (weak == "w" ? tolower(type) : type) size;
-+ # Disabled -- weakness should not matter to shared library ABIs any more.
-+ #if (weak == "w") type = tolower(type);
-+ if (desc == "")
-+ desc = " " symbol " " type size;
-+
-+ if (combine)
-+ version = soname " " version (combine_fullname ? " " sofullname : "");
-
- if (version in versions) {
- versions[version] = versions[version] "\n" desc;
-@@ -63,8 +105,12 @@
- print "Don't grok this line:", $0
- }
-
--END {
-- nverlist = 0;
-+function emit(end) {
-+ if (!end && (combine || ! parse_names || soname == ""))
-+ return;
-+ tofile = parse_names && !combine;
-+
-+ nverslist = 0;
- for (version in versions) {
- if (nverslist == 0) {
- verslist = version;
-@@ -92,13 +138,42 @@
- ++nverslist;
- }
-
-+ if (tofile) {
-+ out = prefix soname ".symlist";
-+ if (soname in outfiles)
-+ out = out "." ++outfiles[soname];
-+ else
-+ outfiles[soname] = 1;
-+ printf "" > out;
-+ }
-+
- split(verslist, order, "\n");
- for (i = 1; i <= nverslist; ++i) {
- version = order[i];
-
-- print version;
-- outpipe = "sort";
-+ if (tofile) {
-+ print version >> out;
-+ close(out);
-+ outpipe = "sort >> " out;
-+ }
-+ else {
-+ if (combine)
-+ print "";
-+ print prefix version;
-+ outpipe = "sort";
-+ }
- print versions[version] | outpipe;
- close(outpipe);
-+
-+ delete versions[version];
- }
-+ for (version in versions)
-+ delete versions[version];
-+
-+ if (tofile)
-+ print "wrote", out, "for", sofullname;
-+}
-+
-+END {
-+ emit(1);
- }
---- glibc-2.3.2/scripts/check-c++-types.sh 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/scripts/check-c++-types.sh 2003-09-08 19:54:34.000000000 -0400
-@@ -0,0 +1,107 @@
-+#! /bin/bash
-+# Copyright (C) 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.
-+#
-+# The list of data types has been created with
-+# cat <<EOF |
-+# #include <sys/types.h>
-+# #include <unistd.h>
-+# #include <sys/resource.h>
-+# #include <sys/stat.h>
-+# EOF
-+# gcc -D_GNU_SOURCE -E - |
-+# egrep '^typedef.*;$' |
-+# sed 's/^typedef[[:space:]]*//;s/\([[:space:]]\{1,\}__attribute__.*\);/;/;s/.*[[:space:]]\([*]\|\)\(.*\);/\2/' |
-+# egrep -v '^_' |
-+# sort -u
-+#
-+data=$1
-+shift
-+cxx="$*"
-+while read t; do
-+ echo -n "$t:"
-+ $cxx -S -xc++ -o - -D_GNU_SOURCE <(cat <<EOF
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <sys/resource.h>
-+#include <unistd.h>
-+void foo ($t) { }
-+EOF
-+) |
-+ sed 's/[[:space:]]*[.]globa\?l[[:space:]]*_Z3foo\([_[:alnum:]]*\).*/\1/p;d'
-+done <<EOF |
-+blkcnt64_t
-+blkcnt_t
-+blksize_t
-+caddr_t
-+clockid_t
-+clock_t
-+daddr_t
-+dev_t
-+fd_mask
-+fsblkcnt64_t
-+fsblkcnt_t
-+fsfilcnt64_t
-+fsfilcnt_t
-+fsid_t
-+gid_t
-+id_t
-+ino64_t
-+ino_t
-+int16_t
-+int32_t
-+int64_t
-+int8_t
-+intptr_t
-+key_t
-+loff_t
-+mode_t
-+nlink_t
-+off64_t
-+off_t
-+pid_t
-+pthread_key_t
-+pthread_once_t
-+pthread_spinlock_t
-+pthread_t
-+quad_t
-+register_t
-+rlim64_t
-+rlim_t
-+sigset_t
-+size_t
-+socklen_t
-+ssize_t
-+suseconds_t
-+time_t
-+u_char
-+uid_t
-+uint
-+u_int
-+u_int16_t
-+u_int32_t
-+u_int64_t
-+u_int8_t
-+ulong
-+u_long
-+u_quad_t
-+useconds_t
-+ushort
-+u_short
-+EOF
-+diff -N -U0 $data -
---- glibc-2.3.2/scripts/config.guess 2002-07-10 03:24:32.000000000 -0400
-+++ glibc-2.3.2/scripts/config.guess 2003-08-21 08:37:07.000000000 -0400
-@@ -1,9 +1,9 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002 Free Software Foundation, Inc.
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
--timestamp='2002-07-03'
-+timestamp='2003-06-06'
-
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
-@@ -98,30 +98,32 @@
- # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
- # use `HOST_CC' if defined, but it is deprecated.
-
--# This shell variable is my proudest work .. or something. --bje
-+# Portable tmp directory creation inspired by the Autoconf team.
-
--set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
--(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
-- || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
--dummy=$tmpdir/dummy ;
--files="$dummy.c $dummy.o $dummy.rel $dummy" ;
--trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
-+set_cc_for_build='
-+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-+: ${TMPDIR=/tmp} ;
-+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-+dummy=$tmp/dummy ;
-+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
- case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
-- if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then
-+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
-- rm -f $files ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
--esac ;
--unset files'
-+esac ;'
-
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
- # (ghazi@noc.rutgers.edu 1994-08-24)
-@@ -178,7 +180,18 @@
- ;;
- esac
- # The OS release
-- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ # Debian GNU/NetBSD machines have a different userland, and
-+ # thus, need a distinct triplet. However, they do not need
-+ # kernel version information, so it can be replaced with a
-+ # suitable tag, in the style of linux-gnu.
-+ case "${UNAME_VERSION}" in
-+ Debian*)
-+ release='-gnu'
-+ ;;
-+ *)
-+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+ ;;
-+ esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-@@ -227,63 +240,47 @@
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
-+ # According to Compaq, /usr/sbin/psrinfo has been available on
-+ # OSF/1 and Tru64 systems produced since 1995. I hope that
-+ # covers most systems running today. This code pipes the CPU
-+ # types through head -n 1, so we only detect the type of CPU 0.
-+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-+ case "$ALPHA_CPU_TYPE" in
-+ "EV4 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV4.5 (21064)")
-+ UNAME_MACHINE="alpha" ;;
-+ "LCA4 (21066/21068)")
-+ UNAME_MACHINE="alpha" ;;
-+ "EV5 (21164)")
-+ UNAME_MACHINE="alphaev5" ;;
-+ "EV5.6 (21164A)")
-+ UNAME_MACHINE="alphaev56" ;;
-+ "EV5.6 (21164PC)")
-+ UNAME_MACHINE="alphapca56" ;;
-+ "EV5.7 (21164PC)")
-+ UNAME_MACHINE="alphapca57" ;;
-+ "EV6 (21264)")
-+ UNAME_MACHINE="alphaev6" ;;
-+ "EV6.7 (21264A)")
-+ UNAME_MACHINE="alphaev67" ;;
-+ "EV6.8CB (21264C)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8AL (21264B)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.8CX (21264D)")
-+ UNAME_MACHINE="alphaev68" ;;
-+ "EV6.9A (21264/EV69A)")
-+ UNAME_MACHINE="alphaev69" ;;
-+ "EV7 (21364)")
-+ UNAME_MACHINE="alphaev7" ;;
-+ "EV7.9 (21364A)")
-+ UNAME_MACHINE="alphaev79" ;;
-+ esac
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
-- cat <<EOF >$dummy.s
-- .data
--\$Lformat:
-- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
--
-- .text
-- .globl main
-- .align 4
-- .ent main
--main:
-- .frame \$30,16,\$26,0
-- ldgp \$29,0(\$27)
-- .prologue 1
-- .long 0x47e03d80 # implver \$0
-- lda \$2,-1
-- .long 0x47e20c21 # amask \$2,\$1
-- lda \$16,\$Lformat
-- mov \$0,\$17
-- not \$1,\$18
-- jsr \$26,printf
-- ldgp \$29,0(\$26)
-- mov 0,\$16
-- jsr \$26,exit
-- .end main
--EOF
-- eval $set_cc_for_build
-- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-- if test "$?" = 0 ; then
-- case `$dummy` in
-- 0-0)
-- UNAME_MACHINE="alpha"
-- ;;
-- 1-0)
-- UNAME_MACHINE="alphaev5"
-- ;;
-- 1-1)
-- UNAME_MACHINE="alphaev56"
-- ;;
-- 1-101)
-- UNAME_MACHINE="alphapca56"
-- ;;
-- 2-303)
-- UNAME_MACHINE="alphaev6"
-- ;;
-- 2-307)
-- UNAME_MACHINE="alphaev67"
-- ;;
-- 2-1307)
-- UNAME_MACHINE="alphaev68"
-- ;;
-- esac
-- fi
-- rm -f $dummy.s $dummy && dir $tmpdir
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
-@@ -324,7 +321,10 @@
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
-- DSR?6000:UNIX_SV:4.2*:7*)
-+ DRS?6000:unix:4.0:6*)
-+ echo sparc-icl-nx6
-+ exit 0 ;;
-+ DRS?6000:UNIX_SV:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
- esac ;;
-@@ -434,16 +434,18 @@
- exit (-1);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy \
-+ $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-- && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
-- rm -f $dummy.c $dummy && rmdir $tmpdir
-+ && exit 0
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit 0 ;;
-- Night_Hawk:*:*:PowerMAX_OS)
-+ Motorola:*:4.3:PL8-*)
-+ echo powerpc-harris-powermax
-+ exit 0 ;;
-+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
-@@ -518,8 +520,7 @@
- exit(0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
-- rm -f $dummy.c $dummy && rmdir $tmpdir
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
-@@ -617,11 +618,21 @@
- exit (0);
- }
- EOF
-- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy`
-- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
-- rm -f $dummy.c $dummy && rmdir $tmpdir
-+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+ test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
-+ if [ ${HP_ARCH} = "hppa2.0w" ]
-+ then
-+ # avoid double evaluation of $set_cc_for_build
-+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+ then
-+ HP_ARCH="hppa2.0w"
-+ else
-+ HP_ARCH="hppa64"
-+ fi
-+ fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- ia64:HP-UX:*:*)
-@@ -655,8 +666,7 @@
- exit (0);
- }
- EOF
-- $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
-- rm -f $dummy.c $dummy && rmdir $tmpdir
-+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-@@ -714,15 +724,15 @@
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-- CRAY*T3D:*:*:*)
-- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
-+ *:UNICOS/mp:*:*)
-+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ exit 0 ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-@@ -738,7 +748,7 @@
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
-- *:FreeBSD:*:*)
-+ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-@@ -750,7 +760,6 @@
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-- rm -f $dummy.c && rmdir $tmpdir
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
- i*:CYGWIN*:*)
-@@ -762,14 +771,17 @@
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
-- x86:Interix*:3*)
-- echo i386-pc-interix3
-+ x86:Interix*:[34]*)
-+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
-+ exit 0 ;;
-+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-+ echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
-- echo i386-pc-interix
-+ echo i586-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
-@@ -789,6 +801,9 @@
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
-+ cris:Linux:*:*)
-+ echo cris-axis-linux-gnu
-+ exit 0 ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
-@@ -812,8 +827,26 @@
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-- rm -f $dummy.c && rmdir $tmpdir
-- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+ ;;
-+ mips64:Linux:*:*)
-+ eval $set_cc_for_build
-+ sed 's/^ //' << EOF >$dummy.c
-+ #undef CPU
-+ #undef mips64
-+ #undef mips64el
-+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+ CPU=mips64el
-+ #else
-+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+ CPU=mips64
-+ #else
-+ CPU=
-+ #endif
-+ #endif
-+EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
-@@ -875,7 +908,7 @@
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-- exit 0 ;;
-+ exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
-@@ -908,7 +941,6 @@
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-- rm -f $dummy.c && rmdir $tmpdir
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
-@@ -926,6 +958,23 @@
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
-+ i*86:OS/2:*:*)
-+ # If we were able to find `uname', then EMX Unix compatibility
-+ # is probably installed.
-+ echo ${UNAME_MACHINE}-pc-os2-emx
-+ exit 0 ;;
-+ i*86:XTS-300:*:STOP)
-+ echo ${UNAME_MACHINE}-unknown-stop
-+ exit 0 ;;
-+ i*86:atheos:*:*)
-+ echo ${UNAME_MACHINE}-unknown-atheos
-+ exit 0 ;;
-+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+ echo i386-unknown-lynxos${UNAME_RELEASE}
-+ exit 0 ;;
-+ i*86:*DOS:*:*)
-+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
-+ exit 0 ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-@@ -960,9 +1009,6 @@
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
-- i*86:*DOS:*:*)
-- echo ${UNAME_MACHINE}-pc-msdosdjgpp
-- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
-@@ -986,9 +1032,15 @@
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
-+ mc68k:UNIX:SYSTEM5:3.51m)
-+ echo m68k-convergent-sysv
-+ exit 0 ;;
-+ M680?0:D-NIX:5.3:*)
-+ echo m68k-diab-dnix
-+ exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
-+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-@@ -1005,9 +1057,6 @@
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
-- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-- echo i386-unknown-lynxos${UNAME_RELEASE}
-- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
-@@ -1079,6 +1128,9 @@
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
-+ SX-6:SUPER-UX:*:*)
-+ echo sx6-nec-superux${UNAME_RELEASE}
-+ exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
-@@ -1086,7 +1138,11 @@
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
-- echo `uname -p`-apple-darwin${UNAME_RELEASE}
-+ case `uname -p` in
-+ *86) UNAME_PROCESSOR=i686 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc ;;
-+ esac
-+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
-@@ -1099,7 +1155,7 @@
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
-- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
-+ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
- *:NonStop-UX:*:*)
-@@ -1122,11 +1178,6 @@
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
-- i*86:OS/2:*:*)
-- # If we were able to find `uname', then EMX Unix compatibility
-- # is probably installed.
-- echo ${UNAME_MACHINE}-pc-os2-emx
-- exit 0 ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit 0 ;;
-@@ -1145,12 +1196,6 @@
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit 0 ;;
-- i*86:XTS-300:*:STOP)
-- echo ${UNAME_MACHINE}-unknown-stop
-- exit 0 ;;
-- i*86:atheos:*:*)
-- echo ${UNAME_MACHINE}-unknown-atheos
-- exit 0 ;;
- esac
-
- #echo '(No uname command or uname output not recognized.)' 1>&2
-@@ -1271,8 +1316,7 @@
- }
- EOF
-
--$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
--rm -f $dummy.c $dummy && rmdir $tmpdir
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-
- # Apollos put the system type in the environment.
-
---- glibc-2.3.2/scripts/config.sub 2002-07-10 03:24:32.000000000 -0400
-+++ glibc-2.3.2/scripts/config.sub 2003-08-21 08:37:07.000000000 -0400
-@@ -1,9 +1,9 @@
- #! /bin/sh
- # Configuration validation subroutine script.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002 Free Software Foundation, Inc.
-+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
--timestamp='2002-07-03'
-+timestamp='2003-06-06'
-
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -118,7 +118,7 @@
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
-- nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
-+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-@@ -229,7 +229,7 @@
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-- | c4x | clipper \
-+ | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-@@ -239,21 +239,25 @@
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
-+ | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mipsisa32 | mipsisa32el \
-+ | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64sb1 | mipsisa64sb1el \
-+ | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
-+ | msp430 \
- | ns16k | ns32k \
- | openrisc | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
-- | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
- | strongarm \
-@@ -292,7 +296,7 @@
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bs2000-* \
-- | c[123]* | c30-* | [cjt]90-* | c54x-* \
-+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
-@@ -307,25 +311,31 @@
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
-+ | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mipsisa32-* | mipsisa32el-* \
-+ | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
-- | mipstx39 | mipstx39el \
-- | none-* | np1-* | ns16k-* | ns32k-* \
-+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipstx39-* | mipstx39el-* \
-+ | msp430-* \
-+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
-- | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
-+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
-+ | tahoe-* | thumb-* \
-+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+ | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-@@ -363,6 +373,9 @@
- basic_machine=a29k-none
- os=-bsd
- ;;
-+ amd64)
-+ basic_machine=x86_64-pc
-+ ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
-@@ -712,6 +725,10 @@
- np1)
- basic_machine=np1-gould
- ;;
-+ nv1)
-+ basic_machine=nv1-cray
-+ os=-unicosmp
-+ ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
-@@ -745,49 +762,55 @@
- pbb)
- basic_machine=m68k-tti
- ;;
-- pc532 | pc532-*)
-+ pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
-- pentiumpro | p6 | 6x86 | athlon)
-+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
-- pentiumii | pentium2)
-+ pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
-+ pentium4)
-+ basic_machine=i786-pc
-+ ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-- pentiumii-* | pentium2-*)
-+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-+ pentium4-*)
-+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-+ ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
-- ;;
-+ ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
-- ;;
-+ ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
-- ;;
-+ ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
-- ;;
-+ ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
-@@ -818,6 +841,12 @@
- basic_machine=a29k-amd
- os=-udi
- ;;
-+ sb1)
-+ basic_machine=mipsisa64sb1-unknown
-+ ;;
-+ sb1el)
-+ basic_machine=mipsisa64sb1el-unknown
-+ ;;
- sequent)
- basic_machine=i386-sequent
- ;;
-@@ -883,7 +912,7 @@
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
-- sv1)
-+ sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
-@@ -891,10 +920,6 @@
- basic_machine=i386-sequent
- os=-dynix
- ;;
-- t3d)
-- basic_machine=alpha-cray
-- os=-unicos
-- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
-@@ -903,10 +928,22 @@
- basic_machine=t90-cray
- os=-unicos
- ;;
-+ tic4x | c4x*)
-+ basic_machine=tic4x-unknown
-+ os=-coff
-+ ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
-+ tic55x | c55x*)
-+ basic_machine=tic55x-unknown
-+ os=-coff
-+ ;;
-+ tic6x | c6x*)
-+ basic_machine=tic6x-unknown
-+ os=-coff
-+ ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
-@@ -941,8 +978,8 @@
- os=-vms
- ;;
- vpp*|vx|vx-*)
-- basic_machine=f301-fujitsu
-- ;;
-+ basic_machine=f301-fujitsu
-+ ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
-@@ -963,11 +1000,7 @@
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
-- windows32)
-- basic_machine=i386-pc
-- os=-windows32-msvcrt
-- ;;
-- xps | xps100)
-+ xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
-@@ -1013,7 +1046,7 @@
- we32k)
- basic_machine=we32k-att
- ;;
-- sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
-+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sh64)
-@@ -1022,7 +1055,7 @@
- sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
-- cydra)
-+ cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
-@@ -1037,10 +1070,6 @@
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
-- c4x*)
-- basic_machine=c4x-none
-- os=-coff
-- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
-@@ -1103,11 +1132,12 @@
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
-+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
-+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-+ | -powermax* | -dnix* | -nx6 | -nx7)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
-@@ -1119,8 +1149,10 @@
- ;;
- esac
- ;;
-+ -nto-qnx*)
-+ ;;
- -nto*)
-- os=-nto-qnx
-+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-@@ -1172,7 +1204,7 @@
- os=-rtmk-nova
- ;;
- -ns2 )
-- os=-nextstep2
-+ os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
-@@ -1211,8 +1243,14 @@
- -xenix)
- os=-xenix
- ;;
-- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-- os=-mint
-+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+ os=-mint
-+ ;;
-+ -aros*)
-+ os=-aros
-+ ;;
-+ -kaos*)
-+ os=-kaos
- ;;
- -none)
- ;;
-@@ -1249,7 +1287,7 @@
- pdp10-*)
- os=-tops20
- ;;
-- pdp11-*)
-+ pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
-@@ -1342,19 +1380,19 @@
- *-next)
- os=-nextstep3
- ;;
-- *-gould)
-+ *-gould)
- os=-sysv
- ;;
-- *-highlevel)
-+ *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
-- *-sgi)
-+ *-sgi)
- os=-irix
- ;;
-- *-siemens)
-+ *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
---- glibc-2.3.2/scripts/data/c++-types-i386-linux-gnu.data 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/scripts/data/c++-types-i386-linux-gnu.data 2003-09-08 19:52:22.000000000 -0400
-@@ -0,0 +1,58 @@
-+blkcnt64_t:x
-+blkcnt_t:l
-+blksize_t:l
-+caddr_t:Pc
-+clockid_t:i
-+clock_t:l
-+daddr_t:i
-+dev_t:y
-+fd_mask:l
-+fsblkcnt64_t:y
-+fsblkcnt_t:m
-+fsfilcnt64_t:y
-+fsfilcnt_t:m
-+fsid_t:8__fsid_t
-+gid_t:j
-+id_t:j
-+ino64_t:y
-+ino_t:m
-+int16_t:s
-+int32_t:i
-+int64_t:x
-+int8_t:a
-+intptr_t:i
-+key_t:i
-+loff_t:x
-+mode_t:j
-+nlink_t:j
-+off64_t:x
-+off_t:l
-+pid_t:i
-+pthread_key_t:j
-+pthread_once_t:i
-+pthread_spinlock_t:i
-+pthread_t:m
-+quad_t:x
-+register_t:i
-+rlim64_t:y
-+rlim_t:m
-+sigset_t:10__sigset_t
-+size_t:j
-+socklen_t:j
-+ssize_t:i
-+suseconds_t:l
-+time_t:l
-+u_char:h
-+uid_t:j
-+uint:j
-+u_int:j
-+u_int16_t:t
-+u_int32_t:j
-+u_int64_t:y
-+u_int8_t:h
-+ulong:m
-+u_long:m
-+u_quad_t:y
-+useconds_t:j
-+ushort:t
-+u_short:t
---- glibc-2.3.2/scripts/data/c++-types-x86_64-linux-gnu.data 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/scripts/data/c++-types-x86_64-linux-gnu.data 2003-09-08 22:37:02.000000000 -0400
-@@ -0,0 +1,58 @@
-+blkcnt64_t:l
-+blkcnt_t:l
-+blksize_t:l
-+caddr_t:Pc
-+clockid_t:i
-+clock_t:l
-+daddr_t:i
-+dev_t:m
-+fd_mask:l
-+fsblkcnt64_t:m
-+fsblkcnt_t:m
-+fsfilcnt64_t:m
-+fsfilcnt_t:m
-+fsid_t:8__fsid_t
-+gid_t:j
-+id_t:j
-+ino64_t:m
-+ino_t:m
-+int16_t:s
-+int32_t:i
-+int64_t:l
-+int8_t:a
-+intptr_t:l
-+key_t:i
-+loff_t:l
-+mode_t:j
-+nlink_t:m
-+off64_t:l
-+off_t:l
-+pid_t:i
-+pthread_key_t:j
-+pthread_once_t:i
-+pthread_spinlock_t:i
-+pthread_t:m
-+quad_t:l
-+register_t:l
-+rlim64_t:m
-+rlim_t:m
-+sigset_t:10__sigset_t
-+size_t:m
-+socklen_t:j
-+ssize_t:l
-+suseconds_t:l
-+time_t:l
-+u_char:h
-+uid_t:j
-+uint:j
-+u_int:j
-+u_int16_t:t
-+u_int32_t:j
-+u_int64_t:m
-+u_int8_t:h
-+ulong:m
-+u_long:m
-+u_quad_t:m
-+useconds_t:j
-+ushort:t
-+u_short:t
---- glibc-2.3.2/scripts/merge-abilist.awk 2003-01-16 12:28:31.000000000 -0500
-+++ glibc-2.3.2/scripts/merge-abilist.awk 2003-03-15 15:02:14.000000000 -0500
-@@ -12,9 +12,11 @@
- # function F
- # variable D 0x4
-
-+BEGIN { current = "UNSET" }
-+
- /^[^| ]/ {
- if (NF < 2 && config == "") {
-- print "BAD LINE:", $0 > "/dev/stderr";
-+ print FILENAME ":" FNR ": BAD SET LINE:", $0 > "/dev/stderr";
- exit 2;
- }
-
-@@ -44,8 +46,8 @@
- }
-
- /^\| / {
-- if (NF < 3) {
-- print "BAD LINE:", $0 > "/dev/stderr";
-+ if (NF < 3 || current == "UNSET") {
-+ print FILENAME ":" FNR ": BAD | LINE:", $0 > "/dev/stderr";
- exit 2;
- }
-
-@@ -61,12 +63,20 @@
-
- {
- if (current == "") next;
-+ if (current == "UNSET") {
-+ print FILENAME ":" FNR ": IGNORED LINE:", $0 > "/dev/stderr";
-+ next;
-+ }
-
- ns = split(seen[$0], s, ",");
- nc = split(current, c, ",");
- for (i = 1; i <= nc; ++i) {
-+ if (c[i] == "")
-+ continue;
- # Sorted insert.
- for (j = 1; j <= ns; ++j) {
-+ if (c[i] == s[j])
-+ break;
- if (c[i] < s[j]) {
- for (k = ns; k >= j; --k)
- s[k + 1] = s[k];
-@@ -75,7 +85,7 @@
- break;
- }
- }
-- if (j >= ns)
-+ if (j > ns)
- s[++ns] = c[i];
- }
-
-@@ -97,7 +107,9 @@
- ns = split("", s);
- for (configs in stanzas) {
- # Sorted insert.
-- for (j = 1; j <= ns; ++j)
-+ for (j = 1; j <= ns; ++j) {
-+ if (configs == s[j])
-+ break;
- if (configs < s[j]) {
- for (k = ns; k >= j; --k)
- s[k + 1] = s[k];
-@@ -105,7 +117,8 @@
- ++ns;
- break;
- }
-- if (j >= ns)
-+ }
-+ if (j > ns)
- s[++ns] = configs;
- }
-
-@@ -118,15 +131,22 @@
- # S[I] is a sorted, comma-separated list of SET:CONFIG pairs.
- # All we have to do is pretty-print them.
- nc = split(s[i], c, ",");
-- lastvers = "";
-+ lastvers = lastconf = "";
- for (j = 1; j <= nc; ++j) {
- split(c[j], temp, ":");
- version = temp[1];
- conf = temp[2];
- if (version != lastvers)
- printf "%s%s", (lastvers != "" ? "\n| " : ""), version;
-+ # Hack: if CONF is foo.*/bar and LASTCONF was foo.*,
-+ # then we can omit the foo.*/bar since foo.* matches already.
-+ # Note we don't update LASTCONF, so foo.*/baz next time will match too.
-+ else if ((slash = index(conf, ".*/")) > 0 && \
-+ substr(conf, 1, slash + 2 - 1) == lastconf)
-+ continue;
- printf " %s", conf;
- lastvers = version;
-+ lastconf = conf;
- }
- print "";
- outpipe = "sort";
---- glibc-2.3.2/scripts/mkinstalldirs 1998-05-08 16:55:06.000000000 -0400
-+++ glibc-2.3.2/scripts/mkinstalldirs 2002-11-16 08:56:18.000000000 -0500
-@@ -4,7 +4,7 @@
- # Created: 1993-05-16
- # Public domain
-
--# $Id: mkinstalldirs,v 1.1 1998/05/08 20:55:06 drepper Exp $
-+# $Id: mkinstalldirs,v 1.10 1996/05/03 07:37:52 friedman Exp $
-
- errstatus=0
-
---- glibc-2.3.2/scripts/rpm2dynsym.sh 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/scripts/rpm2dynsym.sh 2003-03-27 17:48:49.000000000 -0500
-@@ -0,0 +1,36 @@
-+#!/bin/sh
-+
-+# This script takes rpm package files, finds *.so.N files in them,
-+# and runs objdump --dynamic-syms on them. The arguments are rpm file
-+# names. For each rpm, it creates an output file with the name
-+# "NAME-VERSION-RELEASE.ARCH.dynsym", the variable parts being extracted
-+# from the rpm's headers (not its file name). Each file contains the
-+# collected objdump output for all the *.so.N files in the corresponding rpm.
-+# This can be processed with abilist.awk or sent to someone who will do that.
-+# This does not do a lot of error-checking, so you should always watch stderr
-+# and sanity-check the resulting output files.
-+
-+RPM=${RPM:-rpm}
-+RPM2CPIO=${RPM2CPIO:-rpm2cpio}
-+CPIO=${CPIO:-cpio}
-+OBJDUMP=${OBJDUMP:-objdump}
-+
-+unpackdir=/tmp/rpm2dynsym$$
-+trap 'rm -rf $unpackdir' 0 1 2 15
-+
-+for rpm; do
-+ name=`$RPM -qp $rpm --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n'`
-+ mkdir $unpackdir || exit
-+ $RPM2CPIO "$rpm" | {
-+ cd $unpackdir
-+ $CPIO -i -d --no-absolute-filenames -uv '*.so.*' '*.so' 2>&1 |
-+ while read file b; do
-+ test x"$b" = x || break
-+ case "$file" in
-+ *.so.[0-9]*) $OBJDUMP --dynamic-syms $file ;;
-+ esac
-+ done
-+ } > $name.dynsym
-+ echo wrote $name.dynsym for $rpm
-+ rm -rf $unpackdir
-+done
---- glibc-2.3.2/shadow/Makefile 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/shadow/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1996 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 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
-@@ -26,5 +26,12 @@
- getspent_r getspnam_r sgetspent_r fgetspent_r \
- lckpwdf
-
-+CFLAGS-getspent_r.c = -fexceptions
-+CFLAGS-getspent.c = -fexceptions
-+CFLAGS-fgetspent.c = -fexceptions
-+CFLAGS-fgetspent_r.c = -fexceptions
-+CFLAGS-putspent.c = -fexceptions
-+CFLAGS-getspnam.c = -fexceptions
-+CFLAGS-getspnam_r.c = -fexceptions
-
- include ../Rules
---- glibc-2.3.2/shadow/shadow.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/shadow/shadow.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -54,46 +54,90 @@
- };
-
-
--/* Open database for reading. */
--extern void setspent (void) __THROW;
-+/* Open database for reading.
-
--/* Close database. */
--extern void endspent (void) __THROW;
--
--/* Get next entry from database, perhaps after opening the file. */
--extern struct spwd *getspent (void) __THROW;
--
--/* Get shadow entry matching NAME. */
--extern struct spwd *getspnam (__const char *__name) __THROW;
--
--/* Read shadow entry from STRING. */
--extern struct spwd *sgetspent (__const char *__string) __THROW;
--
--/* Read next shadow entry from STREAM. */
--extern struct spwd *fgetspent (FILE *__stream) __THROW;
--
--/* Write line containing shadow password entry to stream. */
--extern int putspent (__const struct spwd *__p, FILE *__stream) __THROW;
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern void setspent (void);
-+
-+/* Close database.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern void endspent (void);
-+
-+/* Get next entry from database, perhaps after opening the file.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct spwd *getspent (void);
-+
-+/* Get shadow entry matching NAME.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct spwd *getspnam (__const char *__name);
-+
-+/* Read shadow entry from STRING.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct spwd *sgetspent (__const char *__string);
-+
-+/* Read next shadow entry from STREAM.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern struct spwd *fgetspent (FILE *__stream);
-+
-+/* Write line containing shadow password entry to stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int putspent (__const struct spwd *__p, FILE *__stream);
-
-
- #ifdef __USE_MISC
--/* Reentrant versions of some of the functions above. */
-+/* Reentrant versions of some of the functions above.
-+
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
- extern int getspent_r (struct spwd *__result_buf, char *__buffer,
-- size_t __buflen, struct spwd **__result) __THROW;
-+ size_t __buflen, struct spwd **__result);
-
- extern int getspnam_r (__const char *__name, struct spwd *__result_buf,
- char *__buffer, size_t __buflen,
-- struct spwd **__result)__THROW;
-+ struct spwd **__result);
-
- extern int sgetspent_r (__const char *__string, struct spwd *__result_buf,
- char *__buffer, size_t __buflen,
-- struct spwd **__result) __THROW;
-+ struct spwd **__result);
-
- extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf,
- char *__buffer, size_t __buflen,
-- struct spwd **__result) __THROW;
-+ struct spwd **__result);
- #endif /* misc */
-
-+
-+/* The simple locking functionality provided here is not suitable for
-+ multi-threaded applications. */
-+
- /* Protect password file against multi writers. */
- extern int lckpwdf (void) __THROW;
-
---- glibc-2.3.2/signal/Makefile 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/signal/Makefile 2003-08-21 08:37:07.000000000 -0400
-@@ -1,4 +1,5 @@
--# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,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
-@@ -37,9 +38,15 @@
- allocrtsig sigtimedwait sigwaitinfo sigqueue \
- sighold sigrelse sigignore sigset
-
--tests := tst-signal
-+tests := tst-signal tst-sigset tst-sigsimple
-
- distribute := sigsetops.h testrtsig.h sigset-cvt-mask.h
-
-
- include ../Rules
-+
-+CFLAGS-sigpause.c = -fexceptions
-+CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables
---- glibc-2.3.2/signal/sigaddset.c 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/signal/sigaddset.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 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
-@@ -32,3 +32,4 @@
-
- return __sigaddset (set, signo);
- }
-+libc_hidden_def (sigaddset)
---- glibc-2.3.2/signal/sigdelset.c 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/signal/sigdelset.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 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
-@@ -32,3 +32,4 @@
-
- return __sigdelset (set, signo);
- }
-+libc_hidden_def (sigdelset)
---- glibc-2.3.2/signal/sigfillset.c 2002-08-03 22:19:59.000000000 -0400
-+++ glibc-2.3.2/signal/sigfillset.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,38 +0,0 @@
--/* Copyright (C) 1991,96,97,2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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 <signal.h>
--#include <string.h>
--
--/* Set all signals in SET. */
--int
--sigfillset (set)
-- sigset_t *set;
--{
-- if (set == NULL)
-- {
-- __set_errno (EINVAL);
-- return -1;
-- }
--
-- memset (set, 0xff, sizeof (sigset_t));
--
-- return 0;
--}
--libc_hidden_def (sigfillset)
---- glibc-2.3.2/signal/sighold.c 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/signal/sighold.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Add SIG to the calling process' signal mask.
-- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -33,7 +33,7 @@
- return -1;
-
- /* Add the specified signal. */
-- if (__sigaddset (&set, sig) < 0)
-+ if (sigaddset (&set, sig) < 0)
- return -1;
-
- /* Set the new mask. */
---- glibc-2.3.2/signal/signal.h 2003-02-19 15:39:25.000000000 -0500
-+++ glibc-2.3.2/signal/signal.h 2003-09-19 22:37:06.000000000 -0400
-@@ -134,7 +134,7 @@
-
- #ifdef __USE_MISC
- /* Print a message describing the meaning of the given signal number. */
--extern void psignal (int __sig, __const char *__s) __THROW;
-+extern void psignal (int __sig, __const char *__s);
- #endif /* Use misc. */
-
-
-@@ -142,8 +142,11 @@
- BSD definition defines the argument as a mask of the signal, while
- the more modern interface in X/Open defines it as the signal
- number. We go with the BSD version unless the user explicitly
-- selects the X/Open version. */
--extern int __sigpause (int __sig_or_mask, int __is_sig) __THROW;
-+ selects the X/Open version.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int __sigpause (int __sig_or_mask, int __is_sig);
-
- #ifdef __USE_BSD
- /* Set the mask of blocked signals to MASK,
-@@ -153,7 +156,7 @@
- #else
- # ifdef __USE_XOPEN
- # ifdef __GNUC__
--extern int sigpause (int __sig) __THROW __asm__ ("__xpg_sigpause");
-+extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
- # endif
- /* Remove a signal from the signal mask and suspend the process. */
- # define sigpause(sig) __sigpause ((sig), 1)
-@@ -242,8 +245,11 @@
- sigset_t *__restrict __oset) __THROW;
-
- /* Change the set of blocked signals to SET,
-- wait until a signal arrives, and restore the set of blocked signals. */
--extern int sigsuspend (__const sigset_t *__set) __THROW;
-+ wait until a signal arrives, and restore the set of blocked signals.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int sigsuspend (__const sigset_t *__set);
-
- /* Get and/or set the action for signal SIG. */
- extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
-@@ -253,21 +259,28 @@
- extern int sigpending (sigset_t *__set) __THROW;
-
-
--/* Select any of pending signals from SET or wait for any to arrive. */
--extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
-- __THROW;
-+/* Select any of pending signals from SET or wait for any to arrive.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig);
-
- # ifdef __USE_POSIX199309
--/* Select any of pending signals from SET and place information in INFO. */
-+/* Select any of pending signals from SET and place information in INFO.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int sigwaitinfo (__const sigset_t *__restrict __set,
-- siginfo_t *__restrict __info) __THROW;
-+ siginfo_t *__restrict __info);
-
- /* Select any of pending signals from SET and place information in INFO.
-- Wait the time specified by TIMEOUT if no signal is pending. */
-+ Wait the time specified by TIMEOUT if no signal is pending.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int sigtimedwait (__const sigset_t *__restrict __set,
- siginfo_t *__restrict __info,
-- __const struct timespec *__restrict __timeout)
-- __THROW;
-+ __const struct timespec *__restrict __timeout);
-
- /* Send signal SIG to the process PID. Associate data in VAL with the
- signal. */
-@@ -343,7 +356,7 @@
-
- #endif /* use BSD or X/Open Unix. */
-
--#ifdef __USE_UNIX98
-+#ifdef __USE_XOPEN_EXTENDED
- /* Simplified interface for signal management. */
-
- /* Add SIG to the calling process' signal mask. */
---- glibc-2.3.2/signal/sigrelse.c 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/signal/sigrelse.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Remove SIG from the calling process' signal mask.
-- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -33,7 +33,7 @@
- return -1;
-
- /* Remove the specified signal. */
-- if (__sigdelset (&set, sig) < 0)
-+ if (sigdelset (&set, sig) < 0)
- return -1;
-
- /* Set the new mask. */
---- glibc-2.3.2/signal/tst-sigset.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/signal/tst-sigset.c 2003-04-01 01:49:23.000000000 -0500
-@@ -0,0 +1,43 @@
-+/* Test sig*set functions. */
-+
-+#include <signal.h>
-+#include <stdio.h>
-+
-+#define TEST_FUNCTION do_test ()
-+static int
-+do_test (void)
-+{
-+ int result = 0;
-+ int sig = -1;
-+
-+#define TRY(call) \
-+ if (call) \
-+ { \
-+ printf ("%s (sig = %d): %m\n", #call, sig); \
-+ result = 1; \
-+ } \
-+ else
-+
-+
-+ sigset_t set;
-+ TRY (sigemptyset (&set) != 0);
-+
-+#ifdef SIGRTMAX
-+ int max_sig = SIGRTMAX;
-+#else
-+ int max_sig = NSIG - 1;
-+#endif
-+
-+ for (sig = 1; sig <= max_sig; ++sig)
-+ {
-+ TRY (sigismember (&set, sig) != 0);
-+ TRY (sigaddset (&set, sig) != 0);
-+ TRY (sigismember (&set, sig) == 0);
-+ TRY (sigdelset (&set, sig) != 0);
-+ TRY (sigismember (&set, sig) != 0);
-+ }
-+
-+ return result;
-+}
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/signal/tst-sigsimple.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/signal/tst-sigsimple.c 2003-04-17 19:29:08.000000000 -0400
-@@ -0,0 +1,57 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 <signal.h>
-+#include <stdio.h>
-+#include <string.h>
-+
-+
-+static int
-+do_test (void)
-+{
-+ int result = 0;
-+ int e;
-+
-+#define RUN(test) \
-+ errno = 0; \
-+ e = test; \
-+ if (e != -1) \
-+ { \
-+ printf ("%s returned %d\n", #test, e); \
-+ result = 1; \
-+ } \
-+ else if (errno != EINVAL) \
-+ { \
-+ printf ("%s didn't set errno to EINVAL (%s instead)\n", \
-+ #test, strerror (errno)); \
-+ result = 1; \
-+ }
-+
-+ RUN (sighold (-1));
-+ RUN (sighold (_NSIG + 100));
-+
-+ RUN (sigrelse (-1));
-+ RUN (sigrelse (_NSIG + 100));
-+
-+ return result;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
---- glibc-2.3.2/socket/sys/socket.h 2001-07-07 15:21:17.000000000 -0400
-+++ glibc-2.3.2/socket/sys/socket.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Declarations of socket constants, types, and functions.
-- Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
-+ Copyright (C) 1991,92,1994-2001,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
-@@ -117,9 +117,11 @@
- /* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
- For connectionless socket types, just set the default address to send to
- and the only address from which to accept transmissions.
-- Return 0 on success, -1 for errors. */
--extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
-- __THROW;
-+ Return 0 on success, -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
-
- /* Put the address of the peer connected to socket FD into *ADDR
- (which is *LEN bytes long), and its actual length into *LEN. */
-@@ -127,39 +129,54 @@
- socklen_t *__restrict __len) __THROW;
-
-
--/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
--extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags)
-- __THROW;
-+/* Send N bytes of BUF to socket FD. Returns the number sent or -1.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
-
- /* Read N bytes into BUF from socket FD.
-- Returns the number read or -1 for errors. */
--extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags)
-- __THROW;
-+ Returns the number read or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
-
- /* Send N bytes of BUF on socket FD to peer at address ADDR (which is
-- ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */
-+ ADDR_LEN bytes long). Returns the number sent, or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
- int __flags, __CONST_SOCKADDR_ARG __addr,
-- socklen_t __addr_len) __THROW;
-+ socklen_t __addr_len);
-
- /* Read N bytes into BUF through socket FD.
- If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
- the sender, and store the actual size of the address in *ADDR_LEN.
-- Returns the number of bytes read or -1 for errors. */
--extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
-- __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
-- __THROW;
-+ Returns the number of bytes read or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
-+ int __flags, __SOCKADDR_ARG __addr,
-+ socklen_t *__restrict __addr_len);
-
-
- /* Send a message described MESSAGE on socket FD.
-- Returns the number of bytes sent, or -1 for errors. */
--extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, int __flags)
-- __THROW;
-+ Returns the number of bytes sent, or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
-+ int __flags);
-
- /* Receive a message as described by MESSAGE from socket FD.
-- Returns the number of bytes read or -1 for errors. */
--extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags)
-- __THROW;
-+ Returns the number of bytes read or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
-
-
- /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
-@@ -185,10 +202,12 @@
- When a connection arrives, open a new socket to communicate with it,
- set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
- peer and *ADDR_LEN to the address's actual length, and return the
-- new socket's descriptor, or -1 for errors. */
-+ new socket's descriptor, or -1 for errors.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int accept (int __fd, __SOCKADDR_ARG __addr,
-- socklen_t *__restrict __addr_len)
-- __THROW;
-+ socklen_t *__restrict __addr_len);
-
- /* Shut down all or part of the connection open on socket FD.
- HOW determines what to shut down:
---- glibc-2.3.2/soft-fp/soft-fp.h 2002-11-01 21:15:53.000000000 -0500
-+++ glibc-2.3.2/soft-fp/soft-fp.h 2003-06-03 09:36:27.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Software floating-point emulation.
-- Copyright (C) 1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@cygnus.com),
- Jakub Jelinek (jj@ultra.linux.cz),
-@@ -55,7 +55,7 @@
- #define FP_EX_OVERFLOW 0
- #endif
- #ifndef FP_EX_UNDERFLOW
--#define FP_EX_UNDERFLOW
-+#define FP_EX_UNDERFLOW 0
- #endif
- #ifndef FP_EX_DIVZERO
- #define FP_EX_DIVZERO 0
-@@ -74,7 +74,7 @@
- #else
- #define FP_DECL_EX int _fex = 0
- #endif
--
-+
- #ifndef FP_INIT_ROUNDMODE
- #define FP_INIT_ROUNDMODE do {} while (0)
- #endif
-@@ -94,7 +94,7 @@
-
- #define FP_SET_EXCEPTION(ex) \
- _fex |= (ex)
--
-+
- #define FP_UNSET_EXCEPTION(ex) \
- _fex &= ~(ex)
-
---- glibc-2.3.2/stdio-common/Makefile 2003-01-30 14:26:54.000000000 -0500
-+++ glibc-2.3.2/stdio-common/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -38,11 +38,9 @@
-
- install-others = $(inst_includedir)/bits/stdio_lim.h
-
--generated = errlist-compat.c
--
- include ../Makeconfig
-
--aux := errlist siglist
-+aux := errlist siglist printf-parsemb printf-parsewc
- distribute := _itoa.h _itowa.h _i18n_number.h \
- printf-parse.h stdio_lim.h.in tst-unbputc.sh tst-printf.sh
-
-@@ -83,6 +81,13 @@
- CFLAGS-scanf7.c = -Wno-format
- CFLAGS-tst-printfsz.c = -Wno-format
-
-+CFLAGS-tmpfile.c = -fexceptions
-+CFLAGS-tmpfile64.c = -fexceptions
-+CFLAGS-tempname.c = -fexceptions
-+CFLAGS-psignal.c = -fexceptions
-+CFLAGS-vprintf.c = -fexceptions
-+CFLAGS-cuserid.c = -fexceptions
-+
- tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
- tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
- test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
---- glibc-2.3.2/stdio-common/_itoa.c 2002-03-12 14:27:44.000000000 -0500
-+++ glibc-2.3.2/stdio-common/_itoa.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Internal function for converting integers to ASCII.
-- Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994, 1995, 1996, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund <tege@matematik.su.se>
- and Ulrich Drepper <drepper@gnu.org>.
-@@ -81,41 +82,41 @@
- const struct base_table_t _itoa_base_table[] attribute_hidden =
- {
- #if BITS_PER_MP_LIMB == 64
-- /* 2 */ {SEL1(0ul) 1, 1},
-- /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 1},
-- /* 4 */ {SEL1(0ul) 1, 2},
-- /* 5 */ {SEL1(0xcccccccccccccccdul) 0, 2},
-- /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 2},
-- /* 7 */ {SEL1(0x2492492492492493ul) 1, 3},
-- /* 8 */ {SEL1(0ul) 1, 3},
-- /* 9 */ {SEL1(0xe38e38e38e38e38ful) 0, 3},
-- /* 10 */ {SEL1(0xcccccccccccccccdul) 0, 3},
-- /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 1},
-- /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 3},
-- /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 2},
-- /* 14 */ {SEL1(0x2492492492492493ul) 1, 4},
-- /* 15 */ {SEL1(0x8888888888888889ul) 0, 3},
-- /* 16 */ {SEL1(0ul) 1, 4},
-- /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 4},
-- /* 18 */ {SEL1(0xe38e38e38e38e38ful) 0, 4},
-- /* 19 */ {SEL1(0xd79435e50d79435ful) 0, 4},
-- /* 20 */ {SEL1(0xcccccccccccccccdul) 0, 4},
-- /* 21 */ {SEL1(0x8618618618618619ul) 1, 5},
-- /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 2},
-- /* 23 */ {SEL1(0x642c8590b21642c9ul) 1, 5},
-- /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 4},
-- /* 25 */ {SEL1(0x47ae147ae147ae15ul) 1, 5},
-- /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 3},
-- /* 27 */ {SEL1(0x97b425ed097b425ful) 0, 4},
-- /* 28 */ {SEL1(0x2492492492492493ul) 1, 5},
-- /* 29 */ {SEL1(0x1a7b9611a7b9611bul) 1, 5},
-- /* 30 */ {SEL1(0x8888888888888889ul) 0, 4},
-- /* 31 */ {SEL1(0x0842108421084211ul) 1, 5},
-- /* 32 */ {SEL1(0ul) 1, 5},
-- /* 33 */ {SEL1(0x0f83e0f83e0f83e1ul) 0, 1},
-- /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 5},
-- /* 35 */ {SEL1(0xea0ea0ea0ea0ea0ful) 0, 5},
-- /* 36 */ {SEL1(0xe38e38e38e38e38ful) 0, 5}
-+ /* 2 */ {SEL1(0ull) 1, 1},
-+ /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1},
-+ /* 4 */ {SEL1(0ull) 1, 2},
-+ /* 5 */ {SEL1(0xcccccccccccccccdull) 0, 2},
-+ /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2},
-+ /* 7 */ {SEL1(0x2492492492492493ull) 1, 3},
-+ /* 8 */ {SEL1(0ull) 1, 3},
-+ /* 9 */ {SEL1(0xe38e38e38e38e38full) 0, 3},
-+ /* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3},
-+ /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1},
-+ /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3},
-+ /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2},
-+ /* 14 */ {SEL1(0x2492492492492493ull) 1, 4},
-+ /* 15 */ {SEL1(0x8888888888888889ull) 0, 3},
-+ /* 16 */ {SEL1(0ull) 1, 4},
-+ /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4},
-+ /* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4},
-+ /* 19 */ {SEL1(0xd79435e50d79435full) 0, 4},
-+ /* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4},
-+ /* 21 */ {SEL1(0x8618618618618619ull) 1, 5},
-+ /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2},
-+ /* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5},
-+ /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4},
-+ /* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5},
-+ /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3},
-+ /* 27 */ {SEL1(0x97b425ed097b425full) 0, 4},
-+ /* 28 */ {SEL1(0x2492492492492493ull) 1, 5},
-+ /* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5},
-+ /* 30 */ {SEL1(0x8888888888888889ull) 0, 4},
-+ /* 31 */ {SEL1(0x0842108421084211ull) 1, 5},
-+ /* 32 */ {SEL1(0ull) 1, 5},
-+ /* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1},
-+ /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5},
-+ /* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5},
-+ /* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5}
- #endif
- #if BITS_PER_MP_LIMB == 32
- /* 2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}},
-@@ -423,3 +424,23 @@
-
- return buflim;
- }
-+
-+char *
-+_fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
-+{
-+ char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
-+ char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
-+ while (cp < tmpbuf + sizeof (value) * 4)
-+ *buf++ = *cp++;
-+ return buf;
-+}
-+
-+char *
-+_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
-+{
-+ char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
-+ char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case);
-+ while (cp < tmpbuf + sizeof (value) * 4)
-+ *buf++ = *cp++;
-+ return buf;
-+}
---- glibc-2.3.2/stdio-common/_itoa.h 2002-04-08 14:37:21.000000000 -0400
-+++ glibc-2.3.2/stdio-common/_itoa.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Internal function for converting integers to ASCII.
-- Copyright (C) 1994, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994,95,96,97,98,99,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
-@@ -34,7 +34,7 @@
- extern const char _itoa_lower_digits[];
- extern const char _itoa_lower_digits_internal[] attribute_hidden;
-
--static inline char * __attribute__ ((unused))
-+static inline char * __attribute__ ((unused, always_inline))
- _itoa_word (unsigned long value, char *buflim,
- unsigned int base, int upper_case)
- {
-@@ -69,24 +69,11 @@
- }
- #undef SPECIAL
-
--static inline char * __attribute__ ((unused))
--_fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
--{
-- char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
-- char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
-- while (cp < tmpbuf + sizeof (value) * 4)
-- *buf++ = *cp++;
-- return buf;
--}
--
--static inline char * __attribute__ ((unused))
--_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
--{
-- char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
-- char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case);
-- while (cp < tmpbuf + sizeof (value) * 4)
-- *buf++ = *cp++;
-- return buf;
--}
-+/* Similar to the _itoa functions, but output starts at buf and pointer
-+ after the last written character is returned. */
-+extern char *_fitoa_word (unsigned long value, char *buf, unsigned int base,
-+ int upper_case) attribute_hidden;
-+extern char *_fitoa (unsigned long long value, char *buf, unsigned int base,
-+ int upper_case) attribute_hidden;
-
- #endif /* itoa.h */
---- glibc-2.3.2/stdio-common/_itowa.h 2002-03-12 14:19:19.000000000 -0500
-+++ glibc-2.3.2/stdio-common/_itowa.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Internal function for converting integers to ASCII.
-- Copyright (C) 1994, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994,95,96,97,98,99,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
-@@ -31,7 +31,7 @@
- unsigned int base, int upper_case);
-
- static inline wchar_t *
--__attribute__ ((unused))
-+__attribute__ ((unused, always_inline))
- _itowa_word (unsigned long value, wchar_t *buflim,
- unsigned int base, int upper_case)
- {
---- glibc-2.3.2/stdio-common/perror.c 2002-08-10 14:09:08.000000000 -0400
-+++ glibc-2.3.2/stdio-common/perror.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1993,1997,1998,2000-2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1993,1997,1998,2000-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
-@@ -55,7 +55,6 @@
- perror (const char *s)
- {
- int errnum = errno;
--#ifdef USE_IN_LIBIO
- FILE *fp;
- int fd = -1;
-
-@@ -83,11 +82,6 @@
- perror_internal (fp, s, errnum);
- /* Close the stream. */
- fclose (fp);
--
-- ((_IO_FILE *) stderr)->_offset = _IO_pos_BAD;
- }
--#else
-- perror_internal (stderr, s, errnum);
--#endif
- }
- libc_hidden_def (perror)
---- glibc-2.3.2/stdio-common/printf-parse.h 2002-11-01 21:15:53.000000000 -0500
-+++ glibc-2.3.2/stdio-common/printf-parse.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Internal header for parsing printf format strings.
-- Copyright (C) 1995-1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of th GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -17,15 +17,9 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <ctype.h>
--#include <limits.h>
- #include <printf.h>
- #include <stdint.h>
- #include <stddef.h>
--#include <string.h>
--
--#define NDEBUG 1
--#include <assert.h>
-
-
- struct printf_spec
-@@ -51,17 +45,13 @@
- /* The various kinds off arguments that can be passed to printf. */
- union printf_arg
- {
-- unsigned char pa_char;
- wchar_t pa_wchar;
-- short int pa_short_int;
- int pa_int;
- long int pa_long_int;
- long long int pa_long_long_int;
-- unsigned short int pa_u_short_int;
- unsigned int pa_u_int;
- unsigned long int pa_u_long_int;
- unsigned long long int pa_u_long_long_int;
-- float pa_float;
- double pa_double;
- long double pa_long_double;
- const char *pa_string;
-@@ -70,9 +60,10 @@
- };
-
-
-+#ifndef DONT_NEED_READ_INT
- /* Read a simple integer from a string and update the string pointer.
- It is assumed that the first character is a digit. */
--static inline unsigned int
-+static unsigned int
- read_int (const UCHAR_T * *pstr)
- {
- unsigned int retval = **pstr - L_('0');
-@@ -85,35 +76,7 @@
-
- return retval;
- }
--
--
--
--/* Find the next spec in FORMAT, or the end of the string. Returns
-- a pointer into FORMAT, to a '%' or a '\0'. */
--static inline const UCHAR_T *
--#ifdef COMPILE_WPRINTF
--find_spec (const UCHAR_T *format)
--#else
--find_spec (const UCHAR_T *format, mbstate_t *ps)
--#endif
--{
--#ifdef COMPILE_WPRINTF
-- return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%');
--#else
-- while (*format != L_('\0') && *format != L_('%'))
-- {
-- int len;
--
-- /* Remove any hints of a wrong encoding. */
-- ps->__count = 0;
-- if (! isascii (*format) && (len = __mbrlen (format, MB_CUR_MAX, ps)) > 0)
-- format += len;
-- else
-- ++format;
-- }
-- return format;
- #endif
--}
-
-
- /* These are defined in reg-printf.c. */
-@@ -121,334 +84,25 @@
- extern printf_function **__printf_function_table attribute_hidden;
-
-
-+/* Find the next spec in FORMAT, or the end of the string. Returns
-+ a pointer into FORMAT, to a '%' or a '\0'. */
-+extern const unsigned char *__find_specmb (const UCHAR_T *format,
-+ mbstate_t *ps) attribute_hidden;
-+
-+extern const unsigned int *__find_specwc (const UCHAR_T *format)
-+ attribute_hidden;
-+
-+
- /* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC
- with the parsed details. POSN is the number of arguments already
- consumed. At most MAXTYPES - POSN types are filled in TYPES. Return
- the number of args consumed by this spec; *MAX_REF_ARG is updated so it
- remains the highest argument index used. */
--static inline size_t
--#ifdef COMPILE_WPRINTF
--parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
-- size_t *max_ref_arg)
--#else
--parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
-- size_t *max_ref_arg, mbstate_t *ps)
--#endif
--{
-- unsigned int n;
-- size_t nargs = 0;
--
-- /* Skip the '%'. */
-- ++format;
--
-- /* Clear information structure. */
-- spec->data_arg = -1;
-- spec->info.alt = 0;
-- spec->info.space = 0;
-- spec->info.left = 0;
-- spec->info.showsign = 0;
-- spec->info.group = 0;
-- spec->info.i18n = 0;
-- spec->info.pad = ' ';
-- spec->info.wide = sizeof (UCHAR_T) > 1;
--
-- /* Test for positional argument. */
-- if (ISDIGIT (*format))
-- {
-- const UCHAR_T *begin = format;
--
-- n = read_int (&format);
--
-- if (n > 0 && *format == L_('$'))
-- /* Is positional parameter. */
-- {
-- ++format; /* Skip the '$'. */
-- spec->data_arg = n - 1;
-- *max_ref_arg = MAX (*max_ref_arg, n);
-- }
-- else
-- /* Oops; that was actually the width and/or 0 padding flag.
-- Step back and read it again. */
-- format = begin;
-- }
--
-- /* Check for spec modifiers. */
-- do
-- {
-- switch (*format)
-- {
-- case L_(' '):
-- /* Output a space in place of a sign, when there is no sign. */
-- spec->info.space = 1;
-- continue;
-- case L_('+'):
-- /* Always output + or - for numbers. */
-- spec->info.showsign = 1;
-- continue;
-- case L_('-'):
-- /* Left-justify things. */
-- spec->info.left = 1;
-- continue;
-- case L_('#'):
-- /* Use the "alternate form":
-- Hex has 0x or 0X, FP always has a decimal point. */
-- spec->info.alt = 1;
-- continue;
-- case L_('0'):
-- /* Pad with 0s. */
-- spec->info.pad = '0';
-- continue;
-- case L_('\''):
-- /* Show grouping in numbers if the locale information
-- indicates any. */
-- spec->info.group = 1;
-- continue;
-- case L_('I'):
-- /* Use the internationalized form of the output. Currently
-- means to use the `outdigits' of the current locale. */
-- spec->info.i18n = 1;
-- continue;
-- default:
-- break;
-- }
-- break;
-- }
-- while (*++format);
--
-- if (spec->info.left)
-- spec->info.pad = ' ';
--
-- /* Get the field width. */
-- spec->width_arg = -1;
-- spec->info.width = 0;
-- if (*format == L_('*'))
-- {
-- /* The field width is given in an argument.
-- A negative field width indicates left justification. */
-- const UCHAR_T *begin = ++format;
--
-- if (ISDIGIT (*format))
-- {
-- /* The width argument might be found in a positional parameter. */
-- n = read_int (&format);
--
-- if (n > 0 && *format == L_('$'))
-- {
-- spec->width_arg = n - 1;
-- *max_ref_arg = MAX (*max_ref_arg, n);
-- ++format; /* Skip '$'. */
-- }
-- }
--
-- if (spec->width_arg < 0)
-- {
-- /* Not in a positional parameter. Consume one argument. */
-- spec->width_arg = posn++;
-- ++nargs;
-- format = begin; /* Step back and reread. */
-- }
-- }
-- else if (ISDIGIT (*format))
-- /* Constant width specification. */
-- spec->info.width = read_int (&format);
--
-- /* Get the precision. */
-- spec->prec_arg = -1;
-- /* -1 means none given; 0 means explicit 0. */
-- spec->info.prec = -1;
-- if (*format == L_('.'))
-- {
-- ++format;
-- if (*format == L_('*'))
-- {
-- /* The precision is given in an argument. */
-- const UCHAR_T *begin = ++format;
--
-- if (ISDIGIT (*format))
-- {
-- n = read_int (&format);
--
-- if (n > 0 && *format == L_('$'))
-- {
-- spec->prec_arg = n - 1;
-- *max_ref_arg = MAX (*max_ref_arg, n);
-- ++format;
-- }
-- }
--
-- if (spec->prec_arg < 0)
-- {
-- /* Not in a positional parameter. */
-- spec->prec_arg = posn++;
-- ++nargs;
-- format = begin;
-- }
-- }
-- else if (ISDIGIT (*format))
-- spec->info.prec = read_int (&format);
-- else
-- /* "%.?" is treated like "%.0?". */
-- spec->info.prec = 0;
-- }
--
-- /* Check for type modifiers. */
-- spec->info.is_long_double = 0;
-- spec->info.is_short = 0;
-- spec->info.is_long = 0;
-- spec->info.is_char = 0;
--
-- switch (*format++)
-- {
-- case L_('h'):
-- /* ints are short ints or chars. */
-- if (*format != L_('h'))
-- spec->info.is_short = 1;
-- else
-- {
-- ++format;
-- spec->info.is_char = 1;
-- }
-- break;
-- case L_('l'):
-- /* ints are long ints. */
-- spec->info.is_long = 1;
-- if (*format != L_('l'))
-- break;
-- ++format;
-- /* FALLTHROUGH */
-- case L_('L'):
-- /* doubles are long doubles, and ints are long long ints. */
-- case L_('q'):
-- /* 4.4 uses this for long long. */
-- spec->info.is_long_double = 1;
-- break;
-- case L_('z'):
-- case L_('Z'):
-- /* ints are size_ts. */
-- assert (sizeof (size_t) <= sizeof (unsigned long long int));
--#if LONG_MAX != LONG_LONG_MAX
-- spec->info.is_long_double = sizeof (size_t) > sizeof (unsigned long int);
--#endif
-- spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
-- break;
-- case L_('t'):
-- assert (sizeof (ptrdiff_t) <= sizeof (long long int));
--#if LONG_MAX != LONG_LONG_MAX
-- spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
--#endif
-- spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
-- break;
-- case L_('j'):
-- assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
--#if LONG_MAX != LONG_LONG_MAX
-- spec->info.is_long_double = (sizeof (uintmax_t)
-- > sizeof (unsigned long int));
--#endif
-- spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
-- break;
-- default:
-- /* Not a recognized modifier. Backup. */
-- --format;
-- break;
-- }
--
-- /* Get the format specification. */
-- spec->info.spec = (wchar_t) *format++;
-- if (__builtin_expect (__printf_function_table != NULL, 0)
-- && spec->info.spec <= UCHAR_MAX
-- && __printf_arginfo_table[spec->info.spec] != NULL)
-- /* We don't try to get the types for all arguments if the format
-- uses more than one. The normal case is covered though. */
-- spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
-- (&spec->info, 1, &spec->data_arg_type);
-- else
-- {
-- /* Find the data argument types of a built-in spec. */
-- spec->ndata_args = 1;
--
-- switch (spec->info.spec)
-- {
-- case L'i':
-- case L'd':
-- case L'u':
-- case L'o':
-- case L'X':
-- case L'x':
--#if LONG_MAX != LONG_LONG_MAX
-- if (spec->info.is_long_double)
-- spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
-- else
--#endif
-- if (spec->info.is_long)
-- spec->data_arg_type = PA_INT|PA_FLAG_LONG;
-- else if (spec->info.is_short)
-- spec->data_arg_type = PA_INT|PA_FLAG_SHORT;
-- else if (spec->info.is_char)
-- spec->data_arg_type = PA_CHAR;
-- else
-- spec->data_arg_type = PA_INT;
-- break;
-- case L'e':
-- case L'E':
-- case L'f':
-- case L'F':
-- case L'g':
-- case L'G':
-- case L'a':
-- case L'A':
-- if (spec->info.is_long_double)
-- spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
-- else
-- spec->data_arg_type = PA_DOUBLE;
-- break;
-- case L'c':
-- spec->data_arg_type = PA_CHAR;
-- break;
-- case L'C':
-- spec->data_arg_type = PA_WCHAR;
-- break;
-- case L's':
-- spec->data_arg_type = PA_STRING;
-- break;
-- case L'S':
-- spec->data_arg_type = PA_WSTRING;
-- break;
-- case L'p':
-- spec->data_arg_type = PA_POINTER;
-- break;
-- case L'n':
-- spec->data_arg_type = PA_INT|PA_FLAG_PTR;
-- break;
--
-- case L'm':
-- default:
-- /* An unknown spec will consume no args. */
-- spec->ndata_args = 0;
-- break;
-- }
-- }
--
-- if (spec->data_arg == -1 && spec->ndata_args > 0)
-- {
-- /* There are args consumed, but no positional spec. Use the
-- next sequential arg position. */
-- spec->data_arg = posn;
-- nargs += spec->ndata_args;
-- }
--
-- if (spec->info.spec == L'\0')
-- /* Format ended before this spec was complete. */
-- spec->end_of_fmt = spec->next_fmt = format - 1;
-- else
-- {
-- /* Find the next format spec. */
-- spec->end_of_fmt = format;
--#ifdef COMPILE_WPRINTF
-- spec->next_fmt = find_spec (format);
--#else
-- spec->next_fmt = find_spec (format, ps);
--#endif
-- }
--
-- return nargs;
--}
-+extern size_t __parse_one_specmb (const unsigned char *format, size_t posn,
-+ struct printf_spec *spec,
-+ size_t *max_ref_arg, mbstate_t *ps)
-+ attribute_hidden;
-+
-+extern size_t __parse_one_specwc (const unsigned int *format, size_t posn,
-+ struct printf_spec *spec,
-+ size_t *max_ref_arg) attribute_hidden;
---- glibc-2.3.2/stdio-common/printf-parsemb.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/stdio-common/printf-parsemb.c 2003-06-12 11:06:16.000000000 -0400
-@@ -0,0 +1,409 @@
-+/* Helper functions for parsing printf format strings.
-+ Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of th 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 <ctype.h>
-+#include <limits.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/param.h>
-+#include <wchar.h>
-+#include <wctype.h>
-+
-+#ifndef COMPILE_WPRINTF
-+# define CHAR_T char
-+# define UCHAR_T unsigned char
-+# define INT_T int
-+# define L_(Str) Str
-+# define ISDIGIT(Ch) isdigit (Ch)
-+#else
-+# define CHAR_T wchar_t
-+# define UCHAR_T unsigned int
-+# define INT_T wint_t
-+# define L_(Str) L##Str
-+# define ISDIGIT(Ch) iswdigit (Ch)
-+#endif
-+
-+#include "printf-parse.h"
-+
-+#define NDEBUG 1
-+#include <assert.h>
-+
-+
-+
-+/* Find the next spec in FORMAT, or the end of the string. Returns
-+ a pointer into FORMAT, to a '%' or a '\0'. */
-+const UCHAR_T *
-+#ifdef COMPILE_WPRINTF
-+__find_specwc (const UCHAR_T *format)
-+#else
-+__find_specmb (const UCHAR_T *format, mbstate_t *ps)
-+#endif
-+{
-+#ifdef COMPILE_WPRINTF
-+ return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%');
-+#else
-+ while (*format != L_('\0') && *format != L_('%'))
-+ {
-+ int len;
-+
-+ /* Remove any hints of a wrong encoding. */
-+ ps->__count = 0;
-+ if (! isascii (*format) && (len = __mbrlen (format, MB_CUR_MAX, ps)) > 0)
-+ format += len;
-+ else
-+ ++format;
-+ }
-+ return format;
-+#endif
-+}
-+
-+
-+/* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC
-+ with the parsed details. POSN is the number of arguments already
-+ consumed. At most MAXTYPES - POSN types are filled in TYPES. Return
-+ the number of args consumed by this spec; *MAX_REF_ARG is updated so it
-+ remains the highest argument index used. */
-+size_t
-+attribute_hidden
-+#ifdef COMPILE_WPRINTF
-+__parse_one_specwc (const UCHAR_T *format, size_t posn,
-+ struct printf_spec *spec, size_t *max_ref_arg)
-+#else
-+__parse_one_specmb (const UCHAR_T *format, size_t posn,
-+ struct printf_spec *spec, size_t *max_ref_arg,
-+ mbstate_t *ps)
-+#endif
-+{
-+ unsigned int n;
-+ size_t nargs = 0;
-+
-+ /* Skip the '%'. */
-+ ++format;
-+
-+ /* Clear information structure. */
-+ spec->data_arg = -1;
-+ spec->info.alt = 0;
-+ spec->info.space = 0;
-+ spec->info.left = 0;
-+ spec->info.showsign = 0;
-+ spec->info.group = 0;
-+ spec->info.i18n = 0;
-+ spec->info.pad = ' ';
-+ spec->info.wide = sizeof (UCHAR_T) > 1;
-+
-+ /* Test for positional argument. */
-+ if (ISDIGIT (*format))
-+ {
-+ const UCHAR_T *begin = format;
-+
-+ n = read_int (&format);
-+
-+ if (n > 0 && *format == L_('$'))
-+ /* Is positional parameter. */
-+ {
-+ ++format; /* Skip the '$'. */
-+ spec->data_arg = n - 1;
-+ *max_ref_arg = MAX (*max_ref_arg, n);
-+ }
-+ else
-+ /* Oops; that was actually the width and/or 0 padding flag.
-+ Step back and read it again. */
-+ format = begin;
-+ }
-+
-+ /* Check for spec modifiers. */
-+ do
-+ {
-+ switch (*format)
-+ {
-+ case L_(' '):
-+ /* Output a space in place of a sign, when there is no sign. */
-+ spec->info.space = 1;
-+ continue;
-+ case L_('+'):
-+ /* Always output + or - for numbers. */
-+ spec->info.showsign = 1;
-+ continue;
-+ case L_('-'):
-+ /* Left-justify things. */
-+ spec->info.left = 1;
-+ continue;
-+ case L_('#'):
-+ /* Use the "alternate form":
-+ Hex has 0x or 0X, FP always has a decimal point. */
-+ spec->info.alt = 1;
-+ continue;
-+ case L_('0'):
-+ /* Pad with 0s. */
-+ spec->info.pad = '0';
-+ continue;
-+ case L_('\''):
-+ /* Show grouping in numbers if the locale information
-+ indicates any. */
-+ spec->info.group = 1;
-+ continue;
-+ case L_('I'):
-+ /* Use the internationalized form of the output. Currently
-+ means to use the `outdigits' of the current locale. */
-+ spec->info.i18n = 1;
-+ continue;
-+ default:
-+ break;
-+ }
-+ break;
-+ }
-+ while (*++format);
-+
-+ if (spec->info.left)
-+ spec->info.pad = ' ';
-+
-+ /* Get the field width. */
-+ spec->width_arg = -1;
-+ spec->info.width = 0;
-+ if (*format == L_('*'))
-+ {
-+ /* The field width is given in an argument.
-+ A negative field width indicates left justification. */
-+ const UCHAR_T *begin = ++format;
-+
-+ if (ISDIGIT (*format))
-+ {
-+ /* The width argument might be found in a positional parameter. */
-+ n = read_int (&format);
-+
-+ if (n > 0 && *format == L_('$'))
-+ {
-+ spec->width_arg = n - 1;
-+ *max_ref_arg = MAX (*max_ref_arg, n);
-+ ++format; /* Skip '$'. */
-+ }
-+ }
-+
-+ if (spec->width_arg < 0)
-+ {
-+ /* Not in a positional parameter. Consume one argument. */
-+ spec->width_arg = posn++;
-+ ++nargs;
-+ format = begin; /* Step back and reread. */
-+ }
-+ }
-+ else if (ISDIGIT (*format))
-+ /* Constant width specification. */
-+ spec->info.width = read_int (&format);
-+
-+ /* Get the precision. */
-+ spec->prec_arg = -1;
-+ /* -1 means none given; 0 means explicit 0. */
-+ spec->info.prec = -1;
-+ if (*format == L_('.'))
-+ {
-+ ++format;
-+ if (*format == L_('*'))
-+ {
-+ /* The precision is given in an argument. */
-+ const UCHAR_T *begin = ++format;
-+
-+ if (ISDIGIT (*format))
-+ {
-+ n = read_int (&format);
-+
-+ if (n > 0 && *format == L_('$'))
-+ {
-+ spec->prec_arg = n - 1;
-+ *max_ref_arg = MAX (*max_ref_arg, n);
-+ ++format;
-+ }
-+ }
-+
-+ if (spec->prec_arg < 0)
-+ {
-+ /* Not in a positional parameter. */
-+ spec->prec_arg = posn++;
-+ ++nargs;
-+ format = begin;
-+ }
-+ }
-+ else if (ISDIGIT (*format))
-+ spec->info.prec = read_int (&format);
-+ else
-+ /* "%.?" is treated like "%.0?". */
-+ spec->info.prec = 0;
-+ }
-+
-+ /* Check for type modifiers. */
-+ spec->info.is_long_double = 0;
-+ spec->info.is_short = 0;
-+ spec->info.is_long = 0;
-+ spec->info.is_char = 0;
-+
-+ switch (*format++)
-+ {
-+ case L_('h'):
-+ /* ints are short ints or chars. */
-+ if (*format != L_('h'))
-+ spec->info.is_short = 1;
-+ else
-+ {
-+ ++format;
-+ spec->info.is_char = 1;
-+ }
-+ break;
-+ case L_('l'):
-+ /* ints are long ints. */
-+ spec->info.is_long = 1;
-+ if (*format != L_('l'))
-+ break;
-+ ++format;
-+ /* FALLTHROUGH */
-+ case L_('L'):
-+ /* doubles are long doubles, and ints are long long ints. */
-+ case L_('q'):
-+ /* 4.4 uses this for long long. */
-+ spec->info.is_long_double = 1;
-+ break;
-+ case L_('z'):
-+ case L_('Z'):
-+ /* ints are size_ts. */
-+ assert (sizeof (size_t) <= sizeof (unsigned long long int));
-+#if LONG_MAX != LONG_LONG_MAX
-+ spec->info.is_long_double = sizeof (size_t) > sizeof (unsigned long int);
-+#endif
-+ spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
-+ break;
-+ case L_('t'):
-+ assert (sizeof (ptrdiff_t) <= sizeof (long long int));
-+#if LONG_MAX != LONG_LONG_MAX
-+ spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
-+#endif
-+ spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
-+ break;
-+ case L_('j'):
-+ assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
-+#if LONG_MAX != LONG_LONG_MAX
-+ spec->info.is_long_double = (sizeof (uintmax_t)
-+ > sizeof (unsigned long int));
-+#endif
-+ spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
-+ break;
-+ default:
-+ /* Not a recognized modifier. Backup. */
-+ --format;
-+ break;
-+ }
-+
-+ /* Get the format specification. */
-+ spec->info.spec = (wchar_t) *format++;
-+ if (__builtin_expect (__printf_function_table != NULL, 0)
-+ && spec->info.spec <= UCHAR_MAX
-+ && __printf_arginfo_table[spec->info.spec] != NULL)
-+ /* We don't try to get the types for all arguments if the format
-+ uses more than one. The normal case is covered though. */
-+ spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
-+ (&spec->info, 1, &spec->data_arg_type);
-+ else
-+ {
-+ /* Find the data argument types of a built-in spec. */
-+ spec->ndata_args = 1;
-+
-+ switch (spec->info.spec)
-+ {
-+ case L'i':
-+ case L'd':
-+ case L'u':
-+ case L'o':
-+ case L'X':
-+ case L'x':
-+#if LONG_MAX != LONG_LONG_MAX
-+ if (spec->info.is_long_double)
-+ spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
-+ else
-+#endif
-+ if (spec->info.is_long)
-+ spec->data_arg_type = PA_INT|PA_FLAG_LONG;
-+ else if (spec->info.is_short)
-+ spec->data_arg_type = PA_INT|PA_FLAG_SHORT;
-+ else if (spec->info.is_char)
-+ spec->data_arg_type = PA_CHAR;
-+ else
-+ spec->data_arg_type = PA_INT;
-+ break;
-+ case L'e':
-+ case L'E':
-+ case L'f':
-+ case L'F':
-+ case L'g':
-+ case L'G':
-+ case L'a':
-+ case L'A':
-+ if (spec->info.is_long_double)
-+ spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
-+ else
-+ spec->data_arg_type = PA_DOUBLE;
-+ break;
-+ case L'c':
-+ spec->data_arg_type = PA_CHAR;
-+ break;
-+ case L'C':
-+ spec->data_arg_type = PA_WCHAR;
-+ break;
-+ case L's':
-+ spec->data_arg_type = PA_STRING;
-+ break;
-+ case L'S':
-+ spec->data_arg_type = PA_WSTRING;
-+ break;
-+ case L'p':
-+ spec->data_arg_type = PA_POINTER;
-+ break;
-+ case L'n':
-+ spec->data_arg_type = PA_INT|PA_FLAG_PTR;
-+ break;
-+
-+ case L'm':
-+ default:
-+ /* An unknown spec will consume no args. */
-+ spec->ndata_args = 0;
-+ break;
-+ }
-+ }
-+
-+ if (spec->data_arg == -1 && spec->ndata_args > 0)
-+ {
-+ /* There are args consumed, but no positional spec. Use the
-+ next sequential arg position. */
-+ spec->data_arg = posn;
-+ nargs += spec->ndata_args;
-+ }
-+
-+ if (spec->info.spec == L'\0')
-+ /* Format ended before this spec was complete. */
-+ spec->end_of_fmt = spec->next_fmt = format - 1;
-+ else
-+ {
-+ /* Find the next format spec. */
-+ spec->end_of_fmt = format;
-+#ifdef COMPILE_WPRINTF
-+ spec->next_fmt = __find_specwc (format);
-+#else
-+ spec->next_fmt = __find_specmb (format, ps);
-+#endif
-+ }
-+
-+ return nargs;
-+}
---- glibc-2.3.2/stdio-common/printf-parsewc.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/stdio-common/printf-parsewc.c 2003-06-11 18:05:47.000000000 -0400
-@@ -0,0 +1,2 @@
-+#define COMPILE_WPRINTF 1
-+#include "printf-parsemb.c"
---- glibc-2.3.2/stdio-common/printf-prs.c 2002-04-08 14:17:43.000000000 -0400
-+++ glibc-2.3.2/stdio-common/printf-prs.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,95,96,99,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,92,95,96,99,2000,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
-@@ -70,6 +70,7 @@
- # endif
- #endif
-
-+#define DONT_NEED_READ_INT
- #include "printf-parse.h"
-
-
-@@ -88,10 +89,10 @@
- max_ref_arg = 0;
-
- /* Search for format specifications. */
-- for (fmt = find_spec (fmt, &mbstate); *fmt != '\0'; fmt = spec.next_fmt)
-+ for (fmt = __find_specmb (fmt, &mbstate); *fmt != '\0'; fmt = spec.next_fmt)
- {
- /* Parse this spec. */
-- nargs += parse_one_spec (fmt, nargs, &spec, &max_ref_arg, &mbstate);
-+ nargs += __parse_one_specmb (fmt, nargs, &spec, &max_ref_arg, &mbstate);
-
- /* If the width is determined by an argument this is an int. */
- if (spec.width_arg != -1 && (size_t) spec.width_arg < n)
---- glibc-2.3.2/stdio-common/reg-printf.c 2002-11-04 03:58:51.000000000 -0500
-+++ glibc-2.3.2/stdio-common/reg-printf.c 2003-04-12 11:39:44.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996, 1997, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1996,1997,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
-@@ -46,7 +46,7 @@
- if (__printf_function_table == NULL)
- {
- __printf_arginfo_table = (printf_arginfo_function **)
-- malloc ((UCHAR_MAX + 1) * sizeof (void *) * 2);
-+ calloc (UCHAR_MAX + 1, sizeof (void *) * 2);
- if (__printf_arginfo_table == NULL)
- return -1;
- __printf_function_table = (printf_function **)
---- glibc-2.3.2/stdio-common/sscanf.c 2002-08-10 14:09:08.000000000 -0400
-+++ glibc-2.3.2/stdio-common/sscanf.c 2003-03-15 15:02:14.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,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
-@@ -27,9 +27,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--sscanf (s, format)
-- const char *s;
-- const char *format;
-+sscanf (const char *s, const char *format, ...)
- {
- va_list arg;
- int done;
---- glibc-2.3.2/stdio-common/stdio_ext.h 2001-08-10 17:36:29.000000000 -0400
-+++ glibc-2.3.2/stdio-common/stdio_ext.h 2003-09-19 22:37:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Functions to access FILE structure internals.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 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
-@@ -44,43 +44,43 @@
-
- /* Return the size of the buffer of FP in bytes currently in use by
- the given stream. */
--extern size_t __fbufsize (FILE *__fp);
-+extern size_t __fbufsize (FILE *__fp) __THROW;
-
-
- /* Return non-zero value iff the stream FP is opened readonly, or if the
- last operation on the stream was a read operation. */
--extern int __freading (FILE *__fp);
-+extern int __freading (FILE *__fp) __THROW;
-
- /* Return non-zero value iff the stream FP is opened write-only or
- append-only, or if the last operation on the stream was a write
- operation. */
--extern int __fwriting (FILE *__fp);
-+extern int __fwriting (FILE *__fp) __THROW;
-
-
- /* Return non-zero value iff stream FP is not opened write-only or
- append-only. */
--extern int __freadable (FILE *__fp);
-+extern int __freadable (FILE *__fp) __THROW;
-
- /* Return non-zero value iff stream FP is not opened read-only. */
--extern int __fwritable (FILE *__fp);
-+extern int __fwritable (FILE *__fp) __THROW;
-
-
- /* Return non-zero value iff the stream FP is line-buffered. */
--extern int __flbf (FILE *__fp);
-+extern int __flbf (FILE *__fp) __THROW;
-
-
- /* Discard all pending buffered I/O on the stream FP. */
--extern void __fpurge (FILE *__fp);
-+extern void __fpurge (FILE *__fp) __THROW;
-
- /* Return amount of output in bytes pending on a stream FP. */
--extern size_t __fpending (FILE *__fp);
-+extern size_t __fpending (FILE *__fp) __THROW;
-
- /* Flush all line-buffered files. */
- extern void _flushlbf (void);
-
-
- /* Set locking status of stream FP to TYPE. */
--extern int __fsetlocking (FILE *__fp, int __type);
-+extern int __fsetlocking (FILE *__fp, int __type) __THROW;
-
- __END_DECLS
-
---- glibc-2.3.2/stdio-common/test-vfprintf.c 2002-09-24 01:12:03.000000000 -0400
-+++ glibc-2.3.2/stdio-common/test-vfprintf.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Tests of *printf for very large strings.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
-
-@@ -40,14 +40,14 @@
- int
- main (void)
- {
-- char buf[20];
-+ char buf[25];
- size_t i;
- int res = 0;
- int fd;
-
- mtrace ();
-
-- strcpy (buf, "test-vfprintfXXXXXX");
-+ strcpy (buf, "/tmp/test-vfprintfXXXXXX");
- fd = mkstemp (buf);
- if (fd == -1)
- {
---- glibc-2.3.2/stdio-common/tst-fphex.c 2002-10-23 21:15:31.000000000 -0400
-+++ glibc-2.3.2/stdio-common/tst-fphex.c 2003-08-21 08:37:08.000000000 -0400
-@@ -39,7 +39,7 @@
- int n = snprintf (buf, sizeof buf, t->fmt, t->value);
- if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
- {
-- printf ("%s\tExpected \"%s\" (%u)\n\tGot \"%s\" (%d, %u)\n",
-+ printf ("%s\tExpected \"%s\" (%Zu)\n\tGot \"%s\" (%d, %Zu)\n",
- t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
- result = 1;
- }
---- glibc-2.3.2/stdio-common/tst-sprintf.c 2001-12-14 02:13:14.000000000 -0500
-+++ glibc-2.3.2/stdio-common/tst-sprintf.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,5 @@
- #include <stdio.h>
-+#include <stdlib.h>
- #include <string.h>
-
-
-@@ -11,9 +12,30 @@
- if (sprintf (buf, "%.0ls", L"foo") != 0
- || strlen (buf) != 0)
- {
-- puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output\n");
-+ puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output");
- result = 1;
- }
-
-+#define SIZE (1024*70000)
-+#define STR(x) #x
-+
-+ char *dst = malloc (SIZE + 1);
-+
-+ if (dst == NULL)
-+ {
-+ puts ("memory allocation failure");
-+ result = 1;
-+ }
-+ else
-+ {
-+ sprintf (dst, "%*s", SIZE, "");
-+ if (strnlen (dst, SIZE + 1) != SIZE)
-+ {
-+ puts ("sprintf (dst, \"%*s\", " STR(SIZE) ", \"\") did not produce enough output");
-+ result = 1;
-+ }
-+ free (dst);
-+ }
-+
- return result;
- }
---- glibc-2.3.2/stdio-common/tst-wc-printf.c 1998-04-28 10:15:18.000000000 -0400
-+++ glibc-2.3.2/stdio-common/tst-wc-printf.c 2003-08-21 08:37:08.000000000 -0400
-@@ -16,7 +16,7 @@
-
- printf ("with %%S: %S\n", tmp);
-
-- printf ("with %%C: %C\n", tmp[0]);
-+ printf ("with %%C: %C\n", (wint_t) tmp[0]);
-
- return 0;
- }
---- glibc-2.3.2/stdio-common/vfprintf.c 2003-01-30 13:30:25.000000000 -0500
-+++ glibc-2.3.2/stdio-common/vfprintf.c 2003-09-19 22:37:06.000000000 -0400
-@@ -78,7 +78,7 @@
- if (width > 0) \
- done += INTUSE(_IO_padn) (s, (Padchar), width)
- # define PUTC(C, F) _IO_putc_unlocked (C, F)
--# define ORIENT if (s->_vtable_offset == 0 && _IO_fwide (s, -1) != -1)\
-+# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
- return -1
- # else
- # define vfprintf _IO_vfwprintf
-@@ -581,10 +581,8 @@
- else \
- if (is_long_num) \
- signed_number = args_value[fspec->data_arg].pa_long_int; \
-- else if (!is_short) \
-+ else /* `char' and `short int' will be promoted to `int'. */ \
- signed_number = args_value[fspec->data_arg].pa_int; \
-- else \
-- signed_number = args_value[fspec->data_arg].pa_short_int; \
- \
- is_negative = signed_number < 0; \
- number.word = is_negative ? (- signed_number) : signed_number; \
-@@ -675,12 +673,12 @@
- number.word = args_value[fspec->data_arg].pa_u_long_int; \
- else if (is_char) \
- number.word = (unsigned char) \
-- args_value[fspec->data_arg].pa_char; \
-+ args_value[fspec->data_arg].pa_u_int; \
- else if (!is_short) \
- number.word = args_value[fspec->data_arg].pa_u_int; \
- else \
- number.word = (unsigned short int) \
-- args_value[fspec->data_arg].pa_u_short_int; \
-+ args_value[fspec->data_arg].pa_u_int; \
- \
- LABEL (number): \
- if (prec < 0) \
-@@ -977,7 +975,7 @@
- outchar (__btowc ((unsigned char) va_arg (ap, int))); /* Promoted. */ \
- else \
- outchar (__btowc ((unsigned char) \
-- args_value[fspec->data_arg].pa_char)); \
-+ args_value[fspec->data_arg].pa_int)); \
- if (left) \
- PAD (L' '); \
- break; \
-@@ -1096,7 +1094,7 @@
- if (fspec == NULL) \
- outchar ((unsigned char) va_arg (ap, int)); /* Promoted. */ \
- else \
-- outchar ((unsigned char) args_value[fspec->data_arg].pa_char); \
-+ outchar ((unsigned char) args_value[fspec->data_arg].pa_int); \
- if (left) \
- PAD (' '); \
- break; \
-@@ -1269,7 +1267,7 @@
- /* Check for correct orientation. */
- if (
- # ifdef USE_IN_LIBIO
-- s->_vtable_offset == 0 &&
-+ _IO_vtable_offset (s) == 0 &&
- # endif
- _IO_fwide (s, sizeof (CHAR_T) == 1 ? -1 : 1)
- != (sizeof (CHAR_T) == 1 ? -1 : 1))
-@@ -1296,13 +1294,13 @@
-
- #ifdef COMPILE_WPRINTF
- /* Find the first format specifier. */
-- f = lead_str_end = find_spec ((const UCHAR_T *) format);
-+ f = lead_str_end = __find_specwc ((const UCHAR_T *) format);
- #else
- /* Put state for processing format string in initial state. */
- memset (&mbstate, '\0', sizeof (mbstate_t));
-
- /* Find the first format specifier. */
-- f = lead_str_end = find_spec (format, &mbstate);
-+ f = lead_str_end = __find_specmb (format, &mbstate);
- #endif
-
- /* Lock stream. */
-@@ -1598,9 +1596,9 @@
-
- /* Look for next format specifier. */
- #ifdef COMPILE_WPRINTF
-- f = find_spec ((end_of_spec = ++f));
-+ f = __find_specwc ((end_of_spec = ++f));
- #else
-- f = find_spec ((end_of_spec = ++f), &mbstate);
-+ f = __find_specmb ((end_of_spec = ++f), &mbstate);
- #endif
-
- /* Write the following constant string. */
-@@ -1679,10 +1677,10 @@
-
- /* Parse the format specifier. */
- #ifdef COMPILE_WPRINTF
-- nargs += parse_one_spec (f, nargs, &specs[nspecs], &max_ref_arg);
-+ nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg);
- #else
-- nargs += parse_one_spec (f, nargs, &specs[nspecs], &max_ref_arg,
-- &mbstate);
-+ nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg,
-+ &mbstate);
- #endif
- }
-
-@@ -1737,13 +1735,13 @@
- args_value[cnt].mem = va_arg (ap_save, type); \
- break
-
-- T (PA_CHAR, pa_char, int); /* Promoted. */
-+ T (PA_CHAR, pa_int, int); /* Promoted. */
- T (PA_WCHAR, pa_wchar, wint_t);
-- T (PA_INT|PA_FLAG_SHORT, pa_short_int, int); /* Promoted. */
-+ T (PA_INT|PA_FLAG_SHORT, pa_int, int); /* Promoted. */
- T (PA_INT, pa_int, int);
- T (PA_INT|PA_FLAG_LONG, pa_long_int, long int);
- T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int);
-- T (PA_FLOAT, pa_float, double); /* Promoted. */
-+ T (PA_FLOAT, pa_double, double); /* Promoted. */
- T (PA_DOUBLE, pa_double, double);
- T (PA_DOUBLE|PA_FLAG_LONG_DOUBLE, pa_long_double, long double);
- T (PA_STRING, pa_string, const char *);
-@@ -1994,7 +1992,7 @@
- /* No grouping should be done. */
- return w;
-
-- len = *grouping;
-+ len = *grouping++;
-
- /* Copy existing string so that nothing gets overwritten. */
- src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
-@@ -2019,11 +2017,7 @@
- while (cnt > 0);
- #endif
-
-- len = *grouping++;
-- if (*grouping == '\0')
-- /* The previous grouping repeats ad infinitum. */
-- --grouping;
-- else if (*grouping == CHAR_MAX
-+ if (*grouping == CHAR_MAX
- #if CHAR_MIN < 0
- || *grouping < 0
- #endif
-@@ -2036,6 +2030,11 @@
- while (s > src);
- break;
- }
-+ else if (*grouping != '\0')
-+ /* The previous grouping repeats ad infinitum. */
-+ len = *grouping++;
-+ else
-+ len = grouping[-1];
- }
- }
- return w;
---- glibc-2.3.2/stdio-common/vfscanf.c 2003-01-15 18:41:19.000000000 -0500
-+++ glibc-2.3.2/stdio-common/vfscanf.c 2003-09-19 22:37:06.000000000 -0400
-@@ -120,7 +120,7 @@
- # define ISDIGIT(Ch) isdigit (Ch)
- # define ISXDIGIT(Ch) isxdigit (Ch)
- # define TOLOWER(Ch) tolower (Ch)
--# define ORIENT if (s->_vtable_offset == 0 \
-+# define ORIENT if (_IO_vtable_offset (s) == 0 \
- && _IO_fwide (s, -1) != -1) \
- return EOF
-
-@@ -290,13 +290,13 @@
- #define is_hexa number_signed
- /* Decimal point character. */
- #ifdef COMPILE_WSCANF
-- wchar_t decimal;
-+ wint_t decimal;
- #else
- const char *decimal;
- #endif
- /* The thousands character of the current locale. */
- #ifdef COMPILE_WSCANF
-- wchar_t thousands;
-+ wint_t thousands;
- #else
- const char *thousands;
- #endif
-@@ -1254,7 +1254,7 @@
- _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
- wcdigits[n] += from_level;
-
-- if (c == *wcdigits[n])
-+ if (c == (wint_t) *wcdigits[n])
- {
- to_level = from_level;
- break;
-@@ -1316,7 +1316,7 @@
- for (n = 0; n < 10; ++n)
- {
- #ifdef COMPILE_WSCANF
-- if (c == *wcdigits[n])
-+ if (c == (wint_t) *wcdigits[n])
- break;
-
- /* Advance the pointer to the next string. */
-@@ -1441,7 +1441,7 @@
- if (!ISXDIGIT (c))
- break;
- }
-- else if (!ISDIGIT (c) || c - L_('0') >= base)
-+ else if (!ISDIGIT (c) || (int) (c - L_('0')) >= base)
- {
- if (base == 10 && (flags & GROUP)
- #ifdef COMPILE_WSCANF
-@@ -1762,7 +1762,8 @@
- else if (got_e && wp[wpsize - 1] == exp_char
- && (c == L_('-') || c == L_('+')))
- ADDW (c);
-- else if (wpsize > 0 && !got_e && TOLOWER (c) == exp_char)
-+ else if (wpsize > 0 && !got_e
-+ && (CHAR_T) TOLOWER (c) == exp_char)
- {
- ADDW (exp_char);
- got_e = got_dot = 1;
-@@ -1775,7 +1776,8 @@
- ADDW (c);
- got_dot = 1;
- }
-- else if (thousands != L'\0' && ! got_dot && c == thousands)
-+ else if ((flags & GROUP) != 0 && thousands != L'\0'
-+ && ! got_dot && c == thousands)
- ADDW (c);
- else
- {
-@@ -1819,12 +1821,13 @@
- we can compare against it. */
- const char *cmp2p = thousands;
-
-- if (thousands != NULL && ! got_dot)
-+ if ((flags & GROUP) != 0 && thousands != NULL
-+ && ! got_dot)
- {
-- while (cmp2p < cmpp
-+ while (cmp2p - thousands < cmpp - decimal
- && *cmp2p == decimal[cmp2p - thousands])
- ++cmp2p;
-- if (cmp2p == cmpp)
-+ if (cmp2p - thousands == cmpp - decimal)
- {
- while ((unsigned char) *cmp2p == c && avail > 0)
- if (*++cmp2p == '\0')
-@@ -1993,7 +1996,7 @@
- wchar_t wc;
-
- for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
-- if (wc == c)
-+ if ((wint_t) wc == c)
- break;
-
- if (wc <= runp[1] && !not_in)
-@@ -2010,9 +2013,9 @@
- }
- else
- {
-- if (*runp == c && !not_in)
-+ if ((wint_t) *runp == c && !not_in)
- break;
-- if (*runp == c && not_in)
-+ if ((wint_t) *runp == c && not_in)
- {
- ungetc (c, s);
- goto out;
-@@ -2211,7 +2214,7 @@
- wchar_t wc;
-
- for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
-- if (wc == c)
-+ if ((wint_t) wc == c)
- break;
-
- if (wc <= runp[1] && !not_in)
-@@ -2228,9 +2231,9 @@
- }
- else
- {
-- if (*runp == c && !not_in)
-+ if ((wint_t) *runp == c && !not_in)
- break;
-- if (*runp == c && not_in)
-+ if ((wint_t) *runp == c && not_in)
- {
- ungetc (c, s);
- goto out2;
---- glibc-2.3.2/stdlib/Makefile 2002-12-17 01:43:56.000000000 -0500
-+++ glibc-2.3.2/stdlib/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1991-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
-@@ -49,6 +49,7 @@
- rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \
- strtoimax strtoumax wcstoimax wcstoumax \
- getcontext setcontext makecontext swapcontext
-+aux = grouping groupingwc
-
- # These routines will be omitted from the libc shared object.
- # Instead the static object files will be included in a special archive
-@@ -73,14 +74,16 @@
- routines := $(strip $(routines) $(mpn-routines)) \
- dbl2mpn ldbl2mpn \
- mpn2flt mpn2dbl mpn2ldbl
--aux := fpioconst mp_clz_tab
-+aux += fpioconst mp_clz_tab
- distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h
-
- generated += isomac isomac.out
-
--CFLAGS-bsearch.c = $(exceptions)
--CFLAGS-msort.c = $(exceptions)
--CFLAGS-qsort.c = $(exceptions)
-+CFLAGS-bsearch.c = $(uses-callbacks)
-+CFLAGS-msort.c = $(uses-callbacks)
-+CFLAGS-qsort.c = $(uses-callbacks)
-+CFLAGS-system.c = -fexceptions
-+CFLAGS-fmtmsg.c = -fexceptions
-
- include ../Makeconfig
-
-@@ -93,6 +96,9 @@
- CFLAGS-atexit.c = -DHAVE_DOT_HIDDEN
- endif
-
-+CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
-+CFLAGS-tst-qsort.c = $(stack-align-test-flags)
-+
- include ../Rules
-
- # Testdir has to be named stdlib and needs to be writable
---- glibc-2.3.2/stdlib/cxa_finalize.c 2002-12-06 05:43:29.000000000 -0500
-+++ glibc-2.3.2/stdlib/cxa_finalize.c 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -18,12 +18,13 @@
-
- #include <assert.h>
- #include <stdlib.h>
--#include <atomicity.h>
-+#include <atomic.h>
- #include "exit.h"
- #include <fork.h>
-
- /* If D is non-NULL, call all functions registered with `__cxa_atexit'
-- with the same dso handle. Otherwise, if D is NULL, do nothing. */
-+ with the same dso handle. Otherwise, if D is NULL, call all of the
-+ registered handlers. */
- void
- __cxa_finalize (void *d)
- {
-@@ -36,12 +37,15 @@
- for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
- if ((d == NULL || d == f->func.cxa.dso_handle)
- /* We don't want to run this cleanup more than once. */
-- && compare_and_swap (&f->flavor, ef_cxa, ef_free))
-+ && ! atomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
-+ ef_cxa))
- (*f->func.cxa.fn) (f->func.cxa.arg, 0);
- }
-
-- /* Remove the registered fork handlers. */
-+ /* Remove the registered fork handlers. We do not have to
-+ unregister anything if the program is going to terminate anyway. */
- #ifdef UNREGISTER_ATFORK
-- UNREGISTER_ATFORK (d);
-+ if (d != NULL)
-+ UNREGISTER_ATFORK (d);
- #endif
- }
---- glibc-2.3.2/stdlib/fmtmsg.c 2002-11-01 21:15:53.000000000 -0500
-+++ glibc-2.3.2/stdlib/fmtmsg.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -108,7 +108,7 @@
- int result = MM_OK;
- struct severity_info *severity_rec;
-
-- /* make sure everything is initialized. */
-+ /* Make sure everything is initialized. */
- __libc_once (once, init);
-
- /* Start the real work. First check whether the input is ok. */
-@@ -137,6 +137,14 @@
- return MM_NOTOK;
-
-
-+#ifdef __libc_ptf_call
-+ /* We do not want this call to be cut short by a thread
-+ cancellation. Therefore disable cancellation for now. */
-+ int state = PTHREAD_CANCEL_ENABLE;
-+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-+ 0);
-+#endif
-+
- /* Now we can print. */
- if (classification & MM_PRINT)
- {
-@@ -206,6 +214,10 @@
- do_tag ? tag : "");
- }
-
-+#ifdef __libc_ptf_call
-+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-+#endif
-+
- return result;
- }
-
---- glibc-2.3.2/stdlib/fmtmsg.h 2001-07-07 15:21:18.000000000 -0400
-+++ glibc-2.3.2/stdlib/fmtmsg.h 2003-09-19 22:37:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Message display handling.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -94,7 +94,7 @@
- and TAG to console or standard error. */
- extern int fmtmsg (long int __classification, __const char *__label,
- int __severity, __const char *__text,
-- __const char *__action, __const char *__tag) __THROW;
-+ __const char *__action, __const char *__tag);
-
- #ifdef __USE_SVID
- /* Add or remove severity level. */
---- glibc-2.3.2/stdlib/fpioconst.c 2002-03-11 03:32:01.000000000 -0500
-+++ glibc-2.3.2/stdlib/fpioconst.c 2003-03-15 15:02:14.000000000 -0500
-@@ -1,5 +1,6 @@
- /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
-- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 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
-@@ -235,195 +236,198 @@
- {
- #define TENS_P0_IDX 0
- #define TENS_P0_SIZE 2
-- [TENS_P0_IDX] = 0x0000000000000000, 0x000000000000000a,
-+ [TENS_P0_IDX] = 0x0000000000000000ull, 0x000000000000000aull,
-
- #define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
- #define TENS_P1_SIZE 2
-- [TENS_P1_IDX] = 0x0000000000000000, 0x0000000000000064,
-+ [TENS_P1_IDX] = 0x0000000000000000ull, 0x0000000000000064ull,
-
- #define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
- #define TENS_P2_SIZE 2
-- [TENS_P2_IDX] = 0x0000000000000000, 0x0000000000002710,
-+ [TENS_P2_IDX] = 0x0000000000000000ull, 0x0000000000002710ull,
-
- #define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
- #define TENS_P3_SIZE 2
-- [TENS_P3_IDX] = 0x0000000000000000, 0x0000000005f5e100,
-+ [TENS_P3_IDX] = 0x0000000000000000ull, 0x0000000005f5e100ull,
-
- #define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
- #define TENS_P4_SIZE 2
-- [TENS_P4_IDX] = 0x0000000000000000, 0x002386f26fc10000,
-+ [TENS_P4_IDX] = 0x0000000000000000ull, 0x002386f26fc10000ull,
-
- #define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
- #define TENS_P5_SIZE 3
-- [TENS_P5_IDX] = 0x0000000000000000, 0x85acef8100000000, 0x000004ee2d6d415b,
-+ [TENS_P5_IDX] = 0x0000000000000000ull, 0x85acef8100000000ull,
-+ 0x000004ee2d6d415bull,
-
- #define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
- #define TENS_P6_SIZE 5
-- [TENS_P6_IDX] = 0x0000000000000000, 0x0000000000000000, 0x6e38ed64bf6a1f01,
-- 0xe93ff9f4daa797ed, 0x0000000000184f03,
-+ [TENS_P6_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x6e38ed64bf6a1f01ull, 0xe93ff9f4daa797edull, 0x0000000000184f03ull,
-
- #define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
- #define TENS_P7_SIZE 8
-- [TENS_P7_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x03df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec,
-- 0xa6337f19bccdb0da, 0x0000024ee91f2603,
-+ [TENS_P7_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x03df99092e953e01ull, 0x2374e42f0f1538fdull,
-+ 0xc404dc08d3cff5ecull, 0xa6337f19bccdb0daull, 0x0000024ee91f2603ull,
-
- #define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
- #define TENS_P8_SIZE 15
-- [TENS_P8_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xbed3875b982e7c01,
-- 0x12152f87d8d99f72, 0xcf4a6e706bde50c6, 0x26b2716ed595d80f,
-- 0x1d153624adc666b0, 0x63ff540e3c42d35a, 0x65f9ef17cc5573c0,
-- 0x80dcc7f755bc28f2, 0x5fdcefcef46eeddc, 0x00000000000553f7,
-+ [TENS_P8_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xbed3875b982e7c01ull, 0x12152f87d8d99f72ull, 0xcf4a6e706bde50c6ull,
-+ 0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull,
-+ 0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull,
-+ 0x00000000000553f7ull,
- #ifndef __NO_LONG_DOUBLE_MATH
- # define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
- # define TENS_P9_SIZE 28
-- [TENS_P9_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x77f27267fc6cf801, 0x5d96976f8f9546dc, 0xc31e1ad9b83a8a97,
-- 0x94e6574746c40513, 0x4475b579c88976c1, 0xaa1da1bf28f8733b,
-- 0x1e25cfea703ed321, 0xbc51fb2eb21a2f22, 0xbfa3edac96e14f5d,
-- 0xe7fc7153329c57ae, 0x85a91924c3fc0695, 0xb2908ee0f95f635e,
-- 0x1366732a93abade4, 0x69be5b0e9449775c, 0xb099bc817343afac,
-- 0xa269974845a71d46, 0x8a0b1f138cb07303, 0xc1d238d98cab8a97,
-- 0x0000001c633415d4,
-+ [TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x77f27267fc6cf801ull, 0x5d96976f8f9546dcull,
-+ 0xc31e1ad9b83a8a97ull, 0x94e6574746c40513ull, 0x4475b579c88976c1ull,
-+ 0xaa1da1bf28f8733bull, 0x1e25cfea703ed321ull, 0xbc51fb2eb21a2f22ull,
-+ 0xbfa3edac96e14f5dull, 0xe7fc7153329c57aeull, 0x85a91924c3fc0695ull,
-+ 0xb2908ee0f95f635eull, 0x1366732a93abade4ull, 0x69be5b0e9449775cull,
-+ 0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull,
-+ 0xc1d238d98cab8a97ull, 0x0000001c633415d4ull,
-
- # define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
- # define TENS_P10_SIZE 55
-- [TENS_P10_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xf55b2b722919f001,
-- 0x1ec29f866e7c215b, 0x15c51a88991c4e87, 0x4c7d1e1a140ac535,
-- 0x0ed1440ecc2cd819, 0x7de16cfb896634ee, 0x9fce837d1e43f61f,
-- 0x233e55c7231d2b9c, 0xf451218b65dc60d7, 0xc96359861c5cd134,
-- 0xa7e89431922bbb9f, 0x62be695a9f9f2a07, 0x045b7a748e1042c4,
-- 0x8ad822a51abe1de3, 0xd814b505ba34c411, 0x8fc51a16bf3fdeb3,
-- 0xf56deeecb1b896bc, 0xb6f4654b31fb6bfd, 0x6b7595fb101a3616,
-- 0x80d98089dc1a47fe, 0x9a20288280bda5a5, 0xfc8f1f9031eb0f66,
-- 0xe26a7b7e976a3310, 0x3ce3a0b8df68368a, 0x75a351a28e4262ce,
-- 0x445975836cb0b6c9, 0xc356e38a31b5653f, 0x0190fba035faaba6,
-- 0x88bc491b9fc4ed52, 0x005b80411640114a, 0x1e8d4649f4f3235e,
-- 0x73c5534936a8de06, 0xc1a6970ca7e6bd2a, 0xd2db49ef47187094,
-- 0xae6209d4926c3f5b, 0x34f4a3c62d433949, 0xd9d61a05d4305d94,
-- 0x0000000000000325,
-+ [TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xf55b2b722919f001ull, 0x1ec29f866e7c215bull, 0x15c51a88991c4e87ull,
-+ 0x4c7d1e1a140ac535ull, 0x0ed1440ecc2cd819ull, 0x7de16cfb896634eeull,
-+ 0x9fce837d1e43f61full, 0x233e55c7231d2b9cull, 0xf451218b65dc60d7ull,
-+ 0xc96359861c5cd134ull, 0xa7e89431922bbb9full, 0x62be695a9f9f2a07ull,
-+ 0x045b7a748e1042c4ull, 0x8ad822a51abe1de3ull, 0xd814b505ba34c411ull,
-+ 0x8fc51a16bf3fdeb3ull, 0xf56deeecb1b896bcull, 0xb6f4654b31fb6bfdull,
-+ 0x6b7595fb101a3616ull, 0x80d98089dc1a47feull, 0x9a20288280bda5a5ull,
-+ 0xfc8f1f9031eb0f66ull, 0xe26a7b7e976a3310ull, 0x3ce3a0b8df68368aull,
-+ 0x75a351a28e4262ceull, 0x445975836cb0b6c9ull, 0xc356e38a31b5653full,
-+ 0x0190fba035faaba6ull, 0x88bc491b9fc4ed52ull, 0x005b80411640114aull,
-+ 0x1e8d4649f4f3235eull, 0x73c5534936a8de06ull, 0xc1a6970ca7e6bd2aull,
-+ 0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull,
-+ 0xd9d61a05d4305d94ull, 0x0000000000000325ull,
-
- # define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
- # define TENS_P11_SIZE 108
-- [TENS_P11_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0xe30968651333e001, 0x49e28dcfb27d4d3f, 0xee87e354ec2e4721,
-- 0x368b8abbb6067584, 0x2ed56d55a5e5a191, 0xea50d142fd827773,
-- 0x98342c9e51b78db2, 0x866ed6f1c850dabc, 0x9279498719342c12,
-- 0x66912e4ad2f869c2, 0x57a7842d71c7fd8f, 0xfb7fedcc235552eb,
-- 0x38209ce1f3861ce0, 0x34c101349713b449, 0xa7a8289c8c6c54de,
-- 0xe3cb64f32dbb6643, 0xe3892ee98074ff01, 0xa8f16f9210c17f94,
-- 0x967abbb3a8281ed6, 0x9952fbed5a151440, 0xafe609c313b41e44,
-- 0xf111821fa2bca416, 0x91bac974fb1264b4, 0x8e48ff35d6c7d6ab,
-- 0xc4a656654419bd43, 0x33554c36685e5510, 0x0dbd21feab498697,
-- 0x982da4663cfe491d, 0x9e110c7bcbea4ca7, 0x5fc5a04779c56b8a,
-- 0x1aa9f44484d80e2e, 0x6a57b1ab730f203c, 0x87a7dc62d752f7a6,
-- 0x40660460944545ff, 0xc9ac375d77c1a42f, 0x744695f0e866d7ef,
-- 0xa1fc6b9681428c85, 0x7bf03c19d7917c7b, 0x5715f7915b33eb41,
-- 0xdb0708fd8f6cae5f, 0x785ce6b7b125ac8e, 0x6f46eadb56c6815b,
-- 0x195355d84eeebeee, 0x9d7389c0a244de3c, 0xcf99d01953761abd,
-- 0x0d76ce39de9ec24b, 0x2e55ecee70beb181, 0xf56d9d4bd5f86079,
-- 0x13ef5a83fb8886fb, 0x3f3389a4408f43c5, 0x58ccf45cfad37943,
-- 0x415c7f3ef82df846, 0x8b3d5cf42915e818, 0xf8dbb57a6a445f27,
-- 0x8ad803ecca8f0070, 0x038f9245b2e87c34, 0xc7c9dee0bedd8a6c,
-- 0x2ad3fa140eac7d56, 0xf775677ce0de0840, 0x92be221ef1bd0ad5,
-- 0xce9d04a487fa1fb9, 0x3f6f7024d2c36fa9, 0x907855eeb028af62,
-- 0x4efac5dcd83e49d6, 0x77cd8c6be7151aab, 0x0af908b40a753b7d,
-- 0xe50f30278c983623, 0x1d08e2d694222771, 0xf2ee5ca6f7e928e6,
-- 0x11eb962b1b61b93c, 0xce2bcba19648b21c, 0x7bbebe3034f77154,
-- 0x8ce329ace526a319, 0xb5dc53d5de4a74d2, 0x000000000009e8b3,
-+ [TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0xe30968651333e001ull, 0x49e28dcfb27d4d3full,
-+ 0xee87e354ec2e4721ull, 0x368b8abbb6067584ull, 0x2ed56d55a5e5a191ull,
-+ 0xea50d142fd827773ull, 0x98342c9e51b78db2ull, 0x866ed6f1c850dabcull,
-+ 0x9279498719342c12ull, 0x66912e4ad2f869c2ull, 0x57a7842d71c7fd8full,
-+ 0xfb7fedcc235552ebull, 0x38209ce1f3861ce0ull, 0x34c101349713b449ull,
-+ 0xa7a8289c8c6c54deull, 0xe3cb64f32dbb6643ull, 0xe3892ee98074ff01ull,
-+ 0xa8f16f9210c17f94ull, 0x967abbb3a8281ed6ull, 0x9952fbed5a151440ull,
-+ 0xafe609c313b41e44ull, 0xf111821fa2bca416ull, 0x91bac974fb1264b4ull,
-+ 0x8e48ff35d6c7d6abull, 0xc4a656654419bd43ull, 0x33554c36685e5510ull,
-+ 0x0dbd21feab498697ull, 0x982da4663cfe491dull, 0x9e110c7bcbea4ca7ull,
-+ 0x5fc5a04779c56b8aull, 0x1aa9f44484d80e2eull, 0x6a57b1ab730f203cull,
-+ 0x87a7dc62d752f7a6ull, 0x40660460944545ffull, 0xc9ac375d77c1a42full,
-+ 0x744695f0e866d7efull, 0xa1fc6b9681428c85ull, 0x7bf03c19d7917c7bull,
-+ 0x5715f7915b33eb41ull, 0xdb0708fd8f6cae5full, 0x785ce6b7b125ac8eull,
-+ 0x6f46eadb56c6815bull, 0x195355d84eeebeeeull, 0x9d7389c0a244de3cull,
-+ 0xcf99d01953761abdull, 0x0d76ce39de9ec24bull, 0x2e55ecee70beb181ull,
-+ 0xf56d9d4bd5f86079ull, 0x13ef5a83fb8886fbull, 0x3f3389a4408f43c5ull,
-+ 0x58ccf45cfad37943ull, 0x415c7f3ef82df846ull, 0x8b3d5cf42915e818ull,
-+ 0xf8dbb57a6a445f27ull, 0x8ad803ecca8f0070ull, 0x038f9245b2e87c34ull,
-+ 0xc7c9dee0bedd8a6cull, 0x2ad3fa140eac7d56ull, 0xf775677ce0de0840ull,
-+ 0x92be221ef1bd0ad5ull, 0xce9d04a487fa1fb9ull, 0x3f6f7024d2c36fa9ull,
-+ 0x907855eeb028af62ull, 0x4efac5dcd83e49d6ull, 0x77cd8c6be7151aabull,
-+ 0x0af908b40a753b7dull, 0xe50f30278c983623ull, 0x1d08e2d694222771ull,
-+ 0xf2ee5ca6f7e928e6ull, 0x11eb962b1b61b93cull, 0xce2bcba19648b21cull,
-+ 0x7bbebe3034f77154ull, 0x8ce329ace526a319ull, 0xb5dc53d5de4a74d2ull,
-+ 0x000000000009e8b3ull,
-
- # define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
- # define TENS_P12_SIZE 214
-- [TENS_P12_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xd4724e8d2a67c001,
-- 0xf89a1e908efe7ae7, 0x54e05154ef084117, 0x506be82913b1bb51,
-- 0xe599574efb29b172, 0x806c0ed3f0da6146, 0x45155e93b86ae5be,
-- 0x7e1e7c34c0591cc2, 0x1d1f4cce7c4823da, 0xd6bfdf759b8ba1e8,
-- 0xc2dfae78e341be10, 0x0f237f1a016b67b2, 0xaf6a25743dbeabcd,
-- 0x142e0e80cab3e6d7, 0x2c23481161959127, 0xcb4bf98287009701,
-- 0x88052f8cf8169c84, 0xbc13176168dde6d4, 0x54ab9c41ff0b0905,
-- 0x1a1c304e7613b224, 0x441c2d473bfe167b, 0x78f061814f6cea9c,
-- 0x30c7ae41eb659fb8, 0xa1ebcad7947e0d0e, 0x2130504dd97d9556,
-- 0xf2acd5071a8309cb, 0xfd82373a3f8ec72a, 0x280f4d3295a842bc,
-- 0x811a4f04f3618ac0, 0xd3967a1b6dc3a5b4, 0xdcfe388f15b8c898,
-- 0x8738b909454eb2a0, 0x2bd9cc1110c4e996, 0x655fec303297cd0c,
-- 0xf4090ee8ae0725b1, 0x398c6fed037d19ee, 0xc994a4503b9af26b,
-- 0x75a697b2b5341743, 0x3ccb5b92ac50b9c1, 0xa8329761ffe06205,
-- 0xeb83cadbdfea5242, 0x3c20ee69e79dadf7, 0x7021b97a1e0a6817,
-- 0x176ca776743074fa, 0xeca19beb77fb8af6, 0xaf63b71292baf1de,
-- 0xa4eb8f8cde35c88b, 0x40b464a0e137d5e9, 0x42923bbd87d1cde8,
-- 0x2e2690f3cd8f62ff, 0x59c89f1b095edc16, 0x5138753d1fa8fd5d,
-- 0x80152f18390a2b29, 0xf984d83e2dd8d925, 0xc19e1faf7a872e74,
-- 0xecf9b5d0ed4d542d, 0xc53c0adf9462ea75, 0x37a2d4390caea134,
-- 0x2181327ec8fa2e8a, 0x2d2408206e7bb827, 0x5893d4b850be10e0,
-- 0x1f2b2322ab312bb9, 0xbf627ede440b3f25, 0xb608b89572dac789,
-- 0x86deb3f078787e2a, 0xbb9373f46fee7aab, 0xf7d8b57e27ecf57b,
-- 0x3d04e8d2fca26a9f, 0x3172826ac9df13cb, 0xa8fcd8e0cd9e8d7c,
-- 0x307641d9b2c39497, 0x2608c4cf1cc939c1, 0x3d326a7eb6d1c7bf,
-- 0x8e13e25feeaf19e6, 0x2dfe6d97ee63302b, 0xe41d3cc425971d58,
-- 0xab8db59a0a80627c, 0xe90afb779eea37c8, 0x9ee3352c90ca19cf,
-- 0xfe78d6823613c850, 0x5b060904788f6e50, 0x3fecb534b71bd1a4,
-- 0x20c33857b32c450c, 0x0239f4cea6e9cfda, 0xa19adb9548497187,
-- 0x95aca6a8b492ed8a, 0xcf1b23504dcd6cd9, 0x1a67778cfbe8b12a,
-- 0xc32da38338eb3acc, 0xa03f40a8fb126ab1, 0xe9ce4724ed5bf546,
-- 0x73a130d84c4a74fd, 0xa2ebd6c1d9960e2d, 0x6f233b7c94ab6feb,
-- 0x8e7b9a7349126080, 0xd298f9994b8c9091, 0xa96ddeff35e836b5,
-- 0x6b0dd9bc96119b31, 0x282566fbc6cc3f8d, 0xd6769f3b72b882e7,
-- 0x00fc509ba674343d, 0xd6266a3fdcbf7789, 0x4e89541bae9641fd,
-- 0x53400d0311953407, 0xe5b533458e0dd75a, 0x108b89bc108f19ad,
-- 0xe03b2b6341a4c954, 0x97aced8e437b3d7f, 0x2c5508c2cbd66670,
-- 0x5c4f2ef0650ebc69, 0x9985a2df904ff6bf, 0x5ed8d2399faddd9e,
-- 0xe3e51cb925585832, 0x56c02d9a0ff4f1d4, 0xc1a08a138c4ef804,
-- 0xe6d2767113fd01c8, 0x9d0176cca7c234f4, 0x4d8bfa89d0d73df2,
-- 0x2b17e0b2544f10cd, 0xfd86fe49b70a5c7d, 0x214495bbdf373f41,
-- 0x00d313d584e857fd, 0xa4ba47440496fcbe, 0xaec29e6ee8cac982,
-- 0x7000a51987ec7038, 0xff66e42caeee333b, 0x03b4f63b8afd6b25,
-- 0x5ab8d9c7bd7991dc, 0x48741a6c2ed4684e, 0x2fdc6349af06940d,
-- 0xe974996fb03d7ecd, 0x52ec8721ac7867f9, 0x8edd2d00bcdd9d4a,
-- 0x41c759f83557de06, 0xa75409f23956d4b9, 0xb6100fab123cd8a1,
-- 0x2e8d623b3e7b21e2, 0xbca35f7792959da2, 0x35fcb457200c03a5,
-- 0xf74eb9281bb6c6e4, 0x87cc1d213d5d0b54, 0x18ae42404964046f,
-- 0x8bd2b496d868b275, 0xc234d8f51c5563f4, 0xf9151ffff868e970,
-- 0x271133eeae7be4a2, 0x25254932bb0fd922, 0x104bcd64a60a9fc0,
-- 0x0000006230290145
-+ [TENS_P12_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xd4724e8d2a67c001ull, 0xf89a1e908efe7ae7ull, 0x54e05154ef084117ull,
-+ 0x506be82913b1bb51ull, 0xe599574efb29b172ull, 0x806c0ed3f0da6146ull,
-+ 0x45155e93b86ae5beull, 0x7e1e7c34c0591cc2ull, 0x1d1f4cce7c4823daull,
-+ 0xd6bfdf759b8ba1e8ull, 0xc2dfae78e341be10ull, 0x0f237f1a016b67b2ull,
-+ 0xaf6a25743dbeabcdull, 0x142e0e80cab3e6d7ull, 0x2c23481161959127ull,
-+ 0xcb4bf98287009701ull, 0x88052f8cf8169c84ull, 0xbc13176168dde6d4ull,
-+ 0x54ab9c41ff0b0905ull, 0x1a1c304e7613b224ull, 0x441c2d473bfe167bull,
-+ 0x78f061814f6cea9cull, 0x30c7ae41eb659fb8ull, 0xa1ebcad7947e0d0eull,
-+ 0x2130504dd97d9556ull, 0xf2acd5071a8309cbull, 0xfd82373a3f8ec72aull,
-+ 0x280f4d3295a842bcull, 0x811a4f04f3618ac0ull, 0xd3967a1b6dc3a5b4ull,
-+ 0xdcfe388f15b8c898ull, 0x8738b909454eb2a0ull, 0x2bd9cc1110c4e996ull,
-+ 0x655fec303297cd0cull, 0xf4090ee8ae0725b1ull, 0x398c6fed037d19eeull,
-+ 0xc994a4503b9af26bull, 0x75a697b2b5341743ull, 0x3ccb5b92ac50b9c1ull,
-+ 0xa8329761ffe06205ull, 0xeb83cadbdfea5242ull, 0x3c20ee69e79dadf7ull,
-+ 0x7021b97a1e0a6817ull, 0x176ca776743074faull, 0xeca19beb77fb8af6ull,
-+ 0xaf63b71292baf1deull, 0xa4eb8f8cde35c88bull, 0x40b464a0e137d5e9ull,
-+ 0x42923bbd87d1cde8ull, 0x2e2690f3cd8f62ffull, 0x59c89f1b095edc16ull,
-+ 0x5138753d1fa8fd5dull, 0x80152f18390a2b29ull, 0xf984d83e2dd8d925ull,
-+ 0xc19e1faf7a872e74ull, 0xecf9b5d0ed4d542dull, 0xc53c0adf9462ea75ull,
-+ 0x37a2d4390caea134ull, 0x2181327ec8fa2e8aull, 0x2d2408206e7bb827ull,
-+ 0x5893d4b850be10e0ull, 0x1f2b2322ab312bb9ull, 0xbf627ede440b3f25ull,
-+ 0xb608b89572dac789ull, 0x86deb3f078787e2aull, 0xbb9373f46fee7aabull,
-+ 0xf7d8b57e27ecf57bull, 0x3d04e8d2fca26a9full, 0x3172826ac9df13cbull,
-+ 0xa8fcd8e0cd9e8d7cull, 0x307641d9b2c39497ull, 0x2608c4cf1cc939c1ull,
-+ 0x3d326a7eb6d1c7bfull, 0x8e13e25feeaf19e6ull, 0x2dfe6d97ee63302bull,
-+ 0xe41d3cc425971d58ull, 0xab8db59a0a80627cull, 0xe90afb779eea37c8ull,
-+ 0x9ee3352c90ca19cfull, 0xfe78d6823613c850ull, 0x5b060904788f6e50ull,
-+ 0x3fecb534b71bd1a4ull, 0x20c33857b32c450cull, 0x0239f4cea6e9cfdaull,
-+ 0xa19adb9548497187ull, 0x95aca6a8b492ed8aull, 0xcf1b23504dcd6cd9ull,
-+ 0x1a67778cfbe8b12aull, 0xc32da38338eb3accull, 0xa03f40a8fb126ab1ull,
-+ 0xe9ce4724ed5bf546ull, 0x73a130d84c4a74fdull, 0xa2ebd6c1d9960e2dull,
-+ 0x6f233b7c94ab6febull, 0x8e7b9a7349126080ull, 0xd298f9994b8c9091ull,
-+ 0xa96ddeff35e836b5ull, 0x6b0dd9bc96119b31ull, 0x282566fbc6cc3f8dull,
-+ 0xd6769f3b72b882e7ull, 0x00fc509ba674343dull, 0xd6266a3fdcbf7789ull,
-+ 0x4e89541bae9641fdull, 0x53400d0311953407ull, 0xe5b533458e0dd75aull,
-+ 0x108b89bc108f19adull, 0xe03b2b6341a4c954ull, 0x97aced8e437b3d7full,
-+ 0x2c5508c2cbd66670ull, 0x5c4f2ef0650ebc69ull, 0x9985a2df904ff6bfull,
-+ 0x5ed8d2399faddd9eull, 0xe3e51cb925585832ull, 0x56c02d9a0ff4f1d4ull,
-+ 0xc1a08a138c4ef804ull, 0xe6d2767113fd01c8ull, 0x9d0176cca7c234f4ull,
-+ 0x4d8bfa89d0d73df2ull, 0x2b17e0b2544f10cdull, 0xfd86fe49b70a5c7dull,
-+ 0x214495bbdf373f41ull, 0x00d313d584e857fdull, 0xa4ba47440496fcbeull,
-+ 0xaec29e6ee8cac982ull, 0x7000a51987ec7038ull, 0xff66e42caeee333bull,
-+ 0x03b4f63b8afd6b25ull, 0x5ab8d9c7bd7991dcull, 0x48741a6c2ed4684eull,
-+ 0x2fdc6349af06940dull, 0xe974996fb03d7ecdull, 0x52ec8721ac7867f9ull,
-+ 0x8edd2d00bcdd9d4aull, 0x41c759f83557de06ull, 0xa75409f23956d4b9ull,
-+ 0xb6100fab123cd8a1ull, 0x2e8d623b3e7b21e2ull, 0xbca35f7792959da2ull,
-+ 0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull,
-+ 0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull,
-+ 0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull,
-+ 0x104bcd64a60a9fc0ull, 0x0000006230290145ull
- #endif
- };
-
---- glibc-2.3.2/stdlib/fpioconst.h 2002-03-12 04:24:56.000000000 -0500
-+++ glibc-2.3.2/stdlib/fpioconst.h 2003-03-15 15:02:14.000000000 -0500
-@@ -1,5 +1,6 @@
- /* Header file for constants used in floating point <-> decimal conversions.
-- Copyright (C) 1995,1996,1997,1998,1999,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 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
-@@ -22,7 +23,7 @@
-
- #include <float.h>
- #include <math.h>
--#include "gmp.h"
-+#include <gmp.h>
-
-
- /* These values are used by __printf_fp, where they are noncritical (if the
---- glibc-2.3.2/stdlib/grouping.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/stdlib/grouping.c 2003-06-11 18:10:28.000000000 -0400
-@@ -0,0 +1,202 @@
-+/* Internal header for proving correct grouping in strings of numbers.
-+ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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.
-+
-+ 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 <limits.h>
-+#include <stddef.h>
-+#include <string.h>
-+
-+#ifndef MAX
-+#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
-+ _a > _b ? _a : _b; })
-+#endif
-+
-+#ifdef USE_WIDE_CHAR
-+# include <wctype.h>
-+# define L_(Ch) L##Ch
-+# define UCHAR_TYPE wint_t
-+# define STRING_TYPE wchar_t
-+#else
-+# define L_(Ch) Ch
-+# define UCHAR_TYPE unsigned char
-+# define STRING_TYPE char
-+#endif
-+
-+#include "grouping.h"
-+
-+/* Find the maximum prefix of the string between BEGIN and END which
-+ satisfies the grouping rules. It is assumed that at least one digit
-+ follows BEGIN directly. */
-+
-+const STRING_TYPE *
-+#ifdef USE_WIDE_CHAR
-+__correctly_grouped_prefixwc (const STRING_TYPE *begin, const STRING_TYPE *end,
-+ wchar_t thousands,
-+#else
-+__correctly_grouped_prefixmb (const STRING_TYPE *begin, const STRING_TYPE *end,
-+ const char *thousands,
-+#endif
-+ const char *grouping)
-+{
-+#ifndef USE_WIDE_CHAR
-+ size_t thousands_len;
-+ int cnt;
-+#endif
-+
-+ if (grouping == NULL)
-+ return end;
-+
-+#ifndef USE_WIDE_CHAR
-+ thousands_len = strlen (thousands);
-+#endif
-+
-+ while (end > begin)
-+ {
-+ const STRING_TYPE *cp = end - 1;
-+ const char *gp = grouping;
-+
-+ /* Check first group. */
-+ while (cp >= begin)
-+ {
-+#ifdef USE_WIDE_CHAR
-+ if (*cp == thousands)
-+ break;
-+#else
-+ if (cp[thousands_len - 1] == *thousands)
-+ {
-+ for (cnt = 1; thousands[cnt] != '\0'; ++cnt)
-+ if (thousands[cnt] != cp[thousands_len - 1 - cnt])
-+ break;
-+ if (thousands[cnt] == '\0')
-+ break;
-+ }
-+#endif
-+ --cp;
-+ }
-+
-+ /* We allow the representation to contain no grouping at all even if
-+ the locale specifies we can have grouping. */
-+ if (cp < begin)
-+ return end;
-+
-+ if (end - cp == (int) *gp + 1)
-+ {
-+ /* This group matches the specification. */
-+
-+ const STRING_TYPE *new_end;
-+
-+ if (cp < begin)
-+ /* There is just one complete group. We are done. */
-+ return end;
-+
-+ /* CP points to a thousands separator character. The preceding
-+ remainder of the string from BEGIN to NEW_END is the part we
-+ will consider if there is a grouping error in this trailing
-+ portion from CP to END. */
-+ new_end = cp - 1;
-+
-+ /* Loop while the grouping is correct. */
-+ while (1)
-+ {
-+ /* Get the next grouping rule. */
-+ ++gp;
-+ if (*gp == 0)
-+ /* If end is reached use last rule. */
-+ --gp;
-+
-+ /* Skip the thousands separator. */
-+ --cp;
-+
-+ if (*gp == CHAR_MAX
-+#if CHAR_MIN < 0
-+ || *gp < 0
-+#endif
-+ )
-+ {
-+ /* No more thousands separators are allowed to follow. */
-+ while (cp >= begin)
-+ {
-+#ifdef USE_WIDE_CHAR
-+ if (*cp == thousands)
-+ break;
-+#else
-+ for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
-+ if (thousands[cnt] != cp[thousands_len - cnt - 1])
-+ break;
-+ if (thousands[cnt] == '\0')
-+ break;
-+#endif
-+ --cp;
-+ }
-+
-+ if (cp < begin)
-+ /* OK, only digits followed. */
-+ return end;
-+ }
-+ else
-+ {
-+ /* Check the next group. */
-+ const STRING_TYPE *group_end = cp;
-+
-+ while (cp >= begin)
-+ {
-+#ifdef USE_WIDE_CHAR
-+ if (*cp == thousands)
-+ break;
-+#else
-+ for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
-+ if (thousands[cnt] != cp[thousands_len - cnt - 1])
-+ break;
-+ if (thousands[cnt] == '\0')
-+ break;
-+#endif
-+ --cp;
-+ }
-+
-+ if (cp < begin && group_end - cp <= (int) *gp)
-+ /* Final group is correct. */
-+ return end;
-+
-+ if (cp < begin || group_end - cp != (int) *gp)
-+ /* Incorrect group. Punt. */
-+ break;
-+ }
-+ }
-+
-+ /* The trailing portion of the string starting at NEW_END
-+ contains a grouping error. So we will look for a correctly
-+ grouped number in the preceding portion instead. */
-+ end = new_end;
-+ }
-+ else
-+ {
-+ /* Even the first group was wrong; determine maximum shift. */
-+ if (end - cp > (int) *gp + 1)
-+ end = cp + (int) *gp + 1;
-+ else if (cp < begin)
-+ /* This number does not fill the first group, but is correct. */
-+ return end;
-+ else
-+ /* CP points to a thousands separator character. */
-+ end = cp;
-+ }
-+ }
-+
-+ return MAX (begin, end);
-+}
---- glibc-2.3.2/stdlib/grouping.h 2001-07-07 15:21:18.000000000 -0400
-+++ glibc-2.3.2/stdlib/grouping.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Internal header for proving correct grouping in strings of numbers.
-- Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-@@ -18,169 +18,17 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <limits.h>
--
--#ifndef MAX
--#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
-- _a > _b ? _a : _b; })
--#endif
--
- /* Find the maximum prefix of the string between BEGIN and END which
- satisfies the grouping rules. It is assumed that at least one digit
- follows BEGIN directly. */
--
--static inline const STRING_TYPE *
--correctly_grouped_prefix (const STRING_TYPE *begin, const STRING_TYPE *end,
--#ifdef USE_WIDE_CHAR
-- wchar_t thousands,
--#else
-- const char *thousands,
--#endif
-- const char *grouping)
--{
--#ifndef USE_WIDE_CHAR
-- size_t thousands_len;
-- int cnt;
--#endif
--
-- if (grouping == NULL)
-- return end;
--
--#ifndef USE_WIDE_CHAR
-- thousands_len = strlen (thousands);
--#endif
--
-- while (end > begin)
-- {
-- const STRING_TYPE *cp = end - 1;
-- const char *gp = grouping;
--
-- /* Check first group. */
-- while (cp >= begin)
-- {
--#ifdef USE_WIDE_CHAR
-- if (*cp == thousands)
-- break;
--#else
-- if (cp[thousands_len - 1] == *thousands)
-- {
-- for (cnt = 1; thousands[cnt] != '\0'; ++cnt)
-- if (thousands[cnt] != cp[thousands_len - 1 - cnt])
-- break;
-- if (thousands[cnt] == '\0')
-- break;
-- }
--#endif
-- --cp;
-- }
--
-- /* We allow the representation to contain no grouping at all even if
-- the locale specifies we can have grouping. */
-- if (cp < begin)
-- return end;
--
-- if (end - cp == (int) *gp + 1)
-- {
-- /* This group matches the specification. */
--
-- const STRING_TYPE *new_end;
--
-- if (cp < begin)
-- /* There is just one complete group. We are done. */
-- return end;
--
-- /* CP points to a thousands separator character. The preceding
-- remainder of the string from BEGIN to NEW_END is the part we
-- will consider if there is a grouping error in this trailing
-- portion from CP to END. */
-- new_end = cp - 1;
--
-- /* Loop while the grouping is correct. */
-- while (1)
-- {
-- /* Get the next grouping rule. */
-- ++gp;
-- if (*gp == 0)
-- /* If end is reached use last rule. */
-- --gp;
--
-- /* Skip the thousands separator. */
-- --cp;
--
-- if (*gp == CHAR_MAX
--#if CHAR_MIN < 0
-- || *gp < 0
--#endif
-- )
-- {
-- /* No more thousands separators are allowed to follow. */
-- while (cp >= begin)
-- {
--#ifdef USE_WIDE_CHAR
-- if (*cp == thousands)
-- break;
--#else
-- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
-- if (thousands[cnt] != cp[thousands_len - cnt - 1])
-- break;
-- if (thousands[cnt] == '\0')
-- break;
--#endif
-- --cp;
-- }
--
-- if (cp < begin)
-- /* OK, only digits followed. */
-- return end;
-- }
-- else
-- {
-- /* Check the next group. */
-- const STRING_TYPE *group_end = cp;
--
-- while (cp >= begin)
-- {
--#ifdef USE_WIDE_CHAR
-- if (*cp == thousands)
-- break;
--#else
-- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
-- if (thousands[cnt] != cp[thousands_len - cnt - 1])
-- break;
-- if (thousands[cnt] == '\0')
-- break;
--#endif
-- --cp;
-- }
--
-- if (cp < begin && group_end - cp <= (int) *gp)
-- /* Final group is correct. */
-- return end;
--
-- if (cp < begin || group_end - cp != (int) *gp)
-- /* Incorrect group. Punt. */
-- break;
-- }
-- }
--
-- /* The trailing portion of the string starting at NEW_END
-- contains a grouping error. So we will look for a correctly
-- grouped number in the preceding portion instead. */
-- end = new_end;
-- }
-- else
-- {
-- /* Even the first group was wrong; determine maximum shift. */
-- if (end - cp > (int) *gp + 1)
-- end = cp + (int) *gp + 1;
-- else if (cp < begin)
-- /* This number does not fill the first group, but is correct. */
-- return end;
-- else
-- /* CP points to a thousands separator character. */
-- end = cp;
-- }
-- }
--
-- return MAX (begin, end);
--}
-+extern const wchar_t *__correctly_grouped_prefixwc (const wchar_t *begin,
-+ const wchar_t *end,
-+ wchar_t thousands,
-+ const char *grouping)
-+ attribute_hidden;
-+
-+extern const char *__correctly_grouped_prefixmb (const char *begin,
-+ const char *end,
-+ const char *thousands,
-+ const char *grouping)
-+ attribute_hidden;
---- glibc-2.3.2/stdlib/groupingwc.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/stdlib/groupingwc.c 2003-06-11 18:10:46.000000000 -0400
-@@ -0,0 +1,2 @@
-+#define USE_WIDE_CHAR 1
-+#include "grouping.c"
---- glibc-2.3.2/stdlib/rpmatch.c 2001-07-07 15:21:18.000000000 -0400
-+++ glibc-2.3.2/stdlib/rpmatch.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,7 +1,7 @@
- /* Determine whether string value is affirmation or negative response
- according to current locale's data.
- This file is part of the GNU C Library.
-- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
-@@ -29,11 +29,11 @@
- {
- /* Match against one of the response patterns, compiling the pattern
- first if necessary. */
-- auto inline int try (const int tag, const int match, const int nomatch,
-- const char **lastp, regex_t *re);
-+ auto int try (const int tag, const int match, const int nomatch,
-+ const char **lastp, regex_t *re);
-
-- inline int try (const int tag, const int match, const int nomatch,
-- const char **lastp, regex_t *re)
-+ int try (const int tag, const int match, const int nomatch,
-+ const char **lastp, regex_t *re)
- {
- const char *pattern = nl_langinfo (tag);
- if (pattern != *lastp)
---- glibc-2.3.2/stdlib/stdlib.h 2002-08-27 22:11:33.000000000 -0400
-+++ glibc-2.3.2/stdlib/stdlib.h 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-99,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-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
-@@ -410,7 +410,9 @@
- /* Read a number from a string S in base 64 as above. */
- extern long int a64l (__const char *__s) __THROW __attribute_pure__;
-
-+#endif /* Use SVID || extended X/Open. */
-
-+#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
- # include <sys/types.h> /* we need int32_t... */
-
- /* These are the functions that actually do things. The `random', `srandom',
-@@ -463,7 +465,7 @@
- extern int setstate_r (char *__restrict __statebuf,
- struct random_data *__restrict __buf) __THROW;
- # endif /* Use misc. */
--#endif /* Use SVID || extended X/Open. */
-+#endif /* Use SVID || extended X/Open || BSD. */
-
-
- __BEGIN_NAMESPACE_STD
-@@ -664,18 +666,21 @@
- The last six characters of TEMPLATE must be "XXXXXX";
- they are replaced with a string that makes the filename unique.
- Returns a file descriptor open on the file for reading and writing,
-- or -1 if it cannot create a uniquely-named file. */
-+ or -1 if it cannot create a uniquely-named file.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- # ifndef __USE_FILE_OFFSET64
--extern int mkstemp (char *__template) __THROW;
-+extern int mkstemp (char *__template);
- # else
- # ifdef __REDIRECT
--extern int __REDIRECT (mkstemp, (char *__template) __THROW, mkstemp64);
-+extern int __REDIRECT (mkstemp, (char *__template), mkstemp64);
- # else
- # define mkstemp mkstemp64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
--extern int mkstemp64 (char *__template) __THROW;
-+extern int mkstemp64 (char *__template);
- # endif
- #endif
-
-@@ -690,8 +695,11 @@
-
-
- __BEGIN_NAMESPACE_STD
--/* Execute the given line as a shell command. */
--extern int system (__const char *__command) __THROW;
-+/* Execute the given line as a shell command.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int system (__const char *__command);
- __END_NAMESPACE_STD
-
-
-@@ -871,7 +879,7 @@
-
- #ifdef __USE_XOPEN2K
- /* Return a master pseudo-terminal handle. */
--extern int posix_openpt (int __oflag) __THROW;
-+extern int posix_openpt (int __oflag);
- #endif
-
- #ifdef __USE_XOPEN
-@@ -898,7 +906,7 @@
- extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW;
-
- /* Open a master pseudo terminal and return its file descriptor. */
--extern int getpt (void) __THROW;
-+extern int getpt (void);
- #endif
-
- #ifdef __USE_BSD
---- glibc-2.3.2/stdlib/strtod.c 2003-02-22 04:10:31.000000000 -0500
-+++ glibc-2.3.2/stdlib/strtod.c 2003-08-21 08:37:08.000000000 -0400
-@@ -64,9 +64,11 @@
- /* The gmp headers need some configuration frobs. */
- #define HAVE_ALLOCA 1
-
-+/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
-+ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
-+#include <gmp-mparam.h>
- #include <gmp.h>
- #include <gmp-impl.h>
--#include <gmp-mparam.h>
- #include <longlong.h>
- #include "fpioconst.h"
-
-@@ -157,7 +159,7 @@
- # define MAX_FAC_PER_LIMB 1000000000UL
- #elif BITS_PER_MP_LIMB == 64
- # define MAX_DIG_PER_LIMB 19
--# define MAX_FAC_PER_LIMB 10000000000000000000UL
-+# define MAX_FAC_PER_LIMB 10000000000000000000ULL
- #else
- # error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
- #endif
-@@ -166,14 +168,14 @@
- /* Local data structure. */
- static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
- { 0, 10, 100,
-- 1000, 10000, 100000,
-- 1000000, 10000000, 100000000,
-- 1000000000
-+ 1000, 10000, 100000L,
-+ 1000000L, 10000000L, 100000000L,
-+ 1000000000L
- #if BITS_PER_MP_LIMB > 32
-- , 10000000000U, 100000000000U,
-- 1000000000000U, 10000000000000U, 100000000000000U,
-- 1000000000000000U, 10000000000000000U, 100000000000000000U,
-- 1000000000000000000U, 10000000000000000000U
-+ , 10000000000ULL, 100000000000ULL,
-+ 1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
-+ 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
-+ 1000000000000000000ULL, 10000000000000000000ULL
- #endif
- #if BITS_PER_MP_LIMB > 64
- #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
-@@ -205,7 +207,7 @@
-
- /* Return a floating point number of the needed type according to the given
- multi-precision number after possible rounding. */
--static inline FLOAT
-+static FLOAT
- round_and_return (mp_limb_t *retval, int exponent, int negative,
- mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
- {
-@@ -300,7 +302,7 @@
- character od the string that is not part of the integer as the function
- value. If the EXPONENT is small enough to be taken as an additional
- factor for the resulting number (see code) multiply by it. */
--static inline const STRING_TYPE *
-+static const STRING_TYPE *
- str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
- int *exponent
- #ifndef USE_WIDE_CHAR
-@@ -399,10 +401,11 @@
- Tege doesn't like this function so I have to write it here myself. :)
- --drepper */
- static inline void
-+__attribute ((always_inline))
- __mpn_lshift_1 (mp_limb_t *ptr, mp_size_t size, unsigned int count,
- mp_limb_t limb)
- {
-- if (count == BITS_PER_MP_LIMB)
-+ if (__builtin_constant_p (count) && count == BITS_PER_MP_LIMB)
- {
- /* Optimize the case of shifting by exactly a word:
- just copy words, with no actual bit-shifting. */
-@@ -566,7 +569,7 @@
- for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
- if (cp[cnt] != decimal[cnt])
- break;
-- if (decimal[cnt] == '\0' && cp[1] >= '0' && cp[1] <= '9')
-+ if (decimal[cnt] == '\0' && cp[cnt] >= '0' && cp[cnt] <= '9')
- {
- /* We accept it. This funny construct is here only to indent
- the code directly. */
-@@ -690,7 +693,13 @@
- || (CHAR_TYPE) TOLOWER (c) != L_('p')))
- && (base != 16 && (CHAR_TYPE) TOLOWER (c) != L_('e')))
- {
-- tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
-+#ifdef USE_WIDE_CHAR
-+ tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
-+ grouping);
-+#else
-+ tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
-+ grouping);
-+#endif
- /* If TP is at the start of the digits, there was no correctly
- grouped prefix of the string; so no number found. */
- RETURN (0.0, tp == start_of_digits ? (base == 16 ? cp - 1 : nptr) : tp);
-@@ -731,7 +740,13 @@
- if (grouping && dig_no > 0)
- {
- /* Check the grouping of the digits. */
-- tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
-+#ifdef USE_WIDE_CHAR
-+ tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
-+ grouping);
-+#else
-+ tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
-+ grouping);
-+#endif
- if (cp != tp)
- {
- /* Less than the entire string was correctly grouped. */
-@@ -880,7 +895,7 @@
- if (dig_no == int_no && dig_no > 0 && exponent < 0)
- do
- {
-- while (expp[-1] < L_('0') || expp[-1] > L_('9'))
-+ while (! (base == 16 ? ISXDIGIT (expp[-1]) : ISDIGIT (expp[-1])))
- --expp;
-
- if (expp[-1] != L_('0'))
---- glibc-2.3.2/stdlib/tst-bsearch.c 2002-09-30 18:02:40.000000000 -0400
-+++ glibc-2.3.2/stdlib/tst-bsearch.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
-
-@@ -19,6 +19,7 @@
-
- #include <stdio.h>
- #include <stdlib.h>
-+#include <tst-stack-align.h>
-
- struct entry
- {
-@@ -40,6 +41,7 @@
- };
- #define narr (sizeof (arr) / sizeof (arr[0]))
-
-+static int align_check;
-
- static int
- comp (const void *p1, const void *p2)
-@@ -47,6 +49,9 @@
- struct entry *e1 = (struct entry *) p1;
- struct entry *e2 = (struct entry *) p2;
-
-+ if (!align_check)
-+ align_check = TEST_STACK_ALIGN () ? -1 : 1;
-+
- return e1->val - e2->val;
- }
-
-@@ -128,6 +133,17 @@
- }
- }
-
-+ if (align_check == 0)
-+ {
-+ puts ("alignment not checked");
-+ result = 1;
-+ }
-+ else if (align_check == -1)
-+ {
-+ puts ("stack not sufficiently aligned");
-+ result = 1;
-+ }
-+
- if (result == 0)
- puts ("all OK");
-
---- glibc-2.3.2/stdlib/tst-limits.c 2000-11-20 12:28:47.000000000 -0500
-+++ glibc-2.3.2/stdlib/tst-limits.c 2003-08-21 08:37:08.000000000 -0400
-@@ -62,8 +62,8 @@
- TEST (PAGE_SIZE, "d", getpagesize ());
- #endif
-
-- TEST (WORD_BIT, "zd", sizeof (int) * CHAR_BIT);
-- TEST (LONG_BIT, "zd", sizeof (long int) * CHAR_BIT);
-+ TEST (WORD_BIT, "d", (int) sizeof (int) * CHAR_BIT);
-+ TEST (LONG_BIT, "d", (int) sizeof (long int) * CHAR_BIT);
-
- return result;
- }
---- glibc-2.3.2/stdlib/tst-qsort.c 2002-01-29 04:04:45.000000000 -0500
-+++ glibc-2.3.2/stdlib/tst-qsort.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,17 +1,24 @@
- /* Test case by Paul Eggert <eggert@twinsun.com> */
- #include <stdio.h>
- #include <stdlib.h>
-+#include <tst-stack-align.h>
-
- struct big { char c[4 * 1024]; };
-
- struct big *array;
- struct big *array_end;
-
-+static int align_check;
-+
- int
- compare (void const *a1, void const *b1)
- {
- struct big const *a = a1;
- struct big const *b = b1;
-+
-+ if (!align_check)
-+ align_check = TEST_STACK_ALIGN () ? -1 : 1;
-+
- if (! (array <= a && a < array_end
- && array <= b && b < array_end))
- {
-@@ -38,5 +45,11 @@
-
- qsort (array, array_members, sizeof *array, compare);
-
-+ if (align_check == -1)
-+ {
-+ puts ("stack not sufficiently aligned");
-+ exit (EXIT_FAILURE);
-+ }
-+
- return 0;
- }
---- glibc-2.3.2/stdlib/tst-strtod.c 2003-02-22 04:08:26.000000000 -0500
-+++ glibc-2.3.2/stdlib/tst-strtod.c 2003-08-21 08:37:08.000000000 -0400
-@@ -71,6 +71,7 @@
- { "-Inf", -HUGE_VAL, '\0', 0 },
- { "+InFiNiTy", HUGE_VAL, '\0', 0 },
- #endif
-+ { "0x80000Ap-23", 0x80000Ap-23, '\0', 0 },
- { NULL, 0, '\0', 0 }
- };
-
-@@ -149,10 +150,10 @@
- }
-
- const char input2[] = "+1.000000000116415321826934814453125";
-- if (strtold (input2, NULL) != +1.000000000116415321826934814453125)
-+ if (strtold (input2, NULL) != +1.000000000116415321826934814453125L)
- {
- printf ("input2: %La != %La\n", strtold (input2, NULL),
-- +1.000000000116415321826934814453125);
-+ +1.000000000116415321826934814453125L);
- status = 1;
- }
-
---- glibc-2.3.2/streams/stropts.h 2002-10-25 04:02:16.000000000 -0400
-+++ glibc-2.3.2/streams/stropts.h 2003-04-24 20:05:58.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 2000, 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
-@@ -44,31 +44,41 @@
- /* Test whether FILDES is associated with a STREAM-based file. */
- extern int isastream (int __fildes) __THROW;
-
--/* Receive next message from a STREAMS file. */
-+/* Receive next message from a STREAMS file.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int getmsg (int __fildes, struct strbuf *__restrict __ctlptr,
- struct strbuf *__restrict __dataptr,
-- int *__restrict __flagsp) __THROW;
-+ int *__restrict __flagsp);
-
- /* Receive next message from a STREAMS file, with *FLAGSP allowing to
-- control which message. */
-+ control which message.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int getpmsg (int __fildes, struct strbuf *__restrict __ctlptr,
- struct strbuf *__restrict __dataptr,
-- int *__restrict __bandp, int *__restrict __flagsp)
-- __THROW;
-+ int *__restrict __bandp, int *__restrict __flagsp);
-
- /* Perform the I/O control operation specified by REQUEST on FD.
- One argument may follow; its presence and type depend on REQUEST.
- Return value depends on REQUEST. Usually -1 indicates error. */
- extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
-
--/* Send a message on a STREAM. */
-+/* Send a message on a STREAM.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int putmsg (int __fildes, __const struct strbuf *__ctlptr,
-- __const struct strbuf *__dataptr, int __flags) __THROW;
-+ __const struct strbuf *__dataptr, int __flags);
-+
-+/* Send a message on a STREAM to the BAND.
-
--/* Send a message on a STREAM to the BAND. */
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int putpmsg (int __fildes, __const struct strbuf *__ctlptr,
-- __const struct strbuf *__dataptr, int __band, int __flags)
-- __THROW;
-+ __const struct strbuf *__dataptr, int __band, int __flags);
-
- /* Attach a STREAMS-based file descriptor FILDES to a file PATH in the
- file system name space. */
---- glibc-2.3.2/string/Makefile 2002-11-08 14:35:04.000000000 -0500
-+++ glibc-2.3.2/string/Makefile 2003-09-19 22:37:06.000000000 -0400
-@@ -45,9 +45,9 @@
- # for -fbounded-pointer compiles. Glibc uses memchr for explicit checks.
- o-objects.ob := memcpy.o memset.o memchr.o
-
--strop-tests := memchr memcmp memcpy memmove mempcpy memset stpcpy \
-- stpncpy strcat strchr strcmp strcpy strcspn strlen \
-- strncmp strncpy strpbrk strrchr strspn
-+strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \
-+ stpcpy stpncpy strcat strchr strcmp strcpy strcspn \
-+ strlen strncmp strncpy strpbrk strrchr strspn
- tests := tester inl-tester noinl-tester testcopy test-ffs \
- tst-strlen stratcliff tst-svc tst-inlcall \
- bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
---- glibc-2.3.2/string/bits/string2.h 2002-05-25 02:09:18.000000000 -0400
-+++ glibc-2.3.2/string/bits/string2.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-independant string function optimizations.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -76,7 +76,7 @@
- use unaligned memory accesses. */
- # define __STRING2_COPY_TYPE(N) \
- typedef struct { unsigned char __arr[N]; } \
-- __STRING2_COPY_ARR##N __attribute__ ((packed))
-+ __attribute__ ((__packed__)) __STRING2_COPY_ARR##N
- __STRING2_COPY_TYPE (2);
- __STRING2_COPY_TYPE (3);
- __STRING2_COPY_TYPE (4);
---- glibc-2.3.2/string/stratcliff.c 2002-09-09 20:23:48.000000000 -0400
-+++ glibc-2.3.2/string/stratcliff.c 2003-09-19 22:37:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test for string function add boundaries of usable memory.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -306,6 +306,43 @@
- outer, inner);
- result = 1;
- }
-+
-+ /* memccpy test */
-+ memset (adr, '\0', size);
-+ for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
-+ for (inner = 0; inner < size - outer; ++inner)
-+ if (memccpy (dest, &adr[outer], '\1', inner) != NULL)
-+ {
-+ printf ("memccpy flunked full copy for outer = %d, inner = %d\n",
-+ outer, inner);
-+ result = 1;
-+ }
-+ for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
-+ for (middle = 0; middle < size - outer; ++middle)
-+ {
-+ memset (dest, '\2', middle + 1);
-+ for (inner = 0; inner < middle; ++inner)
-+ {
-+ adr[outer + inner] = '\1';
-+
-+ if (memccpy (dest, &adr[outer], '\1', middle + 128)
-+ != dest + inner + 1)
-+ {
-+ printf ("\
-+memccpy flunked partial copy for outer = %d, middle = %d, inner = %d\n",
-+ outer, middle, inner);
-+ result = 1;
-+ }
-+ else if (dest[inner + 1] != '\2')
-+ {
-+ printf ("\
-+memccpy copied too much for outer = %d, middle = %d, inner = %d\n",
-+ outer, middle, inner);
-+ result = 1;
-+ }
-+ adr[outer + inner] = '\0';
-+ }
-+ }
- }
-
- return result;
---- glibc-2.3.2/string/string-inlines.c 2002-12-31 17:58:40.000000000 -0500
-+++ glibc-2.3.2/string/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,39 +0,0 @@
--/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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. */
--
--/* <bits/string.h> and <bits/string2.h> declare some extern inline
-- functions. These functions are declared additionally here if
-- inlining is not possible. */
--
--#undef __USE_STRING_INLINES
--#define __USE_STRING_INLINES
--#define _FORCE_INLINES
--#define __STRING_INLINE /* empty */
--
--/* This is to avoid PLT entries for the x86 version. */
--#define __memcpy_g __memcpy_g_internal
--#define __strchr_g __strchr_g_internal
--
--#include <string.h>
--
--#ifdef __memcpy_c
--# undef __memcpy_g
--strong_alias (__memcpy_g_internal, __memcpy_g)
--# undef __strchr_g
--strong_alias (__strchr_g_internal, __strchr_g)
--#endif
---- glibc-2.3.2/string/string.h 2002-08-27 21:04:45.000000000 -0400
-+++ glibc-2.3.2/string/string.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1993, 1995-2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1993, 1995-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
---- glibc-2.3.2/string/strxfrm.c 2002-10-09 04:53:03.000000000 -0400
-+++ glibc-2.3.2/string/strxfrm.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-@@ -51,7 +51,7 @@
- #ifndef WIDE_CHAR_VERSION
-
- /* We need UTF-8 encoding of numbers. */
--static inline int
-+static int
- utf8_encode (char *buf, int val)
- {
- int retval;
-@@ -196,9 +196,6 @@
- idxarr = (int32_t *) alloca (srclen * sizeof (int32_t));
- rulearr = (unsigned char *) alloca (srclen + 1);
- }
-- /* This element is only read, the value never used but to determine
-- another value which then is ignored. */
-- rulearr[srclen] = '\0';
-
- idxmax = 0;
- do
-@@ -211,6 +208,10 @@
- }
- while (*usrc != L('\0'));
-
-+ /* This element is only read, the value never used but to determine
-+ another value which then is ignored. */
-+ rulearr[idxmax] = '\0';
-+
- /* Now the passes over the weights. We now use the indeces we found
- before. */
- needed = 0;
---- glibc-2.3.2/string/test-memccpy.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/string/test-memccpy.c 2003-09-10 01:22:12.000000000 -0400
-@@ -0,0 +1,293 @@
-+/* Test and measure memccpy functions.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Written by 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.
-+
-+ 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. */
-+
-+#define TEST_MAIN
-+#include "test-string.h"
-+
-+void *simple_memccpy (void *, const void *, int, size_t);
-+void *stupid_memccpy (void *, const void *, int, size_t);
-+
-+IMPL (stupid_memccpy, 0)
-+IMPL (simple_memccpy, 0)
-+IMPL (memccpy, 1)
-+
-+void *
-+simple_memccpy (void *dst, const void *src, int c, size_t n)
-+{
-+ const char *s = src;
-+ char *d = dst;
-+
-+ while (n-- > 0)
-+ if ((*d++ = *s++) == (char) c)
-+ return d;
-+
-+ return NULL;
-+}
-+
-+void *
-+stupid_memccpy (void *dst, const void *src, int c, size_t n)
-+{
-+ void *p = memchr (src, c, n);
-+
-+ if (p != NULL)
-+ return mempcpy (dst, src, p - src + 1);
-+
-+ memcpy (dst, src, n);
-+ return NULL;
-+}
-+
-+typedef void *(*proto_t) (void *, const void *, int c, size_t);
-+
-+static void
-+do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len,
-+ size_t n)
-+{
-+ void *expect = len > n ? NULL : (char *) dst + len;
-+ if (CALL (impl, dst, src, c, n) != expect)
-+ {
-+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
-+ CALL (impl, dst, src, c, n), expect);
-+ ret = 1;
-+ return;
-+ }
-+
-+ if (memcmp (dst, src, len > n ? n : len) != 0)
-+ {
-+ error (0, 0, "Wrong result in function %s", impl->name);
-+ ret = 1;
-+ return;
-+ }
-+
-+ if (HP_TIMING_AVAIL)
-+ {
-+ hp_timing_t start __attribute__ ((unused));
-+ hp_timing_t stop __attribute__ ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
-+ size_t i;
-+
-+ for (i = 0; i < 32; ++i)
-+ {
-+ HP_TIMING_NOW (start);
-+ CALL (impl, dst, src, c, n);
-+ HP_TIMING_NOW (stop);
-+ HP_TIMING_BEST (best_time, start, stop);
-+ }
-+
-+ printf ("\t%zd", (size_t) best_time);
-+ }
-+}
-+
-+static void
-+do_test (size_t align1, size_t align2, int c, size_t len, size_t n,
-+ int max_char)
-+{
-+ size_t i;
-+ char *s1, *s2;
-+
-+ align1 &= 7;
-+ if (align1 + len >= page_size)
-+ return;
-+
-+ align2 &= 7;
-+ if (align2 + len >= page_size)
-+ return;
-+
-+ s1 = buf1 + align1;
-+ s2 = buf2 + align2;
-+
-+ for (i = 0; i < len - 1; ++i)
-+ {
-+ s1[i] = 32 + 23 * i % (max_char - 32);
-+ if (s1[i] == (char) c)
-+ --s1[i];
-+ }
-+ s1[len - 1] = c;
-+ for (i = len; i + align1 < page_size && i < len + 64; ++i)
-+ s1[i] = 32 + 32 * i % (max_char - 32);
-+
-+ if (HP_TIMING_AVAIL)
-+ printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2);
-+
-+ FOR_EACH_IMPL (impl, 0)
-+ do_one_test (impl, s2, s1, c, len, n);
-+
-+ if (HP_TIMING_AVAIL)
-+ putchar ('\n');
-+}
-+
-+static void
-+do_random_tests (void)
-+{
-+ size_t i, j, n, align1, align2, len, size, mode;
-+ unsigned char *p1 = buf1 + page_size - 512;
-+ unsigned char *p2 = buf2 + page_size - 512;
-+ unsigned char *res, c;
-+
-+ for (n = 0; n < ITERATIONS; n++)
-+ {
-+ mode = random ();
-+ c = random ();
-+ if (mode & 1)
-+ {
-+ size = random () & 255;
-+ align1 = 512 - size - (random () & 15);
-+ if (mode & 2)
-+ align2 = align1 - (random () & 24);
-+ else
-+ align2 = align1 - (random () & 31);
-+ if (mode & 4)
-+ {
-+ j = align1;
-+ align1 = align2;
-+ align2 = j;
-+ }
-+ if (mode & 8)
-+ len = size - (random () & 31);
-+ else
-+ len = 512;
-+ if (len >= 512)
-+ len = random () & 511;
-+ }
-+ else
-+ {
-+ align1 = random () & 31;
-+ if (mode & 2)
-+ align2 = random () & 31;
-+ else
-+ align2 = align1 + (random () & 24);
-+ len = random () & 511;
-+ j = align1;
-+ if (align2 > j)
-+ j = align2;
-+ if (mode & 4)
-+ {
-+ size = random () & 511;
-+ if (size + j > 512)
-+ size = 512 - j - (random() & 31);
-+ }
-+ else
-+ size = 512 - j;
-+ if ((mode & 8) && len + j >= 512)
-+ len = 512 - j - (random () & 7);
-+ }
-+ j = len + align1 + 64;
-+ if (j > 512)
-+ j = 512;
-+ for (i = 0; i < j; i++)
-+ {
-+ if (i == len + align1)
-+ p1[i] = c;
-+ else
-+ {
-+ p1[i] = random () & 255;
-+ if (i >= align1 && i < len + align1 && p1[i] == c)
-+ p1[i] = (random () & 127) + 3 + c;
-+ }
-+ }
-+
-+ FOR_EACH_IMPL (impl, 1)
-+ {
-+ unsigned char *expect;
-+ memset (p2 - 64, '\1', 512 + 64);
-+ res = CALL (impl, p2 + align2, p1 + align1, (char) c, size);
-+ if (len >= size)
-+ expect = NULL;
-+ else
-+ expect = p2 + align2 + len + 1;
-+
-+ if (res != expect)
-+ {
-+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %d) %p != %p",
-+ n, impl->name, align1, align2, len, size, c, res, expect);
-+ ret = 1;
-+ }
-+ for (j = 0; j < align2 + 64; ++j)
-+ {
-+ if (p2[j - 64] != '\1')
-+ {
-+ error (0, 0, "Iteration %zd - garbage before, %s (%zd, %zd, %zd)",
-+ n, impl->name, align1, align2, len);
-+ ret = 1;
-+ break;
-+ }
-+ }
-+ j = align2 + len + 1;
-+ if (size + align2 < j)
-+ j = size + align2;
-+ for (; j < 512; ++j)
-+ {
-+ if (p2[j] != '\1')
-+ {
-+ error (0, 0, "Iteration %zd - garbage after, %s (%zd, %zd, %zd)",
-+ n, impl->name, align1, align2, len);
-+ ret = 1;
-+ break;
-+ }
-+ }
-+ j = len + 1;
-+ if (size < j)
-+ j = size;
-+ if (memcmp (p1 + align1, p2 + align2, j))
-+ {
-+ error (0, 0, "Iteration %zd - different strings, %s (%zd, %zd, %zd)",
-+ n, impl->name, align1, align2, len);
-+ ret = 1;
-+ }
-+ }
-+ }
-+}
-+
-+int
-+test_main (void)
-+{
-+ size_t i;
-+
-+ test_init ();
-+
-+ printf ("%28s", "");
-+ FOR_EACH_IMPL (impl, 0)
-+ printf ("\t%s", impl->name);
-+ putchar ('\n');
-+
-+ for (i = 1; i < 8; ++i)
-+ {
-+ do_test (i, i, 12, 16, 16, 127);
-+ do_test (i, i, 23, 16, 16, 255);
-+ do_test (i, 2 * i, 28, 16, 16, 127);
-+ do_test (2 * i, i, 31, 16, 16, 255);
-+ do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127);
-+ do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127);
-+ do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255);
-+ do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255);
-+ }
-+
-+ for (i = 1; i < 8; ++i)
-+ {
-+ do_test (0, 0, i, 4 << i, 8 << i, 127);
-+ do_test (0, 0, i, 16 << i, 8 << i, 127);
-+ do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127);
-+ do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127);
-+ }
-+
-+ do_random_tests ();
-+ return ret;
-+}
-+
-+#include "../test-skeleton.c"
---- glibc-2.3.2/string/test-memchr.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-memchr.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure memchr functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -50,7 +50,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -74,7 +76,7 @@
- align &= 7;
- if (align + len >= page_size)
- return;
--
-+
- for (i = 0; i < len; ++i)
- {
- buf1[align + i] = 1 + 23 * i % 127;
---- glibc-2.3.2/string/test-memcmp.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-memcmp.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure memcmp functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -54,7 +54,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -110,7 +112,8 @@
- do_random_tests (void)
- {
- size_t i, j, n, align1, align2, pos, len;
-- int result, r;
-+ int result;
-+ long r;
- unsigned char *p1 = buf1 + page_size - 512;
- unsigned char *p2 = buf2 + page_size - 512;
-
-@@ -159,11 +162,14 @@
- FOR_EACH_IMPL (impl, 1)
- {
- r = CALL (impl, p1 + align1, p2 + align2, len);
-+ /* Test whether on 64-bit architectures where ABI requires
-+ callee to promote has the promotion been done. */
-+ asm ("" : "=g" (r) : "0" (r));
- if ((r == 0 && result)
- || (r < 0 && result >= 0)
- || (r > 0 && result <= 0))
- {
-- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
-+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
- n, impl->name, align1, align2, len, pos, r, result, p1, p2);
- ret = 1;
- }
---- glibc-2.3.2/string/test-memcpy.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-memcpy.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure memcpy functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -71,7 +71,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -172,7 +174,7 @@
- if (align2 + len > size2)
- align2 = size2 - len;
- }
-- }
-+ }
- p1 = buf1 + page_size - size1;
- p2 = buf2 + page_size - size2;
- c = random () & 255;
---- glibc-2.3.2/string/test-memmove.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-memmove.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure memmove functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -70,7 +70,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-memset.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-memset.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure memset functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -59,7 +59,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-strcat.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-strcat.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strcat functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -59,7 +59,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-strchr.c 2002-11-09 18:24:03.000000000 -0500
-+++ glibc-2.3.2/string/test-strchr.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strchr functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -34,7 +34,7 @@
- {
- for (; *s != (char) c; ++s)
- if (*s == '\0')
-- return NULL;
-+ return NULL;
- return (char *) s;
- }
-
-@@ -63,7 +63,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -87,7 +89,7 @@
- align &= 7;
- if (align + len >= page_size)
- return;
--
-+
- for (i = 0; i < len; ++i)
- {
- buf1[align + i] = 32 + 23 * i % (max_char - 32);
---- glibc-2.3.2/string/test-strcmp.c 2002-11-09 18:24:03.000000000 -0500
-+++ glibc-2.3.2/string/test-strcmp.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strcmp functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -68,7 +68,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -126,7 +128,8 @@
- do_random_tests (void)
- {
- size_t i, j, n, align1, align2, pos, len1, len2;
-- int result, r;
-+ int result;
-+ long r;
- unsigned char *p1 = buf1 + page_size - 512;
- unsigned char *p2 = buf2 + page_size - 512;
-
-@@ -196,11 +199,14 @@
- FOR_EACH_IMPL (impl, 1)
- {
- r = CALL (impl, p1 + align1, p2 + align2);
-+ /* Test whether on 64-bit architectures where ABI requires
-+ callee to promote has the promotion been done. */
-+ asm ("" : "=g" (r) : "0" (r));
- if ((r == 0 && result)
- || (r < 0 && result >= 0)
- || (r > 0 && result <= 0))
- {
-- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
-+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
- n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2);
- ret = 1;
- }
---- glibc-2.3.2/string/test-strcpy.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-strcpy.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strcpy functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -61,7 +61,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));;
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-strlen.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-strlen.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strlen functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -58,7 +58,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -81,7 +83,7 @@
- align &= 7;
- if (align + len >= page_size)
- return;
--
-+
- for (i = 0; i < len; ++i)
- buf1[align + i] = 1 + 7 * i % max_char;
- buf1[align + len] = 0;
---- glibc-2.3.2/string/test-strncmp.c 2002-11-09 18:24:03.000000000 -0500
-+++ glibc-2.3.2/string/test-strncmp.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strncmp functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -68,7 +68,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -132,7 +134,8 @@
- do_random_tests (void)
- {
- size_t i, j, n, align1, align2, pos, len1, len2, size;
-- int result, r;
-+ int result;
-+ long r;
- unsigned char *p1 = buf1 + page_size - 512;
- unsigned char *p2 = buf2 + page_size - 512;
-
-@@ -206,11 +209,14 @@
- FOR_EACH_IMPL (impl, 1)
- {
- r = CALL (impl, p1 + align1, p2 + align2, size);
-+ /* Test whether on 64-bit architectures where ABI requires
-+ callee to promote has the promotion been done. */
-+ asm ("" : "=g" (r) : "0" (r));
- if ((r == 0 && result)
- || (r < 0 && result >= 0)
- || (r > 0 && result <= 0))
- {
-- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
-+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
- n, impl->name, align1, align2, len1, len2, pos, size, r, result, p1, p2);
- ret = 1;
- }
---- glibc-2.3.2/string/test-strncpy.c 2002-12-07 04:01:32.000000000 -0500
-+++ glibc-2.3.2/string/test-strncpy.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strncpy functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -93,7 +93,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute__ ((unused));
-+ hp_timing_t stop __attribute__ ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-strpbrk.c 2002-11-09 18:24:03.000000000 -0500
-+++ glibc-2.3.2/string/test-strpbrk.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strpbrk functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -73,7 +73,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/test-strrchr.c 2002-11-07 14:14:44.000000000 -0500
-+++ glibc-2.3.2/string/test-strrchr.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strrchr functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -53,7 +53,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
-@@ -77,7 +79,7 @@
- align &= 7;
- if (align + len >= page_size)
- return;
--
-+
- for (i = 0; i < len; ++i)
- {
- buf1[align + i] = random () & max_char;
---- glibc-2.3.2/string/test-strspn.c 2002-11-09 18:24:03.000000000 -0500
-+++ glibc-2.3.2/string/test-strspn.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test and measure strspn functions.
-- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Jakub Jelinek <jakub@redhat.com>, 1999.
-
-@@ -77,7 +77,9 @@
-
- if (HP_TIMING_AVAIL)
- {
-- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
-+ hp_timing_t start __attribute ((unused));
-+ hp_timing_t stop __attribute ((unused));
-+ hp_timing_t best_time = ~ (hp_timing_t) 0;
- size_t i;
-
- for (i = 0; i < 32; ++i)
---- glibc-2.3.2/string/tester.c 2003-01-14 01:44:06.000000000 -0500
-+++ glibc-2.3.2/string/tester.c 2003-04-12 11:39:44.000000000 -0400
-@@ -89,8 +89,8 @@
- int k;
- for (k = 0; k < 0x3f; k++)
- {
-- buf1[j] = '0' ^ (k & 4);
-- buf2[j] = '4' ^ (k & 4);
-+ buf1[k] = '0' ^ (k & 4);
-+ buf2[k] = '4' ^ (k & 4);
- }
- buf1[i] = buf1[0x3f] = 0;
- buf2[j] = buf2[0x3f] = 0;
---- glibc-2.3.2/sunrpc/Makefile 2002-10-17 13:05:56.000000000 -0400
-+++ glibc-2.3.2/sunrpc/Makefile 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1994-2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1994-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
-@@ -54,7 +54,8 @@
- $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
- install-others = $(inst_sysconfdir)/rpc
- generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
-- $(rpcsvc:%.x=rpcsvc/%.stmp) rpc-proto.c rpc-proto.d rpcgen
-+ $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
-+generated-dirs := rpcsvc
-
- routines := auth_none auth_unix authuxprot bindrsvprt \
- clnt_gen clnt_perr clnt_raw clnt_simp clnt_tcp \
-@@ -117,6 +118,11 @@
- CFLAGS-xnfs_prot.c = -Wno-unused
- CFLAGS-xrquota.c = -Wno-unused
- CFLAGS-xkey_prot.c = -Wno-unused
-+CFLAGS-auth_unix.c = -fexceptions
-+CFLAGS-key_call.c = -fexceptions
-+CFLAGS-pmap_rmt.c = -fexceptions
-+CFLAGS-clnt_perr.c = -fexceptions
-+CFLAGS-openchild.c = -fexceptions
-
- ifeq (yes,$(have_doors))
- CPPFLAGS-key_call.c += -DHAVE_DOORS=1
-@@ -167,26 +173,20 @@
- # Gratuitous dependency on generated .c file here just gets it mentioned to
- # avoid being an intermediate file and getting removed.
- define o-iterator-doit
--$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h \
-- $(objpfx)rpc-proto.d
-+$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h
- endef
- object-suffixes-left = $(filter-out $(librpcsvc-inhibit-o),$(object-suffixes))
- include $(o-iterator)
-
--ifndef no_deps
---include $(objpfx)rpc-proto.d
-+rpcsvc-dt-files := $(foreach o,$(filter-out $(librpcsvc-inhibit-o),\
-+ $(object-suffixes)),\
-+ $(rpcsvc:%.x=$(objpfx)x%$o.dt))
-+rpcsvc-depfiles := $(patsubst %.dt,%.d,$(wildcard $(rpcsvc-dt-files))) \
-+ $(wildcard $(rpcsvc-dt-files:.dt=.d))
-+ifdef rpcsvc-depfiles
-+ifneq ($(no_deps),t)
-+-include $(rpcsvc-depfiles)
-+endif
- endif
--
--$(objpfx)rpc-proto.d: $(objpfx)%.d: $(objpfx)%.c
-- $(+make-deps)
--# Special file to generate dependencies for the RPC service objects.
--# Collect all include directives from the source files.
--$(objpfx)rpc-proto.c: $(rpcsvc:%=rpcsvc/%)
-- $(make-target-directory)
-- { echo '#include <rpc/types.h>'; \
-- echo '#include <rpc/xdr.h>'; \
-- echo '#include <rpc/rpc.h>'; \
-- sed -n '/^%#include/s/%//p' $^; } > $@T
-- mv -f $@T $@
-
- $(objpfx)thrsvc: $(shared-thread-library)
---- glibc-2.3.2/sunrpc/rpc/auth.h 1999-10-09 13:15:36.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc/auth.h 2003-09-19 22:37:07.000000000 -0400
-@@ -159,8 +159,8 @@
- * int *aup_gids;
- */
- extern AUTH *authunix_create (char *__machname, __uid_t __uid, __gid_t __gid,
-- int __len, __gid_t *__aup_gids) __THROW;
--extern AUTH *authunix_create_default (void) __THROW;
-+ int __len, __gid_t *__aup_gids);
-+extern AUTH *authunix_create_default (void);
- extern AUTH *authnone_create (void) __THROW;
- extern AUTH *authdes_create (const char *__servername, u_int __window,
- struct sockaddr *__syncaddr, des_block *__ckey)
-@@ -194,14 +194,14 @@
- * These routines interface to the keyserv daemon
- *
- */
--extern int key_decryptsession (char *, des_block *) __THROW;
--extern int key_decryptsession_pk (char *, netobj *, des_block *) __THROW;
--extern int key_encryptsession (char *, des_block *) __THROW;
--extern int key_encryptsession_pk (char *, netobj *, des_block *) __THROW;
--extern int key_gendes (des_block *) __THROW;
--extern int key_setsecret (char *) __THROW;
--extern int key_secretkey_is_set (void) __THROW;
--extern int key_get_conv (char *, des_block *) __THROW;
-+extern int key_decryptsession (char *, des_block *);
-+extern int key_decryptsession_pk (char *, netobj *, des_block *);
-+extern int key_encryptsession (char *, des_block *);
-+extern int key_encryptsession_pk (char *, netobj *, des_block *);
-+extern int key_gendes (des_block *);
-+extern int key_setsecret (char *);
-+extern int key_secretkey_is_set (void);
-+extern int key_get_conv (char *, des_block *);
-
- /*
- * XDR an opaque authentication struct.
---- glibc-2.3.2/sunrpc/rpc/clnt.h 2000-08-02 02:54:59.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc/clnt.h 2003-09-19 22:37:07.000000000 -0400
-@@ -368,18 +368,18 @@
- /*
- * Print why creation failed
- */
--extern void clnt_pcreateerror (__const char *__msg) __THROW; /* stderr */
-+extern void clnt_pcreateerror (__const char *__msg); /* stderr */
- extern char *clnt_spcreateerror(__const char *__msg) __THROW; /* string */
-
- /*
- * Like clnt_perror(), but is more verbose in its output
- */
--extern void clnt_perrno (enum clnt_stat __num) __THROW; /* stderr */
-+extern void clnt_perrno (enum clnt_stat __num); /* stderr */
-
- /*
- * Print an English error message, given the client error code
- */
--extern void clnt_perror (CLIENT *__clnt, __const char *__msg) __THROW;
-+extern void clnt_perror (CLIENT *__clnt, __const char *__msg);
- /* stderr */
- extern char *clnt_sperror (CLIENT *__clnt, __const char *__msg) __THROW;
- /* string */
---- glibc-2.3.2/sunrpc/rpc_clntout.c 1999-11-23 21:51:40.000000000 -0500
-+++ glibc-2.3.2/sunrpc/rpc_clntout.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
- */
- char clntout_rcsid[] =
-- "$Id: rpc_clntout.c,v 1.6 1999/11/23 17:10:21 drepper Exp $";
-+ "$Id: rpc_clntout.c,v 1.5 1998/02/16 17:41:48 drepper Exp $";
-
- /*
- * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_cout.c 2001-09-04 20:07:01.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc_cout.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
- */
- char cout_rcsid[] =
--"$Id: rpc_cout.c,v 1.13 2001/09/05 00:07:01 drepper Exp $";
-+"$Id: rpc_cout.c,v 1.12 2000/12/28 10:22:08 aj Exp $";
-
- /*
- * rpc_cout.c, XDR routine outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_hout.c 2001-08-28 05:17:24.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc_hout.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
- */
- char hout_rcsid[] =
-- "$Id: rpc_hout.c,v 1.7 2001/08/28 09:17:24 drepper Exp $";
-+ "$Id: rpc_hout.c,v 1.6 2000/12/31 15:43:33 aj Exp $";
-
- /*
- * rpc_hout.c, Header file outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_main.c 2002-10-11 14:58:45.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc_main.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
- */
- const char main_rcsid[] =
-- "$Id: rpc_main.c,v 1.23 2002/10/11 10:51:57 roland Exp $";
-+ "$Id: rpc_main.c,v 1.22 2001/11/02 02:15:17 drepper Exp $";
-
- /*
- * rpc_main.c, Top level of the RPC protocol compiler.
---- glibc-2.3.2/sunrpc/rpc_parse.c 2001-04-04 13:27:24.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc_parse.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
- */
- const char parse_rcsid[] =
-- "$Id: rpc_parse.c,v 1.5 2001/04/04 17:27:24 drepper Exp $";
-+ "$Id: rpc_parse.c,v 1.4 1998/02/16 17:41:53 drepper Exp $";
-
- /*
- * rpc_parse.c, Parser for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_sample.c 1998-11-16 06:56:33.000000000 -0500
-+++ glibc-2.3.2/sunrpc/rpc_sample.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
- */
- char sample_rcsid[] =
-- "$Id: rpc_sample.c,v 1.5 1998/11/16 11:56:33 drepper Exp $";
-+ "$Id: rpc_sample.c,v 1.4 1998/02/24 15:20:54 drepper Exp $";
-
- /*
- * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_scan.c 2001-04-04 13:26:50.000000000 -0400
-+++ glibc-2.3.2/sunrpc/rpc_scan.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
- */
- char scan_rcsid[] =
-- "$Id: rpc_scan.c,v 1.8 2001/04/04 17:26:50 drepper Exp $";
-+ "$Id: rpc_scan.c,v 1.7 1999/06/19 09:47:43 drepper Exp $";
-
- /*
- * rpc_scan.c, Scanner for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_svcout.c 2002-04-03 03:53:44.000000000 -0500
-+++ glibc-2.3.2/sunrpc/rpc_svcout.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
- */
- char svcout_rcsid[] =
-- "$Id: rpc_svcout.c,v 1.11 2002/04/03 08:53:44 drepper Exp $";
-+ "$Id: rpc_svcout.c,v 1.10 2002/04/03 08:27:59 drepper Exp $";
-
- /*
- * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_tblout.c 1997-03-26 20:51:46.000000000 -0500
-+++ glibc-2.3.2/sunrpc/rpc_tblout.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
- */
- char tblout_rcsid[] =
-- "$Id: rpc_tblout.c,v 1.2 1997/03/27 01:51:46 drepper Exp $";
-+ "$Id: rpc_tblout.c,v 1.1 1996/10/17 01:50:51 drepper Exp $";
-
- /*
- * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/rpc_util.c 1998-02-16 12:41:57.000000000 -0500
-+++ glibc-2.3.2/sunrpc/rpc_util.c 2002-11-16 08:56:25.000000000 -0500
-@@ -32,7 +32,7 @@
- * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
- */
- char util_rcsid[] =
-- "$Id: rpc_util.c,v 1.6 1998/02/16 17:41:57 drepper Exp $";
-+ "$Id: rpc_util.c,v 1.5 1997/06/03 21:50:42 drepper Exp $";
-
- /*
- * rpc_util.c, Utility routines for the RPC protocol compiler
---- glibc-2.3.2/sunrpc/svc.c 2002-08-07 22:08:23.000000000 -0400
-+++ glibc-2.3.2/sunrpc/svc.c 2003-09-19 22:37:07.000000000 -0400
-@@ -361,15 +361,17 @@
- void
- svc_getreqset (fd_set *readfds)
- {
-- register u_int32_t mask;
-- register u_int32_t *maskp;
-+ register fd_mask mask;
-+ register fd_mask *maskp;
- register int setsize;
- register int sock;
- register int bit;
-
- setsize = _rpc_dtablesize ();
-- maskp = (u_int32_t *) readfds->fds_bits;
-- for (sock = 0; sock < setsize; sock += 32)
-+ if (setsize > FD_SETSIZE)
-+ setsize = FD_SETSIZE;
-+ maskp = readfds->fds_bits;
-+ for (sock = 0; sock < setsize; sock += NFDBITS)
- for (mask = *maskp++; (bit = ffs (mask)); mask ^= (1 << (bit - 1)))
- INTUSE(svc_getreq_common) (sock + bit - 1);
- }
---- glibc-2.3.2/sunrpc/xdr.c 2002-02-25 05:03:26.000000000 -0500
-+++ glibc-2.3.2/sunrpc/xdr.c 2003-04-12 11:39:44.000000000 -0400
-@@ -704,6 +704,13 @@
- return FALSE;
- }
- nodesize = size + 1;
-+ if (nodesize == 0)
-+ {
-+ /* This means an overflow. It a bug in the caller which
-+ provided a too large maxsize but nevertheless catch it
-+ here. */
-+ return FALSE;
-+ }
-
- /*
- * now deal with the actual bytes
-@@ -711,10 +718,6 @@
- switch (xdrs->x_op)
- {
- case XDR_DECODE:
-- if (nodesize == 0)
-- {
-- return TRUE;
-- }
- if (sp == NULL)
- *cpp = sp = (char *) mem_alloc (nodesize);
- if (sp == NULL)
---- glibc-2.3.2/sysdeps/alpha/alphaev6/memchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev6/memchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
-@@ -190,3 +190,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/alpha/alphaev6/memcpy.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev6/memcpy.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
-
-@@ -252,3 +252,4 @@
- nop # E :
-
- END(memcpy)
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/alpha/alphaev6/memset.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev6/memset.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- This file is part of the GNU C Library.
-@@ -221,3 +221,4 @@
- ret $31,($26),1 # L0 :
-
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/alpha/alphaev67/strcat.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev67/strcat.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- This file is part of the GNU C Library.
-@@ -59,3 +59,4 @@
- jmp $31, __stxcpy # L0 :
-
- END(strcat)
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/alpha/alphaev67/strchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev67/strchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- This file is part of the GNU C Library.
-@@ -98,3 +98,4 @@
- END(strchr)
-
- weak_alias (strchr, index)
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/alpha/alphaev67/strlen.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev67/strlen.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- This file is part of the GNU C Library.
-@@ -58,3 +58,4 @@
- ret $31, ($26) # L0 :
-
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/alpha/alphaev67/strrchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/alphaev67/strrchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
- This file is part of the GNU C Library.
-
-@@ -114,3 +114,4 @@
- END(strrchr)
-
- weak_alias (strrchr, rindex)
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/alpha/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/alpha/bits/atomic.h 2003-06-30 19:21:38.000000000 -0400
-@@ -0,0 +1,369 @@
-+/* Copyright (C) 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#ifdef UP
-+# define __MB /* nothing */
-+#else
-+# define __MB " mb\n"
-+#endif
-+
-+
-+/* Compare and exchange. For all of the "xxx" routines, we expect a
-+ "__prev" and a "__cmp" variable to be provided by the enclosing scope,
-+ in which values are returned. */
-+
-+#define __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2) \
-+({ \
-+ unsigned long __tmp, __snew, __addr64; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ " andnot %[__addr8],7,%[__addr64]\n" \
-+ " insbl %[__new],%[__addr8],%[__snew]\n" \
-+ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
-+ " extbl %[__tmp],%[__addr8],%[__prev]\n" \
-+ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
-+ " beq %[__cmp],2f\n" \
-+ " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
-+ " or %[__snew],%[__tmp],%[__tmp]\n" \
-+ " stq_c %[__tmp],0(%[__addr64])\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ "2:" \
-+ : [__prev] "=&r" (__prev), \
-+ [__snew] "=&r" (__snew), \
-+ [__tmp] "=&r" (__tmp), \
-+ [__cmp] "=&r" (__cmp), \
-+ [__addr64] "=&r" (__addr64) \
-+ : [__addr8] "r" (mem), \
-+ [__old] "Ir" ((uint64_t)(uint8_t)(old)), \
-+ [__new] "r" (new) \
-+ : "memory"); \
-+})
-+
-+#define __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2) \
-+({ \
-+ unsigned long __tmp, __snew, __addr64; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ " andnot %[__addr16],7,%[__addr64]\n" \
-+ " inswl %[__new],%[__addr16],%[__snew]\n" \
-+ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
-+ " extwl %[__tmp],%[__addr16],%[__prev]\n" \
-+ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
-+ " beq %[__cmp],2f\n" \
-+ " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
-+ " or %[__snew],%[__tmp],%[__tmp]\n" \
-+ " stq_c %[__tmp],0(%[__addr64])\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ "2:" \
-+ : [__prev] "=&r" (__prev), \
-+ [__snew] "=&r" (__snew), \
-+ [__tmp] "=&r" (__tmp), \
-+ [__cmp] "=&r" (__cmp), \
-+ [__addr64] "=&r" (__addr64) \
-+ : [__addr16] "r" (mem), \
-+ [__old] "Ir" ((uint64_t)(uint16_t)(old)), \
-+ [__new] "r" (new) \
-+ : "memory"); \
-+})
-+
-+#define __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2) \
-+({ \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldl_l %[__prev],%[__mem]\n" \
-+ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
-+ " beq %[__cmp],2f\n" \
-+ " mov %[__new],%[__cmp]\n" \
-+ " stl_c %[__cmp],%[__mem]\n" \
-+ " beq %[__cmp],1b\n" \
-+ mb2 \
-+ "2:" \
-+ : [__prev] "=&r" (__prev), \
-+ [__cmp] "=&r" (__cmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__old] "Ir" ((uint64_t)(atomic32_t)(old)), \
-+ [__new] "Ir" (new) \
-+ : "memory"); \
-+})
-+
-+#define __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2) \
-+({ \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldq_l %[__prev],%[__mem]\n" \
-+ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
-+ " beq %[__cmp],2f\n" \
-+ " mov %[__new],%[__cmp]\n" \
-+ " stq_c %[__cmp],%[__mem]\n" \
-+ " beq %[__cmp],1b\n" \
-+ mb2 \
-+ "2:" \
-+ : [__prev] "=&r" (__prev), \
-+ [__cmp] "=&r" (__cmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__old] "Ir" (old), \
-+ [__new] "Ir" (new) \
-+ : "memory"); \
-+})
-+
-+/* For all "bool" routines, we return FALSE if exchange succesful. */
-+
-+#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
-+ !__cmp; })
-+
-+#define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
-+ !__cmp; })
-+
-+#define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
-+ !__cmp; })
-+
-+#define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
-+ !__cmp; })
-+
-+/* For all "val" routines, return the old value whether exchange
-+ successful or not. */
-+
-+#define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
-+ __prev; })
-+
-+#define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
-+ __prev; })
-+
-+#define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
-+ __prev; })
-+
-+#define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \
-+({ unsigned long __prev; int __cmp; \
-+ __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
-+ __prev; })
-+
-+/* Compare and exchange with "acquire" semantics, ie barrier after. */
-+
-+#define atomic_compare_and_exchange_bool_acq(mem, new, old) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \
-+ mem, new, old, "", __MB)
-+
-+#define atomic_compare_and_exchange_val_acq(mem, new, old) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
-+ mem, new, old, "", __MB)
-+
-+/* Compare and exchange with "release" semantics, ie barrier before. */
-+
-+#define atomic_compare_and_exchange_bool_rel(mem, new, old) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \
-+ mem, new, old, __MB, "")
-+
-+#define atomic_compare_and_exchange_val_rel(mem, new, old) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
-+ mem, new, old, __MB, "")
-+
-+
-+/* Atomically store value and return the previous value. */
-+
-+#define __arch_exchange_8_int(mem, value, mb1, mb2) \
-+({ \
-+ unsigned long __ret, __tmp, __addr64, __sval; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ " andnot %[__addr8],7,%[__addr64]\n" \
-+ " insbl %[__value],%[__addr8],%[__sval]\n" \
-+ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
-+ " extbl %[__tmp],%[__addr8],%[__ret]\n" \
-+ " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
-+ " or %[__sval],%[__tmp],%[__tmp]\n" \
-+ " stq_c %[__tmp],0(%[__addr64])\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__sval] "=&r" (__sval), \
-+ [__tmp] "=&r" (__tmp), \
-+ [__addr64] "=&r" (__addr64) \
-+ : [__addr8] "r" (mem), \
-+ [__value] "r" (value) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define __arch_exchange_16_int(mem, value, mb1, mb2) \
-+({ \
-+ unsigned long __ret, __tmp, __addr64, __sval; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ " andnot %[__addr16],7,%[__addr64]\n" \
-+ " inswl %[__value],%[__addr16],%[__sval]\n" \
-+ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
-+ " extwl %[__tmp],%[__addr16],%[__ret]\n" \
-+ " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
-+ " or %[__sval],%[__tmp],%[__tmp]\n" \
-+ " stq_c %[__tmp],0(%[__addr64])\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__sval] "=&r" (__sval), \
-+ [__tmp] "=&r" (__tmp), \
-+ [__addr64] "=&r" (__addr64) \
-+ : [__addr16] "r" (mem), \
-+ [__value] "r" (value) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define __arch_exchange_32_int(mem, value, mb1, mb2) \
-+({ \
-+ signed int __ret, __tmp; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldl_l %[__ret],%[__mem]\n" \
-+ " mov %[__val],%[__tmp]\n" \
-+ " stl_c %[__tmp],%[__mem]\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__tmp] "=&r" (__tmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__val] "Ir" (value) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define __arch_exchange_64_int(mem, value, mb1, mb2) \
-+({ \
-+ unsigned long __ret, __tmp; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldq_l %[__ret],%[__mem]\n" \
-+ " mov %[__val],%[__tmp]\n" \
-+ " stq_c %[__tmp],%[__mem]\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__tmp] "=&r" (__tmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__val] "Ir" (value) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define atomic_exchange_acq(mem, value) \
-+ __atomic_val_bysize (__arch_exchange, int, mem, value, "", __MB)
-+
-+#define atomic_exchange_rel(mem, value) \
-+ __atomic_val_bysize (__arch_exchange, int, mem, value, __MB, "")
-+
-+
-+/* Atomically add value and return the previous (unincremented) value. */
-+
-+#define __arch_exchange_and_add_8_int(mem, value, mb1, mb2) \
-+ ({ __builtin_trap (); 0; })
-+
-+#define __arch_exchange_and_add_16_int(mem, value, mb1, mb2) \
-+ ({ __builtin_trap (); 0; })
-+
-+#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \
-+({ \
-+ signed int __ret, __tmp; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldl_l %[__ret],%[__mem]\n" \
-+ " addl %[__ret],%[__val],%[__tmp]\n" \
-+ " stl_c %[__tmp],%[__mem]\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__tmp] "=&r" (__tmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__val] "Ir" ((signed int)(value)) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \
-+({ \
-+ unsigned long __ret, __tmp; \
-+ __asm__ __volatile__ ( \
-+ mb1 \
-+ "1: ldq_l %[__ret],%[__mem]\n" \
-+ " addq %[__ret],%[__val],%[__tmp]\n" \
-+ " stq_c %[__tmp],%[__mem]\n" \
-+ " beq %[__tmp],1b\n" \
-+ mb2 \
-+ : [__ret] "=&r" (__ret), \
-+ [__tmp] "=&r" (__tmp) \
-+ : [__mem] "m" (*(mem)), \
-+ [__val] "Ir" ((unsigned long)(value)) \
-+ : "memory"); \
-+ __ret; })
-+
-+/* ??? Barrier semantics for atomic_exchange_and_add appear to be
-+ undefined. Use full barrier for now, as that's safe. */
-+#define atomic_exchange_and_add(mem, value) \
-+ __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
-+
-+
-+/* ??? Blah, I'm lazy. Implement these later. Can do better than the
-+ compare-and-exchange loop provided by generic code.
-+
-+#define atomic_decrement_if_positive(mem)
-+#define atomic_bit_test_set(mem, bit)
-+
-+*/
-+
-+#ifndef UP
-+# define atomic_full_barrier() __asm ("mb" : : : "memory");
-+# define atomic_read_barrier() __asm ("mb" : : : "memory");
-+# define atomic_write_barrier() __asm ("wmb" : : : "memory");
-+#endif
---- glibc-2.3.2/sysdeps/alpha/bits/setjmp.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/bits/setjmp.h 2003-04-12 11:39:44.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Define the machine-dependent type `jmp_buf'. Alpha version.
-- Copyright (C) 1992, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1992, 1997, 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
-@@ -17,7 +17,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#ifndef _SETJMP_H
-+#ifndef _BITS_SETJMP_H
-+#define _BITS_SETJMP_H 1
-+
-+#if !defined _SETJMP_H && !defined _PTHREAD_H
- # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
- #endif
-
-@@ -80,3 +83,5 @@
- #define _JMPBUF_UNWINDS(_jmpbuf, _address) \
- ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
- #endif
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/alpha/dl-machine.h 2003-02-14 01:01:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/alpha/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
-@@ -303,6 +303,7 @@
- .globl _start \n\
- .ent _start \n\
- _start: \n\
-+ .frame $31,0,$31,0 \n\
- br $gp, 0f \n\
- 0: ldgp $gp, 0($gp) \n\
- .prologue 0 \n\
-@@ -314,7 +315,7 @@
- .globl _dl_start_user \n\
- .ent _dl_start_user \n\
- _dl_start_user: \n\
-- .frame $30,0,$31,0 \n\
-+ .frame $31,0,$31,0 \n\
- .prologue 0 \n\
- /* Save the user entry point address in s0. */ \n\
- mov $0, $9 \n\
-@@ -511,8 +512,9 @@
- const Elf64_Rela *reloc,
- const Elf64_Sym *sym,
- const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC && !defined SHARED
-@@ -537,15 +539,14 @@
- {
- /* XXX Make some timings. Maybe it's preferable to test for
- unaligned access and only do it the complex way if necessary. */
-- void *reloc_addr_1 = reloc_addr;
- Elf64_Addr reloc_addr_val;
-
- /* Load value without causing unaligned trap. */
-- memcpy (&reloc_addr_val, reloc_addr_1, 8);
-+ memcpy (&reloc_addr_val, reloc_addr_arg, 8);
- reloc_addr_val += map->l_addr;
-
- /* Store value without causing unaligned trap. */
-- memcpy (reloc_addr_1, &reloc_addr_val, 8);
-+ memcpy (reloc_addr_arg, &reloc_addr_val, 8);
- }
- }
- else
-@@ -597,10 +598,8 @@
- #ifndef RTLD_BOOTSTRAP
- else if (r_type == R_ALPHA_REFQUAD)
- {
-- void *reloc_addr_1 = reloc_addr;
--
- /* Store value without causing unaligned trap. */
-- memcpy (reloc_addr_1, &sym_value, 8);
-+ memcpy (reloc_addr_arg, &sym_value, 8);
- }
- #endif
- #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-@@ -648,19 +647,18 @@
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-- /* XXX Make some timings. Maybe it's preverable to test for
-+ /* XXX Make some timings. Maybe it's preferable to test for
- unaligned access and only do it the complex way if necessary. */
-- void *reloc_addr_1 = reloc_addr;
- Elf64_Addr reloc_addr_val;
-
- /* Load value without causing unaligned trap. */
-- memcpy (&reloc_addr_val, reloc_addr_1, 8);
-+ memcpy (&reloc_addr_val, reloc_addr_arg, 8);
- reloc_addr_val += l_addr;
-
- /* Store value without causing unaligned trap. */
-- memcpy (reloc_addr_1, &reloc_addr_val, 8);
-+ memcpy (reloc_addr_arg, &reloc_addr_val, 8);
- }
-
- static inline void
---- glibc-2.3.2/sysdeps/alpha/elf/initfini.c 2002-02-08 20:58:04.000000000 -0500
-+++ glibc-2.3.2/sysdeps/alpha/elf/initfini.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Special .init and .fini section support for Alpha.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -45,21 +45,19 @@
- /*@_init_PROLOG_BEGINS*/ \n\
- .section .init, \"ax\", @progbits \n\
- .globl _init \n\
-- .ent _init \n\
-+ .type _init, @function \n\
-+ .usepv _init, std \n\
- _init: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- lda $27, __gmon_start__ \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
-- .prologue 1 \n\
- beq $27, 1f \n\
- jsr $26, ($27), __gmon_start__ \n\
- ldq $29, 8($30) \n\
- .align 3 \n\
- 1: \n\
-- .end _init \n\
-- .size _init, 0 \n\
- /*@_init_PROLOG_ENDS*/ \n\
- \n\
- /*@_init_EPILOG_BEGINS*/ \n\
-@@ -73,16 +71,14 @@
- /*@_fini_PROLOG_BEGINS*/ \n\
- .section .fini, \"ax\", @progbits \n\
- .globl _fini \n\
-- .ent _fini \n\
-+ .type _fini,@function \n\
-+ .usepv _fini,std \n\
- _fini: \n\
- ldgp $29, 0($27) \n\
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
-- .prologue 1 \n\
- .align 3 \n\
-- .end _fini \n\
-- .size _fini, 0 \n\
- /*@_fini_PROLOG_ENDS*/ \n\
- \n\
- /*@_fini_EPILOG_BEGINS*/ \n\
---- glibc-2.3.2/sysdeps/alpha/elf/start.S 2002-12-09 22:41:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/alpha/elf/start.S 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Startup code for Alpha/ELF.
-- Copyright (C) 1993,1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>
-
-@@ -26,8 +27,7 @@
- .ent _start, 0
- .type _start,@function
- _start:
-- .frame fp, 0, zero
-- mov zero, fp
-+ .frame $31, 0, $31
- br gp, 1f
- 1: ldgp gp, 0(gp)
- subq sp, 16, sp
-@@ -65,6 +65,5 @@
- .data
- .globl __data_start
- __data_start:
-- .long 0
- .weak data_start
- data_start = __data_start
---- glibc-2.3.2/sysdeps/alpha/fpu/bits/mathdef.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/fpu/bits/mathdef.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -33,9 +33,6 @@
- typedef float float_t;
- typedef double double_t;
-
--/* Signal that types stay as they were declared. */
--# define FLT_EVAL_METHOD 0
--
- /* Define `INFINITY' as value of type `float'. */
- # define INFINITY HUGE_VALF
-
-@@ -45,9 +42,6 @@
- typedef double float_t;
- typedef double double_t;
-
--/* Signal that both types are `double'. */
--# define FLT_EVAL_METHOD 1
--
- /* Define `INFINITY' as value of type `float'. */
- # define INFINITY HUGE_VALF
-
---- glibc-2.3.2/sysdeps/alpha/fpu/bits/mathinline.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/fpu/bits/mathinline.h 2003-08-21 08:37:08.000000000 -0400
-@@ -58,7 +58,8 @@
- !isunordered(__x, __y) && __x != __y; }))
- #endif /* ISO C99 */
-
--#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-+#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \
-+ && defined __OPTIMIZE__
-
- #define __inline_copysign(NAME, TYPE) \
- __MATH_INLINE TYPE \
-@@ -176,6 +177,19 @@
- return __x < __y ? 0.0 : __x - __y;
- }
-
-+/* Test for negative number. Used in the signbit() macro. */
-+__MATH_INLINE int __signbitf (float __x) __THROW
-+{
-+ __extension__ union { float __f; int __i; } __u = { __f: __x };
-+ return __u.__i < 0;
-+}
-+
-+__MATH_INLINE int __signbit (double __x) __THROW
-+{
-+ __extension__ union { double __d; long __i; } __u = { __d: __x };
-+ return __u.__i < 0;
-+}
-+
- #endif /* C99 */
-
- #endif /* __NO_MATH_INLINES */
---- glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps 2002-08-19 13:57:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps 2003-04-12 11:39:44.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/alpha/memchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/memchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
-
-@@ -173,3 +173,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/alpha/memset.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/memset.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- This file is part of the GNU C Library.
-
-@@ -134,3 +134,4 @@
- $done: ret
-
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/alpha/setjmp.S 2002-12-31 14:13:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/alpha/setjmp.S 2003-08-21 08:37:08.000000000 -0400
-@@ -74,6 +74,7 @@
-
- ENTRY(_setjmp)
- ldgp gp, 0(pv)
-+ .prologue 1
- mov 0, a1
- br $sigsetjmp_local
- END(_setjmp)
-@@ -81,6 +82,7 @@
-
- ENTRY(setjmp)
- ldgp gp, 0(pv)
-+ .prologue 1
- mov 1, a1
- br $sigsetjmp_local
- END(setjmp)
---- glibc-2.3.2/sysdeps/alpha/strcat.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strcat.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
-@@ -69,3 +69,4 @@
- jmp $31, __stxcpy
-
- END(strcat)
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/alpha/strchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu)
-
-@@ -92,3 +92,4 @@
- END(strchr)
-
- weak_alias (strchr, index)
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/alpha/strcmp.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strcmp.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- This file is part of the GNU C Library.
-
-@@ -192,3 +192,4 @@
- ret # e1 :
-
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/alpha/strcpy.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strcpy.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@tamu.edu>, 1996.
-
-@@ -39,3 +39,4 @@
- jmp $31, __stxcpy # do the copy
-
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/alpha/strlen.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strlen.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by David Mosberger (davidm@cs.arizona.edu).
- This file is part of the GNU C Library.
-
-@@ -74,3 +74,4 @@
- ret
-
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/alpha/strncmp.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strncmp.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- This file is part of the GNU C Library.
-
-@@ -221,3 +221,4 @@
- ret
-
- END(strncmp)
-+libc_hidden_builtin_def (strncmp)
---- glibc-2.3.2/sysdeps/alpha/strncpy.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strncpy.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@tamu.edu)
- This file is part of the GNU C Library.
-
-@@ -85,3 +85,4 @@
- ret # .. e1 :
-
- END(strncpy)
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/alpha/strrchr.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/alpha/strrchr.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 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
-@@ -108,3 +108,4 @@
- END(strrchr)
-
- weak_alias (strrchr, rindex)
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/arm/dl-machine.h 2002-11-15 20:50:42.000000000 -0500
-+++ glibc-2.3.2/sysdeps/arm/dl-machine.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Machine-dependent ELF dynamic relocation inline functions. ARM version.
-- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 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
-@@ -122,22 +123,10 @@
- return lazy;
- }
-
--/* This code is used in dl-runtime.c to call the `fixup' function
-- and then redirect to the address it returns. */
-- // macro for handling PIC situation....
--#ifdef PIC
--#define CALL_ROUTINE(x) "\
-- ldr sl,0f\n\
-- add sl, pc, sl\n\
--1: ldr r2, 2f\n\
-- mov lr, pc\n\
-- add pc, sl, r2\n\
-- b 3f\n\
--0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\
--2: .word " #x "(GOTOFF)\n\
--3: "
-+#if defined(__THUMB_INTERWORK__)
-+#define BX(x) "bx\t" #x
- #else
--#define CALL_ROUTINE(x) " bl " #x
-+#define BX(x) "mov\tpc, " #x
- #endif
-
- #ifndef PROF
-@@ -152,8 +141,11 @@
- @ ip contains &GOT[n+3] (pointer to function)\n\
- @ lr points to &GOT[2]\n\
- \n\
-- @ save almost everything; lr is already on the stack\n\
-- stmdb sp!,{r0-r3,sl,fp}\n\
-+ @ stack arguments\n\
-+ stmdb sp!,{r0-r3}\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
- \n\
- @ prepare to call fixup()\n\
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-@@ -161,20 +153,17 @@
- sub r1, r1, #4\n\
- add r1, r1, r1\n\
- \n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
- @ call fixup routine\n\
-- " CALL_ROUTINE(fixup) "\n\
-+ bl fixup\n\
- \n\
- @ save the return\n\
- mov ip, r0\n\
- \n\
-- @ restore the stack\n\
-- ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+ @ get arguments and return address back\n\
-+ ldmia sp!, {r0-r3,lr}\n\
- \n\
- @ jump to the newly found address\n\
-- mov pc, ip\n\
-+ " BX(ip) "\n\
- \n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- \n\
-@@ -182,8 +171,11 @@
- .type _dl_runtime_profile, #function\n\
- .align 2\n\
- _dl_runtime_profile:\n\
-- @ save almost everything; lr is already on the stack\n\
-- stmdb sp!,{r0-r3,sl,fp}\n\
-+ @ stack arguments\n\
-+ stmdb sp!, {r0-r3}\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
- \n\
- @ prepare to call fixup()\n\
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-@@ -191,20 +183,17 @@
- sub r1, r1, #4\n\
- add r1, r1, r1\n\
- \n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
- @ call profiling fixup routine\n\
-- " CALL_ROUTINE(profile_fixup) "\n\
-+ bl profile_fixup\n\
- \n\
- @ save the return\n\
- mov ip, r0\n\
- \n\
-- @ restore the stack\n\
-- ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+ @ get arguments and return address back\n\
-+ ldmia sp!, {r0-r3,lr}\n\
- \n\
- @ jump to the newly found address\n\
-- mov pc, ip\n\
-+ " BX(ip) "\n\
- \n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- .previous\n\
-@@ -224,8 +213,11 @@
- @ ip contains &GOT[n+3] (pointer to function)\n\
- @ lr points to &GOT[2]\n\
- \n\
-- @ save almost everything; return add is already on the stack\n\
-- stmdb sp!,{r0-r3,sl,fp}\n\
-+ @ stack arguments\n\
-+ stmdb sp!, {r0-r3}\n\
-+\n\
-+ @ get pointer to linker struct\n\
-+ ldr r0, [lr, #-4]\n\
- \n\
- @ prepare to call fixup()\n\
- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-@@ -233,20 +225,17 @@
- sub r1, r1, #4\n\
- add r1, r1, r1\n\
- \n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
- @ call profiling fixup routine\n\
-- " CALL_ROUTINE(fixup) "\n\
-+ bl fixup\n\
- \n\
- @ save the return\n\
- mov ip, r0\n\
- \n\
-- @ restore the stack\n\
-- ldmia sp!,{r0-r3,sl,fp,lr}\n\
-+ @ get arguments and return address back\n\
-+ ldmia sp!, {r0-r3,lr}\n\
- \n\
- @ jump to the newly found address\n\
-- mov pc, ip\n\
-+ " BX(ip) "\n\
- \n\
- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
- .previous\n\
-@@ -419,8 +408,9 @@
- static inline void
- elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -470,8 +460,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- case R_ARM_GLOB_DAT:
- case R_ARM_JUMP_SLOT:
-@@ -544,8 +534,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
-@@ -581,8 +572,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- # endif /* !RESOLVE_CONFLICT_FIND_MAP */
- case R_ARM_GLOB_DAT:
-@@ -623,16 +614,18 @@
-
- static inline void
- elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr += l_addr;
- }
-
- # ifndef RTLD_BOOTSTRAP
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
- # endif
---- glibc-2.3.2/sysdeps/arm/libm-test-ulps 2001-04-17 14:55:56.000000000 -0400
-+++ glibc-2.3.2/sysdeps/arm/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
-@@ -134,7 +134,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-@@ -145,10 +145,10 @@
- idouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-@@ -187,7 +187,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -280,7 +280,7 @@
- ifloat: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-@@ -307,7 +307,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-@@ -320,7 +320,7 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -509,12 +509,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -604,7 +604,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/arm/memset.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/arm/memset.S 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>
-
-@@ -22,46 +22,46 @@
- /* void *memset (dstpp, c, len) */
-
- ENTRY(memset)
-- mov a4, a1
-- cmp a3, $8 @ at least 8 bytes to do?
-- blt 2f
-- orr a2, a2, a2, lsl $8
-- orr a2, a2, a2, lsl $16
-+ mov r3, r0
-+ cmp r2, #8
-+ bcc 2f @ less than 8 bytes to move
-+
- 1:
-- tst a4, $3 @ aligned yet?
-- strneb a2, [a4], $1
-- subne a3, a3, $1
-+ tst r3, #3 @ aligned yet?
-+ strneb r1, [r3], #1
-+ subne r2, r2, #1
- bne 1b
-- mov ip, a2
-+
-+ orr r1, r1, r1, lsl $8
-+ orr r1, r1, r1, lsl $16
-+
- 1:
-- cmp a3, $8 @ 8 bytes still to do?
-- blt 2f
-- stmia a4!, {a2, ip}
-- sub a3, a3, $8
-- cmp a3, $8 @ 8 bytes still to do?
-- blt 2f
-- stmia a4!, {a2, ip}
-- sub a3, a3, $8
-- cmp a3, $8 @ 8 bytes still to do?
-- blt 2f
-- stmia a4!, {a2, ip}
-- sub a3, a3, $8
-- cmp a3, $8 @ 8 bytes still to do?
-- stmgeia a4!, {a2, ip}
-- subge a3, a3, $8
-- bge 1b
-+ subs r2, r2, #8
-+ strcs r1, [r3], #4 @ store up to 32 bytes per loop iteration
-+ strcs r1, [r3], #4
-+ subcss r2, r2, #8
-+ strcs r1, [r3], #4
-+ strcs r1, [r3], #4
-+ subcss r2, r2, #8
-+ strcs r1, [r3], #4
-+ strcs r1, [r3], #4
-+ subcss r2, r2, #8
-+ strcs r1, [r3], #4
-+ strcs r1, [r3], #4
-+ bcs 1b
-+
-+ and r2, r2, #7
- 2:
-- movs a3, a3 @ anything left?
-- RETINSTR(moveq,pc,lr) @ nope
-- rsb a3, a3, $7
-- add pc, pc, a3, lsl $2
-- mov r0, r0
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- strb a2, [a4], $1
-- RETINSTR(mov,pc,lr)
-+ subs r2, r2, #1 @ store up to 4 bytes per loop iteration
-+ strcsb r1, [r3], #1
-+ subcss r2, r2, #1
-+ strcsb r1, [r3], #1
-+ subcss r2, r2, #1
-+ strcsb r1, [r3], #1
-+ subcss r2, r2, #1
-+ strcsb r1, [r3], #1
-+ bcs 2b
-+
-+ DO_RET(lr)
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/arm/strlen.S 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/arm/strlen.S 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Code contributed by Matthew Wilcox <willy@odie.barnet.ac.uk>
-
-@@ -61,3 +61,4 @@
- addne r0, r0, $1 @ must be zero)
- RETINSTR(mov,pc,lr)
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/arm/sysdep.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/arm/sysdep.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Assembler macros for ARM.
-- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 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
-@@ -52,11 +52,20 @@
- ldm##cond base,reglist
- #define RETINSTR(instr, regs...)\
- instr regs
-+#ifdef __THUMB_INTERWORK__
-+#define DO_RET(_reg) \
-+ bx _reg
-+#else
-+#define DO_RET(_reg) \
-+ mov pc, _reg
-+#endif
- #else /* APCS-26 */
- #define LOADREGS(cond, base, reglist...)\
- ldm##cond base,reglist^
- #define RETINSTR(instr, regs...)\
- instr##s regs
-+#define DO_RET(_reg) \
-+ movs pc, _reg
- #endif
-
- /* Define an entry point visible from C. */
-@@ -76,7 +85,7 @@
- #define CALL_MCOUNT \
- str lr,[sp, #-4]! ; \
- bl PLTJMP(mcount) ; \
-- ldr lr, [sp], #4
-+ ldr lr, [sp], #4 ;
- #else
- #define CALL_MCOUNT /* Do nothing. */
- #endif
---- glibc-2.3.2/sysdeps/cris/dl-machine.h 2002-08-28 17:22:52.000000000 -0400
-+++ glibc-2.3.2/sysdeps/cris/dl-machine.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation inline functions. CRIS version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -228,12 +228,20 @@
- .size _dl_start_user, . - _dl_start_user\n\
- .previous");
-
--/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
-- PLT entries should not be allowed to define the value.
-- ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
-- of the main executable's symbols, as for a COPY reloc. */
--#define elf_machine_type_class(type) \
-- ((((type) == R_CRIS_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT) \
-+/* The union of reloc-type-classes where the reloc TYPE is a member.
-+
-+ TYPE is in the class ELF_RTYPE_CLASS_PLT if it can describe a
-+ relocation for a PLT entry, that is, for which a PLT entry should not
-+ be allowed to define the value. The GNU linker for CRIS can merge a
-+ .got.plt entry (R_CRIS_JUMP_SLOT) with a .got entry (R_CRIS_GLOB_DAT),
-+ so we need to match both these reloc types.
-+
-+ TYPE is in the class ELF_RTYPE_CLASS_NOCOPY if it should not be allowed
-+ to resolve to one of the main executable's symbols, as for a COPY
-+ reloc. */
-+#define elf_machine_type_class(type) \
-+ ((((((type) == R_CRIS_JUMP_SLOT)) \
-+ || ((type) == R_CRIS_GLOB_DAT)) * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_CRIS_COPY) * ELF_RTYPE_CLASS_COPY))
-
- /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
-@@ -280,8 +288,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (__builtin_expect (r_type == R_CRIS_RELATIVE, 0))
-@@ -322,8 +331,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
-
- case R_CRIS_32:
-@@ -364,8 +373,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/generic/backtracesymsfd.c 2001-07-07 15:21:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/backtracesymsfd.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Write formatted list with names for addresses in backtrace to a file.
-- Copyright (C) 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -23,11 +23,12 @@
- #include <sys/uio.h>
-
- #include <stdio-common/_itoa.h>
-+#include <not-cancel.h>
-
- #if __ELF_NATIVE_CLASS == 32
- # define WORD_WIDTH 8
- #else
--/* We assyme 64bits. */
-+/* We assume 64bits. */
- # define WORD_WIDTH 16
- #endif
-
-@@ -55,7 +56,8 @@
- iov[2].iov_base = (void *) "]\n";
- iov[2].iov_len = 2;
-
-- __writev (fd, iov, 3);
-+ /* We prefer to use the non-cancelable interface if it is available. */
-+ writev_not_cancel_no_status (fd, iov, 3);
- }
- }
- weak_alias (__backtrace_symbols_fd, backtrace_symbols_fd)
---- glibc-2.3.2/sysdeps/generic/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/bits/atomic.h 2003-03-22 18:00:14.000000000 -0500
-@@ -0,0 +1,43 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 _BITS_ATOMIC_H
-+#define _BITS_ATOMIC_H 1
-+
-+/* We have by default no support for atomic operations. So define
-+ them non-atomic. If this is a problem somebody will have to come
-+ up with real definitions. */
-+
-+/* The only basic operation needed is compare and exchange. */
-+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __gmemp = (mem); \
-+ __typeof (*mem) __gret = *__gmemp; \
-+ __typeof (*mem) __gnewval = (newval); \
-+ \
-+ if (__gret == (oldval)) \
-+ *__gmemp = __gnewval; \
-+ __gret; })
-+
-+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __gmemp = (mem); \
-+ __typeof (*mem) __gnewval = (newval); \
-+ \
-+ *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
-+
-+#endif /* bits/atomic.h */
---- glibc-2.3.2/sysdeps/generic/bits/confname.h 2003-02-23 20:38:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/bits/confname.h 2003-03-15 15:02:16.000000000 -0500
-@@ -62,8 +62,10 @@
- #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
- _PC_ALLOC_SIZE_MIN,
- #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
-- _PC_SYMLINK_MAX
-+ _PC_SYMLINK_MAX,
- #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
-+ _PC_2_SYMLINKS
-+#define _PC_2_SYMLINKS _PC_2_SYMLINKS
- };
-
- /* Values for the argument to `sysconf'. */
---- glibc-2.3.2/sysdeps/generic/bits/in.h 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/bits/in.h 2003-08-21 08:37:08.000000000 -0400
-@@ -64,8 +64,8 @@
- /* IPV6 socket options. */
- #define IPV6_ADDRFORM 1
- #define IPV6_RXINFO 2
--#define IPV6_RXHOPOPTS 3
--#define IPV6_RXDSTOPTS 4
-+#define IPV6_HOPOPTS 3
-+#define IPV6_DSTOPTS 4
- #define IPV6_RTHDR 5
- #define IPV6_PKTOPTIONS 6
- #define IPV6_CHECKSUM 7
-@@ -85,6 +85,8 @@
- /* Obsolete synonyms for the above. */
- #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
- #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
-+#define IPV6_RXHOPOPTS IPV6_HOPOPTS
-+#define IPV6_RXDSTOPTS IPV6_DSTOPTS
-
- /* Routing header options for IPv6. */
- #define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
---- glibc-2.3.2/sysdeps/generic/bits/libc-lock.h 2002-12-06 05:48:04.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/bits/libc-lock.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* libc-internal interface for mutex locks. Stub version.
-- Copyright (C) 1996,97,99,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1996,97,99,2000-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
-@@ -40,6 +40,7 @@
- /* Define an initialized recursive lock variable NAME with storage
- class CLASS. */
- #define __libc_lock_define_initialized_recursive(CLASS,NAME)
-+#define __rtld_lock_define_initialized_recursive(CLASS,NAME)
-
- /* Initialize the named lock variable, leaving it in a consistent, unlocked
- state. */
-@@ -116,6 +117,8 @@
- if ((DOIT) && __save_FCT != 0) \
- (*__save_FCT)(__save_ARG); \
-
-+#define __libc_cleanup_push(fct, arg) __libc_cleanup_region_start (1, fct, arg)
-+#define __libc_cleanup_pop(execute) __libc_cleanup_region_end (execute)
-
- /* We need portable names for some of the functions. */
- #define __libc_mutex_unlock
---- glibc-2.3.2/sysdeps/generic/bits/sched.h 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/bits/sched.h 2003-05-12 12:13:06.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Definitions of constants and data structure for POSIX 1003.1b-1993
- scheduling interface.
-- Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2001, 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
-@@ -33,3 +33,39 @@
- {
- int __sched_priority;
- };
-+
-+
-+#if defined _SCHED_H && !defined __cpu_set_t_defined
-+# define __cpu_set_t_defined
-+/* Size definition for CPU sets. */
-+# define __CPU_SETSIZE 1024
-+# define __NCPUBITS (8 * sizeof (__cpu_mask))
-+
-+/* Type for array elements in 'cpu_set'. */
-+typedef unsigned long int __cpu_mask;
-+
-+/* Basic access functions. */
-+# define __CPUELT(cpu) ((cpu) / __NCPUBITS)
-+# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
-+
-+/* Data structure to describe CPU mask. */
-+typedef struct
-+{
-+ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
-+} cpu_set_t;
-+
-+/* Access functions for CPU masks. */
-+# define __CPU_ZERO(cpusetp) \
-+ do { \
-+ unsigned int __i; \
-+ cpu_set *__arr = (cpusetp); \
-+ for (__i = 0; __i < sizeof (cpu_set) / sizeof (__cpu_mask); ++__i) \
-+ __arr->__bits[__i] = 0; \
-+ } while (0)
-+# define __CPU_SET(cpu, cpusetp) \
-+ ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
-+# define __CPU_CLR(cpu, cpusetp) \
-+ ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
-+# define __CPU_ISSET(cpu, cpusetp) \
-+ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
-+#endif
---- glibc-2.3.2/sysdeps/generic/bits/stdio-lock.h 2002-12-07 20:09:29.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/bits/stdio-lock.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Thread package specific definitions of stream lock type. Generic version.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -45,5 +45,14 @@
- #define _IO_cleanup_region_end(_doit) \
- __libc_cleanup_region_end (_doit)
-
-+#if defined _LIBC && !defined NOT_IN_libc
-+# define _IO_acquire_lock(_fp) \
-+ _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
-+ _IO_flockfile (_fp)
-+
-+# define _IO_release_lock(_fp) \
-+ _IO_funlockfile (_fp); \
-+ _IO_cleanup_region_end (0)
-+#endif
-
- #endif /* bits/stdio-lock.h */
---- glibc-2.3.2/sysdeps/generic/bits/time.h 2002-10-23 02:21:18.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/bits/time.h 2003-03-15 15:02:16.000000000 -0500
-@@ -1,5 +1,5 @@
- /* System-dependent timing definitions. Generic version.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999-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
-@@ -44,6 +44,8 @@
- # ifdef __USE_POSIX199309
- /* Identifier for system-wide realtime clock. */
- # define CLOCK_REALTIME 0
-+/* Monotonic system-wide clock. */
-+# define CLOCK_MONOTONIC 1
- /* High-resolution timer from the CPU. */
- # define CLOCK_PROCESS_CPUTIME_ID 2
- /* Thread-specific CPU-time clock. */
---- glibc-2.3.2/sysdeps/generic/bits/types.h 2002-10-25 04:02:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/bits/types.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* bits/types.h -- definitions of __*_t types underlying *_t types.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -51,14 +51,13 @@
- __extension__ typedef unsigned long long int __uint64_t;
- #endif
-
--/* quad_t is also 64 bits, but is traditionally defined as `long long'
-- even when `long' is also 64 bits. */
--#ifdef __GLIBC_HAVE_LONG_LONG
--__extension__ typedef long long int __quad_t;
--__extension__ typedef unsigned long long int __u_quad_t;
--#elif __WORDSIZE == 64
-+/* quad_t is also 64 bits. */
-+#if __WORDSIZE == 64
- typedef long int __quad_t;
- typedef unsigned long int __u_quad_t;
-+#elif defined __GLIBC_HAVE_LONG_LONG
-+__extension__ typedef long long int __quad_t;
-+__extension__ typedef unsigned long long int __u_quad_t;
- #else
- typedef struct
- {
-@@ -106,9 +105,9 @@
- #define __U32_TYPE unsigned int
- #define __SLONGWORD_TYPE long int
- #define __ULONGWORD_TYPE unsigned long int
--#define __SQUAD_TYPE long long int
--#define __UQUAD_TYPE unsigned long long int
- #if __WORDSIZE == 32
-+# define __SQUAD_TYPE long long int
-+# define __UQUAD_TYPE unsigned long long int
- # define __SWORD_TYPE int
- # define __UWORD_TYPE unsigned int
- # define __SLONG32_TYPE long int
-@@ -116,6 +115,8 @@
- # define __S64_TYPE __quad_t
- # define __U64_TYPE __u_quad_t
- #elif __WORDSIZE == 64
-+# define __SQUAD_TYPE long int
-+# define __UQUAD_TYPE unsigned long int
- # define __SWORD_TYPE long int
- # define __UWORD_TYPE unsigned long int
- # define __SLONG32_TYPE int
-@@ -127,66 +128,72 @@
- #endif
- #include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
-
--
--typedef __DEV_T_TYPE __dev_t; /* Type of device numbers. */
--typedef __UID_T_TYPE __uid_t; /* Type of user identifications. */
--typedef __GID_T_TYPE __gid_t; /* Type of group identifications. */
--typedef __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
--typedef __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS). */
--typedef __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
--typedef __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
--typedef __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
--typedef __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
--typedef __PID_T_TYPE __pid_t; /* Type of process identifications. */
--typedef __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
--typedef __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
--typedef __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
--typedef __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
--typedef __ID_T_TYPE __id_t; /* General type for IDs. */
--typedef __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
--typedef __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
--typedef __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
--
--typedef __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
--typedef __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
--typedef __KEY_T_TYPE __key_t; /* Type of an IPC key */
-+/* We want __extension__ before typedef's that use nonstandard base types
-+ such as `long long' in C89 mode. */
-+#define __STD_TYPE __extension__ typedef
-+
-+
-+__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
-+__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
-+__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
-+__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
-+__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
-+__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
-+__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
-+__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
-+__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
-+__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
-+__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
-+__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
-+__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
-+__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
-+__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
-+__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
-+__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
-+__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
-+
-+__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
-+__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
-+__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
-
- /* Clock ID used in clock and timer functions. */
--typedef __CLOCKID_T_TYPE __clockid_t;
-+__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
-
- /* Timer ID returned by `timer_create'. */
--typedef __TIMER_T_TYPE __timer_t;
-+__STD_TYPE __TIMER_T_TYPE __timer_t;
-
- /* Type to represent block size. */
--typedef __BLKSIZE_T_TYPE __blksize_t;
-+__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
-
- /* Types from the Large File Support interface. */
-
- /* Type to count number of disk blocks. */
--typedef __BLKCNT_T_TYPE __blkcnt_t;
--typedef __BLKCNT64_T_TYPE __blkcnt64_t;
-+__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
-+__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
-
- /* Type to count file system blocks. */
--typedef __FSBLKCNT_T_TYPE __fsblkcnt_t;
--typedef __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
-+__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
-+__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
-
- /* Type to count file system nodes. */
--typedef __FSFILCNT_T_TYPE __fsfilcnt_t;
--typedef __FSFILCNT64_T_TYPE __fsfilcnt64_t;
-+__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
-+__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
-
-+__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
-
- /* These few don't really vary by system, they always correspond
- to one of the other defined types. */
--typedef __SWORD_TYPE __ssize_t; /* Type of a byte count, or error. */
- typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
- typedef __quad_t *__qaddr_t;
- typedef char *__caddr_t;
-
- /* Duplicates info from stdint.h but this is used in unistd.h. */
--typedef __SWORD_TYPE __intptr_t;
-+__STD_TYPE __SWORD_TYPE __intptr_t;
-
- /* Duplicate info from sys/socket.h. */
--typedef __U32_TYPE __socklen_t;
-+__STD_TYPE __U32_TYPE __socklen_t;
-+
-
-+#undef __STD_TYPE
-
- #endif /* bits/types.h */
---- glibc-2.3.2/sysdeps/generic/bits/typesizes.h 2002-10-23 19:48:45.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/bits/typesizes.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Generic version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,9 +54,10 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-
- /* Number of descriptors that can fit in an `fd_set'. */
- #define __FD_SETSIZE 1024
---- glibc-2.3.2/sysdeps/generic/bp-thunks.h 2003-01-15 19:46:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/bp-thunks.h 2003-05-12 12:13:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Bounded-pointer syscall thunk support.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Greg McGary <greg@mcgary.org>
-
-@@ -21,6 +21,8 @@
- #ifndef _bpthunks_h_
- #define _bpthunks_h_
-
-+#ifndef __ASSEMBLER__
-+
- /* This header is included by the syscall BP thunks defined in
- sysd-syscalls, as created by sysdeps/unix/make-syscalls.sh. It
- includes all headers that contain prototype declarations for system
-@@ -63,4 +65,6 @@
- #include <sys/utsname.h>
- #include <sys/wait.h>
-
-+#endif /* Not __ASSEMBLER__. */
-+
- #endif /* _bpthunks_h_ */
---- glibc-2.3.2/sysdeps/generic/check_fds.c 2002-04-14 14:27:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/check_fds.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -32,6 +32,7 @@
- #endif
-
- #include <device-nrs.h>
-+#include <not-cancel.h>
-
-
- /* Should other OSes (e.g., Hurd) have different versions which can
-@@ -39,6 +40,7 @@
- static void
- check_one_fd (int fd, int mode)
- {
-+ /* Note that fcntl() with this parameter is not a cancellation point. */
- if (__builtin_expect (__libc_fcntl (fd, F_GETFD), 0) == -1
- && errno == EBADF)
- {
-@@ -47,7 +49,7 @@
- /* Something is wrong with this descriptor, it's probably not
- opened. Open /dev/null so that the SUID program we are
- about to start does not accidently use this descriptor. */
-- int nullfd = __libc_open (_PATH_DEVNULL, mode);
-+ int nullfd = open_not_cancel (_PATH_DEVNULL, mode, 0);
- /* We are very paranoid here. With all means we try to ensure
- that we are actually opening the /dev/null device and nothing
- else.
---- glibc-2.3.2/sysdeps/generic/check_pf.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/check_pf.c 2003-06-10 04:52:14.000000000 -0400
-@@ -0,0 +1,50 @@
-+/* Determine protocol families for which interfaces exist. Generic version.
-+ Copyright (C) 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 <ifaddrs.h>
-+#include <netdb.h>
-+
-+
-+void
-+attribute_hidden
-+__check_pf (bool *seen_ipv4, bool *seen_ipv6)
-+{
-+ /* Get the interface list via getifaddrs. */
-+ struct ifaddrs *ifa = NULL;
-+ if (getifaddrs (&ifa) != 0)
-+ {
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+ return;
-+ }
-+
-+ *seen_ipv4 = false;
-+ *seen_ipv6 = false;
-+
-+ struct ifaddrs *runp;
-+ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-+ if (runp->ifa_addr->sa_family == PF_INET)
-+ *seen_ipv4 = true;
-+ else if (runp->ifa_addr->sa_family == PF_INET6)
-+ *seen_ipv6 = true;
-+
-+ (void) freeifaddrs (ifa);
-+}
---- glibc-2.3.2/sysdeps/generic/dl-cache.c 2002-12-28 15:38:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-cache.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-- Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -133,6 +133,45 @@
- while (0)
-
-
-+int
-+internal_function
-+_dl_cache_libcmp (const char *p1, const char *p2)
-+{
-+ while (*p1 != '\0')
-+ {
-+ if (*p1 >= '0' && *p1 <= '9')
-+ {
-+ if (*p2 >= '0' && *p2 <= '9')
-+ {
-+ /* Must compare this numerically. */
-+ int val1;
-+ int val2;
-+
-+ val1 = *p1++ - '0';
-+ val2 = *p2++ - '0';
-+ while (*p1 >= '0' && *p1 <= '9')
-+ val1 = val1 * 10 + *p1++ - '0';
-+ while (*p2 >= '0' && *p2 <= '9')
-+ val2 = val2 * 10 + *p2++ - '0';
-+ if (val1 != val2)
-+ return val1 - val2;
-+ }
-+ else
-+ return 1;
-+ }
-+ else if (*p2 >= '0' && *p2 <= '9')
-+ return -1;
-+ else if (*p1 != *p2)
-+ return *p1 - *p2;
-+ else
-+ {
-+ ++p1;
-+ ++p2;
-+ }
-+ }
-+ return *p1 - *p2;
-+}
-+
-
- /* Look up NAME in ld.so.cache and return the file name stored there,
- or null if none is found. */
---- glibc-2.3.2/sysdeps/generic/dl-cache.h 2002-08-25 05:25:04.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/dl-cache.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 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
-@@ -32,6 +32,10 @@
- # define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
- #endif
-
-+#ifndef add_system_dir
-+# define add_system_dir(dir) add_dir (dir)
-+#endif
-+
- #define CACHEMAGIC "ld.so-1.7.0"
-
- /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another
-@@ -97,41 +101,5 @@
- (((addr) + __alignof__ (struct cache_file_new) -1) \
- & (~(__alignof__ (struct cache_file_new) - 1)))
-
--static inline int
--__attribute__ ((__unused__))
--_dl_cache_libcmp (const char *p1, const char *p2)
--{
-- while (*p1 != '\0')
-- {
-- if (*p1 >= '0' && *p1 <= '9')
-- {
-- if (*p2 >= '0' && *p2 <= '9')
-- {
-- /* Must compare this numerically. */
-- int val1;
-- int val2;
--
-- val1 = *p1++ - '0';
-- val2 = *p2++ - '0';
-- while (*p1 >= '0' && *p1 <= '9')
-- val1 = val1 * 10 + *p1++ - '0';
-- while (*p2 >= '0' && *p2 <= '9')
-- val2 = val2 * 10 + *p2++ - '0';
-- if (val1 != val2)
-- return val1 - val2;
-- }
-- else
-- return 1;
-- }
-- else if (*p2 >= '0' && *p2 <= '9')
-- return -1;
-- else if (*p1 != *p2)
-- return *p1 - *p2;
-- else
-- {
-- ++p1;
-- ++p2;
-- }
-- }
-- return *p1 - *p2;
--}
-+extern int _dl_cache_libcmp (const char *p1, const char *p2)
-+ internal_function;
---- glibc-2.3.2/sysdeps/generic/dl-fptr.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-fptr.c 2003-05-02 18:37:14.000000000 -0400
-@@ -0,0 +1,323 @@
-+/* Manage function descriptors. Generic version.
-+ Copyright (C) 1999,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 <libintl.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <sys/param.h>
-+#include <sys/mman.h>
-+#include <link.h>
-+#include <ldsodefs.h>
-+#include <elf/dynamic-link.h>
-+#include <dl-fptr.h>
-+#include <atomic.h>
-+
-+#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN
-+/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of
-+ dynamic symbols in ld.so. */
-+#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256
-+#endif
-+
-+#ifndef ELF_MACHINE_LOAD_ADDRESS
-+# error "ELF_MACHINE_LOAD_ADDRESS is not defined."
-+#endif
-+
-+#ifndef COMPARE_AND_SWAP
-+#define COMPARE_AND_SWAP(ptr,old,new) \
-+ atomic_compare_and_exchange_bool_acq ((ptr), (old), (new))
-+#endif
-+
-+ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN];
-+
-+static struct local
-+ {
-+ struct fdesc_table *root;
-+ struct fdesc *free_list;
-+ unsigned int npages; /* # of pages to allocate */
-+ /* the next to members MUST be consecutive! */
-+ struct fdesc_table boot_table;
-+ struct fdesc boot_fdescs[1024];
-+ }
-+local =
-+ {
-+ .root = &local.boot_table,
-+ .npages = 2,
-+ .boot_table =
-+ {
-+ .len = sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
-+ .first_unused = 0
-+ }
-+ };
-+
-+/* Create a new fdesc table and return a pointer to the first fdesc
-+ entry. The fdesc lock must have been acquired already. */
-+
-+static struct fdesc_table *
-+new_fdesc_table (struct local *l, size_t *size)
-+{
-+ size_t old_npages = l->npages;
-+ size_t new_npages = old_npages + old_npages;
-+ struct fdesc_table *new_table;
-+
-+ /* If someone has just created a new table, we return NULL to tell
-+ the caller to use the new table. */
-+ if (! COMPARE_AND_SWAP (&l->npages, old_npages, new_npages))
-+ return (struct fdesc_table *) NULL;
-+
-+ *size = old_npages * GL(dl_pagesize);
-+ new_table = __mmap (NULL, *size,
-+ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
-+ if (new_table == MAP_FAILED)
-+ INTUSE(_dl_signal_error) (errno, NULL, NULL,
-+ N_("cannot map pages for fdesc table"));
-+
-+ new_table->len
-+ = (*size - sizeof (*new_table)) / sizeof (struct fdesc);
-+ new_table->first_unused = 1;
-+ return new_table;
-+}
-+
-+
-+static ElfW(Addr)
-+make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp)
-+{
-+ struct fdesc *fdesc = NULL;
-+ struct fdesc_table *root;
-+ unsigned int old;
-+ struct local *l;
-+
-+ ELF_MACHINE_LOAD_ADDRESS (l, local);
-+
-+ retry:
-+ root = l->root;
-+ while (1)
-+ {
-+ old = root->first_unused;
-+ if (old >= root->len)
-+ break;
-+ else if (COMPARE_AND_SWAP (&root->first_unused, old, old + 1))
-+ {
-+ fdesc = &root->fdesc[old];
-+ goto install;
-+ }
-+ }
-+
-+ if (l->free_list)
-+ {
-+ /* Get it from free-list. */
-+ do
-+ {
-+ fdesc = l->free_list;
-+ if (fdesc == NULL)
-+ goto retry;
-+ }
-+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
-+ (ElfW(Addr)) fdesc, fdesc->ip));
-+ }
-+ else
-+ {
-+ /* Create a new fdesc table. */
-+ size_t size;
-+ struct fdesc_table *new_table = new_fdesc_table (l, &size);
-+
-+ if (new_table == NULL)
-+ goto retry;
-+
-+ new_table->next = root;
-+ if (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->root,
-+ (ElfW(Addr)) root,
-+ (ElfW(Addr)) new_table))
-+ {
-+ /* Someone has just installed a new table. Return NULL to
-+ tell the caller to use the new table. */
-+ __munmap (new_table, size);
-+ goto retry;
-+ }
-+
-+ /* Note that the first entry was reserved while allocating the
-+ memory for the new page. */
-+ fdesc = &new_table->fdesc[0];
-+ }
-+
-+ install:
-+ fdesc->ip = ip;
-+ fdesc->gp = gp;
-+
-+ return (ElfW(Addr)) fdesc;
-+}
-+
-+
-+static inline ElfW(Addr) *
-+make_fptr_table (struct link_map *map)
-+{
-+ const ElfW(Sym) *symtab
-+ = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
-+ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-+ ElfW(Addr) *fptr_table;
-+ size_t size;
-+ size_t len;
-+
-+ /* XXX Apparently the only way to find out the size of the dynamic
-+ symbol section is to assume that the string table follows right
-+ afterwards... */
-+ len = ((strtab - (char *) symtab)
-+ / map->l_info[DT_SYMENT]->d_un.d_val);
-+ size = ((len * sizeof (fptr_table[0]) + GL(dl_pagesize) - 1)
-+ & -GL(dl_pagesize));
-+ /* XXX We don't support here in the moment systems without MAP_ANON.
-+ There probably are none for IA-64. In case this is proven wrong
-+ we will have to open /dev/null here and use the file descriptor
-+ instead of the hard-coded -1. */
-+ fptr_table = __mmap (NULL, size,
-+ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE,
-+ -1, 0);
-+ if (fptr_table == MAP_FAILED)
-+ INTUSE(_dl_signal_error) (errno, NULL, NULL,
-+ N_("cannot map pages for fptr table"));
-+
-+ if (COMPARE_AND_SWAP ((ElfW(Addr) *) &map->l_mach.fptr_table,
-+ (ElfW(Addr)) NULL, (ElfW(Addr)) fptr_table))
-+ map->l_mach.fptr_table_len = len;
-+ else
-+ __munmap (fptr_table, len * sizeof (fptr_table[0]));
-+
-+ return map->l_mach.fptr_table;
-+}
-+
-+
-+ElfW(Addr)
-+_dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
-+ ElfW(Addr) ip)
-+{
-+ ElfW(Addr) *ftab = map->l_mach.fptr_table;
-+ const ElfW(Sym) *symtab;
-+ Elf_Symndx symidx;
-+ struct local *l;
-+
-+ if (__builtin_expect (ftab == NULL, 0))
-+ ftab = make_fptr_table (map);
-+
-+ symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
-+ symidx = sym - symtab;
-+
-+ if (symidx >= map->l_mach.fptr_table_len)
-+ INTUSE(_dl_signal_error) (0, NULL, NULL, N_("\
-+internal error: symidx out of range of fptr table"));
-+
-+ while (ftab[symidx] == 0)
-+ {
-+ /* GOT has already been relocated in elf_get_dynamic_info -
-+ don't try to relocate it again. */
-+ ElfW(Addr) fdesc
-+ = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
-+
-+ if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
-+ fdesc), 1))
-+ {
-+ /* Noone has updated the entry and the new function
-+ descriptor has been installed. */
-+#if 0
-+ const char *strtab
-+ = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-+
-+ ELF_MACHINE_LOAD_ADDRESS (l, local);
-+ if (l->root != &l->boot_table
-+ || l->boot_table.first_unused > 20)
-+ _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
-+ strtab + sym->st_name, ftab[symidx]);
-+#endif
-+ break;
-+ }
-+ else
-+ {
-+ /* We created a duplicated function descriptor. We put it on
-+ free-list. */
-+ struct fdesc *f = (struct fdesc *) fdesc;
-+
-+ ELF_MACHINE_LOAD_ADDRESS (l, local);
-+
-+ do
-+ f->ip = (ElfW(Addr)) l->free_list;
-+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
-+ f->ip, fdesc));
-+ }
-+ }
-+
-+ return ftab[symidx];
-+}
-+
-+
-+void
-+_dl_unmap (struct link_map *map)
-+{
-+ ElfW(Addr) *ftab = map->l_mach.fptr_table;
-+ struct fdesc *head = NULL, *tail = NULL;
-+ size_t i;
-+
-+ __munmap ((void *) map->l_map_start,
-+ map->l_map_end - map->l_map_start);
-+
-+ if (ftab == NULL)
-+ return;
-+
-+ /* String together the fdesc structures that are being freed. */
-+ for (i = 0; i < map->l_mach.fptr_table_len; ++i)
-+ {
-+ if (ftab[i])
-+ {
-+ *(struct fdesc **) ftab[i] = head;
-+ head = (struct fdesc *) ftab[i];
-+ if (tail == NULL)
-+ tail = head;
-+ }
-+ }
-+
-+ /* Prepend the new list to the free_list: */
-+ if (tail)
-+ do
-+ tail->ip = (ElfW(Addr)) local.free_list;
-+ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list,
-+ tail->ip, (ElfW(Addr)) head));
-+
-+ __munmap (ftab, (map->l_mach.fptr_table_len
-+ * sizeof (map->l_mach.fptr_table[0])));
-+
-+ map->l_mach.fptr_table = NULL;
-+}
-+
-+
-+ElfW(Addr)
-+_dl_lookup_address (const void *address)
-+{
-+ ElfW(Addr) addr = (ElfW(Addr)) address;
-+ struct fdesc_table *t;
-+ unsigned long int i;
-+
-+ for (t = local.root; t != NULL; t = t->next)
-+ {
-+ i = (struct fdesc *) addr - &t->fdesc[0];
-+ if (i < t->first_unused && addr == (ElfW(Addr)) &t->fdesc[i])
-+ {
-+ addr = t->fdesc[i].ip;
-+ break;
-+ }
-+ }
-+
-+ return addr;
-+}
---- glibc-2.3.2/sysdeps/generic/dl-fptr.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-fptr.h 2003-05-01 22:37:21.000000000 -0400
-@@ -0,0 +1,44 @@
-+/* Function descriptors. Generic version.
-+ Copyright (C) 1995, 1996, 1997, 2000, 2001 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_fptr_h
-+#define dl_fptr_h 1
-+
-+/* An FDESC is a function descriptor. */
-+
-+struct fdesc
-+ {
-+ ElfW(Addr) ip; /* code entry point */
-+ ElfW(Addr) gp; /* global pointer */
-+ };
-+
-+struct fdesc_table
-+ {
-+ struct fdesc_table *next;
-+ unsigned int len; /* # of entries in fdesc table */
-+ volatile unsigned int first_unused; /* index of first available entry */
-+ struct fdesc fdesc[0];
-+ };
-+
-+extern ElfW(Addr) _dl_boot_fptr_table [];
-+
-+extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *,
-+ ElfW(Addr));
-+
-+#endif /* !dl_fptr_h */
---- glibc-2.3.2/sysdeps/generic/dl-hash.h 2001-07-07 15:21:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/dl-hash.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Compute hash value for given string according to ELF standard.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 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
-@@ -24,7 +24,7 @@
- /* This is the hashing function specified by the ELF ABI. In the
- first five operations no overflow is possible so we optimized it a
- bit. */
--static inline unsigned int
-+static unsigned int
- _dl_elf_hash (const unsigned char *name)
- {
- unsigned long int hash = 0;
---- glibc-2.3.2/sysdeps/generic/dl-symaddr.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-symaddr.c 2003-05-01 23:28:25.000000000 -0400
-@@ -0,0 +1,33 @@
-+/* Get the symbol address. Generic version.
-+ Copyright (C) 1999, 2000, 2001, 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 <ldsodefs.h>
-+#include <dl-fptr.h>
-+
-+void *
-+_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref)
-+{
-+ ElfW(Addr) value = (map ? map->l_addr : 0) + ref->st_value;
-+
-+ /* Return the pointer to function descriptor. */
-+ if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC)
-+ return (void *) _dl_make_fptr (map, ref, value);
-+ else
-+ return (void *) value;
-+}
---- glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-02-23 00:04:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-08-21 08:37:08.000000000 -0400
-@@ -79,14 +79,23 @@
- ElfW(Word) phnum = 0;
- ElfW(Addr) user_entry;
- ElfW(auxv_t) *av;
-+#ifdef HAVE_AUX_SECURE
-+# define set_seen(tag) (tag) /* Evaluate for the side effects. */
-+# define set_seen_secure() ((void) 0)
-+#else
- uid_t uid = 0;
- gid_t gid = 0;
--#ifdef HAVE_AUX_XID
--# define set_seen(tag) (tag) /* Evaluate for the side effects. */
--#else
- unsigned int seen = 0;
--# define M(type) (1 << (type))
--# define set_seen(tag) seen |= M ((tag)->a_type)
-+# define set_seen_secure() (seen = -1)
-+# ifdef HAVE_AUX_XID
-+# define set_seen(tag) (tag) /* Evaluate for the side effects. */
-+# else
-+# define M(type) (1 << (type))
-+# define set_seen(tag) seen |= M ((tag)->a_type)
-+# endif
-+#endif
-+#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
-+ ElfW(Word) new_sysinfo = 0;
- #endif
-
- DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ,
-@@ -115,6 +124,7 @@
- _dl_base_addr = av->a_un.a_val;
- break;
- #endif
-+#ifndef HAVE_AUX_SECURE
- case AT_UID:
- case AT_EUID:
- uid ^= av->a_un.a_val;
-@@ -123,6 +133,13 @@
- case AT_EGID:
- gid ^= av->a_un.a_val;
- break;
-+#endif
-+ case AT_SECURE:
-+#ifndef HAVE_AUX_SECURE
-+ seen = -1;
-+#endif
-+ INTUSE(__libc_enable_secure) = av->a_un.a_val;
-+ break;
- case AT_PLATFORM:
- GL(dl_platform) = av->a_un.a_ptr;
- break;
-@@ -137,8 +154,18 @@
- break;
- #ifdef NEED_DL_SYSINFO
- case AT_SYSINFO:
-+# ifndef __ASSUME_VSYSCALL
-+ new_sysinfo = av->a_un.a_val;
-+# else
- GL(dl_sysinfo) = av->a_un.a_val;
-+# endif
- break;
-+ case AT_SYSINFO_EHDR:
-+ GL(dl_sysinfo_dso) = av->a_un.a_ptr;
-+ break;
-+#endif
-+#ifdef DL_PLATFORM_AUXV
-+ DL_PLATFORM_AUXV
- #endif
- }
-
-@@ -146,26 +173,37 @@
- DL_SYSDEP_OSCHECK (dl_fatal);
- #endif
-
-- /* Fill in the values we have not gotten from the kernel through the
-- auxiliary vector. */
--#ifndef HAVE_AUX_XID
--# define SEE(UID, var, uid) \
-+#ifndef HAVE_AUX_SECURE
-+ if (seen != -1)
-+ {
-+ /* Fill in the values we have not gotten from the kernel through the
-+ auxiliary vector. */
-+# ifndef HAVE_AUX_XID
-+# define SEE(UID, var, uid) \
- if ((seen & M (AT_##UID)) == 0) var ^= __get##uid ()
-- SEE (UID, uid, uid);
-- SEE (EUID, uid, euid);
-- SEE (GID, gid, gid);
-- SEE (EGID, gid, egid);
-+ SEE (UID, uid, uid);
-+ SEE (EUID, uid, euid);
-+ SEE (GID, gid, gid);
-+ SEE (EGID, gid, egid);
-+# endif
-+
-+ /* If one of the two pairs of IDs does not match this is a setuid
-+ or setgid run. */
-+ INTUSE(__libc_enable_secure) = uid | gid;
-+ }
- #endif
-
-- /* If one of the two pairs of IDs does not mattch this is a setuid
-- or setgid run. */
-- INTUSE(__libc_enable_secure) = uid | gid;
--
- #ifndef HAVE_AUX_PAGESIZE
- if (GL(dl_pagesize) == 0)
- GL(dl_pagesize) = __getpagesize ();
- #endif
-
-+#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
-+ /* Only set the sysinfo value if we also have the vsyscall DSO. */
-+ if (GL(dl_sysinfo_dso) != 0)
-+ GL(dl_sysinfo) = new_sysinfo;
-+#endif
-+
- #ifdef DL_SYSDEP_INIT
- DL_SYSDEP_INIT;
- #endif
-@@ -213,60 +251,81 @@
- buf[63] = '\0';
-
- /* The following code assumes that the AT_* values are encoded
-- starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values
-- close by (otherwise the array will be too large). In case we have
-- to support a platform where these requirements are not fulfilled
-- some alternative implementation has to be used. */
-+ starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values
-+ close by (otherwise the array will be too large). In case we have
-+ to support a platform where these requirements are not fulfilled
-+ some alternative implementation has to be used. */
- for (av = _dl_auxv; av->a_type != AT_NULL; ++av)
- {
- static const struct
- {
- const char label[20];
-- enum { dec, hex, str } form;
-+ enum { unused, dec, hex, str } form;
- } auxvars[] =
- {
-- [AT_EXECFD - 2] = { "AT_EXECFD: ", dec },
-- [AT_PHDR - 2] = { "AT_PHDR: 0x", hex },
-- [AT_PHENT - 2] = { "AT_PHENT: ", dec },
-- [AT_PHNUM - 2] = { "AT_PHNUM: ", dec },
-- [AT_PAGESZ - 2] = { "AT_PAGESZ: ", dec },
-- [AT_BASE - 2] = { "AT_BASE: 0x", hex },
-- [AT_FLAGS - 2] = { "AT_FLAGS: 0x", hex },
-- [AT_ENTRY - 2] = { "AT_ENTRY: 0x", hex },
-- [AT_NOTELF - 2] = { "AT_NOTELF: ", hex },
-- [AT_UID - 2] = { "AT_UID: ", dec },
-- [AT_EUID - 2] = { "AT_EUID: ", dec },
-- [AT_GID - 2] = { "AT_GID: ", dec },
-- [AT_EGID - 2] = { "AT_EGID: ", dec },
-- [AT_PLATFORM - 2] = { "AT_PLATFORM: ", str },
-- [AT_HWCAP - 2] = { "AT_HWCAP: ", hex },
-- [AT_CLKTCK - 2] = { "AT_CLKTCK: ", dec },
-- [AT_FPUCW - 2] = { "AT_FPUCW: ", hex },
-- [AT_DCACHEBSIZE - 2] = { "AT_DCACHEBSIZE: 0x", hex },
-- [AT_ICACHEBSIZE - 2] = { "AT_ICACHEBSIZE: 0x", hex },
-- [AT_UCACHEBSIZE - 2] = { "AT_UCACHEBSIZE: 0x", hex },
-- [AT_SYSINFO - 2] = { "AT_SYSINFO: 0x", hex }
-+ [AT_EXECFD - 2] = { "AT_EXECFD: ", dec },
-+ [AT_PHDR - 2] = { "AT_PHDR: 0x", hex },
-+ [AT_PHENT - 2] = { "AT_PHENT: ", dec },
-+ [AT_PHNUM - 2] = { "AT_PHNUM: ", dec },
-+ [AT_PAGESZ - 2] = { "AT_PAGESZ: ", dec },
-+ [AT_BASE - 2] = { "AT_BASE: 0x", hex },
-+ [AT_FLAGS - 2] = { "AT_FLAGS: 0x", hex },
-+ [AT_ENTRY - 2] = { "AT_ENTRY: 0x", hex },
-+ [AT_NOTELF - 2] = { "AT_NOTELF: ", hex },
-+ [AT_UID - 2] = { "AT_UID: ", dec },
-+ [AT_EUID - 2] = { "AT_EUID: ", dec },
-+ [AT_GID - 2] = { "AT_GID: ", dec },
-+ [AT_EGID - 2] = { "AT_EGID: ", dec },
-+ [AT_PLATFORM - 2] = { "AT_PLATFORM: ", str },
-+ [AT_HWCAP - 2] = { "AT_HWCAP: ", hex },
-+ [AT_CLKTCK - 2] = { "AT_CLKTCK: ", dec },
-+ [AT_FPUCW - 2] = { "AT_FPUCW: ", hex },
-+ [AT_DCACHEBSIZE - 2] = { "AT_DCACHEBSIZE: 0x", hex },
-+ [AT_ICACHEBSIZE - 2] = { "AT_ICACHEBSIZE: 0x", hex },
-+ [AT_UCACHEBSIZE - 2] = { "AT_UCACHEBSIZE: 0x", hex },
-+#ifdef NEED_DL_SYSINFO
-+ [AT_SYSINFO - 2] = { "AT_SYSINFO: 0x", hex },
-+ [AT_SYSINFO_EHDR - 2] = { "AT_SYSINFO_EHDR: 0x", hex },
-+#endif
-+ [AT_SECURE - 2] = { "AT_SECURE: ", dec },
- };
- unsigned int idx = (unsigned int) (av->a_type - 2);
-
- assert (AT_NULL == 0);
- assert (AT_IGNORE == 1);
-- if (idx < sizeof (auxvars) / sizeof (auxvars[0]))
-+
-+ if (av->a_type == AT_HWCAP)
- {
-- if (av->a_type != AT_HWCAP || _dl_procinfo (av->a_un.a_val) < 0)
-- {
-- const char *val = av->a_un.a_ptr;
--
-- if (__builtin_expect (auxvars[idx].form, dec) == dec)
-- val = _itoa ((unsigned long int) av->a_un.a_val,
-- buf + sizeof buf - 1, 10, 0);
-- else if (__builtin_expect (auxvars[idx].form, hex) == hex)
-- val = _itoa ((unsigned long int) av->a_un.a_val,
-- buf + sizeof buf - 1, 16, 0);
-+ /* This is handled special. */
-+ if (_dl_procinfo (av->a_un.a_val) == 0)
-+ continue;
-+ }
-
-- _dl_printf ("%s%s\n", auxvars[idx].label, val);
-- }
-+ if (idx < sizeof (auxvars) / sizeof (auxvars[0])
-+ && auxvars[idx].form != unused)
-+ {
-+ const char *val = av->a_un.a_ptr;
-+
-+ if (__builtin_expect (auxvars[idx].form, dec) == dec)
-+ val = _itoa ((unsigned long int) av->a_un.a_val,
-+ buf + sizeof buf - 1, 10, 0);
-+ else if (__builtin_expect (auxvars[idx].form, hex) == hex)
-+ val = _itoa ((unsigned long int) av->a_un.a_val,
-+ buf + sizeof buf - 1, 16, 0);
-+
-+ _dl_printf ("%s%s\n", auxvars[idx].label, val);
-+
-+ continue;
- }
-+
-+ /* Unknown value: print a generic line. */
-+ char buf2[17];
-+ buf[sizeof (buf2) - 1] = '\0';
-+ const char *val2 = _itoa ((unsigned long int) av->a_un.a_val,
-+ buf2 + sizeof buf2 - 1, 16, 0);
-+ const char *val = _itoa ((unsigned long int) av->a_type,
-+ buf + sizeof buf - 1, 16, 0);
-+ _dl_printf ("AT_??? (0x%s): 0x%s\n", val, val2);
- }
- }
-
-@@ -338,7 +397,7 @@
-
- /* Determine the total size of all strings together. */
- if (cnt == 1)
-- total = temp[0].len;
-+ total = temp[0].len + 1;
- else
- {
- total = (1UL << (cnt - 2)) * (temp[0].len + temp[cnt - 1].len + 2);
---- glibc-2.3.2/sysdeps/generic/dl-sysdep.h 2002-12-19 13:36:08.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-sysdep.h 2003-03-15 15:02:15.000000000 -0500
-@@ -1,5 +1,5 @@
- /* System-specific settings for dynamic linker code. Generic version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -17,6 +17,9 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#ifndef _DL_SYSDEP_H
-+#define _DL_SYSDEP_H 1
-+
- /* This macro must be defined to either 0 or 1.
-
- If 1, then an errno global variable hidden in ld.so will work right with
-@@ -30,3 +33,5 @@
- #else
- # define RTLD_PRIVATE_ERRNO 0
- #endif
-+
-+#endif /* dl-sysdep.h */
---- glibc-2.3.2/sysdeps/generic/dl-tls.c 2003-01-30 15:58:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-tls.c 2003-09-19 22:37:07.000000000 -0400
-@@ -117,8 +117,8 @@
- _dl_determine_tlsoffset (void)
- {
- struct dtv_slotinfo *slotinfo;
-- size_t max_align = __alignof__ (void *);
-- size_t offset;
-+ size_t max_align = TLS_TCB_ALIGN;
-+ size_t offset, freetop = 0, freebottom = 0;
- size_t cnt;
-
- /* The first element of the dtv slot info list is allocated. */
-@@ -127,70 +127,122 @@
- dl_tls_dtv_slotinfo_list list. */
- assert (GL(dl_tls_dtv_slotinfo_list)->next == NULL);
-
-+ slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
-+
-+ /* Determining the offset of the various parts of the static TLS
-+ block has several dependencies. In addition we have to work
-+ around bugs in some toolchains.
-+
-+ Each TLS block from the objects available at link time has a size
-+ and an alignment requirement. The GNU ld computes the alignment
-+ requirements for the data at the positions *in the file*, though.
-+ I.e, it is not simply possible to allocate a block with the size
-+ of the TLS program header entry. The data is layed out assuming
-+ that the first byte of the TLS block fulfills
-+
-+ p_vaddr mod p_align == &TLS_BLOCK mod p_align
-+
-+ This means we have to add artificial padding at the beginning of
-+ the TLS block. These bytes are never used for the TLS data in
-+ this module but the first byte allocated must be aligned
-+ according to mod p_align == 0 so that the first byte of the TLS
-+ block is aligned according to p_vaddr mod p_align. This is ugly
-+ and the linker can help by computing the offsets in the TLS block
-+ assuming the first byte of the TLS block is aligned according to
-+ p_align.
-+
-+ The extra space which might be allocated before the first byte of
-+ the TLS block need not go unused. The code below tries to use
-+ that memory for the next TLS block. This can work if the total
-+ memory requirement for the next TLS block is smaller than the
-+ gap. */
-+
- # if TLS_TCB_AT_TP
- /* We simply start with zero. */
- offset = 0;
-
-- slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
- for (cnt = 1; slotinfo[cnt].map != NULL; ++cnt)
- {
- assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
-
-+ size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
-+ & (slotinfo[cnt].map->l_tls_align - 1));
-+ size_t off;
- max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
-
-- /* Compute the offset of the next TLS block. */
-- offset = roundup (offset + slotinfo[cnt].map->l_tls_blocksize,
-- slotinfo[cnt].map->l_tls_align);
-+ if (freebottom - freetop >= slotinfo[cnt].map->l_tls_blocksize)
-+ {
-+ off = roundup (freetop + slotinfo[cnt].map->l_tls_blocksize
-+ - firstbyte, slotinfo[cnt].map->l_tls_align)
-+ + firstbyte;
-+ if (off <= freebottom)
-+ {
-+ freetop = off;
-+
-+ /* XXX For some architectures we perhaps should store the
-+ negative offset. */
-+ slotinfo[cnt].map->l_tls_offset = off;
-+ continue;
-+ }
-+ }
-+
-+ off = roundup (offset + slotinfo[cnt].map->l_tls_blocksize - firstbyte,
-+ slotinfo[cnt].map->l_tls_align) + firstbyte;
-+ if (off > offset + slotinfo[cnt].map->l_tls_blocksize
-+ + (freebottom - freetop))
-+ {
-+ freetop = offset;
-+ freebottom = off - slotinfo[cnt].map->l_tls_blocksize;
-+ }
-+ offset = off;
-
- /* XXX For some architectures we perhaps should store the
- negative offset. */
-- slotinfo[cnt].map->l_tls_offset = offset;
-+ slotinfo[cnt].map->l_tls_offset = off;
- }
-
-- /* The thread descriptor (pointed to by the thread pointer) has its
-- own alignment requirement. Adjust the static TLS size
-- and TLS offsets appropriately. */
-- // XXX How to deal with this. We cannot simply add zero bytes
-- // XXX after the first (closest to the TCB) TLS block since this
-- // XXX would invalidate the offsets the linker creates for the LE
-- // XXX model.
--
- GL(dl_tls_static_used) = offset;
-- GL(dl_tls_static_size) = roundup (offset + TLS_STATIC_SURPLUS + TLS_TCB_SIZE,
-- TLS_TCB_ALIGN);
-+ GL(dl_tls_static_size) = (roundup (offset + TLS_STATIC_SURPLUS, max_align)
-+ + TLS_TCB_SIZE);
- # elif TLS_DTV_AT_TP
- /* The TLS blocks start right after the TCB. */
- offset = TLS_TCB_SIZE;
-
-- /* The first block starts right after the TCB. */
-- slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
-- if (slotinfo[1].map != NULL)
-+ for (cnt = 1; slotinfo[cnt].map != NULL; ++cnt)
- {
-- size_t prev_size;
-+ assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
-
-- offset = roundup (offset, slotinfo[1].map->l_tls_align);
-- slotinfo[1].map->l_tls_offset = offset;
-- max_align = slotinfo[1].map->l_tls_align;
-- prev_size = slotinfo[1].map->l_tls_blocksize;
-+ size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
-+ & (slotinfo[cnt].map->l_tls_align - 1));
-+ size_t off;
-+ max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
-
-- for (cnt = 2; slotinfo[cnt].map != NULL; ++cnt)
-+ if (slotinfo[cnt].map->l_tls_blocksize >= freetop - freebottom)
- {
-- assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
--
-- max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
--
-- /* Compute the offset of the next TLS block. */
-- offset = roundup (offset + prev_size,
-- slotinfo[cnt].map->l_tls_align);
-+ off = roundup (freebottom, slotinfo[cnt].map->l_tls_align);
-+ if (off - freebottom < firstbyte)
-+ off += slotinfo[cnt].map->l_tls_align;
-+ if (off + slotinfo[cnt].map->l_tls_blocksize - firstbyte <= freetop)
-+ {
-+ slotinfo[cnt].map->l_tls_offset = off - firstbyte;
-+ freebottom = off + slotinfo[cnt].map->l_tls_blocksize
-+ - firstbyte;
-+ continue;
-+ }
-+ }
-
-- /* XXX For some architectures we perhaps should store the
-- negative offset. */
-- slotinfo[cnt].map->l_tls_offset = offset;
-+ off = roundup (offset, slotinfo[cnt].map->l_tls_align);
-+ if (off - offset < firstbyte)
-+ off += slotinfo[cnt].map->l_tls_align;
-
-- prev_size = slotinfo[cnt].map->l_tls_blocksize;
-+ slotinfo[cnt].map->l_tls_offset = off - firstbyte;
-+ if (off - firstbyte - offset > freetop - freebottom)
-+ {
-+ freebottom = offset;
-+ freetop = off - firstbyte;
- }
-
-- offset += prev_size;
-+ offset = off + slotinfo[cnt].map->l_tls_blocksize - firstbyte;
- }
-
- GL(dl_tls_static_used) = offset;
-@@ -201,7 +253,7 @@
- # endif
-
- /* The alignment requirement for the static TLS block. */
-- GL(dl_tls_static_align) = MAX (TLS_TCB_ALIGN, max_align);
-+ GL(dl_tls_static_align) = max_align;
- }
-
-
-@@ -294,7 +346,7 @@
-
- /* Allocate a correctly aligned chunk of memory. */
- result = __libc_memalign (GL(dl_tls_static_align), size);
-- if (__builtin_expect (result != NULL, 0))
-+ if (__builtin_expect (result != NULL, 1))
- {
- /* Allocate the DTV. */
- void *allocated = result;
-@@ -359,7 +411,7 @@
- /* Unused entry. */
- continue;
-
-- if (map->l_tls_offset == 0)
-+ if (map->l_tls_offset == NO_TLS_OFFSET)
- {
- /* For dynamically loaded modules we simply store
- the value indicating deferred allocation. */
-@@ -370,7 +422,7 @@
- assert (map->l_tls_modid == cnt);
- assert (map->l_tls_blocksize >= map->l_tls_initimage_size);
- # if TLS_TCB_AT_TP
-- assert (map->l_tls_offset >= map->l_tls_blocksize);
-+ assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize);
- dest = (char *) result - map->l_tls_offset;
- # elif TLS_DTV_AT_TP
- dest = (char *) result + map->l_tls_offset;
-@@ -415,7 +467,10 @@
- dtv_t *dtv = GET_DTV (tcb);
-
- /* The array starts with dtv[-1]. */
-- free (dtv - 1);
-+#ifdef SHARED
-+ if (dtv != GL(dl_initial_dtv))
-+#endif
-+ free (dtv - 1);
-
- if (dealloc_tcb)
- {
---- glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Return list with names for address in backtrace.
-- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -48,7 +48,7 @@
- /* Fill in the information we can get from `dladdr'. */
- for (cnt = 0; cnt < size; ++cnt)
- {
-- status[cnt] = _dl_addr (array[cnt], &info[cnt]);
-+ status[cnt] = _dl_addr (array[cnt], &info[cnt], NULL, NULL);
- if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
- /* We have some info, compute the length of the string which will be
- "<file-name>(<sym-name>) [+offset]. */
---- glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Write formatted list with names for addresses in backtrace to a file.
-- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -48,7 +48,7 @@
- Dl_info info;
- size_t last = 0;
-
-- if (_dl_addr (array[cnt], &info)
-+ if (_dl_addr (array[cnt], &info, NULL, NULL)
- && info.dli_fname && info.dli_fname[0] != '\0')
- {
- /* Name of the file. */
---- glibc-2.3.2/sysdeps/generic/enbl-secure.c 2001-07-07 15:21:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/enbl-secure.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Define and initialize the `__libc_enable_secure' flag. Generic version.
-- Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 2000, 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
-@@ -23,12 +23,15 @@
- #include <unistd.h>
- #include <libc-internal.h>
-
-+/* If nonzero __libc_enable_secure is already set. */
-+int __libc_enable_secure_decided;
- /* Safest assumption, if somehow the initializer isn't run. */
- int __libc_enable_secure = 1;
-
- void
- __libc_init_secure (void)
- {
-- __libc_enable_secure = (__geteuid () != __getuid ()
-- || __getegid () != __getgid ());
-+ if (__libc_enable_secure_decided == 0)
-+ __libc_enable_secure = (__geteuid () != __getuid ()
-+ || __getegid () != __getgid ());
- }
---- glibc-2.3.2/sysdeps/generic/glob.c 2003-01-16 19:21:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/glob.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1388,7 +1388,9 @@
- /* If we shall match only directories use the information
- provided by the dirent call if possible. */
- if ((flags & GLOB_ONLYDIR)
-- && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
-+ && d->d_type != DT_UNKNOWN
-+ && d->d_type != DT_DIR
-+ && d->d_type != DT_LNK)
- continue;
- #endif
-
---- glibc-2.3.2/sysdeps/generic/ifaddrs.c 2002-07-24 18:56:04.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/ifaddrs.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* getifaddrs -- get names and addresses of all network interfaces
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -30,6 +30,7 @@
- __set_errno (ENOSYS);
- return -1;
- }
-+libc_hidden_def (getifaddrs)
- stub_warning (getifaddrs)
-
- void
-@@ -41,4 +42,5 @@
- /* Can't be called properly if getifaddrs never succeeded. */
- abort ();
- }
-+libc_hidden_def (freeifaddrs)
- stub_warning (freeifaddrs)
---- glibc-2.3.2/sysdeps/generic/ifreq.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/ifreq.c 2003-06-11 18:21:54.000000000 -0400
-@@ -0,0 +1,80 @@
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Jaeger <aj@suse.de>.
-+
-+ 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 "ifreq.h"
-+
-+
-+void
-+__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
-+{
-+ int fd = sockfd;
-+ struct ifconf ifc;
-+ int rq_len;
-+ int nifs;
-+# define RQ_IFS 4
-+
-+ if (fd < 0)
-+ fd = __opensock ();
-+ if (fd < 0)
-+ {
-+ *num_ifs = 0;
-+ *ifreqs = NULL;
-+ return;
-+ }
-+
-+ ifc.ifc_buf = NULL;
-+ rq_len = RQ_IFS * sizeof (struct ifreq) / 2; /* Doubled in the loop. */
-+ do
-+ {
-+ ifc.ifc_len = rq_len *= 2;
-+ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
-+ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-+ {
-+ if (ifc.ifc_buf)
-+ free (ifc.ifc_buf);
-+
-+ if (fd != sockfd)
-+ __close (fd);
-+ *num_ifs = 0;
-+ *ifreqs = NULL;
-+ return;
-+ }
-+ }
-+ while (rq_len < sizeof (struct ifreq) + ifc.ifc_len);
-+
-+ if (fd != sockfd)
-+ __close (fd);
-+
-+#ifdef _HAVE_SA_LEN
-+ struct ifreq *ifr = ifreqs;
-+ nifs = 0;
-+ while ((char *) ifr < ifc.ifc_buf + ifc.ifc_len)
-+ {
-+ ++nifs;
-+ ifr = __if_nextreq (ifr);
-+ if (ifr == NULL)
-+ break;
-+ }
-+#else
-+ nifs = ifc.ifc_len / sizeof (struct ifreq);
-+#endif
-+
-+ *num_ifs = nifs;
-+ *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
-+}
---- glibc-2.3.2/sysdeps/generic/ifreq.h 2002-12-02 17:36:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/ifreq.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>.
-
-@@ -28,70 +28,13 @@
- __if_nextreq (struct ifreq *ifr)
- {
- #ifdef _HAVE_SA_LEN
-- if (ifr->ifa_addr > sizeof ifr->ifa_addr)
-- return (struct ifreq *) ((char *) &ifr->ifa_addr + ifr->ifa_addr.sa_len);
-+ if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr)
-+ return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len);
- #endif
- return ifr + 1;
- }
-
--static inline void
--__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
--{
-- int fd = sockfd;
-- struct ifconf ifc;
-- int rq_len;
-- int nifs;
--# define RQ_IFS 4
--
-- if (fd < 0)
-- fd = __opensock ();
-- if (fd < 0)
-- {
-- *num_ifs = 0;
-- *ifreqs = NULL;
-- return;
-- }
--
-- ifc.ifc_buf = NULL;
-- rq_len = RQ_IFS * sizeof (struct ifreq) / 2; /* Doubled in the loop. */
-- do
-- {
-- ifc.ifc_len = rq_len *= 2;
-- ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
-- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-- {
-- if (ifc.ifc_buf)
-- free (ifc.ifc_buf);
--
-- if (fd != sockfd)
-- __close (fd);
-- *num_ifs = 0;
-- *ifreqs = NULL;
-- return;
-- }
-- }
-- while (rq_len < sizeof (struct ifreq) + ifc.ifc_len);
--
-- if (fd != sockfd)
-- __close (fd);
--
--#ifdef _HAVE_SA_LEN
-- struct ifreq *ifr = ifreqs;
-- nifs = 0;
-- while ((char *) ifr < ifc.ifc_buf + ifc.ifc_len)
-- {
-- ++nifs;
-- ifr = __if_nextreq (ifr);
-- if (ifr == NULL)
-- break;
-- }
--#else
-- nifs = ifc.ifc_len / sizeof (struct ifreq);
--#endif
--
-- *num_ifs = nifs;
-- *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
--}
-+extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd);
-
-
- static inline void
---- glibc-2.3.2/sysdeps/generic/ldconfig.h 2002-09-14 22:18:58.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/ldconfig.h 2003-03-15 15:02:15.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -32,6 +32,8 @@
- #define FLAG_X8664_LIB64 0x0300
- #define FLAG_S390_LIB64 0x0400
- #define FLAG_POWERPC_LIB64 0x0500
-+#define FLAG_MIPS64_LIBN32 0x0600
-+#define FLAG_MIPS64_LIBN64 0x0700
-
- /* Declared in cache.c. */
- extern void print_cache (const char *cache_name);
---- glibc-2.3.2/sysdeps/generic/ldsodefs.h 2003-01-03 15:42:47.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/ldsodefs.h 2003-08-21 08:37:08.000000000 -0400
-@@ -97,9 +97,16 @@
- /* Reloc type classes as returned by elf_machine_type_class().
- ELF_RTYPE_CLASS_PLT means this reloc should not be satisfied by
- some PLT symbol, ELF_RTYPE_CLASS_COPY means this reloc should not be
-- satisfied by any symbol in the executable. */
-+ satisfied by any symbol in the executable. Some architectures do
-+ not support copy relocations. In this case we define the macro to
-+ zero so that the code for handling them gets automatically optimized
-+ out. */
- #define ELF_RTYPE_CLASS_PLT 1
--#define ELF_RTYPE_CLASS_COPY 2
-+#ifndef DL_NO_COPY_RELOCS
-+# define ELF_RTYPE_CLASS_COPY 2
-+#else
-+# define ELF_RTYPE_CLASS_COPY 0
-+#endif
-
- /* ELF uses the PF_x macros to specify the segment permissions, mmap
- uses PROT_xxx. In most cases the three macros have the values 1, 2,
-@@ -166,7 +173,7 @@
-
- /* Test whether given NAME matches any of the names of the given object. */
- static __inline int
--__attribute__ ((unused))
-+__attribute__ ((unused, always_inline))
- _dl_name_match_p (const char *__name, struct link_map *__map)
- {
- int __found = strcmp (__name, __map->l_name) == 0;
-@@ -336,11 +343,18 @@
-
- /* Get architecture specific definitions. */
- #define PROCINFO_DECL
-+#define PROCINFO_CLASS EXTERN
- #include <dl-procinfo.c>
-
- /* Structure describing the dynamic linker itself. */
- EXTERN struct link_map _dl_rtld_map;
-
-+#if defined SHARED && defined _LIBC_REENTRANT \
-+ && defined __rtld_lock_default_lock_recursive
-+ EXTERN void (*_dl_rtld_lock_recursive) (void *);
-+ EXTERN void (*_dl_rtld_unlock_recursive) (void *);
-+#endif
-+
- /* Keep the conditional TLS members at the end so the layout of the
- structure used by !USE_TLS code matches the prefix of the layout in
- the USE_TLS rtld. Note that `struct link_map' is conditionally
-@@ -382,11 +396,17 @@
- EXTERN void *_dl_initial_dtv;
- /* Generation counter for the dtv. */
- EXTERN size_t _dl_tls_generation;
-+
-+ EXTERN void (*_dl_init_static_tls) (struct link_map *);
- #endif
-
- #ifdef NEED_DL_SYSINFO
- /* Syscall handling improvements. This is very specific to x86. */
- EXTERN uintptr_t _dl_sysinfo;
-+
-+ /* The vsyscall page is a virtual DSO pre-mapped by the kernel.
-+ This points to its ELF header. */
-+ EXTERN const ElfW(Ehdr) *_dl_sysinfo_dso;
- #endif
-
- #ifdef SHARED
-@@ -554,6 +574,16 @@
- internal_function attribute_hidden;
-
-
-+/* Collect the directories in the search path for LOADER's dependencies.
-+ The data structure is defined in <dlfcn.h>. If COUNTING is true,
-+ SI->dls_cnt and SI->dls_size are set; if false, those must be as set
-+ by a previous call with COUNTING set, and SI must point to SI->dls_size
-+ bytes to be used in filling in the result. */
-+extern void _dl_rtld_di_serinfo (struct link_map *loader,
-+ Dl_serinfo *si, bool counting)
-+ internal_function;
-+
-+
- /* Search loaded objects' symbol tables for a definition of the symbol
- referred to by UNDEF. *SYM is the symbol table entry containing the
- reference; it is replaced with the defining symbol, and the base load
-@@ -775,6 +805,9 @@
- extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp)
- internal_function;
-
-+extern void _dl_allocate_static_tls (struct link_map *map)
-+ internal_function attribute_hidden;
-+
- /* These are internal entry points to the two halves of _dl_allocate_tls,
- only used within rtld.c itself at startup time. */
- extern void *_dl_allocate_tls_storage (void)
-@@ -791,6 +824,10 @@
- extern void *_dl_tls_symaddr (struct link_map *map, const ElfW(Sym) *ref)
- internal_function;
-
-+#if defined USE_TLS
-+extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
-+#endif
-+
- __END_DECLS
-
- #endif /* ldsodefs.h */
---- glibc-2.3.2/sysdeps/generic/libc-start.c 2003-02-14 17:59:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/libc-start.c 2003-08-21 08:37:08.000000000 -0400
-@@ -44,22 +44,52 @@
- #endif
-
-
--extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
-- int argc,
-- char *__unbounded *__unbounded ubp_av,
-- void (*init) (void),
-- void (*fini) (void),
-- void (*rtld_fini) (void),
-- void *__unbounded stack_end)
-+#ifdef LIBC_START_MAIN
-+# define STATIC static inline __attribute__ ((always_inline))
-+#else
-+# define STATIC
-+# define LIBC_START_MAIN BP_SYM (__libc_start_main)
-+#endif
-+
-+#ifdef MAIN_AUXVEC_ARG
-+/* main gets passed a pointer to the auxiliary. */
-+# define MAIN_AUXVEC_DECL , void *
-+# define MAIN_AUXVEC_PARAM , auxvec
-+#else
-+# define MAIN_AUXVEC_DECL
-+# define MAIN_AUXVEC_PARAM
-+#endif
-+
-+STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
-+ MAIN_AUXVEC_DECL),
-+ int argc,
-+ char *__unbounded *__unbounded ubp_av,
-+#ifdef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec,
-+#endif
-+#ifdef INIT_MAIN_ARGS
-+ __typeof (main) init,
-+#else
-+ void (*init) (void),
-+#endif
-+ void (*fini) (void),
-+ void (*rtld_fini) (void),
-+ void *__unbounded stack_end)
- __attribute__ ((noreturn));
-
--int
--/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
-- BPs in the arglist of startup_info.main and startup_info.init. */
--BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
-- int argc, char *__unbounded *__unbounded ubp_av,
-- void (*init) (void), void (*fini) (void),
-- void (*rtld_fini) (void), void *__unbounded stack_end)
-+STATIC int
-+LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
-+ int argc, char *__unbounded *__unbounded ubp_av,
-+#ifdef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec,
-+#endif
-+#ifdef INIT_MAIN_ARGS
-+ __typeof (main) init,
-+#else
-+ void (*init) (void),
-+#endif
-+ void (*fini) (void),
-+ void (*rtld_fini) (void), void *__unbounded stack_end)
- {
- char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
- #if __BOUNDED_POINTERS__
-@@ -80,13 +110,18 @@
-
- #ifndef SHARED
- # ifdef HAVE_AUX_VECTOR
-- void *__unbounded *__unbounded auxvec;
- /* First process the auxiliary vector since we need to find the
- program header to locate an eventually present PT_TLS entry. */
-- for (auxvec = (void *__unbounded *__unbounded) ubp_ev;
-- *auxvec != NULL; ++auxvec);
-- ++auxvec;
-- _dl_aux_init ((ElfW(auxv_t) *) auxvec);
-+# ifndef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec;
-+ {
-+ char *__unbounded *__unbounded evp = ubp_ev;
-+ while (*evp++ != NULL)
-+ ;
-+ auxvec = (ElfW(auxv_t) *__unbounded) evp;
-+ }
-+# endif
-+ _dl_aux_init (auxvec);
- # endif
- # ifdef DL_SYSDEP_OSCHECK
- if (!__libc_multiple_libcs)
-@@ -106,13 +141,6 @@
- if (__pthread_initialize_minimal)
- # endif
- __pthread_initialize_minimal ();
--
-- /* Some security at this point. Prevent starting a SUID binary where
-- the standard file descriptors are not opened. We have to do this
-- only for statically linked applications since otherwise the dynamic
-- loader did the work already. */
-- if (__builtin_expect (__libc_enable_secure, 0))
-- __libc_check_standard_fds ();
- #endif
-
- /* Register the destructor of the dynamic linker if there is any. */
-@@ -130,47 +158,71 @@
- if (fini)
- __cxa_atexit ((void (*) (void *)) fini, NULL, NULL);
-
-+#ifndef SHARED
-+ /* Some security at this point. Prevent starting a SUID binary where
-+ the standard file descriptors are not opened. We have to do this
-+ only for statically linked applications since otherwise the dynamic
-+ loader did the work already. */
-+ if (__builtin_expect (__libc_enable_secure, 0))
-+ __libc_check_standard_fds ();
-+#endif
-+
- /* Call the initializer of the program, if any. */
- #ifdef SHARED
- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
- _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
- #endif
- if (init)
-- (*init) ();
-+ (*init) (
-+#ifdef INIT_MAIN_ARGS
-+ argc, argv, __environ MAIN_AUXVEC_PARAM
-+#endif
-+ );
-
- #ifdef SHARED
- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
- _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);
- #endif
-
--#ifdef HAVE_CANCELBUF
-- if (setjmp (THREAD_SELF->cancelbuf) == 0)
--#endif
-+#ifdef HAVE_CLEANUP_JMP_BUF
-+ /* Memory for the cancellation buffer. */
-+ struct pthread_unwind_buf unwind_buf;
-+
-+ int not_first_call;
-+ not_first_call = setjmp ((struct __jmp_buf_tag *) unwind_buf.cancel_jmp_buf);
-+ if (__builtin_expect (! not_first_call, 1))
- {
-- /* XXX This is where the try/finally handling must be used. */
-+ struct pthread *self = THREAD_SELF;
-+
-+ /* Store old info. */
-+ unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf);
-+ unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup);
-+
-+ /* Store the new cleanup handler info. */
-+ THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf);
-
-- result = main (argc, argv, __environ);
-+ /* Run the program. */
-+ result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
- }
--#ifdef HAVE_CANCELBUF
- else
- {
--# ifdef HAVE_PTR_NTHREADS
- /* One less thread. Decrement the counter. If it is zero we
- terminate the entire process. */
- result = 0;
-- int *const ptr;
--# ifdef SHARED
-- ptr = __libc_pthread_functions.ptr_nthreads;
--# else
-+# ifdef SHARED
-+ int *const ptr = __libc_pthread_functions.ptr_nthreads;
-+# else
- extern int __nptl_nthreads __attribute ((weak));
-- ptr = &__nptl_nthreads;
--# endif
-+ int *const ptr = &__nptl_nthreads;
-+# endif
-
- if (! atomic_decrement_and_test (ptr))
--# endif
- /* Not much left to do but to exit the thread, not the process. */
- __exit_thread (0);
- }
-+#else
-+ /* Nothing fancy, just call the function. */
-+ result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
- #endif
-
- exit (result);
---- glibc-2.3.2/sysdeps/generic/libc_fatal.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/libc_fatal.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 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
-@@ -28,3 +28,4 @@
-
- abort ();
- }
-+libc_hidden_def (__libc_fatal)
---- glibc-2.3.2/sysdeps/generic/lockf.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/lockf.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1994, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1994,1996,1997,1998,2000,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
-@@ -67,5 +67,8 @@
- return -1;
- }
-
-+ /* lockf() is a cancellation point but so is fcntl() if F_SETLKW is
-+ used. Therefore we don't have to care about cancellation here,
-+ the fcntl() function will take care of it. */
- return __fcntl (fd, cmd, &fl);
- }
---- glibc-2.3.2/sysdeps/generic/madvise.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/madvise.c 2003-08-21 08:37:08.000000000 -0400
-@@ -24,11 +24,10 @@
- for the region starting at ADDR and extending LEN bytes. */
-
- int
--posix_madvise (__ptr_t addr, size_t len, int advice)
-+madvise (__ptr_t addr, size_t len, int advice)
- {
- __set_errno (ENOSYS);
- return -1;
- }
--weak_alias (posix_madvise, madvise)
- stub_warning (madvise)
- #include <stub-tag.h>
---- glibc-2.3.2/sysdeps/generic/memchr.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/memchr.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,93,96,97,99,2000,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
- with help from Dan Sahlin (dan@sics.se) and
-@@ -212,3 +212,4 @@
- #ifdef weak_alias
- weak_alias (__memchr, BP_SYM (memchr))
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/generic/memcmp.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/memcmp.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1993,1995,1997,1998,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
-
-@@ -131,9 +131,6 @@
- /* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
- objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
- memory operations on `op_t's. */
--#ifdef __GNUC__
--__inline
--#endif
- static int
- memcmp_common_alignment (srcp1, srcp2, len)
- long int srcp1;
-@@ -221,9 +218,6 @@
- /* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
- `op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
- operations on `op_t', but SRCP1 *should be unaligned*. */
--#ifdef __GNUC__
--__inline
--#endif
- static int
- memcmp_not_common_alignment (srcp1, srcp2, len)
- long int srcp1;
---- glibc-2.3.2/sysdeps/generic/memcpy.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/memcpy.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Copy memory to memory until the specified number of bytes
- has been copied. Overlap is NOT handled correctly.
-- Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
-
-@@ -62,3 +62,4 @@
-
- return dstpp;
- }
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/generic/memmove.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/memmove.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Copy memory to memory until the specified number of bytes
- has been copied. Overlap is handled correctly.
-- Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
-
-@@ -107,3 +107,6 @@
-
- RETURN (dest);
- }
-+#ifndef memmove
-+libc_hidden_builtin_def (memmove)
-+#endif
---- glibc-2.3.2/sysdeps/generic/memset.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/memset.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1997, 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
-@@ -88,3 +88,4 @@
-
- return dstpp;
- }
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/generic/not-cancel.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/not-cancel.h 2003-09-19 22:37:07.000000000 -0400
-@@ -0,0 +1,39 @@
-+/* Uncancelable versions of cancelable interfaces. Generic version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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. */
-+
-+/* By default we have none. Map the name to the normal functions. */
-+#define open_not_cancel(name, flags, mode) \
-+ __libc_open (name, flags, mode)
-+#define open_not_cancel_2(name, flags) \
-+ __libc_open (name, flags)
-+#define close_not_cancel(fd) \
-+ __close (fd)
-+#define close_not_cancel_no_status(fd) \
-+ (void) __close (fd)
-+#define read_not_cancel(fd, buf, n) \
-+ __read (fd, buf, n)
-+#define write_not_cancel(fd, buf, n) \
-+ __write (fd, buf, n)
-+#define writev_not_cancel_no_status(fd, iov, n) \
-+ (void) __writev (fd, iov, n)
-+#define fcntl_not_cancel(fd, cmd, val) \
-+ __fcntl (fd, cmd, val)
-+# define waitpid_not_cancel(pid, stat_loc, options) \
-+ __waitpid (pid, stat_loc, options)
---- glibc-2.3.2/sysdeps/generic/posix_fadvise.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/posix_fadvise.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -23,10 +23,9 @@
- respect to the file associated with FD. */
-
- int
--posix_fadvise (int fd, __off_t offset, size_t len, int advise)
-+posix_fadvise (int fd, __off_t offset, __off_t len, int advise)
- {
-- __set_errno (ENOSYS);
-- return -1;
-+ return ENOSYS;
- }
- stub_warning (posix_fadvise)
- #include <stub-tag.h>
---- glibc-2.3.2/sysdeps/generic/posix_fadvise64.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/posix_fadvise64.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -23,10 +23,9 @@
- respect to the file associated with FD. */
-
- int
--posix_fadvise64 (int fd, __off64_t offset, size_t len, int advise)
-+posix_fadvise64 (int fd, __off64_t offset, __off64_t len, int advise)
- {
-- __set_errno (ENOSYS);
-- return -1;
-+ return ENOSYS;
- }
- stub_warning (posix_fadvise64)
- #include <stub-tag.h>
---- glibc-2.3.2/sysdeps/generic/posix_fallocate.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/posix_fallocate.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -22,7 +22,7 @@
- /* Reserve storage for the data of the file associated with FD. */
-
- int
--posix_fallocate (int fd, __off_t offset, size_t len)
-+posix_fallocate (int fd, __off_t offset, __off_t len)
- {
- __set_errno (ENOSYS);
- return -1;
---- glibc-2.3.2/sysdeps/generic/posix_fallocate64.c 2001-07-07 15:21:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/posix_fallocate64.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -22,7 +22,7 @@
- /* Reserve storage for the data of the file associated with FD. */
-
- int
--posix_fallocate64 (int fd, __off64_t offset, size_t len)
-+posix_fallocate64 (int fd, __off64_t offset, __off64_t len)
- {
- __set_errno (ENOSYS);
- return -1;
---- glibc-2.3.2/sysdeps/generic/posix_madvise.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/posix_madvise.c 2003-08-16 02:12:22.000000000 -0400
-@@ -0,0 +1,32 @@
-+/* Copyright (C) 1994, 1995, 1996, 1997, 2000 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 <sys/types.h>
-+#include <sys/mman.h>
-+#include <errno.h>
-+
-+/* Advise the system about particular usage patterns the program follows
-+ for the region starting at ADDR and extending LEN bytes. */
-+
-+int
-+posix_madvise (__ptr_t addr, size_t len, int advice)
-+{
-+ return ENOSYS;
-+}
-+stub_warning (posix_madvise)
-+#include <stub-tag.h>
---- glibc-2.3.2/sysdeps/generic/pselect.c 2002-12-15 02:27:46.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/pselect.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -50,6 +50,9 @@
- if (sigmask != NULL)
- __sigprocmask (SIG_SETMASK, sigmask, &savemask);
-
-+ /* Note the pselect() is a cancellation point. But since we call
-+ select() which itself is a cancellation point we do not have
-+ to do anything here. */
- retval = __select (nfds, readfds, writefds, exceptfds,
- timeout != NULL ? &tval : NULL);
-
---- glibc-2.3.2/sysdeps/generic/remap_file_pages.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/remap_file_pages.c 2003-03-03 04:44:55.000000000 -0500
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 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 <sys/mman.h>
-+#include <errno.h>
-+
-+/* Remap arbitrary pages of a shared backing store within an existing
-+ VMA. */
-+
-+int
-+__remap_file_pages (void *start, size_t size, int prot, size_t pgoff,
-+ int flags)
-+{
-+ __set_errno (ENOSYS);
-+ return -1;
-+}
-+
-+stub_warning (remap_file_pages)
-+#include <stub-tag.h>
-+weak_alias (__remap_file_pages, remap_file_pages)
---- glibc-2.3.2/sysdeps/generic/res-state.c 2002-12-31 14:14:22.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/res-state.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 97, 98, 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
-@@ -20,17 +20,26 @@
- #include <tls.h>
-
- #if ! USE___THREAD
-+
- # undef _res
- extern struct __res_state _res;
--#endif
-
- /* When threaded, _res may be a per-thread variable. */
- struct __res_state *
--#if ! USE___THREAD
- weak_const_function
--#endif
- __res_state (void)
- {
- return &_res;
- }
-+
-+#else
-+
-+struct __res_state *
-+__res_state (void)
-+{
-+ return __resp;
-+}
-+
-+#endif
-+
- libc_hidden_def (__res_state)
---- glibc-2.3.2/sysdeps/generic/sched_getaffinity.c 2003-02-06 14:12:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/sched_getaffinity.c 2003-05-12 12:13:06.000000000 -0400
-@@ -17,16 +17,15 @@
- 02111-1307 USA. */
-
- #include <errno.h>
--#include <sys/types.h>
- #include <sched.h>
-+#include <sys/types.h>
-
-
- /* Retrieve the CPU affinity mask for a particular process. */
- int
--sched_getaffinity (pid, len, mask)
-+sched_getaffinity (pid, cpuset)
- pid_t pid;
-- unsigned int len;
-- unsigned long int *mask;
-+ cpu_set_t *cpuset;
- {
- __set_errno (ENOSYS);
- return -1;
---- glibc-2.3.2/sysdeps/generic/sched_setaffinity.c 2003-02-06 14:13:06.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/sched_setaffinity.c 2003-05-12 12:13:06.000000000 -0400
-@@ -23,10 +23,9 @@
-
- /* Retrieve the CPU affinity mask for a particular process. */
- int
--sched_setaffinity (pid, len, mask)
-+sched_setaffinity (pid, cpuset)
- pid_t pid;
-- unsigned int len;
-- unsigned long int *mask;
-+ const cpu_set_t *cpuset;
- {
- __set_errno (ENOSYS);
- return -1;
---- glibc-2.3.2/sysdeps/generic/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/semtimedop.c 2003-04-02 18:44:57.000000000 -0500
-@@ -0,0 +1,37 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 <sys/sem.h>
-+#include <errno.h>
-+
-+/* Perform user-defined atomical operation of array of semaphores. */
-+
-+int
-+semtimedop (semid, sops, nsops, timeout)
-+ int semid;
-+ struct sembuf *sops;
-+ size_t nsops;
-+ const struct timespec *timeout;
-+{
-+ __set_errno (ENOSYS);
-+ return -1;
-+}
-+
-+stub_warning (semtimedop)
-+#include <stub-tag.h>
---- glibc-2.3.2/sysdeps/generic/sigfillset.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/sigfillset.c 2003-04-21 03:45:03.000000000 -0400
-@@ -0,0 +1,43 @@
-+/* Copyright (C) 1991,96,97,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 <errno.h>
-+#include <signal.h>
-+#include <string.h>
-+
-+/* Set all signals in SET. */
-+int
-+sigfillset (set)
-+ sigset_t *set;
-+{
-+ if (set == NULL)
-+ {
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+
-+ memset (set, 0xff, sizeof (sigset_t));
-+
-+ /* If the implementation uses a cancellation signal don't set the bit. */
-+#ifdef SIGCANCEL
-+ __sigdelset (set, SIGCANCEL);
-+#endif
-+
-+ return 0;
-+}
-+libc_hidden_def (sigfillset)
---- glibc-2.3.2/sysdeps/generic/strcat.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strcat.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1997, 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
-@@ -49,3 +49,4 @@
-
- return dest;
- }
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/generic/strchr.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strchr.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,93,94,95,96,97,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,93,94,95,96,97,99,2000,03 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
- with help from Dan Sahlin (dan@sics.se) and
-@@ -187,3 +187,4 @@
- #undef index
- weak_alias (strchr, index)
- #endif
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/generic/strcmp.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strcmp.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 1997, 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
-@@ -44,3 +44,4 @@
-
- return c1 - c2;
- }
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/generic/strcpy.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strcpy.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1997, 2000, 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
-@@ -47,3 +47,4 @@
-
- return dest;
- }
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/generic/strcspn.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strcspn.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1994, 1996, 1997, 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
-@@ -48,3 +48,4 @@
-
- return count;
- }
-+libc_hidden_builtin_def (strcspn)
---- glibc-2.3.2/sysdeps/generic/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/string-inlines.c 2003-04-29 18:49:00.000000000 -0400
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 1999, 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. */
-+
-+/* <bits/string.h> and <bits/string2.h> declare some extern inline
-+ functions. These functions are declared additionally here if
-+ inlining is not possible. */
-+
-+#undef __USE_STRING_INLINES
-+#define __USE_STRING_INLINES
-+#define _FORCE_INLINES
-+#define __STRING_INLINE /* empty */
-+#define __NO_INLINE__
-+
-+#include <string.h>
-+#undef index
-+#undef rindex
-+
-+#undef __NO_INLINE__
-+#include <bits/string.h>
-+#include <bits/string2.h>
---- glibc-2.3.2/sysdeps/generic/strlen.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strlen.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1993, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1993, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Torbjorn Granlund (tege@sics.se),
- with help from Dan Sahlin (dan@sics.se);
-@@ -150,3 +150,4 @@
- }
- }
- }
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/generic/strncmp.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strncmp.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 1997, 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
-@@ -70,3 +70,4 @@
-
- return c1 - c2;
- }
-+libc_hidden_builtin_def (strncmp)
---- glibc-2.3.2/sysdeps/generic/strncpy.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strncpy.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1997, 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
-@@ -84,3 +84,4 @@
-
- return s;
- }
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/generic/strpbrk.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strpbrk.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1994, 1996, 1997, 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
-@@ -43,3 +43,4 @@
-
- return NULL;
- }
-+libc_hidden_builtin_def (strpbrk)
---- glibc-2.3.2/sysdeps/generic/strrchr.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strrchr.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1995, 1996, 1997, 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
-@@ -47,3 +47,4 @@
- #undef rindex
- weak_alias (strrchr, rindex)
- #endif
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/generic/strspn.c 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strspn.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1997, 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
-@@ -44,3 +44,4 @@
-
- return count;
- }
-+libc_hidden_builtin_def (strspn)
---- glibc-2.3.2/sysdeps/generic/strstr.c 2001-12-24 04:10:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/strstr.c 2003-05-12 12:13:06.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Return the offset of one string within another.
-- Copyright (C) 1994, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1994,1996,1997,2000,2001,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
-@@ -120,3 +120,4 @@
- ret0:
- return 0;
- }
-+libc_hidden_builtin_def (strstr)
---- glibc-2.3.2/sysdeps/generic/strtol.c 2002-08-28 06:14:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/strtol.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Convert string representation of a number into an integer value.
-- Copyright (C) 1991,92,94,95,96,97,98,99,2000,01,02
-+ Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001,2002,2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -374,7 +374,11 @@
- || (int) (TOUPPER (c) - L_('A') + 10) >= base))
- break;
-
-- end = correctly_grouped_prefix (s, end, thousands, grouping);
-+# ifdef USE_WIDE_CHAR
-+ end = __correctly_grouped_prefixwc (s, end, thousands, grouping);
-+# else
-+ end = __correctly_grouped_prefixmb (s, end, thousands, grouping);
-+# endif
- }
- }
- else
---- glibc-2.3.2/sysdeps/generic/sysdep.h 2003-01-09 14:43:34.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/sysdep.h 2003-09-19 22:37:07.000000000 -0400
-@@ -46,4 +46,90 @@
- #ifndef JUMPTARGET
- #define JUMPTARGET(sym) sym
- #endif
-+
-+/* Makros to generate eh_frame unwind information. */
-+# ifdef HAVE_ASM_CFI_DIRECTIVES
-+# define cfi_startproc .cfi_startproc
-+# define cfi_endproc .cfi_endproc
-+# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
-+# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
-+# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
-+# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
-+# define cfi_offset(reg, off) .cfi_offset reg, off
-+# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
-+# define cfi_register(r1, r2) .cfi_register r1, r2
-+# define cfi_return_column(reg) .cfi_return_column reg
-+# define cfi_restore(reg) .cfi_restore reg
-+# define cfi_undefined(reg) .cfi_undefined reg
-+# define cfi_remember_state .cfi_remember_state
-+# define cfi_restore_state .cfi_restore_state
-+# define cfi_window_save .cfi_window_save
-+# else
-+# define cfi_startproc
-+# define cfi_endproc
-+# define cfi_def_cfa(reg, off)
-+# define cfi_def_cfa_register(reg)
-+# define cfi_def_cfa_offset(off)
-+# define cfi_adjust_cfa_offset(off)
-+# define cfi_offset(reg, off)
-+# define cfi_rel_offset(reg, off)
-+# define cfi_register(r1, r2)
-+# define cfi_return_column(reg)
-+# define cfi_restore(reg)
-+# define cfi_undefined(reg)
-+# define cfi_remember_state
-+# define cfi_restore_state
-+# define cfi_window_save
-+# endif
-+
-+#else /* ! ASSEMBLER */
-+# ifdef HAVE_ASM_CFI_DIRECTIVES
-+# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
-+# define CFI_STRINGIFY2(Name) #Name
-+# define CFI_STARTPROC ".cfi_startproc"
-+# define CFI_ENDPROC ".cfi_endproc"
-+# define CFI_DEF_CFA(reg, off) \
-+ ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-+# define CFI_DEF_CFA_REGISTER(reg) \
-+ ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
-+# define CFI_DEF_CFA_OFFSET(off) \
-+ ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
-+# define CFI_ADJUST_CFA_OFFSET(off) \
-+ ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
-+# define CFI_OFFSET(reg, off) \
-+ ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-+# define CFI_REL_OFFSET(reg, off) \
-+ ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-+# define CFI_REGISTER(r1, r2) \
-+ ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
-+# define CFI_RETURN_COLUMN(reg) \
-+ ".cfi_return_column " CFI_STRINGIFY(reg)
-+# define CFI_RESTORE(reg) \
-+ ".cfi_restore " CFI_STRINGIFY(reg)
-+# define CFI_UNDEFINED(reg) \
-+ ".cfi_undefined " CFI_STRINGIFY(reg)
-+# define CFI_REMEMBER_STATE \
-+ ".cfi_remember_state"
-+# define CFI_RESTORE_STATE \
-+ ".cfi_restore_state"
-+# define CFI_WINDOW_SAVE \
-+ ".cfi_window_save"
-+# else
-+# define CFI_STARTPROC
-+# define CFI_ENDPROC
-+# define CFI_DEF_CFA(reg, off)
-+# define CFI_DEF_CFA_REGISTER(reg)
-+# define CFI_DEF_CFA_OFFSET(off)
-+# define CFI_ADJUST_CFA_OFFSET(off)
-+# define CFI_OFFSET(reg, off)
-+# define CFI_REL_OFFSET(reg, off)
-+# define CFI_REGISTER(r1, r2)
-+# define CFI_RETURN_COLUMN(reg)
-+# define CFI_RESTORE(reg)
-+# define CFI_UNDEFINED(reg)
-+# define CFI_REMEMBER_STATE
-+# define CFI_RESTORE_STATE
-+# define CFI_WINDOW_SAVE
-+# endif
-+
- #endif /* __ASSEMBLER__ */
---- glibc-2.3.2/sysdeps/generic/tmpfile.c 2002-06-12 16:57:46.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/tmpfile.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Open a stdio stream on an anonymous temporary file. Generic/POSIX version.
-- Copyright (C) 1991,93,96,97,98,99,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,93,1996-2000,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
-@@ -51,7 +51,7 @@
-
- /* Note that this relies on the Unix semantics that
- a file is not really removed until it is closed. */
-- (void) remove (buf);
-+ (void) __unlink (buf);
-
- if ((f = __fdopen (fd, "w+b")) == NULL)
- __close (fd);
---- glibc-2.3.2/sysdeps/generic/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/tst-stack-align.h 2003-09-17 04:37:25.000000000 -0400
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 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 <stdio.h>
-+#include <stdint.h>
-+
-+#define TEST_STACK_ALIGN() \
-+ ({ \
-+ double _d = 12.0; \
-+ long double _ld = 15.0; \
-+ int _ret = 0; \
-+ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
-+ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
-+ _ret = 1; \
-+ \
-+ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
-+ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
-+ _ret = 1; \
-+ _ret; \
-+ })
---- glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.c 2002-05-14 19:46:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,13 +1,14 @@
- /* Subroutines needed for unwinding stack frames for exception handling. */
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
- Contributed by Jason Merrill <jason@cygnus.com>.
-
--This file is part of GNU CC.
-+This file is part of GCC.
-
--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.
-+GCC 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.
-
- In addition to the permissions in the GNU General Public License, the
- Free Software Foundation gives you unlimited permission to link the
-@@ -18,15 +19,15 @@
- the file, and distribution when not linked into a combine
- executable.)
-
--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.
-+GCC 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 GNU CC; see the file COPYING. If not, write to
--the Free Software Foundation, 59 Temple Place - Suite 330,
--Boston, MA 02111-1307, USA. */
-+along with GCC; see the file COPYING. If not, write to the Free
-+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+02111-1307, USA. */
-
- #ifdef _LIBC
- # include <shlib-compat.h>
-@@ -44,6 +45,7 @@
- #include <unwind-pe.h>
- #include <unwind-dw2-fde.h>
- #else
-+#ifndef _Unwind_Find_FDE
- #include "tconfig.h"
- #include "tsystem.h"
- #include "dwarf2.h"
-@@ -53,6 +55,7 @@
- #include "unwind-dw2-fde.h"
- #include "gthr.h"
- #endif
-+#endif
-
- /* The unseen_objects list contains objects that have been registered
- but not yet categorized in any way. The seen_objects list has had
-@@ -109,7 +112,7 @@
- void *tbase, void *dbase)
- {
- /* If .eh_frame is empty, don't register at all. */
-- if (*(uword *)begin == 0)
-+ if (*(uword *) begin == 0)
- return;
-
- ob->pc_begin = (void *)-1;
-@@ -118,6 +121,9 @@
- ob->u.single = begin;
- ob->s.i = 0;
- ob->s.b.encoding = DW_EH_PE_omit;
-+#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-+ ob->fde_end = NULL;
-+#endif
-
- init_object_mutex_once ();
- __gthread_mutex_lock (&object_mutex);
-@@ -141,7 +147,7 @@
- struct object *ob;
-
- /* If .eh_frame is empty, don't register at all. */
-- if (*(uword *)begin == 0)
-+ if (*(uword *) begin == 0)
- return;
-
- ob = (struct object *) malloc (sizeof (struct object));
-@@ -206,7 +212,7 @@
- struct object *ob = 0;
-
- /* If .eh_frame is empty, we haven't registered. */
-- if (*(uword *)begin == 0)
-+ if (*(uword *) begin == 0)
- return ob;
-
- init_object_mutex_once ();
-@@ -260,7 +266,7 @@
- __deregister_frame (void *begin)
- {
- /* If .eh_frame is empty, we haven't registered. */
-- if (*(uword *)begin != 0)
-+ if (*(uword *) begin != 0)
- free (INTUSE(__deregister_frame_info_bases) (begin));
- }
-
-@@ -297,18 +303,20 @@
- {
- const unsigned char *aug, *p;
- _Unwind_Ptr dummy;
-+ _Unwind_Word utmp;
-+ _Unwind_Sword stmp;
-
- aug = cie->augmentation;
- if (aug[0] != 'z')
- return DW_EH_PE_absptr;
-
- p = aug + strlen (aug) + 1; /* Skip the augmentation string. */
-- p = read_uleb128 (p, &dummy); /* Skip code alignment. */
-- p = read_sleb128 (p, &dummy); /* Skip data alignment. */
-+ p = read_uleb128 (p, &utmp); /* Skip code alignment. */
-+ p = read_sleb128 (p, &stmp); /* Skip data alignment. */
- p++; /* Skip return address column. */
-
- aug++; /* Skip 'z' */
-- p = read_uleb128 (p, &dummy); /* Skip augmentation length. */
-+ p = read_uleb128 (p, &utmp); /* Skip augmentation length. */
- while (1)
- {
- /* This is what we're looking for. */
-@@ -345,14 +353,21 @@
-
- /* Comparison routines. Three variants of increasing complexity. */
-
--static saddr
-+static int
- fde_unencoded_compare (struct object *ob __attribute__((unused)),
- fde *x, fde *y)
- {
-- return *(saddr *)x->pc_begin - *(saddr *)y->pc_begin;
-+ _Unwind_Ptr x_ptr = *(_Unwind_Ptr *) x->pc_begin;
-+ _Unwind_Ptr y_ptr = *(_Unwind_Ptr *) y->pc_begin;
-+
-+ if (x_ptr > y_ptr)
-+ return 1;
-+ if (x_ptr < y_ptr)
-+ return -1;
-+ return 0;
- }
-
--static saddr
-+static int
- fde_single_encoding_compare (struct object *ob, fde *x, fde *y)
- {
- _Unwind_Ptr base, x_ptr, y_ptr;
-@@ -361,10 +376,14 @@
- read_encoded_value_with_base (ob->s.b.encoding, base, x->pc_begin, &x_ptr);
- read_encoded_value_with_base (ob->s.b.encoding, base, y->pc_begin, &y_ptr);
-
-- return x_ptr - y_ptr;
-+ if (x_ptr > y_ptr)
-+ return 1;
-+ if (x_ptr < y_ptr)
-+ return -1;
-+ return 0;
- }
-
--static saddr
-+static int
- fde_mixed_encoding_compare (struct object *ob, fde *x, fde *y)
- {
- int x_encoding, y_encoding;
-@@ -378,10 +397,14 @@
- read_encoded_value_with_base (y_encoding, base_from_object (y_encoding, ob),
- y->pc_begin, &y_ptr);
-
-- return x_ptr - y_ptr;
-+ if (x_ptr > y_ptr)
-+ return 1;
-+ if (x_ptr < y_ptr)
-+ return -1;
-+ return 0;
- }
-
--typedef saddr (*fde_compare_t) (struct object *, fde *, fde *);
-+typedef int (*fde_compare_t) (struct object *, fde *, fde *);
-
-
- /* This is a special mix of insertion sort and heap sort, optimized for
-@@ -401,7 +424,7 @@
- struct fde_vector *erratic;
- };
-
--static inline int
-+static int
- start_fde_sort (struct fde_accumulator *accu, size_t count)
- {
- size_t size;
-@@ -439,7 +462,7 @@
- chain to determine what should be placed in the ERRATIC array, and
- what is the linear sequence. This overlay is safe from aliasing. */
-
--static inline void
-+static void
- fde_split (struct object *ob, fde_compare_t fde_compare,
- struct fde_vector *linear, struct fde_vector *erratic)
- {
-@@ -459,13 +482,13 @@
- fde **probe;
-
- for (probe = chain_end;
-- probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
-- probe = chain_end)
-- {
-- chain_end = (fde **)erratic->array[probe - linear->array];
-- erratic->array[probe - linear->array] = NULL;
-- }
-- erratic->array[i] = (fde *)chain_end;
-+ probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
-+ probe = chain_end)
-+ {
-+ chain_end = (fde **) erratic->array[probe - linear->array];
-+ erratic->array[probe - linear->array] = NULL;
-+ }
-+ erratic->array[i] = (fde *) chain_end;
- chain_end = &linear->array[i];
- }
-
-@@ -490,11 +513,11 @@
- {
- /* For a description of this algorithm, see:
- Samuel P. Harbison, Guy L. Steele Jr.: C, a reference manual, 2nd ed.,
-- p. 60-61. */
-+ p. 60-61. */
- fde ** a = erratic->array;
- /* A portion of the array is called a "heap" if for all i>=0:
- If i and 2i+1 are valid indices, then a[i] >= a[2i+1].
-- If i and 2i+2 are valid indices, then a[i] >= a[2i+2]. */
-+ If i and 2i+2 are valid indices, then a[i] >= a[2i+2]. */
- #define SWAP(x,y) do { fde * tmp = x; x = y; y = tmp; } while (0)
- size_t n = erratic->count;
- size_t m = n;
-@@ -502,54 +525,54 @@
-
- while (m > 0)
- {
-- /* Invariant: a[m..n-1] is a heap. */
-+ /* Invariant: a[m..n-1] is a heap. */
- m--;
- for (i = m; 2*i+1 < n; )
-- {
-- if (2*i+2 < n
-- && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-- && fde_compare (ob, a[2*i+2], a[i]) > 0)
-- {
-- SWAP (a[i], a[2*i+2]);
-- i = 2*i+2;
-- }
-- else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-- {
-- SWAP (a[i], a[2*i+1]);
-- i = 2*i+1;
-- }
-- else
-- break;
-- }
-+ {
-+ if (2*i+2 < n
-+ && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-+ && fde_compare (ob, a[2*i+2], a[i]) > 0)
-+ {
-+ SWAP (a[i], a[2*i+2]);
-+ i = 2*i+2;
-+ }
-+ else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-+ {
-+ SWAP (a[i], a[2*i+1]);
-+ i = 2*i+1;
-+ }
-+ else
-+ break;
-+ }
- }
- while (n > 1)
- {
-- /* Invariant: a[0..n-1] is a heap. */
-+ /* Invariant: a[0..n-1] is a heap. */
- n--;
- SWAP (a[0], a[n]);
- for (i = 0; 2*i+1 < n; )
-- {
-- if (2*i+2 < n
-- && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-- && fde_compare (ob, a[2*i+2], a[i]) > 0)
-- {
-- SWAP (a[i], a[2*i+2]);
-- i = 2*i+2;
-- }
-- else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-- {
-- SWAP (a[i], a[2*i+1]);
-- i = 2*i+1;
-- }
-- else
-- break;
-- }
-+ {
-+ if (2*i+2 < n
-+ && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-+ && fde_compare (ob, a[2*i+2], a[i]) > 0)
-+ {
-+ SWAP (a[i], a[2*i+2]);
-+ i = 2*i+2;
-+ }
-+ else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-+ {
-+ SWAP (a[i], a[2*i+1]);
-+ i = 2*i+1;
-+ }
-+ else
-+ break;
-+ }
- }
- #undef SWAP
- }
-
--/* Merge V1 and V2, both sorted, and put the result into V1. */
--static inline void
-+/* Merge V1 and V2, both sorted, and put the result into V1. */
-+static void
- fde_merge (struct object *ob, fde_compare_t fde_compare,
- struct fde_vector *v1, struct fde_vector *v2)
- {
-@@ -560,21 +583,23 @@
- if (i2 > 0)
- {
- i1 = v1->count;
-- do {
-- i2--;
-- fde2 = v2->array[i2];
-- while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0)
-- {
-- v1->array[i1+i2] = v1->array[i1-1];
-- i1--;
-- }
-- v1->array[i1+i2] = fde2;
-- } while (i2 > 0);
-+ do
-+ {
-+ i2--;
-+ fde2 = v2->array[i2];
-+ while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0)
-+ {
-+ v1->array[i1+i2] = v1->array[i1-1];
-+ i1--;
-+ }
-+ v1->array[i1+i2] = fde2;
-+ }
-+ while (i2 > 0);
- v1->count += v2->count;
- }
- }
-
--static inline void
-+static void
- end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count)
- {
- fde_compare_t fde_compare;
-@@ -619,7 +644,7 @@
- int encoding = DW_EH_PE_absptr;
- _Unwind_Ptr base = 0;
-
-- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
-+ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
- {
- struct dwarf_cie *this_cie;
- _Unwind_Ptr mask, pc_begin;
-@@ -659,8 +684,8 @@
- continue;
-
- count += 1;
-- if ((void *)pc_begin < ob->pc_begin)
-- ob->pc_begin = (void *)pc_begin;
-+ if ((void *) pc_begin < ob->pc_begin)
-+ ob->pc_begin = (void *) pc_begin;
- }
-
- return count;
-@@ -673,7 +698,7 @@
- int encoding = ob->s.b.encoding;
- _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
-
-- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
-+ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
- {
- struct dwarf_cie *this_cie;
-
-@@ -696,7 +721,7 @@
-
- if (encoding == DW_EH_PE_absptr)
- {
-- if (*(_Unwind_Ptr *)this_fde->pc_begin == 0)
-+ if (*(_Unwind_Ptr *) this_fde->pc_begin == 0)
- continue;
- }
- else
-@@ -729,7 +754,7 @@
- be faster. We can be called multiple times, should we have failed to
- allocate a sorted fde array on a previous occasion. */
-
--static inline void
-+static void
- init_object (struct object* ob)
- {
- struct fde_accumulator accu;
-@@ -764,7 +789,7 @@
- {
- fde **p;
- for (p = ob->u.array; *p; ++p)
-- add_fdes (ob, &accu, *p);
-+ add_fdes (ob, &accu, *p);
- }
- else
- add_fdes (ob, &accu, ob->u.single);
-@@ -790,7 +815,7 @@
- int encoding = ob->s.b.encoding;
- _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
-
-- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
-+ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
- {
- struct dwarf_cie *this_cie;
- _Unwind_Ptr pc_begin, pc_range;
-@@ -814,8 +839,8 @@
-
- if (encoding == DW_EH_PE_absptr)
- {
-- pc_begin = ((_Unwind_Ptr *)this_fde->pc_begin)[0];
-- pc_range = ((_Unwind_Ptr *)this_fde->pc_begin)[1];
-+ pc_begin = ((_Unwind_Ptr *) this_fde->pc_begin)[0];
-+ pc_range = ((_Unwind_Ptr *) this_fde->pc_begin)[1];
- if (pc_begin == 0)
- continue;
- }
-@@ -842,8 +867,8 @@
- continue;
- }
-
-- if ((_Unwind_Ptr)pc - pc_begin < pc_range)
-- return this_fde;
-+ if ((_Unwind_Ptr) pc - pc_begin < pc_range)
-+ return this_fde;
- }
-
- return NULL;
-@@ -852,7 +877,7 @@
- /* Binary search for an FDE containing the given PC. Here are three
- implementations of increasing complexity. */
-
--static inline fde *
-+static fde *
- binary_search_unencoded_fdes (struct object *ob, void *pc)
- {
- struct fde_vector *vec = ob->u.sort;
-@@ -865,8 +890,8 @@
- void *pc_begin;
- uaddr pc_range;
-
-- pc_begin = ((void **)f->pc_begin)[0];
-- pc_range = ((uaddr *)f->pc_begin)[1];
-+ pc_begin = ((void **) f->pc_begin)[0];
-+ pc_range = ((uaddr *) f->pc_begin)[1];
-
- if (pc < pc_begin)
- hi = i;
-@@ -879,7 +904,7 @@
- return NULL;
- }
-
--static inline fde *
-+static fde *
- binary_search_single_encoding_fdes (struct object *ob, void *pc)
- {
- struct fde_vector *vec = ob->u.sort;
-@@ -898,9 +923,9 @@
- &pc_begin);
- read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
-
-- if ((_Unwind_Ptr)pc < pc_begin)
-+ if ((_Unwind_Ptr) pc < pc_begin)
- hi = i;
-- else if ((_Unwind_Ptr)pc >= pc_begin + pc_range)
-+ else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
- lo = i + 1;
- else
- return f;
-@@ -909,7 +934,7 @@
- return NULL;
- }
-
--static inline fde *
-+static fde *
- binary_search_mixed_encoding_fdes (struct object *ob, void *pc)
- {
- struct fde_vector *vec = ob->u.sort;
-@@ -929,9 +954,9 @@
- f->pc_begin, &pc_begin);
- read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
-
-- if ((_Unwind_Ptr)pc < pc_begin)
-+ if ((_Unwind_Ptr) pc < pc_begin)
- hi = i;
-- else if ((_Unwind_Ptr)pc >= pc_begin + pc_range)
-+ else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
- lo = i + 1;
- else
- return f;
-@@ -969,14 +994,14 @@
- {
- /* Long slow labourious linear search, cos we've no memory. */
- if (ob->s.b.from_array)
-- {
-- fde **p;
-+ {
-+ fde **p;
- for (p = ob->u.array; *p ; p++)
- {
- fde *f = linear_search_fdes (ob, *p, pc);
-- if (f)
-+ if (f)
- return f;
-- }
-+ }
- return NULL;
- }
- else
---- glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.h 2001-11-15 18:09:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.h 2003-04-24 20:05:59.000000000 -0400
-@@ -1,13 +1,14 @@
- /* Subroutines needed for unwinding stack frames for exception handling. */
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
- Contributed by Jason Merrill <jason@cygnus.com>.
-
--This file is part of GNU CC.
-+This file is part of GCC.
-
--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.
-+GCC 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.
-
- In addition to the permissions in the GNU General Public License, the
- Free Software Foundation gives you unlimited permission to link the
-@@ -18,15 +19,15 @@
- the file, and distribution when not linked into a combine
- executable.)
-
--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.
-+GCC 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 GNU CC; see the file COPYING. If not, write to
--the Free Software Foundation, 59 Temple Place - Suite 330,
--Boston, MA 02111-1307, USA. */
-+along with GCC; see the file COPYING. If not, write to the Free
-+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+02111-1307, USA. */
-
-
- struct fde_vector
-@@ -57,12 +58,16 @@
- unsigned long mixed_encoding : 1;
- unsigned long encoding : 8;
- /* ??? Wish there was an easy way to detect a 64-bit host here;
-- we've got 32 bits left to play with... */
-+ we've got 32 bits left to play with... */
- unsigned long count : 21;
- } b;
- size_t i;
- } s;
-
-+#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-+ char *fde_end;
-+#endif
-+
- struct object *next;
- };
- #endif
-@@ -116,7 +121,7 @@
- is located, and what the register lifetimes and stack layout are
- within the function.
-
-- The data structures are defined in the DWARF specfication, although
-+ The data structures are defined in the DWARF specification, although
- not in a very readable way (see LITERATURE).
-
- Every time an exception is thrown, the code needs to locate the FDE
-@@ -125,7 +130,7 @@
- a) in a linear search, find the shared image (i.e. DLL) containing
- the PC
- b) using the FDE table for that shared object, locate the FDE using
-- binary search (which requires the sorting). */
-+ binary search (which requires the sorting). */
-
- /* The first few fields of a CIE. The CIE_id field is 0 for a CIE,
- to distinguish it from a valid FDE. FDEs are aligned to an addressing
-@@ -159,7 +164,17 @@
- static inline fde *
- next_fde (fde *f)
- {
-- return (fde *)((char *)f + f->length + sizeof (f->length));
-+ return (fde *) ((char *) f + f->length + sizeof (f->length));
- }
-
- extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
-+
-+static inline int
-+last_fde (struct object *obj __attribute__ ((__unused__)), fde *f)
-+{
-+#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-+ return (char *)f == obj->fde_end || f->length == 0;
-+#else
-+ return f->length == 0;
-+#endif
-+}
---- glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-01-08 00:01:02.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-08-21 08:37:08.000000000 -0400
-@@ -1,22 +1,23 @@
- /* DWARF2 exception handling and frame unwind runtime interface routines.
-- Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
-
-- This file is part of GNU CC.
-+ This file is part of GCC.
-
-- 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
-+ GCC 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.
-
-- 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.
-+ GCC 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 GNU CC; see the file COPYING. If not, write to
-- the Free Software Foundation, 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
-+ along with GCC; see the file COPYING. If not, write to the Free
-+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+ 02111-1307, USA. */
-
- #ifdef _LIBC
- #include <stdlib.h>
-@@ -37,7 +38,8 @@
- #include "gthr.h"
- #endif
-
--#if !USING_SJLJ_EXCEPTIONS
-+
-+#ifndef __USING_SJLJ_EXCEPTIONS__
-
- #ifndef STACK_GROWS_DOWNWARD
- #define STACK_GROWS_DOWNWARD 0
-@@ -52,7 +54,14 @@
- #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
- #endif
-
--/* This is the register and unwind state for a particular frame. */
-+/* Dwarf frame registers used for pre gcc 3.0 compiled glibc. */
-+#ifndef PRE_GCC3_DWARF_FRAME_REGISTERS
-+#define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
-+#endif
-+
-+/* This is the register and unwind state for a particular frame. This
-+ provides the information necessary to unwind up past a frame and return
-+ to its caller. */
- struct _Unwind_Context
- {
- void *reg[DWARF_FRAME_REGISTERS+1];
-@@ -80,7 +89,7 @@
- {
- struct {
- union {
-- unsigned int reg;
-+ _Unwind_Word reg;
- _Unwind_Sword offset;
- const unsigned char *exp;
- } loc;
-@@ -112,8 +121,8 @@
-
- /* The information we care about from the CIE/FDE. */
- _Unwind_Personality_Fn personality;
-- signed int data_align;
-- unsigned int code_align;
-+ _Unwind_Sword data_align;
-+ _Unwind_Word code_align;
- unsigned char retaddr_column;
- unsigned char fde_encoding;
- unsigned char lsda_encoding;
-@@ -138,10 +147,10 @@
- read_pointer (const void *p) { const union unaligned *up = p; return up->p; }
-
- static inline int
--read_1u (const void *p) { return *(const unsigned char *)p; }
-+read_1u (const void *p) { return *(const unsigned char *) p; }
-
- static inline int
--read_1s (const void *p) { return *(const signed char *)p; }
-+read_1s (const void *p) { return *(const signed char *) p; }
-
- static inline int
- read_2u (const void *p) { const union unaligned *up = p; return up->u2; }
-@@ -170,6 +179,14 @@
- return * (_Unwind_Word *) context->reg[index];
- }
-
-+/* Get the value of the CFA as saved in CONTEXT. */
-+
-+_Unwind_Word
-+_Unwind_GetCFA (struct _Unwind_Context *context)
-+{
-+ return (_Unwind_Ptr) context->cfa;
-+}
-+
- /* Overwrite the saved value for register REG in CONTEXT with VAL. */
-
- inline void
-@@ -206,6 +223,17 @@
- return (_Unwind_Ptr) context->bases.func;
- }
-
-+void *
-+_Unwind_FindEnclosingFunction (void *pc)
-+{
-+ struct dwarf_eh_bases bases;
-+ struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
-+ if (fde)
-+ return bases.func;
-+ else
-+ return NULL;
-+}
-+
- #ifndef __ia64__
- _Unwind_Ptr
- _Unwind_GetDataRelBase (struct _Unwind_Context *context)
-@@ -231,7 +259,7 @@
- const unsigned char *aug = cie->augmentation;
- const unsigned char *p = aug + strlen (aug) + 1;
- const unsigned char *ret = NULL;
-- _Unwind_Ptr tmp;
-+ _Unwind_Word utmp;
-
- /* g++ v2 "eh" has pointer immediately following augmentation string,
- so it must be handled first. */
-@@ -244,8 +272,8 @@
-
- /* Immediately following the augmentation are the code and
- data alignment and return address column. */
-- p = read_uleb128 (p, &tmp); fs->code_align = tmp;
-- p = read_sleb128 (p, &tmp); fs->data_align = (saddr) tmp;
-+ p = read_uleb128 (p, &fs->code_align);
-+ p = read_sleb128 (p, &fs->data_align);
- fs->retaddr_column = *p++;
- fs->lsda_encoding = DW_EH_PE_omit;
-
-@@ -254,8 +282,8 @@
- the size. */
- if (*aug == 'z')
- {
-- p = read_uleb128 (p, &tmp);
-- ret = p + tmp;
-+ p = read_uleb128 (p, &utmp);
-+ ret = p + utmp;
-
- fs->saw_z = 1;
- ++aug;
-@@ -303,7 +331,7 @@
- execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
- struct _Unwind_Context *context, _Unwind_Word initial)
- {
-- _Unwind_Word stack[64]; /* ??? Assume this is enough. */
-+ _Unwind_Word stack[64]; /* ??? Assume this is enough. */
- int stack_elt;
-
- stack[0] = initial;
-@@ -312,9 +340,8 @@
- while (op_ptr < op_end)
- {
- enum dwarf_location_atom op = *op_ptr++;
-- _Unwind_Word result = 0, reg;
-- _Unwind_Sword offset;
-- _Unwind_Ptr ptrtmp;
-+ _Unwind_Word result, reg, utmp;
-+ _Unwind_Sword offset, stmp;
-
- switch (op)
- {
-@@ -391,12 +418,11 @@
- op_ptr += 8;
- break;
- case DW_OP_constu:
-- op_ptr = read_uleb128 (op_ptr, &ptrtmp);
-- result = ptrtmp;
-+ op_ptr = read_uleb128 (op_ptr, &result);
- break;
- case DW_OP_consts:
-- op_ptr = read_sleb128 (op_ptr, &ptrtmp);
-- result = (saddr)ptrtmp;
-+ op_ptr = read_sleb128 (op_ptr, &stmp);
-+ result = stmp;
- break;
-
- case DW_OP_reg0:
-@@ -434,7 +460,7 @@
- result = _Unwind_GetGR (context, op - DW_OP_reg0);
- break;
- case DW_OP_regx:
-- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
-+ op_ptr = read_uleb128 (op_ptr, &reg);
- result = _Unwind_GetGR (context, reg);
- break;
-
-@@ -470,12 +496,12 @@
- case DW_OP_breg29:
- case DW_OP_breg30:
- case DW_OP_breg31:
-- op_ptr = read_sleb128 (op_ptr, &ptrtmp); offset = (saddr)ptrtmp;
-+ op_ptr = read_sleb128 (op_ptr, &offset);
- result = _Unwind_GetGR (context, op - DW_OP_breg0) + offset;
- break;
- case DW_OP_bregx:
-- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
-- op_ptr = read_sleb128 (op_ptr, &ptrtmp); offset = (saddr)ptrtmp;
-+ op_ptr = read_uleb128 (op_ptr, &reg);
-+ op_ptr = read_sleb128 (op_ptr, &offset);
- result = _Unwind_GetGR (context, reg) + offset;
- break;
-
-@@ -533,14 +559,14 @@
- {
- case DW_OP_deref:
- {
-- void *ptr = (void *)(_Unwind_Ptr) result;
-+ void *ptr = (void *) (_Unwind_Ptr) result;
- result = (_Unwind_Ptr) read_pointer (ptr);
- }
- break;
-
- case DW_OP_deref_size:
- {
-- void *ptr = (void *)(_Unwind_Ptr) result;
-+ void *ptr = (void *) (_Unwind_Ptr) result;
- switch (*op_ptr++)
- {
- case 1:
-@@ -572,12 +598,12 @@
- result = ~result;
- break;
- case DW_OP_plus_uconst:
-- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
-- result += reg;
-+ op_ptr = read_uleb128 (op_ptr, &utmp);
-+ result += utmp;
- break;
-- /* Avoid warnings. */
-+
- default:
-- break;
-+ abort ();
- }
- break;
-
-@@ -597,68 +623,68 @@
- {
- /* Binary operations. */
- _Unwind_Word first, second;
-- if ((stack_elt -= 2) < 0)
-- abort ();
-- second = stack[stack_elt];
-- first = stack[stack_elt + 1];
-+ if ((stack_elt -= 2) < 0)
-+ abort ();
-+ second = stack[stack_elt];
-+ first = stack[stack_elt + 1];
-
-- switch (op)
-- {
-- case DW_OP_and:
-- result = second & first;
-- break;
-- case DW_OP_div:
-- result = (_Unwind_Sword)second / (_Unwind_Sword)first;
-- break;
-- case DW_OP_minus:
-- result = second - first;
-- break;
-- case DW_OP_mod:
-- result = (_Unwind_Sword)second % (_Unwind_Sword)first;
-- break;
-- case DW_OP_mul:
-- result = second * first;
-- break;
-- case DW_OP_or:
-- result = second | first;
-- break;
-- case DW_OP_plus:
-- result = second + first;
-- break;
-- case DW_OP_shl:
-- result = second << first;
-- break;
-- case DW_OP_shr:
-- result = second >> first;
-- break;
-- case DW_OP_shra:
-- result = (_Unwind_Sword)second >> first;
-- break;
-- case DW_OP_xor:
-- result = second ^ first;
-- break;
-- case DW_OP_le:
-- result = (_Unwind_Sword)first <= (_Unwind_Sword)second;
-- break;
-- case DW_OP_ge:
-- result = (_Unwind_Sword)first >= (_Unwind_Sword)second;
-- break;
-- case DW_OP_eq:
-- result = (_Unwind_Sword)first == (_Unwind_Sword)second;
-- break;
-- case DW_OP_lt:
-- result = (_Unwind_Sword)first < (_Unwind_Sword)second;
-- break;
-- case DW_OP_gt:
-- result = (_Unwind_Sword)first > (_Unwind_Sword)second;
-- break;
-- case DW_OP_ne:
-- result = (_Unwind_Sword)first != (_Unwind_Sword)second;
-- break;
-- default:
-- /* Avoid warnings. */
-- break;
-- }
-+ switch (op)
-+ {
-+ case DW_OP_and:
-+ result = second & first;
-+ break;
-+ case DW_OP_div:
-+ result = (_Unwind_Sword) second / (_Unwind_Sword) first;
-+ break;
-+ case DW_OP_minus:
-+ result = second - first;
-+ break;
-+ case DW_OP_mod:
-+ result = (_Unwind_Sword) second % (_Unwind_Sword) first;
-+ break;
-+ case DW_OP_mul:
-+ result = second * first;
-+ break;
-+ case DW_OP_or:
-+ result = second | first;
-+ break;
-+ case DW_OP_plus:
-+ result = second + first;
-+ break;
-+ case DW_OP_shl:
-+ result = second << first;
-+ break;
-+ case DW_OP_shr:
-+ result = second >> first;
-+ break;
-+ case DW_OP_shra:
-+ result = (_Unwind_Sword) second >> first;
-+ break;
-+ case DW_OP_xor:
-+ result = second ^ first;
-+ break;
-+ case DW_OP_le:
-+ result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
-+ break;
-+ case DW_OP_ge:
-+ result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
-+ break;
-+ case DW_OP_eq:
-+ result = (_Unwind_Sword) first == (_Unwind_Sword) second;
-+ break;
-+ case DW_OP_lt:
-+ result = (_Unwind_Sword) first < (_Unwind_Sword) second;
-+ break;
-+ case DW_OP_gt:
-+ result = (_Unwind_Sword) first > (_Unwind_Sword) second;
-+ break;
-+ case DW_OP_ne:
-+ result = (_Unwind_Sword) first != (_Unwind_Sword) second;
-+ break;
-+
-+ default:
-+ abort ();
-+ }
- }
- break;
-
-@@ -687,7 +713,7 @@
- /* Most things push a result value. */
- if ((size_t) stack_elt >= sizeof(stack)/sizeof(*stack))
- abort ();
-- stack[++stack_elt] = result;
-+ stack[stack_elt++] = result;
- no_push:;
- }
-
-@@ -714,20 +740,26 @@
- /* Don't allow remember/restore between CIE and FDE programs. */
- fs->regs.prev = NULL;
-
-+ /* The comparison with the return address uses < rather than <= because
-+ we are only interested in the effects of code before the call; for a
-+ noreturn function, the return address may point to unrelated code with
-+ a different stack configuration that we are not interested in. We
-+ assume that the call itself is unwind info-neutral; if not, or if
-+ there are delay instructions that adjust the stack, these must be
-+ reflected at the point immediately before the call insn. */
- while (insn_ptr < insn_end && fs->pc < context->ra)
- {
- unsigned char insn = *insn_ptr++;
-- _Unwind_Word reg;
-- _Unwind_Sword offset;
-- _Unwind_Ptr ptrtmp;
-+ _Unwind_Word reg, utmp;
-+ _Unwind_Sword offset, stmp;
-
- if ((insn & 0xc0) == DW_CFA_advance_loc)
- fs->pc += (insn & 0x3f) * fs->code_align;
- else if ((insn & 0xc0) == DW_CFA_offset)
- {
- reg = insn & 0x3f;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- offset = ptrtmp * fs->data_align;
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ offset = (_Unwind_Sword) utmp * fs->data_align;
- fs->regs.reg[reg].how = REG_SAVED_OFFSET;
- fs->regs.reg[reg].loc.offset = offset;
- }
-@@ -757,28 +789,31 @@
- break;
-
- case DW_CFA_offset_extended:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- offset = ptrtmp * fs->data_align;
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ offset = (_Unwind_Sword) utmp * fs->data_align;
- fs->regs.reg[reg].how = REG_SAVED_OFFSET;
- fs->regs.reg[reg].loc.offset = offset;
- break;
-
- case DW_CFA_restore_extended:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
- fs->regs.reg[reg].how = REG_UNSAVED;
- break;
-
- case DW_CFA_undefined:
- case DW_CFA_same_value:
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
-+ break;
-+
- case DW_CFA_nop:
- break;
-
- case DW_CFA_register:
- {
- _Unwind_Word reg2;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg2 = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
-+ insn_ptr = read_uleb128 (insn_ptr, &reg2);
- fs->regs.reg[reg].how = REG_SAVED_REG;
- fs->regs.reg[reg].loc.reg = reg2;
- }
-@@ -793,7 +828,7 @@
- unused_rs = unused_rs->prev;
- }
- else
-- new_rs = alloca (sizeof (struct frame_state_reg_info));
-+ new_rs = __builtin_alloca (sizeof (struct frame_state_reg_info));
-
- *new_rs = fs->regs;
- fs->regs.prev = new_rs;
-@@ -810,60 +845,55 @@
- break;
-
- case DW_CFA_def_cfa:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_reg = ptrtmp;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_offset = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ fs->cfa_offset = utmp;
- fs->cfa_how = CFA_REG_OFFSET;
- break;
-
- case DW_CFA_def_cfa_register:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_reg = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
- fs->cfa_how = CFA_REG_OFFSET;
- break;
-
- case DW_CFA_def_cfa_offset:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_offset = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ fs->cfa_offset = utmp;
- /* cfa_how deliberately not set. */
- break;
-
- case DW_CFA_def_cfa_expression:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
- fs->cfa_exp = insn_ptr;
- fs->cfa_how = CFA_EXP;
-- insn_ptr += ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ insn_ptr += utmp;
- break;
-
- case DW_CFA_expression:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
- fs->regs.reg[reg].how = REG_SAVED_EXP;
- fs->regs.reg[reg].loc.exp = insn_ptr;
-- insn_ptr += ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ insn_ptr += utmp;
- break;
-
- /* From the 2.1 draft. */
- case DW_CFA_offset_extended_sf:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-- insn_ptr = read_sleb128 (insn_ptr, &ptrtmp);
-- offset = (saddr)ptrtmp * fs->data_align;
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
-+ insn_ptr = read_sleb128 (insn_ptr, &stmp);
-+ offset = stmp * fs->data_align;
- fs->regs.reg[reg].how = REG_SAVED_OFFSET;
- fs->regs.reg[reg].loc.offset = offset;
- break;
-
- case DW_CFA_def_cfa_sf:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_reg = ptrtmp;
-- insn_ptr = read_sleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_offset = (saddr)ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
-+ insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
- fs->cfa_how = CFA_REG_OFFSET;
- break;
-
- case DW_CFA_def_cfa_offset_sf:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- fs->cfa_offset = ptrtmp;
-+ insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
- /* cfa_how deliberately not set. */
- break;
-
-@@ -877,16 +907,15 @@
- break;
-
- case DW_CFA_GNU_args_size:
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- context->args_size = ptrtmp;
-+ insn_ptr = read_uleb128 (insn_ptr, &context->args_size);
- break;
-
- case DW_CFA_GNU_negative_offset_extended:
- /* Obsoleted by DW_CFA_offset_extended_sf, but used by
- older PowerPC code. */
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
-- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
-- offset = ptrtmp * fs->data_align;
-+ insn_ptr = read_uleb128 (insn_ptr, &reg);
-+ insn_ptr = read_uleb128 (insn_ptr, &utmp);
-+ offset = (_Unwind_Word) utmp * fs->data_align;
- fs->regs.reg[reg].how = REG_SAVED_OFFSET;
- fs->regs.reg[reg].loc.offset = -offset;
- break;
-@@ -897,6 +926,11 @@
- }
- }
-
-+/* Given the _Unwind_Context CONTEXT for a stack frame, look up the FDE for
-+ its caller and decode it into FS. This function also sets the
-+ args_size and lsda members of CONTEXT, as they are really information
-+ about the caller's frame. */
-+
- static _Unwind_Reason_Code
- uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
- {
-@@ -913,7 +947,7 @@
- {
- /* Couldn't find frame unwind info for this function. Try a
- target-specific fallback mechanism. This will necessarily
-- not profide a personality routine or LSDA. */
-+ not provide a personality routine or LSDA. */
- #ifdef MD_FALLBACK_FRAME_STATE_FOR
- MD_FALLBACK_FRAME_STATE_FOR (context, fs, success);
- return _URC_END_OF_STACK;
-@@ -937,12 +971,12 @@
- execute_cfa_program (insn, end, context, fs);
-
- /* Locate augmentation for the fde. */
-- aug = (unsigned char *)fde + sizeof (*fde);
-+ aug = (unsigned char *) fde + sizeof (*fde);
- aug += 2 * size_of_encoded_value (fs->fde_encoding);
- insn = NULL;
- if (fs->saw_z)
- {
-- _Unwind_Ptr i;
-+ _Unwind_Word i;
- aug = read_uleb128 (aug, &i);
- insn = aug + i;
- }
-@@ -965,10 +999,10 @@
- void *eh_ptr;
- long cfa_offset;
- long args_size;
-- long reg_or_offset[DWARF_FRAME_REGISTERS+1];
-+ long reg_or_offset[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
- unsigned short cfa_reg;
- unsigned short retaddr_column;
-- char saved[DWARF_FRAME_REGISTERS+1];
-+ char saved[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
- } frame_state;
-
- #ifndef STATIC
-@@ -1001,7 +1035,7 @@
- if (fs.cfa_how == CFA_EXP)
- return 0;
-
-- for (reg = 0; reg < DWARF_FRAME_REGISTERS + 1; reg++)
-+ for (reg = 0; reg < PRE_GCC3_DWARF_FRAME_REGISTERS + 1; reg++)
- {
- state_in->saved[reg] = fs.regs.reg[reg].how;
- switch (state_in->saved[reg])
-@@ -1036,34 +1070,48 @@
- void *cfa;
- long i;
-
-+#ifdef EH_RETURN_STACKADJ_RTX
-+ /* Special handling here: Many machines do not use a frame pointer,
-+ and track the CFA only through offsets from the stack pointer from
-+ one frame to the next. In this case, the stack pointer is never
-+ stored, so it has no saved address in the context. What we do
-+ have is the CFA from the previous stack frame.
-+
-+ In very special situations (such as unwind info for signal return),
-+ there may be location expressions that use the stack pointer as well.
-+
-+ Do this conditionally for one frame. This allows the unwind info
-+ for one frame to save a copy of the stack pointer from the previous
-+ frame, and be able to use much easier CFA mechanisms to do it.
-+ Always zap the saved stack pointer value for the next frame; carrying
-+ the value over from one frame to another doesn't make sense. */
-+
-+ _Unwind_Word tmp_sp;
-+
-+ if (!orig_context.reg[__builtin_dwarf_sp_column ()])
-+ {
-+ tmp_sp = (_Unwind_Ptr) context->cfa;
-+ orig_context.reg[__builtin_dwarf_sp_column ()] = &tmp_sp;
-+ }
-+ context->reg[__builtin_dwarf_sp_column ()] = NULL;
-+#endif
-+
- /* Compute this frame's CFA. */
- switch (fs->cfa_how)
- {
- case CFA_REG_OFFSET:
-- /* Special handling here: Many machines do not use a frame pointer,
-- and track the CFA only through offsets from the stack pointer from
-- one frame to the next. In this case, the stack pointer is never
-- stored, so it has no saved address in the context. What we do
-- have is the CFA from the previous stack frame. */
-- if (context->reg[fs->cfa_reg] == NULL)
-- cfa = context->cfa;
-- else
-- cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->cfa_reg);
-+ cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (&orig_context, fs->cfa_reg);
- cfa += fs->cfa_offset;
- break;
-
- case CFA_EXP:
-- /* ??? No way of knowing what register number is the stack pointer
-- to do the same sort of handling as above. Assume that if the
-- CFA calculation is so complicated as to require a stack program
-- that this will not be a problem. */
- {
- const unsigned char *exp = fs->cfa_exp;
-- _Unwind_Ptr len;
-+ _Unwind_Word len;
-
- exp = read_uleb128 (exp, &len);
- cfa = (void *) (_Unwind_Ptr)
-- execute_stack_op (exp, exp + len, context, 0);
-+ execute_stack_op (exp, exp + len, &orig_context, 0);
- break;
- }
-
-@@ -1078,16 +1126,19 @@
- {
- case REG_UNSAVED:
- break;
-+
- case REG_SAVED_OFFSET:
- context->reg[i] = cfa + fs->regs.reg[i].loc.offset;
- break;
-+
- case REG_SAVED_REG:
- context->reg[i] = orig_context.reg[fs->regs.reg[i].loc.reg];
- break;
-+
- case REG_SAVED_EXP:
- {
- const unsigned char *exp = fs->regs.reg[i].loc.exp;
-- _Unwind_Ptr len;
-+ _Unwind_Word len;
- _Unwind_Ptr val;
-
- exp = read_uleb128 (exp, &len);
-@@ -1099,6 +1150,11 @@
- }
- }
-
-+/* CONTEXT describes the unwind state for a frame, and FS describes the FDE
-+ of its caller. Update CONTEXT to refer to the caller as well. Note
-+ that the args_size and lsda members are not updated here, but later in
-+ uw_frame_state_for. */
-+
- static void
- uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
- {
-@@ -1113,14 +1169,16 @@
- /* Fill in CONTEXT for top-of-stack. The only valid registers at this
- level will be the return address and the CFA. */
-
--#define uw_init_context(CONTEXT) \
--do { \
-- /* Do any necessary initialization to access arbitrary stack frames. \
-- On the SPARC, this means flushing the register windows. */ \
-- __builtin_unwind_init (); \
-- uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
-- __builtin_return_address (0)); \
--} while (0)
-+#define uw_init_context(CONTEXT) \
-+ do \
-+ { \
-+ /* Do any necessary initialization to access arbitrary stack frames. \
-+ On the SPARC, this means flushing the register windows. */ \
-+ __builtin_unwind_init (); \
-+ uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
-+ __builtin_return_address (0)); \
-+ } \
-+ while (0)
-
- static void
- uw_init_context_1 (struct _Unwind_Context *context,
-@@ -1128,6 +1186,7 @@
- {
- void *ra = __builtin_extract_return_addr (__builtin_return_address (0));
- _Unwind_FrameState fs;
-+ _Unwind_Word sp_slot;
-
- memset (context, 0, sizeof (struct _Unwind_Context));
- context->ra = ra;
-@@ -1136,9 +1195,10 @@
- abort ();
-
- /* Force the frame state to use the known cfa value. */
-- context->cfa = outer_cfa;
-+ sp_slot = (_Unwind_Ptr) outer_cfa;
-+ context->reg[__builtin_dwarf_sp_column ()] = &sp_slot;
- fs.cfa_how = CFA_REG_OFFSET;
-- fs.cfa_reg = 0;
-+ fs.cfa_reg = __builtin_dwarf_sp_column ();
- fs.cfa_offset = 0;
-
- uw_update_context_1 (context, &fs);
-@@ -1154,12 +1214,14 @@
- macro because __builtin_eh_return must be invoked in the context of
- our caller. */
-
--#define uw_install_context(CURRENT, TARGET) \
--do { \
-- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
-- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
-- __builtin_eh_return (offset, handler); \
--} while (0)
-+#define uw_install_context(CURRENT, TARGET) \
-+ do \
-+ { \
-+ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
-+ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
-+ __builtin_eh_return (offset, handler); \
-+ } \
-+ while (0)
-
- static inline void
- init_dwarf_reg_size_table (void)
-@@ -1193,11 +1255,26 @@
- memcpy (c, t, dwarf_reg_size_table[i]);
- }
-
-- /* We adjust SP by the difference between CURRENT and TARGET's CFA. */
-- if (STACK_GROWS_DOWNWARD)
-- return target->cfa - current->cfa + target->args_size;
-- else
-- return current->cfa - target->cfa - target->args_size;
-+#ifdef EH_RETURN_STACKADJ_RTX
-+ {
-+ void *target_cfa;
-+
-+ /* If the last frame records a saved stack pointer, use it. */
-+ if (target->reg[__builtin_dwarf_sp_column ()])
-+ target_cfa = (void *)(_Unwind_Ptr)
-+ _Unwind_GetGR (target, __builtin_dwarf_sp_column ());
-+ else
-+ target_cfa = target->cfa;
-+
-+ /* We adjust SP by the difference between CURRENT and TARGET's CFA. */
-+ if (STACK_GROWS_DOWNWARD)
-+ return target_cfa - current->cfa + target->args_size;
-+ else
-+ return current->cfa - target_cfa - target->args_size;
-+ }
-+#else
-+ return 0;
-+#endif
- }
-
- static inline _Unwind_Ptr
---- glibc-2.3.2/sysdeps/generic/unwind-pe.h 2002-03-18 17:19:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/unwind-pe.h 2003-04-24 20:05:59.000000000 -0400
-@@ -1,28 +1,28 @@
- /* Exception handling and frame unwind runtime interface routines.
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-
-- This file is part of GNU CC.
-+ This file is part of GCC.
-
-- 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
-+ GCC 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.
-
-- 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.
-+ GCC 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 GNU CC; see the file COPYING. If not, write to
-- the Free Software Foundation, 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
-+ along with GCC; see the file COPYING. If not, write to the Free
-+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+ 02111-1307, USA. */
-
- /* @@@ Really this should be out of line, but this also causes link
- compatibility problems with the base ABI. This is slightly better
- than duplicating code, however. */
-
--/* If using C++, references to abort have to be qualified with std::. */
-+/* If using C++, references to abort have to be qualified with std::. */
- #if __cplusplus
- #define __gxx_abort std::abort
- #else
-@@ -52,28 +52,24 @@
- #define DW_EH_PE_indirect 0x80
-
-
--#ifdef _LIBC
-+#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
- /* Prototypes. */
- extern unsigned int size_of_encoded_value (unsigned char encoding);
- extern const unsigned char *read_encoded_value_with_base
- (unsigned char encoding, _Unwind_Ptr base,
- const unsigned char *p, _Unwind_Ptr *val);
--#endif
--
-
-+#else
-
- /* Given an encoding, return the number of bytes the format occupies.
- This is only defined for fixed-size encodings, and so does not
- include leb128. */
-
--#ifndef _LIBC
-+# ifndef _LIBC
- static
--#endif
-+# endif
- unsigned int
- size_of_encoded_value (unsigned char encoding)
--#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
--;
--#else
- {
- if (encoding == DW_EH_PE_omit)
- return 0;
-@@ -125,19 +121,68 @@
-
- #endif
-
-+/* Read an unsigned leb128 value from P, store the value in VAL, return
-+ P incremented past the value. We assume that a word is large enough to
-+ hold any value so encoded; if it is smaller than a pointer on some target,
-+ pointers should not be leb128 encoded on that target. */
-+
-+static const unsigned char *
-+read_uleb128 (const unsigned char *p, _Unwind_Word *val)
-+{
-+ unsigned int shift = 0;
-+ unsigned char byte;
-+ _Unwind_Word result;
-+
-+ result = 0;
-+ do
-+ {
-+ byte = *p++;
-+ result |= (byte & 0x7f) << shift;
-+ shift += 7;
-+ }
-+ while (byte & 0x80);
-+
-+ *val = result;
-+ return p;
-+}
-+
-+/* Similar, but read a signed leb128 value. */
-+
-+static const unsigned char *
-+read_sleb128 (const unsigned char *p, _Unwind_Sword *val)
-+{
-+ unsigned int shift = 0;
-+ unsigned char byte;
-+ _Unwind_Word result;
-+
-+ result = 0;
-+ do
-+ {
-+ byte = *p++;
-+ result |= (byte & 0x7f) << shift;
-+ shift += 7;
-+ }
-+ while (byte & 0x80);
-+
-+ /* Sign-extend a negative value. */
-+ if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
-+ result |= -(1L << shift);
-+
-+ *val = (_Unwind_Sword) result;
-+ return p;
-+}
-+
-+#if !(defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE))
- /* Load an encoded value from memory at P. The value is returned in VAL;
- The function returns P incremented past the value. BASE is as given
- by base_of_encoded_value for this encoding in the appropriate context. */
-
--#ifndef _LIBC
-+# ifndef _LIBC
- static
--#endif
-+# endif
- const unsigned char *
- read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
- const unsigned char *p, _Unwind_Ptr *val)
--#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
--;
--#else
- {
- union unaligned
- {
-@@ -151,56 +196,37 @@
- } __attribute__((__packed__));
-
- union unaligned *u = (union unaligned *) p;
-- _Unwind_Ptr result;
-+ _Unwind_Internal_Ptr result;
-
- if (encoding == DW_EH_PE_aligned)
- {
-- _Unwind_Ptr a = (_Unwind_Ptr)p;
-+ _Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
- a = (a + sizeof (void *) - 1) & - sizeof(void *);
-- result = *(_Unwind_Ptr *) a;
-- p = (const unsigned char *)(a + sizeof (void *));
-+ result = *(_Unwind_Internal_Ptr *) a;
-+ p = (const unsigned char *) (a + sizeof (void *));
- }
- else
- {
- switch (encoding & 0x0f)
- {
- case DW_EH_PE_absptr:
-- result = (_Unwind_Ptr) u->ptr;
-+ result = (_Unwind_Internal_Ptr) u->ptr;
- p += sizeof (void *);
- break;
-
- case DW_EH_PE_uleb128:
- {
-- unsigned int shift = 0;
-- unsigned char byte;
--
-- result = 0;
-- do
-- {
-- byte = *p++;
-- result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
-- shift += 7;
-- }
-- while (byte & 0x80);
-+ _Unwind_Word tmp;
-+ p = read_uleb128 (p, &tmp);
-+ result = (_Unwind_Internal_Ptr) tmp;
- }
- break;
-
- case DW_EH_PE_sleb128:
- {
-- unsigned int shift = 0;
-- unsigned char byte;
--
-- result = 0;
-- do
-- {
-- byte = *p++;
-- result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
-- shift += 7;
-- }
-- while (byte & 0x80);
--
-- if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
-- result |= -(1L << shift);
-+ _Unwind_Sword tmp;
-+ p = read_sleb128 (p, &tmp);
-+ result = (_Unwind_Internal_Ptr) tmp;
- }
- break;
-
-@@ -237,9 +263,9 @@
- if (result != 0)
- {
- result += ((encoding & 0x70) == DW_EH_PE_pcrel
-- ? (_Unwind_Ptr)u : base);
-+ ? (_Unwind_Internal_Ptr) u : base);
- if (encoding & DW_EH_PE_indirect)
-- result = *(_Unwind_Ptr *)result;
-+ result = *(_Unwind_Internal_Ptr *) result;
- }
- }
-
-@@ -263,20 +289,3 @@
- }
-
- #endif
--
--/* Read an unsigned leb128 value from P, store the value in VAL, return
-- P incremented past the value. */
--
--static inline const unsigned char *
--read_uleb128 (const unsigned char *p, _Unwind_Ptr *val)
--{
-- return read_encoded_value_with_base (DW_EH_PE_uleb128, 0, p, val);
--}
--
--/* Similar, but read a signed leb128 value. */
--
--static inline const unsigned char *
--read_sleb128 (const unsigned char *p, _Unwind_Ptr *val)
--{
-- return read_encoded_value_with_base (DW_EH_PE_sleb128, 0, p, val);
--}
---- glibc-2.3.2/sysdeps/generic/unwind.h 2001-11-15 18:09:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/unwind.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,26 +1,36 @@
- /* Exception handling and frame unwind runtime interface routines.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-- This file is part of GNU CC.
-+ This file is part of GCC.
-
-- 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
-+ GCC 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.
-
-- 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.
-+ GCC 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 GNU CC; see the file COPYING. If not, write to
-- the Free Software Foundation, 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
-+ along with GCC; see the file COPYING. If not, write to the Free
-+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+ 02111-1307, USA. */
-+
-+/* As a special exception, if you include this header file into source
-+ files compiled by GCC, this header file does not by itself cause
-+ the resulting executable to be covered by the GNU General Public
-+ License. This exception does not however invalidate any other
-+ reasons why the executable file might be covered by the GNU General
-+ Public License. */
-
- /* This is derived from the C++ ABI for IA-64. Where we diverge
- for cross-architecture compatibility are noted with "@@@". */
-
-+#ifndef _UNWIND_H
-+#define _UNWIND_H 1
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -31,7 +41,12 @@
- inefficient for 32-bit and smaller machines. */
- typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
- typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
-+#if defined(__ia64__) && defined(__hpux__)
-+typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
-+#else
- typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
-+#endif
-+typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
-
- /* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
- consumer of an exception. We'll go along with this for now even on
-@@ -87,6 +102,7 @@
- #define _UA_CLEANUP_PHASE 2
- #define _UA_HANDLER_FRAME 4
- #define _UA_FORCE_UNWIND 8
-+#define _UA_END_OF_STACK 16
-
- /* This is an opaque type used to refer to a system-specific data
- structure used by the system unwinder. This context is created and
-@@ -125,6 +141,9 @@
- extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
- extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
-
-+/* @@@ Retrieve the CFA of the given context. */
-+extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
-+
- extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
-
- extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
-@@ -135,15 +154,15 @@
- library and language-specific exception handling semantics. It is
- specific to the code fragment described by an unwind info block, and
- it is always referenced via the pointer in the unwind info block, and
-- hence it has no ABI-specified name.
-+ hence it has no ABI-specified name.
-
- Note that this implies that two different C++ implementations can
- use different names, and have different contents in the language
-- specific data area. Moreover, that the language specific data
-+ specific data area. Moreover, that the language specific data
- area contains no version info because name of the function invoked
- provides more effective versioning by detecting at link time the
- lack of code to handle the different data format. */
--
-+
- typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
- (int, _Unwind_Action, _Unwind_Exception_Class,
- struct _Unwind_Exception *, struct _Unwind_Context *);
-@@ -181,11 +200,20 @@
- abort ();
- return 0;
- }
-+
-+/* @@@ Retrieve the Backing Store Pointer of the given context. */
-+extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
- #else
- extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
- extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
- #endif
-
-+/* @@@ Given an address, return the entry point of the function that
-+ contains it. */
-+extern void * _Unwind_FindEnclosingFunction (void *pc);
-+
- #ifdef __cplusplus
- }
- #endif
-+
-+#endif /* unwind.h */
---- glibc-2.3.2/sysdeps/generic/utmp_file.c 2002-09-30 18:26:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/utmp_file.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>
- and Paul Janzen <pcj@primenet.com>, 1996.
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <utmp.h>
-+#include <not-cancel.h>
-
- #include "utmp-private.h"
- #include "utmp-equal.h"
-@@ -57,47 +58,47 @@
- LOCK_FILE.
- */
- #define LOCK_FILE(fd, type) \
--{ \
-- struct flock fl; \
-- struct sigaction action, old_action; \
-- unsigned int old_timeout; \
-- \
-- /* Cancel any existing alarm. */ \
-- old_timeout = alarm (0); \
-- \
-- /* Establish signal handler. */ \
-- action.sa_handler = timeout_handler; \
-- __sigemptyset (&action.sa_mask); \
-- action.sa_flags = 0; \
-- __sigaction (SIGALRM, &action, &old_action); \
-- \
-- alarm (TIMEOUT); \
-- \
-- /* Try to get the lock. */ \
-- memset (&fl, '\0', sizeof (struct flock)); \
-- fl.l_type = (type); \
-- fl.l_whence = SEEK_SET; \
-- if (__fcntl ((fd), F_SETLKW, &fl) < 0)
-+{ \
-+ struct flock fl; \
-+ struct sigaction action, old_action; \
-+ unsigned int old_timeout; \
-+ \
-+ /* Cancel any existing alarm. */ \
-+ old_timeout = alarm (0); \
-+ \
-+ /* Establish signal handler. */ \
-+ action.sa_handler = timeout_handler; \
-+ __sigemptyset (&action.sa_mask); \
-+ action.sa_flags = 0; \
-+ __sigaction (SIGALRM, &action, &old_action); \
-+ \
-+ alarm (TIMEOUT); \
-+ \
-+ /* Try to get the lock. */ \
-+ memset (&fl, '\0', sizeof (struct flock)); \
-+ fl.l_type = (type); \
-+ fl.l_whence = SEEK_SET; \
-+ if (__fcntl_nocancel ((fd), F_SETLKW, &fl) < 0)
-
- #define LOCKING_FAILED() \
- goto unalarm_return
-
- #define UNLOCK_FILE(fd) \
-- /* Unlock the file. */ \
-- fl.l_type = F_UNLCK; \
-- __fcntl ((fd), F_SETLKW, &fl); \
-- \
-- unalarm_return: \
-- /* Reset the signal handler and alarm. We must reset the alarm \
-- before resetting the handler so our alarm does not generate a \
-- spurious SIGALRM seen by the user. However, we cannot just set \
-- the user's old alarm before restoring the handler, because then \
-- it's possible our handler could catch the user alarm's SIGARLM \
-- and then the user would never see the signal he expected. */ \
-- alarm (0); \
-- __sigaction (SIGALRM, &old_action, NULL); \
-- if (old_timeout != 0) \
-- alarm (old_timeout); \
-+ /* Unlock the file. */ \
-+ fl.l_type = F_UNLCK; \
-+ __fcntl_nocancel ((fd), F_SETLKW, &fl); \
-+ \
-+ unalarm_return: \
-+ /* Reset the signal handler and alarm. We must reset the alarm \
-+ before resetting the handler so our alarm does not generate a \
-+ spurious SIGALRM seen by the user. However, we cannot just set \
-+ the user's old alarm before restoring the handler, because then \
-+ it's possible our handler could catch the user alarm's SIGARLM \
-+ and then the user would never see the signal he expected. */ \
-+ alarm (0); \
-+ __sigaction (SIGALRM, &old_action, NULL); \
-+ if (old_timeout != 0) \
-+ alarm (old_timeout); \
- } while (0)
-
-
-@@ -139,22 +140,22 @@
-
- file_name = TRANSFORM_UTMP_FILE_NAME (__libc_utmp_file_name);
-
-- file_fd = __open (file_name, O_RDWR);
-+ file_fd = open_not_cancel_2 (file_name, O_RDWR);
- if (file_fd == -1)
- {
- /* Hhm, read-write access did not work. Try read-only. */
-- file_fd = __open (file_name, O_RDONLY);
-+ file_fd = open_not_cancel_2 (file_name, O_RDONLY);
- if (file_fd == -1)
- return 0;
- }
-
- /* We have to make sure the file is `closed on exec'. */
-- result = __fcntl (file_fd, F_GETFD, 0);
-+ result = __fcntl_nocancel (file_fd, F_GETFD, 0);
- if (result >= 0)
-- result = __fcntl (file_fd, F_SETFD, result | FD_CLOEXEC);
-+ result = __fcntl_nocancel (file_fd, F_SETFD, result | FD_CLOEXEC);
- if (result == -1)
- {
-- __close (file_fd);
-+ close_not_cancel_no_status (file_fd);
- return 0;
- }
- }
-@@ -197,7 +198,7 @@
- }
-
- /* Read the next entry. */
-- nbytes = __read (file_fd, &last_entry, sizeof (struct utmp));
-+ nbytes = read_not_cancel (file_fd, &last_entry, sizeof (struct utmp));
-
- UNLOCK_FILE (file_fd);
-
-@@ -237,7 +238,7 @@
- while (1)
- {
- /* Read the next entry. */
-- if (__read (file_fd, buffer, sizeof (struct utmp))
-+ if (read_not_cancel (file_fd, buffer, sizeof (struct utmp))
- != sizeof (struct utmp))
- {
- __set_errno (ESRCH);
-@@ -259,7 +260,7 @@
- while (1)
- {
- /* Read the next entry. */
-- if (__read (file_fd, buffer, sizeof (struct utmp))
-+ if (read_not_cancel (file_fd, buffer, sizeof (struct utmp))
- != sizeof (struct utmp))
- {
- __set_errno (ESRCH);
-@@ -332,7 +333,7 @@
- while (1)
- {
- /* Read the next entry. */
-- if (__read (file_fd, &last_entry, sizeof (struct utmp))
-+ if (read_not_cancel (file_fd, &last_entry, sizeof (struct utmp))
- != sizeof (struct utmp))
- {
- __set_errno (ESRCH);
-@@ -418,7 +419,8 @@
- }
-
- /* Write the new data. */
-- if (__write (file_fd, data, sizeof (struct utmp)) != sizeof (struct utmp))
-+ if (write_not_cancel (file_fd, data, sizeof (struct utmp))
-+ != sizeof (struct utmp))
- {
- /* If we appended a new record this is only partially written.
- Remove it. */
-@@ -444,7 +446,7 @@
- {
- assert (file_fd >= 0);
-
-- __close (file_fd);
-+ close_not_cancel_no_status (file_fd);
- file_fd = -1;
- }
-
-@@ -457,7 +459,7 @@
- int fd;
-
- /* Open WTMP file. */
-- fd = __open (file, O_WRONLY);
-+ fd = open_not_cancel_2 (file, O_WRONLY);
- if (fd < 0)
- return -1;
-
-@@ -478,7 +480,8 @@
- /* Write the entry. If we can't write all the bytes, reset the file
- size back to the original size. That way, no partial entries
- will remain. */
-- if (__write (fd, utmp, sizeof (struct utmp)) != sizeof (struct utmp))
-+ if (write_not_cancel (fd, utmp, sizeof (struct utmp))
-+ != sizeof (struct utmp))
- {
- __ftruncate64 (fd, offset);
- goto unlock_return;
-@@ -490,7 +493,7 @@
- UNLOCK_FILE (fd);
-
- /* Close WTMP file. */
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- return result;
- }
---- glibc-2.3.2/sysdeps/generic/wordexp.c 2002-09-24 01:12:10.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/wordexp.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* POSIX.2 wordexp implementation.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Tim Waugh <tim@cyberelk.demon.co.uk>.
-
-@@ -18,6 +18,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <alloca.h>
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
-@@ -42,6 +43,7 @@
- #endif
- #include <wordexp.h>
-
-+#include <bits/libc-lock.h>
- #include <stdio-common/_itoa.h>
-
- /* Undefine the following line for the production version. */
-@@ -89,19 +91,18 @@
- return NULL;
- }
-
--static inline char *
-+static char *
- w_addchar (char *buffer, size_t *actlen, size_t *maxlen, char ch)
- /* (lengths exclude trailing zero) */
- {
-- /* Add a character to the buffer, allocating room for it if needed.
-- */
-+ /* Add a character to the buffer, allocating room for it if needed. */
-
- if (*actlen == *maxlen)
- {
- char *old_buffer = buffer;
- assert (buffer == NULL || *maxlen != 0);
- *maxlen += W_CHUNK;
-- buffer = realloc (buffer, 1 + *maxlen);
-+ buffer = (char *) realloc (buffer, 1 + *maxlen);
-
- if (buffer == NULL)
- free (old_buffer);
-@@ -328,10 +329,7 @@
-
- while ((result = __getpwuid_r (uid, &pwd, buffer, buflen, &tpwd)) != 0
- && errno == ERANGE)
-- {
-- buflen += 1000;
-- buffer = __alloca (buflen);
-- }
-+ buffer = extend_alloca (buffer, buflen, buflen + 1000);
-
- if (result == 0 && tpwd != NULL && pwd.pw_dir != NULL)
- {
-@@ -358,10 +356,7 @@
-
- while ((result = __getpwnam_r (user, &pwd, buffer, buflen, &tpwd)) != 0
- && errno == ERANGE)
-- {
-- buflen += 1000;
-- buffer = __alloca (buflen);
-- }
-+ buffer = extend_alloca (buffer, buflen, buflen + 1000);
-
- if (result == 0 && tpwd != NULL && pwd.pw_dir)
- *word = w_addstr (*word, word_length, max_length, pwd.pw_dir);
-@@ -559,16 +554,13 @@
- internal_function
- eval_expr_val (char **expr, long int *result)
- {
-- int sgn = +1;
- char *digit;
-
- /* Skip white space */
- for (digit = *expr; digit && *digit && isspace (*digit); ++digit);
-
-- switch (*digit)
-+ if (*digit == '(')
- {
-- case '(':
--
- /* Scan for closing paren */
- for (++digit; **expr && **expr != ')'; ++(*expr));
-
-@@ -582,27 +574,14 @@
- return WRDE_SYNTAX;
-
- return 0;
--
-- case '+': /* Positive value */
-- ++digit;
-- break;
--
-- case '-': /* Negative value */
-- ++digit;
-- sgn = -1;
-- break;
--
-- default:
-- if (!isdigit (*digit))
-- return WRDE_SYNTAX;
- }
-
-- *result = 0;
-- for (; *digit && isdigit (*digit); ++digit)
-- *result = (*result * 10) + (*digit - '0');
-+ /* POSIX requires that decimal, octal, and hexadecimal constants are
-+ recognized. Therefore we pass 0 as the third parameter to strtol. */
-+ *result = strtol (digit, expr, 0);
-+ if (digit == *expr)
-+ return WRDE_SYNTAX;
-
-- *expr = digit;
-- *result *= sgn;
- return 0;
- }
-
-@@ -841,7 +820,7 @@
- args[1] = "-nc";
-
- /* Redirect output. */
-- __dup2 (fildes[1], 1);
-+ __dup2 (fildes[1], STDOUT_FILENO);
- __close (fildes[1]);
-
- /* Redirect stderr to /dev/null if we have to. */
-@@ -853,12 +832,12 @@
- fd = __open (_PATH_DEVNULL, O_WRONLY);
- if (fd >= 0 && fd != 2)
- {
-- __dup2 (fd, 2);
-+ __dup2 (fd, STDERR_FILENO);
- __close (fd);
- }
- /* Be paranoid. Check that we actually opened the /dev/null
- device. */
-- if (__builtin_expect (__fxstat64 (_STAT_VER, 2, &st), 0) != 0
-+ if (__builtin_expect (__fxstat64 (_STAT_VER, STDERR_FILENO, &st), 0) != 0
- || __builtin_expect (S_ISCHR (st.st_mode), 1) == 0
- #if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR
- || st.st_rdev != makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR)
-@@ -914,7 +893,7 @@
- }
-
- if (pid == 0)
-- exec_comm_child(comm, fildes, (flags & WRDE_SHOWERR), 0);
-+ exec_comm_child (comm, fildes, flags & WRDE_SHOWERR, 0);
-
- /* Parent */
-
-@@ -1087,7 +1066,7 @@
- if (pid == 0)
- {
- fildes[0] = fildes[1] = -1;
-- exec_comm_child(comm, fildes, 0, 1);
-+ exec_comm_child (comm, fildes, 0, 1);
- }
-
- if (__waitpid (pid, &status, 0) == pid && status != 0)
-@@ -1143,8 +1122,25 @@
- /* Go -- give script to the shell */
- if (comm)
- {
-+#ifdef __libc_ptf_call
-+ /* We do not want the exec_comm call to be cut short
-+ by a thread cancellation since cleanup is very
-+ ugly. Therefore disable cancellation for
-+ now. */
-+ // XXX Ideally we do want the thread being cancelable.
-+ // XXX If demand is there we'll change it.
-+ int state = PTHREAD_CANCEL_ENABLE;
-+ __libc_ptf_call (pthread_setcancelstate,
-+ (PTHREAD_CANCEL_DISABLE, &state), 0);
-+#endif
-+
- error = exec_comm (comm, word, word_length, max_length,
- flags, pwordexp, ifs, ifs_white);
-+
-+#ifdef __libc_ptf_call
-+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-+#endif
-+
- free (comm);
- }
-
---- glibc-2.3.2/sysdeps/gnu/Makefile 2002-11-11 20:55:34.000000000 -0500
-+++ glibc-2.3.2/sysdeps/gnu/Makefile 2003-05-12 12:13:07.000000000 -0400
-@@ -1,4 +1,5 @@
--# Copyright (C) 1996,97,98,99,2001,02 Free Software Foundation, Inc.
-+# Copyright (C) 1996,1997,1998,1999,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
-@@ -34,9 +35,10 @@
- vpath errlist.c $(full_config_sysdirs)
- ifeq ($(versioning),yes)
- $(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk \
-- $(common-objpfx)Versions.v.i
-+ $(common-objpfx)Versions.v.i $(before-compile)
- else
--$(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk
-+$(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk \
-+ $(before-compile)
- endif
- $(AWK) -v maxerr=`\
- $(CC) -S $(CPPFLAGS) $(CFLAGS) -DNOT_IN_libc -DEMIT_ERR_MAX $< -o - \
-@@ -47,6 +49,7 @@
- # Make it unwritable so noone will edit it by mistake.
- -chmod a-w $@T
- mv -f $@T $@
-+generated += errlist-compat.c
-
- # This will force the generation above to happy if need be.
- $(foreach o,.d $(object-suffixes),$(objpfx)errlist$o):$(objpfx)errlist-compat.c
---- glibc-2.3.2/sysdeps/gnu/ifaddrs.c 2002-12-02 17:36:30.000000000 -0500
-+++ glibc-2.3.2/sysdeps/gnu/ifaddrs.c 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* getifaddrs -- get names and addresses of all network interfaces
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -151,9 +151,13 @@
-
- return 0;
- }
-+#ifndef getifaddrs
-+libc_hidden_def (getifaddrs)
-+#endif
-
- void
- freeifaddrs (struct ifaddrs *ifa)
- {
- free (ifa);
- }
-+libc_hidden_def (freeifaddrs)
---- glibc-2.3.2/sysdeps/gnu/siglist.c 2002-12-21 13:38:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/gnu/siglist.c 2003-04-12 11:39:45.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Define list of all signal numbers and their names.
-- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2000, 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
-@@ -31,11 +31,6 @@
- };
- strong_alias (__new_sys_siglist, _sys_siglist_internal)
-
--#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
--strong_alias (_sys_siglist_internal, __old_sys_siglist)
--declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
--#endif
--
- const char *const __new_sys_sigabbrev[NSIG] =
- {
- #define init_sig(sig, abbrev, desc) [sig] = abbrev,
-@@ -45,6 +40,9 @@
- strong_alias (__new_sys_sigabbrev, _sys_sigabbrev_internal)
-
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-+strong_alias (_sys_siglist_internal, __old_sys_siglist)
-+declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
-+
- strong_alias (_sys_sigabbrev_internal, __old_sys_sigabbrev)
- declare_symbol (__old_sys_sigabbrev, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
-
-@@ -54,7 +52,26 @@
- compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
- #endif
-
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3) && defined OLD2_SIGLIST_SIZE
-+strong_alias (_sys_siglist_internal, __old2_sys_siglist)
-+declare_symbol (__old2_sys_siglist, object, OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
-+
-+strong_alias (_sys_sigabbrev_internal, __old2_sys_sigabbrev)
-+declare_symbol (__old2_sys_sigabbrev, object,
-+ OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
-+
-+strong_alias (__old2_sys_siglist, _old2_sys_siglist)
-+compat_symbol (libc, __old2_sys_siglist, _sys_siglist, GLIBC_2_1);
-+compat_symbol (libc, _old2_sys_siglist, sys_siglist, GLIBC_2_1);
-+compat_symbol (libc, __old2_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
-+
-+strong_alias (__new_sys_siglist, _new_sys_siglist)
-+versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_3_3);
-+versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_3_3);
-+versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_3_3);
-+#else
- strong_alias (__new_sys_siglist, _new_sys_siglist)
- versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_1);
- versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_1);
- versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
-+#endif
---- glibc-2.3.2/sysdeps/gnu/utmpx.h 2001-07-07 15:21:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/gnu/utmpx.h 2003-04-24 20:05:59.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 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
-@@ -47,41 +47,79 @@
-
- __BEGIN_DECLS
-
--/* Open user accounting database. */
--extern void setutxent (void) __THROW;
-+/* Open user accounting database.
-
--/* Close user accounting database. */
--extern void endutxent (void) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void setutxent (void);
-
--/* Get the next entry from the user accounting database. */
--extern struct utmpx *getutxent (void) __THROW;
-+/* Close user accounting database.
-
--/* Get the user accounting database entry corresponding to ID. */
--extern struct utmpx *getutxid (__const struct utmpx *__id) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern void endutxent (void);
-
--/* Get the user accounting database entry corresponding to LINE. */
--extern struct utmpx *getutxline (__const struct utmpx *__line) __THROW;
-+/* Get the next entry from the user accounting database.
-
--/* Write the entry UTMPX into the user accounting database. */
--extern struct utmpx *pututxline (__const struct utmpx *__utmpx) __THROW;
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct utmpx *getutxent (void);
-+
-+/* Get the user accounting database entry corresponding to ID.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct utmpx *getutxid (__const struct utmpx *__id);
-+
-+/* Get the user accounting database entry corresponding to LINE.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct utmpx *getutxline (__const struct utmpx *__line);
-+
-+/* Write the entry UTMPX into the user accounting database.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern struct utmpx *pututxline (__const struct utmpx *__utmpx);
-
-
- #ifdef __USE_GNU
--/* Change name of the utmpx file to be examined. */
--extern int utmpxname (__const char *__file) __THROW;
-+/* Change name of the utmpx file to be examined.
-
--/* Append entry UTMP to the wtmpx-like file WTMPX_FILE. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern int utmpxname (__const char *__file);
-+
-+/* Append entry UTMP to the wtmpx-like file WTMPX_FILE.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern void updwtmpx (__const char *__wtmpx_file,
-- __const struct utmpx *__utmpx) __THROW;
-+ __const struct utmpx *__utmpx);
-
-
--/* Copy the information in UTMPX to UTMP. */
-+/* Copy the information in UTMPX to UTMP.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern void getutmp (__const struct utmpx *__utmpx,
-- struct utmp *__utmp) __THROW;
-+ struct utmp *__utmp);
-+
-+/* Copy the information in UTMP to UTMPX.
-
--/* Copy the information in UTMP to UTMPX. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern void getutmpx (__const struct utmp *__utmp,
-- struct utmpx *__utmpx) __THROW;
-+ struct utmpx *__utmpx);
- #endif
-
- __END_DECLS
---- glibc-2.3.2/sysdeps/hppa/dl-machine.h 2002-09-28 00:15:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version.
-- Copyright (C) 1995-1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1997,1999,2000,2001,2002, 2003
-+ Free Software Foundation, Inc.
- Contributed by David Huggins-Daines <dhd@debian.org>
- This file is part of the GNU C Library.
-
-@@ -481,8 +482,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const Elf32_Sym *const refsym = sym;
- unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
- struct link_map *sym_map;
-@@ -531,9 +533,9 @@
- return;
- #endif
- /* .eh_frame can have unaligned relocs. */
-- if ((unsigned long) reloc_addr & 3)
-+ if ((unsigned long) reloc_addr_arg & 3)
- {
-- char *rel_addr = (char *) reloc_addr;
-+ char *rel_addr = (char *) reloc_addr_arg;
- rel_addr[0] = value >> 24;
- rel_addr[1] = value >> 16;
- rel_addr[2] = value >> 8;
-@@ -614,7 +616,7 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value,
-+ memcpy (reloc_addr_arg, (void *) value,
- MIN (sym->st_size, refsym->st_size));
- return;
-
-@@ -637,8 +639,9 @@
- static inline void
- elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr,
- const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
- Elf32_Addr value;
-
-@@ -651,9 +654,9 @@
- {
- case R_PARISC_DIR32:
- /* .eh_frame can have unaligned relocs. */
-- if ((unsigned long) reloc_addr & 3)
-+ if ((unsigned long) reloc_addr_arg & 3)
- {
-- char *rel_addr = (char *) reloc_addr;
-+ char *rel_addr = (char *) reloc_addr_arg;
- rel_addr[0] = value >> 24;
- rel_addr[1] = value >> 16;
- rel_addr[2] = value >> 8;
---- glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps 2002-11-19 01:40:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/i386/Makefile 2002-09-19 02:42:09.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/Makefile 2003-09-19 22:37:07.000000000 -0400
-@@ -20,3 +20,40 @@
- CFLAGS-dl-load.c += -Wno-unused
- CFLAGS-dl-reloc.c += -Wno-unused
- endif
-+
-+# Most of the glibc routines don't ever call user defined callbacks
-+# nor use any FPU or SSE* and as such don't need bigger %esp alignment
-+# than 4 bytes.
-+# Lots of routines in math will use FPU, so make math subdir an exception
-+# here.
-+ifeq ($(subdir),math)
-+sysdep-CFLAGS += -mpreferred-stack-boundary=4
-+else
-+ifeq ($(subdir),csu)
-+sysdep-CFLAGS += -mpreferred-stack-boundary=4
-+else
-+sysdep-CFLAGS += -mpreferred-stack-boundary=2
-+# Likewise, any function which calls user callbacks
-+uses-callbacks += -mpreferred-stack-boundary=4
-+# Likewise, any stack alignment tests
-+stack-align-test-flags += -malign-double -mpreferred-stack-boundary=4
-+endif
-+endif
-+
-+# And a couple of other routines
-+ifeq ($(subdir),stdlib)
-+CFLAGS-exit.c += -mpreferred-stack-boundary=4
-+endif
-+ifeq ($(subdir),elf)
-+CFLAGS-dl-init.c += -mpreferred-stack-boundary=4
-+CFLAGS-dl-fini.c += -mpreferred-stack-boundary=4
-+CFLAGS-dl-open.c += -mpreferred-stack-boundary=4
-+CFLAGS-dl-close.c += -mpreferred-stack-boundary=4
-+CFLAGS-dl-error.c += -mpreferred-stack-boundary=4
-+endif
-+ifeq ($(subdir),dlfcn)
-+CFLAGS-dlopen.c += -mpreferred-stack-boundary=4
-+CFLAGS-dlopenold.c += -mpreferred-stack-boundary=4
-+CFLAGS-dlclose.c += -mpreferred-stack-boundary=4
-+CFLAGS-dlerror.c += -mpreferred-stack-boundary=4
-+endif
---- glibc-2.3.2/sysdeps/i386/Versions 2000-06-15 02:53:58.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/Versions 2003-05-12 12:13:07.000000000 -0400
-@@ -9,7 +9,14 @@
- }
- GLIBC_2.1.1 {
- # extern inline functions used by <bits/string.h>
-- __memcpy_c; __memset_cc; __memset_cg; __memset_gg; __strchr_c; __strchr_g;
-- __strchrnul_c; __strchrnul_g;
-+ __memcpy_c; __memset_cc; __memset_cg; __memset_gg;
-+ __memcpy_by2; __memcpy_by4; __memcpy_g; __mempcpy_by2; __mempcpy_by4;
-+ __mempcpy_byn; __memset_ccn_by2; __memset_ccn_by4; __memset_gcn_by2;
-+ __memset_gcn_by4; __stpcpy_g; __strcat_c; __strcat_g; __strchr_c;
-+ __strchr_g; __strchrnul_c; __strchrnul_g; __strcmp_gg; __strcpy_g;
-+ __strcspn_c1; __strcspn_cg; __strcspn_g; __strlen_g; __strncat_g;
-+ __strncmp_g; __strncpy_by2; __strncpy_by4; __strncpy_byn; __strncpy_gg;
-+ __strpbrk_cg; __strpbrk_g; __strrchr_c; __strrchr_g; __strspn_c1;
-+ __strspn_cg; __strspn_g; __strstr_cg; __strstr_g;
- }
- }
---- glibc-2.3.2/sysdeps/i386/bits/byteswap.h 2003-01-07 19:06:02.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/bits/byteswap.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Macros to swap the order of bytes in integer values.
-- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -64,7 +64,8 @@
- # if __GNUC__ >= 2
- /* To swap the bytes in a word the i486 processors and up provide the
- `bswap' opcode. On i386 we have to use three instructions. */
--# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__
-+# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \
-+ && !defined __pentium4__
- # define __bswap_32(x) \
- (__extension__ \
- ({ register unsigned int __v, __x = (x); \
---- glibc-2.3.2/sysdeps/i386/bits/setjmp.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/bits/setjmp.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2001, 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
-@@ -17,8 +17,10 @@
- 02111-1307 USA. */
-
- /* Define the machine-dependent type `jmp_buf'. Intel 386 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
-
-@@ -40,3 +42,5 @@
- containing a local variable at ADDRESS. */
- #define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (void *) (jmpbuf)[JB_SP])
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/i386/bits/string.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/bits/string.h 2003-09-19 22:37:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized, inlined string functions. i386 version.
-- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,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
-@@ -321,11 +321,12 @@
- "repne; scasb\n\t"
- "je 1f\n\t"
- "orl $-1,%0\n"
-- "1:\tcld"
-+ "1:\tcld\n\t"
-+ "incl %0"
- : "=D" (__res), "=&c" (__d0)
- : "a" (__c), "0" (__s + __n - 1), "1" (__n)
- : "cc");
-- return __res + 1;
-+ return __res;
- }
- # ifdef __USE_GNU
- # define memrchr(s, c, n) __memrchr (s, c, n)
---- glibc-2.3.2/sysdeps/i386/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
-@@ -23,7 +23,7 @@
- #define ELF_MACHINE_NAME "i386"
-
- #include <sys/param.h>
--
-+#include <sysdep.h>
- #include <tls.h>
-
- /* Return nonzero iff ELF header is compatible with the running host. */
-@@ -95,7 +95,7 @@
- /* Set up the loaded object described by L so its unrelocated PLT
- entries will jump to the on-demand fixup code in dl-runtime.c. */
-
--static inline int __attribute__ ((unused))
-+static inline int __attribute__ ((unused, always_inline))
- elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
- {
- Elf32_Addr *got;
-@@ -168,35 +168,51 @@
- .text\n\
- .globl _dl_runtime_resolve\n\
- .type _dl_runtime_resolve, @function\n\
-+ " CFI_STARTPROC "\n\
- .align 16\n\
- _dl_runtime_resolve:\n\
-+ " CFI_ADJUST_CFA_OFFSET (8) "\n\
- pushl %eax # Preserve registers otherwise clobbered.\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %edx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\
- movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\
- call fixup # Call resolver.\n\
- popl %edx # Get register content back.\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- popl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
- ret $8 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- \n\
- .globl _dl_runtime_profile\n\
- .type _dl_runtime_profile, @function\n\
-+ " CFI_STARTPROC "\n\
- .align 16\n\
- _dl_runtime_profile:\n\
-+ " CFI_ADJUST_CFA_OFFSET (8) "\n\
- pushl %eax # Preserve registers otherwise clobbered.\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %edx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- movl 20(%esp), %ecx # Load return address\n\
- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\
- movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\
- call profile_fixup # Call resolver.\n\
- popl %edx # Get register content back.\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- popl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
- ret $8 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
- .previous\n\
- ");
-@@ -207,23 +223,35 @@
- .globl _dl_runtime_profile\n\
- .type _dl_runtime_resolve, @function\n\
- .type _dl_runtime_profile, @function\n\
-+ " CFI_STARTPROC "\n\
- .align 16\n\
- _dl_runtime_resolve:\n\
- _dl_runtime_profile:\n\
-+ " CFI_ADJUST_CFA_OFFSET (8) "\n\
- pushl %eax # Preserve registers otherwise clobbered.\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %edx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- movl 16(%esp), %edx # Push the arguments for `fixup'\n\
- movl 12(%esp), %eax\n\
- pushl %edx\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- pushl %eax\n\
-+ " CFI_ADJUST_CFA_OFFSET (4) "\n\
- call fixup # Call resolver.\n\
- popl %edx # Pop the parameters\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- popl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- popl %edx # Get register content back.\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- popl %ecx\n\
-+ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
- xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
- ret $8 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
- .previous\n\
-@@ -363,8 +391,9 @@
- static inline void
- elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -491,8 +520,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- default:
- _dl_reloc_bad_type (map, r_type, 0);
-@@ -506,8 +535,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE)
-@@ -521,7 +551,7 @@
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
- # else
-- Elf32_Addr value = RESOLVE (&sym, version, ELF32_R_TYPE (reloc->r_info));
-+ Elf32_Addr value = RESOLVE (&sym, version, r_type);
- if (sym != NULL)
- value += sym->st_value;
- # endif
-@@ -533,11 +563,13 @@
- case R_386_32:
- *reloc_addr = value + reloc->r_addend;
- break;
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
-+ /* Not needed for dl-conflict.c. */
- case R_386_PC32:
- *reloc_addr = (value + reloc->r_addend - (Elf32_Addr) reloc_addr);
- break;
-
--# ifdef USE_TLS
-+# ifdef USE_TLS
- case R_386_TLS_DTPMOD32:
- /* Get the information from the link map returned by the
- resolv function. */
-@@ -570,9 +602,7 @@
- = (sym == NULL ? 0 : sym->st_value - sym_map->l_tls_offset)
- + reloc->r_addend;
- break;
--# endif /* use TLS */
--# ifndef RESOLVE_CONFLICT_FIND_MAP
-- /* Not needed for dl-conflict.c. */
-+# endif /* use TLS */
- case R_386_COPY:
- if (sym == NULL)
- /* This can happen in trace mode if an object could not be
-@@ -590,8 +620,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- # endif /* !RESOLVE_CONFLICT_FIND_MAP */
- default:
-@@ -606,8 +636,9 @@
-
- static inline void
- elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- assert (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE);
- *reloc_addr += l_addr;
- }
-@@ -615,8 +646,9 @@
- #ifndef RTLD_BOOTSTRAP
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
- #endif /* !RTLD_BOOTSTRAP */
---- glibc-2.3.2/sysdeps/i386/elf/start.S 2002-12-09 22:41:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/elf/start.S 2003-06-03 09:36:28.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code compliant to the ELF i386 ABI.
-- Copyright (C) 1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1998,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
-@@ -67,6 +67,27 @@
- pushl %edx /* Push address of the shared library
- termination function. */
-
-+#ifdef SHARED
-+ /* Load PIC register. */
-+ call 1f
-+ addl $_GLOBAL_OFFSET_TABLE_, %ebx
-+
-+ /* Push address of our own entry points to .fini and .init. */
-+ leal __libc_csu_fini@GOTOFF(%ebx), %eax
-+ pushl %eax
-+ leal __libc_csu_init@GOTOFF(%ebx), %eax
-+ pushl %eax
-+
-+ pushl %ecx /* Push second argument: argv. */
-+ pushl %esi /* Push first argument: argc. */
-+
-+ leal BP_SYM (main)@GOTOFF(%ebx), %eax
-+ pushl %eax
-+
-+ /* Call the user's main function, and exit with its value.
-+ But let the libc call main. */
-+ call BP_SYM (__libc_start_main)@PLT
-+#else
- /* Push address of our own entry points to .fini and .init. */
- pushl $__libc_csu_fini
- pushl $__libc_csu_init
-@@ -79,9 +100,15 @@
- /* Call the user's main function, and exit with its value.
- But let the libc call main. */
- call BP_SYM (__libc_start_main)
-+#endif
-
- hlt /* Crash if somehow `exit' does return. */
-
-+#ifdef SHARED
-+1: movl (%esp), %ebx
-+ ret
-+#endif
-+
- /* To fulfill the System V/i386 ABI we need this symbol. Yuck, it's so
- meaningless since we don't support machines < 80386. */
- .section .rodata
---- glibc-2.3.2/sysdeps/i386/fpu/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/fpu/Makefile 2003-04-29 03:14:48.000000000 -0400
-@@ -0,0 +1,3 @@
-+ifeq ($(subdir),math)
-+$(objpfx)libm.so: $(elfobjdir)/ld.so
-+endif
---- glibc-2.3.2/sysdeps/i386/fpu/bits/mathinline.h 2002-12-16 14:31:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/fpu/bits/mathinline.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Inline math functions for i387.
-- Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
-+ Copyright (C) 1995,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
-
-@@ -437,8 +437,10 @@
- return __value)
-
-
-+#ifdef __FAST_MATH__
- __inline_mathopNP (sqrt, "fsqrt")
- __inline_mathopNP_ (long double, __sqrtl, "fsqrt")
-+#endif
-
- #if __GNUC_PREREQ (2, 8)
- __inline_mathcodeNP_ (double, fabs, __x, return __builtin_fabs (__x))
-@@ -511,7 +513,8 @@
- __asm __volatile ("fldcw %0" : : "m" (__cw)); \
- return __value)
-
--#define __ldexp_code \
-+#ifdef __FAST_MATH__
-+# define __ldexp_code \
- register long double __value; \
- __asm __volatile__ \
- ("fscale" \
-@@ -523,6 +526,7 @@
- {
- __ldexp_code;
- }
-+#endif
-
-
- /* Optimized versions for some non-standardized functions. */
-@@ -530,11 +534,10 @@
-
- # ifdef __FAST_MATH__
- __inline_mathcodeNP (expm1, __x, __expm1_code)
--# endif
-
- /* We cannot rely on M_SQRT being defined. So we do it for ourself
- here. */
--# define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */
-+# define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */
-
- __inline_mathcodeNP (log1p, __x, \
- register long double __value; \
-@@ -573,12 +576,12 @@
- : "=t" (__junk), "=u" (__value) : "0" (__x)); \
- return __value)
-
-+# endif
- #endif
-
- #ifdef __USE_ISOC99
- #ifdef __FAST_MATH__
- __inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)")
--#endif /* __FAST_MATH__ */
-
- __MATH_INLINE float
- ldexpf (float __x, int __y) __THROW
-@@ -592,7 +595,6 @@
- __ldexp_code;
- }
-
--#ifdef __FAST_MATH__
- __inline_mathcodeNP3 (fma, __x, __y, __z, return (__x * __y) + __z)
-
- __inline_mathopNP (rint, "frndint")
---- glibc-2.3.2/sysdeps/i386/fpu/fclrexcpt.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/fclrexcpt.c 2003-08-21 08:37:08.000000000 -0400
-@@ -19,6 +19,9 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- __feclearexcept (int excepts)
-@@ -38,6 +41,21 @@
- /* Put the new data in effect. */
- __asm__ ("fldenv %0" : : "m" (*&temp));
-
-+ /* If the CPU supports SSE, we clear the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xnew_exc;
-+
-+ /* Get the current MXCSR. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
-+
-+ /* Clear the relevant bits. */
-+ xnew_exc &= excepts ^ FE_ALL_EXCEPT;
-+
-+ /* Put the new data in effect. */
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
-+ }
-+
- /* Success. */
- return 0;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/fedisblxcpt.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/fedisblxcpt.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Disable floating-point exceptions.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -19,6 +19,9 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- fedisableexcept (int excepts)
-@@ -35,5 +38,18 @@
- new_exc |= excepts;
- __asm__ ("fldcw %0" : : "m" (*&new_exc));
-
-+ /* If the CPU supports SSE we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xnew_exc;
-+
-+ /* Get the current control word. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
-+
-+ xnew_exc |= excepts << 7;
-+
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
-+ }
-+
- return old_exc;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/feenablxcpt.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/feenablxcpt.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Enable floating-point exceptions.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -19,11 +19,15 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- feenableexcept (int excepts)
- {
-- unsigned short int new_exc, old_exc;
-+ unsigned short int new_exc;
-+ unsigned short int old_exc;
-
- /* Get the current control word. */
- __asm__ ("fstcw %0" : "=m" (*&new_exc));
-@@ -34,5 +38,18 @@
- new_exc &= ~excepts;
- __asm__ ("fldcw %0" : : "m" (*&new_exc));
-
-+ /* If the CPU supports SSE we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xnew_exc;
-+
-+ /* Get the current control word. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
-+
-+ xnew_exc &= ~(excepts << 7);
-+
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
-+ }
-+
- return old_exc;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Store current floating-point environment.
-- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -25,6 +25,10 @@
- __fegetenv (fenv_t *envp)
- {
- __asm__ ("fnstenv %0" : "=m" (*envp));
-+ /* And load it right back since the processor changes the mask.
-+ Intel thought this opcode to be used in interrupt handlers which
-+ would block all exceptions. */
-+ __asm__ ("fldenv %0" : : "m" (*envp));
-
- /* Success. */
- return 0;
---- glibc-2.3.2/sysdeps/i386/fpu/feholdexcpt.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/feholdexcpt.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Store current floating-point environment and clear exceptions.
-- Copyright (C) 1997, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,6 +19,9 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- feholdexcept (fenv_t *envp)
-@@ -32,5 +35,19 @@
- work = envp->__control_word | 0x3f;
- __asm__ ("fldcw %0" : : "m" (*&work));
-
-+ /* If the CPU supports SSE we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xwork;
-+
-+ /* Get the current control word. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xwork));
-+
-+ /* Set all exceptions to non-stop. */
-+ xwork |= 0x1f80;
-+
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xwork));
-+ }
-+
- return 0;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/fesetround.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/fesetround.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Set current rounding direction.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,6 +19,9 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- fesetround (int round)
-@@ -34,5 +37,16 @@
- cw |= round;
- __asm__ ("fldcw %0" : : "m" (*&cw));
-
-+ /* If the CPU supports SSE we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xcw;
-+
-+ __asm__ ("stmxcsr %0" : "=m" (*&xcw));
-+ xcw &= ~0x6000;
-+ xcw |= round << 3;
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xcw));
-+ }
-+
- return 0;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/fsetexcptflg.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/fsetexcptflg.c 2003-08-21 08:37:09.000000000 -0400
-@@ -21,6 +21,9 @@
- #include <fenv.h>
- #include <math.h>
- #include <bp-sym.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-
- int
- __fesetexceptflag (const fexcept_t *flagp, int excepts)
-@@ -39,6 +42,22 @@
- the next floating-point instruction. */
- __asm__ ("fldenv %0" : : "m" (*&temp));
-
-+ /* If the CPU supports SSE, we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xnew_exc;
-+
-+ /* Get the current MXCSR. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
-+
-+ /* Set the relevant bits. */
-+ xnew_exc &= ~(excepts & FE_ALL_EXCEPT);
-+ xnew_exc |= *flagp & excepts & FE_ALL_EXCEPT;
-+
-+ /* Put the new data in effect. */
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
-+ }
-+
- /* Success. */
- return 0;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/ftestexcept.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu/ftestexcept.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Test exception in current environment.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,14 +19,22 @@
- 02111-1307 USA. */
-
- #include <fenv.h>
-+#include <unistd.h>
-+#include <dl-procinfo.h>
-+#include <ldsodefs.h>
-
- int
- fetestexcept (int excepts)
- {
- int temp;
-+ int xtemp = 0;
-
- /* Get current exceptions. */
- __asm__ ("fnstsw %0" : "=a" (temp));
-
-- return temp & excepts & FE_ALL_EXCEPT;
-+ /* If the CPU supports SSE we test the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ __asm__ ("stmxcsr %0" : "=m" (*&xtemp));
-+
-+ return (temp | xtemp) & excepts & FE_ALL_EXCEPT;
- }
---- glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps 2003-02-27 17:27:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
-@@ -121,7 +121,7 @@
- ldouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -136,7 +136,7 @@
- ldouble: 1
-
- # ccosh
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -181,7 +181,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- idouble: 1
- ildouble: 1
-@@ -343,10 +343,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- float: 1
- idouble: 1
-@@ -363,10 +363,12 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-+double: 1
-+idouble: 1
- ildouble: 439
- ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
- ildouble: 2
-@@ -381,10 +383,10 @@
- ldouble: 3
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 5
- ldouble: 5
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 1
- ifloat: 1
- ildouble: 25
-@@ -624,12 +626,12 @@
- idouble: 1
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- float: 1
- ifloat: 1
- double: 1
- idouble: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -693,7 +695,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-@@ -1057,11 +1059,15 @@
- ldouble: 2
-
- Function: Real part of "ctan":
-+double: 1
-+idouble: 1
- ildouble: 439
- ldouble: 439
-
- Function: Imaginary part of "ctan":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
- ildouble: 3
- ldouble: 3
---- glibc-2.3.2/sysdeps/i386/fpu_control.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/fpu_control.h 2003-08-21 08:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* FPU control word bits. i387 version.
-- Copyright (C) 1993,1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc.
-+ Copyright (C) 1993,1995-1998,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Olaf Flebbe.
-
-@@ -88,7 +88,11 @@
- /* Type of the control word. */
- typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
-
--/* Macros for accessing the hardware control word. */
-+/* Macros for accessing the hardware control word.
-+
-+ Note that the use of these macros is no sufficient anymore with
-+ recent hardware. Some floating point operations are executed in
-+ the SSE/SSE2 engines which have their own control and status register. */
- #define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw))
- #define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw))
-
---- glibc-2.3.2/sysdeps/i386/i486/atomicity.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i486/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,57 +0,0 @@
--/* Low-level functions for atomic operations. ix86 version, x >= 4.
-- Copyright (C) 1997, 2000, 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- register uint32_t result;
-- __asm__ __volatile__ ("lock; xaddl %0,%1"
-- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__ ("lock; addl %1,%0"
-- : "=m" (*mem) : "ir" (val), "0" (*mem));
--}
--
--static inline char
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"
-- : "=q" (ret), "=m" (*p), "=a" (readval)
-- : "r" (newval), "1" (*p), "a" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h 2003-05-12 12:13:07.000000000 -0400
-@@ -0,0 +1,359 @@
-+/* Copyright (C) 2002, 2003 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.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#ifndef LOCK_PREFIX
-+# ifdef UP
-+# define LOCK_PREFIX /* nothing */
-+# else
-+# define LOCK_PREFIX "lock;"
-+# endif
-+#endif
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "q" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+/* XXX We do not really need 64-bit compare-and-exchange. At least
-+ not in the moment. Using it would mean causing portability
-+ problems since not many other 32-bit architectures have support for
-+ such an operation. So don't define any code for now. If it is
-+ really going to be used the code below can be used on Intel Pentium
-+ and later, but NOT on i486. */
-+#if 1
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret = *(mem); abort (); ret = (newval); ret = (oldval); })
-+#else
-+# ifdef __PIC__
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile ("xchgl %2, %%ebx\n\t" \
-+ LOCK_PREFIX "cmpxchg8b %1\n\t" \
-+ "xchgl %2, %%ebx" \
-+ : "=A" (ret), "=m" (*mem) \
-+ : "DS" (((unsigned long long int) (newval)) \
-+ & 0xffffffff), \
-+ "c" (((unsigned long long int) (newval)) >> 32), \
-+ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
-+ & 0xffffffff), \
-+ "d" (((unsigned long long int) (oldval)) >> 32)); \
-+ ret; })
-+# else
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchg8b %1" \
-+ : "=A" (ret), "=m" (*mem) \
-+ : "b" (((unsigned long long int) (newval)) \
-+ & 0xffffffff), \
-+ "c" (((unsigned long long int) (newval)) >> 32), \
-+ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
-+ & 0xffffffff), \
-+ "d" (((unsigned long long int) (oldval)) >> 32)); \
-+ ret; })
-+# endif
-+#endif
-+
-+
-+/* Note that we need no lock prefix. */
-+#define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("xchgb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("xchgw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("xchgl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else \
-+ { \
-+ result = 0; \
-+ abort (); \
-+ } \
-+ result; })
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) result; \
-+ __typeof (value) addval = (value); \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "xaddb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "xaddw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "xaddl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ result = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq (memp, \
-+ result + addval, \
-+ result) == result); \
-+ } \
-+ result; })
-+
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_increment (mem); \
-+ else if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_decrement (mem); \
-+ else if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (value) addval = (value); \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + addval, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "iq" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_increment(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "incb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "incw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "incl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + 1, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "incb %0; sete %b1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "incw %0; sete %w1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "incl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_decrement(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "decb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "decw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "decl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval - 1, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "decb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "decw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "decl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "orb %b2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "orw %w2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "orl %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else \
-+ abort (); \
-+ })
-+
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else \
-+ abort (); \
-+ __result; })
---- glibc-2.3.2/sysdeps/i386/i486/bits/string.h 2003-01-14 02:36:19.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i486/bits/string.h 2003-09-19 22:37:07.000000000 -0400
-@@ -484,7 +484,8 @@
- ("std\n\t"
- "repne; scasb\n\t"
- "cmovne %2,%0\n\t"
-- "cld"
-+ "cld\n\t"
-+ "incl %0"
- : "=D" (__res), "=&c" (__d0), "=&r" (__d1)
- : "a" (__c), "0" (__s + __n - 1), "1" (__n), "2" (-1),
- "m" ( *(struct { __extension__ char __x[__n]; } *)__s)
-@@ -495,13 +496,14 @@
- "repne; scasb\n\t"
- "je 1f\n\t"
- "orl $-1,%0\n"
-- "1:\tcld"
-+ "1:\tcld\n\t"
-+ "incl %0"
- : "=D" (__res), "=&c" (__d0)
- : "a" (__c), "0" (__s + __n - 1), "1" (__n),
- "m" ( *(struct { __extension__ char __x[__n]; } *)__s)
- : "cc");
- # endif
-- return __res + 1;
-+ return __res;
- }
- # ifdef __USE_GNU
- # define memrchr(s, c, n) __memrchr ((s), (c), (n))
---- glibc-2.3.2/sysdeps/i386/i486/strcat.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i486/strcat.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strcat(dest, src) -- Append SRC on the end of DEST.
- For Intel 80x86, x>=4.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>.
- Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -267,3 +267,4 @@
- LEAVE
- RET_PTR
- END (BP_SYM (strcat))
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/i386/i486/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i486/string-inlines.c 2003-04-29 18:49:22.000000000 -0400
-@@ -0,0 +1,65 @@
-+/* Copyright (C) 1999, 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. */
-+
-+/* <bits/string.h> and <bits/string2.h> declare some extern inline
-+ functions. These functions are declared additionally here if
-+ inlining is not possible. */
-+
-+#undef __USE_STRING_INLINES
-+#define __USE_STRING_INLINES
-+#define _FORCE_INLINES
-+#define __STRING_INLINE /* empty */
-+#define __NO_INLINE__
-+
-+/* This is to avoid PLT entries for the x86 version. */
-+#define __memcpy_g __memcpy_g_internal
-+#define __strchr_g __strchr_g_internal
-+
-+#include <string.h>
-+#undef index
-+#undef rindex
-+
-+#undef __NO_INLINE__
-+#include <bits/string.h>
-+#include <bits/string2.h>
-+
-+void *
-+(__memcpy_c) (void *d, const void *s, size_t n)
-+{
-+ return memcpy (d, s, n);
-+}
-+
-+void *
-+__memset_cc (void *s, unsigned long int pattern, size_t n)
-+{
-+ return memset (s, pattern & 0xff, n);
-+}
-+strong_alias (__memset_cc, __memset_cg)
-+
-+void *
-+__memset_gg (void *s, char c, size_t n)
-+{
-+ return memset (s, c, n);
-+}
-+
-+#ifdef __memcpy_c
-+# undef __memcpy_g
-+strong_alias (__memcpy_g_internal, __memcpy_g)
-+# undef __strchr_g
-+strong_alias (__strchr_g_internal, __strchr_g)
-+#endif
---- glibc-2.3.2/sysdeps/i386/i486/strlen.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i486/strlen.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strlen(str) -- determine the length of the string STR.
- Optimized for Intel 80x86, x>=4.
-- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1991-1997, 2000, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
- This file is part of the GNU C Library.
-
-@@ -136,3 +136,4 @@
- LEAVE
- ret
- END (BP_SYM (strlen))
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/i386/i586/memcpy.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i586/memcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Highly optimized version for i586.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -116,3 +116,4 @@
- LEAVE
- RET_PTR
- END (BP_SYM (memcpy))
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/i386/i586/memset.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i586/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* memset/bzero -- set memory area to CH/0
- Highly optimized version for ix86, x>=5.
-- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund, <tege@matematik.su.se>
-
-@@ -114,3 +114,4 @@
- RET_PTR
- #endif
- END (BP_SYM (memset))
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/i386/i586/strchr.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i586/strchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Find character CH in a NUL terminated string.
- Highly optimized version for ix85, x>=5.
-- Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
-
-@@ -339,3 +339,4 @@
-
- #undef index
- weak_alias (BP_SYM (strchr), BP_SYM (index))
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/i386/i586/strcpy.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i586/strcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* strcpy/stpcpy implementation for i586.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -159,3 +159,6 @@
- LEAVE
- RET_PTR
- END (BP_SYM (STRCPY))
-+#ifndef USE_AS_STPCPY
-+libc_hidden_builtin_def (strcpy)
-+#endif
---- glibc-2.3.2/sysdeps/i386/i586/strlen.S 2002-03-11 20:28:49.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i586/strlen.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strlen -- Compute length of NUL terminated string.
- Highly optimized version for ix86, x>=5.
-- Copyright (C) 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1996,1997,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
-
-@@ -186,3 +186,4 @@
- LEAVE
- ret
- END (BP_SYM (strlen))
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/i386/i686/Makefile 2002-02-01 01:38:19.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i686/Makefile 2003-09-19 22:37:07.000000000 -0400
-@@ -2,3 +2,6 @@
- sysdep_routines += hp-timing
- static-only-routines += hp-timing
- endif
-+
-+# So that we can test __m128's alignment
-+stack-align-test-flags += -msse
---- glibc-2.3.2/sysdeps/i386/i686/dl-hash.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i686/dl-hash.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Compute hash alue for given string according to ELF standard.
-- Copyright (C) 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -26,7 +26,7 @@
- optimized for the PII processors. Though it will run on i586 it
- would be much slower than the generic C implementation. So don't
- use it. */
--static inline unsigned int
-+static unsigned int
- _dl_elf_hash (const unsigned char *name)
- {
- unsigned int result;
-@@ -71,10 +71,9 @@
- "jnz 2b\n"
- "1:\t"
- : "=&r" (result), "=r" (name), "=&c" (temp0), "=&r" (temp1)
-- : "0" (0), "1" (name));
-+ : "0" (0), "1" (name));
-
- return result;
- }
-
- #endif /* dl-hash.h */
--
---- glibc-2.3.2/sysdeps/i386/i686/hp-timing.h 2002-02-01 01:34:46.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i686/hp-timing.h 2003-04-24 20:05:59.000000000 -0400
-@@ -1,5 +1,5 @@
- /* High precision, low overhead timing functions. i686 version.
-- Copyright (C) 1998, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -149,7 +149,7 @@
- do { \
- char __buf[20]; \
- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \
-- int __len = (Len); \
-+ size_t __len = (Len); \
- char *__dest = (Buf); \
- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \
- *__dest++ = *__cp++; \
---- glibc-2.3.2/sysdeps/i386/i686/memcpy.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i686/memcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* Copy memory block and return pointer to beginning of destination block
- For Intel 80x86, x>=6.
- This file is part of the GNU C Library.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -59,3 +59,4 @@
- LEAVE
- RET_PTR
- END (BP_SYM (memcpy))
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/i386/i686/memmove.S 2003-02-04 02:11:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i686/memmove.S 2003-05-12 12:13:07.000000000 -0400
-@@ -92,3 +92,4 @@
- LEAVE
- RET_PTR
- END (BP_SYM (memmove))
-+libc_hidden_builtin_def (memmove)
---- glibc-2.3.2/sysdeps/i386/i686/memset.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/i686/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* memset/bzero -- set memory area to CH/0
- Highly optimized version for ix86, x>=6.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -93,3 +93,4 @@
- RET_PTR
- #endif
- END (BP_SYM (memset))
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/i386/i686/strcmp.S 2002-03-11 20:28:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i686/strcmp.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Highly optimized version for ix86, x>=6.
-- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
-
-@@ -69,3 +69,4 @@
- LEAVE
- ret
- END (BP_SYM (strcmp))
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/i386/i686/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/i686/tst-stack-align.h 2003-09-17 04:37:57.000000000 -0400
-@@ -0,0 +1,45 @@
-+/* Copyright (C) 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 <stdio.h>
-+#include <stdint.h>
-+#ifndef __SSE__
-+#include_next <tst-stack-align.h>
-+#else
-+#include <xmmintrin.h>
-+
-+#define TEST_STACK_ALIGN() \
-+ ({ \
-+ __m128 _m; \
-+ double _d = 12.0; \
-+ long double _ld = 15.0; \
-+ int _ret = 0; \
-+ printf ("__m128: %p %zu\n", &_m, __alignof (__m128)); \
-+ if ((((uintptr_t) &_m) & (__alignof (__m128) - 1)) != 0) \
-+ _ret = 1; \
-+ \
-+ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
-+ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
-+ _ret = 1; \
-+ \
-+ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
-+ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
-+ _ret = 1; \
-+ _ret; \
-+ })
-+#endif
---- glibc-2.3.2/sysdeps/i386/memchr.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/memchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* memchr (str, chr, len) -- Return pointer to first occurrence of CHR in STR less
- than LEN.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -330,3 +330,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/i386/memset.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/memset.c 2003-05-12 12:13:07.000000000 -0400
-@@ -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 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1992,1993,1997,1998,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
-
-@@ -79,6 +79,7 @@
-
- return dstpp;
- }
-+libc_hidden_builtin_def (memset)
-
- #else
- #include <sysdeps/generic/memset.c>
---- glibc-2.3.2/sysdeps/i386/setfpucw.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/setfpucw.c 2003-07-22 18:21:12.000000000 -0400
-@@ -0,0 +1,55 @@
-+/* Set the FPU control word for x86.
-+ Copyright (C) 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 <math.h>
-+#include <fpu_control.h>
-+#include <fenv.h>
-+#include <unistd.h>
-+#include <ldsodefs.h>
-+#include <dl-procinfo.h>
-+
-+void
-+__setfpucw (fpu_control_t set)
-+{
-+ fpu_control_t cw;
-+
-+ /* Fetch the current control word. */
-+ __asm__ ("fnstcw %0" : "=m" (*&cw));
-+
-+ /* Preserve the reserved bits, and set the rest as the user
-+ specified (or the default, if the user gave zero). */
-+ cw &= _FPU_RESERVED;
-+ cw |= set & ~_FPU_RESERVED;
-+
-+ __asm__ ("fldcw %0" : : "m" (*&cw));
-+
-+ /* If the CPU supports SSE, we set the MXCSR as well. */
-+ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
-+ {
-+ unsigned int xnew_exc;
-+
-+ /* Get the current MXCSR. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
-+
-+ xnew_exc &= ~((0xc00 << 3) | (FE_ALL_EXCEPT << 7));
-+ xnew_exc |= ((set & 0xc00) << 3) | ((set & FE_ALL_EXCEPT) << 7);
-+
-+ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
-+ }
-+}
---- glibc-2.3.2/sysdeps/i386/strchr.S 2002-08-11 20:17:45.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -289,3 +289,4 @@
- END (BP_SYM (strchr))
-
- weak_alias (BP_SYM (strchr), BP_SYM (index))
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/i386/strcspn.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strcspn.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strcspn (str, ss) -- Return the length of the initial segment of STR
- which contains no characters from SS.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -179,3 +179,4 @@
- LEAVE
- ret
- END (BP_SYM (strcspn))
-+libc_hidden_builtin_def (strcspn)
---- glibc-2.3.2/sysdeps/i386/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/string-inlines.c 2003-04-29 18:49:14.000000000 -0400
-@@ -0,0 +1,189 @@
-+/* Copyright (C) 1999, 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. */
-+
-+/* <bits/string.h> and <bits/string2.h> declare some extern inline
-+ functions. These functions are declared additionally here if
-+ inlining is not possible. */
-+
-+#undef __USE_STRING_INLINES
-+#define __USE_STRING_INLINES
-+#define _FORCE_INLINES
-+#define __STRING_INLINE /* empty */
-+#define __NO_INLINE__
-+
-+#include <string.h>
-+#undef index
-+#undef rindex
-+
-+#undef __NO_INLINE__
-+#include <bits/string.h>
-+#include <bits/string2.h>
-+
-+/* Functions which are inlines in i486 but not i386. */
-+void *
-+__memcpy_by2 (void *dest, const void *src, size_t n)
-+{
-+ return memcpy (dest, src, n);
-+}
-+strong_alias (__memcpy_by2, __memcpy_by4)
-+strong_alias (__memcpy_by2, __memcpy_g)
-+strong_alias (__memcpy_by2, __memcpy_g_internal)
-+
-+void *
-+__memset_ccn_by2 (void *s, unsigned int c, size_t n)
-+{
-+ return memset (s, c & 0xff, n);
-+}
-+strong_alias (__memset_ccn_by2, __memset_ccn_by4)
-+
-+void *
-+__memset_gcn_by2 (void *s, int c, size_t n)
-+{
-+ return memset (s, c, n);
-+}
-+strong_alias (__memset_gcn_by2, __memset_gcn_by4)
-+
-+size_t
-+__strlen_g (const char *s)
-+{
-+ return strlen (s);
-+}
-+
-+char *
-+__strcpy_g (char *d, const char *s)
-+{
-+ return strcpy (d, s);
-+}
-+
-+char *
-+__mempcpy_by2 (char *d, const char *s, size_t n)
-+{
-+ return mempcpy (d, s, n);
-+}
-+strong_alias (__mempcpy_by2, __mempcpy_by4)
-+strong_alias (__mempcpy_by2, __mempcpy_byn)
-+
-+char *
-+__stpcpy_g (char *d, const char *s)
-+{
-+ return stpcpy (d, s);
-+}
-+
-+char *
-+__strncpy_by2 (char *d, const char s[], size_t srclen, size_t n)
-+{
-+ return strncpy (d, s, n);
-+}
-+strong_alias (__strncpy_by2, __strncpy_by4)
-+strong_alias (__strncpy_by2, __strncpy_byn)
-+
-+char *
-+__strncpy_gg (char *d, const char *s, size_t n)
-+{
-+ return strncpy (d, s, n);
-+}
-+
-+char *
-+__strcat_c (char *d, const char s[], size_t srclen)
-+{
-+ return strcat (d, s);
-+}
-+
-+char *
-+__strcat_g (char *d, const char *s)
-+{
-+ return strcat (d, s);
-+}
-+
-+char *
-+__strncat_g (char *d, const char s[], size_t n)
-+{
-+ return strncat (d, s, n);
-+}
-+
-+int
-+__strcmp_gg (const char *s1, const char *s2)
-+{
-+ return strcmp (s1, s2);
-+}
-+
-+int
-+__strncmp_g (const char *s1, const char *s2, size_t n)
-+{
-+ return strncmp (s1, s2, n);
-+}
-+
-+char *
-+__strrchr_c (const char *s, int c)
-+{
-+ return strrchr (s, c >> 8);
-+}
-+
-+char *
-+__strrchr_g (const char *s, int c)
-+{
-+ return strrchr (s, c);
-+}
-+
-+size_t
-+__strcspn_cg (const char *s, const char reject[], size_t reject_len)
-+{
-+ return strcspn (s, reject);
-+}
-+
-+size_t
-+__strcspn_g (const char *s, const char *reject)
-+{
-+ return strcspn (s, reject);
-+}
-+
-+size_t
-+__strspn_cg (const char *s, const char accept[], size_t accept_len)
-+{
-+ return strspn (s, accept);
-+}
-+
-+size_t
-+__strspn_g (const char *s, const char *accept)
-+{
-+ return strspn (s, accept);
-+}
-+
-+char *
-+__strpbrk_cg (const char *s, const char accept[], size_t accept_len)
-+{
-+ return strpbrk (s, accept);
-+}
-+
-+char *
-+__strpbrk_g (const char *s, const char *accept)
-+{
-+ return strpbrk (s, accept);
-+}
-+
-+char *
-+__strstr_cg (const char *haystack, const char needle[], size_t needle_len)
-+{
-+ return strstr (haystack, needle);
-+}
-+
-+char *
-+__strstr_g (const char *haystack, const char needle[])
-+{
-+ return strstr (haystack, needle);
-+}
---- glibc-2.3.2/sysdeps/i386/strlen.c 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strlen.c 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Determine the length of a string. For Intel 80x86, x>=3.
-- Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1992,1993,1996,1997,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
-
-@@ -33,3 +33,4 @@
-
- return -2 - cnt;
- }
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/i386/strpbrk.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strpbrk.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strcspn (str, ss) -- Return the length of the initial segement of STR
- which contains no characters from SS.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
- This file is part of the GNU C Library.
-@@ -188,3 +188,4 @@
- LEAVE
- RET_PTR
- END (BP_SYM (strpbrk))
-+libc_hidden_builtin_def (strpbrk)
---- glibc-2.3.2/sysdeps/i386/strrchr.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strrchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strrchr (str, ch) -- Return pointer to last occurrence of CH in STR.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -331,3 +331,4 @@
- END (BP_SYM (strrchr))
-
- weak_alias (BP_SYM (strrchr), BP_SYM (rindex))
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/i386/strspn.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/strspn.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strcspn (str, ss) -- Return the length of the initial segment of STR
- which contains only characters from SS.
- For Intel 80x86, x>=3.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
-@@ -179,3 +179,4 @@
- LEAVE
- ret
- END (BP_SYM (strspn))
-+libc_hidden_builtin_def (strspn)
---- glibc-2.3.2/sysdeps/i386/sysdep.h 2003-01-09 14:43:34.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/sysdep.h 2003-03-15 15:02:16.000000000 -0500
-@@ -64,6 +64,14 @@
- ASM_SIZE_DIRECTIVE(name) \
- STABS_FUN_END(name)
-
-+#ifdef HAVE_CPP_ASM_DEBUGINFO
-+/* Disable that goop, because we just pass -g through to the assembler
-+ and it generates proper line number information directly. */
-+# define STABS_CURRENT_FILE1(name)
-+# define STABS_CURRENT_FILE(name)
-+# define STABS_FUN(name)
-+# define STABS_FUN_END(name)
-+#else
- /* Remove the following two lines once the gdb bug is fixed. */
- #define STABS_CURRENT_FILE(name) \
- STABS_CURRENT_FILE1 (#name)
-@@ -77,6 +85,7 @@
- .stabs #namestr,36,0,0,name;
- #define STABS_FUN_END(name) \
- 1: .stabs "",36,0,0,1b-name;
-+#endif
-
- /* If compiled for profiling, call `mcount' at the start of each function. */
- #ifdef PROF
---- glibc-2.3.2/sysdeps/ia64/atomicity.h 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,48 +0,0 @@
--/* Low-level functions for atomic operations. IA-64 version.
-- Copyright (C) 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--#include <ia64intrin.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- return __sync_fetch_and_add (mem, val);
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __sync_fetch_and_add (mem, val);
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- return __sync_bool_compare_and_swap (p, oldval, newval);
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/ia64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/bits/atomic.h 2003-08-21 08:37:09.000000000 -0400
-@@ -0,0 +1,126 @@
-+/* Copyright (C) 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 <stdint.h>
-+#include <ia64intrin.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+ (!__sync_bool_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
-+ (int) (long) (newval)))
-+
-+#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+ (!__sync_bool_compare_and_swap_di ((long *) (mem), (long) (oldval), \
-+ (long) (newval)))
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ __sync_val_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
-+ (int) (long) (newval))
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ __sync_val_compare_and_swap_di ((long *) (mem), (long) (oldval), \
-+ (long) (newval))
-+
-+/* Atomically store newval and return the old value. */
-+#define atomic_exchange_acq(mem, value) \
-+ __sync_lock_test_and_set (mem, value)
-+
-+#define atomic_exchange_rel(mem, value) \
-+ (__sync_synchronize (), __sync_lock_test_and_set (mem, value))
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __sync_fetch_and_add_si ((int *) (mem), (int) (value)); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __sync_fetch_and_add_di ((long *) (mem), (long) (value)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*mem) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ \
-+ __val = (*__memp); \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ if (__builtin_expect (__val <= 0, 0)) \
-+ break; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, __oldval - 1, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ __oldval; })
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ __typeof (*mem) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*mem) __mask = ((__typeof (*mem)) 1 << (bit)); \
-+ \
-+ __val = (*__memp); \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, \
-+ __oldval | __mask, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ __oldval & __mask; })
-+
-+#define atomic_full_barrier() __sync_synchronize ()
---- glibc-2.3.2/sysdeps/ia64/dl-fptr.c 2002-11-13 16:41:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/dl-fptr.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,288 +0,0 @@
--/* Manage function descriptors. IA-64 version.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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 <ia64intrin.h>
--#include <unistd.h>
--#include <string.h>
--#include <sys/param.h>
--#include <sys/mman.h>
--#include <link.h>
--#include <ldsodefs.h>
--#include <elf/dynamic-link.h>
--#include <dl-machine.h>
--#ifdef _LIBC_REENTRANT
--# include <ia64intrin.h>
--# include <signal.h>
--# include <time.h>
--#endif
--
--Elf64_Addr __ia64_boot_fptr_table[IA64_BOOT_FPTR_TABLE_LEN];
--
--static struct local
-- {
-- struct ia64_fdesc_table *root;
-- struct ia64_fdesc *free_list;
-- unsigned int npages; /* # of pages to allocate */
--#ifdef _LIBC_REENTRANT
-- volatile int lock;
-- sigset_t full_sigset;
--#endif
-- /* the next to members MUST be consecutive! */
-- struct ia64_fdesc_table boot_table;
-- struct ia64_fdesc boot_fdescs[1024];
-- }
--local =
-- {
-- root: &local.boot_table,
-- npages: 2,
-- boot_table:
-- {
-- len: sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
-- first_unused: 0
-- }
-- };
--
--/* Locking is tricky: we may get a signal while holding the lock and
-- the signal handler may end up calling into the dynamic loader
-- again. Also, if a real-time process spins on the lock, a
-- non-realtime process may never get the chance to release it's lock,
-- unless the realtime process relinquishes the CPU from time to time.
-- Hence we (a) block signals before acquiring the lock and (b) do a
-- nanosleep() when we detect prolongued contention. */
--#ifdef _LIBC_REENTRANT
--# define lock(l) \
--{ \
-- sigset_t _saved_set; \
-- int i = 10000; \
-- if (!__sigismember (&(l)->full_sigset, SIGINT)) \
-- __sigfillset (&(l)->full_sigset); \
-- \
-- while (__sync_lock_test_and_set (&(l)->lock, 1)) \
-- { \
-- struct timespec ts; \
-- if (i > 0) \
-- { \
-- --i; \
-- continue; \
-- } \
-- ts.tv_sec = 0; \
-- ts.tv_nsec = 1*1000*1000; \
-- __nanosleep (&ts, NULL); \
-- } \
-- __sigprocmask (SIG_BLOCK, &(l)->full_sigset, &_saved_set);
--# define unlock(l) \
-- __sigprocmask (SIG_SETMASK, &_saved_set, NULL); \
-- __sync_lock_release (&(l)->lock); \
--}
--#else
--# define lock(l)
--# define unlock(l)
--#endif
--
--/* Create a new fdesc table and return a pointer to the first fdesc
-- entry. The fdesc lock must have been acquired already. */
--
--static struct ia64_fdesc *
--new_fdesc_table (struct local *l)
--{
-- size_t size = l->npages * GL(dl_pagesize);
-- struct ia64_fdesc_table *new_table;
-- struct ia64_fdesc *fdesc;
--
-- l->npages += l->npages;
-- new_table = __mmap (0, size, PROT_READ | PROT_WRITE,
-- MAP_ANON | MAP_PRIVATE, -1, 0);
-- if (new_table == MAP_FAILED)
-- _dl_signal_error (errno, NULL, NULL, "cannot map pages for fdesc table");
--
-- new_table->len = (size - sizeof (*new_table)) / sizeof (struct ia64_fdesc);
-- fdesc = &new_table->fdesc[0];
-- new_table->first_unused = 1;
-- new_table->next = l->root;
-- l->root = new_table;
-- return fdesc;
--}
--
--static Elf64_Addr
--make_fdesc (Elf64_Addr ip, Elf64_Addr gp)
--{
-- struct ia64_fdesc *fdesc = NULL;
-- struct ia64_fdesc_table *t;
-- unsigned int old;
-- struct local *l;
--
-- asm ("movl %0 = @gprel (local);; add %0 = %0, gp" : "=&r"(l));
--
-- t = l->root;
-- while (1)
-- {
-- old = t->first_unused;
-- if (old >= t->len)
-- break;
-- else if (__sync_bool_compare_and_swap (&t->first_unused, old, old + 1))
-- {
-- fdesc = &t->fdesc[old];
-- goto install;
-- }
-- }
--
-- lock (l);
-- {
-- if (l->free_list)
-- {
-- fdesc = l->free_list; /* get it from free-list */
-- l->free_list = (struct ia64_fdesc *) fdesc->ip;
-- }
-- else
-- fdesc = new_fdesc_table (l); /* create new fdesc table */
-- }
-- unlock (l);
--
-- install:
-- fdesc->ip = ip;
-- fdesc->gp = gp;
--
-- return (Elf64_Addr) fdesc;
--}
--
--static inline Elf64_Addr *
--make_fptr_table (struct link_map *map)
--{
-- const Elf64_Sym *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
-- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-- Elf64_Addr *fptr_table;
-- size_t size;
-- size_t len;
--
-- /* XXX Apparently the only way to find out the size of the dynamic
-- symbol section is to assume that the string table follows right
-- afterwards... */
-- len = ((strtab - (char *) symtab) / map->l_info[DT_SYMENT]->d_un.d_val);
-- size = ((len * sizeof (fptr_table[0]) + GL(dl_pagesize) - 1)
-- & -GL(dl_pagesize));
-- /* XXX We don't support here in the moment systems without MAP_ANON.
-- There probably are none for IA-64. In case this is proven wrong
-- we will have to open /dev/null here and use the file descriptor
-- instead of the hard-coded -1. */
-- fptr_table = __mmap (NULL, size, PROT_READ | PROT_WRITE,
-- MAP_ANON | MAP_PRIVATE, -1, 0);
-- if (fptr_table == MAP_FAILED)
-- _dl_signal_error (errno, NULL, NULL, "cannot map pages for fptr table");
--
-- map->l_mach.fptr_table_len = len;
-- map->l_mach.fptr_table = fptr_table;
-- return fptr_table;
--}
--
--Elf64_Addr
--__ia64_make_fptr (struct link_map *map, const Elf64_Sym *sym, Elf64_Addr ip)
--{
-- Elf64_Addr *ftab = map->l_mach.fptr_table;
-- const Elf64_Sym *symtab;
-- Elf_Symndx symidx;
--
-- if (__builtin_expect (!map->l_mach.fptr_table, 0))
-- ftab = make_fptr_table (map);
--
-- symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
-- symidx = sym - symtab;
--
-- if (symidx >= map->l_mach.fptr_table_len)
-- _dl_signal_error (0, NULL, NULL,
-- "internal error: symidx out of range of fptr table");
--
-- if (!ftab[symidx])
-- {
-- /* GOT has already been relocated in elf_get_dynamic_info -
-- don't try to relocate it again. */
-- ftab[symidx] = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
--#if 0
-- {
-- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-- struct local *l;
--
-- asm ("addl %0 = @gprel (local), gp" : "=r" (l));
-- if (l->root != &l->boot_table || l->boot_table.first_unused > 20)
-- _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
-- strtab + sym->st_name, ftab[symidx]);
-- }
--#endif
-- }
--
-- return ftab[symidx];
--}
--
--void
--_dl_unmap (struct link_map *map)
--{
-- Elf64_Addr *ftab = map->l_mach.fptr_table;
-- struct ia64_fdesc *head = NULL, *tail = NULL;
-- size_t i;
--
-- __munmap ((void *) map->l_map_start, map->l_map_end - map->l_map_start);
--
-- if (!ftab)
-- return;
--
-- /* String together the fdesc structures that are being freed. */
-- for (i = 0; i < map->l_mach.fptr_table_len; ++i)
-- {
-- if (ftab[i])
-- {
-- *(struct ia64_fdesc **) ftab[i] = head;
-- head = (struct ia64_fdesc *) ftab[i];
-- if (!tail)
-- tail = head;
-- }
-- }
--
-- /* Prepend the new list to the free_list: */
-- if (tail)
-- {
-- lock (&local);
-- {
-- *(struct ia64_fdesc **) tail = local.free_list;
-- local.free_list = head;
-- }
-- unlock (&local);
-- }
--
-- __munmap (ftab,
-- map->l_mach.fptr_table_len * sizeof (map->l_mach.fptr_table[0]));
-- map->l_mach.fptr_table = NULL;
--}
--
--Elf64_Addr
--_dl_lookup_address (const void *address)
--{
-- Elf64_Addr addr = (Elf64_Addr) address;
-- struct ia64_fdesc_table *t;
-- unsigned long int i;
--
-- for (t = local.root; t != NULL; t = t->next)
-- {
-- i = (struct ia64_fdesc *) addr - &t->fdesc[0];
-- if (i < t->first_unused && addr == (Elf64_Addr) &t->fdesc[i])
-- {
-- addr = t->fdesc[i].ip;
-- break;
-- }
-- }
-- return addr;
--}
---- glibc-2.3.2/sysdeps/ia64/dl-fptr.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/dl-fptr.h 2003-08-21 08:37:09.000000000 -0400
-@@ -0,0 +1,36 @@
-+/* Function descriptors. IA64 version.
-+ Copyright (C) 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. */
-+
-+#ifndef dl_ia64_fptr_h
-+#define dl_ia64_fptr_h 1
-+
-+#include <ia64intrin.h>
-+#include <sysdeps/generic/dl-fptr.h>
-+
-+#define COMPARE_AND_SWAP(ptr, old, new) \
-+ __sync_bool_compare_and_swap (ptr, old, new)
-+
-+/* There are currently 123 dynamic symbols in ld.so.
-+ ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
-+#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 200
-+
-+#define ELF_MACHINE_LOAD_ADDRESS(var, symbol) \
-+ asm ("movl %0 = @gprel (" #symbol ");; add %0 = %0, gp" : "=&r" (var));
-+
-+#endif /* !dl_ia64_fptr_h */
---- glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h 2002-01-29 19:22:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Configuration of lookup functions.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 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
-@@ -23,11 +23,13 @@
- #define ELF_FUNCTION_PTR_IS_SPECIAL
- #define DL_UNMAP_IS_SPECIAL
-
-+/* We do not support copy relocations for IA-64. */
-+#define DL_NO_COPY_RELOCS
-+
- /* Forward declaration. */
- struct link_map;
-
--extern void *_dl_symbol_address (const struct link_map *map,
-- const Elf64_Sym *ref);
-+extern void *_dl_symbol_address (struct link_map *map, const Elf64_Sym *ref);
-
- #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)
-
---- glibc-2.3.2/sysdeps/ia64/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -26,44 +26,22 @@
- #include <string.h>
- #include <link.h>
- #include <errno.h>
-+#include <dl-fptr.h>
- #include <tls.h>
-
- /* Translate a processor specific dynamic tag to the index
- in l_info array. */
- #define DT_IA_64(x) (DT_IA_64_##x - DT_LOPROC + DT_NUM)
-
--/* There are currently 123 dynamic symbols in ld.so.
-- IA64_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
--#define IA64_BOOT_FPTR_TABLE_LEN 200
--
--/* An FDESC is a function descriptor. */
--
--struct ia64_fdesc
-- {
-- Elf64_Addr ip; /* code entry point */
-- Elf64_Addr gp; /* global pointer */
-- };
--
--struct ia64_fdesc_table
-- {
-- struct ia64_fdesc_table *next;
-- unsigned int len; /* # of entries in fdesc table */
-- volatile unsigned int first_unused; /* index of first available entry */
-- struct ia64_fdesc fdesc[0];
-- };
--
--extern Elf64_Addr __ia64_make_fptr (struct link_map *, const Elf64_Sym *,
-- Elf64_Addr);
--
- static inline void
- __ia64_init_bootstrap_fdesc_table (struct link_map *map)
- {
- Elf64_Addr *boot_table;
-
- /* careful: this will be called before got has been relocated... */
-- asm (";; addl %0 = @gprel (__ia64_boot_fptr_table), gp" : "=r"(boot_table));
-+ asm (";; addl %0 = @gprel (_dl_boot_fptr_table), gp" : "=r"(boot_table));
-
-- map->l_mach.fptr_table_len = IA64_BOOT_FPTR_TABLE_LEN;
-+ map->l_mach.fptr_table_len = ELF_MACHINE_BOOT_FPTR_TABLE_LEN;
- map->l_mach.fptr_table = boot_table;
- }
-
-@@ -142,7 +120,7 @@
-
- /* This function will be called to perform the relocation. */
- if (!profile)
-- doit = (Elf64_Addr) ((struct ia64_fdesc *) &_dl_runtime_resolve)->ip;
-+ doit = (Elf64_Addr) ((struct fdesc *) &_dl_runtime_resolve)->ip;
- else
- {
- if (_dl_name_match_p (GL(dl_profile), l))
-@@ -151,7 +129,7 @@
- want profiling and the timers are started. */
- GL(dl_profile_map) = l;
- }
-- doit = (Elf64_Addr) ((struct ia64_fdesc *) &_dl_runtime_profile)->ip;
-+ doit = (Elf64_Addr) ((struct fdesc *) &_dl_runtime_profile)->ip;
- }
-
- reserve[1] = doit;
-@@ -301,8 +279,10 @@
- "_start:\n" \
- "0: { .mii\n" \
- " .prologue\n" \
--" .save ar.pfs, r32\n" \
- " .save rp, r0\n" \
-+" .body\n" \
-+" .prologue\n" \
-+" .save ar.pfs, r32\n" \
- " alloc loc0 = ar.pfs, 0, 3, 4, 0\n" \
- " .body\n" \
- " mov r2 = ip\n" \
-@@ -332,8 +312,10 @@
- " .proc _dl_start_user#\n" \
- "_dl_start_user:\n" \
- " .prologue\n" \
--" .save ar.pfs, r32\n" \
- " .save rp, r0\n" \
-+" .body\n" \
-+" .prologue\n" \
-+" .save ar.pfs, r32\n" \
- " .body\n" \
- " { .mii\n" \
- " /* Save the pointer to the user entry point fptr in loc2. */\n" \
-@@ -525,8 +507,9 @@
- const Elf64_Rela *reloc,
- const Elf64_Sym *sym,
- const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
- Elf64_Addr value;
-
-@@ -575,7 +558,7 @@
- return;
- }
- else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_FPTR64LSB))
-- value = __ia64_make_fptr (sym_map, sym, value);
-+ value = _dl_make_fptr (sym_map, sym, value);
- else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_PCREL64LSB))
- value -= (Elf64_Addr) reloc_addr & -16;
- #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || defined USE___THREAD)
-@@ -583,7 +566,7 @@
- # ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always index 1. */
- value = 1;
--# else
-+# else
- /* Get the information from the link map returned by the
- resolv function. */
- value = sym_map->l_tls_modid;
-@@ -599,7 +582,7 @@
- }
- #endif
- else
-- assert (! "unexpected dynamic reloc type");
-+ _dl_reloc_bad_type (map, r_type, 0);
- }
- else
- value = 0;
-@@ -616,7 +599,7 @@
- reloc_addr[1] = 0;
- }
- else
-- assert (! "unexpected dynamic reloc format");
-+ _dl_reloc_bad_type (map, r_type, 0);
- }
-
- /* Let do-rel.h know that on IA-64 if l_addr is 0, all RELATIVE relocs
-@@ -625,8 +608,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- /* ??? Ignore MSB and Instruction format for now. */
- assert (ELF64_R_TYPE (reloc->r_info) == R_IA64_REL64LSB);
-
-@@ -649,7 +633,7 @@
- else if (r_type == R_IA64_NONE)
- return;
- else
-- assert (! "unexpected PLT reloc type");
-+ _dl_reloc_bad_type (map, r_type, 1);
- }
-
- #endif /* RESOLVE_MAP */
---- glibc-2.3.2/sysdeps/ia64/dl-symaddr.c 2001-07-25 19:53:58.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/dl-symaddr.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,33 +0,0 @@
--/* Get the symbol address. IA-64 version.
-- Copyright (C) 1999, 2000, 2001 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 <ldsodefs.h>
--#include <dl-machine.h>
--
--void *
--_dl_symbol_address (const struct link_map *map, const Elf64_Sym *ref)
--{
-- Elf64_Addr value = (map ? map->l_addr : 0) + ref->st_value;
--
-- /* On ia64, we have to return the pointer to function descriptor. */
-- if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC)
-- return (void *) __ia64_make_fptr (map, ref, value);
-- else
-- return (void *) value;
--}
---- glibc-2.3.2/sysdeps/ia64/elf/initfini.c 2002-11-08 14:35:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/elf/initfini.c 2003-06-03 09:36:28.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Special .init and .fini section support for ia64.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -46,6 +46,7 @@
- --davidm 02/10/29 */
-
- static void
-+__attribute__ ((used))
- gmon_initializer (void)
- {
- extern void weak_function __gmon_start__ (void);
---- glibc-2.3.2/sysdeps/ia64/elf/start.S 2002-12-09 22:41:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/elf/start.S 2003-04-12 11:39:45.000000000 -0400
-@@ -40,6 +40,9 @@
- .type _start,@function
- _start:
- .prologue
-+ .save rp, r0
-+ .body
-+ .prologue
- { .mlx
- alloc r2 = ar.pfs,0,0,7,0
- movl r3 = FPSR_DEFAULT
-@@ -76,8 +79,7 @@
- { .mmi
- ld8 out3 = [out3] /* pointer to `init' function descriptor */
- ld8 out4 = [out4] /* pointer to `fini' function descriptor */
-- .save rp, r4
-- mov r4 = r0 /* terminate unwind chain with a NULL return-pointer */
-+ nop 0
- }
- .body
- { .mib
---- glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps 2002-06-20 18:06:37.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
-@@ -1,10 +1,5 @@
- # Begin of automatic generation
-
--# acos
--Test "acos (0.0625) == 1.50825556499840522843072005474337068":
--ildouble: 622
--ldouble: 622
--
- # cacos
- Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
- float: 1
-@@ -84,7 +79,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -99,7 +94,7 @@
- ldouble: 1
-
- # ccosh
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -122,8 +117,6 @@
- Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- float: 1
- ifloat: 1
--ildouble: 202
--ldouble: 202
- Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- ildouble: 1
- ldouble: 1
-@@ -146,7 +139,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- idouble: 1
- ildouble: 1
-@@ -223,6 +216,9 @@
- ifloat: 1
-
- # cos
-+Test "cos (0.80190127184058835) == 0.69534156199418473":
-+double: 1
-+idouble: 1
- Test "cos (M_PI_6l * 2.0) == 0.5":
- double: 1
- float: 1
-@@ -247,8 +243,6 @@
- Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
- float: 1
- ifloat: 1
--ildouble: 587
--ldouble: 587
- Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
- float: 1
- ifloat: 1
-@@ -259,8 +253,8 @@
- float: 4
- idouble: 1
- ifloat: 4
--ildouble: 768
--ldouble: 768
-+ildouble: 1
-+ldouble: 1
- Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
- ildouble: 1
- ldouble: 1
-@@ -272,8 +266,8 @@
- float: 3
- idouble: 2
- ifloat: 3
--ildouble: 370
--ldouble: 370
-+ildouble: 3
-+ldouble: 3
- Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
- ildouble: 1
- ldouble: 1
-@@ -308,10 +302,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- float: 1
- idouble: 1
-@@ -336,14 +330,16 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
--ildouble: 436
--ldouble: 436
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+ildouble: 2
-+ldouble: 2
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
- Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
- ildouble: 1
- ldouble: 1
-@@ -354,10 +350,10 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 1
- ifloat: 1
- ildouble: 24
-@@ -584,12 +580,12 @@
- Test "lgamma (-0.5) == log(2*sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -610,6 +606,9 @@
- ldouble: 1
-
- # sincos
-+Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
-+double: 1
-+idouble: 1
- Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
- double: 1
- float: 1
-@@ -646,7 +645,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-@@ -794,10 +793,6 @@
- idouble: 1
-
- # Maximal error of functions:
--Function: "acos":
--ildouble: 622
--ldouble: 622
--
- Function: Imaginary part of "cacos":
- float: 1
- ifloat: 1
-@@ -889,8 +884,6 @@
- Function: Real part of "cexp":
- float: 1
- ifloat: 1
--ildouble: 202
--ldouble: 202
-
- Function: Imaginary part of "cexp":
- float: 1
-@@ -933,8 +926,8 @@
- float: 5
- idouble: 2
- ifloat: 5
--ildouble: 768
--ldouble: 768
-+ildouble: 3
-+ldouble: 3
-
- Function: Imaginary part of "cpow":
- double: 2
-@@ -977,14 +970,16 @@
- Function: Real part of "ctan":
- double: 1
- idouble: 1
--ildouble: 436
--ldouble: 436
-+ildouble: 2
-+ldouble: 2
-
- Function: Imaginary part of "ctan":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "ctanh":
- double: 1
---- glibc-2.3.2/sysdeps/ia64/hp-timing.h 2002-08-24 23:59:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/hp-timing.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* High precision, low overhead timing functions. IA-64 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
-
-@@ -86,7 +86,7 @@
- is not correct in some situations. The solution is to read again.
- For now we always do this until we know how to recognize a fixed
- processor implementation. */
--#define REPEAT_READ(val) __builtin_expect ((int) val == -1, 0)
-+#define REPEAT_READ(val) __builtin_expect ((long int) val == -1, 0)
-
- /* That's quite simple. Use the `ar.itc' instruction. */
- #define HP_TIMING_NOW(Var) \
---- glibc-2.3.2/sysdeps/ia64/memccpy.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/memccpy.S 2003-09-19 22:37:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the memccpy() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -46,6 +46,7 @@
- #define tmp r23
- #define char r24
- #define charx8 r25
-+#define saved_ec r26
- #define sh2 r28
- #define sh1 r29
- #define loopcnt r30
-@@ -56,25 +57,27 @@
- alloc r2 = ar.pfs, 4, 40 - 4, 0, 40
-
- #include "softpipe.h"
-- .rotr r[MEMLAT + 3], tmp1[4], tmp2[4], val[4], tmp3[2], pos0[2]
-+ .rotr r[MEMLAT + 7], tmp1[4], tmp2[4], val[4], tmp3[2], pos0[2]
- .rotp p[MEMLAT + 6 + 1]
-
- mov ret0 = r0 // return NULL if no match
- .save pr, saved_pr
- mov saved_pr = pr // save the predicate registers
-+ mov dest = in0 // dest
- .save ar.lc, saved_lc
- mov saved_lc = ar.lc // save the loop counter
-+ mov saved_ec = ar.ec // save the loop counter
- .body
-- mov dest = in0 // dest
- mov src = in1 // src
- extr.u char = in2, 0, 8 // char
- mov len = in3 // len
- sub tmp = r0, in0 // tmp = -dest
- cmp.ne p7, p0 = r0, r0 // clear p7
- ;;
-- and loopcnt = 7, tmp // loopcnt = -dest % 8
-+ and loopcnt = 7, tmp // loopcnt = -dest % 8
- cmp.ge p6, p0 = OP_T_THRES, len // is len <= OP_T_THRES
--(p6) br.cond.spnt .cpyfew // copy byte by byte
-+ mov ar.ec = 0 // ec not guaranteed zero on entry
-+(p6) br.cond.spnt .cpyfew // copy byte by byte
- ;;
- cmp.eq p6, p0 = loopcnt, r0
- mux1 charx8 = char, @brcst
-@@ -109,26 +112,31 @@
- cmp.ne p6, p0 = r0, r0 ;; // clear p6
- .align 32
- .l2:
--(p[0]) ld8 r[0] = [asrc], 8 // r[0] = w1
-+(p[0]) ld8.s r[0] = [asrc], 8 // r[0] = w1
- (p[MEMLAT]) shr.u tmp1[0] = r[1 + MEMLAT], sh1 // tmp1 = w0 >> sh1
- (p[MEMLAT]) shl tmp2[0] = r[0 + MEMLAT], sh2 // tmp2 = w1 << sh2
- (p[MEMLAT+4]) xor tmp3[0] = val[1], charx8
- (p[MEMLAT+5]) czx1.r pos0[0] = tmp3[1]
-+(p[MEMLAT+6]) chk.s r[6 + MEMLAT], .recovery1 // our data isn't
-+ // valid - rollback!
- (p[MEMLAT+6]) cmp.ne p6, p0 = 8, pos0[1]
- (p6) br.cond.spnt .gotit
- (p[MEMLAT+6]) st8 [dest] = val[3], 8 // store val to dest
- (p[MEMLAT+3]) or val[0] = tmp1[3], tmp2[3] // val = tmp1 | tmp2
- br.ctop.sptk .l2
- br.cond.sptk .cpyfew
-+
- .src_aligned:
- cmp.ne p6, p0 = r0, r0 // clear p6
- mov ar.ec = MEMLAT + 2 + 1 ;; // set EC
- .l3:
--(p[0]) ld8 r[0] = [src], 8
-+(p[0]) ld8.s r[0] = [src], 8
- (p[MEMLAT]) xor tmp3[0] = r[MEMLAT], charx8
- (p[MEMLAT+1]) czx1.r pos0[0] = tmp3[1]
- (p[MEMLAT+2]) cmp.ne p7, p0 = 8, pos0[1]
-+(p[MEMLAT+2]) chk.s r[MEMLAT+2], .recovery2
- (p7) br.cond.spnt .gotit
-+.back2:
- (p[MEMLAT+2]) st8 [dest] = r[MEMLAT+2], 8
- br.ctop.dptk .l3
- .cpyfew:
-@@ -148,6 +156,7 @@
- .restore_and_exit:
- mov pr = saved_pr, -1 // restore the predicate registers
- mov ar.lc = saved_lc // restore the loop counter
-+ mov ar.ec = saved_ec ;; // restore the epilog counter
- br.ret.sptk.many b0
- .gotit:
- .pred.rel "mutex" p6, p7
-@@ -163,4 +172,33 @@
- mov pr = saved_pr, -1
- mov ar.lc = saved_lc
- br.ret.sptk.many b0
-+
-+.recovery1:
-+ adds src = -(MEMLAT + 6 + 1) * 8, asrc
-+ mov loopcnt = ar.lc
-+ mov tmp = ar.ec ;;
-+ sub sh1 = (MEMLAT + 6 + 1), tmp
-+ shr.u sh2 = sh2, 3
-+ ;;
-+ shl loopcnt = loopcnt, 3
-+ sub src = src, sh2
-+ shl sh1 = sh1, 3
-+ shl tmp = tmp, 3
-+ ;;
-+ add len = len, loopcnt
-+ add src = sh1, src ;;
-+ add len = tmp, len
-+.back1:
-+ br.cond.sptk .cpyfew
-+
-+.recovery2:
-+ add tmp = -(MEMLAT + 3) * 8, src
-+(p7) br.cond.spnt .gotit
-+ ;;
-+ ld8 r[MEMLAT+2] = [tmp] ;;
-+ xor pos0[1] = r[MEMLAT+2], charx8 ;;
-+ czx1.r pos0[1] = pos0[1] ;;
-+ cmp.ne p7, p6 = 8, pos0[1]
-+(p7) br.cond.spnt .gotit
-+ br.cond.sptk .back2
- END(memccpy)
---- glibc-2.3.2/sysdeps/ia64/memchr.S 2001-08-17 22:57:52.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/memchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard memchr() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -130,3 +130,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/ia64/memcpy.S 2002-10-11 03:36:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/memcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard memcpy() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop for Itanium <Dan.Pop@cern.ch>.
- Rewritten for McKinley by Sverre Jarp, HP Labs/CERN <Sverre.Jarp@cern.ch>
-
-@@ -409,6 +409,7 @@
- LOOP(48)
- LOOP(56)
- END(memcpy)
-+libc_hidden_builtin_def (memcpy)
-
- .rodata
- .align 8
---- glibc-2.3.2/sysdeps/ia64/memmove.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/memmove.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard memmove() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -239,3 +239,4 @@
- data8 .loop56 - .loop56
-
- END(memmove)
-+libc_hidden_builtin_def (memmove)
---- glibc-2.3.2/sysdeps/ia64/memset.S 2002-10-11 03:36:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard memset() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop for Itanium <Dan.Pop@cern.ch>.
- Rewritten for McKinley by Sverre Jarp, HP Labs/CERN <Sverre.Jarp@cern.ch>
-
-@@ -389,4 +389,4 @@
- br.ret.sptk.many rp
- ;; }
- END(memset)
--
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/ia64/strcat.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strcat.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* IA-64 assembly version of the standard strcat() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -60,3 +60,4 @@
- mov ar.pfs = save_pfs
- br.ret.sptk.many b0
- END(strcat)
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/ia64/strchr.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strchr() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -109,3 +109,4 @@
- END(strchr)
-
- weak_alias(strchr, index)
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/ia64/strcmp.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strcmp.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strcmp() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -51,3 +51,4 @@
- sub ret0 = val1, val2
- br.ret.sptk.many b0
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/ia64/strcpy.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strcpy() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -142,3 +142,4 @@
- ld8 r[MEMLAT] = [tmp]
- br.cond.sptk .back3
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/ia64/strlen.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strlen.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strlen() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -95,3 +95,4 @@
- ld8 val2 = [str], 8 // bomb out here
- br.cond.sptk .back
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/ia64/strncmp.S 2001-07-07 15:21:23.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ia64/strncmp.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strncmp() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -59,3 +59,4 @@
- .restore_and_exit:
- br.ret.sptk.many b0
- END(strncmp)
-+libc_hidden_builtin_def (strncmp)
---- glibc-2.3.2/sysdeps/ia64/strncpy.S 2002-12-07 04:01:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/ia64/strncpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Optimized version of the standard strncpy() function.
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Dan Pop <Dan.Pop@cern.ch>
- and Jakub Jelinek <jakub@redhat.com>.
-
-@@ -229,3 +229,4 @@
- (p5) mov r[MEMLAT - 1] = r0
- br.cond.sptk .back4
- END(strncpy)
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1994,1995,1996,1997,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
-@@ -45,7 +45,7 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 1
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-@@ -101,7 +101,8 @@
- }
- else
- /* Add the implicit leading one bit for a normalized number. */
-- res_ptr[N - 1] |= 1L << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
-+ res_ptr[N - 1] |= (mp_limb_t) 1 << (DBL_MANT_DIG - 1
-+ - ((N - 1) * BITS_PER_MP_LIMB));
-
- return N;
- }
---- glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,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
-@@ -34,10 +34,12 @@
- u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
- #if BITS_PER_MP_LIMB == 32
- u.ieee.mantissa1 = frac_ptr[0];
-- u.ieee.mantissa0 = frac_ptr[1] & ((1 << (DBL_MANT_DIG - 32)) - 1);
-+ u.ieee.mantissa0 = frac_ptr[1] & (((mp_limb_t) 1
-+ << (DBL_MANT_DIG - 32)) - 1);
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
-- u.ieee.mantissa0 = (frac_ptr[0] >> 32) & ((1 << (DBL_MANT_DIG - 32)) - 1);
-+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
-+ u.ieee.mantissa0 = (frac_ptr[0] >> 32) & (((mp_limb_t) 1
-+ << (DBL_MANT_DIG - 32)) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
---- glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1997,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
-@@ -33,7 +33,7 @@
- u.ieee.negative = sign;
- u.ieee.exponent = expt + IEEE754_FLOAT_BIAS;
- #if BITS_PER_MP_LIMB > FLT_MANT_DIG
-- u.ieee.mantissa = frac_ptr[0] & ((1 << FLT_MANT_DIG) - 1);
-+ u.ieee.mantissa = frac_ptr[0] & (((mp_limb_t) 1 << FLT_MANT_DIG) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
---- glibc-2.3.2/sysdeps/ieee754/flt-32/s_scalbnf.c 1999-07-13 23:43:53.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/flt-32/s_scalbnf.c 2003-09-19 22:37:07.000000000 -0400
-@@ -49,13 +49,13 @@
- if (k==0xff) return x+x; /* NaN or Inf */
- k = k+n;
- if (n> 50000 || k > 0xfe)
-- return huge*copysignf(huge,x); /* overflow */
-+ return huge*__copysignf(huge,x); /* overflow */
- if (n< -50000)
-- return tiny*copysignf(tiny,x); /*underflow*/
-+ return tiny*__copysignf(tiny,x); /*underflow*/
- if (k > 0) /* normal result */
- {SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;}
- if (k <= -25)
-- return tiny*copysignf(tiny,x); /*underflow*/
-+ return tiny*__copysignf(tiny,x); /*underflow*/
- k += 25; /* subnormal result */
- SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23));
- return x*twom25;
---- glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c 2002-07-10 23:09:36.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -49,8 +50,8 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
-- res_ptr[1] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
-+ res_ptr[1] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 2
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-@@ -133,7 +134,8 @@
- }
- else
- /* Add the implicit leading one bit for a normalized number. */
-- res_ptr[N - 1] |= 1L << (LDBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
-+ res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
-+ - ((N - 1) * BITS_PER_MP_LIMB));
-
- return N;
- }
---- glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -37,12 +38,14 @@
- u.ieee.mantissa3 = frac_ptr[0];
- u.ieee.mantissa2 = frac_ptr[1];
- u.ieee.mantissa1 = frac_ptr[2];
-- u.ieee.mantissa0 = frac_ptr[3] & ((1 << (LDBL_MANT_DIG - 96)) - 1);
-+ u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
-+ << (LDBL_MANT_DIG - 96)) - 1);
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa3 = frac_ptr[0] & ((1L << 32) - 1);
-+ u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
- u.ieee.mantissa2 = frac_ptr[0] >> 32;
-- u.ieee.mantissa1 = frac_ptr[1] & ((1L << 32) - 1);
-- u.ieee.mantissa0 = (frac_ptr[1] >> 32) & ((1 << (LDBL_MANT_DIG - 96)) - 1);
-+ u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
-+ u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
-+ << (LDBL_MANT_DIG - 96)) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
---- glibc-2.3.2/sysdeps/ieee754/ldbl-96/e_gammal_r.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/e_gammal_r.c 2003-04-12 11:39:45.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Implementation of gamma function according to ISO C.
-- Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -45,8 +45,11 @@
- return x - x;
- }
- if ((es & 0x7fff) == 0x7fff && ((hx & 0x7fffffff) | lx) != 0)
-- /* NaN, return it. */
-- return x;
-+ {
-+ /* NaN, return it. */
-+ *signgamp = 0;
-+ return x;
-+ }
- if ((es & 0x8000) != 0 && x < 0xffffffff && __rintl (x) == x)
- {
- /* Return value for integer x < 0 is NaN with invalid exception. */
---- glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,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
-@@ -47,7 +47,7 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 1
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
---- glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c 2003-03-15 15:02:16.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,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
-@@ -37,7 +37,7 @@
- u.ieee.mantissa1 = frac_ptr[0];
- u.ieee.mantissa0 = frac_ptr[1];
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
-+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
- u.ieee.mantissa0 = frac_ptr[0] >> 32;
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
---- glibc-2.3.2/sysdeps/m68k/Makefile 2003-02-05 18:26:43.000000000 -0500
-+++ glibc-2.3.2/sysdeps/m68k/Makefile 2003-08-21 08:37:09.000000000 -0400
-@@ -26,7 +26,6 @@
- asm-CPPFLAGS += $(m68k-syntax-flag)
-
- pic-ccflag = -fpic
--CFLAGS-.oS += -fPIC
-
- # Make sure setjmp.c is compiled with a frame pointer
- CFLAGS-setjmp.c := -fno-omit-frame-pointer
---- glibc-2.3.2/sysdeps/m68k/dl-machine.h 2003-01-26 16:07:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/m68k/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation inline functions. m68k version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -158,7 +158,7 @@
- | Save the user entry point address in %a4.\n\
- move.l %d0, %a4\n\
- | Remember the highest stack address.\n\
-- lea __libc_stack_end(%pc), %a0\n\
-+ move.l __libc_stack_end@GOTPC(%pc), %a0\n\
- move.l %sp, (%a0)\n\
- | See if we were run as a command with the executable file\n\
- | name as an extra leading argument.\n\
-@@ -229,8 +229,9 @@
- static inline void __attribute__ ((always_inline))
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- if (__builtin_expect (r_type == R_68K_RELATIVE, 0))
-@@ -260,8 +261,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- case R_68K_GLOB_DAT:
- case R_68K_JMP_SLOT:
-@@ -298,8 +299,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/m68k/fpu/bits/mathinline.h 2002-09-23 20:00:25.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/fpu/bits/mathinline.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Definitions of inline math functions implemented by the m68881/2.
-- Copyright (C) 1991,92,93,94,96,97,98,99,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,92,93,94,96,97,98,99,2000,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
-@@ -176,28 +177,6 @@
- for the function names. */
-
- #define __inline_functions(float_type, s) \
--__m81_inline float_type \
--__m81_u(__CONCAT(__frexp,s))(float_type __value, int *__expptr) __THROW \
--{ \
-- float_type __mantissa, __exponent; \
-- int __iexponent; \
-- unsigned long __fpsr; \
-- __asm("ftst%.x %1\n" \
-- "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \
-- if (__fpsr & (7 << 24)) \
-- { \
-- /* Not finite or zero. */ \
-- *__expptr = 0; \
-- return __value; \
-- } \
-- __asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value)); \
-- __iexponent = (int) __exponent + 1; \
-- *__expptr = __iexponent; \
-- __asm("fscale%.l %2, %0" : "=f" (__mantissa) \
-- : "0" (__value), "dmi" (-__iexponent)); \
-- return __mantissa; \
--} \
-- \
- __m81_defun (float_type, __CONCAT(__floor,s), (float_type __x)) __THROW \
- { \
- float_type __result; \
-@@ -386,8 +365,6 @@
- return __CONCAT(__,name) args2; \
- }
-
--__inline_forward(double,frexp, (double __value, int *__expptr),
-- (__value, __expptr))
- __inline_forward_c(double,floor, (double __x), (__x))
- __inline_forward_c(double,ceil, (double __x), (__x))
- # ifdef __USE_MISC
-@@ -416,8 +393,6 @@
-
- # if defined __USE_MISC || defined __USE_ISOC99
-
--__inline_forward(float,frexpf, (float __value, int *__expptr),
-- (__value, __expptr))
- __inline_forward_c(float,floorf, (float __x), (__x))
- __inline_forward_c(float,ceilf, (float __x), (__x))
- # ifdef __USE_MISC
-@@ -438,8 +413,6 @@
- (__x, __sinx, __cosx))
- # endif
-
--__inline_forward(long double,frexpl, (long double __value, int *__expptr),
-- (__value, __expptr))
- __inline_forward_c(long double,floorl, (long double __x), (__x))
- __inline_forward_c(long double,ceill, (long double __x), (__x))
- # ifdef __USE_MISC
---- glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps 2003-01-12 02:54:07.000000000 -0500
-+++ glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps 2003-08-21 08:37:09.000000000 -0400
-@@ -119,14 +119,12 @@
- ldouble: 1
-
- # ccos
--Test "Real part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
- float: 1
- ifloat: 1
-@@ -139,10 +137,10 @@
- ldouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -189,10 +187,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Real part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
--ildouble: 1
--ldouble: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- ildouble: 1
- ldouble: 1
- Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-@@ -336,10 +331,10 @@
- ldouble: 1
-
- # csin
--Test "Real part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
-+Test "Real part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
-+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
- float: 1
- ifloat: 1
- Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-@@ -352,14 +347,12 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- float: 1
- ifloat: 1
--ildouble: 2
--ldouble: 2
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
- float: 1
- ifloat: 1
-@@ -370,10 +363,9 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
--ildouble: 439
--ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-+double: 1
-+idouble: 1
- ildouble: 1
- ldouble: 1
- Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -384,12 +376,9 @@
- ldouble: 2
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
--ildouble: 2
--ldouble: 2
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
--ildouble: 25
--ldouble: 25
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
-+ildouble: 1
-+ldouble: 1
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
- double: 1
- idouble: 1
-@@ -599,12 +588,12 @@
- Test "lgamma (0.5) == log(sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- float: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -698,7 +687,7 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-@@ -1032,28 +1021,24 @@
- Function: Imaginary part of "csinh":
- float: 1
- ifloat: 1
--ildouble: 2
--ldouble: 2
-
- Function: Real part of "ctan":
--ildouble: 439
--ldouble: 439
-+double: 1
-+idouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Imaginary part of "ctan":
- ildouble: 2
- ldouble: 2
-
--Function: Real part of "ctanh":
--ildouble: 2
--ldouble: 2
--
- Function: Imaginary part of "ctanh":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--ildouble: 25
--ldouble: 25
-+ildouble: 1
-+ldouble: 1
-
- Function: "erfc":
- float: 1
---- glibc-2.3.2/sysdeps/m68k/fpu/s_frexp.c 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/fpu/s_frexp.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 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
-@@ -28,11 +28,28 @@
- #define __CONCATX(a,b) __CONCAT(a,b)
-
- float_type
--__CONCATX(__,FUNC) (value, expptr)
-- float_type value;
-- int *expptr;
-+__CONCATX(__,FUNC) (float_type value, int *expptr)
- {
-- return __m81_u(__CONCATX(__,FUNC))(value, expptr);
-+ float_type mantissa, exponent;
-+ int iexponent;
-+ unsigned long fpsr;
-+
-+ __asm ("ftst%.x %1\n"
-+ "fmove%.l %/fpsr, %0"
-+ : "=dm" (fpsr) : "f" (value));
-+ if (fpsr & (7 << 24))
-+ {
-+ /* Not finite or zero. */
-+ *expptr = 0;
-+ return value;
-+ }
-+ __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value));
-+ iexponent = (int) exponent + 1;
-+ *expptr = iexponent;
-+ __asm ("fscale%.l %2, %0"
-+ : "=f" (mantissa)
-+ : "0" (value), "dmi" (-iexponent));
-+ return mantissa;
- }
-
- #define weak_aliasx(a,b) weak_alias(a,b)
---- glibc-2.3.2/sysdeps/m68k/fpu/s_frexpl.c 1996-06-06 01:22:18.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/fpu/s_frexpl.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,3 +1,59 @@
--#define FUNC frexpl
--#define float_type long double
--#include <s_frexp.c>
-+/* Copyright (C) 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 <math.h>
-+
-+long double
-+__frexpl (long double value, int *expptr)
-+{
-+ long double mantissa, exponent;
-+ int iexponent;
-+ unsigned long fpsr;
-+
-+ __asm ("ftst%.x %1\n"
-+ "fmove%.l %/fpsr, %0"
-+ : "=dm" (fpsr) : "f" (value));
-+ if (fpsr & (7 << 24))
-+ {
-+ /* Not finite or zero. */
-+ *expptr = 0;
-+ return value;
-+ }
-+ __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value));
-+ iexponent = (int) exponent + 1;
-+ *expptr = iexponent;
-+ /* Unnormalized numbers must be handled specially, otherwise fscale
-+ results in overflow. */
-+ if (iexponent <= -16384)
-+ {
-+ value *= 0x1p16383L;
-+ iexponent += 16383;
-+ }
-+ else if (iexponent >= 16384)
-+ {
-+ value *= 0x1p-16383L;
-+ iexponent -= 16383;
-+ }
-+
-+ __asm ("fscale%.l %2, %0"
-+ : "=f" (mantissa)
-+ : "0" (value), "dmi" (-iexponent));
-+ return mantissa;
-+}
-+
-+weak_alias (__frexpl, frexpl)
---- glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h 2001-08-15 12:14:06.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,64 +0,0 @@
--/* Low-level functions for atomic operations. m680x0 version, x >= 2.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-- Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- register int result = *mem;
-- register int temp;
-- __asm__ __volatile__ ("1: move%.l %0,%1;"
-- " add%.l %2,%1;"
-- " cas%.l %0,%1,%3;"
-- " jbne 1b"
-- : "=d" (result), "=&d" (temp)
-- : "d" (val), "m" (*mem), "0" (result) : "memory");
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- /* XXX Use cas here as well? */
-- __asm__ __volatile__ ("add%.l %0,%1"
-- : : "id" (val), "m" (*mem) : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("cas%.l %2,%3,%1; seq %0"
-- : "=dm" (ret), "=m" (*p), "=d" (readval)
-- : "d" (newval), "m" (*p), "2" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h 2003-05-12 12:13:07.000000000 -0400
-@@ -0,0 +1,261 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Schwab <schwab@suse.de>, 2003.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.b %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.w %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.l %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("cas2%.l %0:%R0,%1:%R1,(%2):(%3)" \
-+ : "=d" (__ret) \
-+ : "d" (newval), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (oldval) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*(mem)) __result = *(mem); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("1: cas%.b %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("1: cas%.w %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("1: cas%.l %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("1: cas2%.l %0:%R0,%1:%R1,(%2):(%3);" \
-+ " jbne 1b" \
-+ : "=d" (__result) \
-+ : "d" (newvalue), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__result) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*(mem)) __result = *(mem); \
-+ __typeof (*(mem)) __temp; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("1: move%.b %0,%2;" \
-+ " add%.b %3,%2;" \
-+ " cas%.b %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("1: move%.w %0,%2;" \
-+ " add%.w %3,%2;" \
-+ " cas%.w %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("1: move%.l %0,%2;" \
-+ " add%.l %3,%2;" \
-+ " cas%.l %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("1: move%.l %0,%1;" \
-+ " move%.l %R0,%R1;" \
-+ " add%.l %2,%1;" \
-+ " addx%.l %R2,%R1;" \
-+ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=&d" (__temp) \
-+ : "d" (value), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__result) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("add%.b %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("add%.w %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("add%.l %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %0,%1;" \
-+ " move%.l %R0,%R1;" \
-+ " add%.l %2,%1;" \
-+ " addx%.l %R2,%R1;" \
-+ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=d" (__oldval), "=&d" (__temp) \
-+ : "d" (value), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__oldval) \
-+ : "memory"); \
-+ } \
-+ })
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ char __result; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("addq%.b %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("addq%.w %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("addq%.l %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %1,%2;" \
-+ " move%.l %R1,%R2;" \
-+ " addq%.l %#1,%2;" \
-+ " addx%.l %5,%R2;" \
-+ " seq %0;" \
-+ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=&dm" (__result), "=d" (__oldval), \
-+ "=&d" (__temp) \
-+ : "r" (__memp), "r" ((char *) __memp + 4), \
-+ "d" (0), "1" (__oldval) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ char __result; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("subq%.b %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("subq%.w %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("subq%.l %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %1,%2;" \
-+ " move%.l %R1,%R2;" \
-+ " subq%.l %#1,%2;" \
-+ " subx%.l %5,%R2;" \
-+ " seq %0;" \
-+ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=&dm" (__result), "=d" (__oldval), \
-+ "=&d" (__temp) \
-+ : "r" (__memp), "r" ((char *) __memp + 4), \
-+ "d" (0), "1" (__oldval) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_bit_set(mem, bit) \
-+ __asm __volatile ("bfset %0{%1,#1}" \
-+ : "=m" (*(mem)) \
-+ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), "m" (*(mem)))
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ char __result; \
-+ __asm __volatile ("bfset %1{%2,#1}; sne %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), \
-+ "m" (*(mem))); \
-+ __result; })
---- glibc-2.3.2/sysdeps/m68k/memchr.S 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/memchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,7 +1,7 @@
- /* memchr (str, ch, n) -- Return pointer to first occurrence of CH in the
- first N bytes of STR.
- For Motorola 68000.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Schwab <schwab@gnu.org>.
-
-@@ -229,3 +229,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/m68k/setjmp.c 2001-10-31 12:35:22.000000000 -0500
-+++ glibc-2.3.2/sysdeps/m68k/setjmp.c 2003-09-19 22:37:07.000000000 -0400
-@@ -58,3 +58,6 @@
- /* Save the signal mask if requested. */
- return __sigjmp_save (env, savemask);
- }
-+#if !defined BSD_SETJMP && !defined BSD__SETJMP
-+hidden_def (__sigsetjmp)
-+#endif
---- glibc-2.3.2/sysdeps/m68k/strchr.S 2001-07-07 15:21:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/m68k/strchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
- For Motorola 68000.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Schwab <schwab@gnu.org>.
-
-@@ -255,3 +255,4 @@
- END(strchr)
-
- weak_alias (strchr, index)
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/mach/configure 2003-02-25 19:46:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/configure 2003-08-21 08:37:09.000000000 -0400
-@@ -96,7 +96,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/mach_types.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -119,7 +123,8 @@
- ac_cv_header_mach_mach_types_h=yes
- else
- echo "$as_me: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- ac_cv_header_mach_mach_types_h=no
- fi
- rm -f conftest.err conftest.$ac_ext
-@@ -142,7 +147,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/mach_types.defs>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -165,7 +174,8 @@
- ac_cv_header_mach_mach_types_defs=yes
- else
- echo "$as_me: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- ac_cv_header_mach_mach_types_defs=no
- fi
- rm -f conftest.err conftest.$ac_ext
-@@ -191,7 +201,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/mach_types.h>
- int
- main ()
-@@ -216,7 +230,8 @@
- libc_cv_mach_task_t=task_t
- else
- echo "$as_me: failed program was:" >&5
--cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- libc_cv_mach_task_t=task_port_t
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -233,7 +248,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/mach_types.h>
- int
- main ()
-@@ -258,7 +277,8 @@
- libc_cv_mach_thread_t=thread_t
- else
- echo "$as_me: failed program was:" >&5
--cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- libc_cv_mach_thread_t=thread_port_t
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -276,7 +296,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/task_info.h>
- int
- main ()
-@@ -304,7 +328,8 @@
- libc_cv_mach_task_creation_time=yes
- else
- echo "$as_me: failed program was:" >&5
--cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- libc_cv_mach_task_creation_time=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
-@@ -312,7 +337,9 @@
- echo "$as_me:$LINENO: result: $libc_cv_mach_task_creation_time" >&5
- echo "${ECHO_T}$libc_cv_mach_task_creation_time" >&6
- if test $libc_cv_mach_task_creation_time = no; then
-- DEFINES="$DEFINES -DNO_CREATION_TIME=1"
-+ { { echo "$as_me:$LINENO: error: you need Mach headers supporting task_info.creation_time" >&5
-+echo "$as_me: error: you need Mach headers supporting task_info.creation_time" >&2;}
-+ { (exit 1); exit 1; }; }
- fi
-
- mach_interface_list=
-@@ -330,7 +357,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/${ifc}.defs>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -353,7 +384,8 @@
- eval "$as_ac_Header=yes"
- else
- echo "$as_me: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- eval "$as_ac_Header=no"
- fi
- rm -f conftest.err conftest.$ac_ext
-@@ -394,7 +426,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/mach_host.defs>
-
- _ACEOF
-@@ -423,7 +459,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/machine/ndr_def.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -446,7 +486,8 @@
- ac_cv_header_mach_machine_ndr_def_h=yes
- else
- echo "$as_me: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- ac_cv_header_mach_machine_ndr_def_h=no
- fi
- rm -f conftest.err conftest.$ac_ext
-@@ -463,7 +504,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <machine/ndr_def.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-@@ -486,7 +531,8 @@
- ac_cv_header_machine_ndr_def_h=yes
- else
- echo "$as_me: failed program was:" >&5
-- cat conftest.$ac_ext >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
- ac_cv_header_machine_ndr_def_h=no
- fi
- rm -f conftest.err conftest.$ac_ext
-@@ -509,7 +555,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/i386/mach_i386.defs>
-
- _ACEOF
-@@ -538,7 +588,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <mach/i386/mach_i386.defs>
-
- _ACEOF
---- glibc-2.3.2/sysdeps/mach/configure.in 2002-10-23 02:21:18.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/configure.in 2003-08-21 08:37:09.000000000 -0400
-@@ -41,7 +41,7 @@
- long s = i->creation_time.seconds;
- ], libc_cv_mach_task_creation_time=yes, libc_cv_mach_task_creation_time=no)])
- if test $libc_cv_mach_task_creation_time = no; then
-- DEFINES="$DEFINES -DNO_CREATION_TIME=1"
-+ AC_MSG_ERROR([you need Mach headers supporting task_info.creation_time])
- fi
-
- dnl
---- glibc-2.3.2/sysdeps/mach/hurd/Makefile 2003-02-17 13:58:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/Makefile 2003-08-21 08:37:09.000000000 -0400
-@@ -190,7 +190,6 @@
-
- ifeq ($(subdir),csu)
-
--sysdep_routines += set-init
- extra-objs += static-start.o
-
- # We need special startup code for statically linked binaries.
---- glibc-2.3.2/sysdeps/mach/hurd/alpha/init-first.c 2002-06-18 17:14:08.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/alpha/init-first.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Initialization code run first thing by the ELF startup code. Alpha/Hurd.
-- Copyright (C) 1995,96,97,98,99,2000,2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 1995,96,97,98,99,2000,01,02,03 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,6 @@
- #include "hurdmalloc.h" /* XXX */
-
- extern void __mach_init (void);
--extern void __libc_init (int, char **, char **);
- extern void __init_misc (int, char **, char **);
- #ifdef USE_NONOPTION_FLAGS
- extern void __getopt_clean_environment (char **);
-@@ -72,7 +71,6 @@
- _dl_non_dynamic_init ();
- #endif
- __init_misc (argc, argv, envp);
-- __libc_init (argc, argv, envp);
-
- #ifdef USE_NONOPTION_FLAGS
- /* This is a hack to make the special getopt in GNU libc working. */
---- glibc-2.3.2/sysdeps/mach/hurd/bits/typesizes.h 2003-02-21 20:01:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/bits/typesizes.h 2003-08-21 08:37:09.000000000 -0400
-@@ -57,6 +57,7 @@
- #define __TIMER_T_TYPE __S32_TYPE
- #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
- #define __FSID_T_TYPE __UQUAD_TYPE
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-
- /* Number of descriptors that can fit in an `fd_set'. */
- #define __FD_SETSIZE 256
---- glibc-2.3.2/sysdeps/mach/hurd/getdents.c 2001-07-07 15:21:25.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/getdents.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,41 +1 @@
--/* Copyright (C) 1992,93,94,95,97,98,99 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 <stddef.h>
--#include <errno.h>
--#include <sys/types.h>
--#include <hurd.h>
--#include <hurd/fd.h>
--#include <string.h>
--#include <unistd.h>
--
--ssize_t
--__getdirentries (int fd,
-- char *buf,
-- size_t nbytes,
-- off_t *basep)
--{
-- /* Nothing should use this function. Use readdir instead. */
-- errno = ENOSYS;
-- return -1;
--}
--
--weak_alias (__getdirentries, getdirentries)
--
--link_warning(getdirentries, "\
--warning: getdirentries is obsolete and will always fail; use readdir instead")
-+#include <sysdeps/generic/getdents.c>
---- glibc-2.3.2/sysdeps/mach/hurd/i386/init-first.c 2002-12-02 17:36:40.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/i386/init-first.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Initialization code run first thing by the ELF startup code. For i386/Hurd.
-- Copyright (C) 1995,96,97,98,99,2000,2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 1995,96,97,98,99,2000,01,02,03 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,7 +32,6 @@
- #include <fpu_control.h>
-
- extern void __mach_init (void);
--extern void __libc_init (int, char **, char **);
- extern void __init_misc (int, char **, char **);
- #ifdef USE_NONOPTION_FLAGS
- extern void __getopt_clean_environment (char **);
-@@ -86,7 +85,6 @@
- _dl_non_dynamic_init ();
- #endif
- __init_misc (argc, argv, envp);
-- __libc_init (argc, argv, envp);
-
- #ifdef USE_NONOPTION_FLAGS
- /* This is a hack to make the special getopt in GNU libc working. */
---- glibc-2.3.2/sysdeps/mach/hurd/mips/init-first.c 2002-10-02 20:17:51.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/mips/init-first.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Initialization code run first thing by the ELF startup code. For Mips/Hurd.
-- Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1998,2000,01,02,03 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,6 @@
- #include "hurdmalloc.h" /* XXX */
-
- extern void __mach_init (void);
--extern void __libc_init (int, char **, char **);
- extern void __init_misc (int, char **, char **);
- #ifdef USE_NONOPTION_FLAGS
- extern void __getopt_clean_environment (char **);
-@@ -114,7 +113,6 @@
- _dl_non_dynamic_init ();
- #endif
- __init_misc (argc, argv, __environ);
-- __libc_init (argc, argv, __environ);
-
- #ifdef USE_NONOPTION_FLAGS
- /* This is a hack to make the special getopt in GNU libc working. */
---- glibc-2.3.2/sysdeps/mach/hurd/mmap.c 2002-06-18 17:14:07.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/mmap.c 2003-09-19 22:37:07.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1994,95,96,97,99,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1994,1995,1996,1997,1999,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
-@@ -97,7 +98,11 @@
- {
- mach_port_t robj, wobj;
- if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))
-- return (__ptr_t) (long int) __hurd_dfail (fd, err);
-+ {
-+ if (err == MIG_BAD_ID || err == EOPNOTSUPP || err == ENOSYS)
-+ err = ENODEV; /* File descriptor doesn't support mmap. */
-+ return (__ptr_t) (long int) __hurd_dfail (fd, err);
-+ }
- switch (prot & (PROT_READ|PROT_WRITE))
- {
- case PROT_READ:
---- glibc-2.3.2/sysdeps/mach/hurd/powerpc/init-first.c 2002-03-12 22:39:01.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/powerpc/init-first.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Initialization code run first thing by the ELF startup code. PowerPC/Hurd.
-- Copyright (C) 1995-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -28,7 +28,6 @@
- #include "hurdmalloc.h" /* XXX */
-
- extern void __mach_init (void);
--extern void __libc_init (int, char **, char **);
- extern void __init_misc (int, char **, char **);
- #ifdef USE_NONOPTION_FLAGS
- extern void __getopt_clean_environment (char **);
-@@ -77,7 +76,6 @@
- _dl_non_dynamic_init ();
- #endif
- __init_misc (argc, argv, envp);
-- __libc_init (argc, argv, envp);
-
- #ifdef USE_NONOPTION_FLAGS
- /* This is a hack to make the special getopt in GNU libc working. */
---- glibc-2.3.2/sysdeps/mach/hurd/set-init.c 2001-07-07 15:20:52.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/set-init.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,23 +0,0 @@
--/* Copyright (C) 1991, 1992, 1994, 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. */
--
--#include <stdlib.h>
--#include <set-hooks.h>
--
--DEFINE_HOOK_RUNNER (__libc_subinit, __libc_init,
-- (int argc, char **argv, char **envp), (argc, argv, envp))
---- glibc-2.3.2/sysdeps/mach/hurd/times.c 2002-02-19 02:34:49.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/times.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Return CPU and real time used by process and its children. Hurd version.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -33,17 +33,6 @@
- return t->seconds * 1000000 + t->microseconds;
- }
-
--#if NO_CREATION_TIME
--static time_value_t startup_time;
--static void times_init (void) __attribute__ ((unused));
--static void
--times_init (void)
--{
-- __gettimeofday ((struct timeval *) &startup_time, NULL);
--}
--text_set_element (__libc_subinit, times_init);
--#endif
--
- /* Store the CPU time used by this process and all its
- dead children (and their dead children) in BUFFER.
- Return the elapsed real time, or (clock_t) -1 for errors.
-@@ -80,12 +69,7 @@
- if (__gettimeofday ((struct timeval *) &now, NULL) < 0)
- return -1;
-
--#if NO_CREATION_TIME
--# define our_creation_time startup_time
--#else
--# define our_creation_time bi.creation_time
--#endif
- return (clock_from_time_value (&now)
-- - clock_from_time_value (&our_creation_time));
-+ - clock_from_time_value (&bi.creation_time));
- }
- weak_alias (__times, times)
---- glibc-2.3.2/sysdeps/mach/hurd/tmpfile.c 2002-06-12 16:57:55.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/tmpfile.c 2003-04-26 18:51:22.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Open a stdio stream on an anonymous temporary file. Hurd version.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -23,19 +23,14 @@
- #include <hurd/fd.h>
- #include <fcntl.h>
- #include <unistd.h>
--
--#ifdef USE_IN_LIBIO
--# include <iolibio.h>
--# define __fdopen INTUSE(_IO_fdopen)
--# define tmpfile __new_tmpfile
--#endif
-+#include <iolibio.h>
-
- /* This returns a new stream opened on a temporary file (generated
- by tmpnam). The file is opened with mode "w+b" (binary read/write).
- If we couldn't generate a unique filename or the file couldn't
- be opened, NULL is returned. */
- FILE *
--tmpfile (void)
-+__tmpfile (void)
- {
- error_t err;
- file_t file;
-@@ -62,16 +57,13 @@
-
- /* Open a stream on the unnamed file.
- It will cease to exist when this stream is closed. */
-- if ((f = __fdopen (fd, "w+b")) == NULL)
-+ if ((f = INTUSE(_IO_fdopen) (fd, "w+b")) == NULL)
- __close (fd);
-
- return f;
- }
-
--#ifdef USE_IN_LIBIO
--# undef tmpfile
--# include <shlib-compat.h>
--versioned_symbol (libc, __new_tmpfile, tmpfile, GLIBC_2_1);
--#endif
-+#include <shlib-compat.h>
-+versioned_symbol (libc, __tmpfile, tmpfile, GLIBC_2_1);
-
--weak_alias (tmpfile, tmpfile64)
-+weak_alias (__tmpfile, tmpfile64)
---- glibc-2.3.2/sysdeps/mach/sys/reboot.h 2002-07-10 03:24:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/sys/reboot.h 2002-11-16 08:56:53.000000000 -0500
-@@ -26,124 +26,6 @@
- /*
- * HISTORY
- * $Log: reboot.h,v $
-- * 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>
- *
---- glibc-2.3.2/sysdeps/mips/Implies 2000-01-29 02:28:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/Implies 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,3 @@
--wordsize-32
- # MIPS uses IEEE 754 floating point.
- ieee754/flt-32
- ieee754/dbl-64
---- glibc-2.3.2/sysdeps/mips/add_n.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/add_n.S 2003-03-15 15:02:16.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS2 __mpn_add_n -- Add two limb vectors of the same length > 0 and
- store sum in a third limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -43,12 +43,12 @@
-
- addiu $7,$7,-1
- and $9,$7,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
- move $2,$0
-
- subu $7,$7,$9
-
--.Loop0: addiu $9,$9,-1
-+L(Loop0): addiu $9,$9,-1
- lw $12,4($5)
- addu $11,$11,$2
- lw $13,4($6)
-@@ -62,13 +62,13 @@
- addiu $6,$6,4
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-- addiu $4,$4,4
-+ bne $9,$0,L(Loop0)
-+ addiu $4,$4,4
-
--.L0: beq $7,$0,.Lend
-- nop
-+L(L0): beq $7,$0,L(end)
-+ nop
-
--.Loop: addiu $7,$7,-4
-+L(Loop): addiu $7,$7,-4
-
- lw $12,4($5)
- addu $11,$11,$2
-@@ -109,10 +109,10 @@
- addiu $5,$5,16
- addiu $6,$6,16
-
-- bne $7,$0,.Loop
-- addiu $4,$4,16
-+ bne $7,$0,L(Loop)
-+ addiu $4,$4,16
-
--.Lend: addu $11,$11,$2
-+L(end): addu $11,$11,$2
- sltu $8,$11,$2
- addu $11,$10,$11
- sltu $2,$11,$10
---- glibc-2.3.2/sysdeps/mips/addmul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/addmul_1.S 2003-03-15 15:02:16.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_addmul_1 -- Multiply a limb vector with a single limb and
- add the product to a second limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: lw $10,0($4)
-+L(Loop): lw $10,0($4)
- mflo $3
- mfhi $9
- addiu $5,$5,4
-@@ -67,11 +67,11 @@
- addu $2,$2,$10
- sw $3,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: lw $10,0($4)
-+L(LC1): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-@@ -85,7 +85,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: lw $10,0($4)
-+L(LC0): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
---- glibc-2.3.2/sysdeps/mips/atomicity.h 2002-07-15 20:52:17.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/atomicity.h 2003-03-15 15:02:16.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Low-level functions for atomic operations. Mips version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -32,7 +32,9 @@
- ("/* Inline exchange & add */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%3\n\t"
- "addu %1,%4,%0\n\t"
- "sc %1,%2\n\t"
-@@ -56,7 +58,9 @@
- ("/* Inline atomic add */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%2\n\t"
- "addu %0,%3,%0\n\t"
- "sc %0,%1\n\t"
-@@ -78,12 +82,22 @@
- ("/* Inline compare & swap */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "lld %1,%5\n\t"
-+#else
- "ll %1,%5\n\t"
-+#endif
- "move %0,$0\n\t"
- "bne %1,%3,2f\n\t"
- "move %0,%4\n\t"
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "scd %0,%2\n\t"
-+#else
- "sc %0,%2\n\t"
-+#endif
- ".set pop\n\t"
- "beqz %0,1b\n"
- "2:\n\t"
---- glibc-2.3.2/sysdeps/mips/bits/endian.h 1997-11-25 22:52:55.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/bits/endian.h 2003-04-12 11:39:45.000000000 -0400
-@@ -5,4 +5,9 @@
- # error "Never use <bits/endian.h> directly; include <endian.h> instead."
- #endif
-
--#define __BYTE_ORDER __BIG_ENDIAN
-+#if __MIPSEB
-+# define __BYTE_ORDER __BIG_ENDIAN
-+#endif
-+#if __MIPSEL
-+# define __BYTE_ORDER __LITTLE_ENDIAN
-+#endif
---- glibc-2.3.2/sysdeps/mips/bits/setjmp.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/bits/setjmp.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Define the machine-dependent type `jmp_buf'. MIPS version.
-- Copyright (C) 1992,93,95,97,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1992, 1993, 1995, 1997, 2000, 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
-@@ -23,26 +24,47 @@
-
- typedef struct
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- /* Program counter. */
-- void * __pc;
-+ __ptr_t __pc;
-
- /* Stack pointer. */
-- void * __sp;
-+ __ptr_t __sp;
-
- /* Callee-saved registers s0 through s7. */
- int __regs[8];
-
- /* The frame pointer. */
-- void * __fp;
-+ __ptr_t __fp;
-
- /* The global pointer. */
-- void * __gp;
-+ __ptr_t __gp;
-+#else
-+ /* Program counter. */
-+ __extension__ long long __pc;
-+
-+ /* Stack pointer. */
-+ __extension__ long long __sp;
-+
-+ /* Callee-saved registers s0 through s7. */
-+ __extension__ long long __regs[8];
-+
-+ /* The frame pointer. */
-+ __extension__ long long __fp;
-+
-+ /* The global pointer. */
-+ __extension__ long long __gp;
-+#endif
-
- /* Floating point status register. */
- int __fpc_csr;
-
- /* Callee-saved floating point registers. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ double __fpregs[8];
-+#else
- double __fpregs[6];
-+#endif
- } __jmp_buf[1];
-
- #ifdef __USE_MISC
---- glibc-2.3.2/sysdeps/mips/bits/wordsize.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/bits/wordsize.h 2003-03-17 10:47:12.000000000 -0500
-@@ -0,0 +1,19 @@
-+/* Copyright (C) 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. */
-+
-+#define __WORDSIZE _MIPS_SZPTR
---- glibc-2.3.2/sysdeps/mips/dl-machine.h 2003-02-12 04:42:22.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -32,6 +32,8 @@
- #error ENTRY_POINT needs to be defined for MIPS.
- #endif
-
-+#include <sys/asm.h>
-+
- /* The offset of gp from GOT might be system-dependent. It's set by
- ld. The same value is also */
- #define OFFSET_GP_GOT 0x7ff0
-@@ -72,6 +74,13 @@
- static inline int __attribute_used__
- elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
-+ /* Don't link o32 and n32 together. */
-+ if (((ehdr->e_flags & EF_MIPS_ABI2) != 0)
-+ != (_MIPS_SIM != _MIPS_SIM_ABI32))
-+ return 0;
-+#endif
-+
- switch (ehdr->e_machine)
- {
- case EM_MIPS:
-@@ -91,7 +100,7 @@
-
- /* Return the link-time address of _DYNAMIC. Conveniently, this is the
- first element of the GOT. This must be inlined in a function which
-- uses global data. */
-+ uses global data. We assume its $gp points to the primary GOT. */
- static inline ElfW(Addr)
- elf_machine_dynamic (void)
- {
-@@ -99,6 +108,9 @@
- return *elf_mips_got_from_gpreg (gp);
- }
-
-+#define STRINGXP(X) __STRING(X)
-+#define STRINGXV(X) STRINGV_(X)
-+#define STRINGV_(...) # __VA_ARGS__
-
- /* Return the run-time load address of the shared object. */
- static inline ElfW(Addr)
-@@ -106,10 +118,10 @@
- {
- ElfW(Addr) addr;
- asm (" .set noreorder\n"
-- " la %0, here\n"
-- " bltzal $0, here\n"
-+ " " STRINGXP (PTR_LA) " %0, 0f\n"
-+ " bltzal $0, 0f\n"
- " nop\n"
-- "here: subu %0, $31, %0\n"
-+ "0: " STRINGXP (PTR_SUBU) " %0, $31, %0\n"
- " .set reorder\n"
- : "=r" (addr)
- : /* No inputs */
-@@ -118,7 +130,11 @@
- }
-
- /* The MSB of got[1] of a gnu object is set to identify gnu objects. */
--#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+# define ELF_MIPS_GNU_GOT1_MASK 0x8000000000000000L
-+#else
-+# define ELF_MIPS_GNU_GOT1_MASK 0x80000000L
-+#endif
-
- /* We can't rely on elf_machine_got_rel because _dl_object_relocation_scope
- fiddles with global data. */
-@@ -242,6 +258,55 @@
- return NULL;
- }
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+#define ELF_DL_FRAME_SIZE 40
-+
-+#define ELF_DL_SAVE_ARG_REGS "\
-+ sw $15, 36($29)\n \
-+ sw $4, 16($29)\n \
-+ sw $5, 20($29)\n \
-+ sw $6, 24($29)\n \
-+ sw $7, 28($29)\n \
-+"
-+
-+#define ELF_DL_RESTORE_ARG_REGS "\
-+ lw $31, 36($29)\n \
-+ lw $4, 16($29)\n \
-+ lw $5, 20($29)\n \
-+ lw $6, 24($29)\n \
-+ lw $7, 28($29)\n \
-+"
-+
-+#define IFABIO32(X) X
-+
-+#else /* _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64 */
-+
-+#define ELF_DL_FRAME_SIZE 64
-+
-+#define ELF_DL_SAVE_ARG_REGS "\
-+ sd $15, 56($29)\n \
-+ sd $4, 8($29)\n \
-+ sd $5, 16($29)\n \
-+ sd $6, 24($29)\n \
-+ sd $7, 32($29)\n \
-+ sd $8, 40($29)\n \
-+ sd $9, 48($29)\n \
-+"
-+
-+#define ELF_DL_RESTORE_ARG_REGS "\
-+ ld $31, 56($29)\n \
-+ ld $4, 8($29)\n \
-+ ld $5, 16($29)\n \
-+ ld $6, 24($29)\n \
-+ ld $7, 32($29)\n \
-+ ld $8, 40($29)\n \
-+ ld $9, 48($29)\n \
-+"
-+
-+#define IFABIO32(X)
-+
-+#endif
-+
- /* Define mips specific runtime resolver. The function __dl_runtime_resolve
- is called from assembler function _dl_runtime_resolve which converts
- special argument registers t7 ($15) and t8 ($24):
-@@ -272,9 +337,8 @@
- { \
- struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
- const ElfW(Sym) *const symtab \
-- = (const void *) D_PTR (l, l_info[DT_SYMTAB]); \
-- const char *strtab \
-- = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
-+ = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
-+ const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
- ElfW(Addr) *got \
- = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
- const ElfW(Word) local_gotno \
-@@ -333,36 +397,30 @@
- .type _dl_runtime_resolve,@function\n \
- .ent _dl_runtime_resolve\n \
- _dl_runtime_resolve:\n \
-- .frame $29, 40, $31\n \
-+ .frame $29, " STRINGXP(ELF_DL_FRAME_SIZE) ", $31\n \
- .set noreorder\n \
- # Save GP.\n \
- move $3, $28\n \
-+ # Save arguments and sp value in stack.\n \
-+ " STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
- # Modify t9 ($25) so as to point .cpload instruction.\n \
-- addu $25, 8\n \
-+ " IFABIO32(STRINGXP(PTR_ADDIU) " $25, 12\n") " \
- # Compute GP.\n \
-- .cpload $25\n \
-+ " STRINGXP(SETUP_GP) "\n \
-+ " STRINGXV(SETUP_GP64 (0, _dl_runtime_resolve)) "\n \
- .set reorder\n \
- # Save slot call pc.\n \
- move $2, $31\n \
-- # Save arguments and sp value in stack.\n \
-- subu $29, 40\n \
-- .cprestore 32\n \
-- sw $15, 36($29)\n \
-- sw $4, 16($29)\n \
-- sw $5, 20($29)\n \
-- sw $6, 24($29)\n \
-- sw $7, 28($29)\n \
-+ " IFABIO32(STRINGXP(CPRESTORE(32))) "\n \
-+ " ELF_DL_SAVE_ARG_REGS " \
- move $4, $24\n \
- move $5, $15\n \
- move $6, $3\n \
- move $7, $2\n \
- jal __dl_runtime_resolve\n \
-- lw $31, 36($29)\n \
-- lw $4, 16($29)\n \
-- lw $5, 20($29)\n \
-- lw $6, 24($29)\n \
-- lw $7, 28($29)\n \
-- addu $29, 40\n \
-+ " ELF_DL_RESTORE_ARG_REGS " \
-+ " STRINGXP(RESTORE_GP64) "\n \
-+ " STRINGXP(PTR_ADDIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
- move $25, $2\n \
- jr $25\n \
- .end _dl_runtime_resolve\n \
-@@ -374,7 +432,6 @@
- #define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
-
-
--
- /* Initial entry point code for the dynamic linker.
- The C function `_dl_start' is the real entry point;
- its return value is the user program's entry point.
-@@ -392,71 +449,71 @@
-
- #define RTLD_START asm (\
- ".text\n"\
-- _RTLD_PROLOGUE(ENTRY_POINT)\
-- ".set noreorder\n\
-- bltzal $0, 0f\n\
-- nop\n\
--0: .cpload $31\n\
-- .set reorder\n\
-+ _RTLD_PROLOGUE(ENTRY_POINT) "\
-+ " STRINGXV(SETUP_GPX($25)) "\n\
-+ " STRINGXV(SETUP_GPX64($18,$25)) "\n\
- # i386 ABI book says that the first entry of GOT holds\n\
- # the address of the dynamic structure. Though MIPS ABI\n\
- # doesn't say nothing about this, I emulate this here.\n\
-- la $4, _DYNAMIC\n\
-+ " STRINGXP(PTR_LA) " $4, _DYNAMIC\n\
- # Subtract OFFSET_GP_GOT\n\
-- sw $4, -0x7ff0($28)\n\
-+ " STRINGXP(PTR_S) " $4, -0x7ff0($28)\n\
- move $4, $29\n\
-- subu $29, 16\n\
-+ " STRINGXP(PTR_SUBIU) " $29, 16\n\
- \n\
-- la $8, coff\n\
-- bltzal $8, coff\n\
--coff: subu $8, $31, $8\n\
-+ " STRINGXP(PTR_LA) " $8, .Lcoff\n\
-+ bltzal $8, .Lcoff\n\
-+.Lcoff: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\
- \n\
-- la $25, _dl_start\n\
-- addu $25, $8\n\
-+ " STRINGXP(PTR_LA) " $25, _dl_start\n\
-+ " STRINGXP(PTR_ADDU) " $25, $8\n\
- jalr $25\n\
- \n\
-- addiu $29, 16\n\
-+ " STRINGXP(PTR_ADDIU) " $29, 16\n\
- # Get the value of label '_dl_start_user' in t9 ($25).\n\
-- la $25, _dl_start_user\n\
-+ " STRINGXP(PTR_LA) " $25, _dl_start_user\n\
- .globl _dl_start_user\n\
-+ .type _dl_start_user,@function\n\
-+ .ent _dl_start_user\n\
- _dl_start_user:\n\
-- .set noreorder\n\
-- .cpload $25\n\
-- .set reorder\n\
-+ " STRINGXP(SETUP_GP) "\n\
-+ " STRINGXV(SETUP_GP64($18,_dl_start_user)) "\n\
- move $16, $28\n\
- # Save the user entry point address in a saved register.\n\
- move $17, $2\n\
- # Store the highest stack address\n\
-- sw $29, __libc_stack_end\n\
-+ " STRINGXP(PTR_S) " $29, __libc_stack_end\n\
- # See if we were run as a command with the executable file\n\
- # name as an extra leading argument.\n\
- lw $2, _dl_skip_args\n\
- beq $2, $0, 1f\n\
- # Load the original argument count.\n\
-- lw $4, 0($29)\n\
-+ " STRINGXP(PTR_L) " $4, 0($29)\n\
- # Subtract _dl_skip_args from it.\n\
- subu $4, $2\n\
- # Adjust the stack pointer to skip _dl_skip_args words.\n\
-- sll $2, 2\n\
-- addu $29, $2\n\
-+ sll $2, " STRINGXP (PTRLOG) "\n\
-+ " STRINGXP(PTR_ADDU) " $29, $2\n\
- # Save back the modified argument count.\n\
-- sw $4, 0($29)\n\
-+ " STRINGXP(PTR_S) " $4, 0($29)\n\
- 1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- lw $4, _rtld_local\n\
-- lw $5, 0($29)\n\
-- la $6, 4($29)\n\
-- sll $7, $5, 2\n\
-- addu $7, $7, $6\n\
-- addu $7, $7, 4\n\
-- subu $29, 16\n\
-+ " STRINGXP(PTR_L) " $4, _rtld_local\n\
-+ " STRINGXP(PTR_L) /* or lw??? fixme */ " $5, 0($29)\n\
-+ " STRINGXP(PTR_LA) " $6, " STRINGXP (PTRSIZE) "($29)\n\
-+ sll $7, $5, " STRINGXP (PTRLOG) "\n\
-+ " STRINGXP(PTR_ADDU) " $7, $7, $6\n\
-+ " STRINGXP(PTR_ADDU) " $7, $7, " STRINGXP (PTRSIZE) " \n\
-+ " STRINGXP(PTR_SUBIU) " $29, 32\n\
-+ " STRINGXP(SAVE_GP(16)) "\n\
- # Call the function to run the initializers.\n\
- jal _dl_init_internal\n\
-- addiu $29, 16\n\
-+ " STRINGXP(PTR_ADDIU) " $29, 32\n\
- # Pass our finalizer function to the user in $2 as per ELF ABI.\n\
-- la $2, _dl_fini\n\
-+ " STRINGXP(PTR_LA) " $2, _dl_fini\n\
- # Jump to the user entry point.\n\
- move $25, $17\n\
-- jr $25\n\t"\
-+ jr $25\n\
-+ .end _dl_start_user\n\t"\
- _RTLD_EPILOGUE(ENTRY_POINT)\
- ".previous"\
- );
-@@ -472,9 +529,12 @@
- MAP is the object containing the reloc. */
-
- static inline void
-+#ifdef RTLD_BOOTSTRAP
-+ __attribute__ ((always_inline))
-+#endif
- elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr)
-+ void *const reloc_addr)
- {
- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-
-@@ -490,21 +550,46 @@
-
- switch (r_type)
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI64
-+ case (R_MIPS_64 << 8) | R_MIPS_REL32:
-+#else
- case R_MIPS_REL32:
-+#endif
- {
- int symidx = ELFW(R_SYM) (reloc->r_info);
-+ ElfW(Addr) reloc_value;
-+
-+ /* Support relocations on mis-aligned offsets. Should we ever
-+ implement RELA, this should be replaced with an assignment
-+ from reloc->r_addend. */
-+ __builtin_memcpy (&reloc_value, reloc_addr, sizeof (reloc_value));
-
- if (symidx)
- {
- const ElfW(Word) gotsym
- = (const ElfW(Word)) map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
-
-- if (symidx < gotsym)
-+ if ((ElfW(Word))symidx < gotsym)
- {
-+ /* This wouldn't work for a symbol imported from other
-+ libraries for which there's no GOT entry, but MIPS
-+ requires every symbol referenced in a dynamic
-+ relocation to have a GOT entry in the primary GOT,
-+ so we only get here for locally-defined symbols.
-+ For section symbols, we should *NOT* be adding
-+ sym->st_value (per the definition of the meaning of
-+ S in reloc expressions in the ELF64 MIPS ABI),
-+ since it should have already been added to
-+ reloc_value by the linker, but older versions of
-+ GNU ld didn't add it, and newer versions don't emit
-+ useless relocations to section symbols any more, so
-+ it is safe to keep on adding sym->st_value, even
-+ though it's not ABI compliant. Some day we should
-+ bite the bullet and stop doing this. */
- #ifndef RTLD_BOOTSTRAP
- if (map != &GL(dl_rtld_map))
- #endif
-- *reloc_addr += sym->st_value + map->l_addr;
-+ reloc_value += sym->st_value + map->l_addr;
- }
- else
- {
-@@ -515,7 +600,7 @@
- = (const ElfW(Word))
- map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
-
-- *reloc_addr += got[symidx + local_gotno - gotsym];
-+ reloc_value += got[symidx + local_gotno - gotsym];
- #endif
- }
- }
-@@ -523,11 +608,27 @@
- #ifndef RTLD_BOOTSTRAP
- if (map != &GL(dl_rtld_map))
- #endif
-- *reloc_addr += map->l_addr;
-+ reloc_value += map->l_addr;
-+
-+ __builtin_memcpy (reloc_addr, &reloc_value, sizeof (reloc_value));
- }
- break;
- case R_MIPS_NONE: /* Alright, Wilbur. */
- break;
-+#if _MIPS_SIM == _MIPS_SIM_ABI64
-+ case R_MIPS_64:
-+ /* For full compliance with the ELF64 ABI, one must precede the
-+ _REL32/_64 pair of relocations with a _64 relocation, such
-+ that the in-place addend is read as a 64-bit value. IRIX
-+ didn't pick up on this requirement, so we treat the
-+ _REL32/_64 relocation as a 64-bit relocation even if it's by
-+ itself. For ABI compliance, we ignore such _64 dummy
-+ relocations. For RELA, this may be simply removed, since
-+ it's totally unnecessary. */
-+ if (ELFW(R_SYM) (reloc->r_info) == 0)
-+ break;
-+ /* Fall through. */
-+#endif
- default:
- _dl_reloc_bad_type (map, r_type, 0);
- break;
-@@ -536,7 +637,7 @@
-
- static inline void
- elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- ElfW(Addr) *const reloc_addr)
-+ void *const reloc_addr)
- {
- /* XXX Nothing to do. There is no relative relocation, right? */
- }
-@@ -661,7 +762,7 @@
- of got[1] of a gnu object is set to identify gnu objects.
- Where we can store l for non gnu objects? XXX */
- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
-+ got[1] = ((ElfW(Addr)) l | ELF_MIPS_GNU_GOT1_MASK);
- else
- _dl_mips_gnu_objects = 0;
- }
---- glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h 2002-02-06 17:56:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Run-time dynamic linker data structures for loaded ELF shared objects.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -17,9 +17,93 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#ifndef _MIPS_LDSODEFS_H
-+#define _MIPS_LDSODEFS_H
-
- /* The MIPS ABI specifies that the dynamic section has to be read-only. */
-
- #define DL_RO_DYN_SECTION 1
-
- #include_next <ldsodefs.h>
-+
-+/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
-+ relocation entry specifies up to three actual relocations, all at
-+ the same address. The first relocation which required a symbol
-+ uses the symbol in the r_sym field. The second relocation which
-+ requires a symbol uses the symbol in the r_ssym field. If all
-+ three relocations require a symbol, the third one uses a zero
-+ value.
-+
-+ We define these structures in internal headers because we're not
-+ sure we want to make them part of the ABI yet. Eventually, some of
-+ this may move into elf/elf.h. */
-+
-+/* An entry in a 64 bit SHT_REL section. */
-+
-+typedef struct
-+{
-+ Elf32_Word r_sym; /* Symbol index */
-+ unsigned char r_ssym; /* Special symbol for 2nd relocation */
-+ unsigned char r_type3; /* 3rd relocation type */
-+ unsigned char r_type2; /* 2nd relocation type */
-+ unsigned char r_type1; /* 1st relocation type */
-+} _Elf64_Mips_R_Info;
-+
-+typedef union
-+{
-+ Elf64_Xword r_info_number;
-+ _Elf64_Mips_R_Info r_info_fields;
-+} _Elf64_Mips_R_Info_union;
-+
-+typedef struct
-+{
-+ Elf64_Addr r_offset; /* Address */
-+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
-+} Elf64_Mips_Rel;
-+
-+typedef struct
-+{
-+ Elf64_Addr r_offset; /* Address */
-+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
-+ Elf64_Sxword r_addend; /* Addend */
-+} Elf64_Mips_Rela;
-+
-+#define ELF64_MIPS_R_SYM(i) \
-+ ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
-+#define ELF64_MIPS_R_TYPE(i) \
-+ (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_type2 << 8) \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_type3 << 16) \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_ssym << 24))
-+#define ELF64_MIPS_R_INFO(sym, type) \
-+ (__extension__ (_Elf64_Mips_R_Info_union) \
-+ (__extension__ (_Elf64_Mips_R_Info) \
-+ { (sym), ELF64_MIPS_R_SSYM (type), \
-+ ELF64_MIPS_R_TYPE3 (type), \
-+ ELF64_MIPS_R_TYPE2 (type), \
-+ ELF64_MIPS_R_TYPE1 (type) \
-+ }).r_info_number)
-+/* These macros decompose the value returned by ELF64_MIPS_R_TYPE, and
-+ compose it back into a value that it can be used as an argument to
-+ ELF64_MIPS_R_INFO. */
-+#define ELF64_MIPS_R_SSYM(i) (((i) >> 24) & 0xff)
-+#define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff)
-+#define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff)
-+#define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff)
-+#define ELF64_MIPS_R_TYPEENC(type1, type2, type3, ssym) \
-+ ((type1) \
-+ | ((Elf32_Word)(type2) << 8) \
-+ | ((Elf32_Word)(type3) << 16) \
-+ | ((Elf32_Word)(ssym) << 24))
-+
-+#undef ELF64_R_SYM
-+#define ELF64_R_SYM(i) ELF64_MIPS_R_SYM (i)
-+#undef ELF64_R_TYPE
-+#define ELF64_R_TYPE(i) ELF64_MIPS_R_TYPE (i)
-+#undef ELF64_R_INFO
-+#define ELF64_R_INFO(sym, type) ELF64_MIPS_R_INFO ((sym), (type))
-+
-+#endif
---- glibc-2.3.2/sysdeps/mips/elf/start.S 2002-12-09 22:41:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/elf/start.S 2003-03-18 16:46:09.000000000 -0500
-@@ -1,5 +1,6 @@
- /* Startup code compliant to the ELF Mips ABI.
-- Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ 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
-@@ -19,6 +20,7 @@
-
- #define __ASSEMBLY__ 1
- #include <entry.h>
-+#include <sys/asm.h>
-
- #ifndef ENTRY_POINT
- #error ENTRY_POINT needs to be defined for start.S on MIPS/ELF.
-@@ -52,42 +54,41 @@
- char **argv, void (*init) (void), void (*fini) (void),
- void (*rtld_fini) (void), void *stack_end)
- */
--#ifdef __PIC__
--/* A macro to (re)initialize gp. We can get the run time address of 0f in
-- ra ($31) by blezal instruction. In this early phase, we can't save gp
-- in stack and .cprestore doesn't work properly. So we set gp by using
-- this macro. */
--#define SET_GP \
-- .set noreorder; \
-- bltzal $0,0f; \
-- nop; \
--0: .cpload $31; \
-- .set reorder;
--#endif
--
-+
- .text
- .globl ENTRY_POINT
- .type ENTRY_POINT,@function
- ENTRY_POINT:
- #ifdef __PIC__
-- SET_GP
-+ SETUP_GPX($0)
-+ SETUP_GPX64($25,$0)
- #else
-- la $28, _gp /* Setup GP correctly if we're non-PIC. */
--#endif
-+ PTR_LA $28, _gp /* Setup GP correctly if we're non-PIC. */
- move $31, $0
-+#endif
-
-- la $4, main /* main */
-- lw $5, 0($29) /* argc */
-- addu $6, $29, 4 /* argv */
-- /* Allocate space on the stack for seven arguments and make sure
-- the stack is aligned to double words (8 bytes). */
-- and $29, 0xfffffff8
-- subu $29, 32
-- la $7, __libc_csu_init /* init */
-- la $8, __libc_csu_fini
-- sw $8, 16($29) /* fini */
-- sw $2, 20($29) /* rtld_fini */
-- sw $29, 24($29) /* stack_end */
-+ PTR_LA $4, main /* main */
-+ PTR_L $5, 0($29) /* argc */
-+ PTR_ADDIU $6, $29, PTRSIZE /* argv */
-+
-+ /* Allocate space on the stack for seven arguments (o32 only)
-+ and make sure the stack is aligned to double words (8 bytes)
-+ on o32 and quad words (16 bytes) on n32 and n64. */
-+
-+ and $29, -2 * SZREG
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+ PTR_SUBIU $29, 32
-+#endif
-+ PTR_LA $7, __libc_csu_init /* init */
-+ PTR_LA $8, __libc_csu_fini
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+ PTR_S $8, 16($29) /* fini */
-+ PTR_S $2, 20($29) /* rtld_fini */
-+ PTR_S $29, 24($29) /* stack_end */
-+#else
-+ move $9, $2 /* rtld_fini */
-+ move $10, $29 /* stack_end */
-+#endif
- jal __libc_start_main
- hlt: b hlt /* Crash if somehow it does return. */
-
---- glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h 2003-03-14 10:30:43.000000000 -0500
-@@ -0,0 +1,48 @@
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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. */
-+
-+#if !defined _MATH_H && !defined _COMPLEX_H
-+# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-+#endif
-+
-+#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-+# define _MATH_H_MATHDEF 1
-+
-+/* Normally, there is no long double type and the `float' and `double'
-+ expressions are evaluated as `double'. */
-+typedef double float_t; /* `float' expressions are evaluated as
-+ `double'. */
-+typedef double double_t; /* `double' expressions are evaluated as
-+ `double'. */
-+
-+/* Define `INFINITY' as value of type `float'. */
-+# define INFINITY HUGE_VALF
-+
-+
-+/* The values returned by `ilogb' for 0 and NaN respectively. */
-+# define FP_ILOGB0 (-2147483647)
-+# define FP_ILOGBNAN 2147483647
-+
-+#endif /* ISO C99 */
-+
-+#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _MIPS_SIM_ABI32
-+/* Signal that we do not really have a `long double'. This disables the
-+ declaration of all the `long double' function variants. */
-+# define __NO_LONG_DOUBLE_MATH 1
-+#endif
---- glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps 2002-10-15 19:39:37.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/mips/ieee754.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/ieee754.h 2003-03-20 12:59:45.000000000 -0500
-@@ -0,0 +1,325 @@
-+/* Copyright (C) 1992, 1995, 1996, 1999, 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. */
-+
-+#ifndef _IEEE754_H
-+
-+#define _IEEE754_H 1
-+#include <features.h>
-+
-+#include <endian.h>
-+
-+#include <float.h>
-+
-+__BEGIN_DECLS
-+
-+union ieee754_float
-+ {
-+ float f;
-+
-+ /* This is the IEEE 754 single-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:8;
-+ unsigned int mantissa:23;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ unsigned int mantissa:23;
-+ unsigned int exponent:8;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:8;
-+ unsigned int quiet_nan:1;
-+ unsigned int mantissa:22;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ unsigned int mantissa:22;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:8;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee_nan;
-+ };
-+
-+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
-+
-+
-+union ieee754_double
-+ {
-+ double d;
-+
-+ /* This is the IEEE 754 double-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:20;
-+ unsigned int mantissa1:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:19;
-+ unsigned int mantissa1:32;
-+#else
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
-+
-+#if LDBL_MANT_DIG == 113
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 854 quad-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:16;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa3:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa3:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:16;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:15;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa3:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa3:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:15;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
-+
-+#elif LDBL_MANT_DIG == 64
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 854 double-extended-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:32;
-+ unsigned int mantissa1:32;
-+#endif
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:32;
-+ unsigned int mantissa1:32;
-+# else
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:32;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+# endif
-+#endif
-+ } ieee;
-+
-+ /* This is for NaNs in the IEEE 854 double-extended-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int empty:16;
-+ unsigned int one:1;
-+ unsigned int quiet_nan:1;
-+ unsigned int mantissa0:30;
-+ unsigned int mantissa1:32;
-+#endif
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:30;
-+ unsigned int quiet_nan:1;
-+ unsigned int one:1;
-+ unsigned int mantissa1:32;
-+# else
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:30;
-+ unsigned int quiet_nan:1;
-+ unsigned int one:1;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
-+
-+#elif LDBL_MANT_DIG == 53
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 754 double-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:20;
-+ unsigned int mantissa1:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:19;
-+ unsigned int mantissa1:32;
-+#else
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3ff /* Added to exponent. */
-+
-+#endif /* LDBL_MANT_DIG == 53 */
-+
-+__END_DECLS
-+
-+#endif /* ieee754.h */
---- glibc-2.3.2/sysdeps/mips/lshift.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/lshift.S 2003-03-15 15:02:16.000000000 -0500
-@@ -1,6 +1,6 @@
- /* MIPS2 __mpn_lshift --
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -44,12 +44,12 @@
- addu $4,$4,$2 /* make r4 point at end of res */
- addiu $6,$6,-1
- and $9,$6,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-- srl $2,$10,$13 /* compute function result */
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
-+ srl $2,$10,$13 /* compute function result */
-
- subu $6,$6,$9
-
--.Loop0: lw $3,-8($5)
-+L(Loop0): lw $3,-8($5)
- addiu $4,$4,-4
- addiu $5,$5,-4
- addiu $9,$9,-1
-@@ -57,13 +57,13 @@
- srl $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-- sw $8,0($4)
-+ bne $9,$0,L(Loop0)
-+ sw $8,0($4)
-
--.L0: beq $6,$0,.Lend
-- nop
-+L(L0): beq $6,$0,L(Lend)
-+ nop
-
--.Loop: lw $3,-8($5)
-+L(Loop): lw $3,-8($5)
- addiu $4,$4,-16
- addiu $6,$6,-4
- sll $11,$10,$7
-@@ -89,10 +89,10 @@
-
- addiu $5,$5,-16
- or $8,$14,$9
-- bgtz $6,.Loop
-- sw $8,0($4)
-+ bgtz $6,L(Loop)
-+ sw $8,0($4)
-
--.Lend: sll $8,$10,$7
-+L(Lend): sll $8,$10,$7
- j $31
- sw $8,-4($4)
- END (__mpn_lshift)
---- glibc-2.3.2/sysdeps/mips/machine-gmon.h 2002-02-13 02:30:11.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/machine-gmon.h 2003-03-18 16:46:08.000000000 -0500
-@@ -1,5 +1,6 @@
- /* Machine-specific calling sequence for `mcount' profiling function. MIPS
-- Copyright (C) 1996, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 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
-@@ -20,14 +21,17 @@
- #define _MCOUNT_DECL(frompc,selfpc) \
- static void __attribute_used__ __mcount (u_long frompc, u_long selfpc)
-
--/* Call __mcount with our the return PC for our caller,
-+/* Call __mcount with the return PC for our caller,
- and the return PC our caller will return to. */
-+
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+
- #ifdef __PIC__
--#define CPLOAD ".cpload $25;"
--#define CPRESTORE ".cprestore 44\n\t"
-+# define CPLOAD ".cpload $25;"
-+# define CPRESTORE ".cprestore 44\n\t"
- #else
--#define CPLOAD
--#define CPRESTORE
-+# define CPLOAD
-+# define CPRESTORE
- #endif
-
- #define MCOUNT asm(\
-@@ -66,3 +70,70 @@
- ".set reorder;\n\t" \
- ".set at\n\t" \
- ".end _mcount");
-+
-+#else
-+
-+#ifdef __PIC__
-+# define CPSETUP ".cpsetup $25, 88, _mcount;"
-+# define CPRETURN ".cpreturn;"
-+#else
-+# define CPSETUP
-+# define CPRETURN
-+#endif
-+
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+# define PTR_ADDU_STRING "add" /* no u */
-+# define PTR_SUBU_STRING "sub" /* no u */
-+#elif defined _ABI64 && _MIPS_SIM == _ABI64
-+# define PTR_ADDU_STRING "daddu"
-+# define PTR_SUBU_STRING "dsubu"
-+#else
-+# error "Unknown ABI"
-+#endif
-+
-+#define MCOUNT asm(\
-+ ".globl _mcount;\n\t" \
-+ ".align 3;\n\t" \
-+ ".type _mcount,@function;\n\t" \
-+ ".ent _mcount\n\t" \
-+ "_mcount:\n\t" \
-+ ".frame $sp,88,$31\n\t" \
-+ ".set noreorder;\n\t" \
-+ ".set noat;\n\t" \
-+ PTR_SUBU_STRING " $29,$29,96;\n\t" \
-+ CPSETUP \
-+ "sd $4,24($29);\n\t" \
-+ "sd $5,32($29);\n\t" \
-+ "sd $6,40($29);\n\t" \
-+ "sd $7,48($29);\n\t" \
-+ "sd $8,56($29);\n\t" \
-+ "sd $9,64($29);\n\t" \
-+ "sd $10,72($29);\n\t" \
-+ "sd $11,80($29);\n\t" \
-+ "sd $2,16($29);\n\t" \
-+ "sd $1,0($29);\n\t" \
-+ "sd $31,8($29);\n\t" \
-+ "move $5,$31;\n\t" \
-+ "move $4,$1;\n\t" \
-+ "jal __mcount;\n\t" \
-+ "nop;\n\t" \
-+ "ld $4,24($29);\n\t" \
-+ "ld $5,32($29);\n\t" \
-+ "ld $6,40($29);\n\t" \
-+ "ld $7,48($29);\n\t" \
-+ "ld $8,56($29);\n\t" \
-+ "ld $9,64($29);\n\t" \
-+ "ld $10,72($29);\n\t" \
-+ "ld $11,80($29);\n\t" \
-+ "ld $2,16($29);\n\t" \
-+ "ld $31,8($29);\n\t" \
-+ "ld $1,0($29);\n\t" \
-+ CPRETURN \
-+ PTR_ADDU_STRING " $29,$29,96;\n\t" \
-+ "j $31;\n\t" \
-+ "move $31,$1;\n\t" \
-+ ".set reorder;\n\t" \
-+ ".set at\n\t" \
-+ ".end _mcount");
-+
-+#endif
---- glibc-2.3.2/sysdeps/mips/memcpy.S 2002-09-10 07:22:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/memcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-
-@@ -21,12 +21,7 @@
- #include <endian.h>
-
-
--/* void *memcpy(void *s1, const void *s2, size_t n);
--
-- This routine could be optimized further for MIPS64, but this is left
-- as an exercise for the future. When it is done, the file should be kept
-- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
-- directory. */
-+/* void *memcpy(void *s1, const void *s2, size_t n); */
-
- #if __BYTE_ORDER == __BIG_ENDIAN
- # define LWHI lwl /* high part is left in big-endian */
-@@ -44,27 +39,29 @@
- .set noreorder
-
- slti t0, a2, 8 # Less than 8?
-- bne t0, zero, $last8
-+ bne t0, zero, L(last8)
- move v0, a0 # Setup exit value before too late
-
- xor t0, a1, a0 # Find a0/a1 displacement
- andi t0, 0x3
-- bne t0, zero, $shift # Go handle the unaligned case
-+ bne t0, zero, L(shift) # Go handle the unaligned case
- subu t1, zero, a1
- andi t1, 0x3 # a0/a1 are aligned, but are we
-- beq t1, zero, $chk8w # starting in the middle of a word?
-+ beq t1, zero, L(chk8w) # starting in the middle of a word?
- subu a2, t1
- LWHI t0, 0(a1) # Yes we are... take care of that
- addu a1, t1
- SWHI t0, 0(a0)
- addu a0, t1
-
--$chk8w: andi t0, a2, 0x1f # 32 or more bytes left?
-- beq t0, a2, $chk1w
-+L(chk8w):
-+ andi t0, a2, 0x1f # 32 or more bytes left?
-+ beq t0, a2, L(chk1w)
- subu a3, a2, t0 # Yes
- addu a3, a1 # a3 = end address of loop
- move a2, t0 # a2 = what will be left after loop
--$lop8w: lw t0, 0(a1) # Loop taking 8 words at a time
-+L(lop8w):
-+ lw t0, 0(a1) # Loop taking 8 words at a time
- lw t1, 4(a1)
- lw t2, 8(a1)
- lw t3, 12(a1)
-@@ -81,50 +78,59 @@
- sw t4, -16(a0)
- sw t5, -12(a0)
- sw t6, -8(a0)
-- bne a1, a3, $lop8w
-+ bne a1, a3, L(lop8w)
- sw t7, -4(a0)
-
--$chk1w: andi t0, a2, 0x3 # 4 or more bytes left?
-- beq t0, a2, $last8
-+L(chk1w):
-+ andi t0, a2, 0x3 # 4 or more bytes left?
-+ beq t0, a2, L(last8)
- subu a3, a2, t0 # Yes, handle them one word at a time
- addu a3, a1 # a3 again end address
- move a2, t0
--$lop1w: lw t0, 0(a1)
-+L(lop1w):
-+ lw t0, 0(a1)
- addiu a0, 4
- addiu a1, 4
-- bne a1, a3, $lop1w
-+ bne a1, a3, L(lop1w)
- sw t0, -4(a0)
-
--$last8: blez a2, $lst8e # Handle last 8 bytes, one at a time
-+L(last8):
-+ blez a2, L(lst8e) # Handle last 8 bytes, one at a time
- addu a3, a2, a1
--$lst8l: lb t0, 0(a1)
-+L(lst8l):
-+ lb t0, 0(a1)
- addiu a0, 1
- addiu a1, 1
-- bne a1, a3, $lst8l
-+ bne a1, a3, L(lst8l)
- sb t0, -1(a0)
--$lst8e: jr ra # Bye, bye
-+L(lst8e):
-+ jr ra # Bye, bye
- nop
-
--$shift: subu a3, zero, a0 # Src and Dest unaligned
-+L(shift):
-+ subu a3, zero, a0 # Src and Dest unaligned
- andi a3, 0x3 # (unoptimized case...)
-- beq a3, zero, $shft1
-+ beq a3, zero, L(shft1)
- subu a2, a3 # a2 = bytes left
- LWHI t0, 0(a1) # Take care of first odd part
- LWLO t0, 3(a1)
- addu a1, a3
- SWHI t0, 0(a0)
- addu a0, a3
--$shft1: andi t0, a2, 0x3
-+L(shft1):
-+ andi t0, a2, 0x3
- subu a3, a2, t0
- addu a3, a1
--$shfth: LWHI t1, 0(a1) # Limp through, word by word
-+L(shfth):
-+ LWHI t1, 0(a1) # Limp through, word by word
- LWLO t1, 3(a1)
- addiu a0, 4
- addiu a1, 4
-- bne a1, a3, $shfth
-+ bne a1, a3, L(shfth)
- sw t1, -4(a0)
-- b $last8 # Handle anything which may be left
-+ b L(last8) # Handle anything which may be left
- move a2, t0
-
- .set reorder
- END (memcpy)
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/mips/memset.S 2002-09-10 07:22:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-
-@@ -21,12 +21,7 @@
- #include <endian.h>
-
-
--/* void *memset(void *s, int c, size_t n).
--
-- This routine could be optimized further for MIPS64, but this is left
-- as an exercise for the future. When it is done, the file should be kept
-- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
-- directory. */
-+/* void *memset(void *s, int c, size_t n). */
-
- #if __BYTE_ORDER == __BIG_ENDIAN
- # define SWHI swl /* high part is left in big-endian */
-@@ -38,46 +33,54 @@
- .set noreorder
-
- slti t1, a2, 8 # Less than 8?
-- bne t1, zero, $last8
-+ bne t1, zero, L(last8)
- move v0, a0 # Setup exit value before too late
-
-- beq a1, zero, $ueven # If zero pattern, no need to extend
-+ beq a1, zero, L(ueven) # If zero pattern, no need to extend
- andi a1, 0xff # Avoid problems with bogus arguments
- sll t0, a1, 8
- or a1, t0
- sll t0, a1, 16
- or a1, t0 # a1 is now pattern in full word
-
--$ueven: subu t0, zero, a0 # Unaligned address?
-+L(ueven):
-+ subu t0, zero, a0 # Unaligned address?
- andi t0, 0x3
-- beq t0, zero, $chkw
-+ beq t0, zero, L(chkw)
- subu a2, t0
- SWHI a1, 0(a0) # Yes, handle first unaligned part
- addu a0, t0 # Now both a0 and a2 are updated
-
--$chkw: andi t0, a2, 0x7 # Enough left for one loop iteration?
-- beq t0, a2, $chkl
-+L(chkw):
-+ andi t0, a2, 0x7 # Enough left for one loop iteration?
-+ beq t0, a2, L(chkl)
- subu a3, a2, t0
- addu a3, a0 # a3 is last loop address +1
- move a2, t0 # a2 is now # of bytes left after loop
--$loopw: addiu a0, 8 # Handle 2 words pr. iteration
-+L(loopw):
-+ addiu a0, 8 # Handle 2 words pr. iteration
- sw a1, -8(a0)
-- bne a0, a3, $loopw
-+ bne a0, a3, L(loopw)
- sw a1, -4(a0)
-
--$chkl: andi t0, a2, 0x4 # Check if there is at least a full
-- beq t0, zero, $last8 # word remaining after the loop
-+L(chkl):
-+ andi t0, a2, 0x4 # Check if there is at least a full
-+ beq t0, zero, L(last8) # word remaining after the loop
- subu a2, t0
- sw a1, 0(a0) # Yes...
- addiu a0, 4
-
--$last8: blez a2, $exit # Handle last 8 bytes (if cnt>0)
-+L(last8):
-+ blez a2, L(exit) # Handle last 8 bytes (if cnt>0)
- addu a3, a2, a0 # a3 is last address +1
--$lst8l: addiu a0, 1
-- bne a0, a3, $lst8l
-+L(lst8l):
-+ addiu a0, 1
-+ bne a0, a3, L(lst8l)
- sb a1, -1(a0)
--$exit: j ra # Bye, bye
-+L(exit):
-+ j ra # Bye, bye
- nop
-
- .set reorder
- END (memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/mips/mips32/Implies 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips32/Implies 2003-03-29 03:15:28.000000000 -0500
-@@ -0,0 +1,2 @@
-+mips
-+wordsize-32
---- glibc-2.3.2/sysdeps/mips/mips32/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips32/Makefile 2003-03-29 03:15:28.000000000 -0500
-@@ -0,0 +1,3 @@
-+ifeq ($(filter -mabi=32,$(CC)),)
-+CC += -mabi=32
-+endif
---- glibc-2.3.2/sysdeps/mips/mips64/Implies 1999-07-14 03:27:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/Implies 2003-03-18 16:46:09.000000000 -0500
-@@ -1,4 +1,3 @@
--wordsize-64
- # MIPS uses IEEE 754 floating point.
- ieee754/flt-32
- ieee754/dbl-64
---- glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1995, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -38,6 +38,7 @@
- register int val asm ("a1");
-
- /* Pull back the floating point callee-saved registers. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
- asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[0]));
- asm volatile ("l.d $f25, %0" : : "m" (env[0].__fpregs[1]));
- asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[2]));
-@@ -46,6 +47,14 @@
- asm volatile ("l.d $f29, %0" : : "m" (env[0].__fpregs[5]));
- asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[6]));
- asm volatile ("l.d $f31, %0" : : "m" (env[0].__fpregs[7]));
-+#else
-+ asm volatile ("l.d $f20, %0" : : "m" (env[0].__fpregs[0]));
-+ asm volatile ("l.d $f22, %0" : : "m" (env[0].__fpregs[1]));
-+ asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[2]));
-+ asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[3]));
-+ asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
-+ asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
-+#endif
-
- /* Get and reconstruct the floating point csr. */
- asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
---- glibc-2.3.2/sysdeps/mips/mips64/add_n.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/add_n.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_add_n -- Add two limb vectors of the same length > 0 and
- * store sum in a third limb vector.
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /*
- * INPUT PARAMETERS
-@@ -38,10 +39,10 @@
- .globl __mpn_add_n
- .ent __mpn_add_n
- __mpn_add_n:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5)
-@@ -49,12 +50,12 @@
-
- daddiu $7,$7,-1
- and $9,$7,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-- move $2,$0
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
-+ move $2,$0
-
- dsubu $7,$7,$9
-
--.Loop0: daddiu $9,$9,-1
-+L(Loop0): daddiu $9,$9,-1
- ld $12,8($5)
- daddu $11,$11,$2
- ld $13,8($6)
-@@ -68,13 +69,13 @@
- daddiu $6,$6,8
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-- daddiu $4,$4,8
-+ bne $9,$0,L(Loop0)
-+ daddiu $4,$4,8
-
--.L0: beq $7,$0,.Lend
-- nop
-+L(L0): beq $7,$0,L(Lend)
-+ nop
-
--.Loop: daddiu $7,$7,-4
-+L(Loop): daddiu $7,$7,-4
-
- ld $12,8($5)
- daddu $11,$11,$2
-@@ -115,10 +116,10 @@
- daddiu $5,$5,32
- daddiu $6,$6,32
-
-- bne $7,$0,.Loop
-- daddiu $4,$4,32
-+ bne $7,$0,L(Loop)
-+ daddiu $4,$4,32
-
--.Lend: daddu $11,$11,$2
-+L(Lend): daddu $11,$11,$2
- sltu $8,$11,$2
- daddu $11,$10,$11
- sltu $2,$11,$10
---- glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
- * add the product to a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +39,10 @@
- .globl __mpn_addmul_1
- .ent __mpn_addmul_1
- __mpn_addmul_1:
-- .set noreorder
- #ifdef PIC
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +53,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-- move $2,$0 # zero cy2
-+ beq $6,$0,L(LC0)
-+ move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: ld $10,0($4)
-+L(Loop): ld $10,0($4)
- mflo $3
- mfhi $9
- daddiu $5,$5,8
-@@ -73,11 +74,11 @@
- daddu $2,$2,$10
- sd $3,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-- daddu $2,$9,$2 # add high product limb and carry from addition
-+ bne $6,$0,L(Loop)
-+ daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: ld $10,0($4)
-+L(LC1): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-@@ -91,7 +92,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: ld $10,0($4)
-+L(LC0): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
---- glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,57 +0,0 @@
--/* Define the machine-dependent type `jmp_buf'. MIPS version.
-- Copyright (C) 1996, 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. */
--
--#ifndef _SETJMP_H
--# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
--#endif
--
--typedef struct
-- {
-- /* Program counter. */
-- __ptr_t __pc;
--
-- /* Stack pointer. */
-- __ptr_t __sp;
--
-- /* Callee-saved registers s0 through s7. */
-- int __regs[8];
--
-- /* The frame pointer. */
-- __ptr_t __fp;
--
-- /* The global pointer. */
-- __ptr_t __gp;
--
-- /* Floating point status register. */
-- int __fpc_csr;
--
-- /* Callee-saved floating point registers. */
-- double __fpregs[8];
-- } __jmp_buf[1];
--
--#ifdef __USE_MISC
--/* Offset to the program counter in `jmp_buf'. */
--# define JB_PC 0
--#endif
--
--
--/* Test if longjmp to JMPBUF would unwind the frame
-- containing a local variable at ADDRESS. */
--#define _JMPBUF_UNWINDS(jmpbuf, address) \
-- ((__ptr_t) (address) < (jmpbuf)[0].__sp)
---- glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S 2002-12-31 14:13:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S 2003-06-03 09:36:28.000000000 -0400
-@@ -1,5 +1,5 @@
- /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. MIPS64 version.
-- Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 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
-@@ -22,16 +22,26 @@
- in setjmp doesn't clobber the state restored by longjmp. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- #ifdef __PIC__
- .option pic2
- #endif
- ENTRY (_setjmp)
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP
- #endif
-- dla t9, C_SYMBOL_NAME (__sigsetjmp)
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (_setjmp))
-+ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-- jr t9
-- dli a1, 0 /* Pass a second argument of zero. */
-+#endif
-+ RESTORE_GP64
-+ move a1, zero /* Pass a second argument of zero. */
-+#ifdef __PIC__
-+ jr t9
-+#else
-+ j C_SYMBOL_NAME (__sigsetjmp)
-+#endif
-+ .end _setjmp
- libc_hidden_def (_setjmp)
---- glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S 2003-03-18 16:46:09.000000000 -0500
-@@ -1,5 +1,5 @@
- /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. MIPS64 version.
-- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 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
-@@ -22,15 +22,25 @@
- in setjmp doesn't clobber the state restored by longjmp. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- #ifdef PIC
- .option pic2
- #endif
- ENTRY (setjmp)
--#ifdef PIC
-- .cpload t9
-+#ifdef __PIC__
-+ SETUP_GP
- #endif
-- dla t9, C_SYMBOL_NAME (__sigsetjmp)
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (setjmp))
-+ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-- jr t9
-+#endif
-+ RESTORE_GP64
- dli a1, 1 /* Pass a second argument of one. */
-+#ifdef __PIC__
-+ jr t9
-+#else
-+ j C_SYMBOL_NAME (__sigsetjmp)
-+#endif
-+ .end setjmp
---- glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h 2002-02-28 16:35:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,594 +0,0 @@
--/* Machine-dependent ELF dynamic relocation inline functions. MIPS64 version.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
-- Contributed by Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
--
-- 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_machine_h
--#define dl_machine_h
--
--#define ELF_MACHINE_NAME "MIPS"
--
--#define ELF_MACHINE_NO_PLT
--
--#include <entry.h>
--
--#ifndef ENTRY_POINT
--#error ENTRY_POINT needs to be defined for MIPS.
--#endif
--
--#ifndef _RTLD_PROLOGUE
--# define _RTLD_PROLOGUE(entry) "\n\t.globl " __STRING(entry) \
-- "\n\t.ent " __STRING(entry) \
-- "\n\t" __STRING(entry) ":\n\t"
--#endif
--
--#ifndef _RTLD_EPILOGUE
--# define _RTLD_EPILOGUE(entry) "\t.end " __STRING(entry) "\n"
--#endif
--
--/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.
-- This makes no sense on MIPS but we have to define this to R_MIPS_REL32
-- to avoid the asserts in dl-lookup.c from blowing. */
--#define ELF_MACHINE_JMP_SLOT R_MIPS_REL32
--#define elf_machine_type_class(type) ELF_RTYPE_CLASS_PLT
--
--/* Translate a processor specific dynamic tag to the index
-- in l_info array. */
--#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
--
--#if 0
--/* We may need 64k alignment. */
--#define ELF_MACHINE_ALIGN_MASK 0xffff
--#endif
--
--/*
-- * MIPS libraries are usually linked to a non-zero base address. We
-- * subtrace the base address from the address where we map the object
-- * to. This results in more efficient address space usage.
-- */
--#if 0
--#define MAP_BASE_ADDR(l) ((l)->l_info[DT_MIPS(BASE_ADDRESS)] ? \
-- (l)->l_info[DT_MIPS(BASE_ADDRESS)]->d_un.d_ptr : 0)
--#else
--#define MAP_BASE_ADDR(l) 0x5ffe0000
--#endif
--
--/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in
-- with the run-time address of the r_debug structure */
--#define ELF_MACHINE_DEBUG_SETUP(l,r) \
--do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
-- *(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \
-- (ElfW(Addr)) (r); \
-- } while (0)
--
--/* Return nonzero iff ELF header is compatible with the running host. */
--static inline int __attribute__ ((unused))
--elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
--{
-- switch (ehdr->e_machine)
-- {
-- case EM_MIPS:
-- case EM_MIPS_RS3_LE:
-- return 1;
-- default:
-- return 0;
-- }
--}
--
--static inline ElfW(Addr) *
--elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
--{
-- /* FIXME: the offset of gp from GOT may be system-dependent. */
-- return (ElfW(Addr) *) (gpreg - 0x7ff0);
--}
--
--/* Return the link-time address of _DYNAMIC. Conveniently, this is the
-- first element of the GOT. This must be inlined in a function which
-- uses global data. */
--static inline ElfW(Addr)
--elf_machine_dynamic (void)
--{
-- register ElfW(Addr) gp __asm__ ("$28");
--
-- return *elf_mips_got_from_gpreg (gp);
--}
--
--
--/* Return the run-time load address of the shared object. */
--static inline ElfW(Addr)
--elf_machine_load_address (void)
--{
-- ElfW(Addr) addr;
-- asm (" .set noreorder\n"
-- " dla %0, here\n"
-- " bltzal $0, here\n"
-- " nop\n"
-- "here: dsubu %0, $31, %0\n"
-- " .set reorder\n"
-- : "=r" (addr)
-- : /* No inputs */
-- : "$31");
-- return addr;
--}
--
--/* The MSB of got[1] of a gnu object is set to identify gnu objects. */
--#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
--
--/* Relocate GOT. */
--static inline void
--elf_machine_got_rel (struct link_map *map, int lazy)
--{
-- ElfW(Addr) *got;
-- ElfW(Sym) *sym;
-- int i, n;
-- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
--
--#define RESOLVE_GOTSYM(sym) \
-- ({ \
-- const ElfW(Sym) *ref = sym; \
-- ElfW(Addr) sym_loadaddr; \
-- sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, \
-- map->l_scope, \
-- map->l_name, R_MIPS_REL32);\
-- (ref)? sym_loadaddr + ref->st_value: 0; \
-- })
--
-- got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]);
--
-- /* got[0] is reserved. got[1] is also reserved for the dynamic object
-- generated by gnu ld. Skip these reserved entries from relocation. */
-- i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2: 1;
-- n = map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
-- /* Add the run-time display to all local got entries. */
-- while (i < n)
-- got[i++] += map->l_addr;
--
-- /* Handle global got entries. */
-- got += n;
-- sym = (ElfW(Sym) *) D_PTR (map, l_info[DT_SYMTAB]);
-- sym += map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
-- i = (map->l_info[DT_MIPS (SYMTABNO)]->d_un.d_val
-- - map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val);
--
-- while (i--)
-- {
-- if (sym->st_shndx == SHN_UNDEF)
-- {
-- if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC)
-- {
-- if (sym->st_value && lazy)
-- *got = sym->st_value + map->l_addr;
-- else
-- *got = RESOLVE_GOTSYM (sym);
-- }
-- else /* if (*got == 0 || *got == QS) */
-- *got = RESOLVE_GOTSYM (sym);
-- }
-- else if (sym->st_shndx == SHN_COMMON)
-- *got = RESOLVE_GOTSYM (sym);
-- else if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC
-- && *got != sym->st_value
-- && lazy)
-- *got += map->l_addr;
-- else if (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION)
-- {
-- if (sym->st_other == 0)
-- *got += map->l_addr;
-- }
-- else
-- *got = RESOLVE_GOTSYM (sym);
--
-- got++;
-- sym++;
-- }
--
--#undef RESOLVE_GOTSYM
--
-- return;
--}
--
--/* Set up the loaded object described by L so its stub function
-- will jump to the on-demand fixup code in dl-runtime.c. */
--
--static inline int
--elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
--{
-- ElfW(Addr) *got;
-- extern void _dl_runtime_resolve (ElfW(Word));
-- extern int _dl_mips_gnu_objects;
--
--#ifdef RTLD_BOOTSTRAP
-- {
-- return lazy;
-- }
--#endif
-- if (lazy)
-- {
-- /* The GOT entries for functions have not yet been filled in.
-- Their initial contents will arrange when called to put an
-- offset into the .dynsym section in t8, the return address
-- in t7 and then jump to _GLOBAL_OFFSET_TABLE[0]. */
-- got = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
--
-- /* This function will get called to fix up the GOT entry indicated by
-- the register t8, and then jump to the resolved address. */
-- got[0] = (ElfW(Addr)) &_dl_runtime_resolve;
--
-- /* Store l to _GLOBAL_OFFSET_TABLE[1] for gnu object. The MSB
-- of got[1] of a gnu object is set to identify gnu objects.
-- Where we can store l for non gnu objects? XXX */
-- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
-- else
-- _dl_mips_gnu_objects = 0;
-- }
--
-- /* Relocate global offset table. */
-- elf_machine_got_rel (l, lazy);
--
-- return lazy;
--}
--
--/* Get link_map for this object. */
--static inline struct link_map *
--elf_machine_runtime_link_map (ElfW(Addr) gpreg, ElfW(Addr) stub_pc)
--{
-- extern int _dl_mips_gnu_objects;
--
-- /* got[1] is reserved to keep its link map address for the shared
-- object generated by the gnu linker. If all are such objects, we
-- can find the link map from current GPREG simply. If not so, get
-- the link map for caller's object containing STUB_PC. */
--
-- if (_dl_mips_gnu_objects)
-- {
-- ElfW(Addr) *got = elf_mips_got_from_gpreg (gpreg);
-- ElfW(Word) g1;
--
-- g1 = ((ElfW(Word) *) got)[1];
--
-- if ((g1 & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- {
-- struct link_map *l =
-- (struct link_map *) (g1 & ~ELF_MIPS_GNU_GOT1_MASK);
-- ElfW(Addr) base, limit;
-- const ElfW(Phdr) *p = l->l_phdr;
-- ElfW(Half) this, nent = l->l_phnum;
--
-- /* For the common case of a stub being called from the containing
-- object, STUB_PC will point to somewhere within the object that
-- is described by the link map fetched via got[1]. Otherwise we
-- have to scan all maps. */
-- for (this = 0; this < nent; this++)
-- {
-- if (p[this].p_type == PT_LOAD)
-- {
-- base = p[this].p_vaddr + l->l_addr;
-- limit = base + p[this].p_memsz;
-- if (stub_pc >= base && stub_pc < limit)
-- return l;
-- }
-- this++;
-- }
-- }
-- }
--
-- {
-- struct link_map *l = GL(dl_loaded);
--
-- while (l)
-- {
-- ElfW(Addr) base, limit;
-- const ElfW(Phdr) *p = l->l_phdr;
-- ElfW(Half) this, nent = l->l_phnum;
--
-- for (this = 0; this < nent; this++)
-- {
-- if (p[this].p_type == PT_LOAD)
-- {
-- base = p[this].p_vaddr + l->l_addr;
-- limit = base + p[this].p_memsz;
-- if (stub_pc >= base && stub_pc < limit)
-- return l;
-- }
-- }
-- l = l->l_next;
-- }
-- }
--
-- _dl_signal_error (0, NULL, NULL, "cannot find runtime link map");
-- return NULL;
--}
--
--/* Mips has no PLT but define elf_machine_relplt to be elf_machine_rel. */
--#define elf_machine_relplt elf_machine_rel
--
--/* Define mips specific runtime resolver. The function __dl_runtime_resolve
-- is called from assembler function _dl_runtime_resolve which converts
-- special argument registers t7 ($15) and t8 ($24):
-- t7 address to return to the caller of the function
-- t8 index for this function symbol in .dynsym
-- to usual c arguments. */
--
--#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
--/* The flag _dl_mips_gnu_objects is set if all dynamic objects are \
-- generated by the gnu linker. */ \
--int _dl_mips_gnu_objects = 1; \
-- \
--/* This is called from assembly stubs below which the compiler can't see. */ \
--static ElfW(Addr) \
--__dl_runtime_resolve (ElfW(Word), ElfW(Word), ElfW(Addr), ElfW(Addr)) \
-- __attribute__ ((unused)); \
-- \
--static ElfW(Addr) \
--__dl_runtime_resolve (ElfW(Word) sym_index, \
-- ElfW(Word) return_address, \
-- ElfW(Addr) old_gpreg, \
-- ElfW(Addr) stub_pc) \
--{ \
-- struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
-- const ElfW(Sym) *const symtab \
-- = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
-- const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
-- const ElfW(Addr) *got \
-- = (const ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
-- const ElfW(Word) local_gotno \
-- = (const ElfW(Word)) l->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val; \
-- const ElfW(Word) gotsym \
-- = (const ElfW(Word)) l->l_info[DT_MIPS (GOTSYM)]->d_un.d_val; \
-- const ElfW(Sym) *definer; \
-- ElfW(Addr) loadbase; \
-- ElfW(Addr) funcaddr; \
-- \
-- /* Look up the symbol's run-time value. */ \
-- definer = &symtab[sym_index]; \
-- \
-- loadbase = _dl_lookup_symbol (strtab + definer->st_name, &definer, \
-- l->l_scope, l->l_name, \
-- R_MIPS_REL32); \
-- \
-- /* Apply the relocation with that value. */ \
-- funcaddr = loadbase + definer->st_value; \
-- *(got + local_gotno + sym_index - gotsym) = funcaddr; \
-- \
-- return funcaddr; \
--} \
-- \
--asm ("\n \
-- .text\n \
-- .align 3\n \
-- .globl _dl_runtime_resolve\n \
-- .type _dl_runtime_resolve,@function\n \
-- .ent _dl_runtime_resolve\n \
--_dl_runtime_resolve:\n \
-- .set noreorder\n \
-- # Save old GP to $3.\n \
-- move $3,$28\n \
-- # Modify t9 ($25) so as to point .cpload instruction.\n \
-- daddu $25,2*8\n \
-- # Compute GP.\n \
-- .cpload $25\n \
-- .set reorder\n \
-- # Save slot call pc.\n \
-- move $2, $31\n \
-- # Save arguments and sp value in stack.\n \
-- dsubu $29, 10*8\n \
-- .cprestore 8*8\n \
-- sd $15, 9*8($29)\n \
-- sd $4, 3*8($29)\n \
-- sd $5, 4*8($29)\n \
-- sd $6, 5*8($29)\n \
-- sd $7, 6*8($29)\n \
-- sd $16, 7*8($29)\n \
-- move $16, $29\n \
-- move $4, $24\n \
-- move $5, $15\n \
-- move $6, $3\n \
-- move $7, $2\n \
-- jal __dl_runtime_resolve\n \
-- move $29, $16\n \
-- ld $31, 9*8($29)\n \
-- ld $4, 3*8($29)\n \
-- ld $5, 4*8($29)\n \
-- ld $6, 5*8($29)\n \
-- ld $7, 6*8($29)\n \
-- ld $16, 7*8($29)\n \
-- daddu $29, 10*8\n \
-- move $25, $2\n \
-- jr $25\n \
-- .end _dl_runtime_resolve\n \
-- .previous\n \
--");
--
--/* Mask identifying addresses reserved for the user program,
-- where the dynamic linker should not map anything. */
--#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
--
--
--
--/* Initial entry point code for the dynamic linker.
-- The C function `_dl_start' is the real entry point;
-- its return value is the user program's entry point.
-- Note how we have to be careful about two things:
--
-- 1) That we allocate a minimal stack of 24 bytes for
-- every function call, the MIPS ABI states that even
-- if all arguments are passed in registers the procedure
-- called can use the 16 byte area pointed to by $sp
-- when it is called to store away the arguments passed
-- to it.
--
-- 2) That under Linux the entry is named __start
-- and not just plain _start. */
--
--#define RTLD_START asm ("\
-- .text\n\
-- .align 3\n"\
--_RTLD_PROLOGUE (ENTRY_POINT)\
--" .globl _dl_start_user\n\
-- .set noreorder\n\
-- bltzal $0, 0f\n\
-- nop\n\
--0: .cpload $31\n\
-- .set reorder\n\
-- # i386 ABI book says that the first entry of GOT holds\n\
-- # the address of the dynamic structure. Though MIPS ABI\n\
-- # doesn't say nothing about this, I emulate this here.\n\
-- dla $4, _DYNAMIC\n\
-- sd $4, -0x7ff0($28)\n\
-- dsubu $29, 16\n\
-- move $4, $29\n\
-- jal _dl_start\n\
-- daddiu $29, 16\n\
-- # Get the value of label '_dl_start_user' in t9 ($25).\n\
-- dla $25, _dl_start_user\n\
--_dl_start_user:\n\
-- .set noreorder\n\
-- .cpload $25\n\
-- .set reorder\n\
-- move $16, $28\n\
-- # Save the user entry point address in saved register.\n\
-- move $17, $2\n\
-- # Store the highest stack address\n\
-- sd $29, __libc_stack_end\n\
-- # See if we were run as a command with the executable file\n\
-- # name as an extra leading argument.\n\
-- ld $2, _dl_skip_args\n\
-- beq $2, $0, 1f\n\
-- # Load the original argument count.\n\
-- ld $4, 0($29)\n\
-- # Subtract _dl_skip_args from it.\n\
-- dsubu $4, $2\n\
-- # Adjust the stack pointer to skip _dl_skip_args words.\n\
-- dsll $2,2\n\
-- daddu $29, $2\n\
-- # Save back the modified argument count.\n\
-- sd $4, 0($29)\n\
--1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- ld $4, _rtld_local\n\
-- ld $5, 0($29)\n\
-- dla $6, 4($29)\n\
-- dla $7, 8($29)\n\
-- dsubu $29, 16\n\
-- # Call the function to run the initializers.\n\
-- jal _dl_init_internal\n\
-- daddiu $29, 16\n\
-- # Pass our finalizer function to the user in ra.\n\
-- dla $31, _dl_fini\n\
-- # Jump to the user entry point.\n\
--1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- lw $4, _rtld_local\n\
-- lw $5, 0($29)\n\
-- la $6, 4($29)\n\
-- la $7, 8($29)\n\
-- subu $29, 16\n\
-- # Call the function to run the initializers.\n\
-- jal _dl_init_internal\n\
-- addiu $29, 16\n\
-- # Pass our finalizer function to the user in ra.\n\
-- dla $31, _dl_fini\n\
-- # Jump to the user entry point.\n\
-- move $25, $17\n\
-- ld $4, 0($29)\n\
-- ld $5, 1*8($29)\n\
-- ld $6, 2*8$29)\n\
-- ld $7, 3*8($29)\n\
-- jr $25\n"\
--_RTLD_EPILOGUE(ENTRY_POINT) \
-- "\n.previous"\
--);
--
--
--/* The MIPS never uses Elfxx_Rela relocations. */
--#define ELF_MACHINE_NO_RELA 1
--
--#endif /* !dl_machine_h */
--
--#ifdef RESOLVE
--
--/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
-- MAP is the object containing the reloc. */
--
--static inline void
--elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
-- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr)
--{
-- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-- ElfW(Addr) loadbase;
-- ElfW(Addr) undo __attribute__ ((unused));
--
-- switch (r_type)
-- {
-- case R_MIPS_REL32:
-- {
-- ElfW(Addr) undo = 0;
--
-- if (ELFW(ST_BIND) (sym->st_info) == STB_LOCAL
-- && (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION
-- || ELFW(ST_TYPE) (sym->st_info) == STT_NOTYPE))
-- {
-- *reloc_addr += map->l_addr;
-- break;
-- }
--#ifndef RTLD_BOOTSTRAP
-- /* This is defined in rtld.c, but nowhere in the static libc.a;
-- make the reference weak so static programs can still link. This
-- declaration cannot be done when compiling rtld.c (i.e. #ifdef
-- RTLD_BOOTSTRAP) because rtld.c contains the common defn for
-- _dl_rtld_map, which is incompatible with a weak decl in the same
-- file. */
--# ifndef SHARED
-- weak_extern (GL(dl_rtld_map));
--# endif
-- if (map == &GL(dl_rtld_map))
-- /* Undo the relocation done here during bootstrapping. Now we will
-- relocate it anew, possibly using a binding found in the user
-- program or a loaded library rather than the dynamic linker's
-- built-in definitions used while loading those libraries. */
-- undo = map->l_addr + sym->st_value;
--#endif
-- loadbase = RESOLVE (&sym, version, 0);
-- *reloc_addr += (sym ? (loadbase + sym->st_value) : 0) - undo;
-- }
-- break;
--#ifndef RTLD_BOOTSTRAP
-- case R_MIPS_NONE: /* Alright, Wilbur. */
-- break;
--#endif
-- default:
-- _dl_reloc_bad_type (map, r_type, 0);
-- break;
-- }
--}
--
--static inline void
--elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- ElfW(Addr) *const reloc_addr)
--{
-- /* XXX Nothing to do. There is no relative relocation, right? */
--}
--
--static inline void
--elf_machine_lazy_rel (struct link_map *map, ElfW(Addr) l_addr,
-- const ElfW(Rel) *reloc)
--{
-- /* Do nothing. */
--}
--
--#endif /* RESOLVE */
---- glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h 2003-03-17 10:47:12.000000000 -0500
-@@ -0,0 +1,31 @@
-+/* gmp-mparam.h -- Compiler/machine parameter header file.
-+
-+Copyright (C) 1991, 1993, 1994, 2002, 2003 Free Software Foundation, Inc.
-+
-+This file is part of the GNU MP Library.
-+
-+The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-+the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-+
-+#if defined __GMP_H__ && ! defined _LONG_LONG_LIMB
-+#error "Included too late for _LONG_LONG_LIMB to take effect"
-+#endif
-+
-+#define _LONG_LONG_LIMB
-+#define BITS_PER_MP_LIMB 64
-+#define BYTES_PER_MP_LIMB 8
-+#define BITS_PER_LONGINT __WORDSIZE
-+#define BITS_PER_INT 32
-+#define BITS_PER_SHORTINT 16
-+#define BITS_PER_CHAR 8
---- glibc-2.3.2/sysdeps/mips/mips64/lshift.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/lshift.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,6 +1,6 @@
- /* MIPS3 __mpn_lshift --
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -21,6 +21,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -37,10 +38,10 @@
- .globl __mpn_lshift
- .ent __mpn_lshift
- __mpn_lshift:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- dsll $2,$6,3
-@@ -50,12 +51,12 @@
- daddu $4,$4,$2 # make r4 point at end of res
- daddiu $6,$6,-1
- and $9,$6,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-- dsrl $2,$10,$13 # compute function result
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
-+ dsrl $2,$10,$13 # compute function result
-
- dsubu $6,$6,$9
-
--.Loop0: ld $3,-16($5)
-+L(Loop0): ld $3,-16($5)
- daddiu $4,$4,-8
- daddiu $5,$5,-8
- daddiu $9,$9,-1
-@@ -63,13 +64,13 @@
- dsrl $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-- sd $8,0($4)
-+ bne $9,$0,L(Loop0)
-+ sd $8,0($4)
-
--.L0: beq $6,$0,.Lend
-- nop
-+L(L0): beq $6,$0,L(Lend)
-+ nop
-
--.Loop: ld $3,-16($5)
-+L(Loop): ld $3,-16($5)
- daddiu $4,$4,-32
- daddiu $6,$6,-4
- dsll $11,$10,$7
-@@ -95,10 +96,10 @@
-
- daddiu $5,$5,-32
- or $8,$14,$9
-- bgtz $6,.Loop
-- sd $8,0($4)
-+ bgtz $6,L(Loop)
-+ sd $8,0($4)
-
--.Lend: dsll $8,$10,$7
-+L(Lend): dsll $8,$10,$7
- j $31
- sd $8,-8($4)
- .end __mpn_lshift
---- glibc-2.3.2/sysdeps/mips/mips64/memcpy.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/memcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -0,0 +1,140 @@
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-+ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
-+
-+ 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>
-+#include <endian.h>
-+#include <sys/asm.h>
-+
-+
-+/* void *memcpy(void *s1, const void *s2, size_t n);
-+
-+ This could probably be optimized further. */
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+# define LDHI ldl /* high part is left in big-endian */
-+# define SDHI sdl /* high part is left in big-endian */
-+# define LDLO ldr /* low part is right in big-endian */
-+# define SDLO sdr /* low part is right in big-endian */
-+#else
-+# define LDHI ldr /* high part is right in little-endian */
-+# define SDHI sdr /* high part is right in little-endian */
-+# define LDLO ldl /* low part is left in little-endian */
-+# define SDLO sdl /* low part is left in little-endian */
-+#endif
-+
-+ENTRY (memcpy)
-+ .set noreorder
-+
-+ slti t0, a2, 16 # Less than 16?
-+ bne t0, zero, L(last16)
-+ move v0, a0 # Setup exit value before too late
-+
-+ xor t0, a1, a0 # Find a0/a1 displacement
-+ andi t0, 0x7
-+ bne t0, zero, L(shift) # Go handle the unaligned case
-+ PTR_SUBU t1, zero, a1
-+ andi t1, 0x7 # a0/a1 are aligned, but are we
-+ beq t1, zero, L(chk8w) # starting in the middle of a word?
-+ PTR_SUBU a2, t1
-+ LDHI t0, 0(a1) # Yes we are... take care of that
-+ PTR_ADDU a1, t1
-+ SDHI t0, 0(a0)
-+ PTR_ADDU a0, t1
-+
-+L(chk8w):
-+ andi t0, a2, 0x3f # 64 or more bytes left?
-+ beq t0, a2, L(chk1w)
-+ PTR_SUBU a3, a2, t0 # Yes
-+ PTR_ADDU a3, a1 # a3 = end address of loop
-+ move a2, t0 # a2 = what will be left after loop
-+L(lop8w):
-+ ld t0, 0(a1) # Loop taking 8 words at a time
-+ ld t1, 8(a1)
-+ ld t2, 16(a1)
-+ ld t3, 24(a1)
-+ ld ta0, 32(a1)
-+ ld ta1, 40(a1)
-+ ld ta2, 48(a1)
-+ ld ta3, 56(a1)
-+ PTR_ADDIU a0, 64
-+ PTR_ADDIU a1, 64
-+ sd t0, -64(a0)
-+ sd t1, -56(a0)
-+ sd t2, -48(a0)
-+ sd t3, -40(a0)
-+ sd ta0, -32(a0)
-+ sd ta1, -24(a0)
-+ sd ta2, -16(a0)
-+ bne a1, a3, L(lop8w)
-+ sd ta3, -8(a0)
-+
-+L(chk1w):
-+ andi t0, a2, 0x7 # 8 or more bytes left?
-+ beq t0, a2, L(last16)
-+ PTR_SUBU a3, a2, t0 # Yes, handle them one dword at a time
-+ PTR_ADDU a3, a1 # a3 again end address
-+ move a2, t0
-+L(lop1w):
-+ ld t0, 0(a1)
-+ PTR_ADDIU a0, 8
-+ PTR_ADDIU a1, 8
-+ bne a1, a3, L(lop1w)
-+ sd t0, -8(a0)
-+
-+L(last16):
-+ blez a2, L(lst16e) # Handle last 16 bytes, one at a time
-+ PTR_ADDU a3, a2, a1
-+L(lst16l):
-+ lb t0, 0(a1)
-+ PTR_ADDIU a0, 1
-+ PTR_ADDIU a1, 1
-+ bne a1, a3, L(lst16l)
-+ sb t0, -1(a0)
-+L(lst16e):
-+ jr ra # Bye, bye
-+ nop
-+
-+L(shift):
-+ PTR_SUBU a3, zero, a0 # Src and Dest unaligned
-+ andi a3, 0x7 # (unoptimized case...)
-+ beq a3, zero, L(shft1)
-+ PTR_SUBU a2, a3 # a2 = bytes left
-+ LDHI t0, 0(a1) # Take care of first odd part
-+ LDLO t0, 7(a1)
-+ PTR_ADDU a1, a3
-+ SDHI t0, 0(a0)
-+ PTR_ADDU a0, a3
-+L(shft1):
-+ andi t0, a2, 0x7
-+ PTR_SUBU a3, a2, t0
-+ PTR_ADDU a3, a1
-+L(shfth):
-+ LDHI t1, 0(a1) # Limp through, dword by dword
-+ LDLO t1, 7(a1)
-+ PTR_ADDIU a0, 8
-+ PTR_ADDIU a1, 8
-+ bne a1, a3, L(shfth)
-+ sd t1, -8(a0)
-+ b L(last16) # Handle anything which may be left
-+ move a2, t0
-+
-+ .set reorder
-+END (memcpy)
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/mips/mips64/memset.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -0,0 +1,92 @@
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-+ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
-+
-+ 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>
-+#include <endian.h>
-+#include <sys/asm.h>
-+
-+
-+/* void *memset(void *s, int c, size_t n);
-+
-+ This could probably be optimized further. */
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+# define SDHI sdl /* high part is left in big-endian */
-+#else
-+# define SDHI sdr /* high part is right in little-endian */
-+#endif
-+
-+ENTRY (memset)
-+ .set noreorder
-+
-+ slti ta1, a2, 16 # Less than 16?
-+ bne ta1, zero, L(last16)
-+ move v0, a0 # Setup exit value before too late
-+
-+ beq a1, zero, L(ueven) # If zero pattern, no need to extend
-+ andi a1, 0xff # Avoid problems with bogus arguments
-+ dsll ta0, a1, 8
-+ or a1, ta0
-+ dsll ta0, a1, 16
-+ or a1, ta0 # a1 is now pattern in full word
-+ dsll ta0, a1, 32
-+ or a1, ta0 # a1 is now pattern in double word
-+
-+L(ueven):
-+ PTR_SUBU ta0, zero, a0 # Unaligned address?
-+ andi ta0, 0x7
-+ beq ta0, zero, L(chkw)
-+ PTR_SUBU a2, ta0
-+ SDHI a1, 0(a0) # Yes, handle first unaligned part
-+ PTR_ADDU a0, ta0 # Now both a0 and a2 are updated
-+
-+L(chkw):
-+ andi ta0, a2, 0xf # Enough left for one loop iteration?
-+ beq ta0, a2, L(chkl)
-+ PTR_SUBU a3, a2, ta0
-+ PTR_ADDU a3, a0 # a3 is last loop address +1
-+ move a2, ta0 # a2 is now # of bytes left after loop
-+L(loopw):
-+ PTR_ADDIU a0, 16 # Handle 2 dwords pr. iteration
-+ sd a1, -16(a0)
-+ bne a0, a3, L(loopw)
-+ sd a1, -8(a0)
-+
-+L(chkl):
-+ andi ta0, a2, 0x8 # Check if there is at least a double
-+ beq ta0, zero, L(last16) # word remaining after the loop
-+ PTR_SUBU a2, ta0
-+ sd a1, 0(a0) # Yes...
-+ PTR_ADDIU a0, 8
-+
-+L(last16):
-+ blez a2, L(exit) # Handle last 16 bytes (if cnt>0)
-+ PTR_ADDU a3, a2, a0 # a3 is last address +1
-+L(lst16l):
-+ PTR_ADDIU a0, 1
-+ bne a0, a3, L(lst16l)
-+ sb a1, -1(a0)
-+L(exit):
-+ j ra # Bye, bye
-+ nop
-+
-+ .set reorder
-+END (memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/mips/mips64/mul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/mul_1.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,8 @@
- /* MIPS3 __mpn_mul_1 -- Multiply a limb vector with a single limb and
- * store the product in a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
-+ * Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +23,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +40,10 @@
- .globl __mpn_mul_1
- .ent __mpn_mul_1
- __mpn_mul_1:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +54,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-- move $2,$0 # zero cy2
-+ beq $6,$0,L(LC0)
-+ move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: mflo $10
-+L(Loop): mflo $10
- mfhi $9
- daddiu $5,$5,8
- daddu $10,$10,$2 # add old carry limb to low product limb
-@@ -69,11 +71,11 @@
- sltu $2,$10,$2 # carry from previous addition -> $2
- sd $10,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-- daddu $2,$9,$2 # add high product limb and carry from addition
-+ bne $6,$0,L(Loop)
-+ daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: mflo $10
-+L(LC1): mflo $10
- mfhi $9
- daddu $10,$10,$2
- sltu $2,$10,$2
-@@ -83,7 +85,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: mflo $10
-+L(LC0): mflo $10
- mfhi $9
- daddu $10,$10,$2
- sltu $2,$10,$2
---- glibc-2.3.2/sysdeps/mips/mips64/n32/Implies 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/n32/Implies 2003-09-19 22:37:08.000000000 -0400
-@@ -0,0 +1,4 @@
-+ieee754/ldbl-128
-+mips/mips64
-+mips
-+wordsize-32
---- glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile 2003-04-12 11:39:46.000000000 -0400
-@@ -0,0 +1,6 @@
-+# `long double' is a distinct type we support.
-+long-double-fcts = yes
-+
-+ifeq ($(filter -mabi=n32,$(CC)),)
-+CC += -mabi=n32
-+endif
---- glibc-2.3.2/sysdeps/mips/mips64/n64/Implies 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/n64/Implies 2003-09-19 22:37:08.000000000 -0400
-@@ -0,0 +1,4 @@
-+ieee754/ldbl-128
-+mips/mips64
-+mips
-+wordsize-64
---- glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile 2003-04-12 11:39:46.000000000 -0400
-@@ -0,0 +1,6 @@
-+# `long double' is a distinct type we support.
-+long-double-fcts = yes
-+
-+ifeq ($(filter -mabi=64,$(CC)),)
-+CC += -mabi=64
-+endif
---- glibc-2.3.2/sysdeps/mips/mips64/rshift.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/rshift.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,6 +1,6 @@
- /* MIPS3 __mpn_rshift --
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -21,6 +21,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -37,22 +38,22 @@
- .globl __mpn_rshift
- .ent __mpn_rshift
- __mpn_rshift:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5) # load first limb
- dsubu $13,$0,$7
- daddiu $6,$6,-1
- and $9,$6,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-- dsll $2,$10,$13 # compute function result
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
-+ dsll $2,$10,$13 # compute function result
-
- dsubu $6,$6,$9
-
--.Loop0: ld $3,8($5)
-+L(Loop0): ld $3,8($5)
- daddiu $4,$4,8
- daddiu $5,$5,8
- daddiu $9,$9,-1
-@@ -60,13 +61,13 @@
- dsll $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-- sd $8,-8($4)
-+ bne $9,$0,L(Loop0)
-+ sd $8,-8($4)
-
--.L0: beq $6,$0,.Lend
-- nop
-+L(L0): beq $6,$0,L(Lend)
-+ nop
-
--.Loop: ld $3,8($5)
-+L(Loop): ld $3,8($5)
- daddiu $4,$4,32
- daddiu $6,$6,-4
- dsrl $11,$10,$7
-@@ -92,10 +93,10 @@
-
- daddiu $5,$5,32
- or $8,$14,$9
-- bgtz $6,.Loop
-- sd $8,-8($4)
-+ bgtz $6,L(Loop)
-+ sd $8,-8($4)
-
--.Lend: dsrl $8,$10,$7
-+L(Lend): dsrl $8,$10,$7
- j $31
- sd $8,0($4)
- .end __mpn_rshift
---- glibc-2.3.2/sysdeps/mips/mips64/setjmp.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/setjmp.S 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 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
-@@ -17,6 +17,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* The function __sigsetjmp_aux saves all the registers, but it can't
- reliably access the stack or frame pointers, so we pass them in as
-@@ -26,10 +27,18 @@
- #endif
- ENTRY (__sigsetjmp)
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP
- #endif
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (__sigsetjmp))
- move a2, sp
- move a3, fp
-- dla t9, __sigsetjmp_aux
-+ PTR_LA t9, __sigsetjmp_aux
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-+#endif
-+ RESTORE_GP64
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+ move a4, gp
-+#endif
- jr t9
-+ .end __sigsetjmp
---- glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -25,9 +25,11 @@
- access them in C. */
-
- int
--__sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
-+__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp,
-+ long long gp)
- {
- /* Store the floating point callee-saved registers... */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
- asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
- asm volatile ("s.d $f25, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
- asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
-@@ -36,6 +38,14 @@
- asm volatile ("s.d $f29, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
- asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[6]));
- asm volatile ("s.d $f31, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[7]));
-+#else
-+ asm volatile ("s.d $f20, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
-+ asm volatile ("s.d $f22, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
-+ asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
-+ asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[3]));
-+ asm volatile ("s.d $f28, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[4]));
-+ asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
-+#endif
-
- /* .. and the PC; */
- asm volatile ("sd $31, %0" : : "m" (env[0].__jmpbuf[0].__pc));
-@@ -47,7 +57,7 @@
- env[0].__jmpbuf[0].__fp = fp;
-
- /* .. and the GP; */
-- asm volatile ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
-+ env[0].__jmpbuf[0].__gp = gp;
-
- /* .. and the callee-saved registers; */
- asm volatile ("sd $16, %0" : : "m" (env[0].__jmpbuf[0].__regs[0]));
---- glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h 2000-09-05 04:37:09.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h 2003-03-18 16:46:09.000000000 -0500
-@@ -1,7 +1,7 @@
- #define _FP_W_TYPE_SIZE 64
--#define _FP_W_TYPE unsigned long
--#define _FP_WS_TYPE signed long
--#define _FP_I_TYPE long
-+#define _FP_W_TYPE unsigned long long
-+#define _FP_WS_TYPE signed long long
-+#define _FP_I_TYPE long long
-
- #define _FP_MUL_MEAT_S(R,X,Y) \
- _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y)
---- glibc-2.3.2/sysdeps/mips/mips64/sub_n.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/sub_n.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- * store difference in a third limb vector.
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +39,10 @@
- .globl __mpn_sub_n
- .ent __mpn_sub_n
- __mpn_sub_n:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5)
-@@ -49,12 +50,12 @@
-
- daddiu $7,$7,-1
- and $9,$7,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-- move $2,$0
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
-+ move $2,$0
-
- dsubu $7,$7,$9
-
--.Loop0: daddiu $9,$9,-1
-+L(Loop0): daddiu $9,$9,-1
- ld $12,8($5)
- daddu $11,$11,$2
- ld $13,8($6)
-@@ -68,13 +69,13 @@
- daddiu $6,$6,8
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-- daddiu $4,$4,8
-+ bne $9,$0,L(Loop0)
-+ daddiu $4,$4,8
-
--.L0: beq $7,$0,.Lend
-- nop
-+L(L0): beq $7,$0,L(Lend)
-+ nop
-
--.Loop: daddiu $7,$7,-4
-+L(Loop): daddiu $7,$7,-4
-
- ld $12,8($5)
- daddu $11,$11,$2
-@@ -115,10 +116,10 @@
- daddiu $5,$5,32
- daddiu $6,$6,32
-
-- bne $7,$0,.Loop
-- daddiu $4,$4,32
-+ bne $7,$0,L(Loop)
-+ daddiu $4,$4,32
-
--.Lend: daddu $11,$11,$2
-+L(Lend): daddu $11,$11,$2
- sltu $8,$11,$2
- dsubu $11,$10,$11
- sltu $2,$10,$11
---- glibc-2.3.2/sysdeps/mips/mips64/submul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mips64/submul_1.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,8 @@
- /* MIPS3 __mpn_submul_1 -- Multiply a limb vector with a single limb and
- * subtract the product from a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
-+ * Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +23,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +40,10 @@
- .globl __mpn_submul_1
- .ent __mpn_submul_1
- __mpn_submul_1:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +54,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-- move $2,$0 # zero cy2
-+ beq $6,$0,L(LC0)
-+ move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: ld $10,0($4)
-+L(Loop): ld $10,0($4)
- mflo $3
- mfhi $9
- daddiu $5,$5,8
-@@ -73,11 +75,11 @@
- daddu $2,$2,$10
- sd $3,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-- daddu $2,$9,$2 # add high product limb and carry from addition
-+ bne $6,$0,L(Loop)
-+ daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: ld $10,0($4)
-+L(LC1): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-@@ -91,7 +93,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: ld $10,0($4)
-+L(LC0): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
---- glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h 1997-11-25 22:53:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,8 +0,0 @@
--/* The MIPS architecture has selectable endianness.
-- This file is for a machine using little-endian mode. */
--
--#ifndef _ENDIAN_H
--# error "Never use <bits/endian.h> directly; include <endian.h> instead."
--#endif
--
--#define __BYTE_ORDER __LITTLE_ENDIAN
---- glibc-2.3.2/sysdeps/mips/mul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/mul_1.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_mul_1 -- Multiply a limb vector with a single limb and
- store the product in a second limb vector.
-
--Copyright (C) 1995, 1998, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: mflo $10
-+L(Loop): mflo $10
- mfhi $9
- addiu $5,$5,4
- addu $10,$10,$2 /* add old carry limb to low product limb */
-@@ -63,11 +63,11 @@
- sltu $2,$10,$2 /* carry from previous addition -> $2 */
- sw $10,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: mflo $10
-+L(LC1): mflo $10
- mfhi $9
- addu $10,$10,$2
- sltu $2,$10,$2
-@@ -77,7 +77,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: mflo $10
-+L(LC0): mflo $10
- mfhi $9
- addu $10,$10,$2
- sltu $2,$10,$2
---- glibc-2.3.2/sysdeps/mips/rshift.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/rshift.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,6 +1,6 @@
- /* MIPS2 __mpn_rshift --
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -41,12 +41,12 @@
- subu $13,$0,$7
- addiu $6,$6,-1
- and $9,$6,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop*/
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop*/
- sll $2,$10,$13 /* compute function result */
-
- subu $6,$6,$9
-
--.Loop0: lw $3,4($5)
-+L(Loop0): lw $3,4($5)
- addiu $4,$4,4
- addiu $5,$5,4
- addiu $9,$9,-1
-@@ -54,13 +54,13 @@
- sll $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- sw $8,-4($4)
-
--.L0: beq $6,$0,.Lend
-+L(L0): beq $6,$0,L(Lend)
- nop
-
--.Loop: lw $3,4($5)
-+L(Loop): lw $3,4($5)
- addiu $4,$4,16
- addiu $6,$6,-4
- srl $11,$10,$7
-@@ -86,10 +86,10 @@
-
- addiu $5,$5,16
- or $8,$14,$9
-- bgtz $6,.Loop
-+ bgtz $6,L(Loop)
- sw $8,-4($4)
-
--.Lend: srl $8,$10,$7
-+L(Lend): srl $8,$10,$7
- j $31
- sw $8,0($4)
- END (__mpn_rshift)
---- glibc-2.3.2/sysdeps/mips/setjmp_aux.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/setjmp_aux.c 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
---- glibc-2.3.2/sysdeps/mips/sgidefs.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/sgidefs.h 2003-04-12 11:39:45.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -28,6 +28,8 @@
- #define _MIPS_ISA_MIPS3 3
- #define _MIPS_ISA_MIPS4 4
- #define _MIPS_ISA_MIPS5 5
-+#define _MIPS_ISA_MIPS32 6
-+#define _MIPS_ISA_MIPS64 7
-
- /*
- * Subprogram calling convention
---- glibc-2.3.2/sysdeps/mips/sub_n.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/sub_n.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS2 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- store difference in a third limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -43,12 +43,12 @@
-
- addiu $7,$7,-1
- and $9,$7,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-- move $2,$0
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
-+ move $2,$0
-
- subu $7,$7,$9
-
--.Loop0: addiu $9,$9,-1
-+L(Loop0): addiu $9,$9,-1
- lw $12,4($5)
- addu $11,$11,$2
- lw $13,4($6)
-@@ -62,13 +62,13 @@
- addiu $6,$6,4
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-- addiu $4,$4,4
-+ bne $9,$0,L(Loop0)
-+ addiu $4,$4,4
-
--.L0: beq $7,$0,.Lend
-- nop
-+L(L0): beq $7,$0,L(Lend)
-+ nop
-
--.Loop: addiu $7,$7,-4
-+L(Loop): addiu $7,$7,-4
-
- lw $12,4($5)
- addu $11,$11,$2
-@@ -109,10 +109,10 @@
- addiu $5,$5,16
- addiu $6,$6,16
-
-- bne $7,$0,.Loop
-- addiu $4,$4,16
-+ bne $7,$0,L(Loop)
-+ addiu $4,$4,16
-
--.Lend: addu $11,$11,$2
-+L(Lend): addu $11,$11,$2
- sltu $8,$11,$2
- subu $11,$10,$11
- sltu $2,$10,$11
---- glibc-2.3.2/sysdeps/mips/submul_1.S 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/submul_1.S 2003-03-15 15:02:17.000000000 -0500
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_submul_1 -- Multiply a limb vector with a single limb and
- subtract the product from a second limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: lw $10,0($4)
-+L(Loop): lw $10,0($4)
- mflo $3
- mfhi $9
- addiu $5,$5,4
-@@ -67,11 +67,11 @@
- addu $2,$2,$10
- sw $3,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: lw $10,0($4)
-+L(LC1): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-@@ -85,7 +85,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: lw $10,0($4)
-+L(LC0): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
---- glibc-2.3.2/sysdeps/mips/sys/asm.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/sys/asm.h 2003-04-12 11:39:46.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -23,12 +23,12 @@
- #include <sgidefs.h>
-
- #ifndef CAT
--#ifdef __STDC__
--#define __CAT(str1,str2) str1##str2
--#else
--#define __CAT(str1,str2) str1/**/str2
--#endif
--#define CAT(str1,str2) __CAT(str1,str2)
-+# ifdef __STDC__
-+# define __CAT(str1,str2) str1##str2
-+# else
-+# define __CAT(str1,str2) str1/**/str2
-+# endif
-+# define CAT(str1,str2) __CAT(str1,str2)
- #endif
-
- /*
-@@ -37,26 +37,113 @@
- * 64 bit address space isn't used yet, so we may use the R3000 32 bit
- * defines for now.
- */
--#define PTR .word
--#define PTRSIZE 4
--#define PTRLOG 2
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define PTR .word
-+# define PTRSIZE 4
-+# define PTRLOG 2
-+#elif (_MIPS_SIM == _MIPS_SIM_ABI64)
-+# define PTR .dword
-+# define PTRSIZE 8
-+# define PTRLOG 3
-+#endif
-
- /*
- * PIC specific declarations
- */
--#ifdef __PIC__
--#define CPRESTORE(register) \
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32)
-+# ifdef __PIC__
-+# define CPRESTORE(register) \
- .cprestore register
--#define CPADD(register) \
-+# define CPLOAD(register) \
-+ .cpload register
-+# else
-+# define CPRESTORE(register)
-+# define CPLOAD(register)
-+# endif
-+
-+# define CPADD(register) \
- .cpadd register
--#define CPLOAD(register) \
-- .cpload register
--#else
--#define CPRESTORE(register)
--#define CPADD(register)
--#define CPLOAD(register)
-+
-+/*
-+ * Set gp when at 1st instruction
-+ */
-+# define SETUP_GP \
-+ .set noreorder; \
-+ .cpload $25; \
-+ .set reorder
-+/* Set gp when not at 1st instruction */
-+# define SETUP_GPX(r) \
-+ .set noreorder; \
-+ move r, $31; /* Save old ra. */ \
-+ bal 10f; /* Find addr of cpload. */ \
-+ nop; \
-+10: \
-+ .cpload $31; \
-+ move $31, r; \
-+ .set reorder
-+# define SETUP_GPX_L(r, l) \
-+ .set noreorder; \
-+ move r, $31; /* Save old ra. */ \
-+ bal l; /* Find addr of cpload. */ \
-+ nop; \
-+l: \
-+ .cpload $31; \
-+ move $31, r; \
-+ .set reorder
-+# define SAVE_GP(x) \
-+ .cprestore x /* Save gp trigger t9/jalr conversion. */
-+# define SETUP_GP64(a, b)
-+# define SETUP_GPX64(a, b)
-+# define SETUP_GPX64_L(cp_reg, ra_save, l)
-+# define RESTORE_GP64
-+# define USE_ALT_CP(a)
-+#else /* (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32) */
-+/*
-+ * For callee-saved gp calling convention:
-+ */
-+# define SETUP_GP
-+# define SETUP_GPX(r)
-+# define SETUP_GPX_L(r, l)
-+# define SAVE_GP(x)
-+
-+# define SETUP_GP64(gpoffset, proc) \
-+ .cpsetup $25, gpoffset, proc
-+# define SETUP_GPX64(cp_reg, ra_save) \
-+ move ra_save, $31; /* Save old ra. */ \
-+ .set noreorder; \
-+ bal 10f; /* Find addr of .cpsetup. */ \
-+ nop; \
-+10: \
-+ .set reorder; \
-+ .cpsetup $31, cp_reg, 10b; \
-+ move $31, ra_save
-+# define SETUP_GPX64_L(cp_reg, ra_save, l) \
-+ move ra_save, $31; /* Save old ra. */ \
-+ .set noreorder; \
-+ bal l; /* Find addr of .cpsetup. */ \
-+ nop; \
-+l: \
-+ .set reorder; \
-+ .cpsetup $31, cp_reg, l; \
-+ move $31, ra_save
-+# define RESTORE_GP64 \
-+ .cpreturn
-+/* Use alternate register for context pointer. */
-+# define USE_ALT_CP(reg) \
-+ .cplocal reg
-+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+
-+/*
-+ * Stack Frame Definitions
-+ */
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32)
-+# define NARGSAVE 4 /* Space for 4 argument registers must be allocated. */
-+#endif
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32)
-+# define NARGSAVE 0 /* No caller responsibilities. */
- #endif
-
-+
- /*
- * LEAF - declare leaf routine
- */
-@@ -80,9 +167,11 @@
- /*
- * END - mark end of function
- */
--#define END(function) \
-+#ifndef END
-+# define END(function) \
- .end function; \
- .size function,.-function
-+#endif
-
- /*
- * EXPORT - export definition of symbol
-@@ -141,237 +230,244 @@
- * MIPS IV implementations are free to treat this as a nop. The R5000
- * is one of them. So we should have an option not to use this instruction.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define PREF(hint,addr) \
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define PREF(hint,addr) \
- pref hint,addr
--#define PREFX(hint,addr) \
-+# define PREFX(hint,addr) \
- prefx hint,addr
- #else
--#define PREF
--#define PREFX
-+# define PREF
-+# define PREFX
- #endif
-
- /*
- * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
- */
- #if _MIPS_ISA == _MIPS_ISA_MIPS1
--#define MOVN(rd,rs,rt) \
-+# define MOVN(rd,rs,rt) \
- .set push; \
- .set reorder; \
-- beqz rt,9f; \
-- move rd,rs; \
-+ beqz rt,9f; \
-+ move rd,rs; \
- .set pop; \
- 9:
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- .set push; \
- .set reorder; \
-- bnez rt,9f; \
-- move rd,rt; \
-+ bnez rt,9f; \
-+ move rd,rt; \
- .set pop; \
- 9:
- #endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
- #if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
--#define MOVN(rd,rs,rt) \
-+# define MOVN(rd,rs,rt) \
- .set push; \
- .set noreorder; \
-- bnezl rt,9f; \
-- move rd,rs; \
-+ bnezl rt,9f; \
-+ move rd,rs; \
- .set pop; \
- 9:
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- .set push; \
- .set noreorder; \
-- beqzl rt,9f; \
-- movz rd,rs; \
-+ beqzl rt,9f; \
-+ movz rd,rs; \
- .set pop; \
- 9:
- #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define MOVN(rd,rs,rt) \
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define MOVN(rd,rs,rt) \
- movn rd,rs,rt
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- movz rd,rs,rt
- #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) */
-
- /*
- * Stack alignment
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define ALSZ 7
--#define ALMASK ~7
--#endif
--#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define ALSZ 15
--#define ALMASK ~15
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define ALSZ 15
-+# define ALMASK ~15
-+#else
-+# define ALSZ 7
-+# define ALMASK ~7
- #endif
-
- /*
- * Size of a register
- */
--#ifdef __mips64
--#define SZREG 8
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define SZREG 8
- #else
--#define SZREG 4
-+# define SZREG 4
- #endif
-
- /*
- * Use the following macros in assemblercode to load/store registers,
- * pointers etc.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define REG_S sw
--#define REG_L lw
--#define PTR_SUBU subu
--#define PTR_ADDU addu
--#endif
--#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define REG_S sd
--#define REG_L ld
--/* We still live in a 32 bit address space ... */
--#define PTR_SUBU subu
--#define PTR_ADDU addu
-+#if (SZREG == 4)
-+# define REG_S sw
-+# define REG_L lw
-+#else
-+# define REG_S sd
-+# define REG_L ld
- #endif
-
- /*
- * How to add/sub/load/store/shift C int variables.
- */
- #if (_MIPS_SZINT == 32)
--#define INT_ADD add
--#define INT_ADDI addi
--#define INT_ADDU addu
--#define INT_ADDIU addiu
--#define INT_SUB add
--#define INT_SUBI subi
--#define INT_SUBU subu
--#define INT_SUBIU subu
--#define INT_L lw
--#define INT_S sw
--#define LONG_SLL sll
--#define LONG_SLLV sllv
--#define LONG_SRL srl
--#define LONG_SRLV srlv
--#define LONG_SRA sra
--#define LONG_SRAV srav
-+# define INT_ADD add
-+# define INT_ADDI addi
-+# define INT_ADDU addu
-+# define INT_ADDIU addiu
-+# define INT_SUB add
-+# define INT_SUBI subi
-+# define INT_SUBU subu
-+# define INT_SUBIU subu
-+# define INT_L lw
-+# define INT_S sw
- #endif
-
- #if (_MIPS_SZINT == 64)
--#define INT_ADD dadd
--#define INT_ADDI daddi
--#define INT_ADDU daddu
--#define INT_ADDIU daddiu
--#define INT_SUB dadd
--#define INT_SUBI dsubi
--#define INT_SUBU dsubu
--#define INT_SUBIU dsubu
--#define INT_L ld
--#define INT_S sd
--#define LONG_SLL dsll
--#define LONG_SLLV dsllv
--#define LONG_SRL dsrl
--#define LONG_SRLV dsrlv
--#define LONG_SRA dsra
--#define LONG_SRAV dsrav
-+# define INT_ADD dadd
-+# define INT_ADDI daddi
-+# define INT_ADDU daddu
-+# define INT_ADDIU daddiu
-+# define INT_SUB dadd
-+# define INT_SUBI dsubi
-+# define INT_SUBU dsubu
-+# define INT_SUBIU dsubu
-+# define INT_L ld
-+# define INT_S sd
- #endif
-
- /*
- * How to add/sub/load/store/shift C long variables.
- */
- #if (_MIPS_SZLONG == 32)
--#define LONG_ADD add
--#define LONG_ADDI addi
--#define LONG_ADDU addu
--#define LONG_ADDIU addiu
--#define LONG_SUB add
--#define LONG_SUBI subi
--#define LONG_SUBU subu
--#define LONG_SUBIU subu
--#define LONG_L lw
--#define LONG_S sw
--#define LONG_SLL sll
--#define LONG_SLLV sllv
--#define LONG_SRL srl
--#define LONG_SRLV srlv
--#define LONG_SRA sra
--#define LONG_SRAV srav
-+# define LONG_ADD add
-+# define LONG_ADDI addi
-+# define LONG_ADDU addu
-+# define LONG_ADDIU addiu
-+# define LONG_SUB add
-+# define LONG_SUBI subi
-+# define LONG_SUBU subu
-+# define LONG_SUBIU subu
-+# define LONG_L lw
-+# define LONG_S sw
-+# define LONG_SLL sll
-+# define LONG_SLLV sllv
-+# define LONG_SRL srl
-+# define LONG_SRLV srlv
-+# define LONG_SRA sra
-+# define LONG_SRAV srav
- #endif
-
- #if (_MIPS_SZLONG == 64)
--#define LONG_ADD dadd
--#define LONG_ADDI daddi
--#define LONG_ADDU daddu
--#define LONG_ADDIU daddiu
--#define LONG_SUB dadd
--#define LONG_SUBI dsubi
--#define LONG_SUBU dsubu
--#define LONG_SUBIU dsubu
--#define LONG_L ld
--#define LONG_S sd
--#define LONG_SLL dsll
--#define LONG_SLLV dsllv
--#define LONG_SRL dsrl
--#define LONG_SRLV dsrlv
--#define LONG_SRA dsra
--#define LONG_SRAV dsrav
-+# define LONG_ADD dadd
-+# define LONG_ADDI daddi
-+# define LONG_ADDU daddu
-+# define LONG_ADDIU daddiu
-+# define LONG_SUB dadd
-+# define LONG_SUBI dsubi
-+# define LONG_SUBU dsubu
-+# define LONG_SUBIU dsubu
-+# define LONG_L ld
-+# define LONG_S sd
-+# define LONG_SLL dsll
-+# define LONG_SLLV dsllv
-+# define LONG_SRL dsrl
-+# define LONG_SRLV dsrlv
-+# define LONG_SRA dsra
-+# define LONG_SRAV dsrav
- #endif
-
- /*
- * How to add/sub/load/store/shift pointers.
- */
--#if (_MIPS_SZLONG == 32)
--#define PTR_ADD add
--#define PTR_ADDI addi
--#define PTR_ADDU addu
--#define PTR_ADDIU addiu
--#define PTR_SUB add
--#define PTR_SUBI subi
--#define PTR_SUBU subu
--#define PTR_SUBIU subu
--#define PTR_L lw
--#define PTR_S sw
--#define PTR_SLL sll
--#define PTR_SLLV sllv
--#define PTR_SRL srl
--#define PTR_SRLV srlv
--#define PTR_SRA sra
--#define PTR_SRAV srav
--
--#define PTR_SCALESHIFT 2
--#endif
--
--#if (_MIPS_SZLONG == 64)
--#define PTR_ADD dadd
--#define PTR_ADDI daddi
--#define PTR_ADDU daddu
--#define PTR_ADDIU daddiu
--#define PTR_SUB dadd
--#define PTR_SUBI dsubi
--#define PTR_SUBU dsubu
--#define PTR_SUBIU dsubu
--#define PTR_L ld
--#define PTR_S sd
--#define PTR_SLL dsll
--#define PTR_SLLV dsllv
--#define PTR_SRL dsrl
--#define PTR_SRLV dsrlv
--#define PTR_SRA dsra
--#define PTR_SRAV dsrav
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32)
-+# define PTR_ADD add
-+# define PTR_ADDI addi
-+# define PTR_ADDU addu
-+# define PTR_ADDIU addiu
-+# define PTR_SUB add
-+# define PTR_SUBI subi
-+# define PTR_SUBU subu
-+# define PTR_SUBIU subu
-+# define PTR_L lw
-+# define PTR_LA la
-+# define PTR_S sw
-+# define PTR_SLL sll
-+# define PTR_SLLV sllv
-+# define PTR_SRL srl
-+# define PTR_SRLV srlv
-+# define PTR_SRA sra
-+# define PTR_SRAV srav
-+
-+# define PTR_SCALESHIFT 2
-+#endif
-+
-+#if _MIPS_SIM == _MIPS_SIM_NABI32
-+# define PTR_ADD add
-+# define PTR_ADDI addi
-+# define PTR_ADDU add /* no u */
-+# define PTR_ADDIU addi /* no u */
-+# define PTR_SUB add
-+# define PTR_SUBI subi
-+# define PTR_SUBU sub /* no u */
-+# define PTR_SUBIU sub /* no u */
-+# define PTR_L lw
-+# define PTR_LA la
-+# define PTR_S sw
-+# define PTR_SLL sll
-+# define PTR_SLLV sllv
-+# define PTR_SRL srl
-+# define PTR_SRLV srlv
-+# define PTR_SRA sra
-+# define PTR_SRAV srav
-+
-+# define PTR_SCALESHIFT 2
-+#endif
-+
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 64 /* o64??? */) \
-+ || _MIPS_SIM == _MIPS_SIM_ABI64
-+# define PTR_ADD dadd
-+# define PTR_ADDI daddi
-+# define PTR_ADDU daddu
-+# define PTR_ADDIU daddiu
-+# define PTR_SUB dadd
-+# define PTR_SUBI dsubi
-+# define PTR_SUBU dsubu
-+# define PTR_SUBIU dsubu
-+# define PTR_L ld
-+# define PTR_LA dla
-+# define PTR_S sd
-+# define PTR_SLL dsll
-+# define PTR_SLLV dsllv
-+# define PTR_SRL dsrl
-+# define PTR_SRLV dsrlv
-+# define PTR_SRA dsra
-+# define PTR_SRAV dsrav
-
--#define PTR_SCALESHIFT 3
-+# define PTR_SCALESHIFT 3
- #endif
-
- /*
- * Some cp0 registers were extended to 64bit for MIPS III.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define MFC0 mfc0
--#define MTC0 mtc0
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32)
-+# define MFC0 mfc0
-+# define MTC0 mtc0
- #endif
- #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define MFC0 dmfc0
--#define MTC0 dmtc0
-+ (_MIPS_ISA == _MIPS_ISA_MIPS5) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define MFC0 dmfc0
-+# define MTC0 dmtc0
- #endif
-
- #endif /* sys/asm.h */
---- glibc-2.3.2/sysdeps/mips/sys/regdef.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/sys/regdef.h 2003-04-12 11:39:46.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -31,6 +31,20 @@
- #define a1 $5
- #define a2 $6
- #define a3 $7
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+#define a4 $8
-+#define a5 $9
-+#define a6 $10
-+#define a7 $11
-+#define t0 $12
-+#define t1 $13
-+#define t2 $14
-+#define t3 $15
-+#define ta0 a4
-+#define ta1 a5
-+#define ta2 a6
-+#define ta3 a7
-+#else /* if _MIPS_SIM == _MIPS_SIM_ABI32 */
- #define t0 $8 /* caller saved */
- #define t1 $9
- #define t2 $10
-@@ -39,6 +53,11 @@
- #define t5 $13
- #define t6 $14
- #define t7 $15
-+#define ta0 t4
-+#define ta1 t5
-+#define ta2 t6
-+#define ta3 t7
-+#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
- #define s0 $16 /* callee saved */
- #define s1 $17
- #define s2 $18
---- glibc-2.3.2/sysdeps/mips/sys/ucontext.h 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mips/sys/ucontext.h 2003-03-18 16:46:09.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 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
-@@ -25,7 +25,11 @@
- #include <signal.h>
-
- /* Type for general register. */
--typedef unsigned int greg_t;
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+typedef __uint32_t greg_t;
-+#else
-+typedef __uint64_t greg_t;
-+#endif
-
- /* Number of general registers. */
- #define NGREG 36
-@@ -115,9 +119,15 @@
- {
- union
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- double fp_dregs[16];
- float fp_fregs[32];
- unsigned int fp_regs[32];
-+#else
-+ double fp_dregs[32];
-+ /* float fp_fregs[32]; */
-+ __uint64_t fp_regs[32];
-+#endif
- } fp_r;
- unsigned int fp_csr;
- unsigned int fp_pad;
-@@ -133,12 +143,16 @@
- /* Userlevel context. */
- typedef struct ucontext
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- unsigned long int uc_flags;
-+#else
-+ __uint64_t uc_flags;
-+#endif
- struct ucontext *uc_link;
- __sigset_t uc_sigmask;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
-- long int uc_filler[48];
-+ int uc_filler[48];
- } ucontext_t;
-
- #endif /* sys/ucontext.h */
---- glibc-2.3.2/sysdeps/posix/clock_getres.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/clock_getres.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001, 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
-@@ -24,7 +24,7 @@
- #include <libc-internal.h>
-
-
--#if HP_TIMING_AVAIL
-+#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
- /* Clock frequency of the processor. */
- static long int nsec;
- #endif
-@@ -38,26 +38,45 @@
-
- switch (clock_id)
- {
-- case CLOCK_REALTIME:
-- {
-- long int clk_tck = sysconf (_SC_CLK_TCK);
-+#define HANDLE_REALTIME \
-+ do { \
-+ long int clk_tck = sysconf (_SC_CLK_TCK); \
-+ \
-+ if (__builtin_expect (clk_tck != -1, 1)) \
-+ { \
-+ /* This implementation assumes that the realtime clock has a \
-+ resolution higher than 1 second. This is the case for any \
-+ reasonable implementation. */ \
-+ res->tv_sec = 0; \
-+ res->tv_nsec = 1000000000 / clk_tck; \
-+ \
-+ retval = 0; \
-+ } \
-+ } while (0)
-
-- if (__builtin_expect (clk_tck != -1, 1))
-- {
-- /* This implementation assumes that the realtime clock has a
-- resolution higher than 1 second. This is the case for any
-- reasonable implementation. */
-- res->tv_sec = 0;
-- res->tv_nsec = 1000000000 / clk_tck;
-+#ifdef SYSDEP_GETRES
-+ SYSDEP_GETRES;
-+#endif
-
-- retval = 0;
-- }
-- }
-+#ifndef HANDLED_REALTIME
-+ case CLOCK_REALTIME:
-+ HANDLE_REALTIME;
- break;
-+#endif /* handled REALTIME */
-
-+ default:
- #if HP_TIMING_AVAIL
-+ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
-+ != CLOCK_THREAD_CPUTIME_ID)
-+#endif
-+ {
-+ __set_errno (EINVAL);
-+ break;
-+ }
-+
-+#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
-+ /* FALLTHROUGH. */
- case CLOCK_PROCESS_CPUTIME_ID:
-- case CLOCK_THREAD_CPUTIME_ID:
- {
- if (__builtin_expect (nsec == 0, 0))
- {
-@@ -84,10 +103,6 @@
- }
- break;
- #endif
--
-- default:
-- __set_errno (EINVAL);
-- break;
- }
-
- return retval;
---- glibc-2.3.2/sysdeps/posix/fpathconf.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/fpathconf.c 2003-03-15 15:02:17.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,2000,2001,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
-@@ -229,6 +230,10 @@
- /* In general there are no limits. If a system has one it should
- overwrite this case. */
- return -1;
-+
-+ case _PC_2_SYMLINKS:
-+ /* Unix systems generally have symlinks. */
-+ return 1;
- }
- }
-
---- glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2002-12-16 20:13:35.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2003-08-21 08:37:09.000000000 -0400
-@@ -37,8 +37,10 @@
-
- #include <assert.h>
- #include <errno.h>
-+#include <ifaddrs.h>
- #include <netdb.h>
- #include <resolv.h>
-+#include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -111,12 +113,17 @@
- const struct addrinfo *req, struct addrinfo **pai);
- };
-
--#if PF_UNSPEC == 0
--static const struct addrinfo default_hints;
--#else
- static const struct addrinfo default_hints =
-- { 0, PF_UNSPEC, 0, 0, 0, NULL, NULL, NULL };
--#endif
-+ {
-+ .ai_flags = AI_DEFAULT,
-+ .ai_family = PF_UNSPEC,
-+ .ai_socktype = 0,
-+ .ai_protocol = 0,
-+ .ai_addrlen = 0,
-+ .ai_addr = NULL,
-+ .ai_canonname = NULL,
-+ .ai_next = NULL
-+ };
-
-
- #if 0
-@@ -265,93 +272,137 @@
- return 0;
- }
-
--#define gethosts(_family, _type) \
-- { \
-- int i, herrno; \
-- size_t tmpbuflen; \
-- struct hostent th; \
-- char *tmpbuf = NULL; \
-- tmpbuflen = 512; \
-- no_data = 0; \
-- do { \
-- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
-- rc = __gethostbyname2_r (name, _family, &th, tmpbuf, \
-- tmpbuflen, &h, &herrno); \
-- } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
-- if (rc != 0) \
-- { \
-- if (herrno == NETDB_INTERNAL) \
-- { \
-- __set_h_errno (herrno); \
-- return -EAI_SYSTEM; \
-- } \
-- if (herrno == TRY_AGAIN) \
-- no_data = EAI_AGAIN; \
-- else \
-- no_data = herrno == NO_DATA; \
-- } \
-- else if (h != NULL) \
-- { \
-- for (i = 0; h->h_addr_list[i]; i++) \
-- { \
-- if (*pat == NULL) { \
-- *pat = __alloca (sizeof (struct gaih_addrtuple)); \
-- (*pat)->scopeid = 0; \
-- } \
-- (*pat)->next = NULL; \
-- (*pat)->family = _family; \
-- memcpy ((*pat)->addr, h->h_addr_list[i], \
-- sizeof(_type)); \
-- pat = &((*pat)->next); \
-- } \
-- } \
-+#define gethosts(_family, _type) \
-+ { \
-+ int i, herrno; \
-+ size_t tmpbuflen; \
-+ struct hostent th; \
-+ char *tmpbuf = NULL; \
-+ tmpbuflen = 512; \
-+ no_data = 0; \
-+ do { \
-+ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
-+ rc = __gethostbyname2_r (name, _family, &th, tmpbuf, \
-+ tmpbuflen, &h, &herrno); \
-+ } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
-+ if (rc != 0) \
-+ { \
-+ if (herrno == NETDB_INTERNAL) \
-+ { \
-+ __set_h_errno (herrno); \
-+ return -EAI_SYSTEM; \
-+ } \
-+ if (herrno == TRY_AGAIN) \
-+ no_data = EAI_AGAIN; \
-+ else \
-+ no_data = herrno == NO_DATA; \
-+ } \
-+ else if (h != NULL) \
-+ { \
-+ for (i = 0; h->h_addr_list[i]; i++) \
-+ { \
-+ if (*pat == NULL) { \
-+ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
-+ (*pat)->scopeid = 0; \
-+ } \
-+ (*pat)->next = NULL; \
-+ (*pat)->family = _family; \
-+ memcpy ((*pat)->addr, h->h_addr_list[i], \
-+ sizeof(_type)); \
-+ pat = &((*pat)->next); \
-+ } \
-+ if (_family == AF_INET6) \
-+ got_ipv6 = true; \
-+ } \
-+ else if (_family == AF_INET6 && (req->ai_flags & AI_V4MAPPED)) \
-+ { \
-+ /* We have to add V4 mapped addresses. Maybe we discard them \
-+ later again but we get them anyhow for now. */ \
-+ while ((rc = __gethostbyname2_r (name, AF_INET6, &th, tmpbuf, \
-+ tmpbuflen, &h, &herrno)) == ERANGE \
-+ && herrno == NETDB_INTERNAL) \
-+ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
-+ \
-+ if (rc != 0) \
-+ { \
-+ if (herrno == NETDB_INTERNAL) \
-+ { \
-+ __set_h_errno (herrno); \
-+ return -EAI_SYSTEM; \
-+ } \
-+ if (herrno == TRY_AGAIN) \
-+ no_data = EAI_AGAIN; \
-+ else \
-+ no_data = herrno == NO_DATA; \
-+ } \
-+ else if (h != NULL) \
-+ { \
-+ for (i = 0; h->h_addr_list[i]; ++i) \
-+ { \
-+ if (*pat == NULL) \
-+ { \
-+ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
-+ (*pat)->scopeid = 0; \
-+ } \
-+ uint32_t *addr = (uint32_t *) (*pat)->addr; \
-+ (*pat)->next = NULL; \
-+ (*pat)->family = _family; \
-+ addr[3] = *(uint32_t *) h->h_addr_list[i]; \
-+ addr[2] = htonl (0xffff); \
-+ addr[1] = 0; \
-+ addr[0] = 0; \
-+ pat = &((*pat)->next); \
-+ } \
-+ } \
-+ } \
- }
-
--#define gethosts2(_family, _type) \
-- { \
-- int i, herrno; \
-- size_t tmpbuflen; \
-- struct hostent th; \
-- char *tmpbuf = NULL; \
-- tmpbuflen = 512; \
-- no_data = 0; \
-- do { \
-- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
-- rc = 0; \
-- status = DL_CALL_FCT (fct, (name, _family, &th, tmpbuf, \
-- tmpbuflen, &rc, &herrno)); \
-- } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
-- if (status == NSS_STATUS_SUCCESS && rc == 0) \
-- h = &th; \
-- else \
-- h = NULL; \
-- if (rc != 0) \
-- { \
-- if (herrno == NETDB_INTERNAL) \
-- { \
-- __set_h_errno (herrno); \
-- return -EAI_SYSTEM; \
-- } \
-- if (herrno == TRY_AGAIN) \
-- no_data = EAI_AGAIN; \
-- else \
-- no_data = herrno == NO_DATA; \
-- } \
-- else if (h != NULL) \
-- { \
-- for (i = 0; h->h_addr_list[i]; i++) \
-- { \
-- if (*pat == NULL) { \
-- *pat = __alloca (sizeof (struct gaih_addrtuple)); \
-- (*pat)->scopeid = 0; \
-- } \
-- (*pat)->next = NULL; \
-- (*pat)->family = _family; \
-- memcpy ((*pat)->addr, h->h_addr_list[i], \
-- sizeof(_type)); \
-- pat = &((*pat)->next); \
-- } \
-- } \
-+
-+#define gethosts2(_family, _type) \
-+ { \
-+ int i, herrno; \
-+ size_t tmpbuflen; \
-+ struct hostent th; \
-+ char *tmpbuf = NULL; \
-+ tmpbuflen = 512; \
-+ no_data = 0; \
-+ do { \
-+ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
-+ rc = 0; \
-+ status = DL_CALL_FCT (fct, (name, _family, &th, tmpbuf, \
-+ tmpbuflen, &rc, &herrno)); \
-+ } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
-+ if (status == NSS_STATUS_SUCCESS && rc == 0) \
-+ h = &th; \
-+ else \
-+ h = NULL; \
-+ if (rc != 0) \
-+ { \
-+ if (herrno == NETDB_INTERNAL) \
-+ { \
-+ __set_h_errno (herrno); \
-+ return -EAI_SYSTEM; \
-+ } \
-+ if (herrno == TRY_AGAIN) \
-+ no_data = EAI_AGAIN; \
-+ else \
-+ no_data = herrno == NO_DATA; \
-+ } \
-+ else if (h != NULL) \
-+ { \
-+ for (i = 0; h->h_addr_list[i]; i++) \
-+ { \
-+ if (*pat == NULL) { \
-+ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
-+ (*pat)->scopeid = 0; \
-+ } \
-+ (*pat)->next = NULL; \
-+ (*pat)->family = _family; \
-+ memcpy ((*pat)->addr, h->h_addr_list[i], \
-+ sizeof(_type)); \
-+ pat = &((*pat)->next); \
-+ } \
-+ } \
- }
-
- typedef enum nss_status (*nss_gethostbyname2_r)
-@@ -368,6 +419,7 @@
- struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
- struct gaih_addrtuple *at = NULL;
- int rc;
-+ bool got_ipv6 = false;
-
- if (req->ai_protocol || req->ai_socktype)
- {
-@@ -490,6 +542,13 @@
- {
- if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET)
- at->family = AF_INET;
-+ else if (req->ai_flags & AI_V4MAPPED)
-+ {
-+ ((uint32_t *) at->addr)[3] = *(uint32_t *) at->addr;
-+ ((uint32_t *) at->addr)[2] = htonl (0xffff);
-+ ((uint32_t *) at->addr)[1] = 0;
-+ ((uint32_t *) at->addr)[0] = 0;
-+ }
- else
- return -EAI_ADDRFAMILY;
- }
-@@ -507,6 +566,8 @@
- {
- if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6)
- at->family = AF_INET6;
-+ else if (IN6_IS_ADDR_V4MAPPED (at->addr))
-+ *(uint32_t *) at->addr = ((uint32_t *) at->addr)[3];
- else
- return -EAI_ADDRFAMILY;
-
-@@ -610,7 +671,10 @@
- no_inet6_data = no_data;
- }
- else if (req->ai_family == AF_INET)
-- gethosts (AF_INET, struct in_addr);
-+ {
-+ gethosts (AF_INET, struct in_addr);
-+ no_inet6_data = no_data;
-+ }
-
- if (no_data != 0 && no_inet6_data != 0)
- {
-@@ -677,13 +741,11 @@
- int herrno;
- struct hostent th;
- size_t tmpbuflen = 512;
-- char *tmpbuf;
-+ char *tmpbuf = NULL;
-
- do
- {
-- tmpbuflen *= 2;
-- tmpbuf = __alloca (tmpbuflen);
--
-+ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2);
- rc = __gethostbyaddr_r (at2->addr,
- ((at2->family == AF_INET6)
- ? sizeof(struct in6_addr)
-@@ -692,7 +754,7 @@
- &h, &herrno);
-
- }
-- while (rc == errno && herrno == NETDB_INTERNAL);
-+ while (rc == ERANGE && herrno == NETDB_INTERNAL);
-
- if (rc != 0 && herrno == NETDB_INTERNAL)
- {
-@@ -749,6 +811,14 @@
- {
- family = AF_INET6;
- socklen = sizeof (struct sockaddr_in6);
-+
-+ /* If we looked up IPv4 mapped address discard them here if
-+ the caller isn't interested in all address and we have
-+ found at least one IPv6 address. */
-+ if (! got_ipv6
-+ && (req->ai_flags & (AI_V4MAPPED|AI_ALL)) == AI_V4MAPPED
-+ && IN6_IS_ADDR_V4MAPPED (at2->addr))
-+ goto ignore;
- }
- else
- {
-@@ -767,7 +837,7 @@
- (*pai)->ai_socktype = st2->socktype;
- (*pai)->ai_protocol = st2->protocol;
- (*pai)->ai_addrlen = socklen;
-- (*pai)->ai_addr = (void *) (*pai) + sizeof(struct addrinfo);
-+ (*pai)->ai_addr = (void *) (*pai) + sizeof (struct addrinfo);
- #if SALEN
- (*pai)->ai_addr->sa_len = socklen;
- #endif /* SALEN */
-@@ -807,6 +877,7 @@
- pai = &((*pai)->ai_next);
- }
-
-+ ignore:
- at2 = at2->next;
- }
- }
-@@ -831,6 +902,7 @@
- struct addrinfo *p = NULL, **end;
- struct gaih *g = gaih, *pg = NULL;
- struct gaih_service gaih_service, *pservice;
-+ struct addrinfo local_hints;
-
- if (name != NULL && name[0] == '*' && name[1] == 0)
- name = NULL;
-@@ -844,12 +916,41 @@
- if (hints == NULL)
- hints = &default_hints;
-
-- if (hints->ai_flags & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST))
-+ if (hints->ai_flags
-+ & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|AI_ADDRCONFIG|AI_V4MAPPED
-+ |AI_ALL))
- return EAI_BADFLAGS;
-
- if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
- return EAI_BADFLAGS;
-
-+ if (hints->ai_flags & AI_ADDRCONFIG)
-+ {
-+ /* Determine whether we have IPv4 or IPv6 interfaces or both.
-+ We cannot cache the results since new interfaces could be
-+ added at any time. */
-+ bool seen_ipv4;
-+ bool seen_ipv6;
-+ __check_pf (&seen_ipv4, &seen_ipv6);
-+
-+ /* Now make a decision on what we return, if anything. */
-+ if (hints->ai_family == PF_UNSPEC)
-+ {
-+ /* If we haven't seen both IPv4 and IPv6 interfaces we can
-+ narrow down the search. */
-+ if (! seen_ipv4 || ! seen_ipv6)
-+ {
-+ local_hints = *hints;
-+ local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6;
-+ hints = &local_hints;
-+ }
-+ }
-+ else if ((hints->ai_family == PF_INET && ! seen_ipv4)
-+ || (hints->ai_family == PF_INET6 && ! seen_ipv6))
-+ /* We cannot possibly return a valid answer. */
-+ return EAI_NONAME;
-+ }
-+
- if (service && service[0])
- {
- char *c;
-@@ -923,6 +1024,8 @@
- }
- libc_hidden_def (getaddrinfo)
-
-+static_link_warning (getaddrinfo)
-+
- void
- freeaddrinfo (struct addrinfo *ai)
- {
---- glibc-2.3.2/sysdeps/posix/libc_fatal.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/libc_fatal.c 2003-08-21 08:37:09.000000000 -0400
-@@ -56,3 +56,4 @@
-
- abort ();
- }
-+libc_hidden_def (__libc_fatal)
---- glibc-2.3.2/sysdeps/posix/pathconf.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/pathconf.c 2003-03-15 15:02:17.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,2000,2001,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
-@@ -225,6 +226,10 @@
- /* In general there are no limits. If a system has one it should
- overwrite this case. */
- return -1;
-+
-+ case _PC_2_SYMLINKS:
-+ /* Unix systems generally have symlinks. */
-+ return 1;
- }
- }
-
---- glibc-2.3.2/sysdeps/posix/posix_fallocate.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/posix_fallocate.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -25,7 +25,7 @@
- /* Reserve storage for the data of the file associated with FD. */
-
- int
--posix_fallocate (int fd, __off_t offset, size_t len)
-+posix_fallocate (int fd, __off_t offset, __off_t len)
- {
- struct stat64 st;
- struct statfs f;
-@@ -33,7 +33,7 @@
-
- /* `off_t´ is a signed type. Therefore we can determine whether
- OFFSET + LEN is too large if it is a negative value. */
-- if (offset < 0 || len == 0)
-+ if (offset < 0 || len < 0)
- return EINVAL;
- if (offset + len < 0)
- return EFBIG;
---- glibc-2.3.2/sysdeps/posix/posix_fallocate64.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/posix_fallocate64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -25,7 +25,7 @@
- /* Reserve storage for the data of the file associated with FD. */
-
- int
--posix_fallocate64 (int fd, __off64_t offset, size_t len)
-+__posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
- {
- struct stat64 st;
- struct statfs64 f;
-@@ -33,7 +33,7 @@
-
- /* `off64_t´ is a signed type. Therefore we can determine whether
- OFFSET + LEN is too large if it is a negative value. */
-- if (offset < 0 || len == 0)
-+ if (offset < 0 || len < 0)
- return EINVAL;
- if (offset + len < 0)
- return EFBIG;
-@@ -69,3 +69,21 @@
-
- return 0;
- }
-+
-+#include <shlib-compat.h>
-+#include <bits/wordsize.h>
-+
-+#if __WORDSIZE == 32 && SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
-+
-+int
-+__posix_fallocate64_l32 (int fd, off64_t offset, size_t len)
-+{
-+ return __posix_fallocate64_l64 (fd, offset, len);
-+}
-+
-+versioned_symbol (libc, __posix_fallocate64_l64, posix_fallocate64,
-+ GLIBC_2_3_3);
-+compat_symbol (libc, __posix_fallocate64_l32, posix_fallocate64, GLIBC_2_2);
-+#else
-+strong_alias (__posix_fallocate64_l64, posix_fallocate64);
-+#endif
---- glibc-2.3.2/sysdeps/posix/remove.c 2002-08-10 14:09:09.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/remove.c 2003-04-24 20:06:00.000000000 -0400
-@@ -1,5 +1,5 @@
- /* ANSI C `remove' function to delete a file or directory. POSIX.1 version.
-- Copyright (C) 1995,96,97,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995,96,97,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
-@@ -25,17 +25,15 @@
- remove (file)
- const char *file;
- {
-- int save;
-+ /* First try to unlink since this is more frequently the necessary action. */
-+ if (__unlink (file) != 0
-+ /* If it is indeed a directory... */
-+ && (errno != EISDIR
-+ /* ...try to remove it. */
-+ || __rmdir (file) != 0))
-+ /* Cannot remove the object for whatever reason. */
-+ return -1;
-
-- save = errno;
-- if (__rmdir (file) == 0)
-- return 0;
-- else if (errno == ENOTDIR && __unlink (file) == 0)
-- {
-- __set_errno (save);
-- return 0;
-- }
--
-- return -1;
-+ return 0;
- }
- libc_hidden_def (remove)
---- glibc-2.3.2/sysdeps/posix/sigpause.c 2003-01-28 04:02:08.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/sigpause.c 2003-08-21 08:37:09.000000000 -0400
-@@ -34,14 +34,15 @@
- {
- /* The modern X/Open implementation is requested. */
- if (__sigprocmask (0, NULL, &set) < 0
-- /* Perform the tests from sigdelset ourselves. */
-- || sig_or_mask <= 0 || sig_or_mask >= NSIG
-- || __sigdelset (&set, sig_or_mask) < 0)
-+ || sigdelset (&set, sig_or_mask) < 0)
- return -1;
- }
- else if (sigset_set_old_mask (&set, sig_or_mask) < 0)
- return -1;
-
-+ /* Note the sigpause() is a cancellation point. But since we call
-+ sigsuspend() which itself is a cancellation point we do not have
-+ to do anything here. */
- return __sigsuspend (&set);
- }
-
---- glibc-2.3.2/sysdeps/posix/spawni.c 2002-08-03 22:20:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/spawni.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Guts of POSIX spawn interface. Generic POSIX.1 version.
-- Copyright (C) 2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 2000,01,02, 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
-@@ -25,6 +25,7 @@
- #include <string.h>
- #include <unistd.h>
- #include "spawn_int.h"
-+#include <not-cancel.h>
-
-
- /* The Unix standard contains a long explanation of the way to signal
-@@ -158,7 +159,7 @@
- switch (action->tag)
- {
- case spawn_do_close:
-- if (__close (action->action.close_action.fd) != 0)
-+ if (close_not_cancel (action->action.close_action.fd) != 0)
- /* Signal the error. */
- _exit (SPAWN_ERROR);
- break;
---- glibc-2.3.2/sysdeps/posix/sprofil.c 2002-12-15 23:26:25.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/sprofil.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001,02 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
- This file is part of the GNU C Library.
-
-@@ -104,7 +104,7 @@
- return pc;
- }
-
--static inline void
-+static void
- profil_count (void *pcp, int prof_uint)
- {
- struct region *region, *r = prof_info.last;
---- glibc-2.3.2/sysdeps/posix/sysconf.c 2003-02-17 17:45:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/sysconf.c 2003-04-12 11:39:46.000000000 -0400
-@@ -938,7 +938,7 @@
- #endif
-
- case _SC_MONOTONIC_CLOCK:
--#ifdef _POSIX_MONOTONIC_CLOCK
-+#if _POSIX_MONOTONIC_CLOCK
- return _POSIX_MONOTONIC_CLOCK;
- #else
- return -1;
---- glibc-2.3.2/sysdeps/posix/system.c 2003-01-04 19:30:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/system.c 2003-08-21 08:37:09.000000000 -0400
-@@ -162,6 +162,9 @@
- }
- while (child != pid);
- #else
-+ /* Note the system() is a cancellation point. But since we call
-+ waitpid() which itself is a cancellation point we do not
-+ have to do anything here. */
- if (TEMP_FAILURE_RETRY (__waitpid (pid, &status, 0)) != pid)
- status = -1;
- #endif
---- glibc-2.3.2/sysdeps/posix/utimes.c 2001-07-07 15:21:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/utimes.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 2000, 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
-@@ -31,8 +31,8 @@
- if (tvp)
- {
- times = &buf;
-- times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-- times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
-+ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-+ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
- }
- else
- times = NULL;
---- glibc-2.3.2/sysdeps/posix/waitid.c 2002-12-15 04:38:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/posix/waitid.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Pseudo implementation of waitid.
-- Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1997.
-
-@@ -66,6 +66,9 @@
- return -1;
- }
-
-+ /* Note the waitid() is a cancellation point. But since we call
-+ waitpid() which itself is a cancellation point we do not have
-+ to do anything here. */
- child = __waitpid (pid, &status, options);
-
- if (child == -1)
---- glibc-2.3.2/sysdeps/powerpc/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
-@@ -0,0 +1,236 @@
-+/* Atomic operations. PowerPC Common version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-+
-+ 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. */
-+
-+/*
-+ * Never include sysdeps/powerpc/bits/atomic.h directly.
-+ * Alway use include/atomic.h which will include either
-+ * sysdeps/powerpc/powerpc32/bits/atomic.h
-+ * or
-+ * sysdeps/powerpc/powerpc64/bits/atomic.h
-+ * as appropriate and which in turn include this file.
-+ */
-+
-+#include <stdint.h>
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+/*
-+ * Powerpc does not have byte and halfword forms of load and reserve and
-+ * store conditional. So for powerpc we stub out the 8- and 16-bit forms.
-+ */
-+#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_8_rel(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_16_rel(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#ifdef UP
-+# define __ARCH_ACQ_INSTR ""
-+# define __ARCH_REL_INSTR ""
-+#else
-+# define __ARCH_ACQ_INSTR "isync"
-+# ifndef __ARCH_REL_INSTR
-+# define __ARCH_REL_INSTR "sync"
-+# endif
-+#endif
-+
-+#define atomic_full_barrier() __asm ("sync" ::: "memory")
-+#define atomic_write_barrier() __asm ("eieio" ::: "memory")
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __tmp; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ( \
-+ "1: lwarx %0,0,%1\n" \
-+ " cmpw %0,%2\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (__memp), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp; \
-+ })
-+
-+#define __arch_compare_and_exchange_val_32_rel(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __tmp; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%1\n" \
-+ " cmpw %0,%2\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " \
-+ : "=&r" (__tmp) \
-+ : "b" (__memp), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp; \
-+ })
-+
-+#define __arch_atomic_exchange_32_acq(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile ( \
-+ "1: lwarx %0,0,%2\n" \
-+ " stwcx. %3,0,%2\n" \
-+ " bne- 1b\n" \
-+ " " __ARCH_ACQ_INSTR \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+#define __arch_atomic_exchange_32_rel(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%2\n" \
-+ " stwcx. %3,0,%2\n" \
-+ " bne- 1b" \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+#define __arch_atomic_exchange_and_add_32(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val, __tmp; \
-+ __asm __volatile ("1: lwarx %0,0,%3\n" \
-+ " add %1,%0,%4\n" \
-+ " stwcx. %1,0,%3\n" \
-+ " bne- 1b" \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "2" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+#define __arch_atomic_decrement_if_positive_32(mem) \
-+ ({ int __val, __tmp; \
-+ __asm __volatile ("1: lwarx %0,0,%3\n" \
-+ " cmpwi 0,%0,0\n" \
-+ " addi %1,%0,-1\n" \
-+ " ble 2f\n" \
-+ " stwcx. %1,0,%3\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "2" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+#define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_compare_and_exchange_val_32_rel(mem, newval, oldval); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_compare_and_exchange_val_64_rel(mem, newval, oldval); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+#define atomic_exchange_acq(mem, value) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_exchange_32_acq (mem, value); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_exchange_64_acq (mem, value); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+#define atomic_exchange_rel(mem, value) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_exchange_32_rel (mem, value); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_exchange_64_rel (mem, value); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_exchange_and_add_32 (mem, value); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_exchange_and_add_64 (mem, value); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+
-+/* Decrement *MEM if it is > 0, and return the old value. */
-+#define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_decrement_if_positive_32 (mem); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_decrement_if_positive_64 (mem); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
---- glibc-2.3.2/sysdeps/powerpc/bits/setjmp.h 2002-12-15 14:44:44.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/bits/setjmp.h 2003-04-12 11:39:46.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -17,8 +17,10 @@
- 02111-1307 USA. */
-
- /* Define the machine-dependent type `jmp_buf'. PowerPC 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
-
-@@ -43,7 +45,7 @@
- # define JB_CR 21 /* Condition code registers. */
- # define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
- # define JB_SIZE (58*4)
--# endif
-+# endif
- #endif
-
- #ifndef _ASM
-@@ -58,3 +60,5 @@
- containing a local variable at ADDRESS. */
- #define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/powerpc/dl-tls.h 2003-02-27 23:54:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/dl-tls.h 2003-04-28 08:20:36.000000000 -0400
-@@ -25,19 +25,25 @@
- unsigned long int ti_offset;
- } tls_index;
-
--
--#ifdef SHARED
--
--extern void *__tls_get_addr (tls_index *ti);
--
- /* The thread pointer points 0x7000 past the first static TLS block. */
--# define TLS_TP_OFFSET 0x7000
-+#define TLS_TP_OFFSET 0x7000
-
- /* Dynamic thread vector pointers point 0x8000 past the start of each
- TLS block. */
--# define TLS_DTV_OFFSET 0x8000
-+#define TLS_DTV_OFFSET 0x8000
-+
-+/* Compute the value for a @tprel reloc. */
-+#define TLS_TPREL_VALUE(sym_map, sym, reloc) \
-+ ((sym_map)->l_tls_offset + (sym)->st_value + (reloc)->r_addend \
-+ - TLS_TP_OFFSET)
-+
-+/* Compute the value for a @dtprel reloc. */
-+#define TLS_DTPREL_VALUE(sym, reloc) \
-+ ((sym)->st_value + (reloc)->r_addend - TLS_DTV_OFFSET)
-+
-+#ifdef SHARED
-+extern void *__tls_get_addr (tls_index *ti);
-
- # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
- # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
--
- #endif
---- glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c 2003-02-25 18:40:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c 2003-03-18 16:46:09.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998,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
-@@ -22,31 +22,9 @@
- #include <bp-start.h>
- #include <bp-sym.h>
-
--extern void __libc_init_first (int argc, char **argv, char **envp);
--
- extern int __cache_line_size;
- weak_extern (__cache_line_size)
-
--extern int __libc_multiple_libcs;
--extern void *__libc_stack_end;
--
--#ifndef SHARED
--# include <tls.h>
--extern void __pthread_initialize_minimal (void)
--# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-- __attribute__ ((weak))
--# endif
-- ;
--#endif
--
--struct startup_info
--{
-- void *__unbounded sda_base;
-- int (*main) (int, char **, char **, void *);
-- int (*init) (int, char **, char **, void *);
-- void (*fini) (void);
--};
--
- /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
- verify that the static extern __cache_line_size is defined by checking
- for not NULL. If it is defined then assign the cache block size
-@@ -66,16 +44,35 @@
- break;
- }
- }
-+/* This is used in sysdeps/generic/libc-start.c. */
-+#define AUX_VECTOR_INIT __aux_init_cache
-+
-+/* The main work is done in the generic function. */
-+#define LIBC_START_MAIN generic_start_main
-+#define LIBC_START_MAIN_AUXVEC_ARG
-+#define MAIN_AUXVEC_ARG
-+#define INIT_MAIN_ARGS
-+#include <sysdeps/generic/libc-start.c>
-+
-+
-+struct startup_info
-+{
-+ void *__unbounded sda_base;
-+ int (*main) (int, char **, char **, void *);
-+ int (*init) (int, char **, char **, void *);
-+ void (*fini) (void);
-+};
-
-
- int
- /* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
- BPs in the arglist of startup_info.main and startup_info.init. */
- BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
-- char *__unbounded *__unbounded ubp_ev,
-- ElfW(auxv_t) *__unbounded auxvec, void (*rtld_fini) (void),
-- struct startup_info *__unbounded stinfo,
-- char *__unbounded *__unbounded stack_on_entry)
-+ char *__unbounded *__unbounded ubp_ev,
-+ ElfW(auxv_t) *__unbounded auxvec,
-+ void (*rtld_fini) (void),
-+ struct startup_info *__unbounded stinfo,
-+ char *__unbounded *__unbounded stack_on_entry)
- {
- #if __BOUNDED_POINTERS__
- char **argv;
-@@ -83,15 +80,6 @@
- # define argv ubp_av
- #endif
-
--#ifndef SHARED
-- /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
-- If the address would be taken inside the expression the optimizer
-- would try to be too smart and throws it away. Grrr. */
-- int *dummy_addr = &_dl_starting_up;
--
-- __libc_multiple_libcs = dummy_addr && !_dl_starting_up;
--#endif
--
- /* the PPC SVR4 ABI says that the top thing on the stack will
- be a NULL pointer, so if not we assume that we're being called
- as a statically-linked program by Linux... */
-@@ -110,78 +98,14 @@
- while (*temp != NULL)
- ++temp;
- auxvec = (ElfW(auxv_t) *)++temp;
--
--# ifndef SHARED
-- _dl_aux_init (auxvec);
--# endif
- #endif
- rtld_fini = NULL;
- }
-
-- INIT_ARGV_and_ENVIRON;
--
- /* Initialize the __cache_line_size variable from the aux vector. */
-- __aux_init_cache(auxvec);
--
-- /* Store something that has some relationship to the end of the
-- stack, for backtraces. This variable should be thread-specific.
-- Use +8 so it works for both 32- and 64-bit. */
-- __libc_stack_end = stack_on_entry + 8;
--
--#ifndef SHARED
--# ifdef DL_SYSDEP_OSCHECK
-- if (!__libc_multiple_libcs)
-- {
-- /* This needs to run to initiliaze _dl_osversion before TLS
-- setup might check it. */
-- DL_SYSDEP_OSCHECK (__libc_fatal);
-- }
--# endif
-- /* Initialize the thread library at least a bit since the libgcc
-- functions are using thread functions if these are available and
-- we need to setup errno. If there is no thread library and we
-- handle TLS the function is defined in the libc to initialized the
-- TLS handling. */
--# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-- if (__pthread_initialize_minimal)
--# endif
-- __pthread_initialize_minimal ();
--
-- /* Some security at this point. Prevent starting a SUID binary where
-- the standard file descriptors are not opened. We have to do this
-- only for statically linked applications since otherwise the dynamic
-- loader did the work already. */
-- if (__builtin_expect (__libc_enable_secure, 0))
-- __libc_check_standard_fds ();
--#endif
--
-- /* Register the destructor of the dynamic linker if there is any. */
-- if (rtld_fini != NULL)
-- __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
--
-- /* Call the initializer of the libc. */
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ninitialize libc\n\n");
--#endif
-- __libc_init_first (argc, argv, __environ);
--
-- /* Register the destructor of the program, if any. */
-- if (stinfo->fini)
-- __cxa_atexit ((void (*) (void *)) stinfo->fini, NULL, NULL);
--
-- /* Call the initializer of the program, if any. */
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
--#endif
-- if (stinfo->init)
-- stinfo->init (argc, argv, __environ, auxvec);
--
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);
--#endif
-+ __aux_init_cache (auxvec);
-
-- exit (stinfo->main (argc, argv, __environ, auxvec));
-+ return generic_start_main (stinfo->main, argc, ubp_av, auxvec,
-+ stinfo->init, stinfo->fini, rtld_fini,
-+ stack_on_entry);
- }
---- glibc-2.3.2/sysdeps/powerpc/fpu/bits/mathdef.h 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/fpu/bits/mathdef.h 2003-04-12 11:39:46.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,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
-@@ -39,9 +39,6 @@
- typedef double double_t; /* `double' expressions are evaluated as
- `double'. */
-
--/* Signal that types stay as they were declared. */
--# define FLT_EVAL_METHOD 0
--
- /* Define `INFINITY' as value of type `float'. */
- # define INFINITY HUGE_VALF
-
---- glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps 2002-09-02 18:15:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -91,7 +91,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -104,10 +104,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -142,7 +142,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -236,7 +236,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -255,7 +255,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -263,7 +263,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -437,12 +437,12 @@
- ifloat: 1
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -497,7 +497,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c 2002-05-14 16:46:17.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
--/* Single-precision floating point square root.
-- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
-+/* Double-precision floating point square root.
-+ Copyright (C) 1997, 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
-@@ -23,8 +23,8 @@
- #include <inttypes.h>
-
- static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
--static const uint32_t a_nan = 0x7fc00000;
--static const uint32_t a_inf = 0x7f800000;
-+static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
- static const float two108 = 3.245185536584267269e+32;
- static const float twom54 = 5.551115123125782702e-17;
- extern const float __t_sqrt[1024];
-@@ -45,7 +45,7 @@
- double
- __sqrt(double x)
- {
-- const float inf = *(const float *)&a_inf;
-+ const float inf = a_inf.value;
- /* x = f_wash(x); *//* This ensures only one exception for SNaN. */
- if (x > 0)
- {
-@@ -79,7 +79,7 @@
- t_sqrt = __t_sqrt + (xi0 >> (52-32-8-1) & 0x3fe);
- sg = t_sqrt[0];
- sy = t_sqrt[1];
--
-+
- /* Here we have three Newton-Rhapson iterations each of a
- division and a square root and the remainder of the
- argument reduction, all interleaved. */
-@@ -130,7 +130,7 @@
- x = __kernel_standard(x,x,26);
- else
- #endif
-- x = *(const float*)&a_nan;
-+ x = a_nan.value;
- }
- return f_wash(x);
- }
---- glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrtf.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrtf.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Single-precision floating point square root.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 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
-@@ -23,8 +23,8 @@
- #include <inttypes.h>
-
- static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
--static const uint32_t a_nan = 0x7fc00000;
--static const uint32_t a_inf = 0x7f800000;
-+static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
- static const float two48 = 281474976710656.0;
- static const float twom24 = 5.9604644775390625e-8;
- extern const float __t_sqrt[1024];
-@@ -45,7 +45,7 @@
- float
- __sqrtf(float x)
- {
-- const float inf = *(const float *)&a_inf;
-+ const float inf = a_inf.value;
- /* x = f_washf(x); *//* This ensures only one exception for SNaN. */
- if (x > 0)
- {
-@@ -125,7 +125,7 @@
- x = __kernel_standard(x,x,126);
- else
- #endif
-- x = *(const float*)&a_nan;
-+ x = a_nan.value;
- }
- return f_washf(x);
- }
---- glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps 2002-10-19 16:06:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h 2003-02-20 17:11:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,98 +0,0 @@
--/* Low-level functions for atomic operations. PowerPC version.
-- Copyright (C) 1997, 1998, 1999, 2000 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: lwarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stwcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stwcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- sub%I2c. %0,%0,%2 \n\
-- cntlzw %0,%0 \n\
-- bne- 1f \n\
-- stwcx. %3,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
-- return result >> 5;
--}
--
--static inline long int
--__attribute__ ((unused))
--always_swap (volatile long int *p, long int newval)
--{
-- long int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- stwcx. %2,0,%1 \n\
-- bne- 0b \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--static inline int
--__attribute__ ((unused))
--test_and_set (volatile long int *p, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- cmpwi %0,0 \n\
-- bne- 1f \n\
-- stwcx. %2,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
-@@ -0,0 +1,100 @@
-+/* Atomic operations. PowerPC32 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-+
-+ 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. */
-+
-+/*
-+ * The 32-bit exchange_bool is different on powerpc64 because the subf
-+ * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
-+ * (a load word and zero (high 32) form). So powerpc64 has a slightly
-+ * different version in sysdeps/powerpc/powerpc64/bits/atomic.h.
-+ */
-+# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile ( \
-+ "1: lwarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+/*
-+ * Powerpc32 processors don't implement the 64-bit (doubleword) forms of
-+ * load and reserve (ldarx) and store conditional (stdcx.) instructions.
-+ * So for powerpc32 we stub out the 64-bit forms.
-+ */
-+# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+# define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+# define __arch_atomic_exchange_64_acq(mem, value) \
-+ ({ abort (); (*mem) = (value); })
-+
-+# define __arch_atomic_exchange_64_rel(mem, value) \
-+ ({ abort (); (*mem) = (value); })
-+
-+# define __arch_atomic_exchange_and_add_64(mem, value) \
-+ ({ abort (); (*mem) = (value); })
-+
-+# define __arch_atomic_decrement_if_positive_64(mem) \
-+ ({ abort (); (*mem)--; })
-+
-+/*
-+ * Older powerpc32 processors don't support the new "light weight"
-+ * sync (lwsync). So the only safe option is to use normal sync
-+ * for all powerpc32 applications.
-+ */
-+# define atomic_read_barrier() __asm ("sync" ::: "memory")
-+
-+/*
-+ * Include the rest of the atomic ops macros which are common to both
-+ * powerpc32 and powerpc64.
-+ */
-+#include_next <bits/atomic.h>
-+
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c 2002-11-21 14:09:30.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c 2003-05-24 14:06:22.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation functions. PowerPC version.
-- Copyright (C) 1995-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -368,26 +368,24 @@
- return finaladdr;
- }
-
--static void
--dl_reloc_overflow (struct link_map *map,
-- const char *name,
-- Elf32_Addr *const reloc_addr,
-- const Elf32_Sym *sym,
-- const Elf32_Sym *refsym)
-+void
-+_dl_reloc_overflow (struct link_map *map,
-+ const char *name,
-+ Elf32_Addr *const reloc_addr,
-+ const Elf32_Sym *refsym)
- {
- char buffer[128];
- char *t;
-- const Elf32_Sym *errsym = sym ?: refsym;
- t = stpcpy (buffer, name);
- t = stpcpy (t, " relocation at 0x00000000");
- _itoa_word ((unsigned) reloc_addr, t, 16, 0);
-- if (errsym)
-+ if (refsym)
- {
- const char *strtab;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- t = stpcpy (t, " for symbol `");
-- t = stpcpy (t, strtab + errsym->st_name);
-+ t = stpcpy (t, strtab + refsym->st_name);
- t = stpcpy (t, "'");
- }
- t = stpcpy (t, " out of range");
-@@ -397,6 +395,7 @@
- void
- __process_machine_rela (struct link_map *map,
- const Elf32_Rela *reloc,
-+ struct link_map *sym_map,
- const Elf32_Sym *sym,
- const Elf32_Sym *refsym,
- Elf32_Addr *const reloc_addr,
-@@ -423,19 +422,19 @@
-
- case R_PPC_ADDR24:
- if (__builtin_expect (finaladdr > 0x01fffffc && finaladdr < 0xfe000000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, refsym);
- *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
- break;
-
- case R_PPC_ADDR16:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, refsym);
- *(Elf32_Half*) reloc_addr = finaladdr;
- break;
-
- case R_PPC_UADDR16:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, refsym);
- ((char *) reloc_addr)[0] = finaladdr >> 8;
- ((char *) reloc_addr)[1] = finaladdr;
- break;
-@@ -456,7 +455,7 @@
- case R_PPC_ADDR14_BRTAKEN:
- case R_PPC_ADDR14_BRNTAKEN:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, refsym);
- *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
- if (rinfo != R_PPC_ADDR14)
- *reloc_addr = ((*reloc_addr & 0xffdfffff)
-@@ -468,7 +467,7 @@
- {
- Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
- if (delta << 6 >> 6 != delta)
-- dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, refsym);
- *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
- }
- break;
-@@ -541,6 +540,53 @@
- }
- break;
-
-+#ifdef USE_TLS
-+#define CHECK_STATIC_TLS(map, sym_map) \
-+ do { \
-+ if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
-+ _dl_allocate_static_tls (sym_map); \
-+ } while (0)
-+# define DO_TLS_RELOC(suffix) \
-+ case R_PPC_DTPREL##suffix: \
-+ /* During relocation all TLS symbols are defined and used. \
-+ Therefore the offset is already correct. */ \
-+ if (sym_map != NULL) \
-+ do_reloc##suffix ("R_PPC_DTPREL"#suffix, \
-+ TLS_DTPREL_VALUE (sym, reloc)); \
-+ break; \
-+ case R_PPC_TPREL##suffix: \
-+ if (sym_map != NULL) \
-+ { \
-+ CHECK_STATIC_TLS (map, sym_map); \
-+ do_reloc##suffix ("R_PPC_TPREL"#suffix, \
-+ TLS_TPREL_VALUE (sym_map, sym, reloc)); \
-+ } \
-+ break;
-+
-+ inline void do_reloc16 (const char *r_name, Elf32_Addr value)
-+ {
-+ if (__builtin_expect (value > 0x7fff && value < 0xffff8000, 0))
-+ _dl_reloc_overflow (map, r_name, reloc_addr, refsym);
-+ *(Elf32_Half *) reloc_addr = value;
-+ }
-+ inline void do_reloc16_LO (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = value;
-+ }
-+ inline void do_reloc16_HI (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = value >> 16;
-+ }
-+ inline void do_reloc16_HA (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = (value + 0x8000) >> 16;
-+ }
-+ DO_TLS_RELOC (16)
-+ DO_TLS_RELOC (16_LO)
-+ DO_TLS_RELOC (16_HI)
-+ DO_TLS_RELOC (16_HA)
-+#endif
-+
- default:
- _dl_reloc_bad_type (map, rinfo, 0);
- return;
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h 2003-01-30 15:25:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -23,6 +23,7 @@
- #define ELF_MACHINE_NAME "powerpc"
-
- #include <assert.h>
-+#include <dl-tls.h>
-
- /* Return nonzero iff ELF header is compatible with the running host. */
- static inline int
-@@ -275,11 +276,21 @@
- /* We never want to use a PLT entry as the destination of a
- reloc, when what is being relocated is a branch. This is
- partly for efficiency, but mostly so we avoid loops. */
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+#define elf_machine_type_class(type) \
-+ ((((type) == R_PPC_JMP_SLOT \
-+ || (type) == R_PPC_REL24 \
-+ || ((type) >= R_PPC_DTPMOD32 /* contiguous TLS */ \
-+ && (type) <= R_PPC_DTPREL32) \
-+ || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
-+ | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
-+#else
- #define elf_machine_type_class(type) \
- ((((type) == R_PPC_JMP_SLOT \
- || (type) == R_PPC_REL24 \
- || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
-+#endif
-
- /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
- #define ELF_MACHINE_JMP_SLOT R_PPC_JMP_SLOT
-@@ -325,11 +336,18 @@
- has been determined. */
- extern void __process_machine_rela (struct link_map *map,
- const Elf32_Rela *reloc,
-+ struct link_map *sym_map,
- const Elf32_Sym *sym,
- const Elf32_Sym *refsym,
- Elf32_Addr *const reloc_addr,
- Elf32_Addr finaladdr,
-- int rinfo);
-+ int rinfo) attribute_hidden;
-+
-+/* Call _dl_signal_error when a resolved value overflows a relocated area. */
-+extern void _dl_reloc_overflow (struct link_map *map,
-+ const char *name,
-+ Elf32_Addr *const reloc_addr,
-+ const Elf32_Sym *refsym) attribute_hidden;
-
- /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
- LOADADDR is the load address of the object; INFO is an array indexed
-@@ -338,46 +356,45 @@
- inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const Elf32_Sym *const refsym = sym;
-- Elf32_Word finaladdr;
-- const int rinfo = ELF32_R_TYPE (reloc->r_info);
-+ Elf32_Addr value;
-+ const int r_type = ELF32_R_TYPE (reloc->r_info);
-+ struct link_map *sym_map = NULL;
-
- #ifndef RESOLVE_CONFLICT_FIND_MAP
-- if (__builtin_expect (rinfo == R_PPC_NONE, 0))
-- return;
--
-- /* The condition on the next two lines is a hack around a bug in Solaris
-- tools on Sparc. It's not clear whether it should really be here at all,
-- but if not the binutils need to be changed. */
-- if (rinfo == R_PPC_RELATIVE
-- || (sym->st_shndx != SHN_UNDEF
-- && ELF32_ST_BIND (sym->st_info) == STB_LOCAL))
-+ if (r_type == R_PPC_RELATIVE)
- {
-- /* Has already been relocated. */
-- Elf32_Word loadbase = map->l_addr;
-- finaladdr = loadbase + reloc->r_addend;
-+ *reloc_addr = map->l_addr + reloc->r_addend;
-+ return;
- }
-+
-+ if (__builtin_expect (r_type == R_PPC_NONE, 0))
-+ return;
-+
-+ /* binutils on ppc32 includes st_value in r_addend for relocations
-+ against local symbols. */
-+ if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)
-+ && sym->st_shndx != SHN_UNDEF)
-+ value = map->l_addr;
- else
- {
-- Elf32_Word loadbase
-- = (Elf32_Word) (char *) (RESOLVE (&sym, version,
-- ELF32_R_TYPE(reloc->r_info)));
-- if (sym == NULL)
-- {
-- /* Weak symbol that wasn't actually defined anywhere. */
-- assert (loadbase == 0);
-- finaladdr = reloc->r_addend;
-- }
-- else
-- finaladdr = (loadbase + (Elf32_Word) (char *) sym->st_value
-- + reloc->r_addend);
-+# if defined USE_TLS && !defined RTLD_BOOTSTRAP
-+ sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
-+# else
-+ value = RESOLVE (&sym, version, r_type);
-+# ifndef RTLD_BOOTSTRAP
-+ if (sym != NULL)
-+# endif
-+ value += sym->st_value;
-+# endif
- }
-+ value += reloc->r_addend;
- #else
-- finaladdr = reloc->r_addend;
-- if (rinfo == R_PPC_JMP_SLOT)
-- RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-+ value = reloc->r_addend;
- #endif
-
- /* A small amount of code is duplicated here for speed. In libc,
-@@ -386,21 +403,63 @@
- R_PPC_ADDR32, and 16% are R_PPC_JMP_SLOT (which this routine
- wouldn't usually handle). As an bonus, doing this here allows
- the switch statement in __process_machine_rela to work. */
-- if (rinfo == R_PPC_RELATIVE
-- || rinfo == R_PPC_GLOB_DAT
-- || rinfo == R_PPC_ADDR32)
-+ switch (r_type)
- {
-- *reloc_addr = finaladdr;
-+ case R_PPC_GLOB_DAT:
-+ case R_PPC_ADDR32:
-+ *reloc_addr = value;
-+ break;
-+
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
-+ && !defined RESOLVE_CONFLICT_FIND_MAP
-+# ifdef RTLD_BOOTSTRAP
-+# define NOT_BOOTSTRAP 0
-+# else
-+# define NOT_BOOTSTRAP 1
-+# endif
-+
-+ case R_PPC_DTPMOD32:
-+ if (!NOT_BOOTSTRAP)
-+ /* During startup the dynamic linker is always index 1. */
-+ *reloc_addr = 1;
-+ else if (sym_map != NULL)
-+ /* Get the information from the link map returned by the
-+ RESOLVE_MAP function. */
-+ *reloc_addr = sym_map->l_tls_modid;
-+ break;
-+ case R_PPC_DTPREL32:
-+ /* During relocation all TLS symbols are defined and used.
-+ Therefore the offset is already correct. */
-+ if (NOT_BOOTSTRAP && sym_map != NULL)
-+ *reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
-+ break;
-+ case R_PPC_TPREL32:
-+ if (!NOT_BOOTSTRAP || sym_map != NULL)
-+ {
-+ if (NOT_BOOTSTRAP)
-+ CHECK_STATIC_TLS (map, sym_map);
-+ *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-+ }
-+ break;
-+#endif /* USE_TLS etc. */
-+
-+#ifdef RESOLVE_CONFLICT_FIND_MAP
-+ case R_PPC_JMP_SLOT:
-+ RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-+ /* FALLTHROUGH */
-+#endif
-+
-+ default:
-+ __process_machine_rela (map, reloc, sym_map, sym, refsym,
-+ reloc_addr, value, r_type);
- }
-- else
-- __process_machine_rela (map, reloc, sym, refsym,
-- reloc_addr, finaladdr, rinfo);
- }
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure 2003-03-03 16:20:51.000000000 -0500
-@@ -0,0 +1,52 @@
-+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-+ # Local configure fragment for sysdeps/powerpc32/elf.
-+
-+if test "$usetls" != no; then
-+# Check for support of thread-local storage handling in assembler and
-+# linker.
-+echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
-+echo $ECHO_N "checking for powerpc32 TLS support... $ECHO_C" >&6
-+if test "${libc_cv_powerpc32_tls+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<\EOF
-+ .section ".tdata","awT",@progbits
-+x: .long 1
-+x1: .long 1
-+x2: .long 1
-+ .text
-+ addi 3,31,x@got@tlsgd
-+ addi 3,31,x1@got@tlsld
-+ addi 9,3,x1@dtprel
-+ addis 9,3,x2@dtprel@ha
-+ addi 9,9,x2@dtprel@l
-+ lwz 0,x1@dtprel(3)
-+ addis 9,3,x2@dtprel@ha
-+ lwz 0,x2@dtprel@l(9)
-+ lwz 9,x3@got@tprel(31)
-+ add 9,9,x@tls
-+ addi 9,2,x1@tprel
-+ addis 9,2,x2@tprel@ha
-+ addi 9,9,x2@tprel@l
-+EOF
-+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_powerpc32_tls=yes
-+else
-+ libc_cv_powerpc32_tls=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
-+echo "${ECHO_T}$libc_cv_powerpc32_tls" >&6
-+if test $libc_cv_powerpc32_tls = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_TLS_SUPPORT 1
-+_ACEOF
-+
-+fi
-+fi
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in 2003-03-03 16:20:51.000000000 -0500
-@@ -0,0 +1,38 @@
-+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-+# Local configure fragment for sysdeps/powerpc32/elf.
-+
-+if test "$usetls" != no; then
-+# Check for support of thread-local storage handling in assembler and
-+# linker.
-+AC_CACHE_CHECK(for powerpc32 TLS support, libc_cv_powerpc32_tls, [dnl
-+cat > conftest.s <<\EOF
-+ .section ".tdata","awT",@progbits
-+x: .long 1
-+x1: .long 1
-+x2: .long 1
-+ .text
-+ addi 3,31,x@got@tlsgd
-+ addi 3,31,x1@got@tlsld
-+ addi 9,3,x1@dtprel
-+ addis 9,3,x2@dtprel@ha
-+ addi 9,9,x2@dtprel@l
-+ lwz 0,x1@dtprel(3)
-+ addis 9,3,x2@dtprel@ha
-+ lwz 0,x2@dtprel@l(9)
-+ lwz 9,x3@got@tprel(31)
-+ add 9,9,x@tls
-+ addi 9,2,x1@tprel
-+ addis 9,2,x2@tprel@ha
-+ addi 9,9,x2@tprel@l
-+EOF
-+dnl
-+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ libc_cv_powerpc32_tls=yes
-+else
-+ libc_cv_powerpc32_tls=no
-+fi
-+rm -f conftest*])
-+if test $libc_cv_powerpc32_tls = yes; then
-+ AC_DEFINE(HAVE_TLS_SUPPORT)
-+fi
-+fi
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/start.S 2002-12-09 22:41:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/start.S 2003-06-03 09:36:29.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code for programs linked with GNU libc.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,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
-@@ -21,29 +21,50 @@
- #include "bp-sym.h"
-
- /* These are the various addresses we require. */
-+#ifdef PIC
-+ .section ".data"
-+#else
- .section ".rodata"
-+#endif
- .align 2
- L(start_addresses):
- .long _SDA_BASE_
-- .long JUMPTARGET(BP_SYM (main))
-- .long JUMPTARGET(__libc_csu_init)
-- .long JUMPTARGET(__libc_csu_fini)
-+ .long BP_SYM (main)
-+ .long __libc_csu_init
-+ .long __libc_csu_fini
- ASM_SIZE_DIRECTIVE(L(start_addresses))
-
- .section ".text"
-+#ifdef PIC
-+L(start_addressesp):
-+ .long L(start_addresses)-L(branch)
-+#endif
- ENTRY(_start)
- /* Save the stack pointer, in case we're statically linked under Linux. */
- mr r9,r1
- /* Set up an initial stack frame, and clear the LR. */
- clrrwi r1,r1,4
-+#ifdef PIC
-+ bcl 20,31,L(branch)
-+L(branch):
-+ li r0,0
-+ mflr r13
-+#else
- li r0,0
-+#endif
- stwu r1,-16(r1)
- mtlr r0
- stw r0,0(r1)
- /* Set r13 to point at the 'small data area', and put the address of
- start_addresses in r8... */
-+#ifdef PIC
-+ lwz r8,L(start_addressesp)-L(branch)(r13)
-+ add r8,r13,r8
-+ lwz r13,0(r8)
-+#else
- lis r8,L(start_addresses)@ha
- lwzu r13,L(start_addresses)@l(r8)
-+#endif
- /* and continue in libc-start, in glibc. */
- b JUMPTARGET(BP_SYM (__libc_start_main))
- END(_start)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S 2002-08-23 15:46:49.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized memset implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -21,27 +21,23 @@
- #include <bp-sym.h>
- #include <bp-asm.h>
-
--/* Define a global static that can hold the cache line size. The
-+/* Define a global static that can hold the cache line size. The
- assumption is that startup code will access the "aux vector" to
-- to obtain the value set by the kernel and store it into this
-+ to obtain the value set by the kernel and store it into this
- variable. */
--
-+
- .globl __cache_line_size
-- .section ".data","aw"
-- .align 2
-- .type __cache_line_size,@object
-- .size __cache_line_size,4
--__cache_line_size:
-- .long 0
-- .section ".text"
-+ .lcomm __cache_line_size,4,4
-+
- /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
- Returns 's'.
-
- The memset is done in four sizes: byte (8 bits), word (32 bits),
- 32-byte blocks (256 bits) and __cache_line_size (128, 256, 1024 bits).
-- There is a special case for setting whole cache lines to 0, which
-+ There is a special case for setting whole cache lines to 0, which
- takes advantage of the dcbz instruction. */
-
-+ .section ".text"
- EALIGN (BP_SYM (memset), 5, 1)
-
- #define rTMP r0
-@@ -123,14 +119,14 @@
- cmplwi cr1, rCHR, 0
- clrrwi. rALIGN, rLEN, 5
- mtcrf 0x01, rLEN /* 40th instruction from .align */
--
-+
- /* Check if we can use the special case for clearing memory using dcbz.
-- This requires that we know the correct cache line size for this
-+ This requires that we know the correct cache line size for this
- processor. Getting the __cache_line_size may require establishing GOT
- addressability, so branch out of line to set this up. */
-- beq cr1, L(checklinesize)
--
--/* Store blocks of 32-bytes (256-bits) starting on a 32-byte boundary.
-+ beq cr1, L(checklinesize)
-+
-+/* Store blocks of 32-bytes (256-bits) starting on a 32-byte boundary.
- Can't assume that rCHR is zero or that the cache line size is either
- 32-bytes or even known. */
- L(nondcbz):
-@@ -172,7 +168,7 @@
-
- .align 5
- nop
--/* Clear cache lines of memory in 128-byte chunks.
-+/* Clear cache lines of memory in 128-byte chunks.
- This code is optimized for processors with 32-byte cache lines.
- It is further optimized for the 601 processor, which requires
- some care in how the code is aligned in the i-cache. */
-@@ -259,22 +255,22 @@
- stw rCHR, -4(rMEMP)
- stw rCHR, -8(rMEMP)
- blr
--
-+
- L(checklinesize):
- #ifdef SHARED
- mflr rTMP
- /* If the remaining length is less the 32 bytes then don't bother getting
- the cache line size. */
-- beq L(medium)
--/* Establishes GOT addressability so we can load __cache_line_size
-+ beq L(medium)
-+/* Establishes GOT addressability so we can load __cache_line_size
- from static. This value was set from the aux vector during startup. */
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr rGOT
- lwz rGOT,__cache_line_size@got(rGOT)
- lwz rCLS,0(rGOT)
- mtlr rTMP
--#else
--/* Load __cache_line_size from static. This value was set from the
-+#else
-+/* Load __cache_line_size from static. This value was set from the
- aux vector during startup. */
- lis rCLS,__cache_line_size@ha
- /* If the remaining length is less the 32 bytes then don't bother getting
-@@ -282,22 +278,22 @@
- beq L(medium)
- lwz rCLS,__cache_line_size@l(rCLS)
- #endif
--
-+
- /*If the cache line size was not set then goto to L(nondcbz), which is
-- safe for any cache line size. */
-+ safe for any cache line size. */
- cmplwi cr1,rCLS,0
- beq cr1,L(nondcbz)
--
-+
- /* If the cache line size is 32 bytes then goto to L(zloopstart),
-- which is coded specificly for 32-byte lines (and 601). */
-+ which is coded specificly for 32-byte lines (and 601). */
- cmplwi cr1,rCLS,32
- beq cr1,L(zloopstart)
--
--/* Now we know the cache line size and it is not 32-bytes. However
-- we may not yet be aligned to the cache line and may have a partial
-- line to fill. Touch it 1st to fetch the cache line. */
-- dcbtst 0,rMEMP
--
-+
-+/* Now we know the cache line size and it is not 32-bytes. However
-+ we may not yet be aligned to the cache line and may have a partial
-+ line to fill. Touch it 1st to fetch the cache line. */
-+ dcbtst 0,rMEMP
-+
- addi rCLM,rCLS,-1
- L(getCacheAligned):
- cmplwi cr1,rLEN,32
-@@ -317,8 +313,8 @@
- stw rCHR,-8(rMEMP)
- stw rCHR,-4(rMEMP)
- b L(getCacheAligned)
--
--/* Now we are aligned to the cache line and can use dcbz. */
-+
-+/* Now we are aligned to the cache line and can use dcbz. */
- L(cacheAligned):
- cmplw cr1,rLEN,rCLS
- blt cr1,L(handletail32)
-@@ -327,12 +323,13 @@
- add rMEMP,rMEMP,rCLS
- b L(cacheAligned)
-
--/* We are here because; the cache line size was set, it was not
-- 32-bytes, and the remainder (rLEN) is now less than the actual cache
-- line size. Set up the preconditions for L(nondcbz) and go there to
-- store the remaining bytes. */
-+/* We are here because; the cache line size was set, it was not
-+ 32-bytes, and the remainder (rLEN) is now less than the actual cache
-+ line size. Set up the preconditions for L(nondcbz) and go there to
-+ store the remaining bytes. */
- L(handletail32):
- clrrwi. rALIGN, rLEN, 5
- b L(nondcbz)
--
-+
- END (BP_SYM (memset))
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/strchr.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strchr.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strchr implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -128,3 +128,4 @@
- END (BP_SYM (strchr))
-
- weak_alias (BP_SYM (strchr), BP_SYM (index))
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/strcmp.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strcmp.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strcmp implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -124,3 +124,4 @@
- /* GKM FIXME: check high bounds. */
- blr
- END (BP_SYM (strcmp))
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/strcpy.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strcpy.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strcpy implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -118,3 +118,4 @@
- blr
-
- END (BP_SYM (strcpy))
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/strlen.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strlen.S 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strlen implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -157,3 +157,4 @@
- /* GKM FIXME: check high bound. */
- blr
- END (BP_SYM (strlen))
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h 2003-02-20 15:26:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h 2003-08-21 08:37:09.000000000 -0400
-@@ -131,6 +131,32 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_NOERRNO \
-+ blr
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_ERRVAL \
-+ blr
-+#define ret_ERRVAL PSEUDO_RET_ERRVAL
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
- /* Local labels stripped out by the linker. */
- #undef L
- #define L(x) .L##x
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,132 +0,0 @@
--/* Low-level functions for atomic operations. PowerPC64 version.
-- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Library General Public License as
-- published by the Free Software Foundation; either version 2 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
-- Library General Public License for more details.
--
-- You should have received a copy of the GNU Library General Public
-- License along with the GNU C 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. */
--
--#ifndef _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--#if BROKEN_PPC_ASM_CR0
--# define __ATOMICITY_INLINE /* nothing */
--#else
--# define __ATOMICITY_INLINE inline
--#endif
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: lwarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stwcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE void
--__attribute__ ((unused))
--atomic_add_long (volatile long *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stdcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--exchange_and_add_long (volatile long *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: ldarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stdcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stwcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- sub%I2c. %0,%0,%2 \n\
-- cntlzw %0,%0 \n\
-- bne- 1f \n\
-- stdcx. %3,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
-- return result >> 5;
--}
--
--static __ATOMICITY_INLINE long int
--__attribute__ ((unused))
--always_swap (volatile long int *p, long int newval)
--{
-- long int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- stdcx. %2,0,%1 \n\
-- bne- 0b \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--test_and_set (volatile long int *p, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- cmpdi %0,0 \n\
-- bne- 1f \n\
-- stdcx. %2,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
-@@ -0,0 +1,205 @@
-+/* Atomic operations. PowerPC64 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-+
-+ 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. */
-+
-+/*
-+ * The 32-bit exchange_bool is different on powerpc64 because the subf
-+ * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
-+ * (a load word and zero (high 32) form) load.
-+ * In powerpc64 register values are 64-bit by default, including oldval.
-+ * Net we need to extend sign word the result of lwarx to 64-bit so the
-+ * 64-bit subtract from gives the expected result and sets the condition
-+ * correctly.
-+ */
-+# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile ( \
-+ "1: lwarx %0,0,%1\n" \
-+ " extsw %0,%0\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%1\n" \
-+ " extsw %0,%0\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+/*
-+ * Only powerpc64 processors support Load doubleword and reserve index (ldarx)
-+ * and Store doubleword conditional indexed (stdcx) instructions. So here
-+ * we define the 64-bit forms.
-+ */
-+# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+({ \
-+ unsigned long __tmp; \
-+ __asm __volatile ( \
-+ "1: ldarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stdcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
-+({ \
-+ unsigned long __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stdcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __tmp; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ( \
-+ "1: ldarx %0,0,%1\n" \
-+ " cmpd %0,%2\n" \
-+ " bne 2f\n" \
-+ " stdcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (__memp), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp; \
-+ })
-+
-+#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
-+ ({ \
-+ __typeof (*(mem)) __tmp; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%1\n" \
-+ " cmpd %0,%2\n" \
-+ " bne 2f\n" \
-+ " stdcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " \
-+ : "=&r" (__tmp) \
-+ : "b" (__memp), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp; \
-+ })
-+
-+# define __arch_atomic_exchange_64_acq(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%2\n" \
-+ " stdcx. %3,0,%2\n" \
-+ " bne- 1b\n" \
-+ " " __ARCH_ACQ_INSTR \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+# define __arch_atomic_exchange_64_rel(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%2\n" \
-+ " stdcx. %3,0,%2\n" \
-+ " bne- 1b" \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+# define __arch_atomic_exchange_and_add_64(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val, __tmp; \
-+ __asm __volatile ("1: ldarx %0,0,%3\n" \
-+ " add %1,%0,%4\n" \
-+ " stdcx. %1,0,%3\n" \
-+ " bne- 1b" \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "2" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+# define __arch_atomic_decrement_if_positive_64(mem) \
-+ ({ int __val, __tmp; \
-+ __asm __volatile ("1: ldarx %0,0,%3\n" \
-+ " cmpdi 0,%0,0\n" \
-+ " addi %1,%0,-1\n" \
-+ " ble 2f\n" \
-+ " stdcx. %1,0,%3\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "2" (*mem) \
-+ : "cr0", "memory"); \
-+ __val; \
-+ })
-+
-+/*
-+ * All powerpc64 processors support the new "light weight" sync (lwsync).
-+ */
-+# define atomic_read_barrier() __asm ("lwsync" ::: "memory")
-+/*
-+ * "light weight" sync can also be used for the release barrier.
-+ */
-+# ifndef UP
-+# define __ARCH_REL_INSTR "lwsync"
-+# endif
-+
-+/*
-+ * Include the rest of the atomic ops macros which are common to both
-+ * powerpc32 and powerpc64.
-+ */
-+#include_next <bits/atomic.h>
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.c 2002-09-28 16:12:57.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.c 2003-05-24 14:06:22.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation functions. PowerPC64 version.
-- Copyright (C) 1995,96,97,98,99,2000,01, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -27,22 +27,20 @@
- _dl_reloc_overflow (struct link_map *map,
- const char *name,
- Elf64_Addr *const reloc_addr,
-- const Elf64_Sym *sym,
- const Elf64_Sym *refsym)
- {
- char buffer[128];
- char *t;
-- const Elf64_Sym *errsym = sym ?: refsym;
- t = stpcpy (buffer, name);
- t = stpcpy (t, " reloc at 0x");
- _itoa_word ((unsigned long) reloc_addr, t, 16, 0);
-- if (errsym)
-+ if (refsym)
- {
- const char *strtab;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
- t = stpcpy (t, " for symbol `");
-- t = stpcpy (t, strtab + errsym->st_name);
-+ t = stpcpy (t, strtab + refsym->st_name);
- t = stpcpy (t, "'");
- }
- t = stpcpy (t, " out of range");
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h 2003-02-28 19:06:31.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -26,6 +26,7 @@
-
- #include <assert.h>
- #include <sys/param.h>
-+#include <dl-tls.h>
-
- /* Translate a processor specific dynamic tag to the index
- in l_info array. */
-@@ -238,6 +239,18 @@
- "_dl_start_user:\n" \
- " .quad ._dl_start_user, .TOC.@tocbase, 0\n" \
- " .previous\n" \
-+" .section \".toc\",\"aw\"\n" \
-+".LC__dl_starting_up:\n" \
-+" .tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n" \
-+".LC__rtld_global:\n" \
-+" .tc _rtld_global[TC],_rtld_global\n" \
-+".LC__dl_argc:\n" \
-+" .tc _dl_argc[TC],_dl_argc\n" \
-+".LC__dl_argv:\n" \
-+" .tc _dl_argv_internal[TC],_dl_argv_internal\n" \
-+".LC__dl_fini:\n" \
-+" .tc _dl_fini[TC],_dl_fini\n" \
-+" .previous\n" \
- " .globl ._dl_start_user\n" \
- " .type ._dl_start_user,@function\n" \
- /* Now, we do our main work of calling initialisation procedures. \
-@@ -249,9 +262,9 @@
- /* the address of _start in r30. */ \
- " mr 30,3\n" \
- /* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */ \
--" ld 28,_rtld_global@got(2)\n" \
--" ld 29,_dl_argc@got(2)\n" \
--" ld 27,_dl_argv@got(2)\n" \
-+" ld 28,.LC__rtld_global@toc(2)\n" \
-+" ld 29,.LC__dl_argc@toc(2)\n" \
-+" ld 27,.LC__dl_argv@toc(2)\n" \
- /* _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1). */ \
- " ld 3,0(28)\n" \
- " lwa 4,0(29)\n" \
-@@ -278,8 +291,8 @@
- " addi 6,6,8\n" \
- /* Pass a termination function pointer (in this case _dl_fini) in \
- r7. */ \
--" ld 7,_dl_fini@got(2)\n" \
--" ld 26,_dl_starting_up@got(2)\n" \
-+" ld 7,.LC__dl_fini@toc(2)\n" \
-+" ld 26,.LC__dl_starting_up@toc(2)\n" \
- /* Pass the stack pointer in r1 (so far so good), pointing to a NULL \
- value. This lets our startup code distinguish between a program \
- linked statically, which linux will call with argc on top of the \
-@@ -330,12 +343,11 @@
- of the main executable's symbols, as for a COPY reloc. */
-
- #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
--#define elf_machine_type_class(type) \
-- ( (((type) == R_PPC64_DTPMOD64 \
-- || (type) == R_PPC64_DTPREL64 \
-- || (type) == R_PPC64_TPREL64 \
-- || (type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
-- | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
-+#define elf_machine_type_class(type) \
-+ /* This covers all the TLS relocs, though most won't appear. */ \
-+ (((((type) >= R_PPC64_DTPMOD64 && (type) <= R_PPC64_TPREL16_HIGHESTA) \
-+ || (type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
-+ | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
- #else
- #define elf_machine_type_class(type) \
- ((((type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
-@@ -472,9 +484,6 @@
- Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
- Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
- Elf64_Addr offset = 0;
--#ifndef RTLD_BOOTSTRAP
-- weak_extern (GL(dl_rtld_map));
--#endif
-
- /* If sym_map is NULL, it's a weak undefined sym; Leave the plt zero. */
- if (sym_map == NULL)
-@@ -483,7 +492,7 @@
- /* If the opd entry is not yet relocated (because it's from a shared
- object that hasn't been processed yet), then manually reloc it. */
- if (map != sym_map && !sym_map->l_relocated
--#ifndef RTLD_BOOTSTRAP
-+#if !defined RTLD_BOOTSTRAP && defined SHARED
- /* Bootstrap map doesn't have l_relocated set for it. */
- && sym_map != &GL(dl_rtld_map)
- #endif
-@@ -509,6 +518,21 @@
- return finaladdr;
- }
-
-+static inline void
-+elf_machine_plt_conflict (Elf64_Addr *reloc_addr, Elf64_Addr finaladdr)
-+{
-+ Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
-+ Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
-+
-+ plt->fd_func = rel->fd_func;
-+ plt->fd_aux = rel->fd_aux;
-+ plt->fd_toc = rel->fd_toc;
-+ PPC_DCBST (&plt->fd_func);
-+ PPC_DCBST (&plt->fd_aux);
-+ PPC_DCBST (&plt->fd_toc);
-+ PPC_SYNC;
-+}
-+
- /* Return the final value of a plt relocation. */
- static inline Elf64_Addr
- elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
-@@ -528,24 +552,46 @@
- #define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000)
- #define PPC_HIGHEST(v) (((v) >> 48) & 0xffff)
- #define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000)
--#define BIT_INSERT(old, val, mask) ((old & ~(Elf64_Addr) mask) | (val & mask))
-+#define BIT_INSERT(var, val, mask) \
-+ ((var) = ((var) & ~(Elf64_Addr) (mask)) | ((val) & (mask)))
-
- #define dont_expect(X) __builtin_expect ((X), 0)
-
- extern void _dl_reloc_overflow (struct link_map *map,
- const char *name,
- Elf64_Addr *const reloc_addr,
-- const Elf64_Sym *sym,
- const Elf64_Sym *refsym)
- attribute_hidden;
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+/* This computes the value used by TPREL* relocs. */
-+static Elf64_Addr __attribute__ ((const))
-+elf_machine_tprel (struct link_map *map,
-+ struct link_map *sym_map,
-+ const Elf64_Sym *sym,
-+ const Elf64_Rela *reloc)
-+{
-+# ifndef RTLD_BOOTSTRAP
-+ if (sym_map)
-+ {
-+ CHECK_STATIC_TLS (map, sym_map);
-+# endif
-+ return TLS_TPREL_VALUE (sym_map, sym, reloc);
-+# ifndef RTLD_BOOTSTRAP
-+ }
-+# endif
-+ return 0;
-+}
-+#endif
-+
- /* Perform the relocation specified by RELOC and SYM (which is fully
- resolved). MAP is the object containing the reloc. */
- static inline void
-@@ -553,11 +599,10 @@
- const Elf64_Rela *reloc,
- const Elf64_Sym *sym,
- const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-- int r_type = ELF64_R_TYPE (reloc->r_info);
-- struct link_map *sym_map;
-- Elf64_Addr value, raw_value;
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
-+ const int r_type = ELF64_R_TYPE (reloc->r_info);
- #ifndef RTLD_BOOTSTRAP
- const Elf64_Sym *const refsym = sym;
- #endif
-@@ -568,17 +613,16 @@
- return;
- }
-
-- if (r_type == R_PPC64_NONE)
-+ if (__builtin_expect (r_type == R_PPC64_NONE, 0))
- return;
-
-- sym_map = RESOLVE_MAP (&sym, version, r_type);
-- value = raw_value = reloc->r_addend;
-- if (sym_map)
-- {
-- raw_value += sym->st_value;
-- value = raw_value + sym_map->l_addr;
-- }
-+ /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt. */
-+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ Elf64_Addr value = ((sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value)
-+ + reloc->r_addend);
-
-+ /* For relocs that don't edit code, return.
-+ For relocs that might edit instructions, break from the switch. */
- switch (r_type)
- {
- case R_PPC64_ADDR64:
-@@ -586,132 +630,135 @@
- *reloc_addr = value;
- return;
-
--#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
--
-- case R_PPC64_DTPMOD64:
--#ifdef RTLD_BOOTSTRAP
-- /* During startup the dynamic linker is always index 1. */
-- *reloc_addr = 1;
-+ case R_PPC64_JMP_SLOT:
-+#ifdef RESOLVE_CONFLICT_FIND_MAP
-+ elf_machine_plt_conflict (reloc_addr, value);
- #else
-- /* Get the information from the link map returned by the
-- resolve function. */
-- if (sym_map != NULL)
-- *reloc_addr = sym_map->l_tls_modid;
-+ elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
- #endif
- return;
-
-- case R_PPC64_TPREL64:
--#ifdef RTLD_BOOTSTRAP
-- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
-- + raw_value - TLS_TP_OFFSET);
--#else
-- if (sym_map)
-- {
-- CHECK_STATIC_TLS (map, sym_map);
-- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
-- + raw_value - TLS_TP_OFFSET);
-- }
--#endif
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+ case R_PPC64_DTPMOD64:
-+# ifdef RTLD_BOOTSTRAP
-+ /* During startup the dynamic linker is always index 1. */
-+ *reloc_addr = 1;
-+# else
-+ /* Get the information from the link map returned by the
-+ resolve function. */
-+ if (sym_map != NULL)
-+ *reloc_addr = sym_map->l_tls_modid;
-+# endif
- return;
-
- case R_PPC64_DTPREL64:
--#ifndef RTLD_BOOTSTRAP
- /* During relocation all TLS symbols are defined and used.
-- Therefore the offset is already correct. */
-- *reloc_addr = raw_value - TLS_DTV_OFFSET;
--#endif
-+ Therefore the offset is already correct. */
-+# ifndef RTLD_BOOTSTRAP
-+ if (sym_map != NULL)
-+ *reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
-+# endif
- return;
--#endif
--
-- case R_PPC64_JMP_SLOT:
-
-- elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
-+ case R_PPC64_TPREL64:
-+ *reloc_addr = elf_machine_tprel (map, sym_map, sym, reloc);
- return;
-
--#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
-- case R_PPC64_ADDR16_LO_DS:
-+ case R_PPC64_TPREL16_LO_DS:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS",
-- reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS", reloc_addr, refsym);
- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
- value, 0xfffc);
- break;
-
-- case R_PPC64_TPREL16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-+ case R_PPC64_TPREL16_DS:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-+ _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr, refsym);
- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ value, 0xfffc);
- break;
-
-- case R_PPC64_DTPREL16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ case R_PPC64_TPREL16:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ if (dont_expect ((value + 0x8000) >= 0x10000))
-+ _dl_reloc_overflow (map, "R_PPC64_TPREL16", reloc_addr, refsym);
-+ *(Elf64_Half *) reloc_addr = PPC_LO (value);
- break;
-
-- case R_PPC64_GOT_TPREL16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ case R_PPC64_TPREL16_LO:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_LO (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HI:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HI (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HA (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHER:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHEST:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHERA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHESTA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
- break;
-+#endif /* USE_TLS etc. */
-
-- case R_PPC64_GOT_DTPREL16_LO_DS:
-+#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
-+ case R_PPC64_ADDR16_LO_DS:
- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS", reloc_addr, refsym);
-+ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
- break;
-
- case R_PPC64_ADDR16_LO:
-- case R_PPC64_TPREL16_LO:
-- case R_PPC64_DTPREL16_LO:
-- case R_PPC64_GOT_TLSGD16_LO:
-- case R_PPC64_GOT_TLSLD16_LO:
- *(Elf64_Half *) reloc_addr = PPC_LO (value);
- break;
-
- case R_PPC64_ADDR16_HI:
-- case R_PPC64_TPREL16_HI:
-- case R_PPC64_DTPREL16_HI:
-- case R_PPC64_GOT_TPREL16_HI:
-- case R_PPC64_GOT_DTPREL16_HI:
-- case R_PPC64_GOT_TLSGD16_HI:
-- case R_PPC64_GOT_TLSLD16_HI:
- *(Elf64_Half *) reloc_addr = PPC_HI (value);
- break;
-
- case R_PPC64_ADDR16_HA:
-- case R_PPC64_TPREL16_HA:
-- case R_PPC64_DTPREL16_HA:
-- case R_PPC64_GOT_TLSGD16_HA:
-- case R_PPC64_GOT_TLSLD16_HA:
- *(Elf64_Half *) reloc_addr = PPC_HA (value);
- break;
-
-- case R_PPC64_REL24:
-+ case R_PPC64_ADDR30:
- {
- Elf64_Addr delta = value - (Elf64_Xword) reloc_addr;
-- if (dont_expect ((delta + 0x2000000) >= 0x4000000 || (delta & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_REL24", reloc_addr, sym, refsym);
-- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
-- delta, 0x3fffffc);
-+ if (dont_expect ((delta + 0x80000000) >= 0x10000000
-+ || (delta & 3) != 0))
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR30", reloc_addr, refsym);
-+ BIT_INSERT (*(Elf64_Word *) reloc_addr, delta, 0xfffffffc);
- }
- break;
-
- case R_PPC64_COPY:
- if (dont_expect (sym == NULL))
-- /* This can happen in trace mode when an object could not be found. */
-+ /* This can happen in trace mode when an object could not be found. */
- return;
- if (dont_expect (sym->st_size > refsym->st_size
-- || (GL(dl_verbose) && sym->st_size < refsym->st_size)))
-- {
-+ || (GL(dl_verbose) && sym->st_size < refsym->st_size)))
-+ {
- const char *strtab;
-
- strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-@@ -719,112 +766,77 @@
- " in shared object," \
- " consider re-linking\n",
- _dl_argv[0] ?: "<program name unknown>",
-- strtab + refsym->st_name);
-- }
-- memcpy (reloc_addr, (char *) value, MIN (sym->st_size, refsym->st_size));
-+ strtab + refsym->st_name);
-+ }
-+ memcpy (reloc_addr_arg, (char *) value,
-+ MIN (sym->st_size, refsym->st_size));
- return;
-
- case R_PPC64_UADDR64:
- /* We are big-endian. */
-- ((char *) reloc_addr)[0] = (value >> 56) & 0xff;
-- ((char *) reloc_addr)[1] = (value >> 48) & 0xff;
-- ((char *) reloc_addr)[2] = (value >> 40) & 0xff;
-- ((char *) reloc_addr)[3] = (value >> 32) & 0xff;
-- ((char *) reloc_addr)[4] = (value >> 24) & 0xff;
-- ((char *) reloc_addr)[5] = (value >> 16) & 0xff;
-- ((char *) reloc_addr)[6] = (value >> 8) & 0xff;
-- ((char *) reloc_addr)[7] = (value >> 0) & 0xff;
-+ ((char *) reloc_addr_arg)[0] = (value >> 56) & 0xff;
-+ ((char *) reloc_addr_arg)[1] = (value >> 48) & 0xff;
-+ ((char *) reloc_addr_arg)[2] = (value >> 40) & 0xff;
-+ ((char *) reloc_addr_arg)[3] = (value >> 32) & 0xff;
-+ ((char *) reloc_addr_arg)[4] = (value >> 24) & 0xff;
-+ ((char *) reloc_addr_arg)[5] = (value >> 16) & 0xff;
-+ ((char *) reloc_addr_arg)[6] = (value >> 8) & 0xff;
-+ ((char *) reloc_addr_arg)[7] = (value >> 0) & 0xff;
- return;
-
- case R_PPC64_UADDR32:
- /* We are big-endian. */
-- ((char *) reloc_addr)[0] = (value >> 24) & 0xff;
-- ((char *) reloc_addr)[1] = (value >> 16) & 0xff;
-- ((char *) reloc_addr)[2] = (value >> 8) & 0xff;
-- ((char *) reloc_addr)[3] = (value >> 0) & 0xff;
-+ ((char *) reloc_addr_arg)[0] = (value >> 24) & 0xff;
-+ ((char *) reloc_addr_arg)[1] = (value >> 16) & 0xff;
-+ ((char *) reloc_addr_arg)[2] = (value >> 8) & 0xff;
-+ ((char *) reloc_addr_arg)[3] = (value >> 0) & 0xff;
-+ return;
-+
-+ case R_PPC64_ADDR32:
-+ if (dont_expect ((value + 0x80000000) >= 0x10000000))
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR32", reloc_addr, refsym);
-+ *(Elf64_Word *) reloc_addr = value;
- return;
-
- case R_PPC64_ADDR24:
- if (dont_expect ((value + 0x2000000) >= 0x4000000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, sym, refsym);
-- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
-- value, 0x3fffffc);
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, refsym);
-+ BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0x3fffffc);
- break;
-
- case R_PPC64_ADDR16:
- if (dont_expect ((value + 0x8000) >= 0x10000))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR16", reloc_addr, refsym);
- *(Elf64_Half *) reloc_addr = value;
- break;
-
- case R_PPC64_UADDR16:
- if (dont_expect ((value + 0x8000) >= 0x10000))
-- _dl_reloc_overflow (map, "R_PPC64_UADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC64_UADDR16", reloc_addr, refsym);
- /* We are big-endian. */
-- ((char *) reloc_addr)[0] = (value >> 8) & 0xff;
-- ((char *) reloc_addr)[1] = (value >> 0) & 0xff;
-+ ((char *) reloc_addr_arg)[0] = (value >> 8) & 0xff;
-+ ((char *) reloc_addr_arg)[1] = (value >> 0) & 0xff;
- break;
-
- case R_PPC64_ADDR16_DS:
- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_TPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_DTPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_GOT_TPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_GOT_DTPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, refsym);
-+ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
- break;
-
- case R_PPC64_ADDR16_HIGHER:
-- case R_PPC64_TPREL16_HIGHER:
-- case R_PPC64_DTPREL16_HIGHER:
- *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
- break;
-
- case R_PPC64_ADDR16_HIGHEST:
-- case R_PPC64_TPREL16_HIGHEST:
-- case R_PPC64_DTPREL16_HIGHEST:
- *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
- break;
-
- case R_PPC64_ADDR16_HIGHERA:
-- case R_PPC64_TPREL16_HIGHERA:
-- case R_PPC64_DTPREL16_HIGHERA:
- *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
- break;
-
- case R_PPC64_ADDR16_HIGHESTA:
-- case R_PPC64_TPREL16_HIGHESTA:
-- case R_PPC64_DTPREL16_HIGHESTA:
- *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
- break;
-
-@@ -832,26 +844,30 @@
- case R_PPC64_ADDR14_BRTAKEN:
- case R_PPC64_ADDR14_BRNTAKEN:
- {
-- Elf64_Word insn;
- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, sym, refsym);
-- insn = BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0xfffc);
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, refsym);
-+ Elf64_Word insn = *(Elf64_Word *) reloc_addr;
-+ BIT_INSERT (insn, value, 0xfffc);
- if (r_type != R_PPC64_ADDR14)
-- {
-- insn &= ~(1 << 21);
-- if (r_type == R_PPC64_ADDR14_BRTAKEN)
-- insn |= 1 << 21;
-- if ((insn & (0x14 << 21)) == (0x04 << 21))
-- insn |= 0x02 << 21;
-- else if ((insn & (0x14 << 21)) == (0x10 << 21))
-- insn |= 0x08 << 21;
-- }
-+ {
-+ insn &= ~(1 << 21);
-+ if (r_type == R_PPC64_ADDR14_BRTAKEN)
-+ insn |= 1 << 21;
-+ if ((insn & (0x14 << 21)) == (0x04 << 21))
-+ insn |= 0x02 << 21;
-+ else if ((insn & (0x14 << 21)) == (0x10 << 21))
-+ insn |= 0x08 << 21;
-+ }
- *(Elf64_Word *) reloc_addr = insn;
- }
- break;
-
- case R_PPC64_REL32:
-- *(Elf64_Word *) reloc_addr = value - (Elf64_Xword) reloc_addr;
-+ *(Elf64_Word *) reloc_addr = value - (Elf64_Addr) reloc_addr;
-+ return;
-+
-+ case R_PPC64_REL64:
-+ *reloc_addr = value - (Elf64_Addr) reloc_addr;
- return;
- #endif /* !RTLD_BOOTSTRAP */
-
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/Makefile 2003-08-27 00:35:46.000000000 -0400
-@@ -0,0 +1,11 @@
-+# powerpc64/ELF specific definitions.
-+
-+# Need to prevent gcc from using fprs in code used during dynamic linking.
-+
-+CFLAGS-dl-runtime.os := -msoft-float
-+CFLAGS-dl-lookup.os := -msoft-float
-+CFLAGS-dl-misc.os := -msoft-float
-+CFLAGS-rtld-mempcpy.os := -msoft-float
-+CFLAGS-rtld-memmove.os := -msoft-float
-+CFLAGS-rtld-memchr.os := -msoft-float
-+CFLAGS-rtld-strnlen.os := -msoft-float
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure 2003-02-25 18:41:08.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure 2003-03-12 16:39:43.000000000 -0500
-@@ -70,7 +70,3 @@
- fi
- fi
-
--cat >>confdefs.h <<\_ACEOF
--#define PI_STATIC_AND_HIDDEN 1
--_ACEOF
--
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in 2003-02-25 18:26:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in 2003-03-12 16:39:43.000000000 -0500
-@@ -56,6 +56,3 @@
- fi
- fi
-
--dnl It is always possible to access static and hidden symbols in an
--dnl position independent way.
--AC_DEFINE(PI_STATIC_AND_HIDDEN)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/start.S 2002-12-09 22:41:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/start.S 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code for programs linked with GNU libc. PowerPC64 version.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,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
-@@ -21,7 +21,11 @@
- #include "bp-sym.h"
-
- /* These are the various addresses we require. */
-+#ifdef PIC
-+ .section ".data.rel.ro.local","aw"
-+#else
- .section ".rodata"
-+#endif
- .align 3
- L(start_addresses):
- .quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/
-@@ -52,6 +56,9 @@
-
- /* and continue in libc-start, in glibc. */
- b JUMPTARGET(BP_SYM(__libc_start_main))
-+/* The linker needs this nop to recognize that it's OK to call via a
-+ TOC adjusting stub. */
-+ nop
-
- END(_start)
-
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S 2003-05-12 12:13:08.000000000 -0400
-@@ -0,0 +1,211 @@
-+/* Optimized memcpy implementation for PowerPC64.
-+ Copyright (C) 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>
-+#include <bp-sym.h>
-+#include <bp-asm.h>
-+
-+/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-+ Returns 'dst'.
-+
-+ Memcpy handles short copies (< 32-bytes) using an unaligned
-+ word lwz/stw loop. The tail (remaining 1-3) bytes is handled with the
-+ appropriate combination of byte and halfword load/stores. There is no
-+ attempt to optimize the alignment of short moves. The 64-bit
-+ implementations of POWER3 and POWER4 do a reasonable job of handling
-+ unligned load/stores that do not cross 32-byte boundries.
-+
-+ Longer moves (>= 32-bytes) justify the effort to get at least the
-+ destination doubleword (8-byte) aligned. Further optimization is
-+ posible when both source and destination are doubleword aligned.
-+ Each case has a optimized unrolled loop. */
-+
-+EALIGN (BP_SYM (memcpy), 5, 0)
-+ cmpldi cr1,5,31
-+ neg 0,3
-+ std 30,-16(1)
-+ std 31,-8(1)
-+ rldicl. 0,0,0,61
-+ mr 12,4
-+ mr 31,5
-+ mr 30,3
-+ ble- cr1,.L2
-+ subf 31,0,5
-+
-+ /* Move 0-7 bytes as needed to get the destination doubleword alligned. */
-+ beq 0f
-+ mtcrf 0x01,0
-+1: bf 31,2f
-+ lbz 6,0(12)
-+ addi 12,12,1
-+ stb 6,0(3)
-+ addi 3,3,1
-+2: bf 30,4f
-+ lhz 6,0(12)
-+ addi 12,12,2
-+ sth 6,0(3)
-+ addi 3,3,2
-+4: bf 29,0f
-+ lwz 6,0(12)
-+ addi 12,12,4
-+ stw 6,0(3)
-+ addi 3,3,4
-+0:
-+ /* Copy doublewords from source to destination, assumpting the
-+ destination is aligned on a doubleword boundary.
-+
-+ First verify that there is > 7 bytes to copy and check if the source
-+ is also doubleword aligned. If there are < 8 bytes to copy fall
-+ through to the tail byte copy code. Otherwise if the source and
-+ destination are both doubleword aligned use an optimized doubleword
-+ copy loop. Otherwise the source has a different alignment and we use
-+ a load, shift, store strategy. */
-+ rldicl. 0,12,0,61
-+ cmpldi cr6,31,7
-+ ble- cr6,.L2 /* less than 8 bytes left. */
-+ bne- 0,.L6 /* Source is not DW aligned. */
-+ srdi. 9,31,3
-+ mr 10,3
-+ mr 11,12
-+
-+ /* Move doublewords where destination and source are aligned.
-+ Use a unrolled loop to copy 4 doubleword (32-bytes) per iteration.
-+ If the remainder is >0 and < 32 bytes copy 1-3 doublewords. */
-+ cmpldi cr1,9,4
-+ beq 0f
-+ mtcrf 0x01,9
-+ blt cr1,2f
-+ ld 6,0(11)
-+ .align 4
-+4:
-+ ld 7,8(11)
-+ addi 9,9,-4
-+ std 6,0(10)
-+ ld 6,16(11)
-+ std 7,8(10)
-+ ld 7,24(11)
-+ addi 11,11,32
-+ cmpldi cr1,9,4
-+ std 6,16(10)
-+ blt cr1,3f
-+ ld 6,0(11)
-+ std 7,24(10)
-+ addi 10,10,32
-+ b 4b
-+3: std 7,24(10)
-+ addi 10,10,32
-+2: bf 30,1f
-+ ld 6,0(11)
-+ ld 7,8(11)
-+ addi 11,11,16
-+ std 6,0(10)
-+ std 7,8(10)
-+ addi 10,10,16
-+1: bf 31,0f
-+ ld 6,0(11)
-+ addi 11,11,8
-+ std 6,0(10)
-+ addi 10,10,8
-+0:
-+
-+.L8:
-+ rldicr 0,31,0,60
-+ rldicl 31,31,0,61
-+ add 3,3,0
-+ add 12,12,0
-+
-+ /* Copy the tail for up to 31 bytes. If this is the tail of a longer
-+ copy then the destination will be aligned and the length will be
-+ less than 8. So it is normally not worth the set-up overhead to
-+ get doubleword aligned and do doubleword load/store. */
-+.L2:
-+ mr. 10,31
-+ cmpldi cr1,31,4
-+ beq 0f
-+ mtcrf 0x01,31
-+ blt cr1,2f
-+4: lwz 6,0(12)
-+ addi 12,12,4
-+ addi 10,10,-4
-+ stw 6,0(3)
-+ cmpldi cr1,10,4
-+ addi 3,3,4
-+ bge cr1,4b
-+2: bf 30,1f
-+ lhz 6,0(12)
-+ addi 12,12,2
-+ sth 6,0(3)
-+ addi 3,3,2
-+1: bf 31,0f
-+ lbz 6,0(12)
-+ addi 12,12,1
-+ stb 6,0(3)
-+ addi 3,3,1
-+0:
-+ /* Return original dst pointer. */
-+ ld 31,-8(1)
-+ mr 3,30
-+ ld 30,-16(1)
-+ blr
-+
-+.L6:
-+ srdi 11,31,3
-+ mr 4,3
-+ mr 5,12
-+
-+ /* Copy doublewords where the destination is aligned but the source is
-+ not. Use aligned doubleword loads from the source, shifted to realign
-+ the data, to allow aligned destination stores. */
-+ andi. 10,5,7
-+ andi. 0,11,1
-+ subf 5,10,5
-+ ld 6,0(5)
-+ sldi 10,10,3
-+ ld 7,8(5)
-+ subfic 9,10,64
-+ beq 2f
-+ sld 0,6,10
-+ addi 11,11,-1
-+ mr 6,7
-+ addi 4,4,-8
-+ cmpldi 11,0
-+ b 1f
-+2: addi 5,5,8
-+ .align 4
-+0: sld 0,6,10
-+ srd 8,7,9
-+ addi 11,11,-2
-+ ld 6,8(5)
-+ or 0,0,8
-+ cmpldi 11,0
-+ std 0,0(4)
-+ sld 0,7,10
-+1: srd 8,6,9
-+ or 0,0,8
-+ beq 8f
-+ ld 7,16(5)
-+ std 0,8(4)
-+ addi 5,5,16
-+ addi 4,4,16
-+ b 0b
-+8:
-+ std 0,8(4)
-+ b .L8
-+END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS)
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized memset implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -21,17 +21,12 @@
- #include <bp-sym.h>
- #include <bp-asm.h>
-
--/* Define a global static that can hold the cache line size. The
-+/* Define a global static that can hold the cache line size. The
- assumption is that startup code will access the "aux vector" to
-- to obtain the value set by the kernel and store it into this
-+ to obtain the value set by the kernel and store it into this
- variable. */
- .globl __cache_line_size
-- .section ".data"
-- .align 2
-- .type __cache_line_size,@object
-- .size __cache_line_size,4
--__cache_line_size:
-- .long 0
-+ .lcomm __cache_line_size,4,4
- .section ".toc","aw"
- .LC0:
- .tc __cache_line_size[TC],__cache_line_size
-@@ -81,7 +76,7 @@
- andi. rALIGN, rMEMP0, 7
- mr rMEMP, rMEMP0
- ble- cr1, L(small)
--
-+
- /* Align to doubleword boundary. */
- cmpldi cr5, rLEN, 31
- rlwimi rCHR, rCHR, 8, 16, 23 /* Replicate byte to halfword. */
-@@ -108,9 +103,9 @@
- bf+ 31, L(g0)
- stb rCHR, 0(rMEMP0)
- bt 30, L(aligned)
--L(g0):
-- sth rCHR, -2(rMEMP)
--
-+L(g0):
-+ sth rCHR, -2(rMEMP)
-+
- /* Handle the case of size < 31. */
- L(aligned2):
- rlwimi rCHR, rCHR, 16, 0, 15 /* Replicate halfword to word. */
-@@ -138,9 +133,9 @@
- L(caligned):
- cmpldi cr1, rCHR, 0
- clrrdi. rALIGN, rLEN, 5
-- mtcrf 0x01, rLEN
-+ mtcrf 0x01, rLEN
- beq cr1, L(zloopstart) /* Special case for clearing memory using dcbz. */
--L(nondcbz):
-+L(nondcbz):
- srdi rTMP, rALIGN, 5
- mtctr rTMP
- beq L(medium) /* We may not actually get to do a full line. */
-@@ -168,21 +163,21 @@
- .align 5
- /* Clear lines of memory in 128-byte chunks. */
- L(zloopstart):
--/* If the remaining length is less the 32 bytes, don't bother getting
-+/* If the remaining length is less the 32 bytes, don't bother getting
- the cache line size. */
- beq L(medium)
- ld rCLS,.LC0@toc(r2)
-- lwz rCLS,0(rCLS)
--/* If the cache line size was not set just goto to L(nondcbz) which is
-- safe for any cache line size. */
-+ lwz rCLS,0(rCLS)
-+/* If the cache line size was not set just goto to L(nondcbz) which is
-+ safe for any cache line size. */
- cmpldi cr1,rCLS,0
- beq cr1,L(nondcbz)
--
--
-+
-+
- /* Now we know the cache line size, and it is not 32-bytes, but
-- we may not yet be aligned to the cache line. May have a partial
-- line to fill, so touch it 1st. */
-- dcbt 0,rMEMP
-+ we may not yet be aligned to the cache line. May have a partial
-+ line to fill, so touch it 1st. */
-+ dcbt 0,rMEMP
- addi rCLM,rCLS,-1
- L(getCacheAligned):
- cmpldi cr1,rLEN,32
-@@ -196,8 +191,8 @@
- std rCHR,-16(rMEMP)
- std rCHR,-8(rMEMP)
- b L(getCacheAligned)
--
--/* Now we are aligned to the cache line and can use dcbz. */
-+
-+/* Now we are aligned to the cache line and can use dcbz. */
- L(cacheAligned):
- cmpld cr1,rLEN,rCLS
- blt cr1,L(handletail32)
-@@ -208,7 +203,7 @@
-
- /* We are here because the cache line size was set and was not 32-bytes
- and the remainder (rLEN) is less than the actual cache line size.
-- So set up the preconditions for L(nondcbz) and go there. */
-+ So set up the preconditions for L(nondcbz) and go there. */
- L(handletail32):
- clrrwi. rALIGN, rLEN, 5
- b L(nondcbz)
-@@ -264,7 +259,7 @@
- bf- 29, L(medium_29f)
- L(medium_29t):
- stwu rCHR, -4(rMEMP)
-- blt- cr1, L(medium_27f)
-+ blt- cr1, L(medium_27f)
- L(medium_27t):
- std rCHR, -8(rMEMP)
- stdu rCHR, -16(rMEMP)
-@@ -274,8 +269,9 @@
- std rCHR, -8(rMEMP)
- blr
- END_GEN_TB (BP_SYM (memset),TB_TOCLESS)
-+libc_hidden_builtin_def (memset)
-
--/* Copied from bzero.S to prevent the linker from inserting a stub
-+/* Copied from bzero.S to prevent the linker from inserting a stub
- between bzero and memset. */
- ENTRY (BP_SYM (__bzero))
- #if __BOUNDED_POINTERS__
-@@ -293,4 +289,3 @@
- END_GEN_TB (BP_SYM (__bzero),TB_TOCLESS)
-
- weak_alias (BP_SYM (__bzero), BP_SYM (bzero))
--
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/strchr.S 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strchr.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strchr implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -29,6 +29,11 @@
-
- #define rTMP1 r0
- #define rRTN r3 /* outgoing result */
-+/* Note: The Bounded pointer support in this code is broken. This code
-+ was inherited from PPC32 and and that support was never completed.
-+ Currently PPC gcc does not support -fbounds-check or -fbounded-pointers.
-+ These artifacts are left in the code as a reminder in case we need
-+ bounded pointer support in the future. */
- #if __BOUNDED_POINTERS__
- # define rSTR r4
- # define rCHR r5 /* byte we're looking for, spread over the whole word */
-@@ -39,8 +44,8 @@
- # define rWORD r5 /* the current word */
- #endif
- #define rCLZB rCHR /* leading zero byte count */
--#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
--#define r7F7F r7 /* constant 0x7f7f7f7f */
-+#define rFEFE r6 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
-+#define r7F7F r7 /* constant 0x7f7f7f7f7f7f7f7f */
- #define rTMP2 r9
- #define rIGN r10 /* number of bits we should ignore in the first word */
- #define rMASK r11 /* mask with the bits to ignore set to 0 */
-@@ -49,18 +54,23 @@
- CHECK_BOUNDS_LOW (rSTR, rTMP1, rTMP2)
- STORE_RETURN_BOUNDS (rTMP1, rTMP2)
-
-+ dcbt 0,rRTN
- rlwimi rCHR, rCHR, 8, 16, 23
- li rMASK, -1
- rlwimi rCHR, rCHR, 16, 0, 15
-- rlwinm rIGN, rRTN, 3, 27, 28
-+ rlwinm rIGN, rRTN, 3, 26, 28
-+ insrdi rCHR, rCHR, 32, 0
- lis rFEFE, -0x101
- lis r7F7F, 0x7f7f
-- clrrdi rSTR, rRTN, 2
-+ clrrdi rSTR, rRTN, 3
- addi rFEFE, rFEFE, -0x101
- addi r7F7F, r7F7F, 0x7f7f
-+ sldi rTMP1, rFEFE, 32
-+ insrdi r7F7F, r7F7F, 32, 0
-+ add rFEFE, rFEFE, rTMP1
- /* Test the first (partial?) word. */
-- lwz rWORD, 0(rSTR)
-- srw rMASK, rMASK, rIGN
-+ ld rWORD, 0(rSTR)
-+ srd rMASK, rMASK, rIGN
- orc rWORD, rWORD, rMASK
- add rTMP1, rFEFE, rWORD
- nor rTMP2, r7F7F, rWORD
-@@ -71,7 +81,7 @@
-
- /* The loop. */
-
--L(loop):lwzu rWORD, 4(rSTR)
-+L(loop):ldu rWORD, 8(rSTR)
- and. rTMP1, rTMP1, rTMP2
- /* Test for 0. */
- add rTMP1, rFEFE, rWORD
-@@ -104,12 +114,12 @@
- add rTMP1, rTMP1, r7F7F
- nor rWORD, rMASK, rFEFE
- nor rTMP2, rIGN, rTMP1
-- cmplw rWORD, rTMP2
-+ cmpld rWORD, rTMP2
- bgtlr
-- cntlzw rCLZB, rTMP2
-- srwi rCLZB, rCLZB, 3
-+ cntlzd rCLZB, rTMP2
-+ srdi rCLZB, rCLZB, 3
- add rRTN, rSTR, rCLZB
-- CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
-+ CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, tdlge)
- STORE_RETURN_VALUE (rSTR)
- blr
-
-@@ -118,13 +128,14 @@
- or rIGN, r7F7F, rTMP3
- add rTMP1, rTMP1, r7F7F
- nor rTMP2, rIGN, rTMP1
-- cntlzw rCLZB, rTMP2
-- subi rSTR, rSTR, 4
-- srwi rCLZB, rCLZB, 3
-+ cntlzd rCLZB, rTMP2
-+ subi rSTR, rSTR, 8
-+ srdi rCLZB, rCLZB, 3
- add rRTN, rSTR, rCLZB
-- CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
-+ CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, tdlge)
- STORE_RETURN_VALUE (rSTR)
- blr
- END (BP_SYM (strchr))
-
- weak_alias (BP_SYM (strchr), BP_SYM (index))
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/strcmp.S 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strcmp.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strcmp implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -31,42 +31,50 @@
- #define rRTN r3
- #define rSTR1 r3 /* first string arg */
- #define rSTR2 r4 /* second string arg */
-+/* Note: The Bounded pointer support in this code is broken. This code
-+ was inherited from PPC32 and and that support was never completed.
-+ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
-+ These artifacts are left in the code as a reminder in case we need
-+ bounded pointer support in the future. */
- #if __BOUNDED_POINTERS__
- # define rHIGH1 r11
- # define rHIGH2 r12
- #endif
- #define rWORD1 r5 /* current word in s1 */
- #define rWORD2 r6 /* current word in s2 */
--#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
--#define r7F7F r8 /* constant 0x7f7f7f7f */
--#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
-+#define rFEFE r7 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
-+#define r7F7F r8 /* constant 0x7f7f7f7f7f7f7f7f */
-+#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
- #define rBITDIF r10 /* bits that differ in s1 & s2 words */
-
- CHECK_BOUNDS_LOW (rSTR1, rTMP, rHIGH1)
- CHECK_BOUNDS_LOW (rSTR2, rTMP, rHIGH2)
-
-+ dcbt 0,rSTR1
- or rTMP, rSTR2, rSTR1
-- clrldi. rTMP, rTMP, 62
-+ dcbt 0,rSTR2
-+ clrldi. rTMP, rTMP, 61
- lis rFEFE, -0x101
- bne L(unaligned)
-
-- lwz rWORD1, 0(rSTR1)
-- lwz rWORD2, 0(rSTR2)
-+ ld rWORD1, 0(rSTR1)
-+ ld rWORD2, 0(rSTR2)
- lis r7F7F, 0x7f7f
- addi rFEFE, rFEFE, -0x101
-- clrldi rFEFE,rFEFE,32 /* clear upper 32 */
- addi r7F7F, r7F7F, 0x7f7f
-+ sldi rTMP, rFEFE, 32
-+ insrdi r7F7F, r7F7F, 32, 0
-+ add rFEFE, rFEFE, rTMP
- b L(g1)
-
--L(g0): lwzu rWORD1, 4(rSTR1)
-+L(g0): ldu rWORD1, 8(rSTR1)
- bne cr1, L(different)
-- lwzu rWORD2, 4(rSTR2)
-+ ldu rWORD2, 8(rSTR2)
- L(g1): add rTMP, rFEFE, rWORD1
- nor rNEG, r7F7F, rWORD1
-
-- clrldi rNEG,rNEG,32 /* clear upper 32 */
- and. rTMP, rTMP, rNEG
-- cmpw cr1, rWORD1, rWORD2
-+ cmpd cr1, rWORD1, rWORD2
- beq+ L(g0)
- L(endstring):
- /* OK. We've hit the end of the string. We need to be careful that
-@@ -77,29 +85,34 @@
- add rTMP, rTMP, r7F7F
- xor. rBITDIF, rWORD1, rWORD2
-
-- extsw. rBITDIF,rBITDIF /* propagate sign for blt */
- andc rNEG, rNEG, rTMP
- blt- L(highbit)
-- cntlzw rBITDIF, rBITDIF
-- cntlzw rNEG, rNEG
-+ cntlzd rBITDIF, rBITDIF
-+ cntlzd rNEG, rNEG
- addi rNEG, rNEG, 7
-- cmpw cr1, rNEG, rBITDIF
-+ cmpd cr1, rNEG, rBITDIF
- sub rRTN, rWORD1, rWORD2
-- bgelr+ cr1
-+ blt- cr1, L(equal)
-+ sradi rRTN, rRTN, 63
-+ ori rRTN, rRTN, 1
-+ blr
- L(equal):
- li rRTN, 0
- /* GKM FIXME: check high bounds. */
- blr
-
- L(different):
-- lwz rWORD1, -4(rSTR1)
-+ ld rWORD1, -8(rSTR1)
- xor. rBITDIF, rWORD1, rWORD2
--
-- extsw. rBITDIF,rBITDIF /* propagate sign for bgelr */
- sub rRTN, rWORD1, rWORD2
-- bgelr+
-+ blt- L(highbit)
-+ sradi rRTN, rRTN, 63
-+ ori rRTN, rRTN, 1
-+ blr
- L(highbit):
-- ori rRTN, rWORD2, 1
-+ srdi rWORD2, rWORD2, 56
-+ srdi rWORD1, rWORD1, 56
-+ sub rRTN, rWORD1, rWORD2
- /* GKM FIXME: check high bounds. */
- blr
-
-@@ -116,12 +129,12 @@
- lbzu rWORD2, 1(rSTR2)
- L(u1): cmpwi cr1, rWORD1, 0
- beq- cr1, L(u3)
-- cmpw rWORD1, rWORD2
-+ cmpd rWORD1, rWORD2
- bne- L(u3)
- lbzu rWORD1, 1(rSTR1)
- lbzu rWORD2, 1(rSTR2)
-- cmpwi cr1, rWORD1, 0
-- cmpw rWORD1, rWORD2
-+ cmpdi cr1, rWORD1, 0
-+ cmpd rWORD1, rWORD2
- bne+ cr1, L(u0)
- L(u3): sub rRTN, rWORD1, rWORD2
- /* GKM FIXME: check high bounds. */
-@@ -131,3 +144,4 @@
- /* GKM FIXME: check high bounds. */
- blr
- END (BP_SYM (strcmp))
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/strcpy.S 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strcpy.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strcpy implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -29,6 +29,11 @@
-
- #define rTMP r0
- #define rRTN r3 /* incoming DEST arg preserved as result */
-+/* Note. The Bounded pointer support in this code is broken. This code
-+ was inherited from PPC32 and and that support was never completed.
-+ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
-+ These artifacts are left in the code as a reminder in case we need
-+ bounded pointer support in the future. */
- #if __BOUNDED_POINTERS__
- # define rDEST r4 /* pointer to previous word in dest */
- # define rSRC r5 /* pointer to previous word in src */
-@@ -39,39 +44,44 @@
- # define rDEST r5 /* pointer to previous word in dest */
- #endif
- #define rWORD r6 /* current word from src */
--#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
--#define r7F7F r8 /* constant 0x7f7f7f7f */
--#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
-+#define rFEFE r7 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
-+#define r7F7F r8 /* constant 0x7f7f7f7f7f7f7f7f */
-+#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
- #define rALT r10 /* alternate word from src */
-
- CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
- CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
- STORE_RETURN_BOUNDS (rLOW, rHIGH)
-
-+ dcbt 0,rSRC
- or rTMP, rSRC, rRTN
-- clrldi. rTMP, rTMP, 62
-+ clrldi. rTMP, rTMP, 61
- #if __BOUNDED_POINTERS__
-- addi rDEST, rDEST, -4
-+ addi rDEST, rDEST, -8
- #else
-- addi rDEST, rRTN, -4
-+ addi rDEST, rRTN, -8
- #endif
-+ dcbtst 0,rRTN
- bne L(unaligned)
-
- lis rFEFE, -0x101
- lis r7F7F, 0x7f7f
-- lwz rWORD, 0(rSRC)
-+ ld rWORD, 0(rSRC)
- addi rFEFE, rFEFE, -0x101
- addi r7F7F, r7F7F, 0x7f7f
-+ sldi rTMP, rFEFE, 32
-+ insrdi r7F7F, r7F7F, 32, 0
-+ add rFEFE, rFEFE, rTMP
- b L(g2)
-
--L(g0): lwzu rALT, 4(rSRC)
-- stwu rWORD, 4(rDEST)
-+L(g0): ldu rALT, 8(rSRC)
-+ stdu rWORD, 8(rDEST)
- add rTMP, rFEFE, rALT
- nor rNEG, r7F7F, rALT
- and. rTMP, rTMP, rNEG
- bne- L(g1)
-- lwzu rWORD, 4(rSRC)
-- stwu rALT, 4(rDEST)
-+ ldu rWORD, 8(rSRC)
-+ stdu rALT, 8(rDEST)
- L(g2): add rTMP, rFEFE, rWORD
- nor rNEG, r7F7F, rWORD
- and. rTMP, rTMP, rNEG
-@@ -79,16 +89,29 @@
-
- mr rALT, rWORD
- /* We've hit the end of the string. Do the rest byte-by-byte. */
--L(g1): rlwinm. rTMP, rALT, 8, 24, 31
-- stb rTMP, 4(rDEST)
-+L(g1):
-+ extrdi. rTMP, rALT, 8, 0
-+ stb rTMP, 8(rDEST)
- beqlr-
-- rlwinm. rTMP, rALT, 16, 24, 31
-- stb rTMP, 5(rDEST)
-+ extrdi. rTMP, rALT, 8, 8
-+ stb rTMP, 9(rDEST)
- beqlr-
-- rlwinm. rTMP, rALT, 24, 24, 31
-- stb rTMP, 6(rDEST)
-+ extrdi. rTMP, rALT, 8, 16
-+ stb rTMP, 10(rDEST)
- beqlr-
-- stb rALT, 7(rDEST)
-+ extrdi. rTMP, rALT, 8, 24
-+ stb rTMP, 11(rDEST)
-+ beqlr-
-+ extrdi. rTMP, rALT, 8, 32
-+ stb rTMP, 12(rDEST)
-+ beqlr-
-+ extrdi. rTMP, rALT, 8, 40
-+ stb rTMP, 13(rDEST)
-+ beqlr-
-+ extrdi. rTMP, rALT, 8, 48
-+ stb rTMP, 14(rDEST)
-+ beqlr-
-+ stb rALT, 15(rDEST)
- /* GKM FIXME: check high bound. */
- blr
-
-@@ -118,3 +141,4 @@
- blr
-
- END (BP_SYM (strcpy))
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/strlen.S 2002-09-17 19:50:02.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strlen.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Optimized strlen implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -60,7 +60,12 @@
- 2) How popular are bytes with the high bit set? If they are very rare,
- on some processors it might be useful to use the simpler expression
- ~((x - 0x01010101) | 0x7f7f7f7f) (that is, on processors with only one
-- ALU), but this fails when any character has its high bit set. */
-+ ALU), but this fails when any character has its high bit set.
-+
-+ Answer:
-+ 1) Added a Data Cache Block Touch early to prefetch the first 128
-+ byte cache line. Adding dcbt instructions to the loop would not be
-+ effective since most strings will be shorter than the cache line.*/
-
- /* Some notes on register usage: Under the SVR4 ABI, we can use registers
- 0 and 3 through 12 (so long as we don't call any procedures) without
-@@ -80,63 +85,68 @@
- #define rSTR r4 /* current string position */
- #define rPADN r5 /* number of padding bits we prepend to the
- string to make it start at a word boundary */
--#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
--#define r7F7F r7 /* constant 0x7f7f7f7f */
--#define rWORD1 r8 /* current string word */
--#define rWORD2 r9 /* next string word */
--#define rMASK r9 /* mask for first string word */
-+#define rFEFE r6 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
-+#define r7F7F r7 /* constant 0x7f7f7f7f7f7f7f7f */
-+#define rWORD1 r8 /* current string doubleword */
-+#define rWORD2 r9 /* next string doubleword */
-+#define rMASK r9 /* mask for first string doubleword */
- #define rTMP2 r10
- #define rTMP3 r11
- #define rTMP4 r12
-
-+/* Note: The Bounded pointer support in this code is broken. This code
-+ was inherited from PPC32 and and that support was never completed.
-+ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
-+ These artifacts are left in the code as a reminder in case we need
-+ bounded pointer support in the future. */
- CHECK_BOUNDS_LOW (rRTN, rTMP1, rTMP2)
-
-- clrrdi rSTR, rRTN, 2
-+ dcbt 0,rRTN
-+ clrrdi rSTR, rRTN, 3
- lis r7F7F, 0x7f7f
-- rlwinm rPADN, rRTN, 3, 27, 28
-- lwz rWORD1, 0(rSTR)
-- li rMASK, -1
-+ rlwinm rPADN, rRTN, 3, 26, 28
-+ ld rWORD1, 0(rSTR)
- addi r7F7F, r7F7F, 0x7f7f
--/* That's the setup done, now do the first pair of words.
-- We make an exception and use method (2) on the first two words, to reduce
-- overhead. */
-- srw rMASK, rMASK, rPADN
-+ li rMASK, -1
-+ insrdi r7F7F, r7F7F, 32, 0
-+/* That's the setup done, now do the first pair of doublewords.
-+ We make an exception and use method (2) on the first two doublewords,
-+ to reduce overhead. */
-+ srd rMASK, rMASK, rPADN
- and rTMP1, r7F7F, rWORD1
- or rTMP2, r7F7F, rWORD1
-+ lis rFEFE, -0x101
- add rTMP1, rTMP1, r7F7F
-+ addi rFEFE, rFEFE, -0x101
- nor rTMP1, rTMP2, rTMP1
- and. rWORD1, rTMP1, rMASK
- mtcrf 0x01, rRTN
- bne L(done0)
-- lis rFEFE, -0x101
-- addi rFEFE, rFEFE, -0x101
-- clrldi rFEFE,rFEFE,32 /* clear upper 32 */
-+ sldi rTMP1, rFEFE, 32
-+ add rFEFE, rFEFE, rTMP1
- /* Are we now aligned to a doubleword boundary? */
-- bt 29, L(loop)
-+ bt 28, L(loop)
-
--/* Handle second word of pair. */
-- lwzu rWORD1, 4(rSTR)
-+/* Handle second doubleword of pair. */
-+ ldu rWORD1, 8(rSTR)
- and rTMP1, r7F7F, rWORD1
- or rTMP2, r7F7F, rWORD1
- add rTMP1, rTMP1, r7F7F
- nor. rWORD1, rTMP2, rTMP1
-- clrldi. rWORD1,rWORD1,32 /* clear upper 32 */
- bne L(done0)
-
- /* The loop. */
-
- L(loop):
-- lwz rWORD1, 4(rSTR)
-- lwzu rWORD2, 8(rSTR)
-+ ld rWORD1, 8(rSTR)
-+ ldu rWORD2, 16(rSTR)
- add rTMP1, rFEFE, rWORD1
- nor rTMP2, r7F7F, rWORD1
- and. rTMP1, rTMP1, rTMP2
-- clrldi. rTMP1,rTMP1,32 /* clear upper 32 */
- add rTMP3, rFEFE, rWORD2
- nor rTMP4, r7F7F, rWORD2
- bne L(done1)
- and. rTMP1, rTMP3, rTMP4
-- clrldi. rTMP1,rTMP1,32 /* clear upper 32 */
- beq L(loop)
-
- and rTMP1, r7F7F, rWORD2
-@@ -146,18 +156,19 @@
-
- L(done1):
- and rTMP1, r7F7F, rWORD1
-- subi rSTR, rSTR, 4
-+ subi rSTR, rSTR, 8
- add rTMP1, rTMP1, r7F7F
- andc rWORD1, rTMP2, rTMP1
-
--/* When we get to here, rSTR points to the first word in the string that
-+/* When we get to here, rSTR points to the first doubleword in the string that
- contains a zero byte, and the most significant set bit in rWORD1 is in that
- byte. */
- L(done0):
-- cntlzw rTMP3, rWORD1
-+ cntlzd rTMP3, rWORD1
- subf rTMP1, rRTN, rSTR
-- srwi rTMP3, rTMP3, 3
-+ srdi rTMP3, rTMP3, 3
- add rRTN, rTMP1, rTMP3
- /* GKM FIXME: check high bound. */
- blr
- END (BP_SYM (strlen))
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h 2003-01-12 03:09:45.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h 2003-08-21 08:37:09.000000000 -0400
-@@ -34,11 +34,16 @@
- .pushsection; \
- .section ".data"; \
- .align ALIGNARG(2); \
--0: .long 0; \
-+__mcount: \
-+ .long 0; \
-+ .previous; \
-+ .section ".toc","aw"; \
-+.LC__mcount:; \
-+ .tc __mcount[TC],__mcount; \
- .previous; \
- mflr r0; \
- std r0,16(r1); \
-- ld r0,0b@got(r2); \
-+ ld r0,.LC__mcount@toc(r2); \
- bl JUMPTARGET(_mcount);
- #else /* SYSV_ELF_PROFILING */
- #define CALL_MCOUNT \
-@@ -52,11 +57,16 @@
- .pushsection; \
- .section ".data"; \
- .align ALIGNARG(2); \
--0: .long 0; \
-+__mcount: \
-+ .long 0; \
-+ .previous; \
-+ .section ".toc","aw"; \
-+.LC__mcount:; \
-+ .tc __mcount[TC],__mcount; \
- .previous; \
- mflr r0; \
- std r0,16(r1); \
-- ld r0,0b@got(r2); \
-+ ld r0,.LC__mcount@toc(r2); \
- bl JUMPTARGET(_mcount);
- #else /* SYSV_ELF_PROFILING */
- #define CALL_MCOUNT \
-@@ -225,6 +235,34 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_NOERRNO \
-+ blr
-+
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_ERRVAL \
-+ blr
-+
-+#define ret_ERRVAL PSEUDO_RET_ERRVAL
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
- /* Label in text section. */
- /* ppc64 function descriptors which requires . notation */
- #define C_TEXT(name) .##name
---- glibc-2.3.2/sysdeps/powerpc/strcat.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/powerpc/strcat.c 2003-05-12 12:13:07.000000000 -0400
-@@ -1,5 +1,5 @@
- /* strcat version that uses fast strcpy/strlen.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 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
-@@ -28,3 +28,4 @@
- strcpy (dest + strlen (dest), src);
- return dest;
- }
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/powerpc/test-arith.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/test-arith.c 2002-11-16 08:56:55.000000000 -0500
-@@ -0,0 +1,605 @@
-+/* Test floating-point arithmetic operations.
-+ Copyright (C) 1997, 1998 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 _GNU_SOURCE
-+#define _GNU_SOURCE
-+#endif
-+#include <math.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <fenv.h>
-+#include <assert.h>
-+
-+#ifndef ESIZE
-+typedef double tocheck_t;
-+#define ESIZE 11
-+#define MSIZE 52
-+#define FUNC(x) x
-+#endif
-+
-+#define R_NEAREST 1
-+#define R_ZERO 2
-+#define R_UP 4
-+#define R_DOWN 8
-+#define R_ALL (R_NEAREST|R_ZERO|R_UP|R_DOWN)
-+static fenv_t rmodes[4];
-+static const char * const rmnames[4] =
-+{ "nearest","zero","+Inf","-Inf" };
-+
-+typedef union {
-+ tocheck_t tc;
-+ unsigned char c[sizeof(tocheck_t)];
-+} union_t;
-+
-+/* Don't try reading these in a font that doesn't distinguish
-+ O and zero. */
-+typedef enum {
-+ P_Z = 0x0, /* 00000...0 */
-+ P_000O = 0x1, /* 00011...1 */
-+ P_001Z = 0x2, /* 00100...0 */
-+ P_00O = 0x3, /* 00111...1 */
-+ P_01Z = 0x4, /* 01000...0 */
-+ P_010O = 0x5, /* 01011...1 */
-+ P_011Z = 0x6, /* 01100...0 */
-+ P_0O = 0x7, /* 01111...1 */
-+ P_1Z = 0x8, /* 10000...0 */
-+ P_100O = 0x9, /* 10011...1 */
-+ P_101Z = 0xa, /* 10100...0 */
-+ P_10O = 0xb, /* 10111...1 */
-+ P_11Z = 0xc, /* 11000...0 */
-+ P_110O = 0xd, /* 11011...1 */
-+ P_111Z = 0xe, /* 11100...0 */
-+ P_O = 0xf, /* 11111...1 */
-+ P_Z1 = 0x11, /* 000...001 */
-+ P_Z10 = 0x12, /* 000...010 */
-+ P_Z11 = 0x13, /* 000...011 */
-+ P_0O00 = 0x14, /* 011...100 */
-+ P_0O01 = 0x15, /* 011...101 */
-+ P_0O0 = 0x16, /* 011...110 */
-+ P_1Z1 = 0x19, /* 100...001 */
-+ P_1Z10 = 0x1a, /* 100...010 */
-+ P_1Z11 = 0x1b, /* 100...011 */
-+ P_O00 = 0x1c, /* 111...100 */
-+ P_O01 = 0x1d, /* 111...101 */
-+ P_O0 = 0x1e, /* 111...110 */
-+ P_R = 0x20, /* rrr...rrr */ /* ('r' means random. ) */
-+ P_Ro = 0x21, /* rrr...rrr, with odd parity. */
-+ P_0R = 0x22, /* 0rr...rrr */
-+ P_1R = 0x23, /* 1rr...rrr */
-+ P_Rno = 0x24, /* rrr...rrr, but not all ones. */
-+} pattern_t;
-+
-+static void
-+pattern_fill(pattern_t ptn, unsigned char *start, int bitoffset, int count)
-+{
-+#define bitset(count, value) \
-+ start[(count)/8] = (start[(count)/8] & ~(1 << 7-(count)%8) \
-+ | (value) << 7-(count)%8)
-+ int i;
-+
-+ if (ptn >= 0 && ptn <= 0xf)
-+ {
-+ /* Patterns between 0 and 0xF have the following format:
-+ The LSBit is used to fill the last n-3 bits of the pattern;
-+ The next 3 bits are the first 3 bits of the pattern. */
-+ for (i = 0; i < count; i++)
-+ if (i < 3)
-+ bitset((bitoffset+i), ptn >> (3-i) & 1);
-+ else
-+ bitset((bitoffset+i), ptn >> 0 & 1);
-+ }
-+ else if (ptn <= 0x1f)
-+ {
-+ /* Patterns between 0x10 and 0x1F have the following format:
-+ The two LSBits are the last two bits of the pattern;
-+ The 0x8 bit is the first bit of the pattern;
-+ The 0x4 bit is used to fill the remainder. */
-+ for (i = 0; i < count; i++)
-+ if (i == 0)
-+ bitset((bitoffset+i), ptn >> 3 & 1);
-+ else if (i >= count-2)
-+ bitset((bitoffset+i), ptn >> (count-1-i) & 1);
-+ else
-+ bitset((bitoffset+i), ptn >> 2 & 1);
-+ }
-+ else switch (ptn)
-+ {
-+ case P_0R: case P_1R:
-+ assert(count > 0);
-+ bitset(bitoffset, ptn & 1);
-+ count--;
-+ bitoffset++;
-+ case P_R:
-+ for (; count > 0; count--, bitoffset++)
-+ bitset(bitoffset, rand() & 1);
-+ break;
-+ case P_Ro:
-+ {
-+ int op = 1;
-+ assert(count > 0);
-+ for (; count > 1; count--, bitoffset++)
-+ bitset(bitoffset, op ^= (rand() & 1));
-+ bitset(bitoffset, op);
-+ break;
-+ }
-+ case P_Rno:
-+ {
-+ int op = 1;
-+ assert(count > 0);
-+ for (; count > 1; count--, bitoffset++)
-+ {
-+ int r = rand() & 1;
-+ op &= r;
-+ bitset(bitoffset, r);
-+ }
-+ bitset(bitoffset, rand() & (op ^ 1));
-+ break;
-+ }
-+
-+ default:
-+ assert(0);
-+ }
-+#undef bitset
-+}
-+
-+static tocheck_t
-+pattern(int negative, pattern_t exp, pattern_t mant)
-+{
-+ union_t result;
-+#if 0
-+ int i;
-+#endif
-+
-+ pattern_fill(negative ? P_O : P_Z, result.c, 0, 1);
-+ pattern_fill(exp, result.c, 1, ESIZE);
-+ pattern_fill(mant, result.c, ESIZE+1, MSIZE);
-+#if 0
-+ printf("neg=%d exp=%02x mant=%02x: ", negative, exp, mant);
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", result.c[i]);
-+ printf("\n");
-+#endif
-+ return result.tc;
-+}
-+
-+/* Return the closest different tocheck_t to 'x' in the direction of
-+ 'direction', or 'x' if there is no such value. Assumes 'x' is not
-+ a NaN. */
-+static tocheck_t
-+delta(tocheck_t x, int direction)
-+{
-+ union_t xx;
-+ int i;
-+
-+ xx.tc = x;
-+ if (xx.c[0] & 0x80)
-+ direction = -direction;
-+ if (direction == +1)
-+ {
-+ union_t tx;
-+ tx.tc = pattern(xx.c[0] >> 7, P_O, P_Z);
-+ if (memcmp(tx.c, xx.c, sizeof(tocheck_t)) == 0)
-+ return x;
-+ }
-+ for (i = sizeof(tocheck_t)-1; i > 0; i--)
-+ {
-+ xx.c[i] += direction;
-+ if (xx.c[i] != (direction > 0 ? 0 : 0xff))
-+ return xx.tc;
-+ }
-+ if (direction < 0 && (xx.c[0] & 0x7f) == 0)
-+ return pattern(~(xx.c[0] >> 7) & 1, P_Z, P_Z1);
-+ else
-+ {
-+ xx.c[0] += direction;
-+ return xx.tc;
-+ }
-+}
-+
-+static int nerrors = 0;
-+
-+#ifdef FE_ALL_INVALID
-+static const int all_exceptions = FE_ALL_INVALID | FE_ALL_EXCEPT;
-+#else
-+static const int all_exceptions = FE_ALL_EXCEPT;
-+#endif
-+
-+static void
-+check_result(int line, const char *rm, tocheck_t expected, tocheck_t actual)
-+{
-+ if (memcmp(&expected, &actual, sizeof(tocheck_t)) != 0)
-+ {
-+ unsigned char *ex, *ac;
-+ size_t i;
-+
-+ printf("%s:%d:round %s:result failed\n"
-+ " expected result 0x", __FILE__, line, rm);
-+ ex = (unsigned char *)&expected;
-+ ac = (unsigned char *)&actual;
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", ex[i]);
-+ printf(" got 0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", ac[i]);
-+ printf("\n");
-+ nerrors++;
-+ }
-+}
-+
-+static const struct {
-+ int except;
-+ const char *name;
-+} excepts[] = {
-+#define except_entry(ex) { ex, #ex } ,
-+#ifdef FE_INEXACT
-+ except_entry(FE_INEXACT)
-+#else
-+# define FE_INEXACT 0
-+#endif
-+#ifdef FE_DIVBYZERO
-+ except_entry(FE_DIVBYZERO)
-+#else
-+# define FE_DIVBYZERO 0
-+#endif
-+#ifdef FE_UNDERFLOW
-+ except_entry(FE_UNDERFLOW)
-+#else
-+# define FE_UNDERFLOW 0
-+#endif
-+#ifdef FE_OVERFLOW
-+ except_entry(FE_OVERFLOW)
-+#else
-+# define FE_OVERFLOW 0
-+#endif
-+#ifdef FE_INVALID
-+ except_entry(FE_INVALID)
-+#else
-+# define FE_INVALID 0
-+#endif
-+#ifdef FE_INVALID_SNAN
-+ except_entry(FE_INVALID_SNAN)
-+#else
-+# define FE_INVALID_SNAN FE_INVALID
-+#endif
-+#ifdef FE_INVALID_ISI
-+ except_entry(FE_INVALID_ISI)
-+#else
-+# define FE_INVALID_ISI FE_INVALID
-+#endif
-+#ifdef FE_INVALID_IDI
-+ except_entry(FE_INVALID_IDI)
-+#else
-+# define FE_INVALID_IDI FE_INVALID
-+#endif
-+#ifdef FE_INVALID_ZDZ
-+ except_entry(FE_INVALID_ZDZ)
-+#else
-+# define FE_INVALID_ZDZ FE_INVALID
-+#endif
-+#ifdef FE_INVALID_COMPARE
-+ except_entry(FE_INVALID_COMPARE)
-+#else
-+# define FE_INVALID_COMPARE FE_INVALID
-+#endif
-+#ifdef FE_INVALID_SOFTWARE
-+ except_entry(FE_INVALID_SOFTWARE)
-+#else
-+# define FE_INVALID_SOFTWARE FE_INVALID
-+#endif
-+#ifdef FE_INVALID_SQRT
-+ except_entry(FE_INVALID_SQRT)
-+#else
-+# define FE_INVALID_SQRT FE_INVALID
-+#endif
-+#ifdef FE_INVALID_INTEGER_CONVERSION
-+ except_entry(FE_INVALID_INTEGER_CONVERSION)
-+#else
-+# define FE_INVALID_INTEGER_CONVERSION FE_INVALID
-+#endif
-+};
-+
-+static int excepts_missing = 0;
-+
-+static void
-+check_excepts(int line, const char *rm, int expected, int actual)
-+{
-+ if (expected & excepts_missing)
-+ expected = expected & ~excepts_missing | FE_INVALID_SNAN;
-+ if ((expected & all_exceptions) != actual)
-+ {
-+ size_t i;
-+ printf("%s:%d:round %s:exceptions failed\n"
-+ " expected exceptions ", __FILE__, line,rm);
-+ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-+ if (expected & excepts[i].except)
-+ printf("%s ",excepts[i].name);
-+ if ((expected & all_exceptions) == 0)
-+ printf("- ");
-+ printf("got");
-+ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-+ if (actual & excepts[i].except)
-+ printf(" %s",excepts[i].name);
-+ if ((actual & all_exceptions) == 0)
-+ printf("- ");
-+ printf(".\n");
-+ nerrors++;
-+ }
-+}
-+
-+typedef enum {
-+ B_ADD, B_SUB, B_MUL, B_DIV, B_NEG, B_ABS, B_SQRT
-+} op_t;
-+typedef struct {
-+ int line;
-+ op_t op;
-+ int a_sgn;
-+ pattern_t a_exp, a_mant;
-+ int b_sgn;
-+ pattern_t b_exp, b_mant;
-+ int rmode;
-+ int excepts;
-+ int x_sgn;
-+ pattern_t x_exp, x_mant;
-+} optest_t;
-+static const optest_t optests[] = {
-+ /* Additions of zero. */
-+ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_ALL & ~R_DOWN,0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_DOWN,0, 1,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_Z,P_Z },
-+
-+ /* Additions with NaN. */
-+ {__LINE__,B_ADD, 0,P_O,P_101Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_101Z },
-+ {__LINE__,B_ADD, 0,P_O,P_01Z, 0,P_Z,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_0O, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_O },
-+ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_O,P_11Z, R_ALL,0, 0,P_O,P_11Z },
-+ {__LINE__,B_ADD, 0,P_O,P_001Z, 0,P_O,P_001Z, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_101Z },
-+ {__LINE__,B_ADD, 0,P_O,P_1Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 0,P_0O,P_Z, 0,P_O,P_10O, R_ALL,0, 0,P_O,P_10O },
-+
-+ /* Additions with infinity. */
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_O,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_O,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+
-+ /* Overflow (and zero). */
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_NEAREST | R_UP,
-+ FE_INEXACT | FE_OVERFLOW, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_ZERO | R_DOWN,
-+ FE_INEXACT | FE_OVERFLOW, 0,P_O0,P_O },
-+ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_NEAREST | R_DOWN,
-+ FE_INEXACT | FE_OVERFLOW, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_ZERO | R_UP,
-+ FE_INEXACT | FE_OVERFLOW, 1,P_O0,P_O },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_ALL & ~R_DOWN,
-+ 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_DOWN,
-+ 0, 1,P_Z,P_Z },
-+
-+ /* Negation. */
-+ {__LINE__,B_NEG, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-+ {__LINE__,B_NEG, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_NEG, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 1,P_O,P_Z },
-+ {__LINE__,B_NEG, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_NEG, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-+ {__LINE__,B_NEG, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_NEG, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 1,P_O,P_01Z },
-+ {__LINE__,B_NEG, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_NEG, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 1,P_1Z,P_1Z1 },
-+ {__LINE__,B_NEG, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_NEG, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 1,P_Z,P_Z1 },
-+ {__LINE__,B_NEG, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+
-+ /* Absolute value. */
-+ {__LINE__,B_ABS, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ABS, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ABS, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_ABS, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_ABS, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_ABS, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_ABS, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_ABS, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_ABS, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_ABS, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_ABS, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+ {__LINE__,B_ABS, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+
-+ /* Square root. */
-+ {__LINE__,B_SQRT, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_SQRT, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-+ {__LINE__,B_SQRT, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 0,P_O,P_01Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-+ {__LINE__,B_SQRT, 1,P_O,P_01Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 1,P_O,P_11Z },
-+
-+ {__LINE__,B_SQRT, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_SQRT, 0,P_0O,P_Z, 0,0,0, R_ALL, 0, 0,P_0O,P_Z },
-+
-+ {__LINE__,B_SQRT, 1,P_O,P_Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_1Z,P_1Z1, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_Z,P_Z1, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+
-+};
-+
-+static void
-+check_op(void)
-+{
-+ size_t i;
-+ int j;
-+ tocheck_t r, a, b, x;
-+ int raised;
-+
-+ for (i = 0; i < sizeof(optests)/sizeof(optests[0]); i++)
-+ {
-+ a = pattern(optests[i].a_sgn, optests[i].a_exp,
-+ optests[i].a_mant);
-+ b = pattern(optests[i].b_sgn, optests[i].b_exp,
-+ optests[i].b_mant);
-+ x = pattern(optests[i].x_sgn, optests[i].x_exp,
-+ optests[i].x_mant);
-+ for (j = 0; j < 4; j++)
-+ if (optests[i].rmode & 1<<j)
-+ {
-+ fesetenv(rmodes+j);
-+ switch (optests[i].op)
-+ {
-+ case B_ADD: r = a + b; break;
-+ case B_SUB: r = a - b; break;
-+ case B_MUL: r = a * b; break;
-+ case B_DIV: r = a / b; break;
-+ case B_NEG: r = -a; break;
-+ case B_ABS: r = FUNC(fabs)(a); break;
-+ case B_SQRT: r = FUNC(sqrt)(a); break;
-+ }
-+ raised = fetestexcept(all_exceptions);
-+ check_result(optests[i].line,rmnames[j],x,r);
-+ check_excepts(optests[i].line,rmnames[j],
-+ optests[i].excepts,raised);
-+ }
-+ }
-+}
-+
-+static void
-+fail_xr(int line, const char *rm, tocheck_t x, tocheck_t r, tocheck_t xx,
-+ int xflag)
-+{
-+ size_t i;
-+ unsigned char *cx, *cr, *cxx;
-+
-+ printf("%s:%d:round %s:fail\n with x=0x", __FILE__, line,rm);
-+ cx = (unsigned char *)&x;
-+ cr = (unsigned char *)&r;
-+ cxx = (unsigned char *)&xx;
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cx[i]);
-+ printf(" r=0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cr[i]);
-+ printf(" xx=0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cxx[i]);
-+ printf(" inexact=%d\n", xflag != 0);
-+ nerrors++;
-+}
-+
-+static void
-+check_sqrt(tocheck_t a)
-+{
-+ int j;
-+ tocheck_t r0, r1, r2, x0, x1, x2;
-+ int raised = 0;
-+ int ok;
-+
-+ for (j = 0; j < 4; j++)
-+ {
-+ int excepts;
-+
-+ fesetenv(rmodes+j);
-+ r1 = FUNC(sqrt)(a);
-+ excepts = fetestexcept(all_exceptions);
-+ fesetenv(FE_DFL_ENV);
-+ raised |= excepts & ~FE_INEXACT;
-+ x1 = r1 * r1 - a;
-+ if (excepts & FE_INEXACT)
-+ {
-+ r0 = delta(r1,-1); r2 = delta(r1,1);
-+ switch (1 << j)
-+ {
-+ case R_NEAREST:
-+ x0 = r0 * r0 - a; x2 = r2 * r2 - a;
-+ ok = fabs(x0) >= fabs(x1) && fabs(x1) <= fabs(x2);
-+ break;
-+ case R_ZERO: case R_DOWN:
-+ x2 = r2 * r2 - a;
-+ ok = x1 <= 0 && x2 >= 0;
-+ break;
-+ case R_UP:
-+ x0 = r0 * r0 - a;
-+ ok = x1 >= 0 && x0 <= 0;
-+ break;
-+ default:
-+ assert(0);
-+ }
-+ }
-+ else
-+ ok = x1 == 0;
-+ if (!ok)
-+ fail_xr(__LINE__,rmnames[j],a,r1,x1,excepts&FE_INEXACT);
-+ }
-+ check_excepts(__LINE__,"all",0,raised);
-+}
-+
-+int main(int argc, char **argv)
-+{
-+ int i;
-+
-+ _LIB_VERSION = _IEEE_;
-+
-+ /* Set up environments for rounding modes. */
-+ fesetenv(FE_DFL_ENV);
-+ fesetround(FE_TONEAREST);
-+ fegetenv(rmodes+0);
-+ fesetround(FE_TOWARDZERO);
-+ fegetenv(rmodes+1);
-+ fesetround(FE_UPWARD);
-+ fegetenv(rmodes+2);
-+ fesetround(FE_DOWNWARD);
-+ fegetenv(rmodes+3);
-+
-+#if defined(FE_INVALID_SOFTWARE) || defined(FE_INVALID_SQRT)
-+ /* There's this really stupid feature of the 601... */
-+ fesetenv(FE_DFL_ENV);
-+ feraiseexcept(FE_INVALID_SOFTWARE);
-+ if (!fetestexcept(FE_INVALID_SOFTWARE))
-+ excepts_missing |= FE_INVALID_SOFTWARE;
-+ fesetenv(FE_DFL_ENV);
-+ feraiseexcept(FE_INVALID_SQRT);
-+ if (!fetestexcept(FE_INVALID_SQRT))
-+ excepts_missing |= FE_INVALID_SQRT;
-+#endif
-+
-+ check_op();
-+ for (i = 0; i < 100000; i++)
-+ check_sqrt(pattern(0, P_Rno, P_R));
-+ for (i = 0; i < 100; i++)
-+ check_sqrt(pattern(0, P_Z, P_R));
-+ check_sqrt(pattern(0,P_Z,P_Z1));
-+
-+ printf("%d errors.\n", nerrors);
-+ return nerrors == 0 ? 0 : 1;
-+}
---- glibc-2.3.2/sysdeps/powerpc/test-arithf.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/powerpc/test-arithf.c 2002-11-16 08:56:55.000000000 -0500
-@@ -0,0 +1,6 @@
-+typedef float tocheck_t;
-+#define ESIZE 8
-+#define MSIZE 23
-+#define FUNC(x) x##f
-+
-+#include "test-arith.c"
---- glibc-2.3.2/sysdeps/pthread/aio_cancel.c 2002-08-28 19:39:22.000000000 -0400
-+++ glibc-2.3.2/sysdeps/pthread/aio_cancel.c 2003-08-21 08:37:09.000000000 -0400
-@@ -60,7 +60,13 @@
- {
- /* If the AIO request is not for this descriptor it has no value
- to look for the request block. */
-- if (aiocbp->aio_fildes == fildes)
-+ if (aiocbp->aio_fildes != fildes)
-+ {
-+ pthread_mutex_unlock (&__aio_requests_mutex);
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+ else if (aiocbp->__error_code == EINPROGRESS)
- {
- struct requestlist *last = NULL;
-
---- glibc-2.3.2/sysdeps/pthread/aio_misc.c 2002-11-01 21:15:59.000000000 -0500
-+++ glibc-2.3.2/sysdeps/pthread/aio_misc.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Handle general operations.
-- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -328,8 +328,10 @@
- return NULL;
- }
- newp->aiocbp = aiocbp;
-+#ifdef BROKEN_THREAD_SIGNALS
- newp->caller_pid = (aiocbp->aiocb.aio_sigevent.sigev_notify == SIGEV_SIGNAL
- ? getpid () : 0);
-+#endif
- newp->waiting = NULL;
-
- aiocbp->aiocb.__abs_prio = prio;
---- glibc-2.3.2/sysdeps/pthread/aio_misc.h 2002-03-11 03:32:01.000000000 -0500
-+++ glibc-2.3.2/sysdeps/pthread/aio_misc.h 2003-08-21 08:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1999, 2000, 2001, 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
-@@ -50,9 +50,11 @@
- volatile int *counterp;
- /* The next field is used in asynchronous `lio_listio' operations. */
- struct sigevent *sigevp;
-+#ifdef BROKEN_THREAD_SIGNALS
- /* XXX See requestlist, it's used to work around the broken signal
- handling in Linux. */
- pid_t caller_pid;
-+#endif
- };
-
-
-@@ -80,9 +82,11 @@
- /* Pointer to the actual data. */
- aiocb_union *aiocbp;
-
-+#ifdef BROKEN_THREAD_SIGNALS
- /* PID of the initiator thread.
- XXX This is only necessary for the broken signal handling on Linux. */
- pid_t caller_pid;
-+#endif
-
- /* List of waiting processes. */
- struct waitlist *waiting;
-@@ -90,38 +94,46 @@
-
-
- /* Lock for global I/O list of requests. */
--extern pthread_mutex_t __aio_requests_mutex;
-+extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
-
-
- /* Enqueue request. */
- extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
- int operation)
-- internal_function;
-+ attribute_hidden internal_function;
-
- /* Find request entry for given AIO control block. */
- extern struct requestlist *__aio_find_req (aiocb_union *elem)
-- internal_function;
-+ attribute_hidden internal_function;
-
- /* Find request entry for given file descriptor. */
--extern struct requestlist *__aio_find_req_fd (int fildes) internal_function;
-+extern struct requestlist *__aio_find_req_fd (int fildes)
-+ attribute_hidden internal_function;
-
- /* Remove request from the list. */
- extern void __aio_remove_request (struct requestlist *last,
- struct requestlist *req, int all)
-- internal_function;
-+ attribute_hidden internal_function;
-
- /* Release the entry for the request. */
--extern void __aio_free_request (struct requestlist *req) internal_function;
-+extern void __aio_free_request (struct requestlist *req)
-+ attribute_hidden internal_function;
-
- /* Notify initiator of request and tell this everybody listening. */
--extern void __aio_notify (struct requestlist *req) internal_function;
-+extern void __aio_notify (struct requestlist *req)
-+ attribute_hidden internal_function;
-
- /* Notify initiator of request. */
-+#ifdef BROKEN_THREAD_SIGNALS
- extern int __aio_notify_only (struct sigevent *sigev, pid_t caller_pid)
-- internal_function;
-+ attribute_hidden internal_function;
-+#else
-+extern int __aio_notify_only (struct sigevent *sigev)
-+ attribute_hidden internal_function;
-+#endif
-
- /* Send the signal. */
- extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
-- internal_function;
-+ attribute_hidden internal_function;
-
- #endif /* aio_misc.h */
---- glibc-2.3.2/sysdeps/pthread/aio_notify.c 2003-01-03 03:16:18.000000000 -0500
-+++ glibc-2.3.2/sysdeps/pthread/aio_notify.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Notify initiator of AIO request.
-- Copyright (C) 1997,98,99,2000,01 Free Software Foundation, Inc.
-+ Copyright (C) 1997,98,99,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -45,12 +45,16 @@
-
- int
- internal_function
-+#ifdef BROKEN_THREAD_SIGNALS
- __aio_notify_only (struct sigevent *sigev, pid_t caller_pid)
-+#else
-+__aio_notify_only (struct sigevent *sigev)
-+#endif
- {
- int result = 0;
-
- /* Send the signal to notify about finished processing of the request. */
-- if (sigev->sigev_notify == SIGEV_THREAD)
-+ if (__builtin_expect (sigev->sigev_notify == SIGEV_THREAD, 0))
- {
- /* We have to start a thread. */
- pthread_t tid;
-@@ -91,9 +95,15 @@
- #if _POSIX_REALTIME_SIGNALS
- /* Note that the standard gives us the option of using a plain
- non-queuing signal here when SA_SIGINFO is not set for the signal. */
-+# ifdef BROKEN_THREAD_SIGNALS
- if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, caller_pid)
- < 0)
- result = -1;
-+# else
-+ if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
-+ < 0)
-+ result = -1;
-+# endif
- #else
- /* There are no queued signals on this system at all. */
- result = raise (sigev->sigev_signo);
-@@ -111,7 +121,11 @@
- struct waitlist *waitlist;
- struct aiocb *aiocbp = &req->aiocbp->aiocb;
-
-+#ifdef BROKEN_THREAD_SIGNALS
- if (__aio_notify_only (&aiocbp->aio_sigevent, req->caller_pid) != 0)
-+#else
-+ if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
-+#endif
- {
- /* XXX What shall we do if already an error is set by
- read/write/fsync? */
-@@ -135,7 +149,11 @@
- this request is the last one, send the signal. */
- if (*waitlist->counterp == 0)
- {
-+#ifdef BROKEN_THREAD_SIGNALS
- __aio_notify_only (waitlist->sigevp, waitlist->caller_pid);
-+#else
-+ __aio_notify_only (waitlist->sigevp);
-+#endif
- /* This is tricky. See lio_listio.c for the reason why
- this works. */
- free ((void *) waitlist->counterp);
---- glibc-2.3.2/sysdeps/pthread/aio_suspend.c 2003-01-03 03:15:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/pthread/aio_suspend.c 2003-08-21 08:37:09.000000000 -0400
-@@ -35,9 +35,54 @@
- #include <stdlib.h>
- #include <sys/time.h>
-
-+#include <bits/libc-lock.h>
- #include "aio_misc.h"
-
-
-+struct clparam
-+{
-+ const struct aiocb *const *list;
-+ struct waitlist *waitlist;
-+ struct requestlist **requestlist;
-+ pthread_cond_t *cond;
-+ int nent;
-+};
-+
-+
-+static void
-+cleanup (void *arg)
-+{
-+ const struct clparam *param = (const struct clparam *) arg;
-+
-+ /* Now remove the entry in the waiting list for all requests
-+ which didn't terminate. */
-+ int cnt = param->nent;
-+ while (cnt-- > 0)
-+ if (param->list[cnt] != NULL
-+ && param->list[cnt]->__error_code == EINPROGRESS)
-+ {
-+ struct waitlist **listp;
-+
-+ assert (param->requestlist[cnt] != NULL);
-+
-+ /* There is the chance that we cannot find our entry anymore. This
-+ could happen if the request terminated and restarted again. */
-+ listp = &param->requestlist[cnt]->waiting;
-+ while (*listp != NULL && *listp != &param->waitlist[cnt])
-+ listp = &(*listp)->next;
-+
-+ if (*listp != NULL)
-+ *listp = (*listp)->next;
-+ }
-+
-+ /* Release the conditional variable. */
-+ (void) pthread_cond_destroy (param->cond);
-+
-+ /* Release the mutex. */
-+ pthread_mutex_unlock (&__aio_requests_mutex);
-+}
-+
-+
- int
- aio_suspend (list, nent, timeout)
- const struct aiocb *const list[];
-@@ -70,7 +115,9 @@
- waitlist[cnt].next = requestlist[cnt]->waiting;
- waitlist[cnt].counterp = &dummy;
- waitlist[cnt].sigevp = NULL;
-+#ifdef BROKEN_THREAD_SIGNALS
- waitlist[cnt].caller_pid = 0; /* Not needed. */
-+#endif
- requestlist[cnt]->waiting = &waitlist[cnt];
- any = true;
- }
-@@ -87,12 +134,16 @@
- /* Only if none of the entries is NULL or finished to be wait. */
- if (cnt == nent && any)
- {
-- int oldstate;
-+ struct clparam clparam =
-+ {
-+ .list = list,
-+ .waitlist = waitlist,
-+ .requestlist = requestlist,
-+ .cond = &cond,
-+ .nent = nent
-+ };
-
-- /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancelation
-- points we must be careful. We added entries to the waiting lists
-- which we must remove. So defer cancelation for now. */
-- pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
-+ pthread_cleanup_push (cleanup, &clparam);
-
- if (timeout == NULL)
- result = pthread_cond_wait (&cond, &__aio_requests_mutex);
-@@ -116,8 +167,7 @@
- &abstime);
- }
-
-- /* Now it's time to restore the cancellation state. */
-- pthread_setcancelstate (oldstate, NULL);
-+ pthread_cleanup_pop (0);
- }
-
- /* Now remove the entry in the waiting list for all requests
-@@ -151,6 +201,8 @@
- form expected from `aio_suspend'. */
- if (result == ETIMEDOUT)
- __set_errno (EAGAIN);
-+ else
-+ __set_errno (result);
-
- result = -1;
- }
---- glibc-2.3.2/sysdeps/pthread/lio_listio.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/pthread/lio_listio.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Enqueue and list of read or write requests.
-- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2001,2003 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. */
-
-+#ifndef lio_listio
- #include <aio.h>
- #include <assert.h>
- #include <errno.h>
-@@ -26,6 +27,8 @@
-
- #include "aio_misc.h"
-
-+#define LIO_OPCODE_BASE 0
-+#endif
-
- /* We need this special structure to handle asynchronous I/O. */
- struct async_waitlist
-@@ -72,7 +75,8 @@
- {
- list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
- requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
-- list[cnt]->aio_lio_opcode);
-+ (list[cnt]->aio_lio_opcode
-+ | LIO_OPCODE_BASE));
-
- if (requests[cnt] != NULL)
- /* Successfully enqueued. */
-@@ -96,8 +100,14 @@
- pthread_mutex_unlock (&__aio_requests_mutex);
-
- if (mode == LIO_NOWAIT)
-+ {
-+#ifdef BROKEN_THREAD_SIGNALS
- __aio_notify_only (sig,
- sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0);
-+#else
-+ __aio_notify_only (sig);
-+#endif
-+ }
-
- return result;
- }
-@@ -118,7 +128,9 @@
- waitlist[cnt].next = requests[cnt]->waiting;
- waitlist[cnt].counterp = &total;
- waitlist[cnt].sigevp = NULL;
-+#ifdef BROKEN_THREAD_SIGNALS
- waitlist[cnt].caller_pid = 0; /* Not needed. */
-+#endif
- requests[cnt]->waiting = &waitlist[cnt];
- ++total;
- }
-@@ -155,7 +167,9 @@
- }
- else
- {
-+#ifdef BROKEN_THREAD_SIGNALS
- pid_t caller_pid = sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0;
-+#endif
- total = 0;
-
- for (cnt = 0; cnt < nent; ++cnt)
-@@ -169,7 +183,9 @@
- waitlist->list[cnt].next = requests[cnt]->waiting;
- waitlist->list[cnt].counterp = &waitlist->counter;
- waitlist->list[cnt].sigevp = &waitlist->sigev;
-+#ifdef BROKEN_THREAD_SIGNALS
- waitlist->list[cnt].caller_pid = caller_pid;
-+#endif
- requests[cnt]->waiting = &waitlist->list[cnt];
- ++total;
- }
---- glibc-2.3.2/sysdeps/pthread/lio_listio64.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/pthread/lio_listio64.c 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Enqueue and list of read or write requests, 64bit offset version.
-- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -19,151 +19,14 @@
- 02111-1307 USA. */
-
- #include <aio.h>
-+#include <assert.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <unistd.h>
-
- #include "aio_misc.h"
-
--
--/* We need this special structure to handle asynchronous I/O. */
--struct async_waitlist
-- {
-- int counter;
-- struct sigevent sigev;
-- struct waitlist list[0];
-- };
--
--
--int
--lio_listio64 (mode, list, nent, sig)
-- int mode;
-- struct aiocb64 *const list[];
-- int nent;
-- struct sigevent *sig;
--{
-- struct requestlist *requests[nent];
-- int cnt;
-- volatile int total = 0;
-- int result = 0;
--
-- /* Check arguments. */
-- if (mode != LIO_WAIT && mode != LIO_NOWAIT)
-- {
-- __set_errno (EINVAL);
-- return -1;
-- }
--
-- /* Request the mutex. */
-- pthread_mutex_lock (&__aio_requests_mutex);
--
-- /* Now we can enqueue all requests. Since we already acquired the
-- mutex the enqueue function need not do this. */
-- for (cnt = 0; cnt < nent; ++cnt)
-- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
-- {
-- requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
-- (list[cnt]->aio_lio_opcode
-- | 128));
-- if (requests[cnt] != NULL)
-- /* Successfully enqueued. */
-- ++total;
-- else
-- /* Signal that we've seen an error. `errno' and the error code
-- of the aiocb will tell more. */
-- result = -1;
-- }
--
-- if (total == 0)
-- {
-- /* We don't have anything to do except signalling if we work
-- asynchronously. */
--
-- /* Release the mutex. We do this before raising a signal since the
-- signal handler might do a `siglongjmp' and then the mutex is
-- locked forever. */
-- pthread_mutex_unlock (&__aio_requests_mutex);
--
-- if (mode == LIO_NOWAIT)
-- __aio_notify_only (sig,
-- sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0);
--
-- return result;
-- }
-- else if (mode == LIO_WAIT)
-- {
-- pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
-- struct waitlist waitlist[nent];
-- int oldstate;
--
-- total = 0;
-- for (cnt = 0; cnt < nent; ++cnt)
-- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP
-- && requests[cnt] != NULL)
-- {
-- waitlist[cnt].cond = &cond;
-- waitlist[cnt].next = requests[cnt]->waiting;
-- waitlist[cnt].counterp = &total;
-- waitlist[cnt].sigevp = NULL;
-- waitlist[cnt].caller_pid = 0; /* Not needed. */
-- requests[cnt]->waiting = &waitlist[cnt];
-- ++total;
-- }
--
-- /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancelation
-- points we must be careful. We added entries to the waiting lists
-- which we must remove. So defer cancelation for now. */
-- pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
--
-- while (total > 0)
-- pthread_cond_wait (&cond, &__aio_requests_mutex);
--
-- /* Now it's time to restore the cancelation state. */
-- pthread_setcancelstate (oldstate, NULL);
--
-- /* Release the conditional variable. */
-- if (pthread_cond_destroy (&cond) != 0)
-- /* This must never happen. */
-- abort ();
-- }
-- else
-- {
-- struct async_waitlist *waitlist;
--
-- waitlist = (struct async_waitlist *)
-- malloc (sizeof (struct async_waitlist)
-- + (nent * sizeof (struct waitlist)));
--
-- if (waitlist == NULL)
-- {
-- __set_errno (EAGAIN);
-- result = -1;
-- }
-- else
-- {
-- pid_t caller_pid = sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0;
-- total = 0;
--
-- for (cnt = 0; cnt < nent; ++cnt)
-- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP
-- && requests[cnt] != NULL)
-- {
-- waitlist->list[cnt].cond = NULL;
-- waitlist->list[cnt].next = requests[cnt]->waiting;
-- waitlist->list[cnt].counterp = &waitlist->counter;
-- waitlist->list[cnt].sigevp = &waitlist->sigev;
-- waitlist->list[cnt].caller_pid = caller_pid;
-- requests[cnt]->waiting = &waitlist->list[cnt];
-- ++total;
-- }
--
-- waitlist->counter = total;
-- waitlist->sigev = *sig;
-- }
-- }
--
-- /* Release the mutex. */
-- pthread_mutex_unlock (&__aio_requests_mutex);
--
-- return result;
--}
-+#define lio_listio lio_listio64
-+#define aiocb aiocb64
-+#define LIO_OPCODE_BASE 128
-+#include <lio_listio.c>
---- glibc-2.3.2/sysdeps/s390/Versions 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/Versions 2003-04-12 11:39:46.000000000 -0400
-@@ -3,4 +3,3 @@
- # runtime interface to TLS
- __tls_get_offset;
- }
--}
-\ No newline at end of file
---- glibc-2.3.2/sysdeps/s390/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/bits/atomic.h 2003-05-12 12:13:08.000000000 -0400
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __archmem = (mem); \
-+ __typeof (*mem) __archold = (oldval); \
-+ __asm __volatile ("cs %0,%2,%1" \
-+ : "+d" (__archold), "=Q" (*__archmem) \
-+ : "d" (newval), "m" (*__archmem) : "cc" ); \
-+ __archold; })
-+
-+#ifdef __s390x__
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __archmem = (mem); \
-+ __typeof (*mem) __archold = (oldval); \
-+ __asm __volatile ("csg %0,%2,%1" \
-+ : "+d" (__archold), "=Q" (*__archmem) \
-+ : "d" ((long) (newval)), "m" (*__archmem) : "cc" ); \
-+ __archold; })
-+#else
-+/* For 31 bit we do not really need 64-bit compare-and-exchange. We can
-+ implement them by use of the csd instruction. The straightforward
-+ implementation causes warnings so we skip the definition for now. */
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+#endif
---- glibc-2.3.2/sysdeps/s390/fpu/fegetenv.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/fpu/fegetenv.c 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Store current floating-point environment.
-- Copyright (C) 2000 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
-
-@@ -36,7 +36,7 @@
- no way to find out the ieee instruction pointer if there was no fault. */
- _FPU_GETCW (envp->fpc);
- envp->ieee_instruction_pointer =
-- ptrace (PTRACE_PEEKUSER, getpid (), PT_IEEE_IP);
-+ (void *) ptrace (PTRACE_PEEKUSER, getpid (), PT_IEEE_IP);
-
- /* Success. */
- return 0;
---- glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps 2002-09-04 19:12:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,76 +0,0 @@
--/* Low-level functions for atomic operations. S390 version.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int result;
-- __asm__ __volatile__(
-- " L %0,%2\n"
-- " LA 2,%1\n"
-- "0: LR 0,%0\n"
-- " AR 0,%3\n"
-- " CS %0,0,0(2)\n"
-- " JL 0b"
-- : "=&d" (result), "=m" (*mem)
-- : "1" (*mem), "d" (val) : "0", "1", "2" );
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__(
-- " LA 2,%0\n"
-- "0: L 0,%1\n"
-- " LR 1,0\n"
-- " AR 1,%2\n"
-- " CS 0,1,0(2)\n"
-- " JL 0b"
-- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int retval;
--
-- __asm__ __volatile__(
-- " la 1,%1\n"
-- " lr 0,%2\n"
-- " cs 0,%3,0(1)\n"
-- " ipm %0\n"
-- " srl %0,28\n"
-- "0:"
-- : "=&r" (retval), "+m" (*p)
-- : "d" (oldval) , "d" (newval)
-- : "memory", "0", "1", "cc");
-- return !retval;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c 2003-04-12 11:39:46.000000000 -0400
-@@ -71,7 +71,7 @@
- out of range. */
- break;
-
-- array[cnt++] = stack->save_grps[8];
-+ array[cnt++] = stack->save_grps[8] & 0x7fffffff;
-
- stack = (struct layout *) stack->back_chain;
- }
---- glibc-2.3.2/sysdeps/s390/s390-32/dl-machine.h 2003-01-28 05:27:31.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-32/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -376,9 +376,10 @@
-
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ const Elf32_Sym *sym, const struct r_found_version *version,
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -404,7 +405,9 @@
- return;
- else
- {
-+#ifndef RESOLVE_CONFLICT_FIND_MAP
- const Elf32_Sym *const refsym = sym;
-+#endif
- #if defined USE_TLS && !defined RTLD_BOOTSTRAP
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
-@@ -424,7 +427,8 @@
- *reloc_addr = value + reloc->r_addend;
- break;
-
--#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
-+ && !defined RESOLVE_CONFLICT_FIND_MAP
- case R_390_TLS_DTPMOD:
- # ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always the module
-@@ -466,6 +470,8 @@
- #endif /* use TLS */
-
- #ifndef RTLD_BOOTSTRAP
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
-+ /* Not needed in dl-conflict.c. */
- case R_390_COPY:
- if (sym == NULL)
- /* This can happen in trace mode if an object could not be
-@@ -483,9 +489,10 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
-+# endif
- case R_390_32:
- *reloc_addr = value + reloc->r_addend;
- break;
-@@ -495,6 +502,7 @@
- case R_390_8:
- *(char *) reloc_addr = value + reloc->r_addend;
- break;
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
- case R_390_PC32:
- *reloc_addr = value + reloc->r_addend - (Elf32_Addr) reloc_addr;
- break;
-@@ -509,6 +517,7 @@
- break;
- case R_390_NONE:
- break;
-+# endif
- #endif
- #if !defined(RTLD_BOOTSTRAP) || defined(_NDEBUG)
- default:
-@@ -523,8 +532,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/s390/s390-32/elf/start.S 2002-12-09 22:41:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-32/elf/start.S 2003-08-21 08:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code compliant to the ELF s390 ABI.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -66,19 +66,35 @@
- l %r6,.L2-.Llit(%r13) # load pointer to __libc_csu_fini
- l %r5,.L1-.Llit(%r13) # load pointer to __libc_csu_init
- l %r2,.L3-.Llit(%r13) # load pointer to main
-+ l %r1,.L4-.Llit(%r13) # load pointer to __libc_start_main
-+#ifdef PIC
-+ l %r12,.L5-.Llit(%r13) # load .got pointer
-+ la %r6,0(%r13,%r6)
-+ la %r5,0(%r13,%r5)
-+ la %r2,0(%r13,%r2)
-+ la %r1,0(%r13,%r1)
-+ la %r12,0(%r13,%r12)
-+#endif
-
- /* ok, now branch to the libc main routine */
-- l %r1,.L4-.Llit(%r13)
- basr %r14,%r1
-
- /* crash if __libc_start_main returns */
- .word 0
-
- .Llit:
-+#ifndef PIC
- .L1: .long __libc_csu_init
- .L2: .long __libc_csu_fini
- .L3: .long main
- .L4: .long __libc_start_main
-+#else
-+.L1: .long __libc_csu_init-.Llit
-+.L2: .long __libc_csu_fini-.Llit
-+.L3: .long main-.Llit
-+.L4: .long __libc_start_main@plt-.Llit
-+.L5: .long _GLOBAL_OFFSET_TABLE_-.Llit
-+#endif
-
- /* FIXME: FPU flags or what ?!? */
-
---- glibc-2.3.2/sysdeps/s390/s390-32/memchr.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/memchr.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Search a character in a block of memory. For IBM S390
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
-@@ -39,3 +39,4 @@
- slr %r2,%r2
- 1: br %r14
- END(memchr)
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/s390/s390-32/memcpy.S 2001-08-02 19:39:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/memcpy.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* memcpy - copy a block from source to destination. S/390 version.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
-@@ -56,4 +56,4 @@
- lr %r2,%r1 # return destination address
- br %r14
- END(memcpy)
--
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/s390/s390-32/memset.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/memset.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Set a block of memory to some byte value. For IBM S390
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
-@@ -42,3 +42,4 @@
- .L1:
- br %r14
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/s390/s390-32/strcmp.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/strcmp.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strcmp - compare two string. S/390 version.
- This file is part of the GNU C Library.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -39,3 +39,4 @@
- 2: lhi %r2,-1
- br %r14
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/s390/s390-32/strcpy.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/strcpy.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strcpy - copy a string from source to destination. For IBM S390
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -34,3 +34,4 @@
- jo 0b
- br %r14
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/s390/s390-32/strncpy.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-32/strncpy.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strncpy - copy at most n characters from a string from source to
- destination. For IBM S390
- This file is part of the GNU C Library.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -77,3 +77,4 @@
- .Lexit: l %r2,24(%r15) # return dst pointer
- br %r14
- END(strncpy)
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h 2003-01-13 20:04:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h 2003-03-15 15:02:17.000000000 -0500
-@@ -111,7 +111,7 @@
-
- /* Local label name for asm code. */
- #ifndef L
--#define L(name) name
-+#define L(name) .L##name
- #endif
-
- #endif /* __ASSEMBLER__ */
---- glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,76 +0,0 @@
--/* Low-level functions for atomic operations. 64 bit S/390 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int result;
-- __asm__ __volatile__(
-- " L %0,%2\n"
-- " LA 2,%1\n"
-- "0: LR 0,%0\n"
-- " AR 0,%3\n"
-- " CS %0,0,0(2)\n"
-- " JL 0b"
-- : "=&d" (result), "=m" (*mem)
-- : "1" (*mem), "d" (val) : "0", "1", "2" );
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__(
-- " LA 2,%0\n"
-- "0: L 0,%1\n"
-- " LR 1,0\n"
-- " AR 1,%2\n"
-- " CS 0,1,0(2)\n"
-- " JL 0b"
-- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int retval;
--
-- __asm__ __volatile__(
-- " la 1,%1\n"
-- " lgr 0,%2\n"
-- " csg 0,%3,0(1)\n"
-- " ipm %0\n"
-- " srl %0,28\n"
-- "0:"
-- : "=&r" (retval), "+m" (*p)
-- : "d" (oldval) , "d" (newval)
-- : "memory", "0", "1", "cc");
-- return !retval;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/s390/s390-64/backtrace.c 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/backtrace.c 2003-05-12 12:13:08.000000000 -0400
-@@ -70,7 +70,7 @@
- out of range. */
- break;
-
-- array[cnt++] = stack->save_grps[8];
-+ array[cnt++] = (void *) stack->save_grps[8];
-
- stack = (struct layout *) stack->back_chain;
- }
---- glibc-2.3.2/sysdeps/s390/s390-64/dl-machine.h 2003-01-28 05:28:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
-@@ -344,9 +344,10 @@
-
- static inline void
- elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-- const Elf64_Sym *sym, const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ const Elf64_Sym *sym, const struct r_found_version *version,
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -372,7 +373,9 @@
- return;
- else
- {
-+#ifndef RESOLVE_CONFLICT_FIND_MAP
- const Elf64_Sym *const refsym = sym;
-+#endif
- #if defined USE_TLS && !defined RTLD_BOOTSTRAP
- struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
- Elf64_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
-@@ -392,7 +395,8 @@
- *reloc_addr = value + reloc->r_addend;
- break;
-
--#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
-+ && !defined RESOLVE_CONFLICT_FIND_MAP
- case R_390_TLS_DTPMOD:
- # ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always the module
-@@ -434,6 +438,8 @@
- #endif /* use TLS */
-
- #ifndef RTLD_BOOTSTRAP
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
-+ /* Not needed for dl-conflict.c. */
- case R_390_COPY:
- if (sym == NULL)
- /* This can happen in trace mode if an object could not be
-@@ -451,9 +457,10 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
-+# endif
- case R_390_64:
- *reloc_addr = value + reloc->r_addend;
- break;
-@@ -466,6 +473,7 @@
- case R_390_8:
- *(char *) reloc_addr = value + reloc->r_addend;
- break;
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
- case R_390_PC64:
- *reloc_addr = value +reloc->r_addend - (Elf64_Addr) reloc_addr;
- break;
-@@ -489,6 +497,7 @@
- break;
- case R_390_NONE:
- break;
-+# endif
- #endif
- #if !defined(RTLD_BOOTSTRAP) || defined(_NDEBUG)
- default:
-@@ -503,8 +512,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/s390/s390-64/elf/start.S 2002-12-09 22:41:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-64/elf/start.S 2003-08-21 08:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code compliant to the 64 bit S/390 ELF ABI.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -64,7 +64,11 @@
- larl %r2,main # load pointer to main
-
- /* Ok, now branch to the libc main routine. */
-+#ifdef PIC
-+ brasl %r14,__libc_start_main@plt
-+#else
- brasl %r14,__libc_start_main
-+#endif
-
- /* Crash if __libc_start_main returns. */
- .word 0
---- glibc-2.3.2/sysdeps/s390/s390-64/memchr.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/memchr.S 2003-05-12 12:13:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Search a character in a block of memory. 64 bit S/390 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -38,3 +38,4 @@
- slgr %r2,%r2
- 1: br %r14
- END(memchr)
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/s390/s390-64/memcpy.S 2001-08-02 19:39:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/memcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* memcpy - copy a block from source to destination. 64 bit S/390 version.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
-@@ -55,4 +55,4 @@
- lgr %r2,%r1 # return destination address
- br %r14
- END(memcpy)
--
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/s390/s390-64/memset.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/memset.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Set a block of memory to some byte value. 64 bit S/390 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -41,3 +41,4 @@
- .L1:
- br %r14
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/s390/s390-64/strcmp.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/strcmp.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strcmp - compare two string. 64 bit S/390 version.
- This file is part of the GNU C Library.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -39,3 +39,4 @@
- 2: lghi %r2,-1
- br %r14
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/s390/s390-64/strcpy.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/strcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* strcpy - copy a string from source to destination. 64 bit S/390 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -33,3 +33,4 @@
- jo 0b
- br %r14
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/s390/s390-64/strncpy.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/s390/s390-64/strncpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strncpy - copy at most n characters from a string from source to
- destination. 64 bit S/390 version
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -88,3 +88,4 @@
- .Lexit: lg %r2,48(%r15) # return dst pointer
- br %r14
- END(strncpy)
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h 2003-01-13 20:04:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h 2003-03-15 15:02:17.000000000 -0500
-@@ -66,7 +66,7 @@
- #else
- #define CALL_MCOUNT \
- lgr 0,14 ; larl 1,0f ; brasl 14,_mcount ; lgr 14,0 ; \
-- .data ; .align 4 ; 0: .long 0 ; .text ;
-+ .data ; .align 4 ; 0: .long 0 ; .text ;
- #endif
- #else
- #define CALL_MCOUNT /* Do nothing. */
-@@ -104,8 +104,7 @@
-
- /* Local label name for asm code. */
- #ifndef L
--#define L(name) name
-+#define L(name) .L##name
- #endif
-
- #endif /* __ASSEMBLER__ */
--
---- glibc-2.3.2/sysdeps/sh/bits/setjmp.h 2002-11-05 19:40:03.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sh/bits/setjmp.h 2003-04-12 11:39:46.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 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
-@@ -17,8 +17,10 @@
- 02111-1307 USA. */
-
- /* Define the machine-dependent type `jmp_buf'. SH 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
-
-@@ -43,10 +45,12 @@
- #endif
-
- #if defined __USE_MISC || defined _ASM
--#define JB_SIZE (4 * 15)
-+# define JB_SIZE (4 * 15)
- #endif
-
- /* 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])
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/sh/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sh/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
-@@ -456,15 +456,16 @@
-
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ const Elf32_Sym *sym, const struct r_found_version *version,
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
- Elf32_Addr value;
-
--#define COPY_UNALIGNED_WORD(sw, tw, align) \
-+#define COPY_UNALIGNED_WORD(swp, twp, align) \
- { \
-- void *__s = &(sw), *__t = &(tw); \
-+ void *__s = (swp), *__t = (twp); \
- switch ((align)) \
- { \
- case 0: \
-@@ -493,10 +494,12 @@
- value = map->l_addr + reloc->r_addend;
- else
- {
-- COPY_UNALIGNED_WORD (*reloc_addr, value, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (reloc_addr_arg, &value,
-+ (int) reloc_addr_arg & 3);
- value += map->l_addr;
- }
-- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
-+ (int) reloc_addr_arg & 3);
- }
- }
- #ifndef RTLD_BOOTSTRAP
-@@ -538,8 +541,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- case R_SH_GLOB_DAT:
- case R_SH_JMP_SLOT:
-@@ -606,12 +609,14 @@
- used while loading those libraries. */
- value -= map->l_addr + refsym->st_value + reloc->r_addend;
- #endif
-- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
-+ (int) reloc_addr_arg & 3);
- break;
- }
- case R_SH_REL32:
- value = (value - (Elf32_Addr) reloc_addr);
-- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
-+ (int) reloc_addr_arg & 3);
- break;
- default:
- _dl_reloc_bad_type (map, r_type, 0);
-@@ -622,18 +627,19 @@
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- Elf32_Addr value;
-
- if (reloc->r_addend)
- value = l_addr + reloc->r_addend;
- else
- {
-- COPY_UNALIGNED_WORD (*reloc_addr, value, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, (int) reloc_addr_arg & 3);
- value += l_addr;
- }
-- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
-+ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3);
-
- #undef COPY_UNALIGNED_WORD
- }
---- glibc-2.3.2/sysdeps/sh/memcpy.S 2003-01-03 04:53:33.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sh/memcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
- Optimized by Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
-@@ -197,3 +197,4 @@
- rts
- mov r3,r0 /* Return destination. */
- END(memcpy)
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/sh/memset.S 2003-01-03 04:53:33.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sh/memset.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
- Optimized by Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
-@@ -85,3 +85,4 @@
- rts
- mov r7,r0
- END(memset)
-+libc_hidden_builtin_def (memset)
---- glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps 2001-04-22 00:53:11.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -145,7 +145,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-@@ -156,10 +156,10 @@
- idouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-@@ -198,7 +198,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -291,7 +291,7 @@
- ifloat: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-@@ -318,7 +318,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-@@ -331,7 +331,7 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -520,12 +520,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -615,7 +615,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/sh/strlen.S 2001-07-07 15:21:28.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sh/strlen.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
-
-@@ -82,3 +82,4 @@
- rts
- mov r2, r0
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,98 +0,0 @@
--/* Low-level functions for atomic operations. Sparc32 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- static unsigned char lock;
-- int result, tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- result = *mem;
-- *mem += val;
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
-- return result;
--}
--
--static void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- static unsigned char lock;
-- int tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- *mem += val;
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
--}
--
--static int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- static unsigned char lock;
-- int ret, tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- if (*p != oldval)
-- ret = 0;
-- else
-- {
-- *p = newval;
-- ret = 1;
-- }
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
--
-- return ret;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h 2003-08-21 08:37:10.000000000 -0400
-@@ -0,0 +1,81 @@
-+/* Atomic operations. sparc32 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 _BITS_ATOMIC_H
-+#define _BITS_ATOMIC_H 1
-+
-+/* We have no compare and swap, just test and set.
-+ The following implementation contends on 64 global locks
-+ per library and assumes no variable will be accessed using atomic.h
-+ macros from two different libraries. */
-+
-+volatile unsigned char __sparc32_atomic_locks[64]
-+ __attribute__ ((nocommon, section (".gnu.linkonce.b.__sparc32_atomic_locks"),
-+ visibility ("hidden")));
-+
-+#define __sparc32_atomic_do_lock(addr) \
-+ do \
-+ { \
-+ unsigned int __old_lock; \
-+ unsigned int __idx = (((long) addr >> 2) ^ ((long) addr >> 12)) \
-+ & 63; \
-+ do \
-+ __asm ("ldstub %1, %0" \
-+ : "=r" (__old_lock), \
-+ "=m" (__sparc32_atomic_locks[__idx]) \
-+ : "m" (__sparc32_atomic_locks[__idx])); \
-+ while (__old_lock); \
-+ } \
-+ while (0)
-+
-+#define __sparc32_atomic_do_unlock(addr) \
-+ do \
-+ __sparc32_atomic_locks[(((long) addr >> 2) \
-+ ^ ((long) addr >> 12)) & 63] = 0; \
-+ while (0)
-+
-+/* The only basic operation needed is compare and exchange. */
-+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __acev_memp = (mem); \
-+ __typeof (*mem) __acev_ret; \
-+ __typeof (*mem) __acev_newval = (newval); \
-+ \
-+ __sparc32_atomic_do_lock (__acev_memp); \
-+ __acev_ret = *__acev_memp; \
-+ if (__acev_ret == (oldval)) \
-+ *__acev_memp = __acev_newval; \
-+ __sparc32_atomic_do_unlock (__acev_memp); \
-+ __acev_ret; })
-+
-+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __aceb_memp = (mem); \
-+ int __aceb_ret; \
-+ __typeof (*mem) __aceb_newval = (newval); \
-+ \
-+ __sparc32_atomic_do_lock (__aceb_memp); \
-+ __aceb_ret = 0; \
-+ if (*__aceb_memp == (oldval)) \
-+ *__aceb_memp = __aceb_newval; \
-+ else \
-+ __aceb_ret = 1; \
-+ __sparc32_atomic_do_unlock (__aceb_memp); \
-+ __aceb_ret; })
-+
-+#endif /* bits/atomic.h */
---- glibc-2.3.2/sysdeps/sparc/sparc32/dl-machine.h 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
-@@ -40,12 +40,6 @@
- #define OPCODE_SAVE_SP 0x9de3bfa8 /* save %sp, -(16+6)*4, %sp */
- #define OPCODE_BA 0x30800000 /* b,a ?; add PC-rel word address */
-
--/* Protect some broken versions of gcc from misinterpreting weak addresses. */
--#define WEAKADDR(x) ({ __typeof(x) *_px = &x; \
-- __asm ("" : "=r" (_px) : "0" (_px)); \
-- _px; })
--
--
- /* Use a different preload file when running in 32-bit emulation mode
- on a 64-bit host. */
- #define LD_SO_PRELOAD ((GL(dl_hwcap) & HWCAP_SPARC_V9) \
-@@ -61,16 +55,13 @@
- return 1;
- else if (ehdr->e_machine == EM_SPARC32PLUS)
- {
-- unsigned long *hwcap;
--#ifndef SHARED
-- weak_extern (_dl_hwcap);
-- weak_extern (_dl_hwcap_mask);
--#endif
--
-- hwcap = WEAKADDR (GL(dl_hwcap));
- /* XXX The following is wrong! Dave Miller rejected to implement it
- correctly. If this causes problems shoot *him*! */
-- return hwcap == NULL || (*hwcap & GL(dl_hwcap_mask) & HWCAP_SPARC_V9);
-+#ifdef SHARED
-+ return GL(dl_hwcap) & GL(dl_hwcap_mask) & HWCAP_SPARC_V9;
-+#else
-+ return GL(dl_hwcap) & HWCAP_SPARC_V9;
-+#endif
- }
- else
- return 0;
-@@ -170,17 +161,12 @@
- || __builtin_expect (l->l_info [VALIDX (DT_GNU_LIBLISTSZ)] != NULL, 0))
- {
- /* Need to reinitialize .plt to undo prelinking. */
-- unsigned long *hwcap;
- int do_flush;
- Elf32_Rela *rela = (Elf32_Rela *) D_PTR (l, l_info[DT_JMPREL]);
- Elf32_Rela *relaend
- = (Elf32_Rela *) ((char *) rela
- + l->l_info[DT_PLTRELSZ]->d_un.d_val);
--#ifndef SHARED
-- weak_extern (_dl_hwcap);
--#endif
-- hwcap = WEAKADDR (GL(dl_hwcap));
-- do_flush = (!hwcap || (*hwcap & HWCAP_SPARC_FLUSH));
-+ do_flush = GL(dl_hwcap) & HWCAP_SPARC_FLUSH;
-
- /* prelink must ensure there are no R_SPARC_NONE relocs left
- in .rela.plt. */
-@@ -367,13 +353,7 @@
- #ifndef RTLD_BOOTSTRAP
- /* Note that we don't mask the hwcap here, as the flush is essential to
- functionality on those cpu's that implement it. */
-- unsigned long *hwcap;
-- int do_flush;
--# ifndef SHARED
-- weak_extern (_dl_hwcap);
--# endif
-- hwcap = WEAKADDR (GL(dl_hwcap));
-- do_flush = (!hwcap || (*hwcap & HWCAP_SPARC_FLUSH));
-+ int do_flush = GL(dl_hwcap) & HWCAP_SPARC_FLUSH;
- #else
- /* Unfortunately, this is necessary, so that we can ensure
- ld.so will not execute corrupt PLT entry instructions. */
-@@ -435,8 +415,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
-@@ -510,8 +491,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- #endif
- case R_SPARC_GLOB_DAT:
-@@ -587,14 +568,14 @@
- *reloc_addr = (*reloc_addr & 0xffc00000) | (value >> 10);
- break;
- case R_SPARC_UA16:
-- ((unsigned char *) reloc_addr) [0] = value >> 8;
-- ((unsigned char *) reloc_addr) [1] = value;
-+ ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
-+ ((unsigned char *) reloc_addr_arg) [1] = value;
- break;
- case R_SPARC_UA32:
-- ((unsigned char *) reloc_addr) [0] = value >> 24;
-- ((unsigned char *) reloc_addr) [1] = value >> 16;
-- ((unsigned char *) reloc_addr) [2] = value >> 8;
-- ((unsigned char *) reloc_addr) [3] = value;
-+ ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
-+ ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
-+ ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
-+ ((unsigned char *) reloc_addr_arg) [3] = value;
- break;
- #endif
- case R_SPARC_NONE: /* Alright, Wilbur. */
-@@ -610,8 +591,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-- Elf32_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf32_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr += l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure 2003-02-21 01:27:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure 2003-08-21 08:37:10.000000000 -0400
-@@ -29,7 +29,7 @@
- add %o0, %l1, %l1, %tldo_add(bar)
- sethi %tie_hi22(foo), %l1
- add %l1, %tie_lo10(foo), %l1
-- ld %l7 + %l1, %l1, %tie_ld(foo)
-+ ld [%l7 + %l1], %l1, %tie_ld(foo)
- add %g7, %l1, %l1, %tie_add(foo)
- sethi %tle_hix22(foo), %l1
- xor %l1, %tle_lox10(foo), %l1
---- glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure.in 2003-02-04 03:35:22.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure.in 2003-08-21 08:37:10.000000000 -0400
-@@ -4,6 +4,7 @@
- if test "$usetls" != no; then
- # Check for support of thread-local storage handling in assembler and linker.
- AC_CACHE_CHECK(for sparc32 TLS support, libc_cv_sparc32_tls, [dnl
-+changequote(,)dnl
- cat > conftest.s <<\EOF
- .section ".tdata", "awT", @progbits
- .globl foo
-@@ -30,6 +31,7 @@
- sethi %tle_hix22(foo), %l1
- xor %l1, %tle_lox10(foo), %l1
- EOF
-+changequote([,])dnl
- dnl
- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_sparc32_tls=yes
---- glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2002-09-17 12:46:01.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/sparc/sparc32/memchr.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/memchr.S 2003-05-12 12:13:09.000000000 -0400
-@@ -144,3 +144,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/sparc/sparc32/memcpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/memcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -966,3 +966,5 @@
- 110: retl
- sub %o7, %g6, %o5
- END(memcpy)
-+libc_hidden_builtin_def (memcpy)
-+libc_hidden_builtin_def (memmove)
---- glibc-2.3.2/sysdeps/sparc/sparc32/memset.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/memset.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Set a block of memory to some byte value.
- For SPARC v7.
-- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David S. Miller <davem@caip.rutgers.edu> and
- Jakub Jelinek <jj@ultra.linux.cz>.
-@@ -150,5 +150,6 @@
- 0: retl
- nop
- END(memset)
-+libc_hidden_builtin_def (memset)
-
- weak_alias(__bzero, bzero)
---- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,82 +0,0 @@
--/* Low-level functions for atomic operations. Sparc32+v9 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
-- return tmp2;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- register long int tmp, tmp2;
--
-- __asm__ __volatile__("1: lduw [%4], %0\n\t"
-- " mov %2, %1\n\t"
-- " cmp %0, %3\n\t"
-- " bne,a,pn %%xcc, 2f\n\t"
-- " mov 0, %0\n\t"
-- " cas [%4], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " mov 1, %0\n\t"
-- "2:"
-- : "=&r" (tmp), "=&r" (tmp2)
-- : "r" (newval), "r" (oldval), "r" (p)
-- : "memory");
-- return tmp;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h 2003-05-12 12:13:09.000000000 -0400
-@@ -0,0 +1,88 @@
-+/* Atomic operations. sparcv9 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("cas [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
-+ "0" (newval)); \
-+ __acev_tmp; })
-+
-+/* This can be implemented if needed. */
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ if (sizeof (*(mem)) == 4) \
-+ __asm ("swap %0, %1" \
-+ : "=m" (*__memp), "=r" (__oldval) \
-+ : "m" (*__memp), "1" (__value)); \
-+ else \
-+ abort (); \
-+ __oldval; })
-+
-+#define atomic_full_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" \
-+ " | #StoreLoad | #StoreStore" : : : "memory")
-+#define atomic_read_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
-+#define atomic_write_barrier() \
-+ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
---- glibc-2.3.2/sysdeps/sparc/sparc32/strcat.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/strcat.S 2003-05-12 12:13:09.000000000 -0400
-@@ -346,3 +346,4 @@
- retl
- mov %g2, %o0
- END(strcat)
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/sparc/sparc32/strchr.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/strchr.S 2003-05-12 12:13:09.000000000 -0400
-@@ -280,3 +280,5 @@
-
- weak_alias(strchr, index)
- weak_alias(strrchr, rindex)
-+libc_hidden_builtin_def (strchr)
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/sparc/sparc32/strcmp.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/strcmp.S 2003-05-12 12:13:09.000000000 -0400
-@@ -255,3 +255,4 @@
- jmpl %i7 + 8, %g0
- restore %g4, %g0, %o0
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/sparc/sparc32/strcpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/strcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -272,3 +272,4 @@
- retl
- mov %g2, %o0
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/sparc/sparc32/strlen.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc32/strlen.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Determine the length of a string.
- For SPARC v7.
-- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
-
-@@ -101,3 +101,4 @@
- 13: retl
- sub %o4, %o1, %o0
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,82 +0,0 @@
--/* Low-level functions for atomic operations. Sparc64 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
-- return tmp2;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- register long int tmp, tmp2;
--
-- __asm__ __volatile__("1: ldx [%4], %0\n\t"
-- " mov %2, %1\n\t"
-- " cmp %0, %3\n\t"
-- " bne,a,pn %%xcc, 2f\n\t"
-- " mov 0, %0\n\t"
-- " casx [%4], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " mov 1, %0\n\t"
-- "2:"
-- : "=&r" (tmp), "=&r" (tmp2)
-- : "r" (newval), "r" (oldval), "r" (p)
-- : "memory");
-- return tmp;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h 2003-05-12 12:13:09.000000000 -0400
-@@ -0,0 +1,103 @@
-+/* Atomic operations. sparc64 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("cas [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
-+ "0" (newval)); \
-+ __acev_tmp; })
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("casx [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" ((long) (oldval)), "m" (*__acev_mem), \
-+ "r" (__acev_mem), "0" ((long) (newval))); \
-+ __acev_tmp; })
-+
-+#define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ if (sizeof (*(mem)) == 4) \
-+ __asm ("swap %0, %1" \
-+ : "=m" (*__memp), "=r" (__oldval) \
-+ : "m" (*__memp), "1" (__value)); \
-+ else \
-+ { \
-+ __val = *__memp; \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, __value, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ } \
-+ __oldval; })
-+
-+#define atomic_full_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" \
-+ " | #StoreLoad | #StoreStore" : : : "memory")
-+#define atomic_read_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
-+#define atomic_write_barrier() \
-+ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
---- glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h 2002-09-27 23:35:31.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* Machine-dependent ELF dynamic relocation inline functions. Sparc64 version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,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
-@@ -240,8 +241,9 @@
- static inline void
- elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
- const Elf64_Sym *sym, const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned long int r_type = ELF64_R_TYPE_ID (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -292,8 +294,8 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
- #endif
- case R_SPARC_64:
-@@ -392,31 +394,31 @@
- break;
- #ifndef RTLD_BOOTSTRAP
- case R_SPARC_UA16:
-- ((unsigned char *) reloc_addr) [0] = value >> 8;
-- ((unsigned char *) reloc_addr) [1] = value;
-+ ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
-+ ((unsigned char *) reloc_addr_arg) [1] = value;
- break;
- case R_SPARC_UA32:
-- ((unsigned char *) reloc_addr) [0] = value >> 24;
-- ((unsigned char *) reloc_addr) [1] = value >> 16;
-- ((unsigned char *) reloc_addr) [2] = value >> 8;
-- ((unsigned char *) reloc_addr) [3] = value;
-+ ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
-+ ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
-+ ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
-+ ((unsigned char *) reloc_addr_arg) [3] = value;
- break;
- case R_SPARC_UA64:
-- if (! ((long) reloc_addr & 3))
-+ if (! ((long) reloc_addr_arg & 3))
- {
- /* Common in .eh_frame */
-- ((unsigned int *) reloc_addr) [0] = value >> 32;
-- ((unsigned int *) reloc_addr) [1] = value;
-+ ((unsigned int *) reloc_addr_arg) [0] = value >> 32;
-+ ((unsigned int *) reloc_addr_arg) [1] = value;
- break;
- }
-- ((unsigned char *) reloc_addr) [0] = value >> 56;
-- ((unsigned char *) reloc_addr) [1] = value >> 48;
-- ((unsigned char *) reloc_addr) [2] = value >> 40;
-- ((unsigned char *) reloc_addr) [3] = value >> 32;
-- ((unsigned char *) reloc_addr) [4] = value >> 24;
-- ((unsigned char *) reloc_addr) [5] = value >> 16;
-- ((unsigned char *) reloc_addr) [6] = value >> 8;
-- ((unsigned char *) reloc_addr) [7] = value;
-+ ((unsigned char *) reloc_addr_arg) [0] = value >> 56;
-+ ((unsigned char *) reloc_addr_arg) [1] = value >> 48;
-+ ((unsigned char *) reloc_addr_arg) [2] = value >> 40;
-+ ((unsigned char *) reloc_addr_arg) [3] = value >> 32;
-+ ((unsigned char *) reloc_addr_arg) [4] = value >> 24;
-+ ((unsigned char *) reloc_addr_arg) [5] = value >> 16;
-+ ((unsigned char *) reloc_addr_arg) [6] = value >> 8;
-+ ((unsigned char *) reloc_addr_arg) [7] = value;
- break;
- #endif
- #if !defined RTLD_BOOTSTRAP || defined _NDEBUG
-@@ -430,8 +432,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
---- glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps 2001-09-30 19:31:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
-@@ -1,85 +1,31 @@
--
- # Begin of automatic generation
-
--# acos
--Test "acos (0.7) == 0.79539883018414355549096833892476432":
--ldouble: 1
--ildouble: 1
--
--# asin
--Test "asin (-0.5) == -pi/6":
--float: 2
--ifloat: 2
--Test "asin (0.5) == pi/6":
--float: 2
--ifloat: 2
--Test "asin (0.7) == 0.77539749661075306374035335271498708":
--double: 1
--float: 2
--idouble: 1
--ifloat: 2
--
--# atan
--Test "atan (0.7) == 0.61072596438920861654375887649023613":
--ildouble: 1
--ldouble: 1
--
--# atanh
--Test "atanh (0.7) == 0.8673005276940531944":
--double: 1
--idouble: 1
--
- # atan2
--Test "atan2 (0.4, 0.0003) == 1.5700463269355215717704032607580829":
-+Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "atan2 (0.7, 1) == 0.61072596438920861654375887649023613":
-+Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "atan2 (-0.7, 1.0) == -0.61072596438920861654375887649023613":
-+Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
-+float: 1
-+ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
--float: 3
--ifloat: 3
--Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
--float: 3
--ifloat: 3
--Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
--float: 4
--ifloat: 4
-
--# cabs
--Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
--double: 1
--idouble: 1
--Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
-+# atanh
-+Test "atanh (0.75) == 0.972955074527656652552676371721589865":
- float: 1
- ifloat: 1
-
- # cacos
--Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-+Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
-+ildouble: 1
-+ldouble: 1
-
- # cacosh
- Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
-@@ -96,25 +42,16 @@
- ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
-+
-+# casin
-+Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--
--# casin
--Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
--double: 3
--float: 2
--idouble: 3
--ifloat: 2
-+Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-
- # casinh
- Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-@@ -131,13 +68,15 @@
- ifloat: 6
- ildouble: 2
- ldouble: 2
--Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
--double: 1
--idouble: 1
-+Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-+float: 1
-+ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
-+Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-@@ -151,12 +90,10 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
-+Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
- float: 4
- ifloat: 4
--Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
- ildouble: 1
- ldouble: 1
-
-@@ -167,49 +104,59 @@
- Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
- float: 4
- ifloat: 4
--Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
--float: 1
--ifloat: 1
--Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
-+Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
- double: 1
--float: 6
- idouble: 1
-+ildouble: 1
-+ldouble: 1
-+Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-+float: 6
- ifloat: 6
-+ildouble: 1
-+ldouble: 1
-
- # cbrt
-+Test "cbrt (-0.001) == -0.1":
-+ildouble: 1
-+ldouble: 1
- Test "cbrt (-27.0) == -3.0":
- double: 1
- idouble: 1
--Test "cbrt (0.970299) == 0.99":
-+Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
-+double: 1
-+idouble: 1
-+Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
- double: 1
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
--Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
--double: 1
--idouble: 1
--Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-+Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
- double: 1
-+float: 1
- idouble: 1
-+ifloat: 1
-+Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-+float: 1
-+ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-+Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-+float: 1
-+ifloat: 1
-
- # cexp
- Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-@@ -220,23 +167,22 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
-+Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- float: 1
- ifloat: 1
-+Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- ildouble: 1
- ldouble: 1
-
- # clog
- Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
--double: 1
- float: 3
--idouble: 1
- ifloat: 3
-+Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-+float: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # clog10
- Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-@@ -249,7 +195,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -297,14 +243,12 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
--double: 1
-+Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
- float: 1
--idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-+ildouble: 1
-+ldouble: 1
- Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
- double: 1
- float: 1
-@@ -327,16 +271,11 @@
- ifloat: 1
-
- # cos
--Test "cos (0.7) == 0.76484218728448842625585999019186495":
-+Test "cos (M_PI_6l * 2.0) == 0.5":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "cos (M_PI_6l * 2.0) == 0.5":
--double: 1
--float: 0.5
--idouble: 1
--ifloat: 0.5
- ildouble: 1
- ldouble: 1
- Test "cos (M_PI_6l * 4.0) == -0.5":
-@@ -347,14 +286,40 @@
- ildouble: 1
- ldouble: 1
- Test "cos (pi/2) == 0":
--double: 0.2758
--float: 0.3667
--idouble: 0.2758
--ifloat: 0.3667
--ildouble: 0.2252
--ldouble: 0.2252
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # cpow
-+Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-+float: 1
-+ifloat: 1
-+Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-+float: 1
-+ifloat: 1
-+Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
-+double: 1
-+float: 4
-+idouble: 1
-+ifloat: 4
-+ildouble: 4
-+ldouble: 4
-+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-+ildouble: 2
-+ldouble: 2
-+Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-+ildouble: 1
-+ldouble: 1
-+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
-+double: 2
-+float: 3
-+idouble: 2
-+ifloat: 3
-+ildouble: 1
-+ldouble: 1
- Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
- ildouble: 2
- ldouble: 2
-@@ -369,26 +334,26 @@
- float: 2
- ifloat: 2
- Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
--double: 1.1031
--float: 1.4668
--idouble: 1.1031
--ifloat: 1.4668
--ildouble: 0.9006
--ldouble: 0.9006
-+double: 2
-+float: 2
-+idouble: 2
-+ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- # csin
--Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
--float: 1
--ifloat: 1
-+Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-+ildouble: 1
-+ldouble: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-+Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-+Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
- float: 1
- ifloat: 1
-
-@@ -403,32 +368,22 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
--float: 1
--ifloat: 1
-+Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
- ildouble: 1
- ldouble: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
--Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
--float: 1
--ifloat: 1
--Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-+Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+ildouble: 2
-+ldouble: 2
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -436,34 +391,25 @@
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
- float: 1
- ifloat: 1
--Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
-+Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-+double: 1
-+idouble: 1
-+
-+# erf
-+Test "erf (1.25) == 0.922900128256458230136523481197281140":
-+double: 1
-+idouble: 1
-
- # erfc
--Test "erfc (0.7) == 0.32219880616258152702":
-+Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
- double: 1
- idouble: 1
--Test "erfc (1.2) == 0.089686021770364619762":
--double: 2
--float: 2
--idouble: 2
--ifloat: 2
--Test "erfc (2.0) == 0.0046777349810472658379":
-+Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
-+ildouble: 1
-+ldouble: 1
-+Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
- double: 1
- idouble: 1
--Test "erfc (4.1) == 0.67000276540848983727e-8":
--double: 24
--float: 12
--idouble: 24
--ifloat: 12
-
- # exp10
- Test "exp10 (-1) == 0.1":
-@@ -471,11 +417,11 @@
- float: 1
- idouble: 2
- ifloat: 1
--Test "exp10 (0.7) == 5.0118723362727228500155418688494574":
-+Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
- Test "exp10 (3) == 1000":
- double: 6
- float: 2
-@@ -485,44 +431,21 @@
- ldouble: 1
-
- # expm1
-+Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
-+double: 1
-+idouble: 1
- Test "expm1 (1) == M_El - 1.0":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
--
-+ildouble: 1
-+ldouble: 1
-
--# fmod
--Test "fmod (-6.5, -2.3) == -1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (-6.5, 2.3) == -1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (6.5, -2.3) == 1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (6.5, 2.3) == 1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
-+# gamma
-+Test "gamma (-0.5) == log(2*sqrt(pi))":
-+ildouble: 1
-+ldouble: 1
-
- # hypot
- Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
-@@ -540,9 +463,6 @@
- Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
- float: 1
- ifloat: 1
--Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
--double: 1
--idouble: 1
- Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
- float: 1
- ifloat: 1
-@@ -554,161 +474,213 @@
- ifloat: 1
-
- # j0
--Test "j0 (10.0) == -0.24593576445134833520":
-+Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+Test "j0 (0.75) == 0.864242275166648623555731103820923211":
-+float: 1
-+ifloat: 1
-+Test "j0 (10.0) == -0.245935764451348335197760862485328754":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "j0 (2.0) == 0.22389077914123566805":
-+ildouble: 2
-+ldouble: 2
-+Test "j0 (2.0) == 0.223890779141235668051827454649948626":
- float: 2
- ifloat: 2
--Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1"
-+ildouble: 2
-+ldouble: 2
-+Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
- double: 1
--idouble: 1
- float: 1
--ifloat: 1
--Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1"
--double: 1
- idouble: 1
--float: 1
- ifloat: 1
--Test "j0 (8.0) == 0.17165080713755390609":
-+Test "j0 (8.0) == 0.171650807137553906090869407851972001":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # j1
--Test "j1 (10.0) == 0.043472746168861436670":
-+Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (0.75) == 0.349243602174862192523281016426251335":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (1.0) == 0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
- float: 2
- ifloat: 2
--Test "j1 (2.0) == 0.57672480775687338720":
-+ildouble: 2
-+ldouble: 2
-+Test "j1 (2.0) == 0.576724807756873387202448242269137087":
- double: 1
- idouble: 1
--Test "j1 (8.0) == 0.23463634685391462438":
-+Test "j1 (8.0) == 0.234636346853914624381276651590454612":
- double: 1
- idouble: 1
-+ildouble: 4
-+ldouble: 4
-
- # jn
--Test "jn (0, 10.0) == -0.24593576445134833520":
--double: 2
-+Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
-+double: 1
- float: 1
--idouble: 2
-+idouble: 1
- ifloat: 1
--Test "jn (0, 2.0) == 0.22389077914123566805":
--float: 2
--ifloat: 2
--Test "jn (0, 8.0) == 0.17165080713755390609":
-+Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
-+float: 1
-+ifloat: 1
-+Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-+double: 2
- float: 1
-+idouble: 2
- ifloat: 1
--Test "jn (1, 10.0) == 0.043472746168861436670":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
- float: 2
- ifloat: 2
--Test "jn (1, 2.0) == 0.57672480775687338720":
--double: 1
--idouble: 1
--Test "jn (1, 8.0) == 0.23463634685391462438":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
- double: 1
-+float: 1
- idouble: 1
--Test "jn (10, 0.1) == 0.26905328954342155795e-19":
--double: 6
--float: 4
--idouble: 6
--ifloat: 4
--Test "jn (10, 0.7) == 0.75175911502153953928e-11":
--double: 3
-+ifloat: 1
-+Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
- float: 1
--idouble: 3
- ifloat: 1
--Test "jn (10, 10.0) == 0.20748610663335885770":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
-+float: 2
-+ifloat: 2
-+ildouble: 2
-+ldouble: 2
-+Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
-+double: 1
-+idouble: 1
-+Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
-+double: 1
-+idouble: 1
-+ildouble: 4
-+ldouble: 4
-+Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
- double: 4
- float: 3
- idouble: 4
- ifloat: 3
--Test "jn (10, 2.0) == 0.25153862827167367096e-6":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
- float: 4
- ifloat: 4
--Test "jn (3, 0.1) == 0.000020820315754756261429":
-+Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
- double: 1
-+float: 1
- idouble: 1
--Test "jn (3, 0.7) == 0.0069296548267508408077":
-+ifloat: 1
-+Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--Test "jn (3, 10.0) == 0.058379379305186812343":
-+Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "jn (3, 2.0) == 0.12894324947440205110":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (-0.5) == log(2*sqrt(pi))":
-+ildouble: 1
-+ldouble: 1
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-
--# log
--Test "log (0.7) == -0.35667494393873237891263871124118447":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--ildouble: 1
--ldouble: 1
--
- # log10
--Test "log10 (0.7) == -0.15490195998574316929":
-+Test "log10 (0.75) == -0.124938736608299953132449886193870744":
- double: 1
--float: 1
-+float: 2
- idouble: 1
--ifloat: 1
-+ifloat: 2
- Test "log10 (e) == log10(e)":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # log1p
--Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
--double: 1
-+Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
- float: 1
--idouble: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
-+Test "log1p (M_El - 1.0) == 1":
-+ildouble: 1
-+ldouble: 1
-
- # log2
--Test "log2 (0.7) == -0.51457317282975824043":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
--# remquo
--Test "remquo (-1.625, 1.0, &x) sets x to -2":
--ildouble: 4
--ldouble: 4
--Test "remquo (1.625, -1.0, &x) sets x to -2":
--ildouble: 4
--ldouble: 4
-+Test "log2 (0.75) == -.415037499278843818546261056052183492":
-+ildouble: 1
-+ldouble: 1
-
- # sincos
--Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res":
-+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
--double: 1
--float: 0.5
--idouble: 1
--ifloat: 0.5
- ildouble: 1
- ldouble: 1
- Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
-@@ -719,22 +691,15 @@
- ildouble: 1
- ldouble: 1
- Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
--double: 0.2758
--float: 0.3667
--idouble: 0.2758
--ifloat: 0.3667
--ildouble: 0.2252
--ldouble: 0.2252
--Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
--float: 1
--ifloat: 1
--
--# sinh
--Test "sinh (0.7) == 0.75858370183953350346":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
-+float: 1
-+ifloat: 1
-
- # sqrt
- Test "sqrt (2) == M_SQRT2l":
-@@ -742,31 +707,23 @@
- ldouble: 1
-
- # tan
--Test "tan (0.7) == 0.84228838046307944812813500221293775":
--ildouble: 1
--ldouble: 1
- Test "tan (pi/4) == 1":
--double: 0.5
--idouble: 0.5
--
--# tanh
--Test "tanh (0.7) == 0.60436777711716349631":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "tanh (-0.7) == -0.60436777711716349631":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
--Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
--ldouble: 1
--ildouble: 1
-+
-+# tanh
-+Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
-+ildouble: 1
-+ldouble: 1
- Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
--ldouble: 1
--ildouble: 1
--Function: "tanh":
-+ildouble: 1
-+ldouble: 1
-+Test "tanh (0.75) == 0.635148952387287319214434357312496495":
-+ildouble: 1
-+ldouble: 1
-+Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
-+ildouble: 1
-+ldouble: 1
-
- # tgamma
- Test "tgamma (-0.5) == -2 sqrt (pi)":
-@@ -774,198 +731,193 @@
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+Test "tgamma (4) == 6":
-+ildouble: 1
-+ldouble: 1
-
- # y0
--Test "y0 (0.7) == -0.19066492933739506743":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "y0 (1.0) == 0.088256964215676957983":
-+Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "y0 (1.5) == 0.38244892379775884396":
-+Test "y0 (1.5) == 0.382448923797758843955068554978089862":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "y0 (10.0) == 0.055671167283599391424":
-+Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
- float: 1
- ifloat: 1
--Test "y0 (8.0) == 0.22352148938756622053":
-+ildouble: 3
-+ldouble: 3
-+Test "y0 (8.0) == 0.223521489387566220527323400498620359":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 3
-+ldouble: 3
-
- # y1
--Test "y1 (0.1) == -6.4589510947020269877":
-+Test "y1 (0.125) == -5.19993611253477499595928744876579921":
- double: 1
- idouble: 1
--Test "y1 (0.7) == -1.1032498719076333697":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "y1 (1.5) == -0.41230862697391129595":
-+Test "y1 (0.75) == -1.03759455076928541973767132140642198":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (1.5) == -0.412308626973911295952829820633445323":
- float: 1
- ifloat: 1
--Test "y1 (10.0) == 0.24901542420695388392":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (10.0) == 0.249015424206953883923283474663222803":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "y1 (2.0) == -0.10703243154093754689":
-+Test "y1 (2.0) == -0.107032431540937546888370772277476637":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "y1 (8.0) == -0.15806046173124749426":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (8.0) == -0.158060461731247494255555266187483550":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- # yn
--Test "yn (0, 0.7) == -0.19066492933739506743":
-+Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "yn (0, 1.0) == 0.088256964215676957983":
-+Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "yn (0, 1.5) == 0.38244892379775884396":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "yn (0, 10.0) == 0.055671167283599391424":
-+Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
- float: 1
- ifloat: 1
--Test "yn (0, 8.0) == 0.22352148938756622053":
-+ildouble: 3
-+ldouble: 3
-+Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (1, 0.1) == -6.4589510947020269877":
--double: 1
--idouble: 1
--Test "yn (1, 0.7) == -1.1032498719076333697":
-+ildouble: 3
-+ldouble: 3
-+Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
--Test "yn (1, 1.5) == -0.41230862697391129595":
-+Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
- float: 1
- ifloat: 1
--Test "yn (1, 10.0) == 0.24901542420695388392":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "yn (1, 2.0) == -0.10703243154093754689":
-+Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (1, 8.0) == -0.15806046173124749426":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
--Test "yn (10, 0.1) == -0.11831335132045197885e19":
--double: 2
--float: 2
--idouble: 2
--ifloat: 2
--Test "yn (10, 0.7) == -0.42447194260703866924e10":
--double: 3
--idouble: 3
--Test "yn (10, 1.0) == -0.12161801427868918929e9":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
- double: 1
- idouble: 1
--Test "yn (10, 10.0) == -0.35981415218340272205":
-+ildouble: 2
-+ldouble: 2
-+Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (10, 2.0) == -129184.54220803928264":
--double: 2
--idouble: 2
--Test "yn (3, 0.1) == -5099.3323786129048894":
-+ildouble: 5
-+ldouble: 5
-+Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
-+double: 1
-+idouble: 1
-+ildouble: 1
-+ldouble: 1
-+Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (3, 0.7) == -15.819479052819633505":
--double: 3
-+ildouble: 2
-+ldouble: 2
-+Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-+double: 2
-+idouble: 2
-+ildouble: 2
-+ldouble: 2
-+Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-+double: 1
-+idouble: 1
-+Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
-+double: 1
- float: 1
--idouble: 3
-+idouble: 1
- ifloat: 1
--Test "yn (3, 10.0) == -0.25136265718383732978":
-+ildouble: 2
-+ldouble: 2
-+Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (3, 2.0) == -1.1277837768404277861":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
- double: 1
- idouble: 1
-
- # Maximal error of functions:
--Function: "acos":
--ldouble: 1
--ildouble: 1
--
--Function: "asin":
--double: 1
--float: 2
--idouble: 1
--ifloat: 2
--
--Function: "atan":
--ildouble: 1
--ldouble: 1
--
- Function: "atan2":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--float: 4
--ifloat: 4
-
- Function: "atanh":
--double: 1
--idouble: 1
--
--Function: "cabs":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
--Function: Real part of "cacos":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Imaginary part of "cacos":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "cacosh":
- double: 1
-@@ -984,18 +936,14 @@
- ldouble: 1
-
- Function: Real part of "casin":
--double: 3
--float: 2
--idouble: 3
--ifloat: 2
--ildouble: 1
--ldouble: 1
--
--Function: Imaginary part of "casin":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--ildouble: 3
--ldouble: 3
-+
-+Function: Imaginary part of "casin":
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "casinh":
- double: 5
-@@ -1027,28 +975,30 @@
-
- Function: Real part of "catanh":
- double: 4
--float: 1
- idouble: 4
--ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Imaginary part of "catanh":
--double: 1
- float: 6
--idouble: 1
- ifloat: 6
-+ildouble: 1
-+ldouble: 1
-
- Function: "cbrt":
- double: 1
- idouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "ccos":
- double: 1
-+float: 1
- idouble: 1
-+ifloat: 1
-
- Function: Imaginary part of "ccos":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Real part of "ccosh":
-@@ -1058,15 +1008,11 @@
- ifloat: 1
-
- Function: Imaginary part of "ccosh":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Real part of "cexp":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-@@ -1077,16 +1023,18 @@
- ildouble: 1
- ldouble: 1
-
-+Function: Real part of "clog":
-+float: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+
- Function: Imaginary part of "clog":
--double: 1
- float: 3
--idouble: 1
- ifloat: 3
-
- Function: Real part of "clog10":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Imaginary part of "clog10":
-@@ -1094,6 +1042,7 @@
- float: 5
- idouble: 1
- ifloat: 5
-+ldouble: 1
-
- Function: "cos":
- double: 2
-@@ -1104,24 +1053,24 @@
- ldouble: 1
-
- Function: Real part of "cpow":
--double: 1
-+double: 2
- float: 4
--idouble: 1
-+idouble: 2
- ifloat: 4
--ildouble: 3
--ldouble: 3
-+ildouble: 1
-+ldouble: 1
-
- Function: Imaginary part of "cpow":
--double: 1.1031
-+double: 2
- float: 2
--idouble: 1.1031
-+idouble: 2
- ifloat: 2
--ildouble: 0.9006
--ldouble: 0.9006
-+ildouble: 1
-+ldouble: 1
-
--Function: Imaginary part of "csin":
--float: 1
--ifloat: 1
-+Function: Real part of "csin":
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "csinh":
- float: 1
-@@ -1134,48 +1083,44 @@
- ifloat: 1
-
- Function: Real part of "csqrt":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: Imaginary part of "csqrt":
--float: 1
--ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: Real part of "ctan":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-
- Function: Imaginary part of "ctan":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+ildouble: 2
-+ldouble: 2
-
- Function: Real part of "ctanh":
--double: 2
-+double: 1
- float: 2
--idouble: 2
-+idouble: 1
- ifloat: 2
-
- Function: Imaginary part of "ctanh":
--double: 2
- float: 1
--idouble: 2
- ifloat: 1
-
-+Function: "erf":
-+double: 1
-+idouble: 1
-+
- Function: "erfc":
--double: 24
--float: 12
--idouble: 24
--ifloat: 12
-+double: 1
-+idouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "exp10":
- double: 6
-@@ -1190,19 +1135,15 @@
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
--Function: "fmod":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
-+Function: "gamma":
-+ildouble: 1
-+ldouble: 1
-
- Function: "hypot":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: "j0":
-@@ -1210,52 +1151,50 @@
- float: 2
- idouble: 2
- ifloat: 2
-+ildouble: 2
-+ldouble: 2
-
- Function: "j1":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-+ildouble: 4
-+ldouble: 4
-
- Function: "jn":
--double: 6
-+double: 4
- float: 4
--idouble: 6
-+idouble: 4
- ifloat: 4
-+ildouble: 4
-+ldouble: 4
-
- Function: "lgamma":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
--
--Function: "log":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: "log10":
- double: 1
--float: 1
-+float: 2
- idouble: 1
--ifloat: 1
-+ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- Function: "log1p":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "log2":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "sincos":
- double: 1
-@@ -1265,50 +1204,48 @@
- ildouble: 1
- ldouble: 1
-
--Function: "sinh":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
- Function: "sqrt":
- ildouble: 1
- ldouble: 1
-
- Function: "tan":
--double: 0.5
--idouble: 0.5
--ildouble: 1
--ldouble: 1
--
--Function: "tanh":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+
-+Function: "tanh":
-+ildouble: 1
-+ldouble: 1
-
- Function: "tgamma":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "y0":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
-+ildouble: 3
-+ldouble: 3
-
- Function: "y1":
- double: 3
- float: 2
- idouble: 3
- ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- Function: "yn":
- double: 3
- float: 2
- idouble: 3
- ifloat: 2
-+ildouble: 5
-+ldouble: 5
-
- # end of automatic generation
---- glibc-2.3.2/sysdeps/sparc/sparc64/memchr.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/memchr.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,7 +1,7 @@
- /* memchr (str, ch, n) -- Return pointer to first occurrence of CH in STR less
- than N.
- For SPARC v9.
-- Copyright (C) 1998,1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
- Jakub Jelinek <jj@ultra.linux.cz>.
-@@ -260,3 +260,4 @@
- #if !__BOUNDED_POINTERS__
- weak_alias (__memchr, __ubp_memchr)
- #endif
-+libc_hidden_builtin_def (memchr)
---- glibc-2.3.2/sysdeps/sparc/sparc64/memcpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/memcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -917,3 +917,5 @@
- weak_alias(memcpy, __align_cpy_1)
- weak_alias(memcpy, __align_cpy_2)
- #endif
-+libc_hidden_builtin_def (memcpy)
-+libc_hidden_builtin_def (memmove)
---- glibc-2.3.2/sysdeps/sparc/sparc64/memset.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/memset.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Set a block of memory to some byte value.
- For UltraSPARC.
-- Copyright (C) 1996, 97, 98, 99 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 97, 98, 99, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David S. Miller (davem@caip.rutgers.edu) and
- Jakub Jelinek (jj@ultra.linux.cz).
-@@ -178,6 +178,7 @@
- ba,pt %xcc, 18b
- ldd [%o0], %f0
- END(memset)
-+libc_hidden_builtin_def (memset)
-
- #define ZERO_BLOCKS(base, offset, source) \
- stx source, [base - offset - 0x38]; \
---- glibc-2.3.2/sysdeps/sparc/sparc64/sparcv9b/memcpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/sparcv9b/memcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -711,3 +711,5 @@
- weak_alias(memcpy, __align_cpy_8)
- weak_alias(memcpy, __align_cpy_16)
- #endif
-+libc_hidden_builtin_def (memcpy)
-+libc_hidden_builtin_def (memmove)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strcat.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strcat.S 2003-05-12 12:13:09.000000000 -0400
-@@ -337,3 +337,4 @@
- retl /* CTI+IEU1 Group */
- mov %g6, %o0 /* IEU0 */
- END(strcat)
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strchr.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strchr.S 2003-05-12 12:13:09.000000000 -0400
-@@ -479,3 +479,5 @@
-
- weak_alias (strchr, index)
- weak_alias (strrchr, rindex)
-+libc_hidden_builtin_def (strchr)
-+libc_hidden_builtin_def (strrchr)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strcmp.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strcmp.S 2003-05-12 12:13:09.000000000 -0400
-@@ -277,3 +277,4 @@
- ba,pt %xcc, 11b /* CTI Group */
- ldxa [%o1 + %o0] ASI_PNF, %g6 /* Load */
- END(strcmp)
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strcpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strcpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -242,3 +242,4 @@
- retl /* CTI+IEU1 Group */
- mov %g6, %o0 /* IEU0 */
- END(strcpy)
-+libc_hidden_builtin_def (strcpy)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strcspn.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strcspn.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strcspn (str, ss) -- Return the length of the initial segment of STR
- which contains no characters from SS.
- For SPARC v9.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>
-
-@@ -210,3 +210,4 @@
- retl /* CTI+IEU1 Group */
- sub %o0, %g4, %o0 /* IEU0 */
- END(strcspn)
-+libc_hidden_builtin_def (strcspn)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strlen.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strlen.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Determine the length of a string. For SPARC v9.
-- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
- Jakub Jelinek <jj@ultra.linux.cz>.
-@@ -171,3 +171,4 @@
- retl /* CTI+IEU1 Group */
- sub %o0, %o1, %o0 /* IEU0 */
- END(strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strncmp.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strncmp.S 2003-05-12 12:13:09.000000000 -0400
-@@ -361,3 +361,4 @@
- ba,pt %xcc, 13b /* CTI */
- add %o1, 8, %o1 /* IEU0 */
- END(strncmp)
-+libc_hidden_builtin_def (strncmp)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strncpy.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strncpy.S 2003-05-12 12:13:09.000000000 -0400
-@@ -394,3 +394,4 @@
- ba,pt %xcc, 3b /* CTI */
- sllx %o4, 56, %g3 /* IEU0 Group */
- END(strncpy)
-+libc_hidden_builtin_def (strncpy)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strpbrk.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strpbrk.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strpbrk (s, accept) -- Find the first occurrence in S of any character in
- ACCEPT.
- For SPARC v9.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>
-
-@@ -228,3 +228,4 @@
-
- movrz %g1, 0, %o0 /* Single Group */
- END(strpbrk)
-+libc_hidden_builtin_def (strpbrk)
---- glibc-2.3.2/sysdeps/sparc/sparc64/strspn.S 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/sparc/sparc64/strspn.S 2003-05-12 12:13:09.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strspn (str, ss) -- Return the length of the maximum initial segment
- of S which contains only characters in ACCEPT.
- For SPARC v9.
-- Copyright (C) 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>
-
-@@ -210,3 +210,4 @@
- retl /* CTI+IEU1 Group */
- sub %o0, %g4, %o0 /* IEU0 */
- END(strspn)
-+libc_hidden_builtin_def (strspn)
---- glibc-2.3.2/sysdeps/unix/Makefile 2003-01-15 19:47:25.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/Makefile 2003-05-12 12:13:09.000000000 -0400
-@@ -1,4 +1,5 @@
--# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,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
-@@ -281,11 +282,49 @@
-
- ifeq (misc,$(subdir))
- sysdep_routines += $(unix-extra-syscalls)
-+
-+ifdef unix-stub-syscalls
-+# The system call entry points in this list are supposed to be additional
-+# functions not overriding any other sysdeps/.../call.c implementation, but
-+# their system call numbers are unavailable in the kernel headers we're
-+# using. Instead of a system call stub, these get a function that fails
-+# with ENOSYS. We just generate a single module defining one function and
-+# making all these entry point names aliases for it.
-+sysdep_routines += stub-syscalls
-+$(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
-+ $(..)sysdeps/unix/Makefile
-+ $(make-target-directory)
-+ (echo '#include <errno.h>'; \
-+ echo 'long int _no_syscall (void)'; \
-+ echo '{ __set_errno (ENOSYS); return -1L; }'; \
-+ for call in $(unix-stub-syscalls); do \
-+ case $$call in \
-+ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
-+ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
-+ echo "default_symbol_version \
-+ ($${call}_$${ver}, $$call, $$ver);" ;; \
-+ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
-+ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
-+ echo "symbol_version ($${call}_$${ver}, $$call, $$ver);" ;; \
-+ *) echo "weak_alias (_no_syscall, $$call)"; \
-+ echo "stub_warning ($$call)"; \
-+ echo "weak_alias (_no_syscall, __GI_$$call)" ;; \
-+ esac; \
-+ echo '#include <stub-tag.h>'; \
-+ done) > $@T
-+ mv -f $@T $@
-+generated += stub-syscalls.c
-+endif
- endif
-
- export sysdirs
- export asm_CPP := $(COMPILE.S) -E -x assembler-with-cpp
-
-+# This is the end of the pipeline for compiling the syscall stubs.
-+# The stdin in assembler with cpp using sysdep.h macros.
-+# Be sure to disable debugging info since it would all just say "<stdin>".
-+compile-syscall = $(filter-out -g%,$(COMPILE.S)) -x assembler-with-cpp -o $@ -
-+
- ifndef avoid-generated
- $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
- $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
-@@ -300,10 +339,10 @@
- # The syscall objects depend on s-proto.d or s-proto-cancel.d, which
- # are generated to specify dependencies generated syscalls have on
- # headers.
--ifdef subdir
--ifndef no_deps
- # These deps use file names relative to a subdir, so don't
- # include them in the parent directory.
-+ifneq (,$(filter $(unix-syscalls),$(routines) $(sysdep_routines) $(aux)))
-+ifndef no_deps
- -include $(common-objpfx)s-proto.d
- -include $(common-objpfx)s-proto-bp.d
- -include $(common-objpfx)s-proto-cancel.d
-@@ -312,8 +351,7 @@
-
- $(common-objpfx)s-%.d: $(..)sysdeps/unix/s-%.S \
- $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
--# Don't try to use compat.h in the db2 subdir
-- $(subst -include ./compat.h,,$(+make-deps))
-+ $(+make-deps)
-
- common-generated += s-proto.d s-proto-bp.d s-proto-cancel.d
- postclean-generated += sysd-syscalls
---- glibc-2.3.2/sysdeps/unix/alpha/sysdep.h 2003-01-26 16:07:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/alpha/sysdep.h 2003-08-21 08:37:10.000000000 -0400
-@@ -119,6 +119,36 @@
- END(sym)
- #endif
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .globl name; \
-+ .align 4; \
-+ .ent name,0; \
-+__LABEL(name) \
-+ PSEUDO_PROLOGUE; \
-+ PSEUDO_PREPARE_ARGS \
-+ lda v0, SYS_ify(syscall_name); \
-+ call_pal PAL_callsys;
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) END(sym)
-+
-+#define ret_NOERRNO ret
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .globl name; \
-+ .align 4; \
-+ .ent name,0; \
-+__LABEL(name) \
-+ PSEUDO_PROLOGUE; \
-+ PSEUDO_PREPARE_ARGS \
-+ lda v0, SYS_ify(syscall_name); \
-+ call_pal PAL_callsys;
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(sym) END(sym)
-+
-+#define ret_ERRVAL ret
-+
- #define r0 v0
- #define r1 a4
-
-@@ -137,7 +167,7 @@
- ({ \
- long _sc_ret, _sc_err; \
- inline_syscall##nr(name, args); \
-- if (_sc_err) \
-+ if (__builtin_expect (_sc_err, 0)) \
- { \
- __set_errno (_sc_ret); \
- _sc_ret = -1L; \
-@@ -167,8 +197,8 @@
- /* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
- as modeled within GCC, and explicit use of the R0 register. If we use
- the register via the asm, the scheduler may place the PAL_rduniq insn
-- before we've copied the data from R0 into _sc_ret. If this happens
-- we'll get a reload abort, since R0 is live at the same time it is
-+ before we've copied the data from R0 into _sc_ret. If this happens
-+ we'll get a reload abort, since R0 is live at the same time it is
- needed for the PAL_rduniq.
-
- Solve this by using the "v" constraint instead of an asm for the syscall
---- glibc-2.3.2/sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h 2002-11-02 20:21:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h 2003-08-21 08:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. FreeBSD version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -57,6 +57,7 @@
- #define __TIMER_T_TYPE __S32_TYPE
- #define __BLKSIZE_T_TYPE __U32_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-
- /* Number of descriptors that can fit in an `fd_set'. */
- #define __FD_SETSIZE 1024
---- glibc-2.3.2/sysdeps/unix/clock_gettime.c 2002-01-31 18:39:56.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/clock_gettime.c 2003-08-21 08:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -32,7 +32,8 @@
-
-
- /* This function is defined in the thread library. */
--extern int __pthread_clock_gettime (hp_timing_t freq, struct timespec *tp)
-+extern int __pthread_clock_gettime (clockid_t clock_id, hp_timing_t freq,
-+ struct timespec *tp)
- __attribute__ ((__weak__));
- #endif
-
-@@ -41,21 +42,42 @@
- int
- clock_gettime (clockid_t clock_id, struct timespec *tp)
- {
-- struct timeval tv;
- int retval = -1;
-
- switch (clock_id)
- {
-+#define HANDLE_REALTIME \
-+ do { \
-+ struct timeval tv; \
-+ retval = gettimeofday (&tv, NULL); \
-+ if (retval == 0) \
-+ /* Convert into `timespec'. */ \
-+ TIMEVAL_TO_TIMESPEC (&tv, tp); \
-+ } while (0)
-+
-+#ifdef SYSDEP_GETTIME
-+ SYSDEP_GETTIME;
-+#endif
-+
-+#ifndef HANDLED_REALTIME
- case CLOCK_REALTIME:
-- retval = gettimeofday (&tv, NULL);
-- if (retval == 0)
-- /* Convert into `timespec'. */
-- TIMEVAL_TO_TIMESPEC (&tv, tp);
-+ HANDLE_REALTIME;
- break;
-+#endif
-
-+ default:
- #if HP_TIMING_AVAIL
-+ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
-+ != CLOCK_THREAD_CPUTIME_ID)
-+#endif
-+ {
-+ __set_errno (EINVAL);
-+ break;
-+ }
-+
-+#if HP_TIMING_AVAIL
-+ /* FALLTHROUGH. */
- case CLOCK_PROCESS_CPUTIME_ID:
-- case CLOCK_THREAD_CPUTIME_ID:
- {
- hp_timing_t tsc;
-
-@@ -71,10 +93,10 @@
- break;
- }
-
-- if (clock_id == CLOCK_THREAD_CPUTIME_ID
-+ if (clock_id != CLOCK_PROCESS_CPUTIME_ID
- && __pthread_clock_gettime != NULL)
- {
-- retval = __pthread_clock_gettime (freq, tp);
-+ retval = __pthread_clock_gettime (clock_id, freq, tp);
- break;
- }
-
-@@ -95,10 +117,6 @@
- }
- break;
- #endif
--
-- default:
-- __set_errno (EINVAL);
-- break;
- }
-
- return retval;
---- glibc-2.3.2/sysdeps/unix/clock_nanosleep.c 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/clock_nanosleep.c 2003-08-21 08:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* High-resolution sleep with the specified clock.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 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
-@@ -21,14 +21,19 @@
- #include <errno.h>
- #include <time.h>
- #include <hp-timing.h>
--
-+#include <sysdep-cancel.h>
-
- #if HP_TIMING_AVAIL
--# define CLOCK_P(clock) \
-- (clock) != CLOCK_PROCESS_CPUTIME_ID \
-- && (clock) != CLOCK_THREAD_CPUTIME_ID
-+# define CPUCLOCK_P(clock) \
-+ ((clock) == CLOCK_PROCESS_CPUTIME_ID \
-+ || ((clock) & ((1 << CLOCK_IDFIELD_SIZE) - 1)) == CLOCK_THREAD_CPUTIME_ID)
- #else
--# define CLOCK_P(clock) 0
-+# define CPUCLOCK_P(clock) 0
-+#endif
-+
-+#ifndef INVALID_CLOCK_P
-+# define INVALID_CLOCK_P(cl) \
-+ ((cl) < CLOCK_REALTIME || (cl) > CLOCK_THREAD_CPUTIME_ID)
- #endif
-
-
-@@ -44,6 +49,16 @@
- || __builtin_expect (req->tv_nsec, 0) >= 1000000000)
- return EINVAL;
-
-+ if (CPUCLOCK_P (clock_id))
-+ return ENOTSUP;
-+
-+ if (INVALID_CLOCK_P (clock_id))
-+ return EINVAL;
-+
-+#ifdef SYSDEP_NANOSLEEP
-+ SYSDEP_NANOSLEEP;
-+#endif
-+
- /* If we got an absolute time, remap it. */
- if (flags == TIMER_ABSTIME)
- {
-@@ -76,11 +91,8 @@
- else if (__builtin_expect (flags, 0) != 0)
- return EINVAL;
- else if (clock_id != CLOCK_REALTIME)
-- {
-- /* Make sure the clock ID is correct. */
-- if (__builtin_expect (! CLOCK_P (clock_id), 0))
-- return EINVAL;
-- }
-+ /* Not supported. */
-+ return ENOTSUP;
-
- return __builtin_expect (nanosleep (req, rem), 0) ? errno : 0;
- }
---- glibc-2.3.2/sysdeps/unix/clock_settime.c 2002-01-31 18:40:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/clock_settime.c 2003-08-21 08:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -31,7 +31,7 @@
-
-
- /* This function is defined in the thread library. */
--extern void __pthread_clock_settime (hp_timing_t offset)
-+extern void __pthread_clock_settime (clockid_t clock_id, hp_timing_t offset)
- __attribute__ ((__weak__));
- #endif
-
-@@ -40,7 +40,6 @@
- int
- clock_settime (clockid_t clock_id, const struct timespec *tp)
- {
-- struct timeval tv;
- int retval;
-
- /* Make sure the time cvalue is OK. */
-@@ -52,15 +51,38 @@
-
- switch (clock_id)
- {
-- case CLOCK_REALTIME:
-- TIMESPEC_TO_TIMEVAL (&tv, tp);
-+#define HANDLE_REALTIME \
-+ do { \
-+ struct timeval tv; \
-+ TIMESPEC_TO_TIMEVAL (&tv, tp); \
-+ \
-+ retval = settimeofday (&tv, NULL); \
-+ } while (0)
-+
-+#ifdef SYSDEP_GETTIME
-+ SYSDEP_GETTIME;
-+#endif
-
-- retval = settimeofday (&tv, NULL);
-+#ifndef HANDLED_REALTIME
-+ case CLOCK_REALTIME:
-+ HANDLE_REALTIME;
- break;
-+#endif
-
-+ default:
- #if HP_TIMING_AVAIL
-+ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
-+ != CLOCK_THREAD_CPUTIME_ID)
-+#endif
-+ {
-+ __set_errno (EINVAL);
-+ retval = -1;
-+ break;
-+ }
-+
-+#if HP_TIMING_AVAIL
-+ /* FALLTHROUGH. */
- case CLOCK_PROCESS_CPUTIME_ID:
-- case CLOCK_THREAD_CPUTIME_ID:
- {
- hp_timing_t tsc;
- hp_timing_t usertime;
-@@ -87,21 +109,16 @@
- usertime = tp->tv_sec * freq + (tp->tv_nsec * freq) / 1000000000ull;
-
- /* Determine the offset and use it as the new base value. */
-- if (clock_id != CLOCK_THREAD_CPUTIME_ID
-+ if (clock_id == CLOCK_PROCESS_CPUTIME_ID
- || __pthread_clock_settime == NULL)
- GL(dl_cpuclock_offset) = tsc - usertime;
- else
-- __pthread_clock_settime (tsc - usertime);
-+ __pthread_clock_settime (clock_id, tsc - usertime);
-
- retval = 0;
- }
- break;
- #endif
--
-- default:
-- __set_errno (EINVAL);
-- retval = -1;
-- break;
- }
-
- return retval;
---- glibc-2.3.2/sysdeps/unix/closedir.c 2002-12-10 04:59:22.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/closedir.c 2003-08-21 08:37:10.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1993,1995,1996,1998,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1993,1995,1996,1998,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
-@@ -22,6 +23,8 @@
- #include <dirent.h>
- #include <unistd.h>
- #include <dirstream.h>
-+#include <not-cancel.h>
-+
-
- /* Close the directory stream DIRP.
- Return 0 if successful, -1 if not. */
-@@ -46,6 +49,6 @@
-
- free ((void *) dirp);
-
-- return __close (fd);
-+ return close_not_cancel (fd);
- }
- weak_alias (__closedir, closedir)
---- glibc-2.3.2/sysdeps/unix/make-syscalls.sh 2003-01-15 19:47:25.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/make-syscalls.sh 2003-08-21 08:37:10.000000000 -0400
-@@ -84,8 +84,11 @@
- esac
-
- cancellable=
-+ noerrno=
- case $args in
- C*) cancellable=-cancel; args=`echo $args | sed 's/C:\?//'`;;
-+ E*) noerrno=_NOERRNO; args=`echo $args | sed 's/E:\?//'`;;
-+ V*) noerrno=_ERRVAL; args=`echo $args | sed 's/V:\?//'`;;
- esac
-
- # Derive the number of arguments from the argument signature
-@@ -109,6 +112,16 @@
- echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
-
- case x$srcfile"$callnum" in
-+ x--)
-+ # Undefined callnum for an extra syscall.
-+ if [ x$caller != x- ]; then
-+ if [ x$noerrno != x ]; then
-+ echo >&2 "$0: no number for $fileno, no-error syscall ($strong $weak)"
-+ exit 2
-+ fi
-+ echo "unix-stub-syscalls += $strong $weak"
-+ fi
-+ ;;
- x*-) ;; ### Do nothing for undefined callnum
- x-*)
- echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
-@@ -149,9 +162,9 @@
- echo "\
- \$(make-target-directory)
- (echo '#include <sysdep$cancellable.h>'; \\
-- echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
-- echo ' ret'; \\
-- echo 'PSEUDO_END($strong)'; \\
-+ echo 'PSEUDO$noerrno ($strong, $syscall, $nargs)'; \\
-+ echo ' ret$noerrno'; \\
-+ echo 'PSEUDO_END$noerrno($strong)'; \\
- echo 'libc_hidden_def ($strong)'; \\"
- ;;
- esac
-@@ -190,6 +203,11 @@
- fi
- echo " echo 'symbol_version($source, $base, $ver)'; \\"
- ;;
-+ !*)
-+ name=`echo $name | sed 's/.//'`
-+ echo " echo 'strong_alias ($strong, $name)'; \\"
-+ echo " echo 'libc_hidden_def ($name)'; \\"
-+ ;;
- *)
- echo " echo 'weak_alias ($strong, $name)'; \\"
- echo " echo 'libc_hidden_weak ($name)'; \\"
-@@ -198,7 +216,7 @@
- done
-
- # And finally, pipe this all into the compiler.
-- echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
-+ echo ' ) | $(compile-syscall)'
-
- case $weak in
- *@*)
---- glibc-2.3.2/sysdeps/unix/mips/brk.S 2003-01-12 02:54:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/brk.S 2003-03-18 16:46:09.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -18,6 +18,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- #ifndef SYS_brk
- #define SYS_brk 17
-@@ -37,9 +38,9 @@
- .set reorder
- /* Handle the query case. */
- bnez a0, 1f
-- move a0,v0
-+ move a0, v0
- 1: /* Update __curbrk and exit cleanly. */
-- sw a0, __curbrk
-+ PTR_S a0, __curbrk
- move v0, zero
- jr ra
- PSEUDO_END(__brk)
---- glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h 2003-03-29 03:15:28.000000000 -0500
-@@ -0,0 +1,52 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Brendan Kehoe (brendan@zen.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.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99: la t9,__syscall_error; \
-+ jr t9; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ .cpload t9; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ nop; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
---- glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h 2003-04-12 11:39:48.000000000 -0400
-@@ -0,0 +1,57 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+#ifdef __ASSEMBLER__
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99:; \
-+ .set noat; \
-+ .cpsetup t9, $1, name; \
-+ .set at; \
-+ la t9,__syscall_error; \
-+ .cpreturn; \
-+ jr t9; \
-+ ENTRY(name) \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h 2003-04-12 11:39:48.000000000 -0400
-@@ -0,0 +1,57 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+#ifdef __ASSEMBLER__
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99:; \
-+ .set noat; \
-+ .cpsetup t9, $1, name; \
-+ .set at; \
-+ dla t9,__syscall_error; \
-+ .cpreturn; \
-+ jr t9; \
-+ ENTRY(name) \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/mips/sysdep.S 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/sysdep.S 2003-04-12 11:39:47.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992,93,94,97,98,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -20,47 +21,52 @@
- #include <sysdep.h>
- #define _ERRNO_H
- #include <bits/errno.h>
-+#include <sys/asm.h>
-
- #ifdef _LIBC_REENTRANT
-
-+LOCALSZ= 3
-+FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
-+RAOFF= FRAMESZ-(1*SZREG)
-+GPOFF= FRAMESZ-(2*SZREG)
-+V0OFF= FRAMESZ-(3*SZREG)
-+
- ENTRY(__syscall_error)
- #ifdef __PIC__
-- .set noreorder
-- .set noat
-- move AT, ra
-- bltzal zero, 0f
-- nop
--0: .cpload ra
-- move ra, AT
-- .set at
-- .set reorder
-+ .set noat
-+ SETUP_GPX (AT)
-+ .set at
- #endif
-- subu sp, 32
-+ PTR_SUBU sp, FRAMESZ
-+ .set noat
-+ SETUP_GPX64(GPOFF,AT)
-+ .set at
- #ifdef __PIC__
-- .cprestore 16
-+ SAVE_GP(GPOFF)
- #endif
-- sw v0, 20(sp)
-- sw ra, 24(sp)
-+ REG_S v0, V0OFF(sp)
-+ REG_S ra, RAOFF(sp)
-
- #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
-- bne v0, EWOULDBLOCK_sys, skip
-+ bne v0, EWOULDBLOCK_sys, L(skip)
- nop
- li v0, EAGAIN
--skip:
-+L(skip):
- #endif
- /* Find our per-thread errno address */
- jal __errno_location
-
- /* Store the error value. */
-- lw t0, 20(sp)
-+ REG_L t0, V0OFF(sp)
- sw t0, 0(v0)
-
- /* And just kick back a -1. */
-- lw ra, 24(sp)
-- addiu sp, 32
-+ REG_L ra, RAOFF(sp)
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- li v0, -1
- j ra
- END(__syscall_error)
-@@ -70,29 +76,25 @@
-
- ENTRY(__syscall_error)
- #ifdef __PIC__
-- .set noreorder
-- .set noat
-- move AT, ra
-- bltzal zero, 0f
-- nop
--0: .cpload ra
-- move ra, AT
-- .set at
-- .set reorder
-+ SETUP_GPX (AT)
- #endif
-+ SETUP_GPX64 (t9, AT)
-+
- #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
-- bne v0, EWOULDBLOCK_sys, skip
-+ bne v0, EWOULDBLOCK_sys, L(skip)
- li v0, EAGAIN
--skip:
-+L(skip):
- #endif
- /* Store it in errno... */
- sw v0, errno
-
- /* And just kick back a -1. */
- li v0, -1
-+
-+ RESTORE_GP64
- j ra
- END(__syscall_error)
- #endif /* _LIBC_REENTRANT */
---- glibc-2.3.2/sysdeps/unix/mips/sysdep.h 2002-11-06 13:22:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/mips/sysdep.h 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992,95,97,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -29,48 +30,49 @@
- .ent name,0; \
- name##:
-
--/* Note that while it's better structurally, going back to call __syscall_error
-- can make things confusing if you're debugging---it looks like it's jumping
-- backwards into the previous fn. */
--#ifdef __PIC__
-- #define PSEUDO(name, syscall_name, args) \
-- .align 2; \
-- 99: la t9,__syscall_error; \
-- jr t9; \
-- ENTRY(name) \
-- .set noreorder; \
-- .cpload t9; \
-- li v0, SYS_ify(syscall_name); \
-- syscall; \
-- .set reorder; \
-- bne a3, zero, 99b; \
--syse1:
--#else
--#define PSEUDO(name, syscall_name, args) \
-- .set noreorder; \
-- .align 2; \
-- 99: j __syscall_error; \
-- nop; \
-- ENTRY(name) \
-- .set noreorder; \
-- li v0, SYS_ify(syscall_name); \
-- syscall; \
-- .set reorder; \
-- bne a3, zero, 99b; \
--syse1:
--#endif
-+#undef END
-+#define END(function) \
-+ .end function; \
-+ .size function,.-function
-+
-+#define ret j ra ; nop
-
- #undef PSEUDO_END
--#define PSEUDO_END(sym) .end sym
-+#define PSEUDO_END(sym) .end sym; .size sym,.-sym
-
--#define ret j ra ; nop
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .align 2; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) .end sym; .size sym,.-sym
-+
-+#define ret_NOERRNO ret
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .align 2; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall
-
--#undef END
--#define END(sym) .end sym
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(sym) .end sym; .size sym,.-sym
-+
-+#define ret_ERRVAL ret
-
- #define r0 v0
- #define r1 v1
- /* The mips move insn is d,s. */
- #define MOVE(x,y) move y , x
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
-+# define L(label) $L ## label
-+#else
-+# define L(label) .L ## label
-+#endif
-+
- #endif
---- glibc-2.3.2/sysdeps/unix/mips/wait.S 2001-07-07 15:21:30.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/mips/wait.S 2003-03-15 15:02:18.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992, 1994, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1994, 1995, 1997, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -28,18 +29,18 @@
-
- li v0, SYS_wait
- syscall
-- beqz a3, noerror
-+ beqz a3, L(noerror)
- nop
- j __syscall_error
- nop
-
--noerror:
-+L(noerror):
- /* If the arg is not NULL, store v1 there. */
-- beqz a0, noarg
-+ beqz a0, L(noarg)
- nop
- sw v1, 0(a0)
- nop
--noarg:
-+L(noarg):
- ret
- .end __wait
-
---- glibc-2.3.2/sysdeps/unix/opendir.c 2002-08-26 17:16:13.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/opendir.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1996,98,2000-2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1996,98,2000-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
-@@ -28,6 +28,8 @@
- #include <stdio.h>
-
- #include <dirstream.h>
-+#include <not-cancel.h>
-+
-
- /* opendir() must not accidentally open something other than a directory.
- Some OS's have kernel support for that, some don't. In the worst
-@@ -50,11 +52,11 @@
- tryopen_o_directory (void)
- {
- int serrno = errno;
-- int x = __open ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
-+ int x = open_not_cancel_2 ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
-
- if (x >= 0)
- {
-- __close (x);
-+ close_not_cancel_no_status (x);
- o_directory_works = -1;
- }
- else if (errno != ENOTDIR)
-@@ -110,7 +112,7 @@
- }
- }
-
-- fd = __open64 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS);
-+ fd = open_not_cancel_2 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS|O_LARGEFILE);
- if (__builtin_expect (fd, 0) < 0)
- return NULL;
-
-@@ -135,24 +137,27 @@
- goto lose;
-
- #ifdef _STATBUF_ST_BLKSIZE
-- if (__builtin_expect ((size_t) statbuf.st_blksize >= sizeof (struct dirent),
-+ if (__builtin_expect ((size_t) statbuf.st_blksize >= sizeof (struct dirent64),
- 1))
- allocation = statbuf.st_blksize;
- else
- #endif
-- allocation = (BUFSIZ < sizeof (struct dirent)
-- ? sizeof (struct dirent) : BUFSIZ);
-+ allocation = (BUFSIZ < sizeof (struct dirent64)
-+ ? sizeof (struct dirent64) : BUFSIZ);
-+
-+ const int pad = -sizeof (DIR) % __alignof__ (struct dirent64);
-
-- dirp = (DIR *) calloc (1, sizeof (DIR) + allocation); /* Zero-fill. */
-+ dirp = (DIR *) malloc (sizeof (DIR) + allocation + pad);
- if (dirp == NULL)
- lose:
- {
- save_errno = errno;
-- (void) __close (fd);
-+ close_not_cancel_no_status (fd);
- __set_errno (save_errno);
- return NULL;
- }
-- dirp->data = (char *) (dirp + 1);
-+ memset (dirp, '\0', sizeof (DIR));
-+ dirp->data = (char *) (dirp + 1) + pad;
- dirp->allocation = allocation;
- dirp->fd = fd;
-
---- glibc-2.3.2/sysdeps/unix/sparc/sysdep.h 2001-07-07 15:21:30.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sparc/sysdep.h 2003-08-21 08:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1994, 1995, 1997, 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
-@@ -52,7 +52,21 @@
- jmp %g1 + %lo(syscall_error); nop; \
- 1:
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .global syscall_error; \
-+ ENTRY (name) \
-+ mov SYS_ify(syscall_name), %g1; \
-+ ta 0
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .global syscall_error; \
-+ ENTRY (name) \
-+ mov SYS_ify(syscall_name), %g1; \
-+ ta 0
-+
- #define ret retl; nop
-+#define ret_NOERRNO retl; nop
-+#define ret_ERRVAL retl; nop
- #define r0 %o0
- #define r1 %o1
- #define MOVE(x,y) mov x, y
---- glibc-2.3.2/sysdeps/unix/syscalls.list 2003-01-30 22:39:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/syscalls.list 2003-08-21 08:37:10.000000000 -0400
-@@ -14,17 +14,17 @@
- fstatfs - fstatfs i:ip __fstatfs fstatfs
- fsync - fsync Ci:i __libc_fsync fsync
- getdomain - getdomainname i:si getdomainname
--getgid - getgid i: __getgid getgid
-+getgid - getgid Ei: __getgid getgid
- getgroups - getgroups i:ip __getgroups getgroups
- getitimer - getitimer i:ip __getitimer getitimer
--getpid - getpid i: __getpid getpid
-+getpid - getpid Ei: __getpid getpid
- getpriority - getpriority i:ii getpriority
- getrlimit - getrlimit i:ip __getrlimit getrlimit
--getuid - getuid i: __getuid getuid
-+getuid - getuid Ei: __getuid getuid
- ioctl - ioctl i:iiI __ioctl ioctl
- kill - kill i:ii __kill kill
- link - link i:ss __link link
--lseek - lseek Ci:iii __libc_lseek __lseek lseek
-+lseek - lseek i:iii __libc_lseek __lseek lseek
- mkdir - mkdir i:si __mkdir mkdir
- open - open Ci:siv __libc_open __open open
- profil - profil i:piii __profil profil
-@@ -57,7 +57,7 @@
- sys_fstat fxstat fstat i:ip __syscall_fstat
- sys_mknod xmknod mknod i:sii __syscall_mknod
- sys_stat xstat stat i:sp __syscall_stat
--umask - umask i:i __umask umask
-+umask - umask Ei:i __umask umask
- uname - uname i:p __uname uname
- unlink - unlink i:s __unlink unlink
- utimes - utimes i:sp __utimes utimes
---- glibc-2.3.2/sysdeps/unix/sysdep.h 2001-07-07 15:21:29.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysdep.h 2003-08-21 08:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 93, 96, 98 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 92, 93, 96, 98, 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
-@@ -47,6 +47,12 @@
- #ifndef PSEUDO_END
- #define PSEUDO_END(sym)
- #endif
-+#ifndef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym)
-+#endif
-+#ifndef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(sym) PSEUDO_END(sym)
-+#endif
-
- /* Wrappers around system calls should normally inline the system call code.
- But sometimes it is not possible or implemented and we use this code. */
---- glibc-2.3.2/sysdeps/unix/sysv/aix/posix_madvise.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/aix/posix_madvise.c 2003-08-16 02:13:49.000000000 -0400
-@@ -0,0 +1,8 @@
-+#include <errno.h>
-+#include <sys/mman.h>
-+
-+int
-+posix_madvise (void *addr, size_t len, int advise)
-+{
-+ return madvise (addr, len, advise) ? errno : 0;
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/i386/time.S 2002-08-03 12:57:45.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/i386/time.S 2003-08-21 08:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,96,97,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,92,96,97,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
-@@ -19,12 +19,12 @@
- #include <sysdep.h>
- #include <asm-syntax.h>
-
--SYSCALL (time, 1)
-+PSEUDO_NOERRNO (time, time, 1)
- movl 4(%esp), %edx /* Put passed pointer in %edx. */
- testl %edx, %edx /* Is it non-nil? */
- je L(null)
- movl %eax, (%edx) /* Yes; store the time there. */
- L(null):
- ret
--PSEUDO_END (time)
-+PSEUDO_END_NOERRNO (time)
- libc_hidden_def (time)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/Dist 2003-02-21 01:30:10.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/Dist 2003-09-19 22:37:08.000000000 -0400
-@@ -3,6 +3,7 @@
- dl-brk.c
- dl-sbrk.c
- exit-thread.S
-+fatal-prepare.h
- getdirentries.c
- getdirentries64.c
- ipc_priv.h
-@@ -10,7 +11,6 @@
- kernel_sigaction.h
- kernel_stat.h
- kernel_termios.h
--internal_statvfs.c
- ldd-rewrite.sed
- lddlibc4.c
- linux_fsinfo.h
-@@ -39,7 +39,6 @@
- neteconet/ec.h
- netinet/if_fddi.h
- netinet/if_tr.h
--netinet/igmp.h
- netpacket/packet.h
- netipx/ipx.h
- netrom/netrom.h
-@@ -78,6 +77,7 @@
- sys/user.h
- sys/vt.h
- xstatconv.c
-+xstatconv.h
- getdents64.c
- umount.S
- umount2.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile 2002-12-16 18:36:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile 2003-09-19 22:37:08.000000000 -0400
-@@ -2,25 +2,29 @@
- sysdep_routines += errno-loc
- endif
-
--ifeq ($(subdir),db2)
--CPPFLAGS += -DHAVE_LLSEEK=1
-+ifeq ($(subdir),assert)
-+CFLAGS-assert.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
-+CFLAGS-assert-perr.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
- endif
-
- ifeq ($(subdir),malloc)
--CFLAGS-malloc.c = -DMORECORE_CLEARS=2
-+CFLAGS-malloc.c += -DMORECORE_CLEARS=2
- endif
-
- ifeq ($(subdir),misc)
- sysdep_routines += sysctl clone llseek umount umount2 readahead \
- setfsuid setfsgid
-
-+CFLAGS-gethostid.c = -fexceptions
-+
- sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
- sys/klog.h sys/kdaemon.h \
- sys/user.h sys/procfs.h sys/prctl.h \
- sys/kd.h sys/soundcard.h sys/vt.h \
- sys/quota.h sys/fsuid.h \
- scsi/sg.h scsi/scsi.h scsi/scsi_ioctl.h sys/pci.h \
-- sys/ultrasound.h sys/raw.h sys/personality.h sys/epoll.h
-+ sys/ultrasound.h sys/raw.h sys/personality.h sys/epoll.h \
-+ bits/a.out.h
-
- install-others += $(inst_includedir)/bits/syscall.h
-
-@@ -28,7 +32,7 @@
- # For bi-arch platforms, the CPU/Makefile defines {32,64}bit-predefine and
- # we generate a file that uses <bits/wordsize.h>.
- $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
-- rm -f $(@:.h=.d)-t
-+ $(make-target-directory)
- { \
- echo '/* Generated at libc build time from kernel syscall list. */';\
- echo ''; \
-@@ -36,14 +40,14 @@
- echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
- echo '#endif'; \
- echo ''; \
-- SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
-- $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
-- $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \
-+ $(CC) -E -MD -MP -MF $(@:.h=.d)-t1 -MT '$(@:.d=.h) $(@:.h=.d)' \
-+ -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
-+ $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort > $(@:.d=.h).new32; \
-- SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
-- $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
-- $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
-+ $(CC) -E -MD -MP -MF $(@:.h=.d)-t2 -MT '$(@:.d=.h) $(@:.h=.d)' \
-+ -x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \
-+ $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort > $(@:.d=.h).new64; \
- if cmp -s $(@:.d=.h).new32 $(@:.d=.h).new64; then \
-@@ -61,12 +65,13 @@
- rm -f $(@:.d=.h).new32 $(@:.d=.h).new64; \
- } > $(@:.d=.h).new
- mv -f $(@:.d=.h).new $(@:.d=.h)
-- sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \
-- -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\
-- $(@:.d=.h) $(@:.h=.d)),'
-- rm -f $(@:.h=.d)-t
-- mv -f $(@:.h=.d)-t2 $(@:.h=.d)
--
-+ifneq (,$(objpfx))
-+ sed $(sed-remove-objpfx) $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
-+else
-+ cat $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
-+endif
-+ rm -f $(@:.h=.d)-t1 $(@:.h=.d)-t2
-+ mv -f $(@:.h=.d)-t3 $(@:.h=.d)
-
- $(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force)
- $(make-target-directory)
-@@ -114,7 +119,7 @@
- endif
-
- ifeq ($(subdir),inet)
--sysdep_headers += netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
-+sysdep_headers += netinet/if_fddi.h netinet/if_tr.h \
- netipx/ipx.h netash/ash.h netax25/ax25.h netatalk/at.h \
- netrom/netrom.h netpacket/packet.h netrose/rose.h \
- neteconet/ec.h
-@@ -131,6 +136,10 @@
- CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
- endif
-
-+ifeq ($(subdir),io)
-+sysdep_routines += xstatconv internal_statvfs
-+endif
-+
- ifeq ($(subdir),elf)
- sysdep-rtld-routines += dl-brk dl-sbrk
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/_exit.c 2002-10-03 12:36:49.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/_exit.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -22,9 +22,6 @@
- #include <sysdep.h>
- #include <abort-instr.h>
-
--extern void __syscall_exit_group (int status);
--extern void __syscall_exit (int status);
--
-
- void
- _exit (status)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/a.out.h 1997-01-22 00:25:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/a.out.h 2003-08-21 08:37:11.000000000 -0400
-@@ -1,5 +1,138 @@
--#ifdef _LIBC
--# include_next <linux/a.out.h>
--#else
--# include <linux/a.out.h>
--#endif
-+#ifndef __A_OUT_GNU_H__
-+#define __A_OUT_GNU_H__
-+
-+#include <bits/a.out.h>
-+
-+#define __GNU_EXEC_MACROS__
-+
-+struct exec
-+{
-+ unsigned long a_info; /* Use macros N_MAGIC, etc for access. */
-+ unsigned int a_text; /* Length of text, in bytes. */
-+ unsigned int a_data; /* Length of data, in bytes. */
-+ unsigned int a_bss; /* Length of uninitialized data area for file, in bytes. */
-+ unsigned int a_syms; /* Length of symbol table data in file, in bytes. */
-+ unsigned int a_entry; /* Start address. */
-+ unsigned int a_trsize;/* Length of relocation info for text, in bytes. */
-+ unsigned int a_drsize;/* Length of relocation info for data, in bytes. */
-+};
-+
-+enum machine_type
-+{
-+ M_OLDSUN2 = 0,
-+ M_68010 = 1,
-+ M_68020 = 2,
-+ M_SPARC = 3,
-+ M_386 = 100,
-+ M_MIPS1 = 151,
-+ M_MIPS2 = 152
-+};
-+
-+#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-+#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-+#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-+#define N_SET_INFO(exec, magic, type, flags) \
-+ ((exec).a_info = ((magic) & 0xffff) \
-+ | (((int)(type) & 0xff) << 16) \
-+ | (((flags) & 0xff) << 24))
-+#define N_SET_MAGIC(exec, magic) \
-+ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
-+#define N_SET_MACHTYPE(exec, machtype) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-+#define N_SET_FLAGS(exec, flags) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-+
-+/* Code indicating object file or impure executable. */
-+#define OMAGIC 0407
-+/* Code indicating pure executable. */
-+#define NMAGIC 0410
-+/* Code indicating demand-paged executable. */
-+#define ZMAGIC 0413
-+/* This indicates a demand-paged executable with the header in the text.
-+ The first page is unmapped to help trap NULL pointer references. */
-+#define QMAGIC 0314
-+/* Code indicating core file. */
-+#define CMAGIC 0421
-+
-+#define N_TRSIZE(a) ((a).a_trsize)
-+#define N_DRSIZE(a) ((a).a_drsize)
-+#define N_SYMSIZE(a) ((a).a_syms)
-+#define N_BADMAG(x) \
-+ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
-+ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
-+#define _N_HDROFF(x) (1024 - sizeof (struct exec))
-+#define N_TXTOFF(x) \
-+ (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : \
-+ (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
-+#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
-+#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
-+#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
-+#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
-+#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
-+
-+/* Address of text segment in memory after it is loaded. */
-+#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? 4096 : 0)
-+
-+/* Address of data segment in memory after it is loaded. */
-+#define SEGMENT_SIZE 1024
-+
-+#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
-+#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-+
-+#define N_DATADDR(x) \
-+ (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \
-+ : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
-+#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
-+
-+#if !defined (N_NLIST_DECLARED)
-+struct nlist
-+{
-+ union
-+ {
-+ char *n_name;
-+ struct nlist *n_next;
-+ long n_strx;
-+ } n_un;
-+ unsigned char n_type;
-+ char n_other;
-+ short n_desc;
-+ unsigned long n_value;
-+};
-+#endif /* no N_NLIST_DECLARED. */
-+
-+#define N_UNDF 0
-+#define N_ABS 2
-+#define N_TEXT 4
-+#define N_DATA 6
-+#define N_BSS 8
-+#define N_FN 15
-+#define N_EXT 1
-+#define N_TYPE 036
-+#define N_STAB 0340
-+#define N_INDR 0xa
-+#define N_SETA 0x14 /* Absolute set element symbol. */
-+#define N_SETT 0x16 /* Text set element symbol. */
-+#define N_SETD 0x18 /* Data set element symbol. */
-+#define N_SETB 0x1A /* Bss set element symbol. */
-+#define N_SETV 0x1C /* Pointer to set vector in data area. */
-+
-+#if !defined (N_RELOCATION_INFO_DECLARED)
-+/* This structure describes a single relocation to be performed.
-+ The text-relocation section of the file is a vector of these structures,
-+ all of which apply to the text section.
-+ Likewise, the data-relocation section applies to the data section. */
-+
-+struct relocation_info
-+{
-+ int r_address;
-+ unsigned int r_symbolnum:24;
-+ unsigned int r_pcrel:1;
-+ unsigned int r_length:2;
-+ unsigned int r_extern:1;
-+ unsigned int r_pad:4;
-+};
-+#endif /* no N_RELOCATION_INFO_DECLARED. */
-+
-+#endif /* __A_OUT_GNU_H__ */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/aio_sigqueue.c 2002-03-11 03:32:01.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/aio_sigqueue.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -28,8 +28,6 @@
- #include "aio_misc.h"
-
- #ifdef __NR_rt_sigqueueinfo
--extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
--
-
- /* Return any pending signal or wait for one for the given time. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/Makefile 2002-03-28 18:41:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/Makefile 2003-09-19 22:37:09.000000000 -0400
-@@ -6,12 +6,12 @@
- sysdep_headers += alpha/ptrace.h alpha/regdef.h sys/io.h
-
- sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
-- ioperm osf_sigprocmask llseek adjtimex
-+ ioperm llseek
-
- # Support old timeval32 entry points
- sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \
- osf_getitimer osf_setitimer osf_utimes \
-- osf_getrusage osf_wait4 old_adjtimex
-+ osf_getrusage osf_wait4
-
- # Support old ipc control
- sysdep_routines += oldmsgctl oldsemctl oldshmctl
-@@ -20,6 +20,5 @@
- endif
-
- ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
-+sysdep_routines += rt_sigaction
- endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/a.out.h 2003-07-25 05:04:57.000000000 -0400
-@@ -0,0 +1,197 @@
-+#ifndef __A_OUT_GNU_H__
-+#define __A_OUT_GNU_H__
-+
-+#include <bits/a.out.h>
-+
-+#define __GNU_EXEC_MACROS__
-+
-+/*
-+ * OSF/1 ECOFF header structs. ECOFF files consist of:
-+ * - a file header (struct filehdr),
-+ * - an a.out header (struct aouthdr),
-+ * - one or more section headers (struct scnhdr).
-+ * The filhdr's "f_nscns" field contains the
-+ * number of section headers.
-+ */
-+
-+struct filehdr
-+{
-+ /* OSF/1 "file" header */
-+ unsigned short f_magic, f_nscns;
-+ unsigned int f_timdat;
-+ unsigned long f_symptr;
-+ unsigned int f_nsyms;
-+ unsigned short f_opthdr, f_flags;
-+};
-+
-+struct aouthdr
-+{
-+ unsigned long info; /* After that it looks quite normal.. */
-+ unsigned long tsize;
-+ unsigned long dsize;
-+ unsigned long bsize;
-+ unsigned long entry;
-+ unsigned long text_start; /* With a few additions that actually make sense. */
-+ unsigned long data_start;
-+ unsigned long bss_start;
-+ unsigned int gprmask, fprmask; /* Bitmask of general & floating point regs used in binary. */
-+ unsigned long gpvalue;
-+};
-+
-+struct scnhdr
-+{
-+ char s_name[8];
-+ unsigned long s_paddr;
-+ unsigned long s_vaddr;
-+ unsigned long s_size;
-+ unsigned long s_scnptr;
-+ unsigned long s_relptr;
-+ unsigned long s_lnnoptr;
-+ unsigned short s_nreloc;
-+ unsigned short s_nlnno;
-+ unsigned int s_flags;
-+};
-+
-+struct exec
-+{
-+ /* OSF/1 "file" header */
-+ struct filehdr fh;
-+ struct aouthdr ah;
-+};
-+
-+#define a_info ah.info
-+#define a_text ah.tsize
-+#define a_data ah.dsize
-+#define a_bss ah.bsize
-+#define a_entry ah.entry
-+#define a_textstart ah.text_start
-+#define a_datastart ah.data_start
-+#define a_bssstart ah.bss_start
-+#define a_gprmask ah.gprmask
-+#define a_fprmask ah.fprmask
-+#define a_gpvalue ah.gpvalue
-+
-+
-+#define AOUTHSZ sizeof(struct aouthdr)
-+#define SCNHSZ sizeof(struct scnhdr)
-+#define SCNROUND 16
-+
-+enum machine_type
-+{
-+ M_OLDSUN2 = 0,
-+ M_68010 = 1,
-+ M_68020 = 2,
-+ M_SPARC = 3,
-+ M_386 = 100,
-+ M_MIPS1 = 151,
-+ M_MIPS2 = 152
-+};
-+
-+#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-+#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-+#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-+#define N_SET_INFO(exec, magic, type, flags) \
-+ ((exec).a_info = ((magic) & 0xffff) \
-+ | (((int)(type) & 0xff) << 16) \
-+ | (((flags) & 0xff) << 24))
-+#define N_SET_MAGIC(exec, magic) \
-+ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
-+#define N_SET_MACHTYPE(exec, machtype) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-+#define N_SET_FLAGS(exec, flags) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-+
-+/* Code indicating object file or impure executable. */
-+#define OMAGIC 0407
-+/* Code indicating pure executable. */
-+#define NMAGIC 0410
-+/* Code indicating demand-paged executable. */
-+#define ZMAGIC 0413
-+/* This indicates a demand-paged executable with the header in the text.
-+ The first page is unmapped to help trap NULL pointer references. */
-+#define QMAGIC 0314
-+/* Code indicating core file. */
-+#define CMAGIC 0421
-+
-+#define N_TRSIZE(x) 0
-+#define N_DRSIZE(x) 0
-+#define N_SYMSIZE(x) 0
-+#define N_BADMAG(x) \
-+ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
-+ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
-+#define _N_HDROFF(x) (1024 - sizeof (struct exec))
-+#define N_TXTOFF(x) \
-+ ((long) N_MAGIC(x) == ZMAGIC ? 0 : \
-+ (sizeof (struct exec) + (x).fh.f_nscns * SCNHSZ + SCNROUND - 1) \
-+ & ~(SCNROUND - 1))
-+
-+#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
-+#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
-+#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
-+#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
-+#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
-+
-+/* Address of text segment in memory after it is loaded. */
-+#define N_TXTADDR(x) ((x).a_textstart)
-+
-+/* Address of data segment in memory after it is loaded. */
-+#define SEGMENT_SIZE 1024
-+
-+#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
-+#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-+
-+#define N_DATADDR(x) ((x).a_datastart)
-+#define N_BSSADDR(x) ((x).a_bssstart)
-+
-+#if !defined (N_NLIST_DECLARED)
-+struct nlist
-+{
-+ union
-+ {
-+ char *n_name;
-+ struct nlist *n_next;
-+ long n_strx;
-+ } n_un;
-+ unsigned char n_type;
-+ char n_other;
-+ short n_desc;
-+ unsigned long n_value;
-+};
-+#endif /* no N_NLIST_DECLARED. */
-+
-+#define N_UNDF 0
-+#define N_ABS 2
-+#define N_TEXT 4
-+#define N_DATA 6
-+#define N_BSS 8
-+#define N_FN 15
-+#define N_EXT 1
-+#define N_TYPE 036
-+#define N_STAB 0340
-+#define N_INDR 0xa
-+#define N_SETA 0x14 /* Absolute set element symbol. */
-+#define N_SETT 0x16 /* Text set element symbol. */
-+#define N_SETD 0x18 /* Data set element symbol. */
-+#define N_SETB 0x1A /* Bss set element symbol. */
-+#define N_SETV 0x1C /* Pointer to set vector in data area. */
-+
-+#if !defined (N_RELOCATION_INFO_DECLARED)
-+/* This structure describes a single relocation to be performed.
-+ The text-relocation section of the file is a vector of these structures,
-+ all of which apply to the text section.
-+ Likewise, the data-relocation section applies to the data section. */
-+
-+struct relocation_info
-+{
-+ int r_address;
-+ unsigned int r_symbolnum:24;
-+ unsigned int r_pcrel:1;
-+ unsigned int r_length:2;
-+ unsigned int r_extern:1;
-+ unsigned int r_pad:4;
-+};
-+#endif /* no N_RELOCATION_INFO_DECLARED. */
-+
-+#endif /* __A_OUT_GNU_H__ */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/adjtime.c 2003-01-07 18:51:31.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/adjtime.c 2003-08-21 08:37:12.000000000 -0400
-@@ -17,7 +17,11 @@
- 02111-1307 USA. */
-
- #include <shlib-compat.h>
-+#include <sysdep.h>
-+#include <sys/time.h>
-+#include "kernel-features.h"
-
-+#if !defined __ASSUME_TIMEVAL64 || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
- struct timeval32
- {
- int tv_sec, tv_usec;
-@@ -55,7 +59,7 @@
- #define TIMEVAL timeval32
- #define TIMEX timex32
- #define ADJTIME __adjtime_tv32
--#define ADJTIMEX(x) __adjtimex_tv32 (x)
-+#define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x)
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
- #define LINKAGE
- #else
-@@ -63,13 +67,18 @@
- #endif
-
- LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
--extern int ADJTIMEX (struct TIMEX *);
-
- #include <sysdeps/unix/sysv/linux/adjtime.c>
-
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-+int __adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); }
-+strong_alias (__adjtimex_tv32, __adjtimex_tv32_1);
-+strong_alias (__adjtimex_tv32, __adjtimex_tv32_2);
-+compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);
-+compat_symbol (libc, __adjtimex_tv32_2, adjtimex, GLIBC_2_0);
- compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2_0);
- #endif
-+#endif /* !__ASSUME_TIMEVAL64 || SHLIB_COMPAT */
-
- #undef TIMEVAL
- #define TIMEVAL timeval
-@@ -78,34 +87,38 @@
- #undef ADJTIME
- #define ADJTIME __adjtime_tv64
- #undef ADJTIMEX
--#define ADJTIMEX(x) __syscall_adjtimex_tv64 (x)
-+#define ADJTIMEX(x) INLINE_SYSCALL (adjtimex, 1, x)
- #undef LINKAGE
- #define LINKAGE static
-
- LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
--extern int ADJTIMEX (struct TIMEX *);
-
- #include <sysdeps/unix/sysv/linux/adjtime.c>
--static int missing_adjtimex = 0;
-+#include <stdbool.h>
-+
-+#if !defined __ASSUME_TIMEVAL64
-+static bool missing_adjtimex;
-
- int
- __adjtime (itv, otv)
- const struct timeval *itv;
- struct timeval *otv;
- {
-+ struct timeval32 itv32, otv32;
- int ret;
-
-- if (!missing_adjtimex)
-+ switch (missing_adjtimex)
- {
-+ case false:
- ret = __adjtime_tv64 (itv, otv);
- if (ret && errno == ENOSYS)
- missing_adjtimex = 1;
-- }
-+ else
-+ break;
-
-- if (missing_adjtimex)
-- {
-- struct timeval32 itv32, otv32;
-+ /* FALLTHRU */
-
-+ default:
- itv32.tv_sec = itv->tv_sec;
- itv32.tv_usec = itv->tv_usec;
- ret = __adjtime_tv32 (&itv32, &otv32);
-@@ -114,31 +127,38 @@
- otv->tv_sec = otv32.tv_sec;
- otv->tv_usec = otv32.tv_usec;
- }
-+ break;
- }
-
- return ret;
- }
-+#else
-+strong_alias (__adjtime_tv64, __adjtime);
-+#endif
-
- versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
-
--extern int __syscall_adjtimex_tv64 (struct timex *tx);
--
- int
- __adjtimex_tv64 (struct timex *tx)
- {
-+#if defined __ASSUME_TIMEVAL64
-+ return ADJTIMEX (tx);
-+#else
-+ struct timex32 tx32;
- int ret;
-
-- if (!missing_adjtimex)
-- {
-- ret = __syscall_adjtimex_tv64 (tx);
-- if (ret && errno == ENOSYS)
-+ switch (missing_adjtimex)
-+ {
-+ case false:
-+ ret = ADJTIMEX (tx);
-+ if (ret && errno == ENOSYS)
- missing_adjtimex = 1;
-- }
-+ else
-+ break;
-
-- if (missing_adjtimex)
-- {
-- struct timex32 tx32;
-+ /* FALLTHRU */
-
-+ default:
- tx32.modes = tx->modes;
- tx32.offset = tx->offset;
- tx32.freq = tx->freq;
-@@ -184,9 +204,11 @@
- tx->errcnt = tx32.errcnt;
- tx->stbcnt = tx32.stbcnt;
- }
-+ break;
- }
-
- return ret;
-+#endif
- }
-
- strong_alias (__adjtimex_tv64, __adjtimex_internal);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
-@@ -0,0 +1,9 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h 2003-04-24 20:06:01.000000000 -0400
-@@ -168,6 +168,6 @@
- # define POSIX_FADV_RANDOM 1 /* Expect random page references. */
- # define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
- # define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
--# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */
--# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */
-+# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
-+# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h 2003-03-15 15:02:19.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/Alpha version.
-- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -60,11 +60,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x1000 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x2000 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x4000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x8000 /* Lock the mapping. */
-+# define MAP_GROWSDOWN 0x01000 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x02000 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x04000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x08000 /* Lock the mapping. */
- # define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h 2002-12-04 19:21:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/Alpha version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -22,8 +22,6 @@
- # error "Never include this file directly. Use <signal.h> instead"
- #endif
-
--#include <bits/wordsize.h>
--
- #if (!defined __have_sigval_t \
- && (defined _SIGNAL_H || defined __need_siginfo_t \
- || defined __need_sigevent_t))
-@@ -42,11 +40,7 @@
- # define __have_siginfo_t 1
-
- # define __SI_MAX_SIZE 128
--# if __WORDSIZE == 64
--# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
--# else
--# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
--# endif
-+# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
-
- typedef struct siginfo
- {
-@@ -69,8 +63,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -110,8 +105,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -127,8 +122,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-@@ -261,14 +258,7 @@
-
- /* Structure to transport application-defined values with signals. */
- # define __SIGEV_MAX_SIZE 64
--# if __WORDSIZE == 64
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
--# else
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
--# endif
--
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
-+# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-
- typedef struct sigevent
- {
-@@ -280,6 +270,10 @@
- {
- int _pad[__SIGEV_PAD_SIZE];
-
-+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-+ thread to receive the signal. */
-+ __pid_t _tid;
-+
- struct
- {
- void (*_function) (sigval_t); /* Function to start. */
-@@ -299,8 +293,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/Alpha version.
-- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -69,7 +69,7 @@
- #define SIGPWR SIGINFO
- #define SIGIOT SIGABRT
-
--#define _NSIG 64 /* Biggest signal number + 1. */
-+#define _NSIG 65 /* Biggest signal number + 1. */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
- #define SIGRTMAX (__libc_current_sigrtmax ())
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/statfs.h 2002-10-23 19:48:55.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/statfs.h 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -41,7 +41,8 @@
- #endif
- __fsid_t f_fsid;
- int f_namelen;
-- int f_spare[6];
-+ int f_frsize;
-+ int f_spare[5];
- };
-
- #ifdef __USE_LARGEFILE64
-@@ -56,9 +57,11 @@
- __fsfilcnt64_t f_ffree;
- __fsid_t f_fsid;
- int f_namelen;
-- int f_spare[6];
-+ int f_frsize;
-+ int f_spare[5];
- };
- #endif
-
- /* Tell code we have this member. */
- #define _STATFS_F_NAMELEN
-+#define _STATFS_F_FRSIZE
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/termios.h 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/termios.h 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,6 @@
- /* termios type and macro definitions. Linux version.
-- Copyright (C) 1993, 94, 95, 96, 97, 99 Free Software Foundation, Inc.
-+ Copyright (C) 1993,1994,1995,1996,1997,1999,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
-@@ -36,6 +37,8 @@
- cc_t c_line; /* line discipline (== c_cc[33]) */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* output speed */
-+#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
-+#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
- };
-
- /* c_cc characters */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2002-10-23 19:48:49.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,9 +54,10 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __U32_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-
- /* Number of descriptors that can fit in an `fd_set'. */
- #define __FD_SETSIZE 1024
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/clone.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/clone.S 2003-08-21 08:37:12.000000000 -0400
-@@ -24,9 +24,13 @@
- #define _ERRNO_H 1
- #include <bits/errno.h>
-
--/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
-- pid_t *tid, void *tls);
-- */
-+/* int clone(int (*fn)(void *arg), void *child_stack, int flags,
-+ void *arg, pid_t *ptid, void *tls, pid_t *ctid);
-+
-+ Note that everything past ARG is technically optional, based
-+ on FLAGS, and that CTID is arg 7, and thus is on the stack.
-+ However, since a load from top-of-stack better be legal always,
-+ we don't bother checking FLAGS. */
-
- .text
- ENTRY(__clone)
-@@ -51,11 +55,13 @@
- stq a0,0(a1)
- stq a3,8(a1)
-
-- /* Shift the flags, tid and tls arguments into place; the
-+ /* The syscall is of the form clone(flags, usp, ptid, ctid, tls).
-+ Shift the flags, ptid, ctid, tls arguments into place; the
- child_stack argument is already correct. */
- mov a2,a0
- mov a4,a2
-- mov a5,a3
-+ ldq a3,0(sp)
-+ mov a5,a4
-
- /* Do the system call. */
- ldiq v0,__NR_clone
-@@ -83,8 +89,7 @@
-
- .ent thread_start
- thread_start:
-- .frame fp,0,zero,0
-- mov zero,fp
-+ .frame zero,0,zero,0
- .prologue 0
-
- /* Load up the arguments. */
-@@ -98,7 +103,11 @@
-
- /* Call _exit rather than doing it inline for breakpoint purposes. */
- mov v0,a0
-- jsr ra,_exit
-+#ifdef PIC
-+ bsr ra, HIDDEN_JUMPTARGET(_exit) !samegp
-+#else
-+ jsr ra, HIDDEN_JUMPTARGET(_exit)
-+#endif
-
- /* Die horribly. */
- halt
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gethostname.c 2001-09-04 20:07:17.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gethostname.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2001
-
-@@ -25,9 +25,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_gethostname (char *name, size_t len);
--
--
- int
- __gethostname (char *name, size_t len)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getitimer.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getitimer.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define GETITIMER __getitimer_tv64
-+#else
-+#define GETITIMER getitimer
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(GETITIMER, getitimer, 2)
-+ ret
-+PSEUDO_END(GETITIMER)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define GETITIMER __getitimer_tv64
--#else
--#define GETITIMER getitimer
--#endif
--
- LEAF(GETITIMER, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-@@ -100,6 +106,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(GETITIMER)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getrusage.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getrusage.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define GETRUSAGE __getrusage_tv64
-+#else
-+#define GETRUSAGE __getrusage
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(GETRUSAGE, getrusage, 2)
-+ ret
-+PSEUDO_END(GETRUSAGE)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define GETRUSAGE __getrusage_tv64
--#else
--#define GETRUSAGE __getrusage
--#endif
--
- LEAF(GETRUSAGE, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-@@ -132,6 +138,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(GETRUSAGE)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- strong_alias(__getrusage_tv64, ____getrusage_tv64)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gettimeofday.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gettimeofday.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,6 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-+
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define GETTIMEOFDAY __gettimeofday_tv64
-+#else
-+#define GETTIMEOFDAY __gettimeofday
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(GETTIMEOFDAY, gettimeofday, 2)
-+ ret
-+PSEUDO_END(GETTIMEOFDAY)
-+#else
-
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
-@@ -30,14 +45,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define GETTIMEOFDAY __gettimeofday_tv64
--#else
--#define GETTIMEOFDAY __gettimeofday
--#endif
--
- LEAF(GETTIMEOFDAY, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-@@ -86,7 +93,7 @@
- ldl t0, 0(a0)
- ldl t1, 4(a0)
- stq t0, 0(a0)
-- stq t1, 0(a0)
-+ stq t1, 8(a0)
-
- 2: addq sp, 16, sp
- ret
-@@ -97,6 +104,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(GETTIMEOFDAY)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
-
-@@ -32,9 +32,13 @@
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
--#else
-+#elif defined PIC
- lda sp, -16(sp)
- .prologue 0
-+#else
-+ ldgp gp, 0(pv)
-+ lda sp, -16(sp)
-+ .prologue 1
- #endif
-
- mov sp, a1
-@@ -48,13 +52,10 @@
- ret
-
- $error:
--#ifndef PROF
-- br gp, 1f
--1: ldgp gp, 0(gp)
--#endif
- lda sp, 16(sp)
- SYSCALL_ERROR_HANDLER
-
- END(__ieee_get_fp_control)
-
-+libc_hidden_def(__ieee_get_fp_control)
- weak_alias (__ieee_get_fp_control, ieee_get_fp_control)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
-
-@@ -30,9 +30,13 @@
- jsr AT, (AT), _mcount
- .set at
- .prologue 1
--#else
-+#elif defined PIC
- lda sp, -16(sp)
- .prologue 0
-+#else
-+ ldgp gp, 0(pv)
-+ lda sp, -16(sp)
-+ .prologue 1
- #endif
-
- stq a0, 0(sp)
-@@ -47,13 +51,10 @@
- ret
-
- $error:
--#ifndef PROF
-- br gp, 1f
--1: ldgp gp, 0(gp)
--#endif
- lda sp, 16(sp)
- SYSCALL_ERROR_HANDLER
-
- END(__ieee_set_fp_control)
-
-+libc_hidden_def(__ieee_set_fp_control)
- weak_alias (__ieee_set_fp_control, ieee_set_fp_control)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ipc_priv.h 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ipc_priv.h 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1999, 2000, 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
-@@ -32,18 +32,11 @@
- };
-
-
--__BEGIN_DECLS
--
--/* The actual system call: all functions are multiplexed by this. */
--extern int __syscall_ipc (int __call, int __first, int __second,
-- int __third, void *__ptr);
--
--__END_DECLS
--
--/* The codes for the functions to use the multiplexer `__syscall_ipc'. */
-+/* The codes for the functions to use the ipc syscall multiplexer. */
- #define IPCOP_semop 1
- #define IPCOP_semget 2
- #define IPCOP_semctl 3
-+#define IPCOP_semtimedop 4
- #define IPCOP_msgsnd 11
- #define IPCOP_msgrcv 12
- #define IPCOP_msgget 13
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/msgctl.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/msgctl.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -45,8 +45,6 @@
- __ipc_pid_t msg_lrpid; /* pid of last msgrcv() */
- };
-
--extern int __syscall_msgctl (int, int, void *);
--
- /* Allows to control internal state and destruction of message queue
- objects. */
- int __new_msgctl (int, int, struct msqid_ds *);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson <rth@cygnus.com>, 1998
-
-@@ -28,55 +28,92 @@
-
- #ifdef __NR_rt_sigaction
- .text
-+
- ENTRY(__syscall_rt_sigaction)
- .frame sp,0,ra,0
--#ifdef PROF
- ldgp gp,0(pv)
-+#ifdef PROF
- .set noat
- lda AT, _mcount
- jsr AT, (AT), _mcount
- .set at
- #endif
-- /* Indicate non-standard use of our PV. */
-- .prologue 2
-+ .prologue 1
-
- beq a1, 0f
-- ldl t0, 8(a1) # sa_flags
-- lda a4, sigreturn-__syscall_rt_sigaction(pv)
-- lda t1, rt_sigreturn-__syscall_rt_sigaction(pv)
-- and t0, 0x00000040, t0 # SA_SIGINFO
-+ ldl t0, 8(a1) # sa_flags
-+ ldah a4, sigreturn(gp) !gprelhigh
-+ ldah t1, rt_sigreturn(gp) !gprelhigh
-+ lda a4, sigreturn(a4) !gprellow
-+ lda t1, rt_sigreturn(a4) !gprellow
-+ and t0, 0x00000040, t0 # SA_SIGINFO
- cmovne t0, t1, a4
--0: ldi v0,__NR_rt_sigaction
-+0: ldi v0, __NR_rt_sigaction
- callsys
-- bne a3,1f
-+ bne a3, SYSCALL_ERROR_LABEL
- ret
-
--1:
--#ifndef PROF
-- br gp,2f
--2: ldgp gp,0(gp)
--#endif
-- SYSCALL_ERROR_HANDLER
-+PSEUDO_END(__syscall_rt_sigaction)
-
--END(__syscall_rt_sigaction)
-+/* To enable unwinding through the signal frame without special hackery
-+ elsewhere, describe the entire struct sigcontext with unwind info.
-+ Note that we begin the unwind info one instruction before the start
-+ of the function; the unwinder will subtract one from the return address
-+ attempting to find the call instruction that led us here, since we
-+ didn't get here via a normal call. */
-+
-+ .macro SIGCONTEXT_REGS_I base, from=0
-+ cfi_offset (\from, \base + (4 + \from) * 8)
-+ .if 30-\from
-+ SIGCONTEXT_REGS_I \base, "(\from+1)"
-+ .endif
-+ .endm
-+
-+ .macro SIGCONTEXT_REGS_F base, from=32
-+ cfi_offset (\from, \base + (4 + 1 + \from) * 8)
-+ .if 62-\from
-+ SIGCONTEXT_REGS_F \base, "(\from+1)"
-+ .endif
-+ .endm
-+
-+ .macro SIGCONTEXT_REGS base
-+ SIGCONTEXT_REGS_I \base
-+ SIGCONTEXT_REGS_F \base
-+ cfi_offset (63, \base + (4 + 32 + 1 + 32) * 8)
-+ cfi_offset (64, \base + 2 * 8)
-+ .endm
-
-- .align 5
-- .ent sigreturn
-+ .align 4
-+ nop
-+ nop
-+ nop
-+
-+ cfi_startproc
-+ cfi_return_column (64)
-+ SIGCONTEXT_REGS -648
-+ cfi_def_cfa_offset (648)
-+ nop
- sigreturn:
-- .prologue 0
-- mov sp,a0
-- ldi v0,__NR_sigreturn
-+ mov sp, a0
-+ ldi v0, __NR_sigreturn
- callsys
-- .end sigreturn
--
-- .align 4
-- .ent rt_sigreturn
-+ cfi_endproc
-+ .size sigreturn, .-sigreturn
-+ .type sigreturn, @function
-+
-+ cfi_startproc
-+ cfi_return_column (64)
-+ SIGCONTEXT_REGS -648
-+ cfi_def_cfa_offset (176 + 648)
-+ nop
- rt_sigreturn:
-- .prologue 0
- mov sp,a0
- ldi v0,__NR_rt_sigreturn
- callsys
-- .end rt_sigreturn
-+ cfi_endproc
-+ .size rt_sigreturn, .-rt_sigreturn
-+ .type rt_sigreturn, @function
-+
- #else
- ENTRY(__syscall_rt_sigaction)
- ldgp $29,0($27)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/select.S 2003-01-06 19:45:23.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/select.S 2003-08-21 08:37:12.000000000 -0400
-@@ -19,7 +19,21 @@
- #include <sysdep-cancel.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define SELECT __select_tv64
-+#else
-+#define SELECT __select
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(SELECT, select, 5)
-+ ret
-+PSEUDO_END(SELECT)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define SELECT __select_tv64
--#else
--#define SELECT __select
--#endif
--
- LEAF(SELECT, 64)
- ldgp gp, 0(pv)
- subq sp, 64, sp
-@@ -210,6 +216,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(SELECT)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__select_tv64, __select, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/semctl.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/semctl.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -52,8 +52,6 @@
- #include <bp-checks.h>
- #include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */
-
--extern int __syscall_semctl (int, int, int, void *);
--
- /* Return identifier for array of NSEMS semaphores associated with
- KEY. */
- int __new_semctl (int semid, int semnum, int cmd, ...);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setfpucw.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setfpucw.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Set FP exception mask and rounding mode.
-- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 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
-@@ -20,9 +20,11 @@
- #include <fpu_control.h>
- #include <asm/fpu.h>
-
--
- extern void __ieee_set_fp_control (unsigned long);
-+libc_hidden_proto(__ieee_set_fp_control)
-+
- extern unsigned long __ieee_get_fp_control (void);
-+libc_hidden_proto(__ieee_get_fp_control)
-
- static inline unsigned long
- rdfpcr (void)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setitimer.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setitimer.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define SETITIMER __setitimer_tv64
-+#else
-+#define SETITIMER __setitimer
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(SETITIMER, setitimer, 3)
-+ ret
-+PSEUDO_END(SETITIMER)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define SETITIMER __setitimer_tv64
--#else
--#define SETITIMER __setitimer
--#endif
--
- LEAF(SETITIMER, 48)
- ldgp gp, 0(pv)
- subq sp, 48, sp
-@@ -116,6 +122,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(SETITIMER)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/settimeofday.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/settimeofday.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define SETTIMEOFDAY __settimeofday_tv64
-+#else
-+#define SETTIMEOFDAY __settimeofday
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(SETTIMEOFDAY, settimeofday, 2)
-+ ret
-+PSEUDO_END(SETTIMEOFDAY)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define SETTIMEOFDAY __settimeofday_tv64
--#else
--#define SETTIMEOFDAY __settimeofday
--#endif
--
- LEAF(SETTIMEOFDAY, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-@@ -97,6 +103,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(SETTIMEOFDAY)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/shmctl.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/shmctl.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -53,8 +53,6 @@
- int shmall;
- };
-
--extern int __syscall_shmctl (int, int, void *);
--
- /* Provide operations to control over shared memory segments. */
- int __new_shmctl (int, int, struct shmid_ds *);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigaction.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigaction.c 2003-09-19 22:37:09.000000000 -0400
-@@ -0,0 +1,36 @@
-+/* Copyright (C) 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>
-+
-+/*
-+ * In order to get the hidden arguments for rt_sigaction set up
-+ * properly, we need to call the assembly version. Detect this in the
-+ * INLINE_SYSCALL macro, and fail to expand inline in that case.
-+ */
-+
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ (__NR_##name == __NR_rt_sigaction \
-+ ? __syscall_rt_sigaction(args) \
-+ : INLINE_SYSCALL1(name, nr, args))
-+
-+extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-+ struct kernel_sigaction *__unbounded, size_t);
-+
-+#include <sysdeps/unix/sysv/linux/sigaction.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigprocmask.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigprocmask.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger (davidm@azstarnet.com).
-
-@@ -17,14 +17,13 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
- #include <sysdep.h>
- #include <signal.h>
-
- /* When there is kernel support for more than 64 signals, we'll have to
- switch to a new system call convention here. */
-
--extern unsigned long __osf_sigprocmask (int how, unsigned long newmask);
--
- int
- __sigprocmask (int how, const sigset_t *set, sigset_t *oset)
- {
-@@ -32,15 +31,14 @@
- long result;
-
- if (set)
-- {
-- setval = set->__val[0];
-- }
-+ setval = set->__val[0];
- else
- {
- setval = 0;
- how = SIG_BLOCK; /* ensure blocked mask doesn't get changed */
- }
-- result = __osf_sigprocmask (how, setval);
-+
-+ result = INLINE_SYSCALL (osf_sigprocmask, 2, how, setval);
- if (result == -1)
- /* If there are ever more than 63 signals, we need to recode this
- in assembler since we wouldn't be able to distinguish a mask of
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/syscalls.list 2003-02-05 16:41:03.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/syscalls.list 2003-08-21 08:37:12.000000000 -0400
-@@ -1,69 +1,66 @@
- # File name Caller Syscall name # args Strong name Weak names
-
--oldmsgctl EXTRA msgctl 3 __old_msgctl msgctl@GLIBC_2.0
--msgget - msgget 2 __msgget msgget
--msgrcv - msgrcv C:5 __msgrcv msgrcv
--msgsnd - msgsnd C:4 __msgsnd msgsnd
--shmat - osf_shmat 3 __shmat shmat
--oldshmctl EXTRA shmctl 3 __old_shmctl shmctl@GLIBC_2.0
--shmdt - shmdt 1 __shmdt shmdt
--shmget - shmget 3 __shmget shmget
--semop - semop 3 __semop semop
--semget - semget 3 __semget semget
--oldsemctl EXTRA semctl 4 __old_semctl semctl@GLIBC_2.0
-+oldmsgctl EXTRA msgctl i:iip __old_msgctl msgctl@GLIBC_2.0
-+msgget - msgget i:ii __msgget msgget
-+msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
-+msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
-+shmat - osf_shmat i:ipi __shmat shmat
-+oldshmctl EXTRA shmctl i:iip __old_shmctl shmctl@GLIBC_2.0
-+shmdt - shmdt i:s __shmdt shmdt
-+shmget - shmget i:iii __shmget shmget
-+semop - semop i:ipi __semop semop
-+semtimedop - semtimedop i:ipip semtimedop
-+semget - semget i:iii __semget semget
-+oldsemctl EXTRA semctl i:iiii __old_semctl semctl@GLIBC_2.0
-
--osf_sigprocmask - osf_sigprocmask 2 __osf_sigprocmask
- sigstack - sigstack 2 sigstack
- vfork - vfork 0 __vfork vfork
-
--getpeername - getpeername 3 __getpeername getpeername
--getpriority - getpriority 2 __getpriority getpriority
--mmap - mmap 6 __mmap mmap __mmap64 mmap64
--llseek EXTRA lseek C:3 __libc_lseek64 __llseek llseek __lseek64 lseek64
--posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
--pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
--pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
--fstatfs - fstatfs 2 __fstatfs fstatfs __fstatfs64 fstatfs64
--statfs - statfs 2 __statfs statfs statfs64
-+getpeername - getpeername i:ipp __getpeername getpeername
-+getpriority - getpriority i:ii __getpriority getpriority
-+mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64
-+llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
-+lseek llseek -
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
-+pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
-+pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
-+fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64
-+statfs - statfs i:sp __statfs statfs statfs64
- getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
- setrlimit - setrlimit 2 __setrlimit setrlimit64 setrlimit
- ftruncate - ftruncate 2 __ftruncate ftruncate __ftruncate64 ftruncate64
- truncate - truncate 2 truncate truncate64
- readahead - readahead 3 __readahead readahead
- sendfile - sendfile i:iipi sendfile sendfile64
--
--# these are actually common with the x86:
--sys_ustat ustat ustat 2 __syscall_ustat
--sys_mknod xmknod mknod 3 __syscall_mknod
-+open - open Ci:siv __libc_open __open open !__libc_open64 __open64 open64
-+open64 open -
-
- # proper socket implementations:
--accept - accept C:3 __libc_accept __accept accept
--bind - bind 3 __bind bind
--connect - connect C:3 __libc_connect __connect_internal __connect connect
--getpeername - getpeername 3 __getpeername getpeername
--getsockname - getsockname 3 __getsockname getsockname
--getsockopt - getsockopt 5 __getsockopt getsockopt
--listen - listen 2 __listen listen
--recv - recv C:4 __libc_recv __recv recv
--recvfrom - recvfrom C:6 __libc_recvfrom __recvfrom recvfrom
--recvmsg - recvmsg C:3 __libc_recvmsg __recvmsg recvmsg
-+accept - accept Ci:iBN __libc_accept __accept accept
-+bind - bind i:ipi __bind bind
-+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
-+getpeername - getpeername i:ipp __getpeername getpeername
-+getsockname - getsockname i:ipp __getsockname getsockname
-+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
-+listen - listen i:ii __listen listen
-+recv - recv Ci:ibni __libc_recv __recv recv
-+recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
-+recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
-+send - send Ci:ibni __libc_send __send send
-+sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
-+sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
-+setsockopt - setsockopt i:iiibn __setsockopt setsockopt
-+shutdown - shutdown i:ii __shutdown shutdown
-+socket - socket i:iii __socket socket
-+socketpair - socketpair i:iiif __socketpair socketpair
-+
- ptrace - ptrace 4 __ptrace ptrace
--send - send C:4 __libc_send __send send
--sendmsg - sendmsg C:3 __libc_sendmsg __sendmsg sendmsg
--sendto - sendto C:6 __libc_sendto __sendto sendto
--setsockopt - setsockopt 5 __setsockopt setsockopt
--shutdown - shutdown 2 __shutdown shutdown
--socket - socket 3 __socket socket
--socketpair - socketpair 4 __socketpair socketpair
-
- # access pci space protected from machine checks:
- pciconfig_read EXTRA pciconfig_read 5 pciconfig_read
- pciconfig_write EXTRA pciconfig_write 5 pciconfig_write
- pciconfig_iobase EXTRA pciconfig_iobase 3 __pciconfig_iobase pciconfig_iobase
-
--# Wrapper for adjtimex.
--adjtimex - syscall_adjtimex 1 __syscall_adjtimex syscall_adjtimex
--
- # support old timeval32 entry points
- osf_select - osf_select C:5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0
- osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0
-@@ -73,7 +70,3 @@
- osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0
- osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0
- osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0
--old_adjtimex - old_adjtimex 1 __adjtimex_tv32 __adjtimex@GLIBC_2.0 adjtimex@GLIBC_2.0
--
--# and one for timeval64 entry points
--adjtimex adjtime adjtimex 1 __syscall_adjtimex_tv64
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2003-01-26 16:07:33.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2003-08-21 08:37:12.000000000 -0400
-@@ -60,17 +60,25 @@
- #define __NR_osf_getsysinfo 256
- #define __NR_osf_setsysinfo 257
-
-+/* Help old kernel headers where particular syscalls are not available. */
-+#ifndef __NR_semtimedop
-+# define __NR_semtimedop 423
-+#endif
-+
- /*
- * In order to get the hidden arguments for rt_sigaction set up
-- * properly, we need to call the assembly version. Detect this in the
-- * INLINE_SYSCALL macro, and fail to expand inline in that case.
-+ * properly, we need to call the assembly version. This shouldn't
-+ * happen except for inside sigaction.c, where we handle this
-+ * specially. Catch other uses and error.
- */
-
- #undef INLINE_SYSCALL
--#define INLINE_SYSCALL(name, nr, args...) \
-- (__NR_##name == __NR_rt_sigaction \
-- ? __syscall_##name(args) \
-- : INLINE_SYSCALL1(name, nr, args))
-+#define INLINE_SYSCALL(name, nr, args...) \
-+({ \
-+ extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \
-+ __attribute__((unused)); \
-+ INLINE_SYSCALL1(name, nr, args); \
-+})
-
- #undef INTERNAL_SYSCALL
- #define INTERNAL_SYSCALL(name, err_out, nr, args...) \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ustat.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ustat.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -17,11 +17,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
- #include <sys/ustat.h>
- #include <sys/sysmacros.h>
--
--
--extern int __syscall_ustat (unsigned int dev, struct ustat *ubuf);
-+#include <sysdep.h>
-
- int
- ustat (dev_t dev, struct ustat *ubuf)
-@@ -31,5 +30,5 @@
- /* We must convert the value to dev_t type used by the kernel. */
- k_dev = ((major (dev) & 0xff) << 8) | (minor (dev) & 0xff);
-
-- return __syscall_ustat (k_dev, ubuf);
-+ return INLINE_SYSCALL (ustat, 2, k_dev, ubuf);
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/utimes.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/utimes.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define UTIMES __utimes_tv64
-+#else
-+#define UTIMES __utimes
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(UTIMES, utimes, 2)
-+ ret
-+PSEUDO_END(UTIMES)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define UTIMES __utimes_tv64
--#else
--#define UTIMES __utimes
--#endif
--
- LEAF(UTIMES, 16)
- ldgp gp, 0(pv)
- subq sp, 16, sp
-@@ -102,6 +108,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(UTIMES)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/wait4.S 2002-11-08 14:35:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/wait4.S 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -19,7 +19,21 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include "kernel-features.h"
-
-+.text
-+
-+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-+#define WAIT4 __wait4_tv64
-+#else
-+#define WAIT4 __wait4
-+#endif
-+
-+#if defined __ASSUME_TIMEVAL64
-+PSEUDO(WAIT4, wait4, 4)
-+ ret
-+PSEUDO_END(WAIT4)
-+#else
- /* The problem here is that initially we made struct timeval compatible with
- OSF/1, using int32. But we defined time_t with uint64, and later found
- that POSIX requires tv_sec to be time_t.
-@@ -30,14 +44,6 @@
- functions which have RT equivalents. */
- .comm __libc_missing_axp_tv64, 4
-
--.text
--
--#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
--#define WAIT4 __wait4_tv64
--#else
--#define WAIT4 __wait4
--#endif
--
- LEAF(WAIT4, 32)
- ldgp gp, 0(pv)
- subq sp, 32, sp
-@@ -135,6 +141,7 @@
- SYSCALL_ERROR_HANDLER
-
- END(WAIT4)
-+#endif /* __ASSUME_TIMEVAL64 */
-
- #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
- default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xmknod.c 2002-08-04 04:23:07.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xmknod.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,6 @@
- /* xmknod call using old-style Unix mknod system call.
-- Copyright (C) 1991,1993,1995,1996,1997,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1993,1995,1996,1997,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
-@@ -21,8 +22,7 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/sysmacros.h>
--
--extern int __syscall_mknod (const char *, unsigned int, unsigned int);
-+#include <sysdep.h>
-
- /* Create a device file named PATH, with permission and special bits MODE
- and device number DEV (which can be constructed from major and minor
-@@ -41,7 +41,7 @@
- /* We must convert the value to dev_t type used by the kernel. */
- k_dev = ((major (*dev) & 0xff) << 8) | (minor (*dev) & 0xff);
-
-- return __syscall_mknod (path, mode, k_dev);
-+ return INLINE_SYSCALL (mknod, 3, path, mode, k_dev);
- }
-
- weak_alias (__xmknod, _xmknod)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xstatconv.c 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xstatconv.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Convert between the kernel's `struct stat' format, and libc's.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 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
-@@ -17,11 +17,15 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
- #include <string.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+#include <xstatconv.h>
-
-
--static inline int
--xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+int
-+__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
- {
- switch (vers)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Makefile 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Makefile 2003-09-19 22:37:09.000000000 -0400
-@@ -4,9 +4,7 @@
- endif
-
- ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending \
-- sigrestorer
-+sysdep_routines += sigrestorer
- endif
-
- ifeq ($(subdir),resource)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Versions 2002-08-23 15:46:56.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Versions 2003-09-19 22:37:09.000000000 -0400
-@@ -31,4 +31,7 @@
- # v*
- versionsort64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/ARM version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2002-04-03 01:53:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Data for Linux/ARM version of processor capability information.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>, 2001.
-
-@@ -40,13 +40,14 @@
- needed.
- */
-
--#ifdef PROCINFO_DECL
--EXTERN
-+#ifndef PROCINFO_CLASS
-+#define PROCINFO_CLASS
- #endif
-+
- #if !defined PROCINFO_DECL && defined SHARED
- ._dl_arm_cap_flags
- #else
--const char _dl_arm_cap_flags[8][10]
-+PROCINFO_CLASS const char _dl_arm_cap_flags[8][10]
- #endif
- #ifndef PROCINFO_DECL
- = {
-@@ -60,3 +61,4 @@
- #endif
-
- #undef PROCINFO_DECL
-+#undef PROCINFO_CLASS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap.S 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap.S 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -17,11 +17,47 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <kernel-features.h>
-+
-+#define EINVAL 22
-
- .text
-
- ENTRY (__mmap)
-+# ifdef __ASSUME_MMAP2_SYSCALL
-+ /* This code is actually a couple of cycles slower than the
-+ sys_mmap version below, so it might seem like a loss. But the
-+ code path inside the kernel is sufficiently much shorter to
-+ make it a net gain to use mmap2 when it's known to be
-+ available. */
-+
-+ /* shuffle args */
-+ str r5, [sp, #-4]!
-+ ldr r5, [sp, #8]
-+ str r4, [sp, #-4]!
-+ ldr r4, [sp, #8]
-+
-+ /* convert offset to pages */
-+ movs ip, r5, lsl #20
-+ bne .Linval
-+ mov r5, r5, lsr #12
-+
-+ /* do the syscall */
-+ swi SYS_ify (mmap2)
-+
-+ /* restore registers */
-+2:
-+ ldr r4, [sp], #4
-+ ldr r5, [sp], #4
-+
-+ cmn r0, $4096
-+ RETINSTR(movcc, pc, lr)
-+ b PLTJMP(syscall_error)
-
-+.Linval:
-+ mov r0, #-EINVAL
-+ b 2b
-+# else
- /* Because we can only get five args through the syscall interface, and
- mmap() takes six, we need to build a parameter block and pass its
- address instead. The 386 port does a similar trick. */
-@@ -49,6 +85,7 @@
- cmn r0, $4096
- RETINSTR(movcc, pc, lr)
- b PLTJMP(syscall_error);
-+#endif
-
- PSEUDO_END (__mmap)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S 2001-07-07 15:21:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -21,37 +21,50 @@
- #define EINVAL 22
- #define ENOSYS 38
-
-+#include "kernel-features.h"
-+
- /* The mmap2 system call takes six arguments, all in registers. */
- .text
- ENTRY (__mmap64)
- #ifdef __NR_mmap2
-- stmfd sp!, {r4, r5, lr}
-- ldr r5, [sp, $16]
-- ldr r4, [sp, $12]
-- movs ip, r5, lsl $20 @ check that offset is page-aligned
-+ ldr ip, [sp, $4] @ offset low part
-+ str r5, [sp, #-4]!
-+ ldr r5, [sp, $12] @ offset high part
-+ str r4, [sp, #-4]!
-+ movs r4, ip, lsl $20 @ check that offset is page-aligned
-+ mov ip, ip, lsr $12
-+ moveqs r4, r5, lsr $12 @ check for overflow
- bne .Linval
-- ldr ip, [sp, $20]
-- mov r5, r5, lsr $12
-- orr r5, r5, ip, lsl $20 @ compose page offset
-- movs ip, ip, lsr $12
-- bne .Linval @ check for overflow
-+ ldr r4, [sp, $8] @ load fd
-+ orr r5, ip, r5, lsl $20 @ compose page offset
- mov ip, r0
- swi SYS_ify (mmap2)
- cmn r0, $4096
-- LOADREGS(ccfd, sp!, {r4, r5, pc})
-+# ifdef __ASSUME_MMAP2_SYSCALL
-+ ldr r4, [sp], #4
-+ ldr r5, [sp], #4
-+ RETINSTR(movcc, pc, lr)
-+ b PLTJMP(syscall_error)
-+# else
-+ ldrcc r4, [sp], #4
-+ ldrcc r5, [sp], #4
-+ RETINSTR(movcc, pc, lr)
- cmn r0, $ENOSYS
-- ldmnefd sp!, {r4, r5, lr}
-- bne PLTJMP(syscall_error)
-+ bne .Lerror
- /* The current kernel does not support mmap2. Fall back to plain
- mmap if the offset is small enough. */
-- ldr r5, [sp, $20]
-+ ldr r5, [sp, $16]
- mov r0, ip @ first arg was clobbered
- teq r5, $0
-- ldmeqfd sp!, {r4, r5, lr}
-+ ldreq r4, [sp], #4
-+ ldreq r5, [sp], #4
- beq PLTJMP(__mmap)
-+# endif
- .Linval:
- mov r0, $-EINVAL
-- ldmfd sp!, {r4, r5, lr}
-+.Lerror:
-+ ldr r4, [sp], #4
-+ ldr r5, [sp], #4
- b PLTJMP(syscall_error)
- #else
- /* The kernel headers do not support mmap2. Fall back to plain
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c 2003-01-02 18:26:04.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c 2003-09-19 22:37:09.000000000 -0400
-@@ -22,17 +22,13 @@
-
- #include <sysdep.h>
- #include <sys/syscall.h>
-+#include <kernel-features.h>
-
- /* The difference here is that the sigaction structure used in the
- kernel is not the same as we use in the libc. Therefore we must
- translate it here. */
- #include <kernel_sigaction.h>
-
--extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
-- struct old_kernel_sigaction *__unbounded);
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-- struct kernel_sigaction *__unbounded, size_t);
--
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
- int __libc_missing_rt_sigs;
-@@ -60,15 +56,21 @@
- const struct sigaction *act;
- struct sigaction *oact;
- {
-+#ifndef __ASSUME_REALTIME_SIGNALS
- struct old_kernel_sigaction k_sigact, k_osigact;
-+#endif
- int result;
-
- #ifdef __NR_rt_sigaction
- /* First try the RT signals. */
-+# ifndef __ASSUME_REALTIME_SIGNALS
- if (!__libc_missing_rt_sigs)
-+# endif
- {
- struct kernel_sigaction kact, koact;
-+# ifndef __ASSUME_REALTIME_SIGNALS
- int saved_errno = errno;
-+# endif
-
- if (act)
- {
-@@ -99,7 +101,9 @@
- act ? __ptrvalue (&kact) : NULL,
- oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
-
-+# ifndef __ASSUME_REALTIME_SIGNALS
- if (result >= 0 || errno != ENOSYS)
-+# endif
- {
- if (oact && result >= 0)
- {
-@@ -113,17 +117,20 @@
- return result;
- }
-
-+# ifndef __ASSUME_REALTIME_SIGNALS
- __set_errno (saved_errno);
- __libc_missing_rt_sigs = 1;
-+# endif
- }
- #endif
-
-+#ifndef __ASSUME_REALTIME_SIGNALS
- if (act)
- {
- k_sigact.k_sa_handler = act->sa_handler;
- k_sigact.sa_mask = act->sa_mask.__val[0];
- k_sigact.sa_flags = act->sa_flags;
--#ifdef HAVE_SA_RESTORER
-+# ifdef HAVE_SA_RESTORER
- /* See the comments above for why we test SA_ONSTACK. */
- if (k_sigact.sa_flags & (SA_RESTORER | SA_ONSTACK))
- k_sigact.sa_restorer = act->sa_restorer;
-@@ -132,7 +139,7 @@
- k_sigact.sa_restorer = choose_restorer (k_sigact.sa_flags);
- k_sigact.sa_flags |= SA_RESTORER;
- }
--#endif
-+# endif
- }
- result = INLINE_SYSCALL (sigaction, 3, sig,
- act ? __ptrvalue (&k_sigact) : NULL,
-@@ -142,11 +149,12 @@
- oact->sa_handler = k_osigact.k_sa_handler;
- oact->sa_mask.__val[0] = k_osigact.sa_mask;
- oact->sa_flags = k_osigact.sa_flags;
--#ifdef HAVE_SA_RESTORER
-+# ifdef HAVE_SA_RESTORER
- oact->sa_restorer = k_osigact.sa_restorer;
--#endif
-+# endif
- }
- return result;
-+#endif
- }
- libc_hidden_def (__libc_sigaction)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/syscalls.list 2000-08-01 15:10:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/syscalls.list 2003-09-19 22:37:09.000000000 -0400
-@@ -1,16 +1,5 @@
- # File name Caller Syscall name # args Strong name Weak names
-
--s_getgroups getgroups getgroups 2 __syscall_getgroups
--s_llseek llseek _llseek 5 __syscall__llseek
--s_setfsgid setfsgid setfsgid 1 __syscall_setfsgid
--s_setfsuid setfsuid setfsuid 1 __syscall_setfsuid
--s_setgid setgid setgid 1 __syscall_setgid
--s_setgroups setgroups setgroups 2 __syscall_setgroups
--s_setregid setregid setregid 2 __syscall_setregid
--s_setresgid setresgid setresgid 3 __syscall_setresgid
--s_setresuid setresuid setresuid 3 __syscall_setresuid
--s_setreuid setreuid setreuid 2 __syscall_setreuid
--s_setuid setuid setuid 1 __syscall_setuid
- syscall - syscall 7 syscall
- oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
- oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h 2003-02-20 15:22:10.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h 2003-09-19 22:37:09.000000000 -0400
-@@ -64,6 +64,36 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name); \
-+ DO_CALL (syscall_name, args);
-+
-+#define PSEUDO_RET_NOERRNO \
-+ RETINSTR(mov, pc, lr);
-+
-+#undef ret_NOERRNO
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+/* The function has to return the error code. */
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args); \
-+ rsb r0, r0, #0
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
-+#define ret_ERRVAL PSEUDO_RET_NOERRNO
-+
- #if NOT_IN_libc
- # define SYSCALL_ERROR __local_syscall_error
- # define SYSCALL_ERROR_HANDLER \
-@@ -158,7 +188,7 @@
- asm volatile ("swi %1 @ syscall " #name \
- : "=r" (_a1) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
-- : "a1", "memory"); \
-+ : "memory"); \
- _sys_result = _a1; \
- } \
- (int) _sys_result; })
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S 2002-12-31 14:13:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>.
-
-@@ -20,6 +20,7 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include <kernel-features.h>
-
- /* Clone the calling process, but without copying the whole address space.
- The calling process is suspended until the new process exits or is
-@@ -33,17 +34,24 @@
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
-
-+# ifdef __ASSUME_VFORK_SYSCALL
-+ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+# else
- /* Check if vfork syscall is known at all. */
-- ldr a2, =-ENOSYS
-- teq a1, a2
-+ cmn a2, #ENOSYS
- bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+# endif
- #endif
-
-+#ifndef __ASSUME_VFORK_SYSCALL
- /* If we don't have vfork, fork is close enough. */
- swi __NR_fork
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
- b PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+#elif !defined __NR_vfork
-+# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined"
-+#endif
-
- PSEUDO_END (__vfork)
- libc_hidden_def (__vfork)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
-@@ -0,0 +1,7 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
-+
-+/* Signal to users of this header that this architecture really doesn't
-+ support a.out binary format. */
-+#define __NO_A_OUT_SUPPORT 1
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/in.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/in.h 2003-08-21 08:37:13.000000000 -0400
-@@ -115,6 +115,11 @@
- #define IPV6_MTU_DISCOVER 23
- #define IPV6_MTU 24
- #define IPV6_RECVERR 25
-+#define IPV6_V6ONLY 26
-+#define IPV6_JOIN_ANYCAST 27
-+#define IPV6_LEAVE_ANYCAST 28
-+#define IPV6_IPSEC_POLICY 34
-+#define IPV6_XFRM_POLICY 35
-
- #define SCM_SRCRT IPV6_RXSRCRT
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h 2002-11-28 20:32:18.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h 2003-03-15 15:02:20.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Define POSIX options for Linux.
-- Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999,2000,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
-@@ -90,4 +90,7 @@
- /* The `spawn' function family is supported. */
- #define _POSIX_SPAWN 200112L
-
-+/* The monotonic clock might be available. */
-+#define _POSIX_MONOTONIC_CLOCK 0
-+
- #endif /* bits/posix_opt.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/sched.h 2002-11-21 19:08:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/sched.h 2003-08-21 08:37:13.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Definitions of constants and data structure for POSIX 1003.1b-1993
- scheduling interface.
-- Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-1999,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
-@@ -37,7 +37,6 @@
- # define CLONE_FS 0x00000200 /* Set if fs info shared between processes. */
- # define CLONE_FILES 0x00000400 /* Set if open files shared between processes. */
- # define CLONE_SIGHAND 0x00000800 /* Set if signal handlers shared. */
--# define CLONE_PID 0x00001000 /* Set if pid shared. */
- # define CLONE_PTRACE 0x00002000 /* Set if tracing continues on the child. */
- # define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
- wake it up on mm_release. */
-@@ -56,6 +55,7 @@
- force CLONE_PTRACE on this clone. */
- # define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
- the child. */
-+# define CLONE_STOPPED 0x02000000 /* Start in stopped state. */
- #endif
-
- /* The official definition. */
-@@ -86,3 +86,39 @@
- };
- # undef __need_schedparam
- #endif
-+
-+
-+#if defined _SCHED_H && !defined __cpu_set_t_defined
-+# define __cpu_set_t_defined
-+/* Size definition for CPU sets. */
-+# define __CPU_SETSIZE 1024
-+# define __NCPUBITS (8 * sizeof (__cpu_mask))
-+
-+/* Type for array elements in 'cpu_set'. */
-+typedef unsigned long int __cpu_mask;
-+
-+/* Basic access functions. */
-+# define __CPUELT(cpu) ((cpu) / __NCPUBITS)
-+# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
-+
-+/* Data structure to describe CPU mask. */
-+typedef struct
-+{
-+ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
-+} cpu_set_t;
-+
-+/* Access functions for CPU masks. */
-+# define __CPU_ZERO(cpusetp) \
-+ do { \
-+ unsigned int __i; \
-+ cpu_set_t *__arr = (cpusetp); \
-+ for (__i = 0; __i < sizeof (cpu_set_t) / sizeof (__cpu_mask); ++__i) \
-+ __arr->__bits[__i] = 0; \
-+ } while (0)
-+# define __CPU_SET(cpu, cpusetp) \
-+ ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
-+# define __CPU_CLR(cpu, cpusetp) \
-+ ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
-+# define __CPU_ISSET(cpu, cpusetp) \
-+ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h 2002-12-04 19:09:55.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -110,8 +111,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -127,8 +128,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-@@ -267,9 +270,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -280,6 +280,10 @@
- {
- int _pad[__SIGEV_PAD_SIZE];
-
-+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-+ thread to receive the signal. */
-+ __pid_t _tid;
-+
- struct
- {
- void (*_function) (sigval_t); /* Function to start. */
-@@ -299,8 +303,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h 2003-02-21 19:01:06.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
-@@ -66,7 +66,7 @@
- #define SIGSYS 31 /* Bad system call. */
- #define SIGUNUSED 31
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
-@@ -75,6 +75,6 @@
- /* These are the hard limits of the kernel. These values should not be
- used directly at user level. */
- #define __SIGRTMIN 32
--#define __SIGRTMAX _NSIG
-+#define __SIGRTMAX (_NSIG - 1)
-
- #endif /* <signal.h> included. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/stat.h 2002-12-30 19:00:47.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
-@@ -131,6 +131,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/statfs.h 2002-10-25 04:02:40.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/statfs.h 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -41,7 +41,8 @@
- #endif
- __fsid_t f_fsid;
- __SWORD_TYPE f_namelen;
-- __SWORD_TYPE f_spare[6];
-+ __SWORD_TYPE f_frsize;
-+ __SWORD_TYPE f_spare[5];
- };
-
- #ifdef __USE_LARGEFILE64
-@@ -56,9 +57,11 @@
- __fsfilcnt64_t f_ffree;
- __fsid_t f_fsid;
- __SWORD_TYPE f_namelen;
-- __SWORD_TYPE f_spare[6];
-+ __SWORD_TYPE f_frsize;
-+ __SWORD_TYPE f_spare[5];
- };
- #endif
-
--/* Tell code we have this member. */
-+/* Tell code we have these members. */
- #define _STATFS_F_NAMELEN
-+#define _STATFS_F_FRSIZE
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/termios.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/termios.h 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,6 @@
- /* termios type and macro definitions. Linux version.
-- Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
-+ Copyright (C) 1993,1994,1995,1996,1997,1998,1999,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
-@@ -36,6 +37,8 @@
- cc_t c_cc[NCCS]; /* control characters */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* output speed */
-+#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
-+#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
- };
-
- /* c_cc characters */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/check_pf.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/check_pf.c 2003-06-14 04:44:59.000000000 -0400
-@@ -0,0 +1,193 @@
-+/* Determine protocol families for which interfaces exist. Linux version.
-+ Copyright (C) 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 <errno.h>
-+#include <ifaddrs.h>
-+#include <netdb.h>
-+#include <string.h>
-+#include <time.h>
-+#include <unistd.h>
-+#include <sys/socket.h>
-+
-+#include <asm/types.h>
-+#include <linux/netlink.h>
-+#include <linux/rtnetlink.h>
-+
-+#include "kernel-features.h"
-+
-+
-+static int
-+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6)
-+{
-+ struct
-+ {
-+ struct nlmsghdr nlh;
-+ struct rtgenmsg g;
-+ } req;
-+ struct sockaddr_nl nladdr;
-+
-+ req.nlh.nlmsg_len = sizeof (req);
-+ req.nlh.nlmsg_type = RTM_GETADDR;
-+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
-+ req.nlh.nlmsg_pid = 0;
-+ req.nlh.nlmsg_seq = time (NULL);
-+ req.g.rtgen_family = AF_UNSPEC;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
-+ (struct sockaddr *) &nladdr,
-+ sizeof (nladdr))) < 0)
-+ return -1;
-+
-+ *seen_ipv4 = false;
-+ *seen_ipv6 = false;
-+
-+ bool done = false;
-+ char buf[4096];
-+ struct iovec iov = { buf, sizeof (buf) };
-+
-+ do
-+ {
-+ struct msghdr msg =
-+ {
-+ (void *) &nladdr, sizeof (nladdr),
-+ &iov, 1,
-+ NULL, 0,
-+ 0
-+ };
-+
-+ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
-+ if (read_len < 0)
-+ return -1;
-+
-+ if (msg.msg_flags & MSG_TRUNC)
-+ return -1;
-+
-+ struct nlmsghdr *nlmh;
-+ for (nlmh = (struct nlmsghdr *) buf;
-+ NLMSG_OK (nlmh, (size_t) read_len);
-+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
-+ {
-+ if ((pid_t) nlmh->nlmsg_pid != pid
-+ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
-+ continue;
-+
-+ if (nlmh->nlmsg_type == RTM_NEWADDR)
-+ {
-+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ *seen_ipv4 = true;
-+ break;
-+ case AF_INET6:
-+ *seen_ipv6 = true;
-+ break;
-+ default:
-+ /* Ignore. */
-+ break;
-+ }
-+ }
-+ else if (nlmh->nlmsg_type == NLMSG_DONE)
-+ /* We found the end, leave the loop. */
-+ done = true;
-+ else ;
-+ }
-+ }
-+ while (! done);
-+
-+ __close (fd);
-+
-+ return 0;
-+}
-+
-+
-+/* We don't know if we have NETLINK support compiled in in our
-+ Kernel. */
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+/* Define in ifaddrs.h. */
-+extern int __no_netlink_support attribute_hidden;
-+#else
-+# define __no_netlink_support 0
-+#endif
-+
-+
-+void
-+attribute_hidden
-+__check_pf (bool *seen_ipv4, bool *seen_ipv6)
-+{
-+ if (! __no_netlink_support)
-+ {
-+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-+
-+ struct sockaddr_nl nladdr;
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ socklen_t addr_len = sizeof (nladdr);
-+
-+ if (fd >= 0
-+ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
-+ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
-+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6) == 0)
-+ /* It worked. */
-+ return;
-+
-+ if (fd >= 0)
-+ __close (fd);
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* Remember that there is no netlink support. */
-+ __no_netlink_support = 1;
-+#else
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+#endif
-+ }
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* No netlink. Get the interface list via getifaddrs. */
-+ struct ifaddrs *ifa = NULL;
-+ if (getifaddrs (&ifa) != 0)
-+ {
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+ return;
-+ }
-+
-+ *seen_ipv4 = false;
-+ *seen_ipv6 = false;
-+
-+ struct ifaddrs *runp;
-+ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-+ if (runp->ifa_addr->sa_family == PF_INET)
-+ *seen_ipv4 = true;
-+ else if (runp->ifa_addr->sa_family == PF_INET6)
-+ *seen_ipv6 = true;
-+
-+ (void) freeifaddrs (ifa);
-+#endif
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c 2003-03-02 23:48:47.000000000 -0500
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME and MONOTONIC clock are definitely
-+ supported in the kernel. */
-+# define SYSDEP_GETRES \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ retval = INLINE_SYSCALL (clock_getres, 2, clock_id, res); \
-+ break
-+#elif defined __NR_clock_getres
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_GETRES \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_getres, err, 2, clock_id, res); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_getres
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/posix/clock_getres.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c 2003-03-02 23:49:06.000000000 -0500
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME and MONOTONIC clock are definitely
-+ supported in the kernel. */
-+# define SYSDEP_GETTIME \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ retval = INLINE_SYSCALL (clock_gettime, 2, clock_id, tp); \
-+ break
-+#elif defined __NR_clock_gettime
-+/* Is the syscall known to exist? */
-+int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_GETTIME \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_gettime, err, 2, clock_id, tp); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_gettime
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/unix/clock_gettime.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c 2003-08-21 08:37:11.000000000 -0400
-@@ -0,0 +1,81 @@
-+/* Copyright (C) 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 <time.h>
-+
-+#include <sysdep-cancel.h>
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* We can simply use the syscall. The CPU clocks are not supported
-+ with this function. */
-+int
-+clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
-+ struct timespec *rem)
-+{
-+ INTERNAL_SYSCALL_DECL (err);
-+ int r;
-+
-+ if (SINGLE_THREAD_P)
-+ r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, req, rem);
-+ else
-+ {
-+ int oldstate = LIBC_CANCEL_ASYNC ();
-+
-+ r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, req,
-+ rem);
-+
-+ LIBC_CANCEL_RESET (oldstate);
-+ }
-+
-+ return (INTERNAL_SYSCALL_ERROR_P (r, err)
-+ ? INTERNAL_SYSCALL_ERRNO (r, err) : 0);
-+}
-+
-+#else
-+# ifdef __NR_clock_nanosleep
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_NANOSLEEP \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ \
-+ int oldstate = LIBC_CANCEL_ASYNC (); \
-+ \
-+ int r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, \
-+ req, rem); \
-+ \
-+ LIBC_CANCEL_RESET (oldstate); \
-+ \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ return 0; \
-+ \
-+ if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS) \
-+ return INTERNAL_SYSCALL_ERRNO (r, err); \
-+ \
-+ __libc_missing_posix_timers = 1; \
-+ }
-+# endif
-+
-+# include <sysdeps/unix/clock_nanosleep.c>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c 2003-03-02 23:49:24.000000000 -0500
-@@ -0,0 +1,73 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME clock is definitely supported in the
-+ kernel. */
-+# define SYSDEP_SETTIME \
-+ case CLOCK_REALTIME: \
-+ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \
-+ break
-+#elif defined __NR_clock_settime
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME clock might be available. Try the syscall first. */
-+# define SYSDEP_SETTIME \
-+ case CLOCK_REALTIME: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_settime
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/unix/clock_settime.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/configure 2003-02-25 20:07:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/configure 2003-04-12 11:39:48.000000000 -0400
-@@ -44,7 +44,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <linux/version.h>
- #if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE < (2 *65536+ 0 *256+ 10) /* 2.0.10 */
- eat flaming death
-@@ -165,7 +169,11 @@
- abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <linux/version.h>
- #if LINUX_VERSION_CODE < $decnum
- eat flaming death
-@@ -216,7 +224,8 @@
- /usr | /usr/)
- # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
- case $machine in
-- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
-+ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
-+ mips/mips64/n64/* )
- libc_cv_slibdir="/lib64"
- if test "$libdir" = '${exec_prefix}/lib'; then
- libdir='${exec_prefix}/lib64';
-@@ -224,6 +233,14 @@
- libc_cv_localedir='${exec_prefix}/lib/locale'
- fi
- ;;
-+ mips/mips64/n32/* )
-+ libc_cv_slibdir="/lib32"
-+ if test "$libdir" = '${exec_prefix}/lib'; then
-+ libdir='${exec_prefix}/lib32';
-+ # Locale data can be shared between 32bit and 64bit libraries
-+ libc_cv_localedir='${exec_prefix}/lib/locale'
-+ fi
-+ ;;
- *)
- libc_cv_slibdir="/lib"
- ;;
-@@ -303,6 +320,9 @@
- ia64*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
- ;;
-+ mips/*64*)
-+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
-+ ;;
- s390*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
- ;;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in 2003-02-01 15:22:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in 2003-04-12 11:39:48.000000000 -0400
-@@ -157,7 +157,8 @@
- /usr | /usr/)
- # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
- case $machine in
-- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
-+ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
-+ mips/mips64/n64/* )
- libc_cv_slibdir="/lib64"
- if test "$libdir" = '${exec_prefix}/lib'; then
- libdir='${exec_prefix}/lib64';
-@@ -165,6 +166,14 @@
- libc_cv_localedir='${exec_prefix}/lib/locale'
- fi
- ;;
-+ mips/mips64/n32/* )
-+ libc_cv_slibdir="/lib32"
-+ if test "$libdir" = '${exec_prefix}/lib'; then
-+ libdir='${exec_prefix}/lib32';
-+ # Locale data can be shared between 32bit and 64bit libraries
-+ libc_cv_localedir='${exec_prefix}/lib/locale'
-+ fi
-+ ;;
- *)
- libc_cv_slibdir="/lib"
- ;;
-@@ -244,6 +253,9 @@
- ia64*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
- ;;
-+ mips/*64*)
-+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
-+ ;;
- s390*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
- ;;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/cris/Makefile 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/cris/Makefile 1969-12-31 19:00:00.000000000 -0500
-@@ -1,4 +0,0 @@
--ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
--endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h 2003-08-21 08:37:13.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Assembler macros for CRIS.
-- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001, 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
-@@ -106,6 +106,18 @@
- PLTJUMP (syscall_error) @ \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY (name) @ \
-+ DOARGS_##args @ \
-+ movu.w SYS_ify (syscall_name),$r9 @ \
-+ break 13 @ \
-+ UNDOARGS_return_##args
-+
-+#define ret_NOERRNO
-+
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- #define DOARGS_0
- #define DOARGS_1
- #define DOARGS_2
-@@ -158,7 +170,7 @@
- __set_errno (- __sys_res); \
- __sys_res = (unsigned long) -1; \
- } \
-- __sys_res; \
-+ (long int) __sys_res; \
- })
-
- #define LOAD_ARGS_c_0()
-@@ -197,7 +209,7 @@
- #define LOAD_ARGS_c_5(r10, r11, r12, r13, mof) \
- LOAD_ARGS_c_4(r10, r11, r12, r13)
- #define LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
-- LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %5,$mof\n\t"
-+ LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %6,$mof\n\t"
- #define ASM_CLOBBER_5 ASM_CLOBBER_4
- #define ASM_ARGS_5(r10, r11, r12, r13, mof) \
- ASM_ARGS_4 (r10, r11, r12, r13), "g" (mof)
-@@ -206,7 +218,7 @@
- LOAD_ARGS_c_5(r10, r11, r12, r13, mof)
- #define LOAD_ARGS_asm_6(r10, r11, r12, r13, mof, srp) \
- LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
-- "move %6,$srp\n\t"
-+ "move %7,$srp\n\t"
- #define ASM_CLOBBER_6 ASM_CLOBBER_5, "srp"
- #define ASM_ARGS_6(r10, r11, r12, r13, mof, srp) \
- ASM_ARGS_5 (r10, r11, r12, r13, mof), "g" (srp)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/execve.c 2002-10-11 03:58:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/execve.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 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
-@@ -24,11 +24,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_execve (const char *__unbounded file,
-- char *__unbounded const *__unbounded argv,
-- char *__unbounded const *__unbounded envp);
--
--
- int
- __execve (file, argv, envp)
- const char *file;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fatal-prepare.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fatal-prepare.h 2003-04-19 12:53:22.000000000 -0400
-@@ -0,0 +1,39 @@
-+/* Copyright (C) 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 <pthread.h>
-+
-+/* We have to completely disable cancellation. assert() must not be a
-+ cancellation point but the implementation uses write() etc. */
-+#ifdef SHARED
-+# include <pthread-functions.h>
-+# define FATAL_PREPARE \
-+ { \
-+ int (*fp) (int, int *); \
-+ fp = __libc_pthread_functions.ptr_pthread_setcancelstate; \
-+ if (fp != NULL) \
-+ fp (PTHREAD_CANCEL_DISABLE, NULL); \
-+ }
-+#else
-+# pragma weak pthread_setcancelstate
-+# define FATAL_PREPARE \
-+ { \
-+ if (pthread_setcancelstate != NULL) \
-+ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL); \
-+ }
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fcntl.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fcntl.c 2003-09-05 03:50:17.000000000 -0400
-@@ -0,0 +1,67 @@
-+/* Copyright (C) 2000, 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 <assert.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <stdarg.h>
-+
-+#include <sysdep-cancel.h>
-+#include <sys/syscall.h>
-+
-+
-+int
-+__fcntl_nocancel (int fd, int cmd, ...)
-+{
-+ va_list ap;
-+ void *arg;
-+
-+ va_start (ap, cmd);
-+ arg = va_arg (ap, void *);
-+ va_end (ap);
-+
-+ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
-+}
-+
-+
-+int
-+__libc_fcntl (int fd, int cmd, ...)
-+{
-+ va_list ap;
-+ void *arg;
-+
-+ va_start (ap, cmd);
-+ arg = va_arg (ap, void *);
-+ va_end (ap);
-+
-+ if (SINGLE_THREAD_P || cmd != F_SETLKW)
-+ return __fcntl_nocancel (fd, cmd, arg);
-+
-+ int oldtype = LIBC_CANCEL_ASYNC ();
-+
-+ int result = __fcntl_nocancel (fd, cmd, arg);
-+
-+ LIBC_CANCEL_RESET (oldtype);
-+
-+ return result;
-+}
-+libc_hidden_def (__libc_fcntl)
-+
-+weak_alias (__libc_fcntl, __fcntl)
-+libc_hidden_weak (__fcntl)
-+weak_alias (__libc_fcntl, fcntl)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c 2002-10-23 02:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c 2003-08-21 08:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get file-specific information about descriptor FD. Linux version.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -37,9 +37,14 @@
- switch (name)
- {
- case _PC_LINK_MAX:
-- return statfs_link_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+ return __statfs_link_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+
- case _PC_FILESIZEBITS:
-- return statfs_filesize_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+ return __statfs_filesize_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+
-+ case _PC_2_SYMLINKS:
-+ return __statfs_symlinks (__fstatfs (fd, &fsbuf), &fsbuf);
-+
- default:
- return posix_fpathconf (fd, name);
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fstatfs64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fstatfs64.c 2003-08-21 08:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Return information about the filesystem on which FD resides.
-- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1998,1999,2000,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
-@@ -21,11 +21,34 @@
- #include <string.h>
- #include <sys/statfs.h>
- #include <stddef.h>
-+#include <sysdep.h>
-+
-+/* Defined in statfs64.c. */
-+extern int __no_statfs64 attribute_hidden;
-
- /* Return information about the filesystem on which FD resides. */
- int
- __fstatfs64 (int fd, struct statfs64 *buf)
- {
-+#ifdef __NR_fstatfs64
-+# if __ASSUME_STATFS64 == 0
-+ if (! __no_statfs64)
-+# endif
-+ {
-+ int result = INLINE_SYSCALL (fstatfs64, 3, fd, sizeof (*buf), buf);
-+
-+# if __ASSUME_STATFS64 == 0
-+ if (result == 0 || errno != ENOSYS)
-+# endif
-+ return result;
-+
-+# if __ASSUME_STATFS64 == 0
-+ __no_statfs64 = 1;
-+# endif
-+ }
-+#endif
-+
-+#if __ASSUME_STATFS64 == 0
- struct statfs buf32;
-
- if (__fstatfs (fd, &buf32) < 0)
-@@ -40,8 +63,10 @@
- buf->f_ffree = buf32.f_ffree;
- buf->f_fsid = buf32.f_fsid;
- buf->f_namelen = buf32.f_namelen;
-+ buf->f_frsize = buf32.f_frsize;
- memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
-
- return 0;
-+#endif
- }
- weak_alias (__fstatfs64, fstatfs64)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fstatvfs.c 2002-09-21 01:37:05.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fstatvfs.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -17,16 +17,14 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <errno.h>
--#include <mntent.h>
--#include <paths.h>
--#include <stdio_ext.h>
--#include <string.h>
--#include <sys/mount.h>
-+#include <stddef.h>
- #include <sys/stat.h>
- #include <sys/statfs.h>
- #include <sys/statvfs.h>
-
-+extern void __internal_statvfs (const char *name, struct statvfs *buf,
-+ struct statfs *fsbuf, struct stat64 *st);
-+
-
- int
- fstatvfs (int fd, struct statvfs *buf)
-@@ -38,8 +36,8 @@
- if (__fstatfs (fd, &fsbuf) < 0)
- return -1;
-
--#define STAT(st) fstat64 (fd, st)
--#include "internal_statvfs.c"
-+ /* Convert the result. */
-+ __internal_statvfs (NULL, buf, &fsbuf, fstat64 (fd, &st) == -1 ? NULL : &st);
-
- /* We signal success if the statfs call succeeded. */
- return 0;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ftruncate64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ftruncate64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2001,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
-@@ -32,9 +32,6 @@
- extern int __have_no_truncate64;
- #endif
-
--/* The order of hight, low depends on endianness. */
--extern int __syscall_ftruncate64 (int fd, int high_length, int low_length);
--
-
- /* Truncate the file FD refers to to LENGTH bytes. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/futimes.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/futimes.c 2003-07-31 15:04:13.000000000 -0400
-@@ -0,0 +1,70 @@
-+/* futimes -- change access and modification times of open file. Linux version.
-+ Copyright (C) 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 <errno.h>
-+#include <sysdep.h>
-+#include <string.h>
-+#include <utime.h>
-+#include <sys/time.h>
-+#include <stdio-common/_itoa.h>
-+
-+#include "kernel-features.h"
-+
-+/* Change the access time of FILE to TVP[0] and
-+ the modification time of FILE to TVP[1], but do not follow symlinks.
-+
-+ The Linux kernel has no futimes() syscall so we use the /proc
-+ filesystem. */
-+int
-+__futimes (int fd, const struct timeval tvp[2])
-+{
-+ static const char selffd[] = "/proc/self/fd/";
-+ char fname[sizeof (selffd) + 3 * sizeof (int)];
-+ fname[sizeof (fname) - 1] = '\0';
-+ char *cp = _itoa_word ((unsigned int) fd, fname + sizeof (fname) - 1, 10, 0);
-+ cp = memcpy (cp - sizeof (selffd) + 1, selffd, sizeof (selffd) - 1);
-+
-+#ifdef __NR_utimes
-+ int result = INLINE_SYSCALL (utimes, 2, cp, tvp);
-+# ifndef __ASSUME_UTIMES
-+ if (result != -1 || errno != ENOSYS)
-+# endif
-+ return result;
-+#endif
-+
-+ /* The utimes() syscall does not exist or is not available in the
-+ used kernel. Use utime(). For this we have to convert to the
-+ data format utime() expects. */
-+#ifndef __ASSUME_UTIMES
-+ struct utimbuf buf;
-+ struct utimbuf *times;
-+
-+ if (tvp != NULL)
-+ {
-+ times = &buf;
-+ buf.actime = tvp[0].tv_sec + (tvp[0].tv_usec + 500000) / 1000000;
-+ buf.modtime = tvp[1].tv_sec + (tvp[1].tv_usec + 500000) / 1000000;
-+ }
-+ else
-+ times = NULL;
-+
-+ return INLINE_SYSCALL (utime, 2, cp, times);
-+#endif
-+}
-+weak_alias (__futimes, futimes)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat.c 2002-10-02 04:53:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat.c 2003-08-21 08:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* fxstat using old-style Unix fstat system call.
-- Copyright (C) 1991,1995-1998,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995-1998,2000,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
-@@ -31,9 +31,7 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--#include <xstatconv.c>
--
--extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- /* Get information about the file FD in BUF. */
- int
-@@ -51,7 +49,7 @@
-
- result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat64.c 2002-10-11 14:58:50.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* fxstat64 using old-style Unix fstat system call.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -29,13 +29,10 @@
- #include "kernel-features.h"
-
- #if __ASSUME_STAT64_SYSCALL == 0
--# include <xstatconv.c>
-+# include <xstatconv.h>
- #endif
-
--extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
--
- #ifdef __NR_fstat64
--extern int __syscall_fstat64 (int, struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls. */
- extern int __have_no_stat64;
-@@ -78,7 +75,7 @@
- # endif
- result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat64_conv (vers, &kbuf, buf);
-+ result = __xstat64_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/gai_sigqueue.c 2001-08-17 02:41:53.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/gai_sigqueue.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 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
-@@ -28,8 +28,6 @@
- #include "gai_misc.h"
-
- #ifdef __NR_rt_sigqueueinfo
--extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
--
-
- /* Return any pending signal or wait for one for the given time. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getcwd.c 2002-09-24 01:12:26.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/getcwd.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Determine current working directory. Linux version.
-- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -31,11 +31,17 @@
- #include "kernel-features.h"
-
-
-+/* If we compile the file for use in ld.so we don't need the feature
-+ that getcwd() allocates the buffers itself. */
-+#ifdef IS_IN_rtld
-+# define NO_ALLOCATION 1
-+#endif
-+
-+
- #if __ASSUME_GETCWD_SYSCALL > 0
- /* Kernel 2.1.92 introduced a third way to get the current working
- directory: a syscall. We've got to be careful that even when
- compiling under 2.1.92+ the libc still runs under older kernels. */
--extern int __syscall_getcwd (char *__unbounded buf, unsigned long size);
- # define no_syscall_getcwd 0
- # define have_new_dcache 1
- /* This is a trick since we don't define generic_getcwd. */
-@@ -52,7 +58,6 @@
- /* Kernel 2.1.92 introduced a third way to get the current working
- directory: a syscall. We've got to be careful that even when
- compiling under 2.1.92+ the libc still runs under older kernels. */
--extern int __syscall_getcwd (char *__unbounded buf, unsigned long size);
- static int no_syscall_getcwd;
- static int have_new_dcache;
- # else
-@@ -67,11 +72,12 @@
- char *path;
- int n;
- char *result;
-- size_t alloc_size = size;
-
- if (no_syscall_getcwd && !have_new_dcache)
- return generic_getcwd (buf, size);
-
-+#ifndef NO_ALLOCATION
-+ size_t alloc_size = size;
- if (size == 0)
- {
- if (buf != NULL)
-@@ -83,14 +89,17 @@
- alloc_size = PATH_MAX;
- }
-
-- if (buf != NULL)
-- path = buf;
-- else
-+ if (buf == NULL)
- {
- path = malloc (alloc_size);
- if (path == NULL)
- return NULL;
- }
-+ else
-+#else
-+# define alloc_size size
-+#endif
-+ path = buf;
-
- #if defined __NR_getcwd || __LINUX_GETCWD_SYSCALL > 0
- if (!no_syscall_getcwd)
-@@ -100,6 +109,7 @@
- retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size);
- if (retval >= 0)
- {
-+# ifndef NO_ALLOCATION
- if (buf == NULL && size == 0)
- /* Ensure that the buffer is only as large as necessary. */
- buf = realloc (path, (size_t) retval);
-@@ -108,6 +118,7 @@
- /* Either buf was NULL all along, or `realloc' failed but
- we still have the original string. */
- buf = path;
-+# endif
-
- return buf;
- }
-@@ -118,8 +129,10 @@
- large enough. */
- assert (errno != ERANGE || buf != NULL || size != 0);
-
-+# ifndef NO_ALLOCATION
- if (buf == NULL)
- free (path);
-+# endif
-
- return NULL;
- # else
-@@ -130,8 +143,10 @@
- }
- else if (errno != ERANGE || buf != NULL)
- {
-+# ifndef NO_ALLOCATION
- if (buf == NULL)
- free (path);
-+# endif
- return NULL;
- }
- # endif
-@@ -145,12 +160,15 @@
- {
- if ((size_t) n >= alloc_size - 1)
- {
-+#ifndef NO_ALLOCATION
- if (buf == NULL)
- free (path);
-+#endif
- return NULL;
- }
-
- path[n] = '\0';
-+#ifndef NO_ALLOCATION
- if (buf == NULL && size == 0)
- /* Ensure that the buffer is only as large as necessary. */
- buf = realloc (path, (size_t) n + 1);
-@@ -158,6 +176,7 @@
- /* Either buf was NULL all along, or `realloc' failed but
- we still have the original string. */
- buf = path;
-+#endif
-
- return buf;
- }
-@@ -174,17 +193,21 @@
- have_new_dcache = 0;
- #endif
-
-+#ifndef NO_ALLOCATION
- /* Don't put restrictions on the length of the path unless the user does. */
- if (size == 0)
- {
- free (path);
- path = NULL;
- }
-+#endif
-
- result = generic_getcwd (path, size);
-
-+#ifndef NO_ALLOCATION
- if (result == NULL && buf == NULL && size != 0)
- free (path);
-+#endif
-
- return result;
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getdents.c 2002-12-29 21:23:37.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/getdents.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1995-2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1995-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
-@@ -48,9 +48,6 @@
-
- #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-
--extern int __syscall_getdents (int fd, char *__unbounded buf, unsigned int nbytes);
--extern int __syscall_getdents64 (int fd, char *__unbounded buf, unsigned int nbytes);
--
- /* For Linux we need a special version of this file since the
- definition of `struct dirent' is not the same for the kernel and
- the libc. There is one additional field which might be introduced
---- glibc-2.3.2/sysdeps/unix/sysv/linux/gethostid.c 2002-09-24 01:12:26.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/gethostid.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995,1996,1998,1999,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1998-2001,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
-@@ -21,6 +21,7 @@
- #include <fcntl.h>
- #include <unistd.h>
- #include <netdb.h>
-+#include <not-cancel.h>
-
- #define HOSTIDFILE "/etc/hostid"
- #define OLD_HOSTIDFILE "/etc/hostid"
-@@ -41,13 +42,13 @@
- }
-
- /* Open file for writing. Everybody is allowed to read this file. */
-- fd = __open64 (HOSTIDFILE, O_CREAT|O_WRONLY|O_TRUNC, 0644);
-+ fd = open_not_cancel (HOSTIDFILE, O_CREAT|O_WRONLY|O_TRUNC, 0644);
- if (fd < 0)
- return -1;
-
-- written = __write (fd, &id, sizeof (id));
-+ written = write_not_cancel (fd, &id, sizeof (id));
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- return written != sizeof (id) ? -1 : 0;
- }
-@@ -71,14 +72,14 @@
- int fd;
-
- /* First try to get the ID from a former invocation of sethostid. */
-- fd = __open64 (HOSTIDFILE, O_RDONLY);
-+ fd = open_not_cancel (HOSTIDFILE, O_RDONLY|O_LARGEFILE, 0);
- if (fd < 0)
-- fd = __open64 (OLD_HOSTIDFILE, O_RDONLY);
-+ fd = open_not_cancel (OLD_HOSTIDFILE, O_RDONLY|O_LARGEFILE, 0);
- if (fd >= 0)
- {
-- ssize_t n = __read (fd, &id, sizeof (id));
-+ ssize_t n = read_not_cancel (fd, &id, sizeof (id));
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- if (n == sizeof (id))
- return id;
-@@ -100,11 +101,8 @@
- if (herr != NETDB_INTERNAL || errno != ERANGE)
- return 0;
- else
-- {
-- /* Enlarge buffer. */
-- buflen *= 2;
-- buffer = __alloca (buflen);
-- }
-+ /* Enlarge buffer. */
-+ buffer = extend_alloca (buffer, buflen, 2 * buflen);
-
- in.s_addr = 0;
- memcpy (&in, hp->h_addr,
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getloadavg.c 2002-04-08 03:02:27.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/getloadavg.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get system load averages. Linux (/proc/loadavg) version.
-- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001, 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
-@@ -22,6 +22,7 @@
- #include <locale.h>
- #include <stdlib.h>
- #include <unistd.h>
-+#include <not-cancel.h>
-
- /* Put the 1 minute, 5 minute and 15 minute load averages
- into the first NELEM elements of LOADAVG.
-@@ -33,7 +34,7 @@
- {
- int fd;
-
-- fd = __open ("/proc/loadavg", O_RDONLY);
-+ fd = open_not_cancel_2 ("/proc/loadavg", O_RDONLY);
- if (fd < 0)
- return -1;
- else
-@@ -42,8 +43,8 @@
- ssize_t nread;
- int i;
-
-- nread = __read (fd, buf, sizeof buf - 1);
-- __close (fd);
-+ nread = read_not_cancel (fd, buf, sizeof buf - 1);
-+ close_not_cancel_no_status (fd);
- if (nread < 0)
- return -1;
- buf[nread - 1] = '\0';
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getpriority.c 2002-08-04 00:32:53.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/getpriority.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* getpriority for Linux.
-- Copyright (C) 1996,98,2000,02 Free Software Foundation, Inc.
-+ Copyright (C) 1996,98,2000,02,03 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -23,9 +23,7 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_getpriority (int, id_t);
--
--/* The return value of __syscall_getpriority is biased by this value
-+/* The return value of getpriority syscall is biased by this value
- to avoid returning negative values. */
- #define PZERO 20
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c 2002-11-01 21:16:02.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Determine various system internal values, Linux version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -31,7 +31,7 @@
- #include <unistd.h>
- #include <sys/sysinfo.h>
-
--#include <atomicity.h>
-+#include <atomic.h>
-
-
- /* The default value for the /proc filesystem mount point. */
-@@ -85,8 +85,7 @@
-
- /* Now store the copied value. But do it atomically. */
- assert (sizeof (long int) == sizeof (void *__unbounded));
-- if (compare_and_swap ((long int *) &mount_proc, (long int) 0,
-- (long int) copy_result) == 0)
-+ if (atomic_compare_and_exchange_bool_acq (&mount_proc, copy_result, NULL))
- /* Replacing the value failed. This means another thread was
- faster and we don't need the copy anymore. */
- free (copy_result);
-@@ -155,7 +154,7 @@
- /* The /proc/stat format is more uniform, use it by default. */
- __stpcpy (__stpcpy (proc_fname, proc_path), "/stat");
-
-- fp = fopen (proc_fname, "r");
-+ fp = fopen (proc_fname, "rc");
- if (fp != NULL)
- {
- /* No threads use this stream. */
-@@ -172,7 +171,7 @@
- {
- __stpcpy (__stpcpy (proc_fname, proc_path), "/cpuinfo");
-
-- fp = fopen (proc_fname, "r");
-+ fp = fopen (proc_fname, "rc");
- if (fp != NULL)
- {
- /* No threads use this stream. */
-@@ -210,7 +209,7 @@
- char *proc_cpuinfo = alloca (strlen (proc_path) + sizeof ("/cpuinfo"));
- __stpcpy (__stpcpy (proc_cpuinfo, proc_path), "/cpuinfo");
-
-- fp = fopen (proc_cpuinfo, "r");
-+ fp = fopen (proc_cpuinfo, "rc");
- if (fp != NULL)
- {
- /* No threads use this stream. */
-@@ -250,7 +249,7 @@
- char *proc_meminfo = alloca (strlen (proc_path) + sizeof ("/meminfo"));
- __stpcpy (__stpcpy (proc_meminfo, proc_path), "/meminfo");
-
-- fp = fopen (proc_meminfo, "r");
-+ fp = fopen (proc_meminfo, "rc");
- if (fp != NULL)
- {
- /* No threads use this stream. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h 2000-10-14 23:12:00.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
-@@ -1,4 +1,21 @@
--/* Definitions for POSIX memory map interface. Insert rest of disclaimer here */
-+/* Definitions for POSIX memory map interface. Linux/HPPA version.
-+ Copyright (C) 1997, 1998, 2000, 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. */
-
- #ifndef _SYS_MMAN_H
- # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
-@@ -22,6 +39,8 @@
- #define MAP_LOCKED 0x2000 /* pages are locked */
- #define MAP_NORESERVE 0x4000 /* don't check for reservations */
- #define MAP_GROWSDOWN 0x8000 /* stack-like segment */
-+#define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
-+#define MAP_NONBLOCK 0x20000 /* do not block on IO */
-
- #define MS_SYNC 1 /* synchronous memory sync */
- #define MS_ASYNC 2 /* sync memory asynchronously */
-@@ -58,4 +77,3 @@
- #ifdef __USE_GNU
- # define MREMAP_MAYMOVE 1
- #endif
--
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/HPPA version.
-- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -68,7 +68,7 @@
- #define SIGXFSZ 34 /* File size limit exceeded (4.2 BSD). */
- #define SIGSTKFLT 36 /* Stack fault. */
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/syscalls.list 2003-01-30 22:39:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/syscalls.list 2003-09-19 22:37:09.000000000 -0400
-@@ -10,6 +10,7 @@
- shmdt - shmdt i:s __shmdt shmdt
- shmget - shmget i:iii __shmget shmget
- semop - semop i:ipi __semop semop
-+semtimedop - semtimedop i:ipip semtimedop
- semget - semget i:iii __semget semget
- semctl - semctl i:iiii __semctl semctl
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2002-08-26 17:16:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-04-12 11:39:49.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Assembler macros for PA-RISC.
-- Copyright (C) 1999,2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
- Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
-@@ -84,6 +84,10 @@
- bv 0(2) ASM_LINE_SEP \
- nop
-
-+#define ret_NOERRNO \
-+ bv 0(2) ASM_LINE_SEP \
-+ nop
-+
- #undef END
- #define END(name) \
- 1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
-@@ -115,6 +119,15 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY (name) \
-+ DO_CALL(syscall_name, args) ASM_LINE_SEP \
-+ nop
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- #define JUMPTARGET(name) name
- #define SYSCALL_PIC_SETUP /* Nothing. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/Versions 2002-08-25 03:43:06.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/Versions 2003-09-19 22:37:09.000000000 -0400
-@@ -33,6 +33,9 @@
- # v*
- versionsort64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- GLIBC_PRIVATE {
- __modify_ldt;
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
-@@ -0,0 +1,3 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/i386 version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bp-thunks.h 2003-01-15 17:10:10.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bp-thunks.h 2003-05-12 12:13:11.000000000 -0400
-@@ -1,3 +1,4 @@
--#include <sysdeps/generic/bp-thunks.h>
--
--#include <sys/vm86.h>
-+#ifndef __ASSEMBLER__
-+# include <sysdeps/generic/bp-thunks.h>
-+# include <sys/vm86.h>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c 2002-08-02 17:46:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 2000, 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
-@@ -37,9 +37,6 @@
- has therefore to route calls to chown to the old chown function.
- */
-
--extern int __syscall_chown (const char *__file,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- extern int __chown_is_lchown (const char *__file, uid_t __owner,
- gid_t __group);
- extern int __real_chown (const char *__file, uid_t __owner, gid_t __group);
-@@ -49,8 +46,6 @@
- /* Running under Linux > 2.1.80. */
-
- # ifdef __NR_chown32
--extern int __syscall_chown32 (const char *__file,
-- __kernel_uid32_t owner, __kernel_gid32_t group);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
-@@ -148,20 +143,15 @@
- #endif
-
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
--strong_alias (__chown_is_lchown, _chown_is_lchown)
--compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0);
--compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
-+compat_symbol (libc, __chown_is_lchown, chown, GLIBC_2_0);
- #endif
-
- #ifdef __NR_lchown
--strong_alias (__real_chown, _real_chown)
--versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
--versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
--libc_hidden_ver (__real_chown, __chown)
-+versioned_symbol (libc, __real_chown, chown, GLIBC_2_1);
-+strong_alias (__real_chown, __chown)
- #else
- strong_alias (__chown_is_lchown, __chown_is_lchown21)
--strong_alias (__chown_is_lchown, _chown_is_lchown21)
--versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1);
--versioned_symbol (libc, _chown_is_lchown21, chown, GLIBC_2_1);
--libc_hidden_ver (__chown_is_lchown, __chown)
-+versioned_symbol (libc, __chown_is_lchown21, chown, GLIBC_2_1);
-+strong_alias (__chown_is_lchown, __chown)
- #endif
-+libc_hidden_def (__chown)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S 2002-11-21 18:59:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997,98,99,2000,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,98,99,2000,02,03 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu)
-
-@@ -28,7 +28,7 @@
- #include <bp-asm.h>
-
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
-- pid_t *tid, struct user_desc *tls); */
-+ pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
-
- #define PARMS LINKAGE /* no space for saved regs */
- #define FUNC PARMS
-@@ -61,8 +61,10 @@
- jz SYSCALL_ERROR_LABEL
- #endif
-
-- /* Insert the argument onto the new stack. */
-- subl $16,%ecx
-+ /* Insert the argument onto the new stack. Make sure the new
-+ thread is started with an alignment of (mod 16). */
-+ andl $0xfffffff0, %ecx
-+ subl $24,%ecx
- movl ARG(%esp),%eax /* no negative argument counts */
- movl %eax,12(%ecx)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.c 2003-01-14 04:59:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.c 2003-08-21 08:37:13.000000000 -0400
-@@ -40,13 +40,14 @@
- needed.
- */
-
--#ifdef PROCINFO_DECL
--EXTERN
-+#ifndef PROCINFO_CLASS
-+#define PROCINFO_CLASS
- #endif
-+
- #if !defined PROCINFO_DECL && defined SHARED
- ._dl_x86_cap_flags
- #else
--const char _dl_x86_cap_flags[32][8]
-+PROCINFO_CLASS const char _dl_x86_cap_flags[32][8]
- #endif
- #ifndef PROCINFO_DECL
- = {
-@@ -62,13 +63,10 @@
- ,
- #endif
-
--#ifdef PROCINFO_DECL
--EXTERN
--#endif
- #if !defined PROCINFO_DECL && defined SHARED
- ._dl_x86_platforms
- #else
--const char _dl_x86_platforms[4][5]
-+PROCINFO_CLASS const char _dl_x86_platforms[4][5]
- #endif
- #ifndef PROCINFO_DECL
- = {
-@@ -82,3 +80,4 @@
- #endif
-
- #undef PROCINFO_DECL
-+#undef PROCINFO_CLASS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2002-09-23 20:00:49.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2003-08-21 08:37:13.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Linux/i386 version of processor capability information handling macros.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -97,7 +97,7 @@
- };
-
- static inline int
--__attribute__ ((unused))
-+__attribute__ ((unused, always_inline))
- _dl_string_hwcap (const char *str)
- {
- int i;
-@@ -112,7 +112,7 @@
-
-
- static inline int
--__attribute__ ((unused))
-+__attribute__ ((unused, always_inline))
- _dl_string_platform (const char *str)
- {
- int i;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fchown.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fchown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -25,12 +25,7 @@
- #include <linux/posix_types.h>
- #include "kernel-features.h"
-
--extern int __syscall_fchown (int __fd,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- #ifdef __NR_fchown32
--extern int __syscall_fchown32 (int __fd,
-- __kernel_uid32_t __owner, __kernel_gid32_t __group);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fcntl.c 2002-12-15 19:57:48.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fcntl.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -25,19 +25,23 @@
- #include <sys/syscall.h>
- #include "../kernel-features.h"
-
--extern int __syscall_fcntl (int __fd, int __cmd, ...);
--#ifdef __NR_fcntl64
--extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
--#endif
--
- #if __ASSUME_FCNTL64 == 0
- /* This variable is shared with all files that check for fcntl64. */
- int __have_no_fcntl64;
-+#endif
-
-
--static int
--do_fcntl (int fd, int cmd, void *arg)
-+int
-+__fcntl_nocancel (int fd, int cmd, ...)
- {
-+ va_list ap;
-+ void *arg;
-+
-+ va_start (ap, cmd);
-+ arg = va_arg (ap, void *);
-+ va_end (ap);
-+
-+#if __ASSUME_FCNTL64 == 0
- # ifdef __NR_fcntl64
- if (! __have_no_fcntl64)
- {
-@@ -118,8 +122,10 @@
- return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
- }
- return -1;
-+#else
-+ return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
-+#endif /* !__ASSUME_FCNTL64 */
- }
--#endif /* __ASSUME_FCNTL64 */
-
-
- int
-@@ -133,19 +139,19 @@
- va_end (ap);
-
- #if __ASSUME_FCNTL64 > 0
-- if (SINGLE_THREAD_P)
-+ if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
- return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
- #else
-- if (SINGLE_THREAD_P)
-- return do_fcntl (fd, cmd, arg);
-+ if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
-+ return __fcntl_nocancel (fd, cmd, arg);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
-- int result = do_fcntl (fd, cmd, arg);
-+ int result = __fcntl_nocancel (fd, cmd, arg);
- #endif
-
- LIBC_CANCEL_RESET (oldtype);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fxstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* fxstat using old-style Unix fstat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995-1998,2000,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
-@@ -32,12 +32,9 @@
-
- #include "kernel-features.h"
-
--#include <xstatconv.c>
--
--extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- #ifdef __NR_stat64
--extern int __syscall_fstat64 (int, struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls. */
- extern int __have_no_stat64;
-@@ -62,7 +59,7 @@
-
- result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64));
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
- return result;
- }
- #else
-@@ -77,7 +74,7 @@
- result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64));
-
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
-
- if (result != -1 || errno != ENOSYS)
- return result;
-@@ -88,7 +85,7 @@
-
- result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif /* __ASSUME_STAT64_SYSCALL */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getcontext.S 2002-12-19 22:56:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getcontext.S 2003-08-21 08:37:13.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Save current context.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-
-@@ -56,6 +56,10 @@
- movl %ecx, oFPREGS(%eax)
- /* Save the floating-point context. */
- fnstenv (%ecx)
-+ /* And load it right back since the processor changes the mask.
-+ Intel thought this opcode to be used in interrupt handlers which
-+ would block all exceptions. */
-+ fldenv (%ecx)
-
- /* Save the current signal mask. */
- pushl %ebx
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getegid.c 2003-02-21 18:53:24.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getegid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -23,10 +23,7 @@
- #include <sys/syscall.h>
- #include "kernel-features.h"
-
--extern int __syscall_getegid (void);
--
- #ifdef __NR_getegid32
--extern int __syscall_getegid32 (void);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/geteuid.c 2003-02-21 20:01:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/geteuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -23,10 +23,7 @@
- #include <sys/syscall.h>
- #include "kernel-features.h"
-
--extern int __syscall_geteuid (void);
--
- #ifdef __NR_geteuid32
--extern int __syscall_geteuid32 (void);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgid.c 2003-02-21 20:01:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -24,10 +24,7 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_getgid (void);
--
- #ifdef __NR_getgid32
--extern int __syscall_getgid32 (void);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2001, 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
-@@ -29,14 +29,11 @@
- #include <kernel-features.h>
-
-
--extern int __syscall_getgroups (int, __kernel_gid_t *__unbounded);
--
- #ifdef __NR_getgroups32
--extern int __syscall_getgroups32 (int, __kernel_gid32_t *__unbounded);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- #endif /* __NR_getgroups32 */
-
-@@ -64,7 +61,7 @@
- int saved_errno = errno;
-
- result = INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n));
-- if (result == 0 || errno != ENOSYS)
-+ if (result != -1 || errno != ENOSYS)
- return result;
-
- __set_errno (saved_errno);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getmsg.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getmsg.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 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
-@@ -23,9 +23,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_getpmsg (int fildes, struct strbuf *ctlptr,
-- struct strbuf *dataptr, int *bandp, int *flagsp);
--
- #ifdef __NR_getpmsg
- int
- getmsg (fildes, ctlptr, dataptr, flagsp)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresgid.c 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresgid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -30,15 +30,7 @@
-
- #ifdef __NR_getresgid
-
--extern int __syscall_getresgid (__kernel_gid_t *__unbounded rgid,
-- __kernel_gid_t *__unbounded egid,
-- __kernel_gid_t *__unbounded sgid);
--
- # ifdef __NR_getresgid32
--extern int __syscall_getresgid32 (__kernel_gid32_t *__unbounded rgid,
-- __kernel_gid32_t *__unbounded egid,
-- __kernel_gid32_t *__unbounded sgid);
--
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresuid.c 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -30,14 +30,7 @@
-
- #ifdef __NR_getresuid
-
--extern int __syscall_getresuid (__kernel_uid_t *__unbounded ruid,
-- __kernel_uid_t *__unbounded euid,
-- __kernel_uid_t *__unbounded suid);
--
- # ifdef __NR_getresuid32
--extern int __syscall_getresuid32 (__kernel_uid32_t *__unbounded ruid,
-- __kernel_uid32_t *__unbounded euid,
-- __kernel_uid32_t *__unbounded suid);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getrlimit.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getrlimit.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 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
-@@ -26,11 +26,6 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_ugetrlimit (unsigned int resource,
-- struct rlimit *__unbounded rlimits);
--extern int __syscall_getrlimit (unsigned int resource,
-- struct rlimit *__unbounded rlimits);
--
- extern int __new_getrlimit (enum __rlimit_resource resource,
- struct rlimit *__unbounded rlimits);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getuid.c 2003-02-21 18:55:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -24,10 +24,7 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_getuid (void);
--
- #ifdef __NR_getuid32
--extern int __syscall_getuid32 (void);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. This is the definition.
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lchown.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lchown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -27,12 +27,7 @@
- #include "kernel-features.h"
-
- #ifdef __NR_lchown
--extern int __syscall_lchown (const char *__unbounded __file,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- # ifdef __NR_lchown32
--extern int __syscall_lchown32 (const char *__unbounded __file,
-- __kernel_uid32_t __owner, __kernel_gid32_t __group);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lockf64.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lockf64.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 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
-@@ -28,8 +29,6 @@
- /* lockf is a simplified interface to fcntl's locking facilities. */
-
- #ifdef __NR_fcntl64
--extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
--
- # if __ASSUME_FCNTL64 == 0
- /* This variable is shared with all files that check for fcntl64. The
- declaration is in fcntl.c. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lxstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* lxstat using old-style Unix lstat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 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
-@@ -32,14 +33,9 @@
-
- #include "kernel-features.h"
-
--#include <xstatconv.c>
--
--extern int __syscall_lstat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- #ifdef __NR_stat64
--extern int __syscall_lstat64 (const char *__unbounded,
-- struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls. */
- extern int __have_no_stat64;
-@@ -65,7 +61,7 @@
-
- result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
- return result;
- }
- #else
-@@ -79,7 +75,7 @@
- result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
-
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
-
- if (result != -1 || errno != ENOSYS)
- return result;
-@@ -90,7 +86,7 @@
-
- result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S 2003-08-19 04:29:26.000000000 -0400
-@@ -0,0 +1,132 @@
-+/* Copyright (C) 1995,96,97,98,99,2000,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>
-+#include <bp-sym.h>
-+#include <bp-asm.h>
-+
-+#include "kernel-features.h"
-+
-+#define EINVAL 22
-+#define ENOSYS 38
-+#define EOVERFLOW 75
-+
-+#define SVRSP 16 /* saved register space */
-+#define PARMS LINKAGE+SVRSP /* space for 4 saved regs */
-+#define FD PARMS
-+#define OFFLO FD+4
-+#define OFFHI OFFLO+4
-+#define LENLO OFFHI+4
-+#define LENHI LENLO+4
-+#define FLAGS LENHI+4
-+
-+ .text
-+ENTRY (BP_SYM (__posix_fadvise64_l64))
-+
-+#ifdef __NR_fadvise64_64
-+
-+ /* Save registers. */
-+ pushl %ebp
-+ pushl %ebx
-+ pushl %esi
-+ pushl %edi
-+
-+ movl FD(%esp), %ebx
-+ movl OFFLO(%esp), %ecx
-+ movl OFFHI(%esp), %edx
-+ movl LENLO(%esp), %esi
-+ movl LENHI(%esp), %edi
-+ movl FLAGS(%esp), %ebp
-+
-+ movl $SYS_ify(fadvise64_64), %eax
-+ ENTER_KERNEL
-+
-+ /* Restore registers. */
-+ popl %edi
-+ popl %esi
-+ popl %ebx
-+ popl %ebp
-+
-+#ifndef __ASSUME_FADVISE64_64_SYSCALL
-+ cmpl $-ENOSYS, %eax
-+ je 1f
-+#endif
-+
-+ /* The function returns zero, or the error number. So all we
-+ have to do is negate the value passed back from the kernel. */
-+ /* If 0 > %eax > -4096 there was an error. */
-+ negl %eax
-+
-+ /* Successful; return the syscall's value. */
-+ ret
-+#endif
-+
-+#if defined __NR_fadvise64 \
-+ && (!defined __ASSUME_FADVISE64_64_SYSCALL || !defined __NR_fadvise64_64)
-+1: /* Save registers. */
-+ pushl %ebx
-+ pushl %esi
-+ pushl %edi
-+
-+ /* Overflow check. */
-+ cmpl $0, LENHI(%esp)
-+ jne L(overflow)
-+
-+ movl FD(%esp), %ebx
-+ movl OFFLO(%esp), %ecx
-+ movl OFFHI(%esp), %edx
-+ movl LENLO(%esp), %esi
-+ movl FLAGS(%esp), %edi
-+
-+ movl $SYS_ify(fadvise64), %eax
-+ ENTER_KERNEL
-+
-+ /* Restore registers. */
-+ popl %edi
-+ popl %esi
-+ popl %ebx
-+
-+ /* If 0 > %eax > -4096 there was an error. */
-+ negl %eax
-+
-+ /* Successful; return the syscall's value. */
-+ ret
-+
-+L(overflow):
-+ movl $EOVERFLOW, %eax
-+ ret
-+#else
-+ movl $ENOSYS, %eax
-+ ret
-+#endif
-+
-+END (BP_SYM (__posix_fadvise64_l64))
-+
-+#ifdef __NR_fadvise64
-+PSEUDO_ERRVAL (__posix_fadvise64_l32, fadvise64, 5)
-+ ret
-+PSEUDO_END_ERRVAL (__posix_fadvise64_l32)
-+#else
-+ENTRY (BP_SYM (__posix_fadvise64_l32))
-+ movl $ENOSYS, %eax
-+ ret
-+END (BP_SYM (__posix_fadvise64_l32))
-+#endif
-+
-+default_symbol_version (__posix_fadvise64_l64, posix_fadvise64, GLIBC_2.3.3)
-+symbol_version (__posix_fadvise64_l32, posix_fadvise64, GLIBC_2.2)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/putmsg.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/putmsg.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 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
-@@ -23,10 +23,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_putpmsg (int fildes, const struct strbuf *ctlptr,
-- const struct strbuf *dataptr, int band,
-- int flags);
--
- #ifdef __NR_putpmsg
- int
- putmsg (fildes, ctlptr, dataptr, flags)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semctl.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semctl.c 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -48,6 +48,7 @@
- struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
- unsigned short int *array; /* array for GETALL & SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
-+ struct __old_semid_ds *__old_buf;
- };
-
- #include <bp-checks.h>
-@@ -145,7 +146,7 @@
- #endif
-
- buf = arg.buf;
-- arg.buf = (struct semid_ds *)&old;
-+ arg.__old_buf = &old;
- if (cmd == IPC_SET)
- {
- old.sem_perm.uid = buf->sem_perm.uid;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semtimedop.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semtimedop.S 2003-04-02 18:46:19.000000000 -0500
-@@ -0,0 +1,63 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 SYSOP_semtimedop 4
-+
-+#define SVRSP 12 /* saved register space */
-+#define PARMS LINKAGE+SVRSP /* space for 3 saved regs */
-+#define SEMID PARMS
-+#define SOPS SEMID+4
-+#define NSOPS SOPS+PTR_SIZE
-+#define TIMEOUT NSOPS+4
-+
-+ .text
-+ENTRY (BP_SYM (semtimedop))
-+
-+ pushl %ebp
-+ pushl %ebx
-+ pushl %edi
-+
-+ movl $SYSOP_semtimedop, %ebx
-+ movl SEMID(%esp), %ecx
-+ movl NSOPS(%esp), %edx
-+ movl SOPS(%esp), %edi
-+ movl TIMEOUT(%esp), %ebp
-+ movl $__NR_ipc, %eax
-+
-+ ENTER_KERNEL
-+
-+ /* Restore registers. */
-+ popl %edi
-+ popl %ebx
-+ popl %ebp
-+
-+ /* If 0 > %eax > -4096 there was an error. */
-+ cmpl $-4096, %eax
-+ ja SYSCALL_ERROR_LABEL
-+
-+ /* Successful; return the syscall's value. */
-+L(pseudo_end):
-+ ret
-+
-+#ifdef PIC
-+ .align 4
-+#endif
-+PSEUDO_END (BP_SYM (semtimedop))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setcontext.S 2002-12-19 22:56:48.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setcontext.S 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Install given context.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-
-@@ -53,39 +53,26 @@
- movl oFS(%eax), %ecx
- movw %cx, %fs
-
-+ /* Fetch the address to return to. */
-+ movl oEIP(%eax), %ecx
-+
- /* Load the new stack pointer. */
-- movl oESP(%eax), %ecx
-- /* Make room for 8 registers and the return address. We will load
-- the values from the stack. */
-- subl $36, %ecx
--
-- /* Move the values of all the 32-bit registers (except ESP) on
-- the stack. This happens in the form the 'popa' instruction
-- expects it. Before this block put the address of the code
-- to execute. */
-- movl oEDI(%eax), %ebx
-- movl oESI(%eax), %edx
-- movl oEBP(%eax), %esi
-- movl oEBX(%eax), %edi
-- movl %ebx, (%ecx)
-- movl %edx, 4(%ecx)
-- movl %esi, 8(%ecx)
-- movl %edi, 16(%ecx)
-- movl oEDX(%eax), %ebx
-- movl oECX(%eax), %edx
-- movl oEAX(%eax), %esi
-- movl oEIP(%eax), %edi
-- movl %ebx, 20(%ecx)
-- movl %edx, 24(%ecx)
-- movl %esi, 28(%ecx)
-- movl %edi, 32(%ecx)
--
-- /* Set the new stack address. The stack points now to the block
-- we put the register content in. */
-- movl %ecx, %esp
-- /* Restore the register content. */
-- popa
-- /* The following 'ret' will pop the addres of the code and jump
-+ movl oESP(%eax), %esp
-+
-+ /* Push the return address on the new stack so we can return there. */
-+ pushl %ecx
-+
-+ /* Load the values of all the 32-bit registers (except ESP).
-+ Since we are loading from EAX, it must be last. */
-+ movl oEDI(%eax), %edi
-+ movl oESI(%eax), %esi
-+ movl oEBP(%eax), %ebp
-+ movl oEBX(%eax), %ebx
-+ movl oEDX(%eax), %edx
-+ movl oECX(%eax), %ecx
-+ movl oEAX(%eax), %eax
-+
-+ /* The following 'ret' will pop the address of the code and jump
- to it. */
-
- L(pseudo_end):
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setegid.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setegid.c 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 96, 97, 98, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1998, 2000, 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
-@@ -16,13 +16,41 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
- #include <unistd.h>
- #include <sys/types.h>
-
-+#include <sysdep.h>
-+#include "kernel-features.h"
-+
-+
-+#ifdef __NR_setresgid
-+extern int __setresgid (uid_t rgid, uid_t egid, uid_t sgid);
-+#endif
-+
- int
- setegid (gid)
- gid_t gid;
- {
-- return __setregid (-1, gid);
-+#if __ASSUME_32BITUIDS > 0
-+ return INLINE_SYSCALL (setresgid32, 3, -1, gid, -1);
-+#else
-+ int result;
-+ /* First try the syscall. */
-+# ifdef __NR_setresgid
-+ result = __setresgid (-1, gid, -1);
-+# if __ASSUME_SETRESGID_SYSCALL > 0
-+ if (0)
-+# else
-+ if (result == -1 && errno == ENOSYS)
-+# endif
-+ /* No system call available. Use emulation. This may not work
-+ since `setregid' also sets the saved user ID when GID is not
-+ equal to the real user ID, making it impossible to switch back. */
-+# endif
-+ result = __setregid (-1, gid);
-+
-+ return result;
-+#endif
- }
- libc_hidden_def (setegid)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/seteuid.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/seteuid.c 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -17,10 +17,12 @@
- 02111-1307 USA. */
-
- #include <errno.h>
--#include <sys/syscall.h>
- #include <sys/types.h>
- #include <unistd.h>
-
-+#include <sysdep.h>
-+#include "kernel-features.h"
-+
-
- #ifdef __NR_setresuid
- extern int __setresuid (uid_t ruid, uid_t euid, uid_t suid);
-@@ -29,21 +31,25 @@
- int
- seteuid (uid_t uid)
- {
-+#if __ASSUME_32BITUIDS > 0
-+ return INLINE_SYSCALL (setresuid32, 3, -1, uid, -1);
-+#else
- int result;
- /* First try the syscall. */
--#ifdef __NR_setresuid
-+# ifdef __NR_setresuid
- result = __setresuid (-1, uid, -1);
--#if __ASSUME_SETRESUID_SYSCALL > 0
-+# if __ASSUME_SETRESUID_SYSCALL > 0
- if (0)
--#else
-+# else
- if (result == -1 && errno == ENOSYS)
--#endif
-+# endif
- /* No system call available. Use emulation. This may not work
- since `setreuid' also sets the saved user ID when UID is not
- equal to the real user ID, making it impossible to switch back. */
--#endif
-+# endif
- result = __setreuid (-1, uid);
-
- return result;
-+#endif
- }
- libc_hidden_def (seteuid)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -28,34 +28,32 @@
-
- #ifdef __NR_setfsgid
-
--extern int __syscall_setfsgid (__kernel_gid_t);
--
- # ifdef __NR_setfsgid32
--extern int __syscall_setfsgid32 (__kernel_gid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- # endif /* __NR_setfsgid32 */
-
- int
- setfsgid (gid_t gid)
- {
-+ INTERNAL_SYSCALL_DECL (err);
- # if __ASSUME_32BITUIDS > 0
-- return INLINE_SYSCALL (setfsgid32, 1, gid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
- # else
- # ifdef __NR_setfsgid32
- if (__libc_missing_32bit_uids <= 0)
- {
- int result;
-- int saved_errno = errno;
-
-- result = INLINE_SYSCALL (setfsgid32, 1, gid);
-- if (result == 0 || errno != ENOSYS)
-+ result = INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
-+ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
-+ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
- return result;
-
-- __set_errno (saved_errno);
- __libc_missing_32bit_uids = 1;
- }
- # endif /* __NR_setfsgid32 */
-@@ -65,7 +63,8 @@
- return -1;
- }
-
-- return INLINE_SYSCALL (setfsgid, 1, gid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsgid, err, 1, gid);
- # endif
- }
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -28,34 +28,32 @@
-
- #ifdef __NR_setfsuid
-
--extern int __syscall_setfsuid (__kernel_uid_t);
--
- # ifdef __NR_setfsuid32
--extern int __syscall_setfsuid32 (__kernel_uid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- # endif /* __NR_setfsuid32 */
-
- int
- setfsuid (uid_t uid)
- {
-+ INTERNAL_SYSCALL_DECL (err);
- # if __ASSUME_32BITUIDS > 0
-- return INLINE_SYSCALL (setfsuid32, 1, uid);
--# else
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
-+# else
- # ifdef __NR_setfsuid32
- if (__libc_missing_32bit_uids <= 0)
- {
- int result;
-- int saved_errno = errno;
-
-- result = INLINE_SYSCALL (setfsuid32, 1, uid);
-- if (result == 0 || errno != ENOSYS)
-+ result = INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
-+ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
-+ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
- return result;
-
-- __set_errno (saved_errno);
- __libc_missing_32bit_uids = 1;
- }
- # endif /* __NR_setfsuid32 */
-@@ -66,7 +64,8 @@
- return -1;
- }
-
-- return INLINE_SYSCALL (setfsuid, 1, uid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsuid, err, 1, uid);
- # endif
- }
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -27,10 +27,7 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_setgid (__kernel_gid_t);
--
- #ifdef __NR_setgid32
--extern int __syscall_setgid32 (__kernel_gid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgroups.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgroups.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997,98,2000,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -29,10 +29,7 @@
- #include "kernel-features.h"
-
-
--extern int __syscall_setgroups (int, const __kernel_gid_t *__unbounded);
--
- #ifdef __NR_setgroups32
--extern int __syscall_setgroups32 (int, const __kernel_gid32_t *__unbounded);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setregid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setregid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -27,10 +27,7 @@
- #include "kernel-features.h"
-
-
--extern int __syscall_setregid (__kernel_gid_t, __kernel_gid_t);
--
- #ifdef __NR_setregid32
--extern int __syscall_setregid32 (__kernel_gid32_t, __kernel_gid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresgid.c 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresgid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -28,12 +28,7 @@
-
- #ifdef __NR_setresgid
-
--extern int __syscall_setresgid (__kernel_gid_t rgid, __kernel_gid_t egid,
-- __kernel_gid_t sgid);
--
- # ifdef __NR_setresgid32
--extern int __syscall_setresgid32 (__kernel_gid32_t rgid, __kernel_gid32_t egid,
-- __kernel_gid32_t sgid);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresuid.c 2002-10-14 00:04:15.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -28,12 +28,7 @@
-
- #ifdef __NR_setresuid
-
--extern int __syscall_setresuid (__kernel_uid_t rgid, __kernel_uid_t egid,
-- __kernel_uid_t sgid);
--
- # ifdef __NR_setresuid32
--extern int __syscall_setresuid32 (__kernel_uid32_t rgid, __kernel_uid32_t egid,
-- __kernel_uid32_t sgid);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setreuid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setreuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -27,10 +27,7 @@
- #include "kernel-features.h"
-
-
--extern int __syscall_setreuid (__kernel_uid_t, __kernel_uid_t);
--
- #ifdef __NR_setreuid32
--extern int __syscall_setreuid32 (__kernel_uid32_t, __kernel_uid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setrlimit.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setrlimit.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 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
-@@ -27,10 +27,6 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_setrlimit (unsigned int resource,
-- const struct rlimit *__unbounded rlimits);
--extern int __syscall_ugetrlimit (unsigned int resource,
-- const struct rlimit *__unbounded rlimits);
- extern int __new_setrlimit (enum __rlimit_resource resource,
- const struct rlimit *__unboundedrlimits);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setuid.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setuid.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -26,10 +26,7 @@
- #include <linux/posix_types.h>
- #include "kernel-features.h"
-
--extern int __syscall_setuid (__kernel_uid_t);
--
- #ifdef __NR_setuid32
--extern int __syscall_setuid32 (__kernel_uid32_t);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sigaction.c 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sigaction.c 2003-09-19 22:37:10.000000000 -0400
-@@ -37,9 +37,6 @@
- #define SA_RESTORER 0x04000000
-
-
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-- struct kernel_sigaction *__unbounded, size_t);
--
- #if __ASSUME_REALTIME_SIGNALS == 0
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-@@ -88,10 +85,15 @@
- {
- kact.k_sa_handler = act->sa_handler;
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
-+
-+# if __ASSUME_VSYSCALL == 0
- kact.sa_flags = act->sa_flags | SA_RESTORER;
-
- kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
- ? &restore_rt : &restore);
-+# else
-+ kact.sa_flags = act->sa_flags;
-+# endif
- }
-
- /* XXX The size argument hopefully will have to be changed to the
-@@ -157,6 +159,7 @@
- weak_alias (__libc_sigaction, sigaction)
- #endif
-
-+#if __ASSUME_VSYSCALL == 0
- /* NOTE: Please think twice before making any changes to the bits of
- code below. GDB needs some intimate knowledge about it to
- recognize them as signal trampolines, and make backtraces through
-@@ -165,8 +168,8 @@
- If you ever feel the need to make any changes, please notify the
- appropriate GDB maintainer. */
-
--#define RESTORE(name, syscall) RESTORE2 (name, syscall)
--#define RESTORE2(name, syscall) \
-+# define RESTORE(name, syscall) RESTORE2 (name, syscall)
-+# define RESTORE2(name, syscall) \
- asm \
- ( \
- ".text\n" \
-@@ -176,10 +179,10 @@
- " int $0x80" \
- );
-
--#ifdef __NR_rt_sigaction
-+# ifdef __NR_rt_sigaction
- /* The return code for realtime-signals. */
- RESTORE (restore_rt, __NR_rt_sigreturn)
--#endif
-+# endif
-
- /* For the boring old signals. */
- # undef RESTORE2
-@@ -195,3 +198,4 @@
- );
-
- RESTORE (restore, __NR_sigreturn)
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/socket.S 2002-12-18 06:37:37.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/socket.S 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,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
-@@ -41,6 +41,7 @@
- #endif
-
- .globl __socket
-+ cfi_startproc
- ENTRY (__socket)
- #if defined NEED_CANCELLATION && defined CENABLE
- SINGLE_THREAD_P
-@@ -49,6 +50,7 @@
-
- /* Save registers. */
- movl %ebx, %edx
-+ cfi_register (3, 2)
-
- movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
-
-@@ -61,6 +63,7 @@
-
- /* Restore registers. */
- movl %edx, %ebx
-+ cfi_restore (3)
-
- /* %eax is < 0 if there was an error. */
- cmpl $-125, %eax
-@@ -74,13 +77,16 @@
- #if defined NEED_CANCELLATION && defined CENABLE
- /* We need one more register. */
- 1: pushl %esi
-+ cfi_adjust_cfa_offset(4)
-
- /* Enable asynchronous cancellation. */
- CENABLE
- movl %eax, %esi
-+ cfi_offset(6, -8) /* %esi */
-
- /* Save registers. */
- movl %ebx, %edx
-+ cfi_register (3, 2)
-
- movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
-
-@@ -93,6 +99,7 @@
-
- /* Restore registers. */
- movl %edx, %ebx
-+ cfi_restore (3)
-
- /* Restore the cancellation. */
- xchgl %esi, %eax
-@@ -101,6 +108,8 @@
- /* Restore registers. */
- movl %esi, %eax
- popl %esi
-+ cfi_restore (6)
-+ cfi_adjust_cfa_offset(-4)
-
- /* %eax is < 0 if there was an error. */
- cmpl $-125, %eax
-@@ -109,6 +118,7 @@
- /* Successful; return the syscall's value. */
- ret
- #endif
-+ cfi_endproc
- PSEUDO_END (__socket)
-
- #ifndef NO_WEAK_ALIAS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/swapcontext.S 2002-12-19 22:57:24.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/swapcontext.S 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Save current context and install the given one.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
-
-@@ -78,43 +78,31 @@
- movl oFPREGS(%eax), %ecx
- fldenv (%ecx)
-
-- /* Restore the FS segment registers. */
-+ /* Restore the FS segment register. We don't touch the GS register
-+ since it is used for threads. */
- movl oFS(%eax), %edx
- movw %dx, %fs
-
-+ /* Fetch the address to return to. */
-+ movl oEIP(%eax), %ecx
-+
- /* Load the new stack pointer. */
-- movl oESP(%eax), %ecx
-- /* Make room for 8 registers and the return address. We will load
-- the values from the stack. */
-- subl $36, %ecx
--
-- /* Move the values of all the 32-bit registers (except ESP) on
-- the stack. This happens in the form the 'popa' instruction
-- expects it. Before this block put the address of the code
-- to execute. */
-- movl oEDI(%eax), %ebx
-- movl oESI(%eax), %edx
-- movl oEBP(%eax), %esi
-- movl oEBX(%eax), %edi
-- movl %ebx, (%ecx)
-- movl %edx, 4(%ecx)
-- movl %esi, 8(%ecx)
-- movl %edi, 16(%ecx)
-- movl oEDX(%eax), %ebx
-- movl oECX(%eax), %edx
-- movl oEAX(%eax), %esi
-- movl oEIP(%eax), %edi
-- movl %ebx, 20(%ecx)
-- movl %edx, 24(%ecx)
-- movl %esi, 28(%ecx)
-- movl %edi, 32(%ecx)
--
-- /* Set the new stack address. The stack points now to the block
-- we put the register content in. */
-- movl %ecx, %esp
-- /* Restore the register content. */
-- popa
-- /* The following 'ret' will pop the addres of the code and jump
-+ movl oESP(%eax), %esp
-+
-+ /* Push the return address on the new stack so we can return there. */
-+ pushl %ecx
-+
-+ /* Load the values of all the 32-bit registers (except ESP).
-+ Since we are loading from EAX, it must be last. */
-+ movl oEDI(%eax), %edi
-+ movl oESI(%eax), %esi
-+ movl oEBP(%eax), %ebp
-+ movl oEBX(%eax), %ebx
-+ movl oEDX(%eax), %edx
-+ movl oECX(%eax), %ecx
-+ movl oEAX(%eax), %eax
-+
-+ /* The following 'ret' will pop the address of the code and jump
- to it. */
-
- L(pseudo_end):
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/syscalls.list 2000-06-13 02:49:41.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -4,3 +4,5 @@
- vm86 - vm86 i:p __vm86 vm86
- oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
- oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
-+time - time Ei:p time
-+waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h 2003-09-19 22:37:10.000000000 -0400
-@@ -78,6 +78,32 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
-+/* The function has to return the error code. */
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args); \
-+ negl %eax
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
-+#define ret_ERRVAL ret
-+
- #ifndef PIC
- # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
- #else
-@@ -152,7 +178,7 @@
- # else
- /* Store (- %eax) into errno through the GOT. */
- # define SYSCALL_ERROR_HANDLER \
--0:SETUP_PIC_REG(cx); \
-+0:SETUP_PIC_REG(cx); \
- addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
- xorl %edx, %edx; \
- subl %eax, %edx; \
-@@ -235,12 +261,12 @@
- #define _DOARGS_0(n) /* No arguments to frob. */
- #define _POPARGS_0 /* No arguments to pop. */
-
--#define PUSHARGS_1 movl %ebx, %edx; PUSHARGS_0
-+#define PUSHARGS_1 movl %ebx, %edx; L(SAVEBX1): PUSHARGS_0
- #define DOARGS_1 _DOARGS_1 (4)
--#define POPARGS_1 POPARGS_0; movl %edx, %ebx
--#define _PUSHARGS_1 pushl %ebx; _PUSHARGS_0
-+#define POPARGS_1 POPARGS_0; movl %edx, %ebx; L(RESTBX1):
-+#define _PUSHARGS_1 pushl %ebx; L(PUSHBX1): _PUSHARGS_0
- #define _DOARGS_1(n) movl n(%esp), %ebx; _DOARGS_0(n-4)
--#define _POPARGS_1 _POPARGS_0; popl %ebx
-+#define _POPARGS_1 _POPARGS_0; popl %ebx; L(POPBX1):
-
- #define PUSHARGS_2 PUSHARGS_1
- #define DOARGS_2 _DOARGS_2 (8)
-@@ -259,16 +285,16 @@
- #define PUSHARGS_4 _PUSHARGS_4
- #define DOARGS_4 _DOARGS_4 (24)
- #define POPARGS_4 _POPARGS_4
--#define _PUSHARGS_4 pushl %esi; _PUSHARGS_3
-+#define _PUSHARGS_4 pushl %esi; L(PUSHSI1): _PUSHARGS_3
- #define _DOARGS_4(n) movl n(%esp), %esi; _DOARGS_3 (n-4)
--#define _POPARGS_4 _POPARGS_3; popl %esi
-+#define _POPARGS_4 _POPARGS_3; popl %esi; L(POPSI1):
-
- #define PUSHARGS_5 _PUSHARGS_5
- #define DOARGS_5 _DOARGS_5 (32)
- #define POPARGS_5 _POPARGS_5
--#define _PUSHARGS_5 pushl %edi; _PUSHARGS_4
-+#define _PUSHARGS_5 pushl %edi; L(PUSHDI1): _PUSHARGS_4
- #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4)
--#define _POPARGS_5 _POPARGS_4; popl %edi
-+#define _POPARGS_5 _POPARGS_4; popl %edi; L(POPDI1):
-
- #else /* !__ASSEMBLER__ */
-
-@@ -285,7 +311,7 @@
- ".macro bpushl name reg\n\t"
- ".if 1 - \\name\n\t"
- ".if 2 - \\name\n\t"
-- "pushl %ebx\n\t"
-+ "error\n\t"
- ".else\n\t"
- "xchgl \\reg, %ebx\n\t"
- ".endif\n\t"
-@@ -294,18 +320,11 @@
- ".macro bpopl name reg\n\t"
- ".if 1 - \\name\n\t"
- ".if 2 - \\name\n\t"
-- "popl %ebx\n\t"
-+ "error\n\t"
- ".else\n\t"
- "xchgl \\reg, %ebx\n\t"
- ".endif\n\t"
- ".endif\n\t"
-- ".endm\n\t"
-- ".macro bmovl name reg\n\t"
-- ".if 1 - \\name\n\t"
-- ".if 2 - \\name\n\t"
-- "movl \\reg, %ebx\n\t"
-- ".endif\n\t"
-- ".endif\n\t"
- ".endm\n\t");
-
- /* Define a macro which expands inline into the wrapper code for a system
-@@ -330,7 +349,8 @@
- # ifdef SHARED
- # define INTERNAL_SYSCALL(name, err, nr, args...) \
- ({ \
-- unsigned int resultvar; \
-+ register unsigned int resultvar; \
-+ EXTRAVAR_##nr \
- asm volatile ( \
- LOADARGS_##nr \
- "movl %1, %%eax\n\t" \
-@@ -343,7 +363,8 @@
- # else
- # define INTERNAL_SYSCALL(name, err, nr, args...) \
- ({ \
-- unsigned int resultvar; \
-+ register unsigned int resultvar; \
-+ EXTRAVAR_##nr \
- asm volatile ( \
- LOADARGS_##nr \
- "movl %1, %%eax\n\t" \
-@@ -356,11 +377,12 @@
- #else
- # define INTERNAL_SYSCALL(name, err, nr, args...) \
- ({ \
-- unsigned int resultvar; \
-+ register unsigned int resultvar; \
-+ EXTRAVAR_##nr \
- asm volatile ( \
- LOADARGS_##nr \
- "movl %1, %%eax\n\t" \
-- "int $0x80\n\t" \
-+ "int $0x80\n\t" \
- RESTOREARGS_##nr \
- : "=a" (resultvar) \
- : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
-@@ -378,44 +400,92 @@
- #define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
-
- #define LOADARGS_0
--#if defined I386_USE_SYSENTER && defined SHARED
--# define LOADARGS_1 \
-- "bpushl .L__X'%k3, %k3\n\t" \
-- "bmovl .L__X'%k3, %k3\n\t"
-+#ifdef __PIC__
-+# if defined I386_USE_SYSENTER
-+# define LOADARGS_1 \
-+ "bpushl .L__X'%k3, %k3\n\t"
-+# define LOADARGS_5 \
-+ "movl %%ebx, %4\n\t" \
-+ "movl %3, %%ebx\n\t"
-+# else
-+# define LOADARGS_1 \
-+ "bpushl .L__X'%k2, %k2\n\t"
-+# define LOADARGS_5 \
-+ "movl %%ebx, %3\n\t" \
-+ "movl %2, %%ebx\n\t"
-+# endif
-+# define LOADARGS_2 LOADARGS_1
-+# define LOADARGS_3 \
-+ "xchgl %%ebx, %%edi\n\t"
-+# define LOADARGS_4 LOADARGS_3
- #else
--# define LOADARGS_1 \
-- "bpushl .L__X'%k2, %k2\n\t" \
-- "bmovl .L__X'%k2, %k2\n\t"
-+# define LOADARGS_1
-+# define LOADARGS_2
-+# define LOADARGS_3
-+# define LOADARGS_4
-+# define LOADARGS_5
- #endif
--#define LOADARGS_2 LOADARGS_1
--#define LOADARGS_3 LOADARGS_1
--#define LOADARGS_4 LOADARGS_1
--#define LOADARGS_5 LOADARGS_1
-
- #define RESTOREARGS_0
--#if defined I386_USE_SYSENTER && defined SHARED
--# define RESTOREARGS_1 \
-+#ifdef __PIC__
-+# if defined I386_USE_SYSENTER && defined SHARED
-+# define RESTOREARGS_1 \
- "bpopl .L__X'%k3, %k3\n\t"
--#else
--# define RESTOREARGS_1 \
-+# define RESTOREARGS_5 \
-+ "movl %4, %%ebx"
-+# else
-+# define RESTOREARGS_1 \
- "bpopl .L__X'%k2, %k2\n\t"
-+# define RESTOREARGS_5 \
-+ "movl %3, %%ebx"
-+# endif
-+# define RESTOREARGS_2 RESTOREARGS_1
-+# define RESTOREARGS_3 \
-+ "xchgl %%edi, %%ebx\n\t"
-+# define RESTOREARGS_4 RESTOREARGS_3
-+#else
-+# define RESTOREARGS_1
-+# define RESTOREARGS_2
-+# define RESTOREARGS_3
-+# define RESTOREARGS_4
-+# define RESTOREARGS_5
- #endif
--#define RESTOREARGS_2 RESTOREARGS_1
--#define RESTOREARGS_3 RESTOREARGS_1
--#define RESTOREARGS_4 RESTOREARGS_1
--#define RESTOREARGS_5 RESTOREARGS_1
-
- #define ASMFMT_0()
--#define ASMFMT_1(arg1) \
-- , "acdSD" (arg1)
--#define ASMFMT_2(arg1, arg2) \
-- , "adSD" (arg1), "c" (arg2)
--#define ASMFMT_3(arg1, arg2, arg3) \
-- , "aSD" (arg1), "c" (arg2), "d" (arg3)
--#define ASMFMT_4(arg1, arg2, arg3, arg4) \
-- , "aD" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
--#define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
-- , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
-+#ifdef __PIC__
-+# define ASMFMT_1(arg1) \
-+ , "cd" (arg1)
-+# define ASMFMT_2(arg1, arg2) \
-+ , "d" (arg1), "c" (arg2)
-+# define ASMFMT_3(arg1, arg2, arg3) \
-+ , "D" (arg1), "c" (arg2), "d" (arg3)
-+# define ASMFMT_4(arg1, arg2, arg3, arg4) \
-+ , "D" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
-+# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
-+ , "0" (arg1), "m" (_xv), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
-+#else
-+# define ASMFMT_1(arg1) \
-+ , "b" (arg1)
-+# define ASMFMT_2(arg1, arg2) \
-+ , "b" (arg1), "c" (arg2)
-+# define ASMFMT_3(arg1, arg2, arg3) \
-+ , "b" (arg1), "c" (arg2), "d" (arg3)
-+# define ASMFMT_4(arg1, arg2, arg3, arg4) \
-+ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
-+# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
-+ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
-+#endif
-+
-+#define EXTRAVAR_0
-+#define EXTRAVAR_1
-+#define EXTRAVAR_2
-+#define EXTRAVAR_3
-+#define EXTRAVAR_4
-+#ifdef __PIC__
-+# define EXTRAVAR_5 int _xv;
-+#else
-+# define EXTRAVAR_5
-+#endif
-
- #endif /* __ASSEMBLER__ */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c 2003-01-28 01:24:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,73 +0,0 @@
--/* Copyright (C) 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 <sched.h>
--#include <signal.h>
--#include <sysdep.h>
--#include <unistd.h>
--#include <sys/wait.h>
--#include <bits/libc-lock.h>
--#include <kernel-features.h>
--
--/* We have to and actually can handle cancelable system(). The big
-- problem: we have to kill the child process if necessary. To do
-- this a cleanup handler has to be registered and is has to be able
-- to find the PID of the child. The main problem is to reliable have
-- the PID when needed. It is not necessary for the parent thread to
-- return. It might still be in the kernel when the cancellation
-- request comes. Therefore we have to use the clone() calls ability
-- to have the kernel write the PID into the user-level variable. */
--#ifdef __ASSUME_CLONE_THREAD_FLAGS
--# define FORK() \
-- INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
--#endif
--
--static void cancel_handler (void *arg);
--
--#define CLEANUP_HANDLER \
-- __libc_cleanup_region_start (1, cancel_handler, &pid)
--
--#define CLEANUP_RESET \
-- __libc_cleanup_region_end (0)
--
--
--/* Linux has waitpid(), so override the generic unix version. */
--#include <sysdeps/posix/system.c>
--
--
--/* The cancellation handler. */
--static void
--cancel_handler (void *arg)
--{
-- pid_t child = *(pid_t *) arg;
--
-- INTERNAL_SYSCALL_DECL (err);
-- INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
--
-- TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
--
-- DO_LOCK ();
--
-- if (SUB_REF () == 0)
-- {
-- (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
-- (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
-- }
--
-- DO_UNLOCK ();
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/xstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/xstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* xstat using old-style Unix stat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,95,96,97,98,2000,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
-@@ -32,14 +32,9 @@
-
- #include "kernel-features.h"
-
--#include <xstatconv.c>
--
--extern int __syscall_stat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- #ifdef __NR_stat64
--extern int __syscall_stat64 (const char *__unbounded,
-- struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls. */
- extern int __have_no_stat64;
-@@ -65,7 +60,7 @@
-
- result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
- return result;
- }
- #else
-@@ -79,7 +74,7 @@
- result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
-
- if (result == 0)
-- result = xstat32_conv (vers, &buf64, buf);
-+ result = __xstat32_conv (vers, &buf64, buf);
-
- if (result != -1 || errno != ENOSYS)
- return result;
-@@ -89,7 +84,7 @@
- # endif
- result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif /* __ASSUME_STAT64_SYSCALL */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/Makefile 2002-08-24 20:35:53.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/Makefile 2003-06-03 09:36:39.000000000 -0400
-@@ -4,6 +4,7 @@
-
- ifeq ($(subdir),stdlib)
- sysdep_routines += __start_context
-+gen-as-const-headers += sigcontext-offsets.sym
- endif
-
- ifeq ($(subdir),misc)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h 2003-04-24 20:06:01.000000000 -0400
-@@ -169,6 +169,6 @@
- # define POSIX_FADV_RANDOM 1 /* Expect random page references. */
- # define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
- # define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
--# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */
--# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */
-+# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
-+# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2002-07-17 19:38:55.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/ia64 version.
-- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -52,12 +52,14 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/setjmp.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/setjmp.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version.
-- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -18,7 +18,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#ifndef _SETJMP_H
-+#ifndef _BITS_SETJMP_H
-+#define _BITS_SETJMP_H 1
-+
-+#if !defined _SETJMP_H && !defined _PTHREAD_H
- # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
- #endif
-
-@@ -33,3 +36,5 @@
- variable at ADDRESS. */
- #define _JMPBUF_UNWINDS(_jmpbuf, _address) \
- ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h 2001-09-24 20:46:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h 2003-06-03 09:36:39.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Definitions for Linux/ia64 sigaction.
-- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 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
-@@ -49,6 +49,7 @@
-
- /* Bits in `sa_flags'. */
- #define SA_NOCLDSTOP 0x00000001 /* Don't send SIGCHLD when children stop. */
-+#define SA_NOCLDWAIT 0x00000002 /* Don't create zombie on child death. */
- #define SA_SIGINFO 0x00000004
- #if defined __USE_UNIX98 || defined __USE_MISC
- # define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h 2002-02-14 03:26:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h 2003-08-21 08:37:13.000000000 -0400
-@@ -50,7 +50,9 @@
- struct ia64_fpreg sc_fr[128]; /* floating-point registers */
- unsigned long int sc_rbs_base;/* NULL or new base of sighandler's rbs */
- unsigned long int sc_loadrs; /* see description above */
-- unsigned long int sc_rsvd[14];/* reserved for future use */
-+ unsigned long int sc_ar25; /* cmp8xchg16 uses this */
-+ unsigned long int sc_ar26; /* rsvd for scratch use */
-+ unsigned long int sc_rsvd[12];/* reserved for future use */
-
- /* sc_mask is actually an sigset_t but we don't want to
- * include the kernel headers here. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h 2002-12-04 19:21:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/ia64 version.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -65,8 +65,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -109,6 +110,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -128,8 +131,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-@@ -294,9 +299,6 @@
- # define __SIGEV_MAX_SIZE 64
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -326,8 +328,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h 2002-10-01 16:10:31.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* sigstack, sigaltstack definitions.
-- Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 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
-@@ -42,7 +42,7 @@
- };
-
- /* Minimum stack size for a signal handler. */
--#define MINSIGSTKSZ 131027
-+#define MINSIGSTKSZ 131072
-
- /* System default stack size. */
- #define SIGSTKSZ 262144
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/stat.h 2002-12-31 15:08:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
-@@ -108,6 +108,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S 2003-03-15 15:02:20.000000000 -0500
-@@ -1,5 +1,5 @@
- /* brk system call for Linux/ia64
-- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Stephane Eranian <eranian@hpl.hp.com> and
- Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
-@@ -25,6 +25,8 @@
- #include <asm/errno.h>
-
- .global __curbrk
-+ .type __curbrk,@object
-+ .size __curbrk,8
- .data
- .align 8
- __curbrk:
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S 2003-03-15 15:02:20.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2001, 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
-@@ -22,10 +22,11 @@
-
-
- /* int __clone2(int (*fn) (void *arg), void *child_stack_base, */
--/* size_t child_stack_size, int flags, void *arg) */
-+/* size_t child_stack_size, int flags, void *arg, */
-+/* pid_t *parent_tid, void *tls, pid_t *child_tid) */
-
- ENTRY(__clone2)
-- alloc r2=ar.pfs,5,2,3,0
-+ alloc r2=ar.pfs,8,2,6,0
- cmp.eq p6,p0=0,in0
- mov r8=EINVAL
- (p6) br.cond.spnt.few __syscall_error
-@@ -41,6 +42,9 @@
- mov out0=in3 /* Flags are first syscall argument. */
- mov out1=in1 /* Stack address. */
- mov out2=in2 /* Stack size. */
-+ mov out3=in5 /* Parent TID Pointer */
-+ mov out4=in7 /* Child TID Pointer */
-+ mov out5=in6 /* TLS pointer */
- DO_CALL (SYS_ify (clone2))
- cmp.eq p6,p0=-1,r10
- ;;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S 2002-12-31 14:13:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S 2003-04-12 11:39:50.000000000 -0400
-@@ -32,7 +32,6 @@
- ;;
- DO_CALL (SYS_ify (clone))
- cmp.eq p6,p0=-1,r10
-- ;;
- (p6) br.cond.spnt.few __syscall_error
- ret
- PSEUDO_END(__libc_fork)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fxstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* fxstat using old-style Unix fstat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 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
-@@ -29,8 +30,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_fstat (int, struct stat *__unbounded);
--
- /* Get information about the file FD in BUF. */
- int
- __fxstat (int vers, int fd, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S 2002-10-09 05:57:31.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S 2003-04-12 11:39:50.000000000 -0400
-@@ -34,6 +34,7 @@
- other than the PRESERVED state. */
-
- ENTRY(__getcontext)
-+ .prologue
- alloc r16 = ar.pfs, 1, 0, 3, 0
-
- // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask):
-@@ -53,7 +54,9 @@
- add r2 = SC_GR+1*8, r32
- ;;
- mov.m rBSP = ar.bsp
-+ .save ar.unat, rUNAT
- mov.m rUNAT = ar.unat
-+ .body
- add r3 = SC_GR+4*8, r32
- ;;
-
-@@ -65,8 +68,8 @@
- .mem.offset 8,0; st8.spill [r3] = r6, 48
- and rTMP = ~0x3, rRSC
- ;;
-- st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
-- st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
-+.mem.offset 0,0; st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
-+.mem.offset 8,0; st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
- ;;
- mov.m ar.rsc = rTMP // put RSE into enforced lazy mode
- mov.m rNAT = ar.unat
-@@ -119,8 +122,8 @@
- stf.spill [r3] = f31, 32
- mov rB1 = b1
- ;;
-+ mov ar.unat = rUNAT // we're done spilling integer regs; restore caller's UNaT
- add r2 = SC_NAT, r32
-- nop 0
- add r3 = SC_BSP, r32
- ;;
- st8 [r2] = rNAT, (SC_RNAT-SC_NAT)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/kernel_stat.h 2003-06-12 12:15:15.000000000 -0400
-@@ -0,0 +1,21 @@
-+/* Definition of `struct stat' used in the kernel.
-+ Copyright (C) 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. */
-+
-+#define STAT_IS_KERNEL_STAT 1
-+#define XSTAT_IS_XSTAT64 1
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/lxstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/lxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* lxstat using old-style Unix fstat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 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
-@@ -29,8 +30,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_lstat (const char *__unbounded, struct stat *__unbounded);
--
- /* Get information about the file FD in BUF. */
- int
- __lxstat (int vers, const char *name, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setcontext.S 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setcontext.S 2003-06-03 09:36:39.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -32,7 +32,7 @@
- other than the PRESERVED state. */
-
- ENTRY(__setcontext)
-- alloc r16 = ar.pfs, 1, 0, 3, 0
-+ alloc r16 = ar.pfs, 1, 0, 4, 0
-
- // sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL):
-
-@@ -42,6 +42,7 @@
- mov out0 = SIG_SETMASK
- add out1 = r2, in0
- mov out2 = 0
-+ mov out3 = 8 // sizeof kernel sigset_t
-
- invala
- break __BREAK_SYSCALL
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S 2002-12-31 14:13:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S 2003-05-24 14:06:23.000000000 -0400
-@@ -86,22 +86,23 @@
-
- ENTRY(__sigsetjmp)
- .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
-- alloc loc1=ar.pfs,2,2,2,0
-- mov r16=ar.unat
-+ alloc loc1=ar.pfs,2,3,2,0
-+ .save ar.unat, loc2
-+ mov loc2=ar.unat
- ;;
- mov r17=ar.fpsr
- mov r2=in0
- add r3=8,in0
- ;;
-- st8.spill.nta [r2]=sp,16 // r12 (sp)
-- st8.spill.nta [r3]=gp,16 // r1 (gp)
-+.mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp)
-+.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp)
- ;;
-- st8.nta [r2]=r16,16 // save caller's unat
-+ st8.nta [r2]=loc2,16 // save caller's unat
- st8.nta [r3]=r17,16 // save fpsr
- add r8=0xa0,in0
- ;;
-- st8.spill.nta [r2]=r4,16 // r4
-- st8.spill.nta [r3]=r5,16 // r5
-+.mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4
-+.mem.offset 0,0; st8.spill.nta [r3]=r5,16 // r5
- add r9=0xb0,in0
- ;;
- stf.spill.nta [r8]=f2,32
-@@ -143,8 +144,8 @@
- stf.spill.nta [r8]=f30
- stf.spill.nta [r9]=f31
-
-- st8.spill.nta [r2]=r6,16 // r6
-- st8.spill.nta [r3]=r7,16 // r7
-+.mem.offset 8,0; st8.spill.nta [r2]=r6,16 // r6
-+.mem.offset 0,0; st8.spill.nta [r3]=r7,16 // r7
- ;;
- mov r23=ar.bsp
- mov r25=ar.unat
-@@ -170,9 +171,10 @@
- st8.nta [r3]=in0 // &__jmp_buf
- br.call.dpnt.few rp=__sigjmp_save
- .ret0: // force a new bundle ::q
-- mov r8=0
-+ mov.m ar.unat=loc2 // restore caller's unat
- mov rp=loc0
- mov ar.pfs=loc1
-+ mov r8=0
- ret
- END(__sigsetjmp)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigaction.c 2003-01-02 18:26:04.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigaction.c 2003-09-19 22:37:10.000000000 -0400
-@@ -29,9 +29,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigaction (int, const struct sigaction *__unbounded,
-- struct sigaction *__unbounded, size_t);
--
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. This is the definition. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 2003-06-02 15:56:22.000000000 -0400
-@@ -0,0 +1,16 @@
-+#include <stddef.h>
-+#include <sys/ucontext.h>
-+
-+--
-+SC_NAT offsetof (struct sigcontext, sc_nat)
-+SC_BSP offsetof (struct sigcontext, sc_ar_bsp)
-+SC_RNAT offsetof (struct sigcontext, sc_ar_rnat)
-+SC_UNAT offsetof (struct sigcontext, sc_ar_unat)
-+SC_FPSR offsetof (struct sigcontext, sc_ar_fpsr)
-+SC_PFS offsetof (struct sigcontext, sc_ar_pfs)
-+SC_LC offsetof (struct sigcontext, sc_ar_lc)
-+SC_PR offsetof (struct sigcontext, sc_pr)
-+SC_BR offsetof (struct sigcontext, sc_br)
-+SC_GR offsetof (struct sigcontext, sc_gr)
-+SC_FR offsetof (struct sigcontext, sc_fr)
-+SC_MASK offsetof (struct sigcontext, sc_mask)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigpending.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigpending.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -27,9 +27,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
--
--
- /* Change the set of blocked signals to SET,
- wait until a signal arrives, and restore the set of blocked signals. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigprocmask.c 2001-07-07 15:21:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigprocmask.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Linux/IA64 specific sigprocmask
- Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
-@@ -29,9 +29,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
-- sigset_t *__unbounded, size_t);
--
- /* Get and/or change the set of blocked signals. */
- int
- __sigprocmask (how, set, oset)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigsuspend.c 2002-12-17 19:57:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigsuspend.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 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
-@@ -24,9 +25,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
--
--
- /* Change the set of blocked signals to SET,
- wait until a signal arrives, and restore the set of blocked signals. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/syscalls.list 2003-02-05 16:40:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -5,7 +5,7 @@
- # Whee! 64-bit systems naturally implement llseek.
- llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
- lseek llseek -
--posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
- pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
- pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
- fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
-@@ -30,6 +30,7 @@
- shmdt - shmdt i:s __shmdt shmdt
- shmget - shmget i:iii __shmget shmget
- semop - semop i:ipi __semop semop
-+semtimedop - semtimedop i:ipip semtimedop
- semget - semget i:iii __semget semget
- semctl - semctl i:iiii __semctl semctl
-
-@@ -58,34 +59,8 @@
-
- ptrace - ptrace 4 __ptrace ptrace
-
--rt_sigaction EXTRA rt_sigaction i:ippi __syscall_rt_sigaction rt_sigaction
--rt_sigpending EXTRA rt_sigpending i:pi __syscall_rt_sigpending rt_sigpending
--rt_sigprocmask EXTRA rt_sigprocmask i:ippi __syscall_rt_sigprocmask rt_sigprocmask
--rt_sigqueueinfo EXTRA rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo rt_sigqueueinfo
--rt_sigsuspend EXTRA rt_sigsuspend i:pi __syscall_rt_sigsuspend rt_sigsuspend
--rt_sigtimedwait EXTRA rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait rt_sigtimedwait
-
- # System calls with wrappers.
--s_execve EXTRA execve i:spp __syscall_execve
--s_exit exit exit i:i __syscall_exit
--s_exit_group exit_group exit_group i:i __syscall_exit_group
--s_getcwd getcwd getcwd i:pi __syscall_getcwd getcwd
--s_getdents getdents getdents i:ipi __syscall_getdents getdents
--s_getdents64 getdents64 getdents64 i:ipi __syscall_getdents64
--s_mknod xmknod mknod i:sii __syscall_mknod
--s_readv readv readv i:ipi __syscall_readv
--s_writev writev writev i:ipi __syscall_writev
--s_poll poll poll i:pii __syscall_poll
--s_reboot reboot reboot i:iii __syscall_reboot
--s_ustat ustat ustat i:ip __syscall_ustat
--s_stat xstat stat i:sp __syscall_stat
--s_lstat lxstat lstat i:sp __syscall_lstat
--s_fstat fxstat fstat i:ip __syscall_fstat
--s_sysctl sysctl _sysctl i:p __syscall__sysctl
--s_open open open i:siv __syscall_open
--s_wait4 wait4 wait4 i:iWiP __syscall_wait4
--s_ioctl ioctl ioctl i:iiI __syscall_ioctl
--s_write write write i:ibn __syscall_write
-
- # IA-64 specific
- getunwind EXTRA getunwind i:pi getunwind
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h 2003-08-21 08:37:13.000000000 -0400
-@@ -45,6 +45,12 @@
- # define __NR_pwrite __NR_pwrite64
- #endif
-
-+/* This is to help the old kernel headers where __NR_semtimedop is not
-+ available. */
-+#ifndef __NR_semtimedop
-+# define __NR_semtimedop 1247
-+#endif
-+
- #ifdef __ASSEMBLER__
-
- #undef CALL_MCOUNT
-@@ -96,15 +102,39 @@
- #undef PSEUDO_END
- #define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY(name) \
-+ DO_CALL (SYS_ify(syscall_name));
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
-+
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ ENTRY(name) \
-+ DO_CALL (SYS_ify(syscall_name)); \
-+ cmp.eq p6,p0=-1,r10; \
-+(p6) mov r10=r8;
-+
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) .endp C_SYMBOL_NAME(name);
-+
- #undef END
- #define END(name) \
- .size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
- .endp C_SYMBOL_NAME(name)
-
- #define ret br.ret.sptk.few b0
-+#define ret_NOERRNO ret
-+#define ret_ERRVAL ret
-
- #else /* not __ASSEMBLER__ */
-
-+#define BREAK_INSN_1(num) "break " #num ";;\n\t"
-+#define BREAK_INSN(num) BREAK_INSN_1(num)
-+
- /* On IA-64 we have stacked registers for passing arguments. The
- "out" registers end up being the called function's "in"
- registers.
-@@ -121,10 +151,10 @@
- register long _r15 asm ("r15") = __NR_##name; \
- long _retval; \
- LOAD_ARGS_##nr (args); \
-- __asm __volatile ("break %3;;\n\t" \
-+ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
- : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
-- : "i" (__BREAK_SYSCALL), "2" (_r15) \
-- ASM_ARGS_##nr \
-+ ASM_OUTARGS_##nr \
-+ : "2" (_r15) ASM_ARGS_##nr \
- : "memory" ASM_CLOBBERS_##nr); \
- _retval = _r8; \
- if (_r10 == -1) \
-@@ -145,10 +175,10 @@
- register long _r15 asm ("r15") = __NR_##name; \
- long _retval; \
- LOAD_ARGS_##nr (args); \
-- __asm __volatile ("break %3;;\n\t" \
-+ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
- : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
-- : "i" (__BREAK_SYSCALL), "2" (_r15) \
-- ASM_ARGS_##nr \
-+ ASM_OUTARGS_##nr \
-+ : "2" (_r15) ASM_ARGS_##nr \
- : "memory" ASM_CLOBBERS_##nr); \
- _retval = _r8; \
- err = _r10; \
-@@ -176,20 +206,33 @@
- #define LOAD_ARGS_5(out0, out1, out2, out3, out4) \
- register long _out4 asm ("out4") = (long) (out4); \
- LOAD_ARGS_4 (out0, out1, out2, out3)
-+#define LOAD_ARGS_6(out0, out1, out2, out3, out4, out5) \
-+ register long _out5 asm ("out5") = (long) (out5); \
-+ LOAD_ARGS_5 (out0, out1, out2, out3, out4)
-+
-+#define ASM_OUTARGS_0
-+#define ASM_OUTARGS_1 ASM_OUTARGS_0, "=r" (_out0)
-+#define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
-+#define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
-+#define ASM_OUTARGS_4 ASM_OUTARGS_3, "=r" (_out3)
-+#define ASM_OUTARGS_5 ASM_OUTARGS_4, "=r" (_out4)
-+#define ASM_OUTARGS_6 ASM_OUTARGS_5, "=r" (_out5)
-
- #define ASM_ARGS_0
--#define ASM_ARGS_1 ASM_ARGS_0, "r" (_out0)
--#define ASM_ARGS_2 ASM_ARGS_1, "r" (_out1)
--#define ASM_ARGS_3 ASM_ARGS_2, "r" (_out2)
--#define ASM_ARGS_4 ASM_ARGS_3, "r" (_out3)
--#define ASM_ARGS_5 ASM_ARGS_4, "r" (_out4)
-+#define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
-+#define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
-+#define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
-+#define ASM_ARGS_4 ASM_ARGS_3, "6" (_out3)
-+#define ASM_ARGS_5 ASM_ARGS_4, "7" (_out4)
-+#define ASM_ARGS_6 ASM_ARGS_5, "8" (_out5)
-
- #define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
- #define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
- #define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
- #define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
- #define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
--#define ASM_CLOBBERS_5 , "out5", "out6", "out7", \
-+#define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
-+#define ASM_CLOBBERS_6 , "out6", "out7", \
- /* Non-stacked integer registers, minus r8, r10, r15. */ \
- "r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
- "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c 2003-03-18 16:46:10.000000000 -0500
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 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 <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#ifdef __ASSUME_CLONE_THREAD_FLAGS
-+# define FORK() \
-+ INLINE_SYSCALL (clone2, 6, CLONE_PARENT_SETTID | SIGCHLD, NULL, 0, \
-+ &pid, NULL, NULL)
-+#endif
-+
-+#include "../system.c"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2003-06-03 09:36:39.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -24,19 +24,7 @@
- #define SIG_UNBLOCK 1
- #define SIG_SETMASK 2
-
--#define SC_NAT 0x008
--#define SC_BSP 0x048
--#define SC_RNAT 0x050
--#define SC_UNAT 0x060
--#define SC_FPSR 0x068
--#define SC_PFS 0x070
--#define SC_LC 0x078
--#define SC_PR 0x080
--#define SC_BR 0x088
--#define SC_GR 0x0c8
--#define SC_FR 0x1d0
--#define SC_MASK 0x9d0
--
-+#include <sigcontext-offsets.h>
-
- #define rTMP r16
- #define rPOS r16
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/umount.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/umount.c 2003-05-14 20:26:00.000000000 -0400
-@@ -0,0 +1,31 @@
-+/* umount system call for Linux/ia64.
-+ Copyright (C) 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 <sys/mount.h>
-+#include <errno.h>
-+
-+#include <sysdep.h>
-+#include <bp-checks.h>
-+
-+/* Unmount a filesystem. */
-+int
-+umount (const char *special_file)
-+{
-+ return INLINE_SYSCALL (umount, 2, CHECK_STRING (special_file), 0);
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/xstat.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/xstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* xstat using old-style Unix stat system call.
-- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 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
-@@ -29,8 +30,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_stat (const char *__unbounded, struct stat *__unbounded);
--
- /* Get information about the file NAME in BUF. */
- int
- __xstat (int vers, const char *name, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/if_index.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/if_index.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997,98,99,2000,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,98,99,2000,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
-@@ -25,6 +25,7 @@
- #include <sys/socket.h>
- #include <sys/ioctl.h>
- #include <bits/libc-lock.h>
-+#include <not-cancel.h>
-
- #include "kernel-features.h"
-
-@@ -53,12 +54,12 @@
- if (__ioctl (fd, SIOCGIFINDEX, &ifr) < 0)
- {
- int saved_errno = errno;
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- if (saved_errno == EINVAL)
- __set_errno (ENOSYS);
- return 0;
- }
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return ifr.ifr_ifindex;
- #endif
- }
-@@ -120,9 +121,9 @@
- do
- {
- ifc.ifc_buf = alloca (ifc.ifc_len = rq_len);
-- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
- {
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return NULL;
- }
- rq_len *= 2;
-@@ -134,7 +135,7 @@
- idx = malloc ((nifs + 1) * sizeof (struct if_nameindex));
- if (idx == NULL)
- {
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- __set_errno (ENOBUFS);
- return NULL;
- }
-@@ -152,7 +153,7 @@
- for (j = 0; j < i; ++j)
- free (idx[j].if_name);
- free (idx);
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- if (saved_errno == EINVAL)
- saved_errno = ENOSYS;
- else if (saved_errno == ENOMEM)
-@@ -166,7 +167,7 @@
- idx[i].if_index = 0;
- idx[i].if_name = NULL;
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return idx;
- #endif
- }
-@@ -208,7 +209,7 @@
- ifr.ifr_ifindex = ifindex;
- status = __ioctl (fd, SIOCGIFNAME, &ifr);
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
-
- # if __ASSUME_SIOCGIFNAME == 0
- if (status < 0)
-@@ -288,9 +289,9 @@
- do
- {
- ifc.ifc_buf = alloca (ifc.ifc_len = rq_len);
-- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
- {
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- return;
- }
- rq_len *= 2;
-@@ -317,6 +318,6 @@
- break;
- }
-
-- __close (fd);
-+ close_not_cancel_no_status (fd);
- }
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c 2003-08-21 08:37:11.000000000 -0400
-@@ -0,0 +1,810 @@
-+/* getifaddrs -- get names and addresses of all network interfaces
-+ Copyright (C) 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 <assert.h>
-+#include <errno.h>
-+#include <ifaddrs.h>
-+#include <net/if.h>
-+#include <netinet/in.h>
-+#include <netpacket/packet.h>
-+#include <stdbool.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/ioctl.h>
-+#include <sys/socket.h>
-+#include <sysdep.h>
-+#include <time.h>
-+#include <unistd.h>
-+
-+#include <asm/types.h>
-+#include <linux/netlink.h>
-+#include <linux/rtnetlink.h>
-+
-+#include "kernel-features.h"
-+
-+/* We don't know if we have NETLINK support compiled in in our
-+ Kernel, so include the old implementation as fallback. */
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+int __no_netlink_support attribute_hidden;
-+
-+# define getifaddrs fallback_getifaddrs
-+# include "sysdeps/gnu/ifaddrs.c"
-+# undef getifaddrs
-+
-+#else
-+
-+# define __no_netlink_support 0
-+
-+#endif
-+
-+
-+struct netlink_res
-+{
-+ struct netlink_res *next;
-+ struct nlmsghdr *nlh;
-+ size_t size; /* Size of response. */
-+ uint32_t seq; /* sequential number we used. */
-+};
-+
-+
-+struct netlink_handle
-+{
-+ int fd; /* Netlink file descriptor. */
-+ pid_t pid; /* Process ID. */
-+ uint32_t seq; /* The sequence number we use currently. */
-+ struct netlink_res *nlm_list; /* Pointer to list of responses. */
-+ struct netlink_res *end_ptr; /* For faster append of new entries. */
-+};
-+
-+
-+/* struct to hold the data for one ifaddrs entry, so we can allocate
-+ everything at once. */
-+struct ifaddrs_storage
-+{
-+ struct ifaddrs ifa;
-+ union
-+ {
-+ /* Save space for the biggest of the four used sockaddr types and
-+ avoid a lot of casts. */
-+ struct sockaddr sa;
-+ struct sockaddr_ll sl;
-+ struct sockaddr_in s4;
-+ struct sockaddr_in6 s6;
-+ } addr, netmask, broadaddr;
-+ char name[IF_NAMESIZE + 1];
-+};
-+
-+
-+static void
-+free_netlink_handle (struct netlink_handle *h)
-+{
-+ struct netlink_res *ptr;
-+ int saved_errno = errno;
-+
-+ ptr = h->nlm_list;
-+ while (ptr != NULL)
-+ {
-+ struct netlink_res *tmpptr;
-+
-+ tmpptr = ptr->next;
-+ free (ptr);
-+ ptr = tmpptr;
-+ }
-+
-+ errno = saved_errno;
-+}
-+
-+
-+static int
-+netlink_sendreq (struct netlink_handle *h, int type)
-+{
-+ struct
-+ {
-+ struct nlmsghdr nlh;
-+ struct rtgenmsg g;
-+ } req;
-+ struct sockaddr_nl nladdr;
-+
-+ if (h->seq == 0)
-+ h->seq = time (NULL);
-+
-+ req.nlh.nlmsg_len = sizeof (req);
-+ req.nlh.nlmsg_type = type;
-+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
-+ req.nlh.nlmsg_pid = 0;
-+ req.nlh.nlmsg_seq = h->seq;
-+ req.g.rtgen_family = AF_UNSPEC;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ return TEMP_FAILURE_RETRY (__sendto (h->fd, (void *) &req, sizeof (req), 0,
-+ (struct sockaddr *) &nladdr,
-+ sizeof (nladdr)));
-+}
-+
-+
-+static int
-+netlink_receive (struct netlink_handle *h)
-+{
-+ struct netlink_res *nlm_next;
-+ char buf[4096];
-+ struct iovec iov = { buf, sizeof (buf) };
-+ struct sockaddr_nl nladdr;
-+ struct nlmsghdr *nlmh;
-+ int read_len;
-+ bool done = false;
-+
-+ while (! done)
-+ {
-+ struct msghdr msg =
-+ {
-+ (void *) &nladdr, sizeof (nladdr),
-+ &iov, 1,
-+ NULL, 0,
-+ 0
-+ };
-+
-+ read_len = TEMP_FAILURE_RETRY (__recvmsg (h->fd, &msg, 0));
-+ if (read_len < 0)
-+ return -1;
-+
-+ if (msg.msg_flags & MSG_TRUNC)
-+ return -1;
-+
-+ nlm_next = (struct netlink_res *) malloc (sizeof (struct netlink_res)
-+ + read_len);
-+ if (nlm_next == NULL)
-+ return -1;
-+ nlm_next->next = NULL;
-+ nlm_next->nlh = memcpy (nlm_next + 1, buf, read_len);
-+ nlm_next->size = read_len;
-+ nlm_next->seq = h->seq;
-+ if (h->nlm_list == NULL)
-+ h->nlm_list = nlm_next;
-+ else
-+ h->end_ptr->next = nlm_next;
-+ h->end_ptr = nlm_next;
-+
-+ for (nlmh = (struct nlmsghdr *) buf;
-+ NLMSG_OK (nlmh, (size_t) read_len);
-+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
-+ {
-+ if ((pid_t) nlmh->nlmsg_pid != h->pid || nlmh->nlmsg_seq != h->seq)
-+ continue;
-+
-+ if (nlmh->nlmsg_type == NLMSG_DONE)
-+ {
-+ /* We found the end, leave the loop. */
-+ done = true;
-+ break;
-+ }
-+ if (nlmh->nlmsg_type == NLMSG_ERROR)
-+ {
-+ struct nlmsgerr *nlerr = (struct nlmsgerr *) NLMSG_DATA (nlmh);
-+ if (nlmh->nlmsg_len < NLMSG_LENGTH (sizeof (struct nlmsgerr)))
-+ errno = EIO;
-+ else
-+ errno = -nlerr->error;
-+ return -1;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+static void
-+netlink_close (struct netlink_handle *h)
-+{
-+ /* Don't modify errno. */
-+ INTERNAL_SYSCALL_DECL (err);
-+ (void) INTERNAL_SYSCALL (close, err, 1, h->fd);
-+}
-+
-+
-+/* Open a NETLINK socket. */
-+static int
-+netlink_open (struct netlink_handle *h)
-+{
-+ struct sockaddr_nl nladdr;
-+
-+ h->fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-+ if (h->fd < 0)
-+ return -1;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+ if (__bind (h->fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) < 0)
-+ {
-+ close_and_out:
-+ netlink_close (h);
-+ return -1;
-+ }
-+ /* Determine the ID the kernel assigned for this netlink connection.
-+ It is not necessarily the PID if there is more than one socket
-+ open. */
-+ socklen_t addr_len = sizeof (nladdr);
-+ if (__getsockname (h->fd, (struct sockaddr *) &nladdr, &addr_len) < 0)
-+ goto close_and_out;
-+ h->pid = nladdr.nl_pid;
-+ return 0;
-+}
-+
-+
-+/* We know the number of RTM_NEWLINK entries, so we reserve the first
-+ # of entries for this type. All RTM_NEWADDR entries have an index
-+ pointer to the RTM_NEWLINK entry. To find the entry, create
-+ a table to map kernel index entries to our index numbers.
-+ Since we get at first all RTM_NEWLINK entries, it can never happen
-+ that a RTM_NEWADDR index is not known to this map. */
-+static int
-+internal_function
-+map_newlink (int index, struct ifaddrs_storage *ifas, int *map, int max)
-+{
-+ int i;
-+
-+ for (i = 0; i < max; i++)
-+ {
-+ if (map[i] == -1)
-+ {
-+ map[i] = index;
-+ if (i > 0)
-+ ifas[i - 1].ifa.ifa_next = &ifas[i].ifa;
-+ return i;
-+ }
-+ else if (map[i] == index)
-+ return i;
-+ }
-+ /* This should never be reached. If this will be reached, we have
-+ a very big problem. */
-+ abort ();
-+}
-+
-+
-+/* Create a linked list of `struct ifaddrs' structures, one for each
-+ network interface on the host machine. If successful, store the
-+ list in *IFAP and return 0. On errors, return -1 and set `errno'. */
-+int
-+getifaddrs (struct ifaddrs **ifap)
-+{
-+ struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
-+ struct netlink_res *nlp;
-+ struct ifaddrs_storage *ifas;
-+ unsigned int i, newlink, newaddr, newaddr_idx;
-+ int *map_newlink_data;
-+ size_t ifa_data_size = 0; /* Size to allocate for all ifa_data. */
-+ char *ifa_data_ptr; /* Pointer to the unused part of memory for
-+ ifa_data. */
-+ int result = 0;
-+
-+ if (ifap)
-+ *ifap = NULL;
-+
-+ if (! __no_netlink_support && netlink_open (&nh) < 0)
-+ {
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ __no_netlink_support = 1;
-+#else
-+ return -1;
-+#endif
-+ }
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ if (__no_netlink_support)
-+ return fallback_getifaddrs (ifap);
-+#endif
-+
-+ /* Tell the kernel that we wish to get a list of all
-+ active interfaces. */
-+ if (netlink_sendreq (&nh, RTM_GETLINK) < 0)
-+ {
-+ result = -1;
-+ goto exit_close;
-+ }
-+ /* Collect all data for every interface. */
-+ if (netlink_receive (&nh) < 0)
-+ {
-+ result = -1;
-+ goto exit_free;
-+ }
-+
-+
-+ /* Now ask the kernel for all addresses which are assigned
-+ to an interface. Since we store the addresses after the
-+ interfaces in the list, we will later always find the
-+ interface before the corresponding addresses. */
-+ ++nh.seq;
-+ if (netlink_sendreq (&nh, RTM_GETADDR) < 0
-+ /* Collect all data for every interface. */
-+ || netlink_receive (&nh) < 0)
-+ {
-+ result = -1;
-+ goto exit_free;
-+ }
-+
-+ /* Count all RTM_NEWLINK and RTM_NEWADDR entries to allocate
-+ enough memory. */
-+ newlink = newaddr = 0;
-+ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
-+ {
-+ struct nlmsghdr *nlh;
-+ size_t size = nlp->size;
-+
-+ if (nlp->nlh == NULL)
-+ continue;
-+
-+ /* Walk through all entries we got from the kernel and look, which
-+ message type they contain. */
-+ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
-+ {
-+ /* check if the message is what we want */
-+ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
-+ continue;
-+
-+ if (nlh->nlmsg_type == NLMSG_DONE)
-+ break; /* ok */
-+
-+ if (nlh->nlmsg_type == RTM_NEWLINK)
-+ {
-+ /* A RTM_NEWLINK message can have IFLA_STATS data. We need to
-+ know the size before creating the list to allocate enough
-+ memory. */
-+ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFLA_RTA (ifim);
-+ size_t rtasize = IFLA_PAYLOAD (nlh);
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ if (rta->rta_type == IFLA_STATS)
-+ {
-+ ifa_data_size += rta_payload;
-+ break;
-+ }
-+ else
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+ ++newlink;
-+ }
-+ else if (nlh->nlmsg_type == RTM_NEWADDR)
-+ ++newaddr;
-+ }
-+ }
-+
-+ /* Return if no interface is up. */
-+ if ((newlink + newaddr) == 0)
-+ goto exit_free;
-+
-+ /* Allocate memory for all entries we have and initialize next
-+ pointer. */
-+ ifas = (struct ifaddrs_storage *) calloc (1,
-+ (newlink + newaddr)
-+ * sizeof (struct ifaddrs_storage)
-+ + ifa_data_size);
-+ if (ifas == NULL)
-+ {
-+ result = -1;
-+ goto exit_free;
-+ }
-+
-+ /* Table for mapping kernel index to entry in our list. */
-+ map_newlink_data = alloca (newlink * sizeof (int));
-+ memset (map_newlink_data, '\xff', newlink * sizeof (int));
-+
-+ ifa_data_ptr = (char *) &ifas[newlink + newaddr];
-+ newaddr_idx = 0; /* Counter for newaddr index. */
-+
-+ /* Walk through the list of data we got from the kernel. */
-+ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
-+ {
-+ struct nlmsghdr *nlh;
-+ size_t size = nlp->size;
-+
-+ if (nlp->nlh == NULL)
-+ continue;
-+
-+ /* Walk through one message and look at the type: If it is our
-+ message, we need RTM_NEWLINK/RTM_NEWADDR and stop if we reach
-+ the end or we find the end marker (in this case we ignore the
-+ following data. */
-+ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
-+ {
-+ int ifa_index = 0;
-+
-+ /* Check if the message is the one we want */
-+ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
-+ continue;
-+
-+ if (nlh->nlmsg_type == NLMSG_DONE)
-+ break; /* ok */
-+
-+ if (nlh->nlmsg_type == RTM_NEWLINK)
-+ {
-+ /* We found a new interface. Now extract everything from the
-+ interface data we got and need. */
-+ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFLA_RTA (ifim);
-+ size_t rtasize = IFLA_PAYLOAD (nlh);
-+
-+ /* Interfaces are stored in the first "newlink" entries
-+ of our list, starting in the order as we got from the
-+ kernel. */
-+ ifa_index = map_newlink (ifim->ifi_index - 1, ifas,
-+ map_newlink_data, newlink);
-+ ifas[ifa_index].ifa.ifa_flags = ifim->ifi_flags;
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ char *rta_data = RTA_DATA (rta);
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ switch (rta->rta_type)
-+ {
-+ case IFLA_ADDRESS:
-+ if (rta_payload <= sizeof (ifas[ifa_index].addr))
-+ {
-+ ifas[ifa_index].addr.sl.sll_family = AF_PACKET;
-+ memcpy (ifas[ifa_index].addr.sl.sll_addr,
-+ (char *) rta_data, rta_payload);
-+ ifas[ifa_index].addr.sl.sll_halen = rta_payload;
-+ ifas[ifa_index].addr.sl.sll_ifindex
-+ = ifim->ifi_index;
-+ ifas[ifa_index].addr.sl.sll_hatype = ifim->ifi_type;
-+
-+ ifas[ifa_index].ifa.ifa_addr
-+ = &ifas[ifa_index].addr.sa;
-+ }
-+ break;
-+
-+ case IFLA_BROADCAST:
-+ if (rta_payload <= sizeof (ifas[ifa_index].broadaddr))
-+ {
-+ ifas[ifa_index].broadaddr.sl.sll_family = AF_PACKET;
-+ memcpy (ifas[ifa_index].broadaddr.sl.sll_addr,
-+ (char *) rta_data, rta_payload);
-+ ifas[ifa_index].broadaddr.sl.sll_halen = rta_payload;
-+ ifas[ifa_index].broadaddr.sl.sll_ifindex
-+ = ifim->ifi_index;
-+ ifas[ifa_index].broadaddr.sl.sll_hatype
-+ = ifim->ifi_type;
-+
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ }
-+ break;
-+
-+ case IFLA_IFNAME: /* Name of Interface */
-+ if ((rta_payload + 1) <= sizeof (ifas[ifa_index].name))
-+ {
-+ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
-+ *(char *) __mempcpy (ifas[ifa_index].name, rta_data,
-+ rta_payload) = '\0';
-+ }
-+ break;
-+
-+ case IFLA_STATS: /* Statistics of Interface */
-+ ifas[ifa_index].ifa.ifa_data = ifa_data_ptr;
-+ ifa_data_ptr += rta_payload;
-+ memcpy (ifas[ifa_index].ifa.ifa_data, rta_data,
-+ rta_payload);
-+ break;
-+
-+ case IFLA_UNSPEC:
-+ break;
-+ case IFLA_MTU:
-+ break;
-+ case IFLA_LINK:
-+ break;
-+ case IFLA_QDISC:
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+ }
-+ else if (nlh->nlmsg_type == RTM_NEWADDR)
-+ {
-+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFA_RTA (ifam);
-+ size_t rtasize = IFA_PAYLOAD (nlh);
-+
-+ /* New Addresses are stored in the order we got them from
-+ the kernel after the interfaces. Theoretically it is possible
-+ that we have holes in the interface part of the list,
-+ but we always have already the interface for this address. */
-+ ifa_index = newlink + newaddr_idx;
-+ ifas[ifa_index].ifa.ifa_flags
-+ = ifas[map_newlink (ifam->ifa_index - 1, ifas,
-+ map_newlink_data, newlink)].ifa.ifa_flags;
-+ if (ifa_index > 0)
-+ ifas[ifa_index - 1].ifa.ifa_next = &ifas[ifa_index].ifa;
-+ ++newaddr_idx;
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ char *rta_data = RTA_DATA (rta);
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ switch (rta->rta_type)
-+ {
-+ case IFA_ADDRESS:
-+ {
-+ struct sockaddr *sa;
-+
-+ if (ifas[ifa_index].ifa.ifa_addr != NULL)
-+ {
-+ /* In a point-to-poing network IFA_ADDRESS
-+ contains the destination address, local
-+ address is supplied in IFA_LOCAL attribute.
-+ destination address and broadcast address
-+ are stored in an union, so it doesn't matter
-+ which name we use. */
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ sa = &ifas[ifa_index].broadaddr.sa;
-+ }
-+ else
-+ {
-+ ifas[ifa_index].ifa.ifa_addr
-+ = &ifas[ifa_index].addr.sa;
-+ sa = &ifas[ifa_index].addr.sa;
-+ }
-+
-+ sa->sa_family = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ /* Size must match that of an address for IPv4. */
-+ if (rta_payload == 4)
-+ memcpy (&((struct sockaddr_in *) sa)->sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ /* Size must match that of an address for IPv6. */
-+ if (rta_payload == 16)
-+ {
-+ memcpy (&((struct sockaddr_in6 *) sa)->sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data)
-+ || IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ((struct sockaddr_in6 *) sa)->sin6_scope_id
-+ = ifam->ifa_scope;
-+ }
-+ break;
-+
-+ default:
-+ if (rta_payload <= sizeof (ifas[ifa_index].addr))
-+ memcpy (sa->sa_data, rta_data, rta_payload);
-+ break;
-+ }
-+ }
-+ break;
-+
-+ case IFA_LOCAL:
-+ if (ifas[ifa_index].ifa.ifa_addr != NULL)
-+ {
-+ /* If ifa_addr is set and we get IFA_LOCAL,
-+ assume we have a point-to-point network.
-+ Move address to correct field. */
-+ ifas[ifa_index].broadaddr = ifas[ifa_index].addr;
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ memset (&ifas[ifa_index].addr, '\0',
-+ sizeof (ifas[ifa_index].addr));
-+ }
-+
-+ ifas[ifa_index].ifa.ifa_addr = &ifas[ifa_index].addr.sa;
-+ ifas[ifa_index].ifa.ifa_addr->sa_family
-+ = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ /* Size must match that of an address for IPv4. */
-+ if (rta_payload == 4)
-+ memcpy (&ifas[ifa_index].addr.s4.sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ /* Size must match that of an address for IPv6. */
-+ if (rta_payload == 16)
-+ {
-+ memcpy (&ifas[ifa_index].addr.s6.sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data) ||
-+ IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ifas[ifa_index].addr.s6.sin6_scope_id =
-+ ifam->ifa_scope;
-+ }
-+ break;
-+
-+ default:
-+ if (rta_payload <= sizeof (ifas[ifa_index].addr))
-+ memcpy (ifas[ifa_index].addr.sa.sa_data,
-+ rta_data, rta_payload);
-+ break;
-+ }
-+ break;
-+
-+ case IFA_BROADCAST:
-+ /* We get IFA_BROADCAST, so IFA_LOCAL was too much. */
-+ if (ifas[ifa_index].ifa.ifa_broadaddr != NULL)
-+ memset (&ifas[ifa_index].broadaddr, '\0',
-+ sizeof (ifas[ifa_index].broadaddr));
-+
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ ifas[ifa_index].ifa.ifa_broadaddr->sa_family
-+ = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ /* Size must match that of an address for IPv4. */
-+ if (rta_payload == 4)
-+ memcpy (&ifas[ifa_index].broadaddr.s4.sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ /* Size must match that of an address for IPv6. */
-+ if (rta_payload == 16)
-+ {
-+ memcpy (&ifas[ifa_index].broadaddr.s6.sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data)
-+ || IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ifas[ifa_index].broadaddr.s6.sin6_scope_id
-+ = ifam->ifa_scope;
-+ }
-+ break;
-+
-+ default:
-+ if (rta_payload <= sizeof (ifas[ifa_index].addr))
-+ memcpy (&ifas[ifa_index].broadaddr.sa.sa_data,
-+ rta_data, rta_payload);
-+ break;
-+ }
-+ break;
-+
-+ case IFA_LABEL:
-+ if (rta_payload + 1 <= sizeof (ifas[ifa_index].name))
-+ {
-+ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
-+ *(char *) __mempcpy (ifas[ifa_index].name, rta_data,
-+ rta_payload) = '\0';
-+ }
-+ else
-+ abort ();
-+ break;
-+
-+ case IFA_UNSPEC:
-+ break;
-+ case IFA_CACHEINFO:
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+
-+ /* If we didn't get the interface name with the
-+ address, use the name from the interface entry. */
-+ if (ifas[ifa_index].ifa.ifa_name == NULL)
-+ ifas[ifa_index].ifa.ifa_name
-+ = ifas[map_newlink (ifam->ifa_index - 1, ifas,
-+ map_newlink_data, newlink)].ifa.ifa_name;
-+
-+ /* Calculate the netmask. */
-+ if (ifas[ifa_index].ifa.ifa_addr
-+ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_UNSPEC
-+ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_PACKET)
-+ {
-+ uint32_t max_prefixlen = 0;
-+ char *cp = NULL;
-+
-+ ifas[ifa_index].ifa.ifa_netmask
-+ = &ifas[ifa_index].netmask.sa;
-+
-+ switch (ifas[ifa_index].ifa.ifa_addr->sa_family)
-+ {
-+ case AF_INET:
-+ cp = (char *) &ifas[ifa_index].netmask.s4.sin_addr;
-+ max_prefixlen = 32;
-+ break;
-+
-+ case AF_INET6:
-+ cp = (char *) &ifas[ifa_index].netmask.s6.sin6_addr;
-+ max_prefixlen = 128;
-+ break;
-+ }
-+
-+ ifas[ifa_index].ifa.ifa_netmask->sa_family
-+ = ifas[ifa_index].ifa.ifa_addr->sa_family;
-+
-+ if (cp != NULL)
-+ {
-+ char c;
-+ unsigned int preflen;
-+
-+ if ((max_prefixlen > 0) &&
-+ (ifam->ifa_prefixlen > max_prefixlen))
-+ preflen = max_prefixlen;
-+ else
-+ preflen = ifam->ifa_prefixlen;
-+
-+ for (i = 0; i < (preflen / 8); i++)
-+ *cp++ = 0xff;
-+ c = 0xff;
-+ c <<= (8 - (preflen % 8));
-+ *cp = c;
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ assert (ifa_data_ptr <= (char *) &ifas[newlink + newaddr] + ifa_data_size);
-+
-+ if (newaddr_idx > 0)
-+ {
-+ for (i = 0; i < newlink; ++i)
-+ if (map_newlink_data[i] == -1)
-+ {
-+ /* We have fewer links then we anticipated. Adjust the
-+ forward pointer to the first address entry. */
-+ ifas[i - 1].ifa.ifa_next = &ifas[newlink].ifa;
-+ }
-+
-+ if (i == 0 && newlink > 0)
-+ /* No valid link, but we allocated memory. We have to
-+ populate the first entry. */
-+ memmove (ifas, &ifas[newlink], sizeof (struct ifaddrs_storage));
-+ }
-+
-+ if (ifap != NULL)
-+ *ifap = &ifas[0].ifa;
-+
-+ exit_free:
-+ free_netlink_handle (&nh);
-+
-+ exit_close:
-+ netlink_close (&nh);
-+
-+ return result;
-+}
-+libc_hidden_def (getifaddrs)
-+
-+
-+#if __ASSUME_NETLINK_SUPPORT != 0
-+void
-+freeifaddrs (struct ifaddrs *ifa)
-+{
-+ free (ifa);
-+}
-+libc_hidden_def (freeifaddrs)
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.c 2003-06-13 17:02:28.000000000 -0400
-@@ -0,0 +1,100 @@
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Jaeger <aj@suse.de>.
-+
-+ 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 "ifreq.h"
-+
-+/* Variable to signal whether SIOCGIFCONF is not available. */
-+#if __ASSUME_SIOCGIFNAME == 0 || 1
-+static int old_siocgifconf;
-+#else
-+# define old_siocgifconf 0
-+#endif
-+
-+
-+void
-+__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
-+{
-+ int fd = sockfd;
-+ struct ifconf ifc;
-+ int rq_len;
-+ int nifs;
-+# define RQ_IFS 4
-+
-+ if (fd < 0)
-+ fd = __opensock ();
-+ if (fd < 0)
-+ {
-+ *num_ifs = 0;
-+ *ifreqs = NULL;
-+ return;
-+ }
-+
-+ ifc.ifc_buf = NULL;
-+
-+ /* We may be able to get the needed buffer size directly, rather than
-+ guessing. */
-+ if (! old_siocgifconf)
-+ {
-+ ifc.ifc_buf = NULL;
-+ ifc.ifc_len = 0;
-+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
-+ {
-+# if __ASSUME_SIOCGIFNAME == 0
-+ old_siocgifconf = 1;
-+# endif
-+ rq_len = RQ_IFS * sizeof (struct ifreq);
-+ }
-+ else
-+ rq_len = ifc.ifc_len;
-+ }
-+ else
-+ rq_len = RQ_IFS * sizeof (struct ifreq);
-+
-+ /* Read all the interfaces out of the kernel. */
-+ while (1)
-+ {
-+ ifc.ifc_len = rq_len;
-+ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
-+ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-+ {
-+ if (ifc.ifc_buf)
-+ free (ifc.ifc_buf);
-+
-+ if (fd != sockfd)
-+ __close (fd);
-+
-+ *num_ifs = 0;
-+ *ifreqs = NULL;
-+ return;
-+ }
-+
-+ if (!old_siocgifconf || ifc.ifc_len < rq_len)
-+ break;
-+
-+ rq_len *= 2;
-+ }
-+
-+ nifs = ifc.ifc_len / sizeof (struct ifreq);
-+
-+ if (fd != sockfd)
-+ __close (fd);
-+
-+ *num_ifs = nifs;
-+ *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.h 2002-09-20 20:28:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.h 2003-08-21 08:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>.
-
-@@ -25,85 +25,8 @@
- #include <sys/ioctl.h>
- #include "kernel-features.h"
-
--/* Variable to signal whether SIOCGIFCONF is not available. */
--#if __ASSUME_SIOCGIFNAME == 0 || 1
--static int old_siocgifconf;
--#else
--# define old_siocgifconf 0
--#endif
-
--
--static inline void
--__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
--{
-- int fd = sockfd;
-- struct ifconf ifc;
-- int rq_len;
-- int nifs;
--# define RQ_IFS 4
--
-- if (fd < 0)
-- fd = __opensock ();
-- if (fd < 0)
-- {
-- *num_ifs = 0;
-- *ifreqs = NULL;
-- return;
-- }
--
-- ifc.ifc_buf = NULL;
--
-- /* We may be able to get the needed buffer size directly, rather than
-- guessing. */
-- if (! old_siocgifconf)
-- {
-- ifc.ifc_buf = NULL;
-- ifc.ifc_len = 0;
-- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
-- {
--# if __ASSUME_SIOCGIFNAME == 0
-- old_siocgifconf = 1;
--# endif
-- rq_len = RQ_IFS * sizeof (struct ifreq);
-- }
-- else
-- rq_len = ifc.ifc_len;
-- }
-- else
-- rq_len = RQ_IFS * sizeof (struct ifreq);
--
-- /* Read all the interfaces out of the kernel. */
-- while (1)
-- {
-- ifc.ifc_len = rq_len;
-- ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
-- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-- {
-- if (ifc.ifc_buf)
-- free (ifc.ifc_buf);
--
-- if (fd != sockfd)
-- __close (fd);
--
-- *num_ifs = 0;
-- *ifreqs = NULL;
-- return;
-- }
--
-- if (!old_siocgifconf || ifc.ifc_len < rq_len)
-- break;
--
-- rq_len *= 2;
-- }
--
-- nifs = ifc.ifc_len / sizeof (struct ifreq);
--
-- if (fd != sockfd)
-- __close (fd);
--
-- *num_ifs = nifs;
-- *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
--}
-+extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd);
-
- static inline struct ifreq *
- __if_nextreq (struct ifreq *ifr)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/init-first.c 2002-12-02 17:36:59.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/init-first.c 2003-08-21 08:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Initialization code run first thing by the ELF startup code. Linux version.
-- Copyright (C) 1995-1999,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999,2000,01,02,03 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 @@
- #include <ldsodefs.h>
-
- /* The function is called from assembly stubs the compiler can't see. */
--static void init (int, char **, char **) __attribute__ ((unused));
-+static void init (int, char **, char **) __attribute__ ((used));
-
- /* Set nonzero if we have to be prepared for more then one libc being
- used in the process. Safe assumption if initializer never runs. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/internal_statvfs.c 2002-09-21 01:36:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/internal_statvfs.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -17,28 +17,46 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
-+#include <mntent.h>
-+#include <paths.h>
-+#include <stdbool.h>
-+#include <stdio_ext.h>
-+#include <string.h>
-+#include <sys/mount.h>
-+#include <sys/stat.h>
-+#include <sys/statfs.h>
-+#include <sys/statvfs.h>
-+#include "linux_fsinfo.h"
-+
-+
-+void
-+__internal_statvfs (const char *name, struct statvfs *buf,
-+ struct statfs *fsbuf, struct stat64 *st)
-+{
- /* Now fill in the fields we have information for. */
-- buf->f_bsize = fsbuf.f_bsize;
-- /* Linux does not support f_frsize, so set it to the full block size. */
-- buf->f_frsize = fsbuf.f_bsize;
-- buf->f_blocks = fsbuf.f_blocks;
-- buf->f_bfree = fsbuf.f_bfree;
-- buf->f_bavail = fsbuf.f_bavail;
-- buf->f_files = fsbuf.f_files;
-- buf->f_ffree = fsbuf.f_ffree;
-- if (sizeof (buf->f_fsid) == sizeof (fsbuf.f_fsid))
-- buf->f_fsid = (fsbuf.f_fsid.__val[0]
-- | ((unsigned long int) fsbuf.f_fsid.__val[1]
-+ buf->f_bsize = fsbuf->f_bsize;
-+ /* Linux has the f_frsize size only in later version of the kernel.
-+ If the value is not filled in use f_bsize. */
-+ buf->f_frsize = fsbuf->f_frsize ?: fsbuf->f_bsize;
-+ buf->f_blocks = fsbuf->f_blocks;
-+ buf->f_bfree = fsbuf->f_bfree;
-+ buf->f_bavail = fsbuf->f_bavail;
-+ buf->f_files = fsbuf->f_files;
-+ buf->f_ffree = fsbuf->f_ffree;
-+ if (sizeof (buf->f_fsid) == sizeof (fsbuf->f_fsid))
-+ buf->f_fsid = (fsbuf->f_fsid.__val[0]
-+ | ((unsigned long int) fsbuf->f_fsid.__val[1]
- << (8 * (sizeof (buf->f_fsid)
-- - sizeof (fsbuf.f_fsid.__val[0])))));
-+ - sizeof (fsbuf->f_fsid.__val[0])))));
- else
- /* We cannot help here. The statvfs element is not large enough to
- contain both words of the statfs f_fsid field. */
-- buf->f_fsid = fsbuf.f_fsid.__val[0];
-+ buf->f_fsid = fsbuf->f_fsid.__val[0];
- #ifdef _STATVFSBUF_F_UNUSED
- buf->__f_unused = 0;
- #endif
-- buf->f_namemax = fsbuf.f_namelen;
-+ buf->f_namemax = fsbuf->f_namelen;
- memset (buf->__f_spare, '\0', 6 * sizeof (int));
-
- /* What remains to do is to fill the fields f_favail and f_flag. */
-@@ -51,10 +69,40 @@
- file. The way we can test for matching filesystem is using the
- device number. */
- buf->f_flag = 0;
-- if (STAT (&st) >= 0)
-+ if (st != NULL)
- {
- struct mntent mntbuf;
- FILE *mtab;
-+ const char *fsname = NULL;
-+ const char *fsname2 = NULL;
-+ bool success = false;
-+
-+ /* Map the filesystem type we got from the statfs call to a string. */
-+ switch (fsbuf->f_type)
-+ {
-+ case EXT2_SUPER_MAGIC:
-+ fsname = "ext3";
-+ fsname2 = "ext2";
-+ break;
-+ case DEVPTS_SUPER_MAGIC:
-+ fsname= "devpts";
-+ break;
-+ case SHMFS_SUPER_MAGIC:
-+ fsname = "tmpfs";
-+ break;
-+ case PROC_SUPER_MAGIC:
-+ fsname = "proc";
-+ break;
-+ case USBDEVFS_SUPER_MAGIC:
-+ fsname = "usbdevfs";
-+ break;
-+ case AUTOFS_SUPER_MAGIC:
-+ fsname = "autofs";
-+ break;
-+ case NFS_SUPER_MAGIC:
-+ fsname = "nfs";
-+ break;
-+ }
-
- mtab = __setmntent ("/proc/mounts", "r");
- if (mtab == NULL)
-@@ -67,13 +115,25 @@
- /* No locking needed. */
- (void) __fsetlocking (mtab, FSETLOCKING_BYCALLER);
-
-+ again:
- while (__getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
- {
-- struct stat64 fsst;
-+ /* In a first round we look for a given mount point, if
-+ we have a name. */
-+ if (name != NULL && strcmp (name, mntbuf.mnt_dir) != 0)
-+ continue;
-+ /* We need to look at the entry only if the filesystem
-+ name matches. If we have a filesystem name. */
-+ else if (fsname != NULL
-+ && strcmp (fsname, mntbuf.mnt_type) != 0
-+ && (fsname2 == NULL
-+ || strcmp (fsname2, mntbuf.mnt_type) != 0))
-+ continue;
-
- /* Find out about the device the current entry is for. */
-+ struct stat64 fsst;
- if (stat64 (mntbuf.mnt_dir, &fsst) >= 0
-- && st.st_dev == fsst.st_dev)
-+ && st->st_dev == fsst.st_dev)
- {
- /* Bingo, we found the entry for the device FD is on.
- Now interpret the option string. */
-@@ -99,11 +159,34 @@
- buf->f_flag |= ST_NODIRATIME;
-
- /* We can stop looking for more entries. */
-+ success = true;
- break;
- }
- }
-+ /* Maybe the kernel names for the filesystems changed or the
-+ statvfs call got a name which was not the mount point.
-+ Check again, this time without checking for name matches
-+ first. */
-+ if (! success)
-+ {
-+ if (name != NULL)
-+ /* Try without a mount point name. */
-+ name = NULL;
-+ else if (fsname != NULL)
-+ /* Try without a filesystem name. */
-+ fsname = fsname2 = NULL;
-+
-+ /* It is not strictly allowed to use rewind here. But
-+ this code is part of the implementation so it is
-+ acceptable. */
-+ rewind (mtab);
-+
-+ goto again;
-+ }
-
- /* Close the file. */
- __endmntent (mtab);
-+
- }
- }
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ipc_priv.h 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ipc_priv.h 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1999, 2000, 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
-@@ -32,18 +32,11 @@
- };
-
-
--__BEGIN_DECLS
--
--/* The actual system call: all functions are multiplexed by this. */
--extern int __syscall_ipc (int __call, int __first, int __second,
-- int __third, void *__ptr);
--
--__END_DECLS
--
--/* The codes for the functions to use the multiplexer `__syscall_ipc'. */
-+/* The codes for the functions to use the ipc syscall multiplexer. */
- #define IPCOP_semop 1
- #define IPCOP_semget 2
- #define IPCOP_semctl 3
-+#define IPCOP_semtimedop 4
- #define IPCOP_msgsnd 11
- #define IPCOP_msgrcv 12
- #define IPCOP_msgget 13
---- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-02-20 17:11:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-08-21 08:37:12.000000000 -0400
-@@ -1,6 +1,6 @@
- /* Set flags signalling availability of kernel features based on given
- kernel version number.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 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
-@@ -127,16 +127,25 @@
- # define __ASSUME_SETRESUID_SYSCALL 1
- #endif
-
-+#if __LINUX_KERNEL_VERSION >= 131879
-+# define __ASSUME_SETRESGID_SYSCALL 1
-+#endif
-+
- /* Linux 2.3.39 introduced IPC64. Except for powerpc. */
- #if __LINUX_KERNEL_VERSION >= 131879 && !defined __powerpc__
- # define __ASSUME_IPC64 1
- #endif
-
--/* mips platforms had IPC64 all along. */
-+/* MIPS platforms had IPC64 all along. */
- #if defined __mips__
- # define __ASSUME_IPC64 1
- #endif
-
-+/* We can use the LDTs for threading with Linux 2.3.99 and newer. */
-+#if __LINUX_KERNEL_VERSION >= 131939
-+# define __ASSUME_LDT_WORKS 1
-+#endif
-+
- /* Linux 2.4.0 on PPC introduced a correct IPC64. But PowerPC64 does not
- support a separate 64-bit sys call, already 64-bit */
- #if __LINUX_KERNEL_VERSION >= 132096 && defined __powerpc__ \
-@@ -144,15 +153,18 @@
- # define __ASSUME_IPC64 1
- #endif
-
--/* We can use the LDTs for threading with Linux 2.3.99 and newer. */
--#if __LINUX_KERNEL_VERSION >= 131939
--# define __ASSUME_LDT_WORKS 1
-+/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */
-+#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__
-+# define __ASSUME_TRUNCATE64_SYSCALL 1
-+# define __ASSUME_MMAP2_SYSCALL 1
-+# define __ASSUME_STAT64_SYSCALL 1
- #endif
-
- /* The changed st_ino field appeared in 2.4.0-test6. But we cannot
- distinguish this version from other 2.4.0 releases. Therefore play
-- save and assume it available is for 2.4.1 and up. */
--#if __LINUX_KERNEL_VERSION >= 132097
-+ save and assume it available is for 2.4.1 and up. However, SH is lame,
-+ and still does not have a 64-bit inode field. */
-+#if __LINUX_KERNEL_VERSION >= 132097 && !defined __alpha__ && !defined __sh__
- # define __ASSUME_ST_INO_64_BIT 1
- #endif
-
-@@ -163,6 +175,12 @@
- # define __ASSUME_FCNTL64 1
- #endif
-
-+/* The AT_CLKTCK auxiliary vector entry was introduction in the 2.4.0
-+ series. */
-+#if __LINUX_KERNEL_VERSION >= 132097
-+# define __ASSUME_AT_CLKTCK 1
-+#endif
-+
- /* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I
- don't know when it got introduced). But PowerPC64 does not support
- separate FCNTL64 call, FCNTL is already 64-bit */
-@@ -216,6 +234,12 @@
- # define __ASSUME_NEW_PRCTL_SYSCALL 1
- #endif
-
-+/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected. */
-+#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \
-+ && !defined __powerpc64__
-+# define __ASSUME_FIXED_CLONE_SYSCALL 1
-+#endif
-+
- /* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall.
- The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn
- to be used in the set/swapcontext implementation. */
-@@ -229,8 +253,8 @@
- # define __ASSUME_SET_THREAD_AREA_SYSCALL 1
- #endif
-
--/* The vfork syscall on x86 was definitely available in 2.4. */
--#if __LINUX_KERNEL_VERSION >= 132097 && defined __i386__
-+/* The vfork syscall on x86 and arm was definitely available in 2.4. */
-+#if __LINUX_KERNEL_VERSION >= 132097 && (defined __i386__ || defined __arm__)
- # define __ASSUME_VFORK_SYSCALL 1
- #endif
-
-@@ -248,6 +272,15 @@
- # define __ASSUME_GETDENTS64_SYSCALL 1
- #endif
-
-+/* Alpha switched to a 64-bit timeval sometime before 2.2.0. */
-+#if __LINUX_KERNEL_VERSION >= 131584 && defined __alpha__
-+# define __ASSUME_TIMEVAL64 1
-+#endif
-+
-+#if defined __mips__ && defined _ABIN32 && _MIPS_SIM == _ABIN32
-+# define __ASSUME_FCNTL64 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.
-@@ -264,3 +297,79 @@
- # define __ASSUME_FCNTL64 1
- # define __ASSUME_VFORK_SYSCALL 1
- #endif
-+
-+/* Beginning with 2.5.63 support for realtime and monotonic clocks and
-+ timers based on them is available. */
-+#if __LINUX_KERNEL_VERSION >= 132415
-+# define __ASSUME_POSIX_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.
-+ For ia64, s390*, PPC we pick 2.5.64 as the first version with support. */
-+#if __LINUX_KERNEL_VERSION >= 132416 \
-+ && (defined __ia64__ || defined __s390__ || defined __powerpc__)
-+# define __ASSUME_CLONE_THREAD_FLAGS 1
-+#endif
-+
-+/* With kernel 2.4.17 we always have netlink support. */
-+#if __LINUX_KERNEL_VERSION >= (132096+17)
-+# define __ASSUME_NETLINK_SUPPORT 1
-+#endif
-+
-+/* For x86, support for the sysenter instruction was available in
-+ 2.5.53. But the unwind information was added only in 2.5.69. */
-+#if __LINUX_KERNEL_VERSION >= 132421 && defined __i386__
-+# define __ASSUME_VSYSCALL 1
-+#endif
-+
-+/* The requeue futex functionality was introduced in 2.5.70. */
-+#if __LINUX_KERNEL_VERSION >= 132422
-+# define __ASSUME_FUTEX_REQUEUE 1
-+#endif
-+
-+/* The statfs64 syscalls are available in 2.5.74. */
-+#if __LINUX_KERNEL_VERSION >= 132426
-+# define __ASSUME_STATFS64 1
-+#endif
-+
-+/* Starting with at least 2.5.74 the kernel passes the setuid-like exec
-+ flag unconditionally up to the child. */
-+#if __LINUX_KERNEL_VERSION >= 132426
-+# define __ASSUME_AT_SECURE 1
-+#endif
-+
-+/* Starting with the 2.5.75 kernel the kernel fills in the correct value
-+ in the si_pid field passed as part of the siginfo_t struct to signal
-+ handlers. */
-+#if __LINUX_KERNEL_VERSION >= 132427
-+# define __ASSUME_CORRECT_SI_PID 1
-+#endif
-+
-+/* The tgkill syscall was instroduced for i386 in 2.5.75. For Alpha
-+ it was introduced in 2.6.0-test1 which unfortunately cannot be
-+ distinguished from 2.6.0. */
-+#if (__LINUX_KERNEL_VERSION >= 132427 && defined __i386__) \
-+ || (__LINUX_KERNEL_VERSION >= 132609 && defined __alpha__)
-+# define __ASSUME_TGKILL 1
-+#endif
-+
-+/* The utimes syscall has been available for some architectures
-+ forever. For x86 it was introduced after 2.5.75. */
-+#if defined __alpha__ || defined __ia64__ || defined __hppa__ \
-+ || defined __sparc__ \
-+ || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__)
-+# define __ASSUME_UTIMES 1
-+#endif
-+
-+/* The CLONE_STOPPED flag was introduced in the 2.6.0-test1 series. */
-+#if __LINUX_KERNEL_VERSION >= 132609
-+# define __ASSUME_CLONE_STOPPED 1
-+#endif
-+
-+/* The fixed version of the posix_fadvise64 syscall appeared in
-+ 2.6.0-test3. At least for x86. */
-+#if __LINUX_KERNEL_VERSION >= 132609 && defined __i386__
-+# define __ASSUME_FADVISE64_64_SYSCALL 1
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ldsodefs.h 2002-07-20 13:30:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ldsodefs.h 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Run-time dynamic linker data structures for loaded ELF shared objects.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -41,6 +41,12 @@
- # define HAVE_AUX_XID
- #endif
-
-+/* We can assume that the kernel always provides the AT_SECURE value
-+ in the auxiliary vector from 2.5.74 or so on. */
-+#if __ASSUME_AT_SECURE
-+# define HAVE_AUX_SECURE
-+#endif
-+
- /* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
- up the page size information. */
- #if __ASSUME_AT_PAGESIZE
---- glibc-2.3.2/sysdeps/unix/sysv/linux/libc_fatal.c 2002-12-15 05:49:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/libc_fatal.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1994,1995,1997,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993-1995,1997,2000,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
-@@ -37,13 +37,15 @@
-
- while (len > 0)
- {
-- ssize_t count = INLINE_SYSCALL (write, 3, STDERR_FILENO, message, len);
-- if (count > 0)
-+ INTERNAL_SYSCALL_DECL (err);
-+ ssize_t count = INTERNAL_SYSCALL (write, err, 3, STDERR_FILENO,
-+ message, len);
-+ if (! INTERNAL_SYSCALL_ERROR_P (count, err))
- {
- message += count;
- len -= count;
- }
-- else if (count < 0 && errno != EINTR)
-+ else if (INTERNAL_SYSCALL_ERRNO (count, err) != EINTR)
- break;
- }
-
-@@ -55,3 +57,4 @@
- /* Try for ever and ever. */
- ABORT_INSTRUCTION;
- }
-+libc_hidden_def (__libc_fatal)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h 2002-10-23 02:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Constants from kernel header for various FSes.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,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
-@@ -31,6 +31,9 @@
- /* Constants that identify the `affs' filesystem. */
- #define AFFS_SUPER_MAGIC 0xadff
-
-+/* Constants that identify the `autofs' filesystem. */
-+#define AUTOFS_SUPER_MAGIC 0x187
-+
- /* Constants that identify the `bfs' filesystem. */
- #define BFS_MAGIC 0x1BADFACE
-
-@@ -40,6 +43,9 @@
- /* Constants that identify the `coherent' filesystem. */
- #define COH_SUPER_MAGIC 0x012ff7b7
-
-+/* Constant that identifies the `ramfs' filesystem. */
-+#define CRAMFS_MAGIC 0x28cd3d45
-+
- /* Constant that identifies the `devfs' filesystem. */
- #define DEVFS_SUPER_MAGIC 0x1373
-
-@@ -48,6 +54,7 @@
-
- /* Constant that identifies the `efs' filesystem. */
- #define EFS_SUPER_MAGIC 0x414A53
-+#define EFS_MAGIC 0x072959
-
- /* Constant that identifies the `ext2' and `ext3' filesystems. */
- #define EXT2_SUPER_MAGIC 0xef53
-@@ -90,6 +97,9 @@
- /* Constants that identify the `proc' filesystem. */
- #define PROC_SUPER_MAGIC 0x9fa0
-
-+/* Constant that identifies the `usbdevfs' filesystem. */
-+#define USBDEVFS_SUPER_MAGIC 0x9fa2
-+
- /* Constants that identify the `qnx4' filesystem. */
- #define QNX4_SUPER_MAGIC 0x002f
-
-@@ -122,6 +132,9 @@
- /* Constants that identify the `xfs' filesystem. */
- #define XFS_SUPER_MAGIC 0x58465342
-
-+/* Constants that identify the `vxfs' filesystem. */
-+#define VXFS_SUPER_MAGIC 0xa501fcf5
-+
- /* Maximum link counts. */
- #define COH_LINK_MAX 10000
- #define EXT2_LINK_MAX 32000
---- glibc-2.3.2/sysdeps/unix/sysv/linux/llseek.c 2002-12-15 00:38:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/llseek.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Long-long seek operation.
-- Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2000,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
-@@ -20,12 +20,9 @@
- #include <errno.h>
- #include <sys/types.h>
-
--#include <sysdep-cancel.h>
-+#include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall__llseek (int fd, off_t offset_hi, off_t offset_lo,
-- loff_t *__unbounded result, int whence);
--
- /* Seek to OFFSET on FD, starting from WHENCE. */
- extern loff_t __llseek (int fd, loff_t offset, int whence);
-
-@@ -34,20 +31,9 @@
- {
- loff_t retval;
-
-- if (SINGLE_THREAD_P)
-- return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
-- (off_t) (offset & 0xffffffff),
-- __ptrvalue (&retval), whence) ?: retval);
--
-- int oldtype = LIBC_CANCEL_ASYNC ();
--
-- int result = (loff_t) INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
-- (off_t) (offset & 0xffffffff),
-- __ptrvalue (&retval), whence);
--
-- LIBC_CANCEL_RESET (oldtype);
--
-- return (loff_t) result ?: retval;
-+ return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
-+ (off_t) (offset & 0xffffffff),
-+ __ptrvalue (&retval), whence) ?: retval);
- }
- weak_alias (__llseek, llseek)
- strong_alias (__llseek, __libc_lseek64)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat.c 2002-10-02 04:53:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* lxstat using old-style Unix lstat system call.
-- Copyright (C) 1991,1995-1998,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995-1998,2000,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
-@@ -30,10 +30,7 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--#include <xstatconv.c>
--
--extern int __syscall_lstat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- /* Get information about the file NAME in BUF. */
- int
-@@ -52,7 +49,7 @@
-
- result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat64.c 2002-10-11 14:58:50.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* lxstat64 using old-style Unix lstat system call.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -29,15 +29,10 @@
- #include "kernel-features.h"
-
- #if __ASSUME_STAT64_SYSCALL == 0
--# include <xstatconv.c>
-+# include <xstatconv.h>
- #endif
-
--extern int __syscall_lstat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
--
- #ifdef __NR_lstat64
--extern int __syscall_lstat64 (const char *__unbounded,
-- struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls. */
- extern int __have_no_stat64;
-@@ -79,7 +74,7 @@
- # endif
- result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat64_conv (vers, &kbuf, buf);
-+ result = __xstat64_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
-@@ -0,0 +1,3 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h 2003-02-20 15:33:25.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/stat.h 2003-01-05 05:46:50.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
-@@ -132,6 +132,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/chown.c 2002-08-02 17:46:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/chown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -26,13 +26,7 @@
- #include <linux/posix_types.h>
- #include "kernel-features.h"
-
--extern int __syscall_chown (const char *__unbounded __file,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- #ifdef __NR_chown32
--extern int __syscall_chown32 (const char *__unbounded __file,
-- __kernel_uid32_t owner, __kernel_gid32_t group);
--
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/semtimedop.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/semtimedop.S 2003-04-27 13:08:00.000000000 -0400
-@@ -0,0 +1,60 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Schwab <schwab@suse.de>, 2003.
-+
-+ 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 SYSOP_semtimedop 4
-+
-+#define SVRSP 8 /* saved register space */
-+#define PARMS 4+SVRSP /* space for 3 saved regs */
-+#define SEMID PARMS
-+#define SOPS SEMID+4
-+#define NSOPS SOPS+4
-+#define TIMEOUT NSOPS+4
-+
-+ .text
-+ENTRY (semtimedop)
-+
-+ /* Save registers. */
-+ move.l %d2, %a1
-+ move.l %d3, -(%sp)
-+ move.l %d5, -(%sp)
-+
-+ move.l #SYSOP_semtimedop, %d1
-+ move.l SEMID(%sp), %d2
-+ move.l NSOPS(%sp), %d3
-+ move.l SOPS(%sp), %d5
-+ move.l TIMEOUT(%sp), %a0
-+ move.l #SYS_ify (ipc), %d0
-+
-+ trap #0
-+
-+ /* Restore registers. */
-+ move.l (%sp)+, %d5
-+ move.l (%sp)+, %d3
-+ move.l %a1, %d2
-+
-+ /* Check for error. */
-+ tst.l %d0
-+ jmi SYSCALL_ERROR_LABEL
-+
-+ /* Successful; return the syscall's value. */
-+ ret
-+
-+PSEUDO_END (semtimedop)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h 2003-04-12 11:39:50.000000000 -0400
-@@ -68,6 +68,18 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
- #ifdef PIC
- # if RTLD_PRIVATE_ERRNO
- # define SYSCALL_ERROR_HANDLER \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile 2002-03-28 18:41:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile 2003-09-19 22:37:10.000000000 -0400
-@@ -1,6 +1,4 @@
- ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
- #sysdep_routines += sigsuspend
- endif
-
-@@ -8,4 +6,46 @@
- sysdep_routines += cachectl cacheflush sysmips _test_and_set
-
- sysdep_headers += sys/cachectl.h sys/sysmips.h sys/tas.h
-+
-+no_syscall_list_h = 1
-+
-+# Generate the list of SYS_* macros for the system calls (__NR_* macros).
-+# We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
-+# it exists, but also define SYS_<abi>_<syscall> for all ABIs.
-+$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h
-+ $(make-target-directory)
-+ { \
-+ echo '/* Generated at libc build time from kernel syscall list. */';\
-+ echo ''; \
-+ echo '#ifndef _SYSCALL_H'; \
-+ echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
-+ echo '#endif'; \
-+ echo ''; \
-+ rm -f $(@:.d=.h).newt; \
-+ $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \
-+ -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \
-+ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \
-+ > $(@:.d=.h).newt; \
-+ if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
-+ echo '#if defined _ABI64 && _MIPS_SIM == _ABI64'; \
-+ sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#elif defined _ABIN32 && _MIPS_SIM == _ABIN32'; \
-+ sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#else'; \
-+ sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#endif'; \
-+ sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt; \
-+ else \
-+ cat $(@:.d=.h).newt; \
-+ fi; \
-+ rm $(@:.d=.h).newt; \
-+ } > $(@:.d=.h).new
-+ mv -f $(@:.d=.h).new $(@:.d=.h)
-+ifneq (,$(objpfx))
-+ sed $(sed-remove-objpfx) $(@:.h=.d)-t > $(@:.h=.d)-t2
-+ rm -f $(@:.h=.d)-t
-+ mv -f $(@:.h=.d)-t2 $(@:.h=.d)
-+else
-+ mv -f $(@:.h=.d)-t $(@:.h=.d)
-+endif
- endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,6 @@
- /* O_*, F_*, FD_* bit values for Linux.
-- Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 2000, 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
-@@ -142,14 +143,20 @@
- #ifndef __USE_FILE_OFFSET64
- __off_t l_start; /* Offset where the lock begins. */
- __off_t l_len; /* Size of the locked area; zero means until EOF. */
-- long int l_sysid; /* XXX */
-+#if ! (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ /* The 64-bit flock structure, used by the n64 ABI, and for 64-bit
-+ fcntls in o32 and n32, never has this field. */
-+ long int l_sysid;
-+#endif
- #else
- __off64_t l_start; /* Offset where the lock begins. */
- __off64_t l_len; /* Size of the locked area; zero means until EOF. */
- #endif
- __pid_t l_pid; /* Process holding the lock. */
--#ifndef __USE_FILE_OFFSET64
-- long int pad[4]; /* XXX */
-+#if ! defined __USE_FILE_OFFSET64 && ! (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ /* The 64-bit flock structure, used by the n64 ABI, and for 64-bit
-+ flock in o32 and n32, never has this field. */
-+ long int pad[4];
- #endif
- } flock_t;
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/MIPS version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -59,6 +59,8 @@
- # define MAP_DENYWRITE 0x2000 /* ETXTBSY */
- # define MAP_EXECUTABLE 0x4000 /* mark it as an executable */
- # define MAP_LOCKED 0x8000 /* pages are locked */
-+# define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
-+# define MAP_NONBLOCK 0x20000 /* do not block on IO */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/shm.h 2002-12-20 05:29:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/shm.h 2003-08-21 08:37:13.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,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
-@@ -36,8 +36,7 @@
- #define SHM_UNLOCK 12 /* unlock segment (root only) */
-
- /* Segment low boundary address multiple. */
--#define SHMLBA (__getpagesize ())
--extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-+#define SHMLBA 0x40000
-
-
- /* Type to count number of attaches. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,6 @@
- /* The proper definitions for Linux/MIPS's sigaction.
-- Copyright (C) 1993,94,95,97,98,99,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 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
-@@ -49,7 +50,7 @@
- /* Restore handler. */
- void (*sa_restorer) (void);
-
--#if _MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2
-+#if _MIPS_SZPTR < 64
- int sa_resv[1];
- #endif
- };
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h 2003-04-13 07:36:32.000000000 -0400
-@@ -0,0 +1,103 @@
-+/* Copyright (C) 1996, 1997, 1998, 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. */
-+
-+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
-+# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
-+#endif
-+
-+#ifndef sigcontext_struct
-+/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
-+ we need sigcontext. */
-+# define sigcontext_struct sigcontext
-+
-+/* # include <asm/sigcontext.h> */
-+/* Instead of including the kernel header, that will vary depending on
-+ whether the 32- or the 64-bit kernel is installed, we paste the
-+ contents here. In case you're wondering about the different
-+ licenses, the fact that the file is pasted, instead of included,
-+ doesn't really make any difference for the program that includes
-+ this header. */
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 1996, 1997, 2000 by Ralf Baechle
-+ */
-+#ifndef _ASM_SIGCONTEXT_H
-+#define _ASM_SIGCONTEXT_H
-+
-+/*
-+ * Keep this struct definition in sync with the sigcontext fragment
-+ * in arch/mips/tools/offset.c
-+ */
-+struct sigcontext {
-+ unsigned int sc_regmask; /* Unused */
-+ unsigned int sc_status;
-+ unsigned long long sc_pc;
-+ unsigned long long sc_regs[32];
-+ unsigned long long sc_fpregs[32];
-+ unsigned int sc_ownedfp; /* Unused */
-+ unsigned int sc_fpc_csr;
-+ unsigned int sc_fpc_eir; /* Unused */
-+ unsigned int sc_used_math;
-+ unsigned int sc_ssflags; /* Unused */
-+ unsigned long long sc_mdhi;
-+ unsigned long long sc_mdlo;
-+
-+ unsigned int sc_cause; /* Unused */
-+ unsigned int sc_badvaddr; /* Unused */
-+
-+ unsigned long sc_sigset[4]; /* kernel's sigset_t */
-+};
-+
-+#endif /* _ASM_SIGCONTEXT_H */
-+#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 1996, 1997, 1999 by Ralf Baechle
-+ * Copyright (C) 1999 Silicon Graphics, Inc.
-+ */
-+#ifndef _ASM_SIGCONTEXT_H
-+#define _ASM_SIGCONTEXT_H
-+
-+/*
-+ * Keep this struct definition in sync with the sigcontext fragment
-+ * in arch/mips/tools/offset.c
-+ */
-+struct sigcontext {
-+ unsigned long long sc_regs[32];
-+ unsigned long long sc_fpregs[32];
-+ unsigned long long sc_mdhi;
-+ unsigned long long sc_mdlo;
-+ unsigned long long sc_pc;
-+ unsigned int sc_status;
-+ unsigned int sc_fpc_csr;
-+ unsigned int sc_fpc_eir;
-+ unsigned int sc_used_math;
-+ unsigned int sc_cause;
-+ unsigned int sc_badvaddr;
-+};
-+
-+#endif /* _ASM_SIGCONTEXT_H */
-+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/siginfo.h 2002-12-04 19:22:19.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/siginfo.h 2003-05-24 14:06:23.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/MIPS version.
-- Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 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
-@@ -119,8 +119,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_MESGQ, /* Sent by real time mesq state change. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/stat.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/stat.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 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
-@@ -33,6 +34,7 @@
- #define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
-
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- /* Structure describing file characteristics. */
- struct stat
- {
-@@ -106,6 +108,71 @@
- long int st_pad4[14];
- };
- #endif
-+#else
-+struct stat
-+ {
-+ __dev_t st_dev;
-+ int st_pad1[3]; /* Reserved for st_dev expansion */
-+#ifndef __USE_FILE_OFFSET64
-+ __ino_t st_ino;
-+#else
-+ __ino64_t st_ino;
-+#endif
-+ __mode_t st_mode;
-+ __nlink_t st_nlink;
-+ __uid_t st_uid;
-+ __gid_t st_gid;
-+ __dev_t st_rdev;
-+#if !defined __USE_FILE_OFFSET64
-+ unsigned int st_pad2[2]; /* Reserved for st_rdev expansion */
-+ __off_t st_size;
-+ int st_pad3;
-+#else
-+ unsigned int st_pad2[3]; /* Reserved for st_rdev expansion */
-+ __off64_t st_size;
-+#endif
-+ __time_t st_atime;
-+ int __reserved0;
-+ __time_t st_mtime;
-+ int __reserved1;
-+ __time_t st_ctime;
-+ int __reserved2;
-+ __blksize_t st_blksize;
-+ unsigned int st_pad4;
-+#ifndef __USE_FILE_OFFSET64
-+ __blkcnt_t st_blocks;
-+#else
-+ __blkcnt64_t st_blocks;
-+#endif
-+ int st_pad5[14];
-+ };
-+
-+#ifdef __USE_LARGEFILE64
-+struct stat64
-+ {
-+ __dev_t st_dev;
-+ unsigned int st_pad1[3]; /* Reserved for st_dev expansion */
-+ __ino64_t st_ino;
-+ __mode_t st_mode;
-+ __nlink_t st_nlink;
-+ __uid_t st_uid;
-+ __gid_t st_gid;
-+ __dev_t st_rdev;
-+ unsigned int st_pad2[3]; /* Reserved for st_rdev expansion */
-+ __off64_t st_size;
-+ __time_t st_atime;
-+ int __reserved0;
-+ __time_t st_mtime;
-+ int __reserved1;
-+ __time_t st_ctime;
-+ int __reserved2;
-+ __blksize_t st_blksize;
-+ unsigned int st_pad3;
-+ __blkcnt64_t st_blocks;
-+ int st_pad4[14];
-+};
-+#endif
-+#endif
-
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S 2003-04-12 11:39:50.000000000 -0400
-@@ -1,6 +1,6 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-- Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>, 1996.
-+ Contributed by Ralf Baechle <ralf@linux-mips.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
-@@ -21,7 +21,6 @@
- and invokes a function in the right context after its all over. */
-
- #include <sys/asm.h>
--#include <asm/unistd.h>
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-@@ -29,15 +28,17 @@
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */
-
- .text
-+LOCALSZ= 1
-+FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
-+GPOFF= FRAMESZ-(1*SZREG)
- NESTED(__clone,4*SZREG,sp)
- #ifdef __PIC__
-- .set noreorder
-- .cpload $25
-- .set reorder
-- subu sp,32
-- .cprestore 16
--#else
-- subu sp,32
-+ SETUP_GP
-+#endif
-+ PTR_SUBU sp, FRAMESZ
-+ SETUP_GP64 (GPOFF, __clone)
-+#ifdef __PIC__
-+ SAVE_GP (GPOFF)
- #endif
- #ifdef PROF
- .set noat
-@@ -49,12 +50,12 @@
-
- /* Sanity check arguments. */
- li v0,EINVAL
-- beqz a0,error /* No NULL function pointers. */
-- beqz a1,error /* No NULL stack pointers. */
-+ beqz a0,L(error) /* No NULL function pointers. */
-+ beqz a1,L(error) /* No NULL stack pointers. */
-
-- subu a1,32 /* Reserve argument save space. */
-- sw a0,0(a1) /* Save function pointer. */
-- sw a3,4(a1) /* Save argument pointer. */
-+ PTR_SUBU a1,32 /* Reserve argument save space. */
-+ PTR_S a0,0(a1) /* Save function pointer. */
-+ PTR_S a3,PTRSIZE(a1) /* Save argument pointer. */
-
-
- /* Do the system call */
-@@ -62,20 +63,24 @@
- li v0,__NR_clone
- syscall
-
-- bnez a3,error
-- beqz v0,__thread_start
-+ bnez a3,L(error)
-+ beqz v0,L(thread_start)
-
- /* Successful return from the parent */
-- addiu sp,32
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- ret
-
- /* Something bad happened -- no child created */
--error:
-- addiu sp,32
-+L(error):
- #ifdef __PIC__
-- la t9,__syscall_error
-+ PTR_LA t9,__syscall_error
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- jr t9
- #else
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- j __syscall_error
- #endif
- END(__clone)
-@@ -85,20 +90,21 @@
- debug info. */
-
- ENTRY(__thread_start)
-+L(thread_start):
- /* cp is already loaded. */
-- .cprestore 16
-+ SAVE_GP (GPOFF)
- /* The stackframe has been created on entry of clone(). */
- /* Restore the arg for user's function. */
-- lw t9,0(sp) /* Function pointer. */
-- lw a0,4(sp) /* Argument pointer. */
-+ PTR_L t9,0(sp) /* Function pointer. */
-+ PTR_L a0,PTRSIZE(sp) /* Argument pointer. */
-
- /* Call the user's function. */
-- jalr t9
-+ jal t9
-
- /* Call _exit rather than doing it inline for breakpoint purposes. */
- move a0,v0
- #ifdef __PIC__
-- la t9,_exit
-+ PTR_LA t9,_exit
- jalr t9
- #else
- jal _exit
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure 2003-04-12 11:39:50.000000000 -0400
-@@ -0,0 +1,75 @@
-+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-+ # Local configure fragment for sysdeps/unix/sysv/linux/mips.
-+
-+case $machine in
-+mips*64*)
-+ rm -f asm-unistd.h
-+ asm_unistd_h=$sysheaders/asm/unistd.h
-+ if test ! -f $asm_unistd_h; then
-+ # Try to find asm/unistd.h in compiler header search path.
-+ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
-+ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
-+ if test -n "$try_asm_unistd_h" &&
-+ test -f "$try_asm_unistd_h"; then
-+ asm_unistd_h=$try_asm_unistd_h
-+ fi
-+ fi
-+ if test ! -f "$asm_unistd_h"; then
-+ { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5
-+echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;}
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ else
-+ # The point of this preprocessing is to turn __NR_<syscall> into
-+ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
-+ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
-+ # and <abi> is the compiler-enabled ABI.
-+ cat "$asm_unistd_h" |
-+ sed -e 's,__NR_,__NR_N64_,g' \
-+ -e 's,__NR_N64_##,__NR_##,g' \
-+ -e 's,__NR_N64_O32_,__NR_O32_,g' \
-+ -e 's,__NR_N64_N32_,__NR_N32_,g' \
-+ -e 's,__NR_N64_N64_,__NR_N64_,g' \
-+ | awk > asm-unistd.h '
-+/^#define __NR.*unused/ { print; next; }
-+/^#define __NR_N64__exit __NR_N64_exit/ {
-+ print "#define __NR__exit __NR_exit";
-+ print "#define __NR_O32__exit __NR_O32_exit";
-+ print "#define __NR_N32__exit __NR_N32_exit";
-+ print; next;
-+}
-+/^#define __NR_O32_/ {
-+ name = $2;
-+ sub (/_O32_/, "_", name);
-+ print;
-+ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N32_/ {
-+ name = $2;
-+ sub (/_N32_/, "_", name);
-+ print;
-+ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N64_/ {
-+ name = $2;
-+ sub (/_N64_/, "_", name);
-+ print;
-+ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+{
-+ print;
-+}'
-+ fi ;;
-+mips*)
-+ rm -f asm-unistd.h
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ ;;
-+esac
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in 2003-03-17 10:50:05.000000000 -0500
-@@ -0,0 +1,75 @@
-+sinclude(./aclocal.m4)dnl Autoconf lossage
-+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-+# Local configure fragment for sysdeps/unix/sysv/linux/mips.
-+
-+case $machine in
-+mips*64*)
-+ rm -f asm-unistd.h
-+ asm_unistd_h=$sysheaders/asm/unistd.h
-+ if test ! -f $asm_unistd_h; then
-+ # Try to find asm/unistd.h in compiler header search path.
-+ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
-+ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
-+ if test -n "$try_asm_unistd_h" &&
-+ test -f "$try_asm_unistd_h"; then
-+ asm_unistd_h=$try_asm_unistd_h
-+ fi
-+ fi
-+ if test ! -f "$asm_unistd_h"; then
-+ AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ else
-+ # The point of this preprocessing is to turn __NR_<syscall> into
-+ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
-+ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
-+ # and <abi> is the compiler-enabled ABI.
-+ cat "$asm_unistd_h" |
-+ sed -e 's,__NR_,__NR_N64_,g' \
-+ -e 's,__NR_N64_##,__NR_##,g' \
-+ -e 's,__NR_N64_O32_,__NR_O32_,g' \
-+ -e 's,__NR_N64_N32_,__NR_N32_,g' \
-+ -e 's,__NR_N64_N64_,__NR_N64_,g' \
-+ | awk > asm-unistd.h '
-+/^#define __NR.*unused/ { print; next; }
-+/^#define __NR_N64__exit __NR_N64_exit/ {
-+ print "#define __NR__exit __NR_exit";
-+ print "#define __NR_O32__exit __NR_O32_exit";
-+ print "#define __NR_N32__exit __NR_N32_exit";
-+ print; next;
-+}
-+/^#define __NR_O32_/ {
-+ name = $2;
-+ sub (/_O32_/, "_", name);
-+ print;
-+ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N32_/ {
-+ name = $2;
-+ sub (/_N32_/, "_", name);
-+ print;
-+ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N64_/ {
-+ name = $2;
-+ sub (/_N64_/, "_", name);
-+ print;
-+ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+{
-+ print;
-+}'
-+ fi ;;
-+mips*)
-+ rm -f asm-unistd.h
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ ;;
-+esac
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/dl-cache.h 2003-06-25 04:03:24.000000000 -0400
-@@ -0,0 +1,43 @@
-+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-+ Copyright (C) 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. */
-+
-+#define add_system_dir(dir) \
-+ do \
-+ { \
-+ size_t len = strlen (dir); \
-+ char path[len + 3]; \
-+ memcpy (path, dir, len + 1); \
-+ if (len >= 6 \
-+ && (! memcmp (path + len - 6, "/lib64", 6) \
-+ || ! memcmp (path + len - 6, "/lib32", 6))) \
-+ { \
-+ len -= 2; \
-+ path[len] = '\0'; \
-+ } \
-+ add_dir (path); \
-+ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \
-+ { \
-+ memcpy (path + len, "32", 3); \
-+ add_dir (path); \
-+ memcpy (path + len, "64", 3); \
-+ add_dir (path); \
-+ } \
-+ } while (0)
-+
-+#include_next <dl-cache.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ftruncate64.c 2002-09-28 16:12:57.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ftruncate64.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 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
-@@ -32,11 +33,6 @@
- extern int __have_no_truncate64;
- #endif
-
--/* The order of hight, low depends on endianness. */
--extern int __syscall_ftruncate64 (int fd, int dummy, int high_length,
-- int low_length);
--
--
- /* Truncate the file FD refers to to LENGTH bytes. */
- int
- __ftruncate64 (int fd, off64_t length)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h 2000-12-15 01:05:44.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h 2003-04-12 11:39:50.000000000 -0400
-@@ -12,7 +12,7 @@
-
- /* Abi says here follows reserved int[2] */
- void (*sa_restorer)(void);
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
-+#if (_MIPS_SZPTR < 64)
- /*
- * For 32 bit code we have to pad struct sigaction to get
- * constant size for the ABI
-@@ -23,7 +23,7 @@
-
-
- #define _KERNEL_NSIG 128
--#define _KERNEL_NSIG_BPW 32
-+#define _KERNEL_NSIG_BPW _MIPS_SZLONG
- #define _KERNEL_NSIG_WORDS (_KERNEL_NSIG / _KERNEL_NSIG_BPW)
-
- typedef struct {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h 2000-11-20 03:45:43.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,31 @@
--/* Definition of `struct stat' used in the kernel.. */
-+/* As tempting as it is to define XSTAT_IS_XSTAT64 for n64, the
-+ userland data structures are not identical, because of different
-+ padding. */
-+/* Definition of `struct stat' used in the kernel. */
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+struct kernel_stat
-+ {
-+ unsigned int st_dev;
-+ unsigned int __pad1[3];
-+ unsigned long long st_ino;
-+ unsigned int st_mode;
-+ unsigned int st_nlink;
-+ int st_uid;
-+ int st_gid;
-+ unsigned int st_rdev;
-+ unsigned int __pad2[3];
-+ long long st_size;
-+ unsigned int st_atime;
-+ unsigned int __unused1;
-+ unsigned int st_mtime;
-+ unsigned int __unused2;
-+ unsigned int st_ctime;
-+ unsigned int __unused3;
-+ unsigned int st_blksize;
-+ unsigned int __pad3;
-+ unsigned long long st_blocks;
-+ };
-+#else
- struct kernel_stat
- {
- unsigned long int st_dev;
-@@ -26,3 +53,4 @@
- unsigned int st_flags;
- unsigned int st_gen;
- };
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2003-03-29 03:15:29.000000000 -0500
-@@ -0,0 +1,36 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
-+#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_O32_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name
-+#endif
-+
-+#endif /* linux/mips/mips32/kern64/sysdep.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h 2003-03-29 03:15:29.000000000 -0500
-@@ -0,0 +1,282 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
-+#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_/**/syscall_name
-+#endif
-+
-+#ifdef __ASSEMBLER__
-+
-+/* We don't want the label for the error handler to be visible in the symbol
-+ table when we define it here. */
-+#ifdef __PIC__
-+# define SYSCALL_ERROR_LABEL 99b
-+#endif
-+
-+#else /* ! __ASSEMBLER__ */
-+
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "lw\t$8, %7\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "sw\t$8, 20($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5), "m" ((long)arg6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "lw\t$8, %7\n\t" \
-+ "lw\t$9, %8\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "sw\t$8, 20($29)\n\t" \
-+ "sw\t$9, 24($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/mips32/sysdep.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist 2003-03-17 10:57:19.000000000 -0500
-@@ -0,0 +1 @@
-+ldd-rewrite.sed
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1,26 @@
-+/* Copyright (C) 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 <sysdeps/generic/ldconfig.h>
-+
-+#define SYSDEP_KNOWN_INTERPRETER_NAMES \
-+ { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \
-+ { "/lib64/ld.so.1", FLAG_ELF_LIBC6 },
-+#define SYSDEP_KNOWN_LIBRARY_NAMES \
-+ { "libc.so.6", FLAG_ELF_LIBC6 }, \
-+ { "libm.so.6", FLAG_ELF_LIBC6 },
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed 2003-03-17 10:57:19.000000000 -0500
-@@ -0,0 +1 @@
-+s_^\(RTLDLIST=\)\(.*lib\)\(\|32\|64\)\(/[^/]*\.so\.[0-9.]*\)[ ]*$_\1"\232\4 \264\4 \2\4"_
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1 @@
-+/* lseek() is 64-bit capable already. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c 2003-04-05 14:57:35.000000000 -0500
-@@ -0,0 +1,28 @@
-+/* Copyright (C) 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 <sys/types.h>
-+
-+#include <sysdep.h>
-+
-+extern int ftruncate (int fd, off64_t length);
-+
-+int __ftruncate64 (int fd, off64_t length) {
-+ return ftruncate (fd, length);
-+}
-+weak_alias (__ftruncate64, ftruncate64)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2003-06-03 09:36:39.000000000 -0400
-@@ -0,0 +1,263 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_SYSDEP_H
-+#define _LINUX_MIPS_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips64/n32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_N32_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name
-+#endif
-+
-+
-+#ifndef __ASSEMBLER__
-+#if 0 /* untested */
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ register long long __a5 asm("$9") = (long long) arg6; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4), "r" (__a5) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ register long long __a5 asm("$9") = (long long) arg6; \
-+ register long long __a6 asm("$10") = (long long) arg7; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4), "r" (__a5), "r" (__a6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+#endif /* untested */
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/sysdep.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c 2003-04-05 14:57:35.000000000 -0500
-@@ -0,0 +1,30 @@
-+/* Copyright (C) 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 <sys/types.h>
-+
-+#include <sysdep.h>
-+#include <bp-checks.h>
-+
-+extern int truncate (const char *__unbounded path, int dummy,
-+ off64_t length);
-+
-+int truncate64 (const char *__unbounded path, int dummy,
-+ off64_t length) {
-+ return truncate (path, dummy, length);
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1 @@
-+/* glob64 is in glob.c */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S 2003-04-12 11:39:50.000000000 -0400
-@@ -0,0 +1,42 @@
-+/* Copyright 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>
-+
-+#include <sys/asm.h>
-+
-+/* Sign-extend the ioctl number, since the kernel wants it as a
-+ sign-extended 32-bit value, but our prototype is that of a long. */
-+
-+ .text
-+ENTRY (__ioctl)
-+ li v0, __NR_ioctl
-+ sll a1,a1,0
-+ syscall /* Do the system call. */
-+ bne a3, zero, L(error)
-+ ret
-+
-+L(error):
-+ .cpsetup t9, a0, __ioctl
-+ PTR_LA t9,__syscall_error
-+ .cprestore
-+ jr t9
-+
-+PSEUDO_END (__ioctl)
-+
-+weak_alias (__ioctl, ioctl)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2003-06-03 09:36:39.000000000 -0400
-@@ -0,0 +1,263 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_SYSDEP_H
-+#define _LINUX_MIPS_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips64/n64/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_N64_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name
-+#endif
-+
-+
-+#ifndef __ASSEMBLER__
-+#if 0 /* untested */
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ register long __a5 asm("$9") = (long) arg6; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4), "r" (__a5) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ register long __a5 asm("$9") = (long) arg6; \
-+ register long __a6 asm("$10") = (long) arg7; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4), "r" (__a5), "r" (__a6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+#endif /* untested */
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/sysdep.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/x86_64/recv.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/x86_64/send.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1,53 @@
-+/* Copyright (C) 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>
-+
-+#include <sys/asm.h>
-+
-+/* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
-+ more information about the value -4095 used below. */
-+
-+/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5)
-+ We need to do some arg shifting, the syscall_number will be in
-+ rax. */
-+
-+
-+ .text
-+ENTRY (syscall)
-+ move v0, a0 /* Syscall number -> v0 */
-+ move a0, a1 /* shift arg1 - arg7. */
-+ move a1, a2
-+ move a2, a3
-+ move a3, a4
-+ move a4, a5
-+ move a5, a6
-+ move a6, a7
-+
-+ syscall /* Do the system call. */
-+ bne a3, zero, L(error)
-+
-+ ret
-+
-+L(error):
-+ .cpsetup t9, a0, syscall
-+ PTR_LA t9,__syscall_error
-+ .cprestore
-+ jr t9
-+
-+PSEUDO_END (syscall)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -0,0 +1,20 @@
-+# File name Caller Syscall name Args Strong name Weak names
-+
-+lseek - lseek i:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
-+
-+# proper socket implementations:
-+recvfrom - recvfrom i:ibniBN __libc_recvfrom __recvfrom recvfrom
-+sendto - sendto i:ibnibn __libc_sendto __sendto sendto
-+
-+# semaphore and shm system calls
-+msgctl - msgctl i:iip __msgctl msgctl
-+msgget - msgget i:ii __msgget msgget
-+msgrcv - msgrcv i:ibnii __msgrcv msgrcv
-+msgsnd - msgsnd i:ibni __msgsnd msgsnd
-+shmat - shmat i:ipi __shmat shmat
-+shmctl - shmctl i:iip __shmctl shmctl
-+shmdt - shmdt i:s __shmdt shmdt
-+shmget - shmget i:iii __shmget shmget
-+semop - semop i:ipi __semop semop
-+semget - semget i:iii __semget semget
-+semctl - semctl i:iiii __semctl semctl
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c 2003-03-17 11:20:44.000000000 -0500
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/hppa/umount.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -41,10 +41,6 @@
- static ssize_t __emulate_pread (int fd, void *buf, size_t count,
- off_t offset) internal_function;
- # endif
--extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
--
--
-
- ssize_t
- __libc_pread (fd, buf, count, offset)
-@@ -55,26 +51,37 @@
- {
- ssize_t result;
-
-+#if (defined _ABI64 && _MIPS_SIM != _ABI64)
-+ assert (sizeof (offset) == 4);
-+#endif
-+
- if (SINGLE_THREAD_P)
- {
-- /* First try the syscall. */
-- assert (sizeof (offset) == 4);
-- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-- __LONG_LONG_PAIR (offset >> 31, offset));
-+ /* First try the syscall. */
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count,
-+ offset);
-+#else
-+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-+ __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
-- if (result == -1 && errno == ENOSYS)
-- /* No system call available. Use the emulation. */
-- result = __emulate_pread (fd, buf, count, offset);
-+ if (result == -1 && errno == ENOSYS)
-+ /* No system call available. Use the emulation. */
-+ result = __emulate_pread (fd, buf, count, offset);
- # endif
-- return result;
-+ return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-- assert (sizeof (offset) == 4);
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -41,11 +41,6 @@
- off64_t offset) internal_function;
- # endif
-
--extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
--
--
--
- ssize_t
- __libc_pread64 (fd, buf, count, offset)
- int fd;
-@@ -59,9 +54,14 @@
- if (SINGLE_THREAD_P)
- {
- /* First try the syscall. */
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -73,9 +73,13 @@
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/profil-counter.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/profil-counter.h 2003-04-13 07:36:32.000000000 -0400
-@@ -0,0 +1,2 @@
-+/* We can use the ix86 version. */
-+#include <sysdeps/unix/sysv/linux/i386/profil-counter.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c 2003-09-19 22:37:10.000000000 -0400
-@@ -0,0 +1,109 @@
-+/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 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 <errno.h>
-+#include <sys/types.h>
-+#include <sys/ptrace.h>
-+#include <sys/user.h>
-+#include <stdarg.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ typedef long long int reg_type;
-+#else
-+typedef long int reg_type;
-+#endif
-+
-+reg_type
-+ptrace (enum __ptrace_request request, ...)
-+{
-+ reg_type res, ret;
-+ va_list ap;
-+ pid_t pid;
-+ void *addr;
-+ reg_type data;
-+
-+ va_start (ap, request);
-+ pid = va_arg (ap, pid_t);
-+ addr = va_arg (ap, void *);
-+ data = va_arg (ap, reg_type);
-+ va_end (ap);
-+
-+ if (request > 0 && request < 4)
-+ data = &ret;
-+
-+#if __BOUNDED_POINTERS__
-+ switch (request)
-+ {
-+ case PTRACE_PEEKTEXT:
-+ case PTRACE_PEEKDATA:
-+ case PTRACE_PEEKUSER:
-+ case PTRACE_POKETEXT:
-+ case PTRACE_POKEDATA:
-+ case PTRACE_POKEUSER:
-+ (void) CHECK_1 ((int *) addr);
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETREGS:
-+ case PTRACE_SETREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETFPREGS:
-+ case PTRACE_SETFPREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETFPXREGS:
-+ case PTRACE_SETFPXREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_TRACEME:
-+ case PTRACE_CONT:
-+ case PTRACE_KILL:
-+ case PTRACE_SINGLESTEP:
-+ case PTRACE_ATTACH:
-+ case PTRACE_DETACH:
-+ case PTRACE_SYSCALL:
-+ /* Neither `data' nor `addr' needs any checks. */
-+ break;
-+ };
-+#endif
-+
-+ res = INLINE_SYSCALL (ptrace, 4, request, pid,
-+ __ptrvalue (addr), __ptrvalue (data));
-+ if (res >= 0 && request > 0 && request < 4)
-+ {
-+ __set_errno (0);
-+ return ret;
-+ }
-+
-+ return res;
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -37,9 +37,6 @@
-
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
--extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
--
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
- off_t offset) internal_function;
-@@ -54,27 +51,37 @@
- {
- ssize_t result;
-
-+#if (defined _ABI64 && _MIPS_SIM != _ABI64)
-+ assert (sizeof (offset) == 4);
-+#endif
-+
- if (SINGLE_THREAD_P)
- {
- /* First try the syscall. */
-- assert (sizeof (offset) == 4);
-- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-- __LONG_LONG_PAIR (offset >> 31, offset));
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count,
-+ offset);
-+#else
-+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-+ __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
-- if (result == -1 && errno == ENOSYS)
-- /* No system call available. Use the emulation. */
-- result = __emulate_pwrite (fd, buf, count, offset);
-+ if (result == -1 && errno == ENOSYS)
-+ /* No system call available. Use the emulation. */
-+ result = __emulate_pwrite (fd, buf, count, offset);
- # endif
--
- return result;
- }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-- assert (sizeof (offset) == 4);
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-- __LONG_LONG_PAIR (offset >> 31, offset));
-+ __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>, 1998.
-
-@@ -36,9 +36,6 @@
-
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
--extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
--
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count,
- off64_t offset) internal_function;
-@@ -56,9 +53,14 @@
- if (SINGLE_THREAD_P)
- {
- /* First try the syscall. */
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -71,9 +73,13 @@
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-+#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
-+ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c 2003-03-14 02:52:05.000000000 -0500
-@@ -0,0 +1,71 @@
-+/* Copyright (C) 1999, 2001, 2002, 2003 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,
-+ 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.
-+
-+ 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. */
-+
-+
-+int process_elf32_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname,
-+ void *file_contents, size_t file_length);
-+int process_elf64_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname,
-+ void *file_contents, size_t file_length);
-+
-+/* Returns 0 if everything is ok, != 0 in case of error. */
-+int
-+process_elf_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname, void *file_contents,
-+ size_t file_length)
-+{
-+ ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents;
-+ int ret;
-+
-+ if (elf_header->e_ident [EI_CLASS] == ELFCLASS32)
-+ {
-+ ret = process_elf32_file (file_name, lib, flag, osversion, soname,
-+ file_contents, file_length);
-+
-+ /* n32 libraries are always libc.so.6+. */
-+ if (ret && (elf_header->e_flags & EF_MIPS_ABI2) != 0)
-+ *flag = FLAG_MIPS64_LIBN32|FLAG_ELF_LIBC6;
-+ }
-+ else
-+ {
-+ ret = process_elf64_file (file_name, lib, flag, osversion, soname,
-+ file_contents, file_length);
-+ /* n64 libraries are always libc.so.6+. */
-+ if (!ret)
-+ *flag = FLAG_MIPS64_LIBN64|FLAG_ELF_LIBC6;
-+ }
-+
-+ return ret;
-+}
-+
-+#undef __ELF_NATIVE_CLASS
-+#undef process_elf_file
-+#define process_elf_file process_elf32_file
-+#define __ELF_NATIVE_CLASS 32
-+#include "sysdeps/generic/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"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c 2003-01-02 18:26:04.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c 2003-09-19 22:37:10.000000000 -0400
-@@ -35,12 +35,17 @@
- functions which have RT equivalents. This is the definition. */
- int __libc_missing_rt_sigs;
-
--extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
-- struct old_kernel_sigaction *__unbounded);
- #endif
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-- struct kernel_sigaction *__unbounded, size_t);
-
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+
-+# ifdef __NR_rt_sigreturn
-+static void restore_rt (void) asm ("__restore_rt");
-+# endif
-+# ifdef __NR_sigreturn
-+static void restore (void) asm ("__restore");
-+# endif
-+#endif
-
- /* If ACT is not NULL, change the action for SIG to *ACT.
- If OACT is not NULL, put the old action for SIG in *OACT. */
-@@ -74,7 +79,11 @@
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kernel_sigset_t));
- kact.sa_flags = act->sa_flags;
- # ifdef HAVE_SA_RESTORER
-+# if _MIPS_SIM == _MIPS_SIM_ABI32
- kact.sa_restorer = act->sa_restorer;
-+# else
-+ kact.sa_restorer = &restore_rt;
-+# endif
- # endif
- }
-
-@@ -128,7 +137,11 @@
- oact->sa_mask.__val[0] = k_osigact.sa_mask;
- oact->sa_flags = k_osigact.sa_flags;
- # ifdef HAVE_SA_RESTORER
-+# if _MIPS_SIM == _MIPS_SIM_ABI32
- oact->sa_restorer = k_osigact.sa_restorer;
-+# else
-+ oact->sa_restorer = &restore;
-+# endif
- # endif
- }
- return result;
-@@ -141,3 +154,31 @@
- libc_hidden_weak (__sigaction)
- weak_alias (__libc_sigaction, sigaction)
- #endif
-+
-+/* NOTE: Please think twice before making any changes to the bits of
-+ code below. GDB needs some intimate knowledge about it to
-+ recognize them as signal trampolines, and make backtraces through
-+ signal handlers work right. Important are both the names
-+ (__restore_rt) and the exact instruction sequence.
-+ If you ever feel the need to make any changes, please notify the
-+ appropriate GDB maintainer. */
-+
-+#define RESTORE(name, syscall) RESTORE2 (name, syscall)
-+#define RESTORE2(name, syscall) \
-+asm \
-+ ( \
-+ ".align 4\n" \
-+ "__" #name ":\n" \
-+ " li $2, " #syscall "\n" \
-+ " syscall\n" \
-+ );
-+
-+/* The return code for realtime-signals. */
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+# ifdef __NR_rt_sigreturn
-+RESTORE (restore_rt, __NR_rt_sigreturn)
-+# endif
-+# ifdef __NR_sigreturn
-+RESTORE (restore, __NR_sigreturn)
-+# endif
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 2003-04-24 20:06:01.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 2000.
-
-@@ -18,6 +18,8 @@
- 02111-1307 USA. */
-
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+
- #define SIGCONTEXT unsigned long _code, struct sigcontext *
- #define SIGCONTEXT_EXTRA_ARGS _code,
- #define GET_PC(ctx) ((void *) ctx->sc_pc)
-@@ -25,3 +27,15 @@
- #define GET_STACK(ctx) ((void *) ctx->sc_regs[29])
- #define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
-+
-+#else
-+
-+#define SIGCONTEXT unsigned long _code, ucontext_t *
-+#define SIGCONTEXT_EXTRA_ARGS _code,
-+#define GET_PC(ctx) ((void *) ctx->uc_mcontext.pc)
-+#define GET_FRAME(ctx) ((void *) ctx->uc_mcontext.gregs[30])
-+#define GET_STACK(ctx) ((void *) ctx->uc_mcontext.gregs[29])
-+#define CALL_SIGHANDLER(handler, signo, ctx) \
-+ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h 2002-02-08 20:19:07.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h 2003-03-18 16:46:10.000000000 -0500
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1999, 2000, 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
-@@ -32,7 +33,11 @@
- #define ELF_NGREG 45
- #define ELF_NFPREG 33
-
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ typedef unsigned long long elf_greg_t;
-+#else
- typedef unsigned long elf_greg_t;
-+#endif
- typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
- typedef double elf_fpreg_t;
-@@ -59,8 +64,13 @@
- {
- struct elf_siginfo pr_info; /* Info associated with signal. */
- short int pr_cursig; /* Current signal. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+ __extension__ unsigned long long int pr_sigpend;
-+ __extension__ unsigned long long int pr_sighold;
-+#else
- unsigned long int pr_sigpend; /* Set of pending signals. */
- unsigned long int pr_sighold; /* Set of held signals. */
-+#endif
- __pid_t pr_pid;
- __pid_t pr_ppid;
- __pid_t pr_pgrp;
-@@ -82,7 +92,11 @@
- char pr_sname; /* Char for pr_state. */
- char pr_zomb; /* Zombie. */
- char pr_nice; /* Nice val. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+ __extension__ unsigned long long int pr_flag;
-+#else
- unsigned long int pr_flag; /* Flags. */
-+#endif
- long pr_uid;
- long pr_gid;
- int pr_pid, pr_ppid, pr_pgrp, pr_sid;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h 2003-03-17 10:48:52.000000000 -0500
-@@ -0,0 +1,135 @@
-+/* `ptrace' debugger support interface. Linux version.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 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. */
-+
-+#ifndef _SYS_PTRACE_H
-+#define _SYS_PTRACE_H 1
-+
-+#include <features.h>
-+
-+__BEGIN_DECLS
-+
-+/* Type of the REQUEST argument to `ptrace.' */
-+enum __ptrace_request
-+{
-+ /* Indicate that the process making this request should be traced.
-+ All signals received by this process can be intercepted by its
-+ parent, and its parent can use the other `ptrace' requests. */
-+ PTRACE_TRACEME = 0,
-+#define PT_TRACE_ME PTRACE_TRACEME
-+
-+ /* Return the word in the process's text space at address ADDR. */
-+ PTRACE_PEEKTEXT = 1,
-+#define PT_READ_I PTRACE_PEEKTEXT
-+
-+ /* Return the word in the process's data space at address ADDR. */
-+ PTRACE_PEEKDATA = 2,
-+#define PT_READ_D PTRACE_PEEKDATA
-+
-+ /* Return the word in the process's user area at offset ADDR. */
-+ PTRACE_PEEKUSER = 3,
-+#define PT_READ_U PTRACE_PEEKUSER
-+
-+ /* Write the word DATA into the process's text space at address ADDR. */
-+ PTRACE_POKETEXT = 4,
-+#define PT_WRITE_I PTRACE_POKETEXT
-+
-+ /* Write the word DATA into the process's data space at address ADDR. */
-+ PTRACE_POKEDATA = 5,
-+#define PT_WRITE_D PTRACE_POKEDATA
-+
-+ /* Write the word DATA into the process's user area at offset ADDR. */
-+ PTRACE_POKEUSER = 6,
-+#define PT_WRITE_U PTRACE_POKEUSER
-+
-+ /* Continue the process. */
-+ PTRACE_CONT = 7,
-+#define PT_CONTINUE PTRACE_CONT
-+
-+ /* Kill the process. */
-+ PTRACE_KILL = 8,
-+#define PT_KILL PTRACE_KILL
-+
-+ /* Single step the process.
-+ This is not supported on all machines. */
-+ PTRACE_SINGLESTEP = 9,
-+#define PT_STEP PTRACE_SINGLESTEP
-+
-+ /* Get all general purpose registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETREGS = 12,
-+#define PT_GETREGS PTRACE_GETREGS
-+
-+ /* Set all general purpose registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETREGS = 13,
-+#define PT_SETREGS PTRACE_SETREGS
-+
-+ /* Get all floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETFPREGS = 14,
-+#define PT_GETFPREGS PTRACE_GETFPREGS
-+
-+ /* Set all floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETFPREGS = 15,
-+#define PT_SETFPREGS PTRACE_SETFPREGS
-+
-+ /* Attach to a process that is already running. */
-+ PTRACE_ATTACH = 16,
-+#define PT_ATTACH PTRACE_ATTACH
-+
-+ /* Detach from a process attached to with PTRACE_ATTACH. */
-+ PTRACE_DETACH = 17,
-+#define PT_DETACH PTRACE_DETACH
-+
-+ /* Get all extended floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETFPXREGS = 18,
-+#define PT_GETFPXREGS PTRACE_GETFPXREGS
-+
-+ /* Set all extended floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETFPXREGS = 19,
-+#define PT_SETFPXREGS PTRACE_SETFPXREGS
-+
-+ /* Continue and stop at the next (return from) syscall. */
-+ PTRACE_SYSCALL = 24
-+#define PT_SYSCALL PTRACE_SYSCALL
-+};
-+
-+/* Perform process tracing functions. REQUEST is one of the values
-+ above, and determines the action to be taken.
-+ For all requests except PTRACE_TRACEME, PID specifies the process to be
-+ traced.
-+
-+ PID and the other arguments described above for the various requests should
-+ appear (those that are used for the particular request) as:
-+ pid_t PID, void *ADDR, int DATA, void *ADDR2
-+ after REQUEST. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ extern long long int ptrace
-+ (enum __ptrace_request __request, ...) __THROW;
-+#else
-+extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
-+#endif
-+
-+__END_DECLS
-+
-+#endif /* _SYS_PTRACE_H */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h 2003-03-17 10:50:05.000000000 -0500
-@@ -0,0 +1,42 @@
-+/* Copyright (C) 1995, 1996, 1997, 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. */
-+
-+#ifndef _SYSCALL_H
-+#define _SYSCALL_H 1
-+
-+/* This file should list the numbers of the system the system knows.
-+ But instead of duplicating this we use the information available
-+ from the kernel sources. */
-+#ifdef _LIBC
-+/* Since the kernel doesn't define macro names in a way usable for
-+ glibc, we preprocess this header, and use it during the glibc build
-+ process. */
-+# include <asm-unistd.h>
-+#else
-+# include <asm/unistd.h>
-+#endif
-+
-+#ifndef _LIBC
-+/* The Linux kernel header file defines macros `__NR_<name>', but some
-+ programs expect the traditional form `SYS_<name>'. So in building libc
-+ we scan the kernel's list and produce <bits/syscall.h> with macros for
-+ all the `SYS_' names. */
-+# include <bits/syscall.h>
-+#endif
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h 2002-07-15 20:52:17.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h 2003-03-15 15:02:21.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Maciej W. Rozycki <macro@ds2.pg.gda.pl>, 2000.
-
-@@ -41,7 +41,9 @@
- ("/* Inline test and set */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%3\n\t"
- "move %1,%4\n\t"
- "beq %0,%4,2f\n\t"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2003-05-12 12:13:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -29,43 +29,72 @@
- #include <bits/sigcontext.h>
-
-
--/* Type for general register. */
--typedef unsigned long int greg_t;
-+/* Type for general register. Even in o32 we assume 64-bit registers,
-+ like the kernel. */
-+__extension__ typedef unsigned long long int greg_t;
-
- /* Number of general registers. */
--#define NGREG 37
--#define NFPREG 33
-+#define NGREG 32
-+#define NFPREG 32
-
- /* Container for all general registers. */
--/* gregset_t must be an array. The below declared array corresponds to:
--typedef struct gregset {
-- greg_t g_regs[32];
-- greg_t g_hi;
-- greg_t g_lo;
-- greg_t g_pad[3];
--} gregset_t; */
- typedef greg_t gregset_t[NGREG];
-
- /* Container for all FPU registers. */
- typedef struct fpregset {
- union {
-- double fp_dregs[32];
-+ double fp_dregs[NFPREG];
- struct {
- float _fp_fregs;
- unsigned int _fp_pad;
-- } fp_fregs[32];
-+ } fp_fregs[NFPREG];
- } fp_r;
-- unsigned int fp_csr;
-- unsigned int fp_pad;
- } fpregset_t;
-
-
- /* Context to describe whole processor state. */
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+/* Earlier versions of glibc for mips had an entirely different
-+ definition of mcontext_t, that didn't even resemble the
-+ corresponding kernel data structure. Since all legitimate uses of
-+ ucontext_t in glibc mustn't have accessed anything beyond
-+ uc_mcontext and, even then, taking a pointer to it, casting it to
-+ sigcontext_t, and accessing it as such, which is what it has always
-+ been, this can still be rectified. Fortunately, makecontext,
-+ [gs]etcontext et all have never been implemented. */
- typedef struct
- {
-+ unsigned int regmask;
-+ unsigned int status;
-+ greg_t pc;
- gregset_t gregs;
- fpregset_t fpregs;
-+ unsigned int fp_owned;
-+ unsigned int fpc_csr;
-+ unsigned int fpc_eir;
-+ unsigned int used_math;
-+ unsigned int ssflags;
-+ greg_t mdhi;
-+ greg_t mdlo;
-+ unsigned int cause;
-+ unsigned int badvaddr;
- } mcontext_t;
-+#else
-+typedef struct
-+ {
-+ gregset_t gregs;
-+ fpregset_t fpregs;
-+ greg_t mdhi;
-+ greg_t mdlo;
-+ greg_t pc;
-+ unsigned int status;
-+ unsigned int fpc_csr;
-+ unsigned int fpc_eir;
-+ unsigned int used_math;
-+ unsigned int cause;
-+ unsigned int badvaddr;
-+ } mcontext_t;
-+#endif
-
- /* Userlevel context. */
- typedef struct ucontext
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/user.h 2002-02-08 11:21:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/user.h 2003-04-24 20:06:01.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -23,7 +23,154 @@
- too much into it. Don't use it for anything other than GDB unless
- you know what you are doing. */
-
--#include <asm/reg.h>
-+/* #include <asm/reg.h> */
-+/* Instead of including the kernel header, that will vary depending on
-+ whether the 32- or the 64-bit kernel is installed, we paste its
-+ contents here. Note that the fact that the file is inline here,
-+ instead of included separately, doesn't change in any way the
-+ licensing status of a program that includes user.h. Since this is
-+ for gdb alone, and gdb is GPLed, no surprises here. */
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+/*
-+ * Various register offset definitions for debuggers, core file
-+ * examiners and whatnot.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 1995, 1999 by Ralf Baechle
-+ */
-+#ifndef __ASM_MIPS_REG_H
-+#define __ASM_MIPS_REG_H
-+
-+/*
-+ * This defines/structures correspond to the register layout on stack -
-+ * if the order here is changed, it needs to be updated in
-+ * include/asm-mips/stackframe.h
-+ */
-+#define EF_REG0 6
-+#define EF_REG1 7
-+#define EF_REG2 8
-+#define EF_REG3 9
-+#define EF_REG4 10
-+#define EF_REG5 11
-+#define EF_REG6 12
-+#define EF_REG7 13
-+#define EF_REG8 14
-+#define EF_REG9 15
-+#define EF_REG10 16
-+#define EF_REG11 17
-+#define EF_REG12 18
-+#define EF_REG13 19
-+#define EF_REG14 20
-+#define EF_REG15 21
-+#define EF_REG16 22
-+#define EF_REG17 23
-+#define EF_REG18 24
-+#define EF_REG19 25
-+#define EF_REG20 26
-+#define EF_REG21 27
-+#define EF_REG22 28
-+#define EF_REG23 29
-+#define EF_REG24 30
-+#define EF_REG25 31
-+/*
-+ * k0/k1 unsaved
-+ */
-+#define EF_REG28 34
-+#define EF_REG29 35
-+#define EF_REG30 36
-+#define EF_REG31 37
-+
-+/*
-+ * Saved special registers
-+ */
-+#define EF_LO 38
-+#define EF_HI 39
-+
-+#define EF_CP0_EPC 40
-+#define EF_CP0_BADVADDR 41
-+#define EF_CP0_STATUS 42
-+#define EF_CP0_CAUSE 43
-+
-+#define EF_SIZE 180 /* size in bytes */
-+
-+#endif /* __ASM_MIPS_REG_H */
-+
-+#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+
-+/*
-+ * Various register offset definitions for debuggers, core file
-+ * examiners and whatnot.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 1995, 1999 Ralf Baechle
-+ * Copyright (C) 1995, 1999 Silicon Graphics
-+ */
-+#ifndef _ASM_REG_H
-+#define _ASM_REG_H
-+
-+/*
-+ * This defines/structures correspond to the register layout on stack -
-+ * if the order here is changed, it needs to be updated in
-+ * include/asm-mips/stackframe.h
-+ */
-+#define EF_REG0 0
-+#define EF_REG1 1
-+#define EF_REG2 2
-+#define EF_REG3 3
-+#define EF_REG4 4
-+#define EF_REG5 5
-+#define EF_REG6 6
-+#define EF_REG7 7
-+#define EF_REG8 8
-+#define EF_REG9 9
-+#define EF_REG10 10
-+#define EF_REG11 11
-+#define EF_REG12 12
-+#define EF_REG13 13
-+#define EF_REG14 14
-+#define EF_REG15 15
-+#define EF_REG16 16
-+#define EF_REG17 17
-+#define EF_REG18 18
-+#define EF_REG19 19
-+#define EF_REG20 20
-+#define EF_REG21 21
-+#define EF_REG22 22
-+#define EF_REG23 23
-+#define EF_REG24 24
-+#define EF_REG25 25
-+/*
-+ * k0/k1 unsaved
-+ */
-+#define EF_REG28 28
-+#define EF_REG29 29
-+#define EF_REG30 30
-+#define EF_REG31 31
-+
-+/*
-+ * Saved special registers
-+ */
-+#define EF_LO 32
-+#define EF_HI 33
-+
-+#define EF_CP0_EPC 34
-+#define EF_CP0_BADVADDR 35
-+#define EF_CP0_STATUS 36
-+#define EF_CP0_CAUSE 37
-+
-+#define EF_SIZE 304 /* size in bytes */
-+
-+#endif /* _ASM_REG_H */
-+
-+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-
- struct user
- {
-@@ -40,6 +187,24 @@
- char u_comm[32]; /* user command name */
- };
-
-+#else
-+
-+struct user {
-+ __extension__ unsigned long regs[EF_SIZE/8+64]; /* integer and fp regs */
-+ __extension__ unsigned long u_tsize; /* text size (pages) */
-+ __extension__ unsigned long u_dsize; /* data size (pages) */
-+ __extension__ unsigned long u_ssize; /* stack size (pages) */
-+ __extension__ unsigned long long start_code; /* text starting address */
-+ __extension__ unsigned long long start_data; /* data starting address */
-+ __extension__ unsigned long long start_stack; /* stack starting address */
-+ __extension__ long long signal; /* signal causing core dump */
-+ __extension__ unsigned long long u_ar0; /* help gdb find registers */
-+ __extension__ unsigned long long magic; /* identifies a core file */
-+ char u_comm[32]; /* user command name */
-+};
-+
-+#endif
-+
- #define PAGE_SHIFT 12
- #define PAGE_SIZE (1UL << PAGE_SHIFT)
- #define PAGE_MASK (~(PAGE_SIZE-1))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-01-30 22:39:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -8,8 +8,6 @@
- cacheflush - cacheflush i:pii _flush_cache cacheflush
- sysmips - sysmips i:iiii __sysmips sysmips
-
--s_sigsuspend sigsuspend sigsuspend i:p __syscall_sigsuspend
--
- #
- # Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
- # it's provided for compatibility, though.
-@@ -31,51 +29,3 @@
- shutdown - shutdown i:ii __shutdown shutdown
- socket - socket i:iii __socket socket
- socketpair - socketpair i:iiif __socketpair socketpair
--
--#
--# These are defined locally because the caller is also defined in this dir.
--#
--s_llseek llseek _llseek i:iiipi __syscall__llseek
--s_sigaction sigaction sigaction i:ipp __syscall_sigaction
--s_ustat ustat ustat i:ip __syscall_ustat
--sys_mknod xmknod mknod i:sii __syscall_mknod
--
--# System calls with wrappers.
--rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
--rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
--rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
--rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
--rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
--rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
--s_execve EXTRA execve i:spp __syscall_execve
--s_exit _exit exit i:i __syscall_exit
--s_fcntl fcntl fcntl i:iiF __syscall_fcntl
--s_fcntl64 fcntl64 fcntl64 i:iiF __syscall_fcntl64
--s_fstat64 fxstat64 fstat64 i:ip __syscall_fstat64
--s_ftruncate64 ftruncate64 ftruncate64 i:iiii __syscall_ftruncate64
--s_getcwd getcwd getcwd i:pi __syscall_getcwd
--s_getdents getdents getdents i:ipi __syscall_getdents
--s_getdents64 getdents getdents64 i:ipi __syscall_getdents64
--s_getpriority getpriority getpriority i:ii __syscall_getpriority
--s_ipc msgget ipc i:iiiip __syscall_ipc
--s_lstat64 lxstat64 lstat64 i:sp __syscall_lstat64
--s_mmap2 mmap64 mmap2 b:aniiii __syscall_mmap2
--s_poll poll poll i:pii __syscall_poll
--s_pread64 pread64 pread i:ibniii __syscall_pread
--s_ptrace ptrace ptrace i:iipp __syscall_ptrace
--s_pwrite64 pwrite64 pwrite i:ibniii __syscall_pwrite
--s_readahead EXTRA readahead i:iiii __syscall_readahead
--s_reboot reboot reboot i:iii __syscall_reboot
--s_setrlimit setrlimit setrlimit i:ip __syscall_setrlimit
--s_sigpending sigpending sigpending i:p __syscall_sigpending
--s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask
--s_stat64 xstat64 stat64 i:sp __syscall_stat64
--s_truncate64 truncate64 truncate64 i:siii __syscall_truncate64
--
--# Todo: we can pass 6 args in registers, no need for the wrapper
--sys_sysctl sysctl _sysctl i:p __syscall__sysctl
--sys_fstat fxstat fstat i:ip __syscall_fstat
--sys_lstat lxstat lstat i:sp __syscall_lstat
--sys_readv readv readv i:ipi __syscall_readv
--sys_stat xstat stat i:sp __syscall_stat
--sys_writev writev writev i:ipi __syscall_writev
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h 2003-01-27 13:55:20.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,282 +0,0 @@
--/* Copyright (C) 2000 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 _LINUX_MIPS_SYSDEP_H
--#define _LINUX_MIPS_SYSDEP_H 1
--
--/* There is some commonality. */
--#include <sysdeps/unix/mips/sysdep.h>
--
--/* For Linux we can use the system call table in the header file
-- /usr/include/asm/unistd.h
-- of the kernel. But these symbols do not follow the SYS_* syntax
-- so we have to redefine the `SYS_ify' macro here. */
--#undef SYS_ify
--#ifdef __STDC__
--# define SYS_ify(syscall_name) __NR_##syscall_name
--#else
--# define SYS_ify(syscall_name) __NR_/**/syscall_name
--#endif
--
--#ifdef __ASSEMBLER__
--
--/* We don't want the label for the error handler to be visible in the symbol
-- table when we define it here. */
--#ifdef __PIC__
--# define SYSCALL_ERROR_LABEL 99b
--#endif
--
--#else /* ! __ASSEMBLER__ */
--
--/* Define a macro which expands into the inline wrapper code for a system
-- call. */
--#undef INLINE_SYSCALL
--#define INLINE_SYSCALL(name, nr, args...) \
-- ({ INTERNAL_SYSCALL_DECL(err); \
-- long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-- if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-- { \
-- __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-- result_var = -1L; \
-- } \
-- result_var; })
--
--#undef INTERNAL_SYSCALL_DECL
--#define INTERNAL_SYSCALL_DECL(err) long err
--
--#undef INTERNAL_SYSCALL_ERROR_P
--#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
--
--#undef INTERNAL_SYSCALL_ERRNO
--#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
--
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
--
--#define internal_syscall0(name, err, dummy...) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %2\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall1(name, err, arg1) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %3\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall2(name, err, arg1, arg2) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %4\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall3(name, err, arg1, arg2, arg3) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "lw\t$8, %7\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "sw\t$8, 20($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5), "m" ((long)arg6) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "lw\t$8, %7\n\t" \
-- "lw\t$9, %8\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "sw\t$8, 20($29)\n\t" \
-- "sw\t$9, 24($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
--
--#endif /* __ASSEMBLER__ */
--
--#endif /* linux/mips/sysdep.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/truncate64.c 2002-09-28 16:12:57.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/truncate64.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -33,11 +34,6 @@
- int __have_no_truncate64;
- #endif
-
--/* The order of hight, low depends on endianness. */
--extern int __syscall_truncate64 (const char *__unbounded path, int dummy,
-- int high_length, int low_length);
--
--
- /* Truncate the file FD refers to to LENGTH bytes. */
- int
- truncate64 (const char *path, off64_t length)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ustat.c 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ustat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -25,8 +25,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_ustat (unsigned long dev, struct ustat *__unbounded ubuf);
--
- int
- ustat (dev_t dev, struct ustat *ubuf)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xmknod.c 2002-08-04 04:22:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xmknod.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,6 @@
- /* xmknod call using old-style Unix mknod system call.
-- Copyright (C) 1991,93,95,96,97,98,00,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 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
-@@ -26,8 +27,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_mknod (const char *__unbounded, unsigned long, unsigned int);
--
- /* 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). */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xstatconv.c 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xstatconv.c 2003-08-21 08:37:13.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Convert between the kernel's `struct stat' format, and libc's.
-- Copyright (C) 1991,1995,1996,1997,1998,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1997,1998,2000,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
-@@ -17,11 +17,22 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
-+#ifdef STAT_IS_KERNEL_STAT
-+
-+/* Dummy. */
-+struct kernel_stat;
-+
-+#else
-+
- #include <string.h>
-
-
--static inline int
--xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+int
-+__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
- {
- switch (vers)
- {
-@@ -70,8 +81,8 @@
- return 0;
- }
-
--static inline int
--xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+int
-+__xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
- {
- #ifdef XSTAT_IS_XSTAT64
- return xstat_conv (vers, kbuf, ubuf);
-@@ -118,3 +129,5 @@
- return 0;
- #endif
- }
-+
-+#endif /* ! STAT_IS_KERNEL_STAT */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mmap64.c 2002-11-09 18:24:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mmap64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -28,9 +28,6 @@
- #include "kernel-features.h"
-
- #ifdef __NR_mmap2
--/* We have the system call that takes page number instead of byte address. */
--extern void *__unbounded __syscall_mmap2 (void *__unbounded, size_t,
-- int, int, int, off_t);
-
- /* This is always 12, even on architectures where PAGE_SHIFT != 12. */
- # ifndef MMAP2_PAGE_SHIFT
---- glibc-2.3.2/sysdeps/unix/sysv/linux/net/if_arp.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/net/if_arp.h 2003-08-21 08:37:13.000000000 -0400
-@@ -83,6 +83,9 @@
- #define ARPHRD_DLCI 15 /* Frame Relay DLCI. */
- #define ARPHRD_ATM 19 /* ATM. */
- #define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id). */
-+#define ARPHRD_IEEE1394 24 /* IEEE 1394 IPv4 - RFC 2734. */
-+#define ARPHRD_EUI64 27 /* EUI-64. */
-+#define ARPHRD_INFINIBAND 32 /* InfiniBand. */
-
- /* Dummy types for non ARP hardware */
- #define ARPHRD_SLIP 256
-@@ -120,7 +123,7 @@
- #define ARPHRD_FCPP 784 /* Point to point fibrechanel. */
- #define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */
- #define ARPHRD_FCPL 786 /* Fibrechanel public loop. */
--#define ARPHRD_FCPFABRIC 787 /* Fibrechanel fabric. */
-+#define ARPHRD_FCFABRIC 787 /* Fibrechanel fabric. */
- #define ARPHRD_IEEE802_TR 800 /* Magic type ident for TR. */
- #define ARPHRD_IEEE80211 801 /* IEEE 802.11. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/netinet/igmp.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/netinet/igmp.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,89 +0,0 @@
--/* Copyright (C) 1997, 1999 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 _NETINET_IGMP_H
--#define _NETINET_IGMP_H 1
--
--#include <sys/cdefs.h>
--#include <sys/types.h>
--
--#include <asm/types.h>
--#include <linux/igmp.h>
--
--#ifdef __USE_BSD
--
--#include <netinet/in.h>
--
--__BEGIN_DECLS
--
--/*
-- * Copyright (c) 1988 Stephen Deering.
-- * Copyright (c) 1992, 1993
-- * The Regents of the University of California. All rights reserved.
-- *
-- * This code is derived from software contributed to Berkeley by
-- * Stephen Deering of Stanford University.
-- *
-- * Redistribution and use in source and binary forms, with or without
-- * modification, are permitted provided that the following conditions
-- * are met:
-- * 1. Redistributions of source code must retain the above copyright
-- * notice, this list of conditions and the following disclaimer.
-- * 2. Redistributions in binary form must reproduce the above copyright
-- * notice, this list of conditions and the following disclaimer in the
-- * documentation and/or other materials provided with the distribution.
-- * 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
-- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-- * 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.
-- *
-- * @(#)igmp.h 8.1 (Berkeley) 6/10/93
-- * $FreeBSD$
-- */
--
--struct igmp {
-- u_int8_t igmp_type; /* IGMP type */
-- u_int8_t igmp_code; /* routing code */
-- u_int16_t igmp_cksum; /* checksum */
-- struct in_addr igmp_group; /* group address */
--};
--
--/*
-- * Message types, including version number.
-- */
--#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
--#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
--#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
--#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
--
--__END_DECLS
--
--#endif
--
--#endif /* netinet/igmp.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/not-cancel.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/not-cancel.h 2003-09-19 22:37:08.000000000 -0400
-@@ -0,0 +1,60 @@
-+/* Uncancelable versions of cancelable interfaces. Linux version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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>
-+
-+/* Uncancelable open. */
-+#define open_not_cancel(name, flags, mode) \
-+ INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
-+#define open_not_cancel_2(name, flags) \
-+ INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
-+
-+/* Uncancelable close. */
-+#define close_not_cancel(fd) \
-+ INLINE_SYSCALL (close, 1, fd)
-+#define close_not_cancel_no_status(fd) \
-+ (void) ({ INTERNAL_SYSCALL_DECL (err); \
-+ INTERNAL_SYSCALL (close, err, 1, (fd)); })
-+
-+/* Uncancelable read. */
-+#define read_not_cancel(fd, buf, n) \
-+ INLINE_SYSCALL (read, 3, (fd), (buf), (n))
-+
-+/* Uncancelable write. */
-+#define write_not_cancel(fd, buf, n) \
-+ INLINE_SYSCALL (write, 3, (fd), (buf), (n))
-+
-+/* Uncancelable writev. */
-+#define writev_not_cancel_no_status(fd, iov, n) \
-+ (void) ({ INTERNAL_SYSCALL_DECL (err); \
-+ INTERNAL_SYSCALL (writev, err, 3, (fd), (iov), (n)); })
-+
-+/* Uncancelable fcntl. */
-+#define fcntl_not_cancel(fd, cmd, val) \
-+ __fcntl_nocancel (fd, cmd, val)
-+
-+/* Uncancelable waitpid. */
-+#ifdef __NR_waitpid
-+# define waitpid_not_cancel(pid, stat_loc, options) \
-+ INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options)
-+#else
-+# define waitpid_not_cancel(pid, stat_loc, options) \
-+ INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c 2002-10-23 02:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Get file-specific information about a file. Linux version.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -17,7 +17,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <unistd.h>
-+#include <errno.h>
- #include "pathconf.h"
-+#include "linux_fsinfo.h"
-
- static long int posix_pathconf (const char *file, int name);
-
-@@ -35,10 +38,144 @@
- switch (name)
- {
- case _PC_LINK_MAX:
-- return statfs_link_max (__statfs (file, &fsbuf), &fsbuf);
-+ return __statfs_link_max (__statfs (file, &fsbuf), &fsbuf);
-+
- case _PC_FILESIZEBITS:
-- return statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf);
-+ return __statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf);
-+
-+ case _PC_2_SYMLINKS:
-+ return __statfs_symlinks (__statfs (file, &fsbuf), &fsbuf);
-+
- default:
- return posix_pathconf (file, name);
- }
- }
-+
-+
-+/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-+long int
-+__statfs_link_max (int result, const struct statfs *fsbuf)
-+{
-+ if (result < 0)
-+ {
-+ if (errno == ENOSYS)
-+ /* Not possible, return the default value. */
-+ return LINUX_LINK_MAX;
-+
-+ /* Some error occured. */
-+ return -1;
-+ }
-+
-+ switch (fsbuf->f_type)
-+ {
-+ case EXT2_SUPER_MAGIC:
-+ return EXT2_LINK_MAX;
-+
-+ case MINIX_SUPER_MAGIC:
-+ case MINIX_SUPER_MAGIC2:
-+ return MINIX_LINK_MAX;
-+
-+ case MINIX2_SUPER_MAGIC:
-+ case MINIX2_SUPER_MAGIC2:
-+ return MINIX2_LINK_MAX;
-+
-+ case XENIX_SUPER_MAGIC:
-+ return XENIX_LINK_MAX;
-+
-+ case SYSV4_SUPER_MAGIC:
-+ case SYSV2_SUPER_MAGIC:
-+ return SYSV_LINK_MAX;
-+
-+ case COH_SUPER_MAGIC:
-+ return COH_LINK_MAX;
-+
-+ case UFS_MAGIC:
-+ case UFS_CIGAM:
-+ return UFS_LINK_MAX;
-+
-+ case REISERFS_SUPER_MAGIC:
-+ return REISERFS_LINK_MAX;
-+
-+ case XFS_SUPER_MAGIC:
-+ return XFS_LINK_MAX;
-+
-+ default:
-+ return LINUX_LINK_MAX;
-+ }
-+}
-+
-+
-+/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
-+long int
-+__statfs_filesize_max (int result, const struct statfs *fsbuf)
-+{
-+ if (result < 0)
-+ {
-+ if (errno == ENOSYS)
-+ /* Not possible, return the default value. */
-+ return 32;
-+
-+ /* Some error occured. */
-+ return -1;
-+ }
-+
-+ switch (fsbuf->f_type)
-+ {
-+ case EXT2_SUPER_MAGIC:
-+ case UFS_MAGIC:
-+ case UFS_CIGAM:
-+ case REISERFS_SUPER_MAGIC:
-+ case XFS_SUPER_MAGIC:
-+ case SMB_SUPER_MAGIC:
-+ case NTFS_SUPER_MAGIC:
-+ case UDF_SUPER_MAGIC:
-+ case JFS_SUPER_MAGIC:
-+ case VXFS_SUPER_MAGIC:
-+ return 64;
-+
-+ case MSDOS_SUPER_MAGIC:
-+ case JFFS_SUPER_MAGIC:
-+ case JFFS2_SUPER_MAGIC:
-+ case NCP_SUPER_MAGIC:
-+ case ROMFS_SUPER_MAGIC:
-+ return 32;
-+
-+ default:
-+ return 32;
-+ }
-+}
-+
-+
-+/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-+long int
-+__statfs_symlinks (int result, const struct statfs *fsbuf)
-+{
-+ if (result < 0)
-+ {
-+ if (errno == ENOSYS)
-+ /* Not possible, return the default value. */
-+ return 1;
-+
-+ /* Some error occured. */
-+ return -1;
-+ }
-+
-+ switch (fsbuf->f_type)
-+ {
-+ case ADFS_SUPER_MAGIC:
-+ case BFS_MAGIC:
-+ case CRAMFS_MAGIC:
-+ case DEVPTS_SUPER_MAGIC:
-+ case EFS_SUPER_MAGIC:
-+ case EFS_MAGIC:
-+ case MSDOS_SUPER_MAGIC:
-+ case NTFS_SUPER_MAGIC:
-+ case QNX4_SUPER_MAGIC:
-+ case ROMFS_SUPER_MAGIC:
-+ /* No symlink support. */
-+ return 0;
-+
-+ default:
-+ return 1;
-+ }
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h 2002-10-23 02:21:19.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Common parts of Linux implementation of pathconf and fpathconf.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -17,100 +17,18 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <unistd.h>
- #include <errno.h>
-+#include <unistd.h>
- #include <sys/statfs.h>
--#include "linux_fsinfo.h"
-+
-
- /* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-+extern long int __statfs_link_max (int result, const struct statfs *fsbuf);
-
--static inline long int
--statfs_link_max (int result, const struct statfs *fsbuf)
--{
-- if (result < 0)
-- {
-- if (errno == ENOSYS)
-- /* Not possible, return the default value. */
-- return LINUX_LINK_MAX;
--
-- /* Some error occured. */
-- return -1;
-- }
--
-- switch (fsbuf->f_type)
-- {
-- case EXT2_SUPER_MAGIC:
-- return EXT2_LINK_MAX;
--
-- case MINIX_SUPER_MAGIC:
-- case MINIX_SUPER_MAGIC2:
-- return MINIX_LINK_MAX;
--
-- case MINIX2_SUPER_MAGIC:
-- case MINIX2_SUPER_MAGIC2:
-- return MINIX2_LINK_MAX;
--
-- case XENIX_SUPER_MAGIC:
-- return XENIX_LINK_MAX;
--
-- case SYSV4_SUPER_MAGIC:
-- case SYSV2_SUPER_MAGIC:
-- return SYSV_LINK_MAX;
--
-- case COH_SUPER_MAGIC:
-- return COH_LINK_MAX;
--
-- case UFS_MAGIC:
-- case UFS_CIGAM:
-- return UFS_LINK_MAX;
--
-- case REISERFS_SUPER_MAGIC:
-- return REISERFS_LINK_MAX;
--
-- case XFS_SUPER_MAGIC:
-- return XFS_LINK_MAX;
--
-- default:
-- return LINUX_LINK_MAX;
-- }
--}
-
- /* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
-+extern long int __statfs_filesize_max (int result, const struct statfs *fsbuf);
-
--static inline long int
--statfs_filesize_max (int result, const struct statfs *fsbuf)
--{
-- if (result < 0)
-- {
-- if (errno == ENOSYS)
-- /* Not possible, return the default value. */
-- return 32;
--
-- /* Some error occured. */
-- return -1;
-- }
--
-- switch (fsbuf->f_type)
-- {
-- case EXT2_SUPER_MAGIC:
-- case UFS_MAGIC:
-- case UFS_CIGAM:
-- case REISERFS_SUPER_MAGIC:
-- case XFS_SUPER_MAGIC:
-- case SMB_SUPER_MAGIC:
-- case NTFS_SUPER_MAGIC:
-- case UDF_SUPER_MAGIC:
-- case JFS_SUPER_MAGIC:
-- return 64;
--
-- case MSDOS_SUPER_MAGIC:
-- case JFFS_SUPER_MAGIC:
-- case JFFS2_SUPER_MAGIC:
-- case NCP_SUPER_MAGIC:
-- case ROMFS_SUPER_MAGIC:
-- return 32;
--
-- default:
-- return 32;
-- }
--}
-+
-+/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-+extern long int __statfs_symlinks (int result, const struct statfs *fsbuf);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/poll.c 2002-12-15 01:01:46.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/poll.c 2003-09-19 22:37:08.000000000 -0400
-@@ -28,9 +28,6 @@
-
- #if defined __NR_poll || __ASSUME_POLL_SYSCALL > 0
-
--extern int __syscall_poll (struct pollfd *__unbounded fds,
-- unsigned int nfds, int timeout);
--
- # if __ASSUME_POLL_SYSCALL == 0
- static int __emulate_poll (struct pollfd *fds, nfds_t nfds,
- int timeout) internal_function;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise.c 2003-02-05 15:56:07.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise.c 2003-08-21 08:37:12.000000000 -0400
-@@ -24,13 +24,17 @@
- respect to the file associated with FD. */
-
- int
--posix_fadvise (int fd, __off_t offset, size_t len, int advise)
-+posix_fadvise (int fd, off_t offset, off_t len, int advise)
- {
- #ifdef __NR_fadvise64
-- return INLINE_SYSCALL (fadvise64, 5, fd,
-- __LONG_LONG_PAIR (offset >> 31, offset), len, advise);
-+ INTERNAL_SYSCALL_DECL (err);
-+ int ret = INTERNAL_SYSCALL (fadvise64, err, 5, fd,
-+ __LONG_LONG_PAIR (offset >> 31, offset), len,
-+ advise);
-+ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
- #else
-- __set_errno (ENOSYS);
-- return -1;
-+ return ENOSYS;
- #endif
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise64.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -0,0 +1,81 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <fcntl.h>
-+#include <sysdep.h>
-+#include <kernel-features.h>
-+
-+int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
-+int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
-+
-+/* Advice the system about the expected behaviour of the application with
-+ respect to the file associated with FD. */
-+
-+int
-+__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
-+{
-+#ifdef __NR_fadvise64_64
-+ INTERNAL_SYSCALL_DECL (err);
-+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
-+ __LONG_LONG_PAIR ((long) (offset >> 32),
-+ (long) offset),
-+ __LONG_LONG_PAIR ((long) (len >> 32),
-+ (long) len),
-+ advise);
-+ if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
-+ return 0;
-+# ifndef __ASSUME_FADVISE64_64_SYSCALL
-+ if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
-+# endif
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+#endif
-+#ifndef __ASSUME_FADVISE64_64_SYSCALL
-+# ifdef __NR_fadvise64
-+ if (len != (off_t) len)
-+ return EOVERFLOW;
-+
-+ INTERNAL_SYSCALL_DECL (err2);
-+ int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
-+ __LONG_LONG_PAIR ((long) (offset >> 32),
-+ (long) offset),
-+ (off_t) len, advise);
-+ if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
-+ return 0;
-+ return INTERNAL_SYSCALL_ERRNO (ret2, err2);
-+# else
-+ return ENOSYS;
-+# endif
-+#endif
-+}
-+
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
-+
-+int
-+__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
-+{
-+ return __posix_fadvise64_l64 (fd, offset, len, advise);
-+}
-+
-+versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
-+compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
-+#else
-+strong_alias (__posix_fadvise64_l64, posix_fadvise64);
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/Makefile 2002-10-17 13:06:07.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/Makefile 2003-09-19 22:37:10.000000000 -0400
-@@ -1,6 +1 @@
- 64bit-predefine = __powerpc64__
--
--ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
--endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2003-02-28 19:07:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2003-03-15 15:02:21.000000000 -0500
-@@ -45,7 +45,6 @@
- # define O_DIRECT 0400000 /* Direct disk access. */
- # define O_DIRECTORY 040000 /* Must be a directory. */
- # define O_NOFOLLOW 0100000 /* Do not follow links. */
--# define O_DIRECT 0400000 /* Direct disk access. */
- #endif
-
- #ifdef __USE_LARGEFILE64
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/PowerPC version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x0080 /* Lock the mapping. */
--# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x00080 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/stat.h 2003-01-12 03:09:45.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
-@@ -235,6 +235,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/termios.h 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/termios.h 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1999,2001,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
-@@ -40,6 +40,8 @@
- cc_t c_cc[NCCS]; /* control characters */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* output speed */
-+#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
-+#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
- };
-
- /* c_cc characters */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c 2002-11-05 03:13:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* chown() compatibility.
-- Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 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
-@@ -31,9 +31,6 @@
- This file emulates chown() under the old kernels.
- */
-
--extern int __syscall_chown (const char *__file __unbounded,
-- uid_t __owner, gid_t __group);
--
- int
- __chown (const char *file, uid_t owner, gid_t group)
- {
-@@ -42,7 +39,7 @@
- char link[PATH_MAX+2];
- char path[2*PATH_MAX+4];
- int loopct;
-- int filelen;
-+ size_t filelen;
- static int libc_old_chown = 0 /* -1=old linux, 1=new linux, 0=unknown */;
-
- if (libc_old_chown == 1)
-@@ -82,7 +79,7 @@
- ENAMETOOLONG before this, usually. */
- for (loopct = 0; loopct < 128; loopct++)
- {
-- int linklen;
-+ size_t linklen;
-
- if (err >= PATH_MAX+1)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-cache.h 2003-06-25 04:03:30.000000000 -0400
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2002-08-23 15:47:00.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2003-03-18 16:46:10.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Operating system support for run-time dynamic linker. Linux/PPC version.
-- Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2001, 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
-@@ -25,27 +25,18 @@
- extern int __cache_line_size;
- weak_extern (__cache_line_size)
-
--#define DL_PLATFORM_INIT __aux_init_cache(_dl_auxv)
--
- /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
- verify that the static extern __cache_line_size is defined by checking
-- for not NULL. If it is defined then assign the cache block size
-+ for not NULL. If it is defined then assign the cache block size
- value to __cache_line_size. */
--static inline void
--__aux_init_cache (ElfW(auxv_t) *av)
--{
-- for (; av->a_type != AT_NULL; ++av)
-- switch (av->a_type)
-- {
-- case AT_DCACHEBSIZE:
-- {
-- int *cls = & __cache_line_size;
-- if (cls != NULL)
-- *cls = av->a_un.a_val;
-- }
-- break;
-- }
--}
-+#define DL_PLATFORM_AUXV \
-+ case AT_DCACHEBSIZE: \
-+ { \
-+ int *cls = & __cache_line_size; \
-+ if (cls != NULL) \
-+ *cls = av->a_un.a_val; \
-+ } \
-+ break;
-
- #ifndef __ASSUME_STD_AUXV
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/ioctl.c 2002-11-05 03:13:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/ioctl.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 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
-@@ -25,8 +25,6 @@
- /* The user-visible size of struct termios has changed. Catch ioctl calls
- using the new-style struct termios, and translate them to old-style. */
-
--extern int __syscall_ioctl (int fd, unsigned long int request, ...);
--
- int
- __ioctl (int fd, unsigned long int request, ...)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2002-08-23 15:47:00.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2003-09-19 22:37:10.000000000 -0400
-@@ -20,4 +20,7 @@
- # s*
- scandir64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2002-08-03 22:20:06.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2003-08-21 08:37:17.000000000 -0400
-@@ -20,6 +20,7 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include <kernel-features.h>
- #include <bp-sym.h>
- #include <bp-asm.h>
-
-@@ -28,7 +29,8 @@
- all the freaky stuff we have to do to make the call useful. */
-
- /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
-- int flags [r5], void *arg [r6]); */
-+ int flags [r5], void *arg [r6], void *parent_tid [r7],
-+ void *tls [r8], void *child_tid [r9]); */
-
- ENTRY (BP_SYM (__clone))
- /* GKM FIXME: add bounds checks, where sensible. */
-@@ -43,7 +45,11 @@
-
- /* Set up stack frame for parent. */
- stwu r1,-32(r1)
-+#ifndef __ASSUME_FIXED_CLONE_SYSCALL
- stmw r29,16(r1)
-+#else
-+ stmw r30,16(r1)
-+#endif
-
- /* Set up stack frame for child. */
- clrrwi r4,r4,4
-@@ -51,14 +57,21 @@
- stwu r0,-16(r4)
-
- /* Save fn, args, stack across syscall. */
-- mr r29,r3 /* Function in r29. */
-- mr r30,r4 /* Stack pointer in r30. */
-+ mr r30,r3 /* Function in r30. */
-+#ifndef __ASSUME_FIXED_CLONE_SYSCALL
-+ mr r29,r4 /* Stack pointer in r29. */
-+#endif
- mr r31,r6 /* Argument in r31. */
-
- /* 'flags' argument is first parameter to clone syscall. (The other
- argument is the stack pointer, already in r4.) */
- mr r3,r5
-
-+ /* Move the parent_tid, child_tid and tls arguments. */
-+ mr r5,r7
-+ mr r6,r8
-+ mr r7,r9
-+
- /* Do the call. */
- DO_CALL(SYS_ify(clone))
-
-@@ -67,13 +80,16 @@
- crandc cr1*4+eq,cr1*4+eq,cr0*4+so
- bne- cr1,L(parent) /* The '-' is to minimise the race. */
-
-+#ifndef __ASSUME_FIXED_CLONE_SYSCALL
- /* On at least mklinux DR3a5, clone() doesn't actually change
- the stack pointer. I'm pretty sure this is a bug, because
- it adds a race condition if a signal is sent to a thread
- just after it is created (in the previous three instructions). */
-- mr r1,r30
-+ mr r1,r29
-+#endif
-+
- /* Call procedure. */
-- mtctr r29
-+ mtctr r30
- mr r3,r31
- bctrl
- /* Call _exit with result from procedure. */
-@@ -81,7 +97,11 @@
-
- L(parent):
- /* Parent. Restore registers & return. */
-+#ifndef __ASSUME_FIXED_CLONE_SYSCALL
- lmw r29,16(r1)
-+#else
-+ lmw r30,16(r1)
-+#endif
- addi r1,r1,32
- bnslr+
- b JUMPTARGET(__syscall_error)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2003-06-17 23:36:23.000000000 -0400
-@@ -0,0 +1,126 @@
-+/* Save current context.
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <sysdep.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+ENTRY(__getcontext)
-+ stw r0,_UC_GREGS+(PT_R0*4)(r3)
-+ stw r1,_UC_GREGS+(PT_R1*4)(r3)
-+ mflr r0
-+ stwu r1,-16(r1)
-+ stw r0,20(r1)
-+ stw r0,_UC_GREGS+(PT_LNK*4)(r3)
-+ stw r0,_UC_GREGS+(PT_NIP*4)(r3)
-+ stw r2,_UC_GREGS+(PT_R2*4)(r3)
-+ stw r4,_UC_GREGS+(PT_R4*4)(r3)
-+ stw r5,_UC_GREGS+(PT_R5*4)(r3)
-+ stw r6,_UC_GREGS+(PT_R6*4)(r3)
-+ stw r7,_UC_GREGS+(PT_R7*4)(r3)
-+ stw r8,_UC_GREGS+(PT_R8*4)(r3)
-+ stw r9,_UC_GREGS+(PT_R9*4)(r3)
-+ stw r10,_UC_GREGS+(PT_R10*4)(r3)
-+ stw r11,_UC_GREGS+(PT_R11*4)(r3)
-+ stw r12,_UC_GREGS+(PT_R12*4)(r3)
-+ stw r13,_UC_GREGS+(PT_R13*4)(r3)
-+ stw r14,_UC_GREGS+(PT_R14*4)(r3)
-+ stw r15,_UC_GREGS+(PT_R15*4)(r3)
-+ stw r16,_UC_GREGS+(PT_R16*4)(r3)
-+ stw r17,_UC_GREGS+(PT_R17*4)(r3)
-+ stw r18,_UC_GREGS+(PT_R18*4)(r3)
-+ stw r19,_UC_GREGS+(PT_R19*4)(r3)
-+ stw r20,_UC_GREGS+(PT_R20*4)(r3)
-+ stw r21,_UC_GREGS+(PT_R21*4)(r3)
-+ stw r22,_UC_GREGS+(PT_R22*4)(r3)
-+ stw r23,_UC_GREGS+(PT_R23*4)(r3)
-+ stw r24,_UC_GREGS+(PT_R24*4)(r3)
-+ stw r25,_UC_GREGS+(PT_R25*4)(r3)
-+ stw r26,_UC_GREGS+(PT_R26*4)(r3)
-+ stw r27,_UC_GREGS+(PT_R27*4)(r3)
-+ stw r28,_UC_GREGS+(PT_R28*4)(r3)
-+ stw r29,_UC_GREGS+(PT_R29*4)(r3)
-+ stw r30,_UC_GREGS+(PT_R30*4)(r3)
-+ stw r31,_UC_GREGS+(PT_R31*4)(r3)
-+ mfctr r0
-+ stw r0,_UC_GREGS+(PT_CTR*4)(r3)
-+ mfxer r0
-+ stw r0,_UC_GREGS+(PT_XER*4)(r3)
-+ mfcr r0
-+ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
-+
-+ /* Set the return value of getcontext to "success". R3 is the only
-+ register whose value is not preserved in the saved context. */
-+ li r0,0
-+ stw r0,_UC_GREGS+(PT_R3*4)(r3)
-+
-+ /* Zero fill fields that can't be set in user state. */
-+ stw r0,_UC_GREGS+(PT_MSR*4)(r3)
-+ stw r0,_UC_GREGS+(PT_MQ*4)(r3)
-+
-+ /* Save the floating-point registers */
-+ stfd fp0,_UC_FREGS+(0*8)(r3)
-+ stfd fp1,_UC_FREGS+(1*8)(r3)
-+ stfd fp2,_UC_FREGS+(2*8)(r3)
-+ stfd fp3,_UC_FREGS+(3*8)(r3)
-+ stfd fp4,_UC_FREGS+(4*8)(r3)
-+ stfd fp5,_UC_FREGS+(5*8)(r3)
-+ stfd fp6,_UC_FREGS+(6*8)(r3)
-+ stfd fp7,_UC_FREGS+(7*8)(r3)
-+ stfd fp8,_UC_FREGS+(8*8)(r3)
-+ stfd fp9,_UC_FREGS+(9*8)(r3)
-+ stfd fp10,_UC_FREGS+(10*8)(r3)
-+ stfd fp11,_UC_FREGS+(11*8)(r3)
-+ stfd fp12,_UC_FREGS+(12*8)(r3)
-+ stfd fp13,_UC_FREGS+(13*8)(r3)
-+ stfd fp14,_UC_FREGS+(14*8)(r3)
-+ stfd fp15,_UC_FREGS+(15*8)(r3)
-+ stfd fp16,_UC_FREGS+(16*8)(r3)
-+ stfd fp17,_UC_FREGS+(17*8)(r3)
-+ stfd fp18,_UC_FREGS+(18*8)(r3)
-+ stfd fp19,_UC_FREGS+(19*8)(r3)
-+ stfd fp20,_UC_FREGS+(20*8)(r3)
-+ stfd fp21,_UC_FREGS+(21*8)(r3)
-+ stfd fp22,_UC_FREGS+(22*8)(r3)
-+ stfd fp23,_UC_FREGS+(23*8)(r3)
-+ stfd fp24,_UC_FREGS+(24*8)(r3)
-+ stfd fp25,_UC_FREGS+(25*8)(r3)
-+ stfd fp26,_UC_FREGS+(26*8)(r3)
-+ stfd fp27,_UC_FREGS+(27*8)(r3)
-+ stfd fp28,_UC_FREGS+(28*8)(r3)
-+ stfd fp29,_UC_FREGS+(29*8)(r3)
-+ mffs fp0
-+ stfd fp30,_UC_FREGS+(30*8)(r3)
-+ stfd fp31,_UC_FREGS+(31*8)(r3)
-+ stfd fp0,_UC_FREGS+(32*8)(r3)
-+
-+ addi r5,r3,_UC_SIGMASK
-+ li r4,0
-+ li r3,SIG_BLOCK
-+ bl JUMPTARGET(sigprocmask)
-+
-+ lwz r0,20(r1)
-+ addi r1,r1,16
-+ mtlr r0
-+ blr
-+PSEUDO_END(__getcontext)
-+
-+weak_alias(__getcontext, getcontext)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2003-06-17 23:36:38.000000000 -0400
-@@ -0,0 +1,105 @@
-+/* Set up a context to call a function.
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <sysdep.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+ENTRY(__makecontext)
-+ /* Set up the first 7 args to the function in its registers */
-+ stw r6,_UC_GREGS+(PT_R3*4)(r3)
-+ stw r7,_UC_GREGS+(PT_R4*4)(r3)
-+ stw r8,_UC_GREGS+(PT_R5*4)(r3)
-+ stw r9,_UC_GREGS+(PT_R6*4)(r3)
-+ stw r10,_UC_GREGS+(PT_R7*4)(r3)
-+ lwz r8,8(r1)
-+ lwz r9,12(r1)
-+ stw r8,_UC_GREGS+(PT_R8*4)(r3)
-+ stw r9,_UC_GREGS+(PT_R9*4)(r3)
-+
-+ /* Set the NIP to the start of the function */
-+ stw r4,_UC_GREGS+(PT_NIP*4)(r3)
-+
-+ /* Set the function's r31 to ucp->uc_link for the exitcode below. */
-+ lwz r7,_UC_LINK(r3)
-+ stw r7,_UC_GREGS+(PT_R31*4)(r3)
-+
-+ /* Set the function's LR to point to the exitcode below. */
-+#ifdef PIC
-+ mflr r0
-+ bl 1f
-+1: mflr r6
-+ addi r6,r6,L(exitcode)-1b
-+ mtlr r0
-+#else
-+ lis r6,L(exitcode)@ha
-+ addi r6,r6,L(exitcode)@l
-+#endif
-+ stw r6,_UC_GREGS+(PT_LNK*4)(r3)
-+
-+ /*
-+ * Set up the stack frame for the function.
-+ * If we have more than 5 args to the function (8 args to makecontext),
-+ * there will be some arguments on the stack which have to end up
-+ * in registers. If there are more than 8 args to the function,
-+ * we have to copy (argc - 8) args from our stack to the functions'
-+ * stack (and allow space for them in the frame).
-+ */
-+ lwz r4,_UC_STACK_SP(r3)
-+ lwz r8,_UC_STACK_SIZE(r3)
-+ add r4,r4,r8
-+ rlwinm r4,r4,0,0,27 /* round down to 16-byte boundary */
-+ addi r7,r4,-16 /* stack frame for fn's caller */
-+ cmpwi r5,8
-+ blt 2f /* less than 8 args is easy */
-+ lwz r10,16(r1)
-+ stw r10,_UC_GREGS+(PT_R10*4)(r3)
-+ beq 2f /* if exactly 8 args */
-+ subi r9,r5,3
-+ subi r5,r5,8
-+ rlwinm r9,r9,2,0,27
-+ subf r7,r9,r4
-+ mtctr r5 /* copy the 9th and following args */
-+ addi r6,r1,16
-+ addi r8,r7,4
-+3: lwzu r10,4(r6)
-+ stwu r10,4(r8)
-+ bdnz 3b
-+2: stw r7,_UC_GREGS+(PT_R1*4)(r3)
-+ li r6,0
-+ stw r6,0(r7)
-+
-+ blr
-+
-+/*
-+ * If the function returns, it comes here. We put ucp->uc_link in
-+ * r31, which is a callee-saved register. We have to continue with
-+ * the context that r31 points to, or exit if it is 0.
-+ */
-+L(exitcode):
-+ mr. r3,r31
-+ beq 4f
-+ bl JUMPTARGET(__setcontext)
-+4: bl HIDDEN_JUMPTARGET(exit)
-+ b 4b
-+
-+END(__makecontext)
-+weak_alias(__makecontext, makecontext)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c 2003-09-01 20:39:23.000000000 -0400
-@@ -0,0 +1,40 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <fcntl.h>
-+#include <sysdep.h>
-+
-+/* Advice the system about the expected behaviour of the application with
-+ respect to the file associated with FD. */
-+
-+int
-+posix_fadvise (int fd, off_t offset, off_t len, int advise)
-+{
-+#ifdef __NR_fadvise64
-+ INTERNAL_SYSCALL_DECL (err);
-+ int ret = INTERNAL_SYSCALL (fadvise64, err, 6, fd, 0,
-+ __LONG_LONG_PAIR (offset >> 31, offset), len,
-+ advise);
-+ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+ return 0;
-+#else
-+ return ENOSYS;
-+#endif
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c 2003-09-01 20:39:37.000000000 -0400
-@@ -0,0 +1,77 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <fcntl.h>
-+#include <sysdep.h>
-+#include <kernel-features.h>
-+
-+int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
-+int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
-+
-+/* Advice the system about the expected behaviour of the application with
-+ respect to the file associated with FD. */
-+
-+int
-+__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
-+{
-+#ifdef __NR_fadvise64_64
-+ INTERNAL_SYSCALL_DECL (err);
-+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
-+ __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
-+ __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
-+ if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
-+ return 0;
-+# ifndef __ASSUME_FADVISE64_64_SYSCALL
-+ if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
-+# endif
-+ return INTERNAL_SYSCALL_ERRNO (ret, err);
-+#endif
-+#ifndef __ASSUME_FADVISE64_64_SYSCALL
-+# ifdef __NR_fadvise64
-+ if (len != (off_t) len)
-+ return EOVERFLOW;
-+
-+ INTERNAL_SYSCALL_DECL (err2);
-+ int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 6, fd, 0,
-+ __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
-+ (off_t) len, advise);
-+ if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
-+ return 0;
-+ return INTERNAL_SYSCALL_ERRNO (ret2, err2);
-+# else
-+ return ENOSYS;
-+# endif
-+#endif
-+}
-+
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
-+
-+int
-+__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
-+{
-+ return __posix_fadvise64_l64 (fd, offset, len, advise);
-+}
-+
-+versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
-+compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
-+#else
-+strong_alias (__posix_fadvise64_l64, posix_fadvise64);
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 2003-06-17 23:36:57.000000000 -0400
-@@ -0,0 +1,149 @@
-+/* Jump to a new context.
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <sysdep.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+ENTRY(__setcontext)
-+ mflr r0
-+ stwu r1,-16(r1)
-+ stw r0,20(r1)
-+ stw r31,12(r1)
-+ mr r31,r3
-+
-+ /*
-+ * If this ucontext refers to the point where we were interrupted
-+ * by a signal, we have to use the rt_sigreturn system call to
-+ * return to the context so we get both LR and CTR restored.
-+ *
-+ * Otherwise, the context we are restoring is either just after
-+ * a procedure call (getcontext/swapcontext) or at the beginning
-+ * of a procedure call (makecontext), so we don't need to restore
-+ * r0, xer, ctr. We don't restore r2 since it will be used as
-+ * the TLS pointer.
-+ */
-+ lwz r0,_UC_GREGS+(PT_MSR*4)(r31)
-+ cmpwi r0,0
-+ bne L(do_sigret)
-+
-+ /* Restore the signal mask */
-+ li r5,0
-+ addi r4,r3,_UC_SIGMASK
-+ li r3,SIG_SETMASK
-+ bl JUMPTARGET(sigprocmask)
-+ cmpwi r3,0
-+ bne L(error_exit)
-+
-+ /* Restore the floating-point registers */
-+ lfd fp31,_UC_FREGS+(32*8)(r31)
-+ lfd fp0,_UC_FREGS+(0*8)(r31)
-+ mtfsf 0xff,fp31
-+ lfd fp1,_UC_FREGS+(1*8)(r31)
-+ lfd fp2,_UC_FREGS+(2*8)(r31)
-+ lfd fp3,_UC_FREGS+(3*8)(r31)
-+ lfd fp4,_UC_FREGS+(4*8)(r31)
-+ lfd fp5,_UC_FREGS+(5*8)(r31)
-+ lfd fp6,_UC_FREGS+(6*8)(r31)
-+ lfd fp7,_UC_FREGS+(7*8)(r31)
-+ lfd fp8,_UC_FREGS+(8*8)(r31)
-+ lfd fp9,_UC_FREGS+(9*8)(r31)
-+ lfd fp10,_UC_FREGS+(10*8)(r31)
-+ lfd fp11,_UC_FREGS+(11*8)(r31)
-+ lfd fp12,_UC_FREGS+(12*8)(r31)
-+ lfd fp13,_UC_FREGS+(13*8)(r31)
-+ lfd fp14,_UC_FREGS+(14*8)(r31)
-+ lfd fp15,_UC_FREGS+(15*8)(r31)
-+ lfd fp16,_UC_FREGS+(16*8)(r31)
-+ lfd fp17,_UC_FREGS+(17*8)(r31)
-+ lfd fp18,_UC_FREGS+(18*8)(r31)
-+ lfd fp19,_UC_FREGS+(19*8)(r31)
-+ lfd fp20,_UC_FREGS+(20*8)(r31)
-+ lfd fp21,_UC_FREGS+(21*8)(r31)
-+ lfd fp22,_UC_FREGS+(22*8)(r31)
-+ lfd fp23,_UC_FREGS+(23*8)(r31)
-+ lfd fp24,_UC_FREGS+(24*8)(r31)
-+ lfd fp25,_UC_FREGS+(25*8)(r31)
-+ lfd fp26,_UC_FREGS+(26*8)(r31)
-+ lfd fp27,_UC_FREGS+(27*8)(r31)
-+ lfd fp28,_UC_FREGS+(28*8)(r31)
-+ lfd fp29,_UC_FREGS+(29*8)(r31)
-+ lfd fp30,_UC_FREGS+(30*8)(r31)
-+ lfd fp31,_UC_FREGS+(31*8)(r31)
-+
-+ /* Restore LR and CCR, and set CTR to the NIP value */
-+ lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
-+ lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
-+ lwz r5,_UC_GREGS+(PT_CCR*4)(r31)
-+ mtlr r3
-+ mtctr r4
-+ mtcr r5
-+
-+ /* Restore the general registers */
-+ lwz r1,_UC_GREGS+(PT_R1*4)(r31)
-+ lwz r3,_UC_GREGS+(PT_R3*4)(r31)
-+ lwz r4,_UC_GREGS+(PT_R4*4)(r31)
-+ lwz r5,_UC_GREGS+(PT_R5*4)(r31)
-+ lwz r6,_UC_GREGS+(PT_R6*4)(r31)
-+ lwz r7,_UC_GREGS+(PT_R7*4)(r31)
-+ lwz r8,_UC_GREGS+(PT_R8*4)(r31)
-+ lwz r9,_UC_GREGS+(PT_R9*4)(r31)
-+ lwz r10,_UC_GREGS+(PT_R10*4)(r31)
-+ lwz r11,_UC_GREGS+(PT_R11*4)(r31)
-+ lwz r12,_UC_GREGS+(PT_R12*4)(r31)
-+ lwz r13,_UC_GREGS+(PT_R13*4)(r31)
-+ lwz r14,_UC_GREGS+(PT_R14*4)(r31)
-+ lwz r15,_UC_GREGS+(PT_R15*4)(r31)
-+ lwz r16,_UC_GREGS+(PT_R16*4)(r31)
-+ lwz r17,_UC_GREGS+(PT_R17*4)(r31)
-+ lwz r18,_UC_GREGS+(PT_R18*4)(r31)
-+ lwz r19,_UC_GREGS+(PT_R19*4)(r31)
-+ lwz r20,_UC_GREGS+(PT_R20*4)(r31)
-+ lwz r21,_UC_GREGS+(PT_R21*4)(r31)
-+ lwz r22,_UC_GREGS+(PT_R22*4)(r31)
-+ lwz r23,_UC_GREGS+(PT_R23*4)(r31)
-+ lwz r24,_UC_GREGS+(PT_R24*4)(r31)
-+ lwz r25,_UC_GREGS+(PT_R25*4)(r31)
-+ lwz r26,_UC_GREGS+(PT_R26*4)(r31)
-+ lwz r27,_UC_GREGS+(PT_R27*4)(r31)
-+ lwz r28,_UC_GREGS+(PT_R28*4)(r31)
-+ lwz r29,_UC_GREGS+(PT_R29*4)(r31)
-+ lwz r30,_UC_GREGS+(PT_R30*4)(r31)
-+ lwz r31,_UC_GREGS+(PT_R31*4)(r31)
-+
-+ bctr
-+
-+L(error_exit):
-+ lwz r31,12(r1)
-+ lwz r0,20(r1)
-+ addi r1,r1,16
-+ mtlr r0
-+ blr
-+
-+L(do_sigret):
-+ addi r1,r3,-0xd0
-+ li r0,SYS_ify(rt_sigreturn)
-+ sc
-+ /* NOTREACHED */
-+
-+PSEUDO_END(__setcontext)
-+
-+weak_alias(__setcontext, setcontext)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2003-01-06 19:20:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2003-08-21 08:37:17.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1996, 1997, 1999, 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
-@@ -47,7 +47,9 @@
-
- .text
- ENTRY(__socket)
-+ cfi_startproc
- stwu r1,-48(r1)
-+ cfi_adjust_cfa_offset(48)
- #if NARGS >= 1
- stw r3,stackblock(r1)
- #endif
-@@ -91,6 +93,7 @@
- .Lsocket_cancel:
- mflr r9
- stw r9,52(r1)
-+ cfi_offset (lr, 4)
- CENABLE
- stw r3,16(r1)
- li r3,P(SOCKOP_,socket)
-@@ -109,6 +112,7 @@
- addi r1,r1,48
- PSEUDO_RET
- #endif
-+ cfi_endproc
-
- PSEUDO_END (__socket)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2003-06-17 23:37:19.000000000 -0400
-@@ -0,0 +1,233 @@
-+/* Save current context and jump to a new context.
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <sysdep.h>
-+
-+#define __ASSEMBLY__
-+#include <asm/ptrace.h>
-+#include "ucontext_i.h"
-+
-+ENTRY(__swapcontext)
-+ /* Save the current context */
-+ stw r0,_UC_GREGS+(PT_R0*4)(r3)
-+ stw r1,_UC_GREGS+(PT_R1*4)(r3)
-+ mflr r0
-+ stwu r1,-16(r1)
-+ stw r0,20(r1)
-+ stw r31,12(r1)
-+ stw r31,_UC_GREGS+(PT_R31*4)(r3)
-+ mr r31,r4 /* new context pointer */
-+ stw r0,_UC_GREGS+(PT_LNK*4)(r3)
-+ stw r0,_UC_GREGS+(PT_NIP*4)(r3)
-+ stw r2,_UC_GREGS+(PT_R2*4)(r3)
-+ stw r4,_UC_GREGS+(PT_R4*4)(r3)
-+ stw r5,_UC_GREGS+(PT_R5*4)(r3)
-+ stw r6,_UC_GREGS+(PT_R6*4)(r3)
-+ stw r7,_UC_GREGS+(PT_R7*4)(r3)
-+ stw r8,_UC_GREGS+(PT_R8*4)(r3)
-+ stw r9,_UC_GREGS+(PT_R9*4)(r3)
-+ stw r10,_UC_GREGS+(PT_R10*4)(r3)
-+ stw r11,_UC_GREGS+(PT_R11*4)(r3)
-+ stw r12,_UC_GREGS+(PT_R12*4)(r3)
-+ stw r13,_UC_GREGS+(PT_R13*4)(r3)
-+ stw r14,_UC_GREGS+(PT_R14*4)(r3)
-+ stw r15,_UC_GREGS+(PT_R15*4)(r3)
-+ stw r16,_UC_GREGS+(PT_R16*4)(r3)
-+ stw r17,_UC_GREGS+(PT_R17*4)(r3)
-+ stw r18,_UC_GREGS+(PT_R18*4)(r3)
-+ stw r19,_UC_GREGS+(PT_R19*4)(r3)
-+ stw r20,_UC_GREGS+(PT_R20*4)(r3)
-+ stw r21,_UC_GREGS+(PT_R21*4)(r3)
-+ stw r22,_UC_GREGS+(PT_R22*4)(r3)
-+ stw r23,_UC_GREGS+(PT_R23*4)(r3)
-+ stw r24,_UC_GREGS+(PT_R24*4)(r3)
-+ stw r25,_UC_GREGS+(PT_R25*4)(r3)
-+ stw r26,_UC_GREGS+(PT_R26*4)(r3)
-+ stw r27,_UC_GREGS+(PT_R27*4)(r3)
-+ stw r28,_UC_GREGS+(PT_R28*4)(r3)
-+ stw r29,_UC_GREGS+(PT_R29*4)(r3)
-+ stw r30,_UC_GREGS+(PT_R30*4)(r3)
-+ mfctr r0
-+ stw r0,_UC_GREGS+(PT_CTR*4)(r3)
-+ mfxer r0
-+ stw r0,_UC_GREGS+(PT_XER*4)(r3)
-+ mfcr r0
-+ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
-+
-+ /* Set the return value of swapcontext to "success". R3 is the only
-+ register whose value is not preserved in the saved context. */
-+ li r0,0
-+ stw r0,_UC_GREGS+(PT_R3*4)(r3)
-+
-+ /* Zero fill fields that can't be set in user state. */
-+ stw r0,_UC_GREGS+(PT_MSR*4)(r3)
-+ stw r0,_UC_GREGS+(PT_MQ*4)(r3)
-+
-+ /* Save the floating-point registers */
-+ stfd fp0,_UC_FREGS+(0*8)(r3)
-+ stfd fp1,_UC_FREGS+(1*8)(r3)
-+ stfd fp2,_UC_FREGS+(2*8)(r3)
-+ stfd fp3,_UC_FREGS+(3*8)(r3)
-+ stfd fp4,_UC_FREGS+(4*8)(r3)
-+ stfd fp5,_UC_FREGS+(5*8)(r3)
-+ stfd fp6,_UC_FREGS+(6*8)(r3)
-+ stfd fp7,_UC_FREGS+(7*8)(r3)
-+ stfd fp8,_UC_FREGS+(8*8)(r3)
-+ stfd fp9,_UC_FREGS+(9*8)(r3)
-+ stfd fp10,_UC_FREGS+(10*8)(r3)
-+ stfd fp11,_UC_FREGS+(11*8)(r3)
-+ stfd fp12,_UC_FREGS+(12*8)(r3)
-+ stfd fp13,_UC_FREGS+(13*8)(r3)
-+ stfd fp14,_UC_FREGS+(14*8)(r3)
-+ stfd fp15,_UC_FREGS+(15*8)(r3)
-+ stfd fp16,_UC_FREGS+(16*8)(r3)
-+ stfd fp17,_UC_FREGS+(17*8)(r3)
-+ stfd fp18,_UC_FREGS+(18*8)(r3)
-+ stfd fp19,_UC_FREGS+(19*8)(r3)
-+ stfd fp20,_UC_FREGS+(20*8)(r3)
-+ stfd fp21,_UC_FREGS+(21*8)(r3)
-+ stfd fp22,_UC_FREGS+(22*8)(r3)
-+ stfd fp23,_UC_FREGS+(23*8)(r3)
-+ stfd fp24,_UC_FREGS+(24*8)(r3)
-+ stfd fp25,_UC_FREGS+(25*8)(r3)
-+ stfd fp26,_UC_FREGS+(26*8)(r3)
-+ stfd fp27,_UC_FREGS+(27*8)(r3)
-+ stfd fp28,_UC_FREGS+(28*8)(r3)
-+ stfd fp29,_UC_FREGS+(29*8)(r3)
-+ mffs fp0
-+ stfd fp30,_UC_FREGS+(30*8)(r3)
-+ stfd fp31,_UC_FREGS+(31*8)(r3)
-+ stfd fp0,_UC_FREGS+(32*8)(r3)
-+
-+ addi r5,r3,_UC_SIGMASK
-+ addi r4,r4,_UC_SIGMASK
-+ li r3,SIG_SETMASK
-+ bl JUMPTARGET(sigprocmask)
-+ cmpwi r3,0
-+ bne L(error_exit)
-+
-+ /*
-+ * If the new ucontext refers to the point where we were interrupted
-+ * by a signal, we have to use the rt_sigreturn system call to
-+ * return to the context so we get both LR and CTR restored.
-+ *
-+ * Otherwise, the context we are restoring is either just after
-+ * a procedure call (getcontext/swapcontext) or at the beginning
-+ * of a procedure call (makecontext), so we don't need to restore
-+ * r0, xer, ctr. We don't restore r2 since it will be used as
-+ * the TLS pointer.
-+ */
-+ lwz r0,_UC_GREGS+(PT_MSR*4)(r31)
-+ cmpwi r0,0
-+ bne L(do_sigret)
-+
-+ /* Restore the floating-point registers */
-+ lfd fp31,_UC_FREGS+(32*8)(r31)
-+ lfd fp0,_UC_FREGS+(0*8)(r31)
-+ mtfsf 0xff,fp31
-+ lfd fp1,_UC_FREGS+(1*8)(r31)
-+ lfd fp2,_UC_FREGS+(2*8)(r31)
-+ lfd fp3,_UC_FREGS+(3*8)(r31)
-+ lfd fp4,_UC_FREGS+(4*8)(r31)
-+ lfd fp5,_UC_FREGS+(5*8)(r31)
-+ lfd fp6,_UC_FREGS+(6*8)(r31)
-+ lfd fp7,_UC_FREGS+(7*8)(r31)
-+ lfd fp8,_UC_FREGS+(8*8)(r31)
-+ lfd fp9,_UC_FREGS+(9*8)(r31)
-+ lfd fp10,_UC_FREGS+(10*8)(r31)
-+ lfd fp11,_UC_FREGS+(11*8)(r31)
-+ lfd fp12,_UC_FREGS+(12*8)(r31)
-+ lfd fp13,_UC_FREGS+(13*8)(r31)
-+ lfd fp14,_UC_FREGS+(14*8)(r31)
-+ lfd fp15,_UC_FREGS+(15*8)(r31)
-+ lfd fp16,_UC_FREGS+(16*8)(r31)
-+ lfd fp17,_UC_FREGS+(17*8)(r31)
-+ lfd fp18,_UC_FREGS+(18*8)(r31)
-+ lfd fp19,_UC_FREGS+(19*8)(r31)
-+ lfd fp20,_UC_FREGS+(20*8)(r31)
-+ lfd fp21,_UC_FREGS+(21*8)(r31)
-+ lfd fp22,_UC_FREGS+(22*8)(r31)
-+ lfd fp23,_UC_FREGS+(23*8)(r31)
-+ lfd fp24,_UC_FREGS+(24*8)(r31)
-+ lfd fp25,_UC_FREGS+(25*8)(r31)
-+ lfd fp26,_UC_FREGS+(26*8)(r31)
-+ lfd fp27,_UC_FREGS+(27*8)(r31)
-+ lfd fp28,_UC_FREGS+(28*8)(r31)
-+ lfd fp29,_UC_FREGS+(29*8)(r31)
-+ lfd fp30,_UC_FREGS+(30*8)(r31)
-+ lfd fp31,_UC_FREGS+(31*8)(r31)
-+
-+ /* Restore LR and CCR, and set CTR to the NIP value */
-+ lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
-+ lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
-+ lwz r5,_UC_GREGS+(PT_CCR*4)(r31)
-+ mtlr r3
-+ mtctr r4
-+ mtcr r5
-+
-+ /* Restore the general registers */
-+ lwz r1,_UC_GREGS+(PT_R1*4)(r31)
-+ lwz r3,_UC_GREGS+(PT_R3*4)(r31)
-+ lwz r4,_UC_GREGS+(PT_R4*4)(r31)
-+ lwz r5,_UC_GREGS+(PT_R5*4)(r31)
-+ lwz r6,_UC_GREGS+(PT_R6*4)(r31)
-+ lwz r7,_UC_GREGS+(PT_R7*4)(r31)
-+ lwz r8,_UC_GREGS+(PT_R8*4)(r31)
-+ lwz r9,_UC_GREGS+(PT_R9*4)(r31)
-+ lwz r10,_UC_GREGS+(PT_R10*4)(r31)
-+ lwz r11,_UC_GREGS+(PT_R11*4)(r31)
-+ lwz r12,_UC_GREGS+(PT_R12*4)(r31)
-+ lwz r13,_UC_GREGS+(PT_R13*4)(r31)
-+ lwz r14,_UC_GREGS+(PT_R14*4)(r31)
-+ lwz r15,_UC_GREGS+(PT_R15*4)(r31)
-+ lwz r16,_UC_GREGS+(PT_R16*4)(r31)
-+ lwz r17,_UC_GREGS+(PT_R17*4)(r31)
-+ lwz r18,_UC_GREGS+(PT_R18*4)(r31)
-+ lwz r19,_UC_GREGS+(PT_R19*4)(r31)
-+ lwz r20,_UC_GREGS+(PT_R20*4)(r31)
-+ lwz r21,_UC_GREGS+(PT_R21*4)(r31)
-+ lwz r22,_UC_GREGS+(PT_R22*4)(r31)
-+ lwz r23,_UC_GREGS+(PT_R23*4)(r31)
-+ lwz r24,_UC_GREGS+(PT_R24*4)(r31)
-+ lwz r25,_UC_GREGS+(PT_R25*4)(r31)
-+ lwz r26,_UC_GREGS+(PT_R26*4)(r31)
-+ lwz r27,_UC_GREGS+(PT_R27*4)(r31)
-+ lwz r28,_UC_GREGS+(PT_R28*4)(r31)
-+ lwz r29,_UC_GREGS+(PT_R29*4)(r31)
-+ lwz r30,_UC_GREGS+(PT_R30*4)(r31)
-+ lwz r31,_UC_GREGS+(PT_R31*4)(r31)
-+
-+ bctr
-+
-+L(error_exit):
-+ lwz r31,12(r1)
-+ lwz r0,20(r1)
-+ addi r1,r1,16
-+ mtlr r0
-+ blr
-+
-+L(do_sigret):
-+ addi r1,r31,-0xd0
-+ li r0,SYS_ify(rt_sigreturn)
-+ sc
-+ /* NOTREACHED */
-+
-+PSEUDO_END(__swapcontext)
-+
-+weak_alias(__swapcontext, swapcontext)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list 2003-01-06 19:20:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -1,11 +1,5 @@
- # File name Caller Syscall name # args Strong name Weak names
-
- # System calls with wrappers.
--rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
--rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
--rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
--rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
--rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
--rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
- oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
- oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h 2003-01-12 14:30:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h 2003-05-24 14:06:23.000000000 -0400
-@@ -117,32 +117,38 @@
- # define LOADARGS_1(name, arg1) \
- LOADARGS_0(name, 0); \
- extern void __illegally_sized_syscall_##name##_arg1 (void); \
-- if (sizeof (arg1) > 4) __illegally_sized_syscall_##name##_arg1 (); \
-+ if (__builtin_classify_type (arg1) != 5 && sizeof (arg1) > 4) \
-+ __illegally_sized_syscall_##name##_arg1 (); \
- r3 = (long) (arg1)
- # define LOADARGS_2(name, arg1, arg2) \
- LOADARGS_1(name, arg1); \
- extern void __illegally_sized_syscall_##name##_arg2 (void); \
-- if (sizeof (arg2) > 4) __illegally_sized_syscall_##name##_arg2 (); \
-+ if (__builtin_classify_type (arg2) != 5 && sizeof (arg2) > 4) \
-+ __illegally_sized_syscall_##name##_arg2 (); \
- r4 = (long) (arg2)
- # define LOADARGS_3(name, arg1, arg2, arg3) \
- LOADARGS_2(name, arg1, arg2); \
- extern void __illegally_sized_syscall_##name##_arg3 (void); \
-- if (sizeof (arg3) > 4) __illegally_sized_syscall_##name##_arg3 (); \
-+ if (__builtin_classify_type (arg3) != 5 && sizeof (arg3) > 4) \
-+ __illegally_sized_syscall_##name##_arg3 (); \
- r5 = (long) (arg3)
- # define LOADARGS_4(name, arg1, arg2, arg3, arg4) \
- LOADARGS_3(name, arg1, arg2, arg3); \
- extern void __illegally_sized_syscall_##name##_arg4 (void); \
-- if (sizeof (arg4) > 4) __illegally_sized_syscall_##name##_arg4 (); \
-+ if (__builtin_classify_type (arg4) != 5 && sizeof (arg4) > 4) \
-+ __illegally_sized_syscall_##name##_arg4 (); \
- r6 = (long) (arg4)
- # define LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5) \
- LOADARGS_4(name, arg1, arg2, arg3, arg4); \
- extern void __illegally_sized_syscall_##name##_arg5 (void); \
-- if (sizeof (arg5) > 4) __illegally_sized_syscall_##name##_arg5 (); \
-+ if (__builtin_classify_type (arg5) != 5 && sizeof (arg5) > 4) \
-+ __illegally_sized_syscall_##name##_arg5 (); \
- r7 = (long) (arg5)
- # define LOADARGS_6(name, arg1, arg2, arg3, arg4, arg5, arg6) \
- LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5); \
- extern void __illegally_sized_syscall_##name##_arg6 (void); \
-- if (sizeof (arg6) > 4) __illegally_sized_syscall_##name##_arg6 (); \
-+ if (__builtin_classify_type (arg6) != 5 && sizeof (arg6) > 4) \
-+ __illegally_sized_syscall_##name##_arg6 (); \
- r8 = (long) (arg6)
-
- # define ASM_INPUT_0 "0" (r0)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 2003-06-17 23:37:33.000000000 -0400
-@@ -0,0 +1,30 @@
-+/* Offsets and other constants needed in the *context() function
-+ implementation.
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#define SIG_BLOCK 0
-+#define SIG_SETMASK 2
-+
-+#define _UC_LINK 4
-+#define _UC_STACK_SP 8
-+#define _UC_STACK_SIZE 16
-+#define _UC_SIGMASK 64
-+#define _UC_GREGS 192
-+#define _UC_FREGS 384
-+#define _UC_VREGS 656
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2002-09-17 19:50:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2003-08-21 08:37:17.000000000 -0400
-@@ -24,6 +24,9 @@
- #include <bp-asm.h>
-
- .comm __curbrk,8,8
-+ .section ".toc","aw"
-+.LC__curbrk:
-+ .tc __curbrk[TC],__curbrk
- .section ".text"
- ENTRY (BP_SYM (__brk))
- DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */
-@@ -32,7 +35,7 @@
- std r3,48(r1)
- DO_CALL(SYS_ify(brk))
- ld r6,48(r1)
-- ld r5,__curbrk@got(r2)
-+ ld r5,.LC__curbrk@toc(r2)
- std r3,0(r5)
- cmpld r6,r3
- addi r1,r1,64
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2002-09-17 19:50:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2003-03-15 15:02:21.000000000 -0500
-@@ -28,7 +28,8 @@
- all the freaky stuff we have to do to make the call useful. */
-
- /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
-- int flags [r5], void *arg [r6]); */
-+ int flags [r5], void *arg [r6], void *parent_tid [r7],
-+ void *tls [r8], void *child_tid [r9]); */
-
- ENTRY (BP_SYM (__clone))
- /* GKM FIXME: add bounds checks, where sensible. */
-@@ -37,8 +38,8 @@
-
- /* Check for child_stack == NULL || fn == NULL. */
- cmpdi cr0,r4,0
-- ld r7,0(r3)
-- cmpdi cr1,r7,0
-+ ld r0,0(r3)
-+ cmpdi cr1,r0,0
- cror cr0*4+eq,cr1*4+eq,cr0*4+eq
- beq- cr0,L(badargs)
-
-@@ -61,6 +62,10 @@
- /* 'flags' argument is first parameter to clone syscall. (The other
- argument is the stack pointer, already in r4.) */
- mr r3,r5
-+ /* Move the parent_tid, child_tid and tls arguments. */
-+ mr r5,r7
-+ mr r6,r8
-+ mr r7,r9
-
- /* Do the call. */
- DO_CALL(SYS_ify(clone))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c 2003-02-03 16:13:55.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c 2003-04-12 11:39:50.000000000 -0400
-@@ -27,9 +27,15 @@
- const fenv_t *
- __fe_nomask_env (void)
- {
--#ifdef __ASSUME_NEW_PRCTL_SYSCALL
-+#if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE
-+ int result;
- INTERNAL_SYSCALL_DECL (err);
-- INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
-+ result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
-+# ifndef __ASSUME_NEW_PRCTL_SYSCALL
-+ if (INTERNAL_SYSCALL_ERROR_P (result, err)
-+ && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL)
-+ __set_errno (ENOSYS);
-+# endif
- #else
- __set_errno (ENOSYS);
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2003-01-15 18:01:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2003-08-21 08:37:17.000000000 -0400
-@@ -51,7 +51,9 @@
-
- .text
- ENTRY(__socket)
-+ cfi_startproc
- stdu r1,-144(r1)
-+ cfi_adjust_cfa_offset(144)
- #if NARGS >= 1
- std r3,stackblock(r1)
- #endif
-@@ -95,6 +97,7 @@
- .Lsocket_cancel:
- mflr r9
- std r9,144+16(r1)
-+ cfi_offset (lr, 16)
- CENABLE
- std r3,72(r1)
- li r3,P(SOCKOP_,socket)
-@@ -113,6 +116,7 @@
- addi r1,r1,144
- PSEUDO_RET
- #endif
-+ cfi_endproc
- PSEUDO_END (__socket)
-
- weak_alias (__socket, socket)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list 2003-02-05 16:40:43.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -1,47 +1,4 @@
- # File name Caller Syscall name # args Strong name Weak names
-
- # System calls with wrappers.
--s_ioctl ioctl ioctl i:iiI __syscall_ioctl
--s_ipc msgget ipc i:iiiip __syscall_ipc
--s_llseek llseek _llseek i:iiipi __syscall__llseek
--s_readahead readahead readahead i:iii __syscall_readahead
--s_chown chown chown i:sii __syscall_chown
--s_execve execve execve i:spp __syscall_execve
--rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
--rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
--rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
--rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
--rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
--rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
--s_fcntl fcntl fcntl i:iiF __syscall_fcntl
--s_fcntl64 fcntl64 fcntl64 i:iiF __syscall_fcntl64
--s_fstat64 fxstat64 fstat64 i:ip __syscall_fstat64
--s_getcwd getcwd getcwd i:pi __syscall_getcwd
--s_getdents getdents getdents i:ipi __syscall_getdents
--s_getdents64 getdents getdents64 i:ipi __syscall_getdents64
--s_getpmsg getpmsg getpmsg i:ipppp __syscall_getpmsg
--s_getpriority getpriority getpriority i:ii __syscall_getpriority
--s_getrlimit getrlimit getrlimit i:ip __syscall_getrlimit
--s_lstat64 lxstat64 lstat64 i:sp __syscall_lstat64
--s_mmap2 mmap64 mmap2 b:aniiii __syscall_mmap2
--s_poll poll poll i:pii __syscall_poll
--posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
--s_ptrace ptrace ptrace i:iipp __syscall_ptrace
--s_putpmsg putpmsg putpmsg i:ippii __syscall_putpmsg
--s_reboot reboot reboot i:iii __syscall_reboot
--s_setrlimit setrlimit setrlimit i:ip __syscall_setrlimit
--s_sigaction sigaction sigaction i:ipp __syscall_sigaction
--s_sigpending sigpending sigpending i:p __syscall_sigpending
--s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask
--s_sigsuspend sigsuspend sigsuspend i:iii __syscall_sigsuspend
--s_stat64 xstat64 stat64 i:sp __syscall_stat64
--s_sysctl sysctl _sysctl i:p __syscall__sysctl
--s_ugetrlimit getrlimit ugetrlimit i:ip __syscall_ugetrlimit
--s_ustat ustat ustat i:ip __syscall_ustat
--s_vfork vfork vfork i: __syscall_vfork
--sys_fstat fxstat fstat i:ip __syscall_fstat
--sys_lstat lxstat lstat i:sp __syscall_lstat
--sys_mknod xmknod mknod i:pii __syscall_mknod
--sys_readv readv readv i:ipi __syscall_readv
--sys_stat xstat stat i:sp __syscall_stat
--sys_writev writev writev i:ipi __syscall_writev
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h 2003-01-28 22:15:53.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h 2003-05-24 14:06:23.000000000 -0400
-@@ -130,32 +130,38 @@
- #define LOADARGS_1(name, arg1) \
- LOADARGS_0(name, 0); \
- extern void __illegally_sized_syscall_##name##_arg1 (void); \
-- if (sizeof (arg1) > 8) __illegally_sized_syscall_##name##_arg1 (); \
-+ if (__builtin_classify_type (arg1) != 5 && sizeof (arg1) > 8) \
-+ __illegally_sized_syscall_##name##_arg1 (); \
- r3 = (long) (arg1)
- #define LOADARGS_2(name, arg1, arg2) \
- LOADARGS_1(name, arg1); \
- extern void __illegally_sized_syscall_##name##_arg2 (void); \
-- if (sizeof (arg2) > 8) __illegally_sized_syscall_##name##_arg2 (); \
-+ if (__builtin_classify_type (arg2) != 5 && sizeof (arg2) > 8) \
-+ __illegally_sized_syscall_##name##_arg2 (); \
- r4 = (long) (arg2)
- #define LOADARGS_3(name, arg1, arg2, arg3) \
- LOADARGS_2(name, arg1, arg2); \
- extern void __illegally_sized_syscall_##name##_arg3 (void); \
-- if (sizeof (arg3) > 8) __illegally_sized_syscall_##name##_arg3 (); \
-+ if (__builtin_classify_type (arg3) != 5 && sizeof (arg3) > 8) \
-+ __illegally_sized_syscall_##name##_arg3 (); \
- r5 = (long) (arg3)
- #define LOADARGS_4(name, arg1, arg2, arg3, arg4) \
- LOADARGS_3(name, arg1, arg2, arg3); \
- extern void __illegally_sized_syscall_##name##_arg4 (void); \
-- if (sizeof (arg4) > 8) __illegally_sized_syscall_##name##_arg4 (); \
-+ if (__builtin_classify_type (arg4) != 5 && sizeof (arg4) > 8) \
-+ __illegally_sized_syscall_##name##_arg4 (); \
- r6 = (long) (arg4)
- #define LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5) \
- LOADARGS_4(name, arg1, arg2, arg3, arg4); \
- extern void __illegally_sized_syscall_##name##_arg5 (void); \
-- if (sizeof (arg5) > 8) __illegally_sized_syscall_##name##_arg5 (); \
-+ if (__builtin_classify_type (arg5) != 5 && sizeof (arg5) > 8) \
-+ __illegally_sized_syscall_##name##_arg5 (); \
- r7 = (long) (arg5)
- #define LOADARGS_6(name, arg1, arg2, arg3, arg4, arg5, arg6) \
- LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5); \
- extern void __illegally_sized_syscall_##name##_arg6 (void); \
-- if (sizeof (arg6) > 8) __illegally_sized_syscall_##name##_arg6 (); \
-+ if (__builtin_classify_type (arg6) != 5 && sizeof (arg6) > 8) \
-+ __illegally_sized_syscall_##name##_arg6 (); \
- r8 = (long) (arg6)
-
- #define ASM_INPUT_0 "0" (r0)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-01-16 19:56:42.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-08-21 08:37:17.000000000 -0400
-@@ -26,9 +26,47 @@
- included in <signal.h>. */
- #include <bits/sigcontext.h>
-
--/* A machine context is exactly a sigcontext. */
-+#if __WORDSIZE == 32
-+
-+/* Number of general registers. */
-+#define NGREG 48
-+
-+/* Container for all general registers. */
-+typedef unsigned long gregset_t[NGREG];
-+
-+/* Container for floating-point registers and status */
-+typedef struct _libc_fpstate
-+{
-+ double fpregs[32];
-+ double fpscr;
-+ unsigned int _pad[2];
-+} fpregset_t;
-+
-+/* Container for Altivec/VMX registers and status.
-+ Needs to be aligned on a 16-byte boundary. */
-+typedef struct _libc_vrstate
-+{
-+ unsigned int vrregs[32][4];
-+ unsigned int vscr;
-+ unsigned int vrsave;
-+ unsigned int _pad[2];
-+} vrregset_t;
-+
-+/* Context to describe whole processor state. */
-+typedef struct
-+{
-+ gregset_t gregs;
-+ fpregset_t fpregs;
-+ vrregset_t vrregs __attribute__((__aligned__(16)));
-+} mcontext_t;
-+
-+#else
-+
-+/* For 64-bit, a machine context is exactly a sigcontext. */
- typedef struct sigcontext mcontext_t;
-
-+#endif
-+
- /* Userlevel context. */
- typedef struct ucontext
- {
-@@ -36,12 +74,14 @@
- struct ucontext *uc_link;
- stack_t uc_stack;
- #if __WORDSIZE == 32
-- mcontext_t uc_mcontext;
-- __sigset_t uc_sigmask;
--#else
-+ /* These fields are for backwards compatibility. */
-+ int uc_pad[7];
-+ mcontext_t *uc_regs;
-+ unsigned int uc_oldsigmask[2];
-+ int uc_pad2;
-+#endif
- sigset_t uc_sigmask;
- mcontext_t uc_mcontext; /* last for extensibility */
--#endif
- } ucontext_t;
-
- #endif /* sys/ucontext.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/syscalls.list 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/syscalls.list 2003-09-02 22:55:30.000000000 -0400
-@@ -0,0 +1,3 @@
-+# File name Caller Syscall name # args Strong name Weak names
-+
-+waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pread.c 2002-12-15 02:04:46.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pread.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -37,10 +37,6 @@
-
- #if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
-
--/* The order of hi, lo depends on endianness. */
--extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- off_t offset_hi, off_t offset_lo);
--
- # if __ASSUME_PREAD_SYSCALL == 0
- static ssize_t __emulate_pread (int fd, void *buf, size_t count,
- off_t offset) internal_function;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pread64.c 2002-12-15 02:08:47.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pread64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -36,9 +36,6 @@
-
- #if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
-
--extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- off_t offset_hi, off_t offset_lo);
--
- # if __ASSUME_PREAD_SYSCALL == 0
- static ssize_t __emulate_pread64 (int fd, void *buf, size_t count,
- off64_t offset) internal_function;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/prof-freq.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/prof-freq.c 2003-07-03 13:32:19.000000000 -0400
-@@ -0,0 +1,51 @@
-+/* Determine realtime clock frequency.
-+ Copyright (C) 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 <sys/time.h>
-+#include <libc-internal.h>
-+#include "kernel-features.h"
-+#include <ldsodefs.h>
-+
-+
-+int
-+__profile_frequency (void)
-+{
-+#ifdef __ASSUME_AT_CLKTCK
-+ return GL(dl_clktck);
-+#else
-+ if (GL(dl_clktck) != 0)
-+ return GL(dl_clktck);
-+
-+ struct itimerval tim;
-+
-+ tim.it_interval.tv_sec = 0;
-+ tim.it_interval.tv_usec = 1;
-+ tim.it_value.tv_sec = 0;
-+ tim.it_value.tv_usec = 0;
-+
-+ __setitimer (ITIMER_REAL, &tim, 0);
-+ __setitimer (ITIMER_REAL, 0, &tim);
-+
-+ if (tim.it_interval.tv_usec < 2)
-+ return 0;
-+
-+ return 1000000 / tim.it_interval.tv_usec;
-+#endif
-+}
-+libc_hidden_def (__profile_frequency)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ptrace.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ptrace.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,2000,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
-@@ -26,9 +26,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern long int __syscall_ptrace (int, pid_t, void *__unbounded,
-- void *__unbounded);
--
- long int
- ptrace (enum __ptrace_request request, ...)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite.c 2002-12-15 02:16:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -37,11 +37,6 @@
-
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
--/* The order of hi, lo depends on endianness. */
--extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf,
-- size_t count, off_t offset_hi,
-- off_t offset_lo);
--
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
- off_t offset) internal_function;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite64.c 2002-12-15 02:20:14.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite64.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -36,9 +36,6 @@
-
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
--extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
-- off_t offset_hi, off_t offset_lo);
--
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count,
- off64_t offset) internal_function;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/readahead.c 2002-05-30 14:37:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/readahead.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Provide kernel hint to read ahead.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -26,10 +26,6 @@
-
- #ifdef __NR_readahead
-
--extern int __syscall_readahead (int fd, off_t offset_hi, off_t offset_lo,
-- size_t count);
--
--
- ssize_t
- __readahead (int fd, loff_t offset, size_t count)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/readv.c 2002-12-15 19:57:48.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/readv.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,5 +1,5 @@
- /* readv supports all Linux kernels >= 2.0.
-- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,2000,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
-@@ -26,7 +26,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern ssize_t __syscall_readv (int, __const struct iovec *__unbounded, int);
- static ssize_t __atomic_readv_replacement (int, __const struct iovec *,
- int) internal_function;
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/reboot.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/reboot.c 2003-09-19 22:37:08.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -22,8 +22,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_reboot (int magic, int magic_too, int flag);
--
- /* Call kernel with additional two arguments the syscall requires. */
- int
- reboot (int howto)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigaction.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigaction.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,28 +0,0 @@
--/* Copyright (C) 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. */
--
--#include <errno.h>
--#include <signal.h>
--
--int
--__syscall_rt_sigaction (int sig, const struct sigaction *act,
-- struct sigaction *oact, size_t setsize)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigpending.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigpending.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,27 +0,0 @@
--/* Copyright (C) 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. */
--
--#include <errno.h>
--#include <signal.h>
--
--int
--__syscall_rt_sigpending (sigset_t *set, size_t setsize)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigprocmask.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigprocmask.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,28 +0,0 @@
--/* Copyright (C) 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. */
--
--#include <errno.h>
--#include <signal.h>
--
--int
--__syscall_rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset,
-- size_t setsize)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigqueueinfo.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigqueueinfo.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,28 +0,0 @@
--/* Copyright (C) 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. */
--
--#include <errno.h>
--#include <signal.h>
--#include <sys/types.h>
--
--int
--__syscall_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *uinfo)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigreturn.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigreturn.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,27 +0,0 @@
--/* Copyright (C) 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. */
--
--#include <errno.h>
--#include <signal.h>
--
--int
--__syscall_rt_sigreturn (struct sigcontext *ctx)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigsuspend.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,35 +0,0 @@
--/* Copyright (C) 1997, 1998 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 <signal.h>
--#define __need_NULL
--#include <stddef.h>
--
--int
--__syscall_rt_sigsuspend (const sigset_t *set, size_t setsize)
--{
-- if (set == NULL)
-- {
-- __set_errno (EINVAL);
-- return -1;
-- }
--
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigtimedwait.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigtimedwait.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,36 +0,0 @@
--/* Copyright (C) 1997, 1998 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 <signal.h>
--#define __need_NULL
--#include <stddef.h>
--
--int
--__syscall_rt_sigtimedwait (const sigset_t *set, siginfo_t *info,
-- const struct timespec *timeout, size_t setsize)
--{
-- if (set == NULL)
-- {
-- __set_errno (EINVAL);
-- return -1;
-- }
--
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h 2002-07-11 17:39:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/s390 version.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -52,12 +52,14 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h 2002-12-04 19:23:11.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h 2003-04-24 20:06:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -111,8 +112,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -129,8 +130,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-@@ -269,9 +272,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -301,8 +301,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/stat.h 2002-12-31 15:08:58.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
-@@ -224,6 +224,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2002-10-23 19:48:54.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2003-08-21 08:37:17.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -41,7 +41,8 @@
- #endif
- __fsid_t f_fsid;
- int f_namelen;
-- int f_spare[6];
-+ int f_frsize;
-+ int f_spare[5];
- };
-
- #ifdef __USE_LARGEFILE64
-@@ -56,9 +57,11 @@
- __fsfilcnt64_t f_ffree;
- __fsid_t f_fsid;
- int f_namelen;
-- int f_spare[6];
-+ int f_frsize;
-+ int f_spare[5];
- };
- #endif
-
- /* Tell code we have this member. */
- #define _STATFS_F_NAMELEN
-+#define _STATFS_F_FRSIZE
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2003-09-19 22:37:10.000000000 -0400
-@@ -0,0 +1,72 @@
-+/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version.
-+ Copyright (C) 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. */
-+
-+#ifndef _BITS_TYPES_H
-+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_TYPESIZES_H
-+#define _BITS_TYPESIZES_H 1
-+
-+/* See <bits/types.h> for the meaning of these macros. This file exists so
-+ that <bits/types.h> need not vary across different GNU platforms. */
-+
-+#define __DEV_T_TYPE __UQUAD_TYPE
-+#define __UID_T_TYPE __U32_TYPE
-+#define __GID_T_TYPE __U32_TYPE
-+#define __INO_T_TYPE __ULONGWORD_TYPE
-+#define __INO64_T_TYPE __UQUAD_TYPE
-+#define __MODE_T_TYPE __U32_TYPE
-+#define __NLINK_T_TYPE __UWORD_TYPE
-+#define __OFF_T_TYPE __SLONGWORD_TYPE
-+#define __OFF64_T_TYPE __SQUAD_TYPE
-+#define __PID_T_TYPE __S32_TYPE
-+#define __RLIM_T_TYPE __ULONGWORD_TYPE
-+#define __RLIM64_T_TYPE __UQUAD_TYPE
-+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-+#define __ID_T_TYPE __U32_TYPE
-+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-+#define __TIME_T_TYPE __SLONGWORD_TYPE
-+#define __USECONDS_T_TYPE __U32_TYPE
-+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
-+#define __DADDR_T_TYPE __S32_TYPE
-+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-+#define __KEY_T_TYPE __S32_TYPE
-+#define __CLOCKID_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
-+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-+#define __FSID_T_TYPE struct { int __val[2]; }
-+#if defined __GNUC__ && __GNUC__ <= 2
-+/* Compatibility with g++ 2.95.x. */
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-+#else
-+/* size_t is unsigned long int on s390 -m31. */
-+#define __SSIZE_T_TYPE __SLONGWORD_TYPE
-+#endif
-+
-+/* Number of descriptors that can fit in an `fd_set'. */
-+#define __FD_SETSIZE 1024
-+
-+
-+#endif /* bits/typesizes.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/dl-cache.h 2003-06-25 04:03:17.000000000 -0400
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/Versions 2002-08-23 15:47:00.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/Versions 2003-09-19 22:37:10.000000000 -0400
-@@ -23,5 +23,7 @@
- # v*
- versionsort64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- }
--
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/chown.c 2003-02-20 15:05:15.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/chown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -37,14 +37,9 @@
- has therefore to route calls to chown to the old chown function.
- */
-
--extern int __syscall_chown (const char *__file,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- /* Running under Linux > 2.1.80. */
-
- #ifdef __NR_chown32
--extern int __syscall_chown32 (const char *__file,
-- __kernel_uid32_t owner, __kernel_gid32_t group);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2001, 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
-@@ -26,13 +26,7 @@
- #include <linux/posix_types.h>
- #include "kernel-features.h"
-
--extern int __syscall_lchown (const char *__unbounded __file,
-- __kernel_uid_t __owner, __kernel_gid_t __group);
--
- # ifdef __NR_lchown32
--extern int __syscall_lchown32 (const char *__unbounded __file,
-- __kernel_uid32_t __owner,
-- __kernel_gid32_t __group);
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/socket.S 2003-01-05 00:04:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/socket.S 2003-08-21 08:37:17.000000000 -0400
-@@ -47,12 +47,24 @@
-
- .globl __socket
- ENTRY(__socket)
-+ cfi_startproc
-
- /* Save registers and setup stack. */
- stm %r6,%r15,24(%r15) /* save registers */
-+ cfi_offset (%r15, -36)
-+ cfi_offset (%r14, -40)
-+ cfi_offset (%r13, -44)
-+ cfi_offset (%r12, -48)
-+ cfi_offset (%r11, -52)
-+ cfi_offset (%r10, -56)
-+ cfi_offset (%r9, -60)
-+ cfi_offset (%r8, -64)
-+ cfi_offset (%r7, -68)
-+ cfi_offset (%r6, -72)
- lr %r1,%r15
- l %r0,4(0,%r15) /* load eos */
- ahi %r15,-120 /* buy stack space */
-+ cfi_adjust_cfa_offset (120)
- st %r1,0(0,%r15) /* store back chain */
- st %r0,4(0,%r15) /* store eos */
-
-@@ -124,6 +136,7 @@
- 2: .long CENABLE-1b
- 3: .long CDISABLE-1b
- #endif
-+ cfi_endproc
-
- SYSCALL_ERROR_HANDLER
- END (__socket)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S 2001-07-07 15:21:35.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S 2003-03-15 15:02:21.000000000 -0500
-@@ -37,15 +37,19 @@
- lr %r4,%r5 /* third parameter */
- lr %r5,%r6 /* fourth parameter */
- l %r6,192(%r15) /* fifth parameter */
-- basr %r7,0
--.L0: ex %r1,.L1-.L0(%r7) /* lsb of R1 is subsituted as SVC number */
-
-- l %r15,0(0,%r15) /* load back chain */
-- lm %r6,15,24(%r15) /* load registers */
-+ basr %r7,0
-+0: cl %r1,4f-0b(%r7) /* svc number < 256? */
-+ jl 2f
-+1: svc 0
-+ j 3f
-+2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
-+3: l %r15,0(%r15) /* load back chain */
-+ lm %r6,15,24(%r15) /* load registers */
-
- lhi %r0,-4095
- clr %r2,%r0 /* check R2 for error */
- jnl SYSCALL_ERROR_LABEL
- br %r14 /* return to caller */
--.L1: .word 0x0A00 /* opcode for SVC 0 */
-+4: .long 256
- PSEUDO_END (syscall)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2003-08-21 08:37:17.000000000 -0400
-@@ -59,6 +59,27 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args); \
-+ lcr %r2,%r2
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
- #ifndef PIC
- # define SYSCALL_ERROR_LABEL 0f
- # define SYSCALL_ERROR_HANDLER \
-@@ -133,11 +154,22 @@
- */
-
- #define DO_CALL(syscall, args) \
-- svc SYS_ify (syscall)
-+ .if SYS_ify (syscall) < 256; \
-+ svc SYS_ify (syscall); \
-+ .else; \
-+ lhi %r1,SYS_ify (syscall); \
-+ svc 0; \
-+ .endif
-
- #define ret \
- br 14
-
-+#define ret_NOERRNO \
-+ br 14
-+
-+#define ret_ERRVAL \
-+ br 14
-+
- #endif /* __ASSEMBLER__ */
-
- #undef INLINE_SYSCALL
-@@ -154,8 +186,8 @@
- #undef INTERNAL_SYSCALL_DECL
- #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+#undef INTERNAL_SYSCALL_DIRECT
-+#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
- ({ \
- DECLARGS_##nr(args) \
- register int _ret asm("2"); \
-@@ -166,6 +198,25 @@
- : "memory" ); \
- _ret; })
-
-+#undef INTERNAL_SYSCALL_SVC0
-+#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
-+ ({ \
-+ DECLARGS_##nr(args) \
-+ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
-+ register int _ret asm("2"); \
-+ asm volatile ( \
-+ "svc 0\n\t" \
-+ : "=d" (_ret) \
-+ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
-+ : "memory" ); \
-+ _ret; })
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+ (((__NR_##name) < 256) ? \
-+ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
-+ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
-+
- #undef INTERNAL_SYSCALL_ERROR_P
- #define INTERNAL_SYSCALL_ERROR_P(val, err) \
- ((unsigned int) (val) >= 0xfffff001u)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c 2002-08-13 10:29:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* fxstat using old-style Unix fstat system call. 64 bit S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -28,8 +28,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_fstat (int, struct stat *);
--
- /* Get information about the file FD in BUF. */
- int
- __fxstat (int vers, int fd, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h 2003-06-12 12:15:15.000000000 -0400
-@@ -0,0 +1,21 @@
-+/* Definition of `struct stat' used in the kernel.
-+ Copyright (C) 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. */
-+
-+#define STAT_IS_KERNEL_STAT 1
-+#define XSTAT_IS_XSTAT64 1
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c 2002-08-13 10:29:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* lxstat using old-style Unix fstat system call. 64 bit S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -28,8 +28,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_lstat (const char *, struct stat *);
--
- /* Get information about the file FD in BUF. */
- int
- __lxstat (int vers, const char *name, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c 2003-01-02 18:26:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c 2003-09-19 22:37:10.000000000 -0400
-@@ -26,9 +26,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_rt_sigaction (int, const struct sigaction *,
-- struct sigaction *, size_t);
--
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. This is the definition. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c 2001-07-07 15:21:36.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 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
-@@ -26,9 +26,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_rt_sigpending (sigset_t *, size_t);
--
--
- /* Change the set of blocked signals to SET,
- wait until a signal arrives, and restore the set of blocked signals. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c 2001-07-07 15:21:36.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 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
-@@ -26,9 +26,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_rt_sigprocmask (int, const sigset_t *,
-- sigset_t *, size_t);
--
- /* Get and/or change the set of blocked signals. */
- int
- __sigprocmask (how, set, oset)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c 2003-01-05 00:04:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c 2003-09-19 22:37:10.000000000 -0400
-@@ -23,9 +23,6 @@
- #include <sysdep-cancel.h>
- #include <sys/syscall.h>
-
--extern int __syscall_rt_sigsuspend (const sigset_t *, size_t);
--
--
- /* Change the set of blocked signals to SET,
- wait until a signal arrives, and restore the set of blocked signals. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/socket.S 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/socket.S 2003-08-21 08:37:17.000000000 -0400
-@@ -47,12 +47,24 @@
-
- .globl __socket
- ENTRY(__socket)
-+ cfi_startproc
-
- /* Save registers and setup stack. */
- stmg %r6,%r15,48(%r15) /* Save registers. */
-+ cfi_offset (%r15,-40)
-+ cfi_offset (%r14,-48)
-+ cfi_offset (%r13,-56)
-+ cfi_offset (%r12,-64)
-+ cfi_offset (%r11,-72)
-+ cfi_offset (%r10,-80)
-+ cfi_offset (%r9,-88)
-+ cfi_offset (%r8,-96)
-+ cfi_offset (%r7,-104)
-+ cfi_offset (%r6,-112)
- lgr %r1,%r15
- lg %r0,8(%r15) /* Load eos. */
- ahi %r15,-208 /* Buy stack space. */
-+ cfi_adjust_cfa_offset (208)
- stg %r1,0(%r15) /* Store back chain. */
- stg %r0,8(%r15) /* Store eos. */
-
-@@ -118,6 +130,8 @@
- j 4b
- #endif
-
-+ cfi_endproc
-+
- PSEUDO_END (__socket)
-
- #ifndef NO_WEAK_ALIAS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S 2003-03-15 15:02:21.000000000 -0500
-@@ -37,16 +37,20 @@
- lgr %r4,%r5 /* Third parameter. */
- lgr %r5,%r6 /* Fourth parameter. */
- lg %r6,320(%r15) /* Fifth parameter. */
-- basr %r7,0
--.L0: ex %r1,.L1-.L0(%r7) /* Lsb of R1 is subsituted as SVC number. */
-
-- lg %r15,0(%r15) /* Load back chain. */
-+ basr %r7,0
-+0: clg %r1,4f-0b(%r7) /* svc number < 256? */
-+ jl 2f
-+1: svc 0
-+ j 3f
-+2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
-+3: lg %r15,0(%r15) /* load back chain */
- lmg %r6,15,48(%r15) /* Load registers. */
-
- lghi %r0,-4095
- clgr %r2,%r0 /* Check R2 for error. */
- jgnl SYSCALL_ERROR_LABEL
- br %r14 /* Return to caller. */
--.L1: .word 0x0A00 /* Opcode for SVC 0. */
-+4: .quad 256
- PSEUDO_END (syscall)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list 2003-02-05 16:42:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
-@@ -2,15 +2,15 @@
-
- llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
- lseek llseek -
--pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
--pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
-+pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
-+pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
- fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
- statfs - statfs i:sp __statfs statfs statfs64
- getpeername - getpeername i:ipp __getpeername getpeername
- ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64 __ftruncate64
- truncate - truncate 2 truncate truncate64
- getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
--posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
- setrlimit - setrlimit 2 __setrlimit setrlimit setrlimit64
- vfork - vfork 0 __vfork vfork
-
-@@ -45,10 +45,3 @@
- shutdown - shutdown i:ii __shutdown shutdown
- socket - socket i:iii __socket socket
- socketpair - socketpair i:iiif __socketpair socketpair
--
--rt_sigaction EXTRA rt_sigaction i:ippi __syscall_rt_sigaction rt_sigaction
--rt_sigpending EXTRA rt_sigpending i:pi __syscall_rt_sigpending rt_sigpending
--rt_sigprocmask EXTRA rt_sigprocmask i:ippi __syscall_rt_sigprocmask rt_sigprocmask
--rt_sigqueueinfo EXTRA rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo rt_sigqueueinfo
--rt_sigsuspend EXTRA rt_sigsuspend i:pi __syscall_rt_sigsuspend rt_sigsuspend
--rt_sigtimedwait EXTRA rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait rt_sigtimedwait
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2003-01-28 05:20:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2003-08-21 08:37:17.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Assembler macros for 64 bit S/390.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -31,6 +31,18 @@
- /* In newer 2.1 kernels __NR_syscall is missing so we define it here. */
- #define __NR_syscall 0
-
-+/*
-+ * Newer kernel versions redefined __NR_pread and __NR_pwrite to
-+ * __NR_pread64 and __NR_pwrite64. We use the new names but have
-+ * to define them on our own for compiling against older kernels.
-+ */
-+#ifndef __NR_pread64
-+# define __NR_pread64 __NR_pread
-+#endif
-+#ifndef __NR_pwrite64
-+# define __NR_pwrite64 __NR_pwrite
-+#endif
-+
- #undef SYS_ify
- #define SYS_ify(syscall_name) __NR_##syscall_name
-
-@@ -60,6 +72,29 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ SYSCALL_ERROR_HANDLER; \
-+ END (name)
-+
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args); \
-+ lcgr %r2,%r2
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ SYSCALL_ERROR_HANDLER; \
-+ END (name)
-+
- #ifndef PIC
- # define SYSCALL_ERROR_LABEL syscall_error
- # define SYSCALL_ERROR_HANDLER
-@@ -122,32 +157,43 @@
- */
-
- #define DO_CALL(syscall, args) \
-- svc SYS_ify (syscall)
-+ .if SYS_ify (syscall) < 256; \
-+ svc SYS_ify (syscall); \
-+ .else; \
-+ lghi %r1,SYS_ify (syscall); \
-+ svc 0; \
-+ .endif
-
- #define ret \
- br 14
-
-+#define ret_NOERRNO \
-+ br 14
-+
-+#define ret_ERRVAL \
-+ br 14
-+
- #endif /* __ASSEMBLER__ */
-
- #undef INLINE_SYSCALL
- #define INLINE_SYSCALL(name, nr, args...) \
- ({ \
-- unsigned int _ret = INTERNAL_SYSCALL (name, , nr, args); \
-+ long _ret = INTERNAL_SYSCALL (name, , nr, args); \
- if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_ret, ), 0)) \
- { \
- __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \
- _ret = -1; \
- } \
-- (int) _ret; })
-+ _ret; })
-
- #undef INTERNAL_SYSCALL_DECL
- #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+#undef INTERNAL_SYSCALL_DIRECT
-+#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
- ({ \
- DECLARGS_##nr(args) \
-- register int _ret asm("2"); \
-+ register long _ret asm("2"); \
- asm volatile ( \
- "svc %b1\n\t" \
- : "=d" (_ret) \
-@@ -155,9 +201,28 @@
- : "memory" ); \
- _ret; })
-
-+#undef INTERNAL_SYSCALL_SVC0
-+#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
-+ ({ \
-+ DECLARGS_##nr(args) \
-+ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
-+ register long _ret asm("2"); \
-+ asm volatile ( \
-+ "svc 0\n\t" \
-+ : "=d" (_ret) \
-+ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
-+ : "memory" ); \
-+ _ret; })
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+ (((__NR_##name) < 256) ? \
-+ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
-+ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
-+
- #undef INTERNAL_SYSCALL_ERROR_P
- #define INTERNAL_SYSCALL_ERROR_P(val, err) \
-- ((unsigned int) (val) >= 0xfffff001u)
-+ ((unsigned long) (val) >= -4095UL)
-
- #undef INTERNAL_SYSCALL_ERRNO
- #define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c 2002-08-13 10:29:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c 2003-09-19 22:37:10.000000000 -0400
-@@ -1,5 +1,5 @@
- /* xstat using old-style Unix stat system call. 64 bit S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -28,8 +28,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_stat (const char *, struct stat *);
--
- /* Get information about the file NAME in BUF. */
- int
- __xstat (int vers, const char *name, struct stat *buf)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/semtimedop.c 2003-08-21 08:37:17.000000000 -0400
-@@ -0,0 +1,38 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
-+
-+ 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 <sys/sem.h>
-+#include <ipc_priv.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+
-+/* Perform user-defined atomical operation of array of semaphores. */
-+
-+int
-+semtimedop (semid, sops, nsops, timeout)
-+ int semid;
-+ struct sembuf *sops;
-+ size_t nsops;
-+ const struct timespec *timeout;
-+{
-+ return INLINE_SYSCALL (ipc, 5, IPCOP_semtimedop,
-+ semid, (int) nsops, timeout, sops);
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c 2003-02-04 13:35:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c 2003-05-21 15:19:07.000000000 -0400
-@@ -1 +1,34 @@
--#include <sysdeps/unix/sysv/linux/i386/system.c>
-+/* Copyright (C) 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 <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#ifdef __ASSUME_CLONE_THREAD_FLAGS
-+# define FORK() \
-+ INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid)
-+#endif
-+
-+#include "../system.c"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s_pread64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s_pread64.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,30 +0,0 @@
--/* Copyright (C) 1997 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
-- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
--
-- 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 <unistd.h>
--
--/* This file is used if no system call is available. */
--ssize_t
--__syscall_pread64 (int fd, char *buf, size_t count,
-- off_t offset_hi, off_t offset_lo)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s_pwrite64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/s_pwrite64.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,30 +0,0 @@
--/* Copyright (C) 1997 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
-- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
--
-- 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 <unistd.h>
--
--/* This file is used if no system call is available. */
--ssize_t
--__syscall_pwrite64 (int fd, const char *buf, size_t count,
-- off_t offset_hi, off_t offset_lo)
--{
-- __set_errno (ENOSYS);
-- return -1;
--}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sched_getaffinity.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sched_getaffinity.c 2003-05-10 01:35:19.000000000 -0400
-@@ -0,0 +1,45 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <sched.h>
-+#include <string.h>
-+#include <sysdep.h>
-+#include <sys/types.h>
-+
-+
-+#ifdef __NR_sched_getaffinity
-+int
-+sched_getaffinity (pid, cpuset)
-+ pid_t pid;
-+ cpu_set_t *cpuset;
-+{
-+ int res = INLINE_SYSCALL (sched_getaffinity, 3, pid, sizeof (cpu_set_t),
-+ cpuset);
-+ if (res != -1)
-+ {
-+ /* Clean the rest of the memory the kernel didn't do. */
-+ memset ((char *) cpuset + res, '\0', sizeof (cpu_set_t) - res);
-+
-+ res = 0;
-+ }
-+ return res;
-+}
-+#else
-+# include <sysdeps/generic/sched_getaffinity.c>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sched_setaffinity.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sched_setaffinity.c 2003-05-10 01:35:31.000000000 -0400
-@@ -0,0 +1,37 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <sched.h>
-+#include <string.h>
-+#include <sysdep.h>
-+#include <sys/types.h>
-+
-+
-+#ifdef __NR_sched_setaffinity
-+int
-+sched_setaffinity (pid, cpuset)
-+ pid_t pid;
-+ const cpu_set_t *cpuset;
-+{
-+ return INLINE_SYSCALL (sched_setaffinity, 3, pid, sizeof (cpu_set_t),
-+ cpuset);
-+}
-+#else
-+# include <sysdeps/generic/sched_setaffinity.c>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/semctl.c 2002-05-14 23:50:33.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/semctl.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -48,6 +48,7 @@
- struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
- unsigned short int *array; /* array for GETALL & SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
-+ struct __old_semid_ds *__old_buf;
- };
-
- #include <bp-checks.h>
-@@ -152,7 +153,7 @@
-
- __set_errno(save_errno);
- buf = arg.buf;
-- arg.buf = (struct semid_ds *)&old;
-+ arg.__old_buf = &old;
- if (cmd == IPC_SET)
- {
- old.sem_perm.uid = buf->sem_perm.uid;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/semtimedop.c 2003-05-01 17:39:55.000000000 -0400
-@@ -0,0 +1,40 @@
-+/* Copyright (C) 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@cygnus.com>, August 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.
-+
-+ 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 <sys/sem.h>
-+#include <ipc_priv.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+/* Perform user-defined atomical operation of array of semaphores. */
-+
-+int
-+semtimedop (semid, sops, nsops, timeout)
-+ int semid;
-+ struct sembuf *sops;
-+ size_t nsops;
-+ const struct timespec *timeout;
-+{
-+ return INLINE_SYSCALL (ipc, 6, IPCOP_semtimedop,
-+ semid, (int) nsops, 0, CHECK_N (sops, nsops),
-+ timeout);
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/setegid.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/setegid.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -21,7 +21,10 @@
- #include <sys/types.h>
- #include <unistd.h>
-
--#ifdef __NR_setresgid
-+#include <sysdep.h>
-+#include "kernel-features.h"
-+
-+#if defined __NR_setresgid || __ASSUME_SETRESGID_SYSCALL > 0
-
- extern int __setresgid (gid_t rgid, gid_t egid, gid_t sgid);
-
-@@ -36,15 +39,21 @@
- return -1;
- }
-
-+# if __ASSUME_32BITUIDS > 0 && defined __NR_setresgid32
-+ return INLINE_SYSCALL (setresgid32, 3, -1, gid, -1);
-+# else
- /* First try the syscall. */
- result = __setresgid (-1, gid, -1);
-+# if __ASSUME_SETRESGID_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use emulation. This may not work
- since `setregid' also sets the saved group ID when GID is not
- equal to the real group ID, making it impossible to switch back. */
- result = __setregid (-1, gid);
-+# endif
-
- return result;
-+# endif
- }
- libc_hidden_def (setegid)
- #else
---- glibc-2.3.2/sysdeps/unix/sysv/linux/seteuid.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/seteuid.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 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
-@@ -21,6 +21,7 @@
- #include <sys/types.h>
- #include <unistd.h>
-
-+#include <sysdep.h>
- #include "kernel-features.h"
-
- #if defined __NR_setresuid || __ASSUME_SETRESUID_SYSCALL > 0
-@@ -38,6 +39,9 @@
- return -1;
- }
-
-+# if __ASSUME_32BITUIDS > 0 && defined __NR_setresuid32
-+ return INLINE_SYSCALL (setresuid32, 3, -1, uid, -1);
-+# else
- /* First try the syscall. */
- result = __setresuid (-1, uid, -1);
- # if __ASSUME_SETRESUID_SYSCALL == 0
-@@ -49,6 +53,7 @@
- # endif
-
- return result;
-+# endif
- }
- libc_hidden_def (seteuid)
- #else
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Makefile 2002-10-14 00:04:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Makefile 2003-09-19 22:37:10.000000000 -0400
-@@ -5,8 +5,3 @@
- ifeq ($(subdir),misc)
- sysdep_headers += sys/io.h
- endif
--
--ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
--endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Versions 2000-10-25 22:24:08.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Versions 2003-09-19 22:37:10.000000000 -0400
-@@ -21,4 +21,7 @@
- # v*
- versionsort64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/bits/atomic.h 2003-05-12 12:13:11.000000000 -0400
-@@ -0,0 +1,419 @@
-+/* Atomic operations used inside libc. Linux/SH version.
-+ Copyright (C) 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+/* SH kernel has implemented a gUSA ("g" User Space Atomicity) support
-+ for the user space atomicity. The atomicity macros use this scheme.
-+
-+ Reference:
-+ Niibe Yutaka, "gUSA: Simple and Efficient User Space Atomicity
-+ Emulation with Little Kernel Modification", Linux Conference 2002,
-+ Japan. http://lc.linux.or.jp/lc2002/papers/niibe0919h.pdf (in
-+ Japanese).
-+
-+ B.N. Bershad, D. Redell, and J. Ellis, "Fast Mutual Exclusion for
-+ Uniprocessors", Proceedings of the Fifth Architectural Support for
-+ Programming Languages and Operating Systems (ASPLOS), pp. 223-233,
-+ October 1992. http://www.cs.washington.edu/homes/bershad/Papers/Rcs.ps
-+
-+ SuperH ABI:
-+ r15: -(size of atomic instruction sequence) < 0
-+ r0: end point
-+ r1: saved stack pointer
-+*/
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.b @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.b %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.w @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.w %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.l @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.l %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+/* XXX We do not really need 64-bit compare-and-exchange. At least
-+ not in the moment. Using it would mean causing portability
-+ problems since not many other 32-bit architectures have support for
-+ such an operation. So don't define any code for now. */
-+
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), (__typeof (*mem)) 0)
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*(mem)) __result, __tmp, __value = (value); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,%0\n\
-+ add %0,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,%0\n\
-+ add %0,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,%0\n\
-+ add %0,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "memory"); \
-+ else \
-+ { \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ __result = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, __result + __value, __result) == __result); \
-+ (void) __value; \
-+ } \
-+ __result; })
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ __typeof (*(mem)) __tmp, __value = (value); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%1,r2\n\
-+ add r2,%0\n\
-+ mov.b %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%1,r2\n\
-+ add r2,%0\n\
-+ mov.w %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%1,r2\n\
-+ add r2,%0\n\
-+ mov.l %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ { \
-+ __typeof (*(mem)) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + __value, oldval) == oldval); \
-+ (void) __value; \
-+ } \
-+ })
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ __typeof (*(mem)) __tmp, __value = (value); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ add r2,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ add r2,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ add r2,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ __typeof (*(mem)) __tmp, __value = (value); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ add r2,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ add r2,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ add r2,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_increment_and_test(mem) atomic_add_zero((mem), 1)
-+#define atomic_decrement_and_test(mem) atomic_add_zero((mem), -1)
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ unsigned int __mask = 1 << (bit); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%0,r2\n\
-+ or %1,r2\n\
-+ mov.b r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%0,r2\n\
-+ or %1,r2\n\
-+ mov.w r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%0,r2\n\
-+ or %1,r2\n\
-+ mov.l r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ abort (); \
-+ })
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned int __mask = 1 << (bit); \
-+ unsigned int __result = __mask; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/socket.S 2003-01-05 06:02:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/socket.S 2003-08-21 08:37:17.000000000 -0400
-@@ -94,7 +94,9 @@
- #if defined NEED_CANCELLATION && defined CENABLE
- .Lsocket_cancel:
- /* Enable asynchronous cancellation. */
-+ sts.l pr,@-r15
- CENABLE
-+ lds.l @r15+,pr
-
- /* Do the system call trap. */
- mov #+P(SOCKOP_,socket), r4
-@@ -102,9 +104,11 @@
- mov.l .L1,r3
- trapa #0x12
-
-+ sts.l pr,@-r15
- mov.l r0,@-r15
- CDISABLE
- mov.l @r15+,r0
-+ lds.l @r15+,pr
-
- /* Pop args off the stack */
- P(POPARGS_,NARGS)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h 2003-02-07 21:29:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h 2003-09-19 22:37:10.000000000 -0400
-@@ -65,6 +65,29 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name); \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name); \
-+ DO_CALL (syscall_name, args);
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
-+#define ret_ERRVAL ret
-+
- #ifndef PIC
- # define SYSCALL_ERROR_HANDLER \
- mov.l 0f,r1; \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/shm_open.c 2002-11-01 21:16:02.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/shm_open.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -181,6 +181,11 @@
- __set_errno (save_errno);
- }
- }
-+ else if (__builtin_expect (errno == EISDIR, 0))
-+ /* It might be better to fold this error with EINVAL since
-+ directory names are just another example for unsuitable shared
-+ object names and the standard does not mention EISDIR. */
-+ __set_errno (EINVAL);
-
- return fd;
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/shmctl.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/shmctl.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -74,7 +74,8 @@
- __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
- {
- #if __ASSUME_IPC64 > 0
-- return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
-+ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
-+ CHECK_1 (buf));
- #else
- switch (cmd) {
- case SHM_STAT:
-@@ -85,63 +86,69 @@
- #endif
- break;
- default:
-- return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, CHECK_1 (buf));
-+ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
-+ CHECK_1 (buf));
- }
-
- {
- int save_errno = errno, result;
-- struct __old_shmid_ds old;
-+ union
-+ {
-+ struct __old_shmid_ds ds;
-+ struct __old_shminfo info;
-+ } old;
-
- /* Unfortunately there is no way how to find out for sure whether
- we should use old or new shmctl. */
-- result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
-+ result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
-+ CHECK_1 (buf));
- if (result != -1 || errno != EINVAL)
- return result;
-
- __set_errno(save_errno);
- if (cmd == IPC_SET)
- {
-- old.shm_perm.uid = buf->shm_perm.uid;
-- old.shm_perm.gid = buf->shm_perm.gid;
-- old.shm_perm.mode = buf->shm_perm.mode;
-- if (old.shm_perm.uid != buf->shm_perm.uid ||
-- old.shm_perm.gid != buf->shm_perm.gid)
-+ old.ds.shm_perm.uid = buf->shm_perm.uid;
-+ old.ds.shm_perm.gid = buf->shm_perm.gid;
-+ old.ds.shm_perm.mode = buf->shm_perm.mode;
-+ if (old.ds.shm_perm.uid != buf->shm_perm.uid ||
-+ old.ds.shm_perm.gid != buf->shm_perm.gid)
- {
- __set_errno (EINVAL);
- return -1;
- }
- }
-- result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, __ptrvalue (&old));
-+ result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
-+ __ptrvalue (&old.ds));
- if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
- {
- memset(buf, 0, sizeof(*buf));
-- buf->shm_perm.__key = old.shm_perm.__key;
-- buf->shm_perm.uid = old.shm_perm.uid;
-- buf->shm_perm.gid = old.shm_perm.gid;
-- buf->shm_perm.cuid = old.shm_perm.cuid;
-- buf->shm_perm.cgid = old.shm_perm.cgid;
-- buf->shm_perm.mode = old.shm_perm.mode;
-- buf->shm_perm.__seq = old.shm_perm.__seq;
-- buf->shm_atime = old.shm_atime;
-- buf->shm_dtime = old.shm_dtime;
-- buf->shm_ctime = old.shm_ctime;
-- buf->shm_segsz = old.shm_segsz;
-- buf->shm_nattch = old.shm_nattch;
-- buf->shm_cpid = old.shm_cpid;
-- buf->shm_lpid = old.shm_lpid;
-+ buf->shm_perm.__key = old.ds.shm_perm.__key;
-+ buf->shm_perm.uid = old.ds.shm_perm.uid;
-+ buf->shm_perm.gid = old.ds.shm_perm.gid;
-+ buf->shm_perm.cuid = old.ds.shm_perm.cuid;
-+ buf->shm_perm.cgid = old.ds.shm_perm.cgid;
-+ buf->shm_perm.mode = old.ds.shm_perm.mode;
-+ buf->shm_perm.__seq = old.ds.shm_perm.__seq;
-+ buf->shm_atime = old.ds.shm_atime;
-+ buf->shm_dtime = old.ds.shm_dtime;
-+ buf->shm_ctime = old.ds.shm_ctime;
-+ buf->shm_segsz = old.ds.shm_segsz;
-+ buf->shm_nattch = old.ds.shm_nattch;
-+ buf->shm_cpid = old.ds.shm_cpid;
-+ buf->shm_lpid = old.ds.shm_lpid;
- }
- #if __WORDSIZE != 32
- else if (result != -1 && cmd == IPC_INFO)
- {
-- struct __old_shminfo *oldi = (struct __old_shminfo *)&old;
- struct shminfo *i = (struct shminfo *)buf;
-
- memset(i, 0, sizeof(*i));
-- i->shmmax = oldi->shmmax;
-- i->shmmin = oldi->shmmin;
-- i->shmmni = oldi->shmmni;
-- i->shmseg = oldi->shmseg;
-- i->shmall = oldi->shmall;
-+ i->shmmax = old.info.shmmax;
-+ i->shmmin = old.info.shmmin;
-+ i->shmmni = old.info.shmmni;
-+ i->shmseg = old.info.shmseg;
-+ i->shmall = old.info.shmall;
- }
- #endif
- return result;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigaction.c 2003-01-02 18:26:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigaction.c 2003-09-19 22:37:08.000000000 -0400
-@@ -34,12 +34,7 @@
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. This is the definition. */
- int __libc_missing_rt_sigs;
--
--extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
-- struct old_kernel_sigaction *__unbounded);
- #endif
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-- struct kernel_sigaction *__unbounded, size_t);
-
-
- /* If ACT is not NULL, change the action for SIG to *ACT.
---- glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h 2002-11-01 21:16:02.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h 2003-04-12 11:39:49.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,1999,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
-@@ -21,3 +21,5 @@
- #include_next <siglist.h> /* Get the canonical list. */
-
- #define OLD_SIGLIST_SIZE 32 /* For GLIBC_2.0 binary compatibility. */
-+
-+#define OLD2_SIGLIST_SIZE 64 /* For GLIBC_2.1 binary compatibility. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigpending.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigpending.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -26,9 +26,6 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_sigpending (sigset_t *__unbounded);
--extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
--
-
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. The definition is in sigaction.c. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigprocmask.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigprocmask.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1998,1999,2000,2001,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
-@@ -27,11 +27,6 @@
- #include "kernel-features.h"
-
-
--extern int __syscall_sigprocmask (int, const sigset_t *__unbounded,
-- sigset_t *__unbounded);
--extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
-- sigset_t *__unbounded, size_t);
--
- /* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. The definition is in sigaction.c. */
- extern int __libc_missing_rt_sigs;
-@@ -44,6 +39,19 @@
- const sigset_t *set;
- sigset_t *oset;
- {
-+#ifdef SIGCANCEL
-+ sigset_t local_newmask;
-+
-+ /* The only thing we have to make sure here is that SIGCANCEL is not
-+ blocked. */
-+ if (set != NULL && __builtin_expect (__sigismember (set, SIGCANCEL), 0))
-+ {
-+ local_newmask = *set;
-+ __sigdelset (&local_newmask, SIGCANCEL);
-+ set = &local_newmask;
-+ }
-+#endif
-+
- #if __ASSUME_REALTIME_SIGNALS > 0
- return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET_NULL_OK (set),
- CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigqueue.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigqueue.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -24,8 +24,6 @@
- #include <sysdep.h>
- #include <sys/syscall.h>
-
--extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
--
- #ifdef __NR_rt_sigqueueinfo
- /* Return any pending signal or wait for one for the given time. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigsuspend.c 2002-12-15 04:04:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigsuspend.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 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
-@@ -26,9 +27,6 @@
-
- #include "kernel-features.h"
-
--extern int __syscall_sigsuspend (int, unsigned long int, unsigned long int);
--extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
--
-
- #if !__ASSUME_REALTIME_SIGNALS
- /* The variable is shared between all wrappers around signal handling
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigtimedwait.c 2002-12-15 04:11:58.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigtimedwait.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -18,14 +18,44 @@
-
- #include <errno.h>
- #include <signal.h>
-+#include <string.h>
-
- #include <sysdep-cancel.h>
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
- #ifdef __NR_rt_sigtimedwait
--extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
-- const struct timespec *__unbounded, size_t);
-+
-+static int
-+do_sigtimedwait (const sigset_t *set, siginfo_t *info,
-+ const struct timespec *timeout)
-+{
-+#ifdef SIGCANCEL
-+ sigset_t tmpset;
-+ if (set != NULL && __sigismember (set, SIGCANCEL))
-+ {
-+ /* Create a temporary mask without the bit for SIGCANCEL set. */
-+ // We are not copying more than we have to.
-+ memcpy (&tmpset, set, _NSIG / 8);
-+ __sigdelset (&tmpset, SIGCANCEL);
-+ set = &tmpset;
-+ }
-+#endif
-+
-+ /* XXX The size argument hopefully will have to be changed to the
-+ real size of the user-level sigset_t. */
-+ int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-+ CHECK_1 (info), timeout, _NSIG / 8);
-+
-+ /* The kernel generates a SI_TKILL code in si_code in case tkill is
-+ used. tkill is transparently used in raise(). Since having
-+ SI_TKILL as a code is useful in general we fold the results
-+ here. */
-+ if (result != -1 && info != NULL && info->si_code == SI_TKILL)
-+ info->si_code = SI_USER;
-+
-+ return result;
-+}
-
-
- /* Return any pending signal or wait for one for the given time. */
-@@ -36,17 +66,13 @@
- const struct timespec *timeout;
- {
- if (SINGLE_THREAD_P)
-- /* XXX The size argument hopefully will have to be changed to the
-- real size of the user-level sigset_t. */
-- return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-- CHECK_1 (info), timeout, _NSIG / 8);
-+ return do_sigtimedwait (set, info, timeout);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
-- int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-- CHECK_1 (info), timeout, _NSIG / 8);
-+ int result = do_sigtimedwait (set, info, timeout);
-
- LIBC_CANCEL_RESET (oldtype);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigwait.c 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigwait.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -20,15 +20,13 @@
- #include <signal.h>
- #define __need_NULL
- #include <stddef.h>
-+#include <string.h>
-
- #include <sysdep-cancel.h>
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
- #ifdef __NR_rt_sigtimedwait
--extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
-- const struct timespec *__unbounded, size_t);
--
-
- /* Return any pending signal or wait for one for the given time. */
- static int
-@@ -36,6 +34,18 @@
- {
- int ret;
-
-+#ifdef SIGCANCEL
-+ sigset_t tmpset;
-+ if (set != NULL && __sigismember (set, SIGCANCEL))
-+ {
-+ /* Create a temporary mask without the bit for SIGCANCEL set. */
-+ // We are not copying more than we have to.
-+ memcpy (&tmpset, set, _NSIG / 8);
-+ __sigdelset (&tmpset, SIGCANCEL);
-+ set = &tmpset;
-+ }
-+#endif
-+
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
- #ifdef INTERNAL_SYSCALL
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sigwaitinfo.c 2002-12-15 04:26:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigwaitinfo.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -20,14 +20,43 @@
- #include <signal.h>
- #define __need_NULL
- #include <stddef.h>
-+#include <string.h>
-
- #include <sysdep-cancel.h>
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
- #ifdef __NR_rt_sigtimedwait
--extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
-- const struct timespec *__unbounded, size_t);
-+
-+static int
-+do_sigwaitinfo (const sigset_t *set, siginfo_t *info)
-+{
-+#ifdef SIGCANCEL
-+ sigset_t tmpset;
-+ if (set != NULL && __sigismember (set, SIGCANCEL))
-+ {
-+ /* Create a temporary mask without the bit for SIGCANCEL set. */
-+ // We are not copying more than we have to.
-+ memcpy (&tmpset, set, _NSIG / 8);
-+ __sigdelset (&tmpset, SIGCANCEL);
-+ set = &tmpset;
-+ }
-+#endif
-+
-+ /* XXX The size argument hopefully will have to be changed to the
-+ real size of the user-level sigset_t. */
-+ int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-+ CHECK_1 (info), NULL, _NSIG / 8);
-+
-+ /* The kernel generates a SI_TKILL code in si_code in case tkill is
-+ used. tkill is transparently used in raise(). Since having
-+ SI_TKILL as a code is useful in general we fold the results
-+ here. */
-+ if (result != -1 && info != NULL && info->si_code == SI_TKILL)
-+ info->si_code = SI_USER;
-+
-+ return result;
-+}
-
-
- /* Return any pending signal or wait for one for the given time. */
-@@ -37,17 +66,13 @@
- siginfo_t *info;
- {
- if (SINGLE_THREAD_P)
-- /* XXX The size argument hopefully will have to be changed to the
-- real size of the user-level sigset_t. */
-- return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-- CHECK_1 (info), NULL, _NSIG / 8);
-+ return do_sigwaitinfo (set, info);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
-- int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
-- CHECK_1 (info), NULL, _NSIG / 8);
-+ int result = do_sigwaitinfo (set, info);
-
- LIBC_CANCEL_RESET (oldtype);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sleep.c 2002-12-15 23:26:37.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sleep.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Implementation of the POSIX sleep function using nanosleep.
-- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -22,27 +22,61 @@
- #include <time.h>
- #include <signal.h>
- #include <unistd.h>
-+#include <sys/param.h>
-+
-+
-+#if 0
-+static void
-+cl (void *arg)
-+{
-+ (void) __sigprocmask (SIG_SETMASK, arg, (sigset_t *) NULL);
-+}
-+#endif
-+
-
- /* We are going to use the `nanosleep' syscall of the kernel. But the
-- kernel does not implement the sstupid SysV SIGCHLD vs. SIG_IGN
-+ kernel does not implement the stupid SysV SIGCHLD vs. SIG_IGN
- behaviour for this syscall. Therefore we have to emulate it here. */
- unsigned int
- __sleep (unsigned int seconds)
- {
-- struct timespec ts = { .tv_sec = (long int) seconds, .tv_nsec = 0 };
-+ const unsigned int max
-+ = (unsigned int) (((unsigned long int) (~((time_t) 0))) >> 1);
-+ struct timespec ts;
- sigset_t set, oset;
- unsigned int result;
-
- /* This is not necessary but some buggy programs depend on this. */
-- if (seconds == 0)
-- return 0;
-+ if (__builtin_expect (seconds == 0, 0))
-+ {
-+#ifdef CANCELLATION_P
-+ CANCELLATION_P (THREAD_SELF);
-+#endif
-+ return 0;
-+ }
-+
-+ ts.tv_sec = 0;
-+ ts.tv_nsec = 0;
-+ again:
-+ if (sizeof (ts.tv_sec) <= sizeof (seconds))
-+ {
-+ /* Since SECONDS is unsigned assigning the value to .tv_sec can
-+ overflow it. In this case we have to wait in steps. */
-+ ts.tv_sec += MIN (seconds, max);
-+ seconds -= (unsigned int) ts.tv_sec;
-+ }
-+ else
-+ {
-+ ts.tv_sec = (time_t) seconds;
-+ seconds = 0;
-+ }
-
- /* Linux will wake up the system call, nanosleep, when SIGCHLD
- arrives even if SIGCHLD is ignored. We have to deal with it
- in libc. We block SIGCHLD first. */
-- if (__sigemptyset (&set) < 0
-- || __sigaddset (&set, SIGCHLD) < 0
-- || __sigprocmask (SIG_BLOCK, &set, &oset))
-+ __sigemptyset (&set);
-+ __sigaddset (&set, SIGCHLD);
-+ if (__sigprocmask (SIG_BLOCK, &set, &oset))
- return -1;
-
- /* If SIGCHLD is already blocked, we don't have to do anything. */
-@@ -51,8 +85,8 @@
- int saved_errno;
- struct sigaction oact;
-
-- if (__sigemptyset (&set) < 0 || __sigaddset (&set, SIGCHLD) < 0)
-- return -1;
-+ __sigemptyset (&set);
-+ __sigaddset (&set, SIGCHLD);
-
- /* We get the signal handler for SIGCHLD. */
- if (__sigaction (SIGCHLD, (struct sigaction *) NULL, &oact) < 0)
-@@ -64,29 +98,50 @@
- return -1;
- }
-
-+ /* Note the sleep() is a cancellation point. But since we call
-+ nanosleep() which itself is a cancellation point we do not
-+ have to do anything here. */
- if (oact.sa_handler == SIG_IGN)
- {
-+ //__libc_cleanup_push (cl, &oset);
-+
- /* We should leave SIGCHLD blocked. */
-- result = __nanosleep (&ts, &ts);
-+ while (1)
-+ {
-+ result = __nanosleep (&ts, &ts);
-+
-+ if (result != 0 || seconds == 0)
-+ break;
-+
-+ if (sizeof (ts.tv_sec) <= sizeof (seconds))
-+ {
-+ ts.tv_sec = MIN (seconds, max);
-+ seconds -= (unsigned int) ts.tv_nsec;
-+ }
-+ }
-+
-+ //__libc_cleanup_pop (0);
-
- saved_errno = errno;
- /* Restore the original signal mask. */
- (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
- __set_errno (saved_errno);
-+
-+ goto out;
- }
-- else
-- {
-- /* We should unblock SIGCHLD. Restore the original signal mask. */
-- (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
-- result = __nanosleep (&ts, &ts);
-- }
-+
-+ /* We should unblock SIGCHLD. Restore the original signal mask. */
-+ (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
- }
-- else
-- result = __nanosleep (&ts, &ts);
-
-+ result = __nanosleep (&ts, &ts);
-+ if (result == 0 && seconds != 0)
-+ goto again;
-+
-+ out:
- if (result != 0)
- /* Round remaining time. */
-- result = (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L);
-+ result = seconds + (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L);
-
- return result;
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/a.out.h 2003-07-25 05:04:58.000000000 -0400
-@@ -0,0 +1,174 @@
-+#ifndef __A_OUT_GNU_H__
-+#define __A_OUT_GNU_H__
-+
-+#include <bits/a.out.h>
-+
-+#define __GNU_EXEC_MACROS__
-+
-+struct exec
-+{
-+ unsigned char a_dynamic:1; /* A __DYNAMIC is in this image. */
-+ unsigned char a_toolversion:7;
-+ unsigned char a_machtype;
-+ unsigned short a_info;
-+ unsigned int a_text; /* Length of text, in bytes. */
-+ unsigned int a_data; /* Length of data, in bytes. */
-+ unsigned int a_bss; /* Length of bss, in bytes. */
-+ unsigned int a_syms; /* Length of symbol table, in bytes. */
-+ unsigned int a_entry; /* Where program begins. */
-+ unsigned int a_trsize;
-+ unsigned int a_drsize;
-+};
-+
-+enum machine_type
-+{
-+ M_OLDSUN2 = 0,
-+ M_68010 = 1,
-+ M_68020 = 2,
-+ M_SPARC = 3,
-+ M_386 = 100,
-+ M_MIPS1 = 151,
-+ M_MIPS2 = 152
-+};
-+
-+#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-+#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-+#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-+#define N_SET_INFO(exec, magic, type, flags) \
-+ ((exec).a_info = ((magic) & 0xffff) \
-+ | (((int)(type) & 0xff) << 16) \
-+ | (((flags) & 0xff) << 24))
-+#define N_SET_MAGIC(exec, magic) \
-+ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
-+#define N_SET_MACHTYPE(exec, machtype) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-+#define N_SET_FLAGS(exec, flags) \
-+ ((exec).a_info = \
-+ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-+
-+/* Code indicating object file or impure executable. */
-+#define OMAGIC 0407
-+/* Code indicating pure executable. */
-+#define NMAGIC 0410
-+/* Code indicating demand-paged executable. */
-+#define ZMAGIC 0413
-+/* This indicates a demand-paged executable with the header in the text.
-+ The first page is unmapped to help trap NULL pointer references. */
-+#define QMAGIC 0314
-+/* Code indicating core file. */
-+#define CMAGIC 0421
-+
-+#define N_TRSIZE(a) ((a).a_trsize)
-+#define N_DRSIZE(a) ((a).a_drsize)
-+#define N_SYMSIZE(a) ((a).a_syms)
-+#define N_BADMAG(x) \
-+ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
-+ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
-+#define _N_HDROFF(x) (1024 - sizeof (struct exec))
-+#define N_TXTOFF(x) \
-+ (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec))
-+#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
-+#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
-+#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
-+#define N_SYMOFF(x) \
-+ (N_TXTOFF(x) + (x).a_text + (x).a_data + (x).a_trsize + (x).a_drsize)
-+#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
-+
-+#define SPARC_PGSIZE 0x2000
-+
-+/* Address of text segment in memory after it is loaded. */
-+#define N_TXTADDR(x) \
-+ (unsigned long)(((N_MAGIC(x) == ZMAGIC) && ((x).a_entry < SPARC_PGSIZE)) \
-+ ? 0 : SPARC_PGSIZE)
-+
-+/* Address of data segment in memory after it is loaded. */
-+#define SEGMENT_SIZE SPARC_PGSIZE
-+
-+#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
-+#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-+
-+#define N_DATADDR(x) \
-+ (N_MAGIC(x)==OMAGIC \
-+ ? (N_TXTADDR(x) + (x).a_text) \
-+ : (unsigned long)(_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
-+#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
-+
-+#if !defined (N_NLIST_DECLARED)
-+struct nlist
-+{
-+ union
-+ {
-+ char *n_name;
-+ struct nlist *n_next;
-+ long n_strx;
-+ } n_un;
-+ unsigned char n_type;
-+ char n_other;
-+ short n_desc;
-+ unsigned long n_value;
-+};
-+#endif /* no N_NLIST_DECLARED. */
-+
-+#define N_UNDF 0
-+#define N_ABS 2
-+#define N_TEXT 4
-+#define N_DATA 6
-+#define N_BSS 8
-+#define N_FN 15
-+#define N_EXT 1
-+#define N_TYPE 036
-+#define N_STAB 0340
-+#define N_INDR 0xa
-+#define N_SETA 0x14 /* Absolute set element symbol. */
-+#define N_SETT 0x16 /* Text set element symbol. */
-+#define N_SETD 0x18 /* Data set element symbol. */
-+#define N_SETB 0x1A /* Bss set element symbol. */
-+#define N_SETV 0x1C /* Pointer to set vector in data area. */
-+
-+#if !defined (N_RELOCATION_INFO_DECLARED)
-+enum reloc_type
-+{
-+ RELOC_8,
-+ RELOC_16,
-+ RELOC_32,
-+ RELOC_DISP8,
-+ RELOC_DISP16,
-+ RELOC_DISP32,
-+ RELOC_WDISP30,
-+ RELOC_WDISP22,
-+ RELOC_HI22,
-+ RELOC_22,
-+ RELOC_13,
-+ RELOC_LO10,
-+ RELOC_SFA_BASE,
-+ RELOC_SFA_OFF13,
-+ RELOC_BASE10,
-+ RELOC_BASE13,
-+ RELOC_BASE22,
-+ RELOC_PC10,
-+ RELOC_PC22,
-+ RELOC_JMP_TBL,
-+ RELOC_SEGOFF16,
-+ RELOC_GLOB_DAT,
-+ RELOC_JMP_SLOT,
-+ RELOC_RELATIVE
-+};
-+
-+/* This structure describes a single relocation to be performed.
-+ The text-relocation section of the file is a vector of these structures,
-+ all of which apply to the text section.
-+ Likewise, the data-relocation section applies to the data section. */
-+
-+struct relocation_info
-+{
-+ unsigned int r_address;
-+ unsigned int r_index:24;
-+ unsigned int r_extern:1;
-+ int r_pad:2;
-+ enum reloc_type r_type:5;
-+ int r_addend;
-+};
-+#endif /* no N_RELOCATION_INFO_DECLARED. */
-+
-+#endif /* __A_OUT_GNU_H__ */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/a.out.h 2003-07-25 05:04:58.000000000 -0400
-@@ -0,0 +1,13 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
-+
-+#include <bits/wordsize.h>
-+
-+#if __WORDSIZE == 64
-+
-+/* Signal to users of this header that this architecture really doesn't
-+ support a.out binary format. */
-+#define __NO_A_OUT_SUPPORT 1
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h 2001-07-07 15:21:36.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h 2003-09-19 22:37:10.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997,1999,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1999,2000,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
-@@ -16,8 +16,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#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
-
-@@ -78,3 +80,5 @@
- ((int) (address) < (jmpbuf)[JB_SP])
-
- #endif
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h 2002-12-04 19:22:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h 2003-04-24 20:06:02.000000000 -0400
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/SPARC version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -111,8 +112,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -129,8 +130,10 @@
- signals. */
- enum
- {
-- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
-+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
- # define SI_ASYNCNL SI_ASYNCNL
-+ SI_TKILL = -6, /* Sent by tkill. */
-+# define SI_TKILL SI_TKILL
- SI_SIGIO, /* Sent by queued SIGIO. */
- # define SI_SIGIO SI_SIGIO
- SI_ASYNCIO, /* Sent by AIO completion. */
-@@ -276,9 +279,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -308,8 +308,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h 2001-07-07 15:21:36.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/SPARC version.
-- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 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
-@@ -70,7 +70,7 @@
- #define SIGUSR1 30
- #define SIGUSR2 31
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/stat.h 2002-12-31 15:08:58.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
-@@ -150,6 +150,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2002-10-23 19:48:46.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2003-08-21 08:37:17.000000000 -0400
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,9 +54,10 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-+#define __SSIZE_T_TYPE __SWORD_TYPE
-
- /* Number of descriptors that can fit in an `fd_set'. */
- #define __FD_SETSIZE 1024
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/dl-cache.h 2003-06-25 04:03:35.000000000 -0400
-@@ -0,0 +1,39 @@
-+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-+ Copyright (C) 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. */
-+
-+#define add_system_dir(dir) \
-+ do \
-+ { \
-+ size_t len = strlen (dir); \
-+ char path[len + 3]; \
-+ memcpy (path, dir, len + 1); \
-+ if (len >= 6 && ! memcmp (path + len - 6, "/lib64", 6)) \
-+ { \
-+ len -= 2; \
-+ path[len] = '\0'; \
-+ } \
-+ add_dir (path); \
-+ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \
-+ { \
-+ memcpy (path + len, "64", 3); \
-+ add_dir (path); \
-+ } \
-+ } while (0)
-+
-+#include <sysdeps/generic/dl-cache.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2002-10-14 00:04:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2003-09-19 22:37:11.000000000 -0400
-@@ -9,8 +9,3 @@
- sysdep-others += lddlibc4
- install-bin += lddlibc4
- endif # elf
--
--ifeq ($(subdir),signal)
--sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
-- rt_sigqueueinfo rt_sigaction rt_sigpending
--endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2002-08-23 15:47:01.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2003-09-19 22:37:11.000000000 -0400
-@@ -17,4 +17,7 @@
- # s*
- scandir64;
- }
-+ GLIBC_2.3.3 {
-+ posix_fadvise64; posix_fallocate64;
-+ }
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 2001-07-07 15:21:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu).
-
-@@ -23,7 +23,8 @@
- #include <asm/errno.h>
- #include <asm/unistd.h>
-
--/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
-+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
-+ pid_t *ptid, void *tls, pid_t *ctid); */
-
- .text
- .align 4
-@@ -39,6 +40,12 @@
- orcc %i1,%g0,%o1
- be .Lerror
- mov %i2,%o0
-+ /* ptid */
-+ mov %i4,%o2
-+ /* tls */
-+ mov %i5,%o3
-+ /* ctid */
-+ ld [%fp+92],%o4
-
- /* Do the system call */
- set __NR_clone,%g1
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c 2002-02-01 14:00:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c 2003-08-21 08:37:17.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Data for Linux/sparc32 version of processor capability information.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
-
-@@ -40,13 +40,14 @@
- needed.
- */
-
--#ifdef PROCINFO_DECL
--EXTERN
-+#ifndef PROCINFO_CLASS
-+#define PROCINFO_CLASS
- #endif
-+
- #if !defined PROCINFO_DECL && defined SHARED
- ._dl_sparc32_cap_flags
- #else
--const char _dl_sparc32_cap_flags[6][7]
-+PROCINFO_CLASS const char _dl_sparc32_cap_flags[6][7]
- #endif
- #ifndef PROCINFO_DECL
- = {
-@@ -60,3 +61,4 @@
- #endif
-
- #undef PROCINFO_DECL
-+#undef PROCINFO_CLASS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h 2002-02-01 14:00:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Linux/sparc32 version of processor capability information handling macros.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
-
-@@ -50,7 +50,7 @@
- };
-
- static inline int
--__attribute__ ((unused))
-+__attribute__ ((unused, always_inline))
- _dl_string_hwcap (const char *str)
- {
- int i;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c 2002-08-02 17:46:59.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 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
-@@ -19,6 +19,7 @@
- #include <unistd.h>
- #include <sys/param.h>
- #include <ldsodefs.h>
-+#include <sysdep.h>
-
- /* Return the system page size. This value will either be 4k or 8k depending
- on whether or not we are running on Sparc v9 machine. */
-@@ -27,13 +28,14 @@
- via the AT_PAGESZ auxiliary argument. If we are a static program, we
- use the getpagesize system call. */
-
--extern size_t __syscall_getpagesize(void);
--
- int
- __getpagesize ()
- {
- if (GL(dl_pagesize) == 0)
-- GL(dl_pagesize) = __syscall_getpagesize();
-+ {
-+ INTERNAL_SYSCALL_DECL (err);
-+ GL(dl_pagesize) = INTERNAL_SYSCALL (getpagesize, err, 0);
-+ }
- return GL(dl_pagesize);
- }
- libc_hidden_def (__getpagesize)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c 2002-04-26 16:33:51.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Semctl for architectures where word sized unions are passed indirectly
-- Copyright (C) 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1997,1998,2000,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
-
-@@ -49,6 +49,7 @@
- struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
- unsigned short int *array; /* array for GETALL & SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
-+ struct __old_semid_ds *__old_buf;
- };
-
- #include <bp-checks.h>
-@@ -168,7 +169,7 @@
- #endif
-
- buf = arg.buf;
-- arg.buf = (struct semid_ds *)&old;
-+ arg.__old_buf = &old;
- if (cmd == IPC_SET)
- {
- old.sem_perm.uid = buf->sem_perm.uid;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c 2002-08-13 10:29:44.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c 2003-08-21 08:37:17.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -38,11 +38,13 @@
-
- /* First try the syscall. */
- result = __setresgid (-1, gid, -1);
-+# if __ASSUME_SETRESGID_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use emulation. This may not work
- since `setregid' also sets the saved group ID when GID is not
- equal to the real group ID, making it impossible to switch back. */
- result = __setregid (-1, gid);
-+# endif
-
- return result;
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c 2003-01-02 18:26:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c 2003-09-19 22:37:11.000000000 -0400
-@@ -23,10 +23,7 @@
- #include <sys/signal.h>
- #include <errno.h>
- #include <kernel_sigaction.h>
--
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
-- struct kernel_sigaction *, unsigned long,
-- size_t);
-+#include <sysdep.h>
-
- static void __rt_sigreturn_stub (void);
- static void __sigreturn_stub (void);
-@@ -64,9 +61,8 @@
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
-- ret = __syscall_rt_sigaction (sig, act ? &kact : 0,
-- oact ? &koact : 0,
-- stub, _NSIG / 8);
-+ ret = INLINE_SYSCALL (rt_sigaction, 5, sig, act ? &kact : 0,
-+ oact ? &koact : 0, stub, _NSIG / 8);
-
- if (ret >= 0 || errno != ENOSYS)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S 2003-09-19 22:37:11.000000000 -0400
-@@ -79,7 +79,11 @@
-
- #if defined NEED_CANCELLATION && defined CENABLE
- .Lsocket_cancel:
-+ cfi_startproc
- save %sp, -96, %sp
-+ cfi_def_cfa_register (%fp)
-+ cfi_window_save
-+ cfi_register (%o7, %i7)
- CENABLE
- nop
- mov %o0, %l0
-@@ -93,6 +97,7 @@
- mov %l0, %o0
- jmpl %i7 + 8, %g0
- restore %g0, %l1, %o0
-+ cfi_endproc
- SYSCALL_ERROR_HANDLER2
- #endif
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list 2002-10-14 00:04:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list 2003-09-19 22:37:11.000000000 -0400
-@@ -1,27 +1,8 @@
- # File name Caller Syscall name # args Strong name Weak names
-
--s_getgroups getgroups getgroups 2 __syscall_getgroups
--s_getpagesize getpagesize getpagesize 0 __syscall_getpagesize
--s_llseek llseek _llseek 5 __syscall__llseek
--s_setfsgid setfsgid setfsgid 1 __syscall_setfsgid
--s_setfsuid setfsuid setfsuid 1 __syscall_setfsuid
--s_setgid setgid setgid 1 __syscall_setgid
--s_setgroups setgroups setgroups 2 __syscall_setgroups
--s_setregid setregid setregid 2 __syscall_setregid
--s_setreuid setreuid setreuid 2 __syscall_setreuid
- setrlimit - setrlimit 2 __setrlimit setrlimit
- getrlimit - getrlimit 2 __getrlimit getrlimit
--s_ipc msgget ipc 5 __syscall_ipc
--s_setuid setuid setuid 1 __syscall_setuid
- setresuid - setresuid32 3 __setresuid setresuid
- setresgid - setresgid32 3 __setresgid setresgid
- getresuid - getresuid32 3 getresuid
- getresgid - getresgid32 3 getresgid
--
--# System calls with wrappers.
--rt_sigaction - rt_sigaction 4 __syscall_rt_sigaction
--rt_sigpending - rt_sigpending 2 __syscall_rt_sigpending
--rt_sigprocmask - rt_sigprocmask 4 __syscall_rt_sigprocmask
--rt_sigqueueinfo - rt_sigqueueinfo 3 __syscall_rt_sigqueueinfo
--rt_sigsuspend - rt_sigsuspend 2 __syscall_rt_sigsuspend
--rt_sigtimedwait - rt_sigtimedwait 4 __syscall_rt_sigtimedwait
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2003-09-19 22:37:11.000000000 -0400
-@@ -25,6 +25,7 @@
- #ifdef IS_IN_rtld
- # include <dl-sysdep.h> /* Defines RTLD_PRIVATE_ERRNO. */
- #endif
-+#include <tls.h>
-
- #undef SYS_ify
- #define SYS_ify(syscall_name) __NR_##syscall_name
-@@ -35,6 +36,8 @@
-
- /* Linux/SPARC uses a different trap number */
- #undef PSEUDO
-+#undef PSEUDO_NOERRNO
-+#undef PSEUDO_ERRVAL
- #undef ENTRY
- #undef END
- #undef LOC
-@@ -85,6 +88,47 @@
- jmpl %i7+8, %g0; \
- restore %g0, -1, %o0; \
- .previous;
-+#elif USE___THREAD
-+# ifndef NOT_IN_libc
-+# define SYSCALL_ERROR_ERRNO __libc_errno
-+# else
-+# define SYSCALL_ERROR_ERRNO errno
-+# endif
-+# ifdef SHARED
-+# define SYSCALL_ERROR_HANDLER \
-+ .section .gnu.linkonce.t.__sparc.get_pic.l7,"ax",@progbits; \
-+ .globl __sparc.get_pic.l7; \
-+ .hidden __sparc.get_pic.l7; \
-+ .type __sparc.get_pic.l7,@function; \
-+__sparc.get_pic.l7: \
-+ retl; \
-+ add %o7, %l7, %l7; \
-+ .previous; \
-+SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
-+ save %sp,-96,%sp; \
-+ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %l1; \
-+ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
-+ call __sparc.get_pic.l7; \
-+ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \
-+ add %l1, %tie_lo10(SYSCALL_ERROR_ERRNO), %l1; \
-+ ld [%l7 + %l1], %l1, %tie_ld(SYSCALL_ERROR_ERRNO); \
-+ st %i0, [%g7 + %l1], %tie_add(SYSCALL_ERROR_ERRNO); \
-+ jmpl %i7+8, %g0; \
-+ restore %g0, -1, %o0; \
-+ .previous;
-+# else
-+# define SYSCALL_ERROR_HANDLER \
-+SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
-+ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \
-+ sethi %hi(_GLOBAL_OFFSET_TABLE_), %g2; \
-+ add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \
-+ add %g2, %lo(_GLOBAL_OFFSET_TABLE_), %g2; \
-+ ld [%g2 + %g1], %g1, %tie_ld(SYSCALL_ERROR_ERRNO); \
-+ st %o0, [%g7 + %g1], %tie_add(SYSCALL_ERROR_ERRNO); \
-+ jmpl %o7+8, %g0; \
-+ mov -1, %o0; \
-+ .previous;
-+# endif
- #else
- # define SYSCALL_ERROR_HANDLER \
- SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
-@@ -108,6 +152,18 @@
- nop; \
- SYSCALL_ERROR_HANDLER
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x10
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x10
-+
- #else /* __ASSEMBLER__ */
-
- #define __SYSCALL_STRING \
-@@ -125,6 +181,22 @@
- " restore %%g0, -1, %%o0;" \
- ".previous;"
-
-+#define __CLONE_SYSCALL_STRING \
-+ "ta 0x10;" \
-+ "bcs 2f;" \
-+ " sub %%o1, 1, %%o1;" \
-+ "and %%o0, %%o1, %%o0;" \
-+ "1:" \
-+ ".subsection 2;" \
-+ "2:" \
-+ "save %%sp, -192, %%sp;" \
-+ "call __errno_location;" \
-+ " nop;" \
-+ "st %%i0, [%%o0];" \
-+ "ba 1b;" \
-+ " restore %%g0, -1, %%o0;" \
-+ ".previous;"
-+
- #define __INTERNAL_SYSCALL_STRING \
- "ta 0x10;" \
- "bcs,a 1f;" \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c 2002-02-01 14:00:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c 2003-08-21 08:37:17.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Data for Linux/sparc64 version of processor capability information.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
-
-@@ -40,13 +40,14 @@
- needed.
- */
-
--#ifdef PROCINFO_DECL
--EXTERN
-+#ifndef PROCINFO_CLASS
-+#define PROCINFO_CLASS
- #endif
-+
- #if !defined PROCINFO_DECL && defined SHARED
- ._dl_sparc64_cap_flags
- #else
--const char _dl_sparc64_cap_flags[6][7]
-+PROCINFO_CLASS const char _dl_sparc64_cap_flags[6][7]
- #endif
- #ifndef PROCINFO_DECL
- = {
-@@ -60,3 +61,4 @@
- #endif
-
- #undef PROCINFO_DECL
-+#undef PROCINFO_CLASS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c 1999-06-02 07:10:10.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c 2003-03-15 15:02:21.000000000 -0500
-@@ -1 +1 @@
--#include <sysdeps/unix/common/pause.c>
-+#include <sysdeps/posix/pause.c>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c 2001-07-07 15:21:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -24,9 +24,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
--
--
- /* Change the set of blocked signals to SET,
- wait until a signal arrives, and restore the set of blocked signals. */
- int
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c 2001-07-07 15:21:38.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -24,9 +24,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
-- sigset_t *__unbounded, size_t);
--
- /* Get and/or change the set of blocked signals. */
- int
- __sigprocmask (how, set, oset)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c 2002-12-10 15:31:58.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c 2003-04-12 11:39:50.000000000 -0400
-@@ -1,41 +1 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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 <signal.h>
--#include <unistd.h>
--
--#include <sysdep.h>
--#include <sys/syscall.h>
--#include <bp-checks.h>
--
--extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
--
--/* Change the set of blocked signals to SET,
-- wait until a signal arrives, and restore the set of blocked signals. */
--int
--__sigsuspend (set)
-- const sigset_t *set;
--{
-- /* XXX The size argument hopefully will have to be changed to the
-- real size of the user-level sigset_t. */
-- return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8);
--}
--libc_hidden_def (__sigsuspend)
--weak_alias (__sigsuspend, sigsuspend)
--strong_alias (__sigsuspend, __libc_sigsuspend)
-+#include "../../ia64/sigsuspend.c"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list 2003-02-05 16:42:03.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list 2003-08-21 08:37:17.000000000 -0400
-@@ -13,7 +13,7 @@
- mmap - mmap 6 __mmap mmap __mmap64 mmap64
- readahead - readahead 3 __readahead readahead
- sendfile - sendfile i:iipi sendfile sendfile64
--posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
-
- # Override select.S in parent directory:
- select - select C:5 __select select
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 2003-01-27 15:47:54.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 2003-09-19 22:37:11.000000000 -0400
-@@ -35,6 +35,8 @@
-
- /* Linux/SPARC uses a different trap number */
- #undef PSEUDO
-+#undef PSEUDO_NOERRNO
-+#undef PSEUDO_ERRVAL
- #undef ENTRY
-
- #define ENTRY(name) \
-@@ -101,16 +103,38 @@
- nop; \
- SYSCALL_ERROR_HANDLER
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x6d
-+
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x6d
-+
- #undef PSEUDO_END
- #define PSEUDO_END(name) \
- .size name,.-name
-
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ .size name,.-name
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ .size name,.-name
-+
- #undef END
- #define END(name) \
- .size name,.-name
-
- /* Careful here! This "ret" define can interfere; use jmpl if unsure. */
--#define ret retl; nop
-+#define ret retl; nop
-+#define ret_NOERRNO retl; nop
-+#define ret_ERRVAL retl; nop
- #define r0 %o0
- #define r1 %o1
- #define MOVE(x,y) mov x, y
-@@ -128,6 +152,18 @@
- "restore %%g0, -1, %%o0;" \
- "1:"
-
-+#define __CLONE_SYSCALL_STRING \
-+ "ta 0x6d;" \
-+ "bcc,pt %%xcc, 1f;" \
-+ " sub %%o1, 1, %%o1;" \
-+ "save %%sp, -192, %%sp;" \
-+ "call __errno_location;" \
-+ " mov -1, %%i1;" \
-+ "st %%i0,[%%o0];" \
-+ "restore %%g0, -1, %%o0;" \
-+ "1:" \
-+ "and %%o0, %%o1, %%o0"
-+
- #define __INTERNAL_SYSCALL_STRING \
- "ta 0x6d;" \
- "bcs,a,pt %%xcc, 1f;" \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sys/user.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sys/user.h 2003-08-14 23:54:43.000000000 -0400
-@@ -0,0 +1,85 @@
-+/* Copyright (C) 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. */
-+
-+#ifndef _SYS_USER_H
-+#define _SYS_USER_H 1
-+
-+struct sunos_regs
-+{
-+ unsigned int psr, pc, npc, y;
-+ unsigned int regs[15];
-+};
-+
-+struct sunos_fpqueue
-+{
-+ unsigned int *addr;
-+ unsigned int inst;
-+};
-+
-+struct sunos_fp
-+{
-+ union
-+ {
-+ unsigned int regs[32];
-+ double reg_dbls[16];
-+ } fregs;
-+ unsigned int fsr;
-+ unsigned int flags;
-+ unsigned int extra;
-+ unsigned int fpq_count;
-+ struct sunos_fpqueue fpq[16];
-+};
-+
-+struct sunos_fpu
-+{
-+ struct sunos_fp fpstatus;
-+};
-+
-+/* The SunOS core file header layout. */
-+struct user {
-+ unsigned int magic;
-+ unsigned int len;
-+ struct sunos_regs regs;
-+ struct
-+ {
-+ unsigned char a_dynamic :1;
-+ unsigned char a_toolversion :7;
-+ unsigned char a_machtype;
-+ unsigned short a_info;
-+ unsigned int a_text;
-+ unsigned int a_data;
-+ unsigned int a_bss;
-+ unsigned int a_syms;
-+ unsigned int a_entry;
-+ unsigned int a_trsize;
-+ unsigned int a_drsize;
-+ } uexec;
-+ int signal;
-+ size_t u_tsize;
-+ size_t u_dsize;
-+ size_t u_ssize;
-+ char u_comm[17];
-+ struct sunos_fpu fpu;
-+ unsigned int sigcode;
-+};
-+
-+#define NBPG 0x2000
-+#define UPAGES 1
-+#define SUNOS_CORE_MAGIC 0x080456
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/syscalls.list 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/syscalls.list 2003-09-02 22:55:44.000000000 -0400
-@@ -0,0 +1,3 @@
-+# File name Caller Syscall name # args Strong name Weak names
-+
-+waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sysdep.h 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sysdep.h 2003-09-19 22:37:10.000000000 -0400
-@@ -128,4 +128,22 @@
- __o0; \
- })
-
-+#define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \
-+({ \
-+ register long __o0 __asm__ ("o0") = (long)(arg1); \
-+ register long __o1 __asm__ ("o1") = (long)(arg2); \
-+ register long __o2 __asm__ ("o2") = (long)(arg3); \
-+ register long __o3 __asm__ ("o3") = (long)(arg4); \
-+ register long __o4 __asm__ ("o4") = (long)(arg5); \
-+ register long __g1 __asm__ ("g1") = __NR_clone; \
-+ __asm __volatile (__CLONE_SYSCALL_STRING : \
-+ "=r" (__g1), "=r" (__o0), "=r" (__o1) : \
-+ "0" (__g1), "1" (__o0), "2" (__o1), \
-+ "r" (__o2), "r" (__o3), "r" (__o4) : \
-+ __SYSCALL_CLOBBERS); \
-+ __o0; \
-+})
-+
-+
-+
- #endif /* _LINUX_SPARC_SYSDEP_H */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/system.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/system.c 2003-08-31 13:23:57.000000000 -0400
-@@ -0,0 +1,34 @@
-+/* Copyright (C) 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 <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#ifdef __ASSUME_CLONE_THREAD_FLAGS
-+# define FORK() \
-+ INLINE_CLONE_SYSCALL (CLONE_PARENT_SETTID | SIGCHLD, 0, &pid, NULL, NULL)
-+#endif
-+
-+#include "../system.c"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/speed.c 2002-08-13 10:29:42.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/speed.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,6 @@
- /* `struct termios' speed frobnication functions. Linux version.
-- Copyright (C) 1991,92,93,95,96,97,98,2000,02 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1992,1993,1995,1996,1997,1998,2000,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
-@@ -66,6 +67,9 @@
- return -1;
- }
-
-+#ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
-+ termios_p->c_ospeed = speed;
-+#endif
- termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
- termios_p->c_cflag |= speed;
-
-@@ -90,6 +94,9 @@
- return -1;
- }
-
-+#ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
-+ termios_p->c_ispeed = speed;
-+#endif
- if (speed == 0)
- termios_p->c_iflag |= IBAUD0;
- else
---- glibc-2.3.2/sysdeps/unix/sysv/linux/statfs64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/statfs64.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Return information about the filesystem on which FILE resides.
-- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1998,1999,2000,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
-@@ -21,11 +21,33 @@
- #include <string.h>
- #include <sys/statfs.h>
- #include <stddef.h>
-+#include <sysdep.h>
-+
-+int __no_statfs64 attribute_hidden;
-
- /* Return information about the filesystem on which FILE resides. */
- int
- __statfs64 (const char *file, struct statfs64 *buf)
- {
-+#ifdef __NR_statfs64
-+# if __ASSUME_STATFS64 == 0
-+ if (! __no_statfs64)
-+# endif
-+ {
-+ int result = INLINE_SYSCALL (statfs64, 3, file, sizeof (*buf), buf);
-+
-+# if __ASSUME_STATFS64 == 0
-+ if (result == 0 || errno != ENOSYS)
-+# endif
-+ return result;
-+
-+# if __ASSUME_STATFS64 == 0
-+ __no_statfs64 = 1;
-+# endif
-+ }
-+#endif
-+
-+#if __ASSUME_STATFS64 == 0
- struct statfs buf32;
-
- if (__statfs (file, &buf32) < 0)
-@@ -40,8 +62,10 @@
- buf->f_ffree = buf32.f_ffree;
- buf->f_fsid = buf32.f_fsid;
- buf->f_namelen = buf32.f_namelen;
-+ buf->f_frsize = buf32.f_frsize;
- memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
-
- return 0;
-+#endif
- }
- weak_alias (__statfs64, statfs64)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/statvfs.c 2002-09-21 01:36:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/statvfs.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -17,16 +17,14 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <errno.h>
--#include <mntent.h>
--#include <paths.h>
--#include <stdio_ext.h>
--#include <string.h>
--#include <sys/mount.h>
-+#include <stddef.h>
- #include <sys/stat.h>
- #include <sys/statfs.h>
- #include <sys/statvfs.h>
-
-+extern void __internal_statvfs (const char *name, struct statvfs *buf,
-+ struct statfs *fsbuf, struct stat64 *st);
-+
-
- int
- statvfs (const char *file, struct statvfs *buf)
-@@ -38,8 +36,9 @@
- if (__statfs (file, &fsbuf) < 0)
- return -1;
-
--#define STAT(st) stat64 (file, st)
--#include "internal_statvfs.c"
-+ /* Convert the result. */
-+ __internal_statvfs (file, buf, &fsbuf,
-+ stat64 (file, &st) == -1 ? NULL : &st);
-
- /* We signal success if the statfs call succeeded. */
- return 0;
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h 2002-12-16 18:24:21.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -19,6 +19,7 @@
- #ifndef _SYS_EPOLL_H
- #define _SYS_EPOLL_H 1
-
-+#include <stdint.h>
- #include <sys/types.h>
-
-
-@@ -42,8 +43,10 @@
- #define EPOLLMSG EPOLLMSG
- EPOLLERR = 0x008,
- #define EPOLLERR EPOLLERR
-- EPOLLHUP = 0x010
-+ EPOLLHUP = 0x010,
- #define EPOLLHUP EPOLLHUP
-+ EPOLLET = (1 << 31)
-+#define EPOLLET EPOLLET
- };
-
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/param.h 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/param.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,2000,2001,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
-@@ -49,10 +49,16 @@
-
- /* Macros for counting and rounding. */
- #ifndef howmany
--# define howmany(x, y) (((x)+((y)-1))/(y))
-+# define howmany(x, y) (((x) + ((y) - 1)) / (y))
- #endif
--#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
--#define powerof2(x) ((((x)-1)&(x))==0)
-+#ifdef __GNUC__
-+# define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \
-+ ? (((x) + (y) - 1) & ~((y) - 1)) \
-+ : ((((x) + ((y) - 1)) / (y)) * (y)))
-+#else
-+# define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
-+#endif
-+#define powerof2(x) ((((x) - 1) & (x)) == 0)
-
- /* Macros for min/max. */
- #define MIN(a,b) (((a)<(b))?(a):(b))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/quota.h 1999-10-18 23:05:21.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/quota.h 2002-11-16 08:57:24.000000000 -0500
-@@ -31,7 +31,7 @@
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
-- * Version: $Id: quota.h,v 1.7 1999/10/19 03:05:21 drepper Exp $
-+ * Version: $Id: quota.h,v 1.6 1999/06/08 21:14:28 drepper Exp $
- */
-
- #ifndef _SYS_QUOTA_H
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2002-11-06 00:43:44.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1999, 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
-@@ -26,6 +26,9 @@
- #define _LINUX_KERNEL_H 1
- #define _LINUX_TYPES_H 1
- #define _LINUX_LIST_H 1
-+/* We do need this one for the declarations in <linux/sysctl.h>,
-+ since we've elided the inclusion of <linux/kernel.h> that gets them. */
-+#include <linux/compiler.h>
- #include <linux/sysctl.h>
-
- __BEGIN_DECLS
---- glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list 2003-02-05 16:04:09.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list 2003-09-19 22:37:09.000000000 -0400
-@@ -14,12 +14,12 @@
- flock - flock i:ii __flock flock
- fork - fork i: __libc_fork __fork fork
- get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
--getegid - getegid i: __getegid getegid
--geteuid - geteuid i: __geteuid geteuid
-+getegid - getegid Ei: __getegid getegid
-+geteuid - geteuid Ei: __geteuid geteuid
- getpgid - getpgid i:i __getpgid getpgid
--getpgrp - getpgrp i: getpgrp
-+getpgrp - getpgrp Ei: getpgrp
- getpmsg - getpmsg i:ipppp getpmsg
--getppid - getppid i: __getppid getppid
-+getppid - getppid Ei: __getppid getppid
- getresuid - getresuid i:ppp getresuid
- getresgid - getresgid i:ppp getresgid
- getsid - getsid i:i getsid
-@@ -28,7 +28,8 @@
- iopl - iopl i:i iopl
- klogctl EXTRA syslog i:isi klogctl
- lchown - lchown i:sii __lchown lchown
--madvise - madvise i:pii posix_madvise madvise
-+posix_madvise - madvise Vi:pii posix_madvise
-+madvise - madvise i:pii madvise
- mincore - mincore i:anV mincore
- mlock - mlock i:bn mlock
- mlockall - mlockall i:i mlockall
-@@ -43,18 +44,16 @@
- personality init-first personality i:i __personality personality
- pipe - pipe i:f __pipe pipe
- pivot_root EXTRA pivot_root i:ss pivot_root
--posix_fadvise64 - fadvise64 i:iiiii posix_advise64
- prctl EXTRA prctl i:iiiii __prctl prctl
- putpmsg - putpmsg i:ippii putpmsg
- query_module EXTRA query_module i:sipip query_module
- quotactl EXTRA quotactl i:isip quotactl
--sched_getaffinity - sched_getaffinity i:iip sched_getaffinity
-+remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages
- sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
- sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler
- sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max
- sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_priority_min
- sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_interval
--sched_setaffinity - sched_setaffinity i:iip sched_setaffinity
- sched_setp - sched_setparam i:ip __sched_setparam sched_setparam
- sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler
- sched_yield - sched_yield i: __sched_yield sched_yield
-@@ -74,17 +73,16 @@
- wait4 - wait4 i:iWiP __wait4 wait4
-
- chown - chown i:sii __libc_chown __chown chown
--fcntl - fcntl Ci:iiF __libc_fcntl __fcntl fcntl
-
--setxattr EXTRA setxattr i:sspii setxattr
--lsetxattr EXTRA lsetxattr i:sspii lsetxattr
--fsetxattr EXTRA fsetxattr i:ispii fsetxattr
--getxattr EXTRA getxattr i:sspi getxattr
--lgetxattr EXTRA lgetxattr i:sspi lgetxattr
--fgetxattr EXTRA fgetxattr i:ispi fgetxattr
--listxattr EXTRA listxattr i:ssi listxattr
--llistxattr EXTRA llistxattr i:ssi llistxattr
--flistxattr EXTRA flistxattr i:isi flistxattr
--removexattr EXTRA removexattr i:ss removexattr
--lremovexattr EXTRA lremovexattr i:ss lremovexattr
--fremovexattr EXTRA fremovexattr i:is fremovexattr
-+setxattr - setxattr i:sspii setxattr
-+lsetxattr - lsetxattr i:sspii lsetxattr
-+fsetxattr - fsetxattr i:ispii fsetxattr
-+getxattr - getxattr i:sspi getxattr
-+lgetxattr - lgetxattr i:sspi lgetxattr
-+fgetxattr - fgetxattr i:ispi fgetxattr
-+listxattr - listxattr i:ssi listxattr
-+llistxattr - llistxattr i:ssi llistxattr
-+flistxattr - flistxattr i:isi flistxattr
-+removexattr - removexattr i:ss removexattr
-+lremovexattr - lremovexattr i:ss lremovexattr
-+fremovexattr - fremovexattr i:is fremovexattr
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c 2003-04-12 11:39:49.000000000 -0400
-@@ -0,0 +1,52 @@
-+/* Get file-specific information about a file. Linux version.
-+ Copyright (C) 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>
-+#include <time.h>
-+#include <unistd.h>
-+
-+static long int posix_sysconf (int name);
-+
-+/* Define this first, so it can be inlined. */
-+#define __sysconf static posix_sysconf
-+#include <sysdeps/posix/sysconf.c>
-+
-+
-+/* Get the value of the system variable NAME. */
-+long int
-+__sysconf (int name)
-+{
-+ switch (name)
-+ {
-+#ifdef __NR_clock_getres
-+ case _SC_MONOTONIC_CLOCK:
-+ /* Check using the clock_getres system call. */
-+ {
-+ struct timespec ts;
-+ INTERNAL_SYSCALL_DECL (err);
-+ int r;
-+ r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
-+ return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : 1;
-+ }
-+#endif
-+
-+ default:
-+ return posix_sysconf (name);
-+ }
-+}
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sysctl.c 2002-12-15 23:26:37.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sysctl.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Read or write system information. Linux version.
-- Copyright (C) 1996-1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-1999, 2000, 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
-@@ -24,8 +24,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall__sysctl (struct __sysctl_args *__unbounded args);
--
- int
- __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
- void *newval, size_t newlen)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/system.c 1996-09-12 14:29:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/system.c 2003-04-24 20:06:01.000000000 -0400
-@@ -1,2 +1,77 @@
-+/* Copyright (C) 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 <sched.h>
-+#include <signal.h>
-+#include <sysdep.h>
-+#include <unistd.h>
-+#include <sys/wait.h>
-+#include <bits/libc-lock.h>
-+#include <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#if defined __ASSUME_CLONE_THREAD_FLAGS && !defined FORK
-+# define FORK() \
-+ INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
-+#endif
-+
-+#ifdef _LIBC_REENTRANT
-+static void cancel_handler (void *arg);
-+
-+# define CLEANUP_HANDLER \
-+ __libc_cleanup_region_start (1, cancel_handler, &pid)
-+
-+# define CLEANUP_RESET \
-+ __libc_cleanup_region_end (0)
-+#endif
-+
-+
- /* Linux has waitpid(), so override the generic unix version. */
- #include <sysdeps/posix/system.c>
-+
-+
-+#ifdef _LIBC_REENTRANT
-+/* The cancellation handler. */
-+static void
-+cancel_handler (void *arg)
-+{
-+ pid_t child = *(pid_t *) arg;
-+
-+ INTERNAL_SYSCALL_DECL (err);
-+ INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
-+
-+ TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
-+
-+ DO_LOCK ();
-+
-+ if (SUB_REF () == 0)
-+ {
-+ (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
-+ (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
-+ }
-+
-+ DO_UNLOCK ();
-+}
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/tcgetattr.c 2003-02-17 14:47:06.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/tcgetattr.c 2003-09-19 22:37:09.000000000 -0400
-@@ -45,11 +45,19 @@
- termios_p->c_cflag = k_termios.c_cflag;
- termios_p->c_lflag = k_termios.c_lflag;
- termios_p->c_line = k_termios.c_line;
--#ifdef _HAVE_C_ISPEED
-+#ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
-+# ifdef _HAVE_C_ISPEED
- termios_p->c_ispeed = k_termios.c_ispeed;
-+# else
-+ termios_p->c_ispeed = k_termios.c_cflag & (CBAUD | CBAUDEX);
-+# endif
- #endif
--#ifdef _HAVE_C_OSPEED
-+#ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
-+# ifdef _HAVE_C_OSPEED
- termios_p->c_ospeed = k_termios.c_ospeed;
-+# else
-+ termios_p->c_ospeed = k_termios.c_cflag & (CBAUD | CBAUDEX);
-+# endif
- #endif
- if (sizeof (cc_t) == 1 || _POSIX_VDISABLE == 0
- || (unsigned char) _POSIX_VDISABLE == (unsigned char) -1)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c 2003-02-20 19:09:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c 2003-09-19 22:37:09.000000000 -0400
-@@ -37,14 +37,7 @@
- We use an unused bit in the `c_iflag' field to keep track of this
- use of `cfsetispeed'. The value here must correspond to the one used
- in `speed.c'. */
--#if !defined _HAVE_C_ISPEED || !defined _HAVE_C_OSPEED
--# define IBAUD0 020000000000
--#else
--/* If we have separate values for input and output speed don't bother
-- with this. Define the value as zero so the compiler sees we don't
-- have to do the AND below. */
--# define IBAUD0 0
--#endif
-+#define IBAUD0 020000000000
-
-
- /* Set the state of FD to *TERMIOS_P. */
-@@ -78,10 +71,10 @@
- k_termios.c_cflag = termios_p->c_cflag;
- k_termios.c_lflag = termios_p->c_lflag;
- k_termios.c_line = termios_p->c_line;
--#ifdef _HAVE_C_ISPEED
-+#if defined _HAVE_C_ISPEED && defined _HAVE_STRUCT_TERMIOS_C_ISPEED
- k_termios.c_ispeed = termios_p->c_ispeed;
- #endif
--#ifdef _HAVE_C_OSPEED
-+#if defined _HAVE_C_OSPEED && defined _HAVE_STRUCT_TERMIOS_C_OSPEED
- k_termios.c_ospeed = termios_p->c_ospeed;
- #endif
- memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
---- glibc-2.3.2/sysdeps/unix/sysv/linux/truncate64.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/truncate64.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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
-@@ -33,10 +33,6 @@
- int __have_no_truncate64;
- #endif
-
--/* The order of hight, low depends on endianness. */
--extern int __syscall_truncate64 (const char *__unbounded path,
-- int high_length, int low_length);
--
- /* Truncate the file FD refers to to LENGTH bytes. */
- int
- truncate64 (const char *path, off64_t length)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/usleep.c 2002-12-15 23:26:37.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/usleep.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Implementation of the BSD usleep function using nanosleep.
-- Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -27,5 +27,8 @@
- struct timespec ts = { .tv_sec = (long int) (useconds / 1000000),
- .tv_nsec = (long int) (useconds % 1000000) * 1000ul };
-
-+ /* Note the usleep() is a cancellation point. But since we call
-+ nanosleep() which itself is a cancellation point we do not have
-+ to do anything here. */
- return __nanosleep (&ts, NULL);
- }
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ustat.c 2001-07-07 15:21:32.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/ustat.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -25,8 +25,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_ustat (unsigned short int, struct ustat *__unbounded);
--
- int
- ustat (dev_t dev, struct ustat *ubuf)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/utimes.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/utimes.c 2003-09-19 22:37:09.000000000 -0400
-@@ -0,0 +1,60 @@
-+/* Copyright (C) 1995, 1997, 2000, 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 <errno.h>
-+#include <stddef.h>
-+#include <utime.h>
-+#include <sys/time.h>
-+#include <sysdep.h>
-+#include "kernel-features.h"
-+
-+
-+/* Change the access time of FILE to TVP[0] and
-+ the modification time of FILE to TVP[1]. */
-+int
-+__utimes (const char *file, const struct timeval tvp[2])
-+{
-+#ifdef __NR_utimes
-+ int result = INLINE_SYSCALL (utimes, 2, file, tvp);
-+# ifndef __ASSUME_UTIMES
-+ if (result != -1 || errno != ENOSYS)
-+# endif
-+ return result;
-+#endif
-+
-+ /* The utimes() syscall does not exist or is not available in the
-+ used kernel. Use utime(). For this we have to convert to the
-+ data format utime() expects. */
-+#ifndef __ASSUME_UTIMES
-+ struct utimbuf buf;
-+ struct utimbuf *times;
-+
-+ if (tvp != NULL)
-+ {
-+ times = &buf;
-+ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-+ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
-+ }
-+ else
-+ times = NULL;
-+
-+ return INLINE_SYSCALL (utime, 2, file, times);
-+#endif
-+}
-+
-+weak_alias (__utimes, utimes)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/wait.c 2002-12-15 19:57:48.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/wait.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1997,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
-@@ -24,7 +24,7 @@
-
- /* Wait for a child to die. When one does, put its status in *STAT_LOC
- and return its process ID. For errors, return (pid_t) -1. */
--__pid_t
-+pid_t
- __libc_wait (__WAIT_STATUS_DEFN stat_loc)
- {
- if (SINGLE_THREAD_P)
-@@ -33,8 +33,8 @@
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
-- int result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
-- (struct rusage *) NULL);
-+ pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
-+ (struct rusage *) NULL);
-
- LIBC_CANCEL_RESET (oldtype);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/waitpid.c 2002-12-15 19:57:48.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/waitpid.c 2003-05-24 14:06:23.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,95,96,97,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,92,95,96,97,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
-@@ -25,11 +25,21 @@
- __libc_waitpid (__pid_t pid, int *stat_loc, int options)
- {
- if (SINGLE_THREAD_P)
-- return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
-+ {
-+#ifdef __NR_waitpid
-+ return INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options);
-+#else
-+ return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
-+#endif
-+ }
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
-+#ifdef __NR_waitpid
-+ int result = INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options);
-+#else
- int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
-+#endif
-
- LIBC_CANCEL_RESET (oldtype);
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/writev.c 2002-12-15 04:41:03.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/writev.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* writev supports all Linux kernels >= 2.0.
-- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -26,7 +26,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern ssize_t __syscall_writev (int, const struct iovec *__unbounded, int);
- static ssize_t __atomic_writev_replacement (int, const struct iovec *,
- int) internal_function;
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/__start_context.S 2002-08-31 04:05:17.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/__start_context.S 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-
-@@ -41,7 +41,7 @@
- exit the program with the return error value (-1). */
-
- 2: movq %rax,%rdi
-- call JUMPTARGET(exit)
-+ call HIDDEN_JUMPTARGET(exit)
- /* The 'exit' call should never return. In case it does cause
- the process to terminate. */
- hlt
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/a.out.h 2003-07-25 05:04:58.000000000 -0400
-@@ -0,0 +1,13 @@
-+#ifndef __A_OUT_GNU_H__
-+# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
-+#endif
-+
-+#include <bits/wordsize.h>
-+
-+#if __WORDSIZE == 64
-+
-+/* Signal to users of this header that this architecture really doesn't
-+ support a.out binary format. */
-+#define __NO_A_OUT_SUPPORT 1
-+
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2001-09-19 06:30:39.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2003-03-15 15:02:22.000000000 -0500
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/x86_64 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 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
-@@ -53,11 +53,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/stat.h 2002-12-31 15:08:59.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/stat.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999,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
-@@ -22,8 +22,6 @@
-
- /* Versions of the `struct stat' data structure. */
- #define _STAT_VER_KERNEL 0
--#define _STAT_VER_LINUX 1
--#define _STAT_VER _STAT_VER_LINUX
-
- #if __WORDSIZE == 32
- # define _STAT_VER_SVR4 2
-@@ -34,10 +32,14 @@
- # define _MKNOD_VER_SVR4 2
- # define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
- #else
-+# define _STAT_VER_LINUX 1
-+
- /* x86-64 versions of the `xmknod' interface. */
- # define _MKNOD_VER_LINUX 0
- #endif
-
-+#define _STAT_VER _STAT_VER_LINUX
-+
- struct stat
- {
- __dev_t st_dev; /* Device. */
-@@ -169,6 +171,8 @@
- /* Tell code we have these members. */
- #define _STATBUF_ST_BLKSIZE
- #define _STATBUF_ST_RDEV
-+/* Nanosecond resolution time values are supported. */
-+#define _STATBUF_ST_NSEC
-
- /* Encoding of the file mode. */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S 2002-08-03 22:20:07.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S 2003-03-15 15:02:21.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001,02 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -31,16 +31,22 @@
- the kernel entry is:
- int clone (long flags, void *child_stack).
-
-- The parameters are passed in register from userland:
-+ The parameters are passed in register and on the stack from userland:
- rdi: fn
- rsi: child_stack
- rdx: flags
- rcx: arg
-+ r8d: TID field in parent
-+ r9d: thread pointer
-+%esp+8: TID field in child
-
- The kernel expects:
- rax: system call number
- rdi: flags
-- rsi: child_stack */
-+ rsi: child_stack
-+ rdx: TID field in parent
-+ r10: TID field in child
-+ r8: thread pointer */
-
-
- .text
-@@ -57,11 +63,14 @@
- movq %rcx,8(%rsi)
-
- /* Save the function pointer. It will be popped off in the
-- child in the ebx frobbing below. */
-+ child in the ebx frobbing below. */
- movq %rdi,0(%rsi)
-
- /* Do the system call. */
- movq %rdx, %rdi
-+ movq %r8, %rdx
-+ movq %r9, %r8
-+ movq 8(%rsp), %r10
- movq $SYS_ify(clone),%rax
- syscall
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-cache.h 2002-04-22 07:51:40.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-cache.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 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
-@@ -22,4 +22,4 @@
- #define _dl_cache_check_flags(flags) \
- ((flags) == _DL_CACHE_DEFAULT_ID)
-
--#include_next <dl-cache.h>
-+#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c 2003-07-22 18:06:10.000000000 -0400
-@@ -0,0 +1,5 @@
-+#ifdef IS_IN_ldconfig
-+#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.c>
-+#else
-+#include <sysdeps/generic/dl-procinfo.c>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h 2003-07-22 18:06:23.000000000 -0400
-@@ -0,0 +1,5 @@
-+#ifdef IS_IN_ldconfig
-+#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
-+#else
-+#include <sysdeps/generic/dl-procinfo.h>
-+#endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c 2003-05-09 03:52:47.000000000 -0400
-@@ -0,0 +1 @@
-+#include "../i386/get_clockfreq.c"
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2002-04-14 04:58:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2003-05-24 14:06:24.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -27,6 +27,7 @@
- ENTRY (__gettimeofday)
- /* Align stack. */
- sub $0x8, %rsp
-+ cfi_adjust_cfa_offset(8)
- movq $VSYSCALL_ADDR_vgettimeofday, %rax
- callq *%rax
- /* Check error return. */
-@@ -35,6 +36,7 @@
-
- L(pseudo_end):
- add $0x8, %rsp
-+ cfi_adjust_cfa_offset(-8)
- ret
- PSEUDO_END(__gettimeofday)
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h 2003-06-12 12:15:48.000000000 -0400
-@@ -0,0 +1,21 @@
-+/* Definition of `struct stat' used in the kernel.
-+ Copyright (C) 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. */
-+
-+#define STAT_IS_KERNEL_STAT 1
-+#define XSTAT_IS_XSTAT64 1
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/register-dump.h 2002-03-28 18:41:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/register-dump.h 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Dump registers.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -65,7 +65,7 @@
- }
-
- static void
--register_dump (int fd, struct sigcontext *ctx)
-+register_dump (int fd, struct ucontext *ctx)
- {
- char regs[25][16];
- char fpregs[30][8];
-@@ -84,33 +84,33 @@
- ++nr
-
- /* Generate strings of register contents. */
-- hexvalue (ctx->rax, regs[0], 16);
-- hexvalue (ctx->rbx, regs[1], 16);
-- hexvalue (ctx->rcx, regs[2], 16);
-- hexvalue (ctx->rdx, regs[3], 16);
-- hexvalue (ctx->rsi, regs[4], 16);
-- hexvalue (ctx->rdi, regs[5], 16);
-- hexvalue (ctx->rbp, regs[6], 16);
-- hexvalue (ctx->r8, regs[7], 16);
-- hexvalue (ctx->r9, regs[8], 16);
-- hexvalue (ctx->r10, regs[9], 16);
-- hexvalue (ctx->r11, regs[10], 16);
-- hexvalue (ctx->r12, regs[11], 16);
-- hexvalue (ctx->r13, regs[12], 16);
-- hexvalue (ctx->r14, regs[13], 16);
-- hexvalue (ctx->r15, regs[14], 16);
-- hexvalue (ctx->rsp, regs[15], 16);
-- hexvalue (ctx->rip, regs[16], 16);
--
-- hexvalue (ctx->eflags, regs[17], 8);
-- hexvalue (ctx->cs, regs[18], 4);
-- hexvalue (ctx->fs, regs[19], 4);
-- hexvalue (ctx->gs, regs[20], 4);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RAX], regs[0], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RBX], regs[1], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RCX], regs[2], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RDX], regs[3], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RSI], regs[4], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RDI], regs[5], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RBP], regs[6], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R8], regs[7], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R9], regs[8], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R10], regs[9], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R11], regs[10], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R12], regs[11], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R13], regs[12], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R14], regs[13], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_R15], regs[14], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RSP], regs[15], 16);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_RIP], regs[16], 16);
-+
-+ hexvalue (ctx->uc_mcontext.gregs[REG_EFL], regs[17], 8);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_CSGSFS] & 0xffff, regs[18], 4);
-+ hexvalue ((ctx->uc_mcontext.gregs[REG_CSGSFS] >> 16) & 0xffff, regs[19], 4);
-+ hexvalue ((ctx->uc_mcontext.gregs[REG_CSGSFS] >> 32) & 0xffff, regs[20], 4);
- /* hexvalue (ctx->ss, regs[23], 4); */
-- hexvalue (ctx->trapno, regs[21], 8);
-- hexvalue (ctx->err, regs[22], 8);
-- hexvalue (ctx->oldmask, regs[23], 8);
-- hexvalue (ctx->cr2, regs[24], 8);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_TRAPNO], regs[21], 8);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_ERR], regs[22], 8);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_OLDMASK], regs[23], 8);
-+ hexvalue (ctx->uc_mcontext.gregs[REG_CR2], regs[24], 8);
-
- /* Generate the output. */
- ADD_STRING ("Register dump:\n\n RAX: ");
-@@ -168,15 +168,15 @@
- ADD_STRING (" CR2: ");
- ADD_MEM (regs[24], 8);
-
-- if (ctx->fpstate != NULL)
-+ if (ctx->uc_mcontext.fpregs != NULL)
- {
-
- /* Generate output for the FPU control/status registers. */
-- hexvalue (ctx->fpstate->cwd, fpregs[0], 8);
-- hexvalue (ctx->fpstate->swd, fpregs[1], 8);
-- hexvalue (ctx->fpstate->ftw, fpregs[2], 8);
-- hexvalue (ctx->fpstate->rip, fpregs[3], 8);
-- hexvalue (ctx->fpstate->rdp, fpregs[4], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->cwd, fpregs[0], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->swd, fpregs[1], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->ftw, fpregs[2], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->rip, fpregs[3], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->rdp, fpregs[4], 8);
-
- ADD_STRING ("\n\n FPUCW: ");
- ADD_MEM (fpregs[0], 8);
-@@ -190,54 +190,71 @@
- ADD_MEM (fpregs[4], 8);
-
- /* Now the real FPU registers. */
-- hexvalue (ctx->fpstate->_st[0].exponent, fpregs[5], 8);
-- hexvalue (ctx->fpstate->_st[0].significand[3] << 16
-- | ctx->fpstate->_st[0].significand[2], fpregs[6], 8);
-- hexvalue (ctx->fpstate->_st[0].significand[1] << 16
-- | ctx->fpstate->_st[0].significand[0], fpregs[7], 8);
-- hexvalue (ctx->fpstate->_st[1].exponent, fpregs[8], 8);
-- hexvalue (ctx->fpstate->_st[1].significand[3] << 16
-- | ctx->fpstate->_st[1].significand[2], fpregs[9], 8);
-- hexvalue (ctx->fpstate->_st[1].significand[1] << 16
-- | ctx->fpstate->_st[1].significand[0], fpregs[10], 8);
-- hexvalue (ctx->fpstate->_st[2].exponent, fpregs[11], 8);
-- hexvalue (ctx->fpstate->_st[2].significand[3] << 16
-- | ctx->fpstate->_st[2].significand[2], fpregs[12], 8);
-- hexvalue (ctx->fpstate->_st[2].significand[1] << 16
-- | ctx->fpstate->_st[2].significand[0], fpregs[13], 8);
-- hexvalue (ctx->fpstate->_st[3].exponent, fpregs[14], 8);
-- hexvalue (ctx->fpstate->_st[3].significand[3] << 16
-- | ctx->fpstate->_st[3].significand[2], fpregs[15], 8);
-- hexvalue (ctx->fpstate->_st[3].significand[1] << 16
-- | ctx->fpstate->_st[3].significand[0], fpregs[16], 8);
-- hexvalue (ctx->fpstate->_st[4].exponent, fpregs[17], 8);
-- hexvalue (ctx->fpstate->_st[4].significand[3] << 16
-- | ctx->fpstate->_st[4].significand[2], fpregs[18], 8);
-- hexvalue (ctx->fpstate->_st[4].significand[1] << 16
-- | ctx->fpstate->_st[4].significand[0], fpregs[19], 8);
-- hexvalue (ctx->fpstate->_st[5].exponent, fpregs[20], 8);
-- hexvalue (ctx->fpstate->_st[5].significand[3] << 16
-- | ctx->fpstate->_st[5].significand[2], fpregs[21], 8);
-- hexvalue (ctx->fpstate->_st[5].significand[1] << 16
-- | ctx->fpstate->_st[5].significand[0], fpregs[22], 8);
-- hexvalue (ctx->fpstate->_st[6].exponent, fpregs[23], 8);
-- hexvalue (ctx->fpstate->_st[6].significand[3] << 16
-- | ctx->fpstate->_st[6].significand[2], fpregs[24], 8);
-- hexvalue (ctx->fpstate->_st[6].significand[1] << 16
-- | ctx->fpstate->_st[6].significand[0], fpregs[25], 8);
-- hexvalue (ctx->fpstate->_st[7].exponent, fpregs[26], 8);
-- hexvalue (ctx->fpstate->_st[7].significand[3] << 16
-- | ctx->fpstate->_st[7].significand[2], fpregs[27], 8);
-- hexvalue (ctx->fpstate->_st[7].significand[1] << 16
-- | ctx->fpstate->_st[7].significand[0], fpregs[28], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[0].exponent, fpregs[5], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[0].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[0].significand[2], fpregs[6],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[0].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[0].significand[0], fpregs[7],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[1].exponent, fpregs[8], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[1].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[1].significand[2], fpregs[9],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[1].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[1].significand[0], fpregs[10],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[2].exponent, fpregs[11], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[2].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[2].significand[2], fpregs[12],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[2].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[2].significand[0], fpregs[13],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[3].exponent, fpregs[14], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[3].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[3].significand[2], fpregs[15],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[3].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[3].significand[0], fpregs[16],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[4].exponent, fpregs[17], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[4].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[4].significand[2], fpregs[18],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[4].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[4].significand[0], fpregs[19],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[5].exponent, fpregs[20], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[5].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[5].significand[2], fpregs[21],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[5].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[5].significand[0], fpregs[22],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[6].exponent, fpregs[23], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[6].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[6].significand[2], fpregs[24],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[6].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[6].significand[0], fpregs[25],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[7].exponent, fpregs[26], 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[7].significand[3] << 16
-+ | ctx->uc_mcontext.fpregs->_st[7].significand[2], fpregs[27],
-+ 8);
-+ hexvalue (ctx->uc_mcontext.fpregs->_st[7].significand[1] << 16
-+ | ctx->uc_mcontext.fpregs->_st[7].significand[0], fpregs[28],
-+ 8);
-
-- hexvalue (ctx->fpstate->mxcsr, fpregs[29], 4);
-+ hexvalue (ctx->uc_mcontext.fpregs->mxcsr, fpregs[29], 4);
-
- for (i = 0; i < 16; i++)
-- hexvalue (ctx->fpstate->_xmm[i].element[3] << 24
-- | ctx->fpstate->_xmm[i].element[2] << 16
-- | ctx->fpstate->_xmm[i].element[1] << 8
-- | ctx->fpstate->_xmm[i].element[0], xmmregs[i], 32);
-+ hexvalue (ctx->uc_mcontext.fpregs->_xmm[i].element[3] << 24
-+ | ctx->uc_mcontext.fpregs->_xmm[i].element[2] << 16
-+ | ctx->uc_mcontext.fpregs->_xmm[i].element[1] << 8
-+ | ctx->uc_mcontext.fpregs->_xmm[i].element[0], xmmregs[i],
-+ 32);
-
-
- ADD_STRING ("\n\n ST(0) ");
-@@ -284,25 +301,25 @@
- ADD_STRING ("\n mxcsr: ");
- ADD_MEM (fpregs[29], 4);
-
-- ADD_STRING ("\n XMM0: ");
-+ ADD_STRING ("\n XMM0: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING (" XMM1: ");
-+ ADD_STRING (" XMM1: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING ("\n XMM2: ");
-+ ADD_STRING ("\n XMM2: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING (" XMM3: ");
-+ ADD_STRING (" XMM3: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING ("\n XMM4: ");
-+ ADD_STRING ("\n XMM4: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING (" XMM5: ");
-+ ADD_STRING (" XMM5: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING ("\n XMM6: ");
-+ ADD_STRING ("\n XMM6: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING (" XMM7: ");
-+ ADD_STRING (" XMM7: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING ("\n XMM8: ");
-+ ADD_STRING ("\n XMM8: ");
- ADD_MEM (xmmregs[0], 32);
-- ADD_STRING (" XMM9: ");
-+ ADD_STRING (" XMM9: ");
- ADD_MEM (xmmregs[0], 32);
- ADD_STRING ("\n XMM10: ");
- ADD_MEM (xmmregs[0], 32);
-@@ -326,4 +343,4 @@
- }
-
-
--#define REGISTER_DUMP register_dump (fd, &ctx)
-+#define REGISTER_DUMP register_dump (fd, ctx)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigaction.c 2003-01-02 18:26:05.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigaction.c 2003-09-19 22:37:11.000000000 -0400
-@@ -36,9 +36,6 @@
- /* We do not globally define the SA_RESTORER flag so do it here. */
- #define SA_RESTORER 0x04000000
-
--extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-- struct kernel_sigaction *__unbounded, size_t);
--
- /* Using the hidden attribute here does not change the code but it
- helps to avoid warnings. */
- #if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \
-@@ -97,14 +94,15 @@
- appropriate GDB maintainer. */
-
- #define RESTORE(name, syscall) RESTORE2 (name, syscall)
--#define RESTORE2(name, syscall) \
-+# define RESTORE2(name, syscall) \
- asm \
- ( \
- ".align 16\n" \
-+ CFI_STARTPROC "\n" \
- "__" #name ":\n" \
- " movq $" #syscall ", %rax\n" \
- " syscall\n" \
-+ CFI_ENDPROC "\n" \
- );
--
- /* The return code for realtime-signals. */
- RESTORE (restore_rt, __NR_rt_sigreturn)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h 2002-11-21 14:09:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h 2003-09-19 22:37:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -16,11 +16,11 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#define SIGCONTEXT struct ucontext
--#define SIGCONTEXT_EXTRA_ARGS
--#define GET_PC(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RIP])
--#define GET_FRAME(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RBP])
--#define GET_STACK(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RSP])
-+#define SIGCONTEXT siginfo_t *_si, struct ucontext *
-+#define SIGCONTEXT_EXTRA_ARGS _si,
-+#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RIP])
-+#define GET_FRAME(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RBP])
-+#define GET_STACK(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RSP])
-
- #define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h 2001-11-21 07:21:56.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h 2003-05-12 12:13:11.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 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
-@@ -18,6 +18,7 @@
-
- #ifndef _SYS_DEBUGREG_H
- #define _SYS_DEBUGREG_H 1
-+#include <bits/wordsize.h>
-
- /* Indicate the register numbers for a number of the specific
- debug registers. Registers 0-3 contain the addresses we wish to trap on */
-@@ -73,7 +74,14 @@
-
- /* The second byte to the control register has a few special
- things. */
--#define DR_CONTROL_RESERVED (0xFC00) /* Reserved */
-+
-+
-+
-+#if __WORDSIZE == 64
-+# define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL) /* Reserved */
-+#else
-+# define DR_CONTROL_RESERVED (0x00FC00U) /* Reserved */
-+#endif
- #define DR_LOCAL_SLOWDOWN (0x100) /* Local slow the pipeline */
- #define DR_GLOBAL_SLOWDOWN (0x200) /* Global slow the pipeline */
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h 2003-07-02 03:12:11.000000000 -0400
-@@ -0,0 +1,105 @@
-+/* Copyright (C) 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. */
-+
-+#ifndef _SYS_EPOLL_H
-+#define _SYS_EPOLL_H 1
-+
-+#include <stdint.h>
-+#include <sys/types.h>
-+
-+
-+enum EPOLL_EVENTS
-+ {
-+ EPOLLIN = 0x001,
-+#define EPOLLIN EPOLLIN
-+ EPOLLPRI = 0x002,
-+#define EPOLLPRI EPOLLPRI
-+ EPOLLOUT = 0x004,
-+#define EPOLLOUT EPOLLOUT
-+ EPOLLRDNORM = 0x040,
-+#define EPOLLRDNORM EPOLLRDNORM
-+ EPOLLRDBAND = 0x080,
-+#define EPOLLRDBAND EPOLLRDBAND
-+ EPOLLWRNORM = 0x100,
-+#define EPOLLWRNORM EPOLLWRNORM
-+ EPOLLWRBAND = 0x200,
-+#define EPOLLWRBAND EPOLLWRBAND
-+ EPOLLMSG = 0x400,
-+#define EPOLLMSG EPOLLMSG
-+ EPOLLERR = 0x008,
-+#define EPOLLERR EPOLLERR
-+ EPOLLHUP = 0x010,
-+#define EPOLLHUP EPOLLHUP
-+ EPOLLET = (1 << 31)
-+#define EPOLLET EPOLLET
-+ };
-+
-+
-+/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
-+#define EPOLL_CTL_ADD 1 /* Add a file decriptor to the interface. */
-+#define EPOLL_CTL_DEL 2 /* Remove a file decriptor from the interface. */
-+#define EPOLL_CTL_MOD 3 /* Change file decriptor epoll_event structure. */
-+
-+
-+typedef union epoll_data
-+{
-+ void *ptr;
-+ int fd;
-+ uint32_t u32;
-+ uint64_t u64;
-+} epoll_data_t;
-+
-+struct epoll_event
-+{
-+ uint32_t events; /* Epoll events */
-+ epoll_data_t data; /* User data variable */
-+} __attribute__ ((__packed__));
-+
-+
-+__BEGIN_DECLS
-+
-+/* Creates an epoll instance. Returns an fd for the new instance.
-+ The "size" parameter is a hint specifying the number of file
-+ descriptors to be associated with the new instance. The fd
-+ returned by epoll_create() should be closed with close(). */
-+extern int epoll_create (int __size) __THROW;
-+
-+
-+/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
-+ -1 in case of error ( the "errno" variable will contain the
-+ specific error code ) The "op" parameter is one of the EPOLL_CTL_*
-+ constants defined above. The "fd" parameter is the target of the
-+ operation. The "event" parameter describes which events the caller
-+ is interested in and any associated user data. */
-+extern int epoll_ctl (int __epfd, int __op, int __fd,
-+ struct epoll_event *__event) __THROW;
-+
-+
-+/* Wait for events on an epoll instance "epfd". Returns the number of
-+ triggered events returned in "events" buffer. Or -1 in case of
-+ error with the "errno" variable set to the specific error code. The
-+ "events" parameter is a buffer that will contain triggered
-+ events. The "maxevents" is the maximum number of events to be
-+ returned ( usually size of "events" ). The "timeout" parameter
-+ specifies the maximum wait time in milliseconds (-1 == infinite). */
-+extern int epoll_wait (int __epfd, struct epoll_event *__events,
-+ int __maxevents, int __timeout) __THROW;
-+
-+__END_DECLS
-+
-+#endif /* sys/epoll.h */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscall.S 2001-09-19 06:31:54.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscall.S 2003-05-24 14:06:24.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2001, 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
-@@ -28,7 +28,6 @@
-
- .text
- ENTRY (syscall)
--
- movq %rdi, %rax /* Syscall number -> rax. */
- movq %rsi, %rdi /* shift arg1 - arg5. */
- movq %rdx, %rsi
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscalls.list 2003-01-30 22:39:32.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscalls.list 2003-08-21 08:37:18.000000000 -0400
-@@ -4,6 +4,7 @@
- mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64
- modify_ldt EXTRA modify_ldt i:ipi __modify_ldt modify_ldt
- llseek EXTRA lseek Ci:iii __libc_lseek64 __llseek llseek __lseek64 lseek64
-+posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
- pread - pread Ci:ibni __libc_pread __libc_pread64 __pread pread __pread64 pread64
- pwrite - pwrite Ci:ibni __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
- fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64
-@@ -25,6 +26,7 @@
- shmdt - shmdt i:s __shmdt shmdt
- shmget - shmget i:iii __shmget shmget
- semop - semop i:ipi __semop semop
-+semtimedop - semtimedop i:ipip semtimedop
- semget - semget i:iii __semget semget
- semctl - semctl i:iiii __semctl semctl
-
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h 2003-01-08 21:54:57.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h 2003-08-21 08:37:18.000000000 -0400
-@@ -46,6 +46,13 @@
- # define __NR_pwrite __NR_pwrite64
- #endif
-
-+/* This is to help the old kernel headers where __NR_semtimedop is not
-+ available. */
-+#ifndef __NR_semtimedop
-+# define __NR_semtimedop 220
-+#endif
-+
-+
- #ifdef __ASSEMBLER__
-
- /* Linux uses a negative return value to indicate syscall errors,
-@@ -81,6 +88,31 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args); \
-+ negq %rax
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END (name)
-+
-+#define ret_ERRVAL ret
-+
- #ifndef PIC
- #define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
- #elif RTLD_PRIVATE_ERRNO
-@@ -113,11 +145,13 @@
- 0: \
- xorq %rdx, %rdx; \
- subq %rax, %rdx; \
-- pushq %rdx \
-+ pushq %rdx; \
-+ cfi_adjust_cfa_offset(8); \
- PUSH_ERRNO_LOCATION_RETURN; \
- call BP_SYM (__errno_location)@PLT; \
- POP_ERRNO_LOCATION_RETURN; \
- popq %rdx; \
-+ cfi_adjust_cfa_offset(-8); \
- movl %edx, (%rax); \
- orq $-1, %rax; \
- jmp L(pseudo_end);
-@@ -134,37 +168,42 @@
- jmp L(pseudo_end);
- #endif /* PIC */
-
--/* Linux/x86-64 takes system call arguments in registers:
-+/* The Linux/x86-64 kernel expects the system call parameters in
-+ registers according to the following table:
-
-- Register setup:
-- system call number rax
-+ syscall number rax
- arg 1 rdi
- arg 2 rsi
- arg 3 rdx
-- arg 4 rcx
-+ arg 4 r10
- arg 5 r8
- arg 6 r9
-
-+ The Linux kernel uses and destroys internally these registers:
- return address from
- syscall rcx
- additionally clobered: r12-r15,rbx,rbp
- eflags from syscall r11
-
-- The compiler is going to form a call by coming here, through PSEUDO, with arguments:
-+ Normal function call, including calls to the system call stub
-+ functions in the libc, get the first six parameters passed in
-+ registers and the seventh parameter and later on the stack. The
-+ register use is as follows:
-+
-+ system call number in the DO_CALL macro
-+ arg 1 rdi
-+ arg 2 rsi
-+ arg 3 rdx
-+ arg 4 rcx
-+ arg 5 r8
-+ arg 6 r9
-+
-+ We have to take care that the stack is aligned to 16 bytes. When
-+ called the stack is not aligned since the return address has just
-+ been pushed.
-
-- syscall number in the DO_CALL macro
-- arg 1 rdi
-- arg 2 rsi
-- arg 3 rdx
-- arg 4 r10
-- arg 5 r8
-- arg 6 r9
--
-- We have to take care that the stack is alignedto 16 bytes. When
-- called the stack is not aligned since the return address has just
-- been pushed.
-
-- Syscalls of more than 6 arguments are not supported. */
-+ Syscalls of more than 6 arguments are not supported. */
-
- #undef DO_CALL
- #define DO_CALL(syscall_name, args) \
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/time.S 2002-08-03 12:57:52.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/time.S 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001,02 Free Software Foundation, Inc.
-+/* Copyright (C) 2001,02, 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
-@@ -30,14 +30,13 @@
- ENTRY (time)
- /* Align stack. */
- sub $0x8, %rsp
-+ cfi_adjust_cfa_offset(8)
-+
- movq $VSYSCALL_ADDR_vtime, %rax
- callq *%rax
-- /* Check error return. */
-- cmpl $-4095, %eax
-- jae SYSCALL_ERROR_LABEL
-
--L(pseudo_end):
- add $0x8, %rsp
-+ cfi_adjust_cfa_offset(-8)
- ret
--PSEUDO_END(time)
-+PSEUDO_END_NOERRNO(time)
- libc_hidden_def (time)
---- glibc-2.3.2/sysdeps/unix/sysv/linux/xmknod.c 2002-08-04 04:22:58.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/xmknod.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,6 @@
- /* xmknod call using old-style Unix mknod system call.
-- Copyright (C) 1991,93,95,96,97,98,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 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
-@@ -26,9 +27,6 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--extern int __syscall_mknod (const char *__unbounded, unsigned short int,
-- unsigned short int);
--
- /* 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). */
---- glibc-2.3.2/sysdeps/unix/sysv/linux/xstat.c 2002-10-02 04:53:20.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstat.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,6 +1,5 @@
- /* xstat using old-style Unix stat system call.
-- Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002
-- Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995-1998,2000,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
-@@ -31,10 +30,7 @@
- #include <sys/syscall.h>
- #include <bp-checks.h>
-
--#include <xstatconv.c>
--
--extern int __syscall_stat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
-+#include <xstatconv.h>
-
- /* Get information about the file NAME in BUF. */
- int
-@@ -54,7 +50,7 @@
- result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name),
- __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat_conv (vers, &kbuf, buf);
-+ result = __xstat_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/xstat64.c 2002-10-11 14:58:50.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstat64.c 2003-09-19 22:37:09.000000000 -0400
-@@ -1,5 +1,5 @@
- /* xstat64 using old-style Unix stat system call.
-- Copyright (C) 1991,95,96,97,98,99,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1991, 1995-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
-@@ -29,15 +29,10 @@
- #include "kernel-features.h"
-
- #if __ASSUME_STAT64_SYSCALL == 0
--# include <xstatconv.c>
-+# include <xstatconv.h>
- #endif
-
--extern int __syscall_stat (const char *__unbounded,
-- struct kernel_stat *__unbounded);
--
- #ifdef __NR_stat64
--extern int __syscall_stat64 (const char *__unbounded,
-- struct stat64 *__unbounded);
- # if __ASSUME_STAT64_SYSCALL == 0
- /* The variable is shared between all wrappers around *stat64 calls.
- This is the definition. */
-@@ -82,7 +77,7 @@
-
- result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
- if (result == 0)
-- result = xstat64_conv (vers, &kbuf, buf);
-+ result = __xstat64_conv (vers, &kbuf, buf);
-
- return result;
- #endif
---- glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.c 2003-01-02 05:38:52.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.c 2003-08-21 08:37:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Convert between the kernel's `struct stat' format, and libc's.
-- Copyright (C) 1991,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995-1997,2000,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
-@@ -17,6 +17,10 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
- #ifdef STAT_IS_KERNEL_STAT
-
- /* Dummy. */
-@@ -27,8 +31,9 @@
- #include <string.h>
-
-
--static inline int
--xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+#if !defined __ASSUME_STAT64_SYSCALL || defined XSTAT_IS_XSTAT64
-+int
-+__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
- {
- switch (vers)
- {
-@@ -97,12 +102,13 @@
-
- return 0;
- }
-+#endif
-
--static inline int
--xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+int
-+__xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
- {
- #ifdef XSTAT_IS_XSTAT64
-- return xstat_conv (vers, kbuf, ubuf);
-+ return __xstat_conv (vers, kbuf, ubuf);
- #else
- switch (vers)
- {
-@@ -172,8 +178,8 @@
- #endif
- }
-
--static inline int
--xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
-+int
-+__xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
- {
- switch (vers)
- {
---- glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.h 2003-06-28 04:10:46.000000000 -0400
-@@ -0,0 +1,26 @@
-+/* Convert between the kernel's `struct stat' format, and libc's.
-+ Copyright (C) 1991,1995-1997,2000,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 "kernel-features.h"
-+
-+#ifndef STAT_IS_KERNEL_STAT
-+extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
-+extern int __xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
-+#endif
-+extern int __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf);
---- glibc-2.3.2/sysdeps/unix/sysv/syscalls.list 2002-12-14 19:14:18.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/syscalls.list 2003-08-21 08:37:11.000000000 -0400
-@@ -10,7 +10,7 @@
- settimeofday - settimeofday i:PP __settimeofday settimeofday
- signal - signal i:ii signal
- stime - stime i:p stime
--time - time i:P time
-+time - time Ei:P time
- times - times i:p __times times
- ulimit - ulimit i:ii ulimit
- utime - utime i:sP utime
---- glibc-2.3.2/sysdeps/wordsize-32/Versions 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/wordsize-32/Versions 2003-03-03 04:45:12.000000000 -0500
-@@ -0,0 +1,7 @@
-+libc {
-+ GLIBC_2.3 {
-+ # These were erroneously omitted for 64-bit platforms in 2.3
-+ # and so we don't put them in locale/Versions.
-+ strtoll_l; strtoull_l;
-+ }
-+}
---- glibc-2.3.2/sysdeps/wordsize-64/Versions 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/wordsize-64/Versions 2003-03-03 04:45:12.000000000 -0500
-@@ -0,0 +1,6 @@
-+libc {
-+ GLIBC_2.3.3 {
-+ # These were erroneously omitted for 64-bit platforms in 2.3.
-+ strtoll_l; strtoull_l;
-+ }
-+}
---- glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c 2002-08-04 20:30:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c 2003-03-15 15:02:22.000000000 -0500
-@@ -1,11 +1,14 @@
- /* We have to irritate the compiler a bit. */
- #define ____strtoll_l_internal ____strtoll_l_internal_XXX
- #define __strtoll_l __strtoll_l_XXX
-+#define strtoll_l strtoll_l_XXX
-
- #include <sysdeps/generic/strtol_l.c>
-
- #undef ____strtoll_l_internal
- #undef __strtoll_l
-+#undef strtoll_l
- strong_alias (____strtol_l_internal, ____strtoll_l_internal)
- libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal)
- weak_alias (__strtol_l, __strtoll_l)
-+weak_alias (__strtol_l, strtoll_l)
---- glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c 2002-08-04 20:30:03.000000000 -0400
-+++ glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c 2003-03-15 15:02:22.000000000 -0500
-@@ -1,11 +1,14 @@
- /* We have to irritate the compiler a bit. */
- #define ____strtoull_l_internal ____strtoull_l_internal_XXX
- #define __strtoull_l __strtoull_l_XXX
-+#define strtoull_l strtoull_l_XXX
-
- #include <sysdeps/generic/strtoul_l.c>
-
- #undef ____strtoull_l_internal
- #undef __strtoull_l
-+#undef strtoull_l
- strong_alias (____strtoul_l_internal, ____strtoull_l_internal)
- libc_hidden_ver (____strtoul_l_internal, ____strtoull_l_internal)
- weak_alias (__strtoul_l, __strtoull_l)
-+weak_alias (__strtoul_l, strtoull_l)
---- glibc-2.3.2/sysdeps/x86_64/atomicity.h 2001-09-19 06:12:07.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,57 +0,0 @@
--/* Low-level functions for atomic operations. x86-64 version.
-- Copyright (C) 1997, 2000, 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- register uint32_t result;
-- __asm__ __volatile__ ("lock; xaddl %0,%1"
-- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__ ("lock; addl %1,%0"
-- : "=m" (*mem) : "er" (val), "0" (*mem));
--}
--
--static inline char
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("lock; cmpxchgq %3, %1; sete %0"
-- : "=q" (ret), "=m" (*p), "=a" (readval)
-- : "r" (newval), "1" (*p), "a" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
---- glibc-2.3.2/sysdeps/x86_64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/bits/atomic.h 2003-05-12 12:13:12.000000000 -0400
-@@ -0,0 +1,321 @@
-+/* Copyright (C) 2002, 2003 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.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#ifndef LOCK_PREFIX
-+# ifdef UP
-+# define LOCK_PREFIX /* nothing */
-+# else
-+# define LOCK_PREFIX "lock;"
-+# endif
-+#endif
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "q" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK_PREFIX "cmpxchgq %q2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" ((long) (newval)), "m" (*mem), \
-+ "0" ((long) (oldval))); \
-+ ret; })
-+
-+
-+/* Note that we need no lock prefix. */
-+#define atomic_exchange_acq(mem, newvalue) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("xchgb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("xchgw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("xchgl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else \
-+ __asm __volatile ("xchgq %q0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" ((long) (newvalue)), "m" (*mem)); \
-+ result; })
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "xaddb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "xaddw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "xaddl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "xaddq %q0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" ((long) (value)), "m" (*mem)); \
-+ result; })
-+
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_increment (mem); \
-+ else if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_decrement (mem); \
-+ else if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "addq %q1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "addq %q2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "addq %q2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_increment(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "incb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "incw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "incl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "incq %q0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "incb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "incw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "incl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "incq %q0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_decrement(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "decb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "decw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "decl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "decq %q0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "decb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "decw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "decl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "decq %q0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "orb %b2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "orw %w2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "orl %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (__builtin_constant_p (bit) && (bit) < 32) \
-+ __asm __volatile (LOCK_PREFIX "orq %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "i" (1L << (bit))); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "orq %q2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "r" (1UL << (bit))); \
-+ })
-+
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else \
-+ __asm __volatile (LOCK_PREFIX "btsq %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ __result; })
---- glibc-2.3.2/sysdeps/x86_64/bits/byteswap.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/bits/byteswap.h 2003-08-17 02:32:00.000000000 -0400
-@@ -0,0 +1,133 @@
-+/* Macros to swap the order of bytes in integer values.
-+ Copyright (C) 1997, 1998, 2000, 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. */
-+
-+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
-+# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-+#endif
-+
-+#ifndef _BITS_BYTESWAP_H
-+#define _BITS_BYTESWAP_H 1
-+
-+#include <bits/wordsize.h>
-+
-+/* Swap bytes in 16 bit value. */
-+#define __bswap_constant_16(x) \
-+ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
-+
-+#if defined __GNUC__ && __GNUC__ >= 2
-+# define __bswap_16(x) \
-+ (__extension__ \
-+ ({ register unsigned short int __v, __x = (x); \
-+ if (__builtin_constant_p (__x)) \
-+ __v = __bswap_constant_16 (__x); \
-+ else \
-+ __asm__ ("rorw $8, %w0" \
-+ : "=r" (__v) \
-+ : "0" (__x) \
-+ : "cc"); \
-+ __v; }))
-+#else
-+/* This is better than nothing. */
-+# define __bswap_16(x) \
-+ (__extension__ \
-+ ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
-+#endif
-+
-+
-+/* Swap bytes in 32 bit value. */
-+#define __bswap_constant_32(x) \
-+ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
-+ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
-+
-+#if defined __GNUC__ && __GNUC__ >= 2
-+# if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__ \
-+ || defined __pentiumpro__ || defined __pentium4__ \
-+ || defined __k8__ || defined __athlon__ \
-+ || defined __k6__)
-+/* To swap the bytes in a word the i486 processors and up provide the
-+ `bswap' opcode. On i386 we have to use three instructions. */
-+# define __bswap_32(x) \
-+ (__extension__ \
-+ ({ register unsigned int __v, __x = (x); \
-+ if (__builtin_constant_p (__x)) \
-+ __v = __bswap_constant_32 (__x); \
-+ else \
-+ __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \
-+ __v; }))
-+# else
-+# define __bswap_32(x) \
-+ (__extension__ \
-+ ({ register unsigned int __v, __x = (x); \
-+ if (__builtin_constant_p (__x)) \
-+ __v = __bswap_constant_32 (__x); \
-+ else \
-+ __asm__ ("rorw $8, %w0;" \
-+ "rorl $16, %0;" \
-+ "rorw $8, %w0" \
-+ : "=r" (__v) \
-+ : "0" (__x) \
-+ : "cc"); \
-+ __v; }))
-+# endif
-+#else
-+# define __bswap_32(x) \
-+ (__extension__ \
-+ ({ register unsigned int __x = (x); __bswap_constant_32 (__x); }))
-+#endif
-+
-+
-+#if defined __GNUC__ && __GNUC__ >= 2
-+/* Swap bytes in 64 bit value. */
-+# define __bswap_constant_64(x) \
-+ ((((x) & 0xff00000000000000ull) >> 56) \
-+ | (((x) & 0x00ff000000000000ull) >> 40) \
-+ | (((x) & 0x0000ff0000000000ull) >> 24) \
-+ | (((x) & 0x000000ff00000000ull) >> 8) \
-+ | (((x) & 0x00000000ff000000ull) << 8) \
-+ | (((x) & 0x0000000000ff0000ull) << 24) \
-+ | (((x) & 0x000000000000ff00ull) << 40) \
-+ | (((x) & 0x00000000000000ffull) << 56))
-+
-+# if __WORDSIZE == 64
-+# define __bswap_64(x) \
-+ (__extension__ \
-+ ({ register unsigned long __v, __x = (x); \
-+ if (__builtin_constant_p (__x)) \
-+ __v = __bswap_constant_64 (__x); \
-+ else \
-+ __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); \
-+ __v; }))
-+# else
-+# define __bswap_64(x) \
-+ (__extension__ \
-+ ({ union { __extension__ unsigned long long int __ll; \
-+ unsigned int __l[2]; } __w, __r; \
-+ if (__builtin_constant_p (x)) \
-+ __r.__ll = __bswap_constant_64 (x); \
-+ else \
-+ { \
-+ __w.__ll = (x); \
-+ __r.__l[0] = __bswap_32 (__w.__l[1]); \
-+ __r.__l[1] = __bswap_32 (__w.__l[0]); \
-+ } \
-+ __r.__ll; }))
-+# endif
-+#endif
-+
-+#endif /* _BITS_BYTESWAP_H */
---- glibc-2.3.2/sysdeps/x86_64/bits/setjmp.h 2002-03-11 16:08:08.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/bits/setjmp.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -17,8 +17,10 @@
- 02111-1307 USA. */
-
- /* Define the machine-dependent type `jmp_buf'. x86-64 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
-
-@@ -72,3 +74,5 @@
- ((void *) (address) < (void *) (jmpbuf)[JB_SP])
- # endif
- #endif
-+
-+#endif /* bits/setjmp.h */
---- glibc-2.3.2/sysdeps/x86_64/bsd-_setjmp.S 2002-12-31 14:13:28.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/bsd-_setjmp.S 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. x86-64 version.
-- Copyright (C) 1994-1997,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994-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
-@@ -31,8 +31,8 @@
- ENTRY (BP_SYM (_setjmp))
- /* Set up arguments, we only need to set the second arg. */
- xorq %rsi, %rsi
--#ifdef PIC
-- jmp C_SYMBOL_NAME (BP_SYM (__sigsetjmp))@PLT
-+#ifdef PIC
-+ jmp HIDDEN_JUMPTARGET (__sigsetjmp)
- #else
- jmp BP_SYM (__sigsetjmp)
- #endif
---- glibc-2.3.2/sysdeps/x86_64/dl-machine.h 2003-02-21 14:24:27.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/dl-machine.h 2003-08-21 08:37:18.000000000 -0400
-@@ -24,6 +24,7 @@
- #define ELF_MACHINE_NAME "x86_64"
-
- #include <sys/param.h>
-+#include <sysdep.h>
-
- /* Return nonzero iff ELF header is compatible with the running host. */
- static inline int __attribute__ ((unused))
-@@ -80,7 +81,7 @@
- /* Set up the loaded object described by L so its unrelocated PLT
- entries will jump to the on-demand fixup code in dl-runtime.c. */
-
--static inline int __attribute__ ((unused))
-+static inline int __attribute__ ((unused, always_inline))
- elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
- {
- Elf64_Addr *got;
-@@ -136,14 +137,17 @@
- .globl _dl_runtime_resolve\n\
- .type _dl_runtime_resolve, @function\n\
- .align 16\n\
-+ " CFI_STARTPROC "\n\
- _dl_runtime_resolve:\n\
-- pushq %rax # Preserve registers otherwise clobbered.\n\
-- pushq %rcx\n\
-- pushq %rdx\n\
-- pushq %rsi\n\
-- pushq %rdi\n\
-- pushq %r8\n\
-- pushq %r9\n\
-+ subq $56,%rsp\n\
-+ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
-+ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
-+ movq %rcx,8(%rsp)\n\
-+ movq %rdx,16(%rsp)\n\
-+ movq %rsi,24(%rsp)\n\
-+ movq %rdi,32(%rsp)\n\
-+ movq %r8,40(%rsp)\n\
-+ movq %r9,48(%rsp)\n\
- movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
- movq %rsi,%r11 # Multiply by 24\n\
- addq %r11,%rsi\n\
-@@ -152,28 +156,33 @@
- movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
- call fixup # Call resolver.\n\
- movq %rax, %r11 # Save return value\n\
-- popq %r9 # Get register content back.\n\
-- popq %r8\n\
-- popq %rdi\n\
-- popq %rsi\n\
-- popq %rdx\n\
-- popq %rcx\n\
-- popq %rax\n\
-- addq $16,%rsp # Adjust stack\n\
-+ movq 48(%rsp),%r9 # Get register content back.\n\
-+ movq 40(%rsp),%r8\n\
-+ movq 32(%rsp),%rdi\n\
-+ movq 24(%rsp),%rsi\n\
-+ movq 16(%rsp),%rdx\n\
-+ movq 8(%rsp),%rcx\n\
-+ movq (%rsp),%rax\n\
-+ addq $72,%rsp # Adjust stack(PLT did 2 pushes)\n\
-+ " CFI_ADJUST_CFA_OFFSET(-72)" \n\
- jmp *%r11 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- \n\
- .globl _dl_runtime_profile\n\
- .type _dl_runtime_profile, @function\n\
- .align 16\n\
-+ " CFI_STARTPROC "\n\
- _dl_runtime_profile:\n\
-- pushq %rax # Preserve registers otherwise clobbered.\n\
-- pushq %rcx\n\
-- pushq %rdx\n\
-- pushq %rsi\n\
-- pushq %rdi\n\
-- pushq %r8\n\
-- pushq %r9\n\
-+ subq $56,%rsp\n\
-+ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
-+ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
-+ movq %rcx,8(%rsp)\n\
-+ movq %rdx,16(%rsp)\n\
-+ movq %rsi,24(%rsp)\n\
-+ movq %rdi,32(%rsp)\n\
-+ movq %r8,40(%rsp)\n\
-+ movq %r9,48(%rsp)\n\
- movq 72(%rsp), %rdx # Load return address if needed\n\
- movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
- movq %rsi,%r11 # Multiply by 24\n\
-@@ -183,15 +192,17 @@
- movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
- call profile_fixup # Call resolver.\n\
- movq %rax, %r11 # Save return value\n\
-- popq %r9 # Get register content back.\n\
-- popq %r8\n\
-- popq %rdi\n\
-- popq %rsi\n\
-- popq %rdx\n\
-- popq %rcx\n\
-- popq %rax\n\
-- addq $16,%rsp # Adjust stack\n\
-+ movq 48(%rsp),%r9 # Get register content back.\n\
-+ movq 40(%rsp),%r8\n\
-+ movq 32(%rsp),%rdi\n\
-+ movq 24(%rsp),%rsi\n\
-+ movq 16(%rsp),%rdx\n\
-+ movq 8(%rsp),%rcx\n\
-+ movq (%rsp),%rax\n\
-+ addq $72,%rsp # Adjust stack\n\
-+ " CFI_ADJUST_CFA_OFFSET(-72)"\n\
- jmp *%r11 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
- .previous\n\
- ");
-@@ -203,15 +214,18 @@
- .type _dl_runtime_resolve, @function\n\
- .type _dl_runtime_profile, @function\n\
- .align 16\n\
-+ " CFI_STARTPROC "\n\
- _dl_runtime_resolve:\n\
- _dl_runtime_profile:\n\
-- pushq %rax # Preserve registers otherwise clobbered.\n\
-- pushq %rcx\n\
-- pushq %rdx\n\
-- pushq %rsi\n\
-- pushq %rdi\n\
-- pushq %r8\n\
-- pushq %r9\n\
-+ subq $56,%rsp\n\
-+ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
-+ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
-+ movq %rcx,8(%rsp)\n\
-+ movq %rdx,16(%rsp)\n\
-+ movq %rsi,24(%rsp)\n\
-+ movq %rdi,32(%rsp)\n\
-+ movq %r8,40(%rsp)\n\
-+ movq %r9,48(%rsp)\n\
- movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
- movq %rsi,%r11 # Multiply by 24\n\
- addq %r11,%rsi\n\
-@@ -220,15 +234,17 @@
- movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
- call fixup # Call resolver.\n\
- movq %rax, %r11 # Save return value\n\
-- popq %r9 # Get register content back.\n\
-- popq %r8\n\
-- popq %rdi\n\
-- popq %rsi\n\
-- popq %rdx\n\
-- popq %rcx\n\
-- popq %rax\n\
-- addq $16,%rsp # Adjust stack\n\
-+ movq 48(%rsp),%r9 # Get register content back.\n\
-+ movq 40(%rsp),%r8\n\
-+ movq 32(%rsp),%rdi\n\
-+ movq 24(%rsp),%rsi\n\
-+ movq 16(%rsp),%rdx\n\
-+ movq 8(%rsp),%rcx\n\
-+ movq (%rsp),%rax\n\
-+ addq $72,%rsp # Adjust stack\n\
-+ " CFI_ADJUST_CFA_OFFSET(-72)"\n\
- jmp *%r11 # Jump to function address.\n\
-+ " CFI_ENDPROC "\n\
- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
- .previous\n\
-@@ -345,9 +361,10 @@
-
- static inline void
- elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-- const Elf64_Sym *sym, const struct r_found_version *version,
-- Elf64_Addr *const reloc_addr)
-+ const Elf64_Sym *sym, const struct r_found_version *version,
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
-
- #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-@@ -400,7 +417,7 @@
- *reloc_addr = value + reloc->r_addend;
- break;
-
--#ifdef USE_TLS
-+#if defined USE_TLS && !defined RESOLVE_CONFLICT_FIND_MAP
- case R_X86_64_DTPMOD64:
- # ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always the module
-@@ -459,6 +476,8 @@
- strtab + refsym->st_name);
- }
- break;
-+# ifndef RESOLVE_CONFLICT_FIND_MAP
-+ /* Not needed for dl-conflict.c. */
- case R_X86_64_PC32:
- *(unsigned int *) reloc_addr = value + reloc->r_addend
- - (Elf64_Addr) reloc_addr;
-@@ -492,9 +511,10 @@
- rtld_progname ?: "<program name unknown>",
- strtab + refsym->st_name);
- }
-- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
-- refsym->st_size));
-+ memcpy (reloc_addr_arg, (void *) value,
-+ MIN (sym->st_size, refsym->st_size));
- break;
-+# endif
- default:
- _dl_reloc_bad_type (map, r_type, 0);
- break;
-@@ -506,8 +526,9 @@
-
- static inline void
- elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-- Elf64_Addr *const reloc_addr)
-+ void *const reloc_addr_arg)
- {
-+ Elf64_Addr *const reloc_addr = reloc_addr_arg;
- assert (ELF64_R_TYPE (reloc->r_info) == R_X86_64_RELATIVE);
- *reloc_addr = l_addr + reloc->r_addend;
- }
---- glibc-2.3.2/sysdeps/x86_64/elf/start.S 2002-12-09 22:41:56.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/elf/start.S 2003-06-03 09:36:39.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Startup code compliant to the ELF x86-64 ABI.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 2001.
-
-@@ -74,6 +74,17 @@
- which grow downwards). */
- pushq %rsp
-
-+#ifdef SHARED
-+ /* Pass address of our own entry points to .fini and .init. */
-+ movq __libc_csu_fini@GOTPCREL(%rip), %r8
-+ movq __libc_csu_init@GOTPCREL(%rip), %rcx
-+
-+ movq BP_SYM (main)@GOTPCREL(%rip), %rdi
-+
-+ /* Call the user's main function, and exit with its value.
-+ But let the libc call main. */
-+ call BP_SYM (__libc_start_main)@PLT
-+#else
- /* Pass address of our own entry points to .fini and .init. */
- movq $__libc_csu_fini, %r8
- movq $__libc_csu_init, %rcx
-@@ -83,6 +94,7 @@
- /* Call the user's main function, and exit with its value.
- But let the libc call main. */
- call BP_SYM (__libc_start_main)
-+#endif
-
- hlt /* Crash if somehow `exit' does return. */
-
---- glibc-2.3.2/sysdeps/x86_64/fpu/bits/mathinline.h 2002-07-06 11:06:56.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/fpu/bits/mathinline.h 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Inline math functions for x86-64.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 2002.
-
-@@ -31,10 +31,31 @@
-
- #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
- /* GCC has builtins that can be used. */
--# define isgreater(x, y) __builtin_isgreater (x, y)
--# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
--# define isless(x, y) __builtin_isless (x, y)
--# define islessequal(x, y) __builtin_islessequal (x, y)
--# define islessgreater(x, y) __builtin_islessgreater (x, y)
--# define isunordered(x, y) __builtin_isunordered (x, y)
-+# define isgreater(x, y) __builtin_isgreater (x, y)
-+# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
-+# define isless(x, y) __builtin_isless (x, y)
-+# define islessequal(x, y) __builtin_islessequal (x, y)
-+# define islessgreater(x, y) __builtin_islessgreater (x, y)
-+# define isunordered(x, y) __builtin_isunordered (x, y)
-+
-+
-+/* Test for negative number. Used in the signbit() macro. */
-+__MATH_INLINE int
-+__signbitf (float __x) __THROW
-+{
-+ __extension__ union { float __f; int __i; } __u = { __f: __x };
-+ return __u.__i < 0;
-+}
-+__MATH_INLINE int
-+__signbit (double __x) __THROW
-+{
-+ __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
-+ return __u.__i[1] < 0;
-+}
-+__MATH_INLINE int
-+__signbitl (long double __x) __THROW
-+{
-+ __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
-+ return (__u.__i[2] & 0x8000) != 0;
-+}
- #endif
---- glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps 2002-12-06 17:25:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps 2003-04-12 11:39:50.000000000 -0400
-@@ -145,7 +145,7 @@
- ldouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -164,10 +164,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -215,7 +215,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -373,10 +373,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- ildouble: 2
-@@ -399,12 +399,12 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- ildouble: 439
- ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
- ildouble: 2
-@@ -421,14 +421,14 @@
- ldouble: 3
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 2
- ifloat: 2
- ildouble: 5
- ldouble: 5
- double: 1
- idouble: 1
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 25
- ldouble: 25
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-@@ -677,12 +677,12 @@
- Test "lgamma (-0.5) == log(2*sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -749,7 +749,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
---- glibc-2.3.2/sysdeps/x86_64/fpu_control.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/fpu_control.h 2003-05-05 09:25:31.000000000 -0400
-@@ -0,0 +1,101 @@
-+/* FPU control word bits. x86-64 version.
-+ Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Olaf Flebbe.
-+
-+ 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 _FPU_CONTROL_H
-+#define _FPU_CONTROL_H 1
-+
-+/* Note that this file sets on x86-64 only the x87 FPU, it does not
-+ touch the SSE unit. */
-+
-+/* Here is the dirty part. Set up your 387 through the control word
-+ * (cw) register.
-+ *
-+ * 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0
-+ * | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM
-+ *
-+ * IM: Invalid operation mask
-+ * DM: Denormalized operand mask
-+ * ZM: Zero-divide mask
-+ * OM: Overflow mask
-+ * UM: Underflow mask
-+ * PM: Precision (inexact result) mask
-+ *
-+ * Mask bit is 1 means no interrupt.
-+ *
-+ * PC: Precision control
-+ * 11 - round to extended precision
-+ * 10 - round to double precision
-+ * 00 - round to single precision
-+ *
-+ * RC: Rounding control
-+ * 00 - rounding to nearest
-+ * 01 - rounding down (toward - infinity)
-+ * 10 - rounding up (toward + infinity)
-+ * 11 - rounding toward zero
-+ *
-+ * IC: Infinity control
-+ * That is for 8087 and 80287 only.
-+ *
-+ * The hardware default is 0x037f which we use.
-+ */
-+
-+#include <features.h>
-+
-+/* masking of interrupts */
-+#define _FPU_MASK_IM 0x01
-+#define _FPU_MASK_DM 0x02
-+#define _FPU_MASK_ZM 0x04
-+#define _FPU_MASK_OM 0x08
-+#define _FPU_MASK_UM 0x10
-+#define _FPU_MASK_PM 0x20
-+
-+/* precision control */
-+#define _FPU_EXTENDED 0x300 /* libm requires double extended precision. */
-+#define _FPU_DOUBLE 0x200
-+#define _FPU_SINGLE 0x0
-+
-+/* rounding control */
-+#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */
-+#define _FPU_RC_DOWN 0x400
-+#define _FPU_RC_UP 0x800
-+#define _FPU_RC_ZERO 0xC00
-+
-+#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */
-+
-+
-+/* The fdlibm code requires strict IEEE double precision arithmetic,
-+ and no interrupts for exceptions, rounding to nearest. */
-+
-+#define _FPU_DEFAULT 0x037f
-+
-+/* IEEE: same as above. */
-+#define _FPU_IEEE 0x037f
-+
-+/* Type of the control word. */
-+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
-+
-+/* Macros for accessing the hardware control word. */
-+#define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw))
-+#define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw))
-+
-+/* Default control word set at startup. */
-+extern fpu_control_t __fpu_control;
-+
-+#endif /* fpu_control.h */
---- glibc-2.3.2/sysdeps/x86_64/memcpy.S 2002-08-31 13:33:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/memcpy.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Highly optimized version for x86-64.
-- Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Based on i586 version contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -90,3 +90,4 @@
- ret
-
- END (BP_SYM (memcpy))
-+libc_hidden_builtin_def (memcpy)
---- glibc-2.3.2/sysdeps/x86_64/memset.S 2002-08-31 13:42:25.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/memset.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,6 +1,6 @@
- /* memset/bzero -- set memory area to CH/0
- Optimized version for x86-64.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>.
-
-@@ -129,3 +129,6 @@
- jmp 4b
-
- END (memset)
-+#if !BZERO_P
-+libc_hidden_builtin_def (memset)
-+#endif
---- glibc-2.3.2/sysdeps/x86_64/setjmp.S 2001-09-19 06:12:08.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/setjmp.S 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* setjmp for x86-64.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 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
-@@ -43,3 +43,4 @@
- jmp BP_SYM (__sigjmp_save)
- #endif
- END (BP_SYM (__sigsetjmp))
-+hidden_def (__sigsetjmp)
---- glibc-2.3.2/sysdeps/x86_64/strcat.S 2002-11-13 16:42:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/strcat.S 2003-05-12 12:13:12.000000000 -0400
-@@ -257,3 +257,4 @@
- movq %rdi, %rax /* Source is return value. */
- retq
- END (BP_SYM (strcat))
-+libc_hidden_builtin_def (strcat)
---- glibc-2.3.2/sysdeps/x86_64/strchr.S 2002-11-13 16:42:12.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/strchr.S 2003-05-12 12:13:12.000000000 -0400
-@@ -288,3 +288,4 @@
- END (BP_SYM (strchr))
-
- weak_alias (BP_SYM (strchr), BP_SYM (index))
-+libc_hidden_builtin_def (strchr)
---- glibc-2.3.2/sysdeps/x86_64/strcmp.S 2002-08-31 13:41:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strcmp.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Highly optimized version for x86-64.
-- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Based on i686 version contributed by Ulrich Drepper
- <drepper@cygnus.com>, 1999.
-@@ -42,3 +42,4 @@
- cmovbl %ecx, %eax
- ret
- END (BP_SYM (strcmp))
-+libc_hidden_builtin_def (strcmp)
---- glibc-2.3.2/sysdeps/x86_64/strcpy.S 2002-08-31 13:41:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strcpy.S 2003-05-12 12:13:12.000000000 -0400
-@@ -154,3 +154,6 @@
- #endif
- retq
- END (BP_SYM (STRCPY))
-+#ifndef USE_AS_STPCPY
-+libc_hidden_builtin_def (strcpy)
-+#endif
---- glibc-2.3.2/sysdeps/x86_64/strcspn.S 2002-08-31 13:41:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strcspn.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strcspn (str, ss) -- Return the length of the initial segment of STR
- which contains no characters from SS.
- For AMD x86-64.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
- Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>.
-@@ -121,3 +121,4 @@
- #endif
- ret
- END (strcspn)
-+libc_hidden_builtin_def (strcspn)
---- glibc-2.3.2/sysdeps/x86_64/strlen.S 2002-08-31 13:41:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strlen.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,5 +1,5 @@
- /* strlen(str) -- determine the length of the string STR.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- Based on i486 version contributed by Ulrich Drepper <drepper@redhat.com>.
- This file is part of the GNU C Library.
-
-@@ -136,3 +136,4 @@
- subq %rdi, %rax /* compute difference to string start */
- ret
- END (strlen)
-+libc_hidden_builtin_def (strlen)
---- glibc-2.3.2/sysdeps/x86_64/strspn.S 2002-08-31 13:41:24.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strspn.S 2003-05-12 12:13:12.000000000 -0400
-@@ -1,7 +1,7 @@
- /* strspn (str, ss) -- Return the length of the initial segment of STR
- which contains only characters from SS.
- For AMD x86-64.
-- Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1997, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
- Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>.
-@@ -111,3 +111,4 @@
- non-valid character */
- ret
- END (strspn)
-+libc_hidden_builtin_def (strspn)
---- glibc-2.3.2/sysdeps/x86_64/strtok.S 2002-08-31 13:33:34.000000000 -0400
-+++ glibc-2.3.2/sysdeps/x86_64/strtok.S 2003-05-24 14:06:24.000000000 -0400
-@@ -1,6 +1,6 @@
- /* strtok (str, delim) -- Return next DELIM separated token from STR.
- For AMD x86-64.
-- Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,2000,2001,2002,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Based on i686 version contributed by Ulrich Drepper
- <drepper@cygnus.com>, 1998.
-@@ -68,6 +68,7 @@
- table. */
- movq %rdi, %r8 /* Save value. */
- subq $256, %rsp /* Make space for 256 bytes. */
-+ cfi_adjust_cfa_offset(256)
- movq $32, %rcx /* 32*8 bytes = 256 bytes. */
- movq %rsp, %rdi
- xorq %rax, %rax /* We store 0s. */
-@@ -199,6 +200,7 @@
- L(epilogue):
- /* Remove the stopset table. */
- addq $256, %rsp
-+ cfi_adjust_cfa_offset(-256)
- retq
-
- L(returnNULL):
---- glibc-2.3.2/sysdeps/x86_64/sysdep.h 2003-01-09 14:43:34.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/sysdep.h 2003-05-24 14:06:25.000000000 -0400
-@@ -50,18 +50,26 @@
- ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
- .align ALIGNARG(4); \
- C_LABEL(name) \
-+ cfi_startproc; \
- CALL_MCOUNT
-
- #undef END
- #define END(name) \
-- ASM_SIZE_DIRECTIVE(name) \
-+ cfi_endproc; \
-+ ASM_SIZE_DIRECTIVE(name)
-
- /* If compiled for profiling, call `mcount' at the start of each function. */
- #ifdef PROF
- /* The mcount code relies on a normal frame pointer being on the stack
- to locate our caller, so push one just for its benefit. */
--#define CALL_MCOUNT \
-- pushq %rbp; movq %rsp, %rbp; call JUMPTARGET(mcount); popq %rbp;
-+#define CALL_MCOUNT \
-+ pushq %rbp; \
-+ cfi_adjust_cfa_offset(8); \
-+ movq %rsp, %rbp; \
-+ cfi_def_cfa_register(%rbp); \
-+ call JUMPTARGET(mcount); \
-+ popq %rbp; \
-+ cfi_def_cfa(rsp,8);
- #else
- #define CALL_MCOUNT /* Do nothing. */
- #endif
---- glibc-2.3.2/sysdeps/x86_64/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/x86_64/tst-stack-align.h 2003-09-17 14:15:58.000000000 -0400
-@@ -0,0 +1,47 @@
-+/* Copyright (C) 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 <stdio.h>
-+#include <stdint.h>
-+
-+#define TEST_STACK_ALIGN() \
-+ ({ \
-+ /* AMD64 ABI mandates 16byte aligned stack. \
-+ Unfortunately, current GCC doesn't support __int128 or __float128 \
-+ types, so use aligned attribute instead. */ \
-+ struct _S \
-+ { \
-+ int _i __attribute__((aligned (16))); \
-+ int _pad[3]; \
-+ } _s = { ._i = 18 }; \
-+ double _d = 12.0; \
-+ long double _ld = 15.0; \
-+ int _ret = 0; \
-+ printf ("__int128: %d %p %zu\n", _s._i, &_s, __alignof (_s)); \
-+ if ((((uintptr_t) &_s) & (__alignof (_s) - 1)) != 0) \
-+ _ret = 1; \
-+ \
-+ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
-+ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
-+ _ret = 1; \
-+ \
-+ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
-+ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
-+ _ret = 1; \
-+ _ret; \
-+ })
---- glibc-2.3.2/sysdeps.sh 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps.sh 2003-05-14 01:15:20.000000000 -0400
-@@ -0,0 +1,395 @@
-+# Compute the list of sysdep directories for this configuration.
-+# This can take a while to compute.
-+
-+ac_prev=
-+for ac_option
-+do
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case $ac_option in
-+
-+ -findfile | --findfile | --findfil | --findfi | --findf | --find | --fin | --fi)
-+ ac_prev=findfile ;;
-+ -findfile=* | --findfile=* | --findfil=* | --findfi=* | --findf=* | --find=* | --fin=* | --fi=*)
-+ findfile=$ac_optarg ;;
-+
-+ -help | --help | --hel | --he | -h)
-+ ac_init_help=long ;;
-+
-+ -machine | --machine | --machin | --machi | --mach | --mac | --ma)
-+ ac_prev=machine ;;
-+ -machine=* | --machine=* | --machin=* | --machi=* | --mach=* | --mac=* | --ma=*)
-+ machine=$ac_optarg ;;
-+
-+ -os | --os)
-+ ac_prev=os ;;
-+ -os=* | --os=*)
-+ os=$ac_optarg ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sri=*)
-+ srcdir=$ac_optarg ;;
-+
-+ *)
-+ #
-+ ;;
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+if test -z "$srcdir"; then
-+ srcdir=.
-+fi
-+
-+if test -z "$os"; then
-+ echo "Must specify --os, see --help for more details"
-+ exit 0
-+fi
-+
-+if test -z "$machine"; then
-+ echo "Must specify --machine, see --help for more details"
-+ exit 0
-+fi
-+
-+if test "$ac_init_help" = "long"; then
-+cat <<FOO
-+Deal with sysdepsish stuff in the GNU C Library.
-+
-+Usage $0 [OPTION]...
-+
-+Usage:
-+ -h, --help display this help and exit
-+ -V, --version display version information and exit
-+
-+ --os=OS OS to calculate sysdeps for (gnu, linux, freebsd...)
-+ --machine=MACHINE Processor to select (i686, hppa, alpha...)
-+ --srcdir=SRCDIR Where to find the glibc directories
-+ --findfile=FILENAME Which version of this file does this arch use
-+
-+Report bugs to <glibc>
-+FOO
-+exit 0
-+fi
-+
-+
-+# Expand the configuration machine name into a subdirectory by architecture
-+# type and particular chip.
-+case "$machine" in
-+a29k | am29000) base_machine=a29k machine=a29k ;;
-+alpha*) base_machine=alpha machine=alpha/$machine ;;
-+arm*) base_machine=arm machine=arm/arm32/$machine ;;
-+c3[012]) base_machine=cx0 machine=cx0/c30 ;;
-+c4[04]) base_machine=cx0 machine=cx0/c40 ;;
-+hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
-+hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
-+i[3456]86) base_machine=i386 machine=i386/$machine ;;
-+ia64) base_machine=ia64 machine=ia64 ;;
-+m680?0) base_machine=m68k machine=m68k/$machine ;;
-+m68k) base_machine=m68k machine=m68k/m68020 ;;
-+m88???) base_machine=m88k machine=m88k/$machine ;;
-+m88k) base_machine=m88k machine=m88k/m88100 ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CFLAGS $CPPFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
-+powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
-+powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
-+s390) base_machine=s390 machine=s390/s390-32 ;;
-+s390x) base_machine=s390 machine=s390/s390-64 ;;
-+sh3*) base_machine=sh machine=sh/sh3 ;;
-+sh4*) base_machine=sh machine=sh/sh4 ;;
-+sparc | sparcv[67])
-+ base_machine=sparc machine=sparc/sparc32 ;;
-+sparcv8 | supersparc | hypersparc)
-+ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
-+sparcv8plus | sparcv8plusa | sparcv9)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
-+sparcv8plusb | sparcv9b)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
-+sparc64 | ultrasparc)
-+ base_machine=sparc machine=sparc/sparc64 ;;
-+sparc64b | ultrasparc3)
-+ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
-+thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
-+*) base_machine=$machine ;;
-+esac
-+
-+case "$os" in
-+# i586-linuxaout is mangled into i586-pc-linux-gnuaout
-+linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
-+ ;;
-+gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
-+ # These systems (almost) always use the ELF format.
-+ elf=yes
-+ ;;
-+aix*)
-+ # These systems are always xcoff
-+ xcoff=yes
-+ elf=no
-+ ;;
-+esac
-+
-+sysdep_dir=$srcdir/sysdeps
-+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-+#os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-+
-+case "$os" in
-+gnu*)
-+ base_os=mach/hurd ;;
-+netbsd* | 386bsd* | freebsd* | bsdi*)
-+ base_os=unix/bsd/bsd4.4 ;;
-+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
-+ base_os=unix/bsd ;;
-+sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
-+ base_os=unix/sysv ;;
-+irix6*)
-+ base_os=unix/sysv/irix6/$os ;;
-+solaris[2-9]*)
-+ base_os=unix/sysv/sysv4 ;;
-+hpux*)
-+ base_os=unix/sysv/hpux/$os ;;
-+aix4.3*)
-+ base_os=unix/sysv/aix/aix4.3 ;;
-+none)
-+ base_os=standalone ;;
-+*)
-+ base_os='' ;;
-+esac
-+
-+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-+tail=$os
-+ostry=$os
-+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
-+ ostry="$ostry /$o"
-+ tail=$o
-+done
-+o=`echo $tail | sed 's/[0-9]*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+# For linux-gnu, try linux-gnu, then linux.
-+o=`echo $tail | sed 's/-.*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+
-+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-+base=
-+tail=$base_os
-+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
-+ set $b
-+ base="$base /$1"
-+ tail="$2"
-+done
-+
-+# For sparc/sparc32, try sparc/sparc32 and then sparc.
-+mach=
-+tail=$machine
-+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
-+ set $m
-+ # Prepend the machine's FPU directory unless --without-fp.
-+ if test "$with_fp" = yes; then
-+ mach="$mach /$1/fpu"
-+ else
-+ mach="$mach /$1/nofpu"
-+ fi
-+ mach="$mach /$1"
-+ tail="$2"
-+done
-+
-+# Find what sysdep directories exist.
-+sysnames=
-+IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+for d in $add_ons_pfx ''; do
-+ for b in $base ''; do
-+ for m0 in $mach ''; do
-+ for v in /$vendor ''; do
-+ test "$v" = / && continue
-+ for o in /$ostry ''; do
-+ test "$o" = / && continue
-+ for m in $mach ''; do
-+ if test "$m0$b$v$o$m"; then
-+ try="${d}sysdeps$m0$b$v$o$m"
-+ test -n "$enable_debug_configure" &&
-+ echo "$0 [DEBUG]: try $try" >&2
-+ if test -d $srcdir/$try; then
-+ sysnames="$sysnames $try"
-+ { test -n "$o" || test -n "$b"; } && os_used=t
-+ { test -n "$m" || test -n "$m0"; } && machine_used=t
-+ fi
-+ fi
-+ done
-+ done
-+ done
-+ done
-+ done
-+done
-+IFS="$ac_save_ifs"
-+
-+if test -z "$os_used" && test "$os" != none; then
-+#jb AC_MSG_ERROR(Operating system $os is not supported.)
-+ exit 1
-+fi
-+if test -z "$machine_used" && test "$machine" != none; then
-+#jb AC_MSG_ERROR(The $machine is not supported.)
-+ exit 1
-+fi
-+
-+# We have now validated the configuration.
-+
-+
-+# If using ELF, look for an `elf' subdirectory of each machine directory.
-+# We prepend these rather than inserting them whereever the machine appears
-+# because things specified by the machine's ELF ABI should override
-+# OS-specific things, and should always be the same for any OS on the
-+# machine (otherwise what's the point of an ABI?).
-+if test "$elf" = yes; then
-+ elf_dirs=
-+ for d in $add_ons_pfx ''; do
-+ for m in $mach; do
-+ if test -d $srcdir/${d}sysdeps$m/elf; then
-+ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
-+ fi
-+ done
-+ done
-+ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-+fi
-+
-+
-+# Expand the list of system names into a full list of directories
-+# from each element's parent name and Implies file (if present).
-+set $sysnames
-+names=
-+while test $# -gt 0; do
-+ name=$1
-+ shift
-+
-+ case " $names " in *" $name "*)
-+ # Already in the list.
-+ continue
-+ esac
-+
-+ # Report each name as we discover it, so there is no long pause in output.
-+#JB echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
-+#JB Don't do this anymore. Processors are fast, and noone watches
-+#JB this beast build anymore.
-+
-+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-+
-+ case $name in
-+ /*) xsrcdir= ;;
-+ *) xsrcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
-+
-+ if test -f $xsrcdir$name/Implies; then
-+ # Collect more names from the `Implies' file (removing comments).
-+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
-+ implied=
-+ for x in $implied_candidate; do
-+ found=no
-+ if test -d $xsrcdir$name_base/$x; then
-+ implied="$implied $name_base/$x";
-+ found=yes
-+ fi
-+ for d in $add_ons_pfx ''; do
-+ try="${d}sysdeps/$x"
-+ case $d in
-+ /*) try_srcdir= ;;
-+ *) try_srcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
-+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
-+ then
-+ implied="$implied $try"
-+ found=yes
-+ fi
-+ done
-+ if test $found = no; then
-+#jb AC_MSG_WARN($name/Implies specifies nonexistent $x)
-+ exit 1
-+ fi
-+ done
-+ else
-+ implied=
-+ fi
-+
-+ # Add NAME to the list of names.
-+ names="$names $name"
-+
-+ # Find the parent of NAME, using the empty string if it has none.
-+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-+
-+ # Add the names implied by NAME, and NAME's parent (if it has one), to
-+ # the list of names to be processed (the argument list). We prepend the
-+ # implied names to the list and append the parent. We want implied
-+ # directories to come before further directories inferred from the
-+ # configuration components; this ensures that for sysv4, unix/common
-+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
-+ # after sysv4).
-+ sysnames="`echo $implied $* $parent`"
-+ test -n "$sysnames" && set $sysnames
-+done
-+
-+# Add the default directories.
-+default_sysnames=sysdeps/generic
-+if test "$elf" = yes; then
-+ default_sysnames="sysdeps/generic/elf $default_sysnames"
-+fi
-+sysnames="$names $default_sysnames"
-+#jb AC_SUBST(sysnames)
-+# The other names were emitted during the scan.
-+#jb AC_MSG_RESULT($default_sysnames)
-+
-+#FIXME This is the wrong way to do this
-+if test -z "$findfile"; then
-+ echo $sysnames
-+ exit 0
-+fi
-+
-+for x in $sysnames; do
-+ if test -f "$x/$findfile"; then
-+ echo "$x/$findfile"
-+ exit 0
-+ fi
-+done
---- glibc-2.3.2/sysdeps.sh~ 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps.sh~ 2003-05-14 00:45:51.000000000 -0400
-@@ -0,0 +1,309 @@
-+# Compute the list of sysdep directories for this configuration.
-+# This can take a while to compute.
-+
-+# Must define:
-+# srcdir
-+# os
-+# machine
-+
-+
-+
-+
-+if test -z "$srcdir"; then
-+ srcdir=.
-+fi
-+
-+# Expand the configuration machine name into a subdirectory by architecture
-+# type and particular chip.
-+case "$machine" in
-+a29k | am29000) base_machine=a29k machine=a29k ;;
-+alpha*) base_machine=alpha machine=alpha/$machine ;;
-+arm*) base_machine=arm machine=arm/arm32/$machine ;;
-+c3[012]) base_machine=cx0 machine=cx0/c30 ;;
-+c4[04]) base_machine=cx0 machine=cx0/c40 ;;
-+hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
-+hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
-+i[3456]86) base_machine=i386 machine=i386/$machine ;;
-+ia64) base_machine=ia64 machine=ia64 ;;
-+m680?0) base_machine=m68k machine=m68k/$machine ;;
-+m68k) base_machine=m68k machine=m68k/m68020 ;;
-+m88???) base_machine=m88k machine=m88k/$machine ;;
-+m88k) base_machine=m88k machine=m88k/m88100 ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CFLAGS $CPPFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
-+powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
-+powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
-+s390) base_machine=s390 machine=s390/s390-32 ;;
-+s390x) base_machine=s390 machine=s390/s390-64 ;;
-+sh3*) base_machine=sh machine=sh/sh3 ;;
-+sh4*) base_machine=sh machine=sh/sh4 ;;
-+sparc | sparcv[67])
-+ base_machine=sparc machine=sparc/sparc32 ;;
-+sparcv8 | supersparc | hypersparc)
-+ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
-+sparcv8plus | sparcv8plusa | sparcv9)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
-+sparcv8plusb | sparcv9b)
-+ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
-+sparc64 | ultrasparc)
-+ base_machine=sparc machine=sparc/sparc64 ;;
-+sparc64b | ultrasparc3)
-+ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
-+thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
-+*) base_machine=$machine ;;
-+esac
-+
-+case "$os" in
-+# i586-linuxaout is mangled into i586-pc-linux-gnuaout
-+linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
-+ ;;
-+gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
-+ # These systems (almost) always use the ELF format.
-+ elf=yes
-+ ;;
-+aix*)
-+ # These systems are always xcoff
-+ xcoff=yes
-+ elf=no
-+ ;;
-+esac
-+
-+sysdep_dir=$srcdir/sysdeps
-+# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
-+#os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
-+
-+case "$os" in
-+gnu*)
-+ base_os=mach/hurd ;;
-+netbsd* | 386bsd* | freebsd* | bsdi*)
-+ base_os=unix/bsd/bsd4.4 ;;
-+osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
-+ base_os=unix/bsd ;;
-+sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
-+ base_os=unix/sysv ;;
-+irix6*)
-+ base_os=unix/sysv/irix6/$os ;;
-+solaris[2-9]*)
-+ base_os=unix/sysv/sysv4 ;;
-+hpux*)
-+ base_os=unix/sysv/hpux/$os ;;
-+aix4.3*)
-+ base_os=unix/sysv/aix/aix4.3 ;;
-+none)
-+ base_os=standalone ;;
-+*)
-+ base_os='' ;;
-+esac
-+
-+# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
-+tail=$os
-+ostry=$os
-+while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
-+ ostry="$ostry /$o"
-+ tail=$o
-+done
-+o=`echo $tail | sed 's/[0-9]*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+# For linux-gnu, try linux-gnu, then linux.
-+o=`echo $tail | sed 's/-.*$//'`
-+if test $o != $tail; then
-+ ostry="$ostry /$o"
-+fi
-+
-+# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
-+base=
-+tail=$base_os
-+while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
-+ set $b
-+ base="$base /$1"
-+ tail="$2"
-+done
-+
-+# For sparc/sparc32, try sparc/sparc32 and then sparc.
-+mach=
-+tail=$machine
-+while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
-+ set $m
-+ # Prepend the machine's FPU directory unless --without-fp.
-+ if test "$with_fp" = yes; then
-+ mach="$mach /$1/fpu"
-+ else
-+ mach="$mach /$1/nofpu"
-+ fi
-+ mach="$mach /$1"
-+ tail="$2"
-+done
-+
-+# Find what sysdep directories exist.
-+sysnames=
-+IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+for d in $add_ons_pfx ''; do
-+ for b in $base ''; do
-+ for m0 in $mach ''; do
-+ for v in /$vendor ''; do
-+ test "$v" = / && continue
-+ for o in /$ostry ''; do
-+ test "$o" = / && continue
-+ for m in $mach ''; do
-+ if test "$m0$b$v$o$m"; then
-+ try="${d}sysdeps$m0$b$v$o$m"
-+ test -n "$enable_debug_configure" &&
-+ echo "$0 [DEBUG]: try $try" >&2
-+ if test -d $srcdir/$try; then
-+ sysnames="$sysnames $try"
-+ { test -n "$o" || test -n "$b"; } && os_used=t
-+ { test -n "$m" || test -n "$m0"; } && machine_used=t
-+ fi
-+ fi
-+ done
-+ done
-+ done
-+ done
-+ done
-+done
-+IFS="$ac_save_ifs"
-+
-+if test -z "$os_used" && test "$os" != none; then
-+#jb AC_MSG_ERROR(Operating system $os is not supported.)
-+ exit 1
-+fi
-+if test -z "$machine_used" && test "$machine" != none; then
-+#jb AC_MSG_ERROR(The $machine is not supported.)
-+ exit 1
-+fi
-+
-+# We have now validated the configuration.
-+
-+
-+# If using ELF, look for an `elf' subdirectory of each machine directory.
-+# We prepend these rather than inserting them whereever the machine appears
-+# because things specified by the machine's ELF ABI should override
-+# OS-specific things, and should always be the same for any OS on the
-+# machine (otherwise what's the point of an ABI?).
-+if test "$elf" = yes; then
-+ elf_dirs=
-+ for d in $add_ons_pfx ''; do
-+ for m in $mach; do
-+ if test -d $srcdir/${d}sysdeps$m/elf; then
-+ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
-+ fi
-+ done
-+ done
-+ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-+fi
-+
-+
-+# Expand the list of system names into a full list of directories
-+# from each element's parent name and Implies file (if present).
-+set $sysnames
-+names=
-+while test $# -gt 0; do
-+ name=$1
-+ shift
-+
-+ case " $names " in *" $name "*)
-+ # Already in the list.
-+ continue
-+ esac
-+
-+ # Report each name as we discover it, so there is no long pause in output.
-+#JB echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
-+#JB Don't do this anymore. Processors are fast, and noone watches
-+#JB this beast build anymore.
-+
-+ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
-+
-+ case $name in
-+ /*) xsrcdir= ;;
-+ *) xsrcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
-+
-+ if test -f $xsrcdir$name/Implies; then
-+ # Collect more names from the `Implies' file (removing comments).
-+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
-+ implied=
-+ for x in $implied_candidate; do
-+ found=no
-+ if test -d $xsrcdir$name_base/$x; then
-+ implied="$implied $name_base/$x";
-+ found=yes
-+ fi
-+ for d in $add_ons_pfx ''; do
-+ try="${d}sysdeps/$x"
-+ case $d in
-+ /*) try_srcdir= ;;
-+ *) try_srcdir=$srcdir/ ;;
-+ esac
-+ test -n "$enable_debug_configure" &&
-+ echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
-+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
-+ then
-+ implied="$implied $try"
-+ found=yes
-+ fi
-+ done
-+ if test $found = no; then
-+#jb AC_MSG_WARN($name/Implies specifies nonexistent $x)
-+ exit 1
-+ fi
-+ done
-+ else
-+ implied=
-+ fi
-+
-+ # Add NAME to the list of names.
-+ names="$names $name"
-+
-+ # Find the parent of NAME, using the empty string if it has none.
-+ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
-+
-+ # Add the names implied by NAME, and NAME's parent (if it has one), to
-+ # the list of names to be processed (the argument list). We prepend the
-+ # implied names to the list and append the parent. We want implied
-+ # directories to come before further directories inferred from the
-+ # configuration components; this ensures that for sysv4, unix/common
-+ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
-+ # after sysv4).
-+ sysnames="`echo $implied $* $parent`"
-+ test -n "$sysnames" && set $sysnames
-+done
-+
-+# Add the default directories.
-+default_sysnames=sysdeps/generic
-+if test "$elf" = yes; then
-+ default_sysnames="sysdeps/generic/elf $default_sysnames"
-+fi
-+sysnames="$names $default_sysnames"
-+#jb AC_SUBST(sysnames)
-+# The other names were emitted during the scan.
-+#jb AC_MSG_RESULT($default_sysnames)
-+echo $sysnames
---- glibc-2.3.2/sysvipc/Makefile 2002-10-25 04:02:45.000000000 -0400
-+++ glibc-2.3.2/sysvipc/Makefile 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995, 1996, 1997, 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
-@@ -26,7 +26,10 @@
-
- routines := ftok \
- msgsnd msgrcv msgget msgctl \
-- semop semget semctl \
-+ semop semget semctl semtimedop \
- shmat shmdt shmget shmctl
-
- include ../Rules
-+
-+CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables
-+CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables
---- glibc-2.3.2/sysvipc/Versions 2002-12-18 17:49:52.000000000 -0500
-+++ glibc-2.3.2/sysvipc/Versions 2003-04-12 11:39:50.000000000 -0400
-@@ -9,6 +9,10 @@
- # s*
- semctl; semget; semop; shmat; shmctl; shmdt; shmget;
- }
-+ GLIBC_2.3.3 {
-+ # Non-standard function.
-+ semtimedop;
-+ }
- GLIBC_PRIVATE {
- # Cancellation point entries.
- __libc_msgrcv; __libc_msgsnd;
---- glibc-2.3.2/sysvipc/sys/msg.h 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/sysvipc/sys/msg.h 2003-04-24 20:06:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1999,2000,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
-@@ -62,13 +62,19 @@
- /* Get messages queue. */
- extern int msgget (key_t __key, int __msgflg) __THROW;
-
--/* Receive message from message queue. */
-+/* Receive message from message queue.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int msgrcv (int __msqid, void *__msgp, size_t __msgsz,
-- long int __msgtyp, int __msgflg) __THROW;
-+ long int __msgtyp, int __msgflg);
-+
-+/* Send message to message queue.
-
--/* Send message to message queue. */
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int msgsnd (int __msqid, __const void *__msgp, size_t __msgsz,
-- int __msgflg) __THROW;
-+ int __msgflg);
-
- __END_DECLS
-
---- glibc-2.3.2/sysvipc/sys/sem.h 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/sysvipc/sys/sem.h 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1999, 2000, 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
-@@ -30,6 +30,11 @@
- /* Get system dependent definition of `struct semid_ds' and more. */
- #include <bits/sem.h>
-
-+#ifdef __USE_GNU
-+# define __need_timespec
-+# include <time.h>
-+#endif
-+
- /* The following System V style IPC functions implement a semaphore
- handling. The definition is found in XPG2. */
-
-@@ -53,6 +58,12 @@
- /* Operate on semaphore. */
- extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
-
-+#ifdef __USE_GNU
-+/* Operate on semaphore with timeout. */
-+extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
-+ __const struct timespec *__timeout) __THROW;
-+#endif
-+
- __END_DECLS
-
- #endif /* sys/sem.h */
---- glibc-2.3.2/termios/Makefile 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/termios/Makefile 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991, 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1993,1995,1997,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
-@@ -28,3 +28,5 @@
- tcdrain tcflow tcflush tcsendbrk cfmakeraw tcgetsid
-
- include ../Rules
-+
-+CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables
---- glibc-2.3.2/termios/termios.h 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/termios/termios.h 2003-04-24 20:06:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,92,93,94,96,97,98,99 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,92,93,94,96,97,98,99, 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
-@@ -80,8 +80,11 @@
- /* Send zero bits on FD. */
- extern int tcsendbreak (int __fd, int __duration) __THROW;
-
--/* Wait for pending output to be written on FD. */
--extern int tcdrain (int __fd) __THROW;
-+/* Wait for pending output to be written on FD.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
-+extern int tcdrain (int __fd);
-
- /* Flush pending data on FD.
- Values for QUEUE_SELECTOR (TC{I,O,IO}FLUSH) are in <bits/termios.h>. */
---- glibc-2.3.2/test-skeleton.c 2002-12-19 06:15:16.000000000 -0500
-+++ glibc-2.3.2/test-skeleton.c 2003-08-21 08:36:58.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Skeleton for test programs.
-- Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -18,6 +18,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <errno.h>
- #include <getopt.h>
- #include <search.h>
- #include <signal.h>
-@@ -28,6 +29,7 @@
- #include <sys/resource.h>
- #include <sys/wait.h>
- #include <sys/param.h>
-+#include <time.h>
-
- /* The test function is normally called `do_test' and it is called
- with argc and argv as the arguments. We nevertheless provide the
-@@ -138,7 +140,20 @@
- kill (pid, SIGKILL);
-
- /* Wait for it to terminate. */
-- killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
-+ int i;
-+ for (i = 0; i < 5; ++i)
-+ {
-+ killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
-+ if (killed != 0)
-+ break;
-+
-+ /* Delay, give the system time to process the kill. If the
-+ nanosleep() call return prematurely, all the better. We
-+ won't restart it since this probably means the child process
-+ finally died. */
-+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 };
-+ nanosleep (&ts, NULL);
-+ }
- if (killed != 0 && killed != pid)
- {
- perror ("Failed to killed test process");
-@@ -155,7 +170,7 @@
- exit (0);
- #endif
-
-- if (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL)
-+ if (killed == 0 || (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL))
- fputs ("Timed out: killed the child process\n", stderr);
- else if (WIFSTOPPED (status))
- fprintf (stderr, "Timed out: the child process was %s\n",
-@@ -184,7 +199,7 @@
- setbuf (stdout, NULL);
- #endif
-
-- while ((opt = getopt_long (argc, argv, "", options, NULL)) != -1)
-+ while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1)
- switch (opt)
- {
- case '?':
-@@ -290,11 +305,11 @@
- /* Default timeout is two seconds. */
- # define TIMEOUT 2
- #endif
-- alarm (TIMEOUT);
- signal (SIGALRM, timeout_handler);
-+ alarm (TIMEOUT);
-
- /* Wait for the regular termination. */
-- termpid = waitpid (pid, &status, 0);
-+ termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
- if (termpid == -1)
- {
- printf ("Waiting for test program failed: %m\n");
-@@ -332,5 +347,16 @@
- }
-
- /* Simply exit with the return value of the test. */
-+#ifndef EXPECTED_STATUS
- return WEXITSTATUS (status);
-+#else
-+ if (WEXITSTATUS (status) != EXPECTED_STATUS)
-+ {
-+ fprintf (stderr, "Expected status %d, got %d\n",
-+ EXPECTED_STATUS, WEXITSTATUS (status));
-+ exit (1);
-+ }
-+
-+ return 0;
-+#endif
- }
---- glibc-2.3.2/time/Makefile 2003-01-18 23:49:30.000000000 -0500
-+++ glibc-2.3.2/time/Makefile 2003-08-21 08:37:18.000000000 -0400
-@@ -44,6 +44,7 @@
-
- CFLAGS-tzfile.c = $(tz-cflags)
- CFLAGS-tzset.c = $(tz-cflags)
-+CFLAGS-getdate.c = -fexceptions
-
- # Don't warn about Y2k problem in strftime format string.
- CFLAGS-test_time.c = -Wno-format
---- glibc-2.3.2/time/getdate.c 2001-07-17 14:06:38.000000000 -0400
-+++ glibc-2.3.2/time/getdate.c 2003-09-19 22:37:11.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Convert a string representation of time to a time value.
-- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
-
-@@ -129,7 +129,7 @@
- return 2;
-
- /* Open the template file. */
-- fp = fopen (datemsk, "r");
-+ fp = fopen (datemsk, "rc");
- if (fp == NULL)
- return 2;
-
---- glibc-2.3.2/time/strftime.c 2003-01-19 13:35:06.000000000 -0500
-+++ glibc-2.3.2/time/strftime.c 2003-08-21 08:37:18.000000000 -0400
-@@ -977,8 +977,8 @@
- jump to one of these two labels. */
-
- do_number_spacepad:
-- /* Force `_' flag unless overwritten by `0' flag. */
-- if (pad != L_('0'))
-+ /* Force `_' flag unless overwritten by `0' or '-' flag. */
-+ if (pad != L_('0') && pad != L_('-'))
- pad = L_('_');
-
- do_number:
-@@ -1144,13 +1144,17 @@
- goto subformat;
-
- case L_('r'):
--#ifdef _NL_CURRENT
-+#if !defined _NL_CURRENT && HAVE_STRFTIME
-+ goto underlying_strftime;
-+#else
-+# ifdef _NL_CURRENT
- if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
- NLW(T_FMT_AMPM)))
- == L_('\0'))
--#endif
-+# endif
- subfmt = L_("%I:%M:%S %p");
- goto subformat;
-+#endif
-
- case L_('S'):
- if (modifier == L_('E'))
---- glibc-2.3.2/time/sys/time.h 2002-08-27 00:52:47.000000000 -0400
-+++ glibc-2.3.2/time/sys/time.h 2003-08-21 08:37:18.000000000 -0400
-@@ -1,5 +1,4 @@
--/* Copyright (C) 1991-1994,96,97,98,99,2000,01,02
-- Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1994,1996-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
-@@ -145,7 +144,7 @@
- __THROW;
-
- /* Same as `utimes', but takes an open file descriptor instead of a name. */
--extern int futimes (int fd, __const struct timeval __tvp[2]) __THROW;
-+extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
- #endif
-
-
---- glibc-2.3.2/time/time.h 2002-12-30 18:53:58.000000000 -0500
-+++ glibc-2.3.2/time/time.h 2003-04-24 20:06:02.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1999,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
-@@ -317,9 +317,12 @@
-
-
- # ifdef __USE_POSIX199309
--/* Pause execution for a number of nanoseconds. */
-+/* Pause execution for a number of nanoseconds.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int nanosleep (__const struct timespec *__requested_time,
-- struct timespec *__remaining) __THROW;
-+ struct timespec *__remaining);
-
-
- /* Get resolution of clock CLOCK_ID. */
-@@ -333,10 +336,13 @@
- __THROW;
-
- # ifdef __USE_XOPEN2K
--/* High-resolution sleep with the specified clock. */
-+/* High-resolution sleep with the specified clock.
-+
-+ This function is a cancellation point and therefore not marked with
-+ __THROW. */
- extern int clock_nanosleep (clockid_t __clock_id, int __flags,
- __const struct timespec *__req,
-- struct timespec *__rem) __THROW;
-+ struct timespec *__rem);
-
- /* Return clock ID for CPU-time clock. */
- extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
-@@ -382,8 +388,11 @@
- /* Parse the given string as a date specification and return a value
- representing the value. The templates from the file identified by
- the environment variable DATEMSK are used. In case of an error
-- `getdate_err' is set. */
--extern struct tm *getdate (__const char *__string) __THROW;
-+ `getdate_err' is set.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern struct tm *getdate (__const char *__string);
- # endif
-
- # ifdef __USE_GNU
-@@ -391,9 +400,14 @@
- and the static buffer to return the result in, we provide a thread-safe
- variant. The functionality is the same. The result is returned in
- the buffer pointed to by RESBUFP and in case of an error the return
-- value is != 0 with the same values as given above for `getdate_err'. */
-+ value is != 0 with the same values as given above for `getdate_err'.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int getdate_r (__const char *__restrict __string,
-- struct tm *__restrict __resbufp) __THROW;
-+ struct tm *__restrict __resbufp);
- # endif
-
- __END_DECLS
---- glibc-2.3.2/time/tst-strftime.c 2003-01-19 00:30:27.000000000 -0500
-+++ glibc-2.3.2/time/tst-strftime.c 2003-05-12 12:13:12.000000000 -0400
-@@ -1,5 +1,6 @@
- #include <stdio.h>
- #include <stdlib.h>
-+#include <string.h>
- #include <time.h>
-
-
-@@ -67,6 +68,42 @@
- free (buf);
- }
-
-+ struct tm ttm =
-+ {
-+ /* Initialize the fields which are needed in the tests. */
-+ .tm_mday = 1,
-+ .tm_hour = 2
-+ };
-+ const struct
-+ {
-+ const char *fmt;
-+ const char *exp;
-+ size_t n;
-+ } ftests[] =
-+ {
-+ { "%-e", "1", 1 },
-+ { "%-k", "2", 1 },
-+ { "%-l", "2", 1 },
-+ };
-+#define nftests (sizeof (ftests) / sizeof (ftests[0]))
-+ for (cnt = 0; cnt < nftests; ++cnt)
-+ {
-+ char buf[100];
-+ size_t r = strftime (buf, sizeof (buf), ftests[cnt].fmt, &ttm);
-+ if (r != ftests[cnt].n)
-+ {
-+ printf ("strftime(\"%s\") returned %zu not %zu\n",
-+ ftests[cnt].fmt, r, ftests[cnt].n);
-+ result = 1;
-+ }
-+ if (strcmp (buf, ftests[cnt].exp) != 0)
-+ {
-+ printf ("strftime(\"%s\") produced \"%s\" not \"%s\"\n",
-+ ftests[cnt].fmt, buf, ftests[cnt].exp);
-+ result = 1;
-+ }
-+ }
-+
- return result;
- }
-
---- glibc-2.3.2/time/tzfile.c 2003-02-01 15:46:36.000000000 -0500
-+++ glibc-2.3.2/time/tzfile.c 2003-09-19 22:37:11.000000000 -0400
-@@ -64,6 +64,7 @@
-
- /* Decode the four bytes at PTR as a signed integer in network byte order. */
- static inline int
-+__attribute ((always_inline))
- decode (const void *ptr)
- {
- if ((BYTE_ORDER == BIG_ENDIAN) && sizeof (int) == 4)
-@@ -147,14 +148,17 @@
- file = new;
- }
-
-- f = fopen (file, "r");
-+ /* Note the file is opened with cancellation in the I/O functions
-+ disabled. */
-+ f = fopen (file, "rc");
- if (f == NULL)
- return;
-
- /* No threads reading this stream. */
- __fsetlocking (f, FSETLOCKING_BYCALLER);
-
-- if (fread_unlocked ((void *) &tzhead, sizeof (tzhead), 1, f) != 1)
-+ if (__builtin_expect (fread_unlocked ((void *) &tzhead, sizeof (tzhead),
-+ 1, f) != 1, 0))
- goto lose;
-
- num_transitions = (size_t) decode (tzhead.tzh_timecnt);
-@@ -193,23 +197,24 @@
-
- if (sizeof (time_t) == 4)
- {
-- if (fread_unlocked (transitions, 1, (4 + 1) * num_transitions, f)
-- != (4 + 1) * num_transitions)
-+ if (__builtin_expect (fread_unlocked (transitions, 1,
-+ (4 + 1) * num_transitions, f)
-+ != (4 + 1) * num_transitions, 0))
- goto lose;
- }
- else
- {
-- if (fread_unlocked (transitions, 4, num_transitions, f)
-- != num_transitions
-- || fread_unlocked (type_idxs, 1, num_transitions, f)
-- != num_transitions)
-+ if (__builtin_expect (fread_unlocked (transitions, 4, num_transitions, f)
-+ != num_transitions, 0)
-+ || __builtin_expect (fread_unlocked (type_idxs, 1, num_transitions,
-+ f) != num_transitions, 0))
- goto lose;
- }
-
- /* Check for bogus indices in the data file, so we can hereafter
- safely use type_idxs[T] as indices into `types' and never crash. */
- for (i = 0; i < num_transitions; ++i)
-- if (type_idxs[i] >= num_types)
-+ if (__builtin_expect (type_idxs[i] >= num_types, 0))
- goto lose;
-
- if (BYTE_ORDER != BIG_ENDIAN || sizeof (time_t) != 4)
-@@ -227,29 +232,33 @@
- {
- unsigned char x[4];
- int c;
-- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
-+ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
-+ 0))
- goto lose;
- c = getc_unlocked (f);
-- if ((unsigned int) c > 1u)
-+ if (__builtin_expect ((unsigned int) c > 1u, 0))
- goto lose;
- types[i].isdst = c;
- c = getc_unlocked (f);
-- if ((size_t) c > chars) /* Bogus index in data file. */
-+ if (__builtin_expect ((size_t) c > chars, 0))
-+ /* Bogus index in data file. */
- goto lose;
- types[i].idx = c;
- types[i].offset = (long int) decode (x);
- }
-
-- if (fread_unlocked (zone_names, 1, chars, f) != chars)
-+ if (__builtin_expect (fread_unlocked (zone_names, 1, chars, f) != chars, 0))
- goto lose;
-
- for (i = 0; i < num_leaps; ++i)
- {
- unsigned char x[4];
-- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
-+ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
-+ 0))
- goto lose;
- leaps[i].transition = (time_t) decode (x);
-- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
-+ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
-+ 0))
- goto lose;
- leaps[i].change = (long int) decode (x);
- }
-@@ -257,7 +266,7 @@
- for (i = 0; i < num_isstd; ++i)
- {
- int c = getc_unlocked (f);
-- if (c == EOF)
-+ if (__builtin_expect (c == EOF, 0))
- goto lose;
- types[i].isstd = c != 0;
- }
-@@ -267,7 +276,7 @@
- for (i = 0; i < num_isgmt; ++i)
- {
- int c = getc_unlocked (f);
-- if (c == EOF)
-+ if (__builtin_expect (c == EOF, 0))
- goto lose;
- types[i].isgmt = c != 0;
- }
---- glibc-2.3.2/timezone/antarctica 2001-06-09 16:29:18.000000000 -0400
-+++ glibc-2.3.2/timezone/antarctica 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)antarctica 7.22
-+# @(#)antarctica 7.23
-
- # From Paul Eggert (1999-11-15):
- # To keep things manageable, we list only locations occupied year-round; see
-@@ -255,6 +255,13 @@
- # Halley is on a moving ice shelf and is periodically relocated
- # so that it is never more than 10km from its nominal location.
- # Rothera, Adelaide Island, -6734-6808, since 1976-12-01
-+#
-+# From Paul Eggert (2002-10-22)
-+# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
-+#
-+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-+Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
-+ -3:00 - ROTT # Rothera time
-
- # Uruguay - year round base
- # Artigas, King George Island, -621104-0585107
---- glibc-2.3.2/timezone/asia 2002-10-15 12:59:28.000000000 -0400
-+++ glibc-2.3.2/timezone/asia 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)asia 7.68
-+# @(#)asia 7.71
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -29,22 +29,23 @@
- # I invented the abbreviations marked `*' in the following table;
- # the rest are from earlier versions of this file, or from other sources.
- # Corrections are welcome!
--# std dst
--# LMT Local Mean Time
--# 2:00 EET EEST Eastern European Time
--# 2:00 IST IDT Israel
--# 3:00 AST ADT Arabia*
--# 4:00 GST Gulf*
--# 5:30 IST India
--# 7:00 ICT Indochina*
--# 7:00 WIT west Indonesia
--# 8:00 CIT central Indonesia
--# 8:00 CST China
--# 9:00 CJT Central Japanese Time (1896/1937)*
--# 9:00 EIT east Indonesia
--# 9:00 JST Japan
--# 9:00 KST Korea
--# 9:30 CST (Australian) Central Standard Time
-+# std dst
-+# LMT Local Mean Time
-+# 2:00 EET EEST Eastern European Time
-+# 2:00 IST IDT Israel
-+# 3:00 AST ADT Arabia*
-+# 3:30 IRST IRDT Iran
-+# 4:00 GST Gulf*
-+# 5:30 IST India
-+# 7:00 ICT Indochina*
-+# 7:00 WIT west Indonesia
-+# 8:00 CIT central Indonesia
-+# 8:00 CST China
-+# 9:00 CJT Central Japanese Time (1896/1937)*
-+# 9:00 EIT east Indonesia
-+# 9:00 JST Japan
-+# 9:00 KST Korea
-+# 9:30 CST (Australian) Central Standard Time
- #
- # See the `europe' file for Russia and Turkey in Asia.
-
-@@ -430,89 +431,97 @@
- 9:00 - EIT
-
- # Iran
--# From Paul Eggert (2000-06-12), following up a suggestion by Rich Wales:
--# Ahmea Alavi in
--# <a href="http://www.persia.org/Iran_Lib/Calendar/taghveem.txt">
--# TAGHVEEM (1993-07-12)
--# </a>
--# writes ``Daylight saving time in Iran starts from the first day
--# of Farvardin and ends the first day of Mehr.'' This disagrees with the SSIM:
--#
--# DST start DST end
--# year SSIM Alavi SSIM Alavi
--# 1991 05-03!= 03-21 09-20!= 09-23
--# 1992 03-22!= 03-21 09-23 09-23
--# 1993 03-21 03-21 09-23 09-23
--# 1994 03-21 03-21 09-22!= 09-23
--# 1995 03-21 03-21 09-22!= 09-23
--# 1996 03-21!= 03-20 09-22 09-22
--# 1997 03-22!= 03-21 09-22!= 09-23
--# 1998 03-21 03-21 09-21!= 09-23
--# 1999 03-22!= 03-21 09-22!= 09-23
--# 2000 03-21!= 03-20 09-21!= 09-22
--# 2001 03-19!= 03-21 09-19!= 09-23
--# 2002 03-18!= 03-21 09-18!= 09-23
--#
--# Go with Alavi starting with 1992.
--# I used Ed Reingold's cal-persia in GNU Emacs 19.34 to compute Persian dates.
-+
-+# From Roozbeh Pournader (2003-03-15):
-+# This is an English translation of what I just found (originally in Persian).
-+# The Gregorian dates in brackets are mine:
-+#
-+# Official Newspaper No. 13548-1370/6/25 [1991-09-16]
-+# No. 16760/T233 H 1370/6/10 [1991-09-01]
-+#
-+# The Rule About Change of the Official Time of the Country
-+#
-+# The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
-+# based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
-+# of the Country's Organization for Official and Employment Affairs,
-+# and referring to the law for equating the working hours of workers
-+# and officers in the whole country dated 1359/4/23 [1980-07-14], and
-+# for synchronizing the official times of the country, agreed that:
-+#
-+# The official time of the country will should move forward one hour
-+# at the 24[:00] hours of the first day of Farvardin and should return
-+# to its previous state at the 24[:00] hours of the 30th day of
-+# Shahrivar.
-+#
-+# First Deputy to the President - Hassan Habibi
-+#
-+# From personal experience, that agrees with what has been followed
-+# for at least the last 5 years. Before that, for a few years, the
-+# date used was the first Thursday night of Farvardin and the last
-+# Thursday night of Shahrivar, but I can't give exact dates....
-+# I have also changed the abbreviations to what is considered correct
-+# here in Iran, IRST for regular time and IRDT for daylight saving time.
-+
-+# From Paul Eggert (2003-03-15)
-+# Go with Shanks before September 1991, and with Pournader thereafter.
-+# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates.
- # The Persian calendar is based on the sun, and dates after around 2050
- # are approximate; stop after 2037 when 32-bit time_t's overflow.
- #
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--Rule Iran 1978 1980 - Mar 21 0:00 1:00 S
--Rule Iran 1978 only - Oct 21 0:00 0 -
--Rule Iran 1979 only - Sep 19 0:00 0 -
--Rule Iran 1980 only - Sep 23 0:00 0 -
--Rule Iran 1991 only - May 3 0:00s 1:00 S
--Rule Iran 1991 only - Sep 20 0:00s 0 -
--Rule Iran 1992 1995 - Mar 21 0:00 1:00 S
--Rule Iran 1992 1995 - Sep 23 0:00 0 -
--Rule Iran 1996 only - Mar 20 0:00 1:00 S
--Rule Iran 1996 only - Sep 22 0:00 0 -
--Rule Iran 1997 1999 - Mar 21 0:00 1:00 S
--Rule Iran 1997 1999 - Sep 23 0:00 0 -
--Rule Iran 2000 only - Mar 20 0:00 1:00 S
--Rule Iran 2000 only - Sep 22 0:00 0 -
--Rule Iran 2001 2003 - Mar 21 0:00 1:00 S
--Rule Iran 2001 2003 - Sep 23 0:00 0 -
--Rule Iran 2004 only - Mar 20 0:00 1:00 S
--Rule Iran 2004 only - Sep 22 0:00 0 -
--Rule Iran 2005 2007 - Mar 21 0:00 1:00 S
--Rule Iran 2005 2007 - Sep 23 0:00 0 -
--Rule Iran 2008 only - Mar 20 0:00 1:00 S
--Rule Iran 2008 only - Sep 22 0:00 0 -
--Rule Iran 2009 2011 - Mar 21 0:00 1:00 S
--Rule Iran 2009 2011 - Sep 23 0:00 0 -
--Rule Iran 2012 only - Mar 20 0:00 1:00 S
--Rule Iran 2012 only - Sep 22 0:00 0 -
--Rule Iran 2013 2015 - Mar 21 0:00 1:00 S
--Rule Iran 2013 2015 - Sep 23 0:00 0 -
--Rule Iran 2016 only - Mar 20 0:00 1:00 S
--Rule Iran 2016 only - Sep 22 0:00 0 -
--Rule Iran 2017 2019 - Mar 21 0:00 1:00 S
--Rule Iran 2017 2019 - Sep 23 0:00 0 -
--Rule Iran 2020 only - Mar 20 0:00 1:00 S
--Rule Iran 2020 only - Sep 22 0:00 0 -
--Rule Iran 2021 2023 - Mar 21 0:00 1:00 S
--Rule Iran 2021 2023 - Sep 23 0:00 0 -
--Rule Iran 2024 2025 - Mar 20 0:00 1:00 S
--Rule Iran 2024 2025 - Sep 22 0:00 0 -
--Rule Iran 2026 2027 - Mar 21 0:00 1:00 S
--Rule Iran 2026 2027 - Sep 23 0:00 0 -
--Rule Iran 2028 2029 - Mar 20 0:00 1:00 S
--Rule Iran 2028 2029 - Sep 22 0:00 0 -
--Rule Iran 2030 2031 - Mar 21 0:00 1:00 S
--Rule Iran 2030 2031 - Sep 23 0:00 0 -
--Rule Iran 2032 2033 - Mar 20 0:00 1:00 S
--Rule Iran 2032 2033 - Sep 22 0:00 0 -
--Rule Iran 2034 2035 - Mar 21 0:00 1:00 S
--Rule Iran 2034 2035 - Sep 23 0:00 0 -
--Rule Iran 2036 2037 - Mar 20 0:00 1:00 S
--Rule Iran 2036 2037 - Sep 22 0:00 0 -
-+Rule Iran 1978 1980 - Mar 21 0:00 1:00 D
-+Rule Iran 1978 only - Oct 21 0:00 0 S
-+Rule Iran 1979 only - Sep 19 0:00 0 S
-+Rule Iran 1980 only - Sep 23 0:00 0 S
-+Rule Iran 1991 only - May 3 0:00 1:00 D
-+Rule Iran 1992 1995 - Mar 22 0:00 1:00 D
-+Rule Iran 1991 1995 - Sep 22 0:00 0 S
-+Rule Iran 1996 only - Mar 21 0:00 1:00 D
-+Rule Iran 1996 only - Sep 21 0:00 0 S
-+Rule Iran 1997 1999 - Mar 22 0:00 1:00 D
-+Rule Iran 1997 1999 - Sep 22 0:00 0 S
-+Rule Iran 2000 only - Mar 21 0:00 1:00 D
-+Rule Iran 2000 only - Sep 21 0:00 0 S
-+Rule Iran 2001 2003 - Mar 22 0:00 1:00 D
-+Rule Iran 2001 2003 - Sep 22 0:00 0 S
-+Rule Iran 2004 only - Mar 21 0:00 1:00 D
-+Rule Iran 2004 only - Sep 21 0:00 0 S
-+Rule Iran 2005 2007 - Mar 22 0:00 1:00 D
-+Rule Iran 2005 2007 - Sep 22 0:00 0 S
-+Rule Iran 2008 only - Mar 21 0:00 1:00 D
-+Rule Iran 2008 only - Sep 21 0:00 0 S
-+Rule Iran 2009 2011 - Mar 22 0:00 1:00 D
-+Rule Iran 2009 2011 - Sep 22 0:00 0 S
-+Rule Iran 2012 only - Mar 21 0:00 1:00 D
-+Rule Iran 2012 only - Sep 21 0:00 0 S
-+Rule Iran 2013 2015 - Mar 22 0:00 1:00 D
-+Rule Iran 2013 2015 - Sep 22 0:00 0 S
-+Rule Iran 2016 only - Mar 21 0:00 1:00 D
-+Rule Iran 2016 only - Sep 21 0:00 0 S
-+Rule Iran 2017 2019 - Mar 22 0:00 1:00 D
-+Rule Iran 2017 2019 - Sep 22 0:00 0 S
-+Rule Iran 2020 only - Mar 21 0:00 1:00 D
-+Rule Iran 2020 only - Sep 21 0:00 0 S
-+Rule Iran 2021 2023 - Mar 22 0:00 1:00 D
-+Rule Iran 2021 2023 - Sep 22 0:00 0 S
-+Rule Iran 2024 2025 - Mar 21 0:00 1:00 D
-+Rule Iran 2024 2025 - Sep 21 0:00 0 S
-+Rule Iran 2026 2027 - Mar 22 0:00 1:00 D
-+Rule Iran 2026 2027 - Sep 22 0:00 0 S
-+Rule Iran 2028 2029 - Mar 21 0:00 1:00 D
-+Rule Iran 2028 2029 - Sep 21 0:00 0 S
-+Rule Iran 2030 2031 - Mar 22 0:00 1:00 D
-+Rule Iran 2030 2031 - Sep 22 0:00 0 S
-+Rule Iran 2032 2033 - Mar 21 0:00 1:00 D
-+Rule Iran 2032 2033 - Sep 21 0:00 0 S
-+Rule Iran 2034 2035 - Mar 22 0:00 1:00 D
-+Rule Iran 2034 2035 - Sep 22 0:00 0 S
-+Rule Iran 2036 2037 - Mar 21 0:00 1:00 D
-+Rule Iran 2036 2037 - Sep 21 0:00 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Asia/Tehran 3:25:44 - LMT 1916
- 3:25:44 - TMT 1946 # Tehran Mean Time
-- 3:30 - IRT 1977 Nov
-+ 3:30 - IRST 1977 Nov
- 4:00 Iran IR%sT 1979
- 3:30 Iran IR%sT
-
-@@ -748,7 +757,7 @@
- # bill have until July 24 to pass.
- #
- # (2002-07-25):
--# Thanks go to Yitschak Goldberg from E&M for bringing this (Hebrew) article
-+# Thanks go to Yitschak Goldberg from E&M for bringing this (Hebrew) article
- # to my attention:
- #
- # http://www.ynet.co.il/articles/0,7340,L-2019315,00.html
-@@ -878,7 +887,7 @@
- # - Kazakhstan did not observe DST in 1991.
- # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
- # - Oral switched from +5:00 to +4:00 in spring 1989.
--#
-+#
- #
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- #
-@@ -1154,9 +1163,26 @@
- # and Sunday of April" phrase, if taken literally, means that the
- # transition takes place at 00:00 on the first Sunday on or after 04-02.
-
-+# From Paul Eggert (2003-02-09):
-+# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
-+# that 2002 DST ended that day at midnight. Go with McDow for now.
-+
-+# From Steffen Thorsen (2003-03-14):
-+# According to http://www.dawn.com/2003/03/07/top15.htm
-+# there will be no DST in Pakistan this year:
-+#
-+# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
-+# Rashid Ahmed on Thursday said the cabinet had reversed a previous
-+# decision to advance clocks by one hour in summer and put them back by
-+# one hour in winter with the aim of saving light hours and energy.
-+#
-+# The minister told a news conference that the experiment had rather
-+# shown 8 per cent higher consumption of electricity.
-+
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--Rule Pakistan 2002 max - Apr Sun>=2 0:00 1:00 S
--Rule Pakistan 2002 max - Oct 15 0:00 0 -
-+Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
-+Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Asia/Karachi 4:28:12 - LMT 1907
- 5:30 - IST 1942 Sep
---- glibc-2.3.2/timezone/australasia 2002-10-15 12:59:28.000000000 -0400
-+++ glibc-2.3.2/timezone/australasia 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)australasia 7.67
-+# @(#)australasia 7.68
- # This file also includes Pacific islands.
-
- # Notes are at the end of this file
-@@ -297,6 +297,17 @@
- ###############################################################################
-
- # New Zealand
-+#
-+# From Paul Eggert (2002-10-23):
-+# The Department of Internal Affairs (DIA) maintains a brief history;
-+# see tz-link.htm for the full reference.
-+#
-+# Shanks gives 1868 for the introduction of standard time; go with the
-+# DIA's more-precise 1868-11-02. The DIA says that clocks were
-+# advanced by half an hour in 1941; go with Shanks's more-precise
-+# 1940-09-29 02:00. The DIA says that starting in 1933 DST began the
-+# first Sunday in September; go with Shanks's last Sunday starting in
-+# 1934.
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- # Shanks gives 1927 Nov 6 - 1928 Mar 4, 1928 Oct 14 - 1929 Mar 17,
-@@ -311,17 +322,17 @@
- # didn't change until 1945 Apr 30; go with Shanks.
- Rule NZ 1934 1940 - Apr lastSun 2:00 0 S
- Rule NZ 1934 1939 - Sep lastSun 2:00 0:30 HD
--Rule NZ 1974 only - Nov 3 2:00s 1:00 D
-+Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
-+Rule NZ 1975 only - Feb lastSun 2:00s 0 S
- Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
--Rule NZ 1989 only - Oct 8 2:00s 1:00 D
--Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
--Rule NZ 1975 only - Feb 23 2:00s 0 S
- Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
-+Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
-+Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
- Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
- Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
- Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
--Zone Pacific/Auckland 11:39:04 - LMT 1868
-+Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
- 11:30 NZ NZ%sT 1940 Sep 29 2:00
- 12:00 NZ NZ%sT
- Zone Pacific/Chatham 12:45 Chatham CHA%sT
-@@ -399,8 +410,8 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Tonga 1999 only - Oct 7 2:00s 1:00 S
- Rule Tonga 2000 only - Mar 19 2:00s 0 -
--Rule Tonga 2000 max - Nov Sun>=1 2:00 1:00 S
--Rule Tonga 2001 max - Jan lastSun 2:00 0 -
-+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S
-+Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Pacific/Tongatapu 12:19:20 - LMT 1901
- 12:20 - TOT 1941 # Tonga Time
-@@ -739,21 +750,21 @@
- # The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
-
- # From Rives McDow (2002-04-09):
--# The most interesting region I have found consists of three towns on the
--# southern coast of Australia, population 10 at last report, along with
--# 50,000 sheep, about 100 kilometers long and 40 kilometers into the
--# continent. The primary town is Madura, with the other towns being
--# Mundrabilla and Eucla. According to the sheriff of Madura, the
--# residents got tired of having to change the time so often, as they are
--# located in a strip overlapping the border of South Australia and Western
--# Australia. South Australia observes daylight saving time; Western
--# Australia does not. The two states are one and a half hours apart. The
--# residents decided to forget about this nonsense of changing the clock so
--# much and set the local time 20 hours and 45 minutes from the
--# international date line, or right in the middle of the time of South
--# Australia and Western Australia. As it only affects about 10 people and
--# tourists staying at the Madura Motel, it has never really made as big an
--# impact as Broken Hill. However, as tourist visiting there or anyone
-+# The most interesting region I have found consists of three towns on the
-+# southern coast of Australia, population 10 at last report, along with
-+# 50,000 sheep, about 100 kilometers long and 40 kilometers into the
-+# continent. The primary town is Madura, with the other towns being
-+# Mundrabilla and Eucla. According to the sheriff of Madura, the
-+# residents got tired of having to change the time so often, as they are
-+# located in a strip overlapping the border of South Australia and Western
-+# Australia. South Australia observes daylight saving time; Western
-+# Australia does not. The two states are one and a half hours apart. The
-+# residents decided to forget about this nonsense of changing the clock so
-+# much and set the local time 20 hours and 45 minutes from the
-+# international date line, or right in the middle of the time of South
-+# Australia and Western Australia. As it only affects about 10 people and
-+# tourists staying at the Madura Motel, it has never really made as big an
-+# impact as Broken Hill. However, as tourist visiting there or anyone
- # calling the local sheriff will attest, they do keep time in this way.
- #
- # From Paul Eggert (2002-04-09):
-@@ -1263,6 +1274,8 @@
- # of January the standard time in the Kingdom shall be moved backward by one
- # hour to 1:00am.
-
-+# From Pulu 'Anau (2002-11-05):
-+# The law was for 3 years, supposedly to get renewed. It wasn't.
-
- ###############################################################################
-
---- glibc-2.3.2/timezone/europe 2002-04-05 22:40:00.000000000 -0500
-+++ glibc-2.3.2/timezone/europe 2003-04-12 11:39:50.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)europe 7.82
-+# @(#)europe 7.83
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -33,20 +33,20 @@
- # I invented the abbreviations marked `*' in the following table;
- # the rest are from earlier versions of this file, or from other sources.
- # Corrections are welcome!
--# std dst
--# LMT Local Mean Time
--# -4:00 AST Atlantic
--# -3:00 WGT WGST Western Greenland*
--# -1:00 EGT EGST Eastern Greenland*
--# 0:00 GMT BST Greenwich, British Summer
--# 0:00 GMT IST Greenwich, Irish Summer
--# 0:00 WET WEST Western Europe
--# 0:19:32 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
--# 0:20 NET NEST Netherlands (1937-1940)*
--# 1:00 CET CEST Central Europe
--# 1:00:14 SET Swedish (1879-1899)*
--# 2:00 EET EEST Eastern Europe
--# 3:00 MSK MSD Moscow
-+# std dst 2dst
-+# LMT Local Mean Time
-+# -4:00 AST ADT Atlantic
-+# -3:00 WGT WGST Western Greenland*
-+# -1:00 EGT EGST Eastern Greenland*
-+# 0:00 GMT BST BDST Greenwich, British Summer
-+# 0:00 GMT IST Greenwich, Irish Summer
-+# 0:00 WET WEST WEMT Western Europe
-+# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
-+# 0:20 NET NEST Netherlands (1937-1940)*
-+# 1:00 CET CEST CEMT Central Europe
-+# 1:00:14 SET Swedish (1879-1899)*
-+# 2:00 EET EEST Eastern Europe
-+# 3:00 MSK MSD Moscow
- #
- # A reliable and entertaining source about time zones, especially in Britain,
- # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-@@ -558,20 +558,30 @@
- 1:00 EU CE%sT
-
- # Austria
-+
-+# From Paul Eggert (2003-02-28): Shanks gives 1918-06-16 and
-+# 1945-11-18, but the Austrian Federal Office of Metrology and
-+# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
-+# date of 1945-04-12 with no time. For the 1980-04-06 transition
-+# Shanks gives 02:00, the BEV 00:00. Go with the BEV, and guess 02:00
-+# for 1945-04-12.
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Austria 1920 only - Apr 5 2:00s 1:00 S
- Rule Austria 1920 only - Sep 13 2:00s 0 -
--Rule Austria 1945 only - Apr 2 2:00s 1:00 S
--Rule Austria 1945 only - Nov 18 2:00s 0 -
- Rule Austria 1946 only - Apr 14 2:00s 1:00 S
- Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 -
- Rule Austria 1947 only - Apr 6 2:00s 1:00 S
- Rule Austria 1948 only - Apr 18 2:00s 1:00 S
-+Rule Austria 1980 only - Apr 6 0:00 1:00 S
-+Rule Austria 1980 only - Sep 28 0:00 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
-- 1:00 C-Eur CE%sT 1918 Jun 16 3:00
-- 1:00 Austria CE%sT 1940 Apr 1 2:00
-- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
-+ 1:00 C-Eur CE%sT 1920
-+ 1:00 Austria CE%sT 1940 Apr 1 2:00s
-+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
-+ 1:00 1:00 CEST 1945 Apr 12 2:00s
-+ 1:00 - CET 1946
- 1:00 Austria CE%sT 1981
- 1:00 EU CE%sT
-
-@@ -654,7 +664,7 @@
- 1:00 EU CE%sT
-
- # Bosnia and Herzegovina
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Bulgaria
- #
-@@ -681,7 +691,7 @@
- 2:00 EU EE%sT
-
- # Croatia
--# see Yugosloavia
-+# see Serbia and Montenegro
-
- # Czech Republic
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -750,7 +760,7 @@
- # introduced.
-
- # From Rives McDow (2001-11-01):
--#
-+#
- # I correspond regularly with the Dansk Polarcenter, and wrote them at
- # the time to clarify the situation in Thule. Unfortunately, I have
- # not heard back from them regarding my recent letter. [But I have
-@@ -991,25 +1001,29 @@
- # From Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> (1998-09-29):
- # The German time zone web site by the Physikalisch-Technische
- # Bundesanstalt contains DST information back to 1916.
--#
--# <a href="http://www.ptb.de/english/org/4/43/432/lega.htm">
--# Realisation of Legal Time in Germany
--# </a>
-+# [See tz-link.htm for the URL.]
-+
-+# From Joerg Schilling (2002-10-23):
-+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by <a
-+# href="http://www.dhm.de/lemo/html/biografien/BersarinNikolai/">
-+# General [Nikolai] Bersarin</a>.
-+
-+# From Paul Eggert (2003-03-08):
-+# <a href="http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf">
-+# says that Bersarin issued an order to use Moscow time on May 20.
-+# However, Moscow did not observe daylight saving in 1945, so
-+# this was equivalent to CEMT (GMT+3), not GMT+4.
-+
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Germany 1945 only - Apr 2 2:00s 1:00 S
--# Shanks says 05-24 2:00 to 09-24 3:00 for DDST; go with the PTB, who quotes
--# the Archiv fuer publizist. Arbeit (Munzinger-Archiv) 652 (Zeitsystem)
--# (1961-11-25), which gives dates only. Guess 3:00 transition times.
--Rule Germany 1945 only - May 31 3:00 2:00 M # Midsummer
--Rule Germany 1945 only - Sep 23 3:00 1:00 S
-+Rule Germany 1945 only - May 24 2:00 2:00 M # Midsummer
-+Rule Germany 1945 only - Sep 24 3:00 1:00 S
- Rule Germany 1945 only - Nov 18 2:00s 0 -
- Rule Germany 1946 only - Apr 14 2:00s 1:00 S
- Rule Germany 1946 only - Oct 7 2:00s 0 -
- Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
- Rule Germany 1947 only - Apr 6 2:00s 1:00 S
--# The PTB gives 3:00 CET and 3:00 CEST for the midsummer transition times;
--# go with Shanks.
- Rule Germany 1947 only - May 11 2:00s 2:00 M
- Rule Germany 1947 only - Jun 29 3:00 1:00 S
- Rule Germany 1948 only - Apr 18 2:00s 1:00 S
-@@ -1341,6 +1355,15 @@
- # Fact File, Lithuanian State Department of Tourism
- # </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
-
-+# From a user via Klaus Marten (2003-02-07):
-+# As a candidate for membership of the European Union, Lithuania will
-+# observe Summer Time in 2003, changing its clocks at the times laid
-+# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
-+# neighbour Latvia). The text of the Lithuanian government Order of
-+# 7.XI.02 to this effect can be found at
-+# http://www.lrvk.lt/nut/11/n1749.htm
-+
-+
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Europe/Vilnius 1:41:16 - LMT 1880
- 1:24:00 - WMT 1917 # Warsaw Mean Time
-@@ -1355,7 +1378,8 @@
- 2:00 C-Eur EE%sT 1998
- 2:00 - EET 1998 Mar 29 1:00u
- 1:00 EU CE%sT 1999 Oct 31 1:00u
-- 2:00 - EET
-+ 2:00 - EET 2003 Jan 1
-+ 2:00 EU EE%sT
-
- # Luxembourg
- # Whitman disagrees with most of these dates in minor ways; go with Shanks.
-@@ -1393,7 +1417,7 @@
- 1:00 EU CE%sT
-
- # Macedonia
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Malta
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -1979,11 +2003,27 @@
- 11:00 Russia ANA%sT 1992 Jan 19 2:00s
- 12:00 Russia ANA%sT
-
-+# Serbia and Montenegro
-+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-+Zone Europe/Belgrade 1:22:00 - LMT 1884
-+ 1:00 - CET 1941 Apr 18 23:00
-+ 1:00 C-Eur CE%sT 1945 May 8 2:00s
-+ 1:00 1:00 CEST 1945 Sep 16 2:00s
-+# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
-+# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
-+# Shanks doesn't give as much detail, so go with Kozelj.
-+ 1:00 - CET 1982 Nov 27
-+ 1:00 EU CE%sT
-+Link Europe/Belgrade Europe/Ljubljana # Slovenia
-+Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
-+Link Europe/Belgrade Europe/Skopje # Macedonia
-+Link Europe/Belgrade Europe/Zagreb # Croatia
-+
- # Slovakia
- Link Europe/Prague Europe/Bratislava
-
- # Slovenia
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Spain
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -2191,6 +2231,15 @@
- Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
-
- # Ukraine
-+#
-+# From Igor Karpov, who works for the Ukranian Ministry of Justice,
-+# via Garrett Wollman (2003-01-27):
-+# BTW, I've found the official document on this matter. It's goverment
-+# regulations number 509, May 13, 1996. In my poor translation it says:
-+# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
-+# of March at 3am the time is changing to 4am and each last Sunday of
-+# October the time at 4am is changing to 3am"
-+
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- # Most of Ukraine since 1970 has been like Kiev.
- Zone Europe/Kiev 2:02:04 - LMT 1880
-@@ -2249,22 +2298,6 @@
- 3:00 - MSK 1997 Mar lastSun 1:00u
- 2:00 EU EE%sT
-
--# Yugoslavia
--# Zone NAME GMTOFF RULES FORMAT [UNTIL]
--Zone Europe/Belgrade 1:22:00 - LMT 1884
-- 1:00 - CET 1941 Apr 18 23:00
-- 1:00 C-Eur CE%sT 1945 May 8 2:00s
-- 1:00 1:00 CEST 1945 Sep 16 2:00s
--# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
--# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
--# Shanks doesn't give as much detail, so go with Kozelj.
-- 1:00 - CET 1982 Nov 27
-- 1:00 EU CE%sT
--Link Europe/Belgrade Europe/Ljubljana # Slovenia
--Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
--Link Europe/Belgrade Europe/Skopje # Macedonia
--Link Europe/Belgrade Europe/Zagreb # Croatia
--
- ###############################################################################
-
- # One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
---- glibc-2.3.2/timezone/iso3166.tab 2002-10-15 13:12:42.000000000 -0400
-+++ glibc-2.3.2/timezone/iso3166.tab 2003-04-12 11:39:50.000000000 -0400
-@@ -2,11 +2,11 @@
- #
- # @(#)iso3166.tab 1.9
- #
--# From Paul Eggert <eggert@twinsun.com> (2002-05-28):
-+# From Paul Eggert <eggert@twinsun.com> (2003-02-04):
- #
- # This file contains a table with the following columns:
- # 1. ISO 3166-1 alpha-2 country code, current as of
--# ISO 3166-1 Newsletter No. V-5 (2002-05-20). See:
-+# ISO 3166-1 Newsletter No. V-7 (2003-01-14). See:
- # <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
- # ISO 3166 Maintenance agency (ISO 3166/MA)
- # </a>.
-@@ -256,7 +256,7 @@
- WS Samoa (Western)
- YE Yemen
- YT Mayotte
--YU Yugoslavia
-+YU Serbia and Montenegro
- ZA South Africa
- ZM Zambia
- ZW Zimbabwe
---- glibc-2.3.2/timezone/northamerica 2002-04-05 22:40:00.000000000 -0500
-+++ glibc-2.3.2/timezone/northamerica 2003-04-12 11:39:51.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)northamerica 7.61
-+# @(#)northamerica 7.62
- # also includes Central America and the Caribbean
-
- # This data is by no means authoritative; if you think you know better,
-@@ -88,6 +88,23 @@
- # of surrender, all of whom interrupting the bells of Big Ben in
- # London which were to precede Mr. Attlee's speech.
-
-+# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout. From
-+# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
-+#
-+# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
-+# Any announcement from Asia would reach St. John's New York newsroom on a
-+# wire service teletype machine, which had prescribed signals for major news.
-+# Associated Press, for example, would ring five bells before spewing out
-+# typed copy of an important story, and 10 bells for news "of transcendental
-+# importance."
-+#
-+# On Aug. 14, stalling while talking steadily into the NBC networks' open
-+# microphone, St. John heard five bells and waited only to hear a sixth bell,
-+# before announcing confidently: "Ladies and gentlemen, World War II is over.
-+# The Japanese have agreed to our surrender terms."
-+#
-+# He had scored a 20-second scoop on other broadcasters.
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
- Rule US 1918 1919 - Oct lastSun 2:00 0 S
-@@ -189,10 +206,11 @@
- # US eastern time, represented by New York
-
- # Connecticut, Delaware, District of Columbia, most of Florida,
--# Georgia, far southeastern Indiana, eastern Kentucky, Maine,
--# Maryland, Massachusetts, New Hampshire, New Jersey, New York, North
--# Carolina, Ohio, Pennsylvania, Rhode Island, South Carolina, eastern
--# Tennessee, Vermont, Virginia, West Virginia
-+# Georgia, southeast Indiana (Clark, Dearborn, Floyd, Harrison, and
-+# Ohio counties), eastern Kentucky, Maine, Maryland, Massachusetts,
-+# New Hampshire, New Jersey, New York, North Carolina, Ohio,
-+# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
-+# Vermont, Virginia, West Virginia
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
- Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
-@@ -211,10 +229,11 @@
- # US central time, represented by Chicago
-
- # Alabama, Arkansas, Florida panhandle, Illinois, western Indiana
--# corners, Iowa, most of Kansas, western Kentucky, Louisiana,
--# Minnesota, Mississippi, Missouri, eastern Nebraska, eastern North
--# Dakota, Oklahoma, eastern South Dakota, western Tennessee, most of
--# Texas, Wisconsin
-+# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
-+# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
-+# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
-+# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
-+# western Tennessee, most of Texas, Wisconsin
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
- Rule Chicago 1920 only - Jun 13 2:00 1:00 D
-@@ -357,12 +376,32 @@
- # Now we turn to US areas that have diverged from the consensus since 1970.
-
- # Arizona mostly uses MST.
-+
-+# From Paul Eggert (2002-10-20):
-+#
-+# The information in the rest of this paragraph is derived from the
-+# <a href="http://www.dlapr.lib.az.us/links/daylight.htm">
-+# Daylight Saving Time web page (2002-01-23)</a> maintained by the
-+# Arizona State Library, Archives and Public Records.
-+# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
-+# time, but by federal law railroads, airlines, bus lines, military
-+# personnel, and some engaged in interstate commerce continued to
-+# observe war (i.e., daylight saving) time. The 1944-03-17 Phoenix
-+# Gazette says that was the date the law changed, and that 04-01 was
-+# the date the state's clocks would change. In 1945 the State of
-+# Arizona used standard time all year, again with exceptions only as
-+# mandated by federal law. Arizona observed DST in 1967, but Arizona
-+# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
-+#
-+# Shanks says the 1944 experiment came to an end on 1944-03-17.
-+# Go with the Arizona State Library instead.
-+
- Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 12:00
- -7:00 US M%sT 1944 Jan 1 00:01
-- -7:00 - MST 1944 Mar 17 00:01
-+ -7:00 - MST 1944 Apr 1 00:01
- -7:00 US M%sT 1944 Oct 1 00:01
- -7:00 - MST 1967
-- -7:00 US M%sT 1968
-+ -7:00 US M%sT 1968 Mar 21
- -7:00 - MST
- # From Arthur David Olson (1988-02-13):
- # A writer from the Inter Tribal Council of Arizona, Inc.,
-@@ -522,7 +561,7 @@
- # <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22">
- # Federal Register 65, 160 (2000-08-17), page 50154-50158.
- # </a>
--#
-+#
- Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00
- -6:00 US C%sT 1946
- -6:00 - CST 1968
---- glibc-2.3.2/timezone/southamerica 2002-10-15 13:03:12.000000000 -0400
-+++ glibc-2.3.2/timezone/southamerica 2003-04-12 11:39:51.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)southamerica 7.45
-+# @(#)southamerica 7.46
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -584,6 +584,10 @@
- # Go with this article in preference to Shanks's 1969 date for modern DST.
- # Assume this rule has been used since DST was introduced in the islands.
-
-+# From Paul Eggert (2002-10-24):
-+# <http://www.shoa.cl/shoa/faqhoraoficial.htm> gives many details that
-+# disagree with the following table, but we haven't had time to compare them.
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Chile 1918 only - Sep 1 0:00 1:00 S
- Rule Chile 1919 only - Jul 2 0:00 0 -
---- glibc-2.3.2/timezone/zic.c 2002-04-05 22:38:45.000000000 -0500
-+++ glibc-2.3.2/timezone/zic.c 2003-08-21 08:37:18.000000000 -0400
-@@ -2152,12 +2152,13 @@
- }
- if (dayoff < 0 && !TYPE_SIGNED(time_t))
- return min_time;
-+ if (dayoff < min_time / SECSPERDAY)
-+ return min_time;
-+ if (dayoff > max_time / SECSPERDAY)
-+ return max_time;
- t = (time_t) dayoff * SECSPERDAY;
-- /*
-- ** Cheap overflow check.
-- */
-- if (t / SECSPERDAY != dayoff)
-- return (dayoff > 0) ? max_time : min_time;
-+ if (t > 0 && max_time - t < rp->r_tod)
-+ return max_time;
- return tadd(t, rp->r_tod);
- }
-
---- glibc-2.3.2/timezone/zone.tab 2002-10-15 13:00:59.000000000 -0400
-+++ glibc-2.3.2/timezone/zone.tab 2003-04-12 11:39:51.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)zone.tab 1.27
-+# @(#)zone.tab 1.28
- #
- # TZ zone descriptions
- #
-@@ -33,6 +33,7 @@
- AO -0848+01314 Africa/Luanda
- AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
- AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
-+AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
- AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
- AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
- AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
---- glibc-2.3.2/tls.make.c 2002-11-14 22:36:55.000000000 -0500
-+++ glibc-2.3.2/tls.make.c 2003-04-12 11:39:42.000000000 -0400
-@@ -2,6 +2,12 @@
-
- #include <tls.h>
-
-+#if USE_TLS
-+@@@ use-tls = yes @@@
-+#else
-+@@@ use-tls = no @@@
-+#endif
-+
- #if USE___THREAD
- @@@ use-thread = yes @@@
- #else
---- glibc-2.3.2/wcsmbs/Makefile 2002-08-29 00:02:52.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/Makefile 2003-08-21 08:37:18.000000000 -0400
-@@ -1,4 +1,4 @@
--# Copyright (C) 1995-2000, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995-2000, 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
-@@ -40,7 +40,7 @@
- wcsmbsload mbsrtowcs_l
-
- tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
-- tst-wcrtomb
-+ tst-wcrtomb tst-wcpncpy
-
- include ../Rules
-
---- glibc-2.3.2/wcsmbs/tst-wcpncpy.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/wcsmbs/tst-wcpncpy.c 2003-07-22 15:23:43.000000000 -0400
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003.
-+
-+ 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 <wchar.h>
-+
-+
-+int
-+main (void)
-+{
-+ const wchar_t src[] = L"0";
-+ wchar_t dest[10];
-+ wmemset (dest, L'\0', 10);
-+ wcpncpy (dest, src, 2);
-+ return wcscmp (dest, src) != 0;
-+}
---- glibc-2.3.2/wcsmbs/wchar.h 2002-08-28 03:56:15.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wchar.h 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995-99,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-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
-@@ -59,8 +59,13 @@
- # define _WINT_T
- typedef unsigned int wint_t;
- #else
--# ifdef __USE_GNU
--__USING_NAMESPACE_STD(wint_t)
-+/* Work around problems with the <stddef.h> file which doesn't put
-+ wint_t in the std namespace. */
-+# if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES \
-+ && defined __WINT_TYPE__
-+__BEGIN_NAMESPACE_STD
-+typedef __WINT_TYPE__ wint_t;
-+__END_NAMESPACE_STD
- # endif
- #endif
-
-@@ -577,27 +582,39 @@
- extern int fwide (__FILE *__fp, int __mode) __THROW;
-
-
--/* Write formatted output to STREAM. */
-+/* Write formatted output to STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int fwprintf (__FILE *__restrict __stream,
- __const wchar_t *__restrict __format, ...)
-- __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
--/* Write formatted output to stdout. */
-+ /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
-+/* Write formatted output to stdout.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int wprintf (__const wchar_t *__restrict __format, ...)
-- __THROW /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
-+ /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
- /* Write formatted output of at most N characters to S. */
- extern int swprintf (wchar_t *__restrict __s, size_t __n,
- __const wchar_t *__restrict __format, ...)
- __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
-
--/* Write formatted output to S from argument list ARG. */
-+/* Write formatted output to S from argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vfwprintf (__FILE *__restrict __s,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
-- __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
--/* Write formatted output to stdout from argument list ARG. */
-+ /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
-+/* Write formatted output to stdout from argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vwprintf (__const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
-- __THROW /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
-+ /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
- /* Write formatted output of at most N character to S from argument
- list ARG. */
- extern int vswprintf (wchar_t *__restrict __s, size_t __n,
-@@ -606,13 +623,19 @@
- __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
-
-
--/* Read formatted input from STREAM. */
-+/* Read formatted input from STREAM.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int fwscanf (__FILE *__restrict __stream,
- __const wchar_t *__restrict __format, ...)
-- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
--/* Read formatted input from stdin. */
-+ /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
-+/* Read formatted input from stdin.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int wscanf (__const wchar_t *__restrict __format, ...)
-- __THROW /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
-+ /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
- /* Read formatted input from S. */
- extern int swscanf (__const wchar_t *__restrict __s,
- __const wchar_t *__restrict __format, ...)
-@@ -624,15 +647,21 @@
- #ifdef __USE_ISOC99
- __BEGIN_NAMESPACE_C99
-
--/* Read formatted input from S into argument list ARG. */
-+/* Read formatted input from S into argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vfwscanf (__FILE *__restrict __s,
- __const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
-- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
--/* Read formatted input from stdin into argument list ARG. */
-+ /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
-+/* Read formatted input from stdin into argument list ARG.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
- extern int vwscanf (__const wchar_t *__restrict __format,
- __gnuc_va_list __arg)
-- __THROW /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
-+ /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
- /* Read formatted input from S into argument list ARG. */
- extern int vswscanf (__const wchar_t *__restrict __s,
- __const wchar_t *__restrict __format,
-@@ -644,62 +673,113 @@
-
-
- __BEGIN_NAMESPACE_C99
--/* Read a character from STREAM. */
--extern wint_t fgetwc (__FILE *__stream) __THROW;
--extern wint_t getwc (__FILE *__stream) __THROW;
-+/* Read a character from STREAM.
-+
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern wint_t fgetwc (__FILE *__stream);
-+extern wint_t getwc (__FILE *__stream);
-+
-+/* Read a character from stdin.
-+
-+ This function is a possible cancellation point and therefore not
-+ marked with __THROW. */
-+extern wint_t getwchar (void);
-+
-
--/* Read a character from stdin. */
--extern wint_t getwchar (void) __THROW;
-+/* Write a character to STREAM.
-
-+ These functions are possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
-+extern wint_t putwc (wchar_t __wc, __FILE *__stream);
-
--/* Write a character to STREAM. */
--extern wint_t fputwc (wchar_t __wc, __FILE *__stream) __THROW;
--extern wint_t putwc (wchar_t __wc, __FILE *__stream) __THROW;
-+/* Write a character to stdout.
-
--/* Write a character to stdout. */
--extern wint_t putwchar (wchar_t __wc) __THROW;
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern wint_t putwchar (wchar_t __wc);
-
-
- /* Get a newline-terminated wide character string of finite length
-- from STREAM. */
-+ from STREAM.
-+
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
-- __FILE *__restrict __stream) __THROW;
-+ __FILE *__restrict __stream);
-+
-+/* Write a string to STREAM.
-
--/* Write a string to STREAM. */
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
- extern int fputws (__const wchar_t *__restrict __ws,
-- __FILE *__restrict __stream) __THROW;
-+ __FILE *__restrict __stream);
-+
-
-+/* Push a character back onto the input buffer of STREAM.
-
--/* Push a character back onto the input buffer of STREAM. */
--extern wint_t ungetwc (wint_t __wc, __FILE *__stream) __THROW;
-+ This function is a possible cancellation points and therefore not
-+ marked with __THROW. */
-+extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
- __END_NAMESPACE_C99
-
-
- #ifdef __USE_GNU
- /* These are defined to be equivalent to the `char' functions defined
-- in POSIX.1:1996. */
--extern wint_t getwc_unlocked (__FILE *__stream) __THROW;
--extern wint_t getwchar_unlocked (void) __THROW;
-+ in POSIX.1:1996.
-
--/* This is the wide character version of a GNU extension. */
--extern wint_t fgetwc_unlocked (__FILE *__stream) __THROW;
--
--/* Faster version when locking is not necessary. */
--extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
-+extern wint_t getwc_unlocked (__FILE *__stream);
-+extern wint_t getwchar_unlocked (void);
-+
-+/* This is the wide character version of a GNU extension.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern wint_t fgetwc_unlocked (__FILE *__stream);
-+
-+/* Faster version when locking is not necessary.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
-+extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
-
- /* These are defined to be equivalent to the `char' functions defined
-- in POSIX.1:1996. */
--extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
--extern wint_t putwchar_unlocked (wchar_t __wc) __THROW;
--
-+ in POSIX.1:1996.
-
--/* This function does the same as `fgetws' but does not lock the stream. */
-+ These functions are not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation they are cancellation points and
-+ therefore not marked with __THROW. */
-+extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
-+extern wint_t putwchar_unlocked (wchar_t __wc);
-+
-+
-+/* This function does the same as `fgetws' but does not lock the stream.
-+
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
-- __FILE *__restrict __stream) __THROW;
-+ __FILE *__restrict __stream);
-+
-+/* This function does the same as `fputws' but does not lock the stream.
-
--/* This function does the same as `fputws' but does not lock the stream. */
-+ This function is not part of POSIX and therefore no official
-+ cancellation point. But due to similarity with an POSIX interface
-+ or due to the implementation it is a cancellation point and
-+ therefore not marked with __THROW. */
- extern int fputws_unlocked (__const wchar_t *__restrict __ws,
-- __FILE *__restrict __stream) __THROW;
-+ __FILE *__restrict __stream);
- #endif
-
-
---- glibc-2.3.2/wcsmbs/wcpncpy.c 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wcpncpy.c 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-@@ -31,8 +31,6 @@
- wint_t c;
- wchar_t *const s = dest;
-
-- --dest;
--
- if (n >= 4)
- {
- size_t n4 = n >> 2;
-@@ -40,27 +38,25 @@
- for (;;)
- {
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- if (--n4 == 0)
- goto last_chars;
- }
-- n = n - (dest - s) - 1;
-- if (n == 0)
-- return dest;
-+ n -= dest - s;
- goto zero_fill;
- }
-
-@@ -69,21 +65,22 @@
- if (n == 0)
- return dest;
-
-- do
-+ for (;;)
- {
- c = *src++;
-- *++dest = c;
-- if (--n == 0)
-+ --n;
-+ *dest++ = c;
-+ if (c == L'\0')
-+ break;
-+ if (n == 0)
- return dest;
- }
-- while (c != L'\0');
-
- zero_fill:
-- do
-- *++dest = L'\0';
-- while (--n > 0);
-+ while (n-- > 0)
-+ dest[n] = L'\0';
-
-- return dest;
-+ return dest - 1;
- }
-
- weak_alias (__wcpncpy, wcpncpy)
---- glibc-2.3.2/wcsmbs/wcsmbs-tst1.c 2001-08-06 22:43:05.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wcsmbs-tst1.c 2003-08-21 08:37:19.000000000 -0400
-@@ -32,10 +32,10 @@
- buf[idx] = 0;
- printf ("orig string %s\n", str);
- printf ("string by wctomb %s\n", buf);
-- printf ("string by %%C %C", tmp[0]);
-+ printf ("string by %%C %C", (wint_t) tmp[0]);
- if (tmp[0] != L'H')
- result = 1;
-- printf ("%C\n", tmp[1]);
-+ printf ("%C\n", (wint_t) tmp[1]);
- if (tmp[1] != L'e')
- result = 1;
- printf ("string by %%S %S\n", tmp);
-@@ -43,7 +43,7 @@
- result = 1;
- puts ("---- test 2 ------");
- printf ("wchar string %S\n", tmp1);
-- printf ("wchar %C\n", tmp1[0]);
-+ printf ("wchar %C\n", (wint_t) tmp1[0]);
- test = wcstombs (buf, tmp1, (wcslen (tmp1) + 1) * sizeof (wchar_t));
- printf ("size of string by wcstombs %d\n", test);
- if (test != wcslen (tmp1))
---- glibc-2.3.2/wcsmbs/wcsnrtombs.c 2002-09-02 15:45:55.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wcsnrtombs.c 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
-
-@@ -72,7 +72,7 @@
- if (dst == NULL)
- {
- unsigned char buf[256]; /* Just an arbitrary value. */
-- const wchar_t *inbuf = *src;
-+ const unsigned char *inbuf = (const unsigned char *) *src;
- size_t dummy;
-
- result = 0;
-@@ -83,7 +83,7 @@
- data.__outbuf = buf;
-
- status = DL_CALL_FCT (tomb->__fct,
-- (tomb, &data, (const unsigned char **) &inbuf,
-+ (tomb, &data, &inbuf,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
-
---- glibc-2.3.2/wcsmbs/wcsrtombs.c 2002-09-02 15:45:55.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wcsrtombs.c 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
-
-@@ -66,7 +66,7 @@
- mbstate_t temp_state;
- unsigned char buf[256]; /* Just an arbitrary value. */
- const wchar_t *srcend = *src + __wcslen (*src) + 1;
-- const wchar_t *inbuf = *src;
-+ const unsigned char *inbuf = (const unsigned char *) *src;
- size_t dummy;
-
- temp_state = *data.__statep;
-@@ -80,7 +80,7 @@
- data.__outbuf = buf;
-
- status = DL_CALL_FCT (tomb->__fct,
-- (tomb, &data, (const unsigned char **) &inbuf,
-+ (tomb, &data, &inbuf,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
-
---- glibc-2.3.2/wcsmbs/wctob.c 2002-09-02 15:45:55.000000000 -0400
-+++ glibc-2.3.2/wcsmbs/wctob.c 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
-
-@@ -58,11 +58,10 @@
- /* Create the input string. */
- inbuf[0] = c;
-
-+ const unsigned char *argptr = (const unsigned char *) inptr;
- status = DL_CALL_FCT (fcts->tomb->__fct,
-- (fcts->tomb, &data,
-- (const unsigned char **) &inptr,
-- (const unsigned char *) &inbuf[1],
-- NULL, &dummy, 0, 1));
-+ (fcts->tomb, &data, &argptr,
-+ argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1));
-
- /* The conversion failed or the output is too long. */
- if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
---- glibc-2.3.2/wctype/wchar-lookup.h 2001-07-07 15:21:39.000000000 -0400
-+++ glibc-2.3.2/wctype/wchar-lookup.h 2003-08-21 08:37:19.000000000 -0400
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
-
-@@ -49,6 +49,7 @@
- */
-
- static __inline int
-+__attribute ((always_inline))
- wctype_table_lookup (const char *table, uint32_t wc)
- {
- uint32_t shift1 = ((const uint32_t *) table)[0];
-@@ -80,6 +81,7 @@
- unit is a single byte, and no 5 bits are used as a word index. */
-
- static __inline int
-+__attribute ((always_inline))
- wcwidth_table_lookup (const char *table, uint32_t wc)
- {
- uint32_t shift1 = ((const uint32_t *) table)[0];
-@@ -113,6 +115,7 @@
- bits are used as a word index. */
-
- static __inline uint32_t
-+__attribute ((always_inline))
- wctrans_table_lookup (const char *table, uint32_t wc)
- {
- uint32_t shift1 = ((const uint32_t *) table)[0];
diff --git a/packages/glibc/glibc-2.3.2/11_shlib-lds.patch b/packages/glibc/glibc-2.3.2/11_shlib-lds.patch
deleted file mode 100644
index 23e3f0598f..0000000000
--- a/packages/glibc/glibc-2.3.2/11_shlib-lds.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc-2.3.2/Makerules.orig 2003-10-28 18:27:11.000000000 -0500
-+++ glibc-2.3.2/Makerules 2003-10-28 18:27:31.000000000 -0500
-@@ -479,6 +479,7 @@ ifeq (yes,$(elf))
- # not for shared objects
- $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
- $(LINK.o) -shared -Wl,-O1 \
-+ -nostdlib -nostartfiles \
- $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS.so) \
- -Wl,--verbose 2>&1 | \
- sed > $@T \
diff --git a/packages/glibc/glibc-2.3.2/30_glibc232-base.patch b/packages/glibc/glibc-2.3.2/30_glibc232-base.patch
deleted file mode 100644
index 91c9b557d1..0000000000
--- a/packages/glibc/glibc-2.3.2/30_glibc232-base.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- elf/do-lookup.h.base 2003-05-15 09:29:25.000000000 -0700
-+++ elf/do-lookup.h 2003-05-15 09:24:24.000000000 -0700
-@@ -52,7 +52,8 @@ FCT (const char *undef_name, unsigned lo
- const ElfW(Sym) *sym;
- #if ! VERSIONED
- int num_versions = 0;
-- const ElfW(Sym) *versioned_sym = NULL;
-+ const ElfW(Sym) *default_version = NULL;
-+ const ElfW(Sym) *first_version = NULL;
- #endif
-
- map = list[i];
-@@ -155,16 +156,29 @@ FCT (const char *undef_name, unsigned lo
- public interface should be returned. */
- if (verstab != NULL)
- {
-- if ((verstab[symidx] & 0x7fff)
-- >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3))
-+ ElfW(Half) ndx = verstab[symidx] & 0x7fff;
-+ if (ndx >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3))
- {
- /* Don't accept hidden symbols. */
- if ((verstab[symidx] & 0x8000) == 0 && num_versions++ == 0)
- /* No version so far. */
-- versioned_sym = sym;
-+ default_version = sym;
-
- continue;
- }
-+ if ((flags & DL_LOOKUP_RETURN_NEWEST) == 0 && ndx != 0)
-+ {
-+ /* ndx == 1 is the base version. We will use it for
-+ old unversioned application. */
-+ if (ndx != 1)
-+ {
-+ /* We remember the first version and keep looking
-+ for the base version. */
-+ if (ndx == 2)
-+ first_version = sym;
-+ continue;
-+ }
-+ }
- }
- #endif
-
-@@ -179,7 +193,8 @@ FCT (const char *undef_name, unsigned lo
- #if VERSIONED
- sym = NULL;
- #else
-- sym = num_versions == 1 ? versioned_sym : NULL;
-+ sym = first_version ?: (num_versions == 1
-+ ? default_version : NULL);
- #endif
-
- if (sym != NULL)
diff --git a/packages/glibc/glibc-2.3.2/50_glibc23-hppa-entry.patch b/packages/glibc/glibc-2.3.2/50_glibc23-hppa-entry.patch
deleted file mode 100644
index a636505df9..0000000000
--- a/packages/glibc/glibc-2.3.2/50_glibc23-hppa-entry.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- glibc/sysdeps/hppa/elf/entry.h 2003-05-15 22:29:52.000000000 -0700
-+++ glibc/sysdeps/hppa/elf/entry.h 2003-05-15 22:29:52.000000000 -0700
-@@ -0,0 +1,10 @@
-+#ifndef __ASSEMBLY__
-+extern void _start (void);
-+#endif
-+
-+/* The function's entry point is stored in the first word of the
-+ function descriptor (plabel) of _start(). */
-+#define ENTRY_POINT (*(long *)(((long)_start) & ~2))
-+
-+/* We have to provide a special declaration. */
-+#define ENTRY_POINT_DECL(class) class void _start (void);
diff --git a/packages/glibc/glibc-2.3.2/50_glibc232-arm-dwarf2-buildfix.patch b/packages/glibc/glibc-2.3.2/50_glibc232-arm-dwarf2-buildfix.patch
deleted file mode 100644
index aa642cb47a..0000000000
--- a/packages/glibc/glibc-2.3.2/50_glibc232-arm-dwarf2-buildfix.patch
+++ /dev/null
@@ -1,5 +0,0 @@
---- /dev/null 2003-01-13 18:16:28.000000000 +0900
-+++ sysdeps/arm/framestate.c 2003-07-16 23:21:34.000000000 +0900
-@@ -0,0 +1,2 @@
-+
-+
diff --git a/packages/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch b/packages/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch
deleted file mode 100644
index 7c3175f681..0000000000
--- a/packages/glibc/glibc-2.3.2/50_glibc232-hppa-full-nptl-2003-10-22.patch
+++ /dev/null
@@ -1,2665 +0,0 @@
---- glibc-2.3.2-orig-debian/elf/dynamic-link.h 2003-10-22 01:06:09.000000000 -0400
-+++ glibc-2.3.2/elf/dynamic-link.h 2003-10-22 01:11:53.000000000 -0400
-@@ -39,12 +39,21 @@
- elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
- void *const reloc_addr);
-+# if ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP
-+auto void __attribute__((always_inline))
-+elf_machine_rel_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-+ void *const reloc_addr);
-+auto void __attribute__((always_inline))
-+elf_machine_rela_relative (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
-+ void *const reloc_addr);
-+# else
- auto void __attribute__((always_inline))
- elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
- void *const reloc_addr);
- auto void __attribute__((always_inline))
- elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
- void *const reloc_addr);
-+# endif
- # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
- auto void __attribute__((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
---- glibc-2.3.2-orig-debian/linuxthreads/attr.c 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/attr.c 2003-10-22 01:07:38.000000000 -0400
-@@ -450,12 +450,19 @@
- {
- /* Found the entry. Now we have the info we need. */
- attr->__stacksize = rl.rlim_cur;
-+#ifdef _STACK_GROWS_DOWN
- attr->__stackaddr = (void *) to;
--
-+#else
-+ attr->__stackaddr = (void *) from;
-+#endif
- /* The limit might be too high. This is a bogus
- situation but try to avoid making it worse. */
- if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr)
-+#ifdef _STACK_GROWS_DOWN
- attr->__stacksize = (size_t) attr->__stackaddr;
-+#else
-+ attr->__stacksize = (size_t)(to - from);
-+#endif
-
- /* We succeed and no need to look further. */
- ret = 0;
---- glibc-2.3.2-orig-debian/linuxthreads/descr.h 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/descr.h 2003-10-22 01:07:38.000000000 -0400
-@@ -71,7 +71,7 @@
- /* Atomic counter made possible by compare_and_swap */
- struct pthread_atomic {
- long p_count;
-- int p_spinlock;
-+ __atomic_lock_t p_spinlock;
- };
-
-
---- glibc-2.3.2-orig-debian/linuxthreads/manager.c 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/manager.c 2003-10-22 01:07:38.000000000 -0400
-@@ -70,8 +70,13 @@
- #else
- static inline pthread_descr thread_segment(int seg)
- {
-+# ifdef _STACK_GROWS_UP
-+ return (pthread_descr)(THREAD_STACK_START_ADDRESS + (seg - 1) * STACK_SIZE)
-+ + 1;
-+# else
- return (pthread_descr)(THREAD_STACK_START_ADDRESS - (seg - 1) * STACK_SIZE)
- - 1;
-+# endif
- }
- #endif
-
---- glibc-2.3.2-orig-debian/linuxthreads/oldsemaphore.c 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/oldsemaphore.c 2003-10-22 01:07:38.000000000 -0400
-@@ -31,7 +31,7 @@
-
- typedef struct {
- long int sem_status;
-- int sem_spinlock;
-+ __atomic_lock_t sem_spinlock;
- } old_sem_t;
-
- extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value);
---- glibc-2.3.2-orig-debian/linuxthreads/pt-machine.c 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/pt-machine.c 2003-10-22 01:07:38.000000000 -0400
-@@ -19,7 +19,9 @@
-
- #define PT_EI
-
--extern long int testandset (int *spinlock);
-+#include <pthread.h>
-+
-+extern long int testandset (__atomic_lock_t *spinlock);
- extern int __compare_and_swap (long int *p, long int oldval, long int newval);
-
- #include <pt-machine.h>
---- glibc-2.3.2-orig-debian/linuxthreads/pthread.c 2003-10-22 01:06:16.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/pthread.c 2003-10-22 01:07:38.000000000 -0400
-@@ -300,9 +300,9 @@
- pthread_descr self;
-
- /* First of all init __pthread_handles[0] and [1] if needed. */
--# if __LT_SPINLOCK_INIT != 0
-- __pthread_handles[0].h_lock = __LOCK_INITIALIZER;
-- __pthread_handles[1].h_lock = __LOCK_INITIALIZER;
-+# ifdef __LT_INITIALIZER_NOT_ZERO
-+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER;
-+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER;
- # endif
- # ifndef SHARED
- /* Unlike in the dynamically linked case the dynamic linker has not
-@@ -370,7 +370,7 @@
- # endif
- /* self->p_start_args need not be initialized, it's all zero. */
- self->p_userstack = 1;
--# if __LT_SPINLOCK_INIT != 0
-+# ifdef __LT_INITIALIZER_NOT_ZERO
- self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER;
- # endif
- self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF;
-@@ -384,9 +384,9 @@
- #else /* USE_TLS */
-
- /* First of all init __pthread_handles[0] and [1]. */
--# if __LT_SPINLOCK_INIT != 0
-- __pthread_handles[0].h_lock = __LOCK_INITIALIZER;
-- __pthread_handles[1].h_lock = __LOCK_INITIALIZER;
-+# ifdef __LT_INITIALIZER_NOT_ZERO
-+ __pthread_handles[0].h_lock = __LOCK_ALT_INITIALIZER;
-+ __pthread_handles[1].h_lock = __LOCK_ALT_INITIALIZER;
- # endif
- __pthread_handles[0].h_descr = &__pthread_initial_thread;
- __pthread_handles[1].h_descr = &__pthread_manager_thread;
-@@ -893,7 +893,11 @@
- /* __pthread_handles[0] is the initial thread, __pthread_handles[1] is
- the manager threads handled specially in thread_self(), so start at 2 */
- h = __pthread_handles + 2;
-+# ifdef _STACK_GROWS_UP
-+ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr)) h++;
-+# else
- while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom)) h++;
-+# endif
- return h->h_descr;
- }
-
-@@ -908,11 +912,22 @@
- return manager_thread;
- h = __pthread_handles + 2;
- # ifdef USE_TLS
-+# ifdef _STACK_GROWS_UP
-+ while (h->h_descr == NULL
-+ || ! (sp >= h->h_descr->p_stackaddr &&
-+ sp < h->h_descr->p_guardaddr))
-+# else
- while (h->h_descr == NULL
-- || ! (sp <= (char *) h->h_descr->p_stackaddr && sp >= h->h_bottom))
-+ || ! (sp <= h->h_descr->p_stackaddr &&
-+ sp >= h->h_bottom))
-+# endif
- h++;
- # else
-+# ifdef _STACK_GROWS_UP
-+ while (! (sp >= (char *) h->h_descr && sp < h->h_descr->p_guardaddr))
-+# else
- while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom))
-+# endif
- h++;
- # endif
- return h->h_descr;
---- glibc-2.3.2-orig-debian/linuxthreads/spinlock.c 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/spinlock.c 2003-10-22 01:07:38.000000000 -0400
-@@ -24,9 +24,9 @@
- #include "spinlock.h"
- #include "restart.h"
-
--static void __pthread_acquire(int * spinlock);
-+static void __pthread_acquire(__atomic_lock_t * spinlock);
-
--static inline void __pthread_release(int * spinlock)
-+static inline void __pthread_release(__atomic_lock_t * spinlock)
- {
- WRITE_MEMORY_BARRIER();
- *spinlock = __LT_SPINLOCK_INIT;
-@@ -269,11 +269,11 @@
- struct wait_node {
- struct wait_node *next; /* Next node in null terminated linked list */
- pthread_descr thr; /* The thread waiting with this node */
-- int abandoned; /* Atomic flag */
-+ __atomic_lock_t abandoned; /* Atomic flag */
- };
-
- static long wait_node_free_list;
--static int wait_node_free_list_spinlock;
-+__pthread_lock_define_initialized(static, wait_node_free_list_spinlock);
-
- /* Allocate a new node from the head of the free list using an atomic
- operation, or else using malloc if that list is empty. A fundamental
-@@ -376,7 +376,7 @@
- if (self == NULL)
- self = thread_self();
-
-- wait_node.abandoned = 0;
-+ wait_node.abandoned = __LT_SPINLOCK_INIT;
- wait_node.next = (struct wait_node *) lock->__status;
- wait_node.thr = self;
- lock->__status = (long) &wait_node;
-@@ -402,7 +402,7 @@
- wait_node.thr = self;
- newstatus = (long) &wait_node;
- }
-- wait_node.abandoned = 0;
-+ wait_node.abandoned = __LT_SPINLOCK_INIT;
- wait_node.next = (struct wait_node *) oldstatus;
- /* Make sure the store in wait_node.next completes before performing
- the compare-and-swap */
-@@ -451,7 +451,7 @@
- if (self == NULL)
- self = thread_self();
-
-- p_wait_node->abandoned = 0;
-+ p_wait_node->abandoned = __LT_SPINLOCK_INIT;
- p_wait_node->next = (struct wait_node *) lock->__status;
- p_wait_node->thr = self;
- lock->__status = (long) p_wait_node;
-@@ -474,7 +474,7 @@
- p_wait_node->thr = self;
- newstatus = (long) p_wait_node;
- }
-- p_wait_node->abandoned = 0;
-+ p_wait_node->abandoned = __LT_SPINLOCK_INIT;
- p_wait_node->next = (struct wait_node *) oldstatus;
- /* Make sure the store in wait_node.next completes before performing
- the compare-and-swap */
-@@ -574,7 +574,7 @@
- while (p_node != (struct wait_node *) 1) {
- int prio;
-
-- if (p_node->abandoned) {
-+ if (lock_held(&p_node->abandoned)) {
- /* Remove abandoned node. */
- #if defined TEST_FOR_COMPARE_AND_SWAP
- if (!__pthread_has_cas)
-@@ -662,7 +662,7 @@
- #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP
-
- int __pthread_compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock)
-+ __atomic_lock_t * spinlock)
- {
- int res;
-
-@@ -699,7 +699,7 @@
- - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT
- sched_yield(), then sleeping again if needed. */
-
--static void __pthread_acquire(int * spinlock)
-+static void __pthread_acquire(__atomic_lock_t * spinlock)
- {
- int cnt = 0;
- struct timespec tm;
---- glibc-2.3.2-orig-debian/linuxthreads/spinlock.h 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/spinlock.h 2003-10-22 01:07:38.000000000 -0400
-@@ -33,14 +33,28 @@
- #endif
- #endif
-
-+/* Define lock_held for all arches that don't need a modified copy. */
-+#ifndef __LT_INITIALIZER_NOT_ZERO
-+# define lock_held(p) *(p)
-+#endif
-+
-+/* Initliazers for possibly complex structures */
-+#ifdef __LT_INITIALIZER_NOT_ZERO
-+# define __pthread_lock_define_initialized(CLASS,NAME) \
-+ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT
-+#else
-+# define __pthread_lock_define_initialized(CLASS,NAME) \
-+ CLASS __atomic_lock_t NAME
-+#endif
-+
- #if defined(TEST_FOR_COMPARE_AND_SWAP)
-
- extern int __pthread_has_cas;
- extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock);
-+ __atomic_lock_t * spinlock);
-
- static inline int compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock)
-+ __atomic_lock_t * spinlock)
- {
- if (__builtin_expect (__pthread_has_cas, 1))
- return __compare_and_swap(ptr, oldval, newval);
-@@ -58,7 +72,7 @@
-
- static inline int
- compare_and_swap_with_release_semantics (long * ptr, long oldval,
-- long newval, int * spinlock)
-+ long newval, __atomic_lock_t * spinlock)
- {
- return __compare_and_swap_with_release_semantics (ptr, oldval,
- newval);
-@@ -67,7 +81,7 @@
- #endif
-
- static inline int compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock)
-+ __atomic_lock_t * spinlock)
- {
- return __compare_and_swap(ptr, oldval, newval);
- }
-@@ -75,10 +89,10 @@
- #else
-
- extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock);
-+ __atomic_lock_t * spinlock);
-
- static inline int compare_and_swap(long * ptr, long oldval, long newval,
-- int * spinlock)
-+ __atomic_lock_t * spinlock)
- {
- return __pthread_compare_and_swap(ptr, oldval, newval, spinlock);
- }
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c 2003-10-22 01:07:38.000000000 -0400
-@@ -24,13 +24,10 @@
- int
- __pthread_spin_lock (pthread_spinlock_t *lock)
- {
-- unsigned int val;
-+ volatile unsigned int *addr = __ldcw_align (lock);
-
-- do
-- asm volatile ("ldcw %1,%0"
-- : "=r" (val), "=m" (*lock)
-- : "m" (*lock));
-- while (!val);
-+ while (__ldcw (addr) == 0)
-+ while (*addr == 0) ;
-
- return 0;
- }
-@@ -40,13 +37,9 @@
- int
- __pthread_spin_trylock (pthread_spinlock_t *lock)
- {
-- unsigned int val;
-+ volatile unsigned int *a = __ldcw_align (lock);
-
-- asm volatile ("ldcw %1,%0"
-- : "=r" (val), "=m" (*lock)
-- : "m" (*lock));
--
-- return val ? 0 : EBUSY;
-+ return __ldcw (a) ? 0 : EBUSY;
- }
- weak_alias (__pthread_spin_trylock, pthread_spin_trylock)
-
-@@ -54,7 +47,9 @@
- int
- __pthread_spin_unlock (pthread_spinlock_t *lock)
- {
-- *lock = 1;
-+ volatile unsigned int *a = __ldcw_align (lock);
-+
-+ *a = 1;
- return 0;
- }
- weak_alias (__pthread_spin_unlock, pthread_spin_unlock)
-@@ -66,7 +61,9 @@
- /* We can ignore the `pshared' parameter. Since we are busy-waiting
- all processes which can access the memory location `lock' points
- to can use the spinlock. */
-- *lock = 1;
-+ volatile unsigned int *a = __ldcw_align (lock);
-+
-+ *a = 1;
- return 0;
- }
- weak_alias (__pthread_spin_init, pthread_spin_init)
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-10-22 01:12:51.000000000 -0400
-@@ -22,41 +22,97 @@
- #ifndef _PT_MACHINE_H
- #define _PT_MACHINE_H 1
-
-+#include <sys/types.h>
- #include <bits/initspin.h>
-
- #ifndef PT_EI
- # define PT_EI extern inline __attribute__ ((always_inline))
- #endif
-
--extern long int testandset (int *spinlock);
--extern int __compare_and_swap (long int *p, long int oldval, long int newval);
-+extern inline long int testandset (__atomic_lock_t *spinlock);
-+extern inline int __compare_and_swap (long int *p, long int oldval, long int newval);
-+extern inline int lock_held (__atomic_lock_t *spinlock);
-+extern inline int __load_and_clear (__atomic_lock_t *spinlock);
-
- /* Get some notion of the current stack. Need not be exactly the top
- of the stack, just something somewhere in the current frame. */
- #define CURRENT_STACK_FRAME stack_pointer
- register char * stack_pointer __asm__ ("%r30");
-
-+/* Get/Set thread-specific pointer. We have to call into the kernel to
-+ * modify it, but we can read it in user mode. */
-+
-+#define THREAD_SELF __get_cr27()
-+
-+static inline struct _pthread_descr_struct * __get_cr27(void)
-+{
-+ long cr27;
-+ asm("mfctl %%cr27, %0" : "=r" (cr27) : );
-+ return (struct _pthread_descr_struct *) cr27;
-+}
-+
-+#define INIT_THREAD_SELF(descr, nr) __set_cr27(descr)
-+
-+static inline void __set_cr27(struct _pthread_descr_struct * cr27)
-+{
-+ asm(
-+ "ble 0xe0(%%sr2, %%r0)\n\t"
-+ "copy %0, %%r26"
-+ : : "r" (cr27) : "r26" );
-+}
-+
-+/* We want the OS to assign stack addresses. */
-+#define FLOATING_STACKS 1
-+#define ARCH_STACK_MAX_SIZE 8*1024*1024
-
- /* The hppa only has one atomic read and modify memory operation,
- load and clear, so hppa spinlocks must use zero to signify that
-- someone is holding the lock. */
-+ someone is holding the lock. The address used for the ldcw
-+ semaphore must be 16-byte aligned. */
-+#define __ldcw(a) ({ \
-+ unsigned int __ret; \
-+ __asm__ __volatile__("ldcw 0(%2),%0" \
-+ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \
-+ __ret; \
-+})
-+
-+/* Because malloc only guarantees 8-byte alignment for malloc'd data,
-+ and GCC only guarantees 8-byte alignment for stack locals, we can't
-+ be assured of 16-byte alignment for atomic lock data even if we
-+ specify "__attribute ((aligned(16)))" in the type declaration. So,
-+ we use a struct containing an array of four ints for the atomic lock
-+ type and dynamically select the 16-byte aligned int from the array
-+ for the semaphore. */
-+#define __PA_LDCW_ALIGNMENT 16
-+#define __ldcw_align(a) ({ \
-+ volatile unsigned int __ret = (unsigned int) a; \
-+ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \
-+ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \
-+ (unsigned int *) __ret; \
-+})
-
--#define xstr(s) str(s)
--#define str(s) #s
- /* Spinlock implementation; required. */
--PT_EI long int
--testandset (int *spinlock)
-+PT_EI int
-+__load_and_clear (__atomic_lock_t *spinlock)
- {
-- int ret;
-+ volatile unsigned int *a = __ldcw_align (spinlock);
-
-- __asm__ __volatile__(
-- "ldcw 0(%2),%0"
-- : "=r"(ret), "=m"(*spinlock)
-- : "r"(spinlock));
-+ return __ldcw (a);
-+}
-
-- return ret == 0;
-+/* Emulate testandset */
-+PT_EI long int
-+testandset (__atomic_lock_t *spinlock)
-+{
-+ return (__load_and_clear(spinlock) == 0);
- }
--#undef str
--#undef xstr
-
-+PT_EI int
-+lock_held (__atomic_lock_t *spinlock)
-+{
-+ volatile unsigned int *a = __ldcw_align (spinlock);
-+
-+ return *a == 0;
-+}
-+
- #endif /* pt-machine.h */
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/hppa/pt-machine.h.rej 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h.rej 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,153 @@
-+***************
-+*** 1,6 ****
-+ /* Machine-dependent pthreads configuration and inline functions.
-+ hppa version.
-+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson <rth@tamu.edu>.
-+
-+--- 1,6 ----
-+ /* Machine-dependent pthreads configuration and inline functions.
-+ hppa version.
-++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson <rth@tamu.edu>.
-+
-+***************
-+*** 22,62 ****
-+ #ifndef _PT_MACHINE_H
-+ #define _PT_MACHINE_H 1
-+
-+ #include <bits/initspin.h>
-+
-+ #ifndef PT_EI
-+ # define PT_EI extern inline
-+ #endif
-+
-+- extern long int testandset (int *spinlock);
-+- extern int __compare_and_swap (long int *p, long int oldval, long int newval);
-+
-+ /* Get some notion of the current stack. Need not be exactly the top
-+ of the stack, just something somewhere in the current frame. */
-+ #define CURRENT_STACK_FRAME stack_pointer
-+ register char * stack_pointer __asm__ ("%r30");
-+
-+-
-+ /* The hppa only has one atomic read and modify memory operation,
-+ load and clear, so hppa spinlocks must use zero to signify that
-+- someone is holding the lock. */
-+-
-+- #define xstr(s) str(s)
-+- #define str(s) #s
-+ /* Spinlock implementation; required. */
-+ PT_EI long int
-+- testandset (int *spinlock)
-+ {
-+- int ret;
-+-
-+- __asm__ __volatile__(
-+- "ldcw 0(%2),%0"
-+- : "=r"(ret), "=m"(*spinlock)
-+- : "r"(spinlock));
-+-
-+- return ret == 0;
-+ }
-+- #undef str
-+- #undef xstr
-+-
-+ #endif /* pt-machine.h */
-+--- 22,115 ----
-+ #ifndef _PT_MACHINE_H
-+ #define _PT_MACHINE_H 1
-+
-++ #include <sys/types.h>
-+ #include <bits/initspin.h>
-+
-+ #ifndef PT_EI
-+ # define PT_EI extern inline
-+ #endif
-+
-++ extern inline long int testandset (__atomic_lock_t *spinlock);
-++ extern inline int __compare_and_swap (long int *p, long int oldval, long int newval);
-++ extern inline int lock_held (__atomic_lock_t *spinlock);
-++ extern inline int __load_and_clear (__atomic_lock_t *spinlock);
-+
-+ /* Get some notion of the current stack. Need not be exactly the top
-+ of the stack, just something somewhere in the current frame. */
-+ #define CURRENT_STACK_FRAME stack_pointer
-+ register char * stack_pointer __asm__ ("%r30");
-+
-++ /* Get/Set thread-specific pointer. We have to call into the kernel to
-++ modify it, but we can read it in user mode. */
-++
-++ #define THREAD_SELF __get_cr27()
-++
-++ static inline struct _pthread_descr_struct * __get_cr27(void)
-++ {
-++ long cr27;
-++ asm("mfctl %%cr27, %0" : "=r" (cr27) : );
-++ return (struct _pthread_descr_struct *) cr27;
-++ }
-++
-++ #define INIT_THREAD_SELF(descr, nr) __set_cr27(descr)
-++
-++ static inline void __set_cr27(struct _pthread_descr_struct * cr27)
-++ {
-++ asm( " ble 0xe0(%%sr2, %%r0)\n"
-++ " copy %0,%%r26"
-++ : : "r" (cr27) : "r26" );
-++ }
-++
-++ /* We want the OS to assign stack addresses. */
-++ #define FLOATING_STACKS 1
-++ #define ARCH_STACK_MAX_SIZE 8*1024*1024
-++
-+ /* The hppa only has one atomic read and modify memory operation,
-+ load and clear, so hppa spinlocks must use zero to signify that
-++ someone is holding the lock. The address used for the ldcw
-++ semaphore must be 16-byte aligned. */
-++ #define __ldcw(a) ({ \
-++ unsigned int __ret; \
-++ __asm__ __volatile__("ldcw 0(%2),%0" \
-++ : "=r" (__ret), "=m" (*(a)) : "r" (a)); \
-++ __ret; \
-++ })
-++
-++ /* Because malloc only guarantees 8-byte alignment for malloc'd data,
-++ and GCC only guarantees 8-byte alignment for stack locals, we can't
-++ be assured of 16-byte alignment for atomic lock data even if we
-++ specify "__attribute ((aligned(16)))" in the type declaration. So,
-++ we use a struct containing an array of four ints for the atomic lock
-++ type and dynamically select the 16-byte aligned int from the array
-++ for the semaphore. */
-++ #define __PA_LDCW_ALIGNMENT 16
-++ #define __ldcw_align(a) ({ \
-++ volatile unsigned int __ret = (unsigned int) a; \
-++ if ((__ret & ~(__PA_LDCW_ALIGNMENT - 1)) < (unsigned int) a) \
-++ __ret = (__ret & ~(__PA_LDCW_ALIGNMENT - 1)) + __PA_LDCW_ALIGNMENT; \
-++ (unsigned int *) __ret; \
-++ })
-++
-+ /* Spinlock implementation; required. */
-++ PT_EI int
-++ __load_and_clear (__atomic_lock_t *spinlock)
-++ {
-++ volatile unsigned int *a = __ldcw_align (spinlock);
-++ return __ldcw (a);
-++ }
-++
-++ /* Emulate testandset */
-+ PT_EI long int
-++ testandset (__atomic_lock_t *spinlock)
-+ {
-++ return (__load_and_clear(spinlock) == 0);
-+ }
-++
-++ PT_EI int
-++ lock_held (__atomic_lock_t *spinlock)
-++ {
-++ volatile unsigned int *a = __ldcw_align (spinlock);
-++ return *a == 0;
-++ }
-++
-+ #endif /* pt-machine.h */
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:06:16.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-10-22 01:07:38.000000000 -0400
-@@ -71,12 +71,12 @@
- initialized locks must be set to one due to the lack of normal
- atomic operations.) */
-
--#if __LT_SPINLOCK_INIT == 0
-+#ifdef __LT_INITIALIZER_NOT_ZERO
- # define __libc_lock_define_initialized(CLASS,NAME) \
-- CLASS __libc_lock_t NAME;
-+ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER;
- #else
- # define __libc_lock_define_initialized(CLASS,NAME) \
-- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER;
-+ CLASS __libc_lock_t NAME;
- #endif
-
- #define __libc_rwlock_define_initialized(CLASS,NAME) \
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400
-@@ -22,12 +22,14 @@
- #define __need_schedparam
- #include <bits/sched.h>
-
-+typedef int __atomic_lock_t;
-+
- /* Fast locks (not abstract because mutexes and conditions aren't abstract). */
- struct _pthread_fastlock
- {
-- long int __status; /* "Free" or "taken" or head of waiting list */
-- int __spinlock; /* Used by compare_and_swap emulation. Also,
-- adaptive SMP lock stores spin count here. */
-+ long int __status; /* "Free" or "taken" or head of waiting list */
-+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also,
-+ adaptive SMP lock stores spin count here. */
- };
-
- #ifndef _PTHREAD_DESCR_DEFINED
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:03:57.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2003-10-22 01:07:38.000000000 -0400
-@@ -19,9 +19,23 @@
-
- /* Initial value of a spinlock. PA-RISC only implements atomic load
- and clear so this must be non-zero. */
--#define __LT_SPINLOCK_INIT 1
-+#define __LT_SPINLOCK_INIT ((__atomic_lock_t) { { 1, 1, 1, 1 } })
-+
-+/* Initialize global spinlocks without cast, generally macro wrapped */
-+#define __LT_SPINLOCK_ALT_INIT { { 1, 1, 1, 1 } }
-+
-+/* Macros for lock initializers, not using the above definition.
-+ The above definition is not used in the case that static initializers
-+ use this value. */
-+#define __LOCK_INITIALIZER { __LT_SPINLOCK_ALT_INIT, 0 }
-+
-+/* Used to initialize _pthread_fastlock's in non-static case */
-+#define __LOCK_ALT_INITIALIZER ((struct _pthread_fastlock){ __LT_SPINLOCK_INIT, 0 })
-+
-+/* Used in pthread_atomic initialization */
-+#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_ALT_INIT }
-+
-+/* Tell the rest of the code that the initializer is non-zero without
-+ explaining it's internal structure */
-+#define __LT_INITIALIZER_NOT_ZERO
-
--/* Macros for lock initializers, using the above definition. */
--#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT }
--#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT }
--#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT }
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/pthreadtypes.h 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,160 @@
-+/* Linuxthreads - a simple clone()-based implementation of Posix */
-+/* threads for Linux. */
-+/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */
-+/* */
-+/* This program is free software; you can redistribute it and/or */
-+/* modify it under the terms of the GNU Library General Public License */
-+/* as published by the Free Software Foundation; either version 2 */
-+/* of the License, or (at your option) any later version. */
-+/* */
-+/* 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 Library General Public License for more details. */
-+
-+#if !defined _BITS_TYPES_H && !defined _PTHREAD_H
-+# error "Never include <bits/pthreadtypes.h> directly; use <sys/types.h> instead."
-+#endif
-+
-+#ifndef _BITS_PTHREADTYPES_H
-+#define _BITS_PTHREADTYPES_H 1
-+
-+#define __need_schedparam
-+#include <bits/sched.h>
-+
-+/* We need 128-bit alignment for the ldcw semaphore. At most, we are
-+ assured of 64-bit alignment for stack locals and malloc'd data. Thus,
-+ we use a struct with four ints for the atomic lock type. The locking
-+ code will figure out which of the four to use for the ldcw semaphore. */
-+typedef volatile struct {
-+ int lock[4];
-+} __attribute__ ((aligned(16))) __atomic_lock_t;
-+
-+/* Fast locks (not abstract because mutexes and conditions aren't abstract). */
-+struct _pthread_fastlock
-+{
-+ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also,
-+ adaptive SMP lock stores spin count here. */
-+ long int __status; /* "Free" or "taken" or head of waiting list */
-+};
-+
-+#ifndef _PTHREAD_DESCR_DEFINED
-+/* Thread descriptors */
-+typedef struct _pthread_descr_struct *_pthread_descr;
-+# define _PTHREAD_DESCR_DEFINED
-+#endif
-+
-+
-+/* Attributes for threads. */
-+typedef struct __pthread_attr_s
-+{
-+ int __detachstate;
-+ int __schedpolicy;
-+ struct __sched_param __schedparam;
-+ int __inheritsched;
-+ int __scope;
-+ size_t __guardsize;
-+ int __stackaddr_set;
-+ void *__stackaddr;
-+ size_t __stacksize;
-+} pthread_attr_t;
-+
-+
-+/* Conditions (not abstract because of PTHREAD_COND_INITIALIZER */
-+
-+#ifdef __GLIBC_HAVE_LONG_LONG
-+__extension__ typedef long long __pthread_cond_align_t;
-+#else
-+typedef long __pthread_cond_align_t;
-+#endif
-+
-+typedef struct
-+{
-+ struct _pthread_fastlock __c_lock; /* Protect against concurrent access */
-+ _pthread_descr __c_waiting; /* Threads waiting on this condition */
-+ char __padding[48 - sizeof (struct _pthread_fastlock)
-+ - sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)];
-+ __pthread_cond_align_t __align;
-+} pthread_cond_t;
-+
-+
-+/* Attribute for conditionally variables. */
-+typedef struct
-+{
-+ int __dummy;
-+} pthread_condattr_t;
-+
-+/* Keys for thread-specific data */
-+typedef unsigned int pthread_key_t;
-+
-+
-+/* Mutexes (not abstract because of PTHREAD_MUTEX_INITIALIZER). */
-+/* (The layout is unnatural to maintain binary compatibility
-+ with earlier releases of LinuxThreads.) */
-+typedef struct
-+{
-+ int __m_reserved; /* Reserved for future use */
-+ int __m_count; /* Depth of recursive locking */
-+ _pthread_descr __m_owner; /* Owner thread (if recursive or errcheck) */
-+ int __m_kind; /* Mutex kind: fast, recursive or errcheck */
-+ struct _pthread_fastlock __m_lock; /* Underlying fast lock */
-+} pthread_mutex_t;
-+
-+
-+/* Attribute for mutex. */
-+typedef struct
-+{
-+ int __mutexkind;
-+} pthread_mutexattr_t;
-+
-+
-+/* Once-only execution */
-+typedef int pthread_once_t;
-+
-+
-+#ifdef __USE_UNIX98
-+/* Read-write locks. */
-+typedef struct _pthread_rwlock_t
-+{
-+ struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */
-+ int __rw_readers; /* Number of readers */
-+ _pthread_descr __rw_writer; /* Identity of writer, or NULL if none */
-+ _pthread_descr __rw_read_waiting; /* Threads waiting for reading */
-+ _pthread_descr __rw_write_waiting; /* Threads waiting for writing */
-+ int __rw_kind; /* Reader/Writer preference selection */
-+ int __rw_pshared; /* Shared between processes or not */
-+} pthread_rwlock_t;
-+
-+
-+/* Attribute for read-write locks. */
-+typedef struct
-+{
-+ int __lockkind;
-+ int __pshared;
-+} pthread_rwlockattr_t;
-+#endif
-+
-+#ifdef __USE_XOPEN2K
-+/* POSIX spinlock data type. */
-+typedef __atomic_lock_t pthread_spinlock_t;
-+
-+/* POSIX barrier. */
-+typedef struct {
-+ struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */
-+ int __ba_required; /* Threads needed for completion */
-+ int __ba_present; /* Threads waiting */
-+ _pthread_descr __ba_waiting; /* Queue of waiting threads */
-+} pthread_barrier_t;
-+
-+/* barrier attribute */
-+typedef struct {
-+ int __pshared;
-+} pthread_barrierattr_t;
-+
-+#endif
-+
-+
-+/* Thread identifiers */
-+typedef unsigned long int pthread_t;
-+
-+#endif /* bits/pthreadtypes.h */
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,73 @@
-+/* HP-PARISC macro definitions for mutexes, thread-specific data
-+ and parameters for malloc.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Carlos O'Donell <carlos@baldric.uwo.ca>, 2003.
-+
-+ 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 _MALLOC_MACHINE_H
-+#define _MALLOC_MACHINE_H
-+
-+#undef thread_atfork_static
-+
-+#include <atomic.h>
-+#include <bits/libc-lock.h>
-+
-+__libc_lock_define (typedef, mutex_t)
-+
-+/* Since our lock structure does not tolerate being initialized to zero, we must
-+ modify the standard function calls made by malloc */
-+# define mutex_init(m) \
-+ __libc_maybe_call (__pthread_mutex_init, (m, NULL), \
-+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) )
-+# define mutex_lock(m) \
-+ __libc_maybe_call (__pthread_mutex_lock, (m), \
-+ (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))
-+# define mutex_trylock(m) \
-+ __libc_maybe_call (__pthread_mutex_trylock, (m), \
-+ (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)))
-+# define mutex_unlock(m) \
-+ __libc_maybe_call (__pthread_mutex_unlock, (m), \
-+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) )
-+
-+/* This is defined by newer gcc version unique for each module. */
-+extern void *__dso_handle __attribute__ ((__weak__));
-+
-+#include <fork.h>
-+
-+#ifdef SHARED
-+# define thread_atfork(prepare, parent, child) \
-+ __register_atfork (prepare, parent, child, __dso_handle)
-+#else
-+# define thread_atfork(prepare, parent, child) \
-+ __register_atfork (prepare, parent, child, \
-+ &__dso_handle == NULL ? NULL : __dso_handle)
-+#endif
-+
-+/* thread specific data for glibc */
-+
-+#include <bits/libc-tsd.h>
-+
-+typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */
-+__libc_tsd_define (static, MALLOC) /* declaration/common definition */
-+#define tsd_key_create(key, destr) ((void) (key))
-+#define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data))
-+#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC))
-+
-+#include <sysdeps/generic/malloc-machine.h>
-+
-+#endif /* !defined(_MALLOC_MACHINE_H) */
---- glibc-2.3.2-orig-debian/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,190 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Carlos O'Donell <carlos@baldric.uwo.ca>, 2003.
-+
-+ 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>
-+#ifndef __ASSEMBLER__
-+# include <linuxthreads/internals.h>
-+#endif
-+
-+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
-+
-+# ifndef NO_ERROR
-+# define NO_ERROR -0x1000
-+# endif
-+
-+# undef PSEUDO
-+# define PSEUDO(name, syscall_name, args) \
-+ ENTRY (name) \
-+ SINGLE_THREAD_P ASM_LINE_SEP \
-+ cmpib,<> 0,%ret0,Lpseudo_cancel ASM_LINE_SEP \
-+ nop ASM_LINE_SEP \
-+ DO_CALL(syscall_name, args) ASM_LINE_SEP \
-+ /* DONE! */ ASM_LINE_SEP \
-+ bv 0(2) ASM_LINE_SEP \
-+ nop ASM_LINE_SEP \
-+ Lpseudo_cancel: ASM_LINE_SEP \
-+ /* store return ptr */ ASM_LINE_SEP \
-+ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \
-+ /* save syscall args */ ASM_LINE_SEP \
-+ PUSHARGS_##args /* MACRO */ ASM_LINE_SEP \
-+ STW_PIC ASM_LINE_SEP \
-+ CENABLE /* FUNC CALL */ ASM_LINE_SEP \
-+ ldo 64(%sp), %sp ASM_LINE_SEP \
-+ ldo -64(%sp), %sp ASM_LINE_SEP \
-+ LDW_PIC ASM_LINE_SEP \
-+ /* restore syscall args */ ASM_LINE_SEP \
-+ POPARGS_##args ASM_LINE_SEP \
-+ /* save r4 in arg0 stack slot */ ASM_LINE_SEP \
-+ stw %r4, -36(%sr0,%sp) ASM_LINE_SEP \
-+ /* save mask from cenable */ ASM_LINE_SEP \
-+ copy %ret0, %r4 ASM_LINE_SEP \
-+ ble 0x100(%sr2,%r0) ASM_LINE_SEP \
-+ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \
-+ LDW_PIC ASM_LINE_SEP \
-+ /* pass mask as arg0 to cdisable */ ASM_LINE_SEP \
-+ copy %r4, %r26 ASM_LINE_SEP \
-+ copy %ret0, %r4 ASM_LINE_SEP \
-+ CDISABLE ASM_LINE_SEP \
-+ ldo 64(%sp), %sp ASM_LINE_SEP \
-+ ldo -64(%sp), %sp ASM_LINE_SEP \
-+ LDW_PIC ASM_LINE_SEP \
-+ /* compare error */ ASM_LINE_SEP \
-+ ldi NO_ERROR,%r1 ASM_LINE_SEP \
-+ /* branch if no error */ ASM_LINE_SEP \
-+ cmpb,>>=,n %r1,%r4,Lpre_end ASM_LINE_SEP \
-+ nop ASM_LINE_SEP \
-+ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \
-+ ldo 64(%sp), %sp ASM_LINE_SEP \
-+ ldo -64(%sp), %sp ASM_LINE_SEP \
-+ /* No need to LDW_PIC */ ASM_LINE_SEP \
-+ /* make syscall res value positive */ ASM_LINE_SEP \
-+ sub %r0, %r4, %r4 ASM_LINE_SEP \
-+ /* store into errno location */ ASM_LINE_SEP \
-+ stw %r4, 0(%sr0,%ret0) ASM_LINE_SEP \
-+ /* return -1 */ ASM_LINE_SEP \
-+ ldo -1(%r0), %ret0 ASM_LINE_SEP \
-+ Lpre_end: ASM_LINE_SEP \
-+ ldw -20(%sr0,%sp), %rp ASM_LINE_SEP \
-+ /* No need to LDW_PIC */ ASM_LINE_SEP \
-+ ldw -36(%sr0,%sp), %r4 ASM_LINE_SEP
-+
-+/* Save arguments into our frame */
-+# define PUSHARGS_0 /* nothing to do */
-+# define PUSHARGS_1 PUSHARGS_0 stw %r26, -36(%sr0,%sp) ASM_LINE_SEP
-+# define PUSHARGS_2 PUSHARGS_1 stw %r25, -40(%sr0,%sp) ASM_LINE_SEP
-+# define PUSHARGS_3 PUSHARGS_2 stw %r24, -44(%sr0,%sp) ASM_LINE_SEP
-+# define PUSHARGS_4 PUSHARGS_3 stw %r23, -48(%sr0,%sp) ASM_LINE_SEP
-+# define PUSHARGS_5 PUSHARGS_4 /* Args are on the stack... */
-+# define PUSHARGS_6 PUSHARGS_5
-+
-+/* Bring them back from the stack */
-+# define POPARGS_0 /* nothing to do */
-+# define POPARGS_1 POPARGS_0 ldw -36(%sr0,%sp), %r26 ASM_LINE_SEP
-+# define POPARGS_2 POPARGS_1 ldw -40(%sr0,%sp), %r25 ASM_LINE_SEP
-+# define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP
-+# define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP
-+# define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP
-+# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP
-+
-+# ifdef IS_IN_libpthread
-+# ifdef PIC
-+# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP
-+# else
-+# define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP
-+# endif
-+# elif !defined NOT_IN_libc
-+# ifdef PIC
-+# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP
-+# else
-+# define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __libc_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP
-+# endif
-+# else
-+# ifdef PIC
-+# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP
-+# else
-+# define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \
-+ bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP
-+# define CDISABLE .import __librt_disable_asynccancel,code ASM_LINE_SEP \
-+ bl __librt_disable_asynccancel,%r2 ASM_LINE_SEP
-+# endif
-+# endif
-+
-+/* p_header.multiple_threads is +12 from the pthread_descr struct start,
-+ We could have called __get_cr27() but we really want less overhead */
-+# define MULTIPLE_THREADS_OFFSET 0xC
-+
-+/* cr27 has been initialized to 0x0 by kernel */
-+# define NO_THREAD_CR27 0x0
-+
-+# ifdef IS_IN_libpthread
-+# define __local_multiple_threads __pthread_multiple_threads
-+# elif !defined NOT_IN_libc
-+# define __local_multiple_threads __libc_multiple_threads
-+# else
-+# define __local_multiple_threads __librt_multiple_threads
-+# endif
-+
-+# ifndef __ASSEMBLER__
-+ extern int __local_multiple_threads attribute_hidden;
-+# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
-+# else
-+/* This ALT version requires newer kernel support */
-+# define SINGLE_THREAD_P_MFCTL \
-+ mfctl %cr27, %ret0 ASM_LINE_SEP \
-+ cmpib,= NO_THREAD_CR27,%ret0,Lstp ASM_LINE_SEP \
-+ nop ASM_LINE_SEP \
-+ ldw MULTIPLE_THREADS_OFFSET(%sr0,%ret0),%ret0 ASM_LINE_SEP \
-+ Lstp: ASM_LINE_SEP
-+# ifdef PIC
-+/* Slower version uses GOT to get value of __local_multiple_threads */
-+# define SINGLE_THREAD_P \
-+ addil LT%__local_multiple_threads, %r19 ASM_LINE_SEP \
-+ ldw RT%__local_multiple_threads(%sr0,%r1), %ret0 ASM_LINE_SEP \
-+ ldw 0(%sr0,%ret0), %ret0 ASM_LINE_SEP
-+# else
-+ /* Slow non-pic version using DP */
-+# define SINGLE_THREAD_P \
-+ addil LR%__local_multiple_threads-$global$,%r27 ASM_LINE_SEP \
-+ ldw RR%__local_multiple_threads-$global$(%sr0,%r1),%ret0 ASM_LINE_SEP
-+# endif
-+# endif
-+#elif !defined __ASSEMBLER__
-+
-+/* This code should never be used but we define it anyhow. */
-+# define SINGLE_THREAD_P (1)
-+
-+#endif
-+/* !defined NOT_IN_libc || defined IS_IN_libpthread */
-+
-+
---- glibc-2.3.2-orig-debian/localedata/gen-locale.sh 2003-10-22 01:03:54.000000000 -0400
-+++ glibc-2.3.2/localedata/gen-locale.sh 2003-10-22 01:07:38.000000000 -0400
-@@ -47,6 +47,7 @@
- locale=`echo $locfile|sed 's|\([^.]*\)[.].*/LC_CTYPE|\1|'`
- charmap=`echo $locfile|sed 's|[^.]*[.]\(.*\)/LC_CTYPE|\1|'`
-
-+echo "Running \"$0 $common_objpfx $localedef $locfile\""
- echo "Generating locale $locale.$charmap: this might take a while..."
- generate_locale `echo $charmap | sed -e s/SJIS/SHIFT_JIS/` $locale \
- $locale.$charmap
---- glibc-2.3.2-orig-debian/malloc/thread-m.h 2003-10-22 01:06:10.000000000 -0400
-+++ glibc-2.3.2/malloc/thread-m.h 2003-10-22 01:07:38.000000000 -0400
-@@ -59,6 +59,28 @@
- #define mutex_unlock(m) \
- __libc_maybe_call2 (pthread_mutex_unlock, (m), (*(int *)(m) = 0))
-
-+# if(defined __hppa__)
-+/* Since our lock structure does not tolerate being initialized to zero, we must
-+ modify the standard function calls made by malloc */
-+# undef mutex_init
-+# undef mutex_lock
-+# undef mutex_trylock
-+# undef mutex_unlock
-+# define mutex_init(m) \
-+ __libc_maybe_call (__pthread_mutex_init, (m, NULL), \
-+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT),(*(int *)(m))) )
-+# define mutex_lock(m) \
-+ __libc_maybe_call (__pthread_mutex_lock, (m), \
-+ (__load_and_clear(&((m)->__m_lock.__spinlock)), 0))
-+# define mutex_trylock(m) \
-+ __libc_maybe_call (__pthread_mutex_trylock, (m), \
-+ (*(int *)(m) ? 1 : (__load_and_clear(&((m)->__m_lock.__spinlock)), 0)))
-+# define mutex_unlock(m) \
-+ __libc_maybe_call (__pthread_mutex_unlock, (m), \
-+ (((m)->__m_lock.__spinlock = __LT_SPINLOCK_INIT), (*(int *)(m))) )
-+# endif
-+/* if(defined __hppa__) */
-+
- #else
-
- #define mutex_init(m) \
---- glibc-2.3.2-orig-debian/sysdeps/generic/framestate.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/framestate.c 2003-10-22 01:07:38.000000000 -0400
-@@ -41,7 +41,11 @@
- if (handle == NULL
- || (frame_state_for
- = (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL)
-+#ifndef __USING_SJLJ_EXCEPTIONS__
- frame_state_for = fallback_frame_state_for;
-+#else
-+ frame_state_for = abort;
-+#endif
- }
-
- return frame_state_for (pc, frame_state);
---- glibc-2.3.2-orig-debian/sysdeps/generic/unwind-dw2.c 2003-10-22 01:06:11.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-10-22 01:08:07.000000000 -0400
-@@ -39,7 +39,6 @@
- #endif
-
-
--#ifndef __USING_SJLJ_EXCEPTIONS__
-
- #ifndef STACK_GROWS_DOWNWARD
- #define STACK_GROWS_DOWNWARD 0
-@@ -1287,4 +1286,3 @@
- #include "unwind.inc"
-
- #endif /* _LIBC */
--#endif /* !USING_SJLJ_EXCEPTIONS */
---- glibc-2.3.2-orig-debian/sysdeps/hppa/Dist 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/Dist 2003-10-22 01:07:38.000000000 -0400
-@@ -1,2 +1,3 @@
-+libgcc-compat.c
- dl-symaddr.c
- dl-fptr.c
---- glibc-2.3.2-orig-debian/sysdeps/hppa/Makefile 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/Makefile 2003-10-22 01:07:38.000000000 -0400
-@@ -22,12 +22,19 @@
- # CFLAGS-.os += -ffunction-sections
- LDFLAGS-c_pic.os += -Wl,--unique=.text*
-
--ifeq ($(subdir),malloc)
--CFLAGS-malloc.c += -DMALLOC_ALIGNMENT=16
--endif
--
- ifeq ($(subdir),elf)
- CFLAGS-rtld.c += -mdisable-fpregs
- dl-routines += dl-symaddr dl-fptr
- rtld-routines += dl-symaddr dl-fptr
- endif
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+ifeq (yes,$(have-protected))
-+CPPFLAGS-libgcc-compat.c = -DHAVE_DOT_HIDDEN
-+endif
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- glibc-2.3.2-orig-debian/sysdeps/hppa/Versions 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/Versions 2003-10-22 01:07:38.000000000 -0400
-@@ -5,3 +5,8 @@
- _dl_function_address;
- }
- }
-+libc {
-+ GLIBC_2.2 {
-+ __clz_tab;
-+ }
-+}
---- glibc-2.3.2-orig-debian/sysdeps/hppa/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/hppa/atomicity.h 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,55 @@
-+/* Low-level functions for atomic operations. HP-PARISC version.
-+ Copyright (C) 1997,2001 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 _ATOMICITY_H
-+#define _ATOMICITY_H 1
-+
-+#include <inttypes.h>
-+
-+#warning stub atomicity functions are not atomic
-+#warning CAO This will get implemented soon
-+
-+static inline int
-+__attribute__ ((unused))
-+exchange_and_add (volatile uint32_t *mem, int val)
-+{
-+ int result = *mem;
-+ *mem += val;
-+ return result;
-+}
-+
-+static inline void
-+__attribute__ ((unused))
-+atomic_add (volatile uint32_t *mem, int val)
-+{
-+ *mem += val;
-+}
-+
-+static inline int
-+__attribute__ ((unused))
-+compare_and_swap (volatile long int *p, long int oldval, long int newval)
-+{
-+ if (*p != oldval)
-+ return 0;
-+
-+ *p = newval;
-+ return 1;
-+}
-+
-+#endif /* atomicity.h */
---- glibc-2.3.2-orig-debian/sysdeps/hppa/dl-fptr.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/dl-fptr.c 2003-10-22 01:07:38.000000000 -0400
-@@ -30,7 +30,7 @@
- # include <pt-machine.h>
-
- /* Remember, we use 0 to mean that a lock is taken on PA-RISC. */
--static int __hppa_fptr_lock = 1;
-+static __atomic_lock_t __hppa_fptr_lock = __LT_SPINLOCK_ALT_INIT;
- #endif
-
- /* Because ld.so is now versioned, these functions can be in their own
-@@ -127,7 +127,7 @@
- #ifdef _LIBC_REENTRANT
- /* Release the lock. Again, remember, zero means the lock is taken! */
- if (mem == NULL)
-- __hppa_fptr_lock = 1;
-+ __hppa_fptr_lock = __LT_SPINLOCK_INIT;
- #endif
-
- /* Set bit 30 to indicate to $$dyncall that this is a PLABEL. */
-@@ -180,7 +180,7 @@
-
- #ifdef _LIBC_REENTRANT
- /* Release the lock. */
-- __hppa_fptr_lock = 1;
-+ __hppa_fptr_lock = __LT_SPINLOCK_INIT;
- #endif
- }
-
-@@ -190,6 +190,8 @@
- Elf32_Addr addr = (Elf32_Addr) address;
- struct hppa_fptr *f;
-
-+ address = (void *)((unsigned long)address &~ 3); /* Clear the bottom two bits. See make_fptr. */
-+
- #ifdef _LIBC_REENTRANT
- /* Make sure we are alone. */
- while (testandset (&__hppa_fptr_lock));
-@@ -204,7 +206,7 @@
-
- #ifdef _LIBC_REENTRANT
- /* Release the lock. */
-- __hppa_fptr_lock = 1;
-+ __hppa_fptr_lock = __LT_SPINLOCK_INIT;
- #endif
-
- return addr;
---- glibc-2.3.2-orig-debian/sysdeps/hppa/dl-machine.h 2003-10-22 01:06:11.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/dl-machine.h 2003-10-22 01:10:26.000000000 -0400
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version.
-- Copyright (C) 1995-1997,1999,2000,2001,2002, 2003
-+ Copyright (C) 1995-1997,1999-2003
- Free Software Foundation, Inc.
- Contributed by David Huggins-Daines <dhd@debian.org>
- This file is part of the GNU C Library.
-@@ -29,8 +29,15 @@
- #include <link.h>
- #include <assert.h>
-
-+# define VALID_ELF_OSABI(osabi) ((osabi == ELFOSABI_SYSV) || (osabi == ELFOSABI_LINUX))
-+# define VALID_ELF_ABIVERSION(ver) (ver == 0)
-+# define VALID_ELF_HEADER(hdr,exp,size) \
-+ memcmp (hdr,exp,size-2) == 0 \
-+ && VALID_ELF_OSABI (hdr[EI_OSABI]) \
-+ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])
-+
- /* These must match the definition of the stub in bfd/elf32-hppa.c. */
--#define SIZEOF_PLT_STUB (4*4)
-+#define SIZEOF_PLT_STUB (7*4)
- #define GOT_FROM_PLT_STUB (4*4)
-
- /* A PLABEL is a function descriptor. Properly they consist of just
-@@ -67,45 +74,41 @@
- return ehdr->e_machine == EM_PARISC;
- }
-
--
- /* Return the link-time address of _DYNAMIC. */
- static inline Elf32_Addr
-+elf_machine_dynamic (void) __attribute__ ((const));
-+
-+static inline Elf32_Addr
- elf_machine_dynamic (void)
- {
- Elf32_Addr dynamic;
-
--#if 0
-- /* Use this method if GOT address not yet set up. */
-- asm (
--" b,l 1f,%0\n"
-+ asm ("b,l 1f,%0\n"
- " depi 0,31,2,%0\n"
- "1: addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 8),%0\n"
- " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
-- : "=r" (dynamic) : : "r1");
--#else
-- /* This works because we already have our GOT address available. */
-- dynamic = (Elf32_Addr) &_DYNAMIC;
--#endif
-+ : "=r" (dynamic) : : "r1");
-
- return dynamic;
- }
-
- /* Return the run-time load address of the shared object. */
- static inline Elf32_Addr
-+elf_machine_load_address (void) __attribute__ ((const));
-+
-+static inline Elf32_Addr
- elf_machine_load_address (void)
- {
-- Elf32_Addr dynamic, dynamic_linkaddress;
-+ Elf32_Addr dynamic;
-
- asm (
- " b,l 1f,%0\n"
- " depi 0,31,2,%0\n"
- "1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%0\n"
--" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%1\n"
--" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%0\n"
--" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%%r1),%0\n"
-- : "=r" (dynamic_linkaddress), "=r" (dynamic) : : "r1");
-+" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
-+ : "=r" (dynamic) : : "r1");
-
-- return dynamic - dynamic_linkaddress;
-+ return dynamic - elf_machine_dynamic ();
- }
-
- /* Fixup a PLT entry to bounce directly to the function at VALUE. */
-@@ -168,41 +171,39 @@
- fptr = (struct hppa_fptr *) (reloc->r_offset + l_addr);
- if (r_sym != 0)
- {
-- /* Relocate the pointer to the stub. */
-- fptr->func += l_addr;
-- /* Instead of the LTP value, we put the reloc offset
-- here. The trampoline code will load the proper
-- LTP and pass the reloc offset to the fixup
-- function. */
-- fptr->gp = iplt - jmprel;
- if (!got)
- {
- static union {
- unsigned char c[8];
- Elf32_Addr i[2];
- } sig = {{0x00,0xc0,0xff,0xee, 0xde,0xad,0xbe,0xef}};
-+ const Elf32_Rela *last_rel;
-+
-+ last_rel = (const Elf32_Rela *) end_jmprel - 1;
-+
-+ /* The stub is immediately after the last .plt
-+ entry. Rely on .plt relocs being ordered. */
-+ if (last_rel->r_offset == 0)
-+ return 0;
-
- /* Find our .got section. It's right after the
- stub. */
-- got = (Elf32_Addr *) (fptr->func + GOT_FROM_PLT_STUB);
-+ got = (Elf32_Addr *) (last_rel->r_offset + l_addr
-+ + 8 + SIZEOF_PLT_STUB);
-
-- /* Sanity check to see if the address we are
-- going to check below is within a reasonable
-- approximation of the bounds of the PLT (or,
-- at least, is at an address that won't fault
-- on read). Then check for the magic signature
-- above. */
-- if (fptr->func < (Elf32_Addr) fptr + sizeof(*fptr))
-- return 0;
-- if (fptr->func >
-- ((Elf32_Addr) fptr
-- + SIZEOF_PLT_STUB
-- + ((l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeof (Elf32_Rela))
-- * 8)))
-- return 0;
-+ /* Check the magic signature. */
- if (got[-2] != sig.i[0] || got[-1] != sig.i[1])
- return 0; /* No lazy linking for you! */
- }
-+
-+ /* Relocate the pointer to the stub. */
-+ fptr->func = (Elf32_Addr) got - GOT_FROM_PLT_STUB;
-+
-+ /* Instead of the LTP value, we put the reloc offset
-+ here. The trampoline code will load the proper
-+ LTP and pass the reloc offset to the fixup
-+ function. */
-+ fptr->gp = iplt - jmprel;
- }
- else
- {
-@@ -272,22 +273,24 @@
- " stw %r25,-40(%sp)\n" /* argc */ \
- " stw %r24,-44(%sp)\n" /* argv */ \
- \
-- /* We need the LTP, and we need it now. */ \
-- /* $PIC_pcrel$0 points 8 bytes past the current instruction, \
-- just like a branch reloc. This sequence gets us the runtime \
-- address of _DYNAMIC. */ \
-+ /* We need the LTP, and we need it now. \
-+ $PIC_pcrel$0 points 8 bytes past the current instruction, \
-+ just like a branch reloc. This sequence gets us the \
-+ runtime address of _DYNAMIC. */ \
- " bl 0f,%r19\n" \
- " depi 0,31,2,%r19\n" /* clear priviledge bits */ \
- "0: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%r19\n" \
- " ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%r1),%r26\n" \
- \
-- /* Also get the link time address from the first entry of the GOT. */ \
-+ /* The link time address is stored in the first entry of the \
-+ GOT. */ \
- " addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%r19\n" \
- " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%r1),%r20\n" \
- \
- " sub %r26,%r20,%r20\n" /* Calculate load offset */ \
- \
-- /* Rummage through the dynamic entries, looking for DT_PLTGOT. */ \
-+ /* Rummage through the dynamic entries, looking for \
-+ DT_PLTGOT. */ \
- " ldw,ma 8(%r26),%r19\n" \
- "1: cmpib,=,n 3,%r19,2f\n" /* tag == DT_PLTGOT? */ \
- " cmpib,<>,n 0,%r19,1b\n" \
-@@ -307,8 +310,8 @@
- | 32 bytes of magic | \
- |---------------------------------| \
- | 32 bytes argument/sp save area | \
-- |---------------------------------| ((current->mm->env_end) + 63 & ~63) \
-- | N bytes of slack | \
-+ |---------------------------------| ((current->mm->env_end) \
-+ | N bytes of slack | + 63 & ~63) \
- |---------------------------------| \
- | envvar and arg strings | \
- |---------------------------------| \
-@@ -376,7 +379,7 @@
- " bl _dl_init_internal,%r2\n" \
- " ldo 4(%r23),%r23\n" /* delay slot */ \
- \
-- /* Reload argc, argv to the registers start.S expects them in (feh) */ \
-+ /* Reload argc, argv to the registers start.S expects. */ \
- " ldw -40(%sp),%r25\n" \
- " ldw -44(%sp),%r24\n" \
- \
-@@ -388,8 +391,8 @@
- " .word 0xdeadbeef\n" \
- " .previous\n" \
- \
-- /* %r3 contains a function pointer, we need to mask out the lower \
-- * bits and load the gp and jump address. */ \
-+ /* %r3 contains a function pointer, we need to mask out the \
-+ lower bits and load the gp and jump address. */ \
- " depi 0,31,2,%r3\n" \
- " ldw 0(%r3),%r2\n" \
- " addil LT'__dl_fini_plabel,%r19\n" \
-@@ -407,43 +410,41 @@
- Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */
- #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
- extern void tramp_name (void); \
-- asm ( "\
-- /* Trampoline for " #tramp_name " */ \n\
-- .globl " #tramp_name " \n\
-- .type " #tramp_name ",@function \n\
--" #tramp_name ": \n\
-- /* Save return pointer */ \n\
-- stw %r2,-20(%sp) \n\
-- /* Save argument registers in the call stack frame. */ \n\
-- stw %r26,-36(%sp) \n\
-- stw %r25,-40(%sp) \n\
-- stw %r24,-44(%sp) \n\
-- stw %r23,-48(%sp) \n\
-- /* Build a call frame. */ \n\
-- stwm %sp,64(%sp) \n\
-- \n\
-- /* Set up args to fixup func. */ \n\
-- ldw 8+4(%r20),%r26 /* got[1] == struct link_map * */ \n\
-- copy %r19,%r25 /* reloc offset */ \n\
-- \n\
-- /* Call the real address resolver. */ \n\
-- bl " #fixup_name ",%r2 \n\
-- copy %r21,%r19 /* delay slot, set fixup func ltp */ \n\
-- \n\
-- ldwm -64(%sp),%sp \n\
-- /* Arguments. */ \n\
-- ldw -36(%sp),%r26 \n\
-- ldw -40(%sp),%r25 \n\
-- ldw -44(%sp),%r24 \n\
-- ldw -48(%sp),%r23 \n\
-- /* Return pointer. */ \n\
-- ldw -20(%sp),%r2 \n\
-- /* Call the real function. */ \n\
-- ldw 0(%r28),%r22 \n\
-- bv %r0(%r22) \n\
-- ldw 4(%r28),%r19 \n\
--");
--
-+ asm (".globl " #tramp_name "\n" \
-+ " .type " #tramp_name ",@function\n" \
-+ #tramp_name ":\n" \
-+ /* Save return pointer */ \
-+ " stw %r2,-20(%sp)\n" \
-+ /* Save argument registers in the call stack frame. */ \
-+ " stw %r26,-36(%sp)\n" \
-+ " stw %r25,-40(%sp)\n" \
-+ " stw %r24,-44(%sp)\n" \
-+ " stw %r23,-48(%sp)\n" \
-+ /* Build a call frame, and save structure pointer. */ \
-+ " stwm %r28,64(%sp)\n" \
-+ \
-+ /* Set up args to fixup func. */ \
-+ " ldw 8+4(%r20),%r26\n" /* got[1] == struct link_map * */ \
-+ " copy %r19,%r25\n" /* reloc offset */ \
-+ \
-+ /* Call the real address resolver. */ \
-+ " bl " #fixup_name ",%r2\n" \
-+ " copy %r21,%r19\n" /* delay slot, set fixup func ltp */ \
-+ \
-+ " ldw 0(%r28),%r22\n" /* load up the returned func ptr */ \
-+ " ldw 4(%r28),%r19\n" \
-+ " ldwm -64(%sp),%r28\n" \
-+ /* Arguments. */ \
-+ " ldw -36(%sp),%r26\n" \
-+ " ldw -40(%sp),%r25\n" \
-+ " ldw -44(%sp),%r24\n" \
-+ " ldw -48(%sp),%r23\n" \
-+ /* Call the real function. */ \
-+ " bv %r0(%r22)\n" \
-+ /* Return pointer. */ \
-+ " ldw -20(%sp),%r2\n" \
-+ );
-+
- #ifndef PROF
- #define ELF_MACHINE_RUNTIME_TRAMPOLINE \
- TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \
-@@ -470,16 +471,32 @@
- /* We only use RELA. */
- #define ELF_MACHINE_NO_REL 1
-
-+/* Tell dynamic-link that PA needs the extra link_map structure */
-+#define ELF_MACHINE_REL_RELATIVE_NEEDSLINKMAP 1
-+#define ELF_MACHINE_RELA_RELATIVE_NEEDSLINKMAP 1
-+
- /* Return the address of the entry point. */
- #define ELF_MACHINE_START_ADDRESS(map, start) \
- DL_FUNCTION_ADDRESS (map, start)
-
-+/* We define an initialization functions. This is called very early in
-+ * _dl_sysdep_start. */
-+#define DL_PLATFORM_INIT dl_platform_init ()
-+
-+static inline void __attribute__ ((unused))
-+dl_platform_init (void)
-+{
-+ if (GL(dl_platform) != NULL && *GL(dl_platform) == '\0')
-+ /* Avoid an empty string which would disturb us. */
-+ GL(dl_platform) = NULL;
-+}
-+
- #endif /* !dl_machine_h */
-
- /* These are only actually used where RESOLVE_MAP is defined, anyway. */
- #ifdef RESOLVE_MAP
-
--static inline void
-+auto void __attribute__((always_inline))
- elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
- const Elf32_Sym *sym, const struct r_found_version *version,
- void *const reloc_addr_arg)
-@@ -569,15 +586,15 @@
- probably haven't relocated the necessary values by this
- point so we have to find them ourselves. */
-
-- asm ("bl 0f,%0 \n\
-- depi 0,31,2,%0 \n\
--0: addil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0 \n\
-- ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1 \n\
-- addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0 \n\
-- ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2 \n\
-- addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0 \n\
-- ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3"
-- :
-+ asm ("bl 0f,%0\n\t"
-+ "depi 0,31,2,%0\n\t"
-+ "0:\taddil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0\n\t"
-+ "ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1\n\t"
-+ "addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0\n\t"
-+ "ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2\n\t"
-+ "addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0\n\t"
-+ "ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3"
-+ :
- "=r" (dot),
- "=r" (p_boot_ldso_fptr),
- "=r" (p_fptr_root),
-@@ -636,7 +653,7 @@
-
- /* hppa doesn't have an R_PARISC_RELATIVE reloc, but uses relocs with
- ELF32_R_SYM (info) == 0 for a similar purpose. */
--static inline void
-+auto void __attribute__((always_inline))
- elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr,
- const Elf32_Rela *reloc,
- void *const reloc_addr_arg)
-@@ -682,7 +699,7 @@
- *reloc_addr = value;
- }
-
--static inline void
-+auto void __attribute__((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
- Elf32_Addr l_addr, const Elf32_Rela *reloc)
- {
---- glibc-2.3.2-orig-debian/sysdeps/hppa/elf/entry.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/hppa/elf/entry.h 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,10 @@
-+#ifndef __ASSEMBLY__
-+extern void _start (void);
-+#endif
-+
-+/* The function's entry point is stored in the first word of the
-+ function descriptor (plabel) of _start(). */
-+#define ENTRY_POINT ({long int *tmp = (long int *)((long)_start & ~2); tmp[0];})
-+
-+/* We have to provide a special declaration. */
-+#define ENTRY_POINT_DECL(class) class void _start (void);
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fclrexcpt.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/fclrexcpt.c 2003-10-22 01:07:38.000000000 -0400
-@@ -29,7 +29,7 @@
- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw));
-
- /* Clear all the relevant bits. */
-- sw[0] &= ~(excepts & FE_ALL_EXCEPT) << 27;
-+ sw[0] &= ~((excepts & FE_ALL_EXCEPT) << 27);
- __asm__ ("fldd 0(%0),%%fr0" : : "r" (sw));
-
- /* Success. */
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fegetenv.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/fegetenv.c 2003-10-22 01:07:38.000000000 -0400
-@@ -23,11 +23,12 @@
- int
- fegetenv (fenv_t *envp)
- {
-- __asm__ (
-- "fstd %%fr0,0(%2)\n"
-- "fstd,ma %%fr1,8(%2)\n"
-- "fstd,ma %%fr2,8(%2)\n"
-- "fstd %%fr3,0(%2)\n"
-- : "=m" (*envp), "=r" (envp) : "1" (envp));
-+ fenv_t *temp = envp;
-+ __asm__ ( "fstd,ma %%fr0,8(%1)\n"
-+ "fstd,ma %%fr1,8(%1)\n"
-+ "fstd,ma %%fr2,8(%1)\n"
-+ "fstd %%fr3,0(%1)\n"
-+ : "=m" (*temp), "+r" (temp)
-+ );
- return 0;
- }
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feholdexcpt.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/feholdexcpt.c 2003-10-22 01:07:38.000000000 -0400
-@@ -25,36 +25,29 @@
- feholdexcept (fenv_t *envp)
- {
- fenv_t clear;
-+ fenv_t * _regs = envp;
-
- /* Store the environment. */
-- {
-- fenv_t * _regs = envp;
-- __asm__ (
-- "fstd %%fr0,0(%2)\n"
-- "fstd,ma %%fr1,8(%2)\n"
-- "fstd,ma %%fr2,8(%2)\n"
-- "fstd %%fr3,0(%2)\n"
-- : "=m" (*_regs), "=r" (_regs) : "1" (_regs));
-- memcpy (&clear, envp, sizeof (clear));
-- }
-+ __asm__ ( "fstd,ma %%fr0,8(%1)\n"
-+ "fstd,ma %%fr1,8(%1)\n"
-+ "fstd,ma %%fr2,8(%1)\n"
-+ "fstd %%fr3,0(%1)\n"
-+ : "=m" (*_regs), "+r" (_regs)
-+ );
-+
-+ memcpy (&clear, envp, sizeof (clear));
-
-- /* Now clear all exceptions. */
-- clear.__status_word &= ~(FE_ALL_EXCEPT << 27);
-+ /* Now clear all exceptions (Enable bits and flags) */
-+ clear.__status_word &= ~((FE_ALL_EXCEPT << 27) | FE_ALL_EXCEPT);
- memset (clear.__exception, 0, sizeof (clear.__exception));
-
-- /* And set all exceptions to non-stop. */
-- clear.__status_word &= ~FE_ALL_EXCEPT;
--
- /* Load the new environment. */
-- {
-- fenv_t * _regs = &clear + 1;
-- __asm__ (
-- "fldd,mb -8(%2),%%fr3\n"
-- "fldd,mb -8(%2),%%fr2\n"
-- "fldd,mb -8(%2),%%fr1\n"
-- "fldd -8(%2),%%fr0\n"
-- : "=m" (*_regs), "=r" (_regs) : "1" (_regs));
-- }
-+ __asm__ ( "fldd,ma -8(%1),%%fr3\n"
-+ "fldd,ma -8(%1),%%fr2\n"
-+ "fldd,ma -8(%1),%%fr1\n"
-+ "fldd 0(%1),%%fr0\n"
-+ : "=m" (*_regs), "+r" (_regs)
-+ );
-
- return 0;
- }
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fesetenv.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/fesetenv.c 2003-10-22 01:07:38.000000000 -0400
-@@ -26,24 +26,23 @@
- fesetenv (const fenv_t *envp)
- {
- fenv_t temp;
-+ fenv_t * _regs = &temp;
-
- /* Install the environment specified by ENVP. But there are a few
- values which we do not want to come from the saved environment.
- Therefore, we get the current environment and replace the values
- we want to use from the environment specified by the parameter. */
-- {
-- fenv_t * _regs = &temp;
-- __asm__ (
-- "fstd %%fr0,0(%2)\n"
-- "fstd,ma %%fr1,8(%2)\n"
-- "fstd,ma %%fr2,8(%2)\n"
-- "fstd %%fr3,0(%2)\n"
-- : "=m" (*_regs), "=r" (_regs) : "1" (_regs));
-- }
-
-- temp.__status_word &= ~(FE_ALL_EXCEPT
-- | (FE_ALL_EXCEPT << 27)
-- | FE_DOWNWARD);
-+ __asm__ ( "fstd,ma %%fr0,8(%1)\n"
-+ "fstd,ma %%fr1,8(%1)\n"
-+ "fstd,ma %%fr2,8(%1)\n"
-+ "fstd %%fr3,0(%1)\n"
-+ : "=m" (*_regs), "+r" (_regs)
-+ );
-+
-+ temp.__status_word &= ~((FE_ALL_EXCEPT << 27)
-+ | FE_DOWNWARD
-+ | FE_ALL_EXCEPT);
- if (envp == FE_DFL_ENV)
- ;
- else if (envp == FE_NOMASK_ENV)
-@@ -55,16 +54,13 @@
- | (FE_ALL_EXCEPT << 27)));
-
- /* Load the new environment. */
-- {
-- fenv_t * _regs = &temp + 1;
-- __asm__ (
-- "fldd,mb -8(%2),%%fr3\n"
-- "fldd,mb -8(%2),%%fr2\n"
-- "fldd,mb -8(%2),%%fr1\n"
-- "fldd -8(%2),%%fr0\n"
-- : "=m" (*_regs), "=r" (_regs) : "1" (_regs));
-- }
--
-+ __asm__ ( "fldd,ma -8(%1),%%fr3\n"
-+ "fldd,ma -8(%1),%%fr2\n"
-+ "fldd,ma -8(%1),%%fr1\n"
-+ "fldd 0(%2),%%fr0\n"
-+ : "=m" (*_regs), "+r" (_regs)
-+ );
-+
- /* Success. */
- return 0;
- }
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/feupdateenv.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/feupdateenv.c 2003-10-22 01:07:38.000000000 -0400
-@@ -27,14 +27,12 @@
-
- /* Get the current exception status. */
- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw));
-- sw[0] &= (FE_ALL_EXCEPT << 27);
--
-+ sw[0] &= FE_ALL_EXCEPT;
-+ envp->__status_word = envp->__status_word | sw[0];
-+
- /* Install new environment. */
- fesetenv (envp);
-
-- /* Raise the saved exception. */
-- feraiseexcept (sw[0] >> 27);
--
- /* Success. */
- return 0;
- }
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fraiseexcpt.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/fraiseexcpt.c 2003-10-22 01:07:38.000000000 -0400
-@@ -22,6 +22,9 @@
- #include <float.h>
- #include <math.h>
-
-+/* Please see section 10,
-+ page 10-5 "Delayed Trapping" in the PA-RISC 2.0 Architecture manual */
-+
- int
- feraiseexcept (int excepts)
- {
-@@ -33,56 +36,64 @@
-
- /* We do these bits in assembly to be certain GCC doesn't optimize
- away something important, and so we can force delayed traps to
-- occur. */
--
-- /* FIXME: These all need verification! */
-+ occur. */
-
-- /* First: invalid exception. */
-+ /* We use "fldd 0(%%sr0,%%sp),%0" to flush the delayed exception */
-+
-+ /* First: Invalid exception. */
- if (excepts & FE_INVALID)
- {
- /* One example of a invalid operation is 0 * Infinity. */
- double d = HUGE_VAL;
-- __asm__ __volatile__ ("fmpy,dbl %1,%%fr0,%0\n\t"
-- /* FIXME: is this a proper trap barrier? */
-- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d));
-+ __asm__ __volatile__ (
-+ " fcpy,dbl %%fr0,%%fr22\n"
-+ " fmpy,dbl %0,%%fr22,%0\n"
-+ " fldd 0(%%sr0,%%sp),%0"
-+ : "+f" (d) : : "%fr22" );
- }
-
-- /* Next: division by zero. */
-+ /* Second: Division by zero. */
- if (excepts & FE_DIVBYZERO)
- {
- double d = 1.0;
-- __asm__ __volatile__ ("fdiv,dbl %1,%%fr0,%0\n\t"
-- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d));
-+ __asm__ __volatile__ (
-+ " fcpy,dbl %%fr0,%%fr22\n"
-+ " fdiv,dbl %0,%%fr22,%0\n"
-+ " fldd 0(%%sr0,%%sp),%0"
-+ : "+f" (d) : : "%fr22" );
- }
-
-- /* Next: overflow. */
-- /* FIXME: Compare with IA-64 - do we have the same problem? */
-+ /* Third: Overflow. */
- if (excepts & FE_OVERFLOW)
- {
- double d = DBL_MAX;
--
-- __asm__ __volatile__ ("fmpy,dbl %1,%1,%0\n\t"
-- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d));
-+ __asm__ __volatile__ (
-+ " fadd,dbl %0,%0,%0\n"
-+ " fldd 0(%%sr0,%%sp),%0"
-+ : "+f" (d) );
- }
-
-- /* Next: underflow. */
-+ /* Fourth: Underflow. */
- if (excepts & FE_UNDERFLOW)
- {
- double d = DBL_MIN;
-- double e = 69.69;
--
-- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t"
-- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e));
-+ double e = 3.0;
-+ __asm__ __volatile__ (
-+ " fdiv,dbl %0,%1,%0\n"
-+ " fldd 0(%%sr0,%%sp),%0"
-+ : "+f" (d) : "f" (e) );
- }
-
-- /* Last: inexact. */
-+ /* Fifth: Inexact */
- if (excepts & FE_INEXACT)
- {
-- double d = 1.0;
-- double e = M_PI;
--
-- __asm__ __volatile__ ("fdiv,dbl %1,%2,%0\n\t"
-- "fcpy,dbl %%fr0,%%fr0" : "=f" (d) : "0" (d), "f" (e));
-+ double d = M_PI;
-+ double e = 69.69;
-+ __asm__ __volatile__ (
-+ " fdiv,dbl %0,%1,%%fr22\n"
-+ " fcnvfxt,dbl,sgl %%fr22,%%fr22L\n"
-+ " fldd 0(%%sr0,%%sp),%%fr22"
-+ : : "f" (d), "f" (e) : "%fr22" );
- }
-
- /* Success. */
---- glibc-2.3.2-orig-debian/sysdeps/hppa/fpu/fsetexcptflg.c 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/fpu/fsetexcptflg.c 2003-10-22 01:07:38.000000000 -0400
-@@ -29,8 +29,7 @@
- /* Get the current status word. */
- __asm__ ("fstd %%fr0,0(%1)" : "=m" (*sw) : "r" (sw));
-
-- /* Install the new exception flags bits. */
-- sw[0] &= ~(excepts & (FE_ALL_EXCEPT >> 27));
-+ /* Clear exception flags, and install new neable trap bits */
- sw[0] |= (*flagp & excepts & FE_ALL_EXCEPT) << 27;
-
- /* Store the new status word. */
---- glibc-2.3.2-orig-debian/sysdeps/hppa/libgcc-compat.c 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/hppa/libgcc-compat.c 2003-10-22 01:07:38.000000000 -0400
-@@ -0,0 +1,43 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Randolph Chung
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+symbol_version (__clz_tab_internal, __clz_tab, GLIBC_2.2);
-+
-+typedef unsigned int UQItype __attribute__ ((mode (QI)));
-+
-+const UQItype __clz_tab_internal[] =
-+{
-+ 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-+ 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+};
-+
-+#endif
---- glibc-2.3.2-orig-debian/sysdeps/hppa/sysdep.h 2003-10-22 01:03:47.000000000 -0400
-+++ glibc-2.3.2/sysdeps/hppa/sysdep.h 2003-10-22 01:07:38.000000000 -0400
-@@ -70,6 +70,7 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#undef JUMPTARGET
- #define JUMPTARGET(name) name
- #define SYSCALL_PIC_SETUP /* Nothing. */
-
---- glibc-2.3.2-orig-debian/sysdeps/posix/getaddrinfo.c 2003-10-22 01:06:12.000000000 -0400
-+++ glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2003-10-22 01:07:38.000000000 -0400
-@@ -53,6 +53,7 @@
- #include <sys/utsname.h>
- #include <net/if.h>
- #include <nsswitch.h>
-+#include <stdbool.h>
-
- #define GAIH_OKIFUNSPEC 0x0100
- #define GAIH_EAI ~(GAIH_OKIFUNSPEC)
---- glibc-2.3.2-orig-debian/sysdeps/unix/Makefile 2003-10-22 01:06:12.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/Makefile 2003-10-22 01:07:38.000000000 -0400
-@@ -295,6 +295,7 @@
- $(..)sysdeps/unix/Makefile
- $(make-target-directory)
- (echo '#include <errno.h>'; \
-+ echo 'extern long int _no_syscall(void);'; \
- echo 'long int _no_syscall (void)'; \
- echo '{ __set_errno (ENOSYS); return -1L; }'; \
- for call in $(unix-stub-syscalls); do \
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/clone.S 2003-10-22 01:03:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/clone.S 2003-10-22 01:07:38.000000000 -0400
-@@ -28,6 +28,8 @@
-
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */
-
-+#warning CAO: __clone needs verification
-+
- .text
- ENTRY(__clone)
- /* FIXME: I have no idea how profiling works on hppa. */
-@@ -42,6 +44,11 @@
- stwm %arg0,64(%arg1)
- stw %arg3,-60(%arg1)
-
-+ /* Save the PIC register. */
-+#ifdef PIC
-+ stw %r19,-32(%sr0, %sp) /* parent */
-+#endif
-+
- /* Do the system call */
- copy %arg2,%arg0
- ble 0x100(%sr2,%r0)
-@@ -53,19 +60,31 @@
-
- comib,=,n 0,%ret0,thread_start
-
-- /* Successful return from the parent */
-+ /* Successful return from the parent
-+ No need to restore the PIC register,
-+ since we return immediately. */
-+
- bv %r0(%rp)
- nop
-
- /* Something bad happened -- no child created */
- .Lerror:
-+
-+ /* Restore the PIC register on error */
-+#ifdef PIC
-+ ldw -32(%sr0, %sp), %r19 /* parent */
-+#endif
-+
- b __syscall_error
- sub %r0,%ret0,%arg0
-
- thread_start:
-+
- /* Load up the arguments. */
-- ldw -60(%sp),%arg0
-- ldw -64(%sp),%r22
-+ ldw -60(%sr0, %sp),%arg0
-+ ldw -64(%sr0, %sp),%r22
-+
-+ /* FIXME: Don't touch the childs PIC register? */
-
- /* Call the user's function */
- bl $$dyncall,%r31
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:03:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/kernel_stat.h 2003-10-22 01:07:38.000000000 -0400
-@@ -1,30 +1,30 @@
--/* definition of "struct stat" from the kernel */
-+/* Definition of 'struct stat' taken from kernel, please keep up to date */
- struct kernel_stat {
-- unsigned long st_dev; /* dev_t is 32 bits on parisc */
-- unsigned long st_ino; /* 32 bits */
-+ unsigned int st_dev; /* dev_t is 32 bits on parisc */
-+ unsigned int st_ino; /* 32 bits */
- unsigned short st_mode; /* 16 bits */
- unsigned short st_nlink; /* 16 bits */
- unsigned short st_reserved1; /* old st_uid */
- unsigned short st_reserved2; /* old st_gid */
-- unsigned long st_rdev;
-- unsigned long st_size;
-+ unsigned int st_rdev;
-+ unsigned int st_size;
- struct timespec st_atim;
-- struct timespec st_mtim;
-- struct timespec st_ctim;
-- long st_blksize;
-- long st_blocks;
-- unsigned long __unused1; /* ACL stuff */
-- unsigned long __unused2; /* network */
-- unsigned long __unused3; /* network */
-- unsigned long __unused4; /* cnodes */
-+ struct timespec st_mtim;
-+ struct timespec st_ctim;
-+ int st_blksize;
-+ int st_blocks;
-+ unsigned int __unused1; /* ACL stuff */
-+ unsigned int __unused2; /* network */
-+ unsigned int __unused3; /* network */
-+ unsigned int __unused4; /* cnodes */
- unsigned short __unused5; /* netsite */
- short st_fstype;
-- unsigned long st_realdev;
-+ unsigned int st_realdev;
- unsigned short st_basemode;
- unsigned short st_spareshort;
-- unsigned long st_uid;
-- unsigned long st_gid;
-- unsigned long st_spare4[3];
-+ unsigned int st_uid;
-+ unsigned int st_gid;
-+ unsigned int st_spare4[3];
- };
-
- #define _HAVE_STAT_NSEC
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:03:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/mmap.c 2003-10-22 01:07:38.000000000 -0400
-@@ -37,7 +37,7 @@
-
- __ptr_t ret;
-
-- ret = INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset);
-+ ret = (__ptr_t)INLINE_SYSCALL(mmap, 6, addr, len, prot, flags, fd, offset);
-
- /* check if it's really a negative number */
- if(((unsigned long)ret & 0xfffff000) == 0xfffff000)
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.c 2003-10-22 01:03:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.c 2003-10-22 01:07:38.000000000 -0400
-@@ -19,6 +19,10 @@
- #include <sysdep.h>
- #include <errno.h>
-
-+extern int __syscall_error(int err_no);
-+extern int syscall (int sysnum, int arg0, int arg1, int arg2,
-+ int arg3, int arg4, int arg5);
-+
- /* This routine is jumped to by all the syscall handlers, to stash
- an error number into errno. */
- int
-@@ -30,25 +34,31 @@
-
-
- /* HPPA implements syscall() in 'C'; the assembler version would
-- typically be in syscall.S. */
--
-+ typically be in syscall.S. Also note that we have INLINE_SYSCALL,
-+ INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers.
-+ How often the function is used is unknown. */
- int
- syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5)
- {
-- long __sys_res;
-- {
-- register unsigned long __res asm("r28");
-- LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
-- asm volatile ("ble 0x100(%%sr2, %%r0)\n\t"
-- "copy %1, %%r20"
-- : "=r" (__res)
-- : "r" (sysnum) ASM_ARGS_6);
-- __sys_res = __res;
-- }
-- if ((unsigned long) __sys_res >= (unsigned long)-4095)
-- {
-- __set_errno(-__sys_res);
-- __sys_res = -1;
-- }
-- return __sys_res;
-+ /* FIXME: Keep this matching INLINE_SYSCALL for hppa */
-+ long __sys_res;
-+ {
-+ register unsigned long __res asm("r28");
-+ LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
-+ asm volatile (
-+ STW_ASM_PIC
-+ " ble 0x100(%%sr2, %%r0) \n"
-+ " copy %1, %%r20 \n"
-+ LDW_ASM_PIC
-+ : "=r" (__res)
-+ : "r" (sysnum) ASM_ARGS_6
-+ : CALL_CLOB_REGS CLOB_ARGS_6
-+ );
-+ __sys_res = __res;
-+ }
-+ if ((unsigned long) __sys_res >= (unsigned long)-4095){
-+ __set_errno(-__sys_res);
-+ __sys_res = -1;
-+ }
-+ return __sys_res;
- }
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-10-22 01:06:12.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-10-22 01:07:38.000000000 -0400
-@@ -31,6 +31,26 @@
- #undef SYS_ify
- #define SYS_ify(syscall_name) (__NR_##syscall_name)
-
-+/* Included for older kernels whose headers
-+ are missing the define */
-+#ifndef __NR_semtimedop
-+# define __NR_semtimedop 228
-+#endif
-+
-+# ifdef PIC
-+/* WARNING: CANNOT BE USED IN A NOP! */
-+# define STW_PIC stw %r19, -32(%sr0, %sp) ASM_LINE_SEP
-+# define LDW_PIC ldw -32(%sr0, %sp), %r19 ASM_LINE_SEP
-+# define STW_ASM_PIC " copy %%r19, %%r4\n"
-+# define LDW_ASM_PIC " copy %%r4, %%r19\n"
-+# define USING_GR4 "%r4",
-+# else
-+# define STW_PIC ASM_LINE_SEP
-+# define LDW_PIC ASM_LINE_SEP
-+# define STW_ASM_PIC " \n"
-+# define LDW_ASM_PIC " \n"
-+# define USING_GR4
-+# endif
-
- #ifdef __ASSEMBLER__
-
-@@ -77,20 +97,13 @@
- .text ASM_LINE_SEP \
- .export C_SYMBOL_NAME(name) ASM_LINE_SEP \
- .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \
-- C_LABEL(name) \
-- CALL_MCOUNT
--
--#define ret \
-- bv 0(2) ASM_LINE_SEP \
-- nop
--
--#define ret_NOERRNO \
-- bv 0(2) ASM_LINE_SEP \
-- nop
-+ C_LABEL(name) ASM_LINE_SEP \
-+ CALL_MCOUNT ASM_LINE_SEP
-
- #undef END
--#define END(name) \
--1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
-+#define END(name) \
-+1: ASM_LINE_SEP \
-+.size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name) ASM_LINE_SEP \
-
- /* If compiled for profiling, call `mcount' at the start of each function. */
- /* No, don't bother. gcc will put the call in for us. */
-@@ -110,27 +123,83 @@
- nop
- */
-
--#define PSEUDO(name, syscall_name, args) \
-- ENTRY (name) \
-- DO_CALL(syscall_name, args) ASM_LINE_SEP \
-- nop
-+#define PSEUDO(name, syscall_name, args) \
-+ ENTRY (name) \
-+ DO_CALL(syscall_name, args) ASM_LINE_SEP \
-+ nop ASM_LINE_SEP
-+
-+#define ret \
-+ /* Return value set by ERRNO code */ ASM_LINE_SEP \
-+ bv 0(2) ASM_LINE_SEP \
-+ nop ASM_LINE_SEP
-
- #undef PSEUDO_END
--#define PSEUDO_END(name) \
-+#define PSEUDO_END(name) \
- END (name)
-
--#define PSEUDO_NOERRNO(name, syscall_name, args) \
-- ENTRY (name) \
-- DO_CALL(syscall_name, args) ASM_LINE_SEP \
-- nop
-+/* We don't set the errno on the return from the syscall */
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY (name) \
-+ DO_CALL_NOERRNO(syscall_name, args) ASM_LINE_SEP \
-+ nop ASM_LINE_SEP
-
-+#define ret_NOERRNO ret
-+
- #undef PSEUDO_END_NOERRNO
--#define PSEUDO_END_NOERRNO(name) \
-+#define PSEUDO_END_NOERRNO(name) \
- END (name)
-
-+/* This has to return the error value */
-+#undef PSEUDO_ERRVAL
-+#define PSEUDO_ERRVAL(name, syscall_name, args) \
-+ ENTRY(name) \
-+ DO_CALL_ERRVAL(syscall_name, args) ASM_LINE_SEP \
-+ nop ASM_LINE_SEP
-+
-+#define ret_ERRVAL ret
-+
-+#undef PSEUDO_END_ERRVAL
-+#define PSEUDO_END_ERRVAL(name) \
-+ END(name)
-+
-+#undef JUMPTARGET
- #define JUMPTARGET(name) name
- #define SYSCALL_PIC_SETUP /* Nothing. */
-
-+
-+/* All the syscall assembly macros rely on finding the approriate
-+ SYSCALL_ERROR_LABEL or rather HANDLER. */
-+
-+/* int * __errno_location(void) so you have to store your value
-+ into the return address! */
-+#define DEFAULT_SYSCALL_ERROR_HANDLER \
-+ .import __errno_location,code ASM_LINE_SEP \
-+ /* branch to errno handler */ ASM_LINE_SEP \
-+ bl __errno_location,%rp ASM_LINE_SEP
-+
-+/* Here are the myriad of configuration options that the above can
-+ work for... what we've done is provide the framework for future
-+ changes if required to each section */
-+
-+#ifdef PIC
-+# if RTLD_PRIVATE_ERRNO
-+# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER
-+# else /* !RTLD_PRIVATE_ERRNO */
-+# if defined _LIBC_REENTRANT
-+# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER
-+# else /* !_LIBC_REENTRANT */
-+# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER
-+# endif /* _LIBC_REENTRANT */
-+# endif /* RTLD_PRIVATE_ERRNO */
-+#else
-+# ifndef _LIBC_REENTRANT
-+# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER
-+# else
-+# define SYSCALL_ERROR_HANDLER DEFAULT_SYSCALL_ERROR_HANDLER
-+# endif
-+#endif
-+
-+
- /* Linux takes system call arguments in registers:
- syscall number gr20
- arg 1 gr26
-@@ -159,25 +228,61 @@
-
- #undef DO_CALL
- #define DO_CALL(syscall_name, args) \
-- DOARGS_##args \
-+ DOARGS_##args ASM_LINE_SEP \
-+ STW_PIC ASM_LINE_SEP \
-+ /* Do syscall, delay loads # */ ASM_LINE_SEP \
- ble 0x100(%sr2,%r0) ASM_LINE_SEP \
- ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \
- ldi -0x1000,%r1 ASM_LINE_SEP \
- cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \
-- stw %rp, -20(%sr0,%r30) ASM_LINE_SEP \
-- stw %ret0, -24(%sr0,%r30) ASM_LINE_SEP \
-- .import __errno_location,code ASM_LINE_SEP \
-- bl __errno_location,%rp ASM_LINE_SEP \
-- ldo 64(%r30), %r30 ASM_LINE_SEP \
-- ldo -64(%r30), %r30 ASM_LINE_SEP \
-- ldw -24(%r30), %r26 ASM_LINE_SEP \
-+ /* save rp or we get lost */ ASM_LINE_SEP \
-+ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \
-+ /* Restore r19 from frame */ ASM_LINE_SEP \
-+ LDW_PIC ASM_LINE_SEP \
-+ stw %ret0, -24(%sr0,%sp) ASM_LINE_SEP \
-+ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \
-+ /* create frame */ ASM_LINE_SEP \
-+ ldo 64(%sp), %sp ASM_LINE_SEP \
-+ ldo -64(%sp), %sp ASM_LINE_SEP \
-+ /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \
-+ /* do a -1*syscall_ret0 */ ASM_LINE_SEP \
-+ ldw -24(%sr0,%sp), %r26 ASM_LINE_SEP \
- sub %r0, %r26, %r26 ASM_LINE_SEP \
-+ /* Store into errno location */ ASM_LINE_SEP \
- stw %r26, 0(%sr0,%ret0) ASM_LINE_SEP \
-+ /* return -1 as error */ ASM_LINE_SEP \
- ldo -1(%r0), %ret0 ASM_LINE_SEP \
-- ldw -20(%r30), %rp ASM_LINE_SEP \
-+ ldw -20(%sr0,%sp), %rp ASM_LINE_SEP \
- 0: ASM_LINE_SEP \
-+ UNDOARGS_##args ASM_LINE_SEP
-+
-+/* We do nothing with the return, except hand it back to someone else */
-+#undef DO_CALL_NOERRNO
-+#define DO_CALL_NOERRNO(syscall_name, args) \
-+ DOARGS_##args \
-+ /* No need to store r19 */ ASM_LINE_SEP \
-+ ble 0x100(%sr2,%r0) ASM_LINE_SEP \
-+ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \
-+ /* Caller will restore r19 */ ASM_LINE_SEP \
- UNDOARGS_##args
-
-+/* Here, we return the ERRVAL in assembly, note we don't call the
-+ error handler function, but we do 'negate' the return _IF_
-+ it's an error. Not sure if this is the right semantic. */
-+
-+#undef DO_CALL_ERRVAL
-+#define DO_CALL_ERRVAL(syscall_name, args) \
-+ DOARGS_##args ASM_LINE_SEP \
-+ /* No need to store r19 */ ASM_LINE_SEP \
-+ ble 0x100(%sr2,%r0) ASM_LINE_SEP \
-+ ldi SYS_ify (syscall_name), %r20 ASM_LINE_SEP \
-+ /* Caller will restore r19 */ ASM_LINE_SEP \
-+ ldi -0x1000,%r1 ASM_LINE_SEP \
-+ cmpb,>>=,n %r1,%ret0,0f ASM_LINE_SEP \
-+ sub %r0, %ret0, %ret0 ASM_LINE_SEP \
-+0: ASM_LINE_SEP \
-+ UNDOARGS_##args ASM_LINE_SEP
-+
- #define DOARGS_0 /* nothing */
- #define DOARGS_1 /* nothing */
- #define DOARGS_2 /* nothing */
-@@ -198,26 +303,87 @@
-
- #else
-
-+/* GCC has to be warned that a syscall may clobber all the ABI
-+ registers listed as "caller-saves", see page 8, Table 2
-+ in section 2.2.6 of the PA-RISC RUN-TIME architecture
-+ document. However! r28 is the result and will conflict with
-+ the clobber list so it is left out. Also the input arguments
-+ registers r20 -> r26 will conflict with the list so they
-+ are treated specially. Although r19 is clobbered by the syscall
-+ we cannot say this because it would violate ABI, thus we say
-+ r4 is clobbered and use that register to save/restore r19
-+ across the syscall. */
-+
-+#define CALL_CLOB_REGS "%r1", "%r2", USING_GR4 \
-+ "%r20", "%r29", "%r31"
-+
- #undef INLINE_SYSCALL
--#define INLINE_SYSCALL(name, nr, args...) ({ \
-+#define INLINE_SYSCALL(name, nr, args...) ({ \
-+ long __sys_res; \
-+ { \
-+ register unsigned long __res asm("r28"); \
-+ LOAD_ARGS_##nr(args) \
-+ /* FIXME: HACK stw/ldw r19 around syscall */ \
-+ asm volatile( \
-+ STW_ASM_PIC \
-+ " ble 0x100(%%sr2, %%r0)\n" \
-+ " ldi %1, %%r20\n" \
-+ LDW_ASM_PIC \
-+ : "=r" (__res) \
-+ : "i" (SYS_ify(name)) ASM_ARGS_##nr \
-+ : CALL_CLOB_REGS CLOB_ARGS_##nr \
-+ ); \
-+ __sys_res = (long)__res; \
-+ } \
-+ if ( (unsigned long)__sys_res >= (unsigned long)-4095 ){ \
-+ __set_errno(-__sys_res); \
-+ __sys_res = -1; \
-+ } \
-+ __sys_res; \
-+})
-+
-+/* INTERNAL_SYSCALL_DECL - Allows us to setup some function static
-+ value to use within the context of the syscall
-+ INTERNAL_SYSCALL_ERROR_P - Returns 0 if it wasn't an error, 1 otherwise
-+ You are allowed to use the syscall result (val) and the DECL error variable
-+ to determine what went wrong.
-+ INTERLAL_SYSCALL_ERRNO - Munges the val/err pair into the error number.
-+ In our case we just flip the sign. */
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-+
-+/* Equivalent to (val < 0)&&(val > -4095) which is what we want */
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) \
-+ ((unsigned long)val >= (unsigned long)-4095)
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
-+
-+/* Similar to INLINE_SYSCALL but we don't set errno */
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+({ \
- long __sys_res; \
- { \
- register unsigned long __res asm("r28"); \
- LOAD_ARGS_##nr(args) \
-+ /* FIXME: HACK stw/ldw r19 around syscall */ \
- asm volatile( \
-- "ble 0x100(%%sr2, %%r0)\n\t" \
-- " ldi %1, %%r20" \
-+ STW_ASM_PIC \
-+ " ble 0x100(%%sr2, %%r0)\n" \
-+ " ldi %1, %%r20\n" \
-+ LDW_ASM_PIC \
- : "=r" (__res) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
-- ); \
-- __sys_res = __res; \
-- } \
-- if ((unsigned long)__sys_res >= (unsigned long)-4095) { \
-- __set_errno(-__sys_res); \
-- __sys_res = -1; \
-+ : CALL_CLOB_REGS CLOB_ARGS_##nr \
-+ ); \
-+ __sys_res = (long)__res; \
- } \
- __sys_res; \
--})
-+ })
-+
-
- #define LOAD_ARGS_0()
- #define LOAD_ARGS_1(r26) \
-@@ -239,12 +405,22 @@
- register unsigned long __r21 __asm__("r21") = (unsigned long)r21; \
- LOAD_ARGS_5(r26,r25,r24,r23,r22)
-
--#define ASM_ARGS_0
--#define ASM_ARGS_1 , "r" (__r26)
--#define ASM_ARGS_2 , "r" (__r26), "r" (__r25)
--#define ASM_ARGS_3 , "r" (__r26), "r" (__r25), "r" (__r24)
--#define ASM_ARGS_4 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23)
--#define ASM_ARGS_5 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22)
--#define ASM_ARGS_6 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22), "r" (__r21)
--
-+/* Even with zero args we use r20 for the syscall number */
-+#define ASM_ARGS_0
-+#define ASM_ARGS_1 ASM_ARGS_0, "r" (__r26)
-+#define ASM_ARGS_2 ASM_ARGS_1, "r" (__r25)
-+#define ASM_ARGS_3 ASM_ARGS_2, "r" (__r24)
-+#define ASM_ARGS_4 ASM_ARGS_3, "r" (__r23)
-+#define ASM_ARGS_5 ASM_ARGS_4, "r" (__r22)
-+#define ASM_ARGS_6 ASM_ARGS_5, "r" (__r21)
-+
-+/* The registers not listed as inputs but clobbered */
-+#define CLOB_ARGS_6
-+#define CLOB_ARGS_5 CLOB_ARGS_6, "%r21"
-+#define CLOB_ARGS_4 CLOB_ARGS_5, "%r22"
-+#define CLOB_ARGS_3 CLOB_ARGS_4, "%r23"
-+#define CLOB_ARGS_2 CLOB_ARGS_3, "%r24"
-+#define CLOB_ARGS_1 CLOB_ARGS_2, "%r25"
-+#define CLOB_ARGS_0 CLOB_ARGS_1, "%r26"
-+
- #endif /* __ASSEMBLER__ */
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:03:48.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/umount.c 2003-10-22 01:07:38.000000000 -0400
-@@ -21,6 +21,7 @@
- does down here. */
-
- extern long int __umount2 (const char *name, int flags);
-+extern long int __umount (const char * name);
-
- long int
- __umount (const char *name)
---- glibc-2.3.2-orig-debian/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-10-22 01:06:13.000000000 -0400
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-10-22 01:07:38.000000000 -0400
-@@ -24,7 +24,9 @@
- #include <stddef.h>
- /* Prevent more kernel headers than necessary to be included. */
- #define _LINUX_KERNEL_H 1
--#define _LINUX_TYPES_H 1
-+#ifndef _LINUX_TYPES_H
-+# define _LINUX_TYPES_H 1
-+#endif
- #define _LINUX_LIST_H 1
- /* We do need this one for the declarations in <linux/sysctl.h>,
- since we've elided the inclusion of <linux/kernel.h> that gets them. */
diff --git a/packages/glibc/glibc-2.3.2/50_glibc232-m68k-dwarf2-buildfix.patch b/packages/glibc/glibc-2.3.2/50_glibc232-m68k-dwarf2-buildfix.patch
deleted file mode 100644
index ba032014de..0000000000
--- a/packages/glibc/glibc-2.3.2/50_glibc232-m68k-dwarf2-buildfix.patch
+++ /dev/null
@@ -1,5 +0,0 @@
---- /dev/null 2003-01-13 18:16:28.000000000 +0900
-+++ sysdeps/m68k/framestate.c 2003-07-16 23:21:34.000000000 +0900
-@@ -0,0 +1,2 @@
-+
-+
diff --git a/packages/glibc/glibc-2.3.2/50_glibc232-mips-buildfix.patch b/packages/glibc/glibc-2.3.2/50_glibc232-mips-buildfix.patch
deleted file mode 100644
index 4841770a2b..0000000000
--- a/packages/glibc/glibc-2.3.2/50_glibc232-mips-buildfix.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- sysdeps/mips/dl-machine.h 22 Mar 2003 12:50:46 -0000 1.68
-+++ sysdeps/mips/dl-machine.h 5 May 2003 08:53:35 -0000
-@@ -534,13 +534,14 @@ static inline void
- #endif
- elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
-- /* We use void* because the location to be relocated
-- is not required to be properly aligned for a
-- ELFW(Addr). */
-- void /* ElfW(Addr) */ *const reloc_addr)
-+ ElfW(Addr) *const reloc_addr)
- {
- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-
-+/* We use void* because the location to be relocated is not required
-+ to be properly aligned for a ELFW(Addr). */
-+ void *const r_addr = reloc_addr;
-+
- #if !defined RTLD_BOOTSTRAP && !defined SHARED
- /* This is defined in rtld.c, but nowhere in the static libc.a;
- make the reference weak so static programs can still link. This
-@@ -565,7 +566,7 @@ elf_machine_rel (struct link_map *map, c
- /* Support relocations on mis-aligned offsets. Should we ever
- implement RELA, this should be replaced with an assignment
- from reloc->r_addend. */
-- __builtin_memcpy (&reloc_value, reloc_addr, sizeof (reloc_value));
-+ __builtin_memcpy (&reloc_value, r_addr, sizeof (reloc_value));
-
- if (symidx)
- {
-@@ -613,7 +614,7 @@ elf_machine_rel (struct link_map *map, c
- #endif
- reloc_value += map->l_addr;
-
-- __builtin_memcpy (reloc_addr, &reloc_value, sizeof (reloc_value));
-+ __builtin_memcpy (r_addr, &reloc_value, sizeof (reloc_value));
- }
- break;
- case R_MIPS_NONE: /* Alright, Wilbur. */
-@@ -640,7 +641,7 @@ elf_machine_rel (struct link_map *map, c
-
- static inline void
- elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- void /* ElfW(Addr) */ *const reloc_addr)
-+ ElfW(Addr) *const reloc_addr)
- {
- /* XXX Nothing to do. There is no relative relocation, right? */
- }
diff --git a/packages/glibc/glibc-2.3.2/80_glibc232-futimes-buildfix.patch b/packages/glibc/glibc-2.3.2/80_glibc232-futimes-buildfix.patch
deleted file mode 100644
index 04d9ff8190..0000000000
--- a/packages/glibc/glibc-2.3.2/80_glibc232-futimes-buildfix.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- sysdeps/unix/sysv/linux/futimes.c 12 Jul 2003 22:50:45 -0000 1.4
-+++ sysdeps/unix/sysv/linux/futimes.c 16 Jul 2003 00:09:41 -0000 1.5
-@@ -19,6 +19,7 @@
-
- #include <errno.h>
- #include <sysdep.h>
-+#include <string.h>
- #include <utime.h>
- #include <sys/time.h>
- #include <stdio-common/_itoa.h>
diff --git a/packages/glibc/glibc-2.3.2/80_glibc232-iconvdata-fix.patch b/packages/glibc/glibc-2.3.2/80_glibc232-iconvdata-fix.patch
deleted file mode 100644
index ed4f9d0133..0000000000
--- a/packages/glibc/glibc-2.3.2/80_glibc232-iconvdata-fix.patch
+++ /dev/null
@@ -1,76 +0,0 @@
---- iconvdata/cp932.c 14 Jul 2003 23:17:31 -0000 1.1
-+++ iconvdata/cp932.c 14 Aug 2003 08:34:48 -0000 1.3
-@@ -1,5 +1,5 @@
- /* Mapping tables for CP932 handling.
-- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
-
-@@ -22,18 +22,6 @@
- #include <stdint.h>
- #include <wchar.h>
-
--static const uint32_t halfkana_to_ucs4[] =
--{
-- 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, 0xff68,
-- 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, 0xff70,
-- 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, 0xff78,
-- 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, 0xff80,
-- 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, 0xff88,
-- 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, 0xff90,
-- 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, 0xff98,
-- 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f
--};
--
- static const uint16_t cjk_block1[703] =
- {
- /* start = 0x8140, end = 0x84be */
-@@ -4559,10 +4547,10 @@
- \
- if (ch < 0x80) \
- ++inptr; \
-- else if (ch >= 0xa1 && ch <= 0xdf) \
-- { \
-- ch = halfkana_to_ucs4[ch - 0xa1]; \
-- ++inptr; \
-+ else if (ch >= 0xa1 && ch <= 0xdf) \
-+ { \
-+ ch += 0xfec0; \
-+ ++inptr; \
- } \
- else if (__builtin_expect (ch, 0) == 0xa0 \
- || __builtin_expect (ch <= 0x80, 0) \
-@@ -4598,11 +4586,14 @@
- ch2 = inptr[1]; \
- idx = ch * 256 + ch2; \
- if (__builtin_expect (ch2 < 0x40, 0) \
-+ || __builtin_expect (ch2 > 0xfc, 0) \
-+ || __builtin_expect (ch2 == 0x7f, 0) \
- || (__builtin_expect (idx > 0x84be, 0) && idx < 0x8740) \
- || (__builtin_expect (idx > 0x879c, 0) && idx < 0x889f) \
- || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \
- || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \
- || (__builtin_expect (idx > 0xeaa4, 0) && idx < 0xed40) \
-+ || (__builtin_expect (idx > 0xeefc, 0) && idx < 0xf040) \
- || __builtin_expect (idx > 0xfc4b, 0)) \
- { \
- /* This is illegal. */ \
-@@ -4693,7 +4684,7 @@
- else if (ch >= 0xf929 && ch <= 0xfa2d) \
- cp = from_ucs4_cjkcpt[ch - 0xf929]; \
- else if (__builtin_expect (ch >= 0xff01, 1) \
-- && __builtin_expect (ch <= 0xffef, 1)) \
-+ && __builtin_expect (ch <= 0xffe5, 1)) \
- cp = from_ucs4_extra[ch - 0xff01]; \
- else \
- { \
-@@ -4708,7 +4699,7 @@
- if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \
- { \
- /* Illegal character. */ \
-- STANDARD_ERR_HANDLER (4); \
-+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
- } \
- else \
- { \
diff --git a/packages/glibc/glibc-2.3.2/80_glibc232-locales-header.patch b/packages/glibc/glibc-2.3.2/80_glibc232-locales-header.patch
deleted file mode 100644
index 17421c26a0..0000000000
--- a/packages/glibc/glibc-2.3.2/80_glibc232-locales-header.patch
+++ /dev/null
@@ -1,43 +0,0 @@
---- localedata/locales/an_ES 26 Jun 2003 07:29:02 -0000 1.2
-+++ localedata/locales/an_ES 25 Aug 2003 08:27:32 -0000 1.3
-@@ -26,10 +26,10 @@
- email "bug-glibc@gnu.org"
- tel ""
- fax ""
--language "an"
--territory "ES"
--revision "1.0"
--date "2003-06-15"
-+language "Aragonese"
-+territory "Spain"
-+revision "1.1"
-+date "2003-08-25"
- %
- category "i18n:1999";LC_IDENTIFICATION
- category "i18n:1999";LC_CTYPE
---- localedata/locales/wa_BE 23 Feb 2002 19:29:34 -0000 1.1
-+++ localedata/locales/wa_BE 25 Aug 2003 18:35:41 -0000 1.2
-@@ -11,8 +11,8 @@
- address ""
- tel ""
- fax ""
--language "wa"
--territory "BE"
-+language "Walloon"
-+territory "Belgium"
- revision "0.7"
- date "2002-02-11"
-
---- localedata/locales/yi_US 3 Aug 2001 08:39:48 -0000 1.1
-+++ localedata/locales/yi_US 25 Aug 2003 18:35:41 -0000 1.2
-@@ -11,8 +11,8 @@
- email "pablo@mandrakesoft.com"
- tel ""
- fax ""
--language "yi"
--territory "US"
-+language "Yiddish"
-+territory "USA"
- revision "0.3"
- date "2001-01-28"
-
diff --git a/packages/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch b/packages/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch
deleted file mode 100644
index 5f36c017c7..0000000000
--- a/packages/glibc/glibc-2.3.2/80_glibc232-locales-nb_NO-fix.patch
+++ /dev/null
@@ -1,112 +0,0 @@
---- /dev/null Thu Jan 1 01:00:00 1970
-+++ localedata/locales/nb_NO Sun Jun 15 15:32:24 2003
-@@ -0,0 +1,98 @@
-+comment_char %
-+escape_char /
-+%
-+% Norwegian Bokm<U00E5>l language locale for Norway.
-+%
-+% Contact: Petter Reinholdtsen
-+% Email: pere@hungry.com
-+% Language: nb
-+% Territory: NO
-+% Revision: 1.0
-+% Date: 2003-05-20
-+% Application: general
-+% Users: general
-+% Charset: ISO-8859-1
-+%
-+% License is GNU GPL.
-+
-+LC_IDENTIFICATION
-+title "Norwegian Bokm<U00E5>l language locale for Norway"
-+source ""
-+address ""
-+contact "GNU libc maintainers"
-+email "bug-glibc@gnu.org"
-+tel ""
-+fax ""
-+language "Norwegian Bokm<U00E5>l"
-+territory "Norway"
-+revision "1.0"
-+date "2003-06-15"
-+%
-+category "nb_NO:2000";LC_IDENTIFICATION
-+category "nb_NO:2000";LC_CTYPE
-+category "nb_NO:2000";LC_COLLATE
-+category "nb_NO:2000";LC_TIME
-+category "nb_NO:2000";LC_NUMERIC
-+category "nb_NO:2000";LC_MONETARY
-+category "nb_NO:2000";LC_MESSAGES
-+category "nb_NO:2000";LC_PAPER
-+category "nb_NO:2000";LC_NAME
-+category "nb_NO:2000";LC_ADDRESS
-+category "nb_NO:2000";LC_TELEPHONE
-+
-+END LC_IDENTIFICATION
-+
-+
-+LC_CTYPE
-+copy "no_NO"
-+END LC_CTYPE
-+
-+
-+LC_COLLATE
-+copy "no_NO"
-+END LC_COLLATE
-+
-+
-+LC_MONETARY
-+copy "no_NO"
-+END LC_MONETARY
-+
-+
-+LC_NUMERIC
-+copy "no_NO"
-+END LC_NUMERIC
-+
-+
-+LC_TIME
-+copy "no_NO"
-+END LC_TIME
-+
-+
-+LC_MESSAGES
-+copy "no_NO"
-+END LC_MESSAGES
-+
-+
-+LC_PAPER
-+copy "no_NO"
-+END LC_PAPER
-+
-+
-+LC_TELEPHONE
-+copy "no_NO"
-+END LC_TELEPHONE
-+
-+
-+LC_MEASUREMENT
-+copy "no_NO"
-+END LC_MEASUREMENT
-+
-+
-+LC_NAME
-+copy "no_NO"
-+END LC_NAME
-+
-+
-+LC_ADDRESS
-+copy "no_NO"
-+END LC_ADDRESS
---- intl/locale.alias.old 2003-10-22 13:41:40.000000000 -0400
-+++ intl/locale.alias 2003-10-22 13:41:54.000000000 -0400
-@@ -58,8 +58,6 @@
- korean.euc ko_KR.eucKR
- ko_KR ko_KR.eucKR
- lithuanian lt_LT.ISO-8859-13
--nb_NO no_NO.ISO-8859-1
--nb_NO.ISO-8859-1 no_NO.ISO-8859-1
- norwegian no_NO.ISO-8859-1
- nynorsk nn_NO.ISO-8859-1
- polish pl_PL.ISO-8859-2
diff --git a/packages/glibc/glibc-2.3.2/80_glibc232-wcsmbs-fix.patch b/packages/glibc/glibc-2.3.2/80_glibc232-wcsmbs-fix.patch
deleted file mode 100644
index 99af552592..0000000000
--- a/packages/glibc/glibc-2.3.2/80_glibc232-wcsmbs-fix.patch
+++ /dev/null
@@ -1,86 +0,0 @@
---- wcsmbs/wcpncpy.c 1 Jun 2003 07:06:26 -0000 1.4
-+++ wcsmbs/wcpncpy.c 22 Jul 2003 19:19:55 -0000 1.5
-@@ -31,8 +31,6 @@
- wint_t c;
- wchar_t *const s = dest;
-
-- --dest;
--
- if (n >= 4)
- {
- size_t n4 = n >> 2;
-@@ -40,19 +38,19 @@
- for (;;)
- {
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- c = *src++;
-- *++dest = c;
-+ *dest++ = c;
- if (c == L'\0')
- break;
- if (--n4 == 0)
---- /dev/null 2003-01-13 18:16:28.000000000 +0900
-+++ wcsmbs/tst-wcpncpy.c 2003-07-23 04:23:43.000000000 +0900
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003.
-+
-+ 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 <wchar.h>
-+
-+
-+int
-+main (void)
-+{
-+ const wchar_t src[] = L"0";
-+ wchar_t dest[10];
-+ wmemset (dest, L'\0', 10);
-+ wcpncpy (dest, src, 2);
-+ return wcscmp (dest, src) != 0;
-+}
---- wcsmbs/Makefile 29 Aug 2002 06:37:43 -0000 1.20
-+++ wcsmbs/Makefile 22 Jul 2003 19:23:54 -0000 1.21
-@@ -1,4 +1,4 @@
--# Copyright (C) 1995-2000, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995-2000, 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
-@@ -40,7 +40,7 @@
- wcsmbsload mbsrtowcs_l
-
- tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
-- tst-wcrtomb
-+ tst-wcrtomb tst-wcpncpy
-
- include ../Rules
-
diff --git a/packages/glibc/glibc-2.3.2/81_glibc232-utimes-fix.patch b/packages/glibc/glibc-2.3.2/81_glibc232-utimes-fix.patch
deleted file mode 100644
index 92cfa27bd5..0000000000
--- a/packages/glibc/glibc-2.3.2/81_glibc232-utimes-fix.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- glibc-2.3.2.orig/sysdeps/posix/utimes.c 2001-07-07 20:21:27.000000000 +0100
-+++ glibc-2.3.2/sysdeps/posix/utimes.c 2003-08-26 16:35:47.000000000 +0100
-@@ -31,8 +31,8 @@ __utimes (const char *file, const struct
- if (tvp)
- {
- times = &buf;
-- times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-- times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
-+ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-+ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
- }
- else
- times = NULL;
---- glibc-2.3.2.orig/sysdeps/unix/sysv/linux/futimes.c 2003-08-26 16:34:20.000000000 +0100
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/futimes.c 2003-08-26 16:35:17.000000000 +0100
-@@ -57,8 +57,8 @@ __futimes (int fd, const struct timeval
- if (tvp != NULL)
- {
- times = &buf;
-- buf.actime = tvp[0].tv_sec + tvp[0].tv_usec >= 500000;
-- buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec >= 500000;
-+ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-+ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
- }
- else
- times = NULL;
---- glibc-2.3.2.orig/sysdeps/unix/sysv/linux/utimes.c 2003-08-26 16:34:21.000000000 +0100
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/utimes.c 2003-08-26 16:35:34.000000000 +0100
-@@ -47,8 +47,8 @@ __utimes (const char *file, const struct
- if (tvp != NULL)
- {
- times = &buf;
-- buf.actime = tvp[0].tv_sec + tvp[0].tv_usec >= 500000;
-- buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec >= 500000;
-+ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
-+ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
- }
- else
- times = NULL;
diff --git a/packages/glibc/glibc-2.3.2/90_glibc232-statvfs.patch b/packages/glibc/glibc-2.3.2/90_glibc232-statvfs.patch
deleted file mode 100644
index 5525f79c30..0000000000
--- a/packages/glibc/glibc-2.3.2/90_glibc232-statvfs.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- sysdeps/unix/sysv/linux/internal_statvfs.c~ 2003-11-03 18:53:20.000000000 -0500
-+++ sysdeps/unix/sysv/linux/internal_statvfs.c 2003-10-28 10:24:47.000000000 -0500
-@@ -17,6 +17,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#include <assert.h>
- #include <errno.h>
- #include <mntent.h>
- #include <paths.h>
-@@ -167,14 +168,17 @@
- statvfs call got a name which was not the mount point.
- Check again, this time without checking for name matches
- first. */
-- if (! success)
-+ if (! success && (name != NULL || fsname != NULL))
- {
- if (name != NULL)
- /* Try without a mount point name. */
- name = NULL;
-- else if (fsname != NULL)
-- /* Try without a filesystem name. */
-- fsname = fsname2 = NULL;
-+ else
-+ {
-+ /* Try without a filesystem name. */
-+ assert (fsname != NULL);
-+ fsname = fsname2 = NULL;
-+ }
-
- /* It is not strictly allowed to use rewind here. But
- this code is part of the implementation so it is
diff --git a/packages/glibc/glibc-2.3.2/90_glibc232-timezones.patch b/packages/glibc/glibc-2.3.2/90_glibc232-timezones.patch
deleted file mode 100644
index a7f6b99831..0000000000
--- a/packages/glibc/glibc-2.3.2/90_glibc232-timezones.patch
+++ /dev/null
@@ -1,1078 +0,0 @@
---- timezone/asia 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/asia 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)asia 7.71
-+# @(#)asia 7.72
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -736,44 +736,19 @@
- 2:20:40 - JMT 1918 # Jerusalem Mean Time?
- 2:00 Zion I%sT
-
--# From Ephraim Silverberg (2002-07-07):
-+# From Ephraim Silverberg (2003-03-23):
- #
--# The Israeli government today adopted a proposal by Minister of Interior
--# Eli Yishai to shorten the period of Daylight Savings Time for the year
--# 2002 (only -- the dates for 2003 and 2004 are, so far, unaffected).
--#
--# The proposed date to Daylight Savings Time is September 13, 2002 instead
--# of the current date: October 7, 2002. The hour of changeover has not
--# yet been decided.
--#
--# (2002-07-10):
--# While today the Knesset passed the initial proposal to reduce DST by
--# some three weeks, a new compromise is being worked out between
--# Minister of Justice Meir Sheetrit and Minister of Interior Eli
--# Yishai to revert to standard time for a period of 48-96 _hours_
--# (sic) around the Yom Kippur fast day (September 15-16) and then go
--# *back* to DST until the end of October. The details of the proposal
--# have yet to be worked out, but the second and final readings of the
--# bill have until July 24 to pass.
--#
--# (2002-07-25):
--# Thanks go to Yitschak Goldberg from E&M for bringing this (Hebrew) article
--# to my attention:
--#
--# http://www.ynet.co.il/articles/0,7340,L-2019315,00.html
--#
--# Hence, the proposal to shorten DST was withdrawn yesterday and the timezone
--# files that have been in effect since July 2000 are still valid for all of
--# 2002.
--#
--# Please note that the article mentions that the Shas MK's intend to
--# bring up their amendment for future years (2003 and beyond). What this
--# means exactly is anyone's guess since there are no set dates yet beyond
--# 2004 and the end day set for 2003 and 2004 is already the 7th of Tishrei
--# (i.e. before the fast of Yom Kippur). The only thing they may want to
--# change is the start date of DST in 2003 from Mar.28.03 (24th of Adar II)
--# to Apr.18.03 (16th of Nisan) so that the Passover Seder will take place
--# during Standard Time. The start date for 2004 is already Nisan 16th.
-+# Minister of Interior Poraz has announced that he will respect the law
-+# passed in July 2000 (proposed at the time jointly by himself and
-+# then-MK David Azulai [Shas]) fixing the dates for 2000-2004. Hence,
-+# the dates for 2003 and 2004 remain unchanged....
-+#
-+# As far as 2005 and beyond, no dates have been set. However, the
-+# minister has mentioned that he wishes to propose to move Israel's
-+# timezone in 2005 from GMT+2 to GMT+3 and upon that have DST during
-+# the summer months (i.e. GMT+4). However, no legislation in this
-+# direction is expected until the latter part of 2004 which is a long
-+# time off in terms of Israeli politics.
-
-
-
-@@ -926,7 +901,7 @@
- 6:00 - SHET 1982 Apr 1
- 5:00 RussiaAsia SHE%sT 1991
- 5:00 - SHET 1991 Dec 16 # independence
-- 5:00 RussiaAsia AQT%sT 1995 Sep lastSun # Aqtau Time
-+ 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time
- 4:00 RussiaAsia AQT%sT
- # West Kazakhstan
- Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
---- timezone/australasia 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/australasia 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)australasia 7.68
-+# @(#)australasia 7.69
- # This file also includes Pacific islands.
-
- # Notes are at the end of this file
-@@ -297,45 +297,37 @@
- ###############################################################################
-
- # New Zealand
--#
--# From Paul Eggert (2002-10-23):
--# The Department of Internal Affairs (DIA) maintains a brief history;
--# see tz-link.htm for the full reference.
--#
--# Shanks gives 1868 for the introduction of standard time; go with the
--# DIA's more-precise 1868-11-02. The DIA says that clocks were
--# advanced by half an hour in 1941; go with Shanks's more-precise
--# 1940-09-29 02:00. The DIA says that starting in 1933 DST began the
--# first Sunday in September; go with Shanks's last Sunday starting in
--# 1934.
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--# Shanks gives 1927 Nov 6 - 1928 Mar 4, 1928 Oct 14 - 1929 Mar 17,
--# 1929 Oct 13 - 1930 Mar 16; go with Whitman.
--Rule NZ 1927 only - Nov 26 2:00 0:30 HD
--Rule NZ 1928 1929 - Mar Sun>=1 2:00 0 S
--Rule NZ 1928 only - Nov 4 2:00 0:30 HD
--Rule NZ 1929 only - Oct 30 2:00 0:30 HD
--Rule NZ 1930 1933 - Mar Sun>=15 2:00 0 S
--Rule NZ 1930 1933 - Oct Sun>=8 2:00 0:30 HD
--# Whitman says DST went on and off during war years, and the base UT offset
--# didn't change until 1945 Apr 30; go with Shanks.
--Rule NZ 1934 1940 - Apr lastSun 2:00 0 S
--Rule NZ 1934 1939 - Sep lastSun 2:00 0:30 HD
-+Rule NZ 1927 only - Nov 6 2:00 1:00 S
-+Rule NZ 1928 only - Mar 4 2:00 0 M
-+Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
-+Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M
-+Rule NZ 1934 1940 - Apr lastSun 2:00 0 M
-+Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S
-+Rule NZ 1946 only - Jan 1 0:00 0 S
-+# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
-+# convenient notation for this so we must duplicate the Rule lines.
- Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
-+Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D
- Rule NZ 1975 only - Feb lastSun 2:00s 0 S
-+Rule Chatham 1975 only - Feb lastSun 2:45s 0 S
- Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
-+Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D
- Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
-+Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S
- Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
-+Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D
- Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
--Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
- Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
--Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
-+Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
-+Rule Chatham 1990 max - Mar Sun>=15 2:45s 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
-- 11:30 NZ NZ%sT 1940 Sep 29 2:00
-+ 11:30 NZ NZ%sT 1946 Jan 1
- 12:00 NZ NZ%sT
--Zone Pacific/Chatham 12:45 Chatham CHA%sT
-+Zone Pacific/Chatham 12:13:48 - LMT 1957 Jan 1
-+ 12:45 Chatham CHA%sT
-
-
- # Auckland Is
-@@ -443,6 +435,8 @@
-
- # Midway
- Zone Pacific/Midway -11:49:28 - LMT 1901
-+ -11:00 - NST 1956 Jun 3
-+ -11:00 1:00 NDT 1956 Sep 2
- -11:00 - NST 1967 Apr # N=Nome
- -11:00 - BST 1983 Nov 30 # B=Bering
- -11:00 - SST # S=Samoa
-@@ -513,7 +507,8 @@
- # 10:00 EST EST Eastern Australia
- # 10:00 ChST Chamorro
- # 10:30 LHST LHST Lord Howe*
--# 12:00 NZST NZDT New Zealand
-+# 11:30 NZMT NZST New Zealand through 1945
-+# 12:00 NZST NZDT New Zealand 1946-present
- # 12:45 CHAST CHADT Chatham*
- # -11:00 SST Samoa
- # -10:00 HST Hawaii
-@@ -1067,11 +1062,14 @@
- # time on both the first Sunday in October and the third Sunday in March.
- # As with Australia, we'll assume the tradition is 2:00s, not 2:00.
- #
--# From Paul Eggert (1999-10-29):
--# Shanks gives no time data for Chatham; usno1989 says it's +12:45,
--# usno1995 says it's +12:45/+13:45, and IATA SSIM (1991/1999)
--# gives the NZ rules but with transitions at 2:45 local standard time.
--# Guess that they have been in lock-step with NZ since 1990.
-+# From Paul Eggert (2003-05-26):
-+# The Department of Internal Affairs (DIA) maintains a brief history,
-+# as does Carol Squires; see tz-link.htm for the full references.
-+# Use these sources in preference to Shanks.
-+#
-+# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
-+# transitions at 2:45 local standard time; this confirms that Chatham
-+# is always exactly 45 minutes ahead of Auckland.
-
- ###############################################################################
-
-@@ -1154,6 +1152,23 @@
- # We don't know when Kosrae switched from UTC+12; assume January 1 for now.
-
-
-+# Midway
-+
-+# From Charles T O'Connor, KMTH DJ (1956),
-+# quoted in the KTMH section of the Radio Heritage Collection
-+# <http://radiodx.com/spdxr/KMTH.htm> (2002-12-31):
-+# For the past two months we've been on what is known as Daylight
-+# Saving Time. This time has put us on air at 5am in the morning,
-+# your time down there in New Zealand. Starting September 2, 1956
-+# we'll again go back to Standard Time. This'll mean that we'll go to
-+# air at 6am your time.
-+#
-+# From Paul Eggert (2003-03-23):
-+# We don't know the date of that quote, but we'll guess they
-+# started DST on June 3. Possibly DST was observed other years
-+# in Midway, but we have no record of it.
-+
-+
- # Pitcairn
-
- # From Rives McDow (1999-11-08):
-@@ -1277,6 +1292,24 @@
- # From Pulu 'Anau (2002-11-05):
- # The law was for 3 years, supposedly to get renewed. It wasn't.
-
-+
-+# Wake
-+
-+# From Vernice Anderson, Personal Secretary to Philip Jessup,
-+# US Ambassador At Large (oral history interview, 1971-02-02):
-+#
-+# Saturday, the 14th [of October, 1950] -- ... The time was all the
-+# more confusing at that point, because we had crossed the
-+# International Date Line, thus getting two Sundays. Furthermore, we
-+# discovered that Wake Island had two hours of daylight saving time
-+# making calculation of time in Washington difficult if not almost
-+# impossible.
-+#
-+# http://www.trumanlibrary.org/wake/meeting.htm
-+
-+# From Paul Eggert (2003-03-23):
-+# We have no other report of DST in Wake Island, so omit this info for now.
-+
- ###############################################################################
-
- # The International Date Line
---- timezone/backward 2002-04-05 22:40:00.000000000 -0500
-+++ timezone/backward 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)backward 7.23
-+# @(#)backward 7.24
-
- # This file provides links between current names for time zones
- # and their old names. Many names changed in late 1993.
-@@ -36,7 +36,7 @@
- Link America/Halifax Canada/Atlantic
- Link America/Winnipeg Canada/Central
- Link America/Regina Canada/East-Saskatchewan
--Link America/Montreal Canada/Eastern
-+Link America/Toronto Canada/Eastern
- Link America/Edmonton Canada/Mountain
- Link America/St_Johns Canada/Newfoundland
- Link America/Vancouver Canada/Pacific
---- timezone/europe 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/europe 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)europe 7.83
-+# @(#)europe 7.84
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -24,6 +24,10 @@
- # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
- # which I found in the UCLA library.
- #
-+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
-+# William Willett, The Waste of Daylight, 19th edition
-+# </a> (1914-03)
-+#
- # Brazil's Departamento Servico da Hora (DSH),
- # <a href="http://pcdsh01.on.br/HISTHV.htm">
- # History of Summer Time
-@@ -125,7 +129,7 @@
- # transition date for London, namely 1847-12-01. We don't know as much
- # about Dublin, so we use 1880-08-02, the legal transition time.
-
--# From Paul Eggert (1999-01-30):
-+# From Paul Eggert (2003-07-29):
- # Summer Time was first seriously proposed by William Willett (1857-1915),
- # a London builder and member of the Royal Astronomical Society
- # who circulated a pamphlet ``The Waste of Daylight'' (1907)
-@@ -133,14 +137,24 @@
- # and retarding them by the same amount on four Sundays in September.
- # A bill was drafted in 1909 and introduced in Parliament several times,
- # but it met with ridicule and opposition, especially from farming interests.
--# One-hour Summer Time was eventually adopted as a wartime measure in 1916.
--# See:
--# <a href="http://www.the-times.co.uk/news/pages/tim/2000/05/18/x-timcrtcrt01011.html">
--# Summer Time Arrives Early, The Times (2000-05-18)
--# </a>
--# A monument was erected in 1927 to Willett, in an open space in a 45-acre wood
--# near Chiselhurst, Kent that was purchased by popular subscription and open
--# to the public.
-+# Later editions of the pamphlet proposed one-hour summer time, and
-+# it was eventually adopted as a wartime measure in 1916.
-+# See: Summer Time Arrives Early, The Times (2000-05-18).
-+# A monument to Willett was unveiled on 1927-05-21, in an open space in
-+# a 45-acre wood near Chiselhurst, Kent that was purchased by popular
-+# subscription and open to the public. On the south face of the monolith,
-+# designed by G. W. Miller, is the the William Willett Memorial Sundial,
-+# which is permanently set to Summer Time.
-+
-+# From Winston Churchill (1934-04-28):
-+# It is one of the paradoxes of history that we should owe the boon of
-+# summer time, which gives every year to the people of this country
-+# between 160 and 170 hours more daylight leisure, to a war which
-+# plunged Europe into darkness for four years, and shook the
-+# foundations of civilization throughout the world.
-+# -- <a href="http://www.winstonchurchill.org/fh114willett.htm">
-+# "A Silent Toast to William Willett", Pictorial Weekly
-+# </a>
-
- # From Paul Eggert (1996-09-03):
- # The OED Supplement says that the English originally said ``Daylight Saving''
-@@ -1323,7 +1337,7 @@
- 2:00 1:00 EEST 1989 Sep lastSun 2:00s
- 2:00 Latvia EE%sT 1997 Jan 21
- 2:00 EU EE%sT 2000 Feb 29
-- 2:00 - EET 2001
-+ 2:00 - EET 2001 Jan 2
- 2:00 EU EE%sT
-
- # Liechtenstein
-@@ -1750,8 +1764,10 @@
- Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
- Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
-+# Shanks says that the transition from LMT to WET occurred 1911-05-24;
-+# Willett says 1912-01-01. Go with Willett.
- Zone Europe/Lisbon -0:36:32 - LMT 1884
-- -0:36:32 - LMT 1911 May 24 # Lisbon Mean Time
-+ -0:36:32 - LMT 1912 Jan 1 # Lisbon Mean Time
- 0:00 Port WE%sT 1966 Apr 3 2:00
- 1:00 - CET 1976 Sep 26 1:00
- 0:00 Port WE%sT 1983 Sep 25 1:00s
---- timezone/iso3166.tab 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/iso3166.tab 2003-10-06 13:46:22.000000000 -0400
-@@ -6,7 +6,7 @@
- #
- # This file contains a table with the following columns:
- # 1. ISO 3166-1 alpha-2 country code, current as of
--# ISO 3166-1 Newsletter No. V-7 (2003-01-14). See:
-+# ISO 3166-1 Newsletter No. V-8 (2003-07-23). See:
- # <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
- # ISO 3166 Maintenance agency (ISO 3166/MA)
- # </a>.
-@@ -69,6 +69,7 @@
- CN China
- CO Colombia
- CR Costa Rica
-+CS Serbia and Montenegro
- CU Cuba
- CV Cape Verde
- CX Christmas Island
-@@ -256,7 +257,6 @@
- WS Samoa (Western)
- YE Yemen
- YT Mayotte
--YU Serbia and Montenegro
- ZA South Africa
- ZM Zambia
- ZW Zimbabwe
---- timezone/leapseconds 2002-01-28 23:18:04.000000000 -0500
-+++ timezone/leapseconds 2003-09-22 15:50:51.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)leapseconds 7.15
-+# @(#)leapseconds 7.16
-
- # Allowance for leapseconds added to each timezone file.
-
-@@ -44,8 +44,8 @@
- Leap 1997 Jun 30 23:59:60 + S
- Leap 1998 Dec 31 23:59:60 + S
-
--# INTERNATIONAL EARTH ROTATION SERVICE (IERS)
--# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE
-+# INTERNATIONAL EARTH ROTATION SERVICE (IERS)
-+# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE
- #
- # SERVICE DE LA ROTATION TERRESTRE
- # OBSERVATOIRE DE PARIS
-@@ -54,27 +54,26 @@
- # FAX : 33 (0) 1 40 51 22 91
- # Internet : iers@obspm.fr
- #
--# Paris, 14 January 2002
-+# Paris, 1 July 2003
- #
--# Bulletin C 23
-+# Bulletin C 26
- #
--# To authorities responsible
--# for the measurement and
--# distribution of time
-+# To authorities responsible
-+# for the measurement and
-+# distribution of time
- #
--# INFORMATION ON UTC - TAI
-+# INFORMATION ON UTC - TAI
- #
--# NO positive leap second will be introduced at the end of June 2002.
--# The difference between UTC and the International Atomic Time TAI is :
-+# NO positive leap second will be introduced at the end of December 2003.
-+# The difference between UTC and the International Atomic Time TAI is:
- #
--# from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s
-+# from 1999 January 1, 0h UTC, until further notice: UTC-TAI = -32 s
- #
- # Leap seconds can be introduced in UTC at the end of the months of December
--# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
-+# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
- # six months, either to announce a time step in UTC, or to confirm that there
- # will be no time step at the next possible date.
- #
--# Daniel GAMBIS
--# Director
--# Earth Orientation Center of IERS
--# Observatoire de Paris, France
-+# Daniel GAMBIS
-+# Director
-+# Earth Orientation Center of IERS
---- timezone/northamerica 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/northamerica 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)northamerica 7.62
-+# @(#)northamerica 7.63
- # also includes Central America and the Caribbean
-
- # This data is by no means authoritative; if you think you know better,
-@@ -685,9 +685,15 @@
- # Except where otherwise noted, Shanks is the source for entries through 1990,
- # and IATA SSIM is the source for entries after 1990.
- #
--# Another source occasionally used is Edward W. Whitman, World Time Differences,
--# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
--# I found in the UCLA library.
-+# Other sources occasionally used include:
-+#
-+# Edward W. Whitman, World Time Differences,
-+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
-+# which I found in the UCLA library.
-+#
-+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
-+# William Willett, The Waste of Daylight, 19th edition
-+# </a> (1914-03)
- #
- # See the `europe' file for Greenland.
-
-@@ -743,7 +749,8 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Canada 1918 only - Apr 14 2:00 1:00 D
- Rule Canada 1918 only - Oct 31 2:00 0 S
--Rule Canada 1942 only - Feb 9 2:00 1:00 W
-+Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
-+Rule Canada 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule Canada 1945 only - Sep 30 2:00 0 S
- Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
- Rule Canada 1974 max - Oct lastSun 2:00 0 S
-@@ -759,27 +766,20 @@
- # but excluding, say, Black Tickle.
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--Rule StJohns 1917 1918 - Apr Sun>=8 2:00 1:00 D
-+Rule StJohns 1917 only - Apr 8 2:00 1:00 D
- Rule StJohns 1917 only - Sep 17 2:00 0 S
--Rule StJohns 1918 only - Oct 31 2:00 0 S
- # Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks.
- Rule StJohns 1919 only - May 5 23:00 1:00 D
- Rule StJohns 1919 only - Aug 12 23:00 0 S
- # For 1931-1935 Whitman gives Apr same date; go with Shanks.
- Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D
- Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S
--# For 1936-1941 Shanks gives May Mon>=9 and Oct Mon>=2; go with Whitman.
--Rule StJohns 1936 1941 - May Sun>=8 0:00 1:00 D
--Rule StJohns 1936 1941 - Oct Sun>=1 0:00 0 S
--# Shanks gives 1942 May 11 - 1945 Sep 30; go with Whitman.
--Rule StJohns 1942 only - Mar 1 0:00 1:00 W
--Rule StJohns 1942 only - Dec 31 0:00 0 S
--Rule StJohns 1943 only - May 30 0:00 1:00 W
--Rule StJohns 1943 only - Sep 5 0:00 0 S
--Rule StJohns 1944 only - Jul 10 0:00 1:00 W
--Rule StJohns 1944 only - Sep 2 0:00 0 S
--Rule StJohns 1945 only - Jan 1 0:00 1:00 W
--Rule StJohns 1945 only - Oct 7 2:00 0 S
-+# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks.
-+Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D
-+Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S
-+# Whitman gives the following transitions:
-+# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
-+# but go with Shanks and assume they used Canadian rules.
- # For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
- # Apr 30 - Sep 24; go with Shanks.
- Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D
-@@ -797,18 +797,24 @@
- # St John's has an apostrophe, but Posix file names can't have apostrophes.
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/St_Johns -3:30:52 - LMT 1884
-+ -3:30:52 StJohns N%sT 1918
-+ -3:30:52 Canada N%sT 1919
- -3:30:52 StJohns N%sT 1935 Mar 30
-+ -3:30 StJohns N%sT 1942 May 11
-+ -3:30 Canada N%sT 1946
- -3:30 StJohns N%sT
-
--
- # most of east Labrador
-
- # The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
-- -3:30:52 StJohns NST 1919
-+ -3:30:52 - NST 1918
-+ -3:30:52 Canada N%sT 1919
- -3:30:52 - NST 1935 Mar 30
- -3:30 - NST 1936
-+ -3:30 StJohns N%sT 1942 May 11
-+ -3:30 Canada N%sT 1946
- -3:30 StJohns N%sT 1966 Mar 15 2:00
- -4:00 StJohns A%sT
-
-@@ -830,8 +836,6 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Halifax 1916 only - Apr 1 0:00 1:00 D
- Rule Halifax 1916 only - Oct 1 0:00 0 S
--Rule Halifax 1918 only - Apr 14 2:00 1:00 D
--Rule Halifax 1918 only - Oct 31 2:00 0 S
- Rule Halifax 1920 only - May 9 0:00 1:00 D
- Rule Halifax 1920 only - Aug 29 0:00 0 S
- Rule Halifax 1921 only - May 6 0:00 1:00 D
-@@ -850,6 +854,7 @@
- Rule Halifax 1929 only - Sep 3 0:00 0 S
- Rule Halifax 1930 only - Sep 15 0:00 0 S
- Rule Halifax 1931 1932 - Sep Mon>=24 0:00 0 S
-+Rule Halifax 1932 only - May 1 0:00 1:00 D
- Rule Halifax 1933 only - Apr 30 0:00 1:00 D
- Rule Halifax 1933 only - Oct 2 0:00 0 S
- Rule Halifax 1934 only - May 20 0:00 1:00 D
-@@ -862,33 +867,55 @@
- Rule Halifax 1937 1941 - Sep Mon>=24 0:00 0 S
- Rule Halifax 1939 only - May 28 0:00 1:00 D
- Rule Halifax 1940 1941 - May Sun>=1 0:00 1:00 D
--Rule Halifax 1942 only - Feb 9 2:00 1:00 W
--Rule Halifax 1945 1959 - Sep lastSun 2:00 0 S
--Rule Halifax 1946 1959 - Apr lastSun 2:00 1:00 D
--Rule Halifax 1962 1986 - Apr lastSun 2:00 1:00 D
--Rule Halifax 1962 max - Oct lastSun 2:00 0 S
--Rule Halifax 1987 max - Apr Sun>=1 2:00 1:00 D
-+Rule Halifax 1946 1949 - Sep lastSun 2:00 0 S
-+Rule Halifax 1946 1949 - Apr lastSun 2:00 1:00 D
-+Rule Halifax 1951 1954 - Sep lastSun 2:00 0 S
-+Rule Halifax 1951 1954 - Apr lastSun 2:00 1:00 D
-+Rule Halifax 1956 1959 - Sep lastSun 2:00 0 S
-+Rule Halifax 1956 1959 - Apr lastSun 2:00 1:00 D
-+Rule Halifax 1962 1973 - Apr lastSun 2:00 1:00 D
-+Rule Halifax 1962 1973 - Oct lastSun 2:00 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/Halifax -4:14:24 - LMT 1902 Jun 15
-- -4:00 Halifax A%sT
-+ -4:00 Halifax A%sT 1918
-+ -4:00 Canada A%sT 1919
-+ -4:00 Halifax A%sT 1942 Feb 9 2:00s
-+ -4:00 Canada A%sT 1946
-+ -4:00 Halifax A%sT 1974
-+ -4:00 Canada A%sT
- Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
- -4:00 Canada A%sT 1953
- -4:00 Halifax A%sT 1954
- -4:00 - AST 1972
-- -4:00 Halifax A%sT
-+ -4:00 Halifax A%sT 1974
-+ -4:00 Canada A%sT
-
-
- # Ontario, Quebec
-
- # From Paul Eggert (1996-06-12):
--# Shanks writes that since 1970 most of this region has been like Montreal.
-+# Shanks writes that since 1970 most of Ontario has been like Toronto,
-+# and most of Quebec has been like Montreal.
- # Thunder Bay skipped DST in 1973.
- # Many smaller locales did not observe peacetime DST until 1974;
- # Nipigon (EST) and Rainy River (CST) are the largest that we know of.
- # Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
-
-+# From Mark Brader (2003-07-26):
-+# [According to the Toronto Star] Orillia, Ontario, adopted DST
-+# effective Saturday, 1912-06-22, 22:00; the article mentions that
-+# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
-+# have already done so. In Orillia DST was to run until Saturday,
-+# 1912-08-31 (no time mentioned), but it was met with considerable
-+# hostility from certain segments of the public, and was revoked after
-+# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
-+# presumably that should be -07-06. (1912-06-19, -07-12; also letters
-+# earlier in June).
-+#
-+# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
-+
- # From Paul Eggert (1997-10-17):
--# msb@sq.com writes that an article in the 1997-10-14 Toronto Star
-+# Mark Brader writes that an article in the 1997-10-14 Toronto Star
- # says that Atikokan, Ontario currently does not observe DST,
- # but will vote on 11-10 whether to use EST/EDT.
- # He also writes that the
-@@ -915,43 +942,99 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Mont 1917 only - Mar 25 2:00 1:00 D
- Rule Mont 1917 only - Apr 24 0:00 0 S
--Rule Mont 1918 only - Apr 14 2:00 1:00 D
--Rule Mont 1918 only - Oct 31 2:00 0 S
- Rule Mont 1919 only - Mar 31 2:30 1:00 D
- Rule Mont 1919 only - Oct 25 2:30 0 S
- Rule Mont 1920 only - May 2 2:30 1:00 D
--Rule Mont 1920 only - Oct 3 2:30 0 S
-+Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S
- Rule Mont 1921 only - May 1 2:00 1:00 D
--Rule Mont 1921 only - Oct 2 2:30 0 S
- Rule Mont 1922 only - Apr 30 2:00 1:00 D
--Rule Mont 1922 only - Oct 1 2:30 0 S
- Rule Mont 1924 only - May 17 2:00 1:00 D
- Rule Mont 1924 1926 - Sep lastSun 2:30 0 S
- Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D
--Rule Mont 1927 only - May 1 0:00 1:00 D
--Rule Mont 1927 1932 - Sep Sun>=25 0:00 0 S
--Rule Mont 1928 1931 - Apr Sun>=25 0:00 1:00 D
--Rule Mont 1932 only - May 1 0:00 1:00 D
--Rule Mont 1933 1940 - Apr Sun>=24 0:00 1:00 D
--Rule Mont 1933 only - Oct 1 0:00 0 S
--Rule Mont 1934 1939 - Sep Sun>=24 0:00 0 S
-+Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D
-+Rule Mont 1927 1937 - Sep lastSat 24:00 0 S
-+Rule Mont 1938 1940 - Apr lastSun 0:00 1:00 D
-+Rule Mont 1938 1939 - Sep lastSun 0:00 0 S
-+Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D
- Rule Mont 1945 1948 - Sep lastSun 2:00 0 S
--Rule Mont 1946 1986 - Apr lastSun 2:00 1:00 D
- Rule Mont 1949 1950 - Oct lastSun 2:00 0 S
- Rule Mont 1951 1956 - Sep lastSun 2:00 0 S
--Rule Mont 1957 max - Oct lastSun 2:00 0 S
--Rule Mont 1987 max - Apr Sun>=1 2:00 1:00 D
-+Rule Mont 1957 1973 - Oct lastSun 2:00 0 S
-+
-+Rule Toronto 1919 only - Mar 30 23:30 1:00 D
-+Rule Toronto 1919 only - Oct 26 0:00 0 S
-+Rule Toronto 1920 only - May 2 2:00 1:00 D
-+Rule Toronto 1920 only - Sep 26 0:00 0 S
-+Rule Toronto 1921 only - May 15 2:00 1:00 D
-+Rule Toronto 1921 only - Sep 15 2:00 0 S
-+Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D
-+# Shanks says 1923-09-19; assume it's a typo and that "-16" was meant.
-+Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S
-+Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D
-+Rule Toronto 1927 1928 - Sep lastSun 2:00 0 S
-+Rule Toronto 1928 only - Apr lastSun 2:00 1:00 D
-+Rule Toronto 1929 only - Apr lastSun 0:00 1:00 D
-+Rule Toronto 1929 only - Sep lastSun 0:00 0 S
-+Rule Toronto 1930 1937 - Apr lastSat 24:00 1:00 D
-+Rule Toronto 1930 1937 - Sep lastSat 24:00 0 S
-+Rule Toronto 1938 1940 - Apr lastSun 0:00 1:00 D
-+Rule Toronto 1938 1939 - Sep lastSun 0:00 0 S
-+Rule Toronto 1945 1946 - Sep lastSun 2:00 0 S
-+Rule Toronto 1946 only - Apr lastSun 2:00 1:00 D
-+Rule Toronto 1947 1949 - Apr lastSun 0:00 1:00 D
-+Rule Toronto 1947 1948 - Sep lastSun 0:00 0 S
-+Rule Toronto 1949 only - Nov lastSun 0:00 0 S
-+Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D
-+Rule Toronto 1950 only - Nov lastSun 2:00 0 S
-+Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S
-+# Shanks says Toronto ended DST a week early in 1971, namely on 1971-10-24,
-+# but Mark Brader wrote (2003-05-31) that he checked the 1971-10-30 issue
-+# of the Toronto Star, and it said that DST ended 1971-10-31 as usual.
-+Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S
-+
-+# From Paul Eggert (2003-07-27):
-+# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
-+# Port Arthur, Ontario, the principle of the Bill has been in
-+# operation for the past three years, and in the City of Moose Jaw,
-+# Saskatchewan, for one year." Assume that the Thunder Bay region
-+# observed DST starting 1910, and Moose Jaw starting 1912, as this
-+# matches the Toronto Star report about Moose Jaw. For lack of better
-+# info, assume the Thunder Bay region used Willett's proposal, namely
-+# third Sunday in April at 02:00 to third Sunday in September at
-+# 03:00; also assume that they continued until Canada instituted
-+# uniform DST in 1918.
-+Rule Thunder 1910 1917 - Apr Sun>=15 2:00s 1:00 D
-+Rule Thunder 1910 1917 - Sep Sun>=15 2:00s 0 S
-+
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/Montreal -4:54:16 - LMT 1884
-- -5:00 Mont E%sT
-+ -5:00 Mont E%sT 1918
-+ -5:00 Canada E%sT 1919
-+ -5:00 Mont E%sT 1942 Feb 9 2:00s
-+ -5:00 Canada E%sT 1946
-+ -5:00 Mont E%sT 1974
-+ -5:00 Canada E%sT
-+Zone America/Toronto -5:17:32 - LMT 1895
-+ -5:00 Canada E%sT 1919
-+ -5:00 Toronto E%sT 1942 Feb 9 2:00s
-+ -5:00 Canada E%sT 1946
-+ -5:00 Toronto E%sT 1974
-+ -5:00 Canada E%sT
- Zone America/Thunder_Bay -5:57:00 - LMT 1895
-+ -5:00 Thunder E%sT 1918
-+ -5:00 Canada E%sT 1940 Sep 29
-+ -5:00 1:00 EDT 1942 Feb 9 2:00s
- -5:00 Canada E%sT 1970
- -5:00 Mont E%sT 1973
- -5:00 - EST 1974
- -5:00 Canada E%sT
- Zone America/Nipigon -5:53:04 - LMT 1895
-+ -5:00 Canada E%sT 1940 Sep 29
-+ -5:00 1:00 EDT 1942 Feb 9 2:00s
- -5:00 Canada E%sT
- Zone America/Rainy_River -6:17:56 - LMT 1895
-+ -6:00 Canada C%sT 1940 Sep 29
-+ -6:00 1:00 CDT 1942 Feb 9 2:00s
- -6:00 Canada C%sT
-
-
-@@ -964,7 +1047,8 @@
- Rule Winn 1918 only - Oct 31 2:00 0 S
- Rule Winn 1937 only - May 16 2:00 1:00 D
- Rule Winn 1937 only - Sep 26 2:00 0 S
--Rule Winn 1942 only - Feb 9 2:00 1:00 W
-+Rule Winn 1942 only - Feb 9 2:00 1:00 W # War
-+Rule Winn 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule Winn 1945 only - Sep lastSun 2:00 0 S
- Rule Winn 1946 only - May 12 2:00 1:00 D
- Rule Winn 1946 only - Oct 13 2:00 0 S
-@@ -992,6 +1076,20 @@
-
- # Saskatchewan
-
-+# From Mark Brader (2003-07-26):
-+# The first actual adoption of DST in Canada was at the municipal
-+# level. As the [Toronto] Star put it (1912-06-07), "While people
-+# elsewhere have long been talking of legislation to save daylight,
-+# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
-+# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
-+# presumably late evening, as below), and would run until "the end of
-+# the summer". The discrepancy between municipal time and railroad
-+# time was noted.
-+
-+# From Paul Eggert (2003-07-27):
-+# Willett (1914-03) notes that DST "has been in operation ... in the
-+# City of Moose Jaw, Saskatchewan, for one year."
-+
- # From Paul Eggert (2000-10-02):
- # Shanks writes that since 1970 most of this region has been like Regina.
- # Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
-@@ -1034,12 +1132,14 @@
- Rule Regina 1937 only - Oct Sun>=8 0:00 0 S
- Rule Regina 1938 only - Oct Sun>=1 0:00 0 S
- Rule Regina 1939 1941 - Oct Sun>=8 0:00 0 S
--Rule Regina 1942 only - Feb 9 2:00 1:00 W
-+Rule Regina 1942 only - Feb 9 2:00 1:00 W # War
-+Rule Regina 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule Regina 1945 only - Sep lastSun 2:00 0 S
- Rule Regina 1946 only - Apr Sun>=8 2:00 1:00 D
- Rule Regina 1946 only - Oct Sun>=8 2:00 0 S
--Rule Regina 1947 1959 - Apr lastSun 2:00 1:00 D
--Rule Regina 1947 1958 - Sep lastSun 2:00 0 S
-+Rule Regina 1947 1957 - Apr lastSun 2:00 1:00 D
-+Rule Regina 1947 1957 - Sep lastSun 2:00 0 S
-+Rule Regina 1959 only - Apr lastSun 2:00 1:00 D
- Rule Regina 1959 only - Oct lastSun 2:00 0 S
- #
- Rule Swift 1957 only - Apr lastSun 2:00 1:00 D
-@@ -1067,7 +1167,8 @@
- Rule Edm 1920 1923 - Apr lastSun 2:00 1:00 D
- Rule Edm 1920 only - Oct lastSun 2:00 0 S
- Rule Edm 1921 1923 - Sep lastSun 2:00 0 S
--Rule Edm 1942 only - Feb 9 2:00 1:00 W
-+Rule Edm 1942 only - Feb 9 2:00 1:00 W # War
-+Rule Edm 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule Edm 1945 only - Sep lastSun 2:00 0 S
- Rule Edm 1947 only - Apr lastSun 2:00 1:00 D
- Rule Edm 1947 only - Sep lastSun 2:00 0 S
-@@ -1093,7 +1194,8 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Vanc 1918 only - Apr 14 2:00 1:00 D
- Rule Vanc 1918 only - Oct 31 2:00 0 S
--Rule Vanc 1942 only - Feb 9 2:00 1:00 W
-+Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
-+Rule Vanc 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule Vanc 1945 only - Sep 30 2:00 0 S
- Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
- Rule Vanc 1946 only - Oct 13 2:00 0 S
-@@ -1219,7 +1321,8 @@
- Rule NT_YK 1918 only - Oct 27 2:00 0 S
- Rule NT_YK 1919 only - May 25 2:00 1:00 D
- Rule NT_YK 1919 only - Nov 1 0:00 0 S
--Rule NT_YK 1942 only - Feb 9 2:00 1:00 W
-+Rule NT_YK 1942 only - Feb 9 2:00 1:00 W # War
-+Rule NT_YK 1945 only - Aug 14 23:00u 1:00 P # Peace
- Rule NT_YK 1945 only - Sep 30 2:00 0 S
- Rule NT_YK 1965 only - Apr lastSun 0:00 2:00 DD
- Rule NT_YK 1965 only - Oct lastSun 2:00 0 S
-@@ -1412,7 +1515,7 @@
- Rule Mexico 1939 only - Jun 25 0:00 0 S
- Rule Mexico 1940 only - Dec 9 0:00 1:00 D
- Rule Mexico 1941 only - Apr 1 0:00 0 S
--Rule Mexico 1943 only - Dec 16 0:00 1:00 W
-+Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War
- Rule Mexico 1944 only - May 1 0:00 0 S
- Rule Mexico 1950 only - Feb 12 0:00 1:00 D
- Rule Mexico 1950 only - Jul 30 0:00 0 S
-@@ -1682,7 +1785,8 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
- Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
--# There are too many San Salvadors elsewhere, so we'll use `El Salvador'.
-+# There are too many San Salvadors elsewhere, so use America/El_Salvador
-+# instead of America/San_Salvador.
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
- -6:00 Salv C%sT
-@@ -1812,7 +1916,8 @@
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
- -4:00 - AST 1980 May
-- -3:00 Mont PM%sT # Pierre & Miquelon Time
-+ -3:00 - PMST 1987 # Pierre & Miquelon Time
-+ -3:00 Canada PM%sT
-
- # St Vincent and the Grenadines
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
---- timezone/southamerica 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/southamerica 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)southamerica 7.46
-+# @(#)southamerica 7.49
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -443,12 +443,13 @@
- # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
- # <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm"></a>
- Rule Brazil 2002 only - Nov 3 0:00 1:00 S
-+# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
-+# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm"></a>
-+Rule Brazil 2003 max - Oct Sun>=15 0:00 1:00 S
-+# The latest ruleset listed above says that the following states observe DST:
-+# DF, ES, GO, MG, MS, PR, RJ, RS, SC, SP.
- #
--Rule Brazil 2003 max - Oct Sun>=8 0:00 1:00 S
--# The latest decree listed above says that the following states observe DST:
--# BA, DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP, TO.
--#
--# For dates after mid-2003, the above rules with TO="max" are guesses
-+# For dates after mid-2004, the above rules with TO="max" are guesses
- # and are quite possibly wrong, but are more likely than no DST at all.
-
-
-@@ -462,6 +463,9 @@
- #
- # Amapa (AP), east Para (PA)
- # East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
-+# The division between east and west Para is the river Xingu.
-+# In the north a very small part from the river Javary (now Jari I guess,
-+# the border with Amapa) to the Amazon, then to the Xingu.
- Zone America/Belem -3:13:56 - LMT 1914
- -3:00 Brazil BR%sT 1988 Sep 12
- -3:00 - BRT
-@@ -489,7 +493,8 @@
- Zone America/Araguaina -3:12:48 - LMT 1914
- -3:00 Brazil BR%sT 1990 Sep 17
- -3:00 - BRT 1995 Sep 14
-- -3:00 Brazil BR%sT
-+ -3:00 Brazil BR%sT 2003 Sep 24
-+ -3:00 - BRT
- #
- # Alagoas (AL), Sergipe (SE)
- Zone America/Maceio -2:22:52 - LMT 1914
-@@ -502,7 +507,14 @@
- -3:00 Brazil BR%sT 2002 Oct 1
- -3:00 - BRT
- #
--# Bahia (BA), Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
-+# Bahia (BA)
-+# There are too many Salvadors elsewhere, so use America/Bahia instead
-+# of America/Salvador.
-+Zone America/Bahia -2:34:04 - LMT 1914
-+ -3:00 Brazil BR%sT 2003 Sep 24
-+ -3:00 - BRT
-+#
-+# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
- # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
- # Santa Catarina (SC), Rio Grande do Sul (RS)
- Zone America/Sao_Paulo -3:06:28 - LMT 1914
-@@ -510,10 +522,15 @@
- -3:00 1:00 BRST 1964
- -3:00 Brazil BR%sT
- #
--# Mato Grosso (MT), Mato Grosso do Sul (MS)
--Zone America/Cuiaba -3:44:20 - LMT 1914
-+# Mato Grosso do Sul (MS)
-+Zone America/Campo_Grande -3:38:28 - LMT 1914
- -4:00 Brazil AM%sT
- #
-+# Mato Grosso (MT)
-+Zone America/Cuiaba -3:44:20 - LMT 1914
-+ -4:00 Brazil AM%sT 2003 Sep 24
-+ -4:00 - AMT
-+#
- # west Para (PA), Rondonia (RO)
- # West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
- Zone America/Porto_Velho -4:15:36 - LMT 1914
-@@ -528,6 +545,8 @@
- -4:00 - AMT
- #
- # east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
-+# The great circle line from Tabatinga to Porto Acre divides
-+# east from west Amazonas.
- Zone America/Manaus -4:00:04 - LMT 1914
- -4:00 Brazil AM%sT 1988 Sep 12
- -4:00 - AMT 1993 Sep 28
---- timezone/zdump.c 2001-03-15 20:07:38.000000000 -0500
-+++ timezone/zdump.c 2003-09-22 15:50:15.000000000 -0400
-@@ -1,8 +1,4 @@
--#ifndef lint
--#ifndef NOID
--static char elsieid[] = "@(#)zdump.c 7.29";
--#endif /* !defined NOID */
--#endif /* !defined lint */
-+static char elsieid[] = "@(#)zdump.c 7.31";
-
- /*
- ** This code has been made independent of the rest of the time
-@@ -163,6 +159,11 @@
- (void) textdomain(TZ_DOMAIN);
- #endif /* HAVE_GETTEXT - 0 */
- progname = argv[0];
-+ for (i = 1; i < argc; ++i)
-+ if (strcmp(argv[i], "--version") == 0) {
-+ (void) printf("%s\n", elsieid);
-+ (void) exit(EXIT_SUCCESS);
-+ }
- vflag = 0;
- cutoff = NULL;
- while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v')
-@@ -172,7 +173,7 @@
- if ((c != EOF && c != -1) ||
- (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
- (void) fprintf(stderr,
--_("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"),
-+_("%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"),
- argv[0], argv[0]);
- (void) exit(EXIT_FAILURE);
- }
---- timezone/zic.c 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/zic.c 2003-09-22 15:50:02.000000000 -0400
-@@ -1,8 +1,4 @@
--#ifndef lint
--#ifndef NOID
--static char elsieid[] = "@(#)zic.c 7.107";
--#endif /* !defined NOID */
--#endif /* !defined lint */
-+static char elsieid[] = "@(#)zic.c 7.113";
-
- #include "private.h"
- #include "locale.h"
-@@ -446,7 +442,7 @@
- static void
- usage P((void))
- {
-- (void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
-+ (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
- progname, progname);
- (void) exit(EXIT_FAILURE);
- }
-@@ -479,6 +475,11 @@
- (void) textdomain(TZ_DOMAIN);
- #endif /* HAVE_GETTEXT - 0 */
- progname = argv[0];
-+ for (i = 1; i < argc; ++i)
-+ if (strcmp(argv[i], "--version") == 0) {
-+ (void) printf("%s\n", elsieid);
-+ (void) exit(EXIT_SUCCESS);
-+ }
- while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
- switch (c) {
- default:
-@@ -1165,14 +1166,15 @@
- error(_("time before zero"));
- return;
- }
-- t = (time_t) dayoff * SECSPERDAY;
-- /*
-- ** Cheap overflow check.
-- */
-- if (t / SECSPERDAY != dayoff) {
-- error(_("time overflow"));
-+ if (dayoff < min_time / SECSPERDAY) {
-+ error(_("time too small"));
- return;
- }
-+ if (dayoff > max_time / SECSPERDAY) {
-+ error(_("time too large"));
-+ return;
-+ }
-+ t = (time_t) dayoff * SECSPERDAY;
- tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE);
- cp = fields[LP_CORR];
- {
-@@ -1325,9 +1327,9 @@
- return;
- } else if (noise) {
- if (rp->r_loyear < min_year_representable)
-- warning(_("starting year too low to be represented"));
-+ warning(_("ending year too low to be represented"));
- else if (rp->r_loyear > max_year_representable)
-- warning(_("starting year too high to be represented"));
-+ warning(_("ending year too high to be represented"));
- }
- if (rp->r_loyear > rp->r_hiyear) {
- error(_("starting year greater than ending year"));
---- timezone/zone.tab 2003-11-05 10:37:29.000000000 -0500
-+++ timezone/zone.tab 2003-10-06 13:46:22.000000000 -0400
-@@ -1,4 +1,4 @@
--# @(#)zone.tab 1.28
-+# @(#)zone.tab 1.29
- #
- # TZ zone descriptions
- #
-@@ -74,12 +74,14 @@
- BO -1630-06809 America/La_Paz
- BR -0351-03225 America/Noronha Atlantic islands
- BR -0127-04829 America/Belem Amapa, E Para
--BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PR)
-+BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
- BR -0803-03454 America/Recife Pernambuco
- BR -0712-04812 America/Araguaina Tocantins
- BR -0940-03543 America/Maceio Alagoas, Sergipe
--BR -2332-04637 America/Sao_Paulo S & SE Brazil (BA, GO, DF, MG, ES, RJ, SP, PR, SC, RS)
--BR -1535-05605 America/Cuiaba Mato Grosso, Mato Grosso do Sul
-+BR -1259-03831 America/Bahia Bahia
-+BR -2332-04637 America/Sao_Paulo S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
-+BR -2027-05437 America/Campo_Grande Mato Grosso do Sul
-+BR -1535-05605 America/Cuiaba Mato Grosso
- BR -0846-06354 America/Porto_Velho W Para, Rondonia
- BR +0249-06040 America/Boa_Vista Roraima
- BR -0308-06001 America/Manaus E Amazonas
-@@ -94,7 +96,8 @@
- CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), NB, W Labrador, E Quebec & PEI
- CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
- CA +5320-06025 America/Goose_Bay Atlantic Time - E Labrador
--CA +4531-07334 America/Montreal Eastern Time - Ontario & Quebec - most locations
-+CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations
-+CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations
- CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
- CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
- CA +6608-06544 America/Pangnirtung Eastern Standard Time - Pangnirtung, Nunavut
-@@ -130,6 +133,7 @@
- CN +3929+07559 Asia/Kashgar southwest Xinjiang Uyghur
- CO +0436-07405 America/Bogota
- CR +0956-08405 America/Costa_Rica
-+CS +4450+02030 Europe/Belgrade
- CU +2308-08222 America/Havana
- CV +1455-02331 Atlantic/Cape_Verde
- CX -1025+10543 Indian/Christmas
-@@ -275,7 +279,7 @@
- NR -0031+16655 Pacific/Nauru
- NU -1901+16955 Pacific/Niue
- NZ -3652+17446 Pacific/Auckland most locations
--NZ -4355-17630 Pacific/Chatham Chatham Islands
-+NZ -4357-17633 Pacific/Chatham Chatham Islands
- OM +2336+05835 Asia/Muscat
- PA +0858-07932 America/Panama
- PE -1203-07703 America/Lima
-@@ -393,7 +397,6 @@
- WS -1350-17144 Pacific/Apia
- YE +1245+04512 Asia/Aden
- YT -1247+04514 Indian/Mayotte
--YU +4450+02030 Europe/Belgrade
- ZA -2615+02800 Africa/Johannesburg
- ZM -1525+02817 Africa/Lusaka
- ZW -1750+03103 Africa/Harare
diff --git a/packages/glibc/glibc-2.3.2/alpha-crti.patch b/packages/glibc/glibc-2.3.2/alpha-crti.patch
deleted file mode 100644
index ba1e42a6b7..0000000000
--- a/packages/glibc/glibc-2.3.2/alpha-crti.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- linuxthreads/sysdeps/alpha/elf/pt-initfini.c 5 Jul 2003 22:56:39 -0000 1.3
-+++ linuxthreads/sysdeps/alpha/elf/pt-initfini.c 29 Jul 2003 19:15:35 -0000
-@@ -75,7 +75,6 @@
- subq $30, 16, $30 \n\
- stq $26, 0($30) \n\
- stq $29, 8($30) \n\
-- .prologue 1 \n\
- .align 3 \n\
- /*@_fini_PROLOG_ENDS*/ \n\
- \n\
diff --git a/packages/glibc/glibc-2.3.2/alpha-pic.patch b/packages/glibc/glibc-2.3.2/alpha-pic.patch
deleted file mode 100644
index 6c4db3029d..0000000000
--- a/packages/glibc/glibc-2.3.2/alpha-pic.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- sysdeps/unix/alpha/sysdep.S 2003-03-23 16:01:02.000000000 +0900
-+++ sysdeps/unix/alpha/sysdep.S.new 2003-03-23 16:02:50.000000000 +0900
-@@ -95,14 +95,10 @@
- PROLOGUE
-
- /* Find our per-thread errno address */
--#ifdef PIC
-- bsr ra, __errno_location !samegp
--#else
- jsr ra, __errno_location
- #ifndef GPSAVEREG
- ldgp gp, 0(ra)
- #endif
--#endif
-
- /* Store the error value. */
- ldq t0, 8(sp)
diff --git a/packages/glibc/glibc-2.3.2/alpha-pwrite.patch b/packages/glibc/glibc-2.3.2/alpha-pwrite.patch
deleted file mode 100644
index 4d82190553..0000000000
--- a/packages/glibc/glibc-2.3.2/alpha-pwrite.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- sysdeps/unix/sysv/linux/alpha/syscalls.list 24 Jun 2003 16:26:34 -0000 1.59
-+++ sysdeps/unix/sysv/linux/alpha/syscalls.list 29 Jul 2003 19:23:02 -0000
-@@ -22,8 +22,8 @@
- llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
- lseek llseek -
- posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
--pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
--pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
-+pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
-+pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
- fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64
- statfs - statfs i:sp __statfs statfs statfs64
- getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
diff --git a/packages/glibc/glibc-2.3.2/arm-ioperm.patch b/packages/glibc/glibc-2.3.2/arm-ioperm.patch
deleted file mode 100644
index ae9423ef55..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-ioperm.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- sysdeps/unix/sysv/linux/arm/ioperm.c 20 Feb 2003 22:22:35 -0000 1.6
-+++ sysdeps/unix/sysv/linux/arm/ioperm.c 24 Oct 2003 20:59:38 -0000
-@@ -100,8 +100,8 @@
- {
- char systype[256];
- int i, n;
-- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
-- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
-+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
-+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
- size_t len = sizeof(io.base);
-
- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
diff --git a/packages/glibc/glibc-2.3.2/arm-longlong.patch b/packages/glibc/glibc-2.3.2/arm-longlong.patch
deleted file mode 100644
index dfb9309b7b..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-longlong.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
-+++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
-@@ -210,6 +210,14 @@
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -231,7 +239,14 @@
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)));}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined (__hppa) && W_TYPE_SIZE == 32
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
-@@ -0,0 +1,24 @@
-+/* __clz_tab -- support for longlong.h
-+ Copyright (C) 2004 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(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+/* Nothing required. */
-+#else
-+#include <sysdeps/generic/mp_clz_tab.c>
-+#endif
diff --git a/packages/glibc/glibc-2.3.2/arm-machine-gmon.patch b/packages/glibc/glibc-2.3.2/arm-machine-gmon.patch
deleted file mode 100644
index 0fa789d86b..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-machine-gmon.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/arm/machine-gmon.h~ 2001-07-06 00:55:48.000000000 -0400
-+++ sysdeps/arm/machine-gmon.h 2004-04-25 03:56:20.000000000 -0400
-@@ -35,7 +35,7 @@
- static void mcount_internal (u_long frompc, u_long selfpc);
-
- #define _MCOUNT_DECL(frompc, selfpc) \
--static void mcount_internal (u_long frompc, u_long selfpc)
-+static __attribute__((used)) void mcount_internal (u_long frompc, u_long selfpc)
-
- /* This macro/func MUST save r0, r1 because the compiler inserts
- blind calls to _mount(), ignoring the fact that _mcount may
diff --git a/packages/glibc/glibc-2.3.2/arm-memcpy.patch b/packages/glibc/glibc-2.3.2/arm-memcpy.patch
deleted file mode 100644
index 7fe0040bea..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-memcpy.patch
+++ /dev/null
@@ -1,756 +0,0 @@
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memcpy.S 2004-03-20 13:25:27.000000000 +0000
-@@ -0,0 +1,241 @@
-+/*
-+ * Optimized memcpy implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memcpy (char *dst, const char *src) */
-+
-+ENTRY(memcpy)
-+ subs r2, r2, #4
-+ stmfd sp!, {r0, r4, lr}
-+ blt 7f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #0] )
-+ bne 8f
-+ ands ip, r1, #3
-+ bne 9f
-+
-+1: subs r2, r2, #4
-+ blt 6f
-+ subs r2, r2, #8
-+ blt 5f
-+ subs r2, r2, #16
-+ blt 4f
-+
-+ PLD( subs r2, r2, #65 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 3f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #64] )
-+ PLD( beq 2f )
-+ PLD( rsb ip, ip, #32 )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #96] )
-+ PLD( blt 2f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgeia r1!, {r3 - r6} )
-+ PLD( stmgeia r0!, {r3 - r6} )
-+ PLD( beq 2f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1], #4 )
-+ PLD( ldrge r4, [r1], #4 )
-+ PLD( ldrgt r5, [r1], #4 )
-+ PLD( str r3, [r0], #4 )
-+ PLD( strge r4, [r0], #4 )
-+ PLD( strgt r5, [r0], #4 )
-+
-+2: PLD( pld [r1, #96] )
-+3: ldmia r1!, {r3 - r8, ip, lr}
-+ subs r2, r2, #32
-+ stmia r0!, {r3 - r8, ip, lr}
-+ bge 2b
-+ PLD( cmn r2, #65 )
-+ PLD( bge 3b )
-+ PLD( add r2, r2, #65 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+4: ldmneia r1!, {r3, r4, ip, lr}
-+ stmneia r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+5: ldmneia r1!, {r3, r4}
-+ stmneia r0!, {r3, r4}
-+
-+ tst r2, #4
-+6: ldrne r3, [r1], #4
-+ strne r3, [r0], #4
-+
-+7: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb ip, [r1]
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb ip, [r0]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+8: rsb ip, ip, #4
-+ cmp ip, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb lr, [r1], #1
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb lr, [r0], #1
-+ subs r2, r2, ip
-+ blt 7b
-+ ands ip, r1, #3
-+ beq 1b
-+
-+9: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr lr, [r1], #4
-+ beq 17f
-+ bgt 18f
-+
-+
-+ .macro forward_copy_shift pull push
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #0] )
-+ blt 15f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 13f
-+
-+ PLD( subs r2, r2, #97 )
-+ PLD( blt 12f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( rsb ip, r1, #36 )
-+ PLD( pld [r1, #64] )
-+ PLD( ands ip, ip, #31 )
-+ PLD( pld [r1, #96] )
-+ PLD( beq 11f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #128] )
-+ PLD( blt 11f )
-+ PLD( sub r2, r2, ip )
-+10: PLD( mov r3, lr, pull #\pull )
-+ PLD( ldr lr, [r1], #4 )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r3, r3, lr, push #\push )
-+ PLD( str r3, [r0], #4 )
-+ PLD( bgt 10b )
-+
-+11: PLD( pld [r1, #128] )
-+12: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r9, ip, lr}
-+ subs r2, r2, #32
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, r7, push #\push
-+ mov r7, r7, pull #\pull
-+ orr r7, r7, r8, push #\push
-+ mov r8, r8, pull #\pull
-+ orr r8, r8, r9, push #\push
-+ mov r9, r9, pull #\pull
-+ orr r9, r9, ip, push #\push
-+ mov ip, ip, pull #\pull
-+ orr ip, ip, lr, push #\push
-+ stmia r0!, {r3 - r9, ip}
-+ bge 11b
-+ PLD( cmn r2, #97 )
-+ PLD( bge 12b )
-+ PLD( add r2, r2, #97 )
-+ cmn r2, #16
-+ blt 14f
-+13: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r6, lr}
-+ sub r2, r2, #16
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, lr, push #\push
-+ stmia r0!, {r3 - r6}
-+14: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 16f
-+15: mov r3, lr, pull #\pull
-+ ldr lr, [r1], #4
-+ subs r2, r2, #4
-+ orr r3, r3, lr, push #\push
-+ str r3, [r0], #4
-+ bge 15b
-+16:
-+ .endm
-+
-+
-+ forward_copy_shift pull=8 push=24
-+ sub r1, r1, #3
-+ b 7b
-+
-+17: forward_copy_shift pull=16 push=16
-+ sub r1, r1, #2
-+ b 7b
-+
-+18: forward_copy_shift pull=24 push=8
-+ sub r1, r1, #1
-+ b 7b
-+
-+ .size memcpy, . - memcpy
-+END(memcpy)
-+libc_hidden_builtin_def (memcpy)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
-@@ -0,0 +1,251 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memmove (char *dst, const char *src) */
-+ENTRY(memmove)
-+ subs ip, r0, r1
-+ cmphi r2, ip
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r0, r4, lr}
-+ add r1, r1, r2
-+ add r0, r0, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #-4] )
-+ bne 26f
-+ ands ip, r1, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [r1, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb r1!, {r3 - r6} )
-+ PLD( stmgedb r0!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( ldrge r4, [r1, #-4]! )
-+ PLD( ldrgt r5, [r1, #-4]! )
-+ PLD( str r3, [r0, #-4]! )
-+ PLD( strge r4, [r0, #-4]! )
-+ PLD( strgt r5, [r0, #-4]! )
-+
-+20: PLD( pld [r1, #-96] )
-+ PLD( pld [r1, #-128] )
-+21: ldmdb r1!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ ldmdb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb r1!, {r3, r4, ip, lr}
-+ stmnedb r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb r1!, {r3, r4}
-+ stmnedb r0!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [r1, #-4]!
-+ strne r3, [r0, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1, #-1]
-+ ldrgeb r4, [r1, #-2]
-+ ldrgtb ip, [r1, #-3]
-+ strb r3, [r0, #-1]
-+ strgeb r4, [r0, #-2]
-+ strgtb ip, [r0, #-3]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [r1, #-1]!
-+ ldrgeb r4, [r1, #-1]!
-+ ldrgtb lr, [r1, #-1]!
-+ strb r3, [r0, #-1]!
-+ strgeb r4, [r0, #-1]!
-+ strgtb lr, [r0, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, r1, #3
-+ beq 19b
-+
-+27: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr r3, [r1]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [r1, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [r1, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [r0, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [r1, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb r1!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb r1!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [r1, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [r0, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add r1, r1, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add r1, r1, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add r1, r1, #1
-+ b 25b
-+
-+ .size memmove, . - memmove
-+END(memmove)
-+libc_hidden_builtin_def (memmove)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
-@@ -0,0 +1,255 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+dst .req r1
-+src .req r0
-+
-+/* void *bcopy (const char *src, char *dst, size_t size) */
-+ENTRY(bcopy)
-+ subs ip, dst, src
-+ cmphi r2, ip
-+ movls r3, r0
-+ movls r0, r1
-+ movls r1, r3
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r4, lr}
-+ add src, src, r2
-+ add dst, dst, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, dst, #3
-+ PLD( pld [src, #-4] )
-+ bne 26f
-+ ands ip, src, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [src, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb src!, {r3 - r6} )
-+ PLD( stmgedb dst!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( ldrge r4, [src, #-4]! )
-+ PLD( ldrgt r5, [src, #-4]! )
-+ PLD( str r3, [dst, #-4]! )
-+ PLD( strge r4, [dst, #-4]! )
-+ PLD( strgt r5, [dst, #-4]! )
-+
-+20: PLD( pld [src, #-96] )
-+ PLD( pld [src, #-128] )
-+21: ldmdb src!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ ldmdb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb src!, {r3, r4, ip, lr}
-+ stmnedb dst!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb src!, {r3, r4}
-+ stmnedb dst!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [src, #-4]!
-+ strne r3, [dst, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {dst, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [src, #-1]
-+ ldrgeb r4, [src, #-2]
-+ ldrgtb ip, [src, #-3]
-+ strb r3, [dst, #-1]
-+ strgeb r4, [dst, #-2]
-+ strgtb ip, [dst, #-3]
-+ ldmfd sp!, {dst, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [src, #-1]!
-+ ldrgeb r4, [src, #-1]!
-+ ldrgtb lr, [src, #-1]!
-+ strb r3, [dst, #-1]!
-+ strgeb r4, [dst, #-1]!
-+ strgtb lr, [dst, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, src, #3
-+ beq 19b
-+
-+27: bic src, src, #3
-+ cmp ip, #2
-+ ldr r3, [src]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [src, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [src, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [src, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [dst, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [src, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb src!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb src!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [src, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [dst, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add src, src, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add src, src, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add src, src, #1
-+ b 25b
-+
-+ .size bcopy, . - bcopy
-+END(bcopy)
diff --git a/packages/glibc/glibc-2.3.2/arm-no-hwcap.patch b/packages/glibc/glibc-2.3.2/arm-no-hwcap.patch
deleted file mode 100644
index 17bfdcd125..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-no-hwcap.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/unix/sysv/linux/arm/dl-procinfo.h Mon Jul 23 12:57:23 2001
-+++ sysdeps/unix/sysv/linux/arm/dl-procinfo.h Sun Feb 10 06:37:00 2002
-@@ -67,7 +67,7 @@
- HWCAP_ARM_VFP = 1 << 6,
- HWCAP_ARM_EDSP = 1 << 7,
-
-- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
-+ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
- };
-
- static inline int
diff --git a/packages/glibc/glibc-2.3.2/arm-output-format.patch b/packages/glibc/glibc-2.3.2/arm-output-format.patch
deleted file mode 100644
index 56fe185e4a..0000000000
--- a/packages/glibc/glibc-2.3.2/arm-output-format.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- scripts/output-format.sed 8 Dec 2002 08:13:16 -0000 1.2
-+++ scripts/output-format.sed 26 Aug 2003 15:01:13 -0000
-@@ -18,7 +18,7 @@
- s/\n//
- s/^\([^,]*\),\([^,]*\),B/OUTPUT_FORMAT(\1)/p
- s/^\([^,]*\),\([^,]*\),L/OUTPUT_FORMAT(\2)/p
--/,/s|^|*** BUG in libc/scripts/output-format.sed *** |p
-+/,/Q
- q
- : q
- s/"//g
diff --git a/packages/glibc/glibc-2.3.2/asm-arm-unistd.h b/packages/glibc/glibc-2.3.2/asm-arm-unistd.h
deleted file mode 100644
index 8863c4e000..0000000000
--- a/packages/glibc/glibc-2.3.2/asm-arm-unistd.h
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * linux/include/asm-arm/unistd.h
- *
- * Copyright (C) 2001-2002 Russell King
- *
- * 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.
- *
- * Please forward _all_ changes to this file to rmk@arm.linux.org.uk,
- * no matter what the change is. Thanks!
- */
-#ifndef __ASM_ARM_UNISTD_H
-#define __ASM_ARM_UNISTD_H
-
-#include <linux/linkage.h>
-
-#if defined(__thumb__)
-#define __NR_SYSCALL_BASE 0
-#else
-#define __NR_SYSCALL_BASE 0x900000
-#endif
-
-/*
- * This file contains the system call numbers.
- */
-
-#define __NR_exit (__NR_SYSCALL_BASE+ 1)
-#define __NR_fork (__NR_SYSCALL_BASE+ 2)
-#define __NR_read (__NR_SYSCALL_BASE+ 3)
-#define __NR_write (__NR_SYSCALL_BASE+ 4)
-#define __NR_open (__NR_SYSCALL_BASE+ 5)
-#define __NR_close (__NR_SYSCALL_BASE+ 6)
-/* #define __NR_waitpid (__NR_SYSCALL_BASE+ 7) */
-#define __NR_creat (__NR_SYSCALL_BASE+ 8)
-#define __NR_link (__NR_SYSCALL_BASE+ 9)
-#define __NR_unlink (__NR_SYSCALL_BASE+ 10)
-#define __NR_execve (__NR_SYSCALL_BASE+ 11)
-#define __NR_chdir (__NR_SYSCALL_BASE+ 12)
-#define __NR_time (__NR_SYSCALL_BASE+ 13)
-#define __NR_mknod (__NR_SYSCALL_BASE+ 14)
-#define __NR_chmod (__NR_SYSCALL_BASE+ 15)
-#define __NR_lchown (__NR_SYSCALL_BASE+ 16)
-#define __NR_break (__NR_SYSCALL_BASE+ 17)
-
-#define __NR_lseek (__NR_SYSCALL_BASE+ 19)
-#define __NR_getpid (__NR_SYSCALL_BASE+ 20)
-#define __NR_mount (__NR_SYSCALL_BASE+ 21)
-#define __NR_umount (__NR_SYSCALL_BASE+ 22)
-#define __NR_setuid (__NR_SYSCALL_BASE+ 23)
-#define __NR_getuid (__NR_SYSCALL_BASE+ 24)
-#define __NR_stime (__NR_SYSCALL_BASE+ 25)
-#define __NR_ptrace (__NR_SYSCALL_BASE+ 26)
-#define __NR_alarm (__NR_SYSCALL_BASE+ 27)
-
-#define __NR_pause (__NR_SYSCALL_BASE+ 29)
-#define __NR_utime (__NR_SYSCALL_BASE+ 30)
-#define __NR_stty (__NR_SYSCALL_BASE+ 31)
-#define __NR_gtty (__NR_SYSCALL_BASE+ 32)
-#define __NR_access (__NR_SYSCALL_BASE+ 33)
-#define __NR_nice (__NR_SYSCALL_BASE+ 34)
-#define __NR_ftime (__NR_SYSCALL_BASE+ 35)
-#define __NR_sync (__NR_SYSCALL_BASE+ 36)
-#define __NR_kill (__NR_SYSCALL_BASE+ 37)
-#define __NR_rename (__NR_SYSCALL_BASE+ 38)
-#define __NR_mkdir (__NR_SYSCALL_BASE+ 39)
-#define __NR_rmdir (__NR_SYSCALL_BASE+ 40)
-#define __NR_dup (__NR_SYSCALL_BASE+ 41)
-#define __NR_pipe (__NR_SYSCALL_BASE+ 42)
-#define __NR_times (__NR_SYSCALL_BASE+ 43)
-#define __NR_prof (__NR_SYSCALL_BASE+ 44)
-#define __NR_brk (__NR_SYSCALL_BASE+ 45)
-#define __NR_setgid (__NR_SYSCALL_BASE+ 46)
-#define __NR_getgid (__NR_SYSCALL_BASE+ 47)
-#define __NR_signal (__NR_SYSCALL_BASE+ 48)
-#define __NR_geteuid (__NR_SYSCALL_BASE+ 49)
-#define __NR_getegid (__NR_SYSCALL_BASE+ 50)
-#define __NR_acct (__NR_SYSCALL_BASE+ 51)
-#define __NR_umount2 (__NR_SYSCALL_BASE+ 52)
-#define __NR_lock (__NR_SYSCALL_BASE+ 53)
-#define __NR_ioctl (__NR_SYSCALL_BASE+ 54)
-#define __NR_fcntl (__NR_SYSCALL_BASE+ 55)
-#define __NR_mpx (__NR_SYSCALL_BASE+ 56)
-#define __NR_setpgid (__NR_SYSCALL_BASE+ 57)
-#define __NR_ulimit (__NR_SYSCALL_BASE+ 58)
-
-#define __NR_umask (__NR_SYSCALL_BASE+ 60)
-#define __NR_chroot (__NR_SYSCALL_BASE+ 61)
-#define __NR_ustat (__NR_SYSCALL_BASE+ 62)
-#define __NR_dup2 (__NR_SYSCALL_BASE+ 63)
-#define __NR_getppid (__NR_SYSCALL_BASE+ 64)
-#define __NR_getpgrp (__NR_SYSCALL_BASE+ 65)
-#define __NR_setsid (__NR_SYSCALL_BASE+ 66)
-#define __NR_sigaction (__NR_SYSCALL_BASE+ 67)
-#define __NR_sgetmask (__NR_SYSCALL_BASE+ 68)
-#define __NR_ssetmask (__NR_SYSCALL_BASE+ 69)
-#define __NR_setreuid (__NR_SYSCALL_BASE+ 70)
-#define __NR_setregid (__NR_SYSCALL_BASE+ 71)
-#define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72)
-#define __NR_sigpending (__NR_SYSCALL_BASE+ 73)
-#define __NR_sethostname (__NR_SYSCALL_BASE+ 74)
-#define __NR_setrlimit (__NR_SYSCALL_BASE+ 75)
-#define __NR_getrlimit (__NR_SYSCALL_BASE+ 76) /* Back compat 2GB limited rlimit */
-#define __NR_getrusage (__NR_SYSCALL_BASE+ 77)
-#define __NR_gettimeofday (__NR_SYSCALL_BASE+ 78)
-#define __NR_settimeofday (__NR_SYSCALL_BASE+ 79)
-#define __NR_getgroups (__NR_SYSCALL_BASE+ 80)
-#define __NR_setgroups (__NR_SYSCALL_BASE+ 81)
-#define __NR_select (__NR_SYSCALL_BASE+ 82)
-#define __NR_symlink (__NR_SYSCALL_BASE+ 83)
-
-#define __NR_readlink (__NR_SYSCALL_BASE+ 85)
-#define __NR_uselib (__NR_SYSCALL_BASE+ 86)
-#define __NR_swapon (__NR_SYSCALL_BASE+ 87)
-#define __NR_reboot (__NR_SYSCALL_BASE+ 88)
-#define __NR_readdir (__NR_SYSCALL_BASE+ 89)
-#define __NR_mmap (__NR_SYSCALL_BASE+ 90)
-#define __NR_munmap (__NR_SYSCALL_BASE+ 91)
-#define __NR_truncate (__NR_SYSCALL_BASE+ 92)
-#define __NR_ftruncate (__NR_SYSCALL_BASE+ 93)
-#define __NR_fchmod (__NR_SYSCALL_BASE+ 94)
-#define __NR_fchown (__NR_SYSCALL_BASE+ 95)
-#define __NR_getpriority (__NR_SYSCALL_BASE+ 96)
-#define __NR_setpriority (__NR_SYSCALL_BASE+ 97)
-#define __NR_profil (__NR_SYSCALL_BASE+ 98)
-#define __NR_statfs (__NR_SYSCALL_BASE+ 99)
-#define __NR_fstatfs (__NR_SYSCALL_BASE+100)
-#define __NR_ioperm (__NR_SYSCALL_BASE+101)
-#define __NR_socketcall (__NR_SYSCALL_BASE+102)
-#define __NR_syslog (__NR_SYSCALL_BASE+103)
-#define __NR_setitimer (__NR_SYSCALL_BASE+104)
-#define __NR_getitimer (__NR_SYSCALL_BASE+105)
-#define __NR_stat (__NR_SYSCALL_BASE+106)
-#define __NR_lstat (__NR_SYSCALL_BASE+107)
-#define __NR_fstat (__NR_SYSCALL_BASE+108)
-
-
-#define __NR_vhangup (__NR_SYSCALL_BASE+111)
-#define __NR_idle (__NR_SYSCALL_BASE+112)
-#define __NR_syscall (__NR_SYSCALL_BASE+113) /* syscall to call a syscall! */
-#define __NR_wait4 (__NR_SYSCALL_BASE+114)
-#define __NR_swapoff (__NR_SYSCALL_BASE+115)
-#define __NR_sysinfo (__NR_SYSCALL_BASE+116)
-#define __NR_ipc (__NR_SYSCALL_BASE+117)
-#define __NR_fsync (__NR_SYSCALL_BASE+118)
-#define __NR_sigreturn (__NR_SYSCALL_BASE+119)
-#define __NR_clone (__NR_SYSCALL_BASE+120)
-#define __NR_setdomainname (__NR_SYSCALL_BASE+121)
-#define __NR_uname (__NR_SYSCALL_BASE+122)
-#define __NR_modify_ldt (__NR_SYSCALL_BASE+123)
-#define __NR_adjtimex (__NR_SYSCALL_BASE+124)
-#define __NR_mprotect (__NR_SYSCALL_BASE+125)
-#define __NR_sigprocmask (__NR_SYSCALL_BASE+126)
-#define __NR_create_module (__NR_SYSCALL_BASE+127)
-#define __NR_init_module (__NR_SYSCALL_BASE+128)
-#define __NR_delete_module (__NR_SYSCALL_BASE+129)
-#define __NR_get_kernel_syms (__NR_SYSCALL_BASE+130)
-#define __NR_quotactl (__NR_SYSCALL_BASE+131)
-#define __NR_getpgid (__NR_SYSCALL_BASE+132)
-#define __NR_fchdir (__NR_SYSCALL_BASE+133)
-#define __NR_bdflush (__NR_SYSCALL_BASE+134)
-#define __NR_sysfs (__NR_SYSCALL_BASE+135)
-#define __NR_personality (__NR_SYSCALL_BASE+136)
-#define __NR_afs_syscall (__NR_SYSCALL_BASE+137) /* Syscall for Andrew File System */
-#define __NR_setfsuid (__NR_SYSCALL_BASE+138)
-#define __NR_setfsgid (__NR_SYSCALL_BASE+139)
-#define __NR__llseek (__NR_SYSCALL_BASE+140)
-#define __NR_getdents (__NR_SYSCALL_BASE+141)
-#define __NR__newselect (__NR_SYSCALL_BASE+142)
-#define __NR_flock (__NR_SYSCALL_BASE+143)
-#define __NR_msync (__NR_SYSCALL_BASE+144)
-#define __NR_readv (__NR_SYSCALL_BASE+145)
-#define __NR_writev (__NR_SYSCALL_BASE+146)
-#define __NR_getsid (__NR_SYSCALL_BASE+147)
-#define __NR_fdatasync (__NR_SYSCALL_BASE+148)
-#define __NR__sysctl (__NR_SYSCALL_BASE+149)
-#define __NR_mlock (__NR_SYSCALL_BASE+150)
-#define __NR_munlock (__NR_SYSCALL_BASE+151)
-#define __NR_mlockall (__NR_SYSCALL_BASE+152)
-#define __NR_munlockall (__NR_SYSCALL_BASE+153)
-#define __NR_sched_setparam (__NR_SYSCALL_BASE+154)
-#define __NR_sched_getparam (__NR_SYSCALL_BASE+155)
-#define __NR_sched_setscheduler (__NR_SYSCALL_BASE+156)
-#define __NR_sched_getscheduler (__NR_SYSCALL_BASE+157)
-#define __NR_sched_yield (__NR_SYSCALL_BASE+158)
-#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE+159)
-#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE+160)
-#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE+161)
-#define __NR_nanosleep (__NR_SYSCALL_BASE+162)
-#define __NR_mremap (__NR_SYSCALL_BASE+163)
-#define __NR_setresuid (__NR_SYSCALL_BASE+164)
-#define __NR_getresuid (__NR_SYSCALL_BASE+165)
-#define __NR_vm86 (__NR_SYSCALL_BASE+166)
-#define __NR_query_module (__NR_SYSCALL_BASE+167)
-#define __NR_poll (__NR_SYSCALL_BASE+168)
-#define __NR_nfsservctl (__NR_SYSCALL_BASE+169)
-#define __NR_setresgid (__NR_SYSCALL_BASE+170)
-#define __NR_getresgid (__NR_SYSCALL_BASE+171)
-#define __NR_prctl (__NR_SYSCALL_BASE+172)
-#define __NR_rt_sigreturn (__NR_SYSCALL_BASE+173)
-#define __NR_rt_sigaction (__NR_SYSCALL_BASE+174)
-#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE+175)
-#define __NR_rt_sigpending (__NR_SYSCALL_BASE+176)
-#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE+177)
-#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE+178)
-#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE+179)
-#define __NR_pread64 (__NR_SYSCALL_BASE+180)
-#define __NR_pwrite64 (__NR_SYSCALL_BASE+181)
-#define __NR_chown (__NR_SYSCALL_BASE+182)
-#define __NR_getcwd (__NR_SYSCALL_BASE+183)
-#define __NR_capget (__NR_SYSCALL_BASE+184)
-#define __NR_capset (__NR_SYSCALL_BASE+185)
-#define __NR_sigaltstack (__NR_SYSCALL_BASE+186)
-#define __NR_sendfile (__NR_SYSCALL_BASE+187)
- /* 188 reserved */
- /* 189 reserved */
-#define __NR_vfork (__NR_SYSCALL_BASE+190)
-#define __NR_ugetrlimit (__NR_SYSCALL_BASE+191) /* SuS compliant getrlimit */
-#define __NR_mmap2 (__NR_SYSCALL_BASE+192)
-#define __NR_truncate64 (__NR_SYSCALL_BASE+193)
-#define __NR_ftruncate64 (__NR_SYSCALL_BASE+194)
-#define __NR_stat64 (__NR_SYSCALL_BASE+195)
-#define __NR_lstat64 (__NR_SYSCALL_BASE+196)
-#define __NR_fstat64 (__NR_SYSCALL_BASE+197)
-#define __NR_lchown32 (__NR_SYSCALL_BASE+198)
-#define __NR_getuid32 (__NR_SYSCALL_BASE+199)
-#define __NR_getgid32 (__NR_SYSCALL_BASE+200)
-#define __NR_geteuid32 (__NR_SYSCALL_BASE+201)
-#define __NR_getegid32 (__NR_SYSCALL_BASE+202)
-#define __NR_setreuid32 (__NR_SYSCALL_BASE+203)
-#define __NR_setregid32 (__NR_SYSCALL_BASE+204)
-#define __NR_getgroups32 (__NR_SYSCALL_BASE+205)
-#define __NR_setgroups32 (__NR_SYSCALL_BASE+206)
-#define __NR_fchown32 (__NR_SYSCALL_BASE+207)
-#define __NR_setresuid32 (__NR_SYSCALL_BASE+208)
-#define __NR_getresuid32 (__NR_SYSCALL_BASE+209)
-#define __NR_setresgid32 (__NR_SYSCALL_BASE+210)
-#define __NR_getresgid32 (__NR_SYSCALL_BASE+211)
-#define __NR_chown32 (__NR_SYSCALL_BASE+212)
-#define __NR_setuid32 (__NR_SYSCALL_BASE+213)
-#define __NR_setgid32 (__NR_SYSCALL_BASE+214)
-#define __NR_setfsuid32 (__NR_SYSCALL_BASE+215)
-#define __NR_setfsgid32 (__NR_SYSCALL_BASE+216)
-#define __NR_getdents64 (__NR_SYSCALL_BASE+217)
-#define __NR_pivot_root (__NR_SYSCALL_BASE+218)
-#define __NR_mincore (__NR_SYSCALL_BASE+219)
-#define __NR_madvise (__NR_SYSCALL_BASE+220)
-#define __NR_fcntl64 (__NR_SYSCALL_BASE+221)
- /* 222 for tux */
-#define __NR_security (__NR_SYSCALL_BASE+223)
-#define __NR_gettid (__NR_SYSCALL_BASE+224)
-#define __NR_readahead (__NR_SYSCALL_BASE+225)
-#if 0 /* allocated in 2.4 */
-#define __NR_setxattr (__NR_SYSCALL_BASE+226)
-#define __NR_lsetxattr (__NR_SYSCALL_BASE+227)
-#define __NR_fsetxattr (__NR_SYSCALL_BASE+228)
-#define __NR_getxattr (__NR_SYSCALL_BASE+229)
-#define __NR_lgetxattr (__NR_SYSCALL_BASE+230)
-#define __NR_fgetxattr (__NR_SYSCALL_BASE+231)
-#define __NR_listxattr (__NR_SYSCALL_BASE+232)
-#define __NR_llistxattr (__NR_SYSCALL_BASE+233)
-#define __NR_flistxattr (__NR_SYSCALL_BASE+234)
-#define __NR_removexattr (__NR_SYSCALL_BASE+235)
-#define __NR_lremovexattr (__NR_SYSCALL_BASE+236)
-#define __NR_fremovexattr (__NR_SYSCALL_BASE+237)
-#define __NR_tkill (__NR_SYSCALL_BASE+238)
-#endif
-
-/*
- * The following SWIs are ARM private.
- */
-#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000)
-#define __ARM_NR_breakpoint (__ARM_NR_BASE+1)
-#define __ARM_NR_cacheflush (__ARM_NR_BASE+2)
-#define __ARM_NR_usr26 (__ARM_NR_BASE+3)
-#define __ARM_NR_usr32 (__ARM_NR_BASE+4)
-
-#define __sys2(x) #x
-#define __sys1(x) __sys2(x)
-
-#ifndef __syscall
-#if defined(__thumb__)
-#define __syscall(name) \
- "push {r7}\n\t" \
- "mov r7, #" __sys1(__NR_##name) "\n\t" \
- "swi 0\n\t" \
- "pop {r7}"
-#else
-#define __syscall(name) "swi\t" __sys1(__NR_##name) "\n\t"
-#endif
-#endif
-
-#define __syscall_return(type, res) \
-do { \
- if ((unsigned long)(res) >= (unsigned long)(-125)) { \
- errno = -(res); \
- res = -1; \
- } \
- return (type) (res); \
-} while (0)
-
-#define _syscall0(type,name) \
-type name(void) { \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- :"=r" (__res) \
- : \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-#define _syscall1(type,name,type1,arg1) \
-type name(type1 arg1) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-#define _syscall2(type,name,type1,arg1,type2,arg2) \
-type name(type1 arg1,type2 arg2) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __r1 __asm__("r1") = (long)arg2; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0),"r" (__r1) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-
-#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
-type name(type1 arg1,type2 arg2,type3 arg3) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __r1 __asm__("r1") = (long)arg2; \
- register long __r2 __asm__("r2") = (long)arg3; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0),"r" (__r1),"r" (__r2) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-
-#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\
-type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __r1 __asm__("r1") = (long)arg2; \
- register long __r2 __asm__("r2") = (long)arg3; \
- register long __r3 __asm__("r3") = (long)arg4; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-
-#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
-type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __r1 __asm__("r1") = (long)arg2; \
- register long __r2 __asm__("r2") = (long)arg3; \
- register long __r3 __asm__("r3") = (long)arg4; \
- register long __r4 __asm__("r4") = (long)arg5; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \
-type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \
- register long __r0 __asm__("r0") = (long)arg1; \
- register long __r1 __asm__("r1") = (long)arg2; \
- register long __r2 __asm__("r2") = (long)arg3; \
- register long __r3 __asm__("r3") = (long)arg4; \
- register long __r4 __asm__("r4") = (long)arg5; \
- register long __r5 __asm__("r5") = (long)arg6; \
- register long __res __asm__("r0"); \
- __asm__ __volatile__ ( \
- __syscall(name) \
- : "=r" (__res) \
- : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4),"r" (__r5) \
- : "lr"); \
- __syscall_return(type,__res); \
-}
-
-#ifdef __KERNEL_SYSCALLS__
-
-static inline long idle(void)
-{
- extern long sys_idle(void);
- return sys_idle();
-}
-
-static inline long pause(void)
-{
- extern long sys_pause(void);
- return sys_pause();
-}
-
-static inline long sync(void)
-{
- extern long sys_sync(void);
- return sys_sync();
-}
-
-static inline pid_t setsid(void)
-{
- extern long sys_setsid(void);
- return sys_setsid();
-}
-
-static inline long write(int fd, const char *buf, off_t count)
-{
- extern long sys_write(int, const char *, int);
- return sys_write(fd, buf, count);
-}
-
-static inline long read(int fd, char *buf, off_t count)
-{
- extern long sys_read(int, char *, int);
- return sys_read(fd, buf, count);
-}
-
-static inline off_t lseek(int fd, off_t offset, int count)
-{
- extern off_t sys_lseek(int, off_t, int);
- return sys_lseek(fd, offset, count);
-}
-
-static inline long dup(int fd)
-{
- extern long sys_dup(int);
- return sys_dup(fd);
-}
-
-static inline long open(const char *file, int flag, int mode)
-{
- extern long sys_open(const char *, int, int);
- return sys_open(file, flag, mode);
-}
-
-static inline long close(int fd)
-{
- extern long sys_close(unsigned int);
- return sys_close(fd);
-}
-
-static inline long _exit(int exitcode)
-{
- extern long sys_exit(int) __attribute__((noreturn));
- return sys_exit(exitcode);
-}
-
-static inline pid_t waitpid(pid_t pid, int *wait_stat, int options)
-{
- return sys_wait4((int)pid, wait_stat, options, NULL);
-}
-
-static inline long delete_module(const char *name)
-{
- extern long sys_delete_module(const char *name);
- return sys_delete_module(name);
-}
-
-static inline pid_t wait(int * wait_stat)
-{
- return sys_wait4(-1, wait_stat, 0, NULL);
-}
-
-/*
- * The following two can't be eliminated yet - they rely on
- * specific conditions.
- */
-static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp);
-
-#endif
-#endif /* __ASM_ARM_UNISTD_H */
diff --git a/packages/glibc/glibc-2.3.2/autoconf.h b/packages/glibc/glibc-2.3.2/autoconf.h
deleted file mode 100644
index 1c75a161f6..0000000000
--- a/packages/glibc/glibc-2.3.2/autoconf.h
+++ /dev/null
@@ -1,1054 +0,0 @@
-/*
- * Automatically generated C config: don't edit
- */
-#define AUTOCONF_INCLUDED
-#define CONFIG_ARM 1
-#undef CONFIG_EISA
-#undef CONFIG_SBUS
-#undef CONFIG_MCA
-#define CONFIG_UID16 1
-#undef CONFIG_SMP
-#define CONFIG_RWSEM_GENERIC_SPINLOCK 1
-#undef CONFIG_RWSEM_XCHGADD_ALGORITHM
-
-/*
- * Code maturity level options
- */
-#define CONFIG_EXPERIMENTAL 1
-#undef CONFIG_OBSOLETE
-
-/*
- * Loadable module support
- */
-#define CONFIG_MODULES 1
-#undef CONFIG_MODVERSIONS
-#define CONFIG_KMOD 1
-
-/*
- * System Type
- */
-#undef CONFIG_ARCH_ARCA5K
-#undef CONFIG_ARCH_CLPS7500
-#undef CONFIG_ARCH_CO285
-#undef CONFIG_ARCH_EBSA110
-#undef CONFIG_ARCH_L7200
-#undef CONFIG_ARCH_FOOTBRIDGE
-#undef CONFIG_ARCH_INTEGRATOR
-#undef CONFIG_ARCH_RPC
-#define CONFIG_ARCH_SA1100 1
-#undef CONFIG_ARCH_CLPS711X
-#undef CONFIG_ARCH_ANAKIN
-
-/*
- * Archimedes/A5000 Implementations
- */
-
-/*
- * Archimedes/A5000 Implementations (select only ONE)
- */
-#undef CONFIG_ARCH_ARC
-#undef CONFIG_ARCH_A5K
-
-/*
- * Footbridge Implementations
- */
-#undef CONFIG_ARCH_CATS
-#undef CONFIG_ARCH_PERSONAL_SERVER
-#undef CONFIG_ARCH_EBSA285_ADDIN
-#undef CONFIG_ARCH_EBSA285_HOST
-#undef CONFIG_ARCH_NETWINDER
-
-/*
- * SA11x0 Implementations
- */
-#undef CONFIG_SA1100_ASSABET
-#undef CONFIG_ASSABET_NEPONSET
-#undef CONFIG_SA1100_BRUTUS
-#undef CONFIG_SA1100_CERF
-#define CONFIG_SA1100_COLLIE 1
-#define CONFIG_LOCOMO 1
-#undef CONFIG_COLLIE_TS
-#undef CONFIG_COLLIE_TR0
-#undef CONFIG_COLLIE_TR1
-#undef CONFIG_COLLIE_DEV
-#undef CONFIG_COLLIE_G
-#undef CONFIG_SA1100_BITSY
-#undef CONFIG_SA1100_EXTENEX1
-#undef CONFIG_SA1100_FLEXANET
-#undef CONFIG_SA1100_FREEBIRD
-#undef CONFIG_SA1100_GRAPHICSCLIENT
-#undef CONFIG_SA1100_JORNADA720
-#undef CONFIG_SA1100_HUW_WEBPANEL
-#undef CONFIG_SA1100_ITSY
-#undef CONFIG_SA1100_LART
-#undef CONFIG_SA1100_NANOENGINE
-#undef CONFIG_SA1100_OMNIMETER
-#undef CONFIG_SA1100_PANGOLIN
-#undef CONFIG_SA1100_PLEB
-#undef CONFIG_SA1100_SHERMAN
-#undef CONFIG_SA1100_PFS168
-#undef CONFIG_SA1100_VICTOR
-#undef CONFIG_SA1100_XP860
-#undef CONFIG_SA1100_YOPY
-#undef CONFIG_SA1100_USB
-#undef CONFIG_SA1100_USB_NETLINK
-#undef CONFIG_SA1100_USB_CHAR
-
-/*
- * LinkUp 7200/7205/7210 Implementations
- */
-#undef CONFIG_L7205SDB
-#undef CONFIG_IRIS_16MB
-#undef CONFIG_IRIS_32MB
-#undef CONFIG_IRIS_TS0
-#undef CONFIG_NO_FLASH_BOOT_PARAM
-#undef CONFIG_IRIS
-
-/*
- * CLPS711X/EP721X Implementations
- */
-#undef CONFIG_ARCH_P720T
-#undef CONFIG_ARCH_ACORN
-#undef CONFIG_FOOTBRIDGE
-#undef CONFIG_FOOTBRIDGE_HOST
-#undef CONFIG_FOOTBRIDGE_ADDIN
-#define CONFIG_CPU_32 1
-#undef CONFIG_CPU_26
-
-/*
- * Processor Type
- */
-#undef CONFIG_CPU_32v3
-#define CONFIG_CPU_32v4 1
-#undef CONFIG_CPU_ARM610
-#undef CONFIG_CPU_ARM710
-#undef CONFIG_CPU_ARM720T
-#undef CONFIG_CPU_ARM920T
-#undef CONFIG_CPU_ARM1020
-#undef CONFIG_CPU_SA110
-#define CONFIG_CPU_SA1100 1
-#define CONFIG_DISCONTIGMEM 1
-#undef CONFIG_CPU_BIG_ENDIAN
-
-/*
- * General setup
- */
-#undef CONFIG_PCI
-#undef CONFIG_ISA
-#undef CONFIG_ISA_DMA
-#undef CONFIG_CPU_FREQ
-#define CONFIG_HOTPLUG 1
-
-/*
- * PCMCIA/CardBus support
- */
-#define CONFIG_PCMCIA 1
-#undef CONFIG_I82365
-#undef CONFIG_TCIC
-#undef CONFIG_PCMCIA_CLPS6700
-#define CONFIG_PCMCIA_SA1100 1
-#define CONFIG_NET 1
-#define CONFIG_SYSVIPC 1
-#undef CONFIG_BSD_PROCESS_ACCT
-#define CONFIG_SYSCTL 1
-#undef CONFIG_XIP_ROM
-#define CONFIG_FPE_NWFPE 1
-#undef CONFIG_FPE_FASTFPE
-#define CONFIG_KCORE_ELF 1
-#undef CONFIG_KCORE_AOUT
-#undef CONFIG_BINFMT_AOUT
-#define CONFIG_BINFMT_ELF 1
-#undef CONFIG_BINFMT_MISC
-#define CONFIG_BINFMT_MISC_MODULE 1
-#define CONFIG_PM 1
-#define CONFIG_APM 1
-#undef CONFIG_APM_IGNORE_USER_SUSPEND
-#define CONFIG_APM_CPU_IDLE 1
-#define CONFIG_APM_DISPLAY_BLANK 1
-#define CONFIG_APM_RTC_IS_GMT 1
-#undef CONFIG_ARTHUR
-#define CONFIG_CMDLINE "root=/dev/mtdblock4 mem=32M console=null"
-#undef CONFIG_PFS168_CMDLINE
-#undef CONFIG_LEDS
-#define CONFIG_ALIGNMENT_TRAP 1
-#define CONFIG_FREEPG_SIGNAL 1
-#define CONFIG_OOM_KILL_SURVIVAL 1
-#undef CONFIG_DEVICEINFO
-#define CONFIG_DEVICEINFO_MODULE 1
-#undef CONFIG_COLLIE_DEVICEINFO
-#define CONFIG_COLLIE_DEVICEINFO_MODULE 1
-
-/*
- * Parallel port support
- */
-#undef CONFIG_PARPORT
-
-/*
- * Memory Technology Devices (MTD)
- */
-#define CONFIG_MTD 1
-#undef CONFIG_MTD_DEBUG
-#define CONFIG_MTD_PARTITIONS 1
-#undef CONFIG_MTD_REDBOOT_PARTS
-#undef CONFIG_MTD_BOOTLDR_PARTS
-#undef CONFIG_MTD_AFS_PARTS
-
-/*
- * User Modules And Translation Layers
- */
-#define CONFIG_MTD_CHAR 1
-#define CONFIG_MTD_BLOCK 1
-#undef CONFIG_FTL
-#undef CONFIG_NFTL
-
-/*
- * RAM/ROM/Flash chip drivers
- */
-#undef CONFIG_MTD_CFI
-#undef CONFIG_MTD_CFI_INTELEXT
-#undef CONFIG_MTD_CFI_AMDSTD
-#undef CONFIG_MTD_AMDSTD
-#undef CONFIG_MTD_SHARP
-#undef CONFIG_MTD_SHARP16
-#define CONFIG_MTD_COLLIE 1
-#undef CONFIG_MTD_RAM
-#undef CONFIG_MTD_ROM
-#undef CONFIG_MTD_JEDEC
-
-/*
- * Mapping drivers for chip access
- */
-#undef CONFIG_MTD_PHYSMAP
-#undef CONFIG_MTD_SUN_UFLASH
-#undef CONFIG_MTD_NORA
-#undef CONFIG_MTD_PNC2000
-#undef CONFIG_MTD_RPXLITE
-#undef CONFIG_MTD_SC520CDP
-#undef CONFIG_MTD_NETSC520
-#undef CONFIG_MTD_SBC_GXX
-#undef CONFIG_MTD_ELAN_104NC
-#undef CONFIG_MTD_SA1100
-#undef CONFIG_MTD_L7200
-#undef CONFIG_MTD_SA1100_REDBOOT_PARTITIONS
-#undef CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS
-#undef CONFIG_MTD_DC21285
-#undef CONFIG_MTD_IQ80310
-#undef CONFIG_MTD_DBOX2
-#undef CONFIG_MTD_CSTM_MIPS_IXX
-#undef CONFIG_MTD_CFI_FLAGADM
-#undef CONFIG_MTD_ARM_INTEGRATOR
-#undef CONFIG_MTD_MIXMEM
-#undef CONFIG_MTD_OCTAGON
-#undef CONFIG_MTD_VMAX
-#undef CONFIG_MTD_OCELOT
-
-/*
- * Self-contained MTD device drivers
- */
-#undef CONFIG_MTD_PMC551
-#undef CONFIG_MTD_SLRAM
-#undef CONFIG_MTD_MTDROM_L7200
-#undef CONFIG_MTD_MTDRAM_L7200
-#undef CONFIG_MTD_MTDROM_SA1100
-#undef CONFIG_MTD_MTDRAM_SA1100
-#undef CONFIG_MTD_MTDRAM
-
-/*
- * Disk-On-Chip Device Drivers
- */
-#undef CONFIG_MTD_DOC1000
-#undef CONFIG_MTD_DOC2000
-#undef CONFIG_MTD_DOC2001
-#undef CONFIG_MTD_DOCPROBE
-
-/*
- * NAND Flash Device Drivers
- */
-#undef CONFIG_MTD_NAND
-
-/*
- * Plug and Play configuration
- */
-#undef CONFIG_PNP
-#undef CONFIG_ISAPNP
-
-/*
- * Block devices
- */
-#undef CONFIG_BLK_DEV_FD
-#undef CONFIG_BLK_DEV_XD
-#undef CONFIG_PARIDE
-#undef CONFIG_BLK_CPQ_DA
-#undef CONFIG_BLK_CPQ_CISS_DA
-#undef CONFIG_BLK_DEV_DAC960
-#define CONFIG_BLK_DEV_LOOP 1
-#undef CONFIG_BLK_DEV_NBD
-#define CONFIG_BLK_DEV_RAM 1
-#define CONFIG_BLK_DEV_RAM_SIZE (1024)
-#undef CONFIG_BLK_DEV_INITRD
-
-/*
- * Multi-device support (RAID and LVM)
- */
-#undef CONFIG_MD
-#undef CONFIG_BLK_DEV_MD
-#undef CONFIG_MD_LINEAR
-#undef CONFIG_MD_RAID0
-#undef CONFIG_MD_RAID1
-#undef CONFIG_MD_RAID5
-#undef CONFIG_BLK_DEV_LVM
-
-/*
- * Networking options
- */
-#define CONFIG_PACKET 1
-#define CONFIG_PACKET_MMAP 1
-#define CONFIG_NETLINK 1
-#define CONFIG_RTNETLINK 1
-#undef CONFIG_NETLINK_DEV
-#define CONFIG_NETLINK_DEV_MODULE 1
-#define CONFIG_NETFILTER 1
-#undef CONFIG_NETFILTER_DEBUG
-#define CONFIG_FILTER 1
-#define CONFIG_UNIX 1
-#define CONFIG_INET 1
-#define CONFIG_IP_MULTICAST 1
-#undef CONFIG_IP_ADVANCED_ROUTER
-#undef CONFIG_IP_PNP
-#undef CONFIG_NET_IPIP
-#undef CONFIG_NET_IPGRE
-#undef CONFIG_IP_MROUTE
-#undef CONFIG_ARPD
-#undef CONFIG_INET_ECN
-#define CONFIG_SYN_COOKIES 1
-
-/*
- * IP: Netfilter Configuration
- */
-#undef CONFIG_IP_NF_CONNTRACK
-#define CONFIG_IP_NF_CONNTRACK_MODULE 1
-#undef CONFIG_IP_NF_FTP
-#define CONFIG_IP_NF_FTP_MODULE 1
-#undef CONFIG_IP_NF_IRC
-#define CONFIG_IP_NF_IRC_MODULE 1
-#undef CONFIG_IP_NF_QUEUE
-#undef CONFIG_IP_NF_IPTABLES
-#define CONFIG_IP_NF_IPTABLES_MODULE 1
-#undef CONFIG_IP_NF_MATCH_LIMIT
-#define CONFIG_IP_NF_MATCH_LIMIT_MODULE 1
-#undef CONFIG_IP_NF_MATCH_MAC
-#define CONFIG_IP_NF_MATCH_MAC_MODULE 1
-#undef CONFIG_IP_NF_MATCH_MARK
-#define CONFIG_IP_NF_MATCH_MARK_MODULE 1
-#undef CONFIG_IP_NF_MATCH_MULTIPORT
-#define CONFIG_IP_NF_MATCH_MULTIPORT_MODULE 1
-#undef CONFIG_IP_NF_MATCH_TOS
-#define CONFIG_IP_NF_MATCH_TOS_MODULE 1
-#undef CONFIG_IP_NF_MATCH_TCPMSS
-#define CONFIG_IP_NF_MATCH_TCPMSS_MODULE 1
-#undef CONFIG_IP_NF_MATCH_STATE
-#define CONFIG_IP_NF_MATCH_STATE_MODULE 1
-#undef CONFIG_IP_NF_MATCH_UNCLEAN
-#undef CONFIG_IP_NF_MATCH_OWNER
-#undef CONFIG_IP_NF_FILTER
-#define CONFIG_IP_NF_FILTER_MODULE 1
-#undef CONFIG_IP_NF_TARGET_REJECT
-#define CONFIG_IP_NF_TARGET_REJECT_MODULE 1
-#undef CONFIG_IP_NF_TARGET_MIRROR
-#undef CONFIG_IP_NF_NAT
-#define CONFIG_IP_NF_NAT_MODULE 1
-#define CONFIG_IP_NF_NAT_NEEDED 1
-#undef CONFIG_IP_NF_TARGET_MASQUERADE
-#define CONFIG_IP_NF_TARGET_MASQUERADE_MODULE 1
-#undef CONFIG_IP_NF_TARGET_REDIRECT
-#define CONFIG_IP_NF_TARGET_REDIRECT_MODULE 1
-#undef CONFIG_IP_NF_NAT_IRC
-#define CONFIG_IP_NF_NAT_IRC_MODULE 1
-#undef CONFIG_IP_NF_NAT_FTP
-#define CONFIG_IP_NF_NAT_FTP_MODULE 1
-#undef CONFIG_IP_NF_MANGLE
-#define CONFIG_IP_NF_MANGLE_MODULE 1
-#undef CONFIG_IP_NF_TARGET_TOS
-#define CONFIG_IP_NF_TARGET_TOS_MODULE 1
-#undef CONFIG_IP_NF_TARGET_MARK
-#define CONFIG_IP_NF_TARGET_MARK_MODULE 1
-#undef CONFIG_IP_NF_TARGET_LOG
-#define CONFIG_IP_NF_TARGET_LOG_MODULE 1
-#undef CONFIG_IP_NF_TARGET_TCPMSS
-#define CONFIG_IP_NF_TARGET_TCPMSS_MODULE 1
-#undef CONFIG_IP_NF_COMPAT_IPCHAINS
-#undef CONFIG_IP_NF_COMPAT_IPFWADM
-#undef CONFIG_IPV6
-#define CONFIG_IPV6_MODULE 1
-
-/*
- * IPv6: Netfilter Configuration
- */
-#undef CONFIG_IP6_NF_IPTABLES
-#define CONFIG_IP6_NF_IPTABLES_MODULE 1
-#undef CONFIG_IP6_NF_MATCH_LIMIT
-#define CONFIG_IP6_NF_MATCH_LIMIT_MODULE 1
-#undef CONFIG_IP6_NF_MATCH_MARK
-#define CONFIG_IP6_NF_MATCH_MARK_MODULE 1
-#undef CONFIG_IP6_NF_FILTER
-#define CONFIG_IP6_NF_FILTER_MODULE 1
-#undef CONFIG_IP6_NF_MANGLE
-#define CONFIG_IP6_NF_MANGLE_MODULE 1
-#undef CONFIG_IP6_NF_TARGET_MARK
-#define CONFIG_IP6_NF_TARGET_MARK_MODULE 1
-#undef CONFIG_KHTTPD
-#undef CONFIG_ATM
-
-/*
- *
- */
-#undef CONFIG_IPX
-#undef CONFIG_ATALK
-#undef CONFIG_DECNET
-#undef CONFIG_BRIDGE
-#define CONFIG_BRIDGE_MODULE 1
-#undef CONFIG_X25
-#undef CONFIG_LAPB
-#undef CONFIG_LLC
-#undef CONFIG_NET_DIVERT
-#undef CONFIG_ECONET
-#undef CONFIG_WAN_ROUTER
-#undef CONFIG_NET_FASTROUTE
-#undef CONFIG_NET_HW_FLOWCONTROL
-
-/*
- * QoS and/or fair queueing
- */
-#undef CONFIG_NET_SCHED
-
-/*
- * Network device support
- */
-#define CONFIG_NETDEVICES 1
-
-/*
- * ARCnet devices
- */
-#undef CONFIG_ARCNET
-#undef CONFIG_DUMMY
-#undef CONFIG_BONDING
-#undef CONFIG_EQUALIZER
-#undef CONFIG_TUN
-#define CONFIG_TUN_MODULE 1
-#undef CONFIG_ETHERTAP
-
-/*
- * Ethernet (10 or 100Mbit)
- */
-#define CONFIG_NET_ETHERNET 1
-#undef CONFIG_SUNLANCE
-#undef CONFIG_SUNBMAC
-#undef CONFIG_SUNQE
-#undef CONFIG_SUNLANCE
-#undef CONFIG_SUNGEM
-#undef CONFIG_NET_VENDOR_3COM
-#undef CONFIG_LANCE
-#undef CONFIG_NET_VENDOR_SMC
-#undef CONFIG_NET_VENDOR_RACAL
-#undef CONFIG_NET_ISA
-#undef CONFIG_NET_PCI
-#undef CONFIG_NET_POCKET
-
-/*
- * Ethernet (1000 Mbit)
- */
-#undef CONFIG_ACENIC
-#undef CONFIG_ACENIC_OMIT_TIGON_I
-#undef CONFIG_MYRI_SBUS
-#undef CONFIG_HAMACHI
-#undef CONFIG_YELLOWFIN
-#undef CONFIG_SK98LIN
-#undef CONFIG_FDDI
-#undef CONFIG_HIPPI
-#undef CONFIG_PLIP
-#define CONFIG_PPP 1
-#undef CONFIG_PPP_MULTILINK
-#undef CONFIG_PPP_FILTER
-#define CONFIG_PPP_ASYNC 1
-#undef CONFIG_PPP_SYNC_TTY
-#define CONFIG_PPP_DEFLATE 1
-#define CONFIG_PPP_BSDCOMP 1
-#undef CONFIG_PPPOE
-#define CONFIG_PPPOE_MODULE 1
-#undef CONFIG_SLIP
-
-/*
- * Wireless LAN (non-hamradio)
- */
-#define CONFIG_NET_RADIO 1
-#undef CONFIG_STRIP
-#undef CONFIG_WAVELAN
-#undef CONFIG_ARLAN
-#undef CONFIG_AIRONET4500
-#undef CONFIG_AIRONET4500_NONCS
-#undef CONFIG_AIRONET4500_PROC
-
-/*
- * Wireless Pcmcia cards support
- */
-#undef CONFIG_PCMCIA_HERMES
-#undef CONFIG_AIRO_CS
-#define CONFIG_AIRO_CS_MODULE 1
-#define CONFIG_NET_WIRELESS 1
-
-/*
- * Token Ring devices
- */
-#undef CONFIG_TR
-#undef CONFIG_NET_FC
-#undef CONFIG_RCPCI
-#undef CONFIG_SHAPER
-
-/*
- * Wan interfaces
- */
-#undef CONFIG_WAN
-
-/*
- * PCMCIA network device support
- */
-#define CONFIG_NET_PCMCIA 1
-#undef CONFIG_PCMCIA_3C589
-#define CONFIG_PCMCIA_3C589_MODULE 1
-#undef CONFIG_PCMCIA_3C574
-#define CONFIG_PCMCIA_3C574_MODULE 1
-#undef CONFIG_PCMCIA_FMVJ18X
-#define CONFIG_PCMCIA_FMVJ18X_MODULE 1
-#undef CONFIG_PCMCIA_PCNET
-#define CONFIG_PCMCIA_PCNET_MODULE 1
-#undef CONFIG_PCMCIA_NMCLAN
-#define CONFIG_PCMCIA_NMCLAN_MODULE 1
-#undef CONFIG_PCMCIA_SMC91C92
-#define CONFIG_PCMCIA_SMC91C92_MODULE 1
-#undef CONFIG_PCMCIA_XIRC2PS
-#define CONFIG_PCMCIA_XIRC2PS_MODULE 1
-#undef CONFIG_ARCNET_COM20020_CS
-#undef CONFIG_PCMCIA_IBMTR
-#define CONFIG_NET_PCMCIA_RADIO 1
-#undef CONFIG_PCMCIA_RAYCS
-#define CONFIG_PCMCIA_RAYCS_MODULE 1
-#undef CONFIG_PCMCIA_NETWAVE
-#define CONFIG_PCMCIA_NETWAVE_MODULE 1
-#undef CONFIG_PCMCIA_WAVELAN
-#define CONFIG_PCMCIA_WAVELAN_MODULE 1
-#undef CONFIG_AIRONET4500_CS
-
-/*
- * Amateur Radio support
- */
-#undef CONFIG_HAMRADIO
-
-/*
- * IrDA (infrared) support
- */
-#define CONFIG_IRDA 1
-
-/*
- * IrDA protocols
- */
-#undef CONFIG_IRLAN
-#define CONFIG_IRLAN_MODULE 1
-#undef CONFIG_IRNET
-#define CONFIG_IRNET_MODULE 1
-#undef CONFIG_IRCOMM
-#define CONFIG_IRCOMM_MODULE 1
-#undef CONFIG_IRDA_ULTRA
-#undef CONFIG_IRDA_OPTIONS
-
-/*
- * Infrared-port device drivers
- */
-
-/*
- * SIR device drivers
- */
-#undef CONFIG_IRTTY_SIR
-#define CONFIG_IRTTY_SIR_MODULE 1
-#undef CONFIG_IRPORT_SIR
-#define CONFIG_IRPORT_SIR_MODULE 1
-
-/*
- * Dongle support
- */
-#undef CONFIG_DONGLE
-
-/*
- * FIR device drivers
- */
-#undef CONFIG_USB_IRDA
-#undef CONFIG_NSC_FIR
-#undef CONFIG_WINBOND_FIR
-#undef CONFIG_TOSHIBA_FIR
-#undef CONFIG_SMC_IRCC_FIR
-#undef CONFIG_SA1100_FIR
-#define CONFIG_SA1100_FIR_MODULE 1
-
-/*
- * ATA/IDE/MFM/RLL support
- */
-#define CONFIG_IDE 1
-
-/*
- * IDE, ATA and ATAPI Block devices
- */
-#define CONFIG_BLK_DEV_IDE 1
-
-/*
- * Please see Documentation/ide.txt for help/info on IDE drives
- */
-#undef CONFIG_BLK_DEV_HD_IDE
-#undef CONFIG_BLK_DEV_HD
-#define CONFIG_BLK_DEV_IDEDISK 1
-#undef CONFIG_IDEDISK_MULTI_MODE
-#undef CONFIG_BLK_DEV_IDEDISK_VENDOR
-#undef CONFIG_BLK_DEV_IDEDISK_FUJITSU
-#undef CONFIG_BLK_DEV_IDEDISK_IBM
-#undef CONFIG_BLK_DEV_IDEDISK_MAXTOR
-#undef CONFIG_BLK_DEV_IDEDISK_QUANTUM
-#undef CONFIG_BLK_DEV_IDEDISK_SEAGATE
-#undef CONFIG_BLK_DEV_IDEDISK_WD
-#undef CONFIG_BLK_DEV_COMMERIAL
-#undef CONFIG_BLK_DEV_TIVO
-#define CONFIG_BLK_DEV_IDECS 1
-#undef CONFIG_BLK_DEV_IDECD
-#undef CONFIG_BLK_DEV_IDETAPE
-#undef CONFIG_BLK_DEV_IDEFLOPPY
-#undef CONFIG_BLK_DEV_IDESCSI
-
-/*
- * IDE chipset support/bugfixes
- */
-#undef CONFIG_BLK_DEV_CMD640
-#undef CONFIG_BLK_DEV_CMD640_ENHANCED
-#undef CONFIG_BLK_DEV_ISAPNP
-#undef CONFIG_IDE_CHIPSETS
-#undef CONFIG_IDEDMA_AUTO
-#undef CONFIG_DMA_NONPCI
-#undef CONFIG_BLK_DEV_IDE_MODES
-
-/*
- * SCSI support
- */
-#undef CONFIG_SCSI
-
-/*
- * I2O device support
- */
-#undef CONFIG_I2O
-#undef CONFIG_I2O_BLOCK
-#undef CONFIG_I2O_LAN
-#undef CONFIG_I2O_SCSI
-#undef CONFIG_I2O_PROC
-
-/*
- * ISDN subsystem
- */
-#undef CONFIG_ISDN
-
-/*
- * Input core support
- */
-#undef CONFIG_INPUT
-
-/*
- * Character devices
- */
-#define CONFIG_VT 1
-#define CONFIG_VT_CONSOLE 1
-#undef CONFIG_SERIAL
-#define CONFIG_SERIAL_MODULE 1
-#undef CONFIG_SERIAL_FORCE16550A
-#undef CONFIG_SERIAL_EXTENDED
-#undef CONFIG_SERIAL_NONSTANDARD
-#undef CONFIG_SERIAL_21285
-#undef CONFIG_SERIAL_21285_OLD
-#undef CONFIG_SERIAL_21285_CONSOLE
-#undef CONFIG_SERIAL_SA1100
-#undef CONFIG_SERIAL_SA1100_OLD
-#undef CONFIG_SERIAL_SA1100_CONSOLE
-#define CONFIG_SA1100_DEFAULT_BAUDRATE (9600)
-#define CONFIG_SERIAL_COLLIE 1
-#define CONFIG_SERIAL_COLLIE_CONSOLE 1
-#define CONFIG_COLLIE_DEFAULT_BAUDRATE (9600)
-#undef CONFIG_SERIAL_AMBA
-#undef CONFIG_SERIAL_AMBA_CONSOLE
-#undef CONFIG_SERIAL_CLPS711X
-#undef CONFIG_SERIAL_CLPS711X_CONSOLE
-#define CONFIG_UNIX98_PTYS 1
-#define CONFIG_UNIX98_PTY_COUNT (32)
-#define CONFIG_UCB1200 1
-#define CONFIG_TOUCHSCREEN_UCB1200 1
-#undef CONFIG_AUDIO_UCB1200
-#undef CONFIG_ADC_UCB1200
-#undef CONFIG_TOUCHSCREEN_BITSY
-#undef CONFIG_PROFILER
-#undef CONFIG_PFS168_SPI
-#undef CONFIG_PFS168_DTMF
-#undef CONFIG_PFS168_MISC
-
-/*
- * I2C support
- */
-#undef CONFIG_I2C
-
-/*
- * Mice
- */
-#undef CONFIG_BUSMOUSE
-#undef CONFIG_MOUSE
-
-/*
- * Joysticks
- */
-#undef CONFIG_JOYSTICK
-
-/*
- * Input core support is needed for joysticks
- */
-#undef CONFIG_QIC02_TAPE
-
-/*
- * Watchdog Cards
- */
-#undef CONFIG_WATCHDOG
-#undef CONFIG_INTEL_RNG
-#undef CONFIG_NVRAM
-#undef CONFIG_RTC
-#define CONFIG_SA1100_RTC 1
-#undef CONFIG_DTLK
-#undef CONFIG_R3964
-#undef CONFIG_APPLICOM
-
-/*
- * Ftape, the floppy tape device driver
- */
-#undef CONFIG_FTAPE
-#undef CONFIG_AGP
-#undef CONFIG_DRM
-
-/*
- * PCMCIA character devices
- */
-#undef CONFIG_PCMCIA_SERIAL_CS
-#define CONFIG_PCMCIA_SERIAL_CS_MODULE 1
-
-/*
- * Multimedia devices
- */
-#undef CONFIG_VIDEO_DEV
-
-/*
- * File systems
- */
-#undef CONFIG_QUOTA
-#undef CONFIG_AUTOFS_FS
-#define CONFIG_AUTOFS4_FS 1
-#define CONFIG_FS_SYNC 1
-#undef CONFIG_REISERFS_FS
-#undef CONFIG_REISERFS_CHECK
-#undef CONFIG_ADFS_FS
-#undef CONFIG_ADFS_FS_RW
-#undef CONFIG_AFFS_FS
-#undef CONFIG_HFS_FS
-#define CONFIG_HFS_FS_MODULE 1
-#undef CONFIG_BFS_FS
-#define CONFIG_FAT_FS 1
-#undef CONFIG_MSDOS_FS
-#undef CONFIG_UMSDOS_FS
-#define CONFIG_VFAT_FS 1
-#undef CONFIG_EFS_FS
-#undef CONFIG_JFFS_FS
-#define CONFIG_JFFS2_FS 1
-#define CONFIG_JFFS2_FS_DEBUG (0)
-#define CONFIG_CRAMFS 1
-#undef CONFIG_TMPFS
-#define CONFIG_RAMFS 1
-#undef CONFIG_ISO9660_FS
-#define CONFIG_ISO9660_FS_MODULE 1
-#define CONFIG_JOLIET 1
-#define CONFIG_MINIX_FS 1
-#undef CONFIG_VXFS_FS
-#undef CONFIG_NTFS_FS
-#undef CONFIG_NTFS_RW
-#undef CONFIG_HPFS_FS
-#define CONFIG_PROC_FS 1
-#undef CONFIG_DEVFS_FS
-#undef CONFIG_DEVFS_MOUNT
-#undef CONFIG_DEVFS_DEBUG
-#define CONFIG_DEVPTS_FS 1
-#undef CONFIG_QNX4FS_FS
-#undef CONFIG_QNX4FS_RW
-#undef CONFIG_ROMFS_FS
-#define CONFIG_EXT2_FS 1
-#undef CONFIG_SYSV_FS
-#undef CONFIG_UDF_FS
-#undef CONFIG_UDF_RW
-#undef CONFIG_UFS_FS
-#undef CONFIG_UFS_FS_WRITE
-
-/*
- * Network File Systems
- */
-#undef CONFIG_CODA_FS
-#define CONFIG_NFS_FS 1
-#define CONFIG_NFS_V3 1
-#undef CONFIG_ROOT_NFS
-#undef CONFIG_NFSD
-#undef CONFIG_NFSD_V3
-#define CONFIG_SUNRPC 1
-#define CONFIG_LOCKD 1
-#define CONFIG_LOCKD_V4 1
-#define CONFIG_SMB_FS 1
-#define CONFIG_SMB_NLS_DEFAULT 1
-#define CONFIG_SMB_NLS_REMOTE "cp437"
-#undef CONFIG_NCP_FS
-#undef CONFIG_NCPFS_PACKET_SIGNING
-#undef CONFIG_NCPFS_IOCTL_LOCKING
-#undef CONFIG_NCPFS_STRONG
-#undef CONFIG_NCPFS_NFS_NS
-#undef CONFIG_NCPFS_OS2_NS
-#undef CONFIG_NCPFS_SMALLDOS
-#undef CONFIG_NCPFS_NLS
-#undef CONFIG_NCPFS_EXTRAS
-
-/*
- * Partition Types
- */
-#undef CONFIG_PARTITION_ADVANCED
-#define CONFIG_MSDOS_PARTITION 1
-#define CONFIG_SMB_NLS 1
-#define CONFIG_NLS 1
-
-/*
- * Native Language Support
- */
-#define CONFIG_NLS_DEFAULT "iso8859-1"
-#define CONFIG_NLS_CODEPAGE_437 1
-#undef CONFIG_NLS_CODEPAGE_737
-#undef CONFIG_NLS_CODEPAGE_775
-#undef CONFIG_NLS_CODEPAGE_850
-#undef CONFIG_NLS_CODEPAGE_852
-#undef CONFIG_NLS_CODEPAGE_855
-#undef CONFIG_NLS_CODEPAGE_857
-#undef CONFIG_NLS_CODEPAGE_860
-#undef CONFIG_NLS_CODEPAGE_861
-#undef CONFIG_NLS_CODEPAGE_862
-#undef CONFIG_NLS_CODEPAGE_863
-#undef CONFIG_NLS_CODEPAGE_864
-#undef CONFIG_NLS_CODEPAGE_865
-#undef CONFIG_NLS_CODEPAGE_866
-#undef CONFIG_NLS_CODEPAGE_869
-#undef CONFIG_NLS_CODEPAGE_936
-#undef CONFIG_NLS_CODEPAGE_950
-#undef CONFIG_NLS_CODEPAGE_932
-#undef CONFIG_NLS_CODEPAGE_949
-#undef CONFIG_NLS_CODEPAGE_874
-#undef CONFIG_NLS_ISO8859_8
-#undef CONFIG_NLS_CODEPAGE_1251
-#define CONFIG_NLS_ISO8859_1 1
-#undef CONFIG_NLS_ISO8859_2
-#undef CONFIG_NLS_ISO8859_3
-#undef CONFIG_NLS_ISO8859_4
-#undef CONFIG_NLS_ISO8859_5
-#undef CONFIG_NLS_ISO8859_6
-#undef CONFIG_NLS_ISO8859_7
-#undef CONFIG_NLS_ISO8859_9
-#undef CONFIG_NLS_ISO8859_13
-#undef CONFIG_NLS_ISO8859_14
-#undef CONFIG_NLS_ISO8859_15
-#undef CONFIG_NLS_KOI8_R
-#undef CONFIG_NLS_KOI8_U
-#define CONFIG_NLS_UTF8 1
-
-/*
- * Console drivers
- */
-#define CONFIG_PC_KEYMAP 1
-#undef CONFIG_VGA_CONSOLE
-
-/*
- * Frame-buffer support
- */
-#define CONFIG_FB 1
-#define CONFIG_DUMMY_CONSOLE 1
-#undef CONFIG_FB_L7200
-#undef CONFIG_FB_IRIS
-#define CONFIG_FB_COLLIE 1
-#define CONFIG_COLLIE_LOGO_SCREEN 1
-#undef CONFIG_FB_ACORN
-#undef CONFIG_FB_CLPS711X
-#undef CONFIG_FB_CYBER2000
-#undef CONFIG_FB_EPSON1356
-#undef CONFIG_FB_SA1100
-#undef CONFIG_FB_ANAKIN
-#undef CONFIG_FB_E1355
-#undef CONFIG_FB_VIRTUAL
-#define CONFIG_FBCON_ADVANCED 1
-#undef CONFIG_FBCON_MFB
-#undef CONFIG_FBCON_CFB2
-#undef CONFIG_FBCON_CFB4
-#undef CONFIG_FBCON_CFB8
-#define CONFIG_FBCON_CFB16 1
-#undef CONFIG_FBCON_CFB24
-#undef CONFIG_FBCON_CFB32
-#undef CONFIG_FBCON_AFB
-#undef CONFIG_FBCON_ILBM
-#undef CONFIG_FBCON_IPLAN2P2
-#undef CONFIG_FBCON_IPLAN2P4
-#undef CONFIG_FBCON_IPLAN2P8
-#undef CONFIG_FBCON_MAC
-#undef CONFIG_FBCON_VGA_PLANES
-#undef CONFIG_FBCON_VGA
-#undef CONFIG_FBCON_HGA
-#define CONFIG_FBCON_ROTATE_R 1
-#undef CONFIG_FBCON_ROTATE_L
-#undef CONFIG_FBCON_FONTWIDTH8_ONLY
-#define CONFIG_FBCON_FONTS 1
-#undef CONFIG_FONT_8x8
-#undef CONFIG_FONT_8x16
-#undef CONFIG_FONT_SUN8x16
-#undef CONFIG_FONT_SUN12x22
-#undef CONFIG_FONT_6x11
-#undef CONFIG_FONT_5x8
-#define CONFIG_FONT_4x6 1
-#undef CONFIG_FONT_PEARL_8x8
-#undef CONFIG_FONT_ACORN_8x8
-
-/*
- * Sound
- */
-#define CONFIG_SOUND 1
-#undef CONFIG_SOUND_ASSABET_UDA1341
-#undef CONFIG_SOUND_BITSY_UDA1341
-#undef CONFIG_SOUND_SA1111_UDA1341
-#undef CONFIG_SOUND_SA1100SSP
-#undef CONFIG_SOUND_COLLIE_SSP
-#define CONFIG_SOUND_COLLIE_SSP_MODULE 1
-#define CONFIG_COLLIE_PCM1741 1
-#undef CONFIG_COLLIE_PCM1717
-#undef CONFIG_SOUND_COLLIE_TC35143
-#define CONFIG_SOUND_COLLIE_TC35143_MODULE 1
-#undef CONFIG_SOUND_CMPCI
-#undef CONFIG_SOUND_EMU10K1
-#undef CONFIG_SOUND_FUSION
-#undef CONFIG_SOUND_CS4281
-#undef CONFIG_SOUND_ES1370
-#undef CONFIG_SOUND_ES1371
-#undef CONFIG_SOUND_ESSSOLO1
-#undef CONFIG_SOUND_MAESTRO
-#undef CONFIG_SOUND_MAESTRO3
-#undef CONFIG_SOUND_ICH
-#undef CONFIG_SOUND_SONICVIBES
-#undef CONFIG_SOUND_TRIDENT
-#undef CONFIG_SOUND_MSNDCLAS
-#undef CONFIG_SOUND_MSNDPIN
-#undef CONFIG_SOUND_VIA82CXXX
-#undef CONFIG_MIDI_VIA82CXXX
-#undef CONFIG_SOUND_OSS
-#undef CONFIG_SOUND_TVMIXER
-
-/*
- * USB support
- */
-#undef CONFIG_USB
-
-/*
- * USB Device Support
- */
-#undef CONFIG_USBD
-#define CONFIG_USBD_MODULE 1
-#define CONFIG_USBD_VENDORID 0x4dd
-#define CONFIG_USBD_PRODUCTID 0x8002
-#define CONFIG_USBD_PRODUCT_NAME "SL Series"
-#define CONFIG_USBD_MANUFACTURER "Sharp"
-#define CONFIG_USBD_USE_SERIAL_NUMBER 1
-#define CONFIG_USBD_SERIAL_NUMBER_STR "A01234"
-#define CONFIG_USBD_SELFPOWERED 1
-#undef CONFIG_USBD_MONITOR
-#define CONFIG_USBD_MONITOR_MODULE 1
-
-/*
- *
- */
-#define CONFIG_USBD_PROCFS 1
-
-/*
- * USB Device functions --
- */
-
-/*
- * Network Function
- */
-#undef CONFIG_USBD_NET
-#define CONFIG_USBD_NET_MODULE 1
-#define CONFIG_USBD_NET_VENDORID 0x4DD
-#define CONFIG_USBD_NET_PRODUCTID 0x8004
-#define CONFIG_USBD_NET_IFNAME "usbd"
-#define CONFIG_USBD_NET_OUT_ENDPOINT (1)
-#define CONFIG_USBD_NET_OUT_PKTSIZE (64)
-#define CONFIG_USBD_NET_IN_ENDPOINT (2)
-#define CONFIG_USBD_NET_IN_PKTSIZE (64)
-#undef CONFIG_USBD_NET_ALWAYSUP
-#undef CONFIG_USBD_NET_SAFE
-#define CONFIG_USBD_NET_CDC 1
-#define CONFIG_USBD_NET_REMOTE_MACADDR "400002000001"
-#define CONFIG_USBD_NET_REMOTE_OUI 0x400002
-#define CONFIG_USBD_NET_LOCAL_MACADDR "400001000001"
-#define CONFIG_USBD_NET_LOCAL_OUI 0x400001
-#undef CONFIG_USBD_NET_MACADDR_FROM_USBADDR
-
-/*
- * Serial Function
- */
-#undef CONFIG_USBD_SERIAL
-#define CONFIG_USBD_SERIAL_MODULE 1
-#define CONFIG_USBD_SERIAL_VENDORID 0x4dd
-#define CONFIG_USBD_SERIAL_PRODUCTID 0x8002
-#undef CONFIG_USBD_SERIAL_CDC
-#define CONFIG_USBD_SERIAL_OUT_ENDPOINT (1)
-#define CONFIG_USBD_SERIAL_IN_PKTSIZE (64)
-#define CONFIG_USBD_SERIAL_IN_ENDPOINT (2)
-#define CONFIG_USBD_SERIAL_OUT_PKTSIZE (64)
-#undef CONFIG_USBD_SERIAL_SAFE
-
-/*
- * USB Device bus interfaces --
- */
-
-/*
- * Intel StrongArm SA-1110 Bus Interface Driver
- */
-#undef CONFIG_USBD_SA1100_BUS
-#define CONFIG_USBD_SA1100_BUS_MODULE 1
-#undef CONFIG_SA1100_NEW_DMA_COOPERATION
-#define CONFIG_USBD_STALL_TIMEOUT (0)
-#define CONFIG_USBD_STALL_DISCONNECT_DURATION (2)
-#undef CONFIG_USBD_TRAFFIC_KEEPAWAKE
-
-/*
- * Generic Bus Interface
- */
-#undef CONFIG_USBD_GENERIC_BUS
-
-/*
- * Bluetooth support
- */
-#undef CONFIG_BLUEZ
-
-/*
- * Kernel hacking
- */
-#undef CONFIG_NO_FRAME_POINTER
-#undef CONFIG_DEBUG_ERRORS
-#undef CONFIG_DEBUG_USER
-#undef CONFIG_DEBUG_INFO
-#define CONFIG_MAGIC_SYSRQ 1
-#undef CONFIG_NO_PGT_CACHE
-#undef CONFIG_DEBUG_LL
-#undef CONFIG_DEBUG_DC21285_PORT
-#undef CONFIG_DEBUG_CLPS711X_UART2
diff --git a/packages/glibc/glibc-2.3.2/dyn-ldconfig.diff b/packages/glibc/glibc-2.3.2/dyn-ldconfig.diff
deleted file mode 100644
index 471cf63040..0000000000
--- a/packages/glibc/glibc-2.3.2/dyn-ldconfig.diff
+++ /dev/null
@@ -1,62 +0,0 @@
---- elf/Makefile 13 Mar 2003 21:50:57 -0000 1.258
-+++ elf/Makefile 27 Mar 2003 20:36:07 -0000
-@@ -109,12 +109,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
---- elf/ldconfig.c 13 Jan 2003 08:53:14 -0000 1.31
-+++ elf/ldconfig.c 27 Mar 2003 20:36:09 -0000
-@@ -149,6 +149,9 @@
- static int
- is_hwcap_platform (const char *name)
- {
-+#if 1
-+ return 0;
-+#else
- int hwcap_idx = _dl_string_hwcap (name);
-
- if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask))
-@@ -164,6 +167,7 @@
- #endif
-
- return 0;
-+#endif
- }
-
- /* Get hwcap (including platform) encoding of path. */
-@@ -175,6 +179,7 @@
- uint64_t hwcap = 0;
- uint64_t h;
-
-+#if 0
- size_t len;
-
- len = strlen (str);
-@@ -210,6 +215,7 @@
- *ptr = '\0';
- }
-
-+#endif
- free (str);
- return hwcap;
- }
---- elf/Versions.old Fri Oct 1 06:32:06 2004
-+++ elf/Versions Fri Oct 1 06:44:13 2004
-@@ -54,5 +54,6 @@
- _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls;
- _dl_get_tls_static_info; _dl_allocate_tls_init;
- _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo;
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-2.3.2/etc/ld.so.conf b/packages/glibc/glibc-2.3.2/etc/ld.so.conf
deleted file mode 100644
index 46e06d3f0a..0000000000
--- a/packages/glibc/glibc-2.3.2/etc/ld.so.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/local/lib
-
diff --git a/packages/glibc/glibc-2.3.2/glibc-2.3.2-200304020432.patch b/packages/glibc/glibc-2.3.2/glibc-2.3.2-200304020432.patch
deleted file mode 100644
index 2fcd1f2da6..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc-2.3.2-200304020432.patch
+++ /dev/null
@@ -1,136135 +0,0 @@
-diff -u -udbrN glibc-2.3.2/ChangeLog glibc-2.3.2-200304020432/ChangeLog
---- glibc-2.3.2/ChangeLog Sat Mar 1 02:10:14 2003
-+++ glibc-2.3.2-200304020432/ChangeLog Wed Apr 2 06:00:15 2003
-@@ -1,3 +1,1581 @@
-+2003-04-01 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Allow dots in soname suffix.
-+
-+ * scripts/abilist.awk (emit): Fix bailout condition.
-+
-+2003-04-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the
-+ IA-64 version.
-+
-+ * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp
-+ register as input to asm.
-+
-+2003-04-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo.
-+
-+2003-04-01 Andreas Jaeger <aj@suse.de>
-+
-+ * configure.in: Output as/ld as name if version is too old.
-+
-+2003-03-31 Daniel Jacobowitz <drow@mvista.com>
-+
-+ * configure.in: Don't require an installed C library in the test
-+ for ".set" assembler support.
-+
-+2003-03-31 Roland McGrath <roland@redhat.com>
-+
-+ * signal/tst-sigset.c: New file.
-+ * signal/Makefile (tests): Add it.
-+
-+2003-03-31 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65.
-+ * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise.
-+ * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise.
-+ (__SIGRTMAX): Adjust accordingly.
-+ * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define
-+ second compatibility symbol set.
-+ * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define.
-+
-+2003-03-31 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test):
-+ Define.
-+ (atomic_decrement_and_test): Fix test.
-+
-+2003-03-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc32/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc64/bits/atomic.h: New file.
-+ * sysdeps/sparc/sparc32/atomicity.h: Removed.
-+ * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed.
-+ * sysdeps/sparc/sparc64/atomicity.h: Removed.
-+
-+2003-03-30 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone.
-+
-+ * intl/po2test.sed: Anchor substitution regexps to fix last change.
-+
-+2003-03-29 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * intl/po2test.sed: Unify the transformations for msgid and msgstr
-+ and remove a useless s/// command.
-+
-+2003-03-27 David Mosberger <davidm@hpl.hp.com>
-+
-+ * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0"
-+ directive into empty .prologue region to ensure that call-chain
-+ is terminated even for the first instruction.
-+
-+ * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom
-+ to terminate call-chain right from the get-go.
-+
-+ * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary
-+ stop bit between compare & branch.
-+
-+2003-03-29 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal
-+ point correctly [PR libc/4993].
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid
-+ netlink_open calls if netlink is known to not be available.
-+
-+2003-03-29 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * configure.in: Add mips64* support.
-+ * sysdeps/mips/bits/endian.h: Make it bi-endian.
-+ * sysdeps/mips/mipsel/bits/endian.h: Removed.
-+ * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
-+ * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
-+ * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
-+ * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
-+ * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
-+ * sysdeps/mips/Implies: Moved wordsize-32 to...
-+ * sysdeps/mips/mips32/Implies: New file.
-+ * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
-+ ret_NOERRNO): New.
-+ (ret, PSEUDO_END): Moved past END.
-+ (PSEUDO): Moved to...
-+ * sysdeps/unix/mips/mips32/sysdep.h: New file.
-+ * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
-+ * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
-+ * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start):
-+ Re-introduce ENTRY.
-+
-+2003-03-28 Thorsten Kukuk <kukuk@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/ifaddrs.c: New file.
-+ * inet/test-ifaddrs.c: Allow AF_PACKET.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Add
-+ __ASSUME_NETLINK_SUPPORT.
-+
-+2003-03-28 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/vismain.c (do_test): Comment out tests which fail in the moment.
-+
-+2003-03-26 H.J. Lu <hjl@gnu.org>
-+
-+ * elf/vismod.h (getvarlocal1): Return const char **.
-+ (getvarinmod1): Likewise.
-+ (getvaritcpt1): Likewise.
-+ (getvarlocal2): Likewise.
-+ (getvarinmod2): Likewise.
-+ (getvaritcpt2): Likewise.
-+ (getvaritcpt3): Likewise.
-+ * elf/vismain.c (do_test): Adjusted.
-+ * elf/vismod1.c (getvarlocal1): Return address.
-+ (getvarinmod1): Likewise.
-+ (getvaritcpt1): Likewise.
-+ * elf/vismod2.c (getvarlocal2): Likewise.
-+ (getvarinmod2): Likewise.
-+ (getvaritcpt2): Likewise.
-+ * elf/vismod3.c (getvaritcpt3): Likewise.
-+
-+2003-03-28 Roland McGrath <roland@redhat.com>
-+
-+ * elf/vismain.c (do_test): Print both addresses when they don't match.
-+
-+ * scripts/abilist.awk: If given -v filename_regexp and/or -v
-+ libname_regexp when parsing names, then produce output only
-+ for those matching the given regexps. In combine mode, save all
-+ stanzas for a final sorting by stanza header at the end.
-+ Emit a blank line between stanzas.
-+
-+ * scripts/abilist.awk: When given -v combine=1, do parse_names and
-+ emit a single output stream with lib name in stanza header lines.
-+
-+ * scripts/abilist.awk: Emit A for all *ABS* regardless of type.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h [! __powerpc64__]
-+ (__arch_atomic_decrement_if_positive_64): Fix bogus definition.
-+
-+2003-03-28 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_8_acq): ... this.
-+ (__arch_compare_and_exchange_val_16_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_16_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq):
-+ Return old value. Make asm output reg constraint earlyclobber.
-+ Renamed from...
-+ (__arch_compare_and_exchange_32_acq): ... this.
-+ (__arch_compare_and_exchange_val_64_acq):
-+ Renamed from...
-+ (__arch_compare_and_exchange_64_acq): ... this.
-+ (atomic_exchange_and_add): Use local variables and
-+ __arch_compare_and_exchange_val_64_acq.
-+ (atomic_add): Likewise.
-+ (atomic_add_negative, atomic_add_zero): Use local variables.
-+
-+2003-03-28 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/mips/sysdep.S: Include sys/asm.h.
-+
-+2003-03-27 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makefile: Remove libmd5crypt goal.
-+
-+2003-03-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore
-+ special handling of relocations against local symbols.
-+
-+2003-03-27 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h
-+ (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__].
-+ [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq):
-+ Define PPC64 specific version.
-+ [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq):
-+ Change (mem) constraint to "b".
-+ [__powerpc64__] (__arch_atomic_exchange_and add_64):
-+ Replace addi with add. Change (value) contraint to "r".
-+ Change (mem) constraint to "b".
-+ [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro.
-+ (__arch_atomic_exchange_32): Change (mem) constraint to "b".
-+ (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b".
-+ (__arch_atomic_decrement_if_positive_32): New macro.
-+ (atomic_decrement_if_positive): Use __arch* macros.
-+
-+2003-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/fpu/libm-test-ulps: Update.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/rpm2dynsym.sh: New file.
-+ * Makefile (distribute): Add it.
-+
-+2003-03-27 David Mosberger <davidm@hpl.hp.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's
-+ ar.unat before returning. Add missing .mem.offset directives
-+ to ensure file gets assembled without warnings.
-+ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
-+
-+2003-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>:
-+ Return -1 instead of 0 if clock_getres failed.
-+
-+2003-03-27 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: If variable `parse_names' is set, grok the file
-+ header lines and write out foo.symlist files for each foo.so.NN listed.
-+
-+ * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden.
-+ This symbol is exported, and we don't want to hide it.
-+ Add libc_hidden_proto instead.
-+ (_IO_file_jumps): Add libc_hidden_proto.
-+ * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def.
-+ Remove INTVARDEF.
-+ * libio/fileops.c (_IO_file_jumps): Likewise.
-+ * libio/stdfiles.c: Don't use INTUSE on them.
-+ * libio/iofdopen.c (_IO_new_fdopen): Likewise.
-+ * libio/iofopen.c (__fopen_internal): Likewise.
-+ * libio/freopen.c (freopen): Likewise.
-+ * libio/freopen64.c (freopen64): Likewise.
-+ * libio/iovdprintf.c (_IO_vdprintf): Likewise.
-+
-+ * Makerules (check-abi) [$(enable-check-abi) = warn]:
-+ Ignore exit status from diff.
-+ * configure.in (enable_check_abi): Document possible value "warn".
-+ Change default to no for now.
-+ * configure: Regenerated.
-+
-+ * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning
-+ macro calls and a #include <stub-tag.h> at the end.
-+ * Makerules ($(objpfx)stubs): Tweak sed commands.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in
-+ caller column for *xattr syscalls, since they are in sysdeps/generic.
-+
-+ * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid
-+ * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid
-+
-+2003-03-26 Roland McGrath <roland@redhat.com>
-+
-+ * Makerules (check-abi-config): Use /thread instead of /tls when
-+ use-thread and not just use-tls is set.
-+
-+ * Makerules (update-abi): Put quotes around $(update-abi-config).
-+
-+ * elf/Makefile (check-abi): Depend on check-abi-ld.
-+ (update-abi): Depend on update-abi-ld.
-+
-+2003-03-26 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and
-+ do not check for errors (unless testing for 32bit variant).
-+ * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
-+
-+2003-03-27 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use
-+ unconditional mov. Remove nop.
-+
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm.
-+ * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code
-+ when __ASSUME_VFORK_SYSCALL is defined.
-+ * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for
-+ __ASSUME_MMAP2_SYSCALL.
-+ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for
-+ __ASSUME_REALTIME_SIGNALS.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2
-+ only if DL_NO_COPY_RELOCS is not defined.
-+ * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS.
-+
-+2003-03-26 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/make-syscalls.sh: When an undefined syscall has
-+ SOURCE=-, append its symbol names to make variable unix-stub-syscalls.
-+ * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls]
-+ (sysdep_routines): Add stub-syscalls.
-+ ($(objpfx)stub-syscalls.c): New target.
-+ (generated): Add stub-syscalls.c.
-+
-+ * tls.make.c: Also define use-tls according to USE_TLS macro.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid
-+ no-op padding element.
-+ * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
-+
-+2003-03-26 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error
-+ condition check for the return value of getgroups32.
-+
-+2003-03-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO):
-+ Fix a typo.
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO,
-+ PSEUDO_END_NOERRNO): Define.
-+ * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo.
-+ Define to PSEUDO_END.
-+
-+2003-03-26 Ulrich Drepper <drepper@redhat.com>
-+
-+ * abilist/librt.abilist: Add new timer interfaces for 64-bit archs.
-+
-+2003-03-25 Jiro SEKIBA <jir@yamato.ibm.com>
-+
-+ * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP.
-+ * iconvdata/bug-iconv4.c: New file.
-+ * iconvdata/Makefile (tests): Add bug-iconv4.
-+
-+2003-03-25 H.J. Lu <hjl@gnu.org>
-+
-+ * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected
-+ symbols twice.
-+ (_dl_lookup_versioned_symbol): Likewise.
-+
-+2003-03-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * csu/tst-atomic.c (do_test): Add some new
-+ atomic_compare_and_exchange_val_acq, atomic_add_zero,
-+ atomic_compare_and_exchange_bool_acq and atomic_add_negative tests.
-+ * include/atomic.h (atomic_add_negative, atomic_add_zero):
-+ Prefix local variable so that it doesn't clash with the one
-+ in atomic_exchange_and_add.
-+ * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void *
-+ pointers.
-+ (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i.
-+ * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force
-+ value into register.
-+ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq):
-+ Cast newval to long.
-+ * sysdeps/x86_64/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to
-+ long.
-+ (atomic_exchange): Cast newvalue to long if sizeof == 8.
-+ (atomic_exchange_and_add): Cast value to long if sizeof == 8.
-+ (atomic_add, atomic_add_negative, atomic_add_zero): Likewise.
-+ (atomic_bit_set): Shift 1L up in all cases to shut up warnings.
-+
-+2003-03-21 Martin Schwidefsky <schwidefskyde.ibm.com>
-+
-+ * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order
-+ bit from backtrace addresses.
-+
-+2003-03-21 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned
-+ __chown symbols.
-+
-+2003-03-25 Roland McGrath <roland@redhat.com>
-+
-+ * config.make.in (enable-check-abi): New variable from configure.
-+ * configure.in (enable_check_abi): New substituted variable,
-+ controlled by --{enable,disable}-check-abi (default yes).
-+ * configure: Regenerated.
-+ * Makerules [$(enable-check-abi) = yes] (tests): Put this condition
-+ on check-abi dependency.
-+
-+2003-03-26 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h: Fix typos.
-+ * include/atomic.h: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO.
-+
-+2003-03-25 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro.
-+ (__arch_atomic_exchange_64): New macro.
-+ (atomic_exchange): Use them.
-+ (__arch_atomic_exchange_and_add_32): New macro.
-+ (__arch_atomic_exchange_and_add_64): New macro.
-+ (atomic_exchange_and_add): Use them.
-+ Original patch from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+2003-03-25 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64):
-+ Define.
-+ * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all
-+ ISA tests.
-+ (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA.
-+ (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG.
-+ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
-+ to decide whether to add padding.
-+ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
-+ to decide whether to add padding.
-+ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct
-+ old_kernel_sigaction): Likewise.
-+
-+2003-03-25 Ulrich Drepper <drepper@redhat.com>
-+
-+ * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and
-+ atomic_add_zero were supposed to do.
-+ * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero
-+ to x86 behavior.
-+
-+ * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*.
-+ This matches the new timer implementation.
-+ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE):
-+ Likewise.
-+ * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust
-+ timer info for what the kernel provides these days.
-+ (struct sigevent): Add _tid field.
-+ Define SIGEV_THREAD_ID.
-+ Remove struct __pthread_attr_s forward declaration.
-+ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
-+
-+ * Versions.def (librt): Add GLIBC_2.3.3.
-+
-+ * abilist/libpthread.abilist: Update for nptl.
-+
-+2003-03-24 Jon Grimm <jgrimm@us.ibm.com>
-+
-+ * inet/netinet/in.h: Add IPPROTO_SCTP.
-+
-+2003-03-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define.
-+
-+2003-03-24 Philip Blundell <philb@gnu.org>
-+
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL):
-+ Remove a1 from clobber list.
-+
-+2003-03-24 Ulrich Drepper <drepper@redhat.com>
-+
-+ * timezone/antarctica: Update from tzdata2003a.
-+ * timezone/asia: Likewise.
-+ * timezone/australasia: Likewise.
-+ * timezone/europe: Likewise.
-+ * timezone/iso3166.tab: Likewise.
-+ * timezone/northamerica: Likewise.
-+ * timezone/southamerica: Likewise.
-+ * timezone/zone.tab: Likewise.
-+
-+2003-03-24 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo.
-+
-+2003-03-23 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid
-+ unwanted expansion by definining to ret. Patch by Ian Wienand.
-+
-+ * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of
-+ the parameter description to denote no error checking. Generate
-+ appropriate pseudo asm code.
-+ * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'.
-+ * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid,
-+ getpgrp, and getppid with 'E'.
-+ * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO,
-+ PSEUDO_END_NOERRNO, and ret_NOERRNO.
-+ * sysdeps/powerpc/powerpc64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysdep.h: Likewise.
-+ * sysdeps/unix/alpha/sysdep.h: Likewise.
-+ * sysdeps/unix/sparc/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
-+
-+2003-03-23 Roland McGrath <roland@redhat.com>
-+
-+ * Makeconfig (+includes): Don't use $(last-includes).
-+
-+2003-03-22 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns.
-+ * sysdeps/unix/sysv/linux/configure: Rebuilt.
-+
-+2003-03-23 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/alpha/fpu/libm-test-ulps: Update.
-+ * sysdeps/arm/libm-test-ulps: Update.
-+ * sysdeps/hppa/fpu/libm-test-ulps: Update.
-+ * sysdeps/ia64/fpu/libm-test-ulps: Update.
-+ * sysdeps/mips/fpu/libm-test-ulps: Update.
-+ * sysdeps/powerpc/nofpu/libm-test-ulps: Update.
-+ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
-+ * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update.
-+ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.
-+ * sysdeps/sh/sh4/fpu/libm-test-ulps: Update.
-+ * sysdeps/s390/fpu/libm-test-ulps: Update.
-+ * sysdeps/x86_64/fpu/libm-test-ulps: Update.
-+
-+2003-03-22 Roland McGrath <roland@redhat.com>
-+
-+ * include/atomic.h: Put parens around all macro arguments.
-+ (__atomic_val_bysize, __atomic_bool_bysize): New macros.
-+ (atomic_compare_and_exchange_val_acq): Use it.
-+ (atomic_compare_and_exchange_bool_acq): Likewise.
-+ (atomic_increment_and_test): Invert sense of test.
-+ (atomic_decrement_and_test): Likewise.
-+ * csu/tst-atomic.c: Update those tests to match.
-+
-+2003-03-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment.
-+ Don't define if __arch_compare_and_exchange_val_32_acq is not defined.
-+ (atomic_compare_and_exchange_bool_acq): Add comment. Don't use
-+ __oldval variable in the macro, since it might be macro argument.
-+ (atomic_decrement_if_positive): Initialize __memp, remove setting
-+ of non-existent variable.
-+ (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting.
-+ * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement
-+ using atomic_compare_and_exchange_val_acq.
-+ (atomic_decrement_if_positive, atomic_bit_test_set): Define.
-+ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
-+ Renamed from...
-+ (__arch_compare_and_exchange_bool_8_acq): ... this.
-+ (__arch_compare_and_exchange_val_16_acq): Renamed from...
-+ (__arch_compare_and_exchange_bool_16_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed
-+ from...
-+ (__arch_compare_and_exchange_bool_32_acq): ... this.
-+ (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed
-+ from...
-+ (__arch_compare_and_exchange_bool_64_acq): ... this.
-+ (__arch_compare_and_exchange_val_32_acq): Use __typeof for local
-+ variables types instead of assuming int.
-+ Change prefix of local variables to __arch.
-+ * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq):
-+ Remove.
-+ (atomic_compare_and_exchange_val_acq,
-+ atomic_compare_and_exchange_bool_acq): Define.
-+
-+ * csu/tst-atomic.c: New test.
-+ * csu/tst-atomic-long.c: New test.
-+ * csu/Makefile (tests): Add tst-atomic and tst-atomic-long.
-+
-+ * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong.
-+
-+ * sysdeps/s390/Versions: Add trailing newline.
-+
-+ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning
-+ if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument.
-+
-+2003-03-22 Andreas Schwab <schwab@suse.de>
-+
-+ * sysdeps/m68k/fpu/libm-test-ulps: Update.
-+
-+ * sysdeps/m68k/m68020/bits/atomic.h: New file.
-+ * sysdeps/m68k/m68020/atomicity.h: Removed.
-+
-+2003-03-22 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation
-+ data structures and macros. Protect from multiple inclusion.
-+
-+ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless
-+ typo in #if test.
-+
-+2003-03-21 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/i386/fpu/libm-test-ulps: Update.
-+
-+ * math/libm-test.inc (tgamma_test): Recompute some constants with
-+ 36 digits precision.
-+ (lgamma_test): Likewise.
-+ (ccos_test): Likewise.
-+ (ccosh_test): Likewise.
-+ (clog10_test): Likewise.
-+ (csin_test): Likewise.
-+ (csinh_test): Likewise.
-+ (ctan_test): Likewise.
-+ (ctanh_test): Likewise.
-+
-+2003-03-19 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir"
-+ constraint to permit non-constant BIT argument.
-+ (atomic_bit_test_set): Likewise.
-+ * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise.
-+ (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32.
-+ For quadword case, use "i" constraint if __builtin_constant_p and < 32
-+ or "r" constraint otherwise.
-+
-+ * configure.in: Move AC_PROG_CC and other program-finding before all
-+ the version checks.
-+ * configure: Regenerated.
-+
-+2003-03-21 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke
-+ unaligned copying of 8-15 bytes. From Chris Demetriou
-+ <cgd@broadcom.com>. Fix label names.
-+ * sysdeps/mips/mips64/memset.S: Fix label names. Make similar
-+ change as to memcpy.S.
-+ * sysdeps/mips/memcpy.S: Formatting changes.
-+ * sysdeps/mips/memset.S: Likewise.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon.
-+
-+2003-03-21 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New.
-+ * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/i386/i486/bits/atomic.h
-+ (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling
-+ version of the macro to avoid compile-time warnings.
-+ [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above.
-+ (atomic_exchange_and_add, atomic_add): Fix name and usage of it.
-+ (atomic_increment, atomic_decrement): Likewise.
-+
-+2003-03-21 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints.
-+ * sysdeps/i386/i486/bits/atomic.h: Likewise.
-+
-+2003-03-21 Roland McGrath <roland@redhat.com>
-+
-+ * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h: Define atomic_compare_and_exchange_val_acq,
-+ atomic_compare_and_exchange_val_rel,
-+ atomic_compare_and_exchange_bool_acq, and
-+ atomic_compare_and_exchange_bool_rel instead of
-+ atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel.
-+ * sysdeps/i386/i486/bits/atomic.h: Define
-+ __arch_compare_and_exchange_val_*_acq instead of
-+ __arch_compare_and_exchange_*_acq.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+ * sysdeps/ia64/bits/atomic.h: Define
-+ __arch_compare_and_exchange_bool_*_acq instead of
-+ __arch_compare_and_exchange_*_acq.
-+ * sysdeps/powerpc/bits/atomic.h: Likewise.
-+ * sysdeps/s390/bits/atomic.h: Likewise.
-+ * gmon/mcount.c: Adjust for new form of compare&exchange macros.
-+ * malloc/set-freeres.c: Likewise.
-+ * nscd/cache.c: Likewise.
-+ * stdlib/cxa_finalize.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs.
-+ * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust.
-+ * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
-+
-+ * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset
-+ into high and low halves on n64.
-+ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h (atomic_decrement_if_positive): Adjust for the
-+ correct atomic_compare_and_exchange_acq semantics.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/ieee754.h: Remove excess #endif.
-+
-+2003-03-20 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused
-+ variable. Remove superfluous memory clobber.
-+
-+ * include/atomic.h: Syntax braino fix.
-+
-+ * posix/tst-nice.c (do_test): Use %m formats instead of printing errno
-+ in decimal. Don't bail if niced at start. Just check that nice call
-+ bumps the total at all.
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers,
-+ including pc, gp, sp and fp, as long long.
-+ * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux.
-+ * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments.
-+ Add gp argument, and set gp in the jmpbuf to it.
-+ * sysdeps/mips/setjmp_aux.c: Revert to o32-only.
-+
-+2003-03-20 Ulrich Drepper <drepper@redhat.com>
-+
-+ * include/atomic.h: Define atomic_exchange and
-+ atomic_decrement_if_positive if not already defined. Add some
-+ __builtin_expect.
-+ * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange.
-+ * sysdeps/x86_64/bits/atomic.h: Likewise.
-+ * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange.
-+ * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define
-+ atomic_exchange, atomic_exchange_and_add, and
-+ atomic_decrement_if_positive
-+
-+2003-03-20 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend
-+ with a single instruction.
-+
-+ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define
-+ properly for n64.
-+ (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr
-+ type.
-+ (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf
-+ Word before comparing with gotsym. Take reloc_addr argument as
-+ void*. Remove the code added for the compiler to drop any
-+ alignment assumptions.
-+
-+2003-03-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Makefile (distribute): Add include/atomic.h and bits/atomic.h.
-+ * include/atomic.h: New file.
-+ * sysdeps/i386/i486/bits/atomic.h: New file.
-+ * sysdeps/x86_64/bits/atomic.h: New file.
-+ * sysdeps/s390/bits/atomic.h: New file.
-+ * sysdeps/sh/bits/atomic.h: New file.
-+ * sysdeps/ia64/bits/atomic.h: New file.
-+ * sysdeps/powerpc/bits/atomic.h: New file.
-+ * sysdeps/generic/bits/atomic.h: New file.
-+ * sysdeps/i386/i486/atomicity.h: Removed.
-+ * sysdeps/x86_64/atomicity.h: Removed.
-+ * sysdeps/s390/s390-32/atomicity.h: Removed.
-+ * sysdeps/s390/s390-64/atomicity.h: Removed.
-+ * sysdeps/ia64/atomicity.h: Removed.
-+ * sysdeps/powerpc/powerpc32/atomicity.h: Removed.
-+ * sysdeps/powerpc/powerpc64/atomicity.h: Removed.
-+ * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust
-+ use of macros from atomicity.h to new names and semantics.
-+ * gmon_mcount.c: Likewise.
-+ * malloc/set-freeres.c: Likewise.
-+ * nscd/cache.c: Likewise.
-+ * stdlib/cxa_finalize.c: Likewise.
-+ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-+
-+2003-03-19 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/ieee754.h: New file, suitable to replace both
-+ ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept
-+ mips-specific for now.
-+
-+2003-03-19 Ulrich Drepper <drepper@redhat.com>
-+
-+ * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle
-+ hexdigits correctly. Reported by Fred Tydeman <tydeman@tybor.com>.
-+ * stdlib/tst-strtod.c: Add test for the bug.
-+
-+ * posix/tst-nice.c (do_test): Remove invalid of return value.
-+ Don't run test if initial level != 0.
-+
-+2003-03-19 Amos Waterland <apw@us.ibm.com>
-+
-+ * posix/tst-nice.c: New file.
-+ * posix/Makefile (tests): Add tst-nice.
-+
-+2003-03-18 Roland McGrath <roland@redhat.com>
-+
-+ * abilist: New directory of libfoo.abilist files maintained using
-+ scripts/merge-abilist.awk and "make update-abi" rules.
-+ * Makefile (distribute): Add abilist/*.abilist.
-+ * Makerules [$(build-shared) = yes] [$(subdir)] (tests):
-+ Depend on check-abi.
-+
-+ * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER.
-+ * configure: Regenerated.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name.
-+
-+2003-03-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK
-+ correctly.
-+
-+2003-03-18 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/memcpy.S: New file.
-+
-+2003-03-18 Ulrich Drepper <drepper@redhat.com>
-+
-+ * Versions.def: Add GLIBC_2.3.3 for libpthread.
-+
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/libc-start.c [!SHARED &&
-+ !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly.
-+
-+2003-03-17 Roland McGrath <roland@redhat.com>
-+
-+ * include/ctype.h: Revert last change.
-+
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * argp/tst-argp1.c: Use test-skeleton.c.
-+ * locale/tst-C-locale.c: Likewise.
-+
-+2003-03-17 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/mips64/Implies: Move wordsize-64 to...
-+ * sysdeps/mips/mips64/n64/Implies: New file.
-+ * sysdeps/mips/mips64/n64/Makefile: New file.
-+ * sysdeps/mips/mips64/n64/el/bits/endian.h: New file.
-+ * sysdeps/mips/mips64/n32/Implies: New file.
-+ * sysdeps/mips/mips64/n32/Makefile: New file.
-+ * sysdeps/mips/mips64/n32/el/bits/endian.h: New file.
-+ * sysdeps/unix/mips/mips64/n32/sysdep.h: New file.
-+ * sysdeps/unix/mips/mips64/n64/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
-+
-+ * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use
-+ lib64 for mips64/n64 and lib32 for mips64/n32.
-+ (ldd_rewrite_script): Needed for all mips64 configurations.
-+ * sysdeps/unix/sysv/linux/configure: Rebuilt.
-+ * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file.
-+ * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file.
-+
-+ * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as
-+ well.
-+
-+ * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process
-+ asm/unistd.h into asm-unistd.h.
-+ * sysdeps/unix/sysv/linux/mips/configure: Generated.
-+ * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing
-+ of syscall list.
-+ * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Don't include
-+ asm/unistd.h.
-+
-+ * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file.
-+ * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long
-+ long type for registers on n32.
-+
-+ * sysdeps/mips/bits/wordsize.h: New file, appropriate for all
-+ 3 ABIs.
-+ * sysdeps/mips/mips64/gmp-mparam.h: New file. Define
-+ BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs.
-+ * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros.
-+ (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs.
-+ * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs.
-+ * sysdeps/unix/mips/brk.S: Likewise.
-+ * sysdeps/unix/mips/sysdep.S: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
-+ * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise.
-+ * sysdeps/mips/sys/ucontext.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
-+ * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/setjmp.S: Likewise.
-+ * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete.
-+ * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for
-+ 64-bit types.
-+
-+2003-03-16 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here,
-+ not at function level.
-+ * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise.
-+
-+2003-03-15 Roland McGrath <roland@redhat.com>
-+
-+ * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t
-+ * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise.
-+ * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise.
-+ * nis/nis_table.c (__create_ib_request): Likewise.
-+
-+ * posix/fnmatch_loop.c: Add casts for signedness.
-+ * nss/nss_files/files-hosts.c: Likewise.
-+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
-+ * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN.
-+ * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT.
-+
-+ * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND,
-+ get errors into the log file.
-+ (libc_cv_broken_visibility_attribute): Likewise.
-+ (libc_cv_broken_alias_attribute): Likewise.
-+ (libc_cv_asm_weak_directive): Likewise.
-+ (libc_cv_need_minus_P): Likewise.
-+ (libc_cv_dot_text): Likewise.
-+ (libc_cv_asm_global_directive): Likewise.
-+ (libc_cv_asm_type_prefix): Likewise.
-+ * configure: Regenerated.
-+
-+ * nscd/cache.c (cache_search): Give first arg type `request_type'.
-+ * nscd/nscd.h: Update decl.
-+
-+ * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness.
-+ * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
-+ * elf/dl-close.c (_dl_close): Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t
-+ * io/fts.c (fts_build): Likewise.
-+ * elf/cache.c (add_to_cache): Likewise.
-+ * locale/programs/locarchive.c (show_archive_content): Likewise.
-+
-+ * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use.
-+
-+ * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3
-+ happy.
-+ (__ctype_toupper_loc, __ctype_tolower_loc): Likewise.
-+
-+2003-03-15 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux
-+ code for most parts.
-+
-+2003-03-15 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/i386/system.c: Moved to ...
-+ * sysdeps/unix/sysv/linux/system.c: ... here.
-+ (FORK): Don't #define if already #define'd.
-+ * sysdeps/unix/sysv/linux/s390/system.c: File removed.
-+ * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]:
-+ (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64.
-+
-+ * dlfcn/tst-dlinfo.c: New file.
-+ * dlfcn/Makefile (tests): Add tst-dlinfo.
-+ ($(objpfx)tst-dlinfo): New target.
-+
-+ * dlfcn/dlinfo.c: New file.
-+ * dlfcn/Makefile (libdl-routines): Add it.
-+ * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo.
-+ * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo.
-+ [__USE_GNU] (RTLD_DI_*): New enum constants.
-+ [__USE_GNU] (Dl_serpath, Dl_serinfo): New types.
-+ * elf/dl-load.c (cache_rpath): New inline function.
-+ (_dl_map_object): Use it.
-+ (_dl_rtld_di_serinfo): New function.
-+ * sysdeps/generic/ldsodefs.h: Declare it.
-+ * elf/Versions (ld: GLIBC_PRIVATE): Add it.
-+
-+ * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it.
-+ (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG)
-+ (INIT_MAIN_ARGS): Define, and #include <sysdeps/generic/libc-start.c>.
-+ (__libc_start_main): Just call the generic one for most of the work.
-+
-+ * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a
-+ static function by that name instead of BP_SYM (__libc_start_main).
-+ [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument.
-+ [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN.
-+ [INIT_MAIN_ARGS]: Give INIT the same args as MAIN.
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]:
-+ Use this macro for extra AT_* cases.
-+ * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV):
-+ New macro, guts from ...
-+ (__aux_init_cache): ... here, function removed.
-+ (DL_PLATFORM_INIT): Don't define this.
-+
-+ * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss.
-+ * sysdeps/powerpc/powerpc64/memset.S: Likewise.
-+
-+ * Versions.def (libthread_db): Add GLIBC_2.3.3 set.
-+
-+2003-03-14 Roland McGrath <roland@redhat.com>
-+
-+ * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it.
-+
-+2003-03-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo.
-+
-+ * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include
-+ sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c.
-+
-+2003-03-14 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * sysdeps/mips/fpu/bits/mathdef.h: New.
-+ (__NO_LONG_DOUBLE_MATH): Define for o32.
-+
-+ * sysdeps/mips/sys/asm.h: Formatting changes.
-+ (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs.
-+ (CPADD): Define for all of them.
-+ (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64,
-+ SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP,
-+ NARGSAVE): Define per ABI spec.
-+ (END): Don't redefine.
-+ (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA,
-+ LONG_SRAV): Remove duplicate definitions.
-+ (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI,
-+ PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL,
-+ PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32.
-+ (PTR_LA): Define for all 3 ABIs.
-+
-+ * sysdeps/mips/dl-machine.h: Include sys/asm.h.
-+ (elf_machine_matches_host): Prevent linking of o32 and n32
-+ together.
-+ (elf_machine_dynamic): Document assumption on $gp.
-+ (STRINGXP, STRINGXV, STRINGV_): New macros.
-+ (elf_machine_load_address): Use them to stringize PTR_LA and
-+ PTR_SUBU.
-+ (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS,
-+ ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in...
-+ (_dl_runtime_resolve): Adjust it for all 3 ABIs.
-+ (__dl_runtime_resolve): Cast the symtab initializer to the
-+ right type.
-+ (RTLD_START): Use it. Adjust it for all 3 ABIs.
-+ (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP.
-+ Handle 64-bit R_MIPS_REL composite relocation and accept
-+ R_MIPS_64 relocations to shift addend size to 64 bits.
-+ Document assumption regarding local GOT entries. Document
-+ backward-compatibility departing from the ABI behavior in
-+ applying relocations that reference section symbols, no longer
-+ used. Support relocations to mis-aligned offsets.
-+ * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete.
-+
-+ * sysdeps/unix/sysv/linux/mips/readelflib.c: New file.
-+
-+ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
-+ (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG.
-+ * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and
-+ restore_rt functions. Use them.
-+
-+ * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't
-+ .set mips2 on new abis.
-+
-+2003-03-13 Ulrich Drepper <drepper@redhat.com>
-+
-+ * posix/getconf.c: Recognize POSIX2_SYMLINKS.
-+ * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS.
-+ * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS.
-+ * sysdeps/posix/pathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/fpathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pathconf.c: Likewise.
-+ * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks.
-+
-+ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic
-+ words.
-+
-+2003-03-14 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * include/gmp.h: Include/gmp-mparam.h.
-+ * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and
-+ gmp-impl.h.
-+
-+ * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if
-+ ELF_MACHINE_NO_RELA is set.
-+ * elf/rtld.c (dl_main): No prelink support for REL-only.
-+
-+ * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32,
-+ FLAG_MIPS64_LIBN64): Define.
-+ * elf/cache.c (print_entry): Handle mips64 n32 and n64.
-+
-+ * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis.
-+ * sysdeps/mips/memset.S: Likewise.
-+ * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11
-+ depending on the ABI.
-+
-+ * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add):
-+ Don't .set mips2 on new abi.
-+ (compare_and_swap): Likewise. Support 64-bit longs on n64.
-+
-+ * stdlib/fpioconst.h: Include gmp.h with angle brackets.
-+
-+2003-03-13 Roland McGrath <roland@redhat.com>
-+
-+ * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs
-+ found. Reported by Alexandre Oliva <aoliva@redhat.com>.
-+
-+2003-03-13 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit
-+ literals long long.
-+ * stdlib/fpioconst.c: Likewise.
-+ * stdlib/strtod.c: Likewise.
-+
-+ * sysdeps/mips/add_n.S: Use L macro for local labels.
-+ * sysdeps/mips/addmul_1.S: Likewise.
-+ * sysdeps/mips/lshift.S: Likewise.
-+ * sysdeps/mips/memcpy.S: Likewise.
-+ * sysdeps/mips/memset.S: Likewise.
-+ * sysdeps/mips/mul_1.S: Likewise.
-+ * sysdeps/mips/rshift.S: Likewise.
-+ * sysdeps/mips/sub_n.S: Likewise.
-+ * sysdeps/mips/submul_1.S: Likewise.
-+ * sysdeps/mips/mips64/add_n.S: Likewise.
-+ * sysdeps/mips/mips64/addmul_1.S: Likewise.
-+ * sysdeps/mips/mips64/lshift.S: Likewise.
-+ * sysdeps/mips/mips64/mul_1.S: Likewise.
-+ * sysdeps/mips/mips64/rshift.S: Likewise.
-+ * sysdeps/mips/mips64/sub_n.S: Likewise.
-+ * sysdeps/mips/mips64/submul_1.S: Likewise.
-+ * sysdeps/unix/mips/sysdep.h: Define L() according to ABI
-+ conventions. Define END as in sys/asm.h.
-+ * sysdeps/unix/mips/sysdep.S: Likewise.
-+ * sysdeps/unix/mips/wait.S: Likewise.
-+ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
-+
-+ * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double):
-+ Cast shifted values that may be too narrow to mp_limb_t.
-+ * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double):
-+ Likewise.
-+ * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float):
-+ Likewise.
-+ * sysdeps/ieee754/ldbl-128/ldbl2mpn.c
-+ (__mpn_extract_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-128/mpn2ldbl.c
-+ (__mpn_construct_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-96/ldbl2mpn.c
-+ (__mpn_extract_long_double): Likewise.
-+ * sysdeps/ieee754/ldbl-96/mpn2ldbl.c
-+ (__mpn_construct_long_double): Likewise.
-+
-+2003-03-13 Roland McGrath <roland@redhat.com>
-+
-+ * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line
-+ entries in the map file match too.
-+
-+2003-03-13 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local
-+ label .Lthread_start since current binutils don't allow branches
-+ to globally visible symbols.
-+
-+2003-03-13 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN,
-+ ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3,
-+ ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define.
-+ (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments
-+ clobbered by the syscall.
-+ (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5,
-+ ASM_ARGS_6): Change constraints from r to index of corresponding
-+ output register.
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap
-+ ptid and ctid to match kernel.
-+ * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise.
-+
-+2003-03-12 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/powerpc/powerpc64/elf/configure.in: Remove
-+ AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64.
-+ * sysdeps/powerpc/powerpc64/elf/configure: Regenerated.
-+
-+2003-03-11 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela):
-+ Check SYM_MAP rather than SYM as definedness check.
-+ Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs.
-+ Don't handle R_PPC64_REL24 reloc.
-+ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h
-+ [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a
-+ block, so we cover all the TPREL16* flavors without 6 ||s.
-+ [USE_TLS] (elf_machine_tprel): New function.
-+ (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc,
-+ and handle TPREL16 relocs too. Return rather than break for DTPREL64.
-+ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+2003-03-11 Ralf Baechle <ralf@linux-mips.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal
-+ instead of jalr to invoke subroutine so restoring the $gp register
-+ will work properly.
-+
-+2003-03-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define
-+ to __NR_pread if not defined.
-+ (__NR_pwrite64): Define to __NR_pwrite if not defined.
-+
-+2003-03-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/ia64/system.c: New file.
-+ * sysdeps/unix/sysv/linux/kernel-features.h
-+ (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with
-+ kernel >= 2.5.64.
-+
-+2003-03-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1,
-+ allocate space even for the trailing '/'.
-+ Reported by John Reiser <jreiser@BitWagon.com>.
-+
-+ * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6,
-+ ASM_CLOBBERS_6): Define.
-+ (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6.
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments
-+ to match IA-32 order.
-+ * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment.
-+
-+2003-03-10 Steven Munroe <sjmunroe@us.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7.
-+ Copy extra params for NPTL to registers used in clone syscall.
-+
-+2003-03-10 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system
-+ call names for pread and pwrite.
-+
-+2003-03-10 Roland McGrath <roland@redhat.com>
-+
-+ * dlfcn/Makefile (libdl-routines): Add dladdr1.
-+ * dlfcn/dladdr1.c: New file.
-+ * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1.
-+ [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants.
-+ * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and
-+ a const ElfNN_Sym ** to fill in.
-+ * include/dlfcn.h: Update decl. Include <link.h>.
-+ * dlfcn/dladdr.c (dladdr): Update caller.
-+ * malloc/mtrace.c (tr_where): Likewise.
-+ * sysdeps/generic/elf/backtracesyms.c: Likewise.
-+ * sysdeps/generic/elf/backtracesymsfd.c: Likewise.
-+ * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1.
-+ * Versions.def (libdl): Define GLIBC_2.3.3 set.
-+
-+ * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for
-+ assembler command.
-+ * sysdeps/unix/Makefile (compile-syscall): New variable.
-+ Pass -g0 to compiler for assembling syscall stubs from stdin.
-+
-+ * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO]
-+ (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END):
-+ Define these to do nothing.
-+
-+ * configure.in: New check for -g on .S files.
-+ * configure: Regenerated.
-+ * config.make.in (have-cpp-asm-debuginfo): New variable.
-+ * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef.
-+ * Makeconfig (ASFLAGS): New variable, if undefined and
-+ $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS).
-+ * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS).
-+
-+2003-03-09 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args
-+ used by NPTL on new kernels. From Paul Mackerras <paulus@samba.org>.
-+
-+2003-03-09 Ulrich Drepper <drepper@redhat.com>
-+
-+ * po/fi.po: Update from translation team.
-+ * po/ca.po: Likewise.
-+ * po/da.po: Likewise.
-+
-+2003-03-08 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Change BYTES into a #define.
-+
-+2003-03-07 Ulrich Drepper <drepper@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too.
-+
-+ * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment.
-+
-+2003-03-07 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo.
-+ * sysdeps/s390/s390-64/sysdep.h (L): Likewise.
-+
-+2003-03-04 Guido Guenther <agx@sigxcpu.org>
-+
-+ * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded
-+ stubs, we have INLINE_SYSCALL.
-+ * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE,
-+ MAP_NONBLOCK.
-+
-+2003-03-06 Roland McGrath <roland@redhat.com>
-+
-+ * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1
-+ permanent extent and add a comment about testing its implicit teardown.
-+
-+2003-03-06 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope.
-+
-+2003-03-05 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix
-+ reversed __builtin_expect expectation.
-+
-+2003-03-05 Roland McGrath <roland@redhat.com>
-+
-+ * stdio-common/sscanf.c: Use prototype defn with ... syntax.
-+ * libio/swscanf.c: Likewise.
-+ * libio/swprintf.c: Likewise.
-+
-+2003-03-04 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h: Include <dl-tls.h>.
-+ (elf_machine_rela): Always use RESOLVE_MAP, needed for
-+ R_PPC64_JMP_SLOT as well as TLS cases.
-+ (BIT_INSERT): Move parenthesis where it ought to have been.
-+ Reported by Steven Munroe <sjmunroe@us.ibm.com>.
-+
-+ * posix/confstr.c (confstr): Correct STRING_LEN values for
-+ _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing
-+ break. Reported by Alexandre Julliard <julliard@winehq.com>.
-+
-+2003-03-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ * sysdeps/ia64/fpu/libm-test-ulps: Regenerated.
-+
-+2003-03-04 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new
-+ clone parameters.
-+
-+ * po/sv.po: Update from translation team.
-+
-+2003-03-04 Andreas Jaeger <aj@suse.de>
-+ Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * sysdeps/generic/dl-sysdep.h: Add double include protection.
-+
-+ * po/tr.po: Update from translation team.
-+
-+ * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there
-+ are holes between the segments. Only call mprotect to set
-+ proection to PROT_NONE if there are some.
-+
-+ * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE.
-+ Update comment.
-+
-+ * include/sched.h (__clone2): Use ... instead of adding all the
-+ new parameters.
-+
-+2003-03-03 Roland McGrath <roland@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): Fix typo in last change.
-+
-+ * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define
-+ PI_STATIC_AND_HIDDEN.
-+
-+2003-03-03 Ian Wienand <ianw@gelato.unsw.edu.au>
-+
-+ * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone
-+ flags.
-+ * include/sched.h: Update clone2 prototype.
-+
-+2003-03-03 Andreas Jaeger <aj@suse.de>
-+
-+ * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
-+ (llrint): Use it to correct return type.
-+ (lrint): Likewise.
-+ (lround): Likewise.
-+ (llround): Likewise.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640
-+ byte filebuf size.
-+
-+ * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor
-+ if ccs parameter isn't valid. Reported by Andreas Schwab.
-+
-+2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support
-+ for system call numbers > 255.
-+ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL,
-+ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
-+ INTERNAL_SYSCALL): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
-+ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL,
-+ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
-+ INTERNAL_SYSCALL): Likewise.
-+
-+2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
-+
-+ * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv
-+ array if it is the initial dtv.
-+
-+2003-03-03 Ulrich Drepper <drepper@redhat.com>
-+
-+ * po/es.po: Update from translation team.
-+ * po/fr.po: Likewise.
-+ * po/gl.po: Likewise.
-+ * po/sk.po: Likewise.
-+ * po/sv.po: Likewise.
-+
-+ * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry.
-+ * misc/sys/mman.h: Add prototype for remap_file_pages.
-+ * sysdeps/generic/remap_file_pages.c: New file.
-+ * misc/Makefile (routines): Add remap_file_pages.
-+ * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages.
-+
-+ * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE
-+ and MAP_NONBLOCK.
-+ * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise
-+ * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise.
-+ * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
-+
-+2003-03-03 Roland McGrath <roland@redhat.com>
-+
-+ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change.
-+ * sysdeps/ia64/dl-machine.h: Likewise.
-+ * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from
-+ argument type.
-+ * sysdeps/ia64/dl-lookupcfg.h: Update decl.
-+
-+ * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias.
-+ * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias.
-+ * locale/Versions (libc: GLIBC_2.3): Move those to ...
-+ * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file.
-+ * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise.
-+ * Versions.def (libc): Add GLIBC_2.3.3 set.
-+
-+ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg.
-+ * sysdeps/ia64/dl-machine.h: Update decl.
-+
-+2003-03-03 Andreas Jaeger <aj@suse.de>
-+
-+ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace.
-+
-+2003-03-02 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/abilist.awk: Reject data items with apparent 0 size.
-+
-+ * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar
-+ after foo.* as if it were a duplicate.
-+
-+ * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk.
-+
-+2003-03-02 Ulrich Drepper <drepper@redhat.com>
-+
-+ * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes.
-+
-+ * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC.
-+ * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETRES to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_getres.c: New file
-+ * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETTIME to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_gettime.c: New file.
-+ * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only
-+ if not already defined. Use SYSDEP_GETTIME to allow other files to
-+ provide alternative implementations.
-+ * sysdeps/unix/sysv/linux/clock_settime.c: New file.
-+ * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow
-+ other files to provide alternative implementations. Rearrange
-+ tests for invalid parameters.
-+ * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file.
-+ * sysdeps/unix/sysv/linux/sysconf.c: New file.
-+ * sysdeps/unix/sysv/linux/kernel-features.h: Define
-+ __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up.
-+ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
-+ _POSIX_MONOTONIC_CLOCK.
-+
-+2003-03-02 Roland McGrath <roland@redhat.com>
-+
-+ * scripts/merge-abilist.awk: More checks for bogus input.
-+ Uniquify duplicate config names.
-+
-+ * scripts/abilist.awk: Don't distinguish weak symbols in normal output.
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed
-+ from dl_reloc_overflow, make global.
-+ (__process_machine_rela): Update callers.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow.
-+ Add attribute_hidden to __process_machine_rela decl.
-+ (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs.
-+
-+ * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const
-+ variable.
-+
-+ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt):
-+ Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED].
-+ (elf_machine_rela): Clean up.
-+
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up.
-+
-+ PowerPC TLS support contributed by Paul Mackerras <paulus@samba.org>.
-+ * sysdeps/powerpc/powerpc32/elf/configure.in: New file.
-+ * sysdeps/powerpc/powerpc32/elf/configure: New generated file.
-+ * elf/tls-macros.h [__powerpc__ && !__powerpc64__]
-+ (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them.
-+ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support
-+ new relocs for TLS.
-+
-+ * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these
-+ macros out of [SHARED].
-+ (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros.
-+
-+ * elf/elf.h: Define R_PPC_* relocs for TLS support.
-+ Clean up R_PPC64_* macro definition comments.
-+
-+ * configure.in: In "running configure fragment for" message,
-+ omit $srcdir from the name if we prepended it.
-+ * configure: Regenerated.
-+
-+ * elf/dl-reloc.c (allocate_static_tls): Fix calculations.
-+ From Jakub Jelinek <jakub@redhat.com>.
-+
-+ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change,
-+ which duplicated the O_DIRECT defn.
-+
-+2003-03-01 GOTO Masanori <gotom@debian.or.jp>
-+
-+ * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived
-+ random functions.
-+
-+2003-03-01 Andreas Schwab <schwab@suse.de>
-+
-+ * resolv/Makefile (tests): Don't depend on
-+ $(objpfx)mtrace-tst-leaks when cross compiling.
-+
-+ * sysdeps/m68k/dl-machine.h (_dl_start_user): Access
-+ __libc_stack_end through GOT since it is a global symbol.
-+
- 2003-03-01 GOTO Masanori <gotom@debian.or.jp>
-
- * argp/argp.h: Fix a typo.
-diff -u -udbrN glibc-2.3.2/Makeconfig glibc-2.3.2-200304020432/Makeconfig
---- glibc-2.3.2/Makeconfig Mon Jan 6 06:31:36 2003
-+++ glibc-2.3.2-200304020432/Makeconfig Sun Mar 23 12:17:13 2003
-@@ -621,7 +621,7 @@
- +includes = -I$(..)include -I. \
- $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
- $(libio-include) $(includes) \
-- $(+sysdep-includes) $(last-includes) $(sysincludes)
-+ $(+sysdep-includes) $(sysincludes)
-
- # Since libio has several internal header files, we use a -I instead
- # of many little headers in the include directory.
-@@ -716,6 +716,12 @@
- libtype.oS = lib%_nonshared.a
- endif
-
-+# The assembler can generate debug information too.
-+ifndef ASFLAGS
-+ifeq ($(have-cpp-asm-debuginfo),yes)
-+ASFLAGS := $(filter -g%,$(CFLAGS))
-+endif
-+endif
-
- +gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
-
-diff -u -udbrN glibc-2.3.2/Makefile glibc-2.3.2-200304020432/Makefile
---- glibc-2.3.2/Makefile Fri Feb 21 07:22:51 2003
-+++ glibc-2.3.2-200304020432/Makefile Fri Mar 28 02:13:00 2003
-@@ -274,6 +274,7 @@
- include/shlib-compat.h include/pthread.h Versions.def \
- cppflags-iterator.mk tls.make.c \
- include/stubs-prologue.h include/gnu/stubs.h \
-+ include/atomic.h bits/atomic.h \
- INTERFACE CONFORMANCE NAMESPACE LICENSES \
- $(addprefix scripts/, \
- rellns-sh config.sub config.guess \
-@@ -282,7 +283,10 @@
- gen-sorted.awk abi-versions.awk abilist.awk \
- firstversions.awk documented.sh cpp \
- output-format.sed gen-as-const.awk \
-- merge-abilist.awk extract-abilist.awk)
-+ merge-abilist.awk extract-abilist.awk \
-+ rpm2dynsym.sh \
-+ ) \
-+ $(wildcard abilist/*.abilist)
-
- distribute := $(strip $(distribute))
- generated := $(generated) stubs.h
-@@ -316,12 +320,6 @@
- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
-
- iconvdata/% localedata/% po/% manual/%:
-- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
--
--# This is a special goal for people making binary distributions. Normally
--# everybody uses the DES based crypt library but for the distribution we
--# need the only-MD5 based one as well.
--md5-crypt/libmd5crypt:
- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
-
- # glibc 2.0 contains some header files which aren't used with glibc 2.1
-diff -u -udbrN glibc-2.3.2/Makerules glibc-2.3.2-200304020432/Makerules
---- glibc-2.3.2/Makerules Sun Feb 23 00:23:31 2003
-+++ glibc-2.3.2-200304020432/Makerules Thu Mar 27 10:47:53 2003
-@@ -396,8 +396,10 @@
-
- # GCC can grok options after the file name, and it looks nicer that way.
- compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
--compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
--COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
-+compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
-+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
-+COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
-+ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
- COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
-
- # If we want to generate MD5 checksums for the sources do this now.
-@@ -1188,15 +1190,23 @@
- LC_ALL=C \
- $(AWK) -f $< -v 'config=$(check-abi-config)' \
- $(filter %.abilist,$^) \
-- | diff -pu0 - $(filter %.symlist,$^)
-+ | { diff -pu0 - $(filter %.symlist,$^) $(check-abi-warn) ; }
- endef
-+ifeq ($(enable-check-abi),warn)
-+check-abi-warn = || echo '*** WARNING: $*.so failed ABI check'
-+endif
-
- ifeq ($(firstword $(sysd-sorted-done) f)$(firstword $(generating) f),tf)
- -include $(common-objpfx)tls.make
--config-tls-yes := tls
--config-tls-no := notls
-+config-tls := notls
-+ifeq ($(use-tls),yes)
-+config-tls := tls
-+endif
-+ifeq ($(use-thread),yes)
-+config-tls := thread
-+endif
- check-abi-config := \
-- $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls-$(use-thread))
-+ $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls)
- endif
-
- update-abi-%: $(..)scripts/merge-abilist.awk $(..)abilist/%.abilist \
-@@ -1211,7 +1221,7 @@
- endef
- else
- define update-abi
--LC_ALL=C $(AWK) -v config=$(update-abi-config) -f $^ \
-+LC_ALL=C $(AWK) -v config='$(update-abi-config)' -f $^ \
- > $(..)abilist/$*.abilist.new
- @if cmp -s $(..)abilist/$*.abilist.new $(..)abilist/$*.abilist 2> /dev/null; \
- then rm -f $(..)abilist/$*.abilist.new; \
-@@ -1233,15 +1243,20 @@
- update-abi: subdir_update-abi
- endif
-
--# Enable this when all the .abilist files are in place.
--#tests: check-abi
--
- ifeq ($(subdir),elf)
- check-abi: check-abi-libc
- update-abi: update-abi-libc
- common-generated += libc.symlist
- endif
-
-+ifeq ($(build-shared),yes)
-+ifneq ($(enable-check-abi),no)
-+ifdef subdir
-+tests: check-abi
-+endif
-+endif
-+endif
-+
- endif
-
- # There's no good place to put this - here will do.
-@@ -1370,13 +1385,15 @@
- .PHONY: stubs # The parent Makefile calls this target.
- stubs: $(objpfx)stubs
- endif
--s = $(sysdep_dir)/generic
- $(objpfx)stubs: $(+depfiles)
- # Use /dev/null since `...` might expand to empty.
-- (s=`cd $s && $(PWD_P)`; \
-+ (s=`cd $(sysdep_dir) && $(PWD_P)`; \
- $(patsubst %/,cd % &&,$(objpfx)) \
- sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
-- `sed -n -e '\@ $s/[^ ]*\.c@{; s@^.* $s/\([^ ]*\.c\).*$$@'"$$s"'/\1@; h; }' \
-+ `sed -n -e 's@$(sysdep_dir)/@'"$$s"'/@g' \
-+ -e 's@\$$(common-objpfx)@$(..)@g' -e 's@\$$(objpfx)@@g' \
-+ -e '/: *[^ ]/{s@^.*: *\([^ ]*\) .*$$@\1@; h; }' \
-+ -e '/:$$/d' \
- -e '/stub-tag\.h/{; g; p; }' \
- $(patsubst $(objpfx)%,%,$^) /dev/null` \
- /dev/null) > $@T
-diff -u -udbrN glibc-2.3.2/NEWS glibc-2.3.2-200304020432/NEWS
---- glibc-2.3.2/NEWS Mon Jan 13 10:26:13 2003
-+++ glibc-2.3.2-200304020432/NEWS Sun Mar 16 00:16:13 2003
-@@ -1,9 +1,17 @@
--GNU C Library NEWS -- history of user-visible changes. 2003-1-12
--Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc.
-+GNU C Library NEWS -- history of user-visible changes. 2003-3-15
-+Copyright (C) 1992-2002,2003 Free Software Foundation, Inc.
- See the end for copying conditions.
-
- Please send GNU C library bug reports using the `glibcbug' script to
- <bugs@gnu.org>. Please send questions and suggestions to <bug-glibc@gnu.org>.
-+
-+Version 2.3.3
-+
-+* New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
-+ interrogate the dynamic linker, compatible with the Solaris interface.
-+
-+* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
-+ implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
-
- Version 2.3.2
-
-diff -u -udbrN glibc-2.3.2/README-alpha glibc-2.3.2-200304020432/README-alpha
---- glibc-2.3.2/README-alpha Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/README-alpha Thu May 13 12:22:39 1999
-@@ -0,0 +1,287 @@
-+ GNU libc SNAPSHOT SYSTEM
-+ (general info)
-+ Updated 1997-9-26
-+
-+WHAT ARE GNU libc SNAPSHOTS
-+---------------------------
-+
-+Snapshots are an "image" of the main glibc development tree, captured at a
-+particular random instant in time. When you use the snapshots, you should be
-+able to maintain a local copy of libc that is no more than one day older than
-+the official source tree used by the libc maintainers.
-+
-+The primary purpose of providing snapshots is to widen the group of motivated
-+developers that would like to help test, debug, and enhance glibc, by providing
-+you with access to the "latest and greatest" source. This has several
-+advantages, and several disadvantages.
-+
-+ First the advantages:
-+
-+ o Once we have a large base of motivated testers using the snapshots,
-+ this should provide good coverage across all currently supported
-+ glibc hosts and targets. If a new bug is introduced in glibc due to
-+ fixing another bug or ongoing development, it should become
-+ obvious much more quickly and get fixed before the next general
-+ net release. This should help to reduce the chances of glibc being
-+ released to the general public with a major bug that went unnoticed
-+ during the release cycle testing because they are machine dependent.
-+ We hope to greatly improve glibc's stability and reliability by
-+ involving more people and more execution environments in the
-+ prerelease testing.
-+
-+ o With access to the latest source, any diffs that you send to fix
-+ bugs or add new features should be much easier for the glibc team
-+ to merge into the official source base (after suitable review
-+ of course). This encourages us to merge your changes quicker,
-+ while they are still "fresh".
-+
-+ o Once your diffs are merged, you can obtain a new copy of glibc
-+ containing your changes almost immediately. Thus you do not
-+ have to maintain local copies of your changes for any longer
-+ than it takes to get them merged into the official source base.
-+ This encourages you to send in changes quicker.
-+
-+ And the disadvantages:
-+
-+ o The snapshot you get will be largely untested and of unknown quality.
-+ It may fail to configure or compile. It may have serious bugs.
-+ You should always keep a copy of the last known working version
-+ before updating to the current snapshot, or at least be able to
-+ regenerate a working version if the latest snapshot is unusable
-+ in your environment for some reason.
-+
-+ If a production version of glibc has a bug and a snapshot has the fix,
-+ and you care about stability, you should put only the fix for that
-+ particular problem into your production version. Of course, if you
-+ are eager to test glibc, you can use the snapshot versions in your
-+ daily work, but users who have not been consulted about whether they
-+ feel like testing glibc should generally have something which is at
-+ least as bug free as the last released version.
-+
-+ o Providing timely response to your questions, bug reports, and
-+ submitted patches will require the glibc development team to allocate
-+ time from an already thin time budget. Please try to help us make
-+ this time as productive as possible. See the section below about
-+ how to submit changes.
-+
-+
-+WHO SHOULD TRY THE SNAPSHOTS
-+----------------------------
-+
-+Remember, these are snapshots not tested versions. So if you use
-+these versions you should be able to
-+
-+ o make sure your system stays usable
-+
-+ o locate and hopefully fix problems
-+
-+ o to port glibc to a new target yourself
-+
-+You should not use the snapshots if
-+
-+ o your system is needed in a production environment which needs
-+ stability
-+
-+ o you expect us to fix your problems since you somehow depend on them.
-+ You must be willing to fix the problems yourself, we don't want to
-+ see "I have problems, fix this" messages.
-+
-+
-+HOW TO GET THE SNAPSHOTS
-+------------------------
-+
-+At the moment we provide a full snapshot weekly (every sunday), so
-+that users getting a snapshot for the first time, or updating after
-+a long period of not updating, can get the latest version in a single
-+operation. Along with the full snapshot, we will provide incremental
-+diffs on a nearly daily basis (whenever code changes). Each daily
-+diff will be relative to the source tree after applying all previous
-+daily diffs. The daily diffs are for people who have relatively low
-+bandwidth ftp or uucp connections.
-+
-+The files will be available via anonymous ftp from alpha.gnu.org, in
-+directory /gnu/libc and on linux.kernel.org in /pub/software/libs/glibc. The
-+directories should look something like:
-+
-+ libc-970921.tar.gz
-+ libc-970917-970922.diff.gz
-+ libc-970922-970925.diff.gz
-+ .
-+ .
-+ .
-+
-+Please note that the snapshots on alpha.gnu.org and on
-+linux.kernel.org are not always in sync. Patches to some files might
-+appear a day a diff earlier or later on alpha than on kernel.
-+Use always alpha or always kernel but don't mix them.
-+
-+There are sometimes additionally test releases of the add-ons available in
-+these directories. If a new version of an add-on is available it is normally
-+required for the corresponding snapshot so always pay attention for these.
-+
-+Note that we provide GNU gzip compressed files only. You can ftp gzip
-+from ftp.gnu.org in directory pub/gnu.
-+
-+In some cases the dates for diffs and snapshots do not match like in the
-+example above. The full release is for 970921 but the patch is for
-+970917-970922. This only means that nothing changed between 970917 and 970922
-+and that you have to use this patch on top of the 970921 snapshot since the
-+patch is made on 970922.
-+
-+Also, as the gcc developers did with their gcc snapshot system, even though we
-+will make the snapshots available on a publically accessible ftp area, we ask
-+that recipients not widely publicise their availability. The motivation for
-+this request is not to hoard them, but to avoid the situation where the
-+general glibc user base naively attempts to use the snapshots, has trouble with
-+them, complains publically, and the reputation of glibc declines because of a
-+perception of instability or lack of quality control.
-+
-+
-+GLIBC TEST SUITE
-+----------------
-+
-+A test suite is distributed as an integral part of the snapshots. A simple
-+"make check" in your build directory is sufficient to run the tests. glibc
-+should pass all tests and if any fails, please report it. A failure might not
-+originate from a bug in glibc but also from bugs in the tools, e.g. with gcc
-+2.7.2.x the math tests fail some of the tests because of compiler bugs.
-+
-+Note that the test suite is still in its infancy. The tests themselves only
-+cover a small portion of libc features, and where tests do exist for a feature
-+they are not exhaustive. New tests are welcome.
-+
-+
-+GETTING HELP, GLIBC DISCUSSIONS, etc
-+------------------------------------
-+
-+People who want to help with glibc and who test out snapshots
-+regularly should get on the libc-alpha@sourceware.cygnus.com mailing
-+list by sending an email to libc-alpha-subscribe@sourceware.cygnus.com.
-+This list is meant (as the name suggests) for the discussion of test
-+releases and also reports for them. People who are on this list are
-+welcome to post questions of general interest.
-+
-+People who are not only willing to test the snapshots but instead
-+really want to help developing glibc should contact
-+libc-hacker-subscribe@sourceware.cygnus.com.org to be put on the developers
-+mailing list. This list is really only meant for developers. No
-+questions about installation problems or other simple topics are
-+wanted nor will they be answered.
-+
-+Do *not* send any questions about the snapshots or patches specific to the
-+snapshots to bug-glibc@gnu.org. Nobody there will have any idea what
-+you are talking about and it will just cause confusion.
-+
-+
-+BUG REPORTS
-+-----------
-+
-+Send bug reports directly to Ulrich Drepper <drepper@gnu.org>. Please
-+do *not* use the glibcbug script for reporting bugs in the snapshots.
-+glibcbug should only be used for problems with the official released versions.
-+We don't like bug reports in the bug database because otherwise the impression
-+of instability or lack of quality control of glibc as a whole might manifest
-+in people's mind.
-+
-+Note that since no testing is done on the snapshots, and snapshots may even be
-+made when glibc is in an inconsistent state, it may not be unusual for an
-+occasional snapshot to have a very obvious bug, such as failure to compile on
-+*any* machine. It is likely that such bugs will be fixed by the next
-+snapshot, so it really isn't necessary to report them unless they persist for
-+a couple of days.
-+
-+Missing files should always be reported, since they usually mean there is a
-+problem with the snapshot-generating process and we won't know about them
-+unless someone tells us.
-+
-+Bugs which are non-obvious, such as failure to compile on only a specific
-+machine, a new machine dependent or obscure bug (particularly one not detected
-+by the testsuite), etc should be reported when you discover them, or have a
-+suggested patch to fix them.
-+
-+
-+FORMAT FOR PATCHES
-+------------------
-+
-+If you have a fix for a bug, or an enhancement to submit, send your patch to
-+Ulrich Drepper <drepper@gnu.org>. Here are some simple guidelines for
-+submitting patches:
-+
-+ o Use "unified diffs" for patches. A typical command for generating
-+ context diffs is "diff -ru glibc-old glibc-patched".
-+
-+ o Use the "minimalist approach" for patches. That is, each patch
-+ should address only one particular bug, new feature, etc. Do not
-+ save up many unrelated changes and submit them all in one big
-+ patch, since in general, the larger the patch the more difficult
-+ it is for us to decide if the patch is either correct or
-+ desirable. And if we find something about the patch that needs
-+ to be corrected before it can be installed, we would have to reject
-+ the entire patch, which might contain changes which otherwise would
-+ be accepted if submitted separately.
-+
-+ o Submit a sample ChangeLog entry with your patch. See the existing
-+ glibc ChangeLog for examples of what a ChangeLog entry should look
-+ like. The emacs command ^X4A will create a ChangeLog entry header
-+ for you.
-+
-+
-+BUILDING SNAPSHOTS
-+------------------
-+
-+The `best' way to build glibc is to use an extra directory, e.g.:
-+tar xzf libc-970921.tar.gz
-+mkdir build-glibc
-+cd build-glibc
-+../libc-970921/configure ...
-+
-+In this way you can easily clean up (since `make clean' doesn't work at
-+the moment) and rebuild glibc.
-+
-+
-+NECESSARY TOOLS
-+---------------
-+
-+For the recommended versions of gcc, binutils, make, texinfo, gettext,
-+autoconf and other tools which might be especially needed when using patches,
-+please read the file INSTALL.
-+
-+
-+HOW CAN YOU HELP
-+----------------
-+
-+It helps already a lot if you just install glibc on your system and try to
-+solve any problems. You might want to look at the file `PROJECTS' and help
-+with one of those projects, fix some bugs (see `BUGS' or the bug database),
-+port to an unsupported platform, ...
-+
-+
-+FURTHER DOCUMENTATION
-+---------------------
-+
-+A lot of questions are answered in the FAQ. The files `INSTALL', `README' and
-+`NOTES' contain the most important documentation. Furthermore glibc has its
-+own 700+ pages info documentation, ...
-+
-+
-+
-+And finally a word of caution: The libc is one of the most fundamental parts
-+of your system - and these snapshots are untested and come without any
-+guarantee or warranty. You might be lucky and everything works or you might
-+crash your system. If you install a glibc snapshot as primary library, you
-+should have a backup somewhere.
-+
-+On many systems it is also a problem to replace the libc while the system is
-+running. In the worst case on broken OSes some systems crash. On better
-+systems you can move the old libc aside but removing it will cause problems
-+since there are still processes using this libc image and so you might have to
-+check the filesystem to get rid of the libc data. One good alternative (which
-+is also safer) is to use a chroot'ed environment.
-+
-+Thanks for your help and support.
-+
-+Thanks to Fred Fish from Cygnus for the original version of this text
-+(for GDB).
-+
-+
-+Ulrich Drepper
-diff -u -udbrN glibc-2.3.2/README.template glibc-2.3.2-200304020432/README.template
---- glibc-2.3.2/README.template Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/README.template Wed Oct 2 23:16:42 2002
-@@ -0,0 +1,87 @@
-+This directory contains the version VERSION release of the GNU C Library.
-+Many bugs have been fixed since the last release.
-+Some bugs surely remain.
-+
-+As of this release, the GNU C library is known to run on the following
-+configurations:
-+
-+ *-*-gnu GNU Hurd
-+ i[3456]86-*-linux-gnu Linux-2.x on Intel
-+ m68k-*-linux-gnu Linux-2.x on Motorola 680x0
-+ alpha*-*-linux-gnu Linux-2.x on DEC Alpha
-+ powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems
-+ powerpc64-*-linux-gnu Linux-2.4.19+ on 64-bit PowerPC systems
-+ sparc-*-linux-gnu Linux-2.x on SPARC
-+ sparc64-*-linux-gnu Linux-2.x on UltraSPARC 64-bit
-+ arm-*-none ARM standalone systems
-+ arm-*-linux Linux-2.x on ARM
-+ arm-*-linuxaout Linux-2.x on ARM using a.out binaries
-+ mips*-*-linux-gnu Linux-2.x on MIPS
-+ ia64-*-linux-gnu Linux-2.x on ia64
-+ s390-*-linux-gnu Linux-2.x on IBM S/390
-+ s390x-*-linux-gnu Linux-2.4+ on IBM S/390 64-bit
-+ sh-*-linux-gnu Linux-2.x on Super Hitachi
-+ cris-*-linux-gnu Linux-2.4+ on CRIS
-+ x86-64-*-linux-gnu Linux-2.4+ on x86-64
-+
-+Former releases of this library (version 1.09.1 and perhaps earlier
-+versions) used to run on the following configurations:
-+
-+ alpha-dec-osf1
-+ i[3456]86-*-bsd4.3
-+ i[3456]86-*-isc2.2
-+ i[3456]86-*-isc3
-+ i[3456]86-*-sco3.2
-+ i[3456]86-*-sco3.2v4
-+ i[3456]86-*-sysv
-+ i[3456]86-*-sysv4
-+ i[3456]86-force_cpu386-none
-+ i[3456]86-sequent-bsd
-+ i960-nindy960-none
-+ m68k-hp-bsd4.3
-+ m68k-mvme135-none
-+ m68k-mvme136-none
-+ m68k-sony-newsos3
-+ m68k-sony-newsos4
-+ m68k-sun-sunos4
-+ mips-dec-ultrix4
-+ mips-sgi-irix4
-+ sparc-sun-solaris2
-+ sparc-sun-sunos4
-+
-+Since no one has volunteered to test and fix the above configurations,
-+these are not supported at the moment. It's expected that these don't
-+work anymore. Porting the library is not hard. If you are interested
-+in doing a port, please contact the glibc maintainers by sending
-+electronic mail to <bug-glibc@gnu.org>.
-+
-+There are some add-ons which can be used together with GNU libc. They
-+are designed in a way to ease the installation by integrating them in
-+the libc source tree. Simply get the add-ons you need and use the
-+--enable-add-ons option of the `configure' script to tell where the
-+add-ons are found. Please read the FAQ file for more details.
-+
-+See the file INSTALL to find out how to configure, build, install, and port
-+the GNU C library. You might also consider reading the WWW pages for the
-+GNU libc at http://www.gnu.org/software/libc/libc.html.
-+
-+The GNU C Library is completely documented by the Texinfo manual found
-+in the `manual/' subdirectory. The manual is still being updated and
-+contains some known errors and omissions; we regret that we do not
-+have the resources to work on the manual as much as we would like.
-+Please send comments on the manual to <bug-glibc-manual@gnu.org>, and
-+not to the library bug-reporting address.
-+
-+The file NOTES contains a description of the feature-test macros used
-+in the GNU C library, explaining how you can tell the library what
-+facilities you want it to make available.
-+
-+We prefer to get bug reports sent using the `glibcbug' shell script which
-+is installed together with the rest of the GNU libc to <bugs@gnu.org>.
-+Simply run this shell script and fill in the information. Nevertheless
-+you can still send bug reports to <bug-glibc@gnu.org> as normal electronic
-+mails.
-+
-+The GNU C Library is free software. See the file COPYING.LIB for copying
-+conditions, and LICENSES for notices about a few contributions that require
-+these additional notices to be distributed.
-diff -u -udbrN glibc-2.3.2/Versions.def glibc-2.3.2-200304020432/Versions.def
---- glibc-2.3.2/Versions.def Tue Dec 10 20:05:17 2002
-+++ glibc-2.3.2-200304020432/Versions.def Tue Mar 25 21:28:24 2003
-@@ -18,6 +18,7 @@
- GLIBC_2.3
- GLIBC_2.3.1
- GLIBC_2.3.2
-+ GLIBC_2.3.3
- %ifdef USE_IN_LIBIO
- HURD_CTHREADS_0.3
- %endif
-@@ -32,6 +33,7 @@
- libdl {
- GLIBC_2.0
- GLIBC_2.1
-+ GLIBC_2.3.3
- }
- libm {
- GLIBC_2.0
-@@ -71,6 +73,7 @@
- GLIBC_2.2.3
- GLIBC_2.2.6
- GLIBC_2.3.2
-+ GLIBC_2.3.3
- GLIBC_PRIVATE
- }
- libresolv {
-@@ -82,6 +85,7 @@
- GLIBC_2.1
- GLIBC_2.2
- GLIBC_2.3
-+ GLIBC_2.3.3
- }
- libutil {
- GLIBC_2.0
-@@ -96,6 +100,7 @@
- GLIBC_2.1.3
- GLIBC_2.2.3
- GLIBC_2.3
-+ GLIBC_2.3.3
- }
- libanl {
- GLIBC_2.2.3
-diff -u -udbrN glibc-2.3.2/abilist/ld.abilist glibc-2.3.2-200304020432/abilist/ld.abilist
---- glibc-2.3.2/abilist/ld.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/ld.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,35 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ _r_debug D 0x14
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __libc_memalign F
-+ calloc F
-+ free F
-+ malloc F
-+ realloc F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _dl_mcount F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _r_debug D 0x28
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ ___tls_get_addr F
-+GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread x86_64-.*-linux.*/tls
-+ __tls_get_addr F
-+GLIBC_2.3 s390-.*-linux.*/tls s390x-.*-linux.*/tls
-+ __tls_get_offset F
-diff -u -udbrN glibc-2.3.2/abilist/libBrokenLocale.abilist glibc-2.3.2-200304020432/abilist/libBrokenLocale.abilist
---- glibc-2.3.2/abilist/libBrokenLocale.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libBrokenLocale.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,13 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __ctype_get_mb_cur_max F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libanl.abilist glibc-2.3.2-200304020432/abilist/libanl.abilist
---- glibc-2.3.2/abilist/libanl.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libanl.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,13 @@
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ gai_cancel F
-+ gai_error F
-+ gai_suspend F
-+ getaddrinfo_a F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libc.abilist glibc-2.3.2-200304020432/abilist/libc.abilist
---- glibc-2.3.2/abilist/libc.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libc.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,2231 @@
-+GCC_3.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GCC_3.0 A
-+ _Unwind_Find_FDE F
-+ __deregister_frame_info_bases F
-+ __register_frame_info_bases F
-+ __register_frame_info_table_bases F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __fpu_control D 0x2
-+ vm86 F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ _IO_stderr_ D 0x50
-+ _IO_stdin_ D 0x50
-+ _IO_stdout_ D 0x50
-+ __strtoq_internal F
-+ __strtouq_internal F
-+ _sys_errlist D 0x1ec
-+ _sys_siglist D 0x80
-+ res_init F
-+ sys_errlist D 0x1ec
-+ sys_sigabbrev D 0x80
-+ sys_siglist D 0x80
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ getaliasbyname_r F
-+ getaliasent_r F
-+ getgrent_r F
-+ getgrgid_r F
-+ getgrnam_r F
-+ gethostbyaddr_r F
-+ gethostbyname2_r F
-+ gethostbyname_r F
-+ gethostent_r F
-+ getnetbyaddr_r F
-+ getnetbyname_r F
-+ getnetent_r F
-+ getprotobyname_r F
-+ getprotobynumber_r F
-+ getprotoent_r F
-+ getpwent_r F
-+ getpwnam_r F
-+ getpwuid_r F
-+ getrpcbyname_r F
-+ getrpcbynumber_r F
-+ getrpcent_r F
-+ getservbyname_r F
-+ getservbyport_r F
-+ getservent_r F
-+ getspent_r F
-+ getspnam_r F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ _sys_nerr D 0x4
-+ sys_nerr D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_do_write F
-+ _IO_fclose F
-+ _IO_fdopen F
-+ _IO_file_attach F
-+ _IO_file_close_it F
-+ _IO_file_fopen F
-+ _IO_file_init F
-+ _IO_file_overflow F
-+ _IO_file_seekoff F
-+ _IO_file_setbuf F
-+ _IO_file_sync F
-+ _IO_file_underflow F
-+ _IO_file_write F
-+ _IO_file_xsputn F
-+ _IO_fopen F
-+ _IO_popen F
-+ _IO_proc_close F
-+ _IO_proc_open F
-+ fclose F
-+ fdopen F
-+ fopen F
-+ pclose F
-+ popen F
-+ pthread_attr_init F
-+ tmpfile F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ chown F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ fnmatch F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_fgetpos F
-+ _IO_fsetpos F
-+ fgetpos F
-+ fopencookie F
-+ fsetpos F
-+ getrlimit F
-+ localeconv F
-+ msgctl F
-+ semctl F
-+ setrlimit F
-+ shmctl F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ re_max_failures D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_cond_broadcast F
-+ pthread_cond_destroy F
-+ pthread_cond_init F
-+ pthread_cond_signal F
-+ pthread_cond_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ realpath F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_adjust_column F
-+ _IO_default_doallocate F
-+ _IO_default_finish F
-+ _IO_default_pbackfail F
-+ _IO_default_uflow F
-+ _IO_default_xsgetn F
-+ _IO_default_xsputn F
-+ _IO_doallocbuf F
-+ _IO_feof F
-+ _IO_ferror F
-+ _IO_fflush F
-+ _IO_fgets F
-+ _IO_file_close F
-+ _IO_file_doallocate F
-+ _IO_file_open F
-+ _IO_file_read F
-+ _IO_file_seek F
-+ _IO_file_stat F
-+ _IO_flockfile F
-+ _IO_flush_all F
-+ _IO_flush_all_linebuffered F
-+ _IO_fprintf F
-+ _IO_fputs F
-+ _IO_fread F
-+ _IO_free_backup_area F
-+ _IO_ftell F
-+ _IO_ftrylockfile F
-+ _IO_funlockfile F
-+ _IO_fwrite F
-+ _IO_getc F
-+ _IO_getline F
-+ _IO_gets F
-+ _IO_init F
-+ _IO_init_marker F
-+ _IO_link_in F
-+ _IO_marker_delta F
-+ _IO_marker_difference F
-+ _IO_padn F
-+ _IO_peekc_locked F
-+ _IO_printf F
-+ _IO_putc F
-+ _IO_puts F
-+ _IO_remove_marker F
-+ _IO_seekmark F
-+ _IO_seekoff F
-+ _IO_seekpos F
-+ _IO_setb F
-+ _IO_setbuffer F
-+ _IO_setvbuf F
-+ _IO_sgetn F
-+ _IO_sprintf F
-+ _IO_sputbackc F
-+ _IO_sscanf F
-+ _IO_str_init_readonly F
-+ _IO_str_init_static F
-+ _IO_str_overflow F
-+ _IO_str_pbackfail F
-+ _IO_str_seekoff F
-+ _IO_str_underflow F
-+ _IO_sungetc F
-+ _IO_switch_to_get_mode F
-+ _IO_un_link F
-+ _IO_ungetc F
-+ _IO_unsave_markers F
-+ _IO_vfprintf F
-+ _IO_vfscanf F
-+ _IO_vsprintf F
-+ __adjtimex F
-+ __argz_count F
-+ __argz_next F
-+ __argz_stringify F
-+ __assert_fail F
-+ __assert_perror_fail F
-+ __bsd_getpgrp F
-+ __check_rhosts_file D 0x4
-+ __close F
-+ __cmsg_nxthdr F
-+ __connect F
-+ __ctype_get_mb_cur_max F
-+ __daylight D 0x4
-+ __dcgettext F
-+ __default_morecore F
-+ __dgettext F
-+ __dup2 F
-+ __errno_location F
-+ __fcntl F
-+ __ffs F
-+ __finite F
-+ __finitef F
-+ __finitel F
-+ __fxstat F
-+ __getdelim F
-+ __getpagesize F
-+ __getpgid F
-+ __getpid F
-+ __gettimeofday F
-+ __gmtime_r F
-+ __h_errno_location F
-+ __isinf F
-+ __isinff F
-+ __isinfl F
-+ __isnan F
-+ __isnanf F
-+ __isnanl F
-+ __iswctype F
-+ __ivaliduser F
-+ __libc_calloc F
-+ __libc_free F
-+ __libc_init_first F
-+ __libc_mallinfo F
-+ __libc_malloc F
-+ __libc_mallopt F
-+ __libc_memalign F
-+ __libc_pvalloc F
-+ __libc_realloc F
-+ __libc_start_main F
-+ __libc_valloc F
-+ __lseek F
-+ __lxstat F
-+ __mbrlen F
-+ __mbrtowc F
-+ __mempcpy F
-+ __monstartup F
-+ __nss_configure_lookup F
-+ __nss_database_lookup F
-+ __nss_group_lookup F
-+ __nss_hosts_lookup F
-+ __nss_next F
-+ __nss_passwd_lookup F
-+ __open F
-+ __overflow F
-+ __pipe F
-+ __printf_fp F
-+ __profile_frequency F
-+ __read F
-+ __res_randomid F
-+ __sbrk F
-+ __sched_get_priority_max F
-+ __sched_get_priority_min F
-+ __sched_getparam F
-+ __sched_getscheduler F
-+ __sched_setscheduler F
-+ __sched_yield F
-+ __secure_getenv F
-+ __select F
-+ __send F
-+ __setpgid F
-+ __sigaction F
-+ __sigaddset F
-+ __sigdelset F
-+ __sigismember F
-+ __sigpause F
-+ __sigsetjmp F
-+ __stpcpy F
-+ __stpncpy F
-+ __strcasecmp F
-+ __strdup F
-+ __strerror_r F
-+ __strtod_internal F
-+ __strtof_internal F
-+ __strtok_r F
-+ __strtol_internal F
-+ __strtold_internal F
-+ __strtoll_internal F
-+ __strtoul_internal F
-+ __strtoull_internal F
-+ __sysv_signal F
-+ __uflow F
-+ __underflow F
-+ __vfscanf F
-+ __vsnprintf F
-+ __vsscanf F
-+ __wait F
-+ __waitpid F
-+ __wcstod_internal F
-+ __wcstof_internal F
-+ __wcstol_internal F
-+ __wcstold_internal F
-+ __wcstoll_internal F
-+ __wcstoul_internal F
-+ __wcstoull_internal F
-+ __write F
-+ __xmknod F
-+ __xpg_basename F
-+ __xstat F
-+ _exit F
-+ _libc_intl_domainname D 0x5
-+ _longjmp F
-+ _mcleanup F
-+ _mcount F
-+ _nl_msg_cat_cntr D 0x4
-+ _obstack_allocated_p F
-+ _obstack_begin F
-+ _obstack_begin_1 F
-+ _obstack_free F
-+ _obstack_memory_used F
-+ _obstack_newchunk F
-+ _rpc_dtablesize F
-+ _seterr_reply F
-+ _setjmp F
-+ _tolower F
-+ _toupper F
-+ a64l F
-+ abort F
-+ abs F
-+ accept F
-+ access F
-+ acct F
-+ addmntent F
-+ adjtime F
-+ adjtimex F
-+ advance F
-+ alarm F
-+ alphasort F
-+ argz_add F
-+ argz_add_sep F
-+ argz_append F
-+ argz_count F
-+ argz_create F
-+ argz_create_sep F
-+ argz_delete F
-+ argz_extract F
-+ argz_insert F
-+ argz_next F
-+ argz_replace F
-+ argz_stringify F
-+ asctime F
-+ asctime_r F
-+ asprintf F
-+ atof F
-+ atoi F
-+ atol F
-+ atoll F
-+ authnone_create F
-+ authunix_create F
-+ authunix_create_default F
-+ basename F
-+ bcmp F
-+ bcopy F
-+ bdflush F
-+ bind F
-+ bindresvport F
-+ bindtextdomain F
-+ brk F
-+ bsd_signal F
-+ bsearch F
-+ btowc F
-+ bzero F
-+ calloc F
-+ callrpc F
-+ canonicalize_file_name F
-+ catclose F
-+ catgets F
-+ catopen F
-+ cfgetispeed F
-+ cfgetospeed F
-+ cfmakeraw F
-+ cfree F
-+ cfsetispeed F
-+ cfsetospeed F
-+ cfsetspeed F
-+ chdir F
-+ chflags F
-+ chmod F
-+ chroot F
-+ clearenv F
-+ clearerr F
-+ clearerr_unlocked F
-+ clnt_broadcast F
-+ clnt_create F
-+ clnt_pcreateerror F
-+ clnt_perrno F
-+ clnt_perror F
-+ clnt_spcreateerror F
-+ clnt_sperrno F
-+ clnt_sperror F
-+ clntraw_create F
-+ clnttcp_create F
-+ clntudp_bufcreate F
-+ clntudp_create F
-+ clock F
-+ close F
-+ closedir F
-+ closelog F
-+ confstr F
-+ connect F
-+ copysign F
-+ copysignf F
-+ copysignl F
-+ creat F
-+ create_module F
-+ ctermid F
-+ ctime F
-+ ctime_r F
-+ cuserid F
-+ daemon F
-+ daylight D 0x4
-+ dcgettext F
-+ delete_module F
-+ dgettext F
-+ difftime F
-+ dirfd F
-+ dirname F
-+ div F
-+ dprintf F
-+ drand48 F
-+ drand48_r F
-+ dup F
-+ dup2 F
-+ dysize F
-+ ecvt F
-+ ecvt_r F
-+ endaliasent F
-+ endfsent F
-+ endgrent F
-+ endhostent F
-+ endmntent F
-+ endnetent F
-+ endnetgrent F
-+ endprotoent F
-+ endpwent F
-+ endrpcent F
-+ endservent F
-+ endspent F
-+ endttyent F
-+ endusershell F
-+ endutent F
-+ envz_add F
-+ envz_entry F
-+ envz_get F
-+ envz_merge F
-+ envz_remove F
-+ envz_strip F
-+ erand48 F
-+ erand48_r F
-+ err F
-+ error F
-+ error_at_line F
-+ error_message_count D 0x4
-+ error_one_per_line D 0x4
-+ errx F
-+ ether_aton F
-+ ether_aton_r F
-+ ether_hostton F
-+ ether_line F
-+ ether_ntoa F
-+ ether_ntoa_r F
-+ ether_ntohost F
-+ euidaccess F
-+ execl F
-+ execle F
-+ execlp F
-+ execv F
-+ execve F
-+ execvp F
-+ exit F
-+ fchdir F
-+ fchflags F
-+ fchmod F
-+ fchown F
-+ fcloseall F
-+ fcntl F
-+ fcvt F
-+ fcvt_r F
-+ fdatasync F
-+ feof F
-+ feof_unlocked F
-+ ferror F
-+ ferror_unlocked F
-+ fexecve F
-+ fflush F
-+ fflush_unlocked F
-+ ffs F
-+ fgetc F
-+ fgetgrent F
-+ fgetgrent_r F
-+ fgetpwent F
-+ fgetpwent_r F
-+ fgets F
-+ fgetspent F
-+ fgetspent_r F
-+ fileno F
-+ fileno_unlocked F
-+ finite F
-+ finitef F
-+ finitel F
-+ flock F
-+ flockfile F
-+ fork F
-+ fpathconf F
-+ fprintf F
-+ fputc F
-+ fputc_unlocked F
-+ fputs F
-+ fread F
-+ free F
-+ freeaddrinfo F
-+ freopen F
-+ frexp F
-+ frexpf F
-+ frexpl F
-+ fscanf F
-+ fseek F
-+ fstatfs F
-+ fsync F
-+ ftell F
-+ ftime F
-+ ftok F
-+ ftruncate F
-+ ftrylockfile F
-+ fts_children F
-+ fts_close F
-+ fts_open F
-+ fts_read F
-+ fts_set F
-+ ftw F
-+ funlockfile F
-+ fwrite F
-+ gcvt F
-+ get_avphys_pages F
-+ get_current_dir_name F
-+ get_kernel_syms F
-+ get_myaddress F
-+ get_nprocs F
-+ get_nprocs_conf F
-+ get_phys_pages F
-+ getaddrinfo F
-+ getaliasbyname F
-+ getaliasent F
-+ getc F
-+ getc_unlocked F
-+ getchar F
-+ getchar_unlocked F
-+ getcwd F
-+ getdelim F
-+ getdirentries F
-+ getdomainname F
-+ getdtablesize F
-+ getegid F
-+ getenv F
-+ geteuid F
-+ getfsent F
-+ getfsfile F
-+ getfsspec F
-+ getgid F
-+ getgrent F
-+ getgrgid F
-+ getgrnam F
-+ getgroups F
-+ gethostbyaddr F
-+ gethostbyname F
-+ gethostbyname2 F
-+ gethostent F
-+ gethostid F
-+ gethostname F
-+ getitimer F
-+ getline F
-+ getlogin F
-+ getlogin_r F
-+ getmntent F
-+ getmntent_r F
-+ getnetbyaddr F
-+ getnetbyname F
-+ getnetent F
-+ getnetgrent F
-+ getnetgrent_r F
-+ getopt F
-+ getopt_long F
-+ getopt_long_only F
-+ getpagesize F
-+ getpass F
-+ getpeername F
-+ getpgid F
-+ getpgrp F
-+ getpid F
-+ getppid F
-+ getpriority F
-+ getprotobyname F
-+ getprotobynumber F
-+ getprotoent F
-+ getpublickey F
-+ getpw F
-+ getpwent F
-+ getpwnam F
-+ getpwuid F
-+ getresgid F
-+ getresuid F
-+ getrpcbyname F
-+ getrpcbynumber F
-+ getrpcent F
-+ getrpcport F
-+ getrusage F
-+ gets F
-+ getsecretkey F
-+ getservbyname F
-+ getservbyport F
-+ getservent F
-+ getsid F
-+ getsockname F
-+ getsockopt F
-+ getspent F
-+ getspnam F
-+ getsubopt F
-+ gettext F
-+ gettimeofday F
-+ getttyent F
-+ getttynam F
-+ getuid F
-+ getusershell F
-+ getutent F
-+ getutent_r F
-+ getutid F
-+ getutid_r F
-+ getutline F
-+ getutline_r F
-+ getw F
-+ getwd F
-+ glob F
-+ glob_pattern_p F
-+ globfree F
-+ gmtime F
-+ gmtime_r F
-+ group_member F
-+ gsignal F
-+ gtty F
-+ h_nerr D 0x4
-+ hasmntopt F
-+ hcreate F
-+ hcreate_r F
-+ hdestroy F
-+ hdestroy_r F
-+ herror F
-+ hsearch F
-+ hsearch_r F
-+ hstrerror F
-+ htonl F
-+ htons F
-+ index F
-+ inet_addr F
-+ inet_aton F
-+ inet_lnaof F
-+ inet_makeaddr F
-+ inet_netof F
-+ inet_network F
-+ inet_nsap_addr F
-+ inet_nsap_ntoa F
-+ inet_ntoa F
-+ inet_ntop F
-+ inet_pton F
-+ init_module F
-+ initgroups F
-+ initstate F
-+ initstate_r F
-+ innetgr F
-+ insque F
-+ ioctl F
-+ iruserok F
-+ isalnum F
-+ isalpha F
-+ isascii F
-+ isatty F
-+ isblank F
-+ iscntrl F
-+ isdigit F
-+ isfdtype F
-+ isgraph F
-+ isinf F
-+ isinff F
-+ isinfl F
-+ islower F
-+ isnan F
-+ isnanf F
-+ isnanl F
-+ isprint F
-+ ispunct F
-+ isspace F
-+ isupper F
-+ iswalnum F
-+ iswalpha F
-+ iswcntrl F
-+ iswctype F
-+ iswdigit F
-+ iswgraph F
-+ iswlower F
-+ iswprint F
-+ iswpunct F
-+ iswspace F
-+ iswupper F
-+ iswxdigit F
-+ isxdigit F
-+ jrand48 F
-+ jrand48_r F
-+ kill F
-+ killpg F
-+ klogctl F
-+ l64a F
-+ labs F
-+ lchown F
-+ lckpwdf F
-+ lcong48 F
-+ lcong48_r F
-+ ldexp F
-+ ldexpf F
-+ ldexpl F
-+ ldiv F
-+ lfind F
-+ link F
-+ listen F
-+ llabs F
-+ lldiv F
-+ llseek F
-+ localtime F
-+ localtime_r F
-+ lockf F
-+ longjmp F
-+ lrand48 F
-+ lrand48_r F
-+ lsearch F
-+ lseek F
-+ madvise F
-+ mallinfo F
-+ malloc F
-+ malloc_get_state F
-+ malloc_set_state F
-+ malloc_stats F
-+ malloc_trim F
-+ malloc_usable_size F
-+ mallopt F
-+ mblen F
-+ mbrlen F
-+ mbrtowc F
-+ mbsinit F
-+ mbsnrtowcs F
-+ mbsrtowcs F
-+ mbstowcs F
-+ mbtowc F
-+ mcheck F
-+ memalign F
-+ memccpy F
-+ memchr F
-+ memcmp F
-+ memcpy F
-+ memfrob F
-+ memmem F
-+ memmove F
-+ memset F
-+ mkdir F
-+ mkfifo F
-+ mkstemp F
-+ mktemp F
-+ mktime F
-+ mlock F
-+ mlockall F
-+ mmap F
-+ modf F
-+ modff F
-+ modfl F
-+ monstartup F
-+ mount F
-+ mprobe F
-+ mprotect F
-+ mrand48 F
-+ mrand48_r F
-+ mremap F
-+ msgget F
-+ msgrcv F
-+ msgsnd F
-+ msync F
-+ mtrace F
-+ munlock F
-+ munlockall F
-+ munmap F
-+ muntrace F
-+ nanosleep F
-+ nfsservctl F
-+ nice F
-+ nl_langinfo F
-+ nrand48 F
-+ nrand48_r F
-+ ntohl F
-+ ntohs F
-+ obstack_exit_failure D 0x4
-+ obstack_free F
-+ obstack_printf F
-+ obstack_vprintf F
-+ on_exit F
-+ open F
-+ open_memstream F
-+ opendir F
-+ openlog F
-+ opterr D 0x4
-+ optind D 0x4
-+ optopt D 0x4
-+ parse_printf_format F
-+ pathconf F
-+ pause F
-+ perror F
-+ personality F
-+ pipe F
-+ pmap_getmaps F
-+ pmap_getport F
-+ pmap_rmtcall F
-+ pmap_set F
-+ pmap_unset F
-+ poll F
-+ prctl F
-+ printf F
-+ profil F
-+ pselect F
-+ psignal F
-+ pthread_attr_destroy F
-+ pthread_attr_getdetachstate F
-+ pthread_attr_getinheritsched F
-+ pthread_attr_getschedparam F
-+ pthread_attr_getschedpolicy F
-+ pthread_attr_getscope F
-+ pthread_attr_setdetachstate F
-+ pthread_attr_setinheritsched F
-+ pthread_attr_setschedparam F
-+ pthread_attr_setschedpolicy F
-+ pthread_attr_setscope F
-+ pthread_condattr_destroy F
-+ pthread_condattr_init F
-+ pthread_equal F
-+ pthread_exit F
-+ pthread_getschedparam F
-+ pthread_mutex_destroy F
-+ pthread_mutex_init F
-+ pthread_mutex_lock F
-+ pthread_mutex_unlock F
-+ pthread_self F
-+ pthread_setcancelstate F
-+ pthread_setcanceltype F
-+ pthread_setschedparam F
-+ ptrace F
-+ putc F
-+ putc_unlocked F
-+ putchar F
-+ putchar_unlocked F
-+ putenv F
-+ putpwent F
-+ puts F
-+ putspent F
-+ pututline F
-+ putw F
-+ pvalloc F
-+ qecvt F
-+ qecvt_r F
-+ qfcvt F
-+ qfcvt_r F
-+ qgcvt F
-+ qsort F
-+ query_module F
-+ quotactl F
-+ raise F
-+ rand F
-+ rand_r F
-+ random F
-+ random_r F
-+ rcmd F
-+ re_comp F
-+ re_compile_fastmap F
-+ re_compile_pattern F
-+ re_exec F
-+ re_match F
-+ re_match_2 F
-+ re_search F
-+ re_search_2 F
-+ re_set_registers F
-+ re_set_syntax F
-+ read F
-+ readdir F
-+ readdir_r F
-+ readlink F
-+ readv F
-+ realloc F
-+ reboot F
-+ recv F
-+ recvfrom F
-+ recvmsg F
-+ regcomp F
-+ regerror F
-+ regexec F
-+ regfree F
-+ register_printf_function F
-+ registerrpc F
-+ remove F
-+ remque F
-+ rename F
-+ revoke F
-+ rewind F
-+ rewinddir F
-+ rexec F
-+ rexecoptions D 0x4
-+ rindex F
-+ rmdir F
-+ rpmatch F
-+ rresvport F
-+ ruserok F
-+ ruserpass F
-+ sbrk F
-+ scalbn F
-+ scalbnf F
-+ scalbnl F
-+ scandir F
-+ scanf F
-+ sched_get_priority_max F
-+ sched_get_priority_min F
-+ sched_getparam F
-+ sched_getscheduler F
-+ sched_rr_get_interval F
-+ sched_setparam F
-+ sched_setscheduler F
-+ sched_yield F
-+ seed48 F
-+ seed48_r F
-+ seekdir F
-+ select F
-+ semget F
-+ semop F
-+ send F
-+ sendmsg F
-+ sendto F
-+ setaliasent F
-+ setbuf F
-+ setbuffer F
-+ setcontext F
-+ setdomainname F
-+ setegid F
-+ setenv F
-+ seteuid F
-+ setfsent F
-+ setfsgid F
-+ setfsuid F
-+ setgid F
-+ setgrent F
-+ setgroups F
-+ sethostent F
-+ sethostid F
-+ sethostname F
-+ setitimer F
-+ setjmp F
-+ setlinebuf F
-+ setlocale F
-+ setlogin F
-+ setlogmask F
-+ setmntent F
-+ setnetent F
-+ setnetgrent F
-+ setpgid F
-+ setpgrp F
-+ setpriority F
-+ setprotoent F
-+ setpwent F
-+ setregid F
-+ setresgid F
-+ setresuid F
-+ setreuid F
-+ setrpcent F
-+ setservent F
-+ setsid F
-+ setsockopt F
-+ setspent F
-+ setstate F
-+ setstate_r F
-+ settimeofday F
-+ setttyent F
-+ setuid F
-+ setusershell F
-+ setutent F
-+ setvbuf F
-+ sgetspent F
-+ sgetspent_r F
-+ shmat F
-+ shmdt F
-+ shmget F
-+ shutdown F
-+ sigaction F
-+ sigaddset F
-+ sigaltstack F
-+ sigandset F
-+ sigblock F
-+ sigdelset F
-+ sigemptyset F
-+ sigfillset F
-+ siggetmask F
-+ siginterrupt F
-+ sigisemptyset F
-+ sigismember F
-+ siglongjmp F
-+ signal F
-+ sigorset F
-+ sigpause F
-+ sigpending F
-+ sigprocmask F
-+ sigreturn F
-+ sigsetmask F
-+ sigstack F
-+ sigsuspend F
-+ sigvec F
-+ sigwait F
-+ sleep F
-+ snprintf F
-+ socket F
-+ socketpair F
-+ sprintf F
-+ srand F
-+ srand48 F
-+ srand48_r F
-+ srandom F
-+ srandom_r F
-+ sscanf F
-+ ssignal F
-+ sstk F
-+ statfs F
-+ step F
-+ stime F
-+ stpcpy F
-+ stpncpy F
-+ strcasecmp F
-+ strcat F
-+ strchr F
-+ strcmp F
-+ strcoll F
-+ strcpy F
-+ strcspn F
-+ strdup F
-+ strerror F
-+ strerror_r F
-+ strfmon F
-+ strfry F
-+ strftime F
-+ strlen F
-+ strncasecmp F
-+ strncat F
-+ strncmp F
-+ strncpy F
-+ strndup F
-+ strnlen F
-+ strpbrk F
-+ strptime F
-+ strrchr F
-+ strsep F
-+ strsignal F
-+ strspn F
-+ strstr F
-+ strtod F
-+ strtof F
-+ strtok F
-+ strtok_r F
-+ strtol F
-+ strtold F
-+ strtoll F
-+ strtoq F
-+ strtoul F
-+ strtoull F
-+ strtouq F
-+ strxfrm F
-+ stty F
-+ svc_exit F
-+ svc_fdset D 0x80
-+ svc_getreq F
-+ svc_getreqset F
-+ svc_register F
-+ svc_run F
-+ svc_sendreply F
-+ svc_unregister F
-+ svcerr_auth F
-+ svcerr_decode F
-+ svcerr_noproc F
-+ svcerr_noprog F
-+ svcerr_progvers F
-+ svcerr_systemerr F
-+ svcerr_weakauth F
-+ svcfd_create F
-+ svcraw_create F
-+ svctcp_create F
-+ svcudp_bufcreate F
-+ svcudp_create F
-+ svcudp_enablecache F
-+ swab F
-+ swapoff F
-+ swapon F
-+ symlink F
-+ sync F
-+ syscall F
-+ sysconf F
-+ sysctl F
-+ sysinfo F
-+ syslog F
-+ system F
-+ tcdrain F
-+ tcflow F
-+ tcflush F
-+ tcgetattr F
-+ tcgetpgrp F
-+ tcsendbreak F
-+ tcsetattr F
-+ tcsetpgrp F
-+ tdelete F
-+ telldir F
-+ tempnam F
-+ textdomain F
-+ tfind F
-+ time F
-+ timegm F
-+ timelocal F
-+ times F
-+ tmpnam F
-+ tmpnam_r F
-+ toascii F
-+ tolower F
-+ toupper F
-+ towctrans F
-+ towlower F
-+ towupper F
-+ tr_break F
-+ truncate F
-+ tsearch F
-+ ttyname F
-+ ttyname_r F
-+ ttyslot F
-+ twalk F
-+ tzset F
-+ ualarm F
-+ ulckpwdf F
-+ ulimit F
-+ umask F
-+ umount F
-+ uname F
-+ ungetc F
-+ unlink F
-+ unsetenv F
-+ updwtmp F
-+ uselib F
-+ usleep F
-+ ustat F
-+ utime F
-+ utimes F
-+ utmpname F
-+ valloc F
-+ vasprintf F
-+ vdprintf F
-+ verr F
-+ verrx F
-+ vfork F
-+ vfprintf F
-+ vfscanf F
-+ vhangup F
-+ vlimit F
-+ vprintf F
-+ vscanf F
-+ vsnprintf F
-+ vsprintf F
-+ vsscanf F
-+ vsyslog F
-+ vtimes F
-+ vwarn F
-+ vwarnx F
-+ wait F
-+ wait3 F
-+ wait4 F
-+ waitpid F
-+ warn F
-+ warnx F
-+ wcpcpy F
-+ wcpncpy F
-+ wcrtomb F
-+ wcscat F
-+ wcschr F
-+ wcscmp F
-+ wcscoll F
-+ wcscpy F
-+ wcscspn F
-+ wcsdup F
-+ wcslen F
-+ wcsncat F
-+ wcsncmp F
-+ wcsncpy F
-+ wcsnrtombs F
-+ wcspbrk F
-+ wcsrchr F
-+ wcsrtombs F
-+ wcsspn F
-+ wcsstr F
-+ wcstod F
-+ wcstof F
-+ wcstok F
-+ wcstol F
-+ wcstold F
-+ wcstombs F
-+ wcstoq F
-+ wcstoul F
-+ wcstouq F
-+ wcswidth F
-+ wcsxfrm F
-+ wctob F
-+ wctomb F
-+ wctrans F
-+ wctype F
-+ wcwidth F
-+ wmemchr F
-+ wmemcmp F
-+ wmemcpy F
-+ wmemmove F
-+ wmemset F
-+ write F
-+ writev F
-+ xdr_accepted_reply F
-+ xdr_array F
-+ xdr_authunix_parms F
-+ xdr_bool F
-+ xdr_bytes F
-+ xdr_callhdr F
-+ xdr_callmsg F
-+ xdr_char F
-+ xdr_cryptkeyarg F
-+ xdr_cryptkeyarg2 F
-+ xdr_cryptkeyres F
-+ xdr_des_block F
-+ xdr_double F
-+ xdr_enum F
-+ xdr_float F
-+ xdr_free F
-+ xdr_int F
-+ xdr_key_netstarg F
-+ xdr_key_netstres F
-+ xdr_keybuf F
-+ xdr_keystatus F
-+ xdr_long F
-+ xdr_netobj F
-+ xdr_opaque F
-+ xdr_opaque_auth F
-+ xdr_pmap F
-+ xdr_pmaplist F
-+ xdr_pointer F
-+ xdr_reference F
-+ xdr_rejected_reply F
-+ xdr_replymsg F
-+ xdr_rmtcall_args F
-+ xdr_rmtcallres F
-+ xdr_short F
-+ xdr_string F
-+ xdr_u_char F
-+ xdr_u_int F
-+ xdr_u_long F
-+ xdr_u_short F
-+ xdr_union F
-+ xdr_vector F
-+ xdr_void F
-+ xdr_wrapstring F
-+ xdrmem_create F
-+ xdrrec_create F
-+ xdrrec_endofrecord F
-+ xdrrec_eof F
-+ xdrrec_skiprecord F
-+ xdrstdio_create F
-+ xencrypt F
-+ xprt_register F
-+ xprt_unregister F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fork F
-+ _nl_default_dirname D 0x12
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __bzero F
-+ __clone F
-+ clone F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __divdi3 F
-+ __moddi3 F
-+ __udivdi3 F
-+ __umoddi3 F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ atexit F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+ __deregister_frame F
-+ __frame_state_for F
-+ __register_frame F
-+ __register_frame_info_table F
-+ __register_frame_table F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __deregister_frame_info F
-+ __register_frame_info F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _IO_file_jumps D 0x54
-+ _IO_list_all D 0x4
-+ __after_morecore_hook D 0x4
-+ __ctype32_b D 0x4
-+ __ctype_b D 0x4
-+ __ctype_tolower D 0x4
-+ __ctype_toupper D 0x4
-+ __curbrk D 0x4
-+ __environ D 0x4
-+ __free_hook D 0x4
-+ __malloc_hook D 0x4
-+ __malloc_initialize_hook D 0x4
-+ __memalign_hook D 0x4
-+ __morecore D 0x4
-+ __progname D 0x4
-+ __progname_full D 0x4
-+ __rcmd_errstr D 0x4
-+ __realloc_hook D 0x4
-+ __timezone D 0x4
-+ __tzname D 0x8
-+ _environ D 0x4
-+ _nl_domain_bindings D 0x4
-+ _null_auth D 0xc
-+ _obstack D 0x4
-+ environ D 0x4
-+ error_print_progname D 0x4
-+ h_errlist D 0x14
-+ loc1 D 0x4
-+ loc2 D 0x4
-+ locs D 0x4
-+ mallwatch D 0x4
-+ obstack_alloc_failed_handler D 0x4
-+ optarg D 0x4
-+ program_invocation_name D 0x4
-+ program_invocation_short_name D 0x4
-+ re_syntax_options D 0x4
-+ rpc_createerr D 0x10
-+ stderr D 0x4
-+ stdin D 0x4
-+ stdout D 0x4
-+ svcauthdes_stats D 0xc
-+ timezone D 0x4
-+ tzname D 0x8
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
-+ ___brk_addr D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ mcount F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ ioperm F
-+ iopl F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls
-+ _errno D 0x4
-+ _h_errno D 0x4
-+ errno D 0x4
-+ h_errno D 0x4
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls
-+ _res D 0x200
-+GLIBC_2.0 m68.*-.*-linux.*/notls
-+ _res D 0x1fe
-+ cacheflush F
-+GLIBC_2.0 m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fpu_control D 0x4
-+GLIBC_2.0 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+ __ashldi3 F
-+ __ashrdi3 F
-+ __cmpdi2 F
-+ __fixdfdi F
-+ __fixsfdi F
-+ __fixunsdfdi F
-+ __fixunssfdi F
-+ __floatdidf F
-+ __floatdisf F
-+ __lshrdi3 F
-+ __ucmpdi2 F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __memcpy_by2 F
-+ __memcpy_by4 F
-+ __memcpy_g F
-+ __mempcpy_by2 F
-+ __mempcpy_by4 F
-+ __mempcpy_byn F
-+ __memset_ccn_by2 F
-+ __memset_ccn_by4 F
-+ __memset_gcn_by2 F
-+ __memset_gcn_by4 F
-+ __stpcpy_g F
-+ __strcat_c F
-+ __strcat_g F
-+ __strchr_c F
-+ __strchr_g F
-+ __strchrnul_c F
-+ __strchrnul_g F
-+ __strcmp_gg F
-+ __strcpy_g F
-+ __strcspn_cg F
-+ __strcspn_g F
-+ __strlen_g F
-+ __strncat_g F
-+ __strncmp_g F
-+ __strncpy_by2 F
-+ __strncpy_by4 F
-+ __strncpy_byn F
-+ __strncpy_gg F
-+ __strpbrk_cg F
-+ __strpbrk_g F
-+ __strrchr_c F
-+ __strrchr_g F
-+ __strspn_cg F
-+ __strspn_g F
-+ __strstr_cg F
-+ __strstr_g F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.1 A
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _Exit F
-+ __mempcpy_small F
-+ __stpcpy_small F
-+ __strcpy_small F
-+ __strcspn_c1 F
-+ __strcspn_c2 F
-+ __strcspn_c3 F
-+ __strpbrk_c2 F
-+ __strpbrk_c3 F
-+ __strsep_1c F
-+ __strsep_2c F
-+ __strsep_3c F
-+ __strsep_g F
-+ __strspn_c1 F
-+ __strspn_c2 F
-+ __strspn_c3 F
-+ __strtok_r_1c F
-+ __strverscmp F
-+ getutmp F
-+ getutmpx F
-+ imaxabs F
-+ imaxdiv F
-+ strchrnul F
-+ xdr_hyper F
-+ xdr_int64_t F
-+ xdr_longlong_t F
-+ xdr_u_hyper F
-+ xdr_u_longlong_t F
-+ xdr_uint64_t F
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.2 A
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __vfork F
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.3 A
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __cxa_atexit F
-+ __cxa_finalize F
-+ __sigsuspend F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+ scalbln F
-+ scalblnf F
-+ scalblnl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.2 ia64-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ wordexp F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_fgetpos64 F
-+ _IO_fsetpos64 F
-+ __fxstat64 F
-+ __lxstat64 F
-+ __xstat64 F
-+ fgetpos64 F
-+ fsetpos64 F
-+ getrlimit64 F
-+ readdir64 F
-+ readdir64_r F
-+ scandir64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ glob64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ alphasort64 F
-+ versionsort64 F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_file_finish F
-+ _IO_getline_info F
-+ __asprintf F
-+ __backtrace F
-+ __backtrace_symbols F
-+ __backtrace_symbols_fd F
-+ __duplocale F
-+ __freelocale F
-+ __isalnum_l F
-+ __isalpha_l F
-+ __isascii_l F
-+ __isblank_l F
-+ __iscntrl_l F
-+ __isdigit_l F
-+ __isgraph_l F
-+ __islower_l F
-+ __isprint_l F
-+ __ispunct_l F
-+ __isspace_l F
-+ __isupper_l F
-+ __iswalnum_l F
-+ __iswalpha_l F
-+ __iswblank_l F
-+ __iswcntrl_l F
-+ __iswctype_l F
-+ __iswdigit_l F
-+ __iswgraph_l F
-+ __iswlower_l F
-+ __iswprint_l F
-+ __iswpunct_l F
-+ __iswspace_l F
-+ __iswupper_l F
-+ __iswxdigit_l F
-+ __isxdigit_l F
-+ __libc_allocate_rtsig F
-+ __libc_current_sigrtmax F
-+ __libc_current_sigrtmin F
-+ __libc_freeres F
-+ __libc_sa_len F
-+ __newlocale F
-+ __poll F
-+ __pread64 F
-+ __pwrite64 F
-+ __rawmemchr F
-+ __signbit F
-+ __signbitf F
-+ __strcasecmp_l F
-+ __strcasestr F
-+ __strcoll_l F
-+ __strfmon_l F
-+ __strncasecmp_l F
-+ __strtod_l F
-+ __strtof_l F
-+ __strtol_l F
-+ __strtold_l F
-+ __strtoll_l F
-+ __strtoul_l F
-+ __strtoull_l F
-+ __strxfrm_l F
-+ __toascii_l F
-+ __tolower_l F
-+ __toupper_l F
-+ __towctrans F
-+ __towctrans_l F
-+ __towlower_l F
-+ __towupper_l F
-+ __wcscasecmp_l F
-+ __wcscoll_l F
-+ __wcsncasecmp_l F
-+ __wcstod_l F
-+ __wcstof_l F
-+ __wcstol_l F
-+ __wcstold_l F
-+ __wcstoll_l F
-+ __wcstoul_l F
-+ __wcstoull_l F
-+ __wcsxfrm_l F
-+ __wctype_l F
-+ _argp_unlock_xxx F
-+ _authenticate F
-+ _dl_mcount_wrapper F
-+ _dl_mcount_wrapper_check F
-+ addseverity F
-+ argp_err_exit_status D 0x4
-+ argp_error F
-+ argp_failure F
-+ argp_help F
-+ argp_parse F
-+ argp_state_help F
-+ argp_usage F
-+ authdes_create F
-+ authdes_getucred F
-+ authdes_pk_create F
-+ backtrace F
-+ backtrace_symbols F
-+ backtrace_symbols_fd F
-+ capget F
-+ capset F
-+ cbc_crypt F
-+ clntunix_create F
-+ creat64 F
-+ des_setparity F
-+ ecb_crypt F
-+ endutxent F
-+ fattach F
-+ fdetach F
-+ ffsl F
-+ ffsll F
-+ fgetc_unlocked F
-+ fgets_unlocked F
-+ fmtmsg F
-+ fopen64 F
-+ fputs_unlocked F
-+ fread_unlocked F
-+ freopen64 F
-+ fseeko F
-+ fseeko64 F
-+ fstatfs64 F
-+ fstatvfs F
-+ fstatvfs64 F
-+ ftello F
-+ ftello64 F
-+ ftruncate64 F
-+ ftw64 F
-+ fwrite_unlocked F
-+ gai_strerror F
-+ getcontext F
-+ getdate F
-+ getdate_err D 0x4
-+ getdate_r F
-+ getmsg F
-+ getnameinfo F
-+ getnetname F
-+ getpmsg F
-+ getpt F
-+ getutxent F
-+ getutxid F
-+ getutxline F
-+ globfree64 F
-+ gnu_get_libc_release F
-+ gnu_get_libc_version F
-+ grantpt F
-+ host2netname F
-+ iconv F
-+ iconv_close F
-+ iconv_open F
-+ if_freenameindex F
-+ if_indextoname F
-+ if_nameindex F
-+ if_nametoindex F
-+ in6addr_any D 0x10
-+ in6addr_loopback D 0x10
-+ isastream F
-+ iswblank F
-+ key_decryptsession F
-+ key_decryptsession_pk F
-+ key_encryptsession F
-+ key_encryptsession_pk F
-+ key_gendes F
-+ key_get_conv F
-+ key_secretkey_is_set F
-+ key_setnet F
-+ key_setsecret F
-+ lockf64 F
-+ lseek64 F
-+ makecontext F
-+ mempcpy F
-+ mmap64 F
-+ netname2host F
-+ netname2user F
-+ nftw F
-+ nftw64 F
-+ ntp_adjtime F
-+ ntp_gettime F
-+ open64 F
-+ passwd2des F
-+ pread F
-+ pread64 F
-+ printf_size F
-+ printf_size_info F
-+ ptsname F
-+ ptsname_r F
-+ putgrent F
-+ putmsg F
-+ putpmsg F
-+ pututxline F
-+ pwrite F
-+ pwrite64 F
-+ rawmemchr F
-+ rtime F
-+ sendfile F
-+ setrlimit64 F
-+ setutxent F
-+ sighold F
-+ sigignore F
-+ sigqueue F
-+ sigrelse F
-+ sigset F
-+ sigtimedwait F
-+ sigwaitinfo F
-+ statfs64 F
-+ statvfs F
-+ statvfs64 F
-+ strcasestr F
-+ strtoimax F
-+ strtoumax F
-+ strverscmp F
-+ svcunix_create F
-+ svcunixfd_create F
-+ swapcontext F
-+ sysv_signal F
-+ tcgetsid F
-+ tdestroy F
-+ tmpfile64 F
-+ truncate64 F
-+ umount2 F
-+ unlockpt F
-+ updwtmpx F
-+ user2netname F
-+ utmpxname F
-+ versionsort F
-+ waitid F
-+ wcscasecmp F
-+ wcsncasecmp F
-+ wcsnlen F
-+ wcstoimax F
-+ wcstoll F
-+ wcstoull F
-+ wcstoumax F
-+ wcswcs F
-+ wordfree F
-+ xdecrypt F
-+ xdr_authdes_cred F
-+ xdr_authdes_verf F
-+ xdr_getcredres F
-+ xdr_int16_t F
-+ xdr_int32_t F
-+ xdr_int8_t F
-+ xdr_netnamestr F
-+ xdr_sizeof F
-+ xdr_uint16_t F
-+ xdr_uint32_t F
-+ xdr_uint8_t F
-+ xdr_unixcred F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __key_decryptsession_pk_LOCAL D 0x4
-+ __key_encryptsession_pk_LOCAL D 0x4
-+ __key_gendes_LOCAL D 0x4
-+ _sys_errlist D 0x1f4
-+ _sys_siglist D 0x100
-+ argp_program_bug_address D 0x4
-+ argp_program_version D 0x4
-+ argp_program_version_hook D 0x4
-+ sys_errlist D 0x1f4
-+ sys_sigabbrev D 0x100
-+ sys_siglist D 0x100
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __signbitl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _IO_2_1_stderr_ D 0x98
-+ _IO_2_1_stdin_ D 0x98
-+ _IO_2_1_stdout_ D 0x98
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ modify_ldt F
-+GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ _IO_2_1_stderr_ D 0xa0
-+ _IO_2_1_stdin_ D 0xa0
-+ _IO_2_1_stdout_ D 0xa0
-+GLIBC_2.1 s390-.*-linux.*/tls
-+ __chown F
-+GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.1 A
-+GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pivot_root F
-+ posix_openpt F
-+GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.2 A
-+GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nss_hostname_digits_dots F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __rpc_thread_createerr F
-+ __rpc_thread_svc_fdset F
-+ __rpc_thread_svc_max_pollfd F
-+ __rpc_thread_svc_pollfd F
-+ sprofil F
-+GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.4 A
-+GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dl_iterate_phdr F
-+ getgrouplist F
-+ sockatmark F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+ __arch_prctl F
-+ arch_prctl F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_adjust_wcolumn F
-+ _IO_free_wbackup_area F
-+ _IO_init_wmarker F
-+ _IO_iter_begin F
-+ _IO_iter_end F
-+ _IO_iter_file F
-+ _IO_iter_next F
-+ _IO_least_wmarker F
-+ _IO_list_lock F
-+ _IO_list_resetlock F
-+ _IO_list_unlock F
-+ _IO_seekwmark F
-+ _IO_sputbackwc F
-+ _IO_sungetwc F
-+ _IO_switch_to_main_wget_area F
-+ _IO_switch_to_wbackup_area F
-+ _IO_switch_to_wget_mode F
-+ _IO_unsave_wmarkers F
-+ _IO_wdefault_doallocate F
-+ _IO_wdefault_finish F
-+ _IO_wdefault_pbackfail F
-+ _IO_wdefault_uflow F
-+ _IO_wdefault_xsgetn F
-+ _IO_wdefault_xsputn F
-+ _IO_wdo_write F
-+ _IO_wdoallocbuf F
-+ _IO_wfile_overflow F
-+ _IO_wfile_seekoff F
-+ _IO_wfile_sync F
-+ _IO_wfile_underflow F
-+ _IO_wfile_xsputn F
-+ _IO_wmarker_delta F
-+ _IO_wsetb F
-+ __assert F
-+ __cyg_profile_func_enter F
-+ __cyg_profile_func_exit F
-+ __endmntent F
-+ __fbufsize F
-+ __flbf F
-+ __fpending F
-+ __fpurge F
-+ __freadable F
-+ __freading F
-+ __fsetlocking F
-+ __fwritable F
-+ __fwriting F
-+ __getmntent_r F
-+ __nl_langinfo_l F
-+ __open64 F
-+ __res_init F
-+ __res_nclose F
-+ __res_ninit F
-+ __res_state F
-+ __setmntent F
-+ __statfs F
-+ __strndup F
-+ __sysconf F
-+ __sysctl F
-+ __wctrans_l F
-+ __woverflow F
-+ __wuflow F
-+ __wunderflow F
-+ __xpg_sigpause F
-+ _flushlbf F
-+ bind_textdomain_codeset F
-+ dcngettext F
-+ dngettext F
-+ fgetwc F
-+ fgetwc_unlocked F
-+ fgetws F
-+ fgetws_unlocked F
-+ fmemopen F
-+ fputwc F
-+ fputwc_unlocked F
-+ fputws F
-+ fputws_unlocked F
-+ fwide F
-+ fwprintf F
-+ fwscanf F
-+ getdirentries64 F
-+ getloadavg F
-+ getwc F
-+ getwc_unlocked F
-+ getwchar F
-+ getwchar_unlocked F
-+ iruserok_af F
-+ mcheck_check_all F
-+ mcheck_pedantic F
-+ memrchr F
-+ mincore F
-+ mkdtemp F
-+ mkstemp64 F
-+ moncontrol F
-+ ngettext F
-+ posix_fadvise F
-+ posix_fadvise64 F
-+ posix_fallocate F
-+ posix_fallocate64 F
-+ posix_madvise F
-+ posix_memalign F
-+ posix_spawn F
-+ posix_spawn_file_actions_addclose F
-+ posix_spawn_file_actions_adddup2 F
-+ posix_spawn_file_actions_addopen F
-+ posix_spawn_file_actions_destroy F
-+ posix_spawn_file_actions_init F
-+ posix_spawnattr_destroy F
-+ posix_spawnattr_getflags F
-+ posix_spawnattr_getpgroup F
-+ posix_spawnattr_getschedparam F
-+ posix_spawnattr_getschedpolicy F
-+ posix_spawnattr_getsigdefault F
-+ posix_spawnattr_getsigmask F
-+ posix_spawnattr_init F
-+ posix_spawnattr_setflags F
-+ posix_spawnattr_setpgroup F
-+ posix_spawnattr_setschedparam F
-+ posix_spawnattr_setschedpolicy F
-+ posix_spawnattr_setsigdefault F
-+ posix_spawnattr_setsigmask F
-+ posix_spawnp F
-+ putwc F
-+ putwc_unlocked F
-+ putwchar F
-+ putwchar_unlocked F
-+ rcmd_af F
-+ rexec_af F
-+ rresvport_af F
-+ ruserok_af F
-+ svc_getreq_common F
-+ svc_getreq_poll F
-+ svc_max_pollfd D 0x4
-+ swprintf F
-+ swscanf F
-+ ungetwc F
-+ vfwprintf F
-+ vfwscanf F
-+ vswprintf F
-+ vswscanf F
-+ vwprintf F
-+ vwscanf F
-+ wcschrnul F
-+ wcsftime F
-+ wmempcpy F
-+ wprintf F
-+ wscanf F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ __ctype32_b D 0x8
-+ __ctype32_tolower D 0x8
-+ __ctype32_toupper D 0x8
-+ __ctype_b D 0x8
-+ __ctype_tolower D 0x8
-+ __ctype_toupper D 0x8
-+ _res D 0x238
-+ _sys_errlist D 0x3e8
-+ sys_errlist D 0x3e8
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_2_1_stderr_ D 0xe0
-+ _IO_2_1_stdin_ D 0xe0
-+ _IO_2_1_stdout_ D 0xe0
-+ _IO_file_jumps D 0xa8
-+ _IO_list_all D 0x8
-+ _IO_wfile_jumps D 0xa8
-+ __after_morecore_hook D 0x8
-+ __curbrk D 0x8
-+ __environ D 0x8
-+ __free_hook D 0x8
-+ __key_decryptsession_pk_LOCAL D 0x8
-+ __key_encryptsession_pk_LOCAL D 0x8
-+ __key_gendes_LOCAL D 0x8
-+ __malloc_hook D 0x8
-+ __malloc_initialize_hook D 0x8
-+ __memalign_hook D 0x8
-+ __morecore D 0x8
-+ __progname D 0x8
-+ __progname_full D 0x8
-+ __rcmd_errstr D 0x8
-+ __realloc_hook D 0x8
-+ __timezone D 0x8
-+ __tzname D 0x10
-+ _environ D 0x8
-+ _nl_domain_bindings D 0x8
-+ _null_auth D 0x18
-+ _obstack D 0x8
-+ _res_hconf D 0x48
-+ _sys_siglist D 0x200
-+ argp_program_bug_address D 0x8
-+ argp_program_version D 0x8
-+ argp_program_version_hook D 0x8
-+ environ D 0x8
-+ error_print_progname D 0x8
-+ h_errlist D 0x28
-+ loc1 D 0x8
-+ loc2 D 0x8
-+ locs D 0x8
-+ mallwatch D 0x8
-+ obstack_alloc_failed_handler D 0x8
-+ optarg D 0x8
-+ program_invocation_name D 0x8
-+ program_invocation_short_name D 0x8
-+ re_syntax_options D 0x8
-+ rpc_createerr D 0x20
-+ stderr D 0x8
-+ stdin D 0x8
-+ stdout D 0x8
-+ svc_pollfd D 0x8
-+ svcauthdes_stats D 0x18
-+ sys_sigabbrev D 0x200
-+ sys_siglist D 0x200
-+ timezone D 0x8
-+ tzname D 0x10
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.2.6 A
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nanosleep F
-+GLIBC_2.2.6 ia64-.*-linux.*/tls
-+ getunwind F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __ctype32_tolower D 0x4
-+ __ctype32_toupper D 0x4
-+ _res_hconf D 0x30
-+ svc_pollfd D 0x4
-+GLIBC_2.2 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ _IO_wfile_jumps D 0x54
-+GLIBC_2.2 ia64-.*-linux.*/tls
-+ __clone2 F
-+ __divdf3 F
-+ __divsf3 F
-+ __divtf3 F
-+ __multi3 F
-+ _inb F
-+ _inl F
-+ _inw F
-+ _outb F
-+ _outl F
-+ _outw F
-+ inb F
-+ inl F
-+ inw F
-+ outb F
-+ outw F
-+ pciconfig_read F
-+ pciconfig_write F
-+GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
-+ ___brk_addr D 0x8
-+GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _nl_default_dirname D 0x20
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+ __register_atfork F
-+ lchmod F
-+ sched_getaffinity F
-+ sched_setaffinity F
-+ strptime_l F
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ epoll_create F
-+ epoll_ctl F
-+ epoll_wait F
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ remap_file_pages F
-+GLIBC_2.3.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+ _sys_siglist D 0x104
-+ sys_sigabbrev D 0x104
-+ sys_siglist D 0x104
-+GLIBC_2.3.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ strtoll_l F
-+ strtoull_l F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+ __ctype_b_loc F
-+ __ctype_tolower_loc F
-+ __ctype_toupper_loc F
-+ __isctype F
-+ __strftime_l F
-+ __uselocale F
-+ __wcsftime_l F
-+ duplocale F
-+ fgetxattr F
-+ flistxattr F
-+ freeifaddrs F
-+ freelocale F
-+ fremovexattr F
-+ fsetxattr F
-+ futimes F
-+ getifaddrs F
-+ getxattr F
-+ isalnum_l F
-+ isalpha_l F
-+ isblank_l F
-+ iscntrl_l F
-+ isctype F
-+ isdigit_l F
-+ isgraph_l F
-+ islower_l F
-+ isprint_l F
-+ ispunct_l F
-+ isspace_l F
-+ isupper_l F
-+ iswalnum_l F
-+ iswalpha_l F
-+ iswblank_l F
-+ iswcntrl_l F
-+ iswctype_l F
-+ iswdigit_l F
-+ iswgraph_l F
-+ iswlower_l F
-+ iswprint_l F
-+ iswpunct_l F
-+ iswspace_l F
-+ iswupper_l F
-+ iswxdigit_l F
-+ isxdigit_l F
-+ lgetxattr F
-+ listxattr F
-+ llistxattr F
-+ lremovexattr F
-+ lsetxattr F
-+ lutimes F
-+ newlocale F
-+ nl_langinfo_l F
-+ readahead F
-+ removexattr F
-+ sendfile64 F
-+ setxattr F
-+ strcasecmp_l F
-+ strcoll_l F
-+ strfmon_l F
-+ strftime_l F
-+ strncasecmp_l F
-+ strtod_l F
-+ strtof_l F
-+ strtol_l F
-+ strtold_l F
-+ strtoul_l F
-+ strxfrm_l F
-+ tolower_l F
-+ toupper_l F
-+ towctrans_l F
-+ towlower_l F
-+ towupper_l F
-+ uselocale F
-+ wcscasecmp_l F
-+ wcscoll_l F
-+ wcsftime_l F
-+ wcsncasecmp_l F
-+ wcstod_l F
-+ wcstof_l F
-+ wcstol_l F
-+ wcstold_l F
-+ wcstoll_l F
-+ wcstoul_l F
-+ wcstoull_l F
-+ wcsxfrm_l F
-+ wctrans_l F
-+ wctype_l F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ _sys_errlist D 0x1f8
-+ sys_errlist D 0x1f8
-+GLIBC_2.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ _sys_errlist D 0x3f0
-+ sys_errlist D 0x3f0
-diff -u -udbrN glibc-2.3.2/abilist/libcrypt.abilist glibc-2.3.2-200304020432/abilist/libcrypt.abilist
---- glibc-2.3.2/abilist/libcrypt.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libcrypt.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,19 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ crypt F
-+ crypt_r F
-+ encrypt F
-+ encrypt_r F
-+ fcrypt F
-+ setkey F
-+ setkey_r F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libdl.abilist glibc-2.3.2-200304020432/abilist/libdl.abilist
---- glibc-2.3.2/abilist/libdl.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libdl.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,33 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dlopen F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dladdr F
-+ dlclose F
-+ dlerror F
-+ dlsym F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ dlvsym F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ dladdr1 F
-+ dlinfo F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libm.abilist glibc-2.3.2-200304020432/abilist/libm.abilist
---- glibc-2.3.2/abilist/libm.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libm.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,355 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _LIB_VERSION D 0x4
-+ acos F
-+ acosf F
-+ acosh F
-+ acoshf F
-+ acoshl F
-+ acosl F
-+ asin F
-+ asinf F
-+ asinh F
-+ asinhf F
-+ asinhl F
-+ asinl F
-+ atan F
-+ atan2 F
-+ atan2f F
-+ atan2l F
-+ atanf F
-+ atanh F
-+ atanhf F
-+ atanhl F
-+ atanl F
-+ cbrt F
-+ cbrtf F
-+ cbrtl F
-+ ceil F
-+ ceilf F
-+ ceill F
-+ copysign F
-+ copysignf F
-+ copysignl F
-+ cos F
-+ cosf F
-+ cosh F
-+ coshf F
-+ coshl F
-+ cosl F
-+ drem F
-+ dremf F
-+ dreml F
-+ erf F
-+ erfc F
-+ erfcf F
-+ erfcl F
-+ erff F
-+ erfl F
-+ exp F
-+ expf F
-+ expl F
-+ expm1 F
-+ expm1f F
-+ expm1l F
-+ fabs F
-+ fabsf F
-+ fabsl F
-+ finite F
-+ finitef F
-+ finitel F
-+ floor F
-+ floorf F
-+ floorl F
-+ fmod F
-+ fmodf F
-+ fmodl F
-+ frexp F
-+ frexpf F
-+ frexpl F
-+ gamma F
-+ gammaf F
-+ gammal F
-+ hypot F
-+ hypotf F
-+ hypotl F
-+ ilogb F
-+ ilogbf F
-+ ilogbl F
-+ j0 F
-+ j0f F
-+ j0l F
-+ j1 F
-+ j1f F
-+ j1l F
-+ jn F
-+ jnf F
-+ jnl F
-+ ldexp F
-+ ldexpf F
-+ ldexpl F
-+ lgamma F
-+ lgamma_r F
-+ lgammaf F
-+ lgammaf_r F
-+ lgammal F
-+ lgammal_r F
-+ log F
-+ log10 F
-+ log10f F
-+ log10l F
-+ log1p F
-+ log1pf F
-+ log1pl F
-+ logb F
-+ logbf F
-+ logbl F
-+ logf F
-+ logl F
-+ matherr F
-+ modf F
-+ modff F
-+ modfl F
-+ nextafter F
-+ nextafterf F
-+ nextafterl F
-+ pow F
-+ powf F
-+ powl F
-+ remainder F
-+ remainderf F
-+ remainderl F
-+ rint F
-+ rintf F
-+ rintl F
-+ scalb F
-+ scalbf F
-+ scalbl F
-+ scalbn F
-+ scalbnf F
-+ scalbnl F
-+ signgam D 0x4
-+ significand F
-+ significandf F
-+ significandl F
-+ sin F
-+ sinf F
-+ sinh F
-+ sinhf F
-+ sinhl F
-+ sinl F
-+ sqrt F
-+ sqrtf F
-+ sqrtl F
-+ tan F
-+ tanf F
-+ tanh F
-+ tanhf F
-+ tanhl F
-+ tanl F
-+ y0 F
-+ y0f F
-+ y0l F
-+ y1 F
-+ y1f F
-+ y1l F
-+ yn F
-+ ynf F
-+ ynl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ feclearexcept F
-+ fegetenv F
-+ fegetexceptflag F
-+ feraiseexcept F
-+ fesetenv F
-+ fesetexceptflag F
-+ feupdateenv F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __clog10 F
-+ __clog10f F
-+ __clog10l F
-+ __finite F
-+ __finitef F
-+ __finitel F
-+ __fpclassify F
-+ __fpclassifyf F
-+ __signbit F
-+ __signbitf F
-+ cabs F
-+ cabsf F
-+ cabsl F
-+ cacos F
-+ cacosf F
-+ cacosh F
-+ cacoshf F
-+ cacoshl F
-+ cacosl F
-+ carg F
-+ cargf F
-+ cargl F
-+ casin F
-+ casinf F
-+ casinh F
-+ casinhf F
-+ casinhl F
-+ casinl F
-+ catan F
-+ catanf F
-+ catanh F
-+ catanhf F
-+ catanhl F
-+ catanl F
-+ ccos F
-+ ccosf F
-+ ccosh F
-+ ccoshf F
-+ ccoshl F
-+ ccosl F
-+ cexp F
-+ cexpf F
-+ cexpl F
-+ cimag F
-+ cimagf F
-+ cimagl F
-+ clog F
-+ clog10 F
-+ clog10f F
-+ clog10l F
-+ clogf F
-+ clogl F
-+ conj F
-+ conjf F
-+ conjl F
-+ cpow F
-+ cpowf F
-+ cpowl F
-+ cproj F
-+ cprojf F
-+ cprojl F
-+ creal F
-+ crealf F
-+ creall F
-+ csin F
-+ csinf F
-+ csinh F
-+ csinhf F
-+ csinhl F
-+ csinl F
-+ csqrt F
-+ csqrtf F
-+ csqrtl F
-+ ctan F
-+ ctanf F
-+ ctanh F
-+ ctanhf F
-+ ctanhl F
-+ ctanl F
-+ exp10 F
-+ exp10f F
-+ exp10l F
-+ exp2 F
-+ exp2f F
-+ fdim F
-+ fdimf F
-+ fdiml F
-+ fegetround F
-+ feholdexcept F
-+ fesetround F
-+ fetestexcept F
-+ fma F
-+ fmaf F
-+ fmal F
-+ fmax F
-+ fmaxf F
-+ fmaxl F
-+ fmin F
-+ fminf F
-+ fminl F
-+ llrint F
-+ llrintf F
-+ llrintl F
-+ llround F
-+ llroundf F
-+ llroundl F
-+ log2 F
-+ log2f F
-+ log2l F
-+ lrint F
-+ lrintf F
-+ lrintl F
-+ lround F
-+ lroundf F
-+ lroundl F
-+ nan F
-+ nanf F
-+ nanl F
-+ nearbyint F
-+ nearbyintf F
-+ nearbyintl F
-+ nexttoward F
-+ nexttowardf F
-+ nexttowardl F
-+ pow10 F
-+ pow10f F
-+ pow10l F
-+ remquo F
-+ remquof F
-+ remquol F
-+ round F
-+ roundf F
-+ roundl F
-+ scalbln F
-+ scalblnf F
-+ scalblnl F
-+ sincos F
-+ sincosf F
-+ sincosl F
-+ tgamma F
-+ tgammaf F
-+ tgammal F
-+ trunc F
-+ truncf F
-+ truncl F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls
-+ __fpclassifyl F
-+ __signbitl F
-+ exp2l F
-+GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __fe_dfl_env D 0x8
-+ __fe_enabled_env D 0x8
-+ __fe_nomask_env F
-+ __fe_nonieee_env D 0x8
-+GLIBC_2.2.3 ia64-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+ matherrf F
-+ matherrl F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ fedisableexcept F
-+ feenableexcept F
-+ fegetexcept F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
-+ __expl F
-+ __expm1l F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libnsl.abilist glibc-2.3.2-200304020432/abilist/libnsl.abilist
---- glibc-2.3.2/abilist/libnsl.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libnsl.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,142 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __yp_check F
-+ xdr_domainname F
-+ xdr_keydat F
-+ xdr_mapname F
-+ xdr_peername F
-+ xdr_valdat F
-+ xdr_yp_buf F
-+ xdr_ypbind_binding F
-+ xdr_ypbind_resp F
-+ xdr_ypbind_resptype F
-+ xdr_ypbind_setdom F
-+ xdr_ypdelete_args F
-+ xdr_ypmap_parms F
-+ xdr_ypmaplist F
-+ xdr_yppush_status F
-+ xdr_yppushresp_xfr F
-+ xdr_ypreq_key F
-+ xdr_ypreq_nokey F
-+ xdr_ypreq_xfr F
-+ xdr_ypresp_all F
-+ xdr_ypresp_key_val F
-+ xdr_ypresp_maplist F
-+ xdr_ypresp_master F
-+ xdr_ypresp_order F
-+ xdr_ypresp_val F
-+ xdr_ypresp_xfr F
-+ xdr_ypstat F
-+ xdr_ypupdate_args F
-+ xdr_ypxfrstat F
-+ yp_all F
-+ yp_bind F
-+ yp_first F
-+ yp_get_default_domain F
-+ yp_maplist F
-+ yp_master F
-+ yp_match F
-+ yp_next F
-+ yp_order F
-+ yp_unbind F
-+ yp_update F
-+ ypbinderr_string F
-+ yperr_string F
-+ ypprot_err F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __free_fdresult F
-+ __nis_default_access F
-+ __nis_default_group F
-+ __nis_default_owner F
-+ __nis_default_ttl F
-+ __nis_finddirectory F
-+ __nis_hash F
-+ __nisbind_connect F
-+ __nisbind_create F
-+ __nisbind_destroy F
-+ __nisbind_next F
-+ nis_add F
-+ nis_add_entry F
-+ nis_addmember F
-+ nis_checkpoint F
-+ nis_clone_directory F
-+ nis_clone_object F
-+ nis_clone_result F
-+ nis_creategroup F
-+ nis_destroy_object F
-+ nis_destroygroup F
-+ nis_dir_cmp F
-+ nis_domain_of F
-+ nis_domain_of_r F
-+ nis_first_entry F
-+ nis_free_directory F
-+ nis_free_object F
-+ nis_free_request F
-+ nis_freenames F
-+ nis_freeresult F
-+ nis_freeservlist F
-+ nis_freetags F
-+ nis_getnames F
-+ nis_getservlist F
-+ nis_ismember F
-+ nis_leaf_of F
-+ nis_leaf_of_r F
-+ nis_lerror F
-+ nis_list F
-+ nis_local_directory F
-+ nis_local_group F
-+ nis_local_host F
-+ nis_local_principal F
-+ nis_lookup F
-+ nis_mkdir F
-+ nis_modify F
-+ nis_modify_entry F
-+ nis_name_of F
-+ nis_name_of_r F
-+ nis_next_entry F
-+ nis_perror F
-+ nis_ping F
-+ nis_print_directory F
-+ nis_print_entry F
-+ nis_print_group F
-+ nis_print_group_entry F
-+ nis_print_link F
-+ nis_print_object F
-+ nis_print_result F
-+ nis_print_rights F
-+ nis_print_table F
-+ nis_read_obj F
-+ nis_remove F
-+ nis_remove_entry F
-+ nis_removemember F
-+ nis_rmdir F
-+ nis_servstate F
-+ nis_sperrno F
-+ nis_sperror F
-+ nis_sperror_r F
-+ nis_stats F
-+ nis_verifygroup F
-+ nis_write_obj F
-+ readColdStartFile F
-+ writeColdStartFile F
-+ xdr_cback_data F
-+ xdr_obj_p F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ xdr_ypall F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libpthread.abilist glibc-2.3.2-200304020432/abilist/libpthread.abilist
---- glibc-2.3.2/abilist/libpthread.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libpthread.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,256 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_attr_init F
-+ pthread_create F
-+ sem_destroy F
-+ sem_getvalue F
-+ sem_init F
-+ sem_post F
-+ sem_trywait F
-+ sem_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ pthread_atfork F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_cond_broadcast F
-+ pthread_cond_destroy F
-+ pthread_cond_init F
-+ pthread_cond_signal F
-+ pthread_cond_timedwait F
-+ pthread_cond_wait F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ _IO_flockfile F
-+ _IO_ftrylockfile F
-+ _IO_funlockfile F
-+ __close F
-+ __connect F
-+ __errno_location F
-+ __fcntl F
-+ __fork F
-+ __h_errno_location F
-+ __lseek F
-+ __open F
-+ __pthread_getspecific F
-+ __pthread_key_create F
-+ __pthread_mutex_destroy F
-+ __pthread_mutex_init F
-+ __pthread_mutex_lock F
-+ __pthread_mutex_trylock F
-+ __pthread_mutex_unlock F
-+ __pthread_mutexattr_destroy F
-+ __pthread_mutexattr_init F
-+ __pthread_mutexattr_settype F
-+ __pthread_once F
-+ __pthread_setspecific F
-+ __read F
-+ __send F
-+ __sigaction F
-+ __wait F
-+ __write F
-+ _pthread_cleanup_pop F
-+ _pthread_cleanup_pop_restore F
-+ _pthread_cleanup_push F
-+ _pthread_cleanup_push_defer F
-+ accept F
-+ close F
-+ connect F
-+ fcntl F
-+ flockfile F
-+ fork F
-+ fsync F
-+ ftrylockfile F
-+ funlockfile F
-+ longjmp F
-+ lseek F
-+ msync F
-+ nanosleep F
-+ open F
-+ pause F
-+ pthread_attr_destroy F
-+ pthread_attr_getdetachstate F
-+ pthread_attr_getinheritsched F
-+ pthread_attr_getschedparam F
-+ pthread_attr_getschedpolicy F
-+ pthread_attr_getscope F
-+ pthread_attr_setdetachstate F
-+ pthread_attr_setinheritsched F
-+ pthread_attr_setschedparam F
-+ pthread_attr_setschedpolicy F
-+ pthread_attr_setscope F
-+ pthread_cancel F
-+ pthread_condattr_destroy F
-+ pthread_condattr_init F
-+ pthread_detach F
-+ pthread_equal F
-+ pthread_exit F
-+ pthread_getschedparam F
-+ pthread_getspecific F
-+ pthread_join F
-+ pthread_key_create F
-+ pthread_key_delete F
-+ pthread_kill F
-+ pthread_kill_other_threads_np F
-+ pthread_mutex_destroy F
-+ pthread_mutex_init F
-+ pthread_mutex_lock F
-+ pthread_mutex_trylock F
-+ pthread_mutex_unlock F
-+ pthread_mutexattr_destroy F
-+ pthread_mutexattr_getkind_np F
-+ pthread_mutexattr_init F
-+ pthread_mutexattr_setkind_np F
-+ pthread_once F
-+ pthread_self F
-+ pthread_setcancelstate F
-+ pthread_setcanceltype F
-+ pthread_setschedparam F
-+ pthread_setspecific F
-+ pthread_sigmask F
-+ pthread_testcancel F
-+ raise F
-+ read F
-+ recv F
-+ recvfrom F
-+ recvmsg F
-+ send F
-+ sendmsg F
-+ sendto F
-+ sigaction F
-+ siglongjmp F
-+ sigwait F
-+ system F
-+ tcdrain F
-+ vfork F
-+ wait F
-+ waitpid F
-+ write F
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.1 A
-+GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ sem_close F
-+ sem_open F
-+ sem_unlink F
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1.2 A
-+GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __vfork F
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __libc_allocate_rtsig F
-+ __libc_current_sigrtmax F
-+ __libc_current_sigrtmin F
-+ pthread_attr_getguardsize F
-+ pthread_attr_getstackaddr F
-+ pthread_attr_getstacksize F
-+ pthread_attr_setguardsize F
-+ pthread_attr_setstackaddr F
-+ pthread_attr_setstacksize F
-+ pthread_getconcurrency F
-+ pthread_mutexattr_gettype F
-+ pthread_mutexattr_settype F
-+ pthread_rwlock_destroy F
-+ pthread_rwlock_init F
-+ pthread_rwlock_rdlock F
-+ pthread_rwlock_tryrdlock F
-+ pthread_rwlock_trywrlock F
-+ pthread_rwlock_unlock F
-+ pthread_rwlock_wrlock F
-+ pthread_rwlockattr_destroy F
-+ pthread_rwlockattr_getkind_np F
-+ pthread_rwlockattr_getpshared F
-+ pthread_rwlockattr_init F
-+ pthread_rwlockattr_setkind_np F
-+ pthread_rwlockattr_setpshared F
-+ pthread_setconcurrency F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ pthread_getattr_np F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __open64 F
-+ __pread64 F
-+ __pthread_rwlock_destroy F
-+ __pthread_rwlock_init F
-+ __pthread_rwlock_rdlock F
-+ __pthread_rwlock_tryrdlock F
-+ __pthread_rwlock_trywrlock F
-+ __pthread_rwlock_unlock F
-+ __pthread_rwlock_wrlock F
-+ __pwrite64 F
-+ __res_state F
-+ lseek64 F
-+ open64 F
-+ pread F
-+ pread64 F
-+ pthread_attr_getstack F
-+ pthread_attr_setstack F
-+ pthread_barrier_destroy F
-+ pthread_barrier_init F
-+ pthread_barrier_wait F
-+ pthread_barrierattr_destroy F
-+ pthread_barrierattr_init F
-+ pthread_barrierattr_setpshared F
-+ pthread_condattr_getpshared F
-+ pthread_condattr_setpshared F
-+ pthread_getcpuclockid F
-+ pthread_mutex_timedlock F
-+ pthread_mutexattr_getpshared F
-+ pthread_mutexattr_setpshared F
-+ pthread_rwlock_timedrdlock F
-+ pthread_rwlock_timedwrlock F
-+ pthread_spin_destroy F
-+ pthread_spin_init F
-+ pthread_spin_lock F
-+ pthread_spin_trylock F
-+ pthread_spin_unlock F
-+ pthread_yield F
-+ pwrite F
-+ pwrite64 F
-+ sem_timedwait F
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.2.6 A
-+GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __nanosleep F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/thread sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ pthread_barrierattr_getpshared F
-+ pthread_condattr_getclock F
-+ pthread_condattr_setclock F
-+ pthread_timedjoin_np F
-+ pthread_tryjoin_np F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libresolv.abilist glibc-2.3.2-200304020432/abilist/libresolv.abilist
---- glibc-2.3.2/abilist/libresolv.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libresolv.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,95 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+ dn_expand F
-+ res_mkquery F
-+ res_query F
-+ res_querydomain F
-+ res_search F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __b64_ntop F
-+ __b64_pton F
-+ __dn_comp F
-+ __dn_count_labels F
-+ __dn_skipname F
-+ __fp_nquery F
-+ __fp_query F
-+ __fp_resstat F
-+ __hostalias F
-+ __loc_aton F
-+ __loc_ntoa F
-+ __p_cdname F
-+ __p_cdnname F
-+ __p_class F
-+ __p_fqname F
-+ __p_fqnname F
-+ __p_option F
-+ __p_query F
-+ __p_secstodate F
-+ __p_time F
-+ __p_type F
-+ __putlong F
-+ __putshort F
-+ __res_close F
-+ __res_dnok F
-+ __res_hnok F
-+ __res_isourserver F
-+ __res_mailok F
-+ __res_nameinquery F
-+ __res_ownok F
-+ __res_queriesmatch F
-+ __res_send F
-+ __sym_ntop F
-+ __sym_ntos F
-+ __sym_ston F
-+ _gethtbyaddr F
-+ _gethtbyname F
-+ _gethtbyname2 F
-+ _gethtent F
-+ _getlong F
-+ _getshort F
-+ _sethtent F
-+ inet_net_ntop F
-+ inet_net_pton F
-+ inet_neta F
-+ res_gethostbyaddr F
-+ res_gethostbyname F
-+ res_gethostbyname2 F
-+ res_send_setqhook F
-+ res_send_setrhook F
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ __p_class_syms D 0x54
-+ __p_type_syms D 0x21c
-+ _res_opcodes D 0x40
-+GLIBC_2.0 ia64-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __p_class_syms D 0xa8
-+ __p_type_syms D 0x438
-+ _res_opcodes D 0x80
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ __dn_expand F
-+ __res_hostalias F
-+ __res_mkquery F
-+ __res_nmkquery F
-+ __res_nquery F
-+ __res_nquerydomain F
-+ __res_nsearch F
-+ __res_nsend F
-+ __res_query F
-+ __res_querydomain F
-+ __res_search F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.2 A
-+ __p_rcode F
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/librt.abilist glibc-2.3.2-200304020432/abilist/librt.abilist
---- glibc-2.3.2/abilist/librt.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/librt.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,44 @@
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1 A
-+GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ aio_cancel F
-+ aio_cancel64 F
-+ aio_error F
-+ aio_error64 F
-+ aio_fsync F
-+ aio_fsync64 F
-+ aio_init F
-+ aio_read F
-+ aio_read64 F
-+ aio_return F
-+ aio_return64 F
-+ aio_suspend F
-+ aio_suspend64 F
-+ aio_write F
-+ aio_write64 F
-+ lio_listio F
-+ lio_listio64 F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ clock_getcpuclockid F
-+ clock_getres F
-+ clock_gettime F
-+ clock_nanosleep F
-+ clock_settime F
-+ shm_open F
-+ shm_unlink F
-+ timer_create F
-+ timer_delete F
-+ timer_getoverrun F
-+ timer_gettime F
-+ timer_settime F
-+GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/abilist/libthread_db.abilist glibc-2.3.2-200304020432/abilist/libthread_db.abilist
---- glibc-2.3.2/abilist/libthread_db.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libthread_db.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,59 @@
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.1.3 A
-+GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ td_init F
-+ td_log F
-+ td_ta_clear_event F
-+ td_ta_delete F
-+ td_ta_enable_stats F
-+ td_ta_event_addr F
-+ td_ta_event_getmsg F
-+ td_ta_get_nthreads F
-+ td_ta_get_ph F
-+ td_ta_get_stats F
-+ td_ta_map_id2thr F
-+ td_ta_map_lwp2thr F
-+ td_ta_new F
-+ td_ta_reset_stats F
-+ td_ta_set_event F
-+ td_ta_setconcurrency F
-+ td_ta_thr_iter F
-+ td_ta_tsd_iter F
-+ td_thr_clear_event F
-+ td_thr_dbresume F
-+ td_thr_dbsuspend F
-+ td_thr_event_enable F
-+ td_thr_event_getmsg F
-+ td_thr_get_info F
-+ td_thr_getfpregs F
-+ td_thr_getgregs F
-+ td_thr_getxregs F
-+ td_thr_getxregsize F
-+ td_thr_set_event F
-+ td_thr_setfpregs F
-+ td_thr_setgregs F
-+ td_thr_setprio F
-+ td_thr_setsigpending F
-+ td_thr_setxregs F
-+ td_thr_sigsetmask F
-+ td_thr_tsd F
-+ td_thr_validate F
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.2.3 A
-+GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ td_symbol_list F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3.3 A
-+ td_thr_tlsbase F
-+GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
-+ GLIBC_2.3 A
-+ td_thr_tls_get_addr F
-diff -u -udbrN glibc-2.3.2/abilist/libutil.abilist glibc-2.3.2-200304020432/abilist/libutil.abilist
---- glibc-2.3.2/abilist/libutil.abilist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/abilist/libutil.abilist Wed Apr 2 06:39:52 2003
-@@ -0,0 +1,18 @@
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+ GLIBC_2.0 A
-+GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
-+| GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+| GLIBC_2.2 s390x-.*-linux.*/tls
-+| GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ forkpty F
-+ login F
-+ login_tty F
-+ logout F
-+ logwtmp F
-+ openpty F
-+GLIBC_2.2.5 x86_64-.*-linux.*/tls
-+ GLIBC_2.2.5 A
-+GLIBC_2.2 s390x-.*-linux.*/tls
-+ GLIBC_2.2 A
-+GLIBC_2.3 powerpc64-.*-linux.*/thread
-+ GLIBC_2.3 A
-diff -u -udbrN glibc-2.3.2/argp/tst-argp1.c glibc-2.3.2-200304020432/argp/tst-argp1.c
---- glibc-2.3.2/argp/tst-argp1.c Wed Dec 4 23:45:02 2002
-+++ glibc-2.3.2-200304020432/argp/tst-argp1.c Mon Mar 17 20:21:04 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -29,7 +29,7 @@
- #define OPT_TOPLEVEL 304
-
-
--static const struct argp_option options[] =
-+static const struct argp_option test_options[] =
- {
- { NULL, 0, NULL, 0, "\
- This is a test for threads so we allow ther user to selection the number of \
-@@ -89,12 +89,12 @@
- /* Data structure to communicate with argp functions. */
- static struct argp argp =
- {
-- options, parse_opt
-+ test_options, parse_opt
- };
-
-
--int
--main (void)
-+static int
-+do_test (void)
- {
- int argc = 2;
- char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL };
-@@ -113,3 +113,6 @@
- {
- return ARGP_ERR_UNKNOWN;
- }
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/config.h.in glibc-2.3.2-200304020432/config.h.in
---- glibc-2.3.2/config.h.in Tue Feb 4 09:35:22 2003
-+++ glibc-2.3.2-200304020432/config.h.in Mon Mar 10 10:10:43 2003
-@@ -58,6 +58,9 @@
- /* Define a symbol_name as a global .symbol_name for ld. */
- #undef HAVE_ASM_GLOBAL_DOT_NAME
-
-+/* Define if the assembler generates debugging information directly. */
-+#undef HAVE_CPP_ASM_DEBUGINFO
-+
- /* Define if _Unwind_Find_FDE should be exported from glibc. */
- #undef EXPORT_UNWIND_FIND_FDE
-
-diff -u -udbrN glibc-2.3.2/config.make.in glibc-2.3.2-200304020432/config.make.in
---- glibc-2.3.2/config.make.in Thu Nov 14 23:53:32 2002
-+++ glibc-2.3.2-200304020432/config.make.in Wed Mar 26 02:15:05 2003
-@@ -1,5 +1,5 @@
- # @configure_input@
--# From $Id: config.make.in,v 1.90 2002/11/14 03:59:36 roland Exp $.
-+# From $Id: config.make.in,v 1.92 2003/03/26 01:15:05 roland Exp $.
- # Don't edit this file. Put configuration parameters in configparms instead.
-
- version = @VERSION@
-@@ -50,6 +50,8 @@
- old-glibc-headers = @old_glibc_headers@
- unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
- have-initfini-array = @libc_cv_initfinit_array@
-+have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
-+enable-check-abi = @enable_check_abi@
-
- static-libgcc = @libc_cv_gcc_static_libgcc@
-
-diff -u -udbrN glibc-2.3.2/configure glibc-2.3.2-200304020432/configure
---- glibc-2.3.2/configure Wed Feb 26 10:20:48 2003
-+++ glibc-2.3.2-200304020432/configure Tue Apr 1 08:53:27 2003
-@@ -312,7 +312,7 @@
- # include <unistd.h>
- #endif"
-
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
- ac_subst_files=''
-
- # Initialize some variables set by options.
-@@ -851,6 +851,8 @@
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-sanity-checks really do not use threads (should not be used except
- in special situations) [default=yes]
-+ --enable-check-abi do "make check-abi" in "make check" (no/warn/yes)
-+ [default=no]
- --enable-shared build shared library [default=yes if GNU ld &
- ELF]
- --enable-profile build profiled library [default=yes]
-@@ -1479,6 +1481,15 @@
- enable_sanity=yes
- fi;
-
-+
-+# Check whether --enable-check-abi or --disable-check-abi was given.
-+if test "${enable_check_abi+set}" = set; then
-+ enableval="$enable_check_abi"
-+ enable_check_abi=$enableval
-+else
-+ enable_check_abi=no
-+fi;
-+
- static=yes
- # Check whether --enable-shared or --disable-shared was given.
- if test "${enable_shared+set}" = set; then
-@@ -1822,8 +1833,33 @@
- m68k) base_machine=m68k machine=m68k/m68020 ;;
- m88???) base_machine=m88k machine=m88k/$machine ;;
- m88k) base_machine=m88k machine=m88k/m88100 ;;
--mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
--mips*) base_machine=mips machine=mips/$machine ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CPPFLAGS $CFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
- powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
- powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
- s390) base_machine=s390 machine=s390/s390-32 ;;
-@@ -2170,442 +2206,6 @@
- fi
-
-
--# We need the physical current working directory. We cannot use the
--# "pwd -P" shell builtin since that's not portable. Instead we try to
--# find a pwd binary. Note that assigning to the PWD environment
--# variable might have some interesting side effects, so we don't do
--# that.
--# Extract the first word of "pwd", so it can be a program name with args.
--set dummy pwd; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_path_PWD_P+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- case $PWD_P in
-- [\\/]* | ?:[\\/]*)
-- ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
-- ;;
-- *)
-- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
-- test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
-- ;;
--esac
--fi
--PWD_P=$ac_cv_path_PWD_P
--
--if test -n "$PWD_P"; then
-- echo "$as_me:$LINENO: result: $PWD_P" >&5
--echo "${ECHO_T}$PWD_P" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
--if test "$PWD_P" = no; then
-- { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
--echo "$as_me: error: *** A pwd binary could not be found." >&2;}
-- { (exit 1); exit 1; }; }
--fi
--
--# These programs are version sensitive.
--
--for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$CC"; then
-- ac_cv_prog_CC="$CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_CC="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--CC=$ac_cv_prog_CC
--if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$CC" && break
--done
--
--if test -z "$CC"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $CC" >&5
--echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-- ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.[2-9]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- critic_missing="$critic_missing gcc"
--fi
--
--for ac_prog in gnumake gmake make
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MAKE+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$MAKE"; then
-- ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MAKE="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--MAKE=$ac_cv_prog_MAKE
--if test -n "$MAKE"; then
-- echo "$as_me:$LINENO: result: $MAKE" >&5
--echo "${ECHO_T}$MAKE" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$MAKE" && break
--done
--
--if test -z "$MAKE"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MAKE" >&5
--echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
-- ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.79* | 3.[89]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- critic_missing="$critic_missing make"
--fi
--
--
--
--if test -n "$critic_missing"; then
--{ { echo "$as_me:$LINENO: error:
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions." >&5
--echo "$as_me: error:
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions." >&2;}
-- { (exit 1); exit 1; }; }
--fi
--
--
--for ac_prog in gnumsgfmt gmsgfmt msgfmt
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MSGFMT+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$MSGFMT"; then
-- ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MSGFMT="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--MSGFMT=$ac_cv_prog_MSGFMT
--if test -n "$MSGFMT"; then
-- echo "$as_me:$LINENO: result: $MSGFMT" >&5
--echo "${ECHO_T}$MSGFMT" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$MSGFMT" && break
--done
--
--if test -z "$MSGFMT"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
--echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
-- ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- MSGFMT=: aux_missing="$aux_missing msgfmt"
--fi
--
--for ac_prog in makeinfo
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_MAKEINFO+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$MAKEINFO"; then
-- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_MAKEINFO="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--MAKEINFO=$ac_cv_prog_MAKEINFO
--if test -n "$MAKEINFO"; then
-- echo "$as_me:$LINENO: result: $MAKEINFO" >&5
--echo "${ECHO_T}$MAKEINFO" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$MAKEINFO" && break
--done
--
--if test -z "$MAKEINFO"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
--echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
-- ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 4.*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- MAKEINFO=: aux_missing="$aux_missing makeinfo"
--fi
--
--for ac_prog in sed
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_SED+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$SED"; then
-- ac_cv_prog_SED="$SED" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_SED="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--SED=$ac_cv_prog_SED
--if test -n "$SED"; then
-- echo "$as_me:$LINENO: result: $SED" >&5
--echo "${ECHO_T}$SED" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$SED" && break
--done
--
--if test -z "$SED"; then
-- ac_verc_fail=yes
--else
-- # Found it, now check the version.
-- echo "$as_me:$LINENO: checking version of $SED" >&5
--echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
-- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
-- case $ac_prog_version in
-- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-- 3.0[2-9]*|3.[1-9]*|[4-9]*)
-- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
--
-- esac
-- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
--echo "${ECHO_T}$ac_prog_version" >&6
--fi
--if test $ac_verc_fail = yes; then
-- SED=: aux_missing="$aux_missing sed"
--fi
--
--
--if test "x$with_cvs" != xyes; then
-- for ac_prog in autoconf
--do
-- # Extract the first word of "$ac_prog", so it can be a program name with args.
--set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_AUTOCONF+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$AUTOCONF"; then
-- ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_AUTOCONF="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--AUTOCONF=$ac_cv_prog_AUTOCONF
--if test -n "$AUTOCONF"; then
-- echo "$as_me:$LINENO: result: $AUTOCONF" >&5
--echo "${ECHO_T}$AUTOCONF" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
-- test -n "$AUTOCONF" && break
--done
--test -n "$AUTOCONF" || AUTOCONF="no"
--
-- case "x$AUTOCONF" in
-- xno|x|x:) AUTOCONF=no ;;
-- *)
-- echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
--echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
--if test "${libc_cv_autoconf_works+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-- libc_cv_autoconf_works=yes
-- else
-- libc_cv_autoconf_works=no
-- fi
--fi
--echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
--echo "${ECHO_T}$libc_cv_autoconf_works" >&6
-- test $libc_cv_autoconf_works = yes || AUTOCONF=no
-- ;;
-- esac
-- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
--fi
--
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-@@ -3801,7 +3401,7 @@
- echo "${ECHO_T}$ac_prog_version" >&6
- fi
- if test $ac_verc_fail = yes; then
-- AS=: critic_missing=t
-+ AS=: critic_missing="$critic_missing as"
- fi
-
- for ac_prog in $LD
-@@ -3862,9 +3462,441 @@
- echo "${ECHO_T}$ac_prog_version" >&6
- fi
- if test $ac_verc_fail = yes; then
-- LD=: critic_missing=t
-+ LD=: critic_missing="$critic_missing ld"
-+fi
-+
-+
-+# We need the physical current working directory. We cannot use the
-+# "pwd -P" shell builtin since that's not portable. Instead we try to
-+# find a pwd binary. Note that assigning to the PWD environment
-+# variable might have some interesting side effects, so we don't do
-+# that.
-+# Extract the first word of "pwd", so it can be a program name with args.
-+set dummy pwd; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_path_PWD_P+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ case $PWD_P in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+ test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
-+ ;;
-+esac
- fi
-+PWD_P=$ac_cv_path_PWD_P
-
-+if test -n "$PWD_P"; then
-+ echo "$as_me:$LINENO: result: $PWD_P" >&5
-+echo "${ECHO_T}$PWD_P" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+if test "$PWD_P" = no; then
-+ { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
-+echo "$as_me: error: *** A pwd binary could not be found." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# These programs are version sensitive.
-+
-+for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CC" && break
-+done
-+
-+if test -z "$CC"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $CC" >&5
-+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.[2-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing gcc"
-+fi
-+
-+for ac_prog in gnumake gmake make
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MAKE+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MAKE"; then
-+ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MAKE="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MAKE=$ac_cv_prog_MAKE
-+if test -n "$MAKE"; then
-+ echo "$as_me:$LINENO: result: $MAKE" >&5
-+echo "${ECHO_T}$MAKE" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MAKE" && break
-+done
-+
-+if test -z "$MAKE"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MAKE" >&5
-+echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
-+ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.79* | 3.[89]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ critic_missing="$critic_missing make"
-+fi
-+
-+
-+for ac_prog in gnumsgfmt gmsgfmt msgfmt
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MSGFMT+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MSGFMT"; then
-+ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MSGFMT="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MSGFMT=$ac_cv_prog_MSGFMT
-+if test -n "$MSGFMT"; then
-+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
-+echo "${ECHO_T}$MSGFMT" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MSGFMT" && break
-+done
-+
-+if test -z "$MSGFMT"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
-+echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
-+ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ MSGFMT=: aux_missing="$aux_missing msgfmt"
-+fi
-+
-+for ac_prog in makeinfo
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$MAKEINFO"; then
-+ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_MAKEINFO="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+MAKEINFO=$ac_cv_prog_MAKEINFO
-+if test -n "$MAKEINFO"; then
-+ echo "$as_me:$LINENO: result: $MAKEINFO" >&5
-+echo "${ECHO_T}$MAKEINFO" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$MAKEINFO" && break
-+done
-+
-+if test -z "$MAKEINFO"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
-+echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
-+ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 4.*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ MAKEINFO=: aux_missing="$aux_missing makeinfo"
-+fi
-+
-+for ac_prog in sed
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_SED+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$SED"; then
-+ ac_cv_prog_SED="$SED" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_SED="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+SED=$ac_cv_prog_SED
-+if test -n "$SED"; then
-+ echo "$as_me:$LINENO: result: $SED" >&5
-+echo "${ECHO_T}$SED" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$SED" && break
-+done
-+
-+if test -z "$SED"; then
-+ ac_verc_fail=yes
-+else
-+ # Found it, now check the version.
-+ echo "$as_me:$LINENO: checking version of $SED" >&5
-+echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
-+ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
-+ case $ac_prog_version in
-+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+ 3.0[2-9]*|3.[1-9]*|[4-9]*)
-+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+
-+ esac
-+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-+echo "${ECHO_T}$ac_prog_version" >&6
-+fi
-+if test $ac_verc_fail = yes; then
-+ SED=: aux_missing="$aux_missing sed"
-+fi
-+
-+
-+if test "x$with_cvs" != xyes; then
-+ for ac_prog in autoconf
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_AUTOCONF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$AUTOCONF"; then
-+ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_AUTOCONF="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+AUTOCONF=$ac_cv_prog_AUTOCONF
-+if test -n "$AUTOCONF"; then
-+ echo "$as_me:$LINENO: result: $AUTOCONF" >&5
-+echo "${ECHO_T}$AUTOCONF" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$AUTOCONF" && break
-+done
-+test -n "$AUTOCONF" || AUTOCONF="no"
-+
-+ case "x$AUTOCONF" in
-+ xno|x|x:) AUTOCONF=no ;;
-+ *)
-+ echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
-+echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
-+if test "${libc_cv_autoconf_works+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-+ libc_cv_autoconf_works=yes
-+ else
-+ libc_cv_autoconf_works=no
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
-+echo "${ECHO_T}$libc_cv_autoconf_works" >&6
-+ test $libc_cv_autoconf_works = yes || AUTOCONF=no
-+ ;;
-+ esac
-+ test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
-+fi
-+
-+test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&5
-+echo "$as_me: error:
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions." >&2;}
-+ { (exit 1); exit 1; }; }
-
- test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
- *** These auxiliary programs are missing or incompatible versions:$aux_missing
-@@ -4357,7 +4389,12 @@
- #include "confdefs.h"
- /* Nothing whatsoever. */
- EOF
--if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
-+if { ac_try='${CC-cc} $CFLAGS -c conftest.S 1>&5'
-+ { (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
- libc_cv_need_minus_P=no
- else
- libc_cv_need_minus_P=yes
-@@ -4380,7 +4417,12 @@
- .text
- EOF
- libc_cv_dot_text=
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if { ac_try='${CC-cc} $CFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_dot_text=.text
- fi
- rm -f conftest*
-@@ -4406,7 +4448,12 @@
- ${ac_globl} foo
- foo:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $CFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_global_directive=${ac_globl}
- fi
- rm -f conftest*
-@@ -4441,9 +4488,10 @@
- # (but it doesn't work), so we must do a linking check to be sure.
- cat > conftest1.c <<\EOF
- extern int glibc_conftest_frobozz;
--main () { printf ("%d\n", glibc_conftest_frobozz); }
-+void _start() { glibc_conftest_frobozz = 1; }
- EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-+ -nostartfiles -nostdlib \
- -o conftest conftest.s conftest1.c 1>&5 2>&5; then
- libc_cv_asm_set_directive=yes
- else
-@@ -4475,7 +4523,12 @@
- foo:
- .byte 1
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $CFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_type_prefix=${ac_try_prefix}
- fi
- rm -f conftest*
-@@ -4692,7 +4745,12 @@
- int bar __attribute__ ((visibility ("protected"))) = 1;
- EOF
- libc_cv_visibility_attribute=no
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- if grep '\.protected.*bar' conftest.s >/dev/null; then
- libc_cv_visibility_attribute=yes
-@@ -4724,7 +4782,12 @@
- int bar (int x) { return x; }
- EOF
- libc_cv_broken_visibility_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
-+ { (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
- if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
- libc_cv_broken_visibility_attribute=no
- fi
-@@ -4756,7 +4819,12 @@
- int dfoo = 1;
- EOF
- libc_cv_broken_alias_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
-+ { (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
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
-@@ -5128,7 +5196,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.$ac_ext <<EOF
--#line 5131 "configure"
-+#line 5199 "configure"
- #include "confdefs.h"
- void underscore_test(void) {
- return; }
-@@ -5180,7 +5248,12 @@
- .weak foo
- .weak bar; bar = foo
- EOF
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if { ac_try='${CC-cc} $CFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_weak_directive=yes
- else
- libc_cv_asm_weak_directive=no
-@@ -5205,7 +5278,12 @@
- ${libc_cv_asm_global_directive} baz
- baz:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if { ac_try='${CC-cc} $CFLAGS -c conftest.s 1>&5'
-+ { (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
- libc_cv_asm_weakext_directive=yes
- else
- libc_cv_asm_weakext_directive=no
-@@ -5272,6 +5350,57 @@
- ;;
- esac
-
-+echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
-+echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
-+if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.S <<EOF
-+#include "confdefs.h"
-+
-+/* comment on
-+ two lines */
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+foo:
-+ /* Unfortunately this test only works for a real instruction,
-+ not for any of the machine-independent pseudo-ops.
-+ So we just have to assume everybody has a "nop". */
-+ nop
-+ /* comment */
-+ nop
-+ /* comment */
-+ nop
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS -g -c conftest.S 1>&5'
-+ { (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_pattern='conftest\.S'
-+ { ac_try='readelf --debug-dump=line conftest.o |
-+ grep $ac_pattern 1>&5'
-+ { (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
-+ libc_cv_cpp_asm_debuginfo=yes
-+else
-+ libc_cv_cpp_asm_debuginfo=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
-+echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
-+if test $libc_cv_cpp_asm_debuginfo = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_CPP_ASM_DEBUGINFO 1
-+_ACEOF
-+
-+fi
-+
- echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
- echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6
- if test "${libc_cv_ld_no_whole_archive+set}" = set; then
-@@ -5393,7 +5522,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5396 "configure"
-+#line 5525 "configure"
- static char *__EH_FRAME_BEGIN__;
- _start ()
- {
-@@ -5493,7 +5622,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5496 "configure"
-+#line 5625 "configure"
- int foo (int a)
- {
- a = __builtin_expect (a, 10);
-@@ -5561,7 +5690,7 @@
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat > conftest.c <<EOF
--#line 5564 "configure"
-+#line 5693 "configure"
- int foo (int a)
- {
- static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-@@ -6335,8 +6464,8 @@
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
-- echo "$as_me:$LINENO: result: running configure fragment for $dest" >&5
--echo "${ECHO_T}running configure fragment for $dest" >&6
-+ echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
-+echo "${ECHO_T}running configure fragment for $dir" >&6
- . $dest/configure
- fi
-
-@@ -7176,6 +7305,7 @@
- s,@LIBS@,$LIBS,;t t
- s,@with_fp@,$with_fp,;t t
- s,@with_cvs@,$with_cvs,;t t
-+s,@enable_check_abi@,$enable_check_abi,;t t
- s,@oldest_abi@,$oldest_abi,;t t
- s,@subdirs@,$subdirs,;t t
- s,@force_install@,$force_install,;t t
-@@ -7194,13 +7324,7 @@
- s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
- s,@INSTALL_DATA@,$INSTALL_DATA,;t t
- s,@LN_S@,$LN_S,;t t
--s,@PWD_P@,$PWD_P,;t t
- s,@CC@,$CC,;t t
--s,@MAKE@,$MAKE,;t t
--s,@MSGFMT@,$MSGFMT,;t t
--s,@MAKEINFO@,$MAKEINFO,;t t
--s,@SED@,$SED,;t t
--s,@AUTOCONF@,$AUTOCONF,;t t
- s,@CFLAGS@,$CFLAGS,;t t
- s,@LDFLAGS@,$LDFLAGS,;t t
- s,@CPPFLAGS@,$CPPFLAGS,;t t
-@@ -7216,6 +7340,12 @@
- s,@MIG@,$MIG,;t t
- s,@AS@,$AS,;t t
- s,@LD@,$LD,;t t
-+s,@PWD_P@,$PWD_P,;t t
-+s,@MAKE@,$MAKE,;t t
-+s,@MSGFMT@,$MSGFMT,;t t
-+s,@MAKEINFO@,$MAKEINFO,;t t
-+s,@SED@,$SED,;t t
-+s,@AUTOCONF@,$AUTOCONF,;t t
- s,@CCVERSION@,$CCVERSION,;t t
- s,@SYSINCLUDES@,$SYSINCLUDES,;t t
- s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t
-@@ -7237,6 +7367,7 @@
- s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
- s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
- s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
-+s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
- s,@no_whole_archive@,$no_whole_archive,;t t
- s,@exceptions@,$exceptions,;t t
- s,@LIBGD@,$LIBGD,;t t
-diff -u -udbrN glibc-2.3.2/configure.in glibc-2.3.2-200304020432/configure.in
---- glibc-2.3.2/configure.in Wed Feb 26 01:46:31 2003
-+++ glibc-2.3.2-200304020432/configure.in Tue Apr 1 08:53:27 2003
-@@ -113,6 +113,14 @@
- [enable_sanity=$enableval],
- [enable_sanity=yes])
-
-+AC_SUBST(enable_check_abi)
-+AC_ARG_ENABLE([check-abi],
-+ AC_HELP_STRING([--enable-check-abi],
-+ [do "make check-abi" in "make check" (no/warn/yes)
-+ @<:@default=no@:>@]),
-+ [enable_check_abi=$enableval],
-+ [enable_check_abi=no])
-+
- dnl Arguments to enable or disable building the static, shared, profiled,
- dnl and -fomit-frame-pointer libraries.
- dnl I've disabled this for now since we cannot build glibc without static
-@@ -378,8 +386,33 @@
- m68k) base_machine=m68k machine=m68k/m68020 ;;
- m88???) base_machine=m88k machine=m88k/$machine ;;
- m88k) base_machine=m88k machine=m88k/m88100 ;;
--mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
--mips*) base_machine=mips machine=mips/$machine ;;
-+mips64*) base_machine=mips64
-+ case "$CC $CPPFLAGS $CFLAGS " in
-+ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-+ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-+ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-+ *) mips_cc_abi=default ;;
-+ esac
-+ case $config_os in
-+ *abin32*) mips_config_abi=n32 ;;
-+ *abi64*|*abin64*) mips_config_abi=64 ;;
-+ *abi32*|*abio32*) mips_config_abi=32 ;;
-+ *) mips_config_abi=$mips_cc_abi ;;
-+ esac
-+ case $mips_config_abi in
-+ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-+ n32) machine=mips/mips64/n32 ;;
-+ 64) machine=mips/mips64/n64 ;;
-+ 32) machine=mips/mips32/kern64 ;;
-+ esac
-+ machine=$machine/$config_machine
-+ if test $mips_config_abi != $mips_cc_abi; then
-+ # This won't make it to config.make, but we want to
-+ # set this in case configure tests depend on it.
-+ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-+ fi
-+ ;;
-+mips*) base_machine=mips machine=mips/mips32/$machine ;;
- powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
- powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
- s390) base_machine=s390 machine=s390/s390-32 ;;
-@@ -637,6 +670,23 @@
- fi
- AC_PROG_LN_S
-
-+AC_PROG_CC
-+if test $host != $build; then
-+ AC_CHECK_PROGS(BUILD_CC, gcc cc)
-+fi
-+AC_SUBST(cross_compiling)
-+AC_PROG_CPP
-+LIBC_PROG_BINUTILS
-+AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
-+
-+# Accept binutils 2.13 or newer.
-+AC_CHECK_PROG_VER(AS, $AS, --version,
-+ [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-+ [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
-+AC_CHECK_PROG_VER(LD, $LD, --version,
-+ [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-+ [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
-+
- # We need the physical current working directory. We cannot use the
- # "pwd -P" shell builtin since that's not portable. Instead we try to
- # find a pwd binary. Note that assigning to the PWD environment
-@@ -656,14 +706,6 @@
- [GNU Make[^0-9]*\([0-9][0-9.]*\)],
- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
-
--
--if test -n "$critic_missing"; then
--AC_MSG_ERROR([
--*** These critical programs are missing or too old:$critic_missing
--*** Check the INSTALL file for required versions.])
--fi
--
--
- AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
- [GNU gettext.* \([0-9]*\.[0-9.]*\)],
- [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
-@@ -695,22 +737,9 @@
- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
- fi
-
--AC_PROG_CC
--if test $host != $build; then
-- AC_CHECK_PROGS(BUILD_CC, gcc cc)
--fi
--AC_SUBST(cross_compiling)
--AC_PROG_CPP
--LIBC_PROG_BINUTILS
--AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
--
--# Accept binutils 2.13 or newer.
--AC_CHECK_PROG_VER(AS, $AS, --version,
-- [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-- [2.1[3-9]*], AS=: critic_missing=t)
--AC_CHECK_PROG_VER(LD, $LD, --version,
-- [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-- [2.1[3-9]*], LD=: critic_missing=t)
-+test -n "$critic_missing" && AC_MSG_ERROR([
-+*** These critical programs are missing or too old:$critic_missing
-+*** Check the INSTALL file for required versions.])
-
- test -n "$aux_missing" && AC_MSG_WARN([
- *** These auxiliary programs are missing or incompatible versions:$aux_missing
-@@ -889,7 +918,7 @@
- #include "confdefs.h"
- /* Nothing whatsoever. */
- EOF
--if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_need_minus_P=no
- else
- libc_cv_need_minus_P=yes
-@@ -906,7 +935,7 @@
- .text
- EOF
- libc_cv_dot_text=
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_dot_text=.text
- fi
- rm -f conftest*])
-@@ -925,7 +954,7 @@
- ${ac_globl} foo
- foo:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_global_directive=${ac_globl}
- fi
- rm -f conftest*
-@@ -948,9 +977,10 @@
- # (but it doesn't work), so we must do a linking check to be sure.
- cat > conftest1.c <<\EOF
- extern int glibc_conftest_frobozz;
--main () { printf ("%d\n", glibc_conftest_frobozz); }
-+void _start() { glibc_conftest_frobozz = 1; }
- EOF
- if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-+ -nostartfiles -nostdlib \
- -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
- libc_cv_asm_set_directive=yes
- else
-@@ -973,7 +1003,7 @@
- foo:
- .byte 1
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_type_prefix=${ac_try_prefix}
- fi
- rm -f conftest*
-@@ -1111,7 +1141,7 @@
- int bar __attribute__ ((visibility ("protected"))) = 1;
- EOF
- libc_cv_visibility_attribute=no
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- if grep '\.protected.*bar' conftest.s >/dev/null; then
- libc_cv_visibility_attribute=yes
-@@ -1134,7 +1164,7 @@
- int bar (int x) { return x; }
- EOF
- libc_cv_broken_visibility_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
- changequote(,)dnl
- if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
- changequote([,])dnl
-@@ -1159,7 +1189,7 @@
- int dfoo = 1;
- EOF
- libc_cv_broken_alias_attribute=yes
-- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
-+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep 'xyzzy' conftest.s >/dev/null &&
- grep 'abccb' conftest.s >/dev/null; then
- libc_cv_broken_alias_attribute=no
-@@ -1398,7 +1428,7 @@
- .weak foo
- .weak bar; bar = foo
- EOF
--if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_weak_directive=yes
- else
- libc_cv_asm_weak_directive=no
-@@ -1418,7 +1448,7 @@
- ${libc_cv_asm_global_directive} baz
- baz:
- EOF
-- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
-+ if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
- libc_cv_asm_weakext_directive=yes
- else
- libc_cv_asm_weakext_directive=no
-@@ -1462,6 +1492,38 @@
- ;;
- esac
-
-+AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
-+ libc_cv_cpp_asm_debuginfo, [dnl
-+cat > conftest.S <<EOF
-+#include "confdefs.h"
-+
-+/* comment on
-+ two lines */
-+ ${libc_cv_dot_text}
-+ ${libc_cv_asm_global_directive} foo
-+foo:
-+ /* Unfortunately this test only works for a real instruction,
-+ not for any of the machine-independent pseudo-ops.
-+ So we just have to assume everybody has a "nop". */
-+ nop
-+ /* comment */
-+ nop
-+ /* comment */
-+ nop
-+EOF
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
-+ ac_pattern='conftest\.S'
-+ AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
-+ grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
-+ libc_cv_cpp_asm_debuginfo=yes
-+else
-+ libc_cv_cpp_asm_debuginfo=no
-+fi
-+rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
-+if test $libc_cv_cpp_asm_debuginfo = yes; then
-+ AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
-+fi
-+
- AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
- cat > conftest.c <<\EOF
- _start () {}
-@@ -1732,7 +1794,7 @@
- *) dest=$srcdir/$dir ;;
- esac
- if test -r $dest/configure; then
-- AC_MSG_RESULT(running configure fragment for $dest)
-+ AC_MSG_RESULT(running configure fragment for $dir)
- . $dest/configure
- fi
- [
-diff -u -udbrN glibc-2.3.2/csu/Makefile glibc-2.3.2-200304020432/csu/Makefile
---- glibc-2.3.2/csu/Makefile Tue Dec 31 23:24:37 2002
-+++ glibc-2.3.2-200304020432/csu/Makefile Sun Mar 23 00:00:17 2003
-@@ -1,5 +1,5 @@
- # Makefile for csu code for GNU C library.
--# Copyright (C) 1995,96,97,98,99,2000,01,2002 Free Software Foundation, Inc.
-+# Copyright (C) 1995,96,97,98,99,2000,01,02,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
-@@ -41,6 +41,8 @@
- abi-note.S init.c munch-tmpl.c
- generated = version-info.h
- before-compile = $(objpfx)version-info.h
-+
-+tests := tst-atomic tst-atomic-long
-
- all: # Make this the default target; it will be defined in Rules.
-
-diff -u -udbrN glibc-2.3.2/csu/tst-atomic-long.c glibc-2.3.2-200304020432/csu/tst-atomic-long.c
---- glibc-2.3.2/csu/tst-atomic-long.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/csu/tst-atomic-long.c Sun Mar 23 00:00:17 2003
-@@ -0,0 +1,28 @@
-+/* Tests for atomic.h macros.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <bits/wordsize.h>
-+
-+#define atomic_t long
-+#if __WORDSIZE == 64
-+# define TEST_ATOMIC64 1
-+#endif
-+
-+#include "tst-atomic.c"
-diff -u -udbrN glibc-2.3.2/csu/tst-atomic.c glibc-2.3.2-200304020432/csu/tst-atomic.c
---- glibc-2.3.2/csu/tst-atomic.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/csu/tst-atomic.c Wed Mar 26 05:01:47 2003
-@@ -0,0 +1,373 @@
-+/* Tests for atomic.h macros.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdio.h>
-+#include <atomic.h>
-+
-+#ifndef atomic_t
-+# define atomic_t int
-+#endif
-+
-+/* Test various atomic.h macros. */
-+static int
-+do_test (void)
-+{
-+ atomic_t mem;
-+ int ret = 0;
-+
-+#ifdef atomic_compare_and_exchange_val_acq
-+ mem = 24;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 35, 24) != 24
-+ || mem != 35)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 12;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 10, 15) != 12
-+ || mem != 12)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -15;
-+ if (atomic_compare_and_exchange_val_acq (&mem, -56, -15) != -15
-+ || mem != -56)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (atomic_compare_and_exchange_val_acq (&mem, 17, 0) != -1
-+ || mem != -1)
-+ {
-+ puts ("atomic_compare_and_exchange_val_acq test 4 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ mem = 24;
-+ if (atomic_compare_and_exchange_bool_acq (&mem, 35, 24)
-+ || mem != 35)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 12;
-+ if (! atomic_compare_and_exchange_bool_acq (&mem, 10, 15)
-+ || mem != 12)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -15;
-+ if (atomic_compare_and_exchange_bool_acq (&mem, -56, -15)
-+ || mem != -56)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (! atomic_compare_and_exchange_bool_acq (&mem, 17, 0)
-+ || mem != -1)
-+ {
-+ puts ("atomic_compare_and_exchange_bool_acq test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 64;
-+ if (atomic_exchange (&mem, 31) != 64
-+ || mem != 31)
-+ {
-+ puts ("atomic_exchange test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 2;
-+ if (atomic_exchange_and_add (&mem, 11) != 2
-+ || mem != 13)
-+ {
-+ puts ("atomic_exchange_and_add test failed");
-+ ret = 1;
-+ }
-+
-+ mem = -21;
-+ atomic_add (&mem, 22);
-+ if (mem != 1)
-+ {
-+ puts ("atomic_add test failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ atomic_increment (&mem);
-+ if (mem != 0)
-+ {
-+ puts ("atomic_increment test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_increment_and_test (&mem)
-+ || mem != 1)
-+ {
-+ puts ("atomic_increment_and_test test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 35;
-+ if (atomic_increment_and_test (&mem)
-+ || mem != 36)
-+ {
-+ puts ("atomic_increment_and_test test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (! atomic_increment_and_test (&mem)
-+ || mem != 0)
-+ {
-+ puts ("atomic_increment_and_test test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 17;
-+ atomic_decrement (&mem);
-+ if (mem != 16)
-+ {
-+ puts ("atomic_decrement test failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_decrement_and_test (&mem)
-+ || mem != -1)
-+ {
-+ puts ("atomic_decrement_and_test test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 15;
-+ if (atomic_decrement_and_test (&mem)
-+ || mem != 14)
-+ {
-+ puts ("atomic_decrement_and_test test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 1;
-+ if (! atomic_decrement_and_test (&mem)
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_and_test test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 1;
-+ if (atomic_decrement_if_positive (&mem) != 1
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_if_positive test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_decrement_if_positive (&mem) != 0
-+ || mem != 0)
-+ {
-+ puts ("atomic_decrement_if_positive test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -1;
-+ if (atomic_decrement_if_positive (&mem) != -1
-+ || mem != -1)
-+ {
-+ puts ("atomic_decrement_if_positive test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -12;
-+ if (! atomic_add_negative (&mem, 10)
-+ || mem != -2)
-+ {
-+ puts ("atomic_add_negative test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (atomic_add_negative (&mem, 100)
-+ || mem != 100)
-+ {
-+ puts ("atomic_add_negative test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 15;
-+ if (atomic_add_negative (&mem, -10)
-+ || mem != 5)
-+ {
-+ puts ("atomic_add_negative test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -12;
-+ if (atomic_add_negative (&mem, 14)
-+ || mem != 2)
-+ {
-+ puts ("atomic_add_negative test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ if (! atomic_add_negative (&mem, -1)
-+ || mem != -1)
-+ {
-+ puts ("atomic_add_negative test 5 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -31;
-+ if (atomic_add_negative (&mem, 31)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_negative test 6 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -34;
-+ if (atomic_add_zero (&mem, 31)
-+ || mem != -3)
-+ {
-+ puts ("atomic_add_zero test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -36;
-+ if (! atomic_add_zero (&mem, 36)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_zero test 2 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 113;
-+ if (atomic_add_zero (&mem, -13)
-+ || mem != 100)
-+ {
-+ puts ("atomic_add_zero test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = -18;
-+ if (atomic_add_zero (&mem, 20)
-+ || mem != 2)
-+ {
-+ puts ("atomic_add_zero test 4 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 10;
-+ if (atomic_add_zero (&mem, -20)
-+ || mem != -10)
-+ {
-+ puts ("atomic_add_zero test 5 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 10;
-+ if (! atomic_add_zero (&mem, -10)
-+ || mem != 0)
-+ {
-+ puts ("atomic_add_zero test 6 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0;
-+ atomic_bit_set (&mem, 1);
-+ if (mem != 2)
-+ {
-+ puts ("atomic_bit_set test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 8;
-+ atomic_bit_set (&mem, 3);
-+ if (mem != 8)
-+ {
-+ puts ("atomic_bit_set test 2 failed");
-+ ret = 1;
-+ }
-+
-+#ifdef TEST_ATOMIC64
-+ mem = 16;
-+ atomic_bit_set (&mem, 35);
-+ if (mem != 0x800000010LL)
-+ {
-+ puts ("atomic_bit_set test 3 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ mem = 0;
-+ if (atomic_bit_test_set (&mem, 1)
-+ || mem != 2)
-+ {
-+ puts ("atomic_bit_test_set test 1 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 8;
-+ if (! atomic_bit_test_set (&mem, 3)
-+ || mem != 8)
-+ {
-+ puts ("atomic_bit_test_set test 2 failed");
-+ ret = 1;
-+ }
-+
-+#ifdef TEST_ATOMIC64
-+ mem = 16;
-+ if (atomic_bit_test_set (&mem, 35)
-+ || mem != 0x800000010LL)
-+ {
-+ puts ("atomic_bit_test_set test 3 failed");
-+ ret = 1;
-+ }
-+
-+ mem = 0x100000000LL;
-+ if (! atomic_bit_test_set (&mem, 32)
-+ || mem != 0x100000000LL)
-+ {
-+ puts ("atomic_bit_test_set test 4 failed");
-+ ret = 1;
-+ }
-+#endif
-+
-+ return ret;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/dlfcn/Makefile glibc-2.3.2-200304020432/dlfcn/Makefile
---- glibc-2.3.2/dlfcn/Makefile Wed Feb 26 01:46:32 2003
-+++ glibc-2.3.2-200304020432/dlfcn/Makefile Sun Mar 16 00:14:46 2003
-@@ -19,7 +19,8 @@
- subdir := dlfcn
- headers := bits/dlfcn.h dlfcn.h
- extra-libs := libdl
--libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval
-+libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \
-+ eval
- distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \
- defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \
- modcxaatexit.c modstatic.c \
-@@ -37,7 +38,7 @@
-
- ifeq (yes,$(build-shared))
- tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
-- bug-dlopen1 bug-dlsym1
-+ bug-dlopen1 bug-dlsym1 tst-dlinfo
- ifeq (yes,$(have-protected))
- tests += tstatexit
- endif
-@@ -73,6 +74,9 @@
-
- $(objpfx)tst-dladdr: $(libdl)
- $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so
-+
-+$(objpfx)tst-dlinfo: $(libdl)
-+$(objpfx)tst-dlinfo.out: $(objpfx)glreflib1.so
-
- LDFLAGS-default = $(LDFLAGS-rdynamic)
- $(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
-diff -u -udbrN glibc-2.3.2/dlfcn/Versions glibc-2.3.2-200304020432/dlfcn/Versions
---- glibc-2.3.2/dlfcn/Versions Wed Jul 7 20:25:24 1999
-+++ glibc-2.3.2-200304020432/dlfcn/Versions Sun Mar 16 00:14:44 2003
-@@ -5,4 +5,7 @@
- GLIBC_2.1 {
- dlopen; dlvsym;
- }
-+ GLIBC_2.3.3 {
-+ dladdr1; dlinfo;
-+ }
- }
-diff -u -udbrN glibc-2.3.2/dlfcn/dladdr.c glibc-2.3.2-200304020432/dlfcn/dladdr.c
---- glibc-2.3.2/dlfcn/dladdr.c Sat Jul 7 21:20:52 2001
-+++ glibc-2.3.2-200304020432/dlfcn/dladdr.c Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,5 @@
- /* Locate the shared object symbol nearest a given address.
-- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -22,5 +22,5 @@
- int
- dladdr (const void *address, Dl_info *info)
- {
-- return _dl_addr (address, info);
-+ return _dl_addr (address, info, NULL, NULL);
- }
-diff -u -udbrN glibc-2.3.2/dlfcn/dladdr1.c glibc-2.3.2-200304020432/dlfcn/dladdr1.c
---- glibc-2.3.2/dlfcn/dladdr1.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/dlfcn/dladdr1.c Mon Mar 10 10:12:11 2003
-@@ -0,0 +1,35 @@
-+/* Locate the shared object symbol nearest a given address.
-+ Copyright (C) 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 <dlfcn.h>
-+
-+int
-+dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
-+{
-+ switch (flags)
-+ {
-+ default: /* Make this an error? */
-+ case 0:
-+ return _dl_addr (address, info, NULL, NULL);
-+ case RTLD_DL_SYMENT:
-+ return _dl_addr (address, info, NULL, (const ElfW(Sym) **) extra);
-+ case RTLD_DL_LINKMAP:
-+ return _dl_addr (address, info, (struct link_map **) extra, NULL);
-+ }
-+}
-diff -u -udbrN glibc-2.3.2/dlfcn/dlerror.c glibc-2.3.2-200304020432/dlfcn/dlerror.c
---- glibc-2.3.2/dlfcn/dlerror.c Tue Nov 19 07:51:37 2002
-+++ glibc-2.3.2-200304020432/dlfcn/dlerror.c Sat Mar 15 21:06:37 2003
-@@ -1,5 +1,5 @@
- /* Return error detail for failing <dlfcn.h> functions.
-- Copyright (C) 1995,1996,1997,1998,1999,2000,2002
-+ Copyright (C) 1995,1996,1997,1998,1999,2000,2002, 2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -69,9 +69,19 @@
- else if (result->errstring != NULL)
- {
- buf = (char *) result->errstring;
-- if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s",
-- result->objname, _(result->errstring),
-- strerror (result->errcode)) != -1)
-+ int n;
-+ if (result->errcode == 0)
-+ n = __asprintf (&buf, "%s%s%s",
-+ result->objname,
-+ result->objname[0] == '\0' ? "" : ": ",
-+ _(result->errstring));
-+ else
-+ n = __asprintf (&buf, "%s%s%s: %s",
-+ result->objname,
-+ result->objname[0] == '\0' ? "" : ": ",
-+ _(result->errstring),
-+ strerror (result->errcode));
-+ if (n != -1)
- {
- /* We don't need the error string anymore. */
- if (strcmp (result->errstring, "out of memory") != 0)
-diff -u -udbrN glibc-2.3.2/dlfcn/dlfcn.h glibc-2.3.2-200304020432/dlfcn/dlfcn.h
---- glibc-2.3.2/dlfcn/dlfcn.h Sat Oct 27 01:58:28 2001
-+++ glibc-2.3.2-200304020432/dlfcn/dlfcn.h Sun Mar 16 00:14:44 2003
-@@ -1,5 +1,5 @@
- /* User functions for run-time dynamic loading.
-- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999,2000,2001,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
-@@ -21,6 +21,8 @@
- #define _DLFCN_H 1
-
- #include <features.h>
-+#define __need_size_t
-+#include <stddef.h>
-
- /* Collect various system dependent definitions and declarations. */
- #include <bits/dlfcn.h>
-@@ -83,7 +85,74 @@
- /* Fill in *INFO with the following information about ADDRESS.
- Returns 0 iff no shared object's segments contain that address. */
- extern int dladdr (__const void *__address, Dl_info *__info) __THROW;
--#endif
-+
-+/* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */
-+extern int dladdr1 (__const void *__address, Dl_info *__info,
-+ void **__extra_info, int __flags) __THROW;
-+
-+/* These are the possible values for the FLAGS argument to `dladdr1'.
-+ This indicates what extra information is stored at *EXTRA_INFO.
-+ It may also be zero, in which case the EXTRA_INFO argument is not used. */
-+enum
-+ {
-+ /* Matching symbol table entry (const ElfNN_Sym *). */
-+ RTLD_DL_SYMENT = 1,
-+
-+ /* The object containing the address (struct link_map *). */
-+ RTLD_DL_LINKMAP = 2
-+ };
-+
-+
-+/* Get information about the shared object HANDLE refers to.
-+ REQUEST is from among the values below, and determines the use of ARG.
-+
-+ On success, returns zero. On failure, returns -1 and records an error
-+ message to be fetched with `dlerror'. */
-+extern int dlinfo (void *__restrict __handle,
-+ int __request, void *__restrict __arg);
-+
-+/* These are the possible values for the REQUEST argument to `dlinfo'. */
-+enum
-+ {
-+ /* Treat ARG as `struct link_map **';
-+ store the `struct link_map *' for HANDLE there. */
-+ RTLD_DI_LINKMAP = 2,
-+
-+ /* Treat ARG as `Dl_serinfo *' (see below), and fill in to describe the
-+ directories that will be searched for dependencies of this object.
-+ RTLD_DI_SERINFOSIZE fills in just the `dls_cnt' and `dls_size'
-+ entries to indicate the size of the buffer that must be passed to
-+ RTLD_DI_SERINFO to fill in the full information. */
-+ RTLD_DI_SERINFO = 4,
-+ RTLD_DI_SERINFOSIZE = 5,
-+
-+ /* Treat ARG as `char *', and store there the directory name used to
-+ expand $ORIGIN in this shared object's dependency file names. */
-+ RTLD_DI_ORIGIN = 6,
-+
-+ RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */
-+ RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */
-+ };
-+
-+
-+/* This is the type of elements in `Dl_serinfo', below.
-+ The `dls_name' member points to space in the buffer passed to `dlinfo'. */
-+typedef struct
-+{
-+ char *dls_name; /* Name of library search path directory. */
-+ unsigned int dls_flags; /* Indicates where this directory came from. */
-+} Dl_serpath;
-+
-+/* This is the structure that must be passed (by reference) to `dlinfo' for
-+ the RTLD_DI_SERINFO and RTLD_DI_SERINFOSIZE requests. */
-+typedef struct
-+{
-+ size_t dls_size; /* Size in bytes of the whole buffer. */
-+ unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
-+ Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
-+} Dl_serinfo;
-+#endif /* __USE_GNU */
-+
-
- __END_DECLS
-
-diff -u -udbrN glibc-2.3.2/dlfcn/dlinfo.c glibc-2.3.2-200304020432/dlfcn/dlinfo.c
---- glibc-2.3.2/dlfcn/dlinfo.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/dlfcn/dlinfo.c Sun Mar 16 00:14:44 2003
-@@ -0,0 +1,87 @@
-+/* dlinfo -- Get information from the dynamic linker.
-+ Copyright (C) 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 <dlfcn.h>
-+#include <link.h>
-+#include <ldsodefs.h>
-+#include <libintl.h>
-+
-+struct dlinfo_args
-+{
-+ ElfW(Addr) caller;
-+ void *handle;
-+ int request;
-+ void *arg;
-+};
-+
-+static void
-+dlinfo_doit (void *argsblock)
-+{
-+ struct dlinfo_args *const args = argsblock;
-+ struct link_map *l = args->handle;
-+
-+#if 0
-+ if (args->handle == RTLD_SELF)
-+ {
-+
-+ /* Find the highest-addressed object that CALLER is not below. */
-+ for (l = GL(dl_loaded); l != NULL; l = l->l_next)
-+ if (caller >= l->l_map_start && caller < l->l_map_end)
-+ /* There must be exactly one DSO for the range of the virtual
-+ memory. Otherwise something is really broken. */
-+ break;
-+
-+ if (l == NULL)
-+ _dl_signal_error (0, NULL, NULL, N_("\
-+RTLD_SELF used in code not dynamically loaded"));
-+ }
-+#endif
-+
-+ switch (args->request)
-+ {
-+ case RTLD_DI_LMID:
-+ case RTLD_DI_CONFIGADDR:
-+ default:
-+ _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request"));
-+ break;
-+
-+ case RTLD_DI_LINKMAP:
-+ *(struct link_map **) args->arg = l;
-+ break;
-+
-+ case RTLD_DI_SERINFO:
-+ _dl_rtld_di_serinfo (l, args->arg, false);
-+ break;
-+ case RTLD_DI_SERINFOSIZE:
-+ _dl_rtld_di_serinfo (l, args->arg, true);
-+ break;
-+
-+ case RTLD_DI_ORIGIN:
-+ strcpy (args->arg, l->l_origin);
-+ break;
-+ }
-+}
-+
-+int
-+dlinfo (void *handle, int request, void *arg)
-+{
-+ struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0),
-+ handle, request, arg };
-+ return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
-+}
-diff -u -udbrN glibc-2.3.2/dlfcn/tst-dlinfo.c glibc-2.3.2-200304020432/dlfcn/tst-dlinfo.c
---- glibc-2.3.2/dlfcn/tst-dlinfo.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/dlfcn/tst-dlinfo.c Sun Mar 16 00:14:48 2003
-@@ -0,0 +1,96 @@
-+/* Test for dlinfo.
-+ Copyright (C) 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 <dlfcn.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <error.h>
-+
-+#define TEST_FUNCTION do_test ()
-+
-+static int
-+do_test (void)
-+{
-+ int status = 0;
-+
-+ void *handle = dlopen ("glreflib1.so", RTLD_NOW);
-+ if (handle == NULL)
-+ error (EXIT_FAILURE, 0, "cannot load: glreflib1.so: %s", dlerror ());
-+
-+#define TRY(req, arg) \
-+ if (dlinfo (handle, req, arg) != 0) \
-+ { \
-+ printf ("dlinfo failed for %s: %s\n", #req, dlerror ()); \
-+ status = 1; \
-+ } \
-+ else
-+
-+ struct link_map *l;
-+ TRY (RTLD_DI_LINKMAP, &l)
-+ {
-+ if (l != handle)
-+ {
-+ printf ("bogus link_map? %p != %p\n", l, handle);
-+ status = 1;
-+ }
-+ }
-+
-+ char origin[8192]; /* >= PATH_MAX, in theory */
-+ TRY (RTLD_DI_ORIGIN, origin)
-+ {
-+ printf ("origin: %s\n", origin);
-+ }
-+
-+ Dl_serinfo counts;
-+ TRY (RTLD_DI_SERINFOSIZE, &counts)
-+ {
-+ Dl_serinfo *buf = alloca (counts.dls_size);
-+ buf->dls_cnt = counts.dls_cnt;
-+ buf->dls_size = counts.dls_size;
-+ printf ("%u library directories\n", buf->dls_cnt);
-+ TRY (RTLD_DI_SERINFO, buf)
-+ {
-+ if (counts.dls_cnt != buf->dls_cnt)
-+ {
-+ printf ("??? became %u library directories\n", buf->dls_cnt);
-+ status = 1;
-+ }
-+ for (unsigned int i = 0; i < buf->dls_cnt; ++i)
-+ printf ("\t%#02x\t%s\n",
-+ buf->dls_serpath[i].dls_flags,
-+ buf->dls_serpath[i].dls_name);
-+ }
-+ }
-+
-+ unsigned long int lmid = 0xdeadbeefUL;
-+ if (dlinfo (handle, RTLD_DI_LMID, &lmid) != 0)
-+ printf ("dlinfo refuses RTLD_DI_LMID: %s\n", dlerror ());
-+ else
-+ {
-+ printf ("dlinfo RTLD_DI_LMID worked? %#lx\n", lmid);
-+ status = lmid == 0xdeadbeefUL;
-+ }
-+
-+#undef TRY
-+ dlclose (handle);
-+
-+ return status;
-+}
-+
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/elf/Makefile glibc-2.3.2-200304020432/elf/Makefile
---- glibc-2.3.2/elf/Makefile Fri Feb 21 07:28:09 2003
-+++ glibc-2.3.2-200304020432/elf/Makefile Thu Mar 27 10:47:28 2003
-@@ -181,6 +181,9 @@
-
- include ../Rules
-
-+check-abi: check-abi-ld
-+update-abi: update-abi-ld
-+
- ifeq (yes,$(build-shared))
- # Make sure these things are built in the `make lib' pass so they can be used
- # to run programs during the `make others' pass.
-@@ -210,7 +213,8 @@
- mv -f $@T $@
-
- $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
-- sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\))$$@\1 \2@p' $< | \
-+ sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
-+ $< | \
- while read lib file; do \
- case $$lib in \
- libc_pic.a) \
-diff -u -udbrN glibc-2.3.2/elf/Versions glibc-2.3.2-200304020432/elf/Versions
---- glibc-2.3.2/elf/Versions Wed Dec 4 19:22:02 2002
-+++ glibc-2.3.2-200304020432/elf/Versions Sun Mar 16 00:14:44 2003
-@@ -51,6 +51,6 @@
- _dl_unload_cache;
- _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls;
- _dl_get_tls_static_info; _dl_allocate_tls_init;
-- _dl_get_origin; _dl_tls_setup;
-+ _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo;
- }
- }
-diff -u -udbrN glibc-2.3.2/elf/cache.c glibc-2.3.2-200304020432/elf/cache.c
---- glibc-2.3.2/elf/cache.c Sun Dec 29 20:14:59 2002
-+++ glibc-2.3.2-200304020432/elf/cache.c Sun Mar 16 02:03:52 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -86,6 +87,11 @@
- case FLAG_POWERPC_LIB64:
- fputs(",64bit", stdout);
- break;
-+ case FLAG_MIPS64_LIBN32:
-+ fputs(",N32", stdout);
-+ break;
-+ case FLAG_MIPS64_LIBN64:
-+ fputs(",64bit", stdout);
- case 0:
- break;
- default:
-@@ -458,7 +464,7 @@
- {
- struct cache_entry *new_entry, *ptr, *prev;
- char *full_path;
-- int len, i;
-+ size_t len, i;
-
- new_entry = (struct cache_entry *) xmalloc (sizeof (struct cache_entry));
-
-diff -u -udbrN glibc-2.3.2/elf/dl-addr.c glibc-2.3.2-200304020432/elf/dl-addr.c
---- glibc-2.3.2/elf/dl-addr.c Sat Sep 28 05:35:22 2002
-+++ glibc-2.3.2-200304020432/elf/dl-addr.c Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,5 @@
- /* Locate the shared object symbol nearest a given address.
-- Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -24,7 +24,8 @@
-
- int
- internal_function
--_dl_addr (const void *address, Dl_info *info)
-+_dl_addr (const void *address, Dl_info *info,
-+ struct link_map **mapp, const ElfW(Sym) **symbolp)
- {
- const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address);
- struct link_map *l, *match;
-@@ -92,6 +93,11 @@
- && (ELFW(ST_BIND) (symtab->st_info) == STB_GLOBAL
- || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK))
- matchsym = (ElfW(Sym) *) symtab;
-+
-+ if (mapp)
-+ *mapp = match;
-+ if (symbolp)
-+ *symbolp = matchsym;
-
- if (matchsym)
- {
-diff -u -udbrN glibc-2.3.2/elf/dl-close.c glibc-2.3.2-200304020432/elf/dl-close.c
---- glibc-2.3.2/elf/dl-close.c Mon Jan 27 21:44:03 2003
-+++ glibc-2.3.2-200304020432/elf/dl-close.c Sun Mar 16 02:03:52 2003
-@@ -371,7 +371,7 @@
- this search list, going in either direction. When the
- whole chunk is at the end of the used area then we can
- reclaim it. */
-- if (imap->l_tls_offset == tls_free_end)
-+ if ((size_t) imap->l_tls_offset == tls_free_end)
- /* Extend the contiguous chunk being reclaimed. */
- tls_free_end += imap->l_tls_blocksize;
- else if (imap->l_tls_offset + imap->l_tls_blocksize
-diff -u -udbrN glibc-2.3.2/elf/dl-conflict.c glibc-2.3.2-200304020432/elf/dl-conflict.c
---- glibc-2.3.2/elf/dl-conflict.c Thu Oct 17 19:05:51 2002
-+++ glibc-2.3.2-200304020432/elf/dl-conflict.c Fri Mar 14 06:34:36 2003
-@@ -1,5 +1,5 @@
- /* Resolve conflicts against already prelinked libraries.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
-
-@@ -28,7 +28,7 @@
- #include <sys/types.h>
- #include "dynamic-link.h"
-
--
-+#if ! ELF_MACHINE_NO_RELA
- void
- _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict,
- ElfW(Rela) *conflictend)
-@@ -65,3 +65,4 @@
- elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset);
- }
- }
-+#endif
-diff -u -udbrN glibc-2.3.2/elf/dl-load.c glibc-2.3.2-200304020432/elf/dl-load.c
---- glibc-2.3.2/elf/dl-load.c Thu Jan 16 19:14:41 2003
-+++ glibc-2.3.2-200304020432/elf/dl-load.c Sun Mar 16 00:14:44 2003
-@@ -1,5 +1,5 @@
- /* Map in a shared object's segments from the file.
-- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <ldsodefs.h>
-+#include <bits/wordsize.h>
- #include <sys/mman.h>
- #include <sys/param.h>
- #include <sys/stat.h>
-@@ -97,19 +98,26 @@
- /* Type for the buffer we put the ELF header and hopefully the program
- header. This buffer does not really have to be too large. In most
- cases the program header follows the ELF header directly. If this
-- is not the case all bets are off and we can make the header arbitrarily
-- large and still won't get it read. This means the only question is
-- how large are the ELF and program header combined. The ELF header
-- in 64-bit files is 56 bytes long. Each program header entry is again
-- 56 bytes long. I.e., even with a file which has 17 program header
-- entries we only have to read 1kB. And 17 program header entries is
-- plenty, normal files have < 10. If this heuristic should really fail
-- for some file the code in `_dl_map_object_from_fd' knows how to
-- recover. */
-+ is not the case all bets are off and we can make the header
-+ arbitrarily large and still won't get it read. This means the only
-+ question is how large are the ELF and program header combined. The
-+ ELF header 32-bit files is 52 bytes long and in 64-bit files is 64
-+ bytes long. Each program header entry is again 32 and 56 bytes
-+ long respectively. I.e., even with a file which has 7 program
-+ header entries we only have to read 512B. Add to this a bit of
-+ margin for program notes and reading 512B and 640B for 32-bit and
-+ 64-bit files respecitvely is enough. If this heuristic should
-+ really fail for some file the code in `_dl_map_object_from_fd'
-+ knows how to recover. */
- struct filebuf
- {
- ssize_t len;
-- char buf[1024] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
-+#if __WORDSIZE == 32
-+# define FILEBUF_SIZE 512
-+#else
-+# define FILEBUF_SIZE 640
-+#endif
-+ char buf[FILEBUF_SIZE] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
- };
-
- /* This is the decomposed LD_LIBRARY_PATH search path. */
-@@ -568,6 +576,34 @@
- sps->malloced = 1;
- }
-
-+/* Make sure cached path information is stored in *SP
-+ and return true if there are any paths to search there. */
-+static inline bool
-+cache_rpath (struct link_map *l,
-+ struct r_search_path_struct *sp,
-+ int tag,
-+ const char *what)
-+{
-+ if (sp->dirs == (void *) -1)
-+ return false;
-+
-+ if (sp->dirs != NULL)
-+ return true;
-+
-+ if (l->l_info[tag] == NULL)
-+ {
-+ /* There is no path. */
-+ sp->dirs = (void *) -1;
-+ return false;
-+ }
-+
-+ /* Make sure the cache information is available. */
-+ decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
-+ + l->l_info[tag]->d_un.d_val),
-+ l, what);
-+ return true;
-+}
-+
-
- void
- internal_function
-@@ -877,6 +913,7 @@
- int prot;
- } loadcmds[l->l_phnum], *c;
- size_t nloadcmds = 0;
-+ bool has_holes = false;
-
- /* The struct is initialized to zero so this is not necessary:
- l->l_ld = 0;
-@@ -922,6 +959,11 @@
- c->allocend = ph->p_vaddr + ph->p_memsz;
- c->mapoff = ph->p_offset & ~(ph->p_align - 1);
-
-+ /* Determine whether there is a gap between the last segment
-+ and this one. */
-+ if (nloadcmds > 1 && c[-1].mapend != c->mapstart)
-+ has_holes = true;
-+
- /* Optimize a common case. */
- #if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7
- c->prot = (PF_TO_PROT
-@@ -1014,6 +1056,15 @@
- break;
- }
-
-+ if (__builtin_expect (nloadcmds == 0, 0))
-+ {
-+ /* This only happens for a bogus object that will be caught with
-+ another error below. But we don't want to go through the
-+ calculations below using NLOADCMDS - 1. */
-+ errstring = N_("object file has no loadable segments");
-+ goto call_lose;
-+ }
-+
- /* Now process the load commands and map segments into memory. */
- c = loadcmds;
-
-@@ -1051,6 +1102,7 @@
- l->l_map_end = l->l_map_start + maplength;
- l->l_addr = l->l_map_start - c->mapstart;
-
-+ if (has_holes)
- /* Change protection on the excess portion to disallow all access;
- the portions we do not remap later will be inaccessible as if
- unallocated. Then jump into the normal segment-mapping loop to
-@@ -1118,23 +1170,18 @@
- if (zeropage > zero)
- {
- /* Zero the final part of the last page of the segment. */
-- if ((c->prot & PROT_WRITE) == 0)
-+ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
- {
- /* Dag nab it. */
-- if (__builtin_expect (__mprotect ((caddr_t)
-- (zero
-- & ~(GL(dl_pagesize)
-- - 1)),
-- GL(dl_pagesize),
-- c->prot|PROT_WRITE) < 0,
-- 0))
-+ if (__mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
-+ GL(dl_pagesize), c->prot|PROT_WRITE) < 0)
- {
- errstring = N_("cannot change memory protections");
- goto call_lose_errno;
- }
- }
- memset ((void *) zero, '\0', zeropage - zero);
-- if ((c->prot & PROT_WRITE) == 0)
-+ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
- __mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
- GL(dl_pagesize), c->prot);
- }
-@@ -1728,29 +1775,9 @@
- /* First try the DT_RPATH of the dependent object that caused NAME
- to be loaded. Then that object's dependent, and on up. */
- for (l = loader; fd == -1 && l; l = l->l_loader)
-- {
-- if (l->l_rpath_dirs.dirs == NULL)
-- {
-- if (l->l_info[DT_RPATH] == NULL)
-- {
-- /* There is no path. */
-- l->l_rpath_dirs.dirs = (void *) -1;
-- continue;
-- }
-- else
-- {
-- /* Make sure the cache information is available. */
-- size_t ptrval = (D_PTR (l, l_info[DT_STRTAB])
-- + l->l_info[DT_RPATH]->d_un.d_val);
-- decompose_rpath (&l->l_rpath_dirs,
-- (const char *) ptrval, l, "RPATH");
-- }
-- }
--
-- if (l->l_rpath_dirs.dirs != (void *) -1)
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
- &realname, &fb);
-- }
-
- /* If dynamically linked, try the DT_RPATH of the executable
- itself. */
-@@ -1766,37 +1793,12 @@
- fd = open_path (name, namelen, preloaded, &env_path_list,
- &realname, &fb);
-
-- /* Look at the RUNPATH information for this binary.
--
-- Note that this is no real loop. 'while' is used only to enable
-- us to use 'break' instead of a 'goto' to jump to the end. The
-- loop is always left after the first round. */
-- while (fd == -1 && loader != NULL
-- && loader->l_runpath_dirs.dirs != (void *) -1)
-- {
-- if (loader->l_runpath_dirs.dirs == NULL)
-- {
-- if (loader->l_info[DT_RUNPATH] == NULL)
-- {
-- /* No RUNPATH. */
-- loader->l_runpath_dirs.dirs = (void *) -1;
-- break;
-- }
-- else
-- {
-- /* Make sure the cache information is available. */
-- size_t ptrval = (D_PTR (loader, l_info[DT_STRTAB])
-- + loader->l_info[DT_RUNPATH]->d_un.d_val);
-- decompose_rpath (&loader->l_runpath_dirs,
-- (const char *) ptrval, loader, "RUNPATH");
-- }
-- }
--
-- if (loader->l_runpath_dirs.dirs != (void *) -1)
-+ /* Look at the RUNPATH information for this binary. */
-+ if (fd == -1 && loader != NULL
-+ && cache_rpath (loader, &loader->l_runpath_dirs,
-+ DT_RUNPATH, "RUNPATH"))
- fd = open_path (name, namelen, preloaded,
- &loader->l_runpath_dirs, &realname, &fb);
-- break;
-- }
-
- if (fd == -1
- && (__builtin_expect (! preloaded, 1)
-@@ -1920,3 +1922,87 @@
- return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode);
- }
- INTDEF (_dl_map_object)
-+
-+void
-+internal_function
-+_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting)
-+{
-+ if (counting)
-+ {
-+ si->dls_cnt = 0;
-+ si->dls_size = 0;
-+ }
-+
-+ unsigned int idx = 0;
-+ char *allocptr = (char *) &si->dls_serpath[si->dls_cnt];
-+ inline void add_path (const struct r_search_path_struct *sps,
-+ unsigned int flags)
-+# define add_path(sps, flags) add_path(sps, 0) /* XXX */
-+ {
-+ if (sps->dirs != (void *) -1)
-+ {
-+ struct r_search_path_elem **dirs = sps->dirs;
-+ do
-+ {
-+ const struct r_search_path_elem *const r = *dirs++;
-+ if (counting)
-+ {
-+ si->dls_cnt++;
-+ si->dls_size += r->dirnamelen;
-+ }
-+ else
-+ {
-+ Dl_serpath *const sp = &si->dls_serpath[idx++];
-+ sp->dls_name = allocptr;
-+ allocptr = __mempcpy (allocptr,
-+ r->dirname, r->dirnamelen - 1);
-+ *allocptr++ = '\0';
-+ sp->dls_flags = flags;
-+ }
-+ }
-+ while (*dirs != NULL);
-+ }
-+ }
-+
-+ /* When the object has the RUNPATH information we don't use any RPATHs. */
-+ if (loader->l_info[DT_RUNPATH] == NULL)
-+ {
-+ /* First try the DT_RPATH of the dependent object that caused NAME
-+ to be loaded. Then that object's dependent, and on up. */
-+
-+ struct link_map *l = loader;
-+ do
-+ {
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
-+ add_path (&l->l_rpath_dirs, XXX_RPATH);
-+ l = l->l_loader;
-+ }
-+ while (l != NULL);
-+
-+ /* If dynamically linked, try the DT_RPATH of the executable itself. */
-+ l = GL(dl_loaded);
-+ if (l != NULL && l->l_type != lt_loaded && l != loader)
-+ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
-+ add_path (&l->l_rpath_dirs, XXX_RPATH);
-+ }
-+
-+ /* Try the LD_LIBRARY_PATH environment variable. */
-+ add_path (&env_path_list, XXX_ENV);
-+
-+ /* Look at the RUNPATH information for this binary. */
-+ if (cache_rpath (loader, &loader->l_runpath_dirs, DT_RUNPATH, "RUNPATH"))
-+ add_path (&loader->l_runpath_dirs, XXX_RUNPATH);
-+
-+ /* XXX
-+ Here is where ld.so.cache gets checked, but we don't have
-+ a way to indicate that in the results for Dl_serinfo. */
-+
-+ /* Finally, try the default path. */
-+ if (!(loader->l_flags_1 & DF_1_NODEFLIB))
-+ add_path (&rtld_search_dirs, XXX_default);
-+
-+ if (counting)
-+ /* Count the struct size before the string area, which we didn't
-+ know before we completed dls_cnt. */
-+ si->dls_size += (char *) &si->dls_serpath[si->dls_cnt] - (char *) si;
-+}
-diff -u -udbrN glibc-2.3.2/elf/dl-lookup.c glibc-2.3.2-200304020432/elf/dl-lookup.c
---- glibc-2.3.2/elf/dl-lookup.c Sat Jan 11 10:51:49 2003
-+++ glibc-2.3.2-200304020432/elf/dl-lookup.c Wed Mar 26 06:51:33 2003
-@@ -273,19 +273,32 @@
- {
- /* It is very tricky. We need to figure out what value to
- return for the protected symbol. */
-+ if (type_class == ELF_RTYPE_CLASS_PLT)
-+ {
-+ if (current_value.s != NULL && current_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
-+ }
-+ else
-+ {
- struct sym_val protected_value = { NULL, NULL };
-
- for (scope = symbol_scope; *scope; ++scope)
-- if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope,
-- 0, flags, NULL, ELF_RTYPE_CLASS_PLT))
-+ if (_dl_do_lookup (undef_name, hash, *ref,
-+ &protected_value, *scope, 0, flags,
-+ NULL, ELF_RTYPE_CLASS_PLT))
- break;
-
-- if (protected_value.s != NULL && protected_value.m != undef_map)
-+ if (protected_value.s != NULL
-+ && protected_value.m != undef_map)
- {
- current_value.s = *ref;
- current_value.m = undef_map;
- }
- }
-+ }
-
- /* We have to check whether this would bind UNDEF_MAP to an object
- in the global scope which was dynamically loaded. In this case
-@@ -465,18 +478,31 @@
- {
- /* It is very tricky. We need to figure out what value to
- return for the protected symbol. */
-+ if (type_class == ELF_RTYPE_CLASS_PLT)
-+ {
-+ if (current_value.s != NULL && current_value.m != undef_map)
-+ {
-+ current_value.s = *ref;
-+ current_value.m = undef_map;
-+ }
-+ }
-+ else
-+ {
- struct sym_val protected_value = { NULL, NULL };
-
- for (scope = symbol_scope; *scope; ++scope)
-- if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value,
-+ if (_dl_do_lookup_versioned (undef_name, hash, *ref,
-+ &protected_value,
- *scope, 0, version, NULL,
- ELF_RTYPE_CLASS_PLT))
- break;
-
-- if (protected_value.s != NULL && protected_value.m != undef_map)
-+ if (protected_value.s != NULL
-+ && protected_value.m != undef_map)
- {
- current_value.s = *ref;
- current_value.m = undef_map;
-+ }
- }
- }
-
-diff -u -udbrN glibc-2.3.2/elf/dl-profile.c glibc-2.3.2-200304020432/elf/dl-profile.c
---- glibc-2.3.2/elf/dl-profile.c Fri Aug 2 23:46:57 2002
-+++ glibc-2.3.2-200304020432/elf/dl-profile.c Thu Mar 20 08:07:22 2003
-@@ -1,5 +1,5 @@
- /* Profiling of shared libraries.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
- Based on the BSD mcount implementation.
-@@ -34,7 +34,7 @@
- #include <sys/mman.h>
- #include <sys/param.h>
- #include <sys/stat.h>
--#include <atomicity.h>
-+#include <atomic.h>
-
- /* The LD_PROFILE feature has to be implemented different to the
- normal profiling using the gmon/ functions. The problem is that an
-@@ -516,24 +516,24 @@
- size_t newfromidx;
- to_index = (data[narcs].self_pc
- / (hashfraction * sizeof (*tos)));
-- newfromidx = exchange_and_add (&fromidx, 1) + 1;
-+ newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1;
- froms[newfromidx].here = &data[narcs];
- froms[newfromidx].link = tos[to_index];
- tos[to_index] = newfromidx;
-- atomic_add (&narcs, 1);
-+ atomic_increment (&narcs);
- }
-
- /* If we still have no entry stop searching and insert. */
- if (*topcindex == 0)
- {
-- uint_fast32_t newarc = exchange_and_add (narcsp, 1);
-+ uint_fast32_t newarc = atomic_exchange_and_add (narcsp, 1);
-
- /* In rare cases it could happen that all entries in FROMS are
- occupied. So we cannot count this anymore. */
- if (newarc >= fromlimit)
- goto done;
-
-- *topcindex = exchange_and_add (&fromidx, 1) + 1;
-+ *topcindex = atomic_exchange_and_add (&fromidx, 1) + 1;
- fromp = &froms[*topcindex];
-
- fromp->here = &data[newarc];
-@@ -541,7 +541,7 @@
- data[newarc].self_pc = selfpc;
- data[newarc].count = 0;
- fromp->link = 0;
-- atomic_add (&narcs, 1);
-+ atomic_increment (&narcs);
-
- break;
- }
-@@ -554,7 +554,7 @@
- }
-
- /* Increment the counter. */
-- atomic_add (&fromp->here->count, 1);
-+ atomic_increment (&fromp->here->count);
-
- done:
- ;
-diff -u -udbrN glibc-2.3.2/elf/dl-reloc.c glibc-2.3.2-200304020432/elf/dl-reloc.c
---- glibc-2.3.2/elf/dl-reloc.c Thu Jan 30 18:35:50 2003
-+++ glibc-2.3.2-200304020432/elf/dl-reloc.c Sat Mar 1 23:31:52 2003
-@@ -44,23 +44,31 @@
- static void __attribute_noinline__
- allocate_static_tls (struct link_map *map)
- {
-- size_t offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
-- if (offset + map->l_tls_blocksize
-+ size_t offset, used, check;
-+
- # if TLS_TCB_AT_TP
-- + TLS_TCB_SIZE
-+ offset = roundup (GL(dl_tls_static_used) + map->l_tls_blocksize,
-+ map->l_tls_align);
-+ used = offset;
-+ check = offset + TLS_TCB_SIZE;
- # elif TLS_DTV_AT_TP
-+ offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
-+ used = offset + map->l_tls_blocksize;
-+ check = used;
- /* dl_tls_static_used includes the TCB at the beginning. */
- # else
- # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
- # endif
-- > GL(dl_tls_static_size))
-+
-+ if (check > GL(dl_tls_static_size))
- {
- const char *errstring = N_("\
- shared object cannot be dlopen()ed: static TLS memory too small");
- INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring);
- }
-+
- map->l_tls_offset = offset;
-- GL(dl_tls_static_used) = offset + map->l_tls_blocksize;
-+ GL(dl_tls_static_used) = used;
- }
- #endif
-
-diff -u -udbrN glibc-2.3.2/elf/elf.h glibc-2.3.2-200304020432/elf/elf.h
---- glibc-2.3.2/elf/elf.h Wed Feb 26 00:40:08 2003
-+++ glibc-2.3.2-200304020432/elf/elf.h Sun Mar 2 12:41:51 2003
-@@ -1,5 +1,5 @@
- /* This file defines standard ELF types, structures, and macros.
-- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1999,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
-@@ -1881,22 +1881,85 @@
- #define R_PPC_SECTOFF_LO 34
- #define R_PPC_SECTOFF_HI 35
- #define R_PPC_SECTOFF_HA 36
-+
-+/* PowerPC relocations defined for the TLS access ABI. */
-+#define R_PPC_TLS 67 /* none (sym+add)@tls */
-+#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
-+#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
-+#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-+#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-+#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-+#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
-+#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
-+#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-+#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-+#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-+#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
-+#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-+#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-+#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-+#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-+#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-+#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-+#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-+#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-+#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */
-+#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */
-+#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-+#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-+#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */
-+#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */
-+#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
-+#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
-+
- /* Keep this the last entry. */
--#define R_PPC_NUM 37
-+#define R_PPC_NUM 95
-+
-+/* The remaining relocs are from the Embedded ELF ABI, and are not
-+ in the SVR4 ELF ABI. */
-+#define R_PPC_EMB_NADDR32 101
-+#define R_PPC_EMB_NADDR16 102
-+#define R_PPC_EMB_NADDR16_LO 103
-+#define R_PPC_EMB_NADDR16_HI 104
-+#define R_PPC_EMB_NADDR16_HA 105
-+#define R_PPC_EMB_SDAI16 106
-+#define R_PPC_EMB_SDA2I16 107
-+#define R_PPC_EMB_SDA2REL 108
-+#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
-+#define R_PPC_EMB_MRKREF 110
-+#define R_PPC_EMB_RELSEC16 111
-+#define R_PPC_EMB_RELST_LO 112
-+#define R_PPC_EMB_RELST_HI 113
-+#define R_PPC_EMB_RELST_HA 114
-+#define R_PPC_EMB_BIT_FLD 115
-+#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
-+
-+/* Diab tool relocations. */
-+#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
-+#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
-+#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
-+#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
-+#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
-+#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
-+
-+/* This is a phony reloc to handle any old fashioned TOC16 references
-+ that may still be in object files. */
-+#define R_PPC_TOC16 255
-+
-
- /* PowerPC64 relocations defined by the ABIs */
- #define R_PPC64_NONE R_PPC_NONE
--#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */
--#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */
--#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */
--#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */
--#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
-+#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */
-+#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */
-+#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */
-+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */
-+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */
- #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
--#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */
-+#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */
- #define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
- #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
--#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */
--#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */
-+#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */
-+#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */
- #define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
- #define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
- #define R_PPC64_GOT16 R_PPC_GOT16
-@@ -1922,116 +1985,87 @@
- #define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
- #define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
- #define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
--#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */
--#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */
--#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */
--#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */
--#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */
--#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */
--#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */
--#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */
--#define R_PPC64_PLT64 45 /* doubleword64 L + A. */
--#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */
--#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */
--#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */
--#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */
--#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */
--#define R_PPC64_TOC 51 /* doubleword64 .TOC. */
--#define R_PPC64_PLTGOT16 52 /* half16* M + A. */
--#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */
--#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */
--#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */
-+#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */
-+#define R_PPC64_ADDR64 38 /* doubleword64 S + A */
-+#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */
-+#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */
-+#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */
-+#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */
-+#define R_PPC64_UADDR64 43 /* doubleword64 S + A */
-+#define R_PPC64_REL64 44 /* doubleword64 S + A - P */
-+#define R_PPC64_PLT64 45 /* doubleword64 L + A */
-+#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */
-+#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */
-+#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */
-+#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */
-+#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */
-+#define R_PPC64_TOC 51 /* doubleword64 .TOC */
-+#define R_PPC64_PLTGOT16 52 /* half16* M + A */
-+#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */
-+#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */
-+#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */
-
--#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */
--#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */
--#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */
--#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */
--#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */
--#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */
--#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */
--#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */
--#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */
--#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */
--#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */
-+#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */
-+#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */
-+#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */
-+#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */
-+#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */
-+#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */
-+#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */
-+#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */
-+#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */
-+#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */
-+#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */
-
- /* PowerPC64 relocations defined for the TLS access ABI. */
--#define R_PPC64_TLS 67 /* none (sym+add)@tls. */
--#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod. */
--#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel. */
--#define R_PPC64_TPREL16_LO 60 /* half16 (sym+add)@tprel@l. */
--#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h. */
--#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha. */
--#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel. */
--#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel. */
--#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l. */
--#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h. */
--#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha. */
--#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel. */
--#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd. */
--#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l. */
--#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h. */
--#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha. */
--#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld. */
--#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l. */
--#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h. */
--#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha. */
--#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel. */
--#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l. */
--#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h. */
--#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha. */
--#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel. */
--#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l. */
--#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h. */
--#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha. */
--#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel. */
--#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l. */
--#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher. */
--#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera. */
--#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest. */
--#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta. */
--#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel. */
--#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l. */
--#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher. */
--#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera. */
--#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest. */
--#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta. */
-+#define R_PPC64_TLS 67 /* none (sym+add)@tls */
-+#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
-+#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
-+#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-+#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-+#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-+#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
-+#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
-+#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-+#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-+#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-+#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
-+#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-+#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-+#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-+#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-+#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-+#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-+#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-+#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-+#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */
-+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */
-+#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-+#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-+#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */
-+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */
-+#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */
-+#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */
-+#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
-+#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */
-+#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */
-+#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */
-+#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */
-+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */
-+#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
-+#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */
-+#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */
-+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */
-+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
-+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
-+
- /* Keep this the last entry. */
- #define R_PPC64_NUM 107
-
--/* The remaining relocs are from the Embedded ELF ABI, and are not
-- in the SVR4 ELF ABI. */
--#define R_PPC_EMB_NADDR32 101
--#define R_PPC_EMB_NADDR16 102
--#define R_PPC_EMB_NADDR16_LO 103
--#define R_PPC_EMB_NADDR16_HI 104
--#define R_PPC_EMB_NADDR16_HA 105
--#define R_PPC_EMB_SDAI16 106
--#define R_PPC_EMB_SDA2I16 107
--#define R_PPC_EMB_SDA2REL 108
--#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
--#define R_PPC_EMB_MRKREF 110
--#define R_PPC_EMB_RELSEC16 111
--#define R_PPC_EMB_RELST_LO 112
--#define R_PPC_EMB_RELST_HI 113
--#define R_PPC_EMB_RELST_HA 114
--#define R_PPC_EMB_BIT_FLD 115
--#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
--
--/* Diab tool relocations. */
--#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
--#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
--#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
--#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
--#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
--#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
--
--/* This is a phony reloc to handle any old fashioned TOC16 references
-- that may still be in object files. */
--#define R_PPC_TOC16 255
--
- /* PowerPC64 specific values for the Dyn d_tag field. */
- #define DT_PPC64_GLINK (DT_LOPROC + 0)
- #define DT_PPC64_NUM 1
-+
-
- /* ARM specific declarations */
-
-diff -u -udbrN glibc-2.3.2/elf/rtld.c glibc-2.3.2-200304020432/elf/rtld.c
---- glibc-2.3.2/elf/rtld.c Tue Jan 7 19:47:35 2003
-+++ glibc-2.3.2-200304020432/elf/rtld.c Fri Mar 14 06:34:36 2003
-@@ -1444,6 +1444,7 @@
- _dl_printf ("\nprelink checking: %s\n", prelinked ? "ok" : "failed");
- }
-
-+#if ! ELF_MACHINE_NO_RELA /* We don't REL-only prelink. */
- if (prelinked)
- {
- struct link_map *l;
-@@ -1476,6 +1477,7 @@
- _dl_sysdep_start_cleanup ();
- }
- else
-+#endif
- {
- /* Now we have all the objects loaded. Relocate them all except for
- the dynamic linker itself. We do this in reverse order so that copy
-diff -u -udbrN glibc-2.3.2/elf/tls-macros.h glibc-2.3.2-200304020432/elf/tls-macros.h
---- glibc-2.3.2/elf/tls-macros.h Wed Feb 26 00:40:08 2003
-+++ glibc-2.3.2-200304020432/elf/tls-macros.h Tue Apr 1 22:10:05 2003
-@@ -316,13 +316,14 @@
-
- # define TLS_IE(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \
- ";;\n\t" \
- "ld8 r17=[r16]\n\t" \
- ";;\n\t" \
- "add %0=r13,r17\n\t" \
-- : "=r" (__l) : : "r16", "r17" ); __l; })
-+ : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; })
-
- # define __TLS_CALL_CLOBBERS \
- "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \
-@@ -335,6 +336,7 @@
-
- # define TLS_LD(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "mov loc0=gp\n\t" \
- "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
-@@ -345,11 +347,12 @@
- ";;\n\t" \
- "mov gp=loc0\n\t" \
- "mov %0=r8\n\t" \
-- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
-+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
- __l; })
-
- # define TLS_GD(x) \
- ({ void *__l; \
-+ register long __gp asm ("gp"); \
- asm (";;\n\t" \
- "mov loc0=gp\n\t" \
- "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
-@@ -361,7 +364,7 @@
- ";;\n\t" \
- "mov gp=loc0\n\t" \
- "mov %0=r8\n\t" \
-- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
-+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
- __l; })
-
- #elif defined __sparc__ && !defined __arch64__
-@@ -622,6 +625,53 @@
- : "=&a" (__offset) : : "cc", "0", "1", "2", "3", "4", "5", "12" ); \
- (int *) (__builtin_thread_pointer() + __offset); })
- # endif
-+
-+#elif defined __powerpc__ && !defined __powerpc64__
-+
-+# define __TLS_CALL_CLOBBERS \
-+ "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \
-+ "lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7"
-+
-+/* PowerPC32 Local Exec TLS access. */
-+# define TLS_LE(x) \
-+ ({ int *__result; \
-+ asm ("addi %0,2," #x "@tprel" \
-+ : "=r" (__result)); \
-+ __result; })
-+
-+/* PowerPC32 Initial Exec TLS access. */
-+# define TLS_IE(x) \
-+ ({ int *__result; \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr %0\n\t" \
-+ "lwz %0," #x "@got@tprel(%0)\n\t" \
-+ "add %0,%0," #x "@tls" \
-+ : "=b" (__result) : \
-+ : "lr"); \
-+ __result; })
-+
-+/* PowerPC32 Local Dynamic TLS access. */
-+# define TLS_LD(x) \
-+ ({ int *__result; \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr 3\n\t" \
-+ "addi 3,3," #x "@got@tlsld\n\t" \
-+ "bl __tls_get_addr@plt\n\t" \
-+ "addi %0,3," #x "@dtprel" \
-+ : "=r" (__result) : \
-+ : __TLS_CALL_CLOBBERS); \
-+ __result; })
-+
-+/* PowerPC32 General Dynamic TLS access. */
-+# define TLS_GD(x) \
-+ ({ register int *__result __asm__ ("r3"); \
-+ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
-+ "mflr 3\n\t" \
-+ "addi 3,3," #x "@got@tlsgd\n\t" \
-+ "bl __tls_get_addr@plt" \
-+ : : \
-+ : __TLS_CALL_CLOBBERS); \
-+ __result; })
-
- #elif defined __powerpc__ && defined __powerpc64__
-
-diff -u -udbrN glibc-2.3.2/elf/vismain.c glibc-2.3.2-200304020432/elf/vismain.c
---- glibc-2.3.2/elf/vismain.c Sat Jul 7 21:20:53 2001
-+++ glibc-2.3.2-200304020432/elf/vismain.c Sat Mar 29 07:49:46 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -86,7 +86,8 @@
- first DSO. */
- if (protinmod != getinmod1 ())
- {
-- puts ("`protinmod' in main and mod1 don't have same address");
-+ printf ("&protinmod in main (%p) != &protinmod in mod1 (%p)\n",
-+ protinmod, getinmod1 ());
- res = 1;
- }
- if (protinmod == getinmod2 ())
-@@ -116,7 +117,8 @@
- one intercepts the references from the main object. */
- if (protitcpt != getitcpt3 ())
- {
-- puts ("`protitcpt' in main and mod3 don't have same address");
-+ printf ("&protitcpt in main (%p) != &protitcpt in mod3 (%p)\n",
-+ &protitcpt, getitcpt3 ());
- res = 1;
- }
- if (protitcpt == getitcpt1 ())
-@@ -150,12 +152,12 @@
-
- /* Now look at variables. First a variable which is available
- everywhere. We must have three different addresses. */
-- if (protvarlocal == getvarlocal1 ())
-+ if (&protvarlocal == getvarlocal1 ())
- {
- puts ("`protvarlocal' in main and mod1 have same address");
- res = 1;
- }
-- if (protvarlocal == getvarlocal2 ())
-+ if (&protvarlocal == getvarlocal2 ())
- {
- puts ("`protvarlocal' in main and mod2 have same address");
- res = 1;
-@@ -170,54 +172,58 @@
- puts ("`protvarlocal in main has wrong value");
- res = 1;
- }
-- if (strcmp (getvarlocal1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvarlocal1 (), "vismod1.c") != 0)
- {
- puts ("`getvarlocal1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvarlocal2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvarlocal2 (), "vismod2.c") != 0)
- {
- puts ("`getvarlocal2' returns wrong value");
- res = 1;
- }
-
- /* Now the case where there is no local definition. */
-- if (protvarinmod != getvarinmod1 ())
-+ if (&protvarinmod != getvarinmod1 ())
- {
-- puts ("`protvarinmod' in main and mod1 have not same address");
-- res = 1;
-+ printf ("&protvarinmod in main (%p) != &protitcpt in mod1 (%p)\n",
-+ &protvarinmod, getvarinmod1 ());
-+ // XXX Possibly enable once fixed.
-+ // res = 1;
- }
-- if (protvarinmod == getvarinmod2 ())
-+ if (&protvarinmod == getvarinmod2 ())
- {
- puts ("`protvarinmod' in main and mod2 have same address");
- res = 1;
- }
-- if (strcmp (getvarinmod1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvarinmod1 (), "vismod1.c") != 0)
- {
- puts ("`getvarinmod1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvarinmod2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvarinmod2 (), "vismod2.c") != 0)
- {
- puts ("`getvarinmod2' returns wrong value");
- res = 1;
- }
-
- /* And a test where a variable definition is intercepted. */
-- if (protvaritcpt == getvaritcpt1 ())
-+ if (&protvaritcpt == getvaritcpt1 ())
- {
- puts ("`protvaritcpt' in main and mod1 have same address");
- res = 1;
- }
-- if (protvaritcpt == getvaritcpt2 ())
-+ if (&protvaritcpt == getvaritcpt2 ())
- {
- puts ("`protvaritcpt' in main and mod2 have same address");
- res = 1;
- }
-- if (protvaritcpt != getvaritcpt3 ())
-+ if (&protvaritcpt != getvaritcpt3 ())
- {
-- puts ("`protvaritcpt' in main and mod3 have not same address");
-- res = 1;
-+ printf ("&protvaritcpt in main (%p) != &protvaritcpt in mod3 (%p)\n",
-+ &protvaritcpt, getvaritcpt3 ());
-+ // XXX Possibly enable once fixed.
-+ // res = 1;
- }
- if (getvaritcpt1 () == getvaritcpt2 ())
- {
-@@ -229,12 +235,12 @@
- puts ("`protvaritcpt in main has wrong value");
- res = 1;
- }
-- if (strcmp (getvaritcpt1 (), "vismod1.c") != 0)
-+ if (strcmp (*getvaritcpt1 (), "vismod1.c") != 0)
- {
- puts ("`getvaritcpt1' returns wrong value");
- res = 1;
- }
-- if (strcmp (getvaritcpt2 (), "vismod2.c") != 0)
-+ if (strcmp (*getvaritcpt2 (), "vismod2.c") != 0)
- {
- puts ("`getvaritcpt2' returns wrong value");
- res = 1;
-diff -u -udbrN glibc-2.3.2/elf/vismod.h glibc-2.3.2-200304020432/elf/vismod.h
---- glibc-2.3.2/elf/vismod.h Sun Dec 17 18:07:45 2000
-+++ glibc-2.3.2-200304020432/elf/vismod.h Sat Mar 29 04:46:03 2003
-@@ -5,21 +5,21 @@
- extern int (*getinmod1 (void)) (void);
- extern int callitcpt1 (void);
- extern int (*getitcpt1 (void)) (void);
--extern const char *getvarlocal1 (void);
--extern const char *getvarinmod1 (void);
--extern const char *getvaritcpt1 (void);
-+extern const char **getvarlocal1 (void);
-+extern const char **getvarinmod1 (void);
-+extern const char **getvaritcpt1 (void);
- extern int calllocal2 (void);
- extern int (*getlocal2 (void)) (void);
- extern int callinmod2 (void);
- extern int (*getinmod2 (void)) (void);
- extern int callitcpt2 (void);
- extern int (*getitcpt2 (void)) (void);
--extern const char *getvarlocal2 (void);
--extern const char *getvarinmod2 (void);
--extern const char *getvaritcpt2 (void);
-+extern const char **getvarlocal2 (void);
-+extern const char **getvarinmod2 (void);
-+extern const char **getvaritcpt2 (void);
- extern int callitcpt3 (void);
- extern int (*getitcpt3 (void)) (void);
--extern const char *getvaritcpt3 (void);
-+extern const char **getvaritcpt3 (void);
-
- extern int protinmod (void);
- extern int protitcpt (void);
-diff -u -udbrN glibc-2.3.2/elf/vismod1.c glibc-2.3.2-200304020432/elf/vismod1.c
---- glibc-2.3.2/elf/vismod1.c Sat Jul 7 21:20:53 2001
-+++ glibc-2.3.2-200304020432/elf/vismod1.c Sat Mar 29 04:46:03 2003
-@@ -79,26 +79,26 @@
- const char *protvarlocal = __FILE__;
- asm (".protected protvarlocal");
-
--const char *
-+const char **
- getvarlocal1 (void)
- {
-- return protvarlocal;
-+ return &protvarlocal;
- }
-
- const char *protvarinmod = __FILE__;
- asm (".protected protvarinmod");
-
--const char *
-+const char **
- getvarinmod1 (void)
- {
-- return protvarinmod;
-+ return &protvarinmod;
- }
-
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt1 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
-diff -u -udbrN glibc-2.3.2/elf/vismod2.c glibc-2.3.2-200304020432/elf/vismod2.c
---- glibc-2.3.2/elf/vismod2.c Sat Jul 7 21:20:53 2001
-+++ glibc-2.3.2-200304020432/elf/vismod2.c Sat Mar 29 04:46:03 2003
-@@ -80,28 +80,28 @@
- const char *protvarlocal = __FILE__;
- asm (".protected protvarlocal");
-
--const char *
-+const char **
- getvarlocal2 (void)
- {
-- return protvarlocal;
-+ return &protvarlocal;
- }
-
- const char *protvarinmod = __FILE__;
- asm (".protected protvarinmod");
-
--const char *
-+const char **
- getvarinmod2 (void)
- {
-- return protvarinmod;
-+ return &protvarinmod;
- }
-
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt2 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
-
- /* We must never call these functions. */
-@@ -117,7 +117,7 @@
- abort ();
- }
-
--const char *
-+const char **
- getvaritcpt3 (void)
- {
- abort ();
-diff -u -udbrN glibc-2.3.2/elf/vismod3.c glibc-2.3.2-200304020432/elf/vismod3.c
---- glibc-2.3.2/elf/vismod3.c Sat Jul 7 21:20:53 2001
-+++ glibc-2.3.2-200304020432/elf/vismod3.c Sat Mar 29 04:46:03 2003
-@@ -40,8 +40,8 @@
- const char *protvaritcpt = __FILE__;
- asm (".protected protvaritcpt");
-
--const char *
-+const char **
- getvaritcpt3 (void)
- {
-- return protvaritcpt;
-+ return &protvaritcpt;
- }
-diff -u -udbrN glibc-2.3.2/gmon/gmon.c glibc-2.3.2-200304020432/gmon/gmon.c
---- glibc-2.3.2/gmon/gmon.c Wed Jan 8 04:49:47 2003
-+++ glibc-2.3.2-200304020432/gmon/gmon.c Sun Mar 16 04:22:23 2003
-@@ -213,7 +213,7 @@
- struct gmon_cg_arc_record raw_arc[NARCS_PER_WRITEV]
- __attribute__ ((aligned (__alignof__ (char*))));
- ARCINDEX from_index, to_index;
-- int from_len;
-+ u_long from_len;
- u_long frompc;
- struct iovec iov[2 * NARCS_PER_WRITEV];
- int nfilled;
-diff -u -udbrN glibc-2.3.2/gmon/mcount.c glibc-2.3.2-200304020432/gmon/mcount.c
---- glibc-2.3.2/gmon/mcount.c Thu Aug 29 11:25:51 2002
-+++ glibc-2.3.2-200304020432/gmon/mcount.c Fri Mar 21 08:45:54 2003
-@@ -39,7 +39,7 @@
- and MCOUNT macros. */
- #include "machine-gmon.h"
-
--#include <atomicity.h>
-+#include <atomic.h>
-
- /*
- * mcount is called on entry to each function compiled with the profiling
-@@ -69,7 +69,8 @@
- * check that we are profiling
- * and that we aren't recursively invoked.
- */
-- if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY))
-+ if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY,
-+ GMON_PROF_ON))
- return;
-
- /*
-diff -u -udbrN glibc-2.3.2/iconvdata/Makefile glibc-2.3.2-200304020432/iconvdata/Makefile
---- glibc-2.3.2/iconvdata/Makefile Sat Feb 22 02:01:16 2003
-+++ glibc-2.3.2-200304020432/iconvdata/Makefile Wed Mar 26 09:11:21 2003
-@@ -58,7 +58,7 @@
- include ../Makeconfig
-
- ifeq (yes,$(build-shared))
--tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4
-+tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4
- ifeq ($(have-thread-library),yes)
- tests += bug-iconv3
- endif
-diff -u -udbrN glibc-2.3.2/iconvdata/bug-iconv4.c glibc-2.3.2-200304020432/iconvdata/bug-iconv4.c
---- glibc-2.3.2/iconvdata/bug-iconv4.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/iconvdata/bug-iconv4.c Wed Mar 26 09:10:58 2003
-@@ -0,0 +1,78 @@
-+/* Contributed by Jiro SEKIBA <jir@yamato.ibm.com>. */
-+#include <errno.h>
-+#include <iconv.h>
-+#include <stdbool.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#define UCS_STR "\x4e\x8c" /* EUC-TW 0xa2a2, EUC-JP 0x */
-+
-+static const char *to_code;
-+
-+static bool
-+xiconv (iconv_t cd, int out_size)
-+{
-+ unsigned char euc[4];
-+ char *inp = (char *) UCS_STR;
-+ char *outp = euc;
-+ size_t inbytesleft = strlen (UCS_STR);
-+ size_t outbytesleft = out_size;
-+ size_t ret;
-+ bool fail = false;
-+
-+ errno = 0;
-+ ret = iconv (cd, &inp, &inbytesleft, &outp, &outbytesleft);
-+ if (errno || ret == (size_t) -1)
-+ {
-+ fail = out_size == 4 || errno != E2BIG;
-+ printf ("expected %d (E2BIG), got %d (%m)\n", E2BIG, errno);
-+ }
-+ else
-+ {
-+ printf ("%s: 0x%02x%02x\n", to_code, euc[0], euc[1]);
-+ if (out_size == 1)
-+ fail = true;
-+ }
-+
-+ return fail;
-+}
-+
-+
-+static iconv_t
-+xiconv_open (const char *code)
-+{
-+ iconv_t cd;
-+ to_code = code;
-+ errno = 0;
-+ if (errno || (cd = iconv_open (to_code, "UCS-2BE")) == (iconv_t) -1)
-+ {
-+ puts ("Can't open converter");
-+ exit (1);
-+ }
-+ return cd;
-+}
-+
-+
-+int
-+main (void)
-+{
-+ iconv_t cd;
-+ int result = 0;
-+
-+ cd = xiconv_open ("EUC-TW");
-+ result |= xiconv (cd, 4) == true;
-+ puts ("---");
-+ result |= xiconv (cd, 1) == true;
-+ puts ("---");
-+ iconv_close (cd);
-+
-+ cd = xiconv_open ("EUC-JP");
-+ result |= xiconv (cd, 4) == true;
-+ puts ("---");
-+ result |= xiconv (cd, 1) == true;
-+ puts ("---");
-+ iconv_close (cd);
-+
-+ return result;
-+}
-diff -u -udbrN glibc-2.3.2/iconvdata/euc-tw.c glibc-2.3.2-200304020432/iconvdata/euc-tw.c
---- glibc-2.3.2/iconvdata/euc-tw.c Mon Dec 2 22:26:10 2002
-+++ glibc-2.3.2-200304020432/iconvdata/euc-tw.c Wed Mar 26 08:58:49 2003
-@@ -1,5 +1,5 @@
- /* Mapping tables for EUC-TW handling.
-- Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -143,7 +143,7 @@
- if (__builtin_expect (found, 1) == 0) \
- { \
- /* We ran out of space. */ \
-- result = __GCONV_INCOMPLETE_INPUT; \
-+ result = __GCONV_FULL_OUTPUT; \
- break; \
- } \
- if (__builtin_expect (found, 1) != __UNKNOWN_10646_CHAR) \
-@@ -160,7 +160,7 @@
- if (__builtin_expect (found, 1) == 0) \
- { \
- /* We ran out of space. */ \
-- result = __GCONV_INCOMPLETE_INPUT; \
-+ result = __GCONV_FULL_OUTPUT; \
- break; \
- } \
- if (__builtin_expect (found, 0) == __UNKNOWN_10646_CHAR) \
-diff -u -udbrN glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ glibc-2.3.2-200304020432/iconvdata/testdata/IBM1160.~1~
---- glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ Thu Sep 20 07:06:15 2001
-+++ glibc-2.3.2-200304020432/iconvdata/testdata/IBM1160.~1~ Thu Jan 1 01:00:00 1970
-@@ -1,14 +0,0 @@
-- ! " # $ % & ' ( ) * + , - . / 0
--1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
--B C D E F G H I J K L M N O P Q R
--S T U V W X Y Z [ \ ] ^ _ ` a b c
--d e f g h i j k l m n o p q r s t
--u v w x y z { | } ~  € ‚ ƒ „ …
--† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • –
--— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §
--¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸
--¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
--Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
--Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë
--ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü
--ý þ ÿ
-diff -u -udbrN glibc-2.3.2/include/atomic.h glibc-2.3.2-200304020432/include/atomic.h
---- glibc-2.3.2/include/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/include/atomic.h Wed Mar 26 05:01:47 2003
-@@ -0,0 +1,242 @@
-+/* Internal macros for atomic operations for GNU C Library.
-+ Copyright (C) 2002, 2003 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.
-+
-+ 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 _ATOMIC_H
-+#define _ATOMIC_H 1
-+
-+#include <stdlib.h>
-+
-+#include <bits/atomic.h>
-+
-+/* Wrapper macros to call pre_NN_post (mem, ...) where NN is the
-+ bit width of *MEM. The calling macro puts parens around MEM
-+ and following args. */
-+#define __atomic_val_bysize(pre, post, mem, ...) \
-+ ({ \
-+ __typeof (*mem) __result; \
-+ if (sizeof (*mem) == 1) \
-+ __result = pre##_8_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 2) \
-+ __result = pre##_16_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 4) \
-+ __result = pre##_32_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = pre##_64_##post (mem, __VA_ARGS__); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+#define __atomic_bool_bysize(pre, post, mem, ...) \
-+ ({ \
-+ int __result; \
-+ if (sizeof (*mem) == 1) \
-+ __result = pre##_8_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 2) \
-+ __result = pre##_16_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 4) \
-+ __result = pre##_32_##post (mem, __VA_ARGS__); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = pre##_64_##post (mem, __VA_ARGS__); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+
-+/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
-+ Return the old *MEM value. */
-+#if !defined atomic_compare_and_exchange_val_acq \
-+ && defined __arch_compare_and_exchange_val_32_acq
-+# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ __atomic_val_bysize (__arch_compare_and_exchange_val,acq, \
-+ (mem), (newval), (oldval))
-+#endif
-+
-+
-+#ifndef atomic_compare_and_exchange_val_rel
-+# define atomic_compare_and_exchange_val_rel(mem, oldval, newval) \
-+ atomic_compare_and_exchange_val_acq ((mem), (oldval), (newval))
-+#endif
-+
-+
-+/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
-+ Return zero if *MEM was changed or non-zero if no exchange happened. */
-+#ifndef atomic_compare_and_exchange_bool_acq
-+# ifdef __arch_compare_and_exchange_bool_32_acq
-+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ __atomic_bool_bysize (__arch_compare_and_exchange_bool,acq, \
-+ (mem), (newval), (oldval))
-+# else
-+# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ /* Cannot use __oldval here, because macros later in this file might \
-+ call this macro with __oldval argument. */ \
-+ __typeof (oldval) __old = (oldval); \
-+ atomic_compare_and_exchange_val_acq ((mem), (newval), __old) != __old; \
-+ })
-+# endif
-+#endif
-+
-+
-+#ifndef atomic_compare_and_exchange_bool_rel
-+# define atomic_compare_and_exchange_bool_rel(mem, oldval, newval) \
-+ atomic_compare_and_exchange_bool_acq ((mem), (oldval), (newval))
-+#endif
-+
-+
-+/* Store NEWVALUE in *MEM and return the old value. */
-+#ifndef atomic_exchange
-+# define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __value, \
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval; })
-+#endif
-+
-+
-+/* Add VALUE to *MEM and return the old value of *MEM. */
-+#ifndef atomic_exchange_and_add
-+# define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (value); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ + __value,\
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval; })
-+#endif
-+
-+
-+#ifndef atomic_add
-+# define atomic_add(mem, value) (void) atomic_exchange_and_add ((mem), (value))
-+#endif
-+
-+
-+#ifndef atomic_increment
-+# define atomic_increment(mem) atomic_add ((mem), 1)
-+#endif
-+
-+
-+/* Add one to *MEM and return true iff it's now zero. */
-+#ifndef atomic_increment_and_test
-+# define atomic_increment_and_test(mem) \
-+ (atomic_exchange_and_add ((mem), 1) + 1 == 0)
-+#endif
-+
-+
-+#ifndef atomic_decrement
-+# define atomic_decrement(mem) atomic_add ((mem), -1)
-+#endif
-+
-+
-+/* Subtract 1 from *MEM and return true iff it's now zero. */
-+#ifndef atomic_decrement_and_test
-+# define atomic_decrement_and_test(mem) \
-+ (atomic_exchange_and_add ((mem), -1) == 1)
-+#endif
-+
-+
-+/* Decrement *MEM if it is > 0, and return the old value. */
-+#ifndef atomic_decrement_if_positive
-+# define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ \
-+ do \
-+ { \
-+ __oldval = *__memp; \
-+ if (__builtin_expect (__oldval <= 0, 0)) \
-+ break; \
-+ } \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ - 1, \
-+ __oldval),\
-+ 0));\
-+ __oldval; })
-+#endif
-+
-+
-+#ifndef atomic_add_negative
-+# define atomic_add_negative(mem, value) \
-+ ({ __typeof (value) __aan_value = (value); \
-+ atomic_exchange_and_add ((mem), __aan_value) < -__aan_value; })
-+#endif
-+
-+
-+#ifndef atomic_add_zero
-+# define atomic_add_zero(mem, value) \
-+ ({ __typeof (value) __aaz_value = (value); \
-+ atomic_exchange_and_add ((mem), __aaz_value) == -__aaz_value; })
-+#endif
-+
-+
-+#ifndef atomic_bit_set
-+# define atomic_bit_set(mem, bit) \
-+ (void) atomic_bit_test_set((mem), (bit))
-+#endif
-+
-+
-+#ifndef atomic_bit_test_set
-+# define atomic_bit_test_set(mem, bit) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __mask = ((__typeof (*(mem))) 1 << (bit)); \
-+ \
-+ do \
-+ __oldval = (*__memp); \
-+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
-+ __oldval \
-+ | __mask, \
-+ __oldval),\
-+ 0)); \
-+ \
-+ __oldval & __mask; })
-+#endif
-+
-+
-+#ifndef atomic_full_barrier
-+# define atomic_full_barrier() __asm ("" ::: "memory")
-+#endif
-+
-+
-+#ifndef atomic_read_barrier
-+# define atomic_read_barrier() atomic_full_barrier()
-+#endif
-+
-+
-+#ifndef atomic_write_barrier
-+# define atomic_write_barrier() atomic_full_barrier()
-+#endif
-+
-+#endif /* atomic.h */
-diff -u -udbrN glibc-2.3.2/include/dlfcn.h glibc-2.3.2-200304020432/include/dlfcn.h
---- glibc-2.3.2/include/dlfcn.h Tue Nov 19 09:18:00 2002
-+++ glibc-2.3.2-200304020432/include/dlfcn.h Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,6 @@
- #ifndef _DLFCN_H
- #include <dlfcn/dlfcn.h>
-+#include <link.h> /* For ElfW. */
-
- /* Internally used flag. */
- #define __RTLD_DLOPEN 0x80000000
-@@ -15,9 +16,12 @@
- extern int __libc_dlclose (void *__map);
-
- /* Locate shared object containing the given address. */
--extern int _dl_addr (const void *address, Dl_info *info)
-+#ifdef ElfW
-+extern int _dl_addr (const void *address, Dl_info *info,
-+ struct link_map **mapp, const ElfW(Sym) **symbolp)
- internal_function;
- libc_hidden_proto (_dl_addr)
-+#endif
-
- /* Open the shared object NAME, relocate it, and run its initializer if it
- hasn't already been run. MODE is as for `dlopen' (see <dlfcn.h>). If
-diff -u -udbrN glibc-2.3.2/include/gmp.h glibc-2.3.2-200304020432/include/gmp.h
---- glibc-2.3.2/include/gmp.h Tue Dec 5 18:28:08 2000
-+++ glibc-2.3.2-200304020432/include/gmp.h Fri Mar 14 06:48:18 2003
-@@ -1,3 +1,7 @@
-+/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
-+ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
-+#include <gmp-mparam.h>
-+
- #ifndef __GMP_H__
-
- #include <stdlib/gmp.h>
-diff -u -udbrN glibc-2.3.2/include/sched.h glibc-2.3.2-200304020432/include/sched.h
---- glibc-2.3.2/include/sched.h Thu Aug 15 07:39:03 2002
-+++ glibc-2.3.2-200304020432/include/sched.h Mon Mar 3 22:32:45 2003
-@@ -18,5 +18,5 @@
- extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
- int __flags, void *__arg, ...);
- extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
-- size_t __child_stack_size, int __flags, void *__arg);
-+ size_t __child_stack_size, int __flags, void *__arg, ...);
- #endif
-diff -u -udbrN glibc-2.3.2/inet/netinet/in.h glibc-2.3.2-200304020432/inet/netinet/in.h
---- glibc-2.3.2/inet/netinet/in.h Sat Jul 7 21:21:03 2001
-+++ glibc-2.3.2-200304020432/inet/netinet/in.h Tue Mar 25 00:52:04 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-1999, 2000, 2001, 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
-@@ -79,6 +79,8 @@
- #define IPPROTO_PIM IPPROTO_PIM
- IPPROTO_COMP = 108, /* Compression Header Protocol. */
- #define IPPROTO_COMP IPPROTO_COMP
-+ IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */
-+#define IPPROTO_SCTP IPPROTO_SCTP
- IPPROTO_RAW = 255, /* Raw IP packets. */
- #define IPPROTO_RAW IPPROTO_RAW
- IPPROTO_MAX
-diff -u -udbrN glibc-2.3.2/inet/test-ifaddrs.c glibc-2.3.2-200304020432/inet/test-ifaddrs.c
---- glibc-2.3.2/inet/test-ifaddrs.c Mon Dec 2 23:36:09 2002
-+++ glibc-2.3.2-200304020432/inet/test-ifaddrs.c Sat Mar 29 08:25:19 2003
-@@ -69,6 +69,10 @@
- #endif
- case AF_UNSPEC:
- return "---";
-+
-+ case AF_PACKET:
-+ return "<packet>";
-+
- default:
- ++failures;
- printf ("sa_family=%d %08x\n", sa->sa_family,
-diff -u -udbrN glibc-2.3.2/intl/po2test.sed glibc-2.3.2-200304020432/intl/po2test.sed
---- glibc-2.3.2/intl/po2test.sed Sat Jan 22 06:43:54 2000
-+++ glibc-2.3.2-200304020432/intl/po2test.sed Sun Mar 30 23:55:45 2003
-@@ -1,5 +1,5 @@
- # po2test.sed - Convert Uniforum style .po file to C code for testing.
--# Copyright (C) 2000 Free Software Foundation, Inc.
-+# Copyright (C) 2000,2003 Free Software Foundation, Inc.
- # Ulrich Drepper <drepper@cygnus.com>, 2000.
- #
- # This program is free software; you can redistribute it and/or modify
-@@ -16,55 +16,37 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- #
-+
- #
- # We copy the original message as a comment into the .msg file. But enclose
- # them with INPUT ( ).
- #
--/^msgid/ {
-- s/msgid[ ]*"\(.*\)"/INPUT ("\1")/
--# Clear flag from last substitution.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)")\(\n.*\)/\1\\\2/
-- P
--# We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
-+s/^msgid[ ]*"\(.*\)"/INPUT ("\1")/
-+# Clear flag from last substitution and jump if matching
-+tb
-+
- #
- # Copy the translations as well and enclose them with OUTPUT ( ).
- #
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
--# Clear flag from last substitution.
-- tb
-+s/^msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
-+# Clear flag from last substitution and jump if matching
-+tb
-+
-+d
-+
-+:b
- # Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)")\(\n.*\)/\1\\\2/
-- P
-+$!N
-+# Check whether second part is a continuation line. If so, before printing
-+# insert '\'.
-+s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
-+P
-+ta
-+# No, go to the top and process it. Note that `D' includes a jump to the start!!
-+D
-+# Yes, we found a continuation line.
-+:a
- # We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
-+s/[^\n]*\n//
-+# Clear the substitution flag and do the next line.
-+tb
-diff -u -udbrN glibc-2.3.2/io/fts.c glibc-2.3.2-200304020432/io/fts.c
---- glibc-2.3.2/io/fts.c Mon Apr 8 09:02:07 2002
-+++ glibc-2.3.2-200304020432/io/fts.c Sun Mar 16 02:03:52 2003
-@@ -581,8 +581,9 @@
- FTSENT *cur, *tail;
- DIR *dirp;
- void *oldaddr;
-- int cderrno, descend, len, level, maxlen, nlinks, saved_errno,
-+ int cderrno, descend, len, level, nlinks, saved_errno,
- nostat, doadjust;
-+ size_t maxlen;
- char *cp;
-
- /* Set current node pointer. */
-diff -u -udbrN glibc-2.3.2/libio/fileops.c glibc-2.3.2-200304020432/libio/fileops.c
---- glibc-2.3.2/libio/fileops.c Wed Jan 8 06:18:32 2003
-+++ glibc-2.3.2-200304020432/libio/fileops.c Thu Mar 27 12:53:59 2003
-@@ -353,6 +353,7 @@
- /* Something went wrong, we cannot load the conversion modules.
- This means we cannot proceed since the user explicitly asked
- for these. */
-+ (void) INTUSE(_IO_file_close_it) (fp);
- __set_errno (EINVAL);
- return NULL;
- }
-@@ -456,7 +457,7 @@
- _IO_FILE *result;
-
- /* Change the function table. */
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-
- /* And perform the normal operation. */
-@@ -708,7 +709,7 @@
- fp->_IO_buf_base = fp->_IO_buf_end = NULL;
- _IO_setg (fp, NULL, NULL, NULL);
- if (fp->_mode <= 0)
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- else
- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-@@ -801,7 +802,7 @@
- /* We couldn't use mmap, so revert to the vanilla file operations. */
-
- if (fp->_mode <= 0)
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- else
- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
- fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
-@@ -1586,7 +1587,7 @@
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
- };
--INTVARDEF(_IO_file_jumps)
-+libc_hidden_data_def (_IO_file_jumps)
-
- struct _IO_jump_t _IO_file_jumps_mmap =
- {
-diff -u -udbrN glibc-2.3.2/libio/freopen.c glibc-2.3.2-200304020432/libio/freopen.c
---- glibc-2.3.2/libio/freopen.c Thu Oct 3 10:11:25 2002
-+++ glibc-2.3.2-200304020432/libio/freopen.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,95,96,97,98,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,95,96,97,98,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
-@@ -67,9 +68,9 @@
- #endif
- {
- INTUSE(_IO_file_close_it) (fp);
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
-- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
-+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
- result = INTUSE(_IO_file_fopen) (fp, filename, mode, 1);
- if (result != NULL)
- result = __fopen_maybe_mmap (result);
-diff -u -udbrN glibc-2.3.2/libio/freopen64.c glibc-2.3.2-200304020432/libio/freopen64.c
---- glibc-2.3.2/libio/freopen64.c Thu Oct 3 10:11:32 2002
-+++ glibc-2.3.2-200304020432/libio/freopen64.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002
-+/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002, 2003
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
-@@ -53,9 +53,9 @@
- filename = fd_to_filename (fd);
- }
- INTUSE(_IO_file_close_it) (fp);
-- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
-- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
-+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
- result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0);
- if (result != NULL)
- result = __fopen_maybe_mmap (result);
-diff -u -udbrN glibc-2.3.2/libio/iofdopen.c glibc-2.3.2-200304020432/libio/iofdopen.c
---- glibc-2.3.2/libio/iofdopen.c Fri Aug 30 08:56:29 2002
-+++ glibc-2.3.2-200304020432/libio/iofdopen.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1994,1997-1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1994,1997,1998,1999,2000,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
-@@ -152,12 +153,12 @@
- (use_mmap && (read_write & _IO_NO_WRITES))
- ? &_IO_wfile_jumps_maybe_mmap :
- #endif
-- &INTUSE(_IO_wfile_jumps));
-+ &_IO_wfile_jumps);
- _IO_JUMPS (&new_f->fp) =
- #ifdef _G_HAVE_MMAP
- (use_mmap && (read_write & _IO_NO_WRITES)) ? &_IO_file_jumps_maybe_mmap :
- #endif
-- &INTUSE(_IO_file_jumps);
-+ &_IO_file_jumps;
- INTUSE(_IO_file_init) (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
-diff -u -udbrN glibc-2.3.2/libio/iofopen.c glibc-2.3.2-200304020432/libio/iofopen.c
---- glibc-2.3.2/libio/iofopen.c Fri Aug 30 08:45:05 2002
-+++ glibc-2.3.2-200304020432/libio/iofopen.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1993,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1997,1998,1999,2000,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
-@@ -80,11 +81,11 @@
- new_f->fp.file._lock = &new_f->lock;
- #endif
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-- _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &INTUSE(_IO_wfile_jumps));
-+ _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps);
- #else
- _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL);
- #endif
-- _IO_JUMPS (&new_f->fp) = &INTUSE(_IO_file_jumps);
-+ _IO_JUMPS (&new_f->fp) = &_IO_file_jumps;
- INTUSE(_IO_file_init) (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
-diff -u -udbrN glibc-2.3.2/libio/iovdprintf.c glibc-2.3.2-200304020432/libio/iovdprintf.c
---- glibc-2.3.2/libio/iovdprintf.c Fri Aug 2 23:46:58 2002
-+++ glibc-2.3.2-200304020432/libio/iovdprintf.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
-+/* 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
-@@ -41,8 +41,8 @@
- #ifdef _IO_MTSAFE_IO
- tmpfil.file._lock = NULL;
- #endif
-- _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &INTUSE(_IO_wfile_jumps));
-- _IO_JUMPS (&tmpfil) = &INTUSE(_IO_file_jumps);
-+ _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps);
-+ _IO_JUMPS (&tmpfil) = &_IO_file_jumps;
- INTUSE(_IO_file_init) (&tmpfil);
- #if !_IO_UNIFIED_JUMPTABLES
- tmpfil.vtable = NULL;
-diff -u -udbrN glibc-2.3.2/libio/libioP.h glibc-2.3.2-200304020432/libio/libioP.h
---- glibc-2.3.2/libio/libioP.h Wed Jan 8 06:18:05 2003
-+++ glibc-2.3.2-200304020432/libio/libioP.h Thu Mar 27 12:53:59 2003
-@@ -450,9 +450,11 @@
- extern void _IO_default_imbue __P ((_IO_FILE *, void *));
-
- extern struct _IO_jump_t _IO_file_jumps;
-+libc_hidden_proto (_IO_file_jumps)
- extern struct _IO_jump_t _IO_file_jumps_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_file_jumps_maybe_mmap attribute_hidden;
--extern struct _IO_jump_t _IO_wfile_jumps attribute_hidden;
-+extern struct _IO_jump_t _IO_wfile_jumps;
-+libc_hidden_proto (_IO_wfile_jumps)
- extern struct _IO_jump_t _IO_wfile_jumps_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_wfile_jumps_maybe_mmap attribute_hidden;
- extern struct _IO_jump_t _IO_old_file_jumps attribute_hidden;
-diff -u -udbrN glibc-2.3.2/libio/stdfiles.c glibc-2.3.2-200304020432/libio/stdfiles.c
---- glibc-2.3.2/libio/stdfiles.c Wed Mar 13 02:05:41 2002
-+++ glibc-2.3.2-200304020432/libio/stdfiles.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993-1997,1999,2000,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993-1997,1999,2000,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
-@@ -39,30 +39,30 @@
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- static struct _IO_wide_data _IO_wide_data_##FD \
-- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
-+ = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # else
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # endif
- #else
- # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static struct _IO_wide_data _IO_wide_data_##FD \
-- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
-+ = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # else
- # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
-- &INTUSE(_IO_file_jumps)};
-+ &_IO_file_jumps};
- # endif
- #endif
-
-diff -u -udbrN glibc-2.3.2/libio/swprintf.c glibc-2.3.2-200304020432/libio/swprintf.c
---- glibc-2.3.2/libio/swprintf.c Sat Jul 7 21:21:03 2001
-+++ glibc-2.3.2-200304020432/libio/swprintf.c Wed Mar 5 20:58:03 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1997,1998,1999,2000,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
-@@ -22,10 +23,7 @@
- /* Write formatted output into S, according to the format string FORMAT. */
- /* VARARGS3 */
- int
--swprintf (s, n, format)
-- wchar_t *s;
-- size_t n;
-- const wchar_t *format;
-+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
-diff -u -udbrN glibc-2.3.2/libio/swscanf.c glibc-2.3.2-200304020432/libio/swscanf.c
---- glibc-2.3.2/libio/swscanf.c Sat Jul 7 21:21:03 2001
-+++ glibc-2.3.2-200304020432/libio/swscanf.c Wed Mar 5 20:58:03 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,1999,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
-@@ -22,9 +22,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--swscanf (s, format)
-- const wchar_t *s;
-- const wchar_t *format;
-+swscanf (const wchar_t *s, const wchar_t *format, ...)
- {
- va_list arg;
- int done;
-diff -u -udbrN glibc-2.3.2/libio/wfileops.c glibc-2.3.2-200304020432/libio/wfileops.c
---- glibc-2.3.2/libio/wfileops.c Tue Nov 5 08:28:51 2002
-+++ glibc-2.3.2-200304020432/libio/wfileops.c Thu Mar 27 12:53:59 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,95,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,95,97,98,99,2000,2001,2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Ulrich Drepper <drepper@cygnus.com>.
- Based on the single byte version by Per Bothner <bothner@cygnus.com>.
-@@ -879,7 +879,7 @@
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
- };
--INTVARDEF(_IO_wfile_jumps)
-+libc_hidden_data_def (_IO_wfile_jumps)
-
-
- struct _IO_jump_t _IO_wfile_jumps_mmap =
-diff -u -udbrN glibc-2.3.2/linuxthreads/Banner glibc-2.3.2-200304020432/linuxthreads/Banner
-diff -u -udbrN glibc-2.3.2/linuxthreads/ChangeLog glibc-2.3.2-200304020432/linuxthreads/ChangeLog
-diff -u -udbrN glibc-2.3.2/linuxthreads/Changes glibc-2.3.2-200304020432/linuxthreads/Changes
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/Makefile glibc-2.3.2-200304020432/linuxthreads/Examples/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex1.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex1.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex10.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex10.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex11.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex11.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex12.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex12.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex13.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex13.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex14.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex14.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex15.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex15.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex16.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex16.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex17.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex17.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex18.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex18.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex2.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex2.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex3.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex3.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex4.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex4.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex5.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex5.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex6.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex6.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex7.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex7.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex8.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex8.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/ex9.c glibc-2.3.2-200304020432/linuxthreads/Examples/ex9.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/Examples/tststatic.c glibc-2.3.2-200304020432/linuxthreads/Examples/tststatic.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/FAQ.html glibc-2.3.2-200304020432/linuxthreads/FAQ.html
-diff -u -udbrN glibc-2.3.2/linuxthreads/LICENSE glibc-2.3.2-200304020432/linuxthreads/LICENSE
-diff -u -udbrN glibc-2.3.2/linuxthreads/Makeconfig glibc-2.3.2-200304020432/linuxthreads/Makeconfig
-diff -u -udbrN glibc-2.3.2/linuxthreads/Makefile glibc-2.3.2-200304020432/linuxthreads/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/README glibc-2.3.2-200304020432/linuxthreads/README
-diff -u -udbrN glibc-2.3.2/linuxthreads/README.Xfree3.2 glibc-2.3.2-200304020432/linuxthreads/README.Xfree3.2
-diff -u -udbrN glibc-2.3.2/linuxthreads/Versions glibc-2.3.2-200304020432/linuxthreads/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/alloca_cutoff.c glibc-2.3.2-200304020432/linuxthreads/alloca_cutoff.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/attr.c glibc-2.3.2-200304020432/linuxthreads/attr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/barrier.c glibc-2.3.2-200304020432/linuxthreads/barrier.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/bug-sleep.c glibc-2.3.2-200304020432/linuxthreads/bug-sleep.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/cancel.c glibc-2.3.2-200304020432/linuxthreads/cancel.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/condvar.c glibc-2.3.2-200304020432/linuxthreads/condvar.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/configure glibc-2.3.2-200304020432/linuxthreads/configure
-diff -u -udbrN glibc-2.3.2/linuxthreads/descr.h glibc-2.3.2-200304020432/linuxthreads/descr.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/ecmutex.c glibc-2.3.2-200304020432/linuxthreads/ecmutex.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/errno.c glibc-2.3.2-200304020432/linuxthreads/errno.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/events.c glibc-2.3.2-200304020432/linuxthreads/events.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/forward.c glibc-2.3.2-200304020432/linuxthreads/forward.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/internals.h glibc-2.3.2-200304020432/linuxthreads/internals.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/join.c glibc-2.3.2-200304020432/linuxthreads/join.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/joinrace.c glibc-2.3.2-200304020432/linuxthreads/joinrace.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/libc-cancellation.c glibc-2.3.2-200304020432/linuxthreads/libc-cancellation.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/libc-tls-loc.c glibc-2.3.2-200304020432/linuxthreads/libc-tls-loc.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/libc-tsd.c glibc-2.3.2-200304020432/linuxthreads/libc-tsd.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/libc_pthread_init.c glibc-2.3.2-200304020432/linuxthreads/libc_pthread_init.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/linuxthreads.texi glibc-2.3.2-200304020432/linuxthreads/linuxthreads.texi
-diff -u -udbrN glibc-2.3.2/linuxthreads/lockfile.c glibc-2.3.2-200304020432/linuxthreads/lockfile.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/Makefile glibc-2.3.2-200304020432/linuxthreads/man/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_atfork.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_atfork.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_attr_init.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_attr_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_cancel.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_cancel.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_cleanup_push.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_cleanup_push.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_cond_init.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_cond_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_condattr_init.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_condattr_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_create.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_create.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_detach.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_detach.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_equal.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_equal.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_exit.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_exit.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_join.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_join.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_key_create.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_key_create.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_kill_other_threads_np.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_kill_other_threads_np.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_mutex_init.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_mutex_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_mutexattr_init.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_mutexattr_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_mutexattr_setkind_np.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_mutexattr_setkind_np.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_once.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_once.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_self.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_self.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_setschedparam.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_setschedparam.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/pthread_sigmask.man glibc-2.3.2-200304020432/linuxthreads/man/pthread_sigmask.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/sem_init.man glibc-2.3.2-200304020432/linuxthreads/man/sem_init.man
-diff -u -udbrN glibc-2.3.2/linuxthreads/man/troffprepro glibc-2.3.2-200304020432/linuxthreads/man/troffprepro
-diff -u -udbrN glibc-2.3.2/linuxthreads/manager.c glibc-2.3.2-200304020432/linuxthreads/manager.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/mutex.c glibc-2.3.2-200304020432/linuxthreads/mutex.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/old_pthread_atfork.c glibc-2.3.2-200304020432/linuxthreads/old_pthread_atfork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/oldsemaphore.c glibc-2.3.2-200304020432/linuxthreads/oldsemaphore.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pt-allocrtsig.c glibc-2.3.2-200304020432/linuxthreads/pt-allocrtsig.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pt-machine.c glibc-2.3.2-200304020432/linuxthreads/pt-machine.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pt-system.c glibc-2.3.2-200304020432/linuxthreads/pt-system.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/ptclock_gettime.c glibc-2.3.2-200304020432/linuxthreads/ptclock_gettime.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/ptclock_settime.c glibc-2.3.2-200304020432/linuxthreads/ptclock_settime.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/ptfork.c glibc-2.3.2-200304020432/linuxthreads/ptfork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pthandles.c glibc-2.3.2-200304020432/linuxthreads/pthandles.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pthread.c glibc-2.3.2-200304020432/linuxthreads/pthread.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/pthread_atfork.c glibc-2.3.2-200304020432/linuxthreads/pthread_atfork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/ptlongjmp.c glibc-2.3.2-200304020432/linuxthreads/ptlongjmp.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/queue.h glibc-2.3.2-200304020432/linuxthreads/queue.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/restart.h glibc-2.3.2-200304020432/linuxthreads/restart.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/rwlock.c glibc-2.3.2-200304020432/linuxthreads/rwlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/semaphore.c glibc-2.3.2-200304020432/linuxthreads/semaphore.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/semaphore.h glibc-2.3.2-200304020432/linuxthreads/semaphore.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/shlib-versions glibc-2.3.2-200304020432/linuxthreads/shlib-versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sighandler.c glibc-2.3.2-200304020432/linuxthreads/sighandler.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/signals.c glibc-2.3.2-200304020432/linuxthreads/signals.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/specific.c glibc-2.3.2-200304020432/linuxthreads/specific.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/spinlock.c glibc-2.3.2-200304020432/linuxthreads/spinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/spinlock.h glibc-2.3.2-200304020432/linuxthreads/spinlock.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/alpha/elf/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/alpha/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/alpha/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/alpha/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/alpha/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/alpha/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/arm/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/arm/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/arm/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/cris/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/cris/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/cris/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/hppa/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/hppa/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/hppa/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/i586/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/i586/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/i686/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/i686/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/i686/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/i386/useldt.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/ia64/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/m68k/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/m68k/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/m68k/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/m68k/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/m68k/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/mips/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/mips/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/powerpc/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/Subdirs glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/Subdirs
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/initspin.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/bits/initspin.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/bits/libc-lock.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-tsd.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/bits/typesizes.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/errno-loc.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/flockfile.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/flockfile.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/ftrylockfile.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/ftrylockfile.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/funlockfile.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/funlockfile.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/getcpuclockid.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/getcpuclockid.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/herrno-loc.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/list.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/list.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/posix-timer.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/posix-timer.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/pthread.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/res-state.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/semaphore.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/semaphore.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/sigaction.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/sigaction.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/tcb-offsets.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/tcb-offsets.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_create.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_delete.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_delete.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_getoverr.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_getoverr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_gettime.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_gettime.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_routines.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_settime.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/timer_settime.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/pthread/tst-timer.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/pthread/tst-timer.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/s390/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/s390/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sh/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/sh/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sh/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/sh/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/sh/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/sh/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/sh/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc32/sparcv9/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc64/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/tcb-offsets.sym glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/tcb-offsets.sym
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/sparc/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/sparc/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/Implies glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/Implies
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/Versions glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/aio_cancel.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/aio_cancel.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/bits/local_lim.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/bits/sigthread.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/execve.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/execve.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/fork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/fork.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/aio_cancel.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/hppa/aio_cancel.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/mips/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/powerpc/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/raise.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/raise.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/smp.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/smp.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/aio_cancel.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/aio_cancel.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S glibc-2.3.2-200304020432/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/x86_64/pspinlock.c glibc-2.3.2-200304020432/linuxthreads/sysdeps/x86_64/pspinlock.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/x86_64/pt-machine.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h glibc-2.3.2-200304020432/linuxthreads/sysdeps/x86_64/tls.h
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel-static.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel-static.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh glibc-2.3.2-200304020432/linuxthreads/tst-cancel-wrappers.sh
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel1.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel1.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel2.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel2.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel3.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel3.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel4.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel4.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel5.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel5.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel6.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel6.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-cancel7.c glibc-2.3.2-200304020432/linuxthreads/tst-cancel7.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-context.c glibc-2.3.2-200304020432/linuxthreads/tst-context.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-popen.c glibc-2.3.2-200304020432/linuxthreads/tst-popen.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-popen2.c glibc-2.3.2-200304020432/linuxthreads/tst-popen2.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-signal.c glibc-2.3.2-200304020432/linuxthreads/tst-signal.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-signal.sh glibc-2.3.2-200304020432/linuxthreads/tst-signal.sh
-diff -u -udbrN glibc-2.3.2/linuxthreads/tst-static-locale.c glibc-2.3.2-200304020432/linuxthreads/tst-static-locale.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/tststack.c glibc-2.3.2-200304020432/linuxthreads/tststack.c
-diff -u -udbrN glibc-2.3.2/linuxthreads/unload.c glibc-2.3.2-200304020432/linuxthreads/unload.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/Banner glibc-2.3.2-200304020432/linuxthreads_db/Banner
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/ChangeLog glibc-2.3.2-200304020432/linuxthreads_db/ChangeLog
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/Makefile glibc-2.3.2-200304020432/linuxthreads_db/Makefile
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/Versions glibc-2.3.2-200304020432/linuxthreads_db/Versions
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/proc_service.h glibc-2.3.2-200304020432/linuxthreads_db/proc_service.h
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/shlib-versions glibc-2.3.2-200304020432/linuxthreads_db/shlib-versions
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_init.c glibc-2.3.2-200304020432/linuxthreads_db/td_init.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_log.c glibc-2.3.2-200304020432/linuxthreads_db/td_log.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_symbol_list.c glibc-2.3.2-200304020432/linuxthreads_db/td_symbol_list.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_clear_event.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_clear_event.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_delete.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_delete.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_enable_stats.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_enable_stats.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_event_addr.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_event_addr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_event_getmsg.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_event_getmsg.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_get_nthreads.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_get_nthreads.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_get_ph.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_get_ph.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_get_stats.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_get_stats.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_map_id2thr.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_map_id2thr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_map_lwp2thr.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_map_lwp2thr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_new.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_new.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_reset_stats.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_reset_stats.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_set_event.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_set_event.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_setconcurrency.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_setconcurrency.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_thr_iter.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_ta_tsd_iter.c glibc-2.3.2-200304020432/linuxthreads_db/td_ta_tsd_iter.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_clear_event.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_clear_event.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_dbresume.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_dbresume.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_dbsuspend.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_dbsuspend.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_event_enable.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_event_enable.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_event_getmsg.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_event_getmsg.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_get_info.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_get_info.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_getfpregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_getgregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_getxregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_getxregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_getxregsize.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_getxregsize.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_set_event.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_set_event.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_setfpregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_setfpregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_setgregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_setgregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_setprio.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_setprio.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_setsigpending.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_setsigpending.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_setxregs.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_setxregs.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_sigsetmask.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_sigsetmask.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_tls_get_addr.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_tlsbase.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_tsd.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_tsd.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/td_thr_validate.c glibc-2.3.2-200304020432/linuxthreads_db/td_thr_validate.c
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/thread_db.h glibc-2.3.2-200304020432/linuxthreads_db/thread_db.h
-diff -u -udbrN glibc-2.3.2/linuxthreads_db/thread_dbP.h glibc-2.3.2-200304020432/linuxthreads_db/thread_dbP.h
-diff -u -udbrN glibc-2.3.2/locale/Versions glibc-2.3.2-200304020432/locale/Versions
---- glibc-2.3.2/locale/Versions Wed Aug 28 03:04:45 2002
-+++ glibc-2.3.2-200304020432/locale/Versions Mon Mar 3 10:45:12 2003
-@@ -59,13 +59,12 @@
- iswcntrl_l; iswctype_l; iswdigit_l; iswgraph_l; iswlower_l;
- iswprint_l; iswpunct_l; iswspace_l; iswupper_l; iswxdigit_l;
- isxdigit_l; strcasecmp_l; strcoll_l; strfmon_l; strncasecmp_l;
-- strtod_l; strtof_l; strtol_l; strtold_l; strtoll_l; strtoul_l;
-- strtoull_l; strxfrm_l; toascii_l; tolower_l; toupper_l;
-+ strtod_l; strtof_l; strtol_l; strtold_l; strtoul_l;
-+ strxfrm_l; toascii_l; tolower_l; toupper_l;
- towctrans_l; towlower_l; towupper_l; wcscasecmp_l; wcscoll_l;
- wcsncasecmp_l; wcstod_l; wcstof_l; wcstol_l; wcstold_l;
- wcstoll_l; wcstoul_l; wcstoull_l; wcsxfrm_l; wctype_l;
- wctrans_l; nl_langinfo_l;
--
- }
- GLIBC_PRIVATE {
- # global variables
-diff -u -udbrN glibc-2.3.2/locale/programs/locarchive.c glibc-2.3.2-200304020432/locale/programs/locarchive.c
---- glibc-2.3.2/locale/programs/locarchive.c Wed Oct 23 08:21:17 2002
-+++ glibc-2.3.2-200304020432/locale/programs/locarchive.c Sun Mar 16 02:03:52 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -1402,8 +1402,7 @@
- struct locarhead *head;
- struct namehashent *namehashtab;
- struct nameent *names;
-- int cnt;
-- int used;
-+ size_t cnt, used;
-
- /* Open the archive. This call never returns if we cannot
- successfully open the archive. */
-diff -u -udbrN glibc-2.3.2/locale/tst-C-locale.c glibc-2.3.2-200304020432/locale/tst-C-locale.c
---- glibc-2.3.2/locale/tst-C-locale.c Tue Sep 3 20:39:41 2002
-+++ glibc-2.3.2-200304020432/locale/tst-C-locale.c Mon Mar 17 20:11:36 2003
-@@ -1,5 +1,5 @@
- /* Tests of C and POSIX locale contents.
-- Copyright (C) 2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
-
-@@ -450,8 +450,8 @@
- }
-
-
--int
--main (void)
-+static int
-+do_test (void)
- {
- int result;
-
-@@ -475,3 +475,6 @@
-
- return result;
- }
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/localedata/ChangeLog glibc-2.3.2-200304020432/localedata/ChangeLog
---- glibc-2.3.2/localedata/ChangeLog Thu Jan 30 21:21:47 2003
-+++ glibc-2.3.2-200304020432/localedata/ChangeLog Mon Mar 17 11:16:36 2003
-@@ -1,3 +1,17 @@
-+2003-03-17 Ulrich Drepper <drepper@redhat.com>
-+
-+ * localedata/en_ZA: Changed %x for LC_TIME to use dd/mm/ccyy.
-+ Added ^ to LC_MESSAGES regex "^[yY].*".
-+ Confirmed LC_PAPER adn LC_MEASUREMENT settings.
-+ Added country and language names to LC_ADDRESS.
-+ Added missing info for LC_TELEPHONE.
-+ Patch by Dwayne Bailey <dwayne@obsidian.co.za>.
-+
-+2003-03-14 Ulrich Drepper <drepper@redhat.com>
-+
-+ * localedata/mn_MN: New file.
-+ Contributed by Sanlig Badral <badral@chinggis.com>.
-+
- 2003-01-30 Ulrich Drepper <drepper@redhat.com>
-
- * Makefile (LOCALES): Add vi_VN.TCVN5712-1.
-diff -u -udbrN glibc-2.3.2/localedata/locales/en_ZA glibc-2.3.2-200304020432/localedata/locales/en_ZA
---- glibc-2.3.2/localedata/locales/en_ZA Thu Oct 26 19:48:46 2000
-+++ glibc-2.3.2-200304020432/localedata/locales/en_ZA Mon Mar 17 11:08:52 2003
-@@ -2,44 +2,54 @@
- comment_char %
-
- % English language locale for South Africa
--% Source: RAP
--% Email: nic@sig.co.za
--% Tel: +27 83 7659503
--% Fax: +27 12 3478098
-+% Source: Zuza Software Foundation
-+% Email: dwayne@translate.org.za
-+% Tel: +27 21 4487827
-+% Fax: +27 21 4489574
- % Language: en
- % Territory: ZA
--% Revision: 1.0
--% Date: 1999-03-28
-+% Revision: 1.1
-+% Date: 2003-03-14
- % Users: general
- % Repertoiremap: mnemonic,ds
- % Charset: ISO-8859-1
- % Distribution and use is free, also
- % for commercial purposes.
-+%
-+% Changelog
-+% 1.1 (2003-03-14):
-+% - Updated maintainer to Zuza Sofware Foundation
-+% - Changed %x for LC_TIME to use dd/mm/ccyy
-+% - Added ^ to LC_MESSAGES regex "^[yY].*"
-+% - Confirmed LC_PAPER and LC_MEASUREMENT settings
-+% - Added country and language names to LC_ADDRESS
-+% - Added missing info for LC_TELEPHONE
-
- LC_IDENTIFICATION
- title "English locale for South Africa"
--source "RAP"
--address ""
--contact ""
--email "bug-glibc@gnu.org"
--tel ""
--fax ""
-+source "Zuza Software Foundation"
-+address "Box 13412, Mowbray, 7701, South Africa"
-+contact "Dwayne Bailey"
-+email "dwayne@translate.org.za"
-+tel "+27 21 448 7827"
-+fax "+27 21 448 9574"
- language "English"
- territory "South Africa"
--revision "1.0"
--date "2000-06-29"
-+revision "1.1"
-+date "2003-03-14"
- %
--category "en_ZA:2000";LC_IDENTIFICATION
-+category "en_ZA:2003";LC_IDENTIFICATION
- category "en_ZA:2000";LC_CTYPE
- category "en_ZA:2000";LC_COLLATE
--category "en_ZA:2000";LC_TIME
-+category "en_ZA:2003";LC_TIME
- category "en_ZA:2000";LC_NUMERIC
- category "en_ZA:2000";LC_MONETARY
--category "en_ZA:2000";LC_MESSAGES
-+category "en_ZA:2003";LC_MESSAGES
- category "en_ZA:2000";LC_PAPER
-+category "en_ZA:2000";LC_MEASUREMENT
- category "en_ZA:2000";LC_NAME
--category "en_ZA:2000";LC_ADDRESS
--category "en_ZA:2000";LC_TELEPHONE
-+category "en_ZA:2003";LC_ADDRESS
-+category "en_ZA:2003";LC_TELEPHONE
-
- END LC_IDENTIFICATION
-
-@@ -106,7 +116,7 @@
- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
- d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
--d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
-+d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
- t_fmt "<U0025><U0054>"
- am_pm "";""
- t_fmt_ampm ""
-@@ -116,25 +126,25 @@
- END LC_TIME
-
- LC_MESSAGES
--yesexpr "<U005B><U0079><U0059><U005D><U002E><U002A>"
--noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
-+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
-+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
- END LC_MESSAGES
-
- LC_PAPER
--% FIXME
- height 297
--% FIXME
- width 210
- END LC_PAPER
-
- LC_TELEPHONE
- tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
- <U006C>"
-+tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
-+int_select "<U0030><U0039>"
- int_prefix "<U0032><U0037>"
-+
- END LC_TELEPHONE
-
- LC_MEASUREMENT
--% FIXME
- measurement 1
- END LC_MEASUREMENT
-
-@@ -149,4 +159,7 @@
- <U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
- <U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
- <U004E><U0025><U0063><U0025><U004E>"
-+country_name "<U0053><U006F><U0075><U0074><U0068><U0020>/
-+<U0041><U0066><U0072><U0069><U0063><U0061>"
-+lang_name "<U0045><U006E><U0067><U006C><U0069><U0073><U0068>"
- END LC_ADDRESS
-diff -u -udbrN glibc-2.3.2/localedata/locales/mn_MN glibc-2.3.2-200304020432/localedata/locales/mn_MN
---- glibc-2.3.2/localedata/locales/mn_MN Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/localedata/locales/mn_MN Fri Mar 14 22:26:23 2003
-@@ -0,0 +1,196 @@
-+comment_char %
-+escape_char /
-+% Mongolian language (cyrillic) locale for Mongolia
-+% Sanlig Badral <badral@chinggis.com>
-+% Revision: 0.9 (2003-2-27)
-+% Charsets: UTF-8
-+% Distribution and use is free, also
-+% for commercial purposes.
-+
-+LC_IDENTIFICATION
-+title "Mongolian locale for Mongolia"
-+source "OPENMN"
-+address ""
-+contact ""
-+email "bug-glibc@gnu.org"
-+tel ""
-+fax ""
-+language "Mongolian"
-+territory "Mongolia"
-+revision "0.9"
-+date "2003-02-27"
-+
-+category "mn_MN:2000";LC_IDENTIFICATION
-+category "mn_MN:2000";LC_CTYPE
-+category "mn_MN:2000";LC_COLLATE
-+category "mn_MN:2000";LC_TIME
-+category "mn_MN:2000";LC_NUMERIC
-+category "mn_MN:2000";LC_MONETARY
-+category "mn_MN:2000";LC_MESSAGES
-+category "mn_MN:2000";LC_PAPER
-+category "mn_MN:2000";LC_NAME
-+category "mn_MN:2000";LC_ADDRESS
-+category "mn_MN:2000";LC_TELEPHONE
-+
-+END LC_IDENTIFICATION
-+
-+LC_COLLATE
-+copy "iso14651_t1"
-+
-+% iso14651_t1 is missing Mongolian ue(straight u), oe(barred o)
-+% like russian, but with <o-=> (<barred-o>) after <o=> and
-+% <u'=>(straight u) after <u=>
-+
-+collating-symbol <o-=>
-+collating-symbol <u'=>
-+
-+reorder-after <CYR-O>
-+<o-=>
-+reorder-after <CYR-OUBRE>
-+<u'=>
-+
-+reorder-after <U043E>
-+<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
-+reorder-after <U041E>
-+<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
-+
-+reorder-after <U0443>
-+<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
-+reorder-after <U0423>
-+<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
-+
-+reorder-end
-+END LC_COLLATE
-+
-+LC_CTYPE
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_MONETARY
-+int_curr_symbol "<U004D><U004E><U0054><U0020>"
-+currency_symbol "<U20AE>"
-+mon_decimal_point "<U002E>"
-+mon_thousands_sep "<U0020>"
-+mon_grouping 3;3
-+positive_sign ""
-+negative_sign "<U002D>"
-+int_frac_digits 2
-+frac_digits 2
-+p_cs_precedes 0
-+p_sep_by_space 1
-+n_cs_precedes 0
-+n_sep_by_space 1
-+p_sign_posn 1
-+n_sign_posn 1
-+
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+decimal_point "<U002C>"
-+thousands_sep "<U002E>"
-+grouping 3;3
-+END LC_NUMERIC
-+
-+LC_TIME
-+% Abbreviated weekday names (%a)
-+abday "<U041D><U044F>";"<U0414><U0430>";/
-+ "<U041C><U044F>";"<U041B><U0445>";/
-+ "<U041F><U04AF>";"<U0411><U0430>";/
-+ "<U0411><U044F>"
-+% Full weekday names (%A)
-+day "<U041D><U044F><U043C>";/
-+ "<U0414><U0430><U0432><U0430><U0430>";/
-+ "<U041C><U044F><U0433><U043C><U0430><U0440>";/
-+ "<U041B><U0445><U0430><U0433><U0432><U0430>";/
-+ "<U041F><U04AF><U0440><U044D><U0432>";/
-+ "<U0411><U0430><U0430><U0441><U0430><U043D>";/
-+ "<U0411><U044F><U043C><U0431><U0430>"
-+% Abbreviated month names (%b)
-+abmon "<U0031><U002D><U0440>";"<U0032><U002D><U0440>";/
-+ "<U0033><U002D><U0440>";"<U0034><U002D><U0440>";/
-+ "<U0035><U002D><U0440>";"<U0036><U002D><U0440>";/
-+ "<U0037><U002D><U0440>";"<U0038><U002D><U0440>";/
-+ "<U0039><U002D><U0440>";"<U0031><U0030><U002D><U0440>";/
-+ "<U0031><U0031><U002D><U0440>";"<U0031><U0032><U002D><U0440>"
-+% Full month names (%B)
-+mon "<U041D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0425><U043E><U0451><U0440><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0413><U0443><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0414><U04E9><U0440><U04E9><U0432><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0422><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0417><U0443><U0440><U0433><U0430><U0430><U0434><U0443><U0433><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0414><U043E><U043B><U043E><U043E><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U041D><U0430><U0439><U043C><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0415><U0441><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0432><U0430><U043D><U043D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
-+ "<U0410><U0440><U0432><U0430><U043D><U0445><U043E><U0451><U0440><U0434><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>"
-+% Appropriate date and time representation
-+% "%a %d %b %Y %T %Z"
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
-+
-+% Appropriate date representation
-+% "%Y.%m.%d"
-+d_fmt "<U0025><U0059><U002E><U0025><U006D><U002E><U0025><U0064>"
-+% Appropriate time representation
-+% "%T"
-+t_fmt "<U0025><U0054>"
-+% Appropriate 12 h time representation (%r)
-+am_pm "";""
-+t_fmt_ampm ""
-+% Full date and time representation
-+% "%a %b %e %H:%M:%S %Z %Y"
-+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
-+END LC_TIME
-+
-+LC_MESSAGES
-+yesexpr "<U005E><U005B><U0442><U0422><U0079><U0059><U005D><U002E><U002A>"
-+noexpr "<U005E><U005B><U04AF><U04AE><U006E><U004E><U005D><U002E><U002A>"
-+END LC_MESSAGES
-+
-+% Paper format
-+LC_PAPER
-+height 297
-+width 210
-+END LC_PAPER
-+
-+LC_NAME
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+
-+name_miss "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+name_mr "<U041D><U043E><U0451><U043D>"
-+name_mrs "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+name_ms "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
-+END LC_NAME
-+
-+LC_ADDRESS
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+
-+country_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061>"
-+country_post "<U004D><U006E>"
-+country_ab2 "<U004D><U006E>"
-+country_ab3 "<U004D><U004E><U0047>"
-+country_num 496
-+country_car "<U004D><U0047><U004C>"
-+country_isbn 99929
-+lang_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061><U006E>"
-+lang_ab "<U006D><U006E>"
-+lang_term "<U006D><U006F><U006E>"
-+lang_lib "<U006D><U006F><U006E>"
-+END LC_ADDRESS
-+
-+LC_TELEPHONE
-+tel_int_fmt "<U0028><U002B><U0025><U0063><U0020><U0025><U0061><U0029><U0020><U0025><U006C>"
-+tel_dom_fmt "<U0028><U0030><U0025><U0061><U0029><U0020><U0025><U006C>"
-+int_select "<U0030><U0030>"
-+int_prefix "<U0039><U0037><U0036>"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+measurement 1
-+END LC_MEASUREMENT
-diff -u -udbrN glibc-2.3.2/malloc/memusagestat.c glibc-2.3.2-200304020432/malloc/memusagestat.c
---- glibc-2.3.2/malloc/memusagestat.c Sat Jul 7 21:21:06 2001
-+++ glibc-2.3.2-200304020432/malloc/memusagestat.c Sun Mar 23 00:00:25 2003
-@@ -405,7 +405,7 @@
- }
-
-
-- snprintf (buf, sizeof (buf), "%llu", total);
-+ snprintf (buf, sizeof (buf), "%llu", (unsigned long long) total);
- gdImageString (im_out, gdFontSmall, xsize - 50, ysize - 14, buf, blue);
-
- if (!time_based)
-diff -u -udbrN glibc-2.3.2/malloc/mtrace.c glibc-2.3.2-200304020432/malloc/mtrace.c
---- glibc-2.3.2/malloc/mtrace.c Tue Dec 31 22:18:43 2002
-+++ glibc-2.3.2-200304020432/malloc/mtrace.c Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,5 @@
- /* More debugging hooks for `malloc'.
-- Copyright (C) 1991-1994,1996-2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991-1994,1996-2001,2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written April 2, 1991 by John Gilmore of Cygnus Support.
- Based on mcheck.c by Mike Haertel.
-@@ -103,7 +103,7 @@
- {
- #ifdef HAVE_ELF
- Dl_info info;
-- if (_dl_addr (caller, &info))
-+ if (_dl_addr (caller, &info, NULL, NULL))
- {
- char *buf = (char *) "";
- if (info.dli_sname != NULL)
-diff -u -udbrN glibc-2.3.2/malloc/set-freeres.c glibc-2.3.2-200304020432/malloc/set-freeres.c
---- glibc-2.3.2/malloc/set-freeres.c Sat Nov 2 03:15:52 2002
-+++ glibc-2.3.2-200304020432/malloc/set-freeres.c Fri Mar 21 08:45:55 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997,1999,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
-@@ -16,7 +16,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <atomicity.h>
-+#include <atomic.h>
- #include <stdlib.h>
- #include <set-hooks.h>
- #include <libc-internal.h>
-@@ -36,7 +36,7 @@
- protect for multiple executions since these are fatal. */
- static long int already_called;
-
-- if (compare_and_swap (&already_called, 0, 1))
-+ if (! atomic_compare_and_exchange_bool_acq (&already_called, 1, 0))
- {
- void * const *p;
-
-diff -u -udbrN glibc-2.3.2/manual/add.c.texi glibc-2.3.2-200304020432/manual/add.c.texi
---- glibc-2.3.2/manual/add.c.texi Wed Dec 9 23:51:54 1998
-+++ glibc-2.3.2-200304020432/manual/add.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,30 +0,0 @@
--#include <stdarg.h>
--#include <stdio.h>
--
--int
--add_em_up (int count,...)
--@{
-- va_list ap;
-- int i, sum;
--
-- va_start (ap, count); /* @r{Initialize the argument list.} */
--
-- sum = 0;
-- for (i = 0; i < count; i++)
-- sum += va_arg (ap, int); /* @r{Get the next argument value.} */
--
-- va_end (ap); /* @r{Clean up.} */
-- return sum;
--@}
--
--int
--main (void)
--@{
-- /* @r{This call prints 16.} */
-- printf ("%d\n", add_em_up (3, 5, 5, 6));
--
-- /* @r{This call prints 55.} */
-- printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/argp-ex1.c.texi glibc-2.3.2-200304020432/manual/argp-ex1.c.texi
---- glibc-2.3.2/manual/argp-ex1.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/argp-ex1.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,14 +0,0 @@
--/* @r{Argp example #1 -- a minimal program using argp} */
--
--/* @r{This is (probably) the smallest possible program that
-- uses argp. It won't do much except give an error
-- messages and exit when there are any arguments, and print
-- a (rather pointless) messages for --help.} */
--
--#include <argp.h>
--
--int main (int argc, char **argv)
--@{
-- argp_parse (0, argc, argv, 0, 0, 0);
-- exit (0);
--@}
-diff -u -udbrN glibc-2.3.2/manual/argp-ex2.c.texi glibc-2.3.2-200304020432/manual/argp-ex2.c.texi
---- glibc-2.3.2/manual/argp-ex2.c.texi Mon Nov 5 21:54:48 2001
-+++ glibc-2.3.2-200304020432/manual/argp-ex2.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,44 +0,0 @@
--/* @r{Argp example #2 -- a pretty minimal program using argp} */
--
--/* @r{This program doesn't use any options or arguments, but uses
-- argp to be compliant with the GNU standard command line
-- format.
--
-- In addition to making sure no arguments are given, and
-- implementing a --help option, this example will have a
-- --version option, and will put the given documentation string
-- and bug address in the --help output, as per GNU standards.
--
-- The variable ARGP contains the argument parser specification;
-- adding fields to this structure is the way most parameters are
-- passed to argp_parse (the first three fields are usually used,
-- but not in this small program). There are also two global
-- variables that argp knows about defined here,
-- ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are
-- global variables because they will almost always be constant
-- for a given program, even if it uses different argument
-- parsers for various tasks).} */
--
--#include <argp.h>
--
--const char *argp_program_version =
-- "argp-ex2 1.0";
--const char *argp_program_bug_address =
-- "<bug-gnu-utils@@gnu.org>";
--
--/* @r{Program documentation.} */
--static char doc[] =
-- "Argp example #2 -- a pretty minimal program using argp";
--
--/* @r{Our argument parser. The @code{options}, @code{parser}, and
-- @code{args_doc} fields are zero because we have neither options or
-- arguments; @code{doc} and @code{argp_program_bug_address} will be
-- used in the output for @samp{--help}, and the @samp{--version}
-- option will print out @code{argp_program_version}.} */
--static struct argp argp = @{ 0, 0, 0, doc @};
--
--int main (int argc, char **argv)
--@{
-- argp_parse (&argp, argc, argv, 0, 0, 0);
-- exit (0);
--@}
-diff -u -udbrN glibc-2.3.2/manual/argp-ex3.c.texi glibc-2.3.2-200304020432/manual/argp-ex3.c.texi
---- glibc-2.3.2/manual/argp-ex3.c.texi Tue Feb 22 09:35:05 2000
-+++ glibc-2.3.2-200304020432/manual/argp-ex3.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,152 +0,0 @@
--/* @r{Argp example #3 -- a program with options and arguments using argp} */
--
--/* @r{This program uses the same features as example 2, and uses options and
-- arguments.
--
-- We now use the first four fields in ARGP, so here's a description of them:
-- OPTIONS -- A pointer to a vector of struct argp_option (see below)
-- PARSER -- A function to parse a single option, called by argp
-- ARGS_DOC -- A string describing how the non-option arguments should look
-- DOC -- A descriptive string about this program; if it contains a
-- vertical tab character (\v), the part after it will be
-- printed *following* the options
--
-- The function PARSER takes the following arguments:
-- KEY -- An integer specifying which option this is (taken
-- from the KEY field in each struct argp_option), or
-- a special key specifying something else; the only
-- special keys we use here are ARGP_KEY_ARG, meaning
-- a non-option argument, and ARGP_KEY_END, meaning
-- that all arguments have been parsed
-- ARG -- For an option KEY, the string value of its
-- argument, or NULL if it has none
-- STATE-- A pointer to a struct argp_state, containing
-- various useful information about the parsing state; used here
-- are the INPUT field, which reflects the INPUT argument to
-- argp_parse, and the ARG_NUM field, which is the number of the
-- current non-option argument being parsed
-- It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the
-- given KEY wasn't recognized, or an errno value indicating some other
-- error.
--
-- Note that in this example, main uses a structure to communicate with the
-- parse_opt function, a pointer to which it passes in the INPUT argument to
-- argp_parse. Of course, it's also possible to use global variables
-- instead, but this is somewhat more flexible.
--
-- The OPTIONS field contains a pointer to a vector of struct argp_option's;
-- that structure has the following fields (if you assign your option
-- structures using array initialization like this example, unspecified
-- fields will be defaulted to 0, and need not be specified):
-- NAME -- The name of this option's long option (may be zero)
-- KEY -- The KEY to pass to the PARSER function when parsing this option,
-- *and* the name of this option's short option, if it is a
-- printable ascii character
-- ARG -- The name of this option's argument, if any
-- FLAGS -- Flags describing this option; some of them are:
-- OPTION_ARG_OPTIONAL -- The argument to this option is optional
-- OPTION_ALIAS -- This option is an alias for the
-- previous option
-- OPTION_HIDDEN -- Don't show this option in --help output
-- DOC -- A documentation string for this option, shown in --help output
--
-- An options vector should be terminated by an option with all fields zero.} */
--
--#include <argp.h>
--
--const char *argp_program_version =
-- "argp-ex3 1.0";
--const char *argp_program_bug_address =
-- "<bug-gnu-utils@@gnu.org>";
--
--/* @r{Program documentation.} */
--static char doc[] =
-- "Argp example #3 -- a program with options and arguments using argp";
--
--/* @r{A description of the arguments we accept.} */
--static char args_doc[] = "ARG1 ARG2";
--
--/* @r{The options we understand.} */
--static struct argp_option options[] = @{
-- @{"verbose", 'v', 0, 0, "Produce verbose output" @},
-- @{"quiet", 'q', 0, 0, "Don't produce any output" @},
-- @{"silent", 's', 0, OPTION_ALIAS @},
-- @{"output", 'o', "FILE", 0,
-- "Output to FILE instead of standard output" @},
-- @{ 0 @}
--@};
--
--/* @r{Used by @code{main} to communicate with @code{parse_opt}.} */
--struct arguments
--@{
-- char *args[2]; /* @r{@var{arg1} & @var{arg2}} */
-- int silent, verbose;
-- char *output_file;
--@};
--
--/* @r{Parse a single option.} */
--static error_t
--parse_opt (int key, char *arg, struct argp_state *state)
--@{
-- /* @r{Get the @var{input} argument from @code{argp_parse}, which we
-- know is a pointer to our arguments structure.} */
-- struct arguments *arguments = state->input;
--
-- switch (key)
-- @{
-- case 'q': case 's':
-- arguments->silent = 1;
-- break;
-- case 'v':
-- arguments->verbose = 1;
-- break;
-- case 'o':
-- arguments->output_file = arg;
-- break;
--
-- case ARGP_KEY_ARG:
-- if (state->arg_num >= 2)
-- /* @r{Too many arguments.} */
-- argp_usage (state);
--
-- arguments->args[state->arg_num] = arg;
--
-- break;
--
-- case ARGP_KEY_END:
-- if (state->arg_num < 2)
-- /* @r{Not enough arguments.} */
-- argp_usage (state);
-- break;
--
-- default:
-- return ARGP_ERR_UNKNOWN;
-- @}
-- return 0;
--@}
--
--/* @r{Our argp parser.} */
--static struct argp argp = @{ options, parse_opt, args_doc, doc @};
--
--int main (int argc, char **argv)
--@{
-- struct arguments arguments;
--
-- /* @r{Default values.} */
-- arguments.silent = 0;
-- arguments.verbose = 0;
-- arguments.output_file = "-";
--
-- /* @r{Parse our arguments; every option seen by @code{parse_opt} will
-- be reflected in @code{arguments}.} */
-- argp_parse (&argp, argc, argv, 0, 0, &arguments);
--
-- printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n"
-- "VERBOSE = %s\nSILENT = %s\n",
-- arguments.args[0], arguments.args[1],
-- arguments.output_file,
-- arguments.verbose ? "yes" : "no",
-- arguments.silent ? "yes" : "no");
--
-- exit (0);
--@}
-diff -u -udbrN glibc-2.3.2/manual/argp-ex4.c.texi glibc-2.3.2-200304020432/manual/argp-ex4.c.texi
---- glibc-2.3.2/manual/argp-ex4.c.texi Tue Feb 22 09:35:05 2000
-+++ glibc-2.3.2-200304020432/manual/argp-ex4.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,167 +0,0 @@
--/* @r{Argp example #4 -- a program with somewhat more complicated options} */
--
--/* @r{This program uses the same features as example 3, but has more
-- options, and somewhat more structure in the -help output. It
-- also shows how you can `steal' the remainder of the input
-- arguments past a certain point, for programs that accept a
-- list of items. It also shows the special argp KEY value
-- ARGP_KEY_NO_ARGS, which is only given if no non-option
-- arguments were supplied to the program.
--
-- For structuring the help output, two features are used,
-- *headers* which are entries in the options vector with the
-- first four fields being zero, and a two part documentation
-- string (in the variable DOC), which allows documentation both
-- before and after the options; the two parts of DOC are
-- separated by a vertical-tab character ('\v', or '\013'). By
-- convention, the documentation before the options is just a
-- short string saying what the program does, and that afterwards
-- is longer, describing the behavior in more detail. All
-- documentation strings are automatically filled for output,
-- although newlines may be included to force a line break at a
-- particular point. All documentation strings are also passed to
-- the `gettext' function, for possible translation into the
-- current locale.} */
--
--#include <stdlib.h>
--#include <error.h>
--#include <argp.h>
--
--const char *argp_program_version =
-- "argp-ex4 1.0";
--const char *argp_program_bug_address =
-- "<bug-gnu-utils@@prep.ai.mit.edu>";
--
--/* @r{Program documentation.} */
--static char doc[] =
-- "Argp example #4 -- a program with somewhat more complicated\
--options\
--\vThis part of the documentation comes *after* the options;\
-- note that the text is automatically filled, but it's possible\
-- to force a line-break, e.g.\n<-- here.";
--
--/* @r{A description of the arguments we accept.} */
--static char args_doc[] = "ARG1 [STRING...]";
--
--/* @r{Keys for options without short-options.} */
--#define OPT_ABORT 1 /* @r{--abort} */
--
--/* @r{The options we understand.} */
--static struct argp_option options[] = @{
-- @{"verbose", 'v', 0, 0, "Produce verbose output" @},
-- @{"quiet", 'q', 0, 0, "Don't produce any output" @},
-- @{"silent", 's', 0, OPTION_ALIAS @},
-- @{"output", 'o', "FILE", 0,
-- "Output to FILE instead of standard output" @},
--
-- @{0,0,0,0, "The following options should be grouped together:" @},
-- @{"repeat", 'r', "COUNT", OPTION_ARG_OPTIONAL,
-- "Repeat the output COUNT (default 10) times"@},
-- @{"abort", OPT_ABORT, 0, 0, "Abort before showing any output"@},
--
-- @{ 0 @}
--@};
--
--/* @r{Used by @code{main} to communicate with @code{parse_opt}.} */
--struct arguments
--@{
-- char *arg1; /* @r{@var{arg1}} */
-- char **strings; /* @r{[@var{string}@dots{}]} */
-- int silent, verbose, abort; /* @r{@samp{-s}, @samp{-v}, @samp{--abort}} */
-- char *output_file; /* @r{@var{file} arg to @samp{--output}} */
-- int repeat_count; /* @r{@var{count} arg to @samp{--repeat}} */
--@};
--
--/* @r{Parse a single option.} */
--static error_t
--parse_opt (int key, char *arg, struct argp_state *state)
--@{
-- /* @r{Get the @code{input} argument from @code{argp_parse}, which we
-- know is a pointer to our arguments structure.} */
-- struct arguments *arguments = state->input;
--
-- switch (key)
-- @{
-- case 'q': case 's':
-- arguments->silent = 1;
-- break;
-- case 'v':
-- arguments->verbose = 1;
-- break;
-- case 'o':
-- arguments->output_file = arg;
-- break;
-- case 'r':
-- arguments->repeat_count = arg ? atoi (arg) : 10;
-- break;
-- case OPT_ABORT:
-- arguments->abort = 1;
-- break;
--
-- case ARGP_KEY_NO_ARGS:
-- argp_usage (state);
--
-- case ARGP_KEY_ARG:
-- /* @r{Here we know that @code{state->arg_num == 0}, since we
-- force argument parsing to end before any more arguments can
-- get here.} */
-- arguments->arg1 = arg;
--
-- /* @r{Now we consume all the rest of the arguments.
-- @code{state->next} is the index in @code{state->argv} of the
-- next argument to be parsed, which is the first @var{string}
-- we're interested in, so we can just use
-- @code{&state->argv[state->next]} as the value for
-- arguments->strings.
--
-- @emph{In addition}, by setting @code{state->next} to the end
-- of the arguments, we can force argp to stop parsing here and
-- return.} */
-- arguments->strings = &state->argv[state->next];
-- state->next = state->argc;
--
-- break;
--
-- default:
-- return ARGP_ERR_UNKNOWN;
-- @}
-- return 0;
--@}
--
--/* @r{Our argp parser.} */
--static struct argp argp = @{ options, parse_opt, args_doc, doc @};
--
--int main (int argc, char **argv)
--@{
-- int i, j;
-- struct arguments arguments;
--
-- /* @r{Default values.} */
-- arguments.silent = 0;
-- arguments.verbose = 0;
-- arguments.output_file = "-";
-- arguments.repeat_count = 1;
-- arguments.abort = 0;
--
-- /* @r{Parse our arguments; every option seen by @code{parse_opt} will be
-- reflected in @code{arguments}.} */
-- argp_parse (&argp, argc, argv, 0, 0, &arguments);
--
-- if (arguments.abort)
-- error (10, 0, "ABORTED");
--
-- for (i = 0; i < arguments.repeat_count; i++)
-- @{
-- printf ("ARG1 = %s\n", arguments.arg1);
-- printf ("STRINGS = ");
-- for (j = 0; arguments.strings[j]; j++)
-- printf (j == 0 ? "%s" : ", %s", arguments.strings[j]);
-- printf ("\n");
-- printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n",
-- arguments.output_file,
-- arguments.verbose ? "yes" : "no",
-- arguments.silent ? "yes" : "no");
-- @}
--
-- exit (0);
--@}
-diff -u -udbrN glibc-2.3.2/manual/atexit.c.texi glibc-2.3.2-200304020432/manual/atexit.c.texi
---- glibc-2.3.2/manual/atexit.c.texi Wed Dec 9 23:51:54 1998
-+++ glibc-2.3.2-200304020432/manual/atexit.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,15 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--
--void
--bye (void)
--@{
-- puts ("Goodbye, cruel world....");
--@}
--
--int
--main (void)
--@{
-- atexit (bye);
-- exit (EXIT_SUCCESS);
--@}
-diff -u -udbrN glibc-2.3.2/manual/db.c.texi glibc-2.3.2-200304020432/manual/db.c.texi
---- glibc-2.3.2/manual/db.c.texi Wed Dec 9 23:51:54 1998
-+++ glibc-2.3.2-200304020432/manual/db.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,52 +0,0 @@
--#include <grp.h>
--#include <pwd.h>
--#include <sys/types.h>
--#include <unistd.h>
--#include <stdlib.h>
--
--int
--main (void)
--@{
-- uid_t me;
-- struct passwd *my_passwd;
-- struct group *my_group;
-- char **members;
--
-- /* @r{Get information about the user ID.} */
-- me = getuid ();
-- my_passwd = getpwuid (me);
-- if (!my_passwd)
-- @{
-- printf ("Couldn't find out about user %d.\n", (int) me);
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Print the information.} */
-- printf ("I am %s.\n", my_passwd->pw_gecos);
-- printf ("My login name is %s.\n", my_passwd->pw_name);
-- printf ("My uid is %d.\n", (int) (my_passwd->pw_uid));
-- printf ("My home directory is %s.\n", my_passwd->pw_dir);
-- printf ("My default shell is %s.\n", my_passwd->pw_shell);
--
-- /* @r{Get information about the default group ID.} */
-- my_group = getgrgid (my_passwd->pw_gid);
-- if (!my_group)
-- @{
-- printf ("Couldn't find out about group %d.\n",
-- (int) my_passwd->pw_gid);
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Print the information.} */
-- printf ("My default group is %s (%d).\n",
-- my_group->gr_name, (int) (my_passwd->pw_gid));
-- printf ("The members of this group are:\n");
-- members = my_group->gr_mem;
-- while (*members)
-- @{
-- printf (" %s\n", *(members));
-- members++;
-- @}
--
-- return EXIT_SUCCESS;
--@}
-diff -u -udbrN glibc-2.3.2/manual/dir-add.info glibc-2.3.2-200304020432/manual/dir-add.info
---- glibc-2.3.2/manual/dir-add.info Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/dir-add.info Thu Jan 1 01:00:00 1970
-@@ -1,1707 +0,0 @@
--INFO-DIR-SECTION GNU C library functions
--START-INFO-DIR-ENTRY
--* ALTWERASE: (libc)Local Modes.
--* ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
--* ARG_MAX: (libc)General Limits.
--* BC_BASE_MAX: (libc)Utility Limits.
--* BC_DIM_MAX: (libc)Utility Limits.
--* BC_SCALE_MAX: (libc)Utility Limits.
--* BC_STRING_MAX: (libc)Utility Limits.
--* BRKINT: (libc)Input Modes.
--* BUFSIZ: (libc)Controlling Buffering.
--* CCTS_OFLOW: (libc)Control Modes.
--* CHILD_MAX: (libc)General Limits.
--* CIGNORE: (libc)Control Modes.
--* CLK_TCK: (libc)CPU Time.
--* CLOCAL: (libc)Control Modes.
--* CLOCKS_PER_SEC: (libc)CPU Time.
--* COLL_WEIGHTS_MAX: (libc)Utility Limits.
--* CREAD: (libc)Control Modes.
--* CRTS_IFLOW: (libc)Control Modes.
--* CS5: (libc)Control Modes.
--* CS6: (libc)Control Modes.
--* CS7: (libc)Control Modes.
--* CS8: (libc)Control Modes.
--* CSIZE: (libc)Control Modes.
--* CSTOPB: (libc)Control Modes.
--* DES_FAILED: (libc)DES Encryption.
--* DTTOIF: (libc)Directory Entries.
--* E2BIG: (libc)Error Codes.
--* EACCES: (libc)Error Codes.
--* EADDRINUSE: (libc)Error Codes.
--* EADDRNOTAVAIL: (libc)Error Codes.
--* EADV: (libc)Error Codes.
--* EAFNOSUPPORT: (libc)Error Codes.
--* EAGAIN: (libc)Error Codes.
--* EALREADY: (libc)Error Codes.
--* EAUTH: (libc)Error Codes.
--* EBACKGROUND: (libc)Error Codes.
--* EBADE: (libc)Error Codes.
--* EBADF: (libc)Error Codes.
--* EBADFD: (libc)Error Codes.
--* EBADMSG: (libc)Error Codes.
--* EBADR: (libc)Error Codes.
--* EBADRPC: (libc)Error Codes.
--* EBADRQC: (libc)Error Codes.
--* EBADSLT: (libc)Error Codes.
--* EBFONT: (libc)Error Codes.
--* EBUSY: (libc)Error Codes.
--* ECANCELED: (libc)Error Codes.
--* ECHILD: (libc)Error Codes.
--* ECHO: (libc)Local Modes.
--* ECHOCTL: (libc)Local Modes.
--* ECHOE: (libc)Local Modes.
--* ECHOK: (libc)Local Modes.
--* ECHOKE: (libc)Local Modes.
--* ECHONL: (libc)Local Modes.
--* ECHOPRT: (libc)Local Modes.
--* ECHRNG: (libc)Error Codes.
--* ECOMM: (libc)Error Codes.
--* ECONNABORTED: (libc)Error Codes.
--* ECONNREFUSED: (libc)Error Codes.
--* ECONNRESET: (libc)Error Codes.
--* ED: (libc)Error Codes.
--* EDEADLK: (libc)Error Codes.
--* EDEADLOCK: (libc)Error Codes.
--* EDESTADDRREQ: (libc)Error Codes.
--* EDIED: (libc)Error Codes.
--* EDOM: (libc)Error Codes.
--* EDOTDOT: (libc)Error Codes.
--* EDQUOT: (libc)Error Codes.
--* EEXIST: (libc)Error Codes.
--* EFAULT: (libc)Error Codes.
--* EFBIG: (libc)Error Codes.
--* EFTYPE: (libc)Error Codes.
--* EGRATUITOUS: (libc)Error Codes.
--* EGREGIOUS: (libc)Error Codes.
--* EHOSTDOWN: (libc)Error Codes.
--* EHOSTUNREACH: (libc)Error Codes.
--* EIDRM: (libc)Error Codes.
--* EIEIO: (libc)Error Codes.
--* EILSEQ: (libc)Error Codes.
--* EINPROGRESS: (libc)Error Codes.
--* EINTR: (libc)Error Codes.
--* EINVAL: (libc)Error Codes.
--* EIO: (libc)Error Codes.
--* EISCONN: (libc)Error Codes.
--* EISDIR: (libc)Error Codes.
--* EISNAM: (libc)Error Codes.
--* EL2HLT: (libc)Error Codes.
--* EL2NSYNC: (libc)Error Codes.
--* EL3HLT: (libc)Error Codes.
--* EL3RST: (libc)Error Codes.
--* ELIBACC: (libc)Error Codes.
--* ELIBBAD: (libc)Error Codes.
--* ELIBEXEC: (libc)Error Codes.
--* ELIBMAX: (libc)Error Codes.
--* ELIBSCN: (libc)Error Codes.
--* ELNRNG: (libc)Error Codes.
--* ELOOP: (libc)Error Codes.
--* EMEDIUMTYPE: (libc)Error Codes.
--* EMFILE: (libc)Error Codes.
--* EMLINK: (libc)Error Codes.
--* EMSGSIZE: (libc)Error Codes.
--* EMULTIHOP: (libc)Error Codes.
--* ENAMETOOLONG: (libc)Error Codes.
--* ENAVAIL: (libc)Error Codes.
--* ENEEDAUTH: (libc)Error Codes.
--* ENETDOWN: (libc)Error Codes.
--* ENETRESET: (libc)Error Codes.
--* ENETUNREACH: (libc)Error Codes.
--* ENFILE: (libc)Error Codes.
--* ENOANO: (libc)Error Codes.
--* ENOBUFS: (libc)Error Codes.
--* ENOCSI: (libc)Error Codes.
--* ENODATA: (libc)Error Codes.
--* ENODEV: (libc)Error Codes.
--* ENOENT: (libc)Error Codes.
--* ENOEXEC: (libc)Error Codes.
--* ENOLCK: (libc)Error Codes.
--* ENOLINK: (libc)Error Codes.
--* ENOMEDIUM: (libc)Error Codes.
--* ENOMEM: (libc)Error Codes.
--* ENOMSG: (libc)Error Codes.
--* ENONET: (libc)Error Codes.
--* ENOPKG: (libc)Error Codes.
--* ENOPROTOOPT: (libc)Error Codes.
--* ENOSPC: (libc)Error Codes.
--* ENOSR: (libc)Error Codes.
--* ENOSTR: (libc)Error Codes.
--* ENOSYS: (libc)Error Codes.
--* ENOTBLK: (libc)Error Codes.
--* ENOTCONN: (libc)Error Codes.
--* ENOTDIR: (libc)Error Codes.
--* ENOTEMPTY: (libc)Error Codes.
--* ENOTNAM: (libc)Error Codes.
--* ENOTSOCK: (libc)Error Codes.
--* ENOTSUP: (libc)Error Codes.
--* ENOTTY: (libc)Error Codes.
--* ENOTUNIQ: (libc)Error Codes.
--* ENXIO: (libc)Error Codes.
--* EOF: (libc)EOF and Errors.
--* EOPNOTSUPP: (libc)Error Codes.
--* EOVERFLOW: (libc)Error Codes.
--* EPERM: (libc)Error Codes.
--* EPFNOSUPPORT: (libc)Error Codes.
--* EPIPE: (libc)Error Codes.
--* EPROCLIM: (libc)Error Codes.
--* EPROCUNAVAIL: (libc)Error Codes.
--* EPROGMISMATCH: (libc)Error Codes.
--* EPROGUNAVAIL: (libc)Error Codes.
--* EPROTO: (libc)Error Codes.
--* EPROTONOSUPPORT: (libc)Error Codes.
--* EPROTOTYPE: (libc)Error Codes.
--* EQUIV_CLASS_MAX: (libc)Utility Limits.
--* ERANGE: (libc)Error Codes.
--* EREMCHG: (libc)Error Codes.
--* EREMOTE: (libc)Error Codes.
--* EREMOTEIO: (libc)Error Codes.
--* ERESTART: (libc)Error Codes.
--* EROFS: (libc)Error Codes.
--* ERPCMISMATCH: (libc)Error Codes.
--* ESHUTDOWN: (libc)Error Codes.
--* ESOCKTNOSUPPORT: (libc)Error Codes.
--* ESPIPE: (libc)Error Codes.
--* ESRCH: (libc)Error Codes.
--* ESRMNT: (libc)Error Codes.
--* ESTALE: (libc)Error Codes.
--* ESTRPIPE: (libc)Error Codes.
--* ETIME: (libc)Error Codes.
--* ETIMEDOUT: (libc)Error Codes.
--* ETOOMANYREFS: (libc)Error Codes.
--* ETXTBSY: (libc)Error Codes.
--* EUCLEAN: (libc)Error Codes.
--* EUNATCH: (libc)Error Codes.
--* EUSERS: (libc)Error Codes.
--* EWOULDBLOCK: (libc)Error Codes.
--* EXDEV: (libc)Error Codes.
--* EXFULL: (libc)Error Codes.
--* EXIT_FAILURE: (libc)Exit Status.
--* EXIT_SUCCESS: (libc)Exit Status.
--* EXPR_NEST_MAX: (libc)Utility Limits.
--* FD_CLOEXEC: (libc)Descriptor Flags.
--* FD_CLR: (libc)Waiting for I/O.
--* FD_ISSET: (libc)Waiting for I/O.
--* FD_SET: (libc)Waiting for I/O.
--* FD_SETSIZE: (libc)Waiting for I/O.
--* FD_ZERO: (libc)Waiting for I/O.
--* FILENAME_MAX: (libc)Limits for Files.
--* FLUSHO: (libc)Local Modes.
--* FOPEN_MAX: (libc)Opening Streams.
--* FP_ILOGB0: (libc)Exponents and Logarithms.
--* FP_ILOGBNAN: (libc)Exponents and Logarithms.
--* F_DUPFD: (libc)Duplicating Descriptors.
--* F_GETFD: (libc)Descriptor Flags.
--* F_GETFL: (libc)Getting File Status Flags.
--* F_GETLK: (libc)File Locks.
--* F_GETOWN: (libc)Interrupt Input.
--* F_OK: (libc)Testing File Access.
--* F_SETFD: (libc)Descriptor Flags.
--* F_SETFL: (libc)Getting File Status Flags.
--* F_SETLK: (libc)File Locks.
--* F_SETLKW: (libc)File Locks.
--* F_SETOWN: (libc)Interrupt Input.
--* HUGE_VAL: (libc)Math Error Reporting.
--* HUGE_VALF: (libc)Math Error Reporting.
--* HUGE_VALL: (libc)Math Error Reporting.
--* HUPCL: (libc)Control Modes.
--* I: (libc)Complex Numbers.
--* ICANON: (libc)Local Modes.
--* ICRNL: (libc)Input Modes.
--* IEXTEN: (libc)Local Modes.
--* IFNAMSIZ: (libc)Interface Naming.
--* IFTODT: (libc)Directory Entries.
--* IGNBRK: (libc)Input Modes.
--* IGNCR: (libc)Input Modes.
--* IGNPAR: (libc)Input Modes.
--* IMAXBEL: (libc)Input Modes.
--* INADDR_ANY: (libc)Host Address Data Type.
--* INADDR_BROADCAST: (libc)Host Address Data Type.
--* INADDR_LOOPBACK: (libc)Host Address Data Type.
--* INADDR_NONE: (libc)Host Address Data Type.
--* INFINITY: (libc)Infinity and NaN.
--* INLCR: (libc)Input Modes.
--* INPCK: (libc)Input Modes.
--* IPPORT_RESERVED: (libc)Ports.
--* IPPORT_USERRESERVED: (libc)Ports.
--* ISIG: (libc)Local Modes.
--* ISTRIP: (libc)Input Modes.
--* IXANY: (libc)Input Modes.
--* IXOFF: (libc)Input Modes.
--* IXON: (libc)Input Modes.
--* LINE_MAX: (libc)Utility Limits.
--* LINK_MAX: (libc)Limits for Files.
--* L_ctermid: (libc)Identifying the Terminal.
--* L_cuserid: (libc)Who Logged In.
--* L_tmpnam: (libc)Temporary Files.
--* MAXNAMLEN: (libc)Limits for Files.
--* MAXSYMLINKS: (libc)Symbolic Links.
--* MAX_CANON: (libc)Limits for Files.
--* MAX_INPUT: (libc)Limits for Files.
--* MB_CUR_MAX: (libc)Selecting the Conversion.
--* MB_LEN_MAX: (libc)Selecting the Conversion.
--* MDMBUF: (libc)Control Modes.
--* MSG_DONTROUTE: (libc)Socket Data Options.
--* MSG_OOB: (libc)Socket Data Options.
--* MSG_PEEK: (libc)Socket Data Options.
--* NAME_MAX: (libc)Limits for Files.
--* NAN: (libc)Infinity and NaN.
--* NCCS: (libc)Mode Data Types.
--* NGROUPS_MAX: (libc)General Limits.
--* NOFLSH: (libc)Local Modes.
--* NOKERNINFO: (libc)Local Modes.
--* NSIG: (libc)Standard Signals.
--* NULL: (libc)Null Pointer Constant.
--* ONLCR: (libc)Output Modes.
--* ONOEOT: (libc)Output Modes.
--* OPEN_MAX: (libc)General Limits.
--* OPOST: (libc)Output Modes.
--* OXTABS: (libc)Output Modes.
--* O_ACCMODE: (libc)Access Modes.
--* O_APPEND: (libc)Operating Modes.
--* O_ASYNC: (libc)Operating Modes.
--* O_CREAT: (libc)Open-time Flags.
--* O_EXCL: (libc)Open-time Flags.
--* O_EXEC: (libc)Access Modes.
--* O_EXLOCK: (libc)Open-time Flags.
--* O_FSYNC: (libc)Operating Modes.
--* O_IGNORE_CTTY: (libc)Open-time Flags.
--* O_NDELAY: (libc)Operating Modes.
--* O_NOATIME: (libc)Operating Modes.
--* O_NOCTTY: (libc)Open-time Flags.
--* O_NOLINK: (libc)Open-time Flags.
--* O_NONBLOCK: (libc)Open-time Flags.
--* O_NONBLOCK: (libc)Operating Modes.
--* O_NOTRANS: (libc)Open-time Flags.
--* O_RDONLY: (libc)Access Modes.
--* O_RDWR: (libc)Access Modes.
--* O_READ: (libc)Access Modes.
--* O_SHLOCK: (libc)Open-time Flags.
--* O_SYNC: (libc)Operating Modes.
--* O_TRUNC: (libc)Open-time Flags.
--* O_WRITE: (libc)Access Modes.
--* O_WRONLY: (libc)Access Modes.
--* PARENB: (libc)Control Modes.
--* PARMRK: (libc)Input Modes.
--* PARODD: (libc)Control Modes.
--* PATH_MAX: (libc)Limits for Files.
--* PA_FLAG_MASK: (libc)Parsing a Template String.
--* PENDIN: (libc)Local Modes.
--* PF_FILE: (libc)Local Namespace Details.
--* PF_INET6: (libc)Internet Namespace.
--* PF_INET: (libc)Internet Namespace.
--* PF_LOCAL: (libc)Local Namespace Details.
--* PF_UNIX: (libc)Local Namespace Details.
--* PIPE_BUF: (libc)Limits for Files.
--* P_tmpdir: (libc)Temporary Files.
--* RAND_MAX: (libc)ISO Random.
--* RE_DUP_MAX: (libc)General Limits.
--* RLIM_INFINITY: (libc)Limits on Resources.
--* R_OK: (libc)Testing File Access.
--* SA_NOCLDSTOP: (libc)Flags for Sigaction.
--* SA_ONSTACK: (libc)Flags for Sigaction.
--* SA_RESTART: (libc)Flags for Sigaction.
--* SEEK_CUR: (libc)File Positioning.
--* SEEK_END: (libc)File Positioning.
--* SEEK_SET: (libc)File Positioning.
--* SIGABRT: (libc)Program Error Signals.
--* SIGALRM: (libc)Alarm Signals.
--* SIGBUS: (libc)Program Error Signals.
--* SIGCHLD: (libc)Job Control Signals.
--* SIGCLD: (libc)Job Control Signals.
--* SIGCONT: (libc)Job Control Signals.
--* SIGEMT: (libc)Program Error Signals.
--* SIGFPE: (libc)Program Error Signals.
--* SIGHUP: (libc)Termination Signals.
--* SIGILL: (libc)Program Error Signals.
--* SIGINFO: (libc)Miscellaneous Signals.
--* SIGINT: (libc)Termination Signals.
--* SIGIO: (libc)Asynchronous I/O Signals.
--* SIGIOT: (libc)Program Error Signals.
--* SIGKILL: (libc)Termination Signals.
--* SIGLOST: (libc)Operation Error Signals.
--* SIGPIPE: (libc)Operation Error Signals.
--* SIGPOLL: (libc)Asynchronous I/O Signals.
--* SIGPROF: (libc)Alarm Signals.
--* SIGQUIT: (libc)Termination Signals.
--* SIGSEGV: (libc)Program Error Signals.
--* SIGSTOP: (libc)Job Control Signals.
--* SIGSYS: (libc)Program Error Signals.
--* SIGTERM: (libc)Termination Signals.
--* SIGTRAP: (libc)Program Error Signals.
--* SIGTSTP: (libc)Job Control Signals.
--* SIGTTIN: (libc)Job Control Signals.
--* SIGTTOU: (libc)Job Control Signals.
--* SIGURG: (libc)Asynchronous I/O Signals.
--* SIGUSR1: (libc)Miscellaneous Signals.
--* SIGUSR2: (libc)Miscellaneous Signals.
--* SIGVTALRM: (libc)Alarm Signals.
--* SIGWINCH: (libc)Miscellaneous Signals.
--* SIGXCPU: (libc)Operation Error Signals.
--* SIGXFSZ: (libc)Operation Error Signals.
--* SIG_ERR: (libc)Basic Signal Handling.
--* SOCK_DGRAM: (libc)Communication Styles.
--* SOCK_RAW: (libc)Communication Styles.
--* SOCK_RDM: (libc)Communication Styles.
--* SOCK_SEQPACKET: (libc)Communication Styles.
--* SOCK_STREAM: (libc)Communication Styles.
--* SOL_SOCKET: (libc)Socket-Level Options.
--* SSIZE_MAX: (libc)General Limits.
--* STREAM_MAX: (libc)General Limits.
--* SUN_LEN: (libc)Local Namespace Details.
--* SV_INTERRUPT: (libc)BSD Handler.
--* SV_ONSTACK: (libc)BSD Handler.
--* SV_RESETHAND: (libc)BSD Handler.
--* S_IFMT: (libc)Testing File Type.
--* S_ISBLK: (libc)Testing File Type.
--* S_ISCHR: (libc)Testing File Type.
--* S_ISDIR: (libc)Testing File Type.
--* S_ISFIFO: (libc)Testing File Type.
--* S_ISLNK: (libc)Testing File Type.
--* S_ISREG: (libc)Testing File Type.
--* S_ISSOCK: (libc)Testing File Type.
--* S_TYPEISMQ: (libc)Testing File Type.
--* S_TYPEISSEM: (libc)Testing File Type.
--* S_TYPEISSHM: (libc)Testing File Type.
--* TMP_MAX: (libc)Temporary Files.
--* TOSTOP: (libc)Local Modes.
--* TZNAME_MAX: (libc)General Limits.
--* VDISCARD: (libc)Other Special.
--* VDSUSP: (libc)Signal Characters.
--* VEOF: (libc)Editing Characters.
--* VEOL2: (libc)Editing Characters.
--* VEOL: (libc)Editing Characters.
--* VERASE: (libc)Editing Characters.
--* VINTR: (libc)Signal Characters.
--* VKILL: (libc)Editing Characters.
--* VLNEXT: (libc)Other Special.
--* VMIN: (libc)Noncanonical Input.
--* VQUIT: (libc)Signal Characters.
--* VREPRINT: (libc)Editing Characters.
--* VSTART: (libc)Start/Stop Characters.
--* VSTATUS: (libc)Other Special.
--* VSTOP: (libc)Start/Stop Characters.
--* VSUSP: (libc)Signal Characters.
--* VTIME: (libc)Noncanonical Input.
--* VWERASE: (libc)Editing Characters.
--* WCHAR_MAX: (libc)Extended Char Intro.
--* WCHAR_MIN: (libc)Extended Char Intro.
--* WCOREDUMP: (libc)Process Completion Status.
--* WEOF: (libc)EOF and Errors.
--* WEOF: (libc)Extended Char Intro.
--* WEXITSTATUS: (libc)Process Completion Status.
--* WIFEXITED: (libc)Process Completion Status.
--* WIFSIGNALED: (libc)Process Completion Status.
--* WIFSTOPPED: (libc)Process Completion Status.
--* WSTOPSIG: (libc)Process Completion Status.
--* WTERMSIG: (libc)Process Completion Status.
--* W_OK: (libc)Testing File Access.
--* X_OK: (libc)Testing File Access.
--* _Complex_I: (libc)Complex Numbers.
--* _Exit: (libc)Termination Internals.
--* _IOFBF: (libc)Controlling Buffering.
--* _IOLBF: (libc)Controlling Buffering.
--* _IONBF: (libc)Controlling Buffering.
--* _Imaginary_I: (libc)Complex Numbers.
--* _PATH_UTMP: (libc)Manipulating the Database.
--* _PATH_WTMP: (libc)Manipulating the Database.
--* _POSIX2_C_DEV: (libc)System Options.
--* _POSIX2_C_VERSION: (libc)Version Supported.
--* _POSIX2_FORT_DEV: (libc)System Options.
--* _POSIX2_FORT_RUN: (libc)System Options.
--* _POSIX2_LOCALEDEF: (libc)System Options.
--* _POSIX2_SW_DEV: (libc)System Options.
--* _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
--* _POSIX_JOB_CONTROL: (libc)System Options.
--* _POSIX_NO_TRUNC: (libc)Options for Files.
--* _POSIX_SAVED_IDS: (libc)System Options.
--* _POSIX_VDISABLE: (libc)Options for Files.
--* _POSIX_VERSION: (libc)Version Supported.
--* __fbufsize: (libc)Controlling Buffering.
--* __flbf: (libc)Controlling Buffering.
--* __fpending: (libc)Controlling Buffering.
--* __fpurge: (libc)Flushing Buffers.
--* __freadable: (libc)Opening Streams.
--* __freading: (libc)Opening Streams.
--* __fsetlocking: (libc)Streams and Threads.
--* __fwritable: (libc)Opening Streams.
--* __fwriting: (libc)Opening Streams.
--* __va_copy: (libc)Argument Macros.
--* _exit: (libc)Termination Internals.
--* _flushlbf: (libc)Flushing Buffers.
--* _tolower: (libc)Case Conversion.
--* _toupper: (libc)Case Conversion.
--* a64l: (libc)Encode Binary Data.
--* abort: (libc)Aborting a Program.
--* abs: (libc)Absolute Value.
--* accept: (libc)Accepting Connections.
--* access: (libc)Testing File Access.
--* acos: (libc)Inverse Trig Functions.
--* acosf: (libc)Inverse Trig Functions.
--* acosh: (libc)Hyperbolic Functions.
--* acoshf: (libc)Hyperbolic Functions.
--* acoshl: (libc)Hyperbolic Functions.
--* acosl: (libc)Inverse Trig Functions.
--* addmntent: (libc)mtab.
--* addseverity: (libc)Adding Severity Classes.
--* adjtime: (libc)High-Resolution Calendar.
--* adjtimex: (libc)High-Resolution Calendar.
--* aio_cancel64: (libc)Cancel AIO Operations.
--* aio_cancel: (libc)Cancel AIO Operations.
--* aio_error64: (libc)Status of AIO Operations.
--* aio_error: (libc)Status of AIO Operations.
--* aio_fsync64: (libc)Synchronizing AIO Operations.
--* aio_fsync: (libc)Synchronizing AIO Operations.
--* aio_init: (libc)Configuration of AIO.
--* aio_read64: (libc)Asynchronous Reads/Writes.
--* aio_read: (libc)Asynchronous Reads/Writes.
--* aio_return64: (libc)Status of AIO Operations.
--* aio_return: (libc)Status of AIO Operations.
--* aio_suspend64: (libc)Synchronizing AIO Operations.
--* aio_suspend: (libc)Synchronizing AIO Operations.
--* aio_write64: (libc)Asynchronous Reads/Writes.
--* aio_write: (libc)Asynchronous Reads/Writes.
--* alarm: (libc)Setting an Alarm.
--* alloca: (libc)Variable Size Automatic.
--* alphasort64: (libc)Scanning Directory Content.
--* alphasort: (libc)Scanning Directory Content.
--* argp_error: (libc)Argp Helper Functions.
--* argp_failure: (libc)Argp Helper Functions.
--* argp_help: (libc)Argp Help.
--* argp_parse: (libc)Argp.
--* argp_state_help: (libc)Argp Helper Functions.
--* argp_usage: (libc)Argp Helper Functions.
--* argz_add: (libc)Argz Functions.
--* argz_add_sep: (libc)Argz Functions.
--* argz_append: (libc)Argz Functions.
--* argz_count: (libc)Argz Functions.
--* argz_create: (libc)Argz Functions.
--* argz_create_sep: (libc)Argz Functions.
--* argz_delete: (libc)Argz Functions.
--* argz_extract: (libc)Argz Functions.
--* argz_insert: (libc)Argz Functions.
--* argz_next: (libc)Argz Functions.
--* argz_replace: (libc)Argz Functions.
--* argz_stringify: (libc)Argz Functions.
--* asctime: (libc)Formatting Calendar Time.
--* asctime_r: (libc)Formatting Calendar Time.
--* asin: (libc)Inverse Trig Functions.
--* asinf: (libc)Inverse Trig Functions.
--* asinh: (libc)Hyperbolic Functions.
--* asinhf: (libc)Hyperbolic Functions.
--* asinhl: (libc)Hyperbolic Functions.
--* asinl: (libc)Inverse Trig Functions.
--* asprintf: (libc)Dynamic Output.
--* assert: (libc)Consistency Checking.
--* assert_perror: (libc)Consistency Checking.
--* atan2: (libc)Inverse Trig Functions.
--* atan2f: (libc)Inverse Trig Functions.
--* atan2l: (libc)Inverse Trig Functions.
--* atan: (libc)Inverse Trig Functions.
--* atanf: (libc)Inverse Trig Functions.
--* atanh: (libc)Hyperbolic Functions.
--* atanhf: (libc)Hyperbolic Functions.
--* atanhl: (libc)Hyperbolic Functions.
--* atanl: (libc)Inverse Trig Functions.
--* atexit: (libc)Cleanups on Exit.
--* atof: (libc)Parsing of Floats.
--* atoi: (libc)Parsing of Integers.
--* atol: (libc)Parsing of Integers.
--* atoll: (libc)Parsing of Integers.
--* backtrace: (libc)Backtraces.
--* backtrace_symbols: (libc)Backtraces.
--* backtrace_symbols_fd: (libc)Backtraces.
--* basename: (libc)Finding Tokens in a String.
--* basename: (libc)Finding Tokens in a String.
--* bcmp: (libc)String/Array Comparison.
--* bcopy: (libc)Copying and Concatenation.
--* bind: (libc)Setting Address.
--* bind_textdomain_codeset: (libc)Charset conversion in gettext.
--* bindtextdomain: (libc)Locating gettext catalog.
--* brk: (libc)Resizing the Data Segment.
--* bsearch: (libc)Array Search Function.
--* btowc: (libc)Converting a Character.
--* bzero: (libc)Copying and Concatenation.
--* cabs: (libc)Absolute Value.
--* cabsf: (libc)Absolute Value.
--* cabsl: (libc)Absolute Value.
--* cacos: (libc)Inverse Trig Functions.
--* cacosf: (libc)Inverse Trig Functions.
--* cacosh: (libc)Hyperbolic Functions.
--* cacoshf: (libc)Hyperbolic Functions.
--* cacoshl: (libc)Hyperbolic Functions.
--* cacosl: (libc)Inverse Trig Functions.
--* calloc: (libc)Allocating Cleared Space.
--* canonicalize_file_name: (libc)Symbolic Links.
--* carg: (libc)Operations on Complex.
--* cargf: (libc)Operations on Complex.
--* cargl: (libc)Operations on Complex.
--* casin: (libc)Inverse Trig Functions.
--* casinf: (libc)Inverse Trig Functions.
--* casinh: (libc)Hyperbolic Functions.
--* casinhf: (libc)Hyperbolic Functions.
--* casinhl: (libc)Hyperbolic Functions.
--* casinl: (libc)Inverse Trig Functions.
--* catan: (libc)Inverse Trig Functions.
--* catanf: (libc)Inverse Trig Functions.
--* catanh: (libc)Hyperbolic Functions.
--* catanhf: (libc)Hyperbolic Functions.
--* catanhl: (libc)Hyperbolic Functions.
--* catanl: (libc)Inverse Trig Functions.
--* catclose: (libc)The catgets Functions.
--* catgets: (libc)The catgets Functions.
--* catopen: (libc)The catgets Functions.
--* cbc_crypt: (libc)DES Encryption.
--* cbrt: (libc)Exponents and Logarithms.
--* cbrtf: (libc)Exponents and Logarithms.
--* cbrtl: (libc)Exponents and Logarithms.
--* ccos: (libc)Trig Functions.
--* ccosf: (libc)Trig Functions.
--* ccosh: (libc)Hyperbolic Functions.
--* ccoshf: (libc)Hyperbolic Functions.
--* ccoshl: (libc)Hyperbolic Functions.
--* ccosl: (libc)Trig Functions.
--* ceil: (libc)Rounding Functions.
--* ceilf: (libc)Rounding Functions.
--* ceill: (libc)Rounding Functions.
--* cexp: (libc)Exponents and Logarithms.
--* cexpf: (libc)Exponents and Logarithms.
--* cexpl: (libc)Exponents and Logarithms.
--* cfgetispeed: (libc)Line Speed.
--* cfgetospeed: (libc)Line Speed.
--* cfmakeraw: (libc)Noncanonical Input.
--* cfree: (libc)Freeing after Malloc.
--* cfsetispeed: (libc)Line Speed.
--* cfsetospeed: (libc)Line Speed.
--* cfsetspeed: (libc)Line Speed.
--* chdir: (libc)Working Directory.
--* chmod: (libc)Setting Permissions.
--* chown: (libc)File Owner.
--* cimag: (libc)Operations on Complex.
--* cimagf: (libc)Operations on Complex.
--* cimagl: (libc)Operations on Complex.
--* clearenv: (libc)Environment Access.
--* clearerr: (libc)Error Recovery.
--* clearerr_unlocked: (libc)Error Recovery.
--* clock: (libc)CPU Time.
--* clog10: (libc)Exponents and Logarithms.
--* clog10f: (libc)Exponents and Logarithms.
--* clog10l: (libc)Exponents and Logarithms.
--* clog: (libc)Exponents and Logarithms.
--* clogf: (libc)Exponents and Logarithms.
--* clogl: (libc)Exponents and Logarithms.
--* close: (libc)Opening and Closing Files.
--* closedir: (libc)Reading/Closing Directory.
--* closelog: (libc)closelog.
--* confstr: (libc)String Parameters.
--* conj: (libc)Operations on Complex.
--* conjf: (libc)Operations on Complex.
--* conjl: (libc)Operations on Complex.
--* connect: (libc)Connecting.
--* copysign: (libc)FP Bit Twiddling.
--* copysignf: (libc)FP Bit Twiddling.
--* copysignl: (libc)FP Bit Twiddling.
--* cos: (libc)Trig Functions.
--* cosf: (libc)Trig Functions.
--* cosh: (libc)Hyperbolic Functions.
--* coshf: (libc)Hyperbolic Functions.
--* coshl: (libc)Hyperbolic Functions.
--* cosl: (libc)Trig Functions.
--* cpow: (libc)Exponents and Logarithms.
--* cpowf: (libc)Exponents and Logarithms.
--* cpowl: (libc)Exponents and Logarithms.
--* cproj: (libc)Operations on Complex.
--* cprojf: (libc)Operations on Complex.
--* cprojl: (libc)Operations on Complex.
--* creal: (libc)Operations on Complex.
--* crealf: (libc)Operations on Complex.
--* creall: (libc)Operations on Complex.
--* creat64: (libc)Opening and Closing Files.
--* creat: (libc)Opening and Closing Files.
--* crypt: (libc)crypt.
--* crypt_r: (libc)crypt.
--* csin: (libc)Trig Functions.
--* csinf: (libc)Trig Functions.
--* csinh: (libc)Hyperbolic Functions.
--* csinhf: (libc)Hyperbolic Functions.
--* csinhl: (libc)Hyperbolic Functions.
--* csinl: (libc)Trig Functions.
--* csqrt: (libc)Exponents and Logarithms.
--* csqrtf: (libc)Exponents and Logarithms.
--* csqrtl: (libc)Exponents and Logarithms.
--* ctan: (libc)Trig Functions.
--* ctanf: (libc)Trig Functions.
--* ctanh: (libc)Hyperbolic Functions.
--* ctanhf: (libc)Hyperbolic Functions.
--* ctanhl: (libc)Hyperbolic Functions.
--* ctanl: (libc)Trig Functions.
--* ctermid: (libc)Identifying the Terminal.
--* ctime: (libc)Formatting Calendar Time.
--* ctime_r: (libc)Formatting Calendar Time.
--* cuserid: (libc)Who Logged In.
--* dcgettext: (libc)Translation with gettext.
--* dcngettext: (libc)Advanced gettext functions.
--* des_setparity: (libc)DES Encryption.
--* dgettext: (libc)Translation with gettext.
--* difftime: (libc)Elapsed Time.
--* dirfd: (libc)Opening a Directory.
--* dirname: (libc)Finding Tokens in a String.
--* div: (libc)Integer Division.
--* dngettext: (libc)Advanced gettext functions.
--* drand48: (libc)SVID Random.
--* drand48_r: (libc)SVID Random.
--* drem: (libc)Remainder Functions.
--* dremf: (libc)Remainder Functions.
--* dreml: (libc)Remainder Functions.
--* dup2: (libc)Duplicating Descriptors.
--* dup: (libc)Duplicating Descriptors.
--* ecb_crypt: (libc)DES Encryption.
--* ecvt: (libc)System V Number Conversion.
--* ecvt_r: (libc)System V Number Conversion.
--* encrypt: (libc)DES Encryption.
--* encrypt_r: (libc)DES Encryption.
--* endfsent: (libc)fstab.
--* endgrent: (libc)Scanning All Groups.
--* endhostent: (libc)Host Names.
--* endmntent: (libc)mtab.
--* endnetent: (libc)Networks Database.
--* endnetgrent: (libc)Lookup Netgroup.
--* endprotoent: (libc)Protocols Database.
--* endpwent: (libc)Scanning All Users.
--* endservent: (libc)Services Database.
--* endutent: (libc)Manipulating the Database.
--* endutxent: (libc)XPG Functions.
--* envz_add: (libc)Envz Functions.
--* envz_entry: (libc)Envz Functions.
--* envz_get: (libc)Envz Functions.
--* envz_merge: (libc)Envz Functions.
--* envz_strip: (libc)Envz Functions.
--* erand48: (libc)SVID Random.
--* erand48_r: (libc)SVID Random.
--* erf: (libc)Special Functions.
--* erfc: (libc)Special Functions.
--* erfcf: (libc)Special Functions.
--* erfcl: (libc)Special Functions.
--* erff: (libc)Special Functions.
--* erfl: (libc)Special Functions.
--* err: (libc)Error Messages.
--* errno: (libc)Checking for Errors.
--* error: (libc)Error Messages.
--* error_at_line: (libc)Error Messages.
--* errx: (libc)Error Messages.
--* execl: (libc)Executing a File.
--* execle: (libc)Executing a File.
--* execlp: (libc)Executing a File.
--* execv: (libc)Executing a File.
--* execve: (libc)Executing a File.
--* execvp: (libc)Executing a File.
--* exit: (libc)Normal Termination.
--* exp10: (libc)Exponents and Logarithms.
--* exp10f: (libc)Exponents and Logarithms.
--* exp10l: (libc)Exponents and Logarithms.
--* exp2: (libc)Exponents and Logarithms.
--* exp2f: (libc)Exponents and Logarithms.
--* exp2l: (libc)Exponents and Logarithms.
--* exp: (libc)Exponents and Logarithms.
--* expf: (libc)Exponents and Logarithms.
--* expl: (libc)Exponents and Logarithms.
--* expm1: (libc)Exponents and Logarithms.
--* expm1f: (libc)Exponents and Logarithms.
--* expm1l: (libc)Exponents and Logarithms.
--* fabs: (libc)Absolute Value.
--* fabsf: (libc)Absolute Value.
--* fabsl: (libc)Absolute Value.
--* fchdir: (libc)Working Directory.
--* fchmod: (libc)Setting Permissions.
--* fchown: (libc)File Owner.
--* fclean: (libc)Cleaning Streams.
--* fclose: (libc)Closing Streams.
--* fcloseall: (libc)Closing Streams.
--* fcntl: (libc)Control Operations.
--* fcvt: (libc)System V Number Conversion.
--* fcvt_r: (libc)System V Number Conversion.
--* fdatasync: (libc)Synchronizing I/O.
--* fdim: (libc)Misc FP Arithmetic.
--* fdimf: (libc)Misc FP Arithmetic.
--* fdiml: (libc)Misc FP Arithmetic.
--* fdopen: (libc)Descriptors and Streams.
--* feclearexcept: (libc)Status bit operations.
--* fedisableexcept: (libc)Control Functions.
--* feenableexcept: (libc)Control Functions.
--* fegetenv: (libc)Control Functions.
--* fegetexcept: (libc)Control Functions.
--* fegetexceptflag: (libc)Status bit operations.
--* fegetround: (libc)Rounding.
--* feholdexcept: (libc)Control Functions.
--* feof: (libc)EOF and Errors.
--* feof_unlocked: (libc)EOF and Errors.
--* feraiseexcept: (libc)Status bit operations.
--* ferror: (libc)EOF and Errors.
--* ferror_unlocked: (libc)EOF and Errors.
--* fesetenv: (libc)Control Functions.
--* fesetexceptflag: (libc)Status bit operations.
--* fesetround: (libc)Rounding.
--* fetestexcept: (libc)Status bit operations.
--* feupdateenv: (libc)Control Functions.
--* fflush: (libc)Flushing Buffers.
--* fflush_unlocked: (libc)Flushing Buffers.
--* fgetc: (libc)Character Input.
--* fgetc_unlocked: (libc)Character Input.
--* fgetgrent: (libc)Scanning All Groups.
--* fgetgrent_r: (libc)Scanning All Groups.
--* fgetpos64: (libc)Portable Positioning.
--* fgetpos: (libc)Portable Positioning.
--* fgetpwent: (libc)Scanning All Users.
--* fgetpwent_r: (libc)Scanning All Users.
--* fgets: (libc)Line Input.
--* fgets_unlocked: (libc)Line Input.
--* fgetwc: (libc)Character Input.
--* fgetwc_unlocked: (libc)Character Input.
--* fgetws: (libc)Line Input.
--* fgetws_unlocked: (libc)Line Input.
--* fileno: (libc)Descriptors and Streams.
--* fileno_unlocked: (libc)Descriptors and Streams.
--* finite: (libc)Floating Point Classes.
--* finitef: (libc)Floating Point Classes.
--* finitel: (libc)Floating Point Classes.
--* flockfile: (libc)Streams and Threads.
--* floor: (libc)Rounding Functions.
--* floorf: (libc)Rounding Functions.
--* floorl: (libc)Rounding Functions.
--* fma: (libc)Misc FP Arithmetic.
--* fmaf: (libc)Misc FP Arithmetic.
--* fmal: (libc)Misc FP Arithmetic.
--* fmax: (libc)Misc FP Arithmetic.
--* fmaxf: (libc)Misc FP Arithmetic.
--* fmaxl: (libc)Misc FP Arithmetic.
--* fmemopen: (libc)String Streams.
--* fmin: (libc)Misc FP Arithmetic.
--* fminf: (libc)Misc FP Arithmetic.
--* fminl: (libc)Misc FP Arithmetic.
--* fmod: (libc)Remainder Functions.
--* fmodf: (libc)Remainder Functions.
--* fmodl: (libc)Remainder Functions.
--* fmtmsg: (libc)Printing Formatted Messages.
--* fnmatch: (libc)Wildcard Matching.
--* fopen64: (libc)Opening Streams.
--* fopen: (libc)Opening Streams.
--* fopencookie: (libc)Streams and Cookies.
--* fork: (libc)Creating a Process.
--* forkpty: (libc)Pseudo-Terminal Pairs.
--* fpathconf: (libc)Pathconf.
--* fpclassify: (libc)Floating Point Classes.
--* fprintf: (libc)Formatted Output Functions.
--* fputc: (libc)Simple Output.
--* fputc_unlocked: (libc)Simple Output.
--* fputs: (libc)Simple Output.
--* fputs_unlocked: (libc)Simple Output.
--* fputwc: (libc)Simple Output.
--* fputwc_unlocked: (libc)Simple Output.
--* fputws: (libc)Simple Output.
--* fputws_unlocked: (libc)Simple Output.
--* fread: (libc)Block Input/Output.
--* fread_unlocked: (libc)Block Input/Output.
--* free: (libc)Freeing after Malloc.
--* freopen64: (libc)Opening Streams.
--* freopen: (libc)Opening Streams.
--* frexp: (libc)Normalization Functions.
--* frexpf: (libc)Normalization Functions.
--* frexpl: (libc)Normalization Functions.
--* fscanf: (libc)Formatted Input Functions.
--* fseek: (libc)File Positioning.
--* fseeko64: (libc)File Positioning.
--* fseeko: (libc)File Positioning.
--* fsetpos64: (libc)Portable Positioning.
--* fsetpos: (libc)Portable Positioning.
--* fstat64: (libc)Reading Attributes.
--* fstat: (libc)Reading Attributes.
--* fsync: (libc)Synchronizing I/O.
--* ftell: (libc)File Positioning.
--* ftello64: (libc)File Positioning.
--* ftello: (libc)File Positioning.
--* ftruncate64: (libc)File Size.
--* ftruncate: (libc)File Size.
--* ftrylockfile: (libc)Streams and Threads.
--* ftw64: (libc)Working with Directory Trees.
--* ftw: (libc)Working with Directory Trees.
--* funlockfile: (libc)Streams and Threads.
--* futimes: (libc)File Times.
--* fwide: (libc)Streams and I18N.
--* fwprintf: (libc)Formatted Output Functions.
--* fwrite: (libc)Block Input/Output.
--* fwrite_unlocked: (libc)Block Input/Output.
--* fwscanf: (libc)Formatted Input Functions.
--* gamma: (libc)Special Functions.
--* gammaf: (libc)Special Functions.
--* gammal: (libc)Special Functions.
--* gcvt: (libc)System V Number Conversion.
--* get_avphys_pages: (libc)Query Memory Parameters.
--* get_current_dir_name: (libc)Working Directory.
--* get_nprocs: (libc)Processor Resources.
--* get_nprocs_conf: (libc)Processor Resources.
--* get_phys_pages: (libc)Query Memory Parameters.
--* getc: (libc)Character Input.
--* getc_unlocked: (libc)Character Input.
--* getchar: (libc)Character Input.
--* getchar_unlocked: (libc)Character Input.
--* getcontext: (libc)System V contexts.
--* getcwd: (libc)Working Directory.
--* getdate: (libc)General Time String Parsing.
--* getdate_r: (libc)General Time String Parsing.
--* getdelim: (libc)Line Input.
--* getdomainnname: (libc)Host Identification.
--* getegid: (libc)Reading Persona.
--* getenv: (libc)Environment Access.
--* geteuid: (libc)Reading Persona.
--* getfsent: (libc)fstab.
--* getfsfile: (libc)fstab.
--* getfsspec: (libc)fstab.
--* getgid: (libc)Reading Persona.
--* getgrent: (libc)Scanning All Groups.
--* getgrent_r: (libc)Scanning All Groups.
--* getgrgid: (libc)Lookup Group.
--* getgrgid_r: (libc)Lookup Group.
--* getgrnam: (libc)Lookup Group.
--* getgrnam_r: (libc)Lookup Group.
--* getgrouplist: (libc)Setting Groups.
--* getgroups: (libc)Reading Persona.
--* gethostbyaddr: (libc)Host Names.
--* gethostbyaddr_r: (libc)Host Names.
--* gethostbyname2: (libc)Host Names.
--* gethostbyname2_r: (libc)Host Names.
--* gethostbyname: (libc)Host Names.
--* gethostbyname_r: (libc)Host Names.
--* gethostent: (libc)Host Names.
--* gethostid: (libc)Host Identification.
--* gethostname: (libc)Host Identification.
--* getitimer: (libc)Setting an Alarm.
--* getline: (libc)Line Input.
--* getloadavg: (libc)Processor Resources.
--* getlogin: (libc)Who Logged In.
--* getmntent: (libc)mtab.
--* getmntent_r: (libc)mtab.
--* getnetbyaddr: (libc)Networks Database.
--* getnetbyname: (libc)Networks Database.
--* getnetent: (libc)Networks Database.
--* getnetgrent: (libc)Lookup Netgroup.
--* getnetgrent_r: (libc)Lookup Netgroup.
--* getopt: (libc)Using Getopt.
--* getopt_long: (libc)Getopt Long Options.
--* getopt_long_only: (libc)Getopt Long Options.
--* getpagesize: (libc)Query Memory Parameters.
--* getpass: (libc)getpass.
--* getpeername: (libc)Who is Connected.
--* getpgid: (libc)Process Group Functions.
--* getpgrp: (libc)Process Group Functions.
--* getpgrp: (libc)Process Group Functions.
--* getpid: (libc)Process Identification.
--* getppid: (libc)Process Identification.
--* getpriority: (libc)Traditional Scheduling Functions.
--* getprotobyname: (libc)Protocols Database.
--* getprotobynumber: (libc)Protocols Database.
--* getprotoent: (libc)Protocols Database.
--* getpt: (libc)Allocation.
--* getpwent: (libc)Scanning All Users.
--* getpwent_r: (libc)Scanning All Users.
--* getpwnam: (libc)Lookup User.
--* getpwnam_r: (libc)Lookup User.
--* getpwuid: (libc)Lookup User.
--* getpwuid_r: (libc)Lookup User.
--* getrlimit64: (libc)Limits on Resources.
--* getrlimit: (libc)Limits on Resources.
--* getrusage: (libc)Resource Usage.
--* gets: (libc)Line Input.
--* getservbyname: (libc)Services Database.
--* getservbyport: (libc)Services Database.
--* getservent: (libc)Services Database.
--* getsid: (libc)Process Group Functions.
--* getsockname: (libc)Reading Address.
--* getsockopt: (libc)Socket Option Functions.
--* getsubopt: (libc)Suboptions.
--* gettext: (libc)Translation with gettext.
--* gettimeofday: (libc)High-Resolution Calendar.
--* getuid: (libc)Reading Persona.
--* getumask: (libc)Setting Permissions.
--* getutent: (libc)Manipulating the Database.
--* getutent_r: (libc)Manipulating the Database.
--* getutid: (libc)Manipulating the Database.
--* getutid_r: (libc)Manipulating the Database.
--* getutline: (libc)Manipulating the Database.
--* getutline_r: (libc)Manipulating the Database.
--* getutmp: (libc)XPG Functions.
--* getutmpx: (libc)XPG Functions.
--* getutxent: (libc)XPG Functions.
--* getutxid: (libc)XPG Functions.
--* getutxline: (libc)XPG Functions.
--* getw: (libc)Character Input.
--* getwc: (libc)Character Input.
--* getwc_unlocked: (libc)Character Input.
--* getwchar: (libc)Character Input.
--* getwchar_unlocked: (libc)Character Input.
--* getwd: (libc)Working Directory.
--* glob64: (libc)Calling Glob.
--* glob: (libc)Calling Glob.
--* globfree64: (libc)More Flags for Globbing.
--* globfree: (libc)More Flags for Globbing.
--* gmtime: (libc)Broken-down Time.
--* gmtime_r: (libc)Broken-down Time.
--* grantpt: (libc)Allocation.
--* gsignal: (libc)Signaling Yourself.
--* gtty: (libc)BSD Terminal Modes.
--* hasmntopt: (libc)mtab.
--* hcreate: (libc)Hash Search Function.
--* hcreate_r: (libc)Hash Search Function.
--* hdestroy: (libc)Hash Search Function.
--* hdestroy_r: (libc)Hash Search Function.
--* hsearch: (libc)Hash Search Function.
--* hsearch_r: (libc)Hash Search Function.
--* htonl: (libc)Byte Order.
--* htons: (libc)Byte Order.
--* hypot: (libc)Exponents and Logarithms.
--* hypotf: (libc)Exponents and Logarithms.
--* hypotl: (libc)Exponents and Logarithms.
--* iconv: (libc)Generic Conversion Interface.
--* iconv_close: (libc)Generic Conversion Interface.
--* iconv_open: (libc)Generic Conversion Interface.
--* if_freenameindex: (libc)Interface Naming.
--* if_indextoname: (libc)Interface Naming.
--* if_nameindex: (libc)Interface Naming.
--* if_nametoindex: (libc)Interface Naming.
--* ilogb: (libc)Exponents and Logarithms.
--* ilogbf: (libc)Exponents and Logarithms.
--* ilogbl: (libc)Exponents and Logarithms.
--* imaxabs: (libc)Absolute Value.
--* imaxdiv: (libc)Integer Division.
--* in6addr_any: (libc)Host Address Data Type.
--* in6addr_loopback: (libc)Host Address Data Type.
--* index: (libc)Search Functions.
--* inet_addr: (libc)Host Address Functions.
--* inet_aton: (libc)Host Address Functions.
--* inet_lnaof: (libc)Host Address Functions.
--* inet_makeaddr: (libc)Host Address Functions.
--* inet_netof: (libc)Host Address Functions.
--* inet_network: (libc)Host Address Functions.
--* inet_ntoa: (libc)Host Address Functions.
--* inet_ntop: (libc)Host Address Functions.
--* inet_pton: (libc)Host Address Functions.
--* initgroups: (libc)Setting Groups.
--* initstate: (libc)BSD Random.
--* initstate_r: (libc)BSD Random.
--* innetgr: (libc)Netgroup Membership.
--* ioctl: (libc)IOCTLs.
--* isalnum: (libc)Classification of Characters.
--* isalpha: (libc)Classification of Characters.
--* isascii: (libc)Classification of Characters.
--* isatty: (libc)Is It a Terminal.
--* isblank: (libc)Classification of Characters.
--* iscntrl: (libc)Classification of Characters.
--* isdigit: (libc)Classification of Characters.
--* isfinite: (libc)Floating Point Classes.
--* isgraph: (libc)Classification of Characters.
--* isgreater: (libc)FP Comparison Functions.
--* isgreaterequal: (libc)FP Comparison Functions.
--* isinf: (libc)Floating Point Classes.
--* isinff: (libc)Floating Point Classes.
--* isinfl: (libc)Floating Point Classes.
--* isless: (libc)FP Comparison Functions.
--* islessequal: (libc)FP Comparison Functions.
--* islessgreater: (libc)FP Comparison Functions.
--* islower: (libc)Classification of Characters.
--* isnan: (libc)Floating Point Classes.
--* isnan: (libc)Floating Point Classes.
--* isnanf: (libc)Floating Point Classes.
--* isnanl: (libc)Floating Point Classes.
--* isnormal: (libc)Floating Point Classes.
--* isprint: (libc)Classification of Characters.
--* ispunct: (libc)Classification of Characters.
--* isspace: (libc)Classification of Characters.
--* isunordered: (libc)FP Comparison Functions.
--* isupper: (libc)Classification of Characters.
--* iswalnum: (libc)Classification of Wide Characters.
--* iswalpha: (libc)Classification of Wide Characters.
--* iswblank: (libc)Classification of Wide Characters.
--* iswcntrl: (libc)Classification of Wide Characters.
--* iswctype: (libc)Classification of Wide Characters.
--* iswdigit: (libc)Classification of Wide Characters.
--* iswgraph: (libc)Classification of Wide Characters.
--* iswlower: (libc)Classification of Wide Characters.
--* iswprint: (libc)Classification of Wide Characters.
--* iswpunct: (libc)Classification of Wide Characters.
--* iswspace: (libc)Classification of Wide Characters.
--* iswupper: (libc)Classification of Wide Characters.
--* iswxdigit: (libc)Classification of Wide Characters.
--* isxdigit: (libc)Classification of Characters.
--* j0: (libc)Special Functions.
--* j0f: (libc)Special Functions.
--* j0l: (libc)Special Functions.
--* j1: (libc)Special Functions.
--* j1f: (libc)Special Functions.
--* j1l: (libc)Special Functions.
--* jn: (libc)Special Functions.
--* jnf: (libc)Special Functions.
--* jnl: (libc)Special Functions.
--* jrand48: (libc)SVID Random.
--* jrand48_r: (libc)SVID Random.
--* kill: (libc)Signaling Another Process.
--* killpg: (libc)Signaling Another Process.
--* l64a: (libc)Encode Binary Data.
--* labs: (libc)Absolute Value.
--* lcong48: (libc)SVID Random.
--* lcong48_r: (libc)SVID Random.
--* ldexp: (libc)Normalization Functions.
--* ldexpf: (libc)Normalization Functions.
--* ldexpl: (libc)Normalization Functions.
--* ldiv: (libc)Integer Division.
--* lfind: (libc)Array Search Function.
--* lgamma: (libc)Special Functions.
--* lgamma_r: (libc)Special Functions.
--* lgammaf: (libc)Special Functions.
--* lgammaf_r: (libc)Special Functions.
--* lgammal: (libc)Special Functions.
--* lgammal_r: (libc)Special Functions.
--* link: (libc)Hard Links.
--* lio_listio64: (libc)Asynchronous Reads/Writes.
--* lio_listio: (libc)Asynchronous Reads/Writes.
--* listen: (libc)Listening.
--* llabs: (libc)Absolute Value.
--* lldiv: (libc)Integer Division.
--* llrint: (libc)Rounding Functions.
--* llrintf: (libc)Rounding Functions.
--* llrintl: (libc)Rounding Functions.
--* llround: (libc)Rounding Functions.
--* llroundf: (libc)Rounding Functions.
--* llroundl: (libc)Rounding Functions.
--* localeconv: (libc)The Lame Way to Locale Data.
--* localtime: (libc)Broken-down Time.
--* localtime_r: (libc)Broken-down Time.
--* log10: (libc)Exponents and Logarithms.
--* log10f: (libc)Exponents and Logarithms.
--* log10l: (libc)Exponents and Logarithms.
--* log1p: (libc)Exponents and Logarithms.
--* log1pf: (libc)Exponents and Logarithms.
--* log1pl: (libc)Exponents and Logarithms.
--* log2: (libc)Exponents and Logarithms.
--* log2f: (libc)Exponents and Logarithms.
--* log2l: (libc)Exponents and Logarithms.
--* log: (libc)Exponents and Logarithms.
--* logb: (libc)Exponents and Logarithms.
--* logbf: (libc)Exponents and Logarithms.
--* logbl: (libc)Exponents and Logarithms.
--* logf: (libc)Exponents and Logarithms.
--* login: (libc)Logging In and Out.
--* login_tty: (libc)Logging In and Out.
--* logl: (libc)Exponents and Logarithms.
--* logout: (libc)Logging In and Out.
--* logwtmp: (libc)Logging In and Out.
--* longjmp: (libc)Non-Local Details.
--* lrand48: (libc)SVID Random.
--* lrand48_r: (libc)SVID Random.
--* lrint: (libc)Rounding Functions.
--* lrintf: (libc)Rounding Functions.
--* lrintl: (libc)Rounding Functions.
--* lround: (libc)Rounding Functions.
--* lroundf: (libc)Rounding Functions.
--* lroundl: (libc)Rounding Functions.
--* lsearch: (libc)Array Search Function.
--* lseek64: (libc)File Position Primitive.
--* lseek: (libc)File Position Primitive.
--* lstat64: (libc)Reading Attributes.
--* lstat: (libc)Reading Attributes.
--* lutimes: (libc)File Times.
--* madvise: (libc)Memory-mapped I/O.
--* makecontext: (libc)System V contexts.
--* mallinfo: (libc)Statistics of Malloc.
--* malloc: (libc)Basic Allocation.
--* mallopt: (libc)Malloc Tunable Parameters.
--* mblen: (libc)Non-reentrant Character Conversion.
--* mbrlen: (libc)Converting a Character.
--* mbrtowc: (libc)Converting a Character.
--* mbsinit: (libc)Keeping the state.
--* mbsnrtowcs: (libc)Converting Strings.
--* mbsrtowcs: (libc)Converting Strings.
--* mbstowcs: (libc)Non-reentrant String Conversion.
--* mbtowc: (libc)Non-reentrant Character Conversion.
--* mcheck: (libc)Heap Consistency Checking.
--* memalign: (libc)Aligned Memory Blocks.
--* memccpy: (libc)Copying and Concatenation.
--* memchr: (libc)Search Functions.
--* memcmp: (libc)String/Array Comparison.
--* memcpy: (libc)Copying and Concatenation.
--* memfrob: (libc)Trivial Encryption.
--* memmem: (libc)Search Functions.
--* memmove: (libc)Copying and Concatenation.
--* mempcpy: (libc)Copying and Concatenation.
--* memrchr: (libc)Search Functions.
--* memset: (libc)Copying and Concatenation.
--* mkdir: (libc)Creating Directories.
--* mkdtemp: (libc)Temporary Files.
--* mkfifo: (libc)FIFO Special Files.
--* mknod: (libc)Making Special Files.
--* mkstemp: (libc)Temporary Files.
--* mktemp: (libc)Temporary Files.
--* mktime: (libc)Broken-down Time.
--* mlock: (libc)Page Lock Functions.
--* mlockall: (libc)Page Lock Functions.
--* mmap64: (libc)Memory-mapped I/O.
--* mmap: (libc)Memory-mapped I/O.
--* modf: (libc)Rounding Functions.
--* modff: (libc)Rounding Functions.
--* modfl: (libc)Rounding Functions.
--* mount: (libc)Mount-Unmount-Remount.
--* mprobe: (libc)Heap Consistency Checking.
--* mrand48: (libc)SVID Random.
--* mrand48_r: (libc)SVID Random.
--* mremap: (libc)Memory-mapped I/O.
--* msync: (libc)Memory-mapped I/O.
--* mtrace: (libc)Tracing malloc.
--* munlock: (libc)Page Lock Functions.
--* munlockall: (libc)Page Lock Functions.
--* munmap: (libc)Memory-mapped I/O.
--* muntrace: (libc)Tracing malloc.
--* nan: (libc)FP Bit Twiddling.
--* nanf: (libc)FP Bit Twiddling.
--* nanl: (libc)FP Bit Twiddling.
--* nanosleep: (libc)Sleeping.
--* nearbyint: (libc)Rounding Functions.
--* nearbyintf: (libc)Rounding Functions.
--* nearbyintl: (libc)Rounding Functions.
--* nextafter: (libc)FP Bit Twiddling.
--* nextafterf: (libc)FP Bit Twiddling.
--* nextafterl: (libc)FP Bit Twiddling.
--* nexttoward: (libc)FP Bit Twiddling.
--* nexttowardf: (libc)FP Bit Twiddling.
--* nexttowardl: (libc)FP Bit Twiddling.
--* nftw64: (libc)Working with Directory Trees.
--* nftw: (libc)Working with Directory Trees.
--* ngettext: (libc)Advanced gettext functions.
--* nice: (libc)Traditional Scheduling Functions.
--* nl_langinfo: (libc)The Elegant and Fast Way.
--* nrand48: (libc)SVID Random.
--* nrand48_r: (libc)SVID Random.
--* ntohl: (libc)Byte Order.
--* ntohs: (libc)Byte Order.
--* ntp_adjtime: (libc)High Accuracy Clock.
--* ntp_gettime: (libc)High Accuracy Clock.
--* obstack_1grow: (libc)Growing Objects.
--* obstack_1grow_fast: (libc)Extra Fast Growing.
--* obstack_alignment_mask: (libc)Obstacks Data Alignment.
--* obstack_alloc: (libc)Allocation in an Obstack.
--* obstack_base: (libc)Status of an Obstack.
--* obstack_blank: (libc)Growing Objects.
--* obstack_blank_fast: (libc)Extra Fast Growing.
--* obstack_chunk_size: (libc)Obstack Chunks.
--* obstack_copy0: (libc)Allocation in an Obstack.
--* obstack_copy: (libc)Allocation in an Obstack.
--* obstack_finish: (libc)Growing Objects.
--* obstack_free: (libc)Freeing Obstack Objects.
--* obstack_grow0: (libc)Growing Objects.
--* obstack_grow: (libc)Growing Objects.
--* obstack_init: (libc)Preparing for Obstacks.
--* obstack_int_grow: (libc)Growing Objects.
--* obstack_int_grow_fast: (libc)Extra Fast Growing.
--* obstack_next_free: (libc)Status of an Obstack.
--* obstack_object_size: (libc)Growing Objects.
--* obstack_object_size: (libc)Status of an Obstack.
--* obstack_printf: (libc)Dynamic Output.
--* obstack_ptr_grow: (libc)Growing Objects.
--* obstack_ptr_grow_fast: (libc)Extra Fast Growing.
--* obstack_room: (libc)Extra Fast Growing.
--* obstack_vprintf: (libc)Variable Arguments Output.
--* offsetof: (libc)Structure Measurement.
--* on_exit: (libc)Cleanups on Exit.
--* open64: (libc)Opening and Closing Files.
--* open: (libc)Opening and Closing Files.
--* open_memstream: (libc)String Streams.
--* open_obstack_stream: (libc)Obstack Streams.
--* opendir: (libc)Opening a Directory.
--* openlog: (libc)openlog.
--* openpty: (libc)Pseudo-Terminal Pairs.
--* parse_printf_format: (libc)Parsing a Template String.
--* pathconf: (libc)Pathconf.
--* pause: (libc)Using Pause.
--* pclose: (libc)Pipe to a Subprocess.
--* perror: (libc)Error Messages.
--* pipe: (libc)Creating a Pipe.
--* popen: (libc)Pipe to a Subprocess.
--* posix_memalign: (libc)Aligned Memory Blocks.
--* pow10: (libc)Exponents and Logarithms.
--* pow10f: (libc)Exponents and Logarithms.
--* pow10l: (libc)Exponents and Logarithms.
--* pow: (libc)Exponents and Logarithms.
--* powf: (libc)Exponents and Logarithms.
--* powl: (libc)Exponents and Logarithms.
--* pread64: (libc)I/O Primitives.
--* pread: (libc)I/O Primitives.
--* printf: (libc)Formatted Output Functions.
--* printf_size: (libc)Predefined Printf Handlers.
--* printf_size_info: (libc)Predefined Printf Handlers.
--* psignal: (libc)Signal Messages.
--* pthread_atfork: (libc)Threads and Fork.
--* pthread_attr_destroy: (libc)Thread Attributes.
--* pthread_attr_getattr: (libc)Thread Attributes.
--* pthread_attr_init: (libc)Thread Attributes.
--* pthread_attr_setattr: (libc)Thread Attributes.
--* pthread_cancel: (libc)Basic Thread Operations.
--* pthread_cleanup_pop: (libc)Cleanup Handlers.
--* pthread_cleanup_pop_restore_np: (libc)Cleanup Handlers.
--* pthread_cleanup_push: (libc)Cleanup Handlers.
--* pthread_cleanup_push_defer_np: (libc)Cleanup Handlers.
--* pthread_cond_broadcast: (libc)Condition Variables.
--* pthread_cond_destroy: (libc)Condition Variables.
--* pthread_cond_init: (libc)Condition Variables.
--* pthread_cond_signal: (libc)Condition Variables.
--* pthread_cond_timedwait: (libc)Condition Variables.
--* pthread_cond_wait: (libc)Condition Variables.
--* pthread_condattr_destroy: (libc)Condition Variables.
--* pthread_condattr_init: (libc)Condition Variables.
--* pthread_create: (libc)Basic Thread Operations.
--* pthread_detach: (libc)Miscellaneous Thread Functions.
--* pthread_equal: (libc)Miscellaneous Thread Functions.
--* pthread_exit: (libc)Basic Thread Operations.
--* pthread_getconcurrency: (libc)Miscellaneous Thread Functions.
--* pthread_getschedparam: (libc)Miscellaneous Thread Functions.
--* pthread_getspecific: (libc)Thread-Specific Data.
--* pthread_join: (libc)Basic Thread Operations.
--* pthread_key_create: (libc)Thread-Specific Data.
--* pthread_key_delete: (libc)Thread-Specific Data.
--* pthread_kill: (libc)Threads and Signal Handling.
--* pthread_kill_other_threads_np: (libc)Miscellaneous Thread Functions.
--* pthread_mutex_destroy: (libc)Mutexes.
--* pthread_mutex_init: (libc)Mutexes.
--* pthread_mutex_lock: (libc)Mutexes.
--* pthread_mutex_timedlock: (libc)Mutexes.
--* pthread_mutex_trylock: (libc)Mutexes.
--* pthread_mutex_unlock: (libc)Mutexes.
--* pthread_mutexattr_destroy: (libc)Mutexes.
--* pthread_mutexattr_gettype: (libc)Mutexes.
--* pthread_mutexattr_init: (libc)Mutexes.
--* pthread_mutexattr_settype: (libc)Mutexes.
--* pthread_once: (libc)Miscellaneous Thread Functions.
--* pthread_self: (libc)Miscellaneous Thread Functions.
--* pthread_setcancelstate: (libc)Cancellation.
--* pthread_setcanceltype: (libc)Cancellation.
--* pthread_setconcurrency: (libc)Miscellaneous Thread Functions.
--* pthread_setschedparam: (libc)Miscellaneous Thread Functions.
--* pthread_setspecific: (libc)Thread-Specific Data.
--* pthread_sigmask: (libc)Threads and Signal Handling.
--* pthread_testcancel: (libc)Cancellation.
--* ptsname: (libc)Allocation.
--* ptsname_r: (libc)Allocation.
--* putc: (libc)Simple Output.
--* putc_unlocked: (libc)Simple Output.
--* putchar: (libc)Simple Output.
--* putchar_unlocked: (libc)Simple Output.
--* putenv: (libc)Environment Access.
--* putpwent: (libc)Writing a User Entry.
--* puts: (libc)Simple Output.
--* pututline: (libc)Manipulating the Database.
--* pututxline: (libc)XPG Functions.
--* putw: (libc)Simple Output.
--* putwc: (libc)Simple Output.
--* putwc_unlocked: (libc)Simple Output.
--* putwchar: (libc)Simple Output.
--* putwchar_unlocked: (libc)Simple Output.
--* pwrite64: (libc)I/O Primitives.
--* pwrite: (libc)I/O Primitives.
--* qecvt: (libc)System V Number Conversion.
--* qecvt_r: (libc)System V Number Conversion.
--* qfcvt: (libc)System V Number Conversion.
--* qfcvt_r: (libc)System V Number Conversion.
--* qgcvt: (libc)System V Number Conversion.
--* qsort: (libc)Array Sort Function.
--* raise: (libc)Signaling Yourself.
--* rand: (libc)ISO Random.
--* rand_r: (libc)ISO Random.
--* random: (libc)BSD Random.
--* random_r: (libc)BSD Random.
--* rawmemchr: (libc)Search Functions.
--* read: (libc)I/O Primitives.
--* readdir64: (libc)Reading/Closing Directory.
--* readdir64_r: (libc)Reading/Closing Directory.
--* readdir: (libc)Reading/Closing Directory.
--* readdir_r: (libc)Reading/Closing Directory.
--* readlink: (libc)Symbolic Links.
--* readv: (libc)Scatter-Gather.
--* realloc: (libc)Changing Block Size.
--* realpath: (libc)Symbolic Links.
--* recv: (libc)Receiving Data.
--* recvfrom: (libc)Receiving Datagrams.
--* recvmsg: (libc)Receiving Datagrams.
--* regcomp: (libc)POSIX Regexp Compilation.
--* regerror: (libc)Regexp Cleanup.
--* regexec: (libc)Matching POSIX Regexps.
--* regfree: (libc)Regexp Cleanup.
--* register_printf_function: (libc)Registering New Conversions.
--* remainder: (libc)Remainder Functions.
--* remainderf: (libc)Remainder Functions.
--* remainderl: (libc)Remainder Functions.
--* remove: (libc)Deleting Files.
--* rename: (libc)Renaming Files.
--* rewind: (libc)File Positioning.
--* rewinddir: (libc)Random Access Directory.
--* rindex: (libc)Search Functions.
--* rint: (libc)Rounding Functions.
--* rintf: (libc)Rounding Functions.
--* rintl: (libc)Rounding Functions.
--* rmdir: (libc)Deleting Files.
--* round: (libc)Rounding Functions.
--* roundf: (libc)Rounding Functions.
--* roundl: (libc)Rounding Functions.
--* rpmatch: (libc)Yes-or-No Questions.
--* sbrk: (libc)Resizing the Data Segment.
--* scalb: (libc)Normalization Functions.
--* scalbf: (libc)Normalization Functions.
--* scalbl: (libc)Normalization Functions.
--* scalbln: (libc)Normalization Functions.
--* scalblnf: (libc)Normalization Functions.
--* scalblnl: (libc)Normalization Functions.
--* scalbn: (libc)Normalization Functions.
--* scalbnf: (libc)Normalization Functions.
--* scalbnl: (libc)Normalization Functions.
--* scandir64: (libc)Scanning Directory Content.
--* scandir: (libc)Scanning Directory Content.
--* scanf: (libc)Formatted Input Functions.
--* sched_get_priority_max: (libc)Basic Scheduling Functions.
--* sched_get_priority_min: (libc)Basic Scheduling Functions.
--* sched_getparam: (libc)Basic Scheduling Functions.
--* sched_getscheduler: (libc)Basic Scheduling Functions.
--* sched_rr_get_interval: (libc)Basic Scheduling Functions.
--* sched_setparam: (libc)Basic Scheduling Functions.
--* sched_setscheduler: (libc)Basic Scheduling Functions.
--* sched_yield: (libc)Basic Scheduling Functions.
--* seed48: (libc)SVID Random.
--* seed48_r: (libc)SVID Random.
--* seekdir: (libc)Random Access Directory.
--* select: (libc)Waiting for I/O.
--* sem_destroy: (libc)POSIX Semaphores.
--* sem_getvalue: (libc)POSIX Semaphores.
--* sem_init: (libc)POSIX Semaphores.
--* sem_post: (libc)POSIX Semaphores.
--* sem_trywait: (libc)POSIX Semaphores.
--* sem_wait: (libc)POSIX Semaphores.
--* send: (libc)Sending Data.
--* sendmsg: (libc)Receiving Datagrams.
--* sendto: (libc)Sending Datagrams.
--* setbuf: (libc)Controlling Buffering.
--* setbuffer: (libc)Controlling Buffering.
--* setcontext: (libc)System V contexts.
--* setdomainname: (libc)Host Identification.
--* setegid: (libc)Setting Groups.
--* setenv: (libc)Environment Access.
--* seteuid: (libc)Setting User ID.
--* setfsent: (libc)fstab.
--* setgid: (libc)Setting Groups.
--* setgrent: (libc)Scanning All Groups.
--* setgroups: (libc)Setting Groups.
--* sethostent: (libc)Host Names.
--* sethostid: (libc)Host Identification.
--* sethostname: (libc)Host Identification.
--* setitimer: (libc)Setting an Alarm.
--* setjmp: (libc)Non-Local Details.
--* setkey: (libc)DES Encryption.
--* setkey_r: (libc)DES Encryption.
--* setlinebuf: (libc)Controlling Buffering.
--* setlocale: (libc)Setting the Locale.
--* setlogmask: (libc)setlogmask.
--* setmntent: (libc)mtab.
--* setnetent: (libc)Networks Database.
--* setnetgrent: (libc)Lookup Netgroup.
--* setpgid: (libc)Process Group Functions.
--* setpgrp: (libc)Process Group Functions.
--* setpriority: (libc)Traditional Scheduling Functions.
--* setprotoent: (libc)Protocols Database.
--* setpwent: (libc)Scanning All Users.
--* setregid: (libc)Setting Groups.
--* setreuid: (libc)Setting User ID.
--* setrlimit64: (libc)Limits on Resources.
--* setrlimit: (libc)Limits on Resources.
--* setservent: (libc)Services Database.
--* setsid: (libc)Process Group Functions.
--* setsockopt: (libc)Socket Option Functions.
--* setstate: (libc)BSD Random.
--* setstate_r: (libc)BSD Random.
--* settimeofday: (libc)High-Resolution Calendar.
--* setuid: (libc)Setting User ID.
--* setutent: (libc)Manipulating the Database.
--* setutxent: (libc)XPG Functions.
--* setvbuf: (libc)Controlling Buffering.
--* shutdown: (libc)Closing a Socket.
--* sigaction: (libc)Advanced Signal Handling.
--* sigaddset: (libc)Signal Sets.
--* sigaltstack: (libc)Signal Stack.
--* sigblock: (libc)Blocking in BSD.
--* sigdelset: (libc)Signal Sets.
--* sigemptyset: (libc)Signal Sets.
--* sigfillset: (libc)Signal Sets.
--* siginterrupt: (libc)BSD Handler.
--* sigismember: (libc)Signal Sets.
--* siglongjmp: (libc)Non-Local Exits and Signals.
--* sigmask: (libc)Blocking in BSD.
--* signal: (libc)Basic Signal Handling.
--* signbit: (libc)FP Bit Twiddling.
--* significand: (libc)Normalization Functions.
--* significandf: (libc)Normalization Functions.
--* significandl: (libc)Normalization Functions.
--* sigpause: (libc)Blocking in BSD.
--* sigpending: (libc)Checking for Pending Signals.
--* sigprocmask: (libc)Process Signal Mask.
--* sigsetjmp: (libc)Non-Local Exits and Signals.
--* sigsetmask: (libc)Blocking in BSD.
--* sigstack: (libc)Signal Stack.
--* sigsuspend: (libc)Sigsuspend.
--* sigvec: (libc)BSD Handler.
--* sigwait: (libc)Threads and Signal Handling.
--* sin: (libc)Trig Functions.
--* sincos: (libc)Trig Functions.
--* sincosf: (libc)Trig Functions.
--* sincosl: (libc)Trig Functions.
--* sinf: (libc)Trig Functions.
--* sinh: (libc)Hyperbolic Functions.
--* sinhf: (libc)Hyperbolic Functions.
--* sinhl: (libc)Hyperbolic Functions.
--* sinl: (libc)Trig Functions.
--* sleep: (libc)Sleeping.
--* snprintf: (libc)Formatted Output Functions.
--* socket: (libc)Creating a Socket.
--* socketpair: (libc)Socket Pairs.
--* sprintf: (libc)Formatted Output Functions.
--* sqrt: (libc)Exponents and Logarithms.
--* sqrtf: (libc)Exponents and Logarithms.
--* sqrtl: (libc)Exponents and Logarithms.
--* srand48: (libc)SVID Random.
--* srand48_r: (libc)SVID Random.
--* srand: (libc)ISO Random.
--* srandom: (libc)BSD Random.
--* srandom_r: (libc)BSD Random.
--* sscanf: (libc)Formatted Input Functions.
--* ssignal: (libc)Basic Signal Handling.
--* stat64: (libc)Reading Attributes.
--* stat: (libc)Reading Attributes.
--* stime: (libc)Simple Calendar Time.
--* stpcpy: (libc)Copying and Concatenation.
--* stpncpy: (libc)Copying and Concatenation.
--* strcasecmp: (libc)String/Array Comparison.
--* strcasestr: (libc)Search Functions.
--* strcat: (libc)Copying and Concatenation.
--* strchr: (libc)Search Functions.
--* strchrnul: (libc)Search Functions.
--* strcmp: (libc)String/Array Comparison.
--* strcoll: (libc)Collation Functions.
--* strcpy: (libc)Copying and Concatenation.
--* strcspn: (libc)Search Functions.
--* strdup: (libc)Copying and Concatenation.
--* strdupa: (libc)Copying and Concatenation.
--* strerror: (libc)Error Messages.
--* strerror_r: (libc)Error Messages.
--* strfmon: (libc)Formatting Numbers.
--* strfry: (libc)strfry.
--* strftime: (libc)Formatting Calendar Time.
--* strlen: (libc)String Length.
--* strncasecmp: (libc)String/Array Comparison.
--* strncat: (libc)Copying and Concatenation.
--* strncmp: (libc)String/Array Comparison.
--* strncpy: (libc)Copying and Concatenation.
--* strndup: (libc)Copying and Concatenation.
--* strndupa: (libc)Copying and Concatenation.
--* strnlen: (libc)String Length.
--* strpbrk: (libc)Search Functions.
--* strptime: (libc)Low-Level Time String Parsing.
--* strrchr: (libc)Search Functions.
--* strsep: (libc)Finding Tokens in a String.
--* strsignal: (libc)Signal Messages.
--* strspn: (libc)Search Functions.
--* strstr: (libc)Search Functions.
--* strtod: (libc)Parsing of Floats.
--* strtof: (libc)Parsing of Floats.
--* strtoimax: (libc)Parsing of Integers.
--* strtok: (libc)Finding Tokens in a String.
--* strtok_r: (libc)Finding Tokens in a String.
--* strtol: (libc)Parsing of Integers.
--* strtold: (libc)Parsing of Floats.
--* strtoll: (libc)Parsing of Integers.
--* strtoq: (libc)Parsing of Integers.
--* strtoul: (libc)Parsing of Integers.
--* strtoull: (libc)Parsing of Integers.
--* strtoumax: (libc)Parsing of Integers.
--* strtouq: (libc)Parsing of Integers.
--* strverscmp: (libc)String/Array Comparison.
--* strxfrm: (libc)Collation Functions.
--* stty: (libc)BSD Terminal Modes.
--* swapcontext: (libc)System V contexts.
--* swprintf: (libc)Formatted Output Functions.
--* swscanf: (libc)Formatted Input Functions.
--* symlink: (libc)Symbolic Links.
--* sync: (libc)Synchronizing I/O.
--* syscall: (libc)System Calls.
--* sysconf: (libc)Sysconf Definition.
--* sysctl: (libc)System Parameters.
--* syslog: (libc)syslog; vsyslog.
--* system: (libc)Running a Command.
--* sysv_signal: (libc)Basic Signal Handling.
--* tan: (libc)Trig Functions.
--* tanf: (libc)Trig Functions.
--* tanh: (libc)Hyperbolic Functions.
--* tanhf: (libc)Hyperbolic Functions.
--* tanhl: (libc)Hyperbolic Functions.
--* tanl: (libc)Trig Functions.
--* tcdrain: (libc)Line Control.
--* tcflow: (libc)Line Control.
--* tcflush: (libc)Line Control.
--* tcgetattr: (libc)Mode Functions.
--* tcgetpgrp: (libc)Terminal Access Functions.
--* tcgetsid: (libc)Terminal Access Functions.
--* tcsendbreak: (libc)Line Control.
--* tcsetattr: (libc)Mode Functions.
--* tcsetpgrp: (libc)Terminal Access Functions.
--* tdelete: (libc)Tree Search Function.
--* tdestroy: (libc)Tree Search Function.
--* telldir: (libc)Random Access Directory.
--* tempnam: (libc)Temporary Files.
--* textdomain: (libc)Locating gettext catalog.
--* tfind: (libc)Tree Search Function.
--* tgamma: (libc)Special Functions.
--* tgammaf: (libc)Special Functions.
--* tgammal: (libc)Special Functions.
--* time: (libc)Simple Calendar Time.
--* timegm: (libc)Broken-down Time.
--* timelocal: (libc)Broken-down Time.
--* times: (libc)Processor Time.
--* tmpfile64: (libc)Temporary Files.
--* tmpfile: (libc)Temporary Files.
--* tmpnam: (libc)Temporary Files.
--* tmpnam_r: (libc)Temporary Files.
--* toascii: (libc)Case Conversion.
--* tolower: (libc)Case Conversion.
--* toupper: (libc)Case Conversion.
--* towctrans: (libc)Wide Character Case Conversion.
--* towlower: (libc)Wide Character Case Conversion.
--* towupper: (libc)Wide Character Case Conversion.
--* trunc: (libc)Rounding Functions.
--* truncate64: (libc)File Size.
--* truncate: (libc)File Size.
--* truncf: (libc)Rounding Functions.
--* truncl: (libc)Rounding Functions.
--* tsearch: (libc)Tree Search Function.
--* ttyname: (libc)Is It a Terminal.
--* ttyname_r: (libc)Is It a Terminal.
--* twalk: (libc)Tree Search Function.
--* tzset: (libc)Time Zone Functions.
--* ulimit: (libc)Limits on Resources.
--* umask: (libc)Setting Permissions.
--* umount2: (libc)Mount-Unmount-Remount.
--* umount: (libc)Mount-Unmount-Remount.
--* uname: (libc)Platform Type.
--* ungetc: (libc)How Unread.
--* ungetwc: (libc)How Unread.
--* unlink: (libc)Deleting Files.
--* unlockpt: (libc)Allocation.
--* unsetenv: (libc)Environment Access.
--* updwtmp: (libc)Manipulating the Database.
--* utime: (libc)File Times.
--* utimes: (libc)File Times.
--* utmpname: (libc)Manipulating the Database.
--* utmpxname: (libc)XPG Functions.
--* va_arg: (libc)Argument Macros.
--* va_end: (libc)Argument Macros.
--* va_start: (libc)Argument Macros.
--* va_start: (libc)Old Varargs.
--* valloc: (libc)Aligned Memory Blocks.
--* vasprintf: (libc)Variable Arguments Output.
--* verr: (libc)Error Messages.
--* verrx: (libc)Error Messages.
--* versionsort64: (libc)Scanning Directory Content.
--* versionsort: (libc)Scanning Directory Content.
--* vfork: (libc)Creating a Process.
--* vfprintf: (libc)Variable Arguments Output.
--* vfscanf: (libc)Variable Arguments Input.
--* vfwprintf: (libc)Variable Arguments Output.
--* vfwscanf: (libc)Variable Arguments Input.
--* vlimit: (libc)Limits on Resources.
--* vprintf: (libc)Variable Arguments Output.
--* vscanf: (libc)Variable Arguments Input.
--* vsnprintf: (libc)Variable Arguments Output.
--* vsprintf: (libc)Variable Arguments Output.
--* vsscanf: (libc)Variable Arguments Input.
--* vswprintf: (libc)Variable Arguments Output.
--* vswscanf: (libc)Variable Arguments Input.
--* vsyslog: (libc)syslog; vsyslog.
--* vtimes: (libc)Resource Usage.
--* vwarn: (libc)Error Messages.
--* vwarnx: (libc)Error Messages.
--* vwprintf: (libc)Variable Arguments Output.
--* vwscanf: (libc)Variable Arguments Input.
--* wait3: (libc)BSD Wait Functions.
--* wait4: (libc)Process Completion.
--* wait: (libc)Process Completion.
--* waitpid: (libc)Process Completion.
--* warn: (libc)Error Messages.
--* warnx: (libc)Error Messages.
--* wcpcpy: (libc)Copying and Concatenation.
--* wcpncpy: (libc)Copying and Concatenation.
--* wcrtomb: (libc)Converting a Character.
--* wcscasecmp: (libc)String/Array Comparison.
--* wcscat: (libc)Copying and Concatenation.
--* wcschr: (libc)Search Functions.
--* wcschrnul: (libc)Search Functions.
--* wcscmp: (libc)String/Array Comparison.
--* wcscoll: (libc)Collation Functions.
--* wcscpy: (libc)Copying and Concatenation.
--* wcscspn: (libc)Search Functions.
--* wcsdup: (libc)Copying and Concatenation.
--* wcsftime: (libc)Formatting Calendar Time.
--* wcslen: (libc)String Length.
--* wcsncasecmp: (libc)String/Array Comparison.
--* wcsncat: (libc)Copying and Concatenation.
--* wcsncmp: (libc)String/Array Comparison.
--* wcsncpy: (libc)Copying and Concatenation.
--* wcsnlen: (libc)String Length.
--* wcsnrtombs: (libc)Converting Strings.
--* wcspbrk: (libc)Search Functions.
--* wcsrchr: (libc)Search Functions.
--* wcsrtombs: (libc)Converting Strings.
--* wcsspn: (libc)Search Functions.
--* wcsstr: (libc)Search Functions.
--* wcstod: (libc)Parsing of Floats.
--* wcstof: (libc)Parsing of Floats.
--* wcstoimax: (libc)Parsing of Integers.
--* wcstok: (libc)Finding Tokens in a String.
--* wcstol: (libc)Parsing of Integers.
--* wcstold: (libc)Parsing of Floats.
--* wcstoll: (libc)Parsing of Integers.
--* wcstombs: (libc)Non-reentrant String Conversion.
--* wcstoq: (libc)Parsing of Integers.
--* wcstoul: (libc)Parsing of Integers.
--* wcstoull: (libc)Parsing of Integers.
--* wcstoumax: (libc)Parsing of Integers.
--* wcstouq: (libc)Parsing of Integers.
--* wcswcs: (libc)Search Functions.
--* wcsxfrm: (libc)Collation Functions.
--* wctob: (libc)Converting a Character.
--* wctomb: (libc)Non-reentrant Character Conversion.
--* wctrans: (libc)Wide Character Case Conversion.
--* wctype: (libc)Classification of Wide Characters.
--* wmemchr: (libc)Search Functions.
--* wmemcmp: (libc)String/Array Comparison.
--* wmemcpy: (libc)Copying and Concatenation.
--* wmemmove: (libc)Copying and Concatenation.
--* wmempcpy: (libc)Copying and Concatenation.
--* wmemset: (libc)Copying and Concatenation.
--* wordexp: (libc)Calling Wordexp.
--* wordfree: (libc)Calling Wordexp.
--* wprintf: (libc)Formatted Output Functions.
--* write: (libc)I/O Primitives.
--* writev: (libc)Scatter-Gather.
--* wscanf: (libc)Formatted Input Functions.
--* y0: (libc)Special Functions.
--* y0f: (libc)Special Functions.
--* y0l: (libc)Special Functions.
--* y1: (libc)Special Functions.
--* y1f: (libc)Special Functions.
--* y1l: (libc)Special Functions.
--* yn: (libc)Special Functions.
--* ynf: (libc)Special Functions.
--* ynl: (libc)Special Functions.
--* {(*__gconv_end_fct)}: (libc)glibc iconv Implementation.
--* {(*__gconv_fct)}: (libc)glibc iconv Implementation.
--* {(*__gconv_init_fct)}: (libc)glibc iconv Implementation.
--END-INFO-DIR-ENTRY
-diff -u -udbrN glibc-2.3.2/manual/dir.c.texi glibc-2.3.2-200304020432/manual/dir.c.texi
---- glibc-2.3.2/manual/dir.c.texi Mon Nov 18 20:37:19 2002
-+++ glibc-2.3.2-200304020432/manual/dir.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,24 +0,0 @@
--@group
--#include <stdio.h>
--#include <sys/types.h>
--#include <dirent.h>
--@end group
--
--int
--main (void)
--@{
-- DIR *dp;
-- struct dirent *ep;
--
-- dp = opendir ("./");
-- if (dp != NULL)
-- @{
-- while (ep = readdir (dp))
-- puts (ep->d_name);
-- (void) closedir (dp);
-- @}
-- else
-- perror ("Couldn't open the directory");
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/dir2.c.texi glibc-2.3.2-200304020432/manual/dir2.c.texi
---- glibc-2.3.2/manual/dir2.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/dir2.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,29 +0,0 @@
--@group
--#include <stdio.h>
--#include <dirent.h>
--@end group
--
--static int
--one (struct dirent *unused)
--@{
-- return 1;
--@}
--
--int
--main (void)
--@{
-- struct dirent **eps;
-- int n;
--
-- n = scandir ("./", &eps, one, alphasort);
-- if (n >= 0)
-- @{
-- int cnt;
-- for (cnt = 0; cnt < n; ++cnt)
-- puts (eps[cnt]->d_name);
-- @}
-- else
-- perror ("Couldn't open the directory");
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/execinfo.c.texi glibc-2.3.2-200304020432/manual/execinfo.c.texi
---- glibc-2.3.2/manual/execinfo.c.texi Wed Jan 17 17:41:01 2001
-+++ glibc-2.3.2-200304020432/manual/execinfo.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,37 +0,0 @@
--#include <execinfo.h>
--#include <stdio.h>
--#include <stdlib.h>
--
--/* @r{Obtain a backtrace and print it to @code{stdout}.} */
--void
--print_trace (void)
--@{
-- void *array[10];
-- size_t size;
-- char **strings;
-- size_t i;
--
-- size = backtrace (array, 10);
-- strings = backtrace_symbols (array, size);
--
-- printf ("Obtained %zd stack frames.\n", size);
--
-- for (i = 0; i < size; i++)
-- printf ("%s\n", strings[i]);
--
-- free (strings);
--@}
--
--/* @r{A dummy function to make the backtrace more interesting.} */
--void
--dummy_function (void)
--@{
-- print_trace ();
--@}
--
--int
--main (void)
--@{
-- dummy_function ();
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/filecli.c.texi glibc-2.3.2-200304020432/manual/filecli.c.texi
---- glibc-2.3.2/manual/filecli.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/filecli.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,54 +0,0 @@
--#include <stdio.h>
--#include <errno.h>
--#include <unistd.h>
--#include <stdlib.h>
--#include <sys/socket.h>
--#include <sys/un.h>
--
--#define SERVER "/tmp/serversocket"
--#define CLIENT "/tmp/mysocket"
--#define MAXMSG 512
--#define MESSAGE "Yow!!! Are we having fun yet?!?"
--
--int
--main (void)
--@{
-- extern int make_named_socket (const char *name);
-- int sock;
-- char message[MAXMSG];
-- struct sockaddr_un name;
-- size_t size;
-- int nbytes;
--
-- /* @r{Make the socket.} */
-- sock = make_named_socket (CLIENT);
--
-- /* @r{Initialize the server socket address.} */
-- name.sun_family = AF_LOCAL;
-- strcpy (name.sun_path, SERVER);
-- size = strlen (name.sun_path) + sizeof (name.sun_family);
--
-- /* @r{Send the datagram.} */
-- nbytes = sendto (sock, MESSAGE, strlen (MESSAGE) + 1, 0,
-- (struct sockaddr *) & name, size);
-- if (nbytes < 0)
-- @{
-- perror ("sendto (client)");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Wait for a reply.} */
-- nbytes = recvfrom (sock, message, MAXMSG, 0, NULL, 0);
-- if (nbytes < 0)
-- @{
-- perror ("recfrom (client)");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Print a diagnostic message.} */
-- fprintf (stderr, "Client: got message: %s\n", message);
--
-- /* @r{Clean up.} */
-- remove (CLIENT);
-- close (sock);
--@}
-diff -u -udbrN glibc-2.3.2/manual/filesrv.c.texi glibc-2.3.2-200304020432/manual/filesrv.c.texi
---- glibc-2.3.2/manual/filesrv.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/filesrv.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,48 +0,0 @@
--#include <stdio.h>
--#include <errno.h>
--#include <stdlib.h>
--#include <sys/socket.h>
--#include <sys/un.h>
--
--#define SERVER "/tmp/serversocket"
--#define MAXMSG 512
--
--int
--main (void)
--@{
-- int sock;
-- char message[MAXMSG];
-- struct sockaddr_un name;
-- size_t size;
-- int nbytes;
--
-- /* @r{Remove the filename first, it's ok if the call fails} */
-- unlink (SERVER);
--
-- /* @r{Make the socket, then loop endlessly.} */
-- sock = make_named_socket (SERVER);
-- while (1)
-- @{
-- /* @r{Wait for a datagram.} */
-- size = sizeof (name);
-- nbytes = recvfrom (sock, message, MAXMSG, 0,
-- (struct sockaddr *) & name, &size);
-- if (nbytes < 0)
-- @{
-- perror ("recfrom (server)");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Give a diagnostic message.} */
-- fprintf (stderr, "Server: got message: %s\n", message);
--
-- /* @r{Bounce the message back to the sender.} */
-- nbytes = sendto (sock, message, nbytes, 0,
-- (struct sockaddr *) & name, size);
-- if (nbytes < 0)
-- @{
-- perror ("sendto (server)");
-- exit (EXIT_FAILURE);
-- @}
-- @}
--@}
-diff -u -udbrN glibc-2.3.2/manual/fmtmsgexpl.c.texi glibc-2.3.2-200304020432/manual/fmtmsgexpl.c.texi
---- glibc-2.3.2/manual/fmtmsgexpl.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/fmtmsgexpl.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,12 +0,0 @@
--#include <fmtmsg.h>
--
--int
--main (void)
--@{
-- addseverity (5, "NOTE2");
-- fmtmsg (MM_PRINT, "only1field", MM_INFO, "text2", "action2", "tag2");
-- fmtmsg (MM_PRINT, "UX:cat", 5, "invalid syntax", "refer to manual",
-- "UX:cat:001");
-- fmtmsg (MM_PRINT, "label:foo", 6, "text", "action", "tag");
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/genpass.c.texi glibc-2.3.2-200304020432/manual/genpass.c.texi
---- glibc-2.3.2/manual/genpass.c.texi Tue Apr 18 06:13:59 2000
-+++ glibc-2.3.2-200304020432/manual/genpass.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,32 +0,0 @@
--#include <stdio.h>
--#include <time.h>
--#include <unistd.h>
--#include <crypt.h>
--
--int
--main(void)
--@{
-- unsigned long seed[2];
-- char salt[] = "$1$........";
-- const char *const seedchars =
-- "./0123456789ABCDEFGHIJKLMNOPQRST"
-- "UVWXYZabcdefghijklmnopqrstuvwxyz";
-- char *password;
-- int i;
--
-- /* @r{Generate a (not very) random seed.
-- You should do it better than this...} */
-- seed[0] = time(NULL);
-- seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);
--
-- /* @r{Turn it into printable characters from `seedchars'.} */
-- for (i = 0; i < 8; i++)
-- salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];
--
-- /* @r{Read in the user's password and encrypt it.} */
-- password = crypt(getpass("Password:"), salt);
--
-- /* @r{Print the results.} */
-- puts(password);
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/inetcli.c.texi glibc-2.3.2-200304020432/manual/inetcli.c.texi
---- glibc-2.3.2/manual/inetcli.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/inetcli.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,59 +0,0 @@
--#include <stdio.h>
--#include <errno.h>
--#include <stdlib.h>
--#include <unistd.h>
--#include <sys/types.h>
--#include <sys/socket.h>
--#include <netinet/in.h>
--#include <netdb.h>
--
--#define PORT 5555
--#define MESSAGE "Yow!!! Are we having fun yet?!?"
--#define SERVERHOST "mescaline.gnu.org"
--
--void
--write_to_server (int filedes)
--@{
-- int nbytes;
--
-- nbytes = write (filedes, MESSAGE, strlen (MESSAGE) + 1);
-- if (nbytes < 0)
-- @{
-- perror ("write");
-- exit (EXIT_FAILURE);
-- @}
--@}
--
--
--int
--main (void)
--@{
-- extern void init_sockaddr (struct sockaddr_in *name,
-- const char *hostname,
-- uint16_t port);
-- int sock;
-- struct sockaddr_in servername;
--
-- /* @r{Create the socket.} */
-- sock = socket (PF_INET, SOCK_STREAM, 0);
-- if (sock < 0)
-- @{
-- perror ("socket (client)");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Connect to the server.} */
-- init_sockaddr (&servername, SERVERHOST, PORT);
-- if (0 > connect (sock,
-- (struct sockaddr *) &servername,
-- sizeof (servername)))
-- @{
-- perror ("connect (client)");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Send data to the server.} */
-- write_to_server (sock);
-- close (sock);
-- exit (EXIT_SUCCESS);
--@}
-diff -u -udbrN glibc-2.3.2/manual/inetsrv.c.texi glibc-2.3.2-200304020432/manual/inetsrv.c.texi
---- glibc-2.3.2/manual/inetsrv.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/inetsrv.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,103 +0,0 @@
--#include <stdio.h>
--#include <errno.h>
--#include <stdlib.h>
--#include <unistd.h>
--#include <sys/types.h>
--#include <sys/socket.h>
--#include <netinet/in.h>
--#include <netdb.h>
--
--#define PORT 5555
--#define MAXMSG 512
--
--int
--read_from_client (int filedes)
--@{
-- char buffer[MAXMSG];
-- int nbytes;
--
-- nbytes = read (filedes, buffer, MAXMSG);
-- if (nbytes < 0)
-- @{
-- /* @r{Read error.} */
-- perror ("read");
-- exit (EXIT_FAILURE);
-- @}
-- else if (nbytes == 0)
-- /* @r{End-of-file.} */
-- return -1;
-- else
-- @{
-- /* @r{Data read.} */
-- fprintf (stderr, "Server: got message: `%s'\n", buffer);
-- return 0;
-- @}
--@}
--
--int
--main (void)
--@{
-- extern int make_socket (uint16_t port);
-- int sock;
-- fd_set active_fd_set, read_fd_set;
-- int i;
-- struct sockaddr_in clientname;
-- size_t size;
--
-- /* @r{Create the socket and set it up to accept connections.} */
-- sock = make_socket (PORT);
-- if (listen (sock, 1) < 0)
-- @{
-- perror ("listen");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Initialize the set of active sockets.} */
-- FD_ZERO (&active_fd_set);
-- FD_SET (sock, &active_fd_set);
--
-- while (1)
-- @{
-- /* @r{Block until input arrives on one or more active sockets.} */
-- read_fd_set = active_fd_set;
-- if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
-- @{
-- perror ("select");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Service all the sockets with input pending.} */
-- for (i = 0; i < FD_SETSIZE; ++i)
-- if (FD_ISSET (i, &read_fd_set))
-- @{
-- if (i == sock)
-- @{
-- /* @r{Connection request on original socket.} */
-- int new;
-- size = sizeof (clientname);
-- new = accept (sock,
-- (struct sockaddr *) &clientname,
-- &size);
-- if (new < 0)
-- @{
-- perror ("accept");
-- exit (EXIT_FAILURE);
-- @}
-- fprintf (stderr,
-- "Server: connect from host %s, port %hd.\n",
-- inet_ntoa (clientname.sin_addr),
-- ntohs (clientname.sin_port));
-- FD_SET (new, &active_fd_set);
-- @}
-- else
-- @{
-- /* @r{Data arriving on an already-connected socket.} */
-- if (read_from_client (i) < 0)
-- @{
-- close (i);
-- FD_CLR (i, &active_fd_set);
-- @}
-- @}
-- @}
-- @}
--@}
-diff -u -udbrN glibc-2.3.2/manual/isockad.c.texi glibc-2.3.2-200304020432/manual/isockad.c.texi
---- glibc-2.3.2/manual/isockad.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/isockad.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,23 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <sys/socket.h>
--#include <netinet/in.h>
--#include <netdb.h>
--
--void
--init_sockaddr (struct sockaddr_in *name,
-- const char *hostname,
-- uint16_t port)
--@{
-- struct hostent *hostinfo;
--
-- name->sin_family = AF_INET;
-- name->sin_port = htons (port);
-- hostinfo = gethostbyname (hostname);
-- if (hostinfo == NULL)
-- @{
-- fprintf (stderr, "Unknown host %s.\n", hostname);
-- exit (EXIT_FAILURE);
-- @}
-- name->sin_addr = *(struct in_addr *) hostinfo->h_addr;
--@}
-diff -u -udbrN glibc-2.3.2/manual/libc.cp glibc-2.3.2-200304020432/manual/libc.cp
---- glibc-2.3.2/manual/libc.cp Tue Feb 25 11:35:07 2003
-+++ glibc-2.3.2-200304020432/manual/libc.cp Thu Jan 1 01:00:00 1970
-@@ -1,1058 +0,0 @@
--\entry{library}{1}{library}
--\entry{standards}{1}{standards}
--\entry{ISO C}{2}{ISO C}
--\entry{POSIX}{2}{POSIX}
--\entry{POSIX.1}{2}{POSIX.1}
--\entry{IEEE Std 1003.1}{2}{IEEE Std 1003.1}
--\entry{ISO/IEC 9945-1}{2}{ISO/IEC 9945-1}
--\entry{POSIX.2}{2}{POSIX.2}
--\entry{IEEE Std 1003.2}{2}{IEEE Std 1003.2}
--\entry{ISO/IEC 9945-2}{2}{ISO/IEC 9945-2}
--\entry{BSD Unix}{3}{BSD Unix}
--\entry{4.n BSD Unix}{3}{4.\var {n} BSD Unix}
--\entry{Berkeley Unix}{3}{Berkeley Unix}
--\entry{SunOS}{3}{SunOS}
--\entry{Unix, Berkeley}{3}{Unix, Berkeley}
--\entry{SVID}{3}{SVID}
--\entry{System V Unix}{3}{System V Unix}
--\entry{Unix, System V}{3}{Unix, System V}
--\entry{header files}{4}{header files}
--\entry{definition (compared to declaration)}{4}{definition (compared to declaration)}
--\entry{declaration (compared to definition)}{4}{declaration (compared to definition)}
--\entry{shadowing functions with macros}{5}{shadowing functions with macros}
--\entry{removing macros that shadow functions}{5}{removing macros that shadow functions}
--\entry{undefining macros that shadow functions}{5}{undefining macros that shadow functions}
--\entry{reserved names}{6}{reserved names}
--\entry{name space}{6}{name space}
--\entry{feature test macros}{7}{feature test macros}
--\entry{BSD compatibility library.}{8}{BSD compatibility library.}
--\entry{error reporting}{15}{error reporting}
--\entry{reporting errors}{15}{reporting errors}
--\entry{error codes}{15}{error codes}
--\entry{status codes}{15}{status codes}
--\entry{program name}{27}{program name}
--\entry{name of running program}{27}{name of running program}
--\entry{memory allocation}{31}{memory allocation}
--\entry{storage allocation}{31}{storage allocation}
--\entry{page frame}{31}{page frame}
--\entry{frame, real memory}{31}{frame, real memory}
--\entry{swap space}{31}{swap space}
--\entry{page, virtual memory}{31}{page, virtual memory}
--\entry{page fault}{31}{page fault}
--\entry{paging}{31}{paging}
--\entry{executable}{32}{executable}
--\entry{literals}{32}{literals}
--\entry{constants}{32}{constants}
--\entry{memory mapped I/O}{32}{memory mapped I/O}
--\entry{memory mapped file}{32}{memory mapped file}
--\entry{files, accessing}{32}{files, accessing}
--\entry{execing a program}{32}{execing a program}
--\entry{freeing memory}{32}{freeing memory}
--\entry{exiting a program}{32}{exiting a program}
--\entry{static memory allocation}{33}{static memory allocation}
--\entry{static storage class}{33}{static storage class}
--\entry{automatic memory allocation}{33}{automatic memory allocation}
--\entry{automatic storage class}{33}{automatic storage class}
--\entry{dynamic memory allocation}{33}{dynamic memory allocation}
--\entry{dynamic memory allocation}{33}{dynamic memory allocation}
--\entry{unconstrained memory allocation}{34}{unconstrained memory allocation}
--\entry{malloc function}{34}{\code {malloc} function}
--\entry{heap, dynamic allocation from}{34}{heap, dynamic allocation from}
--\entry{allocation of memory with malloc}{34}{allocation of memory with \code {malloc}}
--\entry{freeing memory allocated with malloc}{35}{freeing memory allocated with \code {malloc}}
--\entry{heap, freeing memory from}{35}{heap, freeing memory from}
--\entry{changing the size of a block (malloc)}{36}{changing the size of a block (\code {malloc})}
--\entry{efficiency and malloc}{37}{efficiency and \code {malloc}}
--\entry{page boundary}{38}{page boundary}
--\entry{alignment (with malloc)}{38}{alignment (with \code {malloc})}
--\entry{heap consistency checking}{39}{heap consistency checking}
--\entry{consistency checking, of heap}{39}{consistency checking, of heap}
--\entry{allocation hooks, for malloc}{41}{allocation hooks, for \code {malloc}}
--\entry{allocation statistics}{43}{allocation statistics}
--\entry{allocation debugging}{45}{allocation debugging}
--\entry{malloc debugger}{45}{malloc debugger}
--\entry{obstacks}{49}{obstacks}
--\entry{allocation (obstacks)}{51}{allocation (obstacks)}
--\entry{freeing (obstacks)}{52}{freeing (obstacks)}
--\entry{macros}{52}{macros}
--\entry{growing objects (in obstacks)}{53}{growing objects (in obstacks)}
--\entry{changing the size of a block (obstacks)}{53}{changing the size of a block (obstacks)}
--\entry{shrinking objects}{54}{shrinking objects}
--\entry{efficiency and obstacks}{55}{efficiency and obstacks}
--\entry{obstack status}{56}{obstack status}
--\entry{status of obstack}{56}{status of obstack}
--\entry{alignment (in obstacks)}{56}{alignment (in obstacks)}
--\entry{efficiency of chunks}{57}{efficiency of chunks}
--\entry{chunks}{57}{chunks}
--\entry{automatic freeing}{59}{automatic freeing}
--\entry{alloca function}{59}{\code {alloca} function}
--\entry{automatic storage with variable size}{59}{automatic storage with variable size}
--\entry{longjmp}{60}{longjmp}
--\entry{alloca disadvantages}{61}{\code {alloca} disadvantages}
--\entry{disadvantages of alloca}{61}{disadvantages of \code {alloca}}
--\entry{variable-sized arrays}{61}{variable-sized arrays}
--\entry{locking pages}{62}{locking pages}
--\entry{memory lock}{62}{memory lock}
--\entry{paging}{62}{paging}
--\entry{realtime processing}{62}{realtime processing}
--\entry{speed of execution}{62}{speed of execution}
--\entry{copy-on-write page fault}{63}{copy-on-write page fault}
--\entry{page fault, copy-on-write}{63}{page fault, copy-on-write}
--\entry{character testing}{67}{character testing}
--\entry{classification of characters}{67}{classification of characters}
--\entry{predicates on characters}{67}{predicates on characters}
--\entry{character predicates}{67}{character predicates}
--\entry{lower-case character}{67}{lower-case character}
--\entry{upper-case character}{67}{upper-case character}
--\entry{alphabetic character}{67}{alphabetic character}
--\entry{digit character}{67}{digit character}
--\entry{decimal digit character}{67}{decimal digit character}
--\entry{alphanumeric character}{68}{alphanumeric character}
--\entry{hexadecimal digit character}{68}{hexadecimal digit character}
--\entry{punctuation character}{68}{punctuation character}
--\entry{whitespace character}{68}{whitespace character}
--\entry{blank character}{68}{blank character}
--\entry{graphic character}{68}{graphic character}
--\entry{printing character}{68}{printing character}
--\entry{control character}{68}{control character}
--\entry{ASCII character}{68}{ASCII character}
--\entry{character case conversion}{69}{character case conversion}
--\entry{case conversion of characters}{69}{case conversion of characters}
--\entry{converting case of characters}{69}{converting case of characters}
--\entry{alphanumeric character}{70}{alphanumeric character}
--\entry{alphabetic character}{70}{alphabetic character}
--\entry{control character}{71}{control character}
--\entry{digit character}{71}{digit character}
--\entry{graphic character}{71}{graphic character}
--\entry{lower-case character}{71}{lower-case character}
--\entry{printing character}{71}{printing character}
--\entry{punctuation character}{72}{punctuation character}
--\entry{whitespace character}{72}{whitespace character}
--\entry{upper-case character}{72}{upper-case character}
--\entry{hexadecimal digit character}{72}{hexadecimal digit character}
--\entry{blank character}{72}{blank character}
--\entry{string, representation of}{75}{string, representation of}
--\entry{string}{75}{string}
--\entry{multibyte character string}{75}{multibyte character string}
--\entry{wide character string}{75}{wide character string}
--\entry{null character}{75}{null character}
--\entry{null wide character}{75}{null wide character}
--\entry{string literal}{75}{string literal}
--\entry{length of string}{76}{length of string}
--\entry{allocation size of string}{76}{allocation size of string}
--\entry{size of string}{76}{size of string}
--\entry{string length}{76}{string length}
--\entry{string allocation}{76}{string allocation}
--\entry{single-byte string}{76}{single-byte string}
--\entry{multibyte string}{76}{multibyte string}
--\entry{wide character string}{76}{wide character string}
--\entry{wint_t}{77}{wint_t}
--\entry{parameter promotion}{77}{parameter promotion}
--\entry{copying strings and arrays}{79}{copying strings and arrays}
--\entry{string copy functions}{79}{string copy functions}
--\entry{array copy functions}{79}{array copy functions}
--\entry{concatenating strings}{79}{concatenating strings}
--\entry{string concatenation functions}{79}{string concatenation functions}
--\entry{__va_copy}{85}{__va_copy}
--\entry{va_copy}{85}{va_copy}
--\entry{comparing strings and arrays}{89}{comparing strings and arrays}
--\entry{string comparison functions}{89}{string comparison functions}
--\entry{array comparison functions}{89}{array comparison functions}
--\entry{predicates on strings}{89}{predicates on strings}
--\entry{predicates on arrays}{89}{predicates on arrays}
--\entry{collating strings}{92}{collating strings}
--\entry{string collation functions}{92}{string collation functions}
--\entry{converting string to collation order}{93}{converting string to collation order}
--\entry{search functions (for strings)}{96}{search functions (for strings)}
--\entry{string search functions}{96}{string search functions}
--\entry{tokenizing strings}{100}{tokenizing strings}
--\entry{breaking a string into tokens}{100}{breaking a string into tokens}
--\entry{parsing tokens from a string}{100}{parsing tokens from a string}
--\entry{encryption}{105}{encryption}
--\entry{Rot13}{105}{Rot13}
--\entry{argz vectors (string vectors)}{107}{argz vectors (string vectors)}
--\entry{string vectors, null-character separated}{107}{string vectors, null-character separated}
--\entry{argument vectors, null-character separated}{107}{argument vectors, null-character separated}
--\entry{envz vectors (environment vectors)}{107}{envz vectors (environment vectors)}
--\entry{environment vectors, null-character separated}{107}{environment vectors, null-character separated}
--\entry{internal representation}{111}{internal representation}
--\entry{wide character}{111}{wide character}
--\entry{Unicode}{111}{Unicode}
--\entry{ISO 10646}{111}{ISO 10646}
--\entry{UCS-2}{111}{UCS-2}
--\entry{UCS-4}{111}{UCS-4}
--\entry{UTF-8}{111}{UTF-8}
--\entry{UTF-16}{111}{UTF-16}
--\entry{multibyte character}{113}{multibyte character}
--\entry{EBCDIC}{113}{EBCDIC}
--\entry{ISO 2022}{113}{ISO 2022}
--\entry{EUC}{113}{EUC}
--\entry{Shift_JIS}{113}{Shift_JIS}
--\entry{SJIS}{113}{SJIS}
--\entry{ISO 6937}{114}{ISO 6937}
--\entry{UTF-8}{114}{UTF-8}
--\entry{UTF-7}{114}{UTF-7}
--\entry{stateful}{116}{stateful}
--\entry{shift state}{116}{shift state}
--\entry{stateful}{119}{stateful}
--\entry{stateful}{124}{stateful}
--\entry{stateful}{134}{stateful}
--\entry{stateful}{136}{stateful}
--\entry{triangulation}{139}{triangulation}
--\entry{ISO-2022-JP}{139}{ISO-2022-JP}
--\entry{EUC-JP}{139}{EUC-JP}
--\entry{stateful}{148}{stateful}
--\entry{internationalization}{153}{internationalization}
--\entry{locales}{153}{locales}
--\entry{combining locales}{154}{combining locales}
--\entry{categories for locales}{154}{categories for locales}
--\entry{locale categories}{154}{locale categories}
--\entry{changing the locale}{155}{changing the locale}
--\entry{locale, changing}{155}{locale, changing}
--\entry{monetary value formatting}{158}{monetary value formatting}
--\entry{numeric value formatting}{158}{numeric value formatting}
--\entry{decimal-point separator}{158}{decimal-point separator}
--\entry{grouping of digits}{158}{grouping of digits}
--\entry{currency symbols}{159}{currency symbols}
--\entry{NLSPATH environment variable}{172}{NLSPATH environment variable}
--\entry{LC_ALL environment variable}{173}{LC_ALL environment variable}
--\entry{LC_MESSAGES environment variable}{173}{LC_MESSAGES environment variable}
--\entry{LANG environment variable}{173}{LANG environment variable}
--\entry{gencat}{176}{gencat}
--\entry{sgettext}{190}{sgettext}
--\entry{sgettext}{190}{sgettext}
--\entry{Comparison Function}{195}{Comparison Function}
--\entry{search function (for arrays)}{195}{search function (for arrays)}
--\entry{binary search function (for arrays)}{195}{binary search function (for arrays)}
--\entry{array search function}{195}{array search function}
--\entry{sort function (for arrays)}{196}{sort function (for arrays)}
--\entry{quick sort function (for arrays)}{196}{quick sort function (for arrays)}
--\entry{array sort function}{196}{array sort function}
--\entry{stable sorting}{196}{stable sorting}
--\entry{Kermit the frog}{199}{Kermit the frog}
--\entry{Korn Shell}{206}{Korn Shell}
--\entry{globbing}{206}{globbing}
--\entry{word expansion}{218}{word expansion}
--\entry{expansion of shell words}{218}{expansion of shell words}
--\entry{tilde expansion}{219}{tilde expansion}
--\entry{variable substitution}{219}{variable substitution}
--\entry{substitution of variables and commands}{219}{substitution of variables and commands}
--\entry{command substitution}{219}{command substitution}
--\entry{arithmetic expansion}{219}{arithmetic expansion}
--\entry{field splitting}{219}{field splitting}
--\entry{wildcard expansion}{219}{wildcard expansion}
--\entry{quote removal}{219}{quote removal}
--\entry{removal of quotes}{219}{removal of quotes}
--\entry{opening a file}{225}{opening a file}
--\entry{file position}{226}{file position}
--\entry{sequential-access files}{226}{sequential-access files}
--\entry{random-access files}{226}{random-access files}
--\entry{append-access files}{227}{append-access files}
--\entry{file name}{227}{file name}
--\entry{directory}{227}{directory}
--\entry{link}{227}{link}
--\entry{directory entry}{227}{directory entry}
--\entry{file name component}{227}{file name component}
--\entry{file name resolution}{228}{file name resolution}
--\entry{root directory}{228}{root directory}
--\entry{absolute file name}{228}{absolute file name}
--\entry{relative file name}{228}{relative file name}
--\entry{parent directory}{228}{parent directory}
--\entry{file name errors}{229}{file name errors}
--\entry{usual file name errors}{229}{usual file name errors}
--\entry{file pointer}{231}{file pointer}
--\entry{standard streams}{231}{standard streams}
--\entry{streams, standard}{231}{streams, standard}
--\entry{standard input stream}{231}{standard input stream}
--\entry{standard output stream}{231}{standard output stream}
--\entry{standard error stream}{232}{standard error stream}
--\entry{opening a stream}{232}{opening a stream}
--\entry{stream orientation}{233}{stream orientation}
--\entry{orientation, stream}{233}{orientation, stream}
--\entry{closing a stream}{235}{closing a stream}
--\entry{threads}{236}{threads}
--\entry{multi-threaded application}{236}{multi-threaded application}
--\entry{C++ streams}{239}{C++ streams}
--\entry{streams, C++}{239}{streams, C++}
--\entry{orientation, stream}{240}{orientation, stream}
--\entry{stream orientation}{240}{stream orientation}
--\entry{writing to a stream, by characters}{241}{writing to a stream, by characters}
--\entry{reading from a stream, by characters}{243}{reading from a stream, by characters}
--\entry{peeking at input}{247}{peeking at input}
--\entry{unreading characters}{247}{unreading characters}
--\entry{pushing input back}{247}{pushing input back}
--\entry{binary I/O to a stream}{249}{binary I/O to a stream}
--\entry{block I/O to a stream}{249}{block I/O to a stream}
--\entry{reading from a stream, by blocks}{249}{reading from a stream, by blocks}
--\entry{writing to a stream, by blocks}{249}{writing to a stream, by blocks}
--\entry{format string, for printf}{250}{format string, for \code {printf}}
--\entry{template, for printf}{250}{template, for \code {printf}}
--\entry{formatted output to a stream}{250}{formatted output to a stream}
--\entry{writing to a stream, formatted}{250}{writing to a stream, formatted}
--\entry{conversion specifications (printf)}{250}{conversion specifications (\code {printf})}
--\entry{flag character (printf)}{252}{flag character (\code {printf})}
--\entry{minimum field width (printf)}{252}{minimum field width (\code {printf})}
--\entry{precision (printf)}{252}{precision (\code {printf})}
--\entry{type modifier character (printf)}{252}{type modifier character (\code {printf})}
--\entry{output conversions, for printf}{252}{output conversions, for \code {printf}}
--\entry{parsing a template string}{263}{parsing a template string}
--\entry{customizing printf}{266}{customizing \code {printf}}
--\entry{defining new printf conversions}{266}{defining new \code {printf} conversions}
--\entry{extending printf}{266}{extending \code {printf}}
--\entry{formatted input from a stream}{272}{formatted input from a stream}
--\entry{reading from a stream, formatted}{272}{reading from a stream, formatted}
--\entry{format string, for scanf}{272}{format string, for \code {scanf}}
--\entry{template, for scanf}{272}{template, for \code {scanf}}
--\entry{conversion specifications (scanf)}{272}{conversion specifications (\code {scanf})}
--\entry{matching failure, in scanf}{272}{matching failure, in \code {scanf}}
--\entry{flag character (scanf)}{273}{flag character (\code {scanf})}
--\entry{maximum field width (scanf)}{273}{maximum field width (\code {scanf})}
--\entry{type modifier character (scanf)}{273}{type modifier character (\code {scanf})}
--\entry{input conversions, for scanf}{274}{input conversions, for \code {scanf}}
--\entry{end of file, on a stream}{281}{end of file, on a stream}
--\entry{text stream}{283}{text stream}
--\entry{binary stream}{283}{binary stream}
--\entry{lines (in a text file)}{283}{lines (in a text file)}
--\entry{file positioning on a stream}{284}{file positioning on a stream}
--\entry{positioning a stream}{284}{positioning a stream}
--\entry{seeking on a stream}{284}{seeking on a stream}
--\entry{buffering of streams}{288}{buffering of streams}
--\entry{unbuffered stream}{288}{unbuffered stream}
--\entry{line buffered stream}{288}{line buffered stream}
--\entry{fully buffered stream}{288}{fully buffered stream}
--\entry{flushing a stream}{289}{flushing a stream}
--\entry{buffering, controlling}{290}{buffering, controlling}
--\entry{stream, for I/O to a string}{292}{stream, for I/O to a string}
--\entry{string stream}{292}{string stream}
--\entry{custom streams}{295}{custom streams}
--\entry{programming your own streams}{295}{programming your own streams}
--\entry{cookie, for custom stream}{295}{cookie, for custom stream}
--\entry{hook functions (of custom streams)}{296}{hook functions (of custom streams)}
--\entry{formatted messages}{297}{formatted messages}
--\entry{severity class}{298}{severity class}
--\entry{severity class}{300}{severity class}
--\entry{opening a file descriptor}{303}{opening a file descriptor}
--\entry{closing a file descriptor}{303}{closing a file descriptor}
--\entry{reading from a file descriptor}{306}{reading from a file descriptor}
--\entry{end-of-file, on a file descriptor}{306}{end-of-file, on a file descriptor}
--\entry{writing to a file descriptor}{308}{writing to a file descriptor}
--\entry{file positioning on a file descriptor}{310}{file positioning on a file descriptor}
--\entry{positioning a file descriptor}{310}{positioning a file descriptor}
--\entry{seeking on a file descriptor}{310}{seeking on a file descriptor}
--\entry{sparse files}{311}{sparse files}
--\entry{holes in files}{311}{holes in files}
--\entry{streams, and file descriptors}{313}{streams, and file descriptors}
--\entry{converting file descriptor to stream}{313}{converting file descriptor to stream}
--\entry{extracting file descriptor from stream}{313}{extracting file descriptor from stream}
--\entry{standard file descriptors}{313}{standard file descriptors}
--\entry{file descriptors, standard}{313}{file descriptors, standard}
--\entry{standard input file descriptor}{313}{standard input file descriptor}
--\entry{standard output file descriptor}{313}{standard output file descriptor}
--\entry{standard error file descriptor}{313}{standard error file descriptor}
--\entry{channels}{314}{channels}
--\entry{streams and descriptors}{314}{streams and descriptors}
--\entry{descriptors and streams}{314}{descriptors and streams}
--\entry{mixing descriptors and streams}{314}{mixing descriptors and streams}
--\entry{linked channels}{314}{linked channels}
--\entry{cleaning up a stream}{314}{cleaning up a stream}
--\entry{independent channels}{314}{independent channels}
--\entry{scatter-gather}{315}{scatter-gather}
--\entry{waiting for input or output}{321}{waiting for input or output}
--\entry{multiplexing input}{321}{multiplexing input}
--\entry{input from multiple files}{321}{input from multiple files}
--\entry{file descriptor sets, for select}{321}{file descriptor sets, for \code {select}}
--\entry{synchronizing}{323}{synchronizing}
--\entry{synchronizing}{332}{synchronizing}
--\entry{control operations on files}{336}{control operations on files}
--\entry{fcntl function}{336}{\code {fcntl} function}
--\entry{duplicating file descriptors}{337}{duplicating file descriptors}
--\entry{redirecting input and output}{337}{redirecting input and output}
--\entry{file descriptor flags}{339}{file descriptor flags}
--\entry{close-on-exec (file descriptor flag)}{339}{close-on-exec (file descriptor flag)}
--\entry{file status flags}{340}{file status flags}
--\entry{file name translation flags}{341}{file name translation flags}
--\entry{flags, file name translation}{341}{flags, file name translation}
--\entry{open-time action flags}{342}{open-time action flags}
--\entry{flags, open-time action}{342}{flags, open-time action}
--\entry{create on open (file status flag)}{342}{create on open (file status flag)}
--\entry{non-blocking open}{342}{non-blocking open}
--\entry{controlling terminal, setting}{342}{controlling terminal, setting}
--\entry{symbolic link, opening}{342}{symbolic link, opening}
--\entry{file locks}{345}{file locks}
--\entry{record locking}{345}{record locking}
--\entry{exclusive lock}{345}{exclusive lock}
--\entry{write lock}{345}{write lock}
--\entry{shared lock}{345}{shared lock}
--\entry{read lock}{345}{read lock}
--\entry{interrupt-driven input}{348}{interrupt-driven input}
--\entry{generic i/o control operations}{349}{generic i/o control operations}
--\entry{IOCTLs}{349}{IOCTLs}
--\entry{current working directory}{351}{current working directory}
--\entry{working directory}{351}{working directory}
--\entry{change working directory}{351}{change working directory}
--\entry{accessing directories}{353}{accessing directories}
--\entry{reading from a directory}{353}{reading from a directory}
--\entry{directories, accessing}{353}{directories, accessing}
--\entry{directory stream}{353}{directory stream}
--\entry{directory hierarchy}{360}{directory hierarchy}
--\entry{hierarchy, directory}{360}{hierarchy, directory}
--\entry{tree, directory}{360}{tree, directory}
--\entry{hard link}{363}{hard link}
--\entry{link, hard}{363}{link, hard}
--\entry{multiple names for one file}{363}{multiple names for one file}
--\entry{file names, multiple}{363}{file names, multiple}
--\entry{soft link}{364}{soft link}
--\entry{link, soft}{364}{link, soft}
--\entry{symbolic link}{364}{symbolic link}
--\entry{link, symbolic}{364}{link, symbolic}
--\entry{deleting a file}{367}{deleting a file}
--\entry{removing a file}{367}{removing a file}
--\entry{unlinking a file}{367}{unlinking a file}
--\entry{directories, deleting}{368}{directories, deleting}
--\entry{deleting a directory}{368}{deleting a directory}
--\entry{renaming a file}{368}{renaming a file}
--\entry{creating a directory}{369}{creating a directory}
--\entry{directories, creating}{369}{directories, creating}
--\entry{status of a file}{370}{status of a file}
--\entry{attributes of a file}{370}{attributes of a file}
--\entry{file attributes}{370}{file attributes}
--\entry{inode number}{373}{inode number}
--\entry{file owner}{377}{file owner}
--\entry{owner of a file}{377}{owner of a file}
--\entry{group owner of a file}{377}{group owner of a file}
--\entry{file permission bits}{378}{file permission bits}
--\entry{sticky bit}{379}{sticky bit}
--\entry{permission to access a file}{380}{permission to access a file}
--\entry{access permission for a file}{380}{access permission for a file}
--\entry{file access permission}{380}{file access permission}
--\entry{file creation mask}{380}{file creation mask}
--\entry{umask}{380}{umask}
--\entry{testing access permission}{382}{testing access permission}
--\entry{access, testing for}{382}{access, testing for}
--\entry{setuid programs and file access}{382}{setuid programs and file access}
--\entry{file access time}{383}{file access time}
--\entry{file modification time}{383}{file modification time}
--\entry{file attribute modification time}{383}{file attribute modification time}
--\entry{creating special files}{388}{creating special files}
--\entry{special files}{388}{special files}
--\entry{TMPDIR environment variable}{390}{TMPDIR environment variable}
--\entry{pipe}{393}{pipe}
--\entry{FIFO special file}{393}{FIFO special file}
--\entry{creating a pipe}{393}{creating a pipe}
--\entry{opening a pipe}{393}{opening a pipe}
--\entry{interprocess communication, with pipes}{393}{interprocess communication, with pipes}
--\entry{creating a pipe to a subprocess}{395}{creating a pipe to a subprocess}
--\entry{pipe to a subprocess}{395}{pipe to a subprocess}
--\entry{filtering i/o through subprocess}{395}{filtering i/o through subprocess}
--\entry{creating a FIFO special file}{396}{creating a FIFO special file}
--\entry{interprocess communication, with FIFO}{396}{interprocess communication, with FIFO}
--\entry{socket}{399}{socket}
--\entry{interprocess communication, with sockets}{399}{interprocess communication, with sockets}
--\entry{communication style (of a socket)}{399}{communication style (of a socket)}
--\entry{style of communication (of a socket)}{399}{style of communication (of a socket)}
--\entry{packet}{399}{packet}
--\entry{byte stream}{399}{byte stream}
--\entry{stream (sockets)}{399}{stream (sockets)}
--\entry{loss of data on sockets}{399}{loss of data on sockets}
--\entry{data loss on sockets}{399}{data loss on sockets}
--\entry{namespace (of socket)}{399}{namespace (of socket)}
--\entry{domain (of socket)}{399}{domain (of socket)}
--\entry{socket namespace}{399}{socket namespace}
--\entry{socket domain}{399}{socket domain}
--\entry{network protocol}{399}{network protocol}
--\entry{protocol (of socket)}{399}{protocol (of socket)}
--\entry{socket protocol}{399}{socket protocol}
--\entry{protocol family}{399}{protocol family}
--\entry{address of socket}{401}{address of socket}
--\entry{name of socket}{401}{name of socket}
--\entry{binding a socket address}{401}{binding a socket address}
--\entry{socket address (name) binding}{401}{socket address (name) binding}
--\entry{local namespace, for sockets}{405}{local namespace, for sockets}
--\entry{Internet namespace, for sockets}{407}{Internet namespace, for sockets}
--\entry{host address, Internet}{409}{host address, Internet}
--\entry{Internet host address}{409}{Internet host address}
--\entry{network number}{409}{network number}
--\entry{local network address number}{409}{local network address number}
--\entry{standard dot notation, for Internet addresses}{409}{standard dot notation, for Internet addresses}
--\entry{dot notation, for Internet addresses}{409}{dot notation, for Internet addresses}
--\entry{hosts database}{413}{hosts database}
--\entry{converting host name to address}{413}{converting host name to address}
--\entry{converting host address to name}{413}{converting host address to name}
--\entry{port number}{416}{port number}
--\entry{services database}{417}{services database}
--\entry{converting service name to port number}{417}{converting service name to port number}
--\entry{converting port number to service name}{417}{converting port number to service name}
--\entry{byte order conversion, for socket}{418}{byte order conversion, for socket}
--\entry{converting byte order}{418}{converting byte order}
--\entry{big-endian}{418}{big-endian}
--\entry{little-endian}{418}{little-endian}
--\entry{network byte order}{418}{network byte order}
--\entry{protocols database}{419}{protocols database}
--\entry{TCP (Internet protocol)}{419}{TCP (Internet protocol)}
--\entry{creating a socket}{422}{creating a socket}
--\entry{socket, creating}{422}{socket, creating}
--\entry{opening a socket}{422}{opening a socket}
--\entry{socket, closing}{422}{socket, closing}
--\entry{closing a socket}{422}{closing a socket}
--\entry{shutting down a socket}{422}{shutting down a socket}
--\entry{socket shutdown}{422}{socket shutdown}
--\entry{creating a socket pair}{423}{creating a socket pair}
--\entry{socket pair}{423}{socket pair}
--\entry{opening a socket pair}{423}{opening a socket pair}
--\entry{connection}{424}{connection}
--\entry{client}{424}{client}
--\entry{server}{424}{server}
--\entry{connecting a socket}{424}{connecting a socket}
--\entry{socket, connecting}{424}{socket, connecting}
--\entry{socket, initiating a connection}{424}{socket, initiating a connection}
--\entry{socket, client actions}{424}{socket, client actions}
--\entry{listening (sockets)}{425}{listening (sockets)}
--\entry{sockets, server actions}{425}{sockets, server actions}
--\entry{sockets, listening}{425}{sockets, listening}
--\entry{sockets, accepting connections}{426}{sockets, accepting connections}
--\entry{accepting connections}{426}{accepting connections}
--\entry{reading from a socket}{427}{reading from a socket}
--\entry{writing to a socket}{427}{writing to a socket}
--\entry{out-of-band data}{433}{out-of-band data}
--\entry{high-priority data}{433}{high-priority data}
--\entry{urgent socket condition}{433}{urgent socket condition}
--\entry{datagram socket}{435}{datagram socket}
--\entry{sending a datagram}{436}{sending a datagram}
--\entry{transmitting datagrams}{436}{transmitting datagrams}
--\entry{datagrams, transmitting}{436}{datagrams, transmitting}
--\entry{receiving datagrams}{436}{receiving datagrams}
--\entry{socket options}{441}{socket options}
--\entry{level, for socket options}{441}{level, for socket options}
--\entry{socket option level}{441}{socket option level}
--\entry{networks database}{443}{networks database}
--\entry{converting network number to network name}{443}{converting network number to network name}
--\entry{converting network name to network number}{443}{converting network name to network number}
--\entry{terminal identification}{445}{terminal identification}
--\entry{identifying terminals}{445}{identifying terminals}
--\entry{terminal input queue}{446}{terminal input queue}
--\entry{typeahead buffer}{446}{typeahead buffer}
--\entry{terminal output queue}{446}{terminal output queue}
--\entry{canonical input processing}{446}{canonical input processing}
--\entry{noncanonical input processing}{446}{noncanonical input processing}
--\entry{terminal mode data types}{447}{terminal mode data types}
--\entry{terminal mode functions}{448}{terminal mode functions}
--\entry{parity checking}{450}{parity checking}
--\entry{break condition, detecting}{451}{break condition, detecting}
--\entry{modem status lines}{453}{modem status lines}
--\entry{carrier detect}{453}{carrier detect}
--\entry{modem disconnect}{453}{modem disconnect}
--\entry{echo of terminal input}{455}{echo of terminal input}
--\entry{interactive signals, from terminal}{456}{interactive signals, from terminal}
--\entry{line speed}{457}{line speed}
--\entry{baud rate}{457}{baud rate}
--\entry{terminal line speed}{457}{terminal line speed}
--\entry{terminal line speed}{457}{terminal line speed}
--\entry{EOF character}{458}{EOF character}
--\entry{EOL character}{459}{EOL character}
--\entry{EOL2 character}{459}{EOL2 character}
--\entry{ERASE character}{459}{ERASE character}
--\entry{WERASE character}{459}{WERASE character}
--\entry{KILL character}{460}{KILL character}
--\entry{REPRINT character}{460}{REPRINT character}
--\entry{INTR character}{460}{INTR character}
--\entry{interrupt character}{460}{interrupt character}
--\entry{QUIT character}{460}{QUIT character}
--\entry{SUSP character}{460}{SUSP character}
--\entry{suspend character}{460}{suspend character}
--\entry{DSUSP character}{461}{DSUSP character}
--\entry{delayed suspend character}{461}{delayed suspend character}
--\entry{START character}{461}{START character}
--\entry{STOP character}{461}{STOP character}
--\entry{LNEXT character}{462}{LNEXT character}
--\entry{DISCARD character}{462}{DISCARD character}
--\entry{STATUS character}{462}{STATUS character}
--\entry{MIN termios slot}{463}{MIN termios slot}
--\entry{TIME termios slot}{463}{TIME termios slot}
--\entry{terminal modes, BSD}{464}{terminal modes, BSD}
--\entry{terminal line control functions}{465}{terminal line control functions}
--\entry{break condition, generating}{465}{break condition, generating}
--\entry{flushing terminal output queue}{465}{flushing terminal output queue}
--\entry{terminal output queue, flushing}{465}{terminal output queue, flushing}
--\entry{clearing terminal input queue}{465}{clearing terminal input queue}
--\entry{terminal input queue, clearing}{465}{terminal input queue, clearing}
--\entry{flow control, terminal}{466}{flow control, terminal}
--\entry{terminal flow control}{466}{terminal flow control}
--\entry{pseudo-terminals}{468}{pseudo-terminals}
--\entry{allocating pseudo-terminals}{468}{allocating pseudo-terminals}
--\entry{opening a pseudo-terminal pair}{470}{opening a pseudo-terminal pair}
--\entry{constants}{479}{constants}
--\entry{mathematical constants}{479}{mathematical constants}
--\entry{trigonometric functions}{480}{trigonometric functions}
--\entry{pi (trigonometric constant)}{480}{pi (trigonometric constant)}
--\entry{complex trigonometric functions}{481}{complex trigonometric functions}
--\entry{inverse trigonometric functions}{481}{inverse trigonometric functions}
--\entry{inverse complex trigonometric functions}{482}{inverse complex trigonometric functions}
--\entry{exponentiation functions}{483}{exponentiation functions}
--\entry{power functions}{483}{power functions}
--\entry{logarithm functions}{483}{logarithm functions}
--\entry{square root function}{485}{square root function}
--\entry{cube root function}{485}{cube root function}
--\entry{complex exponentiation functions}{485}{complex exponentiation functions}
--\entry{complex logarithm functions}{485}{complex logarithm functions}
--\entry{hyperbolic functions}{486}{hyperbolic functions}
--\entry{hyperbolic functions}{487}{hyperbolic functions}
--\entry{inverse hyperbolic functions}{487}{inverse hyperbolic functions}
--\entry{inverse complex hyperbolic functions}{487}{inverse complex hyperbolic functions}
--\entry{special functions}{488}{special functions}
--\entry{Bessel functions}{488}{Bessel functions}
--\entry{gamma function}{488}{gamma function}
--\entry{math errors}{490}{math errors}
--\entry{ulps}{490}{ulps}
--\entry{random numbers}{508}{random numbers}
--\entry{pseudo-random numbers}{508}{pseudo-random numbers}
--\entry{seed (for random numbers)}{508}{seed (for random numbers)}
--\entry{Optimization}{515}{Optimization}
--\entry{integer}{517}{integer}
--\entry{signedness}{517}{signedness}
--\entry{maximum possible integer}{518}{maximum possible integer}
--\entry{minimum possible integer}{518}{minimum possible integer}
--\entry{integer division functions}{518}{integer division functions}
--\entry{floating point}{520}{floating point}
--\entry{IEEE 754}{520}{IEEE 754}
--\entry{IEEE floating point}{520}{IEEE floating point}
--\entry{floating-point classes}{520}{floating-point classes}
--\entry{classes, floating-point}{520}{classes, floating-point}
--\entry{exception}{522}{exception}
--\entry{signal}{522}{signal}
--\entry{zero divide}{522}{zero divide}
--\entry{division by zero}{522}{division by zero}
--\entry{inexact exception}{522}{inexact exception}
--\entry{invalid exception}{522}{invalid exception}
--\entry{overflow exception}{522}{overflow exception}
--\entry{underflow exception}{522}{underflow exception}
--\entry{infinity}{524}{infinity}
--\entry{not a number}{524}{not a number}
--\entry{NaN}{524}{NaN}
--\entry{errors, mathematical}{526}{errors, mathematical}
--\entry{domain error}{526}{domain error}
--\entry{range error}{526}{range error}
--\entry{absolute value functions}{530}{absolute value functions}
--\entry{normalization functions (floating-point)}{531}{normalization functions (floating-point)}
--\entry{converting floats to integers}{532}{converting floats to integers}
--\entry{FP arithmetic}{535}{FP arithmetic}
--\entry{NaN}{536}{NaN}
--\entry{unordered comparison}{536}{unordered comparison}
--\entry{minimum}{537}{minimum}
--\entry{maximum}{537}{maximum}
--\entry{positive difference}{537}{positive difference}
--\entry{multiply-add}{537}{multiply-add}
--\entry{butterfly}{538}{butterfly}
--\entry{complex numbers}{538}{complex numbers}
--\entry{project complex numbers}{539}{project complex numbers}
--\entry{conjugate complex numbers}{539}{conjugate complex numbers}
--\entry{decompose complex numbers}{539}{decompose complex numbers}
--\entry{parsing numbers (in formatted input)}{539}{parsing numbers (in formatted input)}
--\entry{converting strings to numbers}{539}{converting strings to numbers}
--\entry{number syntax, parsing}{539}{number syntax, parsing}
--\entry{syntax, for reading numbers}{539}{syntax, for reading numbers}
--\entry{gcvt_r}{546}{gcvt_r}
--\entry{time}{549}{time}
--\entry{calendar time}{549}{calendar time}
--\entry{date}{549}{date}
--\entry{interval}{549}{interval}
--\entry{elapsed time}{549}{elapsed time}
--\entry{time, elapsed}{549}{time, elapsed}
--\entry{period of time}{549}{period of time}
--\entry{CPU time}{549}{CPU time}
--\entry{processor time}{549}{processor time}
--\entry{elapsed time}{549}{elapsed time}
--\entry{timeval}{550}{timeval}
--\entry{timespec}{550}{timespec}
--\entry{CPU time}{551}{CPU time}
--\entry{clock ticks}{551}{clock ticks}
--\entry{ticks, clock}{551}{ticks, clock}
--\entry{processor time}{552}{processor time}
--\entry{CPU time}{552}{CPU time}
--\entry{child process}{552}{child process}
--\entry{simple time}{553}{simple time}
--\entry{high-resolution time}{553}{high-resolution time}
--\entry{local time}{553}{local time}
--\entry{broken-down time}{553}{broken-down time}
--\entry{Gregorian calendar}{553}{Gregorian calendar}
--\entry{calendar, Gregorian}{553}{calendar, Gregorian}
--\entry{epoch}{553}{epoch}
--\entry{broken-down time}{556}{broken-down time}
--\entry{calendar time and broken-down time}{556}{calendar time and broken-down time}
--\entry{leap second}{556}{leap second}
--\entry{Daylight Saving Time}{557}{Daylight Saving Time}
--\entry{summer time}{557}{summer time}
--\entry{time, high precision}{559}{time, high precision}
--\entry{clock, high accuracy}{559}{clock, high accuracy}
--\entry{time zone}{575}{time zone}
--\entry{time zone database}{576}{time zone database}
--\entry{setting an alarm}{578}{setting an alarm}
--\entry{interval timer, setting}{578}{interval timer, setting}
--\entry{alarms, setting}{578}{alarms, setting}
--\entry{timers, setting}{578}{timers, setting}
--\entry{real-time timer}{578}{real-time timer}
--\entry{timer, real-time}{578}{timer, real-time}
--\entry{virtual timer}{578}{virtual timer}
--\entry{timer, virtual}{578}{timer, virtual}
--\entry{profiling timer}{578}{profiling timer}
--\entry{timer, profiling}{578}{timer, profiling}
--\entry{resource limits}{585}{resource limits}
--\entry{limits on resource usage}{585}{limits on resource usage}
--\entry{usage limits}{585}{usage limits}
--\entry{limit}{585}{limit}
--\entry{current limit}{585}{current limit}
--\entry{soft limit}{585}{soft limit}
--\entry{maximum limit}{585}{maximum limit}
--\entry{hard limit}{585}{hard limit}
--\entry{process priority}{589}{process priority}
--\entry{cpu priority}{589}{cpu priority}
--\entry{priority of a process}{589}{priority of a process}
--\entry{absolute priority}{589}{absolute priority}
--\entry{priority, absolute}{589}{priority, absolute}
--\entry{realtime CPU scheduling}{589}{realtime CPU scheduling}
--\entry{ready to run}{590}{ready to run}
--\entry{preemptive scheduling}{590}{preemptive scheduling}
--\entry{runnable process}{590}{runnable process}
--\entry{realtime scheduling}{591}{realtime scheduling}
--\entry{scheduling, traditional}{595}{scheduling, traditional}
--\entry{address space}{598}{address space}
--\entry{physical memory}{598}{physical memory}
--\entry{physical address}{598}{physical address}
--\entry{shared memory}{598}{shared memory}
--\entry{thrashing}{598}{thrashing}
--\entry{memory page}{598}{memory page}
--\entry{page, memory}{598}{page, memory}
--\entry{sysconf}{599}{sysconf}
--\entry{sysconf}{599}{sysconf}
--\entry{sysconf}{600}{sysconf}
--\entry{sysconf}{600}{sysconf}
--\entry{load average}{600}{load average}
--\entry{non-local exits}{601}{non-local exits}
--\entry{long jumps}{601}{long jumps}
--\entry{signal}{611}{signal}
--\entry{generation of signals}{612}{generation of signals}
--\entry{delivery of signals}{612}{delivery of signals}
--\entry{pending signals}{612}{pending signals}
--\entry{blocked signals}{612}{blocked signals}
--\entry{specified action (for a signal)}{612}{specified action (for a signal)}
--\entry{default action (for a signal)}{612}{default action (for a signal)}
--\entry{signal action}{612}{signal action}
--\entry{catching signals}{612}{catching signals}
--\entry{signal names}{613}{signal names}
--\entry{names of signals}{613}{names of signals}
--\entry{signal number}{613}{signal number}
--\entry{program error signals}{613}{program error signals}
--\entry{exception}{614}{exception}
--\entry{floating-point exception}{614}{floating-point exception}
--\entry{illegal instruction}{615}{illegal instruction}
--\entry{segmentation violation}{615}{segmentation violation}
--\entry{bus error}{616}{bus error}
--\entry{abort signal}{616}{abort signal}
--\entry{program termination signals}{616}{program termination signals}
--\entry{termination signal}{616}{termination signal}
--\entry{interrupt signal}{616}{interrupt signal}
--\entry{quit signal}{616}{quit signal}
--\entry{quit signal}{616}{quit signal}
--\entry{kill signal}{617}{kill signal}
--\entry{hangup signal}{617}{hangup signal}
--\entry{alarm signal}{617}{alarm signal}
--\entry{virtual time alarm signal}{618}{virtual time alarm signal}
--\entry{profiling alarm signal}{618}{profiling alarm signal}
--\entry{input available signal}{618}{input available signal}
--\entry{output possible signal}{618}{output possible signal}
--\entry{urgent data signal}{618}{urgent data signal}
--\entry{job control signals}{618}{job control signals}
--\entry{child process signal}{618}{child process signal}
--\entry{continue signal}{619}{continue signal}
--\entry{stop signal}{619}{stop signal}
--\entry{interactive stop signal}{619}{interactive stop signal}
--\entry{terminal input signal}{619}{terminal input signal}
--\entry{terminal output signal}{619}{terminal output signal}
--\entry{pipe signal}{620}{pipe signal}
--\entry{broken pipe signal}{620}{broken pipe signal}
--\entry{lost resource signal}{620}{lost resource signal}
--\entry{user signals}{621}{user signals}
--\entry{signal messages}{621}{signal messages}
--\entry{signal actions}{622}{signal actions}
--\entry{establishing a handler}{622}{establishing a handler}
--\entry{signal function}{622}{\code {signal} function}
--\entry{default action for a signal}{622}{default action for a signal}
--\entry{ignore action for a signal}{622}{ignore action for a signal}
--\entry{sigaction function}{624}{\code {sigaction} function}
--\entry{signal flags}{627}{signal flags}
--\entry{flags for sigaction}{627}{flags for \code {sigaction}}
--\entry{sigaction flags}{627}{\code {sigaction} flags}
--\entry{initial signal actions}{627}{initial signal actions}
--\entry{signal handler function}{628}{signal handler function}
--\entry{non-local exit, from signal handler}{630}{non-local exit, from signal handler}
--\entry{race conditions, relating to signals}{631}{race conditions, relating to signals}
--\entry{handling multiple signals}{632}{handling multiple signals}
--\entry{successive signals}{632}{successive signals}
--\entry{merging of signals}{632}{merging of signals}
--\entry{restrictions on signal handler functions}{634}{restrictions on signal handler functions}
--\entry{volatile declarations}{634}{\code {volatile} declarations}
--\entry{reentrant functions}{635}{reentrant functions}
--\entry{EINTR, and restarting interrupted primitives}{639}{EINTR, and restarting interrupted primitives}
--\entry{restarting interrupted primitives}{639}{restarting interrupted primitives}
--\entry{interrupting primitives}{639}{interrupting primitives}
--\entry{primitives, interrupting}{639}{primitives, interrupting}
--\entry{sending signals}{639}{sending signals}
--\entry{raising signals}{639}{raising signals}
--\entry{signals, generating}{639}{signals, generating}
--\entry{killing a process}{640}{killing a process}
--\entry{interprocess communication, with signals}{642}{interprocess communication, with signals}
--\entry{blocking signals}{643}{blocking signals}
--\entry{signal set}{644}{signal set}
--\entry{signal mask}{645}{signal mask}
--\entry{process signal mask}{645}{process signal mask}
--\entry{blocking signals, in a handler}{646}{blocking signals, in a handler}
--\entry{pending signals, checking for}{647}{pending signals, checking for}
--\entry{blocked signals, checking for}{647}{blocked signals, checking for}
--\entry{checking for pending signals}{647}{checking for pending signals}
--\entry{timing error in signal handling}{649}{timing error in signal handling}
--\entry{waiting for a signal}{650}{waiting for a signal}
--\entry{pause function}{650}{\code {pause} function}
--\entry{process}{657}{process}
--\entry{program}{657}{program}
--\entry{address space}{657}{address space}
--\entry{thread of control}{657}{thread of control}
--\entry{program arguments}{657}{program arguments}
--\entry{command line arguments}{657}{command line arguments}
--\entry{arguments, to program}{657}{arguments, to program}
--\entry{program startup}{657}{program startup}
--\entry{startup of program}{657}{startup of program}
--\entry{invocation of program}{657}{invocation of program}
--\entry{main function}{657}{\code {main} function}
--\entry{argc (program argument count)}{657}{argc (program argument count)}
--\entry{argv (program argument vector)}{657}{argv (program argument vector)}
--\entry{program argument syntax}{658}{program argument syntax}
--\entry{syntax, for program arguments}{658}{syntax, for program arguments}
--\entry{command argument syntax}{658}{command argument syntax}
--\entry{long-named options}{658}{long-named options}
--\entry{program arguments, parsing}{659}{program arguments, parsing}
--\entry{command arguments, parsing}{659}{command arguments, parsing}
--\entry{parsing program arguments}{659}{parsing program arguments}
--\entry{argp (program argument parser)}{666}{argp (program argument parser)}
--\entry{argument parsing with argp}{666}{argument parsing with argp}
--\entry{option parsing with argp}{666}{option parsing with argp}
--\entry{argp parser functions}{671}{argp parser functions}
--\entry{usage messages, in argp}{673}{usage messages, in argp}
--\entry{syntax error messages, in argp}{674}{syntax error messages, in argp}
--\entry{error messages, in argp}{674}{error messages, in argp}
--\entry{ARGP_HELP_FMT environment variable}{688}{ARGP_HELP_FMT environment variable}
--\entry{environment variable}{691}{environment variable}
--\entry{environment}{691}{environment}
--\entry{environment access}{691}{environment access}
--\entry{environment representation}{691}{environment representation}
--\entry{standard environment variables}{693}{standard environment variables}
--\entry{HOME environment variable}{693}{\code {HOME} environment variable}
--\entry{home directory}{693}{home directory}
--\entry{LOGNAME environment variable}{693}{\code {LOGNAME} environment variable}
--\entry{PATH environment variable}{693}{\code {PATH} environment variable}
--\entry{TERM environment variable}{694}{\code {TERM} environment variable}
--\entry{TZ environment variable}{694}{\code {TZ} environment variable}
--\entry{LANG environment variable}{694}{\code {LANG} environment variable}
--\entry{LC_ALL environment variable}{694}{\code {LC_ALL} environment variable}
--\entry{LC_COLLATE environment variable}{694}{\code {LC_COLLATE} environment variable}
--\entry{LC_CTYPE environment variable}{694}{\code {LC_CTYPE} environment variable}
--\entry{LC_MESSAGES environment variable}{694}{\code {LC_MESSAGES} environment variable}
--\entry{LC_MONETARY environment variable}{694}{\code {LC_MONETARY} environment variable}
--\entry{LC_NUMERIC environment variable}{694}{\code {LC_NUMERIC} environment variable}
--\entry{LC_TIME environment variable}{694}{\code {LC_TIME} environment variable}
--\entry{NLSPATH environment variable}{694}{\code {NLSPATH} environment variable}
--\entry{_POSIX_OPTION_ORDER environment variable.}{695}{\code {_POSIX_OPTION_ORDER} environment variable.}
--\entry{system call}{695}{system call}
--\entry{kernel call}{695}{kernel call}
--\entry{system call number}{695}{system call number}
--\entry{errno}{695}{errno}
--\entry{program termination}{696}{program termination}
--\entry{process termination}{696}{process termination}
--\entry{exit status value}{696}{exit status value}
--\entry{exit status}{697}{exit status}
--\entry{aborting a program}{699}{aborting a program}
--\entry{process}{701}{process}
--\entry{child process}{701}{child process}
--\entry{parent process}{701}{parent process}
--\entry{running a command}{701}{running a command}
--\entry{process ID}{702}{process ID}
--\entry{process lifetime}{702}{process lifetime}
--\entry{creating a process}{702}{creating a process}
--\entry{forking a process}{702}{forking a process}
--\entry{child process}{702}{child process}
--\entry{parent process}{702}{parent process}
--\entry{process image}{702}{process image}
--\entry{executing a file}{704}{executing a file}
--\entry{exec functions}{704}{\code {exec} functions}
--\entry{process completion}{706}{process completion}
--\entry{waiting for completion of child process}{706}{waiting for completion of child process}
--\entry{testing exit status of child process}{706}{testing exit status of child process}
--\entry{process groups}{713}{process groups}
--\entry{job control}{713}{job control}
--\entry{job}{713}{job}
--\entry{session}{713}{session}
--\entry{shell}{713}{shell}
--\entry{session}{713}{session}
--\entry{session leader}{713}{session leader}
--\entry{controlling terminal}{713}{controlling terminal}
--\entry{foreground job}{713}{foreground job}
--\entry{background job}{713}{background job}
--\entry{stopped job}{714}{stopped job}
--\entry{job control is optional}{714}{job control is optional}
--\entry{controlling process}{714}{controlling process}
--\entry{controlling terminal, access to}{714}{controlling terminal, access to}
--\entry{SIGTTIN, from background job}{714}{\code {SIGTTIN}, from background job}
--\entry{SIGTTOU, from background job}{715}{\code {SIGTTOU}, from background job}
--\entry{orphaned process group}{715}{orphaned process group}
--\entry{job control, enabling}{717}{job control, enabling}
--\entry{subshell}{717}{subshell}
--\entry{job control, enabling}{717}{job control, enabling}
--\entry{launching jobs}{718}{launching jobs}
--\entry{process group leader}{719}{process group leader}
--\entry{process group ID}{719}{process group ID}
--\entry{race conditions, relating to job control}{719}{race conditions, relating to job control}
--\entry{foreground job, launching}{722}{foreground job, launching}
--\entry{background job, launching}{722}{background job, launching}
--\entry{stopped jobs, detecting}{723}{stopped jobs, detecting}
--\entry{terminated jobs, detecting}{723}{terminated jobs, detecting}
--\entry{SIGCHLD, handling of}{723}{\code {SIGCHLD}, handling of}
--\entry{stopped jobs, continuing}{726}{stopped jobs, continuing}
--\entry{process group functions}{728}{process group functions}
--\entry{job control functions}{728}{job control functions}
--\entry{controlling terminal, determining}{728}{controlling terminal, determining}
--\entry{BSD compatibility library}{729}{BSD compatibility library}
--\entry{Name Service Switch}{733}{Name Service Switch}
--\entry{NSS}{733}{NSS}
--\entry{databases}{733}{databases}
--\entry{ethers}{733}{ethers}
--\entry{group}{733}{group}
--\entry{hosts}{733}{hosts}
--\entry{netgroup}{733}{netgroup}
--\entry{networks}{733}{networks}
--\entry{protocols}{733}{protocols}
--\entry{passwd}{733}{passwd}
--\entry{rpc}{733}{rpc}
--\entry{services}{733}{services}
--\entry{shadow}{733}{shadow}
--\entry{/etc/nsswitch.conf}{734}{\file {/etc/nsswitch.conf}}
--\entry{nsswitch.conf}{734}{\file {nsswitch.conf}}
--\entry{DNS server unavailable}{735}{DNS server unavailable}
--\entry{nisplus, and completeness}{735}{nisplus, and completeness}
--\entry{nisplus, and booting}{735}{nisplus, and booting}
--\entry{bootstrapping, and services}{735}{bootstrapping, and services}
--\entry{default value, and NSS}{736}{default value, and NSS}
--\entry{optimizing NSS}{736}{optimizing NSS}
--\entry{reentrant NSS functions}{737}{reentrant NSS functions}
--\entry{login name}{743}{login name}
--\entry{user name}{743}{user name}
--\entry{user ID}{743}{user ID}
--\entry{group name}{743}{group name}
--\entry{group ID}{743}{group ID}
--\entry{persona}{743}{persona}
--\entry{effective user ID}{743}{effective user ID}
--\entry{effective group ID}{743}{effective group ID}
--\entry{supplementary group IDs}{743}{supplementary group IDs}
--\entry{real user ID}{743}{real user ID}
--\entry{real group ID}{743}{real group ID}
--\entry{setuid programs}{744}{\code {setuid} programs}
--\entry{saved set-user-ID}{744}{saved set-user-ID}
--\entry{saved set-group-ID}{744}{saved set-group-ID}
--\entry{_POSIX_SAVED_IDS}{744}{\code {_POSIX_SAVED_IDS}}
--\entry{login name, determining}{753}{login name, determining}
--\entry{user ID, determining}{753}{user ID, determining}
--\entry{user accounting database}{753}{user accounting database}
--\entry{user database}{761}{user database}
--\entry{password database}{761}{password database}
--\entry{converting user ID to user name}{762}{converting user ID to user name}
--\entry{converting user name to user ID}{762}{converting user name to user ID}
--\entry{scanning the user list}{762}{scanning the user list}
--\entry{group database}{764}{group database}
--\entry{converting group name to group ID}{764}{converting group name to group ID}
--\entry{converting group ID to group name}{764}{converting group ID to group name}
--\entry{scanning the group list}{765}{scanning the group list}
--\entry{Netgroup}{767}{Netgroup}
--\entry{host name}{771}{host name}
--\entry{DNS}{771}{DNS}
--\entry{Domain Name System}{771}{Domain Name System}
--\entry{hostname}{771}{hostname}
--\entry{domain name}{771}{domain name}
--\entry{FQDN}{771}{FQDN}
--\entry{YP}{771}{YP}
--\entry{NIS}{771}{NIS}
--\entry{NIS domain name}{771}{NIS domain name}
--\entry{YP domain name}{771}{YP domain name}
--\entry{/etc/hostname}{772}{/etc/hostname}
--\entry{NIS domain name}{772}{NIS domain name}
--\entry{YP domain name}{772}{YP domain name}
--\entry{NIS domain name}{772}{NIS domain name}
--\entry{YP domain name}{772}{YP domain name}
--\entry{POSIX capacity limits}{787}{POSIX capacity limits}
--\entry{limits, POSIX}{787}{limits, POSIX}
--\entry{capacity limits, POSIX}{787}{capacity limits, POSIX}
--\entry{limits, program argument size}{787}{limits, program argument size}
--\entry{limits, number of processes}{787}{limits, number of processes}
--\entry{limits, number of open files}{787}{limits, number of open files}
--\entry{limits, time zone name length}{787}{limits, time zone name length}
--\entry{limits, number of supplementary group IDs}{787}{limits, number of supplementary group IDs}
--\entry{POSIX optional features}{788}{POSIX optional features}
--\entry{optional POSIX features}{788}{optional POSIX features}
--\entry{limits, link count of files}{799}{limits, link count of files}
--\entry{limits, terminal input queue}{799}{limits, terminal input queue}
--\entry{limits, file name length}{800}{limits, file name length}
--\entry{limits, pipe buffer size}{800}{limits, pipe buffer size}
--\entry{backtrace}{817}{backtrace}
--\entry{backtrace_symbols}{817}{backtrace_symbols}
--\entry{backtrace_fd}{817}{backtrace_fd}
--\entry{consistency checking}{841}{consistency checking}
--\entry{impossible events}{841}{impossible events}
--\entry{assertions}{841}{assertions}
--\entry{variable number of arguments}{842}{variable number of arguments}
--\entry{variadic functions}{842}{variadic functions}
--\entry{optional arguments}{842}{optional arguments}
--\entry{function prototypes (variadic)}{843}{function prototypes (variadic)}
--\entry{prototypes for variadic functions}{843}{prototypes for variadic functions}
--\entry{variadic function prototypes}{843}{variadic function prototypes}
--\entry{variadic function argument access}{844}{variadic function argument access}
--\entry{arguments (variadic functions)}{844}{arguments (variadic functions)}
--\entry{number of arguments passed}{844}{number of arguments passed}
--\entry{how many arguments}{844}{how many arguments}
--\entry{arguments, how many}{844}{arguments, how many}
--\entry{variadic functions, calling}{845}{variadic functions, calling}
--\entry{calling variadic functions}{845}{calling variadic functions}
--\entry{declaring variadic functions}{845}{declaring variadic functions}
--\entry{default argument promotions}{845}{default argument promotions}
--\entry{argument promotion}{845}{argument promotion}
--\entry{null pointer constant}{848}{null pointer constant}
--\entry{integer type width}{850}{integer type width}
--\entry{width of integer type}{850}{width of integer type}
--\entry{type measurements, integer}{850}{type measurements, integer}
--\entry{integer type range}{850}{integer type range}
--\entry{range of integer type}{850}{range of integer type}
--\entry{limits, integer types}{850}{limits, integer types}
--\entry{floating type measurements}{851}{floating type measurements}
--\entry{measurements of floating types}{851}{measurements of floating types}
--\entry{type measurements, floating}{851}{type measurements, floating}
--\entry{limits, floating types}{851}{limits, floating types}
--\entry{sign (of floating point number)}{852}{sign (of floating point number)}
--\entry{base (of floating point number)}{852}{base (of floating point number)}
--\entry{radix (of floating point number)}{852}{radix (of floating point number)}
--\entry{exponent (of floating point number)}{852}{exponent (of floating point number)}
--\entry{bias (of floating point number exponent)}{852}{bias (of floating point number exponent)}
--\entry{mantissa (of floating point number)}{852}{mantissa (of floating point number)}
--\entry{significand (of floating point number)}{852}{significand (of floating point number)}
--\entry{precision (of floating point number)}{852}{precision (of floating point number)}
--\entry{hidden bit (of floating point number mantissa)}{852}{hidden bit (of floating point number mantissa)}
--\entry{normalized floating point number}{852}{normalized floating point number}
--\entry{IEEE floating point representation}{856}{IEEE floating point representation}
--\entry{floating point, IEEE}{856}{floating point, IEEE}
--\entry{configuring}{993}{configuring}
--\entry{compiling}{993}{compiling}
--\entry{installing}{996}{installing}
--\entry{installation tools}{997}{installation tools}
--\entry{tools, for installing library}{997}{tools, for installing library}
--\entry{configurations, all supported}{998}{configurations, all supported}
--\entry{upgrading from libc5}{999}{upgrading from libc5}
--\entry{kernel header files}{999}{kernel header files}
--\entry{reporting bugs}{1000}{reporting bugs}
--\entry{bugs, reporting}{1000}{bugs, reporting}
--\entry{free documentation}{1015}{free documentation}
--\entry{LGPL, Lesser General Public License}{1017}{LGPL, Lesser General Public License}
--\entry{FDL, GNU Free Documentation License}{1027}{FDL, GNU Free Documentation License}
-diff -u -udbrN glibc-2.3.2/manual/libc.cps glibc-2.3.2-200304020432/manual/libc.cps
---- glibc-2.3.2/manual/libc.cps Tue Feb 25 11:34:58 2003
-+++ glibc-2.3.2-200304020432/manual/libc.cps Thu Jan 1 01:00:00 1970
-@@ -1,1034 +0,0 @@
--\initial {/}
--\entry {/etc/hostname}{772}
--\entry {\file {/etc/nsswitch.conf}}{734}
--\initial {_}
--\entry {__va_copy}{85}
--\entry {\code {_POSIX_OPTION_ORDER} environment variable.}{695}
--\entry {\code {_POSIX_SAVED_IDS}}{744}
--\initial {4}
--\entry {4.\var {n} BSD Unix}{3}
--\initial {A}
--\entry {abort signal}{616}
--\entry {aborting a program}{699}
--\entry {absolute file name}{228}
--\entry {absolute priority}{589}
--\entry {absolute value functions}{530}
--\entry {accepting connections}{426}
--\entry {access permission for a file}{380}
--\entry {access, testing for}{382}
--\entry {accessing directories}{353}
--\entry {address of socket}{401}
--\entry {address space}{598, 657}
--\entry {alarm signal}{617}
--\entry {alarms, setting}{578}
--\entry {alignment (in obstacks)}{56}
--\entry {alignment (with \code {malloc})}{38}
--\entry {\code {alloca} disadvantages}{61}
--\entry {\code {alloca} function}{59}
--\entry {allocating pseudo-terminals}{468}
--\entry {allocation (obstacks)}{51}
--\entry {allocation debugging}{45}
--\entry {allocation hooks, for \code {malloc}}{41}
--\entry {allocation of memory with \code {malloc}}{34}
--\entry {allocation size of string}{76}
--\entry {allocation statistics}{43}
--\entry {alphabetic character}{67, 70}
--\entry {alphanumeric character}{68, 70}
--\entry {append-access files}{227}
--\entry {argc (program argument count)}{657}
--\entry {argp (program argument parser)}{666}
--\entry {argp parser functions}{671}
--\entry {ARGP_HELP_FMT environment variable}{688}
--\entry {argument parsing with argp}{666}
--\entry {argument promotion}{845}
--\entry {argument vectors, null-character separated}{107}
--\entry {arguments (variadic functions)}{844}
--\entry {arguments, how many}{844}
--\entry {arguments, to program}{657}
--\entry {argv (program argument vector)}{657}
--\entry {argz vectors (string vectors)}{107}
--\entry {arithmetic expansion}{219}
--\entry {array comparison functions}{89}
--\entry {array copy functions}{79}
--\entry {array search function}{195}
--\entry {array sort function}{196}
--\entry {ASCII character}{68}
--\entry {assertions}{841}
--\entry {attributes of a file}{370}
--\entry {automatic freeing}{59}
--\entry {automatic memory allocation}{33}
--\entry {automatic storage class}{33}
--\entry {automatic storage with variable size}{59}
--\initial {B}
--\entry {background job}{713}
--\entry {background job, launching}{722}
--\entry {backtrace}{817}
--\entry {backtrace_fd}{817}
--\entry {backtrace_symbols}{817}
--\entry {base (of floating point number)}{852}
--\entry {baud rate}{457}
--\entry {Berkeley Unix}{3}
--\entry {Bessel functions}{488}
--\entry {bias (of floating point number exponent)}{852}
--\entry {big-endian}{418}
--\entry {binary I/O to a stream}{249}
--\entry {binary search function (for arrays)}{195}
--\entry {binary stream}{283}
--\entry {binding a socket address}{401}
--\entry {blank character}{68, 72}
--\entry {block I/O to a stream}{249}
--\entry {blocked signals}{612}
--\entry {blocked signals, checking for}{647}
--\entry {blocking signals}{643}
--\entry {blocking signals, in a handler}{646}
--\entry {bootstrapping, and services}{735}
--\entry {break condition, detecting}{451}
--\entry {break condition, generating}{465}
--\entry {breaking a string into tokens}{100}
--\entry {broken pipe signal}{620}
--\entry {broken-down time}{553, 556}
--\entry {BSD compatibility library}{729}
--\entry {BSD compatibility library.}{8}
--\entry {BSD Unix}{3}
--\entry {buffering of streams}{288}
--\entry {buffering, controlling}{290}
--\entry {bugs, reporting}{1000}
--\entry {bus error}{616}
--\entry {butterfly}{538}
--\entry {byte order conversion, for socket}{418}
--\entry {byte stream}{399}
--\initial {C}
--\entry {C++ streams}{239}
--\entry {calendar time}{549}
--\entry {calendar time and broken-down time}{556}
--\entry {calendar, Gregorian}{553}
--\entry {calling variadic functions}{845}
--\entry {canonical input processing}{446}
--\entry {capacity limits, POSIX}{787}
--\entry {carrier detect}{453}
--\entry {case conversion of characters}{69}
--\entry {catching signals}{612}
--\entry {categories for locales}{154}
--\entry {change working directory}{351}
--\entry {changing the locale}{155}
--\entry {changing the size of a block (\code {malloc})}{36}
--\entry {changing the size of a block (obstacks)}{53}
--\entry {channels}{314}
--\entry {character case conversion}{69}
--\entry {character predicates}{67}
--\entry {character testing}{67}
--\entry {checking for pending signals}{647}
--\entry {child process}{552, 701, 702}
--\entry {child process signal}{618}
--\entry {chunks}{57}
--\entry {classes, floating-point}{520}
--\entry {classification of characters}{67}
--\entry {cleaning up a stream}{314}
--\entry {clearing terminal input queue}{465}
--\entry {client}{424}
--\entry {clock ticks}{551}
--\entry {clock, high accuracy}{559}
--\entry {close-on-exec (file descriptor flag)}{339}
--\entry {closing a file descriptor}{303}
--\entry {closing a socket}{422}
--\entry {closing a stream}{235}
--\entry {collating strings}{92}
--\entry {combining locales}{154}
--\entry {command argument syntax}{658}
--\entry {command arguments, parsing}{659}
--\entry {command line arguments}{657}
--\entry {command substitution}{219}
--\entry {communication style (of a socket)}{399}
--\entry {comparing strings and arrays}{89}
--\entry {Comparison Function}{195}
--\entry {compiling}{993}
--\entry {complex exponentiation functions}{485}
--\entry {complex logarithm functions}{485}
--\entry {complex numbers}{538}
--\entry {complex trigonometric functions}{481}
--\entry {concatenating strings}{79}
--\entry {configurations, all supported}{998}
--\entry {configuring}{993}
--\entry {conjugate complex numbers}{539}
--\entry {connecting a socket}{424}
--\entry {connection}{424}
--\entry {consistency checking}{841}
--\entry {consistency checking, of heap}{39}
--\entry {constants}{32, 479}
--\entry {continue signal}{619}
--\entry {control character}{68, 71}
--\entry {control operations on files}{336}
--\entry {controlling process}{714}
--\entry {controlling terminal}{713}
--\entry {controlling terminal, access to}{714}
--\entry {controlling terminal, determining}{728}
--\entry {controlling terminal, setting}{342}
--\entry {conversion specifications (\code {printf})}{250}
--\entry {conversion specifications (\code {scanf})}{272}
--\entry {converting byte order}{418}
--\entry {converting case of characters}{69}
--\entry {converting file descriptor to stream}{313}
--\entry {converting floats to integers}{532}
--\entry {converting group ID to group name}{764}
--\entry {converting group name to group ID}{764}
--\entry {converting host address to name}{413}
--\entry {converting host name to address}{413}
--\entry {converting network name to network number}{443}
--\entry {converting network number to network name}{443}
--\entry {converting port number to service name}{417}
--\entry {converting service name to port number}{417}
--\entry {converting string to collation order}{93}
--\entry {converting strings to numbers}{539}
--\entry {converting user ID to user name}{762}
--\entry {converting user name to user ID}{762}
--\entry {cookie, for custom stream}{295}
--\entry {copy-on-write page fault}{63}
--\entry {copying strings and arrays}{79}
--\entry {cpu priority}{589}
--\entry {CPU time}{549, 551, 552}
--\entry {create on open (file status flag)}{342}
--\entry {creating a directory}{369}
--\entry {creating a FIFO special file}{396}
--\entry {creating a pipe}{393}
--\entry {creating a pipe to a subprocess}{395}
--\entry {creating a process}{702}
--\entry {creating a socket}{422}
--\entry {creating a socket pair}{423}
--\entry {creating special files}{388}
--\entry {cube root function}{485}
--\entry {currency symbols}{159}
--\entry {current limit}{585}
--\entry {current working directory}{351}
--\entry {custom streams}{295}
--\entry {customizing \code {printf}}{266}
--\initial {D}
--\entry {data loss on sockets}{399}
--\entry {databases}{733}
--\entry {datagram socket}{435}
--\entry {datagrams, transmitting}{436}
--\entry {date}{549}
--\entry {Daylight Saving Time}{557}
--\entry {decimal digit character}{67}
--\entry {decimal-point separator}{158}
--\entry {declaration (compared to definition)}{4}
--\entry {declaring variadic functions}{845}
--\entry {decompose complex numbers}{539}
--\entry {default action (for a signal)}{612}
--\entry {default action for a signal}{622}
--\entry {default argument promotions}{845}
--\entry {default value, and NSS}{736}
--\entry {defining new \code {printf} conversions}{266}
--\entry {definition (compared to declaration)}{4}
--\entry {delayed suspend character}{461}
--\entry {deleting a directory}{368}
--\entry {deleting a file}{367}
--\entry {delivery of signals}{612}
--\entry {descriptors and streams}{314}
--\entry {digit character}{67, 71}
--\entry {directories, accessing}{353}
--\entry {directories, creating}{369}
--\entry {directories, deleting}{368}
--\entry {directory}{227}
--\entry {directory entry}{227}
--\entry {directory hierarchy}{360}
--\entry {directory stream}{353}
--\entry {disadvantages of \code {alloca}}{61}
--\entry {DISCARD character}{462}
--\entry {division by zero}{522}
--\entry {DNS}{771}
--\entry {DNS server unavailable}{735}
--\entry {domain (of socket)}{399}
--\entry {domain error}{526}
--\entry {domain name}{771}
--\entry {Domain Name System}{771}
--\entry {dot notation, for Internet addresses}{409}
--\entry {DSUSP character}{461}
--\entry {duplicating file descriptors}{337}
--\entry {dynamic memory allocation}{33}
--\initial {E}
--\entry {EBCDIC}{113}
--\entry {echo of terminal input}{455}
--\entry {effective group ID}{743}
--\entry {effective user ID}{743}
--\entry {efficiency and \code {malloc}}{37}
--\entry {efficiency and obstacks}{55}
--\entry {efficiency of chunks}{57}
--\entry {EINTR, and restarting interrupted primitives}{639}
--\entry {elapsed time}{549}
--\entry {encryption}{105}
--\entry {end of file, on a stream}{281}
--\entry {end-of-file, on a file descriptor}{306}
--\entry {environment}{691}
--\entry {environment access}{691}
--\entry {environment representation}{691}
--\entry {environment variable}{691}
--\entry {environment vectors, null-character separated}{107}
--\entry {envz vectors (environment vectors)}{107}
--\entry {EOF character}{458}
--\entry {EOL character}{459}
--\entry {EOL2 character}{459}
--\entry {epoch}{553}
--\entry {ERASE character}{459}
--\entry {errno}{695}
--\entry {error codes}{15}
--\entry {error messages, in argp}{674}
--\entry {error reporting}{15}
--\entry {errors, mathematical}{526}
--\entry {establishing a handler}{622}
--\entry {ethers}{733}
--\entry {EUC}{113}
--\entry {EUC-JP}{139}
--\entry {exception}{522, 614}
--\entry {exclusive lock}{345}
--\entry {\code {exec} functions}{704}
--\entry {execing a program}{32}
--\entry {executable}{32}
--\entry {executing a file}{704}
--\entry {exit status}{697}
--\entry {exit status value}{696}
--\entry {exiting a program}{32}
--\entry {expansion of shell words}{218}
--\entry {exponent (of floating point number)}{852}
--\entry {exponentiation functions}{483}
--\entry {extending \code {printf}}{266}
--\entry {extracting file descriptor from stream}{313}
--\initial {F}
--\entry {\code {fcntl} function}{336}
--\entry {FDL, GNU Free Documentation License}{1027}
--\entry {feature test macros}{7}
--\entry {field splitting}{219}
--\entry {FIFO special file}{393}
--\entry {file access permission}{380}
--\entry {file access time}{383}
--\entry {file attribute modification time}{383}
--\entry {file attributes}{370}
--\entry {file creation mask}{380}
--\entry {file descriptor flags}{339}
--\entry {file descriptor sets, for \code {select}}{321}
--\entry {file descriptors, standard}{313}
--\entry {file locks}{345}
--\entry {file modification time}{383}
--\entry {file name}{227}
--\entry {file name component}{227}
--\entry {file name errors}{229}
--\entry {file name resolution}{228}
--\entry {file name translation flags}{341}
--\entry {file names, multiple}{363}
--\entry {file owner}{377}
--\entry {file permission bits}{378}
--\entry {file pointer}{231}
--\entry {file position}{226}
--\entry {file positioning on a file descriptor}{310}
--\entry {file positioning on a stream}{284}
--\entry {file status flags}{340}
--\entry {files, accessing}{32}
--\entry {filtering i/o through subprocess}{395}
--\entry {flag character (\code {printf})}{252}
--\entry {flag character (\code {scanf})}{273}
--\entry {flags for \code {sigaction}}{627}
--\entry {flags, file name translation}{341}
--\entry {flags, open-time action}{342}
--\entry {floating point}{520}
--\entry {floating point, IEEE}{856}
--\entry {floating type measurements}{851}
--\entry {floating-point classes}{520}
--\entry {floating-point exception}{614}
--\entry {flow control, terminal}{466}
--\entry {flushing a stream}{289}
--\entry {flushing terminal output queue}{465}
--\entry {foreground job}{713}
--\entry {foreground job, launching}{722}
--\entry {forking a process}{702}
--\entry {format string, for \code {printf}}{250}
--\entry {format string, for \code {scanf}}{272}
--\entry {formatted input from a stream}{272}
--\entry {formatted messages}{297}
--\entry {formatted output to a stream}{250}
--\entry {FP arithmetic}{535}
--\entry {FQDN}{771}
--\entry {frame, real memory}{31}
--\entry {free documentation}{1015}
--\entry {freeing (obstacks)}{52}
--\entry {freeing memory}{32}
--\entry {freeing memory allocated with \code {malloc}}{35}
--\entry {fully buffered stream}{288}
--\entry {function prototypes (variadic)}{843}
--\initial {G}
--\entry {gamma function}{488}
--\entry {gcvt_r}{546}
--\entry {gencat}{176}
--\entry {generation of signals}{612}
--\entry {generic i/o control operations}{349}
--\entry {globbing}{206}
--\entry {graphic character}{68, 71}
--\entry {Gregorian calendar}{553}
--\entry {group}{733}
--\entry {group database}{764}
--\entry {group ID}{743}
--\entry {group name}{743}
--\entry {group owner of a file}{377}
--\entry {grouping of digits}{158}
--\entry {growing objects (in obstacks)}{53}
--\initial {H}
--\entry {handling multiple signals}{632}
--\entry {hangup signal}{617}
--\entry {hard limit}{585}
--\entry {hard link}{363}
--\entry {header files}{4}
--\entry {heap consistency checking}{39}
--\entry {heap, dynamic allocation from}{34}
--\entry {heap, freeing memory from}{35}
--\entry {hexadecimal digit character}{68, 72}
--\entry {hidden bit (of floating point number mantissa)}{852}
--\entry {hierarchy, directory}{360}
--\entry {high-priority data}{433}
--\entry {high-resolution time}{553}
--\entry {holes in files}{311}
--\entry {home directory}{693}
--\entry {\code {HOME} environment variable}{693}
--\entry {hook functions (of custom streams)}{296}
--\entry {host address, Internet}{409}
--\entry {host name}{771}
--\entry {hostname}{771}
--\entry {hosts}{733}
--\entry {hosts database}{413}
--\entry {how many arguments}{844}
--\entry {hyperbolic functions}{486, 487}
--\initial {I}
--\entry {identifying terminals}{445}
--\entry {IEEE 754}{520}
--\entry {IEEE floating point}{520}
--\entry {IEEE floating point representation}{856}
--\entry {IEEE Std 1003.1}{2}
--\entry {IEEE Std 1003.2}{2}
--\entry {ignore action for a signal}{622}
--\entry {illegal instruction}{615}
--\entry {impossible events}{841}
--\entry {independent channels}{314}
--\entry {inexact exception}{522}
--\entry {infinity}{524}
--\entry {initial signal actions}{627}
--\entry {inode number}{373}
--\entry {input available signal}{618}
--\entry {input conversions, for \code {scanf}}{274}
--\entry {input from multiple files}{321}
--\entry {installation tools}{997}
--\entry {installing}{996}
--\entry {integer}{517}
--\entry {integer division functions}{518}
--\entry {integer type range}{850}
--\entry {integer type width}{850}
--\entry {interactive signals, from terminal}{456}
--\entry {interactive stop signal}{619}
--\entry {internal representation}{111}
--\entry {internationalization}{153}
--\entry {Internet host address}{409}
--\entry {Internet namespace, for sockets}{407}
--\entry {interprocess communication, with FIFO}{396}
--\entry {interprocess communication, with pipes}{393}
--\entry {interprocess communication, with signals}{642}
--\entry {interprocess communication, with sockets}{399}
--\entry {interrupt character}{460}
--\entry {interrupt signal}{616}
--\entry {interrupt-driven input}{348}
--\entry {interrupting primitives}{639}
--\entry {interval}{549}
--\entry {interval timer, setting}{578}
--\entry {INTR character}{460}
--\entry {invalid exception}{522}
--\entry {inverse complex hyperbolic functions}{487}
--\entry {inverse complex trigonometric functions}{482}
--\entry {inverse hyperbolic functions}{487}
--\entry {inverse trigonometric functions}{481}
--\entry {invocation of program}{657}
--\entry {IOCTLs}{349}
--\entry {ISO 10646}{111}
--\entry {ISO 2022}{113}
--\entry {ISO 6937}{114}
--\entry {ISO C}{2}
--\entry {ISO-2022-JP}{139}
--\entry {ISO/IEC 9945-1}{2}
--\entry {ISO/IEC 9945-2}{2}
--\initial {J}
--\entry {job}{713}
--\entry {job control}{713}
--\entry {job control functions}{728}
--\entry {job control is optional}{714}
--\entry {job control signals}{618}
--\entry {job control, enabling}{717}
--\initial {K}
--\entry {Kermit the frog}{199}
--\entry {kernel call}{695}
--\entry {kernel header files}{999}
--\entry {KILL character}{460}
--\entry {kill signal}{617}
--\entry {killing a process}{640}
--\entry {Korn Shell}{206}
--\initial {L}
--\entry {LANG environment variable}{173}
--\entry {\code {LANG} environment variable}{694}
--\entry {launching jobs}{718}
--\entry {LC_ALL environment variable}{173}
--\entry {\code {LC_ALL} environment variable}{694}
--\entry {\code {LC_COLLATE} environment variable}{694}
--\entry {\code {LC_CTYPE} environment variable}{694}
--\entry {LC_MESSAGES environment variable}{173}
--\entry {\code {LC_MESSAGES} environment variable}{694}
--\entry {\code {LC_MONETARY} environment variable}{694}
--\entry {\code {LC_NUMERIC} environment variable}{694}
--\entry {\code {LC_TIME} environment variable}{694}
--\entry {leap second}{556}
--\entry {length of string}{76}
--\entry {level, for socket options}{441}
--\entry {LGPL, Lesser General Public License}{1017}
--\entry {library}{1}
--\entry {limit}{585}
--\entry {limits on resource usage}{585}
--\entry {limits, file name length}{800}
--\entry {limits, floating types}{851}
--\entry {limits, integer types}{850}
--\entry {limits, link count of files}{799}
--\entry {limits, number of open files}{787}
--\entry {limits, number of processes}{787}
--\entry {limits, number of supplementary group IDs}{787}
--\entry {limits, pipe buffer size}{800}
--\entry {limits, POSIX}{787}
--\entry {limits, program argument size}{787}
--\entry {limits, terminal input queue}{799}
--\entry {limits, time zone name length}{787}
--\entry {line buffered stream}{288}
--\entry {line speed}{457}
--\entry {lines (in a text file)}{283}
--\entry {link}{227}
--\entry {link, hard}{363}
--\entry {link, soft}{364}
--\entry {link, symbolic}{364}
--\entry {linked channels}{314}
--\entry {listening (sockets)}{425}
--\entry {literals}{32}
--\entry {little-endian}{418}
--\entry {LNEXT character}{462}
--\entry {load average}{600}
--\entry {local namespace, for sockets}{405}
--\entry {local network address number}{409}
--\entry {local time}{553}
--\entry {locale categories}{154}
--\entry {locale, changing}{155}
--\entry {locales}{153}
--\entry {locking pages}{62}
--\entry {logarithm functions}{483}
--\entry {login name}{743}
--\entry {login name, determining}{753}
--\entry {\code {LOGNAME} environment variable}{693}
--\entry {long jumps}{601}
--\entry {long-named options}{658}
--\entry {longjmp}{60}
--\entry {loss of data on sockets}{399}
--\entry {lost resource signal}{620}
--\entry {lower-case character}{67, 71}
--\initial {M}
--\entry {macros}{52}
--\entry {\code {main} function}{657}
--\entry {malloc debugger}{45}
--\entry {\code {malloc} function}{34}
--\entry {mantissa (of floating point number)}{852}
--\entry {matching failure, in \code {scanf}}{272}
--\entry {math errors}{490}
--\entry {mathematical constants}{479}
--\entry {maximum}{537}
--\entry {maximum field width (\code {scanf})}{273}
--\entry {maximum limit}{585}
--\entry {maximum possible integer}{518}
--\entry {measurements of floating types}{851}
--\entry {memory allocation}{31}
--\entry {memory lock}{62}
--\entry {memory mapped file}{32}
--\entry {memory mapped I/O}{32}
--\entry {memory page}{598}
--\entry {merging of signals}{632}
--\entry {MIN termios slot}{463}
--\entry {minimum}{537}
--\entry {minimum field width (\code {printf})}{252}
--\entry {minimum possible integer}{518}
--\entry {mixing descriptors and streams}{314}
--\entry {modem disconnect}{453}
--\entry {modem status lines}{453}
--\entry {monetary value formatting}{158}
--\entry {multi-threaded application}{236}
--\entry {multibyte character}{113}
--\entry {multibyte character string}{75}
--\entry {multibyte string}{76}
--\entry {multiple names for one file}{363}
--\entry {multiplexing input}{321}
--\entry {multiply-add}{537}
--\initial {N}
--\entry {name of running program}{27}
--\entry {name of socket}{401}
--\entry {Name Service Switch}{733}
--\entry {name space}{6}
--\entry {names of signals}{613}
--\entry {namespace (of socket)}{399}
--\entry {NaN}{524, 536}
--\entry {netgroup}{733}
--\entry {Netgroup}{767}
--\entry {network byte order}{418}
--\entry {network number}{409}
--\entry {network protocol}{399}
--\entry {networks}{733}
--\entry {networks database}{443}
--\entry {NIS}{771}
--\entry {NIS domain name}{771, 772}
--\entry {nisplus, and booting}{735}
--\entry {nisplus, and completeness}{735}
--\entry {NLSPATH environment variable}{172}
--\entry {\code {NLSPATH} environment variable}{694}
--\entry {non-blocking open}{342}
--\entry {non-local exit, from signal handler}{630}
--\entry {non-local exits}{601}
--\entry {noncanonical input processing}{446}
--\entry {normalization functions (floating-point)}{531}
--\entry {normalized floating point number}{852}
--\entry {not a number}{524}
--\entry {NSS}{733}
--\entry {\file {nsswitch.conf}}{734}
--\entry {null character}{75}
--\entry {null pointer constant}{848}
--\entry {null wide character}{75}
--\entry {number of arguments passed}{844}
--\entry {number syntax, parsing}{539}
--\entry {numeric value formatting}{158}
--\initial {O}
--\entry {obstack status}{56}
--\entry {obstacks}{49}
--\entry {open-time action flags}{342}
--\entry {opening a file}{225}
--\entry {opening a file descriptor}{303}
--\entry {opening a pipe}{393}
--\entry {opening a pseudo-terminal pair}{470}
--\entry {opening a socket}{422}
--\entry {opening a socket pair}{423}
--\entry {opening a stream}{232}
--\entry {Optimization}{515}
--\entry {optimizing NSS}{736}
--\entry {option parsing with argp}{666}
--\entry {optional arguments}{842}
--\entry {optional POSIX features}{788}
--\entry {orientation, stream}{233, 240}
--\entry {orphaned process group}{715}
--\entry {out-of-band data}{433}
--\entry {output conversions, for \code {printf}}{252}
--\entry {output possible signal}{618}
--\entry {overflow exception}{522}
--\entry {owner of a file}{377}
--\initial {P}
--\entry {packet}{399}
--\entry {page boundary}{38}
--\entry {page fault}{31}
--\entry {page fault, copy-on-write}{63}
--\entry {page frame}{31}
--\entry {page, memory}{598}
--\entry {page, virtual memory}{31}
--\entry {paging}{31, 62}
--\entry {parameter promotion}{77}
--\entry {parent directory}{228}
--\entry {parent process}{701, 702}
--\entry {parity checking}{450}
--\entry {parsing a template string}{263}
--\entry {parsing numbers (in formatted input)}{539}
--\entry {parsing program arguments}{659}
--\entry {parsing tokens from a string}{100}
--\entry {passwd}{733}
--\entry {password database}{761}
--\entry {\code {PATH} environment variable}{693}
--\entry {\code {pause} function}{650}
--\entry {peeking at input}{247}
--\entry {pending signals}{612}
--\entry {pending signals, checking for}{647}
--\entry {period of time}{549}
--\entry {permission to access a file}{380}
--\entry {persona}{743}
--\entry {physical address}{598}
--\entry {physical memory}{598}
--\entry {pi (trigonometric constant)}{480}
--\entry {pipe}{393}
--\entry {pipe signal}{620}
--\entry {pipe to a subprocess}{395}
--\entry {port number}{416}
--\entry {positioning a file descriptor}{310}
--\entry {positioning a stream}{284}
--\entry {positive difference}{537}
--\entry {POSIX}{2}
--\entry {POSIX capacity limits}{787}
--\entry {POSIX optional features}{788}
--\entry {POSIX.1}{2}
--\entry {POSIX.2}{2}
--\entry {power functions}{483}
--\entry {precision (of floating point number)}{852}
--\entry {precision (\code {printf})}{252}
--\entry {predicates on arrays}{89}
--\entry {predicates on characters}{67}
--\entry {predicates on strings}{89}
--\entry {preemptive scheduling}{590}
--\entry {primitives, interrupting}{639}
--\entry {printing character}{68, 71}
--\entry {priority of a process}{589}
--\entry {priority, absolute}{589}
--\entry {process}{657, 701}
--\entry {process completion}{706}
--\entry {process group functions}{728}
--\entry {process group ID}{719}
--\entry {process group leader}{719}
--\entry {process groups}{713}
--\entry {process ID}{702}
--\entry {process image}{702}
--\entry {process lifetime}{702}
--\entry {process priority}{589}
--\entry {process signal mask}{645}
--\entry {process termination}{696}
--\entry {processor time}{549, 552}
--\entry {profiling alarm signal}{618}
--\entry {profiling timer}{578}
--\entry {program}{657}
--\entry {program argument syntax}{658}
--\entry {program arguments}{657}
--\entry {program arguments, parsing}{659}
--\entry {program error signals}{613}
--\entry {program name}{27}
--\entry {program startup}{657}
--\entry {program termination}{696}
--\entry {program termination signals}{616}
--\entry {programming your own streams}{295}
--\entry {project complex numbers}{539}
--\entry {protocol (of socket)}{399}
--\entry {protocol family}{399}
--\entry {protocols}{733}
--\entry {protocols database}{419}
--\entry {prototypes for variadic functions}{843}
--\entry {pseudo-random numbers}{508}
--\entry {pseudo-terminals}{468}
--\entry {punctuation character}{68, 72}
--\entry {pushing input back}{247}
--\initial {Q}
--\entry {quick sort function (for arrays)}{196}
--\entry {QUIT character}{460}
--\entry {quit signal}{616}
--\entry {quote removal}{219}
--\initial {R}
--\entry {race conditions, relating to job control}{719}
--\entry {race conditions, relating to signals}{631}
--\entry {radix (of floating point number)}{852}
--\entry {raising signals}{639}
--\entry {random numbers}{508}
--\entry {random-access files}{226}
--\entry {range error}{526}
--\entry {range of integer type}{850}
--\entry {read lock}{345}
--\entry {reading from a directory}{353}
--\entry {reading from a file descriptor}{306}
--\entry {reading from a socket}{427}
--\entry {reading from a stream, by blocks}{249}
--\entry {reading from a stream, by characters}{243}
--\entry {reading from a stream, formatted}{272}
--\entry {ready to run}{590}
--\entry {real group ID}{743}
--\entry {real user ID}{743}
--\entry {real-time timer}{578}
--\entry {realtime CPU scheduling}{589}
--\entry {realtime processing}{62}
--\entry {realtime scheduling}{591}
--\entry {receiving datagrams}{436}
--\entry {record locking}{345}
--\entry {redirecting input and output}{337}
--\entry {reentrant functions}{635}
--\entry {reentrant NSS functions}{737}
--\entry {relative file name}{228}
--\entry {removal of quotes}{219}
--\entry {removing a file}{367}
--\entry {removing macros that shadow functions}{5}
--\entry {renaming a file}{368}
--\entry {reporting bugs}{1000}
--\entry {reporting errors}{15}
--\entry {REPRINT character}{460}
--\entry {reserved names}{6}
--\entry {resource limits}{585}
--\entry {restarting interrupted primitives}{639}
--\entry {restrictions on signal handler functions}{634}
--\entry {root directory}{228}
--\entry {Rot13}{105}
--\entry {rpc}{733}
--\entry {runnable process}{590}
--\entry {running a command}{701}
--\initial {S}
--\entry {saved set-group-ID}{744}
--\entry {saved set-user-ID}{744}
--\entry {scanning the group list}{765}
--\entry {scanning the user list}{762}
--\entry {scatter-gather}{315}
--\entry {scheduling, traditional}{595}
--\entry {search function (for arrays)}{195}
--\entry {search functions (for strings)}{96}
--\entry {seed (for random numbers)}{508}
--\entry {seeking on a file descriptor}{310}
--\entry {seeking on a stream}{284}
--\entry {segmentation violation}{615}
--\entry {sending a datagram}{436}
--\entry {sending signals}{639}
--\entry {sequential-access files}{226}
--\entry {server}{424}
--\entry {services}{733}
--\entry {services database}{417}
--\entry {session}{713}
--\entry {session leader}{713}
--\entry {setting an alarm}{578}
--\entry {\code {setuid} programs}{744}
--\entry {setuid programs and file access}{382}
--\entry {severity class}{298, 300}
--\entry {sgettext}{190}
--\entry {shadow}{733}
--\entry {shadowing functions with macros}{5}
--\entry {shared lock}{345}
--\entry {shared memory}{598}
--\entry {shell}{713}
--\entry {shift state}{116}
--\entry {Shift_JIS}{113}
--\entry {shrinking objects}{54}
--\entry {shutting down a socket}{422}
--\entry {\code {sigaction} flags}{627}
--\entry {\code {sigaction} function}{624}
--\entry {\code {SIGCHLD}, handling of}{723}
--\entry {sign (of floating point number)}{852}
--\entry {signal}{522, 611}
--\entry {signal action}{612}
--\entry {signal actions}{622}
--\entry {signal flags}{627}
--\entry {\code {signal} function}{622}
--\entry {signal handler function}{628}
--\entry {signal mask}{645}
--\entry {signal messages}{621}
--\entry {signal names}{613}
--\entry {signal number}{613}
--\entry {signal set}{644}
--\entry {signals, generating}{639}
--\entry {signedness}{517}
--\entry {significand (of floating point number)}{852}
--\entry {\code {SIGTTIN}, from background job}{714}
--\entry {\code {SIGTTOU}, from background job}{715}
--\entry {simple time}{553}
--\entry {single-byte string}{76}
--\entry {size of string}{76}
--\entry {SJIS}{113}
--\entry {socket}{399}
--\entry {socket address (name) binding}{401}
--\entry {socket domain}{399}
--\entry {socket namespace}{399}
--\entry {socket option level}{441}
--\entry {socket options}{441}
--\entry {socket pair}{423}
--\entry {socket protocol}{399}
--\entry {socket shutdown}{422}
--\entry {socket, client actions}{424}
--\entry {socket, closing}{422}
--\entry {socket, connecting}{424}
--\entry {socket, creating}{422}
--\entry {socket, initiating a connection}{424}
--\entry {sockets, accepting connections}{426}
--\entry {sockets, listening}{425}
--\entry {sockets, server actions}{425}
--\entry {soft limit}{585}
--\entry {soft link}{364}
--\entry {sort function (for arrays)}{196}
--\entry {sparse files}{311}
--\entry {special files}{388}
--\entry {special functions}{488}
--\entry {specified action (for a signal)}{612}
--\entry {speed of execution}{62}
--\entry {square root function}{485}
--\entry {stable sorting}{196}
--\entry {standard dot notation, for Internet addresses}{409}
--\entry {standard environment variables}{693}
--\entry {standard error file descriptor}{313}
--\entry {standard error stream}{232}
--\entry {standard file descriptors}{313}
--\entry {standard input file descriptor}{313}
--\entry {standard input stream}{231}
--\entry {standard output file descriptor}{313}
--\entry {standard output stream}{231}
--\entry {standard streams}{231}
--\entry {standards}{1}
--\entry {START character}{461}
--\entry {startup of program}{657}
--\entry {stateful}{116, 119, 124, 134, 136, 148}
--\entry {static memory allocation}{33}
--\entry {static storage class}{33}
--\entry {STATUS character}{462}
--\entry {status codes}{15}
--\entry {status of a file}{370}
--\entry {status of obstack}{56}
--\entry {sticky bit}{379}
--\entry {STOP character}{461}
--\entry {stop signal}{619}
--\entry {stopped job}{714}
--\entry {stopped jobs, continuing}{726}
--\entry {stopped jobs, detecting}{723}
--\entry {storage allocation}{31}
--\entry {stream (sockets)}{399}
--\entry {stream orientation}{233, 240}
--\entry {stream, for I/O to a string}{292}
--\entry {streams and descriptors}{314}
--\entry {streams, and file descriptors}{313}
--\entry {streams, C++}{239}
--\entry {streams, standard}{231}
--\entry {string}{75}
--\entry {string allocation}{76}
--\entry {string collation functions}{92}
--\entry {string comparison functions}{89}
--\entry {string concatenation functions}{79}
--\entry {string copy functions}{79}
--\entry {string length}{76}
--\entry {string literal}{75}
--\entry {string search functions}{96}
--\entry {string stream}{292}
--\entry {string vectors, null-character separated}{107}
--\entry {string, representation of}{75}
--\entry {style of communication (of a socket)}{399}
--\entry {subshell}{717}
--\entry {substitution of variables and commands}{219}
--\entry {successive signals}{632}
--\entry {summer time}{557}
--\entry {SunOS}{3}
--\entry {supplementary group IDs}{743}
--\entry {SUSP character}{460}
--\entry {suspend character}{460}
--\entry {SVID}{3}
--\entry {swap space}{31}
--\entry {symbolic link}{364}
--\entry {symbolic link, opening}{342}
--\entry {synchronizing}{323, 332}
--\entry {syntax error messages, in argp}{674}
--\entry {syntax, for program arguments}{658}
--\entry {syntax, for reading numbers}{539}
--\entry {sysconf}{599, 600}
--\entry {system call}{695}
--\entry {system call number}{695}
--\entry {System V Unix}{3}
--\initial {T}
--\entry {TCP (Internet protocol)}{419}
--\entry {template, for \code {printf}}{250}
--\entry {template, for \code {scanf}}{272}
--\entry {\code {TERM} environment variable}{694}
--\entry {terminal flow control}{466}
--\entry {terminal identification}{445}
--\entry {terminal input queue}{446}
--\entry {terminal input queue, clearing}{465}
--\entry {terminal input signal}{619}
--\entry {terminal line control functions}{465}
--\entry {terminal line speed}{457}
--\entry {terminal mode data types}{447}
--\entry {terminal mode functions}{448}
--\entry {terminal modes, BSD}{464}
--\entry {terminal output queue}{446}
--\entry {terminal output queue, flushing}{465}
--\entry {terminal output signal}{619}
--\entry {terminated jobs, detecting}{723}
--\entry {termination signal}{616}
--\entry {testing access permission}{382}
--\entry {testing exit status of child process}{706}
--\entry {text stream}{283}
--\entry {thrashing}{598}
--\entry {thread of control}{657}
--\entry {threads}{236}
--\entry {ticks, clock}{551}
--\entry {tilde expansion}{219}
--\entry {time}{549}
--\entry {TIME termios slot}{463}
--\entry {time zone}{575}
--\entry {time zone database}{576}
--\entry {time, elapsed}{549}
--\entry {time, high precision}{559}
--\entry {timer, profiling}{578}
--\entry {timer, real-time}{578}
--\entry {timer, virtual}{578}
--\entry {timers, setting}{578}
--\entry {timespec}{550}
--\entry {timeval}{550}
--\entry {timing error in signal handling}{649}
--\entry {TMPDIR environment variable}{390}
--\entry {tokenizing strings}{100}
--\entry {tools, for installing library}{997}
--\entry {transmitting datagrams}{436}
--\entry {tree, directory}{360}
--\entry {triangulation}{139}
--\entry {trigonometric functions}{480}
--\entry {type measurements, floating}{851}
--\entry {type measurements, integer}{850}
--\entry {type modifier character (\code {printf})}{252}
--\entry {type modifier character (\code {scanf})}{273}
--\entry {typeahead buffer}{446}
--\entry {\code {TZ} environment variable}{694}
--\initial {U}
--\entry {UCS-2}{111}
--\entry {UCS-4}{111}
--\entry {ulps}{490}
--\entry {umask}{380}
--\entry {unbuffered stream}{288}
--\entry {unconstrained memory allocation}{34}
--\entry {undefining macros that shadow functions}{5}
--\entry {underflow exception}{522}
--\entry {Unicode}{111}
--\entry {Unix, Berkeley}{3}
--\entry {Unix, System V}{3}
--\entry {unlinking a file}{367}
--\entry {unordered comparison}{536}
--\entry {unreading characters}{247}
--\entry {upgrading from libc5}{999}
--\entry {upper-case character}{67, 72}
--\entry {urgent data signal}{618}
--\entry {urgent socket condition}{433}
--\entry {usage limits}{585}
--\entry {usage messages, in argp}{673}
--\entry {user accounting database}{753}
--\entry {user database}{761}
--\entry {user ID}{743}
--\entry {user ID, determining}{753}
--\entry {user name}{743}
--\entry {user signals}{621}
--\entry {usual file name errors}{229}
--\entry {UTF-16}{111}
--\entry {UTF-7}{114}
--\entry {UTF-8}{111, 114}
--\initial {V}
--\entry {va_copy}{85}
--\entry {variable number of arguments}{842}
--\entry {variable substitution}{219}
--\entry {variable-sized arrays}{61}
--\entry {variadic function argument access}{844}
--\entry {variadic function prototypes}{843}
--\entry {variadic functions}{842}
--\entry {variadic functions, calling}{845}
--\entry {virtual time alarm signal}{618}
--\entry {virtual timer}{578}
--\entry {\code {volatile} declarations}{634}
--\initial {W}
--\entry {waiting for a signal}{650}
--\entry {waiting for completion of child process}{706}
--\entry {waiting for input or output}{321}
--\entry {WERASE character}{459}
--\entry {whitespace character}{68, 72}
--\entry {wide character}{111}
--\entry {wide character string}{75, 76}
--\entry {width of integer type}{850}
--\entry {wildcard expansion}{219}
--\entry {wint_t}{77}
--\entry {word expansion}{218}
--\entry {working directory}{351}
--\entry {write lock}{345}
--\entry {writing to a file descriptor}{308}
--\entry {writing to a socket}{427}
--\entry {writing to a stream, by blocks}{249}
--\entry {writing to a stream, by characters}{241}
--\entry {writing to a stream, formatted}{250}
--\initial {Y}
--\entry {YP}{771}
--\entry {YP domain name}{771, 772}
--\initial {Z}
--\entry {zero divide}{522}
-diff -u -udbrN glibc-2.3.2/manual/libc.fn glibc-2.3.2-200304020432/manual/libc.fn
---- glibc-2.3.2/manual/libc.fn Tue Feb 25 11:35:07 2003
-+++ glibc-2.3.2-200304020432/manual/libc.fn Thu Jan 1 01:00:00 1970
-@@ -1,1335 +0,0 @@
--\entry{strerror}{26}{\code {strerror}}
--\entry{strerror_r}{26}{\code {strerror_r}}
--\entry{perror}{26}{\code {perror}}
--\entry{error}{28}{\code {error}}
--\entry{error_at_line}{28}{\code {error_at_line}}
--\entry{warn}{30}{\code {warn}}
--\entry{vwarn}{30}{\code {vwarn}}
--\entry{warnx}{30}{\code {warnx}}
--\entry{vwarnx}{30}{\code {vwarnx}}
--\entry{err}{30}{\code {err}}
--\entry{verr}{30}{\code {verr}}
--\entry{errx}{30}{\code {errx}}
--\entry{verrx}{30}{\code {verrx}}
--\entry{malloc}{34}{\code {malloc}}
--\entry{free}{35}{\code {free}}
--\entry{cfree}{36}{\code {cfree}}
--\entry{realloc}{36}{\code {realloc}}
--\entry{calloc}{37}{\code {calloc}}
--\entry{memalign}{38}{\code {memalign}}
--\entry{posix_memalign}{38}{\code {posix_memalign}}
--\entry{valloc}{38}{\code {valloc}}
--\entry{mallopt}{39}{\code {mallopt}}
--\entry{mcheck}{39}{\code {mcheck}}
--\entry{mprobe}{40}{\code {mprobe}}
--\entry{mallinfo}{44}{\code {mallinfo}}
--\entry{mtrace}{45}{\code {mtrace}}
--\entry{muntrace}{46}{\code {muntrace}}
--\entry{obstack_chunk_alloc}{50}{\code {obstack_chunk_alloc}}
--\entry{obstack_chunk_free}{50}{\code {obstack_chunk_free}}
--\entry{obstack_init}{50}{\code {obstack_init}}
--\entry{obstack_alloc}{51}{\code {obstack_alloc}}
--\entry{obstack_copy}{51}{\code {obstack_copy}}
--\entry{obstack_copy0}{52}{\code {obstack_copy0}}
--\entry{obstack_free}{52}{\code {obstack_free}}
--\entry{obstack_blank}{53}{\code {obstack_blank}}
--\entry{obstack_grow}{53}{\code {obstack_grow}}
--\entry{obstack_grow0}{54}{\code {obstack_grow0}}
--\entry{obstack_1grow}{54}{\code {obstack_1grow}}
--\entry{obstack_ptr_grow}{54}{\code {obstack_ptr_grow}}
--\entry{obstack_int_grow}{54}{\code {obstack_int_grow}}
--\entry{obstack_finish}{54}{\code {obstack_finish}}
--\entry{obstack_object_size}{54}{\code {obstack_object_size}}
--\entry{obstack_room}{55}{\code {obstack_room}}
--\entry{obstack_1grow_fast}{55}{\code {obstack_1grow_fast}}
--\entry{obstack_ptr_grow_fast}{55}{\code {obstack_ptr_grow_fast}}
--\entry{obstack_int_grow_fast}{55}{\code {obstack_int_grow_fast}}
--\entry{obstack_blank_fast}{55}{\code {obstack_blank_fast}}
--\entry{obstack_base}{56}{\code {obstack_base}}
--\entry{obstack_next_free}{56}{\code {obstack_next_free}}
--\entry{obstack_object_size}{56}{\code {obstack_object_size}}
--\entry{obstack_alignment_mask}{57}{\code {obstack_alignment_mask}}
--\entry{obstack_chunk_size}{57}{\code {obstack_chunk_size}}
--\entry{alloca}{59}{\code {alloca}}
--\entry{brk}{62}{\code {brk}}
--\entry{sbrk}{62}{\code {sbrk}}
--\entry{mlock}{64}{\code {mlock}}
--\entry{munlock}{64}{\code {munlock}}
--\entry{mlockall}{64}{\code {mlockall}}
--\entry{munlockall}{65}{\code {munlockall}}
--\entry{islower}{67}{\code {islower}}
--\entry{isupper}{67}{\code {isupper}}
--\entry{isalpha}{67}{\code {isalpha}}
--\entry{isdigit}{68}{\code {isdigit}}
--\entry{isalnum}{68}{\code {isalnum}}
--\entry{isxdigit}{68}{\code {isxdigit}}
--\entry{ispunct}{68}{\code {ispunct}}
--\entry{isspace}{68}{\code {isspace}}
--\entry{isblank}{68}{\code {isblank}}
--\entry{isgraph}{68}{\code {isgraph}}
--\entry{isprint}{68}{\code {isprint}}
--\entry{iscntrl}{68}{\code {iscntrl}}
--\entry{isascii}{68}{\code {isascii}}
--\entry{tolower}{69}{\code {tolower}}
--\entry{toupper}{69}{\code {toupper}}
--\entry{toascii}{69}{\code {toascii}}
--\entry{_tolower}{69}{\code {_tolower}}
--\entry{_toupper}{69}{\code {_toupper}}
--\entry{wctype}{70}{\code {wctype}}
--\entry{iswctype}{70}{\code {iswctype}}
--\entry{iswalnum}{70}{\code {iswalnum}}
--\entry{iswalpha}{70}{\code {iswalpha}}
--\entry{iswcntrl}{71}{\code {iswcntrl}}
--\entry{iswdigit}{71}{\code {iswdigit}}
--\entry{iswgraph}{71}{\code {iswgraph}}
--\entry{iswlower}{71}{\code {iswlower}}
--\entry{iswprint}{71}{\code {iswprint}}
--\entry{iswpunct}{72}{\code {iswpunct}}
--\entry{iswspace}{72}{\code {iswspace}}
--\entry{iswupper}{72}{\code {iswupper}}
--\entry{iswxdigit}{72}{\code {iswxdigit}}
--\entry{iswblank}{72}{\code {iswblank}}
--\entry{wctrans}{74}{\code {wctrans}}
--\entry{towctrans}{74}{\code {towctrans}}
--\entry{towlower}{74}{\code {towlower}}
--\entry{towupper}{74}{\code {towupper}}
--\entry{strlen}{77}{\code {strlen}}
--\entry{wcslen}{78}{\code {wcslen}}
--\entry{strnlen}{78}{\code {strnlen}}
--\entry{wcsnlen}{79}{\code {wcsnlen}}
--\entry{memcpy}{79}{\code {memcpy}}
--\entry{wmemcpy}{79}{\code {wmemcpy}}
--\entry{mempcpy}{80}{\code {mempcpy}}
--\entry{wmempcpy}{80}{\code {wmempcpy}}
--\entry{memmove}{80}{\code {memmove}}
--\entry{wmemmove}{81}{\code {wmemmove}}
--\entry{memccpy}{81}{\code {memccpy}}
--\entry{memset}{81}{\code {memset}}
--\entry{wmemset}{81}{\code {wmemset}}
--\entry{strcpy}{81}{\code {strcpy}}
--\entry{wcscpy}{81}{\code {wcscpy}}
--\entry{strncpy}{81}{\code {strncpy}}
--\entry{wcsncpy}{82}{\code {wcsncpy}}
--\entry{strdup}{82}{\code {strdup}}
--\entry{wcsdup}{82}{\code {wcsdup}}
--\entry{strndup}{82}{\code {strndup}}
--\entry{stpcpy}{83}{\code {stpcpy}}
--\entry{wcpcpy}{83}{\code {wcpcpy}}
--\entry{stpncpy}{83}{\code {stpncpy}}
--\entry{wcpncpy}{84}{\code {wcpncpy}}
--\entry{strdupa}{84}{\code {strdupa}}
--\entry{strndupa}{85}{\code {strndupa}}
--\entry{strcat}{85}{\code {strcat}}
--\entry{wcscat}{85}{\code {wcscat}}
--\entry{strncat}{87}{\code {strncat}}
--\entry{wcsncat}{88}{\code {wcsncat}}
--\entry{bcopy}{88}{\code {bcopy}}
--\entry{bzero}{89}{\code {bzero}}
--\entry{memcmp}{89}{\code {memcmp}}
--\entry{wmemcmp}{89}{\code {wmemcmp}}
--\entry{strcmp}{90}{\code {strcmp}}
--\entry{wcscmp}{90}{\code {wcscmp}}
--\entry{strcasecmp}{90}{\code {strcasecmp}}
--\entry{wcscasecmp}{90}{\code {wcscasecmp}}
--\entry{strncmp}{91}{\code {strncmp}}
--\entry{wcsncmp}{91}{\code {wcsncmp}}
--\entry{strncasecmp}{91}{\code {strncasecmp}}
--\entry{wcsncasecmp}{91}{\code {wcsncasecmp}}
--\entry{strverscmp}{91}{\code {strverscmp}}
--\entry{bcmp}{92}{\code {bcmp}}
--\entry{strcoll}{93}{\code {strcoll}}
--\entry{wcscoll}{93}{\code {wcscoll}}
--\entry{strxfrm}{93}{\code {strxfrm}}
--\entry{wcsxfrm}{94}{\code {wcsxfrm}}
--\entry{memchr}{96}{\code {memchr}}
--\entry{wmemchr}{96}{\code {wmemchr}}
--\entry{rawmemchr}{96}{\code {rawmemchr}}
--\entry{memrchr}{97}{\code {memrchr}}
--\entry{strchr}{97}{\code {strchr}}
--\entry{wcschr}{97}{\code {wcschr}}
--\entry{strchrnul}{97}{\code {strchrnul}}
--\entry{wcschrnul}{97}{\code {wcschrnul}}
--\entry{strrchr}{98}{\code {strrchr}}
--\entry{wcsrchr}{98}{\code {wcsrchr}}
--\entry{strstr}{98}{\code {strstr}}
--\entry{wcsstr}{98}{\code {wcsstr}}
--\entry{wcswcs}{98}{\code {wcswcs}}
--\entry{strcasestr}{98}{\code {strcasestr}}
--\entry{memmem}{99}{\code {memmem}}
--\entry{strspn}{99}{\code {strspn}}
--\entry{wcsspn}{99}{\code {wcsspn}}
--\entry{strcspn}{99}{\code {strcspn}}
--\entry{wcscspn}{99}{\code {wcscspn}}
--\entry{strpbrk}{99}{\code {strpbrk}}
--\entry{wcspbrk}{100}{\code {wcspbrk}}
--\entry{index}{100}{\code {index}}
--\entry{rindex}{100}{\code {rindex}}
--\entry{strtok}{100}{\code {strtok}}
--\entry{wcstok}{101}{\code {wcstok}}
--\entry{strtok_r}{102}{\code {strtok_r}}
--\entry{strsep}{102}{\code {strsep}}
--\entry{basename}{103}{\code {basename}}
--\entry{basename}{104}{\code {basename}}
--\entry{dirname}{104}{\code {dirname}}
--\entry{strfry}{105}{\code {strfry}}
--\entry{memfrob}{105}{\code {memfrob}}
--\entry{l64a}{105}{\code {l64a}}
--\entry{a64l}{106}{\code {a64l}}
--\entry{argz_create}{108}{\code {argz_create}}
--\entry{argz_create_sep}{108}{\code {argz_create_sep}}
--\entry{argz_count}{108}{\code {argz_count}}
--\entry{argz_extract}{108}{\code {argz_extract}}
--\entry{argz_stringify}{108}{\code {argz_stringify}}
--\entry{argz_add}{108}{\code {argz_add}}
--\entry{argz_add_sep}{108}{\code {argz_add_sep}}
--\entry{argz_append}{108}{\code {argz_append}}
--\entry{argz_delete}{109}{\code {argz_delete}}
--\entry{argz_insert}{109}{\code {argz_insert}}
--\entry{argz_next}{109}{\code {argz_next}}
--\entry{argz_replace}{109}{\code {argz_replace}}
--\entry{envz_entry}{110}{\code {envz_entry}}
--\entry{envz_get}{110}{\code {envz_get}}
--\entry{envz_add}{110}{\code {envz_add}}
--\entry{envz_merge}{110}{\code {envz_merge}}
--\entry{envz_strip}{110}{\code {envz_strip}}
--\entry{mbsinit}{117}{\code {mbsinit}}
--\entry{btowc}{118}{\code {btowc}}
--\entry{wctob}{118}{\code {wctob}}
--\entry{mbrtowc}{119}{\code {mbrtowc}}
--\entry{mbrlen}{120}{\code {mbrlen}}
--\entry{wcrtomb}{121}{\code {wcrtomb}}
--\entry{mbsrtowcs}{123}{\code {mbsrtowcs}}
--\entry{wcsrtombs}{124}{\code {wcsrtombs}}
--\entry{mbsnrtowcs}{125}{\code {mbsnrtowcs}}
--\entry{wcsnrtombs}{126}{\code {wcsnrtombs}}
--\entry{mbtowc}{128}{\code {mbtowc}}
--\entry{wctomb}{128}{\code {wctomb}}
--\entry{mblen}{129}{\code {mblen}}
--\entry{mbstowcs}{129}{\code {mbstowcs}}
--\entry{wcstombs}{130}{\code {wcstombs}}
--\entry{iconv_open}{132}{\code {iconv_open}}
--\entry{iconv_close}{133}{\code {iconv_close}}
--\entry{iconv}{134}{\code {iconv}}
--\entry{setlocale}{155}{\code {setlocale}}
--\entry{localeconv}{158}{\code {localeconv}}
--\entry{nl_langinfo}{161}{\code {nl_langinfo}}
--\entry{strfmon}{167}{\code {strfmon}}
--\entry{rpmatch}{170}{\code {rpmatch}}
--\entry{catopen}{171}{\code {catopen}}
--\entry{catgets}{174}{\code {catgets}}
--\entry{catclose}{174}{\code {catclose}}
--\entry{gettext}{181}{\code {gettext}}
--\entry{dgettext}{182}{\code {dgettext}}
--\entry{dcgettext}{182}{\code {dcgettext}}
--\entry{textdomain}{184}{\code {textdomain}}
--\entry{bindtextdomain}{184}{\code {bindtextdomain}}
--\entry{ngettext}{186}{\code {ngettext}}
--\entry{dngettext}{186}{\code {dngettext}}
--\entry{dcngettext}{186}{\code {dcngettext}}
--\entry{bind_textdomain_codeset}{189}{\code {bind_textdomain_codeset}}
--\entry{lfind}{195}{\code {lfind}}
--\entry{lsearch}{196}{\code {lsearch}}
--\entry{bsearch}{196}{\code {bsearch}}
--\entry{qsort}{196}{\code {qsort}}
--\entry{hcreate}{199}{\code {hcreate}}
--\entry{hdestroy}{200}{\code {hdestroy}}
--\entry{hsearch}{200}{\code {hsearch}}
--\entry{hcreate_r}{201}{\code {hcreate_r}}
--\entry{hdestroy_r}{201}{\code {hdestroy_r}}
--\entry{hsearch_r}{201}{\code {hsearch_r}}
--\entry{tsearch}{202}{\code {tsearch}}
--\entry{tfind}{202}{\code {tfind}}
--\entry{tdelete}{202}{\code {tdelete}}
--\entry{tdestroy}{203}{\code {tdestroy}}
--\entry{twalk}{203}{\code {twalk}}
--\entry{fnmatch}{205}{\code {fnmatch}}
--\entry{glob}{209}{\code {glob}}
--\entry{glob64}{209}{\code {glob64}}
--\entry{globfree}{213}{\code {globfree}}
--\entry{globfree64}{213}{\code {globfree64}}
--\entry{regcomp}{214}{\code {regcomp}}
--\entry{regexec}{216}{\code {regexec}}
--\entry{regfree}{218}{\code {regfree}}
--\entry{regerror}{218}{\code {regerror}}
--\entry{wordexp}{220}{\code {wordexp}}
--\entry{wordfree}{220}{\code {wordfree}}
--\entry{fopen}{232}{\code {fopen}}
--\entry{fopen64}{233}{\code {fopen64}}
--\entry{freopen}{234}{\code {freopen}}
--\entry{freopen64}{234}{\code {freopen64}}
--\entry{__freadable}{235}{\code {__freadable}}
--\entry{__fwritable}{235}{\code {__fwritable}}
--\entry{__freading}{235}{\code {__freading}}
--\entry{__fwriting}{235}{\code {__fwriting}}
--\entry{fclose}{235}{\code {fclose}}
--\entry{fcloseall}{236}{\code {fcloseall}}
--\entry{flockfile}{236}{\code {flockfile}}
--\entry{ftrylockfile}{237}{\code {ftrylockfile}}
--\entry{funlockfile}{237}{\code {funlockfile}}
--\entry{__fsetlocking}{238}{\code {__fsetlocking}}
--\entry{fwide}{240}{\code {fwide}}
--\entry{fputc}{241}{\code {fputc}}
--\entry{fputwc}{241}{\code {fputwc}}
--\entry{fputc_unlocked}{241}{\code {fputc_unlocked}}
--\entry{fputwc_unlocked}{241}{\code {fputwc_unlocked}}
--\entry{putc}{241}{\code {putc}}
--\entry{putwc}{242}{\code {putwc}}
--\entry{putc_unlocked}{242}{\code {putc_unlocked}}
--\entry{putwc_unlocked}{242}{\code {putwc_unlocked}}
--\entry{putchar}{242}{\code {putchar}}
--\entry{putwchar}{242}{\code {putwchar}}
--\entry{putchar_unlocked}{242}{\code {putchar_unlocked}}
--\entry{putwchar_unlocked}{242}{\code {putwchar_unlocked}}
--\entry{fputs}{242}{\code {fputs}}
--\entry{fputws}{242}{\code {fputws}}
--\entry{fputs_unlocked}{243}{\code {fputs_unlocked}}
--\entry{fputws_unlocked}{243}{\code {fputws_unlocked}}
--\entry{puts}{243}{\code {puts}}
--\entry{putw}{243}{\code {putw}}
--\entry{fgetc}{243}{\code {fgetc}}
--\entry{fgetwc}{243}{\code {fgetwc}}
--\entry{fgetc_unlocked}{244}{\code {fgetc_unlocked}}
--\entry{fgetwc_unlocked}{244}{\code {fgetwc_unlocked}}
--\entry{getc}{244}{\code {getc}}
--\entry{getwc}{244}{\code {getwc}}
--\entry{getc_unlocked}{244}{\code {getc_unlocked}}
--\entry{getwc_unlocked}{244}{\code {getwc_unlocked}}
--\entry{getchar}{244}{\code {getchar}}
--\entry{getwchar}{244}{\code {getwchar}}
--\entry{getchar_unlocked}{244}{\code {getchar_unlocked}}
--\entry{getwchar_unlocked}{244}{\code {getwchar_unlocked}}
--\entry{getw}{245}{\code {getw}}
--\entry{getline}{245}{\code {getline}}
--\entry{getdelim}{246}{\code {getdelim}}
--\entry{fgets}{246}{\code {fgets}}
--\entry{fgetws}{246}{\code {fgetws}}
--\entry{fgets_unlocked}{247}{\code {fgets_unlocked}}
--\entry{fgetws_unlocked}{247}{\code {fgetws_unlocked}}
--\entry{gets}{247}{\code {gets}}
--\entry{ungetc}{248}{\code {ungetc}}
--\entry{ungetwc}{248}{\code {ungetwc}}
--\entry{fread}{249}{\code {fread}}
--\entry{fread_unlocked}{249}{\code {fread_unlocked}}
--\entry{fwrite}{250}{\code {fwrite}}
--\entry{fwrite_unlocked}{250}{\code {fwrite_unlocked}}
--\entry{printf}{259}{\code {printf}}
--\entry{wprintf}{259}{\code {wprintf}}
--\entry{fprintf}{259}{\code {fprintf}}
--\entry{fwprintf}{259}{\code {fwprintf}}
--\entry{sprintf}{259}{\code {sprintf}}
--\entry{swprintf}{259}{\code {swprintf}}
--\entry{snprintf}{260}{\code {snprintf}}
--\entry{asprintf}{261}{\code {asprintf}}
--\entry{obstack_printf}{261}{\code {obstack_printf}}
--\entry{vprintf}{262}{\code {vprintf}}
--\entry{vwprintf}{262}{\code {vwprintf}}
--\entry{vfprintf}{262}{\code {vfprintf}}
--\entry{vfwprintf}{262}{\code {vfwprintf}}
--\entry{vsprintf}{262}{\code {vsprintf}}
--\entry{vswprintf}{262}{\code {vswprintf}}
--\entry{vsnprintf}{263}{\code {vsnprintf}}
--\entry{vasprintf}{263}{\code {vasprintf}}
--\entry{obstack_vprintf}{263}{\code {obstack_vprintf}}
--\entry{parse_printf_format}{264}{\code {parse_printf_format}}
--\entry{register_printf_function}{267}{\code {register_printf_function}}
--\entry{printf_size}{271}{\code {printf_size}}
--\entry{printf_size_info}{271}{\code {printf_size_info}}
--\entry{scanf}{279}{\code {scanf}}
--\entry{wscanf}{280}{\code {wscanf}}
--\entry{fscanf}{280}{\code {fscanf}}
--\entry{fwscanf}{280}{\code {fwscanf}}
--\entry{sscanf}{280}{\code {sscanf}}
--\entry{swscanf}{280}{\code {swscanf}}
--\entry{vscanf}{281}{\code {vscanf}}
--\entry{vwscanf}{281}{\code {vwscanf}}
--\entry{vfscanf}{281}{\code {vfscanf}}
--\entry{vfwscanf}{281}{\code {vfwscanf}}
--\entry{vsscanf}{281}{\code {vsscanf}}
--\entry{vswscanf}{281}{\code {vswscanf}}
--\entry{feof}{282}{\code {feof}}
--\entry{feof_unlocked}{282}{\code {feof_unlocked}}
--\entry{ferror}{282}{\code {ferror}}
--\entry{ferror_unlocked}{282}{\code {ferror_unlocked}}
--\entry{clearerr}{282}{\code {clearerr}}
--\entry{clearerr_unlocked}{283}{\code {clearerr_unlocked}}
--\entry{ftell}{284}{\code {ftell}}
--\entry{ftello}{284}{\code {ftello}}
--\entry{ftello64}{285}{\code {ftello64}}
--\entry{fseek}{285}{\code {fseek}}
--\entry{fseeko}{285}{\code {fseeko}}
--\entry{fseeko64}{285}{\code {fseeko64}}
--\entry{rewind}{286}{\code {rewind}}
--\entry{fgetpos}{287}{\code {fgetpos}}
--\entry{fgetpos64}{287}{\code {fgetpos64}}
--\entry{fsetpos}{288}{\code {fsetpos}}
--\entry{fsetpos64}{288}{\code {fsetpos64}}
--\entry{fflush}{289}{\code {fflush}}
--\entry{fflush_unlocked}{289}{\code {fflush_unlocked}}
--\entry{_flushlbf}{289}{\code {_flushlbf}}
--\entry{__fpurge}{290}{\code {__fpurge}}
--\entry{setvbuf}{290}{\code {setvbuf}}
--\entry{setbuf}{291}{\code {setbuf}}
--\entry{setbuffer}{291}{\code {setbuffer}}
--\entry{setlinebuf}{291}{\code {setlinebuf}}
--\entry{__flbf}{291}{\code {__flbf}}
--\entry{__fbufsize}{292}{\code {__fbufsize}}
--\entry{__fpending}{292}{\code {__fpending}}
--\entry{fmemopen}{292}{\code {fmemopen}}
--\entry{open_memstream}{293}{\code {open_memstream}}
--\entry{open_obstack_stream}{294}{\code {open_obstack_stream}}
--\entry{fopencookie}{296}{\code {fopencookie}}
--\entry{fmtmsg}{298}{\code {fmtmsg}}
--\entry{addseverity}{300}{\code {addseverity}}
--\entry{open}{303}{\code {open}}
--\entry{open64}{304}{\code {open64}}
--\entry{creat}{304}{\code {creat}}
--\entry{creat64}{305}{\code {creat64}}
--\entry{close}{305}{\code {close}}
--\entry{read}{306}{\code {read}}
--\entry{pread}{307}{\code {pread}}
--\entry{pread64}{307}{\code {pread64}}
--\entry{write}{308}{\code {write}}
--\entry{pwrite}{309}{\code {pwrite}}
--\entry{pwrite64}{310}{\code {pwrite64}}
--\entry{lseek}{310}{\code {lseek}}
--\entry{lseek64}{311}{\code {lseek64}}
--\entry{fdopen}{313}{\code {fdopen}}
--\entry{fileno}{313}{\code {fileno}}
--\entry{fileno_unlocked}{313}{\code {fileno_unlocked}}
--\entry{fclean}{315}{\code {fclean}}
--\entry{readv}{316}{\code {readv}}
--\entry{writev}{316}{\code {writev}}
--\entry{mmap}{317}{\code {mmap}}
--\entry{mmap64}{318}{\code {mmap64}}
--\entry{munmap}{318}{\code {munmap}}
--\entry{msync}{319}{\code {msync}}
--\entry{mremap}{319}{\code {mremap}}
--\entry{madvise}{320}{\code {madvise}}
--\entry{FD_ZERO}{321}{\code {FD_ZERO}}
--\entry{FD_SET}{321}{\code {FD_SET}}
--\entry{FD_CLR}{321}{\code {FD_CLR}}
--\entry{FD_ISSET}{322}{\code {FD_ISSET}}
--\entry{select}{322}{\code {select}}
--\entry{sync}{323}{\code {sync}}
--\entry{fsync}{324}{\code {fsync}}
--\entry{fdatasync}{324}{\code {fdatasync}}
--\entry{aio_read}{327}{\code {aio_read}}
--\entry{aio_read64}{328}{\code {aio_read64}}
--\entry{aio_write}{328}{\code {aio_write}}
--\entry{aio_write64}{329}{\code {aio_write64}}
--\entry{lio_listio}{330}{\code {lio_listio}}
--\entry{lio_listio64}{331}{\code {lio_listio64}}
--\entry{aio_error}{331}{\code {aio_error}}
--\entry{aio_error64}{331}{\code {aio_error64}}
--\entry{aio_return}{332}{\code {aio_return}}
--\entry{aio_return64}{332}{\code {aio_return64}}
--\entry{aio_fsync}{332}{\code {aio_fsync}}
--\entry{aio_fsync64}{333}{\code {aio_fsync64}}
--\entry{aio_suspend}{333}{\code {aio_suspend}}
--\entry{aio_suspend64}{334}{\code {aio_suspend64}}
--\entry{aio_cancel}{334}{\code {aio_cancel}}
--\entry{aio_cancel64}{335}{\code {aio_cancel64}}
--\entry{aio_init}{336}{\code {aio_init}}
--\entry{fcntl}{336}{\code {fcntl}}
--\entry{dup}{337}{\code {dup}}
--\entry{dup2}{337}{\code {dup2}}
--\entry{ioctl}{349}{\code {ioctl}}
--\entry{getcwd}{351}{\code {getcwd}}
--\entry{getwd}{352}{\code {getwd}}
--\entry{get_current_dir_name}{352}{\code {get_current_dir_name}}
--\entry{chdir}{352}{\code {chdir}}
--\entry{fchdir}{352}{\code {fchdir}}
--\entry{IFTODT}{354}{\code {IFTODT}}
--\entry{DTTOIF}{354}{\code {DTTOIF}}
--\entry{opendir}{354}{\code {opendir}}
--\entry{dirfd}{355}{\code {dirfd}}
--\entry{readdir}{355}{\code {readdir}}
--\entry{readdir_r}{355}{\code {readdir_r}}
--\entry{readdir64}{356}{\code {readdir64}}
--\entry{readdir64_r}{356}{\code {readdir64_r}}
--\entry{closedir}{356}{\code {closedir}}
--\entry{rewinddir}{357}{\code {rewinddir}}
--\entry{telldir}{357}{\code {telldir}}
--\entry{seekdir}{357}{\code {seekdir}}
--\entry{scandir}{358}{\code {scandir}}
--\entry{alphasort}{358}{\code {alphasort}}
--\entry{versionsort}{358}{\code {versionsort}}
--\entry{scandir64}{358}{\code {scandir64}}
--\entry{alphasort64}{359}{\code {alphasort64}}
--\entry{versionsort64}{359}{\code {versionsort64}}
--\entry{ftw}{361}{\code {ftw}}
--\entry{ftw64}{362}{\code {ftw64}}
--\entry{nftw}{362}{\code {nftw}}
--\entry{nftw64}{363}{\code {nftw64}}
--\entry{link}{364}{\code {link}}
--\entry{symlink}{365}{\code {symlink}}
--\entry{readlink}{365}{\code {readlink}}
--\entry{canonicalize_file_name}{366}{\code {canonicalize_file_name}}
--\entry{realpath}{367}{\code {realpath}}
--\entry{unlink}{367}{\code {unlink}}
--\entry{rmdir}{368}{\code {rmdir}}
--\entry{remove}{368}{\code {remove}}
--\entry{rename}{368}{\code {rename}}
--\entry{mkdir}{369}{\code {mkdir}}
--\entry{stat}{374}{\code {stat}}
--\entry{stat64}{374}{\code {stat64}}
--\entry{fstat}{375}{\code {fstat}}
--\entry{fstat64}{375}{\code {fstat64}}
--\entry{lstat}{375}{\code {lstat}}
--\entry{lstat64}{375}{\code {lstat64}}
--\entry{S_ISDIR}{376}{\code {S_ISDIR}}
--\entry{S_ISCHR}{376}{\code {S_ISCHR}}
--\entry{S_ISBLK}{376}{\code {S_ISBLK}}
--\entry{S_ISREG}{376}{\code {S_ISREG}}
--\entry{S_ISFIFO}{376}{\code {S_ISFIFO}}
--\entry{S_ISLNK}{376}{\code {S_ISLNK}}
--\entry{S_ISSOCK}{376}{\code {S_ISSOCK}}
--\entry{S_TYPEISMQ}{377}{\code {S_TYPEISMQ}}
--\entry{S_TYPEISSEM}{377}{\code {S_TYPEISSEM}}
--\entry{S_TYPEISSHM}{377}{\code {S_TYPEISSHM}}
--\entry{chown}{377}{\code {chown}}
--\entry{fchown}{378}{\code {fchown}}
--\entry{chmod}{381}{\code {chmod}}
--\entry{umask}{381}{\code {umask}}
--\entry{getumask}{381}{\code {getumask}}
--\entry{chmod}{381}{\code {chmod}}
--\entry{fchmod}{382}{\code {fchmod}}
--\entry{access}{383}{\code {access}}
--\entry{utime}{384}{\code {utime}}
--\entry{utimes}{385}{\code {utimes}}
--\entry{lutimes}{385}{\code {lutimes}}
--\entry{futimes}{385}{\code {futimes}}
--\entry{truncate}{386}{\code {truncate}}
--\entry{truncate64}{386}{\code {truncate64}}
--\entry{ftruncate}{386}{\code {ftruncate}}
--\entry{ftruncate64}{387}{\code {ftruncate64}}
--\entry{mknod}{388}{\code {mknod}}
--\entry{tmpfile}{389}{\code {tmpfile}}
--\entry{tmpfile64}{389}{\code {tmpfile64}}
--\entry{tmpnam}{389}{\code {tmpnam}}
--\entry{tmpnam_r}{389}{\code {tmpnam_r}}
--\entry{tempnam}{390}{\code {tempnam}}
--\entry{mktemp}{390}{\code {mktemp}}
--\entry{mkstemp}{391}{\code {mkstemp}}
--\entry{mkdtemp}{391}{\code {mkdtemp}}
--\entry{pipe}{393}{\code {pipe}}
--\entry{popen}{395}{\code {popen}}
--\entry{pclose}{395}{\code {pclose}}
--\entry{mkfifo}{396}{\code {mkfifo}}
--\entry{bind}{403}{\code {bind}}
--\entry{getsockname}{403}{\code {getsockname}}
--\entry{if_nametoindex}{404}{\code {if_nametoindex}}
--\entry{if_indextoname}{404}{\code {if_indextoname}}
--\entry{if_nameindex}{405}{\code {if_nameindex}}
--\entry{if_freenameindex}{405}{\code {if_freenameindex}}
--\entry{SUN_LEN}{406}{\code {SUN_LEN}}
--\entry{inet_aton}{412}{\code {inet_aton}}
--\entry{inet_addr}{412}{\code {inet_addr}}
--\entry{inet_network}{412}{\code {inet_network}}
--\entry{inet_ntoa}{412}{\code {inet_ntoa}}
--\entry{inet_makeaddr}{412}{\code {inet_makeaddr}}
--\entry{inet_lnaof}{412}{\code {inet_lnaof}}
--\entry{inet_netof}{412}{\code {inet_netof}}
--\entry{inet_pton}{412}{\code {inet_pton}}
--\entry{inet_ntop}{413}{\code {inet_ntop}}
--\entry{gethostbyname}{414}{\code {gethostbyname}}
--\entry{gethostbyname2}{414}{\code {gethostbyname2}}
--\entry{gethostbyaddr}{414}{\code {gethostbyaddr}}
--\entry{gethostbyname_r}{415}{\code {gethostbyname_r}}
--\entry{gethostbyname2_r}{415}{\code {gethostbyname2_r}}
--\entry{gethostbyaddr_r}{415}{\code {gethostbyaddr_r}}
--\entry{sethostent}{416}{\code {sethostent}}
--\entry{gethostent}{416}{\code {gethostent}}
--\entry{endhostent}{416}{\code {endhostent}}
--\entry{getservbyname}{417}{\code {getservbyname}}
--\entry{getservbyport}{418}{\code {getservbyport}}
--\entry{setservent}{418}{\code {setservent}}
--\entry{getservent}{418}{\code {getservent}}
--\entry{endservent}{418}{\code {endservent}}
--\entry{htons}{418}{\code {htons}}
--\entry{ntohs}{419}{\code {ntohs}}
--\entry{htonl}{419}{\code {htonl}}
--\entry{ntohl}{419}{\code {ntohl}}
--\entry{getprotobyname}{420}{\code {getprotobyname}}
--\entry{getprotobynumber}{420}{\code {getprotobynumber}}
--\entry{setprotoent}{420}{\code {setprotoent}}
--\entry{getprotoent}{420}{\code {getprotoent}}
--\entry{endprotoent}{420}{\code {endprotoent}}
--\entry{socket}{422}{\code {socket}}
--\entry{shutdown}{422}{\code {shutdown}}
--\entry{socketpair}{423}{\code {socketpair}}
--\entry{connect}{424}{\code {connect}}
--\entry{listen}{425}{\code {listen}}
--\entry{accept}{426}{\code {accept}}
--\entry{getpeername}{427}{\code {getpeername}}
--\entry{send}{428}{\code {send}}
--\entry{recv}{429}{\code {recv}}
--\entry{sendto}{436}{\code {sendto}}
--\entry{recvfrom}{436}{\code {recvfrom}}
--\entry{getsockopt}{441}{\code {getsockopt}}
--\entry{setsockopt}{441}{\code {setsockopt}}
--\entry{getnetbyname}{443}{\code {getnetbyname}}
--\entry{getnetbyaddr}{444}{\code {getnetbyaddr}}
--\entry{setnetent}{444}{\code {setnetent}}
--\entry{getnetent}{444}{\code {getnetent}}
--\entry{endnetent}{444}{\code {endnetent}}
--\entry{isatty}{445}{\code {isatty}}
--\entry{ttyname}{445}{\code {ttyname}}
--\entry{ttyname_r}{445}{\code {ttyname_r}}
--\entry{tcgetattr}{448}{\code {tcgetattr}}
--\entry{tcsetattr}{448}{\code {tcsetattr}}
--\entry{cfgetospeed}{457}{\code {cfgetospeed}}
--\entry{cfgetispeed}{457}{\code {cfgetispeed}}
--\entry{cfsetospeed}{457}{\code {cfsetospeed}}
--\entry{cfsetispeed}{457}{\code {cfsetispeed}}
--\entry{cfsetspeed}{457}{\code {cfsetspeed}}
--\entry{cfmakeraw}{464}{\code {cfmakeraw}}
--\entry{gtty}{464}{\code {gtty}}
--\entry{stty}{464}{\code {stty}}
--\entry{tcsendbreak}{465}{\code {tcsendbreak}}
--\entry{tcdrain}{465}{\code {tcdrain}}
--\entry{tcflush}{465}{\code {tcflush}}
--\entry{tcflow}{466}{\code {tcflow}}
--\entry{getpt}{468}{\code {getpt}}
--\entry{grantpt}{468}{\code {grantpt}}
--\entry{unlockpt}{469}{\code {unlockpt}}
--\entry{ptsname}{469}{\code {ptsname}}
--\entry{ptsname_r}{469}{\code {ptsname_r}}
--\entry{openpty}{470}{\code {openpty}}
--\entry{forkpty}{470}{\code {forkpty}}
--\entry{openlog}{472}{\code {openlog}}
--\entry{syslog}{474}{\code {syslog}}
--\entry{vsyslog}{476}{\code {vsyslog}}
--\entry{closelog}{476}{\code {closelog}}
--\entry{setlogmask}{477}{\code {setlogmask}}
--\entry{sin}{480}{\code {sin}}
--\entry{sinf}{480}{\code {sinf}}
--\entry{sinl}{480}{\code {sinl}}
--\entry{cos}{480}{\code {cos}}
--\entry{cosf}{480}{\code {cosf}}
--\entry{cosl}{480}{\code {cosl}}
--\entry{tan}{480}{\code {tan}}
--\entry{tanf}{480}{\code {tanf}}
--\entry{tanl}{480}{\code {tanl}}
--\entry{sincos}{480}{\code {sincos}}
--\entry{sincosf}{480}{\code {sincosf}}
--\entry{sincosl}{480}{\code {sincosl}}
--\entry{csin}{481}{\code {csin}}
--\entry{csinf}{481}{\code {csinf}}
--\entry{csinl}{481}{\code {csinl}}
--\entry{ccos}{481}{\code {ccos}}
--\entry{ccosf}{481}{\code {ccosf}}
--\entry{ccosl}{481}{\code {ccosl}}
--\entry{ctan}{481}{\code {ctan}}
--\entry{ctanf}{481}{\code {ctanf}}
--\entry{ctanl}{481}{\code {ctanl}}
--\entry{asin}{481}{\code {asin}}
--\entry{asinf}{481}{\code {asinf}}
--\entry{asinl}{481}{\code {asinl}}
--\entry{acos}{482}{\code {acos}}
--\entry{acosf}{482}{\code {acosf}}
--\entry{acosl}{482}{\code {acosl}}
--\entry{atan}{482}{\code {atan}}
--\entry{atanf}{482}{\code {atanf}}
--\entry{atanl}{482}{\code {atanl}}
--\entry{atan2}{482}{\code {atan2}}
--\entry{atan2f}{482}{\code {atan2f}}
--\entry{atan2l}{482}{\code {atan2l}}
--\entry{casin}{482}{\code {casin}}
--\entry{casinf}{482}{\code {casinf}}
--\entry{casinl}{482}{\code {casinl}}
--\entry{cacos}{482}{\code {cacos}}
--\entry{cacosf}{482}{\code {cacosf}}
--\entry{cacosl}{482}{\code {cacosl}}
--\entry{catan}{482}{\code {catan}}
--\entry{catanf}{482}{\code {catanf}}
--\entry{catanl}{482}{\code {catanl}}
--\entry{exp}{483}{\code {exp}}
--\entry{expf}{483}{\code {expf}}
--\entry{expl}{483}{\code {expl}}
--\entry{exp2}{483}{\code {exp2}}
--\entry{exp2f}{483}{\code {exp2f}}
--\entry{exp2l}{483}{\code {exp2l}}
--\entry{exp10}{483}{\code {exp10}}
--\entry{exp10f}{483}{\code {exp10f}}
--\entry{exp10l}{483}{\code {exp10l}}
--\entry{pow10}{483}{\code {pow10}}
--\entry{pow10f}{483}{\code {pow10f}}
--\entry{pow10l}{483}{\code {pow10l}}
--\entry{log}{483}{\code {log}}
--\entry{logf}{483}{\code {logf}}
--\entry{logl}{483}{\code {logl}}
--\entry{log10}{483}{\code {log10}}
--\entry{log10f}{483}{\code {log10f}}
--\entry{log10l}{483}{\code {log10l}}
--\entry{log2}{483}{\code {log2}}
--\entry{log2f}{483}{\code {log2f}}
--\entry{log2l}{483}{\code {log2l}}
--\entry{logb}{483}{\code {logb}}
--\entry{logbf}{484}{\code {logbf}}
--\entry{logbl}{484}{\code {logbl}}
--\entry{ilogb}{484}{\code {ilogb}}
--\entry{ilogbf}{484}{\code {ilogbf}}
--\entry{ilogbl}{484}{\code {ilogbl}}
--\entry{pow}{484}{\code {pow}}
--\entry{powf}{484}{\code {powf}}
--\entry{powl}{484}{\code {powl}}
--\entry{sqrt}{485}{\code {sqrt}}
--\entry{sqrtf}{485}{\code {sqrtf}}
--\entry{sqrtl}{485}{\code {sqrtl}}
--\entry{cbrt}{485}{\code {cbrt}}
--\entry{cbrtf}{485}{\code {cbrtf}}
--\entry{cbrtl}{485}{\code {cbrtl}}
--\entry{hypot}{485}{\code {hypot}}
--\entry{hypotf}{485}{\code {hypotf}}
--\entry{hypotl}{485}{\code {hypotl}}
--\entry{expm1}{485}{\code {expm1}}
--\entry{expm1f}{485}{\code {expm1f}}
--\entry{expm1l}{485}{\code {expm1l}}
--\entry{log1p}{485}{\code {log1p}}
--\entry{log1pf}{485}{\code {log1pf}}
--\entry{log1pl}{485}{\code {log1pl}}
--\entry{cexp}{485}{\code {cexp}}
--\entry{cexpf}{485}{\code {cexpf}}
--\entry{cexpl}{485}{\code {cexpl}}
--\entry{clog}{485}{\code {clog}}
--\entry{clogf}{486}{\code {clogf}}
--\entry{clogl}{486}{\code {clogl}}
--\entry{clog10}{486}{\code {clog10}}
--\entry{clog10f}{486}{\code {clog10f}}
--\entry{clog10l}{486}{\code {clog10l}}
--\entry{csqrt}{486}{\code {csqrt}}
--\entry{csqrtf}{486}{\code {csqrtf}}
--\entry{csqrtl}{486}{\code {csqrtl}}
--\entry{cpow}{486}{\code {cpow}}
--\entry{cpowf}{486}{\code {cpowf}}
--\entry{cpowl}{486}{\code {cpowl}}
--\entry{sinh}{486}{\code {sinh}}
--\entry{sinhf}{486}{\code {sinhf}}
--\entry{sinhl}{486}{\code {sinhl}}
--\entry{cosh}{486}{\code {cosh}}
--\entry{coshf}{486}{\code {coshf}}
--\entry{coshl}{486}{\code {coshl}}
--\entry{tanh}{487}{\code {tanh}}
--\entry{tanhf}{487}{\code {tanhf}}
--\entry{tanhl}{487}{\code {tanhl}}
--\entry{csinh}{487}{\code {csinh}}
--\entry{csinhf}{487}{\code {csinhf}}
--\entry{csinhl}{487}{\code {csinhl}}
--\entry{ccosh}{487}{\code {ccosh}}
--\entry{ccoshf}{487}{\code {ccoshf}}
--\entry{ccoshl}{487}{\code {ccoshl}}
--\entry{ctanh}{487}{\code {ctanh}}
--\entry{ctanhf}{487}{\code {ctanhf}}
--\entry{ctanhl}{487}{\code {ctanhl}}
--\entry{asinh}{487}{\code {asinh}}
--\entry{asinhf}{487}{\code {asinhf}}
--\entry{asinhl}{487}{\code {asinhl}}
--\entry{acosh}{487}{\code {acosh}}
--\entry{acoshf}{487}{\code {acoshf}}
--\entry{acoshl}{487}{\code {acoshl}}
--\entry{atanh}{487}{\code {atanh}}
--\entry{atanhf}{487}{\code {atanhf}}
--\entry{atanhl}{487}{\code {atanhl}}
--\entry{casinh}{487}{\code {casinh}}
--\entry{casinhf}{487}{\code {casinhf}}
--\entry{casinhl}{487}{\code {casinhl}}
--\entry{cacosh}{488}{\code {cacosh}}
--\entry{cacoshf}{488}{\code {cacoshf}}
--\entry{cacoshl}{488}{\code {cacoshl}}
--\entry{catanh}{488}{\code {catanh}}
--\entry{catanhf}{488}{\code {catanhf}}
--\entry{catanhl}{488}{\code {catanhl}}
--\entry{erf}{488}{\code {erf}}
--\entry{erff}{488}{\code {erff}}
--\entry{erfl}{488}{\code {erfl}}
--\entry{erfc}{488}{\code {erfc}}
--\entry{erfcf}{488}{\code {erfcf}}
--\entry{erfcl}{488}{\code {erfcl}}
--\entry{lgamma}{488}{\code {lgamma}}
--\entry{lgammaf}{488}{\code {lgammaf}}
--\entry{lgammal}{488}{\code {lgammal}}
--\entry{lgamma_r}{489}{\code {lgamma_r}}
--\entry{lgammaf_r}{489}{\code {lgammaf_r}}
--\entry{lgammal_r}{489}{\code {lgammal_r}}
--\entry{gamma}{489}{\code {gamma}}
--\entry{gammaf}{489}{\code {gammaf}}
--\entry{gammal}{489}{\code {gammal}}
--\entry{tgamma}{489}{\code {tgamma}}
--\entry{tgammaf}{489}{\code {tgammaf}}
--\entry{tgammal}{489}{\code {tgammal}}
--\entry{j0}{489}{\code {j0}}
--\entry{j0f}{489}{\code {j0f}}
--\entry{j0l}{489}{\code {j0l}}
--\entry{j1}{489}{\code {j1}}
--\entry{j1f}{489}{\code {j1f}}
--\entry{j1l}{489}{\code {j1l}}
--\entry{jn}{489}{\code {jn}}
--\entry{jnf}{489}{\code {jnf}}
--\entry{jnl}{489}{\code {jnl}}
--\entry{y0}{489}{\code {y0}}
--\entry{y0f}{489}{\code {y0f}}
--\entry{y0l}{489}{\code {y0l}}
--\entry{y1}{490}{\code {y1}}
--\entry{y1f}{490}{\code {y1f}}
--\entry{y1l}{490}{\code {y1l}}
--\entry{yn}{490}{\code {yn}}
--\entry{ynf}{490}{\code {ynf}}
--\entry{ynl}{490}{\code {ynl}}
--\entry{rand}{508}{\code {rand}}
--\entry{srand}{508}{\code {srand}}
--\entry{rand_r}{509}{\code {rand_r}}
--\entry{random}{509}{\code {random}}
--\entry{srandom}{509}{\code {srandom}}
--\entry{initstate}{509}{\code {initstate}}
--\entry{setstate}{509}{\code {setstate}}
--\entry{random_r}{510}{\code {random_r}}
--\entry{srandom_r}{510}{\code {srandom_r}}
--\entry{initstate_r}{510}{\code {initstate_r}}
--\entry{setstate_r}{510}{\code {setstate_r}}
--\entry{drand48}{511}{\code {drand48}}
--\entry{erand48}{511}{\code {erand48}}
--\entry{lrand48}{511}{\code {lrand48}}
--\entry{nrand48}{511}{\code {nrand48}}
--\entry{mrand48}{511}{\code {mrand48}}
--\entry{jrand48}{512}{\code {jrand48}}
--\entry{srand48}{512}{\code {srand48}}
--\entry{seed48}{512}{\code {seed48}}
--\entry{lcong48}{512}{\code {lcong48}}
--\entry{drand48_r}{513}{\code {drand48_r}}
--\entry{erand48_r}{513}{\code {erand48_r}}
--\entry{lrand48_r}{513}{\code {lrand48_r}}
--\entry{nrand48_r}{513}{\code {nrand48_r}}
--\entry{mrand48_r}{514}{\code {mrand48_r}}
--\entry{jrand48_r}{514}{\code {jrand48_r}}
--\entry{srand48_r}{514}{\code {srand48_r}}
--\entry{seed48_r}{514}{\code {seed48_r}}
--\entry{lcong48_r}{515}{\code {lcong48_r}}
--\entry{div}{519}{\code {div}}
--\entry{ldiv}{519}{\code {ldiv}}
--\entry{lldiv}{519}{\code {lldiv}}
--\entry{imaxdiv}{520}{\code {imaxdiv}}
--\entry{fpclassify}{520}{\code {fpclassify}}
--\entry{isfinite}{521}{\code {isfinite}}
--\entry{isnormal}{521}{\code {isnormal}}
--\entry{isnan}{521}{\code {isnan}}
--\entry{isinf}{521}{\code {isinf}}
--\entry{isinff}{521}{\code {isinff}}
--\entry{isinfl}{521}{\code {isinfl}}
--\entry{isnan}{522}{\code {isnan}}
--\entry{isnanf}{522}{\code {isnanf}}
--\entry{isnanl}{522}{\code {isnanl}}
--\entry{finite}{522}{\code {finite}}
--\entry{finitef}{522}{\code {finitef}}
--\entry{finitel}{522}{\code {finitel}}
--\entry{matherr}{522}{\code {matherr}}
--\entry{feclearexcept}{525}{\code {feclearexcept}}
--\entry{feraiseexcept}{525}{\code {feraiseexcept}}
--\entry{fetestexcept}{526}{\code {fetestexcept}}
--\entry{fegetexceptflag}{526}{\code {fegetexceptflag}}
--\entry{fesetexceptflag}{526}{\code {fesetexceptflag}}
--\entry{fegetround}{528}{\code {fegetround}}
--\entry{fesetround}{528}{\code {fesetround}}
--\entry{fegetenv}{529}{\code {fegetenv}}
--\entry{feholdexcept}{529}{\code {feholdexcept}}
--\entry{fesetenv}{529}{\code {fesetenv}}
--\entry{feupdateenv}{530}{\code {feupdateenv}}
--\entry{feenableexcept}{530}{\code {feenableexcept}}
--\entry{fedisableexcept}{530}{\code {fedisableexcept}}
--\entry{fegetexcept}{530}{\code {fegetexcept}}
--\entry{abs}{531}{\code {abs}}
--\entry{labs}{531}{\code {labs}}
--\entry{llabs}{531}{\code {llabs}}
--\entry{imaxabs}{531}{\code {imaxabs}}
--\entry{fabs}{531}{\code {fabs}}
--\entry{fabsf}{531}{\code {fabsf}}
--\entry{fabsl}{531}{\code {fabsl}}
--\entry{cabs}{531}{\code {cabs}}
--\entry{cabsf}{531}{\code {cabsf}}
--\entry{cabsl}{531}{\code {cabsl}}
--\entry{frexp}{531}{\code {frexp}}
--\entry{frexpf}{531}{\code {frexpf}}
--\entry{frexpl}{531}{\code {frexpl}}
--\entry{ldexp}{532}{\code {ldexp}}
--\entry{ldexpf}{532}{\code {ldexpf}}
--\entry{ldexpl}{532}{\code {ldexpl}}
--\entry{scalb}{532}{\code {scalb}}
--\entry{scalbf}{532}{\code {scalbf}}
--\entry{scalbl}{532}{\code {scalbl}}
--\entry{scalbn}{532}{\code {scalbn}}
--\entry{scalbnf}{532}{\code {scalbnf}}
--\entry{scalbnl}{532}{\code {scalbnl}}
--\entry{scalbln}{532}{\code {scalbln}}
--\entry{scalblnf}{532}{\code {scalblnf}}
--\entry{scalblnl}{532}{\code {scalblnl}}
--\entry{significand}{532}{\code {significand}}
--\entry{significandf}{532}{\code {significandf}}
--\entry{significandl}{532}{\code {significandl}}
--\entry{ceil}{533}{\code {ceil}}
--\entry{ceilf}{533}{\code {ceilf}}
--\entry{ceill}{533}{\code {ceill}}
--\entry{floor}{533}{\code {floor}}
--\entry{floorf}{533}{\code {floorf}}
--\entry{floorl}{533}{\code {floorl}}
--\entry{trunc}{533}{\code {trunc}}
--\entry{truncf}{533}{\code {truncf}}
--\entry{truncl}{533}{\code {truncl}}
--\entry{rint}{533}{\code {rint}}
--\entry{rintf}{533}{\code {rintf}}
--\entry{rintl}{533}{\code {rintl}}
--\entry{nearbyint}{533}{\code {nearbyint}}
--\entry{nearbyintf}{533}{\code {nearbyintf}}
--\entry{nearbyintl}{533}{\code {nearbyintl}}
--\entry{round}{533}{\code {round}}
--\entry{roundf}{533}{\code {roundf}}
--\entry{roundl}{533}{\code {roundl}}
--\entry{lrint}{533}{\code {lrint}}
--\entry{lrintf}{533}{\code {lrintf}}
--\entry{lrintl}{533}{\code {lrintl}}
--\entry{llrint}{533}{\code {llrint}}
--\entry{llrintf}{534}{\code {llrintf}}
--\entry{llrintl}{534}{\code {llrintl}}
--\entry{lround}{534}{\code {lround}}
--\entry{lroundf}{534}{\code {lroundf}}
--\entry{lroundl}{534}{\code {lroundl}}
--\entry{llround}{534}{\code {llround}}
--\entry{llroundf}{534}{\code {llroundf}}
--\entry{llroundl}{534}{\code {llroundl}}
--\entry{modf}{534}{\code {modf}}
--\entry{modff}{534}{\code {modff}}
--\entry{modfl}{534}{\code {modfl}}
--\entry{fmod}{534}{\code {fmod}}
--\entry{fmodf}{534}{\code {fmodf}}
--\entry{fmodl}{534}{\code {fmodl}}
--\entry{drem}{534}{\code {drem}}
--\entry{dremf}{535}{\code {dremf}}
--\entry{dreml}{535}{\code {dreml}}
--\entry{remainder}{535}{\code {remainder}}
--\entry{remainderf}{535}{\code {remainderf}}
--\entry{remainderl}{535}{\code {remainderl}}
--\entry{copysign}{535}{\code {copysign}}
--\entry{copysignf}{535}{\code {copysignf}}
--\entry{copysignl}{535}{\code {copysignl}}
--\entry{signbit}{535}{\code {signbit}}
--\entry{nextafter}{535}{\code {nextafter}}
--\entry{nextafterf}{535}{\code {nextafterf}}
--\entry{nextafterl}{535}{\code {nextafterl}}
--\entry{nexttoward}{536}{\code {nexttoward}}
--\entry{nexttowardf}{536}{\code {nexttowardf}}
--\entry{nexttowardl}{536}{\code {nexttowardl}}
--\entry{nan}{536}{\code {nan}}
--\entry{nanf}{536}{\code {nanf}}
--\entry{nanl}{536}{\code {nanl}}
--\entry{isgreater}{536}{\code {isgreater}}
--\entry{isgreaterequal}{536}{\code {isgreaterequal}}
--\entry{isless}{536}{\code {isless}}
--\entry{islessequal}{537}{\code {islessequal}}
--\entry{islessgreater}{537}{\code {islessgreater}}
--\entry{isunordered}{537}{\code {isunordered}}
--\entry{fmin}{537}{\code {fmin}}
--\entry{fminf}{537}{\code {fminf}}
--\entry{fminl}{537}{\code {fminl}}
--\entry{fmax}{537}{\code {fmax}}
--\entry{fmaxf}{537}{\code {fmaxf}}
--\entry{fmaxl}{537}{\code {fmaxl}}
--\entry{fdim}{537}{\code {fdim}}
--\entry{fdimf}{537}{\code {fdimf}}
--\entry{fdiml}{537}{\code {fdiml}}
--\entry{fma}{538}{\code {fma}}
--\entry{fmaf}{538}{\code {fmaf}}
--\entry{fmal}{538}{\code {fmal}}
--\entry{creal}{539}{\code {creal}}
--\entry{crealf}{539}{\code {crealf}}
--\entry{creall}{539}{\code {creall}}
--\entry{cimag}{539}{\code {cimag}}
--\entry{cimagf}{539}{\code {cimagf}}
--\entry{cimagl}{539}{\code {cimagl}}
--\entry{conj}{539}{\code {conj}}
--\entry{conjf}{539}{\code {conjf}}
--\entry{conjl}{539}{\code {conjl}}
--\entry{carg}{539}{\code {carg}}
--\entry{cargf}{539}{\code {cargf}}
--\entry{cargl}{539}{\code {cargl}}
--\entry{cproj}{539}{\code {cproj}}
--\entry{cprojf}{539}{\code {cprojf}}
--\entry{cprojl}{539}{\code {cprojl}}
--\entry{strtol}{540}{\code {strtol}}
--\entry{wcstol}{540}{\code {wcstol}}
--\entry{strtoul}{541}{\code {strtoul}}
--\entry{wcstoul}{541}{\code {wcstoul}}
--\entry{strtoll}{541}{\code {strtoll}}
--\entry{wcstoll}{541}{\code {wcstoll}}
--\entry{strtoq}{541}{\code {strtoq}}
--\entry{wcstoq}{541}{\code {wcstoq}}
--\entry{strtoull}{542}{\code {strtoull}}
--\entry{wcstoull}{542}{\code {wcstoull}}
--\entry{strtouq}{542}{\code {strtouq}}
--\entry{wcstouq}{542}{\code {wcstouq}}
--\entry{strtoimax}{542}{\code {strtoimax}}
--\entry{wcstoimax}{542}{\code {wcstoimax}}
--\entry{strtoumax}{542}{\code {strtoumax}}
--\entry{wcstoumax}{543}{\code {wcstoumax}}
--\entry{atol}{543}{\code {atol}}
--\entry{atoi}{543}{\code {atoi}}
--\entry{atoll}{543}{\code {atoll}}
--\entry{strtod}{544}{\code {strtod}}
--\entry{strtof}{545}{\code {strtof}}
--\entry{strtold}{545}{\code {strtold}}
--\entry{wcstod}{545}{\code {wcstod}}
--\entry{wcstof}{545}{\code {wcstof}}
--\entry{wcstold}{545}{\code {wcstold}}
--\entry{atof}{545}{\code {atof}}
--\entry{ecvt}{546}{\code {ecvt}}
--\entry{fcvt}{546}{\code {fcvt}}
--\entry{gcvt}{546}{\code {gcvt}}
--\entry{qecvt}{546}{\code {qecvt}}
--\entry{qfcvt}{546}{\code {qfcvt}}
--\entry{qgcvt}{546}{\code {qgcvt}}
--\entry{ecvt_r}{547}{\code {ecvt_r}}
--\entry{fcvt_r}{547}{\code {fcvt_r}}
--\entry{qecvt_r}{547}{\code {qecvt_r}}
--\entry{qfcvt_r}{547}{\code {qfcvt_r}}
--\entry{difftime}{549}{\code {difftime}}
--\entry{clock}{552}{\code {clock}}
--\entry{times}{553}{\code {times}}
--\entry{time}{554}{\code {time}}
--\entry{stime}{554}{\code {stime}}
--\entry{gettimeofday}{555}{\code {gettimeofday}}
--\entry{settimeofday}{555}{\code {settimeofday}}
--\entry{adjtime}{555}{\code {adjtime}}
--\entry{adjtimex}{556}{\code {adjtimex}}
--\entry{localtime}{557}{\code {localtime}}
--\entry{localtime_r}{558}{\code {localtime_r}}
--\entry{gmtime}{558}{\code {gmtime}}
--\entry{gmtime_r}{558}{\code {gmtime_r}}
--\entry{mktime}{558}{\code {mktime}}
--\entry{timelocal}{558}{\code {timelocal}}
--\entry{timegm}{559}{\code {timegm}}
--\entry{ntp_gettime}{559}{\code {ntp_gettime}}
--\entry{ntp_adjtime}{561}{\code {ntp_adjtime}}
--\entry{asctime}{562}{\code {asctime}}
--\entry{asctime_r}{562}{\code {asctime_r}}
--\entry{ctime}{562}{\code {ctime}}
--\entry{ctime_r}{562}{\code {ctime_r}}
--\entry{strftime}{563}{\code {strftime}}
--\entry{wcsftime}{567}{\code {wcsftime}}
--\entry{strptime}{567}{\code {strptime}}
--\entry{getdate}{573}{\code {getdate}}
--\entry{getdate_r}{574}{\code {getdate_r}}
--\entry{tzset}{577}{\code {tzset}}
--\entry{setitimer}{579}{\code {setitimer}}
--\entry{getitimer}{579}{\code {getitimer}}
--\entry{alarm}{579}{\code {alarm}}
--\entry{sleep}{580}{\code {sleep}}
--\entry{nanosleep}{581}{\code {nanosleep}}
--\entry{getrusage}{583}{\code {getrusage}}
--\entry{vtimes}{584}{\code {vtimes}}
--\entry{getrlimit}{586}{\code {getrlimit}}
--\entry{getrlimit64}{586}{\code {getrlimit64}}
--\entry{setrlimit}{586}{\code {setrlimit}}
--\entry{setrlimit64}{586}{\code {setrlimit64}}
--\entry{ulimit}{588}{\code {ulimit}}
--\entry{vlimit}{588}{\code {vlimit}}
--\entry{sched_setscheduler}{593}{\code {sched_setscheduler}}
--\entry{sched_getscheduler}{593}{\code {sched_getscheduler}}
--\entry{sched_setparam}{594}{\code {sched_setparam}}
--\entry{sched_getparam}{594}{\code {sched_getparam}}
--\entry{sched_get_priority_min}{594}{\code {sched_get_priority_min}}
--\entry{sched_get_priority_max}{594}{\code {sched_get_priority_max}}
--\entry{sched_rr_get_interval}{594}{\code {sched_rr_get_interval}}
--\entry{sched_yield}{594}{\code {sched_yield}}
--\entry{getpriority}{597}{\code {getpriority}}
--\entry{setpriority}{597}{\code {setpriority}}
--\entry{nice}{597}{\code {nice}}
--\entry{getpagesize}{599}{\code {getpagesize}}
--\entry{get_phys_pages}{599}{\code {get_phys_pages}}
--\entry{get_avphys_pages}{600}{\code {get_avphys_pages}}
--\entry{get_nprocs_conf}{600}{\code {get_nprocs_conf}}
--\entry{get_nprocs}{600}{\code {get_nprocs}}
--\entry{getloadavg}{600}{\code {getloadavg}}
--\entry{setjmp}{602}{\code {setjmp}}
--\entry{longjmp}{602}{\code {longjmp}}
--\entry{sigsetjmp}{603}{\code {sigsetjmp}}
--\entry{siglongjmp}{604}{\code {siglongjmp}}
--\entry{getcontext}{604}{\code {getcontext}}
--\entry{makecontext}{605}{\code {makecontext}}
--\entry{setcontext}{605}{\code {setcontext}}
--\entry{swapcontext}{606}{\code {swapcontext}}
--\entry{strsignal}{621}{\code {strsignal}}
--\entry{psignal}{621}{\code {psignal}}
--\entry{signal}{622}{\code {signal}}
--\entry{sysv_signal}{624}{\code {sysv_signal}}
--\entry{ssignal}{624}{\code {ssignal}}
--\entry{sigaction}{625}{\code {sigaction}}
--\entry{TEMP_FAILURE_RETRY}{638}{\code {TEMP_FAILURE_RETRY}}
--\entry{raise}{639}{\code {raise}}
--\entry{gsignal}{639}{\code {gsignal}}
--\entry{kill}{640}{\code {kill}}
--\entry{killpg}{641}{\code {killpg}}
--\entry{sigemptyset}{644}{\code {sigemptyset}}
--\entry{sigfillset}{644}{\code {sigfillset}}
--\entry{sigaddset}{644}{\code {sigaddset}}
--\entry{sigdelset}{644}{\code {sigdelset}}
--\entry{sigismember}{645}{\code {sigismember}}
--\entry{sigprocmask}{645}{\code {sigprocmask}}
--\entry{sigpending}{647}{\code {sigpending}}
--\entry{pause}{650}{\code {pause}}
--\entry{sigsuspend}{651}{\code {sigsuspend}}
--\entry{sigaltstack}{653}{\code {sigaltstack}}
--\entry{sigstack}{653}{\code {sigstack}}
--\entry{sigvec}{655}{\code {sigvec}}
--\entry{siginterrupt}{655}{\code {siginterrupt}}
--\entry{sigmask}{655}{\code {sigmask}}
--\entry{sigblock}{655}{\code {sigblock}}
--\entry{sigsetmask}{655}{\code {sigsetmask}}
--\entry{sigpause}{656}{\code {sigpause}}
--\entry{main}{657}{\code {main}}
--\entry{getopt}{659}{\code {getopt}}
--\entry{getopt_long}{663}{\code {getopt_long}}
--\entry{getopt_long_only}{663}{\code {getopt_long_only}}
--\entry{argp_parse}{666}{\code {argp_parse}}
--\entry{argp_usage}{674}{\code {argp_usage}}
--\entry{argp_error}{674}{\code {argp_error}}
--\entry{argp_failure}{674}{\code {argp_failure}}
--\entry{argp_state_help}{674}{\code {argp_state_help}}
--\entry{argp_help}{679}{\code {argp_help}}
--\entry{getsubopt}{689}{\code {getsubopt}}
--\entry{getenv}{691}{\code {getenv}}
--\entry{putenv}{692}{\code {putenv}}
--\entry{setenv}{692}{\code {setenv}}
--\entry{unsetenv}{692}{\code {unsetenv}}
--\entry{clearenv}{692}{\code {clearenv}}
--\entry{syscall}{695}{\code {syscall}}
--\entry{exit}{696}{\code {exit}}
--\entry{atexit}{698}{\code {atexit}}
--\entry{on_exit}{698}{\code {on_exit}}
--\entry{abort}{699}{\code {abort}}
--\entry{_exit}{699}{\code {_exit}}
--\entry{_Exit}{699}{\code {_Exit}}
--\entry{system}{701}{\code {system}}
--\entry{getpid}{702}{\code {getpid}}
--\entry{getppid}{702}{\code {getppid}}
--\entry{fork}{703}{\code {fork}}
--\entry{vfork}{703}{\code {vfork}}
--\entry{execv}{704}{\code {execv}}
--\entry{execl}{704}{\code {execl}}
--\entry{execve}{704}{\code {execve}}
--\entry{execle}{704}{\code {execle}}
--\entry{execvp}{705}{\code {execvp}}
--\entry{execlp}{705}{\code {execlp}}
--\entry{waitpid}{706}{\code {waitpid}}
--\entry{wait}{708}{\code {wait}}
--\entry{wait4}{708}{\code {wait4}}
--\entry{WIFEXITED}{709}{\code {WIFEXITED}}
--\entry{WEXITSTATUS}{709}{\code {WEXITSTATUS}}
--\entry{WIFSIGNALED}{709}{\code {WIFSIGNALED}}
--\entry{WTERMSIG}{709}{\code {WTERMSIG}}
--\entry{WCOREDUMP}{709}{\code {WCOREDUMP}}
--\entry{WIFSTOPPED}{709}{\code {WIFSTOPPED}}
--\entry{WSTOPSIG}{709}{\code {WSTOPSIG}}
--\entry{wait3}{710}{\code {wait3}}
--\entry{ctermid}{728}{\code {ctermid}}
--\entry{setsid}{728}{\code {setsid}}
--\entry{getsid}{729}{\code {getsid}}
--\entry{getpgrp}{729}{\code {getpgrp}}
--\entry{getpgrp}{729}{\code {getpgrp}}
--\entry{getpgid}{729}{\code {getpgid}}
--\entry{setpgid}{729}{\code {setpgid}}
--\entry{setpgrp}{730}{\code {setpgrp}}
--\entry{tcgetpgrp}{730}{\code {tcgetpgrp}}
--\entry{tcsetpgrp}{730}{\code {tcsetpgrp}}
--\entry{tcgetsid}{731}{\code {tcgetsid}}
--\entry{success}{735}{\code {success}}
--\entry{notfound}{735}{\code {notfound}}
--\entry{unavail}{735}{\code {unavail}}
--\entry{tryagain}{735}{\code {tryagain}}
--\entry{getuid}{745}{\code {getuid}}
--\entry{getgid}{745}{\code {getgid}}
--\entry{geteuid}{745}{\code {geteuid}}
--\entry{getegid}{745}{\code {getegid}}
--\entry{getgroups}{745}{\code {getgroups}}
--\entry{seteuid}{746}{\code {seteuid}}
--\entry{setuid}{746}{\code {setuid}}
--\entry{setreuid}{746}{\code {setreuid}}
--\entry{setegid}{747}{\code {setegid}}
--\entry{setgid}{747}{\code {setgid}}
--\entry{setregid}{747}{\code {setregid}}
--\entry{setgroups}{748}{\code {setgroups}}
--\entry{initgroups}{748}{\code {initgroups}}
--\entry{getgrouplist}{748}{\code {getgrouplist}}
--\entry{getlogin}{753}{\code {getlogin}}
--\entry{cuserid}{753}{\code {cuserid}}
--\entry{setutent}{755}{\code {setutent}}
--\entry{getutent}{755}{\code {getutent}}
--\entry{endutent}{756}{\code {endutent}}
--\entry{getutid}{756}{\code {getutid}}
--\entry{getutline}{756}{\code {getutline}}
--\entry{pututline}{756}{\code {pututline}}
--\entry{getutent_r}{757}{\code {getutent_r}}
--\entry{getutid_r}{757}{\code {getutid_r}}
--\entry{getutline_r}{757}{\code {getutline_r}}
--\entry{utmpname}{757}{\code {utmpname}}
--\entry{updwtmp}{758}{\code {updwtmp}}
--\entry{setutxent}{759}{\code {setutxent}}
--\entry{getutxent}{759}{\code {getutxent}}
--\entry{endutxent}{759}{\code {endutxent}}
--\entry{getutxid}{759}{\code {getutxid}}
--\entry{getutxline}{760}{\code {getutxline}}
--\entry{pututxline}{760}{\code {pututxline}}
--\entry{utmpxname}{760}{\code {utmpxname}}
--\entry{getutmp}{760}{\code {getutmp}}
--\entry{getutmpx}{760}{\code {getutmpx}}
--\entry{login_tty}{760}{\code {login_tty}}
--\entry{login}{760}{\code {login}}
--\entry{logout}{761}{\code {logout}}
--\entry{logwtmp}{761}{\code {logwtmp}}
--\entry{getpwuid}{762}{\code {getpwuid}}
--\entry{getpwuid_r}{762}{\code {getpwuid_r}}
--\entry{getpwnam}{762}{\code {getpwnam}}
--\entry{getpwnam_r}{762}{\code {getpwnam_r}}
--\entry{fgetpwent}{762}{\code {fgetpwent}}
--\entry{fgetpwent_r}{763}{\code {fgetpwent_r}}
--\entry{setpwent}{763}{\code {setpwent}}
--\entry{getpwent}{763}{\code {getpwent}}
--\entry{getpwent_r}{763}{\code {getpwent_r}}
--\entry{endpwent}{763}{\code {endpwent}}
--\entry{putpwent}{763}{\code {putpwent}}
--\entry{getgrgid}{764}{\code {getgrgid}}
--\entry{getgrgid_r}{764}{\code {getgrgid_r}}
--\entry{getgrnam}{765}{\code {getgrnam}}
--\entry{getgrnam_r}{765}{\code {getgrnam_r}}
--\entry{fgetgrent}{765}{\code {fgetgrent}}
--\entry{fgetgrent_r}{765}{\code {fgetgrent_r}}
--\entry{setgrent}{766}{\code {setgrent}}
--\entry{getgrent}{766}{\code {getgrent}}
--\entry{getgrent_r}{766}{\code {getgrent_r}}
--\entry{endgrent}{766}{\code {endgrent}}
--\entry{setnetgrent}{768}{\code {setnetgrent}}
--\entry{getnetgrent}{768}{\code {getnetgrent}}
--\entry{getnetgrent_r}{769}{\code {getnetgrent_r}}
--\entry{endnetgrent}{769}{\code {endnetgrent}}
--\entry{innetgr}{769}{\code {innetgr}}
--\entry{gethostname}{771}{\code {gethostname}}
--\entry{sethostname}{772}{\code {sethostname}}
--\entry{getdomainnname}{772}{\code {getdomainnname}}
--\entry{setdomainname}{772}{\code {setdomainname}}
--\entry{gethostid}{772}{\code {gethostid}}
--\entry{sethostid}{773}{\code {sethostid}}
--\entry{uname}{774}{\code {uname}}
--\entry{setfsent}{776}{\code {setfsent}}
--\entry{endfsent}{776}{\code {endfsent}}
--\entry{getfsent}{777}{\code {getfsent}}
--\entry{getfsspec}{777}{\code {getfsspec}}
--\entry{getfsfile}{777}{\code {getfsfile}}
--\entry{setmntent}{779}{\code {setmntent}}
--\entry{endmntent}{779}{\code {endmntent}}
--\entry{getmntent}{779}{\code {getmntent}}
--\entry{getmntent_r}{780}{\code {getmntent_r}}
--\entry{addmntent}{780}{\code {addmntent}}
--\entry{hasmntopt}{780}{\code {hasmntopt}}
--\entry{mount}{781}{\code {mount}}
--\entry{umount2}{783}{\code {umount2}}
--\entry{umount}{784}{\code {umount}}
--\entry{sysctl}{784}{\code {sysctl}}
--\entry{sysconf}{790}{\code {sysconf}}
--\entry{pathconf}{802}{\code {pathconf}}
--\entry{fpathconf}{803}{\code {fpathconf}}
--\entry{confstr}{805}{\code {confstr}}
--\entry{getpass}{810}{\code {getpass}}
--\entry{crypt}{811}{\code {crypt}}
--\entry{crypt_r}{812}{\code {crypt_r}}
--\entry{setkey}{813}{\code {setkey}}
--\entry{encrypt}{813}{\code {encrypt}}
--\entry{setkey_r}{813}{\code {setkey_r}}
--\entry{encrypt_r}{813}{\code {encrypt_r}}
--\entry{ecb_crypt}{814}{\code {ecb_crypt}}
--\entry{DES_FAILED}{814}{\code {DES_FAILED}}
--\entry{cbc_crypt}{814}{\code {cbc_crypt}}
--\entry{des_setparity}{815}{\code {des_setparity}}
--\entry{backtrace}{817}{\code {backtrace}}
--\entry{backtrace_symbols}{817}{\code {backtrace_symbols}}
--\entry{backtrace_symbols_fd}{818}{\code {backtrace_symbols_fd}}
--\entry{pthread_create}{819}{\code {pthread_create}}
--\entry{pthread_exit}{819}{\code {pthread_exit}}
--\entry{pthread_cancel}{819}{\code {pthread_cancel}}
--\entry{pthread_join}{820}{\code {pthread_join}}
--\entry{pthread_attr_init}{820}{\code {pthread_attr_init}}
--\entry{pthread_attr_destroy}{821}{\code {pthread_attr_destroy}}
--\entry{pthread_attr_setdetachstate}{821}{\code {pthread_attr_setdetachstate}}
--\entry{pthread_attr_setguardsize}{821}{\code {pthread_attr_setguardsize}}
--\entry{pthread_attr_setinheritsched}{821}{\code {pthread_attr_setinheritsched}}
--\entry{pthread_attr_setschedparam}{821}{\code {pthread_attr_setschedparam}}
--\entry{pthread_attr_setschedpolicy}{821}{\code {pthread_attr_setschedpolicy}}
--\entry{pthread_attr_setscope}{821}{\code {pthread_attr_setscope}}
--\entry{pthread_attr_setstack}{821}{\code {pthread_attr_setstack}}
--\entry{pthread_attr_setstackaddr}{821}{\code {pthread_attr_setstackaddr}}
--\entry{pthread_attr_setstacksize}{821}{\code {pthread_attr_setstacksize}}
--\entry{pthread_attr_setattr}{821}{\code {pthread_attr_setattr}}
--\entry{pthread_attr_getdetachstate}{821}{\code {pthread_attr_getdetachstate}}
--\entry{pthread_attr_getguardsize}{821}{\code {pthread_attr_getguardsize}}
--\entry{pthread_attr_getinheritsched}{821}{\code {pthread_attr_getinheritsched}}
--\entry{pthread_attr_getschedparam}{821}{\code {pthread_attr_getschedparam}}
--\entry{pthread_attr_getschedpolicy}{821}{\code {pthread_attr_getschedpolicy}}
--\entry{pthread_attr_getscope}{821}{\code {pthread_attr_getscope}}
--\entry{pthread_attr_getstack}{821}{\code {pthread_attr_getstack}}
--\entry{pthread_attr_getstackaddr}{821}{\code {pthread_attr_getstackaddr}}
--\entry{pthread_attr_getstacksize}{821}{\code {pthread_attr_getstacksize}}
--\entry{pthread_attr_getattr}{821}{\code {pthread_attr_getattr}}
--\entry{pthread_setcancelstate}{823}{\code {pthread_setcancelstate}}
--\entry{pthread_setcanceltype}{823}{\code {pthread_setcanceltype}}
--\entry{pthread_testcancel}{824}{\code {pthread_testcancel}}
--\entry{pthread_cleanup_push}{825}{\code {pthread_cleanup_push}}
--\entry{pthread_cleanup_pop}{825}{\code {pthread_cleanup_pop}}
--\entry{pthread_cleanup_push_defer_np}{825}{\code {pthread_cleanup_push_defer_np}}
--\entry{pthread_cleanup_pop_restore_np}{825}{\code {pthread_cleanup_pop_restore_np}}
--\entry{pthread_mutex_init}{826}{\code {pthread_mutex_init}}
--\entry{pthread_mutex_lock}{826}{\code {pthread_mutex_lock}}
--\entry{pthread_mutex_trylock}{827}{\code {pthread_mutex_trylock}}
--\entry{pthread_mutex_timedlock}{827}{\code {pthread_mutex_timedlock}}
--\entry{pthread_mutex_unlock}{827}{\code {pthread_mutex_unlock}}
--\entry{pthread_mutex_destroy}{827}{\code {pthread_mutex_destroy}}
--\entry{pthread_mutexattr_init}{828}{\code {pthread_mutexattr_init}}
--\entry{pthread_mutexattr_destroy}{828}{\code {pthread_mutexattr_destroy}}
--\entry{pthread_mutexattr_settype}{828}{\code {pthread_mutexattr_settype}}
--\entry{pthread_mutexattr_gettype}{829}{\code {pthread_mutexattr_gettype}}
--\entry{pthread_cond_init}{829}{\code {pthread_cond_init}}
--\entry{pthread_cond_signal}{829}{\code {pthread_cond_signal}}
--\entry{pthread_cond_broadcast}{829}{\code {pthread_cond_broadcast}}
--\entry{pthread_cond_wait}{829}{\code {pthread_cond_wait}}
--\entry{pthread_cond_timedwait}{830}{\code {pthread_cond_timedwait}}
--\entry{pthread_cond_destroy}{830}{\code {pthread_cond_destroy}}
--\entry{pthread_condattr_init}{831}{\code {pthread_condattr_init}}
--\entry{pthread_condattr_destroy}{831}{\code {pthread_condattr_destroy}}
--\entry{sem_init}{832}{\code {sem_init}}
--\entry{sem_destroy}{832}{\code {sem_destroy}}
--\entry{sem_wait}{832}{\code {sem_wait}}
--\entry{sem_trywait}{832}{\code {sem_trywait}}
--\entry{sem_post}{832}{\code {sem_post}}
--\entry{sem_getvalue}{833}{\code {sem_getvalue}}
--\entry{pthread_key_create}{833}{\code {pthread_key_create}}
--\entry{pthread_key_delete}{833}{\code {pthread_key_delete}}
--\entry{pthread_setspecific}{834}{\code {pthread_setspecific}}
--\entry{pthread_getspecific}{834}{\code {pthread_getspecific}}
--\entry{pthread_sigmask}{834}{\code {pthread_sigmask}}
--\entry{pthread_kill}{835}{\code {pthread_kill}}
--\entry{sigwait}{835}{\code {sigwait}}
--\entry{pthread_atfork}{836}{\code {pthread_atfork}}
--\entry{pthread_self}{838}{\code {pthread_self}}
--\entry{pthread_equal}{838}{\code {pthread_equal}}
--\entry{pthread_detach}{838}{\code {pthread_detach}}
--\entry{pthread_kill_other_threads_np}{838}{\code {pthread_kill_other_threads_np}}
--\entry{pthread_once}{839}{\code {pthread_once}}
--\entry{pthread_setschedparam}{839}{\code {pthread_setschedparam}}
--\entry{pthread_getschedparam}{839}{\code {pthread_getschedparam}}
--\entry{pthread_setconcurrency}{840}{\code {pthread_setconcurrency}}
--\entry{pthread_getconcurrency}{840}{\code {pthread_getconcurrency}}
--\entry{assert}{841}{\code {assert}}
--\entry{assert_perror}{842}{\code {assert_perror}}
--\entry{va_start}{846}{\code {va_start}}
--\entry{va_arg}{846}{\code {va_arg}}
--\entry{va_end}{846}{\code {va_end}}
--\entry{__va_copy}{846}{\code {__va_copy}}
--\entry{va_alist}{848}{\code {va_alist}}
--\entry{va_dcl}{848}{\code {va_dcl}}
--\entry{va_start}{848}{\code {va_start}}
--\entry{offsetof}{857}{\code {offsetof}}
-diff -u -udbrN glibc-2.3.2/manual/libc.fns glibc-2.3.2-200304020432/manual/libc.fns
---- glibc-2.3.2/manual/libc.fns Tue Feb 25 11:34:58 2003
-+++ glibc-2.3.2-200304020432/manual/libc.fns Thu Jan 1 01:00:00 1970
-@@ -1,1354 +0,0 @@
--\initial {_}
--\entry {\code {__fbufsize}}{292}
--\entry {\code {__flbf}}{291}
--\entry {\code {__fpending}}{292}
--\entry {\code {__fpurge}}{290}
--\entry {\code {__freadable}}{235}
--\entry {\code {__freading}}{235}
--\entry {\code {__fsetlocking}}{238}
--\entry {\code {__fwritable}}{235}
--\entry {\code {__fwriting}}{235}
--\entry {\code {__va_copy}}{846}
--\entry {\code {_exit}}{699}
--\entry {\code {_Exit}}{699}
--\entry {\code {_flushlbf}}{289}
--\entry {\code {_tolower}}{69}
--\entry {\code {_toupper}}{69}
--\initial {A}
--\entry {\code {a64l}}{106}
--\entry {\code {abort}}{699}
--\entry {\code {abs}}{531}
--\entry {\code {accept}}{426}
--\entry {\code {access}}{383}
--\entry {\code {acos}}{482}
--\entry {\code {acosf}}{482}
--\entry {\code {acosh}}{487}
--\entry {\code {acoshf}}{487}
--\entry {\code {acoshl}}{487}
--\entry {\code {acosl}}{482}
--\entry {\code {addmntent}}{780}
--\entry {\code {addseverity}}{300}
--\entry {\code {adjtime}}{555}
--\entry {\code {adjtimex}}{556}
--\entry {\code {aio_cancel}}{334}
--\entry {\code {aio_cancel64}}{335}
--\entry {\code {aio_error}}{331}
--\entry {\code {aio_error64}}{331}
--\entry {\code {aio_fsync}}{332}
--\entry {\code {aio_fsync64}}{333}
--\entry {\code {aio_init}}{336}
--\entry {\code {aio_read}}{327}
--\entry {\code {aio_read64}}{328}
--\entry {\code {aio_return}}{332}
--\entry {\code {aio_return64}}{332}
--\entry {\code {aio_suspend}}{333}
--\entry {\code {aio_suspend64}}{334}
--\entry {\code {aio_write}}{328}
--\entry {\code {aio_write64}}{329}
--\entry {\code {alarm}}{579}
--\entry {\code {alloca}}{59}
--\entry {\code {alphasort}}{358}
--\entry {\code {alphasort64}}{359}
--\entry {\code {argp_error}}{674}
--\entry {\code {argp_failure}}{674}
--\entry {\code {argp_help}}{679}
--\entry {\code {argp_parse}}{666}
--\entry {\code {argp_state_help}}{674}
--\entry {\code {argp_usage}}{674}
--\entry {\code {argz_add}}{108}
--\entry {\code {argz_add_sep}}{108}
--\entry {\code {argz_append}}{108}
--\entry {\code {argz_count}}{108}
--\entry {\code {argz_create}}{108}
--\entry {\code {argz_create_sep}}{108}
--\entry {\code {argz_delete}}{109}
--\entry {\code {argz_extract}}{108}
--\entry {\code {argz_insert}}{109}
--\entry {\code {argz_next}}{109}
--\entry {\code {argz_replace}}{109}
--\entry {\code {argz_stringify}}{108}
--\entry {\code {asctime}}{562}
--\entry {\code {asctime_r}}{562}
--\entry {\code {asin}}{481}
--\entry {\code {asinf}}{481}
--\entry {\code {asinh}}{487}
--\entry {\code {asinhf}}{487}
--\entry {\code {asinhl}}{487}
--\entry {\code {asinl}}{481}
--\entry {\code {asprintf}}{261}
--\entry {\code {assert}}{841}
--\entry {\code {assert_perror}}{842}
--\entry {\code {atan}}{482}
--\entry {\code {atan2}}{482}
--\entry {\code {atan2f}}{482}
--\entry {\code {atan2l}}{482}
--\entry {\code {atanf}}{482}
--\entry {\code {atanh}}{487}
--\entry {\code {atanhf}}{487}
--\entry {\code {atanhl}}{487}
--\entry {\code {atanl}}{482}
--\entry {\code {atexit}}{698}
--\entry {\code {atof}}{545}
--\entry {\code {atoi}}{543}
--\entry {\code {atol}}{543}
--\entry {\code {atoll}}{543}
--\initial {B}
--\entry {\code {backtrace}}{817}
--\entry {\code {backtrace_symbols}}{817}
--\entry {\code {backtrace_symbols_fd}}{818}
--\entry {\code {basename}}{103, 104}
--\entry {\code {bcmp}}{92}
--\entry {\code {bcopy}}{88}
--\entry {\code {bind}}{403}
--\entry {\code {bind_textdomain_codeset}}{189}
--\entry {\code {bindtextdomain}}{184}
--\entry {\code {brk}}{62}
--\entry {\code {bsearch}}{196}
--\entry {\code {btowc}}{118}
--\entry {\code {bzero}}{89}
--\initial {C}
--\entry {\code {cabs}}{531}
--\entry {\code {cabsf}}{531}
--\entry {\code {cabsl}}{531}
--\entry {\code {cacos}}{482}
--\entry {\code {cacosf}}{482}
--\entry {\code {cacosh}}{488}
--\entry {\code {cacoshf}}{488}
--\entry {\code {cacoshl}}{488}
--\entry {\code {cacosl}}{482}
--\entry {\code {calloc}}{37}
--\entry {\code {canonicalize_file_name}}{366}
--\entry {\code {carg}}{539}
--\entry {\code {cargf}}{539}
--\entry {\code {cargl}}{539}
--\entry {\code {casin}}{482}
--\entry {\code {casinf}}{482}
--\entry {\code {casinh}}{487}
--\entry {\code {casinhf}}{487}
--\entry {\code {casinhl}}{487}
--\entry {\code {casinl}}{482}
--\entry {\code {catan}}{482}
--\entry {\code {catanf}}{482}
--\entry {\code {catanh}}{488}
--\entry {\code {catanhf}}{488}
--\entry {\code {catanhl}}{488}
--\entry {\code {catanl}}{482}
--\entry {\code {catclose}}{174}
--\entry {\code {catgets}}{174}
--\entry {\code {catopen}}{171}
--\entry {\code {cbc_crypt}}{814}
--\entry {\code {cbrt}}{485}
--\entry {\code {cbrtf}}{485}
--\entry {\code {cbrtl}}{485}
--\entry {\code {ccos}}{481}
--\entry {\code {ccosf}}{481}
--\entry {\code {ccosh}}{487}
--\entry {\code {ccoshf}}{487}
--\entry {\code {ccoshl}}{487}
--\entry {\code {ccosl}}{481}
--\entry {\code {ceil}}{533}
--\entry {\code {ceilf}}{533}
--\entry {\code {ceill}}{533}
--\entry {\code {cexp}}{485}
--\entry {\code {cexpf}}{485}
--\entry {\code {cexpl}}{485}
--\entry {\code {cfgetispeed}}{457}
--\entry {\code {cfgetospeed}}{457}
--\entry {\code {cfmakeraw}}{464}
--\entry {\code {cfree}}{36}
--\entry {\code {cfsetispeed}}{457}
--\entry {\code {cfsetospeed}}{457}
--\entry {\code {cfsetspeed}}{457}
--\entry {\code {chdir}}{352}
--\entry {\code {chmod}}{381}
--\entry {\code {chown}}{377}
--\entry {\code {cimag}}{539}
--\entry {\code {cimagf}}{539}
--\entry {\code {cimagl}}{539}
--\entry {\code {clearenv}}{692}
--\entry {\code {clearerr}}{282}
--\entry {\code {clearerr_unlocked}}{283}
--\entry {\code {clock}}{552}
--\entry {\code {clog}}{485}
--\entry {\code {clog10}}{486}
--\entry {\code {clog10f}}{486}
--\entry {\code {clog10l}}{486}
--\entry {\code {clogf}}{486}
--\entry {\code {clogl}}{486}
--\entry {\code {close}}{305}
--\entry {\code {closedir}}{356}
--\entry {\code {closelog}}{476}
--\entry {\code {confstr}}{805}
--\entry {\code {conj}}{539}
--\entry {\code {conjf}}{539}
--\entry {\code {conjl}}{539}
--\entry {\code {connect}}{424}
--\entry {\code {copysign}}{535}
--\entry {\code {copysignf}}{535}
--\entry {\code {copysignl}}{535}
--\entry {\code {cos}}{480}
--\entry {\code {cosf}}{480}
--\entry {\code {cosh}}{486}
--\entry {\code {coshf}}{486}
--\entry {\code {coshl}}{486}
--\entry {\code {cosl}}{480}
--\entry {\code {cpow}}{486}
--\entry {\code {cpowf}}{486}
--\entry {\code {cpowl}}{486}
--\entry {\code {cproj}}{539}
--\entry {\code {cprojf}}{539}
--\entry {\code {cprojl}}{539}
--\entry {\code {creal}}{539}
--\entry {\code {crealf}}{539}
--\entry {\code {creall}}{539}
--\entry {\code {creat}}{304}
--\entry {\code {creat64}}{305}
--\entry {\code {crypt}}{811}
--\entry {\code {crypt_r}}{812}
--\entry {\code {csin}}{481}
--\entry {\code {csinf}}{481}
--\entry {\code {csinh}}{487}
--\entry {\code {csinhf}}{487}
--\entry {\code {csinhl}}{487}
--\entry {\code {csinl}}{481}
--\entry {\code {csqrt}}{486}
--\entry {\code {csqrtf}}{486}
--\entry {\code {csqrtl}}{486}
--\entry {\code {ctan}}{481}
--\entry {\code {ctanf}}{481}
--\entry {\code {ctanh}}{487}
--\entry {\code {ctanhf}}{487}
--\entry {\code {ctanhl}}{487}
--\entry {\code {ctanl}}{481}
--\entry {\code {ctermid}}{728}
--\entry {\code {ctime}}{562}
--\entry {\code {ctime_r}}{562}
--\entry {\code {cuserid}}{753}
--\initial {D}
--\entry {\code {dcgettext}}{182}
--\entry {\code {dcngettext}}{186}
--\entry {\code {DES_FAILED}}{814}
--\entry {\code {des_setparity}}{815}
--\entry {\code {dgettext}}{182}
--\entry {\code {difftime}}{549}
--\entry {\code {dirfd}}{355}
--\entry {\code {dirname}}{104}
--\entry {\code {div}}{519}
--\entry {\code {dngettext}}{186}
--\entry {\code {drand48}}{511}
--\entry {\code {drand48_r}}{513}
--\entry {\code {drem}}{534}
--\entry {\code {dremf}}{535}
--\entry {\code {dreml}}{535}
--\entry {\code {DTTOIF}}{354}
--\entry {\code {dup}}{337}
--\entry {\code {dup2}}{337}
--\initial {E}
--\entry {\code {ecb_crypt}}{814}
--\entry {\code {ecvt}}{546}
--\entry {\code {ecvt_r}}{547}
--\entry {\code {encrypt}}{813}
--\entry {\code {encrypt_r}}{813}
--\entry {\code {endfsent}}{776}
--\entry {\code {endgrent}}{766}
--\entry {\code {endhostent}}{416}
--\entry {\code {endmntent}}{779}
--\entry {\code {endnetent}}{444}
--\entry {\code {endnetgrent}}{769}
--\entry {\code {endprotoent}}{420}
--\entry {\code {endpwent}}{763}
--\entry {\code {endservent}}{418}
--\entry {\code {endutent}}{756}
--\entry {\code {endutxent}}{759}
--\entry {\code {envz_add}}{110}
--\entry {\code {envz_entry}}{110}
--\entry {\code {envz_get}}{110}
--\entry {\code {envz_merge}}{110}
--\entry {\code {envz_strip}}{110}
--\entry {\code {erand48}}{511}
--\entry {\code {erand48_r}}{513}
--\entry {\code {erf}}{488}
--\entry {\code {erfc}}{488}
--\entry {\code {erfcf}}{488}
--\entry {\code {erfcl}}{488}
--\entry {\code {erff}}{488}
--\entry {\code {erfl}}{488}
--\entry {\code {err}}{30}
--\entry {\code {error}}{28}
--\entry {\code {error_at_line}}{28}
--\entry {\code {errx}}{30}
--\entry {\code {execl}}{704}
--\entry {\code {execle}}{704}
--\entry {\code {execlp}}{705}
--\entry {\code {execv}}{704}
--\entry {\code {execve}}{704}
--\entry {\code {execvp}}{705}
--\entry {\code {exit}}{696}
--\entry {\code {exp}}{483}
--\entry {\code {exp10}}{483}
--\entry {\code {exp10f}}{483}
--\entry {\code {exp10l}}{483}
--\entry {\code {exp2}}{483}
--\entry {\code {exp2f}}{483}
--\entry {\code {exp2l}}{483}
--\entry {\code {expf}}{483}
--\entry {\code {expl}}{483}
--\entry {\code {expm1}}{485}
--\entry {\code {expm1f}}{485}
--\entry {\code {expm1l}}{485}
--\initial {F}
--\entry {\code {fabs}}{531}
--\entry {\code {fabsf}}{531}
--\entry {\code {fabsl}}{531}
--\entry {\code {fchdir}}{352}
--\entry {\code {fchmod}}{382}
--\entry {\code {fchown}}{378}
--\entry {\code {fclean}}{315}
--\entry {\code {fclose}}{235}
--\entry {\code {fcloseall}}{236}
--\entry {\code {fcntl}}{336}
--\entry {\code {fcvt}}{546}
--\entry {\code {fcvt_r}}{547}
--\entry {\code {FD_CLR}}{321}
--\entry {\code {FD_ISSET}}{322}
--\entry {\code {FD_SET}}{321}
--\entry {\code {FD_ZERO}}{321}
--\entry {\code {fdatasync}}{324}
--\entry {\code {fdim}}{537}
--\entry {\code {fdimf}}{537}
--\entry {\code {fdiml}}{537}
--\entry {\code {fdopen}}{313}
--\entry {\code {feclearexcept}}{525}
--\entry {\code {fedisableexcept}}{530}
--\entry {\code {feenableexcept}}{530}
--\entry {\code {fegetenv}}{529}
--\entry {\code {fegetexcept}}{530}
--\entry {\code {fegetexceptflag}}{526}
--\entry {\code {fegetround}}{528}
--\entry {\code {feholdexcept}}{529}
--\entry {\code {feof}}{282}
--\entry {\code {feof_unlocked}}{282}
--\entry {\code {feraiseexcept}}{525}
--\entry {\code {ferror}}{282}
--\entry {\code {ferror_unlocked}}{282}
--\entry {\code {fesetenv}}{529}
--\entry {\code {fesetexceptflag}}{526}
--\entry {\code {fesetround}}{528}
--\entry {\code {fetestexcept}}{526}
--\entry {\code {feupdateenv}}{530}
--\entry {\code {fflush}}{289}
--\entry {\code {fflush_unlocked}}{289}
--\entry {\code {fgetc}}{243}
--\entry {\code {fgetc_unlocked}}{244}
--\entry {\code {fgetgrent}}{765}
--\entry {\code {fgetgrent_r}}{765}
--\entry {\code {fgetpos}}{287}
--\entry {\code {fgetpos64}}{287}
--\entry {\code {fgetpwent}}{762}
--\entry {\code {fgetpwent_r}}{763}
--\entry {\code {fgets}}{246}
--\entry {\code {fgets_unlocked}}{247}
--\entry {\code {fgetwc}}{243}
--\entry {\code {fgetwc_unlocked}}{244}
--\entry {\code {fgetws}}{246}
--\entry {\code {fgetws_unlocked}}{247}
--\entry {\code {fileno}}{313}
--\entry {\code {fileno_unlocked}}{313}
--\entry {\code {finite}}{522}
--\entry {\code {finitef}}{522}
--\entry {\code {finitel}}{522}
--\entry {\code {flockfile}}{236}
--\entry {\code {floor}}{533}
--\entry {\code {floorf}}{533}
--\entry {\code {floorl}}{533}
--\entry {\code {fma}}{538}
--\entry {\code {fmaf}}{538}
--\entry {\code {fmal}}{538}
--\entry {\code {fmax}}{537}
--\entry {\code {fmaxf}}{537}
--\entry {\code {fmaxl}}{537}
--\entry {\code {fmemopen}}{292}
--\entry {\code {fmin}}{537}
--\entry {\code {fminf}}{537}
--\entry {\code {fminl}}{537}
--\entry {\code {fmod}}{534}
--\entry {\code {fmodf}}{534}
--\entry {\code {fmodl}}{534}
--\entry {\code {fmtmsg}}{298}
--\entry {\code {fnmatch}}{205}
--\entry {\code {fopen}}{232}
--\entry {\code {fopen64}}{233}
--\entry {\code {fopencookie}}{296}
--\entry {\code {fork}}{703}
--\entry {\code {forkpty}}{470}
--\entry {\code {fpathconf}}{803}
--\entry {\code {fpclassify}}{520}
--\entry {\code {fprintf}}{259}
--\entry {\code {fputc}}{241}
--\entry {\code {fputc_unlocked}}{241}
--\entry {\code {fputs}}{242}
--\entry {\code {fputs_unlocked}}{243}
--\entry {\code {fputwc}}{241}
--\entry {\code {fputwc_unlocked}}{241}
--\entry {\code {fputws}}{242}
--\entry {\code {fputws_unlocked}}{243}
--\entry {\code {fread}}{249}
--\entry {\code {fread_unlocked}}{249}
--\entry {\code {free}}{35}
--\entry {\code {freopen}}{234}
--\entry {\code {freopen64}}{234}
--\entry {\code {frexp}}{531}
--\entry {\code {frexpf}}{531}
--\entry {\code {frexpl}}{531}
--\entry {\code {fscanf}}{280}
--\entry {\code {fseek}}{285}
--\entry {\code {fseeko}}{285}
--\entry {\code {fseeko64}}{285}
--\entry {\code {fsetpos}}{288}
--\entry {\code {fsetpos64}}{288}
--\entry {\code {fstat}}{375}
--\entry {\code {fstat64}}{375}
--\entry {\code {fsync}}{324}
--\entry {\code {ftell}}{284}
--\entry {\code {ftello}}{284}
--\entry {\code {ftello64}}{285}
--\entry {\code {ftruncate}}{386}
--\entry {\code {ftruncate64}}{387}
--\entry {\code {ftrylockfile}}{237}
--\entry {\code {ftw}}{361}
--\entry {\code {ftw64}}{362}
--\entry {\code {funlockfile}}{237}
--\entry {\code {futimes}}{385}
--\entry {\code {fwide}}{240}
--\entry {\code {fwprintf}}{259}
--\entry {\code {fwrite}}{250}
--\entry {\code {fwrite_unlocked}}{250}
--\entry {\code {fwscanf}}{280}
--\initial {G}
--\entry {\code {gamma}}{489}
--\entry {\code {gammaf}}{489}
--\entry {\code {gammal}}{489}
--\entry {\code {gcvt}}{546}
--\entry {\code {get_avphys_pages}}{600}
--\entry {\code {get_current_dir_name}}{352}
--\entry {\code {get_nprocs}}{600}
--\entry {\code {get_nprocs_conf}}{600}
--\entry {\code {get_phys_pages}}{599}
--\entry {\code {getc}}{244}
--\entry {\code {getc_unlocked}}{244}
--\entry {\code {getchar}}{244}
--\entry {\code {getchar_unlocked}}{244}
--\entry {\code {getcontext}}{604}
--\entry {\code {getcwd}}{351}
--\entry {\code {getdate}}{573}
--\entry {\code {getdate_r}}{574}
--\entry {\code {getdelim}}{246}
--\entry {\code {getdomainnname}}{772}
--\entry {\code {getegid}}{745}
--\entry {\code {getenv}}{691}
--\entry {\code {geteuid}}{745}
--\entry {\code {getfsent}}{777}
--\entry {\code {getfsfile}}{777}
--\entry {\code {getfsspec}}{777}
--\entry {\code {getgid}}{745}
--\entry {\code {getgrent}}{766}
--\entry {\code {getgrent_r}}{766}
--\entry {\code {getgrgid}}{764}
--\entry {\code {getgrgid_r}}{764}
--\entry {\code {getgrnam}}{765}
--\entry {\code {getgrnam_r}}{765}
--\entry {\code {getgrouplist}}{748}
--\entry {\code {getgroups}}{745}
--\entry {\code {gethostbyaddr}}{414}
--\entry {\code {gethostbyaddr_r}}{415}
--\entry {\code {gethostbyname}}{414}
--\entry {\code {gethostbyname_r}}{415}
--\entry {\code {gethostbyname2}}{414}
--\entry {\code {gethostbyname2_r}}{415}
--\entry {\code {gethostent}}{416}
--\entry {\code {gethostid}}{772}
--\entry {\code {gethostname}}{771}
--\entry {\code {getitimer}}{579}
--\entry {\code {getline}}{245}
--\entry {\code {getloadavg}}{600}
--\entry {\code {getlogin}}{753}
--\entry {\code {getmntent}}{779}
--\entry {\code {getmntent_r}}{780}
--\entry {\code {getnetbyaddr}}{444}
--\entry {\code {getnetbyname}}{443}
--\entry {\code {getnetent}}{444}
--\entry {\code {getnetgrent}}{768}
--\entry {\code {getnetgrent_r}}{769}
--\entry {\code {getopt}}{659}
--\entry {\code {getopt_long}}{663}
--\entry {\code {getopt_long_only}}{663}
--\entry {\code {getpagesize}}{599}
--\entry {\code {getpass}}{810}
--\entry {\code {getpeername}}{427}
--\entry {\code {getpgid}}{729}
--\entry {\code {getpgrp}}{729}
--\entry {\code {getpid}}{702}
--\entry {\code {getppid}}{702}
--\entry {\code {getpriority}}{597}
--\entry {\code {getprotobyname}}{420}
--\entry {\code {getprotobynumber}}{420}
--\entry {\code {getprotoent}}{420}
--\entry {\code {getpt}}{468}
--\entry {\code {getpwent}}{763}
--\entry {\code {getpwent_r}}{763}
--\entry {\code {getpwnam}}{762}
--\entry {\code {getpwnam_r}}{762}
--\entry {\code {getpwuid}}{762}
--\entry {\code {getpwuid_r}}{762}
--\entry {\code {getrlimit}}{586}
--\entry {\code {getrlimit64}}{586}
--\entry {\code {getrusage}}{583}
--\entry {\code {gets}}{247}
--\entry {\code {getservbyname}}{417}
--\entry {\code {getservbyport}}{418}
--\entry {\code {getservent}}{418}
--\entry {\code {getsid}}{729}
--\entry {\code {getsockname}}{403}
--\entry {\code {getsockopt}}{441}
--\entry {\code {getsubopt}}{689}
--\entry {\code {gettext}}{181}
--\entry {\code {gettimeofday}}{555}
--\entry {\code {getuid}}{745}
--\entry {\code {getumask}}{381}
--\entry {\code {getutent}}{755}
--\entry {\code {getutent_r}}{757}
--\entry {\code {getutid}}{756}
--\entry {\code {getutid_r}}{757}
--\entry {\code {getutline}}{756}
--\entry {\code {getutline_r}}{757}
--\entry {\code {getutmp}}{760}
--\entry {\code {getutmpx}}{760}
--\entry {\code {getutxent}}{759}
--\entry {\code {getutxid}}{759}
--\entry {\code {getutxline}}{760}
--\entry {\code {getw}}{245}
--\entry {\code {getwc}}{244}
--\entry {\code {getwc_unlocked}}{244}
--\entry {\code {getwchar}}{244}
--\entry {\code {getwchar_unlocked}}{244}
--\entry {\code {getwd}}{352}
--\entry {\code {glob}}{209}
--\entry {\code {glob64}}{209}
--\entry {\code {globfree}}{213}
--\entry {\code {globfree64}}{213}
--\entry {\code {gmtime}}{558}
--\entry {\code {gmtime_r}}{558}
--\entry {\code {grantpt}}{468}
--\entry {\code {gsignal}}{639}
--\entry {\code {gtty}}{464}
--\initial {H}
--\entry {\code {hasmntopt}}{780}
--\entry {\code {hcreate}}{199}
--\entry {\code {hcreate_r}}{201}
--\entry {\code {hdestroy}}{200}
--\entry {\code {hdestroy_r}}{201}
--\entry {\code {hsearch}}{200}
--\entry {\code {hsearch_r}}{201}
--\entry {\code {htonl}}{419}
--\entry {\code {htons}}{418}
--\entry {\code {hypot}}{485}
--\entry {\code {hypotf}}{485}
--\entry {\code {hypotl}}{485}
--\initial {I}
--\entry {\code {iconv}}{134}
--\entry {\code {iconv_close}}{133}
--\entry {\code {iconv_open}}{132}
--\entry {\code {if_freenameindex}}{405}
--\entry {\code {if_indextoname}}{404}
--\entry {\code {if_nameindex}}{405}
--\entry {\code {if_nametoindex}}{404}
--\entry {\code {IFTODT}}{354}
--\entry {\code {ilogb}}{484}
--\entry {\code {ilogbf}}{484}
--\entry {\code {ilogbl}}{484}
--\entry {\code {imaxabs}}{531}
--\entry {\code {imaxdiv}}{520}
--\entry {\code {index}}{100}
--\entry {\code {inet_addr}}{412}
--\entry {\code {inet_aton}}{412}
--\entry {\code {inet_lnaof}}{412}
--\entry {\code {inet_makeaddr}}{412}
--\entry {\code {inet_netof}}{412}
--\entry {\code {inet_network}}{412}
--\entry {\code {inet_ntoa}}{412}
--\entry {\code {inet_ntop}}{413}
--\entry {\code {inet_pton}}{412}
--\entry {\code {initgroups}}{748}
--\entry {\code {initstate}}{509}
--\entry {\code {initstate_r}}{510}
--\entry {\code {innetgr}}{769}
--\entry {\code {ioctl}}{349}
--\entry {\code {isalnum}}{68}
--\entry {\code {isalpha}}{67}
--\entry {\code {isascii}}{68}
--\entry {\code {isatty}}{445}
--\entry {\code {isblank}}{68}
--\entry {\code {iscntrl}}{68}
--\entry {\code {isdigit}}{68}
--\entry {\code {isfinite}}{521}
--\entry {\code {isgraph}}{68}
--\entry {\code {isgreater}}{536}
--\entry {\code {isgreaterequal}}{536}
--\entry {\code {isinf}}{521}
--\entry {\code {isinff}}{521}
--\entry {\code {isinfl}}{521}
--\entry {\code {isless}}{536}
--\entry {\code {islessequal}}{537}
--\entry {\code {islessgreater}}{537}
--\entry {\code {islower}}{67}
--\entry {\code {isnan}}{521, 522}
--\entry {\code {isnanf}}{522}
--\entry {\code {isnanl}}{522}
--\entry {\code {isnormal}}{521}
--\entry {\code {isprint}}{68}
--\entry {\code {ispunct}}{68}
--\entry {\code {isspace}}{68}
--\entry {\code {isunordered}}{537}
--\entry {\code {isupper}}{67}
--\entry {\code {iswalnum}}{70}
--\entry {\code {iswalpha}}{70}
--\entry {\code {iswblank}}{72}
--\entry {\code {iswcntrl}}{71}
--\entry {\code {iswctype}}{70}
--\entry {\code {iswdigit}}{71}
--\entry {\code {iswgraph}}{71}
--\entry {\code {iswlower}}{71}
--\entry {\code {iswprint}}{71}
--\entry {\code {iswpunct}}{72}
--\entry {\code {iswspace}}{72}
--\entry {\code {iswupper}}{72}
--\entry {\code {iswxdigit}}{72}
--\entry {\code {isxdigit}}{68}
--\initial {J}
--\entry {\code {j0}}{489}
--\entry {\code {j0f}}{489}
--\entry {\code {j0l}}{489}
--\entry {\code {j1}}{489}
--\entry {\code {j1f}}{489}
--\entry {\code {j1l}}{489}
--\entry {\code {jn}}{489}
--\entry {\code {jnf}}{489}
--\entry {\code {jnl}}{489}
--\entry {\code {jrand48}}{512}
--\entry {\code {jrand48_r}}{514}
--\initial {K}
--\entry {\code {kill}}{640}
--\entry {\code {killpg}}{641}
--\initial {L}
--\entry {\code {l64a}}{105}
--\entry {\code {labs}}{531}
--\entry {\code {lcong48}}{512}
--\entry {\code {lcong48_r}}{515}
--\entry {\code {ldexp}}{532}
--\entry {\code {ldexpf}}{532}
--\entry {\code {ldexpl}}{532}
--\entry {\code {ldiv}}{519}
--\entry {\code {lfind}}{195}
--\entry {\code {lgamma}}{488}
--\entry {\code {lgamma_r}}{489}
--\entry {\code {lgammaf}}{488}
--\entry {\code {lgammaf_r}}{489}
--\entry {\code {lgammal}}{488}
--\entry {\code {lgammal_r}}{489}
--\entry {\code {link}}{364}
--\entry {\code {lio_listio}}{330}
--\entry {\code {lio_listio64}}{331}
--\entry {\code {listen}}{425}
--\entry {\code {llabs}}{531}
--\entry {\code {lldiv}}{519}
--\entry {\code {llrint}}{533}
--\entry {\code {llrintf}}{534}
--\entry {\code {llrintl}}{534}
--\entry {\code {llround}}{534}
--\entry {\code {llroundf}}{534}
--\entry {\code {llroundl}}{534}
--\entry {\code {localeconv}}{158}
--\entry {\code {localtime}}{557}
--\entry {\code {localtime_r}}{558}
--\entry {\code {log}}{483}
--\entry {\code {log10}}{483}
--\entry {\code {log10f}}{483}
--\entry {\code {log10l}}{483}
--\entry {\code {log1p}}{485}
--\entry {\code {log1pf}}{485}
--\entry {\code {log1pl}}{485}
--\entry {\code {log2}}{483}
--\entry {\code {log2f}}{483}
--\entry {\code {log2l}}{483}
--\entry {\code {logb}}{483}
--\entry {\code {logbf}}{484}
--\entry {\code {logbl}}{484}
--\entry {\code {logf}}{483}
--\entry {\code {login}}{760}
--\entry {\code {login_tty}}{760}
--\entry {\code {logl}}{483}
--\entry {\code {logout}}{761}
--\entry {\code {logwtmp}}{761}
--\entry {\code {longjmp}}{602}
--\entry {\code {lrand48}}{511}
--\entry {\code {lrand48_r}}{513}
--\entry {\code {lrint}}{533}
--\entry {\code {lrintf}}{533}
--\entry {\code {lrintl}}{533}
--\entry {\code {lround}}{534}
--\entry {\code {lroundf}}{534}
--\entry {\code {lroundl}}{534}
--\entry {\code {lsearch}}{196}
--\entry {\code {lseek}}{310}
--\entry {\code {lseek64}}{311}
--\entry {\code {lstat}}{375}
--\entry {\code {lstat64}}{375}
--\entry {\code {lutimes}}{385}
--\initial {M}
--\entry {\code {madvise}}{320}
--\entry {\code {main}}{657}
--\entry {\code {makecontext}}{605}
--\entry {\code {mallinfo}}{44}
--\entry {\code {malloc}}{34}
--\entry {\code {mallopt}}{39}
--\entry {\code {matherr}}{522}
--\entry {\code {mblen}}{129}
--\entry {\code {mbrlen}}{120}
--\entry {\code {mbrtowc}}{119}
--\entry {\code {mbsinit}}{117}
--\entry {\code {mbsnrtowcs}}{125}
--\entry {\code {mbsrtowcs}}{123}
--\entry {\code {mbstowcs}}{129}
--\entry {\code {mbtowc}}{128}
--\entry {\code {mcheck}}{39}
--\entry {\code {memalign}}{38}
--\entry {\code {memccpy}}{81}
--\entry {\code {memchr}}{96}
--\entry {\code {memcmp}}{89}
--\entry {\code {memcpy}}{79}
--\entry {\code {memfrob}}{105}
--\entry {\code {memmem}}{99}
--\entry {\code {memmove}}{80}
--\entry {\code {mempcpy}}{80}
--\entry {\code {memrchr}}{97}
--\entry {\code {memset}}{81}
--\entry {\code {mkdir}}{369}
--\entry {\code {mkdtemp}}{391}
--\entry {\code {mkfifo}}{396}
--\entry {\code {mknod}}{388}
--\entry {\code {mkstemp}}{391}
--\entry {\code {mktemp}}{390}
--\entry {\code {mktime}}{558}
--\entry {\code {mlock}}{64}
--\entry {\code {mlockall}}{64}
--\entry {\code {mmap}}{317}
--\entry {\code {mmap64}}{318}
--\entry {\code {modf}}{534}
--\entry {\code {modff}}{534}
--\entry {\code {modfl}}{534}
--\entry {\code {mount}}{781}
--\entry {\code {mprobe}}{40}
--\entry {\code {mrand48}}{511}
--\entry {\code {mrand48_r}}{514}
--\entry {\code {mremap}}{319}
--\entry {\code {msync}}{319}
--\entry {\code {mtrace}}{45}
--\entry {\code {munlock}}{64}
--\entry {\code {munlockall}}{65}
--\entry {\code {munmap}}{318}
--\entry {\code {muntrace}}{46}
--\initial {N}
--\entry {\code {nan}}{536}
--\entry {\code {nanf}}{536}
--\entry {\code {nanl}}{536}
--\entry {\code {nanosleep}}{581}
--\entry {\code {nearbyint}}{533}
--\entry {\code {nearbyintf}}{533}
--\entry {\code {nearbyintl}}{533}
--\entry {\code {nextafter}}{535}
--\entry {\code {nextafterf}}{535}
--\entry {\code {nextafterl}}{535}
--\entry {\code {nexttoward}}{536}
--\entry {\code {nexttowardf}}{536}
--\entry {\code {nexttowardl}}{536}
--\entry {\code {nftw}}{362}
--\entry {\code {nftw64}}{363}
--\entry {\code {ngettext}}{186}
--\entry {\code {nice}}{597}
--\entry {\code {nl_langinfo}}{161}
--\entry {\code {notfound}}{735}
--\entry {\code {nrand48}}{511}
--\entry {\code {nrand48_r}}{513}
--\entry {\code {ntohl}}{419}
--\entry {\code {ntohs}}{419}
--\entry {\code {ntp_adjtime}}{561}
--\entry {\code {ntp_gettime}}{559}
--\initial {O}
--\entry {\code {obstack_1grow}}{54}
--\entry {\code {obstack_1grow_fast}}{55}
--\entry {\code {obstack_alignment_mask}}{57}
--\entry {\code {obstack_alloc}}{51}
--\entry {\code {obstack_base}}{56}
--\entry {\code {obstack_blank}}{53}
--\entry {\code {obstack_blank_fast}}{55}
--\entry {\code {obstack_chunk_alloc}}{50}
--\entry {\code {obstack_chunk_free}}{50}
--\entry {\code {obstack_chunk_size}}{57}
--\entry {\code {obstack_copy}}{51}
--\entry {\code {obstack_copy0}}{52}
--\entry {\code {obstack_finish}}{54}
--\entry {\code {obstack_free}}{52}
--\entry {\code {obstack_grow}}{53}
--\entry {\code {obstack_grow0}}{54}
--\entry {\code {obstack_init}}{50}
--\entry {\code {obstack_int_grow}}{54}
--\entry {\code {obstack_int_grow_fast}}{55}
--\entry {\code {obstack_next_free}}{56}
--\entry {\code {obstack_object_size}}{54, 56}
--\entry {\code {obstack_printf}}{261}
--\entry {\code {obstack_ptr_grow}}{54}
--\entry {\code {obstack_ptr_grow_fast}}{55}
--\entry {\code {obstack_room}}{55}
--\entry {\code {obstack_vprintf}}{263}
--\entry {\code {offsetof}}{857}
--\entry {\code {on_exit}}{698}
--\entry {\code {open}}{303}
--\entry {\code {open_memstream}}{293}
--\entry {\code {open_obstack_stream}}{294}
--\entry {\code {open64}}{304}
--\entry {\code {opendir}}{354}
--\entry {\code {openlog}}{472}
--\entry {\code {openpty}}{470}
--\initial {P}
--\entry {\code {parse_printf_format}}{264}
--\entry {\code {pathconf}}{802}
--\entry {\code {pause}}{650}
--\entry {\code {pclose}}{395}
--\entry {\code {perror}}{26}
--\entry {\code {pipe}}{393}
--\entry {\code {popen}}{395}
--\entry {\code {posix_memalign}}{38}
--\entry {\code {pow}}{484}
--\entry {\code {pow10}}{483}
--\entry {\code {pow10f}}{483}
--\entry {\code {pow10l}}{483}
--\entry {\code {powf}}{484}
--\entry {\code {powl}}{484}
--\entry {\code {pread}}{307}
--\entry {\code {pread64}}{307}
--\entry {\code {printf}}{259}
--\entry {\code {printf_size}}{271}
--\entry {\code {printf_size_info}}{271}
--\entry {\code {psignal}}{621}
--\entry {\code {pthread_atfork}}{836}
--\entry {\code {pthread_attr_destroy}}{821}
--\entry {\code {pthread_attr_getattr}}{821}
--\entry {\code {pthread_attr_getdetachstate}}{821}
--\entry {\code {pthread_attr_getguardsize}}{821}
--\entry {\code {pthread_attr_getinheritsched}}{821}
--\entry {\code {pthread_attr_getschedparam}}{821}
--\entry {\code {pthread_attr_getschedpolicy}}{821}
--\entry {\code {pthread_attr_getscope}}{821}
--\entry {\code {pthread_attr_getstack}}{821}
--\entry {\code {pthread_attr_getstackaddr}}{821}
--\entry {\code {pthread_attr_getstacksize}}{821}
--\entry {\code {pthread_attr_init}}{820}
--\entry {\code {pthread_attr_setattr}}{821}
--\entry {\code {pthread_attr_setdetachstate}}{821}
--\entry {\code {pthread_attr_setguardsize}}{821}
--\entry {\code {pthread_attr_setinheritsched}}{821}
--\entry {\code {pthread_attr_setschedparam}}{821}
--\entry {\code {pthread_attr_setschedpolicy}}{821}
--\entry {\code {pthread_attr_setscope}}{821}
--\entry {\code {pthread_attr_setstack}}{821}
--\entry {\code {pthread_attr_setstackaddr}}{821}
--\entry {\code {pthread_attr_setstacksize}}{821}
--\entry {\code {pthread_cancel}}{819}
--\entry {\code {pthread_cleanup_pop}}{825}
--\entry {\code {pthread_cleanup_pop_restore_np}}{825}
--\entry {\code {pthread_cleanup_push}}{825}
--\entry {\code {pthread_cleanup_push_defer_np}}{825}
--\entry {\code {pthread_cond_broadcast}}{829}
--\entry {\code {pthread_cond_destroy}}{830}
--\entry {\code {pthread_cond_init}}{829}
--\entry {\code {pthread_cond_signal}}{829}
--\entry {\code {pthread_cond_timedwait}}{830}
--\entry {\code {pthread_cond_wait}}{829}
--\entry {\code {pthread_condattr_destroy}}{831}
--\entry {\code {pthread_condattr_init}}{831}
--\entry {\code {pthread_create}}{819}
--\entry {\code {pthread_detach}}{838}
--\entry {\code {pthread_equal}}{838}
--\entry {\code {pthread_exit}}{819}
--\entry {\code {pthread_getconcurrency}}{840}
--\entry {\code {pthread_getschedparam}}{839}
--\entry {\code {pthread_getspecific}}{834}
--\entry {\code {pthread_join}}{820}
--\entry {\code {pthread_key_create}}{833}
--\entry {\code {pthread_key_delete}}{833}
--\entry {\code {pthread_kill}}{835}
--\entry {\code {pthread_kill_other_threads_np}}{838}
--\entry {\code {pthread_mutex_destroy}}{827}
--\entry {\code {pthread_mutex_init}}{826}
--\entry {\code {pthread_mutex_lock}}{826}
--\entry {\code {pthread_mutex_timedlock}}{827}
--\entry {\code {pthread_mutex_trylock}}{827}
--\entry {\code {pthread_mutex_unlock}}{827}
--\entry {\code {pthread_mutexattr_destroy}}{828}
--\entry {\code {pthread_mutexattr_gettype}}{829}
--\entry {\code {pthread_mutexattr_init}}{828}
--\entry {\code {pthread_mutexattr_settype}}{828}
--\entry {\code {pthread_once}}{839}
--\entry {\code {pthread_self}}{838}
--\entry {\code {pthread_setcancelstate}}{823}
--\entry {\code {pthread_setcanceltype}}{823}
--\entry {\code {pthread_setconcurrency}}{840}
--\entry {\code {pthread_setschedparam}}{839}
--\entry {\code {pthread_setspecific}}{834}
--\entry {\code {pthread_sigmask}}{834}
--\entry {\code {pthread_testcancel}}{824}
--\entry {\code {ptsname}}{469}
--\entry {\code {ptsname_r}}{469}
--\entry {\code {putc}}{241}
--\entry {\code {putc_unlocked}}{242}
--\entry {\code {putchar}}{242}
--\entry {\code {putchar_unlocked}}{242}
--\entry {\code {putenv}}{692}
--\entry {\code {putpwent}}{763}
--\entry {\code {puts}}{243}
--\entry {\code {pututline}}{756}
--\entry {\code {pututxline}}{760}
--\entry {\code {putw}}{243}
--\entry {\code {putwc}}{242}
--\entry {\code {putwc_unlocked}}{242}
--\entry {\code {putwchar}}{242}
--\entry {\code {putwchar_unlocked}}{242}
--\entry {\code {pwrite}}{309}
--\entry {\code {pwrite64}}{310}
--\initial {Q}
--\entry {\code {qecvt}}{546}
--\entry {\code {qecvt_r}}{547}
--\entry {\code {qfcvt}}{546}
--\entry {\code {qfcvt_r}}{547}
--\entry {\code {qgcvt}}{546}
--\entry {\code {qsort}}{196}
--\initial {R}
--\entry {\code {raise}}{639}
--\entry {\code {rand}}{508}
--\entry {\code {rand_r}}{509}
--\entry {\code {random}}{509}
--\entry {\code {random_r}}{510}
--\entry {\code {rawmemchr}}{96}
--\entry {\code {read}}{306}
--\entry {\code {readdir}}{355}
--\entry {\code {readdir_r}}{355}
--\entry {\code {readdir64}}{356}
--\entry {\code {readdir64_r}}{356}
--\entry {\code {readlink}}{365}
--\entry {\code {readv}}{316}
--\entry {\code {realloc}}{36}
--\entry {\code {realpath}}{367}
--\entry {\code {recv}}{429}
--\entry {\code {recvfrom}}{436}
--\entry {\code {regcomp}}{214}
--\entry {\code {regerror}}{218}
--\entry {\code {regexec}}{216}
--\entry {\code {regfree}}{218}
--\entry {\code {register_printf_function}}{267}
--\entry {\code {remainder}}{535}
--\entry {\code {remainderf}}{535}
--\entry {\code {remainderl}}{535}
--\entry {\code {remove}}{368}
--\entry {\code {rename}}{368}
--\entry {\code {rewind}}{286}
--\entry {\code {rewinddir}}{357}
--\entry {\code {rindex}}{100}
--\entry {\code {rint}}{533}
--\entry {\code {rintf}}{533}
--\entry {\code {rintl}}{533}
--\entry {\code {rmdir}}{368}
--\entry {\code {round}}{533}
--\entry {\code {roundf}}{533}
--\entry {\code {roundl}}{533}
--\entry {\code {rpmatch}}{170}
--\initial {S}
--\entry {\code {S_ISBLK}}{376}
--\entry {\code {S_ISCHR}}{376}
--\entry {\code {S_ISDIR}}{376}
--\entry {\code {S_ISFIFO}}{376}
--\entry {\code {S_ISLNK}}{376}
--\entry {\code {S_ISREG}}{376}
--\entry {\code {S_ISSOCK}}{376}
--\entry {\code {S_TYPEISMQ}}{377}
--\entry {\code {S_TYPEISSEM}}{377}
--\entry {\code {S_TYPEISSHM}}{377}
--\entry {\code {sbrk}}{62}
--\entry {\code {scalb}}{532}
--\entry {\code {scalbf}}{532}
--\entry {\code {scalbl}}{532}
--\entry {\code {scalbln}}{532}
--\entry {\code {scalblnf}}{532}
--\entry {\code {scalblnl}}{532}
--\entry {\code {scalbn}}{532}
--\entry {\code {scalbnf}}{532}
--\entry {\code {scalbnl}}{532}
--\entry {\code {scandir}}{358}
--\entry {\code {scandir64}}{358}
--\entry {\code {scanf}}{279}
--\entry {\code {sched_get_priority_max}}{594}
--\entry {\code {sched_get_priority_min}}{594}
--\entry {\code {sched_getparam}}{594}
--\entry {\code {sched_getscheduler}}{593}
--\entry {\code {sched_rr_get_interval}}{594}
--\entry {\code {sched_setparam}}{594}
--\entry {\code {sched_setscheduler}}{593}
--\entry {\code {sched_yield}}{594}
--\entry {\code {seed48}}{512}
--\entry {\code {seed48_r}}{514}
--\entry {\code {seekdir}}{357}
--\entry {\code {select}}{322}
--\entry {\code {sem_destroy}}{832}
--\entry {\code {sem_getvalue}}{833}
--\entry {\code {sem_init}}{832}
--\entry {\code {sem_post}}{832}
--\entry {\code {sem_trywait}}{832}
--\entry {\code {sem_wait}}{832}
--\entry {\code {send}}{428}
--\entry {\code {sendto}}{436}
--\entry {\code {setbuf}}{291}
--\entry {\code {setbuffer}}{291}
--\entry {\code {setcontext}}{605}
--\entry {\code {setdomainname}}{772}
--\entry {\code {setegid}}{747}
--\entry {\code {setenv}}{692}
--\entry {\code {seteuid}}{746}
--\entry {\code {setfsent}}{776}
--\entry {\code {setgid}}{747}
--\entry {\code {setgrent}}{766}
--\entry {\code {setgroups}}{748}
--\entry {\code {sethostent}}{416}
--\entry {\code {sethostid}}{773}
--\entry {\code {sethostname}}{772}
--\entry {\code {setitimer}}{579}
--\entry {\code {setjmp}}{602}
--\entry {\code {setkey}}{813}
--\entry {\code {setkey_r}}{813}
--\entry {\code {setlinebuf}}{291}
--\entry {\code {setlocale}}{155}
--\entry {\code {setlogmask}}{477}
--\entry {\code {setmntent}}{779}
--\entry {\code {setnetent}}{444}
--\entry {\code {setnetgrent}}{768}
--\entry {\code {setpgid}}{729}
--\entry {\code {setpgrp}}{730}
--\entry {\code {setpriority}}{597}
--\entry {\code {setprotoent}}{420}
--\entry {\code {setpwent}}{763}
--\entry {\code {setregid}}{747}
--\entry {\code {setreuid}}{746}
--\entry {\code {setrlimit}}{586}
--\entry {\code {setrlimit64}}{586}
--\entry {\code {setservent}}{418}
--\entry {\code {setsid}}{728}
--\entry {\code {setsockopt}}{441}
--\entry {\code {setstate}}{509}
--\entry {\code {setstate_r}}{510}
--\entry {\code {settimeofday}}{555}
--\entry {\code {setuid}}{746}
--\entry {\code {setutent}}{755}
--\entry {\code {setutxent}}{759}
--\entry {\code {setvbuf}}{290}
--\entry {\code {shutdown}}{422}
--\entry {\code {sigaction}}{625}
--\entry {\code {sigaddset}}{644}
--\entry {\code {sigaltstack}}{653}
--\entry {\code {sigblock}}{655}
--\entry {\code {sigdelset}}{644}
--\entry {\code {sigemptyset}}{644}
--\entry {\code {sigfillset}}{644}
--\entry {\code {siginterrupt}}{655}
--\entry {\code {sigismember}}{645}
--\entry {\code {siglongjmp}}{604}
--\entry {\code {sigmask}}{655}
--\entry {\code {signal}}{622}
--\entry {\code {signbit}}{535}
--\entry {\code {significand}}{532}
--\entry {\code {significandf}}{532}
--\entry {\code {significandl}}{532}
--\entry {\code {sigpause}}{656}
--\entry {\code {sigpending}}{647}
--\entry {\code {sigprocmask}}{645}
--\entry {\code {sigsetjmp}}{603}
--\entry {\code {sigsetmask}}{655}
--\entry {\code {sigstack}}{653}
--\entry {\code {sigsuspend}}{651}
--\entry {\code {sigvec}}{655}
--\entry {\code {sigwait}}{835}
--\entry {\code {sin}}{480}
--\entry {\code {sincos}}{480}
--\entry {\code {sincosf}}{480}
--\entry {\code {sincosl}}{480}
--\entry {\code {sinf}}{480}
--\entry {\code {sinh}}{486}
--\entry {\code {sinhf}}{486}
--\entry {\code {sinhl}}{486}
--\entry {\code {sinl}}{480}
--\entry {\code {sleep}}{580}
--\entry {\code {snprintf}}{260}
--\entry {\code {socket}}{422}
--\entry {\code {socketpair}}{423}
--\entry {\code {sprintf}}{259}
--\entry {\code {sqrt}}{485}
--\entry {\code {sqrtf}}{485}
--\entry {\code {sqrtl}}{485}
--\entry {\code {srand}}{508}
--\entry {\code {srand48}}{512}
--\entry {\code {srand48_r}}{514}
--\entry {\code {srandom}}{509}
--\entry {\code {srandom_r}}{510}
--\entry {\code {sscanf}}{280}
--\entry {\code {ssignal}}{624}
--\entry {\code {stat}}{374}
--\entry {\code {stat64}}{374}
--\entry {\code {stime}}{554}
--\entry {\code {stpcpy}}{83}
--\entry {\code {stpncpy}}{83}
--\entry {\code {strcasecmp}}{90}
--\entry {\code {strcasestr}}{98}
--\entry {\code {strcat}}{85}
--\entry {\code {strchr}}{97}
--\entry {\code {strchrnul}}{97}
--\entry {\code {strcmp}}{90}
--\entry {\code {strcoll}}{93}
--\entry {\code {strcpy}}{81}
--\entry {\code {strcspn}}{99}
--\entry {\code {strdup}}{82}
--\entry {\code {strdupa}}{84}
--\entry {\code {strerror}}{26}
--\entry {\code {strerror_r}}{26}
--\entry {\code {strfmon}}{167}
--\entry {\code {strfry}}{105}
--\entry {\code {strftime}}{563}
--\entry {\code {strlen}}{77}
--\entry {\code {strncasecmp}}{91}
--\entry {\code {strncat}}{87}
--\entry {\code {strncmp}}{91}
--\entry {\code {strncpy}}{81}
--\entry {\code {strndup}}{82}
--\entry {\code {strndupa}}{85}
--\entry {\code {strnlen}}{78}
--\entry {\code {strpbrk}}{99}
--\entry {\code {strptime}}{567}
--\entry {\code {strrchr}}{98}
--\entry {\code {strsep}}{102}
--\entry {\code {strsignal}}{621}
--\entry {\code {strspn}}{99}
--\entry {\code {strstr}}{98}
--\entry {\code {strtod}}{544}
--\entry {\code {strtof}}{545}
--\entry {\code {strtoimax}}{542}
--\entry {\code {strtok}}{100}
--\entry {\code {strtok_r}}{102}
--\entry {\code {strtol}}{540}
--\entry {\code {strtold}}{545}
--\entry {\code {strtoll}}{541}
--\entry {\code {strtoq}}{541}
--\entry {\code {strtoul}}{541}
--\entry {\code {strtoull}}{542}
--\entry {\code {strtoumax}}{542}
--\entry {\code {strtouq}}{542}
--\entry {\code {strverscmp}}{91}
--\entry {\code {strxfrm}}{93}
--\entry {\code {stty}}{464}
--\entry {\code {success}}{735}
--\entry {\code {SUN_LEN}}{406}
--\entry {\code {swapcontext}}{606}
--\entry {\code {swprintf}}{259}
--\entry {\code {swscanf}}{280}
--\entry {\code {symlink}}{365}
--\entry {\code {sync}}{323}
--\entry {\code {syscall}}{695}
--\entry {\code {sysconf}}{790}
--\entry {\code {sysctl}}{784}
--\entry {\code {syslog}}{474}
--\entry {\code {system}}{701}
--\entry {\code {sysv_signal}}{624}
--\initial {T}
--\entry {\code {tan}}{480}
--\entry {\code {tanf}}{480}
--\entry {\code {tanh}}{487}
--\entry {\code {tanhf}}{487}
--\entry {\code {tanhl}}{487}
--\entry {\code {tanl}}{480}
--\entry {\code {tcdrain}}{465}
--\entry {\code {tcflow}}{466}
--\entry {\code {tcflush}}{465}
--\entry {\code {tcgetattr}}{448}
--\entry {\code {tcgetpgrp}}{730}
--\entry {\code {tcgetsid}}{731}
--\entry {\code {tcsendbreak}}{465}
--\entry {\code {tcsetattr}}{448}
--\entry {\code {tcsetpgrp}}{730}
--\entry {\code {tdelete}}{202}
--\entry {\code {tdestroy}}{203}
--\entry {\code {telldir}}{357}
--\entry {\code {TEMP_FAILURE_RETRY}}{638}
--\entry {\code {tempnam}}{390}
--\entry {\code {textdomain}}{184}
--\entry {\code {tfind}}{202}
--\entry {\code {tgamma}}{489}
--\entry {\code {tgammaf}}{489}
--\entry {\code {tgammal}}{489}
--\entry {\code {time}}{554}
--\entry {\code {timegm}}{559}
--\entry {\code {timelocal}}{558}
--\entry {\code {times}}{553}
--\entry {\code {tmpfile}}{389}
--\entry {\code {tmpfile64}}{389}
--\entry {\code {tmpnam}}{389}
--\entry {\code {tmpnam_r}}{389}
--\entry {\code {toascii}}{69}
--\entry {\code {tolower}}{69}
--\entry {\code {toupper}}{69}
--\entry {\code {towctrans}}{74}
--\entry {\code {towlower}}{74}
--\entry {\code {towupper}}{74}
--\entry {\code {trunc}}{533}
--\entry {\code {truncate}}{386}
--\entry {\code {truncate64}}{386}
--\entry {\code {truncf}}{533}
--\entry {\code {truncl}}{533}
--\entry {\code {tryagain}}{735}
--\entry {\code {tsearch}}{202}
--\entry {\code {ttyname}}{445}
--\entry {\code {ttyname_r}}{445}
--\entry {\code {twalk}}{203}
--\entry {\code {tzset}}{577}
--\initial {U}
--\entry {\code {ulimit}}{588}
--\entry {\code {umask}}{381}
--\entry {\code {umount}}{784}
--\entry {\code {umount2}}{783}
--\entry {\code {uname}}{774}
--\entry {\code {unavail}}{735}
--\entry {\code {ungetc}}{248}
--\entry {\code {ungetwc}}{248}
--\entry {\code {unlink}}{367}
--\entry {\code {unlockpt}}{469}
--\entry {\code {unsetenv}}{692}
--\entry {\code {updwtmp}}{758}
--\entry {\code {utime}}{384}
--\entry {\code {utimes}}{385}
--\entry {\code {utmpname}}{757}
--\entry {\code {utmpxname}}{760}
--\initial {V}
--\entry {\code {va_alist}}{848}
--\entry {\code {va_arg}}{846}
--\entry {\code {va_dcl}}{848}
--\entry {\code {va_end}}{846}
--\entry {\code {va_start}}{846, 848}
--\entry {\code {valloc}}{38}
--\entry {\code {vasprintf}}{263}
--\entry {\code {verr}}{30}
--\entry {\code {verrx}}{30}
--\entry {\code {versionsort}}{358}
--\entry {\code {versionsort64}}{359}
--\entry {\code {vfork}}{703}
--\entry {\code {vfprintf}}{262}
--\entry {\code {vfscanf}}{281}
--\entry {\code {vfwprintf}}{262}
--\entry {\code {vfwscanf}}{281}
--\entry {\code {vlimit}}{588}
--\entry {\code {vprintf}}{262}
--\entry {\code {vscanf}}{281}
--\entry {\code {vsnprintf}}{263}
--\entry {\code {vsprintf}}{262}
--\entry {\code {vsscanf}}{281}
--\entry {\code {vswprintf}}{262}
--\entry {\code {vswscanf}}{281}
--\entry {\code {vsyslog}}{476}
--\entry {\code {vtimes}}{584}
--\entry {\code {vwarn}}{30}
--\entry {\code {vwarnx}}{30}
--\entry {\code {vwprintf}}{262}
--\entry {\code {vwscanf}}{281}
--\initial {W}
--\entry {\code {wait}}{708}
--\entry {\code {wait3}}{710}
--\entry {\code {wait4}}{708}
--\entry {\code {waitpid}}{706}
--\entry {\code {warn}}{30}
--\entry {\code {warnx}}{30}
--\entry {\code {WCOREDUMP}}{709}
--\entry {\code {wcpcpy}}{83}
--\entry {\code {wcpncpy}}{84}
--\entry {\code {wcrtomb}}{121}
--\entry {\code {wcscasecmp}}{90}
--\entry {\code {wcscat}}{85}
--\entry {\code {wcschr}}{97}
--\entry {\code {wcschrnul}}{97}
--\entry {\code {wcscmp}}{90}
--\entry {\code {wcscoll}}{93}
--\entry {\code {wcscpy}}{81}
--\entry {\code {wcscspn}}{99}
--\entry {\code {wcsdup}}{82}
--\entry {\code {wcsftime}}{567}
--\entry {\code {wcslen}}{78}
--\entry {\code {wcsncasecmp}}{91}
--\entry {\code {wcsncat}}{88}
--\entry {\code {wcsncmp}}{91}
--\entry {\code {wcsncpy}}{82}
--\entry {\code {wcsnlen}}{79}
--\entry {\code {wcsnrtombs}}{126}
--\entry {\code {wcspbrk}}{100}
--\entry {\code {wcsrchr}}{98}
--\entry {\code {wcsrtombs}}{124}
--\entry {\code {wcsspn}}{99}
--\entry {\code {wcsstr}}{98}
--\entry {\code {wcstod}}{545}
--\entry {\code {wcstof}}{545}
--\entry {\code {wcstoimax}}{542}
--\entry {\code {wcstok}}{101}
--\entry {\code {wcstol}}{540}
--\entry {\code {wcstold}}{545}
--\entry {\code {wcstoll}}{541}
--\entry {\code {wcstombs}}{130}
--\entry {\code {wcstoq}}{541}
--\entry {\code {wcstoul}}{541}
--\entry {\code {wcstoull}}{542}
--\entry {\code {wcstoumax}}{543}
--\entry {\code {wcstouq}}{542}
--\entry {\code {wcswcs}}{98}
--\entry {\code {wcsxfrm}}{94}
--\entry {\code {wctob}}{118}
--\entry {\code {wctomb}}{128}
--\entry {\code {wctrans}}{74}
--\entry {\code {wctype}}{70}
--\entry {\code {WEXITSTATUS}}{709}
--\entry {\code {WIFEXITED}}{709}
--\entry {\code {WIFSIGNALED}}{709}
--\entry {\code {WIFSTOPPED}}{709}
--\entry {\code {wmemchr}}{96}
--\entry {\code {wmemcmp}}{89}
--\entry {\code {wmemcpy}}{79}
--\entry {\code {wmemmove}}{81}
--\entry {\code {wmempcpy}}{80}
--\entry {\code {wmemset}}{81}
--\entry {\code {wordexp}}{220}
--\entry {\code {wordfree}}{220}
--\entry {\code {wprintf}}{259}
--\entry {\code {write}}{308}
--\entry {\code {writev}}{316}
--\entry {\code {wscanf}}{280}
--\entry {\code {WSTOPSIG}}{709}
--\entry {\code {WTERMSIG}}{709}
--\initial {Y}
--\entry {\code {y0}}{489}
--\entry {\code {y0f}}{489}
--\entry {\code {y0l}}{489}
--\entry {\code {y1}}{490}
--\entry {\code {y1f}}{490}
--\entry {\code {y1l}}{490}
--\entry {\code {yn}}{490}
--\entry {\code {ynf}}{490}
--\entry {\code {ynl}}{490}
-diff -u -udbrN glibc-2.3.2/manual/libc.info glibc-2.3.2-200304020432/manual/libc.info
---- glibc-2.3.2/manual/libc.info Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info Thu Jan 1 01:00:00 1970
-@@ -1,818 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--Indirect:
--libc.info-1: 1208
--libc.info-2: 61500
--libc.info-3: 106626
--libc.info-4: 156304
--libc.info-5: 204142
--libc.info-6: 247102
--libc.info-7: 274125
--libc.info-8: 319933
--libc.info-9: 362805
--libc.info-10: 410708
--libc.info-11: 449597
--libc.info-12: 496858
--libc.info-13: 542519
--libc.info-14: 584236
--libc.info-15: 631323
--libc.info-16: 681323
--libc.info-17: 729210
--libc.info-18: 778205
--libc.info-19: 826920
--libc.info-20: 875904
--libc.info-21: 921832
--libc.info-22: 963157
--libc.info-23: 1009947
--libc.info-24: 1059652
--libc.info-25: 1107740
--libc.info-26: 1153966
--libc.info-27: 1203098
--libc.info-28: 1252422
--libc.info-29: 1302337
--libc.info-30: 1350282
--libc.info-31: 1398920
--libc.info-32: 1429462
--libc.info-33: 1486890
--libc.info-34: 1536598
--libc.info-35: 1584002
--libc.info-36: 1631783
--libc.info-37: 1679171
--libc.info-38: 1728663
--libc.info-39: 1774227
--libc.info-40: 1823654
--libc.info-41: 1870981
--libc.info-42: 1920590
--libc.info-43: 1965086
--libc.info-44: 2014650
--libc.info-45: 2060853
--libc.info-46: 2110146
--libc.info-47: 2158781
--libc.info-48: 2201155
--libc.info-49: 2251135
--libc.info-50: 2297731
--libc.info-51: 2347537
--libc.info-52: 2394418
--libc.info-53: 2407546
--libc.info-54: 2617154
--libc.info-55: 2662663
--libc.info-56: 2703000
--libc.info-57: 2722877
--libc.info-58: 2786467
--libc.info-59: 2794244
--libc.info-60: 2876496
--libc.info-61: 2941243
--
--Tag Table:
--(Indirect)
--Node: Top1208
--Node: Introduction61500
--Node: Getting Started62849
--Node: Standards and Portability64308
--Node: ISO C65756
--Node: POSIX67273
--Node: Berkeley Unix69010
--Node: SVID69774
--Node: XPG70774
--Node: Using the Library71715
--Node: Header Files72438
--Node: Macro Definitions76389
--Node: Reserved Names78734
--Node: Feature Test Macros83430
--Node: Roadmap to the Manual94214
--Node: Error Reporting101498
--Node: Checking for Errors102415
--Node: Error Codes106626
--Node: Error Messages125922
--Node: Memory140254
--Node: Memory Concepts141111
--Node: Memory Allocation146779
--Node: Memory Allocation and C147668
--Node: Unconstrained Allocation151217
--Node: Basic Allocation152637
--Node: Malloc Examples154337
--Node: Freeing after Malloc156304
--Node: Changing Block Size158119
--Node: Allocating Cleared Space160722
--Node: Efficiency and Malloc161730
--Node: Aligned Memory Blocks162829
--Node: Malloc Tunable Parameters165041
--Node: Heap Consistency Checking166798
--Node: Hooks for Malloc171898
--Node: Statistics of Malloc178094
--Node: Summary of Malloc180052
--Node: Allocation Debugging182214
--Node: Tracing malloc183317
--Node: Using the Memory Debugger185167
--Node: Tips for the Memory Debugger187052
--Node: Interpreting the traces188380
--Node: Obstacks191915
--Node: Creating Obstacks193529
--Node: Preparing for Obstacks195428
--Node: Allocation in an Obstack198171
--Node: Freeing Obstack Objects200578
--Node: Obstack Functions201912
--Node: Growing Objects204142
--Node: Extra Fast Growing208387
--Node: Status of an Obstack212006
--Node: Obstacks Data Alignment213425
--Node: Obstack Chunks215111
--Node: Summary of Obstacks217466
--Node: Variable Size Automatic220880
--Node: Alloca Example222406
--Node: Advantages of Alloca223527
--Node: Disadvantages of Alloca225414
--Node: GNU C Variable-Size Arrays226157
--Node: Resizing the Data Segment227315
--Node: Locking Pages229403
--Node: Why Lock Pages230165
--Node: Locked Memory Details231793
--Node: Page Lock Functions234049
--Node: Character Handling239913
--Node: Classification of Characters241368
--Node: Case Conversion245212
--Node: Classification of Wide Characters247102
--Node: Using Wide Char Classes254802
--Node: Wide Character Case Conversion257113
--Node: String and Array Utilities259806
--Node: Representation of Strings261870
--Node: String/Array Conventions267392
--Node: String Length270326
--Node: Copying and Concatenation274125
--Node: String/Array Comparison299586
--Node: Collation Functions309728
--Node: Search Functions319933
--Node: Finding Tokens in a String332053
--Node: strfry344252
--Node: Trivial Encryption345282
--Node: Encode Binary Data346740
--Node: Argz and Envz Vectors351442
--Node: Argz Functions352042
--Node: Envz Functions358603
--Node: Character Set Handling361653
--Node: Extended Char Intro362805
--Node: Charset Function Overview375910
--Node: Restartable multibyte conversion376873
--Node: Selecting the Conversion378983
--Node: Keeping the state381372
--Node: Converting a Character384586
--Node: Converting Strings400592
--Node: Multibyte Conversion Example410708
--Node: Non-reentrant Conversion413695
--Node: Non-reentrant Character Conversion415379
--Node: Non-reentrant String Conversion420079
--Node: Shift State423077
--Node: Generic Charset Conversion425740
--Node: Generic Conversion Interface428922
--Node: iconv Examples438863
--Node: Other iconv Implementations444207
--Node: glibc iconv Implementation449597
--Node: Locales489334
--Node: Effects of Locale491003
--Node: Choosing Locale492967
--Node: Locale Categories494341
--Node: Setting the Locale496858
--Node: Standard Locales501410
--Node: Locale Information502699
--Node: The Lame Way to Locale Data504415
--Node: General Numeric506286
--Node: Currency Symbol509265
--Node: Sign of Money Amount513453
--Node: The Elegant and Fast Way515583
--Node: Formatting Numbers527719
--Node: Yes-or-No Questions537139
--Node: Message Translation539175
--Node: Message catalogs a la X/Open541221
--Node: The catgets Functions542519
--Node: The message catalog files551540
--Node: The gencat program558289
--Node: Common Usage561423
--Node: The Uniforum approach568549
--Node: Message catalogs with gettext570043
--Node: Translation with gettext571078
--Node: Locating gettext catalog577373
--Node: Advanced gettext functions584236
--Ref: Advanced gettext functions-Footnote-1594353
--Node: Charset conversion in gettext594445
--Node: GUI program problems596934
--Node: Using gettextized software602468
--Node: Helper programs for gettext610780
--Node: Searching and Sorting612544
--Node: Comparison Functions613459
--Node: Array Search Function614676
--Node: Array Sort Function618020
--Node: Search/Sort Example620151
--Node: Hash Search Function623642
--Node: Tree Search Function631323
--Node: Pattern Matching638317
--Node: Wildcard Matching639119
--Node: Globbing643057
--Node: Calling Glob643921
--Node: Flags for Globbing653903
--Node: More Flags for Globbing657433
--Node: Regular Expressions663565
--Node: POSIX Regexp Compilation664549
--Node: Flags for POSIX Regexps668664
--Node: Matching POSIX Regexps669571
--Node: Regexp Subexpressions671732
--Node: Subexpression Complications673786
--Node: Regexp Cleanup676149
--Node: Word Expansion678475
--Node: Expansion Stages679830
--Node: Calling Wordexp681323
--Node: Flags for Wordexp685286
--Node: Wordexp Example687239
--Node: Tilde Expansion689050
--Node: Variable Substitution690122
--Node: I/O Overview694247
--Node: I/O Concepts695761
--Node: Streams and File Descriptors696906
--Node: File Position699993
--Node: File Names702125
--Node: Directories703011
--Node: File Name Resolution704748
--Node: File Name Errors707676
--Node: File Name Portability709216
--Node: I/O on Streams711208
--Node: Streams713430
--Node: Standard Streams714771
--Node: Opening Streams716555
--Node: Closing Streams726658
--Node: Streams and Threads729210
--Node: Streams and I18N738236
--Node: Simple Output744399
--Node: Character Input749749
--Node: Line Input754995
--Node: Unreading761675
--Node: Unreading Idea762484
--Node: How Unread763310
--Node: Block Input/Output766074
--Node: Formatted Output768852
--Node: Formatted Output Basics770619
--Node: Output Conversion Syntax773112
--Node: Table of Output Conversions778205
--Node: Integer Conversions781211
--Node: Floating-Point Conversions786752
--Node: Other Output Conversions792586
--Node: Formatted Output Functions796392
--Node: Dynamic Output802374
--Node: Variable Arguments Output804230
--Node: Parsing a Template String810411
--Node: Example of Parsing814242
--Node: Customizing Printf816530
--Node: Registering New Conversions818449
--Node: Conversion Specifier Options820622
--Node: Defining the Output Handler824459
--Node: Printf Extension Example826920
--Node: Predefined Printf Handlers829329
--Node: Formatted Input832740
--Node: Formatted Input Basics833819
--Node: Input Conversion Syntax836511
--Node: Table of Input Conversions839873
--Node: Numeric Input Conversions844043
--Node: String Input Conversions848498
--Node: Dynamic String Input853618
--Node: Other Input Conversions854808
--Node: Formatted Input Functions856453
--Node: Variable Arguments Input859294
--Node: EOF and Errors861649
--Node: Error Recovery864563
--Node: Binary Streams866349
--Node: File Positioning868873
--Node: Portable Positioning875904
--Node: Stream Buffering881593
--Node: Buffering Concepts883192
--Node: Flushing Buffers884555
--Node: Controlling Buffering887662
--Node: Other Kinds of Streams893267
--Node: String Streams894556
--Node: Obstack Streams898692
--Node: Custom Streams900735
--Node: Streams and Cookies901452
--Node: Hook Functions904522
--Node: Formatted Messages906908
--Node: Printing Formatted Messages907573
--Node: Adding Severity Classes914013
--Node: Example915620
--Node: Low-Level I/O918824
--Node: Opening and Closing Files921832
--Node: I/O Primitives929804
--Node: File Position Primitive943900
--Node: Descriptors and Streams951213
--Node: Stream/Descriptor Precautions953897
--Node: Linked Channels955103
--Node: Independent Channels956364
--Node: Cleaning Streams958267
--Node: Scatter-Gather960567
--Node: Memory-mapped I/O963157
--Node: Waiting for I/O974620
--Node: Synchronizing I/O982401
--Node: Asynchronous I/O985849
--Node: Asynchronous Reads/Writes993909
--Node: Status of AIO Operations1006378
--Node: Synchronizing AIO Operations1009947
--Node: Cancel AIO Operations1016377
--Node: Configuration of AIO1019868
--Node: Control Operations1022062
--Node: Duplicating Descriptors1024753
--Node: Descriptor Flags1029009
--Node: File Status Flags1032413
--Node: Access Modes1033866
--Node: Open-time Flags1036162
--Node: Operating Modes1040878
--Node: Getting File Status Flags1043643
--Node: File Locks1046250
--Node: Interrupt Input1055145
--Node: IOCTLs1057575
--Ref: IOCTLs-Footnote-11059555
--Node: File System Interface1059652
--Node: Working Directory1061181
--Node: Accessing Directories1066192
--Node: Directory Entries1067619
--Node: Opening a Directory1070873
--Node: Reading/Closing Directory1073316
--Node: Simple Directory Lister1077818
--Node: Random Access Directory1078813
--Node: Scanning Directory Content1080315
--Node: Simple Directory Lister Mark II1084770
--Node: Working with Directory Trees1085879
--Node: Hard Links1097422
--Node: Symbolic Links1100220
--Node: Deleting Files1107740
--Node: Renaming Files1110658
--Node: Creating Directories1114262
--Node: File Attributes1116014
--Node: Attribute Meanings1117538
--Node: Reading Attributes1126760
--Node: Testing File Type1130830
--Node: File Owner1134986
--Node: Permission Bits1138638
--Node: Access Permission1143956
--Node: Setting Permissions1145098
--Node: Testing File Access1150304
--Node: File Times1153966
--Node: File Size1160352
--Node: Making Special Files1166775
--Node: Temporary Files1168451
--Node: Pipes and FIFOs1177671
--Node: Creating a Pipe1179254
--Node: Pipe to a Subprocess1182547
--Node: FIFO Special Files1185554
--Node: Pipe Atomicity1187126
--Node: Sockets1188009
--Node: Socket Concepts1190049
--Node: Communication Styles1194289
--Node: Socket Addresses1196139
--Node: Address Formats1198175
--Node: Setting Address1201376
--Node: Reading Address1203098
--Node: Interface Naming1204859
--Node: Local Namespace1207266
--Node: Local Namespace Concepts1207926
--Node: Local Namespace Details1209443
--Node: Local Socket Example1211390
--Node: Internet Namespace1212898
--Node: Internet Address Formats1215121
--Node: Host Addresses1217272
--Node: Abstract Host Addresses1218440
--Node: Host Address Data Type1222957
--Node: Host Address Functions1226080
--Node: Host Names1230432
--Node: Ports1239701
--Node: Services Database1241739
--Node: Byte Order1244562
--Node: Protocols Database1246870
--Node: Inet Example1250412
--Node: Misc Namespaces1252422
--Node: Open/Close Sockets1253168
--Node: Creating a Socket1253666
--Node: Closing a Socket1255346
--Node: Socket Pairs1256872
--Node: Connections1258881
--Node: Connecting1259975
--Node: Listening1262802
--Node: Accepting Connections1264875
--Node: Who is Connected1268006
--Node: Transferring Data1269105
--Node: Sending Data1270210
--Node: Receiving Data1272728
--Node: Socket Data Options1274464
--Node: Byte Stream Example1275327
--Node: Server Example1277384
--Node: Out-of-Band Data1281400
--Node: Datagrams1287311
--Node: Sending Datagrams1288340
--Node: Receiving Datagrams1290265
--Node: Datagram Example1292331
--Node: Example Receiver1294345
--Node: Inetd1296909
--Node: Inetd Servers1297718
--Node: Configuring Inetd1298960
--Node: Socket Options1301629
--Node: Socket Option Functions1302337
--Node: Socket-Level Options1303894
--Node: Networks Database1307523
--Node: Low-Level Terminal Interface1310407
--Node: Is It a Terminal1311877
--Node: I/O Queues1313780
--Node: Canonical or Not1315737
--Node: Terminal Modes1317583
--Node: Mode Data Types1319152
--Node: Mode Functions1320980
--Node: Setting Modes1324912
--Node: Input Modes1326911
--Node: Output Modes1332177
--Node: Control Modes1333789
--Node: Local Modes1337878
--Node: Line Speed1344191
--Node: Special Characters1348368
--Node: Editing Characters1350282
--Node: Signal Characters1354622
--Node: Start/Stop Characters1357488
--Node: Other Special1359358
--Node: Noncanonical Input1361172
--Node: BSD Terminal Modes1365986
--Node: Line Control1367458
--Node: Noncanon Example1372176
--Node: Pseudo-Terminals1374403
--Node: Allocation1375315
--Node: Pseudo-Terminal Pairs1380102
--Node: Syslog1382618
--Node: Overview of Syslog1383567
--Node: Submitting Syslog Messages1387751
--Node: openlog1388569
--Node: syslog; vsyslog1393583
--Node: closelog1397780
--Node: setlogmask1398920
--Node: Syslog Example1400763
--Node: Mathematics1401426
--Node: Mathematical Constants1403148
--Node: Trig Functions1405155
--Node: Inverse Trig Functions1408890
--Node: Exponents and Logarithms1412692
--Node: Hyperbolic Functions1420884
--Node: Special Functions1424924
--Node: Errors in Math Functions1429462
--Node: Pseudo-Random Numbers1486890
--Node: ISO Random1489131
--Node: BSD Random1491063
--Node: SVID Random1495645
--Node: FP Function Optimizations1508895
--Node: Arithmetic1510982
--Node: Integers1512261
--Node: Integer Division1515277
--Node: Floating Point Numbers1518962
--Node: Floating Point Classes1520704
--Node: Floating Point Errors1524525
--Node: FP Exceptions1525022
--Node: Infinity and NaN1529383
--Node: Status bit operations1532456
--Node: Math Error Reporting1536598
--Node: Rounding1538924
--Node: Control Functions1542512
--Node: Arithmetic Functions1547334
--Node: Absolute Value1548202
--Node: Normalization Functions1550262
--Node: Rounding Functions1553563
--Node: Remainder Functions1557945
--Node: FP Bit Twiddling1560089
--Node: FP Comparison Functions1563201
--Node: Misc FP Arithmetic1565914
--Node: Complex Numbers1568656
--Node: Operations on Complex1570361
--Node: Parsing of Numbers1572705
--Node: Parsing of Integers1573397
--Node: Parsing of Floats1584002
--Node: System V Number Conversion1589168
--Node: Date and Time1594484
--Node: Time Basics1595214
--Node: Elapsed Time1597094
--Node: Processor And CPU Time1600646
--Node: CPU Time1602517
--Node: Processor Time1604290
--Node: Calendar Time1606690
--Node: Simple Calendar Time1608623
--Node: High-Resolution Calendar1611027
--Node: Broken-down Time1616388
--Node: High Accuracy Clock1624347
--Node: Formatting Calendar Time1631783
--Node: Parsing Date and Time1647616
--Node: Low-Level Time String Parsing1648459
--Node: General Time String Parsing1662052
--Node: TZ Variable1669180
--Node: Time Zone Functions1675223
--Node: Time Functions Example1678063
--Node: Setting an Alarm1679171
--Node: Sleeping1684931
--Node: Resource Usage And Limitation1689534
--Node: Resource Usage1690211
--Node: Limits on Resources1695793
--Node: Priority1705010
--Node: Absolute Priority1707372
--Node: Realtime Scheduling1712466
--Node: Basic Scheduling Functions1715914
--Node: Traditional Scheduling1723848
--Node: Traditional Scheduling Intro1724400
--Node: Traditional Scheduling Functions1728663
--Node: Memory Resources1732550
--Node: Memory Subsystem1733400
--Node: Query Memory Parameters1735780
--Node: Processor Resources1739427
--Node: Non-Local Exits1741544
--Node: Non-Local Intro1742254
--Node: Non-Local Details1745985
--Node: Non-Local Exits and Signals1749061
--Node: System V contexts1750558
--Node: Signal Handling1763520
--Node: Concepts of Signals1765554
--Node: Kinds of Signals1766118
--Node: Signal Generation1767513
--Node: Delivery of Signal1769780
--Node: Standard Signals1772634
--Node: Program Error Signals1774227
--Node: Termination Signals1781685
--Node: Alarm Signals1785523
--Node: Asynchronous I/O Signals1786755
--Node: Job Control Signals1787945
--Node: Operation Error Signals1792545
--Node: Miscellaneous Signals1794484
--Node: Signal Messages1796178
--Node: Signal Actions1798063
--Node: Basic Signal Handling1799008
--Node: Advanced Signal Handling1805075
--Node: Signal and Sigaction1808049
--Node: Sigaction Function Example1809801
--Node: Flags for Sigaction1812117
--Node: Initial Signal Actions1814495
--Node: Defining Handlers1815876
--Node: Handler Returns1818061
--Node: Termination in Handler1820111
--Node: Longjmp in Handler1821550
--Node: Signals in Handler1823654
--Node: Merged Signals1825774
--Node: Nonreentrancy1831487
--Node: Atomic Data Access1836893
--Node: Non-atomic Example1837939
--Node: Atomic Types1839716
--Node: Atomic Usage1840735
--Node: Interrupted Primitives1842205
--Node: Generating Signals1845504
--Node: Signaling Yourself1846097
--Node: Signaling Another Process1848080
--Node: Permission for kill1851456
--Node: Kill Example1853252
--Node: Blocking Signals1855604
--Node: Why Block1857376
--Node: Signal Sets1858912
--Node: Process Signal Mask1861938
--Node: Testing for Delivery1865292
--Node: Blocking for Handler1866550
--Node: Checking for Pending Signals1868969
--Node: Remembering a Signal1870981
--Node: Waiting for a Signal1874535
--Node: Using Pause1875080
--Node: Pause Problems1876705
--Node: Sigsuspend1878429
--Node: Signal Stack1881140
--Node: BSD Signal Handling1886462
--Node: BSD Handler1887736
--Node: Blocking in BSD1890168
--Node: Program Basics1891619
--Node: Program Arguments1893603
--Node: Argument Syntax1895602
--Node: Parsing Program Arguments1898276
--Node: Getopt1899379
--Node: Using Getopt1900017
--Node: Example of Getopt1904135
--Node: Getopt Long Options1906873
--Node: Getopt Long Option Example1912121
--Node: Argp1915242
--Node: Argp Global Variables1918558
--Node: Argp Parsers1920590
--Node: Argp Option Vectors1923964
--Node: Argp Option Flags1927179
--Node: Argp Parser Functions1929225
--Node: Argp Special Keys1931917
--Node: Argp Helper Functions1937203
--Node: Argp Parsing State1940235
--Node: Argp Children1943798
--Node: Argp Flags1945880
--Node: Argp Help Filtering1948157
--Node: Argp Help Filter Keys1949392
--Node: Argp Help1950305
--Node: Argp Help Flags1951485
--Node: Argp Examples1953835
--Node: Argp Example 11954305
--Node: Argp Example 21955105
--Node: Argp Example 31958046
--Node: Argp Example 41965086
--Node: Argp User Customization1972835
--Node: Suboptions1974563
--Node: Suboptions Example1976505
--Node: Environment Variables1978674
--Node: Environment Access1980539
--Node: Standard Environment1985459
--Node: System Calls1989631
--Node: Program Termination1993187
--Node: Normal Termination1994396
--Node: Exit Status1995793
--Node: Cleanups on Exit1999152
--Node: Aborting a Program2000969
--Node: Termination Internals2001868
--Node: Processes2004048
--Node: Running a Command2006070
--Node: Process Creation Concepts2008097
--Node: Process Identification2010106
--Node: Creating a Process2011030
--Node: Executing a File2014650
--Node: Process Completion2021785
--Node: Process Completion Status2028055
--Node: BSD Wait Functions2029698
--Node: Process Creation Example2031566
--Node: Job Control2033822
--Node: Concepts of Job Control2035100
--Node: Job Control is Optional2038454
--Node: Controlling Terminal2039503
--Node: Access to the Terminal2040410
--Node: Orphaned Process Groups2042013
--Node: Implementing a Shell2043004
--Node: Data Structures2043887
--Node: Initializing the Shell2046545
--Node: Launching Jobs2050281
--Node: Foreground and Background2057734
--Node: Stopped and Terminated Jobs2060853
--Node: Continuing Stopped Jobs2066063
--Node: Missing Pieces2067695
--Node: Functions for Job Control2069319
--Node: Identifying the Terminal2069799
--Node: Process Group Functions2071372
--Node: Terminal Access Functions2076382
--Node: Name Service Switch2079859
--Node: NSS Basics2081190
--Node: NSS Configuration File2082779
--Node: Services in the NSS configuration2084477
--Node: Actions in the NSS configuration2085758
--Node: Notes on NSS Configuration File2088919
--Node: NSS Module Internals2090796
--Node: NSS Module Names2091492
--Ref: NSS Module Names-Footnote-12093533
--Ref: NSS Module Names-Footnote-22093687
--Node: NSS Modules Interface2093865
--Node: Extending NSS2098562
--Node: Adding another Service to NSS2099493
--Node: NSS Module Function Internals2101724
--Node: Users and Groups2106627
--Node: User and Group IDs2109238
--Node: Process Persona2110146
--Node: Why Change Persona2111831
--Node: How Change Persona2113712
--Node: Reading Persona2115599
--Node: Setting User ID2117869
--Node: Setting Groups2120732
--Node: Enable/Disable Setuid2126415
--Node: Setuid Program Example2128450
--Node: Tips for Setuid2131924
--Node: Who Logged In2134439
--Node: User Accounting Database2136819
--Node: Manipulating the Database2138003
--Node: XPG Functions2150331
--Node: Logging In and Out2154746
--Node: User Database2156862
--Node: User Data Structure2157524
--Node: Lookup User2158781
--Node: Scanning All Users2161345
--Node: Writing a User Entry2164299
--Node: Group Database2165198
--Node: Group Data Structure2165774
--Node: Lookup Group2166537
--Node: Scanning All Groups2169038
--Node: Database Example2172068
--Node: Netgroup Database2174265
--Node: Netgroup Data2174676
--Node: Lookup Netgroup2176204
--Node: Netgroup Membership2179622
--Node: System Management2180952
--Node: Host Identification2181883
--Node: Platform Type2188362
--Node: Filesystem Handling2191667
--Node: Mount Information2193167
--Node: fstab2195339
--Node: mtab2201155
--Node: Other Mount Information2210447
--Node: Mount-Unmount-Remount2210961
--Node: System Parameters2220984
--Node: System Configuration2226517
--Node: General Limits2228088
--Node: System Options2231723
--Node: Version Supported2235055
--Node: Sysconf2236892
--Node: Sysconf Definition2237528
--Node: Constants for Sysconf2238200
--Node: Examples of Sysconf2251135
--Node: Minimums2252128
--Node: Limits for Files2254839
--Node: Options for Files2257840
--Node: File Minimums2260133
--Node: Pathconf2262353
--Node: Utility Limits2265728
--Node: Utility Minimums2267658
--Node: String Parameters2269410
--Node: Cryptographic Functions2273310
--Node: Legal Problems2275283
--Node: getpass2277559
--Node: crypt2279729
--Node: DES Encryption2284497
--Node: Debugging Support2290699
--Node: Backtraces2291341
--Node: POSIX Threads2296128
--Node: Basic Thread Operations2297731
--Node: Thread Attributes2302313
--Node: Cancellation2309270
--Node: Cleanup Handlers2313163
--Node: Mutexes2318300
--Node: Condition Variables2327958
--Node: POSIX Semaphores2335333
--Node: Thread-Specific Data2339214
--Node: Threads and Signal Handling2343847
--Node: Threads and Fork2347537
--Node: Streams and Fork2352799
--Node: Miscellaneous Thread Functions2354961
--Node: Language Features2361446
--Node: Consistency Checking2362372
--Node: Variadic Functions2366918
--Node: Why Variadic2367990
--Node: How Variadic2369954
--Node: Variadic Prototypes2371243
--Node: Receiving Arguments2372384
--Node: How Many Arguments2375055
--Node: Calling Variadics2376717
--Node: Argument Macros2378817
--Node: Variadic Example2381653
--Node: Old Varargs2382805
--Node: Null Pointer Constant2384480
--Node: Important Data Types2385565
--Node: Data Type Measurements2388129
--Node: Width of Type2388986
--Node: Range of Type2389892
--Node: Floating Type Macros2393160
--Node: Floating Point Concepts2394418
--Node: Floating Point Parameters2398146
--Node: IEEE Floating Point2405098
--Node: Structure Measurement2406851
--Node: Library Summary2407546
--Node: Installation2617154
--Node: Configuring and compiling2618856
--Node: Running make install2628187
--Node: Tools for Compilation2632236
--Node: Supported Configurations2635037
--Node: Linux2637241
--Node: Reporting Bugs2640145
--Node: Maintenance2642977
--Node: Source Layout2643360
--Node: Porting2647292
--Node: Hierarchy Conventions2655592
--Node: Porting to Unix2660648
--Node: Contributors2662663
--Node: Free Manuals2669917
--Node: Copying2674837
--Node: Documentation License2703000
--Node: Concept Index2722877
--Node: Type Index2786467
--Node: Function Index2794244
--Node: Variable Index2876496
--Node: File Index2941243
--
--End Tag Table
-diff -u -udbrN glibc-2.3.2/manual/libc.info-1 glibc-2.3.2-200304020432/manual/libc.info-1
---- glibc-2.3.2/manual/libc.info-1 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-1 Thu Jan 1 01:00:00 1970
-@@ -1,1349 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
--
--Main Menu
--*********
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x of the GNU C Library.
--
--* Menu:
--
--* Introduction:: Purpose of the GNU C Library.
--* Error Reporting:: How library functions report errors.
--* Memory:: Allocating virtual memory and controlling
-- paging.
--* Character Handling:: Character testing and conversion functions.
--* String and Array Utilities:: Utilities for copying and comparing strings
-- and arrays.
--* Character Set Handling:: Support for extended character sets.
--* Locales:: The country and language can affect the
-- behavior of library functions.
--* Message Translation:: How to make the program speak the user's
-- language.
--* Searching and Sorting:: General searching and sorting functions.
--* Pattern Matching:: Matching shell ``globs'' and regular
-- expressions.
--* I/O Overview:: Introduction to the I/O facilities.
--* I/O on Streams:: High-level, portable I/O facilities.
--* Low-Level I/O:: Low-level, less portable I/O.
--* File System Interface:: Functions for manipulating files.
--* Pipes and FIFOs:: A simple interprocess communication
-- mechanism.
--* Sockets:: A more complicated IPC mechanism, with
-- networking support.
--* Low-Level Terminal Interface:: How to change the characteristics of a
-- terminal device.
--* Syslog:: System logging and messaging.
--* Mathematics:: Math functions, useful constants, random
-- numbers.
--* Arithmetic:: Low level arithmetic functions.
--* Date and Time:: Functions for getting the date and time and
-- formatting them nicely.
--* Resource Usage And Limitation:: Functions for examining resource usage and
-- getting and setting limits.
--* Non-Local Exits:: Jumping out of nested function calls.
--* Signal Handling:: How to send, block, and handle signals.
--* Program Basics:: Writing the beginning and end of your
-- program.
--* Processes:: How to create processes and run other
-- programs.
--* Job Control:: All about process groups and sessions.
--* Name Service Switch:: Accessing system databases.
--* Users and Groups:: How users are identified and classified.
--* System Management:: Controlling the system and getting
-- information about it.
--* System Configuration:: Parameters describing operating system
-- limits.
--* Cryptographic Functions:: DES encryption and password handling.
--* Debugging Support:: Functions to help debugging applications.
--
--Add-ons
--
--* POSIX Threads:: The standard threads library.
--
--Appendices
--
--* Language Features:: C language features provided by the library.
--* Library Summary:: A summary showing the syntax, header file,
-- and derivation of each library feature.
--* Installation:: How to install the GNU C library.
--* Maintenance:: How to enhance and port the GNU C Library.
--* Contributors:: Who wrote what parts of the GNU C library.
--* Free Manuals:: Free Software Needs Free Documentation.
--* Copying:: The GNU Lesser General Public License says
-- how you can copy and share the GNU C Library.
--* Documentation License:: This manual is under the GNU Free
-- Documentation License.
--
--Indices
--
--* Concept Index:: Index of concepts and names.
--* Type Index:: Index of types and type qualifiers.
--* Function Index:: Index of functions and function-like macros.
--* Variable Index:: Index of variables and variable-like macros.
--* File Index:: Index of programs and files.
--
-- --- The Detailed Node Listing ---
--
--Introduction
--
--* Getting Started:: What this manual is for and how to use it.
--* Standards and Portability:: Standards and sources upon which the GNU
-- C library is based.
--* Using the Library:: Some practical uses for the library.
--* Roadmap to the Manual:: Overview of the remaining chapters in
-- this manual.
--
--Standards and Portability
--
--* ISO C:: The international standard for the C
-- programming language.
--* POSIX:: The ISO/IEC 9945 (aka IEEE 1003) standards
-- for operating systems.
--* Berkeley Unix:: BSD and SunOS.
--* SVID:: The System V Interface Description.
--* XPG:: The X/Open Portability Guide.
--
--Using the Library
--
--* Header Files:: How to include the header files in your
-- programs.
--* Macro Definitions:: Some functions in the library may really
-- be implemented as macros.
--* Reserved Names:: The C standard reserves some names for
-- the library, and some for users.
--* Feature Test Macros:: How to control what names are defined.
--
--Error Reporting
--
--* Checking for Errors:: How errors are reported by library functions.
--* Error Codes:: Error code macros; all of these expand
-- into integer constant values.
--* Error Messages:: Mapping error codes onto error messages.
--
--Memory
--
--* Memory Concepts:: An introduction to concepts and terminology.
--* Memory Allocation:: Allocating storage for your program data
--* Locking Pages:: Preventing page faults
--* Resizing the Data Segment:: `brk', `sbrk'
--
--Memory Allocation
--
--* Memory Allocation and C:: How to get different kinds of allocation in C.
--* Unconstrained Allocation:: The `malloc' facility allows fully general
-- dynamic allocation.
--* Allocation Debugging:: Finding memory leaks and not freed memory.
--* Obstacks:: Obstacks are less general than malloc
-- but more efficient and convenient.
--* Variable Size Automatic:: Allocation of variable-sized blocks
-- of automatic storage that are freed when the
-- calling function returns.
--
--Unconstrained Allocation
--
--* Basic Allocation:: Simple use of `malloc'.
--* Malloc Examples:: Examples of `malloc'. `xmalloc'.
--* Freeing after Malloc:: Use `free' to free a block you
-- got with `malloc'.
--* Changing Block Size:: Use `realloc' to make a block
-- bigger or smaller.
--* Allocating Cleared Space:: Use `calloc' to allocate a
-- block and clear it.
--* Efficiency and Malloc:: Efficiency considerations in use of
-- these functions.
--* Aligned Memory Blocks:: Allocating specially aligned memory.
--* Malloc Tunable Parameters:: Use `mallopt' to adjust allocation
-- parameters.
--* Heap Consistency Checking:: Automatic checking for errors.
--* Hooks for Malloc:: You can use these hooks for debugging
-- programs that use `malloc'.
--* Statistics of Malloc:: Getting information about how much
-- memory your program is using.
--* Summary of Malloc:: Summary of `malloc' and related functions.
--
--Allocation Debugging
--
--* Tracing malloc:: How to install the tracing functionality.
--* Using the Memory Debugger:: Example programs excerpts.
--* Tips for the Memory Debugger:: Some more or less clever ideas.
--* Interpreting the traces:: What do all these lines mean?
--
--Obstacks
--
--* Creating Obstacks:: How to declare an obstack in your program.
--* Preparing for Obstacks:: Preparations needed before you can
-- use obstacks.
--* Allocation in an Obstack:: Allocating objects in an obstack.
--* Freeing Obstack Objects:: Freeing objects in an obstack.
--* Obstack Functions:: The obstack functions are both
-- functions and macros.
--* Growing Objects:: Making an object bigger by stages.
--* Extra Fast Growing:: Extra-high-efficiency (though more
-- complicated) growing objects.
--* Status of an Obstack:: Inquiries about the status of an obstack.
--* Obstacks Data Alignment:: Controlling alignment of objects in obstacks.
--* Obstack Chunks:: How obstacks obtain and release chunks;
-- efficiency considerations.
--* Summary of Obstacks::
--
--Variable Size Automatic
--
--* Alloca Example:: Example of using `alloca'.
--* Advantages of Alloca:: Reasons to use `alloca'.
--* Disadvantages of Alloca:: Reasons to avoid `alloca'.
--* GNU C Variable-Size Arrays:: Only in GNU C, here is an alternative
-- method of allocating dynamically and
-- freeing automatically.
--
--Locking Pages
--
--* Why Lock Pages:: Reasons to read this section.
--* Locked Memory Details:: Everything you need to know locked
-- memory
--* Page Lock Functions:: Here's how to do it.
--
--Character Handling
--
--* Classification of Characters:: Testing whether characters are
-- letters, digits, punctuation, etc.
--
--* Case Conversion:: Case mapping, and the like.
--* Classification of Wide Characters:: Character class determination for
-- wide characters.
--* Using Wide Char Classes:: Notes on using the wide character
-- classes.
--* Wide Character Case Conversion:: Mapping of wide characters.
--
--String and Array Utilities
--
--* Representation of Strings:: Introduction to basic concepts.
--* String/Array Conventions:: Whether to use a string function or an
-- arbitrary array function.
--* String Length:: Determining the length of a string.
--* Copying and Concatenation:: Functions to copy the contents of strings
-- and arrays.
--* String/Array Comparison:: Functions for byte-wise and character-wise
-- comparison.
--* Collation Functions:: Functions for collating strings.
--* Search Functions:: Searching for a specific element or substring.
--* Finding Tokens in a String:: Splitting a string into tokens by looking
-- for delimiters.
--* strfry:: Function for flash-cooking a string.
--* Trivial Encryption:: Obscuring data.
--* Encode Binary Data:: Encoding and Decoding of Binary Data.
--* Argz and Envz Vectors:: Null-separated string vectors.
--
--Argz and Envz Vectors
--
--* Argz Functions:: Operations on argz vectors.
--* Envz Functions:: Additional operations on environment vectors.
--
--Character Set Handling
--
--* Extended Char Intro:: Introduction to Extended Characters.
--* Charset Function Overview:: Overview about Character Handling
-- Functions.
--* Restartable multibyte conversion:: Restartable multibyte conversion
-- Functions.
--* Non-reentrant Conversion:: Non-reentrant Conversion Function.
--* Generic Charset Conversion:: Generic Charset Conversion.
--
--Restartable multibyte conversion
--
--* Selecting the Conversion:: Selecting the conversion and its properties.
--* Keeping the state:: Representing the state of the conversion.
--* Converting a Character:: Converting Single Characters.
--* Converting Strings:: Converting Multibyte and Wide Character
-- Strings.
--* Multibyte Conversion Example:: A Complete Multibyte Conversion Example.
--
--Non-reentrant Conversion
--
--* Non-reentrant Character Conversion:: Non-reentrant Conversion of Single
-- Characters.
--* Non-reentrant String Conversion:: Non-reentrant Conversion of Strings.
--* Shift State:: States in Non-reentrant Functions.
--
--Generic Charset Conversion
--
--* Generic Conversion Interface:: Generic Character Set Conversion Interface.
--* iconv Examples:: A complete `iconv' example.
--* Other iconv Implementations:: Some Details about other `iconv'
-- Implementations.
--* glibc iconv Implementation:: The `iconv' Implementation in the GNU C
-- library.
--
--Locales
--
--* Effects of Locale:: Actions affected by the choice of
-- locale.
--* Choosing Locale:: How the user specifies a locale.
--* Locale Categories:: Different purposes for which you can
-- select a locale.
--* Setting the Locale:: How a program specifies the locale
-- with library functions.
--* Standard Locales:: Locale names available on all systems.
--* Locale Information:: How to access the information for the locale.
--* Formatting Numbers:: A dedicated function to format numbers.
--* Yes-or-No Questions:: Check a Response against the locale.
--
--Locale Information
--
--* The Lame Way to Locale Data:: ISO C's `localeconv'.
--* The Elegant and Fast Way:: X/Open's `nl_langinfo'.
--
--The Lame Way to Locale Data
--
--* General Numeric:: Parameters for formatting numbers and
-- currency amounts.
--* Currency Symbol:: How to print the symbol that identifies an
-- amount of money (e.g. `$').
--* Sign of Money Amount:: How to print the (positive or negative) sign
-- for a monetary amount, if one exists.
--
--Message Translation
--
--* Message catalogs a la X/Open:: The `catgets' family of functions.
--* The Uniforum approach:: The `gettext' family of functions.
--
--Message catalogs a la X/Open
--
--* The catgets Functions:: The `catgets' function family.
--* The message catalog files:: Format of the message catalog files.
--* The gencat program:: How to generate message catalogs files which
-- can be used by the functions.
--* Common Usage:: How to use the `catgets' interface.
--
--The Uniforum approach
--
--* Message catalogs with gettext:: The `gettext' family of functions.
--* Helper programs for gettext:: Programs to handle message catalogs
-- for `gettext'.
--
--Message catalogs with gettext
--
--* Translation with gettext:: What has to be done to translate a message.
--* Locating gettext catalog:: How to determine which catalog to be used.
--* Advanced gettext functions:: Additional functions for more complicated
-- situations.
--* Charset conversion in gettext:: How to specify the output character set
-- `gettext' uses.
--* GUI program problems:: How to use `gettext' in GUI programs.
--* Using gettextized software:: The possibilities of the user to influence
-- the way `gettext' works.
--
--Searching and Sorting
--
--* Comparison Functions:: Defining how to compare two objects.
-- Since the sort and search facilities
-- are general, you have to specify the
-- ordering.
--* Array Search Function:: The `bsearch' function.
--* Array Sort Function:: The `qsort' function.
--* Search/Sort Example:: An example program.
--* Hash Search Function:: The `hsearch' function.
--* Tree Search Function:: The `tsearch' function.
--
--Pattern Matching
--
--* Wildcard Matching:: Matching a wildcard pattern against a single string.
--* Globbing:: Finding the files that match a wildcard pattern.
--* Regular Expressions:: Matching regular expressions against strings.
--* Word Expansion:: Expanding shell variables, nested commands,
-- arithmetic, and wildcards.
-- This is what the shell does with shell commands.
--
--Globbing
--
--* Calling Glob:: Basic use of `glob'.
--* Flags for Globbing:: Flags that enable various options in `glob'.
--* More Flags for Globbing:: GNU specific extensions to `glob'.
--
--Regular Expressions
--
--* POSIX Regexp Compilation:: Using `regcomp' to prepare to match.
--* Flags for POSIX Regexps:: Syntax variations for `regcomp'.
--* Matching POSIX Regexps:: Using `regexec' to match the compiled
-- pattern that you get from `regcomp'.
--* Regexp Subexpressions:: Finding which parts of the string were matched.
--* Subexpression Complications:: Find points of which parts were matched.
--* Regexp Cleanup:: Freeing storage; reporting errors.
--
--Word Expansion
--
--* Expansion Stages:: What word expansion does to a string.
--* Calling Wordexp:: How to call `wordexp'.
--* Flags for Wordexp:: Options you can enable in `wordexp'.
--* Wordexp Example:: A sample program that does word expansion.
--* Tilde Expansion:: Details of how tilde expansion works.
--* Variable Substitution:: Different types of variable substitution.
--
--I/O Overview
--
--* I/O Concepts:: Some basic information and terminology.
--* File Names:: How to refer to a file.
--
--I/O Concepts
--
--* Streams and File Descriptors:: The GNU Library provides two ways
-- to access the contents of files.
--* File Position:: The number of bytes from the
-- beginning of the file.
--
--File Names
--
--* Directories:: Directories contain entries for files.
--* File Name Resolution:: A file name specifies how to look up a file.
--* File Name Errors:: Error conditions relating to file names.
--* File Name Portability:: File name portability and syntax issues.
--
--I/O on Streams
--
--* Streams:: About the data type representing a stream.
--* Standard Streams:: Streams to the standard input and output
-- devices are created for you.
--* Opening Streams:: How to create a stream to talk to a file.
--* Closing Streams:: Close a stream when you are finished with it.
--* Streams and Threads:: Issues with streams in threaded programs.
--* Streams and I18N:: Streams in internationalized applications.
--* Simple Output:: Unformatted output by characters and lines.
--* Character Input:: Unformatted input by characters and words.
--* Line Input:: Reading a line or a record from a stream.
--* Unreading:: Peeking ahead/pushing back input just read.
--* Block Input/Output:: Input and output operations on blocks of data.
--* Formatted Output:: `printf' and related functions.
--* Customizing Printf:: You can define new conversion specifiers for
-- `printf' and friends.
--* Formatted Input:: `scanf' and related functions.
--* EOF and Errors:: How you can tell if an I/O error happens.
--* Error Recovery:: What you can do about errors.
--* Binary Streams:: Some systems distinguish between text files
-- and binary files.
--* File Positioning:: About random-access streams.
--* Portable Positioning:: Random access on peculiar ISO C systems.
--* Stream Buffering:: How to control buffering of streams.
--* Other Kinds of Streams:: Streams that do not necessarily correspond
-- to an open file.
--* Formatted Messages:: Print strictly formatted messages.
--
--Unreading
--
--* Unreading Idea:: An explanation of unreading with pictures.
--* How Unread:: How to call `ungetc' to do unreading.
--
--Formatted Output
--
--* Formatted Output Basics:: Some examples to get you started.
--* Output Conversion Syntax:: General syntax of conversion
-- specifications.
--* Table of Output Conversions:: Summary of output conversions and
-- what they do.
--* Integer Conversions:: Details about formatting of integers.
--* Floating-Point Conversions:: Details about formatting of
-- floating-point numbers.
--* Other Output Conversions:: Details about formatting of strings,
-- characters, pointers, and the like.
--* Formatted Output Functions:: Descriptions of the actual functions.
--* Dynamic Output:: Functions that allocate memory for the output.
--* Variable Arguments Output:: `vprintf' and friends.
--* Parsing a Template String:: What kinds of args does a given template
-- call for?
--* Example of Parsing:: Sample program using `parse_printf_format'.
--
--Customizing Printf
--
--* Registering New Conversions:: Using `register_printf_function'
-- to register a new output conversion.
--* Conversion Specifier Options:: The handler must be able to get
-- the options specified in the
-- template when it is called.
--* Defining the Output Handler:: Defining the handler and arginfo
-- functions that are passed as arguments
-- to `register_printf_function'.
--* Printf Extension Example:: How to define a `printf'
-- handler function.
--* Predefined Printf Handlers:: Predefined `printf' handlers.
--
--Formatted Input
--
--* Formatted Input Basics:: Some basics to get you started.
--* Input Conversion Syntax:: Syntax of conversion specifications.
--* Table of Input Conversions:: Summary of input conversions and what they do.
--* Numeric Input Conversions:: Details of conversions for reading numbers.
--* String Input Conversions:: Details of conversions for reading strings.
--* Dynamic String Input:: String conversions that `malloc' the buffer.
--* Other Input Conversions:: Details of miscellaneous other conversions.
--* Formatted Input Functions:: Descriptions of the actual functions.
--* Variable Arguments Input:: `vscanf' and friends.
--
--Stream Buffering
--
--* Buffering Concepts:: Terminology is defined here.
--* Flushing Buffers:: How to ensure that output buffers are flushed.
--* Controlling Buffering:: How to specify what kind of buffering to use.
--
--Other Kinds of Streams
--
--* String Streams:: Streams that get data from or put data in
-- a string or memory buffer.
--* Obstack Streams:: Streams that store data in an obstack.
--* Custom Streams:: Defining your own streams with an arbitrary
-- input data source and/or output data sink.
--
--Custom Streams
--
--* Streams and Cookies:: The "cookie" records where to fetch or
-- store data that is read or written.
--* Hook Functions:: How you should define the four "hook
-- functions" that a custom stream needs.
--
--Formatted Messages
--
--* Printing Formatted Messages:: The `fmtmsg' function.
--* Adding Severity Classes:: Add more severity classes.
--* Example:: How to use `fmtmsg' and `addseverity'.
--
--Low-Level I/O
--
--* Opening and Closing Files:: How to open and close file
-- descriptors.
--* I/O Primitives:: Reading and writing data.
--* File Position Primitive:: Setting a descriptor's file
-- position.
--* Descriptors and Streams:: Converting descriptor to stream
-- or vice-versa.
--* Stream/Descriptor Precautions:: Precautions needed if you use both
-- descriptors and streams.
--* Scatter-Gather:: Fast I/O to discontinuous buffers.
--* Memory-mapped I/O:: Using files like memory.
--* Waiting for I/O:: How to check for input or output
-- on multiple file descriptors.
--* Synchronizing I/O:: Making sure all I/O actions completed.
--* Asynchronous I/O:: Perform I/O in parallel.
--* Control Operations:: Various other operations on file
-- descriptors.
--* Duplicating Descriptors:: Fcntl commands for duplicating
-- file descriptors.
--* Descriptor Flags:: Fcntl commands for manipulating
-- flags associated with file
-- descriptors.
--* File Status Flags:: Fcntl commands for manipulating
-- flags associated with open files.
--* File Locks:: Fcntl commands for implementing
-- file locking.
--* Interrupt Input:: Getting an asynchronous signal when
-- input arrives.
--* IOCTLs:: Generic I/O Control operations.
--
--Stream/Descriptor Precautions
--
--* Linked Channels:: Dealing with channels sharing a file position.
--* Independent Channels:: Dealing with separately opened, unlinked channels.
--* Cleaning Streams:: Cleaning a stream makes it safe to use
-- another channel.
--
--Asynchronous I/O
--
--* Asynchronous Reads/Writes:: Asynchronous Read and Write Operations.
--* Status of AIO Operations:: Getting the Status of AIO Operations.
--* Synchronizing AIO Operations:: Getting into a consistent state.
--* Cancel AIO Operations:: Cancellation of AIO Operations.
--* Configuration of AIO:: How to optimize the AIO implementation.
--
--File Status Flags
--
--* Access Modes:: Whether the descriptor can read or write.
--* Open-time Flags:: Details of `open'.
--* Operating Modes:: Special modes to control I/O operations.
--* Getting File Status Flags:: Fetching and changing these flags.
--
--File System Interface
--
--* Working Directory:: This is used to resolve relative
-- file names.
--* Accessing Directories:: Finding out what files a directory
-- contains.
--* Working with Directory Trees:: Apply actions to all files or a selectable
-- subset of a directory hierarchy.
--* Hard Links:: Adding alternate names to a file.
--* Symbolic Links:: A file that ``points to'' a file name.
--* Deleting Files:: How to delete a file, and what that means.
--* Renaming Files:: Changing a file's name.
--* Creating Directories:: A system call just for creating a directory.
--* File Attributes:: Attributes of individual files.
--* Making Special Files:: How to create special files.
--* Temporary Files:: Naming and creating temporary files.
--
--Accessing Directories
--
--* Directory Entries:: Format of one directory entry.
--* Opening a Directory:: How to open a directory stream.
--* Reading/Closing Directory:: How to read directory entries from the stream.
--* Simple Directory Lister:: A very simple directory listing program.
--* Random Access Directory:: Rereading part of the directory
-- already read with the same stream.
--* Scanning Directory Content:: Get entries for user selected subset of
-- contents in given directory.
--* Simple Directory Lister Mark II:: Revised version of the program.
--
--File Attributes
--
--* Attribute Meanings:: The names of the file attributes,
-- and what their values mean.
--* Reading Attributes:: How to read the attributes of a file.
--* Testing File Type:: Distinguishing ordinary files,
-- directories, links...
--* File Owner:: How ownership for new files is determined,
-- and how to change it.
--* Permission Bits:: How information about a file's access
-- mode is stored.
--* Access Permission:: How the system decides who can access a file.
--* Setting Permissions:: How permissions for new files are assigned,
-- and how to change them.
--* Testing File Access:: How to find out if your process can
-- access a file.
--* File Times:: About the time attributes of a file.
--* File Size:: Manually changing the size of a file.
--
--Pipes and FIFOs
--
--* Creating a Pipe:: Making a pipe with the `pipe' function.
--* Pipe to a Subprocess:: Using a pipe to communicate with a
-- child process.
--* FIFO Special Files:: Making a FIFO special file.
--* Pipe Atomicity:: When pipe (or FIFO) I/O is atomic.
--
--Sockets
--
--* Socket Concepts:: Basic concepts you need to know about.
--* Communication Styles::Stream communication, datagrams and other styles.
--* Socket Addresses:: How socket names (``addresses'') work.
--* Interface Naming:: Identifying specific network interfaces.
--* Local Namespace:: Details about the local namespace.
--* Internet Namespace:: Details about the Internet namespace.
--* Misc Namespaces:: Other namespaces not documented fully here.
--* Open/Close Sockets:: Creating sockets and destroying them.
--* Connections:: Operations on sockets with connection state.
--* Datagrams:: Operations on datagram sockets.
--* Inetd:: Inetd is a daemon that starts servers on request.
-- The most convenient way to write a server
-- is to make it work with Inetd.
--* Socket Options:: Miscellaneous low-level socket options.
--* Networks Database:: Accessing the database of network names.
--
--Socket Addresses
--
--* Address Formats:: About `struct sockaddr'.
--* Setting Address:: Binding an address to a socket.
--* Reading Address:: Reading the address of a socket.
--
--Local Namespace
--
--* Concepts: Local Namespace Concepts. What you need to understand.
--* Details: Local Namespace Details. Address format, symbolic names, etc.
--* Example: Local Socket Example. Example of creating a socket.
--
--Internet Namespace
--
--* Internet Address Formats:: How socket addresses are specified in the
-- Internet namespace.
--* Host Addresses:: All about host addresses of Internet host.
--* Protocols Database:: Referring to protocols by name.
--* Ports:: Internet port numbers.
--* Services Database:: Ports may have symbolic names.
--* Byte Order:: Different hosts may use different byte
-- ordering conventions; you need to
-- canonicalize host address and port number.
--* Inet Example:: Putting it all together.
--
--Host Addresses
--
--* Abstract Host Addresses:: What a host number consists of.
--* Data type: Host Address Data Type. Data type for a host number.
--* Functions: Host Address Functions. Functions to operate on them.
--* Names: Host Names. Translating host names to host numbers.
--
--Open/Close Sockets
--
--* Creating a Socket:: How to open a socket.
--* Closing a Socket:: How to close a socket.
--* Socket Pairs:: These are created like pipes.
--
--Connections
--
--* Connecting:: What the client program must do.
--* Listening:: How a server program waits for requests.
--* Accepting Connections:: What the server does when it gets a request.
--* Who is Connected:: Getting the address of the
-- other side of a connection.
--* Transferring Data:: How to send and receive data.
--* Byte Stream Example:: An example program: a client for communicating
-- over a byte stream socket in the Internet namespace.
--* Server Example:: A corresponding server program.
--* Out-of-Band Data:: This is an advanced feature.
--
--Transferring Data
--
--* Sending Data:: Sending data with `send'.
--* Receiving Data:: Reading data with `recv'.
--* Socket Data Options:: Using `send' and `recv'.
--
--Datagrams
--
--* Sending Datagrams:: Sending packets on a datagram socket.
--* Receiving Datagrams:: Receiving packets on a datagram socket.
--* Datagram Example:: An example program: packets sent over a
-- datagram socket in the local namespace.
--* Example Receiver:: Another program, that receives those packets.
--
--Inetd
--
--* Inetd Servers::
--* Configuring Inetd::
--
--Socket Options
--
--* Socket Option Functions:: The basic functions for setting and getting
-- socket options.
--* Socket-Level Options:: Details of the options at the socket level.
--
--Low-Level Terminal Interface
--
--* Is It a Terminal:: How to determine if a file is a terminal
-- device, and what its name is.
--* I/O Queues:: About flow control and typeahead.
--* Canonical or Not:: Two basic styles of input processing.
--* Terminal Modes:: How to examine and modify flags controlling
-- details of terminal I/O: echoing,
-- signals, editing. Posix.
--* BSD Terminal Modes:: BSD compatible terminal mode setting
--* Line Control:: Sending break sequences, clearing
-- terminal buffers ...
--* Noncanon Example:: How to read single characters without echo.
--* Pseudo-Terminals:: How to open a pseudo-terminal.
--
--Terminal Modes
--
--* Mode Data Types:: The data type `struct termios' and
-- related types.
--* Mode Functions:: Functions to read and set the terminal
-- attributes.
--* Setting Modes:: The right way to set terminal attributes
-- reliably.
--* Input Modes:: Flags controlling low-level input handling.
--* Output Modes:: Flags controlling low-level output handling.
--* Control Modes:: Flags controlling serial port behavior.
--* Local Modes:: Flags controlling high-level input handling.
--* Line Speed:: How to read and set the terminal line speed.
--* Special Characters:: Characters that have special effects,
-- and how to change them.
--* Noncanonical Input:: Controlling how long to wait for input.
--
--Special Characters
--
--* Editing Characters:: Special characters that terminate lines and
-- delete text, and other editing functions.
--* Signal Characters:: Special characters that send or raise signals
-- to or for certain classes of processes.
--* Start/Stop Characters:: Special characters that suspend or resume
-- suspended output.
--* Other Special:: Other special characters for BSD systems:
-- they can discard output, and print status.
--
--Pseudo-Terminals
--
--* Allocation:: Allocating a pseudo terminal.
--* Pseudo-Terminal Pairs:: How to open both sides of a
-- pseudo-terminal in a single operation.
--
--Syslog
--
--* Overview of Syslog:: Overview of a system's Syslog facility
--* Submitting Syslog Messages:: Functions to submit messages to Syslog
--
--Submitting Syslog Messages
--
--* openlog:: Open connection to Syslog
--* syslog; vsyslog:: Submit message to Syslog
--* closelog:: Close connection to Syslog
--* setlogmask:: Cause certain messages to be ignored
--* Syslog Example:: Example of all of the above
--
--Mathematics
--
--* Mathematical Constants:: Precise numeric values for often-used
-- constants.
--* Trig Functions:: Sine, cosine, tangent, and friends.
--* Inverse Trig Functions:: Arcsine, arccosine, etc.
--* Exponents and Logarithms:: Also pow and sqrt.
--* Hyperbolic Functions:: sinh, cosh, tanh, etc.
--* Special Functions:: Bessel, gamma, erf.
--* Errors in Math Functions:: Known Maximum Errors in Math Functions.
--* Pseudo-Random Numbers:: Functions for generating pseudo-random
-- numbers.
--* FP Function Optimizations:: Fast code or small code.
--
--Pseudo-Random Numbers
--
--* ISO Random:: `rand' and friends.
--* BSD Random:: `random' and friends.
--* SVID Random:: `drand48' and friends.
--
--Arithmetic
--
--* Integers:: Basic integer types and concepts
--* Integer Division:: Integer division with guaranteed rounding.
--* Floating Point Numbers:: Basic concepts. IEEE 754.
--* Floating Point Classes:: The five kinds of floating-point number.
--* Floating Point Errors:: When something goes wrong in a calculation.
--* Rounding:: Controlling how results are rounded.
--* Control Functions:: Saving and restoring the FPU's state.
--* Arithmetic Functions:: Fundamental operations provided by the library.
--* Complex Numbers:: The types. Writing complex constants.
--* Operations on Complex:: Projection, conjugation, decomposition.
--* Parsing of Numbers:: Converting strings to numbers.
--* System V Number Conversion:: An archaic way to convert numbers to strings.
--
--Floating Point Errors
--
--* FP Exceptions:: IEEE 754 math exceptions and how to detect them.
--* Infinity and NaN:: Special values returned by calculations.
--* Status bit operations:: Checking for exceptions after the fact.
--* Math Error Reporting:: How the math functions report errors.
--
--Arithmetic Functions
--
--* Absolute Value:: Absolute values of integers and floats.
--* Normalization Functions:: Extracting exponents and putting them back.
--* Rounding Functions:: Rounding floats to integers.
--* Remainder Functions:: Remainders on division, precisely defined.
--* FP Bit Twiddling:: Sign bit adjustment. Adding epsilon.
--* FP Comparison Functions:: Comparisons without risk of exceptions.
--* Misc FP Arithmetic:: Max, min, positive difference, multiply-add.
--
--Parsing of Numbers
--
--* Parsing of Integers:: Functions for conversion of integer values.
--* Parsing of Floats:: Functions for conversion of floating-point
-- values.
--
--Date and Time
--
--* Time Basics:: Concepts and definitions.
--* Elapsed Time:: Data types to represent elapsed times
--* Processor And CPU Time:: Time a program has spent executing.
--* Calendar Time:: Manipulation of ``real'' dates and times.
--* Setting an Alarm:: Sending a signal after a specified time.
--* Sleeping:: Waiting for a period of time.
--
--Processor And CPU Time
--
--* CPU Time:: The `clock' function.
--* Processor Time:: The `times' function.
--
--Calendar Time
--
--* Simple Calendar Time:: Facilities for manipulating calendar time.
--* High-Resolution Calendar:: A time representation with greater precision.
--* Broken-down Time:: Facilities for manipulating local time.
--* High Accuracy Clock:: Maintaining a high accuracy system clock.
--* Formatting Calendar Time:: Converting times to strings.
--* Parsing Date and Time:: Convert textual time and date information back
-- into broken-down time values.
--* TZ Variable:: How users specify the time zone.
--* Time Zone Functions:: Functions to examine or specify the time zone.
--* Time Functions Example:: An example program showing use of some of
-- the time functions.
--
--Parsing Date and Time
--
--* Low-Level Time String Parsing:: Interpret string according to given format.
--* General Time String Parsing:: User-friendly function to parse data and
-- time strings.
--
--Resource Usage And Limitation
--
--* Resource Usage:: Measuring various resources used.
--* Limits on Resources:: Specifying limits on resource usage.
--* Priority:: Reading or setting process run priority.
--* Memory Resources:: Querying memory available resources.
--* Processor Resources:: Learn about the processors available.
--
--Priority
--
--* Absolute Priority:: The first tier of priority. Posix
--* Realtime Scheduling:: Scheduling among the process nobility
--* Basic Scheduling Functions:: Get/set scheduling policy, priority
--* Traditional Scheduling:: Scheduling among the vulgar masses
--
--Traditional Scheduling
--
--* Traditional Scheduling Intro::
--* Traditional Scheduling Functions::
--
--Memory Resources
--
--* Memory Subsystem:: Overview about traditional Unix memory handling.
--* Query Memory Parameters:: How to get information about the memory
-- subsystem?
--
--Non-Local Exits
--
--* Intro: Non-Local Intro. When and how to use these facilities.
--* Details: Non-Local Details. Functions for non-local exits.
--* Non-Local Exits and Signals:: Portability issues.
--* System V contexts:: Complete context control a la System V.
--
--Signal Handling
--
--* Concepts of Signals:: Introduction to the signal facilities.
--* Standard Signals:: Particular kinds of signals with
-- standard names and meanings.
--* Signal Actions:: Specifying what happens when a
-- particular signal is delivered.
--* Defining Handlers:: How to write a signal handler function.
--* Interrupted Primitives:: Signal handlers affect use of `open',
-- `read', `write' and other functions.
--* Generating Signals:: How to send a signal to a process.
--* Blocking Signals:: Making the system hold signals temporarily.
--* Waiting for a Signal:: Suspending your program until a signal
-- arrives.
--* Signal Stack:: Using a Separate Signal Stack.
--* BSD Signal Handling:: Additional functions for backward
-- compatibility with BSD.
--
--Concepts of Signals
--
--* Kinds of Signals:: Some examples of what can cause a signal.
--* Signal Generation:: Concepts of why and how signals occur.
--* Delivery of Signal:: Concepts of what a signal does to the
-- process.
--
--Standard Signals
--
--* Program Error Signals:: Used to report serious program errors.
--* Termination Signals:: Used to interrupt and/or terminate the
-- program.
--* Alarm Signals:: Used to indicate expiration of timers.
--* Asynchronous I/O Signals:: Used to indicate input is available.
--* Job Control Signals:: Signals used to support job control.
--* Operation Error Signals:: Used to report operational system errors.
--* Miscellaneous Signals:: Miscellaneous Signals.
--* Signal Messages:: Printing a message describing a signal.
--
--Signal Actions
--
--* Basic Signal Handling:: The simple `signal' function.
--* Advanced Signal Handling:: The more powerful `sigaction' function.
--* Signal and Sigaction:: How those two functions interact.
--* Sigaction Function Example:: An example of using the sigaction function.
--* Flags for Sigaction:: Specifying options for signal handling.
--* Initial Signal Actions:: How programs inherit signal actions.
--
--Defining Handlers
--
--* Handler Returns:: Handlers that return normally, and what
-- this means.
--* Termination in Handler:: How handler functions terminate a program.
--* Longjmp in Handler:: Nonlocal transfer of control out of a
-- signal handler.
--* Signals in Handler:: What happens when signals arrive while
-- the handler is already occupied.
--* Merged Signals:: When a second signal arrives before the
-- first is handled.
--* Nonreentrancy:: Do not call any functions unless you know they
-- are reentrant with respect to signals.
--* Atomic Data Access:: A single handler can run in the middle of
-- reading or writing a single object.
--
--Atomic Data Access
--
--* Non-atomic Example:: A program illustrating interrupted access.
--* Types: Atomic Types. Data types that guarantee no interruption.
--* Usage: Atomic Usage. Proving that interruption is harmless.
--
--Generating Signals
--
--* Signaling Yourself:: A process can send a signal to itself.
--* Signaling Another Process:: Send a signal to another process.
--* Permission for kill:: Permission for using `kill'.
--* Kill Example:: Using `kill' for Communication.
--
--Blocking Signals
--
--* Why Block:: The purpose of blocking signals.
--* Signal Sets:: How to specify which signals to
-- block.
--* Process Signal Mask:: Blocking delivery of signals to your
-- process during normal execution.
--* Testing for Delivery:: Blocking to Test for Delivery of
-- a Signal.
--* Blocking for Handler:: Blocking additional signals while a
-- handler is being run.
--* Checking for Pending Signals:: Checking for Pending Signals
--* Remembering a Signal:: How you can get almost the same
-- effect as blocking a signal, by
-- handling it and setting a flag
-- to be tested later.
--
--Waiting for a Signal
--
--* Using Pause:: The simple way, using `pause'.
--* Pause Problems:: Why the simple way is often not very good.
--* Sigsuspend:: Reliably waiting for a specific signal.
--
--BSD Signal Handling
--
--* BSD Handler:: BSD Function to Establish a Handler.
--* Blocking in BSD:: BSD Functions for Blocking Signals.
--
--Program Basics
--
--* Program Arguments:: Parsing your program's command-line arguments.
--* Environment Variables:: Less direct parameters affecting your program
--* System Calls:: Requesting service from the system
--* Program Termination:: Telling the system you're done; return status
--
--Program Arguments
--
--* Argument Syntax:: By convention, options start with a hyphen.
--* Parsing Program Arguments:: Ways to parse program options and arguments.
--
--Parsing Program Arguments
--
--* Getopt:: Parsing program options using `getopt'.
--* Argp:: Parsing program options using `argp_parse'.
--* Suboptions:: Some programs need more detailed options.
--* Suboptions Example:: This shows how it could be done for `mount'.
--
--Environment Variables
--
--* Environment Access:: How to get and set the values of
-- environment variables.
--* Standard Environment:: These environment variables have
-- standard interpretations.
--
--Program Termination
--
--* Normal Termination:: If a program calls `exit', a
-- process terminates normally.
--* Exit Status:: The `exit status' provides information
-- about why the process terminated.
--* Cleanups on Exit:: A process can run its own cleanup
-- functions upon normal termination.
--* Aborting a Program:: The `abort' function causes
-- abnormal program termination.
--* Termination Internals:: What happens when a process terminates.
--
--Processes
--
--* Running a Command:: The easy way to run another program.
--* Process Creation Concepts:: An overview of the hard way to do it.
--* Process Identification:: How to get the process ID of a process.
--* Creating a Process:: How to fork a child process.
--* Executing a File:: How to make a process execute another program.
--* Process Completion:: How to tell when a child process has completed.
--* Process Completion Status:: How to interpret the status value
-- returned from a child process.
--* BSD Wait Functions:: More functions, for backward compatibility.
--* Process Creation Example:: A complete example program.
--
--Job Control
--
--* Concepts of Job Control:: Jobs can be controlled by a shell.
--* Job Control is Optional:: Not all POSIX systems support job control.
--* Controlling Terminal:: How a process gets its controlling terminal.
--* Access to the Terminal:: How processes share the controlling terminal.
--* Orphaned Process Groups:: Jobs left after the user logs out.
--* Implementing a Shell:: What a shell must do to implement job control.
--* Functions for Job Control:: Functions to control process groups.
--
--Implementing a Shell
--
--* Data Structures:: Introduction to the sample shell.
--* Initializing the Shell:: What the shell must do to take
-- responsibility for job control.
--* Launching Jobs:: Creating jobs to execute commands.
--* Foreground and Background:: Putting a job in foreground of background.
--* Stopped and Terminated Jobs:: Reporting job status.
--* Continuing Stopped Jobs:: How to continue a stopped job in
-- the foreground or background.
--* Missing Pieces:: Other parts of the shell.
--
--Functions for Job Control
--
--* Identifying the Terminal:: Determining the controlling terminal's name.
--* Process Group Functions:: Functions for manipulating process groups.
--* Terminal Access Functions:: Functions for controlling terminal access.
--
--Name Service Switch
--
--* NSS Basics:: What is this NSS good for.
--* NSS Configuration File:: Configuring NSS.
--* NSS Module Internals:: How does it work internally.
--* Extending NSS:: What to do to add services or databases.
--
--NSS Configuration File
--
--* Services in the NSS configuration:: Service names in the NSS configuration.
--* Actions in the NSS configuration:: React appropriately to the lookup result.
--* Notes on NSS Configuration File:: Things to take care about while
-- configuring NSS.
--
--NSS Module Internals
--
--* NSS Module Names:: Construction of the interface function of
-- the NSS modules.
--* NSS Modules Interface:: Programming interface in the NSS module
-- functions.
--
--Extending NSS
--
--* Adding another Service to NSS:: What is to do to add a new service.
--* NSS Module Function Internals:: Guidelines for writing new NSS
-- service functions.
--
--Users and Groups
--
--* User and Group IDs:: Each user has a unique numeric ID;
-- likewise for groups.
--* Process Persona:: The user IDs and group IDs of a process.
--* Why Change Persona:: Why a program might need to change
-- its user and/or group IDs.
--* How Change Persona:: Changing the user and group IDs.
--* Reading Persona:: How to examine the user and group IDs.
--
--* Setting User ID:: Functions for setting the user ID.
--* Setting Groups:: Functions for setting the group IDs.
--
--* Enable/Disable Setuid:: Turning setuid access on and off.
--* Setuid Program Example:: The pertinent parts of one sample program.
--* Tips for Setuid:: How to avoid granting unlimited access.
--
--* Who Logged In:: Getting the name of the user who logged in,
-- or of the real user ID of the current process.
--
--* User Accounting Database:: Keeping information about users and various
-- actions in databases.
--
--* User Database:: Functions and data structures for
-- accessing the user database.
--* Group Database:: Functions and data structures for
-- accessing the group database.
--* Database Example:: Example program showing the use of database
-- inquiry functions.
--* Netgroup Database:: Functions for accessing the netgroup database.
--
--User Accounting Database
--
--* Manipulating the Database:: Scanning and modifying the user
-- accounting database.
--* XPG Functions:: A standardized way for doing the same thing.
--* Logging In and Out:: Functions from BSD that modify the user
-- accounting database.
--
--User Database
--
--* User Data Structure:: What each user record contains.
--* Lookup User:: How to look for a particular user.
--* Scanning All Users:: Scanning the list of all users, one by one.
--* Writing a User Entry:: How a program can rewrite a user's record.
--
--Group Database
--
--* Group Data Structure:: What each group record contains.
--* Lookup Group:: How to look for a particular group.
--* Scanning All Groups:: Scanning the list of all groups.
--
--Netgroup Database
--
--* Netgroup Data:: Data in the Netgroup database and where
-- it comes from.
--* Lookup Netgroup:: How to look for a particular netgroup.
--* Netgroup Membership:: How to test for netgroup membership.
--
--System Management
--
--* Host Identification:: Determining the name of the machine.
--* Platform Type:: Determining operating system and basic
-- machine type
--* Filesystem Handling:: Controlling/querying mounts
--* System Parameters:: Getting and setting various system parameters
--
--Filesystem Handling
--
--* Mount Information:: What is or could be mounted?
--* Mount-Unmount-Remount:: Controlling what is mounted and how
--
--Mount Information
--
--* fstab:: The `fstab' file
--* mtab:: The `mtab' file
--* Other Mount Information:: Other (non-libc) sources of mount information
--
--System Configuration
--
--* General Limits:: Constants and functions that describe
-- various process-related limits that have
-- one uniform value for any given machine.
--* System Options:: Optional POSIX features.
--* Version Supported:: Version numbers of POSIX.1 and POSIX.2.
--* Sysconf:: Getting specific configuration values
-- of general limits and system options.
--* Minimums:: Minimum values for general limits.
--
--* Limits for Files:: Size limitations that pertain to individual files.
-- These can vary between file systems
-- or even from file to file.
--* Options for Files:: Optional features that some files may support.
--* File Minimums:: Minimum values for file limits.
--* Pathconf:: Getting the limit values for a particular file.
--
--* Utility Limits:: Capacity limits of some POSIX.2 utility programs.
--* Utility Minimums:: Minimum allowable values of those limits.
--
--* String Parameters:: Getting the default search path.
--
--Sysconf
--
--* Sysconf Definition:: Detailed specifications of `sysconf'.
--* Constants for Sysconf:: The list of parameters `sysconf' can read.
--* Examples of Sysconf:: How to use `sysconf' and the parameter
-- macros properly together.
--
--Cryptographic Functions
--
--* Legal Problems:: This software can get you locked up, or worse.
--* getpass:: Prompting the user for a password.
--* crypt:: A one-way function for passwords.
--* DES Encryption:: Routines for DES encryption.
--
--Debugging Support
--
--* Backtraces:: Obtaining and printing a back trace of the
-- current stack.
--
--POSIX Threads
--
--* Basic Thread Operations:: Creating, terminating, and waiting for threads.
--* Thread Attributes:: Tuning thread scheduling.
--* Cancellation:: Stopping a thread before it's done.
--* Cleanup Handlers:: Deallocating resources when a thread is
-- canceled.
--* Mutexes:: One way to synchronize threads.
--* Condition Variables:: Another way.
--* POSIX Semaphores:: And a third way.
--* Thread-Specific Data:: Variables with different values in
-- different threads.
--* Threads and Signal Handling:: Why you should avoid mixing the two, and
-- how to do it if you must.
--* Threads and Fork:: Interactions between threads and the
-- `fork' function.
--* Streams and Fork:: Interactions between stdio streams and
-- `fork'.
--* Miscellaneous Thread Functions:: A grab bag of utility routines.
--
--Language Features
--
--* Consistency Checking:: Using `assert' to abort if
-- something ``impossible'' happens.
--* Variadic Functions:: Defining functions with varying numbers
-- of args.
--* Null Pointer Constant:: The macro `NULL'.
--* Important Data Types:: Data types for object sizes.
--* Data Type Measurements:: Parameters of data type representations.
--
--Variadic Functions
--
--* Why Variadic:: Reasons for making functions take
-- variable arguments.
--* How Variadic:: How to define and call variadic functions.
--* Variadic Example:: A complete example.
--
--How Variadic
--
--* Variadic Prototypes:: How to make a prototype for a function
-- with variable arguments.
--* Receiving Arguments:: Steps you must follow to access the
-- optional argument values.
--* How Many Arguments:: How to decide whether there are more arguments.
--* Calling Variadics:: Things you need to know about calling
-- variable arguments functions.
--* Argument Macros:: Detailed specification of the macros
-- for accessing variable arguments.
--* Old Varargs:: The pre-ISO way of defining variadic functions.
--
--Data Type Measurements
--
--* Width of Type:: How many bits does an integer type hold?
--* Range of Type:: What are the largest and smallest values
-- that an integer type can hold?
--* Floating Type Macros:: Parameters that measure the floating point types.
--* Structure Measurement:: Getting measurements on structure types.
--
--Floating Type Macros
--
--* Floating Point Concepts:: Definitions of terminology.
--* Floating Point Parameters:: Details of specific macros.
--* IEEE Floating Point:: The measurements for one common
-- representation.
--
--Installation
--
--* Configuring and compiling:: How to compile and test GNU libc.
--* Running make install:: How to install it once you've got it
-- compiled.
--* Tools for Compilation:: You'll need these first.
--* Supported Configurations:: What it runs on, what it doesn't.
--* Linux:: Specific advice for GNU/Linux systems.
--* Reporting Bugs:: So they'll get fixed.
--
--Maintenance
--
--* Source Layout:: How to add new functions or header files
-- to the GNU C library.
--* Porting:: How to port the GNU C library to
-- a new machine or operating system.
--
--Porting
--
--* Hierarchy Conventions:: The layout of the `sysdeps' hierarchy.
--* Porting to Unix:: Porting the library to an average
-- Unix-like system.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-10 glibc-2.3.2-200304020432/manual/libc.info-10
---- glibc-2.3.2/manual/libc.info-10 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-10 Thu Jan 1 01:00:00 1970
-@@ -1,899 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Multibyte Conversion Example, Prev: Converting Strings, Up: Restartable multibyte conversion
--
--A Complete Multibyte Conversion Example
-----------------------------------------
--
-- The example programs given in the last sections are only brief and do
--not contain all the error checking, etc. Presented here is a complete
--and documented example. It features the `mbrtowc' function but it
--should be easy to derive versions using the other functions.
--
-- int
-- file_mbsrtowcs (int input, int output)
-- {
-- /* Note the use of `MB_LEN_MAX'.
-- `MB_CUR_MAX' cannot portably be used here. */
-- char buffer[BUFSIZ + MB_LEN_MAX];
-- mbstate_t state;
-- int filled = 0;
-- int eof = 0;
--
-- /* Initialize the state. */
-- memset (&state, '\0', sizeof (state));
--
-- while (!eof)
-- {
-- ssize_t nread;
-- ssize_t nwrite;
-- char *inp = buffer;
-- wchar_t outbuf[BUFSIZ];
-- wchar_t *outp = outbuf;
--
-- /* Fill up the buffer from the input file. */
-- nread = read (input, buffer + filled, BUFSIZ);
-- if (nread < 0)
-- {
-- perror ("read");
-- return 0;
-- }
-- /* If we reach end of file, make a note to read no more. */
-- if (nread == 0)
-- eof = 1;
--
-- /* `filled' is now the number of bytes in `buffer'. */
-- filled += nread;
--
-- /* Convert those bytes to wide characters-as many as we can. */
-- while (1)
-- {
-- size_t thislen = mbrtowc (outp, inp, filled, &state);
-- /* Stop converting at invalid character;
-- this can mean we have read just the first part
-- of a valid character. */
-- if (thislen == (size_t) -1)
-- break;
-- /* We want to handle embedded NUL bytes
-- but the return value is 0. Correct this. */
-- if (thislen == 0)
-- thislen = 1;
-- /* Advance past this character. */
-- inp += thislen;
-- filled -= thislen;
-- ++outp;
-- }
--
-- /* Write the wide characters we just made. */
-- nwrite = write (output, outbuf,
-- (outp - outbuf) * sizeof (wchar_t));
-- if (nwrite < 0)
-- {
-- perror ("write");
-- return 0;
-- }
--
-- /* See if we have a _real_ invalid character. */
-- if ((eof && filled > 0) || filled >= MB_CUR_MAX)
-- {
-- error (0, 0, "invalid multibyte character");
-- return 0;
-- }
--
-- /* If any characters must be carried forward,
-- put them at the beginning of `buffer'. */
-- if (filled > 0)
-- memmove (inp, buffer, filled);
-- }
--
-- return 1;
-- }
--
--
--File: libc.info, Node: Non-reentrant Conversion, Next: Generic Charset Conversion, Prev: Restartable multibyte conversion, Up: Character Set Handling
--
--Non-reentrant Conversion Function
--=================================
--
-- The functions described in the previous chapter are defined in
--Amendment 1 to ISO C90, but the original ISO C90 standard also
--contained functions for character set conversion. The reason that
--these original functions are not described first is that they are almost
--entirely useless.
--
-- The problem is that all the conversion functions described in the
--original ISO C90 use a local state. Using a local state implies that
--multiple conversions at the same time (not only when using threads)
--cannot be done, and that you cannot first convert single characters and
--then strings since you cannot tell the conversion functions which state
--to use.
--
-- These original functions are therefore usable only in a very limited
--set of situations. One must complete converting the entire string
--before starting a new one, and each string/text must be converted with
--the same function (there is no problem with the library itself; it is
--guaranteed that no library function changes the state of any of these
--functions). *For the above reasons it is highly requested that the
--functions described in the previous section be used in place of
--non-reentrant conversion functions.*
--
--* Menu:
--
--* Non-reentrant Character Conversion:: Non-reentrant Conversion of Single
-- Characters.
--* Non-reentrant String Conversion:: Non-reentrant Conversion of Strings.
--* Shift State:: States in Non-reentrant Functions.
--
--
--File: libc.info, Node: Non-reentrant Character Conversion, Next: Non-reentrant String Conversion, Up: Non-reentrant Conversion
--
--Non-reentrant Conversion of Single Characters
-----------------------------------------------
--
-- - Function: int mbtowc (wchar_t *restrict RESULT, const char *restrict
-- STRING, size_t SIZE)
-- The `mbtowc' ("multibyte to wide character") function when called
-- with non-null STRING converts the first multibyte character
-- beginning at STRING to its corresponding wide character code. It
-- stores the result in `*RESULT'.
--
-- `mbtowc' never examines more than SIZE bytes. (The idea is to
-- supply for SIZE the number of bytes of data you have in hand.)
--
-- `mbtowc' with non-null STRING distinguishes three possibilities:
-- the first SIZE bytes at STRING start with valid multibyte
-- characters, they start with an invalid byte sequence or just part
-- of a character, or STRING points to an empty string (a null
-- character).
--
-- For a valid multibyte character, `mbtowc' converts it to a wide
-- character and stores that in `*RESULT', and returns the number of
-- bytes in that character (always at least 1 and never more than
-- SIZE).
--
-- For an invalid byte sequence, `mbtowc' returns -1. For an empty
-- string, it returns 0, also storing `'\0'' in `*RESULT'.
--
-- If the multibyte character code uses shift characters, then
-- `mbtowc' maintains and updates a shift state as it scans. If you
-- call `mbtowc' with a null pointer for STRING, that initializes the
-- shift state to its standard initial value. It also returns
-- nonzero if the multibyte character code in use actually has a
-- shift state. *Note Shift State::.
--
-- - Function: int wctomb (char *STRING, wchar_t WCHAR)
-- The `wctomb' ("wide character to multibyte") function converts the
-- wide character code WCHAR to its corresponding multibyte character
-- sequence, and stores the result in bytes starting at STRING. At
-- most `MB_CUR_MAX' characters are stored.
--
-- `wctomb' with non-null STRING distinguishes three possibilities
-- for WCHAR: a valid wide character code (one that can be translated
-- to a multibyte character), an invalid code, and `L'\0''.
--
-- Given a valid code, `wctomb' converts it to a multibyte character,
-- storing the bytes starting at STRING. Then it returns the number
-- of bytes in that character (always at least 1 and never more than
-- `MB_CUR_MAX').
--
-- If WCHAR is an invalid wide character code, `wctomb' returns -1.
-- If WCHAR is `L'\0'', it returns `0', also storing `'\0'' in
-- `*STRING'.
--
-- If the multibyte character code uses shift characters, then
-- `wctomb' maintains and updates a shift state as it scans. If you
-- call `wctomb' with a null pointer for STRING, that initializes the
-- shift state to its standard initial value. It also returns
-- nonzero if the multibyte character code in use actually has a
-- shift state. *Note Shift State::.
--
-- Calling this function with a WCHAR argument of zero when STRING is
-- not null has the side-effect of reinitializing the stored shift
-- state _as well as_ storing the multibyte character `'\0'' and
-- returning 0.
--
-- Similar to `mbrlen' there is also a non-reentrant function that
--computes the length of a multibyte character. It can be defined in
--terms of `mbtowc'.
--
-- - Function: int mblen (const char *STRING, size_t SIZE)
-- The `mblen' function with a non-null STRING argument returns the
-- number of bytes that make up the multibyte character beginning at
-- STRING, never examining more than SIZE bytes. (The idea is to
-- supply for SIZE the number of bytes of data you have in hand.)
--
-- The return value of `mblen' distinguishes three possibilities: the
-- first SIZE bytes at STRING start with valid multibyte characters,
-- they start with an invalid byte sequence or just part of a
-- character, or STRING points to an empty string (a null character).
--
-- For a valid multibyte character, `mblen' returns the number of
-- bytes in that character (always at least `1' and never more than
-- SIZE). For an invalid byte sequence, `mblen' returns -1. For an
-- empty string, it returns 0.
--
-- If the multibyte character code uses shift characters, then `mblen'
-- maintains and updates a shift state as it scans. If you call
-- `mblen' with a null pointer for STRING, that initializes the shift
-- state to its standard initial value. It also returns a nonzero
-- value if the multibyte character code in use actually has a shift
-- state. *Note Shift State::.
--
-- The function `mblen' is declared in `stdlib.h'.
--
--
--File: libc.info, Node: Non-reentrant String Conversion, Next: Shift State, Prev: Non-reentrant Character Conversion, Up: Non-reentrant Conversion
--
--Non-reentrant Conversion of Strings
-------------------------------------
--
-- For convenience the ISO C90 standard also defines functions to
--convert entire strings instead of single characters. These functions
--suffer from the same problems as their reentrant counterparts from
--Amendment 1 to ISO C90; see *Note Converting Strings::.
--
-- - Function: size_t mbstowcs (wchar_t *WSTRING, const char *STRING,
-- size_t SIZE)
-- The `mbstowcs' ("multibyte string to wide character string")
-- function converts the null-terminated string of multibyte
-- characters STRING to an array of wide character codes, storing not
-- more than SIZE wide characters into the array beginning at WSTRING.
-- The terminating null character counts towards the size, so if SIZE
-- is less than the actual number of wide characters resulting from
-- STRING, no terminating null character is stored.
--
-- The conversion of characters from STRING begins in the initial
-- shift state.
--
-- If an invalid multibyte character sequence is found, the `mbstowcs'
-- function returns a value of -1. Otherwise, it returns the number
-- of wide characters stored in the array WSTRING. This number does
-- not include the terminating null character, which is present if the
-- number is less than SIZE.
--
-- Here is an example showing how to convert a string of multibyte
-- characters, allocating enough space for the result.
--
-- wchar_t *
-- mbstowcs_alloc (const char *string)
-- {
-- size_t size = strlen (string) + 1;
-- wchar_t *buf = xmalloc (size * sizeof (wchar_t));
--
-- size = mbstowcs (buf, string, size);
-- if (size == (size_t) -1)
-- return NULL;
-- buf = xrealloc (buf, (size + 1) * sizeof (wchar_t));
-- return buf;
-- }
--
--
-- - Function: size_t wcstombs (char *STRING, const wchar_t *WSTRING,
-- size_t SIZE)
-- The `wcstombs' ("wide character string to multibyte string")
-- function converts the null-terminated wide character array WSTRING
-- into a string containing multibyte characters, storing not more
-- than SIZE bytes starting at STRING, followed by a terminating null
-- character if there is room. The conversion of characters begins in
-- the initial shift state.
--
-- The terminating null character counts towards the size, so if SIZE
-- is less than or equal to the number of bytes needed in WSTRING, no
-- terminating null character is stored.
--
-- If a code that does not correspond to a valid multibyte character
-- is found, the `wcstombs' function returns a value of -1.
-- Otherwise, the return value is the number of bytes stored in the
-- array STRING. This number does not include the terminating null
-- character, which is present if the number is less than SIZE.
--
--
--File: libc.info, Node: Shift State, Prev: Non-reentrant String Conversion, Up: Non-reentrant Conversion
--
--States in Non-reentrant Functions
-----------------------------------
--
-- In some multibyte character codes, the _meaning_ of any particular
--byte sequence is not fixed; it depends on what other sequences have come
--earlier in the same string. Typically there are just a few sequences
--that can change the meaning of other sequences; these few are called
--"shift sequences" and we say that they set the "shift state" for other
--sequences that follow.
--
-- To illustrate shift state and shift sequences, suppose we decide that
--the sequence `0200' (just one byte) enters Japanese mode, in which
--pairs of bytes in the range from `0240' to `0377' are single
--characters, while `0201' enters Latin-1 mode, in which single bytes in
--the range from `0240' to `0377' are characters, and interpreted
--according to the ISO Latin-1 character set. This is a multibyte code
--that has two alternative shift states ("Japanese mode" and "Latin-1
--mode"), and two shift sequences that specify particular shift states.
--
-- When the multibyte character code in use has shift states, then
--`mblen', `mbtowc', and `wctomb' must maintain and update the current
--shift state as they scan the string. To make this work properly, you
--must follow these rules:
--
-- * Before starting to scan a string, call the function with a null
-- pointer for the multibyte character address--for example, `mblen
-- (NULL, 0)'. This initializes the shift state to its standard
-- initial value.
--
-- * Scan the string one character at a time, in order. Do not "back
-- up" and rescan characters already scanned, and do not intersperse
-- the processing of different strings.
--
-- Here is an example of using `mblen' following these rules:
--
-- void
-- scan_string (char *s)
-- {
-- int length = strlen (s);
--
-- /* Initialize shift state. */
-- mblen (NULL, 0);
--
-- while (1)
-- {
-- int thischar = mblen (s, length);
-- /* Deal with end of string and invalid characters. */
-- if (thischar == 0)
-- break;
-- if (thischar == -1)
-- {
-- error ("invalid multibyte character");
-- break;
-- }
-- /* Advance past this character. */
-- s += thischar;
-- length -= thischar;
-- }
-- }
--
-- The functions `mblen', `mbtowc' and `wctomb' are not reentrant when
--using a multibyte code that uses a shift state. However, no other
--library functions call these functions, so you don't have to worry that
--the shift state will be changed mysteriously.
--
--
--File: libc.info, Node: Generic Charset Conversion, Prev: Non-reentrant Conversion, Up: Character Set Handling
--
--Generic Charset Conversion
--==========================
--
-- The conversion functions mentioned so far in this chapter all had in
--common that they operate on character sets that are not directly
--specified by the functions. The multibyte encoding used is specified by
--the currently selected locale for the `LC_CTYPE' category. The wide
--character set is fixed by the implementation (in the case of GNU C
--library it is always UCS-4 encoded ISO 10646.
--
-- This has of course several problems when it comes to general
--character conversion:
--
-- * For every conversion where neither the source nor the destination
-- character set is the character set of the locale for the `LC_CTYPE'
-- category, one has to change the `LC_CTYPE' locale using
-- `setlocale'.
--
-- Changing the `LC_TYPE' locale introduces major problems for the
-- rest of the programs since several more functions (e.g., the
-- character classification functions, *note Classification of
-- Characters::) use the `LC_CTYPE' category.
--
-- * Parallel conversions to and from different character sets are not
-- possible since the `LC_CTYPE' selection is global and shared by all
-- threads.
--
-- * If neither the source nor the destination character set is the
-- character set used for `wchar_t' representation, there is at least
-- a two-step process necessary to convert a text using the functions
-- above. One would have to select the source character set as the
-- multibyte encoding, convert the text into a `wchar_t' text, select
-- the destination character set as the multibyte encoding, and
-- convert the wide character text to the multibyte (= destination)
-- character set.
--
-- Even if this is possible (which is not guaranteed) it is a very
-- tiring work. Plus it suffers from the other two raised points
-- even more due to the steady changing of the locale.
--
-- The XPG2 standard defines a completely new set of functions, which
--has none of these limitations. They are not at all coupled to the
--selected locales, and they have no constraints on the character sets
--selected for source and destination. Only the set of available
--conversions limits them. The standard does not specify that any
--conversion at all must be available. Such availability is a measure of
--the quality of the implementation.
--
-- In the following text first the interface to `iconv' and then the
--conversion function, will be described. Comparisons with other
--implementations will show what obstacles stand in the way of portable
--applications. Finally, the implementation is described in so far as
--might interest the advanced user who wants to extend conversion
--capabilities.
--
--* Menu:
--
--* Generic Conversion Interface:: Generic Character Set Conversion Interface.
--* iconv Examples:: A complete `iconv' example.
--* Other iconv Implementations:: Some Details about other `iconv'
-- Implementations.
--* glibc iconv Implementation:: The `iconv' Implementation in the GNU C
-- library.
--
--
--File: libc.info, Node: Generic Conversion Interface, Next: iconv Examples, Up: Generic Charset Conversion
--
--Generic Character Set Conversion Interface
--------------------------------------------
--
-- This set of functions follows the traditional cycle of using a
--resource: open-use-close. The interface consists of three functions,
--each of which implements one step.
--
-- Before the interfaces are described it is necessary to introduce a
--data type. Just like other open-use-close interfaces the functions
--introduced here work using handles and the `iconv.h' header defines a
--special type for the handles used.
--
-- - Data Type: iconv_t
-- This data type is an abstract type defined in `iconv.h'. The user
-- must not assume anything about the definition of this type; it
-- must be completely opaque.
--
-- Objects of this type can get assigned handles for the conversions
-- using the `iconv' functions. The objects themselves need not be
-- freed, but the conversions for which the handles stand for have to.
--
--The first step is the function to create a handle.
--
-- - Function: iconv_t iconv_open (const char *TOCODE, const char
-- *FROMCODE)
-- The `iconv_open' function has to be used before starting a
-- conversion. The two parameters this function takes determine the
-- source and destination character set for the conversion, and if the
-- implementation has the possibility to perform such a conversion,
-- the function returns a handle.
--
-- If the wanted conversion is not available, the `iconv_open'
-- function returns `(iconv_t) -1'. In this case the global variable
-- `errno' can have the following values:
--
-- `EMFILE'
-- The process already has `OPEN_MAX' file descriptors open.
--
-- `ENFILE'
-- The system limit of open file is reached.
--
-- `ENOMEM'
-- Not enough memory to carry out the operation.
--
-- `EINVAL'
-- The conversion from FROMCODE to TOCODE is not supported.
--
-- It is not possible to use the same descriptor in different threads
-- to perform independent conversions. The data structures associated
-- with the descriptor include information about the conversion state.
-- This must not be messed up by using it in different conversions.
--
-- An `iconv' descriptor is like a file descriptor as for every use a
-- new descriptor must be created. The descriptor does not stand for
-- all of the conversions from FROMSET to TOSET.
--
-- The GNU C library implementation of `iconv_open' has one
-- significant extension to other implementations. To ease the
-- extension of the set of available conversions, the implementation
-- allows storing the necessary files with data and code in an
-- arbitrary number of directories. How this extension must be
-- written will be explained below (*note glibc iconv
-- Implementation::). Here it is only important to say that all
-- directories mentioned in the `GCONV_PATH' environment variable are
-- considered only if they contain a file `gconv-modules'. These
-- directories need not necessarily be created by the system
-- administrator. In fact, this extension is introduced to help users
-- writing and using their own, new conversions. Of course, this
-- does not work for security reasons in SUID binaries; in this case
-- only the system directory is considered and this normally is
-- `PREFIX/lib/gconv'. The `GCONV_PATH' environment variable is
-- examined exactly once at the first call of the `iconv_open'
-- function. Later modifications of the variable have no effect.
--
-- The `iconv_open' function was introduced early in the X/Open
-- Portability Guide, version 2. It is supported by all commercial
-- Unices as it is required for the Unix branding. However, the
-- quality and completeness of the implementation varies widely. The
-- `iconv_open' function is declared in `iconv.h'.
--
-- The `iconv' implementation can associate large data structure with
--the handle returned by `iconv_open'. Therefore, it is crucial to free
--all the resources once all conversions are carried out and the
--conversion is not needed anymore.
--
-- - Function: int iconv_close (iconv_t CD)
-- The `iconv_close' function frees all resources associated with the
-- handle CD, which must have been returned by a successful call to
-- the `iconv_open' function.
--
-- If the function call was successful the return value is 0.
-- Otherwise it is -1 and `errno' is set appropriately. Defined
-- error are:
--
-- `EBADF'
-- The conversion descriptor is invalid.
--
-- The `iconv_close' function was introduced together with the rest
-- of the `iconv' functions in XPG2 and is declared in `iconv.h'.
--
-- The standard defines only one actual conversion function. This has,
--therefore, the most general interface: it allows conversion from one
--buffer to another. Conversion from a file to a buffer, vice versa, or
--even file to file can be implemented on top of it.
--
-- - Function: size_t iconv (iconv_t CD, char **INBUF, size_t
-- *INBYTESLEFT, char **OUTBUF, size_t *OUTBYTESLEFT)
-- The `iconv' function converts the text in the input buffer
-- according to the rules associated with the descriptor CD and
-- stores the result in the output buffer. It is possible to call the
-- function for the same text several times in a row since for
-- stateful character sets the necessary state information is kept in
-- the data structures associated with the descriptor.
--
-- The input buffer is specified by `*INBUF' and it contains
-- `*INBYTESLEFT' bytes. The extra indirection is necessary for
-- communicating the used input back to the caller (see below). It is
-- important to note that the buffer pointer is of type `char' and the
-- length is measured in bytes even if the input text is encoded in
-- wide characters.
--
-- The output buffer is specified in a similar way. `*OUTBUF' points
-- to the beginning of the buffer with at least `*OUTBYTESLEFT' bytes
-- room for the result. The buffer pointer again is of type `char'
-- and the length is measured in bytes. If OUTBUF or `*OUTBUF' is a
-- null pointer, the conversion is performed but no output is
-- available.
--
-- If INBUF is a null pointer, the `iconv' function performs the
-- necessary action to put the state of the conversion into the
-- initial state. This is obviously a no-op for non-stateful
-- encodings, but if the encoding has a state, such a function call
-- might put some byte sequences in the output buffer, which perform
-- the necessary state changes. The next call with INBUF not being a
-- null pointer then simply goes on from the initial state. It is
-- important that the programmer never makes any assumption as to
-- whether the conversion has to deal with states. Even if the input
-- and output character sets are not stateful, the implementation
-- might still have to keep states. This is due to the
-- implementation chosen for the GNU C library as it is described
-- below. Therefore an `iconv' call to reset the state should always
-- be performed if some protocol requires this for the output text.
--
-- The conversion stops for one of three reasons. The first is that
-- all characters from the input buffer are converted. This actually
-- can mean two things: either all bytes from the input buffer are
-- consumed or there are some bytes at the end of the buffer that
-- possibly can form a complete character but the input is
-- incomplete. The second reason for a stop is that the output
-- buffer is full. And the third reason is that the input contains
-- invalid characters.
--
-- In all of these cases the buffer pointers after the last successful
-- conversion, for input and output buffer, are stored in INBUF and
-- OUTBUF, and the available room in each buffer is stored in
-- INBYTESLEFT and OUTBYTESLEFT.
--
-- Since the character sets selected in the `iconv_open' call can be
-- almost arbitrary, there can be situations where the input buffer
-- contains valid characters, which have no identical representation
-- in the output character set. The behavior in this situation is
-- undefined. The _current_ behavior of the GNU C library in this
-- situation is to return with an error immediately. This certainly
-- is not the most desirable solution; therefore, future versions
-- will provide better ones, but they are not yet finished.
--
-- If all input from the input buffer is successfully converted and
-- stored in the output buffer, the function returns the number of
-- non-reversible conversions performed. In all other cases the
-- return value is `(size_t) -1' and `errno' is set appropriately.
-- In such cases the value pointed to by INBYTESLEFT is nonzero.
--
-- `EILSEQ'
-- The conversion stopped because of an invalid byte sequence in
-- the input. After the call, `*INBUF' points at the first byte
-- of the invalid byte sequence.
--
-- `E2BIG'
-- The conversion stopped because it ran out of space in the
-- output buffer.
--
-- `EINVAL'
-- The conversion stopped because of an incomplete byte sequence
-- at the end of the input buffer.
--
-- `EBADF'
-- The CD argument is invalid.
--
-- The `iconv' function was introduced in the XPG2 standard and is
-- declared in the `iconv.h' header.
--
-- The definition of the `iconv' function is quite good overall. It
--provides quite flexible functionality. The only problems lie in the
--boundary cases, which are incomplete byte sequences at the end of the
--input buffer and invalid input. A third problem, which is not really a
--design problem, is the way conversions are selected. The standard does
--not say anything about the legitimate names, a minimal set of available
--conversions. We will see how this negatively impacts other
--implementations, as demonstrated below.
--
--
--File: libc.info, Node: iconv Examples, Next: Other iconv Implementations, Prev: Generic Conversion Interface, Up: Generic Charset Conversion
--
--A complete `iconv' example
----------------------------
--
-- The example below features a solution for a common problem. Given
--that one knows the internal encoding used by the system for `wchar_t'
--strings, one often is in the position to read text from a file and store
--it in wide character buffers. One can do this using `mbsrtowcs', but
--then we run into the problems discussed above.
--
-- int
-- file2wcs (int fd, const char *charset, wchar_t *outbuf, size_t avail)
-- {
-- char inbuf[BUFSIZ];
-- size_t insize = 0;
-- char *wrptr = (char *) outbuf;
-- int result = 0;
-- iconv_t cd;
--
-- cd = iconv_open ("WCHAR_T", charset);
-- if (cd == (iconv_t) -1)
-- {
-- /* Something went wrong. */
-- if (errno == EINVAL)
-- error (0, 0, "conversion from '%s' to wchar_t not available",
-- charset);
-- else
-- perror ("iconv_open");
--
-- /* Terminate the output string. */
-- *outbuf = L'\0';
--
-- return -1;
-- }
--
-- while (avail > 0)
-- {
-- size_t nread;
-- size_t nconv;
-- char *inptr = inbuf;
--
-- /* Read more input. */
-- nread = read (fd, inbuf + insize, sizeof (inbuf) - insize);
-- if (nread == 0)
-- {
-- /* When we come here the file is completely read.
-- This still could mean there are some unused
-- characters in the `inbuf'. Put them back. */
-- if (lseek (fd, -insize, SEEK_CUR) == -1)
-- result = -1;
--
-- /* Now write out the byte sequence to get into the
-- initial state if this is necessary. */
-- iconv (cd, NULL, NULL, &wrptr, &avail);
--
-- break;
-- }
-- insize += nread;
--
-- /* Do the conversion. */
-- nconv = iconv (cd, &inptr, &insize, &wrptr, &avail);
-- if (nconv == (size_t) -1)
-- {
-- /* Not everything went right. It might only be
-- an unfinished byte sequence at the end of the
-- buffer. Or it is a real problem. */
-- if (errno == EINVAL)
-- /* This is harmless. Simply move the unused
-- bytes to the beginning of the buffer so that
-- they can be used in the next round. */
-- memmove (inbuf, inptr, insize);
-- else
-- {
-- /* It is a real problem. Maybe we ran out of
-- space in the output buffer or we have invalid
-- input. In any case back the file pointer to
-- the position of the last processed byte. */
-- lseek (fd, -insize, SEEK_CUR);
-- result = -1;
-- break;
-- }
-- }
-- }
--
-- /* Terminate the output string. */
-- if (avail >= sizeof (wchar_t))
-- *((wchar_t *) wrptr) = L'\0';
--
-- if (iconv_close (cd) != 0)
-- perror ("iconv_close");
--
-- return (wchar_t *) wrptr - outbuf;
-- }
--
-- This example shows the most important aspects of using the `iconv'
--functions. It shows how successive calls to `iconv' can be used to
--convert large amounts of text. The user does not have to care about
--stateful encodings as the functions take care of everything.
--
-- An interesting point is the case where `iconv' returns an error and
--`errno' is set to `EINVAL'. This is not really an error in the
--transformation. It can happen whenever the input character set contains
--byte sequences of more than one byte for some character and texts are
--not processed in one piece. In this case there is a chance that a
--multibyte sequence is cut. The caller can then simply read the
--remainder of the takes and feed the offending bytes together with new
--character from the input to `iconv' and continue the work. The
--internal state kept in the descriptor is _not_ unspecified after such
--an event as is the case with the conversion functions from the ISO C
--standard.
--
-- The example also shows the problem of using wide character strings
--with `iconv'. As explained in the description of the `iconv' function
--above, the function always takes a pointer to a `char' array and the
--available space is measured in bytes. In the example, the output
--buffer is a wide character buffer; therefore, we use a local variable
--WRPTR of type `char *', which is used in the `iconv' calls.
--
-- This looks rather innocent but can lead to problems on platforms that
--have tight restriction on alignment. Therefore the caller of `iconv'
--has to make sure that the pointers passed are suitable for access of
--characters from the appropriate character set. Since, in the above
--case, the input parameter to the function is a `wchar_t' pointer, this
--is the case (unless the user violates alignment when computing the
--parameter). But in other situations, especially when writing generic
--functions where one does not know what type of character set one uses
--and, therefore, treats text as a sequence of bytes, it might become
--tricky.
--
--
--File: libc.info, Node: Other iconv Implementations, Next: glibc iconv Implementation, Prev: iconv Examples, Up: Generic Charset Conversion
--
--Some Details about other `iconv' Implementations
--------------------------------------------------
--
-- This is not really the place to discuss the `iconv' implementation
--of other systems but it is necessary to know a bit about them to write
--portable programs. The above mentioned problems with the specification
--of the `iconv' functions can lead to portability issues.
--
-- The first thing to notice is that, due to the large number of
--character sets in use, it is certainly not practical to encode the
--conversions directly in the C library. Therefore, the conversion
--information must come from files outside the C library. This is
--usually done in one or both of the following ways:
--
-- * The C library contains a set of generic conversion functions that
-- can read the needed conversion tables and other information from
-- data files. These files get loaded when necessary.
--
-- This solution is problematic as it requires a great deal of effort
-- to apply to all character sets (potentially an infinite set). The
-- differences in the structure of the different character sets is so
-- large that many different variants of the table-processing
-- functions must be developed. In addition, the generic nature of
-- these functions make them slower than specifically implemented
-- functions.
--
-- * The C library only contains a framework that can dynamically load
-- object files and execute the conversion functions contained
-- therein.
--
-- This solution provides much more flexibility. The C library itself
-- contains only very little code and therefore reduces the general
-- memory footprint. Also, with a documented interface between the C
-- library and the loadable modules it is possible for third parties
-- to extend the set of available conversion modules. A drawback of
-- this solution is that dynamic loading must be available.
--
-- Some implementations in commercial Unices implement a mixture of
--these possibilities; the majority implement only the second solution.
--Using loadable modules moves the code out of the library itself and
--keeps the door open for extensions and improvements, but this design is
--also limiting on some platforms since not many platforms support dynamic
--loading in statically linked programs. On platforms without this
--capability it is therefore not possible to use this interface in
--statically linked programs. The GNU C library has, on ELF platforms, no
--problems with dynamic loading in these situations; therefore, this
--point is moot. The danger is that one gets acquainted with this
--situation and forgets about the restrictions on other systems.
--
-- A second thing to know about other `iconv' implementations is that
--the number of available conversions is often very limited. Some
--implementations provide, in the standard release (not special
--international or developer releases), at most 100 to 200 conversion
--possibilities. This does not mean 200 different character sets are
--supported; for example, conversions from one character set to a set of
--10 others might count as 10 conversions. Together with the other
--direction this makes 20 conversion possibilities used up by one
--character set. One can imagine the thin coverage these platform
--provide. Some Unix vendors even provide only a handful of conversions,
--which renders them useless for almost all uses.
--
-- This directly leads to a third and probably the most problematic
--point. The way the `iconv' conversion functions are implemented on all
--known Unix systems and the availability of the conversion functions from
--character set A to B and the conversion from B to C does _not_ imply
--that the conversion from A to C is available.
--
-- This might not seem unreasonable and problematic at first, but it is
--a quite big problem as one will notice shortly after hitting it. To
--show the problem we assume to write a program that has to convert from
--A to C. A call like
--
-- cd = iconv_open ("C", "A");
--
--fails according to the assumption above. But what does the program do
--now? The conversion is necessary; therefore, simply giving up is not
--an option.
--
-- This is a nuisance. The `iconv' function should take care of this.
--But how should the program proceed from here on? If it tries to convert
--to character set B, first the two `iconv_open' calls
--
-- cd1 = iconv_open ("B", "A");
--
--and
--
-- cd2 = iconv_open ("C", "B");
--
--will succeed, but how to find B?
--
-- Unfortunately, the answer is: there is no general solution. On some
--systems guessing might help. On those systems most character sets can
--convert to and from UTF-8 encoded ISO 10646 or Unicode text. Beside
--this only some very system-specific methods can help. Since the
--conversion functions come from loadable modules and these modules must
--be stored somewhere in the filesystem, one _could_ try to find them and
--determine from the available file which conversions are available and
--whether there is an indirect route from A to C.
--
-- This example shows one of the design errors of `iconv' mentioned
--above. It should at least be possible to determine the list of
--available conversion programmatically so that if `iconv_open' says
--there is no such conversion, one could make sure this also is true for
--indirect routes.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-11 glibc-2.3.2-200304020432/manual/libc.info-11
---- glibc-2.3.2/manual/libc.info-11 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-11 Thu Jan 1 01:00:00 1970
-@@ -1,1041 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: glibc iconv Implementation, Prev: Other iconv Implementations, Up: Generic Charset Conversion
--
--The `iconv' Implementation in the GNU C library
-------------------------------------------------
--
-- After reading about the problems of `iconv' implementations in the
--last section it is certainly good to note that the implementation in
--the GNU C library has none of the problems mentioned above. What
--follows is a step-by-step analysis of the points raised above. The
--evaluation is based on the current state of the development (as of
--January 1999). The development of the `iconv' functions is not
--complete, but basic functionality has solidified.
--
-- The GNU C library's `iconv' implementation uses shared loadable
--modules to implement the conversions. A very small number of
--conversions are built into the library itself but these are only rather
--trivial conversions.
--
-- All the benefits of loadable modules are available in the GNU C
--library implementation. This is especially appealing since the
--interface is well documented (see below), and it, therefore, is easy to
--write new conversion modules. The drawback of using loadable objects
--is not a problem in the GNU C library, at least on ELF systems. Since
--the library is able to load shared objects even in statically linked
--binaries, static linking need not be forbidden in case one wants to use
--`iconv'.
--
-- The second mentioned problem is the number of supported conversions.
--Currently, the GNU C library supports more than 150 character sets. The
--way the implementation is designed the number of supported conversions
--is greater than 22350 (150 times 149). If any conversion from or to a
--character set is missing, it can be added easily.
--
-- Particularly impressive as it may be, this high number is due to the
--fact that the GNU C library implementation of `iconv' does not have the
--third problem mentioned above (i.e., whenever there is a conversion
--from a character set A to B and from B to C it is always possible to
--convert from A to C directly). If the `iconv_open' returns an error
--and sets `errno' to `EINVAL', there is no known way, directly or
--indirectly, to perform the wanted conversion.
--
-- Triangulation is achieved by providing for each character set a
--conversion from and to UCS-4 encoded ISO 10646. Using ISO 10646 as an
--intermediate representation it is possible to "triangulate" (i.e.,
--convert with an intermediate representation).
--
-- There is no inherent requirement to provide a conversion to
--ISO 10646 for a new character set, and it is also possible to provide
--other conversions where neither source nor destination character set is
--ISO 10646. The existing set of conversions is simply meant to cover all
--conversions that might be of interest.
--
-- All currently available conversions use the triangulation method
--above, making conversion run unnecessarily slow. If, for example,
--somebody often needs the conversion from ISO-2022-JP to EUC-JP, a
--quicker solution would involve direct conversion between the two
--character sets, skipping the input to ISO 10646 first. The two
--character sets of interest are much more similar to each other than to
--ISO 10646.
--
-- In such a situation one easily can write a new conversion and
--provide it as a better alternative. The GNU C library `iconv'
--implementation would automatically use the module implementing the
--conversion if it is specified to be more efficient.
--
--Format of `gconv-modules' files
--...............................
--
-- All information about the available conversions comes from a file
--named `gconv-modules', which can be found in any of the directories
--along the `GCONV_PATH'. The `gconv-modules' files are line-oriented
--text files, where each of the lines has one of the following formats:
--
-- * If the first non-whitespace character is a `#' the line contains
-- only comments and is ignored.
--
-- * Lines starting with `alias' define an alias name for a character
-- set. Two more words are expected on the line. The first word
-- defines the alias name, and the second defines the original name
-- of the character set. The effect is that it is possible to use
-- the alias name in the FROMSET or TOSET parameters of `iconv_open'
-- and achieve the same result as when using the real character set
-- name.
--
-- This is quite important as a character set has often many different
-- names. There is normally an official name but this need not
-- correspond to the most popular name. Beside this many character
-- sets have special names that are somehow constructed. For
-- example, all character sets specified by the ISO have an alias of
-- the form `ISO-IR-NNN' where NNN is the registration number. This
-- allows programs that know about the registration number to
-- construct character set names and use them in `iconv_open' calls.
-- More on the available names and aliases follows below.
--
-- * Lines starting with `module' introduce an available conversion
-- module. These lines must contain three or four more words.
--
-- The first word specifies the source character set, the second word
-- the destination character set of conversion implemented in this
-- module, and the third word is the name of the loadable module.
-- The filename is constructed by appending the usual shared object
-- suffix (normally `.so') and this file is then supposed to be found
-- in the same directory the `gconv-modules' file is in. The last
-- word on the line, which is optional, is a numeric value
-- representing the cost of the conversion. If this word is missing,
-- a cost of 1 is assumed. The numeric value itself does not matter
-- that much; what counts are the relative values of the sums of
-- costs for all possible conversion paths. Below is a more precise
-- description of the use of the cost value.
--
-- Returning to the example above where one has written a module to
--directly convert from ISO-2022-JP to EUC-JP and back. All that has to
--be done is to put the new module, let its name be ISO2022JP-EUCJP.so,
--in a directory and add a file `gconv-modules' with the following
--content in the same directory:
--
-- module ISO-2022-JP// EUC-JP// ISO2022JP-EUCJP 1
-- module EUC-JP// ISO-2022-JP// ISO2022JP-EUCJP 1
--
-- To see why this is sufficient, it is necessary to understand how the
--conversion used by `iconv' (and described in the descriptor) is
--selected. The approach to this problem is quite simple.
--
-- At the first call of the `iconv_open' function the program reads all
--available `gconv-modules' files and builds up two tables: one
--containing all the known aliases and another that contains the
--information about the conversions and which shared object implements
--them.
--
--Finding the conversion path in `iconv'
--......................................
--
-- The set of available conversions form a directed graph with weighted
--edges. The weights on the edges are the costs specified in the
--`gconv-modules' files. The `iconv_open' function uses an algorithm
--suitable for search for the best path in such a graph and so constructs
--a list of conversions that must be performed in succession to get the
--transformation from the source to the destination character set.
--
-- Explaining why the above `gconv-modules' files allows the `iconv'
--implementation to resolve the specific ISO-2022-JP to EUC-JP conversion
--module instead of the conversion coming with the library itself is
--straightforward. Since the latter conversion takes two steps (from
--ISO-2022-JP to ISO 10646 and then from ISO 10646 to EUC-JP), the cost
--is 1+1 = 2. The above `gconv-modules' file, however, specifies that
--the new conversion modules can perform this conversion with only the
--cost of 1.
--
-- A mysterious item about the `gconv-modules' file above (and also the
--file coming with the GNU C library) are the names of the character sets
--specified in the `module' lines. Why do almost all the names end in
--`//'? And this is not all: the names can actually be regular
--expressions. At this point in time this mystery should not be
--revealed, unless you have the relevant spell-casting materials: ashes
--from an original DOS 6.2 boot disk burnt in effigy, a crucifix blessed
--by St. Emacs, assorted herbal roots from Central America, sand from
--Cebu, etc. Sorry! *The part of the implementation where this is used
--is not yet finished. For now please simply follow the existing
--examples. It'll become clearer once it is. -drepper*
--
-- A last remark about the `gconv-modules' is about the names not
--ending with `//'. A character set named `INTERNAL' is often mentioned.
--From the discussion above and the chosen name it should have become
--clear that this is the name for the representation used in the
--intermediate step of the triangulation. We have said that this is UCS-4
--but actually that is not quite right. The UCS-4 specification also
--includes the specification of the byte ordering used. Since a UCS-4
--value consists of four bytes, a stored value is effected by byte
--ordering. The internal representation is _not_ the same as UCS-4 in
--case the byte ordering of the processor (or at least the running
--process) is not the same as the one required for UCS-4. This is done
--for performance reasons as one does not want to perform unnecessary
--byte-swapping operations if one is not interested in actually seeing
--the result in UCS-4. To avoid trouble with endianess, the internal
--representation consistently is named `INTERNAL' even on big-endian
--systems where the representations are identical.
--
--`iconv' module data structures
--..............................
--
-- So far this section has described how modules are located and
--considered to be used. What remains to be described is the interface
--of the modules so that one can write new ones. This section describes
--the interface as it is in use in January 1999. The interface will
--change a bit in the future but, with luck, only in an upwardly
--compatible way.
--
-- The definitions necessary to write new modules are publicly available
--in the non-standard header `gconv.h'. The following text, therefore,
--describes the definitions from this header file. First, however, it is
--necessary to get an overview.
--
-- From the perspective of the user of `iconv' the interface is quite
--simple: the `iconv_open' function returns a handle that can be used in
--calls to `iconv', and finally the handle is freed with a call to
--`iconv_close'. The problem is that the handle has to be able to
--represent the possibly long sequences of conversion steps and also the
--state of each conversion since the handle is all that is passed to the
--`iconv' function. Therefore, the data structures are really the
--elements necessary to understanding the implementation.
--
-- We need two different kinds of data structures. The first describes
--the conversion and the second describes the state etc. There are
--really two type definitions like this in `gconv.h'.
--
-- - Data type: struct __gconv_step
-- This data structure describes one conversion a module can perform.
-- For each function in a loaded module with conversion functions
-- there is exactly one object of this type. This object is shared
-- by all users of the conversion (i.e., this object does not contain
-- any information corresponding to an actual conversion; it only
-- describes the conversion itself).
--
-- `struct __gconv_loaded_object *__shlib_handle'
-- `const char *__modname'
-- `int __counter'
-- All these elements of the structure are used internally in
-- the C library to coordinate loading and unloading the shared.
-- One must not expect any of the other elements to be
-- available or initialized.
--
-- `const char *__from_name'
-- `const char *__to_name'
-- `__from_name' and `__to_name' contain the names of the source
-- and destination character sets. They can be used to identify
-- the actual conversion to be carried out since one module
-- might implement conversions for more than one character set
-- and/or direction.
--
-- `gconv_fct __fct'
-- `gconv_init_fct __init_fct'
-- `gconv_end_fct __end_fct'
-- These elements contain pointers to the functions in the
-- loadable module. The interface will be explained below.
--
-- `int __min_needed_from'
-- `int __max_needed_from'
-- `int __min_needed_to'
-- `int __max_needed_to;'
-- These values have to be supplied in the init function of the
-- module. The `__min_needed_from' value specifies how many
-- bytes a character of the source character set at least needs.
-- The `__max_needed_from' specifies the maximum value that
-- also includes possible shift sequences.
--
-- The `__min_needed_to' and `__max_needed_to' values serve the
-- same purpose as `__min_needed_from' and `__max_needed_from'
-- but this time for the destination character set.
--
-- It is crucial that these values be accurate since otherwise
-- the conversion functions will have problems or not work at
-- all.
--
-- `int __stateful'
-- This element must also be initialized by the init function.
-- `int __stateful' is nonzero if the source character set is
-- stateful. Otherwise it is zero.
--
-- `void *__data'
-- This element can be used freely by the conversion functions
-- in the module. `void *__data' can be used to communicate
-- extra information from one call to another. `void *__data'
-- need not be initialized if not needed at all. If `void
-- *__data' element is assigned a pointer to dynamically
-- allocated memory (presumably in the init function) it has to
-- be made sure that the end function deallocates the memory.
-- Otherwise the application will leak memory.
--
-- It is important to be aware that this data structure is
-- shared by all users of this specification conversion and
-- therefore the `__data' element must not contain data specific
-- to one specific use of the conversion function.
--
-- - Data type: struct __gconv_step_data
-- This is the data structure that contains the information specific
-- to each use of the conversion functions.
--
-- `char *__outbuf'
-- `char *__outbufend'
-- These elements specify the output buffer for the conversion
-- step. The `__outbuf' element points to the beginning of the
-- buffer, and `__outbufend' points to the byte following the
-- last byte in the buffer. The conversion function must not
-- assume anything about the size of the buffer but it can be
-- safely assumed the there is room for at least one complete
-- character in the output buffer.
--
-- Once the conversion is finished, if the conversion is the
-- last step, the `__outbuf' element must be modified to point
-- after the last byte written into the buffer to signal how
-- much output is available. If this conversion step is not the
-- last one, the element must not be modified. The
-- `__outbufend' element must not be modified.
--
-- `int __is_last'
-- This element is nonzero if this conversion step is the last
-- one. This information is necessary for the recursion. See
-- the description of the conversion function internals below.
-- This element must never be modified.
--
-- `int __invocation_counter'
-- The conversion function can use this element to see how many
-- calls of the conversion function already happened. Some
-- character sets require a certain prolog when generating
-- output, and by comparing this value with zero, one can find
-- out whether it is the first call and whether, therefore, the
-- prolog should be emitted. This element must never be
-- modified.
--
-- `int __internal_use'
-- This element is another one rarely used but needed in certain
-- situations. It is assigned a nonzero value in case the
-- conversion functions are used to implement `mbsrtowcs' et.al.
-- (i.e., the function is not used directly through the `iconv'
-- interface).
--
-- This sometimes makes a difference as it is expected that the
-- `iconv' functions are used to translate entire texts while the
-- `mbsrtowcs' functions are normally used only to convert single
-- strings and might be used multiple times to convert entire
-- texts.
--
-- But in this situation we would have problem complying with
-- some rules of the character set specification. Some
-- character sets require a prolog, which must appear exactly
-- once for an entire text. If a number of `mbsrtowcs' calls
-- are used to convert the text, only the first call must add
-- the prolog. However, because there is no communication
-- between the different calls of `mbsrtowcs', the conversion
-- functions have no possibility to find this out. The
-- situation is different for sequences of `iconv' calls since
-- the handle allows access to the needed information.
--
-- The `int __internal_use' element is mostly used together with
-- `__invocation_counter' as follows:
--
-- if (!data->__internal_use
-- && data->__invocation_counter == 0)
-- /* Emit prolog. */
-- ...
--
-- This element must never be modified.
--
-- `mbstate_t *__statep'
-- The `__statep' element points to an object of type `mbstate_t'
-- (*note Keeping the state::). The conversion of a stateful
-- character set must use the object pointed to by `__statep' to
-- store information about the conversion state. The `__statep'
-- element itself must never be modified.
--
-- `mbstate_t __state'
-- This element must _never_ be used directly. It is only part
-- of this structure to have the needed space allocated.
--
--`iconv' module interfaces
--.........................
--
-- With the knowledge about the data structures we now can describe the
--conversion function itself. To understand the interface a bit of
--knowledge is necessary about the functionality in the C library that
--loads the objects with the conversions.
--
-- It is often the case that one conversion is used more than once
--(i.e., there are several `iconv_open' calls for the same set of
--character sets during one program run). The `mbsrtowcs' et.al.
--functions in the GNU C library also use the `iconv' functionality, which
--increases the number of uses of the same functions even more.
--
-- Because of this multiple use of conversions, the modules do not get
--loaded exclusively for one conversion. Instead a module once loaded can
--be used by an arbitrary number of `iconv' or `mbsrtowcs' calls at the
--same time. The splitting of the information between conversion-
--function-specific information and conversion data makes this possible.
--The last section showed the two data structures used to do this.
--
-- This is of course also reflected in the interface and semantics of
--the functions that the modules must provide. There are three functions
--that must have the following names:
--
--`gconv_init'
-- The `gconv_init' function initializes the conversion function
-- specific data structure. This very same object is shared by all
-- conversions that use this conversion and, therefore, no state
-- information about the conversion itself must be stored in here.
-- If a module implements more than one conversion, the `gconv_init'
-- function will be called multiple times.
--
--`gconv_end'
-- The `gconv_end' function is responsible for freeing all resources
-- allocated by the `gconv_init' function. If there is nothing to do,
-- this function can be missing. Special care must be taken if the
-- module implements more than one conversion and the `gconv_init'
-- function does not allocate the same resources for all conversions.
--
--`gconv'
-- This is the actual conversion function. It is called to convert
-- one block of text. It gets passed the conversion step information
-- initialized by `gconv_init' and the conversion data, specific to
-- this use of the conversion functions.
--
-- There are three data types defined for the three module interface
--functions and these define the interface.
--
-- - Data type: int (*__gconv_init_fct) (struct __gconv_step *)
-- This specifies the interface of the initialization function of the
-- module. It is called exactly once for each conversion the module
-- implements.
--
-- As explained in the description of the `struct __gconv_step' data
-- structure above the initialization function has to initialize
-- parts of it.
--
-- `__min_needed_from'
-- `__max_needed_from'
-- `__min_needed_to'
-- `__max_needed_to'
-- These elements must be initialized to the exact numbers of
-- the minimum and maximum number of bytes used by one character
-- in the source and destination character sets, respectively.
-- If the characters all have the same size, the minimum and
-- maximum values are the same.
--
-- `__stateful'
-- This element must be initialized to an nonzero value if the
-- source character set is stateful. Otherwise it must be zero.
--
-- If the initialization function needs to communicate some
-- information to the conversion function, this communication can
-- happen using the `__data' element of the `__gconv_step' structure.
-- But since this data is shared by all the conversions, it must not
-- be modified by the conversion function. The example below shows
-- how this can be used.
--
-- #define MIN_NEEDED_FROM 1
-- #define MAX_NEEDED_FROM 4
-- #define MIN_NEEDED_TO 4
-- #define MAX_NEEDED_TO 4
--
-- int
-- gconv_init (struct __gconv_step *step)
-- {
-- /* Determine which direction. */
-- struct iso2022jp_data *new_data;
-- enum direction dir = illegal_dir;
-- enum variant var = illegal_var;
-- int result;
--
-- if (__strcasecmp (step->__from_name, "ISO-2022-JP//") == 0)
-- {
-- dir = from_iso2022jp;
-- var = iso2022jp;
-- }
-- else if (__strcasecmp (step->__to_name, "ISO-2022-JP//") == 0)
-- {
-- dir = to_iso2022jp;
-- var = iso2022jp;
-- }
-- else if (__strcasecmp (step->__from_name, "ISO-2022-JP-2//") == 0)
-- {
-- dir = from_iso2022jp;
-- var = iso2022jp2;
-- }
-- else if (__strcasecmp (step->__to_name, "ISO-2022-JP-2//") == 0)
-- {
-- dir = to_iso2022jp;
-- var = iso2022jp2;
-- }
--
-- result = __GCONV_NOCONV;
-- if (dir != illegal_dir)
-- {
-- new_data = (struct iso2022jp_data *)
-- malloc (sizeof (struct iso2022jp_data));
--
-- result = __GCONV_NOMEM;
-- if (new_data != NULL)
-- {
-- new_data->dir = dir;
-- new_data->var = var;
-- step->__data = new_data;
--
-- if (dir == from_iso2022jp)
-- {
-- step->__min_needed_from = MIN_NEEDED_FROM;
-- step->__max_needed_from = MAX_NEEDED_FROM;
-- step->__min_needed_to = MIN_NEEDED_TO;
-- step->__max_needed_to = MAX_NEEDED_TO;
-- }
-- else
-- {
-- step->__min_needed_from = MIN_NEEDED_TO;
-- step->__max_needed_from = MAX_NEEDED_TO;
-- step->__min_needed_to = MIN_NEEDED_FROM;
-- step->__max_needed_to = MAX_NEEDED_FROM + 2;
-- }
--
-- /* Yes, this is a stateful encoding. */
-- step->__stateful = 1;
--
-- result = __GCONV_OK;
-- }
-- }
--
-- return result;
-- }
--
-- The function first checks which conversion is wanted. The module
-- from which this function is taken implements four different
-- conversions; which one is selected can be determined by comparing
-- the names. The comparison should always be done without paying
-- attention to the case.
--
-- Next, a data structure, which contains the necessary information
-- about which conversion is selected, is allocated. The data
-- structure `struct iso2022jp_data' is locally defined since,
-- outside the module, this data is not used at all. Please note
-- that if all four conversions this modules supports are requested
-- there are four data blocks.
--
-- One interesting thing is the initialization of the `__min_' and
-- `__max_' elements of the step data object. A single ISO-2022-JP
-- character can consist of one to four bytes. Therefore the
-- `MIN_NEEDED_FROM' and `MAX_NEEDED_FROM' macros are defined this
-- way. The output is always the `INTERNAL' character set (aka
-- UCS-4) and therefore each character consists of exactly four
-- bytes. For the conversion from `INTERNAL' to ISO-2022-JP we have
-- to take into account that escape sequences might be necessary to
-- switch the character sets. Therefore the `__max_needed_to'
-- element for this direction gets assigned `MAX_NEEDED_FROM + 2'.
-- This takes into account the two bytes needed for the escape
-- sequences to single the switching. The asymmetry in the maximum
-- values for the two directions can be explained easily: when
-- reading ISO-2022-JP text, escape sequences can be handled alone
-- (i.e., it is not necessary to process a real character since the
-- effect of the escape sequence can be recorded in the state
-- information). The situation is different for the other direction.
-- Since it is in general not known which character comes next, one
-- cannot emit escape sequences to change the state in advance. This
-- means the escape sequences that have to be emitted together with
-- the next character. Therefore one needs more room than only for
-- the character itself.
--
-- The possible return values of the initialization function are:
--
-- `__GCONV_OK'
-- The initialization succeeded
--
-- `__GCONV_NOCONV'
-- The requested conversion is not supported in the module.
-- This can happen if the `gconv-modules' file has errors.
--
-- `__GCONV_NOMEM'
-- Memory required to store additional information could not be
-- allocated.
--
-- The function called before the module is unloaded is significantly
--easier. It often has nothing at all to do; in which case it can be left
--out completely.
--
-- - Data type: void (*__gconv_end_fct) (struct gconv_step *)
-- The task of this function is to free all resources allocated in the
-- initialization function. Therefore only the `__data' element of
-- the object pointed to by the argument is of interest. Continuing
-- the example from the initialization function, the finalization
-- function looks like this:
--
-- void
-- gconv_end (struct __gconv_step *data)
-- {
-- free (data->__data);
-- }
--
-- The most important function is the conversion function itself, which
--can get quite complicated for complex character sets. But since this
--is not of interest here, we will only describe a possible skeleton for
--the conversion function.
--
-- - Data type: int (*__gconv_fct) (struct __gconv_step *, struct
-- __gconv_step_data *, const char **, const char *, size_t *,
-- int)
-- The conversion function can be called for two basic reason: to
-- convert text or to reset the state. From the description of the
-- `iconv' function it can be seen why the flushing mode is
-- necessary. What mode is selected is determined by the sixth
-- argument, an integer. This argument being nonzero means that
-- flushing is selected.
--
-- Common to both modes is where the output buffer can be found. The
-- information about this buffer is stored in the conversion step
-- data. A pointer to this information is passed as the second
-- argument to this function. The description of the `struct
-- __gconv_step_data' structure has more information on the
-- conversion step data.
--
-- What has to be done for flushing depends on the source character
-- set. If the source character set is not stateful, nothing has to
-- be done. Otherwise the function has to emit a byte sequence to
-- bring the state object into the initial state. Once this all
-- happened the other conversion modules in the chain of conversions
-- have to get the same chance. Whether another step follows can be
-- determined from the `__is_last' element of the step data structure
-- to which the first parameter points.
--
-- The more interesting mode is when actual text has to be converted.
-- The first step in this case is to convert as much text as
-- possible from the input buffer and store the result in the output
-- buffer. The start of the input buffer is determined by the third
-- argument, which is a pointer to a pointer variable referencing the
-- beginning of the buffer. The fourth argument is a pointer to the
-- byte right after the last byte in the buffer.
--
-- The conversion has to be performed according to the current state
-- if the character set is stateful. The state is stored in an
-- object pointed to by the `__statep' element of the step data
-- (second argument). Once either the input buffer is empty or the
-- output buffer is full the conversion stops. At this point, the
-- pointer variable referenced by the third parameter must point to
-- the byte following the last processed byte (i.e., if all of the
-- input is consumed, this pointer and the fourth parameter have the
-- same value).
--
-- What now happens depends on whether this step is the last one. If
-- it is the last step, the only thing that has to be done is to
-- update the `__outbuf' element of the step data structure to point
-- after the last written byte. This update gives the caller the
-- information on how much text is available in the output buffer.
-- In addition, the variable pointed to by the fifth parameter, which
-- is of type `size_t', must be incremented by the number of
-- characters (_not bytes_) that were converted in a non-reversible
-- way. Then, the function can return.
--
-- In case the step is not the last one, the later conversion
-- functions have to get a chance to do their work. Therefore, the
-- appropriate conversion function has to be called. The information
-- about the functions is stored in the conversion data structures,
-- passed as the first parameter. This information and the step data
-- are stored in arrays, so the next element in both cases can be
-- found by simple pointer arithmetic:
--
-- int
-- gconv (struct __gconv_step *step, struct __gconv_step_data *data,
-- const char **inbuf, const char *inbufend, size_t *written,
-- int do_flush)
-- {
-- struct __gconv_step *next_step = step + 1;
-- struct __gconv_step_data *next_data = data + 1;
-- ...
--
-- The `next_step' pointer references the next step information and
-- `next_data' the next data record. The call of the next function
-- therefore will look similar to this:
--
-- next_step->__fct (next_step, next_data, &outerr, outbuf,
-- written, 0)
--
-- But this is not yet all. Once the function call returns the
-- conversion function might have some more to do. If the return
-- value of the function is `__GCONV_EMPTY_INPUT', more room is
-- available in the output buffer. Unless the input buffer is empty
-- the conversion, functions start all over again and process the
-- rest of the input buffer. If the return value is not
-- `__GCONV_EMPTY_INPUT', something went wrong and we have to recover
-- from this.
--
-- A requirement for the conversion function is that the input buffer
-- pointer (the third argument) always point to the last character
-- that was put in converted form into the output buffer. This is
-- trivially true after the conversion performed in the current step,
-- but if the conversion functions deeper downstream stop
-- prematurely, not all characters from the output buffer are
-- consumed and, therefore, the input buffer pointers must be backed
-- off to the right position.
--
-- Correcting the input buffers is easy to do if the input and output
-- character sets have a fixed width for all characters. In this
-- situation we can compute how many characters are left in the
-- output buffer and, therefore, can correct the input buffer pointer
-- appropriately with a similar computation. Things are getting
-- tricky if either character set has characters represented with
-- variable length byte sequences, and it gets even more complicated
-- if the conversion has to take care of the state. In these cases
-- the conversion has to be performed once again, from the known
-- state before the initial conversion (i.e., if necessary the state
-- of the conversion has to be reset and the conversion loop has to be
-- executed again). The difference now is that it is known how much
-- input must be created, and the conversion can stop before
-- converting the first unused character. Once this is done the
-- input buffer pointers must be updated again and the function can
-- return.
--
-- One final thing should be mentioned. If it is necessary for the
-- conversion to know whether it is the first invocation (in case a
-- prolog has to be emitted), the conversion function should
-- increment the `__invocation_counter' element of the step data
-- structure just before returning to the caller. See the
-- description of the `struct __gconv_step_data' structure above for
-- more information on how this can be used.
--
-- The return value must be one of the following values:
--
-- `__GCONV_EMPTY_INPUT'
-- All input was consumed and there is room left in the output
-- buffer.
--
-- `__GCONV_FULL_OUTPUT'
-- No more room in the output buffer. In case this is not the
-- last step this value is propagated down from the call of the
-- next conversion function in the chain.
--
-- `__GCONV_INCOMPLETE_INPUT'
-- The input buffer is not entirely empty since it contains an
-- incomplete character sequence.
--
-- The following example provides a framework for a conversion
-- function. In case a new conversion has to be written the holes in
-- this implementation have to be filled and that is it.
--
-- int
-- gconv (struct __gconv_step *step, struct __gconv_step_data *data,
-- const char **inbuf, const char *inbufend, size_t *written,
-- int do_flush)
-- {
-- struct __gconv_step *next_step = step + 1;
-- struct __gconv_step_data *next_data = data + 1;
-- gconv_fct fct = next_step->__fct;
-- int status;
--
-- /* If the function is called with no input this means we have
-- to reset to the initial state. The possibly partly
-- converted input is dropped. */
-- if (do_flush)
-- {
-- status = __GCONV_OK;
--
-- /* Possible emit a byte sequence which put the state object
-- into the initial state. */
--
-- /* Call the steps down the chain if there are any but only
-- if we successfully emitted the escape sequence. */
-- if (status == __GCONV_OK && ! data->__is_last)
-- status = fct (next_step, next_data, NULL, NULL,
-- written, 1);
-- }
-- else
-- {
-- /* We preserve the initial values of the pointer variables. */
-- const char *inptr = *inbuf;
-- char *outbuf = data->__outbuf;
-- char *outend = data->__outbufend;
-- char *outptr;
--
-- do
-- {
-- /* Remember the start value for this round. */
-- inptr = *inbuf;
-- /* The outbuf buffer is empty. */
-- outptr = outbuf;
--
-- /* For stateful encodings the state must be safe here. */
--
-- /* Run the conversion loop. `status' is set
-- appropriately afterwards. */
--
-- /* If this is the last step, leave the loop. There is
-- nothing we can do. */
-- if (data->__is_last)
-- {
-- /* Store information about how many bytes are
-- available. */
-- data->__outbuf = outbuf;
--
-- /* If any non-reversible conversions were performed,
-- add the number to `*written'. */
--
-- break;
-- }
--
-- /* Write out all output that was produced. */
-- if (outbuf > outptr)
-- {
-- const char *outerr = data->__outbuf;
-- int result;
--
-- result = fct (next_step, next_data, &outerr,
-- outbuf, written, 0);
--
-- if (result != __GCONV_EMPTY_INPUT)
-- {
-- if (outerr != outbuf)
-- {
-- /* Reset the input buffer pointer. We
-- document here the complex case. */
-- size_t nstatus;
--
-- /* Reload the pointers. */
-- *inbuf = inptr;
-- outbuf = outptr;
--
-- /* Possibly reset the state. */
--
-- /* Redo the conversion, but this time
-- the end of the output buffer is at
-- `outerr'. */
-- }
--
-- /* Change the status. */
-- status = result;
-- }
-- else
-- /* All the output is consumed, we can make
-- another run if everything was ok. */
-- if (status == __GCONV_FULL_OUTPUT)
-- status = __GCONV_OK;
-- }
-- }
-- while (status == __GCONV_OK);
--
-- /* We finished one use of this step. */
-- ++data->__invocation_counter;
-- }
--
-- return status;
-- }
--
-- This information should be sufficient to write new modules. Anybody
--doing so should also take a look at the available source code in the GNU
--C library sources. It contains many examples of working and optimized
--modules.
--
--
--File: libc.info, Node: Locales, Next: Message Translation, Prev: Character Set Handling, Up: Top
--
--Locales and Internationalization
--********************************
--
-- Different countries and cultures have varying conventions for how to
--communicate. These conventions range from very simple ones, such as the
--format for representing dates and times, to very complex ones, such as
--the language spoken.
--
-- "Internationalization" of software means programming it to be able
--to adapt to the user's favorite conventions. In ISO C,
--internationalization works by means of "locales". Each locale
--specifies a collection of conventions, one convention for each purpose.
--The user chooses a set of conventions by specifying a locale (via
--environment variables).
--
-- All programs inherit the chosen locale as part of their environment.
--Provided the programs are written to obey the choice of locale, they
--will follow the conventions preferred by the user.
--
--* Menu:
--
--* Effects of Locale:: Actions affected by the choice of
-- locale.
--* Choosing Locale:: How the user specifies a locale.
--* Locale Categories:: Different purposes for which you can
-- select a locale.
--* Setting the Locale:: How a program specifies the locale
-- with library functions.
--* Standard Locales:: Locale names available on all systems.
--* Locale Information:: How to access the information for the locale.
--* Formatting Numbers:: A dedicated function to format numbers.
--* Yes-or-No Questions:: Check a Response against the locale.
--
--
--File: libc.info, Node: Effects of Locale, Next: Choosing Locale, Up: Locales
--
--What Effects a Locale Has
--=========================
--
-- Each locale specifies conventions for several purposes, including the
--following:
--
-- * What multibyte character sequences are valid, and how they are
-- interpreted (*note Character Set Handling::).
--
-- * Classification of which characters in the local character set are
-- considered alphabetic, and upper- and lower-case conversion
-- conventions (*note Character Handling::).
--
-- * The collating sequence for the local language and character set
-- (*note Collation Functions::).
--
-- * Formatting of numbers and currency amounts (*note General
-- Numeric::).
--
-- * Formatting of dates and times (*note Formatting Calendar Time::).
--
-- * What language to use for output, including error messages (*note
-- Message Translation::).
--
-- * What language to use for user answers to yes-or-no questions
-- (*note Yes-or-No Questions::).
--
-- * What language to use for more complex user input. (The C library
-- doesn't yet help you implement this.)
--
-- Some aspects of adapting to the specified locale are handled
--automatically by the library subroutines. For example, all your program
--needs to do in order to use the collating sequence of the chosen locale
--is to use `strcoll' or `strxfrm' to compare strings.
--
-- Other aspects of locales are beyond the comprehension of the library.
--For example, the library can't automatically translate your program's
--output messages into other languages. The only way you can support
--output in the user's favorite language is to program this more or less
--by hand. The C library provides functions to handle translations for
--multiple languages easily.
--
-- This chapter discusses the mechanism by which you can modify the
--current locale. The effects of the current locale on specific library
--functions are discussed in more detail in the descriptions of those
--functions.
--
--
--File: libc.info, Node: Choosing Locale, Next: Locale Categories, Prev: Effects of Locale, Up: Locales
--
--Choosing a Locale
--=================
--
-- The simplest way for the user to choose a locale is to set the
--environment variable `LANG'. This specifies a single locale to use for
--all purposes. For example, a user could specify a hypothetical locale
--named `espana-castellano' to use the standard conventions of most of
--Spain.
--
-- The set of locales supported depends on the operating system you are
--using, and so do their names. We can't make any promises about what
--locales will exist, except for one standard locale called `C' or
--`POSIX'. Later we will describe how to construct locales.
--
-- A user also has the option of specifying different locales for
--different purposes--in effect, choosing a mixture of multiple locales.
--
-- For example, the user might specify the locale `espana-castellano'
--for most purposes, but specify the locale `usa-english' for currency
--formatting. This might make sense if the user is a Spanish-speaking
--American, working in Spanish, but representing monetary amounts in US
--dollars.
--
-- Note that both locales `espana-castellano' and `usa-english', like
--all locales, would include conventions for all of the purposes to which
--locales apply. However, the user can choose to use each locale for a
--particular subset of those purposes.
--
--
--File: libc.info, Node: Locale Categories, Next: Setting the Locale, Prev: Choosing Locale, Up: Locales
--
--Categories of Activities that Locales Affect
--============================================
--
-- The purposes that locales serve are grouped into "categories", so
--that a user or a program can choose the locale for each category
--independently. Here is a table of categories; each name is both an
--environment variable that a user can set, and a macro name that you can
--use as an argument to `setlocale'.
--
--`LC_COLLATE'
-- This category applies to collation of strings (functions `strcoll'
-- and `strxfrm'); see *Note Collation Functions::.
--
--`LC_CTYPE'
-- This category applies to classification and conversion of
-- characters, and to multibyte and wide characters; see *Note
-- Character Handling::, and *Note Character Set Handling::.
--
--`LC_MONETARY'
-- This category applies to formatting monetary values; see *Note
-- General Numeric::.
--
--`LC_NUMERIC'
-- This category applies to formatting numeric values that are not
-- monetary; see *Note General Numeric::.
--
--`LC_TIME'
-- This category applies to formatting date and time values; see
-- *Note Formatting Calendar Time::.
--
--`LC_MESSAGES'
-- This category applies to selecting the language used in the user
-- interface for message translation (*note The Uniforum approach::;
-- *note Message catalogs a la X/Open::) and contains regular
-- expressions for affirmative and negative responses.
--
--`LC_ALL'
-- This is not an environment variable; it is only a macro that you
-- can use with `setlocale' to set a single locale for all purposes.
-- Setting this environment variable overwrites all selections by the
-- other `LC_*' variables or `LANG'.
--
--`LANG'
-- If this environment variable is defined, its value specifies the
-- locale to use for all purposes except as overridden by the
-- variables above.
--
-- When developing the message translation functions it was felt that
--the functionality provided by the variables above is not sufficient.
--For example, it should be possible to specify more than one locale name.
--Take a Swedish user who better speaks German than English, and a program
--whose messages are output in English by default. It should be possible
--to specify that the first choice of language is Swedish, the second
--German, and if this also fails to use English. This is possible with
--the variable `LANGUAGE'. For further description of this GNU extension
--see *Note Using gettextized software::.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-12 glibc-2.3.2-200304020432/manual/libc.info-12
---- glibc-2.3.2/manual/libc.info-12 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-12 Thu Jan 1 01:00:00 1970
-@@ -1,1156 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Setting the Locale, Next: Standard Locales, Prev: Locale Categories, Up: Locales
--
--How Programs Set the Locale
--===========================
--
-- A C program inherits its locale environment variables when it starts
--up. This happens automatically. However, these variables do not
--automatically control the locale used by the library functions, because
--ISO C says that all programs start by default in the standard `C'
--locale. To use the locales specified by the environment, you must call
--`setlocale'. Call it as follows:
--
-- setlocale (LC_ALL, "");
--
--to select a locale based on the user choice of the appropriate
--environment variables.
--
-- You can also use `setlocale' to specify a particular locale, for
--general use or for a specific category.
--
-- The symbols in this section are defined in the header file
--`locale.h'.
--
-- - Function: char * setlocale (int CATEGORY, const char *LOCALE)
-- The function `setlocale' sets the current locale for category
-- CATEGORY to LOCALE. A list of all the locales the system provides
-- can be created by running
--
-- locale -a
--
-- If CATEGORY is `LC_ALL', this specifies the locale for all
-- purposes. The other possible values of CATEGORY specify an single
-- purpose (*note Locale Categories::).
--
-- You can also use this function to find out the current locale by
-- passing a null pointer as the LOCALE argument. In this case,
-- `setlocale' returns a string that is the name of the locale
-- currently selected for category CATEGORY.
--
-- The string returned by `setlocale' can be overwritten by subsequent
-- calls, so you should make a copy of the string (*note Copying and
-- Concatenation::) if you want to save it past any further calls to
-- `setlocale'. (The standard library is guaranteed never to call
-- `setlocale' itself.)
--
-- You should not modify the string returned by `setlocale'. It might
-- be the same string that was passed as an argument in a previous
-- call to `setlocale'. One requirement is that the CATEGORY must be
-- the same in the call the string was returned and the one when the
-- string is passed in as LOCALE parameter.
--
-- When you read the current locale for category `LC_ALL', the value
-- encodes the entire combination of selected locales for all
-- categories. In this case, the value is not just a single locale
-- name. In fact, we don't make any promises about what it looks
-- like. But if you specify the same "locale name" with `LC_ALL' in
-- a subsequent call to `setlocale', it restores the same combination
-- of locale selections.
--
-- To be sure you can use the returned string encoding the currently
-- selected locale at a later time, you must make a copy of the
-- string. It is not guaranteed that the returned pointer remains
-- valid over time.
--
-- When the LOCALE argument is not a null pointer, the string returned
-- by `setlocale' reflects the newly-modified locale.
--
-- If you specify an empty string for LOCALE, this means to read the
-- appropriate environment variable and use its value to select the
-- locale for CATEGORY.
--
-- If a nonempty string is given for LOCALE, then the locale of that
-- name is used if possible.
--
-- If you specify an invalid locale name, `setlocale' returns a null
-- pointer and leaves the current locale unchanged.
--
-- Here is an example showing how you might use `setlocale' to
--temporarily switch to a new locale.
--
-- #include <stddef.h>
-- #include <locale.h>
-- #include <stdlib.h>
-- #include <string.h>
--
-- void
-- with_other_locale (char *new_locale,
-- void (*subroutine) (int),
-- int argument)
-- {
-- char *old_locale, *saved_locale;
--
-- /* Get the name of the current locale. */
-- old_locale = setlocale (LC_ALL, NULL);
--
-- /* Copy the name so it won't be clobbered by `setlocale'. */
-- saved_locale = strdup (old_locale);
-- if (saved_locale == NULL)
-- fatal ("Out of memory");
--
-- /* Now change the locale and do some stuff with it. */
-- setlocale (LC_ALL, new_locale);
-- (*subroutine) (argument);
--
-- /* Restore the original locale. */
-- setlocale (LC_ALL, saved_locale);
-- free (saved_locale);
-- }
--
-- *Portability Note:* Some ISO C systems may define additional locale
--categories, and future versions of the library will do so. For
--portability, assume that any symbol beginning with `LC_' might be
--defined in `locale.h'.
--
--
--File: libc.info, Node: Standard Locales, Next: Locale Information, Prev: Setting the Locale, Up: Locales
--
--Standard Locales
--================
--
-- The only locale names you can count on finding on all operating
--systems are these three standard ones:
--
--`"C"'
-- This is the standard C locale. The attributes and behavior it
-- provides are specified in the ISO C standard. When your program
-- starts up, it initially uses this locale by default.
--
--`"POSIX"'
-- This is the standard POSIX locale. Currently, it is an alias for
-- the standard C locale.
--
--`""'
-- The empty name says to select a locale based on environment
-- variables. *Note Locale Categories::.
--
-- Defining and installing named locales is normally a responsibility of
--the system administrator at your site (or the person who installed the
--GNU C library). It is also possible for the user to create private
--locales. All this will be discussed later when describing the tool to
--do so.
--
-- If your program needs to use something other than the `C' locale, it
--will be more portable if you use whatever locale the user specifies
--with the environment, rather than trying to specify some non-standard
--locale explicitly by name. Remember, different machines might have
--different sets of locales installed.
--
--
--File: libc.info, Node: Locale Information, Next: Formatting Numbers, Prev: Standard Locales, Up: Locales
--
--Accessing Locale Information
--============================
--
-- There are several ways to access locale information. The simplest
--way is to let the C library itself do the work. Several of the
--functions in this library implicitly access the locale data, and use
--what information is provided by the currently selected locale. This is
--how the locale model is meant to work normally.
--
-- As an example take the `strftime' function, which is meant to nicely
--format date and time information (*note Formatting Calendar Time::).
--Part of the standard information contained in the `LC_TIME' category is
--the names of the months. Instead of requiring the programmer to take
--care of providing the translations the `strftime' function does this
--all by itself. `%A' in the format string is replaced by the
--appropriate weekday name of the locale currently selected by `LC_TIME'.
--This is an easy example, and wherever possible functions do things
--automatically in this way.
--
-- But there are quite often situations when there is simply no function
--to perform the task, or it is simply not possible to do the work
--automatically. For these cases it is necessary to access the
--information in the locale directly. To do this the C library provides
--two functions: `localeconv' and `nl_langinfo'. The former is part of
--ISO C and therefore portable, but has a brain-damaged interface. The
--second is part of the Unix interface and is portable in as far as the
--system follows the Unix standards.
--
--* Menu:
--
--* The Lame Way to Locale Data:: ISO C's `localeconv'.
--* The Elegant and Fast Way:: X/Open's `nl_langinfo'.
--
--
--File: libc.info, Node: The Lame Way to Locale Data, Next: The Elegant and Fast Way, Up: Locale Information
--
--`localeconv': It is portable but ...
--------------------------------------
--
-- Together with the `setlocale' function the ISO C people invented the
--`localeconv' function. It is a masterpiece of poor design. It is
--expensive to use, not extendable, and not generally usable as it
--provides access to only `LC_MONETARY' and `LC_NUMERIC' related
--information. Nevertheless, if it is applicable to a given situation it
--should be used since it is very portable. The function `strfmon'
--formats monetary amounts according to the selected locale using this
--information.
--
-- - Function: struct lconv * localeconv (void)
-- The `localeconv' function returns a pointer to a structure whose
-- components contain information about how numeric and monetary
-- values should be formatted in the current locale.
--
-- You should not modify the structure or its contents. The
-- structure might be overwritten by subsequent calls to
-- `localeconv', or by calls to `setlocale', but no other function in
-- the library overwrites this value.
--
-- - Data Type: struct lconv
-- `localeconv''s return value is of this data type. Its elements are
-- described in the following subsections.
--
-- If a member of the structure `struct lconv' has type `char', and the
--value is `CHAR_MAX', it means that the current locale has no value for
--that parameter.
--
--* Menu:
--
--* General Numeric:: Parameters for formatting numbers and
-- currency amounts.
--* Currency Symbol:: How to print the symbol that identifies an
-- amount of money (e.g. `$').
--* Sign of Money Amount:: How to print the (positive or negative) sign
-- for a monetary amount, if one exists.
--
--
--File: libc.info, Node: General Numeric, Next: Currency Symbol, Up: The Lame Way to Locale Data
--
--Generic Numeric Formatting Parameters
--.....................................
--
-- These are the standard members of `struct lconv'; there may be
--others.
--
--`char *decimal_point'
--`char *mon_decimal_point'
-- These are the decimal-point separators used in formatting
-- non-monetary and monetary quantities, respectively. In the `C'
-- locale, the value of `decimal_point' is `"."', and the value of
-- `mon_decimal_point' is `""'.
--
--`char *thousands_sep'
--`char *mon_thousands_sep'
-- These are the separators used to delimit groups of digits to the
-- left of the decimal point in formatting non-monetary and monetary
-- quantities, respectively. In the `C' locale, both members have a
-- value of `""' (the empty string).
--
--`char *grouping'
--`char *mon_grouping'
-- These are strings that specify how to group the digits to the left
-- of the decimal point. `grouping' applies to non-monetary
-- quantities and `mon_grouping' applies to monetary quantities. Use
-- either `thousands_sep' or `mon_thousands_sep' to separate the digit
-- groups.
--
-- Each member of these strings is to be interpreted as an integer
-- value of type `char'. Successive numbers (from left to right)
-- give the sizes of successive groups (from right to left, starting
-- at the decimal point.) The last member is either `0', in which
-- case the previous member is used over and over again for all the
-- remaining groups, or `CHAR_MAX', in which case there is no more
-- grouping--or, put another way, any remaining digits form one large
-- group without separators.
--
-- For example, if `grouping' is `"\04\03\02"', the correct grouping
-- for the number `123456787654321' is `12', `34', `56', `78', `765',
-- `4321'. This uses a group of 4 digits at the end, preceded by a
-- group of 3 digits, preceded by groups of 2 digits (as many as
-- needed). With a separator of `,', the number would be printed as
-- `12,34,56,78,765,4321'.
--
-- A value of `"\03"' indicates repeated groups of three digits, as
-- normally used in the U.S.
--
-- In the standard `C' locale, both `grouping' and `mon_grouping'
-- have a value of `""'. This value specifies no grouping at all.
--
--`char int_frac_digits'
--`char frac_digits'
-- These are small integers indicating how many fractional digits (to
-- the right of the decimal point) should be displayed in a monetary
-- value in international and local formats, respectively. (Most
-- often, both members have the same value.)
--
-- In the standard `C' locale, both of these members have the value
-- `CHAR_MAX', meaning "unspecified". The ISO standard doesn't say
-- what to do when you find this value; we recommend printing no
-- fractional digits. (This locale also specifies the empty string
-- for `mon_decimal_point', so printing any fractional digits would be
-- confusing!)
--
--
--File: libc.info, Node: Currency Symbol, Next: Sign of Money Amount, Prev: General Numeric, Up: The Lame Way to Locale Data
--
--Printing the Currency Symbol
--............................
--
-- These members of the `struct lconv' structure specify how to print
--the symbol to identify a monetary value--the international analog of
--`$' for US dollars.
--
-- Each country has two standard currency symbols. The "local currency
--symbol" is used commonly within the country, while the "international
--currency symbol" is used internationally to refer to that country's
--currency when it is necessary to indicate the country unambiguously.
--
-- For example, many countries use the dollar as their monetary unit,
--and when dealing with international currencies it's important to specify
--that one is dealing with (say) Canadian dollars instead of U.S. dollars
--or Australian dollars. But when the context is known to be Canada,
--there is no need to make this explicit--dollar amounts are implicitly
--assumed to be in Canadian dollars.
--
--`char *currency_symbol'
-- The local currency symbol for the selected locale.
--
-- In the standard `C' locale, this member has a value of `""' (the
-- empty string), meaning "unspecified". The ISO standard doesn't
-- say what to do when you find this value; we recommend you simply
-- print the empty string as you would print any other string pointed
-- to by this variable.
--
--`char *int_curr_symbol'
-- The international currency symbol for the selected locale.
--
-- The value of `int_curr_symbol' should normally consist of a
-- three-letter abbreviation determined by the international standard
-- `ISO 4217 Codes for the Representation of Currency and Funds',
-- followed by a one-character separator (often a space).
--
-- In the standard `C' locale, this member has a value of `""' (the
-- empty string), meaning "unspecified". We recommend you simply
-- print the empty string as you would print any other string pointed
-- to by this variable.
--
--`char p_cs_precedes'
--`char n_cs_precedes'
--`char int_p_cs_precedes'
--`char int_n_cs_precedes'
-- These members are `1' if the `currency_symbol' or
-- `int_curr_symbol' strings should precede the value of a monetary
-- amount, or `0' if the strings should follow the value. The
-- `p_cs_precedes' and `int_p_cs_precedes' members apply to positive
-- amounts (or zero), and the `n_cs_precedes' and `int_n_cs_precedes'
-- members apply to negative amounts.
--
-- In the standard `C' locale, all of these members have a value of
-- `CHAR_MAX', meaning "unspecified". The ISO standard doesn't say
-- what to do when you find this value. We recommend printing the
-- currency symbol before the amount, which is right for most
-- countries. In other words, treat all nonzero values alike in
-- these members.
--
-- The members with the `int_' prefix apply to the `int_curr_symbol'
-- while the other two apply to `currency_symbol'.
--
--`char p_sep_by_space'
--`char n_sep_by_space'
--`char int_p_sep_by_space'
--`char int_n_sep_by_space'
-- These members are `1' if a space should appear between the
-- `currency_symbol' or `int_curr_symbol' strings and the amount, or
-- `0' if no space should appear. The `p_sep_by_space' and
-- `int_p_sep_by_space' members apply to positive amounts (or zero),
-- and the `n_sep_by_space' and `int_n_sep_by_space' members apply to
-- negative amounts.
--
-- In the standard `C' locale, all of these members have a value of
-- `CHAR_MAX', meaning "unspecified". The ISO standard doesn't say
-- what you should do when you find this value; we suggest you treat
-- it as 1 (print a space). In other words, treat all nonzero values
-- alike in these members.
--
-- The members with the `int_' prefix apply to the `int_curr_symbol'
-- while the other two apply to `currency_symbol'. There is one
-- specialty with the `int_curr_symbol', though. Since all legal
-- values contain a space at the end the string one either printf
-- this space (if the currency symbol must appear in front and must
-- be separated) or one has to avoid printing this character at all
-- (especially when at the end of the string).
--
--
--File: libc.info, Node: Sign of Money Amount, Prev: Currency Symbol, Up: The Lame Way to Locale Data
--
--Printing the Sign of a Monetary Amount
--......................................
--
-- These members of the `struct lconv' structure specify how to print
--the sign (if any) of a monetary value.
--
--`char *positive_sign'
--`char *negative_sign'
-- These are strings used to indicate positive (or zero) and negative
-- monetary quantities, respectively.
--
-- In the standard `C' locale, both of these members have a value of
-- `""' (the empty string), meaning "unspecified".
--
-- The ISO standard doesn't say what to do when you find this value;
-- we recommend printing `positive_sign' as you find it, even if it is
-- empty. For a negative value, print `negative_sign' as you find it
-- unless both it and `positive_sign' are empty, in which case print
-- `-' instead. (Failing to indicate the sign at all seems rather
-- unreasonable.)
--
--`char p_sign_posn'
--`char n_sign_posn'
--`char int_p_sign_posn'
--`char int_n_sign_posn'
-- These members are small integers that indicate how to position the
-- sign for nonnegative and negative monetary quantities,
-- respectively. (The string used by the sign is what was specified
-- with `positive_sign' or `negative_sign'.) The possible values are
-- as follows:
--
-- `0'
-- The currency symbol and quantity should be surrounded by
-- parentheses.
--
-- `1'
-- Print the sign string before the quantity and currency symbol.
--
-- `2'
-- Print the sign string after the quantity and currency symbol.
--
-- `3'
-- Print the sign string right before the currency symbol.
--
-- `4'
-- Print the sign string right after the currency symbol.
--
-- `CHAR_MAX'
-- "Unspecified". Both members have this value in the standard
-- `C' locale.
--
-- The ISO standard doesn't say what you should do when the value is
-- `CHAR_MAX'. We recommend you print the sign after the currency
-- symbol.
--
-- The members with the `int_' prefix apply to the `int_curr_symbol'
-- while the other two apply to `currency_symbol'.
--
--
--File: libc.info, Node: The Elegant and Fast Way, Prev: The Lame Way to Locale Data, Up: Locale Information
--
--Pinpoint Access to Locale Data
--------------------------------
--
-- When writing the X/Open Portability Guide the authors realized that
--the `localeconv' function is not enough to provide reasonable access to
--locale information. The information which was meant to be available in
--the locale (as later specified in the POSIX.1 standard) requires more
--ways to access it. Therefore the `nl_langinfo' function was introduced.
--
-- - Function: char * nl_langinfo (nl_item ITEM)
-- The `nl_langinfo' function can be used to access individual
-- elements of the locale categories. Unlike the `localeconv'
-- function, which returns all the information, `nl_langinfo' lets
-- the caller select what information it requires. This is very fast
-- and it is not a problem to call this function multiple times.
--
-- A second advantage is that in addition to the numeric and monetary
-- formatting information, information from the `LC_TIME' and
-- `LC_MESSAGES' categories is available.
--
-- The type `nl_type' is defined in `nl_types.h'. The argument ITEM
-- is a numeric value defined in the header `langinfo.h'. The X/Open
-- standard defines the following values:
--
-- `CODESET'
-- `nl_langinfo' returns a string with the name of the coded
-- character set used in the selected locale.
--
-- `ABDAY_1'
-- `ABDAY_2'
-- `ABDAY_3'
-- `ABDAY_4'
-- `ABDAY_5'
-- `ABDAY_6'
-- `ABDAY_7'
-- `nl_langinfo' returns the abbreviated weekday name. `ABDAY_1'
-- corresponds to Sunday.
--
-- `DAY_1'
-- `DAY_2'
-- `DAY_3'
-- `DAY_4'
-- `DAY_5'
-- `DAY_6'
-- `DAY_7'
-- Similar to `ABDAY_1' etc., but here the return value is the
-- unabbreviated weekday name.
--
-- `ABMON_1'
-- `ABMON_2'
-- `ABMON_3'
-- `ABMON_4'
-- `ABMON_5'
-- `ABMON_6'
-- `ABMON_7'
-- `ABMON_8'
-- `ABMON_9'
-- `ABMON_10'
-- `ABMON_11'
-- `ABMON_12'
-- The return value is abbreviated name of the month. `ABMON_1'
-- corresponds to January.
--
-- `MON_1'
-- `MON_2'
-- `MON_3'
-- `MON_4'
-- `MON_5'
-- `MON_6'
-- `MON_7'
-- `MON_8'
-- `MON_9'
-- `MON_10'
-- `MON_11'
-- `MON_12'
-- Similar to `ABMON_1' etc., but here the month names are not
-- abbreviated. Here the first value `MON_1' also corresponds
-- to January.
--
-- `AM_STR'
-- `PM_STR'
-- The return values are strings which can be used in the
-- representation of time as an hour from 1 to 12 plus an am/pm
-- specifier.
--
-- Note that in locales which do not use this time representation
-- these strings might be empty, in which case the am/pm format
-- cannot be used at all.
--
-- `D_T_FMT'
-- The return value can be used as a format string for
-- `strftime' to represent time and date in a locale-specific
-- way.
--
-- `D_FMT'
-- The return value can be used as a format string for
-- `strftime' to represent a date in a locale-specific way.
--
-- `T_FMT'
-- The return value can be used as a format string for
-- `strftime' to represent time in a locale-specific way.
--
-- `T_FMT_AMPM'
-- The return value can be used as a format string for
-- `strftime' to represent time in the am/pm format.
--
-- Note that if the am/pm format does not make any sense for the
-- selected locale, the return value might be the same as the
-- one for `T_FMT'.
--
-- `ERA'
-- The return value represents the era used in the current
-- locale.
--
-- Most locales do not define this value. An example of a
-- locale which does define this value is the Japanese one. In
-- Japan, the traditional representation of dates includes the
-- name of the era corresponding to the then-emperor's reign.
--
-- Normally it should not be necessary to use this value
-- directly. Specifying the `E' modifier in their format
-- strings causes the `strftime' functions to use this
-- information. The format of the returned string is not
-- specified, and therefore you should not assume knowledge of
-- it on different systems.
--
-- `ERA_YEAR'
-- The return value gives the year in the relevant era of the
-- locale. As for `ERA' it should not be necessary to use this
-- value directly.
--
-- `ERA_D_T_FMT'
-- This return value can be used as a format string for
-- `strftime' to represent dates and times in a locale-specific
-- era-based way.
--
-- `ERA_D_FMT'
-- This return value can be used as a format string for
-- `strftime' to represent a date in a locale-specific era-based
-- way.
--
-- `ERA_T_FMT'
-- This return value can be used as a format string for
-- `strftime' to represent time in a locale-specific era-based
-- way.
--
-- `ALT_DIGITS'
-- The return value is a representation of up to 100 values used
-- to represent the values 0 to 99. As for `ERA' this value is
-- not intended to be used directly, but instead indirectly
-- through the `strftime' function. When the modifier `O' is
-- used in a format which would otherwise use numerals to
-- represent hours, minutes, seconds, weekdays, months, or
-- weeks, the appropriate value for the locale is used instead.
--
-- `INT_CURR_SYMBOL'
-- The same as the value returned by `localeconv' in the
-- `int_curr_symbol' element of the `struct lconv'.
--
-- `CURRENCY_SYMBOL'
-- `CRNCYSTR'
-- The same as the value returned by `localeconv' in the
-- `currency_symbol' element of the `struct lconv'.
--
-- `CRNCYSTR' is a deprecated alias still required by Unix98.
--
-- `MON_DECIMAL_POINT'
-- The same as the value returned by `localeconv' in the
-- `mon_decimal_point' element of the `struct lconv'.
--
-- `MON_THOUSANDS_SEP'
-- The same as the value returned by `localeconv' in the
-- `mon_thousands_sep' element of the `struct lconv'.
--
-- `MON_GROUPING'
-- The same as the value returned by `localeconv' in the
-- `mon_grouping' element of the `struct lconv'.
--
-- `POSITIVE_SIGN'
-- The same as the value returned by `localeconv' in the
-- `positive_sign' element of the `struct lconv'.
--
-- `NEGATIVE_SIGN'
-- The same as the value returned by `localeconv' in the
-- `negative_sign' element of the `struct lconv'.
--
-- `INT_FRAC_DIGITS'
-- The same as the value returned by `localeconv' in the
-- `int_frac_digits' element of the `struct lconv'.
--
-- `FRAC_DIGITS'
-- The same as the value returned by `localeconv' in the
-- `frac_digits' element of the `struct lconv'.
--
-- `P_CS_PRECEDES'
-- The same as the value returned by `localeconv' in the
-- `p_cs_precedes' element of the `struct lconv'.
--
-- `P_SEP_BY_SPACE'
-- The same as the value returned by `localeconv' in the
-- `p_sep_by_space' element of the `struct lconv'.
--
-- `N_CS_PRECEDES'
-- The same as the value returned by `localeconv' in the
-- `n_cs_precedes' element of the `struct lconv'.
--
-- `N_SEP_BY_SPACE'
-- The same as the value returned by `localeconv' in the
-- `n_sep_by_space' element of the `struct lconv'.
--
-- `P_SIGN_POSN'
-- The same as the value returned by `localeconv' in the
-- `p_sign_posn' element of the `struct lconv'.
--
-- `N_SIGN_POSN'
-- The same as the value returned by `localeconv' in the
-- `n_sign_posn' element of the `struct lconv'.
--
-- `INT_P_CS_PRECEDES'
-- The same as the value returned by `localeconv' in the
-- `int_p_cs_precedes' element of the `struct lconv'.
--
-- `INT_P_SEP_BY_SPACE'
-- The same as the value returned by `localeconv' in the
-- `int_p_sep_by_space' element of the `struct lconv'.
--
-- `INT_N_CS_PRECEDES'
-- The same as the value returned by `localeconv' in the
-- `int_n_cs_precedes' element of the `struct lconv'.
--
-- `INT_N_SEP_BY_SPACE'
-- The same as the value returned by `localeconv' in the
-- `int_n_sep_by_space' element of the `struct lconv'.
--
-- `INT_P_SIGN_POSN'
-- The same as the value returned by `localeconv' in the
-- `int_p_sign_posn' element of the `struct lconv'.
--
-- `INT_N_SIGN_POSN'
-- The same as the value returned by `localeconv' in the
-- `int_n_sign_posn' element of the `struct lconv'.
--
-- `DECIMAL_POINT'
-- `RADIXCHAR'
-- The same as the value returned by `localeconv' in the
-- `decimal_point' element of the `struct lconv'.
--
-- The name `RADIXCHAR' is a deprecated alias still used in
-- Unix98.
--
-- `THOUSANDS_SEP'
-- `THOUSEP'
-- The same as the value returned by `localeconv' in the
-- `thousands_sep' element of the `struct lconv'.
--
-- The name `THOUSEP' is a deprecated alias still used in Unix98.
--
-- `GROUPING'
-- The same as the value returned by `localeconv' in the
-- `grouping' element of the `struct lconv'.
--
-- `YESEXPR'
-- The return value is a regular expression which can be used
-- with the `regex' function to recognize a positive response to
-- a yes/no question. The GNU C library provides the `rpmatch'
-- function for easier handling in applications.
--
-- `NOEXPR'
-- The return value is a regular expression which can be used
-- with the `regex' function to recognize a negative response to
-- a yes/no question.
--
-- `YESSTR'
-- The return value is a locale-specific translation of the
-- positive response to a yes/no question.
--
-- Using this value is deprecated since it is a very special
-- case of message translation, and is better handled by the
-- message translation functions (*note Message Translation::).
--
-- The use of this symbol is deprecated. Instead message
-- translation should be used.
--
-- `NOSTR'
-- The return value is a locale-specific translation of the
-- negative response to a yes/no question. What is said for
-- `YESSTR' is also true here.
--
-- The use of this symbol is deprecated. Instead message
-- translation should be used.
--
-- The file `langinfo.h' defines a lot more symbols but none of them
-- is official. Using them is not portable, and the format of the
-- return values might change. Therefore we recommended you not use
-- them.
--
-- Note that the return value for any valid argument can be used for
-- in all situations (with the possible exception of the am/pm time
-- formatting codes). If the user has not selected any locale for the
-- appropriate category, `nl_langinfo' returns the information from
-- the `"C"' locale. It is therefore possible to use this function as
-- shown in the example below.
--
-- If the argument ITEM is not valid, a pointer to an empty string is
-- returned.
--
-- An example of `nl_langinfo' usage is a function which has to print a
--given date and time in a locale-specific way. At first one might think
--that, since `strftime' internally uses the locale information, writing
--something like the following is enough:
--
-- size_t
-- i18n_time_n_data (char *s, size_t len, const struct tm *tp)
-- {
-- return strftime (s, len, "%X %D", tp);
-- }
--
-- The format contains no weekday or month names and therefore is
--internationally usable. Wrong! The output produced is something like
--`"hh:mm:ss MM/DD/YY"'. This format is only recognizable in the USA.
--Other countries use different formats. Therefore the function should
--be rewritten like this:
--
-- size_t
-- i18n_time_n_data (char *s, size_t len, const struct tm *tp)
-- {
-- return strftime (s, len, nl_langinfo (D_T_FMT), tp);
-- }
--
-- Now it uses the date and time format of the locale selected when the
--program runs. If the user selects the locale correctly there should
--never be a misunderstanding over the time and date format.
--
--
--File: libc.info, Node: Formatting Numbers, Next: Yes-or-No Questions, Prev: Locale Information, Up: Locales
--
--A dedicated function to format numbers
--======================================
--
-- We have seen that the structure returned by `localeconv' as well as
--the values given to `nl_langinfo' allow you to retrieve the various
--pieces of locale-specific information to format numbers and monetary
--amounts. We have also seen that the underlying rules are quite complex.
--
-- Therefore the X/Open standards introduce a function which uses such
--locale information, making it easier for the user to format numbers
--according to these rules.
--
-- - Function: ssize_t strfmon (char *S, size_t MAXSIZE, const char
-- *FORMAT, ...)
-- The `strfmon' function is similar to the `strftime' function in
-- that it takes a buffer, its size, a format string, and values to
-- write into the buffer as text in a form specified by the format
-- string. Like `strftime', the function also returns the number of
-- bytes written into the buffer.
--
-- There are two differences: `strfmon' can take more than one
-- argument, and, of course, the format specification is different.
-- Like `strftime', the format string consists of normal text, which
-- is output as is, and format specifiers, which are indicated by a
-- `%'. Immediately after the `%', you can optionally specify
-- various flags and formatting information before the main
-- formatting character, in a similar way to `printf':
--
-- * Immediately following the `%' there can be one or more of the
-- following flags:
-- `=F'
-- The single byte character F is used for this field as
-- the numeric fill character. By default this character
-- is a space character. Filling with this character is
-- only performed if a left precision is specified. It is
-- not just to fill to the given field width.
--
-- `^'
-- The number is printed without grouping the digits
-- according to the rules of the current locale. By
-- default grouping is enabled.
--
-- `+', `('
-- At most one of these flags can be used. They select
-- which format to represent the sign of a currency amount.
-- By default, and if `+' is given, the locale equivalent
-- of +/- is used. If `(' is given, negative amounts are
-- enclosed in parentheses. The exact format is determined
-- by the values of the `LC_MONETARY' category of the
-- locale selected at program runtime.
--
-- `!'
-- The output will not contain the currency symbol.
--
-- `-'
-- The output will be formatted left-justified instead of
-- right-justified if it does not fill the entire field
-- width.
--
-- The next part of a specification is an optional field width. If no
-- width is specified 0 is taken. During output, the function first
-- determines how much space is required. If it requires at least as
-- many characters as given by the field width, it is output using as
-- much space as necessary. Otherwise, it is extended to use the
-- full width by filling with the space character. The presence or
-- absence of the `-' flag determines the side at which such padding
-- occurs. If present, the spaces are added at the right making the
-- output left-justified, and vice versa.
--
-- So far the format looks familiar, being similar to the `printf' and
-- `strftime' formats. However, the next two optional fields
-- introduce something new. The first one is a `#' character followed
-- by a decimal digit string. The value of the digit string
-- specifies the number of _digit_ positions to the left of the
-- decimal point (or equivalent). This does _not_ include the
-- grouping character when the `^' flag is not given. If the space
-- needed to print the number does not fill the whole width, the
-- field is padded at the left side with the fill character, which
-- can be selected using the `=' flag and by default is a space. For
-- example, if the field width is selected as 6 and the number is
-- 123, the fill character is `*' the result will be `***123'.
--
-- The second optional field starts with a `.' (period) and consists
-- of another decimal digit string. Its value describes the number of
-- characters printed after the decimal point. The default is
-- selected from the current locale (`frac_digits',
-- `int_frac_digits', see *note General Numeric::). If the exact
-- representation needs more digits than given by the field width,
-- the displayed value is rounded. If the number of fractional
-- digits is selected to be zero, no decimal point is printed.
--
-- As a GNU extension, the `strfmon' implementation in the GNU libc
-- allows an optional `L' next as a format modifier. If this modifier
-- is given, the argument is expected to be a `long double' instead of
-- a `double' value.
--
-- Finally, the last component is a format specifier. There are three
-- specifiers defined:
--
-- `i'
-- Use the locale's rules for formatting an international
-- currency value.
--
-- `n'
-- Use the locale's rules for formatting a national currency
-- value.
--
-- `%'
-- Place a `%' in the output. There must be no flag, width
-- specifier or modifier given, only `%%' is allowed.
--
-- As for `printf', the function reads the format string from left to
-- right and uses the values passed to the function following the
-- format string. The values are expected to be either of type
-- `double' or `long double', depending on the presence of the
-- modifier `L'. The result is stored in the buffer pointed to by S.
-- At most MAXSIZE characters are stored.
--
-- The return value of the function is the number of characters
-- stored in S, including the terminating `NULL' byte. If the number
-- of characters stored would exceed MAXSIZE, the function returns -1
-- and the content of the buffer S is unspecified. In this case
-- `errno' is set to `E2BIG'.
--
-- A few examples should make clear how the function works. It is
--assumed that all the following pieces of code are executed in a program
--which uses the USA locale (`en_US'). The simplest form of the format
--is this:
--
-- strfmon (buf, 100, "@%n@%n@%n@", 123.45, -567.89, 12345.678);
--
--The output produced is
-- "@$123.45@-$567.89@$12,345.68@"
--
-- We can notice several things here. First, the widths of the output
--numbers are different. We have not specified a width in the format
--string, and so this is no wonder. Second, the third number is printed
--using thousands separators. The thousands separator for the `en_US'
--locale is a comma. The number is also rounded. .678 is rounded to .68
--since the format does not specify a precision and the default value in
--the locale is 2. Finally, note that the national currency symbol is
--printed since `%n' was used, not `i'. The next example shows how we
--can align the output.
--
-- strfmon (buf, 100, "@%=*11n@%=*11n@%=*11n@", 123.45, -567.89, 12345.678);
--
--The output this time is:
--
-- "@ $123.45@ -$567.89@ $12,345.68@"
--
-- Two things stand out. Firstly, all fields have the same width
--(eleven characters) since this is the width given in the format and
--since no number required more characters to be printed. The second
--important point is that the fill character is not used. This is
--correct since the white space was not used to achieve a precision given
--by a `#' modifier, but instead to fill to the given width. The
--difference becomes obvious if we now add a width specification.
--
-- strfmon (buf, 100, "@%=*11#5n@%=*11#5n@%=*11#5n@",
-- 123.45, -567.89, 12345.678);
--
--The output is
--
-- "@ $***123.45@-$***567.89@ $12,456.68@"
--
-- Here we can see that all the currency symbols are now aligned, and
--that the space between the currency sign and the number is filled with
--the selected fill character. Note that although the width is selected
--to be 5 and 123.45 has three digits left of the decimal point, the
--space is filled with three asterisks. This is correct since, as
--explained above, the width does not include the positions used to store
--thousands separators. One last example should explain the remaining
--functionality.
--
-- strfmon (buf, 100, "@%=0(16#5.3i@%=0(16#5.3i@%=0(16#5.3i@",
-- 123.45, -567.89, 12345.678);
--
--This rather complex format string produces the following output:
--
-- "@ USD 000123,450 @(USD 000567.890)@ USD 12,345.678 @"
--
-- The most noticeable change is the alternative way of representing
--negative numbers. In financial circles this is often done using
--parentheses, and this is what the `(' flag selected. The fill
--character is now `0'. Note that this `0' character is not regarded as
--a numeric zero, and therefore the first and second numbers are not
--printed using a thousands separator. Since we used the format
--specifier `i' instead of `n', the international form of the currency
--symbol is used. This is a four letter string, in this case `"USD "'.
--The last point is that since the precision right of the decimal point
--is selected to be three, the first and second numbers are printed with
--an extra zero at the end and the third number is printed without
--rounding.
--
--
--File: libc.info, Node: Yes-or-No Questions, Prev: Formatting Numbers, Up: Locales
--
--Yes-or-No Questions
--===================
--
-- Some non GUI programs ask a yes-or-no question. If the messages
--(especially the questions) are translated into foreign languages, be
--sure that you localize the answers too. It would be very bad habit to
--ask a question in one language and request the answer in another, often
--English.
--
-- The GNU C library contains `rpmatch' to give applications easy
--access to the corresponding locale definitions.
--
-- - Function: int rpmatch (const char *RESPONSE)
-- The function `rpmatch' checks the string in RESPONSE whether or
-- not it is a correct yes-or-no answer and if yes, which one. The
-- check uses the `YESEXPR' and `NOEXPR' data in the `LC_MESSAGES'
-- category of the currently selected locale. The return value is as
-- follows:
--
-- `1'
-- The user entered an affirmative answer.
--
-- `0'
-- The user entered a negative answer.
--
-- `-1'
-- The answer matched neither the `YESEXPR' nor the `NOEXPR'
-- regular expression.
--
-- This function is not standardized but available beside in GNU libc
-- at least also in the IBM AIX library.
--
--This function would normally be used like this:
--
-- ...
-- /* Use a safe default. */
-- _Bool doit = false;
--
-- fputs (gettext ("Do you really want to do this? "), stdout);
-- fflush (stdout);
-- /* Prepare the `getline' call. */
-- line = NULL;
-- len = 0;
-- while (getline (&line, &len, stdout) >= 0)
-- {
-- /* Check the response. */
-- int res = rpmatch (line);
-- if (res >= 0)
-- {
-- /* We got a definitive answer. */
-- if (res > 0)
-- doit = true;
-- break;
-- }
-- }
-- /* Free what `getline' allocated. */
-- free (line);
--
-- Note that the loop continues until an read error is detected or
--until a definitive (positive or negative) answer is read.
--
--
--File: libc.info, Node: Message Translation, Next: Searching and Sorting, Prev: Locales, Up: Top
--
--Message Translation
--*******************
--
-- The program's interface with the human should be designed in a way to
--ease the human the task. One of the possibilities is to use messages in
--whatever language the user prefers.
--
-- Printing messages in different languages can be implemented in
--different ways. One could add all the different languages in the
--source code and add among the variants every time a message has to be
--printed. This is certainly no good solution since extending the set of
--languages is difficult (the code must be changed) and the code itself
--can become really big with dozens of message sets.
--
-- A better solution is to keep the message sets for each language are
--kept in separate files which are loaded at runtime depending on the
--language selection of the user.
--
-- The GNU C Library provides two different sets of functions to support
--message translation. The problem is that neither of the interfaces is
--officially defined by the POSIX standard. The `catgets' family of
--functions is defined in the X/Open standard but this is derived from
--industry decisions and therefore not necessarily based on reasonable
--decisions.
--
-- As mentioned above the message catalog handling provides easy
--extendibility by using external data files which contain the message
--translations. I.e., these files contain for each of the messages used
--in the program a translation for the appropriate language. So the tasks
--of the message handling functions are
--
-- * locate the external data file with the appropriate translations.
--
-- * load the data and make it possible to address the messages
--
-- * map a given key to the translated message
--
-- The two approaches mainly differ in the implementation of this last
--step. The design decisions made for this influences the whole rest.
--
--* Menu:
--
--* Message catalogs a la X/Open:: The `catgets' family of functions.
--* The Uniforum approach:: The `gettext' family of functions.
--
--
--File: libc.info, Node: Message catalogs a la X/Open, Next: The Uniforum approach, Up: Message Translation
--
--X/Open Message Catalog Handling
--===============================
--
-- The `catgets' functions are based on the simple scheme:
--
-- Associate every message to translate in the source code with a
-- unique identifier. To retrieve a message from a catalog file
-- solely the identifier is used.
--
-- This means for the author of the program that s/he will have to make
--sure the meaning of the identifier in the program code and in the
--message catalogs are always the same.
--
-- Before a message can be translated the catalog file must be located.
--The user of the program must be able to guide the responsible function
--to find whatever catalog the user wants. This is separated from what
--the programmer had in mind.
--
-- All the types, constants and functions for the `catgets' functions
--are defined/declared in the `nl_types.h' header file.
--
--* Menu:
--
--* The catgets Functions:: The `catgets' function family.
--* The message catalog files:: Format of the message catalog files.
--* The gencat program:: How to generate message catalogs files which
-- can be used by the functions.
--* Common Usage:: How to use the `catgets' interface.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-13 glibc-2.3.2-200304020432/manual/libc.info-13
---- glibc-2.3.2/manual/libc.info-13 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-13 Thu Jan 1 01:00:00 1970
-@@ -1,938 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: The catgets Functions, Next: The message catalog files, Up: Message catalogs a la X/Open
--
--The `catgets' function family
-------------------------------
--
-- - Function: nl_catd catopen (const char *CAT_NAME, int FLAG)
-- The `catgets' function tries to locate the message data file names
-- CAT_NAME and loads it when found. The return value is of an
-- opaque type and can be used in calls to the other functions to
-- refer to this loaded catalog.
--
-- The return value is `(nl_catd) -1' in case the function failed and
-- no catalog was loaded. The global variable ERRNO contains a code
-- for the error causing the failure. But even if the function call
-- succeeded this does not mean that all messages can be translated.
--
-- Locating the catalog file must happen in a way which lets the user
-- of the program influence the decision. It is up to the user to
-- decide about the language to use and sometimes it is useful to use
-- alternate catalog files. All this can be specified by the user by
-- setting some environment variables.
--
-- The first problem is to find out where all the message catalogs are
-- stored. Every program could have its own place to keep all the
-- different files but usually the catalog files are grouped by
-- languages and the catalogs for all programs are kept in the same
-- place.
--
-- To tell the `catopen' function where the catalog for the program
-- can be found the user can set the environment variable `NLSPATH' to
-- a value which describes her/his choice. Since this value must be
-- usable for different languages and locales it cannot be a simple
-- string. Instead it is a format string (similar to `printf''s).
-- An example is
--
-- /usr/share/locale/%L/%N:/usr/share/locale/%L/LC_MESSAGES/%N
--
-- First one can see that more than one directory can be specified
-- (with the usual syntax of separating them by colons). The next
-- things to observe are the format string, `%L' and `%N' in this
-- case. The `catopen' function knows about several of them and the
-- replacement for all of them is of course different.
--
-- `%N'
-- This format element is substituted with the name of the
-- catalog file. This is the value of the CAT_NAME argument
-- given to `catgets'.
--
-- `%L'
-- This format element is substituted with the name of the
-- currently selected locale for translating messages. How this
-- is determined is explained below.
--
-- `%l'
-- (This is the lowercase ell.) This format element is
-- substituted with the language element of the locale name.
-- The string describing the selected locale is expected to have
-- the form `LANG[_TERR[.CODESET]]' and this format uses the
-- first part LANG.
--
-- `%t'
-- This format element is substituted by the territory part TERR
-- of the name of the currently selected locale. See the
-- explanation of the format above.
--
-- `%c'
-- This format element is substituted by the codeset part
-- CODESET of the name of the currently selected locale. See
-- the explanation of the format above.
--
-- `%%'
-- Since `%' is used in a meta character there must be a way to
-- express the `%' character in the result itself. Using `%%'
-- does this just like it works for `printf'.
--
-- Using `NLSPATH' allows arbitrary directories to be searched for
-- message catalogs while still allowing different languages to be
-- used. If the `NLSPATH' environment variable is not set, the
-- default value is
--
-- PREFIX/share/locale/%L/%N:PREFIX/share/locale/%L/LC_MESSAGES/%N
--
-- where PREFIX is given to `configure' while installing the GNU C
-- Library (this value is in many cases `/usr' or the empty string).
--
-- The remaining problem is to decide which must be used. The value
-- decides about the substitution of the format elements mentioned
-- above. First of all the user can specify a path in the message
-- catalog name (i.e., the name contains a slash character). In this
-- situation the `NLSPATH' environment variable is not used. The
-- catalog must exist as specified in the program, perhaps relative
-- to the current working directory. This situation in not desirable
-- and catalogs names never should be written this way. Beside this,
-- this behavior is not portable to all other platforms providing the
-- `catgets' interface.
--
-- Otherwise the values of environment variables from the standard
-- environment are examined (*note Standard Environment::). Which
-- variables are examined is decided by the FLAG parameter of
-- `catopen'. If the value is `NL_CAT_LOCALE' (which is defined in
-- `nl_types.h') then the `catopen' function use the name of the
-- locale currently selected for the `LC_MESSAGES' category.
--
-- If FLAG is zero the `LANG' environment variable is examined. This
-- is a left-over from the early days where the concept of the locales
-- had not even reached the level of POSIX locales.
--
-- The environment variable and the locale name should have a value
-- of the form `LANG[_TERR[.CODESET]]' as explained above. If no
-- environment variable is set the `"C"' locale is used which
-- prevents any translation.
--
-- The return value of the function is in any case a valid string.
-- Either it is a translation from a message catalog or it is the
-- same as the STRING parameter. So a piece of code to decide
-- whether a translation actually happened must look like this:
--
-- {
-- char *trans = catgets (desc, set, msg, input_string);
-- if (trans == input_string)
-- {
-- /* Something went wrong. */
-- }
-- }
--
-- When an error occurred the global variable ERRNO is set to
--
-- EBADF
-- The catalog does not exist.
--
-- ENOMSG
-- The set/message tuple does not name an existing element in the
-- message catalog.
--
-- While it sometimes can be useful to test for errors programs
-- normally will avoid any test. If the translation is not available
-- it is no big problem if the original, untranslated message is
-- printed. Either the user understands this as well or s/he will
-- look for the reason why the messages are not translated.
--
-- Please note that the currently selected locale does not depend on a
--call to the `setlocale' function. It is not necessary that the locale
--data files for this locale exist and calling `setlocale' succeeds. The
--`catopen' function directly reads the values of the environment
--variables.
--
-- - Function: char * catgets (nl_catd CATALOG_DESC, int SET, int
-- MESSAGE, const char *STRING)
-- The function `catgets' has to be used to access the massage catalog
-- previously opened using the `catopen' function. The CATALOG_DESC
-- parameter must be a value previously returned by `catopen'.
--
-- The next two parameters, SET and MESSAGE, reflect the internal
-- organization of the message catalog files. This will be explained
-- in detail below. For now it is interesting to know that a catalog
-- can consists of several set and the messages in each thread are
-- individually numbered using numbers. Neither the set number nor
-- the message number must be consecutive. They can be arbitrarily
-- chosen. But each message (unless equal to another one) must have
-- its own unique pair of set and message number.
--
-- Since it is not guaranteed that the message catalog for the
-- language selected by the user exists the last parameter STRING
-- helps to handle this case gracefully. If no matching string can
-- be found STRING is returned. This means for the programmer that
--
-- * the STRING parameters should contain reasonable text (this
-- also helps to understand the program seems otherwise there
-- would be no hint on the string which is expected to be
-- returned.
--
-- * all STRING arguments should be written in the same language.
--
-- It is somewhat uncomfortable to write a program using the `catgets'
--functions if no supporting functionality is available. Since each
--set/message number tuple must be unique the programmer must keep lists
--of the messages at the same time the code is written. And the work
--between several people working on the same project must be coordinated.
--We will see some how these problems can be relaxed a bit (*note Common
--Usage::).
--
-- - Function: int catclose (nl_catd CATALOG_DESC)
-- The `catclose' function can be used to free the resources
-- associated with a message catalog which previously was opened by a
-- call to `catopen'. If the resources can be successfully freed the
-- function returns `0'. Otherwise it return `-1' and the global
-- variable ERRNO is set. Errors can occur if the catalog descriptor
-- CATALOG_DESC is not valid in which case ERRNO is set to `EBADF'.
--
--
--File: libc.info, Node: The message catalog files, Next: The gencat program, Prev: The catgets Functions, Up: Message catalogs a la X/Open
--
--Format of the message catalog files
-------------------------------------
--
-- The only reasonable way the translate all the messages of a function
--and store the result in a message catalog file which can be read by the
--`catopen' function is to write all the message text to the translator
--and let her/him translate them all. I.e., we must have a file with
--entries which associate the set/message tuple with a specific
--translation. This file format is specified in the X/Open standard and
--is as follows:
--
-- * Lines containing only whitespace characters or empty lines are
-- ignored.
--
-- * Lines which contain as the first non-whitespace character a `$'
-- followed by a whitespace character are comment and are also
-- ignored.
--
-- * If a line contains as the first non-whitespace characters the
-- sequence `$set' followed by a whitespace character an additional
-- argument is required to follow. This argument can either be:
--
-- - a number. In this case the value of this number determines
-- the set to which the following messages are added.
--
-- - an identifier consisting of alphanumeric characters plus the
-- underscore character. In this case the set get automatically
-- a number assigned. This value is one added to the largest
-- set number which so far appeared.
--
-- How to use the symbolic names is explained in section *Note
-- Common Usage::.
--
-- It is an error if a symbol name appears more than once. All
-- following messages are placed in a set with this number.
--
-- * If a line contains as the first non-whitespace characters the
-- sequence `$delset' followed by a whitespace character an
-- additional argument is required to follow. This argument can
-- either be:
--
-- - a number. In this case the value of this number determines
-- the set which will be deleted.
--
-- - an identifier consisting of alphanumeric characters plus the
-- underscore character. This symbolic identifier must match a
-- name for a set which previously was defined. It is an error
-- if the name is unknown.
--
-- In both cases all messages in the specified set will be removed.
-- They will not appear in the output. But if this set is later
-- again selected with a `$set' command again messages could be added
-- and these messages will appear in the output.
--
-- * If a line contains after leading whitespaces the sequence
-- `$quote', the quoting character used for this input file is
-- changed to the first non-whitespace character following the
-- `$quote'. If no non-whitespace character is present before the
-- line ends quoting is disable.
--
-- By default no quoting character is used. In this mode strings are
-- terminated with the first unescaped line break. If there is a
-- `$quote' sequence present newline need not be escaped. Instead a
-- string is terminated with the first unescaped appearance of the
-- quote character.
--
-- A common usage of this feature would be to set the quote character
-- to `"'. Then any appearance of the `"' in the strings must be
-- escaped using the backslash (i.e., `\"' must be written).
--
-- * Any other line must start with a number or an alphanumeric
-- identifier (with the underscore character included). The
-- following characters (starting after the first whitespace
-- character) will form the string which gets associated with the
-- currently selected set and the message number represented by the
-- number and identifier respectively.
--
-- If the start of the line is a number the message number is
-- obvious. It is an error if the same message number already
-- appeared for this set.
--
-- If the leading token was an identifier the message number gets
-- automatically assigned. The value is the current maximum messages
-- number for this set plus one. It is an error if the identifier was
-- already used for a message in this set. It is OK to reuse the
-- identifier for a message in another thread. How to use the
-- symbolic identifiers will be explained below (*note Common
-- Usage::). There is one limitation with the identifier: it must
-- not be `Set'. The reason will be explained below.
--
-- The text of the messages can contain escape characters. The usual
-- bunch of characters known from the ISO C language are recognized
-- (`\n', `\t', `\v', `\b', `\r', `\f', `\\', and `\NNN', where NNN
-- is the octal coding of a character code).
--
-- *Important:* The handling of identifiers instead of numbers for the
--set and messages is a GNU extension. Systems strictly following the
--X/Open specification do not have this feature. An example for a message
--catalog file is this:
--
-- $ This is a leading comment.
-- $quote "
--
-- $set SetOne
-- 1 Message with ID 1.
-- two " Message with ID \"two\", which gets the value 2 assigned"
--
-- $set SetTwo
-- $ Since the last set got the number 1 assigned this set has number 2.
-- 4000 "The numbers can be arbitrary, they need not start at one."
--
-- This small example shows various aspects:
-- * Lines 1 and 9 are comments since they start with `$' followed by a
-- whitespace.
--
-- * The quoting character is set to `"'. Otherwise the quotes in the
-- message definition would have to be left away and in this case the
-- message with the identifier `two' would loose its leading
-- whitespace.
--
-- * Mixing numbered messages with message having symbolic names is no
-- problem and the numbering happens automatically.
--
-- While this file format is pretty easy it is not the best possible for
--use in a running program. The `catopen' function would have to parser
--the file and handle syntactic errors gracefully. This is not so easy
--and the whole process is pretty slow. Therefore the `catgets'
--functions expect the data in another more compact and ready-to-use file
--format. There is a special program `gencat' which is explained in
--detail in the next section.
--
-- Files in this other format are not human readable. To be easy to
--use by programs it is a binary file. But the format is byte order
--independent so translation files can be shared by systems of arbitrary
--architecture (as long as they use the GNU C Library).
--
-- Details about the binary file format are not important to know since
--these files are always created by the `gencat' program. The sources of
--the GNU C Library also provide the sources for the `gencat' program and
--so the interested reader can look through these source files to learn
--about the file format.
--
--
--File: libc.info, Node: The gencat program, Next: Common Usage, Prev: The message catalog files, Up: Message catalogs a la X/Open
--
--Generate Message Catalogs files
---------------------------------
--
-- The `gencat' program is specified in the X/Open standard and the GNU
--implementation follows this specification and so processes all
--correctly formed input files. Additionally some extension are
--implemented which help to work in a more reasonable way with the
--`catgets' functions.
--
-- The `gencat' program can be invoked in two ways:
--
-- `gencat [OPTION]... [OUTPUT-FILE [INPUT-FILE]...]`
--
-- This is the interface defined in the X/Open standard. If no
--INPUT-FILE parameter is given input will be read from standard input.
--Multiple input files will be read as if they are concatenated. If
--OUTPUT-FILE is also missing, the output will be written to standard
--output. To provide the interface one is used to from other programs a
--second interface is provided.
--
-- `gencat [OPTION]... -o OUTPUT-FILE [INPUT-FILE]...`
--
-- The option `-o' is used to specify the output file and all file
--arguments are used as input files.
--
-- Beside this one can use `-' or `/dev/stdin' for INPUT-FILE to denote
--the standard input. Corresponding one can use `-' and `/dev/stdout'
--for OUTPUT-FILE to denote standard output. Using `-' as a file name is
--allowed in X/Open while using the device names is a GNU extension.
--
-- The `gencat' program works by concatenating all input files and then
--*merge* the resulting collection of message sets with a possibly
--existing output file. This is done by removing all messages with
--set/message number tuples matching any of the generated messages from
--the output file and then adding all the new messages. To regenerate a
--catalog file while ignoring the old contents therefore requires to
--remove the output file if it exists. If the output is written to
--standard output no merging takes place.
--
--The following table shows the options understood by the `gencat'
--program. The X/Open standard does not specify any option for the
--program so all of these are GNU extensions.
--
--`-V'
--`--version'
-- Print the version information and exit.
--
--`-h'
--`--help'
-- Print a usage message listing all available options, then exit
-- successfully.
--
--`--new'
-- Do never merge the new messages from the input files with the old
-- content of the output files. The old content of the output file
-- is discarded.
--
--`-H'
--`--header=name'
-- This option is used to emit the symbolic names given to sets and
-- messages in the input files for use in the program. Details about
-- how to use this are given in the next section. The NAME parameter
-- to this option specifies the name of the output file. It will
-- contain a number of C preprocessor `#define's to associate a name
-- with a number.
--
-- Please note that the generated file only contains the symbols from
-- the input files. If the output is merged with the previous
-- content of the output file the possibly existing symbols from the
-- file(s) which generated the old output files are not in the
-- generated header file.
--
--
--File: libc.info, Node: Common Usage, Prev: The gencat program, Up: Message catalogs a la X/Open
--
--How to use the `catgets' interface
------------------------------------
--
-- The `catgets' functions can be used in two different ways. By
--following slavishly the X/Open specs and not relying on the extension
--and by using the GNU extensions. We will take a look at the former
--method first to understand the benefits of extensions.
--
--Not using symbolic names
--........................
--
-- Since the X/Open format of the message catalog files does not allow
--symbol names we have to work with numbers all the time. When we start
--writing a program we have to replace all appearances of translatable
--strings with something like
--
-- catgets (catdesc, set, msg, "string")
--
--CATGETS is retrieved from a call to `catopen' which is normally done
--once at the program start. The `"string"' is the string we want to
--translate. The problems start with the set and message numbers.
--
-- In a bigger program several programmers usually work at the same
--time on the program and so coordinating the number allocation is
--crucial. Though no two different strings must be indexed by the same
--tuple of numbers it is highly desirable to reuse the numbers for equal
--strings with equal translations (please note that there might be
--strings which are equal in one language but have different translations
--due to difference contexts).
--
-- The allocation process can be relaxed a bit by different set numbers
--for different parts of the program. So the number of developers who
--have to coordinate the allocation can be reduced. But still lists must
--be keep track of the allocation and errors can easily happen. These
--errors cannot be discovered by the compiler or the `catgets' functions.
--Only the user of the program might see wrong messages printed. In the
--worst cases the messages are so irritating that they cannot be
--recognized as wrong. Think about the translations for `"true"' and
--`"false"' being exchanged. This could result in a disaster.
--
--Using symbolic names
--....................
--
-- The problems mentioned in the last section derive from the fact that:
--
-- 1. the numbers are allocated once and due to the possibly frequent
-- use of them it is difficult to change a number later.
--
-- 2. the numbers do not allow to guess anything about the string and
-- therefore collisions can easily happen.
--
-- By constantly using symbolic names and by providing a method which
--maps the string content to a symbolic name (however this will happen)
--one can prevent both problems above. The cost of this is that the
--programmer has to write a complete message catalog file while s/he is
--writing the program itself.
--
-- This is necessary since the symbolic names must be mapped to numbers
--before the program sources can be compiled. In the last section it was
--described how to generate a header containing the mapping of the names.
--E.g., for the example message file given in the last section we could
--call the `gencat' program as follow (assume `ex.msg' contains the
--sources).
--
-- gencat -H ex.h -o ex.cat ex.msg
--
--This generates a header file with the following content:
--
-- #define SetTwoSet 0x2 /* ex.msg:8 */
--
-- #define SetOneSet 0x1 /* ex.msg:4 */
-- #define SetOnetwo 0x2 /* ex.msg:6 */
--
-- As can be seen the various symbols given in the source file are
--mangled to generate unique identifiers and these identifiers get numbers
--assigned. Reading the source file and knowing about the rules will
--allow to predict the content of the header file (it is deterministic)
--but this is not necessary. The `gencat' program can take care for
--everything. All the programmer has to do is to put the generated header
--file in the dependency list of the source files of her/his project and
--to add a rules to regenerate the header of any of the input files
--change.
--
-- One word about the symbol mangling. Every symbol consists of two
--parts: the name of the message set plus the name of the message or the
--special string `Set'. So `SetOnetwo' means this macro can be used to
--access the translation with identifier `two' in the message set
--`SetOne'.
--
-- The other names denote the names of the message sets. The special
--string `Set' is used in the place of the message identifier.
--
-- If in the code the second string of the set `SetOne' is used the C
--code should look like this:
--
-- catgets (catdesc, SetOneSet, SetOnetwo,
-- " Message with ID \"two\", which gets the value 2 assigned")
--
-- Writing the function this way will allow to change the message number
--and even the set number without requiring any change in the C source
--code. (The text of the string is normally not the same; this is only
--for this example.)
--
--How does to this allow to develop
--.................................
--
-- To illustrate the usual way to work with the symbolic version numbers
--here is a little example. Assume we want to write the very complex and
--famous greeting program. We start by writing the code as usual:
--
-- #include <stdio.h>
-- int
-- main (void)
-- {
-- printf ("Hello, world!\n");
-- return 0;
-- }
--
-- Now we want to internationalize the message and therefore replace the
--message with whatever the user wants.
--
-- #include <nl_types.h>
-- #include <stdio.h>
-- #include "msgnrs.h"
-- int
-- main (void)
-- {
-- nl_catd catdesc = catopen ("hello.cat", NL_CAT_LOCALE);
-- printf (catgets (catdesc, SetMainSet, SetMainHello,
-- "Hello, world!\n"));
-- catclose (catdesc);
-- return 0;
-- }
--
-- We see how the catalog object is opened and the returned descriptor
--used in the other function calls. It is not really necessary to check
--for failure of any of the functions since even in these situations the
--functions will behave reasonable. They simply will be return a
--translation.
--
-- What remains unspecified here are the constants `SetMainSet' and
--`SetMainHello'. These are the symbolic names describing the message.
--To get the actual definitions which match the information in the
--catalog file we have to create the message catalog source file and
--process it using the `gencat' program.
--
-- $ Messages for the famous greeting program.
-- $quote "
--
-- $set Main
-- Hello "Hallo, Welt!\n"
--
-- Now we can start building the program (assume the message catalog
--source file is named `hello.msg' and the program source file `hello.c'):
--
-- % gencat -H msgnrs.h -o hello.cat hello.msg
-- % cat msgnrs.h
-- #define MainSet 0x1 /* hello.msg:4 */
-- #define MainHello 0x1 /* hello.msg:5 */
-- % gcc -o hello hello.c -I.
-- % cp hello.cat /usr/share/locale/de/LC_MESSAGES
-- % echo $LC_ALL
-- de
-- % ./hello
-- Hallo, Welt!
-- %
--
-- The call of the `gencat' program creates the missing header file
--`msgnrs.h' as well as the message catalog binary. The former is used
--in the compilation of `hello.c' while the later is placed in a
--directory in which the `catopen' function will try to locate it.
--Please check the `LC_ALL' environment variable and the default path for
--`catopen' presented in the description above.
--
--
--File: libc.info, Node: The Uniforum approach, Prev: Message catalogs a la X/Open, Up: Message Translation
--
--The Uniforum approach to Message Translation
--============================================
--
-- Sun Microsystems tried to standardize a different approach to message
--translation in the Uniforum group. There never was a real standard
--defined but still the interface was used in Sun's operation systems.
--Since this approach fits better in the development process of free
--software it is also used throughout the GNU project and the GNU
--`gettext' package provides support for this outside the GNU C Library.
--
-- The code of the `libintl' from GNU `gettext' is the same as the code
--in the GNU C Library. So the documentation in the GNU `gettext' manual
--is also valid for the functionality here. The following text will
--describe the library functions in detail. But the numerous helper
--programs are not described in this manual. Instead people should read
--the GNU `gettext' manual (*note GNU gettext utilities: (gettext)Top.).
--We will only give a short overview.
--
-- Though the `catgets' functions are available by default on more
--systems the `gettext' interface is at least as portable as the former.
--The GNU `gettext' package can be used wherever the functions are not
--available.
--
--* Menu:
--
--* Message catalogs with gettext:: The `gettext' family of functions.
--* Helper programs for gettext:: Programs to handle message catalogs
-- for `gettext'.
--
--
--File: libc.info, Node: Message catalogs with gettext, Next: Helper programs for gettext, Up: The Uniforum approach
--
--The `gettext' family of functions
-----------------------------------
--
-- The paradigms underlying the `gettext' approach to message
--translations is different from that of the `catgets' functions the
--basic functionally is equivalent. There are functions of the following
--categories:
--
--* Menu:
--
--* Translation with gettext:: What has to be done to translate a message.
--* Locating gettext catalog:: How to determine which catalog to be used.
--* Advanced gettext functions:: Additional functions for more complicated
-- situations.
--* Charset conversion in gettext:: How to specify the output character set
-- `gettext' uses.
--* GUI program problems:: How to use `gettext' in GUI programs.
--* Using gettextized software:: The possibilities of the user to influence
-- the way `gettext' works.
--
--
--File: libc.info, Node: Translation with gettext, Next: Locating gettext catalog, Up: Message catalogs with gettext
--
--What has to be done to translate a message?
--...........................................
--
-- The `gettext' functions have a very simple interface. The most
--basic function just takes the string which shall be translated as the
--argument and it returns the translation. This is fundamentally
--different from the `catgets' approach where an extra key is necessary
--and the original string is only used for the error case.
--
-- If the string which has to be translated is the only argument this of
--course means the string itself is the key. I.e., the translation will
--be selected based on the original string. The message catalogs must
--therefore contain the original strings plus one translation for any such
--string. The task of the `gettext' function is it to compare the
--argument string with the available strings in the catalog and return the
--appropriate translation. Of course this process is optimized so that
--this process is not more expensive than an access using an atomic key
--like in `catgets'.
--
-- The `gettext' approach has some advantages but also some
--disadvantages. Please see the GNU `gettext' manual for a detailed
--discussion of the pros and cons.
--
-- All the definitions and declarations for `gettext' can be found in
--the `libintl.h' header file. On systems where these functions are not
--part of the C library they can be found in a separate library named
--`libintl.a' (or accordingly different for shared libraries).
--
-- - Function: char * gettext (const char *MSGID)
-- The `gettext' function searches the currently selected message
-- catalogs for a string which is equal to MSGID. If there is such a
-- string available it is returned. Otherwise the argument string
-- MSGID is returned.
--
-- Please note that all though the return value is `char *' the
-- returned string must not be changed. This broken type results
-- from the history of the function and does not reflect the way the
-- function should be used.
--
-- Please note that above we wrote "message catalogs" (plural). This
-- is a specialty of the GNU implementation of these functions and we
-- will say more about this when we talk about the ways message
-- catalogs are selected (*note Locating gettext catalog::).
--
-- The `gettext' function does not modify the value of the global
-- ERRNO variable. This is necessary to make it possible to write
-- something like
--
-- printf (gettext ("Operation failed: %m\n"));
--
-- Here the ERRNO value is used in the `printf' function while
-- processing the `%m' format element and if the `gettext' function
-- would change this value (it is called before `printf' is called)
-- we would get a wrong message.
--
-- So there is no easy way to detect a missing message catalog beside
-- comparing the argument string with the result. But it is normally
-- the task of the user to react on missing catalogs. The program
-- cannot guess when a message catalog is really necessary since for
-- a user who speaks the language the program was developed in does
-- not need any translation.
--
-- The remaining two functions to access the message catalog add some
--functionality to select a message catalog which is not the default one.
--This is important if parts of the program are developed independently.
--Every part can have its own message catalog and all of them can be used
--at the same time. The C library itself is an example: internally it
--uses the `gettext' functions but since it must not depend on a
--currently selected default message catalog it must specify all ambiguous
--information.
--
-- - Function: char * dgettext (const char *DOMAINNAME, const char *MSGID)
-- The `dgettext' functions acts just like the `gettext' function.
-- It only takes an additional first argument DOMAINNAME which guides
-- the selection of the message catalogs which are searched for the
-- translation. If the DOMAINNAME parameter is the null pointer the
-- `dgettext' function is exactly equivalent to `gettext' since the
-- default value for the domain name is used.
--
-- As for `gettext' the return value type is `char *' which is an
-- anachronism. The returned string must never be modified.
--
-- - Function: char * dcgettext (const char *DOMAINNAME, const char
-- *MSGID, int CATEGORY)
-- The `dcgettext' adds another argument to those which `dgettext'
-- takes. This argument CATEGORY specifies the last piece of
-- information needed to localize the message catalog. I.e., the
-- domain name and the locale category exactly specify which message
-- catalog has to be used (relative to a given directory, see below).
--
-- The `dgettext' function can be expressed in terms of `dcgettext'
-- by using
--
-- dcgettext (domain, string, LC_MESSAGES)
--
-- instead of
--
-- dgettext (domain, string)
--
-- This also shows which values are expected for the third parameter.
-- One has to use the available selectors for the categories
-- available in `locale.h'. Normally the available values are
-- `LC_CTYPE', `LC_COLLATE', `LC_MESSAGES', `LC_MONETARY',
-- `LC_NUMERIC', and `LC_TIME'. Please note that `LC_ALL' must not
-- be used and even though the names might suggest this, there is no
-- relation to the environments variables of this name.
--
-- The `dcgettext' function is only implemented for compatibility with
-- other systems which have `gettext' functions. There is not really
-- any situation where it is necessary (or useful) to use a different
-- value but `LC_MESSAGES' in for the CATEGORY parameter. We are
-- dealing with messages here and any other choice can only be
-- irritating.
--
-- As for `gettext' the return value type is `char *' which is an
-- anachronism. The returned string must never be modified.
--
-- When using the three functions above in a program it is a frequent
--case that the MSGID argument is a constant string. So it is worth to
--optimize this case. Thinking shortly about this one will realize that
--as long as no new message catalog is loaded the translation of a message
--will not change. This optimization is actually implemented by the
--`gettext', `dgettext' and `dcgettext' functions.
--
--
--File: libc.info, Node: Locating gettext catalog, Next: Advanced gettext functions, Prev: Translation with gettext, Up: Message catalogs with gettext
--
--How to determine which catalog to be used
--.........................................
--
-- The functions to retrieve the translations for a given message have a
--remarkable simple interface. But to provide the user of the program
--still the opportunity to select exactly the translation s/he wants and
--also to provide the programmer the possibility to influence the way to
--locate the search for catalogs files there is a quite complicated
--underlying mechanism which controls all this. The code is complicated
--the use is easy.
--
-- Basically we have two different tasks to perform which can also be
--performed by the `catgets' functions:
--
-- 1. Locate the set of message catalogs. There are a number of files
-- for different languages and which all belong to the package.
-- Usually they are all stored in the filesystem below a certain
-- directory.
--
-- There can be arbitrary many packages installed and they can follow
-- different guidelines for the placement of their files.
--
-- 2. Relative to the location specified by the package the actual
-- translation files must be searched, based on the wishes of the
-- user. I.e., for each language the user selects the program should
-- be able to locate the appropriate file.
--
-- This is the functionality required by the specifications for
--`gettext' and this is also what the `catgets' functions are able to do.
--But there are some problems unresolved:
--
-- * The language to be used can be specified in several different ways.
-- There is no generally accepted standard for this and the user
-- always expects the program understand what s/he means. E.g., to
-- select the German translation one could write `de', `german', or
-- `deutsch' and the program should always react the same.
--
-- * Sometimes the specification of the user is too detailed. If s/he,
-- e.g., specifies `de_DE.ISO-8859-1' which means German, spoken in
-- Germany, coded using the ISO 8859-1 character set there is the
-- possibility that a message catalog matching this exactly is not
-- available. But there could be a catalog matching `de' and if the
-- character set used on the machine is always ISO 8859-1 there is no
-- reason why this later message catalog should not be used. (We
-- call this "message inheritance".)
--
-- * If a catalog for a wanted language is not available it is not
-- always the second best choice to fall back on the language of the
-- developer and simply not translate any message. Instead a user
-- might be better able to read the messages in another language and
-- so the user of the program should be able to define an precedence
-- order of languages.
--
-- We can divide the configuration actions in two parts: the one is
--performed by the programmer, the other by the user. We will start with
--the functions the programmer can use since the user configuration will
--be based on this.
--
-- As the functions described in the last sections already mention
--separate sets of messages can be selected by a "domain name". This is a
--simple string which should be unique for each program part with uses a
--separate domain. It is possible to use in one program arbitrary many
--domains at the same time. E.g., the GNU C Library itself uses a domain
--named `libc' while the program using the C Library could use a domain
--named `foo'. The important point is that at any time exactly one
--domain is active. This is controlled with the following function.
--
-- - Function: char * textdomain (const char *DOMAINNAME)
-- The `textdomain' function sets the default domain, which is used in
-- all future `gettext' calls, to DOMAINNAME. Please note that
-- `dgettext' and `dcgettext' calls are not influenced if the
-- DOMAINNAME parameter of these functions is not the null pointer.
--
-- Before the first call to `textdomain' the default domain is
-- `messages'. This is the name specified in the specification of
-- the `gettext' API. This name is as good as any other name. No
-- program should ever really use a domain with this name since this
-- can only lead to problems.
--
-- The function returns the value which is from now on taken as the
-- default domain. If the system went out of memory the returned
-- value is `NULL' and the global variable ERRNO is set to `ENOMEM'.
-- Despite the return value type being `char *' the return string must
-- not be changed. It is allocated internally by the `textdomain'
-- function.
--
-- If the DOMAINNAME parameter is the null pointer no new default
-- domain is set. Instead the currently selected default domain is
-- returned.
--
-- If the DOMAINNAME parameter is the empty string the default domain
-- is reset to its initial value, the domain with the name `messages'.
-- This possibility is questionable to use since the domain `messages'
-- really never should be used.
--
-- - Function: char * bindtextdomain (const char *DOMAINNAME, const char
-- *DIRNAME)
-- The `bindtextdomain' function can be used to specify the directory
-- which contains the message catalogs for domain DOMAINNAME for the
-- different languages. To be correct, this is the directory where
-- the hierarchy of directories is expected. Details are explained
-- below.
--
-- For the programmer it is important to note that the translations
-- which come with the program have be placed in a directory
-- hierarchy starting at, say, `/foo/bar'. Then the program should
-- make a `bindtextdomain' call to bind the domain for the current
-- program to this directory. So it is made sure the catalogs are
-- found. A correctly running program does not depend on the user
-- setting an environment variable.
--
-- The `bindtextdomain' function can be used several times and if the
-- DOMAINNAME argument is different the previously bound domains will
-- not be overwritten.
--
-- If the program which wish to use `bindtextdomain' at some point of
-- time use the `chdir' function to change the current working
-- directory it is important that the DIRNAME strings ought to be an
-- absolute pathname. Otherwise the addressed directory might vary
-- with the time.
--
-- If the DIRNAME parameter is the null pointer `bindtextdomain'
-- returns the currently selected directory for the domain with the
-- name DOMAINNAME.
--
-- The `bindtextdomain' function returns a pointer to a string
-- containing the name of the selected directory name. The string is
-- allocated internally in the function and must not be changed by the
-- user. If the system went out of core during the execution of
-- `bindtextdomain' the return value is `NULL' and the global
-- variable ERRNO is set accordingly.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-14 glibc-2.3.2-200304020432/manual/libc.info-14
---- glibc-2.3.2/manual/libc.info-14 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-14 Thu Jan 1 01:00:00 1970
-@@ -1,1159 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Advanced gettext functions, Next: Charset conversion in gettext, Prev: Locating gettext catalog, Up: Message catalogs with gettext
--
--Additional functions for more complicated situations
--....................................................
--
-- The functions of the `gettext' family described so far (and all the
--`catgets' functions as well) have one problem in the real world which
--have been neglected completely in all existing approaches. What is
--meant here is the handling of plural forms.
--
-- Looking through Unix source code before the time anybody thought
--about internationalization (and, sadly, even afterwards) one can often
--find code similar to the following:
--
-- printf ("%d file%s deleted", n, n == 1 ? "" : "s");
--
--After the first complaints from people internationalizing the code
--people either completely avoided formulations like this or used strings
--like `"file(s)"'. Both look unnatural and should be avoided. First
--tries to solve the problem correctly looked like this:
--
-- if (n == 1)
-- printf ("%d file deleted", n);
-- else
-- printf ("%d files deleted", n);
--
-- But this does not solve the problem. It helps languages where the
--plural form of a noun is not simply constructed by adding an `s' but
--that is all. Once again people fell into the trap of believing the
--rules their language is using are universal. But the handling of plural
--forms differs widely between the language families. There are two
--things we can differ between (and even inside language families);
--
-- * The form how plural forms are build differs. This is a problem
-- with language which have many irregularities. German, for
-- instance, is a drastic case. Though English and German are part
-- of the same language family (Germanic), the almost regular forming
-- of plural noun forms (appending an `s') is hardly found in German.
--
-- * The number of plural forms differ. This is somewhat surprising for
-- those who only have experiences with Romanic and Germanic languages
-- since here the number is the same (there are two).
--
-- But other language families have only one form or many forms. More
-- information on this in an extra section.
--
-- The consequence of this is that application writers should not try to
--solve the problem in their code. This would be localization since it is
--only usable for certain, hardcoded language environments. Instead the
--extended `gettext' interface should be used.
--
-- These extra functions are taking instead of the one key string two
--strings and an numerical argument. The idea behind this is that using
--the numerical argument and the first string as a key, the implementation
--can select using rules specified by the translator the right plural
--form. The two string arguments then will be used to provide a return
--value in case no message catalog is found (similar to the normal
--`gettext' behavior). In this case the rules for Germanic language is
--used and it is assumed that the first string argument is the singular
--form, the second the plural form.
--
-- This has the consequence that programs without language catalogs can
--display the correct strings only if the program itself is written using
--a Germanic language. This is a limitation but since the GNU C library
--(as well as the GNU `gettext' package) are written as part of the GNU
--package and the coding standards for the GNU project require program
--being written in English, this solution nevertheless fulfills its
--purpose.
--
-- - Function: char * ngettext (const char *MSGID1, const char *MSGID2,
-- unsigned long int N)
-- The `ngettext' function is similar to the `gettext' function as it
-- finds the message catalogs in the same way. But it takes two
-- extra arguments. The MSGID1 parameter must contain the singular
-- form of the string to be converted. It is also used as the key
-- for the search in the catalog. The MSGID2 parameter is the plural
-- form. The parameter N is used to determine the plural form. If no
-- message catalog is found MSGID1 is returned if `n == 1', otherwise
-- `msgid2'.
--
-- An example for the us of this function is:
--
-- printf (ngettext ("%d file removed", "%d files removed", n), n);
--
-- Please note that the numeric value N has to be passed to the
-- `printf' function as well. It is not sufficient to pass it only to
-- `ngettext'.
--
-- - Function: char * dngettext (const char *DOMAIN, const char *MSGID1,
-- const char *MSGID2, unsigned long int N)
-- The `dngettext' is similar to the `dgettext' function in the way
-- the message catalog is selected. The difference is that it takes
-- two extra parameter to provide the correct plural form. These two
-- parameters are handled in the same way `ngettext' handles them.
--
-- - Function: char * dcngettext (const char *DOMAIN, const char *MSGID1,
-- const char *MSGID2, unsigned long int N, int CATEGORY)
-- The `dcngettext' is similar to the `dcgettext' function in the way
-- the message catalog is selected. The difference is that it takes
-- two extra parameter to provide the correct plural form. These two
-- parameters are handled in the same way `ngettext' handles them.
--
--The problem of plural forms
--...........................
--
-- A description of the problem can be found at the beginning of the
--last section. Now there is the question how to solve it. Without the
--input of linguists (which was not available) it was not possible to
--determine whether there are only a few different forms in which plural
--forms are formed or whether the number can increase with every new
--supported language.
--
-- Therefore the solution implemented is to allow the translator to
--specify the rules of how to select the plural form. Since the formula
--varies with every language this is the only viable solution except for
--hardcoding the information in the code (which still would require the
--possibility of extensions to not prevent the use of new languages). The
--details are explained in the GNU `gettext' manual. Here only a a bit
--of information is provided.
--
-- The information about the plural form selection has to be stored in
--the header entry (the one with the empty (`msgid' string). It looks
--like this:
--
-- Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;
--
-- The `nplurals' value must be a decimal number which specifies how
--many different plural forms exist for this language. The string
--following `plural' is an expression which is using the C language
--syntax. Exceptions are that no negative number are allowed, numbers
--must be decimal, and the only variable allowed is `n'. This expression
--will be evaluated whenever one of the functions `ngettext',
--`dngettext', or `dcngettext' is called. The numeric value passed to
--these functions is then substituted for all uses of the variable `n' in
--the expression. The resulting value then must be greater or equal to
--zero and smaller than the value given as the value of `nplurals'.
--
--The following rules are known at this point. The language with families
--are listed. But this does not necessarily mean the information can be
--generalized for the whole family (as can be easily seen in the table
--below).(1)
--
--Only one form:
-- Some languages only require one single form. There is no
-- distinction between the singular and plural form. An appropriate
-- header entry would look like this:
--
-- Plural-Forms: nplurals=1; plural=0;
--
-- Languages with this property include:
--
-- Finno-Ugric family
-- Hungarian
--
-- Asian family
-- Japanese
--
-- Turkic/Altaic family
-- Turkish
--
--Two forms, singular used for one only
-- This is the form used in most existing programs since it is what
-- English is using. A header entry would look like this:
--
-- Plural-Forms: nplurals=2; plural=n != 1;
--
-- (Note: this uses the feature of C expressions that boolean
-- expressions have to value zero or one.)
--
-- Languages with this property include:
--
-- Germanic family
-- Danish, Dutch, English, German, Norwegian, Swedish
--
-- Finno-Ugric family
-- Estonian, Finnish
--
-- Latin/Greek family
-- Greek
--
-- Semitic family
-- Hebrew
--
-- Romance family
-- Italian, Spanish
--
-- Artificial
-- Esperanto
--
--Two forms, singular used for zero and one
-- Exceptional case in the language family. The header entry would
-- be:
--
-- Plural-Forms: nplurals=2; plural=n>1;
--
-- Languages with this property include:
--
-- Romanic family
-- French
--
--Three forms, special cases for one and two
-- The header entry would be:
--
-- Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;
--
-- Languages with this property include:
--
-- Celtic
-- Gaeilge
--
--Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4]
-- The header entry would look like this:
--
-- Plural-Forms: nplurals=3; \
-- plural=n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1;
--
-- Languages with this property include:
--
-- Slavic family
-- Czech, Russian
--
--Three forms, special cases for 1 and 2, 3, 4
-- The header entry would look like this:
--
-- Plural-Forms: nplurals=3; \
-- plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;
--
-- Languages with this property include:
--
-- Slavic family
-- Slovak
--
--Three forms, special case for one and some numbers ending in 2, 3, or 4
-- The header entry would look like this:
--
-- Plural-Forms: nplurals=3; \
-- plural=n==1 ? 0 : \
-- n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
--
-- (Continuation in the next line is possible.)
--
-- Languages with this property include:
--
-- Slavic family
-- Polish
--
--Four forms, special case for one and all numbers ending in 2, 3, or 4
-- The header entry would look like this:
--
-- Plural-Forms: nplurals=4; \
-- plural=n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%10==4 ? 2 : 3;
--
-- Languages with this property include:
--
-- Slavic family
-- Slovenian
--
-- ---------- Footnotes ----------
--
-- (1) Additions are welcome. Send appropriate information to
--<bug-glibc-manual@gnu.org>.
--
--
--File: libc.info, Node: Charset conversion in gettext, Next: GUI program problems, Prev: Advanced gettext functions, Up: Message catalogs with gettext
--
--How to specify the output character set `gettext' uses
--......................................................
--
-- `gettext' not only looks up a translation in a message catalog. It
--also converts the translation on the fly to the desired output character
--set. This is useful if the user is working in a different character set
--than the translator who created the message catalog, because it avoids
--distributing variants of message catalogs which differ only in the
--character set.
--
-- The output character set is, by default, the value of `nl_langinfo
--(CODESET)', which depends on the `LC_CTYPE' part of the current locale.
--But programs which store strings in a locale independent way (e.g.
--UTF-8) can request that `gettext' and related functions return the
--translations in that encoding, by use of the `bind_textdomain_codeset'
--function.
--
-- Note that the MSGID argument to `gettext' is not subject to
--character set conversion. Also, when `gettext' does not find a
--translation for MSGID, it returns MSGID unchanged - independently of
--the current output character set. It is therefore recommended that all
--MSGIDs be US-ASCII strings.
--
-- - Function: char * bind_textdomain_codeset (const char *DOMAINNAME,
-- const char *CODESET)
-- The `bind_textdomain_codeset' function can be used to specify the
-- output character set for message catalogs for domain DOMAINNAME.
-- The CODESET argument must be a valid codeset name which can be used
-- for the `iconv_open' function, or a null pointer.
--
-- If the CODESET parameter is the null pointer,
-- `bind_textdomain_codeset' returns the currently selected codeset
-- for the domain with the name DOMAINNAME. It returns `NULL' if no
-- codeset has yet been selected.
--
-- The `bind_textdomain_codeset' function can be used several times.
-- If used multiple times with the same DOMAINNAME argument, the
-- later call overrides the settings made by the earlier one.
--
-- The `bind_textdomain_codeset' function returns a pointer to a
-- string containing the name of the selected codeset. The string is
-- allocated internally in the function and must not be changed by the
-- user. If the system went out of core during the execution of
-- `bind_textdomain_codeset', the return value is `NULL' and the
-- global variable ERRNO is set accordingly.
--
--
--File: libc.info, Node: GUI program problems, Next: Using gettextized software, Prev: Charset conversion in gettext, Up: Message catalogs with gettext
--
--How to use `gettext' in GUI programs
--....................................
--
-- One place where the `gettext' functions, if used normally, have big
--problems is within programs with graphical user interfaces (GUIs). The
--problem is that many of the strings which have to be translated are very
--short. They have to appear in pull-down menus which restricts the
--length. But strings which are not containing entire sentences or at
--least large fragments of a sentence may appear in more than one
--situation in the program but might have different translations. This is
--especially true for the one-word strings which are frequently used in
--GUI programs.
--
-- As a consequence many people say that the `gettext' approach is
--wrong and instead `catgets' should be used which indeed does not have
--this problem. But there is a very simple and powerful method to handle
--these kind of problems with the `gettext' functions.
--
--As as example consider the following fictional situation. A GUI program
--has a menu bar with the following entries:
--
-- +------------+------------+--------------------------------------+
-- | File | Printer | |
-- +------------+------------+--------------------------------------+
-- | Open | | Select |
-- | New | | Open |
-- +----------+ | Connect |
-- +----------+
--
-- To have the strings `File', `Printer', `Open', `New', `Select', and
--`Connect' translated there has to be at some point in the code a call
--to a function of the `gettext' family. But in two places the string
--passed into the function would be `Open'. The translations might not
--be the same and therefore we are in the dilemma described above.
--
-- One solution to this problem is to artificially enlengthen the
--strings to make them unambiguous. But what would the program do if no
--translation is available? The enlengthened string is not what should be
--printed. So we should use a little bit modified version of the
--functions.
--
-- To enlengthen the strings a uniform method should be used. E.g., in
--the example above the strings could be chosen as
--
-- Menu|File
-- Menu|Printer
-- Menu|File|Open
-- Menu|File|New
-- Menu|Printer|Select
-- Menu|Printer|Open
-- Menu|Printer|Connect
--
-- Now all the strings are different and if now instead of `gettext'
--the following little wrapper function is used, everything works just
--fine:
--
-- char *
-- sgettext (const char *msgid)
-- {
-- char *msgval = gettext (msgid);
-- if (msgval == msgid)
-- msgval = strrchr (msgid, '|') + 1;
-- return msgval;
-- }
--
-- What this little function does is to recognize the case when no
--translation is available. This can be done very efficiently by a
--pointer comparison since the return value is the input value. If there
--is no translation we know that the input string is in the format we used
--for the Menu entries and therefore contains a `|' character. We simply
--search for the last occurrence of this character and return a pointer
--to the character following it. That's it!
--
-- If one now consistently uses the enlengthened string form and
--replaces the `gettext' calls with calls to `sgettext' (this is normally
--limited to very few places in the GUI implementation) then it is
--possible to produce a program which can be internationalized.
--
-- With advanced compilers (such as GNU C) one can write the `sgettext'
--functions as an inline function or as a macro like this:
--
-- #define sgettext(msgid) \
-- ({ const char *__msgid = (msgid); \
-- char *__msgstr = gettext (__msgid); \
-- if (__msgval == __msgid) \
-- __msgval = strrchr (__msgid, '|') + 1; \
-- __msgval; })
--
-- The other `gettext' functions (`dgettext', `dcgettext' and the
--`ngettext' equivalents) can and should have corresponding functions as
--well which look almost identical, except for the parameters and the
--call to the underlying function.
--
-- Now there is of course the question why such functions do not exist
--in the GNU C library? There are two parts of the answer to this
--question.
--
-- * They are easy to write and therefore can be provided by the
-- project they are used in. This is not an answer by itself and
-- must be seen together with the second part which is:
--
-- * There is no way the C library can contain a version which can work
-- everywhere. The problem is the selection of the character to
-- separate the prefix from the actual string in the enlenghtened
-- string. The examples above used `|' which is a quite good choice
-- because it resembles a notation frequently used in this context
-- and it also is a character not often used in message strings.
--
-- But what if the character is used in message strings. Or if the
-- chose character is not available in the character set on the
-- machine one compiles (e.g., `|' is not required to exist for
-- ISO C; this is why the `iso646.h' file exists in ISO C programming
-- environments).
--
-- There is only one more comment to make left. The wrapper function
--above require that the translations strings are not enlengthened
--themselves. This is only logical. There is no need to disambiguate
--the strings (since they are never used as keys for a search) and one
--also saves quite some memory and disk space by doing this.
--
--
--File: libc.info, Node: Using gettextized software, Prev: GUI program problems, Up: Message catalogs with gettext
--
--User influence on `gettext'
--...........................
--
-- The last sections described what the programmer can do to
--internationalize the messages of the program. But it is finally up to
--the user to select the message s/he wants to see. S/He must understand
--them.
--
-- The POSIX locale model uses the environment variables `LC_COLLATE',
--`LC_CTYPE', `LC_MESSAGES', `LC_MONETARY', `NUMERIC', and `LC_TIME' to
--select the locale which is to be used. This way the user can influence
--lots of functions. As we mentioned above the `gettext' functions also
--take advantage of this.
--
-- To understand how this happens it is necessary to take a look at the
--various components of the filename which gets computed to locate a
--message catalog. It is composed as follows:
--
-- DIR_NAME/LOCALE/LC_CATEGORY/DOMAIN_NAME.mo
--
-- The default value for DIR_NAME is system specific. It is computed
--from the value given as the prefix while configuring the C library.
--This value normally is `/usr' or `/'. For the former the complete
--DIR_NAME is:
--
-- /usr/share/locale
--
-- We can use `/usr/share' since the `.mo' files containing the message
--catalogs are system independent, so all systems can use the same files.
--If the program executed the `bindtextdomain' function for the message
--domain that is currently handled, the `dir_name' component is exactly
--the value which was given to the function as the second parameter.
--I.e., `bindtextdomain' allows overwriting the only system dependent and
--fixed value to make it possible to address files anywhere in the
--filesystem.
--
-- The CATEGORY is the name of the locale category which was selected
--in the program code. For `gettext' and `dgettext' this is always
--`LC_MESSAGES', for `dcgettext' this is selected by the value of the
--third parameter. As said above it should be avoided to ever use a
--category other than `LC_MESSAGES'.
--
-- The LOCALE component is computed based on the category used. Just
--like for the `setlocale' function here comes the user selection into
--the play. Some environment variables are examined in a fixed order and
--the first environment variable set determines the return value of the
--lookup process. In detail, for the category `LC_xxx' the following
--variables in this order are examined:
--
--`LANGUAGE'
--
--`LC_ALL'
--
--`LC_xxx'
--
--`LANG'
-- This looks very familiar. With the exception of the `LANGUAGE'
--environment variable this is exactly the lookup order the `setlocale'
--function uses. But why introducing the `LANGUAGE' variable?
--
-- The reason is that the syntax of the values these variables can have
--is different to what is expected by the `setlocale' function. If we
--would set `LC_ALL' to a value following the extended syntax that would
--mean the `setlocale' function will never be able to use the value of
--this variable as well. An additional variable removes this problem
--plus we can select the language independently of the locale setting
--which sometimes is useful.
--
-- While for the `LC_xxx' variables the value should consist of exactly
--one specification of a locale the `LANGUAGE' variable's value can
--consist of a colon separated list of locale names. The attentive
--reader will realize that this is the way we manage to implement one of
--our additional demands above: we want to be able to specify an ordered
--list of language.
--
-- Back to the constructed filename we have only one component missing.
--The DOMAIN_NAME part is the name which was either registered using the
--`textdomain' function or which was given to `dgettext' or `dcgettext'
--as the first parameter. Now it becomes obvious that a good choice for
--the domain name in the program code is a string which is closely
--related to the program/package name. E.g., for the GNU C Library the
--domain name is `libc'.
--
--A limit piece of example code should show how the programmer is supposed
--to work:
--
-- {
-- setlocale (LC_ALL, "");
-- textdomain ("test-package");
-- bindtextdomain ("test-package", "/usr/local/share/locale");
-- puts (gettext ("Hello, world!"));
-- }
--
-- At the program start the default domain is `messages', and the
--default locale is "C". The `setlocale' call sets the locale according
--to the user's environment variables; remember that correct functioning
--of `gettext' relies on the correct setting of the `LC_MESSAGES' locale
--(for looking up the message catalog) and of the `LC_CTYPE' locale (for
--the character set conversion). The `textdomain' call changes the
--default domain to `test-package'. The `bindtextdomain' call specifies
--that the message catalogs for the domain `test-package' can be found
--below the directory `/usr/local/share/locale'.
--
-- If now the user set in her/his environment the variable `LANGUAGE'
--to `de' the `gettext' function will try to use the translations from
--the file
--
-- /usr/local/share/locale/de/LC_MESSAGES/test-package.mo
--
-- From the above descriptions it should be clear which component of
--this filename is determined by which source.
--
-- In the above example we assumed that the `LANGUAGE' environment
--variable to `de'. This might be an appropriate selection but what
--happens if the user wants to use `LC_ALL' because of the wider
--usability and here the required value is `de_DE.ISO-8859-1'? We
--already mentioned above that a situation like this is not infrequent.
--E.g., a person might prefer reading a dialect and if this is not
--available fall back on the standard language.
--
-- The `gettext' functions know about situations like this and can
--handle them gracefully. The functions recognize the format of the value
--of the environment variable. It can split the value is different pieces
--and by leaving out the only or the other part it can construct new
--values. This happens of course in a predictable way. To understand
--this one must know the format of the environment variable value. There
--is one more or less standardized form, originally from the X/Open
--specification:
--
-- `language[_territory[.codeset]][@modifier]'
--
-- Less specific locale names will be stripped of in the order of the
--following list:
--
-- 1. `codeset'
--
-- 2. `normalized codeset'
--
-- 3. `territory'
--
-- 4. `modifier'
--
-- The `language' field will never be dropped for obvious reasons.
--
-- The only new thing is the `normalized codeset' entry. This is
--another goodie which is introduced to help reducing the chaos which
--derives from the inability of the people to standardize the names of
--character sets. Instead of ISO-8859-1 one can often see 8859-1, 88591,
--iso8859-1, or iso_8859-1. The `normalized codeset' value is generated
--from the user-provided character set name by applying the following
--rules:
--
-- 1. Remove all characters beside numbers and letters.
--
-- 2. Fold letters to lowercase.
--
-- 3. If the same only contains digits prepend the string `"iso"'.
--
--So all of the above name will be normalized to `iso88591'. This allows
--the program user much more freely choosing the locale name.
--
-- Even this extended functionality still does not help to solve the
--problem that completely different names can be used to denote the same
--locale (e.g., `de' and `german'). To be of help in this situation the
--locale implementation and also the `gettext' functions know about
--aliases.
--
-- The file `/usr/share/locale/locale.alias' (replace `/usr' with
--whatever prefix you used for configuring the C library) contains a
--mapping of alternative names to more regular names. The system manager
--is free to add new entries to fill her/his own needs. The selected
--locale from the environment is compared with the entries in the first
--column of this file ignoring the case. If they match the value of the
--second column is used instead for the further handling.
--
-- In the description of the format of the environment variables we
--already mentioned the character set as a factor in the selection of the
--message catalog. In fact, only catalogs which contain text written
--using the character set of the system/program can be used (directly;
--there will come a solution for this some day). This means for the user
--that s/he will always have to take care for this. If in the collection
--of the message catalogs there are files for the same language but coded
--using different character sets the user has to be careful.
--
--
--File: libc.info, Node: Helper programs for gettext, Prev: Message catalogs with gettext, Up: The Uniforum approach
--
--Programs to handle message catalogs for `gettext'
---------------------------------------------------
--
-- The GNU C Library does not contain the source code for the programs
--to handle message catalogs for the `gettext' functions. As part of the
--GNU project the GNU gettext package contains everything the developer
--needs. The functionality provided by the tools in this package by far
--exceeds the abilities of the `gencat' program described above for the
--`catgets' functions.
--
-- There is a program `msgfmt' which is the equivalent program to the
--`gencat' program. It generates from the human-readable and -editable
--form of the message catalog a binary file which can be used by the
--`gettext' functions. But there are several more programs available.
--
-- The `xgettext' program can be used to automatically extract the
--translatable messages from a source file. I.e., the programmer need not
--take care for the translations and the list of messages which have to be
--translated. S/He will simply wrap the translatable string in calls to
--`gettext' et.al and the rest will be done by `xgettext'. This program
--has a lot of option which help to customize the output or do help to
--understand the input better.
--
-- Other programs help to manage development cycle when new messages
--appear in the source files or when a new translation of the messages
--appear. here it should only be noted that using all the tools in GNU
--gettext it is possible to _completely_ automize the handling of message
--catalog. Beside marking the translatable string in the source code and
--generating the translations the developers do not have anything to do
--themselves.
--
--
--File: libc.info, Node: Searching and Sorting, Next: Pattern Matching, Prev: Message Translation, Up: Top
--
--Searching and Sorting
--*********************
--
-- This chapter describes functions for searching and sorting arrays of
--arbitrary objects. You pass the appropriate comparison function to be
--applied as an argument, along with the size of the objects in the array
--and the total number of elements.
--
--* Menu:
--
--* Comparison Functions:: Defining how to compare two objects.
-- Since the sort and search facilities
-- are general, you have to specify the
-- ordering.
--* Array Search Function:: The `bsearch' function.
--* Array Sort Function:: The `qsort' function.
--* Search/Sort Example:: An example program.
--* Hash Search Function:: The `hsearch' function.
--* Tree Search Function:: The `tsearch' function.
--
--
--File: libc.info, Node: Comparison Functions, Next: Array Search Function, Up: Searching and Sorting
--
--Defining the Comparison Function
--================================
--
-- In order to use the sorted array library functions, you have to
--describe how to compare the elements of the array.
--
-- To do this, you supply a comparison function to compare two elements
--of the array. The library will call this function, passing as arguments
--pointers to two array elements to be compared. Your comparison function
--should return a value the way `strcmp' (*note String/Array
--Comparison::) does: negative if the first argument is "less" than the
--second, zero if they are "equal", and positive if the first argument is
--"greater".
--
-- Here is an example of a comparison function which works with an
--array of numbers of type `double':
--
-- int
-- compare_doubles (const void *a, const void *b)
-- {
-- const double *da = (const double *) a;
-- const double *db = (const double *) b;
--
-- return (*da > *db) - (*da < *db);
-- }
--
-- The header file `stdlib.h' defines a name for the data type of
--comparison functions. This type is a GNU extension.
--
-- int comparison_fn_t (const void *, const void *);
--
--
--File: libc.info, Node: Array Search Function, Next: Array Sort Function, Prev: Comparison Functions, Up: Searching and Sorting
--
--Array Search Function
--=====================
--
-- Generally searching for a specific element in an array means that
--potentially all elements must be checked. The GNU C library contains
--functions to perform linear search. The prototypes for the following
--two functions can be found in `search.h'.
--
-- - Function: void * lfind (const void *KEY, void *BASE, size_t *NMEMB,
-- size_t SIZE, comparison_fn_t COMPAR)
-- The `lfind' function searches in the array with `*NMEMB' elements
-- of SIZE bytes pointed to by BASE for an element which matches the
-- one pointed to by KEY. The function pointed to by COMPAR is used
-- decide whether two elements match.
--
-- The return value is a pointer to the matching element in the array
-- starting at BASE if it is found. If no matching element is
-- available `NULL' is returned.
--
-- The mean runtime of this function is `*NMEMB'/2. This function
-- should only be used elements often get added to or deleted from
-- the array in which case it might not be useful to sort the array
-- before searching.
--
-- - Function: void * lsearch (const void *KEY, void *BASE, size_t
-- *NMEMB, size_t SIZE, comparison_fn_t COMPAR)
-- The `lsearch' function is similar to the `lfind' function. It
-- searches the given array for an element and returns it if found.
-- The difference is that if no matching element is found the
-- `lsearch' function adds the object pointed to by KEY (with a size
-- of SIZE bytes) at the end of the array and it increments the value
-- of `*NMEMB' to reflect this addition.
--
-- This means for the caller that if it is not sure that the array
-- contains the element one is searching for the memory allocated for
-- the array starting at BASE must have room for at least SIZE more
-- bytes. If one is sure the element is in the array it is better to
-- use `lfind' so having more room in the array is always necessary
-- when calling `lsearch'.
--
-- To search a sorted array for an element matching the key, use the
--`bsearch' function. The prototype for this function is in the header
--file `stdlib.h'.
--
-- - Function: void * bsearch (const void *KEY, const void *ARRAY, size_t
-- COUNT, size_t SIZE, comparison_fn_t COMPARE)
-- The `bsearch' function searches the sorted array ARRAY for an
-- object that is equivalent to KEY. The array contains COUNT
-- elements, each of which is of size SIZE bytes.
--
-- The COMPARE function is used to perform the comparison. This
-- function is called with two pointer arguments and should return an
-- integer less than, equal to, or greater than zero corresponding to
-- whether its first argument is considered less than, equal to, or
-- greater than its second argument. The elements of the ARRAY must
-- already be sorted in ascending order according to this comparison
-- function.
--
-- The return value is a pointer to the matching array element, or a
-- null pointer if no match is found. If the array contains more
-- than one element that matches, the one that is returned is
-- unspecified.
--
-- This function derives its name from the fact that it is implemented
-- using the binary search algorithm.
--
--
--File: libc.info, Node: Array Sort Function, Next: Search/Sort Example, Prev: Array Search Function, Up: Searching and Sorting
--
--Array Sort Function
--===================
--
-- To sort an array using an arbitrary comparison function, use the
--`qsort' function. The prototype for this function is in `stdlib.h'.
--
-- - Function: void qsort (void *ARRAY, size_t COUNT, size_t SIZE,
-- comparison_fn_t COMPARE)
-- The QSORT function sorts the array ARRAY. The array contains
-- COUNT elements, each of which is of size SIZE.
--
-- The COMPARE function is used to perform the comparison on the
-- array elements. This function is called with two pointer
-- arguments and should return an integer less than, equal to, or
-- greater than zero corresponding to whether its first argument is
-- considered less than, equal to, or greater than its second
-- argument.
--
-- *Warning:* If two objects compare as equal, their order after
-- sorting is unpredictable. That is to say, the sorting is not
-- stable. This can make a difference when the comparison considers
-- only part of the elements. Two elements with the same sort key
-- may differ in other respects.
--
-- If you want the effect of a stable sort, you can get this result by
-- writing the comparison function so that, lacking other reason
-- distinguish between two elements, it compares them by their
-- addresses. Note that doing this may make the sorting algorithm
-- less efficient, so do it only if necessary.
--
-- Here is a simple example of sorting an array of doubles in
-- numerical order, using the comparison function defined above
-- (*note Comparison Functions::):
--
-- {
-- double *array;
-- int size;
-- ...
-- qsort (array, size, sizeof (double), compare_doubles);
-- }
--
-- The `qsort' function derives its name from the fact that it was
-- originally implemented using the "quick sort" algorithm.
--
-- The implementation of `qsort' in this library might not be an
-- in-place sort and might thereby use an extra amount of memory to
-- store the array.
--
--
--File: libc.info, Node: Search/Sort Example, Next: Hash Search Function, Prev: Array Sort Function, Up: Searching and Sorting
--
--Searching and Sorting Example
--=============================
--
-- Here is an example showing the use of `qsort' and `bsearch' with an
--array of structures. The objects in the array are sorted by comparing
--their `name' fields with the `strcmp' function. Then, we can look up
--individual objects based on their names.
--
-- #include <stdlib.h>
-- #include <stdio.h>
-- #include <string.h>
--
-- /* Define an array of critters to sort. */
--
-- struct critter
-- {
-- const char *name;
-- const char *species;
-- };
--
-- struct critter muppets[] =
-- {
-- {"Kermit", "frog"},
-- {"Piggy", "pig"},
-- {"Gonzo", "whatever"},
-- {"Fozzie", "bear"},
-- {"Sam", "eagle"},
-- {"Robin", "frog"},
-- {"Animal", "animal"},
-- {"Camilla", "chicken"},
-- {"Sweetums", "monster"},
-- {"Dr. Strangepork", "pig"},
-- {"Link Hogthrob", "pig"},
-- {"Zoot", "human"},
-- {"Dr. Bunsen Honeydew", "human"},
-- {"Beaker", "human"},
-- {"Swedish Chef", "human"}
-- };
--
-- int count = sizeof (muppets) / sizeof (struct critter);
--
--
--
-- /* This is the comparison function used for sorting and searching. */
--
-- int
-- critter_cmp (const struct critter *c1, const struct critter *c2)
-- {
-- return strcmp (c1->name, c2->name);
-- }
--
--
-- /* Print information about a critter. */
--
-- void
-- print_critter (const struct critter *c)
-- {
-- printf ("%s, the %s\n", c->name, c->species);
-- }
--
--
-- /* Do the lookup into the sorted array. */
--
-- void
-- find_critter (const char *name)
-- {
-- struct critter target, *result;
-- target.name = name;
-- result = bsearch (&target, muppets, count, sizeof (struct critter),
-- critter_cmp);
-- if (result)
-- print_critter (result);
-- else
-- printf ("Couldn't find %s.\n", name);
-- }
--
-- /* Main program. */
--
-- int
-- main (void)
-- {
-- int i;
--
-- for (i = 0; i < count; i++)
-- print_critter (&muppets[i]);
-- printf ("\n");
--
-- qsort (muppets, count, sizeof (struct critter), critter_cmp);
--
-- for (i = 0; i < count; i++)
-- print_critter (&muppets[i]);
-- printf ("\n");
--
-- find_critter ("Kermit");
-- find_critter ("Gonzo");
-- find_critter ("Janice");
--
-- return 0;
-- }
--
-- The output from this program looks like:
--
-- Kermit, the frog
-- Piggy, the pig
-- Gonzo, the whatever
-- Fozzie, the bear
-- Sam, the eagle
-- Robin, the frog
-- Animal, the animal
-- Camilla, the chicken
-- Sweetums, the monster
-- Dr. Strangepork, the pig
-- Link Hogthrob, the pig
-- Zoot, the human
-- Dr. Bunsen Honeydew, the human
-- Beaker, the human
-- Swedish Chef, the human
--
-- Animal, the animal
-- Beaker, the human
-- Camilla, the chicken
-- Dr. Bunsen Honeydew, the human
-- Dr. Strangepork, the pig
-- Fozzie, the bear
-- Gonzo, the whatever
-- Kermit, the frog
-- Link Hogthrob, the pig
-- Piggy, the pig
-- Robin, the frog
-- Sam, the eagle
-- Swedish Chef, the human
-- Sweetums, the monster
-- Zoot, the human
--
-- Kermit, the frog
-- Gonzo, the whatever
-- Couldn't find Janice.
--
--
--File: libc.info, Node: Hash Search Function, Next: Tree Search Function, Prev: Search/Sort Example, Up: Searching and Sorting
--
--The `hsearch' function.
--=======================
--
-- The functions mentioned so far in this chapter are searching in a
--sorted or unsorted array. There are other methods to organize
--information which later should be searched. The costs of insert,
--delete and search differ. One possible implementation is using hashing
--tables. The following functions are declared in the the header file
--`search.h'.
--
-- - Function: int hcreate (size_t NEL)
-- The `hcreate' function creates a hashing table which can contain at
-- least NEL elements. There is no possibility to grow this table so
-- it is necessary to choose the value for NEL wisely. The used
-- methods to implement this function might make it necessary to make
-- the number of elements in the hashing table larger than the
-- expected maximal number of elements. Hashing tables usually work
-- inefficient if they are filled 80% or more. The constant access
-- time guaranteed by hashing can only be achieved if few collisions
-- exist. See Knuth's "The Art of Computer Programming, Part 3:
-- Searching and Sorting" for more information.
--
-- The weakest aspect of this function is that there can be at most
-- one hashing table used through the whole program. The table is
-- allocated in local memory out of control of the programmer. As an
-- extension the GNU C library provides an additional set of
-- functions with an reentrant interface which provide a similar
-- interface but which allow to keep arbitrarily many hashing tables.
--
-- It is possible to use more than one hashing table in the program
-- run if the former table is first destroyed by a call to `hdestroy'.
--
-- The function returns a non-zero value if successful. If it return
-- zero something went wrong. This could either mean there is
-- already a hashing table in use or the program runs out of memory.
--
-- - Function: void hdestroy (void)
-- The `hdestroy' function can be used to free all the resources
-- allocated in a previous call of `hcreate'. After a call to this
-- function it is again possible to call `hcreate' and allocate a new
-- table with possibly different size.
--
-- It is important to remember that the elements contained in the
-- hashing table at the time `hdestroy' is called are _not_ freed by
-- this function. It is the responsibility of the program code to
-- free those strings (if necessary at all). Freeing all the element
-- memory is not possible without extra, separately kept information
-- since there is no function to iterate through all available
-- elements in the hashing table. If it is really necessary to free
-- a table and all elements the programmer has to keep a list of all
-- table elements and before calling `hdestroy' s/he has to free all
-- element's data using this list. This is a very unpleasant
-- mechanism and it also shows that this kind of hashing tables is
-- mainly meant for tables which are created once and used until the
-- end of the program run.
--
-- Entries of the hashing table and keys for the search are defined
--using this type:
--
-- - Data type: struct ENTRY
-- Both elements of this structure are pointers to zero-terminated
-- strings. This is a limiting restriction of the functionality of
-- the `hsearch' functions. They can only be used for data sets
-- which use the NUL character always and solely to terminate the
-- records. It is not possible to handle general binary data.
--
-- `char *key'
-- Pointer to a zero-terminated string of characters describing
-- the key for the search or the element in the hashing table.
--
-- `char *data'
-- Pointer to a zero-terminated string of characters describing
-- the data. If the functions will be called only for searching
-- an existing entry this element might stay undefined since it
-- is not used.
--
-- - Function: ENTRY * hsearch (ENTRY ITEM, ACTION ACTION)
-- To search in a hashing table created using `hcreate' the `hsearch'
-- function must be used. This function can perform simple search
-- for an element (if ACTION has the `FIND') or it can alternatively
-- insert the key element into the hashing table. Entries are never
-- replaced.
--
-- The key is denoted by a pointer to an object of type `ENTRY'. For
-- locating the corresponding position in the hashing table only the
-- `key' element of the structure is used.
--
-- If an entry with matching key is found the ACTION parameter is
-- irrelevant. The found entry is returned. If no matching entry is
-- found and the ACTION parameter has the value `FIND' the function
-- returns a `NULL' pointer. If no entry is found and the ACTION
-- parameter has the value `ENTER' a new entry is added to the
-- hashing table which is initialized with the parameter ITEM. A
-- pointer to the newly added entry is returned.
--
-- As mentioned before the hashing table used by the functions
--described so far is global and there can be at any time at most one
--hashing table in the program. A solution is to use the following
--functions which are a GNU extension. All have in common that they
--operate on a hashing table which is described by the content of an
--object of the type `struct hsearch_data'. This type should be treated
--as opaque, none of its members should be changed directly.
--
-- - Function: int hcreate_r (size_t NEL, struct hsearch_data *HTAB)
-- The `hcreate_r' function initializes the object pointed to by HTAB
-- to contain a hashing table with at least NEL elements. So this
-- function is equivalent to the `hcreate' function except that the
-- initialized data structure is controlled by the user.
--
-- This allows having more than one hashing table at one time. The
-- memory necessary for the `struct hsearch_data' object can be
-- allocated dynamically. It must be initialized with zero before
-- calling this function.
--
-- The return value is non-zero if the operation were successful. if
-- the return value is zero something went wrong which probably means
-- the programs runs out of memory.
--
-- - Function: void hdestroy_r (struct hsearch_data *HTAB)
-- The `hdestroy_r' function frees all resources allocated by the
-- `hcreate_r' function for this very same object HTAB. As for
-- `hdestroy' it is the programs responsibility to free the strings
-- for the elements of the table.
--
-- - Function: int hsearch_r (ENTRY ITEM, ACTION ACTION, ENTRY **RETVAL,
-- struct hsearch_data *HTAB)
-- The `hsearch_r' function is equivalent to `hsearch'. The meaning
-- of the first two arguments is identical. But instead of operating
-- on a single global hashing table the function works on the table
-- described by the object pointed to by HTAB (which is initialized
-- by a call to `hcreate_r').
--
-- Another difference to `hcreate' is that the pointer to the found
-- entry in the table is not the return value of the functions. It is
-- returned by storing it in a pointer variables pointed to by the
-- RETVAL parameter. The return value of the function is an integer
-- value indicating success if it is non-zero and failure if it is
-- zero. In the latter case the global variable ERRNO signals the
-- reason for the failure.
--
-- `ENOMEM'
-- The table is filled and `hsearch_r' was called with an so far
-- unknown key and ACTION set to `ENTER'.
--
-- `ESRCH'
-- The ACTION parameter is `FIND' and no corresponding element
-- is found in the table.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-15 glibc-2.3.2-200304020432/manual/libc.info-15
---- glibc-2.3.2/manual/libc.info-15 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-15 Thu Jan 1 01:00:00 1970
-@@ -1,1197 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Tree Search Function, Prev: Hash Search Function, Up: Searching and Sorting
--
--The `tsearch' function.
--=======================
--
-- Another common form to organize data for efficient search is to use
--trees. The `tsearch' function family provides a nice interface to
--functions to organize possibly large amounts of data by providing a mean
--access time proportional to the logarithm of the number of elements.
--The GNU C library implementation even guarantees that this bound is
--never exceeded even for input data which cause problems for simple
--binary tree implementations.
--
-- The functions described in the chapter are all described in the
--System V and X/Open specifications and are therefore quite portable.
--
-- In contrast to the `hsearch' functions the `tsearch' functions can
--be used with arbitrary data and not only zero-terminated strings.
--
-- The `tsearch' functions have the advantage that no function to
--initialize data structures is necessary. A simple pointer of type
--`void *' initialized to `NULL' is a valid tree and can be extended or
--searched. The prototypes for these functions can be found in the
--header file `search.h'.
--
-- - Function: void * tsearch (const void *KEY, void **ROOTP,
-- comparison_fn_t COMPAR)
-- The `tsearch' function searches in the tree pointed to by `*ROOTP'
-- for an element matching KEY. The function pointed to by COMPAR is
-- used to determine whether two elements match. *Note Comparison
-- Functions::, for a specification of the functions which can be
-- used for the COMPAR parameter.
--
-- If the tree does not contain a matching entry the KEY value will
-- be added to the tree. `tsearch' does not make a copy of the object
-- pointed to by KEY (how could it since the size is unknown).
-- Instead it adds a reference to this object which means the object
-- must be available as long as the tree data structure is used.
--
-- The tree is represented by a pointer to a pointer since it is
-- sometimes necessary to change the root node of the tree. So it
-- must not be assumed that the variable pointed to by ROOTP has the
-- same value after the call. This also shows that it is not safe to
-- call the `tsearch' function more than once at the same time using
-- the same tree. It is no problem to run it more than once at a
-- time on different trees.
--
-- The return value is a pointer to the matching element in the tree.
-- If a new element was created the pointer points to the new data
-- (which is in fact KEY). If an entry had to be created and the
-- program ran out of space `NULL' is returned.
--
-- - Function: void * tfind (const void *KEY, void *const *ROOTP,
-- comparison_fn_t COMPAR)
-- The `tfind' function is similar to the `tsearch' function. It
-- locates an element matching the one pointed to by KEY and returns
-- a pointer to this element. But if no matching element is
-- available no new element is entered (note that the ROOTP parameter
-- points to a constant pointer). Instead the function returns
-- `NULL'.
--
-- Another advantage of the `tsearch' function in contrast to the
--`hsearch' functions is that there is an easy way to remove elements.
--
-- - Function: void * tdelete (const void *KEY, void **ROOTP,
-- comparison_fn_t COMPAR)
-- To remove a specific element matching KEY from the tree `tdelete'
-- can be used. It locates the matching element using the same
-- method as `tfind'. The corresponding element is then removed and
-- a pointer to the parent of the deleted node is returned by the
-- function. If there is no matching entry in the tree nothing can be
-- deleted and the function returns `NULL'. If the root of the tree
-- is deleted `tdelete' returns some unspecified value not equal to
-- `NULL'.
--
-- - Function: void tdestroy (void *VROOT, __free_fn_t FREEFCT)
-- If the complete search tree has to be removed one can use
-- `tdestroy'. It frees all resources allocated by the `tsearch'
-- function to generate the tree pointed to by VROOT.
--
-- For the data in each tree node the function FREEFCT is called.
-- The pointer to the data is passed as the argument to the function.
-- If no such work is necessary FREEFCT must point to a function
-- doing nothing. It is called in any case.
--
-- This function is a GNU extension and not covered by the System V or
-- X/Open specifications.
--
-- In addition to the function to create and destroy the tree data
--structure, there is another function which allows you to apply a
--function to all elements of the tree. The function must have this type:
--
-- void __action_fn_t (const void *nodep, VISIT value, int level);
--
-- The NODEP is the data value of the current node (once given as the
--KEY argument to `tsearch'). LEVEL is a numeric value which corresponds
--to the depth of the current node in the tree. The root node has the
--depth 0 and its children have a depth of 1 and so on. The `VISIT' type
--is an enumeration type.
--
-- - Data Type: VISIT
-- The `VISIT' value indicates the status of the current node in the
-- tree and how the function is called. The status of a node is
-- either `leaf' or `internal node'. For each leaf node the function
-- is called exactly once, for each internal node it is called three
-- times: before the first child is processed, after the first child
-- is processed and after both children are processed. This makes it
-- possible to handle all three methods of tree traversal (or even a
-- combination of them).
--
-- `preorder'
-- The current node is an internal node and the function is
-- called before the first child was processed.
--
-- `postorder'
-- The current node is an internal node and the function is
-- called after the first child was processed.
--
-- `endorder'
-- The current node is an internal node and the function is
-- called after the second child was processed.
--
-- `leaf'
-- The current node is a leaf.
--
-- - Function: void twalk (const void *ROOT, __action_fn_t ACTION)
-- For each node in the tree with a node pointed to by ROOT, the
-- `twalk' function calls the function provided by the parameter
-- ACTION. For leaf nodes the function is called exactly once with
-- VALUE set to `leaf'. For internal nodes the function is called
-- three times, setting the VALUE parameter or ACTION to the
-- appropriate value. The LEVEL argument for the ACTION function is
-- computed while descending the tree with increasing the value by
-- one for the descend to a child, starting with the value 0 for the
-- root node.
--
-- Since the functions used for the ACTION parameter to `twalk' must
-- not modify the tree data, it is safe to run `twalk' in more than
-- one thread at the same time, working on the same tree. It is also
-- safe to call `tfind' in parallel. Functions which modify the tree
-- must not be used, otherwise the behavior is undefined.
--
--
--File: libc.info, Node: Pattern Matching, Next: I/O Overview, Prev: Searching and Sorting, Up: Top
--
--Pattern Matching
--****************
--
-- The GNU C Library provides pattern matching facilities for two kinds
--of patterns: regular expressions and file-name wildcards. The library
--also provides a facility for expanding variable and command references
--and parsing text into words in the way the shell does.
--
--* Menu:
--
--* Wildcard Matching:: Matching a wildcard pattern against a single string.
--* Globbing:: Finding the files that match a wildcard pattern.
--* Regular Expressions:: Matching regular expressions against strings.
--* Word Expansion:: Expanding shell variables, nested commands,
-- arithmetic, and wildcards.
-- This is what the shell does with shell commands.
--
--
--File: libc.info, Node: Wildcard Matching, Next: Globbing, Up: Pattern Matching
--
--Wildcard Matching
--=================
--
-- This section describes how to match a wildcard pattern against a
--particular string. The result is a yes or no answer: does the string
--fit the pattern or not. The symbols described here are all declared in
--`fnmatch.h'.
--
-- - Function: int fnmatch (const char *PATTERN, const char *STRING, int
-- FLAGS)
-- This function tests whether the string STRING matches the pattern
-- PATTERN. It returns `0' if they do match; otherwise, it returns
-- the nonzero value `FNM_NOMATCH'. The arguments PATTERN and STRING
-- are both strings.
--
-- The argument FLAGS is a combination of flag bits that alter the
-- details of matching. See below for a list of the defined flags.
--
-- In the GNU C Library, `fnmatch' cannot experience an "error"--it
-- always returns an answer for whether the match succeeds. However,
-- other implementations of `fnmatch' might sometimes report "errors".
-- They would do so by returning nonzero values that are not equal to
-- `FNM_NOMATCH'.
--
-- These are the available flags for the FLAGS argument:
--
--`FNM_FILE_NAME'
-- Treat the `/' character specially, for matching file names. If
-- this flag is set, wildcard constructs in PATTERN cannot match `/'
-- in STRING. Thus, the only way to match `/' is with an explicit
-- `/' in PATTERN.
--
--`FNM_PATHNAME'
-- This is an alias for `FNM_FILE_NAME'; it comes from POSIX.2. We
-- don't recommend this name because we don't use the term "pathname"
-- for file names.
--
--`FNM_PERIOD'
-- Treat the `.' character specially if it appears at the beginning of
-- STRING. If this flag is set, wildcard constructs in PATTERN
-- cannot match `.' as the first character of STRING.
--
-- If you set both `FNM_PERIOD' and `FNM_FILE_NAME', then the special
-- treatment applies to `.' following `/' as well as to `.' at the
-- beginning of STRING. (The shell uses the `FNM_PERIOD' and
-- `FNM_FILE_NAME' flags together for matching file names.)
--
--`FNM_NOESCAPE'
-- Don't treat the `\' character specially in patterns. Normally,
-- `\' quotes the following character, turning off its special meaning
-- (if any) so that it matches only itself. When quoting is enabled,
-- the pattern `\?' matches only the string `?', because the question
-- mark in the pattern acts like an ordinary character.
--
-- If you use `FNM_NOESCAPE', then `\' is an ordinary character.
--
--`FNM_LEADING_DIR'
-- Ignore a trailing sequence of characters starting with a `/' in
-- STRING; that is to say, test whether STRING starts with a
-- directory name that PATTERN matches.
--
-- If this flag is set, either `foo*' or `foobar' as a pattern would
-- match the string `foobar/frobozz'.
--
--`FNM_CASEFOLD'
-- Ignore case in comparing STRING to PATTERN.
--
--`FNM_EXTMATCH'
-- Recognize beside the normal patterns also the extended patterns
-- introduced in `ksh'. The patterns are written in the form
-- explained in the following table where PATTERN-LIST is a `|'
-- separated list of patterns.
--
-- `?(PATTERN-LIST)'
-- The pattern matches if zero or one occurrences of any of the
-- patterns in the PATTERN-LIST allow matching the input string.
--
-- `*(PATTERN-LIST)'
-- The pattern matches if zero or more occurrences of any of the
-- patterns in the PATTERN-LIST allow matching the input string.
--
-- `+(PATTERN-LIST)'
-- The pattern matches if one or more occurrences of any of the
-- patterns in the PATTERN-LIST allow matching the input string.
--
-- `@(PATTERN-LIST)'
-- The pattern matches if exactly one occurrence of any of the
-- patterns in the PATTERN-LIST allows matching the input string.
--
-- `!(PATTERN-LIST)'
-- The pattern matches if the input string cannot be matched
-- with any of the patterns in the PATTERN-LIST.
--
--
--File: libc.info, Node: Globbing, Next: Regular Expressions, Prev: Wildcard Matching, Up: Pattern Matching
--
--Globbing
--========
--
-- The archetypal use of wildcards is for matching against the files in
--a directory, and making a list of all the matches. This is called
--"globbing".
--
-- You could do this using `fnmatch', by reading the directory entries
--one by one and testing each one with `fnmatch'. But that would be slow
--(and complex, since you would have to handle subdirectories by hand).
--
-- The library provides a function `glob' to make this particular use
--of wildcards convenient. `glob' and the other symbols in this section
--are declared in `glob.h'.
--
--* Menu:
--
--* Calling Glob:: Basic use of `glob'.
--* Flags for Globbing:: Flags that enable various options in `glob'.
--* More Flags for Globbing:: GNU specific extensions to `glob'.
--
--
--File: libc.info, Node: Calling Glob, Next: Flags for Globbing, Up: Globbing
--
--Calling `glob'
----------------
--
-- The result of globbing is a vector of file names (strings). To
--return this vector, `glob' uses a special data type, `glob_t', which is
--a structure. You pass `glob' the address of the structure, and it
--fills in the structure's fields to tell you about the results.
--
-- - Data Type: glob_t
-- This data type holds a pointer to a word vector. More precisely,
-- it records both the address of the word vector and its size. The
-- GNU implementation contains some more fields which are non-standard
-- extensions.
--
-- `gl_pathc'
-- The number of elements in the vector, excluding the initial
-- null entries if the GLOB_DOOFFS flag is used (see gl_offs
-- below).
--
-- `gl_pathv'
-- The address of the vector. This field has type `char **'.
--
-- `gl_offs'
-- The offset of the first real element of the vector, from its
-- nominal address in the `gl_pathv' field. Unlike the other
-- fields, this is always an input to `glob', rather than an
-- output from it.
--
-- If you use a nonzero offset, then that many elements at the
-- beginning of the vector are left empty. (The `glob' function
-- fills them with null pointers.)
--
-- The `gl_offs' field is meaningful only if you use the
-- `GLOB_DOOFFS' flag. Otherwise, the offset is always zero
-- regardless of what is in this field, and the first real
-- element comes at the beginning of the vector.
--
-- `gl_closedir'
-- The address of an alternative implementation of the `closedir'
-- function. It is used if the `GLOB_ALTDIRFUNC' bit is set in
-- the flag parameter. The type of this field is
-- `void (*) (void *)'.
--
-- This is a GNU extension.
--
-- `gl_readdir'
-- The address of an alternative implementation of the `readdir'
-- function used to read the contents of a directory. It is
-- used if the `GLOB_ALTDIRFUNC' bit is set in the flag
-- parameter. The type of this field is
-- `struct dirent *(*) (void *)'.
--
-- This is a GNU extension.
--
-- `gl_opendir'
-- The address of an alternative implementation of the `opendir'
-- function. It is used if the `GLOB_ALTDIRFUNC' bit is set in
-- the flag parameter. The type of this field is
-- `void *(*) (const char *)'.
--
-- This is a GNU extension.
--
-- `gl_stat'
-- The address of an alternative implementation of the `stat'
-- function to get information about an object in the
-- filesystem. It is used if the `GLOB_ALTDIRFUNC' bit is set
-- in the flag parameter. The type of this field is
-- `int (*) (const char *, struct stat *)'.
--
-- This is a GNU extension.
--
-- `gl_lstat'
-- The address of an alternative implementation of the `lstat'
-- function to get information about an object in the
-- filesystems, not following symbolic links. It is used if the
-- `GLOB_ALTDIRFUNC' bit is set in the flag parameter. The type
-- of this field is `int (*) (const char *, struct stat *)'.
--
-- This is a GNU extension.
--
-- For use in the `glob64' function `glob.h' contains another
--definition for a very similar type. `glob64_t' differs from `glob_t'
--only in the types of the members `gl_readdir', `gl_stat', and
--`gl_lstat'.
--
-- - Data Type: glob64_t
-- This data type holds a pointer to a word vector. More precisely,
-- it records both the address of the word vector and its size. The
-- GNU implementation contains some more fields which are non-standard
-- extensions.
--
-- `gl_pathc'
-- The number of elements in the vector, excluding the initial
-- null entries if the GLOB_DOOFFS flag is used (see gl_offs
-- below).
--
-- `gl_pathv'
-- The address of the vector. This field has type `char **'.
--
-- `gl_offs'
-- The offset of the first real element of the vector, from its
-- nominal address in the `gl_pathv' field. Unlike the other
-- fields, this is always an input to `glob', rather than an
-- output from it.
--
-- If you use a nonzero offset, then that many elements at the
-- beginning of the vector are left empty. (The `glob' function
-- fills them with null pointers.)
--
-- The `gl_offs' field is meaningful only if you use the
-- `GLOB_DOOFFS' flag. Otherwise, the offset is always zero
-- regardless of what is in this field, and the first real
-- element comes at the beginning of the vector.
--
-- `gl_closedir'
-- The address of an alternative implementation of the `closedir'
-- function. It is used if the `GLOB_ALTDIRFUNC' bit is set in
-- the flag parameter. The type of this field is
-- `void (*) (void *)'.
--
-- This is a GNU extension.
--
-- `gl_readdir'
-- The address of an alternative implementation of the
-- `readdir64' function used to read the contents of a
-- directory. It is used if the `GLOB_ALTDIRFUNC' bit is set in
-- the flag parameter. The type of this field is
-- `struct dirent64 *(*) (void *)'.
--
-- This is a GNU extension.
--
-- `gl_opendir'
-- The address of an alternative implementation of the `opendir'
-- function. It is used if the `GLOB_ALTDIRFUNC' bit is set in
-- the flag parameter. The type of this field is
-- `void *(*) (const char *)'.
--
-- This is a GNU extension.
--
-- `gl_stat'
-- The address of an alternative implementation of the `stat64'
-- function to get information about an object in the
-- filesystem. It is used if the `GLOB_ALTDIRFUNC' bit is set
-- in the flag parameter. The type of this field is
-- `int (*) (const char *, struct stat64 *)'.
--
-- This is a GNU extension.
--
-- `gl_lstat'
-- The address of an alternative implementation of the `lstat64'
-- function to get information about an object in the
-- filesystems, not following symbolic links. It is used if the
-- `GLOB_ALTDIRFUNC' bit is set in the flag parameter. The type
-- of this field is `int (*) (const char *, struct stat64 *)'.
--
-- This is a GNU extension.
--
-- - Function: int glob (const char *PATTERN, int FLAGS, int (*ERRFUNC)
-- (const char *FILENAME, int ERROR-CODE), glob_t *VECTOR-PTR)
-- The function `glob' does globbing using the pattern PATTERN in the
-- current directory. It puts the result in a newly allocated
-- vector, and stores the size and address of this vector into
-- `*VECTOR-PTR'. The argument FLAGS is a combination of bit flags;
-- see *Note Flags for Globbing::, for details of the flags.
--
-- The result of globbing is a sequence of file names. The function
-- `glob' allocates a string for each resulting word, then allocates
-- a vector of type `char **' to store the addresses of these
-- strings. The last element of the vector is a null pointer. This
-- vector is called the "word vector".
--
-- To return this vector, `glob' stores both its address and its
-- length (number of elements, not counting the terminating null
-- pointer) into `*VECTOR-PTR'.
--
-- Normally, `glob' sorts the file names alphabetically before
-- returning them. You can turn this off with the flag `GLOB_NOSORT'
-- if you want to get the information as fast as possible. Usually
-- it's a good idea to let `glob' sort them--if you process the files
-- in alphabetical order, the users will have a feel for the rate of
-- progress that your application is making.
--
-- If `glob' succeeds, it returns 0. Otherwise, it returns one of
-- these error codes:
--
-- `GLOB_ABORTED'
-- There was an error opening a directory, and you used the flag
-- `GLOB_ERR' or your specified ERRFUNC returned a nonzero value.
-- *Note Flags for Globbing::, for an explanation of the
-- `GLOB_ERR' flag and ERRFUNC.
--
-- `GLOB_NOMATCH'
-- The pattern didn't match any existing files. If you use the
-- `GLOB_NOCHECK' flag, then you never get this error code,
-- because that flag tells `glob' to _pretend_ that the pattern
-- matched at least one file.
--
-- `GLOB_NOSPACE'
-- It was impossible to allocate memory to hold the result.
--
-- In the event of an error, `glob' stores information in
-- `*VECTOR-PTR' about all the matches it has found so far.
--
-- It is important to notice that the `glob' function will not fail if
-- it encounters directories or files which cannot be handled without
-- the LFS interfaces. The implementation of `glob' is supposed to
-- use these functions internally. This at least is the assumptions
-- made by the Unix standard. The GNU extension of allowing the user
-- to provide own directory handling and `stat' functions complicates
-- things a bit. If these callback functions are used and a large
-- file or directory is encountered `glob' _can_ fail.
--
-- - Function: int glob64 (const char *PATTERN, int FLAGS, int (*ERRFUNC)
-- (const char *FILENAME, int ERROR-CODE), glob64_t *VECTOR-PTR)
-- The `glob64' function was added as part of the Large File Summit
-- extensions but is not part of the original LFS proposal. The
-- reason for this is simple: it is not necessary. The necessity for
-- a `glob64' function is added by the extensions of the GNU `glob'
-- implementation which allows the user to provide own directory
-- handling and `stat' functions. The `readdir' and `stat' functions
-- do depend on the choice of `_FILE_OFFSET_BITS' since the definition
-- of the types `struct dirent' and `struct stat' will change
-- depending on the choice.
--
-- Beside this difference the `glob64' works just like `glob' in all
-- aspects.
--
-- This function is a GNU extension.
--
--
--File: libc.info, Node: Flags for Globbing, Next: More Flags for Globbing, Prev: Calling Glob, Up: Globbing
--
--Flags for Globbing
--------------------
--
-- This section describes the flags that you can specify in the FLAGS
--argument to `glob'. Choose the flags you want, and combine them with
--the C bitwise OR operator `|'.
--
--`GLOB_APPEND'
-- Append the words from this expansion to the vector of words
-- produced by previous calls to `glob'. This way you can
-- effectively expand several words as if they were concatenated with
-- spaces between them.
--
-- In order for appending to work, you must not modify the contents
-- of the word vector structure between calls to `glob'. And, if you
-- set `GLOB_DOOFFS' in the first call to `glob', you must also set
-- it when you append to the results.
--
-- Note that the pointer stored in `gl_pathv' may no longer be valid
-- after you call `glob' the second time, because `glob' might have
-- relocated the vector. So always fetch `gl_pathv' from the
-- `glob_t' structure after each `glob' call; *never* save the
-- pointer across calls.
--
--`GLOB_DOOFFS'
-- Leave blank slots at the beginning of the vector of words. The
-- `gl_offs' field says how many slots to leave. The blank slots
-- contain null pointers.
--
--`GLOB_ERR'
-- Give up right away and report an error if there is any difficulty
-- reading the directories that must be read in order to expand
-- PATTERN fully. Such difficulties might include a directory in
-- which you don't have the requisite access. Normally, `glob' tries
-- its best to keep on going despite any errors, reading whatever
-- directories it can.
--
-- You can exercise even more control than this by specifying an
-- error-handler function ERRFUNC when you call `glob'. If ERRFUNC
-- is not a null pointer, then `glob' doesn't give up right away when
-- it can't read a directory; instead, it calls ERRFUNC with two
-- arguments, like this:
--
-- (*ERRFUNC) (FILENAME, ERROR-CODE)
--
-- The argument FILENAME is the name of the directory that `glob'
-- couldn't open or couldn't read, and ERROR-CODE is the `errno'
-- value that was reported to `glob'.
--
-- If the error handler function returns nonzero, then `glob' gives up
-- right away. Otherwise, it continues.
--
--`GLOB_MARK'
-- If the pattern matches the name of a directory, append `/' to the
-- directory's name when returning it.
--
--`GLOB_NOCHECK'
-- If the pattern doesn't match any file names, return the pattern
-- itself as if it were a file name that had been matched.
-- (Normally, when the pattern doesn't match anything, `glob' returns
-- that there were no matches.)
--
--`GLOB_NOSORT'
-- Don't sort the file names; return them in no particular order.
-- (In practice, the order will depend on the order of the entries in
-- the directory.) The only reason _not_ to sort is to save time.
--
--`GLOB_NOESCAPE'
-- Don't treat the `\' character specially in patterns. Normally,
-- `\' quotes the following character, turning off its special meaning
-- (if any) so that it matches only itself. When quoting is enabled,
-- the pattern `\?' matches only the string `?', because the question
-- mark in the pattern acts like an ordinary character.
--
-- If you use `GLOB_NOESCAPE', then `\' is an ordinary character.
--
-- `glob' does its work by calling the function `fnmatch' repeatedly.
-- It handles the flag `GLOB_NOESCAPE' by turning on the
-- `FNM_NOESCAPE' flag in calls to `fnmatch'.
--
--
--File: libc.info, Node: More Flags for Globbing, Prev: Flags for Globbing, Up: Globbing
--
--More Flags for Globbing
-------------------------
--
-- Beside the flags described in the last section, the GNU
--implementation of `glob' allows a few more flags which are also defined
--in the `glob.h' file. Some of the extensions implement functionality
--which is available in modern shell implementations.
--
--`GLOB_PERIOD'
-- The `.' character (period) is treated special. It cannot be
-- matched by wildcards. *Note Wildcard Matching::, `FNM_PERIOD'.
--
--`GLOB_MAGCHAR'
-- The `GLOB_MAGCHAR' value is not to be given to `glob' in the FLAGS
-- parameter. Instead, `glob' sets this bit in the GL_FLAGS element
-- of the GLOB_T structure provided as the result if the pattern used
-- for matching contains any wildcard character.
--
--`GLOB_ALTDIRFUNC'
-- Instead of the using the using the normal functions for accessing
-- the filesystem the `glob' implementation uses the user-supplied
-- functions specified in the structure pointed to by PGLOB
-- parameter. For more information about the functions refer to the
-- sections about directory handling see *Note Accessing
-- Directories::, and *Note Reading Attributes::.
--
--`GLOB_BRACE'
-- If this flag is given the handling of braces in the pattern is
-- changed. It is now required that braces appear correctly grouped.
-- I.e., for each opening brace there must be a closing one. Braces
-- can be used recursively. So it is possible to define one brace
-- expression in another one. It is important to note that the range
-- of each brace expression is completely contained in the outer
-- brace expression (if there is one).
--
-- The string between the matching braces is separated into single
-- expressions by splitting at `,' (comma) characters. The commas
-- themselves are discarded. Please note what we said above about
-- recursive brace expressions. The commas used to separate the
-- subexpressions must be at the same level. Commas in brace
-- subexpressions are not matched. They are used during expansion of
-- the brace expression of the deeper level. The example below shows
-- this
--
-- glob ("{foo/{,bar,biz},baz}", GLOB_BRACE, NULL, &result)
--
-- is equivalent to the sequence
--
-- glob ("foo/", GLOB_BRACE, NULL, &result)
-- glob ("foo/bar", GLOB_BRACE|GLOB_APPEND, NULL, &result)
-- glob ("foo/biz", GLOB_BRACE|GLOB_APPEND, NULL, &result)
-- glob ("baz", GLOB_BRACE|GLOB_APPEND, NULL, &result)
--
-- if we leave aside error handling.
--
--`GLOB_NOMAGIC'
-- If the pattern contains no wildcard constructs (it is a literal
-- file name), return it as the sole "matching" word, even if no file
-- exists by that name.
--
--`GLOB_TILDE'
-- If this flag is used the character `~' (tilde) is handled special
-- if it appears at the beginning of the pattern. Instead of being
-- taken verbatim it is used to represent the home directory of a
-- known user.
--
-- If `~' is the only character in pattern or it is followed by a `/'
-- (slash), the home directory of the process owner is substituted.
-- Using `getlogin' and `getpwnam' the information is read from the
-- system databases. As an example take user `bart' with his home
-- directory at `/home/bart'. For him a call like
--
-- glob ("~/bin/*", GLOB_TILDE, NULL, &result)
--
-- would return the contents of the directory `/home/bart/bin'.
-- Instead of referring to the own home directory it is also possible
-- to name the home directory of other users. To do so one has to
-- append the user name after the tilde character. So the contents
-- of user `homer''s `bin' directory can be retrieved by
--
-- glob ("~homer/bin/*", GLOB_TILDE, NULL, &result)
--
-- If the user name is not valid or the home directory cannot be
-- determined for some reason the pattern is left untouched and
-- itself used as the result. I.e., if in the last example `home' is
-- not available the tilde expansion yields to `"~homer/bin/*"' and
-- `glob' is not looking for a directory named `~homer'.
--
-- This functionality is equivalent to what is available in C-shells
-- if the `nonomatch' flag is set.
--
--`GLOB_TILDE_CHECK'
-- If this flag is used `glob' behaves like as if `GLOB_TILDE' is
-- given. The only difference is that if the user name is not
-- available or the home directory cannot be determined for other
-- reasons this leads to an error. `glob' will return `GLOB_NOMATCH'
-- instead of using the pattern itself as the name.
--
-- This functionality is equivalent to what is available in C-shells
-- if `nonomatch' flag is not set.
--
--`GLOB_ONLYDIR'
-- If this flag is used the globbing function takes this as a *hint*
-- that the caller is only interested in directories matching the
-- pattern. If the information about the type of the file is easily
-- available non-directories will be rejected but no extra work will
-- be done to determine the information for each file. I.e., the
-- caller must still be able to filter directories out.
--
-- This functionality is only available with the GNU `glob'
-- implementation. It is mainly used internally to increase the
-- performance but might be useful for a user as well and therefore is
-- documented here.
--
-- Calling `glob' will in most cases allocate resources which are used
--to represent the result of the function call. If the same object of
--type `glob_t' is used in multiple call to `glob' the resources are
--freed or reused so that no leaks appear. But this does not include the
--time when all `glob' calls are done.
--
-- - Function: void globfree (glob_t *PGLOB)
-- The `globfree' function frees all resources allocated by previous
-- calls to `glob' associated with the object pointed to by PGLOB.
-- This function should be called whenever the currently used
-- `glob_t' typed object isn't used anymore.
--
-- - Function: void globfree64 (glob64_t *PGLOB)
-- This function is equivalent to `globfree' but it frees records of
-- type `glob64_t' which were allocated by `glob64'.
--
--
--File: libc.info, Node: Regular Expressions, Next: Word Expansion, Prev: Globbing, Up: Pattern Matching
--
--Regular Expression Matching
--===========================
--
-- The GNU C library supports two interfaces for matching regular
--expressions. One is the standard POSIX.2 interface, and the other is
--what the GNU system has had for many years.
--
-- Both interfaces are declared in the header file `regex.h'. If you
--define `_POSIX_C_SOURCE', then only the POSIX.2 functions, structures,
--and constants are declared.
--
--* Menu:
--
--* POSIX Regexp Compilation:: Using `regcomp' to prepare to match.
--* Flags for POSIX Regexps:: Syntax variations for `regcomp'.
--* Matching POSIX Regexps:: Using `regexec' to match the compiled
-- pattern that you get from `regcomp'.
--* Regexp Subexpressions:: Finding which parts of the string were matched.
--* Subexpression Complications:: Find points of which parts were matched.
--* Regexp Cleanup:: Freeing storage; reporting errors.
--
--
--File: libc.info, Node: POSIX Regexp Compilation, Next: Flags for POSIX Regexps, Up: Regular Expressions
--
--POSIX Regular Expression Compilation
--------------------------------------
--
-- Before you can actually match a regular expression, you must
--"compile" it. This is not true compilation--it produces a special data
--structure, not machine instructions. But it is like ordinary
--compilation in that its purpose is to enable you to "execute" the
--pattern fast. (*Note Matching POSIX Regexps::, for how to use the
--compiled regular expression for matching.)
--
-- There is a special data type for compiled regular expressions:
--
-- - Data Type: regex_t
-- This type of object holds a compiled regular expression. It is
-- actually a structure. It has just one field that your programs
-- should look at:
--
-- `re_nsub'
-- This field holds the number of parenthetical subexpressions
-- in the regular expression that was compiled.
--
-- There are several other fields, but we don't describe them here,
-- because only the functions in the library should use them.
--
-- After you create a `regex_t' object, you can compile a regular
--expression into it by calling `regcomp'.
--
-- - Function: int regcomp (regex_t *COMPILED, const char *PATTERN, int
-- CFLAGS)
-- The function `regcomp' "compiles" a regular expression into a data
-- structure that you can use with `regexec' to match against a
-- string. The compiled regular expression format is designed for
-- efficient matching. `regcomp' stores it into `*COMPILED'.
--
-- It's up to you to allocate an object of type `regex_t' and pass its
-- address to `regcomp'.
--
-- The argument CFLAGS lets you specify various options that control
-- the syntax and semantics of regular expressions. *Note Flags for
-- POSIX Regexps::.
--
-- If you use the flag `REG_NOSUB', then `regcomp' omits from the
-- compiled regular expression the information necessary to record
-- how subexpressions actually match. In this case, you might as well
-- pass `0' for the MATCHPTR and NMATCH arguments when you call
-- `regexec'.
--
-- If you don't use `REG_NOSUB', then the compiled regular expression
-- does have the capacity to record how subexpressions match. Also,
-- `regcomp' tells you how many subexpressions PATTERN has, by
-- storing the number in `COMPILED->re_nsub'. You can use that value
-- to decide how long an array to allocate to hold information about
-- subexpression matches.
--
-- `regcomp' returns `0' if it succeeds in compiling the regular
-- expression; otherwise, it returns a nonzero error code (see the
-- table below). You can use `regerror' to produce an error message
-- string describing the reason for a nonzero value; see *Note Regexp
-- Cleanup::.
--
--
-- Here are the possible nonzero values that `regcomp' can return:
--
--`REG_BADBR'
-- There was an invalid `\{...\}' construct in the regular
-- expression. A valid `\{...\}' construct must contain either a
-- single number, or two numbers in increasing order separated by a
-- comma.
--
--`REG_BADPAT'
-- There was a syntax error in the regular expression.
--
--`REG_BADRPT'
-- A repetition operator such as `?' or `*' appeared in a bad
-- position (with no preceding subexpression to act on).
--
--`REG_ECOLLATE'
-- The regular expression referred to an invalid collating element
-- (one not defined in the current locale for string collation).
-- *Note Locale Categories::.
--
--`REG_ECTYPE'
-- The regular expression referred to an invalid character class name.
--
--`REG_EESCAPE'
-- The regular expression ended with `\'.
--
--`REG_ESUBREG'
-- There was an invalid number in the `\DIGIT' construct.
--
--`REG_EBRACK'
-- There were unbalanced square brackets in the regular expression.
--
--`REG_EPAREN'
-- An extended regular expression had unbalanced parentheses, or a
-- basic regular expression had unbalanced `\(' and `\)'.
--
--`REG_EBRACE'
-- The regular expression had unbalanced `\{' and `\}'.
--
--`REG_ERANGE'
-- One of the endpoints in a range expression was invalid.
--
--`REG_ESPACE'
-- `regcomp' ran out of memory.
--
--
--File: libc.info, Node: Flags for POSIX Regexps, Next: Matching POSIX Regexps, Prev: POSIX Regexp Compilation, Up: Regular Expressions
--
--Flags for POSIX Regular Expressions
-------------------------------------
--
-- These are the bit flags that you can use in the CFLAGS operand when
--compiling a regular expression with `regcomp'.
--
--`REG_EXTENDED'
-- Treat the pattern as an extended regular expression, rather than
-- as a basic regular expression.
--
--`REG_ICASE'
-- Ignore case when matching letters.
--
--`REG_NOSUB'
-- Don't bother storing the contents of the MATCHES-PTR array.
--
--`REG_NEWLINE'
-- Treat a newline in STRING as dividing STRING into multiple lines,
-- so that `$' can match before the newline and `^' can match after.
-- Also, don't permit `.' to match a newline, and don't permit
-- `[^...]' to match a newline.
--
-- Otherwise, newline acts like any other ordinary character.
--
--
--File: libc.info, Node: Matching POSIX Regexps, Next: Regexp Subexpressions, Prev: Flags for POSIX Regexps, Up: Regular Expressions
--
--Matching a Compiled POSIX Regular Expression
----------------------------------------------
--
-- Once you have compiled a regular expression, as described in *Note
--POSIX Regexp Compilation::, you can match it against strings using
--`regexec'. A match anywhere inside the string counts as success,
--unless the regular expression contains anchor characters (`^' or `$').
--
-- - Function: int regexec (regex_t *COMPILED, char *STRING, size_t
-- NMATCH, regmatch_t MATCHPTR [], int EFLAGS)
-- This function tries to match the compiled regular expression
-- `*COMPILED' against STRING.
--
-- `regexec' returns `0' if the regular expression matches;
-- otherwise, it returns a nonzero value. See the table below for
-- what nonzero values mean. You can use `regerror' to produce an
-- error message string describing the reason for a nonzero value;
-- see *Note Regexp Cleanup::.
--
-- The argument EFLAGS is a word of bit flags that enable various
-- options.
--
-- If you want to get information about what part of STRING actually
-- matched the regular expression or its subexpressions, use the
-- arguments MATCHPTR and NMATCH. Otherwise, pass `0' for NMATCH,
-- and `NULL' for MATCHPTR. *Note Regexp Subexpressions::.
--
-- You must match the regular expression with the same set of current
--locales that were in effect when you compiled the regular expression.
--
-- The function `regexec' accepts the following flags in the EFLAGS
--argument:
--
--`REG_NOTBOL'
-- Do not regard the beginning of the specified string as the
-- beginning of a line; more generally, don't make any assumptions
-- about what text might precede it.
--
--`REG_NOTEOL'
-- Do not regard the end of the specified string as the end of a
-- line; more generally, don't make any assumptions about what text
-- might follow it.
--
-- Here are the possible nonzero values that `regexec' can return:
--
--`REG_NOMATCH'
-- The pattern didn't match the string. This isn't really an error.
--
--`REG_ESPACE'
-- `regexec' ran out of memory.
--
--
--File: libc.info, Node: Regexp Subexpressions, Next: Subexpression Complications, Prev: Matching POSIX Regexps, Up: Regular Expressions
--
--Match Results with Subexpressions
-----------------------------------
--
-- When `regexec' matches parenthetical subexpressions of PATTERN, it
--records which parts of STRING they match. It returns that information
--by storing the offsets into an array whose elements are structures of
--type `regmatch_t'. The first element of the array (index `0') records
--the part of the string that matched the entire regular expression.
--Each other element of the array records the beginning and end of the
--part that matched a single parenthetical subexpression.
--
-- - Data Type: regmatch_t
-- This is the data type of the MATCHARRAY array that you pass to
-- `regexec'. It contains two structure fields, as follows:
--
-- `rm_so'
-- The offset in STRING of the beginning of a substring. Add
-- this value to STRING to get the address of that part.
--
-- `rm_eo'
-- The offset in STRING of the end of the substring.
--
-- - Data Type: regoff_t
-- `regoff_t' is an alias for another signed integer type. The
-- fields of `regmatch_t' have type `regoff_t'.
--
-- The `regmatch_t' elements correspond to subexpressions positionally;
--the first element (index `1') records where the first subexpression
--matched, the second element records the second subexpression, and so
--on. The order of the subexpressions is the order in which they begin.
--
-- When you call `regexec', you specify how long the MATCHPTR array is,
--with the NMATCH argument. This tells `regexec' how many elements to
--store. If the actual regular expression has more than NMATCH
--subexpressions, then you won't get offset information about the rest of
--them. But this doesn't alter whether the pattern matches a particular
--string or not.
--
-- If you don't want `regexec' to return any information about where
--the subexpressions matched, you can either supply `0' for NMATCH, or
--use the flag `REG_NOSUB' when you compile the pattern with `regcomp'.
--
--
--File: libc.info, Node: Subexpression Complications, Next: Regexp Cleanup, Prev: Regexp Subexpressions, Up: Regular Expressions
--
--Complications in Subexpression Matching
-----------------------------------------
--
-- Sometimes a subexpression matches a substring of no characters. This
--happens when `f\(o*\)' matches the string `fum'. (It really matches
--just the `f'.) In this case, both of the offsets identify the point in
--the string where the null substring was found. In this example, the
--offsets are both `1'.
--
-- Sometimes the entire regular expression can match without using some
--of its subexpressions at all--for example, when `ba\(na\)*' matches the
--string `ba', the parenthetical subexpression is not used. When this
--happens, `regexec' stores `-1' in both fields of the element for that
--subexpression.
--
-- Sometimes matching the entire regular expression can match a
--particular subexpression more than once--for example, when `ba\(na\)*'
--matches the string `bananana', the parenthetical subexpression matches
--three times. When this happens, `regexec' usually stores the offsets
--of the last part of the string that matched the subexpression. In the
--case of `bananana', these offsets are `6' and `8'.
--
-- But the last match is not always the one that is chosen. It's more
--accurate to say that the last _opportunity_ to match is the one that
--takes precedence. What this means is that when one subexpression
--appears within another, then the results reported for the inner
--subexpression reflect whatever happened on the last match of the outer
--subexpression. For an example, consider `\(ba\(na\)*s \)*' matching
--the string `bananas bas '. The last time the inner expression actually
--matches is near the end of the first word. But it is _considered_
--again in the second word, and fails to match there. `regexec' reports
--nonuse of the "na" subexpression.
--
-- Another place where this rule applies is when the regular expression
-- \(ba\(na\)*s \|nefer\(ti\)* \)*
--
--matches `bananas nefertiti'. The "na" subexpression does match in the
--first word, but it doesn't match in the second word because the other
--alternative is used there. Once again, the second repetition of the
--outer subexpression overrides the first, and within that second
--repetition, the "na" subexpression is not used. So `regexec' reports
--nonuse of the "na" subexpression.
--
--
--File: libc.info, Node: Regexp Cleanup, Prev: Subexpression Complications, Up: Regular Expressions
--
--POSIX Regexp Matching Cleanup
-------------------------------
--
-- When you are finished using a compiled regular expression, you can
--free the storage it uses by calling `regfree'.
--
-- - Function: void regfree (regex_t *COMPILED)
-- Calling `regfree' frees all the storage that `*COMPILED' points
-- to. This includes various internal fields of the `regex_t'
-- structure that aren't documented in this manual.
--
-- `regfree' does not free the object `*COMPILED' itself.
--
-- You should always free the space in a `regex_t' structure with
--`regfree' before using the structure to compile another regular
--expression.
--
-- When `regcomp' or `regexec' reports an error, you can use the
--function `regerror' to turn it into an error message string.
--
-- - Function: size_t regerror (int ERRCODE, regex_t *COMPILED, char
-- *BUFFER, size_t LENGTH)
-- This function produces an error message string for the error code
-- ERRCODE, and stores the string in LENGTH bytes of memory starting
-- at BUFFER. For the COMPILED argument, supply the same compiled
-- regular expression structure that `regcomp' or `regexec' was
-- working with when it got the error. Alternatively, you can supply
-- `NULL' for COMPILED; you will still get a meaningful error
-- message, but it might not be as detailed.
--
-- If the error message can't fit in LENGTH bytes (including a
-- terminating null character), then `regerror' truncates it. The
-- string that `regerror' stores is always null-terminated even if it
-- has been truncated.
--
-- The return value of `regerror' is the minimum length needed to
-- store the entire error message. If this is less than LENGTH, then
-- the error message was not truncated, and you can use it.
-- Otherwise, you should call `regerror' again with a larger buffer.
--
-- Here is a function which uses `regerror', but always dynamically
-- allocates a buffer for the error message:
--
-- char *get_regerror (int errcode, regex_t *compiled)
-- {
-- size_t length = regerror (errcode, compiled, NULL, 0);
-- char *buffer = xmalloc (length);
-- (void) regerror (errcode, compiled, buffer, length);
-- return buffer;
-- }
--
--
--File: libc.info, Node: Word Expansion, Prev: Regular Expressions, Up: Pattern Matching
--
--Shell-Style Word Expansion
--==========================
--
-- "Word expansion" means the process of splitting a string into
--"words" and substituting for variables, commands, and wildcards just as
--the shell does.
--
-- For example, when you write `ls -l foo.c', this string is split into
--three separate words--`ls', `-l' and `foo.c'. This is the most basic
--function of word expansion.
--
-- When you write `ls *.c', this can become many words, because the
--word `*.c' can be replaced with any number of file names. This is
--called "wildcard expansion", and it is also a part of word expansion.
--
-- When you use `echo $PATH' to print your path, you are taking
--advantage of "variable substitution", which is also part of word
--expansion.
--
-- Ordinary programs can perform word expansion just like the shell by
--calling the library function `wordexp'.
--
--* Menu:
--
--* Expansion Stages:: What word expansion does to a string.
--* Calling Wordexp:: How to call `wordexp'.
--* Flags for Wordexp:: Options you can enable in `wordexp'.
--* Wordexp Example:: A sample program that does word expansion.
--* Tilde Expansion:: Details of how tilde expansion works.
--* Variable Substitution:: Different types of variable substitution.
--
--
--File: libc.info, Node: Expansion Stages, Next: Calling Wordexp, Up: Word Expansion
--
--The Stages of Word Expansion
------------------------------
--
-- When word expansion is applied to a sequence of words, it performs
--the following transformations in the order shown here:
--
-- 1. "Tilde expansion": Replacement of `~foo' with the name of the home
-- directory of `foo'.
--
-- 2. Next, three different transformations are applied in the same step,
-- from left to right:
--
-- * "Variable substitution": Environment variables are
-- substituted for references such as `$foo'.
--
-- * "Command substitution": Constructs such as ``cat foo`' and
-- the equivalent `$(cat foo)' are replaced with the output from
-- the inner command.
--
-- * "Arithmetic expansion": Constructs such as `$(($x-1))' are
-- replaced with the result of the arithmetic computation.
--
-- 3. "Field splitting": subdivision of the text into "words".
--
-- 4. "Wildcard expansion": The replacement of a construct such as `*.c'
-- with a list of `.c' file names. Wildcard expansion applies to an
-- entire word at a time, and replaces that word with 0 or more file
-- names that are themselves words.
--
-- 5. "Quote removal": The deletion of string-quotes, now that they have
-- done their job by inhibiting the above transformations when
-- appropriate.
--
-- For the details of these transformations, and how to write the
--constructs that use them, see `The BASH Manual' (to appear).
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-16 glibc-2.3.2-200304020432/manual/libc.info-16
---- glibc-2.3.2/manual/libc.info-16 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-16 Thu Jan 1 01:00:00 1970
-@@ -1,1127 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Calling Wordexp, Next: Flags for Wordexp, Prev: Expansion Stages, Up: Word Expansion
--
--Calling `wordexp'
-------------------
--
-- All the functions, constants and data types for word expansion are
--declared in the header file `wordexp.h'.
--
-- Word expansion produces a vector of words (strings). To return this
--vector, `wordexp' uses a special data type, `wordexp_t', which is a
--structure. You pass `wordexp' the address of the structure, and it
--fills in the structure's fields to tell you about the results.
--
-- - Data Type: wordexp_t
-- This data type holds a pointer to a word vector. More precisely,
-- it records both the address of the word vector and its size.
--
-- `we_wordc'
-- The number of elements in the vector.
--
-- `we_wordv'
-- The address of the vector. This field has type `char **'.
--
-- `we_offs'
-- The offset of the first real element of the vector, from its
-- nominal address in the `we_wordv' field. Unlike the other
-- fields, this is always an input to `wordexp', rather than an
-- output from it.
--
-- If you use a nonzero offset, then that many elements at the
-- beginning of the vector are left empty. (The `wordexp'
-- function fills them with null pointers.)
--
-- The `we_offs' field is meaningful only if you use the
-- `WRDE_DOOFFS' flag. Otherwise, the offset is always zero
-- regardless of what is in this field, and the first real
-- element comes at the beginning of the vector.
--
-- - Function: int wordexp (const char *WORDS, wordexp_t
-- *WORD-VECTOR-PTR, int FLAGS)
-- Perform word expansion on the string WORDS, putting the result in
-- a newly allocated vector, and store the size and address of this
-- vector into `*WORD-VECTOR-PTR'. The argument FLAGS is a
-- combination of bit flags; see *Note Flags for Wordexp::, for
-- details of the flags.
--
-- You shouldn't use any of the characters `|&;<>' in the string
-- WORDS unless they are quoted; likewise for newline. If you use
-- these characters unquoted, you will get the `WRDE_BADCHAR' error
-- code. Don't use parentheses or braces unless they are quoted or
-- part of a word expansion construct. If you use quotation
-- characters `'"`', they should come in pairs that balance.
--
-- The results of word expansion are a sequence of words. The
-- function `wordexp' allocates a string for each resulting word, then
-- allocates a vector of type `char **' to store the addresses of
-- these strings. The last element of the vector is a null pointer.
-- This vector is called the "word vector".
--
-- To return this vector, `wordexp' stores both its address and its
-- length (number of elements, not counting the terminating null
-- pointer) into `*WORD-VECTOR-PTR'.
--
-- If `wordexp' succeeds, it returns 0. Otherwise, it returns one of
-- these error codes:
--
-- `WRDE_BADCHAR'
-- The input string WORDS contains an unquoted invalid character
-- such as `|'.
--
-- `WRDE_BADVAL'
-- The input string refers to an undefined shell variable, and
-- you used the flag `WRDE_UNDEF' to forbid such references.
--
-- `WRDE_CMDSUB'
-- The input string uses command substitution, and you used the
-- flag `WRDE_NOCMD' to forbid command substitution.
--
-- `WRDE_NOSPACE'
-- It was impossible to allocate memory to hold the result. In
-- this case, `wordexp' can store part of the results--as much
-- as it could allocate room for.
--
-- `WRDE_SYNTAX'
-- There was a syntax error in the input string. For example,
-- an unmatched quoting character is a syntax error.
--
-- - Function: void wordfree (wordexp_t *WORD-VECTOR-PTR)
-- Free the storage used for the word-strings and vector that
-- `*WORD-VECTOR-PTR' points to. This does not free the structure
-- `*WORD-VECTOR-PTR' itself--only the other data it points to.
--
--
--File: libc.info, Node: Flags for Wordexp, Next: Wordexp Example, Prev: Calling Wordexp, Up: Word Expansion
--
--Flags for Word Expansion
--------------------------
--
-- This section describes the flags that you can specify in the FLAGS
--argument to `wordexp'. Choose the flags you want, and combine them
--with the C operator `|'.
--
--`WRDE_APPEND'
-- Append the words from this expansion to the vector of words
-- produced by previous calls to `wordexp'. This way you can
-- effectively expand several words as if they were concatenated with
-- spaces between them.
--
-- In order for appending to work, you must not modify the contents
-- of the word vector structure between calls to `wordexp'. And, if
-- you set `WRDE_DOOFFS' in the first call to `wordexp', you must also
-- set it when you append to the results.
--
--`WRDE_DOOFFS'
-- Leave blank slots at the beginning of the vector of words. The
-- `we_offs' field says how many slots to leave. The blank slots
-- contain null pointers.
--
--`WRDE_NOCMD'
-- Don't do command substitution; if the input requests command
-- substitution, report an error.
--
--`WRDE_REUSE'
-- Reuse a word vector made by a previous call to `wordexp'. Instead
-- of allocating a new vector of words, this call to `wordexp' will
-- use the vector that already exists (making it larger if necessary).
--
-- Note that the vector may move, so it is not safe to save an old
-- pointer and use it again after calling `wordexp'. You must fetch
-- `we_pathv' anew after each call.
--
--`WRDE_SHOWERR'
-- Do show any error messages printed by commands run by command
-- substitution. More precisely, allow these commands to inherit the
-- standard error output stream of the current process. By default,
-- `wordexp' gives these commands a standard error stream that
-- discards all output.
--
--`WRDE_UNDEF'
-- If the input refers to a shell variable that is not defined,
-- report an error.
--
--
--File: libc.info, Node: Wordexp Example, Next: Tilde Expansion, Prev: Flags for Wordexp, Up: Word Expansion
--
--`wordexp' Example
-------------------
--
-- Here is an example of using `wordexp' to expand several strings and
--use the results to run a shell command. It also shows the use of
--`WRDE_APPEND' to concatenate the expansions and of `wordfree' to free
--the space allocated by `wordexp'.
--
-- int
-- expand_and_execute (const char *program, const char **options)
-- {
-- wordexp_t result;
-- pid_t pid
-- int status, i;
--
-- /* Expand the string for the program to run. */
-- switch (wordexp (program, &result, 0))
-- {
-- case 0: /* Successful. */
-- break;
-- case WRDE_NOSPACE:
-- /* If the error was `WRDE_NOSPACE',
-- then perhaps part of the result was allocated. */
-- wordfree (&result);
-- default: /* Some other error. */
-- return -1;
-- }
--
-- /* Expand the strings specified for the arguments. */
-- for (i = 0; options[i] != NULL; i++)
-- {
-- if (wordexp (options[i], &result, WRDE_APPEND))
-- {
-- wordfree (&result);
-- return -1;
-- }
-- }
--
-- pid = fork ();
-- if (pid == 0)
-- {
-- /* This is the child process. Execute the command. */
-- execv (result.we_wordv[0], result.we_wordv);
-- exit (EXIT_FAILURE);
-- }
-- else if (pid < 0)
-- /* The fork failed. Report failure. */
-- status = -1;
-- else
-- /* This is the parent process. Wait for the child to complete. */
-- if (waitpid (pid, &status, 0) != pid)
-- status = -1;
--
-- wordfree (&result);
-- return status;
-- }
--
--
--File: libc.info, Node: Tilde Expansion, Next: Variable Substitution, Prev: Wordexp Example, Up: Word Expansion
--
--Details of Tilde Expansion
----------------------------
--
-- It's a standard part of shell syntax that you can use `~' at the
--beginning of a file name to stand for your own home directory. You can
--use `~USER' to stand for USER's home directory.
--
-- "Tilde expansion" is the process of converting these abbreviations
--to the directory names that they stand for.
--
-- Tilde expansion applies to the `~' plus all following characters up
--to whitespace or a slash. It takes place only at the beginning of a
--word, and only if none of the characters to be transformed is quoted in
--any way.
--
-- Plain `~' uses the value of the environment variable `HOME' as the
--proper home directory name. `~' followed by a user name uses
--`getpwname' to look up that user in the user database, and uses
--whatever directory is recorded there. Thus, `~' followed by your own
--name can give different results from plain `~', if the value of `HOME'
--is not really your home directory.
--
--
--File: libc.info, Node: Variable Substitution, Prev: Tilde Expansion, Up: Word Expansion
--
--Details of Variable Substitution
----------------------------------
--
-- Part of ordinary shell syntax is the use of `$VARIABLE' to
--substitute the value of a shell variable into a command. This is called
--"variable substitution", and it is one part of doing word expansion.
--
-- There are two basic ways you can write a variable reference for
--substitution:
--
--`${VARIABLE}'
-- If you write braces around the variable name, then it is completely
-- unambiguous where the variable name ends. You can concatenate
-- additional letters onto the end of the variable value by writing
-- them immediately after the close brace. For example, `${foo}s'
-- expands into `tractors'.
--
--`$VARIABLE'
-- If you do not put braces around the variable name, then the
-- variable name consists of all the alphanumeric characters and
-- underscores that follow the `$'. The next punctuation character
-- ends the variable name. Thus, `$foo-bar' refers to the variable
-- `foo' and expands into `tractor-bar'.
--
-- When you use braces, you can also use various constructs to modify
--the value that is substituted, or test it in various ways.
--
--`${VARIABLE:-DEFAULT}'
-- Substitute the value of VARIABLE, but if that is empty or
-- undefined, use DEFAULT instead.
--
--`${VARIABLE:=DEFAULT}'
-- Substitute the value of VARIABLE, but if that is empty or
-- undefined, use DEFAULT instead and set the variable to DEFAULT.
--
--`${VARIABLE:?MESSAGE}'
-- If VARIABLE is defined and not empty, substitute its value.
--
-- Otherwise, print MESSAGE as an error message on the standard error
-- stream, and consider word expansion a failure.
--
--`${VARIABLE:+REPLACEMENT}'
-- Substitute REPLACEMENT, but only if VARIABLE is defined and
-- nonempty. Otherwise, substitute nothing for this construct.
--
--`${#VARIABLE}'
-- Substitute a numeral which expresses in base ten the number of
-- characters in the value of VARIABLE. `${#foo}' stands for `7',
-- because `tractor' is seven characters.
--
-- These variants of variable substitution let you remove part of the
--variable's value before substituting it. The PREFIX and SUFFIX are not
--mere strings; they are wildcard patterns, just like the patterns that
--you use to match multiple file names. But in this context, they match
--against parts of the variable value rather than against file names.
--
--`${VARIABLE%%SUFFIX}'
-- Substitute the value of VARIABLE, but first discard from that
-- variable any portion at the end that matches the pattern SUFFIX.
--
-- If there is more than one alternative for how to match against
-- SUFFIX, this construct uses the longest possible match.
--
-- Thus, `${foo%%r*}' substitutes `t', because the largest match for
-- `r*' at the end of `tractor' is `ractor'.
--
--`${VARIABLE%SUFFIX}'
-- Substitute the value of VARIABLE, but first discard from that
-- variable any portion at the end that matches the pattern SUFFIX.
--
-- If there is more than one alternative for how to match against
-- SUFFIX, this construct uses the shortest possible alternative.
--
-- Thus, `${foo%r*}' substitutes `tracto', because the shortest match
-- for `r*' at the end of `tractor' is just `r'.
--
--`${VARIABLE##PREFIX}'
-- Substitute the value of VARIABLE, but first discard from that
-- variable any portion at the beginning that matches the pattern
-- PREFIX.
--
-- If there is more than one alternative for how to match against
-- PREFIX, this construct uses the longest possible match.
--
-- Thus, `${foo##*t}' substitutes `or', because the largest match for
-- `*t' at the beginning of `tractor' is `tract'.
--
--`${VARIABLE#PREFIX}'
-- Substitute the value of VARIABLE, but first discard from that
-- variable any portion at the beginning that matches the pattern
-- PREFIX.
--
-- If there is more than one alternative for how to match against
-- PREFIX, this construct uses the shortest possible alternative.
--
-- Thus, `${foo#*t}' substitutes `ractor', because the shortest match
-- for `*t' at the beginning of `tractor' is just `t'.
--
--
--File: libc.info, Node: I/O Overview, Next: I/O on Streams, Prev: Pattern Matching, Up: Top
--
--Input/Output Overview
--*********************
--
-- Most programs need to do either input (reading data) or output
--(writing data), or most frequently both, in order to do anything
--useful. The GNU C library provides such a large selection of input and
--output functions that the hardest part is often deciding which function
--is most appropriate!
--
-- This chapter introduces concepts and terminology relating to input
--and output. Other chapters relating to the GNU I/O facilities are:
--
-- * *Note I/O on Streams::, which covers the high-level functions that
-- operate on streams, including formatted input and output.
--
-- * *Note Low-Level I/O::, which covers the basic I/O and control
-- functions on file descriptors.
--
-- * *Note File System Interface::, which covers functions for
-- operating on directories and for manipulating file attributes such
-- as access modes and ownership.
--
-- * *Note Pipes and FIFOs::, which includes information on the basic
-- interprocess communication facilities.
--
-- * *Note Sockets::, which covers a more complicated interprocess
-- communication facility with support for networking.
--
-- * *Note Low-Level Terminal Interface::, which covers functions for
-- changing how input and output to terminals or other serial devices
-- are processed.
--
--* Menu:
--
--* I/O Concepts:: Some basic information and terminology.
--* File Names:: How to refer to a file.
--
--
--File: libc.info, Node: I/O Concepts, Next: File Names, Up: I/O Overview
--
--Input/Output Concepts
--=====================
--
-- Before you can read or write the contents of a file, you must
--establish a connection or communications channel to the file. This
--process is called "opening" the file. You can open a file for reading,
--writing, or both.
--
-- The connection to an open file is represented either as a stream or
--as a file descriptor. You pass this as an argument to the functions
--that do the actual read or write operations, to tell them which file to
--operate on. Certain functions expect streams, and others are designed
--to operate on file descriptors.
--
-- When you have finished reading to or writing from the file, you can
--terminate the connection by "closing" the file. Once you have closed a
--stream or file descriptor, you cannot do any more input or output
--operations on it.
--
--* Menu:
--
--* Streams and File Descriptors:: The GNU Library provides two ways
-- to access the contents of files.
--* File Position:: The number of bytes from the
-- beginning of the file.
--
--
--File: libc.info, Node: Streams and File Descriptors, Next: File Position, Up: I/O Concepts
--
--Streams and File Descriptors
------------------------------
--
-- When you want to do input or output to a file, you have a choice of
--two basic mechanisms for representing the connection between your
--program and the file: file descriptors and streams. File descriptors
--are represented as objects of type `int', while streams are represented
--as `FILE *' objects.
--
-- File descriptors provide a primitive, low-level interface to input
--and output operations. Both file descriptors and streams can represent
--a connection to a device (such as a terminal), or a pipe or socket for
--communicating with another process, as well as a normal file. But, if
--you want to do control operations that are specific to a particular kind
--of device, you must use a file descriptor; there are no facilities to
--use streams in this way. You must also use file descriptors if your
--program needs to do input or output in special modes, such as
--nonblocking (or polled) input (*note File Status Flags::).
--
-- Streams provide a higher-level interface, layered on top of the
--primitive file descriptor facilities. The stream interface treats all
--kinds of files pretty much alike--the sole exception being the three
--styles of buffering that you can choose (*note Stream Buffering::).
--
-- The main advantage of using the stream interface is that the set of
--functions for performing actual input and output operations (as opposed
--to control operations) on streams is much richer and more powerful than
--the corresponding facilities for file descriptors. The file descriptor
--interface provides only simple functions for transferring blocks of
--characters, but the stream interface also provides powerful formatted
--input and output functions (`printf' and `scanf') as well as functions
--for character- and line-oriented input and output.
--
-- Since streams are implemented in terms of file descriptors, you can
--extract the file descriptor from a stream and perform low-level
--operations directly on the file descriptor. You can also initially open
--a connection as a file descriptor and then make a stream associated with
--that file descriptor.
--
-- In general, you should stick with using streams rather than file
--descriptors, unless there is some specific operation you want to do that
--can only be done on a file descriptor. If you are a beginning
--programmer and aren't sure what functions to use, we suggest that you
--concentrate on the formatted input functions (*note Formatted Input::)
--and formatted output functions (*note Formatted Output::).
--
-- If you are concerned about portability of your programs to systems
--other than GNU, you should also be aware that file descriptors are not
--as portable as streams. You can expect any system running ISO C to
--support streams, but non-GNU systems may not support file descriptors at
--all, or may only implement a subset of the GNU functions that operate on
--file descriptors. Most of the file descriptor functions in the GNU
--library are included in the POSIX.1 standard, however.
--
--
--File: libc.info, Node: File Position, Prev: Streams and File Descriptors, Up: I/O Concepts
--
--File Position
---------------
--
-- One of the attributes of an open file is its "file position" that
--keeps track of where in the file the next character is to be read or
--written. In the GNU system, and all POSIX.1 systems, the file position
--is simply an integer representing the number of bytes from the beginning
--of the file.
--
-- The file position is normally set to the beginning of the file when
--it is opened, and each time a character is read or written, the file
--position is incremented. In other words, access to the file is normally
--"sequential".
--
-- Ordinary files permit read or write operations at any position within
--the file. Some other kinds of files may also permit this. Files which
--do permit this are sometimes referred to as "random-access" files. You
--can change the file position using the `fseek' function on a stream
--(*note File Positioning::) or the `lseek' function on a file descriptor
--(*note I/O Primitives::). If you try to change the file position on a
--file that doesn't support random access, you get the `ESPIPE' error.
--
-- Streams and descriptors that are opened for "append access" are
--treated specially for output: output to such files is _always_ appended
--sequentially to the _end_ of the file, regardless of the file position.
--However, the file position is still used to control where in the file
--reading is done.
--
-- If you think about it, you'll realize that several programs can read
--a given file at the same time. In order for each program to be able to
--read the file at its own pace, each program must have its own file
--pointer, which is not affected by anything the other programs do.
--
-- In fact, each opening of a file creates a separate file position.
--Thus, if you open a file twice even in the same program, you get two
--streams or descriptors with independent file positions.
--
-- By contrast, if you open a descriptor and then duplicate it to get
--another descriptor, these two descriptors share the same file position:
--changing the file position of one descriptor will affect the other.
--
--
--File: libc.info, Node: File Names, Prev: I/O Concepts, Up: I/O Overview
--
--File Names
--==========
--
-- In order to open a connection to a file, or to perform other
--operations such as deleting a file, you need some way to refer to the
--file. Nearly all files have names that are strings--even files which
--are actually devices such as tape drives or terminals. These strings
--are called "file names". You specify the file name to say which file
--you want to open or operate on.
--
-- This section describes the conventions for file names and how the
--operating system works with them.
--
--* Menu:
--
--* Directories:: Directories contain entries for files.
--* File Name Resolution:: A file name specifies how to look up a file.
--* File Name Errors:: Error conditions relating to file names.
--* File Name Portability:: File name portability and syntax issues.
--
--
--File: libc.info, Node: Directories, Next: File Name Resolution, Up: File Names
--
--Directories
-------------
--
-- In order to understand the syntax of file names, you need to
--understand how the file system is organized into a hierarchy of
--directories.
--
-- A "directory" is a file that contains information to associate other
--files with names; these associations are called "links" or "directory
--entries". Sometimes, people speak of "files in a directory", but in
--reality, a directory only contains pointers to files, not the files
--themselves.
--
-- The name of a file contained in a directory entry is called a "file
--name component". In general, a file name consists of a sequence of one
--or more such components, separated by the slash character (`/'). A
--file name which is just one component names a file with respect to its
--directory. A file name with multiple components names a directory, and
--then a file in that directory, and so on.
--
-- Some other documents, such as the POSIX standard, use the term
--"pathname" for what we call a file name, and either "filename" or
--"pathname component" for what this manual calls a file name component.
--We don't use this terminology because a "path" is something completely
--different (a list of directories to search), and we think that
--"pathname" used for something else will confuse users. We always use
--"file name" and "file name component" (or sometimes just "component",
--where the context is obvious) in GNU documentation. Some macros use
--the POSIX terminology in their names, such as `PATH_MAX'. These macros
--are defined by the POSIX standard, so we cannot change their names.
--
-- You can find more detailed information about operations on
--directories in *Note File System Interface::.
--
--
--File: libc.info, Node: File Name Resolution, Next: File Name Errors, Prev: Directories, Up: File Names
--
--File Name Resolution
----------------------
--
-- A file name consists of file name components separated by slash
--(`/') characters. On the systems that the GNU C library supports,
--multiple successive `/' characters are equivalent to a single `/'
--character.
--
-- The process of determining what file a file name refers to is called
--"file name resolution". This is performed by examining the components
--that make up a file name in left-to-right order, and locating each
--successive component in the directory named by the previous component.
--Of course, each of the files that are referenced as directories must
--actually exist, be directories instead of regular files, and have the
--appropriate permissions to be accessible by the process; otherwise the
--file name resolution fails.
--
-- If a file name begins with a `/', the first component in the file
--name is located in the "root directory" of the process (usually all
--processes on the system have the same root directory). Such a file name
--is called an "absolute file name".
--
-- Otherwise, the first component in the file name is located in the
--current working directory (*note Working Directory::). This kind of
--file name is called a "relative file name".
--
-- The file name components `.' ("dot") and `..' ("dot-dot") have
--special meanings. Every directory has entries for these file name
--components. The file name component `.' refers to the directory
--itself, while the file name component `..' refers to its "parent
--directory" (the directory that contains the link for the directory in
--question). As a special case, `..' in the root directory refers to the
--root directory itself, since it has no parent; thus `/..' is the same
--as `/'.
--
-- Here are some examples of file names:
--
--`/a'
-- The file named `a', in the root directory.
--
--`/a/b'
-- The file named `b', in the directory named `a' in the root
-- directory.
--
--`a'
-- The file named `a', in the current working directory.
--
--`/a/./b'
-- This is the same as `/a/b'.
--
--`./a'
-- The file named `a', in the current working directory.
--
--`../a'
-- The file named `a', in the parent directory of the current working
-- directory.
--
-- A file name that names a directory may optionally end in a `/'. You
--can specify a file name of `/' to refer to the root directory, but the
--empty string is not a meaningful file name. If you want to refer to
--the current working directory, use a file name of `.' or `./'.
--
-- Unlike some other operating systems, the GNU system doesn't have any
--built-in support for file types (or extensions) or file versions as part
--of its file name syntax. Many programs and utilities use conventions
--for file names--for example, files containing C source code usually
--have names suffixed with `.c'--but there is nothing in the file system
--itself that enforces this kind of convention.
--
--
--File: libc.info, Node: File Name Errors, Next: File Name Portability, Prev: File Name Resolution, Up: File Names
--
--File Name Errors
------------------
--
-- Functions that accept file name arguments usually detect these
--`errno' error conditions relating to the file name syntax or trouble
--finding the named file. These errors are referred to throughout this
--manual as the "usual file name errors".
--
--`EACCES'
-- The process does not have search permission for a directory
-- component of the file name.
--
--`ENAMETOOLONG'
-- This error is used when either the total length of a file name is
-- greater than `PATH_MAX', or when an individual file name component
-- has a length greater than `NAME_MAX'. *Note Limits for Files::.
--
-- In the GNU system, there is no imposed limit on overall file name
-- length, but some file systems may place limits on the length of a
-- component.
--
--`ENOENT'
-- This error is reported when a file referenced as a directory
-- component in the file name doesn't exist, or when a component is a
-- symbolic link whose target file does not exist. *Note Symbolic
-- Links::.
--
--`ENOTDIR'
-- A file that is referenced as a directory component in the file name
-- exists, but it isn't a directory.
--
--`ELOOP'
-- Too many symbolic links were resolved while trying to look up the
-- file name. The system has an arbitrary limit on the number of
-- symbolic links that may be resolved in looking up a single file
-- name, as a primitive way to detect loops. *Note Symbolic Links::.
--
--
--File: libc.info, Node: File Name Portability, Prev: File Name Errors, Up: File Names
--
--Portability of File Names
---------------------------
--
-- The rules for the syntax of file names discussed in *Note File
--Names::, are the rules normally used by the GNU system and by other
--POSIX systems. However, other operating systems may use other
--conventions.
--
-- There are two reasons why it can be important for you to be aware of
--file name portability issues:
--
-- * If your program makes assumptions about file name syntax, or
-- contains embedded literal file name strings, it is more difficult
-- to get it to run under other operating systems that use different
-- syntax conventions.
--
-- * Even if you are not concerned about running your program on
-- machines that run other operating systems, it may still be
-- possible to access files that use different naming conventions.
-- For example, you may be able to access file systems on another
-- computer running a different operating system over a network, or
-- read and write disks in formats used by other operating systems.
--
-- The ISO C standard says very little about file name syntax, only that
--file names are strings. In addition to varying restrictions on the
--length of file names and what characters can validly appear in a file
--name, different operating systems use different conventions and syntax
--for concepts such as structured directories and file types or
--extensions. Some concepts such as file versions might be supported in
--some operating systems and not by others.
--
-- The POSIX.1 standard allows implementations to put additional
--restrictions on file name syntax, concerning what characters are
--permitted in file names and on the length of file name and file name
--component strings. However, in the GNU system, you do not need to worry
--about these restrictions; any character except the null character is
--permitted in a file name string, and there are no limits on the length
--of file name strings.
--
--
--File: libc.info, Node: I/O on Streams, Next: Low-Level I/O, Prev: I/O Overview, Up: Top
--
--Input/Output on Streams
--***********************
--
-- This chapter describes the functions for creating streams and
--performing input and output operations on them. As discussed in *Note
--I/O Overview::, a stream is a fairly abstract, high-level concept
--representing a communications channel to a file, device, or process.
--
--* Menu:
--
--* Streams:: About the data type representing a stream.
--* Standard Streams:: Streams to the standard input and output
-- devices are created for you.
--* Opening Streams:: How to create a stream to talk to a file.
--* Closing Streams:: Close a stream when you are finished with it.
--* Streams and Threads:: Issues with streams in threaded programs.
--* Streams and I18N:: Streams in internationalized applications.
--* Simple Output:: Unformatted output by characters and lines.
--* Character Input:: Unformatted input by characters and words.
--* Line Input:: Reading a line or a record from a stream.
--* Unreading:: Peeking ahead/pushing back input just read.
--* Block Input/Output:: Input and output operations on blocks of data.
--* Formatted Output:: `printf' and related functions.
--* Customizing Printf:: You can define new conversion specifiers for
-- `printf' and friends.
--* Formatted Input:: `scanf' and related functions.
--* EOF and Errors:: How you can tell if an I/O error happens.
--* Error Recovery:: What you can do about errors.
--* Binary Streams:: Some systems distinguish between text files
-- and binary files.
--* File Positioning:: About random-access streams.
--* Portable Positioning:: Random access on peculiar ISO C systems.
--* Stream Buffering:: How to control buffering of streams.
--* Other Kinds of Streams:: Streams that do not necessarily correspond
-- to an open file.
--* Formatted Messages:: Print strictly formatted messages.
--
--
--File: libc.info, Node: Streams, Next: Standard Streams, Up: I/O on Streams
--
--Streams
--=======
--
-- For historical reasons, the type of the C data structure that
--represents a stream is called `FILE' rather than "stream". Since most
--of the library functions deal with objects of type `FILE *', sometimes
--the term "file pointer" is also used to mean "stream". This leads to
--unfortunate confusion over terminology in many books on C. This
--manual, however, is careful to use the terms "file" and "stream" only
--in the technical sense.
--
-- The `FILE' type is declared in the header file `stdio.h'.
--
-- - Data Type: FILE
-- This is the data type used to represent stream objects. A `FILE'
-- object holds all of the internal state information about the
-- connection to the associated file, including such things as the
-- file position indicator and buffering information. Each stream
-- also has error and end-of-file status indicators that can be
-- tested with the `ferror' and `feof' functions; see *Note EOF and
-- Errors::.
--
-- `FILE' objects are allocated and managed internally by the
--input/output library functions. Don't try to create your own objects of
--type `FILE'; let the library do it. Your programs should deal only
--with pointers to these objects (that is, `FILE *' values) rather than
--the objects themselves.
--
--
--File: libc.info, Node: Standard Streams, Next: Opening Streams, Prev: Streams, Up: I/O on Streams
--
--Standard Streams
--================
--
-- When the `main' function of your program is invoked, it already has
--three predefined streams open and available for use. These represent
--the "standard" input and output channels that have been established for
--the process.
--
-- These streams are declared in the header file `stdio.h'.
--
-- - Variable: FILE * stdin
-- The "standard input" stream, which is the normal source of input
-- for the program.
--
-- - Variable: FILE * stdout
-- The "standard output" stream, which is used for normal output from
-- the program.
--
-- - Variable: FILE * stderr
-- The "standard error" stream, which is used for error messages and
-- diagnostics issued by the program.
--
-- In the GNU system, you can specify what files or processes
--correspond to these streams using the pipe and redirection facilities
--provided by the shell. (The primitives shells use to implement these
--facilities are described in *Note File System Interface::.) Most other
--operating systems provide similar mechanisms, but the details of how to
--use them can vary.
--
-- In the GNU C library, `stdin', `stdout', and `stderr' are normal
--variables which you can set just like any others. For example, to
--redirect the standard output to a file, you could do:
--
-- fclose (stdout);
-- stdout = fopen ("standard-output-file", "w");
--
-- Note however, that in other systems `stdin', `stdout', and `stderr'
--are macros that you cannot assign to in the normal way. But you can
--use `freopen' to get the effect of closing one and reopening it. *Note
--Opening Streams::.
--
-- The three streams `stdin', `stdout', and `stderr' are not unoriented
--at program start (*note Streams and I18N::).
--
--
--File: libc.info, Node: Opening Streams, Next: Closing Streams, Prev: Standard Streams, Up: I/O on Streams
--
--Opening Streams
--===============
--
-- Opening a file with the `fopen' function creates a new stream and
--establishes a connection between the stream and a file. This may
--involve creating a new file.
--
-- Everything described in this section is declared in the header file
--`stdio.h'.
--
-- - Function: FILE * fopen (const char *FILENAME, const char *OPENTYPE)
-- The `fopen' function opens a stream for I/O to the file FILENAME,
-- and returns a pointer to the stream.
--
-- The OPENTYPE argument is a string that controls how the file is
-- opened and specifies attributes of the resulting stream. It must
-- begin with one of the following sequences of characters:
--
-- `r'
-- Open an existing file for reading only.
--
-- `w'
-- Open the file for writing only. If the file already exists,
-- it is truncated to zero length. Otherwise a new file is
-- created.
--
-- `a'
-- Open a file for append access; that is, writing at the end of
-- file only. If the file already exists, its initial contents
-- are unchanged and output to the stream is appended to the end
-- of the file. Otherwise, a new, empty file is created.
--
-- `r+'
-- Open an existing file for both reading and writing. The
-- initial contents of the file are unchanged and the initial
-- file position is at the beginning of the file.
--
-- `w+'
-- Open a file for both reading and writing. If the file
-- already exists, it is truncated to zero length. Otherwise, a
-- new file is created.
--
-- `a+'
-- Open or create file for both reading and appending. If the
-- file exists, its initial contents are unchanged. Otherwise,
-- a new file is created. The initial file position for reading
-- is at the beginning of the file, but output is always
-- appended to the end of the file.
--
-- As you can see, `+' requests a stream that can do both input and
-- output. The ISO standard says that when using such a stream, you
-- must call `fflush' (*note Stream Buffering::) or a file positioning
-- function such as `fseek' (*note File Positioning::) when switching
-- from reading to writing or vice versa. Otherwise, internal buffers
-- might not be emptied properly. The GNU C library does not have
-- this limitation; you can do arbitrary reading and writing
-- operations on a stream in whatever order.
--
-- Additional characters may appear after these to specify flags for
-- the call. Always put the mode (`r', `w+', etc.) first; that is
-- the only part you are guaranteed will be understood by all systems.
--
-- The GNU C library defines one additional character for use in
-- OPENTYPE: the character `x' insists on creating a new file--if a
-- file FILENAME already exists, `fopen' fails rather than opening
-- it. If you use `x' you are guaranteed that you will not clobber
-- an existing file. This is equivalent to the `O_EXCL' option to
-- the `open' function (*note Opening and Closing Files::).
--
-- The character `b' in OPENTYPE has a standard meaning; it requests
-- a binary stream rather than a text stream. But this makes no
-- difference in POSIX systems (including the GNU system). If both
-- `+' and `b' are specified, they can appear in either order. *Note
-- Binary Streams::.
--
-- If the OPENTYPE string contains the sequence `,ccs=STRING' then
-- STRING is taken as the name of a coded character set and `fopen'
-- will mark the stream as wide-oriented which appropriate conversion
-- functions in place to convert from and to the character set STRING
-- is place. Any other stream is opened initially unoriented and the
-- orientation is decided with the first file operation. If the
-- first operation is a wide character operation, the stream is not
-- only marked as wide-oriented, also the conversion functions to
-- convert to the coded character set used for the current locale are
-- loaded. This will not change anymore from this point on even if
-- the locale selected for the `LC_CTYPE' category is changed.
--
-- Any other characters in OPENTYPE are simply ignored. They may be
-- meaningful in other systems.
--
-- If the open fails, `fopen' returns a null pointer.
--
-- When the sources are compiling with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit machine this function is in fact `fopen64' since the LFS
-- interface replaces transparently the old interface.
--
-- You can have multiple streams (or file descriptors) pointing to the
--same file open at the same time. If you do only input, this works
--straightforwardly, but you must be careful if any output streams are
--included. *Note Stream/Descriptor Precautions::. This is equally true
--whether the streams are in one program (not usual) or in several
--programs (which can easily happen). It may be advantageous to use the
--file locking facilities to avoid simultaneous access. *Note File
--Locks::.
--
-- - Function: FILE * fopen64 (const char *FILENAME, const char *OPENTYPE)
-- This function is similar to `fopen' but the stream it returns a
-- pointer for is opened using `open64'. Therefore this stream can be
-- used even on files larger then 2^31 bytes on 32 bit machines.
--
-- Please note that the return type is still `FILE *'. There is no
-- special `FILE' type for the LFS interface.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `fopen' and
-- so transparently replaces the old interface.
--
-- - Macro: int FOPEN_MAX
-- The value of this macro is an integer constant expression that
-- represents the minimum number of streams that the implementation
-- guarantees can be open simultaneously. You might be able to open
-- more than this many streams, but that is not guaranteed. The
-- value of this constant is at least eight, which includes the three
-- standard streams `stdin', `stdout', and `stderr'. In POSIX.1
-- systems this value is determined by the `OPEN_MAX' parameter;
-- *note General Limits::. In BSD and GNU, it is controlled by the
-- `RLIMIT_NOFILE' resource limit; *note Limits on Resources::.
--
-- - Function: FILE * freopen (const char *FILENAME, const char
-- *OPENTYPE, FILE *STREAM)
-- This function is like a combination of `fclose' and `fopen'. It
-- first closes the stream referred to by STREAM, ignoring any errors
-- that are detected in the process. (Because errors are ignored,
-- you should not use `freopen' on an output stream if you have
-- actually done any output using the stream.) Then the file named by
-- FILENAME is opened with mode OPENTYPE as for `fopen', and
-- associated with the same stream object STREAM.
--
-- If the operation fails, a null pointer is returned; otherwise,
-- `freopen' returns STREAM.
--
-- `freopen' has traditionally been used to connect a standard stream
-- such as `stdin' with a file of your own choice. This is useful in
-- programs in which use of a standard stream for certain purposes is
-- hard-coded. In the GNU C library, you can simply close the
-- standard streams and open new ones with `fopen'. But other
-- systems lack this ability, so using `freopen' is more portable.
--
-- When the sources are compiling with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit machine this function is in fact `freopen64' since the LFS
-- interface replaces transparently the old interface.
--
-- - Function: FILE * freopen64 (const char *FILENAME, const char
-- *OPENTYPE, FILE *STREAM)
-- This function is similar to `freopen'. The only difference is that
-- on 32 bit machine the stream returned is able to read beyond the
-- 2^31 bytes limits imposed by the normal interface. It should be
-- noted that the stream pointed to by STREAM need not be opened
-- using `fopen64' or `freopen64' since its mode is not important for
-- this function.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `freopen'
-- and so transparently replaces the old interface.
--
-- In some situations it is useful to know whether a given stream is
--available for reading or writing. This information is normally not
--available and would have to be remembered separately. Solaris
--introduced a few functions to get this information from the stream
--descriptor and these functions are also available in the GNU C library.
--
-- - Function: int __freadable (FILE *STREAM)
-- The `__freadable' function determines whether the stream STREAM
-- was opened to allow reading. In this case the return value is
-- nonzero. For write-only streams the function returns zero.
--
-- This function is declared in `stdio_ext.h'.
--
-- - Function: int __fwritable (FILE *STREAM)
-- The `__fwritable' function determines whether the stream STREAM
-- was opened to allow writing. In this case the return value is
-- nonzero. For read-only streams the function returns zero.
--
-- This function is declared in `stdio_ext.h'.
--
-- For slightly different kind of problems there are two more functions.
--They provide even finer-grained information.
--
-- - Function: int __freading (FILE *STREAM)
-- The `__freading' function determines whether the stream STREAM was
-- last read from or whether it is opened read-only. In this case
-- the return value is nonzero, otherwise it is zero. Determining
-- whether a stream opened for reading and writing was last used for
-- writing allows to draw conclusions about the content about the
-- buffer, among other things.
--
-- This function is declared in `stdio_ext.h'.
--
-- - Function: int __fwriting (FILE *STREAM)
-- The `__fwriting' function determines whether the stream STREAM was
-- last written to or whether it is opened write-only. In this case
-- the return value is nonzero, otherwise it is zero.
--
-- This function is declared in `stdio_ext.h'.
--
--
--File: libc.info, Node: Closing Streams, Next: Streams and Threads, Prev: Opening Streams, Up: I/O on Streams
--
--Closing Streams
--===============
--
-- When a stream is closed with `fclose', the connection between the
--stream and the file is canceled. After you have closed a stream, you
--cannot perform any additional operations on it.
--
-- - Function: int fclose (FILE *STREAM)
-- This function causes STREAM to be closed and the connection to the
-- corresponding file to be broken. Any buffered output is written
-- and any buffered input is discarded. The `fclose' function returns
-- a value of `0' if the file was closed successfully, and `EOF' if
-- an error was detected.
--
-- It is important to check for errors when you call `fclose' to close
-- an output stream, because real, everyday errors can be detected at
-- this time. For example, when `fclose' writes the remaining
-- buffered output, it might get an error because the disk is full.
-- Even if you know the buffer is empty, errors can still occur when
-- closing a file if you are using NFS.
--
-- The function `fclose' is declared in `stdio.h'.
--
-- To close all streams currently available the GNU C Library provides
--another function.
--
-- - Function: int fcloseall (void)
-- This function causes all open streams of the process to be closed
-- and the connection to corresponding files to be broken. All
-- buffered data is written and any buffered input is discarded. The
-- `fcloseall' function returns a value of `0' if all the files were
-- closed successfully, and `EOF' if an error was detected.
--
-- This function should be used only in special situations, e.g.,
-- when an error occurred and the program must be aborted. Normally
-- each single stream should be closed separately so that problems
-- with individual streams can be identified. It is also problematic
-- since the standard streams (*note Standard Streams::) will also be
-- closed.
--
-- The function `fcloseall' is declared in `stdio.h'.
--
-- If the `main' function to your program returns, or if you call the
--`exit' function (*note Normal Termination::), all open streams are
--automatically closed properly. If your program terminates in any other
--manner, such as by calling the `abort' function (*note Aborting a
--Program::) or from a fatal signal (*note Signal Handling::), open
--streams might not be closed properly. Buffered output might not be
--flushed and files may be incomplete. For more information on buffering
--of streams, see *Note Stream Buffering::.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-17 glibc-2.3.2-200304020432/manual/libc.info-17
---- glibc-2.3.2/manual/libc.info-17 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-17 Thu Jan 1 01:00:00 1970
-@@ -1,1136 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Streams and Threads, Next: Streams and I18N, Prev: Closing Streams, Up: I/O on Streams
--
--Streams and Threads
--===================
--
-- Streams can be used in multi-threaded applications in the same way
--they are used in single-threaded applications. But the programmer must
--be aware of a the possible complications. It is important to know about
--these also if the program one writes never use threads since the design
--and implementation of many stream functions is heavily influenced by the
--requirements added by multi-threaded programming.
--
-- The POSIX standard requires that by default the stream operations are
--atomic. I.e., issuing two stream operations for the same stream in two
--threads at the same time will cause the operations to be executed as if
--they were issued sequentially. The buffer operations performed while
--reading or writing are protected from other uses of the same stream. To
--do this each stream has an internal lock object which has to be
--(implicitly) acquired before any work can be done.
--
-- But there are situations where this is not enough and there are also
--situations where this is not wanted. The implicit locking is not enough
--if the program requires more than one stream function call to happen
--atomically. One example would be if an output line a program wants to
--generate is created by several function calls. The functions by
--themselves would ensure only atomicity of their own operation, but not
--atomicity over all the function calls. For this it is necessary to
--perform the stream locking in the application code.
--
-- - Function: void flockfile (FILE *STREAM)
-- The `flockfile' function acquires the internal locking object
-- associated with the stream STREAM. This ensures that no other
-- thread can explicitly through `flockfile'/`ftrylockfile' or
-- implicit through a call of a stream function lock the stream. The
-- thread will block until the lock is acquired. An explicit call to
-- `funlockfile' has to be used to release the lock.
--
-- - Function: int ftrylockfile (FILE *STREAM)
-- The `ftrylockfile' function tries to acquire the internal locking
-- object associated with the stream STREAM just like `flockfile'.
-- But unlike `flockfile' this function does not block if the lock is
-- not available. `ftrylockfile' returns zero if the lock was
-- successfully acquired. Otherwise the stream is locked by another
-- thread.
--
-- - Function: void funlockfile (FILE *STREAM)
-- The `funlockfile' function releases the internal locking object of
-- the stream STREAM. The stream must have been locked before by a
-- call to `flockfile' or a successful call of `ftrylockfile'. The
-- implicit locking performed by the stream operations do not count.
-- The `funlockfile' function does not return an error status and the
-- behavior of a call for a stream which is not locked by the current
-- thread is undefined.
--
-- The following example shows how the functions above can be used to
--generate an output line atomically even in multi-threaded applications
--(yes, the same job could be done with one `fprintf' call but it is
--sometimes not possible):
--
-- FILE *fp;
-- {
-- ...
-- flockfile (fp);
-- fputs ("This is test number ", fp);
-- fprintf (fp, "%d\n", test);
-- funlockfile (fp)
-- }
--
-- Without the explicit locking it would be possible for another thread
--to use the stream FP after the `fputs' call return and before `fprintf'
--was called with the result that the number does not follow the word
--`number'.
--
-- From this description it might already be clear that the locking
--objects in streams are no simple mutexes. Since locking the same
--stream twice in the same thread is allowed the locking objects must be
--equivalent to recursive mutexes. These mutexes keep track of the owner
--and the number of times the lock is acquired. The same number of
--`funlockfile' calls by the same threads is necessary to unlock the
--stream completely. For instance:
--
-- void
-- foo (FILE *fp)
-- {
-- ftrylockfile (fp);
-- fputs ("in foo\n", fp);
-- /* This is very wrong!!! */
-- funlockfile (fp);
-- }
--
-- It is important here that the `funlockfile' function is only called
--if the `ftrylockfile' function succeeded in locking the stream. It is
--therefore always wrong to ignore the result of `ftrylockfile'. And it
--makes no sense since otherwise one would use `flockfile'. The result
--of code like that above is that either `funlockfile' tries to free a
--stream that hasn't been locked by the current thread or it frees the
--stream prematurely. The code should look like this:
--
-- void
-- foo (FILE *fp)
-- {
-- if (ftrylockfile (fp) == 0)
-- {
-- fputs ("in foo\n", fp);
-- funlockfile (fp);
-- }
-- }
--
-- Now that we covered why it is necessary to have these locking it is
--necessary to talk about situations when locking is unwanted and what can
--be done. The locking operations (explicit or implicit) don't come for
--free. Even if a lock is not taken the cost is not zero. The operations
--which have to be performed require memory operations that are safe in
--multi-processor environments. With the many local caches involved in
--such systems this is quite costly. So it is best to avoid the locking
--completely if it is not needed - because the code in question is never
--used in a context where two or more threads may use a stream at a time.
--This can be determined most of the time for application code; for
--library code which can be used in many contexts one should default to be
--conservative and use locking.
--
-- There are two basic mechanisms to avoid locking. The first is to use
--the `_unlocked' variants of the stream operations. The POSIX standard
--defines quite a few of those and the GNU library adds a few more.
--These variants of the functions behave just like the functions with the
--name without the suffix except that they do not lock the stream. Using
--these functions is very desirable since they are potentially much
--faster. This is not only because the locking operation itself is
--avoided. More importantly, functions like `putc' and `getc' are very
--simple and traditionally (before the introduction of threads) were
--implemented as macros which are very fast if the buffer is not empty.
--With the addition of locking requirements these functions are no longer
--implemented as macros since they would would expand to too much code.
--But these macros are still available with the same functionality under
--the new names `putc_unlocked' and `getc_unlocked'. This possibly huge
--difference of speed also suggests the use of the `_unlocked' functions
--even if locking is required. The difference is that the locking then
--has to be performed in the program:
--
-- void
-- foo (FILE *fp, char *buf)
-- {
-- flockfile (fp);
-- while (*buf != '/')
-- putc_unlocked (*buf++, fp);
-- funlockfile (fp);
-- }
--
-- If in this example the `putc' function would be used and the
--explicit locking would be missing the `putc' function would have to
--acquire the lock in every call, potentially many times depending on when
--the loop terminates. Writing it the way illustrated above allows the
--`putc_unlocked' macro to be used which means no locking and direct
--manipulation of the buffer of the stream.
--
-- A second way to avoid locking is by using a non-standard function
--which was introduced in Solaris and is available in the GNU C library
--as well.
--
-- - Function: int __fsetlocking (FILE *STREAM, int TYPE)
-- The `__fsetlocking' function can be used to select whether the
-- stream operations will implicitly acquire the locking object of the
-- stream STREAM. By default this is done but it can be disabled and
-- reinstated using this function. There are three values defined
-- for the TYPE parameter.
--
-- `FSETLOCKING_INTERNAL'
-- The stream `stream' will from now on use the default internal
-- locking. Every stream operation with exception of the
-- `_unlocked' variants will implicitly lock the stream.
--
-- `FSETLOCKING_BYCALLER'
-- After the `__fsetlocking' function returns the user is
-- responsible for locking the stream. None of the stream
-- operations will implicitly do this anymore until the state is
-- set back to `FSETLOCKING_INTERNAL'.
--
-- `FSETLOCKING_QUERY'
-- `__fsetlocking' only queries the current locking state of the
-- stream. The return value will be `FSETLOCKING_INTERNAL' or
-- `FSETLOCKING_BYCALLER' depending on the state.
--
-- The return value of `__fsetlocking' is either
-- `FSETLOCKING_INTERNAL' or `FSETLOCKING_BYCALLER' depending on the
-- state of the stream before the call.
--
-- This function and the values for the TYPE parameter are declared
-- in `stdio_ext.h'.
--
-- This function is especially useful when program code has to be used
--which is written without knowledge about the `_unlocked' functions (or
--if the programmer was too lazy to use them).
--
--
--File: libc.info, Node: Streams and I18N, Next: Simple Output, Prev: Streams and Threads, Up: I/O on Streams
--
--Streams in Internationalized Applications
--=========================================
--
-- ISO C90 introduced the new type `wchar_t' to allow handling larger
--character sets. What was missing was a possibility to output strings
--of `wchar_t' directly. One had to convert them into multibyte strings
--using `mbstowcs' (there was no `mbsrtowcs' yet) and then use the normal
--stream functions. While this is doable it is very cumbersome since
--performing the conversions is not trivial and greatly increases program
--complexity and size.
--
-- The Unix standard early on (I think in XPG4.2) introduced two
--additional format specifiers for the `printf' and `scanf' families of
--functions. Printing and reading of single wide characters was made
--possible using the `%C' specifier and wide character strings can be
--handled with `%S'. These modifiers behave just like `%c' and `%s' only
--that they expect the corresponding argument to have the wide character
--type and that the wide character and string are transformed into/from
--multibyte strings before being used.
--
-- This was a beginning but it is still not good enough. Not always is
--it desirable to use `printf' and `scanf'. The other, smaller and
--faster functions cannot handle wide characters. Second, it is not
--possible to have a format string for `printf' and `scanf' consisting of
--wide characters. The result is that format strings would have to be
--generated if they have to contain non-basic characters.
--
-- In the Amendment 1 to ISO C90 a whole new set of functions was added
--to solve the problem. Most of the stream functions got a counterpart
--which take a wide character or wide character string instead of a
--character or string respectively. The new functions operate on the
--same streams (like `stdout'). This is different from the model of the
--C++ runtime library where separate streams for wide and normal I/O are
--used.
--
-- Being able to use the same stream for wide and normal operations
--comes with a restriction: a stream can be used either for wide
--operations or for normal operations. Once it is decided there is no
--way back. Only a call to `freopen' or `freopen64' can reset the
--"orientation". The orientation can be decided in three ways:
--
-- * If any of the normal character functions is used (this includes the
-- `fread' and `fwrite' functions) the stream is marked as not wide
-- oriented.
--
-- * If any of the wide character functions is used the stream is
-- marked as wide oriented.
--
-- * The `fwide' function can be used to set the orientation either way.
--
-- It is important to never mix the use of wide and not wide operations
--on a stream. There are no diagnostics issued. The application behavior
--will simply be strange or the application will simply crash. The
--`fwide' function can help avoiding this.
--
-- - Function: int fwide (FILE *STREAM, int MODE)
-- The `fwide' function can be used to set and query the state of the
-- orientation of the stream STREAM. If the MODE parameter has a
-- positive value the streams get wide oriented, for negative values
-- narrow oriented. It is not possible to overwrite previous
-- orientations with `fwide'. I.e., if the stream STREAM was already
-- oriented before the call nothing is done.
--
-- If MODE is zero the current orientation state is queried and
-- nothing is changed.
--
-- The `fwide' function returns a negative value, zero, or a positive
-- value if the stream is narrow, not at all, or wide oriented
-- respectively.
--
-- This function was introduced in Amendment 1 to ISO C90 and is
-- declared in `wchar.h'.
--
-- It is generally a good idea to orient a stream as early as possible.
--This can prevent surprise especially for the standard streams `stdin',
--`stdout', and `stderr'. If some library function in some situations
--uses one of these streams and this use orients the stream in a
--different way the rest of the application expects it one might end up
--with hard to reproduce errors. Remember that no errors are signal if
--the streams are used incorrectly. Leaving a stream unoriented after
--creation is normally only necessary for library functions which create
--streams which can be used in different contexts.
--
-- When writing code which uses streams and which can be used in
--different contexts it is important to query the orientation of the
--stream before using it (unless the rules of the library interface
--demand a specific orientation). The following little, silly function
--illustrates this.
--
-- void
-- print_f (FILE *fp)
-- {
-- if (fwide (fp, 0) > 0)
-- /* Positive return value means wide orientation. */
-- fputwc (L'f', fp);
-- else
-- fputc ('f', fp);
-- }
--
-- Note that in this case the function `print_f' decides about the
--orientation of the stream if it was unoriented before (will not happen
--if the advise above is followed).
--
-- The encoding used for the `wchar_t' values is unspecified and the
--user must not make any assumptions about it. For I/O of `wchar_t'
--values this means that it is impossible to write these values directly
--to the stream. This is not what follows from the ISO C locale model
--either. What happens instead is that the bytes read from or written to
--the underlying media are first converted into the internal encoding
--chosen by the implementation for `wchar_t'. The external encoding is
--determined by the `LC_CTYPE' category of the current locale or by the
--`ccs' part of the mode specification given to `fopen', `fopen64',
--`freopen', or `freopen64'. How and when the conversion happens is
--unspecified and it happens invisible to the user.
--
-- Since a stream is created in the unoriented state it has at that
--point no conversion associated with it. The conversion which will be
--used is determined by the `LC_CTYPE' category selected at the time the
--stream is oriented. If the locales are changed at the runtime this
--might produce surprising results unless one pays attention. This is
--just another good reason to orient the stream explicitly as soon as
--possible, perhaps with a call to `fwide'.
--
--
--File: libc.info, Node: Simple Output, Next: Character Input, Prev: Streams and I18N, Up: I/O on Streams
--
--Simple Output by Characters or Lines
--====================================
--
-- This section describes functions for performing character- and
--line-oriented output.
--
-- These narrow streams functions are declared in the header file
--`stdio.h' and the wide stream functions in `wchar.h'.
--
-- - Function: int fputc (int C, FILE *STREAM)
-- The `fputc' function converts the character C to type `unsigned
-- char', and writes it to the stream STREAM. `EOF' is returned if a
-- write error occurs; otherwise the character C is returned.
--
-- - Function: wint_t fputwc (wchar_t WC, FILE *STREAM)
-- The `fputwc' function writes the wide character WC to the stream
-- STREAM. `WEOF' is returned if a write error occurs; otherwise the
-- character WC is returned.
--
-- - Function: int fputc_unlocked (int C, FILE *STREAM)
-- The `fputc_unlocked' function is equivalent to the `fputc'
-- function except that it does not implicitly lock the stream.
--
-- - Function: wint_t fputwc_unlocked (wint_t WC, FILE *STREAM)
-- The `fputwc_unlocked' function is equivalent to the `fputwc'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int putc (int C, FILE *STREAM)
-- This is just like `fputc', except that most systems implement it as
-- a macro, making it faster. One consequence is that it may
-- evaluate the STREAM argument more than once, which is an exception
-- to the general rule for macros. `putc' is usually the best
-- function to use for writing a single character.
--
-- - Function: wint_t putwc (wchar_t WC, FILE *STREAM)
-- This is just like `fputwc', except that it can be implement as a
-- macro, making it faster. One consequence is that it may evaluate
-- the STREAM argument more than once, which is an exception to the
-- general rule for macros. `putwc' is usually the best function to
-- use for writing a single wide character.
--
-- - Function: int putc_unlocked (int C, FILE *STREAM)
-- The `putc_unlocked' function is equivalent to the `putc' function
-- except that it does not implicitly lock the stream.
--
-- - Function: wint_t putwc_unlocked (wchar_t WC, FILE *STREAM)
-- The `putwc_unlocked' function is equivalent to the `putwc'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int putchar (int C)
-- The `putchar' function is equivalent to `putc' with `stdout' as
-- the value of the STREAM argument.
--
-- - Function: wint_t putwchar (wchar_t WC)
-- The `putwchar' function is equivalent to `putwc' with `stdout' as
-- the value of the STREAM argument.
--
-- - Function: int putchar_unlocked (int C)
-- The `putchar_unlocked' function is equivalent to the `putchar'
-- function except that it does not implicitly lock the stream.
--
-- - Function: wint_t putwchar_unlocked (wchar_t WC)
-- The `putwchar_unlocked' function is equivalent to the `putwchar'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int fputs (const char *S, FILE *STREAM)
-- The function `fputs' writes the string S to the stream STREAM.
-- The terminating null character is not written. This function does
-- _not_ add a newline character, either. It outputs only the
-- characters in the string.
--
-- This function returns `EOF' if a write error occurs, and otherwise
-- a non-negative value.
--
-- For example:
--
-- fputs ("Are ", stdout);
-- fputs ("you ", stdout);
-- fputs ("hungry?\n", stdout);
--
-- outputs the text `Are you hungry?' followed by a newline.
--
-- - Function: int fputws (const wchar_t *WS, FILE *STREAM)
-- The function `fputws' writes the wide character string WS to the
-- stream STREAM. The terminating null character is not written.
-- This function does _not_ add a newline character, either. It
-- outputs only the characters in the string.
--
-- This function returns `WEOF' if a write error occurs, and otherwise
-- a non-negative value.
--
-- - Function: int fputs_unlocked (const char *S, FILE *STREAM)
-- The `fputs_unlocked' function is equivalent to the `fputs'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int fputws_unlocked (const wchar_t *WS, FILE *STREAM)
-- The `fputws_unlocked' function is equivalent to the `fputws'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int puts (const char *S)
-- The `puts' function writes the string S to the stream `stdout'
-- followed by a newline. The terminating null character of the
-- string is not written. (Note that `fputs' does _not_ write a
-- newline as this function does.)
--
-- `puts' is the most convenient function for printing simple
-- messages. For example:
--
-- puts ("This is a message.");
--
-- outputs the text `This is a message.' followed by a newline.
--
-- - Function: int putw (int W, FILE *STREAM)
-- This function writes the word W (that is, an `int') to STREAM. It
-- is provided for compatibility with SVID, but we recommend you use
-- `fwrite' instead (*note Block Input/Output::).
--
--
--File: libc.info, Node: Character Input, Next: Line Input, Prev: Simple Output, Up: I/O on Streams
--
--Character Input
--===============
--
-- This section describes functions for performing character-oriented
--input. These narrow streams functions are declared in the header file
--`stdio.h' and the wide character functions are declared in `wchar.h'.
--
-- These functions return an `int' or `wint_t' value (for narrow and
--wide stream functions respectively) that is either a character of
--input, or the special value `EOF'/`WEOF' (usually -1). For the narrow
--stream functions it is important to store the result of these functions
--in a variable of type `int' instead of `char', even when you plan to
--use it only as a character. Storing `EOF' in a `char' variable
--truncates its value to the size of a character, so that it is no longer
--distinguishable from the valid character `(char) -1'. So always use an
--`int' for the result of `getc' and friends, and check for `EOF' after
--the call; once you've verified that the result is not `EOF', you can be
--sure that it will fit in a `char' variable without loss of information.
--
-- - Function: int fgetc (FILE *STREAM)
-- This function reads the next character as an `unsigned char' from
-- the stream STREAM and returns its value, converted to an `int'.
-- If an end-of-file condition or read error occurs, `EOF' is
-- returned instead.
--
-- - Function: wint_t fgetwc (FILE *STREAM)
-- This function reads the next wide character from the stream STREAM
-- and returns its value. If an end-of-file condition or read error
-- occurs, `WEOF' is returned instead.
--
-- - Function: int fgetc_unlocked (FILE *STREAM)
-- The `fgetc_unlocked' function is equivalent to the `fgetc'
-- function except that it does not implicitly lock the stream.
--
-- - Function: wint_t fgetwc_unlocked (FILE *STREAM)
-- The `fgetwc_unlocked' function is equivalent to the `fgetwc'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int getc (FILE *STREAM)
-- This is just like `fgetc', except that it is permissible (and
-- typical) for it to be implemented as a macro that evaluates the
-- STREAM argument more than once. `getc' is often highly optimized,
-- so it is usually the best function to use to read a single
-- character.
--
-- - Function: wint_t getwc (FILE *STREAM)
-- This is just like `fgetwc', except that it is permissible for it to
-- be implemented as a macro that evaluates the STREAM argument more
-- than once. `getwc' can be highly optimized, so it is usually the
-- best function to use to read a single wide character.
--
-- - Function: int getc_unlocked (FILE *STREAM)
-- The `getc_unlocked' function is equivalent to the `getc' function
-- except that it does not implicitly lock the stream.
--
-- - Function: wint_t getwc_unlocked (FILE *STREAM)
-- The `getwc_unlocked' function is equivalent to the `getwc'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: int getchar (void)
-- The `getchar' function is equivalent to `getc' with `stdin' as the
-- value of the STREAM argument.
--
-- - Function: wint_t getwchar (void)
-- The `getwchar' function is equivalent to `getwc' with `stdin' as
-- the value of the STREAM argument.
--
-- - Function: int getchar_unlocked (void)
-- The `getchar_unlocked' function is equivalent to the `getchar'
-- function except that it does not implicitly lock the stream.
--
-- - Function: wint_t getwchar_unlocked (void)
-- The `getwchar_unlocked' function is equivalent to the `getwchar'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- Here is an example of a function that does input using `fgetc'. It
--would work just as well using `getc' instead, or using `getchar ()'
--instead of `fgetc (stdin)'. The code would also work the same for the
--wide character stream functions.
--
-- int
-- y_or_n_p (const char *question)
-- {
-- fputs (question, stdout);
-- while (1)
-- {
-- int c, answer;
-- /* Write a space to separate answer from question. */
-- fputc (' ', stdout);
-- /* Read the first character of the line.
-- This should be the answer character, but might not be. */
-- c = tolower (fgetc (stdin));
-- answer = c;
-- /* Discard rest of input line. */
-- while (c != '\n' && c != EOF)
-- c = fgetc (stdin);
-- /* Obey the answer if it was valid. */
-- if (answer == 'y')
-- return 1;
-- if (answer == 'n')
-- return 0;
-- /* Answer was invalid: ask for valid answer. */
-- fputs ("Please answer y or n:", stdout);
-- }
-- }
--
-- - Function: int getw (FILE *STREAM)
-- This function reads a word (that is, an `int') from STREAM. It's
-- provided for compatibility with SVID. We recommend you use
-- `fread' instead (*note Block Input/Output::). Unlike `getc', any
-- `int' value could be a valid result. `getw' returns `EOF' when it
-- encounters end-of-file or an error, but there is no way to
-- distinguish this from an input word with value -1.
--
--
--File: libc.info, Node: Line Input, Next: Unreading, Prev: Character Input, Up: I/O on Streams
--
--Line-Oriented Input
--===================
--
-- Since many programs interpret input on the basis of lines, it is
--convenient to have functions to read a line of text from a stream.
--
-- Standard C has functions to do this, but they aren't very safe: null
--characters and even (for `gets') long lines can confuse them. So the
--GNU library provides the nonstandard `getline' function that makes it
--easy to read lines reliably.
--
-- Another GNU extension, `getdelim', generalizes `getline'. It reads
--a delimited record, defined as everything through the next occurrence
--of a specified delimiter character.
--
-- All these functions are declared in `stdio.h'.
--
-- - Function: ssize_t getline (char **LINEPTR, size_t *N, FILE *STREAM)
-- This function reads an entire line from STREAM, storing the text
-- (including the newline and a terminating null character) in a
-- buffer and storing the buffer address in `*LINEPTR'.
--
-- Before calling `getline', you should place in `*LINEPTR' the
-- address of a buffer `*N' bytes long, allocated with `malloc'. If
-- this buffer is long enough to hold the line, `getline' stores the
-- line in this buffer. Otherwise, `getline' makes the buffer bigger
-- using `realloc', storing the new buffer address back in `*LINEPTR'
-- and the increased size back in `*N'. *Note Unconstrained
-- Allocation::.
--
-- If you set `*LINEPTR' to a null pointer, and `*N' to zero, before
-- the call, then `getline' allocates the initial buffer for you by
-- calling `malloc'.
--
-- In either case, when `getline' returns, `*LINEPTR' is a `char *'
-- which points to the text of the line.
--
-- When `getline' is successful, it returns the number of characters
-- read (including the newline, but not including the terminating
-- null). This value enables you to distinguish null characters that
-- are part of the line from the null character inserted as a
-- terminator.
--
-- This function is a GNU extension, but it is the recommended way to
-- read lines from a stream. The alternative standard functions are
-- unreliable.
--
-- If an error occurs or end of file is reached without any bytes
-- read, `getline' returns `-1'.
--
-- - Function: ssize_t getdelim (char **LINEPTR, size_t *N, int
-- DELIMITER, FILE *STREAM)
-- This function is like `getline' except that the character which
-- tells it to stop reading is not necessarily newline. The argument
-- DELIMITER specifies the delimiter character; `getdelim' keeps
-- reading until it sees that character (or end of file).
--
-- The text is stored in LINEPTR, including the delimiter character
-- and a terminating null. Like `getline', `getdelim' makes LINEPTR
-- bigger if it isn't big enough.
--
-- `getline' is in fact implemented in terms of `getdelim', just like
-- this:
--
-- ssize_t
-- getline (char **lineptr, size_t *n, FILE *stream)
-- {
-- return getdelim (lineptr, n, '\n', stream);
-- }
--
-- - Function: char * fgets (char *S, int COUNT, FILE *STREAM)
-- The `fgets' function reads characters from the stream STREAM up to
-- and including a newline character and stores them in the string S,
-- adding a null character to mark the end of the string. You must
-- supply COUNT characters worth of space in S, but the number of
-- characters read is at most COUNT - 1. The extra character space
-- is used to hold the null character at the end of the string.
--
-- If the system is already at end of file when you call `fgets', then
-- the contents of the array S are unchanged and a null pointer is
-- returned. A null pointer is also returned if a read error occurs.
-- Otherwise, the return value is the pointer S.
--
-- *Warning:* If the input data has a null character, you can't tell.
-- So don't use `fgets' unless you know the data cannot contain a
-- null. Don't use it to read files edited by the user because, if
-- the user inserts a null character, you should either handle it
-- properly or print a clear error message. We recommend using
-- `getline' instead of `fgets'.
--
-- - Function: wchar_t * fgetws (wchar_t *WS, int COUNT, FILE *STREAM)
-- The `fgetws' function reads wide characters from the stream STREAM
-- up to and including a newline character and stores them in the
-- string WS, adding a null wide character to mark the end of the
-- string. You must supply COUNT wide characters worth of space in
-- WS, but the number of characters read is at most COUNT - 1. The
-- extra character space is used to hold the null wide character at
-- the end of the string.
--
-- If the system is already at end of file when you call `fgetws',
-- then the contents of the array WS are unchanged and a null pointer
-- is returned. A null pointer is also returned if a read error
-- occurs. Otherwise, the return value is the pointer WS.
--
-- *Warning:* If the input data has a null wide character (which are
-- null bytes in the input stream), you can't tell. So don't use
-- `fgetws' unless you know the data cannot contain a null. Don't use
-- it to read files edited by the user because, if the user inserts a
-- null character, you should either handle it properly or print a
-- clear error message.
--
-- - Function: char * fgets_unlocked (char *S, int COUNT, FILE *STREAM)
-- The `fgets_unlocked' function is equivalent to the `fgets'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: wchar_t * fgetws_unlocked (wchar_t *WS, int COUNT, FILE
-- *STREAM)
-- The `fgetws_unlocked' function is equivalent to the `fgetws'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Deprecated function: char * gets (char *S)
-- The function `gets' reads characters from the stream `stdin' up to
-- the next newline character, and stores them in the string S. The
-- newline character is discarded (note that this differs from the
-- behavior of `fgets', which copies the newline character into the
-- string). If `gets' encounters a read error or end-of-file, it
-- returns a null pointer; otherwise it returns S.
--
-- *Warning:* The `gets' function is *very dangerous* because it
-- provides no protection against overflowing the string S. The GNU
-- library includes it for compatibility only. You should *always*
-- use `fgets' or `getline' instead. To remind you of this, the
-- linker (if using GNU `ld') will issue a warning whenever you use
-- `gets'.
--
--
--File: libc.info, Node: Unreading, Next: Block Input/Output, Prev: Line Input, Up: I/O on Streams
--
--Unreading
--=========
--
-- In parser programs it is often useful to examine the next character
--in the input stream without removing it from the stream. This is called
--"peeking ahead" at the input because your program gets a glimpse of the
--input it will read next.
--
-- Using stream I/O, you can peek ahead at input by first reading it and
--then "unreading" it (also called "pushing it back" on the stream).
--Unreading a character makes it available to be input again from the
--stream, by the next call to `fgetc' or other input function on that
--stream.
--
--* Menu:
--
--* Unreading Idea:: An explanation of unreading with pictures.
--* How Unread:: How to call `ungetc' to do unreading.
--
--
--File: libc.info, Node: Unreading Idea, Next: How Unread, Up: Unreading
--
--What Unreading Means
----------------------
--
-- Here is a pictorial explanation of unreading. Suppose you have a
--stream reading a file that contains just six characters, the letters
--`foobar'. Suppose you have read three characters so far. The
--situation looks like this:
--
-- f o o b a r
-- ^
--
--so the next input character will be `b'.
--
-- If instead of reading `b' you unread the letter `o', you get a
--situation like this:
--
-- f o o b a r
-- |
-- o--
-- ^
--
--so that the next input characters will be `o' and `b'.
--
-- If you unread `9' instead of `o', you get this situation:
--
-- f o o b a r
-- |
-- 9--
-- ^
--
--so that the next input characters will be `9' and `b'.
--
--
--File: libc.info, Node: How Unread, Prev: Unreading Idea, Up: Unreading
--
--Using `ungetc' To Do Unreading
--------------------------------
--
-- The function to unread a character is called `ungetc', because it
--reverses the action of `getc'.
--
-- - Function: int ungetc (int C, FILE *STREAM)
-- The `ungetc' function pushes back the character C onto the input
-- stream STREAM. So the next input from STREAM will read C before
-- anything else.
--
-- If C is `EOF', `ungetc' does nothing and just returns `EOF'. This
-- lets you call `ungetc' with the return value of `getc' without
-- needing to check for an error from `getc'.
--
-- The character that you push back doesn't have to be the same as
-- the last character that was actually read from the stream. In
-- fact, it isn't necessary to actually read any characters from the
-- stream before unreading them with `ungetc'! But that is a strange
-- way to write a program; usually `ungetc' is used only to unread a
-- character that was just read from the same stream. The GNU C
-- library supports this even on files opened in binary mode, but
-- other systems might not.
--
-- The GNU C library only supports one character of pushback--in other
-- words, it does not work to call `ungetc' twice without doing input
-- in between. Other systems might let you push back multiple
-- characters; then reading from the stream retrieves the characters
-- in the reverse order that they were pushed.
--
-- Pushing back characters doesn't alter the file; only the internal
-- buffering for the stream is affected. If a file positioning
-- function (such as `fseek', `fseeko' or `rewind'; *note File
-- Positioning::) is called, any pending pushed-back characters are
-- discarded.
--
-- Unreading a character on a stream that is at end of file clears the
-- end-of-file indicator for the stream, because it makes the
-- character of input available. After you read that character,
-- trying to read again will encounter end of file.
--
-- - Function: wint_t ungetwc (wint_t WC, FILE *STREAM)
-- The `ungetwc' function behaves just like `ungetc' just that it
-- pushes back a wide character.
--
-- Here is an example showing the use of `getc' and `ungetc' to skip
--over whitespace characters. When this function reaches a
--non-whitespace character, it unreads that character to be seen again on
--the next read operation on the stream.
--
-- #include <stdio.h>
-- #include <ctype.h>
--
-- void
-- skip_whitespace (FILE *stream)
-- {
-- int c;
-- do
-- /* No need to check for `EOF' because it is not
-- `isspace', and `ungetc' ignores `EOF'. */
-- c = getc (stream);
-- while (isspace (c));
-- ungetc (c, stream);
-- }
--
--
--File: libc.info, Node: Block Input/Output, Next: Formatted Output, Prev: Unreading, Up: I/O on Streams
--
--Block Input/Output
--==================
--
-- This section describes how to do input and output operations on
--blocks of data. You can use these functions to read and write binary
--data, as well as to read and write text in fixed-size blocks instead of
--by characters or lines.
--
-- Binary files are typically used to read and write blocks of data in
--the same format as is used to represent the data in a running program.
--In other words, arbitrary blocks of memory--not just character or string
--objects--can be written to a binary file, and meaningfully read in
--again by the same program.
--
-- Storing data in binary form is often considerably more efficient than
--using the formatted I/O functions. Also, for floating-point numbers,
--the binary form avoids possible loss of precision in the conversion
--process. On the other hand, binary files can't be examined or modified
--easily using many standard file utilities (such as text editors), and
--are not portable between different implementations of the language, or
--different kinds of computers.
--
-- These functions are declared in `stdio.h'.
--
-- - Function: size_t fread (void *DATA, size_t SIZE, size_t COUNT, FILE
-- *STREAM)
-- This function reads up to COUNT objects of size SIZE into the
-- array DATA, from the stream STREAM. It returns the number of
-- objects actually read, which might be less than COUNT if a read
-- error occurs or the end of the file is reached. This function
-- returns a value of zero (and doesn't read anything) if either SIZE
-- or COUNT is zero.
--
-- If `fread' encounters end of file in the middle of an object, it
-- returns the number of complete objects read, and discards the
-- partial object. Therefore, the stream remains at the actual end
-- of the file.
--
-- - Function: size_t fread_unlocked (void *DATA, size_t SIZE, size_t
-- COUNT, FILE *STREAM)
-- The `fread_unlocked' function is equivalent to the `fread'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- - Function: size_t fwrite (const void *DATA, size_t SIZE, size_t
-- COUNT, FILE *STREAM)
-- This function writes up to COUNT objects of size SIZE from the
-- array DATA, to the stream STREAM. The return value is normally
-- COUNT, if the call succeeds. Any other value indicates some sort
-- of error, such as running out of space.
--
-- - Function: size_t fwrite_unlocked (const void *DATA, size_t SIZE,
-- size_t COUNT, FILE *STREAM)
-- The `fwrite_unlocked' function is equivalent to the `fwrite'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
--
--File: libc.info, Node: Formatted Output, Next: Customizing Printf, Prev: Block Input/Output, Up: I/O on Streams
--
--Formatted Output
--================
--
-- The functions described in this section (`printf' and related
--functions) provide a convenient way to perform formatted output. You
--call `printf' with a "format string" or "template string" that
--specifies how to format the values of the remaining arguments.
--
-- Unless your program is a filter that specifically performs line- or
--character-oriented processing, using `printf' or one of the other
--related functions described in this section is usually the easiest and
--most concise way to perform output. These functions are especially
--useful for printing error messages, tables of data, and the like.
--
--* Menu:
--
--* Formatted Output Basics:: Some examples to get you started.
--* Output Conversion Syntax:: General syntax of conversion
-- specifications.
--* Table of Output Conversions:: Summary of output conversions and
-- what they do.
--* Integer Conversions:: Details about formatting of integers.
--* Floating-Point Conversions:: Details about formatting of
-- floating-point numbers.
--* Other Output Conversions:: Details about formatting of strings,
-- characters, pointers, and the like.
--* Formatted Output Functions:: Descriptions of the actual functions.
--* Dynamic Output:: Functions that allocate memory for the output.
--* Variable Arguments Output:: `vprintf' and friends.
--* Parsing a Template String:: What kinds of args does a given template
-- call for?
--* Example of Parsing:: Sample program using `parse_printf_format'.
--
--
--File: libc.info, Node: Formatted Output Basics, Next: Output Conversion Syntax, Up: Formatted Output
--
--Formatted Output Basics
-------------------------
--
-- The `printf' function can be used to print any number of arguments.
--The template string argument you supply in a call provides information
--not only about the number of additional arguments, but also about their
--types and what style should be used for printing them.
--
-- Ordinary characters in the template string are simply written to the
--output stream as-is, while "conversion specifications" introduced by a
--`%' character in the template cause subsequent arguments to be
--formatted and written to the output stream. For example,
--
-- int pct = 37;
-- char filename[] = "foo.txt";
-- printf ("Processing of `%s' is %d%% finished.\nPlease be patient.\n",
-- filename, pct);
--
--produces output like
--
-- Processing of `foo.txt' is 37% finished.
-- Please be patient.
--
-- This example shows the use of the `%d' conversion to specify that an
--`int' argument should be printed in decimal notation, the `%s'
--conversion to specify printing of a string argument, and the `%%'
--conversion to print a literal `%' character.
--
-- There are also conversions for printing an integer argument as an
--unsigned value in octal, decimal, or hexadecimal radix (`%o', `%u', or
--`%x', respectively); or as a character value (`%c').
--
-- Floating-point numbers can be printed in normal, fixed-point notation
--using the `%f' conversion or in exponential notation using the `%e'
--conversion. The `%g' conversion uses either `%e' or `%f' format,
--depending on what is more appropriate for the magnitude of the
--particular number.
--
-- You can control formatting more precisely by writing "modifiers"
--between the `%' and the character that indicates which conversion to
--apply. These slightly alter the ordinary behavior of the conversion.
--For example, most conversion specifications permit you to specify a
--minimum field width and a flag indicating whether you want the result
--left- or right-justified within the field.
--
-- The specific flags and modifiers that are permitted and their
--interpretation vary depending on the particular conversion. They're all
--described in more detail in the following sections. Don't worry if this
--all seems excessively complicated at first; you can almost always get
--reasonable free-format output without using any of the modifiers at all.
--The modifiers are mostly used to make the output look "prettier" in
--tables.
--
--
--File: libc.info, Node: Output Conversion Syntax, Next: Table of Output Conversions, Prev: Formatted Output Basics, Up: Formatted Output
--
--Output Conversion Syntax
--------------------------
--
-- This section provides details about the precise syntax of conversion
--specifications that can appear in a `printf' template string.
--
-- Characters in the template string that are not part of a conversion
--specification are printed as-is to the output stream. Multibyte
--character sequences (*note Character Set Handling::) are permitted in a
--template string.
--
-- The conversion specifications in a `printf' template string have the
--general form:
--
-- % [ PARAM-NO $] FLAGS WIDTH [ . PRECISION ] TYPE CONVERSION
--
--or
--
-- % [ PARAM-NO $] FLAGS WIDTH . * [ PARAM-NO $] TYPE CONVERSION
--
-- For example, in the conversion specifier `%-10.8ld', the `-' is a
--flag, `10' specifies the field width, the precision is `8', the letter
--`l' is a type modifier, and `d' specifies the conversion style. (This
--particular type specifier says to print a `long int' argument in
--decimal notation, with a minimum of 8 digits left-justified in a field
--at least 10 characters wide.)
--
-- In more detail, output conversion specifications consist of an
--initial `%' character followed in sequence by:
--
-- * An optional specification of the parameter used for this format.
-- Normally the parameters to the `printf' function are assigned to
-- the formats in the order of appearance in the format string. But
-- in some situations (such as message translation) this is not
-- desirable and this extension allows an explicit parameter to be
-- specified.
--
-- The PARAM-NO parts of the format must be integers in the range of
-- 1 to the maximum number of arguments present to the function call.
-- Some implementations limit this number to a certainly upper
-- bound. The exact limit can be retrieved by the following constant.
--
-- - Macro: NL_ARGMAX
-- The value of `NL_ARGMAX' is the maximum value allowed for the
-- specification of an positional parameter in a `printf' call.
-- The actual value in effect at runtime can be retrieved by
-- using `sysconf' using the `_SC_NL_ARGMAX' parameter *note
-- Sysconf Definition::.
--
-- Some system have a quite low limit such as 9 for System V
-- systems. The GNU C library has no real limit.
--
-- If any of the formats has a specification for the parameter
-- position all of them in the format string shall have one.
-- Otherwise the behavior is undefined.
--
-- * Zero or more "flag characters" that modify the normal behavior of
-- the conversion specification.
--
-- * An optional decimal integer specifying the "minimum field width".
-- If the normal conversion produces fewer characters than this, the
-- field is padded with spaces to the specified width. This is a
-- _minimum_ value; if the normal conversion produces more characters
-- than this, the field is _not_ truncated. Normally, the output is
-- right-justified within the field.
--
-- You can also specify a field width of `*'. This means that the
-- next argument in the argument list (before the actual value to be
-- printed) is used as the field width. The value must be an `int'.
-- If the value is negative, this means to set the `-' flag (see
-- below) and to use the absolute value as the field width.
--
-- * An optional "precision" to specify the number of digits to be
-- written for the numeric conversions. If the precision is
-- specified, it consists of a period (`.') followed optionally by a
-- decimal integer (which defaults to zero if omitted).
--
-- You can also specify a precision of `*'. This means that the next
-- argument in the argument list (before the actual value to be
-- printed) is used as the precision. The value must be an `int',
-- and is ignored if it is negative. If you specify `*' for both the
-- field width and precision, the field width argument precedes the
-- precision argument. Other C library versions may not recognize
-- this syntax.
--
-- * An optional "type modifier character", which is used to specify the
-- data type of the corresponding argument if it differs from the
-- default type. (For example, the integer conversions assume a type
-- of `int', but you can specify `h', `l', or `L' for other integer
-- types.)
--
-- * A character that specifies the conversion to be applied.
--
-- The exact options that are permitted and how they are interpreted
--vary between the different conversion specifiers. See the descriptions
--of the individual conversions for information about the particular
--options that they use.
--
-- With the `-Wformat' option, the GNU C compiler checks calls to
--`printf' and related functions. It examines the format string and
--verifies that the correct number and types of arguments are supplied.
--There is also a GNU C syntax to tell the compiler that a function you
--write uses a `printf'-style format string. *Note Declaring Attributes
--of Functions: (gcc.info)Function Attributes, for more information.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-18 glibc-2.3.2-200304020432/manual/libc.info-18
---- glibc-2.3.2/manual/libc.info-18 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-18 Thu Jan 1 01:00:00 1970
-@@ -1,1211 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Table of Output Conversions, Next: Integer Conversions, Prev: Output Conversion Syntax, Up: Formatted Output
--
--Table of Output Conversions
-----------------------------
--
-- Here is a table summarizing what all the different conversions do:
--
--`%d', `%i'
-- Print an integer as a signed decimal number. *Note Integer
-- Conversions::, for details. `%d' and `%i' are synonymous for
-- output, but are different when used with `scanf' for input (*note
-- Table of Input Conversions::).
--
--`%o'
-- Print an integer as an unsigned octal number. *Note Integer
-- Conversions::, for details.
--
--`%u'
-- Print an integer as an unsigned decimal number. *Note Integer
-- Conversions::, for details.
--
--`%x', `%X'
-- Print an integer as an unsigned hexadecimal number. `%x' uses
-- lower-case letters and `%X' uses upper-case. *Note Integer
-- Conversions::, for details.
--
--`%f'
-- Print a floating-point number in normal (fixed-point) notation.
-- *Note Floating-Point Conversions::, for details.
--
--`%e', `%E'
-- Print a floating-point number in exponential notation. `%e' uses
-- lower-case letters and `%E' uses upper-case. *Note Floating-Point
-- Conversions::, for details.
--
--`%g', `%G'
-- Print a floating-point number in either normal or exponential
-- notation, whichever is more appropriate for its magnitude. `%g'
-- uses lower-case letters and `%G' uses upper-case. *Note
-- Floating-Point Conversions::, for details.
--
--`%a', `%A'
-- Print a floating-point number in a hexadecimal fractional notation
-- which the exponent to base 2 represented in decimal digits. `%a'
-- uses lower-case letters and `%A' uses upper-case. *Note
-- Floating-Point Conversions::, for details.
--
--`%c'
-- Print a single character. *Note Other Output Conversions::.
--
--`%C'
-- This is an alias for `%lc' which is supported for compatibility
-- with the Unix standard.
--
--`%s'
-- Print a string. *Note Other Output Conversions::.
--
--`%S'
-- This is an alias for `%ls' which is supported for compatibility
-- with the Unix standard.
--
--`%p'
-- Print the value of a pointer. *Note Other Output Conversions::.
--
--`%n'
-- Get the number of characters printed so far. *Note Other Output
-- Conversions::. Note that this conversion specification never
-- produces any output.
--
--`%m'
-- Print the string corresponding to the value of `errno'. (This is
-- a GNU extension.) *Note Other Output Conversions::.
--
--`%%'
-- Print a literal `%' character. *Note Other Output Conversions::.
--
-- If the syntax of a conversion specification is invalid, unpredictable
--things will happen, so don't do this. If there aren't enough function
--arguments provided to supply values for all the conversion
--specifications in the template string, or if the arguments are not of
--the correct types, the results are unpredictable. If you supply more
--arguments than conversion specifications, the extra argument values are
--simply ignored; this is sometimes useful.
--
--
--File: libc.info, Node: Integer Conversions, Next: Floating-Point Conversions, Prev: Table of Output Conversions, Up: Formatted Output
--
--Integer Conversions
---------------------
--
-- This section describes the options for the `%d', `%i', `%o', `%u',
--`%x', and `%X' conversion specifications. These conversions print
--integers in various formats.
--
-- The `%d' and `%i' conversion specifications both print an `int'
--argument as a signed decimal number; while `%o', `%u', and `%x' print
--the argument as an unsigned octal, decimal, or hexadecimal number
--(respectively). The `%X' conversion specification is just like `%x'
--except that it uses the characters `ABCDEF' as digits instead of
--`abcdef'.
--
-- The following flags are meaningful:
--
--`-'
-- Left-justify the result in the field (instead of the normal
-- right-justification).
--
--`+'
-- For the signed `%d' and `%i' conversions, print a plus sign if the
-- value is positive.
--
--` '
-- For the signed `%d' and `%i' conversions, if the result doesn't
-- start with a plus or minus sign, prefix it with a space character
-- instead. Since the `+' flag ensures that the result includes a
-- sign, this flag is ignored if you supply both of them.
--
--`#'
-- For the `%o' conversion, this forces the leading digit to be `0',
-- as if by increasing the precision. For `%x' or `%X', this
-- prefixes a leading `0x' or `0X' (respectively) to the result.
-- This doesn't do anything useful for the `%d', `%i', or `%u'
-- conversions. Using this flag produces output which can be parsed
-- by the `strtoul' function (*note Parsing of Integers::) and
-- `scanf' with the `%i' conversion (*note Numeric Input
-- Conversions::).
--
--`''
-- Separate the digits into groups as specified by the locale
-- specified for the `LC_NUMERIC' category; *note General Numeric::.
-- This flag is a GNU extension.
--
--`0'
-- Pad the field with zeros instead of spaces. The zeros are placed
-- after any indication of sign or base. This flag is ignored if the
-- `-' flag is also specified, or if a precision is specified.
--
-- If a precision is supplied, it specifies the minimum number of
--digits to appear; leading zeros are produced if necessary. If you
--don't specify a precision, the number is printed with as many digits as
--it needs. If you convert a value of zero with an explicit precision of
--zero, then no characters at all are produced.
--
-- Without a type modifier, the corresponding argument is treated as an
--`int' (for the signed conversions `%i' and `%d') or `unsigned int' (for
--the unsigned conversions `%o', `%u', `%x', and `%X'). Recall that
--since `printf' and friends are variadic, any `char' and `short'
--arguments are automatically converted to `int' by the default argument
--promotions. For arguments of other integer types, you can use these
--modifiers:
--
--`hh'
-- Specifies that the argument is a `signed char' or `unsigned char',
-- as appropriate. A `char' argument is converted to an `int' or
-- `unsigned int' by the default argument promotions anyway, but the
-- `h' modifier says to convert it back to a `char' again.
--
-- This modifier was introduced in ISO C99.
--
--`h'
-- Specifies that the argument is a `short int' or `unsigned short
-- int', as appropriate. A `short' argument is converted to an `int'
-- or `unsigned int' by the default argument promotions anyway, but
-- the `h' modifier says to convert it back to a `short' again.
--
--`j'
-- Specifies that the argument is a `intmax_t' or `uintmax_t', as
-- appropriate.
--
-- This modifier was introduced in ISO C99.
--
--`l'
-- Specifies that the argument is a `long int' or `unsigned long
-- int', as appropriate. Two `l' characters is like the `L'
-- modifier, below.
--
-- If used with `%c' or `%s' the corresponding parameter is
-- considered as a wide character or wide character string
-- respectively. This use of `l' was introduced in Amendment 1 to
-- ISO C90.
--
--`L'
--`ll'
--`q'
-- Specifies that the argument is a `long long int'. (This type is
-- an extension supported by the GNU C compiler. On systems that
-- don't support extra-long integers, this is the same as `long int'.)
--
-- The `q' modifier is another name for the same thing, which comes
-- from 4.4 BSD; a `long long int' is sometimes called a "quad" `int'.
--
--`t'
-- Specifies that the argument is a `ptrdiff_t'.
--
-- This modifier was introduced in ISO C99.
--
--`z'
--`Z'
-- Specifies that the argument is a `size_t'.
--
-- `z' was introduced in ISO C99. `Z' is a GNU extension predating
-- this addition and should not be used in new code.
--
-- Here is an example. Using the template string:
--
-- "|%5d|%-5d|%+5d|%+-5d|% 5d|%05d|%5.0d|%5.2d|%d|\n"
--
--to print numbers using the different options for the `%d' conversion
--gives results like:
--
-- | 0|0 | +0|+0 | 0|00000| | 00|0|
-- | 1|1 | +1|+1 | 1|00001| 1| 01|1|
-- | -1|-1 | -1|-1 | -1|-0001| -1| -01|-1|
-- |100000|100000|+100000|+100000| 100000|100000|100000|100000|100000|
--
-- In particular, notice what happens in the last case where the number
--is too large to fit in the minimum field width specified.
--
-- Here are some more examples showing how unsigned integers print under
--various format options, using the template string:
--
-- "|%5u|%5o|%5x|%5X|%#5o|%#5x|%#5X|%#10.8x|\n"
--
-- | 0| 0| 0| 0| 0| 0| 0| 00000000|
-- | 1| 1| 1| 1| 01| 0x1| 0X1|0x00000001|
-- |100000|303240|186a0|186A0|0303240|0x186a0|0X186A0|0x000186a0|
--
--
--File: libc.info, Node: Floating-Point Conversions, Next: Other Output Conversions, Prev: Integer Conversions, Up: Formatted Output
--
--Floating-Point Conversions
----------------------------
--
-- This section discusses the conversion specifications for
--floating-point numbers: the `%f', `%e', `%E', `%g', and `%G'
--conversions.
--
-- The `%f' conversion prints its argument in fixed-point notation,
--producing output of the form [`-']DDD`.'DDD, where the number of digits
--following the decimal point is controlled by the precision you specify.
--
-- The `%e' conversion prints its argument in exponential notation,
--producing output of the form [`-']D`.'DDD`e'[`+'|`-']DD. Again, the
--number of digits following the decimal point is controlled by the
--precision. The exponent always contains at least two digits. The `%E'
--conversion is similar but the exponent is marked with the letter `E'
--instead of `e'.
--
-- The `%g' and `%G' conversions print the argument in the style of
--`%e' or `%E' (respectively) if the exponent would be less than -4 or
--greater than or equal to the precision; otherwise they use the `%f'
--style. A precision of `0', is taken as 1. is Trailing zeros are
--removed from the fractional portion of the result and a decimal-point
--character appears only if it is followed by a digit.
--
-- The `%a' and `%A' conversions are meant for representing
--floating-point numbers exactly in textual form so that they can be
--exchanged as texts between different programs and/or machines. The
--numbers are represented is the form [`-']`0x'H`.'HHH`p'[`+'|`-']DD. At
--the left of the decimal-point character exactly one digit is print.
--This character is only `0' if the number is denormalized. Otherwise
--the value is unspecified; it is implementation dependent how many bits
--are used. The number of hexadecimal digits on the right side of the
--decimal-point character is equal to the precision. If the precision is
--zero it is determined to be large enough to provide an exact
--representation of the number (or it is large enough to distinguish two
--adjacent values if the `FLT_RADIX' is not a power of 2, *note Floating
--Point Parameters::). For the `%a' conversion lower-case characters are
--used to represent the hexadecimal number and the prefix and exponent
--sign are printed as `0x' and `p' respectively. Otherwise upper-case
--characters are used and `0X' and `P' are used for the representation of
--prefix and exponent string. The exponent to the base of two is printed
--as a decimal number using at least one digit but at most as many digits
--as necessary to represent the value exactly.
--
-- If the value to be printed represents infinity or a NaN, the output
--is [`-']`inf' or `nan' respectively if the conversion specifier is
--`%a', `%e', `%f', or `%g' and it is [`-']`INF' or `NAN' respectively if
--the conversion is `%A', `%E', or `%G'.
--
-- The following flags can be used to modify the behavior:
--
--`-'
-- Left-justify the result in the field. Normally the result is
-- right-justified.
--
--`+'
-- Always include a plus or minus sign in the result.
--
--` '
-- If the result doesn't start with a plus or minus sign, prefix it
-- with a space instead. Since the `+' flag ensures that the result
-- includes a sign, this flag is ignored if you supply both of them.
--
--`#'
-- Specifies that the result should always include a decimal point,
-- even if no digits follow it. For the `%g' and `%G' conversions,
-- this also forces trailing zeros after the decimal point to be left
-- in place where they would otherwise be removed.
--
--`''
-- Separate the digits of the integer part of the result into groups
-- as specified by the locale specified for the `LC_NUMERIC' category;
-- *note General Numeric::. This flag is a GNU extension.
--
--`0'
-- Pad the field with zeros instead of spaces; the zeros are placed
-- after any sign. This flag is ignored if the `-' flag is also
-- specified.
--
-- The precision specifies how many digits follow the decimal-point
--character for the `%f', `%e', and `%E' conversions. For these
--conversions, the default precision is `6'. If the precision is
--explicitly `0', this suppresses the decimal point character entirely.
--For the `%g' and `%G' conversions, the precision specifies how many
--significant digits to print. Significant digits are the first digit
--before the decimal point, and all the digits after it. If the
--precision is `0' or not specified for `%g' or `%G', it is treated like
--a value of `1'. If the value being printed cannot be expressed
--accurately in the specified number of digits, the value is rounded to
--the nearest number that fits.
--
-- Without a type modifier, the floating-point conversions use an
--argument of type `double'. (By the default argument promotions, any
--`float' arguments are automatically converted to `double'.) The
--following type modifier is supported:
--
--`L'
-- An uppercase `L' specifies that the argument is a `long double'.
--
-- Here are some examples showing how numbers print using the various
--floating-point conversions. All of the numbers were printed using this
--template string:
--
-- "|%13.4a|%13.4f|%13.4e|%13.4g|\n"
--
-- Here is the output:
--
-- | 0x0.0000p+0| 0.0000| 0.0000e+00| 0|
-- | 0x1.0000p-1| 0.5000| 5.0000e-01| 0.5|
-- | 0x1.0000p+0| 1.0000| 1.0000e+00| 1|
-- | -0x1.0000p+0| -1.0000| -1.0000e+00| -1|
-- | 0x1.9000p+6| 100.0000| 1.0000e+02| 100|
-- | 0x1.f400p+9| 1000.0000| 1.0000e+03| 1000|
-- | 0x1.3880p+13| 10000.0000| 1.0000e+04| 1e+04|
-- | 0x1.81c8p+13| 12345.0000| 1.2345e+04| 1.234e+04|
-- | 0x1.86a0p+16| 100000.0000| 1.0000e+05| 1e+05|
-- | 0x1.e240p+16| 123456.0000| 1.2346e+05| 1.235e+05|
--
-- Notice how the `%g' conversion drops trailing zeros.
--
--
--File: libc.info, Node: Other Output Conversions, Next: Formatted Output Functions, Prev: Floating-Point Conversions, Up: Formatted Output
--
--Other Output Conversions
--------------------------
--
-- This section describes miscellaneous conversions for `printf'.
--
-- The `%c' conversion prints a single character. In case there is no
--`l' modifier the `int' argument is first converted to an `unsigned
--char'. Then, if used in a wide stream function, the character is
--converted into the corresponding wide character. The `-' flag can be
--used to specify left-justification in the field, but no other flags are
--defined, and no precision or type modifier can be given. For example:
--
-- printf ("%c%c%c%c%c", 'h', 'e', 'l', 'l', 'o');
--
--prints `hello'.
--
-- If there is a `l' modifier present the argument is expected to be of
--type `wint_t'. If used in a multibyte function the wide character is
--converted into a multibyte character before being added to the output.
--In this case more than one output byte can be produced.
--
-- The `%s' conversion prints a string. If no `l' modifier is present
--the corresponding argument must be of type `char *' (or `const char
--*'). If used in a wide stream function the string is first converted
--in a wide character string. A precision can be specified to indicate
--the maximum number of characters to write; otherwise characters in the
--string up to but not including the terminating null character are
--written to the output stream. The `-' flag can be used to specify
--left-justification in the field, but no other flags or type modifiers
--are defined for this conversion. For example:
--
-- printf ("%3s%-6s", "no", "where");
--
--prints ` nowhere '.
--
-- If there is a `l' modifier present the argument is expected to be of
--type `wchar_t' (or `const wchar_t *').
--
-- If you accidentally pass a null pointer as the argument for a `%s'
--conversion, the GNU library prints it as `(null)'. We think this is
--more useful than crashing. But it's not good practice to pass a null
--argument intentionally.
--
-- The `%m' conversion prints the string corresponding to the error
--code in `errno'. *Note Error Messages::. Thus:
--
-- fprintf (stderr, "can't open `%s': %m\n", filename);
--
--is equivalent to:
--
-- fprintf (stderr, "can't open `%s': %s\n", filename, strerror (errno));
--
--The `%m' conversion is a GNU C library extension.
--
-- The `%p' conversion prints a pointer value. The corresponding
--argument must be of type `void *'. In practice, you can use any type
--of pointer.
--
-- In the GNU system, non-null pointers are printed as unsigned
--integers, as if a `%#x' conversion were used. Null pointers print as
--`(nil)'. (Pointers might print differently in other systems.)
--
-- For example:
--
-- printf ("%p", "testing");
--
--prints `0x' followed by a hexadecimal number--the address of the string
--constant `"testing"'. It does not print the word `testing'.
--
-- You can supply the `-' flag with the `%p' conversion to specify
--left-justification, but no other flags, precision, or type modifiers
--are defined.
--
-- The `%n' conversion is unlike any of the other output conversions.
--It uses an argument which must be a pointer to an `int', but instead of
--printing anything it stores the number of characters printed so far by
--this call at that location. The `h' and `l' type modifiers are
--permitted to specify that the argument is of type `short int *' or
--`long int *' instead of `int *', but no flags, field width, or
--precision are permitted.
--
-- For example,
--
-- int nchar;
-- printf ("%d %s%n\n", 3, "bears", &nchar);
--
--prints:
--
-- 3 bears
--
--and sets `nchar' to `7', because `3 bears' is seven characters.
--
-- The `%%' conversion prints a literal `%' character. This conversion
--doesn't use an argument, and no flags, field width, precision, or type
--modifiers are permitted.
--
--
--File: libc.info, Node: Formatted Output Functions, Next: Dynamic Output, Prev: Other Output Conversions, Up: Formatted Output
--
--Formatted Output Functions
----------------------------
--
-- This section describes how to call `printf' and related functions.
--Prototypes for these functions are in the header file `stdio.h'.
--Because these functions take a variable number of arguments, you _must_
--declare prototypes for them before using them. Of course, the easiest
--way to make sure you have all the right prototypes is to just include
--`stdio.h'.
--
-- - Function: int printf (const char *TEMPLATE, ...)
-- The `printf' function prints the optional arguments under the
-- control of the template string TEMPLATE to the stream `stdout'.
-- It returns the number of characters printed, or a negative value
-- if there was an output error.
--
-- - Function: int wprintf (const wchar_t *TEMPLATE, ...)
-- The `wprintf' function prints the optional arguments under the
-- control of the wide template string TEMPLATE to the stream
-- `stdout'. It returns the number of wide characters printed, or a
-- negative value if there was an output error.
--
-- - Function: int fprintf (FILE *STREAM, const char *TEMPLATE, ...)
-- This function is just like `printf', except that the output is
-- written to the stream STREAM instead of `stdout'.
--
-- - Function: int fwprintf (FILE *STREAM, const wchar_t *TEMPLATE, ...)
-- This function is just like `wprintf', except that the output is
-- written to the stream STREAM instead of `stdout'.
--
-- - Function: int sprintf (char *S, const char *TEMPLATE, ...)
-- This is like `printf', except that the output is stored in the
-- character array S instead of written to a stream. A null
-- character is written to mark the end of the string.
--
-- The `sprintf' function returns the number of characters stored in
-- the array S, not including the terminating null character.
--
-- The behavior of this function is undefined if copying takes place
-- between objects that overlap--for example, if S is also given as
-- an argument to be printed under control of the `%s' conversion.
-- *Note Copying and Concatenation::.
--
-- *Warning:* The `sprintf' function can be *dangerous* because it
-- can potentially output more characters than can fit in the
-- allocation size of the string S. Remember that the field width
-- given in a conversion specification is only a _minimum_ value.
--
-- To avoid this problem, you can use `snprintf' or `asprintf',
-- described below.
--
-- - Function: int swprintf (wchar_t *S, size_t SIZE, const wchar_t
-- *TEMPLATE, ...)
-- This is like `wprintf', except that the output is stored in the
-- wide character array WS instead of written to a stream. A null
-- wide character is written to mark the end of the string. The SIZE
-- argument specifies the maximum number of characters to produce.
-- The trailing null character is counted towards this limit, so you
-- should allocate at least SIZE wide characters for the string WS.
--
-- The return value is the number of characters generated for the
-- given input, excluding the trailing null. If not all output fits
-- into the provided buffer a negative value is returned. You should
-- try again with a bigger output string. _Note:_ this is different
-- from how `snprintf' handles this situation.
--
-- Note that the corresponding narrow stream function takes fewer
-- parameters. `swprintf' in fact corresponds to the `snprintf'
-- function. Since the `sprintf' function can be dangerous and should
-- be avoided the ISO C committee refused to make the same mistake
-- again and decided to not define an function exactly corresponding
-- to `sprintf'.
--
-- - Function: int snprintf (char *S, size_t SIZE, const char *TEMPLATE,
-- ...)
-- The `snprintf' function is similar to `sprintf', except that the
-- SIZE argument specifies the maximum number of characters to
-- produce. The trailing null character is counted towards this
-- limit, so you should allocate at least SIZE characters for the
-- string S.
--
-- The return value is the number of characters which would be
-- generated for the given input, excluding the trailing null. If
-- this value is greater or equal to SIZE, not all characters from
-- the result have been stored in S. You should try again with a
-- bigger output string. Here is an example of doing this:
--
-- /* Construct a message describing the value of a variable
-- whose name is NAME and whose value is VALUE. */
-- char *
-- make_message (char *name, char *value)
-- {
-- /* Guess we need no more than 100 chars of space. */
-- int size = 100;
-- char *buffer = (char *) xmalloc (size);
-- int nchars;
-- if (buffer == NULL)
-- return NULL;
--
-- /* Try to print in the allocated space. */
-- nchars = snprintf (buffer, size, "value of %s is %s",
-- name, value);
-- if (nchars >= size)
-- {
-- /* Reallocate buffer now that we know
-- how much space is needed. */
-- buffer = (char *) xrealloc (buffer, nchars + 1);
--
-- if (buffer != NULL)
-- /* Try again. */
-- snprintf (buffer, size, "value of %s is %s",
-- name, value);
-- }
-- /* The last call worked, return the string. */
-- return buffer;
-- }
--
-- In practice, it is often easier just to use `asprintf', below.
--
-- *Attention:* In versions of the GNU C library prior to 2.1 the
-- return value is the number of characters stored, not including the
-- terminating null; unless there was not enough space in S to store
-- the result in which case `-1' is returned. This was changed in
-- order to comply with the ISO C99 standard.
--
--
--File: libc.info, Node: Dynamic Output, Next: Variable Arguments Output, Prev: Formatted Output Functions, Up: Formatted Output
--
--Dynamically Allocating Formatted Output
-----------------------------------------
--
-- The functions in this section do formatted output and place the
--results in dynamically allocated memory.
--
-- - Function: int asprintf (char **PTR, const char *TEMPLATE, ...)
-- This function is similar to `sprintf', except that it dynamically
-- allocates a string (as with `malloc'; *note Unconstrained
-- Allocation::) to hold the output, instead of putting the output in
-- a buffer you allocate in advance. The PTR argument should be the
-- address of a `char *' object, and `asprintf' stores a pointer to
-- the newly allocated string at that location.
--
-- The return value is the number of characters allocated for the
-- buffer, or less than zero if an error occurred. Usually this means
-- that the buffer could not be allocated.
--
-- Here is how to use `asprintf' to get the same result as the
-- `snprintf' example, but more easily:
--
-- /* Construct a message describing the value of a variable
-- whose name is NAME and whose value is VALUE. */
-- char *
-- make_message (char *name, char *value)
-- {
-- char *result;
-- if (asprintf (&result, "value of %s is %s", name, value) < 0)
-- return NULL;
-- return result;
-- }
--
-- - Function: int obstack_printf (struct obstack *OBSTACK, const char
-- *TEMPLATE, ...)
-- This function is similar to `asprintf', except that it uses the
-- obstack OBSTACK to allocate the space. *Note Obstacks::.
--
-- The characters are written onto the end of the current object. To
-- get at them, you must finish the object with `obstack_finish'
-- (*note Growing Objects::).
--
--
--File: libc.info, Node: Variable Arguments Output, Next: Parsing a Template String, Prev: Dynamic Output, Up: Formatted Output
--
--Variable Arguments Output Functions
-------------------------------------
--
-- The functions `vprintf' and friends are provided so that you can
--define your own variadic `printf'-like functions that make use of the
--same internals as the built-in formatted output functions.
--
-- The most natural way to define such functions would be to use a
--language construct to say, "Call `printf' and pass this template plus
--all of my arguments after the first five." But there is no way to do
--this in C, and it would be hard to provide a way, since at the C
--language level there is no way to tell how many arguments your function
--received.
--
-- Since that method is impossible, we provide alternative functions,
--the `vprintf' series, which lets you pass a `va_list' to describe "all
--of my arguments after the first five."
--
-- When it is sufficient to define a macro rather than a real function,
--the GNU C compiler provides a way to do this much more easily with
--macros. For example:
--
-- #define myprintf(a, b, c, d, e, rest...) \
-- printf (mytemplate , ## rest)
--
--*Note Macros with Variable Numbers of Arguments: (gcc.info)Macro
--Varargs, for details. But this is limited to macros, and does not
--apply to real functions at all.
--
-- Before calling `vprintf' or the other functions listed in this
--section, you _must_ call `va_start' (*note Variadic Functions::) to
--initialize a pointer to the variable arguments. Then you can call
--`va_arg' to fetch the arguments that you want to handle yourself. This
--advances the pointer past those arguments.
--
-- Once your `va_list' pointer is pointing at the argument of your
--choice, you are ready to call `vprintf'. That argument and all
--subsequent arguments that were passed to your function are used by
--`vprintf' along with the template that you specified separately.
--
-- In some other systems, the `va_list' pointer may become invalid
--after the call to `vprintf', so you must not use `va_arg' after you
--call `vprintf'. Instead, you should call `va_end' to retire the
--pointer from service. However, you can safely call `va_start' on
--another pointer variable and begin fetching the arguments again through
--that pointer. Calling `vprintf' does not destroy the argument list of
--your function, merely the particular pointer that you passed to it.
--
-- GNU C does not have such restrictions. You can safely continue to
--fetch arguments from a `va_list' pointer after passing it to `vprintf',
--and `va_end' is a no-op. (Note, however, that subsequent `va_arg'
--calls will fetch the same arguments which `vprintf' previously used.)
--
-- Prototypes for these functions are declared in `stdio.h'.
--
-- - Function: int vprintf (const char *TEMPLATE, va_list AP)
-- This function is similar to `printf' except that, instead of taking
-- a variable number of arguments directly, it takes an argument list
-- pointer AP.
--
-- - Function: int vwprintf (const wchar_t *TEMPLATE, va_list AP)
-- This function is similar to `wprintf' except that, instead of
-- taking a variable number of arguments directly, it takes an
-- argument list pointer AP.
--
-- - Function: int vfprintf (FILE *STREAM, const char *TEMPLATE, va_list
-- AP)
-- This is the equivalent of `fprintf' with the variable argument list
-- specified directly as for `vprintf'.
--
-- - Function: int vfwprintf (FILE *STREAM, const wchar_t *TEMPLATE,
-- va_list AP)
-- This is the equivalent of `fwprintf' with the variable argument
-- list specified directly as for `vwprintf'.
--
-- - Function: int vsprintf (char *S, const char *TEMPLATE, va_list AP)
-- This is the equivalent of `sprintf' with the variable argument list
-- specified directly as for `vprintf'.
--
-- - Function: int vswprintf (wchar_t *S, size_t SIZE, const wchar_t
-- *TEMPLATE, va_list AP)
-- This is the equivalent of `swprintf' with the variable argument
-- list specified directly as for `vwprintf'.
--
-- - Function: int vsnprintf (char *S, size_t SIZE, const char *TEMPLATE,
-- va_list AP)
-- This is the equivalent of `snprintf' with the variable argument
-- list specified directly as for `vprintf'.
--
-- - Function: int vasprintf (char **PTR, const char *TEMPLATE, va_list
-- AP)
-- The `vasprintf' function is the equivalent of `asprintf' with the
-- variable argument list specified directly as for `vprintf'.
--
-- - Function: int obstack_vprintf (struct obstack *OBSTACK, const char
-- *TEMPLATE, va_list AP)
-- The `obstack_vprintf' function is the equivalent of
-- `obstack_printf' with the variable argument list specified directly
-- as for `vprintf'.
--
-- Here's an example showing how you might use `vfprintf'. This is a
--function that prints error messages to the stream `stderr', along with
--a prefix indicating the name of the program (*note Error Messages::,
--for a description of `program_invocation_short_name').
--
-- #include <stdio.h>
-- #include <stdarg.h>
--
-- void
-- eprintf (const char *template, ...)
-- {
-- va_list ap;
-- extern char *program_invocation_short_name;
--
-- fprintf (stderr, "%s: ", program_invocation_short_name);
-- va_start (ap, template);
-- vfprintf (stderr, template, ap);
-- va_end (ap);
-- }
--
--You could call `eprintf' like this:
--
-- eprintf ("file `%s' does not exist\n", filename);
--
-- In GNU C, there is a special construct you can use to let the
--compiler know that a function uses a `printf'-style format string.
--Then it can check the number and types of arguments in each call to the
--function, and warn you when they do not match the format string. For
--example, take this declaration of `eprintf':
--
-- void eprintf (const char *template, ...)
-- __attribute__ ((format (printf, 1, 2)));
--
--This tells the compiler that `eprintf' uses a format string like
--`printf' (as opposed to `scanf'; *note Formatted Input::); the format
--string appears as the first argument; and the arguments to satisfy the
--format begin with the second. *Note Declaring Attributes of Functions:
--(gcc.info)Function Attributes, for more information.
--
--
--File: libc.info, Node: Parsing a Template String, Next: Example of Parsing, Prev: Variable Arguments Output, Up: Formatted Output
--
--Parsing a Template String
---------------------------
--
-- You can use the function `parse_printf_format' to obtain information
--about the number and types of arguments that are expected by a given
--template string. This function permits interpreters that provide
--interfaces to `printf' to avoid passing along invalid arguments from
--the user's program, which could cause a crash.
--
-- All the symbols described in this section are declared in the header
--file `printf.h'.
--
-- - Function: size_t parse_printf_format (const char *TEMPLATE, size_t
-- N, int *ARGTYPES)
-- This function returns information about the number and types of
-- arguments expected by the `printf' template string TEMPLATE. The
-- information is stored in the array ARGTYPES; each element of this
-- array describes one argument. This information is encoded using
-- the various `PA_' macros, listed below.
--
-- The argument N specifies the number of elements in the array
-- ARGTYPES. This is the maximum number of elements that
-- `parse_printf_format' will try to write.
--
-- `parse_printf_format' returns the total number of arguments
-- required by TEMPLATE. If this number is greater than N, then the
-- information returned describes only the first N arguments. If you
-- want information about additional arguments, allocate a bigger
-- array and call `parse_printf_format' again.
--
-- The argument types are encoded as a combination of a basic type and
--modifier flag bits.
--
-- - Macro: int PA_FLAG_MASK
-- This macro is a bitmask for the type modifier flag bits. You can
-- write the expression `(argtypes[i] & PA_FLAG_MASK)' to extract
-- just the flag bits for an argument, or `(argtypes[i] &
-- ~PA_FLAG_MASK)' to extract just the basic type code.
--
-- Here are symbolic constants that represent the basic types; they
--stand for integer values.
--
--`PA_INT'
-- This specifies that the base type is `int'.
--
--`PA_CHAR'
-- This specifies that the base type is `int', cast to `char'.
--
--`PA_STRING'
-- This specifies that the base type is `char *', a null-terminated
-- string.
--
--`PA_POINTER'
-- This specifies that the base type is `void *', an arbitrary
-- pointer.
--
--`PA_FLOAT'
-- This specifies that the base type is `float'.
--
--`PA_DOUBLE'
-- This specifies that the base type is `double'.
--
--`PA_LAST'
-- You can define additional base types for your own programs as
-- offsets from `PA_LAST'. For example, if you have data types `foo'
-- and `bar' with their own specialized `printf' conversions, you
-- could define encodings for these types as:
--
-- #define PA_FOO PA_LAST
-- #define PA_BAR (PA_LAST + 1)
--
-- Here are the flag bits that modify a basic type. They are combined
--with the code for the basic type using inclusive-or.
--
--`PA_FLAG_PTR'
-- If this bit is set, it indicates that the encoded type is a
-- pointer to the base type, rather than an immediate value. For
-- example, `PA_INT|PA_FLAG_PTR' represents the type `int *'.
--
--`PA_FLAG_SHORT'
-- If this bit is set, it indicates that the base type is modified
-- with `short'. (This corresponds to the `h' type modifier.)
--
--`PA_FLAG_LONG'
-- If this bit is set, it indicates that the base type is modified
-- with `long'. (This corresponds to the `l' type modifier.)
--
--`PA_FLAG_LONG_LONG'
-- If this bit is set, it indicates that the base type is modified
-- with `long long'. (This corresponds to the `L' type modifier.)
--
--`PA_FLAG_LONG_DOUBLE'
-- This is a synonym for `PA_FLAG_LONG_LONG', used by convention with
-- a base type of `PA_DOUBLE' to indicate a type of `long double'.
--
-- For an example of using these facilities, see *Note Example of
--Parsing::.
--
--
--File: libc.info, Node: Example of Parsing, Prev: Parsing a Template String, Up: Formatted Output
--
--Example of Parsing a Template String
--------------------------------------
--
-- Here is an example of decoding argument types for a format string.
--We assume this is part of an interpreter which contains arguments of
--type `NUMBER', `CHAR', `STRING' and `STRUCTURE' (and perhaps others
--which are not valid here).
--
-- /* Test whether the NARGS specified objects
-- in the vector ARGS are valid
-- for the format string FORMAT:
-- if so, return 1.
-- If not, return 0 after printing an error message. */
--
-- int
-- validate_args (char *format, int nargs, OBJECT *args)
-- {
-- int *argtypes;
-- int nwanted;
--
-- /* Get the information about the arguments.
-- Each conversion specification must be at least two characters
-- long, so there cannot be more specifications than half the
-- length of the string. */
--
-- argtypes = (int *) alloca (strlen (format) / 2 * sizeof (int));
-- nwanted = parse_printf_format (string, nelts, argtypes);
--
-- /* Check the number of arguments. */
-- if (nwanted > nargs)
-- {
-- error ("too few arguments (at least %d required)", nwanted);
-- return 0;
-- }
--
-- /* Check the C type wanted for each argument
-- and see if the object given is suitable. */
-- for (i = 0; i < nwanted; i++)
-- {
-- int wanted;
--
-- if (argtypes[i] & PA_FLAG_PTR)
-- wanted = STRUCTURE;
-- else
-- switch (argtypes[i] & ~PA_FLAG_MASK)
-- {
-- case PA_INT:
-- case PA_FLOAT:
-- case PA_DOUBLE:
-- wanted = NUMBER;
-- break;
-- case PA_CHAR:
-- wanted = CHAR;
-- break;
-- case PA_STRING:
-- wanted = STRING;
-- break;
-- case PA_POINTER:
-- wanted = STRUCTURE;
-- break;
-- }
-- if (TYPE (args[i]) != wanted)
-- {
-- error ("type mismatch for arg number %d", i);
-- return 0;
-- }
-- }
-- return 1;
-- }
--
--
--File: libc.info, Node: Customizing Printf, Next: Formatted Input, Prev: Formatted Output, Up: I/O on Streams
--
--Customizing `printf'
--====================
--
-- The GNU C library lets you define your own custom conversion
--specifiers for `printf' template strings, to teach `printf' clever ways
--to print the important data structures of your program.
--
-- The way you do this is by registering the conversion with the
--function `register_printf_function'; see *Note Registering New
--Conversions::. One of the arguments you pass to this function is a
--pointer to a handler function that produces the actual output; see
--*Note Defining the Output Handler::, for information on how to write
--this function.
--
-- You can also install a function that just returns information about
--the number and type of arguments expected by the conversion specifier.
--*Note Parsing a Template String::, for information about this.
--
-- The facilities of this section are declared in the header file
--`printf.h'.
--
--* Menu:
--
--* Registering New Conversions:: Using `register_printf_function'
-- to register a new output conversion.
--* Conversion Specifier Options:: The handler must be able to get
-- the options specified in the
-- template when it is called.
--* Defining the Output Handler:: Defining the handler and arginfo
-- functions that are passed as arguments
-- to `register_printf_function'.
--* Printf Extension Example:: How to define a `printf'
-- handler function.
--* Predefined Printf Handlers:: Predefined `printf' handlers.
--
-- *Portability Note:* The ability to extend the syntax of `printf'
--template strings is a GNU extension. ISO standard C has nothing
--similar.
--
--
--File: libc.info, Node: Registering New Conversions, Next: Conversion Specifier Options, Up: Customizing Printf
--
--Registering New Conversions
-----------------------------
--
-- The function to register a new output conversion is
--`register_printf_function', declared in `printf.h'.
--
-- - Function: int register_printf_function (int SPEC, printf_function
-- HANDLER-FUNCTION, printf_arginfo_function ARGINFO-FUNCTION)
-- This function defines the conversion specifier character SPEC.
-- Thus, if SPEC is `'Y'', it defines the conversion `%Y'. You can
-- redefine the built-in conversions like `%s', but flag characters
-- like `#' and type modifiers like `l' can never be used as
-- conversions; calling `register_printf_function' for those
-- characters has no effect. It is advisable not to use lowercase
-- letters, since the ISO C standard warns that additional lowercase
-- letters may be standardized in future editions of the standard.
--
-- The HANDLER-FUNCTION is the function called by `printf' and
-- friends when this conversion appears in a template string. *Note
-- Defining the Output Handler::, for information about how to define
-- a function to pass as this argument. If you specify a null
-- pointer, any existing handler function for SPEC is removed.
--
-- The ARGINFO-FUNCTION is the function called by
-- `parse_printf_format' when this conversion appears in a template
-- string. *Note Parsing a Template String::, for information about
-- this.
--
-- *Attention:* In the GNU C library versions before 2.0 the
-- ARGINFO-FUNCTION function did not need to be installed unless the
-- user used the `parse_printf_format' function. This has changed.
-- Now a call to any of the `printf' functions will call this
-- function when this format specifier appears in the format string.
--
-- The return value is `0' on success, and `-1' on failure (which
-- occurs if SPEC is out of range).
--
-- You can redefine the standard output conversions, but this is
-- probably not a good idea because of the potential for confusion.
-- Library routines written by other people could break if you do
-- this.
--
--
--File: libc.info, Node: Conversion Specifier Options, Next: Defining the Output Handler, Prev: Registering New Conversions, Up: Customizing Printf
--
--Conversion Specifier Options
------------------------------
--
-- If you define a meaning for `%A', what if the template contains
--`%+23A' or `%-#A'? To implement a sensible meaning for these, the
--handler when called needs to be able to get the options specified in
--the template.
--
-- Both the HANDLER-FUNCTION and ARGINFO-FUNCTION accept an argument
--that points to a `struct printf_info', which contains information about
--the options appearing in an instance of the conversion specifier. This
--data type is declared in the header file `printf.h'.
--
-- - Type: struct printf_info
-- This structure is used to pass information about the options
-- appearing in an instance of a conversion specifier in a `printf'
-- template string to the handler and arginfo functions for that
-- specifier. It contains the following members:
--
-- `int prec'
-- This is the precision specified. The value is `-1' if no
-- precision was specified. If the precision was given as `*',
-- the `printf_info' structure passed to the handler function
-- contains the actual value retrieved from the argument list.
-- But the structure passed to the arginfo function contains a
-- value of `INT_MIN', since the actual value is not known.
--
-- `int width'
-- This is the minimum field width specified. The value is `0'
-- if no width was specified. If the field width was given as
-- `*', the `printf_info' structure passed to the handler
-- function contains the actual value retrieved from the
-- argument list. But the structure passed to the arginfo
-- function contains a value of `INT_MIN', since the actual
-- value is not known.
--
-- `wchar_t spec'
-- This is the conversion specifier character specified. It's
-- stored in the structure so that you can register the same
-- handler function for multiple characters, but still have a
-- way to tell them apart when the handler function is called.
--
-- `unsigned int is_long_double'
-- This is a boolean that is true if the `L', `ll', or `q' type
-- modifier was specified. For integer conversions, this
-- indicates `long long int', as opposed to `long double' for
-- floating point conversions.
--
-- `unsigned int is_char'
-- This is a boolean that is true if the `hh' type modifier was
-- specified.
--
-- `unsigned int is_short'
-- This is a boolean that is true if the `h' type modifier was
-- specified.
--
-- `unsigned int is_long'
-- This is a boolean that is true if the `l' type modifier was
-- specified.
--
-- `unsigned int alt'
-- This is a boolean that is true if the `#' flag was specified.
--
-- `unsigned int space'
-- This is a boolean that is true if the ` ' flag was specified.
--
-- `unsigned int left'
-- This is a boolean that is true if the `-' flag was specified.
--
-- `unsigned int showsign'
-- This is a boolean that is true if the `+' flag was specified.
--
-- `unsigned int group'
-- This is a boolean that is true if the `'' flag was specified.
--
-- `unsigned int extra'
-- This flag has a special meaning depending on the context. It
-- could be used freely by the user-defined handlers but when
-- called from the `printf' function this variable always
-- contains the value `0'.
--
-- `unsigned int wide'
-- This flag is set if the stream is wide oriented.
--
-- `wchar_t pad'
-- This is the character to use for padding the output to the
-- minimum field width. The value is `'0'' if the `0' flag was
-- specified, and `' '' otherwise.
--
--
--File: libc.info, Node: Defining the Output Handler, Next: Printf Extension Example, Prev: Conversion Specifier Options, Up: Customizing Printf
--
--Defining the Output Handler
-----------------------------
--
-- Now let's look at how to define the handler and arginfo functions
--which are passed as arguments to `register_printf_function'.
--
-- *Compatibility Note:* The interface changed in GNU libc version 2.0.
--Previously the third argument was of type `va_list *'.
--
-- You should define your handler functions with a prototype like:
--
-- int FUNCTION (FILE *stream, const struct printf_info *info,
-- const void *const *args)
--
-- The STREAM argument passed to the handler function is the stream to
--which it should write output.
--
-- The INFO argument is a pointer to a structure that contains
--information about the various options that were included with the
--conversion in the template string. You should not modify this structure
--inside your handler function. *Note Conversion Specifier Options::, for
--a description of this data structure.
--
-- The ARGS is a vector of pointers to the arguments data. The number
--of arguments was determined by calling the argument information
--function provided by the user.
--
-- Your handler function should return a value just like `printf' does:
--it should return the number of characters it has written, or a negative
--value to indicate an error.
--
-- - Data Type: printf_function
-- This is the data type that a handler function should have.
--
-- If you are going to use `parse_printf_format' in your application,
--you must also define a function to pass as the ARGINFO-FUNCTION
--argument for each new conversion you install with
--`register_printf_function'.
--
-- You have to define these functions with a prototype like:
--
-- int FUNCTION (const struct printf_info *info,
-- size_t n, int *argtypes)
--
-- The return value from the function should be the number of arguments
--the conversion expects. The function should also fill in no more than
--N elements of the ARGTYPES array with information about the types of
--each of these arguments. This information is encoded using the various
--`PA_' macros. (You will notice that this is the same calling
--convention `parse_printf_format' itself uses.)
--
-- - Data Type: printf_arginfo_function
-- This type is used to describe functions that return information
-- about the number and type of arguments used by a conversion
-- specifier.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-19 glibc-2.3.2-200304020432/manual/libc.info-19
---- glibc-2.3.2/manual/libc.info-19 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-19 Thu Jan 1 01:00:00 1970
-@@ -1,1181 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Printf Extension Example, Next: Predefined Printf Handlers, Prev: Defining the Output Handler, Up: Customizing Printf
--
--`printf' Extension Example
----------------------------
--
-- Here is an example showing how to define a `printf' handler function.
--This program defines a data structure called a `Widget' and defines the
--`%W' conversion to print information about `Widget *' arguments,
--including the pointer value and the name stored in the data structure.
--The `%W' conversion supports the minimum field width and
--left-justification options, but ignores everything else.
--
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <printf.h>
--
-- typedef struct
-- {
-- char *name;
-- }
-- Widget;
--
-- int
-- print_widget (FILE *stream,
-- const struct printf_info *info,
-- const void *const *args)
-- {
-- const Widget *w;
-- char *buffer;
-- int len;
--
-- /* Format the output into a string. */
-- w = *((const Widget **) (args[0]));
-- len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
-- if (len == -1)
-- return -1;
--
-- /* Pad to the minimum field width and print to the stream. */
-- len = fprintf (stream, "%*s",
-- (info->left ? -info->width : info->width),
-- buffer);
--
-- /* Clean up and return. */
-- free (buffer);
-- return len;
-- }
--
--
-- int
-- print_widget_arginfo (const struct printf_info *info, size_t n,
-- int *argtypes)
-- {
-- /* We always take exactly one argument and this is a pointer to the
-- structure.. */
-- if (n > 0)
-- argtypes[0] = PA_POINTER;
-- return 1;
-- }
--
--
-- int
-- main (void)
-- {
-- /* Make a widget to print. */
-- Widget mywidget;
-- mywidget.name = "mywidget";
--
-- /* Register the print function for widgets. */
-- register_printf_function ('W', print_widget, print_widget_arginfo);
--
-- /* Now print the widget. */
-- printf ("|%W|\n", &mywidget);
-- printf ("|%35W|\n", &mywidget);
-- printf ("|%-35W|\n", &mywidget);
--
-- return 0;
-- }
--
-- The output produced by this program looks like:
--
-- |<Widget 0xffeffb7c: mywidget>|
-- | <Widget 0xffeffb7c: mywidget>|
-- |<Widget 0xffeffb7c: mywidget> |
--
--
--File: libc.info, Node: Predefined Printf Handlers, Prev: Printf Extension Example, Up: Customizing Printf
--
--Predefined `printf' Handlers
------------------------------
--
-- The GNU libc also contains a concrete and useful application of the
--`printf' handler extension. There are two functions available which
--implement a special way to print floating-point numbers.
--
-- - Function: int printf_size (FILE *FP, const struct printf_info *INFO,
-- const void *const *ARGS)
-- Print a given floating point number as for the format `%f' except
-- that there is a postfix character indicating the divisor for the
-- number to make this less than 1000. There are two possible
-- divisors: powers of 1024 or powers of 1000. Which one is used
-- depends on the format character specified while registered this
-- handler. If the character is of lower case, 1024 is used. For
-- upper case characters, 1000 is used.
--
-- The postfix tag corresponds to bytes, kilobytes, megabytes,
-- gigabytes, etc. The full table is:
--
-- +------+--------------+--------+--------+---------------+
-- |low|Multiplier|From|Upper|Multiplier|
-- +------+--------------+--------+--------+---------------+
-- |' '|1||' '|1|
-- +------+--------------+--------+--------+---------------+
-- |k|2^10 (1024)|kilo|K|10^3 (1000)|
-- +------+--------------+--------+--------+---------------+
-- |m|2^20|mega|M|10^6|
-- +------+--------------+--------+--------+---------------+
-- |g|2^30|giga|G|10^9|
-- +------+--------------+--------+--------+---------------+
-- |t|2^40|tera|T|10^12|
-- +------+--------------+--------+--------+---------------+
-- |p|2^50|peta|P|10^15|
-- +------+--------------+--------+--------+---------------+
-- |e|2^60|exa|E|10^18|
-- +------+--------------+--------+--------+---------------+
-- |z|2^70|zetta|Z|10^21|
-- +------+--------------+--------+--------+---------------+
-- |y|2^80|yotta|Y|10^24|
-- +------+--------------+--------+--------+---------------+
--
-- The default precision is 3, i.e., 1024 is printed with a lower-case
-- format character as if it were `%.3fk' and will yield `1.000k'.
--
-- Due to the requirements of `register_printf_function' we must also
--provide the function which returns information about the arguments.
--
-- - Function: int printf_size_info (const struct printf_info *INFO,
-- size_t N, int *ARGTYPES)
-- This function will return in ARGTYPES the information about the
-- used parameters in the way the `vfprintf' implementation expects
-- it. The format always takes one argument.
--
-- To use these functions both functions must be registered with a call
--like
--
-- register_printf_function ('B', printf_size, printf_size_info);
--
-- Here we register the functions to print numbers as powers of 1000
--since the format character `'B'' is an upper-case character. If we
--would additionally use `'b'' in a line like
--
-- register_printf_function ('b', printf_size, printf_size_info);
--
--we could also print using a power of 1024. Please note that all that is
--different in these two lines is the format specifier. The
--`printf_size' function knows about the difference between lower and
--upper case format specifiers.
--
-- The use of `'B'' and `'b'' is no coincidence. Rather it is the
--preferred way to use this functionality since it is available on some
--other systems which also use format specifiers.
--
--
--File: libc.info, Node: Formatted Input, Next: EOF and Errors, Prev: Customizing Printf, Up: I/O on Streams
--
--Formatted Input
--===============
--
-- The functions described in this section (`scanf' and related
--functions) provide facilities for formatted input analogous to the
--formatted output facilities. These functions provide a mechanism for
--reading arbitrary values under the control of a "format string" or
--"template string".
--
--* Menu:
--
--* Formatted Input Basics:: Some basics to get you started.
--* Input Conversion Syntax:: Syntax of conversion specifications.
--* Table of Input Conversions:: Summary of input conversions and what they do.
--* Numeric Input Conversions:: Details of conversions for reading numbers.
--* String Input Conversions:: Details of conversions for reading strings.
--* Dynamic String Input:: String conversions that `malloc' the buffer.
--* Other Input Conversions:: Details of miscellaneous other conversions.
--* Formatted Input Functions:: Descriptions of the actual functions.
--* Variable Arguments Input:: `vscanf' and friends.
--
--
--File: libc.info, Node: Formatted Input Basics, Next: Input Conversion Syntax, Up: Formatted Input
--
--Formatted Input Basics
------------------------
--
-- Calls to `scanf' are superficially similar to calls to `printf' in
--that arbitrary arguments are read under the control of a template
--string. While the syntax of the conversion specifications in the
--template is very similar to that for `printf', the interpretation of
--the template is oriented more towards free-format input and simple
--pattern matching, rather than fixed-field formatting. For example,
--most `scanf' conversions skip over any amount of "white space"
--(including spaces, tabs, and newlines) in the input file, and there is
--no concept of precision for the numeric input conversions as there is
--for the corresponding output conversions. Ordinarily, non-whitespace
--characters in the template are expected to match characters in the
--input stream exactly, but a matching failure is distinct from an input
--error on the stream.
--
-- Another area of difference between `scanf' and `printf' is that you
--must remember to supply pointers rather than immediate values as the
--optional arguments to `scanf'; the values that are read are stored in
--the objects that the pointers point to. Even experienced programmers
--tend to forget this occasionally, so if your program is getting strange
--errors that seem to be related to `scanf', you might want to
--double-check this.
--
-- When a "matching failure" occurs, `scanf' returns immediately,
--leaving the first non-matching character as the next character to be
--read from the stream. The normal return value from `scanf' is the
--number of values that were assigned, so you can use this to determine if
--a matching error happened before all the expected values were read.
--
-- The `scanf' function is typically used for things like reading in
--the contents of tables. For example, here is a function that uses
--`scanf' to initialize an array of `double':
--
-- void
-- readarray (double *array, int n)
-- {
-- int i;
-- for (i=0; i<n; i++)
-- if (scanf (" %lf", &(array[i])) != 1)
-- invalid_input_error ();
-- }
--
-- The formatted input functions are not used as frequently as the
--formatted output functions. Partly, this is because it takes some care
--to use them properly. Another reason is that it is difficult to recover
--from a matching error.
--
-- If you are trying to read input that doesn't match a single, fixed
--pattern, you may be better off using a tool such as Flex to generate a
--lexical scanner, or Bison to generate a parser, rather than using
--`scanf'. For more information about these tools, see *Note Top:
--(flex.info)Top, and *Note Top: (bison.info)Top.
--
--
--File: libc.info, Node: Input Conversion Syntax, Next: Table of Input Conversions, Prev: Formatted Input Basics, Up: Formatted Input
--
--Input Conversion Syntax
-------------------------
--
-- A `scanf' template string is a string that contains ordinary
--multibyte characters interspersed with conversion specifications that
--start with `%'.
--
-- Any whitespace character (as defined by the `isspace' function;
--*note Classification of Characters::) in the template causes any number
--of whitespace characters in the input stream to be read and discarded.
--The whitespace characters that are matched need not be exactly the same
--whitespace characters that appear in the template string. For example,
--write ` , ' in the template to recognize a comma with optional
--whitespace before and after.
--
-- Other characters in the template string that are not part of
--conversion specifications must match characters in the input stream
--exactly; if this is not the case, a matching failure occurs.
--
-- The conversion specifications in a `scanf' template string have the
--general form:
--
-- % FLAGS WIDTH TYPE CONVERSION
--
-- In more detail, an input conversion specification consists of an
--initial `%' character followed in sequence by:
--
-- * An optional "flag character" `*', which says to ignore the text
-- read for this specification. When `scanf' finds a conversion
-- specification that uses this flag, it reads input as directed by
-- the rest of the conversion specification, but it discards this
-- input, does not use a pointer argument, and does not increment the
-- count of successful assignments.
--
-- * An optional flag character `a' (valid with string conversions only)
-- which requests allocation of a buffer long enough to store the
-- string in. (This is a GNU extension.) *Note Dynamic String
-- Input::.
--
-- * An optional decimal integer that specifies the "maximum field
-- width". Reading of characters from the input stream stops either
-- when this maximum is reached or when a non-matching character is
-- found, whichever happens first. Most conversions discard initial
-- whitespace characters (those that don't are explicitly
-- documented), and these discarded characters don't count towards
-- the maximum field width. String input conversions store a null
-- character to mark the end of the input; the maximum field width
-- does not include this terminator.
--
-- * An optional "type modifier character". For example, you can
-- specify a type modifier of `l' with integer conversions such as
-- `%d' to specify that the argument is a pointer to a `long int'
-- rather than a pointer to an `int'.
--
-- * A character that specifies the conversion to be applied.
--
-- The exact options that are permitted and how they are interpreted
--vary between the different conversion specifiers. See the descriptions
--of the individual conversions for information about the particular
--options that they allow.
--
-- With the `-Wformat' option, the GNU C compiler checks calls to
--`scanf' and related functions. It examines the format string and
--verifies that the correct number and types of arguments are supplied.
--There is also a GNU C syntax to tell the compiler that a function you
--write uses a `scanf'-style format string. *Note Declaring Attributes
--of Functions: (gcc.info)Function Attributes, for more information.
--
--
--File: libc.info, Node: Table of Input Conversions, Next: Numeric Input Conversions, Prev: Input Conversion Syntax, Up: Formatted Input
--
--Table of Input Conversions
----------------------------
--
-- Here is a table that summarizes the various conversion
--specifications:
--
--`%d'
-- Matches an optionally signed integer written in decimal. *Note
-- Numeric Input Conversions::.
--
--`%i'
-- Matches an optionally signed integer in any of the formats that
-- the C language defines for specifying an integer constant. *Note
-- Numeric Input Conversions::.
--
--`%o'
-- Matches an unsigned integer written in octal radix. *Note Numeric
-- Input Conversions::.
--
--`%u'
-- Matches an unsigned integer written in decimal radix. *Note
-- Numeric Input Conversions::.
--
--`%x', `%X'
-- Matches an unsigned integer written in hexadecimal radix. *Note
-- Numeric Input Conversions::.
--
--`%e', `%f', `%g', `%E', `%G'
-- Matches an optionally signed floating-point number. *Note Numeric
-- Input Conversions::.
--
--`%s'
-- Matches a string containing only non-whitespace characters. *Note
-- String Input Conversions::. The presence of the `l' modifier
-- determines whether the output is stored as a wide character string
-- or a multibyte string. If `%s' is used in a wide character
-- function the string is converted as with multiple calls to
-- `wcrtomb' into a multibyte string. This means that the buffer
-- must provide room for `MB_CUR_MAX' bytes for each wide character
-- read. In case `%ls' is used in a multibyte function the result is
-- converted into wide characters as with multiple calls of `mbrtowc'
-- before being stored in the user provided buffer.
--
--`%S'
-- This is an alias for `%ls' which is supported for compatibility
-- with the Unix standard.
--
--`%['
-- Matches a string of characters that belong to a specified set.
-- *Note String Input Conversions::. The presence of the `l' modifier
-- determines whether the output is stored as a wide character string
-- or a multibyte string. If `%[' is used in a wide character
-- function the string is converted as with multiple calls to
-- `wcrtomb' into a multibyte string. This means that the buffer
-- must provide room for `MB_CUR_MAX' bytes for each wide character
-- read. In case `%l[' is used in a multibyte function the result is
-- converted into wide characters as with multiple calls of `mbrtowc'
-- before being stored in the user provided buffer.
--
--`%c'
-- Matches a string of one or more characters; the number of
-- characters read is controlled by the maximum field width given for
-- the conversion. *Note String Input Conversions::.
--
-- If the `%c' is used in a wide stream function the read value is
-- converted from a wide character to the corresponding multibyte
-- character before storing it. Note that this conversion can
-- produce more than one byte of output and therefore the provided
-- buffer be large enough for up to `MB_CUR_MAX' bytes for each
-- character. If `%lc' is used in a multibyte function the input is
-- treated as a multibyte sequence (and not bytes) and the result is
-- converted as with calls to `mbrtowc'.
--
--`%C'
-- This is an alias for `%lc' which is supported for compatibility
-- with the Unix standard.
--
--`%p'
-- Matches a pointer value in the same implementation-defined format
-- used by the `%p' output conversion for `printf'. *Note Other
-- Input Conversions::.
--
--`%n'
-- This conversion doesn't read any characters; it records the number
-- of characters read so far by this call. *Note Other Input
-- Conversions::.
--
--`%%'
-- This matches a literal `%' character in the input stream. No
-- corresponding argument is used. *Note Other Input Conversions::.
--
-- If the syntax of a conversion specification is invalid, the behavior
--is undefined. If there aren't enough function arguments provided to
--supply addresses for all the conversion specifications in the template
--strings that perform assignments, or if the arguments are not of the
--correct types, the behavior is also undefined. On the other hand, extra
--arguments are simply ignored.
--
--
--File: libc.info, Node: Numeric Input Conversions, Next: String Input Conversions, Prev: Table of Input Conversions, Up: Formatted Input
--
--Numeric Input Conversions
---------------------------
--
-- This section describes the `scanf' conversions for reading numeric
--values.
--
-- The `%d' conversion matches an optionally signed integer in decimal
--radix. The syntax that is recognized is the same as that for the
--`strtol' function (*note Parsing of Integers::) with the value `10' for
--the BASE argument.
--
-- The `%i' conversion matches an optionally signed integer in any of
--the formats that the C language defines for specifying an integer
--constant. The syntax that is recognized is the same as that for the
--`strtol' function (*note Parsing of Integers::) with the value `0' for
--the BASE argument. (You can print integers in this syntax with
--`printf' by using the `#' flag character with the `%x', `%o', or `%d'
--conversion. *Note Integer Conversions::.)
--
-- For example, any of the strings `10', `0xa', or `012' could be read
--in as integers under the `%i' conversion. Each of these specifies a
--number with decimal value `10'.
--
-- The `%o', `%u', and `%x' conversions match unsigned integers in
--octal, decimal, and hexadecimal radices, respectively. The syntax that
--is recognized is the same as that for the `strtoul' function (*note
--Parsing of Integers::) with the appropriate value (`8', `10', or `16')
--for the BASE argument.
--
-- The `%X' conversion is identical to the `%x' conversion. They both
--permit either uppercase or lowercase letters to be used as digits.
--
-- The default type of the corresponding argument for the `%d' and `%i'
--conversions is `int *', and `unsigned int *' for the other integer
--conversions. You can use the following type modifiers to specify other
--sizes of integer:
--
--`hh'
-- Specifies that the argument is a `signed char *' or `unsigned char
-- *'.
--
-- This modifier was introduced in ISO C99.
--
--`h'
-- Specifies that the argument is a `short int *' or `unsigned short
-- int *'.
--
--`j'
-- Specifies that the argument is a `intmax_t *' or `uintmax_t *'.
--
-- This modifier was introduced in ISO C99.
--
--`l'
-- Specifies that the argument is a `long int *' or `unsigned long
-- int *'. Two `l' characters is like the `L' modifier, below.
--
-- If used with `%c' or `%s' the corresponding parameter is
-- considered as a pointer to a wide character or wide character
-- string respectively. This use of `l' was introduced in
-- Amendment 1 to ISO C90.
--
--`ll'
--`L'
--`q'
-- Specifies that the argument is a `long long int *' or `unsigned
-- long long int *'. (The `long long' type is an extension supported
-- by the GNU C compiler. For systems that don't provide extra-long
-- integers, this is the same as `long int'.)
--
-- The `q' modifier is another name for the same thing, which comes
-- from 4.4 BSD; a `long long int' is sometimes called a "quad" `int'.
--
--`t'
-- Specifies that the argument is a `ptrdiff_t *'.
--
-- This modifier was introduced in ISO C99.
--
--`z'
-- Specifies that the argument is a `size_t *'.
--
-- This modifier was introduced in ISO C99.
--
-- All of the `%e', `%f', `%g', `%E', and `%G' input conversions are
--interchangeable. They all match an optionally signed floating point
--number, in the same syntax as for the `strtod' function (*note Parsing
--of Floats::).
--
-- For the floating-point input conversions, the default argument type
--is `float *'. (This is different from the corresponding output
--conversions, where the default type is `double'; remember that `float'
--arguments to `printf' are converted to `double' by the default argument
--promotions, but `float *' arguments are not promoted to `double *'.)
--You can specify other sizes of float using these type modifiers:
--
--`l'
-- Specifies that the argument is of type `double *'.
--
--`L'
-- Specifies that the argument is of type `long double *'.
--
-- For all the above number parsing formats there is an additional
--optional flag `''. When this flag is given the `scanf' function
--expects the number represented in the input string to be formatted
--according to the grouping rules of the currently selected locale (*note
--General Numeric::).
--
-- If the `"C"' or `"POSIX"' locale is selected there is no difference.
--But for a locale which specifies values for the appropriate fields in
--the locale the input must have the correct form in the input.
--Otherwise the longest prefix with a correct form is processed.
--
--
--File: libc.info, Node: String Input Conversions, Next: Dynamic String Input, Prev: Numeric Input Conversions, Up: Formatted Input
--
--String Input Conversions
--------------------------
--
-- This section describes the `scanf' input conversions for reading
--string and character values: `%s', `%S', `%[', `%c', and `%C'.
--
-- You have two options for how to receive the input from these
--conversions:
--
-- * Provide a buffer to store it in. This is the default. You should
-- provide an argument of type `char *' or `wchar_t *' (the latter of
-- the `l' modifier is present).
--
-- *Warning:* To make a robust program, you must make sure that the
-- input (plus its terminating null) cannot possibly exceed the size
-- of the buffer you provide. In general, the only way to do this is
-- to specify a maximum field width one less than the buffer size.
-- *If you provide the buffer, always specify a maximum field width
-- to prevent overflow.*
--
-- * Ask `scanf' to allocate a big enough buffer, by specifying the `a'
-- flag character. This is a GNU extension. You should provide an
-- argument of type `char **' for the buffer address to be stored in.
-- *Note Dynamic String Input::.
--
-- The `%c' conversion is the simplest: it matches a fixed number of
--characters, always. The maximum field width says how many characters to
--read; if you don't specify the maximum, the default is 1. This
--conversion doesn't append a null character to the end of the text it
--reads. It also does not skip over initial whitespace characters. It
--reads precisely the next N characters, and fails if it cannot get that
--many. Since there is always a maximum field width with `%c' (whether
--specified, or 1 by default), you can always prevent overflow by making
--the buffer long enough.
--
-- If the format is `%lc' or `%C' the function stores wide characters
--which are converted using the conversion determined at the time the
--stream was opened from the external byte stream. The number of bytes
--read from the medium is limited by `MB_CUR_LEN * N' but at most N wide
--character get stored in the output string.
--
-- The `%s' conversion matches a string of non-whitespace characters.
--It skips and discards initial whitespace, but stops when it encounters
--more whitespace after having read something. It stores a null character
--at the end of the text that it reads.
--
-- For example, reading the input:
--
-- hello, world
--
--with the conversion `%10c' produces `" hello, wo"', but reading the
--same input with the conversion `%10s' produces `"hello,"'.
--
-- *Warning:* If you do not specify a field width for `%s', then the
--number of characters read is limited only by where the next whitespace
--character appears. This almost certainly means that invalid input can
--make your program crash--which is a bug.
--
-- The `%ls' and `%S' format are handled just like `%s' except that the
--external byte sequence is converted using the conversion associated
--with the stream to wide characters with their own encoding. A width or
--precision specified with the format do not directly determine how many
--bytes are read from the stream since they measure wide characters. But
--an upper limit can be computed by multiplying the value of the width or
--precision by `MB_CUR_MAX'.
--
-- To read in characters that belong to an arbitrary set of your choice,
--use the `%[' conversion. You specify the set between the `[' character
--and a following `]' character, using the same syntax used in regular
--expressions. As special cases:
--
-- * A literal `]' character can be specified as the first character of
-- the set.
--
-- * An embedded `-' character (that is, one that is not the first or
-- last character of the set) is used to specify a range of
-- characters.
--
-- * If a caret character `^' immediately follows the initial `[', then
-- the set of allowed input characters is the everything _except_ the
-- characters listed.
--
-- The `%[' conversion does not skip over initial whitespace characters.
--
-- Here are some examples of `%[' conversions and what they mean:
--
--`%25[1234567890]'
-- Matches a string of up to 25 digits.
--
--`%25[][]'
-- Matches a string of up to 25 square brackets.
--
--`%25[^ \f\n\r\t\v]'
-- Matches a string up to 25 characters long that doesn't contain any
-- of the standard whitespace characters. This is slightly different
-- from `%s', because if the input begins with a whitespace character,
-- `%[' reports a matching failure while `%s' simply discards the
-- initial whitespace.
--
--`%25[a-z]'
-- Matches up to 25 lowercase characters.
--
-- As for `%c' and `%s' the `%[' format is also modified to produce
--wide characters if the `l' modifier is present. All what is said about
--`%ls' above is true for `%l['.
--
-- One more reminder: the `%s' and `%[' conversions are *dangerous* if
--you don't specify a maximum width or use the `a' flag, because input
--too long would overflow whatever buffer you have provided for it. No
--matter how long your buffer is, a user could supply input that is
--longer. A well-written program reports invalid input with a
--comprehensible error message, not with a crash.
--
--
--File: libc.info, Node: Dynamic String Input, Next: Other Input Conversions, Prev: String Input Conversions, Up: Formatted Input
--
--Dynamically Allocating String Conversions
-------------------------------------------
--
-- A GNU extension to formatted input lets you safely read a string
--with no maximum size. Using this feature, you don't supply a buffer;
--instead, `scanf' allocates a buffer big enough to hold the data and
--gives you its address. To use this feature, write `a' as a flag
--character, as in `%as' or `%a[0-9a-z]'.
--
-- The pointer argument you supply for where to store the input should
--have type `char **'. The `scanf' function allocates a buffer and
--stores its address in the word that the argument points to. You should
--free the buffer with `free' when you no longer need it.
--
-- Here is an example of using the `a' flag with the `%[...]'
--conversion specification to read a "variable assignment" of the form
--`VARIABLE = VALUE'.
--
-- {
-- char *variable, *value;
--
-- if (2 > scanf ("%a[a-zA-Z0-9] = %a[^\n]\n",
-- &variable, &value))
-- {
-- invalid_input_error ();
-- return 0;
-- }
--
-- ...
-- }
--
--
--File: libc.info, Node: Other Input Conversions, Next: Formatted Input Functions, Prev: Dynamic String Input, Up: Formatted Input
--
--Other Input Conversions
-------------------------
--
-- This section describes the miscellaneous input conversions.
--
-- The `%p' conversion is used to read a pointer value. It recognizes
--the same syntax used by the `%p' output conversion for `printf' (*note
--Other Output Conversions::); that is, a hexadecimal number just as the
--`%x' conversion accepts. The corresponding argument should be of type
--`void **'; that is, the address of a place to store a pointer.
--
-- The resulting pointer value is not guaranteed to be valid if it was
--not originally written during the same program execution that reads it
--in.
--
-- The `%n' conversion produces the number of characters read so far by
--this call. The corresponding argument should be of type `int *'. This
--conversion works in the same way as the `%n' conversion for `printf';
--see *Note Other Output Conversions::, for an example.
--
-- The `%n' conversion is the only mechanism for determining the
--success of literal matches or conversions with suppressed assignments.
--If the `%n' follows the locus of a matching failure, then no value is
--stored for it since `scanf' returns before processing the `%n'. If you
--store `-1' in that argument slot before calling `scanf', the presence
--of `-1' after `scanf' indicates an error occurred before the `%n' was
--reached.
--
-- Finally, the `%%' conversion matches a literal `%' character in the
--input stream, without using an argument. This conversion does not
--permit any flags, field width, or type modifier to be specified.
--
--
--File: libc.info, Node: Formatted Input Functions, Next: Variable Arguments Input, Prev: Other Input Conversions, Up: Formatted Input
--
--Formatted Input Functions
---------------------------
--
-- Here are the descriptions of the functions for performing formatted
--input. Prototypes for these functions are in the header file `stdio.h'.
--
-- - Function: int scanf (const char *TEMPLATE, ...)
-- The `scanf' function reads formatted input from the stream `stdin'
-- under the control of the template string TEMPLATE. The optional
-- arguments are pointers to the places which receive the resulting
-- values.
--
-- The return value is normally the number of successful assignments.
-- If an end-of-file condition is detected before any matches are
-- performed, including matches against whitespace and literal
-- characters in the template, then `EOF' is returned.
--
-- - Function: int wscanf (const wchar_t *TEMPLATE, ...)
-- The `wscanf' function reads formatted input from the stream
-- `stdin' under the control of the template string TEMPLATE. The
-- optional arguments are pointers to the places which receive the
-- resulting values.
--
-- The return value is normally the number of successful assignments.
-- If an end-of-file condition is detected before any matches are
-- performed, including matches against whitespace and literal
-- characters in the template, then `WEOF' is returned.
--
-- - Function: int fscanf (FILE *STREAM, const char *TEMPLATE, ...)
-- This function is just like `scanf', except that the input is read
-- from the stream STREAM instead of `stdin'.
--
-- - Function: int fwscanf (FILE *STREAM, const wchar_t *TEMPLATE, ...)
-- This function is just like `wscanf', except that the input is read
-- from the stream STREAM instead of `stdin'.
--
-- - Function: int sscanf (const char *S, const char *TEMPLATE, ...)
-- This is like `scanf', except that the characters are taken from the
-- null-terminated string S instead of from a stream. Reaching the
-- end of the string is treated as an end-of-file condition.
--
-- The behavior of this function is undefined if copying takes place
-- between objects that overlap--for example, if S is also given as
-- an argument to receive a string read under control of the `%s',
-- `%S', or `%[' conversion.
--
-- - Function: int swscanf (const wchar_t *WS, const char *TEMPLATE, ...)
-- This is like `wscanf', except that the characters are taken from
-- the null-terminated string WS instead of from a stream. Reaching
-- the end of the string is treated as an end-of-file condition.
--
-- The behavior of this function is undefined if copying takes place
-- between objects that overlap--for example, if WS is also given as
-- an argument to receive a string read under control of the `%s',
-- `%S', or `%[' conversion.
--
--
--File: libc.info, Node: Variable Arguments Input, Prev: Formatted Input Functions, Up: Formatted Input
--
--Variable Arguments Input Functions
------------------------------------
--
-- The functions `vscanf' and friends are provided so that you can
--define your own variadic `scanf'-like functions that make use of the
--same internals as the built-in formatted output functions. These
--functions are analogous to the `vprintf' series of output functions.
--*Note Variable Arguments Output::, for important information on how to
--use them.
--
-- *Portability Note:* The functions listed in this section were
--introduced in ISO C99 and were before available as GNU extensions.
--
-- - Function: int vscanf (const char *TEMPLATE, va_list AP)
-- This function is similar to `scanf', but instead of taking a
-- variable number of arguments directly, it takes an argument list
-- pointer AP of type `va_list' (*note Variadic Functions::).
--
-- - Function: int vwscanf (const wchar_t *TEMPLATE, va_list AP)
-- This function is similar to `wscanf', but instead of taking a
-- variable number of arguments directly, it takes an argument list
-- pointer AP of type `va_list' (*note Variadic Functions::).
--
-- - Function: int vfscanf (FILE *STREAM, const char *TEMPLATE, va_list
-- AP)
-- This is the equivalent of `fscanf' with the variable argument list
-- specified directly as for `vscanf'.
--
-- - Function: int vfwscanf (FILE *STREAM, const wchar_t *TEMPLATE,
-- va_list AP)
-- This is the equivalent of `fwscanf' with the variable argument list
-- specified directly as for `vwscanf'.
--
-- - Function: int vsscanf (const char *S, const char *TEMPLATE, va_list
-- AP)
-- This is the equivalent of `sscanf' with the variable argument list
-- specified directly as for `vscanf'.
--
-- - Function: int vswscanf (const wchar_t *S, const wchar_t *TEMPLATE,
-- va_list AP)
-- This is the equivalent of `swscanf' with the variable argument list
-- specified directly as for `vwscanf'.
--
-- In GNU C, there is a special construct you can use to let the
--compiler know that a function uses a `scanf'-style format string. Then
--it can check the number and types of arguments in each call to the
--function, and warn you when they do not match the format string. For
--details, *Note Declaring Attributes of Functions: (gcc.info)Function
--Attributes.
--
--
--File: libc.info, Node: EOF and Errors, Next: Error Recovery, Prev: Formatted Input, Up: I/O on Streams
--
--End-Of-File and Errors
--======================
--
-- Many of the functions described in this chapter return the value of
--the macro `EOF' to indicate unsuccessful completion of the operation.
--Since `EOF' is used to report both end of file and random errors, it's
--often better to use the `feof' function to check explicitly for end of
--file and `ferror' to check for errors. These functions check
--indicators that are part of the internal state of the stream object,
--indicators set if the appropriate condition was detected by a previous
--I/O operation on that stream.
--
-- - Macro: int EOF
-- This macro is an integer value that is returned by a number of
-- narrow stream functions to indicate an end-of-file condition, or
-- some other error situation. With the GNU library, `EOF' is `-1'.
-- In other libraries, its value may be some other negative number.
--
-- This symbol is declared in `stdio.h'.
--
-- - Macro: int WEOF
-- This macro is an integer value that is returned by a number of wide
-- stream functions to indicate an end-of-file condition, or some
-- other error situation. With the GNU library, `WEOF' is `-1'. In
-- other libraries, its value may be some other negative number.
--
-- This symbol is declared in `wchar.h'.
--
-- - Function: int feof (FILE *STREAM)
-- The `feof' function returns nonzero if and only if the end-of-file
-- indicator for the stream STREAM is set.
--
-- This symbol is declared in `stdio.h'.
--
-- - Function: int feof_unlocked (FILE *STREAM)
-- The `feof_unlocked' function is equivalent to the `feof' function
-- except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- This symbol is declared in `stdio.h'.
--
-- - Function: int ferror (FILE *STREAM)
-- The `ferror' function returns nonzero if and only if the error
-- indicator for the stream STREAM is set, indicating that an error
-- has occurred on a previous operation on the stream.
--
-- This symbol is declared in `stdio.h'.
--
-- - Function: int ferror_unlocked (FILE *STREAM)
-- The `ferror_unlocked' function is equivalent to the `ferror'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- This symbol is declared in `stdio.h'.
--
-- In addition to setting the error indicator associated with the
--stream, the functions that operate on streams also set `errno' in the
--same way as the corresponding low-level functions that operate on file
--descriptors. For example, all of the functions that perform output to a
--stream--such as `fputc', `printf', and `fflush'--are implemented in
--terms of `write', and all of the `errno' error conditions defined for
--`write' are meaningful for these functions. For more information about
--the descriptor-level I/O functions, see *Note Low-Level I/O::.
--
--
--File: libc.info, Node: Error Recovery, Next: Binary Streams, Prev: EOF and Errors, Up: I/O on Streams
--
--Recovering from errors
--======================
--
-- You may explicitly clear the error and EOF flags with the `clearerr'
--function.
--
-- - Function: void clearerr (FILE *STREAM)
-- This function clears the end-of-file and error indicators for the
-- stream STREAM.
--
-- The file positioning functions (*note File Positioning::) also
-- clear the end-of-file indicator for the stream.
--
-- - Function: void clearerr_unlocked (FILE *STREAM)
-- The `clearerr_unlocked' function is equivalent to the `clearerr'
-- function except that it does not implicitly lock the stream.
--
-- This function is a GNU extension.
--
-- Note that it is _not_ correct to just clear the error flag and retry
--a failed stream operation. After a failed write, any number of
--characters since the last buffer flush may have been committed to the
--file, while some buffered data may have been discarded. Merely retrying
--can thus cause lost or repeated data.
--
-- A failed read may leave the file pointer in an inappropriate
--position for a second try. In both cases, you should seek to a known
--position before retrying.
--
-- Most errors that can happen are not recoverable -- a second try will
--always fail again in the same way. So usually it is best to give up and
--report the error to the user, rather than install complicated recovery
--logic.
--
-- One important exception is `EINTR' (*note Interrupted Primitives::).
--Many stream I/O implementations will treat it as an ordinary error,
--which can be quite inconvenient. You can avoid this hassle by
--installing all signals with the `SA_RESTART' flag.
--
-- For similar reasons, setting nonblocking I/O on a stream's file
--descriptor is not usually advisable.
--
--
--File: libc.info, Node: Binary Streams, Next: File Positioning, Prev: Error Recovery, Up: I/O on Streams
--
--Text and Binary Streams
--=======================
--
-- The GNU system and other POSIX-compatible operating systems organize
--all files as uniform sequences of characters. However, some other
--systems make a distinction between files containing text and files
--containing binary data, and the input and output facilities of ISO C
--provide for this distinction. This section tells you how to write
--programs portable to such systems.
--
-- When you open a stream, you can specify either a "text stream" or a
--"binary stream". You indicate that you want a binary stream by
--specifying the `b' modifier in the OPENTYPE argument to `fopen'; see
--*Note Opening Streams::. Without this option, `fopen' opens the file
--as a text stream.
--
-- Text and binary streams differ in several ways:
--
-- * The data read from a text stream is divided into "lines" which are
-- terminated by newline (`'\n'') characters, while a binary stream is
-- simply a long series of characters. A text stream might on some
-- systems fail to handle lines more than 254 characters long
-- (including the terminating newline character).
--
-- * On some systems, text files can contain only printing characters,
-- horizontal tab characters, and newlines, and so text streams may
-- not support other characters. However, binary streams can handle
-- any character value.
--
-- * Space characters that are written immediately preceding a newline
-- character in a text stream may disappear when the file is read in
-- again.
--
-- * More generally, there need not be a one-to-one mapping between
-- characters that are read from or written to a text stream, and the
-- characters in the actual file.
--
-- Since a binary stream is always more capable and more predictable
--than a text stream, you might wonder what purpose text streams serve.
--Why not simply always use binary streams? The answer is that on these
--operating systems, text and binary streams use different file formats,
--and the only way to read or write "an ordinary file of text" that can
--work with other text-oriented programs is through a text stream.
--
-- In the GNU library, and on all POSIX systems, there is no difference
--between text streams and binary streams. When you open a stream, you
--get the same kind of stream regardless of whether you ask for binary.
--This stream can handle any file content, and has none of the
--restrictions that text streams sometimes have.
--
--
--File: libc.info, Node: File Positioning, Next: Portable Positioning, Prev: Binary Streams, Up: I/O on Streams
--
--File Positioning
--================
--
-- The "file position" of a stream describes where in the file the
--stream is currently reading or writing. I/O on the stream advances the
--file position through the file. In the GNU system, the file position is
--represented as an integer, which counts the number of bytes from the
--beginning of the file. *Note File Position::.
--
-- During I/O to an ordinary disk file, you can change the file position
--whenever you wish, so as to read or write any portion of the file. Some
--other kinds of files may also permit this. Files which support changing
--the file position are sometimes referred to as "random-access" files.
--
-- You can use the functions in this section to examine or modify the
--file position indicator associated with a stream. The symbols listed
--below are declared in the header file `stdio.h'.
--
-- - Function: long int ftell (FILE *STREAM)
-- This function returns the current file position of the stream
-- STREAM.
--
-- This function can fail if the stream doesn't support file
-- positioning, or if the file position can't be represented in a
-- `long int', and possibly for other reasons as well. If a failure
-- occurs, a value of `-1' is returned.
--
-- - Function: off_t ftello (FILE *STREAM)
-- The `ftello' function is similar to `ftell', except that it
-- returns a value of type `off_t'. Systems which support this type
-- use it to describe all file positions, unlike the POSIX
-- specification which uses a long int. The two are not necessarily
-- the same size. Therefore, using ftell can lead to problems if the
-- implementation is written on top of a POSIX compliant low-level
-- I/O implementation, and using `ftello' is preferable whenever it
-- is available.
--
-- If this function fails it returns `(off_t) -1'. This can happen
-- due to missing support for file positioning or internal errors.
-- Otherwise the return value is the current file position.
--
-- The function is an extension defined in the Unix Single
-- Specification version 2.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit system this function is in fact `ftello64'. I.e., the LFS
-- interface transparently replaces the old interface.
--
-- - Function: off64_t ftello64 (FILE *STREAM)
-- This function is similar to `ftello' with the only difference that
-- the return value is of type `off64_t'. This also requires that the
-- stream STREAM was opened using either `fopen64', `freopen64', or
-- `tmpfile64' since otherwise the underlying file operations to
-- position the file pointer beyond the 2^31 bytes limit might fail.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `ftello'
-- and so transparently replaces the old interface.
--
-- - Function: int fseek (FILE *STREAM, long int OFFSET, int WHENCE)
-- The `fseek' function is used to change the file position of the
-- stream STREAM. The value of WHENCE must be one of the constants
-- `SEEK_SET', `SEEK_CUR', or `SEEK_END', to indicate whether the
-- OFFSET is relative to the beginning of the file, the current file
-- position, or the end of the file, respectively.
--
-- This function returns a value of zero if the operation was
-- successful, and a nonzero value to indicate failure. A successful
-- call also clears the end-of-file indicator of STREAM and discards
-- any characters that were "pushed back" by the use of `ungetc'.
--
-- `fseek' either flushes any buffered output before setting the file
-- position or else remembers it so it will be written later in its
-- proper place in the file.
--
-- - Function: int fseeko (FILE *STREAM, off_t OFFSET, int WHENCE)
-- This function is similar to `fseek' but it corrects a problem with
-- `fseek' in a system with POSIX types. Using a value of type `long
-- int' for the offset is not compatible with POSIX. `fseeko' uses
-- the correct type `off_t' for the OFFSET parameter.
--
-- For this reason it is a good idea to prefer `ftello' whenever it is
-- available since its functionality is (if different at all) closer
-- the underlying definition.
--
-- The functionality and return value is the same as for `fseek'.
--
-- The function is an extension defined in the Unix Single
-- Specification version 2.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit system this function is in fact `fseeko64'. I.e., the LFS
-- interface transparently replaces the old interface.
--
-- - Function: int fseeko64 (FILE *STREAM, off64_t OFFSET, int WHENCE)
-- This function is similar to `fseeko' with the only difference that
-- the OFFSET parameter is of type `off64_t'. This also requires
-- that the stream STREAM was opened using either `fopen64',
-- `freopen64', or `tmpfile64' since otherwise the underlying file
-- operations to position the file pointer beyond the 2^31 bytes
-- limit might fail.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `fseeko'
-- and so transparently replaces the old interface.
--
-- *Portability Note:* In non-POSIX systems, `ftell', `ftello', `fseek'
--and `fseeko' might work reliably only on binary streams. *Note Binary
--Streams::.
--
-- The following symbolic constants are defined for use as the WHENCE
--argument to `fseek'. They are also used with the `lseek' function
--(*note I/O Primitives::) and to specify offsets for file locks (*note
--Control Operations::).
--
-- - Macro: int SEEK_SET
-- This is an integer constant which, when used as the WHENCE
-- argument to the `fseek' or `fseeko' function, specifies that the
-- offset provided is relative to the beginning of the file.
--
-- - Macro: int SEEK_CUR
-- This is an integer constant which, when used as the WHENCE
-- argument to the `fseek' or `fseeko' function, specifies that the
-- offset provided is relative to the current file position.
--
-- - Macro: int SEEK_END
-- This is an integer constant which, when used as the WHENCE
-- argument to the `fseek' or `fseeko' function, specifies that the
-- offset provided is relative to the end of the file.
--
-- - Function: void rewind (FILE *STREAM)
-- The `rewind' function positions the stream STREAM at the beginning
-- of the file. It is equivalent to calling `fseek' or `fseeko' on
-- the STREAM with an OFFSET argument of `0L' and a WHENCE argument
-- of `SEEK_SET', except that the return value is discarded and the
-- error indicator for the stream is reset.
--
-- These three aliases for the `SEEK_...' constants exist for the sake
--of compatibility with older BSD systems. They are defined in two
--different header files: `fcntl.h' and `sys/file.h'.
--
--`L_SET'
-- An alias for `SEEK_SET'.
--
--`L_INCR'
-- An alias for `SEEK_CUR'.
--
--`L_XTND'
-- An alias for `SEEK_END'.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-2 glibc-2.3.2-200304020432/manual/libc.info-2
---- glibc-2.3.2/manual/libc.info-2 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-2 Thu Jan 1 01:00:00 1970
-@@ -1,1004 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Introduction, Next: Error Reporting, Prev: Top, Up: Top
--
--Introduction
--************
--
-- The C language provides no built-in facilities for performing such
--common operations as input/output, memory management, string
--manipulation, and the like. Instead, these facilities are defined in a
--standard "library", which you compile and link with your programs.
--
-- The GNU C library, described in this document, defines all of the
--library functions that are specified by the ISO C standard, as well as
--additional features specific to POSIX and other derivatives of the Unix
--operating system, and extensions specific to the GNU system.
--
-- The purpose of this manual is to tell you how to use the facilities
--of the GNU library. We have mentioned which features belong to which
--standards to help you identify things that are potentially non-portable
--to other systems. But the emphasis in this manual is not on strict
--portability.
--
--* Menu:
--
--* Getting Started:: What this manual is for and how to use it.
--* Standards and Portability:: Standards and sources upon which the GNU
-- C library is based.
--* Using the Library:: Some practical uses for the library.
--* Roadmap to the Manual:: Overview of the remaining chapters in
-- this manual.
--
--
--File: libc.info, Node: Getting Started, Next: Standards and Portability, Up: Introduction
--
--Getting Started
--===============
--
-- This manual is written with the assumption that you are at least
--somewhat familiar with the C programming language and basic programming
--concepts. Specifically, familiarity with ISO standard C (*note ISO
--C::), rather than "traditional" pre-ISO C dialects, is assumed.
--
-- The GNU C library includes several "header files", each of which
--provides definitions and declarations for a group of related facilities;
--this information is used by the C compiler when processing your program.
--For example, the header file `stdio.h' declares facilities for
--performing input and output, and the header file `string.h' declares
--string processing utilities. The organization of this manual generally
--follows the same division as the header files.
--
-- If you are reading this manual for the first time, you should read
--all of the introductory material and skim the remaining chapters.
--There are a _lot_ of functions in the GNU C library and it's not
--realistic to expect that you will be able to remember exactly _how_ to
--use each and every one of them. It's more important to become
--generally familiar with the kinds of facilities that the library
--provides, so that when you are writing your programs you can recognize
--_when_ to make use of library functions, and _where_ in this manual you
--can find more specific information about them.
--
--
--File: libc.info, Node: Standards and Portability, Next: Using the Library, Prev: Getting Started, Up: Introduction
--
--Standards and Portability
--=========================
--
-- This section discusses the various standards and other sources that
--the GNU C library is based upon. These sources include the ISO C and
--POSIX standards, and the System V and Berkeley Unix implementations.
--
-- The primary focus of this manual is to tell you how to make effective
--use of the GNU library facilities. But if you are concerned about
--making your programs compatible with these standards, or portable to
--operating systems other than GNU, this can affect how you use the
--library. This section gives you an overview of these standards, so that
--you will know what they are when they are mentioned in other parts of
--the manual.
--
-- *Note Library Summary::, for an alphabetical list of the functions
--and other symbols provided by the library. This list also states which
--standards each function or symbol comes from.
--
--* Menu:
--
--* ISO C:: The international standard for the C
-- programming language.
--* POSIX:: The ISO/IEC 9945 (aka IEEE 1003) standards
-- for operating systems.
--* Berkeley Unix:: BSD and SunOS.
--* SVID:: The System V Interface Description.
--* XPG:: The X/Open Portability Guide.
--
--
--File: libc.info, Node: ISO C, Next: POSIX, Up: Standards and Portability
--
--ISO C
-------
--
-- The GNU C library is compatible with the C standard adopted by the
--American National Standards Institute (ANSI): `American National
--Standard X3.159-1989--"ANSI C"' and later by the International
--Standardization Organization (ISO): `ISO/IEC 9899:1990, "Programming
--languages--C"'. We here refer to the standard as ISO C since this is
--the more general standard in respect of ratification. The header files
--and library facilities that make up the GNU library are a superset of
--those specified by the ISO C standard.
--
-- If you are concerned about strict adherence to the ISO C standard,
--you should use the `-ansi' option when you compile your programs with
--the GNU C compiler. This tells the compiler to define _only_ ISO
--standard features from the library header files, unless you explicitly
--ask for additional features. *Note Feature Test Macros::, for
--information on how to do this.
--
-- Being able to restrict the library to include only ISO C features is
--important because ISO C puts limitations on what names can be defined
--by the library implementation, and the GNU extensions don't fit these
--limitations. *Note Reserved Names::, for more information about these
--restrictions.
--
-- This manual does not attempt to give you complete details on the
--differences between ISO C and older dialects. It gives advice on how
--to write programs to work portably under multiple C dialects, but does
--not aim for completeness.
--
--
--File: libc.info, Node: POSIX, Next: Berkeley Unix, Prev: ISO C, Up: Standards and Portability
--
--POSIX (The Portable Operating System Interface)
-------------------------------------------------
--
-- The GNU library is also compatible with the ISO "POSIX" family of
--standards, known more formally as the "Portable Operating System
--Interface for Computer Environments" (ISO/IEC 9945). They were also
--published as ANSI/IEEE Std 1003. POSIX is derived mostly from various
--versions of the Unix operating system.
--
-- The library facilities specified by the POSIX standards are a
--superset of those required by ISO C; POSIX specifies additional
--features for ISO C functions, as well as specifying new additional
--functions. In general, the additional requirements and functionality
--defined by the POSIX standards are aimed at providing lower-level
--support for a particular kind of operating system environment, rather
--than general programming language support which can run in many diverse
--operating system environments.
--
-- The GNU C library implements all of the functions specified in
--`ISO/IEC 9945-1:1996, the POSIX System Application Program Interface',
--commonly referred to as POSIX.1. The primary extensions to the ISO C
--facilities specified by this standard include file system interface
--primitives (*note File System Interface::), device-specific terminal
--control functions (*note Low-Level Terminal Interface::), and process
--control functions (*note Processes::).
--
-- Some facilities from `ISO/IEC 9945-2:1993, the POSIX Shell and
--Utilities standard' (POSIX.2) are also implemented in the GNU library.
--These include utilities for dealing with regular expressions and other
--pattern matching facilities (*note Pattern Matching::).
--
--
--File: libc.info, Node: Berkeley Unix, Next: SVID, Prev: POSIX, Up: Standards and Portability
--
--Berkeley Unix
---------------
--
-- The GNU C library defines facilities from some versions of Unix which
--are not formally standardized, specifically from the 4.2 BSD, 4.3 BSD,
--and 4.4 BSD Unix systems (also known as "Berkeley Unix") and from
--"SunOS" (a popular 4.2 BSD derivative that includes some Unix System V
--functionality). These systems support most of the ISO C and POSIX
--facilities, and 4.4 BSD and newer releases of SunOS in fact support
--them all.
--
-- The BSD facilities include symbolic links (*note Symbolic Links::),
--the `select' function (*note Waiting for I/O::), the BSD signal
--functions (*note BSD Signal Handling::), and sockets (*note Sockets::).
--
--
--File: libc.info, Node: SVID, Next: XPG, Prev: Berkeley Unix, Up: Standards and Portability
--
--SVID (The System V Interface Description)
-------------------------------------------
--
-- The "System V Interface Description" (SVID) is a document describing
--the AT&T Unix System V operating system. It is to some extent a
--superset of the POSIX standard (*note POSIX::).
--
-- The GNU C library defines most of the facilities required by the SVID
--that are not also required by the ISO C or POSIX standards, for
--compatibility with System V Unix and other Unix systems (such as
--SunOS) which include these facilities. However, many of the more
--obscure and less generally useful facilities required by the SVID are
--not included. (In fact, Unix System V itself does not provide them
--all.)
--
-- The supported facilities from System V include the methods for
--inter-process communication and shared memory, the `hsearch' and
--`drand48' families of functions, `fmtmsg' and several of the
--mathematical functions.
--
--
--File: libc.info, Node: XPG, Prev: SVID, Up: Standards and Portability
--
--XPG (The X/Open Portability Guide)
------------------------------------
--
-- The X/Open Portability Guide, published by the X/Open Company, Ltd.,
--is a more general standard than POSIX. X/Open owns the Unix copyright
--and the XPG specifies the requirements for systems which are intended
--to be a Unix system.
--
-- The GNU C library complies to the X/Open Portability Guide, Issue
--4.2, with all extensions common to XSI (X/Open System Interface)
--compliant systems and also all X/Open UNIX extensions.
--
-- The additions on top of POSIX are mainly derived from functionality
--available in System V and BSD systems. Some of the really bad mistakes
--in System V systems were corrected, though. Since fulfilling the XPG
--standard with the Unix extensions is a precondition for getting the
--Unix brand chances are good that the functionality is available on
--commercial systems.
--
--
--File: libc.info, Node: Using the Library, Next: Roadmap to the Manual, Prev: Standards and Portability, Up: Introduction
--
--Using the Library
--=================
--
-- This section describes some of the practical issues involved in using
--the GNU C library.
--
--* Menu:
--
--* Header Files:: How to include the header files in your
-- programs.
--* Macro Definitions:: Some functions in the library may really
-- be implemented as macros.
--* Reserved Names:: The C standard reserves some names for
-- the library, and some for users.
--* Feature Test Macros:: How to control what names are defined.
--
--
--File: libc.info, Node: Header Files, Next: Macro Definitions, Up: Using the Library
--
--Header Files
--------------
--
-- Libraries for use by C programs really consist of two parts: "header
--files" that define types and macros and declare variables and
--functions; and the actual library or "archive" that contains the
--definitions of the variables and functions.
--
-- (Recall that in C, a "declaration" merely provides information that
--a function or variable exists and gives its type. For a function
--declaration, information about the types of its arguments might be
--provided as well. The purpose of declarations is to allow the compiler
--to correctly process references to the declared variables and functions.
--A "definition", on the other hand, actually allocates storage for a
--variable or says what a function does.)
--
-- In order to use the facilities in the GNU C library, you should be
--sure that your program source files include the appropriate header
--files. This is so that the compiler has declarations of these
--facilities available and can correctly process references to them.
--Once your program has been compiled, the linker resolves these
--references to the actual definitions provided in the archive file.
--
-- Header files are included into a program source file by the
--`#include' preprocessor directive. The C language supports two forms
--of this directive; the first,
--
-- #include "HEADER"
--
--is typically used to include a header file HEADER that you write
--yourself; this would contain definitions and declarations describing the
--interfaces between the different parts of your particular application.
--By contrast,
--
-- #include <file.h>
--
--is typically used to include a header file `file.h' that contains
--definitions and declarations for a standard library. This file would
--normally be installed in a standard place by your system administrator.
--You should use this second form for the C library header files.
--
-- Typically, `#include' directives are placed at the top of the C
--source file, before any other code. If you begin your source files with
--some comments explaining what the code in the file does (a good idea),
--put the `#include' directives immediately afterwards, following the
--feature test macro definition (*note Feature Test Macros::).
--
-- For more information about the use of header files and `#include'
--directives, *note Header Files: (cpp.info)Header Files..
--
-- The GNU C library provides several header files, each of which
--contains the type and macro definitions and variable and function
--declarations for a group of related facilities. This means that your
--programs may need to include several header files, depending on exactly
--which facilities you are using.
--
-- Some library header files include other library header files
--automatically. However, as a matter of programming style, you should
--not rely on this; it is better to explicitly include all the header
--files required for the library facilities you are using. The GNU C
--library header files have been written in such a way that it doesn't
--matter if a header file is accidentally included more than once;
--including a header file a second time has no effect. Likewise, if your
--program needs to include multiple header files, the order in which they
--are included doesn't matter.
--
-- *Compatibility Note:* Inclusion of standard header files in any
--order and any number of times works in any ISO C implementation.
--However, this has traditionally not been the case in many older C
--implementations.
--
-- Strictly speaking, you don't _have to_ include a header file to use
--a function it declares; you could declare the function explicitly
--yourself, according to the specifications in this manual. But it is
--usually better to include the header file because it may define types
--and macros that are not otherwise available and because it may define
--more efficient macro replacements for some functions. It is also a sure
--way to have the correct declaration.
--
--
--File: libc.info, Node: Macro Definitions, Next: Reserved Names, Prev: Header Files, Up: Using the Library
--
--Macro Definitions of Functions
--------------------------------
--
-- If we describe something as a function in this manual, it may have a
--macro definition as well. This normally has no effect on how your
--program runs--the macro definition does the same thing as the function
--would. In particular, macro equivalents for library functions evaluate
--arguments exactly once, in the same way that a function call would. The
--main reason for these macro definitions is that sometimes they can
--produce an inline expansion that is considerably faster than an actual
--function call.
--
-- Taking the address of a library function works even if it is also
--defined as a macro. This is because, in this context, the name of the
--function isn't followed by the left parenthesis that is syntactically
--necessary to recognize a macro call.
--
-- You might occasionally want to avoid using the macro definition of a
--function--perhaps to make your program easier to debug. There are two
--ways you can do this:
--
-- * You can avoid a macro definition in a specific use by enclosing
-- the name of the function in parentheses. This works because the
-- name of the function doesn't appear in a syntactic context where
-- it is recognizable as a macro call.
--
-- * You can suppress any macro definition for a whole source file by
-- using the `#undef' preprocessor directive, unless otherwise stated
-- explicitly in the description of that facility.
--
-- For example, suppose the header file `stdlib.h' declares a function
--named `abs' with
--
-- extern int abs (int);
--
--and also provides a macro definition for `abs'. Then, in:
--
-- #include <stdlib.h>
-- int f (int *i) { return abs (++*i); }
--
--the reference to `abs' might refer to either a macro or a function. On
--the other hand, in each of the following examples the reference is to a
--function and not a macro.
--
-- #include <stdlib.h>
-- int g (int *i) { return (abs) (++*i); }
--
-- #undef abs
-- int h (int *i) { return abs (++*i); }
--
-- Since macro definitions that double for a function behave in exactly
--the same way as the actual function version, there is usually no need
--for any of these methods. In fact, removing macro definitions usually
--just makes your program slower.
--
--
--File: libc.info, Node: Reserved Names, Next: Feature Test Macros, Prev: Macro Definitions, Up: Using the Library
--
--Reserved Names
----------------
--
-- The names of all library types, macros, variables and functions that
--come from the ISO C standard are reserved unconditionally; your program
--*may not* redefine these names. All other library names are reserved
--if your program explicitly includes the header file that defines or
--declares them. There are several reasons for these restrictions:
--
-- * Other people reading your code could get very confused if you were
-- using a function named `exit' to do something completely different
-- from what the standard `exit' function does, for example.
-- Preventing this situation helps to make your programs easier to
-- understand and contributes to modularity and maintainability.
--
-- * It avoids the possibility of a user accidentally redefining a
-- library function that is called by other library functions. If
-- redefinition were allowed, those other functions would not work
-- properly.
--
-- * It allows the compiler to do whatever special optimizations it
-- pleases on calls to these functions, without the possibility that
-- they may have been redefined by the user. Some library
-- facilities, such as those for dealing with variadic arguments
-- (*note Variadic Functions::) and non-local exits (*note Non-Local
-- Exits::), actually require a considerable amount of cooperation on
-- the part of the C compiler, and with respect to the
-- implementation, it might be easier for the compiler to treat these
-- as built-in parts of the language.
--
-- In addition to the names documented in this manual, reserved names
--include all external identifiers (global functions and variables) that
--begin with an underscore (`_') and all identifiers regardless of use
--that begin with either two underscores or an underscore followed by a
--capital letter are reserved names. This is so that the library and
--header files can define functions, variables, and macros for internal
--purposes without risk of conflict with names in user programs.
--
-- Some additional classes of identifier names are reserved for future
--extensions to the C language or the POSIX.1 environment. While using
--these names for your own purposes right now might not cause a problem,
--they do raise the possibility of conflict with future versions of the C
--or POSIX standards, so you should avoid these names.
--
-- * Names beginning with a capital `E' followed a digit or uppercase
-- letter may be used for additional error code names. *Note Error
-- Reporting::.
--
-- * Names that begin with either `is' or `to' followed by a lowercase
-- letter may be used for additional character testing and conversion
-- functions. *Note Character Handling::.
--
-- * Names that begin with `LC_' followed by an uppercase letter may be
-- used for additional macros specifying locale attributes. *Note
-- Locales::.
--
-- * Names of all existing mathematics functions (*note Mathematics::)
-- suffixed with `f' or `l' are reserved for corresponding functions
-- that operate on `float' and `long double' arguments, respectively.
--
-- * Names that begin with `SIG' followed by an uppercase letter are
-- reserved for additional signal names. *Note Standard Signals::.
--
-- * Names that begin with `SIG_' followed by an uppercase letter are
-- reserved for additional signal actions. *Note Basic Signal
-- Handling::.
--
-- * Names beginning with `str', `mem', or `wcs' followed by a
-- lowercase letter are reserved for additional string and array
-- functions. *Note String and Array Utilities::.
--
-- * Names that end with `_t' are reserved for additional type names.
--
-- In addition, some individual header files reserve names beyond those
--that they actually define. You only need to worry about these
--restrictions if your program includes that particular header file.
--
-- * The header file `dirent.h' reserves names prefixed with `d_'.
--
-- * The header file `fcntl.h' reserves names prefixed with `l_', `F_',
-- `O_', and `S_'.
--
-- * The header file `grp.h' reserves names prefixed with `gr_'.
--
-- * The header file `limits.h' reserves names suffixed with `_MAX'.
--
-- * The header file `pwd.h' reserves names prefixed with `pw_'.
--
-- * The header file `signal.h' reserves names prefixed with `sa_' and
-- `SA_'.
--
-- * The header file `sys/stat.h' reserves names prefixed with `st_'
-- and `S_'.
--
-- * The header file `sys/times.h' reserves names prefixed with `tms_'.
--
-- * The header file `termios.h' reserves names prefixed with `c_',
-- `V', `I', `O', and `TC'; and names prefixed with `B' followed by a
-- digit.
--
--
--File: libc.info, Node: Feature Test Macros, Prev: Reserved Names, Up: Using the Library
--
--Feature Test Macros
---------------------
--
-- The exact set of features available when you compile a source file
--is controlled by which "feature test macros" you define.
--
-- If you compile your programs using `gcc -ansi', you get only the
--ISO C library features, unless you explicitly request additional
--features by defining one or more of the feature macros. *Note GNU CC
--Command Options: (gcc.info)Invoking GCC, for more information about GCC
--options.
--
-- You should define these macros by using `#define' preprocessor
--directives at the top of your source code files. These directives
--_must_ come before any `#include' of a system header file. It is best
--to make them the very first thing in the file, preceded only by
--comments. You could also use the `-D' option to GCC, but it's better
--if you make the source files indicate their own meaning in a
--self-contained way.
--
-- This system exists to allow the library to conform to multiple
--standards. Although the different standards are often described as
--supersets of each other, they are usually incompatible because larger
--standards require functions with names that smaller ones reserve to the
--user program. This is not mere pedantry -- it has been a problem in
--practice. For instance, some non-GNU programs define functions named
--`getline' that have nothing to do with this library's `getline'. They
--would not be compilable if all features were enabled indiscriminately.
--
-- This should not be used to verify that a program conforms to a
--limited standard. It is insufficient for this purpose, as it will not
--protect you from including header files outside the standard, or
--relying on semantics undefined within the standard.
--
-- - Macro: _POSIX_SOURCE
-- If you define this macro, then the functionality from the POSIX.1
-- standard (IEEE Standard 1003.1) is available, as well as all of the
-- ISO C facilities.
--
-- The state of `_POSIX_SOURCE' is irrelevant if you define the macro
-- `_POSIX_C_SOURCE' to a positive integer.
--
-- - Macro: _POSIX_C_SOURCE
-- Define this macro to a positive integer to control which POSIX
-- functionality is made available. The greater the value of this
-- macro, the more functionality is made available.
--
-- If you define this macro to a value greater than or equal to `1',
-- then the functionality from the 1990 edition of the POSIX.1
-- standard (IEEE Standard 1003.1-1990) is made available.
--
-- If you define this macro to a value greater than or equal to `2',
-- then the functionality from the 1992 edition of the POSIX.2
-- standard (IEEE Standard 1003.2-1992) is made available.
--
-- If you define this macro to a value greater than or equal to
-- `199309L', then the functionality from the 1993 edition of the
-- POSIX.1b standard (IEEE Standard 1003.1b-1993) is made available.
--
-- Greater values for `_POSIX_C_SOURCE' will enable future extensions.
-- The POSIX standards process will define these values as necessary,
-- and the GNU C Library should support them some time after they
-- become standardized. The 1996 edition of POSIX.1 (ISO/IEC 9945-1:
-- 1996) states that if you define `_POSIX_C_SOURCE' to a value
-- greater than or equal to `199506L', then the functionality from
-- the 1996 edition is made available.
--
-- - Macro: _BSD_SOURCE
-- If you define this macro, functionality derived from 4.3 BSD Unix
-- is included as well as the ISO C, POSIX.1, and POSIX.2 material.
--
-- Some of the features derived from 4.3 BSD Unix conflict with the
-- corresponding features specified by the POSIX.1 standard. If this
-- macro is defined, the 4.3 BSD definitions take precedence over the
-- POSIX definitions.
--
-- Due to the nature of some of the conflicts between 4.3 BSD and
-- POSIX.1, you need to use a special "BSD compatibility library"
-- when linking programs compiled for BSD compatibility. This is
-- because some functions must be defined in two different ways, one
-- of them in the normal C library, and one of them in the
-- compatibility library. If your program defines `_BSD_SOURCE', you
-- must give the option `-lbsd-compat' to the compiler or linker when
-- linking the program, to tell it to find functions in this special
-- compatibility library before looking for them in the normal C
-- library.
--
-- - Macro: _SVID_SOURCE
-- If you define this macro, functionality derived from SVID is
-- included as well as the ISO C, POSIX.1, POSIX.2, and X/Open
-- material.
--
-- - Macro: _XOPEN_SOURCE
-- - Macro: _XOPEN_SOURCE_EXTENDED
-- If you define this macro, functionality described in the X/Open
-- Portability Guide is included. This is a superset of the POSIX.1
-- and POSIX.2 functionality and in fact `_POSIX_SOURCE' and
-- `_POSIX_C_SOURCE' are automatically defined.
--
-- As the unification of all Unices, functionality only available in
-- BSD and SVID is also included.
--
-- If the macro `_XOPEN_SOURCE_EXTENDED' is also defined, even more
-- functionality is available. The extra functions will make all
-- functions available which are necessary for the X/Open Unix brand.
--
-- If the macro `_XOPEN_SOURCE' has the value 500 this includes all
-- functionality described so far plus some new definitions from the
-- Single Unix Specification, version 2.
--
-- - Macro: _LARGEFILE_SOURCE
-- If this macro is defined some extra functions are available which
-- rectify a few shortcomings in all previous standards.
-- Specifically, the functions `fseeko' and `ftello' are available.
-- Without these functions the difference between the ISO C interface
-- (`fseek', `ftell') and the low-level POSIX interface (`lseek')
-- would lead to problems.
--
-- This macro was introduced as part of the Large File Support
-- extension (LFS).
--
-- - Macro: _LARGEFILE64_SOURCE
-- If you define this macro an additional set of functions is made
-- available which enables 32 bit systems to use files of sizes beyond
-- the usual limit of 2GB. This interface is not available if the
-- system does not support files that large. On systems where the
-- natural file size limit is greater than 2GB (i.e., on 64 bit
-- systems) the new functions are identical to the replaced functions.
--
-- The new functionality is made available by a new set of types and
-- functions which replace the existing ones. The names of these new
-- objects contain `64' to indicate the intention, e.g., `off_t' vs.
-- `off64_t' and `fseeko' vs. `fseeko64'.
--
-- This macro was introduced as part of the Large File Support
-- extension (LFS). It is a transition interface for the period when
-- 64 bit offsets are not generally used (see `_FILE_OFFSET_BITS').
--
-- - Macro: _FILE_OFFSET_BITS
-- This macro determines which file system interface shall be used,
-- one replacing the other. Whereas `_LARGEFILE64_SOURCE' makes the
-- 64 bit interface available as an additional interface,
-- `_FILE_OFFSET_BITS' allows the 64 bit interface to replace the old
-- interface.
--
-- If `_FILE_OFFSET_BITS' is undefined, or if it is defined to the
-- value `32', nothing changes. The 32 bit interface is used and
-- types like `off_t' have a size of 32 bits on 32 bit systems.
--
-- If the macro is defined to the value `64', the large file interface
-- replaces the old interface. I.e., the functions are not made
-- available under different names (as they are with
-- `_LARGEFILE64_SOURCE'). Instead the old function names now
-- reference the new functions, e.g., a call to `fseeko' now indeed
-- calls `fseeko64'.
--
-- This macro should only be selected if the system provides
-- mechanisms for handling large files. On 64 bit systems this macro
-- has no effect since the `*64' functions are identical to the
-- normal functions.
--
-- This macro was introduced as part of the Large File Support
-- extension (LFS).
--
-- - Macro: _ISOC99_SOURCE
-- Until the revised ISO C standard is widely adopted the new features
-- are not automatically enabled. The GNU libc nevertheless has a
-- complete implementation of the new standard and to enable the new
-- features the macro `_ISOC99_SOURCE' should be defined.
--
-- - Macro: _GNU_SOURCE
-- If you define this macro, everything is included: ISO C89,
-- ISO C99, POSIX.1, POSIX.2, BSD, SVID, X/Open, LFS, and GNU
-- extensions. In the cases where POSIX.1 conflicts with BSD, the
-- POSIX definitions take precedence.
--
-- If you want to get the full effect of `_GNU_SOURCE' but make the
-- BSD definitions take precedence over the POSIX definitions, use
-- this sequence of definitions:
--
-- #define _GNU_SOURCE
-- #define _BSD_SOURCE
-- #define _SVID_SOURCE
--
-- Note that if you do this, you must link your program with the BSD
-- compatibility library by passing the `-lbsd-compat' option to the
-- compiler or linker. *Note:* If you forget to do this, you may get
-- very strange errors at run time.
--
-- - Macro: _REENTRANT
-- - Macro: _THREAD_SAFE
-- If you define one of these macros, reentrant versions of several
-- functions get declared. Some of the functions are specified in
-- POSIX.1c but many others are only available on a few other systems
-- or are unique to GNU libc. The problem is the delay in the
-- standardization of the thread safe C library interface.
--
-- Unlike on some other systems, no special version of the C library
-- must be used for linking. There is only one version but while
-- compiling this it must have been specified to compile as thread
-- safe.
--
-- We recommend you use `_GNU_SOURCE' in new programs. If you don't
--specify the `-ansi' option to GCC and don't define any of these macros
--explicitly, the effect is the same as defining `_POSIX_C_SOURCE' to 2
--and `_POSIX_SOURCE', `_SVID_SOURCE', and `_BSD_SOURCE' to 1.
--
-- When you define a feature test macro to request a larger class of
--features, it is harmless to define in addition a feature test macro for
--a subset of those features. For example, if you define
--`_POSIX_C_SOURCE', then defining `_POSIX_SOURCE' as well has no effect.
--Likewise, if you define `_GNU_SOURCE', then defining either
--`_POSIX_SOURCE' or `_POSIX_C_SOURCE' or `_SVID_SOURCE' as well has no
--effect.
--
-- Note, however, that the features of `_BSD_SOURCE' are not a subset of
--any of the other feature test macros supported. This is because it
--defines BSD features that take precedence over the POSIX features that
--are requested by the other macros. For this reason, defining
--`_BSD_SOURCE' in addition to the other feature test macros does have an
--effect: it causes the BSD features to take priority over the conflicting
--POSIX features.
--
--
--File: libc.info, Node: Roadmap to the Manual, Prev: Using the Library, Up: Introduction
--
--Roadmap to the Manual
--=====================
--
-- Here is an overview of the contents of the remaining chapters of
--this manual.
--
-- * *Note Error Reporting::, describes how errors detected by the
-- library are reported.
--
-- * *Note Language Features::, contains information about library
-- support for standard parts of the C language, including things
-- like the `sizeof' operator and the symbolic constant `NULL', how
-- to write functions accepting variable numbers of arguments, and
-- constants describing the ranges and other properties of the
-- numerical types. There is also a simple debugging mechanism which
-- allows you to put assertions in your code, and have diagnostic
-- messages printed if the tests fail.
--
-- * *Note Memory::, describes the GNU library's facilities for
-- managing and using virtual and real memory, including dynamic
-- allocation of virtual memory. If you do not know in advance how
-- much memory your program needs, you can allocate it dynamically
-- instead, and manipulate it via pointers.
--
-- * *Note Character Handling::, contains information about character
-- classification functions (such as `isspace') and functions for
-- performing case conversion.
--
-- * *Note String and Array Utilities::, has descriptions of functions
-- for manipulating strings (null-terminated character arrays) and
-- general byte arrays, including operations such as copying and
-- comparison.
--
-- * *Note I/O Overview::, gives an overall look at the input and output
-- facilities in the library, and contains information about basic
-- concepts such as file names.
--
-- * *Note I/O on Streams::, describes I/O operations involving streams
-- (or `FILE *' objects). These are the normal C library functions
-- from `stdio.h'.
--
-- * *Note Low-Level I/O::, contains information about I/O operations
-- on file descriptors. File descriptors are a lower-level mechanism
-- specific to the Unix family of operating systems.
--
-- * *Note File System Interface::, has descriptions of operations on
-- entire files, such as functions for deleting and renaming them and
-- for creating new directories. This chapter also contains
-- information about how you can access the attributes of a file,
-- such as its owner and file protection modes.
--
-- * *Note Pipes and FIFOs::, contains information about simple
-- interprocess communication mechanisms. Pipes allow communication
-- between two related processes (such as between a parent and
-- child), while FIFOs allow communication between processes sharing
-- a common file system on the same machine.
--
-- * *Note Sockets::, describes a more complicated interprocess
-- communication mechanism that allows processes running on different
-- machines to communicate over a network. This chapter also
-- contains information about Internet host addressing and how to use
-- the system network databases.
--
-- * *Note Low-Level Terminal Interface::, describes how you can change
-- the attributes of a terminal device. If you want to disable echo
-- of characters typed by the user, for example, read this chapter.
--
-- * *Note Mathematics::, contains information about the math library
-- functions. These include things like random-number generators and
-- remainder functions on integers as well as the usual trigonometric
-- and exponential functions on floating-point numbers.
--
-- * *Note Low-Level Arithmetic Functions: Arithmetic, describes
-- functions for simple arithmetic, analysis of floating-point
-- values, and reading numbers from strings.
--
-- * *Note Searching and Sorting::, contains information about functions
-- for searching and sorting arrays. You can use these functions on
-- any kind of array by providing an appropriate comparison function.
--
-- * *Note Pattern Matching::, presents functions for matching regular
-- expressions and shell file name patterns, and for expanding words
-- as the shell does.
--
-- * *Note Date and Time::, describes functions for measuring both
-- calendar time and CPU time, as well as functions for setting
-- alarms and timers.
--
-- * *Note Character Set Handling::, contains information about
-- manipulating characters and strings using character sets larger
-- than will fit in the usual `char' data type.
--
-- * *Note Locales::, describes how selecting a particular country or
-- language affects the behavior of the library. For example, the
-- locale affects collation sequences for strings and how monetary
-- values are formatted.
--
-- * *Note Non-Local Exits::, contains descriptions of the `setjmp' and
-- `longjmp' functions. These functions provide a facility for
-- `goto'-like jumps which can jump from one function to another.
--
-- * *Note Signal Handling::, tells you all about signals--what they
-- are, how to establish a handler that is called when a particular
-- kind of signal is delivered, and how to prevent signals from
-- arriving during critical sections of your program.
--
-- * *Note Program Basics::, tells how your programs can access their
-- command-line arguments and environment variables.
--
-- * *Note Processes::, contains information about how to start new
-- processes and run programs.
--
-- * *Note Job Control::, describes functions for manipulating process
-- groups and the controlling terminal. This material is probably
-- only of interest if you are writing a shell or other program which
-- handles job control specially.
--
-- * *Note Name Service Switch::, describes the services which are
-- available for looking up names in the system databases, how to
-- determine which service is used for which database, and how these
-- services are implemented so that contributors can design their own
-- services.
--
-- * *Note User Database::, and *Note Group Database::, tell you how to
-- access the system user and group databases.
--
-- * *Note System Management::, describes functions for controlling and
-- getting information about the hardware and software configuration
-- your program is executing under.
--
-- * *Note System Configuration::, tells you how you can get
-- information about various operating system limits. Most of these
-- parameters are provided for compatibility with POSIX.
--
-- * *Note Library Summary::, gives a summary of all the functions,
-- variables, and macros in the library, with complete data types and
-- function prototypes, and says what standard or system each is
-- derived from.
--
-- * *Note Maintenance::, explains how to build and install the GNU C
-- library on your system, how to report any bugs you might find, and
-- how to add new functions or port the library to a new system.
--
-- If you already know the name of the facility you are interested in,
--you can look it up in *Note Library Summary::. This gives you a
--summary of its syntax and a pointer to where you can find a more
--detailed description. This appendix is particularly useful if you just
--want to verify the order and type of arguments to a function, for
--example. It also tells you what standard or system each function,
--variable, or macro is derived from.
--
--
--File: libc.info, Node: Error Reporting, Next: Memory, Prev: Introduction, Up: Top
--
--Error Reporting
--***************
--
-- Many functions in the GNU C library detect and report error
--conditions, and sometimes your programs need to check for these error
--conditions. For example, when you open an input file, you should
--verify that the file was actually opened correctly, and print an error
--message or take other appropriate action if the call to the library
--function failed.
--
-- This chapter describes how the error reporting facility works. Your
--program should include the header file `errno.h' to use this facility.
--
--* Menu:
--
--* Checking for Errors:: How errors are reported by library functions.
--* Error Codes:: Error code macros; all of these expand
-- into integer constant values.
--* Error Messages:: Mapping error codes onto error messages.
--
--
--File: libc.info, Node: Checking for Errors, Next: Error Codes, Up: Error Reporting
--
--Checking for Errors
--===================
--
-- Most library functions return a special value to indicate that they
--have failed. The special value is typically `-1', a null pointer, or a
--constant such as `EOF' that is defined for that purpose. But this
--return value tells you only that an error has occurred. To find out
--what kind of error it was, you need to look at the error code stored in
--the variable `errno'. This variable is declared in the header file
--`errno.h'.
--
-- - Variable: volatile int errno
-- The variable `errno' contains the system error number. You can
-- change the value of `errno'.
--
-- Since `errno' is declared `volatile', it might be changed
-- asynchronously by a signal handler; see *Note Defining Handlers::.
-- However, a properly written signal handler saves and restores the
-- value of `errno', so you generally do not need to worry about this
-- possibility except when writing signal handlers.
--
-- The initial value of `errno' at program startup is zero. Many
-- library functions are guaranteed to set it to certain nonzero
-- values when they encounter certain kinds of errors. These error
-- conditions are listed for each function. These functions do not
-- change `errno' when they succeed; thus, the value of `errno' after
-- a successful call is not necessarily zero, and you should not use
-- `errno' to determine _whether_ a call failed. The proper way to
-- do that is documented for each function. _If_ the call failed,
-- you can examine `errno'.
--
-- Many library functions can set `errno' to a nonzero value as a
-- result of calling other library functions which might fail. You
-- should assume that any library function might alter `errno' when
-- the function returns an error.
--
-- *Portability Note:* ISO C specifies `errno' as a "modifiable
-- lvalue" rather than as a variable, permitting it to be implemented
-- as a macro. For example, its expansion might involve a function
-- call, like `*_errno ()'. In fact, that is what it is on the GNU
-- system itself. The GNU library, on non-GNU systems, does whatever
-- is right for the particular system.
--
-- There are a few library functions, like `sqrt' and `atan', that
-- return a perfectly legitimate value in case of an error, but also
-- set `errno'. For these functions, if you want to check to see
-- whether an error occurred, the recommended method is to set `errno'
-- to zero before calling the function, and then check its value
-- afterward.
--
-- All the error codes have symbolic names; they are macros defined in
--`errno.h'. The names start with `E' and an upper-case letter or digit;
--you should consider names of this form to be reserved names. *Note
--Reserved Names::.
--
-- The error code values are all positive integers and are all distinct,
--with one exception: `EWOULDBLOCK' and `EAGAIN' are the same. Since the
--values are distinct, you can use them as labels in a `switch'
--statement; just don't use both `EWOULDBLOCK' and `EAGAIN'. Your
--program should not make any other assumptions about the specific values
--of these symbolic constants.
--
-- The value of `errno' doesn't necessarily have to correspond to any
--of these macros, since some library functions might return other error
--codes of their own for other situations. The only values that are
--guaranteed to be meaningful for a particular library function are the
--ones that this manual lists for that function.
--
-- On non-GNU systems, almost any system call can return `EFAULT' if it
--is given an invalid pointer as an argument. Since this could only
--happen as a result of a bug in your program, and since it will not
--happen on the GNU system, we have saved space by not mentioning
--`EFAULT' in the descriptions of individual functions.
--
-- In some Unix systems, many system calls can also return `EFAULT' if
--given as an argument a pointer into the stack, and the kernel for some
--obscure reason fails in its attempt to extend the stack. If this ever
--happens, you should probably try using statically or dynamically
--allocated memory instead of stack memory on that system.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-20 glibc-2.3.2-200304020432/manual/libc.info-20
---- glibc-2.3.2/manual/libc.info-20 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-20 Thu Jan 1 01:00:00 1970
-@@ -1,1137 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Portable Positioning, Next: Stream Buffering, Prev: File Positioning, Up: I/O on Streams
--
--Portable File-Position Functions
--================================
--
-- On the GNU system, the file position is truly a character count. You
--can specify any character count value as an argument to `fseek' or
--`fseeko' and get reliable results for any random access file. However,
--some ISO C systems do not represent file positions in this way.
--
-- On some systems where text streams truly differ from binary streams,
--it is impossible to represent the file position of a text stream as a
--count of characters from the beginning of the file. For example, the
--file position on some systems must encode both a record offset within
--the file, and a character offset within the record.
--
-- As a consequence, if you want your programs to be portable to these
--systems, you must observe certain rules:
--
-- * The value returned from `ftell' on a text stream has no predictable
-- relationship to the number of characters you have read so far.
-- The only thing you can rely on is that you can use it subsequently
-- as the OFFSET argument to `fseek' or `fseeko' to move back to the
-- same file position.
--
-- * In a call to `fseek' or `fseeko' on a text stream, either the
-- OFFSET must be zero, or WHENCE must be `SEEK_SET' and and the
-- OFFSET must be the result of an earlier call to `ftell' on the
-- same stream.
--
-- * The value of the file position indicator of a text stream is
-- undefined while there are characters that have been pushed back
-- with `ungetc' that haven't been read or discarded. *Note
-- Unreading::.
--
-- But even if you observe these rules, you may still have trouble for
--long files, because `ftell' and `fseek' use a `long int' value to
--represent the file position. This type may not have room to encode all
--the file positions in a large file. Using the `ftello' and `fseeko'
--functions might help here since the `off_t' type is expected to be able
--to hold all file position values but this still does not help to handle
--additional information which must be associated with a file position.
--
-- So if you do want to support systems with peculiar encodings for the
--file positions, it is better to use the functions `fgetpos' and
--`fsetpos' instead. These functions represent the file position using
--the data type `fpos_t', whose internal representation varies from
--system to system.
--
-- These symbols are declared in the header file `stdio.h'.
--
-- - Data Type: fpos_t
-- This is the type of an object that can encode information about the
-- file position of a stream, for use by the functions `fgetpos' and
-- `fsetpos'.
--
-- In the GNU system, `fpos_t' is an opaque data structure that
-- contains internal data to represent file offset and conversion
-- state information. In other systems, it might have a different
-- internal representation.
--
-- When compiling with `_FILE_OFFSET_BITS == 64' on a 32 bit machine
-- this type is in fact equivalent to `fpos64_t' since the LFS
-- interface transparently replaces the old interface.
--
-- - Data Type: fpos64_t
-- This is the type of an object that can encode information about the
-- file position of a stream, for use by the functions `fgetpos64' and
-- `fsetpos64'.
--
-- In the GNU system, `fpos64_t' is an opaque data structure that
-- contains internal data to represent file offset and conversion
-- state information. In other systems, it might have a different
-- internal representation.
--
-- - Function: int fgetpos (FILE *STREAM, fpos_t *POSITION)
-- This function stores the value of the file position indicator for
-- the stream STREAM in the `fpos_t' object pointed to by POSITION.
-- If successful, `fgetpos' returns zero; otherwise it returns a
-- nonzero value and stores an implementation-defined positive value
-- in `errno'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit system the function is in fact `fgetpos64'. I.e., the LFS
-- interface transparently replaces the old interface.
--
-- - Function: int fgetpos64 (FILE *STREAM, fpos64_t *POSITION)
-- This function is similar to `fgetpos' but the file position is
-- returned in a variable of type `fpos64_t' to which POSITION points.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `fgetpos'
-- and so transparently replaces the old interface.
--
-- - Function: int fsetpos (FILE *STREAM, const fpos_t *POSITION)
-- This function sets the file position indicator for the stream
-- STREAM to the position POSITION, which must have been set by a
-- previous call to `fgetpos' on the same stream. If successful,
-- `fsetpos' clears the end-of-file indicator on the stream, discards
-- any characters that were "pushed back" by the use of `ungetc', and
-- returns a value of zero. Otherwise, `fsetpos' returns a nonzero
-- value and stores an implementation-defined positive value in
-- `errno'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32 bit system the function is in fact `fsetpos64'. I.e., the LFS
-- interface transparently replaces the old interface.
--
-- - Function: int fsetpos64 (FILE *STREAM, const fpos64_t *POSITION)
-- This function is similar to `fsetpos' but the file position used
-- for positioning is provided in a variable of type `fpos64_t' to
-- which POSITION points.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `fsetpos'
-- and so transparently replaces the old interface.
--
--
--File: libc.info, Node: Stream Buffering, Next: Other Kinds of Streams, Prev: Portable Positioning, Up: I/O on Streams
--
--Stream Buffering
--================
--
-- Characters that are written to a stream are normally accumulated and
--transmitted asynchronously to the file in a block, instead of appearing
--as soon as they are output by the application program. Similarly,
--streams often retrieve input from the host environment in blocks rather
--than on a character-by-character basis. This is called "buffering".
--
-- If you are writing programs that do interactive input and output
--using streams, you need to understand how buffering works when you
--design the user interface to your program. Otherwise, you might find
--that output (such as progress or prompt messages) doesn't appear when
--you intended it to, or displays some other unexpected behavior.
--
-- This section deals only with controlling when characters are
--transmitted between the stream and the file or device, and _not_ with
--how things like echoing, flow control, and the like are handled on
--specific classes of devices. For information on common control
--operations on terminal devices, see *Note Low-Level Terminal
--Interface::.
--
-- You can bypass the stream buffering facilities altogether by using
--the low-level input and output functions that operate on file
--descriptors instead. *Note Low-Level I/O::.
--
--* Menu:
--
--* Buffering Concepts:: Terminology is defined here.
--* Flushing Buffers:: How to ensure that output buffers are flushed.
--* Controlling Buffering:: How to specify what kind of buffering to use.
--
--
--File: libc.info, Node: Buffering Concepts, Next: Flushing Buffers, Up: Stream Buffering
--
--Buffering Concepts
--------------------
--
-- There are three different kinds of buffering strategies:
--
-- * Characters written to or read from an "unbuffered" stream are
-- transmitted individually to or from the file as soon as possible.
--
-- * Characters written to a "line buffered" stream are transmitted to
-- the file in blocks when a newline character is encountered.
--
-- * Characters written to or read from a "fully buffered" stream are
-- transmitted to or from the file in blocks of arbitrary size.
--
-- Newly opened streams are normally fully buffered, with one
--exception: a stream connected to an interactive device such as a
--terminal is initially line buffered. *Note Controlling Buffering::,
--for information on how to select a different kind of buffering.
--Usually the automatic selection gives you the most convenient kind of
--buffering for the file or device you open.
--
-- The use of line buffering for interactive devices implies that output
--messages ending in a newline will appear immediately--which is usually
--what you want. Output that doesn't end in a newline might or might not
--show up immediately, so if you want them to appear immediately, you
--should flush buffered output explicitly with `fflush', as described in
--*Note Flushing Buffers::.
--
--
--File: libc.info, Node: Flushing Buffers, Next: Controlling Buffering, Prev: Buffering Concepts, Up: Stream Buffering
--
--Flushing Buffers
------------------
--
-- "Flushing" output on a buffered stream means transmitting all
--accumulated characters to the file. There are many circumstances when
--buffered output on a stream is flushed automatically:
--
-- * When you try to do output and the output buffer is full.
--
-- * When the stream is closed. *Note Closing Streams::.
--
-- * When the program terminates by calling `exit'. *Note Normal
-- Termination::.
--
-- * When a newline is written, if the stream is line buffered.
--
-- * Whenever an input operation on _any_ stream actually reads data
-- from its file.
--
-- If you want to flush the buffered output at another time, call
--`fflush', which is declared in the header file `stdio.h'.
--
-- - Function: int fflush (FILE *STREAM)
-- This function causes any buffered output on STREAM to be delivered
-- to the file. If STREAM is a null pointer, then `fflush' causes
-- buffered output on _all_ open output streams to be flushed.
--
-- This function returns `EOF' if a write error occurs, or zero
-- otherwise.
--
-- - Function: int fflush_unlocked (FILE *STREAM)
-- The `fflush_unlocked' function is equivalent to the `fflush'
-- function except that it does not implicitly lock the stream.
--
-- The `fflush' function can be used to flush all streams currently
--opened. While this is useful in some situations it does often more than
--necessary since it might be done in situations when terminal input is
--required and the program wants to be sure that all output is visible on
--the terminal. But this means that only line buffered streams have to be
--flushed. Solaris introduced a function especially for this. It was
--always available in the GNU C library in some form but never officially
--exported.
--
-- - Function: void _flushlbf (void)
-- The `_flushlbf' function flushes all line buffered streams
-- currently opened.
--
-- This function is declared in the `stdio_ext.h' header.
--
-- *Compatibility Note:* Some brain-damaged operating systems have been
--known to be so thoroughly fixated on line-oriented input and output
--that flushing a line buffered stream causes a newline to be written!
--Fortunately, this "feature" seems to be becoming less common. You do
--not need to worry about this in the GNU system.
--
-- In some situations it might be useful to not flush the output pending
--for a stream but instead simply forget it. If transmission is costly
--and the output is not needed anymore this is valid reasoning. In this
--situation a non-standard function introduced in Solaris and available in
--the GNU C library can be used.
--
-- - Function: void __fpurge (FILE *STREAM)
-- The `__fpurge' function causes the buffer of the stream STREAM to
-- be emptied. If the stream is currently in read mode all input in
-- the buffer is lost. If the stream is in output mode the buffered
-- output is not written to the device (or whatever other underlying
-- storage) and the buffer the cleared.
--
-- This function is declared in `stdio_ext.h'.
--
--
--File: libc.info, Node: Controlling Buffering, Prev: Flushing Buffers, Up: Stream Buffering
--
--Controlling Which Kind of Buffering
-------------------------------------
--
-- After opening a stream (but before any other operations have been
--performed on it), you can explicitly specify what kind of buffering you
--want it to have using the `setvbuf' function.
--
-- The facilities listed in this section are declared in the header
--file `stdio.h'.
--
-- - Function: int setvbuf (FILE *STREAM, char *BUF, int MODE, size_t
-- SIZE)
-- This function is used to specify that the stream STREAM should
-- have the buffering mode MODE, which can be either `_IOFBF' (for
-- full buffering), `_IOLBF' (for line buffering), or `_IONBF' (for
-- unbuffered input/output).
--
-- If you specify a null pointer as the BUF argument, then `setvbuf'
-- allocates a buffer itself using `malloc'. This buffer will be
-- freed when you close the stream.
--
-- Otherwise, BUF should be a character array that can hold at least
-- SIZE characters. You should not free the space for this array as
-- long as the stream remains open and this array remains its buffer.
-- You should usually either allocate it statically, or `malloc'
-- (*note Unconstrained Allocation::) the buffer. Using an automatic
-- array is not a good idea unless you close the file before exiting
-- the block that declares the array.
--
-- While the array remains a stream buffer, the stream I/O functions
-- will use the buffer for their internal purposes. You shouldn't
-- try to access the values in the array directly while the stream is
-- using it for buffering.
--
-- The `setvbuf' function returns zero on success, or a nonzero value
-- if the value of MODE is not valid or if the request could not be
-- honored.
--
-- - Macro: int _IOFBF
-- The value of this macro is an integer constant expression that can
-- be used as the MODE argument to the `setvbuf' function to specify
-- that the stream should be fully buffered.
--
-- - Macro: int _IOLBF
-- The value of this macro is an integer constant expression that can
-- be used as the MODE argument to the `setvbuf' function to specify
-- that the stream should be line buffered.
--
-- - Macro: int _IONBF
-- The value of this macro is an integer constant expression that can
-- be used as the MODE argument to the `setvbuf' function to specify
-- that the stream should be unbuffered.
--
-- - Macro: int BUFSIZ
-- The value of this macro is an integer constant expression that is
-- good to use for the SIZE argument to `setvbuf'. This value is
-- guaranteed to be at least `256'.
--
-- The value of `BUFSIZ' is chosen on each system so as to make stream
-- I/O efficient. So it is a good idea to use `BUFSIZ' as the size
-- for the buffer when you call `setvbuf'.
--
-- Actually, you can get an even better value to use for the buffer
-- size by means of the `fstat' system call: it is found in the
-- `st_blksize' field of the file attributes. *Note Attribute
-- Meanings::.
--
-- Sometimes people also use `BUFSIZ' as the allocation size of
-- buffers used for related purposes, such as strings used to receive
-- a line of input with `fgets' (*note Character Input::). There is
-- no particular reason to use `BUFSIZ' for this instead of any other
-- integer, except that it might lead to doing I/O in chunks of an
-- efficient size.
--
-- - Function: void setbuf (FILE *STREAM, char *BUF)
-- If BUF is a null pointer, the effect of this function is
-- equivalent to calling `setvbuf' with a MODE argument of `_IONBF'.
-- Otherwise, it is equivalent to calling `setvbuf' with BUF, and a
-- MODE of `_IOFBF' and a SIZE argument of `BUFSIZ'.
--
-- The `setbuf' function is provided for compatibility with old code;
-- use `setvbuf' in all new programs.
--
-- - Function: void setbuffer (FILE *STREAM, char *BUF, size_t SIZE)
-- If BUF is a null pointer, this function makes STREAM unbuffered.
-- Otherwise, it makes STREAM fully buffered using BUF as the buffer.
-- The SIZE argument specifies the length of BUF.
--
-- This function is provided for compatibility with old BSD code. Use
-- `setvbuf' instead.
--
-- - Function: void setlinebuf (FILE *STREAM)
-- This function makes STREAM be line buffered, and allocates the
-- buffer for you.
--
-- This function is provided for compatibility with old BSD code. Use
-- `setvbuf' instead.
--
-- It is possible to query whether a given stream is line buffered or
--not using a non-standard function introduced in Solaris and available
--in the GNU C library.
--
-- - Function: int __flbf (FILE *STREAM)
-- The `__flbf' function will return a nonzero value in case the
-- stream STREAM is line buffered. Otherwise the return value is
-- zero.
--
-- This function is declared in the `stdio_ext.h' header.
--
-- Two more extensions allow to determine the size of the buffer and how
--much of it is used. These functions were also introduced in Solaris.
--
-- - Function: size_t __fbufsize (FILE *STREAM)
-- The `__fbufsize' function return the size of the buffer in the
-- stream STREAM. This value can be used to optimize the use of the
-- stream.
--
-- This function is declared in the `stdio_ext.h' header.
--
-- - Function: size_t __fpending (FILE *STREAM) The `__fpending'
-- function returns the number of bytes currently in the output
-- buffer. For wide-oriented stream the measuring unit is wide
-- characters. This function should not be used on buffers in read
-- mode or opened read-only.
--
-- This function is declared in the `stdio_ext.h' header.
--
--
--File: libc.info, Node: Other Kinds of Streams, Next: Formatted Messages, Prev: Stream Buffering, Up: I/O on Streams
--
--Other Kinds of Streams
--======================
--
-- The GNU library provides ways for you to define additional kinds of
--streams that do not necessarily correspond to an open file.
--
-- One such type of stream takes input from or writes output to a
--string. These kinds of streams are used internally to implement the
--`sprintf' and `sscanf' functions. You can also create such a stream
--explicitly, using the functions described in *Note String Streams::.
--
-- More generally, you can define streams that do input/output to
--arbitrary objects using functions supplied by your program. This
--protocol is discussed in *Note Custom Streams::.
--
-- *Portability Note:* The facilities described in this section are
--specific to GNU. Other systems or C implementations might or might not
--provide equivalent functionality.
--
--* Menu:
--
--* String Streams:: Streams that get data from or put data in
-- a string or memory buffer.
--* Obstack Streams:: Streams that store data in an obstack.
--* Custom Streams:: Defining your own streams with an arbitrary
-- input data source and/or output data sink.
--
--
--File: libc.info, Node: String Streams, Next: Obstack Streams, Up: Other Kinds of Streams
--
--String Streams
----------------
--
-- The `fmemopen' and `open_memstream' functions allow you to do I/O to
--a string or memory buffer. These facilities are declared in `stdio.h'.
--
-- - Function: FILE * fmemopen (void *BUF, size_t SIZE, const char
-- *OPENTYPE)
-- This function opens a stream that allows the access specified by
-- the OPENTYPE argument, that reads from or writes to the buffer
-- specified by the argument BUF. This array must be at least SIZE
-- bytes long.
--
-- If you specify a null pointer as the BUF argument, `fmemopen'
-- dynamically allocates an array SIZE bytes long (as with `malloc';
-- *note Unconstrained Allocation::). This is really only useful if
-- you are going to write things to the buffer and then read them back
-- in again, because you have no way of actually getting a pointer to
-- the buffer (for this, try `open_memstream', below). The buffer is
-- freed when the stream is closed.
--
-- The argument OPENTYPE is the same as in `fopen' (*note Opening
-- Streams::). If the OPENTYPE specifies append mode, then the
-- initial file position is set to the first null character in the
-- buffer. Otherwise the initial file position is at the beginning
-- of the buffer.
--
-- When a stream open for writing is flushed or closed, a null
-- character (zero byte) is written at the end of the buffer if it
-- fits. You should add an extra byte to the SIZE argument to
-- account for this. Attempts to write more than SIZE bytes to the
-- buffer result in an error.
--
-- For a stream open for reading, null characters (zero bytes) in the
-- buffer do not count as "end of file". Read operations indicate
-- end of file only when the file position advances past SIZE bytes.
-- So, if you want to read characters from a null-terminated string,
-- you should supply the length of the string as the SIZE argument.
--
-- Here is an example of using `fmemopen' to create a stream for
--reading from a string:
--
-- #include <stdio.h>
--
-- static char buffer[] = "foobar";
--
-- int
-- main (void)
-- {
-- int ch;
-- FILE *stream;
--
-- stream = fmemopen (buffer, strlen (buffer), "r");
-- while ((ch = fgetc (stream)) != EOF)
-- printf ("Got %c\n", ch);
-- fclose (stream);
--
-- return 0;
-- }
--
-- This program produces the following output:
--
-- Got f
-- Got o
-- Got o
-- Got b
-- Got a
-- Got r
--
-- - Function: FILE * open_memstream (char **PTR, size_t *SIZELOC)
-- This function opens a stream for writing to a buffer. The buffer
-- is allocated dynamically (as with `malloc'; *note Unconstrained
-- Allocation::) and grown as necessary.
--
-- When the stream is closed with `fclose' or flushed with `fflush',
-- the locations PTR and SIZELOC are updated to contain the pointer
-- to the buffer and its size. The values thus stored remain valid
-- only as long as no further output on the stream takes place. If
-- you do more output, you must flush the stream again to store new
-- values before you use them again.
--
-- A null character is written at the end of the buffer. This null
-- character is _not_ included in the size value stored at SIZELOC.
--
-- You can move the stream's file position with `fseek' or `fseeko'
-- (*note File Positioning::). Moving the file position past the end
-- of the data already written fills the intervening space with
-- zeroes.
--
-- Here is an example of using `open_memstream':
--
-- #include <stdio.h>
--
-- int
-- main (void)
-- {
-- char *bp;
-- size_t size;
-- FILE *stream;
--
-- stream = open_memstream (&bp, &size);
-- fprintf (stream, "hello");
-- fflush (stream);
-- printf ("buf = `%s', size = %d\n", bp, size);
-- fprintf (stream, ", world");
-- fclose (stream);
-- printf ("buf = `%s', size = %d\n", bp, size);
--
-- return 0;
-- }
--
-- This program produces the following output:
--
-- buf = `hello', size = 5
-- buf = `hello, world', size = 12
--
--
--File: libc.info, Node: Obstack Streams, Next: Custom Streams, Prev: String Streams, Up: Other Kinds of Streams
--
--Obstack Streams
-----------------
--
-- You can open an output stream that puts it data in an obstack.
--*Note Obstacks::.
--
-- - Function: FILE * open_obstack_stream (struct obstack *OBSTACK)
-- This function opens a stream for writing data into the obstack
-- OBSTACK. This starts an object in the obstack and makes it grow
-- as data is written (*note Growing Objects::).
--
-- Calling `fflush' on this stream updates the current size of the
-- object to match the amount of data that has been written. After a
-- call to `fflush', you can examine the object temporarily.
--
-- You can move the file position of an obstack stream with `fseek' or
-- `fseeko' (*note File Positioning::). Moving the file position past
-- the end of the data written fills the intervening space with zeros.
--
-- To make the object permanent, update the obstack with `fflush', and
-- then use `obstack_finish' to finalize the object and get its
-- address. The following write to the stream starts a new object in
-- the obstack, and later writes add to that object until you do
-- another `fflush' and `obstack_finish'.
--
-- But how do you find out how long the object is? You can get the
-- length in bytes by calling `obstack_object_size' (*note Status of
-- an Obstack::), or you can null-terminate the object like this:
--
-- obstack_1grow (OBSTACK, 0);
--
-- Whichever one you do, you must do it _before_ calling
-- `obstack_finish'. (You can do both if you wish.)
--
-- Here is a sample function that uses `open_obstack_stream':
--
-- char *
-- make_message_string (const char *a, int b)
-- {
-- FILE *stream = open_obstack_stream (&message_obstack);
-- output_task (stream);
-- fprintf (stream, ": ");
-- fprintf (stream, a, b);
-- fprintf (stream, "\n");
-- fclose (stream);
-- obstack_1grow (&message_obstack, 0);
-- return obstack_finish (&message_obstack);
-- }
--
--
--File: libc.info, Node: Custom Streams, Prev: Obstack Streams, Up: Other Kinds of Streams
--
--Programming Your Own Custom Streams
-------------------------------------
--
-- This section describes how you can make a stream that gets input
--from an arbitrary data source or writes output to an arbitrary data sink
--programmed by you. We call these "custom streams". The functions and
--types described here are all GNU extensions.
--
--* Menu:
--
--* Streams and Cookies:: The "cookie" records where to fetch or
-- store data that is read or written.
--* Hook Functions:: How you should define the four "hook
-- functions" that a custom stream needs.
--
--
--File: libc.info, Node: Streams and Cookies, Next: Hook Functions, Up: Custom Streams
--
--Custom Streams and Cookies
--..........................
--
-- Inside every custom stream is a special object called the "cookie".
--This is an object supplied by you which records where to fetch or store
--the data read or written. It is up to you to define a data type to use
--for the cookie. The stream functions in the library never refer
--directly to its contents, and they don't even know what the type is;
--they record its address with type `void *'.
--
-- To implement a custom stream, you must specify _how_ to fetch or
--store the data in the specified place. You do this by defining "hook
--functions" to read, write, change "file position", and close the
--stream. All four of these functions will be passed the stream's cookie
--so they can tell where to fetch or store the data. The library
--functions don't know what's inside the cookie, but your functions will
--know.
--
-- When you create a custom stream, you must specify the cookie pointer,
--and also the four hook functions stored in a structure of type
--`cookie_io_functions_t'.
--
-- These facilities are declared in `stdio.h'.
--
-- - Data Type: cookie_io_functions_t
-- This is a structure type that holds the functions that define the
-- communications protocol between the stream and its cookie. It has
-- the following members:
--
-- `cookie_read_function_t *read'
-- This is the function that reads data from the cookie. If the
-- value is a null pointer instead of a function, then read
-- operations on this stream always return `EOF'.
--
-- `cookie_write_function_t *write'
-- This is the function that writes data to the cookie. If the
-- value is a null pointer instead of a function, then data
-- written to the stream is discarded.
--
-- `cookie_seek_function_t *seek'
-- This is the function that performs the equivalent of file
-- positioning on the cookie. If the value is a null pointer
-- instead of a function, calls to `fseek' or `fseeko' on this
-- stream can only seek to locations within the buffer; any
-- attempt to seek outside the buffer will return an `ESPIPE'
-- error.
--
-- `cookie_close_function_t *close'
-- This function performs any appropriate cleanup on the cookie
-- when closing the stream. If the value is a null pointer
-- instead of a function, nothing special is done to close the
-- cookie when the stream is closed.
--
-- - Function: FILE * fopencookie (void *COOKIE, const char *OPENTYPE,
-- cookie_io_functions_t IO-FUNCTIONS)
-- This function actually creates the stream for communicating with
-- the COOKIE using the functions in the IO-FUNCTIONS argument. The
-- OPENTYPE argument is interpreted as for `fopen'; see *Note Opening
-- Streams::. (But note that the "truncate on open" option is
-- ignored.) The new stream is fully buffered.
--
-- The `fopencookie' function returns the newly created stream, or a
-- null pointer in case of an error.
--
--
--File: libc.info, Node: Hook Functions, Prev: Streams and Cookies, Up: Custom Streams
--
--Custom Stream Hook Functions
--............................
--
-- Here are more details on how you should define the four hook
--functions that a custom stream needs.
--
-- You should define the function to read data from the cookie as:
--
-- ssize_t READER (void *COOKIE, char *BUFFER, size_t SIZE)
--
-- This is very similar to the `read' function; see *Note I/O
--Primitives::. Your function should transfer up to SIZE bytes into the
--BUFFER, and return the number of bytes read, or zero to indicate
--end-of-file. You can return a value of `-1' to indicate an error.
--
-- You should define the function to write data to the cookie as:
--
-- ssize_t WRITER (void *COOKIE, const char *BUFFER, size_t SIZE)
--
-- This is very similar to the `write' function; see *Note I/O
--Primitives::. Your function should transfer up to SIZE bytes from the
--buffer, and return the number of bytes written. You can return a value
--of `-1' to indicate an error.
--
-- You should define the function to perform seek operations on the
--cookie as:
--
-- int SEEKER (void *COOKIE, fpos_t *POSITION, int WHENCE)
--
-- For this function, the POSITION and WHENCE arguments are interpreted
--as for `fgetpos'; see *Note Portable Positioning::. In the GNU
--library, `fpos_t' is equivalent to `off_t' or `long int', and simply
--represents the number of bytes from the beginning of the file.
--
-- After doing the seek operation, your function should store the
--resulting file position relative to the beginning of the file in
--POSITION. Your function should return a value of `0' on success and
--`-1' to indicate an error.
--
-- You should define the function to do cleanup operations on the cookie
--appropriate for closing the stream as:
--
-- int CLEANER (void *COOKIE)
--
-- Your function should return `-1' to indicate an error, and `0'
--otherwise.
--
-- - Data Type: cookie_read_function
-- This is the data type that the read function for a custom stream
-- should have. If you declare the function as shown above, this is
-- the type it will have.
--
-- - Data Type: cookie_write_function
-- The data type of the write function for a custom stream.
--
-- - Data Type: cookie_seek_function
-- The data type of the seek function for a custom stream.
--
-- - Data Type: cookie_close_function
-- The data type of the close function for a custom stream.
--
--
--File: libc.info, Node: Formatted Messages, Prev: Other Kinds of Streams, Up: I/O on Streams
--
--Formatted Messages
--==================
--
-- On systems which are based on System V messages of programs
--(especially the system tools) are printed in a strict form using the
--`fmtmsg' function. The uniformity sometimes helps the user to
--interpret messages and the strictness tests of the `fmtmsg' function
--ensure that the programmer follows some minimal requirements.
--
--* Menu:
--
--* Printing Formatted Messages:: The `fmtmsg' function.
--* Adding Severity Classes:: Add more severity classes.
--* Example:: How to use `fmtmsg' and `addseverity'.
--
--
--File: libc.info, Node: Printing Formatted Messages, Next: Adding Severity Classes, Up: Formatted Messages
--
--Printing Formatted Messages
-----------------------------
--
-- Messages can be printed to standard error and/or to the console. To
--select the destination the programmer can use the following two values,
--bitwise OR combined if wanted, for the CLASSIFICATION parameter of
--`fmtmsg':
--
--`MM_PRINT'
-- Display the message in standard error.
--
--`MM_CONSOLE'
-- Display the message on the system console.
--
-- The erroneous piece of the system can be signalled by exactly one of
--the following values which also is bitwise ORed with the CLASSIFICATION
--parameter to `fmtmsg':
--
--`MM_HARD'
-- The source of the condition is some hardware.
--
--`MM_SOFT'
-- The source of the condition is some software.
--
--`MM_FIRM'
-- The source of the condition is some firmware.
--
-- A third component of the CLASSIFICATION parameter to `fmtmsg' can
--describe the part of the system which detects the problem. This is
--done by using exactly one of the following values:
--
--`MM_APPL'
-- The erroneous condition is detected by the application.
--
--`MM_UTIL'
-- The erroneous condition is detected by a utility.
--
--`MM_OPSYS'
-- The erroneous condition is detected by the operating system.
--
-- A last component of CLASSIFICATION can signal the results of this
--message. Exactly one of the following values can be used:
--
--`MM_RECOVER'
-- It is a recoverable error.
--
--`MM_NRECOV'
-- It is a non-recoverable error.
--
-- - Function: int fmtmsg (long int CLASSIFICATION, const char *LABEL,
-- int SEVERITY, const char *TEXT, const char *ACTION, const
-- char *TAG)
-- Display a message described by its parameters on the device(s)
-- specified in the CLASSIFICATION parameter. The LABEL parameter
-- identifies the source of the message. The string should consist
-- of two colon separated parts where the first part has not more
-- than 10 and the second part not more than 14 characters. The TEXT
-- parameter describes the condition of the error, the ACTION
-- parameter possible steps to recover from the error and the TAG
-- parameter is a reference to the online documentation where more
-- information can be found. It should contain the LABEL value and a
-- unique identification number.
--
-- Each of the parameters can be a special value which means this
-- value is to be omitted. The symbolic names for these values are:
--
-- `MM_NULLLBL'
-- Ignore LABEL parameter.
--
-- `MM_NULLSEV'
-- Ignore SEVERITY parameter.
--
-- `MM_NULLMC'
-- Ignore CLASSIFICATION parameter. This implies that nothing is
-- actually printed.
--
-- `MM_NULLTXT'
-- Ignore TEXT parameter.
--
-- `MM_NULLACT'
-- Ignore ACTION parameter.
--
-- `MM_NULLTAG'
-- Ignore TAG parameter.
--
-- There is another way certain fields can be omitted from the output
-- to standard error. This is described below in the description of
-- environment variables influencing the behavior.
--
-- The SEVERITY parameter can have one of the values in the following
-- table:
--
-- `MM_NOSEV'
-- Nothing is printed, this value is the same as `MM_NULLSEV'.
--
-- `MM_HALT'
-- This value is printed as `HALT'.
--
-- `MM_ERROR'
-- This value is printed as `ERROR'.
--
-- `MM_WARNING'
-- This value is printed as `WARNING'.
--
-- `MM_INFO'
-- This value is printed as `INFO'.
--
-- The numeric value of these five macros are between `0' and `4'.
-- Using the environment variable `SEV_LEVEL' or using the
-- `addseverity' function one can add more severity levels with their
-- corresponding string to print. This is described below (*note
-- Adding Severity Classes::).
--
-- If no parameter is ignored the output looks like this:
--
-- LABEL: SEVERITY-STRING: TEXT
-- TO FIX: ACTION TAG
--
-- The colons, new line characters and the `TO FIX' string are
-- inserted if necessary, i.e., if the corresponding parameter is not
-- ignored.
--
-- This function is specified in the X/Open Portability Guide. It is
-- also available on all systems derived from System V.
--
-- The function returns the value `MM_OK' if no error occurred. If
-- only the printing to standard error failed, it returns `MM_NOMSG'.
-- If printing to the console fails, it returns `MM_NOCON'. If
-- nothing is printed `MM_NOTOK' is returned. Among situations where
-- all outputs fail this last value is also returned if a parameter
-- value is incorrect.
--
-- There are two environment variables which influence the behavior of
--`fmtmsg'. The first is `MSGVERB'. It is used to control the output
--actually happening on standard error (_not_ the console output). Each
--of the five fields can explicitly be enabled. To do this the user has
--to put the `MSGVERB' variable with a format like the following in the
--environment before calling the `fmtmsg' function the first time:
--
-- MSGVERB=KEYWORD[:KEYWORD[:...]]
--
-- Valid KEYWORDs are `label', `severity', `text', `action', and `tag'.
--If the environment variable is not given or is the empty string, a not
--supported keyword is given or the value is somehow else invalid, no
--part of the message is masked out.
--
-- The second environment variable which influences the behavior of
--`fmtmsg' is `SEV_LEVEL'. This variable and the change in the behavior
--of `fmtmsg' is not specified in the X/Open Portability Guide. It is
--available in System V systems, though. It can be used to introduce new
--severity levels. By default, only the five severity levels described
--above are available. Any other numeric value would make `fmtmsg' print
--nothing.
--
-- If the user puts `SEV_LEVEL' with a format like
--
-- SEV_LEVEL=[DESCRIPTION[:DESCRIPTION[:...]]]
--
--in the environment of the process before the first call to `fmtmsg',
--where DESCRIPTION has a value of the form
--
-- SEVERITY-KEYWORD,LEVEL,PRINTSTRING
--
-- The SEVERITY-KEYWORD part is not used by `fmtmsg' but it has to be
--present. The LEVEL part is a string representation of a number. The
--numeric value must be a number greater than 4. This value must be used
--in the SEVERITY parameter of `fmtmsg' to select this class. It is not
--possible to overwrite any of the predefined classes. The PRINTSTRING
--is the string printed when a message of this class is processed by
--`fmtmsg' (see above, `fmtsmg' does not print the numeric value but
--instead the string representation).
--
--
--File: libc.info, Node: Adding Severity Classes, Next: Example, Prev: Printing Formatted Messages, Up: Formatted Messages
--
--Adding Severity Classes
-------------------------
--
-- There is another possibility to introduce severity classes besides
--using the environment variable `SEV_LEVEL'. This simplifies the task of
--introducing new classes in a running program. One could use the
--`setenv' or `putenv' function to set the environment variable, but this
--is toilsome.
--
-- - Function: int addseverity (int SEVERITY, const char *STRING)
-- This function allows the introduction of new severity classes
-- which can be addressed by the SEVERITY parameter of the `fmtmsg'
-- function. The SEVERITY parameter of `addseverity' must match the
-- value for the parameter with the same name of `fmtmsg', and STRING
-- is the string printed in the actual messages instead of the numeric
-- value.
--
-- If STRING is `NULL' the severity class with the numeric value
-- according to SEVERITY is removed.
--
-- It is not possible to overwrite or remove one of the default
-- severity classes. All calls to `addseverity' with SEVERITY set to
-- one of the values for the default classes will fail.
--
-- The return value is `MM_OK' if the task was successfully performed.
-- If the return value is `MM_NOTOK' something went wrong. This could
-- mean that no more memory is available or a class is not available
-- when it has to be removed.
--
-- This function is not specified in the X/Open Portability Guide
-- although the `fmtsmg' function is. It is available on System V
-- systems.
--
--
--File: libc.info, Node: Example, Prev: Adding Severity Classes, Up: Formatted Messages
--
--How to use `fmtmsg' and `addseverity'
---------------------------------------
--
-- Here is a simple example program to illustrate the use of the both
--functions described in this section.
--
-- #include <fmtmsg.h>
--
-- int
-- main (void)
-- {
-- addseverity (5, "NOTE2");
-- fmtmsg (MM_PRINT, "only1field", MM_INFO, "text2", "action2", "tag2");
-- fmtmsg (MM_PRINT, "UX:cat", 5, "invalid syntax", "refer to manual",
-- "UX:cat:001");
-- fmtmsg (MM_PRINT, "label:foo", 6, "text", "action", "tag");
-- return 0;
-- }
--
-- The second call to `fmtmsg' illustrates a use of this function as it
--usually occurs on System V systems, which heavily use this function.
--It seems worthwhile to give a short explanation here of how this system
--works on System V. The value of the LABEL field (`UX:cat') says that
--the error occurred in the Unix program `cat'. The explanation of the
--error follows and the value for the ACTION parameter is `"refer to
--manual"'. One could be more specific here, if necessary. The TAG
--field contains, as proposed above, the value of the string given for
--the LABEL parameter, and additionally a unique ID (`001' in this case).
--For a GNU environment this string could contain a reference to the
--corresponding node in the Info page for the program.
--
--Running this program without specifying the `MSGVERB' and `SEV_LEVEL'
--function produces the following output:
--
-- UX:cat: NOTE2: invalid syntax
-- TO FIX: refer to manual UX:cat:001
--
-- We see the different fields of the message and how the extra glue
--(the colons and the `TO FIX' string) are printed. But only one of the
--three calls to `fmtmsg' produced output. The first call does not print
--anything because the LABEL parameter is not in the correct form. The
--string must contain two fields, separated by a colon (*note Printing
--Formatted Messages::). The third `fmtmsg' call produced no output
--since the class with the numeric value `6' is not defined. Although a
--class with numeric value `5' is also not defined by default, the call
--to `addseverity' introduces it and the second call to `fmtmsg' produces
--the above output.
--
-- When we change the environment of the program to contain
--`SEV_LEVEL=XXX,6,NOTE' when running it we get a different result:
--
-- UX:cat: NOTE2: invalid syntax
-- TO FIX: refer to manual UX:cat:001
-- label:foo: NOTE: text
-- TO FIX: action tag
--
-- Now the third call to `fmtmsg' produced some output and we see how
--the string `NOTE' from the environment variable appears in the message.
--
-- Now we can reduce the output by specifying which fields we are
--interested in. If we additionally set the environment variable
--`MSGVERB' to the value `severity:label:action' we get the following
--output:
--
-- UX:cat: NOTE2
-- TO FIX: refer to manual
-- label:foo: NOTE
-- TO FIX: action
--
--I.e., the output produced by the TEXT and the TAG parameters to
--`fmtmsg' vanished. Please also note that now there is no colon after
--the `NOTE' and `NOTE2' strings in the output. This is not necessary
--since there is no more output on this line because the text is missing.
--
--
--File: libc.info, Node: Low-Level I/O, Next: File System Interface, Prev: I/O on Streams, Up: Top
--
--Low-Level Input/Output
--**********************
--
-- This chapter describes functions for performing low-level
--input/output operations on file descriptors. These functions include
--the primitives for the higher-level I/O functions described in *Note
--I/O on Streams::, as well as functions for performing low-level control
--operations for which there are no equivalents on streams.
--
-- Stream-level I/O is more flexible and usually more convenient;
--therefore, programmers generally use the descriptor-level functions only
--when necessary. These are some of the usual reasons:
--
-- * For reading binary files in large chunks.
--
-- * For reading an entire file into core before parsing it.
--
-- * To perform operations other than data transfer, which can only be
-- done with a descriptor. (You can use `fileno' to get the
-- descriptor corresponding to a stream.)
--
-- * To pass descriptors to a child process. (The child can create its
-- own stream to use a descriptor that it inherits, but cannot
-- inherit a stream directly.)
--
--* Menu:
--
--* Opening and Closing Files:: How to open and close file
-- descriptors.
--* I/O Primitives:: Reading and writing data.
--* File Position Primitive:: Setting a descriptor's file
-- position.
--* Descriptors and Streams:: Converting descriptor to stream
-- or vice-versa.
--* Stream/Descriptor Precautions:: Precautions needed if you use both
-- descriptors and streams.
--* Scatter-Gather:: Fast I/O to discontinuous buffers.
--* Memory-mapped I/O:: Using files like memory.
--* Waiting for I/O:: How to check for input or output
-- on multiple file descriptors.
--* Synchronizing I/O:: Making sure all I/O actions completed.
--* Asynchronous I/O:: Perform I/O in parallel.
--* Control Operations:: Various other operations on file
-- descriptors.
--* Duplicating Descriptors:: Fcntl commands for duplicating
-- file descriptors.
--* Descriptor Flags:: Fcntl commands for manipulating
-- flags associated with file
-- descriptors.
--* File Status Flags:: Fcntl commands for manipulating
-- flags associated with open files.
--* File Locks:: Fcntl commands for implementing
-- file locking.
--* Interrupt Input:: Getting an asynchronous signal when
-- input arrives.
--* IOCTLs:: Generic I/O Control operations.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-21 glibc-2.3.2-200304020432/manual/libc.info-21
---- glibc-2.3.2/manual/libc.info-21 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-21 Thu Jan 1 01:00:00 1970
-@@ -1,962 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Opening and Closing Files, Next: I/O Primitives, Up: Low-Level I/O
--
--Opening and Closing Files
--=========================
--
-- This section describes the primitives for opening and closing files
--using file descriptors. The `open' and `creat' functions are declared
--in the header file `fcntl.h', while `close' is declared in `unistd.h'.
--
-- - Function: int open (const char *FILENAME, int FLAGS[, mode_t MODE])
-- The `open' function creates and returns a new file descriptor for
-- the file named by FILENAME. Initially, the file position
-- indicator for the file is at the beginning of the file. The
-- argument MODE is used only when a file is created, but it doesn't
-- hurt to supply the argument in any case.
--
-- The FLAGS argument controls how the file is to be opened. This is
-- a bit mask; you create the value by the bitwise OR of the
-- appropriate parameters (using the `|' operator in C). *Note File
-- Status Flags::, for the parameters available.
--
-- The normal return value from `open' is a non-negative integer file
-- descriptor. In the case of an error, a value of -1 is returned
-- instead. In addition to the usual file name errors (*note File
-- Name Errors::), the following `errno' error conditions are defined
-- for this function:
--
-- `EACCES'
-- The file exists but is not readable/writable as requested by
-- the FLAGS argument, the file does not exist and the directory
-- is unwritable so it cannot be created.
--
-- `EEXIST'
-- Both `O_CREAT' and `O_EXCL' are set, and the named file
-- already exists.
--
-- `EINTR'
-- The `open' operation was interrupted by a signal. *Note
-- Interrupted Primitives::.
--
-- `EISDIR'
-- The FLAGS argument specified write access, and the file is a
-- directory.
--
-- `EMFILE'
-- The process has too many files open. The maximum number of
-- file descriptors is controlled by the `RLIMIT_NOFILE'
-- resource limit; *note Limits on Resources::.
--
-- `ENFILE'
-- The entire system, or perhaps the file system which contains
-- the directory, cannot support any additional open files at
-- the moment. (This problem cannot happen on the GNU system.)
--
-- `ENOENT'
-- The named file does not exist, and `O_CREAT' is not specified.
--
-- `ENOSPC'
-- The directory or file system that would contain the new file
-- cannot be extended, because there is no disk space left.
--
-- `ENXIO'
-- `O_NONBLOCK' and `O_WRONLY' are both set in the FLAGS
-- argument, the file named by FILENAME is a FIFO (*note Pipes
-- and FIFOs::), and no process has the file open for reading.
--
-- `EROFS'
-- The file resides on a read-only file system and any of
-- `O_WRONLY', `O_RDWR', and `O_TRUNC' are set in the FLAGS
-- argument, or `O_CREAT' is set and the file does not already
-- exist.
--
-- If on a 32 bit machine the sources are translated with
-- `_FILE_OFFSET_BITS == 64' the function `open' returns a file
-- descriptor opened in the large file mode which enables the file
-- handling functions to use files up to 2^63 bytes in size and
-- offset from -2^63 to 2^63. This happens transparently for the user
-- since all of the lowlevel file handling functions are equally
-- replaced.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `open' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `open' should be protected using cancellation handlers.
--
-- The `open' function is the underlying primitive for the `fopen'
-- and `freopen' functions, that create streams.
--
-- - Function: int open64 (const char *FILENAME, int FLAGS[, mode_t MODE])
-- This function is similar to `open'. It returns a file descriptor
-- which can be used to access the file named by FILENAME. The only
-- difference is that on 32 bit systems the file is opened in the
-- large file mode. I.e., file length and file offsets can exceed 31
-- bits.
--
-- When the sources are translated with `_FILE_OFFSET_BITS == 64' this
-- function is actually available under the name `open'. I.e., the
-- new, extended API using 64 bit file sizes and offsets transparently
-- replaces the old API.
--
-- - Obsolete function: int creat (const char *FILENAME, mode_t MODE)
-- This function is obsolete. The call:
--
-- creat (FILENAME, MODE)
--
-- is equivalent to:
--
-- open (FILENAME, O_WRONLY | O_CREAT | O_TRUNC, MODE)
--
-- If on a 32 bit machine the sources are translated with
-- `_FILE_OFFSET_BITS == 64' the function `creat' returns a file
-- descriptor opened in the large file mode which enables the file
-- handling functions to use files up to 2^63 in size and offset from
-- -2^63 to 2^63. This happens transparently for the user since all
-- of the lowlevel file handling functions are equally replaced.
--
-- - Obsolete function: int creat64 (const char *FILENAME, mode_t MODE)
-- This function is similar to `creat'. It returns a file descriptor
-- which can be used to access the file named by FILENAME. The only
-- the difference is that on 32 bit systems the file is opened in the
-- large file mode. I.e., file length and file offsets can exceed 31
-- bits.
--
-- To use this file descriptor one must not use the normal operations
-- but instead the counterparts named `*64', e.g., `read64'.
--
-- When the sources are translated with `_FILE_OFFSET_BITS == 64' this
-- function is actually available under the name `open'. I.e., the
-- new, extended API using 64 bit file sizes and offsets transparently
-- replaces the old API.
--
-- - Function: int close (int FILEDES)
-- The function `close' closes the file descriptor FILEDES. Closing
-- a file has the following consequences:
--
-- * The file descriptor is deallocated.
--
-- * Any record locks owned by the process on the file are
-- unlocked.
--
-- * When all file descriptors associated with a pipe or FIFO have
-- been closed, any unread data is discarded.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `close' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this, calls to
-- `close' should be protected using cancellation handlers.
--
-- The normal return value from `close' is 0; a value of -1 is
-- returned in case of failure. The following `errno' error
-- conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINTR'
-- The `close' call was interrupted by a signal. *Note
-- Interrupted Primitives::. Here is an example of how to
-- handle `EINTR' properly:
--
-- TEMP_FAILURE_RETRY (close (desc));
--
-- `ENOSPC'
-- `EIO'
-- `EDQUOT'
-- When the file is accessed by NFS, these errors from `write'
-- can sometimes not be detected until `close'. *Note I/O
-- Primitives::, for details on their meaning.
--
-- Please note that there is _no_ separate `close64' function. This
-- is not necessary since this function does not determine nor depend
-- on the mode of the file. The kernel which performs the `close'
-- operation knows which mode the descriptor is used for and can
-- handle this situation.
--
-- To close a stream, call `fclose' (*note Closing Streams::) instead
--of trying to close its underlying file descriptor with `close'. This
--flushes any buffered output and updates the stream object to indicate
--that it is closed.
--
--
--File: libc.info, Node: I/O Primitives, Next: File Position Primitive, Prev: Opening and Closing Files, Up: Low-Level I/O
--
--Input and Output Primitives
--===========================
--
-- This section describes the functions for performing primitive input
--and output operations on file descriptors: `read', `write', and
--`lseek'. These functions are declared in the header file `unistd.h'.
--
-- - Data Type: ssize_t
-- This data type is used to represent the sizes of blocks that can be
-- read or written in a single operation. It is similar to `size_t',
-- but must be a signed type.
--
-- - Function: ssize_t read (int FILEDES, void *BUFFER, size_t SIZE)
-- The `read' function reads up to SIZE bytes from the file with
-- descriptor FILEDES, storing the results in the BUFFER. (This is
-- not necessarily a character string, and no terminating null
-- character is added.)
--
-- The return value is the number of bytes actually read. This might
-- be less than SIZE; for example, if there aren't that many bytes
-- left in the file or if there aren't that many bytes immediately
-- available. The exact behavior depends on what kind of file it is.
-- Note that reading less than SIZE bytes is not an error.
--
-- A value of zero indicates end-of-file (except if the value of the
-- SIZE argument is also zero). This is not considered an error. If
-- you keep calling `read' while at end-of-file, it will keep
-- returning zero and doing nothing else.
--
-- If `read' returns at least one character, there is no way you can
-- tell whether end-of-file was reached. But if you did reach the
-- end, the next read will return zero.
--
-- In case of an error, `read' returns -1. The following `errno'
-- error conditions are defined for this function:
--
-- `EAGAIN'
-- Normally, when no input is immediately available, `read'
-- waits for some input. But if the `O_NONBLOCK' flag is set
-- for the file (*note File Status Flags::), `read' returns
-- immediately without reading any data, and reports this error.
--
-- *Compatibility Note:* Most versions of BSD Unix use a
-- different error code for this: `EWOULDBLOCK'. In the GNU
-- library, `EWOULDBLOCK' is an alias for `EAGAIN', so it
-- doesn't matter which name you use.
--
-- On some systems, reading a large amount of data from a
-- character special file can also fail with `EAGAIN' if the
-- kernel cannot find enough physical memory to lock down the
-- user's pages. This is limited to devices that transfer with
-- direct memory access into the user's memory, which means it
-- does not include terminals, since they always use separate
-- buffers inside the kernel. This problem never happens in the
-- GNU system.
--
-- Any condition that could result in `EAGAIN' can instead
-- result in a successful `read' which returns fewer bytes than
-- requested. Calling `read' again immediately would result in
-- `EAGAIN'.
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor, or is
-- not open for reading.
--
-- `EINTR'
-- `read' was interrupted by a signal while it was waiting for
-- input. *Note Interrupted Primitives::. A signal will not
-- necessary cause `read' to return `EINTR'; it may instead
-- result in a successful `read' which returns fewer bytes than
-- requested.
--
-- `EIO'
-- For many devices, and for disk files, this error code
-- indicates a hardware error.
--
-- `EIO' also occurs when a background process tries to read
-- from the controlling terminal, and the normal action of
-- stopping the process by sending it a `SIGTTIN' signal isn't
-- working. This might happen if the signal is being blocked or
-- ignored, or because the process group is orphaned. *Note Job
-- Control::, for more information about job control, and *Note
-- Signal Handling::, for information about signals.
--
-- Please note that there is no function named `read64'. This is not
-- necessary since this function does not directly modify or handle
-- the possibly wide file offset. Since the kernel handles this state
-- internally, the `read' function can be used for all cases.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `read' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this, calls to
-- `read' should be protected using cancellation handlers.
--
-- The `read' function is the underlying primitive for all of the
-- functions that read from streams, such as `fgetc'.
--
-- - Function: ssize_t pread (int FILEDES, void *BUFFER, size_t SIZE,
-- off_t OFFSET)
-- The `pread' function is similar to the `read' function. The first
-- three arguments are identical, and the return values and error
-- codes also correspond.
--
-- The difference is the fourth argument and its handling. The data
-- block is not read from the current position of the file descriptor
-- `filedes'. Instead the data is read from the file starting at
-- position OFFSET. The position of the file descriptor itself is
-- not affected by the operation. The value is the same as before
-- the call.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' the
-- `pread' function is in fact `pread64' and the type `off_t' has 64
-- bits, which makes it possible to handle files up to 2^63 bytes in
-- length.
--
-- The return value of `pread' describes the number of bytes read.
-- In the error case it returns -1 like `read' does and the error
-- codes are also the same, with these additions:
--
-- `EINVAL'
-- The value given for OFFSET is negative and therefore illegal.
--
-- `ESPIPE'
-- The file descriptor FILEDES is associate with a pipe or a
-- FIFO and this device does not allow positioning of the file
-- pointer.
--
-- The function is an extension defined in the Unix Single
-- Specification version 2.
--
-- - Function: ssize_t pread64 (int FILEDES, void *BUFFER, size_t SIZE,
-- off64_t OFFSET)
-- This function is similar to the `pread' function. The difference
-- is that the OFFSET parameter is of type `off64_t' instead of
-- `off_t' which makes it possible on 32 bit machines to address
-- files larger than 2^31 bytes and up to 2^63 bytes. The file
-- descriptor `filedes' must be opened using `open64' since otherwise
-- the large offsets possible with `off64_t' will lead to errors with
-- a descriptor in small file mode.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' on
-- a 32 bit machine this function is actually available under the name
-- `pread' and so transparently replaces the 32 bit interface.
--
-- - Function: ssize_t write (int FILEDES, const void *BUFFER, size_t
-- SIZE)
-- The `write' function writes up to SIZE bytes from BUFFER to the
-- file with descriptor FILEDES. The data in BUFFER is not
-- necessarily a character string and a null character is output like
-- any other character.
--
-- The return value is the number of bytes actually written. This
-- may be SIZE, but can always be smaller. Your program should
-- always call `write' in a loop, iterating until all the data is
-- written.
--
-- Once `write' returns, the data is enqueued to be written and can be
-- read back right away, but it is not necessarily written out to
-- permanent storage immediately. You can use `fsync' when you need
-- to be sure your data has been permanently stored before
-- continuing. (It is more efficient for the system to batch up
-- consecutive writes and do them all at once when convenient.
-- Normally they will always be written to disk within a minute or
-- less.) Modern systems provide another function `fdatasync' which
-- guarantees integrity only for the file data and is therefore
-- faster. You can use the `O_FSYNC' open mode to make `write' always
-- store the data to disk before returning; *note Operating Modes::.
--
-- In the case of an error, `write' returns -1. The following
-- `errno' error conditions are defined for this function:
--
-- `EAGAIN'
-- Normally, `write' blocks until the write operation is
-- complete. But if the `O_NONBLOCK' flag is set for the file
-- (*note Control Operations::), it returns immediately without
-- writing any data and reports this error. An example of a
-- situation that might cause the process to block on output is
-- writing to a terminal device that supports flow control,
-- where output has been suspended by receipt of a STOP
-- character.
--
-- *Compatibility Note:* Most versions of BSD Unix use a
-- different error code for this: `EWOULDBLOCK'. In the GNU
-- library, `EWOULDBLOCK' is an alias for `EAGAIN', so it
-- doesn't matter which name you use.
--
-- On some systems, writing a large amount of data from a
-- character special file can also fail with `EAGAIN' if the
-- kernel cannot find enough physical memory to lock down the
-- user's pages. This is limited to devices that transfer with
-- direct memory access into the user's memory, which means it
-- does not include terminals, since they always use separate
-- buffers inside the kernel. This problem does not arise in the
-- GNU system.
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor, or is
-- not open for writing.
--
-- `EFBIG'
-- The size of the file would become larger than the
-- implementation can support.
--
-- `EINTR'
-- The `write' operation was interrupted by a signal while it was
-- blocked waiting for completion. A signal will not
-- necessarily cause `write' to return `EINTR'; it may instead
-- result in a successful `write' which writes fewer bytes than
-- requested. *Note Interrupted Primitives::.
--
-- `EIO'
-- For many devices, and for disk files, this error code
-- indicates a hardware error.
--
-- `ENOSPC'
-- The device containing the file is full.
--
-- `EPIPE'
-- This error is returned when you try to write to a pipe or
-- FIFO that isn't open for reading by any process. When this
-- happens, a `SIGPIPE' signal is also sent to the process; see
-- *Note Signal Handling::.
--
-- Unless you have arranged to prevent `EINTR' failures, you should
-- check `errno' after each failing call to `write', and if the error
-- was `EINTR', you should simply repeat the call. *Note Interrupted
-- Primitives::. The easy way to do this is with the macro
-- `TEMP_FAILURE_RETRY', as follows:
--
-- nbytes = TEMP_FAILURE_RETRY (write (desc, buffer, count));
--
-- Please note that there is no function named `write64'. This is not
-- necessary since this function does not directly modify or handle
-- the possibly wide file offset. Since the kernel handles this state
-- internally the `write' function can be used for all cases.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `write' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this, calls to
-- `write' should be protected using cancellation handlers.
--
-- The `write' function is the underlying primitive for all of the
-- functions that write to streams, such as `fputc'.
--
-- - Function: ssize_t pwrite (int FILEDES, const void *BUFFER, size_t
-- SIZE, off_t OFFSET)
-- The `pwrite' function is similar to the `write' function. The
-- first three arguments are identical, and the return values and
-- error codes also correspond.
--
-- The difference is the fourth argument and its handling. The data
-- block is not written to the current position of the file descriptor
-- `filedes'. Instead the data is written to the file starting at
-- position OFFSET. The position of the file descriptor itself is
-- not affected by the operation. The value is the same as before
-- the call.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' the
-- `pwrite' function is in fact `pwrite64' and the type `off_t' has
-- 64 bits, which makes it possible to handle files up to 2^63 bytes
-- in length.
--
-- The return value of `pwrite' describes the number of written bytes.
-- In the error case it returns -1 like `write' does and the error
-- codes are also the same, with these additions:
--
-- `EINVAL'
-- The value given for OFFSET is negative and therefore illegal.
--
-- `ESPIPE'
-- The file descriptor FILEDES is associated with a pipe or a
-- FIFO and this device does not allow positioning of the file
-- pointer.
--
-- The function is an extension defined in the Unix Single
-- Specification version 2.
--
-- - Function: ssize_t pwrite64 (int FILEDES, const void *BUFFER, size_t
-- SIZE, off64_t OFFSET)
-- This function is similar to the `pwrite' function. The difference
-- is that the OFFSET parameter is of type `off64_t' instead of
-- `off_t' which makes it possible on 32 bit machines to address
-- files larger than 2^31 bytes and up to 2^63 bytes. The file
-- descriptor `filedes' must be opened using `open64' since otherwise
-- the large offsets possible with `off64_t' will lead to errors with
-- a descriptor in small file mode.
--
-- When the source file is compiled using `_FILE_OFFSET_BITS == 64'
-- on a 32 bit machine this function is actually available under the
-- name `pwrite' and so transparently replaces the 32 bit interface.
--
--
--File: libc.info, Node: File Position Primitive, Next: Descriptors and Streams, Prev: I/O Primitives, Up: Low-Level I/O
--
--Setting the File Position of a Descriptor
--=========================================
--
-- Just as you can set the file position of a stream with `fseek', you
--can set the file position of a descriptor with `lseek'. This specifies
--the position in the file for the next `read' or `write' operation.
--*Note File Positioning::, for more information on the file position and
--what it means.
--
-- To read the current file position value from a descriptor, use
--`lseek (DESC, 0, SEEK_CUR)'.
--
-- - Function: off_t lseek (int FILEDES, off_t OFFSET, int WHENCE)
-- The `lseek' function is used to change the file position of the
-- file with descriptor FILEDES.
--
-- The WHENCE argument specifies how the OFFSET should be
-- interpreted, in the same way as for the `fseek' function, and it
-- must be one of the symbolic constants `SEEK_SET', `SEEK_CUR', or
-- `SEEK_END'.
--
-- `SEEK_SET'
-- Specifies that WHENCE is a count of characters from the
-- beginning of the file.
--
-- `SEEK_CUR'
-- Specifies that WHENCE is a count of characters from the
-- current file position. This count may be positive or
-- negative.
--
-- `SEEK_END'
-- Specifies that WHENCE is a count of characters from the end of
-- the file. A negative count specifies a position within the
-- current extent of the file; a positive count specifies a
-- position past the current end. If you set the position past
-- the current end, and actually write data, you will extend the
-- file with zeros up to that position.
--
-- The return value from `lseek' is normally the resulting file
-- position, measured in bytes from the beginning of the file. You
-- can use this feature together with `SEEK_CUR' to read the current
-- file position.
--
-- If you want to append to the file, setting the file position to the
-- current end of file with `SEEK_END' is not sufficient. Another
-- process may write more data after you seek but before you write,
-- extending the file so the position you write onto clobbers their
-- data. Instead, use the `O_APPEND' operating mode; *note Operating
-- Modes::.
--
-- You can set the file position past the current end of the file.
-- This does not by itself make the file longer; `lseek' never
-- changes the file. But subsequent output at that position will
-- extend the file. Characters between the previous end of file and
-- the new position are filled with zeros. Extending the file in
-- this way can create a "hole": the blocks of zeros are not actually
-- allocated on disk, so the file takes up less space than it appears
-- to; it is then called a "sparse file".
--
-- If the file position cannot be changed, or the operation is in
-- some way invalid, `lseek' returns a value of -1. The following
-- `errno' error conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES is not a valid file descriptor.
--
-- `EINVAL'
-- The WHENCE argument value is not valid, or the resulting file
-- offset is not valid. A file offset is invalid.
--
-- `ESPIPE'
-- The FILEDES corresponds to an object that cannot be
-- positioned, such as a pipe, FIFO or terminal device.
-- (POSIX.1 specifies this error only for pipes and FIFOs, but
-- in the GNU system, you always get `ESPIPE' if the object is
-- not seekable.)
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' the
-- `lseek' function is in fact `lseek64' and the type `off_t' has 64
-- bits which makes it possible to handle files up to 2^63 bytes in
-- length.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `lseek' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `lseek' should be protected using cancellation handlers.
--
-- The `lseek' function is the underlying primitive for the `fseek',
-- `fseeko', `ftell', `ftello' and `rewind' functions, which operate
-- on streams instead of file descriptors.
--
-- - Function: off64_t lseek64 (int FILEDES, off64_t OFFSET, int WHENCE)
-- This function is similar to the `lseek' function. The difference
-- is that the OFFSET parameter is of type `off64_t' instead of
-- `off_t' which makes it possible on 32 bit machines to address
-- files larger than 2^31 bytes and up to 2^63 bytes. The file
-- descriptor `filedes' must be opened using `open64' since otherwise
-- the large offsets possible with `off64_t' will lead to errors with
-- a descriptor in small file mode.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' on
-- a 32 bits machine this function is actually available under the
-- name `lseek' and so transparently replaces the 32 bit interface.
--
-- You can have multiple descriptors for the same file if you open the
--file more than once, or if you duplicate a descriptor with `dup'.
--Descriptors that come from separate calls to `open' have independent
--file positions; using `lseek' on one descriptor has no effect on the
--other. For example,
--
-- {
-- int d1, d2;
-- char buf[4];
-- d1 = open ("foo", O_RDONLY);
-- d2 = open ("foo", O_RDONLY);
-- lseek (d1, 1024, SEEK_SET);
-- read (d2, buf, 4);
-- }
--
--will read the first four characters of the file `foo'. (The
--error-checking code necessary for a real program has been omitted here
--for brevity.)
--
-- By contrast, descriptors made by duplication share a common file
--position with the original descriptor that was duplicated. Anything
--which alters the file position of one of the duplicates, including
--reading or writing data, affects all of them alike. Thus, for example,
--
-- {
-- int d1, d2, d3;
-- char buf1[4], buf2[4];
-- d1 = open ("foo", O_RDONLY);
-- d2 = dup (d1);
-- d3 = dup (d2);
-- lseek (d3, 1024, SEEK_SET);
-- read (d1, buf1, 4);
-- read (d2, buf2, 4);
-- }
--
--will read four characters starting with the 1024'th character of `foo',
--and then four more characters starting with the 1028'th character.
--
-- - Data Type: off_t
-- This is an arithmetic data type used to represent file sizes. In
-- the GNU system, this is equivalent to `fpos_t' or `long int'.
--
-- If the source is compiled with `_FILE_OFFSET_BITS == 64' this type
-- is transparently replaced by `off64_t'.
--
-- - Data Type: off64_t
-- This type is used similar to `off_t'. The difference is that even
-- on 32 bit machines, where the `off_t' type would have 32 bits,
-- `off64_t' has 64 bits and so is able to address files up to 2^63
-- bytes in length.
--
-- When compiling with `_FILE_OFFSET_BITS == 64' this type is
-- available under the name `off_t'.
--
-- These aliases for the `SEEK_...' constants exist for the sake of
--compatibility with older BSD systems. They are defined in two
--different header files: `fcntl.h' and `sys/file.h'.
--
--`L_SET'
-- An alias for `SEEK_SET'.
--
--`L_INCR'
-- An alias for `SEEK_CUR'.
--
--`L_XTND'
-- An alias for `SEEK_END'.
--
--
--File: libc.info, Node: Descriptors and Streams, Next: Stream/Descriptor Precautions, Prev: File Position Primitive, Up: Low-Level I/O
--
--Descriptors and Streams
--=======================
--
-- Given an open file descriptor, you can create a stream for it with
--the `fdopen' function. You can get the underlying file descriptor for
--an existing stream with the `fileno' function. These functions are
--declared in the header file `stdio.h'.
--
-- - Function: FILE * fdopen (int FILEDES, const char *OPENTYPE)
-- The `fdopen' function returns a new stream for the file descriptor
-- FILEDES.
--
-- The OPENTYPE argument is interpreted in the same way as for the
-- `fopen' function (*note Opening Streams::), except that the `b'
-- option is not permitted; this is because GNU makes no distinction
-- between text and binary files. Also, `"w"' and `"w+"' do not
-- cause truncation of the file; these have an effect only when
-- opening a file, and in this case the file has already been opened.
-- You must make sure that the OPENTYPE argument matches the actual
-- mode of the open file descriptor.
--
-- The return value is the new stream. If the stream cannot be
-- created (for example, if the modes for the file indicated by the
-- file descriptor do not permit the access specified by the OPENTYPE
-- argument), a null pointer is returned instead.
--
-- In some other systems, `fdopen' may fail to detect that the modes
-- for file descriptor do not permit the access specified by
-- `opentype'. The GNU C library always checks for this.
--
-- For an example showing the use of the `fdopen' function, see *Note
--Creating a Pipe::.
--
-- - Function: int fileno (FILE *STREAM)
-- This function returns the file descriptor associated with the
-- stream STREAM. If an error is detected (for example, if the STREAM
-- is not valid) or if STREAM does not do I/O to a file, `fileno'
-- returns -1.
--
-- - Function: int fileno_unlocked (FILE *STREAM)
-- The `fileno_unlocked' function is equivalent to the `fileno'
-- function except that it does not implicitly lock the stream if the
-- state is `FSETLOCKING_INTERNAL'.
--
-- This function is a GNU extension.
--
-- There are also symbolic constants defined in `unistd.h' for the file
--descriptors belonging to the standard streams `stdin', `stdout', and
--`stderr'; see *Note Standard Streams::.
--
--`STDIN_FILENO'
-- This macro has value `0', which is the file descriptor for
-- standard input.
--
--`STDOUT_FILENO'
-- This macro has value `1', which is the file descriptor for
-- standard output.
--
--`STDERR_FILENO'
-- This macro has value `2', which is the file descriptor for
-- standard error output.
--
--
--File: libc.info, Node: Stream/Descriptor Precautions, Next: Scatter-Gather, Prev: Descriptors and Streams, Up: Low-Level I/O
--
--Dangers of Mixing Streams and Descriptors
--=========================================
--
-- You can have multiple file descriptors and streams (let's call both
--streams and descriptors "channels" for short) connected to the same
--file, but you must take care to avoid confusion between channels. There
--are two cases to consider: "linked" channels that share a single file
--position value, and "independent" channels that have their own file
--positions.
--
-- It's best to use just one channel in your program for actual data
--transfer to any given file, except when all the access is for input.
--For example, if you open a pipe (something you can only do at the file
--descriptor level), either do all I/O with the descriptor, or construct a
--stream from the descriptor with `fdopen' and then do all I/O with the
--stream.
--
--* Menu:
--
--* Linked Channels:: Dealing with channels sharing a file position.
--* Independent Channels:: Dealing with separately opened, unlinked channels.
--* Cleaning Streams:: Cleaning a stream makes it safe to use
-- another channel.
--
--
--File: libc.info, Node: Linked Channels, Next: Independent Channels, Up: Stream/Descriptor Precautions
--
--Linked Channels
-----------------
--
-- Channels that come from a single opening share the same file
--position; we call them "linked" channels. Linked channels result when
--you make a stream from a descriptor using `fdopen', when you get a
--descriptor from a stream with `fileno', when you copy a descriptor with
--`dup' or `dup2', and when descriptors are inherited during `fork'. For
--files that don't support random access, such as terminals and pipes,
--_all_ channels are effectively linked. On random-access files, all
--append-type output streams are effectively linked to each other.
--
-- If you have been using a stream for I/O (or have just opened the
--stream), and you want to do I/O using another channel (either a stream
--or a descriptor) that is linked to it, you must first "clean up" the
--stream that you have been using. *Note Cleaning Streams::.
--
-- Terminating a process, or executing a new program in the process,
--destroys all the streams in the process. If descriptors linked to these
--streams persist in other processes, their file positions become
--undefined as a result. To prevent this, you must clean up the streams
--before destroying them.
--
--
--File: libc.info, Node: Independent Channels, Next: Cleaning Streams, Prev: Linked Channels, Up: Stream/Descriptor Precautions
--
--Independent Channels
----------------------
--
-- When you open channels (streams or descriptors) separately on a
--seekable file, each channel has its own file position. These are called
--"independent channels".
--
-- The system handles each channel independently. Most of the time,
--this is quite predictable and natural (especially for input): each
--channel can read or write sequentially at its own place in the file.
--However, if some of the channels are streams, you must take these
--precautions:
--
-- * You should clean an output stream after use, before doing anything
-- else that might read or write from the same part of the file.
--
-- * You should clean an input stream before reading data that may have
-- been modified using an independent channel. Otherwise, you might
-- read obsolete data that had been in the stream's buffer.
--
-- If you do output to one channel at the end of the file, this will
--certainly leave the other independent channels positioned somewhere
--before the new end. You cannot reliably set their file positions to the
--new end of file before writing, because the file can always be extended
--by another process between when you set the file position and when you
--write the data. Instead, use an append-type descriptor or stream; they
--always output at the current end of the file. In order to make the
--end-of-file position accurate, you must clean the output channel you
--were using, if it is a stream.
--
-- It's impossible for two channels to have separate file pointers for a
--file that doesn't support random access. Thus, channels for reading or
--writing such files are always linked, never independent. Append-type
--channels are also always linked. For these channels, follow the rules
--for linked channels; see *Note Linked Channels::.
--
--
--File: libc.info, Node: Cleaning Streams, Prev: Independent Channels, Up: Stream/Descriptor Precautions
--
--Cleaning Streams
------------------
--
-- On the GNU system, you can clean up any stream with `fclean':
--
-- - Function: int fclean (FILE *STREAM)
-- Clean up the stream STREAM so that its buffer is empty. If STREAM
-- is doing output, force it out. If STREAM is doing input, give the
-- data in the buffer back to the system, arranging to reread it.
--
-- On other systems, you can use `fflush' to clean a stream in most
--cases.
--
-- You can skip the `fclean' or `fflush' if you know the stream is
--already clean. A stream is clean whenever its buffer is empty. For
--example, an unbuffered stream is always clean. An input stream that is
--at end-of-file is clean. A line-buffered stream is clean when the last
--character output was a newline. However, a just-opened input stream
--might not be clean, as its input buffer might not be empty.
--
-- There is one case in which cleaning a stream is impossible on most
--systems. This is when the stream is doing input from a file that is not
--random-access. Such streams typically read ahead, and when the file is
--not random access, there is no way to give back the excess data already
--read. When an input stream reads from a random-access file, `fflush'
--does clean the stream, but leaves the file pointer at an unpredictable
--place; you must set the file pointer before doing any further I/O. On
--the GNU system, using `fclean' avoids both of these problems.
--
-- Closing an output-only stream also does `fflush', so this is a valid
--way of cleaning an output stream. On the GNU system, closing an input
--stream does `fclean'.
--
-- You need not clean a stream before using its descriptor for control
--operations such as setting terminal modes; these operations don't affect
--the file position and are not affected by it. You can use any
--descriptor for these operations, and all channels are affected
--simultaneously. However, text already "output" to a stream but still
--buffered by the stream will be subject to the new terminal modes when
--subsequently flushed. To make sure "past" output is covered by the
--terminal settings that were in effect at the time, flush the output
--streams for that terminal before setting the modes. *Note Terminal
--Modes::.
--
--
--File: libc.info, Node: Scatter-Gather, Next: Memory-mapped I/O, Prev: Stream/Descriptor Precautions, Up: Low-Level I/O
--
--Fast Scatter-Gather I/O
--=======================
--
-- Some applications may need to read or write data to multiple buffers,
--which are separated in memory. Although this can be done easily enough
--with multiple calls to `read' and `write', it is inefficient because
--there is overhead associated with each kernel call.
--
-- Instead, many platforms provide special high-speed primitives to
--perform these "scatter-gather" operations in a single kernel call. The
--GNU C library will provide an emulation on any system that lacks these
--primitives, so they are not a portability threat. They are defined in
--`sys/uio.h'.
--
-- These functions are controlled with arrays of `iovec' structures,
--which describe the location and size of each buffer.
--
-- - Data Type: struct iovec
-- The `iovec' structure describes a buffer. It contains two fields:
--
-- `void *iov_base'
-- Contains the address of a buffer.
--
-- `size_t iov_len'
-- Contains the length of the buffer.
--
--
-- - Function: ssize_t readv (int FILEDES, const struct iovec *VECTOR,
-- int COUNT)
-- The `readv' function reads data from FILEDES and scatters it into
-- the buffers described in VECTOR, which is taken to be COUNT
-- structures long. As each buffer is filled, data is sent to the
-- next.
--
-- Note that `readv' is not guaranteed to fill all the buffers. It
-- may stop at any point, for the same reasons `read' would.
--
-- The return value is a count of bytes (_not_ buffers) read, 0
-- indicating end-of-file, or -1 indicating an error. The possible
-- errors are the same as in `read'.
--
--
-- - Function: ssize_t writev (int FILEDES, const struct iovec *VECTOR,
-- int COUNT)
-- The `writev' function gathers data from the buffers described in
-- VECTOR, which is taken to be COUNT structures long, and writes
-- them to `filedes'. As each buffer is written, it moves on to the
-- next.
--
-- Like `readv', `writev' may stop midstream under the same
-- conditions `write' would.
--
-- The return value is a count of bytes written, or -1 indicating an
-- error. The possible errors are the same as in `write'.
--
--
-- Note that if the buffers are small (under about 1kB), high-level
--streams may be easier to use than these functions. However, `readv' and
--`writev' are more efficient when the individual buffers themselves (as
--opposed to the total output), are large. In that case, a high-level
--stream would not be able to cache the data effectively.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-22 glibc-2.3.2-200304020432/manual/libc.info-22
---- glibc-2.3.2/manual/libc.info-22 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-22 Thu Jan 1 01:00:00 1970
-@@ -1,1103 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Memory-mapped I/O, Next: Waiting for I/O, Prev: Scatter-Gather, Up: Low-Level I/O
--
--Memory-mapped I/O
--=================
--
-- On modern operating systems, it is possible to "mmap" (pronounced
--"em-map") a file to a region of memory. When this is done, the file can
--be accessed just like an array in the program.
--
-- This is more efficient than `read' or `write', as only the regions
--of the file that a program actually accesses are loaded. Accesses to
--not-yet-loaded parts of the mmapped region are handled in the same way
--as swapped out pages.
--
-- Since mmapped pages can be stored back to their file when physical
--memory is low, it is possible to mmap files orders of magnitude larger
--than both the physical memory _and_ swap space. The only limit is
--address space. The theoretical limit is 4GB on a 32-bit machine -
--however, the actual limit will be smaller since some areas will be
--reserved for other purposes. If the LFS interface is used the file size
--on 32-bit systems is not limited to 2GB (offsets are signed which
--reduces the addressable area of 4GB by half); the full 64-bit are
--available.
--
-- Memory mapping only works on entire pages of memory. Thus, addresses
--for mapping must be page-aligned, and length values will be rounded up.
--To determine the size of a page the machine uses one should use
--
-- size_t page_size = (size_t) sysconf (_SC_PAGESIZE);
--
--These functions are declared in `sys/mman.h'.
--
-- - Function: void * mmap (void *ADDRESS, size_t LENGTH,int PROTECT, int
-- FLAGS, int FILEDES, off_t OFFSET)
-- The `mmap' function creates a new mapping, connected to bytes
-- (OFFSET) to (OFFSET + LENGTH - 1) in the file open on FILEDES. A
-- new reference for the file specified by FILEDES is created, which
-- is not removed by closing the file.
--
-- ADDRESS gives a preferred starting address for the mapping.
-- `NULL' expresses no preference. Any previous mapping at that
-- address is automatically removed. The address you give may still be
-- changed, unless you use the `MAP_FIXED' flag.
--
-- PROTECT contains flags that control what kind of access is
-- permitted. They include `PROT_READ', `PROT_WRITE', and
-- `PROT_EXEC', which permit reading, writing, and execution,
-- respectively. Inappropriate access will cause a segfault (*note
-- Program Error Signals::).
--
-- Note that most hardware designs cannot support write permission
-- without read permission, and many do not distinguish read and
-- execute permission. Thus, you may receive wider permissions than
-- you ask for, and mappings of write-only files may be denied even
-- if you do not use `PROT_READ'.
--
-- FLAGS contains flags that control the nature of the map. One of
-- `MAP_SHARED' or `MAP_PRIVATE' must be specified.
--
-- They include:
--
-- `MAP_PRIVATE'
-- This specifies that writes to the region should never be
-- written back to the attached file. Instead, a copy is made
-- for the process, and the region will be swapped normally if
-- memory runs low. No other process will see the changes.
--
-- Since private mappings effectively revert to ordinary memory
-- when written to, you must have enough virtual memory for a
-- copy of the entire mmapped region if you use this mode with
-- `PROT_WRITE'.
--
-- `MAP_SHARED'
-- This specifies that writes to the region will be written back
-- to the file. Changes made will be shared immediately with
-- other processes mmaping the same file.
--
-- Note that actual writing may take place at any time. You
-- need to use `msync', described below, if it is important that
-- other processes using conventional I/O get a consistent view
-- of the file.
--
-- `MAP_FIXED'
-- This forces the system to use the exact mapping address
-- specified in ADDRESS and fail if it can't.
--
-- `MAP_ANONYMOUS'
-- `MAP_ANON'
-- This flag tells the system to create an anonymous mapping,
-- not connected to a file. FILEDES and OFF are ignored, and
-- the region is initialized with zeros.
--
-- Anonymous maps are used as the basic primitive to extend the
-- heap on some systems. They are also useful to share data
-- between multiple tasks without creating a file.
--
-- On some systems using private anonymous mmaps is more
-- efficient than using `malloc' for large blocks. This is not
-- an issue with the GNU C library, as the included `malloc'
-- automatically uses `mmap' where appropriate.
--
-- `mmap' returns the address of the new mapping, or -1 for an error.
--
-- Possible errors include:
--
-- `EINVAL'
-- Either ADDRESS was unusable, or inconsistent FLAGS were given.
--
-- `EACCES'
-- FILEDES was not open for the type of access specified in
-- PROTECT.
--
-- `ENOMEM'
-- Either there is not enough memory for the operation, or the
-- process is out of address space.
--
-- `ENODEV'
-- This file is of a type that doesn't support mapping.
--
-- `ENOEXEC'
-- The file is on a filesystem that doesn't support mapping.
--
--
-- - Function: void * mmap64 (void *ADDRESS, size_t LENGTH,int PROTECT,
-- int FLAGS, int FILEDES, off64_t OFFSET)
-- The `mmap64' function is equivalent to the `mmap' function but the
-- OFFSET parameter is of type `off64_t'. On 32-bit systems this
-- allows the file associated with the FILEDES descriptor to be
-- larger than 2GB. FILEDES must be a descriptor returned from a
-- call to `open64' or `fopen64' and `freopen64' where the descriptor
-- is retrieved with `fileno'.
--
-- When the sources are translated with `_FILE_OFFSET_BITS == 64' this
-- function is actually available under the name `mmap'. I.e., the
-- new, extended API using 64 bit file sizes and offsets transparently
-- replaces the old API.
--
-- - Function: int munmap (void *ADDR, size_t LENGTH)
-- `munmap' removes any memory maps from (ADDR) to (ADDR + LENGTH).
-- LENGTH should be the length of the mapping.
--
-- It is safe to unmap multiple mappings in one command, or include
-- unmapped space in the range. It is also possible to unmap only
-- part of an existing mapping. However, only entire pages can be
-- removed. If LENGTH is not an even number of pages, it will be
-- rounded up.
--
-- It returns 0 for success and -1 for an error.
--
-- One error is possible:
--
-- `EINVAL'
-- The memory range given was outside the user mmap range or
-- wasn't page aligned.
--
--
-- - Function: int msync (void *ADDRESS, size_t LENGTH, int FLAGS)
-- When using shared mappings, the kernel can write the file at any
-- time before the mapping is removed. To be certain data has
-- actually been written to the file and will be accessible to
-- non-memory-mapped I/O, it is necessary to use this function.
--
-- It operates on the region ADDRESS to (ADDRESS + LENGTH). It may
-- be used on part of a mapping or multiple mappings, however the
-- region given should not contain any unmapped space.
--
-- FLAGS can contain some options:
--
-- `MS_SYNC'
-- This flag makes sure the data is actually written _to disk_.
-- Normally `msync' only makes sure that accesses to a file with
-- conventional I/O reflect the recent changes.
--
-- `MS_ASYNC'
-- This tells `msync' to begin the synchronization, but not to
-- wait for it to complete.
--
-- `msync' returns 0 for success and -1 for error. Errors include:
--
-- `EINVAL'
-- An invalid region was given, or the FLAGS were invalid.
--
-- `EFAULT'
-- There is no existing mapping in at least part of the given
-- region.
--
--
-- - Function: void * mremap (void *ADDRESS, size_t LENGTH, size_t
-- NEW_LENGTH, int FLAG)
-- This function can be used to change the size of an existing memory
-- area. ADDRESS and LENGTH must cover a region entirely mapped in
-- the same `mmap' statement. A new mapping with the same
-- characteristics will be returned with the length NEW_LENGTH.
--
-- One option is possible, `MREMAP_MAYMOVE'. If it is given in FLAGS,
-- the system may remove the existing mapping and create a new one of
-- the desired length in another location.
--
-- The address of the resulting mapping is returned, or -1. Possible
-- error codes include:
--
-- `EFAULT'
-- There is no existing mapping in at least part of the original
-- region, or the region covers two or more distinct mappings.
--
-- `EINVAL'
-- The address given is misaligned or inappropriate.
--
-- `EAGAIN'
-- The region has pages locked, and if extended it would exceed
-- the process's resource limit for locked pages. *Note Limits
-- on Resources::.
--
-- `ENOMEM'
-- The region is private writable, and insufficient virtual
-- memory is available to extend it. Also, this error will
-- occur if `MREMAP_MAYMOVE' is not given and the extension
-- would collide with another mapped region.
--
--
-- This function is only available on a few systems. Except for
--performing optional optimizations one should not rely on this function.
--
-- Not all file descriptors may be mapped. Sockets, pipes, and most
--devices only allow sequential access and do not fit into the mapping
--abstraction. In addition, some regular files may not be mmapable, and
--older kernels may not support mapping at all. Thus, programs using
--`mmap' should have a fallback method to use should it fail. *Note Mmap:
--(standards)Mmap.
--
-- - Function: int madvise (void *ADDR, size_t LENGTH, int ADVICE)
-- This function can be used to provide the system with ADVICE about
-- the intended usage patterns of the memory region starting at ADDR
-- and extending LENGTH bytes.
--
-- The valid BSD values for ADVICE are:
--
-- `MADV_NORMAL'
-- The region should receive no further special treatment.
--
-- `MADV_RANDOM'
-- The region will be accessed via random page references. The
-- kernel should page-in the minimal number of pages for each
-- page fault.
--
-- `MADV_SEQUENTIAL'
-- The region will be accessed via sequential page references.
-- This may cause the kernel to aggressively read-ahead,
-- expecting further sequential references after any page fault
-- within this region.
--
-- `MADV_WILLNEED'
-- The region will be needed. The pages within this region may
-- be pre-faulted in by the kernel.
--
-- `MADV_DONTNEED'
-- The region is no longer needed. The kernel may free these
-- pages, causing any changes to the pages to be lost, as well
-- as swapped out pages to be discarded.
--
-- The POSIX names are slightly different, but with the same meanings:
--
-- `POSIX_MADV_NORMAL'
-- This corresponds with BSD's `MADV_NORMAL'.
--
-- `POSIX_MADV_RANDOM'
-- This corresponds with BSD's `MADV_RANDOM'.
--
-- `POSIX_MADV_SEQUENTIAL'
-- This corresponds with BSD's `MADV_SEQUENTIAL'.
--
-- `POSIX_MADV_WILLNEED'
-- This corresponds with BSD's `MADV_WILLNEED'.
--
-- `POSIX_MADV_DONTNEED'
-- This corresponds with BSD's `MADV_DONTNEED'.
--
-- `msync' returns 0 for success and -1 for error. Errors include:
-- `EINVAL'
-- An invalid region was given, or the ADVICE was invalid.
--
-- `EFAULT'
-- There is no existing mapping in at least part of the given
-- region.
--
--
--
--File: libc.info, Node: Waiting for I/O, Next: Synchronizing I/O, Prev: Memory-mapped I/O, Up: Low-Level I/O
--
--Waiting for Input or Output
--===========================
--
-- Sometimes a program needs to accept input on multiple input channels
--whenever input arrives. For example, some workstations may have devices
--such as a digitizing tablet, function button box, or dial box that are
--connected via normal asynchronous serial interfaces; good user interface
--style requires responding immediately to input on any device. Another
--example is a program that acts as a server to several other processes
--via pipes or sockets.
--
-- You cannot normally use `read' for this purpose, because this blocks
--the program until input is available on one particular file descriptor;
--input on other channels won't wake it up. You could set nonblocking
--mode and poll each file descriptor in turn, but this is very
--inefficient.
--
-- A better solution is to use the `select' function. This blocks the
--program until input or output is ready on a specified set of file
--descriptors, or until a timer expires, whichever comes first. This
--facility is declared in the header file `sys/types.h'.
--
-- In the case of a server socket (*note Listening::), we say that
--"input" is available when there are pending connections that could be
--accepted (*note Accepting Connections::). `accept' for server sockets
--blocks and interacts with `select' just as `read' does for normal input.
--
-- The file descriptor sets for the `select' function are specified as
--`fd_set' objects. Here is the description of the data type and some
--macros for manipulating these objects.
--
-- - Data Type: fd_set
-- The `fd_set' data type represents file descriptor sets for the
-- `select' function. It is actually a bit array.
--
-- - Macro: int FD_SETSIZE
-- The value of this macro is the maximum number of file descriptors
-- that a `fd_set' object can hold information about. On systems
-- with a fixed maximum number, `FD_SETSIZE' is at least that number.
-- On some systems, including GNU, there is no absolute limit on the
-- number of descriptors open, but this macro still has a constant
-- value which controls the number of bits in an `fd_set'; if you get
-- a file descriptor with a value as high as `FD_SETSIZE', you cannot
-- put that descriptor into an `fd_set'.
--
-- - Macro: void FD_ZERO (fd_set *SET)
-- This macro initializes the file descriptor set SET to be the empty
-- set.
--
-- - Macro: void FD_SET (int FILEDES, fd_set *SET)
-- This macro adds FILEDES to the file descriptor set SET.
--
-- - Macro: void FD_CLR (int FILEDES, fd_set *SET)
-- This macro removes FILEDES from the file descriptor set SET.
--
-- - Macro: int FD_ISSET (int FILEDES, fd_set *SET)
-- This macro returns a nonzero value (true) if FILEDES is a member
-- of the file descriptor set SET, and zero (false) otherwise.
--
-- Next, here is the description of the `select' function itself.
--
-- - Function: int select (int NFDS, fd_set *READ-FDS, fd_set *WRITE-FDS,
-- fd_set *EXCEPT-FDS, struct timeval *TIMEOUT)
-- The `select' function blocks the calling process until there is
-- activity on any of the specified sets of file descriptors, or
-- until the timeout period has expired.
--
-- The file descriptors specified by the READ-FDS argument are
-- checked to see if they are ready for reading; the WRITE-FDS file
-- descriptors are checked to see if they are ready for writing; and
-- the EXCEPT-FDS file descriptors are checked for exceptional
-- conditions. You can pass a null pointer for any of these
-- arguments if you are not interested in checking for that kind of
-- condition.
--
-- A file descriptor is considered ready for reading if it is not at
-- end of file. A server socket is considered ready for reading if
-- there is a pending connection which can be accepted with `accept';
-- *note Accepting Connections::. A client socket is ready for
-- writing when its connection is fully established; *note
-- Connecting::.
--
-- "Exceptional conditions" does not mean errors--errors are reported
-- immediately when an erroneous system call is executed, and do not
-- constitute a state of the descriptor. Rather, they include
-- conditions such as the presence of an urgent message on a socket.
-- (*Note Sockets::, for information on urgent messages.)
--
-- The `select' function checks only the first NFDS file descriptors.
-- The usual thing is to pass `FD_SETSIZE' as the value of this
-- argument.
--
-- The TIMEOUT specifies the maximum time to wait. If you pass a
-- null pointer for this argument, it means to block indefinitely
-- until one of the file descriptors is ready. Otherwise, you should
-- provide the time in `struct timeval' format; see *Note
-- High-Resolution Calendar::. Specify zero as the time (a `struct
-- timeval' containing all zeros) if you want to find out which
-- descriptors are ready without waiting if none are ready.
--
-- The normal return value from `select' is the total number of ready
-- file descriptors in all of the sets. Each of the argument sets is
-- overwritten with information about the descriptors that are ready
-- for the corresponding operation. Thus, to see if a particular
-- descriptor DESC has input, use `FD_ISSET (DESC, READ-FDS)' after
-- `select' returns.
--
-- If `select' returns because the timeout period expires, it returns
-- a value of zero.
--
-- Any signal will cause `select' to return immediately. So if your
-- program uses signals, you can't rely on `select' to keep waiting
-- for the full time specified. If you want to be sure of waiting
-- for a particular amount of time, you must check for `EINTR' and
-- repeat the `select' with a newly calculated timeout based on the
-- current time. See the example below. See also *Note Interrupted
-- Primitives::.
--
-- If an error occurs, `select' returns `-1' and does not modify the
-- argument file descriptor sets. The following `errno' error
-- conditions are defined for this function:
--
-- `EBADF'
-- One of the file descriptor sets specified an invalid file
-- descriptor.
--
-- `EINTR'
-- The operation was interrupted by a signal. *Note Interrupted
-- Primitives::.
--
-- `EINVAL'
-- The TIMEOUT argument is invalid; one of the components is
-- negative or too large.
--
-- *Portability Note:* The `select' function is a BSD Unix feature.
--
-- Here is an example showing how you can use `select' to establish a
--timeout period for reading from a file descriptor. The `input_timeout'
--function blocks the calling process until input is available on the
--file descriptor, or until the timeout period expires.
--
-- #include <errno.h>
-- #include <stdio.h>
-- #include <unistd.h>
-- #include <sys/types.h>
-- #include <sys/time.h>
--
-- int
-- input_timeout (int filedes, unsigned int seconds)
-- {
-- fd_set set;
-- struct timeval timeout;
--
-- /* Initialize the file descriptor set. */
-- FD_ZERO (&set);
-- FD_SET (filedes, &set);
--
-- /* Initialize the timeout data structure. */
-- timeout.tv_sec = seconds;
-- timeout.tv_usec = 0;
--
-- /* `select' returns 0 if timeout, 1 if input available, -1 if error. */
-- return TEMP_FAILURE_RETRY (select (FD_SETSIZE,
-- &set, NULL, NULL,
-- &timeout));
-- }
--
-- int
-- main (void)
-- {
-- fprintf (stderr, "select returned %d.\n",
-- input_timeout (STDIN_FILENO, 5));
-- return 0;
-- }
--
-- There is another example showing the use of `select' to multiplex
--input from multiple sockets in *Note Server Example::.
--
--
--File: libc.info, Node: Synchronizing I/O, Next: Asynchronous I/O, Prev: Waiting for I/O, Up: Low-Level I/O
--
--Synchronizing I/O operations
--============================
--
-- In most modern operating systems, the normal I/O operations are not
--executed synchronously. I.e., even if a `write' system call returns,
--this does not mean the data is actually written to the media, e.g., the
--disk.
--
-- In situations where synchronization points are necessary, you can use
--special functions which ensure that all operations finish before they
--return.
--
-- - Function: int sync (void)
-- A call to this function will not return as long as there is data
-- which has not been written to the device. All dirty buffers in
-- the kernel will be written and so an overall consistent system can
-- be achieved (if no other process in parallel writes data).
--
-- A prototype for `sync' can be found in `unistd.h'.
--
-- The return value is zero to indicate no error.
--
-- Programs more often want to ensure that data written to a given file
--is committed, rather than all data in the system. For this, `sync' is
--overkill.
--
-- - Function: int fsync (int FILDES)
-- The `fsync' function can be used to make sure all data associated
-- with the open file FILDES is written to the device associated with
-- the descriptor. The function call does not return unless all
-- actions have finished.
--
-- A prototype for `fsync' can be found in `unistd.h'.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `fsync' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this, calls to
-- `fsync' should be protected using cancellation handlers.
--
-- The return value of the function is zero if no error occurred.
-- Otherwise it is -1 and the global variable ERRNO is set to the
-- following values:
-- `EBADF'
-- The descriptor FILDES is not valid.
--
-- `EINVAL'
-- No synchronization is possible since the system does not
-- implement this.
--
-- Sometimes it is not even necessary to write all data associated with
--a file descriptor. E.g., in database files which do not change in size
--it is enough to write all the file content data to the device.
--Meta-information, like the modification time etc., are not that
--important and leaving such information uncommitted does not prevent a
--successful recovering of the file in case of a problem.
--
-- - Function: int fdatasync (int FILDES)
-- When a call to the `fdatasync' function returns, it is ensured
-- that all of the file data is written to the device. For all
-- pending I/O operations, the parts guaranteeing data integrity
-- finished.
--
-- Not all systems implement the `fdatasync' operation. On systems
-- missing this functionality `fdatasync' is emulated by a call to
-- `fsync' since the performed actions are a superset of those
-- required by `fdatasync'.
--
-- The prototype for `fdatasync' is in `unistd.h'.
--
-- The return value of the function is zero if no error occurred.
-- Otherwise it is -1 and the global variable ERRNO is set to the
-- following values:
-- `EBADF'
-- The descriptor FILDES is not valid.
--
-- `EINVAL'
-- No synchronization is possible since the system does not
-- implement this.
--
--
--File: libc.info, Node: Asynchronous I/O, Next: Control Operations, Prev: Synchronizing I/O, Up: Low-Level I/O
--
--Perform I/O Operations in Parallel
--==================================
--
-- The POSIX.1b standard defines a new set of I/O operations which can
--significantly reduce the time an application spends waiting at I/O. The
--new functions allow a program to initiate one or more I/O operations and
--then immediately resume normal work while the I/O operations are
--executed in parallel. This functionality is available if the
--`unistd.h' file defines the symbol `_POSIX_ASYNCHRONOUS_IO'.
--
-- These functions are part of the library with realtime functions named
--`librt'. They are not actually part of the `libc' binary. The
--implementation of these functions can be done using support in the
--kernel (if available) or using an implementation based on threads at
--userlevel. In the latter case it might be necessary to link
--applications with the thread library `libpthread' in addition to
--`librt'.
--
-- All AIO operations operate on files which were opened previously.
--There might be arbitrarily many operations running for one file. The
--asynchronous I/O operations are controlled using a data structure named
--`struct aiocb' ("AIO control block"). It is defined in `aio.h' as
--follows.
--
-- - Data Type: struct aiocb
-- The POSIX.1b standard mandates that the `struct aiocb' structure
-- contains at least the members described in the following table.
-- There might be more elements which are used by the implementation,
-- but depending upon these elements is not portable and is highly
-- deprecated.
--
-- `int aio_fildes'
-- This element specifies the file descriptor to be used for the
-- operation. It must be a legal descriptor, otherwise the
-- operation will fail.
--
-- The device on which the file is opened must allow the seek
-- operation. I.e., it is not possible to use any of the AIO
-- operations on devices like terminals where an `lseek' call
-- would lead to an error.
--
-- `off_t aio_offset'
-- This element specifies the offset in the file at which the
-- operation (input or output) is performed. Since the
-- operations are carried out in arbitrary order and more than
-- one operation for one file descriptor can be started, one
-- cannot expect a current read/write position of the file
-- descriptor.
--
-- `volatile void *aio_buf'
-- This is a pointer to the buffer with the data to be written
-- or the place where the read data is stored.
--
-- `size_t aio_nbytes'
-- This element specifies the length of the buffer pointed to by
-- `aio_buf'.
--
-- `int aio_reqprio'
-- If the platform has defined `_POSIX_PRIORITIZED_IO' and
-- `_POSIX_PRIORITY_SCHEDULING', the AIO requests are processed
-- based on the current scheduling priority. The `aio_reqprio'
-- element can then be used to lower the priority of the AIO
-- operation.
--
-- `struct sigevent aio_sigevent'
-- This element specifies how the calling process is notified
-- once the operation terminates. If the `sigev_notify' element
-- is `SIGEV_NONE', no notification is sent. If it is
-- `SIGEV_SIGNAL', the signal determined by `sigev_signo' is
-- sent. Otherwise, `sigev_notify' must be `SIGEV_THREAD'. In
-- this case, a thread is created which starts executing the
-- function pointed to by `sigev_notify_function'.
--
-- `int aio_lio_opcode'
-- This element is only used by the `lio_listio' and
-- `lio_listio64' functions. Since these functions allow an
-- arbitrary number of operations to start at once, and each
-- operation can be input or output (or nothing), the
-- information must be stored in the control block. The
-- possible values are:
--
-- `LIO_READ'
-- Start a read operation. Read from the file at position
-- `aio_offset' and store the next `aio_nbytes' bytes in the
-- buffer pointed to by `aio_buf'.
--
-- `LIO_WRITE'
-- Start a write operation. Write `aio_nbytes' bytes
-- starting at `aio_buf' into the file starting at position
-- `aio_offset'.
--
-- `LIO_NOP'
-- Do nothing for this control block. This value is useful
-- sometimes when an array of `struct aiocb' values
-- contains holes, i.e., some of the values must not be
-- handled although the whole array is presented to the
-- `lio_listio' function.
--
-- When the sources are compiled using `_FILE_OFFSET_BITS == 64' on a
-- 32 bit machine, this type is in fact `struct aiocb64', since the
-- LFS interface transparently replaces the `struct aiocb' definition.
--
-- For use with the AIO functions defined in the LFS, there is a
--similar type defined which replaces the types of the appropriate
--members with larger types but otherwise is equivalent to `struct
--aiocb'. Particularly, all member names are the same.
--
-- - Data Type: struct aiocb64
-- `int aio_fildes'
-- This element specifies the file descriptor which is used for
-- the operation. It must be a legal descriptor since otherwise
-- the operation fails for obvious reasons.
--
-- The device on which the file is opened must allow the seek
-- operation. I.e., it is not possible to use any of the AIO
-- operations on devices like terminals where an `lseek' call
-- would lead to an error.
--
-- `off64_t aio_offset'
-- This element specifies at which offset in the file the
-- operation (input or output) is performed. Since the
-- operation are carried in arbitrary order and more than one
-- operation for one file descriptor can be started, one cannot
-- expect a current read/write position of the file descriptor.
--
-- `volatile void *aio_buf'
-- This is a pointer to the buffer with the data to be written
-- or the place where the read data is stored.
--
-- `size_t aio_nbytes'
-- This element specifies the length of the buffer pointed to by
-- `aio_buf'.
--
-- `int aio_reqprio'
-- If for the platform `_POSIX_PRIORITIZED_IO' and
-- `_POSIX_PRIORITY_SCHEDULING' are defined the AIO requests are
-- processed based on the current scheduling priority. The
-- `aio_reqprio' element can then be used to lower the priority
-- of the AIO operation.
--
-- `struct sigevent aio_sigevent'
-- This element specifies how the calling process is notified
-- once the operation terminates. If the `sigev_notify',
-- element is `SIGEV_NONE' no notification is sent. If it is
-- `SIGEV_SIGNAL', the signal determined by `sigev_signo' is
-- sent. Otherwise, `sigev_notify' must be `SIGEV_THREAD' in
-- which case a thread which starts executing the function
-- pointed to by `sigev_notify_function'.
--
-- `int aio_lio_opcode'
-- This element is only used by the `lio_listio' and
-- `[lio_listio64' functions. Since these functions allow an
-- arbitrary number of operations to start at once, and since
-- each operation can be input or output (or nothing), the
-- information must be stored in the control block. See the
-- description of `struct aiocb' for a description of the
-- possible values.
--
-- When the sources are compiled using `_FILE_OFFSET_BITS == 64' on a
-- 32 bit machine, this type is available under the name `struct
-- aiocb64', since the LFS transparently replaces the old interface.
--
--* Menu:
--
--* Asynchronous Reads/Writes:: Asynchronous Read and Write Operations.
--* Status of AIO Operations:: Getting the Status of AIO Operations.
--* Synchronizing AIO Operations:: Getting into a consistent state.
--* Cancel AIO Operations:: Cancellation of AIO Operations.
--* Configuration of AIO:: How to optimize the AIO implementation.
--
--
--File: libc.info, Node: Asynchronous Reads/Writes, Next: Status of AIO Operations, Up: Asynchronous I/O
--
--Asynchronous Read and Write Operations
----------------------------------------
--
-- - Function: int aio_read (struct aiocb *AIOCBP)
-- This function initiates an asynchronous read operation. It
-- immediately returns after the operation was enqueued or when an
-- error was encountered.
--
-- The first `aiocbp->aio_nbytes' bytes of the file for which
-- `aiocbp->aio_fildes' is a descriptor are written to the buffer
-- starting at `aiocbp->aio_buf'. Reading starts at the absolute
-- position `aiocbp->aio_offset' in the file.
--
-- If prioritized I/O is supported by the platform the
-- `aiocbp->aio_reqprio' value is used to adjust the priority before
-- the request is actually enqueued.
--
-- The calling process is notified about the termination of the read
-- request according to the `aiocbp->aio_sigevent' value.
--
-- When `aio_read' returns, the return value is zero if no error
-- occurred that can be found before the process is enqueued. If
-- such an early error is found, the function returns -1 and sets
-- `errno' to one of the following values:
--
-- `EAGAIN'
-- The request was not enqueued due to (temporarily) exceeded
-- resource limitations.
--
-- `ENOSYS'
-- The `aio_read' function is not implemented.
--
-- `EBADF'
-- The `aiocbp->aio_fildes' descriptor is not valid. This
-- condition need not be recognized before enqueueing the
-- request and so this error might also be signaled
-- asynchronously.
--
-- `EINVAL'
-- The `aiocbp->aio_offset' or `aiocbp->aio_reqpiro' value is
-- invalid. This condition need not be recognized before
-- enqueueing the request and so this error might also be
-- signaled asynchronously.
--
-- If `aio_read' returns zero, the current status of the request can
-- be queried using `aio_error' and `aio_return' functions. As long
-- as the value returned by `aio_error' is `EINPROGRESS' the
-- operation has not yet completed. If `aio_error' returns zero, the
-- operation successfully terminated, otherwise the value is to be
-- interpreted as an error code. If the function terminated, the
-- result of the operation can be obtained using a call to
-- `aio_return'. The returned value is the same as an equivalent
-- call to `read' would have returned. Possible error codes returned
-- by `aio_error' are:
--
-- `EBADF'
-- The `aiocbp->aio_fildes' descriptor is not valid.
--
-- `ECANCELED'
-- The operation was canceled before the operation was finished
-- (*note Cancel AIO Operations::)
--
-- `EINVAL'
-- The `aiocbp->aio_offset' value is invalid.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `aio_read64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_read64 (struct aiocb *AIOCBP)
-- This function is similar to the `aio_read' function. The only
-- difference is that on 32 bit machines, the file descriptor should
-- be opened in the large file mode. Internally, `aio_read64' uses
-- functionality equivalent to `lseek64' (*note File Position
-- Primitive::) to position the file descriptor correctly for the
-- reading, as opposed to `lseek' functionality used in `aio_read'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is available under the name `aio_read' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
-- To write data asynchronously to a file, there exists an equivalent
--pair of functions with a very similar interface.
--
-- - Function: int aio_write (struct aiocb *AIOCBP)
-- This function initiates an asynchronous write operation. The
-- function call immediately returns after the operation was enqueued
-- or if before this happens an error was encountered.
--
-- The first `aiocbp->aio_nbytes' bytes from the buffer starting at
-- `aiocbp->aio_buf' are written to the file for which
-- `aiocbp->aio_fildes' is an descriptor, starting at the absolute
-- position `aiocbp->aio_offset' in the file.
--
-- If prioritized I/O is supported by the platform, the
-- `aiocbp->aio_reqprio' value is used to adjust the priority before
-- the request is actually enqueued.
--
-- The calling process is notified about the termination of the read
-- request according to the `aiocbp->aio_sigevent' value.
--
-- When `aio_write' returns, the return value is zero if no error
-- occurred that can be found before the process is enqueued. If
-- such an early error is found the function returns -1 and sets
-- `errno' to one of the following values.
--
-- `EAGAIN'
-- The request was not enqueued due to (temporarily) exceeded
-- resource limitations.
--
-- `ENOSYS'
-- The `aio_write' function is not implemented.
--
-- `EBADF'
-- The `aiocbp->aio_fildes' descriptor is not valid. This
-- condition may not be recognized before enqueueing the
-- request, and so this error might also be signaled
-- asynchronously.
--
-- `EINVAL'
-- The `aiocbp->aio_offset' or `aiocbp->aio_reqprio' value is
-- invalid. This condition may not be recognized before
-- enqueueing the request and so this error might also be
-- signaled asynchronously.
--
-- In the case `aio_write' returns zero, the current status of the
-- request can be queried using `aio_error' and `aio_return'
-- functions. As long as the value returned by `aio_error' is
-- `EINPROGRESS' the operation has not yet completed. If `aio_error'
-- returns zero, the operation successfully terminated, otherwise the
-- value is to be interpreted as an error code. If the function
-- terminated, the result of the operation can be get using a call to
-- `aio_return'. The returned value is the same as an equivalent
-- call to `read' would have returned. Possible error codes returned
-- by `aio_error' are:
--
-- `EBADF'
-- The `aiocbp->aio_fildes' descriptor is not valid.
--
-- `ECANCELED'
-- The operation was canceled before the operation was finished.
-- (*note Cancel AIO Operations::)
--
-- `EINVAL'
-- The `aiocbp->aio_offset' value is invalid.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is in fact `aio_write64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_write64 (struct aiocb *AIOCBP)
-- This function is similar to the `aio_write' function. The only
-- difference is that on 32 bit machines the file descriptor should
-- be opened in the large file mode. Internally `aio_write64' uses
-- functionality equivalent to `lseek64' (*note File Position
-- Primitive::) to position the file descriptor correctly for the
-- writing, as opposed to `lseek' functionality used in `aio_write'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is available under the name `aio_write' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
-- Besides these functions with the more or less traditional interface,
--POSIX.1b also defines a function which can initiate more than one
--operation at a time, and which can handle freely mixed read and write
--operations. It is therefore similar to a combination of `readv' and
--`writev'.
--
-- - Function: int lio_listio (int MODE, struct aiocb *const LIST[], int
-- NENT, struct sigevent *SIG)
-- The `lio_listio' function can be used to enqueue an arbitrary
-- number of read and write requests at one time. The requests can
-- all be meant for the same file, all for different files or every
-- solution in between.
--
-- `lio_listio' gets the NENT requests from the array pointed to by
-- LIST. The operation to be performed is determined by the
-- `aio_lio_opcode' member in each element of LIST. If this field is
-- `LIO_READ' a read operation is enqueued, similar to a call of
-- `aio_read' for this element of the array (except that the way the
-- termination is signalled is different, as we will see below). If
-- the `aio_lio_opcode' member is `LIO_WRITE' a write operation is
-- enqueued. Otherwise the `aio_lio_opcode' must be `LIO_NOP' in
-- which case this element of LIST is simply ignored. This
-- "operation" is useful in situations where one has a fixed array of
-- `struct aiocb' elements from which only a few need to be handled at
-- a time. Another situation is where the `lio_listio' call was
-- canceled before all requests are processed (*note Cancel AIO
-- Operations::) and the remaining requests have to be reissued.
--
-- The other members of each element of the array pointed to by
-- `list' must have values suitable for the operation as described in
-- the documentation for `aio_read' and `aio_write' above.
--
-- The MODE argument determines how `lio_listio' behaves after having
-- enqueued all the requests. If MODE is `LIO_WAIT' it waits until
-- all requests terminated. Otherwise MODE must be `LIO_NOWAIT' and
-- in this case the function returns immediately after having
-- enqueued all the requests. In this case the caller gets a
-- notification of the termination of all requests according to the
-- SIG parameter. If SIG is `NULL' no notification is send.
-- Otherwise a signal is sent or a thread is started, just as
-- described in the description for `aio_read' or `aio_write'.
--
-- If MODE is `LIO_WAIT', the return value of `lio_listio' is 0 when
-- all requests completed successfully. Otherwise the function
-- return -1 and `errno' is set accordingly. To find out which
-- request or requests failed one has to use the `aio_error' function
-- on all the elements of the array LIST.
--
-- In case MODE is `LIO_NOWAIT', the function returns 0 if all
-- requests were enqueued correctly. The current state of the
-- requests can be found using `aio_error' and `aio_return' as
-- described above. If `lio_listio' returns -1 in this mode, the
-- global variable `errno' is set accordingly. If a request did not
-- yet terminate, a call to `aio_error' returns `EINPROGRESS'. If
-- the value is different, the request is finished and the error
-- value (or 0) is returned and the result of the operation can be
-- retrieved using `aio_return'.
--
-- Possible values for `errno' are:
--
-- `EAGAIN'
-- The resources necessary to queue all the requests are not
-- available at the moment. The error status for each element
-- of LIST must be checked to determine which request failed.
--
-- Another reason could be that the system wide limit of AIO
-- requests is exceeded. This cannot be the case for the
-- implementation on GNU systems since no arbitrary limits exist.
--
-- `EINVAL'
-- The MODE parameter is invalid or NENT is larger than
-- `AIO_LISTIO_MAX'.
--
-- `EIO'
-- One or more of the request's I/O operations failed. The
-- error status of each request should be checked to determine
-- which one failed.
--
-- `ENOSYS'
-- The `lio_listio' function is not supported.
--
-- If the MODE parameter is `LIO_NOWAIT' and the caller cancels a
-- request, the error status for this request returned by `aio_error'
-- is `ECANCELED'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is in fact `lio_listio64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int lio_listio64 (int MODE, struct aiocb *const LIST, int
-- NENT, struct sigevent *SIG)
-- This function is similar to the `lio_listio' function. The only
-- difference is that on 32 bit machines, the file descriptor should
-- be opened in the large file mode. Internally, `lio_listio64' uses
-- functionality equivalent to `lseek64' (*note File Position
-- Primitive::) to position the file descriptor correctly for the
-- reading or writing, as opposed to `lseek' functionality used in
-- `lio_listio'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is available under the name `lio_listio' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
--
--File: libc.info, Node: Status of AIO Operations, Next: Synchronizing AIO Operations, Prev: Asynchronous Reads/Writes, Up: Asynchronous I/O
--
--Getting the Status of AIO Operations
--------------------------------------
--
-- As already described in the documentation of the functions in the
--last section, it must be possible to get information about the status
--of an I/O request. When the operation is performed truly
--asynchronously (as with `aio_read' and `aio_write' and with
--`lio_listio' when the mode is `LIO_NOWAIT'), one sometimes needs to
--know whether a specific request already terminated and if so, what the
--result was. The following two functions allow you to get this kind of
--information.
--
-- - Function: int aio_error (const struct aiocb *AIOCBP)
-- This function determines the error state of the request described
-- by the `struct aiocb' variable pointed to by AIOCBP. If the
-- request has not yet terminated the value returned is always
-- `EINPROGRESS'. Once the request has terminated the value
-- `aio_error' returns is either 0 if the request completed
-- successfully or it returns the value which would be stored in the
-- `errno' variable if the request would have been done using `read',
-- `write', or `fsync'.
--
-- The function can return `ENOSYS' if it is not implemented. It
-- could also return `EINVAL' if the AIOCBP parameter does not refer
-- to an asynchronous operation whose return status is not yet known.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `aio_error64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_error64 (const struct aiocb64 *AIOCBP)
-- This function is similar to `aio_error' with the only difference
-- that the argument is a reference to a variable of type `struct
-- aiocb64'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `aio_error' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
-- - Function: ssize_t aio_return (const struct aiocb *AIOCBP)
-- This function can be used to retrieve the return status of the
-- operation carried out by the request described in the variable
-- pointed to by AIOCBP. As long as the error status of this request
-- as returned by `aio_error' is `EINPROGRESS' the return of this
-- function is undefined.
--
-- Once the request is finished this function can be used exactly
-- once to retrieve the return value. Following calls might lead to
-- undefined behavior. The return value itself is the value which
-- would have been returned by the `read', `write', or `fsync' call.
--
-- The function can return `ENOSYS' if it is not implemented. It
-- could also return `EINVAL' if the AIOCBP parameter does not refer
-- to an asynchronous operation whose return status is not yet known.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `aio_return64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_return64 (const struct aiocb64 *AIOCBP)
-- This function is similar to `aio_return' with the only difference
-- that the argument is a reference to a variable of type `struct
-- aiocb64'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `aio_return' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-23 glibc-2.3.2-200304020432/manual/libc.info-23
---- glibc-2.3.2/manual/libc.info-23 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-23 Thu Jan 1 01:00:00 1970
-@@ -1,1221 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Synchronizing AIO Operations, Next: Cancel AIO Operations, Prev: Status of AIO Operations, Up: Asynchronous I/O
--
--Getting into a Consistent State
---------------------------------
--
-- When dealing with asynchronous operations it is sometimes necessary
--to get into a consistent state. This would mean for AIO that one wants
--to know whether a certain request or a group of request were processed.
--This could be done by waiting for the notification sent by the system
--after the operation terminated, but this sometimes would mean wasting
--resources (mainly computation time). Instead POSIX.1b defines two
--functions which will help with most kinds of consistency.
--
-- The `aio_fsync' and `aio_fsync64' functions are only available if
--the symbol `_POSIX_SYNCHRONIZED_IO' is defined in `unistd.h'.
--
-- - Function: int aio_fsync (int OP, struct aiocb *AIOCBP)
-- Calling this function forces all I/O operations operating queued
-- at the time of the function call operating on the file descriptor
-- `aiocbp->aio_fildes' into the synchronized I/O completion state
-- (*note Synchronizing I/O::). The `aio_fsync' function returns
-- immediately but the notification through the method described in
-- `aiocbp->aio_sigevent' will happen only after all requests for this
-- file descriptor have terminated and the file is synchronized.
-- This also means that requests for this very same file descriptor
-- which are queued after the synchronization request are not
-- affected.
--
-- If OP is `O_DSYNC' the synchronization happens as with a call to
-- `fdatasync'. Otherwise OP should be `O_SYNC' and the
-- synchronization happens as with `fsync'.
--
-- As long as the synchronization has not happened, a call to
-- `aio_error' with the reference to the object pointed to by AIOCBP
-- returns `EINPROGRESS'. Once the synchronization is done
-- `aio_error' return 0 if the synchronization was not successful.
-- Otherwise the value returned is the value to which the `fsync' or
-- `fdatasync' function would have set the `errno' variable. In this
-- case nothing can be assumed about the consistency for the data
-- written to this file descriptor.
--
-- The return value of this function is 0 if the request was
-- successfully enqueued. Otherwise the return value is -1 and
-- `errno' is set to one of the following values:
--
-- `EAGAIN'
-- The request could not be enqueued due to temporary lack of
-- resources.
--
-- `EBADF'
-- The file descriptor `aiocbp->aio_fildes' is not valid or not
-- open for writing.
--
-- `EINVAL'
-- The implementation does not support I/O synchronization or
-- the OP parameter is other than `O_DSYNC' and `O_SYNC'.
--
-- `ENOSYS'
-- This function is not implemented.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `aio_fsync64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_fsync64 (int OP, struct aiocb64 *AIOCBP)
-- This function is similar to `aio_fsync' with the only difference
-- that the argument is a reference to a variable of type `struct
-- aiocb64'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `aio_fsync' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
-- Another method of synchronization is to wait until one or more
--requests of a specific set terminated. This could be achieved by the
--`aio_*' functions to notify the initiating process about the
--termination but in some situations this is not the ideal solution. In
--a program which constantly updates clients somehow connected to the
--server it is not always the best solution to go round robin since some
--connections might be slow. On the other hand letting the `aio_*'
--function notify the caller might also be not the best solution since
--whenever the process works on preparing data for on client it makes no
--sense to be interrupted by a notification since the new client will not
--be handled before the current client is served. For situations like
--this `aio_suspend' should be used.
--
-- - Function: int aio_suspend (const struct aiocb *const LIST[], int
-- NENT, const struct timespec *TIMEOUT)
-- When calling this function, the calling thread is suspended until
-- at least one of the requests pointed to by the NENT elements of the
-- array LIST has completed. If any of the requests has already
-- completed at the time `aio_suspend' is called, the function returns
-- immediately. Whether a request has terminated or not is
-- determined by comparing the error status of the request with
-- `EINPROGRESS'. If an element of LIST is `NULL', the entry is
-- simply ignored.
--
-- If no request has finished, the calling process is suspended. If
-- TIMEOUT is `NULL', the process is not woken until a request has
-- finished. If TIMEOUT is not `NULL', the process remains suspended
-- at least as long as specified in TIMEOUT. In this case,
-- `aio_suspend' returns with an error.
--
-- The return value of the function is 0 if one or more requests from
-- the LIST have terminated. Otherwise the function returns -1 and
-- `errno' is set to one of the following values:
--
-- `EAGAIN'
-- None of the requests from the LIST completed in the time
-- specified by TIMEOUT.
--
-- `EINTR'
-- A signal interrupted the `aio_suspend' function. This signal
-- might also be sent by the AIO implementation while signalling
-- the termination of one of the requests.
--
-- `ENOSYS'
-- The `aio_suspend' function is not implemented.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `aio_suspend64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_suspend64 (const struct aiocb64 *const LIST[], int
-- NENT, const struct timespec *TIMEOUT)
-- This function is similar to `aio_suspend' with the only difference
-- that the argument is a reference to a variable of type `struct
-- aiocb64'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `aio_suspend' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
--
--File: libc.info, Node: Cancel AIO Operations, Next: Configuration of AIO, Prev: Synchronizing AIO Operations, Up: Asynchronous I/O
--
--Cancellation of AIO Operations
--------------------------------
--
-- When one or more requests are asynchronously processed, it might be
--useful in some situations to cancel a selected operation, e.g., if it
--becomes obvious that the written data is no longer accurate and would
--have to be overwritten soon. As an example, assume an application,
--which writes data in files in a situation where new incoming data would
--have to be written in a file which will be updated by an enqueued
--request. The POSIX AIO implementation provides such a function, but
--this function is not capable of forcing the cancellation of the
--request. It is up to the implementation to decide whether it is
--possible to cancel the operation or not. Therefore using this function
--is merely a hint.
--
-- - Function: int aio_cancel (int FILDES, struct aiocb *AIOCBP)
-- The `aio_cancel' function can be used to cancel one or more
-- outstanding requests. If the AIOCBP parameter is `NULL', the
-- function tries to cancel all of the outstanding requests which
-- would process the file descriptor FILDES (i.e., whose `aio_fildes'
-- member is FILDES). If AIOCBP is not `NULL', `aio_cancel' attempts
-- to cancel the specific request pointed to by AIOCBP.
--
-- For requests which were successfully canceled, the normal
-- notification about the termination of the request should take
-- place. I.e., depending on the `struct sigevent' object which
-- controls this, nothing happens, a signal is sent or a thread is
-- started. If the request cannot be canceled, it terminates the
-- usual way after performing the operation.
--
-- After a request is successfully canceled, a call to `aio_error'
-- with a reference to this request as the parameter will return
-- `ECANCELED' and a call to `aio_return' will return -1. If the
-- request wasn't canceled and is still running the error status is
-- still `EINPROGRESS'.
--
-- The return value of the function is `AIO_CANCELED' if there were
-- requests which haven't terminated and which were successfully
-- canceled. If there is one or more requests left which couldn't be
-- canceled, the return value is `AIO_NOTCANCELED'. In this case
-- `aio_error' must be used to find out which of the, perhaps
-- multiple, requests (in AIOCBP is `NULL') weren't successfully
-- canceled. If all requests already terminated at the time
-- `aio_cancel' is called the return value is `AIO_ALLDONE'.
--
-- If an error occurred during the execution of `aio_cancel' the
-- function returns -1 and sets `errno' to one of the following
-- values.
--
-- `EBADF'
-- The file descriptor FILDES is not valid.
--
-- `ENOSYS'
-- `aio_cancel' is not implemented.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is in fact `aio_cancel64' since the LFS interface
-- transparently replaces the normal implementation.
--
-- - Function: int aio_cancel64 (int FILDES, struct aiocb64 *AIOCBP)
-- This function is similar to `aio_cancel' with the only difference
-- that the argument is a reference to a variable of type `struct
-- aiocb64'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64', this
-- function is available under the name `aio_cancel' and so
-- transparently replaces the interface for small files on 32 bit
-- machines.
--
--
--File: libc.info, Node: Configuration of AIO, Prev: Cancel AIO Operations, Up: Asynchronous I/O
--
--How to optimize the AIO implementation
----------------------------------------
--
-- The POSIX standard does not specify how the AIO functions are
--implemented. They could be system calls, but it is also possible to
--emulate them at userlevel.
--
-- At the point of this writing, the available implementation is a
--userlevel implementation which uses threads for handling the enqueued
--requests. While this implementation requires making some decisions
--about limitations, hard limitations are something which is best avoided
--in the GNU C library. Therefore, the GNU C library provides a means
--for tuning the AIO implementation according to the individual use.
--
-- - Data Type: struct aioinit
-- This data type is used to pass the configuration or tunable
-- parameters to the implementation. The program has to initialize
-- the members of this struct and pass it to the implementation using
-- the `aio_init' function.
--
-- `int aio_threads'
-- This member specifies the maximal number of threads which may
-- be used at any one time.
--
-- `int aio_num'
-- This number provides an estimate on the maximal number of
-- simultaneously enqueued requests.
--
-- `int aio_locks'
-- Unused.
--
-- `int aio_usedba'
-- Unused.
--
-- `int aio_debug'
-- Unused.
--
-- `int aio_numusers'
-- Unused.
--
-- `int aio_reserved[2]'
-- Unused.
--
-- - Function: void aio_init (const struct aioinit *INIT)
-- This function must be called before any other AIO function.
-- Calling it is completely voluntary, as it is only meant to help
-- the AIO implementation perform better.
--
-- Before calling the `aio_init', function the members of a variable
-- of type `struct aioinit' must be initialized. Then a reference to
-- this variable is passed as the parameter to `aio_init' which itself
-- may or may not pay attention to the hints.
--
-- The function has no return value and no error cases are defined.
-- It is a extension which follows a proposal from the SGI
-- implementation in Irix 6. It is not covered by POSIX.1b or Unix98.
--
--
--File: libc.info, Node: Control Operations, Next: Duplicating Descriptors, Prev: Asynchronous I/O, Up: Low-Level I/O
--
--Control Operations on Files
--===========================
--
-- This section describes how you can perform various other operations
--on file descriptors, such as inquiring about or setting flags describing
--the status of the file descriptor, manipulating record locks, and the
--like. All of these operations are performed by the function `fcntl'.
--
-- The second argument to the `fcntl' function is a command that
--specifies which operation to perform. The function and macros that name
--various flags that are used with it are declared in the header file
--`fcntl.h'. Many of these flags are also used by the `open' function;
--see *Note Opening and Closing Files::.
--
-- - Function: int fcntl (int FILEDES, int COMMAND, ...)
-- The `fcntl' function performs the operation specified by COMMAND
-- on the file descriptor FILEDES. Some commands require additional
-- arguments to be supplied. These additional arguments and the
-- return value and error conditions are given in the detailed
-- descriptions of the individual commands.
--
-- Briefly, here is a list of what the various commands are.
--
-- `F_DUPFD'
-- Duplicate the file descriptor (return another file descriptor
-- pointing to the same open file). *Note Duplicating
-- Descriptors::.
--
-- `F_GETFD'
-- Get flags associated with the file descriptor. *Note
-- Descriptor Flags::.
--
-- `F_SETFD'
-- Set flags associated with the file descriptor. *Note
-- Descriptor Flags::.
--
-- `F_GETFL'
-- Get flags associated with the open file. *Note File Status
-- Flags::.
--
-- `F_SETFL'
-- Set flags associated with the open file. *Note File Status
-- Flags::.
--
-- `F_GETLK'
-- Get a file lock. *Note File Locks::.
--
-- `F_SETLK'
-- Set or clear a file lock. *Note File Locks::.
--
-- `F_SETLKW'
-- Like `F_SETLK', but wait for completion. *Note File Locks::.
--
-- `F_GETOWN'
-- Get process or process group ID to receive `SIGIO' signals.
-- *Note Interrupt Input::.
--
-- `F_SETOWN'
-- Set process or process group ID to receive `SIGIO' signals.
-- *Note Interrupt Input::.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `fcntl' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `fcntl' should be protected using cancellation handlers.
--
--
--File: libc.info, Node: Duplicating Descriptors, Next: Descriptor Flags, Prev: Control Operations, Up: Low-Level I/O
--
--Duplicating Descriptors
--=======================
--
-- You can "duplicate" a file descriptor, or allocate another file
--descriptor that refers to the same open file as the original. Duplicate
--descriptors share one file position and one set of file status flags
--(*note File Status Flags::), but each has its own set of file descriptor
--flags (*note Descriptor Flags::).
--
-- The major use of duplicating a file descriptor is to implement
--"redirection" of input or output: that is, to change the file or pipe
--that a particular file descriptor corresponds to.
--
-- You can perform this operation using the `fcntl' function with the
--`F_DUPFD' command, but there are also convenient functions `dup' and
--`dup2' for duplicating descriptors.
--
-- The `fcntl' function and flags are declared in `fcntl.h', while
--prototypes for `dup' and `dup2' are in the header file `unistd.h'.
--
-- - Function: int dup (int OLD)
-- This function copies descriptor OLD to the first available
-- descriptor number (the first number not currently open). It is
-- equivalent to `fcntl (OLD, F_DUPFD, 0)'.
--
-- - Function: int dup2 (int OLD, int NEW)
-- This function copies the descriptor OLD to descriptor number NEW.
--
-- If OLD is an invalid descriptor, then `dup2' does nothing; it does
-- not close NEW. Otherwise, the new duplicate of OLD replaces any
-- previous meaning of descriptor NEW, as if NEW were closed first.
--
-- If OLD and NEW are different numbers, and OLD is a valid
-- descriptor number, then `dup2' is equivalent to:
--
-- close (NEW);
-- fcntl (OLD, F_DUPFD, NEW)
--
-- However, `dup2' does this atomically; there is no instant in the
-- middle of calling `dup2' at which NEW is closed and not yet a
-- duplicate of OLD.
--
-- - Macro: int F_DUPFD
-- This macro is used as the COMMAND argument to `fcntl', to copy the
-- file descriptor given as the first argument.
--
-- The form of the call in this case is:
--
-- fcntl (OLD, F_DUPFD, NEXT-FILEDES)
--
-- The NEXT-FILEDES argument is of type `int' and specifies that the
-- file descriptor returned should be the next available one greater
-- than or equal to this value.
--
-- The return value from `fcntl' with this command is normally the
-- value of the new file descriptor. A return value of -1 indicates
-- an error. The following `errno' error conditions are defined for
-- this command:
--
-- `EBADF'
-- The OLD argument is invalid.
--
-- `EINVAL'
-- The NEXT-FILEDES argument is invalid.
--
-- `EMFILE'
-- There are no more file descriptors available--your program is
-- already using the maximum. In BSD and GNU, the maximum is
-- controlled by a resource limit that can be changed; *note
-- Limits on Resources::, for more information about the
-- `RLIMIT_NOFILE' limit.
--
-- `ENFILE' is not a possible error code for `dup2' because `dup2'
-- does not create a new opening of a file; duplicate descriptors do
-- not count toward the limit which `ENFILE' indicates. `EMFILE' is
-- possible because it refers to the limit on distinct descriptor
-- numbers in use in one process.
--
-- Here is an example showing how to use `dup2' to do redirection.
--Typically, redirection of the standard streams (like `stdin') is done
--by a shell or shell-like program before calling one of the `exec'
--functions (*note Executing a File::) to execute a new program in a
--child process. When the new program is executed, it creates and
--initializes the standard streams to point to the corresponding file
--descriptors, before its `main' function is invoked.
--
-- So, to redirect standard input to a file, the shell could do
--something like:
--
-- pid = fork ();
-- if (pid == 0)
-- {
-- char *filename;
-- char *program;
-- int file;
-- ...
-- file = TEMP_FAILURE_RETRY (open (filename, O_RDONLY));
-- dup2 (file, STDIN_FILENO);
-- TEMP_FAILURE_RETRY (close (file));
-- execv (program, NULL);
-- }
--
-- There is also a more detailed example showing how to implement
--redirection in the context of a pipeline of processes in *Note
--Launching Jobs::.
--
--
--File: libc.info, Node: Descriptor Flags, Next: File Status Flags, Prev: Duplicating Descriptors, Up: Low-Level I/O
--
--File Descriptor Flags
--=====================
--
-- "File descriptor flags" are miscellaneous attributes of a file
--descriptor. These flags are associated with particular file
--descriptors, so that if you have created duplicate file descriptors
--from a single opening of a file, each descriptor has its own set of
--flags.
--
-- Currently there is just one file descriptor flag: `FD_CLOEXEC',
--which causes the descriptor to be closed if you use any of the
--`exec...' functions (*note Executing a File::).
--
-- The symbols in this section are defined in the header file `fcntl.h'.
--
-- - Macro: int F_GETFD
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should return the file descriptor flags associated with
-- the FILEDES argument.
--
-- The normal return value from `fcntl' with this command is a
-- nonnegative number which can be interpreted as the bitwise OR of
-- the individual flags (except that currently there is only one flag
-- to use).
--
-- In case of an error, `fcntl' returns -1. The following `errno'
-- error conditions are defined for this command:
--
-- `EBADF'
-- The FILEDES argument is invalid.
--
-- - Macro: int F_SETFD
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should set the file descriptor flags associated with the
-- FILEDES argument. This requires a third `int' argument to specify
-- the new flags, so the form of the call is:
--
-- fcntl (FILEDES, F_SETFD, NEW-FLAGS)
--
-- The normal return value from `fcntl' with this command is an
-- unspecified value other than -1, which indicates an error. The
-- flags and error conditions are the same as for the `F_GETFD'
-- command.
--
-- The following macro is defined for use as a file descriptor flag with
--the `fcntl' function. The value is an integer constant usable as a bit
--mask value.
--
-- - Macro: int FD_CLOEXEC
-- This flag specifies that the file descriptor should be closed when
-- an `exec' function is invoked; see *Note Executing a File::. When
-- a file descriptor is allocated (as with `open' or `dup'), this bit
-- is initially cleared on the new file descriptor, meaning that
-- descriptor will survive into the new program after `exec'.
--
-- If you want to modify the file descriptor flags, you should get the
--current flags with `F_GETFD' and modify the value. Don't assume that
--the flags listed here are the only ones that are implemented; your
--program may be run years from now and more flags may exist then. For
--example, here is a function to set or clear the flag `FD_CLOEXEC'
--without altering any other flags:
--
-- /* Set the `FD_CLOEXEC' flag of DESC if VALUE is nonzero,
-- or clear the flag if VALUE is 0.
-- Return 0 on success, or -1 on error with `errno' set. */
--
-- int
-- set_cloexec_flag (int desc, int value)
-- {
-- int oldflags = fcntl (desc, F_GETFD, 0);
-- /* If reading the flags failed, return error indication now. */
-- if (oldflags < 0)
-- return oldflags;
-- /* Set just the flag we want to set. */
-- if (value != 0)
-- oldflags |= FD_CLOEXEC;
-- else
-- oldflags &= ~FD_CLOEXEC;
-- /* Store modified flag word in the descriptor. */
-- return fcntl (desc, F_SETFD, oldflags);
-- }
--
--
--File: libc.info, Node: File Status Flags, Next: File Locks, Prev: Descriptor Flags, Up: Low-Level I/O
--
--File Status Flags
--=================
--
-- "File status flags" are used to specify attributes of the opening of
--a file. Unlike the file descriptor flags discussed in *Note Descriptor
--Flags::, the file status flags are shared by duplicated file descriptors
--resulting from a single opening of the file. The file status flags are
--specified with the FLAGS argument to `open'; *note Opening and Closing
--Files::.
--
-- File status flags fall into three categories, which are described in
--the following sections.
--
-- * *Note Access Modes::, specify what type of access is allowed to the
-- file: reading, writing, or both. They are set by `open' and are
-- returned by `fcntl', but cannot be changed.
--
-- * *Note Open-time Flags::, control details of what `open' will do.
-- These flags are not preserved after the `open' call.
--
-- * *Note Operating Modes::, affect how operations such as `read' and
-- `write' are done. They are set by `open', and can be fetched or
-- changed with `fcntl'.
--
-- The symbols in this section are defined in the header file `fcntl.h'.
--
--* Menu:
--
--* Access Modes:: Whether the descriptor can read or write.
--* Open-time Flags:: Details of `open'.
--* Operating Modes:: Special modes to control I/O operations.
--* Getting File Status Flags:: Fetching and changing these flags.
--
--
--File: libc.info, Node: Access Modes, Next: Open-time Flags, Up: File Status Flags
--
--File Access Modes
-------------------
--
-- The file access modes allow a file descriptor to be used for reading,
--writing, or both. (In the GNU system, they can also allow none of
--these, and allow execution of the file as a program.) The access modes
--are chosen when the file is opened, and never change.
--
-- - Macro: int O_RDONLY
-- Open the file for read access.
--
-- - Macro: int O_WRONLY
-- Open the file for write access.
--
-- - Macro: int O_RDWR
-- Open the file for both reading and writing.
--
-- In the GNU system (and not in other systems), `O_RDONLY' and
--`O_WRONLY' are independent bits that can be bitwise-ORed together, and
--it is valid for either bit to be set or clear. This means that
--`O_RDWR' is the same as `O_RDONLY|O_WRONLY'. A file access mode of
--zero is permissible; it allows no operations that do input or output to
--the file, but does allow other operations such as `fchmod'. On the GNU
--system, since "read-only" or "write-only" is a misnomer, `fcntl.h'
--defines additional names for the file access modes. These names are
--preferred when writing GNU-specific code. But most programs will want
--to be portable to other POSIX.1 systems and should use the POSIX.1
--names above instead.
--
-- - Macro: int O_READ
-- Open the file for reading. Same as `O_RDONLY'; only defined on
-- GNU.
--
-- - Macro: int O_WRITE
-- Open the file for writing. Same as `O_WRONLY'; only defined on
-- GNU.
--
-- - Macro: int O_EXEC
-- Open the file for executing. Only defined on GNU.
--
-- To determine the file access mode with `fcntl', you must extract the
--access mode bits from the retrieved file status flags. In the GNU
--system, you can just test the `O_READ' and `O_WRITE' bits in the flags
--word. But in other POSIX.1 systems, reading and writing access modes
--are not stored as distinct bit flags. The portable way to extract the
--file access mode bits is with `O_ACCMODE'.
--
-- - Macro: int O_ACCMODE
-- This macro stands for a mask that can be bitwise-ANDed with the
-- file status flag value to produce a value representing the file
-- access mode. The mode will be `O_RDONLY', `O_WRONLY', or `O_RDWR'.
-- (In the GNU system it could also be zero, and it never includes the
-- `O_EXEC' bit.)
--
--
--File: libc.info, Node: Open-time Flags, Next: Operating Modes, Prev: Access Modes, Up: File Status Flags
--
--Open-time Flags
-----------------
--
-- The open-time flags specify options affecting how `open' will behave.
--These options are not preserved once the file is open. The exception to
--this is `O_NONBLOCK', which is also an I/O operating mode and so it
--_is_ saved. *Note Opening and Closing Files::, for how to call `open'.
--
-- There are two sorts of options specified by open-time flags.
--
-- * "File name translation flags" affect how `open' looks up the file
-- name to locate the file, and whether the file can be created.
--
-- * "Open-time action flags" specify extra operations that `open' will
-- perform on the file once it is open.
--
-- Here are the file name translation flags.
--
-- - Macro: int O_CREAT
-- If set, the file will be created if it doesn't already exist.
--
-- - Macro: int O_EXCL
-- If both `O_CREAT' and `O_EXCL' are set, then `open' fails if the
-- specified file already exists. This is guaranteed to never
-- clobber an existing file.
--
-- - Macro: int O_NONBLOCK
-- This prevents `open' from blocking for a "long time" to open the
-- file. This is only meaningful for some kinds of files, usually
-- devices such as serial ports; when it is not meaningful, it is
-- harmless and ignored. Often opening a port to a modem blocks
-- until the modem reports carrier detection; if `O_NONBLOCK' is
-- specified, `open' will return immediately without a carrier.
--
-- Note that the `O_NONBLOCK' flag is overloaded as both an I/O
-- operating mode and a file name translation flag. This means that
-- specifying `O_NONBLOCK' in `open' also sets nonblocking I/O mode;
-- *note Operating Modes::. To open the file without blocking but do
-- normal I/O that blocks, you must call `open' with `O_NONBLOCK' set
-- and then call `fcntl' to turn the bit off.
--
-- - Macro: int O_NOCTTY
-- If the named file is a terminal device, don't make it the
-- controlling terminal for the process. *Note Job Control::, for
-- information about what it means to be the controlling terminal.
--
-- In the GNU system and 4.4 BSD, opening a file never makes it the
-- controlling terminal and `O_NOCTTY' is zero. However, other
-- systems may use a nonzero value for `O_NOCTTY' and set the
-- controlling terminal when you open a file that is a terminal
-- device; so to be portable, use `O_NOCTTY' when it is important to
-- avoid this.
--
-- The following three file name translation flags exist only in the
--GNU system.
--
-- - Macro: int O_IGNORE_CTTY
-- Do not recognize the named file as the controlling terminal, even
-- if it refers to the process's existing controlling terminal
-- device. Operations on the new file descriptor will never induce
-- job control signals. *Note Job Control::.
--
-- - Macro: int O_NOLINK
-- If the named file is a symbolic link, open the link itself instead
-- of the file it refers to. (`fstat' on the new file descriptor will
-- return the information returned by `lstat' on the link's name.)
--
-- - Macro: int O_NOTRANS
-- If the named file is specially translated, do not invoke the
-- translator. Open the bare file the translator itself sees.
--
-- The open-time action flags tell `open' to do additional operations
--which are not really related to opening the file. The reason to do them
--as part of `open' instead of in separate calls is that `open' can do
--them atomically.
--
-- - Macro: int O_TRUNC
-- Truncate the file to zero length. This option is only useful for
-- regular files, not special files such as directories or FIFOs.
-- POSIX.1 requires that you open the file for writing to use
-- `O_TRUNC'. In BSD and GNU you must have permission to write the
-- file to truncate it, but you need not open for write access.
--
-- This is the only open-time action flag specified by POSIX.1.
-- There is no good reason for truncation to be done by `open',
-- instead of by calling `ftruncate' afterwards. The `O_TRUNC' flag
-- existed in Unix before `ftruncate' was invented, and is retained
-- for backward compatibility.
--
-- The remaining operating modes are BSD extensions. They exist only
--on some systems. On other systems, these macros are not defined.
--
-- - Macro: int O_SHLOCK
-- Acquire a shared lock on the file, as with `flock'. *Note File
-- Locks::.
--
-- If `O_CREAT' is specified, the locking is done atomically when
-- creating the file. You are guaranteed that no other process will
-- get the lock on the new file first.
--
-- - Macro: int O_EXLOCK
-- Acquire an exclusive lock on the file, as with `flock'. *Note
-- File Locks::. This is atomic like `O_SHLOCK'.
--
--
--File: libc.info, Node: Operating Modes, Next: Getting File Status Flags, Prev: Open-time Flags, Up: File Status Flags
--
--I/O Operating Modes
---------------------
--
-- The operating modes affect how input and output operations using a
--file descriptor work. These flags are set by `open' and can be fetched
--and changed with `fcntl'.
--
-- - Macro: int O_APPEND
-- The bit that enables append mode for the file. If set, then all
-- `write' operations write the data at the end of the file, extending
-- it, regardless of the current file position. This is the only
-- reliable way to append to a file. In append mode, you are
-- guaranteed that the data you write will always go to the current
-- end of the file, regardless of other processes writing to the
-- file. Conversely, if you simply set the file position to the end
-- of file and write, then another process can extend the file after
-- you set the file position but before you write, resulting in your
-- data appearing someplace before the real end of file.
--
-- - Macro: int O_NONBLOCK
-- The bit that enables nonblocking mode for the file. If this bit
-- is set, `read' requests on the file can return immediately with a
-- failure status if there is no input immediately available, instead
-- of blocking. Likewise, `write' requests can also return
-- immediately with a failure status if the output can't be written
-- immediately.
--
-- Note that the `O_NONBLOCK' flag is overloaded as both an I/O
-- operating mode and a file name translation flag; *note Open-time
-- Flags::.
--
-- - Macro: int O_NDELAY
-- This is an obsolete name for `O_NONBLOCK', provided for
-- compatibility with BSD. It is not defined by the POSIX.1 standard.
--
-- The remaining operating modes are BSD and GNU extensions. They
--exist only on some systems. On other systems, these macros are not
--defined.
--
-- - Macro: int O_ASYNC
-- The bit that enables asynchronous input mode. If set, then `SIGIO'
-- signals will be generated when input is available. *Note
-- Interrupt Input::.
--
-- Asynchronous input mode is a BSD feature.
--
-- - Macro: int O_FSYNC
-- The bit that enables synchronous writing for the file. If set,
-- each `write' call will make sure the data is reliably stored on
-- disk before returning. Synchronous writing is a BSD feature.
--
-- - Macro: int O_SYNC
-- This is another name for `O_FSYNC'. They have the same value.
--
-- - Macro: int O_NOATIME
-- If this bit is set, `read' will not update the access time of the
-- file. *Note File Times::. This is used by programs that do
-- backups, so that backing a file up does not count as reading it.
-- Only the owner of the file or the superuser may use this bit.
--
-- This is a GNU extension.
--
--
--File: libc.info, Node: Getting File Status Flags, Prev: Operating Modes, Up: File Status Flags
--
--Getting and Setting File Status Flags
---------------------------------------
--
-- The `fcntl' function can fetch or change file status flags.
--
-- - Macro: int F_GETFL
-- This macro is used as the COMMAND argument to `fcntl', to read the
-- file status flags for the open file with descriptor FILEDES.
--
-- The normal return value from `fcntl' with this command is a
-- nonnegative number which can be interpreted as the bitwise OR of
-- the individual flags. Since the file access modes are not
-- single-bit values, you can mask off other bits in the returned
-- flags with `O_ACCMODE' to compare them.
--
-- In case of an error, `fcntl' returns -1. The following `errno'
-- error conditions are defined for this command:
--
-- `EBADF'
-- The FILEDES argument is invalid.
--
-- - Macro: int F_SETFL
-- This macro is used as the COMMAND argument to `fcntl', to set the
-- file status flags for the open file corresponding to the FILEDES
-- argument. This command requires a third `int' argument to specify
-- the new flags, so the call looks like this:
--
-- fcntl (FILEDES, F_SETFL, NEW-FLAGS)
--
-- You can't change the access mode for the file in this way; that is,
-- whether the file descriptor was opened for reading or writing.
--
-- The normal return value from `fcntl' with this command is an
-- unspecified value other than -1, which indicates an error. The
-- error conditions are the same as for the `F_GETFL' command.
--
-- If you want to modify the file status flags, you should get the
--current flags with `F_GETFL' and modify the value. Don't assume that
--the flags listed here are the only ones that are implemented; your
--program may be run years from now and more flags may exist then. For
--example, here is a function to set or clear the flag `O_NONBLOCK'
--without altering any other flags:
--
-- /* Set the `O_NONBLOCK' flag of DESC if VALUE is nonzero,
-- or clear the flag if VALUE is 0.
-- Return 0 on success, or -1 on error with `errno' set. */
--
-- int
-- set_nonblock_flag (int desc, int value)
-- {
-- int oldflags = fcntl (desc, F_GETFL, 0);
-- /* If reading the flags failed, return error indication now. */
-- if (oldflags == -1)
-- return -1;
-- /* Set just the flag we want to set. */
-- if (value != 0)
-- oldflags |= O_NONBLOCK;
-- else
-- oldflags &= ~O_NONBLOCK;
-- /* Store modified flag word in the descriptor. */
-- return fcntl (desc, F_SETFL, oldflags);
-- }
--
--
--File: libc.info, Node: File Locks, Next: Interrupt Input, Prev: File Status Flags, Up: Low-Level I/O
--
--File Locks
--==========
--
-- The remaining `fcntl' commands are used to support "record locking",
--which permits multiple cooperating programs to prevent each other from
--simultaneously accessing parts of a file in error-prone ways.
--
-- An "exclusive" or "write" lock gives a process exclusive access for
--writing to the specified part of the file. While a write lock is in
--place, no other process can lock that part of the file.
--
-- A "shared" or "read" lock prohibits any other process from
--requesting a write lock on the specified part of the file. However,
--other processes can request read locks.
--
-- The `read' and `write' functions do not actually check to see
--whether there are any locks in place. If you want to implement a
--locking protocol for a file shared by multiple processes, your
--application must do explicit `fcntl' calls to request and clear locks
--at the appropriate points.
--
-- Locks are associated with processes. A process can only have one
--kind of lock set for each byte of a given file. When any file
--descriptor for that file is closed by the process, all of the locks
--that process holds on that file are released, even if the locks were
--made using other descriptors that remain open. Likewise, locks are
--released when a process exits, and are not inherited by child processes
--created using `fork' (*note Creating a Process::).
--
-- When making a lock, use a `struct flock' to specify what kind of
--lock and where. This data type and the associated macros for the
--`fcntl' function are declared in the header file `fcntl.h'.
--
-- - Data Type: struct flock
-- This structure is used with the `fcntl' function to describe a file
-- lock. It has these members:
--
-- `short int l_type'
-- Specifies the type of the lock; one of `F_RDLCK', `F_WRLCK',
-- or `F_UNLCK'.
--
-- `short int l_whence'
-- This corresponds to the WHENCE argument to `fseek' or
-- `lseek', and specifies what the offset is relative to. Its
-- value can be one of `SEEK_SET', `SEEK_CUR', or `SEEK_END'.
--
-- `off_t l_start'
-- This specifies the offset of the start of the region to which
-- the lock applies, and is given in bytes relative to the point
-- specified by `l_whence' member.
--
-- `off_t l_len'
-- This specifies the length of the region to be locked. A
-- value of `0' is treated specially; it means the region
-- extends to the end of the file.
--
-- `pid_t l_pid'
-- This field is the process ID (*note Process Creation
-- Concepts::) of the process holding the lock. It is filled in
-- by calling `fcntl' with the `F_GETLK' command, but is ignored
-- when making a lock.
--
-- - Macro: int F_GETLK
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should get information about a lock. This command
-- requires a third argument of type `struct flock *' to be passed to
-- `fcntl', so that the form of the call is:
--
-- fcntl (FILEDES, F_GETLK, LOCKP)
--
-- If there is a lock already in place that would block the lock
-- described by the LOCKP argument, information about that lock
-- overwrites `*LOCKP'. Existing locks are not reported if they are
-- compatible with making a new lock as specified. Thus, you should
-- specify a lock type of `F_WRLCK' if you want to find out about both
-- read and write locks, or `F_RDLCK' if you want to find out about
-- write locks only.
--
-- There might be more than one lock affecting the region specified
-- by the LOCKP argument, but `fcntl' only returns information about
-- one of them. The `l_whence' member of the LOCKP structure is set
-- to `SEEK_SET' and the `l_start' and `l_len' fields set to identify
-- the locked region.
--
-- If no lock applies, the only change to the LOCKP structure is to
-- update the `l_type' to a value of `F_UNLCK'.
--
-- The normal return value from `fcntl' with this command is an
-- unspecified value other than -1, which is reserved to indicate an
-- error. The following `errno' error conditions are defined for
-- this command:
--
-- `EBADF'
-- The FILEDES argument is invalid.
--
-- `EINVAL'
-- Either the LOCKP argument doesn't specify valid lock
-- information, or the file associated with FILEDES doesn't
-- support locks.
--
-- - Macro: int F_SETLK
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should set or clear a lock. This command requires a third
-- argument of type `struct flock *' to be passed to `fcntl', so that
-- the form of the call is:
--
-- fcntl (FILEDES, F_SETLK, LOCKP)
--
-- If the process already has a lock on any part of the region, the
-- old lock on that part is replaced with the new lock. You can
-- remove a lock by specifying a lock type of `F_UNLCK'.
--
-- If the lock cannot be set, `fcntl' returns immediately with a value
-- of -1. This function does not block waiting for other processes
-- to release locks. If `fcntl' succeeds, it return a value other
-- than -1.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EAGAIN'
-- `EACCES'
-- The lock cannot be set because it is blocked by an existing
-- lock on the file. Some systems use `EAGAIN' in this case,
-- and other systems use `EACCES'; your program should treat
-- them alike, after `F_SETLK'. (The GNU system always uses
-- `EAGAIN'.)
--
-- `EBADF'
-- Either: the FILEDES argument is invalid; you requested a read
-- lock but the FILEDES is not open for read access; or, you
-- requested a write lock but the FILEDES is not open for write
-- access.
--
-- `EINVAL'
-- Either the LOCKP argument doesn't specify valid lock
-- information, or the file associated with FILEDES doesn't
-- support locks.
--
-- `ENOLCK'
-- The system has run out of file lock resources; there are
-- already too many file locks in place.
--
-- Well-designed file systems never report this error, because
-- they have no limitation on the number of locks. However, you
-- must still take account of the possibility of this error, as
-- it could result from network access to a file system on
-- another machine.
--
-- - Macro: int F_SETLKW
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should set or clear a lock. It is just like the `F_SETLK'
-- command, but causes the process to block (or wait) until the
-- request can be specified.
--
-- This command requires a third argument of type `struct flock *', as
-- for the `F_SETLK' command.
--
-- The `fcntl' return values and errors are the same as for the
-- `F_SETLK' command, but these additional `errno' error conditions
-- are defined for this command:
--
-- `EINTR'
-- The function was interrupted by a signal while it was waiting.
-- *Note Interrupted Primitives::.
--
-- `EDEADLK'
-- The specified region is being locked by another process. But
-- that process is waiting to lock a region which the current
-- process has locked, so waiting for the lock would result in
-- deadlock. The system does not guarantee that it will detect
-- all such conditions, but it lets you know if it notices one.
--
-- The following macros are defined for use as values for the `l_type'
--member of the `flock' structure. The values are integer constants.
--
--`F_RDLCK'
-- This macro is used to specify a read (or shared) lock.
--
--`F_WRLCK'
-- This macro is used to specify a write (or exclusive) lock.
--
--`F_UNLCK'
-- This macro is used to specify that the region is unlocked.
--
-- As an example of a situation where file locking is useful, consider a
--program that can be run simultaneously by several different users, that
--logs status information to a common file. One example of such a program
--might be a game that uses a file to keep track of high scores. Another
--example might be a program that records usage or accounting information
--for billing purposes.
--
-- Having multiple copies of the program simultaneously writing to the
--file could cause the contents of the file to become mixed up. But you
--can prevent this kind of problem by setting a write lock on the file
--before actually writing to the file.
--
-- If the program also needs to read the file and wants to make sure
--that the contents of the file are in a consistent state, then it can
--also use a read lock. While the read lock is set, no other process can
--lock that part of the file for writing.
--
-- Remember that file locks are only a _voluntary_ protocol for
--controlling access to a file. There is still potential for access to
--the file by programs that don't use the lock protocol.
--
--
--File: libc.info, Node: Interrupt Input, Next: IOCTLs, Prev: File Locks, Up: Low-Level I/O
--
--Interrupt-Driven Input
--======================
--
-- If you set the `O_ASYNC' status flag on a file descriptor (*note
--File Status Flags::), a `SIGIO' signal is sent whenever input or output
--becomes possible on that file descriptor. The process or process group
--to receive the signal can be selected by using the `F_SETOWN' command
--to the `fcntl' function. If the file descriptor is a socket, this also
--selects the recipient of `SIGURG' signals that are delivered when
--out-of-band data arrives on that socket; see *Note Out-of-Band Data::.
--(`SIGURG' is sent in any situation where `select' would report the
--socket as having an "exceptional condition". *Note Waiting for I/O::.)
--
-- If the file descriptor corresponds to a terminal device, then `SIGIO'
--signals are sent to the foreground process group of the terminal.
--*Note Job Control::.
--
-- The symbols in this section are defined in the header file `fcntl.h'.
--
-- - Macro: int F_GETOWN
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should get information about the process or process group
-- to which `SIGIO' signals are sent. (For a terminal, this is
-- actually the foreground process group ID, which you can get using
-- `tcgetpgrp'; see *Note Terminal Access Functions::.)
--
-- The return value is interpreted as a process ID; if negative, its
-- absolute value is the process group ID.
--
-- The following `errno' error condition is defined for this command:
--
-- `EBADF'
-- The FILEDES argument is invalid.
--
-- - Macro: int F_SETOWN
-- This macro is used as the COMMAND argument to `fcntl', to specify
-- that it should set the process or process group to which `SIGIO'
-- signals are sent. This command requires a third argument of type
-- `pid_t' to be passed to `fcntl', so that the form of the call is:
--
-- fcntl (FILEDES, F_SETOWN, PID)
--
-- The PID argument should be a process ID. You can also pass a
-- negative number whose absolute value is a process group ID.
--
-- The return value from `fcntl' with this command is -1 in case of
-- error and some other value if successful. The following `errno'
-- error conditions are defined for this command:
--
-- `EBADF'
-- The FILEDES argument is invalid.
--
-- `ESRCH'
-- There is no process or process group corresponding to PID.
--
--
--File: libc.info, Node: IOCTLs, Prev: Interrupt Input, Up: Low-Level I/O
--
--Generic I/O Control operations
--==============================
--
-- The GNU system can handle most input/output operations on many
--different devices and objects in terms of a few file primitives -
--`read', `write' and `lseek'. However, most devices also have a few
--peculiar operations which do not fit into this model. Such as:
--
-- * Changing the character font used on a terminal.
--
-- * Telling a magnetic tape system to rewind or fast forward. (Since
-- they cannot move in byte increments, `lseek' is inapplicable).
--
-- * Ejecting a disk from a drive.
--
-- * Playing an audio track from a CD-ROM drive.
--
-- * Maintaining routing tables for a network.
--
--
-- Although some such objects such as sockets and terminals (1) have
--special functions of their own, it would not be practical to create
--functions for all these cases.
--
-- Instead these minor operations, known as "IOCTL"s, are assigned code
--numbers and multiplexed through the `ioctl' function, defined in
--`sys/ioctl.h'. The code numbers themselves are defined in many
--different headers.
--
-- - Function: int ioctl (int FILEDES, int COMMAND, ...)
-- The `ioctl' function performs the generic I/O operation COMMAND on
-- FILEDES.
--
-- A third argument is usually present, either a single number or a
-- pointer to a structure. The meaning of this argument, the
-- returned value, and any error codes depends upon the command used.
-- Often -1 is returned for a failure.
--
--
-- On some systems, IOCTLs used by different devices share the same
--numbers. Thus, although use of an inappropriate IOCTL _usually_ only
--produces an error, you should not attempt to use device-specific IOCTLs
--on an unknown device.
--
-- Most IOCTLs are OS-specific and/or only used in special system
--utilities, and are thus beyond the scope of this document. For an
--example of the use of an IOCTL, see *Note Out-of-Band Data::.
--
-- ---------- Footnotes ----------
--
-- (1) Actually, the terminal-specific functions are implemented with
--IOCTLs on many platforms.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-24 glibc-2.3.2-200304020432/manual/libc.info-24
---- glibc-2.3.2/manual/libc.info-24 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-24 Thu Jan 1 01:00:00 1970
-@@ -1,1174 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: File System Interface, Next: Pipes and FIFOs, Prev: Low-Level I/O, Up: Top
--
--File System Interface
--*********************
--
-- This chapter describes the GNU C library's functions for manipulating
--files. Unlike the input and output functions (*note I/O on Streams::;
--*note Low-Level I/O::), these functions are concerned with operating on
--the files themselves rather than on their contents.
--
-- Among the facilities described in this chapter are functions for
--examining or modifying directories, functions for renaming and deleting
--files, and functions for examining and setting file attributes such as
--access permissions and modification times.
--
--* Menu:
--
--* Working Directory:: This is used to resolve relative
-- file names.
--* Accessing Directories:: Finding out what files a directory
-- contains.
--* Working with Directory Trees:: Apply actions to all files or a selectable
-- subset of a directory hierarchy.
--* Hard Links:: Adding alternate names to a file.
--* Symbolic Links:: A file that ``points to'' a file name.
--* Deleting Files:: How to delete a file, and what that means.
--* Renaming Files:: Changing a file's name.
--* Creating Directories:: A system call just for creating a directory.
--* File Attributes:: Attributes of individual files.
--* Making Special Files:: How to create special files.
--* Temporary Files:: Naming and creating temporary files.
--
--
--File: libc.info, Node: Working Directory, Next: Accessing Directories, Up: File System Interface
--
--Working Directory
--=================
--
-- Each process has associated with it a directory, called its "current
--working directory" or simply "working directory", that is used in the
--resolution of relative file names (*note File Name Resolution::).
--
-- When you log in and begin a new session, your working directory is
--initially set to the home directory associated with your login account
--in the system user database. You can find any user's home directory
--using the `getpwuid' or `getpwnam' functions; see *Note User Database::.
--
-- Users can change the working directory using shell commands like
--`cd'. The functions described in this section are the primitives used
--by those commands and by other programs for examining and changing the
--working directory.
--
-- Prototypes for these functions are declared in the header file
--`unistd.h'.
--
-- - Function: char * getcwd (char *BUFFER, size_t SIZE)
-- The `getcwd' function returns an absolute file name representing
-- the current working directory, storing it in the character array
-- BUFFER that you provide. The SIZE argument is how you tell the
-- system the allocation size of BUFFER.
--
-- The GNU library version of this function also permits you to
-- specify a null pointer for the BUFFER argument. Then `getcwd'
-- allocates a buffer automatically, as with `malloc' (*note
-- Unconstrained Allocation::). If the SIZE is greater than zero,
-- then the buffer is that large; otherwise, the buffer is as large
-- as necessary to hold the result.
--
-- The return value is BUFFER on success and a null pointer on
-- failure. The following `errno' error conditions are defined for
-- this function:
--
-- `EINVAL'
-- The SIZE argument is zero and BUFFER is not a null pointer.
--
-- `ERANGE'
-- The SIZE argument is less than the length of the working
-- directory name. You need to allocate a bigger array and try
-- again.
--
-- `EACCES'
-- Permission to read or search a component of the file name was
-- denied.
--
-- You could implement the behavior of GNU's `getcwd (NULL, 0)' using
--only the standard behavior of `getcwd':
--
-- char *
-- gnu_getcwd ()
-- {
-- size_t size = 100;
--
-- while (1)
-- {
-- char *buffer = (char *) xmalloc (size);
-- if (getcwd (buffer, size) == buffer)
-- return buffer;
-- free (buffer);
-- if (errno != ERANGE)
-- return 0;
-- size *= 2;
-- }
-- }
--
--*Note Malloc Examples::, for information about `xmalloc', which is not
--a library function but is a customary name used in most GNU software.
--
-- - Deprecated Function: char * getwd (char *BUFFER)
-- This is similar to `getcwd', but has no way to specify the size of
-- the buffer. The GNU library provides `getwd' only for backwards
-- compatibility with BSD.
--
-- The BUFFER argument should be a pointer to an array at least
-- `PATH_MAX' bytes long (*note Limits for Files::). In the GNU
-- system there is no limit to the size of a file name, so this is not
-- necessarily enough space to contain the directory name. That is
-- why this function is deprecated.
--
-- - Function: char * get_current_dir_name (void)
-- This `get_current_dir_name' function is bascially equivalent to
-- `getcwd (NULL, 0)'. The only difference is that the value of the
-- `PWD' variable is returned if this value is correct. This is a
-- subtle difference which is visible if the path described by the
-- `PWD' value is using one or more symbol links in which case the
-- value returned by `getcwd' can resolve the symbol links and
-- therefore yield a different result.
--
-- This function is a GNU extension.
--
-- - Function: int chdir (const char *FILENAME)
-- This function is used to set the process's working directory to
-- FILENAME.
--
-- The normal, successful return value from `chdir' is `0'. A value
-- of `-1' is returned to indicate an error. The `errno' error
-- conditions defined for this function are the usual file name
-- syntax errors (*note File Name Errors::), plus `ENOTDIR' if the
-- file FILENAME is not a directory.
--
-- - Function: int fchdir (int FILEDES)
-- This function is used to set the process's working directory to
-- directory associated with the file descriptor FILEDES.
--
-- The normal, successful return value from `fchdir' is `0'. A value
-- of `-1' is returned to indicate an error. The following `errno'
-- error conditions are defined for this function:
--
-- `EACCES'
-- Read permission is denied for the directory named by
-- `dirname'.
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOTDIR'
-- The file descriptor FILEDES is not associated with a
-- directory.
--
-- `EINTR'
-- The function call was interrupt by a signal.
--
-- `EIO'
-- An I/O error occurred.
--
--
--File: libc.info, Node: Accessing Directories, Next: Working with Directory Trees, Prev: Working Directory, Up: File System Interface
--
--Accessing Directories
--=====================
--
-- The facilities described in this section let you read the contents
--of a directory file. This is useful if you want your program to list
--all the files in a directory, perhaps as part of a menu.
--
-- The `opendir' function opens a "directory stream" whose elements are
--directory entries. You use the `readdir' function on the directory
--stream to retrieve these entries, represented as `struct dirent'
--objects. The name of the file for each entry is stored in the `d_name'
--member of this structure. There are obvious parallels here to the
--stream facilities for ordinary files, described in *Note I/O on
--Streams::.
--
--* Menu:
--
--* Directory Entries:: Format of one directory entry.
--* Opening a Directory:: How to open a directory stream.
--* Reading/Closing Directory:: How to read directory entries from the stream.
--* Simple Directory Lister:: A very simple directory listing program.
--* Random Access Directory:: Rereading part of the directory
-- already read with the same stream.
--* Scanning Directory Content:: Get entries for user selected subset of
-- contents in given directory.
--* Simple Directory Lister Mark II:: Revised version of the program.
--
--
--File: libc.info, Node: Directory Entries, Next: Opening a Directory, Up: Accessing Directories
--
--Format of a Directory Entry
-----------------------------
--
-- This section describes what you find in a single directory entry, as
--you might obtain it from a directory stream. All the symbols are
--declared in the header file `dirent.h'.
--
-- - Data Type: struct dirent
-- This is a structure type used to return information about directory
-- entries. It contains the following fields:
--
-- `char d_name[]'
-- This is the null-terminated file name component. This is the
-- only field you can count on in all POSIX systems.
--
-- `ino_t d_fileno'
-- This is the file serial number. For BSD compatibility, you
-- can also refer to this member as `d_ino'. In the GNU system
-- and most POSIX systems, for most files this the same as the
-- `st_ino' member that `stat' will return for the file. *Note
-- File Attributes::.
--
-- `unsigned char d_namlen'
-- This is the length of the file name, not including the
-- terminating null character. Its type is `unsigned char'
-- because that is the integer type of the appropriate size
--
-- `unsigned char d_type'
-- This is the type of the file, possibly unknown. The
-- following constants are defined for its value:
--
-- `DT_UNKNOWN'
-- The type is unknown. On some systems this is the only
-- value returned.
--
-- `DT_REG'
-- A regular file.
--
-- `DT_DIR'
-- A directory.
--
-- `DT_FIFO'
-- A named pipe, or FIFO. *Note FIFO Special Files::.
--
-- `DT_SOCK'
-- A local-domain socket.
--
-- `DT_CHR'
-- A character device.
--
-- `DT_BLK'
-- A block device.
--
-- This member is a BSD extension. The symbol
-- `_DIRENT_HAVE_D_TYPE' is defined if this member is available.
-- On systems where it is used, it corresponds to the file type
-- bits in the `st_mode' member of `struct statbuf'. If the
-- value cannot be determine the member value is DT_UNKNOWN.
-- These two macros convert between `d_type' values and
-- `st_mode' values:
--
-- - Function: int IFTODT (mode_t MODE)
-- This returns the `d_type' value corresponding to MODE.
--
-- - Function: mode_t DTTOIF (int DTYPE)
-- This returns the `st_mode' value corresponding to DTYPE.
--
-- This structure may contain additional members in the future. Their
-- availability is always announced in the compilation environment by
-- a macro names `_DIRENT_HAVE_D_XXX' where XXX is replaced by the
-- name of the new member. For instance, the member `d_reclen'
-- available on some systems is announced through the macro
-- `_DIRENT_HAVE_D_RECLEN'.
--
-- When a file has multiple names, each name has its own directory
-- entry. The only way you can tell that the directory entries
-- belong to a single file is that they have the same value for the
-- `d_fileno' field.
--
-- File attributes such as size, modification times etc., are part of
-- the file itself, not of any particular directory entry. *Note
-- File Attributes::.
--
--
--File: libc.info, Node: Opening a Directory, Next: Reading/Closing Directory, Prev: Directory Entries, Up: Accessing Directories
--
--Opening a Directory Stream
----------------------------
--
-- This section describes how to open a directory stream. All the
--symbols are declared in the header file `dirent.h'.
--
-- - Data Type: DIR
-- The `DIR' data type represents a directory stream.
--
-- You shouldn't ever allocate objects of the `struct dirent' or `DIR'
--data types, since the directory access functions do that for you.
--Instead, you refer to these objects using the pointers returned by the
--following functions.
--
-- - Function: DIR * opendir (const char *DIRNAME)
-- The `opendir' function opens and returns a directory stream for
-- reading the directory whose file name is DIRNAME. The stream has
-- type `DIR *'.
--
-- If unsuccessful, `opendir' returns a null pointer. In addition to
-- the usual file name errors (*note File Name Errors::), the
-- following `errno' error conditions are defined for this function:
--
-- `EACCES'
-- Read permission is denied for the directory named by
-- `dirname'.
--
-- `EMFILE'
-- The process has too many files open.
--
-- `ENFILE'
-- The entire system, or perhaps the file system which contains
-- the directory, cannot support any additional open files at
-- the moment. (This problem cannot happen on the GNU system.)
--
-- The `DIR' type is typically implemented using a file descriptor,
-- and the `opendir' function in terms of the `open' function. *Note
-- Low-Level I/O::. Directory streams and the underlying file
-- descriptors are closed on `exec' (*note Executing a File::).
--
-- In some situations it can be desirable to get hold of the file
--descriptor which is created by the `opendir' call. For instance, to
--switch the current working directory to the directory just read the
--`fchdir' function could be used. Historically the `DIR' type was
--exposed and programs could access the fields. This does not happen in
--the GNU C library. Instead a separate function is provided to allow
--access.
--
-- - Function: int dirfd (DIR *DIRSTREAM)
-- The function `dirfd' returns the file descriptor associated with
-- the directory stream DIRSTREAM. This descriptor can be used until
-- the directory is closed with `closedir'. If the directory stream
-- implementation is not using file descriptors the return value is
-- `-1'.
--
--
--File: libc.info, Node: Reading/Closing Directory, Next: Simple Directory Lister, Prev: Opening a Directory, Up: Accessing Directories
--
--Reading and Closing a Directory Stream
----------------------------------------
--
-- This section describes how to read directory entries from a directory
--stream, and how to close the stream when you are done with it. All the
--symbols are declared in the header file `dirent.h'.
--
-- - Function: struct dirent * readdir (DIR *DIRSTREAM)
-- This function reads the next entry from the directory. It normally
-- returns a pointer to a structure containing information about the
-- file. This structure is statically allocated and can be rewritten
-- by a subsequent call.
--
-- *Portability Note:* On some systems `readdir' may not return
-- entries for `.' and `..', even though these are always valid file
-- names in any directory. *Note File Name Resolution::.
--
-- If there are no more entries in the directory or an error is
-- detected, `readdir' returns a null pointer. The following `errno'
-- error conditions are defined for this function:
--
-- `EBADF'
-- The DIRSTREAM argument is not valid.
--
-- `readdir' is not thread safe. Multiple threads using `readdir' on
-- the same DIRSTREAM may overwrite the return value. Use
-- `readdir_r' when this is critical.
--
-- - Function: int readdir_r (DIR *DIRSTREAM, struct dirent *ENTRY,
-- struct dirent **RESULT)
-- This function is the reentrant version of `readdir'. Like
-- `readdir' it returns the next entry from the directory. But to
-- prevent conflicts between simultaneously running threads the
-- result is not stored in statically allocated memory. Instead the
-- argument ENTRY points to a place to store the result.
--
-- Normally `readdir_r' returns zero and sets `*RESULT' to ENTRY. If
-- there are no more entries in the directory or an error is
-- detected, `readdir_r' sets `*RESULT' to a null pointer and returns
-- a nonzero error code, also stored in `errno', as described for
-- `readdir'.
--
-- *Portability Note:* On some systems `readdir_r' may not return a
-- NUL terminated string for the file name, even when there is no
-- `d_reclen' field in `struct dirent' and the file name is the
-- maximum allowed size. Modern systems all have the `d_reclen'
-- field, and on old systems multi-threading is not critical. In any
-- case there is no such problem with the `readdir' function, so that
-- even on systems without the `d_reclen' member one could use
-- multiple threads by using external locking.
--
-- It is also important to look at the definition of the `struct
-- dirent' type. Simply passing a pointer to an object of this type
-- for the second parameter of `readdir_r' might not be enough. Some
-- systems don't define the `d_name' element sufficiently long. In
-- this case the user has to provide additional space. There must be
-- room for at least `NAME_MAX + 1' characters in the `d_name' array.
-- Code to call `readdir_r' could look like this:
--
-- union
-- {
-- struct dirent d;
-- char b[offsetof (struct dirent, d_name) + NAME_MAX + 1];
-- } u;
--
-- if (readdir_r (dir, &u.d, &res) == 0)
-- ...
--
-- To support large filesystems on 32-bit machines there are LFS
--variants of the last two functions.
--
-- - Function: struct dirent64 * readdir64 (DIR *DIRSTREAM)
-- The `readdir64' function is just like the `readdir' function
-- except that it returns a pointer to a record of type `struct
-- dirent64'. Some of the members of this data type (notably `d_ino')
-- might have a different size to allow large filesystems.
--
-- In all other aspects this function is equivalent to `readdir'.
--
-- - Function: int readdir64_r (DIR *DIRSTREAM, struct dirent64 *ENTRY,
-- struct dirent64 **RESULT)
-- The `readdir64_r' function is equivalent to the `readdir_r'
-- function except that it takes parameters of base type `struct
-- dirent64' instead of `struct dirent' in the second and third
-- position. The same precautions mentioned in the documentation of
-- `readdir_r' also apply here.
--
-- - Function: int closedir (DIR *DIRSTREAM)
-- This function closes the directory stream DIRSTREAM. It returns
-- `0' on success and `-1' on failure.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EBADF'
-- The DIRSTREAM argument is not valid.
--
--
--File: libc.info, Node: Simple Directory Lister, Next: Random Access Directory, Prev: Reading/Closing Directory, Up: Accessing Directories
--
--Simple Program to List a Directory
------------------------------------
--
-- Here's a simple program that prints the names of the files in the
--current working directory:
--
-- #include <stdio.h>
-- #include <sys/types.h>
-- #include <dirent.h>
--
-- int
-- main (void)
-- {
-- DIR *dp;
-- struct dirent *ep;
--
-- dp = opendir ("./");
-- if (dp != NULL)
-- {
-- while (ep = readdir (dp))
-- puts (ep->d_name);
-- (void) closedir (dp);
-- }
-- else
-- perror ("Couldn't open the directory");
--
-- return 0;
-- }
--
-- The order in which files appear in a directory tends to be fairly
--random. A more useful program would sort the entries (perhaps by
--alphabetizing them) before printing them; see *Note Scanning Directory
--Content::, and *Note Array Sort Function::.
--
--
--File: libc.info, Node: Random Access Directory, Next: Scanning Directory Content, Prev: Simple Directory Lister, Up: Accessing Directories
--
--Random Access in a Directory Stream
-------------------------------------
--
-- This section describes how to reread parts of a directory that you
--have already read from an open directory stream. All the symbols are
--declared in the header file `dirent.h'.
--
-- - Function: void rewinddir (DIR *DIRSTREAM)
-- The `rewinddir' function is used to reinitialize the directory
-- stream DIRSTREAM, so that if you call `readdir' it returns
-- information about the first entry in the directory again. This
-- function also notices if files have been added or removed to the
-- directory since it was opened with `opendir'. (Entries for these
-- files might or might not be returned by `readdir' if they were
-- added or removed since you last called `opendir' or `rewinddir'.)
--
-- - Function: off_t telldir (DIR *DIRSTREAM)
-- The `telldir' function returns the file position of the directory
-- stream DIRSTREAM. You can use this value with `seekdir' to
-- restore the directory stream to that position.
--
-- - Function: void seekdir (DIR *DIRSTREAM, off_t POS)
-- The `seekdir' function sets the file position of the directory
-- stream DIRSTREAM to POS. The value POS must be the result of a
-- previous call to `telldir' on this particular stream; closing and
-- reopening the directory can invalidate values returned by
-- `telldir'.
--
--
--File: libc.info, Node: Scanning Directory Content, Next: Simple Directory Lister Mark II, Prev: Random Access Directory, Up: Accessing Directories
--
--Scanning the Content of a Directory
-------------------------------------
--
-- A higher-level interface to the directory handling functions is the
--`scandir' function. With its help one can select a subset of the
--entries in a directory, possibly sort them and get a list of names as
--the result.
--
-- - Function: int scandir (const char *DIR, struct dirent ***NAMELIST,
-- int (*SELECTOR) (const struct dirent *), int (*CMP) (const
-- void *, const void *))
-- The `scandir' function scans the contents of the directory selected
-- by DIR. The result in *NAMELIST is an array of pointers to
-- structure of type `struct dirent' which describe all selected
-- directory entries and which is allocated using `malloc'. Instead
-- of always getting all directory entries returned, the user supplied
-- function SELECTOR can be used to decide which entries are in the
-- result. Only the entries for which SELECTOR returns a non-zero
-- value are selected.
--
-- Finally the entries in *NAMELIST are sorted using the
-- user-supplied function CMP. The arguments passed to the CMP
-- function are of type `struct dirent **', therefore one cannot
-- directly use the `strcmp' or `strcoll' functions; instead see the
-- functions `alphasort' and `versionsort' below.
--
-- The return value of the function is the number of entries placed in
-- *NAMELIST. If it is `-1' an error occurred (either the directory
-- could not be opened for reading or the malloc call failed) and the
-- global variable `errno' contains more information on the error.
--
-- As described above the fourth argument to the `scandir' function
--must be a pointer to a sorting function. For the convenience of the
--programmer the GNU C library contains implementations of functions which
--are very helpful for this purpose.
--
-- - Function: int alphasort (const void *A, const void *B)
-- The `alphasort' function behaves like the `strcoll' function
-- (*note String/Array Comparison::). The difference is that the
-- arguments are not string pointers but instead they are of type
-- `struct dirent **'.
--
-- The return value of `alphasort' is less than, equal to, or greater
-- than zero depending on the order of the two entries A and B.
--
-- - Function: int versionsort (const void *A, const void *B)
-- The `versionsort' function is like `alphasort' except that it uses
-- the `strverscmp' function internally.
--
-- If the filesystem supports large files we cannot use the `scandir'
--anymore since the `dirent' structure might not able to contain all the
--information. The LFS provides the new type `struct dirent64'. To use
--this we need a new function.
--
-- - Function: int scandir64 (const char *DIR, struct dirent64
-- ***NAMELIST, int (*SELECTOR) (const struct dirent64 *), int
-- (*CMP) (const void *, const void *))
-- The `scandir64' function works like the `scandir' function except
-- that the directory entries it returns are described by elements of
-- type `struct dirent64'. The function pointed to by SELECTOR is
-- again used to select the desired entries, except that SELECTOR now
-- must point to a function which takes a `struct dirent64 *'
-- parameter.
--
-- Similarly the CMP function should expect its two arguments to be
-- of type `struct dirent64 **'.
--
-- As CMP is now a function of a different type, the functions
--`alphasort' and `versionsort' cannot be supplied for that argument.
--Instead we provide the two replacement functions below.
--
-- - Function: int alphasort64 (const void *A, const void *B)
-- The `alphasort64' function behaves like the `strcoll' function
-- (*note String/Array Comparison::). The difference is that the
-- arguments are not string pointers but instead they are of type
-- `struct dirent64 **'.
--
-- Return value of `alphasort64' is less than, equal to, or greater
-- than zero depending on the order of the two entries A and B.
--
-- - Function: int versionsort64 (const void *A, const void *B)
-- The `versionsort64' function is like `alphasort64', excepted that
-- it uses the `strverscmp' function internally.
--
-- It is important not to mix the use of `scandir' and the 64-bit
--comparison functions or vice versa. There are systems on which this
--works but on others it will fail miserably.
--
--
--File: libc.info, Node: Simple Directory Lister Mark II, Prev: Scanning Directory Content, Up: Accessing Directories
--
--Simple Program to List a Directory, Mark II
---------------------------------------------
--
-- Here is a revised version of the directory lister found above (*note
--Simple Directory Lister::). Using the `scandir' function we can avoid
--the functions which work directly with the directory contents. After
--the call the returned entries are available for direct use.
--
-- #include <stdio.h>
-- #include <dirent.h>
--
-- static int
-- one (struct dirent *unused)
-- {
-- return 1;
-- }
--
-- int
-- main (void)
-- {
-- struct dirent **eps;
-- int n;
--
-- n = scandir ("./", &eps, one, alphasort);
-- if (n >= 0)
-- {
-- int cnt;
-- for (cnt = 0; cnt < n; ++cnt)
-- puts (eps[cnt]->d_name);
-- }
-- else
-- perror ("Couldn't open the directory");
--
-- return 0;
-- }
--
-- Note the simple selector function in this example. Since we want to
--see all directory entries we always return `1'.
--
--
--File: libc.info, Node: Working with Directory Trees, Next: Hard Links, Prev: Accessing Directories, Up: File System Interface
--
--Working with Directory Trees
--============================
--
-- The functions described so far for handling the files in a directory
--have allowed you to either retrieve the information bit by bit, or to
--process all the files as a group (see `scandir'). Sometimes it is
--useful to process whole hierarchies of directories and their contained
--files. The X/Open specification defines two functions to do this. The
--simpler form is derived from an early definition in System V systems
--and therefore this function is available on SVID-derived systems. The
--prototypes and required definitions can be found in the `ftw.h' header.
--
-- There are four functions in this family: `ftw', `nftw' and their
--64-bit counterparts `ftw64' and `nftw64'. These functions take as one
--of their arguments a pointer to a callback function of the appropriate
--type.
--
-- - Data Type: __ftw_func_t
-- int (*) (const char *, const struct stat *, int)
--
-- The type of callback functions given to the `ftw' function. The
-- first parameter points to the file name, the second parameter to an
-- object of type `struct stat' which is filled in for the file named
-- in the first parameter.
--
-- The last parameter is a flag giving more information about the
-- current file. It can have the following values:
--
-- `FTW_F'
-- The item is either a normal file or a file which does not fit
-- into one of the following categories. This could be special
-- files, sockets etc.
--
-- `FTW_D'
-- The item is a directory.
--
-- `FTW_NS'
-- The `stat' call failed and so the information pointed to by
-- the second paramater is invalid.
--
-- `FTW_DNR'
-- The item is a directory which cannot be read.
--
-- `FTW_SL'
-- The item is a symbolic link. Since symbolic links are
-- normally followed seeing this value in a `ftw' callback
-- function means the referenced file does not exist. The
-- situation for `nftw' is different.
--
-- This value is only available if the program is compiled with
-- `_BSD_SOURCE' or `_XOPEN_EXTENDED' defined before including
-- the first header. The original SVID systems do not have
-- symbolic links.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- type is in fact `__ftw64_func_t' since this mode changes `struct
-- stat' to be `struct stat64'.
--
-- For the LFS interface and for use in the function `ftw64', the
--header `ftw.h' defines another function type.
--
-- - Data Type: __ftw64_func_t
-- int (*) (const char *, const struct stat64 *, int)
--
-- This type is used just like `__ftw_func_t' for the callback
-- function, but this time is called from `ftw64'. The second
-- parameter to the function is a pointer to a variable of type
-- `struct stat64' which is able to represent the larger values.
--
-- - Data Type: __nftw_func_t
-- int (*) (const char *, const struct stat *, int, struct FTW *)
--
-- The first three arguments are the same as for the `__ftw_func_t'
-- type. However for the third argument some additional values are
-- defined to allow finer differentiation:
-- `FTW_DP'
-- The current item is a directory and all subdirectories have
-- already been visited and reported. This flag is returned
-- instead of `FTW_D' if the `FTW_DEPTH' flag is passed to
-- `nftw' (see below).
--
-- `FTW_SLN'
-- The current item is a stale symbolic link. The file it
-- points to does not exist.
--
-- The last parameter of the callback function is a pointer to a
-- structure with some extra information as described below.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- type is in fact `__nftw64_func_t' since this mode changes `struct
-- stat' to be `struct stat64'.
--
-- For the LFS interface there is also a variant of this data type
--available which has to be used with the `nftw64' function.
--
-- - Data Type: __nftw64_func_t
-- int (*) (const char *, const struct stat64 *, int, struct FTW *)
--
-- This type is used just like `__nftw_func_t' for the callback
-- function, but this time is called from `nftw64'. The second
-- parameter to the function is this time a pointer to a variable of
-- type `struct stat64' which is able to represent the larger values.
--
-- - Data Type: struct FTW
-- The information contained in this structure helps in interpreting
-- the name parameter and gives some information about the current
-- state of the traversal of the directory hierarchy.
--
-- `int base'
-- The value is the offset into the string passed in the first
-- parameter to the callback function of the beginning of the
-- file name. The rest of the string is the path of the file.
-- This information is especially important if the `FTW_CHDIR'
-- flag was set in calling `nftw' since then the current
-- directory is the one the current item is found in.
--
-- `int level'
-- Whilst processing, the code tracks how many directories down
-- it has gone to find the current file. This nesting level
-- starts at 0 for files in the initial directory (or is zero
-- for the initial file if a file was passed).
--
-- - Function: int ftw (const char *FILENAME, __ftw_func_t FUNC, int
-- DESCRIPTORS)
-- The `ftw' function calls the callback function given in the
-- parameter FUNC for every item which is found in the directory
-- specified by FILENAME and all directories below. The function
-- follows symbolic links if necessary but does not process an item
-- twice. If FILENAME is not a directory then it itself is the only
-- object returned to the callback function.
--
-- The file name passed to the callback function is constructed by
-- taking the FILENAME parameter and appending the names of all passed
-- directories and then the local file name. So the callback
-- function can use this parameter to access the file. `ftw' also
-- calls `stat' for the file and passes that information on to the
-- callback function. If this `stat' call was not successful the
-- failure is indicated by setting the third argument of the callback
-- function to `FTW_NS'. Otherwise it is set according to the
-- description given in the account of `__ftw_func_t' above.
--
-- The callback function is expected to return 0 to indicate that no
-- error occurred and that processing should continue. If an error
-- occurred in the callback function or it wants `ftw' to return
-- immediately, the callback function can return a value other than
-- 0. This is the only correct way to stop the function. The
-- program must not use `setjmp' or similar techniques to continue
-- from another place. This would leave resources allocated by the
-- `ftw' function unfreed.
--
-- The DESCRIPTORS parameter to `ftw' specifies how many file
-- descriptors it is allowed to consume. The function runs faster
-- the more descriptors it can use. For each level in the directory
-- hierarchy at most one descriptor is used, but for very deep ones
-- any limit on open file descriptors for the process or the system
-- may be exceeded. Moreover, file descriptor limits in a
-- multi-threaded program apply to all the threads as a group, and
-- therefore it is a good idea to supply a reasonable limit to the
-- number of open descriptors.
--
-- The return value of the `ftw' function is 0 if all callback
-- function calls returned 0 and all actions performed by the `ftw'
-- succeeded. If a function call failed (other than calling `stat'
-- on an item) the function returns -1. If a callback function
-- returns a value other than 0 this value is returned as the return
-- value of `ftw'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is in fact `ftw64', i.e. the LFS
-- interface transparently replaces the old interface.
--
-- - Function: int ftw64 (const char *FILENAME, __ftw64_func_t FUNC, int
-- DESCRIPTORS)
-- This function is similar to `ftw' but it can work on filesystems
-- with large files. File information is reported using a variable
-- of type `struct stat64' which is passed by reference to the
-- callback function.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is available under the name `ftw' and
-- transparently replaces the old implementation.
--
-- - Function: int nftw (const char *FILENAME, __nftw_func_t FUNC, int
-- DESCRIPTORS, int FLAG)
-- The `nftw' function works like the `ftw' functions. They call the
-- callback function FUNC for all items found in the directory
-- FILENAME and below. At most DESCRIPTORS file descriptors are
-- consumed during the `nftw' call.
--
-- One difference is that the callback function is of a different
-- type. It is of type `struct FTW *' and provides the callback
-- function with the extra information described above.
--
-- A second difference is that `nftw' takes a fourth argument, which
-- is 0 or a bitwise-OR combination of any of the following values.
--
-- `FTW_PHYS'
-- While traversing the directory symbolic links are not
-- followed. Instead symbolic links are reported using the
-- `FTW_SL' value for the type parameter to the callback
-- function. If the file referenced by a symbolic link does not
-- exist `FTW_SLN' is returned instead.
--
-- `FTW_MOUNT'
-- The callback function is only called for items which are on
-- the same mounted filesystem as the directory given by the
-- FILENAME parameter to `nftw'.
--
-- `FTW_CHDIR'
-- If this flag is given the current working directory is
-- changed to the directory of the reported object before the
-- callback function is called. When `ntfw' finally returns the
-- current directory is restored to its original value.
--
-- `FTW_DEPTH'
-- If this option is specified then all subdirectories and files
-- within them are processed before processing the top directory
-- itself (depth-first processing). This also means the type
-- flag given to the callback function is `FTW_DP' and not
-- `FTW_D'.
--
-- The return value is computed in the same way as for `ftw'. `nftw'
-- returns 0 if no failures occurred and all callback functions
-- returned 0. In case of internal errors, such as memory problems,
-- the return value is -1 and ERRNO is set accordingly. If the
-- return value of a callback invocation was non-zero then that value
-- is returned.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is in fact `nftw64', i.e. the LFS
-- interface transparently replaces the old interface.
--
-- - Function: int nftw64 (const char *FILENAME, __nftw64_func_t FUNC,
-- int DESCRIPTORS, int FLAG)
-- This function is similar to `nftw' but it can work on filesystems
-- with large files. File information is reported using a variable
-- of type `struct stat64' which is passed by reference to the
-- callback function.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is available under the name `nftw' and
-- transparently replaces the old implementation.
--
--
--File: libc.info, Node: Hard Links, Next: Symbolic Links, Prev: Working with Directory Trees, Up: File System Interface
--
--Hard Links
--==========
--
-- In POSIX systems, one file can have many names at the same time.
--All of the names are equally real, and no one of them is preferred to
--the others.
--
-- To add a name to a file, use the `link' function. (The new name is
--also called a "hard link" to the file.) Creating a new link to a file
--does not copy the contents of the file; it simply makes a new name by
--which the file can be known, in addition to the file's existing name or
--names.
--
-- One file can have names in several directories, so the organization
--of the file system is not a strict hierarchy or tree.
--
-- In most implementations, it is not possible to have hard links to the
--same file in multiple file systems. `link' reports an error if you try
--to make a hard link to the file from another file system when this
--cannot be done.
--
-- The prototype for the `link' function is declared in the header file
--`unistd.h'.
--
-- - Function: int link (const char *OLDNAME, const char *NEWNAME)
-- The `link' function makes a new link to the existing file named by
-- OLDNAME, under the new name NEWNAME.
--
-- This function returns a value of `0' if it is successful and `-1'
-- on failure. In addition to the usual file name errors (*note File
-- Name Errors::) for both OLDNAME and NEWNAME, the following `errno'
-- error conditions are defined for this function:
--
-- `EACCES'
-- You are not allowed to write to the directory in which the
-- new link is to be written.
--
-- `EEXIST'
-- There is already a file named NEWNAME. If you want to replace
-- this link with a new link, you must remove the old link
-- explicitly first.
--
-- `EMLINK'
-- There are already too many links to the file named by OLDNAME.
-- (The maximum number of links to a file is `LINK_MAX'; see
-- *Note Limits for Files::.)
--
-- `ENOENT'
-- The file named by OLDNAME doesn't exist. You can't make a
-- link to a file that doesn't exist.
--
-- `ENOSPC'
-- The directory or file system that would contain the new link
-- is full and cannot be extended.
--
-- `EPERM'
-- In the GNU system and some others, you cannot make links to
-- directories. Many systems allow only privileged users to do
-- so. This error is used to report the problem.
--
-- `EROFS'
-- The directory containing the new link can't be modified
-- because it's on a read-only file system.
--
-- `EXDEV'
-- The directory specified in NEWNAME is on a different file
-- system than the existing file.
--
-- `EIO'
-- A hardware error occurred while trying to read or write the
-- to filesystem.
--
--
--File: libc.info, Node: Symbolic Links, Next: Deleting Files, Prev: Hard Links, Up: File System Interface
--
--Symbolic Links
--==============
--
-- The GNU system supports "soft links" or "symbolic links". This is a
--kind of "file" that is essentially a pointer to another file name.
--Unlike hard links, symbolic links can be made to directories or across
--file systems with no restrictions. You can also make a symbolic link
--to a name which is not the name of any file. (Opening this link will
--fail until a file by that name is created.) Likewise, if the symbolic
--link points to an existing file which is later deleted, the symbolic
--link continues to point to the same file name even though the name no
--longer names any file.
--
-- The reason symbolic links work the way they do is that special things
--happen when you try to open the link. The `open' function realizes you
--have specified the name of a link, reads the file name contained in the
--link, and opens that file name instead. The `stat' function likewise
--operates on the file that the symbolic link points to, instead of on
--the link itself.
--
-- By contrast, other operations such as deleting or renaming the file
--operate on the link itself. The functions `readlink' and `lstat' also
--refrain from following symbolic links, because their purpose is to
--obtain information about the link. `link', the function that makes a
--hard link, does too. It makes a hard link to the symbolic link, which
--one rarely wants.
--
-- Some systems have for some functions operating on files have a limit
--on how many symbolic links are followed when resolving a path name. The
--limit if it exists is published in the `sys/param.h' header file.
--
-- - Macro: int MAXSYMLINKS
-- The macro `MAXSYMLINKS' specifies how many symlinks some function
-- will follow before returning `ELOOP'. Not all functions behave the
-- same and this value is not the same a that returned for
-- `_SC_SYMLOOP' by `sysconf'. In fact, the `sysconf' result can
-- indicate that there is no fixed limit although `MAXSYMLINKS'
-- exists and has a finite value.
--
-- Prototypes for most of the functions listed in this section are in
--`unistd.h'.
--
-- - Function: int symlink (const char *OLDNAME, const char *NEWNAME)
-- The `symlink' function makes a symbolic link to OLDNAME named
-- NEWNAME.
--
-- The normal return value from `symlink' is `0'. A return value of
-- `-1' indicates an error. In addition to the usual file name
-- syntax errors (*note File Name Errors::), the following `errno'
-- error conditions are defined for this function:
--
-- `EEXIST'
-- There is already an existing file named NEWNAME.
--
-- `EROFS'
-- The file NEWNAME would exist on a read-only file system.
--
-- `ENOSPC'
-- The directory or file system cannot be extended to make the
-- new link.
--
-- `EIO'
-- A hardware error occurred while reading or writing data on
-- the disk.
--
--
-- - Function: int readlink (const char *FILENAME, char *BUFFER, size_t
-- SIZE)
-- The `readlink' function gets the value of the symbolic link
-- FILENAME. The file name that the link points to is copied into
-- BUFFER. This file name string is _not_ null-terminated;
-- `readlink' normally returns the number of characters copied. The
-- SIZE argument specifies the maximum number of characters to copy,
-- usually the allocation size of BUFFER.
--
-- If the return value equals SIZE, you cannot tell whether or not
-- there was room to return the entire name. So make a bigger buffer
-- and call `readlink' again. Here is an example:
--
-- char *
-- readlink_malloc (const char *filename)
-- {
-- int size = 100;
-- char *buffer = NULL;
--
-- while (1)
-- {
-- buffer = (char *) xrealloc (buffer, size);
-- int nchars = readlink (filename, buffer, size);
-- if (nchars < 0)
-- {
-- free (buffer);
-- return NULL;
-- }
-- if (nchars < size)
-- return buffer;
-- size *= 2;
-- }
-- }
--
-- A value of `-1' is returned in case of error. In addition to the
-- usual file name errors (*note File Name Errors::), the following
-- `errno' error conditions are defined for this function:
--
-- `EINVAL'
-- The named file is not a symbolic link.
--
-- `EIO'
-- A hardware error occurred while reading or writing data on
-- the disk.
--
-- In some situations it is desirable to resolve all the symbolic links
--to get the real name of a file where no prefix names a symbolic link
--which is followed and no filename in the path is `.' or `..'. This is
--for instance desirable if files have to be compare in which case
--different names can refer to the same inode.
--
-- - Function: char * canonicalize_file_name (const char *NAME)
-- The `canonicalize_file_name' function returns the absolute name of
-- the file named by NAME which contains no `.', `..' components nor
-- any repeated path separators (`/') or symlinks. The result is
-- passed back as the return value of the function in a block of
-- memory allocated with `malloc'. If the result is not used anymore
-- the memory should be freed with a call to `free'.
--
-- In any of the path components except the last one is missing the
-- function returns a NULL pointer. This is also what is returned if
-- the length of the path reaches or exceeds `PATH_MAX' characters.
-- In any case `errno' is set accordingly.
--
-- `ENAMETOOLONG'
-- The resulting path is too long. This error only occurs on
-- systems which have a limit on the file name length.
--
-- `EACCES'
-- At least one of the path components is not readable.
--
-- `ENOENT'
-- The input file name is empty.
--
-- `ENOENT'
-- At least one of the path components does not exist.
--
-- `ELOOP'
-- More than `MAXSYMLINKS' many symlinks have been followed.
--
-- This function is a GNU extension and is declared in `stdlib.h'.
--
-- The Unix standard includes a similar function which differs from
--`canonicalize_file_name' in that the user has to provide the buffer
--where the result is placed in.
--
-- - Function: char * realpath (const char *restrict NAME, char *restrict
-- RESOLVED)
-- A call to `realpath' where the RESOLVED parameter is `NULL'
-- behaves exactly like `canonicalize_file_name'. The function
-- allocates a buffer for the file name and returns a pointer to it.
-- If RESOLVED is not `NULL' it points to a buffer into which the
-- result is copied. It is the callers responsibility to allocate a
-- buffer which is large enough. On systems which define `PATH_MAX'
-- this means the buffer must be large enough for a pathname of this
-- size. For systems without limitations on the pathname length the
-- requirement cannot be met and programs should not call `realpath'
-- with anything but `NULL' for the second parameter.
--
-- One other difference is that the buffer RESOLVED (if nonzero) will
-- contain the part of the path component which does not exist or is
-- not readable if the function returns `NULL' and `errno' is set to
-- `EACCES' or `ENOENT'.
--
-- This function is declared in `stdlib.h'.
--
-- The advantage of using this function is that it is more widely
--available. The drawback is that it reports failures for long path on
--systems which have no limits on the file name length.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-25 glibc-2.3.2-200304020432/manual/libc.info-25
---- glibc-2.3.2/manual/libc.info-25 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-25 Thu Jan 1 01:00:00 1970
-@@ -1,1163 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Deleting Files, Next: Renaming Files, Prev: Symbolic Links, Up: File System Interface
--
--Deleting Files
--==============
--
-- You can delete a file with `unlink' or `remove'.
--
-- Deletion actually deletes a file name. If this is the file's only
--name, then the file is deleted as well. If the file has other
--remaining names (*note Hard Links::), it remains accessible under those
--names.
--
-- - Function: int unlink (const char *FILENAME)
-- The `unlink' function deletes the file name FILENAME. If this is
-- a file's sole name, the file itself is also deleted. (Actually,
-- if any process has the file open when this happens, deletion is
-- postponed until all processes have closed the file.)
--
-- The function `unlink' is declared in the header file `unistd.h'.
--
-- This function returns `0' on successful completion, and `-1' on
-- error. In addition to the usual file name errors (*note File Name
-- Errors::), the following `errno' error conditions are defined for
-- this function:
--
-- `EACCES'
-- Write permission is denied for the directory from which the
-- file is to be removed, or the directory has the sticky bit
-- set and you do not own the file.
--
-- `EBUSY'
-- This error indicates that the file is being used by the
-- system in such a way that it can't be unlinked. For example,
-- you might see this error if the file name specifies the root
-- directory or a mount point for a file system.
--
-- `ENOENT'
-- The file name to be deleted doesn't exist.
--
-- `EPERM'
-- On some systems `unlink' cannot be used to delete the name of
-- a directory, or at least can only be used this way by a
-- privileged user. To avoid such problems, use `rmdir' to
-- delete directories. (In the GNU system `unlink' can never
-- delete the name of a directory.)
--
-- `EROFS'
-- The directory containing the file name to be deleted is on a
-- read-only file system and can't be modified.
--
-- - Function: int rmdir (const char *FILENAME)
-- The `rmdir' function deletes a directory. The directory must be
-- empty before it can be removed; in other words, it can only contain
-- entries for `.' and `..'.
--
-- In most other respects, `rmdir' behaves like `unlink'. There are
-- two additional `errno' error conditions defined for `rmdir':
--
-- `ENOTEMPTY'
-- `EEXIST'
-- The directory to be deleted is not empty.
--
-- These two error codes are synonymous; some systems use one, and
-- some use the other. The GNU system always uses `ENOTEMPTY'.
--
-- The prototype for this function is declared in the header file
-- `unistd.h'.
--
-- - Function: int remove (const char *FILENAME)
-- This is the ISO C function to remove a file. It works like
-- `unlink' for files and like `rmdir' for directories. `remove' is
-- declared in `stdio.h'.
--
--
--File: libc.info, Node: Renaming Files, Next: Creating Directories, Prev: Deleting Files, Up: File System Interface
--
--Renaming Files
--==============
--
-- The `rename' function is used to change a file's name.
--
-- - Function: int rename (const char *OLDNAME, const char *NEWNAME)
-- The `rename' function renames the file OLDNAME to NEWNAME. The
-- file formerly accessible under the name OLDNAME is afterwards
-- accessible as NEWNAME instead. (If the file had any other names
-- aside from OLDNAME, it continues to have those names.)
--
-- The directory containing the name NEWNAME must be on the same file
-- system as the directory containing the name OLDNAME.
--
-- One special case for `rename' is when OLDNAME and NEWNAME are two
-- names for the same file. The consistent way to handle this case
-- is to delete OLDNAME. However, in this case POSIX requires that
-- `rename' do nothing and report success--which is inconsistent. We
-- don't know what your operating system will do.
--
-- If OLDNAME is not a directory, then any existing file named
-- NEWNAME is removed during the renaming operation. However, if
-- NEWNAME is the name of a directory, `rename' fails in this case.
--
-- If OLDNAME is a directory, then either NEWNAME must not exist or
-- it must name a directory that is empty. In the latter case, the
-- existing directory named NEWNAME is deleted first. The name
-- NEWNAME must not specify a subdirectory of the directory `oldname'
-- which is being renamed.
--
-- One useful feature of `rename' is that the meaning of NEWNAME
-- changes "atomically" from any previously existing file by that
-- name to its new meaning (i.e. the file that was called OLDNAME).
-- There is no instant at which NEWNAME is non-existent "in between"
-- the old meaning and the new meaning. If there is a system crash
-- during the operation, it is possible for both names to still
-- exist; but NEWNAME will always be intact if it exists at all.
--
-- If `rename' fails, it returns `-1'. In addition to the usual file
-- name errors (*note File Name Errors::), the following `errno'
-- error conditions are defined for this function:
--
-- `EACCES'
-- One of the directories containing NEWNAME or OLDNAME refuses
-- write permission; or NEWNAME and OLDNAME are directories and
-- write permission is refused for one of them.
--
-- `EBUSY'
-- A directory named by OLDNAME or NEWNAME is being used by the
-- system in a way that prevents the renaming from working.
-- This includes directories that are mount points for
-- filesystems, and directories that are the current working
-- directories of processes.
--
-- `ENOTEMPTY'
-- `EEXIST'
-- The directory NEWNAME isn't empty. The GNU system always
-- returns `ENOTEMPTY' for this, but some other systems return
-- `EEXIST'.
--
-- `EINVAL'
-- OLDNAME is a directory that contains NEWNAME.
--
-- `EISDIR'
-- NEWNAME is a directory but the OLDNAME isn't.
--
-- `EMLINK'
-- The parent directory of NEWNAME would have too many links
-- (entries).
--
-- `ENOENT'
-- The file OLDNAME doesn't exist.
--
-- `ENOSPC'
-- The directory that would contain NEWNAME has no room for
-- another entry, and there is no space left in the file system
-- to expand it.
--
-- `EROFS'
-- The operation would involve writing to a directory on a
-- read-only file system.
--
-- `EXDEV'
-- The two file names NEWNAME and OLDNAME are on different file
-- systems.
--
--
--File: libc.info, Node: Creating Directories, Next: File Attributes, Prev: Renaming Files, Up: File System Interface
--
--Creating Directories
--====================
--
-- Directories are created with the `mkdir' function. (There is also a
--shell command `mkdir' which does the same thing.)
--
-- - Function: int mkdir (const char *FILENAME, mode_t MODE)
-- The `mkdir' function creates a new, empty directory with name
-- FILENAME.
--
-- The argument MODE specifies the file permissions for the new
-- directory file. *Note Permission Bits::, for more information
-- about this.
--
-- A return value of `0' indicates successful completion, and `-1'
-- indicates failure. In addition to the usual file name syntax
-- errors (*note File Name Errors::), the following `errno' error
-- conditions are defined for this function:
--
-- `EACCES'
-- Write permission is denied for the parent directory in which
-- the new directory is to be added.
--
-- `EEXIST'
-- A file named FILENAME already exists.
--
-- `EMLINK'
-- The parent directory has too many links (entries).
--
-- Well-designed file systems never report this error, because
-- they permit more links than your disk could possibly hold.
-- However, you must still take account of the possibility of
-- this error, as it could result from network access to a file
-- system on another machine.
--
-- `ENOSPC'
-- The file system doesn't have enough room to create the new
-- directory.
--
-- `EROFS'
-- The parent directory of the directory being created is on a
-- read-only file system and cannot be modified.
--
-- To use this function, your program should include the header file
-- `sys/stat.h'.
--
--
--File: libc.info, Node: File Attributes, Next: Making Special Files, Prev: Creating Directories, Up: File System Interface
--
--File Attributes
--===============
--
-- When you issue an `ls -l' shell command on a file, it gives you
--information about the size of the file, who owns it, when it was last
--modified, etc. These are called the "file attributes", and are
--associated with the file itself and not a particular one of its names.
--
-- This section contains information about how you can inquire about and
--modify the attributes of a file.
--
--* Menu:
--
--* Attribute Meanings:: The names of the file attributes,
-- and what their values mean.
--* Reading Attributes:: How to read the attributes of a file.
--* Testing File Type:: Distinguishing ordinary files,
-- directories, links...
--* File Owner:: How ownership for new files is determined,
-- and how to change it.
--* Permission Bits:: How information about a file's access
-- mode is stored.
--* Access Permission:: How the system decides who can access a file.
--* Setting Permissions:: How permissions for new files are assigned,
-- and how to change them.
--* Testing File Access:: How to find out if your process can
-- access a file.
--* File Times:: About the time attributes of a file.
--* File Size:: Manually changing the size of a file.
--
--
--File: libc.info, Node: Attribute Meanings, Next: Reading Attributes, Up: File Attributes
--
--The meaning of the File Attributes
------------------------------------
--
-- When you read the attributes of a file, they come back in a structure
--called `struct stat'. This section describes the names of the
--attributes, their data types, and what they mean. For the functions to
--read the attributes of a file, see *Note Reading Attributes::.
--
-- The header file `sys/stat.h' declares all the symbols defined in
--this section.
--
-- - Data Type: struct stat
-- The `stat' structure type is used to return information about the
-- attributes of a file. It contains at least the following members:
--
-- `mode_t st_mode'
-- Specifies the mode of the file. This includes file type
-- information (*note Testing File Type::) and the file
-- permission bits (*note Permission Bits::).
--
-- `ino_t st_ino'
-- The file serial number, which distinguishes this file from
-- all other files on the same device.
--
-- `dev_t st_dev'
-- Identifies the device containing the file. The `st_ino' and
-- `st_dev', taken together, uniquely identify the file. The
-- `st_dev' value is not necessarily consistent across reboots or
-- system crashes, however.
--
-- `nlink_t st_nlink'
-- The number of hard links to the file. This count keeps track
-- of how many directories have entries for this file. If the
-- count is ever decremented to zero, then the file itself is
-- discarded as soon as no process still holds it open.
-- Symbolic links are not counted in the total.
--
-- `uid_t st_uid'
-- The user ID of the file's owner. *Note File Owner::.
--
-- `gid_t st_gid'
-- The group ID of the file. *Note File Owner::.
--
-- `off_t st_size'
-- This specifies the size of a regular file in bytes. For
-- files that are really devices this field isn't usually
-- meaningful. For symbolic links this specifies the length of
-- the file name the link refers to.
--
-- `time_t st_atime'
-- This is the last access time for the file. *Note File
-- Times::.
--
-- `unsigned long int st_atime_usec'
-- This is the fractional part of the last access time for the
-- file. *Note File Times::.
--
-- `time_t st_mtime'
-- This is the time of the last modification to the contents of
-- the file. *Note File Times::.
--
-- `unsigned long int st_mtime_usec'
-- This is the fractional part of the time of the last
-- modification to the contents of the file. *Note File Times::.
--
-- `time_t st_ctime'
-- This is the time of the last modification to the attributes
-- of the file. *Note File Times::.
--
-- `unsigned long int st_ctime_usec'
-- This is the fractional part of the time of the last
-- modification to the attributes of the file. *Note File
-- Times::.
--
-- `blkcnt_t st_blocks'
-- This is the amount of disk space that the file occupies,
-- measured in units of 512-byte blocks.
--
-- The number of disk blocks is not strictly proportional to the
-- size of the file, for two reasons: the file system may use
-- some blocks for internal record keeping; and the file may be
-- sparse--it may have "holes" which contain zeros but do not
-- actually take up space on the disk.
--
-- You can tell (approximately) whether a file is sparse by
-- comparing this value with `st_size', like this:
--
-- (st.st_blocks * 512 < st.st_size)
--
-- This test is not perfect because a file that is just slightly
-- sparse might not be detected as sparse at all. For practical
-- applications, this is not a problem.
--
-- `unsigned int st_blksize'
-- The optimal block size for reading of writing this file, in
-- bytes. You might use this size for allocating the buffer
-- space for reading of writing the file. (This is unrelated to
-- `st_blocks'.)
--
-- The extensions for the Large File Support (LFS) require, even on
--32-bit machines, types which can handle file sizes up to 2^63.
--Therefore a new definition of `struct stat' is necessary.
--
-- - Data Type: struct stat64
-- The members of this type are the same and have the same names as
-- those in `struct stat'. The only difference is that the members
-- `st_ino', `st_size', and `st_blocks' have a different type to
-- support larger values.
--
-- `mode_t st_mode'
-- Specifies the mode of the file. This includes file type
-- information (*note Testing File Type::) and the file
-- permission bits (*note Permission Bits::).
--
-- `ino64_t st_ino'
-- The file serial number, which distinguishes this file from
-- all other files on the same device.
--
-- `dev_t st_dev'
-- Identifies the device containing the file. The `st_ino' and
-- `st_dev', taken together, uniquely identify the file. The
-- `st_dev' value is not necessarily consistent across reboots or
-- system crashes, however.
--
-- `nlink_t st_nlink'
-- The number of hard links to the file. This count keeps track
-- of how many directories have entries for this file. If the
-- count is ever decremented to zero, then the file itself is
-- discarded as soon as no process still holds it open.
-- Symbolic links are not counted in the total.
--
-- `uid_t st_uid'
-- The user ID of the file's owner. *Note File Owner::.
--
-- `gid_t st_gid'
-- The group ID of the file. *Note File Owner::.
--
-- `off64_t st_size'
-- This specifies the size of a regular file in bytes. For
-- files that are really devices this field isn't usually
-- meaningful. For symbolic links this specifies the length of
-- the file name the link refers to.
--
-- `time_t st_atime'
-- This is the last access time for the file. *Note File
-- Times::.
--
-- `unsigned long int st_atime_usec'
-- This is the fractional part of the last access time for the
-- file. *Note File Times::.
--
-- `time_t st_mtime'
-- This is the time of the last modification to the contents of
-- the file. *Note File Times::.
--
-- `unsigned long int st_mtime_usec'
-- This is the fractional part of the time of the last
-- modification to the contents of the file. *Note File Times::.
--
-- `time_t st_ctime'
-- This is the time of the last modification to the attributes
-- of the file. *Note File Times::.
--
-- `unsigned long int st_ctime_usec'
-- This is the fractional part of the time of the last
-- modification to the attributes of the file. *Note File
-- Times::.
--
-- `blkcnt64_t st_blocks'
-- This is the amount of disk space that the file occupies,
-- measured in units of 512-byte blocks.
--
-- `unsigned int st_blksize'
-- The optimal block size for reading of writing this file, in
-- bytes. You might use this size for allocating the buffer
-- space for reading of writing the file. (This is unrelated to
-- `st_blocks'.)
--
-- Some of the file attributes have special data type names which exist
--specifically for those attributes. (They are all aliases for well-known
--integer types that you know and love.) These typedef names are defined
--in the header file `sys/types.h' as well as in `sys/stat.h'. Here is a
--list of them.
--
-- - Data Type: mode_t
-- This is an integer data type used to represent file modes. In the
-- GNU system, this is equivalent to `unsigned int'.
--
-- - Data Type: ino_t
-- This is an arithmetic data type used to represent file serial
-- numbers. (In Unix jargon, these are sometimes called "inode
-- numbers".) In the GNU system, this type is equivalent to
-- `unsigned long int'.
--
-- If the source is compiled with `_FILE_OFFSET_BITS == 64' this type
-- is transparently replaced by `ino64_t'.
--
-- - Data Type: ino64_t
-- This is an arithmetic data type used to represent file serial
-- numbers for the use in LFS. In the GNU system, this type is
-- equivalent to `unsigned long longint'.
--
-- When compiling with `_FILE_OFFSET_BITS == 64' this type is
-- available under the name `ino_t'.
--
-- - Data Type: dev_t
-- This is an arithmetic data type used to represent file device
-- numbers. In the GNU system, this is equivalent to `int'.
--
-- - Data Type: nlink_t
-- This is an arithmetic data type used to represent file link counts.
-- In the GNU system, this is equivalent to `unsigned short int'.
--
-- - Data Type: blkcnt_t
-- This is an arithmetic data type used to represent block counts.
-- In the GNU system, this is equivalent to `unsigned long int'.
--
-- If the source is compiled with `_FILE_OFFSET_BITS == 64' this type
-- is transparently replaced by `blkcnt64_t'.
--
-- - Data Type: blkcnt64_t
-- This is an arithmetic data type used to represent block counts for
-- the use in LFS. In the GNU system, this is equivalent to `unsigned
-- long long int'.
--
-- When compiling with `_FILE_OFFSET_BITS == 64' this type is
-- available under the name `blkcnt_t'.
--
--
--File: libc.info, Node: Reading Attributes, Next: Testing File Type, Prev: Attribute Meanings, Up: File Attributes
--
--Reading the Attributes of a File
----------------------------------
--
-- To examine the attributes of files, use the functions `stat',
--`fstat' and `lstat'. They return the attribute information in a
--`struct stat' object. All three functions are declared in the header
--file `sys/stat.h'.
--
-- - Function: int stat (const char *FILENAME, struct stat *BUF)
-- The `stat' function returns information about the attributes of the
-- file named by FILENAME in the structure pointed to by BUF.
--
-- If FILENAME is the name of a symbolic link, the attributes you get
-- describe the file that the link points to. If the link points to a
-- nonexistent file name, then `stat' fails reporting a nonexistent
-- file.
--
-- The return value is `0' if the operation is successful, or `-1' on
-- failure. In addition to the usual file name errors (*note File
-- Name Errors::, the following `errno' error conditions are defined
-- for this function:
--
-- `ENOENT'
-- The file named by FILENAME doesn't exist.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `stat64' since the LFS interface transparently
-- replaces the normal implementation.
--
-- - Function: int stat64 (const char *FILENAME, struct stat64 *BUF)
-- This function is similar to `stat' but it is also able to work on
-- files larger then 2^31 bytes on 32-bit systems. To be able to do
-- this the result is stored in a variable of type `struct stat64' to
-- which BUF must point.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `stat' and so transparently
-- replaces the interface for small files on 32-bit machines.
--
-- - Function: int fstat (int FILEDES, struct stat *BUF)
-- The `fstat' function is like `stat', except that it takes an open
-- file descriptor as an argument instead of a file name. *Note
-- Low-Level I/O::.
--
-- Like `stat', `fstat' returns `0' on success and `-1' on failure.
-- The following `errno' error conditions are defined for `fstat':
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `fstat64' since the LFS interface transparently
-- replaces the normal implementation.
--
-- - Function: int fstat64 (int FILEDES, struct stat64 *BUF)
-- This function is similar to `fstat' but is able to work on large
-- files on 32-bit platforms. For large files the file descriptor
-- FILEDES should be obtained by `open64' or `creat64'. The BUF
-- pointer points to a variable of type `struct stat64' which is able
-- to represent the larger values.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `fstat' and so transparently
-- replaces the interface for small files on 32-bit machines.
--
-- - Function: int lstat (const char *FILENAME, struct stat *BUF)
-- The `lstat' function is like `stat', except that it does not
-- follow symbolic links. If FILENAME is the name of a symbolic
-- link, `lstat' returns information about the link itself; otherwise
-- `lstat' works like `stat'. *Note Symbolic Links::.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is in fact `lstat64' since the LFS interface transparently
-- replaces the normal implementation.
--
-- - Function: int lstat64 (const char *FILENAME, struct stat64 *BUF)
-- This function is similar to `lstat' but it is also able to work on
-- files larger then 2^31 bytes on 32-bit systems. To be able to do
-- this the result is stored in a variable of type `struct stat64' to
-- which BUF must point.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' this
-- function is available under the name `lstat' and so transparently
-- replaces the interface for small files on 32-bit machines.
--
--
--File: libc.info, Node: Testing File Type, Next: File Owner, Prev: Reading Attributes, Up: File Attributes
--
--Testing the Type of a File
----------------------------
--
-- The "file mode", stored in the `st_mode' field of the file
--attributes, contains two kinds of information: the file type code, and
--the access permission bits. This section discusses only the type code,
--which you can use to tell whether the file is a directory, socket,
--symbolic link, and so on. For details about access permissions see
--*Note Permission Bits::.
--
-- There are two ways you can access the file type information in a file
--mode. Firstly, for each file type there is a "predicate macro" which
--examines a given file mode and returns whether it is of that type or
--not. Secondly, you can mask out the rest of the file mode to leave
--just the file type code, and compare this against constants for each of
--the supported file types.
--
-- All of the symbols listed in this section are defined in the header
--file `sys/stat.h'.
--
-- The following predicate macros test the type of a file, given the
--value M which is the `st_mode' field returned by `stat' on that file:
--
-- - Macro: int S_ISDIR (mode_t M)
-- This macro returns non-zero if the file is a directory.
--
-- - Macro: int S_ISCHR (mode_t M)
-- This macro returns non-zero if the file is a character special
-- file (a device like a terminal).
--
-- - Macro: int S_ISBLK (mode_t M)
-- This macro returns non-zero if the file is a block special file (a
-- device like a disk).
--
-- - Macro: int S_ISREG (mode_t M)
-- This macro returns non-zero if the file is a regular file.
--
-- - Macro: int S_ISFIFO (mode_t M)
-- This macro returns non-zero if the file is a FIFO special file, or
-- a pipe. *Note Pipes and FIFOs::.
--
-- - Macro: int S_ISLNK (mode_t M)
-- This macro returns non-zero if the file is a symbolic link. *Note
-- Symbolic Links::.
--
-- - Macro: int S_ISSOCK (mode_t M)
-- This macro returns non-zero if the file is a socket. *Note
-- Sockets::.
--
-- An alternate non-POSIX method of testing the file type is supported
--for compatibility with BSD. The mode can be bitwise AND-ed with
--`S_IFMT' to extract the file type code, and compared to the appropriate
--constant. For example,
--
-- S_ISCHR (MODE)
--
--is equivalent to:
--
-- ((MODE & S_IFMT) == S_IFCHR)
--
-- - Macro: int S_IFMT
-- This is a bit mask used to extract the file type code from a mode
-- value.
--
-- These are the symbolic names for the different file type codes:
--
--`S_IFDIR'
-- This is the file type constant of a directory file.
--
--`S_IFCHR'
-- This is the file type constant of a character-oriented device file.
--
--`S_IFBLK'
-- This is the file type constant of a block-oriented device file.
--
--`S_IFREG'
-- This is the file type constant of a regular file.
--
--`S_IFLNK'
-- This is the file type constant of a symbolic link.
--
--`S_IFSOCK'
-- This is the file type constant of a socket.
--
--`S_IFIFO'
-- This is the file type constant of a FIFO or pipe.
--
-- The POSIX.1b standard introduced a few more objects which possibly
--can be implemented as object in the filesystem. These are message
--queues, semaphores, and shared memory objects. To allow
--differentiating these objects from other files the POSIX standard
--introduces three new test macros. But unlike the other macros it does
--not take the value of the `st_mode' field as the parameter. Instead
--they expect a pointer to the whole `struct stat' structure.
--
-- - Macro: int S_TYPEISMQ (struct stat *S)
-- If the system implement POSIX message queues as distinct objects
-- and the file is a message queue object, this macro returns a
-- non-zero value. In all other cases the result is zero.
--
-- - Macro: int S_TYPEISSEM (struct stat *S)
-- If the system implement POSIX semaphores as distinct objects and
-- the file is a semaphore object, this macro returns a non-zero
-- value. In all other cases the result is zero.
--
-- - Macro: int S_TYPEISSHM (struct stat *S)
-- If the system implement POSIX shared memory objects as distinct
-- objects and the file is an shared memory object, this macro
-- returns a non-zero value. In all other cases the result is zero.
--
--
--File: libc.info, Node: File Owner, Next: Permission Bits, Prev: Testing File Type, Up: File Attributes
--
--File Owner
------------
--
-- Every file has an "owner" which is one of the registered user names
--defined on the system. Each file also has a "group" which is one of
--the defined groups. The file owner can often be useful for showing you
--who edited the file (especially when you edit with GNU Emacs), but its
--main purpose is for access control.
--
-- The file owner and group play a role in determining access because
--the file has one set of access permission bits for the owner, another
--set that applies to users who belong to the file's group, and a third
--set of bits that applies to everyone else. *Note Access Permission::,
--for the details of how access is decided based on this data.
--
-- When a file is created, its owner is set to the effective user ID of
--the process that creates it (*note Process Persona::). The file's
--group ID may be set to either the effective group ID of the process, or
--the group ID of the directory that contains the file, depending on the
--system where the file is stored. When you access a remote file system,
--it behaves according to its own rules, not according to the system your
--program is running on. Thus, your program must be prepared to encounter
--either kind of behavior no matter what kind of system you run it on.
--
-- You can change the owner and/or group owner of an existing file using
--the `chown' function. This is the primitive for the `chown' and
--`chgrp' shell commands.
--
-- The prototype for this function is declared in `unistd.h'.
--
-- - Function: int chown (const char *FILENAME, uid_t OWNER, gid_t GROUP)
-- The `chown' function changes the owner of the file FILENAME to
-- OWNER, and its group owner to GROUP.
--
-- Changing the owner of the file on certain systems clears the
-- set-user-ID and set-group-ID permission bits. (This is because
-- those bits may not be appropriate for the new owner.) Other file
-- permission bits are not changed.
--
-- The return value is `0' on success and `-1' on failure. In
-- addition to the usual file name errors (*note File Name Errors::),
-- the following `errno' error conditions are defined for this
-- function:
--
-- `EPERM'
-- This process lacks permission to make the requested change.
--
-- Only privileged users or the file's owner can change the
-- file's group. On most file systems, only privileged users
-- can change the file owner; some file systems allow you to
-- change the owner if you are currently the owner. When you
-- access a remote file system, the behavior you encounter is
-- determined by the system that actually holds the file, not by
-- the system your program is running on.
--
-- *Note Options for Files::, for information about the
-- `_POSIX_CHOWN_RESTRICTED' macro.
--
-- `EROFS'
-- The file is on a read-only file system.
--
-- - Function: int fchown (int FILEDES, int OWNER, int GROUP)
-- This is like `chown', except that it changes the owner of the open
-- file with descriptor FILEDES.
--
-- The return value from `fchown' is `0' on success and `-1' on
-- failure. The following `errno' error codes are defined for this
-- function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The FILEDES argument corresponds to a pipe or socket, not an
-- ordinary file.
--
-- `EPERM'
-- This process lacks permission to make the requested change.
-- For details see `chmod' above.
--
-- `EROFS'
-- The file resides on a read-only file system.
--
--
--File: libc.info, Node: Permission Bits, Next: Access Permission, Prev: File Owner, Up: File Attributes
--
--The Mode Bits for Access Permission
-------------------------------------
--
-- The "file mode", stored in the `st_mode' field of the file
--attributes, contains two kinds of information: the file type code, and
--the access permission bits. This section discusses only the access
--permission bits, which control who can read or write the file. *Note
--Testing File Type::, for information about the file type code.
--
-- All of the symbols listed in this section are defined in the header
--file `sys/stat.h'.
--
-- These symbolic constants are defined for the file mode bits that
--control access permission for the file:
--
--`S_IRUSR'
--`S_IREAD'
-- Read permission bit for the owner of the file. On many systems
-- this bit is 0400. `S_IREAD' is an obsolete synonym provided for
-- BSD compatibility.
--
--`S_IWUSR'
--`S_IWRITE'
-- Write permission bit for the owner of the file. Usually 0200.
-- `S_IWRITE' is an obsolete synonym provided for BSD compatibility.
--
--`S_IXUSR'
--`S_IEXEC'
-- Execute (for ordinary files) or search (for directories)
-- permission bit for the owner of the file. Usually 0100.
-- `S_IEXEC' is an obsolete synonym provided for BSD compatibility.
--
--`S_IRWXU'
-- This is equivalent to `(S_IRUSR | S_IWUSR | S_IXUSR)'.
--
--`S_IRGRP'
-- Read permission bit for the group owner of the file. Usually 040.
--
--`S_IWGRP'
-- Write permission bit for the group owner of the file. Usually 020.
--
--`S_IXGRP'
-- Execute or search permission bit for the group owner of the file.
-- Usually 010.
--
--`S_IRWXG'
-- This is equivalent to `(S_IRGRP | S_IWGRP | S_IXGRP)'.
--
--`S_IROTH'
-- Read permission bit for other users. Usually 04.
--
--`S_IWOTH'
-- Write permission bit for other users. Usually 02.
--
--`S_IXOTH'
-- Execute or search permission bit for other users. Usually 01.
--
--`S_IRWXO'
-- This is equivalent to `(S_IROTH | S_IWOTH | S_IXOTH)'.
--
--`S_ISUID'
-- This is the set-user-ID on execute bit, usually 04000. *Note How
-- Change Persona::.
--
--`S_ISGID'
-- This is the set-group-ID on execute bit, usually 02000. *Note How
-- Change Persona::.
--
--`S_ISVTX'
-- This is the "sticky" bit, usually 01000.
--
-- For a directory it gives permission to delete a file in that
-- directory only if you own that file. Ordinarily, a user can
-- either delete all the files in a directory or cannot delete any of
-- them (based on whether the user has write permission for the
-- directory). The same restriction applies--you must have both
-- write permission for the directory and own the file you want to
-- delete. The one exception is that the owner of the directory can
-- delete any file in the directory, no matter who owns it (provided
-- the owner has given himself write permission for the directory).
-- This is commonly used for the `/tmp' directory, where anyone may
-- create files but not delete files created by other users.
--
-- Originally the sticky bit on an executable file modified the
-- swapping policies of the system. Normally, when a program
-- terminated, its pages in core were immediately freed and reused.
-- If the sticky bit was set on the executable file, the system kept
-- the pages in core for a while as if the program were still
-- running. This was advantageous for a program likely to be run
-- many times in succession. This usage is obsolete in modern
-- systems. When a program terminates, its pages always remain in
-- core as long as there is no shortage of memory in the system.
-- When the program is next run, its pages will still be in core if
-- no shortage arose since the last run.
--
-- On some modern systems where the sticky bit has no useful meaning
-- for an executable file, you cannot set the bit at all for a
-- non-directory. If you try, `chmod' fails with `EFTYPE'; *note
-- Setting Permissions::.
--
-- Some systems (particularly SunOS) have yet another use for the
-- sticky bit. If the sticky bit is set on a file that is _not_
-- executable, it means the opposite: never cache the pages of this
-- file at all. The main use of this is for the files on an NFS
-- server machine which are used as the swap area of diskless client
-- machines. The idea is that the pages of the file will be cached
-- in the client's memory, so it is a waste of the server's memory to
-- cache them a second time. With this usage the sticky bit also
-- implies that the filesystem may fail to record the file's
-- modification time onto disk reliably (the idea being that no-one
-- cares for a swap file).
--
-- This bit is only available on BSD systems (and those derived from
-- them). Therefore one has to use the `_BSD_SOURCE' feature select
-- macro to get the definition (*note Feature Test Macros::).
--
-- The actual bit values of the symbols are listed in the table above
--so you can decode file mode values when debugging your programs. These
--bit values are correct for most systems, but they are not guaranteed.
--
-- *Warning:* Writing explicit numbers for file permissions is bad
--practice. Not only is it not portable, it also requires everyone who
--reads your program to remember what the bits mean. To make your program
--clean use the symbolic names.
--
--
--File: libc.info, Node: Access Permission, Next: Setting Permissions, Prev: Permission Bits, Up: File Attributes
--
--How Your Access to a File is Decided
--------------------------------------
--
-- Recall that the operating system normally decides access permission
--for a file based on the effective user and group IDs of the process and
--its supplementary group IDs, together with the file's owner, group and
--permission bits. These concepts are discussed in detail in *Note
--Process Persona::.
--
-- If the effective user ID of the process matches the owner user ID of
--the file, then permissions for read, write, and execute/search are
--controlled by the corresponding "user" (or "owner") bits. Likewise, if
--any of the effective group ID or supplementary group IDs of the process
--matches the group owner ID of the file, then permissions are controlled
--by the "group" bits. Otherwise, permissions are controlled by the
--"other" bits.
--
-- Privileged users, like `root', can access any file regardless of its
--permission bits. As a special case, for a file to be executable even
--by a privileged user, at least one of its execute bits must be set.
--
--
--File: libc.info, Node: Setting Permissions, Next: Testing File Access, Prev: Access Permission, Up: File Attributes
--
--Assigning File Permissions
----------------------------
--
-- The primitive functions for creating files (for example, `open' or
--`mkdir') take a MODE argument, which specifies the file permissions to
--give the newly created file. This mode is modified by the process's
--"file creation mask", or "umask", before it is used.
--
-- The bits that are set in the file creation mask identify permissions
--that are always to be disabled for newly created files. For example, if
--you set all the "other" access bits in the mask, then newly created
--files are not accessible at all to processes in the "other" category,
--even if the MODE argument passed to the create function would permit
--such access. In other words, the file creation mask is the complement
--of the ordinary access permissions you want to grant.
--
-- Programs that create files typically specify a MODE argument that
--includes all the permissions that make sense for the particular file.
--For an ordinary file, this is typically read and write permission for
--all classes of users. These permissions are then restricted as
--specified by the individual user's own file creation mask.
--
-- To change the permission of an existing file given its name, call
--`chmod'. This function uses the specified permission bits and ignores
--the file creation mask.
--
-- In normal use, the file creation mask is initialized by the user's
--login shell (using the `umask' shell command), and inherited by all
--subprocesses. Application programs normally don't need to worry about
--the file creation mask. It will automatically do what it is supposed to
--do.
--
-- When your program needs to create a file and bypass the umask for its
--access permissions, the easiest way to do this is to use `fchmod' after
--opening the file, rather than changing the umask. In fact, changing
--the umask is usually done only by shells. They use the `umask'
--function.
--
-- The functions in this section are declared in `sys/stat.h'.
--
-- - Function: mode_t umask (mode_t MASK)
-- The `umask' function sets the file creation mask of the current
-- process to MASK, and returns the previous value of the file
-- creation mask.
--
-- Here is an example showing how to read the mask with `umask'
-- without changing it permanently:
--
-- mode_t
-- read_umask (void)
-- {
-- mode_t mask = umask (0);
-- umask (mask);
-- return mask;
-- }
--
-- However, it is better to use `getumask' if you just want to read
-- the mask value, because it is reentrant (at least if you use the
-- GNU operating system).
--
-- - Function: mode_t getumask (void)
-- Return the current value of the file creation mask for the current
-- process. This function is a GNU extension.
--
-- - Function: int chmod (const char *FILENAME, mode_t MODE)
-- The `chmod' function sets the access permission bits for the file
-- named by FILENAME to MODE.
--
-- If FILENAME is a symbolic link, `chmod' changes the permissions of
-- the file pointed to by the link, not those of the link itself.
--
-- This function returns `0' if successful and `-1' if not. In
-- addition to the usual file name errors (*note File Name Errors::),
-- the following `errno' error conditions are defined for this
-- function:
--
-- `ENOENT'
-- The named file doesn't exist.
--
-- `EPERM'
-- This process does not have permission to change the access
-- permissions of this file. Only the file's owner (as judged
-- by the effective user ID of the process) or a privileged user
-- can change them.
--
-- `EROFS'
-- The file resides on a read-only file system.
--
-- `EFTYPE'
-- MODE has the `S_ISVTX' bit (the "sticky bit") set, and the
-- named file is not a directory. Some systems do not allow
-- setting the sticky bit on non-directory files, and some do
-- (and only some of those assign a useful meaning to the bit
-- for non-directory files).
--
-- You only get `EFTYPE' on systems where the sticky bit has no
-- useful meaning for non-directory files, so it is always safe
-- to just clear the bit in MODE and call `chmod' again. *Note
-- Permission Bits::, for full details on the sticky bit.
--
-- - Function: int fchmod (int FILEDES, int MODE)
-- This is like `chmod', except that it changes the permissions of the
-- currently open file given by FILEDES.
--
-- The return value from `fchmod' is `0' on success and `-1' on
-- failure. The following `errno' error codes are defined for this
-- function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The FILEDES argument corresponds to a pipe or socket, or
-- something else that doesn't really have access permissions.
--
-- `EPERM'
-- This process does not have permission to change the access
-- permissions of this file. Only the file's owner (as judged
-- by the effective user ID of the process) or a privileged user
-- can change them.
--
-- `EROFS'
-- The file resides on a read-only file system.
--
--
--File: libc.info, Node: Testing File Access, Next: File Times, Prev: Setting Permissions, Up: File Attributes
--
--Testing Permission to Access a File
-------------------------------------
--
-- In some situations it is desirable to allow programs to access files
--or devices even if this is not possible with the permissions granted to
--the user. One possible solution is to set the setuid-bit of the program
--file. If such a program is started the _effective_ user ID of the
--process is changed to that of the owner of the program file. So to
--allow write access to files like `/etc/passwd', which normally can be
--written only by the super-user, the modifying program will have to be
--owned by `root' and the setuid-bit must be set.
--
-- But beside the files the program is intended to change the user
--should not be allowed to access any file to which s/he would not have
--access anyway. The program therefore must explicitly check whether _the
--user_ would have the necessary access to a file, before it reads or
--writes the file.
--
-- To do this, use the function `access', which checks for access
--permission based on the process's _real_ user ID rather than the
--effective user ID. (The setuid feature does not alter the real user ID,
--so it reflects the user who actually ran the program.)
--
-- There is another way you could check this access, which is easy to
--describe, but very hard to use. This is to examine the file mode bits
--and mimic the system's own access computation. This method is
--undesirable because many systems have additional access control
--features; your program cannot portably mimic them, and you would not
--want to try to keep track of the diverse features that different systems
--have. Using `access' is simple and automatically does whatever is
--appropriate for the system you are using.
--
-- `access' is _only_ only appropriate to use in setuid programs. A
--non-setuid program will always use the effective ID rather than the
--real ID.
--
-- The symbols in this section are declared in `unistd.h'.
--
-- - Function: int access (const char *FILENAME, int HOW)
-- The `access' function checks to see whether the file named by
-- FILENAME can be accessed in the way specified by the HOW argument.
-- The HOW argument either can be the bitwise OR of the flags
-- `R_OK', `W_OK', `X_OK', or the existence test `F_OK'.
--
-- This function uses the _real_ user and group IDs of the calling
-- process, rather than the _effective_ IDs, to check for access
-- permission. As a result, if you use the function from a `setuid'
-- or `setgid' program (*note How Change Persona::), it gives
-- information relative to the user who actually ran the program.
--
-- The return value is `0' if the access is permitted, and `-1'
-- otherwise. (In other words, treated as a predicate function,
-- `access' returns true if the requested access is _denied_.)
--
-- In addition to the usual file name errors (*note File Name
-- Errors::), the following `errno' error conditions are defined for
-- this function:
--
-- `EACCES'
-- The access specified by HOW is denied.
--
-- `ENOENT'
-- The file doesn't exist.
--
-- `EROFS'
-- Write permission was requested for a file on a read-only file
-- system.
--
-- These macros are defined in the header file `unistd.h' for use as
--the HOW argument to the `access' function. The values are integer
--constants.
--
-- - Macro: int R_OK
-- Flag meaning test for read permission.
--
-- - Macro: int W_OK
-- Flag meaning test for write permission.
--
-- - Macro: int X_OK
-- Flag meaning test for execute/search permission.
--
-- - Macro: int F_OK
-- Flag meaning test for existence of the file.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-26 glibc-2.3.2-200304020432/manual/libc.info-26
---- glibc-2.3.2/manual/libc.info-26 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-26 Thu Jan 1 01:00:00 1970
-@@ -1,1233 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: File Times, Next: File Size, Prev: Testing File Access, Up: File Attributes
--
--File Times
------------
--
-- Each file has three time stamps associated with it: its access time,
--its modification time, and its attribute modification time. These
--correspond to the `st_atime', `st_mtime', and `st_ctime' members of the
--`stat' structure; see *Note File Attributes::.
--
-- All of these times are represented in calendar time format, as
--`time_t' objects. This data type is defined in `time.h'. For more
--information about representation and manipulation of time values, see
--*Note Calendar Time::.
--
-- Reading from a file updates its access time attribute, and writing
--updates its modification time. When a file is created, all three time
--stamps for that file are set to the current time. In addition, the
--attribute change time and modification time fields of the directory that
--contains the new entry are updated.
--
-- Adding a new name for a file with the `link' function updates the
--attribute change time field of the file being linked, and both the
--attribute change time and modification time fields of the directory
--containing the new name. These same fields are affected if a file name
--is deleted with `unlink', `remove' or `rmdir'. Renaming a file with
--`rename' affects only the attribute change time and modification time
--fields of the two parent directories involved, and not the times for
--the file being renamed.
--
-- Changing the attributes of a file (for example, with `chmod')
--updates its attribute change time field.
--
-- You can also change some of the time stamps of a file explicitly
--using the `utime' function--all except the attribute change time. You
--need to include the header file `utime.h' to use this facility.
--
-- - Data Type: struct utimbuf
-- The `utimbuf' structure is used with the `utime' function to
-- specify new access and modification times for a file. It contains
-- the following members:
--
-- `time_t actime'
-- This is the access time for the file.
--
-- `time_t modtime'
-- This is the modification time for the file.
--
-- - Function: int utime (const char *FILENAME, const struct utimbuf
-- *TIMES)
-- This function is used to modify the file times associated with the
-- file named FILENAME.
--
-- If TIMES is a null pointer, then the access and modification times
-- of the file are set to the current time. Otherwise, they are set
-- to the values from the `actime' and `modtime' members
-- (respectively) of the `utimbuf' structure pointed to by TIMES.
--
-- The attribute modification time for the file is set to the current
-- time in either case (since changing the time stamps is itself a
-- modification of the file attributes).
--
-- The `utime' function returns `0' if successful and `-1' on
-- failure. In addition to the usual file name errors (*note File
-- Name Errors::), the following `errno' error conditions are defined
-- for this function:
--
-- `EACCES'
-- There is a permission problem in the case where a null
-- pointer was passed as the TIMES argument. In order to update
-- the time stamp on the file, you must either be the owner of
-- the file, have write permission for the file, or be a
-- privileged user.
--
-- `ENOENT'
-- The file doesn't exist.
--
-- `EPERM'
-- If the TIMES argument is not a null pointer, you must either
-- be the owner of the file or be a privileged user.
--
-- `EROFS'
-- The file lives on a read-only file system.
--
-- Each of the three time stamps has a corresponding microsecond part,
--which extends its resolution. These fields are called `st_atime_usec',
--`st_mtime_usec', and `st_ctime_usec'; each has a value between 0 and
--999,999, which indicates the time in microseconds. They correspond to
--the `tv_usec' field of a `timeval' structure; see *Note High-Resolution
--Calendar::.
--
-- The `utimes' function is like `utime', but also lets you specify the
--fractional part of the file times. The prototype for this function is
--in the header file `sys/time.h'.
--
-- - Function: int utimes (const char *FILENAME, struct timeval TVP[2])
-- This function sets the file access and modification times of the
-- file FILENAME. The new file access time is specified by `TVP[0]',
-- and the new modification time by `TVP[1]'. Similar to `utime', if
-- TVP is a null pointer then the access and modification times of
-- the file are set to the current time. This function comes from
-- BSD.
--
-- The return values and error conditions are the same as for the
-- `utime' function.
--
-- - Function: int lutimes (const char *FILENAME, struct timeval TVP[2])
-- This function is like `utimes', except that it does not follow
-- symbolic links. If FILENAME is the name of a symbolic link,
-- `lutimes' sets the file access and modification times of the
-- symbolic link special file itself (as seen by `lstat'; *note
-- Symbolic Links::) while `utimes' sets the file access and
-- modification times of the file the symbolic link refers to. This
-- function comes from FreeBSD, and is not available on all platforms
-- (if not available, it will fail with `ENOSYS').
--
-- The return values and error conditions are the same as for the
-- `utime' function.
--
-- - Function: int futimes (int *FD, struct timeval TVP[2])
-- This function is like `utimes', except that it takes an open file
-- descriptor as an argument instead of a file name. *Note Low-Level
-- I/O::. This function comes from FreeBSD, and is not available on
-- all platforms (if not available, it will fail with `ENOSYS').
--
-- Like `utimes', `futimes' returns `0' on success and `-1' on
-- failure. The following `errno' error conditions are defined for
-- `futimes':
--
-- `EACCES'
-- There is a permission problem in the case where a null
-- pointer was passed as the TIMES argument. In order to update
-- the time stamp on the file, you must either be the owner of
-- the file, have write permission for the file, or be a
-- privileged user.
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EPERM'
-- If the TIMES argument is not a null pointer, you must either
-- be the owner of the file or be a privileged user.
--
-- `EROFS'
-- The file lives on a read-only file system.
--
--
--File: libc.info, Node: File Size, Prev: File Times, Up: File Attributes
--
--File Size
-----------
--
-- Normally file sizes are maintained automatically. A file begins
--with a size of 0 and is automatically extended when data is written past
--its end. It is also possible to empty a file completely by an `open'
--or `fopen' call.
--
-- However, sometimes it is necessary to _reduce_ the size of a file.
--This can be done with the `truncate' and `ftruncate' functions. They
--were introduced in BSD Unix. `ftruncate' was later added to POSIX.1.
--
-- Some systems allow you to extend a file (creating holes) with these
--functions. This is useful when using memory-mapped I/O (*note
--Memory-mapped I/O::), where files are not automatically extended.
--However, it is not portable but must be implemented if `mmap' allows
--mapping of files (i.e., `_POSIX_MAPPED_FILES' is defined).
--
-- Using these functions on anything other than a regular file gives
--_undefined_ results. On many systems, such a call will appear to
--succeed, without actually accomplishing anything.
--
-- - Function: int truncate (const char *FILENAME, off_t LENGTH)
-- The `truncate' function changes the size of FILENAME to LENGTH.
-- If LENGTH is shorter than the previous length, data at the end
-- will be lost. The file must be writable by the user to perform
-- this operation.
--
-- If LENGTH is longer, holes will be added to the end. However, some
-- systems do not support this feature and will leave the file
-- unchanged.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' the
-- `truncate' function is in fact `truncate64' and the type `off_t'
-- has 64 bits which makes it possible to handle files up to 2^63
-- bytes in length.
--
-- The return value is 0 for success, or -1 for an error. In
-- addition to the usual file name errors, the following errors may
-- occur:
--
-- `EACCES'
-- The file is a directory or not writable.
--
-- `EINVAL'
-- LENGTH is negative.
--
-- `EFBIG'
-- The operation would extend the file beyond the limits of the
-- operating system.
--
-- `EIO'
-- A hardware I/O error occurred.
--
-- `EPERM'
-- The file is "append-only" or "immutable".
--
-- `EINTR'
-- The operation was interrupted by a signal.
--
--
-- - Function: int truncate64 (const char *NAME, off64_t LENGTH)
-- This function is similar to the `truncate' function. The
-- difference is that the LENGTH argument is 64 bits wide even on 32
-- bits machines, which allows the handling of files with sizes up to
-- 2^63 bytes.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' on
-- a 32 bits machine this function is actually available under the
-- name `truncate' and so transparently replaces the 32 bits
-- interface.
--
-- - Function: int ftruncate (int FD, off_t LENGTH)
-- This is like `truncate', but it works on a file descriptor FD for
-- an opened file instead of a file name to identify the object. The
-- file must be opened for writing to successfully carry out the
-- operation.
--
-- The POSIX standard leaves it implementation defined what happens
-- if the specified new LENGTH of the file is bigger than the
-- original size. The `ftruncate' function might simply leave the
-- file alone and do nothing or it can increase the size to the
-- desired size. In this later case the extended area should be
-- zero-filled. So using `ftruncate' is no reliable way to increase
-- the file size but if it is possible it is probably the fastest
-- way. The function also operates on POSIX shared memory segments
-- if these are implemented by the system.
--
-- `ftruncate' is especially useful in combination with `mmap'.
-- Since the mapped region must have a fixed size one cannot enlarge
-- the file by writing something beyond the last mapped page.
-- Instead one has to enlarge the file itself and then remap the file
-- with the new size. The example below shows how this works.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' the
-- `ftruncate' function is in fact `ftruncate64' and the type `off_t'
-- has 64 bits which makes it possible to handle files up to 2^63
-- bytes in length.
--
-- The return value is 0 for success, or -1 for an error. The
-- following errors may occur:
--
-- `EBADF'
-- FD does not correspond to an open file.
--
-- `EACCES'
-- FD is a directory or not open for writing.
--
-- `EINVAL'
-- LENGTH is negative.
--
-- `EFBIG'
-- The operation would extend the file beyond the limits of the
-- operating system.
--
-- `EIO'
-- A hardware I/O error occurred.
--
-- `EPERM'
-- The file is "append-only" or "immutable".
--
-- `EINTR'
-- The operation was interrupted by a signal.
--
--
-- - Function: int ftruncate64 (int ID, off64_t LENGTH)
-- This function is similar to the `ftruncate' function. The
-- difference is that the LENGTH argument is 64 bits wide even on 32
-- bits machines which allows the handling of files with sizes up to
-- 2^63 bytes.
--
-- When the source file is compiled with `_FILE_OFFSET_BITS == 64' on
-- a 32 bits machine this function is actually available under the
-- name `ftruncate' and so transparently replaces the 32 bits
-- interface.
--
-- As announced here is a little example of how to use `ftruncate' in
--combination with `mmap':
--
-- int fd;
-- void *start;
-- size_t len;
--
-- int
-- add (off_t at, void *block, size_t size)
-- {
-- if (at + size > len)
-- {
-- /* Resize the file and remap. */
-- size_t ps = sysconf (_SC_PAGESIZE);
-- size_t ns = (at + size + ps - 1) & ~(ps - 1);
-- void *np;
-- if (ftruncate (fd, ns) < 0)
-- return -1;
-- np = mmap (NULL, ns, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-- if (np == MAP_FAILED)
-- return -1;
-- start = np;
-- len = ns;
-- }
-- memcpy ((char *) start + at, block, size);
-- return 0;
-- }
--
-- The function `add' writes a block of memory at an arbitrary position
--in the file. If the current size of the file is too small it is
--extended. Note the it is extended by a round number of pages. This is
--a requirement of `mmap'. The program has to keep track of the real
--size, and when it has finished a final `ftruncate' call should set the
--real size of the file.
--
--
--File: libc.info, Node: Making Special Files, Next: Temporary Files, Prev: File Attributes, Up: File System Interface
--
--Making Special Files
--====================
--
-- The `mknod' function is the primitive for making special files, such
--as files that correspond to devices. The GNU library includes this
--function for compatibility with BSD.
--
-- The prototype for `mknod' is declared in `sys/stat.h'.
--
-- - Function: int mknod (const char *FILENAME, int MODE, int DEV)
-- The `mknod' function makes a special file with name FILENAME. The
-- MODE specifies the mode of the file, and may include the various
-- special file bits, such as `S_IFCHR' (for a character special file)
-- or `S_IFBLK' (for a block special file). *Note Testing File
-- Type::.
--
-- The DEV argument specifies which device the special file refers to.
-- Its exact interpretation depends on the kind of special file being
-- created.
--
-- The return value is `0' on success and `-1' on error. In addition
-- to the usual file name errors (*note File Name Errors::), the
-- following `errno' error conditions are defined for this function:
--
-- `EPERM'
-- The calling process is not privileged. Only the superuser
-- can create special files.
--
-- `ENOSPC'
-- The directory or file system that would contain the new file
-- is full and cannot be extended.
--
-- `EROFS'
-- The directory containing the new file can't be modified
-- because it's on a read-only file system.
--
-- `EEXIST'
-- There is already a file named FILENAME. If you want to
-- replace this file, you must remove the old file explicitly
-- first.
--
--
--File: libc.info, Node: Temporary Files, Prev: Making Special Files, Up: File System Interface
--
--Temporary Files
--===============
--
-- If you need to use a temporary file in your program, you can use the
--`tmpfile' function to open it. Or you can use the `tmpnam' (better:
--`tmpnam_r') function to provide a name for a temporary file and then
--you can open it in the usual way with `fopen'.
--
-- The `tempnam' function is like `tmpnam' but lets you choose what
--directory temporary files will go in, and something about what their
--file names will look like. Important for multi-threaded programs is
--that `tempnam' is reentrant, while `tmpnam' is not since it returns a
--pointer to a static buffer.
--
-- These facilities are declared in the header file `stdio.h'.
--
-- - Function: FILE * tmpfile (void)
-- This function creates a temporary binary file for update mode, as
-- if by calling `fopen' with mode `"wb+"'. The file is deleted
-- automatically when it is closed or when the program terminates.
-- (On some other ISO C systems the file may fail to be deleted if
-- the program terminates abnormally).
--
-- This function is reentrant.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is in fact `tmpfile64', i.e. the LFS
-- interface transparently replaces the old interface.
--
-- - Function: FILE * tmpfile64 (void)
-- This function is similar to `tmpfile', but the stream it returns a
-- pointer to was opened using `tmpfile64'. Therefore this stream can
-- be used for files larger then 2^31 bytes on 32-bit machines.
--
-- Please note that the return type is still `FILE *'. There is no
-- special `FILE' type for the LFS interface.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a 32
-- bits machine this function is available under the name `tmpfile'
-- and so transparently replaces the old interface.
--
-- - Function: char * tmpnam (char *RESULT)
-- This function constructs and returns a valid file name that does
-- not refer to any existing file. If the RESULT argument is a null
-- pointer, the return value is a pointer to an internal static
-- string, which might be modified by subsequent calls and therefore
-- makes this function non-reentrant. Otherwise, the RESULT argument
-- should be a pointer to an array of at least `L_tmpnam' characters,
-- and the result is written into that array.
--
-- It is possible for `tmpnam' to fail if you call it too many times
-- without removing previously-created files. This is because the
-- limited length of the temporary file names gives room for only a
-- finite number of different names. If `tmpnam' fails it returns a
-- null pointer.
--
-- *Warning:* Between the time the pathname is constructed and the
-- file is created another process might have created a file with the
-- same name using `tmpnam', leading to a possible security hole. The
-- implementation generates names which can hardly be predicted, but
-- when opening the file you should use the `O_EXCL' flag. Using
-- `tmpfile' or `mkstemp' is a safe way to avoid this problem.
--
-- - Function: char * tmpnam_r (char *RESULT)
-- This function is nearly identical to the `tmpnam' function, except
-- that if RESULT is a null pointer it returns a null pointer.
--
-- This guarantees reentrancy because the non-reentrant situation of
-- `tmpnam' cannot happen here.
--
-- *Warning*: This function has the same security problems as
-- `tmpnam'.
--
-- - Macro: int L_tmpnam
-- The value of this macro is an integer constant expression that
-- represents the minimum size of a string large enough to hold a
-- file name generated by the `tmpnam' function.
--
-- - Macro: int TMP_MAX
-- The macro `TMP_MAX' is a lower bound for how many temporary names
-- you can create with `tmpnam'. You can rely on being able to call
-- `tmpnam' at least this many times before it might fail saying you
-- have made too many temporary file names.
--
-- With the GNU library, you can create a very large number of
-- temporary file names. If you actually created the files, you
-- would probably run out of disk space before you ran out of names.
-- Some other systems have a fixed, small limit on the number of
-- temporary files. The limit is never less than `25'.
--
-- - Function: char * tempnam (const char *DIR, const char *PREFIX)
-- This function generates a unique temporary file name. If PREFIX
-- is not a null pointer, up to five characters of this string are
-- used as a prefix for the file name. The return value is a string
-- newly allocated with `malloc', so you should release its storage
-- with `free' when it is no longer needed.
--
-- Because the string is dynamically allocated this function is
-- reentrant.
--
-- The directory prefix for the temporary file name is determined by
-- testing each of the following in sequence. The directory must
-- exist and be writable.
--
-- * The environment variable `TMPDIR', if it is defined. For
-- security reasons this only happens if the program is not SUID
-- or SGID enabled.
--
-- * The DIR argument, if it is not a null pointer.
--
-- * The value of the `P_tmpdir' macro.
--
-- * The directory `/tmp'.
--
-- This function is defined for SVID compatibility.
--
-- *Warning:* Between the time the pathname is constructed and the
-- file is created another process might have created a file with the
-- same name using `tempnam', leading to a possible security hole.
-- The implementation generates names which can hardly be predicted,
-- but when opening the file you should use the `O_EXCL' flag. Using
-- `tmpfile' or `mkstemp' is a safe way to avoid this problem.
--
-- - SVID Macro: char * P_tmpdir
-- This macro is the name of the default directory for temporary
-- files.
--
-- Older Unix systems did not have the functions just described.
--Instead they used `mktemp' and `mkstemp'. Both of these functions work
--by modifying a file name template string you pass. The last six
--characters of this string must be `XXXXXX'. These six `X's are
--replaced with six characters which make the whole string a unique file
--name. Usually the template string is something like
--`/tmp/PREFIXXXXXXX', and each program uses a unique PREFIX.
--
-- *Note:* Because `mktemp' and `mkstemp' modify the template string,
--you _must not_ pass string constants to them. String constants are
--normally in read-only storage, so your program would crash when
--`mktemp' or `mkstemp' tried to modify the string.
--
-- - Function: char * mktemp (char *TEMPLATE)
-- The `mktemp' function generates a unique file name by modifying
-- TEMPLATE as described above. If successful, it returns TEMPLATE
-- as modified. If `mktemp' cannot find a unique file name, it makes
-- TEMPLATE an empty string and returns that. If TEMPLATE does not
-- end with `XXXXXX', `mktemp' returns a null pointer.
--
-- *Warning:* Between the time the pathname is constructed and the
-- file is created another process might have created a file with the
-- same name using `mktemp', leading to a possible security hole. The
-- implementation generates names which can hardly be predicted, but
-- when opening the file you should use the `O_EXCL' flag. Using
-- `mkstemp' is a safe way to avoid this problem.
--
-- - Function: int mkstemp (char *TEMPLATE)
-- The `mkstemp' function generates a unique file name just as
-- `mktemp' does, but it also opens the file for you with `open'
-- (*note Opening and Closing Files::). If successful, it modifies
-- TEMPLATE in place and returns a file descriptor for that file open
-- for reading and writing. If `mkstemp' cannot create a
-- uniquely-named file, it returns `-1'. If TEMPLATE does not end
-- with `XXXXXX', `mkstemp' returns `-1' and does not modify TEMPLATE.
--
-- The file is opened using mode `0600'. If the file is meant to be
-- used by other users this mode must be changed explicitly.
--
-- Unlike `mktemp', `mkstemp' is actually guaranteed to create a unique
--file that cannot possibly clash with any other program trying to create
--a temporary file. This is because it works by calling `open' with the
--`O_EXCL' flag, which says you want to create a new file and get an
--error if the file already exists.
--
-- - Function: char * mkdtemp (char *TEMPLATE)
-- The `mkdtemp' function creates a directory with a unique name. If
-- it succeeds, it overwrites TEMPLATE with the name of the
-- directory, and returns TEMPLATE. As with `mktemp' and `mkstemp',
-- TEMPLATE should be a string ending with `XXXXXX'.
--
-- If `mkdtemp' cannot create an uniquely named directory, it returns
-- `NULL' and sets ERRNO appropriately. If TEMPLATE does not end
-- with `XXXXXX', `mkdtemp' returns `NULL' and does not modify
-- TEMPLATE. ERRNO will be set to `EINVAL' in this case.
--
-- The directory is created using mode `0700'.
--
-- The directory created by `mkdtemp' cannot clash with temporary files
--or directories created by other users. This is because directory
--creation always works like `open' with `O_EXCL'. *Note Creating
--Directories::.
--
-- The `mkdtemp' function comes from OpenBSD.
--
--
--File: libc.info, Node: Pipes and FIFOs, Next: Sockets, Prev: File System Interface, Up: Top
--
--Pipes and FIFOs
--***************
--
-- A "pipe" is a mechanism for interprocess communication; data written
--to the pipe by one process can be read by another process. The data is
--handled in a first-in, first-out (FIFO) order. The pipe has no name; it
--is created for one use and both ends must be inherited from the single
--process which created the pipe.
--
-- A "FIFO special file" is similar to a pipe, but instead of being an
--anonymous, temporary connection, a FIFO has a name or names like any
--other file. Processes open the FIFO by name in order to communicate
--through it.
--
-- A pipe or FIFO has to be open at both ends simultaneously. If you
--read from a pipe or FIFO file that doesn't have any processes writing
--to it (perhaps because they have all closed the file, or exited), the
--read returns end-of-file. Writing to a pipe or FIFO that doesn't have a
--reading process is treated as an error condition; it generates a
--`SIGPIPE' signal, and fails with error code `EPIPE' if the signal is
--handled or blocked.
--
-- Neither pipes nor FIFO special files allow file positioning. Both
--reading and writing operations happen sequentially; reading from the
--beginning of the file and writing at the end.
--
--* Menu:
--
--* Creating a Pipe:: Making a pipe with the `pipe' function.
--* Pipe to a Subprocess:: Using a pipe to communicate with a
-- child process.
--* FIFO Special Files:: Making a FIFO special file.
--* Pipe Atomicity:: When pipe (or FIFO) I/O is atomic.
--
--
--File: libc.info, Node: Creating a Pipe, Next: Pipe to a Subprocess, Up: Pipes and FIFOs
--
--Creating a Pipe
--===============
--
-- The primitive for creating a pipe is the `pipe' function. This
--creates both the reading and writing ends of the pipe. It is not very
--useful for a single process to use a pipe to talk to itself. In typical
--use, a process creates a pipe just before it forks one or more child
--processes (*note Creating a Process::). The pipe is then used for
--communication either between the parent or child processes, or between
--two sibling processes.
--
-- The `pipe' function is declared in the header file `unistd.h'.
--
-- - Function: int pipe (int FILEDES[2])
-- The `pipe' function creates a pipe and puts the file descriptors
-- for the reading and writing ends of the pipe (respectively) into
-- `FILEDES[0]' and `FILEDES[1]'.
--
-- An easy way to remember that the input end comes first is that file
-- descriptor `0' is standard input, and file descriptor `1' is
-- standard output.
--
-- If successful, `pipe' returns a value of `0'. On failure, `-1' is
-- returned. The following `errno' error conditions are defined for
-- this function:
--
-- `EMFILE'
-- The process has too many files open.
--
-- `ENFILE'
-- There are too many open files in the entire system. *Note
-- Error Codes::, for more information about `ENFILE'. This
-- error never occurs in the GNU system.
--
-- Here is an example of a simple program that creates a pipe. This
--program uses the `fork' function (*note Creating a Process::) to create
--a child process. The parent process writes data to the pipe, which is
--read by the child process.
--
-- #include <sys/types.h>
-- #include <unistd.h>
-- #include <stdio.h>
-- #include <stdlib.h>
--
-- /* Read characters from the pipe and echo them to `stdout'. */
--
-- void
-- read_from_pipe (int file)
-- {
-- FILE *stream;
-- int c;
-- stream = fdopen (file, "r");
-- while ((c = fgetc (stream)) != EOF)
-- putchar (c);
-- fclose (stream);
-- }
--
-- /* Write some random text to the pipe. */
--
-- void
-- write_to_pipe (int file)
-- {
-- FILE *stream;
-- stream = fdopen (file, "w");
-- fprintf (stream, "hello, world!\n");
-- fprintf (stream, "goodbye, world!\n");
-- fclose (stream);
-- }
--
-- int
-- main (void)
-- {
-- pid_t pid;
-- int mypipe[2];
--
-- /* Create the pipe. */
-- if (pipe (mypipe))
-- {
-- fprintf (stderr, "Pipe failed.\n");
-- return EXIT_FAILURE;
-- }
--
-- /* Create the child process. */
-- pid = fork ();
-- if (pid == (pid_t) 0)
-- {
-- /* This is the child process.
-- Close other end first. */
-- close (mypipe[1]);
-- read_from_pipe (mypipe[0]);
-- return EXIT_SUCCESS;
-- }
-- else if (pid < (pid_t) 0)
-- {
-- /* The fork failed. */
-- fprintf (stderr, "Fork failed.\n");
-- return EXIT_FAILURE;
-- }
-- else
-- {
-- /* This is the parent process.
-- Close other end first. */
-- close (mypipe[0]);
-- write_to_pipe (mypipe[1]);
-- return EXIT_SUCCESS;
-- }
-- }
--
--
--File: libc.info, Node: Pipe to a Subprocess, Next: FIFO Special Files, Prev: Creating a Pipe, Up: Pipes and FIFOs
--
--Pipe to a Subprocess
--====================
--
-- A common use of pipes is to send data to or receive data from a
--program being run as a subprocess. One way of doing this is by using a
--combination of `pipe' (to create the pipe), `fork' (to create the
--subprocess), `dup2' (to force the subprocess to use the pipe as its
--standard input or output channel), and `exec' (to execute the new
--program). Or, you can use `popen' and `pclose'.
--
-- The advantage of using `popen' and `pclose' is that the interface is
--much simpler and easier to use. But it doesn't offer as much
--flexibility as using the low-level functions directly.
--
-- - Function: FILE * popen (const char *COMMAND, const char *MODE)
-- The `popen' function is closely related to the `system' function;
-- see *Note Running a Command::. It executes the shell command
-- COMMAND as a subprocess. However, instead of waiting for the
-- command to complete, it creates a pipe to the subprocess and
-- returns a stream that corresponds to that pipe.
--
-- If you specify a MODE argument of `"r"', you can read from the
-- stream to retrieve data from the standard output channel of the
-- subprocess. The subprocess inherits its standard input channel
-- from the parent process.
--
-- Similarly, if you specify a MODE argument of `"w"', you can write
-- to the stream to send data to the standard input channel of the
-- subprocess. The subprocess inherits its standard output channel
-- from the parent process.
--
-- In the event of an error `popen' returns a null pointer. This
-- might happen if the pipe or stream cannot be created, if the
-- subprocess cannot be forked, or if the program cannot be executed.
--
-- - Function: int pclose (FILE *STREAM)
-- The `pclose' function is used to close a stream created by `popen'.
-- It waits for the child process to terminate and returns its status
-- value, as for the `system' function.
--
-- Here is an example showing how to use `popen' and `pclose' to filter
--output through another program, in this case the paging program `more'.
--
-- #include <stdio.h>
-- #include <stdlib.h>
--
-- void
-- write_data (FILE * stream)
-- {
-- int i;
-- for (i = 0; i < 100; i++)
-- fprintf (stream, "%d\n", i);
-- if (ferror (stream))
-- {
-- fprintf (stderr, "Output to stream failed.\n");
-- exit (EXIT_FAILURE);
-- }
-- }
--
-- int
-- main (void)
-- {
-- FILE *output;
--
-- output = popen ("more", "w");
-- if (!output)
-- {
-- fprintf (stderr,
-- "incorrect parameters or too many files.\n");
-- return EXIT_FAILURE;
-- }
-- write_data (output);
-- if (pclose (output) != 0)
-- {
-- fprintf (stderr,
-- "Could not run more or other error.\n");
-- }
-- return EXIT_SUCCESS;
-- }
--
--
--File: libc.info, Node: FIFO Special Files, Next: Pipe Atomicity, Prev: Pipe to a Subprocess, Up: Pipes and FIFOs
--
--FIFO Special Files
--==================
--
-- A FIFO special file is similar to a pipe, except that it is created
--in a different way. Instead of being an anonymous communications
--channel, a FIFO special file is entered into the file system by calling
--`mkfifo'.
--
-- Once you have created a FIFO special file in this way, any process
--can open it for reading or writing, in the same way as an ordinary file.
--However, it has to be open at both ends simultaneously before you can
--proceed to do any input or output operations on it. Opening a FIFO for
--reading normally blocks until some other process opens the same FIFO for
--writing, and vice versa.
--
-- The `mkfifo' function is declared in the header file `sys/stat.h'.
--
-- - Function: int mkfifo (const char *FILENAME, mode_t MODE)
-- The `mkfifo' function makes a FIFO special file with name
-- FILENAME. The MODE argument is used to set the file's
-- permissions; see *Note Setting Permissions::.
--
-- The normal, successful return value from `mkfifo' is `0'. In the
-- case of an error, `-1' is returned. In addition to the usual file
-- name errors (*note File Name Errors::), the following `errno'
-- error conditions are defined for this function:
--
-- `EEXIST'
-- The named file already exists.
--
-- `ENOSPC'
-- The directory or file system cannot be extended.
--
-- `EROFS'
-- The directory that would contain the file resides on a
-- read-only file system.
--
--
--File: libc.info, Node: Pipe Atomicity, Prev: FIFO Special Files, Up: Pipes and FIFOs
--
--Atomicity of Pipe I/O
--=====================
--
-- Reading or writing pipe data is "atomic" if the size of data written
--is not greater than `PIPE_BUF'. This means that the data transfer
--seems to be an instantaneous unit, in that nothing else in the system
--can observe a state in which it is partially complete. Atomic I/O may
--not begin right away (it may need to wait for buffer space or for data),
--but once it does begin it finishes immediately.
--
-- Reading or writing a larger amount of data may not be atomic; for
--example, output data from other processes sharing the descriptor may be
--interspersed. Also, once `PIPE_BUF' characters have been written,
--further writes will block until some characters are read.
--
-- *Note Limits for Files::, for information about the `PIPE_BUF'
--parameter.
--
--
--File: libc.info, Node: Sockets, Next: Low-Level Terminal Interface, Prev: Pipes and FIFOs, Up: Top
--
--Sockets
--*******
--
-- This chapter describes the GNU facilities for interprocess
--communication using sockets.
--
-- A "socket" is a generalized interprocess communication channel.
--Like a pipe, a socket is represented as a file descriptor. Unlike pipes
--sockets support communication between unrelated processes, and even
--between processes running on different machines that communicate over a
--network. Sockets are the primary means of communicating with other
--machines; `telnet', `rlogin', `ftp', `talk' and the other familiar
--network programs use sockets.
--
-- Not all operating systems support sockets. In the GNU library, the
--header file `sys/socket.h' exists regardless of the operating system,
--and the socket functions always exist, but if the system does not
--really support sockets these functions always fail.
--
-- *Incomplete:* We do not currently document the facilities for
--broadcast messages or for configuring Internet interfaces. The
--reentrant functions and some newer functions that are related to IPv6
--aren't documented either so far.
--
--* Menu:
--
--* Socket Concepts:: Basic concepts you need to know about.
--* Communication Styles::Stream communication, datagrams and other styles.
--* Socket Addresses:: How socket names (``addresses'') work.
--* Interface Naming:: Identifying specific network interfaces.
--* Local Namespace:: Details about the local namespace.
--* Internet Namespace:: Details about the Internet namespace.
--* Misc Namespaces:: Other namespaces not documented fully here.
--* Open/Close Sockets:: Creating sockets and destroying them.
--* Connections:: Operations on sockets with connection state.
--* Datagrams:: Operations on datagram sockets.
--* Inetd:: Inetd is a daemon that starts servers on request.
-- The most convenient way to write a server
-- is to make it work with Inetd.
--* Socket Options:: Miscellaneous low-level socket options.
--* Networks Database:: Accessing the database of network names.
--
--
--File: libc.info, Node: Socket Concepts, Next: Communication Styles, Up: Sockets
--
--Socket Concepts
--===============
--
-- When you create a socket, you must specify the style of communication
--you want to use and the type of protocol that should implement it. The
--"communication style" of a socket defines the user-level semantics of
--sending and receiving data on the socket. Choosing a communication
--style specifies the answers to questions such as these:
--
-- * *What are the units of data transmission?* Some communication
-- styles regard the data as a sequence of bytes with no larger
-- structure; others group the bytes into records (which are known in
-- this context as "packets").
--
-- * *Can data be lost during normal operation?* Some communication
-- styles guarantee that all the data sent arrives in the order it was
-- sent (barring system or network crashes); other styles occasionally
-- lose data as a normal part of operation, and may sometimes deliver
-- packets more than once or in the wrong order.
--
-- Designing a program to use unreliable communication styles usually
-- involves taking precautions to detect lost or misordered packets
-- and to retransmit data as needed.
--
-- * *Is communication entirely with one partner?* Some communication
-- styles are like a telephone call--you make a "connection" with one
-- remote socket and then exchange data freely. Other styles are
-- like mailing letters--you specify a destination address for each
-- message you send.
--
-- You must also choose a "namespace" for naming the socket. A socket
--name ("address") is meaningful only in the context of a particular
--namespace. In fact, even the data type to use for a socket name may
--depend on the namespace. Namespaces are also called "domains", but we
--avoid that word as it can be confused with other usage of the same
--term. Each namespace has a symbolic name that starts with `PF_'. A
--corresponding symbolic name starting with `AF_' designates the address
--format for that namespace.
--
-- Finally you must choose the "protocol" to carry out the
--communication. The protocol determines what low-level mechanism is used
--to transmit and receive data. Each protocol is valid for a particular
--namespace and communication style; a namespace is sometimes called a
--"protocol family" because of this, which is why the namespace names
--start with `PF_'.
--
-- The rules of a protocol apply to the data passing between two
--programs, perhaps on different computers; most of these rules are
--handled by the operating system and you need not know about them. What
--you do need to know about protocols is this:
--
-- * In order to have communication between two sockets, they must
-- specify the _same_ protocol.
--
-- * Each protocol is meaningful with particular style/namespace
-- combinations and cannot be used with inappropriate combinations.
-- For example, the TCP protocol fits only the byte stream style of
-- communication and the Internet namespace.
--
-- * For each combination of style and namespace there is a "default
-- protocol", which you can request by specifying 0 as the protocol
-- number. And that's what you should normally do--use the default.
--
-- Throughout the following description at various places
--variables/parameters to denote sizes are required. And here the trouble
--starts. In the first implementations the type of these variables was
--simply `int'. On most machines at that time an `int' was 32 bits wide,
--which created a _de facto_ standard requiring 32-bit variables. This
--is important since references to variables of this type are passed to
--the kernel.
--
-- Then the POSIX people came and unified the interface with the words
--"all size values are of type `size_t'". On 64-bit machines `size_t' is
--64 bits wide, so pointers to variables were no longer possible.
--
-- The Unix98 specification provides a solution by introducing a type
--`socklen_t'. This type is used in all of the cases that POSIX changed
--to use `size_t'. The only requirement of this type is that it be an
--unsigned type of at least 32 bits. Therefore, implementations which
--require that references to 32-bit variables be passed can be as happy
--as implementations which use 64-bit values.
--
--
--File: libc.info, Node: Communication Styles, Next: Socket Addresses, Prev: Socket Concepts, Up: Sockets
--
--Communication Styles
--====================
--
-- The GNU library includes support for several different kinds of
--sockets, each with different characteristics. This section describes
--the supported socket types. The symbolic constants listed here are
--defined in `sys/socket.h'.
--
-- - Macro: int SOCK_STREAM
-- The `SOCK_STREAM' style is like a pipe (*note Pipes and FIFOs::).
-- It operates over a connection with a particular remote socket and
-- transmits data reliably as a stream of bytes.
--
-- Use of this style is covered in detail in *Note Connections::.
--
-- - Macro: int SOCK_DGRAM
-- The `SOCK_DGRAM' style is used for sending individually-addressed
-- packets unreliably. It is the diametrical opposite of
-- `SOCK_STREAM'.
--
-- Each time you write data to a socket of this kind, that data
-- becomes one packet. Since `SOCK_DGRAM' sockets do not have
-- connections, you must specify the recipient address with each
-- packet.
--
-- The only guarantee that the system makes about your requests to
-- transmit data is that it will try its best to deliver each packet
-- you send. It may succeed with the sixth packet after failing with
-- the fourth and fifth packets; the seventh packet may arrive before
-- the sixth, and may arrive a second time after the sixth.
--
-- The typical use for `SOCK_DGRAM' is in situations where it is
-- acceptable to simply re-send a packet if no response is seen in a
-- reasonable amount of time.
--
-- *Note Datagrams::, for detailed information about how to use
-- datagram sockets.
--
-- - Macro: int SOCK_RAW
-- This style provides access to low-level network protocols and
-- interfaces. Ordinary user programs usually have no need to use
-- this style.
--
--
--File: libc.info, Node: Socket Addresses, Next: Interface Naming, Prev: Communication Styles, Up: Sockets
--
--Socket Addresses
--================
--
-- The name of a socket is normally called an "address". The functions
--and symbols for dealing with socket addresses were named
--inconsistently, sometimes using the term "name" and sometimes using
--"address". You can regard these terms as synonymous where sockets are
--concerned.
--
-- A socket newly created with the `socket' function has no address.
--Other processes can find it for communication only if you give it an
--address. We call this "binding" the address to the socket, and the way
--to do it is with the `bind' function.
--
-- You need be concerned with the address of a socket if other processes
--are to find it and start communicating with it. You can specify an
--address for other sockets, but this is usually pointless; the first time
--you send data from a socket, or use it to initiate a connection, the
--system assigns an address automatically if you have not specified one.
--
-- Occasionally a client needs to specify an address because the server
--discriminates based on address; for example, the rsh and rlogin
--protocols look at the client's socket address and only bypass password
--checking if it is less than `IPPORT_RESERVED' (*note Ports::).
--
-- The details of socket addresses vary depending on what namespace you
--are using. *Note Local Namespace::, or *Note Internet Namespace::, for
--specific information.
--
-- Regardless of the namespace, you use the same functions `bind' and
--`getsockname' to set and examine a socket's address. These functions
--use a phony data type, `struct sockaddr *', to accept the address. In
--practice, the address lives in a structure of some other data type
--appropriate to the address format you are using, but you cast its
--address to `struct sockaddr *' when you pass it to `bind'.
--
--* Menu:
--
--* Address Formats:: About `struct sockaddr'.
--* Setting Address:: Binding an address to a socket.
--* Reading Address:: Reading the address of a socket.
--
--
--File: libc.info, Node: Address Formats, Next: Setting Address, Up: Socket Addresses
--
--Address Formats
-----------------
--
-- The functions `bind' and `getsockname' use the generic data type
--`struct sockaddr *' to represent a pointer to a socket address. You
--can't use this data type effectively to interpret an address or
--construct one; for that, you must use the proper data type for the
--socket's namespace.
--
-- Thus, the usual practice is to construct an address of the proper
--namespace-specific type, then cast a pointer to `struct sockaddr *'
--when you call `bind' or `getsockname'.
--
-- The one piece of information that you can get from the `struct
--sockaddr' data type is the "address format designator". This tells you
--which data type to use to understand the address fully.
--
-- The symbols in this section are defined in the header file
--`sys/socket.h'.
--
-- - Data Type: struct sockaddr
-- The `struct sockaddr' type itself has the following members:
--
-- `short int sa_family'
-- This is the code for the address format of this address. It
-- identifies the format of the data which follows.
--
-- `char sa_data[14]'
-- This is the actual socket address data, which is
-- format-dependent. Its length also depends on the format, and
-- may well be more than 14. The length 14 of `sa_data' is
-- essentially arbitrary.
--
-- Each address format has a symbolic name which starts with `AF_'.
--Each of them corresponds to a `PF_' symbol which designates the
--corresponding namespace. Here is a list of address format names:
--
--`AF_LOCAL'
-- This designates the address format that goes with the local
-- namespace. (`PF_LOCAL' is the name of that namespace.) *Note
-- Local Namespace Details::, for information about this address
-- format.
--
--`AF_UNIX'
-- This is a synonym for `AF_LOCAL'. Although `AF_LOCAL' is mandated
-- by POSIX.1g, `AF_UNIX' is portable to more systems. `AF_UNIX' was
-- the traditional name stemming from BSD, so even most POSIX systems
-- support it. It is also the name of choice in the Unix98
-- specification. (The same is true for `PF_UNIX' vs. `PF_LOCAL').
--
--`AF_FILE'
-- This is another synonym for `AF_LOCAL', for compatibility.
-- (`PF_FILE' is likewise a synonym for `PF_LOCAL'.)
--
--`AF_INET'
-- This designates the address format that goes with the Internet
-- namespace. (`PF_INET' is the name of that namespace.) *Note
-- Internet Address Formats::.
--
--`AF_INET6'
-- This is similar to `AF_INET', but refers to the IPv6 protocol.
-- (`PF_INET6' is the name of the corresponding namespace.)
--
--`AF_UNSPEC'
-- This designates no particular address format. It is used only in
-- rare cases, such as to clear out the default destination address
-- of a "connected" datagram socket. *Note Sending Datagrams::.
--
-- The corresponding namespace designator symbol `PF_UNSPEC' exists
-- for completeness, but there is no reason to use it in a program.
--
-- `sys/socket.h' defines symbols starting with `AF_' for many
--different kinds of networks, most or all of which are not actually
--implemented. We will document those that really work as we receive
--information about how to use them.
--
--
--File: libc.info, Node: Setting Address, Next: Reading Address, Prev: Address Formats, Up: Socket Addresses
--
--Setting the Address of a Socket
---------------------------------
--
-- Use the `bind' function to assign an address to a socket. The
--prototype for `bind' is in the header file `sys/socket.h'. For
--examples of use, see *Note Local Socket Example::, or see *Note Inet
--Example::.
--
-- - Function: int bind (int SOCKET, struct sockaddr *ADDR, socklen_t
-- LENGTH)
-- The `bind' function assigns an address to the socket SOCKET. The
-- ADDR and LENGTH arguments specify the address; the detailed format
-- of the address depends on the namespace. The first part of the
-- address is always the format designator, which specifies a
-- namespace, and says that the address is in the format of that
-- namespace.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `EADDRNOTAVAIL'
-- The specified address is not available on this machine.
--
-- `EADDRINUSE'
-- Some other socket is already using the specified address.
--
-- `EINVAL'
-- The socket SOCKET already has an address.
--
-- `EACCES'
-- You do not have permission to access the requested address.
-- (In the Internet domain, only the super-user is allowed to
-- specify a port number in the range 0 through
-- `IPPORT_RESERVED' minus one; see *Note Ports::.)
--
-- Additional conditions may be possible depending on the particular
-- namespace of the socket.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-27 glibc-2.3.2-200304020432/manual/libc.info-27
---- glibc-2.3.2/manual/libc.info-27 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-27 Thu Jan 1 01:00:00 1970
-@@ -1,1225 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Reading Address, Prev: Setting Address, Up: Socket Addresses
--
--Reading the Address of a Socket
---------------------------------
--
-- Use the function `getsockname' to examine the address of an Internet
--socket. The prototype for this function is in the header file
--`sys/socket.h'.
--
-- - Function: int getsockname (int SOCKET, struct sockaddr *ADDR,
-- socklen_t *LENGTH-PTR)
-- The `getsockname' function returns information about the address
-- of the socket SOCKET in the locations specified by the ADDR and
-- LENGTH-PTR arguments. Note that the LENGTH-PTR is a pointer; you
-- should initialize it to be the allocation size of ADDR, and on
-- return it contains the actual size of the address data.
--
-- The format of the address data depends on the socket namespace.
-- The length of the information is usually fixed for a given
-- namespace, so normally you can know exactly how much space is
-- needed and can provide that much. The usual practice is to
-- allocate a place for the value using the proper data type for the
-- socket's namespace, then cast its address to `struct sockaddr *'
-- to pass it to `getsockname'.
--
-- The return value is `0' on success and `-1' on error. The
-- following `errno' error conditions are defined for this function:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `ENOBUFS'
-- There are not enough internal buffers available for the
-- operation.
--
-- You can't read the address of a socket in the file namespace. This
--is consistent with the rest of the system; in general, there's no way to
--find a file's name from a descriptor for that file.
--
--
--File: libc.info, Node: Interface Naming, Next: Local Namespace, Prev: Socket Addresses, Up: Sockets
--
--Interface Naming
--================
--
-- Each network interface has a name. This usually consists of a few
--letters that relate to the type of interface, which may be followed by a
--number if there is more than one interface of that type. Examples
--might be `lo' (the loopback interface) and `eth0' (the first Ethernet
--interface).
--
-- Although such names are convenient for humans, it would be clumsy to
--have to use them whenever a program needs to refer to an interface. In
--such situations an interface is referred to by its "index", which is an
--arbitrarily-assigned small positive integer.
--
-- The following functions, constants and data types are declared in the
--header file `net/if.h'.
--
-- - Constant: size_t IFNAMSIZ
-- This constant defines the maximum buffer size needed to hold an
-- interface name, including its terminating zero byte.
--
-- - Function: unsigned int if_nametoindex (const char *ifname)
-- This function yields the interface index corresponding to a
-- particular name. If no interface exists with the name given, it
-- returns 0.
--
-- - Function: char * if_indextoname (unsigned int ifindex, char *ifname)
-- This function maps an interface index to its corresponding name.
-- The returned name is placed in the buffer pointed to by `ifname',
-- which must be at least `IFNAMSIZ' bytes in length. If the index
-- was invalid, the function's return value is a null pointer,
-- otherwise it is `ifname'.
--
-- - Data Type: struct if_nameindex
-- This data type is used to hold the information about a single
-- interface. It has the following members:
--
-- `unsigned int if_index;'
-- This is the interface index.
--
-- `char *if_name'
-- This is the null-terminated index name.
--
--
-- - Function: struct if_nameindex * if_nameindex (void)
-- This function returns an array of `if_nameindex' structures, one
-- for every interface that is present. The end of the list is
-- indicated by a structure with an interface of 0 and a null name
-- pointer. If an error occurs, this function returns a null pointer.
--
-- The returned structure must be freed with `if_freenameindex' after
-- use.
--
-- - Function: void if_freenameindex (struct if_nameindex *ptr)
-- This function frees the structure returned by an earlier call to
-- `if_nameindex'.
--
--
--File: libc.info, Node: Local Namespace, Next: Internet Namespace, Prev: Interface Naming, Up: Sockets
--
--The Local Namespace
--===================
--
-- This section describes the details of the local namespace, whose
--symbolic name (required when you create a socket) is `PF_LOCAL'. The
--local namespace is also known as "Unix domain sockets". Another name
--is file namespace since socket addresses are normally implemented as
--file names.
--
--* Menu:
--
--* Concepts: Local Namespace Concepts. What you need to understand.
--* Details: Local Namespace Details. Address format, symbolic names, etc.
--* Example: Local Socket Example. Example of creating a socket.
--
--
--File: libc.info, Node: Local Namespace Concepts, Next: Local Namespace Details, Up: Local Namespace
--
--Local Namespace Concepts
--------------------------
--
-- In the local namespace socket addresses are file names. You can
--specify any file name you want as the address of the socket, but you
--must have write permission on the directory containing it. It's common
--to put these files in the `/tmp' directory.
--
-- One peculiarity of the local namespace is that the name is only used
--when opening the connection; once open the address is not meaningful and
--may not exist.
--
-- Another peculiarity is that you cannot connect to such a socket from
--another machine-not even if the other machine shares the file system
--which contains the name of the socket. You can see the socket in a
--directory listing, but connecting to it never succeeds. Some programs
--take advantage of this, such as by asking the client to send its own
--process ID, and using the process IDs to distinguish between clients.
--However, we recommend you not use this method in protocols you design,
--as we might someday permit connections from other machines that mount
--the same file systems. Instead, send each new client an identifying
--number if you want it to have one.
--
-- After you close a socket in the local namespace, you should delete
--the file name from the file system. Use `unlink' or `remove' to do
--this; see *Note Deleting Files::.
--
-- The local namespace supports just one protocol for any communication
--style; it is protocol number `0'.
--
--
--File: libc.info, Node: Local Namespace Details, Next: Local Socket Example, Prev: Local Namespace Concepts, Up: Local Namespace
--
--Details of Local Namespace
----------------------------
--
-- To create a socket in the local namespace, use the constant
--`PF_LOCAL' as the NAMESPACE argument to `socket' or `socketpair'. This
--constant is defined in `sys/socket.h'.
--
-- - Macro: int PF_LOCAL
-- This designates the local namespace, in which socket addresses are
-- local names, and its associated family of protocols. `PF_Local'
-- is the macro used by Posix.1g.
--
-- - Macro: int PF_UNIX
-- This is a synonym for `PF_LOCAL', for compatibility's sake.
--
-- - Macro: int PF_FILE
-- This is a synonym for `PF_LOCAL', for compatibility's sake.
--
-- The structure for specifying socket names in the local namespace is
--defined in the header file `sys/un.h':
--
-- - Data Type: struct sockaddr_un
-- This structure is used to specify local namespace socket
-- addresses. It has the following members:
--
-- `short int sun_family'
-- This identifies the address family or format of the socket
-- address. You should store the value `AF_LOCAL' to designate
-- the local namespace. *Note Socket Addresses::.
--
-- `char sun_path[108]'
-- This is the file name to use.
--
-- *Incomplete:* Why is 108 a magic number? RMS suggests making
-- this a zero-length array and tweaking the following example
-- to use `alloca' to allocate an appropriate amount of storage
-- based on the length of the filename.
--
-- You should compute the LENGTH parameter for a socket address in the
--local namespace as the sum of the size of the `sun_family' component
--and the string length (_not_ the allocation size!) of the file name
--string. This can be done using the macro `SUN_LEN':
--
-- - Macro: int SUN_LEN (_struct sockaddr_un *_ PTR)
-- The macro computes the length of socket address in the local
-- namespace.
--
--
--File: libc.info, Node: Local Socket Example, Prev: Local Namespace Details, Up: Local Namespace
--
--Example of Local-Namespace Sockets
------------------------------------
--
-- Here is an example showing how to create and name a socket in the
--local namespace.
--
-- #include <stddef.h>
-- #include <stdio.h>
-- #include <errno.h>
-- #include <stdlib.h>
-- #include <string.h>
-- #include <sys/socket.h>
-- #include <sys/un.h>
--
-- int
-- make_named_socket (const char *filename)
-- {
-- struct sockaddr_un name;
-- int sock;
-- size_t size;
--
-- /* Create the socket. */
-- sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
-- if (sock < 0)
-- {
-- perror ("socket");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Bind a name to the socket. */
-- name.sun_family = AF_LOCAL;
-- strncpy (name.sun_path, filename, sizeof (name.sun_path));
-- name.sun_path[sizeof (name.sun_path) - 1] = '\0';
--
-- /* The size of the address is
-- the offset of the start of the filename,
-- plus its length,
-- plus one for the terminating null byte.
-- Alternatively you can just do:
-- size = SUN_LEN (&name);
-- */
-- size = (offsetof (struct sockaddr_un, sun_path)
-- + strlen (name.sun_path) + 1);
--
-- if (bind (sock, (struct sockaddr *) &name, size) < 0)
-- {
-- perror ("bind");
-- exit (EXIT_FAILURE);
-- }
--
-- return sock;
-- }
--
--
--File: libc.info, Node: Internet Namespace, Next: Misc Namespaces, Prev: Local Namespace, Up: Sockets
--
--The Internet Namespace
--======================
--
-- This section describes the details of the protocols and socket naming
--conventions used in the Internet namespace.
--
-- Originally the Internet namespace used only IP version 4 (IPv4).
--With the growing number of hosts on the Internet, a new protocol with a
--larger address space was necessary: IP version 6 (IPv6). IPv6
--introduces 128-bit addresses (IPv4 has 32-bit addresses) and other
--features, and will eventually replace IPv4.
--
-- To create a socket in the IPv4 Internet namespace, use the symbolic
--name `PF_INET' of this namespace as the NAMESPACE argument to `socket'
--or `socketpair'. For IPv6 addresses you need the macro `PF_INET6'.
--These macros are defined in `sys/socket.h'.
--
-- - Macro: int PF_INET
-- This designates the IPv4 Internet namespace and associated family
-- of protocols.
--
-- - Macro: int PF_INET6
-- This designates the IPv6 Internet namespace and associated family
-- of protocols.
--
-- A socket address for the Internet namespace includes the following
--components:
--
-- * The address of the machine you want to connect to. Internet
-- addresses can be specified in several ways; these are discussed in
-- *Note Internet Address Formats::, *Note Host Addresses:: and *Note
-- Host Names::.
--
-- * A port number for that machine. *Note Ports::.
--
-- You must ensure that the address and port number are represented in a
--canonical format called "network byte order". *Note Byte Order::, for
--information about this.
--
--* Menu:
--
--* Internet Address Formats:: How socket addresses are specified in the
-- Internet namespace.
--* Host Addresses:: All about host addresses of Internet host.
--* Protocols Database:: Referring to protocols by name.
--* Ports:: Internet port numbers.
--* Services Database:: Ports may have symbolic names.
--* Byte Order:: Different hosts may use different byte
-- ordering conventions; you need to
-- canonicalize host address and port number.
--* Inet Example:: Putting it all together.
--
--
--File: libc.info, Node: Internet Address Formats, Next: Host Addresses, Up: Internet Namespace
--
--Internet Socket Address Formats
---------------------------------
--
-- In the Internet namespace, for both IPv4 (`AF_INET') and IPv6
--(`AF_INET6'), a socket address consists of a host address and a port on
--that host. In addition, the protocol you choose serves effectively as
--a part of the address because local port numbers are meaningful only
--within a particular protocol.
--
-- The data types for representing socket addresses in the Internet
--namespace are defined in the header file `netinet/in.h'.
--
-- - Data Type: struct sockaddr_in
-- This is the data type used to represent socket addresses in the
-- Internet namespace. It has the following members:
--
-- `sa_family_t sin_family'
-- This identifies the address family or format of the socket
-- address. You should store the value `AF_INET' in this member.
-- *Note Socket Addresses::.
--
-- `struct in_addr sin_addr'
-- This is the Internet address of the host machine. *Note Host
-- Addresses::, and *Note Host Names::, for how to get a value
-- to store here.
--
-- `unsigned short int sin_port'
-- This is the port number. *Note Ports::.
--
-- When you call `bind' or `getsockname', you should specify `sizeof
--(struct sockaddr_in)' as the LENGTH parameter if you are using an IPv4
--Internet namespace socket address.
--
-- - Data Type: struct sockaddr_in6
-- This is the data type used to represent socket addresses in the
-- IPv6 namespace. It has the following members:
--
-- `sa_family_t sin6_family'
-- This identifies the address family or format of the socket
-- address. You should store the value of `AF_INET6' in this
-- member. *Note Socket Addresses::.
--
-- `struct in6_addr sin6_addr'
-- This is the IPv6 address of the host machine. *Note Host
-- Addresses::, and *Note Host Names::, for how to get a value
-- to store here.
--
-- `uint32_t sin6_flowinfo'
-- This is a currently unimplemented field.
--
-- `uint16_t sin6_port'
-- This is the port number. *Note Ports::.
--
--
--
--File: libc.info, Node: Host Addresses, Next: Protocols Database, Prev: Internet Address Formats, Up: Internet Namespace
--
--Host Addresses
----------------
--
-- Each computer on the Internet has one or more "Internet addresses",
--numbers which identify that computer among all those on the Internet.
--Users typically write IPv4 numeric host addresses as sequences of four
--numbers, separated by periods, as in `128.52.46.32', and IPv6 numeric
--host addresses as sequences of up to eight numbers separated by colons,
--as in `5f03:1200:836f:c100::1'.
--
-- Each computer also has one or more "host names", which are strings
--of words separated by periods, as in `mescaline.gnu.org'.
--
-- Programs that let the user specify a host typically accept both
--numeric addresses and host names. To open a connection a program needs
--a numeric address, and so must convert a host name to the numeric
--address it stands for.
--
--* Menu:
--
--* Abstract Host Addresses:: What a host number consists of.
--* Data type: Host Address Data Type. Data type for a host number.
--* Functions: Host Address Functions. Functions to operate on them.
--* Names: Host Names. Translating host names to host numbers.
--
--
--File: libc.info, Node: Abstract Host Addresses, Next: Host Address Data Type, Up: Host Addresses
--
--Internet Host Addresses
--.......................
--
-- Each computer on the Internet has one or more Internet addresses,
--numbers which identify that computer among all those on the Internet.
--
-- An IPv4 Internet host address is a number containing four bytes of
--data. Historically these are divided into two parts, a "network
--number" and a "local network address number" within that network. In
--the mid-1990s classless addresses were introduced which changed this
--behavior. Since some functions implicitly expect the old definitions,
--we first describe the class-based network and will then describe
--classless addresses. IPv6 uses only classless addresses and therefore
--the following paragraphs don't apply.
--
-- The class-based IPv4 network number consists of the first one, two or
--three bytes; the rest of the bytes are the local address.
--
-- IPv4 network numbers are registered with the Network Information
--Center (NIC), and are divided into three classes--A, B and C. The local
--network address numbers of individual machines are registered with the
--administrator of the particular network.
--
-- Class A networks have single-byte numbers in the range 0 to 127.
--There are only a small number of Class A networks, but they can each
--support a very large number of hosts. Medium-sized Class B networks
--have two-byte network numbers, with the first byte in the range 128 to
--191. Class C networks are the smallest; they have three-byte network
--numbers, with the first byte in the range 192-255. Thus, the first 1,
--2, or 3 bytes of an Internet address specify a network. The remaining
--bytes of the Internet address specify the address within that network.
--
-- The Class A network 0 is reserved for broadcast to all networks. In
--addition, the host number 0 within each network is reserved for
--broadcast to all hosts in that network. These uses are obsolete now
--but for compatibility reasons you shouldn't use network 0 and host
--number 0.
--
-- The Class A network 127 is reserved for loopback; you can always use
--the Internet address `127.0.0.1' to refer to the host machine.
--
-- Since a single machine can be a member of multiple networks, it can
--have multiple Internet host addresses. However, there is never
--supposed to be more than one machine with the same host address.
--
-- There are four forms of the "standard numbers-and-dots notation" for
--Internet addresses:
--
--`A.B.C.D'
-- This specifies all four bytes of the address individually and is
-- the commonly used representation.
--
--`A.B.C'
-- The last part of the address, C, is interpreted as a 2-byte
-- quantity. This is useful for specifying host addresses in a Class
-- B network with network address number `A.B'.
--
--`A.B'
-- The last part of the address, B, is interpreted as a 3-byte
-- quantity. This is useful for specifying host addresses in a Class
-- A network with network address number A.
--
--`A'
-- If only one part is given, this corresponds directly to the host
-- address number.
--
-- Within each part of the address, the usual C conventions for
--specifying the radix apply. In other words, a leading `0x' or `0X'
--implies hexadecimal radix; a leading `0' implies octal; and otherwise
--decimal radix is assumed.
--
--Classless Addresses
--...................
--
-- IPv4 addresses (and IPv6 addresses also) are now considered
--classless; the distinction between classes A, B and C can be ignored.
--Instead an IPv4 host address consists of a 32-bit address and a 32-bit
--mask. The mask contains set bits for the network part and cleared bits
--for the host part. The network part is contiguous from the left, with
--the remaining bits representing the host. As a consequence, the
--netmask can simply be specified as the number of set bits. Classes A,
--B and C are just special cases of this general rule. For example,
--class A addresses have a netmask of `255.0.0.0' or a prefix length of 8.
--
-- Classless IPv4 network addresses are written in numbers-and-dots
--notation with the prefix length appended and a slash as separator. For
--example the class A network 10 is written as `10.0.0.0/8'.
--
--IPv6 Addresses
--..............
--
-- IPv6 addresses contain 128 bits (IPv4 has 32 bits) of data. A host
--address is usually written as eight 16-bit hexadecimal numbers that are
--separated by colons. Two colons are used to abbreviate strings of
--consecutive zeros. For example, the IPv6 loopback address
--`0:0:0:0:0:0:0:1' can just be written as `::1'.
--
--
--File: libc.info, Node: Host Address Data Type, Next: Host Address Functions, Prev: Abstract Host Addresses, Up: Host Addresses
--
--Host Address Data Type
--......................
--
-- IPv4 Internet host addresses are represented in some contexts as
--integers (type `uint32_t'). In other contexts, the integer is packaged
--inside a structure of type `struct in_addr'. It would be better if the
--usage were made consistent, but it is not hard to extract the integer
--from the structure or put the integer into a structure.
--
-- You will find older code that uses `unsigned long int' for IPv4
--Internet host addresses instead of `uint32_t' or `struct in_addr'.
--Historically `unsigned long int' was a 32-bit number but with 64-bit
--machines this has changed. Using `unsigned long int' might break the
--code if it is used on machines where this type doesn't have 32 bits.
--`uint32_t' is specified by Unix98 and guaranteed to have 32 bits.
--
-- IPv6 Internet host addresses have 128 bits and are packaged inside a
--structure of type `struct in6_addr'.
--
-- The following basic definitions for Internet addresses are declared
--in the header file `netinet/in.h':
--
-- - Data Type: struct in_addr
-- This data type is used in certain contexts to contain an IPv4
-- Internet host address. It has just one field, named `s_addr',
-- which records the host address number as an `uint32_t'.
--
-- - Macro: uint32_t INADDR_LOOPBACK
-- You can use this constant to stand for "the address of this
-- machine," instead of finding its actual address. It is the IPv4
-- Internet address `127.0.0.1', which is usually called `localhost'.
-- This special constant saves you the trouble of looking up the
-- address of your own machine. Also, the system usually implements
-- `INADDR_LOOPBACK' specially, avoiding any network traffic for the
-- case of one machine talking to itself.
--
-- - Macro: uint32_t INADDR_ANY
-- You can use this constant to stand for "any incoming address" when
-- binding to an address. *Note Setting Address::. This is the usual
-- address to give in the `sin_addr' member of `struct sockaddr_in'
-- when you want to accept Internet connections.
--
-- - Macro: uint32_t INADDR_BROADCAST
-- This constant is the address you use to send a broadcast message.
--
-- - Macro: uint32_t INADDR_NONE
-- This constant is returned by some functions to indicate an error.
--
-- - Data Type: struct in6_addr
-- This data type is used to store an IPv6 address. It stores 128
-- bits of data, which can be accessed (via a union) in a variety of
-- ways.
--
-- - Constant: struct in6_addr in6addr_loopback
-- This constant is the IPv6 address `::1', the loopback address. See
-- above for a description of what this means. The macro
-- `IN6ADDR_LOOPBACK_INIT' is provided to allow you to initialize your
-- own variables to this value.
--
-- - Constant: struct in6_addr in6addr_any
-- This constant is the IPv6 address `::', the unspecified address.
-- See above for a description of what this means. The macro
-- `IN6ADDR_ANY_INIT' is provided to allow you to initialize your own
-- variables to this value.
--
--
--File: libc.info, Node: Host Address Functions, Next: Host Names, Prev: Host Address Data Type, Up: Host Addresses
--
--Host Address Functions
--......................
--
--These additional functions for manipulating Internet addresses are
--declared in the header file `arpa/inet.h'. They represent Internet
--addresses in network byte order, and network numbers and
--local-address-within-network numbers in host byte order. *Note Byte
--Order::, for an explanation of network and host byte order.
--
-- - Function: int inet_aton (const char *NAME, struct in_addr *ADDR)
-- This function converts the IPv4 Internet host address NAME from
-- the standard numbers-and-dots notation into binary data and stores
-- it in the `struct in_addr' that ADDR points to. `inet_aton'
-- returns nonzero if the address is valid, zero if not.
--
-- - Function: uint32_t inet_addr (const char *NAME)
-- This function converts the IPv4 Internet host address NAME from the
-- standard numbers-and-dots notation into binary data. If the input
-- is not valid, `inet_addr' returns `INADDR_NONE'. This is an
-- obsolete interface to `inet_aton', described immediately above. It
-- is obsolete because `INADDR_NONE' is a valid address
-- (255.255.255.255), and `inet_aton' provides a cleaner way to
-- indicate error return.
--
-- - Function: uint32_t inet_network (const char *NAME)
-- This function extracts the network number from the address NAME,
-- given in the standard numbers-and-dots notation. The returned
-- address is in host order. If the input is not valid,
-- `inet_network' returns `-1'.
--
-- The function works only with traditional IPv4 class A, B and C
-- network types. It doesn't work with classless addresses and
-- shouldn't be used anymore.
--
-- - Function: char * inet_ntoa (struct in_addr ADDR)
-- This function converts the IPv4 Internet host address ADDR to a
-- string in the standard numbers-and-dots notation. The return
-- value is a pointer into a statically-allocated buffer. Subsequent
-- calls will overwrite the same buffer, so you should copy the
-- string if you need to save it.
--
-- In multi-threaded programs each thread has an own
-- statically-allocated buffer. But still subsequent calls of
-- `inet_ntoa' in the same thread will overwrite the result of the
-- last call.
--
-- Instead of `inet_ntoa' the newer function `inet_ntop' which is
-- described below should be used since it handles both IPv4 and IPv6
-- addresses.
--
-- - Function: struct in_addr inet_makeaddr (uint32_t NET, uint32_t LOCAL)
-- This function makes an IPv4 Internet host address by combining the
-- network number NET with the local-address-within-network number
-- LOCAL.
--
-- - Function: uint32_t inet_lnaof (struct in_addr ADDR)
-- This function returns the local-address-within-network part of the
-- Internet host address ADDR.
--
-- The function works only with traditional IPv4 class A, B and C
-- network types. It doesn't work with classless addresses and
-- shouldn't be used anymore.
--
-- - Function: uint32_t inet_netof (struct in_addr ADDR)
-- This function returns the network number part of the Internet host
-- address ADDR.
--
-- The function works only with traditional IPv4 class A, B and C
-- network types. It doesn't work with classless addresses and
-- shouldn't be used anymore.
--
-- - Function: int inet_pton (int AF, const char *CP, void *BUF)
-- This function converts an Internet address (either IPv4 or IPv6)
-- from presentation (textual) to network (binary) format. AF should
-- be either `AF_INET' or `AF_INET6', as appropriate for the type of
-- address being converted. CP is a pointer to the input string, and
-- BUF is a pointer to a buffer for the result. It is the caller's
-- responsibility to make sure the buffer is large enough.
--
-- - Function: const char * inet_ntop (int AF, const void *CP, char *BUF,
-- size_t LEN)
-- This function converts an Internet address (either IPv4 or IPv6)
-- from network (binary) to presentation (textual) form. AF should be
-- either `AF_INET' or `AF_INET6', as appropriate. CP is a pointer
-- to the address to be converted. BUF should be a pointer to a
-- buffer to hold the result, and LEN is the length of this buffer.
-- The return value from the function will be this buffer address.
--
--
--File: libc.info, Node: Host Names, Prev: Host Address Functions, Up: Host Addresses
--
--Host Names
--..........
--
-- Besides the standard numbers-and-dots notation for Internet
--addresses, you can also refer to a host by a symbolic name. The
--advantage of a symbolic name is that it is usually easier to remember.
--For example, the machine with Internet address `158.121.106.19' is also
--known as `alpha.gnu.org'; and other machines in the `gnu.org' domain
--can refer to it simply as `alpha'.
--
-- Internally, the system uses a database to keep track of the mapping
--between host names and host numbers. This database is usually either
--the file `/etc/hosts' or an equivalent provided by a name server. The
--functions and other symbols for accessing this database are declared in
--`netdb.h'. They are BSD features, defined unconditionally if you
--include `netdb.h'.
--
-- - Data Type: struct hostent
-- This data type is used to represent an entry in the hosts
-- database. It has the following members:
--
-- `char *h_name'
-- This is the "official" name of the host.
--
-- `char **h_aliases'
-- These are alternative names for the host, represented as a
-- null-terminated vector of strings.
--
-- `int h_addrtype'
-- This is the host address type; in practice, its value is
-- always either `AF_INET' or `AF_INET6', with the latter being
-- used for IPv6 hosts. In principle other kinds of addresses
-- could be represented in the database as well as Internet
-- addresses; if this were done, you might find a value in this
-- field other than `AF_INET' or `AF_INET6'. *Note Socket
-- Addresses::.
--
-- `int h_length'
-- This is the length, in bytes, of each address.
--
-- `char **h_addr_list'
-- This is the vector of addresses for the host. (Recall that
-- the host might be connected to multiple networks and have
-- different addresses on each one.) The vector is terminated
-- by a null pointer.
--
-- `char *h_addr'
-- This is a synonym for `h_addr_list[0]'; in other words, it is
-- the first host address.
--
-- As far as the host database is concerned, each address is just a
--block of memory `h_length' bytes long. But in other contexts there is
--an implicit assumption that you can convert IPv4 addresses to a `struct
--in_addr' or an `uint32_t'. Host addresses in a `struct hostent'
--structure are always given in network byte order; see *Note Byte
--Order::.
--
-- You can use `gethostbyname', `gethostbyname2' or `gethostbyaddr' to
--search the hosts database for information about a particular host. The
--information is returned in a statically-allocated structure; you must
--copy the information if you need to save it across calls. You can also
--use `getaddrinfo' and `getnameinfo' to obtain this information.
--
-- - Function: struct hostent * gethostbyname (const char *NAME)
-- The `gethostbyname' function returns information about the host
-- named NAME. If the lookup fails, it returns a null pointer.
--
-- - Function: struct hostent * gethostbyname2 (const char *NAME, int AF)
-- The `gethostbyname2' function is like `gethostbyname', but allows
-- the caller to specify the desired address family (e.g. `AF_INET'
-- or `AF_INET6') of the result.
--
-- - Function: struct hostent * gethostbyaddr (const char *ADDR, size_t
-- LENGTH, int FORMAT)
-- The `gethostbyaddr' function returns information about the host
-- with Internet address ADDR. The parameter ADDR is not really a
-- pointer to char - it can be a pointer to an IPv4 or an IPv6
-- address. The LENGTH argument is the size (in bytes) of the address
-- at ADDR. FORMAT specifies the address format; for an IPv4
-- Internet address, specify a value of `AF_INET'; for an IPv6
-- Internet address, use `AF_INET6'.
--
-- If the lookup fails, `gethostbyaddr' returns a null pointer.
--
-- If the name lookup by `gethostbyname' or `gethostbyaddr' fails, you
--can find out the reason by looking at the value of the variable
--`h_errno'. (It would be cleaner design for these functions to set
--`errno', but use of `h_errno' is compatible with other systems.)
--
-- Here are the error codes that you may find in `h_errno':
--
--`HOST_NOT_FOUND'
-- No such host is known in the database.
--
--`TRY_AGAIN'
-- This condition happens when the name server could not be
-- contacted. If you try again later, you may succeed then.
--
--`NO_RECOVERY'
-- A non-recoverable error occurred.
--
--`NO_ADDRESS'
-- The host database contains an entry for the name, but it doesn't
-- have an associated Internet address.
--
-- The lookup functions above all have one in common: they are not
--reentrant and therefore unusable in multi-threaded applications.
--Therefore provides the GNU C library a new set of functions which can be
--used in this context.
--
-- - Function: int gethostbyname_r (const char *restrict NAME, struct
-- hostent *restrict RESULT_BUF, char *restrict BUF, size_t
-- BUFLEN, struct hostent **restrict RESULT, int *restrict
-- H_ERRNOP)
-- The `gethostbyname_r' function returns information about the host
-- named NAME. The caller must pass a pointer to an object of type
-- `struct hostent' in the RESULT_BUF parameter. In addition the
-- function may need extra buffer space and the caller must pass an
-- pointer and the size of the buffer in the BUF and BUFLEN
-- parameters.
--
-- A pointer to the buffer, in which the result is stored, is
-- available in `*RESULT' after the function call successfully
-- returned. If an error occurs or if no entry is found, the pointer
-- `*RESULT' is a null pointer. Success is signalled by a zero
-- return value. If the function failed the return value is an error
-- number. In addition to the errors defined for `gethostbyname' it
-- can also be `ERANGE'. In this case the call should be repeated
-- with a larger buffer. Additional error information is not stored
-- in the global variable `h_errno' but instead in the object pointed
-- to by H_ERRNOP.
--
-- Here's a small example:
-- struct hostent *
-- gethostname (char *host)
-- {
-- struct hostent hostbuf, *hp;
-- size_t hstbuflen;
-- char *tmphstbuf;
-- int res;
-- int herr;
--
-- hstbuflen = 1024;
-- /* Allocate buffer, remember to free it to avoid memory leakage. */
-- tmphstbuf = malloc (hstbuflen);
--
-- while ((res = gethostbyname_r (host, &hostbuf, tmphstbuf, hstbuflen,
-- &hp, &herr)) == ERANGE)
-- {
-- /* Enlarge the buffer. */
-- hstbuflen *= 2;
-- tmphstbuf = realloc (tmphstbuf, hstbuflen);
-- }
-- /* Check for errors. */
-- if (res || hp == NULL)
-- return NULL;
-- return hp;
-- }
--
-- - Function: int gethostbyname2_r (const char *NAME, int AF, struct
-- hostent *restrict RESULT_BUF, char *restrict BUF, size_t
-- BUFLEN, struct hostent **restrict RESULT, int *restrict
-- H_ERRNOP)
-- The `gethostbyname2_r' function is like `gethostbyname_r', but
-- allows the caller to specify the desired address family (e.g.
-- `AF_INET' or `AF_INET6') for the result.
--
-- - Function: int gethostbyaddr_r (const char *ADDR, size_t LENGTH, int
-- FORMAT, struct hostent *restrict RESULT_BUF, char *restrict
-- BUF, size_t BUFLEN, struct hostent **restrict RESULT, int
-- *restrict H_ERRNOP)
-- The `gethostbyaddr_r' function returns information about the host
-- with Internet address ADDR. The parameter ADDR is not really a
-- pointer to char - it can be a pointer to an IPv4 or an IPv6
-- address. The LENGTH argument is the size (in bytes) of the address
-- at ADDR. FORMAT specifies the address format; for an IPv4
-- Internet address, specify a value of `AF_INET'; for an IPv6
-- Internet address, use `AF_INET6'.
--
-- Similar to the `gethostbyname_r' function, the caller must provide
-- buffers for the result and memory used internally. In case of
-- success the function returns zero. Otherwise the value is an
-- error number where `ERANGE' has the special meaning that the
-- caller-provided buffer is too small.
--
-- You can also scan the entire hosts database one entry at a time using
--`sethostent', `gethostent' and `endhostent'. Be careful when using
--these functions because they are not reentrant.
--
-- - Function: void sethostent (int STAYOPEN)
-- This function opens the hosts database to begin scanning it. You
-- can then call `gethostent' to read the entries.
--
-- If the STAYOPEN argument is nonzero, this sets a flag so that
-- subsequent calls to `gethostbyname' or `gethostbyaddr' will not
-- close the database (as they usually would). This makes for more
-- efficiency if you call those functions several times, by avoiding
-- reopening the database for each call.
--
-- - Function: struct hostent * gethostent (void)
-- This function returns the next entry in the hosts database. It
-- returns a null pointer if there are no more entries.
--
-- - Function: void endhostent (void)
-- This function closes the hosts database.
--
--
--File: libc.info, Node: Ports, Next: Services Database, Prev: Protocols Database, Up: Internet Namespace
--
--Internet Ports
----------------
--
-- A socket address in the Internet namespace consists of a machine's
--Internet address plus a "port number" which distinguishes the sockets
--on a given machine (for a given protocol). Port numbers range from 0
--to 65,535.
--
-- Port numbers less than `IPPORT_RESERVED' are reserved for standard
--servers, such as `finger' and `telnet'. There is a database that keeps
--track of these, and you can use the `getservbyname' function to map a
--service name onto a port number; see *Note Services Database::.
--
-- If you write a server that is not one of the standard ones defined in
--the database, you must choose a port number for it. Use a number
--greater than `IPPORT_USERRESERVED'; such numbers are reserved for
--servers and won't ever be generated automatically by the system.
--Avoiding conflicts with servers being run by other users is up to you.
--
-- When you use a socket without specifying its address, the system
--generates a port number for it. This number is between
--`IPPORT_RESERVED' and `IPPORT_USERRESERVED'.
--
-- On the Internet, it is actually legitimate to have two different
--sockets with the same port number, as long as they never both try to
--communicate with the same socket address (host address plus port
--number). You shouldn't duplicate a port number except in special
--circumstances where a higher-level protocol requires it. Normally, the
--system won't let you do it; `bind' normally insists on distinct port
--numbers. To reuse a port number, you must set the socket option
--`SO_REUSEADDR'. *Note Socket-Level Options::.
--
-- These macros are defined in the header file `netinet/in.h'.
--
-- - Macro: int IPPORT_RESERVED
-- Port numbers less than `IPPORT_RESERVED' are reserved for
-- superuser use.
--
-- - Macro: int IPPORT_USERRESERVED
-- Port numbers greater than or equal to `IPPORT_USERRESERVED' are
-- reserved for explicit use; they will never be allocated
-- automatically.
--
--
--File: libc.info, Node: Services Database, Next: Byte Order, Prev: Ports, Up: Internet Namespace
--
--The Services Database
-----------------------
--
-- The database that keeps track of "well-known" services is usually
--either the file `/etc/services' or an equivalent from a name server.
--You can use these utilities, declared in `netdb.h', to access the
--services database.
--
-- - Data Type: struct servent
-- This data type holds information about entries from the services
-- database. It has the following members:
--
-- `char *s_name'
-- This is the "official" name of the service.
--
-- `char **s_aliases'
-- These are alternate names for the service, represented as an
-- array of strings. A null pointer terminates the array.
--
-- `int s_port'
-- This is the port number for the service. Port numbers are
-- given in network byte order; see *Note Byte Order::.
--
-- `char *s_proto'
-- This is the name of the protocol to use with this service.
-- *Note Protocols Database::.
--
-- To get information about a particular service, use the
--`getservbyname' or `getservbyport' functions. The information is
--returned in a statically-allocated structure; you must copy the
--information if you need to save it across calls.
--
-- - Function: struct servent * getservbyname (const char *NAME, const
-- char *PROTO)
-- The `getservbyname' function returns information about the service
-- named NAME using protocol PROTO. If it can't find such a service,
-- it returns a null pointer.
--
-- This function is useful for servers as well as for clients; servers
-- use it to determine which port they should listen on (*note
-- Listening::).
--
-- - Function: struct servent * getservbyport (int PORT, const char
-- *PROTO)
-- The `getservbyport' function returns information about the service
-- at port PORT using protocol PROTO. If it can't find such a
-- service, it returns a null pointer.
--
--You can also scan the services database using `setservent',
--`getservent' and `endservent'. Be careful when using these functions
--because they are not reentrant.
--
-- - Function: void setservent (int STAYOPEN)
-- This function opens the services database to begin scanning it.
--
-- If the STAYOPEN argument is nonzero, this sets a flag so that
-- subsequent calls to `getservbyname' or `getservbyport' will not
-- close the database (as they usually would). This makes for more
-- efficiency if you call those functions several times, by avoiding
-- reopening the database for each call.
--
-- - Function: struct servent * getservent (void)
-- This function returns the next entry in the services database. If
-- there are no more entries, it returns a null pointer.
--
-- - Function: void endservent (void)
-- This function closes the services database.
--
--
--File: libc.info, Node: Byte Order, Next: Inet Example, Prev: Services Database, Up: Internet Namespace
--
--Byte Order Conversion
-----------------------
--
-- Different kinds of computers use different conventions for the
--ordering of bytes within a word. Some computers put the most
--significant byte within a word first (this is called "big-endian"
--order), and others put it last ("little-endian" order).
--
-- So that machines with different byte order conventions can
--communicate, the Internet protocols specify a canonical byte order
--convention for data transmitted over the network. This is known as
--"network byte order".
--
-- When establishing an Internet socket connection, you must make sure
--that the data in the `sin_port' and `sin_addr' members of the
--`sockaddr_in' structure are represented in network byte order. If you
--are encoding integer data in the messages sent through the socket, you
--should convert this to network byte order too. If you don't do this,
--your program may fail when running on or talking to other kinds of
--machines.
--
-- If you use `getservbyname' and `gethostbyname' or `inet_addr' to get
--the port number and host address, the values are already in network
--byte order, and you can copy them directly into the `sockaddr_in'
--structure.
--
-- Otherwise, you have to convert the values explicitly. Use `htons'
--and `ntohs' to convert values for the `sin_port' member. Use `htonl'
--and `ntohl' to convert IPv4 addresses for the `sin_addr' member.
--(Remember, `struct in_addr' is equivalent to `uint32_t'.) These
--functions are declared in `netinet/in.h'.
--
-- - Function: uint16_t htons (uint16_t HOSTSHORT)
-- This function converts the `uint16_t' integer HOSTSHORT from host
-- byte order to network byte order.
--
-- - Function: uint16_t ntohs (uint16_t NETSHORT)
-- This function converts the `uint16_t' integer NETSHORT from
-- network byte order to host byte order.
--
-- - Function: uint32_t htonl (uint32_t HOSTLONG)
-- This function converts the `uint32_t' integer HOSTLONG from host
-- byte order to network byte order.
--
-- This is used for IPv4 Internet addresses.
--
-- - Function: uint32_t ntohl (uint32_t NETLONG)
-- This function converts the `uint32_t' integer NETLONG from network
-- byte order to host byte order.
--
-- This is used for IPv4 Internet addresses.
--
--
--File: libc.info, Node: Protocols Database, Next: Ports, Prev: Host Addresses, Up: Internet Namespace
--
--Protocols Database
--------------------
--
-- The communications protocol used with a socket controls low-level
--details of how data are exchanged. For example, the protocol implements
--things like checksums to detect errors in transmissions, and routing
--instructions for messages. Normal user programs have little reason to
--mess with these details directly.
--
-- The default communications protocol for the Internet namespace
--depends on the communication style. For stream communication, the
--default is TCP ("transmission control protocol"). For datagram
--communication, the default is UDP ("user datagram protocol"). For
--reliable datagram communication, the default is RDP ("reliable datagram
--protocol"). You should nearly always use the default.
--
-- Internet protocols are generally specified by a name instead of a
--number. The network protocols that a host knows about are stored in a
--database. This is usually either derived from the file
--`/etc/protocols', or it may be an equivalent provided by a name server.
--You look up the protocol number associated with a named protocol in
--the database using the `getprotobyname' function.
--
-- Here are detailed descriptions of the utilities for accessing the
--protocols database. These are declared in `netdb.h'.
--
-- - Data Type: struct protoent
-- This data type is used to represent entries in the network
-- protocols database. It has the following members:
--
-- `char *p_name'
-- This is the official name of the protocol.
--
-- `char **p_aliases'
-- These are alternate names for the protocol, specified as an
-- array of strings. The last element of the array is a null
-- pointer.
--
-- `int p_proto'
-- This is the protocol number (in host byte order); use this
-- member as the PROTOCOL argument to `socket'.
--
-- You can use `getprotobyname' and `getprotobynumber' to search the
--protocols database for a specific protocol. The information is
--returned in a statically-allocated structure; you must copy the
--information if you need to save it across calls.
--
-- - Function: struct protoent * getprotobyname (const char *NAME)
-- The `getprotobyname' function returns information about the
-- network protocol named NAME. If there is no such protocol, it
-- returns a null pointer.
--
-- - Function: struct protoent * getprotobynumber (int PROTOCOL)
-- The `getprotobynumber' function returns information about the
-- network protocol with number PROTOCOL. If there is no such
-- protocol, it returns a null pointer.
--
-- You can also scan the whole protocols database one protocol at a
--time by using `setprotoent', `getprotoent' and `endprotoent'. Be
--careful when using these functions because they are not reentrant.
--
-- - Function: void setprotoent (int STAYOPEN)
-- This function opens the protocols database to begin scanning it.
--
-- If the STAYOPEN argument is nonzero, this sets a flag so that
-- subsequent calls to `getprotobyname' or `getprotobynumber' will
-- not close the database (as they usually would). This makes for
-- more efficiency if you call those functions several times, by
-- avoiding reopening the database for each call.
--
-- - Function: struct protoent * getprotoent (void)
-- This function returns the next entry in the protocols database. It
-- returns a null pointer if there are no more entries.
--
-- - Function: void endprotoent (void)
-- This function closes the protocols database.
--
--
--File: libc.info, Node: Inet Example, Prev: Byte Order, Up: Internet Namespace
--
--Internet Socket Example
-------------------------
--
-- Here is an example showing how to create and name a socket in the
--Internet namespace. The newly created socket exists on the machine that
--the program is running on. Rather than finding and using the machine's
--Internet address, this example specifies `INADDR_ANY' as the host
--address; the system replaces that with the machine's actual address.
--
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <sys/socket.h>
-- #include <netinet/in.h>
--
-- int
-- make_socket (uint16_t port)
-- {
-- int sock;
-- struct sockaddr_in name;
--
-- /* Create the socket. */
-- sock = socket (PF_INET, SOCK_STREAM, 0);
-- if (sock < 0)
-- {
-- perror ("socket");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Give the socket a name. */
-- name.sin_family = AF_INET;
-- name.sin_port = htons (port);
-- name.sin_addr.s_addr = htonl (INADDR_ANY);
-- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
-- {
-- perror ("bind");
-- exit (EXIT_FAILURE);
-- }
--
-- return sock;
-- }
--
-- Here is another example, showing how you can fill in a `sockaddr_in'
--structure, given a host name string and a port number:
--
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <sys/socket.h>
-- #include <netinet/in.h>
-- #include <netdb.h>
--
-- void
-- init_sockaddr (struct sockaddr_in *name,
-- const char *hostname,
-- uint16_t port)
-- {
-- struct hostent *hostinfo;
--
-- name->sin_family = AF_INET;
-- name->sin_port = htons (port);
-- hostinfo = gethostbyname (hostname);
-- if (hostinfo == NULL)
-- {
-- fprintf (stderr, "Unknown host %s.\n", hostname);
-- exit (EXIT_FAILURE);
-- }
-- name->sin_addr = *(struct in_addr *) hostinfo->h_addr;
-- }
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-28 glibc-2.3.2-200304020432/manual/libc.info-28
---- glibc-2.3.2/manual/libc.info-28 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-28 Thu Jan 1 01:00:00 1970
-@@ -1,1370 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Misc Namespaces, Next: Open/Close Sockets, Prev: Internet Namespace, Up: Sockets
--
--Other Namespaces
--================
--
-- Certain other namespaces and associated protocol families are
--supported but not documented yet because they are not often used.
--`PF_NS' refers to the Xerox Network Software protocols. `PF_ISO' stands
--for Open Systems Interconnect. `PF_CCITT' refers to protocols from
--CCITT. `socket.h' defines these symbols and others naming protocols
--not actually implemented.
--
-- `PF_IMPLINK' is used for communicating between hosts and Internet
--Message Processors. For information on this and `PF_ROUTE', an
--occasionally-used local area routing protocol, see the GNU Hurd Manual
--(to appear in the future).
--
--
--File: libc.info, Node: Open/Close Sockets, Next: Connections, Prev: Misc Namespaces, Up: Sockets
--
--Opening and Closing Sockets
--===========================
--
-- This section describes the actual library functions for opening and
--closing sockets. The same functions work for all namespaces and
--connection styles.
--
--* Menu:
--
--* Creating a Socket:: How to open a socket.
--* Closing a Socket:: How to close a socket.
--* Socket Pairs:: These are created like pipes.
--
--
--File: libc.info, Node: Creating a Socket, Next: Closing a Socket, Up: Open/Close Sockets
--
--Creating a Socket
-------------------
--
-- The primitive for creating a socket is the `socket' function,
--declared in `sys/socket.h'.
--
-- - Function: int socket (int NAMESPACE, int STYLE, int PROTOCOL)
-- This function creates a socket and specifies communication style
-- STYLE, which should be one of the socket styles listed in *Note
-- Communication Styles::. The NAMESPACE argument specifies the
-- namespace; it must be `PF_LOCAL' (*note Local Namespace::) or
-- `PF_INET' (*note Internet Namespace::). PROTOCOL designates the
-- specific protocol (*note Socket Concepts::); zero is usually right
-- for PROTOCOL.
--
-- The return value from `socket' is the file descriptor for the new
-- socket, or `-1' in case of error. The following `errno' error
-- conditions are defined for this function:
--
-- `EPROTONOSUPPORT'
-- The PROTOCOL or STYLE is not supported by the NAMESPACE
-- specified.
--
-- `EMFILE'
-- The process already has too many file descriptors open.
--
-- `ENFILE'
-- The system already has too many file descriptors open.
--
-- `EACCES'
-- The process does not have the privilege to create a socket of
-- the specified STYLE or PROTOCOL.
--
-- `ENOBUFS'
-- The system ran out of internal buffer space.
--
-- The file descriptor returned by the `socket' function supports both
-- read and write operations. However, like pipes, sockets do not
-- support file positioning operations.
--
-- For examples of how to call the `socket' function, see *Note Local
--Socket Example::, or *Note Inet Example::.
--
--
--File: libc.info, Node: Closing a Socket, Next: Socket Pairs, Prev: Creating a Socket, Up: Open/Close Sockets
--
--Closing a Socket
------------------
--
-- When you have finished using a socket, you can simply close its file
--descriptor with `close'; see *Note Opening and Closing Files::. If
--there is still data waiting to be transmitted over the connection,
--normally `close' tries to complete this transmission. You can control
--this behavior using the `SO_LINGER' socket option to specify a timeout
--period; see *Note Socket Options::.
--
-- You can also shut down only reception or transmission on a
--connection by calling `shutdown', which is declared in `sys/socket.h'.
--
-- - Function: int shutdown (int SOCKET, int HOW)
-- The `shutdown' function shuts down the connection of socket
-- SOCKET. The argument HOW specifies what action to perform:
--
-- `0'
-- Stop receiving data for this socket. If further data arrives,
-- reject it.
--
-- `1'
-- Stop trying to transmit data from this socket. Discard any
-- data waiting to be sent. Stop looking for acknowledgement of
-- data already sent; don't retransmit it if it is lost.
--
-- `2'
-- Stop both reception and transmission.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EBADF'
-- SOCKET is not a valid file descriptor.
--
-- `ENOTSOCK'
-- SOCKET is not a socket.
--
-- `ENOTCONN'
-- SOCKET is not connected.
--
--
--File: libc.info, Node: Socket Pairs, Prev: Closing a Socket, Up: Open/Close Sockets
--
--Socket Pairs
--------------
--
-- A "socket pair" consists of a pair of connected (but unnamed)
--sockets. It is very similar to a pipe and is used in much the same
--way. Socket pairs are created with the `socketpair' function, declared
--in `sys/socket.h'. A socket pair is much like a pipe; the main
--difference is that the socket pair is bidirectional, whereas the pipe
--has one input-only end and one output-only end (*note Pipes and
--FIFOs::).
--
-- - Function: int socketpair (int NAMESPACE, int STYLE, int PROTOCOL,
-- int FILEDES[2])
-- This function creates a socket pair, returning the file
-- descriptors in `FILEDES[0]' and `FILEDES[1]'. The socket pair is
-- a full-duplex communications channel, so that both reading and
-- writing may be performed at either end.
--
-- The NAMESPACE, STYLE and PROTOCOL arguments are interpreted as for
-- the `socket' function. STYLE should be one of the communication
-- styles listed in *Note Communication Styles::. The NAMESPACE
-- argument specifies the namespace, which must be `AF_LOCAL' (*note
-- Local Namespace::); PROTOCOL specifies the communications
-- protocol, but zero is the only meaningful value.
--
-- If STYLE specifies a connectionless communication style, then the
-- two sockets you get are not _connected_, strictly speaking, but
-- each of them knows the other as the default destination address,
-- so they can send packets to each other.
--
-- The `socketpair' function returns `0' on success and `-1' on
-- failure. The following `errno' error conditions are defined for
-- this function:
--
-- `EMFILE'
-- The process has too many file descriptors open.
--
-- `EAFNOSUPPORT'
-- The specified namespace is not supported.
--
-- `EPROTONOSUPPORT'
-- The specified protocol is not supported.
--
-- `EOPNOTSUPP'
-- The specified protocol does not support the creation of
-- socket pairs.
--
--
--File: libc.info, Node: Connections, Next: Datagrams, Prev: Open/Close Sockets, Up: Sockets
--
--Using Sockets with Connections
--==============================
--
-- The most common communication styles involve making a connection to a
--particular other socket, and then exchanging data with that socket over
--and over. Making a connection is asymmetric; one side (the "client")
--acts to request a connection, while the other side (the "server") makes
--a socket and waits for the connection request.
--
--* Menu:
--
--* Connecting:: What the client program must do.
--* Listening:: How a server program waits for requests.
--* Accepting Connections:: What the server does when it gets a request.
--* Who is Connected:: Getting the address of the
-- other side of a connection.
--* Transferring Data:: How to send and receive data.
--* Byte Stream Example:: An example program: a client for communicating
-- over a byte stream socket in the Internet namespace.
--* Server Example:: A corresponding server program.
--* Out-of-Band Data:: This is an advanced feature.
--
--
--File: libc.info, Node: Connecting, Next: Listening, Up: Connections
--
--Making a Connection
---------------------
--
-- In making a connection, the client makes a connection while the
--server waits for and accepts the connection. Here we discuss what the
--client program must do with the `connect' function, which is declared in
--`sys/socket.h'.
--
-- - Function: int connect (int SOCKET, struct sockaddr *ADDR, socklen_t
-- LENGTH)
-- The `connect' function initiates a connection from the socket with
-- file descriptor SOCKET to the socket whose address is specified by
-- the ADDR and LENGTH arguments. (This socket is typically on
-- another machine, and it must be already set up as a server.)
-- *Note Socket Addresses::, for information about how these
-- arguments are interpreted.
--
-- Normally, `connect' waits until the server responds to the request
-- before it returns. You can set nonblocking mode on the socket
-- SOCKET to make `connect' return immediately without waiting for
-- the response. *Note File Status Flags::, for information about
-- nonblocking mode.
--
-- The normal return value from `connect' is `0'. If an error
-- occurs, `connect' returns `-1'. The following `errno' error
-- conditions are defined for this function:
--
-- `EBADF'
-- The socket SOCKET is not a valid file descriptor.
--
-- `ENOTSOCK'
-- File descriptor SOCKET is not a socket.
--
-- `EADDRNOTAVAIL'
-- The specified address is not available on the remote machine.
--
-- `EAFNOSUPPORT'
-- The namespace of the ADDR is not supported by this socket.
--
-- `EISCONN'
-- The socket SOCKET is already connected.
--
-- `ETIMEDOUT'
-- The attempt to establish the connection timed out.
--
-- `ECONNREFUSED'
-- The server has actively refused to establish the connection.
--
-- `ENETUNREACH'
-- The network of the given ADDR isn't reachable from this host.
--
-- `EADDRINUSE'
-- The socket address of the given ADDR is already in use.
--
-- `EINPROGRESS'
-- The socket SOCKET is non-blocking and the connection could
-- not be established immediately. You can determine when the
-- connection is completely established with `select'; *note
-- Waiting for I/O::. Another `connect' call on the same
-- socket, before the connection is completely established, will
-- fail with `EALREADY'.
--
-- `EALREADY'
-- The socket SOCKET is non-blocking and already has a pending
-- connection in progress (see `EINPROGRESS' above).
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
--
--File: libc.info, Node: Listening, Next: Accepting Connections, Prev: Connecting, Up: Connections
--
--Listening for Connections
---------------------------
--
-- Now let us consider what the server process must do to accept
--connections on a socket. First it must use the `listen' function to
--enable connection requests on the socket, and then accept each incoming
--connection with a call to `accept' (*note Accepting Connections::).
--Once connection requests are enabled on a server socket, the `select'
--function reports when the socket has a connection ready to be accepted
--(*note Waiting for I/O::).
--
-- The `listen' function is not allowed for sockets using
--connectionless communication styles.
--
-- You can write a network server that does not even start running
--until a connection to it is requested. *Note Inetd Servers::.
--
-- In the Internet namespace, there are no special protection mechanisms
--for controlling access to a port; any process on any machine can make a
--connection to your server. If you want to restrict access to your
--server, make it examine the addresses associated with connection
--requests or implement some other handshaking or identification protocol.
--
-- In the local namespace, the ordinary file protection bits control
--who has access to connect to the socket.
--
-- - Function: int listen (int SOCKET, unsigned int N)
-- The `listen' function enables the socket SOCKET to accept
-- connections, thus making it a server socket.
--
-- The argument N specifies the length of the queue for pending
-- connections. When the queue fills, new clients attempting to
-- connect fail with `ECONNREFUSED' until the server calls `accept' to
-- accept a connection from the queue.
--
-- The `listen' function returns `0' on success and `-1' on failure.
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EBADF'
-- The argument SOCKET is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The argument SOCKET is not a socket.
--
-- `EOPNOTSUPP'
-- The socket SOCKET does not support this operation.
--
--
--File: libc.info, Node: Accepting Connections, Next: Who is Connected, Prev: Listening, Up: Connections
--
--Accepting Connections
-----------------------
--
-- When a server receives a connection request, it can complete the
--connection by accepting the request. Use the function `accept' to do
--this.
--
-- A socket that has been established as a server can accept connection
--requests from multiple clients. The server's original socket _does not
--become part of the connection_; instead, `accept' makes a new socket
--which participates in the connection. `accept' returns the descriptor
--for this socket. The server's original socket remains available for
--listening for further connection requests.
--
-- The number of pending connection requests on a server socket is
--finite. If connection requests arrive from clients faster than the
--server can act upon them, the queue can fill up and additional requests
--are refused with an `ECONNREFUSED' error. You can specify the maximum
--length of this queue as an argument to the `listen' function, although
--the system may also impose its own internal limit on the length of this
--queue.
--
-- - Function: int accept (int SOCKET, struct sockaddr *ADDR, socklen_t
-- *LENGTH_PTR)
-- This function is used to accept a connection request on the server
-- socket SOCKET.
--
-- The `accept' function waits if there are no connections pending,
-- unless the socket SOCKET has nonblocking mode set. (You can use
-- `select' to wait for a pending connection, with a nonblocking
-- socket.) *Note File Status Flags::, for information about
-- nonblocking mode.
--
-- The ADDR and LENGTH-PTR arguments are used to return information
-- about the name of the client socket that initiated the connection.
-- *Note Socket Addresses::, for information about the format of the
-- information.
--
-- Accepting a connection does not make SOCKET part of the
-- connection. Instead, it creates a new socket which becomes
-- connected. The normal return value of `accept' is the file
-- descriptor for the new socket.
--
-- After `accept', the original socket SOCKET remains open and
-- unconnected, and continues listening until you close it. You can
-- accept further connections with SOCKET by calling `accept' again.
--
-- If an error occurs, `accept' returns `-1'. The following `errno'
-- error conditions are defined for this function:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET argument is not a socket.
--
-- `EOPNOTSUPP'
-- The descriptor SOCKET does not support this operation.
--
-- `EWOULDBLOCK'
-- SOCKET has nonblocking mode set, and there are no pending
-- connections immediately available.
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
-- The `accept' function is not allowed for sockets using
--connectionless communication styles.
--
--
--File: libc.info, Node: Who is Connected, Next: Transferring Data, Prev: Accepting Connections, Up: Connections
--
--Who is Connected to Me?
-------------------------
--
-- - Function: int getpeername (int SOCKET, struct sockaddr *ADDR,
-- socklen_t *LENGTH-PTR)
-- The `getpeername' function returns the address of the socket that
-- SOCKET is connected to; it stores the address in the memory space
-- specified by ADDR and LENGTH-PTR. It stores the length of the
-- address in `*LENGTH-PTR'.
--
-- *Note Socket Addresses::, for information about the format of the
-- address. In some operating systems, `getpeername' works only for
-- sockets in the Internet domain.
--
-- The return value is `0' on success and `-1' on error. The
-- following `errno' error conditions are defined for this function:
--
-- `EBADF'
-- The argument SOCKET is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `ENOTCONN'
-- The socket SOCKET is not connected.
--
-- `ENOBUFS'
-- There are not enough internal buffers available.
--
--
--File: libc.info, Node: Transferring Data, Next: Byte Stream Example, Prev: Who is Connected, Up: Connections
--
--Transferring Data
-------------------
--
-- Once a socket has been connected to a peer, you can use the ordinary
--`read' and `write' operations (*note I/O Primitives::) to transfer
--data. A socket is a two-way communications channel, so read and write
--operations can be performed at either end.
--
-- There are also some I/O modes that are specific to socket operations.
--In order to specify these modes, you must use the `recv' and `send'
--functions instead of the more generic `read' and `write' functions.
--The `recv' and `send' functions take an additional argument which you
--can use to specify various flags to control special I/O modes. For
--example, you can specify the `MSG_OOB' flag to read or write
--out-of-band data, the `MSG_PEEK' flag to peek at input, or the
--`MSG_DONTROUTE' flag to control inclusion of routing information on
--output.
--
--* Menu:
--
--* Sending Data:: Sending data with `send'.
--* Receiving Data:: Reading data with `recv'.
--* Socket Data Options:: Using `send' and `recv'.
--
--
--File: libc.info, Node: Sending Data, Next: Receiving Data, Up: Transferring Data
--
--Sending Data
--............
--
-- The `send' function is declared in the header file `sys/socket.h'.
--If your FLAGS argument is zero, you can just as well use `write'
--instead of `send'; see *Note I/O Primitives::. If the socket was
--connected but the connection has broken, you get a `SIGPIPE' signal for
--any use of `send' or `write' (*note Miscellaneous Signals::).
--
-- - Function: int send (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)
-- The `send' function is like `write', but with the additional flags
-- FLAGS. The possible values of FLAGS are described in *Note Socket
-- Data Options::.
--
-- This function returns the number of bytes transmitted, or `-1' on
-- failure. If the socket is nonblocking, then `send' (like `write')
-- can return after sending just part of the data. *Note File Status
-- Flags::, for information about nonblocking mode.
--
-- Note, however, that a successful return value merely indicates that
-- the message has been sent without error, not necessarily that it
-- has been received without error.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `EINTR'
-- The operation was interrupted by a signal before any data was
-- sent. *Note Interrupted Primitives::.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `EMSGSIZE'
-- The socket type requires that the message be sent atomically,
-- but the message is too large for this to be possible.
--
-- `EWOULDBLOCK'
-- Nonblocking mode has been set on the socket, and the write
-- operation would block. (Normally `send' blocks until the
-- operation can be completed.)
--
-- `ENOBUFS'
-- There is not enough internal buffer space available.
--
-- `ENOTCONN'
-- You never connected this socket.
--
-- `EPIPE'
-- This socket was connected but the connection is now broken.
-- In this case, `send' generates a `SIGPIPE' signal first; if
-- that signal is ignored or blocked, or if its handler returns,
-- then `send' fails with `EPIPE'.
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
--
--File: libc.info, Node: Receiving Data, Next: Socket Data Options, Prev: Sending Data, Up: Transferring Data
--
--Receiving Data
--..............
--
-- The `recv' function is declared in the header file `sys/socket.h'.
--If your FLAGS argument is zero, you can just as well use `read' instead
--of `recv'; see *Note I/O Primitives::.
--
-- - Function: int recv (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)
-- The `recv' function is like `read', but with the additional flags
-- FLAGS. The possible values of FLAGS are described in *Note Socket
-- Data Options::.
--
-- If nonblocking mode is set for SOCKET, and no data are available to
-- be read, `recv' fails immediately rather than waiting. *Note File
-- Status Flags::, for information about nonblocking mode.
--
-- This function returns the number of bytes received, or `-1' on
-- failure. The following `errno' error conditions are defined for
-- this function:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `EWOULDBLOCK'
-- Nonblocking mode has been set on the socket, and the read
-- operation would block. (Normally, `recv' blocks until there
-- is input available to be read.)
--
-- `EINTR'
-- The operation was interrupted by a signal before any data was
-- read. *Note Interrupted Primitives::.
--
-- `ENOTCONN'
-- You never connected this socket.
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
--
--File: libc.info, Node: Socket Data Options, Prev: Receiving Data, Up: Transferring Data
--
--Socket Data Options
--...................
--
-- The FLAGS argument to `send' and `recv' is a bit mask. You can
--bitwise-OR the values of the following macros together to obtain a
--value for this argument. All are defined in the header file
--`sys/socket.h'.
--
-- - Macro: int MSG_OOB
-- Send or receive out-of-band data. *Note Out-of-Band Data::.
--
-- - Macro: int MSG_PEEK
-- Look at the data but don't remove it from the input queue. This is
-- only meaningful with input functions such as `recv', not with
-- `send'.
--
-- - Macro: int MSG_DONTROUTE
-- Don't include routing information in the message. This is only
-- meaningful with output operations, and is usually only of interest
-- for diagnostic or routing programs. We don't try to explain it
-- here.
--
--
--File: libc.info, Node: Byte Stream Example, Next: Server Example, Prev: Transferring Data, Up: Connections
--
--Byte Stream Socket Example
----------------------------
--
-- Here is an example client program that makes a connection for a byte
--stream socket in the Internet namespace. It doesn't do anything
--particularly interesting once it has connected to the server; it just
--sends a text string to the server and exits.
--
-- This program uses `init_sockaddr' to set up the socket address; see
--*Note Inet Example::.
--
-- #include <stdio.h>
-- #include <errno.h>
-- #include <stdlib.h>
-- #include <unistd.h>
-- #include <sys/types.h>
-- #include <sys/socket.h>
-- #include <netinet/in.h>
-- #include <netdb.h>
--
-- #define PORT 5555
-- #define MESSAGE "Yow!!! Are we having fun yet?!?"
-- #define SERVERHOST "mescaline.gnu.org"
--
-- void
-- write_to_server (int filedes)
-- {
-- int nbytes;
--
-- nbytes = write (filedes, MESSAGE, strlen (MESSAGE) + 1);
-- if (nbytes < 0)
-- {
-- perror ("write");
-- exit (EXIT_FAILURE);
-- }
-- }
--
--
-- int
-- main (void)
-- {
-- extern void init_sockaddr (struct sockaddr_in *name,
-- const char *hostname,
-- uint16_t port);
-- int sock;
-- struct sockaddr_in servername;
--
-- /* Create the socket. */
-- sock = socket (PF_INET, SOCK_STREAM, 0);
-- if (sock < 0)
-- {
-- perror ("socket (client)");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Connect to the server. */
-- init_sockaddr (&servername, SERVERHOST, PORT);
-- if (0 > connect (sock,
-- (struct sockaddr *) &servername,
-- sizeof (servername)))
-- {
-- perror ("connect (client)");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Send data to the server. */
-- write_to_server (sock);
-- close (sock);
-- exit (EXIT_SUCCESS);
-- }
--
--
--File: libc.info, Node: Server Example, Next: Out-of-Band Data, Prev: Byte Stream Example, Up: Connections
--
--Byte Stream Connection Server Example
---------------------------------------
--
-- The server end is much more complicated. Since we want to allow
--multiple clients to be connected to the server at the same time, it
--would be incorrect to wait for input from a single client by simply
--calling `read' or `recv'. Instead, the right thing to do is to use
--`select' (*note Waiting for I/O::) to wait for input on all of the open
--sockets. This also allows the server to deal with additional
--connection requests.
--
-- This particular server doesn't do anything interesting once it has
--gotten a message from a client. It does close the socket for that
--client when it detects an end-of-file condition (resulting from the
--client shutting down its end of the connection).
--
-- This program uses `make_socket' to set up the socket address; see
--*Note Inet Example::.
--
-- #include <stdio.h>
-- #include <errno.h>
-- #include <stdlib.h>
-- #include <unistd.h>
-- #include <sys/types.h>
-- #include <sys/socket.h>
-- #include <netinet/in.h>
-- #include <netdb.h>
--
-- #define PORT 5555
-- #define MAXMSG 512
--
-- int
-- read_from_client (int filedes)
-- {
-- char buffer[MAXMSG];
-- int nbytes;
--
-- nbytes = read (filedes, buffer, MAXMSG);
-- if (nbytes < 0)
-- {
-- /* Read error. */
-- perror ("read");
-- exit (EXIT_FAILURE);
-- }
-- else if (nbytes == 0)
-- /* End-of-file. */
-- return -1;
-- else
-- {
-- /* Data read. */
-- fprintf (stderr, "Server: got message: `%s'\n", buffer);
-- return 0;
-- }
-- }
--
-- int
-- main (void)
-- {
-- extern int make_socket (uint16_t port);
-- int sock;
-- fd_set active_fd_set, read_fd_set;
-- int i;
-- struct sockaddr_in clientname;
-- size_t size;
--
-- /* Create the socket and set it up to accept connections. */
-- sock = make_socket (PORT);
-- if (listen (sock, 1) < 0)
-- {
-- perror ("listen");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Initialize the set of active sockets. */
-- FD_ZERO (&active_fd_set);
-- FD_SET (sock, &active_fd_set);
--
-- while (1)
-- {
-- /* Block until input arrives on one or more active sockets. */
-- read_fd_set = active_fd_set;
-- if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
-- {
-- perror ("select");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Service all the sockets with input pending. */
-- for (i = 0; i < FD_SETSIZE; ++i)
-- if (FD_ISSET (i, &read_fd_set))
-- {
-- if (i == sock)
-- {
-- /* Connection request on original socket. */
-- int new;
-- size = sizeof (clientname);
-- new = accept (sock,
-- (struct sockaddr *) &clientname,
-- &size);
-- if (new < 0)
-- {
-- perror ("accept");
-- exit (EXIT_FAILURE);
-- }
-- fprintf (stderr,
-- "Server: connect from host %s, port %hd.\n",
-- inet_ntoa (clientname.sin_addr),
-- ntohs (clientname.sin_port));
-- FD_SET (new, &active_fd_set);
-- }
-- else
-- {
-- /* Data arriving on an already-connected socket. */
-- if (read_from_client (i) < 0)
-- {
-- close (i);
-- FD_CLR (i, &active_fd_set);
-- }
-- }
-- }
-- }
-- }
--
--
--File: libc.info, Node: Out-of-Band Data, Prev: Server Example, Up: Connections
--
--Out-of-Band Data
------------------
--
-- Streams with connections permit "out-of-band" data that is delivered
--with higher priority than ordinary data. Typically the reason for
--sending out-of-band data is to send notice of an exceptional condition.
--To send out-of-band data use `send', specifying the flag `MSG_OOB'
--(*note Sending Data::).
--
-- Out-of-band data are received with higher priority because the
--receiving process need not read it in sequence; to read the next
--available out-of-band data, use `recv' with the `MSG_OOB' flag (*note
--Receiving Data::). Ordinary read operations do not read out-of-band
--data; they read only ordinary data.
--
-- When a socket finds that out-of-band data are on their way, it sends
--a `SIGURG' signal to the owner process or process group of the socket.
--You can specify the owner using the `F_SETOWN' command to the `fcntl'
--function; see *Note Interrupt Input::. You must also establish a
--handler for this signal, as described in *Note Signal Handling::, in
--order to take appropriate action such as reading the out-of-band data.
--
-- Alternatively, you can test for pending out-of-band data, or wait
--until there is out-of-band data, using the `select' function; it can
--wait for an exceptional condition on the socket. *Note Waiting for
--I/O::, for more information about `select'.
--
-- Notification of out-of-band data (whether with `SIGURG' or with
--`select') indicates that out-of-band data are on the way; the data may
--not actually arrive until later. If you try to read the out-of-band
--data before it arrives, `recv' fails with an `EWOULDBLOCK' error.
--
-- Sending out-of-band data automatically places a "mark" in the stream
--of ordinary data, showing where in the sequence the out-of-band data
--"would have been". This is useful when the meaning of out-of-band data
--is "cancel everything sent so far". Here is how you can test, in the
--receiving process, whether any ordinary data was sent before the mark:
--
-- success = ioctl (socket, SIOCATMARK, &atmark);
--
-- The `integer' variable ATMARK is set to a nonzero value if the
--socket's read pointer has reached the "mark".
--
-- Here's a function to discard any ordinary data preceding the
--out-of-band mark:
--
-- int
-- discard_until_mark (int socket)
-- {
-- while (1)
-- {
-- /* This is not an arbitrary limit; any size will do. */
-- char buffer[1024];
-- int atmark, success;
--
-- /* If we have reached the mark, return. */
-- success = ioctl (socket, SIOCATMARK, &atmark);
-- if (success < 0)
-- perror ("ioctl");
-- if (result)
-- return;
--
-- /* Otherwise, read a bunch of ordinary data and discard it.
-- This is guaranteed not to read past the mark
-- if it starts before the mark. */
-- success = read (socket, buffer, sizeof buffer);
-- if (success < 0)
-- perror ("read");
-- }
-- }
--
-- If you don't want to discard the ordinary data preceding the mark,
--you may need to read some of it anyway, to make room in internal system
--buffers for the out-of-band data. If you try to read out-of-band data
--and get an `EWOULDBLOCK' error, try reading some ordinary data (saving
--it so that you can use it when you want it) and see if that makes room.
--Here is an example:
--
-- struct buffer
-- {
-- char *buf;
-- int size;
-- struct buffer *next;
-- };
--
-- /* Read the out-of-band data from SOCKET and return it
-- as a `struct buffer', which records the address of the data
-- and its size.
--
-- It may be necessary to read some ordinary data
-- in order to make room for the out-of-band data.
-- If so, the ordinary data are saved as a chain of buffers
-- found in the `next' field of the value. */
--
-- struct buffer *
-- read_oob (int socket)
-- {
-- struct buffer *tail = 0;
-- struct buffer *list = 0;
--
-- while (1)
-- {
-- /* This is an arbitrary limit.
-- Does anyone know how to do this without a limit? */
-- #define BUF_SZ 1024
-- char *buf = (char *) xmalloc (BUF_SZ);
-- int success;
-- int atmark;
--
-- /* Try again to read the out-of-band data. */
-- success = recv (socket, buf, BUF_SZ, MSG_OOB);
-- if (success >= 0)
-- {
-- /* We got it, so return it. */
-- struct buffer *link
-- = (struct buffer *) xmalloc (sizeof (struct buffer));
-- link->buf = buf;
-- link->size = success;
-- link->next = list;
-- return link;
-- }
--
-- /* If we fail, see if we are at the mark. */
-- success = ioctl (socket, SIOCATMARK, &atmark);
-- if (success < 0)
-- perror ("ioctl");
-- if (atmark)
-- {
-- /* At the mark; skipping past more ordinary data cannot help.
-- So just wait a while. */
-- sleep (1);
-- continue;
-- }
--
-- /* Otherwise, read a bunch of ordinary data and save it.
-- This is guaranteed not to read past the mark
-- if it starts before the mark. */
-- success = read (socket, buf, BUF_SZ);
-- if (success < 0)
-- perror ("read");
--
-- /* Save this data in the buffer list. */
-- {
-- struct buffer *link
-- = (struct buffer *) xmalloc (sizeof (struct buffer));
-- link->buf = buf;
-- link->size = success;
--
-- /* Add the new link to the end of the list. */
-- if (tail)
-- tail->next = link;
-- else
-- list = link;
-- tail = link;
-- }
-- }
-- }
--
--
--File: libc.info, Node: Datagrams, Next: Inetd, Prev: Connections, Up: Sockets
--
--Datagram Socket Operations
--==========================
--
-- This section describes how to use communication styles that don't use
--connections (styles `SOCK_DGRAM' and `SOCK_RDM'). Using these styles,
--you group data into packets and each packet is an independent
--communication. You specify the destination for each packet
--individually.
--
-- Datagram packets are like letters: you send each one independently
--with its own destination address, and they may arrive in the wrong
--order or not at all.
--
-- The `listen' and `accept' functions are not allowed for sockets
--using connectionless communication styles.
--
--* Menu:
--
--* Sending Datagrams:: Sending packets on a datagram socket.
--* Receiving Datagrams:: Receiving packets on a datagram socket.
--* Datagram Example:: An example program: packets sent over a
-- datagram socket in the local namespace.
--* Example Receiver:: Another program, that receives those packets.
--
--
--File: libc.info, Node: Sending Datagrams, Next: Receiving Datagrams, Up: Datagrams
--
--Sending Datagrams
-------------------
--
-- The normal way of sending data on a datagram socket is by using the
--`sendto' function, declared in `sys/socket.h'.
--
-- You can call `connect' on a datagram socket, but this only specifies
--a default destination for further data transmission on the socket.
--When a socket has a default destination you can use `send' (*note
--Sending Data::) or even `write' (*note I/O Primitives::) to send a
--packet there. You can cancel the default destination by calling
--`connect' using an address format of `AF_UNSPEC' in the ADDR argument.
--*Note Connecting::, for more information about the `connect' function.
--
-- - Function: int sendto (int SOCKET, void *BUFFER. size_t SIZE, int
-- FLAGS, struct sockaddr *ADDR, socklen_t LENGTH)
-- The `sendto' function transmits the data in the BUFFER through the
-- socket SOCKET to the destination address specified by the ADDR and
-- LENGTH arguments. The SIZE argument specifies the number of bytes
-- to be transmitted.
--
-- The FLAGS are interpreted the same way as for `send'; see *Note
-- Socket Data Options::.
--
-- The return value and error conditions are also the same as for
-- `send', but you cannot rely on the system to detect errors and
-- report them; the most common error is that the packet is lost or
-- there is no-one at the specified address to receive it, and the
-- operating system on your machine usually does not know this.
--
-- It is also possible for one call to `sendto' to report an error
-- owing to a problem related to a previous call.
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
--
--File: libc.info, Node: Receiving Datagrams, Next: Datagram Example, Prev: Sending Datagrams, Up: Datagrams
--
--Receiving Datagrams
---------------------
--
-- The `recvfrom' function reads a packet from a datagram socket and
--also tells you where it was sent from. This function is declared in
--`sys/socket.h'.
--
-- - Function: int recvfrom (int SOCKET, void *BUFFER, size_t SIZE, int
-- FLAGS, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)
-- The `recvfrom' function reads one packet from the socket SOCKET
-- into the buffer BUFFER. The SIZE argument specifies the maximum
-- number of bytes to be read.
--
-- If the packet is longer than SIZE bytes, then you get the first
-- SIZE bytes of the packet and the rest of the packet is lost.
-- There's no way to read the rest of the packet. Thus, when you use
-- a packet protocol, you must always know how long a packet to
-- expect.
--
-- The ADDR and LENGTH-PTR arguments are used to return the address
-- where the packet came from. *Note Socket Addresses::. For a
-- socket in the local domain the address information won't be
-- meaningful, since you can't read the address of such a socket
-- (*note Local Namespace::). You can specify a null pointer as the
-- ADDR argument if you are not interested in this information.
--
-- The FLAGS are interpreted the same way as for `recv' (*note Socket
-- Data Options::). The return value and error conditions are also
-- the same as for `recv'.
--
-- This function is defined as a cancellation point in multi-threaded
-- programs, so one has to be prepared for this and make sure that
-- allocated resources (like memory, files descriptors, semaphores or
-- whatever) are freed even if the thread is canceled.
--
-- You can use plain `recv' (*note Receiving Data::) instead of
--`recvfrom' if you don't need to find out who sent the packet (either
--because you know where it should come from or because you treat all
--possible senders alike). Even `read' can be used if you don't want to
--specify FLAGS (*note I/O Primitives::).
--
--
--File: libc.info, Node: Datagram Example, Next: Example Receiver, Prev: Receiving Datagrams, Up: Datagrams
--
--Datagram Socket Example
-------------------------
--
-- Here is a set of example programs that send messages over a datagram
--stream in the local namespace. Both the client and server programs use
--the `make_named_socket' function that was presented in *Note Local
--Socket Example::, to create and name their sockets.
--
-- First, here is the server program. It sits in a loop waiting for
--messages to arrive, bouncing each message back to the sender.
--Obviously this isn't a particularly useful program, but it does show
--the general ideas involved.
--
-- #include <stdio.h>
-- #include <errno.h>
-- #include <stdlib.h>
-- #include <sys/socket.h>
-- #include <sys/un.h>
--
-- #define SERVER "/tmp/serversocket"
-- #define MAXMSG 512
--
-- int
-- main (void)
-- {
-- int sock;
-- char message[MAXMSG];
-- struct sockaddr_un name;
-- size_t size;
-- int nbytes;
--
-- /* Remove the filename first, it's ok if the call fails */
-- unlink (SERVER);
--
-- /* Make the socket, then loop endlessly. */
-- sock = make_named_socket (SERVER);
-- while (1)
-- {
-- /* Wait for a datagram. */
-- size = sizeof (name);
-- nbytes = recvfrom (sock, message, MAXMSG, 0,
-- (struct sockaddr *) & name, &size);
-- if (nbytes < 0)
-- {
-- perror ("recfrom (server)");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Give a diagnostic message. */
-- fprintf (stderr, "Server: got message: %s\n", message);
--
-- /* Bounce the message back to the sender. */
-- nbytes = sendto (sock, message, nbytes, 0,
-- (struct sockaddr *) & name, size);
-- if (nbytes < 0)
-- {
-- perror ("sendto (server)");
-- exit (EXIT_FAILURE);
-- }
-- }
-- }
--
--
--File: libc.info, Node: Example Receiver, Prev: Datagram Example, Up: Datagrams
--
--Example of Reading Datagrams
------------------------------
--
-- Here is the client program corresponding to the server above.
--
-- It sends a datagram to the server and then waits for a reply. Notice
--that the socket for the client (as well as for the server) in this
--example has to be given a name. This is so that the server can direct
--a message back to the client. Since the socket has no associated
--connection state, the only way the server can do this is by referencing
--the name of the client.
--
-- #include <stdio.h>
-- #include <errno.h>
-- #include <unistd.h>
-- #include <stdlib.h>
-- #include <sys/socket.h>
-- #include <sys/un.h>
--
-- #define SERVER "/tmp/serversocket"
-- #define CLIENT "/tmp/mysocket"
-- #define MAXMSG 512
-- #define MESSAGE "Yow!!! Are we having fun yet?!?"
--
-- int
-- main (void)
-- {
-- extern int make_named_socket (const char *name);
-- int sock;
-- char message[MAXMSG];
-- struct sockaddr_un name;
-- size_t size;
-- int nbytes;
--
-- /* Make the socket. */
-- sock = make_named_socket (CLIENT);
--
-- /* Initialize the server socket address. */
-- name.sun_family = AF_LOCAL;
-- strcpy (name.sun_path, SERVER);
-- size = strlen (name.sun_path) + sizeof (name.sun_family);
--
-- /* Send the datagram. */
-- nbytes = sendto (sock, MESSAGE, strlen (MESSAGE) + 1, 0,
-- (struct sockaddr *) & name, size);
-- if (nbytes < 0)
-- {
-- perror ("sendto (client)");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Wait for a reply. */
-- nbytes = recvfrom (sock, message, MAXMSG, 0, NULL, 0);
-- if (nbytes < 0)
-- {
-- perror ("recfrom (client)");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Print a diagnostic message. */
-- fprintf (stderr, "Client: got message: %s\n", message);
--
-- /* Clean up. */
-- remove (CLIENT);
-- close (sock);
-- }
--
-- Keep in mind that datagram socket communications are unreliable. In
--this example, the client program waits indefinitely if the message
--never reaches the server or if the server's response never comes back.
--It's up to the user running the program to kill and restart it if
--desired. A more automatic solution could be to use `select' (*note
--Waiting for I/O::) to establish a timeout period for the reply, and in
--case of timeout either re-send the message or shut down the socket and
--exit.
--
--
--File: libc.info, Node: Inetd, Next: Socket Options, Prev: Datagrams, Up: Sockets
--
--The `inetd' Daemon
--==================
--
-- We've explained above how to write a server program that does its own
--listening. Such a server must already be running in order for anyone
--to connect to it.
--
-- Another way to provide a service on an Internet port is to let the
--daemon program `inetd' do the listening. `inetd' is a program that
--runs all the time and waits (using `select') for messages on a
--specified set of ports. When it receives a message, it accepts the
--connection (if the socket style calls for connections) and then forks a
--child process to run the corresponding server program. You specify the
--ports and their programs in the file `/etc/inetd.conf'.
--
--* Menu:
--
--* Inetd Servers::
--* Configuring Inetd::
--
--
--File: libc.info, Node: Inetd Servers, Next: Configuring Inetd, Up: Inetd
--
--`inetd' Servers
-----------------
--
-- Writing a server program to be run by `inetd' is very simple. Each
--time someone requests a connection to the appropriate port, a new server
--process starts. The connection already exists at this time; the socket
--is available as the standard input descriptor and as the standard
--output descriptor (descriptors 0 and 1) in the server process. Thus
--the server program can begin reading and writing data right away.
--Often the program needs only the ordinary I/O facilities; in fact, a
--general-purpose filter program that knows nothing about sockets can
--work as a byte stream server run by `inetd'.
--
-- You can also use `inetd' for servers that use connectionless
--communication styles. For these servers, `inetd' does not try to accept
--a connection since no connection is possible. It just starts the
--server program, which can read the incoming datagram packet from
--descriptor 0. The server program can handle one request and then exit,
--or you can choose to write it to keep reading more requests until no
--more arrive, and then exit. You must specify which of these two
--techniques the server uses when you configure `inetd'.
--
--
--File: libc.info, Node: Configuring Inetd, Prev: Inetd Servers, Up: Inetd
--
--Configuring `inetd'
---------------------
--
-- The file `/etc/inetd.conf' tells `inetd' which ports to listen to
--and what server programs to run for them. Normally each entry in the
--file is one line, but you can split it onto multiple lines provided all
--but the first line of the entry start with whitespace. Lines that
--start with `#' are comments.
--
-- Here are two standard entries in `/etc/inetd.conf':
--
-- ftp stream tcp nowait root /libexec/ftpd ftpd
-- talk dgram udp wait root /libexec/talkd talkd
--
-- An entry has this format:
--
-- SERVICE STYLE PROTOCOL WAIT USERNAME PROGRAM ARGUMENTS
--
-- The SERVICE field says which service this program provides. It
--should be the name of a service defined in `/etc/services'. `inetd'
--uses SERVICE to decide which port to listen on for this entry.
--
-- The fields STYLE and PROTOCOL specify the communication style and
--the protocol to use for the listening socket. The style should be the
--name of a communication style, converted to lower case and with `SOCK_'
--deleted--for example, `stream' or `dgram'. PROTOCOL should be one of
--the protocols listed in `/etc/protocols'. The typical protocol names
--are `tcp' for byte stream connections and `udp' for unreliable
--datagrams.
--
-- The WAIT field should be either `wait' or `nowait'. Use `wait' if
--STYLE is a connectionless style and the server, once started, handles
--multiple requests as they come in. Use `nowait' if `inetd' should
--start a new process for each message or request that comes in. If
--STYLE uses connections, then WAIT *must* be `nowait'.
--
-- USER is the user name that the server should run as. `inetd' runs
--as root, so it can set the user ID of its children arbitrarily. It's
--best to avoid using `root' for USER if you can; but some servers, such
--as Telnet and FTP, read a username and password themselves. These
--servers need to be root initially so they can log in as commanded by
--the data coming over the network.
--
-- PROGRAM together with ARGUMENTS specifies the command to run to
--start the server. PROGRAM should be an absolute file name specifying
--the executable file to run. ARGUMENTS consists of any number of
--whitespace-separated words, which become the command-line arguments of
--PROGRAM. The first word in ARGUMENTS is argument zero, which should by
--convention be the program name itself (sans directories).
--
-- If you edit `/etc/inetd.conf', you can tell `inetd' to reread the
--file and obey its new contents by sending the `inetd' process the
--`SIGHUP' signal. You'll have to use `ps' to determine the process ID
--of the `inetd' process as it is not fixed.
--
--
--File: libc.info, Node: Socket Options, Next: Networks Database, Prev: Inetd, Up: Sockets
--
--Socket Options
--==============
--
-- This section describes how to read or set various options that modify
--the behavior of sockets and their underlying communications protocols.
--
-- When you are manipulating a socket option, you must specify which
--"level" the option pertains to. This describes whether the option
--applies to the socket interface, or to a lower-level communications
--protocol interface.
--
--* Menu:
--
--* Socket Option Functions:: The basic functions for setting and getting
-- socket options.
--* Socket-Level Options:: Details of the options at the socket level.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-29 glibc-2.3.2-200304020432/manual/libc.info-29
---- glibc-2.3.2/manual/libc.info-29 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-29 Thu Jan 1 01:00:00 1970
-@@ -1,1174 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Socket Option Functions, Next: Socket-Level Options, Up: Socket Options
--
--Socket Option Functions
-------------------------
--
-- Here are the functions for examining and modifying socket options.
--They are declared in `sys/socket.h'.
--
-- - Function: int getsockopt (int SOCKET, int LEVEL, int OPTNAME, void
-- *OPTVAL, socklen_t *OPTLEN-PTR)
-- The `getsockopt' function gets information about the value of
-- option OPTNAME at level LEVEL for socket SOCKET.
--
-- The option value is stored in a buffer that OPTVAL points to.
-- Before the call, you should supply in `*OPTLEN-PTR' the size of
-- this buffer; on return, it contains the number of bytes of
-- information actually stored in the buffer.
--
-- Most options interpret the OPTVAL buffer as a single `int' value.
--
-- The actual return value of `getsockopt' is `0' on success and `-1'
-- on failure. The following `errno' error conditions are defined:
--
-- `EBADF'
-- The SOCKET argument is not a valid file descriptor.
--
-- `ENOTSOCK'
-- The descriptor SOCKET is not a socket.
--
-- `ENOPROTOOPT'
-- The OPTNAME doesn't make sense for the given LEVEL.
--
-- - Function: int setsockopt (int SOCKET, int LEVEL, int OPTNAME, void
-- *OPTVAL, socklen_t OPTLEN)
-- This function is used to set the socket option OPTNAME at level
-- LEVEL for socket SOCKET. The value of the option is passed in the
-- buffer OPTVAL of size OPTLEN.
--
-- The return value and error codes for `setsockopt' are the same as
-- for `getsockopt'.
--
--
--
--File: libc.info, Node: Socket-Level Options, Prev: Socket Option Functions, Up: Socket Options
--
--Socket-Level Options
----------------------
--
-- - Constant: int SOL_SOCKET
-- Use this constant as the LEVEL argument to `getsockopt' or
-- `setsockopt' to manipulate the socket-level options described in
-- this section.
--
--Here is a table of socket-level option names; all are defined in the
--header file `sys/socket.h'.
--
--`SO_DEBUG'
-- This option toggles recording of debugging information in the
-- underlying protocol modules. The value has type `int'; a nonzero
-- value means "yes".
--
--`SO_REUSEADDR'
-- This option controls whether `bind' (*note Setting Address::)
-- should permit reuse of local addresses for this socket. If you
-- enable this option, you can actually have two sockets with the
-- same Internet port number; but the system won't allow you to use
-- the two identically-named sockets in a way that would confuse the
-- Internet. The reason for this option is that some higher-level
-- Internet protocols, including FTP, require you to keep reusing the
-- same port number.
--
-- The value has type `int'; a nonzero value means "yes".
--
--`SO_KEEPALIVE'
-- This option controls whether the underlying protocol should
-- periodically transmit messages on a connected socket. If the peer
-- fails to respond to these messages, the connection is considered
-- broken. The value has type `int'; a nonzero value means "yes".
--
--`SO_DONTROUTE'
-- This option controls whether outgoing messages bypass the normal
-- message routing facilities. If set, messages are sent directly to
-- the network interface instead. The value has type `int'; a nonzero
-- value means "yes".
--
--`SO_LINGER'
-- This option specifies what should happen when the socket of a type
-- that promises reliable delivery still has untransmitted messages
-- when it is closed; see *Note Closing a Socket::. The value has
-- type `struct linger'.
--
-- - Data Type: struct linger
-- This structure type has the following members:
--
-- `int l_onoff'
-- This field is interpreted as a boolean. If nonzero,
-- `close' blocks until the data are transmitted or the
-- timeout period has expired.
--
-- `int l_linger'
-- This specifies the timeout period, in seconds.
--
--`SO_BROADCAST'
-- This option controls whether datagrams may be broadcast from the
-- socket. The value has type `int'; a nonzero value means "yes".
--
--`SO_OOBINLINE'
-- If this option is set, out-of-band data received on the socket is
-- placed in the normal input queue. This permits it to be read using
-- `read' or `recv' without specifying the `MSG_OOB' flag. *Note
-- Out-of-Band Data::. The value has type `int'; a nonzero value
-- means "yes".
--
--`SO_SNDBUF'
-- This option gets or sets the size of the output buffer. The value
-- is a `size_t', which is the size in bytes.
--
--`SO_RCVBUF'
-- This option gets or sets the size of the input buffer. The value
-- is a `size_t', which is the size in bytes.
--
--`SO_STYLE'
--`SO_TYPE'
-- This option can be used with `getsockopt' only. It is used to get
-- the socket's communication style. `SO_TYPE' is the historical
-- name, and `SO_STYLE' is the preferred name in GNU. The value has
-- type `int' and its value designates a communication style; see
-- *Note Communication Styles::.
--
--`SO_ERROR'
-- This option can be used with `getsockopt' only. It is used to
-- reset the error status of the socket. The value is an `int',
-- which represents the previous error status.
--
--
--File: libc.info, Node: Networks Database, Prev: Socket Options, Up: Sockets
--
--Networks Database
--=================
--
-- Many systems come with a database that records a list of networks
--known to the system developer. This is usually kept either in the file
--`/etc/networks' or in an equivalent from a name server. This data base
--is useful for routing programs such as `route', but it is not useful
--for programs that simply communicate over the network. We provide
--functions to access this database, which are declared in `netdb.h'.
--
-- - Data Type: struct netent
-- This data type is used to represent information about entries in
-- the networks database. It has the following members:
--
-- `char *n_name'
-- This is the "official" name of the network.
--
-- `char **n_aliases'
-- These are alternative names for the network, represented as a
-- vector of strings. A null pointer terminates the array.
--
-- `int n_addrtype'
-- This is the type of the network number; this is always equal
-- to `AF_INET' for Internet networks.
--
-- `unsigned long int n_net'
-- This is the network number. Network numbers are returned in
-- host byte order; see *Note Byte Order::.
--
-- Use the `getnetbyname' or `getnetbyaddr' functions to search the
--networks database for information about a specific network. The
--information is returned in a statically-allocated structure; you must
--copy the information if you need to save it.
--
-- - Function: struct netent * getnetbyname (const char *NAME)
-- The `getnetbyname' function returns information about the network
-- named NAME. It returns a null pointer if there is no such network.
--
-- - Function: struct netent * getnetbyaddr (unsigned long int NET, int
-- TYPE)
-- The `getnetbyaddr' function returns information about the network
-- of type TYPE with number NET. You should specify a value of
-- `AF_INET' for the TYPE argument for Internet networks.
--
-- `getnetbyaddr' returns a null pointer if there is no such network.
--
-- You can also scan the networks database using `setnetent',
--`getnetent' and `endnetent'. Be careful when using these functions
--because they are not reentrant.
--
-- - Function: void setnetent (int STAYOPEN)
-- This function opens and rewinds the networks database.
--
-- If the STAYOPEN argument is nonzero, this sets a flag so that
-- subsequent calls to `getnetbyname' or `getnetbyaddr' will not
-- close the database (as they usually would). This makes for more
-- efficiency if you call those functions several times, by avoiding
-- reopening the database for each call.
--
-- - Function: struct netent * getnetent (void)
-- This function returns the next entry in the networks database. It
-- returns a null pointer if there are no more entries.
--
-- - Function: void endnetent (void)
-- This function closes the networks database.
--
--
--File: libc.info, Node: Low-Level Terminal Interface, Next: Syslog, Prev: Sockets, Up: Top
--
--Low-Level Terminal Interface
--****************************
--
-- This chapter describes functions that are specific to terminal
--devices. You can use these functions to do things like turn off input
--echoing; set serial line characteristics such as line speed and flow
--control; and change which characters are used for end-of-file,
--command-line editing, sending signals, and similar control functions.
--
-- Most of the functions in this chapter operate on file descriptors.
--*Note Low-Level I/O::, for more information about what a file
--descriptor is and how to open a file descriptor for a terminal device.
--
--* Menu:
--
--* Is It a Terminal:: How to determine if a file is a terminal
-- device, and what its name is.
--* I/O Queues:: About flow control and typeahead.
--* Canonical or Not:: Two basic styles of input processing.
--* Terminal Modes:: How to examine and modify flags controlling
-- details of terminal I/O: echoing,
-- signals, editing. Posix.
--* BSD Terminal Modes:: BSD compatible terminal mode setting
--* Line Control:: Sending break sequences, clearing
-- terminal buffers ...
--* Noncanon Example:: How to read single characters without echo.
--* Pseudo-Terminals:: How to open a pseudo-terminal.
--
--
--File: libc.info, Node: Is It a Terminal, Next: I/O Queues, Up: Low-Level Terminal Interface
--
--Identifying Terminals
--=====================
--
-- The functions described in this chapter only work on files that
--correspond to terminal devices. You can find out whether a file
--descriptor is associated with a terminal by using the `isatty' function.
--
-- Prototypes for the functions in this section are declared in the
--header file `unistd.h'.
--
-- - Function: int isatty (int FILEDES)
-- This function returns `1' if FILEDES is a file descriptor
-- associated with an open terminal device, and 0 otherwise.
--
-- If a file descriptor is associated with a terminal, you can get its
--associated file name using the `ttyname' function. See also the
--`ctermid' function, described in *Note Identifying the Terminal::.
--
-- - Function: char * ttyname (int FILEDES)
-- If the file descriptor FILEDES is associated with a terminal
-- device, the `ttyname' function returns a pointer to a
-- statically-allocated, null-terminated string containing the file
-- name of the terminal file. The value is a null pointer if the
-- file descriptor isn't associated with a terminal, or the file name
-- cannot be determined.
--
-- - Function: int ttyname_r (int FILEDES, char *BUF, size_t LEN)
-- The `ttyname_r' function is similar to the `ttyname' function
-- except that it places its result into the user-specified buffer
-- starting at BUF with length LEN.
--
-- The normal return value from `ttyname_r' is 0. Otherwise an error
-- number is returned to indicate the error. The following `errno'
-- error conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal.
--
-- `ERANGE'
-- The buffer length LEN is too small to store the string to be
-- returned.
--
--
--File: libc.info, Node: I/O Queues, Next: Canonical or Not, Prev: Is It a Terminal, Up: Low-Level Terminal Interface
--
--I/O Queues
--==========
--
-- Many of the remaining functions in this section refer to the input
--and output queues of a terminal device. These queues implement a form
--of buffering _within the kernel_ independent of the buffering
--implemented by I/O streams (*note I/O on Streams::).
--
-- The "terminal input queue" is also sometimes referred to as its
--"typeahead buffer". It holds the characters that have been received
--from the terminal but not yet read by any process.
--
-- The size of the input queue is described by the `MAX_INPUT' and
--`_POSIX_MAX_INPUT' parameters; see *Note Limits for Files::. You are
--guaranteed a queue size of at least `MAX_INPUT', but the queue might be
--larger, and might even dynamically change size. If input flow control
--is enabled by setting the `IXOFF' input mode bit (*note Input Modes::),
--the terminal driver transmits STOP and START characters to the terminal
--when necessary to prevent the queue from overflowing. Otherwise, input
--may be lost if it comes in too fast from the terminal. In canonical
--mode, all input stays in the queue until a newline character is
--received, so the terminal input queue can fill up when you type a very
--long line. *Note Canonical or Not::.
--
-- The "terminal output queue" is like the input queue, but for output;
--it contains characters that have been written by processes, but not yet
--transmitted to the terminal. If output flow control is enabled by
--setting the `IXON' input mode bit (*note Input Modes::), the terminal
--driver obeys START and STOP characters sent by the terminal to stop and
--restart transmission of output.
--
-- "Clearing" the terminal input queue means discarding any characters
--that have been received but not yet read. Similarly, clearing the
--terminal output queue means discarding any characters that have been
--written but not yet transmitted.
--
--
--File: libc.info, Node: Canonical or Not, Next: Terminal Modes, Prev: I/O Queues, Up: Low-Level Terminal Interface
--
--Two Styles of Input: Canonical or Not
--=====================================
--
-- POSIX systems support two basic modes of input: canonical and
--noncanonical.
--
-- In "canonical input processing" mode, terminal input is processed in
--lines terminated by newline (`'\n''), EOF, or EOL characters. No input
--can be read until an entire line has been typed by the user, and the
--`read' function (*note I/O Primitives::) returns at most a single line
--of input, no matter how many bytes are requested.
--
-- In canonical input mode, the operating system provides input editing
--facilities: some characters are interpreted specially to perform editing
--operations within the current line of text, such as ERASE and KILL.
--*Note Editing Characters::.
--
-- The constants `_POSIX_MAX_CANON' and `MAX_CANON' parameterize the
--maximum number of bytes which may appear in a single line of canonical
--input. *Note Limits for Files::. You are guaranteed a maximum line
--length of at least `MAX_CANON' bytes, but the maximum might be larger,
--and might even dynamically change size.
--
-- In "noncanonical input processing" mode, characters are not grouped
--into lines, and ERASE and KILL processing is not performed. The
--granularity with which bytes are read in noncanonical input mode is
--controlled by the MIN and TIME settings. *Note Noncanonical Input::.
--
-- Most programs use canonical input mode, because this gives the user a
--way to edit input line by line. The usual reason to use noncanonical
--mode is when the program accepts single-character commands or provides
--its own editing facilities.
--
-- The choice of canonical or noncanonical input is controlled by the
--`ICANON' flag in the `c_lflag' member of `struct termios'. *Note Local
--Modes::.
--
--
--File: libc.info, Node: Terminal Modes, Next: BSD Terminal Modes, Prev: Canonical or Not, Up: Low-Level Terminal Interface
--
--Terminal Modes
--==============
--
-- This section describes the various terminal attributes that control
--how input and output are done. The functions, data structures, and
--symbolic constants are all declared in the header file `termios.h'.
--
-- Don't confuse terminal attributes with file attributes. A device
--special file which is associated with a terminal has file attributes as
--described in *Note File Attributes::. These are unrelated to the
--attributes of the terminal device itself, which are discussed in this
--section.
--
--* Menu:
--
--* Mode Data Types:: The data type `struct termios' and
-- related types.
--* Mode Functions:: Functions to read and set the terminal
-- attributes.
--* Setting Modes:: The right way to set terminal attributes
-- reliably.
--* Input Modes:: Flags controlling low-level input handling.
--* Output Modes:: Flags controlling low-level output handling.
--* Control Modes:: Flags controlling serial port behavior.
--* Local Modes:: Flags controlling high-level input handling.
--* Line Speed:: How to read and set the terminal line speed.
--* Special Characters:: Characters that have special effects,
-- and how to change them.
--* Noncanonical Input:: Controlling how long to wait for input.
--
--
--File: libc.info, Node: Mode Data Types, Next: Mode Functions, Up: Terminal Modes
--
--Terminal Mode Data Types
--------------------------
--
-- The entire collection of attributes of a terminal is stored in a
--structure of type `struct termios'. This structure is used with the
--functions `tcgetattr' and `tcsetattr' to read and set the attributes.
--
-- - Data Type: struct termios
-- Structure that records all the I/O attributes of a terminal. The
-- structure includes at least the following members:
--
-- `tcflag_t c_iflag'
-- A bit mask specifying flags for input modes; see *Note Input
-- Modes::.
--
-- `tcflag_t c_oflag'
-- A bit mask specifying flags for output modes; see *Note
-- Output Modes::.
--
-- `tcflag_t c_cflag'
-- A bit mask specifying flags for control modes; see *Note
-- Control Modes::.
--
-- `tcflag_t c_lflag'
-- A bit mask specifying flags for local modes; see *Note Local
-- Modes::.
--
-- `cc_t c_cc[NCCS]'
-- An array specifying which characters are associated with
-- various control functions; see *Note Special Characters::.
--
-- The `struct termios' structure also contains members which encode
-- input and output transmission speeds, but the representation is
-- not specified. *Note Line Speed::, for how to examine and store
-- the speed values.
--
-- The following sections describe the details of the members of the
--`struct termios' structure.
--
-- - Data Type: tcflag_t
-- This is an unsigned integer type used to represent the various bit
-- masks for terminal flags.
--
-- - Data Type: cc_t
-- This is an unsigned integer type used to represent characters
-- associated with various terminal control functions.
--
-- - Macro: int NCCS
-- The value of this macro is the number of elements in the `c_cc'
-- array.
--
--
--File: libc.info, Node: Mode Functions, Next: Setting Modes, Prev: Mode Data Types, Up: Terminal Modes
--
--Terminal Mode Functions
-------------------------
--
-- - Function: int tcgetattr (int FILEDES, struct termios *TERMIOS-P)
-- This function is used to examine the attributes of the terminal
-- device with file descriptor FILEDES. The attributes are returned
-- in the structure that TERMIOS-P points to.
--
-- If successful, `tcgetattr' returns 0. A return value of -1
-- indicates an error. The following `errno' error conditions are
-- defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal.
--
-- - Function: int tcsetattr (int FILEDES, int WHEN, const struct termios
-- *TERMIOS-P)
-- This function sets the attributes of the terminal device with file
-- descriptor FILEDES. The new attributes are taken from the
-- structure that TERMIOS-P points to.
--
-- The WHEN argument specifies how to deal with input and output
-- already queued. It can be one of the following values:
--
-- `TCSANOW'
-- Make the change immediately.
--
-- `TCSADRAIN'
-- Make the change after waiting until all queued output has
-- been written. You should usually use this option when
-- changing parameters that affect output.
--
-- `TCSAFLUSH'
-- This is like `TCSADRAIN', but also discards any queued input.
--
-- `TCSASOFT'
-- This is a flag bit that you can add to any of the above
-- alternatives. Its meaning is to inhibit alteration of the
-- state of the terminal hardware. It is a BSD extension; it is
-- only supported on BSD systems and the GNU system.
--
-- Using `TCSASOFT' is exactly the same as setting the `CIGNORE'
-- bit in the `c_cflag' member of the structure TERMIOS-P points
-- to. *Note Control Modes::, for a description of `CIGNORE'.
--
-- If this function is called from a background process on its
-- controlling terminal, normally all processes in the process group
-- are sent a `SIGTTOU' signal, in the same way as if the process
-- were trying to write to the terminal. The exception is if the
-- calling process itself is ignoring or blocking `SIGTTOU' signals,
-- in which case the operation is performed and no signal is sent.
-- *Note Job Control::.
--
-- If successful, `tcsetattr' returns 0. A return value of -1
-- indicates an error. The following `errno' error conditions are
-- defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal.
--
-- `EINVAL'
-- Either the value of the `when' argument is not valid, or
-- there is something wrong with the data in the TERMIOS-P
-- argument.
--
-- Although `tcgetattr' and `tcsetattr' specify the terminal device
--with a file descriptor, the attributes are those of the terminal device
--itself and not of the file descriptor. This means that the effects of
--changing terminal attributes are persistent; if another process opens
--the terminal file later on, it will see the changed attributes even
--though it doesn't have anything to do with the open file descriptor you
--originally specified in changing the attributes.
--
-- Similarly, if a single process has multiple or duplicated file
--descriptors for the same terminal device, changing the terminal
--attributes affects input and output to all of these file descriptors.
--This means, for example, that you can't open one file descriptor or
--stream to read from a terminal in the normal line-buffered, echoed
--mode; and simultaneously have another file descriptor for the same
--terminal that you use to read from it in single-character, non-echoed
--mode. Instead, you have to explicitly switch the terminal back and
--forth between the two modes.
--
--
--File: libc.info, Node: Setting Modes, Next: Input Modes, Prev: Mode Functions, Up: Terminal Modes
--
--Setting Terminal Modes Properly
---------------------------------
--
-- When you set terminal modes, you should call `tcgetattr' first to
--get the current modes of the particular terminal device, modify only
--those modes that you are really interested in, and store the result with
--`tcsetattr'.
--
-- It's a bad idea to simply initialize a `struct termios' structure to
--a chosen set of attributes and pass it directly to `tcsetattr'. Your
--program may be run years from now, on systems that support members not
--documented in this manual. The way to avoid setting these members to
--unreasonable values is to avoid changing them.
--
-- What's more, different terminal devices may require different mode
--settings in order to function properly. So you should avoid blindly
--copying attributes from one terminal device to another.
--
-- When a member contains a collection of independent flags, as the
--`c_iflag', `c_oflag' and `c_cflag' members do, even setting the entire
--member is a bad idea, because particular operating systems have their
--own flags. Instead, you should start with the current value of the
--member and alter only the flags whose values matter in your program,
--leaving any other flags unchanged.
--
-- Here is an example of how to set one flag (`ISTRIP') in the `struct
--termios' structure while properly preserving all the other data in the
--structure:
--
-- int
-- set_istrip (int desc, int value)
-- {
-- struct termios settings;
-- int result;
--
-- result = tcgetattr (desc, &settings);
-- if (result < 0)
-- {
-- perror ("error in tcgetattr");
-- return 0;
-- }
-- settings.c_iflag &= ~ISTRIP;
-- if (value)
-- settings.c_iflag |= ISTRIP;
-- result = tcsetattr (desc, TCSANOW, &settings);
-- if (result < 0)
-- {
-- perror ("error in tcsetattr");
-- return 0;
-- }
-- return 1;
-- }
--
--
--File: libc.info, Node: Input Modes, Next: Output Modes, Prev: Setting Modes, Up: Terminal Modes
--
--Input Modes
-------------
--
-- This section describes the terminal attribute flags that control
--fairly low-level aspects of input processing: handling of parity errors,
--break signals, flow control, and <RET> and <LFD> characters.
--
-- All of these flags are bits in the `c_iflag' member of the `struct
--termios' structure. The member is an integer, and you change flags
--using the operators `&', `|' and `^'. Don't try to specify the entire
--value for `c_iflag'--instead, change only specific flags and leave the
--rest untouched (*note Setting Modes::).
--
-- - Macro: tcflag_t INPCK
-- If this bit is set, input parity checking is enabled. If it is
-- not set, no checking at all is done for parity errors on input; the
-- characters are simply passed through to the application.
--
-- Parity checking on input processing is independent of whether
-- parity detection and generation on the underlying terminal
-- hardware is enabled; see *Note Control Modes::. For example, you
-- could clear the `INPCK' input mode flag and set the `PARENB'
-- control mode flag to ignore parity errors on input, but still
-- generate parity on output.
--
-- If this bit is set, what happens when a parity error is detected
-- depends on whether the `IGNPAR' or `PARMRK' bits are set. If
-- neither of these bits are set, a byte with a parity error is
-- passed to the application as a `'\0'' character.
--
-- - Macro: tcflag_t IGNPAR
-- If this bit is set, any byte with a framing or parity error is
-- ignored. This is only useful if `INPCK' is also set.
--
-- - Macro: tcflag_t PARMRK
-- If this bit is set, input bytes with parity or framing errors are
-- marked when passed to the program. This bit is meaningful only
-- when `INPCK' is set and `IGNPAR' is not set.
--
-- The way erroneous bytes are marked is with two preceding bytes,
-- `377' and `0'. Thus, the program actually reads three bytes for
-- one erroneous byte received from the terminal.
--
-- If a valid byte has the value `0377', and `ISTRIP' (see below) is
-- not set, the program might confuse it with the prefix that marks a
-- parity error. So a valid byte `0377' is passed to the program as
-- two bytes, `0377' `0377', in this case.
--
-- - Macro: tcflag_t ISTRIP
-- If this bit is set, valid input bytes are stripped to seven bits;
-- otherwise, all eight bits are available for programs to read.
--
-- - Macro: tcflag_t IGNBRK
-- If this bit is set, break conditions are ignored.
--
-- A "break condition" is defined in the context of asynchronous
-- serial data transmission as a series of zero-value bits longer
-- than a single byte.
--
-- - Macro: tcflag_t BRKINT
-- If this bit is set and `IGNBRK' is not set, a break condition
-- clears the terminal input and output queues and raises a `SIGINT'
-- signal for the foreground process group associated with the
-- terminal.
--
-- If neither `BRKINT' nor `IGNBRK' are set, a break condition is
-- passed to the application as a single `'\0'' character if `PARMRK'
-- is not set, or otherwise as a three-character sequence `'\377'',
-- `'\0'', `'\0''.
--
-- - Macro: tcflag_t IGNCR
-- If this bit is set, carriage return characters (`'\r'') are
-- discarded on input. Discarding carriage return may be useful on
-- terminals that send both carriage return and linefeed when you
-- type the <RET> key.
--
-- - Macro: tcflag_t ICRNL
-- If this bit is set and `IGNCR' is not set, carriage return
-- characters (`'\r'') received as input are passed to the
-- application as newline characters (`'\n'').
--
-- - Macro: tcflag_t INLCR
-- If this bit is set, newline characters (`'\n'') received as input
-- are passed to the application as carriage return characters
-- (`'\r'').
--
-- - Macro: tcflag_t IXOFF
-- If this bit is set, start/stop control on input is enabled. In
-- other words, the computer sends STOP and START characters as
-- necessary to prevent input from coming in faster than programs are
-- reading it. The idea is that the actual terminal hardware that is
-- generating the input data responds to a STOP character by
-- suspending transmission, and to a START character by resuming
-- transmission. *Note Start/Stop Characters::.
--
-- - Macro: tcflag_t IXON
-- If this bit is set, start/stop control on output is enabled. In
-- other words, if the computer receives a STOP character, it
-- suspends output until a START character is received. In this
-- case, the STOP and START characters are never passed to the
-- application program. If this bit is not set, then START and STOP
-- can be read as ordinary characters. *Note Start/Stop Characters::.
--
-- - Macro: tcflag_t IXANY
-- If this bit is set, any input character restarts output when
-- output has been suspended with the STOP character. Otherwise,
-- only the START character restarts output.
--
-- This is a BSD extension; it exists only on BSD systems and the GNU
-- system.
--
-- - Macro: tcflag_t IMAXBEL
-- If this bit is set, then filling up the terminal input buffer
-- sends a BEL character (code `007') to the terminal to ring the
-- bell.
--
-- This is a BSD extension.
--
--
--File: libc.info, Node: Output Modes, Next: Control Modes, Prev: Input Modes, Up: Terminal Modes
--
--Output Modes
--------------
--
-- This section describes the terminal flags and fields that control how
--output characters are translated and padded for display. All of these
--are contained in the `c_oflag' member of the `struct termios' structure.
--
-- The `c_oflag' member itself is an integer, and you change the flags
--and fields using the operators `&', `|', and `^'. Don't try to specify
--the entire value for `c_oflag'--instead, change only specific flags and
--leave the rest untouched (*note Setting Modes::).
--
-- - Macro: tcflag_t OPOST
-- If this bit is set, output data is processed in some unspecified
-- way so that it is displayed appropriately on the terminal device.
-- This typically includes mapping newline characters (`'\n'') onto
-- carriage return and linefeed pairs.
--
-- If this bit isn't set, the characters are transmitted as-is.
--
-- The following three bits are BSD features, and they exist only BSD
--systems and the GNU system. They are effective only if `OPOST' is set.
--
-- - Macro: tcflag_t ONLCR
-- If this bit is set, convert the newline character on output into a
-- pair of characters, carriage return followed by linefeed.
--
-- - Macro: tcflag_t OXTABS
-- If this bit is set, convert tab characters on output into the
-- appropriate number of spaces to emulate a tab stop every eight
-- columns.
--
-- - Macro: tcflag_t ONOEOT
-- If this bit is set, discard `C-d' characters (code `004') on
-- output. These characters cause many dial-up terminals to
-- disconnect.
--
--
--File: libc.info, Node: Control Modes, Next: Local Modes, Prev: Output Modes, Up: Terminal Modes
--
--Control Modes
---------------
--
-- This section describes the terminal flags and fields that control
--parameters usually associated with asynchronous serial data
--transmission. These flags may not make sense for other kinds of
--terminal ports (such as a network connection pseudo-terminal). All of
--these are contained in the `c_cflag' member of the `struct termios'
--structure.
--
-- The `c_cflag' member itself is an integer, and you change the flags
--and fields using the operators `&', `|', and `^'. Don't try to specify
--the entire value for `c_cflag'--instead, change only specific flags and
--leave the rest untouched (*note Setting Modes::).
--
-- - Macro: tcflag_t CLOCAL
-- If this bit is set, it indicates that the terminal is connected
-- "locally" and that the modem status lines (such as carrier detect)
-- should be ignored.
--
-- On many systems if this bit is not set and you call `open' without
-- the `O_NONBLOCK' flag set, `open' blocks until a modem connection
-- is established.
--
-- If this bit is not set and a modem disconnect is detected, a
-- `SIGHUP' signal is sent to the controlling process group for the
-- terminal (if it has one). Normally, this causes the process to
-- exit; see *Note Signal Handling::. Reading from the terminal
-- after a disconnect causes an end-of-file condition, and writing
-- causes an `EIO' error to be returned. The terminal device must be
-- closed and reopened to clear the condition.
--
-- - Macro: tcflag_t HUPCL
-- If this bit is set, a modem disconnect is generated when all
-- processes that have the terminal device open have either closed
-- the file or exited.
--
-- - Macro: tcflag_t CREAD
-- If this bit is set, input can be read from the terminal.
-- Otherwise, input is discarded when it arrives.
--
-- - Macro: tcflag_t CSTOPB
-- If this bit is set, two stop bits are used. Otherwise, only one
-- stop bit is used.
--
-- - Macro: tcflag_t PARENB
-- If this bit is set, generation and detection of a parity bit are
-- enabled. *Note Input Modes::, for information on how input parity
-- errors are handled.
--
-- If this bit is not set, no parity bit is added to output
-- characters, and input characters are not checked for correct
-- parity.
--
-- - Macro: tcflag_t PARODD
-- This bit is only useful if `PARENB' is set. If `PARODD' is set,
-- odd parity is used, otherwise even parity is used.
--
-- The control mode flags also includes a field for the number of bits
--per character. You can use the `CSIZE' macro as a mask to extract the
--value, like this: `settings.c_cflag & CSIZE'.
--
-- - Macro: tcflag_t CSIZE
-- This is a mask for the number of bits per character.
--
-- - Macro: tcflag_t CS5
-- This specifies five bits per byte.
--
-- - Macro: tcflag_t CS6
-- This specifies six bits per byte.
--
-- - Macro: tcflag_t CS7
-- This specifies seven bits per byte.
--
-- - Macro: tcflag_t CS8
-- This specifies eight bits per byte.
--
-- The following four bits are BSD extensions; this exist only on BSD
--systems and the GNU system.
--
-- - Macro: tcflag_t CCTS_OFLOW
-- If this bit is set, enable flow control of output based on the CTS
-- wire (RS232 protocol).
--
-- - Macro: tcflag_t CRTS_IFLOW
-- If this bit is set, enable flow control of input based on the RTS
-- wire (RS232 protocol).
--
-- - Macro: tcflag_t MDMBUF
-- If this bit is set, enable carrier-based flow control of output.
--
-- - Macro: tcflag_t CIGNORE
-- If this bit is set, it says to ignore the control modes and line
-- speed values entirely. This is only meaningful in a call to
-- `tcsetattr'.
--
-- The `c_cflag' member and the line speed values returned by
-- `cfgetispeed' and `cfgetospeed' will be unaffected by the call.
-- `CIGNORE' is useful if you want to set all the software modes in
-- the other members, but leave the hardware details in `c_cflag'
-- unchanged. (This is how the `TCSASOFT' flag to `tcsettattr'
-- works.)
--
-- This bit is never set in the structure filled in by `tcgetattr'.
--
--
--File: libc.info, Node: Local Modes, Next: Line Speed, Prev: Control Modes, Up: Terminal Modes
--
--Local Modes
-------------
--
-- This section describes the flags for the `c_lflag' member of the
--`struct termios' structure. These flags generally control higher-level
--aspects of input processing than the input modes flags described in
--*Note Input Modes::, such as echoing, signals, and the choice of
--canonical or noncanonical input.
--
-- The `c_lflag' member itself is an integer, and you change the flags
--and fields using the operators `&', `|', and `^'. Don't try to specify
--the entire value for `c_lflag'--instead, change only specific flags and
--leave the rest untouched (*note Setting Modes::).
--
-- - Macro: tcflag_t ICANON
-- This bit, if set, enables canonical input processing mode.
-- Otherwise, input is processed in noncanonical mode. *Note
-- Canonical or Not::.
--
-- - Macro: tcflag_t ECHO
-- If this bit is set, echoing of input characters back to the
-- terminal is enabled.
--
-- - Macro: tcflag_t ECHOE
-- If this bit is set, echoing indicates erasure of input with the
-- ERASE character by erasing the last character in the current line
-- from the screen. Otherwise, the character erased is re-echoed to
-- show what has happened (suitable for a printing terminal).
--
-- This bit only controls the display behavior; the `ICANON' bit by
-- itself controls actual recognition of the ERASE character and
-- erasure of input, without which `ECHOE' is simply irrelevant.
--
-- - Macro: tcflag_t ECHOPRT
-- This bit is like `ECHOE', enables display of the ERASE character in
-- a way that is geared to a hardcopy terminal. When you type the
-- ERASE character, a `\' character is printed followed by the first
-- character erased. Typing the ERASE character again just prints
-- the next character erased. Then, the next time you type a normal
-- character, a `/' character is printed before the character echoes.
--
-- This is a BSD extension, and exists only in BSD systems and the
-- GNU system.
--
-- - Macro: tcflag_t ECHOK
-- This bit enables special display of the KILL character by moving
-- to a new line after echoing the KILL character normally. The
-- behavior of `ECHOKE' (below) is nicer to look at.
--
-- If this bit is not set, the KILL character echoes just as it would
-- if it were not the KILL character. Then it is up to the user to
-- remember that the KILL character has erased the preceding input;
-- there is no indication of this on the screen.
--
-- This bit only controls the display behavior; the `ICANON' bit by
-- itself controls actual recognition of the KILL character and
-- erasure of input, without which `ECHOK' is simply irrelevant.
--
-- - Macro: tcflag_t ECHOKE
-- This bit is similar to `ECHOK'. It enables special display of the
-- KILL character by erasing on the screen the entire line that has
-- been killed. This is a BSD extension, and exists only in BSD
-- systems and the GNU system.
--
-- - Macro: tcflag_t ECHONL
-- If this bit is set and the `ICANON' bit is also set, then the
-- newline (`'\n'') character is echoed even if the `ECHO' bit is not
-- set.
--
-- - Macro: tcflag_t ECHOCTL
-- If this bit is set and the `ECHO' bit is also set, echo control
-- characters with `^' followed by the corresponding text character.
-- Thus, control-A echoes as `^A'. This is usually the preferred mode
-- for interactive input, because echoing a control character back to
-- the terminal could have some undesired effect on the terminal.
--
-- This is a BSD extension, and exists only in BSD systems and the
-- GNU system.
--
-- - Macro: tcflag_t ISIG
-- This bit controls whether the INTR, QUIT, and SUSP characters are
-- recognized. The functions associated with these characters are
-- performed if and only if this bit is set. Being in canonical or
-- noncanonical input mode has no affect on the interpretation of
-- these characters.
--
-- You should use caution when disabling recognition of these
-- characters. Programs that cannot be interrupted interactively are
-- very user-unfriendly. If you clear this bit, your program should
-- provide some alternate interface that allows the user to
-- interactively send the signals associated with these characters,
-- or to escape from the program.
--
-- *Note Signal Characters::.
--
-- - Macro: tcflag_t IEXTEN
-- POSIX.1 gives `IEXTEN' implementation-defined meaning, so you
-- cannot rely on this interpretation on all systems.
--
-- On BSD systems and the GNU system, it enables the LNEXT and
-- DISCARD characters. *Note Other Special::.
--
-- - Macro: tcflag_t NOFLSH
-- Normally, the INTR, QUIT, and SUSP characters cause input and
-- output queues for the terminal to be cleared. If this bit is set,
-- the queues are not cleared.
--
-- - Macro: tcflag_t TOSTOP
-- If this bit is set and the system supports job control, then
-- `SIGTTOU' signals are generated by background processes that
-- attempt to write to the terminal. *Note Access to the Terminal::.
--
-- The following bits are BSD extensions; they exist only in BSD systems
--and the GNU system.
--
-- - Macro: tcflag_t ALTWERASE
-- This bit determines how far the WERASE character should erase. The
-- WERASE character erases back to the beginning of a word; the
-- question is, where do words begin?
--
-- If this bit is clear, then the beginning of a word is a
-- nonwhitespace character following a whitespace character. If the
-- bit is set, then the beginning of a word is an alphanumeric
-- character or underscore following a character which is none of
-- those.
--
-- *Note Editing Characters::, for more information about the WERASE
-- character.
--
-- - Macro: tcflag_t FLUSHO
-- This is the bit that toggles when the user types the DISCARD
-- character. While this bit is set, all output is discarded. *Note
-- Other Special::.
--
-- - Macro: tcflag_t NOKERNINFO
-- Setting this bit disables handling of the STATUS character. *Note
-- Other Special::.
--
-- - Macro: tcflag_t PENDIN
-- If this bit is set, it indicates that there is a line of input that
-- needs to be reprinted. Typing the REPRINT character sets this
-- bit; the bit remains set until reprinting is finished. *Note
-- Editing Characters::.
--
--
--File: libc.info, Node: Line Speed, Next: Special Characters, Prev: Local Modes, Up: Terminal Modes
--
--Line Speed
------------
--
-- The terminal line speed tells the computer how fast to read and write
--data on the terminal.
--
-- If the terminal is connected to a real serial line, the terminal
--speed you specify actually controls the line--if it doesn't match the
--terminal's own idea of the speed, communication does not work. Real
--serial ports accept only certain standard speeds. Also, particular
--hardware may not support even all the standard speeds. Specifying a
--speed of zero hangs up a dialup connection and turns off modem control
--signals.
--
-- If the terminal is not a real serial line (for example, if it is a
--network connection), then the line speed won't really affect data
--transmission speed, but some programs will use it to determine the
--amount of padding needed. It's best to specify a line speed value that
--matches the actual speed of the actual terminal, but you can safely
--experiment with different values to vary the amount of padding.
--
-- There are actually two line speeds for each terminal, one for input
--and one for output. You can set them independently, but most often
--terminals use the same speed for both directions.
--
-- The speed values are stored in the `struct termios' structure, but
--don't try to access them in the `struct termios' structure directly.
--Instead, you should use the following functions to read and store them:
--
-- - Function: speed_t cfgetospeed (const struct termios *TERMIOS-P)
-- This function returns the output line speed stored in the structure
-- `*TERMIOS-P'.
--
-- - Function: speed_t cfgetispeed (const struct termios *TERMIOS-P)
-- This function returns the input line speed stored in the structure
-- `*TERMIOS-P'.
--
-- - Function: int cfsetospeed (struct termios *TERMIOS-P, speed_t SPEED)
-- This function stores SPEED in `*TERMIOS-P' as the output speed.
-- The normal return value is 0; a value of -1 indicates an error.
-- If SPEED is not a speed, `cfsetospeed' returns -1.
--
-- - Function: int cfsetispeed (struct termios *TERMIOS-P, speed_t SPEED)
-- This function stores SPEED in `*TERMIOS-P' as the input speed.
-- The normal return value is 0; a value of -1 indicates an error.
-- If SPEED is not a speed, `cfsetospeed' returns -1.
--
-- - Function: int cfsetspeed (struct termios *TERMIOS-P, speed_t SPEED)
-- This function stores SPEED in `*TERMIOS-P' as both the input and
-- output speeds. The normal return value is 0; a value of -1
-- indicates an error. If SPEED is not a speed, `cfsetspeed' returns
-- -1. This function is an extension in 4.4 BSD.
--
-- - Data Type: speed_t
-- The `speed_t' type is an unsigned integer data type used to
-- represent line speeds.
--
-- The functions `cfsetospeed' and `cfsetispeed' report errors only for
--speed values that the system simply cannot handle. If you specify a
--speed value that is basically acceptable, then those functions will
--succeed. But they do not check that a particular hardware device can
--actually support the specified speeds--in fact, they don't know which
--device you plan to set the speed for. If you use `tcsetattr' to set
--the speed of a particular device to a value that it cannot handle,
--`tcsetattr' returns -1.
--
-- *Portability note:* In the GNU library, the functions above accept
--speeds measured in bits per second as input, and return speed values
--measured in bits per second. Other libraries require speeds to be
--indicated by special codes. For POSIX.1 portability, you must use one
--of the following symbols to represent the speed; their precise numeric
--values are system-dependent, but each name has a fixed meaning: `B110'
--stands for 110 bps, `B300' for 300 bps, and so on. There is no
--portable way to represent any speed but these, but these are the only
--speeds that typical serial lines can support.
--
-- B0 B50 B75 B110 B134 B150 B200
-- B300 B600 B1200 B1800 B2400 B4800
-- B9600 B19200 B38400 B57600 B115200
-- B230400 B460800
--
-- BSD defines two additional speed symbols as aliases: `EXTA' is an
--alias for `B19200' and `EXTB' is an alias for `B38400'. These aliases
--are obsolete.
--
--
--File: libc.info, Node: Special Characters, Next: Noncanonical Input, Prev: Line Speed, Up: Terminal Modes
--
--Special Characters
--------------------
--
-- In canonical input, the terminal driver recognizes a number of
--special characters which perform various control functions. These
--include the ERASE character (usually <DEL>) for editing input, and
--other editing characters. The INTR character (normally `C-c') for
--sending a `SIGINT' signal, and other signal-raising characters, may be
--available in either canonical or noncanonical input mode. All these
--characters are described in this section.
--
-- The particular characters used are specified in the `c_cc' member of
--the `struct termios' structure. This member is an array; each element
--specifies the character for a particular role. Each element has a
--symbolic constant that stands for the index of that element--for
--example, `VINTR' is the index of the element that specifies the INTR
--character, so storing `'='' in `TERMIOS.c_cc[VINTR]' specifies `=' as
--the INTR character.
--
-- On some systems, you can disable a particular special character
--function by specifying the value `_POSIX_VDISABLE' for that role. This
--value is unequal to any possible character code. *Note Options for
--Files::, for more information about how to tell whether the operating
--system you are using supports `_POSIX_VDISABLE'.
--
--* Menu:
--
--* Editing Characters:: Special characters that terminate lines and
-- delete text, and other editing functions.
--* Signal Characters:: Special characters that send or raise signals
-- to or for certain classes of processes.
--* Start/Stop Characters:: Special characters that suspend or resume
-- suspended output.
--* Other Special:: Other special characters for BSD systems:
-- they can discard output, and print status.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-3 glibc-2.3.2-200304020432/manual/libc.info-3
---- glibc-2.3.2/manual/libc.info-3 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-3 Thu Jan 1 01:00:00 1970
-@@ -1,1280 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Error Codes, Next: Error Messages, Prev: Checking for Errors, Up: Error Reporting
--
--Error Codes
--===========
--
-- The error code macros are defined in the header file `errno.h'. All
--of them expand into integer constant values. Some of these error codes
--can't occur on the GNU system, but they can occur using the GNU library
--on other systems.
--
-- - Macro: int EPERM
-- Operation not permitted; only the owner of the file (or other
-- resource) or processes with special privileges can perform the
-- operation.
--
-- - Macro: int ENOENT
-- No such file or directory. This is a "file doesn't exist" error
-- for ordinary files that are referenced in contexts where they are
-- expected to already exist.
--
-- - Macro: int ESRCH
-- No process matches the specified process ID.
--
-- - Macro: int EINTR
-- Interrupted function call; an asynchronous signal occurred and
-- prevented completion of the call. When this happens, you should
-- try the call again.
--
-- You can choose to have functions resume after a signal that is
-- handled, rather than failing with `EINTR'; see *Note Interrupted
-- Primitives::.
--
-- - Macro: int EIO
-- Input/output error; usually used for physical read or write errors.
--
-- - Macro: int ENXIO
-- No such device or address. The system tried to use the device
-- represented by a file you specified, and it couldn't find the
-- device. This can mean that the device file was installed
-- incorrectly, or that the physical device is missing or not
-- correctly attached to the computer.
--
-- - Macro: int E2BIG
-- Argument list too long; used when the arguments passed to a new
-- program being executed with one of the `exec' functions (*note
-- Executing a File::) occupy too much memory space. This condition
-- never arises in the GNU system.
--
-- - Macro: int ENOEXEC
-- Invalid executable file format. This condition is detected by the
-- `exec' functions; see *Note Executing a File::.
--
-- - Macro: int EBADF
-- Bad file descriptor; for example, I/O on a descriptor that has been
-- closed or reading from a descriptor open only for writing (or vice
-- versa).
--
-- - Macro: int ECHILD
-- There are no child processes. This error happens on operations
-- that are supposed to manipulate child processes, when there aren't
-- any processes to manipulate.
--
-- - Macro: int EDEADLK
-- Deadlock avoided; allocating a system resource would have resulted
-- in a deadlock situation. The system does not guarantee that it
-- will notice all such situations. This error means you got lucky
-- and the system noticed; it might just hang. *Note File Locks::,
-- for an example.
--
-- - Macro: int ENOMEM
-- No memory available. The system cannot allocate more virtual
-- memory because its capacity is full.
--
-- - Macro: int EACCES
-- Permission denied; the file permissions do not allow the attempted
-- operation.
--
-- - Macro: int EFAULT
-- Bad address; an invalid pointer was detected. In the GNU system,
-- this error never happens; you get a signal instead.
--
-- - Macro: int ENOTBLK
-- A file that isn't a block special file was given in a situation
-- that requires one. For example, trying to mount an ordinary file
-- as a file system in Unix gives this error.
--
-- - Macro: int EBUSY
-- Resource busy; a system resource that can't be shared is already
-- in use. For example, if you try to delete a file that is the root
-- of a currently mounted filesystem, you get this error.
--
-- - Macro: int EEXIST
-- File exists; an existing file was specified in a context where it
-- only makes sense to specify a new file.
--
-- - Macro: int EXDEV
-- An attempt to make an improper link across file systems was
-- detected. This happens not only when you use `link' (*note Hard
-- Links::) but also when you rename a file with `rename' (*note
-- Renaming Files::).
--
-- - Macro: int ENODEV
-- The wrong type of device was given to a function that expects a
-- particular sort of device.
--
-- - Macro: int ENOTDIR
-- A file that isn't a directory was specified when a directory is
-- required.
--
-- - Macro: int EISDIR
-- File is a directory; you cannot open a directory for writing, or
-- create or remove hard links to it.
--
-- - Macro: int EINVAL
-- Invalid argument. This is used to indicate various kinds of
-- problems with passing the wrong argument to a library function.
--
-- - Macro: int EMFILE
-- The current process has too many files open and can't open any
-- more. Duplicate descriptors do count toward this limit.
--
-- In BSD and GNU, the number of open files is controlled by a
-- resource limit that can usually be increased. If you get this
-- error, you might want to increase the `RLIMIT_NOFILE' limit or
-- make it unlimited; *note Limits on Resources::.
--
-- - Macro: int ENFILE
-- There are too many distinct file openings in the entire system.
-- Note that any number of linked channels count as just one file
-- opening; see *Note Linked Channels::. This error never occurs in
-- the GNU system.
--
-- - Macro: int ENOTTY
-- Inappropriate I/O control operation, such as trying to set terminal
-- modes on an ordinary file.
--
-- - Macro: int ETXTBSY
-- An attempt to execute a file that is currently open for writing, or
-- write to a file that is currently being executed. Often using a
-- debugger to run a program is considered having it open for writing
-- and will cause this error. (The name stands for "text file
-- busy".) This is not an error in the GNU system; the text is
-- copied as necessary.
--
-- - Macro: int EFBIG
-- File too big; the size of a file would be larger than allowed by
-- the system.
--
-- - Macro: int ENOSPC
-- No space left on device; write operation on a file failed because
-- the disk is full.
--
-- - Macro: int ESPIPE
-- Invalid seek operation (such as on a pipe).
--
-- - Macro: int EROFS
-- An attempt was made to modify something on a read-only file system.
--
-- - Macro: int EMLINK
-- Too many links; the link count of a single file would become too
-- large. `rename' can cause this error if the file being renamed
-- already has as many links as it can take (*note Renaming Files::).
--
-- - Macro: int EPIPE
-- Broken pipe; there is no process reading from the other end of a
-- pipe. Every library function that returns this error code also
-- generates a `SIGPIPE' signal; this signal terminates the program
-- if not handled or blocked. Thus, your program will never actually
-- see `EPIPE' unless it has handled or blocked `SIGPIPE'.
--
-- - Macro: int EDOM
-- Domain error; used by mathematical functions when an argument
-- value does not fall into the domain over which the function is
-- defined.
--
-- - Macro: int ERANGE
-- Range error; used by mathematical functions when the result value
-- is not representable because of overflow or underflow.
--
-- - Macro: int EAGAIN
-- Resource temporarily unavailable; the call might work if you try
-- again later. The macro `EWOULDBLOCK' is another name for `EAGAIN';
-- they are always the same in the GNU C library.
--
-- This error can happen in a few different situations:
--
-- * An operation that would block was attempted on an object that
-- has non-blocking mode selected. Trying the same operation
-- again will block until some external condition makes it
-- possible to read, write, or connect (whatever the operation).
-- You can use `select' to find out when the operation will be
-- possible; *note Waiting for I/O::.
--
-- *Portability Note:* In many older Unix systems, this condition
-- was indicated by `EWOULDBLOCK', which was a distinct error
-- code different from `EAGAIN'. To make your program portable,
-- you should check for both codes and treat them the same.
--
-- * A temporary resource shortage made an operation impossible.
-- `fork' can return this error. It indicates that the shortage
-- is expected to pass, so your program can try the call again
-- later and it may succeed. It is probably a good idea to
-- delay for a few seconds before trying it again, to allow time
-- for other processes to release scarce resources. Such
-- shortages are usually fairly serious and affect the whole
-- system, so usually an interactive program should report the
-- error to the user and return to its command loop.
--
-- - Macro: int EWOULDBLOCK
-- In the GNU C library, this is another name for `EAGAIN' (above).
-- The values are always the same, on every operating system.
--
-- C libraries in many older Unix systems have `EWOULDBLOCK' as a
-- separate error code.
--
-- - Macro: int EINPROGRESS
-- An operation that cannot complete immediately was initiated on an
-- object that has non-blocking mode selected. Some functions that
-- must always block (such as `connect'; *note Connecting::) never
-- return `EAGAIN'. Instead, they return `EINPROGRESS' to indicate
-- that the operation has begun and will take some time. Attempts to
-- manipulate the object before the call completes return `EALREADY'.
-- You can use the `select' function to find out when the pending
-- operation has completed; *note Waiting for I/O::.
--
-- - Macro: int EALREADY
-- An operation is already in progress on an object that has
-- non-blocking mode selected.
--
-- - Macro: int ENOTSOCK
-- A file that isn't a socket was specified when a socket is required.
--
-- - Macro: int EMSGSIZE
-- The size of a message sent on a socket was larger than the
-- supported maximum size.
--
-- - Macro: int EPROTOTYPE
-- The socket type does not support the requested communications
-- protocol.
--
-- - Macro: int ENOPROTOOPT
-- You specified a socket option that doesn't make sense for the
-- particular protocol being used by the socket. *Note Socket
-- Options::.
--
-- - Macro: int EPROTONOSUPPORT
-- The socket domain does not support the requested communications
-- protocol (perhaps because the requested protocol is completely
-- invalid). *Note Creating a Socket::.
--
-- - Macro: int ESOCKTNOSUPPORT
-- The socket type is not supported.
--
-- - Macro: int EOPNOTSUPP
-- The operation you requested is not supported. Some socket
-- functions don't make sense for all types of sockets, and others
-- may not be implemented for all communications protocols. In the
-- GNU system, this error can happen for many calls when the object
-- does not support the particular operation; it is a generic
-- indication that the server knows nothing to do for that call.
--
-- - Macro: int EPFNOSUPPORT
-- The socket communications protocol family you requested is not
-- supported.
--
-- - Macro: int EAFNOSUPPORT
-- The address family specified for a socket is not supported; it is
-- inconsistent with the protocol being used on the socket. *Note
-- Sockets::.
--
-- - Macro: int EADDRINUSE
-- The requested socket address is already in use. *Note Socket
-- Addresses::.
--
-- - Macro: int EADDRNOTAVAIL
-- The requested socket address is not available; for example, you
-- tried to give a socket a name that doesn't match the local host
-- name. *Note Socket Addresses::.
--
-- - Macro: int ENETDOWN
-- A socket operation failed because the network was down.
--
-- - Macro: int ENETUNREACH
-- A socket operation failed because the subnet containing the remote
-- host was unreachable.
--
-- - Macro: int ENETRESET
-- A network connection was reset because the remote host crashed.
--
-- - Macro: int ECONNABORTED
-- A network connection was aborted locally.
--
-- - Macro: int ECONNRESET
-- A network connection was closed for reasons outside the control of
-- the local host, such as by the remote machine rebooting or an
-- unrecoverable protocol violation.
--
-- - Macro: int ENOBUFS
-- The kernel's buffers for I/O operations are all in use. In GNU,
-- this error is always synonymous with `ENOMEM'; you may get one or
-- the other from network operations.
--
-- - Macro: int EISCONN
-- You tried to connect a socket that is already connected. *Note
-- Connecting::.
--
-- - Macro: int ENOTCONN
-- The socket is not connected to anything. You get this error when
-- you try to transmit data over a socket, without first specifying a
-- destination for the data. For a connectionless socket (for
-- datagram protocols, such as UDP), you get `EDESTADDRREQ' instead.
--
-- - Macro: int EDESTADDRREQ
-- No default destination address was set for the socket. You get
-- this error when you try to transmit data over a connectionless
-- socket, without first specifying a destination for the data with
-- `connect'.
--
-- - Macro: int ESHUTDOWN
-- The socket has already been shut down.
--
-- - Macro: int ETOOMANYREFS
-- ???
--
-- - Macro: int ETIMEDOUT
-- A socket operation with a specified timeout received no response
-- during the timeout period.
--
-- - Macro: int ECONNREFUSED
-- A remote host refused to allow the network connection (typically
-- because it is not running the requested service).
--
-- - Macro: int ELOOP
-- Too many levels of symbolic links were encountered in looking up a
-- file name. This often indicates a cycle of symbolic links.
--
-- - Macro: int ENAMETOOLONG
-- Filename too long (longer than `PATH_MAX'; *note Limits for
-- Files::) or host name too long (in `gethostname' or `sethostname';
-- *note Host Identification::).
--
-- - Macro: int EHOSTDOWN
-- The remote host for a requested network connection is down.
--
-- - Macro: int EHOSTUNREACH
-- The remote host for a requested network connection is not
-- reachable.
--
-- - Macro: int ENOTEMPTY
-- Directory not empty, where an empty directory was expected.
-- Typically, this error occurs when you are trying to delete a
-- directory.
--
-- - Macro: int EPROCLIM
-- This means that the per-user limit on new process would be
-- exceeded by an attempted `fork'. *Note Limits on Resources::, for
-- details on the `RLIMIT_NPROC' limit.
--
-- - Macro: int EUSERS
-- The file quota system is confused because there are too many users.
--
-- - Macro: int EDQUOT
-- The user's disk quota was exceeded.
--
-- - Macro: int ESTALE
-- Stale NFS file handle. This indicates an internal confusion in
-- the NFS system which is due to file system rearrangements on the
-- server host. Repairing this condition usually requires unmounting
-- and remounting the NFS file system on the local host.
--
-- - Macro: int EREMOTE
-- An attempt was made to NFS-mount a remote file system with a file
-- name that already specifies an NFS-mounted file. (This is an
-- error on some operating systems, but we expect it to work properly
-- on the GNU system, making this error code impossible.)
--
-- - Macro: int EBADRPC
-- ???
--
-- - Macro: int ERPCMISMATCH
-- ???
--
-- - Macro: int EPROGUNAVAIL
-- ???
--
-- - Macro: int EPROGMISMATCH
-- ???
--
-- - Macro: int EPROCUNAVAIL
-- ???
--
-- - Macro: int ENOLCK
-- No locks available. This is used by the file locking facilities;
-- see *Note File Locks::. This error is never generated by the GNU
-- system, but it can result from an operation to an NFS server
-- running another operating system.
--
-- - Macro: int EFTYPE
-- Inappropriate file type or format. The file was the wrong type
-- for the operation, or a data file had the wrong format.
--
-- On some systems `chmod' returns this error if you try to set the
-- sticky bit on a non-directory file; *note Setting Permissions::.
--
-- - Macro: int EAUTH
-- ???
--
-- - Macro: int ENEEDAUTH
-- ???
--
-- - Macro: int ENOSYS
-- Function not implemented. This indicates that the function called
-- is not implemented at all, either in the C library itself or in the
-- operating system. When you get this error, you can be sure that
-- this particular function will always fail with `ENOSYS' unless you
-- install a new version of the C library or the operating system.
--
-- - Macro: int ENOTSUP
-- Not supported. A function returns this error when certain
-- parameter values are valid, but the functionality they request is
-- not available. This can mean that the function does not implement
-- a particular command or option value or flag bit at all. For
-- functions that operate on some object given in a parameter, such
-- as a file descriptor or a port, it might instead mean that only
-- _that specific object_ (file descriptor, port, etc.) is unable to
-- support the other parameters given; different file descriptors
-- might support different ranges of parameter values.
--
-- If the entire function is not available at all in the
-- implementation, it returns `ENOSYS' instead.
--
-- - Macro: int EILSEQ
-- While decoding a multibyte character the function came along an
-- invalid or an incomplete sequence of bytes or the given wide
-- character is invalid.
--
-- - Macro: int EBACKGROUND
-- In the GNU system, servers supporting the `term' protocol return
-- this error for certain operations when the caller is not in the
-- foreground process group of the terminal. Users do not usually
-- see this error because functions such as `read' and `write'
-- translate it into a `SIGTTIN' or `SIGTTOU' signal. *Note Job
-- Control::, for information on process groups and these signals.
--
-- - Macro: int EDIED
-- In the GNU system, opening a file returns this error when the file
-- is translated by a program and the translator program dies while
-- starting up, before it has connected to the file.
--
-- - Macro: int ED
-- The experienced user will know what is wrong.
--
-- - Macro: int EGREGIOUS
-- You did *what*?
--
-- - Macro: int EIEIO
-- Go home and have a glass of warm, dairy-fresh milk.
--
-- - Macro: int EGRATUITOUS
-- This error code has no purpose.
--
-- - Macro: int EBADMSG
--
-- - Macro: int EIDRM
--
-- - Macro: int EMULTIHOP
--
-- - Macro: int ENODATA
--
-- - Macro: int ENOLINK
--
-- - Macro: int ENOMSG
--
-- - Macro: int ENOSR
--
-- - Macro: int ENOSTR
--
-- - Macro: int EOVERFLOW
--
-- - Macro: int EPROTO
--
-- - Macro: int ETIME
--
-- - Macro: int ECANCELED
-- Operation canceled; an asynchronous operation was canceled before
-- it completed. *Note Asynchronous I/O::. When you call
-- `aio_cancel', the normal result is for the operations affected to
-- complete with this error; *note Cancel AIO Operations::.
--
-- _The following error codes are defined by the Linux/i386 kernel.
--They are not yet documented._
--
-- - Macro: int ERESTART
--
-- - Macro: int ECHRNG
--
-- - Macro: int EL2NSYNC
--
-- - Macro: int EL3HLT
--
-- - Macro: int EL3RST
--
-- - Macro: int ELNRNG
--
-- - Macro: int EUNATCH
--
-- - Macro: int ENOCSI
--
-- - Macro: int EL2HLT
--
-- - Macro: int EBADE
--
-- - Macro: int EBADR
--
-- - Macro: int EXFULL
--
-- - Macro: int ENOANO
--
-- - Macro: int EBADRQC
--
-- - Macro: int EBADSLT
--
-- - Macro: int EDEADLOCK
--
-- - Macro: int EBFONT
--
-- - Macro: int ENONET
--
-- - Macro: int ENOPKG
--
-- - Macro: int EADV
--
-- - Macro: int ESRMNT
--
-- - Macro: int ECOMM
--
-- - Macro: int EDOTDOT
--
-- - Macro: int ENOTUNIQ
--
-- - Macro: int EBADFD
--
-- - Macro: int EREMCHG
--
-- - Macro: int ELIBACC
--
-- - Macro: int ELIBBAD
--
-- - Macro: int ELIBSCN
--
-- - Macro: int ELIBMAX
--
-- - Macro: int ELIBEXEC
--
-- - Macro: int ESTRPIPE
--
-- - Macro: int EUCLEAN
--
-- - Macro: int ENOTNAM
--
-- - Macro: int ENAVAIL
--
-- - Macro: int EISNAM
--
-- - Macro: int EREMOTEIO
--
-- - Macro: int ENOMEDIUM
--
-- - Macro: int EMEDIUMTYPE
--
--
--File: libc.info, Node: Error Messages, Prev: Error Codes, Up: Error Reporting
--
--Error Messages
--==============
--
-- The library has functions and variables designed to make it easy for
--your program to report informative error messages in the customary
--format about the failure of a library call. The functions `strerror'
--and `perror' give you the standard error message for a given error
--code; the variable `program_invocation_short_name' gives you convenient
--access to the name of the program that encountered the error.
--
-- - Function: char * strerror (int ERRNUM)
-- The `strerror' function maps the error code (*note Checking for
-- Errors::) specified by the ERRNUM argument to a descriptive error
-- message string. The return value is a pointer to this string.
--
-- The value ERRNUM normally comes from the variable `errno'.
--
-- You should not modify the string returned by `strerror'. Also, if
-- you make subsequent calls to `strerror', the string might be
-- overwritten. (But it's guaranteed that no library function ever
-- calls `strerror' behind your back.)
--
-- The function `strerror' is declared in `string.h'.
--
-- - Function: char * strerror_r (int ERRNUM, char *BUF, size_t N)
-- The `strerror_r' function works like `strerror' but instead of
-- returning the error message in a statically allocated buffer
-- shared by all threads in the process, it returns a private copy
-- for the thread. This might be either some permanent global data or
-- a message string in the user supplied buffer starting at BUF with
-- the length of N bytes.
--
-- At most N characters are written (including the NUL byte) so it is
-- up to the user to select the buffer large enough.
--
-- This function should always be used in multi-threaded programs
-- since there is no way to guarantee the string returned by
-- `strerror' really belongs to the last call of the current thread.
--
-- This function `strerror_r' is a GNU extension and it is declared in
-- `string.h'.
--
-- - Function: void perror (const char *MESSAGE)
-- This function prints an error message to the stream `stderr'; see
-- *Note Standard Streams::. The orientation of `stderr' is not
-- changed.
--
-- If you call `perror' with a MESSAGE that is either a null pointer
-- or an empty string, `perror' just prints the error message
-- corresponding to `errno', adding a trailing newline.
--
-- If you supply a non-null MESSAGE argument, then `perror' prefixes
-- its output with this string. It adds a colon and a space
-- character to separate the MESSAGE from the error string
-- corresponding to `errno'.
--
-- The function `perror' is declared in `stdio.h'.
--
-- `strerror' and `perror' produce the exact same message for any given
--error code; the precise text varies from system to system. On the GNU
--system, the messages are fairly short; there are no multi-line messages
--or embedded newlines. Each error message begins with a capital letter
--and does not include any terminating punctuation.
--
-- *Compatibility Note:* The `strerror' function was introduced in
--ISO C89. Many older C systems do not support this function yet.
--
-- Many programs that don't read input from the terminal are designed to
--exit if any system call fails. By convention, the error message from
--such a program should start with the program's name, sans directories.
--You can find that name in the variable `program_invocation_short_name';
--the full file name is stored the variable `program_invocation_name'.
--
-- - Variable: char * program_invocation_name
-- This variable's value is the name that was used to invoke the
-- program running in the current process. It is the same as
-- `argv[0]'. Note that this is not necessarily a useful file name;
-- often it contains no directory names. *Note Program Arguments::.
--
-- - Variable: char * program_invocation_short_name
-- This variable's value is the name that was used to invoke the
-- program running in the current process, with directory names
-- removed. (That is to say, it is the same as
-- `program_invocation_name' minus everything up to the last slash,
-- if any.)
--
-- The library initialization code sets up both of these variables
--before calling `main'.
--
-- *Portability Note:* These two variables are GNU extensions. If you
--want your program to work with non-GNU libraries, you must save the
--value of `argv[0]' in `main', and then strip off the directory names
--yourself. We added these extensions to make it possible to write
--self-contained error-reporting subroutines that require no explicit
--cooperation from `main'.
--
-- Here is an example showing how to handle failure to open a file
--correctly. The function `open_sesame' tries to open the named file for
--reading and returns a stream if successful. The `fopen' library
--function returns a null pointer if it couldn't open the file for some
--reason. In that situation, `open_sesame' constructs an appropriate
--error message using the `strerror' function, and terminates the
--program. If we were going to make some other library calls before
--passing the error code to `strerror', we'd have to save it in a local
--variable instead, because those other library functions might overwrite
--`errno' in the meantime.
--
-- #include <errno.h>
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <string.h>
--
-- FILE *
-- open_sesame (char *name)
-- {
-- FILE *stream;
--
-- errno = 0;
-- stream = fopen (name, "r");
-- if (stream == NULL)
-- {
-- fprintf (stderr, "%s: Couldn't open file %s; %s\n",
-- program_invocation_short_name, name, strerror (errno));
-- exit (EXIT_FAILURE);
-- }
-- else
-- return stream;
-- }
--
-- Using `perror' has the advantage that the function is portable and
--available on all systems implementing ISO C. But often the text
--`perror' generates is not what is wanted and there is no way to extend
--or change what `perror' does. The GNU coding standard, for instance,
--requires error messages to be preceded by the program name and programs
--which read some input files should should provide information about the
--input file name and the line number in case an error is encountered
--while reading the file. For these occasions there are two functions
--available which are widely used throughout the GNU project. These
--functions are declared in `error.h'.
--
-- - Function: void error (int STATUS, int ERRNUM, const char *FORMAT,
-- ...)
-- The `error' function can be used to report general problems during
-- program execution. The FORMAT argument is a format string just
-- like those given to the `printf' family of functions. The
-- arguments required for the format can follow the FORMAT parameter.
-- Just like `perror', `error' also can report an error code in
-- textual form. But unlike `perror' the error value is explicitly
-- passed to the function in the ERRNUM parameter. This elimintates
-- the problem mentioned above that the error reporting function must
-- be called immediately after the function causing the error since
-- otherwise `errno' might have a different value.
--
-- The `error' prints first the program name. If the application
-- defined a global variable `error_print_progname' and points it to a
-- function this function will be called to print the program name.
-- Otherwise the string from the global variable `program_name' is
-- used. The program name is followed by a colon and a space which
-- in turn is followed by the output produced by the format string.
-- If the ERRNUM parameter is non-zero the format string output is
-- followed by a colon and a space, followed by the error message for
-- the error code ERRNUM. In any case is the output terminated with
-- a newline.
--
-- The output is directed to the `stderr' stream. If the `stderr'
-- wasn't oriented before the call it will be narrow-oriented
-- afterwards.
--
-- The function will return unless the STATUS parameter has a
-- non-zero value. In this case the function will call `exit' with
-- the STATUS value for its parameter and therefore never return. If
-- `error' returns the global variable `error_message_count' is
-- incremented by one to keep track of the number of errors reported.
--
-- - Function: void error_at_line (int STATUS, int ERRNUM, const char
-- *FNAME, unsigned int LINENO, const char *FORMAT, ...)
-- The `error_at_line' function is very similar to the `error'
-- function. The only difference are the additional parameters FNAME
-- and LINENO. The handling of the other parameters is identical to
-- that of `error' except that between the program name and the string
-- generated by the format string additional text is inserted.
--
-- Directly following the program name a colon, followed by the file
-- name pointer to by FNAME, another colon, and a value of LINENO is
-- printed.
--
-- This additional output of course is meant to be used to locate an
-- error in an input file (like a programming language source code
-- file etc).
--
-- If the global variable `error_one_per_line' is set to a non-zero
-- value `error_at_line' will avoid printing consecutive messages for
-- the same file anem line. Repetition which are not directly
-- following each other are not caught.
--
-- Just like `error' this function only returned if STATUS is zero.
-- Otherwise `exit' is called with the non-zero value. If `error'
-- returns the global variable `error_message_count' is incremented
-- by one to keep track of the number of errors reported.
--
-- As mentioned above the `error' and `error_at_line' functions can be
--customized by defining a variable named `error_print_progname'.
--
-- - Variable: void (* error_print_progname ) (void)
-- If the `error_print_progname' variable is defined to a non-zero
-- value the function pointed to is called by `error' or
-- `error_at_line'. It is expected to print the program name or do
-- something similarly useful.
--
-- The function is expected to be print to the `stderr' stream and
-- must be able to handle whatever orientation the stream has.
--
-- The variable is global and shared by all threads.
--
-- - Variable: unsigned int error_message_count
-- The `error_message_count' variable is incremented whenever one of
-- the functions `error' or `error_at_line' returns. The variable is
-- global and shared by all threads.
--
-- - Variable: int error_one_per_line
-- The `error_one_per_line' variable influences only `error_at_line'.
-- Normally the `error_at_line' function creates output for every
-- invocation. If `error_one_per_line' is set to a non-zero value
-- `error_at_line' keeps track of the last file name and line number
-- for which an error was reported and avoid directly following
-- messages for the same file and line. This variable is global and
-- shared by all threads.
--
--A program which read some input file and reports errors in it could look
--like this:
--
-- {
-- char *line = NULL;
-- size_t len = 0;
-- unsigned int lineno = 0;
--
-- error_message_count = 0;
-- while (! feof_unlocked (fp))
-- {
-- ssize_t n = getline (&line, &len, fp);
-- if (n <= 0)
-- /* End of file or error. */
-- break;
-- ++lineno;
--
-- /* Process the line. */
-- ...
--
-- if (Detect error in line)
-- error_at_line (0, errval, filename, lineno,
-- "some error text %s", some_variable);
-- }
--
-- if (error_message_count != 0)
-- error (EXIT_FAILURE, 0, "%u errors found", error_message_count);
-- }
--
-- `error' and `error_at_line' are clearly the functions of choice and
--enable the programmer to write applications which follow the GNU coding
--standard. The GNU libc additionally contains functions which are used
--in BSD for the same purpose. These functions are declared in `err.h'.
--It is generally advised to not use these functions. They are included
--only for compatibility.
--
-- - Function: void warn (const char *FORMAT, ...)
-- The `warn' function is roughly equivalent to a call like
-- error (0, errno, format, the parameters)
--
-- except that the global variables `error' respects and modifies are
-- not used.
--
-- - Function: void vwarn (const char *FORMAT, va_list)
-- The `vwarn' function is just like `warn' except that the
-- parameters for the handling of the format string FORMAT are passed
-- in as an value of type `va_list'.
--
-- - Function: void warnx (const char *FORMAT, ...)
-- The `warnx' function is roughly equivalent to a call like
-- error (0, 0, format, the parameters)
--
-- except that the global variables `error' respects and modifies are
-- not used. The difference to `warn' is that no error number string
-- is printed.
--
-- - Function: void vwarnx (const char *FORMAT, va_list)
-- The `vwarnx' function is just like `warnx' except that the
-- parameters for the handling of the format string FORMAT are passed
-- in as an value of type `va_list'.
--
-- - Function: void err (int STATUS, const char *FORMAT, ...)
-- The `err' function is roughly equivalent to a call like
-- error (status, errno, format, the parameters)
--
-- except that the global variables `error' respects and modifies are
-- not used and that the program is exited even if STATUS is zero.
--
-- - Function: void verr (int STATUS, const char *FORMAT, va_list)
-- The `verr' function is just like `err' except that the parameters
-- for the handling of the format string FORMAT are passed in as an
-- value of type `va_list'.
--
-- - Function: void errx (int STATUS, const char *FORMAT, ...)
-- The `errx' function is roughly equivalent to a call like
-- error (status, 0, format, the parameters)
--
-- except that the global variables `error' respects and modifies are
-- not used and that the program is exited even if STATUS is zero.
-- The difference to `err' is that no error number string is printed.
--
-- - Function: void verrx (int STATUS, const char *FORMAT, va_list)
-- The `verrx' function is just like `errx' except that the
-- parameters for the handling of the format string FORMAT are passed
-- in as an value of type `va_list'.
--
--
--File: libc.info, Node: Memory, Next: Character Handling, Prev: Error Reporting, Up: Top
--
--Virtual Memory Allocation And Paging
--************************************
--
-- This chapter describes how processes manage and use memory in a
--system that uses the GNU C library.
--
-- The GNU C Library has several functions for dynamically allocating
--virtual memory in various ways. They vary in generality and in
--efficiency. The library also provides functions for controlling paging
--and allocation of real memory.
--
--* Menu:
--
--* Memory Concepts:: An introduction to concepts and terminology.
--* Memory Allocation:: Allocating storage for your program data
--* Locking Pages:: Preventing page faults
--* Resizing the Data Segment:: `brk', `sbrk'
--
-- Memory mapped I/O is not discussed in this chapter. *Note
--Memory-mapped I/O::.
--
--
--File: libc.info, Node: Memory Concepts, Next: Memory Allocation, Up: Memory
--
--Process Memory Concepts
--=======================
--
-- One of the most basic resources a process has available to it is
--memory. There are a lot of different ways systems organize memory, but
--in a typical one, each process has one linear virtual address space,
--with addresses running from zero to some huge maximum. It need not be
--contiguous; i.e. not all of these addresses actually can be used to
--store data.
--
-- The virtual memory is divided into pages (4 kilobytes is typical).
--Backing each page of virtual memory is a page of real memory (called a
--"frame") or some secondary storage, usually disk space. The disk space
--might be swap space or just some ordinary disk file. Actually, a page
--of all zeroes sometimes has nothing at all backing it - there's just a
--flag saying it is all zeroes.
--
-- The same frame of real memory or backing store can back multiple
--virtual pages belonging to multiple processes. This is normally the
--case, for example, with virtual memory occupied by GNU C library code.
--The same real memory frame containing the `printf' function backs a
--virtual memory page in each of the existing processes that has a
--`printf' call in its program.
--
-- In order for a program to access any part of a virtual page, the page
--must at that moment be backed by ("connected to") a real frame. But
--because there is usually a lot more virtual memory than real memory, the
--pages must move back and forth between real memory and backing store
--regularly, coming into real memory when a process needs to access them
--and then retreating to backing store when not needed anymore. This
--movement is called "paging".
--
-- When a program attempts to access a page which is not at that moment
--backed by real memory, this is known as a "page fault". When a page
--fault occurs, the kernel suspends the process, places the page into a
--real page frame (this is called "paging in" or "faulting in"), then
--resumes the process so that from the process' point of view, the page
--was in real memory all along. In fact, to the process, all pages always
--seem to be in real memory. Except for one thing: the elapsed execution
--time of an instruction that would normally be a few nanoseconds is
--suddenly much, much, longer (because the kernel normally has to do I/O
--to complete the page-in). For programs sensitive to that, the functions
--described in *Note Locking Pages:: can control it.
--
-- Within each virtual address space, a process has to keep track of
--what is at which addresses, and that process is called memory
--allocation. Allocation usually brings to mind meting out scarce
--resources, but in the case of virtual memory, that's not a major goal,
--because there is generally much more of it than anyone needs. Memory
--allocation within a process is mainly just a matter of making sure that
--the same byte of memory isn't used to store two different things.
--
-- Processes allocate memory in two major ways: by exec and
--programmatically. Actually, forking is a third way, but it's not very
--interesting. *Note Creating a Process::.
--
-- Exec is the operation of creating a virtual address space for a
--process, loading its basic program into it, and executing the program.
--It is done by the "exec" family of functions (e.g. `execl'). The
--operation takes a program file (an executable), it allocates space to
--load all the data in the executable, loads it, and transfers control to
--it. That data is most notably the instructions of the program (the
--"text"), but also literals and constants in the program and even some
--variables: C variables with the static storage class (*note Memory
--Allocation and C::).
--
-- Once that program begins to execute, it uses programmatic allocation
--to gain additional memory. In a C program with the GNU C library, there
--are two kinds of programmatic allocation: automatic and dynamic. *Note
--Memory Allocation and C::.
--
-- Memory-mapped I/O is another form of dynamic virtual memory
--allocation. Mapping memory to a file means declaring that the contents
--of certain range of a process' addresses shall be identical to the
--contents of a specified regular file. The system makes the virtual
--memory initially contain the contents of the file, and if you modify
--the memory, the system writes the same modification to the file. Note
--that due to the magic of virtual memory and page faults, there is no
--reason for the system to do I/O to read the file, or allocate real
--memory for its contents, until the program accesses the virtual memory.
--*Note Memory-mapped I/O::.
--
-- Just as it programmatically allocates memory, the program can
--programmatically deallocate ("free") it. You can't free the memory
--that was allocated by exec. When the program exits or execs, you might
--say that all its memory gets freed, but since in both cases the address
--space ceases to exist, the point is really moot. *Note Program
--Termination::.
--
-- A process' virtual address space is divided into segments. A
--segment is a contiguous range of virtual addresses. Three important
--segments are:
--
-- * The "text segment" contains a program's instructions and literals
-- and static constants. It is allocated by exec and stays the same
-- size for the life of the virtual address space.
--
-- * The "data segment" is working storage for the program. It can be
-- preallocated and preloaded by exec and the process can extend or
-- shrink it by calling functions as described in *Note Resizing the
-- Data Segment::. Its lower end is fixed.
--
-- * The "stack segment" contains a program stack. It grows as the
-- stack grows, but doesn't shrink when the stack shrinks.
--
--
--
--File: libc.info, Node: Memory Allocation, Next: Locking Pages, Prev: Memory Concepts, Up: Memory
--
--Allocating Storage For Program Data
--===================================
--
-- This section covers how ordinary programs manage storage for their
--data, including the famous `malloc' function and some fancier facilities
--special the GNU C library and GNU Compiler.
--
--* Menu:
--
--* Memory Allocation and C:: How to get different kinds of allocation in C.
--* Unconstrained Allocation:: The `malloc' facility allows fully general
-- dynamic allocation.
--* Allocation Debugging:: Finding memory leaks and not freed memory.
--* Obstacks:: Obstacks are less general than malloc
-- but more efficient and convenient.
--* Variable Size Automatic:: Allocation of variable-sized blocks
-- of automatic storage that are freed when the
-- calling function returns.
--
--
--File: libc.info, Node: Memory Allocation and C, Next: Unconstrained Allocation, Up: Memory Allocation
--
--Memory Allocation in C Programs
---------------------------------
--
-- The C language supports two kinds of memory allocation through the
--variables in C programs:
--
-- * "Static allocation" is what happens when you declare a static or
-- global variable. Each static or global variable defines one block
-- of space, of a fixed size. The space is allocated once, when your
-- program is started (part of the exec operation), and is never
-- freed.
--
-- * "Automatic allocation" happens when you declare an automatic
-- variable, such as a function argument or a local variable. The
-- space for an automatic variable is allocated when the compound
-- statement containing the declaration is entered, and is freed when
-- that compound statement is exited.
--
-- In GNU C, the size of the automatic storage can be an expression
-- that varies. In other C implementations, it must be a constant.
--
-- A third important kind of memory allocation, "dynamic allocation",
--is not supported by C variables but is available via GNU C library
--functions.
--
--Dynamic Memory Allocation
--.........................
--
-- "Dynamic memory allocation" is a technique in which programs
--determine as they are running where to store some information. You need
--dynamic allocation when the amount of memory you need, or how long you
--continue to need it, depends on factors that are not known before the
--program runs.
--
-- For example, you may need a block to store a line read from an input
--file; since there is no limit to how long a line can be, you must
--allocate the memory dynamically and make it dynamically larger as you
--read more of the line.
--
-- Or, you may need a block for each record or each definition in the
--input data; since you can't know in advance how many there will be, you
--must allocate a new block for each record or definition as you read it.
--
-- When you use dynamic allocation, the allocation of a block of memory
--is an action that the program requests explicitly. You call a function
--or macro when you want to allocate space, and specify the size with an
--argument. If you want to free the space, you do so by calling another
--function or macro. You can do these things whenever you want, as often
--as you want.
--
-- Dynamic allocation is not supported by C variables; there is no
--storage class "dynamic", and there can never be a C variable whose
--value is stored in dynamically allocated space. The only way to get
--dynamically allocated memory is via a system call (which is generally
--via a GNU C library function call), and the only way to refer to
--dynamically allocated space is through a pointer. Because it is less
--convenient, and because the actual process of dynamic allocation
--requires more computation time, programmers generally use dynamic
--allocation only when neither static nor automatic allocation will serve.
--
-- For example, if you want to allocate dynamically some space to hold a
--`struct foobar', you cannot declare a variable of type `struct foobar'
--whose contents are the dynamically allocated space. But you can
--declare a variable of pointer type `struct foobar *' and assign it the
--address of the space. Then you can use the operators `*' and `->' on
--this pointer variable to refer to the contents of the space:
--
-- {
-- struct foobar *ptr
-- = (struct foobar *) malloc (sizeof (struct foobar));
-- ptr->name = x;
-- ptr->next = current_foobar;
-- current_foobar = ptr;
-- }
--
--
--File: libc.info, Node: Unconstrained Allocation, Next: Allocation Debugging, Prev: Memory Allocation and C, Up: Memory Allocation
--
--Unconstrained Allocation
--------------------------
--
-- The most general dynamic allocation facility is `malloc'. It allows
--you to allocate blocks of memory of any size at any time, make them
--bigger or smaller at any time, and free the blocks individually at any
--time (or never).
--
--* Menu:
--
--* Basic Allocation:: Simple use of `malloc'.
--* Malloc Examples:: Examples of `malloc'. `xmalloc'.
--* Freeing after Malloc:: Use `free' to free a block you
-- got with `malloc'.
--* Changing Block Size:: Use `realloc' to make a block
-- bigger or smaller.
--* Allocating Cleared Space:: Use `calloc' to allocate a
-- block and clear it.
--* Efficiency and Malloc:: Efficiency considerations in use of
-- these functions.
--* Aligned Memory Blocks:: Allocating specially aligned memory.
--* Malloc Tunable Parameters:: Use `mallopt' to adjust allocation
-- parameters.
--* Heap Consistency Checking:: Automatic checking for errors.
--* Hooks for Malloc:: You can use these hooks for debugging
-- programs that use `malloc'.
--* Statistics of Malloc:: Getting information about how much
-- memory your program is using.
--* Summary of Malloc:: Summary of `malloc' and related functions.
--
--
--File: libc.info, Node: Basic Allocation, Next: Malloc Examples, Up: Unconstrained Allocation
--
--Basic Memory Allocation
--.......................
--
-- To allocate a block of memory, call `malloc'. The prototype for
--this function is in `stdlib.h'.
--
-- - Function: void * malloc (size_t SIZE)
-- This function returns a pointer to a newly allocated block SIZE
-- bytes long, or a null pointer if the block could not be allocated.
--
-- The contents of the block are undefined; you must initialize it
--yourself (or use `calloc' instead; *note Allocating Cleared Space::).
--Normally you would cast the value as a pointer to the kind of object
--that you want to store in the block. Here we show an example of doing
--so, and of initializing the space with zeros using the library function
--`memset' (*note Copying and Concatenation::):
--
-- struct foo *ptr;
-- ...
-- ptr = (struct foo *) malloc (sizeof (struct foo));
-- if (ptr == 0) abort ();
-- memset (ptr, 0, sizeof (struct foo));
--
-- You can store the result of `malloc' into any pointer variable
--without a cast, because ISO C automatically converts the type `void *'
--to another type of pointer when necessary. But the cast is necessary
--in contexts other than assignment operators or if you might want your
--code to run in traditional C.
--
-- Remember that when allocating space for a string, the argument to
--`malloc' must be one plus the length of the string. This is because a
--string is terminated with a null character that doesn't count in the
--"length" of the string but does need space. For example:
--
-- char *ptr;
-- ...
-- ptr = (char *) malloc (length + 1);
--
--*Note Representation of Strings::, for more information about this.
--
--
--File: libc.info, Node: Malloc Examples, Next: Freeing after Malloc, Prev: Basic Allocation, Up: Unconstrained Allocation
--
--Examples of `malloc'
--....................
--
-- If no more space is available, `malloc' returns a null pointer. You
--should check the value of _every_ call to `malloc'. It is useful to
--write a subroutine that calls `malloc' and reports an error if the
--value is a null pointer, returning only if the value is nonzero. This
--function is conventionally called `xmalloc'. Here it is:
--
-- void *
-- xmalloc (size_t size)
-- {
-- register void *value = malloc (size);
-- if (value == 0)
-- fatal ("virtual memory exhausted");
-- return value;
-- }
--
-- Here is a real example of using `malloc' (by way of `xmalloc'). The
--function `savestring' will copy a sequence of characters into a newly
--allocated null-terminated string:
--
-- char *
-- savestring (const char *ptr, size_t len)
-- {
-- register char *value = (char *) xmalloc (len + 1);
-- value[len] = '\0';
-- return (char *) memcpy (value, ptr, len);
-- }
--
-- The block that `malloc' gives you is guaranteed to be aligned so
--that it can hold any type of data. In the GNU system, the address is
--always a multiple of eight on most systems, and a multiple of 16 on
--64-bit systems. Only rarely is any higher boundary (such as a page
--boundary) necessary; for those cases, use `memalign', `posix_memalign'
--or `valloc' (*note Aligned Memory Blocks::).
--
-- Note that the memory located after the end of the block is likely to
--be in use for something else; perhaps a block already allocated by
--another call to `malloc'. If you attempt to treat the block as longer
--than you asked for it to be, you are liable to destroy the data that
--`malloc' uses to keep track of its blocks, or you may destroy the
--contents of another block. If you have already allocated a block and
--discover you want it to be bigger, use `realloc' (*note Changing Block
--Size::).
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-30 glibc-2.3.2-200304020432/manual/libc.info-30
---- glibc-2.3.2/manual/libc.info-30 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-30 Thu Jan 1 01:00:00 1970
-@@ -1,1306 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Editing Characters, Next: Signal Characters, Up: Special Characters
--
--Characters for Input Editing
--............................
--
-- These special characters are active only in canonical input mode.
--*Note Canonical or Not::.
--
-- - Macro: int VEOF
-- This is the subscript for the EOF character in the special control
-- character array. `TERMIOS.c_cc[VEOF]' holds the character itself.
--
-- The EOF character is recognized only in canonical input mode. It
-- acts as a line terminator in the same way as a newline character,
-- but if the EOF character is typed at the beginning of a line it
-- causes `read' to return a byte count of zero, indicating
-- end-of-file. The EOF character itself is discarded.
--
-- Usually, the EOF character is `C-d'.
--
-- - Macro: int VEOL
-- This is the subscript for the EOL character in the special control
-- character array. `TERMIOS.c_cc[VEOL]' holds the character itself.
--
-- The EOL character is recognized only in canonical input mode. It
-- acts as a line terminator, just like a newline character. The EOL
-- character is not discarded; it is read as the last character in
-- the input line.
--
-- You don't need to use the EOL character to make <RET> end a line.
-- Just set the ICRNL flag. In fact, this is the default state of
-- affairs.
--
-- - Macro: int VEOL2
-- This is the subscript for the EOL2 character in the special control
-- character array. `TERMIOS.c_cc[VEOL2]' holds the character itself.
--
-- The EOL2 character works just like the EOL character (see above),
-- but it can be a different character. Thus, you can specify two
-- characters to terminate an input line, by setting EOL to one of
-- them and EOL2 to the other.
--
-- The EOL2 character is a BSD extension; it exists only on BSD
-- systems and the GNU system.
--
-- - Macro: int VERASE
-- This is the subscript for the ERASE character in the special
-- control character array. `TERMIOS.c_cc[VERASE]' holds the
-- character itself.
--
-- The ERASE character is recognized only in canonical input mode.
-- When the user types the erase character, the previous character
-- typed is discarded. (If the terminal generates multibyte
-- character sequences, this may cause more than one byte of input to
-- be discarded.) This cannot be used to erase past the beginning of
-- the current line of text. The ERASE character itself is discarded.
--
-- Usually, the ERASE character is <DEL>.
--
-- - Macro: int VWERASE
-- This is the subscript for the WERASE character in the special
-- control character array. `TERMIOS.c_cc[VWERASE]' holds the
-- character itself.
--
-- The WERASE character is recognized only in canonical mode. It
-- erases an entire word of prior input, and any whitespace after it;
-- whitespace characters before the word are not erased.
--
-- The definition of a "word" depends on the setting of the
-- `ALTWERASE' mode; *note Local Modes::.
--
-- If the `ALTWERASE' mode is not set, a word is defined as a sequence
-- of any characters except space or tab.
--
-- If the `ALTWERASE' mode is set, a word is defined as a sequence of
-- characters containing only letters, numbers, and underscores,
-- optionally followed by one character that is not a letter, number,
-- or underscore.
--
-- The WERASE character is usually `C-w'.
--
-- This is a BSD extension.
--
-- - Macro: int VKILL
-- This is the subscript for the KILL character in the special control
-- character array. `TERMIOS.c_cc[VKILL]' holds the character itself.
--
-- The KILL character is recognized only in canonical input mode.
-- When the user types the kill character, the entire contents of the
-- current line of input are discarded. The kill character itself is
-- discarded too.
--
-- The KILL character is usually `C-u'.
--
-- - Macro: int VREPRINT
-- This is the subscript for the REPRINT character in the special
-- control character array. `TERMIOS.c_cc[VREPRINT]' holds the
-- character itself.
--
-- The REPRINT character is recognized only in canonical mode. It
-- reprints the current input line. If some asynchronous output has
-- come while you are typing, this lets you see the line you are
-- typing clearly again.
--
-- The REPRINT character is usually `C-r'.
--
-- This is a BSD extension.
--
--
--File: libc.info, Node: Signal Characters, Next: Start/Stop Characters, Prev: Editing Characters, Up: Special Characters
--
--Characters that Cause Signals
--.............................
--
-- These special characters may be active in either canonical or
--noncanonical input mode, but only when the `ISIG' flag is set (*note
--Local Modes::).
--
-- - Macro: int VINTR
-- This is the subscript for the INTR character in the special control
-- character array. `TERMIOS.c_cc[VINTR]' holds the character itself.
--
-- The INTR (interrupt) character raises a `SIGINT' signal for all
-- processes in the foreground job associated with the terminal. The
-- INTR character itself is then discarded. *Note Signal Handling::,
-- for more information about signals.
--
-- Typically, the INTR character is `C-c'.
--
-- - Macro: int VQUIT
-- This is the subscript for the QUIT character in the special control
-- character array. `TERMIOS.c_cc[VQUIT]' holds the character itself.
--
-- The QUIT character raises a `SIGQUIT' signal for all processes in
-- the foreground job associated with the terminal. The QUIT
-- character itself is then discarded. *Note Signal Handling::, for
-- more information about signals.
--
-- Typically, the QUIT character is `C-\'.
--
-- - Macro: int VSUSP
-- This is the subscript for the SUSP character in the special control
-- character array. `TERMIOS.c_cc[VSUSP]' holds the character itself.
--
-- The SUSP (suspend) character is recognized only if the
-- implementation supports job control (*note Job Control::). It
-- causes a `SIGTSTP' signal to be sent to all processes in the
-- foreground job associated with the terminal. The SUSP character
-- itself is then discarded. *Note Signal Handling::, for more
-- information about signals.
--
-- Typically, the SUSP character is `C-z'.
--
-- Few applications disable the normal interpretation of the SUSP
--character. If your program does this, it should provide some other
--mechanism for the user to stop the job. When the user invokes this
--mechanism, the program should send a `SIGTSTP' signal to the process
--group of the process, not just to the process itself. *Note Signaling
--Another Process::.
--
-- - Macro: int VDSUSP
-- This is the subscript for the DSUSP character in the special
-- control character array. `TERMIOS.c_cc[VDSUSP]' holds the
-- character itself.
--
-- The DSUSP (suspend) character is recognized only if the
-- implementation supports job control (*note Job Control::). It
-- sends a `SIGTSTP' signal, like the SUSP character, but not right
-- away--only when the program tries to read it as input. Not all
-- systems with job control support DSUSP; only BSD-compatible
-- systems (including the GNU system).
--
-- *Note Signal Handling::, for more information about signals.
--
-- Typically, the DSUSP character is `C-y'.
--
--
--File: libc.info, Node: Start/Stop Characters, Next: Other Special, Prev: Signal Characters, Up: Special Characters
--
--Special Characters for Flow Control
--...................................
--
-- These special characters may be active in either canonical or
--noncanonical input mode, but their use is controlled by the flags
--`IXON' and `IXOFF' (*note Input Modes::).
--
-- - Macro: int VSTART
-- This is the subscript for the START character in the special
-- control character array. `TERMIOS.c_cc[VSTART]' holds the
-- character itself.
--
-- The START character is used to support the `IXON' and `IXOFF'
-- input modes. If `IXON' is set, receiving a START character resumes
-- suspended output; the START character itself is discarded. If
-- `IXANY' is set, receiving any character at all resumes suspended
-- output; the resuming character is not discarded unless it is the
-- START character. `IXOFF' is set, the system may also transmit
-- START characters to the terminal.
--
-- The usual value for the START character is `C-q'. You may not be
-- able to change this value--the hardware may insist on using `C-q'
-- regardless of what you specify.
--
-- - Macro: int VSTOP
-- This is the subscript for the STOP character in the special control
-- character array. `TERMIOS.c_cc[VSTOP]' holds the character itself.
--
-- The STOP character is used to support the `IXON' and `IXOFF' input
-- modes. If `IXON' is set, receiving a STOP character causes output
-- to be suspended; the STOP character itself is discarded. If
-- `IXOFF' is set, the system may also transmit STOP characters to the
-- terminal, to prevent the input queue from overflowing.
--
-- The usual value for the STOP character is `C-s'. You may not be
-- able to change this value--the hardware may insist on using `C-s'
-- regardless of what you specify.
--
--
--File: libc.info, Node: Other Special, Prev: Start/Stop Characters, Up: Special Characters
--
--Other Special Characters
--........................
--
-- These special characters exist only in BSD systems and the GNU
--system.
--
-- - Macro: int VLNEXT
-- This is the subscript for the LNEXT character in the special
-- control character array. `TERMIOS.c_cc[VLNEXT]' holds the
-- character itself.
--
-- The LNEXT character is recognized only when `IEXTEN' is set, but in
-- both canonical and noncanonical mode. It disables any special
-- significance of the next character the user types. Even if the
-- character would normally perform some editing function or generate
-- a signal, it is read as a plain character. This is the analogue
-- of the `C-q' command in Emacs. "LNEXT" stands for "literal next."
--
-- The LNEXT character is usually `C-v'.
--
-- - Macro: int VDISCARD
-- This is the subscript for the DISCARD character in the special
-- control character array. `TERMIOS.c_cc[VDISCARD]' holds the
-- character itself.
--
-- The DISCARD character is recognized only when `IEXTEN' is set, but
-- in both canonical and noncanonical mode. Its effect is to toggle
-- the discard-output flag. When this flag is set, all program
-- output is discarded. Setting the flag also discards all output
-- currently in the output buffer. Typing any other character resets
-- the flag.
--
-- - Macro: int VSTATUS
-- This is the subscript for the STATUS character in the special
-- control character array. `TERMIOS.c_cc[VSTATUS]' holds the
-- character itself.
--
-- The STATUS character's effect is to print out a status message
-- about how the current process is running.
--
-- The STATUS character is recognized only in canonical mode, and
-- only if `NOKERNINFO' is not set.
--
--
--File: libc.info, Node: Noncanonical Input, Prev: Special Characters, Up: Terminal Modes
--
--Noncanonical Input
--------------------
--
-- In noncanonical input mode, the special editing characters such as
--ERASE and KILL are ignored. The system facilities for the user to edit
--input are disabled in noncanonical mode, so that all input characters
--(unless they are special for signal or flow-control purposes) are passed
--to the application program exactly as typed. It is up to the
--application program to give the user ways to edit the input, if
--appropriate.
--
-- Noncanonical mode offers special parameters called MIN and TIME for
--controlling whether and how long to wait for input to be available. You
--can even use them to avoid ever waiting--to return immediately with
--whatever input is available, or with no input.
--
-- The MIN and TIME are stored in elements of the `c_cc' array, which
--is a member of the `struct termios' structure. Each element of this
--array has a particular role, and each element has a symbolic constant
--that stands for the index of that element. `VMIN' and `VMAX' are the
--names for the indices in the array of the MIN and TIME slots.
--
-- - Macro: int VMIN
-- This is the subscript for the MIN slot in the `c_cc' array. Thus,
-- `TERMIOS.c_cc[VMIN]' is the value itself.
--
-- The MIN slot is only meaningful in noncanonical input mode; it
-- specifies the minimum number of bytes that must be available in the
-- input queue in order for `read' to return.
--
-- - Macro: int VTIME
-- This is the subscript for the TIME slot in the `c_cc' array. Thus,
-- `TERMIOS.c_cc[VTIME]' is the value itself.
--
-- The TIME slot is only meaningful in noncanonical input mode; it
-- specifies how long to wait for input before returning, in units of
-- 0.1 seconds.
--
-- The MIN and TIME values interact to determine the criterion for when
--`read' should return; their precise meanings depend on which of them
--are nonzero. There are four possible cases:
--
-- * Both TIME and MIN are nonzero.
--
-- In this case, TIME specifies how long to wait after each input
-- character to see if more input arrives. After the first character
-- received, `read' keeps waiting until either MIN bytes have arrived
-- in all, or TIME elapses with no further input.
--
-- `read' always blocks until the first character arrives, even if
-- TIME elapses first. `read' can return more than MIN characters if
-- more than MIN happen to be in the queue.
--
-- * Both MIN and TIME are zero.
--
-- In this case, `read' always returns immediately with as many
-- characters as are available in the queue, up to the number
-- requested. If no input is immediately available, `read' returns a
-- value of zero.
--
-- * MIN is zero but TIME has a nonzero value.
--
-- In this case, `read' waits for time TIME for input to become
-- available; the availability of a single byte is enough to satisfy
-- the read request and cause `read' to return. When it returns, it
-- returns as many characters as are available, up to the number
-- requested. If no input is available before the timer expires,
-- `read' returns a value of zero.
--
-- * TIME is zero but MIN has a nonzero value.
--
-- In this case, `read' waits until at least MIN bytes are available
-- in the queue. At that time, `read' returns as many characters as
-- are available, up to the number requested. `read' can return more
-- than MIN characters if more than MIN happen to be in the queue.
--
-- What happens if MIN is 50 and you ask to read just 10 bytes?
--Normally, `read' waits until there are 50 bytes in the buffer (or, more
--generally, the wait condition described above is satisfied), and then
--reads 10 of them, leaving the other 40 buffered in the operating system
--for a subsequent call to `read'.
--
-- *Portability note:* On some systems, the MIN and TIME slots are
--actually the same as the EOF and EOL slots. This causes no serious
--problem because the MIN and TIME slots are used only in noncanonical
--input and the EOF and EOL slots are used only in canonical input, but it
--isn't very clean. The GNU library allocates separate slots for these
--uses.
--
-- - Function: void cfmakeraw (struct termios *TERMIOS-P)
-- This function provides an easy way to set up `*TERMIOS-P' for what
-- has traditionally been called "raw mode" in BSD. This uses
-- noncanonical input, and turns off most processing to give an
-- unmodified channel to the terminal.
--
-- It does exactly this:
-- TERMIOS-P->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
-- |INLCR|IGNCR|ICRNL|IXON);
-- TERMIOS-P->c_oflag &= ~OPOST;
-- TERMIOS-P->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
-- TERMIOS-P->c_cflag &= ~(CSIZE|PARENB);
-- TERMIOS-P->c_cflag |= CS8;
--
--
--File: libc.info, Node: BSD Terminal Modes, Next: Line Control, Prev: Terminal Modes, Up: Low-Level Terminal Interface
--
--BSD Terminal Modes
--==================
--
-- The usual way to get and set terminal modes is with the functions
--described in *Note Terminal Modes::. However, on some systems you can
--use the BSD-derived functions in this section to do some of the same
--thing. On many systems, these functions do not exist. Even with the
--GNU C library, the functions simply fail with `errno' = `ENOSYS' with
--many kernels, including Linux.
--
-- The symbols used in this section are declared in `sgtty.h'.
--
-- - Data Type: struct sgttyb
-- This structure is an input or output parameter list for `gtty' and
-- `stty'.
--
-- `char sg_ispeed'
-- Line speed for input
--
-- `char sg_ospeed'
-- Line speed for output
--
-- `char sg_erase'
-- Erase character
--
-- `char sg_kill'
-- Kill character
--
-- `int sg_flags'
-- Various flags
--
-- - Function: int gtty (int FILEDES, struct sgttyb *ATTRIBUTES)
-- This function gets the attributes of a terminal.
--
-- `gtty' sets *ATTRIBUTES to describe the terminal attributes of the
-- terminal which is open with file descriptor FILEDES.
--
-- - Function: int stty (int FILEDES, struct sgttyb * attributes)
-- This function sets the attributes of a terminal.
--
-- `stty' sets the terminal attributes of the terminal which is open
-- with file descriptor FILEDES to those described by *FILEDES.
--
--
--File: libc.info, Node: Line Control, Next: Noncanon Example, Prev: BSD Terminal Modes, Up: Low-Level Terminal Interface
--
--Line Control Functions
--======================
--
-- These functions perform miscellaneous control actions on terminal
--devices. As regards terminal access, they are treated like doing
--output: if any of these functions is used by a background process on its
--controlling terminal, normally all processes in the process group are
--sent a `SIGTTOU' signal. The exception is if the calling process
--itself is ignoring or blocking `SIGTTOU' signals, in which case the
--operation is performed and no signal is sent. *Note Job Control::.
--
-- - Function: int tcsendbreak (int FILEDES, int DURATION)
-- This function generates a break condition by transmitting a stream
-- of zero bits on the terminal associated with the file descriptor
-- FILEDES. The duration of the break is controlled by the DURATION
-- argument. If zero, the duration is between 0.25 and 0.5 seconds.
-- The meaning of a nonzero value depends on the operating system.
--
-- This function does nothing if the terminal is not an asynchronous
-- serial data port.
--
-- The return value is normally zero. In the event of an error, a
-- value of -1 is returned. The following `errno' error conditions
-- are defined for this function:
--
-- `EBADF'
-- The FILEDES is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal device.
--
-- - Function: int tcdrain (int FILEDES)
-- The `tcdrain' function waits until all queued output to the
-- terminal FILEDES has been transmitted.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `tcdrain' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `tcdrain' should be protected using cancellation handlers.
--
-- The return value is normally zero. In the event of an error, a
-- value of -1 is returned. The following `errno' error conditions
-- are defined for this function:
--
-- `EBADF'
-- The FILEDES is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal device.
--
-- `EINTR'
-- The operation was interrupted by delivery of a signal. *Note
-- Interrupted Primitives::.
--
-- - Function: int tcflush (int FILEDES, int QUEUE)
-- The `tcflush' function is used to clear the input and/or output
-- queues associated with the terminal file FILEDES. The QUEUE
-- argument specifies which queue(s) to clear, and can be one of the
-- following values:
--
-- `TCIFLUSH'
-- Clear any input data received, but not yet read.
--
-- `TCOFLUSH'
-- Clear any output data written, but not yet transmitted.
--
-- `TCIOFLUSH'
-- Clear both queued input and output.
--
-- The return value is normally zero. In the event of an error, a
-- value of -1 is returned. The following `errno' error conditions
-- are defined for this function:
--
-- `EBADF'
-- The FILEDES is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal device.
--
-- `EINVAL'
-- A bad value was supplied as the QUEUE argument.
--
-- It is unfortunate that this function is named `tcflush', because
-- the term "flush" is normally used for quite another
-- operation--waiting until all output is transmitted--and using it
-- for discarding input or output would be confusing. Unfortunately,
-- the name `tcflush' comes from POSIX and we cannot change it.
--
-- - Function: int tcflow (int FILEDES, int ACTION)
-- The `tcflow' function is used to perform operations relating to
-- XON/XOFF flow control on the terminal file specified by FILEDES.
--
-- The ACTION argument specifies what operation to perform, and can
-- be one of the following values:
--
-- `TCOOFF'
-- Suspend transmission of output.
--
-- `TCOON'
-- Restart transmission of output.
--
-- `TCIOFF'
-- Transmit a STOP character.
--
-- `TCION'
-- Transmit a START character.
--
-- For more information about the STOP and START characters, see
-- *Note Special Characters::.
--
-- The return value is normally zero. In the event of an error, a
-- value of -1 is returned. The following `errno' error conditions
-- are defined for this function:
--
-- `EBADF'
-- The FILEDES is not a valid file descriptor.
--
-- `ENOTTY'
-- The FILEDES is not associated with a terminal device.
--
-- `EINVAL'
-- A bad value was supplied as the ACTION argument.
--
--
--File: libc.info, Node: Noncanon Example, Next: Pseudo-Terminals, Prev: Line Control, Up: Low-Level Terminal Interface
--
--Noncanonical Mode Example
--=========================
--
-- Here is an example program that shows how you can set up a terminal
--device to read single characters in noncanonical input mode, without
--echo.
--
-- #include <unistd.h>
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <termios.h>
--
-- /* Use this variable to remember original terminal attributes. */
--
-- struct termios saved_attributes;
--
-- void
-- reset_input_mode (void)
-- {
-- tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
-- }
--
-- void
-- set_input_mode (void)
-- {
-- struct termios tattr;
-- char *name;
--
-- /* Make sure stdin is a terminal. */
-- if (!isatty (STDIN_FILENO))
-- {
-- fprintf (stderr, "Not a terminal.\n");
-- exit (EXIT_FAILURE);
-- }
--
-- /* Save the terminal attributes so we can restore them later. */
-- tcgetattr (STDIN_FILENO, &saved_attributes);
-- atexit (reset_input_mode);
--
-- /* Set the funny terminal modes. */
-- tcgetattr (STDIN_FILENO, &tattr);
-- tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
-- tattr.c_cc[VMIN] = 1;
-- tattr.c_cc[VTIME] = 0;
-- tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
-- }
--
-- int
-- main (void)
-- {
-- char c;
--
-- set_input_mode ();
--
-- while (1)
-- {
-- read (STDIN_FILENO, &c, 1);
-- if (c == '\004') /* `C-d' */
-- break;
-- else
-- putchar (c);
-- }
--
-- return EXIT_SUCCESS;
-- }
--
-- This program is careful to restore the original terminal modes before
--exiting or terminating with a signal. It uses the `atexit' function
--(*note Cleanups on Exit::) to make sure this is done by `exit'.
--
-- The shell is supposed to take care of resetting the terminal modes
--when a process is stopped or continued; see *Note Job Control::. But
--some existing shells do not actually do this, so you may wish to
--establish handlers for job control signals that reset terminal modes.
--The above example does so.
--
--
--File: libc.info, Node: Pseudo-Terminals, Prev: Noncanon Example, Up: Low-Level Terminal Interface
--
--Pseudo-Terminals
--================
--
-- A "pseudo-terminal" is a special interprocess communication channel
--that acts like a terminal. One end of the channel is called the
--"master" side or "master pseudo-terminal device", the other side is
--called the "slave" side. Data written to the master side is received
--by the slave side as if it was the result of a user typing at an
--ordinary terminal, and data written to the slave side is sent to the
--master side as if it was written on an ordinary terminal.
--
-- Pseudo terminals are the way programs like `xterm' and `emacs'
--implement their terminal emulation functionality.
--
--* Menu:
--
--* Allocation:: Allocating a pseudo terminal.
--* Pseudo-Terminal Pairs:: How to open both sides of a
-- pseudo-terminal in a single operation.
--
--
--File: libc.info, Node: Allocation, Next: Pseudo-Terminal Pairs, Up: Pseudo-Terminals
--
--Allocating Pseudo-Terminals
-----------------------------
--
-- This subsection describes functions for allocating a pseudo-terminal,
--and for making this pseudo-terminal available for actual use. These
--functions are declared in the header file `stdlib.h'.
--
-- - Function: int getpt (void)
-- The `getpt' function returns a new file descriptor for the next
-- available master pseudo-terminal. The normal return value from
-- `getpt' is a non-negative integer file descriptor. In the case of
-- an error, a value of -1 is returned instead. The following
-- `errno' conditions are defined for this function:
--
-- `ENOENT'
-- There are no free master pseudo-terminals available.
--
-- This function is a GNU extension.
--
-- - Function: int grantpt (int FILEDES)
-- The `grantpt' function changes the ownership and access permission
-- of the slave pseudo-terminal device corresponding to the master
-- pseudo-terminal device associated with the file descriptor
-- FILEDES. The owner is set from the real user ID of the calling
-- process (*note Process Persona::), and the group is set to a
-- special group (typically "tty") or from the real group ID of the
-- calling process. The access permission is set such that the file
-- is both readable and writable by the owner and only writable by
-- the group.
--
-- On some systems this function is implemented by invoking a special
-- `setuid' root program (*note How Change Persona::). As a
-- consequence, installing a signal handler for the `SIGCHLD' signal
-- (*note Job Control Signals::) may interfere with a call to
-- `grantpt'.
--
-- The normal return value from `grantpt' is 0; a value of -1 is
-- returned in case of failure. The following `errno' error
-- conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The FILEDES argument is not associated with a master
-- pseudo-terminal device.
--
-- `EACCES'
-- The slave pseudo-terminal device corresponding to the master
-- associated with FILEDES could not be accessed.
--
--
-- - Function: int unlockpt (int FILEDES)
-- The `unlockpt' function unlocks the slave pseudo-terminal device
-- corresponding to the master pseudo-terminal device associated with
-- the file descriptor FILEDES. On many systems, the slave can only
-- be opened after unlocking, so portable applications should always
-- call `unlockpt' before trying to open the slave.
--
-- The normal return value from `unlockpt' is 0; a value of -1 is
-- returned in case of failure. The following `errno' error
-- conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The FILEDES argument is not associated with a master
-- pseudo-terminal device.
--
-- - Function: char * ptsname (int FILEDES)
-- If the file descriptor FILEDES is associated with a master
-- pseudo-terminal device, the `ptsname' function returns a pointer
-- to a statically-allocated, null-terminated string containing the
-- file name of the associated slave pseudo-terminal file. This
-- string might be overwritten by subsequent calls to `ptsname'.
--
-- - Function: int ptsname_r (int FILEDES, char *BUF, size_t LEN)
-- The `ptsname_r' function is similar to the `ptsname' function
-- except that it places its result into the user-specified buffer
-- starting at BUF with length LEN.
--
-- This function is a GNU extension.
--
-- *Portability Note:* On System V derived systems, the file returned
--by the `ptsname' and `ptsname_r' functions may be STREAMS-based, and
--therefore require additional processing after opening before it
--actually behaves as a pseudo terminal.
--
-- Typical usage of these functions is illustrated by the following
--example:
-- int
-- open_pty_pair (int *amaster, int *aslave)
-- {
-- int master, slave;
-- char *name;
--
-- master = getpt ();
-- if (master < 0)
-- return 0;
--
-- if (grantpt (master) < 0 || unlockpt (master) < 0)
-- goto close_master;
-- name = ptsname (master);
-- if (name == NULL)
-- goto close_master;
--
-- slave = open (name, O_RDWR);
-- if (slave == -1)
-- goto close_master;
--
-- if (isastream (slave))
-- {
-- if (ioctl (slave, I_PUSH, "ptem") < 0
-- || ioctl (slave, I_PUSH, "ldterm") < 0)
-- goto close_slave;
-- }
--
-- *amaster = master;
-- *aslave = slave;
-- return 1;
--
-- close_slave:
-- close (slave);
--
-- close_master:
-- close (master);
-- return 0;
-- }
--
--
--File: libc.info, Node: Pseudo-Terminal Pairs, Prev: Allocation, Up: Pseudo-Terminals
--
--Opening a Pseudo-Terminal Pair
--------------------------------
--
-- These functions, derived from BSD, are available in the separate
--`libutil' library, and declared in `pty.h'.
--
-- - Function: int openpty (int *AMASTER, int *ASLAVE, char *NAME, struct
-- termios *TERMP, struct winsize *WINP)
-- This function allocates and opens a pseudo-terminal pair,
-- returning the file descriptor for the master in *AMASTER, and the
-- file descriptor for the slave in *ASLAVE. If the argument NAME is
-- not a null pointer, the file name of the slave pseudo-terminal
-- device is stored in `*name'. If TERMP is not a null pointer, the
-- terminal attributes of the slave are set to the ones specified in
-- the structure that TERMP points to (*note Terminal Modes::).
-- Likewise, if the WINP is not a null pointer, the screen size of
-- the slave is set to the values specified in the structure that
-- WINP points to.
--
-- The normal return value from `openpty' is 0; a value of -1 is
-- returned in case of failure. The following `errno' conditions are
-- defined for this function:
--
-- `ENOENT'
-- There are no free pseudo-terminal pairs available.
--
-- *Warning:* Using the `openpty' function with NAME not set to
-- `NULL' is *very dangerous* because it provides no protection
-- against overflowing the string NAME. You should use the `ttyname'
-- function on the file descriptor returned in *SLAVE to find out the
-- file name of the slave pseudo-terminal device instead.
--
-- - Function: int forkpty (int *AMASTER, char *NAME, struct termios
-- *TERMP, struct winsize *WINP)
-- This function is similar to the `openpty' function, but in
-- addition, forks a new process (*note Creating a Process::) and
-- makes the newly opened slave pseudo-terminal device the
-- controlling terminal (*note Controlling Terminal::) for the child
-- process.
--
-- If the operation is successful, there are then both parent and
-- child processes and both see `forkpty' return, but with different
-- values: it returns a value of 0 in the child process and returns
-- the child's process ID in the parent process.
--
-- If the allocation of a pseudo-terminal pair or the process creation
-- failed, `forkpty' returns a value of -1 in the parent process.
--
-- *Warning:* The `forkpty' function has the same problems with
-- respect to the NAME argument as `openpty'.
--
--
--File: libc.info, Node: Syslog, Next: Mathematics, Prev: Low-Level Terminal Interface, Up: Top
--
--Syslog
--******
--
-- This chapter describes facilities for issuing and logging messages of
--system administration interest. This chapter has nothing to do with
--programs issuing messages to their own users or keeping private logs
--(One would typically do that with the facilities described in *Note I/O
--on Streams::).
--
-- Most systems have a facility called "Syslog" that allows programs to
--submit messages of interest to system administrators and can be
--configured to pass these messages on in various ways, such as printing
--on the console, mailing to a particular person, or recording in a log
--file for future reference.
--
-- A program uses the facilities in this chapter to submit such
--messages.
--
--* Menu:
--
--* Overview of Syslog:: Overview of a system's Syslog facility
--* Submitting Syslog Messages:: Functions to submit messages to Syslog
--
--
--File: libc.info, Node: Overview of Syslog, Next: Submitting Syslog Messages, Up: Syslog
--
--Overview of Syslog
--==================
--
-- System administrators have to deal with lots of different kinds of
--messages from a plethora of subsystems within each system, and usually
--lots of systems as well. For example, an FTP server might report every
--connection it gets. The kernel might report hardware failures on a disk
--drive. A DNS server might report usage statistics at regular intervals.
--
-- Some of these messages need to be brought to a system administrator's
--attention immediately. And it may not be just any system administrator
--- there may be a particular system administrator who deals with a
--particular kind of message. Other messages just need to be recorded for
--future reference if there is a problem. Still others may need to have
--information extracted from them by an automated process that generates
--monthly reports.
--
-- To deal with these messages, most Unix systems have a facility called
--"Syslog." It is generally based on a daemon called "Syslogd" Syslogd
--listens for messages on a Unix domain socket named `/dev/log'. Based
--on classification information in the messages and its configuration
--file (usually `/etc/syslog.conf'), Syslogd routes them in various ways.
--Some of the popular routings are:
--
-- * Write to the system console
--
-- * Mail to a specific user
--
-- * Write to a log file
--
-- * Pass to another daemon
--
-- * Discard
--
-- Syslogd can also handle messages from other systems. It listens on
--the `syslog' UDP port as well as the local socket for messages.
--
-- Syslog can handle messages from the kernel itself. But the kernel
--doesn't write to `/dev/log'; rather, another daemon (sometimes called
--"Klogd") extracts messages from the kernel and passes them on to Syslog
--as any other process would (and it properly identifies them as messages
--from the kernel).
--
-- Syslog can even handle messages that the kernel issued before
--Syslogd or Klogd was running. A Linux kernel, for example, stores
--startup messages in a kernel message ring and they are normally still
--there when Klogd later starts up. Assuming Syslogd is running by the
--time Klogd starts, Klogd then passes everything in the message ring to
--it.
--
-- In order to classify messages for disposition, Syslog requires any
--process that submits a message to it to provide two pieces of
--classification information with it:
--
--facility
-- This identifies who submitted the message. There are a small
-- number of facilities defined. The kernel, the mail subsystem, and
-- an FTP server are examples of recognized facilities. For the
-- complete list, *Note syslog; vsyslog::. Keep in mind that these
-- are essentially arbitrary classifications. "Mail subsystem"
-- doesn't have any more meaning than the system administrator gives
-- to it.
--
--priority
-- This tells how important the content of the message is. Examples
-- of defined priority values are: debug, informational, warning,
-- critical. For the complete list, *Note syslog; vsyslog::. Except
-- for the fact that the priorities have a defined order, the meaning
-- of each of these priorities is entirely determined by the system
-- administrator.
--
-- A "facility/priority" is a number that indicates both the facility
--and the priority.
--
-- *Warning:* This terminology is not universal. Some people use
--"level" to refer to the priority and "priority" to refer to the
--combination of facility and priority. A Linux kernel has a concept of a
--message "level," which corresponds both to a Syslog priority and to a
--Syslog facility/priority (It can be both because the facility code for
--the kernel is zero, and that makes priority and facility/priority the
--same value).
--
-- The GNU C library provides functions to submit messages to Syslog.
--They do it by writing to the `/dev/log' socket. *Note Submitting
--Syslog Messages::.
--
-- The GNU C library functions only work to submit messages to the
--Syslog facility on the same system. To submit a message to the Syslog
--facility on another system, use the socket I/O functions to write a UDP
--datagram to the `syslog' UDP port on that system. *Note Sockets::.
--
--
--File: libc.info, Node: Submitting Syslog Messages, Prev: Overview of Syslog, Up: Syslog
--
--Submitting Syslog Messages
--==========================
--
-- The GNU C library provides functions to submit messages to the Syslog
--facility:
--
--* Menu:
--
--* openlog:: Open connection to Syslog
--* syslog; vsyslog:: Submit message to Syslog
--* closelog:: Close connection to Syslog
--* setlogmask:: Cause certain messages to be ignored
--* Syslog Example:: Example of all of the above
--
-- These functions only work to submit messages to the Syslog facility
--on the same system. To submit a message to the Syslog facility on
--another system, use the socket I/O functions to write a UDP datagram to
--the `syslog' UDP port on that system. *Note Sockets::.
--
--
--File: libc.info, Node: openlog, Next: syslog; vsyslog, Up: Submitting Syslog Messages
--
--openlog
---------
--
-- The symbols referred to in this section are declared in the file
--`syslog.h'.
--
-- - Function: void openlog (const char *IDENT, int OPTION, int FACILITY)
-- `openlog' opens or reopens a connection to Syslog in preparation
-- for submitting messages.
--
-- IDENT is an arbitrary identification string which future `syslog'
-- invocations will prefix to each message. This is intended to
-- identify the source of the message, and people conventionally set
-- it to the name of the program that will submit the messages.
--
-- If IDENT is NULL, or if `openlog' is not called, the default
-- identification string used in Syslog messages will be the program
-- name, taken from argv[0].
--
-- Please note that the string pointer IDENT will be retained
-- internally by the Syslog routines. You must not free the memory
-- that IDENT points to. It is also dangerous to pass a reference to
-- an automatic variable since leaving the scope would mean ending the
-- lifetime of the variable. If you want to change the IDENT string,
-- you must call `openlog' again; overwriting the string pointed to by
-- IDENT is not thread-safe.
--
-- You can cause the Syslog routines to drop the reference to IDENT
-- and go back to the default string (the program name taken from
-- argv[0]), by calling `closelog': *Note closelog::.
--
-- In particular, if you are writing code for a shared library that
-- might get loaded and then unloaded (e.g. a PAM module), and you
-- use `openlog', you must call `closelog' before any point where
-- your library might get unloaded, as in this example:
--
-- #include <syslog.h>
--
-- void
-- shared_library_function (void)
-- {
-- openlog ("mylibrary", option, priority);
--
-- syslog (LOG_INFO, "shared library has been invoked");
--
-- closelog ();
-- }
--
-- Without the call to `closelog', future invocations of `syslog' by
-- the program using the shared library may crash, if the library gets
-- unloaded and the memory containing the string `"mylibrary"' becomes
-- unmapped. This is a limitation of the BSD syslog interface.
--
-- `openlog' may or may not open the `/dev/log' socket, depending on
-- OPTION. If it does, it tries to open it and connect it as a
-- stream socket. If that doesn't work, it tries to open it and
-- connect it as a datagram socket. The socket has the "Close on
-- Exec" attribute, so the kernel will close it if the process
-- performs an exec.
--
-- You don't have to use `openlog'. If you call `syslog' without
-- having called `openlog', `syslog' just opens the connection
-- implicitly and uses defaults for the information in IDENT and
-- OPTIONS.
--
-- OPTIONS is a bit string, with the bits as defined by the following
-- single bit masks:
--
-- `LOG_PERROR'
-- If on, `openlog' sets up the connection so that any `syslog'
-- on this connection writes its message to the calling process'
-- Standard Error stream in addition to submitting it to Syslog.
-- If off, `syslog' does not write the message to Standard
-- Error.
--
-- `LOG_CONS'
-- If on, `openlog' sets up the connection so that a `syslog' on
-- this connection that fails to submit a message to Syslog
-- writes the message instead to system console. If off,
-- `syslog' does not write to the system console (but of course
-- Syslog may write messages it receives to the console).
--
-- `LOG_PID'
-- When on, `openlog' sets up the connection so that a `syslog'
-- on this connection inserts the calling process' Process ID
-- (PID) into the message. When off, `openlog' does not insert
-- the PID.
--
-- `LOG_NDELAY'
-- When on, `openlog' opens and connects the `/dev/log' socket.
-- When off, a future `syslog' call must open and connect the
-- socket.
--
-- *Portability note:* In early systems, the sense of this bit
-- was exactly the opposite.
--
-- `LOG_ODELAY'
-- This bit does nothing. It exists for backward compatibility.
--
-- If any other bit in OPTIONS is on, the result is undefined.
--
-- FACILITY is the default facility code for this connection. A
-- `syslog' on this connection that specifies default facility causes
-- this facility to be associated with the message. See `syslog' for
-- possible values. A value of zero means the default default, which
-- is `LOG_USER'.
--
-- If a Syslog connection is already open when you call `openlog',
-- `openlog' "reopens" the connection. Reopening is like opening
-- except that if you specify zero for the default facility code, the
-- default facility code simply remains unchanged and if you specify
-- LOG_NDELAY and the socket is already open and connected, `openlog'
-- just leaves it that way.
--
--
--
--File: libc.info, Node: syslog; vsyslog, Next: closelog, Prev: openlog, Up: Submitting Syslog Messages
--
--syslog, vsyslog
-----------------
--
-- The symbols referred to in this section are declared in the file
--`syslog.h'.
--
-- - Function: void syslog (int FACILITY_PRIORITY, char *FORMAT, ...)
-- `syslog' submits a message to the Syslog facility. It does this by
-- writing to the Unix domain socket `/dev/log'.
--
-- `syslog' submits the message with the facility and priority
-- indicated by FACILITY_PRIORITY. The macro `LOG_MAKEPRI' generates
-- a facility/priority from a facility and a priority, as in the
-- following example:
--
-- LOG_MAKEPRI(LOG_USER, LOG_WARNING)
--
-- The possible values for the facility code are (macros):
--
-- `LOG_USER'
-- A miscellaneous user process
--
-- `LOG_MAIL'
-- Mail
--
-- `LOG_DAEMON'
-- A miscellaneous system daemon
--
-- `LOG_AUTH'
-- Security (authorization)
--
-- `LOG_SYSLOG'
-- Syslog
--
-- `LOG_LPR'
-- Central printer
--
-- `LOG_NEWS'
-- Network news (e.g. Usenet)
--
-- `LOG_UUCP'
-- UUCP
--
-- `LOG_CRON'
-- Cron and At
--
-- `LOG_AUTHPRIV'
-- Private security (authorization)
--
-- `LOG_FTP'
-- Ftp server
--
-- `LOG_LOCAL0'
-- Locally defined
--
-- `LOG_LOCAL1'
-- Locally defined
--
-- `LOG_LOCAL2'
-- Locally defined
--
-- `LOG_LOCAL3'
-- Locally defined
--
-- `LOG_LOCAL4'
-- Locally defined
--
-- `LOG_LOCAL5'
-- Locally defined
--
-- `LOG_LOCAL6'
-- Locally defined
--
-- `LOG_LOCAL7'
-- Locally defined
--
-- Results are undefined if the facility code is anything else.
--
-- *note:* `syslog' recognizes one other facility code: that of the
-- kernel. But you can't specify that facility code with these
-- functions. If you try, it looks the same to `syslog' as if you are
-- requesting the default facility. But you wouldn't want to anyway,
-- because any program that uses the GNU C library is not the kernel.
--
-- You can use just a priority code as FACILITY_PRIORITY. In that
-- case, `syslog' assumes the default facility established when the
-- Syslog connection was opened. *Note Syslog Example::.
--
-- The possible values for the priority code are (macros):
--
-- `LOG_EMERG'
-- The message says the system is unusable.
--
-- `LOG_ALERT'
-- Action on the message must be taken immediately.
--
-- `LOG_CRIT'
-- The message states a critical condition.
--
-- `LOG_ERR'
-- The message describes an error.
--
-- `LOG_WARNING'
-- The message is a warning.
--
-- `LOG_NOTICE'
-- The message describes a normal but important event.
--
-- `LOG_INFO'
-- The message is purely informational.
--
-- `LOG_DEBUG'
-- The message is only for debugging purposes.
--
-- Results are undefined if the priority code is anything else.
--
-- If the process does not presently have a Syslog connection open
-- (i.e. it did not call `openlog'), `syslog' implicitly opens the
-- connection the same as `openlog' would, with the following defaults
-- for information that would otherwise be included in an `openlog'
-- call: The default identification string is the program name. The
-- default default facility is `LOG_USER'. The default for all the
-- connection options in OPTIONS is as if those bits were off.
-- `syslog' leaves the Syslog connection open.
--
-- If the `dev/log' socket is not open and connected, `syslog' opens
-- and connects it, the same as `openlog' with the `LOG_NDELAY'
-- option would.
--
-- `syslog' leaves `/dev/log' open and connected unless its attempt
-- to send the message failed, in which case `syslog' closes it (with
-- the hope that a future implicit open will restore the Syslog
-- connection to a usable state).
--
-- Example:
--
--
-- #include <syslog.h>
-- syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
-- "Unable to make network connection to %s. Error=%m", host);
--
--
-- - Function: void vsyslog (int FACILITY_PRIORITY, char *FORMAT, va_list
-- arglist)
-- This is functionally identical to `syslog', with the BSD style
-- variable length argument.
--
--
--
--File: libc.info, Node: closelog, Next: setlogmask, Prev: syslog; vsyslog, Up: Submitting Syslog Messages
--
--closelog
----------
--
-- The symbols referred to in this section are declared in the file
--`syslog.h'.
--
-- - Function: void closelog (void)
-- `closelog' closes the current Syslog connection, if there is one.
-- This includes closing the `dev/log' socket, if it is open.
-- `closelog' also sets the identification string for Syslog messages
-- back to the default, if `openlog' was called with a non-NULL
-- argument to IDENT. The default identification string is the
-- program name taken from argv[0].
--
-- If you are writing shared library code that uses `openlog' to
-- generate custom syslog output, you should use `closelog' to drop
-- the GNU C library's internal reference to the IDENT pointer when
-- you are done. Please read the section on `openlog' for more
-- information: *Note openlog::.
--
-- `closelog' does not flush any buffers. You do not have to call
-- `closelog' before re-opening a Syslog connection with `initlog'.
-- Syslog connections are automatically closed on exec or exit.
--
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-31 glibc-2.3.2-200304020432/manual/libc.info-31
---- glibc-2.3.2/manual/libc.info-31 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-31 Thu Jan 1 01:00:00 1970
-@@ -1,799 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: setlogmask, Next: Syslog Example, Prev: closelog, Up: Submitting Syslog Messages
--
--setlogmask
------------
--
-- The symbols referred to in this section are declared in the file
--`syslog.h'.
--
-- - Function: int setlogmask (int MASK)
-- `setlogmask' sets a mask (the "logmask") that determines which
-- future `syslog' calls shall be ignored. If a program has not
-- called `setlogmask', `syslog' doesn't ignore any calls. You can
-- use `setlogmask' to specify that messages of particular priorities
-- shall be ignored in the future.
--
-- A `setlogmask' call overrides any previous `setlogmask' call.
--
-- Note that the logmask exists entirely independently of opening and
-- closing of Syslog connections.
--
-- Setting the logmask has a similar effect to, but is not the same
-- as, configuring Syslog. The Syslog configuration may cause Syslog
-- to discard certain messages it receives, but the logmask causes
-- certain messages never to get submitted to Syslog in the first
-- place.
--
-- MASK is a bit string with one bit corresponding to each of the
-- possible message priorities. If the bit is on, `syslog' handles
-- messages of that priority normally. If it is off, `syslog'
-- discards messages of that priority. Use the message priority
-- macros described in *Note syslog; vsyslog:: and the `LOG_MASK' to
-- construct an appropriate MASK value, as in this example:
--
-- LOG_MASK(LOG_EMERG) | LOG_MASK(LOG_ERROR)
--
-- or
--
-- ~(LOG_MASK(LOG_INFO))
--
-- There is also a `LOG_UPTO' macro, which generates a mask with the
-- bits on for a certain priority and all priorities above it:
--
-- LOG_UPTO(LOG_ERROR)
--
-- The unfortunate naming of the macro is due to the fact that
-- internally, higher numbers are used for lower message priorities.
--
--
--
--File: libc.info, Node: Syslog Example, Prev: setlogmask, Up: Submitting Syslog Messages
--
--Syslog Example
----------------
--
-- Here is an example of `openlog', `syslog', and `closelog':
--
-- This example sets the logmask so that debug and informational
--messages get discarded without ever reaching Syslog. So the second
--`syslog' in the example does nothing.
--
-- #include <syslog.h>
--
-- setlogmask (LOG_UPTO (LOG_NOTICE));
--
-- openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
--
-- syslog (LOG_NOTICE, "Program started by User %d", getuid ());
-- syslog (LOG_INFO, "A tree falls in a forest");
--
-- closelog ();
--
--
--File: libc.info, Node: Mathematics, Next: Arithmetic, Prev: Syslog, Up: Top
--
--Mathematics
--***********
--
-- This chapter contains information about functions for performing
--mathematical computations, such as trigonometric functions. Most of
--these functions have prototypes declared in the header file `math.h'.
--The complex-valued functions are defined in `complex.h'.
--
-- All mathematical functions which take a floating-point argument have
--three variants, one each for `double', `float', and `long double'
--arguments. The `double' versions are mostly defined in ISO C89. The
--`float' and `long double' versions are from the numeric extensions to C
--included in ISO C99.
--
-- Which of the three versions of a function should be used depends on
--the situation. For most calculations, the `float' functions are the
--fastest. On the other hand, the `long double' functions have the
--highest precision. `double' is somewhere in between. It is usually
--wise to pick the narrowest type that can accommodate your data. Not
--all machines have a distinct `long double' type; it may be the same as
--`double'.
--
--* Menu:
--
--* Mathematical Constants:: Precise numeric values for often-used
-- constants.
--* Trig Functions:: Sine, cosine, tangent, and friends.
--* Inverse Trig Functions:: Arcsine, arccosine, etc.
--* Exponents and Logarithms:: Also pow and sqrt.
--* Hyperbolic Functions:: sinh, cosh, tanh, etc.
--* Special Functions:: Bessel, gamma, erf.
--* Errors in Math Functions:: Known Maximum Errors in Math Functions.
--* Pseudo-Random Numbers:: Functions for generating pseudo-random
-- numbers.
--* FP Function Optimizations:: Fast code or small code.
--
--
--File: libc.info, Node: Mathematical Constants, Next: Trig Functions, Up: Mathematics
--
--Predefined Mathematical Constants
--=================================
--
-- The header `math.h' defines several useful mathematical constants.
--All values are defined as preprocessor macros starting with `M_'. The
--values provided are:
--
--`M_E'
-- The base of natural logarithms.
--
--`M_LOG2E'
-- The logarithm to base `2' of `M_E'.
--
--`M_LOG10E'
-- The logarithm to base `10' of `M_E'.
--
--`M_LN2'
-- The natural logarithm of `2'.
--
--`M_LN10'
-- The natural logarithm of `10'.
--
--`M_PI'
-- Pi, the ratio of a circle's circumference to its diameter.
--
--`M_PI_2'
-- Pi divided by two.
--
--`M_PI_4'
-- Pi divided by four.
--
--`M_1_PI'
-- The reciprocal of pi (1/pi)
--
--`M_2_PI'
-- Two times the reciprocal of pi.
--
--`M_2_SQRTPI'
-- Two times the reciprocal of the square root of pi.
--
--`M_SQRT2'
-- The square root of two.
--
--`M_SQRT1_2'
-- The reciprocal of the square root of two (also the square root of
-- 1/2).
--
-- These constants come from the Unix98 standard and were also
--available in 4.4BSD; therefore they are only defined if `_BSD_SOURCE' or
--`_XOPEN_SOURCE=500', or a more general feature select macro, is
--defined. The default set of features includes these constants. *Note
--Feature Test Macros::.
--
-- All values are of type `double'. As an extension, the GNU C library
--also defines these constants with type `long double'. The `long
--double' macros have a lowercase `l' appended to their names: `M_El',
--`M_PIl', and so forth. These are only available if `_GNU_SOURCE' is
--defined.
--
-- _Note:_ Some programs use a constant named `PI' which has the same
--value as `M_PI'. This constant is not standard; it may have appeared
--in some old AT&T headers, and is mentioned in Stroustrup's book on C++.
--It infringes on the user's name space, so the GNU C library does not
--define it. Fixing programs written to expect it is simple: replace
--`PI' with `M_PI' throughout, or put `-DPI=M_PI' on the compiler command
--line.
--
--
--File: libc.info, Node: Trig Functions, Next: Inverse Trig Functions, Prev: Mathematical Constants, Up: Mathematics
--
--Trigonometric Functions
--=======================
--
-- These are the familiar `sin', `cos', and `tan' functions. The
--arguments to all of these functions are in units of radians; recall
--that pi radians equals 180 degrees.
--
-- The math library normally defines `M_PI' to a `double' approximation
--of pi. If strict ISO and/or POSIX compliance are requested this
--constant is not defined, but you can easily define it yourself:
--
-- #define M_PI 3.14159265358979323846264338327
--
--You can also compute the value of pi with the expression `acos (-1.0)'.
--
-- - Function: double sin (double X)
-- - Function: float sinf (float X)
-- - Function: long double sinl (long double X)
-- These functions return the sine of X, where X is given in radians.
-- The return value is in the range `-1' to `1'.
--
-- - Function: double cos (double X)
-- - Function: float cosf (float X)
-- - Function: long double cosl (long double X)
-- These functions return the cosine of X, where X is given in
-- radians. The return value is in the range `-1' to `1'.
--
-- - Function: double tan (double X)
-- - Function: float tanf (float X)
-- - Function: long double tanl (long double X)
-- These functions return the tangent of X, where X is given in
-- radians.
--
-- Mathematically, the tangent function has singularities at odd
-- multiples of pi/2. If the argument X is too close to one of these
-- singularities, `tan' will signal overflow.
--
-- In many applications where `sin' and `cos' are used, the sine and
--cosine of the same angle are needed at the same time. It is more
--efficient to compute them simultaneously, so the library provides a
--function to do that.
--
-- - Function: void sincos (double X, double *SINX, double *COSX)
-- - Function: void sincosf (float X, float *SINX, float *COSX)
-- - Function: void sincosl (long double X, long double *SINX, long
-- double *COSX)
-- These functions return the sine of X in `*SINX' and the cosine of
-- X in `*COS', where X is given in radians. Both values, `*SINX'
-- and `*COSX', are in the range of `-1' to `1'.
--
-- This function is a GNU extension. Portable programs should be
-- prepared to cope with its absence.
--
-- ISO C99 defines variants of the trig functions which work on complex
--numbers. The GNU C library provides these functions, but they are only
--useful if your compiler supports the new complex types defined by the
--standard. (As of this writing GCC supports complex numbers, but there
--are bugs in the implementation.)
--
-- - Function: complex double csin (complex double Z)
-- - Function: complex float csinf (complex float Z)
-- - Function: complex long double csinl (complex long double Z)
-- These functions return the complex sine of Z. The mathematical
-- definition of the complex sine is
--
-- sin (z) = 1/(2*i) * (exp (z*i) - exp (-z*i)).
--
-- - Function: complex double ccos (complex double Z)
-- - Function: complex float ccosf (complex float Z)
-- - Function: complex long double ccosl (complex long double Z)
-- These functions return the complex cosine of Z. The mathematical
-- definition of the complex cosine is
--
-- cos (z) = 1/2 * (exp (z*i) + exp (-z*i))
--
-- - Function: complex double ctan (complex double Z)
-- - Function: complex float ctanf (complex float Z)
-- - Function: complex long double ctanl (complex long double Z)
-- These functions return the complex tangent of Z. The mathematical
-- definition of the complex tangent is
--
-- tan (z) = -i * (exp (z*i) - exp (-z*i)) / (exp (z*i) + exp (-z*i))
--
-- The complex tangent has poles at pi/2 + 2n, where n is an integer.
-- `ctan' may signal overflow if Z is too close to a pole.
--
--
--File: libc.info, Node: Inverse Trig Functions, Next: Exponents and Logarithms, Prev: Trig Functions, Up: Mathematics
--
--Inverse Trigonometric Functions
--===============================
--
-- These are the usual arc sine, arc cosine and arc tangent functions,
--which are the inverses of the sine, cosine and tangent functions
--respectively.
--
-- - Function: double asin (double X)
-- - Function: float asinf (float X)
-- - Function: long double asinl (long double X)
-- These functions compute the arc sine of X--that is, the value whose
-- sine is X. The value is in units of radians. Mathematically,
-- there are infinitely many such values; the one actually returned
-- is the one between `-pi/2' and `pi/2' (inclusive).
--
-- The arc sine function is defined mathematically only over the
-- domain `-1' to `1'. If X is outside the domain, `asin' signals a
-- domain error.
--
-- - Function: double acos (double X)
-- - Function: float acosf (float X)
-- - Function: long double acosl (long double X)
-- These functions compute the arc cosine of X--that is, the value
-- whose cosine is X. The value is in units of radians.
-- Mathematically, there are infinitely many such values; the one
-- actually returned is the one between `0' and `pi' (inclusive).
--
-- The arc cosine function is defined mathematically only over the
-- domain `-1' to `1'. If X is outside the domain, `acos' signals a
-- domain error.
--
-- - Function: double atan (double X)
-- - Function: float atanf (float X)
-- - Function: long double atanl (long double X)
-- These functions compute the arc tangent of X--that is, the value
-- whose tangent is X. The value is in units of radians.
-- Mathematically, there are infinitely many such values; the one
-- actually returned is the one between `-pi/2' and `pi/2'
-- (inclusive).
--
-- - Function: double atan2 (double Y, double X)
-- - Function: float atan2f (float Y, float X)
-- - Function: long double atan2l (long double Y, long double X)
-- This function computes the arc tangent of Y/X, but the signs of
-- both arguments are used to determine the quadrant of the result,
-- and X is permitted to be zero. The return value is given in
-- radians and is in the range `-pi' to `pi', inclusive.
--
-- If X and Y are coordinates of a point in the plane, `atan2'
-- returns the signed angle between the line from the origin to that
-- point and the x-axis. Thus, `atan2' is useful for converting
-- Cartesian coordinates to polar coordinates. (To compute the
-- radial coordinate, use `hypot'; see *Note Exponents and
-- Logarithms::.)
--
-- If both X and Y are zero, `atan2' returns zero.
--
-- ISO C99 defines complex versions of the inverse trig functions.
--
-- - Function: complex double casin (complex double Z)
-- - Function: complex float casinf (complex float Z)
-- - Function: complex long double casinl (complex long double Z)
-- These functions compute the complex arc sine of Z--that is, the
-- value whose sine is Z. The value returned is in radians.
--
-- Unlike the real-valued functions, `casin' is defined for all
-- values of Z.
--
-- - Function: complex double cacos (complex double Z)
-- - Function: complex float cacosf (complex float Z)
-- - Function: complex long double cacosl (complex long double Z)
-- These functions compute the complex arc cosine of Z--that is, the
-- value whose cosine is Z. The value returned is in radians.
--
-- Unlike the real-valued functions, `cacos' is defined for all
-- values of Z.
--
-- - Function: complex double catan (complex double Z)
-- - Function: complex float catanf (complex float Z)
-- - Function: complex long double catanl (complex long double Z)
-- These functions compute the complex arc tangent of Z--that is, the
-- value whose tangent is Z. The value is in units of radians.
--
--
--File: libc.info, Node: Exponents and Logarithms, Next: Hyperbolic Functions, Prev: Inverse Trig Functions, Up: Mathematics
--
--Exponentiation and Logarithms
--=============================
--
-- - Function: double exp (double X)
-- - Function: float expf (float X)
-- - Function: long double expl (long double X)
-- These functions compute `e' (the base of natural logarithms) raised
-- to the power X.
--
-- If the magnitude of the result is too large to be representable,
-- `exp' signals overflow.
--
-- - Function: double exp2 (double X)
-- - Function: float exp2f (float X)
-- - Function: long double exp2l (long double X)
-- These functions compute `2' raised to the power X.
-- Mathematically, `exp2 (x)' is the same as `exp (x * log (2))'.
--
-- - Function: double exp10 (double X)
-- - Function: float exp10f (float X)
-- - Function: long double exp10l (long double X)
-- - Function: double pow10 (double X)
-- - Function: float pow10f (float X)
-- - Function: long double pow10l (long double X)
-- These functions compute `10' raised to the power X.
-- Mathematically, `exp10 (x)' is the same as `exp (x * log (10))'.
--
-- These functions are GNU extensions. The name `exp10' is
-- preferred, since it is analogous to `exp' and `exp2'.
--
-- - Function: double log (double X)
-- - Function: float logf (float X)
-- - Function: long double logl (long double X)
-- These functions compute the natural logarithm of X. `exp (log
-- (X))' equals X, exactly in mathematics and approximately in C.
--
-- If X is negative, `log' signals a domain error. If X is zero, it
-- returns negative infinity; if X is too close to zero, it may
-- signal overflow.
--
-- - Function: double log10 (double X)
-- - Function: float log10f (float X)
-- - Function: long double log10l (long double X)
-- These functions return the base-10 logarithm of X. `log10 (X)'
-- equals `log (X) / log (10)'.
--
--
-- - Function: double log2 (double X)
-- - Function: float log2f (float X)
-- - Function: long double log2l (long double X)
-- These functions return the base-2 logarithm of X. `log2 (X)'
-- equals `log (X) / log (2)'.
--
-- - Function: double logb (double X)
-- - Function: float logbf (float X)
-- - Function: long double logbl (long double X)
-- These functions extract the exponent of X and return it as a
-- floating-point value. If `FLT_RADIX' is two, `logb' is equal to
-- `floor (log2 (x))', except it's probably faster.
--
-- If X is de-normalized, `logb' returns the exponent X would have if
-- it were normalized. If X is infinity (positive or negative),
-- `logb' returns oo. If X is zero, `logb' returns oo. It does not
-- signal.
--
-- - Function: int ilogb (double X)
-- - Function: int ilogbf (float X)
-- - Function: int ilogbl (long double X)
-- These functions are equivalent to the corresponding `logb'
-- functions except that they return signed integer values.
--
--Since integers cannot represent infinity and NaN, `ilogb' instead
--returns an integer that can't be the exponent of a normal floating-point
--number. `math.h' defines constants so you can check for this.
--
-- - Macro: int FP_ILOGB0
-- `ilogb' returns this value if its argument is `0'. The numeric
-- value is either `INT_MIN' or `-INT_MAX'.
--
-- This macro is defined in ISO C99.
--
-- - Macro: int FP_ILOGBNAN
-- `ilogb' returns this value if its argument is `NaN'. The numeric
-- value is either `INT_MIN' or `INT_MAX'.
--
-- This macro is defined in ISO C99.
--
-- These values are system specific. They might even be the same. The
--proper way to test the result of `ilogb' is as follows:
--
-- i = ilogb (f);
-- if (i == FP_ILOGB0 || i == FP_ILOGBNAN)
-- {
-- if (isnan (f))
-- {
-- /* Handle NaN. */
-- }
-- else if (f == 0.0)
-- {
-- /* Handle 0.0. */
-- }
-- else
-- {
-- /* Some other value with large exponent,
-- perhaps +Inf. */
-- }
-- }
--
-- - Function: double pow (double BASE, double POWER)
-- - Function: float powf (float BASE, float POWER)
-- - Function: long double powl (long double BASE, long double POWER)
-- These are general exponentiation functions, returning BASE raised
-- to POWER.
--
-- Mathematically, `pow' would return a complex number when BASE is
-- negative and POWER is not an integral value. `pow' can't do that,
-- so instead it signals a domain error. `pow' may also underflow or
-- overflow the destination type.
--
-- - Function: double sqrt (double X)
-- - Function: float sqrtf (float X)
-- - Function: long double sqrtl (long double X)
-- These functions return the nonnegative square root of X.
--
-- If X is negative, `sqrt' signals a domain error. Mathematically,
-- it should return a complex number.
--
-- - Function: double cbrt (double X)
-- - Function: float cbrtf (float X)
-- - Function: long double cbrtl (long double X)
-- These functions return the cube root of X. They cannot fail;
-- every representable real value has a representable real cube root.
--
-- - Function: double hypot (double X, double Y)
-- - Function: float hypotf (float X, float Y)
-- - Function: long double hypotl (long double X, long double Y)
-- These functions return `sqrt (X*X + Y*Y)'. This is the length of
-- the hypotenuse of a right triangle with sides of length X and Y,
-- or the distance of the point (X, Y) from the origin. Using this
-- function instead of the direct formula is wise, since the error is
-- much smaller. See also the function `cabs' in *Note Absolute
-- Value::.
--
-- - Function: double expm1 (double X)
-- - Function: float expm1f (float X)
-- - Function: long double expm1l (long double X)
-- These functions return a value equivalent to `exp (X) - 1'. They
-- are computed in a way that is accurate even if X is near zero--a
-- case where `exp (X) - 1' would be inaccurate owing to subtraction
-- of two numbers that are nearly equal.
--
-- - Function: double log1p (double X)
-- - Function: float log1pf (float X)
-- - Function: long double log1pl (long double X)
-- These functions returns a value equivalent to `log (1 + X)'. They
-- are computed in a way that is accurate even if X is near zero.
--
-- ISO C99 defines complex variants of some of the exponentiation and
--logarithm functions.
--
-- - Function: complex double cexp (complex double Z)
-- - Function: complex float cexpf (complex float Z)
-- - Function: complex long double cexpl (complex long double Z)
-- These functions return `e' (the base of natural logarithms) raised
-- to the power of Z. Mathematically, this corresponds to the value
--
-- exp (z) = exp (creal (z)) * (cos (cimag (z)) + I * sin (cimag (z)))
--
-- - Function: complex double clog (complex double Z)
-- - Function: complex float clogf (complex float Z)
-- - Function: complex long double clogl (complex long double Z)
-- These functions return the natural logarithm of Z.
-- Mathematically, this corresponds to the value
--
-- log (z) = log (cabs (z)) + I * carg (z)
--
-- `clog' has a pole at 0, and will signal overflow if Z equals or is
-- very close to 0. It is well-defined for all other values of Z.
--
-- - Function: complex double clog10 (complex double Z)
-- - Function: complex float clog10f (complex float Z)
-- - Function: complex long double clog10l (complex long double Z)
-- These functions return the base 10 logarithm of the complex value
-- Z. Mathematically, this corresponds to the value
--
-- log (z) = log10 (cabs (z)) + I * carg (z)
--
-- These functions are GNU extensions.
--
-- - Function: complex double csqrt (complex double Z)
-- - Function: complex float csqrtf (complex float Z)
-- - Function: complex long double csqrtl (complex long double Z)
-- These functions return the complex square root of the argument Z.
-- Unlike the real-valued functions, they are defined for all values
-- of Z.
--
-- - Function: complex double cpow (complex double BASE, complex double
-- POWER)
-- - Function: complex float cpowf (complex float BASE, complex float
-- POWER)
-- - Function: complex long double cpowl (complex long double BASE,
-- complex long double POWER)
-- These functions return BASE raised to the power of POWER. This is
-- equivalent to `cexp (y * clog (x))'
--
--
--File: libc.info, Node: Hyperbolic Functions, Next: Special Functions, Prev: Exponents and Logarithms, Up: Mathematics
--
--Hyperbolic Functions
--====================
--
-- The functions in this section are related to the exponential
--functions; see *Note Exponents and Logarithms::.
--
-- - Function: double sinh (double X)
-- - Function: float sinhf (float X)
-- - Function: long double sinhl (long double X)
-- These functions return the hyperbolic sine of X, defined
-- mathematically as `(exp (X) - exp (-X)) / 2'. They may signal
-- overflow if X is too large.
--
-- - Function: double cosh (double X)
-- - Function: float coshf (float X)
-- - Function: long double coshl (long double X)
-- These function return the hyperbolic cosine of X, defined
-- mathematically as `(exp (X) + exp (-X)) / 2'. They may signal
-- overflow if X is too large.
--
-- - Function: double tanh (double X)
-- - Function: float tanhf (float X)
-- - Function: long double tanhl (long double X)
-- These functions return the hyperbolic tangent of X, defined
-- mathematically as `sinh (X) / cosh (X)'. They may signal overflow
-- if X is too large.
--
-- There are counterparts for the hyperbolic functions which take
--complex arguments.
--
-- - Function: complex double csinh (complex double Z)
-- - Function: complex float csinhf (complex float Z)
-- - Function: complex long double csinhl (complex long double Z)
-- These functions return the complex hyperbolic sine of Z, defined
-- mathematically as `(exp (Z) - exp (-Z)) / 2'.
--
-- - Function: complex double ccosh (complex double Z)
-- - Function: complex float ccoshf (complex float Z)
-- - Function: complex long double ccoshl (complex long double Z)
-- These functions return the complex hyperbolic cosine of Z, defined
-- mathematically as `(exp (Z) + exp (-Z)) / 2'.
--
-- - Function: complex double ctanh (complex double Z)
-- - Function: complex float ctanhf (complex float Z)
-- - Function: complex long double ctanhl (complex long double Z)
-- These functions return the complex hyperbolic tangent of Z,
-- defined mathematically as `csinh (Z) / ccosh (Z)'.
--
-- - Function: double asinh (double X)
-- - Function: float asinhf (float X)
-- - Function: long double asinhl (long double X)
-- These functions return the inverse hyperbolic sine of X--the value
-- whose hyperbolic sine is X.
--
-- - Function: double acosh (double X)
-- - Function: float acoshf (float X)
-- - Function: long double acoshl (long double X)
-- These functions return the inverse hyperbolic cosine of X--the
-- value whose hyperbolic cosine is X. If X is less than `1',
-- `acosh' signals a domain error.
--
-- - Function: double atanh (double X)
-- - Function: float atanhf (float X)
-- - Function: long double atanhl (long double X)
-- These functions return the inverse hyperbolic tangent of X--the
-- value whose hyperbolic tangent is X. If the absolute value of X
-- is greater than `1', `atanh' signals a domain error; if it is
-- equal to 1, `atanh' returns infinity.
--
-- - Function: complex double casinh (complex double Z)
-- - Function: complex float casinhf (complex float Z)
-- - Function: complex long double casinhl (complex long double Z)
-- These functions return the inverse complex hyperbolic sine of
-- Z--the value whose complex hyperbolic sine is Z.
--
-- - Function: complex double cacosh (complex double Z)
-- - Function: complex float cacoshf (complex float Z)
-- - Function: complex long double cacoshl (complex long double Z)
-- These functions return the inverse complex hyperbolic cosine of
-- Z--the value whose complex hyperbolic cosine is Z. Unlike the
-- real-valued functions, there are no restrictions on the value of Z.
--
-- - Function: complex double catanh (complex double Z)
-- - Function: complex float catanhf (complex float Z)
-- - Function: complex long double catanhl (complex long double Z)
-- These functions return the inverse complex hyperbolic tangent of
-- Z--the value whose complex hyperbolic tangent is Z. Unlike the
-- real-valued functions, there are no restrictions on the value of Z.
--
--
--File: libc.info, Node: Special Functions, Next: Errors in Math Functions, Prev: Hyperbolic Functions, Up: Mathematics
--
--Special Functions
--=================
--
-- These are some more exotic mathematical functions which are sometimes
--useful. Currently they only have real-valued versions.
--
-- - Function: double erf (double X)
-- - Function: float erff (float X)
-- - Function: long double erfl (long double X)
-- `erf' returns the error function of X. The error function is
-- defined as
-- erf (x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt
--
-- - Function: double erfc (double X)
-- - Function: float erfcf (float X)
-- - Function: long double erfcl (long double X)
-- `erfc' returns `1.0 - erf(X)', but computed in a fashion that
-- avoids round-off error when X is large.
--
-- - Function: double lgamma (double X)
-- - Function: float lgammaf (float X)
-- - Function: long double lgammal (long double X)
-- `lgamma' returns the natural logarithm of the absolute value of
-- the gamma function of X. The gamma function is defined as
-- gamma (x) = integral from 0 to oo of t^(x-1) e^-t dt
--
-- The sign of the gamma function is stored in the global variable
-- SIGNGAM, which is declared in `math.h'. It is `1' if the
-- intermediate result was positive or zero, or `-1' if it was
-- negative.
--
-- To compute the real gamma function you can use the `tgamma'
-- function or you can compute the values as follows:
-- lgam = lgamma(x);
-- gam = signgam*exp(lgam);
--
-- The gamma function has singularities at the non-positive integers.
-- `lgamma' will raise the zero divide exception if evaluated at a
-- singularity.
--
-- - Function: double lgamma_r (double X, int *SIGNP)
-- - Function: float lgammaf_r (float X, int *SIGNP)
-- - Function: long double lgammal_r (long double X, int *SIGNP)
-- `lgamma_r' is just like `lgamma', but it stores the sign of the
-- intermediate result in the variable pointed to by SIGNP instead of
-- in the SIGNGAM global. This means it is reentrant.
--
-- - Function: double gamma (double X)
-- - Function: float gammaf (float X)
-- - Function: long double gammal (long double X)
-- These functions exist for compatibility reasons. They are
-- equivalent to `lgamma' etc. It is better to use `lgamma' since
-- for one the name reflects better the actual computation, moreover
-- `lgamma' is standardized in ISO C99 while `gamma' is not.
--
-- - Function: double tgamma (double X)
-- - Function: float tgammaf (float X)
-- - Function: long double tgammal (long double X)
-- `tgamma' applies the gamma function to X. The gamma function is
-- defined as
-- gamma (x) = integral from 0 to oo of t^(x-1) e^-t dt
--
-- This function was introduced in ISO C99.
--
-- - Function: double j0 (double X)
-- - Function: float j0f (float X)
-- - Function: long double j0l (long double X)
-- `j0' returns the Bessel function of the first kind of order 0 of
-- X. It may signal underflow if X is too large.
--
-- - Function: double j1 (double X)
-- - Function: float j1f (float X)
-- - Function: long double j1l (long double X)
-- `j1' returns the Bessel function of the first kind of order 1 of
-- X. It may signal underflow if X is too large.
--
-- - Function: double jn (int n, double X)
-- - Function: float jnf (int n, float X)
-- - Function: long double jnl (int n, long double X)
-- `jn' returns the Bessel function of the first kind of order N of
-- X. It may signal underflow if X is too large.
--
-- - Function: double y0 (double X)
-- - Function: float y0f (float X)
-- - Function: long double y0l (long double X)
-- `y0' returns the Bessel function of the second kind of order 0 of
-- X. It may signal underflow if X is too large. If X is negative,
-- `y0' signals a domain error; if it is zero, `y0' signals overflow
-- and returns -oo.
--
-- - Function: double y1 (double X)
-- - Function: float y1f (float X)
-- - Function: long double y1l (long double X)
-- `y1' returns the Bessel function of the second kind of order 1 of
-- X. It may signal underflow if X is too large. If X is negative,
-- `y1' signals a domain error; if it is zero, `y1' signals overflow
-- and returns -oo.
--
-- - Function: double yn (int n, double X)
-- - Function: float ynf (int n, float X)
-- - Function: long double ynl (int n, long double X)
-- `yn' returns the Bessel function of the second kind of order N of
-- X. It may signal underflow if X is too large. If X is negative,
-- `yn' signals a domain error; if it is zero, `yn' signals overflow
-- and returns -oo.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-32 glibc-2.3.2-200304020432/manual/libc.info-32
---- glibc-2.3.2/manual/libc.info-32 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-32 Thu Jan 1 01:00:00 1970
-@@ -1,865 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Errors in Math Functions, Next: Pseudo-Random Numbers, Prev: Special Functions, Up: Mathematics
--
--Known Maximum Errors in Math Functions
--======================================
--
-- This section lists the known errors of the functions in the math
--library. Errors are measured in "units of the last place". This is a
--measure for the relative error. For a number z with the representation
--d.d...d*2^e (we assume IEEE floating-point numbers with base 2) the ULP
--is represented by
--
-- |d.d...d - (z / 2^e)| / 2^(p - 1)
--
--where p is the number of bits in the mantissa of the floating-point
--number representation. Ideally the error for all functions is always
--less than 0.5ulps. Using rounding bits this is also possible and
--normally implemented for the basic operations. To achieve the same for
--the complex math functions requires a lot more work and this has not
--yet been done.
--
-- Therefore many of the functions in the math library have errors. The
--table lists the maximum error for each function which is exposed by one
--of the existing tests in the test suite. The table tries to cover as
--much as possible and list the actual maximum error (or at least a
--ballpark figure) but this is often not achieved due to the large search
--space.
--
-- The table lists the ULP values for different architectures.
--Different architectures have different results since their hardware
--support for floating-point operations varies and also the existing
--hardware support is different.
--
--Function Alpha ARM Generic ix86 IA64
--acosf - - - - -
--acos - - - - -
--acosl - - - 1150 -
--acoshf - - - - -
--acosh - - - - -
--acoshl - - - 1 -
--asinf 2 2 - - -
--asin 1 1 - 1 1
--asinl - - - 1 -
--asinhf - - - - -
--asinh - - - - -
--asinhl - - - 656 14
--atanf - - - - -
--atan - - - - -
--atanl - - - 549 -
--atanhf - - - - -
--atanh 1 1 - 1 -
--atanhl - - - 1605 -
--atan2f 4 - - - -
--atan2 - - - - -
--atan2l - - - 549 -
--cabsf 1 1 - 1 1
--cabs 1 1 - 1 1
--cabsl - - - 560 1
--cacosf 1 + i 1 1 + i 1 - 1 + i 2 1 + i 2
--cacos 1 + i 0 1 + i 0 - 1 + i 0 1 + i 0
--cacosl - - - 151 + i 329 1 + i 1
--cacoshf 7 + i 3 7 + i 3 - 4 + i 4 7 + i 0
--cacosh 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--cacoshl - - - 328 + i 151 7 + i 1
--cargf - - - - -
--carg - - - - -
--cargl - - - - -
--casinf 2 + i 1 2 + i 1 - 2 + i 2 2 + i 2
--casin 3 + i 0 3 + i 0 - 3 + i 0 3 + i 0
--casinl - - - 603 + i 329 0 + i 1
--casinhf 1 + i 6 1 + i 6 - 1 + i 6 1 + i 6
--casinh 5 + i 3 5 + i 3 - 5 + i 3 5 + i 3
--casinhl - - - 892 + i 12 5 + i 5
--catanf 4 + i 1 4 + i 1 - 0 + i 1 0 + i 1
--catan 0 + i 1 0 + i 1 - 0 + i 1 0 + i 1
--catanl - - - 251 + i 474 1 + i 0
--catanhf 1 + i 6 1 + i 6 - 1 + i 0 -
--catanh 4 + i 1 4 + i 1 - 2 + i 0 4 + i 0
--catanhl - - - 66 + i 447 1 + i 0
--cbrtf - - - - -
--cbrt 1 1 - 1 1
--cbrtl - - - 716 -
--ccosf 0 + i 1 0 + i 1 - 1 + i 1 1 + i 1
--ccos 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--ccosl - - - 5 + i 1901 0 + i 1
--ccoshf 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--ccosh 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--ccoshl - - - 1467 + i 1183 1 + i 1
--ceilf - - - - -
--ceil - - - - -
--ceill - - - - -
--cexpf 1 + i 1 1 + i 1 - 1 + i 0 1 + i 1
--cexp 1 + i 0 1 + i 0 - - 1 + i 0
--cexpl - - - 940 + i 1067 2 + i 0
--cimagf - - - - -
--cimag - - - - -
--cimagl - - - - -
--clogf 0 + i 3 0 + i 3 - - -
--clog 0 + i 1 0 + i 1 - - -
--clogl - - - 0 + i 1 -
--clog10f 1 + i 5 1 + i 5 - 1 + i 1 1 + i 1
--clog10 1 + i 1 1 + i 1 - 2 + i 1 2 + i 1
--clog10l - - - 1403 + i 186 1 + i 2
--conjf - - - - -
--conj - - - - -
--conjl - - - - -
--copysignf - - - - -
--copysign - - - - -
--copysignl - - - - -
--cosf 1 1 - 1 1
--cos 2 2 - 2 2
--cosl - - - 529 0.5
--coshf - - - - -
--cosh - - - - -
--coshl - - - 309 2
--cpowf 4 + i 2 4 + i 2 - 4 + i 2.5333 5 + i 2.5333
--cpow 1 + i 1.1031 1 + i 1.1031 - 1 + i 1.104 1 + i 1.1031
--cpowl - - - 2 + i 9 1 + i 4
--cprojf - - - - -
--cproj - - - - -
--cprojl - - - - -
--crealf - - - - -
--creal - - - - -
--creall - - - - -
--csinf 0 + i 1 0 + i 1 - - -
--csin - - - - -
--csinl - - - 966 + i 168 0 + i 1
--csinhf 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--csinh 0 + i 1 0 + i 1 - 1 + i 1 1 + i 1
--csinhl - - - 413 + i 477 2 + i 2
--csqrtf 1 + i 1 1 + i 1 - - 1 + i 1
--csqrt 1 + i 0 1 + i 0 - 1 + i 0 1 + i 0
--csqrtl - - - 237 + i 128 -
--ctanf 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--ctan 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
--ctanl - - - 690 + i 367 436 + i 1
--ctanhf 2 + i 1 2 + i 1 - 1 + i 1 1 + i 1
--ctanh 2 + i 2 2 + i 2 - 0 + i 1 0 + i 1
--ctanhl - - - 286 + i 3074 1 + i 24
--erff - - - - -
--erf - - - - -
--erfl - - - - -
--erfcf 12 12 - 12 12
--erfc 24 24 - 24 24
--erfcl - - - 36 12
--expf - - - - -
--exp - - - - -
--expl - - - 754 -
--exp10f 2 2 - - 2
--exp10 6 6 - 1 6
--exp10l - - - 1182 3
--exp2f - - - - -
--exp2 - - - - -
--exp2l - - - 462 -
--expm1f 1 1 - - -
--expm1 - - - - -
--expm1l - - - 825 1
--fabsf - - - - -
--fabs - - - - -
--fabsl - - - - -
--fdimf - - - - -
--fdim - - - - -
--fdiml - - - - -
--floorf - - - - -
--floor - - - - -
--floorl - - - - -
--fmaf - - - - -
--fma - - - - -
--fmal - - - - -
--fmaxf - - - - -
--fmax - - - - -
--fmaxl - - - - -
--fminf - - - - -
--fmin - - - - -
--fminl - - - - -
--fmodf 1 1 - 1 1
--fmod 2 2 - 2 2
--fmodl - - - 4096 1
--frexpf - - - - -
--frexp - - - - -
--frexpl - - - - -
--gammaf - - - - -
--gamma - - - 1 -
--gammal - - - 1 1
--hypotf 1 1 - 1 1
--hypot 1 1 - 1 1
--hypotl - - - 560 1
--ilogbf - - - - -
--ilogb - - - - -
--ilogbl - - - - -
--j0f 2 2 - 1 1
--j0 2 2 - 2 2
--j0l - - - 1 2
--j1f 2 2 - 1 2
--j1 1 1 - 2 1
--j1l - - - 2 -
--jnf 4 4 - 2 4
--jn 6 6 - 5 6
--jnl - - - 2 2
--lgammaf 2 2 - 2 2
--lgamma 1 1 - 1 1
--lgammal - - - 1 1
--lrintf - - - - -
--lrint - - - - -
--lrintl - - - - -
--llrintf - - - - -
--llrint - - - - -
--llrintl - - - - -
--logf 1 1 - 1 1
--log 1 1 - 1 1
--logl - - - 2341 1
--log10f 1 1 - 1 1
--log10 1 1 - 1 1
--log10l - - - 2033 1
--log1pf 1 1 - 1 1
--log1p 1 1 - 1 1
--log1pl - - - 585 1
--log2f 1 1 - 1 1
--log2 1 1 - 1 1
--log2l - - - 1688 -
--logbf - - - - -
--logb - - - - -
--logbl - - - - -
--lroundf - - - - -
--lround - - - - -
--lroundl - - - - -
--llroundf - - - - -
--llround - - - - -
--llroundl - - - - -
--modff - - - - -
--modf - - - - -
--modfl - - - - -
--nearbyintf - - - - -
--nearbyint - - - - -
--nearbyintl - - - - -
--nextafterf - - - - -
--nextafter - - - - -
--nextafterl - - - - -
--nexttowardf - - - - -
--nexttoward - - - - -
--nexttowardl - - - - -
--powf - - - - -
--pow - - - - -
--powl - - - 725 1
--remainderf - - - - -
--remainder - - - - -
--remainderl - - - - -
--remquof - - - - -
--remquo - - - - -
--remquol - - - - -
--rintf - - - - -
--rint - - - - -
--rintl - - - - -
--roundf - - - - -
--round - - - - -
--roundl - - - - -
--scalbf - - - - -
--scalb - - - - -
--scalbl - - - - -
--scalbnf - - - - -
--scalbn - - - - -
--scalbnl - - - - -
--scalblnf - - - - -
--scalbln - - - - -
--scalblnl - - - - -
--sinf - - - - -
--sin - - - - -
--sinl - - - 627 1
--sincosf 1 1 - 1 1
--sincos 1 1 - 1 1
--sincosl - - - 627 1
--sinhf 1 1 - 1 1
--sinh 1 1 - - -
--sinhl - - - 1029 1
--sqrtf - - - - -
--sqrt - - - - -
--sqrtl - - - 489 -
--tanf - - - - -
--tan 0.5 0.5 - 0.5 0.5
--tanl - - - 1401 1
--tanhf 1 1 - - 1
--tanh 1 1 - - 1
--tanhl - - - 521 1
--tgammaf 1 1 - 1 1
--tgamma 1 1 - 2 1
--tgammal - - - 2 1
--truncf - - - - -
--trunc - - - - -
--truncl - - - - -
--y0f 1 1 - 1 1
--y0 2 2 - 3 2
--y0l - - - 2 2
--y1f 2 2 - 2 2
--y1 3 3 - 3 3
--y1l - - - 2 1
--ynf 2 2 - 3 2
--yn 3 3 - 6 3
--ynl - - - 7 7
--
--Function M68k MIPS PowerPC S/390 SH4
--acosf - - - - -
--acos - - - - -
--acosl 1 - - - -
--acoshf - - - - -
--acosh - - - - -
--acoshl 1 - - - -
--asinf - 2 2 2 2
--asin 1 1 1 1 1
--asinl 1 - - - -
--asinhf - - - - -
--asinh - - - - -
--asinhl 14 - - - -
--atanf - - - - -
--atan - - - - -
--atanl - - - - -
--atanhf - - - - -
--atanh 1 1 1 1 1
--atanhl - - - - -
--atan2f - 4 4 4 4
--atan2 - - - - -
--atan2l - - - - -
--cabsf 1 1 1 1 1
--cabs - 1 1 1 1
--cabsl 1 - - - -
--cacosf 1 + i 2 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--cacos 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
--cacosl 1 + i 1 - - - -
--cacoshf 7 + i 0 7 + i 3 7 + i 3 7 + i 3 7 + i 3
--cacosh 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--cacoshl 6 + i 2 - - - -
--cargf - - - - -
--carg - - - - -
--cargl - - - - -
--casinf 2 + i 2 2 + i 1 2 + i 1 2 + i 1 2 + i 1
--casin 3 + i 0 3 + i 0 3 + i 0 3 + i 0 3 + i 0
--casinl 0 + i 1 - - - -
--casinhf 19 + i 2 1 + i 6 1 + i 6 1 + i 6 1 + i 6
--casinh 6 + i 13 5 + i 3 5 + i 3 5 + i 3 5 + i 3
--casinhl 5 + i 6 - - - -
--catanf 0 + i 1 4 + i 1 4 + i 1 4 + i 1 4 + i 1
--catan 0 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
--catanl 1 + i 0 - - - -
--catanhf - 1 + i 6 0 + i 6 1 + i 6 1 + i 6
--catanh - 4 + i 1 4 + i 1 4 + i 1 4 + i 1
--catanhl 1 + i 0 - - - -
--cbrtf - - - - -
--cbrt 1 1 1 1 1
--cbrtl 1 - - - -
--ccosf 1 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
--ccos 0 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--ccosl 0 + i 1 - - - -
--ccoshf 3 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--ccosh 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--ccoshl 1 + i 2 - - - -
--ceilf - - - - -
--ceil - - - - -
--ceill - - - - -
--cexpf 3 + i 2 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--cexp - 1 + i 0 1 + i 0 1 + i 0 1 + i 0
--cexpl 2 + i 0 - - - -
--cimagf - - - - -
--cimag - - - - -
--cimagl - - - - -
--clogf - 0 + i 3 0 + i 3 0 + i 3 0 + i 3
--clog - 0 + i 1 0 + i 1 0 + i 1 0 + i 1
--clogl - - - - -
--clog10f 1 + i 1 1 + i 5 1 + i 5 1 + i 5 1 + i 5
--clog10 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--clog10l 1 + i 3 - - - -
--conjf - - - - -
--conj - - - - -
--conjl - - - - -
--copysignf - - - - -
--copysign - - - - -
--copysignl - - - - -
--cosf 1 1 1 1 1
--cos 2 2 2 2 2
--cosl 1 - - - -
--coshf - - - - -
--cosh - - - - -
--coshl 2 - - - -
--cpowf 1 + i 6 4 + i 2 4 + i 2 4 + i 2 4 + i 2
--cpow 1 + i 2 1 + i 1.1031 1 + i 2 1 + i 1.1031 1 + i 1.1031
--cpowl 5 + i 2 - - - -
--cprojf - - - - -
--cproj - - - - -
--cprojl - - - - -
--crealf - - - - -
--creal - - - - -
--creall - - - - -
--csinf 1 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
--csin - - - - -
--csinl - - - - -
--csinhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--csinh - 0 + i 1 0 + i 1 0 + i 1 0 + i 1
--csinhl 1 + i 2 - - - -
--csqrtf 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--csqrt - 1 + i 0 1 + i 0 1 + i 0 1 + i 0
--csqrtl - - - - -
--ctanf 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--ctan 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
--ctanl 439 + i 2 - - - -
--ctanhf 1 + i 0 2 + i 1 2 + i 1 2 + i 1 2 + i 1
--ctanh 0 + i 1 2 + i 2 2 + i 2 2 + i 2 2 + i 2
--ctanhl 2 + i 25 - - - -
--erff - - - - -
--erf - - - - -
--erfl - - - - -
--erfcf 11 12 12 12 12
--erfc 24 24 24 24 24
--erfcl 12 - - - -
--expf - - - - -
--exp - - - - -
--expl - - - - -
--exp10f - 2 2 2 2
--exp10 1 6 6 6 6
--exp10l 1 - - - -
--exp2f - - - - -
--exp2 - - - - -
--exp2l - - - - -
--expm1f - 1 1 1 1
--expm1 - - - - -
--expm1l 1 - - - -
--fabsf - - - - -
--fabs - - - - -
--fabsl - - - - -
--fdimf - - - - -
--fdim - - - - -
--fdiml - - - - -
--floorf - - - - -
--floor - - - - -
--floorl - - - - -
--fmaf - - - - -
--fma - - - - -
--fmal - - - - -
--fmaxf - - - - -
--fmax - - - - -
--fmaxl - - - - -
--fminf - - - - -
--fmin - - - - -
--fminl - - - - -
--fmodf 1 1 1 1 1
--fmod 2 2 2 2 2
--fmodl 1 - - - -
--frexpf - - - - -
--frexp - - - - -
--frexpl - - - - -
--gammaf - - - - -
--gamma - - - - -
--gammal 1 - - - -
--hypotf 1 1 1 1 1
--hypot - 1 1 1 1
--hypotl 1 - - - -
--ilogbf - - - - -
--ilogb - - - - -
--ilogbl - - - - -
--j0f 1 2 1 2 2
--j0 1 2 2 2 2
--j0l 1 - - - -
--j1f 2 2 2 2 2
--j1 - 1 1 1 1
--j1l 2 - - - -
--jnf 11 4 4 4 4
--jn 4 6 6 6 6
--jnl 2 - - - -
--lgammaf 2 2 2 2 2
--lgamma 1 1 1 1 1
--lgammal 1 - - - -
--lrintf - - - - -
--lrint - - - - -
--lrintl - - - - -
--llrintf - - - - -
--llrint - - - - -
--llrintl - - - - -
--logf 1 1 1 1 1
--log 1 1 1 1 1
--logl 2 - - - -
--log10f 1 1 1 1 1
--log10 1 1 1 1 1
--log10l 1 - - - -
--log1pf 1 1 1 1 1
--log1p 1 1 1 1 1
--log1pl 2 - - - -
--log2f 1 1 1 1 1
--log2 1 1 1 1 1
--log2l 1 - - - -
--logbf - - - - -
--logb - - - - -
--logbl - - - - -
--lroundf - - - - -
--lround - - - - -
--lroundl - - - - -
--llroundf - - - - -
--llround - - - - -
--llroundl - - - - -
--modff - - - - -
--modf - - - - -
--modfl - - - - -
--nearbyintf - - - - -
--nearbyint - - - - -
--nearbyintl - - - - -
--nextafterf - - - - -
--nextafter - - - - -
--nextafterl - - - - -
--nexttowardf - - - - -
--nexttoward - - - - -
--nexttowardl - - - - -
--powf - - - - -
--pow - - - - -
--powl 1 - - - -
--remainderf - - - - -
--remainder - - - - -
--remainderl - - - - -
--remquof - - - - -
--remquo - - - - -
--remquol - - - - -
--rintf - - - - -
--rint - - - - -
--rintl - - - - -
--roundf - - - - -
--round - - - - -
--roundl - - - - -
--scalbf - - - - -
--scalb - - - - -
--scalbl - - - - -
--scalbnf - - - - -
--scalbn - - - - -
--scalbnl - - - - -
--scalblnf - - - - -
--scalbln - - - - -
--scalblnl - - - - -
--sinf - - - - -
--sin - - - - -
--sinl 1 - - - -
--sincosf 1 1 1 1 1
--sincos 1 1 1 1 1
--sincosl 1 - - - -
--sinhf 1 1 1 1 1
--sinh - 1 1 1 1
--sinhl - - - - -
--sqrtf - - - - -
--sqrt - - - - -
--sqrtl - - - - -
--tanf - - - - -
--tan 1 0.5 1 0.5 0.5
--tanl 1 - - - -
--tanhf - 1 1 1 1
--tanh - 1 1 1 1
--tanhl - - - - -
--tgammaf 1 1 1 1 1
--tgamma 1 1 1 1 1
--tgammal 1 - - - -
--truncf - - - - -
--trunc - - - - -
--truncl - - - - -
--y0f 2 1 1 1 1
--y0 2 2 2 2 2
--y0l 2 - - - -
--y1f 2 2 2 2 2
--y1 1 3 3 3 3
--y1l 2 - - - -
--ynf 2 2 2 2 2
--yn 6 3 3 3 3
--ynl 7 - - - -
--
--Function Sparc 32-bit Sparc 64-bit x86_64/fpu
--acosf - - -
--acos - - -
--acosl - 1 -
--acoshf - - -
--acosh - - -
--acoshl - - -
--asinf 2 2 -
--asin 1 1 1
--asinl - - 1
--asinhf - - -
--asinh - - -
--asinhl - - 15
--atanf - - -
--atan - - -
--atanl - 1 -
--atanhf - - -
--atanh 1 1 1
--atanhl - - 1
--atan2f 4.0000 4 4
--atan2 - - -
--atan2l - 1 -
--cabsf 1 1 1
--cabs 1 1 1
--cabsl - - 1
--cacosf 1 + i 1 1 + i 1 1 + i 1
--cacos 1 + i 0 1 + i 0 1 + i 0
--cacosl - 0 + i 3 1 + i 1
--cacoshf 7 + i 3 7 + i 3 7 + i 3
--cacosh 1 + i 1 1 + i 1 1 + i 1
--cacoshl - 5 + i 1 6 + i 1
--cargf - - -
--carg - - -
--cargl - - -
--casinf 2 + i 1 2 + i 1 2 + i 1
--casin 3 + i 0 3 + i 0 3 + i 0
--casinl - 1 + i 3 0 + i 1
--casinhf 1 + i 6 1 + i 6 1 + i 6
--casinh 5 + i 3 5 + i 3 5 + i 3
--casinhl - 4 + i 2 5 + i 5
--catanf 4 + i 1 4 + i 1 4 + i 1
--catan 0 + i 1 0 + i 1 0 + i 1
--catanl - 0 + i 1 1 + i 0
--catanhf 1 + i 6 1 + i 6 1 + i 6
--catanh 4 + i 1 4 + i 1 4 + i 0
--catanhl - - 1 + i 0
--cbrtf - - -
--cbrt 1 1 1
--cbrtl - - 948
--ccosf 0 + i 1 0 + i 1 0 + i 1
--ccos 1 + i 1 1 + i 1 1 + i 1
--ccosl - - 0 + i 1
--ccoshf 1 + i 1 1 + i 1 1 + i 1
--ccosh 1 + i 1 1 + i 1 1 + i 1
--ccoshl - - 1 + i 1
--ceilf - - -
--ceil - - -
--ceill - - -
--cexpf 1 + i 1 1 + i 1 1 + i 1
--cexp 1 + i 0 1 + i 0 1 + i 0
--cexpl - 1 + i 1 2 + i 1
--cimagf - - -
--cimag - - -
--cimagl - - -
--clogf 0 + i 3 0 + i 3 0 + i 3
--clog 0 + i 1 0 + i 1 -
--clogl - - -
--clog10f 1 + i 5 1 + i 5 1 + i 5
--clog10 1 + i 1 1 + i 1 1 + i 1
--clog10l - - 1 + i 3
--conjf - - -
--conj - - -
--conjl - - -
--copysignf - - -
--copysign - - -
--copysignl - - -
--cosf 1 1 1
--cos 2 2 2
--cosl - 1 0.5
--coshf - - -
--cosh - - -
--coshl - - 2
--cpowf 4 + i 2 4 + i 2 4 + i 2
--cpow 1 + i 1.1031 1 + i 1.1031 1 + i 1.1031
--cpowl - 3 + i 0.9006 1 + i 2
--cprojf - - -
--cproj - - -
--cprojl - - -
--crealf - - -
--creal - - -
--creall - - -
--csinf 0 + i 1 0 + i 1 0 + i 1
--csin - - -
--csinl - - 0 + i 2
--csinhf 1 + i 1 1 + i 1 1 + i 1
--csinh 0 + i 1 0 + i 1 0 + i 1
--csinhl - - 2 + i 2
--csqrtf 1 + i 1 1 + i 1 1 + i 1
--csqrt 1 + i 0 1 + i 0 1 + i 0
--csqrtl - 1 + i 1 -
--ctanf 1 + i 1 1 + i 1 1 + i 1
--ctan 1 + i 1 1 + i 1 1 + i 1
--ctanl - - 439 + i 2
--ctanhf 2 + i 1 2 + i 1 2 + i 1
--ctanh 2 + i 2 2 + i 2 2 + i 2
--ctanhl - - 5 + i 25
--erff - - -
--erf - - -
--erfl - - -
--erfcf 12 12 12
--erfc 24 24 24
--erfcl - - 36
--expf - - -
--exp - - -
--expl - - -
--exp10f 2 2 2
--exp10 6 6 6
--exp10l - 1 3
--exp2f - - -
--exp2 - - -
--exp2l - - -
--expm1f 1 1 1
--expm1 - 1 1
--expm1l - - 1
--fabsf - - -
--fabs - - -
--fabsl - - -
--fdimf - - -
--fdim - - -
--fdiml - - -
--floorf - - -
--floor - - -
--floorl - - -
--fmaf - - -
--fma - - -
--fmal - - -
--fmaxf - - -
--fmax - - -
--fmaxl - - -
--fminf - - -
--fmin - - -
--fminl - - -
--fmodf 1 1 1
--fmod 2 2 2
--fmodl - 2 1
--frexpf - - -
--frexp - - -
--frexpl - - -
--gammaf - - -
--gamma - - -
--gammal - - 1
--hypotf 1 1 1
--hypot 1 1 1
--hypotl - - 1
--ilogbf - - -
--ilogb - - -
--ilogbl - - -
--j0f 2 2 2
--j0 2 2 2
--j0l - - -
--j1f 2 2 2
--j1 1 1 1
--j1l - - 2
--jnf 4 4 4
--jn 6 6 6
--jnl - - 2
--lgammaf 2 2 2
--lgamma 1 1 1
--lgammal - - 1
--lrintf - - -
--lrint - - -
--lrintl - - -
--llrintf - - -
--llrint - - -
--llrintl - - -
--logf 1 1 1
--log 1 1 1
--logl - 1 1
--log10f 1 1 1
--log10 1 1 1
--log10l - - 1
--log1pf 1 1 1
--log1p 1 1 1
--log1pl - 1 1
--log2f 1 1 1
--log2 1 1 1
--log2l - - -
--logbf - - -
--logb - - -
--logbl - - -
--lroundf - - -
--lround - - -
--lroundl - - -
--llroundf - - -
--llround - - -
--llroundl - - -
--modff - - -
--modf - - -
--modfl - - -
--nearbyintf - - -
--nearbyint - - -
--nearbyintl - - -
--nextafterf - - -
--nextafter - - -
--nextafterl - - -
--nexttowardf - - -
--nexttoward - - -
--nexttowardl - - -
--powf - - -
--pow - - -
--powl - - -
--remainderf - - -
--remainder - - -
--remainderl - - -
--remquof - - -
--remquo - - -
--remquol - - -
--rintf - - -
--rint - - -
--rintl - - -
--roundf - - -
--round - - -
--roundl - - -
--scalbf - - -
--scalb - - -
--scalbl - - -
--scalbnf - - -
--scalbn - - -
--scalbnl - - -
--scalblnf - - -
--scalbln - - -
--scalblnl - - -
--sinf - - -
--sin - - -
--sinl - - 1
--sincosf 1 1 1
--sincos 1 1 1
--sincosl - 1 1
--sinhf 1 1 1
--sinh 1 1 1
--sinhl - - 1
--sqrtf - - -
--sqrt - - -
--sqrtl - 1 -
--tanf - - -
--tan 0.5 0.5 0.5
--tanl - 1 1
--tanhf 1 1 1
--tanh 1 1 1
--tanhl - - 1
--tgammaf 1 1 1
--tgamma 1 1 1
--tgammal - - 2
--truncf - - -
--trunc - - -
--truncl - - -
--y0f 1 1 1
--y0 2 2 2
--y0l - - 2
--y1f 2 2 2
--y1 3 3 3
--y1l - - 2
--ynf 2 2 2
--yn 3 3 3
--ynl - - 7
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-33 glibc-2.3.2-200304020432/manual/libc.info-33
---- glibc-2.3.2/manual/libc.info-33 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-33 Thu Jan 1 01:00:00 1970
-@@ -1,1234 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Pseudo-Random Numbers, Next: FP Function Optimizations, Prev: Errors in Math Functions, Up: Mathematics
--
--Pseudo-Random Numbers
--=====================
--
-- This section describes the GNU facilities for generating a series of
--pseudo-random numbers. The numbers generated are not truly random;
--typically, they form a sequence that repeats periodically, with a period
--so large that you can ignore it for ordinary purposes. The random
--number generator works by remembering a "seed" value which it uses to
--compute the next random number and also to compute a new seed.
--
-- Although the generated numbers look unpredictable within one run of a
--program, the sequence of numbers is _exactly the same_ from one run to
--the next. This is because the initial seed is always the same. This
--is convenient when you are debugging a program, but it is unhelpful if
--you want the program to behave unpredictably. If you want a different
--pseudo-random series each time your program runs, you must specify a
--different seed each time. For ordinary purposes, basing the seed on the
--current time works well.
--
-- You can obtain repeatable sequences of numbers on a particular
--machine type by specifying the same initial seed value for the random
--number generator. There is no standard meaning for a particular seed
--value; the same seed, used in different C libraries or on different CPU
--types, will give you different random numbers.
--
-- The GNU library supports the standard ISO C random number functions
--plus two other sets derived from BSD and SVID. The BSD and ISO C
--functions provide identical, somewhat limited functionality. If only a
--small number of random bits are required, we recommend you use the
--ISO C interface, `rand' and `srand'. The SVID functions provide a more
--flexible interface, which allows better random number generator
--algorithms, provides more random bits (up to 48) per call, and can
--provide random floating-point numbers. These functions are required by
--the XPG standard and therefore will be present in all modern Unix
--systems.
--
--* Menu:
--
--* ISO Random:: `rand' and friends.
--* BSD Random:: `random' and friends.
--* SVID Random:: `drand48' and friends.
--
--
--File: libc.info, Node: ISO Random, Next: BSD Random, Up: Pseudo-Random Numbers
--
--ISO C Random Number Functions
-------------------------------
--
-- This section describes the random number functions that are part of
--the ISO C standard.
--
-- To use these facilities, you should include the header file
--`stdlib.h' in your program.
--
-- - Macro: int RAND_MAX
-- The value of this macro is an integer constant representing the
-- largest value the `rand' function can return. In the GNU library,
-- it is `2147483647', which is the largest signed integer
-- representable in 32 bits. In other libraries, it may be as low as
-- `32767'.
--
-- - Function: int rand (void)
-- The `rand' function returns the next pseudo-random number in the
-- series. The value ranges from `0' to `RAND_MAX'.
--
-- - Function: void srand (unsigned int SEED)
-- This function establishes SEED as the seed for a new series of
-- pseudo-random numbers. If you call `rand' before a seed has been
-- established with `srand', it uses the value `1' as a default seed.
--
-- To produce a different pseudo-random series each time your program
-- is run, do `srand (time (0))'.
--
-- POSIX.1 extended the C standard functions to support reproducible
--random numbers in multi-threaded programs. However, the extension is
--badly designed and unsuitable for serious work.
--
-- - Function: int rand_r (unsigned int *SEED)
-- This function returns a random number in the range 0 to `RAND_MAX'
-- just as `rand' does. However, all its state is stored in the SEED
-- argument. This means the RNG's state can only have as many bits
-- as the type `unsigned int' has. This is far too few to provide a
-- good RNG.
--
-- If your program requires a reentrant RNG, we recommend you use the
-- reentrant GNU extensions to the SVID random number generator. The
-- POSIX.1 interface should only be used when the GNU extensions are
-- not available.
--
--
--File: libc.info, Node: BSD Random, Next: SVID Random, Prev: ISO Random, Up: Pseudo-Random Numbers
--
--BSD Random Number Functions
-----------------------------
--
-- This section describes a set of random number generation functions
--that are derived from BSD. There is no advantage to using these
--functions with the GNU C library; we support them for BSD compatibility
--only.
--
-- The prototypes for these functions are in `stdlib.h'.
--
-- - Function: long int random (void)
-- This function returns the next pseudo-random number in the
-- sequence. The value returned ranges from `0' to `RAND_MAX'.
--
-- *Note:* Temporarily this function was defined to return a
-- `int32_t' value to indicate that the return value always contains
-- 32 bits even if `long int' is wider. The standard demands it
-- differently. Users must always be aware of the 32-bit limitation,
-- though.
--
-- - Function: void srandom (unsigned int SEED)
-- The `srandom' function sets the state of the random number
-- generator based on the integer SEED. If you supply a SEED value
-- of `1', this will cause `random' to reproduce the default set of
-- random numbers.
--
-- To produce a different set of pseudo-random numbers each time your
-- program runs, do `srandom (time (0))'.
--
-- - Function: void * initstate (unsigned int SEED, void *STATE, size_t
-- SIZE)
-- The `initstate' function is used to initialize the random number
-- generator state. The argument STATE is an array of SIZE bytes,
-- used to hold the state information. It is initialized based on
-- SEED. The size must be between 8 and 256 bytes, and should be a
-- power of two. The bigger the STATE array, the better.
--
-- The return value is the previous value of the state information
-- array. You can use this value later as an argument to `setstate'
-- to restore that state.
--
-- - Function: void * setstate (void *STATE)
-- The `setstate' function restores the random number state
-- information STATE. The argument must have been the result of a
-- previous call to INITSTATE or SETSTATE.
--
-- The return value is the previous value of the state information
-- array. You can use this value later as an argument to `setstate'
-- to restore that state.
--
-- If the function fails the return value is `NULL'.
--
-- The four functions described so far in this section all work on a
--state which is shared by all threads. The state is not directly
--accessible to the user and can only be modified by these functions.
--This makes it hard to deal with situations where each thread should
--have its own pseudo-random number generator.
--
-- The GNU C library contains four additional functions which contain
--the state as an explicit parameter and therefore make it possible to
--handle thread-local PRNGs. Beside this there are no difference. In
--fact, the four functions already discussed are implemented internally
--using the following interfaces.
--
-- The `stdlib.h' header contains a definition of the following type:
--
-- - Data Type: struct random_data
-- Objects of type `struct random_data' contain the information
-- necessary to represent the state of the PRNG. Although a complete
-- definition of the type is present the type should be treated as
-- opaque.
--
-- The functions modifying the state follow exactly the already
--described functions.
--
-- - Function: int random_r (struct random_data *restrict BUF, int32_t
-- *restrict RESULT)
-- The `random_r' function behaves exactly like the `random' function
-- except that it uses and modifies the state in the object pointed
-- to by the first parameter instead of the global state.
--
-- - Function: int srandom_r (unsigned int SEED, struct random_data *BUF)
-- The `srandom_r' function behaves exactly like the `srandom'
-- function except that it uses and modifies the state in the object
-- pointed to by the second parameter instead of the global state.
--
-- - Function: int initstate_r (unsigned int SEED, char *restrict
-- STATEBUF, size_t STATELEN, struct random_data *restrict BUF)
-- The `initstate_r' function behaves exactly like the `initstate'
-- function except that it uses and modifies the state in the object
-- pointed to by the fourth parameter instead of the global state.
--
-- - Function: int setstate_r (char *restrict STATEBUF, struct
-- random_data *restrict BUF)
-- The `setstate_r' function behaves exactly like the `setstate'
-- function except that it uses and modifies the state in the object
-- pointed to by the first parameter instead of the global state.
--
--
--File: libc.info, Node: SVID Random, Prev: BSD Random, Up: Pseudo-Random Numbers
--
--SVID Random Number Function
-----------------------------
--
-- The C library on SVID systems contains yet another kind of random
--number generator functions. They use a state of 48 bits of data. The
--user can choose among a collection of functions which return the random
--bits in different forms.
--
-- Generally there are two kinds of function. The first uses a state of
--the random number generator which is shared among several functions and
--by all threads of the process. The second requires the user to handle
--the state.
--
-- All functions have in common that they use the same congruential
--formula with the same constants. The formula is
--
-- Y = (a * X + c) mod m
--
--where X is the state of the generator at the beginning and Y the state
--at the end. `a' and `c' are constants determining the way the
--generator works. By default they are
--
-- a = 0x5DEECE66D = 25214903917
-- c = 0xb = 11
--
--but they can also be changed by the user. `m' is of course 2^48 since
--the state consists of a 48-bit array.
--
-- The prototypes for these functions are in `stdlib.h'.
--
-- - Function: double drand48 (void)
-- This function returns a `double' value in the range of `0.0' to
-- `1.0' (exclusive). The random bits are determined by the global
-- state of the random number generator in the C library.
--
-- Since the `double' type according to IEEE 754 has a 52-bit
-- mantissa this means 4 bits are not initialized by the random number
-- generator. These are (of course) chosen to be the least
-- significant bits and they are initialized to `0'.
--
-- - Function: double erand48 (unsigned short int XSUBI[3])
-- This function returns a `double' value in the range of `0.0' to
-- `1.0' (exclusive), similarly to `drand48'. The argument is an
-- array describing the state of the random number generator.
--
-- This function can be called subsequently since it updates the
-- array to guarantee random numbers. The array should have been
-- initialized before initial use to obtain reproducible results.
--
-- - Function: long int lrand48 (void)
-- The `lrand48' function returns an integer value in the range of
-- `0' to `2^31' (exclusive). Even if the size of the `long int'
-- type can take more than 32 bits, no higher numbers are returned.
-- The random bits are determined by the global state of the random
-- number generator in the C library.
--
-- - Function: long int nrand48 (unsigned short int XSUBI[3])
-- This function is similar to the `lrand48' function in that it
-- returns a number in the range of `0' to `2^31' (exclusive) but the
-- state of the random number generator used to produce the random
-- bits is determined by the array provided as the parameter to the
-- function.
--
-- The numbers in the array are updated afterwards so that subsequent
-- calls to this function yield different results (as is expected of
-- a random number generator). The array should have been
-- initialized before the first call to obtain reproducible results.
--
-- - Function: long int mrand48 (void)
-- The `mrand48' function is similar to `lrand48'. The only
-- difference is that the numbers returned are in the range `-2^31' to
-- `2^31' (exclusive).
--
-- - Function: long int jrand48 (unsigned short int XSUBI[3])
-- The `jrand48' function is similar to `nrand48'. The only
-- difference is that the numbers returned are in the range `-2^31' to
-- `2^31' (exclusive). For the `xsubi' parameter the same
-- requirements are necessary.
--
-- The internal state of the random number generator can be initialized
--in several ways. The methods differ in the completeness of the
--information provided.
--
-- - Function: void srand48 (long int SEEDVAL)
-- The `srand48' function sets the most significant 32 bits of the
-- internal state of the random number generator to the least
-- significant 32 bits of the SEEDVAL parameter. The lower 16 bits
-- are initialized to the value `0x330E'. Even if the `long int'
-- type contains more than 32 bits only the lower 32 bits are used.
--
-- Owing to this limitation, initialization of the state of this
-- function is not very useful. But it makes it easy to use a
-- construct like `srand48 (time (0))'.
--
-- A side-effect of this function is that the values `a' and `c' from
-- the internal state, which are used in the congruential formula,
-- are reset to the default values given above. This is of
-- importance once the user has called the `lcong48' function (see
-- below).
--
-- - Function: unsigned short int * seed48 (unsigned short int SEED16V[3])
-- The `seed48' function initializes all 48 bits of the state of the
-- internal random number generator from the contents of the parameter
-- SEED16V. Here the lower 16 bits of the first element of SEE16V
-- initialize the least significant 16 bits of the internal state,
-- the lower 16 bits of `SEED16V[1]' initialize the mid-order 16 bits
-- of the state and the 16 lower bits of `SEED16V[2]' initialize the
-- most significant 16 bits of the state.
--
-- Unlike `srand48' this function lets the user initialize all 48 bits
-- of the state.
--
-- The value returned by `seed48' is a pointer to an array containing
-- the values of the internal state before the change. This might be
-- useful to restart the random number generator at a certain state.
-- Otherwise the value can simply be ignored.
--
-- As for `srand48', the values `a' and `c' from the congruential
-- formula are reset to the default values.
--
-- There is one more function to initialize the random number generator
--which enables you to specify even more information by allowing you to
--change the parameters in the congruential formula.
--
-- - Function: void lcong48 (unsigned short int PARAM[7])
-- The `lcong48' function allows the user to change the complete state
-- of the random number generator. Unlike `srand48' and `seed48',
-- this function also changes the constants in the congruential
-- formula.
--
-- From the seven elements in the array PARAM the least significant
-- 16 bits of the entries `PARAM[0]' to `PARAM[2]' determine the
-- initial state, the least significant 16 bits of `PARAM[3]' to
-- `PARAM[5]' determine the 48 bit constant `a' and `PARAM[6]'
-- determines the 16-bit value `c'.
--
-- All the above functions have in common that they use the global
--parameters for the congruential formula. In multi-threaded programs it
--might sometimes be useful to have different parameters in different
--threads. For this reason all the above functions have a counterpart
--which works on a description of the random number generator in the
--user-supplied buffer instead of the global state.
--
-- Please note that it is no problem if several threads use the global
--state if all threads use the functions which take a pointer to an array
--containing the state. The random numbers are computed following the
--same loop but if the state in the array is different all threads will
--obtain an individual random number generator.
--
-- The user-supplied buffer must be of type `struct drand48_data'.
--This type should be regarded as opaque and not manipulated directly.
--
-- - Function: int drand48_r (struct drand48_data *BUFFER, double *RESULT)
-- This function is equivalent to the `drand48' function with the
-- difference that it does not modify the global random number
-- generator parameters but instead the parameters in the buffer
-- supplied through the pointer BUFFER. The random number is
-- returned in the variable pointed to by RESULT.
--
-- The return value of the function indicates whether the call
-- succeeded. If the value is less than `0' an error occurred and
-- ERRNO is set to indicate the problem.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int erand48_r (unsigned short int XSUBI[3], struct
-- drand48_data *BUFFER, double *RESULT)
-- The `erand48_r' function works like `erand48', but in addition it
-- takes an argument BUFFER which describes the random number
-- generator. The state of the random number generator is taken from
-- the `xsubi' array, the parameters for the congruential formula
-- from the global random number generator data. The random number
-- is returned in the variable pointed to by RESULT.
--
-- The return value is non-negative if the call succeeded.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int lrand48_r (struct drand48_data *BUFFER, double *RESULT)
-- This function is similar to `lrand48', but in addition it takes a
-- pointer to a buffer describing the state of the random number
-- generator just like `drand48'.
--
-- If the return value of the function is non-negative the variable
-- pointed to by RESULT contains the result. Otherwise an error
-- occurred.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int nrand48_r (unsigned short int XSUBI[3], struct
-- drand48_data *BUFFER, long int *RESULT)
-- The `nrand48_r' function works like `nrand48' in that it produces
-- a random number in the range `0' to `2^31'. But instead of using
-- the global parameters for the congruential formula it uses the
-- information from the buffer pointed to by BUFFER. The state is
-- described by the values in XSUBI.
--
-- If the return value is non-negative the variable pointed to by
-- RESULT contains the result.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int mrand48_r (struct drand48_data *BUFFER, double *RESULT)
-- This function is similar to `mrand48' but like the other reentrant
-- functions it uses the random number generator described by the
-- value in the buffer pointed to by BUFFER.
--
-- If the return value is non-negative the variable pointed to by
-- RESULT contains the result.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int jrand48_r (unsigned short int XSUBI[3], struct
-- drand48_data *BUFFER, long int *RESULT)
-- The `jrand48_r' function is similar to `jrand48'. Like the other
-- reentrant functions of this function family it uses the
-- congruential formula parameters from the buffer pointed to by
-- BUFFER.
--
-- If the return value is non-negative the variable pointed to by
-- RESULT contains the result.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- Before any of the above functions are used the buffer of type
--`struct drand48_data' should be initialized. The easiest way to do
--this is to fill the whole buffer with null bytes, e.g. by
--
-- memset (buffer, '\0', sizeof (struct drand48_data));
--
--Using any of the reentrant functions of this family now will
--automatically initialize the random number generator to the default
--values for the state and the parameters of the congruential formula.
--
-- The other possibility is to use any of the functions which explicitly
--initialize the buffer. Though it might be obvious how to initialize the
--buffer from looking at the parameter to the function, it is highly
--recommended to use these functions since the result might not always be
--what you expect.
--
-- - Function: int srand48_r (long int SEEDVAL, struct drand48_data
-- *BUFFER)
-- The description of the random number generator represented by the
-- information in BUFFER is initialized similarly to what the function
-- `srand48' does. The state is initialized from the parameter
-- SEEDVAL and the parameters for the congruential formula are
-- initialized to their default values.
--
-- If the return value is non-negative the function call succeeded.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int seed48_r (unsigned short int SEED16V[3], struct
-- drand48_data *BUFFER)
-- This function is similar to `srand48_r' but like `seed48' it
-- initializes all 48 bits of the state from the parameter SEED16V.
--
-- If the return value is non-negative the function call succeeded.
-- It does not return a pointer to the previous state of the random
-- number generator like the `seed48' function does. If the user
-- wants to preserve the state for a later re-run s/he can copy the
-- whole buffer pointed to by BUFFER.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
-- - Function: int lcong48_r (unsigned short int PARAM[7], struct
-- drand48_data *BUFFER)
-- This function initializes all aspects of the random number
-- generator described in BUFFER with the data in PARAM. Here it is
-- especially true that the function does more than just copying the
-- contents of PARAM and BUFFER. More work is required and therefore
-- it is important to use this function rather than initializing the
-- random number generator directly.
--
-- If the return value is non-negative the function call succeeded.
--
-- This function is a GNU extension and should not be used in portable
-- programs.
--
--
--File: libc.info, Node: FP Function Optimizations, Prev: Pseudo-Random Numbers, Up: Mathematics
--
--Is Fast Code or Small Code preferred?
--=====================================
--
-- If an application uses many floating point functions it is often the
--case that the cost of the function calls themselves is not negligible.
--Modern processors can often execute the operations themselves very
--fast, but the function call disrupts the instruction pipeline.
--
-- For this reason the GNU C Library provides optimizations for many of
--the frequently-used math functions. When GNU CC is used and the user
--activates the optimizer, several new inline functions and macros are
--defined. These new functions and macros have the same names as the
--library functions and so are used instead of the latter. In the case of
--inline functions the compiler will decide whether it is reasonable to
--use them, and this decision is usually correct.
--
-- This means that no calls to the library functions may be necessary,
--and can increase the speed of generated code significantly. The
--drawback is that code size will increase, and the increase is not
--always negligible.
--
-- There are two kind of inline functions: Those that give the same
--result as the library functions and others that might not set `errno'
--and might have a reduced precision and/or argument range in comparison
--with the library functions. The latter inline functions are only
--available if the flag `-ffast-math' is given to GNU CC.
--
-- In cases where the inline functions and macros are not wanted the
--symbol `__NO_MATH_INLINES' should be defined before any system header is
--included. This will ensure that only library functions are used. Of
--course, it can be determined for each file in the project whether
--giving this option is preferable or not.
--
-- Not all hardware implements the entire IEEE 754 standard, and even
--if it does there may be a substantial performance penalty for using some
--of its features. For example, enabling traps on some processors forces
--the FPU to run un-pipelined, which can more than double calculation
--time.
--
--
--File: libc.info, Node: Arithmetic, Next: Date and Time, Prev: Mathematics, Up: Top
--
--Arithmetic Functions
--********************
--
-- This chapter contains information about functions for doing basic
--arithmetic operations, such as splitting a float into its integer and
--fractional parts or retrieving the imaginary part of a complex value.
--These functions are declared in the header files `math.h' and
--`complex.h'.
--
--* Menu:
--
--* Integers:: Basic integer types and concepts
--* Integer Division:: Integer division with guaranteed rounding.
--* Floating Point Numbers:: Basic concepts. IEEE 754.
--* Floating Point Classes:: The five kinds of floating-point number.
--* Floating Point Errors:: When something goes wrong in a calculation.
--* Rounding:: Controlling how results are rounded.
--* Control Functions:: Saving and restoring the FPU's state.
--* Arithmetic Functions:: Fundamental operations provided by the library.
--* Complex Numbers:: The types. Writing complex constants.
--* Operations on Complex:: Projection, conjugation, decomposition.
--* Parsing of Numbers:: Converting strings to numbers.
--* System V Number Conversion:: An archaic way to convert numbers to strings.
--
--
--File: libc.info, Node: Integers, Next: Integer Division, Up: Arithmetic
--
--Integers
--========
--
-- The C language defines several integer data types: integer, short
--integer, long integer, and character, all in both signed and unsigned
--varieties. The GNU C compiler extends the language to contain long
--long integers as well.
--
-- The C integer types were intended to allow code to be portable among
--machines with different inherent data sizes (word sizes), so each type
--may have different ranges on different machines. The problem with this
--is that a program often needs to be written for a particular range of
--integers, and sometimes must be written for a particular size of
--storage, regardless of what machine the program runs on.
--
-- To address this problem, the GNU C library contains C type
--definitions you can use to declare integers that meet your exact needs.
--Because the GNU C library header files are customized to a specific
--machine, your program source code doesn't have to be.
--
-- These `typedef's are in `stdint.h'.
--
-- If you require that an integer be represented in exactly N bits, use
--one of the following types, with the obvious mapping to bit size and
--signedness:
--
-- * int8_t
--
-- * int16_t
--
-- * int32_t
--
-- * int64_t
--
-- * uint8_t
--
-- * uint16_t
--
-- * uint32_t
--
-- * uint64_t
--
-- If your C compiler and target machine do not allow integers of a
--certain size, the corresponding above type does not exist.
--
-- If you don't need a specific storage size, but want the smallest data
--structure with _at least_ N bits, use one of these:
--
-- * int_least8_t
--
-- * int_least16_t
--
-- * int_least32_t
--
-- * int_least64_t
--
-- * uint_least8_t
--
-- * uint_least16_t
--
-- * uint_least32_t
--
-- * uint_least64_t
--
-- If you don't need a specific storage size, but want the data
--structure that allows the fastest access while having at least N bits
--(and among data structures with the same access speed, the smallest
--one), use one of these:
--
-- * int_fast8_t
--
-- * int_fast16_t
--
-- * int_fast32_t
--
-- * int_fast64_t
--
-- * uint_fast8_t
--
-- * uint_fast16_t
--
-- * uint_fast32_t
--
-- * uint_fast64_t
--
-- If you want an integer with the widest range possible on the
--platform on which it is being used, use one of the following. If you
--use these, you should write code that takes into account the variable
--size and range of the integer.
--
-- * intmax_t
--
-- * uintmax_t
--
-- The GNU C library also provides macros that tell you the maximum and
--minimum possible values for each integer data type. The macro names
--follow these examples: `INT32_MAX', `UINT8_MAX', `INT_FAST32_MIN',
--`INT_LEAST64_MIN', `UINTMAX_MAX', `INTMAX_MAX', `INTMAX_MIN'. Note
--that there are no macros for unsigned integer minima. These are always
--zero.
--
-- There are similar macros for use with C's built in integer types
--which should come with your C compiler. These are described in *Note
--Data Type Measurements::.
--
-- Don't forget you can use the C `sizeof' function with any of these
--data types to get the number of bytes of storage each uses.
--
--
--File: libc.info, Node: Integer Division, Next: Floating Point Numbers, Prev: Integers, Up: Arithmetic
--
--Integer Division
--================
--
-- This section describes functions for performing integer division.
--These functions are redundant when GNU CC is used, because in GNU C the
--`/' operator always rounds towards zero. But in other C
--implementations, `/' may round differently with negative arguments.
--`div' and `ldiv' are useful because they specify how to round the
--quotient: towards zero. The remainder has the same sign as the
--numerator.
--
-- These functions are specified to return a result R such that the
--value `R.quot*DENOMINATOR + R.rem' equals NUMERATOR.
--
-- To use these facilities, you should include the header file
--`stdlib.h' in your program.
--
-- - Data Type: div_t
-- This is a structure type used to hold the result returned by the
-- `div' function. It has the following members:
--
-- `int quot'
-- The quotient from the division.
--
-- `int rem'
-- The remainder from the division.
--
-- - Function: div_t div (int NUMERATOR, int DENOMINATOR)
-- This function `div' computes the quotient and remainder from the
-- division of NUMERATOR by DENOMINATOR, returning the result in a
-- structure of type `div_t'.
--
-- If the result cannot be represented (as in a division by zero), the
-- behavior is undefined.
--
-- Here is an example, albeit not a very useful one.
--
-- div_t result;
-- result = div (20, -6);
--
-- Now `result.quot' is `-3' and `result.rem' is `2'.
--
-- - Data Type: ldiv_t
-- This is a structure type used to hold the result returned by the
-- `ldiv' function. It has the following members:
--
-- `long int quot'
-- The quotient from the division.
--
-- `long int rem'
-- The remainder from the division.
--
-- (This is identical to `div_t' except that the components are of
-- type `long int' rather than `int'.)
--
-- - Function: ldiv_t ldiv (long int NUMERATOR, long int DENOMINATOR)
-- The `ldiv' function is similar to `div', except that the arguments
-- are of type `long int' and the result is returned as a structure
-- of type `ldiv_t'.
--
-- - Data Type: lldiv_t
-- This is a structure type used to hold the result returned by the
-- `lldiv' function. It has the following members:
--
-- `long long int quot'
-- The quotient from the division.
--
-- `long long int rem'
-- The remainder from the division.
--
-- (This is identical to `div_t' except that the components are of
-- type `long long int' rather than `int'.)
--
-- - Function: lldiv_t lldiv (long long int NUMERATOR, long long int
-- DENOMINATOR)
-- The `lldiv' function is like the `div' function, but the arguments
-- are of type `long long int' and the result is returned as a
-- structure of type `lldiv_t'.
--
-- The `lldiv' function was added in ISO C99.
--
-- - Data Type: imaxdiv_t
-- This is a structure type used to hold the result returned by the
-- `imaxdiv' function. It has the following members:
--
-- `intmax_t quot'
-- The quotient from the division.
--
-- `intmax_t rem'
-- The remainder from the division.
--
-- (This is identical to `div_t' except that the components are of
-- type `intmax_t' rather than `int'.)
--
-- See *Note Integers:: for a description of the `intmax_t' type.
--
--
-- - Function: imaxdiv_t imaxdiv (intmax_t NUMERATOR, intmax_t
-- DENOMINATOR)
-- The `imaxdiv' function is like the `div' function, but the
-- arguments are of type `intmax_t' and the result is returned as a
-- structure of type `imaxdiv_t'.
--
-- See *Note Integers:: for a description of the `intmax_t' type.
--
-- The `imaxdiv' function was added in ISO C99.
--
--
--File: libc.info, Node: Floating Point Numbers, Next: Floating Point Classes, Prev: Integer Division, Up: Arithmetic
--
--Floating Point Numbers
--======================
--
-- Most computer hardware has support for two different kinds of
--numbers: integers (...-3, -2, -1, 0, 1, 2, 3...) and floating-point
--numbers. Floating-point numbers have three parts: the "mantissa", the
--"exponent", and the "sign bit". The real number represented by a
--floating-point value is given by (s ? -1 : 1) * 2^e * M where s is the
--sign bit, e the exponent, and M the mantissa. *Note Floating Point
--Concepts::, for details. (It is possible to have a different "base"
--for the exponent, but all modern hardware uses 2.)
--
-- Floating-point numbers can represent a finite subset of the real
--numbers. While this subset is large enough for most purposes, it is
--important to remember that the only reals that can be represented
--exactly are rational numbers that have a terminating binary expansion
--shorter than the width of the mantissa. Even simple fractions such as
--1/5 can only be approximated by floating point.
--
-- Mathematical operations and functions frequently need to produce
--values that are not representable. Often these values can be
--approximated closely enough for practical purposes, but sometimes they
--can't. Historically there was no way to tell when the results of a
--calculation were inaccurate. Modern computers implement the IEEE 754
--standard for numerical computations, which defines a framework for
--indicating to the program when the results of calculation are not
--trustworthy. This framework consists of a set of "exceptions" that
--indicate why a result could not be represented, and the special values
--"infinity" and "not a number" (NaN).
--
--
--File: libc.info, Node: Floating Point Classes, Next: Floating Point Errors, Prev: Floating Point Numbers, Up: Arithmetic
--
--Floating-Point Number Classification Functions
--==============================================
--
-- ISO C99 defines macros that let you determine what sort of
--floating-point number a variable holds.
--
-- - Macro: int fpclassify (_float-type_ X)
-- This is a generic macro which works on all floating-point types and
-- which returns a value of type `int'. The possible values are:
--
-- `FP_NAN'
-- The floating-point number X is "Not a Number" (*note Infinity
-- and NaN::)
--
-- `FP_INFINITE'
-- The value of X is either plus or minus infinity (*note
-- Infinity and NaN::)
--
-- `FP_ZERO'
-- The value of X is zero. In floating-point formats like
-- IEEE 754, where zero can be signed, this value is also
-- returned if X is negative zero.
--
-- `FP_SUBNORMAL'
-- Numbers whose absolute value is too small to be represented
-- in the normal format are represented in an alternate,
-- "denormalized" format (*note Floating Point Concepts::).
-- This format is less precise but can represent values closer
-- to zero. `fpclassify' returns this value for values of X in
-- this alternate format.
--
-- `FP_NORMAL'
-- This value is returned for all other values of X. It
-- indicates that there is nothing special about the number.
--
--
-- `fpclassify' is most useful if more than one property of a number
--must be tested. There are more specific macros which only test one
--property at a time. Generally these macros execute faster than
--`fpclassify', since there is special hardware support for them. You
--should therefore use the specific macros whenever possible.
--
-- - Macro: int isfinite (_float-type_ X)
-- This macro returns a nonzero value if X is finite: not plus or
-- minus infinity, and not NaN. It is equivalent to
--
-- (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE)
--
-- `isfinite' is implemented as a macro which accepts any
-- floating-point type.
--
-- - Macro: int isnormal (_float-type_ X)
-- This macro returns a nonzero value if X is finite and normalized.
-- It is equivalent to
--
-- (fpclassify (x) == FP_NORMAL)
--
-- - Macro: int isnan (_float-type_ X)
-- This macro returns a nonzero value if X is NaN. It is equivalent
-- to
--
-- (fpclassify (x) == FP_NAN)
--
-- Another set of floating-point classification functions was provided
--by BSD. The GNU C library also supports these functions; however, we
--recommend that you use the ISO C99 macros in new code. Those are
--standard and will be available more widely. Also, since they are
--macros, you do not have to worry about the type of their argument.
--
-- - Function: int isinf (double X)
-- - Function: int isinff (float X)
-- - Function: int isinfl (long double X)
-- This function returns `-1' if X represents negative infinity, `1'
-- if X represents positive infinity, and `0' otherwise.
--
-- - Function: int isnan (double X)
-- - Function: int isnanf (float X)
-- - Function: int isnanl (long double X)
-- This function returns a nonzero value if X is a "not a number"
-- value, and zero otherwise.
--
-- *Note:* The `isnan' macro defined by ISO C99 overrides the BSD
-- function. This is normally not a problem, because the two
-- routines behave identically. However, if you really need to get
-- the BSD function for some reason, you can write
--
-- (isnan) (x)
--
-- - Function: int finite (double X)
-- - Function: int finitef (float X)
-- - Function: int finitel (long double X)
-- This function returns a nonzero value if X is finite or a "not a
-- number" value, and zero otherwise.
--
-- *Portability Note:* The functions listed in this section are BSD
--extensions.
--
--
--File: libc.info, Node: Floating Point Errors, Next: Rounding, Prev: Floating Point Classes, Up: Arithmetic
--
--Errors in Floating-Point Calculations
--=====================================
--
--* Menu:
--
--* FP Exceptions:: IEEE 754 math exceptions and how to detect them.
--* Infinity and NaN:: Special values returned by calculations.
--* Status bit operations:: Checking for exceptions after the fact.
--* Math Error Reporting:: How the math functions report errors.
--
--
--File: libc.info, Node: FP Exceptions, Next: Infinity and NaN, Up: Floating Point Errors
--
--FP Exceptions
---------------
--
-- The IEEE 754 standard defines five "exceptions" that can occur
--during a calculation. Each corresponds to a particular sort of error,
--such as overflow.
--
-- When exceptions occur (when exceptions are "raised", in the language
--of the standard), one of two things can happen. By default the
--exception is simply noted in the floating-point "status word", and the
--program continues as if nothing had happened. The operation produces a
--default value, which depends on the exception (see the table below).
--Your program can check the status word to find out which exceptions
--happened.
--
-- Alternatively, you can enable "traps" for exceptions. In that case,
--when an exception is raised, your program will receive the `SIGFPE'
--signal. The default action for this signal is to terminate the
--program. *Note Signal Handling::, for how you can change the effect of
--the signal.
--
-- In the System V math library, the user-defined function `matherr' is
--called when certain exceptions occur inside math library functions.
--However, the Unix98 standard deprecates this interface. We support it
--for historical compatibility, but recommend that you do not use it in
--new programs.
--
--The exceptions defined in IEEE 754 are:
--
--`Invalid Operation'
-- This exception is raised if the given operands are invalid for the
-- operation to be performed. Examples are (see IEEE 754, section 7):
-- 1. Addition or subtraction: oo - oo. (But oo + oo = oo).
--
-- 2. Multiplication: 0 * oo.
--
-- 3. Division: 0/0 or oo/oo.
--
-- 4. Remainder: x REM y, where y is zero or x is infinite.
--
-- 5. Square root if the operand is less then zero. More
-- generally, any mathematical function evaluated outside its
-- domain produces this exception.
--
-- 6. Conversion of a floating-point number to an integer or decimal
-- string, when the number cannot be represented in the target
-- format (due to overflow, infinity, or NaN).
--
-- 7. Conversion of an unrecognizable input string.
--
-- 8. Comparison via predicates involving < or >, when one or other
-- of the operands is NaN. You can prevent this exception by
-- using the unordered comparison functions instead; see *Note
-- FP Comparison Functions::.
--
-- If the exception does not trap, the result of the operation is NaN.
--
--`Division by Zero'
-- This exception is raised when a finite nonzero number is divided
-- by zero. If no trap occurs the result is either +oo or -oo,
-- depending on the signs of the operands.
--
--`Overflow'
-- This exception is raised whenever the result cannot be represented
-- as a finite value in the precision format of the destination. If
-- no trap occurs the result depends on the sign of the intermediate
-- result and the current rounding mode (IEEE 754, section 7.3):
-- 1. Round to nearest carries all overflows to oo with the sign of
-- the intermediate result.
--
-- 2. Round toward 0 carries all overflows to the largest
-- representable finite number with the sign of the intermediate
-- result.
--
-- 3. Round toward -oo carries positive overflows to the largest
-- representable finite number and negative overflows to -oo.
--
-- 4. Round toward oo carries negative overflows to the most
-- negative representable finite number and positive overflows
-- to oo.
--
-- Whenever the overflow exception is raised, the inexact exception
-- is also raised.
--
--`Underflow'
-- The underflow exception is raised when an intermediate result is
-- too small to be calculated accurately, or if the operation's
-- result rounded to the destination precision is too small to be
-- normalized.
--
-- When no trap is installed for the underflow exception, underflow is
-- signaled (via the underflow flag) only when both tininess and loss
-- of accuracy have been detected. If no trap handler is installed
-- the operation continues with an imprecise small value, or zero if
-- the destination precision cannot hold the small exact result.
--
--`Inexact'
-- This exception is signalled if a rounded result is not exact (such
-- as when calculating the square root of two) or a result overflows
-- without an overflow trap.
--
--
--File: libc.info, Node: Infinity and NaN, Next: Status bit operations, Prev: FP Exceptions, Up: Floating Point Errors
--
--Infinity and NaN
------------------
--
-- IEEE 754 floating point numbers can represent positive or negative
--infinity, and "NaN" (not a number). These three values arise from
--calculations whose result is undefined or cannot be represented
--accurately. You can also deliberately set a floating-point variable to
--any of them, which is sometimes useful. Some examples of calculations
--that produce infinity or NaN:
--
-- 1/0 = oo
-- log (0) = -oo
-- sqrt (-1) = NaN
--
-- When a calculation produces any of these values, an exception also
--occurs; see *Note FP Exceptions::.
--
-- The basic operations and math functions all accept infinity and NaN
--and produce sensible output. Infinities propagate through calculations
--as one would expect: for example, 2 + oo = oo, 4/oo = 0, atan (oo) =
--pi/2. NaN, on the other hand, infects any calculation that involves
--it. Unless the calculation would produce the same result no matter
--what real value replaced NaN, the result is NaN.
--
-- In comparison operations, positive infinity is larger than all values
--except itself and NaN, and negative infinity is smaller than all values
--except itself and NaN. NaN is "unordered": it is not equal to, greater
--than, or less than anything, _including itself_. `x == x' is false if
--the value of `x' is NaN. You can use this to test whether a value is
--NaN or not, but the recommended way to test for NaN is with the `isnan'
--function (*note Floating Point Classes::). In addition, `<', `>',
--`<=', and `>=' will raise an exception when applied to NaNs.
--
-- `math.h' defines macros that allow you to explicitly set a variable
--to infinity or NaN.
--
-- - Macro: float INFINITY
-- An expression representing positive infinity. It is equal to the
-- value produced by mathematical operations like `1.0 / 0.0'.
-- `-INFINITY' represents negative infinity.
--
-- You can test whether a floating-point value is infinite by
-- comparing it to this macro. However, this is not recommended; you
-- should use the `isfinite' macro instead. *Note Floating Point
-- Classes::.
--
-- This macro was introduced in the ISO C99 standard.
--
-- - Macro: float NAN
-- An expression representing a value which is "not a number". This
-- macro is a GNU extension, available only on machines that support
-- the "not a number" value--that is to say, on all machines that
-- support IEEE floating point.
--
-- You can use `#ifdef NAN' to test whether the machine supports NaN.
-- (Of course, you must arrange for GNU extensions to be visible,
-- such as by defining `_GNU_SOURCE', and then you must include
-- `math.h'.)
--
-- IEEE 754 also allows for another unusual value: negative zero. This
--value is produced when you divide a positive number by negative
--infinity, or when a negative result is smaller than the limits of
--representation. Negative zero behaves identically to zero in all
--calculations, unless you explicitly test the sign bit with `signbit' or
--`copysign'.
--
--
--File: libc.info, Node: Status bit operations, Next: Math Error Reporting, Prev: Infinity and NaN, Up: Floating Point Errors
--
--Examining the FPU status word
-------------------------------
--
-- ISO C99 defines functions to query and manipulate the floating-point
--status word. You can use these functions to check for untrapped
--exceptions when it's convenient, rather than worrying about them in the
--middle of a calculation.
--
-- These constants represent the various IEEE 754 exceptions. Not all
--FPUs report all the different exceptions. Each constant is defined if
--and only if the FPU you are compiling for supports that exception, so
--you can test for FPU support with `#ifdef'. They are defined in
--`fenv.h'.
--
--`FE_INEXACT'
-- The inexact exception.
--
--`FE_DIVBYZERO'
-- The divide by zero exception.
--
--`FE_UNDERFLOW'
-- The underflow exception.
--
--`FE_OVERFLOW'
-- The overflow exception.
--
--`FE_INVALID'
-- The invalid exception.
--
-- The macro `FE_ALL_EXCEPT' is the bitwise OR of all exception macros
--which are supported by the FP implementation.
--
-- These functions allow you to clear exception flags, test for
--exceptions, and save and restore the set of exceptions flagged.
--
-- - Function: int feclearexcept (int EXCEPTS)
-- This function clears all of the supported exception flags
-- indicated by EXCEPTS.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- - Function: int feraiseexcept (int EXCEPTS)
-- This function raises the supported exceptions indicated by
-- EXCEPTS. If more than one exception bit in EXCEPTS is set the
-- order in which the exceptions are raised is undefined except that
-- overflow (`FE_OVERFLOW') or underflow (`FE_UNDERFLOW') are raised
-- before inexact (`FE_INEXACT'). Whether for overflow or underflow
-- the inexact exception is also raised is also implementation
-- dependent.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- - Function: int fetestexcept (int EXCEPTS)
-- Test whether the exception flags indicated by the parameter EXCEPT
-- are currently set. If any of them are, a nonzero value is returned
-- which specifies which exceptions are set. Otherwise the result is
-- zero.
--
-- To understand these functions, imagine that the status word is an
--integer variable named STATUS. `feclearexcept' is then equivalent to
--`status &= ~excepts' and `fetestexcept' is equivalent to `(status &
--excepts)'. The actual implementation may be very different, of course.
--
-- Exception flags are only cleared when the program explicitly
--requests it, by calling `feclearexcept'. If you want to check for
--exceptions from a set of calculations, you should clear all the flags
--first. Here is a simple example of the way to use `fetestexcept':
--
-- {
-- double f;
-- int raised;
-- feclearexcept (FE_ALL_EXCEPT);
-- f = compute ();
-- raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
-- if (raised & FE_OVERFLOW) { /* ... */ }
-- if (raised & FE_INVALID) { /* ... */ }
-- /* ... */
-- }
--
-- You cannot explicitly set bits in the status word. You can, however,
--save the entire status word and restore it later. This is done with the
--following functions:
--
-- - Function: int fegetexceptflag (fexcept_t *FLAGP, int EXCEPTS)
-- This function stores in the variable pointed to by FLAGP an
-- implementation-defined value representing the current setting of
-- the exception flags indicated by EXCEPTS.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- - Function: int fesetexceptflag (const fexcept_t *FLAGP, int
-- EXCEPTS) This function restores the flags for the exceptions
-- indicated by EXCEPTS to the values stored in the variable pointed
-- to by FLAGP.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- Note that the value stored in `fexcept_t' bears no resemblance to
--the bit mask returned by `fetestexcept'. The type may not even be an
--integer. Do not attempt to modify an `fexcept_t' variable.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-34 glibc-2.3.2-200304020432/manual/libc.info-34
---- glibc-2.3.2/manual/libc.info-34 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-34 Thu Jan 1 01:00:00 1970
-@@ -1,1120 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Math Error Reporting, Prev: Status bit operations, Up: Floating Point Errors
--
--Error Reporting by Mathematical Functions
-------------------------------------------
--
-- Many of the math functions are defined only over a subset of the
--real or complex numbers. Even if they are mathematically defined,
--their result may be larger or smaller than the range representable by
--their return type. These are known as "domain errors", "overflows", and
--"underflows", respectively. Math functions do several things when one
--of these errors occurs. In this manual we will refer to the complete
--response as "signalling" a domain error, overflow, or underflow.
--
-- When a math function suffers a domain error, it raises the invalid
--exception and returns NaN. It also sets ERRNO to `EDOM'; this is for
--compatibility with old systems that do not support IEEE 754 exception
--handling. Likewise, when overflow occurs, math functions raise the
--overflow exception and return oo or -oo as appropriate. They also set
--ERRNO to `ERANGE'. When underflow occurs, the underflow exception is
--raised, and zero (appropriately signed) is returned. ERRNO may be set
--to `ERANGE', but this is not guaranteed.
--
-- Some of the math functions are defined mathematically to result in a
--complex value over parts of their domains. The most familiar example of
--this is taking the square root of a negative number. The complex math
--functions, such as `csqrt', will return the appropriate complex value
--in this case. The real-valued functions, such as `sqrt', will signal a
--domain error.
--
-- Some older hardware does not support infinities. On that hardware,
--overflows instead return a particular very large number (usually the
--largest representable number). `math.h' defines macros you can use to
--test for overflow on both old and new hardware.
--
-- - Macro: double HUGE_VAL
-- - Macro: float HUGE_VALF
-- - Macro: long double HUGE_VALL
-- An expression representing a particular very large number. On
-- machines that use IEEE 754 floating point format, `HUGE_VAL' is
-- infinity. On other machines, it's typically the largest positive
-- number that can be represented.
--
-- Mathematical functions return the appropriately typed version of
-- `HUGE_VAL' or `-HUGE_VAL' when the result is too large to be
-- represented.
--
--
--File: libc.info, Node: Rounding, Next: Control Functions, Prev: Floating Point Errors, Up: Arithmetic
--
--Rounding Modes
--==============
--
-- Floating-point calculations are carried out internally with extra
--precision, and then rounded to fit into the destination type. This
--ensures that results are as precise as the input data. IEEE 754
--defines four possible rounding modes:
--
--Round to nearest.
-- This is the default mode. It should be used unless there is a
-- specific need for one of the others. In this mode results are
-- rounded to the nearest representable value. If the result is
-- midway between two representable values, the even representable is
-- chosen. "Even" here means the lowest-order bit is zero. This
-- rounding mode prevents statistical bias and guarantees numeric
-- stability: round-off errors in a lengthy calculation will remain
-- smaller than half of `FLT_EPSILON'.
--
--Round toward plus Infinity.
-- All results are rounded to the smallest representable value which
-- is greater than the result.
--
--Round toward minus Infinity.
-- All results are rounded to the largest representable value which
-- is less than the result.
--
--Round toward zero.
-- All results are rounded to the largest representable value whose
-- magnitude is less than that of the result. In other words, if the
-- result is negative it is rounded up; if it is positive, it is
-- rounded down.
--
--`fenv.h' defines constants which you can use to refer to the various
--rounding modes. Each one will be defined if and only if the FPU
--supports the corresponding rounding mode.
--
--`FE_TONEAREST'
-- Round to nearest.
--
--`FE_UPWARD'
-- Round toward +oo.
--
--`FE_DOWNWARD'
-- Round toward -oo.
--
--`FE_TOWARDZERO'
-- Round toward zero.
--
-- Underflow is an unusual case. Normally, IEEE 754 floating point
--numbers are always normalized (*note Floating Point Concepts::).
--Numbers smaller than 2^r (where r is the minimum exponent,
--`FLT_MIN_RADIX-1' for FLOAT) cannot be represented as normalized
--numbers. Rounding all such numbers to zero or 2^r would cause some
--algorithms to fail at 0. Therefore, they are left in denormalized
--form. That produces loss of precision, since some bits of the mantissa
--are stolen to indicate the decimal point.
--
-- If a result is too small to be represented as a denormalized number,
--it is rounded to zero. However, the sign of the result is preserved; if
--the calculation was negative, the result is "negative zero". Negative
--zero can also result from some operations on infinity, such as 4/-oo.
--Negative zero behaves identically to zero except when the `copysign' or
--`signbit' functions are used to check the sign bit directly.
--
-- At any time one of the above four rounding modes is selected. You
--can find out which one with this function:
--
-- - Function: int fegetround (void)
-- Returns the currently selected rounding mode, represented by one
-- of the values of the defined rounding mode macros.
--
--To change the rounding mode, use this function:
--
-- - Function: int fesetround (int ROUND)
-- Changes the currently selected rounding mode to ROUND. If ROUND
-- does not correspond to one of the supported rounding modes nothing
-- is changed. `fesetround' returns zero if it changed the rounding
-- mode, a nonzero value if the mode is not supported.
--
-- You should avoid changing the rounding mode if possible. It can be
--an expensive operation; also, some hardware requires you to compile your
--program differently for it to work. The resulting code may run slower.
--See your compiler documentation for details.
--
--
--File: libc.info, Node: Control Functions, Next: Arithmetic Functions, Prev: Rounding, Up: Arithmetic
--
--Floating-Point Control Functions
--================================
--
-- IEEE 754 floating-point implementations allow the programmer to
--decide whether traps will occur for each of the exceptions, by setting
--bits in the "control word". In C, traps result in the program
--receiving the `SIGFPE' signal; see *Note Signal Handling::.
--
-- *Note:* IEEE 754 says that trap handlers are given details of the
--exceptional situation, and can set the result value. C signals do not
--provide any mechanism to pass this information back and forth.
--Trapping exceptions in C is therefore not very useful.
--
-- It is sometimes necessary to save the state of the floating-point
--unit while you perform some calculation. The library provides functions
--which save and restore the exception flags, the set of exceptions that
--generate traps, and the rounding mode. This information is known as the
--"floating-point environment".
--
-- The functions to save and restore the floating-point environment all
--use a variable of type `fenv_t' to store information. This type is
--defined in `fenv.h'. Its size and contents are implementation-defined.
--You should not attempt to manipulate a variable of this type directly.
--
-- To save the state of the FPU, use one of these functions:
--
-- - Function: int fegetenv (fenv_t *ENVP)
-- Store the floating-point environment in the variable pointed to by
-- ENVP.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- - Function: int feholdexcept (fenv_t *ENVP)
-- Store the current floating-point environment in the object pointed
-- to by ENVP. Then clear all exception flags, and set the FPU to
-- trap no exceptions. Not all FPUs support trapping no exceptions;
-- if `feholdexcept' cannot set this mode, it returns nonzero value.
-- If it succeeds, it returns zero.
--
-- The functions which restore the floating-point environment can take
--these kinds of arguments:
--
-- * Pointers to `fenv_t' objects, which were initialized previously by
-- a call to `fegetenv' or `feholdexcept'.
--
-- * The special macro `FE_DFL_ENV' which represents the floating-point
-- environment as it was available at program start.
--
-- * Implementation defined macros with names starting with `FE_' and
-- having type `fenv_t *'.
--
-- If possible, the GNU C Library defines a macro `FE_NOMASK_ENV'
-- which represents an environment where every exception raised
-- causes a trap to occur. You can test for this macro using
-- `#ifdef'. It is only defined if `_GNU_SOURCE' is defined.
--
-- Some platforms might define other predefined environments.
--
--To set the floating-point environment, you can use either of these
--functions:
--
-- - Function: int fesetenv (const fenv_t *ENVP)
-- Set the floating-point environment to that described by ENVP.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
-- - Function: int feupdateenv (const fenv_t *ENVP)
-- Like `fesetenv', this function sets the floating-point environment
-- to that described by ENVP. However, if any exceptions were
-- flagged in the status word before `feupdateenv' was called, they
-- remain flagged after the call. In other words, after `feupdateenv'
-- is called, the status word is the bitwise OR of the previous
-- status word and the one saved in ENVP.
--
-- The function returns zero in case the operation was successful, a
-- non-zero value otherwise.
--
--To control for individual exceptions if raising them causes a trap to
--occur, you can use the following two functions.
--
-- *Portability Note:* These functions are all GNU extensions.
--
-- - Function: int feenableexcept (int EXCEPTS)
-- This functions enables traps for each of the exceptions as
-- indicated by the parameter EXCEPT. The individual excepetions are
-- described in *Note Status bit operations::. Only the specified
-- exceptions are enabled, the status of the other exceptions is not
-- changed.
--
-- The function returns the previous enabled exceptions in case the
-- operation was successful, `-1' otherwise.
--
-- - Function: int fedisableexcept (int EXCEPTS)
-- This functions disables traps for each of the exceptions as
-- indicated by the parameter EXCEPT. The individual excepetions are
-- described in *Note Status bit operations::. Only the specified
-- exceptions are disabled, the status of the other exceptions is not
-- changed.
--
-- The function returns the previous enabled exceptions in case the
-- operation was successful, `-1' otherwise.
--
-- - Function: int fegetexcept (int EXCEPTS)
-- The function returns a bitmask of all currently enabled
-- exceptions. It returns `-1' in case of failure.
--
--
--File: libc.info, Node: Arithmetic Functions, Next: Complex Numbers, Prev: Control Functions, Up: Arithmetic
--
--Arithmetic Functions
--====================
--
-- The C library provides functions to do basic operations on
--floating-point numbers. These include absolute value, maximum and
--minimum, normalization, bit twiddling, rounding, and a few others.
--
--* Menu:
--
--* Absolute Value:: Absolute values of integers and floats.
--* Normalization Functions:: Extracting exponents and putting them back.
--* Rounding Functions:: Rounding floats to integers.
--* Remainder Functions:: Remainders on division, precisely defined.
--* FP Bit Twiddling:: Sign bit adjustment. Adding epsilon.
--* FP Comparison Functions:: Comparisons without risk of exceptions.
--* Misc FP Arithmetic:: Max, min, positive difference, multiply-add.
--
--
--File: libc.info, Node: Absolute Value, Next: Normalization Functions, Up: Arithmetic Functions
--
--Absolute Value
----------------
--
-- These functions are provided for obtaining the "absolute value" (or
--"magnitude") of a number. The absolute value of a real number X is X
--if X is positive, -X if X is negative. For a complex number Z, whose
--real part is X and whose imaginary part is Y, the absolute value is
--`sqrt (X*X + Y*Y)'.
--
-- Prototypes for `abs', `labs' and `llabs' are in `stdlib.h';
--`imaxabs' is declared in `inttypes.h'; `fabs', `fabsf' and `fabsl' are
--declared in `math.h'. `cabs', `cabsf' and `cabsl' are declared in
--`complex.h'.
--
-- - Function: int abs (int NUMBER)
-- - Function: long int labs (long int NUMBER)
-- - Function: long long int llabs (long long int NUMBER)
-- - Function: intmax_t imaxabs (intmax_t NUMBER)
-- These functions return the absolute value of NUMBER.
--
-- Most computers use a two's complement integer representation, in
-- which the absolute value of `INT_MIN' (the smallest possible `int')
-- cannot be represented; thus, `abs (INT_MIN)' is not defined.
--
-- `llabs' and `imaxdiv' are new to ISO C99.
--
-- See *Note Integers:: for a description of the `intmax_t' type.
--
--
-- - Function: double fabs (double NUMBER)
-- - Function: float fabsf (float NUMBER)
-- - Function: long double fabsl (long double NUMBER)
-- This function returns the absolute value of the floating-point
-- number NUMBER.
--
-- - Function: double cabs (complex double Z)
-- - Function: float cabsf (complex float Z)
-- - Function: long double cabsl (complex long double Z)
-- These functions return the absolute value of the complex number Z
-- (*note Complex Numbers::). The absolute value of a complex number
-- is:
--
-- sqrt (creal (Z) * creal (Z) + cimag (Z) * cimag (Z))
--
-- This function should always be used instead of the direct formula
-- because it takes special care to avoid losing precision. It may
-- also take advantage of hardware support for this operation. See
-- `hypot' in *Note Exponents and Logarithms::.
--
--
--File: libc.info, Node: Normalization Functions, Next: Rounding Functions, Prev: Absolute Value, Up: Arithmetic Functions
--
--Normalization Functions
-------------------------
--
-- The functions described in this section are primarily provided as a
--way to efficiently perform certain low-level manipulations on floating
--point numbers that are represented internally using a binary radix; see
--*Note Floating Point Concepts::. These functions are required to have
--equivalent behavior even if the representation does not use a radix of
--2, but of course they are unlikely to be particularly efficient in
--those cases.
--
-- All these functions are declared in `math.h'.
--
-- - Function: double frexp (double VALUE, int *EXPONENT)
-- - Function: float frexpf (float VALUE, int *EXPONENT)
-- - Function: long double frexpl (long double VALUE, int *EXPONENT)
-- These functions are used to split the number VALUE into a
-- normalized fraction and an exponent.
--
-- If the argument VALUE is not zero, the return value is VALUE times
-- a power of two, and is always in the range 1/2 (inclusive) to 1
-- (exclusive). The corresponding exponent is stored in `*EXPONENT';
-- the return value multiplied by 2 raised to this exponent equals
-- the original number VALUE.
--
-- For example, `frexp (12.8, &exponent)' returns `0.8' and stores
-- `4' in `exponent'.
--
-- If VALUE is zero, then the return value is zero and zero is stored
-- in `*EXPONENT'.
--
-- - Function: double ldexp (double VALUE, int EXPONENT)
-- - Function: float ldexpf (float VALUE, int EXPONENT)
-- - Function: long double ldexpl (long double VALUE, int EXPONENT)
-- These functions return the result of multiplying the floating-point
-- number VALUE by 2 raised to the power EXPONENT. (It can be used
-- to reassemble floating-point numbers that were taken apart by
-- `frexp'.)
--
-- For example, `ldexp (0.8, 4)' returns `12.8'.
--
-- The following functions, which come from BSD, provide facilities
--equivalent to those of `ldexp' and `frexp'. See also the ISO C
--function `logb' which originally also appeared in BSD.
--
-- - Function: double scalb (double VALUE, int EXPONENT)
-- - Function: float scalbf (float VALUE, int EXPONENT)
-- - Function: long double scalbl (long double VALUE, int EXPONENT)
-- The `scalb' function is the BSD name for `ldexp'.
--
-- - Function: long long int scalbn (double X, int n)
-- - Function: long long int scalbnf (float X, int n)
-- - Function: long long int scalbnl (long double X, int n)
-- `scalbn' is identical to `scalb', except that the exponent N is an
-- `int' instead of a floating-point number.
--
-- - Function: long long int scalbln (double X, long int n)
-- - Function: long long int scalblnf (float X, long int n)
-- - Function: long long int scalblnl (long double X, long int n)
-- `scalbln' is identical to `scalb', except that the exponent N is a
-- `long int' instead of a floating-point number.
--
-- - Function: long long int significand (double X)
-- - Function: long long int significandf (float X)
-- - Function: long long int significandl (long double X)
-- `significand' returns the mantissa of X scaled to the range [1, 2).
-- It is equivalent to `scalb (X, (double) -ilogb (X))'.
--
-- This function exists mainly for use in certain standardized tests
-- of IEEE 754 conformance.
--
--
--File: libc.info, Node: Rounding Functions, Next: Remainder Functions, Prev: Normalization Functions, Up: Arithmetic Functions
--
--Rounding Functions
--------------------
--
-- The functions listed here perform operations such as rounding and
--truncation of floating-point values. Some of these functions convert
--floating point numbers to integer values. They are all declared in
--`math.h'.
--
-- You can also convert floating-point numbers to integers simply by
--casting them to `int'. This discards the fractional part, effectively
--rounding towards zero. However, this only works if the result can
--actually be represented as an `int'--for very large numbers, this is
--impossible. The functions listed here return the result as a `double'
--instead to get around this problem.
--
-- - Function: double ceil (double X)
-- - Function: float ceilf (float X)
-- - Function: long double ceill (long double X)
-- These functions round X upwards to the nearest integer, returning
-- that value as a `double'. Thus, `ceil (1.5)' is `2.0'.
--
-- - Function: double floor (double X)
-- - Function: float floorf (float X)
-- - Function: long double floorl (long double X)
-- These functions round X downwards to the nearest integer,
-- returning that value as a `double'. Thus, `floor (1.5)' is `1.0'
-- and `floor (-1.5)' is `-2.0'.
--
-- - Function: double trunc (double X)
-- - Function: float truncf (float X)
-- - Function: long double truncl (long double X)
-- The `trunc' functions round X towards zero to the nearest integer
-- (returned in floating-point format). Thus, `trunc (1.5)' is `1.0'
-- and `trunc (-1.5)' is `-1.0'.
--
-- - Function: double rint (double X)
-- - Function: float rintf (float X)
-- - Function: long double rintl (long double X)
-- These functions round X to an integer value according to the
-- current rounding mode. *Note Floating Point Parameters::, for
-- information about the various rounding modes. The default
-- rounding mode is to round to the nearest integer; some machines
-- support other modes, but round-to-nearest is always used unless
-- you explicitly select another.
--
-- If X was not initially an integer, these functions raise the
-- inexact exception.
--
-- - Function: double nearbyint (double X)
-- - Function: float nearbyintf (float X)
-- - Function: long double nearbyintl (long double X)
-- These functions return the same value as the `rint' functions, but
-- do not raise the inexact exception if X is not an integer.
--
-- - Function: double round (double X)
-- - Function: float roundf (float X)
-- - Function: long double roundl (long double X)
-- These functions are similar to `rint', but they round halfway
-- cases away from zero instead of to the nearest even integer.
--
-- - Function: long int lrint (double X)
-- - Function: long int lrintf (float X)
-- - Function: long int lrintl (long double X)
-- These functions are just like `rint', but they return a `long int'
-- instead of a floating-point number.
--
-- - Function: long long int llrint (double X)
-- - Function: long long int llrintf (float X)
-- - Function: long long int llrintl (long double X)
-- These functions are just like `rint', but they return a `long long
-- int' instead of a floating-point number.
--
-- - Function: long int lround (double X)
-- - Function: long int lroundf (float X)
-- - Function: long int lroundl (long double X)
-- These functions are just like `round', but they return a `long
-- int' instead of a floating-point number.
--
-- - Function: long long int llround (double X)
-- - Function: long long int llroundf (float X)
-- - Function: long long int llroundl (long double X)
-- These functions are just like `round', but they return a `long
-- long int' instead of a floating-point number.
--
-- - Function: double modf (double VALUE, double *INTEGER-PART)
-- - Function: float modff (float VALUE, float *INTEGER-PART)
-- - Function: long double modfl (long double VALUE, long double
-- *INTEGER-PART)
-- These functions break the argument VALUE into an integer part and a
-- fractional part (between `-1' and `1', exclusive). Their sum
-- equals VALUE. Each of the parts has the same sign as VALUE, and
-- the integer part is always rounded toward zero.
--
-- `modf' stores the integer part in `*INTEGER-PART', and returns the
-- fractional part. For example, `modf (2.5, &intpart)' returns
-- `0.5' and stores `2.0' into `intpart'.
--
--
--File: libc.info, Node: Remainder Functions, Next: FP Bit Twiddling, Prev: Rounding Functions, Up: Arithmetic Functions
--
--Remainder Functions
---------------------
--
-- The functions in this section compute the remainder on division of
--two floating-point numbers. Each is a little different; pick the one
--that suits your problem.
--
-- - Function: double fmod (double NUMERATOR, double DENOMINATOR)
-- - Function: float fmodf (float NUMERATOR, float DENOMINATOR)
-- - Function: long double fmodl (long double NUMERATOR, long double
-- DENOMINATOR)
-- These functions compute the remainder from the division of
-- NUMERATOR by DENOMINATOR. Specifically, the return value is
-- `NUMERATOR - N * DENOMINATOR', where N is the quotient of
-- NUMERATOR divided by DENOMINATOR, rounded towards zero to an
-- integer. Thus, `fmod (6.5, 2.3)' returns `1.9', which is `6.5'
-- minus `4.6'.
--
-- The result has the same sign as the NUMERATOR and has magnitude
-- less than the magnitude of the DENOMINATOR.
--
-- If DENOMINATOR is zero, `fmod' signals a domain error.
--
-- - Function: double drem (double NUMERATOR, double DENOMINATOR)
-- - Function: float dremf (float NUMERATOR, float DENOMINATOR)
-- - Function: long double dreml (long double NUMERATOR, long double
-- DENOMINATOR)
-- These functions are like `fmod' except that they rounds the
-- internal quotient N to the nearest integer instead of towards zero
-- to an integer. For example, `drem (6.5, 2.3)' returns `-0.4',
-- which is `6.5' minus `6.9'.
--
-- The absolute value of the result is less than or equal to half the
-- absolute value of the DENOMINATOR. The difference between `fmod
-- (NUMERATOR, DENOMINATOR)' and `drem (NUMERATOR, DENOMINATOR)' is
-- always either DENOMINATOR, minus DENOMINATOR, or zero.
--
-- If DENOMINATOR is zero, `drem' signals a domain error.
--
-- - Function: double remainder (double NUMERATOR, double DENOMINATOR)
-- - Function: float remainderf (float NUMERATOR, float DENOMINATOR)
-- - Function: long double remainderl (long double NUMERATOR, long double
-- DENOMINATOR)
-- This function is another name for `drem'.
--
--
--File: libc.info, Node: FP Bit Twiddling, Next: FP Comparison Functions, Prev: Remainder Functions, Up: Arithmetic Functions
--
--Setting and modifying single bits of FP values
------------------------------------------------
--
-- There are some operations that are too complicated or expensive to
--perform by hand on floating-point numbers. ISO C99 defines functions
--to do these operations, which mostly involve changing single bits.
--
-- - Function: double copysign (double X, double Y)
-- - Function: float copysignf (float X, float Y)
-- - Function: long double copysignl (long double X, long double Y)
-- These functions return X but with the sign of Y. They work even
-- if X or Y are NaN or zero. Both of these can carry a sign
-- (although not all implementations support it) and this is one of
-- the few operations that can tell the difference.
--
-- `copysign' never raises an exception.
--
-- This function is defined in IEC 559 (and the appendix with
-- recommended functions in IEEE 754/IEEE 854).
--
-- - Function: int signbit (_float-type_ X)
-- `signbit' is a generic macro which can work on all floating-point
-- types. It returns a nonzero value if the value of X has its sign
-- bit set.
--
-- This is not the same as `x < 0.0', because IEEE 754 floating point
-- allows zero to be signed. The comparison `-0.0 < 0.0' is false,
-- but `signbit (-0.0)' will return a nonzero value.
--
-- - Function: double nextafter (double X, double Y)
-- - Function: float nextafterf (float X, float Y)
-- - Function: long double nextafterl (long double X, long double Y)
-- The `nextafter' function returns the next representable neighbor of
-- X in the direction towards Y. The size of the step between X and
-- the result depends on the type of the result. If X = Y the
-- function simply returns Y. If either value is `NaN', `NaN' is
-- returned. Otherwise a value corresponding to the value of the
-- least significant bit in the mantissa is added or subtracted,
-- depending on the direction. `nextafter' will signal overflow or
-- underflow if the result goes outside of the range of normalized
-- numbers.
--
-- This function is defined in IEC 559 (and the appendix with
-- recommended functions in IEEE 754/IEEE 854).
--
-- - Function: double nexttoward (double X, long double Y)
-- - Function: float nexttowardf (float X, long double Y)
-- - Function: long double nexttowardl (long double X, long double Y)
-- These functions are identical to the corresponding versions of
-- `nextafter' except that their second argument is a `long double'.
--
-- - Function: double nan (const char *TAGP)
-- - Function: float nanf (const char *TAGP)
-- - Function: long double nanl (const char *TAGP)
-- The `nan' function returns a representation of NaN, provided that
-- NaN is supported by the target platform. `nan
-- ("N-CHAR-SEQUENCE")' is equivalent to `strtod
-- ("NAN(N-CHAR-SEQUENCE)")'.
--
-- The argument TAGP is used in an unspecified manner. On IEEE 754
-- systems, there are many representations of NaN, and TAGP selects
-- one. On other systems it may do nothing.
--
--
--File: libc.info, Node: FP Comparison Functions, Next: Misc FP Arithmetic, Prev: FP Bit Twiddling, Up: Arithmetic Functions
--
--Floating-Point Comparison Functions
-------------------------------------
--
-- The standard C comparison operators provoke exceptions when one or
--other of the operands is NaN. For example,
--
-- int v = a < 1.0;
--
--will raise an exception if A is NaN. (This does _not_ happen with `=='
--and `!='; those merely return false and true, respectively, when NaN is
--examined.) Frequently this exception is undesirable. ISO C99
--therefore defines comparison functions that do not raise exceptions
--when NaN is examined. All of the functions are implemented as macros
--which allow their arguments to be of any floating-point type. The
--macros are guaranteed to evaluate their arguments only once.
--
-- - Macro: int isgreater (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether the argument X is greater than Y.
-- It is equivalent to `(X) > (Y)', but no exception is raised if X
-- or Y are NaN.
--
-- - Macro: int isgreaterequal (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether the argument X is greater than or
-- equal to Y. It is equivalent to `(X) >= (Y)', but no exception is
-- raised if X or Y are NaN.
--
-- - Macro: int isless (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether the argument X is less than Y. It
-- is equivalent to `(X) < (Y)', but no exception is raised if X or Y
-- are NaN.
--
-- - Macro: int islessequal (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether the argument X is less than or equal
-- to Y. It is equivalent to `(X) <= (Y)', but no exception is
-- raised if X or Y are NaN.
--
-- - Macro: int islessgreater (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether the argument X is less or greater
-- than Y. It is equivalent to `(X) < (Y) || (X) > (Y)' (although it
-- only evaluates X and Y once), but no exception is raised if X or Y
-- are NaN.
--
-- This macro is not equivalent to `X != Y', because that expression
-- is true if X or Y are NaN.
--
-- - Macro: int isunordered (_real-floating_ X, _real-floating_ Y)
-- This macro determines whether its arguments are unordered. In
-- other words, it is true if X or Y are NaN, and false otherwise.
--
-- Not all machines provide hardware support for these operations. On
--machines that don't, the macros can be very slow. Therefore, you should
--not use these functions when NaN is not a concern.
--
-- *Note:* There are no macros `isequal' or `isunequal'. They are
--unnecessary, because the `==' and `!=' operators do _not_ throw an
--exception if one or both of the operands are NaN.
--
--
--File: libc.info, Node: Misc FP Arithmetic, Prev: FP Comparison Functions, Up: Arithmetic Functions
--
--Miscellaneous FP arithmetic functions
---------------------------------------
--
-- The functions in this section perform miscellaneous but common
--operations that are awkward to express with C operators. On some
--processors these functions can use special machine instructions to
--perform these operations faster than the equivalent C code.
--
-- - Function: double fmin (double X, double Y)
-- - Function: float fminf (float X, float Y)
-- - Function: long double fminl (long double X, long double Y)
-- The `fmin' function returns the lesser of the two values X and Y.
-- It is similar to the expression
-- ((x) < (y) ? (x) : (y))
-- except that X and Y are only evaluated once.
--
-- If an argument is NaN, the other argument is returned. If both
-- arguments are NaN, NaN is returned.
--
-- - Function: double fmax (double X, double Y)
-- - Function: float fmaxf (float X, float Y)
-- - Function: long double fmaxl (long double X, long double Y)
-- The `fmax' function returns the greater of the two values X and Y.
--
-- If an argument is NaN, the other argument is returned. If both
-- arguments are NaN, NaN is returned.
--
-- - Function: double fdim (double X, double Y)
-- - Function: float fdimf (float X, float Y)
-- - Function: long double fdiml (long double X, long double Y)
-- The `fdim' function returns the positive difference between X and
-- Y. The positive difference is X - Y if X is greater than Y, and 0
-- otherwise.
--
-- If X, Y, or both are NaN, NaN is returned.
--
-- - Function: double fma (double X, double Y, double Z)
-- - Function: float fmaf (float X, float Y, float Z)
-- - Function: long double fmal (long double X, long double Y, long
-- double Z)
-- The `fma' function performs floating-point multiply-add. This is
-- the operation (X * Y) + Z, but the intermediate result is not
-- rounded to the destination type. This can sometimes improve the
-- precision of a calculation.
--
-- This function was introduced because some processors have a special
-- instruction to perform multiply-add. The C compiler cannot use it
-- directly, because the expression `x*y + z' is defined to round the
-- intermediate result. `fma' lets you choose when you want to round
-- only once.
--
-- On processors which do not implement multiply-add in hardware,
-- `fma' can be very slow since it must avoid intermediate rounding.
-- `math.h' defines the symbols `FP_FAST_FMA', `FP_FAST_FMAF', and
-- `FP_FAST_FMAL' when the corresponding version of `fma' is no
-- slower than the expression `x*y + z'. In the GNU C library, this
-- always means the operation is implemented in hardware.
--
--
--File: libc.info, Node: Complex Numbers, Next: Operations on Complex, Prev: Arithmetic Functions, Up: Arithmetic
--
--Complex Numbers
--===============
--
-- ISO C99 introduces support for complex numbers in C. This is done
--with a new type qualifier, `complex'. It is a keyword if and only if
--`complex.h' has been included. There are three complex types,
--corresponding to the three real types: `float complex', `double
--complex', and `long double complex'.
--
-- To construct complex numbers you need a way to indicate the imaginary
--part of a number. There is no standard notation for an imaginary
--floating point constant. Instead, `complex.h' defines two macros that
--can be used to create complex numbers.
--
-- - Macro: const float complex _Complex_I
-- This macro is a representation of the complex number "0+1i".
-- Multiplying a real floating-point value by `_Complex_I' gives a
-- complex number whose value is purely imaginary. You can use this
-- to construct complex constants:
--
-- 3.0 + 4.0i = `3.0 + 4.0 * _Complex_I'
--
-- Note that `_Complex_I * _Complex_I' has the value `-1', but the
-- type of that value is `complex'.
--
--`_Complex_I' is a bit of a mouthful. `complex.h' also defines a
--shorter name for the same constant.
--
-- - Macro: const float complex I
-- This macro has exactly the same value as `_Complex_I'. Most of the
-- time it is preferable. However, it causes problems if you want to
-- use the identifier `I' for something else. You can safely write
--
-- #include <complex.h>
-- #undef I
--
-- if you need `I' for your own purposes. (In that case we recommend
-- you also define some other short name for `_Complex_I', such as
-- `J'.)
--
--
--
--File: libc.info, Node: Operations on Complex, Next: Parsing of Numbers, Prev: Complex Numbers, Up: Arithmetic
--
--Projections, Conjugates, and Decomposing of Complex Numbers
--===========================================================
--
-- ISO C99 also defines functions that perform basic operations on
--complex numbers, such as decomposition and conjugation. The prototypes
--for all these functions are in `complex.h'. All functions are
--available in three variants, one for each of the three complex types.
--
-- - Function: double creal (complex double Z)
-- - Function: float crealf (complex float Z)
-- - Function: long double creall (complex long double Z)
-- These functions return the real part of the complex number Z.
--
-- - Function: double cimag (complex double Z)
-- - Function: float cimagf (complex float Z)
-- - Function: long double cimagl (complex long double Z)
-- These functions return the imaginary part of the complex number Z.
--
-- - Function: complex double conj (complex double Z)
-- - Function: complex float conjf (complex float Z)
-- - Function: complex long double conjl (complex long double Z)
-- These functions return the conjugate value of the complex number
-- Z. The conjugate of a complex number has the same real part and a
-- negated imaginary part. In other words, `conj(a + bi) = a + -bi'.
--
-- - Function: double carg (complex double Z)
-- - Function: float cargf (complex float Z)
-- - Function: long double cargl (complex long double Z)
-- These functions return the argument of the complex number Z. The
-- argument of a complex number is the angle in the complex plane
-- between the positive real axis and a line passing through zero and
-- the number. This angle is measured in the usual fashion and
-- ranges from 0 to 2pi.
--
-- `carg' has a branch cut along the positive real axis.
--
-- - Function: complex double cproj (complex double Z)
-- - Function: complex float cprojf (complex float Z)
-- - Function: complex long double cprojl (complex long double Z)
-- These functions return the projection of the complex value Z onto
-- the Riemann sphere. Values with a infinite imaginary part are
-- projected to positive infinity on the real axis, even if the real
-- part is NaN. If the real part is infinite, the result is
-- equivalent to
--
-- INFINITY + I * copysign (0.0, cimag (z))
--
--
--File: libc.info, Node: Parsing of Numbers, Next: System V Number Conversion, Prev: Operations on Complex, Up: Arithmetic
--
--Parsing of Numbers
--==================
--
-- This section describes functions for "reading" integer and
--floating-point numbers from a string. It may be more convenient in some
--cases to use `sscanf' or one of the related functions; see *Note
--Formatted Input::. But often you can make a program more robust by
--finding the tokens in the string by hand, then converting the numbers
--one by one.
--
--* Menu:
--
--* Parsing of Integers:: Functions for conversion of integer values.
--* Parsing of Floats:: Functions for conversion of floating-point
-- values.
--
--
--File: libc.info, Node: Parsing of Integers, Next: Parsing of Floats, Up: Parsing of Numbers
--
--Parsing of Integers
---------------------
--
-- The `str' functions are declared in `stdlib.h' and those beginning
--with `wcs' are declared in `wchar.h'. One might wonder about the use
--of `restrict' in the prototypes of the functions in this section. It
--is seemingly useless but the ISO C standard uses it (for the functions
--defined there) so we have to do it as well.
--
-- - Function: long int strtol (const char *restrict STRING, char
-- **restrict TAILPTR, int BASE)
-- The `strtol' ("string-to-long") function converts the initial part
-- of STRING to a signed integer, which is returned as a value of
-- type `long int'.
--
-- This function attempts to decompose STRING as follows:
--
-- * A (possibly empty) sequence of whitespace characters. Which
-- characters are whitespace is determined by the `isspace'
-- function (*note Classification of Characters::). These are
-- discarded.
--
-- * An optional plus or minus sign (`+' or `-').
--
-- * A nonempty sequence of digits in the radix specified by BASE.
--
-- If BASE is zero, decimal radix is assumed unless the series of
-- digits begins with `0' (specifying octal radix), or `0x' or
-- `0X' (specifying hexadecimal radix); in other words, the same
-- syntax used for integer constants in C.
--
-- Otherwise BASE must have a value between `2' and `36'. If
-- BASE is `16', the digits may optionally be preceded by `0x'
-- or `0X'. If base has no legal value the value returned is
-- `0l' and the global variable `errno' is set to `EINVAL'.
--
-- * Any remaining characters in the string. If TAILPTR is not a
-- null pointer, `strtol' stores a pointer to this tail in
-- `*TAILPTR'.
--
-- If the string is empty, contains only whitespace, or does not
-- contain an initial substring that has the expected syntax for an
-- integer in the specified BASE, no conversion is performed. In
-- this case, `strtol' returns a value of zero and the value stored in
-- `*TAILPTR' is the value of STRING.
--
-- In a locale other than the standard `"C"' locale, this function
-- may recognize additional implementation-dependent syntax.
--
-- If the string has valid syntax for an integer but the value is not
-- representable because of overflow, `strtol' returns either
-- `LONG_MAX' or `LONG_MIN' (*note Range of Type::), as appropriate
-- for the sign of the value. It also sets `errno' to `ERANGE' to
-- indicate there was overflow.
--
-- You should not check for errors by examining the return value of
-- `strtol', because the string might be a valid representation of
-- `0l', `LONG_MAX', or `LONG_MIN'. Instead, check whether TAILPTR
-- points to what you expect after the number (e.g. `'\0'' if the
-- string should end after the number). You also need to clear ERRNO
-- before the call and check it afterward, in case there was overflow.
--
-- There is an example at the end of this section.
--
-- - Function: long int wcstol (const wchar_t *restrict STRING, wchar_t
-- **restrict TAILPTR, int BASE)
-- The `wcstol' function is equivalent to the `strtol' function in
-- nearly all aspects but handles wide character strings.
--
-- The `wcstol' function was introduced in Amendment 1 of ISO C90.
--
-- - Function: unsigned long int strtoul (const char *retrict STRING,
-- char **restrict TAILPTR, int BASE)
-- The `strtoul' ("string-to-unsigned-long") function is like
-- `strtol' except it converts to an `unsigned long int' value. The
-- syntax is the same as described above for `strtol'. The value
-- returned on overflow is `ULONG_MAX' (*note Range of Type::).
--
-- If STRING depicts a negative number, `strtoul' acts the same as
-- STRTOL but casts the result to an unsigned integer. That means
-- for example that `strtoul' on `"-1"' returns `ULONG_MAX' and an
-- input more negative than `LONG_MIN' returns (`ULONG_MAX' + 1) / 2.
--
-- `strtoul' sets ERRNO to `EINVAL' if BASE is out of range, or
-- `ERANGE' on overflow.
--
-- - Function: unsigned long int wcstoul (const wchar_t *restrict STRING,
-- wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoul' function is equivalent to the `strtoul' function in
-- nearly all aspects but handles wide character strings.
--
-- The `wcstoul' function was introduced in Amendment 1 of ISO C90.
--
-- - Function: long long int strtoll (const char *restrict STRING, char
-- **restrict TAILPTR, int BASE)
-- The `strtoll' function is like `strtol' except that it returns a
-- `long long int' value, and accepts numbers with a correspondingly
-- larger range.
--
-- If the string has valid syntax for an integer but the value is not
-- representable because of overflow, `strtoll' returns either
-- `LONG_LONG_MAX' or `LONG_LONG_MIN' (*note Range of Type::), as
-- appropriate for the sign of the value. It also sets `errno' to
-- `ERANGE' to indicate there was overflow.
--
-- The `strtoll' function was introduced in ISO C99.
--
-- - Function: long long int wcstoll (const wchar_t *restrict STRING,
-- wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoll' function is equivalent to the `strtoll' function in
-- nearly all aspects but handles wide character strings.
--
-- The `wcstoll' function was introduced in Amendment 1 of ISO C90.
--
-- - Function: long long int strtoq (const char *restrict STRING, char
-- **restrict TAILPTR, int BASE)
-- `strtoq' ("string-to-quad-word") is the BSD name for `strtoll'.
--
-- - Function: long long int wcstoq (const wchar_t *restrict STRING,
-- wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoq' function is equivalent to the `strtoq' function in
-- nearly all aspects but handles wide character strings.
--
-- The `wcstoq' function is a GNU extension.
--
-- - Function: unsigned long long int strtoull (const char *restrict
-- STRING, char **restrict TAILPTR, int BASE)
-- The `strtoull' function is related to `strtoll' the same way
-- `strtoul' is related to `strtol'.
--
-- The `strtoull' function was introduced in ISO C99.
--
-- - Function: unsigned long long int wcstoull (const wchar_t *restrict
-- STRING, wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoull' function is equivalent to the `strtoull' function
-- in nearly all aspects but handles wide character strings.
--
-- The `wcstoull' function was introduced in Amendment 1 of ISO C90.
--
-- - Function: unsigned long long int strtouq (const char *restrict
-- STRING, char **restrict TAILPTR, int BASE)
-- `strtouq' is the BSD name for `strtoull'.
--
-- - Function: unsigned long long int wcstouq (const wchar_t *restrict
-- STRING, wchar_t **restrict TAILPTR, int BASE)
-- The `wcstouq' function is equivalent to the `strtouq' function in
-- nearly all aspects but handles wide character strings.
--
-- The `wcstoq' function is a GNU extension.
--
-- - Function: intmax_t strtoimax (const char *restrict STRING, char
-- **restrict TAILPTR, int BASE)
-- The `strtoimax' function is like `strtol' except that it returns a
-- `intmax_t' value, and accepts numbers of a corresponding range.
--
-- If the string has valid syntax for an integer but the value is not
-- representable because of overflow, `strtoimax' returns either
-- `INTMAX_MAX' or `INTMAX_MIN' (*note Integers::), as appropriate
-- for the sign of the value. It also sets `errno' to `ERANGE' to
-- indicate there was overflow.
--
-- See *Note Integers:: for a description of the `intmax_t' type. The
-- `strtoimax' function was introduced in ISO C99.
--
-- - Function: intmax_t wcstoimax (const wchar_t *restrict STRING,
-- wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoimax' function is equivalent to the `strtoimax' function
-- in nearly all aspects but handles wide character strings.
--
-- The `wcstoimax' function was introduced in ISO C99.
--
-- - Function: uintmax_t strtoumax (const char *restrict STRING, char
-- **restrict TAILPTR, int BASE)
-- The `strtoumax' function is related to `strtoimax' the same way
-- that `strtoul' is related to `strtol'.
--
-- See *Note Integers:: for a description of the `intmax_t' type. The
-- `strtoumax' function was introduced in ISO C99.
--
-- - Function: uintmax_t wcstoumax (const wchar_t *restrict STRING,
-- wchar_t **restrict TAILPTR, int BASE)
-- The `wcstoumax' function is equivalent to the `strtoumax' function
-- in nearly all aspects but handles wide character strings.
--
-- The `wcstoumax' function was introduced in ISO C99.
--
-- - Function: long int atol (const char *STRING)
-- This function is similar to the `strtol' function with a BASE
-- argument of `10', except that it need not detect overflow errors.
-- The `atol' function is provided mostly for compatibility with
-- existing code; using `strtol' is more robust.
--
-- - Function: int atoi (const char *STRING)
-- This function is like `atol', except that it returns an `int'.
-- The `atoi' function is also considered obsolete; use `strtol'
-- instead.
--
-- - Function: long long int atoll (const char *STRING)
-- This function is similar to `atol', except it returns a `long long
-- int'.
--
-- The `atoll' function was introduced in ISO C99. It too is
-- obsolete (despite having just been added); use `strtoll' instead.
--
-- All the functions mentioned in this section so far do not handle
--alternative representations of characters as described in the locale
--data. Some locales specify thousands separator and the way they have to
--be used which can help to make large numbers more readable. To read
--such numbers one has to use the `scanf' functions with the `'' flag.
--
-- Here is a function which parses a string as a sequence of integers
--and returns the sum of them:
--
-- int
-- sum_ints_from_string (char *string)
-- {
-- int sum = 0;
--
-- while (1) {
-- char *tail;
-- int next;
--
-- /* Skip whitespace by hand, to detect the end. */
-- while (isspace (*string)) string++;
-- if (*string == 0)
-- break;
--
-- /* There is more nonwhitespace, */
-- /* so it ought to be another number. */
-- errno = 0;
-- /* Parse it. */
-- next = strtol (string, &tail, 0);
-- /* Add it in, if not overflow. */
-- if (errno)
-- printf ("Overflow\n");
-- else
-- sum += next;
-- /* Advance past it. */
-- string = tail;
-- }
--
-- return sum;
-- }
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-35 glibc-2.3.2-200304020432/manual/libc.info-35
---- glibc-2.3.2/manual/libc.info-35 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-35 Thu Jan 1 01:00:00 1970
-@@ -1,1168 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Parsing of Floats, Prev: Parsing of Integers, Up: Parsing of Numbers
--
--Parsing of Floats
-------------------
--
-- The `str' functions are declared in `stdlib.h' and those beginning
--with `wcs' are declared in `wchar.h'. One might wonder about the use
--of `restrict' in the prototypes of the functions in this section. It
--is seemingly useless but the ISO C standard uses it (for the functions
--defined there) so we have to do it as well.
--
-- - Function: double strtod (const char *restrict STRING, char
-- **restrict TAILPTR)
-- The `strtod' ("string-to-double") function converts the initial
-- part of STRING to a floating-point number, which is returned as a
-- value of type `double'.
--
-- This function attempts to decompose STRING as follows:
--
-- * A (possibly empty) sequence of whitespace characters. Which
-- characters are whitespace is determined by the `isspace'
-- function (*note Classification of Characters::). These are
-- discarded.
--
-- * An optional plus or minus sign (`+' or `-').
--
-- * A floating point number in decimal or hexadecimal format. The
-- decimal format is:
-- - A nonempty sequence of digits optionally containing a
-- decimal-point character--normally `.', but it depends on
-- the locale (*note General Numeric::).
--
-- - An optional exponent part, consisting of a character `e'
-- or `E', an optional sign, and a sequence of digits.
--
--
-- The hexadecimal format is as follows:
-- - A 0x or 0X followed by a nonempty sequence of
-- hexadecimal digits optionally containing a decimal-point
-- character--normally `.', but it depends on the locale
-- (*note General Numeric::).
--
-- - An optional binary-exponent part, consisting of a
-- character `p' or `P', an optional sign, and a sequence
-- of digits.
--
--
-- * Any remaining characters in the string. If TAILPTR is not a
-- null pointer, a pointer to this tail of the string is stored
-- in `*TAILPTR'.
--
-- If the string is empty, contains only whitespace, or does not
-- contain an initial substring that has the expected syntax for a
-- floating-point number, no conversion is performed. In this case,
-- `strtod' returns a value of zero and the value returned in
-- `*TAILPTR' is the value of STRING.
--
-- In a locale other than the standard `"C"' or `"POSIX"' locales,
-- this function may recognize additional locale-dependent syntax.
--
-- If the string has valid syntax for a floating-point number but the
-- value is outside the range of a `double', `strtod' will signal
-- overflow or underflow as described in *Note Math Error Reporting::.
--
-- `strtod' recognizes four special input strings. The strings
-- `"inf"' and `"infinity"' are converted to oo, or to the largest
-- representable value if the floating-point format doesn't support
-- infinities. You can prepend a `"+"' or `"-"' to specify the sign.
-- Case is ignored when scanning these strings.
--
-- The strings `"nan"' and `"nan(CHARS...)"' are converted to NaN.
-- Again, case is ignored. If CHARS... are provided, they are used
-- in some unspecified fashion to select a particular representation
-- of NaN (there can be several).
--
-- Since zero is a valid result as well as the value returned on
-- error, you should check for errors in the same way as for
-- `strtol', by examining ERRNO and TAILPTR.
--
-- - Function: float strtof (const char *STRING, char **TAILPTR)
-- - Function: long double strtold (const char *STRING, char **TAILPTR)
-- These functions are analogous to `strtod', but return `float' and
-- `long double' values respectively. They report errors in the same
-- way as `strtod'. `strtof' can be substantially faster than
-- `strtod', but has less precision; conversely, `strtold' can be
-- much slower but has more precision (on systems where `long double'
-- is a separate type).
--
-- These functions have been GNU extensions and are new to ISO C99.
--
-- - Function: double wcstod (const wchar_t *restrict STRING, wchar_t
-- **restrict TAILPTR)
-- - Function: float wcstof (const wchar_t *STRING, wchar_t **TAILPTR)
-- - Function: long double wcstold (const wchar_t *STRING, wchar_t
-- **TAILPTR)
-- The `wcstod', `wcstof', and `wcstol' functions are equivalent in
-- nearly all aspect to the `strtod', `strtof', and `strtold'
-- functions but it handles wide character string.
--
-- The `wcstod' function was introduced in Amendment 1 of ISO C90.
-- The `wcstof' and `wcstold' functions were introduced in ISO C99.
--
-- - Function: double atof (const char *STRING)
-- This function is similar to the `strtod' function, except that it
-- need not detect overflow and underflow errors. The `atof' function
-- is provided mostly for compatibility with existing code; using
-- `strtod' is more robust.
--
-- The GNU C library also provides `_l' versions of these functions,
--which take an additional argument, the locale to use in conversion.
--*Note Parsing of Integers::.
--
--
--File: libc.info, Node: System V Number Conversion, Prev: Parsing of Numbers, Up: Arithmetic
--
--Old-fashioned System V number-to-string functions
--=================================================
--
-- The old System V C library provided three functions to convert
--numbers to strings, with unusual and hard-to-use semantics. The GNU C
--library also provides these functions and some natural extensions.
--
-- These functions are only available in glibc and on systems descended
--from AT&T Unix. Therefore, unless these functions do precisely what you
--need, it is better to use `sprintf', which is standard.
--
-- All these functions are defined in `stdlib.h'.
--
-- - Function: char * ecvt (double VALUE, int NDIGIT, int *DECPT, int
-- *NEG)
-- The function `ecvt' converts the floating-point number VALUE to a
-- string with at most NDIGIT decimal digits. The returned string
-- contains no decimal point or sign. The first digit of the string
-- is non-zero (unless VALUE is actually zero) and the last digit is
-- rounded to nearest. `*DECPT' is set to the index in the string of
-- the first digit after the decimal point. `*NEG' is set to a
-- nonzero value if VALUE is negative, zero otherwise.
--
-- If NDIGIT decimal digits would exceed the precision of a `double'
-- it is reduced to a system-specific value.
--
-- The returned string is statically allocated and overwritten by
-- each call to `ecvt'.
--
-- If VALUE is zero, it is implementation defined whether `*DECPT' is
-- `0' or `1'.
--
-- For example: `ecvt (12.3, 5, &d, &n)' returns `"12300"' and sets D
-- to `2' and N to `0'.
--
-- - Function: char * fcvt (double VALUE, int NDIGIT, int *DECPT, int
-- *NEG)
-- The function `fcvt' is like `ecvt', but NDIGIT specifies the
-- number of digits after the decimal point. If NDIGIT is less than
-- zero, VALUE is rounded to the NDIGIT+1'th place to the left of the
-- decimal point. For example, if NDIGIT is `-1', VALUE will be
-- rounded to the nearest 10. If NDIGIT is negative and larger than
-- the number of digits to the left of the decimal point in VALUE,
-- VALUE will be rounded to one significant digit.
--
-- If NDIGIT decimal digits would exceed the precision of a `double'
-- it is reduced to a system-specific value.
--
-- The returned string is statically allocated and overwritten by
-- each call to `fcvt'.
--
-- - Function: char * gcvt (double VALUE, int NDIGIT, char *BUF)
-- `gcvt' is functionally equivalent to `sprintf(buf, "%*g", ndigit,
-- value'. It is provided only for compatibility's sake. It returns
-- BUF.
--
-- If NDIGIT decimal digits would exceed the precision of a `double'
-- it is reduced to a system-specific value.
--
-- As extensions, the GNU C library provides versions of these three
--functions that take `long double' arguments.
--
-- - Function: char * qecvt (long double VALUE, int NDIGIT, int *DECPT,
-- int *NEG)
-- This function is equivalent to `ecvt' except that it takes a `long
-- double' for the first parameter and that NDIGIT is restricted by
-- the precision of a `long double'.
--
-- - Function: char * qfcvt (long double VALUE, int NDIGIT, int *DECPT,
-- int *NEG)
-- This function is equivalent to `fcvt' except that it takes a `long
-- double' for the first parameter and that NDIGIT is restricted by
-- the precision of a `long double'.
--
-- - Function: char * qgcvt (long double VALUE, int NDIGIT, char *BUF)
-- This function is equivalent to `gcvt' except that it takes a `long
-- double' for the first parameter and that NDIGIT is restricted by
-- the precision of a `long double'.
--
-- The `ecvt' and `fcvt' functions, and their `long double'
--equivalents, all return a string located in a static buffer which is
--overwritten by the next call to the function. The GNU C library
--provides another set of extended functions which write the converted
--string into a user-supplied buffer. These have the conventional `_r'
--suffix.
--
-- `gcvt_r' is not necessary, because `gcvt' already uses a
--user-supplied buffer.
--
-- - Function: char * ecvt_r (double VALUE, int NDIGIT, int *DECPT, int
-- *NEG, char *BUF, size_t LEN)
-- The `ecvt_r' function is the same as `ecvt', except that it places
-- its result into the user-specified buffer pointed to by BUF, with
-- length LEN.
--
-- This function is a GNU extension.
--
-- - Function: char * fcvt_r (double VALUE, int NDIGIT, int *DECPT, int
-- *NEG, char *BUF, size_t LEN)
-- The `fcvt_r' function is the same as `fcvt', except that it places
-- its result into the user-specified buffer pointed to by BUF, with
-- length LEN.
--
-- This function is a GNU extension.
--
-- - Function: char * qecvt_r (long double VALUE, int NDIGIT, int *DECPT,
-- int *NEG, char *BUF, size_t LEN)
-- The `qecvt_r' function is the same as `qecvt', except that it
-- places its result into the user-specified buffer pointed to by
-- BUF, with length LEN.
--
-- This function is a GNU extension.
--
-- - Function: char * qfcvt_r (long double VALUE, int NDIGIT, int *DECPT,
-- int *NEG, char *BUF, size_t LEN)
-- The `qfcvt_r' function is the same as `qfcvt', except that it
-- places its result into the user-specified buffer pointed to by
-- BUF, with length LEN.
--
-- This function is a GNU extension.
--
--
--File: libc.info, Node: Date and Time, Next: Resource Usage And Limitation, Prev: Arithmetic, Up: Top
--
--Date and Time
--*************
--
-- This chapter describes functions for manipulating dates and times,
--including functions for determining what time it is and conversion
--between different time representations.
--
--* Menu:
--
--* Time Basics:: Concepts and definitions.
--* Elapsed Time:: Data types to represent elapsed times
--* Processor And CPU Time:: Time a program has spent executing.
--* Calendar Time:: Manipulation of ``real'' dates and times.
--* Setting an Alarm:: Sending a signal after a specified time.
--* Sleeping:: Waiting for a period of time.
--
--
--File: libc.info, Node: Time Basics, Next: Elapsed Time, Up: Date and Time
--
--Time Basics
--===========
--
-- Discussing time in a technical manual can be difficult because the
--word "time" in English refers to lots of different things. In this
--manual, we use a rigorous terminology to avoid confusion, and the only
--thing we use the simple word "time" for is to talk about the abstract
--concept.
--
-- A "calendar time" is a point in the time continuum, for example
--November 4, 1990 at 18:02.5 UTC. Sometimes this is called "absolute
--time".
--
-- We don't speak of a "date", because that is inherent in a calendar
--time.
--
-- An "interval" is a contiguous part of the time continuum between two
--calendar times, for example the hour between 9:00 and 10:00 on July 4,
--1980.
--
-- An "elapsed time" is the length of an interval, for example, 35
--minutes. People sometimes sloppily use the word "interval" to refer to
--the elapsed time of some interval.
--
-- An "amount of time" is a sum of elapsed times, which need not be of
--any specific intervals. For example, the amount of time it takes to
--read a book might be 9 hours, independently of when and in how many
--sittings it is read.
--
-- A "period" is the elapsed time of an interval between two events,
--especially when they are part of a sequence of regularly repeating
--events.
--
-- "CPU time" is like calendar time, except that it is based on the
--subset of the time continuum when a particular process is actively
--using a CPU. CPU time is, therefore, relative to a process.
--
-- "Processor time" is an amount of time that a CPU is in use. In
--fact, it's a basic system resource, since there's a limit to how much
--can exist in any given interval (that limit is the elapsed time of the
--interval times the number of CPUs in the processor). People often call
--this CPU time, but we reserve the latter term in this manual for the
--definition above.
--
--
--File: libc.info, Node: Elapsed Time, Next: Processor And CPU Time, Prev: Time Basics, Up: Date and Time
--
--Elapsed Time
--============
--
-- One way to represent an elapsed time is with a simple arithmetic data
--type, as with the following function to compute the elapsed time between
--two calendar times. This function is declared in `time.h'.
--
-- - Function: double difftime (time_t TIME1, time_t TIME0)
-- The `difftime' function returns the number of seconds of elapsed
-- time between calendar time TIME1 and calendar time TIME0, as a
-- value of type `double'. The difference ignores leap seconds
-- unless leap second support is enabled.
--
-- In the GNU system, you can simply subtract `time_t' values. But on
-- other systems, the `time_t' data type might use some other encoding
-- where subtraction doesn't work directly.
--
-- The GNU C library provides two data types specifically for
--representing an elapsed time. They are used by various GNU C library
--functions, and you can use them for your own purposes too. They're
--exactly the same except that one has a resolution in microseconds, and
--the other, newer one, is in nanoseconds.
--
-- - Data Type: struct timeval
-- The `struct timeval' structure represents an elapsed time. It is
-- declared in `sys/time.h' and has the following members:
--
-- `long int tv_sec'
-- This represents the number of whole seconds of elapsed time.
--
-- `long int tv_usec'
-- This is the rest of the elapsed time (a fraction of a second),
-- represented as the number of microseconds. It is always less
-- than one million.
--
--
-- - Data Type: struct timespec
-- The `struct timespec' structure represents an elapsed time. It is
-- declared in `time.h' and has the following members:
--
-- `long int tv_sec'
-- This represents the number of whole seconds of elapsed time.
--
-- `long int tv_nsec'
-- This is the rest of the elapsed time (a fraction of a second),
-- represented as the number of nanoseconds. It is always less
-- than one billion.
--
--
-- It is often necessary to subtract two values of type
--`struct timeval' or `struct timespec'. Here is the best way to do
--this. It works even on some peculiar operating systems where the
--`tv_sec' member has an unsigned type.
--
-- /* Subtract the `struct timeval' values X and Y,
-- storing the result in RESULT.
-- Return 1 if the difference is negative, otherwise 0. */
--
-- int
-- timeval_subtract (result, x, y)
-- struct timeval *result, *x, *y;
-- {
-- /* Perform the carry for the later subtraction by updating Y. */
-- if (x->tv_usec < y->tv_usec) {
-- int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
-- y->tv_usec -= 1000000 * nsec;
-- y->tv_sec += nsec;
-- }
-- if (x->tv_usec - y->tv_usec > 1000000) {
-- int nsec = (x->tv_usec - y->tv_usec) / 1000000;
-- y->tv_usec += 1000000 * nsec;
-- y->tv_sec -= nsec;
-- }
--
-- /* Compute the time remaining to wait.
-- `tv_usec' is certainly positive. */
-- result->tv_sec = x->tv_sec - y->tv_sec;
-- result->tv_usec = x->tv_usec - y->tv_usec;
--
-- /* Return 1 if result is negative. */
-- return x->tv_sec < y->tv_sec;
-- }
--
-- Common functions that use `struct timeval' are `gettimeofday' and
--`settimeofday'.
--
-- There are no GNU C library functions specifically oriented toward
--dealing with elapsed times, but the calendar time, processor time, and
--alarm and sleeping functions have a lot to do with them.
--
--
--File: libc.info, Node: Processor And CPU Time, Next: Calendar Time, Prev: Elapsed Time, Up: Date and Time
--
--Processor And CPU Time
--======================
--
-- If you're trying to optimize your program or measure its efficiency,
--it's very useful to know how much processor time it uses. For that,
--calendar time and elapsed times are useless because a process may spend
--time waiting for I/O or for other processes to use the CPU. However,
--you can get the information with the functions in this section.
--
-- CPU time (*note Time Basics::) is represented by the data type
--`clock_t', which is a number of "clock ticks". It gives the total
--amount of time a process has actively used a CPU since some arbitrary
--event. On the GNU system, that event is the creation of the process.
--While arbitrary in general, the event is always the same event for any
--particular process, so you can always measure how much time on the CPU
--a particular computation takes by examinining the process' CPU time
--before and after the computation.
--
-- In the GNU system, `clock_t' is equivalent to `long int' and
--`CLOCKS_PER_SEC' is an integer value. But in other systems, both
--`clock_t' and the macro `CLOCKS_PER_SEC' can be either integer or
--floating-point types. Casting CPU time values to `double', as in the
--example above, makes sure that operations such as arithmetic and
--printing work properly and consistently no matter what the underlying
--representation is.
--
-- Note that the clock can wrap around. On a 32bit system with
--`CLOCKS_PER_SEC' set to one million this function will return the same
--value approximately every 72 minutes.
--
-- For additional functions to examine a process' use of processor time,
--and to control it, *Note Resource Usage And Limitation::.
--
--* Menu:
--
--* CPU Time:: The `clock' function.
--* Processor Time:: The `times' function.
--
--
--File: libc.info, Node: CPU Time, Next: Processor Time, Up: Processor And CPU Time
--
--CPU Time Inquiry
------------------
--
-- To get a process' CPU time, you can use the `clock' function. This
--facility is declared in the header file `time.h'.
--
-- In typical usage, you call the `clock' function at the beginning and
--end of the interval you want to time, subtract the values, and then
--divide by `CLOCKS_PER_SEC' (the number of clock ticks per second) to
--get processor time, like this:
--
-- #include <time.h>
--
-- clock_t start, end;
-- double cpu_time_used;
--
-- start = clock();
-- ... /* Do the work. */
-- end = clock();
-- cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
--
-- Do not use a single CPU time as an amount of time; it doesn't work
--that way. Either do a subtraction as shown above or query processor
--time directly. *Note Processor Time::.
--
-- Different computers and operating systems vary wildly in how they
--keep track of CPU time. It's common for the internal processor clock
--to have a resolution somewhere between a hundredth and millionth of a
--second.
--
-- - Macro: int CLOCKS_PER_SEC
-- The value of this macro is the number of clock ticks per second
-- measured by the `clock' function. POSIX requires that this value
-- be one million independent of the actual resolution.
--
-- - Macro: int CLK_TCK
-- This is an obsolete name for `CLOCKS_PER_SEC'.
--
-- - Data Type: clock_t
-- This is the type of the value returned by the `clock' function.
-- Values of type `clock_t' are numbers of clock ticks.
--
-- - Function: clock_t clock (void)
-- This function returns the calling process' current CPU time. If
-- the CPU time is not available or cannot be represented, `clock'
-- returns the value `(clock_t)(-1)'.
--
--
--File: libc.info, Node: Processor Time, Prev: CPU Time, Up: Processor And CPU Time
--
--Processor Time Inquiry
------------------------
--
-- The `times' function returns information about a process'
--consumption of processor time in a `struct tms' object, in addition to
--the process' CPU time. *Note Time Basics::. You should include the
--header file `sys/times.h' to use this facility.
--
-- - Data Type: struct tms
-- The `tms' structure is used to return information about process
-- times. It contains at least the following members:
--
-- `clock_t tms_utime'
-- This is the total processor time the calling process has used
-- in executing the instructions of its program.
--
-- `clock_t tms_stime'
-- This is the processor time the system has used on behalf of
-- the calling process.
--
-- `clock_t tms_cutime'
-- This is the sum of the `tms_utime' values and the `tms_cutime'
-- values of all terminated child processes of the calling
-- process, whose status has been reported to the parent process
-- by `wait' or `waitpid'; see *Note Process Completion::. In
-- other words, it represents the total processor time used in
-- executing the instructions of all the terminated child
-- processes of the calling process, excluding child processes
-- which have not yet been reported by `wait' or `waitpid'.
--
-- `clock_t tms_cstime'
-- This is similar to `tms_cutime', but represents the total
-- processor time system has used on behalf of all the
-- terminated child processes of the calling process.
--
-- All of the times are given in numbers of clock ticks. Unlike CPU
-- time, these are the actual amounts of time; not relative to any
-- event. *Note Creating a Process::.
--
-- - Function: clock_t times (struct tms *BUFFER)
-- The `times' function stores the processor time information for the
-- calling process in BUFFER.
--
-- The return value is the calling process' CPU time (the same value
-- you get from `clock()'. `times' returns `(clock_t)(-1)' to
-- indicate failure.
--
-- *Portability Note:* The `clock' function described in *Note CPU
--Time:: is specified by the ISO C standard. The `times' function is a
--feature of POSIX.1. In the GNU system, the CPU time is defined to be
--equivalent to the sum of the `tms_utime' and `tms_stime' fields
--returned by `times'.
--
--
--File: libc.info, Node: Calendar Time, Next: Setting an Alarm, Prev: Processor And CPU Time, Up: Date and Time
--
--Calendar Time
--=============
--
-- This section describes facilities for keeping track of calendar time.
--*Note Time Basics::.
--
-- The GNU C library represents calendar time three ways:
--
-- * "Simple time" (the `time_t' data type) is a compact
-- representation, typically giving the number of seconds of elapsed
-- time since some implementation-specific base time.
--
-- * There is also a "high-resolution time" representation. Like simple
-- time, this represents a calendar time as an elapsed time since a
-- base time, but instead of measuring in whole seconds, it uses a
-- `struct timeval' data type, which includes fractions of a second.
-- Use this time representation instead of simple time when you need
-- greater precision.
--
-- * "Local time" or "broken-down time" (the `struct tm' data type)
-- represents a calendar time as a set of components specifying the
-- year, month, and so on in the Gregorian calendar, for a specific
-- time zone. This calendar time representation is usually used only
-- to communicate with people.
--
--* Menu:
--
--* Simple Calendar Time:: Facilities for manipulating calendar time.
--* High-Resolution Calendar:: A time representation with greater precision.
--* Broken-down Time:: Facilities for manipulating local time.
--* High Accuracy Clock:: Maintaining a high accuracy system clock.
--* Formatting Calendar Time:: Converting times to strings.
--* Parsing Date and Time:: Convert textual time and date information back
-- into broken-down time values.
--* TZ Variable:: How users specify the time zone.
--* Time Zone Functions:: Functions to examine or specify the time zone.
--* Time Functions Example:: An example program showing use of some of
-- the time functions.
--
--
--File: libc.info, Node: Simple Calendar Time, Next: High-Resolution Calendar, Up: Calendar Time
--
--Simple Calendar Time
----------------------
--
-- This section describes the `time_t' data type for representing
--calendar time as simple time, and the functions which operate on simple
--time objects. These facilities are declared in the header file
--`time.h'.
--
-- - Data Type: time_t
-- This is the data type used to represent simple time. Sometimes,
-- it also represents an elapsed time. When interpreted as a
-- calendar time value, it represents the number of seconds elapsed
-- since 00:00:00 on January 1, 1970, Coordinated Universal Time.
-- (This calendar time is sometimes referred to as the "epoch".)
-- POSIX requires that this count not include leap seconds, but on
-- some systems this count includes leap seconds if you set `TZ' to
-- certain values (*note TZ Variable::).
--
-- Note that a simple time has no concept of local time zone.
-- Calendar Time T is the same instant in time regardless of where on
-- the globe the computer is.
--
-- In the GNU C library, `time_t' is equivalent to `long int'. In
-- other systems, `time_t' might be either an integer or
-- floating-point type.
--
-- The function `difftime' tells you the elapsed time between two
--simple calendar times, which is not always as easy to compute as just
--subtracting. *Note Elapsed Time::.
--
-- - Function: time_t time (time_t *RESULT)
-- The `time' function returns the current calendar time as a value of
-- type `time_t'. If the argument RESULT is not a null pointer, the
-- calendar time value is also stored in `*RESULT'. If the current
-- calendar time is not available, the value `(time_t)(-1)' is
-- returned.
--
-- - Function: int stime (time_t *NEWTIME)
-- `stime' sets the system clock, i.e. it tells the system that the
-- current calendar time is NEWTIME, where `newtime' is interpreted
-- as described in the above definition of `time_t'.
--
-- `settimeofday' is a newer function which sets the system clock to
-- better than one second precision. `settimeofday' is generally a
-- better choice than `stime'. *Note High-Resolution Calendar::.
--
-- Only the superuser can set the system clock.
--
-- If the function succeeds, the return value is zero. Otherwise, it
-- is `-1' and `errno' is set accordingly:
--
-- `EPERM'
-- The process is not superuser.
--
--
--File: libc.info, Node: High-Resolution Calendar, Next: Broken-down Time, Prev: Simple Calendar Time, Up: Calendar Time
--
--High-Resolution Calendar
--------------------------
--
-- The `time_t' data type used to represent simple times has a
--resolution of only one second. Some applications need more precision.
--
-- So, the GNU C library also contains functions which are capable of
--representing calendar times to a higher resolution than one second. The
--functions and the associated data types described in this section are
--declared in `sys/time.h'.
--
-- - Data Type: struct timezone
-- The `struct timezone' structure is used to hold minimal information
-- about the local time zone. It has the following members:
--
-- `int tz_minuteswest'
-- This is the number of minutes west of UTC.
--
-- `int tz_dsttime'
-- If nonzero, Daylight Saving Time applies during some part of
-- the year.
--
-- The `struct timezone' type is obsolete and should never be used.
-- Instead, use the facilities described in *Note Time Zone
-- Functions::.
--
-- - Function: int gettimeofday (struct timeval *TP, struct timezone *TZP)
-- The `gettimeofday' function returns the current calendar time as
-- the elapsed time since the epoch in the `struct timeval' structure
-- indicated by TP. (*note Elapsed Time:: for a description of
-- `struct timespec'). Information about the time zone is returned in
-- the structure pointed at TZP. If the TZP argument is a null
-- pointer, time zone information is ignored.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error condition is defined for this function:
--
-- `ENOSYS'
-- The operating system does not support getting time zone
-- information, and TZP is not a null pointer. The GNU
-- operating system does not support using `struct timezone' to
-- represent time zone information; that is an obsolete feature
-- of 4.3 BSD. Instead, use the facilities described in *Note
-- Time Zone Functions::.
--
-- - Function: int settimeofday (const struct timeval *TP, const struct
-- timezone *TZP)
-- The `settimeofday' function sets the current calendar time in the
-- system clock according to the arguments. As for `gettimeofday',
-- the calendar time is represented as the elapsed time since the
-- epoch. As for `gettimeofday', time zone information is ignored if
-- TZP is a null pointer.
--
-- You must be a privileged user in order to use `settimeofday'.
--
-- Some kernels automatically set the system clock from some source
-- such as a hardware clock when they start up. Others, including
-- Linux, place the system clock in an "invalid" state (in which
-- attempts to read the clock fail). A call of `stime' removes the
-- system clock from an invalid state, and system startup scripts
-- typically run a program that calls `stime'.
--
-- `settimeofday' causes a sudden jump forwards or backwards, which
-- can cause a variety of problems in a system. Use `adjtime' (below)
-- to make a smooth transition from one time to another by temporarily
-- speeding up or slowing down the clock.
--
-- With a Linux kernel, `adjtimex' does the same thing and can also
-- make permanent changes to the speed of the system clock so it
-- doesn't need to be corrected as often.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EPERM'
-- This process cannot set the clock because it is not
-- privileged.
--
-- `ENOSYS'
-- The operating system does not support setting time zone
-- information, and TZP is not a null pointer.
--
-- - Function: int adjtime (const struct timeval *DELTA, struct timeval
-- *OLDDELTA)
-- This function speeds up or slows down the system clock in order to
-- make a gradual adjustment. This ensures that the calendar time
-- reported by the system clock is always monotonically increasing,
-- which might not happen if you simply set the clock.
--
-- The DELTA argument specifies a relative adjustment to be made to
-- the clock time. If negative, the system clock is slowed down for a
-- while until it has lost this much elapsed time. If positive, the
-- system clock is speeded up for a while.
--
-- If the OLDDELTA argument is not a null pointer, the `adjtime'
-- function returns information about any previous time adjustment
-- that has not yet completed.
--
-- This function is typically used to synchronize the clocks of
-- computers in a local network. You must be a privileged user to
-- use it.
--
-- With a Linux kernel, you can use the `adjtimex' function to
-- permanently change the clock speed.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error condition is defined for this function:
--
-- `EPERM'
-- You do not have privilege to set the time.
--
-- *Portability Note:* The `gettimeofday', `settimeofday', and
--`adjtime' functions are derived from BSD.
--
-- Symbols for the following function are declared in `sys/timex.h'.
--
-- - Function: int adjtimex (struct timex *TIMEX)
-- `adjtimex' is functionally identical to `ntp_adjtime'. *Note High
-- Accuracy Clock::.
--
-- This function is present only with a Linux kernel.
--
--
--
--File: libc.info, Node: Broken-down Time, Next: High Accuracy Clock, Prev: High-Resolution Calendar, Up: Calendar Time
--
--Broken-down Time
------------------
--
-- Calendar time is represented by the usual GNU C library functions as
--an elapsed time since a fixed base calendar time. This is convenient
--for computation, but has no relation to the way people normally think of
--calendar time. By contrast, "broken-down time" is a binary
--representation of calendar time separated into year, month, day, and so
--on. Broken-down time values are not useful for calculations, but they
--are useful for printing human readable time information.
--
-- A broken-down time value is always relative to a choice of time
--zone, and it also indicates which time zone that is.
--
-- The symbols in this section are declared in the header file `time.h'.
--
-- - Data Type: struct tm
-- This is the data type used to represent a broken-down time. The
-- structure contains at least the following members, which can
-- appear in any order.
--
-- `int tm_sec'
-- This is the number of full seconds since the top of the
-- minute (normally in the range `0' through `59', but the
-- actual upper limit is `60', to allow for leap seconds if leap
-- second support is available).
--
-- `int tm_min'
-- This is the number of full minutes since the top of the hour
-- (in the range `0' through `59').
--
-- `int tm_hour'
-- This is the number of full hours past midnight (in the range
-- `0' through `23').
--
-- `int tm_mday'
-- This is the ordinal day of the month (in the range `1'
-- through `31'). Watch out for this one! As the only ordinal
-- number in the structure, it is inconsistent with the rest of
-- the structure.
--
-- `int tm_mon'
-- This is the number of full calendar months since the
-- beginning of the year (in the range `0' through `11'). Watch
-- out for this one! People usually use ordinal numbers for
-- month-of-year (where January = 1).
--
-- `int tm_year'
-- This is the number of full calendar years since 1900.
--
-- `int tm_wday'
-- This is the number of full days since Sunday (in the range
-- `0' through `6').
--
-- `int tm_yday'
-- This is the number of full days since the beginning of the
-- year (in the range `0' through `365').
--
-- `int tm_isdst'
-- This is a flag that indicates whether Daylight Saving Time is
-- (or was, or will be) in effect at the time described. The
-- value is positive if Daylight Saving Time is in effect, zero
-- if it is not, and negative if the information is not
-- available.
--
-- `long int tm_gmtoff'
-- This field describes the time zone that was used to compute
-- this broken-down time value, including any adjustment for
-- daylight saving; it is the number of seconds that you must
-- add to UTC to get local time. You can also think of this as
-- the number of seconds east of UTC. For example, for U.S.
-- Eastern Standard Time, the value is `-5*60*60'. The
-- `tm_gmtoff' field is derived from BSD and is a GNU library
-- extension; it is not visible in a strict ISO C environment.
--
-- `const char *tm_zone'
-- This field is the name for the time zone that was used to
-- compute this broken-down time value. Like `tm_gmtoff', this
-- field is a BSD and GNU extension, and is not visible in a
-- strict ISO C environment.
--
-- - Function: struct tm * localtime (const time_t *TIME)
-- The `localtime' function converts the simple time pointed to by
-- TIME to broken-down time representation, expressed relative to the
-- user's specified time zone.
--
-- The return value is a pointer to a static broken-down time
-- structure, which might be overwritten by subsequent calls to
-- `ctime', `gmtime', or `localtime'. (But no other library function
-- overwrites the contents of this object.)
--
-- The return value is the null pointer if TIME cannot be represented
-- as a broken-down time; typically this is because the year cannot
-- fit into an `int'.
--
-- Calling `localtime' has one other effect: it sets the variable
-- `tzname' with information about the current time zone. *Note Time
-- Zone Functions::.
--
-- Using the `localtime' function is a big problem in multi-threaded
--programs. The result is returned in a static buffer and this is used in
--all threads. POSIX.1c introduced a variant of this function.
--
-- - Function: struct tm * localtime_r (const time_t *TIME, struct tm
-- *RESULTP)
-- The `localtime_r' function works just like the `localtime'
-- function. It takes a pointer to a variable containing a simple
-- time and converts it to the broken-down time format.
--
-- But the result is not placed in a static buffer. Instead it is
-- placed in the object of type `struct tm' to which the parameter
-- RESULTP points.
--
-- If the conversion is successful the function returns a pointer to
-- the object the result was written into, i.e., it returns RESULTP.
--
-- - Function: struct tm * gmtime (const time_t *TIME)
-- This function is similar to `localtime', except that the
-- broken-down time is expressed as Coordinated Universal Time (UTC)
-- (formerly called Greenwich Mean Time (GMT)) rather than relative
-- to a local time zone.
--
--
-- As for the `localtime' function we have the problem that the result
--is placed in a static variable. POSIX.1c also provides a replacement
--for `gmtime'.
--
-- - Function: struct tm * gmtime_r (const time_t *TIME, struct tm
-- *RESULTP)
-- This function is similar to `localtime_r', except that it converts
-- just like `gmtime' the given time as Coordinated Universal Time.
--
-- If the conversion is successful the function returns a pointer to
-- the object the result was written into, i.e., it returns RESULTP.
--
-- - Function: time_t mktime (struct tm *BROKENTIME)
-- The `mktime' function is used to convert a broken-down time
-- structure to a simple time representation. It also "normalizes"
-- the contents of the broken-down time structure, by filling in the
-- day of week and day of year based on the other date and time
-- components.
--
-- The `mktime' function ignores the specified contents of the
-- `tm_wday' and `tm_yday' members of the broken-down time structure.
-- It uses the values of the other components to determine the
-- calendar time; it's permissible for these components to have
-- unnormalized values outside their normal ranges. The last thing
-- that `mktime' does is adjust the components of the BROKENTIME
-- structure (including the `tm_wday' and `tm_yday').
--
-- If the specified broken-down time cannot be represented as a
-- simple time, `mktime' returns a value of `(time_t)(-1)' and does
-- not modify the contents of BROKENTIME.
--
-- Calling `mktime' also sets the variable `tzname' with information
-- about the current time zone. *Note Time Zone Functions::.
--
-- - Function: time_t timelocal (struct tm *BROKENTIME)
-- `timelocal' is functionally identical to `mktime', but more
-- mnemonically named. Note that it is the inverse of the `localtime'
-- function.
--
-- *Portability note:* `mktime' is essentially universally
-- available. `timelocal' is rather rare.
--
--
-- - Function: time_t timegm (struct tm *BROKENTIME)
-- `timegm' is functionally identical to `mktime' except it always
-- takes the input values to be Coordinated Universal Time (UTC)
-- regardless of any local time zone setting.
--
-- Note that `timegm' is the inverse of `gmtime'.
--
-- *Portability note:* `mktime' is essentially universally
-- available. `timegm' is rather rare. For the most portable
-- conversion from a UTC broken-down time to a simple time, set the
-- `TZ' environment variable to UTC, call `mktime', then set `TZ'
-- back.
--
--
--
--File: libc.info, Node: High Accuracy Clock, Next: Formatting Calendar Time, Prev: Broken-down Time, Up: Calendar Time
--
--High Accuracy Clock
---------------------
--
-- The `ntp_gettime' and `ntp_adjtime' functions provide an interface
--to monitor and manipulate the system clock to maintain high accuracy
--time. For example, you can fine tune the speed of the clock or
--synchronize it with another time source.
--
-- A typical use of these functions is by a server implementing the
--Network Time Protocol to synchronize the clocks of multiple systems and
--high precision clocks.
--
-- These functions are declared in `sys/timex.h'.
--
-- - Data Type: struct ntptimeval
-- This structure is used for information about the system clock. It
-- contains the following members:
-- `struct timeval time'
-- This is the current calendar time, expressed as the elapsed
-- time since the epoch. The `struct timeval' data type is
-- described in *Note Elapsed Time::.
--
-- `long int maxerror'
-- This is the maximum error, measured in microseconds. Unless
-- updated via `ntp_adjtime' periodically, this value will reach
-- some platform-specific maximum value.
--
-- `long int esterror'
-- This is the estimated error, measured in microseconds. This
-- value can be set by `ntp_adjtime' to indicate the estimated
-- offset of the system clock from the true calendar time.
--
-- - Function: int ntp_gettime (struct ntptimeval *TPTR)
-- The `ntp_gettime' function sets the structure pointed to by TPTR
-- to current values. The elements of the structure afterwards
-- contain the values the timer implementation in the kernel assumes.
-- They might or might not be correct. If they are not a
-- `ntp_adjtime' call is necessary.
--
-- The return value is `0' on success and other values on failure.
-- The following `errno' error conditions are defined for this
-- function:
--
-- `TIME_ERROR'
-- The precision clock model is not properly set up at the
-- moment, thus the clock must be considered unsynchronized, and
-- the values should be treated with care.
--
-- - Data Type: struct timex
-- This structure is used to control and monitor the system clock. It
-- contains the following members:
-- `unsigned int modes'
-- This variable controls whether and which values are set.
-- Several symbolic constants have to be combined with _binary
-- or_ to specify the effective mode. These constants start
-- with `MOD_'.
--
-- `long int offset'
-- This value indicates the current offset of the system clock
-- from the true calendar time. The value is given in
-- microseconds. If bit `MOD_OFFSET' is set in `modes', the
-- offset (and possibly other dependent values) can be set. The
-- offset's absolute value must not exceed `MAXPHASE'.
--
-- `long int frequency'
-- This value indicates the difference in frequency between the
-- true calendar time and the system clock. The value is
-- expressed as scaled PPM (parts per million, 0.0001%). The
-- scaling is `1 << SHIFT_USEC'. The value can be set with bit
-- `MOD_FREQUENCY', but the absolute value must not exceed
-- `MAXFREQ'.
--
-- `long int maxerror'
-- This is the maximum error, measured in microseconds. A new
-- value can be set using bit `MOD_MAXERROR'. Unless updated via
-- `ntp_adjtime' periodically, this value will increase steadily
-- and reach some platform-specific maximum value.
--
-- `long int esterror'
-- This is the estimated error, measured in microseconds. This
-- value can be set using bit `MOD_ESTERROR'.
--
-- `int status'
-- This variable reflects the various states of the clock
-- machinery. There are symbolic constants for the significant
-- bits, starting with `STA_'. Some of these flags can be
-- updated using the `MOD_STATUS' bit.
--
-- `long int constant'
-- This value represents the bandwidth or stiffness of the PLL
-- (phase locked loop) implemented in the kernel. The value can
-- be changed using bit `MOD_TIMECONST'.
--
-- `long int precision'
-- This value represents the accuracy or the maximum error when
-- reading the system clock. The value is expressed in
-- microseconds.
--
-- `long int tolerance'
-- This value represents the maximum frequency error of the
-- system clock in scaled PPM. This value is used to increase
-- the `maxerror' every second.
--
-- `struct timeval time'
-- The current calendar time.
--
-- `long int tick'
-- The elapsed time between clock ticks in microseconds. A
-- clock tick is a periodic timer interrupt on which the system
-- clock is based.
--
-- `long int ppsfreq'
-- This is the first of a few optional variables that are
-- present only if the system clock can use a PPS (pulse per
-- second) signal to discipline the system clock. The value is
-- expressed in scaled PPM and it denotes the difference in
-- frequency between the system clock and the PPS signal.
--
-- `long int jitter'
-- This value expresses a median filtered average of the PPS
-- signal's dispersion in microseconds.
--
-- `int shift'
-- This value is a binary exponent for the duration of the PPS
-- calibration interval, ranging from `PPS_SHIFT' to
-- `PPS_SHIFTMAX'.
--
-- `long int stabil'
-- This value represents the median filtered dispersion of the
-- PPS frequency in scaled PPM.
--
-- `long int jitcnt'
-- This counter represents the number of pulses where the jitter
-- exceeded the allowed maximum `MAXTIME'.
--
-- `long int calcnt'
-- This counter reflects the number of successful calibration
-- intervals.
--
-- `long int errcnt'
-- This counter represents the number of calibration errors
-- (caused by large offsets or jitter).
--
-- `long int stbcnt'
-- This counter denotes the number of of calibrations where the
-- stability exceeded the threshold.
--
-- - Function: int ntp_adjtime (struct timex *TPTR)
-- The `ntp_adjtime' function sets the structure specified by TPTR to
-- current values.
--
-- In addition, `ntp_adjtime' updates some settings to match what you
-- pass to it in *TPTR. Use the `modes' element of *TPTR to select
-- what settings to update. You can set `offset', `freq',
-- `maxerror', `esterror', `status', `constant', and `tick'.
--
-- `modes' = zero means set nothing.
--
-- Only the superuser can update settings.
--
-- The return value is `0' on success and other values on failure.
-- The following `errno' error conditions are defined for this
-- function:
--
-- `TIME_ERROR'
-- The high accuracy clock model is not properly set up at the
-- moment, thus the clock must be considered unsynchronized, and
-- the values should be treated with care. Another reason could
-- be that the specified new values are not allowed.
--
-- `EPERM'
-- The process specified a settings update, but is not superuser.
--
-- For more details see RFC1305 (Network Time Protocol, Version 3) and
-- related documents.
--
-- *Portability note:* Early versions of the GNU C library did not
-- have this function but did have the synonymous `adjtimex'.
--
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-36 glibc-2.3.2-200304020432/manual/libc.info-36
---- glibc-2.3.2/manual/libc.info-36 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-36 Thu Jan 1 01:00:00 1970
-@@ -1,1261 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Formatting Calendar Time, Next: Parsing Date and Time, Prev: High Accuracy Clock, Up: Calendar Time
--
--Formatting Calendar Time
--------------------------
--
-- The functions described in this section format calendar time values
--as strings. These functions are declared in the header file `time.h'.
--
-- - Function: char * asctime (const struct tm *BROKENTIME)
-- The `asctime' function converts the broken-down time value that
-- BROKENTIME points to into a string in a standard format:
--
-- "Tue May 21 13:46:22 1991\n"
--
-- The abbreviations for the days of week are: `Sun', `Mon', `Tue',
-- `Wed', `Thu', `Fri', and `Sat'.
--
-- The abbreviations for the months are: `Jan', `Feb', `Mar', `Apr',
-- `May', `Jun', `Jul', `Aug', `Sep', `Oct', `Nov', and `Dec'.
--
-- The return value points to a statically allocated string, which
-- might be overwritten by subsequent calls to `asctime' or `ctime'.
-- (But no other library function overwrites the contents of this
-- string.)
--
-- - Function: char * asctime_r (const struct tm *BROKENTIME, char
-- *BUFFER)
-- This function is similar to `asctime' but instead of placing the
-- result in a static buffer it writes the string in the buffer
-- pointed to by the parameter BUFFER. This buffer should have room
-- for at least 26 bytes, including the terminating null.
--
-- If no error occurred the function returns a pointer to the string
-- the result was written into, i.e., it returns BUFFER. Otherwise
-- return `NULL'.
--
-- - Function: char * ctime (const time_t *TIME)
-- The `ctime' function is similar to `asctime', except that you
-- specify the calendar time argument as a `time_t' simple time value
-- rather than in broken-down local time format. It is equivalent to
--
-- asctime (localtime (TIME))
--
-- `ctime' sets the variable `tzname', because `localtime' does so.
-- *Note Time Zone Functions::.
--
-- - Function: char * ctime_r (const time_t *TIME, char *BUFFER)
-- This function is similar to `ctime', but places the result in the
-- string pointed to by BUFFER. It is equivalent to (written using
-- gcc extensions, *note Statement Exprs: (gcc)Statement Exprs.):
--
-- ({ struct tm tm; asctime_r (localtime_r (time, &tm), buf); })
--
-- If no error occurred the function returns a pointer to the string
-- the result was written into, i.e., it returns BUFFER. Otherwise
-- return `NULL'.
--
-- - Function: size_t strftime (char *S, size_t SIZE, const char
-- *TEMPLATE, const struct tm *BROKENTIME)
-- This function is similar to the `sprintf' function (*note
-- Formatted Input::), but the conversion specifications that can
-- appear in the format template TEMPLATE are specialized for
-- printing components of the date and time BROKENTIME according to
-- the locale currently specified for time conversion (*note
-- Locales::).
--
-- Ordinary characters appearing in the TEMPLATE are copied to the
-- output string S; this can include multibyte character sequences.
-- Conversion specifiers are introduced by a `%' character, followed
-- by an optional flag which can be one of the following. These flags
-- are all GNU extensions. The first three affect only the output of
-- numbers:
--
-- `_'
-- The number is padded with spaces.
--
-- `-'
-- The number is not padded at all.
--
-- `0'
-- The number is padded with zeros even if the format specifies
-- padding with spaces.
--
-- `^'
-- The output uses uppercase characters, but only if this is
-- possible (*note Case Conversion::).
--
-- The default action is to pad the number with zeros to keep it a
-- constant width. Numbers that do not have a range indicated below
-- are never padded, since there is no natural width for them.
--
-- Following the flag an optional specification of the width is
-- possible. This is specified in decimal notation. If the natural
-- size of the output is of the field has less than the specified
-- number of characters, the result is written right adjusted and
-- space padded to the given size.
--
-- An optional modifier can follow the optional flag and width
-- specification. The modifiers, which were first standardized by
-- POSIX.2-1992 and by ISO C99, are:
--
-- `E'
-- Use the locale's alternate representation for date and time.
-- This modifier applies to the `%c', `%C', `%x', `%X', `%y' and
-- `%Y' format specifiers. In a Japanese locale, for example,
-- `%Ex' might yield a date format based on the Japanese
-- Emperors' reigns.
--
-- `O'
-- Use the locale's alternate numeric symbols for numbers. This
-- modifier applies only to numeric format specifiers.
--
-- If the format supports the modifier but no alternate representation
-- is available, it is ignored.
--
-- The conversion specifier ends with a format specifier taken from
-- the following list. The whole `%' sequence is replaced in the
-- output string as follows:
--
-- `%a'
-- The abbreviated weekday name according to the current locale.
--
-- `%A'
-- The full weekday name according to the current locale.
--
-- `%b'
-- The abbreviated month name according to the current locale.
--
-- `%B'
-- The full month name according to the current locale.
--
-- `%c'
-- The preferred calendar time representation for the current
-- locale.
--
-- `%C'
-- The century of the year. This is equivalent to the greatest
-- integer not greater than the year divided by 100.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%d'
-- The day of the month as a decimal number (range `01' through
-- `31').
--
-- `%D'
-- The date using the format `%m/%d/%y'.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%e'
-- The day of the month like with `%d', but padded with blank
-- (range ` 1' through `31').
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%F'
-- The date using the format `%Y-%m-%d'. This is the form
-- specified in the ISO 8601 standard and is the preferred form
-- for all uses.
--
-- This format was first standardized by ISO C99 and by
-- POSIX.1-2001.
--
-- `%g'
-- The year corresponding to the ISO week number, but without
-- the century (range `00' through `99'). This has the same
-- format and value as `%y', except that if the ISO week number
-- (see `%V') belongs to the previous or next year, that year is
-- used instead.
--
-- This format was first standardized by ISO C99 and by
-- POSIX.1-2001.
--
-- `%G'
-- The year corresponding to the ISO week number. This has the
-- same format and value as `%Y', except that if the ISO week
-- number (see `%V') belongs to the previous or next year, that
-- year is used instead.
--
-- This format was first standardized by ISO C99 and by
-- POSIX.1-2001 but was previously available as a GNU extension.
--
-- `%h'
-- The abbreviated month name according to the current locale.
-- The action is the same as for `%b'.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%H'
-- The hour as a decimal number, using a 24-hour clock (range
-- `00' through `23').
--
-- `%I'
-- The hour as a decimal number, using a 12-hour clock (range
-- `01' through `12').
--
-- `%j'
-- The day of the year as a decimal number (range `001' through
-- `366').
--
-- `%k'
-- The hour as a decimal number, using a 24-hour clock like
-- `%H', but padded with blank (range ` 0' through `23').
--
-- This format is a GNU extension.
--
-- `%l'
-- The hour as a decimal number, using a 12-hour clock like
-- `%I', but padded with blank (range ` 1' through `12').
--
-- This format is a GNU extension.
--
-- `%m'
-- The month as a decimal number (range `01' through `12').
--
-- `%M'
-- The minute as a decimal number (range `00' through `59').
--
-- `%n'
-- A single `\n' (newline) character.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%p'
-- Either `AM' or `PM', according to the given time value; or the
-- corresponding strings for the current locale. Noon is
-- treated as `PM' and midnight as `AM'. In most locales
-- `AM'/`PM' format is not supported, in such cases `"%p"'
-- yields an empty string.
--
-- `%P'
-- Either `am' or `pm', according to the given time value; or the
-- corresponding strings for the current locale, printed in
-- lowercase characters. Noon is treated as `pm' and midnight
-- as `am'. In most locales `AM'/`PM' format is not supported,
-- in such cases `"%P"' yields an empty string.
--
-- This format is a GNU extension.
--
-- `%r'
-- The complete calendar time using the AM/PM format of the
-- current locale.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99. In the POSIX locale, this format is equivalent to
-- `%I:%M:%S %p'.
--
-- `%R'
-- The hour and minute in decimal numbers using the format
-- `%H:%M'.
--
-- This format was first standardized by ISO C99 and by
-- POSIX.1-2001 but was previously available as a GNU extension.
--
-- `%s'
-- The number of seconds since the epoch, i.e., since 1970-01-01
-- 00:00:00 UTC. Leap seconds are not counted unless leap
-- second support is available.
--
-- This format is a GNU extension.
--
-- `%S'
-- The seconds as a decimal number (range `00' through `60').
--
-- `%t'
-- A single `\t' (tabulator) character.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%T'
-- The time of day using decimal numbers using the format
-- `%H:%M:%S'.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%u'
-- The day of the week as a decimal number (range `1' through
-- `7'), Monday being `1'.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%U'
-- The week number of the current year as a decimal number
-- (range `00' through `53'), starting with the first Sunday as
-- the first day of the first week. Days preceding the first
-- Sunday in the year are considered to be in week `00'.
--
-- `%V'
-- The ISO 8601:1988 week number as a decimal number (range `01'
-- through `53'). ISO weeks start with Monday and end with
-- Sunday. Week `01' of a year is the first week which has the
-- majority of its days in that year; this is equivalent to the
-- week containing the year's first Thursday, and it is also
-- equivalent to the week containing January 4. Week `01' of a
-- year can contain days from the previous year. The week
-- before week `01' of a year is the last week (`52' or `53') of
-- the previous year even if it contains days from the new year.
--
-- This format was first standardized by POSIX.2-1992 and by
-- ISO C99.
--
-- `%w'
-- The day of the week as a decimal number (range `0' through
-- `6'), Sunday being `0'.
--
-- `%W'
-- The week number of the current year as a decimal number
-- (range `00' through `53'), starting with the first Monday as
-- the first day of the first week. All days preceding the
-- first Monday in the year are considered to be in week `00'.
--
-- `%x'
-- The preferred date representation for the current locale.
--
-- `%X'
-- The preferred time of day representation for the current
-- locale.
--
-- `%y'
-- The year without a century as a decimal number (range `00'
-- through `99'). This is equivalent to the year modulo 100.
--
-- `%Y'
-- The year as a decimal number, using the Gregorian calendar.
-- Years before the year `1' are numbered `0', `-1', and so on.
--
-- `%z'
-- RFC 822/ISO 8601:1988 style numeric time zone (e.g., `-0600'
-- or `+0100'), or nothing if no time zone is determinable.
--
-- This format was first standardized by ISO C99 and by
-- POSIX.1-2001 but was previously available as a GNU extension.
--
-- In the POSIX locale, a full RFC 822 timestamp is generated by
-- the format `"%a, %d %b %Y %H:%M:%S %z"' (or the equivalent
-- `"%a, %d %b %Y %T %z"').
--
-- `%Z'
-- The time zone abbreviation (empty if the time zone can't be
-- determined).
--
-- `%%'
-- A literal `%' character.
--
-- The SIZE parameter can be used to specify the maximum number of
-- characters to be stored in the array S, including the terminating
-- null character. If the formatted time requires more than SIZE
-- characters, `strftime' returns zero and the contents of the array
-- S are undefined. Otherwise the return value indicates the number
-- of characters placed in the array S, not including the terminating
-- null character.
--
-- _Warning:_ This convention for the return value which is prescribed
-- in ISO C can lead to problems in some situations. For certain
-- format strings and certain locales the output really can be the
-- empty string and this cannot be discovered by testing the return
-- value only. E.g., in most locales the AM/PM time format is not
-- supported (most of the world uses the 24 hour time
-- representation). In such locales `"%p"' will return the empty
-- string, i.e., the return value is zero. To detect situations like
-- this something similar to the following code should be used:
--
-- buf[0] = '\1';
-- len = strftime (buf, bufsize, format, tp);
-- if (len == 0 && buf[0] != '\0')
-- {
-- /* Something went wrong in the strftime call. */
-- ...
-- }
--
-- If S is a null pointer, `strftime' does not actually write
-- anything, but instead returns the number of characters it would
-- have written.
--
-- According to POSIX.1 every call to `strftime' implies a call to
-- `tzset'. So the contents of the environment variable `TZ' is
-- examined before any output is produced.
--
-- For an example of `strftime', see *Note Time Functions Example::.
--
-- - Function: size_t wcsftime (wchar_t *S, size_t SIZE, const wchar_t
-- *TEMPLATE, const struct tm *BROKENTIME)
-- The `wcsftime' function is equivalent to the `strftime' function
-- with the difference that it operates on wide character strings.
-- The buffer where the result is stored, pointed to by S, must be an
-- array of wide characters. The parameter SIZE which specifies the
-- size of the output buffer gives the number of wide character, not
-- the number of bytes.
--
-- Also the format string TEMPLATE is a wide character string. Since
-- all characters needed to specify the format string are in the basic
-- character set it is portably possible to write format strings in
-- the C source code using the `L"..."' notation. The parameter
-- BROKENTIME has the same meaning as in the `strftime' call.
--
-- The `wcsftime' function supports the same flags, modifiers, and
-- format specifiers as the `strftime' function.
--
-- The return value of `wcsftime' is the number of wide characters
-- stored in `s'. When more characters would have to be written than
-- can be placed in the buffer S the return value is zero, with the
-- same problems indicated in the `strftime' documentation.
--
--
--File: libc.info, Node: Parsing Date and Time, Next: TZ Variable, Prev: Formatting Calendar Time, Up: Calendar Time
--
--Convert textual time and date information back
------------------------------------------------
--
-- The ISO C standard does not specify any functions which can convert
--the output of the `strftime' function back into a binary format. This
--led to a variety of more-or-less successful implementations with
--different interfaces over the years. Then the Unix standard was
--extended by the addition of two functions: `strptime' and `getdate'.
--Both have strange interfaces but at least they are widely available.
--
--* Menu:
--
--* Low-Level Time String Parsing:: Interpret string according to given format.
--* General Time String Parsing:: User-friendly function to parse data and
-- time strings.
--
--
--File: libc.info, Node: Low-Level Time String Parsing, Next: General Time String Parsing, Up: Parsing Date and Time
--
--Interpret string according to given format
--..........................................
--
-- he first function is rather low-level. It is nevertheless frequently
--used in software since it is better known. Its interface and
--implementation are heavily influenced by the `getdate' function, which
--is defined and implemented in terms of calls to `strptime'.
--
-- - Function: char * strptime (const char *S, const char *FMT, struct tm
-- *TP)
-- The `strptime' function parses the input string S according to the
-- format string FMT and stores its results in the structure TP.
--
-- The input string could be generated by a `strftime' call or
-- obtained any other way. It does not need to be in a
-- human-recognizable format; e.g. a date passed as `"02:1999:9"' is
-- acceptable, even though it is ambiguous without context. As long
-- as the format string FMT matches the input string the function
-- will succeed.
--
-- The user has to make sure, though, that the input can be parsed in
-- a unambiguous way. The string `"1999112"' can be parsed using the
-- format `"%Y%m%d"' as 1999-1-12, 1999-11-2, or even 19991-1-2. It
-- is necessary to add appropriate separators to reliably get results.
--
-- The format string consists of the same components as the format
-- string of the `strftime' function. The only difference is that
-- the flags `_', `-', `0', and `^' are not allowed. Several of the
-- distinct formats of `strftime' do the same work in `strptime'
-- since differences like case of the input do not matter. For
-- reasons of symmetry all formats are supported, though.
--
-- The modifiers `E' and `O' are also allowed everywhere the
-- `strftime' function allows them.
--
-- The formats are:
--
-- `%a'
-- `%A'
-- The weekday name according to the current locale, in
-- abbreviated form or the full name.
--
-- `%b'
-- `%B'
-- `%h'
-- The month name according to the current locale, in
-- abbreviated form or the full name.
--
-- `%c'
-- The date and time representation for the current locale.
--
-- `%Ec'
-- Like `%c' but the locale's alternative date and time format
-- is used.
--
-- `%C'
-- The century of the year.
--
-- It makes sense to use this format only if the format string
-- also contains the `%y' format.
--
-- `%EC'
-- The locale's representation of the period.
--
-- Unlike `%C' it sometimes makes sense to use this format since
-- some cultures represent years relative to the beginning of
-- eras instead of using the Gregorian years.
--
-- `%d'
--
-- `%e'
-- The day of the month as a decimal number (range `1' through
-- `31'). Leading zeroes are permitted but not required.
--
-- `%Od'
-- `%Oe'
-- Same as `%d' but using the locale's alternative numeric
-- symbols.
--
-- Leading zeroes are permitted but not required.
--
-- `%D'
-- Equivalent to `%m/%d/%y'.
--
-- `%F'
-- Equivalent to `%Y-%m-%d', which is the ISO 8601 date format.
--
-- This is a GNU extension following an ISO C99 extension to
-- `strftime'.
--
-- `%g'
-- The year corresponding to the ISO week number, but without
-- the century (range `00' through `99').
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- This format is a GNU extension following a GNU extension of
-- `strftime'.
--
-- `%G'
-- The year corresponding to the ISO week number.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- This format is a GNU extension following a GNU extension of
-- `strftime'.
--
-- `%H'
-- `%k'
-- The hour as a decimal number, using a 24-hour clock (range
-- `00' through `23').
--
-- `%k' is a GNU extension following a GNU extension of
-- `strftime'.
--
-- `%OH'
-- Same as `%H' but using the locale's alternative numeric
-- symbols.
--
-- `%I'
-- `%l'
-- The hour as a decimal number, using a 12-hour clock (range
-- `01' through `12').
--
-- `%l' is a GNU extension following a GNU extension of
-- `strftime'.
--
-- `%OI'
-- Same as `%I' but using the locale's alternative numeric
-- symbols.
--
-- `%j'
-- The day of the year as a decimal number (range `1' through
-- `366').
--
-- Leading zeroes are permitted but not required.
--
-- `%m'
-- The month as a decimal number (range `1' through `12').
--
-- Leading zeroes are permitted but not required.
--
-- `%Om'
-- Same as `%m' but using the locale's alternative numeric
-- symbols.
--
-- `%M'
-- The minute as a decimal number (range `0' through `59').
--
-- Leading zeroes are permitted but not required.
--
-- `%OM'
-- Same as `%M' but using the locale's alternative numeric
-- symbols.
--
-- `%n'
-- `%t'
-- Matches any white space.
--
-- `%p'
--
-- `%P'
-- The locale-dependent equivalent to `AM' or `PM'.
--
-- This format is not useful unless `%I' or `%l' is also used.
-- Another complication is that the locale might not define
-- these values at all and therefore the conversion fails.
--
-- `%P' is a GNU extension following a GNU extension to
-- `strftime'.
--
-- `%r'
-- The complete time using the AM/PM format of the current
-- locale.
--
-- A complication is that the locale might not define this
-- format at all and therefore the conversion fails.
--
-- `%R'
-- The hour and minute in decimal numbers using the format
-- `%H:%M'.
--
-- `%R' is a GNU extension following a GNU extension to
-- `strftime'.
--
-- `%s'
-- The number of seconds since the epoch, i.e., since 1970-01-01
-- 00:00:00 UTC. Leap seconds are not counted unless leap
-- second support is available.
--
-- `%s' is a GNU extension following a GNU extension to
-- `strftime'.
--
-- `%S'
-- The seconds as a decimal number (range `0' through `60').
--
-- Leading zeroes are permitted but not required.
--
-- *Note:* The Unix specification says the upper bound on this
-- value is `61', a result of a decision to allow double leap
-- seconds. You will not see the value `61' because no minute
-- has more than one leap second, but the myth persists.
--
-- `%OS'
-- Same as `%S' but using the locale's alternative numeric
-- symbols.
--
-- `%T'
-- Equivalent to the use of `%H:%M:%S' in this place.
--
-- `%u'
-- The day of the week as a decimal number (range `1' through
-- `7'), Monday being `1'.
--
-- Leading zeroes are permitted but not required.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- `%U'
-- The week number of the current year as a decimal number
-- (range `0' through `53').
--
-- Leading zeroes are permitted but not required.
--
-- `%OU'
-- Same as `%U' but using the locale's alternative numeric
-- symbols.
--
-- `%V'
-- The ISO 8601:1988 week number as a decimal number (range `1'
-- through `53').
--
-- Leading zeroes are permitted but not required.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- `%w'
-- The day of the week as a decimal number (range `0' through
-- `6'), Sunday being `0'.
--
-- Leading zeroes are permitted but not required.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- `%Ow'
-- Same as `%w' but using the locale's alternative numeric
-- symbols.
--
-- `%W'
-- The week number of the current year as a decimal number
-- (range `0' through `53').
--
-- Leading zeroes are permitted but not required.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- `%OW'
-- Same as `%W' but using the locale's alternative numeric
-- symbols.
--
-- `%x'
-- The date using the locale's date format.
--
-- `%Ex'
-- Like `%x' but the locale's alternative data representation is
-- used.
--
-- `%X'
-- The time using the locale's time format.
--
-- `%EX'
-- Like `%X' but the locale's alternative time representation is
-- used.
--
-- `%y'
-- The year without a century as a decimal number (range `0'
-- through `99').
--
-- Leading zeroes are permitted but not required.
--
-- Note that it is questionable to use this format without the
-- `%C' format. The `strptime' function does regard input
-- values in the range 68 to 99 as the years 1969 to 1999 and
-- the values 0 to 68 as the years 2000 to 2068. But maybe this
-- heuristic fails for some input data.
--
-- Therefore it is best to avoid `%y' completely and use `%Y'
-- instead.
--
-- `%Ey'
-- The offset from `%EC' in the locale's alternative
-- representation.
--
-- `%Oy'
-- The offset of the year (from `%C') using the locale's
-- alternative numeric symbols.
--
-- `%Y'
-- The year as a decimal number, using the Gregorian calendar.
--
-- `%EY'
-- The full alternative year representation.
--
-- `%z'
-- The offset from GMT in ISO 8601/RFC822 format.
--
-- `%Z'
-- The timezone name.
--
-- _Note:_ Currently, this is not fully implemented. The format
-- is recognized, input is consumed but no field in TM is set.
--
-- `%%'
-- A literal `%' character.
--
-- All other characters in the format string must have a matching
-- character in the input string. Exceptions are white spaces in the
-- input string which can match zero or more whitespace characters in
-- the format string.
--
-- *Portability Note:* The XPG standard advises applications to use
-- at least one whitespace character (as specified by `isspace') or
-- other non-alphanumeric characters between any two conversion
-- specifications. The GNU C Library does not have this limitation
-- but other libraries might have trouble parsing formats like
-- `"%d%m%Y%H%M%S"'.
--
-- The `strptime' function processes the input string from right to
-- left. Each of the three possible input elements (white space,
-- literal, or format) are handled one after the other. If the input
-- cannot be matched to the format string the function stops. The
-- remainder of the format and input strings are not processed.
--
-- The function returns a pointer to the first character it was
-- unable to process. If the input string contains more characters
-- than required by the format string the return value points right
-- after the last consumed input character. If the whole input
-- string is consumed the return value points to the `NULL' byte at
-- the end of the string. If an error occurs, i.e. `strptime' fails
-- to match all of the format string, the function returns `NULL'.
--
-- The specification of the function in the XPG standard is rather
--vague, leaving out a few important pieces of information. Most
--importantly, it does not specify what happens to those elements of TM
--which are not directly initialized by the different formats. The
--implementations on different Unix systems vary here.
--
-- The GNU libc implementation does not touch those fields which are not
--directly initialized. Exceptions are the `tm_wday' and `tm_yday'
--elements, which are recomputed if any of the year, month, or date
--elements changed. This has two implications:
--
-- * Before calling the `strptime' function for a new input string, you
-- should prepare the TM structure you pass. Normally this will mean
-- initializing all values are to zero. Alternatively, you can set
-- all fields to values like `INT_MAX', allowing you to determine
-- which elements were set by the function call. Zero does not work
-- here since it is a valid value for many of the fields.
--
-- Careful initialization is necessary if you want to find out
-- whether a certain field in TM was initialized by the function call.
--
-- * You can construct a `struct tm' value with several consecutive
-- `strptime' calls. A useful application of this is e.g. the parsing
-- of two separate strings, one containing date information and the
-- other time information. By parsing one after the other without
-- clearing the structure in-between, you can construct a complete
-- broken-down time.
--
-- The following example shows a function which parses a string which is
--contains the date information in either US style or ISO 8601 form:
--
-- const char *
-- parse_date (const char *input, struct tm *tm)
-- {
-- const char *cp;
--
-- /* First clear the result structure. */
-- memset (tm, '\0', sizeof (*tm));
--
-- /* Try the ISO format first. */
-- cp = strptime (input, "%F", tm);
-- if (cp == NULL)
-- {
-- /* Does not match. Try the US form. */
-- cp = strptime (input, "%D", tm);
-- }
--
-- return cp;
-- }
--
--
--File: libc.info, Node: General Time String Parsing, Prev: Low-Level Time String Parsing, Up: Parsing Date and Time
--
--A More User-friendly Way to Parse Times and Dates
--.................................................
--
-- The Unix standard defines another function for parsing date strings.
--The interface is weird, but if the function happens to suit your
--application it is just fine. It is problematic to use this function in
--multi-threaded programs or libraries, since it returns a pointer to a
--static variable, and uses a global variable and global state (an
--environment variable).
--
-- - Variable: getdate_err
-- This variable of type `int' contains the error code of the last
-- unsuccessful call to `getdate'. Defined values are:
--
-- 1
-- The environment variable `DATEMSK' is not defined or null.
--
-- 2
-- The template file denoted by the `DATEMSK' environment
-- variable cannot be opened.
--
-- 3
-- Information about the template file cannot retrieved.
--
-- 4
-- The template file is not a regular file.
--
-- 5
-- An I/O error occurred while reading the template file.
--
-- 6
-- Not enough memory available to execute the function.
--
-- 7
-- The template file contains no matching template.
--
-- 8
-- The input date is invalid, but would match a template
-- otherwise. This includes dates like February 31st, and dates
-- which cannot be represented in a `time_t' variable.
--
-- - Function: struct tm * getdate (const char *STRING)
-- The interface to `getdate' is the simplest possible for a function
-- to parse a string and return the value. STRING is the input
-- string and the result is returned in a statically-allocated
-- variable.
--
-- The details about how the string is processed are hidden from the
-- user. In fact, they can be outside the control of the program.
-- Which formats are recognized is controlled by the file named by
-- the environment variable `DATEMSK'. This file should contain
-- lines of valid format strings which could be passed to `strptime'.
--
-- The `getdate' function reads these format strings one after the
-- other and tries to match the input string. The first line which
-- completely matches the input string is used.
--
-- Elements not initialized through the format string retain the
-- values present at the time of the `getdate' function call.
--
-- The formats recognized by `getdate' are the same as for
-- `strptime'. See above for an explanation. There are only a few
-- extensions to the `strptime' behavior:
--
-- * If the `%Z' format is given the broken-down time is based on
-- the current time of the timezone matched, not of the current
-- timezone of the runtime environment.
--
-- _Note_: This is not implemented (currently). The problem is
-- that timezone names are not unique. If a fixed timezone is
-- assumed for a given string (say `EST' meaning US East Coast
-- time), then uses for countries other than the USA will fail.
-- So far we have found no good solution to this.
--
-- * If only the weekday is specified the selected day depends on
-- the current date. If the current weekday is greater or equal
-- to the `tm_wday' value the current week's day is chosen,
-- otherwise the day next week is chosen.
--
-- * A similar heuristic is used when only the month is given and
-- not the year. If the month is greater than or equal to the
-- current month, then the current year is used. Otherwise it
-- wraps to next year. The first day of the month is assumed if
-- one is not explicitly specified.
--
-- * The current hour, minute, and second are used if the
-- appropriate value is not set through the format.
--
-- * If no date is given tomorrow's date is used if the time is
-- smaller than the current time. Otherwise today's date is
-- taken.
--
-- It should be noted that the format in the template file need not
-- only contain format elements. The following is a list of possible
-- format strings (taken from the Unix standard):
--
-- %m
-- %A %B %d, %Y %H:%M:%S
-- %A
-- %B
-- %m/%d/%y %I %p
-- %d,%m,%Y %H:%M
-- at %A the %dst of %B in %Y
-- run job at %I %p,%B %dnd
-- %A den %d. %B %Y %H.%M Uhr
--
-- As you can see, the template list can contain very specific
-- strings like `run job at %I %p,%B %dnd'. Using the above list of
-- templates and assuming the current time is Mon Sep 22 12:19:47 EDT
-- 1986 we can obtain the following results for the given input.
--
-- Input Match Result
-- Mon %a Mon Sep 22 12:19:47 EDT 1986
-- Sun %a Sun Sep 28 12:19:47 EDT 1986
-- Fri %a Fri Sep 26 12:19:47 EDT 1986
-- September %B Mon Sep 1 12:19:47 EDT 1986
-- January %B Thu Jan 1 12:19:47 EST 1987
-- December %B Mon Dec 1 12:19:47 EST 1986
-- Sep Mon %b %a Mon Sep 1 12:19:47 EDT 1986
-- Jan Fri %b %a Fri Jan 2 12:19:47 EST 1987
-- Dec Mon %b %a Mon Dec 1 12:19:47 EST 1986
-- Jan Wed 1989 %b %a %Y Wed Jan 4 12:19:47 EST 1989
-- Fri 9 %a %H Fri Sep 26 09:00:00 EDT 1986
-- Feb 10:30 %b %H:%S Sun Feb 1 10:00:30 EST 1987
-- 10:30 %H:%M Tue Sep 23 10:30:00 EDT 1986
-- 13:30 %H:%M Mon Sep 22 13:30:00 EDT 1986
--
-- The return value of the function is a pointer to a static variable
-- of type `struct tm', or a null pointer if an error occurred. The
-- result is only valid until the next `getdate' call, making this
-- function unusable in multi-threaded applications.
--
-- The `errno' variable is _not_ changed. Error conditions are
-- stored in the global variable `getdate_err'. See the description
-- above for a list of the possible error values.
--
-- _Warning:_ The `getdate' function should _never_ be used in
-- SUID-programs. The reason is obvious: using the `DATEMSK'
-- environment variable you can get the function to open any
-- arbitrary file and chances are high that with some bogus input
-- (such as a binary file) the program will crash.
--
-- - Function: int getdate_r (const char *STRING, struct tm *TP)
-- The `getdate_r' function is the reentrant counterpart of
-- `getdate'. It does not use the global variable `getdate_err' to
-- signal an error, but instead returns an error code. The same error
-- codes as described in the `getdate_err' documentation above are
-- used, with 0 meaning success.
--
-- Moreover, `getdate_r' stores the broken-down time in the variable
-- of type `struct tm' pointed to by the second argument, rather than
-- in a static variable.
--
-- This function is not defined in the Unix standard. Nevertheless
-- it is available on some other Unix systems as well.
--
-- The warning against using `getdate' in SUID-programs applies to
-- `getdate_r' as well.
--
--
--File: libc.info, Node: TZ Variable, Next: Time Zone Functions, Prev: Parsing Date and Time, Up: Calendar Time
--
--Specifying the Time Zone with `TZ'
------------------------------------
--
-- In POSIX systems, a user can specify the time zone by means of the
--`TZ' environment variable. For information about how to set
--environment variables, see *Note Environment Variables::. The functions
--for accessing the time zone are declared in `time.h'.
--
-- You should not normally need to set `TZ'. If the system is
--configured properly, the default time zone will be correct. You might
--set `TZ' if you are using a computer over a network from a different
--time zone, and would like times reported to you in the time zone local
--to you, rather than what is local to the computer.
--
-- In POSIX.1 systems the value of the `TZ' variable can be in one of
--three formats. With the GNU C library, the most common format is the
--last one, which can specify a selection from a large database of time
--zone information for many regions of the world. The first two formats
--are used to describe the time zone information directly, which is both
--more cumbersome and less precise. But the POSIX.1 standard only
--specifies the details of the first two formats, so it is good to be
--familiar with them in case you come across a POSIX.1 system that doesn't
--support a time zone information database.
--
-- The first format is used when there is no Daylight Saving Time (or
--summer time) in the local time zone:
--
-- STD OFFSET
--
-- The STD string specifies the name of the time zone. It must be
--three or more characters long and must not contain a leading colon,
--embedded digits, commas, nor plus and minus signs. There is no space
--character separating the time zone name from the OFFSET, so these
--restrictions are necessary to parse the specification correctly.
--
-- The OFFSET specifies the time value you must add to the local time
--to get a Coordinated Universal Time value. It has syntax like
--[`+'|`-']HH[`:'MM[`:'SS]]. This is positive if the local time zone is
--west of the Prime Meridian and negative if it is east. The hour must
--be between `0' and `23', and the minute and seconds between `0' and
--`59'.
--
-- For example, here is how we would specify Eastern Standard Time, but
--without any Daylight Saving Time alternative:
--
-- EST+5
--
-- The second format is used when there is Daylight Saving Time:
--
-- STD OFFSET DST [OFFSET]`,'START[`/'TIME]`,'END[`/'TIME]
--
-- The initial STD and OFFSET specify the standard time zone, as
--described above. The DST string and OFFSET specify the name and offset
--for the corresponding Daylight Saving Time zone; if the OFFSET is
--omitted, it defaults to one hour ahead of standard time.
--
-- The remainder of the specification describes when Daylight Saving
--Time is in effect. The START field is when Daylight Saving Time goes
--into effect and the END field is when the change is made back to
--standard time. The following formats are recognized for these fields:
--
--`JN'
-- This specifies the Julian day, with N between `1' and `365'.
-- February 29 is never counted, even in leap years.
--
--`N'
-- This specifies the Julian day, with N between `0' and `365'.
-- February 29 is counted in leap years.
--
--`MM.W.D'
-- This specifies day D of week W of month M. The day D must be
-- between `0' (Sunday) and `6'. The week W must be between `1' and
-- `5'; week `1' is the first week in which day D occurs, and week
-- `5' specifies the _last_ D day in the month. The month M should be
-- between `1' and `12'.
--
-- The TIME fields specify when, in the local time currently in effect,
--the change to the other time occurs. If omitted, the default is
--`02:00:00'.
--
-- For example, here is how you would specify the Eastern time zone in
--the United States, including the appropriate Daylight Saving Time and
--its dates of applicability. The normal offset from UTC is 5 hours;
--since this is west of the prime meridian, the sign is positive. Summer
--time begins on the first Sunday in April at 2:00am, and ends on the
--last Sunday in October at 2:00am.
--
-- EST+5EDT,M4.1.0/2,M10.5.0/2
--
-- The schedule of Daylight Saving Time in any particular jurisdiction
--has changed over the years. To be strictly correct, the conversion of
--dates and times in the past should be based on the schedule that was in
--effect then. However, this format has no facilities to let you specify
--how the schedule has changed from year to year. The most you can do is
--specify one particular schedule--usually the present day schedule--and
--this is used to convert any date, no matter when. For precise time zone
--specifications, it is best to use the time zone information database
--(see below).
--
-- The third format looks like this:
--
-- :CHARACTERS
--
-- Each operating system interprets this format differently; in the GNU
--C library, CHARACTERS is the name of a file which describes the time
--zone.
--
-- If the `TZ' environment variable does not have a value, the
--operation chooses a time zone by default. In the GNU C library, the
--default time zone is like the specification `TZ=:/etc/localtime' (or
--`TZ=:/usr/local/etc/localtime', depending on how GNU C library was
--configured; *note Installation::). Other C libraries use their own
--rule for choosing the default time zone, so there is little we can say
--about them.
--
-- If CHARACTERS begins with a slash, it is an absolute file name;
--otherwise the library looks for the file
--`/share/lib/zoneinfo/CHARACTERS'. The `zoneinfo' directory contains
--data files describing local time zones in many different parts of the
--world. The names represent major cities, with subdirectories for
--geographical areas; for example, `America/New_York', `Europe/London',
--`Asia/Hong_Kong'. These data files are installed by the system
--administrator, who also sets `/etc/localtime' to point to the data file
--for the local time zone. The GNU C library comes with a large database
--of time zone information for most regions of the world, which is
--maintained by a community of volunteers and put in the public domain.
--
--
--File: libc.info, Node: Time Zone Functions, Next: Time Functions Example, Prev: TZ Variable, Up: Calendar Time
--
--Functions and Variables for Time Zones
----------------------------------------
--
-- - Variable: char * tzname [2]
-- The array `tzname' contains two strings, which are the standard
-- names of the pair of time zones (standard and Daylight Saving)
-- that the user has selected. `tzname[0]' is the name of the
-- standard time zone (for example, `"EST"'), and `tzname[1]' is the
-- name for the time zone when Daylight Saving Time is in use (for
-- example, `"EDT"'). These correspond to the STD and DST strings
-- (respectively) from the `TZ' environment variable. If Daylight
-- Saving Time is never used, `tzname[1]' is the empty string.
--
-- The `tzname' array is initialized from the `TZ' environment
-- variable whenever `tzset', `ctime', `strftime', `mktime', or
-- `localtime' is called. If multiple abbreviations have been used
-- (e.g. `"EWT"' and `"EDT"' for U.S. Eastern War Time and Eastern
-- Daylight Time), the array contains the most recent abbreviation.
--
-- The `tzname' array is required for POSIX.1 compatibility, but in
-- GNU programs it is better to use the `tm_zone' member of the
-- broken-down time structure, since `tm_zone' reports the correct
-- abbreviation even when it is not the latest one.
--
-- Though the strings are declared as `char *' the user must refrain
-- from modifying these strings. Modifying the strings will almost
-- certainly lead to trouble.
--
--
-- - Function: void tzset (void)
-- The `tzset' function initializes the `tzname' variable from the
-- value of the `TZ' environment variable. It is not usually
-- necessary for your program to call this function, because it is
-- called automatically when you use the other time conversion
-- functions that depend on the time zone.
--
-- The following variables are defined for compatibility with System V
--Unix. Like `tzname', these variables are set by calling `tzset' or the
--other time conversion functions.
--
-- - Variable: long int timezone
-- This contains the difference between UTC and the latest local
-- standard time, in seconds west of UTC. For example, in the U.S.
-- Eastern time zone, the value is `5*60*60'. Unlike the `tm_gmtoff'
-- member of the broken-down time structure, this value is not
-- adjusted for daylight saving, and its sign is reversed. In GNU
-- programs it is better to use `tm_gmtoff', since it contains the
-- correct offset even when it is not the latest one.
--
-- - Variable: int daylight
-- This variable has a nonzero value if Daylight Saving Time rules
-- apply. A nonzero value does not necessarily mean that Daylight
-- Saving Time is now in effect; it means only that Daylight Saving
-- Time is sometimes in effect.
--
--
--File: libc.info, Node: Time Functions Example, Prev: Time Zone Functions, Up: Calendar Time
--
--Time Functions Example
------------------------
--
-- Here is an example program showing the use of some of the calendar
--time functions.
--
-- #include <time.h>
-- #include <stdio.h>
--
-- #define SIZE 256
--
-- int
-- main (void)
-- {
-- char buffer[SIZE];
-- time_t curtime;
-- struct tm *loctime;
--
-- /* Get the current time. */
-- curtime = time (NULL);
--
-- /* Convert it to local time representation. */
-- loctime = localtime (&curtime);
--
-- /* Print out the date and time in the standard format. */
-- fputs (asctime (loctime), stdout);
--
-- /* Print it out in a nice format. */
-- strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
-- fputs (buffer, stdout);
-- strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
-- fputs (buffer, stdout);
--
-- return 0;
-- }
--
-- It produces output like this:
--
-- Wed Jul 31 13:02:36 1991
-- Today is Wednesday, July 31.
-- The time is 01:02 PM.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-37 glibc-2.3.2-200304020432/manual/libc.info-37
---- glibc-2.3.2/manual/libc.info-37 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-37 Thu Jan 1 01:00:00 1970
-@@ -1,1233 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Setting an Alarm, Next: Sleeping, Prev: Calendar Time, Up: Date and Time
--
--Setting an Alarm
--================
--
-- The `alarm' and `setitimer' functions provide a mechanism for a
--process to interrupt itself in the future. They do this by setting a
--timer; when the timer expires, the process receives a signal.
--
-- Each process has three independent interval timers available:
--
-- * A real-time timer that counts elapsed time. This timer sends a
-- `SIGALRM' signal to the process when it expires.
--
-- * A virtual timer that counts processor time used by the process.
-- This timer sends a `SIGVTALRM' signal to the process when it
-- expires.
--
-- * A profiling timer that counts both processor time used by the
-- process, and processor time spent in system calls on behalf of the
-- process. This timer sends a `SIGPROF' signal to the process when
-- it expires.
--
-- This timer is useful for profiling in interpreters. The interval
-- timer mechanism does not have the fine granularity necessary for
-- profiling native code.
--
-- You can only have one timer of each kind set at any given time. If
--you set a timer that has not yet expired, that timer is simply reset to
--the new value.
--
-- You should establish a handler for the appropriate alarm signal using
--`signal' or `sigaction' before issuing a call to `setitimer' or
--`alarm'. Otherwise, an unusual chain of events could cause the timer
--to expire before your program establishes the handler. In this case it
--would be terminated, since termination is the default action for the
--alarm signals. *Note Signal Handling::.
--
-- To be able to use the alarm function to interrupt a system call which
--might block otherwise indefinitely it is important to _not_ set the
--`SA_RESTART' flag when registering the signal handler using
--`sigaction'. When not using `sigaction' things get even uglier: the
--`signal' function has to fixed semantics with respect to restarts. The
--BSD semantics for this function is to set the flag. Therefore, if
--`sigaction' for whatever reason cannot be used, it is necessary to use
--`sysv_signal' and not `signal'.
--
-- The `setitimer' function is the primary means for setting an alarm.
--This facility is declared in the header file `sys/time.h'. The `alarm'
--function, declared in `unistd.h', provides a somewhat simpler interface
--for setting the real-time timer.
--
-- - Data Type: struct itimerval
-- This structure is used to specify when a timer should expire. It
-- contains the following members:
-- `struct timeval it_interval'
-- This is the period between successive timer interrupts. If
-- zero, the alarm will only be sent once.
--
-- `struct timeval it_value'
-- This is the period between now and the first timer interrupt.
-- If zero, the alarm is disabled.
--
-- The `struct timeval' data type is described in *Note Elapsed
-- Time::.
--
-- - Function: int setitimer (int WHICH, struct itimerval *NEW, struct
-- itimerval *OLD)
-- The `setitimer' function sets the timer specified by WHICH
-- according to NEW. The WHICH argument can have a value of
-- `ITIMER_REAL', `ITIMER_VIRTUAL', or `ITIMER_PROF'.
--
-- If OLD is not a null pointer, `setitimer' returns information
-- about any previous unexpired timer of the same kind in the
-- structure it points to.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EINVAL'
-- The timer period is too large.
--
-- - Function: int getitimer (int WHICH, struct itimerval *OLD)
-- The `getitimer' function stores information about the timer
-- specified by WHICH in the structure pointed at by OLD.
--
-- The return value and error conditions are the same as for
-- `setitimer'.
--
--`ITIMER_REAL'
-- This constant can be used as the WHICH argument to the `setitimer'
-- and `getitimer' functions to specify the real-time timer.
--
--`ITIMER_VIRTUAL'
-- This constant can be used as the WHICH argument to the `setitimer'
-- and `getitimer' functions to specify the virtual timer.
--
--`ITIMER_PROF'
-- This constant can be used as the WHICH argument to the `setitimer'
-- and `getitimer' functions to specify the profiling timer.
--
-- - Function: unsigned int alarm (unsigned int SECONDS)
-- The `alarm' function sets the real-time timer to expire in SECONDS
-- seconds. If you want to cancel any existing alarm, you can do
-- this by calling `alarm' with a SECONDS argument of zero.
--
-- The return value indicates how many seconds remain before the
-- previous alarm would have been sent. If there is no previous
-- alarm, `alarm' returns zero.
--
-- The `alarm' function could be defined in terms of `setitimer' like
--this:
--
-- unsigned int
-- alarm (unsigned int seconds)
-- {
-- struct itimerval old, new;
-- new.it_interval.tv_usec = 0;
-- new.it_interval.tv_sec = 0;
-- new.it_value.tv_usec = 0;
-- new.it_value.tv_sec = (long int) seconds;
-- if (setitimer (ITIMER_REAL, &new, &old) < 0)
-- return 0;
-- else
-- return old.it_value.tv_sec;
-- }
--
-- There is an example showing the use of the `alarm' function in *Note
--Handler Returns::.
--
-- If you simply want your process to wait for a given number of
--seconds, you should use the `sleep' function. *Note Sleeping::.
--
-- You shouldn't count on the signal arriving precisely when the timer
--expires. In a multiprocessing environment there is typically some
--amount of delay involved.
--
-- *Portability Note:* The `setitimer' and `getitimer' functions are
--derived from BSD Unix, while the `alarm' function is specified by the
--POSIX.1 standard. `setitimer' is more powerful than `alarm', but
--`alarm' is more widely used.
--
--
--File: libc.info, Node: Sleeping, Prev: Setting an Alarm, Up: Date and Time
--
--Sleeping
--========
--
-- The function `sleep' gives a simple way to make the program wait for
--a short interval. If your program doesn't use signals (except to
--terminate), then you can expect `sleep' to wait reliably throughout the
--specified interval. Otherwise, `sleep' can return sooner if a signal
--arrives; if you want to wait for a given interval regardless of
--signals, use `select' (*note Waiting for I/O::) and don't specify any
--descriptors to wait for.
--
-- - Function: unsigned int sleep (unsigned int SECONDS)
-- The `sleep' function waits for SECONDS or until a signal is
-- delivered, whichever happens first.
--
-- If `sleep' function returns because the requested interval is over,
-- it returns a value of zero. If it returns because of delivery of a
-- signal, its return value is the remaining time in the sleep
-- interval.
--
-- The `sleep' function is declared in `unistd.h'.
--
-- Resist the temptation to implement a sleep for a fixed amount of
--time by using the return value of `sleep', when nonzero, to call
--`sleep' again. This will work with a certain amount of accuracy as
--long as signals arrive infrequently. But each signal can cause the
--eventual wakeup time to be off by an additional second or so. Suppose a
--few signals happen to arrive in rapid succession by bad luck--there is
--no limit on how much this could shorten or lengthen the wait.
--
-- Instead, compute the calendar time at which the program should stop
--waiting, and keep trying to wait until that calendar time. This won't
--be off by more than a second. With just a little more work, you can use
--`select' and make the waiting period quite accurate. (Of course, heavy
--system load can cause additional unavoidable delays--unless the machine
--is dedicated to one application, there is no way you can avoid this.)
--
-- On some systems, `sleep' can do strange things if your program uses
--`SIGALRM' explicitly. Even if `SIGALRM' signals are being ignored or
--blocked when `sleep' is called, `sleep' might return prematurely on
--delivery of a `SIGALRM' signal. If you have established a handler for
--`SIGALRM' signals and a `SIGALRM' signal is delivered while the process
--is sleeping, the action taken might be just to cause `sleep' to return
--instead of invoking your handler. And, if `sleep' is interrupted by
--delivery of a signal whose handler requests an alarm or alters the
--handling of `SIGALRM', this handler and `sleep' will interfere.
--
-- On the GNU system, it is safe to use `sleep' and `SIGALRM' in the
--same program, because `sleep' does not work by means of `SIGALRM'.
--
-- - Function: int nanosleep (const struct timespec *REQUESTED_TIME,
-- struct timespec *REMAINING)
-- If resolution to seconds is not enough the `nanosleep' function can
-- be used. As the name suggests the sleep interval can be specified
-- in nanoseconds. The actual elapsed time of the sleep interval
-- might be longer since the system rounds the elapsed time you
-- request up to the next integer multiple of the actual resolution
-- the system can deliver.
--
-- *`requested_time' is the elapsed time of the interval you want to
-- sleep.
--
-- The function returns as *`remaining' the elapsed time left in the
-- interval for which you requested to sleep. If the interval
-- completed without getting interrupted by a signal, this is zero.
--
-- `struct timespec' is described in *Note Elapsed Time::.
--
-- If the function returns because the interval is over the return
-- value is zero. If the function returns -1 the global variable
-- ERRNO is set to the following values:
--
-- `EINTR'
-- The call was interrupted because a signal was delivered to
-- the thread. If the REMAINING parameter is not the null
-- pointer the structure pointed to by REMAINING is updated to
-- contain the remaining elapsed time.
--
-- `EINVAL'
-- The nanosecond value in the REQUESTED_TIME parameter contains
-- an illegal value. Either the value is negative or greater
-- than or equal to 1000 million.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `nanosleep' is called. If the thread gets canceled these
-- resources stay allocated until the program ends. To avoid this
-- calls to `nanosleep' should be protected using cancellation
-- handlers.
--
-- The `nanosleep' function is declared in `time.h'.
--
--
--File: libc.info, Node: Resource Usage And Limitation, Next: Non-Local Exits, Prev: Date and Time, Up: Top
--
--Resource Usage And Limitation
--*****************************
--
-- This chapter describes functions for examining how much of various
--kinds of resources (CPU time, memory, etc.) a process has used and
--getting and setting limits on future usage.
--
--* Menu:
--
--* Resource Usage:: Measuring various resources used.
--* Limits on Resources:: Specifying limits on resource usage.
--* Priority:: Reading or setting process run priority.
--* Memory Resources:: Querying memory available resources.
--* Processor Resources:: Learn about the processors available.
--
--
--File: libc.info, Node: Resource Usage, Next: Limits on Resources, Up: Resource Usage And Limitation
--
--Resource Usage
--==============
--
-- The function `getrusage' and the data type `struct rusage' are used
--to examine the resource usage of a process. They are declared in
--`sys/resource.h'.
--
-- - Function: int getrusage (int PROCESSES, struct rusage *RUSAGE)
-- This function reports resource usage totals for processes
-- specified by PROCESSES, storing the information in `*RUSAGE'.
--
-- In most systems, PROCESSES has only two valid values:
--
-- `RUSAGE_SELF'
-- Just the current process.
--
-- `RUSAGE_CHILDREN'
-- All child processes (direct and indirect) that have already
-- terminated.
--
-- In the GNU system, you can also inquire about a particular child
-- process by specifying its process ID.
--
-- The return value of `getrusage' is zero for success, and `-1' for
-- failure.
--
-- `EINVAL'
-- The argument PROCESSES is not valid.
--
-- One way of getting resource usage for a particular child process is
--with the function `wait4', which returns totals for a child when it
--terminates. *Note BSD Wait Functions::.
--
-- - Data Type: struct rusage
-- This data type stores various resource usage statistics. It has
-- the following members, and possibly others:
--
-- `struct timeval ru_utime'
-- Time spent executing user instructions.
--
-- `struct timeval ru_stime'
-- Time spent in operating system code on behalf of PROCESSES.
--
-- `long int ru_maxrss'
-- The maximum resident set size used, in kilobytes. That is,
-- the maximum number of kilobytes of physical memory that
-- PROCESSES used simultaneously.
--
-- `long int ru_ixrss'
-- An integral value expressed in kilobytes times ticks of
-- execution, which indicates the amount of memory used by text
-- that was shared with other processes.
--
-- `long int ru_idrss'
-- An integral value expressed the same way, which is the amount
-- of unshared memory used for data.
--
-- `long int ru_isrss'
-- An integral value expressed the same way, which is the amount
-- of unshared memory used for stack space.
--
-- `long int ru_minflt'
-- The number of page faults which were serviced without
-- requiring any I/O.
--
-- `long int ru_majflt'
-- The number of page faults which were serviced by doing I/O.
--
-- `long int ru_nswap'
-- The number of times PROCESSES was swapped entirely out of
-- main memory.
--
-- `long int ru_inblock'
-- The number of times the file system had to read from the disk
-- on behalf of PROCESSES.
--
-- `long int ru_oublock'
-- The number of times the file system had to write to the disk
-- on behalf of PROCESSES.
--
-- `long int ru_msgsnd'
-- Number of IPC messages sent.
--
-- `long int ru_msgrcv'
-- Number of IPC messages received.
--
-- `long int ru_nsignals'
-- Number of signals received.
--
-- `long int ru_nvcsw'
-- The number of times PROCESSES voluntarily invoked a context
-- switch (usually to wait for some service).
--
-- `long int ru_nivcsw'
-- The number of times an involuntary context switch took place
-- (because a time slice expired, or another process of higher
-- priority was scheduled).
--
-- `vtimes' is a historical function that does some of what `getrusage'
--does. `getrusage' is a better choice.
--
-- `vtimes' and its `vtimes' data structure are declared in
--`sys/vtimes.h'.
--
-- - Function: int vtimes (struct vtimes CURRENT, struct vtimes CHILD)
-- `vtimes' reports resource usage totals for a process.
--
-- If CURRENT is non-null, `vtimes' stores resource usage totals for
-- the invoking process alone in the structure to which it points. If
-- CHILD is non-null, `vtimes' stores resource usage totals for all
-- past children (which have terminated) of the invoking process in
-- the structure to which it points.
--
-- - Data Type: struct vtimes
-- This data type contains information about the resource usage
-- of a process. Each member corresponds to a member of the
-- `struct rusage' data type described above.
--
-- `vm_utime'
-- User CPU time. Analogous to `ru_utime' in `struct
-- rusage'
--
-- `vm_stime'
-- System CPU time. Analogous to `ru_stime' in `struct
-- rusage'
--
-- `vm_idsrss'
-- Data and stack memory. The sum of the values that would
-- be reported as `ru_idrss' and `ru_isrss' in `struct
-- rusage'
--
-- `vm_ixrss'
-- Shared memory. Analogous to `ru_ixrss' in `struct
-- rusage'
--
-- `vm_maxrss'
-- Maximent resident set size. Analogous to `ru_maxrss' in
-- `struct rusage'
--
-- `vm_majflt'
-- Major page faults. Analogous to `ru_majflt' in `struct
-- rusage'
--
-- `vm_minflt'
-- Minor page faults. Analogous to `ru_minflt' in `struct
-- rusage'
--
-- `vm_nswap'
-- Swap count. Analogous to `ru_nswap' in `struct rusage'
--
-- `vm_inblk'
-- Disk reads. Analogous to `ru_inblk' in `struct rusage'
--
-- `vm_oublk'
-- Disk writes. Analogous to `ru_oublk' in `struct rusage'
--
-- The return value is zero if the function succeeds; `-1' otherwise.
--
-- An additional historical function for examining resource usage,
--`vtimes', is supported but not documented here. It is declared in
--`sys/vtimes.h'.
--
--
--File: libc.info, Node: Limits on Resources, Next: Priority, Prev: Resource Usage, Up: Resource Usage And Limitation
--
--Limiting Resource Usage
--=======================
--
-- You can specify limits for the resource usage of a process. When the
--process tries to exceed a limit, it may get a signal, or the system call
--by which it tried to do so may fail, depending on the resource. Each
--process initially inherits its limit values from its parent, but it can
--subsequently change them.
--
-- There are two per-process limits associated with a resource:
--
--"current limit"
-- The current limit is the value the system will not allow usage to
-- exceed. It is also called the "soft limit" because the process
-- being limited can generally raise the current limit at will.
--
--"maximum limit"
-- The maximum limit is the maximum value to which a process is
-- allowed to set its current limit. It is also called the "hard
-- limit" because there is no way for a process to get around it. A
-- process may lower its own maximum limit, but only the superuser
-- may increase a maximum limit.
--
-- The symbols for use with `getrlimit', `setrlimit', `getrlimit64',
--and `setrlimit64' are defined in `sys/resource.h'.
--
-- - Function: int getrlimit (int RESOURCE, struct rlimit *RLP)
-- Read the current and maximum limits for the resource RESOURCE and
-- store them in `*RLP'.
--
-- The return value is `0' on success and `-1' on failure. The only
-- possible `errno' error condition is `EFAULT'.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is in fact `getrlimit64'. Thus, the
-- LFS interface transparently replaces the old interface.
--
-- - Function: int getrlimit64 (int RESOURCE, struct rlimit64 *RLP)
-- This function is similar to `getrlimit' but its second parameter is
-- a pointer to a variable of type `struct rlimit64', which allows it
-- to read values which wouldn't fit in the member of a `struct
-- rlimit'.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit machine, this function is available under the name
-- `getrlimit' and so transparently replaces the old interface.
--
-- - Function: int setrlimit (int RESOURCE, const struct rlimit *RLP)
-- Store the current and maximum limits for the resource RESOURCE in
-- `*RLP'.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error condition is possible:
--
-- `EPERM'
-- * The process tried to raise a current limit beyond the
-- maximum limit.
--
-- * The process tried to raise a maximum limit, but is not
-- superuser.
--
-- When the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit system this function is in fact `setrlimit64'. Thus, the
-- LFS interface transparently replaces the old interface.
--
-- - Function: int setrlimit64 (int RESOURCE, const struct rlimit64 *RLP)
-- This function is similar to `setrlimit' but its second parameter is
-- a pointer to a variable of type `struct rlimit64' which allows it
-- to set values which wouldn't fit in the member of a `struct
-- rlimit'.
--
-- If the sources are compiled with `_FILE_OFFSET_BITS == 64' on a
-- 32-bit machine this function is available under the name
-- `setrlimit' and so transparently replaces the old interface.
--
-- - Data Type: struct rlimit
-- This structure is used with `getrlimit' to receive limit values,
-- and with `setrlimit' to specify limit values for a particular
-- process and resource. It has two fields:
--
-- `rlim_t rlim_cur'
-- The current limit
--
-- `rlim_t rlim_max'
-- The maximum limit.
--
-- For `getrlimit', the structure is an output; it receives the
-- current values. For `setrlimit', it specifies the new values.
--
-- For the LFS functions a similar type is defined in `sys/resource.h'.
--
-- - Data Type: struct rlimit64
-- This structure is analogous to the `rlimit' structure above, but
-- its components have wider ranges. It has two fields:
--
-- `rlim64_t rlim_cur'
-- This is analogous to `rlimit.rlim_cur', but with a different
-- type.
--
-- `rlim64_t rlim_max'
-- This is analogous to `rlimit.rlim_max', but with a different
-- type.
--
--
-- Here is a list of resources for which you can specify a limit.
--Memory and file sizes are measured in bytes.
--
--`RLIMIT_CPU'
-- The maximum amount of CPU time the process can use. If it runs for
-- longer than this, it gets a signal: `SIGXCPU'. The value is
-- measured in seconds. *Note Operation Error Signals::.
--
--`RLIMIT_FSIZE'
-- The maximum size of file the process can create. Trying to write a
-- larger file causes a signal: `SIGXFSZ'. *Note Operation Error
-- Signals::.
--
--`RLIMIT_DATA'
-- The maximum size of data memory for the process. If the process
-- tries to allocate data memory beyond this amount, the allocation
-- function fails.
--
--`RLIMIT_STACK'
-- The maximum stack size for the process. If the process tries to
-- extend its stack past this size, it gets a `SIGSEGV' signal.
-- *Note Program Error Signals::.
--
--`RLIMIT_CORE'
-- The maximum size core file that this process can create. If the
-- process terminates and would dump a core file larger than this,
-- then no core file is created. So setting this limit to zero
-- prevents core files from ever being created.
--
--`RLIMIT_RSS'
-- The maximum amount of physical memory that this process should get.
-- This parameter is a guide for the system's scheduler and memory
-- allocator; the system may give the process more memory when there
-- is a surplus.
--
--`RLIMIT_MEMLOCK'
-- The maximum amount of memory that can be locked into physical
-- memory (so it will never be paged out).
--
--`RLIMIT_NPROC'
-- The maximum number of processes that can be created with the same
-- user ID. If you have reached the limit for your user ID, `fork'
-- will fail with `EAGAIN'. *Note Creating a Process::.
--
--`RLIMIT_NOFILE'
--`RLIMIT_OFILE'
-- The maximum number of files that the process can open. If it
-- tries to open more files than this, its open attempt fails with
-- `errno' `EMFILE'. *Note Error Codes::. Not all systems support
-- this limit; GNU does, and 4.4 BSD does.
--
--`RLIMIT_AS'
-- The maximum size of total memory that this process should get. If
-- the process tries to allocate more memory beyond this amount with,
-- for example, `brk', `malloc', `mmap' or `sbrk', the allocation
-- function fails.
--
--`RLIM_NLIMITS'
-- The number of different resource limits. Any valid RESOURCE
-- operand must be less than `RLIM_NLIMITS'.
--
-- - Constant: int RLIM_INFINITY
-- This constant stands for a value of "infinity" when supplied as
-- the limit value in `setrlimit'.
--
-- The following are historical functions to do some of what the
--functions above do. The functions above are better choices.
--
-- `ulimit' and the command symbols are declared in `ulimit.h'.
--
-- - Function: int ulimit (int CMD, ...)
-- `ulimit' gets the current limit or sets the current and maximum
-- limit for a particular resource for the calling process according
-- to the command CMD.a
--
-- If you are getting a limit, the command argument is the only
-- argument. If you are setting a limit, there is a second argument:
-- `long int' LIMIT which is the value to which you are setting the
-- limit.
--
-- The CMD values and the operations they specify are:
-- `GETFSIZE'
-- Get the current limit on the size of a file, in units of 512
-- bytes.
--
-- `SETFSIZE'
-- Set the current and maximum limit on the size of a file to
-- LIMIT * 512 bytes.
--
-- There are also some other CMD values that may do things on some
-- systems, but they are not supported.
--
-- Only the superuser may increase a maximum limit.
--
-- When you successfully get a limit, the return value of `ulimit' is
-- that limit, which is never negative. When you successfully set a
-- limit, the return value is zero. When the function fails, the
-- return value is `-1' and `errno' is set according to the reason:
--
-- `EPERM'
-- A process tried to increase a maximum limit, but is not
-- superuser.
--
--
-- `vlimit' and its resource symbols are declared in `sys/vlimit.h'.
--
-- - Function: int vlimit (int RESOURCE, int LIMIT)
-- `vlimit' sets the current limit for a resource for a process.
--
-- RESOURCE identifies the resource:
--
-- `LIM_CPU'
-- Maximum CPU time. Same as `RLIMIT_CPU' for `setrlimit'.
--
-- `LIM_FSIZE'
-- Maximum file size. Same as `RLIMIT_FSIZE' for `setrlimit'.
--
-- `LIM_DATA'
-- Maximum data memory. Same as `RLIMIT_DATA' for `setrlimit'.
--
-- `LIM_STACK'
-- Maximum stack size. Same as `RLIMIT_STACK' for `setrlimit'.
--
-- `LIM_CORE'
-- Maximum core file size. Same as `RLIMIT_COR' for `setrlimit'.
--
-- `LIM_MAXRSS'
-- Maximum physical memory. Same as `RLIMIT_RSS' for
-- `setrlimit'.
--
-- The return value is zero for success, and `-1' with `errno' set
-- accordingly for failure:
--
-- `EPERM'
-- The process tried to set its current limit beyond its maximum
-- limit.
--
--
--
--File: libc.info, Node: Priority, Next: Memory Resources, Prev: Limits on Resources, Up: Resource Usage And Limitation
--
--Process CPU Priority And Scheduling
--===================================
--
-- When multiple processes simultaneously require CPU time, the system's
--scheduling policy and process CPU priorities determine which processes
--get it. This section describes how that determination is made and GNU
--C library functions to control it.
--
-- It is common to refer to CPU scheduling simply as scheduling and a
--process' CPU priority simply as the process' priority, with the CPU
--resource being implied. Bear in mind, though, that CPU time is not the
--only resource a process uses or that processes contend for. In some
--cases, it is not even particularly important. Giving a process a high
--"priority" may have very little effect on how fast a process runs with
--respect to other processes. The priorities discussed in this section
--apply only to CPU time.
--
-- CPU scheduling is a complex issue and different systems do it in
--wildly different ways. New ideas continually develop and find their
--way into the intricacies of the various systems' scheduling algorithms.
--This section discusses the general concepts, some specifics of systems
--that commonly use the GNU C library, and some standards.
--
-- For simplicity, we talk about CPU contention as if there is only one
--CPU in the system. But all the same principles apply when a processor
--has multiple CPUs, and knowing that the number of processes that can
--run at any one time is equal to the number of CPUs, you can easily
--extrapolate the information.
--
-- The functions described in this section are all defined by the
--POSIX.1 and POSIX.1b standards (the `sched...' functions are POSIX.1b).
--However, POSIX does not define any semantics for the values that these
--functions get and set. In this chapter, the semantics are based on the
--Linux kernel's implementation of the POSIX standard. As you will see,
--the Linux implementation is quite the inverse of what the authors of the
--POSIX syntax had in mind.
--
--* Menu:
--
--* Absolute Priority:: The first tier of priority. Posix
--* Realtime Scheduling:: Scheduling among the process nobility
--* Basic Scheduling Functions:: Get/set scheduling policy, priority
--* Traditional Scheduling:: Scheduling among the vulgar masses
--
--
--File: libc.info, Node: Absolute Priority, Next: Realtime Scheduling, Up: Priority
--
--Absolute Priority
-------------------
--
-- Every process has an absolute priority, and it is represented by a
--number. The higher the number, the higher the absolute priority.
--
-- On systems of the past, and most systems today, all processes have
--absolute priority 0 and this section is irrelevant. In that case,
--*Note Traditional Scheduling::. Absolute priorities were invented to
--accommodate realtime systems, in which it is vital that certain
--processes be able to respond to external events happening in real time,
--which means they cannot wait around while some other process that _wants
--to_, but doesn't _need to_ run occupies the CPU.
--
-- When two processes are in contention to use the CPU at any instant,
--the one with the higher absolute priority always gets it. This is true
--even if the process with the lower priority is already using the CPU
--(i.e. the scheduling is preemptive). Of course, we're only talking
--about processes that are running or "ready to run," which means they are
--ready to execute instructions right now. When a process blocks to wait
--for something like I/O, its absolute priority is irrelevant.
--
-- *Note:* The term "runnable" is a synonym for "ready to run."
--
-- When two processes are running or ready to run and both have the same
--absolute priority, it's more interesting. In that case, who gets the
--CPU is determined by the scheduling policy. If the processes have
--absolute priority 0, the traditional scheduling policy described in
--*Note Traditional Scheduling:: applies. Otherwise, the policies
--described in *Note Realtime Scheduling:: apply.
--
-- You normally give an absolute priority above 0 only to a process that
--can be trusted not to hog the CPU. Such processes are designed to block
--(or terminate) after relatively short CPU runs.
--
-- A process begins life with the same absolute priority as its parent
--process. Functions described in *Note Basic Scheduling Functions:: can
--change it.
--
-- Only a privileged process can change a process' absolute priority to
--something other than `0'. Only a privileged process or the target
--process' owner can change its absolute priority at all.
--
-- POSIX requires absolute priority values used with the realtime
--scheduling policies to be consecutive with a range of at least 32. On
--Linux, they are 1 through 99. The functions `sched_get_priority_max'
--and `sched_set_priority_min' portably tell you what the range is on a
--particular system.
--
--Using Absolute Priority
--.......................
--
-- One thing you must keep in mind when designing real time
--applications is that having higher absolute priority than any other
--process doesn't guarantee the process can run continuously. Two things
--that can wreck a good CPU run are interrupts and page faults.
--
-- Interrupt handlers live in that limbo between processes. The CPU is
--executing instructions, but they aren't part of any process. An
--interrupt will stop even the highest priority process. So you must
--allow for slight delays and make sure that no device in the system has
--an interrupt handler that could cause too long a delay between
--instructions for your process.
--
-- Similarly, a page fault causes what looks like a straightforward
--sequence of instructions to take a long time. The fact that other
--processes get to run while the page faults in is of no consequence,
--because as soon as the I/O is complete, the high priority process will
--kick them out and run again, but the wait for the I/O itself could be a
--problem. To neutralize this threat, use `mlock' or `mlockall'.
--
-- There are a few ramifications of the absoluteness of this priority
--on a single-CPU system that you need to keep in mind when you choose to
--set a priority and also when you're working on a program that runs with
--high absolute priority. Consider a process that has higher absolute
--priority than any other process in the system and due to a bug in its
--program, it gets into an infinite loop. It will never cede the CPU.
--You can't run a command to kill it because your command would need to
--get the CPU in order to run. The errant program is in complete
--control. It controls the vertical, it controls the horizontal.
--
-- There are two ways to avoid this: 1) keep a shell running somewhere
--with a higher absolute priority. 2) keep a controlling terminal
--attached to the high priority process group. All the priority in the
--world won't stop an interrupt handler from running and delivering a
--signal to the process if you hit Control-C.
--
-- Some systems use absolute priority as a means of allocating a fixed
--percentage of CPU time to a process. To do this, a super high priority
--privileged process constantly monitors the process' CPU usage and raises
--its absolute priority when the process isn't getting its entitled share
--and lowers it when the process is exceeding it.
--
-- *Note:* The absolute priority is sometimes called the "static
--priority." We don't use that term in this manual because it misses the
--most important feature of the absolute priority: its absoluteness.
--
--
--File: libc.info, Node: Realtime Scheduling, Next: Basic Scheduling Functions, Prev: Absolute Priority, Up: Priority
--
--Realtime Scheduling
---------------------
--
-- Whenever two processes with the same absolute priority are ready to
--run, the kernel has a decision to make, because only one can run at a
--time. If the processes have absolute priority 0, the kernel makes this
--decision as described in *Note Traditional Scheduling::. Otherwise,
--the decision is as described in this section.
--
-- If two processes are ready to run but have different absolute
--priorities, the decision is much simpler, and is described in *Note
--Absolute Priority::.
--
-- Each process has a scheduling policy. For processes with absolute
--priority other than zero, there are two available:
--
-- 1. First Come First Served
--
-- 2. Round Robin
--
-- The most sensible case is where all the processes with a certain
--absolute priority have the same scheduling policy. We'll discuss that
--first.
--
-- In Round Robin, processes share the CPU, each one running for a small
--quantum of time ("time slice") and then yielding to another in a
--circular fashion. Of course, only processes that are ready to run and
--have the same absolute priority are in this circle.
--
-- In First Come First Served, the process that has been waiting the
--longest to run gets the CPU, and it keeps it until it voluntarily
--relinquishes the CPU, runs out of things to do (blocks), or gets
--preempted by a higher priority process.
--
-- First Come First Served, along with maximal absolute priority and
--careful control of interrupts and page faults, is the one to use when a
--process absolutely, positively has to run at full CPU speed or not at
--all.
--
-- Judicious use of `sched_yield' function invocations by processes
--with First Come First Served scheduling policy forms a good compromise
--between Round Robin and First Come First Served.
--
-- To understand how scheduling works when processes of different
--scheduling policies occupy the same absolute priority, you have to know
--the nitty gritty details of how processes enter and exit the ready to
--run list:
--
-- In both cases, the ready to run list is organized as a true queue,
--where a process gets pushed onto the tail when it becomes ready to run
--and is popped off the head when the scheduler decides to run it. Note
--that ready to run and running are two mutually exclusive states. When
--the scheduler runs a process, that process is no longer ready to run
--and no longer in the ready to run list. When the process stops
--running, it may go back to being ready to run again.
--
-- The only difference between a process that is assigned the Round
--Robin scheduling policy and a process that is assigned First Come First
--Serve is that in the former case, the process is automatically booted
--off the CPU after a certain amount of time. When that happens, the
--process goes back to being ready to run, which means it enters the
--queue at the tail. The time quantum we're talking about is small.
--Really small. This is not your father's timesharing. For example,
--with the Linux kernel, the round robin time slice is a thousand times
--shorter than its typical time slice for traditional scheduling.
--
-- A process begins life with the same scheduling policy as its parent
--process. Functions described in *Note Basic Scheduling Functions:: can
--change it.
--
-- Only a privileged process can set the scheduling policy of a process
--that has absolute priority higher than 0.
--
--
--File: libc.info, Node: Basic Scheduling Functions, Next: Traditional Scheduling, Prev: Realtime Scheduling, Up: Priority
--
--Basic Scheduling Functions
----------------------------
--
-- This section describes functions in the GNU C library for setting the
--absolute priority and scheduling policy of a process.
--
-- *Portability Note:* On systems that have the functions in this
--section, the macro _POSIX_PRIORITY_SCHEDULING is defined in
--`<unistd.h>'.
--
-- For the case that the scheduling policy is traditional scheduling,
--more functions to fine tune the scheduling are in *Note Traditional
--Scheduling::.
--
-- Don't try to make too much out of the naming and structure of these
--functions. They don't match the concepts described in this manual
--because the functions are as defined by POSIX.1b, but the implementation
--on systems that use the GNU C library is the inverse of what the POSIX
--structure contemplates. The POSIX scheme assumes that the primary
--scheduling parameter is the scheduling policy and that the priority
--value, if any, is a parameter of the scheduling policy. In the
--implementation, though, the priority value is king and the scheduling
--policy, if anything, only fine tunes the effect of that priority.
--
-- The symbols in this section are declared by including file `sched.h'.
--
-- - Data Type: struct sched_param
-- This structure describes an absolute priority.
-- `int sched_priority'
-- absolute priority value
--
-- - Function: int sched_setscheduler (pid_t PID, int POLICY, const
-- struct sched_param *PARAM)
-- This function sets both the absolute priority and the scheduling
-- policy for a process.
--
-- It assigns the absolute priority value given by PARAM and the
-- scheduling policy POLICY to the process with Process ID PID, or
-- the calling process if PID is zero. If POLICY is negative,
-- `sched_setscheduler' keeps the existing scheduling policy.
--
-- The following macros represent the valid values for POLICY:
--
-- `SCHED_OTHER'
-- Traditional Scheduling
--
-- `SCHED_FIFO'
-- First In First Out
--
-- `SCHED_RR'
-- Round Robin
--
-- On success, the return value is `0'. Otherwise, it is `-1' and
-- `ERRNO' is set accordingly. The `errno' values specific to this
-- function are:
--
-- `EPERM'
-- * The calling process does not have `CAP_SYS_NICE'
-- permission and POLICY is not `SCHED_OTHER' (or it's
-- negative and the existing policy is not `SCHED_OTHER'.
--
-- * The calling process does not have `CAP_SYS_NICE'
-- permission and its owner is not the target process'
-- owner. I.e. the effective uid of the calling process
-- is neither the effective nor the real uid of process PID.
--
-- `ESRCH'
-- There is no process with pid PID and PID is not zero.
--
-- `EINVAL'
-- * POLICY does not identify an existing scheduling policy.
--
-- * The absolute priority value identified by *PARAM is
-- outside the valid range for the scheduling policy POLICY
-- (or the existing scheduling policy if POLICY is
-- negative) or PARAM is null. `sched_get_priority_max'
-- and `sched_get_priority_min' tell you what the valid
-- range is.
--
-- * PID is negative.
--
--
-- - Function: int sched_getscheduler (pid_t PID)
-- This function returns the scheduling policy assigned to the
-- process with Process ID (pid) PID, or the calling process if PID
-- is zero.
--
-- The return value is the scheduling policy. See
-- `sched_setscheduler' for the possible values.
--
-- If the function fails, the return value is instead `-1' and
-- `errno' is set accordingly.
--
-- The `errno' values specific to this function are:
--
-- `ESRCH'
-- There is no process with pid PID and it is not zero.
--
-- `EINVAL'
-- PID is negative.
--
-- Note that this function is not an exact mate to
-- `sched_setscheduler' because while that function sets the
-- scheduling policy and the absolute priority, this function gets
-- only the scheduling policy. To get the absolute priority, use
-- `sched_getparam'.
--
--
-- - Function: int sched_setparam (pid_t PID, const struct sched_param
-- *PARAM)
-- This function sets a process' absolute priority.
--
-- It is functionally identical to `sched_setscheduler' with POLICY =
-- `-1'.
--
--
-- - Function: int sched_getparam (pid_t PID, const struct sched_param
-- *PARAM)
-- This function returns a process' absolute priority.
--
-- PID is the Process ID (pid) of the process whose absolute priority
-- you want to know.
--
-- PARAM is a pointer to a structure in which the function stores the
-- absolute priority of the process.
--
-- On success, the return value is `0'. Otherwise, it is `-1' and
-- `ERRNO' is set accordingly. The `errno' values specific to this
-- function are:
--
-- `ESRCH'
-- There is no process with pid PID and it is not zero.
--
-- `EINVAL'
-- PID is negative.
--
--
-- - Function: int sched_get_priority_min (int *POLICY);
-- This function returns the lowest absolute priority value that is
-- allowable for a process with scheduling policy POLICY.
--
-- On Linux, it is 0 for SCHED_OTHER and 1 for everything else.
--
-- On success, the return value is `0'. Otherwise, it is `-1' and
-- `ERRNO' is set accordingly. The `errno' values specific to this
-- function are:
--
-- `EINVAL'
-- POLICY does not identify an existing scheduling policy.
--
--
-- - Function: int sched_get_priority_max (int *POLICY);
-- This function returns the highest absolute priority value that is
-- allowable for a process that with scheduling policy POLICY.
--
-- On Linux, it is 0 for SCHED_OTHER and 99 for everything else.
--
-- On success, the return value is `0'. Otherwise, it is `-1' and
-- `ERRNO' is set accordingly. The `errno' values specific to this
-- function are:
--
-- `EINVAL'
-- POLICY does not identify an existing scheduling policy.
--
--
-- - Function: int sched_rr_get_interval (pid_t PID, struct timespec
-- *INTERVAL)
-- This function returns the length of the quantum (time slice) used
-- with the Round Robin scheduling policy, if it is used, for the
-- process with Process ID PID.
--
-- It returns the length of time as INTERVAL.
--
-- With a Linux kernel, the round robin time slice is always 150
-- microseconds, and PID need not even be a real pid.
--
-- The return value is `0' on success and in the pathological case
-- that it fails, the return value is `-1' and `errno' is set
-- accordingly. There is nothing specific that can go wrong with this
-- function, so there are no specific `errno' values.
--
--
-- - Function: int sched_yield (void)
-- This function voluntarily gives up the process' claim on the CPU.
--
-- Technically, `sched_yield' causes the calling process to be made
-- immediately ready to run (as opposed to running, which is what it
-- was before). This means that if it has absolute priority higher
-- than 0, it gets pushed onto the tail of the queue of processes
-- that share its absolute priority and are ready to run, and it will
-- run again when its turn next arrives. If its absolute priority is
-- 0, it is more complicated, but still has the effect of yielding
-- the CPU to other processes.
--
-- If there are no other processes that share the calling process'
-- absolute priority, this function doesn't have any effect.
--
-- To the extent that the containing program is oblivious to what
-- other processes in the system are doing and how fast it executes,
-- this function appears as a no-op.
--
-- The return value is `0' on success and in the pathological case
-- that it fails, the return value is `-1' and `errno' is set
-- accordingly. There is nothing specific that can go wrong with this
-- function, so there are no specific `errno' values.
--
--
--
--File: libc.info, Node: Traditional Scheduling, Prev: Basic Scheduling Functions, Up: Priority
--
--Traditional Scheduling
------------------------
--
-- This section is about the scheduling among processes whose absolute
--priority is 0. When the system hands out the scraps of CPU time that
--are left over after the processes with higher absolute priority have
--taken all they want, the scheduling described herein determines who
--among the great unwashed processes gets them.
--
--* Menu:
--
--* Traditional Scheduling Intro::
--* Traditional Scheduling Functions::
--
--
--File: libc.info, Node: Traditional Scheduling Intro, Next: Traditional Scheduling Functions, Up: Traditional Scheduling
--
--Introduction To Traditional Scheduling
--......................................
--
-- Long before there was absolute priority (See *Note Absolute
--Priority::), Unix systems were scheduling the CPU using this system.
--When Posix came in like the Romans and imposed absolute priorities to
--accommodate the needs of realtime processing, it left the indigenous
--Absolute Priority Zero processes to govern themselves by their own
--familiar scheduling policy.
--
-- Indeed, absolute priorities higher than zero are not available on
--many systems today and are not typically used when they are, being
--intended mainly for computers that do realtime processing. So this
--section describes the only scheduling many programmers need to be
--concerned about.
--
-- But just to be clear about the scope of this scheduling: Any time a
--process with a absolute priority of 0 and a process with an absolute
--priority higher than 0 are ready to run at the same time, the one with
--absolute priority 0 does not run. If it's already running when the
--higher priority ready-to-run process comes into existence, it stops
--immediately.
--
-- In addition to its absolute priority of zero, every process has
--another priority, which we will refer to as "dynamic priority" because
--it changes over time. The dynamic priority is meaningless for
--processes with an absolute priority higher than zero.
--
-- The dynamic priority sometimes determines who gets the next turn on
--the CPU. Sometimes it determines how long turns last. Sometimes it
--determines whether a process can kick another off the CPU.
--
-- In Linux, the value is a combination of these things, but mostly it
--is just determines the length of the time slice. The higher a process'
--dynamic priority, the longer a shot it gets on the CPU when it gets one.
--If it doesn't use up its time slice before giving up the CPU to do
--something like wait for I/O, it is favored for getting the CPU back when
--it's ready for it, to finish out its time slice. Other than that,
--selection of processes for new time slices is basically round robin.
--But the scheduler does throw a bone to the low priority processes: A
--process' dynamic priority rises every time it is snubbed in the
--scheduling process. In Linux, even the fat kid gets to play.
--
-- The fluctuation of a process' dynamic priority is regulated by
--another value: The "nice" value. The nice value is an integer, usually
--in the range -20 to 20, and represents an upper limit on a process'
--dynamic priority. The higher the nice number, the lower that limit.
--
-- On a typical Linux system, for example, a process with a nice value
--of 20 can get only 10 milliseconds on the CPU at a time, whereas a
--process with a nice value of -20 can achieve a high enough priority to
--get 400 milliseconds.
--
-- The idea of the nice value is deferential courtesy. In the
--beginning, in the Unix garden of Eden, all processes shared equally in
--the bounty of the computer system. But not all processes really need
--the same share of CPU time, so the nice value gave a courteous process
--the ability to refuse its equal share of CPU time that others might
--prosper. Hence, the higher a process' nice value, the nicer the
--process is. (Then a snake came along and offered some process a
--negative nice value and the system became the crass resource allocation
--system we know today).
--
-- Dynamic priorities tend upward and downward with an objective of
--smoothing out allocation of CPU time and giving quick response time to
--infrequent requests. But they never exceed their nice limits, so on a
--heavily loaded CPU, the nice value effectively determines how fast a
--process runs.
--
-- In keeping with the socialistic heritage of Unix process priority, a
--process begins life with the same nice value as its parent process and
--can raise it at will. A process can also raise the nice value of any
--other process owned by the same user (or effective user). But only a
--privileged process can lower its nice value. A privileged process can
--also raise or lower another process' nice value.
--
-- GNU C Library functions for getting and setting nice values are
--described in *Note Traditional Scheduling Functions::.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-38 glibc-2.3.2-200304020432/manual/libc.info-38
---- glibc-2.3.2/manual/libc.info-38 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-38 Thu Jan 1 01:00:00 1970
-@@ -1,1105 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Traditional Scheduling Functions, Prev: Traditional Scheduling Intro, Up: Traditional Scheduling
--
--Functions For Traditional Scheduling
--....................................
--
-- This section describes how you can read and set the nice value of a
--process. All these symbols are declared in `sys/resource.h'.
--
-- The function and macro names are defined by POSIX, and refer to
--"priority," but the functions actually have to do with nice values, as
--the terms are used both in the manual and POSIX.
--
-- The range of valid nice values depends on the kernel, but typically
--it runs from `-20' to `20'. A lower nice value corresponds to higher
--priority for the process. These constants describe the range of
--priority values:
--
--`PRIO_MIN'
-- The lowest valid nice value.
--
--`PRIO_MAX'
-- The highest valid nice value.
--
-- - Function: int getpriority (int CLASS, int ID)
-- Return the nice value of a set of processes; CLASS and ID specify
-- which ones (see below). If the processes specified do not all
-- have the same nice value, this returns the lowest value that any
-- of them has.
--
-- On success, the return value is `0'. Otherwise, it is `-1' and
-- `ERRNO' is set accordingly. The `errno' values specific to this
-- function are:
--
-- `ESRCH'
-- The combination of CLASS and ID does not match any existing
-- process.
--
-- `EINVAL'
-- The value of CLASS is not valid.
--
-- If the return value is `-1', it could indicate failure, or it could
-- be the nice value. The only way to make certain is to set `errno =
-- 0' before calling `getpriority', then use `errno != 0' afterward
-- as the criterion for failure.
--
-- - Function: int setpriority (int CLASS, int ID, int NICEVAL)
-- Set the nice value of a set of processes to NICEVAL; CLASS and ID
-- specify which ones (see below).
--
-- The return value is `0' on success, and `-1' on failure. The
-- following `errno' error condition are possible for this function:
--
-- `ESRCH'
-- The combination of CLASS and ID does not match any existing
-- process.
--
-- `EINVAL'
-- The value of CLASS is not valid.
--
-- `EPERM'
-- The call would set the nice value of a process which is owned
-- by a different user than the calling process (i.e. the target
-- process' real or effective uid does not match the calling
-- process' effective uid) and the calling process does not have
-- `CAP_SYS_NICE' permission.
--
-- `EACCES'
-- The call would lower the process' nice value and the process
-- does not have `CAP_SYS_NICE' permission.
--
--
-- The arguments CLASS and ID together specify a set of processes in
--which you are interested. These are the possible values of CLASS:
--
--`PRIO_PROCESS'
-- One particular process. The argument ID is a process ID (pid).
--
--`PRIO_PGRP'
-- All the processes in a particular process group. The argument ID
-- is a process group ID (pgid).
--
--`PRIO_USER'
-- All the processes owned by a particular user (i.e. whose real uid
-- indicates the user). The argument ID is a user ID (uid).
--
-- If the argument ID is 0, it stands for the calling process, its
--process group, or its owner (real uid), according to CLASS.
--
-- - Function: int nice (int INCREMENT)
-- Increment the nice value of the calling process by INCREMENT. The
-- return value is the new nice value on success, and `-1' on
-- failure. In the case of failure, `errno' will be set to the same
-- values as for `setpriority'.
--
-- Here is an equivalent definition of `nice':
--
-- int
-- nice (int increment)
-- {
-- int result, old = getpriority (PRIO_PROCESS, 0);
-- result = setpriority (PRIO_PROCESS, 0, old + increment);
-- if (result != -1)
-- return old + increment;
-- else
-- return -1;
-- }
--
--
--File: libc.info, Node: Memory Resources, Next: Processor Resources, Prev: Priority, Up: Resource Usage And Limitation
--
--Querying memory available resources
--===================================
--
-- The amount of memory available in the system and the way it is
--organized determines oftentimes the way programs can and have to work.
--For functions like `mmap' it is necessary to know about the size of
--individual memory pages and knowing how much memory is available enables
--a program to select appropriate sizes for, say, caches. Before we get
--into these details a few words about memory subsystems in traditional
--Unix systems will be given.
--
--* Menu:
--
--* Memory Subsystem:: Overview about traditional Unix memory handling.
--* Query Memory Parameters:: How to get information about the memory
-- subsystem?
--
--
--File: libc.info, Node: Memory Subsystem, Next: Query Memory Parameters, Up: Memory Resources
--
--Overview about traditional Unix memory handling
-------------------------------------------------
--
-- Unix systems normally provide processes virtual address spaces. This
--means that the addresses of the memory regions do not have to correspond
--directly to the addresses of the actual physical memory which stores the
--data. An extra level of indirection is introduced which translates
--virtual addresses into physical addresses. This is normally done by the
--hardware of the processor.
--
-- Using a virtual address space has several advantage. The most
--important is process isolation. The different processes running on the
--system cannot interfere directly with each other. No process can write
--into the address space of another process (except when shared memory is
--used but then it is wanted and controlled).
--
-- Another advantage of virtual memory is that the address space the
--processes see can actually be larger than the physical memory available.
--The physical memory can be extended by storage on an external media
--where the content of currently unused memory regions is stored. The
--address translation can then intercept accesses to these memory regions
--and make memory content available again by loading the data back into
--memory. This concept makes it necessary that programs which have to use
--lots of memory know the difference between available virtual address
--space and available physical memory. If the working set of virtual
--memory of all the processes is larger than the available physical memory
--the system will slow down dramatically due to constant swapping of
--memory content from the memory to the storage media and back. This is
--called "thrashing".
--
-- A final aspect of virtual memory which is important and follows from
--what is said in the last paragraph is the granularity of the virtual
--address space handling. When we said that the virtual address handling
--stores memory content externally it cannot do this on a byte-by-byte
--basis. The administrative overhead does not allow this (leaving alone
--the processor hardware). Instead several thousand bytes are handled
--together and form a "page". The size of each page is always a power of
--two byte. The smallest page size in use today is 4096, with 8192,
--16384, and 65536 being other popular sizes.
--
--
--File: libc.info, Node: Query Memory Parameters, Prev: Memory Subsystem, Up: Memory Resources
--
--How to get information about the memory subsystem?
----------------------------------------------------
--
-- The page size of the virtual memory the process sees is essential to
--know in several situations. Some programming interface (e.g., `mmap',
--*note Memory-mapped I/O::) require the user to provide information
--adjusted to the page size. In the case of `mmap' is it necessary to
--provide a length argument which is a multiple of the page size.
--Another place where the knowledge about the page size is useful is in
--memory allocation. If one allocates pieces of memory in larger chunks
--which are then subdivided by the application code it is useful to
--adjust the size of the larger blocks to the page size. If the total
--memory requirement for the block is close (but not larger) to a multiple
--of the page size the kernel's memory handling can work more effectively
--since it only has to allocate memory pages which are fully used. (To do
--this optimization it is necessary to know a bit about the memory
--allocator which will require a bit of memory itself for each block and
--this overhead must not push the total size over the page size multiple.
--
-- The page size traditionally was a compile time constant. But recent
--development of processors changed this. Processors now support
--different page sizes and they can possibly even vary among different
--processes on the same system. Therefore the system should be queried at
--runtime about the current page size and no assumptions (except about it
--being a power of two) should be made.
--
-- The correct interface to query about the page size is `sysconf'
--(*note Sysconf Definition::) with the parameter `_SC_PAGESIZE'. There
--is a much older interface available, too.
--
-- - Function: int getpagesize (void)
-- The `getpagesize' function returns the page size of the process.
-- This value is fixed for the runtime of the process but can vary in
-- different runs of the application.
--
-- The function is declared in `unistd.h'.
--
-- Widely available on System V derived systems is a method to get
--information about the physical memory the system has. The call
--
-- sysconf (_SC_PHYS_PAGES)
--
--returns the total number of pages of physical the system has. This
--does not mean all this memory is available. This information can be
--found using
--
-- sysconf (_SC_AVPHYS_PAGES)
--
-- These two values help to optimize applications. The value returned
--for `_SC_AVPHYS_PAGES' is the amount of memory the application can use
--without hindering any other process (given that no other process
--increases its memory usage). The value returned for `_SC_PHYS_PAGES'
--is more or less a hard limit for the working set. If all applications
--together constantly use more than that amount of memory the system is
--in trouble.
--
-- The GNU C library provides in addition to these already described
--way to get this information two functions. They are declared in the
--file `sys/sysinfo.h'. Programmers should prefer to use the `sysconf'
--method described above.
--
-- - Function: long int get_phys_pages (void)
-- The `get_phys_pages' function returns the total number of pages of
-- physical the system has. To get the amount of memory this number
-- has to be multiplied by the page size.
--
-- This function is a GNU extension.
--
-- - Function: long int get_avphys_pages (void)
-- The `get_phys_pages' function returns the number of available
-- pages of physical the system has. To get the amount of memory
-- this number has to be multiplied by the page size.
--
-- This function is a GNU extension.
--
--
--File: libc.info, Node: Processor Resources, Prev: Memory Resources, Up: Resource Usage And Limitation
--
--Learn about the processors available
--====================================
--
-- The use of threads or processes with shared memory allows an
--application to take advantage of all the processing power a system can
--provide. If the task can be parallelized the optimal way to write an
--application is to have at any time as many processes running as there
--are processors. To determine the number of processors available to the
--system one can run
--
-- sysconf (_SC_NPROCESSORS_CONF)
--
--which returns the number of processors the operating system configured.
--But it might be possible for the operating system to disable individual
--processors and so the call
--
-- sysconf (_SC_NPROCESSORS_ONLN)
--
--returns the number of processors which are currently inline (i.e.,
--available).
--
-- For these two pieces of information the GNU C library also provides
--functions to get the information directly. The functions are declared
--in `sys/sysinfo.h'.
--
-- - Function: int get_nprocs_conf (void)
-- The `get_nprocs_conf' function returns the number of processors the
-- operating system configured.
--
-- This function is a GNU extension.
--
-- - Function: int get_nprocs (void)
-- The `get_nprocs' function returns the number of available
-- processors.
--
-- This function is a GNU extension.
--
-- Before starting more threads it should be checked whether the
--processors are not already overused. Unix systems calculate something
--called the "load average". This is a number indicating how many
--processes were running. This number is average over different periods
--of times (normally 1, 5, and 15 minutes).
--
-- - Function: int getloadavg (double LOADAVG[], int NELEM)
-- This function gets the 1, 5 and 15 minute load averages of the
-- system. The values are placed in LOADAVG. `getloadavg' will place
-- at most NELEM elements into the array but never more than three
-- elements. The return value is the number of elements written to
-- LOADAVG, or -1 on error.
--
-- This function is declared in `stdlib.h'.
--
--
--File: libc.info, Node: Non-Local Exits, Next: Signal Handling, Prev: Resource Usage And Limitation, Up: Top
--
--Non-Local Exits
--***************
--
-- Sometimes when your program detects an unusual situation inside a
--deeply nested set of function calls, you would like to be able to
--immediately return to an outer level of control. This section
--describes how you can do such "non-local exits" using the `setjmp' and
--`longjmp' functions.
--
--* Menu:
--
--* Intro: Non-Local Intro. When and how to use these facilities.
--* Details: Non-Local Details. Functions for non-local exits.
--* Non-Local Exits and Signals:: Portability issues.
--* System V contexts:: Complete context control a la System V.
--
--
--File: libc.info, Node: Non-Local Intro, Next: Non-Local Details, Up: Non-Local Exits
--
--Introduction to Non-Local Exits
--===============================
--
-- As an example of a situation where a non-local exit can be useful,
--suppose you have an interactive program that has a "main loop" that
--prompts for and executes commands. Suppose the "read" command reads
--input from a file, doing some lexical analysis and parsing of the input
--while processing it. If a low-level input error is detected, it would
--be useful to be able to return immediately to the "main loop" instead
--of having to make each of the lexical analysis, parsing, and processing
--phases all have to explicitly deal with error situations initially
--detected by nested calls.
--
-- (On the other hand, if each of these phases has to do a substantial
--amount of cleanup when it exits--such as closing files, deallocating
--buffers or other data structures, and the like--then it can be more
--appropriate to do a normal return and have each phase do its own
--cleanup, because a non-local exit would bypass the intervening phases
--and their associated cleanup code entirely. Alternatively, you could
--use a non-local exit but do the cleanup explicitly either before or
--after returning to the "main loop".)
--
-- In some ways, a non-local exit is similar to using the `return'
--statement to return from a function. But while `return' abandons only
--a single function call, transferring control back to the point at which
--it was called, a non-local exit can potentially abandon many levels of
--nested function calls.
--
-- You identify return points for non-local exits by calling the
--function `setjmp'. This function saves information about the execution
--environment in which the call to `setjmp' appears in an object of type
--`jmp_buf'. Execution of the program continues normally after the call
--to `setjmp', but if an exit is later made to this return point by
--calling `longjmp' with the corresponding `jmp_buf' object, control is
--transferred back to the point where `setjmp' was called. The return
--value from `setjmp' is used to distinguish between an ordinary return
--and a return made by a call to `longjmp', so calls to `setjmp' usually
--appear in an `if' statement.
--
-- Here is how the example program described above might be set up:
--
-- #include <setjmp.h>
-- #include <stdlib.h>
-- #include <stdio.h>
--
-- jmp_buf main_loop;
--
-- void
-- abort_to_main_loop (int status)
-- {
-- longjmp (main_loop, status);
-- }
--
-- int
-- main (void)
-- {
-- while (1)
-- if (setjmp (main_loop))
-- puts ("Back at main loop....");
-- else
-- do_command ();
-- }
--
--
-- void
-- do_command (void)
-- {
-- char buffer[128];
-- if (fgets (buffer, 128, stdin) == NULL)
-- abort_to_main_loop (-1);
-- else
-- exit (EXIT_SUCCESS);
-- }
--
-- The function `abort_to_main_loop' causes an immediate transfer of
--control back to the main loop of the program, no matter where it is
--called from.
--
-- The flow of control inside the `main' function may appear a little
--mysterious at first, but it is actually a common idiom with `setjmp'.
--A normal call to `setjmp' returns zero, so the "else" clause of the
--conditional is executed. If `abort_to_main_loop' is called somewhere
--within the execution of `do_command', then it actually appears as if
--the _same_ call to `setjmp' in `main' were returning a second time with
--a value of `-1'.
--
-- So, the general pattern for using `setjmp' looks something like:
--
-- if (setjmp (BUFFER))
-- /* Code to clean up after premature return. */
-- ...
-- else
-- /* Code to be executed normally after setting up the return point. */
-- ...
--
--
--File: libc.info, Node: Non-Local Details, Next: Non-Local Exits and Signals, Prev: Non-Local Intro, Up: Non-Local Exits
--
--Details of Non-Local Exits
--==========================
--
-- Here are the details on the functions and data structures used for
--performing non-local exits. These facilities are declared in
--`setjmp.h'.
--
-- - Data Type: jmp_buf
-- Objects of type `jmp_buf' hold the state information to be
-- restored by a non-local exit. The contents of a `jmp_buf'
-- identify a specific place to return to.
--
-- - Macro: int setjmp (jmp_buf STATE)
-- When called normally, `setjmp' stores information about the
-- execution state of the program in STATE and returns zero. If
-- `longjmp' is later used to perform a non-local exit to this STATE,
-- `setjmp' returns a nonzero value.
--
-- - Function: void longjmp (jmp_buf STATE, int VALUE)
-- This function restores current execution to the state saved in
-- STATE, and continues execution from the call to `setjmp' that
-- established that return point. Returning from `setjmp' by means of
-- `longjmp' returns the VALUE argument that was passed to `longjmp',
-- rather than `0'. (But if VALUE is given as `0', `setjmp' returns
-- `1').
--
-- There are a lot of obscure but important restrictions on the use of
--`setjmp' and `longjmp'. Most of these restrictions are present because
--non-local exits require a fair amount of magic on the part of the C
--compiler and can interact with other parts of the language in strange
--ways.
--
-- The `setjmp' function is actually a macro without an actual function
--definition, so you shouldn't try to `#undef' it or take its address.
--In addition, calls to `setjmp' are safe in only the following contexts:
--
-- * As the test expression of a selection or iteration statement (such
-- as `if', `switch', or `while').
--
-- * As one operand of a equality or comparison operator that appears
-- as the test expression of a selection or iteration statement. The
-- other operand must be an integer constant expression.
--
-- * As the operand of a unary `!' operator, that appears as the test
-- expression of a selection or iteration statement.
--
-- * By itself as an expression statement.
--
-- Return points are valid only during the dynamic extent of the
--function that called `setjmp' to establish them. If you `longjmp' to a
--return point that was established in a function that has already
--returned, unpredictable and disastrous things are likely to happen.
--
-- You should use a nonzero VALUE argument to `longjmp'. While
--`longjmp' refuses to pass back a zero argument as the return value from
--`setjmp', this is intended as a safety net against accidental misuse
--and is not really good programming style.
--
-- When you perform a non-local exit, accessible objects generally
--retain whatever values they had at the time `longjmp' was called. The
--exception is that the values of automatic variables local to the
--function containing the `setjmp' call that have been changed since the
--call to `setjmp' are indeterminate, unless you have declared them
--`volatile'.
--
--
--File: libc.info, Node: Non-Local Exits and Signals, Next: System V contexts, Prev: Non-Local Details, Up: Non-Local Exits
--
--Non-Local Exits and Signals
--===========================
--
-- In BSD Unix systems, `setjmp' and `longjmp' also save and restore
--the set of blocked signals; see *Note Blocking Signals::. However, the
--POSIX.1 standard requires `setjmp' and `longjmp' not to change the set
--of blocked signals, and provides an additional pair of functions
--(`sigsetjmp' and `siglongjmp') to get the BSD behavior.
--
-- The behavior of `setjmp' and `longjmp' in the GNU library is
--controlled by feature test macros; see *Note Feature Test Macros::. The
--default in the GNU system is the POSIX.1 behavior rather than the BSD
--behavior.
--
-- The facilities in this section are declared in the header file
--`setjmp.h'.
--
-- - Data Type: sigjmp_buf
-- This is similar to `jmp_buf', except that it can also store state
-- information about the set of blocked signals.
--
-- - Function: int sigsetjmp (sigjmp_buf STATE, int SAVESIGS)
-- This is similar to `setjmp'. If SAVESIGS is nonzero, the set of
-- blocked signals is saved in STATE and will be restored if a
-- `siglongjmp' is later performed with this STATE.
--
-- - Function: void siglongjmp (sigjmp_buf STATE, int VALUE)
-- This is similar to `longjmp' except for the type of its STATE
-- argument. If the `sigsetjmp' call that set this STATE used a
-- nonzero SAVESIGS flag, `siglongjmp' also restores the set of
-- blocked signals.
--
--
--File: libc.info, Node: System V contexts, Prev: Non-Local Exits and Signals, Up: Non-Local Exits
--
--Complete Context Control
--========================
--
-- The Unix standard one more set of function to control the execution
--path and these functions are more powerful than those discussed in this
--chapter so far. These function were part of the original System V API
--and by this route were added to the Unix API. Beside on branded Unix
--implementations these interfaces are not widely available. Not all
--platforms and/or architectures the GNU C Library is available on provide
--this interface. Use `configure' to detect the availability.
--
-- Similar to the `jmp_buf' and `sigjmp_buf' types used for the
--variables to contain the state of the `longjmp' functions the
--interfaces of interest here have an appropriate type as well. Objects
--of this type are normally much larger since more information is
--contained. The type is also used in a few more places as we will see.
--The types and functions described in this section are all defined and
--declared respectively in the `ucontext.h' header file.
--
-- - Data Type: ucontext_t
-- The `ucontext_t' type is defined as a structure with as least the
-- following elements:
--
-- `ucontext_t *uc_link'
-- This is a pointer to the next context structure which is used
-- if the context described in the current structure returns.
--
-- `sigset_t uc_sigmask'
-- Set of signals which are blocked when this context is used.
--
-- `stack_t uc_stack'
-- Stack used for this context. The value need not be (and
-- normally is not) the stack pointer. *Note Signal Stack::.
--
-- `mcontext_t uc_mcontext'
-- This element contains the actual state of the process. The
-- `mcontext_t' type is also defined in this header but the
-- definition should be treated as opaque. Any use of knowledge
-- of the type makes applications less portable.
--
--
-- Objects of this type have to be created by the user. The
--initialization and modification happens through one of the following
--functions:
--
-- - Function: int getcontext (ucontext_t *UCP)
-- The `getcontext' function initializes the variable pointed to by
-- UCP with the context of the calling thread. The context contains
-- the content of the registers, the signal mask, and the current
-- stack. Executing the contents would start at the point where the
-- `getcontext' call just returned.
--
-- The function returns `0' if successful. Otherwise it returns `-1'
-- and sets ERRNO accordingly.
--
-- The `getcontext' function is similar to `setjmp' but it does not
--provide an indication of whether the function returns for the first
--time or whether the initialized context was used and the execution is
--resumed at just that point. If this is necessary the user has to take
--determine this herself. This must be done carefully since the context
--contains registers which might contain register variables. This is a
--good situation to define variables with `volatile'.
--
-- Once the context variable is initialized it can be used as is or it
--can be modified. The latter is normally done to implement co-routines
--or similar constructs. The `makecontext' function is what has to be
--used to do that.
--
-- - Function: void makecontext (ucontext_t *UCP, void (*FUNC) (void),
-- int ARGC, ...)
-- The UCP parameter passed to the `makecontext' shall be initialized
-- by a call to `getcontext'. The context will be modified to in a
-- way so that if the context is resumed it will start by calling the
-- function `func' which gets ARGC integer arguments passed. The
-- integer arguments which are to be passed should follow the ARGC
-- parameter in the call to `makecontext'.
--
-- Before the call to this function the `uc_stack' and `uc_link'
-- element of the UCP structure should be initialized. The
-- `uc_stack' element describes the stack which is used for this
-- context. No two contexts which are used at the same time should
-- use the same memory region for a stack.
--
-- The `uc_link' element of the object pointed to by UCP should be a
-- pointer to the context to be executed when the function FUNC
-- returns or it should be a null pointer. See `setcontext' for more
-- information about the exact use.
--
-- While allocating the memory for the stack one has to be careful.
--Most modern processors keep track of whether a certain memory region is
--allowed to contain code which is executed or not. Data segments and
--heap memory is normally not tagged to allow this. The result is that
--programs would fail. Examples for such code include the calling
--sequences the GNU C compiler generates for calls to nested functions.
--Safe ways to allocate stacks correctly include using memory on the
--original threads stack or explicitly allocate memory tagged for
--execution using (*note Memory-mapped I/O::).
--
-- *Compatibility note*: The current Unix standard is very imprecise
--about the way the stack is allocated. All implementations seem to agree
--that the `uc_stack' element must be used but the values stored in the
--elements of the `stack_t' value are unclear. The GNU C library and
--most other Unix implementations require the `ss_sp' value of the
--`uc_stack' element to point to the base of the memory region allocated
--for the stack and the size of the memory region is stored in `ss_size'.
--There are implements out there which require `ss_sp' to be set to the
--value the stack pointer will have (which can depending on the direction
--the stack grows be different). This difference makes the `makecontext'
--function hard to use and it requires detection of the platform at
--compile time.
--
-- - Function: int setcontext (const ucontext_t *UCP)
-- The `setcontext' function restores the context described by UCP.
-- The context is not modified and can be reused as often as wanted.
--
-- If the context was created by `getcontext' execution resumes with
-- the registers filled with the same values and the same stack as if
-- the `getcontext' call just returned.
--
-- If the context was modified with a call to `makecontext' execution
-- continues with the function passed to `makecontext' which gets the
-- specified parameters passed. If this function returns execution is
-- resumed in the context which was referenced by the `uc_link'
-- element of the context structure passed to `makecontext' at the
-- time of the call. If `uc_link' was a null pointer the application
-- terminates in this case.
--
-- Since the context contains information about the stack no two
-- threads should use the same context at the same time. The result
-- in most cases would be disastrous.
--
-- The `setcontext' function does not return unless an error occurred
-- in which case it returns `-1'.
--
-- The `setcontext' function simply replaces the current context with
--the one described by the UCP parameter. This is often useful but there
--are situations where the current context has to be preserved.
--
-- - Function: int swapcontext (ucontext_t *restrict OUCP, const
-- ucontext_t *restrict UCP)
-- The `swapcontext' function is similar to `setcontext' but instead
-- of just replacing the current context the latter is first saved in
-- the object pointed to by OUCP as if this was a call to
-- `getcontext'. The saved context would resume after the call to
-- `swapcontext'.
--
-- Once the current context is saved the context described in UCP is
-- installed and execution continues as described in this context.
--
-- If `swapcontext' succeeds the function does not return unless the
-- context OUCP is used without prior modification by `makecontext'.
-- The return value in this case is `0'. If the function fails it
-- returns `-1' and set ERRNO accordingly.
--
--Example for SVID Context Handling
--=================================
--
-- The easiest way to use the context handling functions is as a
--replacement for `setjmp' and `longjmp'. The context contains on most
--platforms more information which might lead to less surprises but this
--also means using these functions is more expensive (beside being less
--portable).
--
-- int
-- random_search (int n, int (*fp) (int, ucontext_t *))
-- {
-- volatile int cnt = 0;
-- ucontext_t uc;
--
-- /* Safe current context. */
-- if (getcontext (&uc) < 0)
-- return -1;
--
-- /* If we have not tried N times try again. */
-- if (cnt++ < n)
-- /* Call the function with a new random number
-- and the context. */
-- if (fp (rand (), &uc) != 0)
-- /* We found what we were looking for. */
-- return 1;
--
-- /* Not found. */
-- return 0;
-- }
--
-- Using contexts in such a way enables emulating exception handling.
--The search functions passed in the FP parameter could be very large,
--nested, and complex which would make it complicated (or at least would
--require a lot of code) to leave the function with an error value which
--has to be passed down to the caller. By using the context it is
--possible to leave the search function in one step and allow restarting
--the search which also has the nice side effect that it can be
--significantly faster.
--
-- Something which is harder to implement with `setjmp' and `longjmp'
--is to switch temporarily to a different execution path and then resume
--where execution was stopped.
--
-- #include <signal.h>
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <ucontext.h>
-- #include <sys/time.h>
--
-- /* Set by the signal handler. */
-- static volatile int expired;
--
-- /* The contexts. */
-- static ucontext_t uc[3];
--
-- /* We do only a certain number of switches. */
-- static int switches;
--
--
-- /* This is the function doing the work. It is just a
-- skeleton, real code has to be filled in. */
-- static void
-- f (int n)
-- {
-- int m = 0;
-- while (1)
-- {
-- /* This is where the work would be done. */
-- if (++m % 100 == 0)
-- {
-- putchar ('.');
-- fflush (stdout);
-- }
--
-- /* Regularly the EXPIRE variable must be checked. */
-- if (expired)
-- {
-- /* We do not want the program to run forever. */
-- if (++switches == 20)
-- return;
--
-- printf ("\nswitching from %d to %d\n", n, 3 - n);
-- expired = 0;
-- /* Switch to the other context, saving the current one. */
-- swapcontext (&uc[n], &uc[3 - n]);
-- }
-- }
-- }
--
-- /* This is the signal handler which simply set the variable. */
-- void
-- handler (int signal)
-- {
-- expired = 1;
-- }
--
--
-- int
-- main (void)
-- {
-- struct sigaction sa;
-- struct itimerval it;
-- char st1[8192];
-- char st2[8192];
--
-- /* Initialize the data structures for the interval timer. */
-- sa.sa_flags = SA_RESTART;
-- sigfillset (&sa.sa_mask);
-- sa.sa_handler = handler;
-- it.it_interval.tv_sec = 0;
-- it.it_interval.tv_usec = 1;
-- it.it_value = it.it_interval;
--
-- /* Install the timer and get the context we can manipulate. */
-- if (sigaction (SIGPROF, &sa, NULL) < 0
-- || setitimer (ITIMER_PROF, &it, NULL) < 0
-- || getcontext (&uc[1]) == -1
-- || getcontext (&uc[2]) == -1)
-- abort ();
--
-- /* Create a context with a separate stack which causes the
-- function `f' to be call with the parameter `1'.
-- Note that the `uc_link' points to the main context
-- which will cause the program to terminate once the function
-- return. */
-- uc[1].uc_link = &uc[0];
-- uc[1].uc_stack.ss_sp = st1;
-- uc[1].uc_stack.ss_size = sizeof st1;
-- makecontext (&uc[1], (void (*) (void)) f, 1, 1);
--
-- /* Similarly, but `2' is passed as the parameter to `f'. */
-- uc[2].uc_link = &uc[0];
-- uc[2].uc_stack.ss_sp = st2;
-- uc[2].uc_stack.ss_size = sizeof st2;
-- makecontext (&uc[2], (void (*) (void)) f, 1, 2);
--
-- /* Start running. */
-- swapcontext (&uc[0], &uc[1]);
-- putchar ('\n');
--
-- return 0;
-- }
--
-- This an example how the context functions can be used to implement
--co-routines or cooperative multi-threading. All that has to be done is
--to call every once in a while `swapcontext' to continue running a
--different context. It is not allowed to do the context switching from
--the signal handler directly since neither `setcontext' nor
--`swapcontext' are functions which can be called from a signal handler.
--But setting a variable in the signal handler and checking it in the
--body of the functions which are executed. Since `swapcontext' is
--saving the current context it is possible to have multiple different
--scheduling points in the code. Execution will always resume where it
--was left.
--
--
--File: libc.info, Node: Signal Handling, Next: Program Basics, Prev: Non-Local Exits, Up: Top
--
--Signal Handling
--***************
--
-- A "signal" is a software interrupt delivered to a process. The
--operating system uses signals to report exceptional situations to an
--executing program. Some signals report errors such as references to
--invalid memory addresses; others report asynchronous events, such as
--disconnection of a phone line.
--
-- The GNU C library defines a variety of signal types, each for a
--particular kind of event. Some kinds of events make it inadvisable or
--impossible for the program to proceed as usual, and the corresponding
--signals normally abort the program. Other kinds of signals that report
--harmless events are ignored by default.
--
-- If you anticipate an event that causes signals, you can define a
--handler function and tell the operating system to run it when that
--particular type of signal arrives.
--
-- Finally, one process can send a signal to another process; this
--allows a parent process to abort a child, or two related processes to
--communicate and synchronize.
--
--* Menu:
--
--* Concepts of Signals:: Introduction to the signal facilities.
--* Standard Signals:: Particular kinds of signals with
-- standard names and meanings.
--* Signal Actions:: Specifying what happens when a
-- particular signal is delivered.
--* Defining Handlers:: How to write a signal handler function.
--* Interrupted Primitives:: Signal handlers affect use of `open',
-- `read', `write' and other functions.
--* Generating Signals:: How to send a signal to a process.
--* Blocking Signals:: Making the system hold signals temporarily.
--* Waiting for a Signal:: Suspending your program until a signal
-- arrives.
--* Signal Stack:: Using a Separate Signal Stack.
--* BSD Signal Handling:: Additional functions for backward
-- compatibility with BSD.
--
--
--File: libc.info, Node: Concepts of Signals, Next: Standard Signals, Up: Signal Handling
--
--Basic Concepts of Signals
--=========================
--
-- This section explains basic concepts of how signals are generated,
--what happens after a signal is delivered, and how programs can handle
--signals.
--
--* Menu:
--
--* Kinds of Signals:: Some examples of what can cause a signal.
--* Signal Generation:: Concepts of why and how signals occur.
--* Delivery of Signal:: Concepts of what a signal does to the
-- process.
--
--
--File: libc.info, Node: Kinds of Signals, Next: Signal Generation, Up: Concepts of Signals
--
--Some Kinds of Signals
-----------------------
--
-- A signal reports the occurrence of an exceptional event. These are
--some of the events that can cause (or "generate", or "raise") a signal:
--
-- * A program error such as dividing by zero or issuing an address
-- outside the valid range.
--
-- * A user request to interrupt or terminate the program. Most
-- environments are set up to let a user suspend the program by
-- typing `C-z', or terminate it with `C-c'. Whatever key sequence
-- is used, the operating system sends the proper signal to interrupt
-- the process.
--
-- * The termination of a child process.
--
-- * Expiration of a timer or alarm.
--
-- * A call to `kill' or `raise' by the same process.
--
-- * A call to `kill' from another process. Signals are a limited but
-- useful form of interprocess communication.
--
-- * An attempt to perform an I/O operation that cannot be done.
-- Examples are reading from a pipe that has no writer (*note Pipes
-- and FIFOs::), and reading or writing to a terminal in certain
-- situations (*note Job Control::).
--
-- Each of these kinds of events (excepting explicit calls to `kill'
--and `raise') generates its own particular kind of signal. The various
--kinds of signals are listed and described in detail in *Note Standard
--Signals::.
--
--
--File: libc.info, Node: Signal Generation, Next: Delivery of Signal, Prev: Kinds of Signals, Up: Concepts of Signals
--
--Concepts of Signal Generation
-------------------------------
--
-- In general, the events that generate signals fall into three major
--categories: errors, external events, and explicit requests.
--
-- An error means that a program has done something invalid and cannot
--continue execution. But not all kinds of errors generate signals--in
--fact, most do not. For example, opening a nonexistent file is an error,
--but it does not raise a signal; instead, `open' returns `-1'. In
--general, errors that are necessarily associated with certain library
--functions are reported by returning a value that indicates an error.
--The errors which raise signals are those which can happen anywhere in
--the program, not just in library calls. These include division by zero
--and invalid memory addresses.
--
-- An external event generally has to do with I/O or other processes.
--These include the arrival of input, the expiration of a timer, and the
--termination of a child process.
--
-- An explicit request means the use of a library function such as
--`kill' whose purpose is specifically to generate a signal.
--
-- Signals may be generated "synchronously" or "asynchronously". A
--synchronous signal pertains to a specific action in the program, and is
--delivered (unless blocked) during that action. Most errors generate
--signals synchronously, and so do explicit requests by a process to
--generate a signal for that same process. On some machines, certain
--kinds of hardware errors (usually floating-point exceptions) are not
--reported completely synchronously, but may arrive a few instructions
--later.
--
-- Asynchronous signals are generated by events outside the control of
--the process that receives them. These signals arrive at unpredictable
--times during execution. External events generate signals
--asynchronously, and so do explicit requests that apply to some other
--process.
--
-- A given type of signal is either typically synchronous or typically
--asynchronous. For example, signals for errors are typically synchronous
--because errors generate signals synchronously. But any type of signal
--can be generated synchronously or asynchronously with an explicit
--request.
--
--
--File: libc.info, Node: Delivery of Signal, Prev: Signal Generation, Up: Concepts of Signals
--
--How Signals Are Delivered
---------------------------
--
-- When a signal is generated, it becomes "pending". Normally it
--remains pending for just a short period of time and then is "delivered"
--to the process that was signaled. However, if that kind of signal is
--currently "blocked", it may remain pending indefinitely--until signals
--of that kind are "unblocked". Once unblocked, it will be delivered
--immediately. *Note Blocking Signals::.
--
-- When the signal is delivered, whether right away or after a long
--delay, the "specified action" for that signal is taken. For certain
--signals, such as `SIGKILL' and `SIGSTOP', the action is fixed, but for
--most signals, the program has a choice: ignore the signal, specify a
--"handler function", or accept the "default action" for that kind of
--signal. The program specifies its choice using functions such as
--`signal' or `sigaction' (*note Signal Actions::). We sometimes say
--that a handler "catches" the signal. While the handler is running,
--that particular signal is normally blocked.
--
-- If the specified action for a kind of signal is to ignore it, then
--any such signal which is generated is discarded immediately. This
--happens even if the signal is also blocked at the time. A signal
--discarded in this way will never be delivered, not even if the program
--subsequently specifies a different action for that kind of signal and
--then unblocks it.
--
-- If a signal arrives which the program has neither handled nor
--ignored, its "default action" takes place. Each kind of signal has its
--own default action, documented below (*note Standard Signals::). For
--most kinds of signals, the default action is to terminate the process.
--For certain kinds of signals that represent "harmless" events, the
--default action is to do nothing.
--
-- When a signal terminates a process, its parent process can determine
--the cause of termination by examining the termination status code
--reported by the `wait' or `waitpid' functions. (This is discussed in
--more detail in *Note Process Completion::.) The information it can get
--includes the fact that termination was due to a signal and the kind of
--signal involved. If a program you run from a shell is terminated by a
--signal, the shell typically prints some kind of error message.
--
-- The signals that normally represent program errors have a special
--property: when one of these signals terminates the process, it also
--writes a "core dump file" which records the state of the process at the
--time of termination. You can examine the core dump with a debugger to
--investigate what caused the error.
--
-- If you raise a "program error" signal by explicit request, and this
--terminates the process, it makes a core dump file just as if the signal
--had been due directly to an error.
--
--
--File: libc.info, Node: Standard Signals, Next: Signal Actions, Prev: Concepts of Signals, Up: Signal Handling
--
--Standard Signals
--================
--
-- This section lists the names for various standard kinds of signals
--and describes what kind of event they mean. Each signal name is a macro
--which stands for a positive integer--the "signal number" for that kind
--of signal. Your programs should never make assumptions about the
--numeric code for a particular kind of signal, but rather refer to them
--always by the names defined here. This is because the number for a
--given kind of signal can vary from system to system, but the meanings of
--the names are standardized and fairly uniform.
--
-- The signal names are defined in the header file `signal.h'.
--
-- - Macro: int NSIG
-- The value of this symbolic constant is the total number of signals
-- defined. Since the signal numbers are allocated consecutively,
-- `NSIG' is also one greater than the largest defined signal number.
--
--* Menu:
--
--* Program Error Signals:: Used to report serious program errors.
--* Termination Signals:: Used to interrupt and/or terminate the
-- program.
--* Alarm Signals:: Used to indicate expiration of timers.
--* Asynchronous I/O Signals:: Used to indicate input is available.
--* Job Control Signals:: Signals used to support job control.
--* Operation Error Signals:: Used to report operational system errors.
--* Miscellaneous Signals:: Miscellaneous Signals.
--* Signal Messages:: Printing a message describing a signal.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-39 glibc-2.3.2-200304020432/manual/libc.info-39
---- glibc-2.3.2/manual/libc.info-39 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-39 Thu Jan 1 01:00:00 1970
-@@ -1,1212 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Program Error Signals, Next: Termination Signals, Up: Standard Signals
--
--Program Error Signals
-----------------------
--
-- The following signals are generated when a serious program error is
--detected by the operating system or the computer itself. In general,
--all of these signals are indications that your program is seriously
--broken in some way, and there's usually no way to continue the
--computation which encountered the error.
--
-- Some programs handle program error signals in order to tidy up before
--terminating; for example, programs that turn off echoing of terminal
--input should handle program error signals in order to turn echoing back
--on. The handler should end by specifying the default action for the
--signal that happened and then reraising it; this will cause the program
--to terminate with that signal, as if it had not had a handler. (*Note
--Termination in Handler::.)
--
-- Termination is the sensible ultimate outcome from a program error in
--most programs. However, programming systems such as Lisp that can load
--compiled user programs might need to keep executing even if a user
--program incurs an error. These programs have handlers which use
--`longjmp' to return control to the command level.
--
-- The default action for all of these signals is to cause the process
--to terminate. If you block or ignore these signals or establish
--handlers for them that return normally, your program will probably
--break horribly when such signals happen, unless they are generated by
--`raise' or `kill' instead of a real error.
--
-- When one of these program error signals terminates a process, it also
--writes a "core dump file" which records the state of the process at the
--time of termination. The core dump file is named `core' and is written
--in whichever directory is current in the process at the time. (On the
--GNU system, you can specify the file name for core dumps with the
--environment variable `COREFILE'.) The purpose of core dump files is so
--that you can examine them with a debugger to investigate what caused
--the error.
--
-- - Macro: int SIGFPE
-- The `SIGFPE' signal reports a fatal arithmetic error. Although the
-- name is derived from "floating-point exception", this signal
-- actually covers all arithmetic errors, including division by zero
-- and overflow. If a program stores integer data in a location
-- which is then used in a floating-point operation, this often
-- causes an "invalid operation" exception, because the processor
-- cannot recognize the data as a floating-point number.
--
-- Actual floating-point exceptions are a complicated subject because
-- there are many types of exceptions with subtly different meanings,
-- and the `SIGFPE' signal doesn't distinguish between them. The
-- `IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std
-- 754-1985 and ANSI/IEEE Std 854-1987)' defines various
-- floating-point exceptions and requires conforming computer systems
-- to report their occurrences. However, this standard does not
-- specify how the exceptions are reported, or what kinds of handling
-- and control the operating system can offer to the programmer.
--
-- BSD systems provide the `SIGFPE' handler with an extra argument that
--distinguishes various causes of the exception. In order to access this
--argument, you must define the handler to accept two arguments, which
--means you must cast it to a one-argument function type in order to
--establish the handler. The GNU library does provide this extra
--argument, but the value is meaningful only on operating systems that
--provide the information (BSD systems and GNU systems).
--
--`FPE_INTOVF_TRAP'
-- Integer overflow (impossible in a C program unless you enable
-- overflow trapping in a hardware-specific fashion).
--
--`FPE_INTDIV_TRAP'
-- Integer division by zero.
--
--`FPE_SUBRNG_TRAP'
-- Subscript-range (something that C programs never check for).
--
--`FPE_FLTOVF_TRAP'
-- Floating overflow trap.
--
--`FPE_FLTDIV_TRAP'
-- Floating/decimal division by zero.
--
--`FPE_FLTUND_TRAP'
-- Floating underflow trap. (Trapping on floating underflow is not
-- normally enabled.)
--
--`FPE_DECOVF_TRAP'
-- Decimal overflow trap. (Only a few machines have decimal
-- arithmetic and C never uses it.)
--
-- - Macro: int SIGILL
-- The name of this signal is derived from "illegal instruction"; it
-- usually means your program is trying to execute garbage or a
-- privileged instruction. Since the C compiler generates only valid
-- instructions, `SIGILL' typically indicates that the executable
-- file is corrupted, or that you are trying to execute data. Some
-- common ways of getting into the latter situation are by passing an
-- invalid object where a pointer to a function was expected, or by
-- writing past the end of an automatic array (or similar problems
-- with pointers to automatic variables) and corrupting other data on
-- the stack such as the return address of a stack frame.
--
-- `SIGILL' can also be generated when the stack overflows, or when
-- the system has trouble running the handler for a signal.
--
-- - Macro: int SIGSEGV
-- This signal is generated when a program tries to read or write
-- outside the memory that is allocated for it, or to write memory
-- that can only be read. (Actually, the signals only occur when the
-- program goes far enough outside to be detected by the system's
-- memory protection mechanism.) The name is an abbreviation for
-- "segmentation violation".
--
-- Common ways of getting a `SIGSEGV' condition include dereferencing
-- a null or uninitialized pointer, or when you use a pointer to step
-- through an array, but fail to check for the end of the array. It
-- varies among systems whether dereferencing a null pointer generates
-- `SIGSEGV' or `SIGBUS'.
--
-- - Macro: int SIGBUS
-- This signal is generated when an invalid pointer is dereferenced.
-- Like `SIGSEGV', this signal is typically the result of
-- dereferencing an uninitialized pointer. The difference between
-- the two is that `SIGSEGV' indicates an invalid access to valid
-- memory, while `SIGBUS' indicates an access to an invalid address.
-- In particular, `SIGBUS' signals often result from dereferencing a
-- misaligned pointer, such as referring to a four-word integer at an
-- address not divisible by four. (Each kind of computer has its own
-- requirements for address alignment.)
--
-- The name of this signal is an abbreviation for "bus error".
--
-- - Macro: int SIGABRT
-- This signal indicates an error detected by the program itself and
-- reported by calling `abort'. *Note Aborting a Program::.
--
-- - Macro: int SIGIOT
-- Generated by the PDP-11 "iot" instruction. On most machines, this
-- is just another name for `SIGABRT'.
--
-- - Macro: int SIGTRAP
-- Generated by the machine's breakpoint instruction, and possibly
-- other trap instructions. This signal is used by debuggers. Your
-- program will probably only see `SIGTRAP' if it is somehow
-- executing bad instructions.
--
-- - Macro: int SIGEMT
-- Emulator trap; this results from certain unimplemented instructions
-- which might be emulated in software, or the operating system's
-- failure to properly emulate them.
--
-- - Macro: int SIGSYS
-- Bad system call; that is to say, the instruction to trap to the
-- operating system was executed, but the code number for the system
-- call to perform was invalid.
--
--
--File: libc.info, Node: Termination Signals, Next: Alarm Signals, Prev: Program Error Signals, Up: Standard Signals
--
--Termination Signals
---------------------
--
-- These signals are all used to tell a process to terminate, in one way
--or another. They have different names because they're used for slightly
--different purposes, and programs might want to handle them differently.
--
-- The reason for handling these signals is usually so your program can
--tidy up as appropriate before actually terminating. For example, you
--might want to save state information, delete temporary files, or restore
--the previous terminal modes. Such a handler should end by specifying
--the default action for the signal that happened and then reraising it;
--this will cause the program to terminate with that signal, as if it had
--not had a handler. (*Note Termination in Handler::.)
--
-- The (obvious) default action for all of these signals is to cause the
--process to terminate.
--
-- - Macro: int SIGTERM
-- The `SIGTERM' signal is a generic signal used to cause program
-- termination. Unlike `SIGKILL', this signal can be blocked,
-- handled, and ignored. It is the normal way to politely ask a
-- program to terminate.
--
-- The shell command `kill' generates `SIGTERM' by default.
--
-- - Macro: int SIGINT
-- The `SIGINT' ("program interrupt") signal is sent when the user
-- types the INTR character (normally `C-c'). *Note Special
-- Characters::, for information about terminal driver support for
-- `C-c'.
--
-- - Macro: int SIGQUIT
-- The `SIGQUIT' signal is similar to `SIGINT', except that it's
-- controlled by a different key--the QUIT character, usually
-- `C-\'--and produces a core dump when it terminates the process,
-- just like a program error signal. You can think of this as a
-- program error condition "detected" by the user.
--
-- *Note Program Error Signals::, for information about core dumps.
-- *Note Special Characters::, for information about terminal driver
-- support.
--
-- Certain kinds of cleanups are best omitted in handling `SIGQUIT'.
-- For example, if the program creates temporary files, it should
-- handle the other termination requests by deleting the temporary
-- files. But it is better for `SIGQUIT' not to delete them, so that
-- the user can examine them in conjunction with the core dump.
--
-- - Macro: int SIGKILL
-- The `SIGKILL' signal is used to cause immediate program
-- termination. It cannot be handled or ignored, and is therefore
-- always fatal. It is also not possible to block this signal.
--
-- This signal is usually generated only by explicit request. Since
-- it cannot be handled, you should generate it only as a last
-- resort, after first trying a less drastic method such as `C-c' or
-- `SIGTERM'. If a process does not respond to any other termination
-- signals, sending it a `SIGKILL' signal will almost always cause it
-- to go away.
--
-- In fact, if `SIGKILL' fails to terminate a process, that by itself
-- constitutes an operating system bug which you should report.
--
-- The system will generate `SIGKILL' for a process itself under some
-- unusual conditions where the program cannot possibly continue to
-- run (even to run a signal handler).
--
-- - Macro: int SIGHUP
-- The `SIGHUP' ("hang-up") signal is used to report that the user's
-- terminal is disconnected, perhaps because a network or telephone
-- connection was broken. For more information about this, see *Note
-- Control Modes::.
--
-- This signal is also used to report the termination of the
-- controlling process on a terminal to jobs associated with that
-- session; this termination effectively disconnects all processes in
-- the session from the controlling terminal. For more information,
-- see *Note Termination Internals::.
--
--
--File: libc.info, Node: Alarm Signals, Next: Asynchronous I/O Signals, Prev: Termination Signals, Up: Standard Signals
--
--Alarm Signals
---------------
--
-- These signals are used to indicate the expiration of timers. *Note
--Setting an Alarm::, for information about functions that cause these
--signals to be sent.
--
-- The default behavior for these signals is to cause program
--termination. This default is rarely useful, but no other default would
--be useful; most of the ways of using these signals would require
--handler functions in any case.
--
-- - Macro: int SIGALRM
-- This signal typically indicates expiration of a timer that
-- measures real or clock time. It is used by the `alarm' function,
-- for example.
--
-- - Macro: int SIGVTALRM
-- This signal typically indicates expiration of a timer that
-- measures CPU time used by the current process. The name is an
-- abbreviation for "virtual time alarm".
--
-- - Macro: int SIGPROF
-- This signal typically indicates expiration of a timer that measures
-- both CPU time used by the current process, and CPU time expended on
-- behalf of the process by the system. Such a timer is used to
-- implement code profiling facilities, hence the name of this signal.
--
--
--File: libc.info, Node: Asynchronous I/O Signals, Next: Job Control Signals, Prev: Alarm Signals, Up: Standard Signals
--
--Asynchronous I/O Signals
--------------------------
--
-- The signals listed in this section are used in conjunction with
--asynchronous I/O facilities. You have to take explicit action by
--calling `fcntl' to enable a particular file descriptor to generate
--these signals (*note Interrupt Input::). The default action for these
--signals is to ignore them.
--
-- - Macro: int SIGIO
-- This signal is sent when a file descriptor is ready to perform
-- input or output.
--
-- On most operating systems, terminals and sockets are the only
-- kinds of files that can generate `SIGIO'; other kinds, including
-- ordinary files, never generate `SIGIO' even if you ask them to.
--
-- In the GNU system `SIGIO' will always be generated properly if you
-- successfully set asynchronous mode with `fcntl'.
--
-- - Macro: int SIGURG
-- This signal is sent when "urgent" or out-of-band data arrives on a
-- socket. *Note Out-of-Band Data::.
--
-- - Macro: int SIGPOLL
-- This is a System V signal name, more or less similar to `SIGIO'.
-- It is defined only for compatibility.
--
--
--File: libc.info, Node: Job Control Signals, Next: Operation Error Signals, Prev: Asynchronous I/O Signals, Up: Standard Signals
--
--Job Control Signals
---------------------
--
-- These signals are used to support job control. If your system
--doesn't support job control, then these macros are defined but the
--signals themselves can't be raised or handled.
--
-- You should generally leave these signals alone unless you really
--understand how job control works. *Note Job Control::.
--
-- - Macro: int SIGCHLD
-- This signal is sent to a parent process whenever one of its child
-- processes terminates or stops.
--
-- The default action for this signal is to ignore it. If you
-- establish a handler for this signal while there are child
-- processes that have terminated but not reported their status via
-- `wait' or `waitpid' (*note Process Completion::), whether your new
-- handler applies to those processes or not depends on the
-- particular operating system.
--
-- - Macro: int SIGCLD
-- This is an obsolete name for `SIGCHLD'.
--
-- - Macro: int SIGCONT
-- You can send a `SIGCONT' signal to a process to make it continue.
-- This signal is special--it always makes the process continue if it
-- is stopped, before the signal is delivered. The default behavior
-- is to do nothing else. You cannot block this signal. You can set
-- a handler, but `SIGCONT' always makes the process continue
-- regardless.
--
-- Most programs have no reason to handle `SIGCONT'; they simply
-- resume execution without realizing they were ever stopped. You
-- can use a handler for `SIGCONT' to make a program do something
-- special when it is stopped and continued--for example, to reprint
-- a prompt when it is suspended while waiting for input.
--
-- - Macro: int SIGSTOP
-- The `SIGSTOP' signal stops the process. It cannot be handled,
-- ignored, or blocked.
--
-- - Macro: int SIGTSTP
-- The `SIGTSTP' signal is an interactive stop signal. Unlike
-- `SIGSTOP', this signal can be handled and ignored.
--
-- Your program should handle this signal if you have a special need
-- to leave files or system tables in a secure state when a process is
-- stopped. For example, programs that turn off echoing should handle
-- `SIGTSTP' so they can turn echoing back on before stopping.
--
-- This signal is generated when the user types the SUSP character
-- (normally `C-z'). For more information about terminal driver
-- support, see *Note Special Characters::.
--
-- - Macro: int SIGTTIN
-- A process cannot read from the user's terminal while it is running
-- as a background job. When any process in a background job tries to
-- read from the terminal, all of the processes in the job are sent a
-- `SIGTTIN' signal. The default action for this signal is to stop
-- the process. For more information about how this interacts with
-- the terminal driver, see *Note Access to the Terminal::.
--
-- - Macro: int SIGTTOU
-- This is similar to `SIGTTIN', but is generated when a process in a
-- background job attempts to write to the terminal or set its modes.
-- Again, the default action is to stop the process. `SIGTTOU' is
-- only generated for an attempt to write to the terminal if the
-- `TOSTOP' output mode is set; *note Output Modes::.
--
-- While a process is stopped, no more signals can be delivered to it
--until it is continued, except `SIGKILL' signals and (obviously)
--`SIGCONT' signals. The signals are marked as pending, but not
--delivered until the process is continued. The `SIGKILL' signal always
--causes termination of the process and can't be blocked, handled or
--ignored. You can ignore `SIGCONT', but it always causes the process to
--be continued anyway if it is stopped. Sending a `SIGCONT' signal to a
--process causes any pending stop signals for that process to be
--discarded. Likewise, any pending `SIGCONT' signals for a process are
--discarded when it receives a stop signal.
--
-- When a process in an orphaned process group (*note Orphaned Process
--Groups::) receives a `SIGTSTP', `SIGTTIN', or `SIGTTOU' signal and does
--not handle it, the process does not stop. Stopping the process would
--probably not be very useful, since there is no shell program that will
--notice it stop and allow the user to continue it. What happens instead
--depends on the operating system you are using. Some systems may do
--nothing; others may deliver another signal instead, such as `SIGKILL'
--or `SIGHUP'. In the GNU system, the process dies with `SIGKILL'; this
--avoids the problem of many stopped, orphaned processes lying around the
--system.
--
--
--File: libc.info, Node: Operation Error Signals, Next: Miscellaneous Signals, Prev: Job Control Signals, Up: Standard Signals
--
--Operation Error Signals
-------------------------
--
-- These signals are used to report various errors generated by an
--operation done by the program. They do not necessarily indicate a
--programming error in the program, but an error that prevents an
--operating system call from completing. The default action for all of
--them is to cause the process to terminate.
--
-- - Macro: int SIGPIPE
-- Broken pipe. If you use pipes or FIFOs, you have to design your
-- application so that one process opens the pipe for reading before
-- another starts writing. If the reading process never starts, or
-- terminates unexpectedly, writing to the pipe or FIFO raises a
-- `SIGPIPE' signal. If `SIGPIPE' is blocked, handled or ignored,
-- the offending call fails with `EPIPE' instead.
--
-- Pipes and FIFO special files are discussed in more detail in *Note
-- Pipes and FIFOs::.
--
-- Another cause of `SIGPIPE' is when you try to output to a socket
-- that isn't connected. *Note Sending Data::.
--
-- - Macro: int SIGLOST
-- Resource lost. This signal is generated when you have an advisory
-- lock on an NFS file, and the NFS server reboots and forgets about
-- your lock.
--
-- In the GNU system, `SIGLOST' is generated when any server program
-- dies unexpectedly. It is usually fine to ignore the signal;
-- whatever call was made to the server that died just returns an
-- error.
--
-- - Macro: int SIGXCPU
-- CPU time limit exceeded. This signal is generated when the process
-- exceeds its soft resource limit on CPU time. *Note Limits on
-- Resources::.
--
-- - Macro: int SIGXFSZ
-- File size limit exceeded. This signal is generated when the
-- process attempts to extend a file so it exceeds the process's soft
-- resource limit on file size. *Note Limits on Resources::.
--
--
--File: libc.info, Node: Miscellaneous Signals, Next: Signal Messages, Prev: Operation Error Signals, Up: Standard Signals
--
--Miscellaneous Signals
-----------------------
--
-- These signals are used for various other purposes. In general, they
--will not affect your program unless it explicitly uses them for
--something.
--
-- - Macro: int SIGUSR1
-- - Macro: int SIGUSR2
-- The `SIGUSR1' and `SIGUSR2' signals are set aside for you to use
-- any way you want. They're useful for simple interprocess
-- communication, if you write a signal handler for them in the
-- program that receives the signal.
--
-- There is an example showing the use of `SIGUSR1' and `SIGUSR2' in
-- *Note Signaling Another Process::.
--
-- The default action is to terminate the process.
--
-- - Macro: int SIGWINCH
-- Window size change. This is generated on some systems (including
-- GNU) when the terminal driver's record of the number of rows and
-- columns on the screen is changed. The default action is to ignore
-- it.
--
-- If a program does full-screen display, it should handle `SIGWINCH'.
-- When the signal arrives, it should fetch the new screen size and
-- reformat its display accordingly.
--
-- - Macro: int SIGINFO
-- Information request. In 4.4 BSD and the GNU system, this signal
-- is sent to all the processes in the foreground process group of
-- the controlling terminal when the user types the STATUS character
-- in canonical mode; *note Signal Characters::.
--
-- If the process is the leader of the process group, the default
-- action is to print some status information about the system and
-- what the process is doing. Otherwise the default is to do nothing.
--
--
--File: libc.info, Node: Signal Messages, Prev: Miscellaneous Signals, Up: Standard Signals
--
--Signal Messages
-----------------
--
-- We mentioned above that the shell prints a message describing the
--signal that terminated a child process. The clean way to print a
--message describing a signal is to use the functions `strsignal' and
--`psignal'. These functions use a signal number to specify which kind
--of signal to describe. The signal number may come from the termination
--status of a child process (*note Process Completion::) or it may come
--from a signal handler in the same process.
--
-- - Function: char * strsignal (int SIGNUM)
-- This function returns a pointer to a statically-allocated string
-- containing a message describing the signal SIGNUM. You should not
-- modify the contents of this string; and, since it can be rewritten
-- on subsequent calls, you should save a copy of it if you need to
-- reference it later.
--
-- This function is a GNU extension, declared in the header file
-- `string.h'.
--
-- - Function: void psignal (int SIGNUM, const char *MESSAGE)
-- This function prints a message describing the signal SIGNUM to the
-- standard error output stream `stderr'; see *Note Standard
-- Streams::.
--
-- If you call `psignal' with a MESSAGE that is either a null pointer
-- or an empty string, `psignal' just prints the message
-- corresponding to SIGNUM, adding a trailing newline.
--
-- If you supply a non-null MESSAGE argument, then `psignal' prefixes
-- its output with this string. It adds a colon and a space
-- character to separate the MESSAGE from the string corresponding to
-- SIGNUM.
--
-- This function is a BSD feature, declared in the header file
-- `signal.h'.
--
-- There is also an array `sys_siglist' which contains the messages for
--the various signal codes. This array exists on BSD systems, unlike
--`strsignal'.
--
--
--File: libc.info, Node: Signal Actions, Next: Defining Handlers, Prev: Standard Signals, Up: Signal Handling
--
--Specifying Signal Actions
--=========================
--
-- The simplest way to change the action for a signal is to use the
--`signal' function. You can specify a built-in action (such as to
--ignore the signal), or you can "establish a handler".
--
-- The GNU library also implements the more versatile `sigaction'
--facility. This section describes both facilities and gives suggestions
--on which to use when.
--
--* Menu:
--
--* Basic Signal Handling:: The simple `signal' function.
--* Advanced Signal Handling:: The more powerful `sigaction' function.
--* Signal and Sigaction:: How those two functions interact.
--* Sigaction Function Example:: An example of using the sigaction function.
--* Flags for Sigaction:: Specifying options for signal handling.
--* Initial Signal Actions:: How programs inherit signal actions.
--
--
--File: libc.info, Node: Basic Signal Handling, Next: Advanced Signal Handling, Up: Signal Actions
--
--Basic Signal Handling
-----------------------
--
-- The `signal' function provides a simple interface for establishing
--an action for a particular signal. The function and associated macros
--are declared in the header file `signal.h'.
--
-- - Data Type: sighandler_t
-- This is the type of signal handler functions. Signal handlers
-- take one integer argument specifying the signal number, and have
-- return type `void'. So, you should define handler functions like
-- this:
--
-- void HANDLER (int `signum') { ... }
--
-- The name `sighandler_t' for this data type is a GNU extension.
--
-- - Function: sighandler_t signal (int SIGNUM, sighandler_t ACTION)
-- The `signal' function establishes ACTION as the action for the
-- signal SIGNUM.
--
-- The first argument, SIGNUM, identifies the signal whose behavior
-- you want to control, and should be a signal number. The proper
-- way to specify a signal number is with one of the symbolic signal
-- names (*note Standard Signals::)--don't use an explicit number,
-- because the numerical code for a given kind of signal may vary
-- from operating system to operating system.
--
-- The second argument, ACTION, specifies the action to use for the
-- signal SIGNUM. This can be one of the following:
--
-- `SIG_DFL'
-- `SIG_DFL' specifies the default action for the particular
-- signal. The default actions for various kinds of signals are
-- stated in *Note Standard Signals::.
--
-- `SIG_IGN'
-- `SIG_IGN' specifies that the signal should be ignored.
--
-- Your program generally should not ignore signals that
-- represent serious events or that are normally used to request
-- termination. You cannot ignore the `SIGKILL' or `SIGSTOP'
-- signals at all. You can ignore program error signals like
-- `SIGSEGV', but ignoring the error won't enable the program to
-- continue executing meaningfully. Ignoring user requests such
-- as `SIGINT', `SIGQUIT', and `SIGTSTP' is unfriendly.
--
-- When you do not wish signals to be delivered during a certain
-- part of the program, the thing to do is to block them, not
-- ignore them. *Note Blocking Signals::.
--
-- `HANDLER'
-- Supply the address of a handler function in your program, to
-- specify running this handler as the way to deliver the signal.
--
-- For more information about defining signal handler functions,
-- see *Note Defining Handlers::.
--
-- If you set the action for a signal to `SIG_IGN', or if you set it
-- to `SIG_DFL' and the default action is to ignore that signal, then
-- any pending signals of that type are discarded (even if they are
-- blocked). Discarding the pending signals means that they will
-- never be delivered, not even if you subsequently specify another
-- action and unblock this kind of signal.
--
-- The `signal' function returns the action that was previously in
-- effect for the specified SIGNUM. You can save this value and
-- restore it later by calling `signal' again.
--
-- If `signal' can't honor the request, it returns `SIG_ERR' instead.
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINVAL'
-- You specified an invalid SIGNUM; or you tried to ignore or
-- provide a handler for `SIGKILL' or `SIGSTOP'.
--
-- *Compatibility Note:* A problem encountered when working with the
--`signal' function is that it has different semantics on BSD and SVID
--systems. The difference is that on SVID systems the signal handler is
--deinstalled after signal delivery. On BSD systems the handler must be
--explicitly deinstalled. In the GNU C Library we use the BSD version by
--default. To use the SVID version you can either use the function
--`sysv_signal' (see below) or use the `_XOPEN_SOURCE' feature select
--macro (*note Feature Test Macros::). In general, use of these
--functions should be avoided because of compatibility problems. It is
--better to use `sigaction' if it is available since the results are much
--more reliable.
--
-- Here is a simple example of setting up a handler to delete temporary
--files when certain fatal signals happen:
--
-- #include <signal.h>
--
-- void
-- termination_handler (int signum)
-- {
-- struct temp_file *p;
--
-- for (p = temp_file_list; p; p = p->next)
-- unlink (p->name);
-- }
--
-- int
-- main (void)
-- {
-- ...
-- if (signal (SIGINT, termination_handler) == SIG_IGN)
-- signal (SIGINT, SIG_IGN);
-- if (signal (SIGHUP, termination_handler) == SIG_IGN)
-- signal (SIGHUP, SIG_IGN);
-- if (signal (SIGTERM, termination_handler) == SIG_IGN)
-- signal (SIGTERM, SIG_IGN);
-- ...
-- }
--
--Note that if a given signal was previously set to be ignored, this code
--avoids altering that setting. This is because non-job-control shells
--often ignore certain signals when starting children, and it is important
--for the children to respect this.
--
-- We do not handle `SIGQUIT' or the program error signals in this
--example because these are designed to provide information for debugging
--(a core dump), and the temporary files may give useful information.
--
-- - Function: sighandler_t sysv_signal (int SIGNUM, sighandler_t ACTION)
-- The `sysv_signal' implements the behavior of the standard `signal'
-- function as found on SVID systems. The difference to BSD systems
-- is that the handler is deinstalled after a delivery of a signal.
--
-- *Compatibility Note:* As said above for `signal', this function
-- should be avoided when possible. `sigaction' is the preferred
-- method.
--
-- - Function: sighandler_t ssignal (int SIGNUM, sighandler_t ACTION)
-- The `ssignal' function does the same thing as `signal'; it is
-- provided only for compatibility with SVID.
--
-- - Macro: sighandler_t SIG_ERR
-- The value of this macro is used as the return value from `signal'
-- to indicate an error.
--
--
--File: libc.info, Node: Advanced Signal Handling, Next: Signal and Sigaction, Prev: Basic Signal Handling, Up: Signal Actions
--
--Advanced Signal Handling
--------------------------
--
-- The `sigaction' function has the same basic effect as `signal': to
--specify how a signal should be handled by the process. However,
--`sigaction' offers more control, at the expense of more complexity. In
--particular, `sigaction' allows you to specify additional flags to
--control when the signal is generated and how the handler is invoked.
--
-- The `sigaction' function is declared in `signal.h'.
--
-- - Data Type: struct sigaction
-- Structures of type `struct sigaction' are used in the `sigaction'
-- function to specify all the information about how to handle a
-- particular signal. This structure contains at least the following
-- members:
--
-- `sighandler_t sa_handler'
-- This is used in the same way as the ACTION argument to the
-- `signal' function. The value can be `SIG_DFL', `SIG_IGN', or
-- a function pointer. *Note Basic Signal Handling::.
--
-- `sigset_t sa_mask'
-- This specifies a set of signals to be blocked while the
-- handler runs. Blocking is explained in *Note Blocking for
-- Handler::. Note that the signal that was delivered is
-- automatically blocked by default before its handler is
-- started; this is true regardless of the value in `sa_mask'.
-- If you want that signal not to be blocked within its handler,
-- you must write code in the handler to unblock it.
--
-- `int sa_flags'
-- This specifies various flags which can affect the behavior of
-- the signal. These are described in more detail in *Note
-- Flags for Sigaction::.
--
-- - Function: int sigaction (int SIGNUM, const struct sigaction
-- *restrict ACTION, struct sigaction *restrict OLD-ACTION)
-- The ACTION argument is used to set up a new action for the signal
-- SIGNUM, while the OLD-ACTION argument is used to return
-- information about the action previously associated with this
-- symbol. (In other words, OLD-ACTION has the same purpose as the
-- `signal' function's return value--you can check to see what the
-- old action in effect for the signal was, and restore it later if
-- you want.)
--
-- Either ACTION or OLD-ACTION can be a null pointer. If OLD-ACTION
-- is a null pointer, this simply suppresses the return of
-- information about the old action. If ACTION is a null pointer,
-- the action associated with the signal SIGNUM is unchanged; this
-- allows you to inquire about how a signal is being handled without
-- changing that handling.
--
-- The return value from `sigaction' is zero if it succeeds, and `-1'
-- on failure. The following `errno' error conditions are defined
-- for this function:
--
-- `EINVAL'
-- The SIGNUM argument is not valid, or you are trying to trap
-- or ignore `SIGKILL' or `SIGSTOP'.
--
--
--File: libc.info, Node: Signal and Sigaction, Next: Sigaction Function Example, Prev: Advanced Signal Handling, Up: Signal Actions
--
--Interaction of `signal' and `sigaction'
-----------------------------------------
--
-- It's possible to use both the `signal' and `sigaction' functions
--within a single program, but you have to be careful because they can
--interact in slightly strange ways.
--
-- The `sigaction' function specifies more information than the
--`signal' function, so the return value from `signal' cannot express the
--full range of `sigaction' possibilities. Therefore, if you use
--`signal' to save and later reestablish an action, it may not be able to
--reestablish properly a handler that was established with `sigaction'.
--
-- To avoid having problems as a result, always use `sigaction' to save
--and restore a handler if your program uses `sigaction' at all. Since
--`sigaction' is more general, it can properly save and reestablish any
--action, regardless of whether it was established originally with
--`signal' or `sigaction'.
--
-- On some systems if you establish an action with `signal' and then
--examine it with `sigaction', the handler address that you get may not
--be the same as what you specified with `signal'. It may not even be
--suitable for use as an action argument with `signal'. But you can rely
--on using it as an argument to `sigaction'. This problem never happens
--on the GNU system.
--
-- So, you're better off using one or the other of the mechanisms
--consistently within a single program.
--
-- *Portability Note:* The basic `signal' function is a feature of
--ISO C, while `sigaction' is part of the POSIX.1 standard. If you are
--concerned about portability to non-POSIX systems, then you should use
--the `signal' function instead.
--
--
--File: libc.info, Node: Sigaction Function Example, Next: Flags for Sigaction, Prev: Signal and Sigaction, Up: Signal Actions
--
--`sigaction' Function Example
------------------------------
--
-- In *Note Basic Signal Handling::, we gave an example of establishing
--a simple handler for termination signals using `signal'. Here is an
--equivalent example using `sigaction':
--
-- #include <signal.h>
--
-- void
-- termination_handler (int signum)
-- {
-- struct temp_file *p;
--
-- for (p = temp_file_list; p; p = p->next)
-- unlink (p->name);
-- }
--
-- int
-- main (void)
-- {
-- ...
-- struct sigaction new_action, old_action;
--
-- /* Set up the structure to specify the new action. */
-- new_action.sa_handler = termination_handler;
-- sigemptyset (&new_action.sa_mask);
-- new_action.sa_flags = 0;
--
-- sigaction (SIGINT, NULL, &old_action);
-- if (old_action.sa_handler != SIG_IGN)
-- sigaction (SIGINT, &new_action, NULL);
-- sigaction (SIGHUP, NULL, &old_action);
-- if (old_action.sa_handler != SIG_IGN)
-- sigaction (SIGHUP, &new_action, NULL);
-- sigaction (SIGTERM, NULL, &old_action);
-- if (old_action.sa_handler != SIG_IGN)
-- sigaction (SIGTERM, &new_action, NULL);
-- ...
-- }
--
-- The program just loads the `new_action' structure with the desired
--parameters and passes it in the `sigaction' call. The usage of
--`sigemptyset' is described later; see *Note Blocking Signals::.
--
-- As in the example using `signal', we avoid handling signals
--previously set to be ignored. Here we can avoid altering the signal
--handler even momentarily, by using the feature of `sigaction' that lets
--us examine the current action without specifying a new one.
--
-- Here is another example. It retrieves information about the current
--action for `SIGINT' without changing that action.
--
-- struct sigaction query_action;
--
-- if (sigaction (SIGINT, NULL, &query_action) < 0)
-- /* `sigaction' returns -1 in case of error. */
-- else if (query_action.sa_handler == SIG_DFL)
-- /* `SIGINT' is handled in the default, fatal manner. */
-- else if (query_action.sa_handler == SIG_IGN)
-- /* `SIGINT' is ignored. */
-- else
-- /* A programmer-defined signal handler is in effect. */
--
--
--File: libc.info, Node: Flags for Sigaction, Next: Initial Signal Actions, Prev: Sigaction Function Example, Up: Signal Actions
--
--Flags for `sigaction'
-----------------------
--
-- The `sa_flags' member of the `sigaction' structure is a catch-all
--for special features. Most of the time, `SA_RESTART' is a good value
--to use for this field.
--
-- The value of `sa_flags' is interpreted as a bit mask. Thus, you
--should choose the flags you want to set, OR those flags together, and
--store the result in the `sa_flags' member of your `sigaction' structure.
--
-- Each signal number has its own set of flags. Each call to
--`sigaction' affects one particular signal number, and the flags that
--you specify apply only to that particular signal.
--
-- In the GNU C library, establishing a handler with `signal' sets all
--the flags to zero except for `SA_RESTART', whose value depends on the
--settings you have made with `siginterrupt'. *Note Interrupted
--Primitives::, to see what this is about.
--
-- These macros are defined in the header file `signal.h'.
--
-- - Macro: int SA_NOCLDSTOP
-- This flag is meaningful only for the `SIGCHLD' signal. When the
-- flag is set, the system delivers the signal for a terminated child
-- process but not for one that is stopped. By default, `SIGCHLD' is
-- delivered for both terminated children and stopped children.
--
-- Setting this flag for a signal other than `SIGCHLD' has no effect.
--
-- - Macro: int SA_ONSTACK
-- If this flag is set for a particular signal number, the system
-- uses the signal stack when delivering that kind of signal. *Note
-- Signal Stack::. If a signal with this flag arrives and you have
-- not set a signal stack, the system terminates the program with
-- `SIGILL'.
--
-- - Macro: int SA_RESTART
-- This flag controls what happens when a signal is delivered during
-- certain primitives (such as `open', `read' or `write'), and the
-- signal handler returns normally. There are two alternatives: the
-- library function can resume, or it can return failure with error
-- code `EINTR'.
--
-- The choice is controlled by the `SA_RESTART' flag for the
-- particular kind of signal that was delivered. If the flag is set,
-- returning from a handler resumes the library function. If the
-- flag is clear, returning from a handler makes the function fail.
-- *Note Interrupted Primitives::.
--
--
--File: libc.info, Node: Initial Signal Actions, Prev: Flags for Sigaction, Up: Signal Actions
--
--Initial Signal Actions
------------------------
--
-- When a new process is created (*note Creating a Process::), it
--inherits handling of signals from its parent process. However, when
--you load a new process image using the `exec' function (*note Executing
--a File::), any signals that you've defined your own handlers for revert
--to their `SIG_DFL' handling. (If you think about it a little, this
--makes sense; the handler functions from the old program are specific to
--that program, and aren't even present in the address space of the new
--program image.) Of course, the new program can establish its own
--handlers.
--
-- When a program is run by a shell, the shell normally sets the initial
--actions for the child process to `SIG_DFL' or `SIG_IGN', as
--appropriate. It's a good idea to check to make sure that the shell has
--not set up an initial action of `SIG_IGN' before you establish your own
--signal handlers.
--
-- Here is an example of how to establish a handler for `SIGHUP', but
--not if `SIGHUP' is currently ignored:
--
-- ...
-- struct sigaction temp;
--
-- sigaction (SIGHUP, NULL, &temp);
--
-- if (temp.sa_handler != SIG_IGN)
-- {
-- temp.sa_handler = handle_sighup;
-- sigemptyset (&temp.sa_mask);
-- sigaction (SIGHUP, &temp, NULL);
-- }
--
--
--File: libc.info, Node: Defining Handlers, Next: Interrupted Primitives, Prev: Signal Actions, Up: Signal Handling
--
--Defining Signal Handlers
--========================
--
-- This section describes how to write a signal handler function that
--can be established with the `signal' or `sigaction' functions.
--
-- A signal handler is just a function that you compile together with
--the rest of the program. Instead of directly invoking the function,
--you use `signal' or `sigaction' to tell the operating system to call it
--when a signal arrives. This is known as "establishing" the handler.
--*Note Signal Actions::.
--
-- There are two basic strategies you can use in signal handler
--functions:
--
-- * You can have the handler function note that the signal arrived by
-- tweaking some global data structures, and then return normally.
--
-- * You can have the handler function terminate the program or transfer
-- control to a point where it can recover from the situation that
-- caused the signal.
--
-- You need to take special care in writing handler functions because
--they can be called asynchronously. That is, a handler might be called
--at any point in the program, unpredictably. If two signals arrive
--during a very short interval, one handler can run within another. This
--section describes what your handler should do, and what you should
--avoid.
--
--* Menu:
--
--* Handler Returns:: Handlers that return normally, and what
-- this means.
--* Termination in Handler:: How handler functions terminate a program.
--* Longjmp in Handler:: Nonlocal transfer of control out of a
-- signal handler.
--* Signals in Handler:: What happens when signals arrive while
-- the handler is already occupied.
--* Merged Signals:: When a second signal arrives before the
-- first is handled.
--* Nonreentrancy:: Do not call any functions unless you know they
-- are reentrant with respect to signals.
--* Atomic Data Access:: A single handler can run in the middle of
-- reading or writing a single object.
--
--
--File: libc.info, Node: Handler Returns, Next: Termination in Handler, Up: Defining Handlers
--
--Signal Handlers that Return
-----------------------------
--
-- Handlers which return normally are usually used for signals such as
--`SIGALRM' and the I/O and interprocess communication signals. But a
--handler for `SIGINT' might also return normally after setting a flag
--that tells the program to exit at a convenient time.
--
-- It is not safe to return normally from the handler for a program
--error signal, because the behavior of the program when the handler
--function returns is not defined after a program error. *Note Program
--Error Signals::.
--
-- Handlers that return normally must modify some global variable in
--order to have any effect. Typically, the variable is one that is
--examined periodically by the program during normal operation. Its data
--type should be `sig_atomic_t' for reasons described in *Note Atomic
--Data Access::.
--
-- Here is a simple example of such a program. It executes the body of
--the loop until it has noticed that a `SIGALRM' signal has arrived.
--This technique is useful because it allows the iteration in progress
--when the signal arrives to complete before the loop exits.
--
-- #include <signal.h>
-- #include <stdio.h>
-- #include <stdlib.h>
--
-- /* This flag controls termination of the main loop. */
-- volatile sig_atomic_t keep_going = 1;
--
-- /* The signal handler just clears the flag and re-enables itself. */
-- void
-- catch_alarm (int sig)
-- {
-- keep_going = 0;
-- signal (sig, catch_alarm);
-- }
--
-- void
-- do_stuff (void)
-- {
-- puts ("Doing stuff while waiting for alarm....");
-- }
--
-- int
-- main (void)
-- {
-- /* Establish a handler for SIGALRM signals. */
-- signal (SIGALRM, catch_alarm);
--
-- /* Set an alarm to go off in a little while. */
-- alarm (2);
--
-- /* Check the flag once in a while to see when to quit. */
-- while (keep_going)
-- do_stuff ();
--
-- return EXIT_SUCCESS;
-- }
--
--
--File: libc.info, Node: Termination in Handler, Next: Longjmp in Handler, Prev: Handler Returns, Up: Defining Handlers
--
--Handlers That Terminate the Process
-------------------------------------
--
-- Handler functions that terminate the program are typically used to
--cause orderly cleanup or recovery from program error signals and
--interactive interrupts.
--
-- The cleanest way for a handler to terminate the process is to raise
--the same signal that ran the handler in the first place. Here is how
--to do this:
--
-- volatile sig_atomic_t fatal_error_in_progress = 0;
--
-- void
-- fatal_error_signal (int sig)
-- {
-- /* Since this handler is established for more than one kind of signal,
-- it might still get invoked recursively by delivery of some other kind
-- of signal. Use a static variable to keep track of that. */
-- if (fatal_error_in_progress)
-- raise (sig);
-- fatal_error_in_progress = 1;
--
-- /* Now do the clean up actions:
-- - reset terminal modes
-- - kill child processes
-- - remove lock files */
-- ...
--
-- /* Now reraise the signal. We reactivate the signal's
-- default handling, which is to terminate the process.
-- We could just call `exit' or `abort',
-- but reraising the signal sets the return status
-- from the process correctly. */
-- signal (sig, SIG_DFL);
-- raise (sig);
-- }
--
--
--File: libc.info, Node: Longjmp in Handler, Next: Signals in Handler, Prev: Termination in Handler, Up: Defining Handlers
--
--Nonlocal Control Transfer in Handlers
---------------------------------------
--
-- You can do a nonlocal transfer of control out of a signal handler
--using the `setjmp' and `longjmp' facilities (*note Non-Local Exits::).
--
-- When the handler does a nonlocal control transfer, the part of the
--program that was running will not continue. If this part of the program
--was in the middle of updating an important data structure, the data
--structure will remain inconsistent. Since the program does not
--terminate, the inconsistency is likely to be noticed later on.
--
-- There are two ways to avoid this problem. One is to block the signal
--for the parts of the program that update important data structures.
--Blocking the signal delays its delivery until it is unblocked, once the
--critical updating is finished. *Note Blocking Signals::.
--
-- The other way to re-initialize the crucial data structures in the
--signal handler, or make their values consistent.
--
-- Here is a rather schematic example showing the reinitialization of
--one global variable.
--
-- #include <signal.h>
-- #include <setjmp.h>
--
-- jmp_buf return_to_top_level;
--
-- volatile sig_atomic_t waiting_for_input;
--
-- void
-- handle_sigint (int signum)
-- {
-- /* We may have been waiting for input when the signal arrived,
-- but we are no longer waiting once we transfer control. */
-- waiting_for_input = 0;
-- longjmp (return_to_top_level, 1);
-- }
--
-- int
-- main (void)
-- {
-- ...
-- signal (SIGINT, sigint_handler);
-- ...
-- while (1) {
-- prepare_for_command ();
-- if (setjmp (return_to_top_level) == 0)
-- read_and_execute_command ();
-- }
-- }
--
-- /* Imagine this is a subroutine used by various commands. */
-- char *
-- read_data ()
-- {
-- if (input_from_terminal) {
-- waiting_for_input = 1;
-- ...
-- waiting_for_input = 0;
-- } else {
-- ...
-- }
-- }
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-4 glibc-2.3.2-200304020432/manual/libc.info-4
---- glibc-2.3.2/manual/libc.info-4 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-4 Thu Jan 1 01:00:00 1970
-@@ -1,1208 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Freeing after Malloc, Next: Changing Block Size, Prev: Malloc Examples, Up: Unconstrained Allocation
--
--Freeing Memory Allocated with `malloc'
--......................................
--
-- When you no longer need a block that you got with `malloc', use the
--function `free' to make the block available to be allocated again. The
--prototype for this function is in `stdlib.h'.
--
-- - Function: void free (void *PTR)
-- The `free' function deallocates the block of memory pointed at by
-- PTR.
--
-- - Function: void cfree (void *PTR)
-- This function does the same thing as `free'. It's provided for
-- backward compatibility with SunOS; you should use `free' instead.
--
-- Freeing a block alters the contents of the block. *Do not expect to
--find any data (such as a pointer to the next block in a chain of
--blocks) in the block after freeing it.* Copy whatever you need out of
--the block before freeing it! Here is an example of the proper way to
--free all the blocks in a chain, and the strings that they point to:
--
-- struct chain
-- {
-- struct chain *next;
-- char *name;
-- }
--
-- void
-- free_chain (struct chain *chain)
-- {
-- while (chain != 0)
-- {
-- struct chain *next = chain->next;
-- free (chain->name);
-- free (chain);
-- chain = next;
-- }
-- }
--
-- Occasionally, `free' can actually return memory to the operating
--system and make the process smaller. Usually, all it can do is allow a
--later call to `malloc' to reuse the space. In the meantime, the space
--remains in your program as part of a free-list used internally by
--`malloc'.
--
-- There is no point in freeing blocks at the end of a program, because
--all of the program's space is given back to the system when the process
--terminates.
--
--
--File: libc.info, Node: Changing Block Size, Next: Allocating Cleared Space, Prev: Freeing after Malloc, Up: Unconstrained Allocation
--
--Changing the Size of a Block
--............................
--
-- Often you do not know for certain how big a block you will
--ultimately need at the time you must begin to use the block. For
--example, the block might be a buffer that you use to hold a line being
--read from a file; no matter how long you make the buffer initially, you
--may encounter a line that is longer.
--
-- You can make the block longer by calling `realloc'. This function
--is declared in `stdlib.h'.
--
-- - Function: void * realloc (void *PTR, size_t NEWSIZE)
-- The `realloc' function changes the size of the block whose address
-- is PTR to be NEWSIZE.
--
-- Since the space after the end of the block may be in use, `realloc'
-- may find it necessary to copy the block to a new address where
-- more free space is available. The value of `realloc' is the new
-- address of the block. If the block needs to be moved, `realloc'
-- copies the old contents.
--
-- If you pass a null pointer for PTR, `realloc' behaves just like
-- `malloc (NEWSIZE)'. This can be convenient, but beware that older
-- implementations (before ISO C) may not support this behavior, and
-- will probably crash when `realloc' is passed a null pointer.
--
-- Like `malloc', `realloc' may return a null pointer if no memory
--space is available to make the block bigger. When this happens, the
--original block is untouched; it has not been modified or relocated.
--
-- In most cases it makes no difference what happens to the original
--block when `realloc' fails, because the application program cannot
--continue when it is out of memory, and the only thing to do is to give
--a fatal error message. Often it is convenient to write and use a
--subroutine, conventionally called `xrealloc', that takes care of the
--error message as `xmalloc' does for `malloc':
--
-- void *
-- xrealloc (void *ptr, size_t size)
-- {
-- register void *value = realloc (ptr, size);
-- if (value == 0)
-- fatal ("Virtual memory exhausted");
-- return value;
-- }
--
-- You can also use `realloc' to make a block smaller. The reason you
--would do this is to avoid tying up a lot of memory space when only a
--little is needed. In several allocation implementations, making a
--block smaller sometimes necessitates copying it, so it can fail if no
--other space is available.
--
-- If the new size you specify is the same as the old size, `realloc'
--is guaranteed to change nothing and return the same address that you
--gave.
--
--
--File: libc.info, Node: Allocating Cleared Space, Next: Efficiency and Malloc, Prev: Changing Block Size, Up: Unconstrained Allocation
--
--Allocating Cleared Space
--........................
--
-- The function `calloc' allocates memory and clears it to zero. It is
--declared in `stdlib.h'.
--
-- - Function: void * calloc (size_t COUNT, size_t ELTSIZE)
-- This function allocates a block long enough to contain a vector of
-- COUNT elements, each of size ELTSIZE. Its contents are cleared to
-- zero before `calloc' returns.
--
-- You could define `calloc' as follows:
--
-- void *
-- calloc (size_t count, size_t eltsize)
-- {
-- size_t size = count * eltsize;
-- void *value = malloc (size);
-- if (value != 0)
-- memset (value, 0, size);
-- return value;
-- }
--
-- But in general, it is not guaranteed that `calloc' calls `malloc'
--internally. Therefore, if an application provides its own
--`malloc'/`realloc'/`free' outside the C library, it should always
--define `calloc', too.
--
--
--File: libc.info, Node: Efficiency and Malloc, Next: Aligned Memory Blocks, Prev: Allocating Cleared Space, Up: Unconstrained Allocation
--
--Efficiency Considerations for `malloc'
--......................................
--
-- As opposed to other versions, the `malloc' in the GNU C Library does
--not round up block sizes to powers of two, neither for large nor for
--small sizes. Neighboring chunks can be coalesced on a `free' no matter
--what their size is. This makes the implementation suitable for all
--kinds of allocation patterns without generally incurring high memory
--waste through fragmentation.
--
-- Very large blocks (much larger than a page) are allocated with
--`mmap' (anonymous or via `/dev/zero') by this implementation. This has
--the great advantage that these chunks are returned to the system
--immediately when they are freed. Therefore, it cannot happen that a
--large chunk becomes "locked" in between smaller ones and even after
--calling `free' wastes memory. The size threshold for `mmap' to be used
--can be adjusted with `mallopt'. The use of `mmap' can also be disabled
--completely.
--
--
--File: libc.info, Node: Aligned Memory Blocks, Next: Malloc Tunable Parameters, Prev: Efficiency and Malloc, Up: Unconstrained Allocation
--
--Allocating Aligned Memory Blocks
--................................
--
-- The address of a block returned by `malloc' or `realloc' in the GNU
--system is always a multiple of eight (or sixteen on 64-bit systems).
--If you need a block whose address is a multiple of a higher power of
--two than that, use `memalign', `posix_memalign', or `valloc'.
--`memalign' is declared in `malloc.h' and `posix_memalign' is declared
--in `stdlib.h'.
--
-- With the GNU library, you can use `free' to free the blocks that
--`memalign', `posix_memalign', and `valloc' return. That does not work
--in BSD, however--BSD does not provide any way to free such blocks.
--
-- - Function: void * memalign (size_t BOUNDARY, size_t SIZE)
-- The `memalign' function allocates a block of SIZE bytes whose
-- address is a multiple of BOUNDARY. The BOUNDARY must be a power
-- of two! The function `memalign' works by allocating a somewhat
-- larger block, and then returning an address within the block that
-- is on the specified boundary.
--
-- - Function: int posix_memalign (void **MEMPTR, size_t ALIGNMENT,
-- size_t SIZE)
-- The `posix_memalign' function is similar to the `memalign'
-- function in that it returns a buffer of SIZE bytes aligned to a
-- multiple of ALIGNMENT. But it adds one requirement to the
-- parameter ALIGNMENT: the value must be a power of two multiple of
-- `sizeof (void *)'.
--
-- If the function succeeds in allocation memory a pointer to the
-- allocated memory is returned in `*MEMPTR' and the return value is
-- zero. Otherwise the function returns an error value indicating
-- the problem.
--
-- This function was introduced in POSIX 1003.1d.
--
-- - Function: void * valloc (size_t SIZE)
-- Using `valloc' is like using `memalign' and passing the page size
-- as the value of the second argument. It is implemented like this:
--
-- void *
-- valloc (size_t size)
-- {
-- return memalign (getpagesize (), size);
-- }
--
-- *Note Query Memory Parameters:: for more information about the
-- memory subsystem.
--
--
--File: libc.info, Node: Malloc Tunable Parameters, Next: Heap Consistency Checking, Prev: Aligned Memory Blocks, Up: Unconstrained Allocation
--
--Malloc Tunable Parameters
--.........................
--
-- You can adjust some parameters for dynamic memory allocation with the
--`mallopt' function. This function is the general SVID/XPG interface,
--defined in `malloc.h'.
--
-- - Function: int mallopt (int PARAM, int VALUE)
-- When calling `mallopt', the PARAM argument specifies the parameter
-- to be set, and VALUE the new value to be set. Possible choices
-- for PARAM, as defined in `malloc.h', are:
--
-- `M_TRIM_THRESHOLD'
-- This is the minimum size (in bytes) of the top-most,
-- releasable chunk that will cause `sbrk' to be called with a
-- negative argument in order to return memory to the system.
--
-- `M_TOP_PAD'
-- This parameter determines the amount of extra memory to
-- obtain from the system when a call to `sbrk' is required. It
-- also specifies the number of bytes to retain when shrinking
-- the heap by calling `sbrk' with a negative argument. This
-- provides the necessary hysteresis in heap size such that
-- excessive amounts of system calls can be avoided.
--
-- `M_MMAP_THRESHOLD'
-- All chunks larger than this value are allocated outside the
-- normal heap, using the `mmap' system call. This way it is
-- guaranteed that the memory for these chunks can be returned
-- to the system on `free'. Note that requests smaller than
-- this threshold might still be allocated via `mmap'.
--
-- `M_MMAP_MAX'
-- The maximum number of chunks to allocate with `mmap'.
-- Setting this to zero disables all use of `mmap'.
--
--
--
--File: libc.info, Node: Heap Consistency Checking, Next: Hooks for Malloc, Prev: Malloc Tunable Parameters, Up: Unconstrained Allocation
--
--Heap Consistency Checking
--.........................
--
-- You can ask `malloc' to check the consistency of dynamic memory by
--using the `mcheck' function. This function is a GNU extension,
--declared in `mcheck.h'.
--
-- - Function: int mcheck (void (*ABORTFN) (enum mcheck_status STATUS))
-- Calling `mcheck' tells `malloc' to perform occasional consistency
-- checks. These will catch things such as writing past the end of a
-- block that was allocated with `malloc'.
--
-- The ABORTFN argument is the function to call when an inconsistency
-- is found. If you supply a null pointer, then `mcheck' uses a
-- default function which prints a message and calls `abort' (*note
-- Aborting a Program::). The function you supply is called with one
-- argument, which says what sort of inconsistency was detected; its
-- type is described below.
--
-- It is too late to begin allocation checking once you have allocated
-- anything with `malloc'. So `mcheck' does nothing in that case.
-- The function returns `-1' if you call it too late, and `0'
-- otherwise (when it is successful).
--
-- The easiest way to arrange to call `mcheck' early enough is to use
-- the option `-lmcheck' when you link your program; then you don't
-- need to modify your program source at all. Alternatively you
-- might use a debugger to insert a call to `mcheck' whenever the
-- program is started, for example these gdb commands will
-- automatically call `mcheck' whenever the program starts:
--
-- (gdb) break main
-- Breakpoint 1, main (argc=2, argv=0xbffff964) at whatever.c:10
-- (gdb) command 1
-- Type commands for when breakpoint 1 is hit, one per line.
-- End with a line saying just "end".
-- >call mcheck(0)
-- >continue
-- >end
-- (gdb) ...
--
-- This will however only work if no initialization function of any
-- object involved calls any of the `malloc' functions since `mcheck'
-- must be called before the first such function.
--
--
-- - Function: enum mcheck_status mprobe (void *POINTER)
-- The `mprobe' function lets you explicitly check for inconsistencies
-- in a particular allocated block. You must have already called
-- `mcheck' at the beginning of the program, to do its occasional
-- checks; calling `mprobe' requests an additional consistency check
-- to be done at the time of the call.
--
-- The argument POINTER must be a pointer returned by `malloc' or
-- `realloc'. `mprobe' returns a value that says what inconsistency,
-- if any, was found. The values are described below.
--
-- - Data Type: enum mcheck_status
-- This enumerated type describes what kind of inconsistency was
-- detected in an allocated block, if any. Here are the possible
-- values:
--
-- `MCHECK_DISABLED'
-- `mcheck' was not called before the first allocation. No
-- consistency checking can be done.
--
-- `MCHECK_OK'
-- No inconsistency detected.
--
-- `MCHECK_HEAD'
-- The data immediately before the block was modified. This
-- commonly happens when an array index or pointer is
-- decremented too far.
--
-- `MCHECK_TAIL'
-- The data immediately after the block was modified. This
-- commonly happens when an array index or pointer is
-- incremented too far.
--
-- `MCHECK_FREE'
-- The block was already freed.
--
-- Another possibility to check for and guard against bugs in the use of
--`malloc', `realloc' and `free' is to set the environment variable
--`MALLOC_CHECK_'. When `MALLOC_CHECK_' is set, a special (less
--efficient) implementation is used which is designed to be tolerant
--against simple errors, such as double calls of `free' with the same
--argument, or overruns of a single byte (off-by-one bugs). Not all such
--errors can be protected against, however, and memory leaks can result.
--If `MALLOC_CHECK_' is set to `0', any detected heap corruption is
--silently ignored; if set to `1', a diagnostic is printed on `stderr';
--if set to `2', `abort' is called immediately. This can be useful
--because otherwise a crash may happen much later, and the true cause for
--the problem is then very hard to track down.
--
-- There is one problem with `MALLOC_CHECK_': in SUID or SGID binaries
--it could possibly be exploited since diverging from the normal programs
--behavior it now writes something to the standard error descriptor.
--Therefore the use of `MALLOC_CHECK_' is disabled by default for SUID
--and SGID binaries. It can be enabled again by the system administrator
--by adding a file `/etc/suid-debug' (the content is not important it
--could be empty).
--
-- So, what's the difference between using `MALLOC_CHECK_' and linking
--with `-lmcheck'? `MALLOC_CHECK_' is orthogonal with respect to
--`-lmcheck'. `-lmcheck' has been added for backward compatibility.
--Both `MALLOC_CHECK_' and `-lmcheck' should uncover the same bugs - but
--using `MALLOC_CHECK_' you don't need to recompile your application.
--
--
--File: libc.info, Node: Hooks for Malloc, Next: Statistics of Malloc, Prev: Heap Consistency Checking, Up: Unconstrained Allocation
--
--Memory Allocation Hooks
--.......................
--
-- The GNU C library lets you modify the behavior of `malloc',
--`realloc', and `free' by specifying appropriate hook functions. You
--can use these hooks to help you debug programs that use dynamic memory
--allocation, for example.
--
-- The hook variables are declared in `malloc.h'.
--
-- - Variable: __malloc_hook
-- The value of this variable is a pointer to the function that
-- `malloc' uses whenever it is called. You should define this
-- function to look like `malloc'; that is, like:
--
-- void *FUNCTION (size_t SIZE, const void *CALLER)
--
-- The value of CALLER is the return address found on the stack when
-- the `malloc' function was called. This value allows you to trace
-- the memory consumption of the program.
--
-- - Variable: __realloc_hook
-- The value of this variable is a pointer to function that `realloc'
-- uses whenever it is called. You should define this function to
-- look like `realloc'; that is, like:
--
-- void *FUNCTION (void *PTR, size_t SIZE, const void *CALLER)
--
-- The value of CALLER is the return address found on the stack when
-- the `realloc' function was called. This value allows you to trace
-- the memory consumption of the program.
--
-- - Variable: __free_hook
-- The value of this variable is a pointer to function that `free'
-- uses whenever it is called. You should define this function to
-- look like `free'; that is, like:
--
-- void FUNCTION (void *PTR, const void *CALLER)
--
-- The value of CALLER is the return address found on the stack when
-- the `free' function was called. This value allows you to trace the
-- memory consumption of the program.
--
-- - Variable: __memalign_hook
-- The value of this variable is a pointer to function that `memalign'
-- uses whenever it is called. You should define this function to
-- look like `memalign'; that is, like:
--
-- void *FUNCTION (size_t ALIGNMENT, size_t SIZE, const void *CALLER)
--
-- The value of CALLER is the return address found on the stack when
-- the `memalign' function was called. This value allows you to
-- trace the memory consumption of the program.
--
-- You must make sure that the function you install as a hook for one of
--these functions does not call that function recursively without
--restoring the old value of the hook first! Otherwise, your program
--will get stuck in an infinite recursion. Before calling the function
--recursively, one should make sure to restore all the hooks to their
--previous value. When coming back from the recursive call, all the
--hooks should be resaved since a hook might modify itself.
--
-- - Variable: __malloc_initialize_hook
-- The value of this variable is a pointer to a function that is
-- called once when the malloc implementation is initialized. This
-- is a weak variable, so it can be overridden in the application
-- with a definition like the following:
--
-- void (*__MALLOC_INITIALIZE_HOOK) (void) = my_init_hook;
--
-- An issue to look out for is the time at which the malloc hook
--functions can be safely installed. If the hook functions call the
--malloc-related functions recursively, it is necessary that malloc has
--already properly initialized itself at the time when `__malloc_hook'
--etc. is assigned to. On the other hand, if the hook functions provide a
--complete malloc implementation of their own, it is vital that the hooks
--are assigned to _before_ the very first `malloc' call has completed,
--because otherwise a chunk obtained from the ordinary, un-hooked malloc
--may later be handed to `__free_hook', for example.
--
-- In both cases, the problem can be solved by setting up the hooks from
--within a user-defined function pointed to by
--`__malloc_initialize_hook'--then the hooks will be set up safely at the
--right time.
--
-- Here is an example showing how to use `__malloc_hook' and
--`__free_hook' properly. It installs a function that prints out
--information every time `malloc' or `free' is called. We just assume
--here that `realloc' and `memalign' are not used in our program.
--
-- /* Prototypes for __malloc_hook, __free_hook */
-- #include <malloc.h>
--
-- /* Prototypes for our hooks. */
-- static void *my_init_hook (void);
-- static void *my_malloc_hook (size_t, const void *);
-- static void my_free_hook (void*, const void *);
--
-- /* Override initializing hook from the C library. */
-- void (*__malloc_initialize_hook) (void) = my_init_hook;
--
-- static void
-- my_init_hook (void)
-- {
-- old_malloc_hook = __malloc_hook;
-- old_free_hook = __free_hook;
-- __malloc_hook = my_malloc_hook;
-- __free_hook = my_free_hook;
-- }
--
-- static void *
-- my_malloc_hook (size_t size, const void *caller)
-- {
-- void *result;
-- /* Restore all old hooks */
-- __malloc_hook = old_malloc_hook;
-- __free_hook = old_free_hook;
-- /* Call recursively */
-- result = malloc (size);
-- /* Save underlying hooks */
-- old_malloc_hook = __malloc_hook;
-- old_free_hook = __free_hook;
-- /* `printf' might call `malloc', so protect it too. */
-- printf ("malloc (%u) returns %p\n", (unsigned int) size, result);
-- /* Restore our own hooks */
-- __malloc_hook = my_malloc_hook;
-- __free_hook = my_free_hook;
-- return result;
-- }
--
-- static void *
-- my_free_hook (void *ptr, const void *caller)
-- {
-- /* Restore all old hooks */
-- __malloc_hook = old_malloc_hook;
-- __free_hook = old_free_hook;
-- /* Call recursively */
-- free (ptr);
-- /* Save underlying hooks */
-- old_malloc_hook = __malloc_hook;
-- old_free_hook = __free_hook;
-- /* `printf' might call `free', so protect it too. */
-- printf ("freed pointer %p\n", ptr);
-- /* Restore our own hooks */
-- __malloc_hook = my_malloc_hook;
-- __free_hook = my_free_hook;
-- }
--
-- main ()
-- {
-- ...
-- }
--
-- The `mcheck' function (*note Heap Consistency Checking::) works by
--installing such hooks.
--
--
--File: libc.info, Node: Statistics of Malloc, Next: Summary of Malloc, Prev: Hooks for Malloc, Up: Unconstrained Allocation
--
--Statistics for Memory Allocation with `malloc'
--..............................................
--
-- You can get information about dynamic memory allocation by calling
--the `mallinfo' function. This function and its associated data type
--are declared in `malloc.h'; they are an extension of the standard
--SVID/XPG version.
--
-- - Data Type: struct mallinfo
-- This structure type is used to return information about the dynamic
-- memory allocator. It contains the following members:
--
-- `int arena'
-- This is the total size of memory allocated with `sbrk' by
-- `malloc', in bytes.
--
-- `int ordblks'
-- This is the number of chunks not in use. (The memory
-- allocator internally gets chunks of memory from the operating
-- system, and then carves them up to satisfy individual
-- `malloc' requests; see *Note Efficiency and Malloc::.)
--
-- `int smblks'
-- This field is unused.
--
-- `int hblks'
-- This is the total number of chunks allocated with `mmap'.
--
-- `int hblkhd'
-- This is the total size of memory allocated with `mmap', in
-- bytes.
--
-- `int usmblks'
-- This field is unused.
--
-- `int fsmblks'
-- This field is unused.
--
-- `int uordblks'
-- This is the total size of memory occupied by chunks handed
-- out by `malloc'.
--
-- `int fordblks'
-- This is the total size of memory occupied by free (not in
-- use) chunks.
--
-- `int keepcost'
-- This is the size of the top-most releasable chunk that
-- normally borders the end of the heap (i.e. the high end of
-- the virtual address space's data segment).
--
--
-- - Function: struct mallinfo mallinfo (void)
-- This function returns information about the current dynamic memory
-- usage in a structure of type `struct mallinfo'.
--
--
--File: libc.info, Node: Summary of Malloc, Prev: Statistics of Malloc, Up: Unconstrained Allocation
--
--Summary of `malloc'-Related Functions
--.....................................
--
-- Here is a summary of the functions that work with `malloc':
--
--`void *malloc (size_t SIZE)'
-- Allocate a block of SIZE bytes. *Note Basic Allocation::.
--
--`void free (void *ADDR)'
-- Free a block previously allocated by `malloc'. *Note Freeing
-- after Malloc::.
--
--`void *realloc (void *ADDR, size_t SIZE)'
-- Make a block previously allocated by `malloc' larger or smaller,
-- possibly by copying it to a new location. *Note Changing Block
-- Size::.
--
--`void *calloc (size_t COUNT, size_t ELTSIZE)'
-- Allocate a block of COUNT * ELTSIZE bytes using `malloc', and set
-- its contents to zero. *Note Allocating Cleared Space::.
--
--`void *valloc (size_t SIZE)'
-- Allocate a block of SIZE bytes, starting on a page boundary.
-- *Note Aligned Memory Blocks::.
--
--`void *memalign (size_t SIZE, size_t BOUNDARY)'
-- Allocate a block of SIZE bytes, starting on an address that is a
-- multiple of BOUNDARY. *Note Aligned Memory Blocks::.
--
--`int mallopt (int PARAM, int VALUE)'
-- Adjust a tunable parameter. *Note Malloc Tunable Parameters::.
--
--`int mcheck (void (*ABORTFN) (void))'
-- Tell `malloc' to perform occasional consistency checks on
-- dynamically allocated memory, and to call ABORTFN when an
-- inconsistency is found. *Note Heap Consistency Checking::.
--
--`void *(*__malloc_hook) (size_t SIZE, const void *CALLER)'
-- A pointer to a function that `malloc' uses whenever it is called.
--
--`void *(*__realloc_hook) (void *PTR, size_t SIZE, const void *CALLER)'
-- A pointer to a function that `realloc' uses whenever it is called.
--
--`void (*__free_hook) (void *PTR, const void *CALLER)'
-- A pointer to a function that `free' uses whenever it is called.
--
--`void (*__memalign_hook) (size_t SIZE, size_t ALIGNMENT, const void *CALLER)'
-- A pointer to a function that `memalign' uses whenever it is called.
--
--`struct mallinfo mallinfo (void)'
-- Return information about the current dynamic memory usage. *Note
-- Statistics of Malloc::.
--
--
--File: libc.info, Node: Allocation Debugging, Next: Obstacks, Prev: Unconstrained Allocation, Up: Memory Allocation
--
--Allocation Debugging
----------------------
--
-- A complicated task when programming with languages which do not use
--garbage collected dynamic memory allocation is to find memory leaks.
--Long running programs must assure that dynamically allocated objects are
--freed at the end of their lifetime. If this does not happen the system
--runs out of memory, sooner or later.
--
-- The `malloc' implementation in the GNU C library provides some
--simple means to detect such leaks and obtain some information to find
--the location. To do this the application must be started in a special
--mode which is enabled by an environment variable. There are no speed
--penalties for the program if the debugging mode is not enabled.
--
--* Menu:
--
--* Tracing malloc:: How to install the tracing functionality.
--* Using the Memory Debugger:: Example programs excerpts.
--* Tips for the Memory Debugger:: Some more or less clever ideas.
--* Interpreting the traces:: What do all these lines mean?
--
--
--File: libc.info, Node: Tracing malloc, Next: Using the Memory Debugger, Up: Allocation Debugging
--
--How to install the tracing functionality
--........................................
--
-- - Function: void mtrace (void)
-- When the `mtrace' function is called it looks for an environment
-- variable named `MALLOC_TRACE'. This variable is supposed to
-- contain a valid file name. The user must have write access. If
-- the file already exists it is truncated. If the environment
-- variable is not set or it does not name a valid file which can be
-- opened for writing nothing is done. The behavior of `malloc' etc.
-- is not changed. For obvious reasons this also happens if the
-- application is installed with the SUID or SGID bit set.
--
-- If the named file is successfully opened, `mtrace' installs special
-- handlers for the functions `malloc', `realloc', and `free' (*note
-- Hooks for Malloc::). From then on, all uses of these functions
-- are traced and protocolled into the file. There is now of course
-- a speed penalty for all calls to the traced functions so tracing
-- should not be enabled during normal use.
--
-- This function is a GNU extension and generally not available on
-- other systems. The prototype can be found in `mcheck.h'.
--
-- - Function: void muntrace (void)
-- The `muntrace' function can be called after `mtrace' was used to
-- enable tracing the `malloc' calls. If no (successful) call of
-- `mtrace' was made `muntrace' does nothing.
--
-- Otherwise it deinstalls the handlers for `malloc', `realloc', and
-- `free' and then closes the protocol file. No calls are
-- protocolled anymore and the program runs again at full speed.
--
-- This function is a GNU extension and generally not available on
-- other systems. The prototype can be found in `mcheck.h'.
--
--
--File: libc.info, Node: Using the Memory Debugger, Next: Tips for the Memory Debugger, Prev: Tracing malloc, Up: Allocation Debugging
--
--Example program excerpts
--........................
--
-- Even though the tracing functionality does not influence the runtime
--behavior of the program it is not a good idea to call `mtrace' in all
--programs. Just imagine that you debug a program using `mtrace' and all
--other programs used in the debugging session also trace their `malloc'
--calls. The output file would be the same for all programs and thus is
--unusable. Therefore one should call `mtrace' only if compiled for
--debugging. A program could therefore start like this:
--
-- #include <mcheck.h>
--
-- int
-- main (int argc, char *argv[])
-- {
-- #ifdef DEBUGGING
-- mtrace ();
-- #endif
-- ...
-- }
--
-- This is all what is needed if you want to trace the calls during the
--whole runtime of the program. Alternatively you can stop the tracing at
--any time with a call to `muntrace'. It is even possible to restart the
--tracing again with a new call to `mtrace'. But this can cause
--unreliable results since there may be calls of the functions which are
--not called. Please note that not only the application uses the traced
--functions, also libraries (including the C library itself) use these
--functions.
--
-- This last point is also why it is no good idea to call `muntrace'
--before the program terminated. The libraries are informed about the
--termination of the program only after the program returns from `main'
--or calls `exit' and so cannot free the memory they use before this time.
--
-- So the best thing one can do is to call `mtrace' as the very first
--function in the program and never call `muntrace'. So the program
--traces almost all uses of the `malloc' functions (except those calls
--which are executed by constructors of the program or used libraries).
--
--
--File: libc.info, Node: Tips for the Memory Debugger, Next: Interpreting the traces, Prev: Using the Memory Debugger, Up: Allocation Debugging
--
--Some more or less clever ideas
--..............................
--
-- You know the situation. The program is prepared for debugging and in
--all debugging sessions it runs well. But once it is started without
--debugging the error shows up. A typical example is a memory leak that
--becomes visible only when we turn off the debugging. If you foresee
--such situations you can still win. Simply use something equivalent to
--the following little program:
--
-- #include <mcheck.h>
-- #include <signal.h>
--
-- static void
-- enable (int sig)
-- {
-- mtrace ();
-- signal (SIGUSR1, enable);
-- }
--
-- static void
-- disable (int sig)
-- {
-- muntrace ();
-- signal (SIGUSR2, disable);
-- }
--
-- int
-- main (int argc, char *argv[])
-- {
-- ...
--
-- signal (SIGUSR1, enable);
-- signal (SIGUSR2, disable);
--
-- ...
-- }
--
-- I.e., the user can start the memory debugger any time s/he wants if
--the program was started with `MALLOC_TRACE' set in the environment.
--The output will of course not show the allocations which happened before
--the first signal but if there is a memory leak this will show up
--nevertheless.
--
--
--File: libc.info, Node: Interpreting the traces, Prev: Tips for the Memory Debugger, Up: Allocation Debugging
--
--Interpreting the traces
--.......................
--
-- If you take a look at the output it will look similar to this:
--
-- = Start
-- [0x8048209] - 0x8064cc8
-- [0x8048209] - 0x8064ce0
-- [0x8048209] - 0x8064cf8
-- [0x80481eb] + 0x8064c48 0x14
-- [0x80481eb] + 0x8064c60 0x14
-- [0x80481eb] + 0x8064c78 0x14
-- [0x80481eb] + 0x8064c90 0x14
-- = End
--
-- What this all means is not really important since the trace file is
--not meant to be read by a human. Therefore no attention is given to
--readability. Instead there is a program which comes with the GNU C
--library which interprets the traces and outputs a summary in an
--user-friendly way. The program is called `mtrace' (it is in fact a
--Perl script) and it takes one or two arguments. In any case the name of
--the file with the trace output must be specified. If an optional
--argument precedes the name of the trace file this must be the name of
--the program which generated the trace.
--
-- drepper$ mtrace tst-mtrace log
-- No memory leaks.
--
-- In this case the program `tst-mtrace' was run and it produced a
--trace file `log'. The message printed by `mtrace' shows there are no
--problems with the code, all allocated memory was freed afterwards.
--
-- If we call `mtrace' on the example trace given above we would get a
--different outout:
--
-- drepper$ mtrace errlog
-- - 0x08064cc8 Free 2 was never alloc'd 0x8048209
-- - 0x08064ce0 Free 3 was never alloc'd 0x8048209
-- - 0x08064cf8 Free 4 was never alloc'd 0x8048209
--
-- Memory not freed:
-- -----------------
-- Address Size Caller
-- 0x08064c48 0x14 at 0x80481eb
-- 0x08064c60 0x14 at 0x80481eb
-- 0x08064c78 0x14 at 0x80481eb
-- 0x08064c90 0x14 at 0x80481eb
--
-- We have called `mtrace' with only one argument and so the script has
--no chance to find out what is meant with the addresses given in the
--trace. We can do better:
--
-- drepper$ mtrace tst errlog
-- - 0x08064cc8 Free 2 was never alloc'd /home/drepper/tst.c:39
-- - 0x08064ce0 Free 3 was never alloc'd /home/drepper/tst.c:39
-- - 0x08064cf8 Free 4 was never alloc'd /home/drepper/tst.c:39
--
-- Memory not freed:
-- -----------------
-- Address Size Caller
-- 0x08064c48 0x14 at /home/drepper/tst.c:33
-- 0x08064c60 0x14 at /home/drepper/tst.c:33
-- 0x08064c78 0x14 at /home/drepper/tst.c:33
-- 0x08064c90 0x14 at /home/drepper/tst.c:33
--
-- Suddenly the output makes much more sense and the user can see
--immediately where the function calls causing the trouble can be found.
--
-- Interpreting this output is not complicated. There are at most two
--different situations being detected. First, `free' was called for
--pointers which were never returned by one of the allocation functions.
--This is usually a very bad problem and what this looks like is shown in
--the first three lines of the output. Situations like this are quite
--rare and if they appear they show up very drastically: the program
--normally crashes.
--
-- The other situation which is much harder to detect are memory leaks.
--As you can see in the output the `mtrace' function collects all this
--information and so can say that the program calls an allocation function
--from line 33 in the source file `/home/drepper/tst-mtrace.c' four times
--without freeing this memory before the program terminates. Whether
--this is a real problem remains to be investigated.
--
--
--File: libc.info, Node: Obstacks, Next: Variable Size Automatic, Prev: Allocation Debugging, Up: Memory Allocation
--
--Obstacks
----------
--
-- An "obstack" is a pool of memory containing a stack of objects. You
--can create any number of separate obstacks, and then allocate objects in
--specified obstacks. Within each obstack, the last object allocated must
--always be the first one freed, but distinct obstacks are independent of
--each other.
--
-- Aside from this one constraint of order of freeing, obstacks are
--totally general: an obstack can contain any number of objects of any
--size. They are implemented with macros, so allocation is usually very
--fast as long as the objects are usually small. And the only space
--overhead per object is the padding needed to start each object on a
--suitable boundary.
--
--* Menu:
--
--* Creating Obstacks:: How to declare an obstack in your program.
--* Preparing for Obstacks:: Preparations needed before you can
-- use obstacks.
--* Allocation in an Obstack:: Allocating objects in an obstack.
--* Freeing Obstack Objects:: Freeing objects in an obstack.
--* Obstack Functions:: The obstack functions are both
-- functions and macros.
--* Growing Objects:: Making an object bigger by stages.
--* Extra Fast Growing:: Extra-high-efficiency (though more
-- complicated) growing objects.
--* Status of an Obstack:: Inquiries about the status of an obstack.
--* Obstacks Data Alignment:: Controlling alignment of objects in obstacks.
--* Obstack Chunks:: How obstacks obtain and release chunks;
-- efficiency considerations.
--* Summary of Obstacks::
--
--
--File: libc.info, Node: Creating Obstacks, Next: Preparing for Obstacks, Up: Obstacks
--
--Creating Obstacks
--.................
--
-- The utilities for manipulating obstacks are declared in the header
--file `obstack.h'.
--
-- - Data Type: struct obstack
-- An obstack is represented by a data structure of type `struct
-- obstack'. This structure has a small fixed size; it records the
-- status of the obstack and how to find the space in which objects
-- are allocated. It does not contain any of the objects themselves.
-- You should not try to access the contents of the structure
-- directly; use only the functions described in this chapter.
--
-- You can declare variables of type `struct obstack' and use them as
--obstacks, or you can allocate obstacks dynamically like any other kind
--of object. Dynamic allocation of obstacks allows your program to have a
--variable number of different stacks. (You can even allocate an obstack
--structure in another obstack, but this is rarely useful.)
--
-- All the functions that work with obstacks require you to specify
--which obstack to use. You do this with a pointer of type `struct
--obstack *'. In the following, we often say "an obstack" when strictly
--speaking the object at hand is such a pointer.
--
-- The objects in the obstack are packed into large blocks called
--"chunks". The `struct obstack' structure points to a chain of the
--chunks currently in use.
--
-- The obstack library obtains a new chunk whenever you allocate an
--object that won't fit in the previous chunk. Since the obstack library
--manages chunks automatically, you don't need to pay much attention to
--them, but you do need to supply a function which the obstack library
--should use to get a chunk. Usually you supply a function which uses
--`malloc' directly or indirectly. You must also supply a function to
--free a chunk. These matters are described in the following section.
--
--
--File: libc.info, Node: Preparing for Obstacks, Next: Allocation in an Obstack, Prev: Creating Obstacks, Up: Obstacks
--
--Preparing for Using Obstacks
--............................
--
-- Each source file in which you plan to use the obstack functions must
--include the header file `obstack.h', like this:
--
-- #include <obstack.h>
--
-- Also, if the source file uses the macro `obstack_init', it must
--declare or define two functions or macros that will be called by the
--obstack library. One, `obstack_chunk_alloc', is used to allocate the
--chunks of memory into which objects are packed. The other,
--`obstack_chunk_free', is used to return chunks when the objects in them
--are freed. These macros should appear before any use of obstacks in
--the source file.
--
-- Usually these are defined to use `malloc' via the intermediary
--`xmalloc' (*note Unconstrained Allocation::). This is done with the
--following pair of macro definitions:
--
-- #define obstack_chunk_alloc xmalloc
-- #define obstack_chunk_free free
--
--Though the memory you get using obstacks really comes from `malloc',
--using obstacks is faster because `malloc' is called less often, for
--larger blocks of memory. *Note Obstack Chunks::, for full details.
--
-- At run time, before the program can use a `struct obstack' object as
--an obstack, it must initialize the obstack by calling `obstack_init'.
--
-- - Function: int obstack_init (struct obstack *OBSTACK-PTR)
-- Initialize obstack OBSTACK-PTR for allocation of objects. This
-- function calls the obstack's `obstack_chunk_alloc' function. If
-- allocation of memory fails, the function pointed to by
-- `obstack_alloc_failed_handler' is called. The `obstack_init'
-- function always returns 1 (Compatibility notice: Former versions of
-- obstack returned 0 if allocation failed).
--
-- Here are two examples of how to allocate the space for an obstack and
--initialize it. First, an obstack that is a static variable:
--
-- static struct obstack myobstack;
-- ...
-- obstack_init (&myobstack);
--
--Second, an obstack that is itself dynamically allocated:
--
-- struct obstack *myobstack_ptr
-- = (struct obstack *) xmalloc (sizeof (struct obstack));
--
-- obstack_init (myobstack_ptr);
--
-- - Variable: obstack_alloc_failed_handler
-- The value of this variable is a pointer to a function that
-- `obstack' uses when `obstack_chunk_alloc' fails to allocate
-- memory. The default action is to print a message and abort. You
-- should supply a function that either calls `exit' (*note Program
-- Termination::) or `longjmp' (*note Non-Local Exits::) and doesn't
-- return.
--
-- void my_obstack_alloc_failed (void)
-- ...
-- obstack_alloc_failed_handler = &my_obstack_alloc_failed;
--
--
--
--File: libc.info, Node: Allocation in an Obstack, Next: Freeing Obstack Objects, Prev: Preparing for Obstacks, Up: Obstacks
--
--Allocation in an Obstack
--........................
--
-- The most direct way to allocate an object in an obstack is with
--`obstack_alloc', which is invoked almost like `malloc'.
--
-- - Function: void * obstack_alloc (struct obstack *OBSTACK-PTR, int
-- SIZE)
-- This allocates an uninitialized block of SIZE bytes in an obstack
-- and returns its address. Here OBSTACK-PTR specifies which obstack
-- to allocate the block in; it is the address of the `struct obstack'
-- object which represents the obstack. Each obstack function or
-- macro requires you to specify an OBSTACK-PTR as the first argument.
--
-- This function calls the obstack's `obstack_chunk_alloc' function if
-- it needs to allocate a new chunk of memory; it calls
-- `obstack_alloc_failed_handler' if allocation of memory by
-- `obstack_chunk_alloc' failed.
--
-- For example, here is a function that allocates a copy of a string STR
--in a specific obstack, which is in the variable `string_obstack':
--
-- struct obstack string_obstack;
--
-- char *
-- copystring (char *string)
-- {
-- size_t len = strlen (string) + 1;
-- char *s = (char *) obstack_alloc (&string_obstack, len);
-- memcpy (s, string, len);
-- return s;
-- }
--
-- To allocate a block with specified contents, use the function
--`obstack_copy', declared like this:
--
-- - Function: void * obstack_copy (struct obstack *OBSTACK-PTR, void
-- *ADDRESS, int SIZE)
-- This allocates a block and initializes it by copying SIZE bytes of
-- data starting at ADDRESS. It calls `obstack_alloc_failed_handler'
-- if allocation of memory by `obstack_chunk_alloc' failed.
--
-- - Function: void * obstack_copy0 (struct obstack *OBSTACK-PTR, void
-- *ADDRESS, int SIZE)
-- Like `obstack_copy', but appends an extra byte containing a null
-- character. This extra byte is not counted in the argument SIZE.
--
-- The `obstack_copy0' function is convenient for copying a sequence of
--characters into an obstack as a null-terminated string. Here is an
--example of its use:
--
-- char *
-- obstack_savestring (char *addr, int size)
-- {
-- return obstack_copy0 (&myobstack, addr, size);
-- }
--
--Contrast this with the previous example of `savestring' using `malloc'
--(*note Basic Allocation::).
--
--
--File: libc.info, Node: Freeing Obstack Objects, Next: Obstack Functions, Prev: Allocation in an Obstack, Up: Obstacks
--
--Freeing Objects in an Obstack
--.............................
--
-- To free an object allocated in an obstack, use the function
--`obstack_free'. Since the obstack is a stack of objects, freeing one
--object automatically frees all other objects allocated more recently in
--the same obstack.
--
-- - Function: void obstack_free (struct obstack *OBSTACK-PTR, void
-- *OBJECT)
-- If OBJECT is a null pointer, everything allocated in the obstack
-- is freed. Otherwise, OBJECT must be the address of an object
-- allocated in the obstack. Then OBJECT is freed, along with
-- everything allocated in OBSTACK since OBJECT.
--
-- Note that if OBJECT is a null pointer, the result is an
--uninitialized obstack. To free all memory in an obstack but leave it
--valid for further allocation, call `obstack_free' with the address of
--the first object allocated on the obstack:
--
-- obstack_free (obstack_ptr, first_object_allocated_ptr);
--
-- Recall that the objects in an obstack are grouped into chunks. When
--all the objects in a chunk become free, the obstack library
--automatically frees the chunk (*note Preparing for Obstacks::). Then
--other obstacks, or non-obstack allocation, can reuse the space of the
--chunk.
--
--
--File: libc.info, Node: Obstack Functions, Next: Growing Objects, Prev: Freeing Obstack Objects, Up: Obstacks
--
--Obstack Functions and Macros
--............................
--
-- The interfaces for using obstacks may be defined either as functions
--or as macros, depending on the compiler. The obstack facility works
--with all C compilers, including both ISO C and traditional C, but there
--are precautions you must take if you plan to use compilers other than
--GNU C.
--
-- If you are using an old-fashioned non-ISO C compiler, all the obstack
--"functions" are actually defined only as macros. You can call these
--macros like functions, but you cannot use them in any other way (for
--example, you cannot take their address).
--
-- Calling the macros requires a special precaution: namely, the first
--operand (the obstack pointer) may not contain any side effects, because
--it may be computed more than once. For example, if you write this:
--
-- obstack_alloc (get_obstack (), 4);
--
--you will find that `get_obstack' may be called several times. If you
--use `*obstack_list_ptr++' as the obstack pointer argument, you will get
--very strange results since the incrementation may occur several times.
--
-- In ISO C, each function has both a macro definition and a function
--definition. The function definition is used if you take the address of
--the function without calling it. An ordinary call uses the macro
--definition by default, but you can request the function definition
--instead by writing the function name in parentheses, as shown here:
--
-- char *x;
-- void *(*funcp) ();
-- /* Use the macro. */
-- x = (char *) obstack_alloc (obptr, size);
-- /* Call the function. */
-- x = (char *) (obstack_alloc) (obptr, size);
-- /* Take the address of the function. */
-- funcp = obstack_alloc;
--
--This is the same situation that exists in ISO C for the standard library
--functions. *Note Macro Definitions::.
--
-- *Warning:* When you do use the macros, you must observe the
--precaution of avoiding side effects in the first operand, even in ISO C.
--
-- If you use the GNU C compiler, this precaution is not necessary,
--because various language extensions in GNU C permit defining the macros
--so as to compute each argument only once.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-40 glibc-2.3.2-200304020432/manual/libc.info-40
---- glibc-2.3.2/manual/libc.info-40 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-40 Thu Jan 1 01:00:00 1970
-@@ -1,1192 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Signals in Handler, Next: Merged Signals, Prev: Longjmp in Handler, Up: Defining Handlers
--
--Signals Arriving While a Handler Runs
---------------------------------------
--
-- What happens if another signal arrives while your signal handler
--function is running?
--
-- When the handler for a particular signal is invoked, that signal is
--automatically blocked until the handler returns. That means that if two
--signals of the same kind arrive close together, the second one will be
--held until the first has been handled. (The handler can explicitly
--unblock the signal using `sigprocmask', if you want to allow more
--signals of this type to arrive; see *Note Process Signal Mask::.)
--
-- However, your handler can still be interrupted by delivery of another
--kind of signal. To avoid this, you can use the `sa_mask' member of the
--action structure passed to `sigaction' to explicitly specify which
--signals should be blocked while the signal handler runs. These signals
--are in addition to the signal for which the handler was invoked, and
--any other signals that are normally blocked by the process. *Note
--Blocking for Handler::.
--
-- When the handler returns, the set of blocked signals is restored to
--the value it had before the handler ran. So using `sigprocmask' inside
--the handler only affects what signals can arrive during the execution of
--the handler itself, not what signals can arrive once the handler
--returns.
--
-- *Portability Note:* Always use `sigaction' to establish a handler
--for a signal that you expect to receive asynchronously, if you want
--your program to work properly on System V Unix. On this system, the
--handling of a signal whose handler was established with `signal'
--automatically sets the signal's action back to `SIG_DFL', and the
--handler must re-establish itself each time it runs. This practice,
--while inconvenient, does work when signals cannot arrive in succession.
--However, if another signal can arrive right away, it may arrive before
--the handler can re-establish itself. Then the second signal would
--receive the default handling, which could terminate the process.
--
--
--File: libc.info, Node: Merged Signals, Next: Nonreentrancy, Prev: Signals in Handler, Up: Defining Handlers
--
--Signals Close Together Merge into One
---------------------------------------
--
-- If multiple signals of the same type are delivered to your process
--before your signal handler has a chance to be invoked at all, the
--handler may only be invoked once, as if only a single signal had
--arrived. In effect, the signals merge into one. This situation can
--arise when the signal is blocked, or in a multiprocessing environment
--where the system is busy running some other processes while the signals
--are delivered. This means, for example, that you cannot reliably use a
--signal handler to count signals. The only distinction you can reliably
--make is whether at least one signal has arrived since a given time in
--the past.
--
-- Here is an example of a handler for `SIGCHLD' that compensates for
--the fact that the number of signals received may not equal the number of
--child processes that generate them. It assumes that the program keeps
--track of all the child processes with a chain of structures as follows:
--
-- struct process
-- {
-- struct process *next;
-- /* The process ID of this child. */
-- int pid;
-- /* The descriptor of the pipe or pseudo terminal
-- on which output comes from this child. */
-- int input_descriptor;
-- /* Nonzero if this process has stopped or terminated. */
-- sig_atomic_t have_status;
-- /* The status of this child; 0 if running,
-- otherwise a status value from `waitpid'. */
-- int status;
-- };
--
-- struct process *process_list;
--
-- This example also uses a flag to indicate whether signals have
--arrived since some time in the past--whenever the program last cleared
--it to zero.
--
-- /* Nonzero means some child's status has changed
-- so look at `process_list' for the details. */
-- int process_status_change;
--
-- Here is the handler itself:
--
-- void
-- sigchld_handler (int signo)
-- {
-- int old_errno = errno;
--
-- while (1) {
-- register int pid;
-- int w;
-- struct process *p;
--
-- /* Keep asking for a status until we get a definitive result. */
-- do
-- {
-- errno = 0;
-- pid = waitpid (WAIT_ANY, &w, WNOHANG | WUNTRACED);
-- }
-- while (pid <= 0 && errno == EINTR);
--
-- if (pid <= 0) {
-- /* A real failure means there are no more
-- stopped or terminated child processes, so return. */
-- errno = old_errno;
-- return;
-- }
--
-- /* Find the process that signaled us, and record its status. */
--
-- for (p = process_list; p; p = p->next)
-- if (p->pid == pid) {
-- p->status = w;
-- /* Indicate that the `status' field
-- has data to look at. We do this only after storing it. */
-- p->have_status = 1;
--
-- /* If process has terminated, stop waiting for its output. */
-- if (WIFSIGNALED (w) || WIFEXITED (w))
-- if (p->input_descriptor)
-- FD_CLR (p->input_descriptor, &input_wait_mask);
--
-- /* The program should check this flag from time to time
-- to see if there is any news in `process_list'. */
-- ++process_status_change;
-- }
--
-- /* Loop around to handle all the processes
-- that have something to tell us. */
-- }
-- }
--
-- Here is the proper way to check the flag `process_status_change':
--
-- if (process_status_change) {
-- struct process *p;
-- process_status_change = 0;
-- for (p = process_list; p; p = p->next)
-- if (p->have_status) {
-- ... Examine `p->status' ...
-- }
-- }
--
--It is vital to clear the flag before examining the list; otherwise, if a
--signal were delivered just before the clearing of the flag, and after
--the appropriate element of the process list had been checked, the status
--change would go unnoticed until the next signal arrived to set the flag
--again. You could, of course, avoid this problem by blocking the signal
--while scanning the list, but it is much more elegant to guarantee
--correctness by doing things in the right order.
--
-- The loop which checks process status avoids examining `p->status'
--until it sees that status has been validly stored. This is to make sure
--that the status cannot change in the middle of accessing it. Once
--`p->have_status' is set, it means that the child process is stopped or
--terminated, and in either case, it cannot stop or terminate again until
--the program has taken notice. *Note Atomic Usage::, for more
--information about coping with interruptions during accesses of a
--variable.
--
-- Here is another way you can test whether the handler has run since
--the last time you checked. This technique uses a counter which is never
--changed outside the handler. Instead of clearing the count, the program
--remembers the previous value and sees whether it has changed since the
--previous check. The advantage of this method is that different parts of
--the program can check independently, each part checking whether there
--has been a signal since that part last checked.
--
-- sig_atomic_t process_status_change;
--
-- sig_atomic_t last_process_status_change;
--
-- ...
-- {
-- sig_atomic_t prev = last_process_status_change;
-- last_process_status_change = process_status_change;
-- if (last_process_status_change != prev) {
-- struct process *p;
-- for (p = process_list; p; p = p->next)
-- if (p->have_status) {
-- ... Examine `p->status' ...
-- }
-- }
-- }
--
--
--File: libc.info, Node: Nonreentrancy, Next: Atomic Data Access, Prev: Merged Signals, Up: Defining Handlers
--
--Signal Handling and Nonreentrant Functions
--------------------------------------------
--
-- Handler functions usually don't do very much. The best practice is
--to write a handler that does nothing but set an external variable that
--the program checks regularly, and leave all serious work to the program.
--This is best because the handler can be called asynchronously, at
--unpredictable times--perhaps in the middle of a primitive function, or
--even between the beginning and the end of a C operator that requires
--multiple instructions. The data structures being manipulated might
--therefore be in an inconsistent state when the handler function is
--invoked. Even copying one `int' variable into another can take two
--instructions on most machines.
--
-- This means you have to be very careful about what you do in a signal
--handler.
--
-- * If your handler needs to access any global variables from your
-- program, declare those variables `volatile'. This tells the
-- compiler that the value of the variable might change
-- asynchronously, and inhibits certain optimizations that would be
-- invalidated by such modifications.
--
-- * If you call a function in the handler, make sure it is "reentrant"
-- with respect to signals, or else make sure that the signal cannot
-- interrupt a call to a related function.
--
-- A function can be non-reentrant if it uses memory that is not on the
--stack.
--
-- * If a function uses a static variable or a global variable, or a
-- dynamically-allocated object that it finds for itself, then it is
-- non-reentrant and any two calls to the function can interfere.
--
-- For example, suppose that the signal handler uses `gethostbyname'.
-- This function returns its value in a static object, reusing the
-- same object each time. If the signal happens to arrive during a
-- call to `gethostbyname', or even after one (while the program is
-- still using the value), it will clobber the value that the program
-- asked for.
--
-- However, if the program does not use `gethostbyname' or any other
-- function that returns information in the same object, or if it
-- always blocks signals around each use, then you are safe.
--
-- There are a large number of library functions that return values
-- in a fixed object, always reusing the same object in this fashion,
-- and all of them cause the same problem. Function descriptions in
-- this manual always mention this behavior.
--
-- * If a function uses and modifies an object that you supply, then it
-- is potentially non-reentrant; two calls can interfere if they use
-- the same object.
--
-- This case arises when you do I/O using streams. Suppose that the
-- signal handler prints a message with `fprintf'. Suppose that the
-- program was in the middle of an `fprintf' call using the same
-- stream when the signal was delivered. Both the signal handler's
-- message and the program's data could be corrupted, because both
-- calls operate on the same data structure--the stream itself.
--
-- However, if you know that the stream that the handler uses cannot
-- possibly be used by the program at a time when signals can arrive,
-- then you are safe. It is no problem if the program uses some
-- other stream.
--
-- * On most systems, `malloc' and `free' are not reentrant, because
-- they use a static data structure which records what memory blocks
-- are free. As a result, no library functions that allocate or free
-- memory are reentrant. This includes functions that allocate space
-- to store a result.
--
-- The best way to avoid the need to allocate memory in a handler is
-- to allocate in advance space for signal handlers to use.
--
-- The best way to avoid freeing memory in a handler is to flag or
-- record the objects to be freed, and have the program check from
-- time to time whether anything is waiting to be freed. But this
-- must be done with care, because placing an object on a chain is
-- not atomic, and if it is interrupted by another signal handler
-- that does the same thing, you could "lose" one of the objects.
--
-- * Any function that modifies `errno' is non-reentrant, but you can
-- correct for this: in the handler, save the original value of
-- `errno' and restore it before returning normally. This prevents
-- errors that occur within the signal handler from being confused
-- with errors from system calls at the point the program is
-- interrupted to run the handler.
--
-- This technique is generally applicable; if you want to call in a
-- handler a function that modifies a particular object in memory,
-- you can make this safe by saving and restoring that object.
--
-- * Merely reading from a memory object is safe provided that you can
-- deal with any of the values that might appear in the object at a
-- time when the signal can be delivered. Keep in mind that
-- assignment to some data types requires more than one instruction,
-- which means that the handler could run "in the middle of" an
-- assignment to the variable if its type is not atomic. *Note
-- Atomic Data Access::.
--
-- * Merely writing into a memory object is safe as long as a sudden
-- change in the value, at any time when the handler might run, will
-- not disturb anything.
--
--
--File: libc.info, Node: Atomic Data Access, Prev: Nonreentrancy, Up: Defining Handlers
--
--Atomic Data Access and Signal Handling
----------------------------------------
--
-- Whether the data in your application concerns atoms, or mere text,
--you have to be careful about the fact that access to a single datum is
--not necessarily "atomic". This means that it can take more than one
--instruction to read or write a single object. In such cases, a signal
--handler might be invoked in the middle of reading or writing the object.
--
-- There are three ways you can cope with this problem. You can use
--data types that are always accessed atomically; you can carefully
--arrange that nothing untoward happens if an access is interrupted, or
--you can block all signals around any access that had better not be
--interrupted (*note Blocking Signals::).
--
--* Menu:
--
--* Non-atomic Example:: A program illustrating interrupted access.
--* Types: Atomic Types. Data types that guarantee no interruption.
--* Usage: Atomic Usage. Proving that interruption is harmless.
--
--
--File: libc.info, Node: Non-atomic Example, Next: Atomic Types, Up: Atomic Data Access
--
--Problems with Non-Atomic Access
--...............................
--
-- Here is an example which shows what can happen if a signal handler
--runs in the middle of modifying a variable. (Interrupting the reading
--of a variable can also lead to paradoxical results, but here we only
--show writing.)
--
-- #include <signal.h>
-- #include <stdio.h>
--
-- struct two_words { int a, b; } memory;
--
-- void
-- handler(int signum)
-- {
-- printf ("%d,%d\n", memory.a, memory.b);
-- alarm (1);
-- }
--
-- int
-- main (void)
-- {
-- static struct two_words zeros = { 0, 0 }, ones = { 1, 1 };
-- signal (SIGALRM, handler);
-- memory = zeros;
-- alarm (1);
-- while (1)
-- {
-- memory = zeros;
-- memory = ones;
-- }
-- }
--
-- This program fills `memory' with zeros, ones, zeros, ones,
--alternating forever; meanwhile, once per second, the alarm signal
--handler prints the current contents. (Calling `printf' in the handler
--is safe in this program because it is certainly not being called outside
--the handler when the signal happens.)
--
-- Clearly, this program can print a pair of zeros or a pair of ones.
--But that's not all it can do! On most machines, it takes several
--instructions to store a new value in `memory', and the value is stored
--one word at a time. If the signal is delivered in between these
--instructions, the handler might find that `memory.a' is zero and
--`memory.b' is one (or vice versa).
--
-- On some machines it may be possible to store a new value in `memory'
--with just one instruction that cannot be interrupted. On these
--machines, the handler will always print two zeros or two ones.
--
--
--File: libc.info, Node: Atomic Types, Next: Atomic Usage, Prev: Non-atomic Example, Up: Atomic Data Access
--
--Atomic Types
--............
--
-- To avoid uncertainty about interrupting access to a variable, you can
--use a particular data type for which access is always atomic:
--`sig_atomic_t'. Reading and writing this data type is guaranteed to
--happen in a single instruction, so there's no way for a handler to run
--"in the middle" of an access.
--
-- The type `sig_atomic_t' is always an integer data type, but which
--one it is, and how many bits it contains, may vary from machine to
--machine.
--
-- - Data Type: sig_atomic_t
-- This is an integer data type. Objects of this type are always
-- accessed atomically.
--
-- In practice, you can assume that `int' and other integer types no
--longer than `int' are atomic. You can also assume that pointer types
--are atomic; that is very convenient. Both of these assumptions are
--true on all of the machines that the GNU C library supports and on all
--POSIX systems we know of.
--
--
--File: libc.info, Node: Atomic Usage, Prev: Atomic Types, Up: Atomic Data Access
--
--Atomic Usage Patterns
--.....................
--
-- Certain patterns of access avoid any problem even if an access is
--interrupted. For example, a flag which is set by the handler, and
--tested and cleared by the main program from time to time, is always safe
--even if access actually requires two instructions. To show that this is
--so, we must consider each access that could be interrupted, and show
--that there is no problem if it is interrupted.
--
-- An interrupt in the middle of testing the flag is safe because
--either it's recognized to be nonzero, in which case the precise value
--doesn't matter, or it will be seen to be nonzero the next time it's
--tested.
--
-- An interrupt in the middle of clearing the flag is no problem because
--either the value ends up zero, which is what happens if a signal comes
--in just before the flag is cleared, or the value ends up nonzero, and
--subsequent events occur as if the signal had come in just after the flag
--was cleared. As long as the code handles both of these cases properly,
--it can also handle a signal in the middle of clearing the flag. (This
--is an example of the sort of reasoning you need to do to figure out
--whether non-atomic usage is safe.)
--
-- Sometimes you can insure uninterrupted access to one object by
--protecting its use with another object, perhaps one whose type
--guarantees atomicity. *Note Merged Signals::, for an example.
--
--
--File: libc.info, Node: Interrupted Primitives, Next: Generating Signals, Prev: Defining Handlers, Up: Signal Handling
--
--Primitives Interrupted by Signals
--=================================
--
-- A signal can arrive and be handled while an I/O primitive such as
--`open' or `read' is waiting for an I/O device. If the signal handler
--returns, the system faces the question: what should happen next?
--
-- POSIX specifies one approach: make the primitive fail right away.
--The error code for this kind of failure is `EINTR'. This is flexible,
--but usually inconvenient. Typically, POSIX applications that use signal
--handlers must check for `EINTR' after each library function that can
--return it, in order to try the call again. Often programmers forget to
--check, which is a common source of error.
--
-- The GNU library provides a convenient way to retry a call after a
--temporary failure, with the macro `TEMP_FAILURE_RETRY':
--
-- - Macro: TEMP_FAILURE_RETRY (EXPRESSION)
-- This macro evaluates EXPRESSION once. If it fails and reports
-- error code `EINTR', `TEMP_FAILURE_RETRY' evaluates it again, and
-- over and over until the result is not a temporary failure.
--
-- The value returned by `TEMP_FAILURE_RETRY' is whatever value
-- EXPRESSION produced.
--
-- BSD avoids `EINTR' entirely and provides a more convenient approach:
--to restart the interrupted primitive, instead of making it fail. If
--you choose this approach, you need not be concerned with `EINTR'.
--
-- You can choose either approach with the GNU library. If you use
--`sigaction' to establish a signal handler, you can specify how that
--handler should behave. If you specify the `SA_RESTART' flag, return
--from that handler will resume a primitive; otherwise, return from that
--handler will cause `EINTR'. *Note Flags for Sigaction::.
--
-- Another way to specify the choice is with the `siginterrupt'
--function. *Note BSD Handler::.
--
-- When you don't specify with `sigaction' or `siginterrupt' what a
--particular handler should do, it uses a default choice. The default
--choice in the GNU library depends on the feature test macros you have
--defined. If you define `_BSD_SOURCE' or `_GNU_SOURCE' before calling
--`signal', the default is to resume primitives; otherwise, the default
--is to make them fail with `EINTR'. (The library contains alternate
--versions of the `signal' function, and the feature test macros
--determine which one you really call.) *Note Feature Test Macros::.
--
-- The description of each primitive affected by this issue lists
--`EINTR' among the error codes it can return.
--
-- There is one situation where resumption never happens no matter which
--choice you make: when a data-transfer function such as `read' or
--`write' is interrupted by a signal after transferring part of the data.
--In this case, the function returns the number of bytes already
--transferred, indicating partial success.
--
-- This might at first appear to cause unreliable behavior on
--record-oriented devices (including datagram sockets; *note Datagrams::),
--where splitting one `read' or `write' into two would read or write two
--records. Actually, there is no problem, because interruption after a
--partial transfer cannot happen on such devices; they always transfer an
--entire record in one burst, with no waiting once data transfer has
--started.
--
--
--File: libc.info, Node: Generating Signals, Next: Blocking Signals, Prev: Interrupted Primitives, Up: Signal Handling
--
--Generating Signals
--==================
--
-- Besides signals that are generated as a result of a hardware trap or
--interrupt, your program can explicitly send signals to itself or to
--another process.
--
--* Menu:
--
--* Signaling Yourself:: A process can send a signal to itself.
--* Signaling Another Process:: Send a signal to another process.
--* Permission for kill:: Permission for using `kill'.
--* Kill Example:: Using `kill' for Communication.
--
--
--File: libc.info, Node: Signaling Yourself, Next: Signaling Another Process, Up: Generating Signals
--
--Signaling Yourself
--------------------
--
-- A process can send itself a signal with the `raise' function. This
--function is declared in `signal.h'.
--
-- - Function: int raise (int SIGNUM)
-- The `raise' function sends the signal SIGNUM to the calling
-- process. It returns zero if successful and a nonzero value if it
-- fails. About the only reason for failure would be if the value of
-- SIGNUM is invalid.
--
-- - Function: int gsignal (int SIGNUM)
-- The `gsignal' function does the same thing as `raise'; it is
-- provided only for compatibility with SVID.
--
-- One convenient use for `raise' is to reproduce the default behavior
--of a signal that you have trapped. For instance, suppose a user of your
--program types the SUSP character (usually `C-z'; *note Special
--Characters::) to send it an interactive stop signal (`SIGTSTP'), and
--you want to clean up some internal data buffers before stopping. You
--might set this up like this:
--
-- #include <signal.h>
--
-- /* When a stop signal arrives, set the action back to the default
-- and then resend the signal after doing cleanup actions. */
--
-- void
-- tstp_handler (int sig)
-- {
-- signal (SIGTSTP, SIG_DFL);
-- /* Do cleanup actions here. */
-- ...
-- raise (SIGTSTP);
-- }
--
-- /* When the process is continued again, restore the signal handler. */
--
-- void
-- cont_handler (int sig)
-- {
-- signal (SIGCONT, cont_handler);
-- signal (SIGTSTP, tstp_handler);
-- }
--
-- /* Enable both handlers during program initialization. */
--
-- int
-- main (void)
-- {
-- signal (SIGCONT, cont_handler);
-- signal (SIGTSTP, tstp_handler);
-- ...
-- }
--
-- *Portability note:* `raise' was invented by the ISO C committee.
--Older systems may not support it, so using `kill' may be more portable.
--*Note Signaling Another Process::.
--
--
--File: libc.info, Node: Signaling Another Process, Next: Permission for kill, Prev: Signaling Yourself, Up: Generating Signals
--
--Signaling Another Process
---------------------------
--
-- The `kill' function can be used to send a signal to another process.
--In spite of its name, it can be used for a lot of things other than
--causing a process to terminate. Some examples of situations where you
--might want to send signals between processes are:
--
-- * A parent process starts a child to perform a task--perhaps having
-- the child running an infinite loop--and then terminates the child
-- when the task is no longer needed.
--
-- * A process executes as part of a group, and needs to terminate or
-- notify the other processes in the group when an error or other
-- event occurs.
--
-- * Two processes need to synchronize while working together.
--
-- This section assumes that you know a little bit about how processes
--work. For more information on this subject, see *Note Processes::.
--
-- The `kill' function is declared in `signal.h'.
--
-- - Function: int kill (pid_t PID, int SIGNUM)
-- The `kill' function sends the signal SIGNUM to the process or
-- process group specified by PID. Besides the signals listed in
-- *Note Standard Signals::, SIGNUM can also have a value of zero to
-- check the validity of the PID.
--
-- The PID specifies the process or process group to receive the
-- signal:
--
-- `PID > 0'
-- The process whose identifier is PID.
--
-- `PID == 0'
-- All processes in the same process group as the sender.
--
-- `PID < -1'
-- The process group whose identifier is -PID.
--
-- `PID == -1'
-- If the process is privileged, send the signal to all
-- processes except for some special system processes.
-- Otherwise, send the signal to all processes with the same
-- effective user ID.
--
-- A process can send a signal to itself with a call like
-- `kill (getpid(), SIGNUM)'. If `kill' is used by a process to send
-- a signal to itself, and the signal is not blocked, then `kill'
-- delivers at least one signal (which might be some other pending
-- unblocked signal instead of the signal SIGNUM) to that process
-- before it returns.
--
-- The return value from `kill' is zero if the signal can be sent
-- successfully. Otherwise, no signal is sent, and a value of `-1' is
-- returned. If PID specifies sending a signal to several processes,
-- `kill' succeeds if it can send the signal to at least one of them.
-- There's no way you can tell which of the processes got the signal
-- or whether all of them did.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINVAL'
-- The SIGNUM argument is an invalid or unsupported number.
--
-- `EPERM'
-- You do not have the privilege to send a signal to the process
-- or any of the processes in the process group named by PID.
--
-- `ESCRH'
-- The PID argument does not refer to an existing process or
-- group.
--
-- - Function: int killpg (int PGID, int SIGNUM)
-- This is similar to `kill', but sends signal SIGNUM to the process
-- group PGID. This function is provided for compatibility with BSD;
-- using `kill' to do this is more portable.
--
-- As a simple example of `kill', the call `kill (getpid (), SIG)' has
--the same effect as `raise (SIG)'.
--
--
--File: libc.info, Node: Permission for kill, Next: Kill Example, Prev: Signaling Another Process, Up: Generating Signals
--
--Permission for using `kill'
-----------------------------
--
-- There are restrictions that prevent you from using `kill' to send
--signals to any random process. These are intended to prevent antisocial
--behavior such as arbitrarily killing off processes belonging to another
--user. In typical use, `kill' is used to pass signals between parent,
--child, and sibling processes, and in these situations you normally do
--have permission to send signals. The only common exception is when you
--run a setuid program in a child process; if the program changes its
--real UID as well as its effective UID, you may not have permission to
--send a signal. The `su' program does this.
--
-- Whether a process has permission to send a signal to another process
--is determined by the user IDs of the two processes. This concept is
--discussed in detail in *Note Process Persona::.
--
-- Generally, for a process to be able to send a signal to another
--process, either the sending process must belong to a privileged user
--(like `root'), or the real or effective user ID of the sending process
--must match the real or effective user ID of the receiving process. If
--the receiving process has changed its effective user ID from the
--set-user-ID mode bit on its process image file, then the owner of the
--process image file is used in place of its current effective user ID.
--In some implementations, a parent process might be able to send signals
--to a child process even if the user ID's don't match, and other
--implementations might enforce other restrictions.
--
-- The `SIGCONT' signal is a special case. It can be sent if the
--sender is part of the same session as the receiver, regardless of user
--IDs.
--
--
--File: libc.info, Node: Kill Example, Prev: Permission for kill, Up: Generating Signals
--
--Using `kill' for Communication
--------------------------------
--
-- Here is a longer example showing how signals can be used for
--interprocess communication. This is what the `SIGUSR1' and `SIGUSR2'
--signals are provided for. Since these signals are fatal by default,
--the process that is supposed to receive them must trap them through
--`signal' or `sigaction'.
--
-- In this example, a parent process forks a child process and then
--waits for the child to complete its initialization. The child process
--tells the parent when it is ready by sending it a `SIGUSR1' signal,
--using the `kill' function.
--
-- #include <signal.h>
-- #include <stdio.h>
-- #include <sys/types.h>
-- #include <unistd.h>
--
-- /* When a `SIGUSR1' signal arrives, set this variable. */
-- volatile sig_atomic_t usr_interrupt = 0;
--
-- void
-- synch_signal (int sig)
-- {
-- usr_interrupt = 1;
-- }
--
-- /* The child process executes this function. */
-- void
-- child_function (void)
-- {
-- /* Perform initialization. */
-- printf ("I'm here!!! My pid is %d.\n", (int) getpid ());
--
-- /* Let parent know you're done. */
-- kill (getppid (), SIGUSR1);
--
-- /* Continue with execution. */
-- puts ("Bye, now....");
-- exit (0);
-- }
--
-- int
-- main (void)
-- {
-- struct sigaction usr_action;
-- sigset_t block_mask;
-- pid_t child_id;
--
-- /* Establish the signal handler. */
-- sigfillset (&block_mask);
-- usr_action.sa_handler = synch_signal;
-- usr_action.sa_mask = block_mask;
-- usr_action.sa_flags = 0;
-- sigaction (SIGUSR1, &usr_action, NULL);
--
-- /* Create the child process. */
-- child_id = fork ();
-- if (child_id == 0)
-- child_function (); /* Does not return. */
--
-- /* Busy wait for the child to send a signal. */
-- while (!usr_interrupt)
-- ;
--
-- /* Now continue execution. */
-- puts ("That's all, folks!");
--
-- return 0;
-- }
--
-- This example uses a busy wait, which is bad, because it wastes CPU
--cycles that other programs could otherwise use. It is better to ask the
--system to wait until the signal arrives. See the example in *Note
--Waiting for a Signal::.
--
--
--File: libc.info, Node: Blocking Signals, Next: Waiting for a Signal, Prev: Generating Signals, Up: Signal Handling
--
--Blocking Signals
--================
--
-- Blocking a signal means telling the operating system to hold it and
--deliver it later. Generally, a program does not block signals
--indefinitely--it might as well ignore them by setting their actions to
--`SIG_IGN'. But it is useful to block signals briefly, to prevent them
--from interrupting sensitive operations. For instance:
--
-- * You can use the `sigprocmask' function to block signals while you
-- modify global variables that are also modified by the handlers for
-- these signals.
--
-- * You can set `sa_mask' in your `sigaction' call to block certain
-- signals while a particular signal handler runs. This way, the
-- signal handler can run without being interrupted itself by signals.
--
--* Menu:
--
--* Why Block:: The purpose of blocking signals.
--* Signal Sets:: How to specify which signals to
-- block.
--* Process Signal Mask:: Blocking delivery of signals to your
-- process during normal execution.
--* Testing for Delivery:: Blocking to Test for Delivery of
-- a Signal.
--* Blocking for Handler:: Blocking additional signals while a
-- handler is being run.
--* Checking for Pending Signals:: Checking for Pending Signals
--* Remembering a Signal:: How you can get almost the same
-- effect as blocking a signal, by
-- handling it and setting a flag
-- to be tested later.
--
--
--File: libc.info, Node: Why Block, Next: Signal Sets, Up: Blocking Signals
--
--Why Blocking Signals is Useful
--------------------------------
--
-- Temporary blocking of signals with `sigprocmask' gives you a way to
--prevent interrupts during critical parts of your code. If signals
--arrive in that part of the program, they are delivered later, after you
--unblock them.
--
-- One example where this is useful is for sharing data between a signal
--handler and the rest of the program. If the type of the data is not
--`sig_atomic_t' (*note Atomic Data Access::), then the signal handler
--could run when the rest of the program has only half finished reading
--or writing the data. This would lead to confusing consequences.
--
-- To make the program reliable, you can prevent the signal handler from
--running while the rest of the program is examining or modifying that
--data--by blocking the appropriate signal around the parts of the
--program that touch the data.
--
-- Blocking signals is also necessary when you want to perform a certain
--action only if a signal has not arrived. Suppose that the handler for
--the signal sets a flag of type `sig_atomic_t'; you would like to test
--the flag and perform the action if the flag is not set. This is
--unreliable. Suppose the signal is delivered immediately after you test
--the flag, but before the consequent action: then the program will
--perform the action even though the signal has arrived.
--
-- The only way to test reliably for whether a signal has yet arrived
--is to test while the signal is blocked.
--
--
--File: libc.info, Node: Signal Sets, Next: Process Signal Mask, Prev: Why Block, Up: Blocking Signals
--
--Signal Sets
-------------
--
-- All of the signal blocking functions use a data structure called a
--"signal set" to specify what signals are affected. Thus, every
--activity involves two stages: creating the signal set, and then passing
--it as an argument to a library function.
--
-- These facilities are declared in the header file `signal.h'.
--
-- - Data Type: sigset_t
-- The `sigset_t' data type is used to represent a signal set.
-- Internally, it may be implemented as either an integer or structure
-- type.
--
-- For portability, use only the functions described in this section
-- to initialize, change, and retrieve information from `sigset_t'
-- objects--don't try to manipulate them directly.
--
-- There are two ways to initialize a signal set. You can initially
--specify it to be empty with `sigemptyset' and then add specified
--signals individually. Or you can specify it to be full with
--`sigfillset' and then delete specified signals individually.
--
-- You must always initialize the signal set with one of these two
--functions before using it in any other way. Don't try to set all the
--signals explicitly because the `sigset_t' object might include some
--other information (like a version field) that needs to be initialized as
--well. (In addition, it's not wise to put into your program an
--assumption that the system has no signals aside from the ones you know
--about.)
--
-- - Function: int sigemptyset (sigset_t *SET)
-- This function initializes the signal set SET to exclude all of the
-- defined signals. It always returns `0'.
--
-- - Function: int sigfillset (sigset_t *SET)
-- This function initializes the signal set SET to include all of the
-- defined signals. Again, the return value is `0'.
--
-- - Function: int sigaddset (sigset_t *SET, int SIGNUM)
-- This function adds the signal SIGNUM to the signal set SET. All
-- `sigaddset' does is modify SET; it does not block or unblock any
-- signals.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error condition is defined for this function:
--
-- `EINVAL'
-- The SIGNUM argument doesn't specify a valid signal.
--
-- - Function: int sigdelset (sigset_t *SET, int SIGNUM)
-- This function removes the signal SIGNUM from the signal set SET.
-- All `sigdelset' does is modify SET; it does not block or unblock
-- any signals. The return value and error conditions are the same
-- as for `sigaddset'.
--
-- Finally, there is a function to test what signals are in a signal
--set:
--
-- - Function: int sigismember (const sigset_t *SET, int SIGNUM)
-- The `sigismember' function tests whether the signal SIGNUM is a
-- member of the signal set SET. It returns `1' if the signal is in
-- the set, `0' if not, and `-1' if there is an error.
--
-- The following `errno' error condition is defined for this function:
--
-- `EINVAL'
-- The SIGNUM argument doesn't specify a valid signal.
--
--
--File: libc.info, Node: Process Signal Mask, Next: Testing for Delivery, Prev: Signal Sets, Up: Blocking Signals
--
--Process Signal Mask
---------------------
--
-- The collection of signals that are currently blocked is called the
--"signal mask". Each process has its own signal mask. When you create
--a new process (*note Creating a Process::), it inherits its parent's
--mask. You can block or unblock signals with total flexibility by
--modifying the signal mask.
--
-- The prototype for the `sigprocmask' function is in `signal.h'.
--
-- Note that you must not use `sigprocmask' in multi-threaded processes,
--because each thread has its own signal mask and there is no single
--process signal mask. According to POSIX, the behavior of `sigprocmask'
--in a multi-threaded process is "unspeficied". Instead, use
--`pthread_sigmask'. *Note Threads and Signal Handling::.
--
-- - Function: int sigprocmask (int HOW, const sigset_t *restrict SET,
-- sigset_t *restrict OLDSET)
-- The `sigprocmask' function is used to examine or change the calling
-- process's signal mask. The HOW argument determines how the signal
-- mask is changed, and must be one of the following values:
--
-- `SIG_BLOCK'
-- Block the signals in `set'--add them to the existing mask. In
-- other words, the new mask is the union of the existing mask
-- and SET.
--
-- `SIG_UNBLOCK'
-- Unblock the signals in SET--remove them from the existing
-- mask.
--
-- `SIG_SETMASK'
-- Use SET for the mask; ignore the previous value of the mask.
--
-- The last argument, OLDSET, is used to return information about the
-- old process signal mask. If you just want to change the mask
-- without looking at it, pass a null pointer as the OLDSET argument.
-- Similarly, if you want to know what's in the mask without changing
-- it, pass a null pointer for SET (in this case the HOW argument is
-- not significant). The OLDSET argument is often used to remember
-- the previous signal mask in order to restore it later. (Since the
-- signal mask is inherited over `fork' and `exec' calls, you can't
-- predict what its contents are when your program starts running.)
--
-- If invoking `sigprocmask' causes any pending signals to be
-- unblocked, at least one of those signals is delivered to the
-- process before `sigprocmask' returns. The order in which pending
-- signals are delivered is not specified, but you can control the
-- order explicitly by making multiple `sigprocmask' calls to unblock
-- various signals one at a time.
--
-- The `sigprocmask' function returns `0' if successful, and `-1' to
-- indicate an error. The following `errno' error conditions are
-- defined for this function:
--
-- `EINVAL'
-- The HOW argument is invalid.
--
-- You can't block the `SIGKILL' and `SIGSTOP' signals, but if the
-- signal set includes these, `sigprocmask' just ignores them instead
-- of returning an error status.
--
-- Remember, too, that blocking program error signals such as `SIGFPE'
-- leads to undesirable results for signals generated by an actual
-- program error (as opposed to signals sent with `raise' or `kill').
-- This is because your program may be too broken to be able to
-- continue executing to a point where the signal is unblocked again.
-- *Note Program Error Signals::.
--
--
--File: libc.info, Node: Testing for Delivery, Next: Blocking for Handler, Prev: Process Signal Mask, Up: Blocking Signals
--
--Blocking to Test for Delivery of a Signal
-------------------------------------------
--
-- Now for a simple example. Suppose you establish a handler for
--`SIGALRM' signals that sets a flag whenever a signal arrives, and your
--main program checks this flag from time to time and then resets it.
--You can prevent additional `SIGALRM' signals from arriving in the
--meantime by wrapping the critical part of the code with calls to
--`sigprocmask', like this:
--
-- /* This variable is set by the SIGALRM signal handler. */
-- volatile sig_atomic_t flag = 0;
--
-- int
-- main (void)
-- {
-- sigset_t block_alarm;
--
-- ...
--
-- /* Initialize the signal mask. */
-- sigemptyset (&block_alarm);
-- sigaddset (&block_alarm, SIGALRM);
--
-- while (1)
-- {
-- /* Check if a signal has arrived; if so, reset the flag. */
-- sigprocmask (SIG_BLOCK, &block_alarm, NULL);
-- if (flag)
-- {
-- ACTIONS-IF-NOT-ARRIVED
-- flag = 0;
-- }
-- sigprocmask (SIG_UNBLOCK, &block_alarm, NULL);
--
-- ...
-- }
-- }
--
--
--File: libc.info, Node: Blocking for Handler, Next: Checking for Pending Signals, Prev: Testing for Delivery, Up: Blocking Signals
--
--Blocking Signals for a Handler
--------------------------------
--
-- When a signal handler is invoked, you usually want it to be able to
--finish without being interrupted by another signal. From the moment the
--handler starts until the moment it finishes, you must block signals that
--might confuse it or corrupt its data.
--
-- When a handler function is invoked on a signal, that signal is
--automatically blocked (in addition to any other signals that are already
--in the process's signal mask) during the time the handler is running.
--If you set up a handler for `SIGTSTP', for instance, then the arrival
--of that signal forces further `SIGTSTP' signals to wait during the
--execution of the handler.
--
-- However, by default, other kinds of signals are not blocked; they can
--arrive during handler execution.
--
-- The reliable way to block other kinds of signals during the
--execution of the handler is to use the `sa_mask' member of the
--`sigaction' structure.
--
-- Here is an example:
--
-- #include <signal.h>
-- #include <stddef.h>
--
-- void catch_stop ();
--
-- void
-- install_handler (void)
-- {
-- struct sigaction setup_action;
-- sigset_t block_mask;
--
-- sigemptyset (&block_mask);
-- /* Block other terminal-generated signals while handler runs. */
-- sigaddset (&block_mask, SIGINT);
-- sigaddset (&block_mask, SIGQUIT);
-- setup_action.sa_handler = catch_stop;
-- setup_action.sa_mask = block_mask;
-- setup_action.sa_flags = 0;
-- sigaction (SIGTSTP, &setup_action, NULL);
-- }
--
-- This is more reliable than blocking the other signals explicitly in
--the code for the handler. If you block signals explicitly in the
--handler, you can't avoid at least a short interval at the beginning of
--the handler where they are not yet blocked.
--
-- You cannot remove signals from the process's current mask using this
--mechanism. However, you can make calls to `sigprocmask' within your
--handler to block or unblock signals as you wish.
--
-- In any case, when the handler returns, the system restores the mask
--that was in place before the handler was entered. If any signals that
--become unblocked by this restoration are pending, the process will
--receive those signals immediately, before returning to the code that was
--interrupted.
--
--
--File: libc.info, Node: Checking for Pending Signals, Next: Remembering a Signal, Prev: Blocking for Handler, Up: Blocking Signals
--
--Checking for Pending Signals
------------------------------
--
-- You can find out which signals are pending at any time by calling
--`sigpending'. This function is declared in `signal.h'.
--
-- - Function: int sigpending (sigset_t *SET)
-- The `sigpending' function stores information about pending signals
-- in SET. If there is a pending signal that is blocked from
-- delivery, then that signal is a member of the returned set. (You
-- can test whether a particular signal is a member of this set using
-- `sigismember'; see *Note Signal Sets::.)
--
-- The return value is `0' if successful, and `-1' on failure.
--
-- Testing whether a signal is pending is not often useful. Testing
--when that signal is not blocked is almost certainly bad design.
--
-- Here is an example.
--
-- #include <signal.h>
-- #include <stddef.h>
--
-- sigset_t base_mask, waiting_mask;
--
-- sigemptyset (&base_mask);
-- sigaddset (&base_mask, SIGINT);
-- sigaddset (&base_mask, SIGTSTP);
--
-- /* Block user interrupts while doing other processing. */
-- sigprocmask (SIG_SETMASK, &base_mask, NULL);
-- ...
--
-- /* After a while, check to see whether any signals are pending. */
-- sigpending (&waiting_mask);
-- if (sigismember (&waiting_mask, SIGINT)) {
-- /* User has tried to kill the process. */
-- }
-- else if (sigismember (&waiting_mask, SIGTSTP)) {
-- /* User has tried to stop the process. */
-- }
--
-- Remember that if there is a particular signal pending for your
--process, additional signals of that same type that arrive in the
--meantime might be discarded. For example, if a `SIGINT' signal is
--pending when another `SIGINT' signal arrives, your program will
--probably only see one of them when you unblock this signal.
--
-- *Portability Note:* The `sigpending' function is new in POSIX.1.
--Older systems have no equivalent facility.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-41 glibc-2.3.2-200304020432/manual/libc.info-41
---- glibc-2.3.2/manual/libc.info-41 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-41 Thu Jan 1 01:00:00 1970
-@@ -1,1252 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Remembering a Signal, Prev: Checking for Pending Signals, Up: Blocking Signals
--
--Remembering a Signal to Act On Later
--------------------------------------
--
-- Instead of blocking a signal using the library facilities, you can
--get almost the same results by making the handler set a flag to be
--tested later, when you "unblock". Here is an example:
--
-- /* If this flag is nonzero, don't handle the signal right away. */
-- volatile sig_atomic_t signal_pending;
--
-- /* This is nonzero if a signal arrived and was not handled. */
-- volatile sig_atomic_t defer_signal;
--
-- void
-- handler (int signum)
-- {
-- if (defer_signal)
-- signal_pending = signum;
-- else
-- ... /* "Really" handle the signal. */
-- }
--
-- ...
--
-- void
-- update_mumble (int frob)
-- {
-- /* Prevent signals from having immediate effect. */
-- defer_signal++;
-- /* Now update `mumble', without worrying about interruption. */
-- mumble.a = 1;
-- mumble.b = hack ();
-- mumble.c = frob;
-- /* We have updated `mumble'. Handle any signal that came in. */
-- defer_signal--;
-- if (defer_signal == 0 && signal_pending != 0)
-- raise (signal_pending);
-- }
--
-- Note how the particular signal that arrives is stored in
--`signal_pending'. That way, we can handle several types of
--inconvenient signals with the same mechanism.
--
-- We increment and decrement `defer_signal' so that nested critical
--sections will work properly; thus, if `update_mumble' were called with
--`signal_pending' already nonzero, signals would be deferred not only
--within `update_mumble', but also within the caller. This is also why
--we do not check `signal_pending' if `defer_signal' is still nonzero.
--
-- The incrementing and decrementing of `defer_signal' each require more
--than one instruction; it is possible for a signal to happen in the
--middle. But that does not cause any problem. If the signal happens
--early enough to see the value from before the increment or decrement,
--that is equivalent to a signal which came before the beginning of the
--increment or decrement, which is a case that works properly.
--
-- It is absolutely vital to decrement `defer_signal' before testing
--`signal_pending', because this avoids a subtle bug. If we did these
--things in the other order, like this,
--
-- if (defer_signal == 1 && signal_pending != 0)
-- raise (signal_pending);
-- defer_signal--;
--
--then a signal arriving in between the `if' statement and the decrement
--would be effectively "lost" for an indefinite amount of time. The
--handler would merely set `defer_signal', but the program having already
--tested this variable, it would not test the variable again.
--
-- Bugs like these are called "timing errors". They are especially bad
--because they happen only rarely and are nearly impossible to reproduce.
--You can't expect to find them with a debugger as you would find a
--reproducible bug. So it is worth being especially careful to avoid
--them.
--
-- (You would not be tempted to write the code in this order, given the
--use of `defer_signal' as a counter which must be tested along with
--`signal_pending'. After all, testing for zero is cleaner than testing
--for one. But if you did not use `defer_signal' as a counter, and gave
--it values of zero and one only, then either order might seem equally
--simple. This is a further advantage of using a counter for
--`defer_signal': it will reduce the chance you will write the code in
--the wrong order and create a subtle bug.)
--
--
--File: libc.info, Node: Waiting for a Signal, Next: Signal Stack, Prev: Blocking Signals, Up: Signal Handling
--
--Waiting for a Signal
--====================
--
-- If your program is driven by external events, or uses signals for
--synchronization, then when it has nothing to do it should probably wait
--until a signal arrives.
--
--* Menu:
--
--* Using Pause:: The simple way, using `pause'.
--* Pause Problems:: Why the simple way is often not very good.
--* Sigsuspend:: Reliably waiting for a specific signal.
--
--
--File: libc.info, Node: Using Pause, Next: Pause Problems, Up: Waiting for a Signal
--
--Using `pause'
---------------
--
-- The simple way to wait until a signal arrives is to call `pause'.
--Please read about its disadvantages, in the following section, before
--you use it.
--
-- - Function: int pause ()
-- The `pause' function suspends program execution until a signal
-- arrives whose action is either to execute a handler function, or to
-- terminate the process.
--
-- If the signal causes a handler function to be executed, then
-- `pause' returns. This is considered an unsuccessful return (since
-- "successful" behavior would be to suspend the program forever), so
-- the return value is `-1'. Even if you specify that other
-- primitives should resume when a system handler returns (*note
-- Interrupted Primitives::), this has no effect on `pause'; it
-- always fails when a signal is handled.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINTR'
-- The function was interrupted by delivery of a signal.
--
-- If the signal causes program termination, `pause' doesn't return
-- (obviously).
--
-- This function is a cancellation point in multithreaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `pause' is called. If the thread gets cancelled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `pause' should be protected using cancellation handlers.
--
-- The `pause' function is declared in `unistd.h'.
--
--
--File: libc.info, Node: Pause Problems, Next: Sigsuspend, Prev: Using Pause, Up: Waiting for a Signal
--
--Problems with `pause'
-----------------------
--
-- The simplicity of `pause' can conceal serious timing errors that can
--make a program hang mysteriously.
--
-- It is safe to use `pause' if the real work of your program is done
--by the signal handlers themselves, and the "main program" does nothing
--but call `pause'. Each time a signal is delivered, the handler will do
--the next batch of work that is to be done, and then return, so that the
--main loop of the program can call `pause' again.
--
-- You can't safely use `pause' to wait until one more signal arrives,
--and then resume real work. Even if you arrange for the signal handler
--to cooperate by setting a flag, you still can't use `pause' reliably.
--Here is an example of this problem:
--
-- /* `usr_interrupt' is set by the signal handler. */
-- if (!usr_interrupt)
-- pause ();
--
-- /* Do work once the signal arrives. */
-- ...
--
--This has a bug: the signal could arrive after the variable
--`usr_interrupt' is checked, but before the call to `pause'. If no
--further signals arrive, the process would never wake up again.
--
-- You can put an upper limit on the excess waiting by using `sleep' in
--a loop, instead of using `pause'. (*Note Sleeping::, for more about
--`sleep'.) Here is what this looks like:
--
-- /* `usr_interrupt' is set by the signal handler.
-- while (!usr_interrupt)
-- sleep (1);
--
-- /* Do work once the signal arrives. */
-- ...
--
-- For some purposes, that is good enough. But with a little more
--complexity, you can wait reliably until a particular signal handler is
--run, using `sigsuspend'. *Note Sigsuspend::.
--
--
--File: libc.info, Node: Sigsuspend, Prev: Pause Problems, Up: Waiting for a Signal
--
--Using `sigsuspend'
--------------------
--
-- The clean and reliable way to wait for a signal to arrive is to
--block it and then use `sigsuspend'. By using `sigsuspend' in a loop,
--you can wait for certain kinds of signals, while letting other kinds of
--signals be handled by their handlers.
--
-- - Function: int sigsuspend (const sigset_t *SET)
-- This function replaces the process's signal mask with SET and then
-- suspends the process until a signal is delivered whose action is
-- either to terminate the process or invoke a signal handling
-- function. In other words, the program is effectively suspended
-- until one of the signals that is not a member of SET arrives.
--
-- If the process is woken up by delivery of a signal that invokes a
-- handler function, and the handler function returns, then
-- `sigsuspend' also returns.
--
-- The mask remains SET only as long as `sigsuspend' is waiting. The
-- function `sigsuspend' always restores the previous signal mask
-- when it returns.
--
-- The return value and error conditions are the same as for `pause'.
--
-- With `sigsuspend', you can replace the `pause' or `sleep' loop in
--the previous section with something completely reliable:
--
-- sigset_t mask, oldmask;
--
-- ...
--
-- /* Set up the mask of signals to temporarily block. */
-- sigemptyset (&mask);
-- sigaddset (&mask, SIGUSR1);
--
-- ...
--
-- /* Wait for a signal to arrive. */
-- sigprocmask (SIG_BLOCK, &mask, &oldmask);
-- while (!usr_interrupt)
-- sigsuspend (&oldmask);
-- sigprocmask (SIG_UNBLOCK, &mask, NULL);
--
-- This last piece of code is a little tricky. The key point to
--remember here is that when `sigsuspend' returns, it resets the process's
--signal mask to the original value, the value from before the call to
--`sigsuspend'--in this case, the `SIGUSR1' signal is once again blocked.
--The second call to `sigprocmask' is necessary to explicitly unblock
--this signal.
--
-- One other point: you may be wondering why the `while' loop is
--necessary at all, since the program is apparently only waiting for one
--`SIGUSR1' signal. The answer is that the mask passed to `sigsuspend'
--permits the process to be woken up by the delivery of other kinds of
--signals, as well--for example, job control signals. If the process is
--woken up by a signal that doesn't set `usr_interrupt', it just suspends
--itself again until the "right" kind of signal eventually arrives.
--
-- This technique takes a few more lines of preparation, but that is
--needed just once for each kind of wait criterion you want to use. The
--code that actually waits is just four lines.
--
--
--File: libc.info, Node: Signal Stack, Next: BSD Signal Handling, Prev: Waiting for a Signal, Up: Signal Handling
--
--Using a Separate Signal Stack
--=============================
--
-- A signal stack is a special area of memory to be used as the
--execution stack during signal handlers. It should be fairly large, to
--avoid any danger that it will overflow in turn; the macro `SIGSTKSZ' is
--defined to a canonical size for signal stacks. You can use `malloc' to
--allocate the space for the stack. Then call `sigaltstack' or
--`sigstack' to tell the system to use that space for the signal stack.
--
-- You don't need to write signal handlers differently in order to use a
--signal stack. Switching from one stack to the other happens
--automatically. (Some non-GNU debuggers on some machines may get
--confused if you examine a stack trace while a handler that uses the
--signal stack is running.)
--
-- There are two interfaces for telling the system to use a separate
--signal stack. `sigstack' is the older interface, which comes from 4.2
--BSD. `sigaltstack' is the newer interface, and comes from 4.4 BSD.
--The `sigaltstack' interface has the advantage that it does not require
--your program to know which direction the stack grows, which depends on
--the specific machine and operating system.
--
-- - Data Type: stack_t
-- This structure describes a signal stack. It contains the
-- following members:
--
-- `void *ss_sp'
-- This points to the base of the signal stack.
--
-- `size_t ss_size'
-- This is the size (in bytes) of the signal stack which `ss_sp'
-- points to. You should set this to however much space you
-- allocated for the stack.
--
-- There are two macros defined in `signal.h' that you should
-- use in calculating this size:
--
-- `SIGSTKSZ'
-- This is the canonical size for a signal stack. It is
-- judged to be sufficient for normal uses.
--
-- `MINSIGSTKSZ'
-- This is the amount of signal stack space the operating
-- system needs just to implement signal delivery. The
-- size of a signal stack *must* be greater than this.
--
-- For most cases, just using `SIGSTKSZ' for `ss_size' is
-- sufficient. But if you know how much stack space your
-- program's signal handlers will need, you may want to use
-- a different size. In this case, you should allocate
-- `MINSIGSTKSZ' additional bytes for the signal stack and
-- increase `ss_size' accordingly.
--
-- `int ss_flags'
-- This field contains the bitwise OR of these flags:
--
-- `SS_DISABLE'
-- This tells the system that it should not use the signal
-- stack.
--
-- `SS_ONSTACK'
-- This is set by the system, and indicates that the signal
-- stack is currently in use. If this bit is not set, then
-- signals will be delivered on the normal user stack.
--
-- - Function: int sigaltstack (const stack_t *restrict STACK, stack_t
-- *restrict OLDSTACK)
-- The `sigaltstack' function specifies an alternate stack for use
-- during signal handling. When a signal is received by the process
-- and its action indicates that the signal stack is used, the system
-- arranges a switch to the currently installed signal stack while
-- the handler for that signal is executed.
--
-- If OLDSTACK is not a null pointer, information about the currently
-- installed signal stack is returned in the location it points to.
-- If STACK is not a null pointer, then this is installed as the new
-- stack for use by signal handlers.
--
-- The return value is `0' on success and `-1' on failure. If
-- `sigaltstack' fails, it sets `errno' to one of these values:
--
-- `EINVAL'
-- You tried to disable a stack that was in fact currently in
-- use.
--
-- `ENOMEM'
-- The size of the alternate stack was too small. It must be
-- greater than `MINSIGSTKSZ'.
--
-- Here is the older `sigstack' interface. You should use
--`sigaltstack' instead on systems that have it.
--
-- - Data Type: struct sigstack
-- This structure describes a signal stack. It contains the
-- following members:
--
-- `void *ss_sp'
-- This is the stack pointer. If the stack grows downwards on
-- your machine, this should point to the top of the area you
-- allocated. If the stack grows upwards, it should point to
-- the bottom.
--
-- `int ss_onstack'
-- This field is true if the process is currently using this
-- stack.
--
-- - Function: int sigstack (const struct sigstack *STACK, struct
-- sigstack *OLDSTACK)
-- The `sigstack' function specifies an alternate stack for use during
-- signal handling. When a signal is received by the process and its
-- action indicates that the signal stack is used, the system
-- arranges a switch to the currently installed signal stack while
-- the handler for that signal is executed.
--
-- If OLDSTACK is not a null pointer, information about the currently
-- installed signal stack is returned in the location it points to.
-- If STACK is not a null pointer, then this is installed as the new
-- stack for use by signal handlers.
--
-- The return value is `0' on success and `-1' on failure.
--
--
--File: libc.info, Node: BSD Signal Handling, Prev: Signal Stack, Up: Signal Handling
--
--BSD Signal Handling
--===================
--
-- This section describes alternative signal handling functions derived
--from BSD Unix. These facilities were an advance, in their time; today,
--they are mostly obsolete, and supported mainly for compatibility with
--BSD Unix.
--
-- There are many similarities between the BSD and POSIX signal handling
--facilities, because the POSIX facilities were inspired by the BSD
--facilities. Besides having different names for all the functions to
--avoid conflicts, the main differences between the two are:
--
-- * BSD Unix represents signal masks as an `int' bit mask, rather than
-- as a `sigset_t' object.
--
-- * The BSD facilities use a different default for whether an
-- interrupted primitive should fail or resume. The POSIX facilities
-- make system calls fail unless you specify that they should resume.
-- With the BSD facility, the default is to make system calls resume
-- unless you say they should fail. *Note Interrupted Primitives::.
--
-- The BSD facilities are declared in `signal.h'.
--
--* Menu:
--
--* BSD Handler:: BSD Function to Establish a Handler.
--* Blocking in BSD:: BSD Functions for Blocking Signals.
--
--
--File: libc.info, Node: BSD Handler, Next: Blocking in BSD, Up: BSD Signal Handling
--
--BSD Function to Establish a Handler
-------------------------------------
--
-- - Data Type: struct sigvec
-- This data type is the BSD equivalent of `struct sigaction' (*note
-- Advanced Signal Handling::); it is used to specify signal actions
-- to the `sigvec' function. It contains the following members:
--
-- `sighandler_t sv_handler'
-- This is the handler function.
--
-- `int sv_mask'
-- This is the mask of additional signals to be blocked while
-- the handler function is being called.
--
-- `int sv_flags'
-- This is a bit mask used to specify various flags which affect
-- the behavior of the signal. You can also refer to this field
-- as `sv_onstack'.
--
-- These symbolic constants can be used to provide values for the
--`sv_flags' field of a `sigvec' structure. This field is a bit mask
--value, so you bitwise-OR the flags of interest to you together.
--
-- - Macro: int SV_ONSTACK
-- If this bit is set in the `sv_flags' field of a `sigvec'
-- structure, it means to use the signal stack when delivering the
-- signal.
--
-- - Macro: int SV_INTERRUPT
-- If this bit is set in the `sv_flags' field of a `sigvec'
-- structure, it means that system calls interrupted by this kind of
-- signal should not be restarted if the handler returns; instead,
-- the system calls should return with a `EINTR' error status. *Note
-- Interrupted Primitives::.
--
-- - Macro: int SV_RESETHAND
-- If this bit is set in the `sv_flags' field of a `sigvec'
-- structure, it means to reset the action for the signal back to
-- `SIG_DFL' when the signal is received.
--
-- - Function: int sigvec (int SIGNUM, const struct sigvec *ACTION,struct
-- sigvec *OLD-ACTION)
-- This function is the equivalent of `sigaction' (*note Advanced
-- Signal Handling::); it installs the action ACTION for the signal
-- SIGNUM, returning information about the previous action in effect
-- for that signal in OLD-ACTION.
--
-- - Function: int siginterrupt (int SIGNUM, int FAILFLAG)
-- This function specifies which approach to use when certain
-- primitives are interrupted by handling signal SIGNUM. If FAILFLAG
-- is false, signal SIGNUM restarts primitives. If FAILFLAG is true,
-- handling SIGNUM causes these primitives to fail with error code
-- `EINTR'. *Note Interrupted Primitives::.
--
--
--File: libc.info, Node: Blocking in BSD, Prev: BSD Handler, Up: BSD Signal Handling
--
--BSD Functions for Blocking Signals
------------------------------------
--
-- - Macro: int sigmask (int SIGNUM)
-- This macro returns a signal mask that has the bit for signal SIGNUM
-- set. You can bitwise-OR the results of several calls to `sigmask'
-- together to specify more than one signal. For example,
--
-- (sigmask (SIGTSTP) | sigmask (SIGSTOP)
-- | sigmask (SIGTTIN) | sigmask (SIGTTOU))
--
-- specifies a mask that includes all the job-control stop signals.
--
-- - Function: int sigblock (int MASK)
-- This function is equivalent to `sigprocmask' (*note Process Signal
-- Mask::) with a HOW argument of `SIG_BLOCK': it adds the signals
-- specified by MASK to the calling process's set of blocked signals.
-- The return value is the previous set of blocked signals.
--
-- - Function: int sigsetmask (int MASK)
-- This function equivalent to `sigprocmask' (*note Process Signal
-- Mask::) with a HOW argument of `SIG_SETMASK': it sets the calling
-- process's signal mask to MASK. The return value is the previous
-- set of blocked signals.
--
-- - Function: int sigpause (int MASK)
-- This function is the equivalent of `sigsuspend' (*note Waiting for
-- a Signal::): it sets the calling process's signal mask to MASK,
-- and waits for a signal to arrive. On return the previous set of
-- blocked signals is restored.
--
--
--File: libc.info, Node: Program Basics, Next: Processes, Prev: Signal Handling, Up: Top
--
--The Basic Program/System Interface
--**********************************
--
-- "Processes" are the primitive units for allocation of system
--resources. Each process has its own address space and (usually) one
--thread of control. A process executes a program; you can have multiple
--processes executing the same program, but each process has its own copy
--of the program within its own address space and executes it
--independently of the other copies. Though it may have multiple threads
--of control within the same program and a program may be composed of
--multiple logically separate modules, a process always executes exactly
--one program.
--
-- Note that we are using a specific definition of "program" for the
--purposes of this manual, which corresponds to a common definition in the
--context of Unix system. In popular usage, "program" enjoys a much
--broader definition; it can refer for example to a system's kernel, an
--editor macro, a complex package of software, or a discrete section of
--code executing within a process.
--
-- Writing the program is what this manual is all about. This chapter
--explains the most basic interface between your program and the system
--that runs, or calls, it. This includes passing of parameters (arguments
--and environment) from the system, requesting basic services from the
--system, and telling the system the program is done.
--
-- A program starts another program with the `exec' family of system
--calls. This chapter looks at program startup from the execee's point
--of view. To see the event from the execor's point of view, *Note
--Executing a File::.
--
--* Menu:
--
--* Program Arguments:: Parsing your program's command-line arguments.
--* Environment Variables:: Less direct parameters affecting your program
--* System Calls:: Requesting service from the system
--* Program Termination:: Telling the system you're done; return status
--
--
--File: libc.info, Node: Program Arguments, Next: Environment Variables, Up: Program Basics
--
--Program Arguments
--=================
--
-- The system starts a C program by calling the function `main'. It is
--up to you to write a function named `main'--otherwise, you won't even
--be able to link your program without errors.
--
-- In ISO C you can define `main' either to take no arguments, or to
--take two arguments that represent the command line arguments to the
--program, like this:
--
-- int main (int ARGC, char *ARGV[])
--
-- The command line arguments are the whitespace-separated tokens given
--in the shell command used to invoke the program; thus, in `cat foo
--bar', the arguments are `foo' and `bar'. The only way a program can
--look at its command line arguments is via the arguments of `main'. If
--`main' doesn't take arguments, then you cannot get at the command line.
--
-- The value of the ARGC argument is the number of command line
--arguments. The ARGV argument is a vector of C strings; its elements
--are the individual command line argument strings. The file name of the
--program being run is also included in the vector as the first element;
--the value of ARGC counts this element. A null pointer always follows
--the last element: `ARGV[ARGC]' is this null pointer.
--
-- For the command `cat foo bar', ARGC is 3 and ARGV has three
--elements, `"cat"', `"foo"' and `"bar"'.
--
-- In Unix systems you can define `main' a third way, using three
--arguments:
--
-- int main (int ARGC, char *ARGV[], char *ENVP[])
--
-- The first two arguments are just the same. The third argument ENVP
--gives the program's environment; it is the same as the value of
--`environ'. *Note Environment Variables::. POSIX.1 does not allow this
--three-argument form, so to be portable it is best to write `main' to
--take two arguments, and use the value of `environ'.
--
--* Menu:
--
--* Argument Syntax:: By convention, options start with a hyphen.
--* Parsing Program Arguments:: Ways to parse program options and arguments.
--
--
--File: libc.info, Node: Argument Syntax, Next: Parsing Program Arguments, Up: Program Arguments
--
--Program Argument Syntax Conventions
-------------------------------------
--
-- POSIX recommends these conventions for command line arguments.
--`getopt' (*note Getopt::) and `argp_parse' (*note Argp::) make it easy
--to implement them.
--
-- * Arguments are options if they begin with a hyphen delimiter (`-').
--
-- * Multiple options may follow a hyphen delimiter in a single token if
-- the options do not take arguments. Thus, `-abc' is equivalent to
-- `-a -b -c'.
--
-- * Option names are single alphanumeric characters (as for `isalnum';
-- *note Classification of Characters::).
--
-- * Certain options require an argument. For example, the `-o' command
-- of the `ld' command requires an argument--an output file name.
--
-- * An option and its argument may or may not appear as separate
-- tokens. (In other words, the whitespace separating them is
-- optional.) Thus, `-o foo' and `-ofoo' are equivalent.
--
-- * Options typically precede other non-option arguments.
--
-- The implementations of `getopt' and `argp_parse' in the GNU C
-- library normally make it appear as if all the option arguments were
-- specified before all the non-option arguments for the purposes of
-- parsing, even if the user of your program intermixed option and
-- non-option arguments. They do this by reordering the elements of
-- the ARGV array. This behavior is nonstandard; if you want to
-- suppress it, define the `_POSIX_OPTION_ORDER' environment variable.
-- *Note Standard Environment::.
--
-- * The argument `--' terminates all options; any following arguments
-- are treated as non-option arguments, even if they begin with a
-- hyphen.
--
-- * A token consisting of a single hyphen character is interpreted as
-- an ordinary non-option argument. By convention, it is used to
-- specify input from or output to the standard input and output
-- streams.
--
-- * Options may be supplied in any order, or appear multiple times.
-- The interpretation is left up to the particular application
-- program.
--
-- GNU adds "long options" to these conventions. Long options consist
--of `--' followed by a name made of alphanumeric characters and dashes.
--Option names are typically one to three words long, with hyphens to
--separate words. Users can abbreviate the option names as long as the
--abbreviations are unique.
--
-- To specify an argument for a long option, write `--NAME=VALUE'.
--This syntax enables a long option to accept an argument that is itself
--optional.
--
-- Eventually, the GNU system will provide completion for long option
--names in the shell.
--
--
--File: libc.info, Node: Parsing Program Arguments, Prev: Argument Syntax, Up: Program Arguments
--
--Parsing Program Arguments
---------------------------
--
-- If the syntax for the command line arguments to your program is
--simple enough, you can simply pick the arguments off from ARGV by hand.
--But unless your program takes a fixed number of arguments, or all of the
--arguments are interpreted in the same way (as file names, for example),
--you are usually better off using `getopt' (*note Getopt::) or
--`argp_parse' (*note Argp::) to do the parsing.
--
-- `getopt' is more standard (the short-option only version of it is a
--part of the POSIX standard), but using `argp_parse' is often easier,
--both for very simple and very complex option structures, because it
--does more of the dirty work for you.
--
--* Menu:
--
--* Getopt:: Parsing program options using `getopt'.
--* Argp:: Parsing program options using `argp_parse'.
--* Suboptions:: Some programs need more detailed options.
--* Suboptions Example:: This shows how it could be done for `mount'.
--
--
--File: libc.info, Node: Getopt, Next: Argp, Up: Parsing Program Arguments
--
--Parsing program options using `getopt'
--======================================
--
-- The `getopt' and `getopt_long' functions automate some of the chore
--involved in parsing typical unix command line options.
--
--* Menu:
--
--* Using Getopt:: Using the `getopt' function.
--* Example of Getopt:: An example of parsing options with `getopt'.
--* Getopt Long Options:: GNU suggests utilities accept long-named
-- options; here is one way to do.
--* Getopt Long Option Example:: An example of using `getopt_long'.
--
--
--File: libc.info, Node: Using Getopt, Next: Example of Getopt, Up: Getopt
--
--Using the `getopt' function
-----------------------------
--
-- Here are the details about how to call the `getopt' function. To
--use this facility, your program must include the header file `unistd.h'.
--
-- - Variable: int opterr
-- If the value of this variable is nonzero, then `getopt' prints an
-- error message to the standard error stream if it encounters an
-- unknown option character or an option with a missing required
-- argument. This is the default behavior. If you set this variable
-- to zero, `getopt' does not print any messages, but it still
-- returns the character `?' to indicate an error.
--
-- - Variable: int optopt
-- When `getopt' encounters an unknown option character or an option
-- with a missing required argument, it stores that option character
-- in this variable. You can use this for providing your own
-- diagnostic messages.
--
-- - Variable: int optind
-- This variable is set by `getopt' to the index of the next element
-- of the ARGV array to be processed. Once `getopt' has found all of
-- the option arguments, you can use this variable to determine where
-- the remaining non-option arguments begin. The initial value of
-- this variable is `1'.
--
-- - Variable: char * optarg
-- This variable is set by `getopt' to point at the value of the
-- option argument, for those options that accept arguments.
--
-- - Function: int getopt (int ARGC, char **ARGV, const char *OPTIONS)
-- The `getopt' function gets the next option argument from the
-- argument list specified by the ARGV and ARGC arguments. Normally
-- these values come directly from the arguments received by `main'.
--
-- The OPTIONS argument is a string that specifies the option
-- characters that are valid for this program. An option character
-- in this string can be followed by a colon (`:') to indicate that
-- it takes a required argument. If an option character is followed
-- by two colons (`::'), its argument is optional; this is a GNU
-- extension.
--
-- `getopt' has three ways to deal with options that follow
-- non-options ARGV elements. The special argument `--' forces in
-- all cases the end of option scanning.
--
-- * The default is to permute the contents of ARGV while scanning
-- it so that eventually all the non-options are at the end.
-- This allows options to be given in any order, even with
-- programs that were not written to expect this.
--
-- * If the OPTIONS argument string begins with a hyphen (`-'),
-- this is treated specially. It permits arguments that are not
-- options to be returned as if they were associated with option
-- character `\1'.
--
-- * POSIX demands the following behavior: The first non-option
-- stops option processing. This mode is selected by either
-- setting the environment variable `POSIXLY_CORRECT' or
-- beginning the OPTIONS argument string with a plus sign (`+').
--
-- The `getopt' function returns the option character for the next
-- command line option. When no more option arguments are available,
-- it returns `-1'. There may still be more non-option arguments; you
-- must compare the external variable `optind' against the ARGC
-- parameter to check this.
--
-- If the option has an argument, `getopt' returns the argument by
-- storing it in the variable OPTARG. You don't ordinarily need to
-- copy the `optarg' string, since it is a pointer into the original
-- ARGV array, not into a static area that might be overwritten.
--
-- If `getopt' finds an option character in ARGV that was not
-- included in OPTIONS, or a missing option argument, it returns `?'
-- and sets the external variable `optopt' to the actual option
-- character. If the first character of OPTIONS is a colon (`:'),
-- then `getopt' returns `:' instead of `?' to indicate a missing
-- option argument. In addition, if the external variable `opterr'
-- is nonzero (which is the default), `getopt' prints an error
-- message.
--
--
--File: libc.info, Node: Example of Getopt, Next: Getopt Long Options, Prev: Using Getopt, Up: Getopt
--
--Example of Parsing Arguments with `getopt'
--------------------------------------------
--
-- Here is an example showing how `getopt' is typically used. The key
--points to notice are:
--
-- * Normally, `getopt' is called in a loop. When `getopt' returns
-- `-1', indicating no more options are present, the loop terminates.
--
-- * A `switch' statement is used to dispatch on the return value from
-- `getopt'. In typical use, each case just sets a variable that is
-- used later in the program.
--
-- * A second loop is used to process the remaining non-option
-- arguments.
--
-- #include <unistd.h>
-- #include <stdio.h>
--
-- int
-- main (int argc, char **argv)
-- {
-- int aflag = 0;
-- int bflag = 0;
-- char *cvalue = NULL;
-- int index;
-- int c;
--
-- opterr = 0;
--
-- while ((c = getopt (argc, argv, "abc:")) != -1)
-- switch (c)
-- {
-- case 'a':
-- aflag = 1;
-- break;
-- case 'b':
-- bflag = 1;
-- break;
-- case 'c':
-- cvalue = optarg;
-- break;
-- case '?':
-- if (isprint (optopt))
-- fprintf (stderr, "Unknown option `-%c'.\n", optopt);
-- else
-- fprintf (stderr,
-- "Unknown option character `\\x%x'.\n",
-- optopt);
-- return 1;
-- default:
-- abort ();
-- }
--
-- printf ("aflag = %d, bflag = %d, cvalue = %s\n",
-- aflag, bflag, cvalue);
--
-- for (index = optind; index < argc; index++)
-- printf ("Non-option argument %s\n", argv[index]);
-- return 0;
-- }
--
-- Here are some examples showing what this program prints with
--different combinations of arguments:
--
-- % testopt
-- aflag = 0, bflag = 0, cvalue = (null)
--
-- % testopt -a -b
-- aflag = 1, bflag = 1, cvalue = (null)
--
-- % testopt -ab
-- aflag = 1, bflag = 1, cvalue = (null)
--
-- % testopt -c foo
-- aflag = 0, bflag = 0, cvalue = foo
--
-- % testopt -cfoo
-- aflag = 0, bflag = 0, cvalue = foo
--
-- % testopt arg1
-- aflag = 0, bflag = 0, cvalue = (null)
-- Non-option argument arg1
--
-- % testopt -a arg1
-- aflag = 1, bflag = 0, cvalue = (null)
-- Non-option argument arg1
--
-- % testopt -c foo arg1
-- aflag = 0, bflag = 0, cvalue = foo
-- Non-option argument arg1
--
-- % testopt -a -- -b
-- aflag = 1, bflag = 0, cvalue = (null)
-- Non-option argument -b
--
-- % testopt -a -
-- aflag = 1, bflag = 0, cvalue = (null)
-- Non-option argument -
--
--
--File: libc.info, Node: Getopt Long Options, Next: Getopt Long Option Example, Prev: Example of Getopt, Up: Getopt
--
--Parsing Long Options with `getopt_long'
-----------------------------------------
--
-- To accept GNU-style long options as well as single-character options,
--use `getopt_long' instead of `getopt'. This function is declared in
--`getopt.h', not `unistd.h'. You should make every program accept long
--options if it uses any options, for this takes little extra work and
--helps beginners remember how to use the program.
--
-- - Data Type: struct option
-- This structure describes a single long option name for the sake of
-- `getopt_long'. The argument LONGOPTS must be an array of these
-- structures, one for each long option. Terminate the array with an
-- element containing all zeros.
--
-- The `struct option' structure has these fields:
--
-- `const char *name'
-- This field is the name of the option. It is a string.
--
-- `int has_arg'
-- This field says whether the option takes an argument. It is
-- an integer, and there are three legitimate values:
-- `no_argument', `required_argument' and `optional_argument'.
--
-- `int *flag'
-- `int val'
-- These fields control how to report or act on the option when
-- it occurs.
--
-- If `flag' is a null pointer, then the `val' is a value which
-- identifies this option. Often these values are chosen to
-- uniquely identify particular long options.
--
-- If `flag' is not a null pointer, it should be the address of
-- an `int' variable which is the flag for this option. The
-- value in `val' is the value to store in the flag to indicate
-- that the option was seen.
--
-- - Function: int getopt_long (int ARGC, char *const *ARGV, const char
-- *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)
-- Decode options from the vector ARGV (whose length is ARGC). The
-- argument SHORTOPTS describes the short options to accept, just as
-- it does in `getopt'. The argument LONGOPTS describes the long
-- options to accept (see above).
--
-- When `getopt_long' encounters a short option, it does the same
-- thing that `getopt' would do: it returns the character code for the
-- option, and stores the options argument (if it has one) in
-- `optarg'.
--
-- When `getopt_long' encounters a long option, it takes actions based
-- on the `flag' and `val' fields of the definition of that option.
--
-- If `flag' is a null pointer, then `getopt_long' returns the
-- contents of `val' to indicate which option it found. You should
-- arrange distinct values in the `val' field for options with
-- different meanings, so you can decode these values after
-- `getopt_long' returns. If the long option is equivalent to a short
-- option, you can use the short option's character code in `val'.
--
-- If `flag' is not a null pointer, that means this option should just
-- set a flag in the program. The flag is a variable of type `int'
-- that you define. Put the address of the flag in the `flag' field.
-- Put in the `val' field the value you would like this option to
-- store in the flag. In this case, `getopt_long' returns `0'.
--
-- For any long option, `getopt_long' tells you the index in the array
-- LONGOPTS of the options definition, by storing it into
-- `*INDEXPTR'. You can get the name of the option with
-- `LONGOPTS[*INDEXPTR].name'. So you can distinguish among long
-- options either by the values in their `val' fields or by their
-- indices. You can also distinguish in this way among long options
-- that set flags.
--
-- When a long option has an argument, `getopt_long' puts the argument
-- value in the variable `optarg' before returning. When the option
-- has no argument, the value in `optarg' is a null pointer. This is
-- how you can tell whether an optional argument was supplied.
--
-- When `getopt_long' has no more options to handle, it returns `-1',
-- and leaves in the variable `optind' the index in ARGV of the next
-- remaining argument.
--
-- Since long option names were used before before the `getopt_long'
--options was invented there are program interfaces which require programs
--to recognize options like `-option value' instead of `--option value'.
--To enable these programs to use the GNU getopt functionality there is
--one more function available.
--
-- - Function: int getopt_long_only (int ARGC, char *const *ARGV, const
-- char *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)
-- The `getopt_long_only' function is equivalent to the `getopt_long'
-- function but it allows to specify the user of the application to
-- pass long options with only `-' instead of `--'. The `--' prefix
-- is still recognized but instead of looking through the short
-- options if a `-' is seen it is first tried whether this parameter
-- names a long option. If not, it is parsed as a short option.
--
-- Assuming `getopt_long_only' is used starting an application with
--
-- app -foo
--
-- the `getopt_long_only' will first look for a long option named
-- `foo'. If this is not found, the short options `f', `o', and
-- again `o' are recognized.
--
--
--File: libc.info, Node: Getopt Long Option Example, Prev: Getopt Long Options, Up: Getopt
--
--Example of Parsing Long Options with `getopt_long'
----------------------------------------------------
--
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <getopt.h>
--
-- /* Flag set by `--verbose'. */
-- static int verbose_flag;
--
-- int
-- main (argc, argv)
-- int argc;
-- char **argv;
-- {
-- int c;
--
-- while (1)
-- {
-- static struct option long_options[] =
-- {
-- /* These options set a flag. */
-- {"verbose", no_argument, &verbose_flag, 1},
-- {"brief", no_argument, &verbose_flag, 0},
-- /* These options don't set a flag.
-- We distinguish them by their indices. */
-- {"add", no_argument, 0, 'a'},
-- {"append", no_argument, 0, 'b'},
-- {"delete", required_argument, 0, 'd'},
-- {"create", required_argument, 0, 'c'},
-- {"file", required_argument, 0, 'f'},
-- {0, 0, 0, 0}
-- };
-- /* `getopt_long' stores the option index here. */
-- int option_index = 0;
--
-- c = getopt_long (argc, argv, "abc:d:f:",
-- long_options, &option_index);
--
-- /* Detect the end of the options. */
-- if (c == -1)
-- break;
--
-- switch (c)
-- {
-- case 0:
-- /* If this option set a flag, do nothing else now. */
-- if (long_options[option_index].flag != 0)
-- break;
-- printf ("option %s", long_options[option_index].name);
-- if (optarg)
-- printf (" with arg %s", optarg);
-- printf ("\n");
-- break;
--
-- case 'a':
-- puts ("option -a\n");
-- break;
--
-- case 'b':
-- puts ("option -b\n");
-- break;
--
-- case 'c':
-- printf ("option -c with value `%s'\n", optarg);
-- break;
--
-- case 'd':
-- printf ("option -d with value `%s'\n", optarg);
-- break;
--
-- case 'f':
-- printf ("option -f with value `%s'\n", optarg);
-- break;
--
-- case '?':
-- /* `getopt_long' already printed an error message. */
-- break;
--
-- default:
-- abort ();
-- }
-- }
--
-- /* Instead of reporting `--verbose'
-- and `--brief' as they are encountered,
-- we report the final status resulting from them. */
-- if (verbose_flag)
-- puts ("verbose flag is set");
--
-- /* Print any remaining command line arguments (not options). */
-- if (optind < argc)
-- {
-- printf ("non-option ARGV-elements: ");
-- while (optind < argc)
-- printf ("%s ", argv[optind++]);
-- putchar ('\n');
-- }
--
-- exit (0);
-- }
--
--
--File: libc.info, Node: Argp, Next: Suboptions, Prev: Getopt, Up: Parsing Program Arguments
--
--Parsing Program Options with Argp
--=================================
--
-- "Argp" is an interface for parsing unix-style argument vectors.
--*Note Program Arguments::.
--
-- Argp provides features unavailable in the more commonly used
--`getopt' interface. These features include automatically producing
--output in response to the `--help' and `--version' options, as
--described in the GNU coding standards. Using argp makes it less likely
--that programmers will neglect to implement these additional options or
--keep them up to date.
--
-- Argp also provides the ability to merge several independently defined
--option parsers into one, mediating conflicts between them and making the
--result appear seamless. A library can export an argp option parser that
--user programs might employ in conjunction with their own option parsers,
--resulting in less work for the user programs. Some programs may use
--only argument parsers exported by libraries, thereby achieving
--consistent and efficient option-parsing for abstractions implemented by
--the libraries.
--
-- The header file `<argp.h>' should be included to use argp.
--
--The `argp_parse' Function
---------------------------
--
-- The main interface to argp is the `argp_parse' function. In many
--cases, calling `argp_parse' is the only argument-parsing code needed in
--`main'. *Note Program Arguments::.
--
-- - Function: error_t argp_parse (const struct argp *ARGP, int ARGC,
-- char **ARGV, unsigned FLAGS, int *ARG_INDEX, void *INPUT)
-- The `argp_parse' function parses the arguments in ARGV, of length
-- ARGC, using the argp parser ARGP. *Note Argp Parsers::.
--
-- A value of zero is the same as a `struct argp'containing all
-- zeros. FLAGS is a set of flag bits that modify the parsing
-- behavior. *Note Argp Flags::. INPUT is passed through to the argp
-- parser ARGP, and has meaning defined by ARGP. A typical usage is
-- to pass a pointer to a structure which is used for specifying
-- parameters to the parser and passing back the results.
--
-- Unless the `ARGP_NO_EXIT' or `ARGP_NO_HELP' flags are included in
-- FLAGS, calling `argp_parse' may result in the program exiting.
-- This behavior is true if an error is detected, or when an unknown
-- option is encountered. *Note Program Termination::.
--
-- If ARG_INDEX is non-null, the index of the first unparsed option
-- in ARGV is returned as a value.
--
-- The return value is zero for successful parsing, or an error code
-- (*note Error Codes::) if an error is detected. Different argp
-- parsers may return arbitrary error codes, but the standard error
-- codes are: `ENOMEM' if a memory allocation error occurred, or
-- `EINVAL' if an unknown option or option argument is encountered.
--
--* Menu:
--
--* Globals: Argp Global Variables. Global argp parameters.
--* Parsers: Argp Parsers. Defining parsers for use with `argp_parse'.
--* Flags: Argp Flags. Flags that modify the behavior of `argp_parse'.
--* Help: Argp Help. Printing help messages when not parsing.
--* Examples: Argp Examples. Simple examples of programs using argp.
--* Customization: Argp User Customization.
-- Users may control the `--help' output format.
--
--
--File: libc.info, Node: Argp Global Variables, Next: Argp Parsers, Up: Argp
--
--Argp Global Variables
-----------------------
--
-- These variables make it easy for user programs to implement the
--`--version' option and provide a bug-reporting address in the `--help'
--output. These are implemented in argp by default.
--
-- - Variable: const char * argp_program_version
-- If defined or set by the user program to a non-zero value, then a
-- `--version' option is added when parsing with `argp_parse', which
-- will print the `--version' string followed by a newline and exit.
-- The exception to this is if the `ARGP_NO_EXIT' flag is used.
--
-- - Variable: const char * argp_program_bug_address
-- If defined or set by the user program to a non-zero value,
-- `argp_program_bug_address' should point to a string that will be
-- printed at the end of the standard output for the `--help' option,
-- embedded in a sentence that says `Report bugs to ADDRESS.'.
--
-- - Variable: argp_program_version_hook
-- If defined or set by the user program to a non-zero value, a
-- `--version' option is added when parsing with `arg_parse', which
-- prints the program version and exits with a status of zero. This
-- is not the case if the `ARGP_NO_HELP' flag is used. If the
-- `ARGP_NO_EXIT' flag is set, the exit behavior of the program is
-- suppressed or modified, as when the argp parser is going to be
-- used by other programs.
--
-- It should point to a function with this type of signature:
--
-- void PRINT-VERSION (FILE *STREAM, struct argp_state *STATE)
--
-- *Note Argp Parsing State::, for an explanation of STATE.
--
-- This variable takes precedence over `argp_program_version', and is
-- useful if a program has version information not easily expressed
-- in a simple string.
--
-- - Variable: error_t argp_err_exit_status
-- This is the exit status used when argp exits due to a parsing
-- error. If not defined or set by the user program, this defaults
-- to: `EX_USAGE' from `<sysexits.h>'.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-42 glibc-2.3.2-200304020432/manual/libc.info-42
---- glibc-2.3.2/manual/libc.info-42 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-42 Thu Jan 1 01:00:00 1970
-@@ -1,1121 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Argp Parsers, Next: Argp Flags, Prev: Argp Global Variables, Up: Argp
--
--Specifying Argp Parsers
-------------------------
--
-- The first argument to the `argp_parse' function is a pointer to a
--`struct argp', which is known as an "argp parser":
--
-- - Data Type: struct argp
-- This structure specifies how to parse a given set of options and
-- arguments, perhaps in conjunction with other argp parsers. It has
-- the following fields:
--
-- `const struct argp_option *options'
-- A pointer to a vector of `argp_option' structures specifying
-- which options this argp parser understands; it may be zero if
-- there are no options at all. *Note Argp Option Vectors::.
--
-- `argp_parser_t parser'
-- A pointer to a function that defines actions for this parser;
-- it is called for each option parsed, and at other
-- well-defined points in the parsing process. A value of zero
-- is the same as a pointer to a function that always returns
-- `ARGP_ERR_UNKNOWN'. *Note Argp Parser Functions::.
--
-- `const char *args_doc'
-- If non-zero, a string describing what non-option arguments
-- are called by this parser. This is only used to print the
-- `Usage:' message. If it contains newlines, the strings
-- separated by them are considered alternative usage patterns
-- and printed on separate lines. Lines after the first are
-- prefixed by ` or: ' instead of `Usage:'.
--
-- `const char *doc'
-- If non-zero, a string containing extra text to be printed
-- before and after the options in a long help message, with the
-- two sections separated by a vertical tab (`'\v'', `'\013'')
-- character. By convention, the documentation before the
-- options is just a short string explaining what the program
-- does. Documentation printed after the options describe
-- behavior in more detail.
--
-- `const struct argp_child *children'
-- A pointer to a vector of `argp_children' structures. This
-- pointer specifies which additional argp parsers should be
-- combined with this one. *Note Argp Children::.
--
-- `char *(*help_filter)(int KEY, const char *TEXT, void *INPUT)'
-- If non-zero, a pointer to a function that filters the output
-- of help messages. *Note Argp Help Filtering::.
--
-- `const char *argp_domain'
-- If non-zero, the strings used in the argp library are
-- translated using the domain described by this string. If
-- zero, the current default domain is used.
--
--
-- Of the above group, `options', `parser', `args_doc', and the `doc'
--fields are usually all that are needed. If an argp parser is defined
--as an initialized C variable, only the fields used need be specified in
--the initializer. The rest will default to zero due to the way C
--structure initialization works. This design is exploited in most argp
--structures; the most-used fields are grouped near the beginning, the
--unused fields left unspecified.
--
--* Menu:
--
--* Options: Argp Option Vectors. Specifying options in an argp parser.
--* Argp Parser Functions:: Defining actions for an argp parser.
--* Children: Argp Children. Combining multiple argp parsers.
--* Help Filtering: Argp Help Filtering. Customizing help output for an argp parser.
--
--
--File: libc.info, Node: Argp Option Vectors, Next: Argp Parser Functions, Prev: Argp Parsers, Up: Argp Parsers
--
--Specifying Options in an Argp Parser
--------------------------------------
--
-- The `options' field in a `struct argp' points to a vector of `struct
--argp_option' structures, each of which specifies an option that the
--argp parser supports. Multiple entries may be used for a single option
--provided it has multiple names. This should be terminated by an entry
--with zero in all fields. Note that when using an initialized C array
--for options, writing `{ 0 }' is enough to achieve this.
--
-- - Data Type: struct argp_option
-- This structure specifies a single option that an argp parser
-- understands, as well as how to parse and document that option. It
-- has the following fields:
--
-- `const char *name'
-- The long name for this option, corresponding to the long
-- option `--NAME'; this field may be zero if this option _only_
-- has a short name. To specify multiple names for an option,
-- additional entries may follow this one, with the
-- `OPTION_ALIAS' flag set. *Note Argp Option Flags::.
--
-- `int key'
-- The integer key provided by the current option to the option
-- parser. If KEY has a value that is a printable ASCII
-- character (i.e., `isascii (KEY)' is true), it _also_
-- specifies a short option `-CHAR', where CHAR is the ASCII
-- character with the code KEY.
--
-- `const char *arg'
-- If non-zero, this is the name of an argument associated with
-- this option, which must be provided (e.g., with the
-- `--NAME=VALUE' or `-CHAR VALUE' syntaxes), unless the
-- `OPTION_ARG_OPTIONAL' flag (*note Argp Option Flags::) is
-- set, in which case it _may_ be provided.
--
-- `int flags'
-- Flags associated with this option, some of which are referred
-- to above. *Note Argp Option Flags::.
--
-- `const char *doc'
-- A documentation string for this option, for printing in help
-- messages.
--
-- If both the `name' and `key' fields are zero, this string
-- will be printed tabbed left from the normal option column,
-- making it useful as a group header. This will be the first
-- thing printed in its group. In this usage, it's conventional
-- to end the string with a `:' character.
--
-- `int group'
-- Group identity for this option.
--
-- In a long help message, options are sorted alphabetically
-- within each group, and the groups presented in the order 0,
-- 1, 2, ..., N, -M, ..., -2, -1.
--
-- Every entry in an options array with this field 0 will
-- inherit the group number of the previous entry, or zero if
-- it's the first one. If it's a group header with `name' and
-- `key' fields both zero, the previous entry + 1 is the
-- default. Automagic options such as `--help' are put into
-- group -1.
--
-- Note that because of C structure initialization rules, this
-- field often need not be specified, because 0 is the correct
-- value.
--
--* Menu:
--
--* Flags: Argp Option Flags. Flags for options.
--
--
--File: libc.info, Node: Argp Option Flags, Up: Argp Option Vectors
--
--Flags for Argp Options
--......................
--
-- The following flags may be or'd together in the `flags' field of a
--`struct argp_option'. These flags control various aspects of how that
--option is parsed or displayed in help messages:
--
--`OPTION_ARG_OPTIONAL'
-- The argument associated with this option is optional.
--
--`OPTION_HIDDEN'
-- This option isn't displayed in any help messages.
--
--`OPTION_ALIAS'
-- This option is an alias for the closest previous non-alias option.
-- This means that it will be displayed in the same help entry, and
-- will inherit fields other than `name' and `key' from the option
-- being aliased.
--
--`OPTION_DOC'
-- This option isn't actually an option and should be ignored by the
-- actual option parser. It is an arbitrary section of documentation
-- that should be displayed in much the same manner as the options.
-- This is known as a "documentation option".
--
-- If this flag is set, then the option `name' field is displayed
-- unmodified (e.g., no `--' prefix is added) at the left-margin where
-- a _short_ option would normally be displayed, and this
-- documentation string is left in it's usual place. For purposes of
-- sorting, any leading whitespace and punctuation is ignored, unless
-- the first non-whitespace character is `-'. This entry is displayed
-- after all options, after `OPTION_DOC' entries with a leading `-',
-- in the same group.
--
--`OPTION_NO_USAGE'
-- This option shouldn't be included in `long' usage messages, but
-- should still be included in other help messages. This is intended
-- for options that are completely documented in an argp's `args_doc'
-- field. *Note Argp Parsers::. Including this option in the
-- generic usage list would be redundant, and should be avoided.
--
-- For instance, if `args_doc' is `"FOO BAR\n-x BLAH"', and the `-x'
-- option's purpose is to distinguish these two cases, `-x' should
-- probably be marked `OPTION_NO_USAGE'.
--
--
--File: libc.info, Node: Argp Parser Functions, Next: Argp Children, Prev: Argp Option Vectors, Up: Argp Parsers
--
--Argp Parser Functions
-----------------------
--
-- The function pointed to by the `parser' field in a `struct argp'
--(*note Argp Parsers::) defines what actions take place in response to
--each option or argument parsed. It is also used as a hook, allowing a
--parser to perform tasks at certain other points during parsing.
--
-- Argp parser functions have the following type signature:
--
-- error_t PARSER (int KEY, char *ARG, struct argp_state *STATE)
--
--where the arguments are as follows:
--
--KEY
-- For each option that is parsed, PARSER is called with a value of
-- KEY from that option's `key' field in the option vector. *Note
-- Argp Option Vectors::. PARSER is also called at other times with
-- special reserved keys, such as `ARGP_KEY_ARG' for non-option
-- arguments. *Note Argp Special Keys::.
--
--ARG
-- If KEY is an option, ARG is its given value. This defaults to
-- zero if no value is specified. Only options that have a non-zero
-- `arg' field can ever have a value. These must _always_ have a
-- value unless the `OPTION_ARG_OPTIONAL' flag is specified. If the
-- input being parsed specifies a value for an option that doesn't
-- allow one, an error results before PARSER ever gets called.
--
-- If KEY is `ARGP_KEY_ARG', ARG is a non-option argument. Other
-- special keys always have a zero ARG.
--
--STATE
-- STATE points to a `struct argp_state', containing useful
-- information about the current parsing state for use by PARSER.
-- *Note Argp Parsing State::.
--
-- When PARSER is called, it should perform whatever action is
--appropriate for KEY, and return `0' for success, `ARGP_ERR_UNKNOWN' if
--the value of KEY is not handled by this parser function, or a unix
--error code if a real error occurred. *Note Error Codes::.
--
-- - Macro: int ARGP_ERR_UNKNOWN
-- Argp parser functions should return `ARGP_ERR_UNKNOWN' for any KEY
-- value they do not recognize, or for non-option arguments (`KEY ==
-- ARGP_KEY_ARG') that they are not equipped to handle.
--
-- A typical parser function uses a switch statement on KEY:
--
-- error_t
-- parse_opt (int key, char *arg, struct argp_state *state)
-- {
-- switch (key)
-- {
-- case OPTION_KEY:
-- ACTION
-- break;
-- ...
-- default:
-- return ARGP_ERR_UNKNOWN;
-- }
-- return 0;
-- }
--
--* Menu:
--
--* Keys: Argp Special Keys. Special values for the KEY argument.
--* State: Argp Parsing State. What the STATE argument refers to.
--* Functions: Argp Helper Functions. Functions to help during argp parsing.
--
--
--File: libc.info, Node: Argp Special Keys, Next: Argp Parsing State, Up: Argp Parser Functions
--
--Special Keys for Argp Parser Functions
--......................................
--
-- In addition to key values corresponding to user options, the KEY
--argument to argp parser functions may have a number of other special
--values. In the following example ARG and STATE refer to parser
--function arguments. *Note Argp Parser Functions::.
--
--`ARGP_KEY_ARG'
-- This is not an option at all, but rather a command line argument,
-- whose value is pointed to by ARG.
--
-- When there are multiple parser functions in play due to argp
-- parsers being combined, it's impossible to know which one will
-- handle a specific argument. Each is called until one returns 0 or
-- an error other than `ARGP_ERR_UNKNOWN'; if an argument is not
-- handled, `argp_parse' immediately returns success, without parsing
-- any more arguments.
--
-- Once a parser function returns success for this key, that fact is
-- recorded, and the `ARGP_KEY_NO_ARGS' case won't be used.
-- _However_, if while processing the argument a parser function
-- decrements the `next' field of its STATE argument, the option
-- won't be considered processed; this is to allow you to actually
-- modify the argument, perhaps into an option, and have it processed
-- again.
--
--`ARGP_KEY_ARGS'
-- If a parser function returns `ARGP_ERR_UNKNOWN' for
-- `ARGP_KEY_ARG', it is immediately called again with the key
-- `ARGP_KEY_ARGS', which has a similar meaning, but is slightly more
-- convenient for consuming all remaining arguments. ARG is 0, and
-- the tail of the argument vector may be found at `STATE->argv +
-- STATE->next'. If success is returned for this key, and
-- `STATE->next' is unchanged, all remaining arguments are considered
-- to have been consumed. Otherwise, the amount by which
-- `STATE->next' has been adjusted indicates how many were used.
-- Here's an example that uses both, for different args:
--
-- ...
-- case ARGP_KEY_ARG:
-- if (STATE->arg_num == 0)
-- /* First argument */
-- first_arg = ARG;
-- else
-- /* Let the next case parse it. */
-- return ARGP_KEY_UNKNOWN;
-- break;
-- case ARGP_KEY_ARGS:
-- remaining_args = STATE->argv + STATE->next;
-- num_remaining_args = STATE->argc - STATE->next;
-- break;
--
--`ARGP_KEY_END'
-- This indicates that there are no more command line arguments.
-- Parser functions are called in a different order, children first.
-- This allows each parser to clean up its state for the parent.
--
--`ARGP_KEY_NO_ARGS'
-- Because it's common to do some special processing if there aren't
-- any non-option args, parser functions are called with this key if
-- they didn't successfully process any non-option arguments. This
-- is called just before `ARGP_KEY_END', where more general validity
-- checks on previously parsed arguments take place.
--
--`ARGP_KEY_INIT'
-- This is passed in before any parsing is done. Afterwards, the
-- values of each element of the `child_input' field of STATE, if
-- any, are copied to each child's state to be the initial value of
-- the `input' when _their_ parsers are called.
--
--`ARGP_KEY_SUCCESS'
-- Passed in when parsing has successfully been completed, even if
-- arguments remain.
--
--`ARGP_KEY_ERROR'
-- Passed in if an error has occurred and parsing is terminated. In
-- this case a call with a key of `ARGP_KEY_SUCCESS' is never made.
--
--`ARGP_KEY_FINI'
-- The final key ever seen by any parser, even after
-- `ARGP_KEY_SUCCESS' and `ARGP_KEY_ERROR'. Any resources allocated
-- by `ARGP_KEY_INIT' may be freed here. At times, certain resources
-- allocated are to be returned to the caller after a successful
-- parse. In that case, those particular resources can be freed in
-- the `ARGP_KEY_ERROR' case.
--
-- In all cases, `ARGP_KEY_INIT' is the first key seen by parser
--functions, and `ARGP_KEY_FINI' the last, unless an error was returned
--by the parser for `ARGP_KEY_INIT'. Other keys can occur in one the
--following orders. OPT refers to an arbitrary option key:
--
--OPT... `ARGP_KEY_NO_ARGS' `ARGP_KEY_END' `ARGP_KEY_SUCCESS'
-- The arguments being parsed did not contain any non-option
-- arguments.
--
--( OPT | `ARGP_KEY_ARG' )... `ARGP_KEY_END' `ARGP_KEY_SUCCESS'
-- All non-option arguments were successfully handled by a parser
-- function. There may be multiple parser functions if multiple argp
-- parsers were combined.
--
--( OPT | `ARGP_KEY_ARG' )... `ARGP_KEY_SUCCESS'
-- Some non-option argument went unrecognized.
--
-- This occurs when every parser function returns `ARGP_KEY_UNKNOWN'
-- for an argument, in which case parsing stops at that argument if
-- ARG_INDEX is a null pointer. Otherwise an error occurs.
--
-- In all cases, if a non-null value for ARG_INDEX gets passed to
--`argp_parse', the index of the first unparsed command-line argument is
--passed back in that value.
--
-- If an error occurs and is either detected by argp or because a parser
--function returned an error value, each parser is called with
--`ARGP_KEY_ERROR'. No further calls are made, except the final call
--with `ARGP_KEY_FINI'.
--
--
--File: libc.info, Node: Argp Helper Functions, Prev: Argp Parsing State, Up: Argp Parser Functions
--
--Functions For Use in Argp Parsers
--.................................
--
-- Argp provides a number of functions available to the user of argp
--(*note Argp Parser Functions::), mostly for producing error messages.
--These take as their first argument the STATE argument to the parser
--function. *Note Argp Parsing State::.
--
-- - Function: void argp_usage (const struct argp_state *STATE)
-- Outputs the standard usage message for the argp parser referred to
-- by STATE to `STATE->err_stream' and terminate the program with
-- `exit (argp_err_exit_status)'. *Note Argp Global Variables::.
--
-- - Function: void argp_error (const struct argp_state *STATE, const
-- char *FMT, ...)
-- Prints the printf format string FMT and following args, preceded
-- by the program name and `:', and followed by a `Try ... --help'
-- message, and terminates the program with an exit status of
-- `argp_err_exit_status'. *Note Argp Global Variables::.
--
-- - Function: void argp_failure (const struct argp_state *STATE, int
-- STATUS, int ERRNUM, const char *FMT, ...)
-- Similar to the standard gnu error-reporting function `error', this
-- prints the program name and `:', the printf format string FMT, and
-- the appropriate following args. If it is non-zero, the standard
-- unix error text for ERRNUM is printed. If STATUS is non-zero, it
-- terminates the program with that value as its exit status.
--
-- The difference between `argp_failure' and `argp_error' is that
-- `argp_error' is for _parsing errors_, whereas `argp_failure' is
-- for other problems that occur during parsing but don't reflect a
-- syntactic problem with the input, such as illegal values for
-- options, bad phase of the moon, etc.
--
-- - Function: void argp_state_help (const struct argp_state *STATE, FILE
-- *STREAM, unsigned FLAGS)
-- Outputs a help message for the argp parser referred to by STATE,
-- to STREAM. The FLAGS argument determines what sort of help
-- message is produced. *Note Argp Help Flags::.
--
-- Error output is sent to `STATE->err_stream', and the program name
--printed is `STATE->name'.
--
-- The output or program termination behavior of these functions may be
--suppressed if the `ARGP_NO_EXIT' or `ARGP_NO_ERRS' flags are passed to
--`argp_parse'. *Note Argp Flags::.
--
-- This behavior is useful if an argp parser is exported for use by
--other programs (e.g., by a library), and may be used in a context where
--it is not desirable to terminate the program in response to parsing
--errors. In argp parsers intended for such general use, and for the
--case where the program _doesn't_ terminate, calls to any of these
--functions should be followed by code that returns the appropriate error
--code:
--
-- if (BAD ARGUMENT SYNTAX)
-- {
-- argp_usage (STATE);
-- return EINVAL;
-- }
--
--If a parser function will _only_ be used when `ARGP_NO_EXIT' is not
--set, the return may be omitted.
--
--
--File: libc.info, Node: Argp Parsing State, Next: Argp Helper Functions, Prev: Argp Special Keys, Up: Argp Parser Functions
--
--Argp Parsing State
--..................
--
-- The third argument to argp parser functions (*note Argp Parser
--Functions::) is a pointer to a `struct argp_state', which contains
--information about the state of the option parsing.
--
-- - Data Type: struct argp_state
-- This structure has the following fields, which may be modified as
-- noted:
--
-- `const struct argp *const root_argp'
-- The top level argp parser being parsed. Note that this is
-- often _not_ the same `struct argp' passed into `argp_parse' by
-- the invoking program. *Note Argp::. It is an internal argp
-- parser that contains options implemented by `argp_parse'
-- itself, such as `--help'.
--
-- `int argc'
-- `char **argv'
-- The argument vector being parsed. This may be modified.
--
-- `int next'
-- The index in `argv' of the next argument to be parsed. This
-- may be modified.
--
-- One way to consume all remaining arguments in the input is to
-- set `STATE->next = STATE->argc', perhaps after recording the
-- value of the `next' field to find the consumed arguments. The
-- current option can be re-parsed immediately by decrementing
-- this field, then modifying `STATE->argv[STATE->next]' to
-- reflect the option that should be reexamined.
--
-- `unsigned flags'
-- The flags supplied to `argp_parse'. These may be modified,
-- although some flags may only take effect when `argp_parse' is
-- first invoked. *Note Argp Flags::.
--
-- `unsigned arg_num'
-- While calling a parsing function with the KEY argument
-- `ARGP_KEY_ARG', this represents the number of the current arg,
-- starting at 0. It is incremented after each `ARGP_KEY_ARG'
-- call returns. At all other times, this is the number of
-- `ARGP_KEY_ARG' arguments that have been processed.
--
-- `int quoted'
-- If non-zero, the index in `argv' of the first argument
-- following a special `--' argument. This prevents anything
-- that follows from being interpreted as an option. It is only
-- set after argument parsing has proceeded past this point.
--
-- `void *input'
-- An arbitrary pointer passed in from the caller of
-- `argp_parse', in the INPUT argument.
--
-- `void **child_inputs'
-- These are values that will be passed to child parsers. This
-- vector will be the same length as the number of children in
-- the current parser. Each child parser will be given the
-- value of `STATE->child_inputs[I]' as _its_ `STATE->input'
-- field, where I is the index of the child in the this parser's
-- `children' field. *Note Argp Children::.
--
-- `void *hook'
-- For the parser function's use. Initialized to 0, but
-- otherwise ignored by argp.
--
-- `char *name'
-- The name used when printing messages. This is initialized to
-- `argv[0]', or `program_invocation_name' if `argv[0]' is
-- unavailable.
--
-- `FILE *err_stream'
-- `FILE *out_stream'
-- The stdio streams used when argp prints. Error messages are
-- printed to `err_stream', all other output, such as `--help'
-- output) to `out_stream'. These are initialized to `stderr'
-- and `stdout' respectively. *Note Standard Streams::.
--
-- `void *pstate'
-- Private, for use by the argp implementation.
--
--
--File: libc.info, Node: Argp Children, Next: Argp Help Filtering, Prev: Argp Parser Functions, Up: Argp Parsers
--
--Combining Multiple Argp Parsers
---------------------------------
--
-- The `children' field in a `struct argp' enables other argp parsers
--to be combined with the referencing one for the parsing of a single set
--of arguments. This field should point to a vector of `struct
--argp_child', which is terminated by an entry having a value of zero in
--the `argp' field.
--
-- Where conflicts between combined parsers arise, as when two specify
--an option with the same name, the parser conflicts are resolved in
--favor of the parent argp parser(s), or the earlier of the argp parsers
--in the list of children.
--
-- - Data Type: struct argp_child
-- An entry in the list of subsidiary argp parsers pointed to by the
-- `children' field in a `struct argp'. The fields are as follows:
--
-- `const struct argp *argp'
-- The child argp parser, or zero to end of the list.
--
-- `int flags'
-- Flags for this child.
--
-- `const char *header'
-- If non-zero, this is an optional header to be printed within
-- help output before the child options. As a side-effect, a
-- non-zero value forces the child options to be grouped
-- together. To achieve this effect without actually printing a
-- header string, use a value of `""'. As with header strings
-- specified in an option entry, the conventional value of the
-- last character is `:'. *Note Argp Option Vectors::.
--
-- `int group'
-- This is where the child options are grouped relative to the
-- other `consolidated' options in the parent argp parser. The
-- values are the same as the `group' field in `struct
-- argp_option'. *Note Argp Option Vectors::. All
-- child-groupings follow parent options at a particular group
-- level. If both this field and `header' are zero, then the
-- child's options aren't grouped together, they are merged with
-- parent options at the parent option group level.
--
--
--
--File: libc.info, Node: Argp Flags, Next: Argp Help, Prev: Argp Parsers, Up: Argp
--
--Flags for `argp_parse'
------------------------
--
-- The default behavior of `argp_parse' is designed to be convenient
--for the most common case of parsing program command line argument. To
--modify these defaults, the following flags may be or'd together in the
--FLAGS argument to `argp_parse':
--
--`ARGP_PARSE_ARGV0'
-- Don't ignore the first element of the ARGV argument to
-- `argp_parse'. Unless `ARGP_NO_ERRS' is set, the first element of
-- the argument vector is skipped for option parsing purposes, as it
-- corresponds to the program name in a command line.
--
--`ARGP_NO_ERRS'
-- Don't print error messages for unknown options to `stderr'; unless
-- this flag is set, `ARGP_PARSE_ARGV0' is ignored, as `argv[0]' is
-- used as the program name in the error messages. This flag implies
-- `ARGP_NO_EXIT'. This is based on the assumption that silent
-- exiting upon errors is bad behavior.
--
--`ARGP_NO_ARGS'
-- Don't parse any non-option args. Normally these are parsed by
-- calling the parse functions with a key of `ARGP_KEY_ARG', the
-- actual argument being the value. This flag needn't normally be
-- set, as the default behavior is to stop parsing as soon as an
-- argument fails to be parsed. *Note Argp Parser Functions::.
--
--`ARGP_IN_ORDER'
-- Parse options and arguments in the same order they occur on the
-- command line. Normally they're rearranged so that all options
-- come first.
--
--`ARGP_NO_HELP'
-- Don't provide the standard long option `--help', which ordinarily
-- causes usage and option help information to be output to `stdout'
-- and `exit (0)'.
--
--`ARGP_NO_EXIT'
-- Don't exit on errors, although they may still result in error
-- messages.
--
--`ARGP_LONG_ONLY'
-- Use the gnu getopt `long-only' rules for parsing arguments. This
-- allows long-options to be recognized with only a single `-' (i.e.
-- `-help'). This results in a less useful interface, and its use is
-- discouraged as it conflicts with the way most GNU programs work as
-- well as the GNU coding standards.
--
--`ARGP_SILENT'
-- Turns off any message-printing/exiting options, specifically
-- `ARGP_NO_EXIT', `ARGP_NO_ERRS', and `ARGP_NO_HELP'.
--
--
--File: libc.info, Node: Argp Help Filtering, Prev: Argp Children, Up: Argp Parsers
--
--Customizing Argp Help Output
------------------------------
--
-- The `help_filter' field in a `struct argp' is a pointer to a
--function that filters the text of help messages before displaying them.
--They have a function signature like:
--
-- char *HELP-FILTER (int KEY, const char *TEXT, void *INPUT)
--
--Where KEY is either a key from an option, in which case TEXT is that
--option's help text. *Note Argp Option Vectors::. Alternately, one of
--the special keys with names beginning with `ARGP_KEY_HELP_' might be
--used, describing which other help text TEXT will contain. *Note Argp
--Help Filter Keys::.
--
-- The function should return either TEXT if it remains as-is, or a
--replacement string allocated using `malloc'. This will be either be
--freed by argp or zero, which prints nothing. The value of TEXT is
--supplied _after_ any translation has been done, so if any of the
--replacement text needs translation, it will be done by the filter
--function. INPUT is either the input supplied to `argp_parse' or it is
--zero, if `argp_help' was called directly by the user.
--
--* Menu:
--
--* Keys: Argp Help Filter Keys. Special KEY values for help filter functions.
--
--
--File: libc.info, Node: Argp Help Filter Keys, Up: Argp Help Filtering
--
--Special Keys for Argp Help Filter Functions
--...........................................
--
-- The following special values may be passed to an argp help filter
--function as the first argument in addition to key values for user
--options. They specify which help text the TEXT argument contains:
--
--`ARGP_KEY_HELP_PRE_DOC'
-- The help text preceding options.
--
--`ARGP_KEY_HELP_POST_DOC'
-- The help text following options.
--
--`ARGP_KEY_HELP_HEADER'
-- The option header string.
--
--`ARGP_KEY_HELP_EXTRA'
-- This is used after all other documentation; TEXT is zero for this
-- key.
--
--`ARGP_KEY_HELP_DUP_ARGS_NOTE'
-- The explanatory note printed when duplicate option arguments have
-- been suppressed.
--
--`ARGP_KEY_HELP_ARGS_DOC'
-- The argument doc string; formally the `args_doc' field from the
-- argp parser. *Note Argp Parsers::.
--
--
--File: libc.info, Node: Argp Help, Next: Argp Examples, Prev: Argp Flags, Up: Argp
--
--The `argp_help' Function
--------------------------
--
-- Normally programs using argp need not be written with particular
--printing argument-usage-type help messages in mind as the standard
--`--help' option is handled automatically by argp. Typical error cases
--can be handled using `argp_usage' and `argp_error'. *Note Argp Helper
--Functions::. However, if it's desirable to print a help message in
--some context other than parsing the program options, argp offers the
--`argp_help' interface.
--
-- - Function: void argp_help (const struct argp *ARGP, FILE *STREAM,
-- unsigned FLAGS, char *NAME)
-- This outputs a help message for the argp parser ARGP to STREAM.
-- The type of messages printed will be determined by FLAGS.
--
-- Any options such as `--help' that are implemented automatically by
-- argp itself will _not_ be present in the help output; for this
-- reason it is best to use `argp_state_help' if calling from within
-- an argp parser function. *Note Argp Helper Functions::.
--
--* Menu:
--
--* Flags: Argp Help Flags. Specifying what sort of help message to print.
--
--
--File: libc.info, Node: Argp Help Flags, Up: Argp Help
--
--Flags for the `argp_help' Function
------------------------------------
--
-- When calling `argp_help' (*note Argp Help::) or `argp_state_help'
--(*note Argp Helper Functions::) the exact output is determined by the
--FLAGS argument. This should consist of any of the following flags,
--or'd together:
--
--`ARGP_HELP_USAGE'
-- A unix `Usage:' message that explicitly lists all options.
--
--`ARGP_HELP_SHORT_USAGE'
-- A unix `Usage:' message that displays an appropriate placeholder to
-- indicate where the options go; useful for showing the non-option
-- argument syntax.
--
--`ARGP_HELP_SEE'
-- A `Try ... for more help' message; `...' contains the program name
-- and `--help'.
--
--`ARGP_HELP_LONG'
-- A verbose option help message that gives each option available
-- along with its documentation string.
--
--`ARGP_HELP_PRE_DOC'
-- The part of the argp parser doc string preceding the verbose
-- option help.
--
--`ARGP_HELP_POST_DOC'
-- The part of the argp parser doc string that following the verbose
-- option help.
--
--`ARGP_HELP_DOC'
-- `(ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC)'
--
--`ARGP_HELP_BUG_ADDR'
-- A message that prints where to report bugs for this program, if the
-- `argp_program_bug_address' variable contains this information.
--
--`ARGP_HELP_LONG_ONLY'
-- This will modify any output to reflect the `ARGP_LONG_ONLY' mode.
--
-- The following flags are only understood when used with
--`argp_state_help'. They control whether the function returns after
--printing its output, or terminates the program:
--
--`ARGP_HELP_EXIT_ERR'
-- This will terminate the program with `exit (argp_err_exit_status)'.
--
--`ARGP_HELP_EXIT_OK'
-- This will terminate the program with `exit (0)'.
--
-- The following flags are combinations of the basic flags for printing
--standard messages:
--
--`ARGP_HELP_STD_ERR'
-- Assuming that an error message for a parsing error has printed,
-- this prints a message on how to get help, and terminates the
-- program with an error.
--
--`ARGP_HELP_STD_USAGE'
-- This prints a standard usage message and terminates the program
-- with an error. This is used when no other specific error messages
-- are appropriate or available.
--
--`ARGP_HELP_STD_HELP'
-- This prints the standard response for a `--help' option, and
-- terminates the program successfully.
--
--
--File: libc.info, Node: Argp Examples, Next: Argp User Customization, Prev: Argp Help, Up: Argp
--
--Argp Examples
---------------
--
-- These example programs demonstrate the basic usage of argp.
--
--* Menu:
--
--* 1: Argp Example 1. A minimal program using argp.
--* 2: Argp Example 2. A program using only default options.
--* 3: Argp Example 3. A simple program with user options.
--* 4: Argp Example 4. Combining multiple argp parsers.
--
--
--File: libc.info, Node: Argp Example 1, Next: Argp Example 2, Up: Argp Examples
--
--A Minimal Program Using Argp
--............................
--
-- This is perhaps the smallest program possible that uses argp. It
--won't do much except give an error messages and exit when there are any
--arguments, and prints a rather pointless message for `--help'.
--
-- /* Argp example #1 - a minimal program using argp */
--
-- /* This is (probably) the smallest possible program that
-- uses argp. It won't do much except give an error
-- messages and exit when there are any arguments, and print
-- a (rather pointless) messages for -help. */
--
-- #include <argp.h>
--
-- int main (int argc, char **argv)
-- {
-- argp_parse (0, argc, argv, 0, 0, 0);
-- exit (0);
-- }
--
--
--File: libc.info, Node: Argp Example 2, Next: Argp Example 3, Prev: Argp Example 1, Up: Argp Examples
--
--A Program Using Argp with Only Default Options
--..............................................
--
-- This program doesn't use any options or arguments, it uses argp to be
--compliant with the GNU standard command line format.
--
-- In addition to giving no arguments and implementing a `--help'
--option, this example has a `--version' option, which will put the given
--documentation string and bug address in the `--help' output, as per GNU
--standards.
--
-- The variable `argp' contains the argument parser specification.
--Adding fields to this structure is the way most parameters are passed
--to `argp_parse'. The first three fields are normally used, but they
--are not in this small program. There are also two global variables
--that argp can use defined here, `argp_program_version' and
--`argp_program_bug_address'. They are considered global variables
--because they will almost always be constant for a given program, even
--if they use different argument parsers for various tasks.
--
-- /* Argp example #2 - a pretty minimal program using argp */
--
-- /* This program doesn't use any options or arguments, but uses
-- argp to be compliant with the GNU standard command line
-- format.
--
-- In addition to making sure no arguments are given, and
-- implementing a -help option, this example will have a
-- -version option, and will put the given documentation string
-- and bug address in the -help output, as per GNU standards.
--
-- The variable ARGP contains the argument parser specification;
-- adding fields to this structure is the way most parameters are
-- passed to argp_parse (the first three fields are usually used,
-- but not in this small program). There are also two global
-- variables that argp knows about defined here,
-- ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are
-- global variables because they will almost always be constant
-- for a given program, even if it uses different argument
-- parsers for various tasks). */
--
-- #include <argp.h>
--
-- const char *argp_program_version =
-- "argp-ex2 1.0";
-- const char *argp_program_bug_address =
-- "<bug-gnu-utils@gnu.org>";
--
-- /* Program documentation. */
-- static char doc[] =
-- "Argp example #2 -- a pretty minimal program using argp";
--
-- /* Our argument parser. The `options', `parser', and
-- `args_doc' fields are zero because we have neither options or
-- arguments; `doc' and `argp_program_bug_address' will be
-- used in the output for `--help', and the `--version'
-- option will print out `argp_program_version'. */
-- static struct argp argp = { 0, 0, 0, doc };
--
-- int main (int argc, char **argv)
-- {
-- argp_parse (&argp, argc, argv, 0, 0, 0);
-- exit (0);
-- }
--
--
--File: libc.info, Node: Argp Example 3, Next: Argp Example 4, Prev: Argp Example 2, Up: Argp Examples
--
--A Program Using Argp with User Options
--......................................
--
-- This program uses the same features as example 2, adding user options
--and arguments.
--
-- We now use the first four fields in `argp' (*note Argp Parsers::)
--and specify `parse_opt' as the parser function. *Note Argp Parser
--Functions::.
--
-- Note that in this example, `main' uses a structure to communicate
--with the `parse_opt' function, a pointer to which it passes in the
--`input' argument to `argp_parse'. *Note Argp::. It is retrieved by
--`parse_opt' through the `input' field in its `state' argument. *Note
--Argp Parsing State::. Of course, it's also possible to use global
--variables instead, but using a structure like this is somewhat more
--flexible and clean.
--
-- /* Argp example #3 - a program with options and arguments using argp */
--
-- /* This program uses the same features as example 2, and uses options and
-- arguments.
--
-- We now use the first four fields in ARGP, so here's a description of them:
-- OPTIONS - A pointer to a vector of struct argp_option (see below)
-- PARSER - A function to parse a single option, called by argp
-- ARGS_DOC - A string describing how the non-option arguments should look
-- DOC - A descriptive string about this program; if it contains a
-- vertical tab character (\v), the part after it will be
-- printed *following* the options
--
-- The function PARSER takes the following arguments:
-- KEY - An integer specifying which option this is (taken
-- from the KEY field in each struct argp_option), or
-- a special key specifying something else; the only
-- special keys we use here are ARGP_KEY_ARG, meaning
-- a non-option argument, and ARGP_KEY_END, meaning
-- that all arguments have been parsed
-- ARG - For an option KEY, the string value of its
-- argument, or NULL if it has none
-- STATE- A pointer to a struct argp_state, containing
-- various useful information about the parsing state; used here
-- are the INPUT field, which reflects the INPUT argument to
-- argp_parse, and the ARG_NUM field, which is the number of the
-- current non-option argument being parsed
-- It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the
-- given KEY wasn't recognized, or an errno value indicating some other
-- error.
--
-- Note that in this example, main uses a structure to communicate with the
-- parse_opt function, a pointer to which it passes in the INPUT argument to
-- argp_parse. Of course, it's also possible to use global variables
-- instead, but this is somewhat more flexible.
--
-- The OPTIONS field contains a pointer to a vector of struct argp_option's;
-- that structure has the following fields (if you assign your option
-- structures using array initialization like this example, unspecified
-- fields will be defaulted to 0, and need not be specified):
-- NAME - The name of this option's long option (may be zero)
-- KEY - The KEY to pass to the PARSER function when parsing this option,
-- *and* the name of this option's short option, if it is a
-- printable ascii character
-- ARG - The name of this option's argument, if any
-- FLAGS - Flags describing this option; some of them are:
-- OPTION_ARG_OPTIONAL - The argument to this option is optional
-- OPTION_ALIAS - This option is an alias for the
-- previous option
-- OPTION_HIDDEN - Don't show this option in -help output
-- DOC - A documentation string for this option, shown in -help output
--
-- An options vector should be terminated by an option with all fields zero. */
--
-- #include <argp.h>
--
-- const char *argp_program_version =
-- "argp-ex3 1.0";
-- const char *argp_program_bug_address =
-- "<bug-gnu-utils@gnu.org>";
--
-- /* Program documentation. */
-- static char doc[] =
-- "Argp example #3 -- a program with options and arguments using argp";
--
-- /* A description of the arguments we accept. */
-- static char args_doc[] = "ARG1 ARG2";
--
-- /* The options we understand. */
-- static struct argp_option options[] = {
-- {"verbose", 'v', 0, 0, "Produce verbose output" },
-- {"quiet", 'q', 0, 0, "Don't produce any output" },
-- {"silent", 's', 0, OPTION_ALIAS },
-- {"output", 'o', "FILE", 0,
-- "Output to FILE instead of standard output" },
-- { 0 }
-- };
--
-- /* Used by `main' to communicate with `parse_opt'. */
-- struct arguments
-- {
-- char *args[2]; /* ARG1 & ARG2 */
-- int silent, verbose;
-- char *output_file;
-- };
--
-- /* Parse a single option. */
-- static error_t
-- parse_opt (int key, char *arg, struct argp_state *state)
-- {
-- /* Get the INPUT argument from `argp_parse', which we
-- know is a pointer to our arguments structure. */
-- struct arguments *arguments = state->input;
--
-- switch (key)
-- {
-- case 'q': case 's':
-- arguments->silent = 1;
-- break;
-- case 'v':
-- arguments->verbose = 1;
-- break;
-- case 'o':
-- arguments->output_file = arg;
-- break;
--
-- case ARGP_KEY_ARG:
-- if (state->arg_num >= 2)
-- /* Too many arguments. */
-- argp_usage (state);
--
-- arguments->args[state->arg_num] = arg;
--
-- break;
--
-- case ARGP_KEY_END:
-- if (state->arg_num < 2)
-- /* Not enough arguments. */
-- argp_usage (state);
-- break;
--
-- default:
-- return ARGP_ERR_UNKNOWN;
-- }
-- return 0;
-- }
--
-- /* Our argp parser. */
-- static struct argp argp = { options, parse_opt, args_doc, doc };
--
-- int main (int argc, char **argv)
-- {
-- struct arguments arguments;
--
-- /* Default values. */
-- arguments.silent = 0;
-- arguments.verbose = 0;
-- arguments.output_file = "-";
--
-- /* Parse our arguments; every option seen by `parse_opt' will
-- be reflected in `arguments'. */
-- argp_parse (&argp, argc, argv, 0, 0, &arguments);
--
-- printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n"
-- "VERBOSE = %s\nSILENT = %s\n",
-- arguments.args[0], arguments.args[1],
-- arguments.output_file,
-- arguments.verbose ? "yes" : "no",
-- arguments.silent ? "yes" : "no");
--
-- exit (0);
-- }
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-43 glibc-2.3.2-200304020432/manual/libc.info-43
---- glibc-2.3.2/manual/libc.info-43 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-43 Thu Jan 1 01:00:00 1970
-@@ -1,1256 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Argp Example 4, Prev: Argp Example 3, Up: Argp Examples
--
--A Program Using Multiple Combined Argp Parsers
--..............................................
--
-- This program uses the same features as example 3, but has more
--options, and presents more structure in the `--help' output. It also
--illustrates how you can `steal' the remainder of the input arguments
--past a certain point for programs that accept a list of items. It also
--illustrates the KEY value `ARGP_KEY_NO_ARGS', which is only given if no
--non-option arguments were supplied to the program. *Note Argp Special
--Keys::.
--
-- For structuring help output, two features are used: _headers_ and a
--two part option string. The _headers_ are entries in the options
--vector. *Note Argp Option Vectors::. The first four fields are zero.
--The two part documentation string are in the variable `doc', which
--allows documentation both before and after the options. *Note Argp
--Parsers::, the two parts of `doc' are separated by a vertical-tab
--character (`'\v'', or `'\013''). By convention, the documentation
--before the options is a short string stating what the program does, and
--after any options it is longer, describing the behavior in more detail.
--All documentation strings are automatically filled for output,
--although newlines may be included to force a line break at a particular
--point. In addition, documentation strings are passed to the `gettext'
--function, for possible translation into the current locale.
--
-- /* Argp example #4 - a program with somewhat more complicated options */
--
-- /* This program uses the same features as example 3, but has more
-- options, and somewhat more structure in the -help output. It
-- also shows how you can `steal' the remainder of the input
-- arguments past a certain point, for programs that accept a
-- list of items. It also shows the special argp KEY value
-- ARGP_KEY_NO_ARGS, which is only given if no non-option
-- arguments were supplied to the program.
--
-- For structuring the help output, two features are used,
-- *headers* which are entries in the options vector with the
-- first four fields being zero, and a two part documentation
-- string (in the variable DOC), which allows documentation both
-- before and after the options; the two parts of DOC are
-- separated by a vertical-tab character ('\v', or '\013'). By
-- convention, the documentation before the options is just a
-- short string saying what the program does, and that afterwards
-- is longer, describing the behavior in more detail. All
-- documentation strings are automatically filled for output,
-- although newlines may be included to force a line break at a
-- particular point. All documentation strings are also passed to
-- the `gettext' function, for possible translation into the
-- current locale. */
--
-- #include <stdlib.h>
-- #include <error.h>
-- #include <argp.h>
--
-- const char *argp_program_version =
-- "argp-ex4 1.0";
-- const char *argp_program_bug_address =
-- "<bug-gnu-utils@prep.ai.mit.edu>";
--
-- /* Program documentation. */
-- static char doc[] =
-- "Argp example #4 -- a program with somewhat more complicated\
-- options\
-- \vThis part of the documentation comes *after* the options;\
-- note that the text is automatically filled, but it's possible\
-- to force a line-break, e.g.\n<-- here.";
--
-- /* A description of the arguments we accept. */
-- static char args_doc[] = "ARG1 [STRING...]";
--
-- /* Keys for options without short-options. */
-- #define OPT_ABORT 1 /* -abort */
--
-- /* The options we understand. */
-- static struct argp_option options[] = {
-- {"verbose", 'v', 0, 0, "Produce verbose output" },
-- {"quiet", 'q', 0, 0, "Don't produce any output" },
-- {"silent", 's', 0, OPTION_ALIAS },
-- {"output", 'o', "FILE", 0,
-- "Output to FILE instead of standard output" },
--
-- {0,0,0,0, "The following options should be grouped together:" },
-- {"repeat", 'r', "COUNT", OPTION_ARG_OPTIONAL,
-- "Repeat the output COUNT (default 10) times"},
-- {"abort", OPT_ABORT, 0, 0, "Abort before showing any output"},
--
-- { 0 }
-- };
--
-- /* Used by `main' to communicate with `parse_opt'. */
-- struct arguments
-- {
-- char *arg1; /* ARG1 */
-- char **strings; /* [STRING...] */
-- int silent, verbose, abort; /* `-s', `-v', `--abort' */
-- char *output_file; /* FILE arg to `--output' */
-- int repeat_count; /* COUNT arg to `--repeat' */
-- };
--
-- /* Parse a single option. */
-- static error_t
-- parse_opt (int key, char *arg, struct argp_state *state)
-- {
-- /* Get the `input' argument from `argp_parse', which we
-- know is a pointer to our arguments structure. */
-- struct arguments *arguments = state->input;
--
-- switch (key)
-- {
-- case 'q': case 's':
-- arguments->silent = 1;
-- break;
-- case 'v':
-- arguments->verbose = 1;
-- break;
-- case 'o':
-- arguments->output_file = arg;
-- break;
-- case 'r':
-- arguments->repeat_count = arg ? atoi (arg) : 10;
-- break;
-- case OPT_ABORT:
-- arguments->abort = 1;
-- break;
--
-- case ARGP_KEY_NO_ARGS:
-- argp_usage (state);
--
-- case ARGP_KEY_ARG:
-- /* Here we know that `state->arg_num == 0', since we
-- force argument parsing to end before any more arguments can
-- get here. */
-- arguments->arg1 = arg;
--
-- /* Now we consume all the rest of the arguments.
-- `state->next' is the index in `state->argv' of the
-- next argument to be parsed, which is the first STRING
-- we're interested in, so we can just use
-- `&state->argv[state->next]' as the value for
-- arguments->strings.
--
-- _In addition_, by setting `state->next' to the end
-- of the arguments, we can force argp to stop parsing here and
-- return. */
-- arguments->strings = &state->argv[state->next];
-- state->next = state->argc;
--
-- break;
--
-- default:
-- return ARGP_ERR_UNKNOWN;
-- }
-- return 0;
-- }
--
-- /* Our argp parser. */
-- static struct argp argp = { options, parse_opt, args_doc, doc };
--
-- int main (int argc, char **argv)
-- {
-- int i, j;
-- struct arguments arguments;
--
-- /* Default values. */
-- arguments.silent = 0;
-- arguments.verbose = 0;
-- arguments.output_file = "-";
-- arguments.repeat_count = 1;
-- arguments.abort = 0;
--
-- /* Parse our arguments; every option seen by `parse_opt' will be
-- reflected in `arguments'. */
-- argp_parse (&argp, argc, argv, 0, 0, &arguments);
--
-- if (arguments.abort)
-- error (10, 0, "ABORTED");
--
-- for (i = 0; i < arguments.repeat_count; i++)
-- {
-- printf ("ARG1 = %s\n", arguments.arg1);
-- printf ("STRINGS = ");
-- for (j = 0; arguments.strings[j]; j++)
-- printf (j == 0 ? "%s" : ", %s", arguments.strings[j]);
-- printf ("\n");
-- printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n",
-- arguments.output_file,
-- arguments.verbose ? "yes" : "no",
-- arguments.silent ? "yes" : "no");
-- }
--
-- exit (0);
-- }
--
--
--File: libc.info, Node: Argp User Customization, Prev: Argp Examples, Up: Argp
--
--Argp User Customization
-------------------------
--
-- The formatting of argp `--help' output may be controlled to some
--extent by a program's users, by setting the `ARGP_HELP_FMT' environment
--variable to a comma-separated list of tokens. Whitespace is ignored:
--
--`dup-args'
--`no-dup-args'
-- These turn "duplicate-argument-mode" on or off. In duplicate
-- argument mode, if an option that accepts an argument has multiple
-- names, the argument is shown for each name. Otherwise, it is only
-- shown for the first long option. A note is subsequently printed
-- so the user knows that it applies to other names as well. The
-- default is `no-dup-args', which is less consistent, but prettier.
--
--`dup-args-note'
--
--`no-dup-args-note'
-- These will enable or disable the note informing the user of
-- suppressed option argument duplication. The default is
-- `dup-args-note'.
--
--`short-opt-col=N'
-- This prints the first short option in column N. The default is 2.
--
--`long-opt-col=N'
-- This prints the first long option in column N. The default is 6.
--
--`doc-opt-col=N'
-- This prints `documentation options' (*note Argp Option Flags::) in
-- column N. The default is 2.
--
--`opt-doc-col=N'
-- This prints the documentation for options starting in column N.
-- The default is 29.
--
--`header-col=N'
-- This will indent the group headers that document groups of options
-- to column N. The default is 1.
--
--`usage-indent=N'
-- This will indent continuation lines in `Usage:' messages to column
-- N. The default is 12.
--
--`rmargin=N'
-- This will word wrap help output at or before column N. The default
-- is 79.
--
--
--File: libc.info, Node: Suboptions, Next: Suboptions Example, Prev: Argp, Up: Parsing Program Arguments
--
--Parsing of Suboptions
--.....................
--
-- Having a single level of options is sometimes not enough. There
--might be too many options which have to be available or a set of
--options is closely related.
--
-- For this case some programs use suboptions. One of the most
--prominent programs is certainly `mount'(8). The `-o' option take one
--argument which itself is a comma separated list of options. To ease the
--programming of code like this the function `getsubopt' is available.
--
-- - Function: int getsubopt (char **OPTIONP, const char* const *TOKENS,
-- char **VALUEP)
-- The OPTIONP parameter must be a pointer to a variable containing
-- the address of the string to process. When the function returns
-- the reference is updated to point to the next suboption or to the
-- terminating `\0' character if there is no more suboption available.
--
-- The TOKENS parameter references an array of strings containing the
-- known suboptions. All strings must be `\0' terminated and to mark
-- the end a null pointer must be stored. When `getsubopt' finds a
-- possible legal suboption it compares it with all strings available
-- in the TOKENS array and returns the index in the string as the
-- indicator.
--
-- In case the suboption has an associated value introduced by a `='
-- character, a pointer to the value is returned in VALUEP. The
-- string is `\0' terminated. If no argument is available VALUEP is
-- set to the null pointer. By doing this the caller can check
-- whether a necessary value is given or whether no unexpected value
-- is present.
--
-- In case the next suboption in the string is not mentioned in the
-- TOKENS array the starting address of the suboption including a
-- possible value is returned in VALUEP and the return value of the
-- function is `-1'.
--
--
--File: libc.info, Node: Suboptions Example, Prev: Suboptions, Up: Parsing Program Arguments
--
--Parsing of Suboptions Example
-------------------------------
--
-- The code which might appear in the `mount'(8) program is a perfect
--example of the use of `getsubopt':
--
-- #include <stdio.h>
-- #include <stdlib.h>
-- #include <unistd.h>
--
-- int do_all;
-- const char *type;
-- int read_size;
-- int write_size;
-- int read_only;
--
-- enum
-- {
-- RO_OPTION = 0,
-- RW_OPTION,
-- READ_SIZE_OPTION,
-- WRITE_SIZE_OPTION,
-- THE_END
-- };
--
-- const char *mount_opts[] =
-- {
-- [RO_OPTION] = "ro",
-- [RW_OPTION] = "rw",
-- [READ_SIZE_OPTION] = "rsize",
-- [WRITE_SIZE_OPTION] = "wsize",
-- [THE_END] = NULL
-- };
--
-- int
-- main (int argc, char *argv[])
-- {
-- char *subopts, *value;
-- int opt;
--
-- while ((opt = getopt (argc, argv, "at:o:")) != -1)
-- switch (opt)
-- {
-- case 'a':
-- do_all = 1;
-- break;
-- case 't':
-- type = optarg;
-- break;
-- case 'o':
-- subopts = optarg;
-- while (*subopts != '\0')
-- switch (getsubopt (&subopts, mount_opts, &value))
-- {
-- case RO_OPTION:
-- read_only = 1;
-- break;
-- case RW_OPTION:
-- read_only = 0;
-- break;
-- case READ_SIZE_OPTION:
-- if (value == NULL)
-- abort ();
-- read_size = atoi (value);
-- break;
-- case WRITE_SIZE_OPTION:
-- if (value == NULL)
-- abort ();
-- write_size = atoi (value);
-- break;
-- default:
-- /* Unknown suboption. */
-- printf ("Unknown suboption `%s'\n", value);
-- break;
-- }
-- break;
-- default:
-- abort ();
-- }
--
-- /* Do the real work. */
--
-- return 0;
-- }
--
--
--File: libc.info, Node: Environment Variables, Next: System Calls, Prev: Program Arguments, Up: Program Basics
--
--Environment Variables
--=====================
--
-- When a program is executed, it receives information about the
--context in which it was invoked in two ways. The first mechanism uses
--the ARGV and ARGC arguments to its `main' function, and is discussed in
--*Note Program Arguments::. The second mechanism uses "environment
--variables" and is discussed in this section.
--
-- The ARGV mechanism is typically used to pass command-line arguments
--specific to the particular program being invoked. The environment, on
--the other hand, keeps track of information that is shared by many
--programs, changes infrequently, and that is less frequently used.
--
-- The environment variables discussed in this section are the same
--environment variables that you set using assignments and the `export'
--command in the shell. Programs executed from the shell inherit all of
--the environment variables from the shell.
--
-- Standard environment variables are used for information about the
--user's home directory, terminal type, current locale, and so on; you
--can define additional variables for other purposes. The set of all
--environment variables that have values is collectively known as the
--"environment".
--
-- Names of environment variables are case-sensitive and must not
--contain the character `='. System-defined environment variables are
--invariably uppercase.
--
-- The values of environment variables can be anything that can be
--represented as a string. A value must not contain an embedded null
--character, since this is assumed to terminate the string.
--
--* Menu:
--
--* Environment Access:: How to get and set the values of
-- environment variables.
--* Standard Environment:: These environment variables have
-- standard interpretations.
--
--
--File: libc.info, Node: Environment Access, Next: Standard Environment, Up: Environment Variables
--
--Environment Access
--------------------
--
-- The value of an environment variable can be accessed with the
--`getenv' function. This is declared in the header file `stdlib.h'.
--All of the following functions can be safely used in multi-threaded
--programs. It is made sure that concurrent modifications to the
--environment do not lead to errors.
--
-- - Function: char * getenv (const char *NAME)
-- This function returns a string that is the value of the environment
-- variable NAME. You must not modify this string. In some non-Unix
-- systems not using the GNU library, it might be overwritten by
-- subsequent calls to `getenv' (but not by any other library
-- function). If the environment variable NAME is not defined, the
-- value is a null pointer.
--
-- - Function: int putenv (char *STRING)
-- The `putenv' function adds or removes definitions from the
-- environment. If the STRING is of the form `NAME=VALUE', the
-- definition is added to the environment. Otherwise, the STRING is
-- interpreted as the name of an environment variable, and any
-- definition for this variable in the environment is removed.
--
-- The difference to the `setenv' function is that the exact string
-- given as the parameter STRING is put into the environment. If the
-- user should change the string after the `putenv' call this will
-- reflect in automatically in the environment. This also requires
-- that STRING is no automatic variable which scope is left before the
-- variable is removed from the environment. The same applies of
-- course to dynamically allocated variables which are freed later.
--
-- This function is part of the extended Unix interface. Since it
-- was also available in old SVID libraries you should define either
-- _XOPEN_SOURCE or _SVID_SOURCE before including any header.
--
-- - Function: int setenv (const char *NAME, const char *VALUE, int
-- REPLACE)
-- The `setenv' function can be used to add a new definition to the
-- environment. The entry with the name NAME is replaced by the
-- value `NAME=VALUE'. Please note that this is also true if VALUE
-- is the empty string. To do this a new string is created and the
-- strings NAME and VALUE are copied. A null pointer for the VALUE
-- parameter is illegal. If the environment already contains an
-- entry with key NAME the REPLACE parameter controls the action. If
-- replace is zero, nothing happens. Otherwise the old entry is
-- replaced by the new one.
--
-- Please note that you cannot remove an entry completely using this
-- function.
--
-- This function was originally part of the BSD library but is now
-- part of the Unix standard.
--
-- - Function: int unsetenv (const char *NAME)
-- Using this function one can remove an entry completely from the
-- environment. If the environment contains an entry with the key
-- NAME this whole entry is removed. A call to this function is
-- equivalent to a call to `putenv' when the VALUE part of the string
-- is empty.
--
-- The function return `-1' if NAME is a null pointer, points to an
-- empty string, or points to a string containing a `=' character.
-- It returns `0' if the call succeeded.
--
-- This function was originally part of the BSD library but is now
-- part of the Unix standard. The BSD version had no return value,
-- though.
--
-- There is one more function to modify the whole environment. This
--function is said to be used in the POSIX.9 (POSIX bindings for Fortran
--77) and so one should expect it did made it into POSIX.1. But this
--never happened. But we still provide this function as a GNU extension
--to enable writing standard compliant Fortran environments.
--
-- - Function: int clearenv (void)
-- The `clearenv' function removes all entries from the environment.
-- Using `putenv' and `setenv' new entries can be added again later.
--
-- If the function is successful it returns `0'. Otherwise the return
-- value is nonzero.
--
-- You can deal directly with the underlying representation of
--environment objects to add more variables to the environment (for
--example, to communicate with another program you are about to execute;
--*note Executing a File::).
--
-- - Variable: char ** environ
-- The environment is represented as an array of strings. Each
-- string is of the format `NAME=VALUE'. The order in which strings
-- appear in the environment is not significant, but the same NAME
-- must not appear more than once. The last element of the array is
-- a null pointer.
--
-- This variable is declared in the header file `unistd.h'.
--
-- If you just want to get the value of an environment variable, use
-- `getenv'.
--
-- Unix systems, and the GNU system, pass the initial value of
--`environ' as the third argument to `main'. *Note Program Arguments::.
--
--
--File: libc.info, Node: Standard Environment, Prev: Environment Access, Up: Environment Variables
--
--Standard Environment Variables
--------------------------------
--
-- These environment variables have standard meanings. This doesn't
--mean that they are always present in the environment; but if these
--variables _are_ present, they have these meanings. You shouldn't try
--to use these environment variable names for some other purpose.
--
--`HOME'
-- This is a string representing the user's "home directory", or
-- initial default working directory.
--
-- The user can set `HOME' to any value. If you need to make sure to
-- obtain the proper home directory for a particular user, you should
-- not use `HOME'; instead, look up the user's name in the user
-- database (*note User Database::).
--
-- For most purposes, it is better to use `HOME', precisely because
-- this lets the user specify the value.
--
--`LOGNAME'
-- This is the name that the user used to log in. Since the value in
-- the environment can be tweaked arbitrarily, this is not a reliable
-- way to identify the user who is running a program; a function like
-- `getlogin' (*note Who Logged In::) is better for that purpose.
--
-- For most purposes, it is better to use `LOGNAME', precisely because
-- this lets the user specify the value.
--
--`PATH'
-- A "path" is a sequence of directory names which is used for
-- searching for a file. The variable `PATH' holds a path used for
-- searching for programs to be run.
--
-- The `execlp' and `execvp' functions (*note Executing a File::) use
-- this environment variable, as do many shells and other utilities
-- which are implemented in terms of those functions.
--
-- The syntax of a path is a sequence of directory names separated by
-- colons. An empty string instead of a directory name stands for the
-- current directory (*note Working Directory::).
--
-- A typical value for this environment variable might be a string
-- like:
--
-- :/bin:/etc:/usr/bin:/usr/new/X11:/usr/new:/usr/local/bin
--
-- This means that if the user tries to execute a program named `foo',
-- the system will look for files named `foo', `/bin/foo',
-- `/etc/foo', and so on. The first of these files that exists is
-- the one that is executed.
--
--`TERM'
-- This specifies the kind of terminal that is receiving program
-- output. Some programs can make use of this information to take
-- advantage of special escape sequences or terminal modes supported
-- by particular kinds of terminals. Many programs which use the
-- termcap library (*note Find: (termcap)Finding a Terminal
-- Description.) use the `TERM' environment variable, for example.
--
--`TZ'
-- This specifies the time zone. *Note TZ Variable::, for
-- information about the format of this string and how it is used.
--
--`LANG'
-- This specifies the default locale to use for attribute categories
-- where neither `LC_ALL' nor the specific environment variable for
-- that category is set. *Note Locales::, for more information about
-- locales.
--
--`LC_ALL'
-- If this environment variable is set it overrides the selection for
-- all the locales done using the other `LC_*' environment variables.
-- The value of the other `LC_*' environment variables is simply
-- ignored in this case.
--
--`LC_COLLATE'
-- This specifies what locale to use for string sorting.
--
--`LC_CTYPE'
-- This specifies what locale to use for character sets and character
-- classification.
--
--`LC_MESSAGES'
-- This specifies what locale to use for printing messages and to
-- parse responses.
--
--`LC_MONETARY'
-- This specifies what locale to use for formatting monetary values.
--
--`LC_NUMERIC'
-- This specifies what locale to use for formatting numbers.
--
--`LC_TIME'
-- This specifies what locale to use for formatting date/time values.
--
--`NLSPATH'
-- This specifies the directories in which the `catopen' function
-- looks for message translation catalogs.
--
--`_POSIX_OPTION_ORDER'
-- If this environment variable is defined, it suppresses the usual
-- reordering of command line arguments by `getopt' and `argp_parse'.
-- *Note Argument Syntax::.
--
--
--File: libc.info, Node: System Calls, Next: Program Termination, Prev: Environment Variables, Up: Program Basics
--
--System Calls
--============
--
-- A system call is a request for service that a program makes of the
--kernel. The service is generally something that only the kernel has
--the privilege to do, such as doing I/O. Programmers don't normally
--need to be concerned with system calls because there are functions in
--the GNU C library to do virtually everything that system calls do.
--These functions work by making system calls themselves. For example,
--there is a system call that changes the permissions of a file, but you
--don't need to know about it because you can just use the GNU C
--library's `chmod' function.
--
-- System calls are sometimes called kernel calls.
--
-- However, there are times when you want to make a system call
--explicitly, and for that, the GNU C library provides the `syscall'
--function. `syscall' is harder to use and less portable than functions
--like `chmod', but easier and more portable than coding the system call
--in assembler instructions.
--
-- `syscall' is most useful when you are working with a system call
--which is special to your system or is newer than the GNU C library you
--are using. `syscall' is implemented in an entirely generic way; the
--function does not know anything about what a particular system call
--does or even if it is valid.
--
-- The description of `syscall' in this section assumes a certain
--protocol for system calls on the various platforms on which the GNU C
--library runs. That protocol is not defined by any strong authority, but
--we won't describe it here either because anyone who is coding `syscall'
--probably won't accept anything less than kernel and C library source
--code as a specification of the interface between them anyway.
--
-- `syscall' is declared in `unistd.h'.
--
-- - Function: long int syscall (long int SYSNO, ...)
-- `syscall' performs a generic system call.
--
-- SYSNO is the system call number. Each kind of system call is
-- identified by a number. Macros for all the possible system call
-- numbers are defined in `sys/syscall.h'
--
-- The remaining arguments are the arguments for the system call, in
-- order, and their meanings depend on the kind of system call. Each
-- kind of system call has a definite number of arguments, from zero
-- to five. If you code more arguments than the system call takes,
-- the extra ones to the right are ignored.
--
-- The return value is the return value from the system call, unless
-- the system call failed. In that case, `syscall' returns `-1' and
-- sets `errno' to an error code that the system call returned. Note
-- that system calls do not return `-1' when they succeed.
--
-- If you specify an invalid SYSNO, `syscall' returns `-1' with
-- `errno' = `ENOSYS'.
--
-- Example:
--
--
-- #include <unistd.h>
-- #include <sys/syscall.h>
-- #include <errno.h>
--
-- ...
--
-- int rc;
--
-- rc = syscall(SYS_chmod, "/etc/passwd", 0444);
--
-- if (rc == -1)
-- fprintf(stderr, "chmod failed, errno = %d\n", errno);
--
-- This, if all the compatibility stars are aligned, is equivalent to
-- the following preferable code:
--
--
-- #include <sys/types.h>
-- #include <sys/stat.h>
-- #include <errno.h>
--
-- ...
--
-- int rc;
--
-- rc = chmod("/etc/passwd", 0444);
-- if (rc == -1)
-- fprintf(stderr, "chmod failed, errno = %d\n", errno);
--
--
--
--File: libc.info, Node: Program Termination, Prev: System Calls, Up: Program Basics
--
--Program Termination
--===================
--
-- The usual way for a program to terminate is simply for its `main'
--function to return. The "exit status value" returned from the `main'
--function is used to report information back to the process's parent
--process or shell.
--
-- A program can also terminate normally by calling the `exit' function.
--
-- In addition, programs can be terminated by signals; this is
--discussed in more detail in *Note Signal Handling::. The `abort'
--function causes a signal that kills the program.
--
--* Menu:
--
--* Normal Termination:: If a program calls `exit', a
-- process terminates normally.
--* Exit Status:: The `exit status' provides information
-- about why the process terminated.
--* Cleanups on Exit:: A process can run its own cleanup
-- functions upon normal termination.
--* Aborting a Program:: The `abort' function causes
-- abnormal program termination.
--* Termination Internals:: What happens when a process terminates.
--
--
--File: libc.info, Node: Normal Termination, Next: Exit Status, Up: Program Termination
--
--Normal Termination
--------------------
--
-- A process terminates normally when its program signals it is done by
--calling `exit'. Returning from `main' is equivalent to calling `exit',
--and the value that `main' returns is used as the argument to `exit'.
--
-- - Function: void exit (int STATUS)
-- The `exit' function tells the system that the program is done,
-- which causes it to terminate the process.
--
-- STATUS is the program's exit status, which becomes part of the
-- process' termination status. This function does not return.
--
-- Normal termination causes the following actions:
--
-- 1. Functions that were registered with the `atexit' or `on_exit'
-- functions are called in the reverse order of their registration.
-- This mechanism allows your application to specify its own
-- "cleanup" actions to be performed at program termination.
-- Typically, this is used to do things like saving program state
-- information in a file, or unlocking locks in shared data bases.
--
-- 2. All open streams are closed, writing out any buffered output data.
-- See *Note Closing Streams::. In addition, temporary files opened
-- with the `tmpfile' function are removed; see *Note Temporary
-- Files::.
--
-- 3. `_exit' is called, terminating the program. *Note Termination
-- Internals::.
--
--
--File: libc.info, Node: Exit Status, Next: Cleanups on Exit, Prev: Normal Termination, Up: Program Termination
--
--Exit Status
-------------
--
-- When a program exits, it can return to the parent process a small
--amount of information about the cause of termination, using the "exit
--status". This is a value between 0 and 255 that the exiting process
--passes as an argument to `exit'.
--
-- Normally you should use the exit status to report very broad
--information about success or failure. You can't provide a lot of
--detail about the reasons for the failure, and most parent processes
--would not want much detail anyway.
--
-- There are conventions for what sorts of status values certain
--programs should return. The most common convention is simply 0 for
--success and 1 for failure. Programs that perform comparison use a
--different convention: they use status 1 to indicate a mismatch, and
--status 2 to indicate an inability to compare. Your program should
--follow an existing convention if an existing convention makes sense for
--it.
--
-- A general convention reserves status values 128 and up for special
--purposes. In particular, the value 128 is used to indicate failure to
--execute another program in a subprocess. This convention is not
--universally obeyed, but it is a good idea to follow it in your programs.
--
-- *Warning:* Don't try to use the number of errors as the exit status.
--This is actually not very useful; a parent process would generally not
--care how many errors occurred. Worse than that, it does not work,
--because the status value is truncated to eight bits. Thus, if the
--program tried to report 256 errors, the parent would receive a report
--of 0 errors--that is, success.
--
-- For the same reason, it does not work to use the value of `errno' as
--the exit status--these can exceed 255.
--
-- *Portability note:* Some non-POSIX systems use different conventions
--for exit status values. For greater portability, you can use the
--macros `EXIT_SUCCESS' and `EXIT_FAILURE' for the conventional status
--value for success and failure, respectively. They are declared in the
--file `stdlib.h'.
--
-- - Macro: int EXIT_SUCCESS
-- This macro can be used with the `exit' function to indicate
-- successful program completion.
--
-- On POSIX systems, the value of this macro is `0'. On other
-- systems, the value might be some other (possibly non-constant)
-- integer expression.
--
-- - Macro: int EXIT_FAILURE
-- This macro can be used with the `exit' function to indicate
-- unsuccessful program completion in a general sense.
--
-- On POSIX systems, the value of this macro is `1'. On other
-- systems, the value might be some other (possibly non-constant)
-- integer expression. Other nonzero status values also indicate
-- failures. Certain programs use different nonzero status values to
-- indicate particular kinds of "non-success". For example, `diff'
-- uses status value `1' to mean that the files are different, and
-- `2' or more to mean that there was difficulty in opening the files.
--
-- Don't confuse a program's exit status with a process' termination
--status. There are lots of ways a process can terminate besides having
--it's program finish. In the event that the process termination _is_
--caused by program termination (i.e. `exit'), though, the program's exit
--status becomes part of the process' termination status.
--
--
--File: libc.info, Node: Cleanups on Exit, Next: Aborting a Program, Prev: Exit Status, Up: Program Termination
--
--Cleanups on Exit
------------------
--
-- Your program can arrange to run its own cleanup functions if normal
--termination happens. If you are writing a library for use in various
--application programs, then it is unreliable to insist that all
--applications call the library's cleanup functions explicitly before
--exiting. It is much more robust to make the cleanup invisible to the
--application, by setting up a cleanup function in the library itself
--using `atexit' or `on_exit'.
--
-- - Function: int atexit (void (*FUNCTION) (void))
-- The `atexit' function registers the function FUNCTION to be called
-- at normal program termination. The FUNCTION is called with no
-- arguments.
--
-- The return value from `atexit' is zero on success and nonzero if
-- the function cannot be registered.
--
-- - Function: int on_exit (void (*FUNCTION)(int STATUS, void *ARG), void
-- *ARG)
-- This function is a somewhat more powerful variant of `atexit'. It
-- accepts two arguments, a function FUNCTION and an arbitrary
-- pointer ARG. At normal program termination, the FUNCTION is
-- called with two arguments: the STATUS value passed to `exit', and
-- the ARG.
--
-- This function is included in the GNU C library only for
-- compatibility for SunOS, and may not be supported by other
-- implementations.
--
-- Here's a trivial program that illustrates the use of `exit' and
--`atexit':
--
-- #include <stdio.h>
-- #include <stdlib.h>
--
-- void
-- bye (void)
-- {
-- puts ("Goodbye, cruel world....");
-- }
--
-- int
-- main (void)
-- {
-- atexit (bye);
-- exit (EXIT_SUCCESS);
-- }
--
--When this program is executed, it just prints the message and exits.
--
--
--File: libc.info, Node: Aborting a Program, Next: Termination Internals, Prev: Cleanups on Exit, Up: Program Termination
--
--Aborting a Program
--------------------
--
-- You can abort your program using the `abort' function. The prototype
--for this function is in `stdlib.h'.
--
-- - Function: void abort (void)
-- The `abort' function causes abnormal program termination. This
-- does not execute cleanup functions registered with `atexit' or
-- `on_exit'.
--
-- This function actually terminates the process by raising a
-- `SIGABRT' signal, and your program can include a handler to
-- intercept this signal; see *Note Signal Handling::.
--
-- *Future Change Warning:* Proposed Federal censorship regulations may
--prohibit us from giving you information about the possibility of
--calling this function. We would be required to say that this is not an
--acceptable way of terminating a program.
--
--
--File: libc.info, Node: Termination Internals, Prev: Aborting a Program, Up: Program Termination
--
--Termination Internals
-----------------------
--
-- The `_exit' function is the primitive used for process termination
--by `exit'. It is declared in the header file `unistd.h'.
--
-- - Function: void _exit (int STATUS)
-- The `_exit' function is the primitive for causing a process to
-- terminate with status STATUS. Calling this function does not
-- execute cleanup functions registered with `atexit' or `on_exit'.
--
-- - Function: void _Exit (int STATUS)
-- The `_Exit' function is the ISO C equivalent to `_exit'. The
-- ISO C committee members were not sure whether the definitions of
-- `_exit' and `_Exit' were compatible so they have not used the
-- POSIX name.
--
-- This function was introduced in ISO C99 and is declared in
-- `stdlib.h'.
--
-- When a process terminates for any reason--either because the program
--terminates, or as a result of a signal--the following things happen:
--
-- * All open file descriptors in the process are closed. *Note
-- Low-Level I/O::. Note that streams are not flushed automatically
-- when the process terminates; see *Note I/O on Streams::.
--
-- * A process exit status is saved to be reported back to the parent
-- process via `wait' or `waitpid'; see *Note Process Completion::.
-- If the program exited, this status includes as its low-order 8
-- bits the program exit status.
--
-- * Any child processes of the process being terminated are assigned a
-- new parent process. (On most systems, including GNU, this is the
-- `init' process, with process ID 1.)
--
-- * A `SIGCHLD' signal is sent to the parent process.
--
-- * If the process is a session leader that has a controlling
-- terminal, then a `SIGHUP' signal is sent to each process in the
-- foreground job, and the controlling terminal is disassociated from
-- that session. *Note Job Control::.
--
-- * If termination of a process causes a process group to become
-- orphaned, and any member of that process group is stopped, then a
-- `SIGHUP' signal and a `SIGCONT' signal are sent to each process in
-- the group. *Note Job Control::.
--
--
--File: libc.info, Node: Processes, Next: Job Control, Prev: Program Basics, Up: Top
--
--Processes
--*********
--
-- "Processes" are the primitive units for allocation of system
--resources. Each process has its own address space and (usually) one
--thread of control. A process executes a program; you can have multiple
--processes executing the same program, but each process has its own copy
--of the program within its own address space and executes it
--independently of the other copies.
--
-- Processes are organized hierarchically. Each process has a "parent
--process" which explicitly arranged to create it. The processes created
--by a given parent are called its "child processes". A child inherits
--many of its attributes from the parent process.
--
-- This chapter describes how a program can create, terminate, and
--control child processes. Actually, there are three distinct operations
--involved: creating a new child process, causing the new process to
--execute a program, and coordinating the completion of the child process
--with the original program.
--
-- The `system' function provides a simple, portable mechanism for
--running another program; it does all three steps automatically. If you
--need more control over the details of how this is done, you can use the
--primitive functions to do each step individually instead.
--
--* Menu:
--
--* Running a Command:: The easy way to run another program.
--* Process Creation Concepts:: An overview of the hard way to do it.
--* Process Identification:: How to get the process ID of a process.
--* Creating a Process:: How to fork a child process.
--* Executing a File:: How to make a process execute another program.
--* Process Completion:: How to tell when a child process has completed.
--* Process Completion Status:: How to interpret the status value
-- returned from a child process.
--* BSD Wait Functions:: More functions, for backward compatibility.
--* Process Creation Example:: A complete example program.
--
--
--File: libc.info, Node: Running a Command, Next: Process Creation Concepts, Up: Processes
--
--Running a Command
--=================
--
-- The easy way to run another program is to use the `system' function.
--This function does all the work of running a subprogram, but it
--doesn't give you much control over the details: you have to wait until
--the subprogram terminates before you can do anything else.
--
-- - Function: int system (const char *COMMAND)
-- This function executes COMMAND as a shell command. In the GNU C
-- library, it always uses the default shell `sh' to run the command.
-- In particular, it searches the directories in `PATH' to find
-- programs to execute. The return value is `-1' if it wasn't
-- possible to create the shell process, and otherwise is the status
-- of the shell process. *Note Process Completion::, for details on
-- how this status code can be interpreted.
--
-- If the COMMAND argument is a null pointer, a return value of zero
-- indicates that no command processor is available.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `system' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `system' should be protected using cancellation handlers.
--
-- The `system' function is declared in the header file `stdlib.h'.
--
-- *Portability Note:* Some C implementations may not have any notion
--of a command processor that can execute other programs. You can
--determine whether a command processor exists by executing
--`system (NULL)'; if the return value is nonzero, a command processor is
--available.
--
-- The `popen' and `pclose' functions (*note Pipe to a Subprocess::)
--are closely related to the `system' function. They allow the parent
--process to communicate with the standard input and output channels of
--the command being executed.
--
--
--File: libc.info, Node: Process Creation Concepts, Next: Process Identification, Prev: Running a Command, Up: Processes
--
--Process Creation Concepts
--=========================
--
-- This section gives an overview of processes and of the steps
--involved in creating a process and making it run another program.
--
-- Each process is named by a "process ID" number. A unique process ID
--is allocated to each process when it is created. The "lifetime" of a
--process ends when its termination is reported to its parent process; at
--that time, all of the process resources, including its process ID, are
--freed.
--
-- Processes are created with the `fork' system call (so the operation
--of creating a new process is sometimes called "forking" a process).
--The "child process" created by `fork' is a copy of the original "parent
--process", except that it has its own process ID.
--
-- After forking a child process, both the parent and child processes
--continue to execute normally. If you want your program to wait for a
--child process to finish executing before continuing, you must do this
--explicitly after the fork operation, by calling `wait' or `waitpid'
--(*note Process Completion::). These functions give you limited
--information about why the child terminated--for example, its exit
--status code.
--
-- A newly forked child process continues to execute the same program as
--its parent process, at the point where the `fork' call returns. You
--can use the return value from `fork' to tell whether the program is
--running in the parent process or the child.
--
-- Having several processes run the same program is only occasionally
--useful. But the child can execute another program using one of the
--`exec' functions; see *Note Executing a File::. The program that the
--process is executing is called its "process image". Starting execution
--of a new program causes the process to forget all about its previous
--process image; when the new program exits, the process exits too,
--instead of returning to the previous process image.
--
--
--File: libc.info, Node: Process Identification, Next: Creating a Process, Prev: Process Creation Concepts, Up: Processes
--
--Process Identification
--======================
--
-- The `pid_t' data type represents process IDs. You can get the
--process ID of a process by calling `getpid'. The function `getppid'
--returns the process ID of the parent of the current process (this is
--also known as the "parent process ID"). Your program should include
--the header files `unistd.h' and `sys/types.h' to use these functions.
--
-- - Data Type: pid_t
-- The `pid_t' data type is a signed integer type which is capable of
-- representing a process ID. In the GNU library, this is an `int'.
--
-- - Function: pid_t getpid (void)
-- The `getpid' function returns the process ID of the current
-- process.
--
-- - Function: pid_t getppid (void)
-- The `getppid' function returns the process ID of the parent of the
-- current process.
--
--
--File: libc.info, Node: Creating a Process, Next: Executing a File, Prev: Process Identification, Up: Processes
--
--Creating a Process
--==================
--
-- The `fork' function is the primitive for creating a process. It is
--declared in the header file `unistd.h'.
--
-- - Function: pid_t fork (void)
-- The `fork' function creates a new process.
--
-- If the operation is successful, there are then both parent and
-- child processes and both see `fork' return, but with different
-- values: it returns a value of `0' in the child process and returns
-- the child's process ID in the parent process.
--
-- If process creation failed, `fork' returns a value of `-1' in the
-- parent process. The following `errno' error conditions are
-- defined for `fork':
--
-- `EAGAIN'
-- There aren't enough system resources to create another
-- process, or the user already has too many processes running.
-- This means exceeding the `RLIMIT_NPROC' resource limit, which
-- can usually be increased; *note Limits on Resources::.
--
-- `ENOMEM'
-- The process requires more space than the system can supply.
--
-- The specific attributes of the child process that differ from the
--parent process are:
--
-- * The child process has its own unique process ID.
--
-- * The parent process ID of the child process is the process ID of its
-- parent process.
--
-- * The child process gets its own copies of the parent process's open
-- file descriptors. Subsequently changing attributes of the file
-- descriptors in the parent process won't affect the file
-- descriptors in the child, and vice versa. *Note Control
-- Operations::. However, the file position associated with each
-- descriptor is shared by both processes; *note File Position::.
--
-- * The elapsed processor times for the child process are set to zero;
-- see *Note Processor Time::.
--
-- * The child doesn't inherit file locks set by the parent process.
-- *Note Control Operations::.
--
-- * The child doesn't inherit alarms set by the parent process. *Note
-- Setting an Alarm::.
--
-- * The set of pending signals (*note Delivery of Signal::) for the
-- child process is cleared. (The child process inherits its mask of
-- blocked signals and signal actions from the parent process.)
--
-- - Function: pid_t vfork (void)
-- The `vfork' function is similar to `fork' but on some systems it
-- is more efficient; however, there are restrictions you must follow
-- to use it safely.
--
-- While `fork' makes a complete copy of the calling process's address
-- space and allows both the parent and child to execute
-- independently, `vfork' does not make this copy. Instead, the
-- child process created with `vfork' shares its parent's address
-- space until it calls `_exit' or one of the `exec' functions. In
-- the meantime, the parent process suspends execution.
--
-- You must be very careful not to allow the child process created
-- with `vfork' to modify any global data or even local variables
-- shared with the parent. Furthermore, the child process cannot
-- return from (or do a long jump out of) the function that called
-- `vfork'! This would leave the parent process's control
-- information very confused. If in doubt, use `fork' instead.
--
-- Some operating systems don't really implement `vfork'. The GNU C
-- library permits you to use `vfork' on all systems, but actually
-- executes `fork' if `vfork' isn't available. If you follow the
-- proper precautions for using `vfork', your program will still work
-- even if the system uses `fork' instead.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-44 glibc-2.3.2-200304020432/manual/libc.info-44
---- glibc-2.3.2/manual/libc.info-44 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-44 Thu Jan 1 01:00:00 1970
-@@ -1,1175 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Executing a File, Next: Process Completion, Prev: Creating a Process, Up: Processes
--
--Executing a File
--================
--
-- This section describes the `exec' family of functions, for executing
--a file as a process image. You can use these functions to make a child
--process execute a new program after it has been forked.
--
-- To see the effects of `exec' from the point of view of the called
--program, *Note Program Basics::.
--
-- The functions in this family differ in how you specify the arguments,
--but otherwise they all do the same thing. They are declared in the
--header file `unistd.h'.
--
-- - Function: int execv (const char *FILENAME, char *const ARGV[])
-- The `execv' function executes the file named by FILENAME as a new
-- process image.
--
-- The ARGV argument is an array of null-terminated strings that is
-- used to provide a value for the `argv' argument to the `main'
-- function of the program to be executed. The last element of this
-- array must be a null pointer. By convention, the first element of
-- this array is the file name of the program sans directory names.
-- *Note Program Arguments::, for full details on how programs can
-- access these arguments.
--
-- The environment for the new process image is taken from the
-- `environ' variable of the current process image; see *Note
-- Environment Variables::, for information about environments.
--
-- - Function: int execl (const char *FILENAME, const char *ARG0, ...)
-- This is similar to `execv', but the ARGV strings are specified
-- individually instead of as an array. A null pointer must be
-- passed as the last such argument.
--
-- - Function: int execve (const char *FILENAME, char *const ARGV[], char
-- *const ENV[])
-- This is similar to `execv', but permits you to specify the
-- environment for the new program explicitly as the ENV argument.
-- This should be an array of strings in the same format as for the
-- `environ' variable; see *Note Environment Access::.
--
-- - Function: int execle (const char *FILENAME, const char *ARG0, char
-- *const ENV[], ...)
-- This is similar to `execl', but permits you to specify the
-- environment for the new program explicitly. The environment
-- argument is passed following the null pointer that marks the last
-- ARGV argument, and should be an array of strings in the same
-- format as for the `environ' variable.
--
-- - Function: int execvp (const char *FILENAME, char *const ARGV[])
-- The `execvp' function is similar to `execv', except that it
-- searches the directories listed in the `PATH' environment variable
-- (*note Standard Environment::) to find the full file name of a
-- file from FILENAME if FILENAME does not contain a slash.
--
-- This function is useful for executing system utility programs,
-- because it looks for them in the places that the user has chosen.
-- Shells use it to run the commands that users type.
--
-- - Function: int execlp (const char *FILENAME, const char *ARG0, ...)
-- This function is like `execl', except that it performs the same
-- file name searching as the `execvp' function.
--
-- The size of the argument list and environment list taken together
--must not be greater than `ARG_MAX' bytes. *Note General Limits::. In
--the GNU system, the size (which compares against `ARG_MAX') includes,
--for each string, the number of characters in the string, plus the size
--of a `char *', plus one, rounded up to a multiple of the size of a
--`char *'. Other systems may have somewhat different rules for counting.
--
-- These functions normally don't return, since execution of a new
--program causes the currently executing program to go away completely.
--A value of `-1' is returned in the event of a failure. In addition to
--the usual file name errors (*note File Name Errors::), the following
--`errno' error conditions are defined for these functions:
--
--`E2BIG'
-- The combined size of the new program's argument list and
-- environment list is larger than `ARG_MAX' bytes. The GNU system
-- has no specific limit on the argument list size, so this error
-- code cannot result, but you may get `ENOMEM' instead if the
-- arguments are too big for available memory.
--
--`ENOEXEC'
-- The specified file can't be executed because it isn't in the right
-- format.
--
--`ENOMEM'
-- Executing the specified file requires more storage than is
-- available.
--
-- If execution of the new file succeeds, it updates the access time
--field of the file as if the file had been read. *Note File Times::,
--for more details about access times of files.
--
-- The point at which the file is closed again is not specified, but is
--at some point before the process exits or before another process image
--is executed.
--
-- Executing a new process image completely changes the contents of
--memory, copying only the argument and environment strings to new
--locations. But many other attributes of the process are unchanged:
--
-- * The process ID and the parent process ID. *Note Process Creation
-- Concepts::.
--
-- * Session and process group membership. *Note Concepts of Job
-- Control::.
--
-- * Real user ID and group ID, and supplementary group IDs. *Note
-- Process Persona::.
--
-- * Pending alarms. *Note Setting an Alarm::.
--
-- * Current working directory and root directory. *Note Working
-- Directory::. In the GNU system, the root directory is not copied
-- when executing a setuid program; instead the system default root
-- directory is used for the new program.
--
-- * File mode creation mask. *Note Setting Permissions::.
--
-- * Process signal mask; see *Note Process Signal Mask::.
--
-- * Pending signals; see *Note Blocking Signals::.
--
-- * Elapsed processor time associated with the process; see *Note
-- Processor Time::.
--
-- If the set-user-ID and set-group-ID mode bits of the process image
--file are set, this affects the effective user ID and effective group ID
--(respectively) of the process. These concepts are discussed in detail
--in *Note Process Persona::.
--
-- Signals that are set to be ignored in the existing process image are
--also set to be ignored in the new process image. All other signals are
--set to the default action in the new process image. For more
--information about signals, see *Note Signal Handling::.
--
-- File descriptors open in the existing process image remain open in
--the new process image, unless they have the `FD_CLOEXEC'
--(close-on-exec) flag set. The files that remain open inherit all
--attributes of the open file description from the existing process image,
--including file locks. File descriptors are discussed in *Note
--Low-Level I/O::.
--
-- Streams, by contrast, cannot survive through `exec' functions,
--because they are located in the memory of the process itself. The new
--process image has no streams except those it creates afresh. Each of
--the streams in the pre-`exec' process image has a descriptor inside it,
--and these descriptors do survive through `exec' (provided that they do
--not have `FD_CLOEXEC' set). The new process image can reconnect these
--to new streams using `fdopen' (*note Descriptors and Streams::).
--
--
--File: libc.info, Node: Process Completion, Next: Process Completion Status, Prev: Executing a File, Up: Processes
--
--Process Completion
--==================
--
-- The functions described in this section are used to wait for a child
--process to terminate or stop, and determine its status. These functions
--are declared in the header file `sys/wait.h'.
--
-- - Function: pid_t waitpid (pid_t PID, int *STATUS-PTR, int OPTIONS)
-- The `waitpid' function is used to request status information from a
-- child process whose process ID is PID. Normally, the calling
-- process is suspended until the child process makes status
-- information available by terminating.
--
-- Other values for the PID argument have special interpretations. A
-- value of `-1' or `WAIT_ANY' requests status information for any
-- child process; a value of `0' or `WAIT_MYPGRP' requests
-- information for any child process in the same process group as the
-- calling process; and any other negative value - PGID requests
-- information for any child process whose process group ID is PGID.
--
-- If status information for a child process is available
-- immediately, this function returns immediately without waiting.
-- If more than one eligible child process has status information
-- available, one of them is chosen randomly, and its status is
-- returned immediately. To get the status from the other eligible
-- child processes, you need to call `waitpid' again.
--
-- The OPTIONS argument is a bit mask. Its value should be the
-- bitwise OR (that is, the `|' operator) of zero or more of the
-- `WNOHANG' and `WUNTRACED' flags. You can use the `WNOHANG' flag
-- to indicate that the parent process shouldn't wait; and the
-- `WUNTRACED' flag to request status information from stopped
-- processes as well as processes that have terminated.
--
-- The status information from the child process is stored in the
-- object that STATUS-PTR points to, unless STATUS-PTR is a null
-- pointer.
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `waitpid' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `waitpid' should be protected using cancellation handlers.
--
-- The return value is normally the process ID of the child process
-- whose status is reported. If there are child processes but none
-- of them is waiting to be noticed, `waitpid' will block until one
-- is. However, if the `WNOHANG' option was specified, `waitpid'
-- will return zero instead of blocking.
--
-- If a specific PID to wait for was given to `waitpid', it will
-- ignore all other children (if any). Therefore if there are
-- children waiting to be noticed but the child whose PID was
-- specified is not one of them, `waitpid' will block or return zero
-- as described above.
--
-- A value of `-1' is returned in case of error. The following
-- `errno' error conditions are defined for this function:
--
-- `EINTR'
-- The function was interrupted by delivery of a signal to the
-- calling process. *Note Interrupted Primitives::.
--
-- `ECHILD'
-- There are no child processes to wait for, or the specified PID
-- is not a child of the calling process.
--
-- `EINVAL'
-- An invalid value was provided for the OPTIONS argument.
--
-- These symbolic constants are defined as values for the PID argument
--to the `waitpid' function.
--
--`WAIT_ANY'
-- This constant macro (whose value is `-1') specifies that `waitpid'
-- should return status information about any child process.
--
--`WAIT_MYPGRP'
-- This constant (with value `0') specifies that `waitpid' should
-- return status information about any child process in the same
-- process group as the calling process.
--
-- These symbolic constants are defined as flags for the OPTIONS
--argument to the `waitpid' function. You can bitwise-OR the flags
--together to obtain a value to use as the argument.
--
--`WNOHANG'
-- This flag specifies that `waitpid' should return immediately
-- instead of waiting, if there is no child process ready to be
-- noticed.
--
--`WUNTRACED'
-- This flag specifies that `waitpid' should report the status of any
-- child processes that have been stopped as well as those that have
-- terminated.
--
-- - Function: pid_t wait (int *STATUS-PTR)
-- This is a simplified version of `waitpid', and is used to wait
-- until any one child process terminates. The call:
--
-- wait (&status)
--
-- is exactly equivalent to:
--
-- waitpid (-1, &status, 0)
--
-- This function is a cancellation point in multi-threaded programs.
-- This is a problem if the thread allocates some resources (like
-- memory, file descriptors, semaphores or whatever) at the time
-- `wait' is called. If the thread gets canceled these resources
-- stay allocated until the program ends. To avoid this calls to
-- `wait' should be protected using cancellation handlers.
--
-- - Function: pid_t wait4 (pid_t PID, int *STATUS-PTR, int OPTIONS,
-- struct rusage *USAGE)
-- If USAGE is a null pointer, `wait4' is equivalent to `waitpid
-- (PID, STATUS-PTR, OPTIONS)'.
--
-- If USAGE is not null, `wait4' stores usage figures for the child
-- process in `*RUSAGE' (but only if the child has terminated, not if
-- it has stopped). *Note Resource Usage::.
--
-- This function is a BSD extension.
--
-- Here's an example of how to use `waitpid' to get the status from all
--child processes that have terminated, without ever waiting. This
--function is designed to be a handler for `SIGCHLD', the signal that
--indicates that at least one child process has terminated.
--
-- void
-- sigchld_handler (int signum)
-- {
-- int pid, status, serrno;
-- serrno = errno;
-- while (1)
-- {
-- pid = waitpid (WAIT_ANY, &status, WNOHANG);
-- if (pid < 0)
-- {
-- perror ("waitpid");
-- break;
-- }
-- if (pid == 0)
-- break;
-- notice_termination (pid, status);
-- }
-- errno = serrno;
-- }
--
--
--File: libc.info, Node: Process Completion Status, Next: BSD Wait Functions, Prev: Process Completion, Up: Processes
--
--Process Completion Status
--=========================
--
-- If the exit status value (*note Program Termination::) of the child
--process is zero, then the status value reported by `waitpid' or `wait'
--is also zero. You can test for other kinds of information encoded in
--the returned status value using the following macros. These macros are
--defined in the header file `sys/wait.h'.
--
-- - Macro: int WIFEXITED (int STATUS)
-- This macro returns a nonzero value if the child process terminated
-- normally with `exit' or `_exit'.
--
-- - Macro: int WEXITSTATUS (int STATUS)
-- If `WIFEXITED' is true of STATUS, this macro returns the low-order
-- 8 bits of the exit status value from the child process. *Note
-- Exit Status::.
--
-- - Macro: int WIFSIGNALED (int STATUS)
-- This macro returns a nonzero value if the child process terminated
-- because it received a signal that was not handled. *Note Signal
-- Handling::.
--
-- - Macro: int WTERMSIG (int STATUS)
-- If `WIFSIGNALED' is true of STATUS, this macro returns the signal
-- number of the signal that terminated the child process.
--
-- - Macro: int WCOREDUMP (int STATUS)
-- This macro returns a nonzero value if the child process terminated
-- and produced a core dump.
--
-- - Macro: int WIFSTOPPED (int STATUS)
-- This macro returns a nonzero value if the child process is stopped.
--
-- - Macro: int WSTOPSIG (int STATUS)
-- If `WIFSTOPPED' is true of STATUS, this macro returns the signal
-- number of the signal that caused the child process to stop.
--
--
--File: libc.info, Node: BSD Wait Functions, Next: Process Creation Example, Prev: Process Completion Status, Up: Processes
--
--BSD Process Wait Functions
--==========================
--
-- The GNU library also provides these related facilities for
--compatibility with BSD Unix. BSD uses the `union wait' data type to
--represent status values rather than an `int'. The two representations
--are actually interchangeable; they describe the same bit patterns. The
--GNU C Library defines macros such as `WEXITSTATUS' so that they will
--work on either kind of object, and the `wait' function is defined to
--accept either type of pointer as its STATUS-PTR argument.
--
-- These functions are declared in `sys/wait.h'.
--
-- - Data Type: union wait
-- This data type represents program termination status values. It
-- has the following members:
--
-- `int w_termsig'
-- The value of this member is the same as that of the
-- `WTERMSIG' macro.
--
-- `int w_coredump'
-- The value of this member is the same as that of the
-- `WCOREDUMP' macro.
--
-- `int w_retcode'
-- The value of this member is the same as that of the
-- `WEXITSTATUS' macro.
--
-- `int w_stopsig'
-- The value of this member is the same as that of the
-- `WSTOPSIG' macro.
--
-- Instead of accessing these members directly, you should use the
-- equivalent macros.
--
-- The `wait3' function is the predecessor to `wait4', which is more
--flexible. `wait3' is now obsolete.
--
-- - Function: pid_t wait3 (union wait *STATUS-PTR, int OPTIONS, struct
-- rusage *USAGE)
-- If USAGE is a null pointer, `wait3' is equivalent to `waitpid (-1,
-- STATUS-PTR, OPTIONS)'.
--
-- If USAGE is not null, `wait3' stores usage figures for the child
-- process in `*RUSAGE' (but only if the child has terminated, not if
-- it has stopped). *Note Resource Usage::.
--
--
--File: libc.info, Node: Process Creation Example, Prev: BSD Wait Functions, Up: Processes
--
--Process Creation Example
--========================
--
-- Here is an example program showing how you might write a function
--similar to the built-in `system'. It executes its COMMAND argument
--using the equivalent of `sh -c COMMAND'.
--
-- #include <stddef.h>
-- #include <stdlib.h>
-- #include <unistd.h>
-- #include <sys/types.h>
-- #include <sys/wait.h>
--
-- /* Execute the command using this shell program. */
-- #define SHELL "/bin/sh"
--
-- int
-- my_system (const char *command)
-- {
-- int status;
-- pid_t pid;
--
-- pid = fork ();
-- if (pid == 0)
-- {
-- /* This is the child process. Execute the shell command. */
-- execl (SHELL, SHELL, "-c", command, NULL);
-- _exit (EXIT_FAILURE);
-- }
-- else if (pid < 0)
-- /* The fork failed. Report failure. */
-- status = -1;
-- else
-- /* This is the parent process. Wait for the child to complete. */
-- if (waitpid (pid, &status, 0) != pid)
-- status = -1;
-- return status;
-- }
--
-- There are a couple of things you should pay attention to in this
--example.
--
-- Remember that the first `argv' argument supplied to the program
--represents the name of the program being executed. That is why, in the
--call to `execl', `SHELL' is supplied once to name the program to
--execute and a second time to supply a value for `argv[0]'.
--
-- The `execl' call in the child process doesn't return if it is
--successful. If it fails, you must do something to make the child
--process terminate. Just returning a bad status code with `return'
--would leave two processes running the original program. Instead, the
--right behavior is for the child process to report failure to its parent
--process.
--
-- Call `_exit' to accomplish this. The reason for using `_exit'
--instead of `exit' is to avoid flushing fully buffered streams such as
--`stdout'. The buffers of these streams probably contain data that was
--copied from the parent process by the `fork', data that will be output
--eventually by the parent process. Calling `exit' in the child would
--output the data twice. *Note Termination Internals::.
--
--
--File: libc.info, Node: Job Control, Next: Name Service Switch, Prev: Processes, Up: Top
--
--Job Control
--***********
--
-- "Job control" refers to the protocol for allowing a user to move
--between multiple "process groups" (or "jobs") within a single "login
--session". The job control facilities are set up so that appropriate
--behavior for most programs happens automatically and they need not do
--anything special about job control. So you can probably ignore the
--material in this chapter unless you are writing a shell or login
--program.
--
-- You need to be familiar with concepts relating to process creation
--(*note Process Creation Concepts::) and signal handling (*note Signal
--Handling::) in order to understand this material presented in this
--chapter.
--
--* Menu:
--
--* Concepts of Job Control:: Jobs can be controlled by a shell.
--* Job Control is Optional:: Not all POSIX systems support job control.
--* Controlling Terminal:: How a process gets its controlling terminal.
--* Access to the Terminal:: How processes share the controlling terminal.
--* Orphaned Process Groups:: Jobs left after the user logs out.
--* Implementing a Shell:: What a shell must do to implement job control.
--* Functions for Job Control:: Functions to control process groups.
--
--
--File: libc.info, Node: Concepts of Job Control, Next: Job Control is Optional, Up: Job Control
--
--Concepts of Job Control
--=======================
--
-- The fundamental purpose of an interactive shell is to read commands
--from the user's terminal and create processes to execute the programs
--specified by those commands. It can do this using the `fork' (*note
--Creating a Process::) and `exec' (*note Executing a File::) functions.
--
-- A single command may run just one process--but often one command uses
--several processes. If you use the `|' operator in a shell command, you
--explicitly request several programs in their own processes. But even
--if you run just one program, it can use multiple processes internally.
--For example, a single compilation command such as `cc -c foo.c'
--typically uses four processes (though normally only two at any given
--time). If you run `make', its job is to run other programs in separate
--processes.
--
-- The processes belonging to a single command are called a "process
--group" or "job". This is so that you can operate on all of them at
--once. For example, typing `C-c' sends the signal `SIGINT' to terminate
--all the processes in the foreground process group.
--
-- A "session" is a larger group of processes. Normally all the
--processes that stem from a single login belong to the same session.
--
-- Every process belongs to a process group. When a process is
--created, it becomes a member of the same process group and session as
--its parent process. You can put it in another process group using the
--`setpgid' function, provided the process group belongs to the same
--session.
--
-- The only way to put a process in a different session is to make it
--the initial process of a new session, or a "session leader", using the
--`setsid' function. This also puts the session leader into a new
--process group, and you can't move it out of that process group again.
--
-- Usually, new sessions are created by the system login program, and
--the session leader is the process running the user's login shell.
--
-- A shell that supports job control must arrange to control which job
--can use the terminal at any time. Otherwise there might be multiple
--jobs trying to read from the terminal at once, and confusion about which
--process should receive the input typed by the user. To prevent this,
--the shell must cooperate with the terminal driver using the protocol
--described in this chapter.
--
-- The shell can give unlimited access to the controlling terminal to
--only one process group at a time. This is called the "foreground job"
--on that controlling terminal. Other process groups managed by the shell
--that are executing without such access to the terminal are called
--"background jobs".
--
-- If a background job needs to read from its controlling terminal, it
--is "stopped" by the terminal driver; if the `TOSTOP' mode is set,
--likewise for writing. The user can stop a foreground job by typing the
--SUSP character (*note Special Characters::) and a program can stop any
--job by sending it a `SIGSTOP' signal. It's the responsibility of the
--shell to notice when jobs stop, to notify the user about them, and to
--provide mechanisms for allowing the user to interactively continue
--stopped jobs and switch jobs between foreground and background.
--
-- *Note Access to the Terminal::, for more information about I/O to the
--controlling terminal,
--
--
--File: libc.info, Node: Job Control is Optional, Next: Controlling Terminal, Prev: Concepts of Job Control, Up: Job Control
--
--Job Control is Optional
--=======================
--
-- Not all operating systems support job control. The GNU system does
--support job control, but if you are using the GNU library on some other
--system, that system may not support job control itself.
--
-- You can use the `_POSIX_JOB_CONTROL' macro to test at compile-time
--whether the system supports job control. *Note System Options::.
--
-- If job control is not supported, then there can be only one process
--group per session, which behaves as if it were always in the foreground.
--The functions for creating additional process groups simply fail with
--the error code `ENOSYS'.
--
-- The macros naming the various job control signals (*note Job Control
--Signals::) are defined even if job control is not supported. However,
--the system never generates these signals, and attempts to send a job
--control signal or examine or specify their actions report errors or do
--nothing.
--
--
--File: libc.info, Node: Controlling Terminal, Next: Access to the Terminal, Prev: Job Control is Optional, Up: Job Control
--
--Controlling Terminal of a Process
--=================================
--
-- One of the attributes of a process is its controlling terminal.
--Child processes created with `fork' inherit the controlling terminal
--from their parent process. In this way, all the processes in a session
--inherit the controlling terminal from the session leader. A session
--leader that has control of a terminal is called the "controlling
--process" of that terminal.
--
-- You generally do not need to worry about the exact mechanism used to
--allocate a controlling terminal to a session, since it is done for you
--by the system when you log in.
--
-- An individual process disconnects from its controlling terminal when
--it calls `setsid' to become the leader of a new session. *Note Process
--Group Functions::.
--
--
--File: libc.info, Node: Access to the Terminal, Next: Orphaned Process Groups, Prev: Controlling Terminal, Up: Job Control
--
--Access to the Controlling Terminal
--==================================
--
-- Processes in the foreground job of a controlling terminal have
--unrestricted access to that terminal; background processes do not. This
--section describes in more detail what happens when a process in a
--background job tries to access its controlling terminal.
--
-- When a process in a background job tries to read from its controlling
--terminal, the process group is usually sent a `SIGTTIN' signal. This
--normally causes all of the processes in that group to stop (unless they
--handle the signal and don't stop themselves). However, if the reading
--process is ignoring or blocking this signal, then `read' fails with an
--`EIO' error instead.
--
-- Similarly, when a process in a background job tries to write to its
--controlling terminal, the default behavior is to send a `SIGTTOU'
--signal to the process group. However, the behavior is modified by the
--`TOSTOP' bit of the local modes flags (*note Local Modes::). If this
--bit is not set (which is the default), then writing to the controlling
--terminal is always permitted without sending a signal. Writing is also
--permitted if the `SIGTTOU' signal is being ignored or blocked by the
--writing process.
--
-- Most other terminal operations that a program can do are treated as
--reading or as writing. (The description of each operation should say
--which.)
--
-- For more information about the primitive `read' and `write'
--functions, see *Note I/O Primitives::.
--
--
--File: libc.info, Node: Orphaned Process Groups, Next: Implementing a Shell, Prev: Access to the Terminal, Up: Job Control
--
--Orphaned Process Groups
--=======================
--
-- When a controlling process terminates, its terminal becomes free and
--a new session can be established on it. (In fact, another user could
--log in on the terminal.) This could cause a problem if any processes
--from the old session are still trying to use that terminal.
--
-- To prevent problems, process groups that continue running even after
--the session leader has terminated are marked as "orphaned process
--groups".
--
-- When a process group becomes an orphan, its processes are sent a
--`SIGHUP' signal. Ordinarily, this causes the processes to terminate.
--However, if a program ignores this signal or establishes a handler for
--it (*note Signal Handling::), it can continue running as in the orphan
--process group even after its controlling process terminates; but it
--still cannot access the terminal any more.
--
--
--File: libc.info, Node: Implementing a Shell, Next: Functions for Job Control, Prev: Orphaned Process Groups, Up: Job Control
--
--Implementing a Job Control Shell
--================================
--
-- This section describes what a shell must do to implement job
--control, by presenting an extensive sample program to illustrate the
--concepts involved.
--
--* Menu:
--
--* Data Structures:: Introduction to the sample shell.
--* Initializing the Shell:: What the shell must do to take
-- responsibility for job control.
--* Launching Jobs:: Creating jobs to execute commands.
--* Foreground and Background:: Putting a job in foreground of background.
--* Stopped and Terminated Jobs:: Reporting job status.
--* Continuing Stopped Jobs:: How to continue a stopped job in
-- the foreground or background.
--* Missing Pieces:: Other parts of the shell.
--
--
--File: libc.info, Node: Data Structures, Next: Initializing the Shell, Up: Implementing a Shell
--
--Data Structures for the Shell
-------------------------------
--
-- All of the program examples included in this chapter are part of a
--simple shell program. This section presents data structures and
--utility functions which are used throughout the example.
--
-- The sample shell deals mainly with two data structures. The `job'
--type contains information about a job, which is a set of subprocesses
--linked together with pipes. The `process' type holds information about
--a single subprocess. Here are the relevant data structure declarations:
--
-- /* A process is a single process. */
-- typedef struct process
-- {
-- struct process *next; /* next process in pipeline */
-- char **argv; /* for exec */
-- pid_t pid; /* process ID */
-- char completed; /* true if process has completed */
-- char stopped; /* true if process has stopped */
-- int status; /* reported status value */
-- } process;
--
-- /* A job is a pipeline of processes. */
-- typedef struct job
-- {
-- struct job *next; /* next active job */
-- char *command; /* command line, used for messages */
-- process *first_process; /* list of processes in this job */
-- pid_t pgid; /* process group ID */
-- char notified; /* true if user told about stopped job */
-- struct termios tmodes; /* saved terminal modes */
-- int stdin, stdout, stderr; /* standard i/o channels */
-- } job;
--
-- /* The active jobs are linked into a list. This is its head. */
-- job *first_job = NULL;
--
-- Here are some utility functions that are used for operating on `job'
--objects.
--
-- /* Find the active job with the indicated PGID. */
-- job *
-- find_job (pid_t pgid)
-- {
-- job *j;
--
-- for (j = first_job; j; j = j->next)
-- if (j->pgid == pgid)
-- return j;
-- return NULL;
-- }
--
-- /* Return true if all processes in the job have stopped or completed. */
-- int
-- job_is_stopped (job *j)
-- {
-- process *p;
--
-- for (p = j->first_process; p; p = p->next)
-- if (!p->completed && !p->stopped)
-- return 0;
-- return 1;
-- }
--
-- /* Return true if all processes in the job have completed. */
-- int
-- job_is_completed (job *j)
-- {
-- process *p;
--
-- for (p = j->first_process; p; p = p->next)
-- if (!p->completed)
-- return 0;
-- return 1;
-- }
--
--
--File: libc.info, Node: Initializing the Shell, Next: Launching Jobs, Prev: Data Structures, Up: Implementing a Shell
--
--Initializing the Shell
------------------------
--
-- When a shell program that normally performs job control is started,
--it has to be careful in case it has been invoked from another shell
--that is already doing its own job control.
--
-- A subshell that runs interactively has to ensure that it has been
--placed in the foreground by its parent shell before it can enable job
--control itself. It does this by getting its initial process group ID
--with the `getpgrp' function, and comparing it to the process group ID
--of the current foreground job associated with its controlling terminal
--(which can be retrieved using the `tcgetpgrp' function).
--
-- If the subshell is not running as a foreground job, it must stop
--itself by sending a `SIGTTIN' signal to its own process group. It may
--not arbitrarily put itself into the foreground; it must wait for the
--user to tell the parent shell to do this. If the subshell is continued
--again, it should repeat the check and stop itself again if it is still
--not in the foreground.
--
-- Once the subshell has been placed into the foreground by its parent
--shell, it can enable its own job control. It does this by calling
--`setpgid' to put itself into its own process group, and then calling
--`tcsetpgrp' to place this process group into the foreground.
--
-- When a shell enables job control, it should set itself to ignore all
--the job control stop signals so that it doesn't accidentally stop
--itself. You can do this by setting the action for all the stop signals
--to `SIG_IGN'.
--
-- A subshell that runs non-interactively cannot and should not support
--job control. It must leave all processes it creates in the same process
--group as the shell itself; this allows the non-interactive shell and its
--child processes to be treated as a single job by the parent shell. This
--is easy to do--just don't use any of the job control primitives--but
--you must remember to make the shell do it.
--
-- Here is the initialization code for the sample shell that shows how
--to do all of this.
--
-- /* Keep track of attributes of the shell. */
--
-- #include <sys/types.h>
-- #include <termios.h>
-- #include <unistd.h>
--
-- pid_t shell_pgid;
-- struct termios shell_tmodes;
-- int shell_terminal;
-- int shell_is_interactive;
--
--
-- /* Make sure the shell is running interactively as the foreground job
-- before proceeding. */
--
-- void
-- init_shell ()
-- {
--
-- /* See if we are running interactively. */
-- shell_terminal = STDIN_FILENO;
-- shell_is_interactive = isatty (shell_terminal);
--
-- if (shell_is_interactive)
-- {
-- /* Loop until we are in the foreground. */
-- while (tcgetpgrp (shell_terminal) != (shell_pgid = getpgrp ()))
-- kill (- shell_pgid, SIGTTIN);
--
-- /* Ignore interactive and job-control signals. */
-- signal (SIGINT, SIG_IGN);
-- signal (SIGQUIT, SIG_IGN);
-- signal (SIGTSTP, SIG_IGN);
-- signal (SIGTTIN, SIG_IGN);
-- signal (SIGTTOU, SIG_IGN);
-- signal (SIGCHLD, SIG_IGN);
--
-- /* Put ourselves in our own process group. */
-- shell_pgid = getpid ();
-- if (setpgid (shell_pgid, shell_pgid) < 0)
-- {
-- perror ("Couldn't put the shell in its own process group");
-- exit (1);
-- }
--
-- /* Grab control of the terminal. */
-- tcsetpgrp (shell_terminal, shell_pgid);
--
-- /* Save default terminal attributes for shell. */
-- tcgetattr (shell_terminal, &shell_tmodes);
-- }
-- }
--
--
--File: libc.info, Node: Launching Jobs, Next: Foreground and Background, Prev: Initializing the Shell, Up: Implementing a Shell
--
--Launching Jobs
----------------
--
-- Once the shell has taken responsibility for performing job control on
--its controlling terminal, it can launch jobs in response to commands
--typed by the user.
--
-- To create the processes in a process group, you use the same `fork'
--and `exec' functions described in *Note Process Creation Concepts::.
--Since there are multiple child processes involved, though, things are a
--little more complicated and you must be careful to do things in the
--right order. Otherwise, nasty race conditions can result.
--
-- You have two choices for how to structure the tree of parent-child
--relationships among the processes. You can either make all the
--processes in the process group be children of the shell process, or you
--can make one process in group be the ancestor of all the other processes
--in that group. The sample shell program presented in this chapter uses
--the first approach because it makes bookkeeping somewhat simpler.
--
-- As each process is forked, it should put itself in the new process
--group by calling `setpgid'; see *Note Process Group Functions::. The
--first process in the new group becomes its "process group leader", and
--its process ID becomes the "process group ID" for the group.
--
-- The shell should also call `setpgid' to put each of its child
--processes into the new process group. This is because there is a
--potential timing problem: each child process must be put in the process
--group before it begins executing a new program, and the shell depends on
--having all the child processes in the group before it continues
--executing. If both the child processes and the shell call `setpgid',
--this ensures that the right things happen no matter which process gets
--to it first.
--
-- If the job is being launched as a foreground job, the new process
--group also needs to be put into the foreground on the controlling
--terminal using `tcsetpgrp'. Again, this should be done by the shell as
--well as by each of its child processes, to avoid race conditions.
--
-- The next thing each child process should do is to reset its signal
--actions.
--
-- During initialization, the shell process set itself to ignore job
--control signals; see *Note Initializing the Shell::. As a result, any
--child processes it creates also ignore these signals by inheritance.
--This is definitely undesirable, so each child process should explicitly
--set the actions for these signals back to `SIG_DFL' just after it is
--forked.
--
-- Since shells follow this convention, applications can assume that
--they inherit the correct handling of these signals from the parent
--process. But every application has a responsibility not to mess up the
--handling of stop signals. Applications that disable the normal
--interpretation of the SUSP character should provide some other
--mechanism for the user to stop the job. When the user invokes this
--mechanism, the program should send a `SIGTSTP' signal to the process
--group of the process, not just to the process itself. *Note Signaling
--Another Process::.
--
-- Finally, each child process should call `exec' in the normal way.
--This is also the point at which redirection of the standard input and
--output channels should be handled. *Note Duplicating Descriptors::,
--for an explanation of how to do this.
--
-- Here is the function from the sample shell program that is
--responsible for launching a program. The function is executed by each
--child process immediately after it has been forked by the shell, and
--never returns.
--
-- void
-- launch_process (process *p, pid_t pgid,
-- int infile, int outfile, int errfile,
-- int foreground)
-- {
-- pid_t pid;
--
-- if (shell_is_interactive)
-- {
-- /* Put the process into the process group and give the process group
-- the terminal, if appropriate.
-- This has to be done both by the shell and in the individual
-- child processes because of potential race conditions. */
-- pid = getpid ();
-- if (pgid == 0) pgid = pid;
-- setpgid (pid, pgid);
-- if (foreground)
-- tcsetpgrp (shell_terminal, pgid);
--
-- /* Set the handling for job control signals back to the default. */
-- signal (SIGINT, SIG_DFL);
-- signal (SIGQUIT, SIG_DFL);
-- signal (SIGTSTP, SIG_DFL);
-- signal (SIGTTIN, SIG_DFL);
-- signal (SIGTTOU, SIG_DFL);
-- signal (SIGCHLD, SIG_DFL);
-- }
--
-- /* Set the standard input/output channels of the new process. */
-- if (infile != STDIN_FILENO)
-- {
-- dup2 (infile, STDIN_FILENO);
-- close (infile);
-- }
-- if (outfile != STDOUT_FILENO)
-- {
-- dup2 (outfile, STDOUT_FILENO);
-- close (outfile);
-- }
-- if (errfile != STDERR_FILENO)
-- {
-- dup2 (errfile, STDERR_FILENO);
-- close (errfile);
-- }
--
-- /* Exec the new process. Make sure we exit. */
-- execvp (p->argv[0], p->argv);
-- perror ("execvp");
-- exit (1);
-- }
--
-- If the shell is not running interactively, this function does not do
--anything with process groups or signals. Remember that a shell not
--performing job control must keep all of its subprocesses in the same
--process group as the shell itself.
--
-- Next, here is the function that actually launches a complete job.
--After creating the child processes, this function calls some other
--functions to put the newly created job into the foreground or
--background; these are discussed in *Note Foreground and Background::.
--
-- void
-- launch_job (job *j, int foreground)
-- {
-- process *p;
-- pid_t pid;
-- int mypipe[2], infile, outfile;
--
-- infile = j->stdin;
-- for (p = j->first_process; p; p = p->next)
-- {
-- /* Set up pipes, if necessary. */
-- if (p->next)
-- {
-- if (pipe (mypipe) < 0)
-- {
-- perror ("pipe");
-- exit (1);
-- }
-- outfile = mypipe[1];
-- }
-- else
-- outfile = j->stdout;
--
-- /* Fork the child processes. */
-- pid = fork ();
-- if (pid == 0)
-- /* This is the child process. */
-- launch_process (p, j->pgid, infile,
-- outfile, j->stderr, foreground);
-- else if (pid < 0)
-- {
-- /* The fork failed. */
-- perror ("fork");
-- exit (1);
-- }
-- else
-- {
-- /* This is the parent process. */
-- p->pid = pid;
-- if (shell_is_interactive)
-- {
-- if (!j->pgid)
-- j->pgid = pid;
-- setpgid (pid, j->pgid);
-- }
-- }
--
-- /* Clean up after pipes. */
-- if (infile != j->stdin)
-- close (infile);
-- if (outfile != j->stdout)
-- close (outfile);
-- infile = mypipe[0];
-- }
--
-- format_job_info (j, "launched");
--
-- if (!shell_is_interactive)
-- wait_for_job (j);
-- else if (foreground)
-- put_job_in_foreground (j, 0);
-- else
-- put_job_in_background (j, 0);
-- }
--
--
--File: libc.info, Node: Foreground and Background, Next: Stopped and Terminated Jobs, Prev: Launching Jobs, Up: Implementing a Shell
--
--Foreground and Background
---------------------------
--
-- Now let's consider what actions must be taken by the shell when it
--launches a job into the foreground, and how this differs from what must
--be done when a background job is launched.
--
-- When a foreground job is launched, the shell must first give it
--access to the controlling terminal by calling `tcsetpgrp'. Then, the
--shell should wait for processes in that process group to terminate or
--stop. This is discussed in more detail in *Note Stopped and Terminated
--Jobs::.
--
-- When all of the processes in the group have either completed or
--stopped, the shell should regain control of the terminal for its own
--process group by calling `tcsetpgrp' again. Since stop signals caused
--by I/O from a background process or a SUSP character typed by the user
--are sent to the process group, normally all the processes in the job
--stop together.
--
-- The foreground job may have left the terminal in a strange state, so
--the shell should restore its own saved terminal modes before
--continuing. In case the job is merely stopped, the shell should first
--save the current terminal modes so that it can restore them later if
--the job is continued. The functions for dealing with terminal modes are
--`tcgetattr' and `tcsetattr'; these are described in *Note Terminal
--Modes::.
--
-- Here is the sample shell's function for doing all of this.
--
-- /* Put job J in the foreground. If CONT is nonzero,
-- restore the saved terminal modes and send the process group a
-- `SIGCONT' signal to wake it up before we block. */
--
-- void
-- put_job_in_foreground (job *j, int cont)
-- {
-- /* Put the job into the foreground. */
-- tcsetpgrp (shell_terminal, j->pgid);
--
-- /* Send the job a continue signal, if necessary. */
-- if (cont)
-- {
-- tcsetattr (shell_terminal, TCSADRAIN, &j->tmodes);
-- if (kill (- j->pgid, SIGCONT) < 0)
-- perror ("kill (SIGCONT)");
-- }
--
-- /* Wait for it to report. */
-- wait_for_job (j);
--
-- /* Put the shell back in the foreground. */
-- tcsetpgrp (shell_terminal, shell_pgid);
--
-- /* Restore the shell's terminal modes. */
-- tcgetattr (shell_terminal, &j->tmodes);
-- tcsetattr (shell_terminal, TCSADRAIN, &shell_tmodes);
-- }
--
-- If the process group is launched as a background job, the shell
--should remain in the foreground itself and continue to read commands
--from the terminal.
--
-- In the sample shell, there is not much that needs to be done to put
--a job into the background. Here is the function it uses:
--
-- /* Put a job in the background. If the cont argument is true, send
-- the process group a `SIGCONT' signal to wake it up. */
--
-- void
-- put_job_in_background (job *j, int cont)
-- {
-- /* Send the job a continue signal, if necessary. */
-- if (cont)
-- if (kill (-j->pgid, SIGCONT) < 0)
-- perror ("kill (SIGCONT)");
-- }
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-45 glibc-2.3.2-200304020432/manual/libc.info-45
---- glibc-2.3.2/manual/libc.info-45 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-45 Thu Jan 1 01:00:00 1970
-@@ -1,1245 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Stopped and Terminated Jobs, Next: Continuing Stopped Jobs, Prev: Foreground and Background, Up: Implementing a Shell
--
--Stopped and Terminated Jobs
-----------------------------
--
-- When a foreground process is launched, the shell must block until
--all of the processes in that job have either terminated or stopped. It
--can do this by calling the `waitpid' function; see *Note Process
--Completion::. Use the `WUNTRACED' option so that status is reported
--for processes that stop as well as processes that terminate.
--
-- The shell must also check on the status of background jobs so that it
--can report terminated and stopped jobs to the user; this can be done by
--calling `waitpid' with the `WNOHANG' option. A good place to put a
--such a check for terminated and stopped jobs is just before prompting
--for a new command.
--
-- The shell can also receive asynchronous notification that there is
--status information available for a child process by establishing a
--handler for `SIGCHLD' signals. *Note Signal Handling::.
--
-- In the sample shell program, the `SIGCHLD' signal is normally
--ignored. This is to avoid reentrancy problems involving the global data
--structures the shell manipulates. But at specific times when the shell
--is not using these data structures--such as when it is waiting for
--input on the terminal--it makes sense to enable a handler for
--`SIGCHLD'. The same function that is used to do the synchronous status
--checks (`do_job_notification', in this case) can also be called from
--within this handler.
--
-- Here are the parts of the sample shell program that deal with
--checking the status of jobs and reporting the information to the user.
--
-- /* Store the status of the process PID that was returned by waitpid.
-- Return 0 if all went well, nonzero otherwise. */
--
-- int
-- mark_process_status (pid_t pid, int status)
-- {
-- job *j;
-- process *p;
--
-- if (pid > 0)
-- {
-- /* Update the record for the process. */
-- for (j = first_job; j; j = j->next)
-- for (p = j->first_process; p; p = p->next)
-- if (p->pid == pid)
-- {
-- p->status = status;
-- if (WIFSTOPPED (status))
-- p->stopped = 1;
-- else
-- {
-- p->completed = 1;
-- if (WIFSIGNALED (status))
-- fprintf (stderr, "%d: Terminated by signal %d.\n",
-- (int) pid, WTERMSIG (p->status));
-- }
-- return 0;
-- }
-- fprintf (stderr, "No child process %d.\n", pid);
-- return -1;
-- }
-- else if (pid == 0 || errno == ECHILD)
-- /* No processes ready to report. */
-- return -1;
-- else {
-- /* Other weird errors. */
-- perror ("waitpid");
-- return -1;
-- }
-- }
--
-- /* Check for processes that have status information available,
-- without blocking. */
--
-- void
-- update_status (void)
-- {
-- int status;
-- pid_t pid;
--
-- do
-- pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG);
-- while (!mark_process_status (pid, status));
-- }
--
-- /* Check for processes that have status information available,
-- blocking until all processes in the given job have reported. */
--
-- void
-- wait_for_job (job *j)
-- {
-- int status;
-- pid_t pid;
--
-- do
-- pid = waitpid (WAIT_ANY, &status, WUNTRACED);
-- while (!mark_process_status (pid, status)
-- && !job_is_stopped (j)
-- && !job_is_completed (j));
-- }
--
-- /* Format information about job status for the user to look at. */
--
-- void
-- format_job_info (job *j, const char *status)
-- {
-- fprintf (stderr, "%ld (%s): %s\n", (long)j->pgid, status, j->command);
-- }
--
-- /* Notify the user about stopped or terminated jobs.
-- Delete terminated jobs from the active job list. */
--
-- void
-- do_job_notification (void)
-- {
-- job *j, *jlast, *jnext;
-- process *p;
--
-- /* Update status information for child processes. */
-- update_status ();
--
-- jlast = NULL;
-- for (j = first_job; j; j = jnext)
-- {
-- jnext = j->next;
--
-- /* If all processes have completed, tell the user the job has
-- completed and delete it from the list of active jobs. */
-- if (job_is_completed (j)) {
-- format_job_info (j, "completed");
-- if (jlast)
-- jlast->next = jnext;
-- else
-- first_job = jnext;
-- free_job (j);
-- }
--
-- /* Notify the user about stopped jobs,
-- marking them so that we won't do this more than once. */
-- else if (job_is_stopped (j) && !j->notified) {
-- format_job_info (j, "stopped");
-- j->notified = 1;
-- jlast = j;
-- }
--
-- /* Don't say anything about jobs that are still running. */
-- else
-- jlast = j;
-- }
-- }
--
--
--File: libc.info, Node: Continuing Stopped Jobs, Next: Missing Pieces, Prev: Stopped and Terminated Jobs, Up: Implementing a Shell
--
--Continuing Stopped Jobs
-------------------------
--
-- The shell can continue a stopped job by sending a `SIGCONT' signal
--to its process group. If the job is being continued in the foreground,
--the shell should first invoke `tcsetpgrp' to give the job access to the
--terminal, and restore the saved terminal settings. After continuing a
--job in the foreground, the shell should wait for the job to stop or
--complete, as if the job had just been launched in the foreground.
--
-- The sample shell program handles both newly created and continued
--jobs with the same pair of functions, `put_job_in_foreground' and
--`put_job_in_background'. The definitions of these functions were given
--in *Note Foreground and Background::. When continuing a stopped job, a
--nonzero value is passed as the CONT argument to ensure that the
--`SIGCONT' signal is sent and the terminal modes reset, as appropriate.
--
-- This leaves only a function for updating the shell's internal
--bookkeeping about the job being continued:
--
-- /* Mark a stopped job J as being running again. */
--
-- void
-- mark_job_as_running (job *j)
-- {
-- Process *p;
--
-- for (p = j->first_process; p; p = p->next)
-- p->stopped = 0;
-- j->notified = 0;
-- }
--
-- /* Continue the job J. */
--
-- void
-- continue_job (job *j, int foreground)
-- {
-- mark_job_as_running (j);
-- if (foreground)
-- put_job_in_foreground (j, 1);
-- else
-- put_job_in_background (j, 1);
-- }
--
--
--File: libc.info, Node: Missing Pieces, Prev: Continuing Stopped Jobs, Up: Implementing a Shell
--
--The Missing Pieces
--------------------
--
-- The code extracts for the sample shell included in this chapter are
--only a part of the entire shell program. In particular, nothing at all
--has been said about how `job' and `program' data structures are
--allocated and initialized.
--
-- Most real shells provide a complex user interface that has support
--for a command language; variables; abbreviations, substitutions, and
--pattern matching on file names; and the like. All of this is far too
--complicated to explain here! Instead, we have concentrated on showing
--how to implement the core process creation and job control functions
--that can be called from such a shell.
--
-- Here is a table summarizing the major entry points we have presented:
--
--`void init_shell (void)'
-- Initialize the shell's internal state. *Note Initializing the
-- Shell::.
--
--`void launch_job (job *J, int FOREGROUND)'
-- Launch the job J as either a foreground or background job. *Note
-- Launching Jobs::.
--
--`void do_job_notification (void)'
-- Check for and report any jobs that have terminated or stopped.
-- Can be called synchronously or within a handler for `SIGCHLD'
-- signals. *Note Stopped and Terminated Jobs::.
--
--`void continue_job (job *J, int FOREGROUND)'
-- Continue the job J. *Note Continuing Stopped Jobs::.
--
-- Of course, a real shell would also want to provide other functions
--for managing jobs. For example, it would be useful to have commands to
--list all active jobs or to send a signal (such as `SIGKILL') to a job.
--
--
--File: libc.info, Node: Functions for Job Control, Prev: Implementing a Shell, Up: Job Control
--
--Functions for Job Control
--=========================
--
-- This section contains detailed descriptions of the functions relating
--to job control.
--
--* Menu:
--
--* Identifying the Terminal:: Determining the controlling terminal's name.
--* Process Group Functions:: Functions for manipulating process groups.
--* Terminal Access Functions:: Functions for controlling terminal access.
--
--
--File: libc.info, Node: Identifying the Terminal, Next: Process Group Functions, Up: Functions for Job Control
--
--Identifying the Controlling Terminal
--------------------------------------
--
-- You can use the `ctermid' function to get a file name that you can
--use to open the controlling terminal. In the GNU library, it returns
--the same string all the time: `"/dev/tty"'. That is a special "magic"
--file name that refers to the controlling terminal of the current
--process (if it has one). To find the name of the specific terminal
--device, use `ttyname'; *note Is It a Terminal::.
--
-- The function `ctermid' is declared in the header file `stdio.h'.
--
-- - Function: char * ctermid (char *STRING)
-- The `ctermid' function returns a string containing the file name of
-- the controlling terminal for the current process. If STRING is
-- not a null pointer, it should be an array that can hold at least
-- `L_ctermid' characters; the string is returned in this array.
-- Otherwise, a pointer to a string in a static area is returned,
-- which might get overwritten on subsequent calls to this function.
--
-- An empty string is returned if the file name cannot be determined
-- for any reason. Even if a file name is returned, access to the
-- file it represents is not guaranteed.
--
-- - Macro: int L_ctermid
-- The value of this macro is an integer constant expression that
-- represents the size of a string large enough to hold the file name
-- returned by `ctermid'.
--
-- See also the `isatty' and `ttyname' functions, in *Note Is It a
--Terminal::.
--
--
--File: libc.info, Node: Process Group Functions, Next: Terminal Access Functions, Prev: Identifying the Terminal, Up: Functions for Job Control
--
--Process Group Functions
-------------------------
--
-- Here are descriptions of the functions for manipulating process
--groups. Your program should include the header files `sys/types.h' and
--`unistd.h' to use these functions.
--
-- - Function: pid_t setsid (void)
-- The `setsid' function creates a new session. The calling process
-- becomes the session leader, and is put in a new process group whose
-- process group ID is the same as the process ID of that process.
-- There are initially no other processes in the new process group,
-- and no other process groups in the new session.
--
-- This function also makes the calling process have no controlling
-- terminal.
--
-- The `setsid' function returns the new process group ID of the
-- calling process if successful. A return value of `-1' indicates an
-- error. The following `errno' error conditions are defined for this
-- function:
--
-- `EPERM'
-- The calling process is already a process group leader, or
-- there is already another process group around that has the
-- same process group ID.
--
-- - Function: pid_t getsid (pid_t PID)
-- The `getsid' function returns the process group ID of the session
-- leader of the specified process. If a PID is `0', the process
-- group ID of the session leader of the current process is returned.
--
-- In case of error `-1' is returned and `errno' is set. The
-- following `errno' error conditions are defined for this function:
--
-- `ESRCH'
-- There is no process with the given process ID PID.
--
-- `EPERM'
-- The calling process and the process specified by PID are in
-- different sessions, and the implementation doesn't allow to
-- access the process group ID of the session leader of the
-- process with ID PID from the calling process.
--
-- The `getpgrp' function has two definitions: one derived from BSD
--Unix, and one from the POSIX.1 standard. The feature test macros you
--have selected (*note Feature Test Macros::) determine which definition
--you get. Specifically, you get the BSD version if you define
--`_BSD_SOURCE'; otherwise, you get the POSIX version if you define
--`_POSIX_SOURCE' or `_GNU_SOURCE'. Programs written for old BSD systems
--will not include `unistd.h', which defines `getpgrp' specially under
--`_BSD_SOURCE'. You must link such programs with the `-lbsd-compat'
--option to get the BSD definition.
--
-- - POSIX.1 Function: pid_t getpgrp (void)
-- The POSIX.1 definition of `getpgrp' returns the process group ID of
-- the calling process.
--
-- - BSD Function: pid_t getpgrp (pid_t PID)
-- The BSD definition of `getpgrp' returns the process group ID of the
-- process PID. You can supply a value of `0' for the PID argument
-- to get information about the calling process.
--
-- - System V Function: int getpgid (pid_t PID)
-- `getpgid' is the same as the BSD function `getpgrp'. It returns
-- the process group ID of the process PID. You can supply a value
-- of `0' for the PID argument to get information about the calling
-- process.
--
-- In case of error `-1' is returned and `errno' is set. The
-- following `errno' error conditions are defined for this function:
--
-- `ESRCH'
-- There is no process with the given process ID PID. The
-- calling process and the process specified by PID are in
-- different sessions, and the implementation doesn't allow to
-- access the process group ID of the process with ID PID from
-- the calling process.
--
-- - Function: int setpgid (pid_t PID, pid_t PGID)
-- The `setpgid' function puts the process PID into the process group
-- PGID. As a special case, either PID or PGID can be zero to
-- indicate the process ID of the calling process.
--
-- This function fails on a system that does not support job control.
-- *Note Job Control is Optional::, for more information.
--
-- If the operation is successful, `setpgid' returns zero. Otherwise
-- it returns `-1'. The following `errno' error conditions are
-- defined for this function:
--
-- `EACCES'
-- The child process named by PID has executed an `exec'
-- function since it was forked.
--
-- `EINVAL'
-- The value of the PGID is not valid.
--
-- `ENOSYS'
-- The system doesn't support job control.
--
-- `EPERM'
-- The process indicated by the PID argument is a session leader,
-- or is not in the same session as the calling process, or the
-- value of the PGID argument doesn't match a process group ID
-- in the same session as the calling process.
--
-- `ESRCH'
-- The process indicated by the PID argument is not the calling
-- process or a child of the calling process.
--
-- - Function: int setpgrp (pid_t PID, pid_t PGID)
-- This is the BSD Unix name for `setpgid'. Both functions do exactly
-- the same thing.
--
--
--File: libc.info, Node: Terminal Access Functions, Prev: Process Group Functions, Up: Functions for Job Control
--
--Functions for Controlling Terminal Access
-------------------------------------------
--
-- These are the functions for reading or setting the foreground
--process group of a terminal. You should include the header files
--`sys/types.h' and `unistd.h' in your application to use these functions.
--
-- Although these functions take a file descriptor argument to specify
--the terminal device, the foreground job is associated with the terminal
--file itself and not a particular open file descriptor.
--
-- - Function: pid_t tcgetpgrp (int FILEDES)
-- This function returns the process group ID of the foreground
-- process group associated with the terminal open on descriptor
-- FILEDES.
--
-- If there is no foreground process group, the return value is a
-- number greater than `1' that does not match the process group ID
-- of any existing process group. This can happen if all of the
-- processes in the job that was formerly the foreground job have
-- terminated, and no other job has yet been moved into the
-- foreground.
--
-- In case of an error, a value of `-1' is returned. The following
-- `errno' error conditions are defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOSYS'
-- The system doesn't support job control.
--
-- `ENOTTY'
-- The terminal file associated with the FILEDES argument isn't
-- the controlling terminal of the calling process.
--
-- - Function: int tcsetpgrp (int FILEDES, pid_t PGID)
-- This function is used to set a terminal's foreground process group
-- ID. The argument FILEDES is a descriptor which specifies the
-- terminal; PGID specifies the process group. The calling process
-- must be a member of the same session as PGID and must have the same
-- controlling terminal.
--
-- For terminal access purposes, this function is treated as output.
-- If it is called from a background process on its controlling
-- terminal, normally all processes in the process group are sent a
-- `SIGTTOU' signal. The exception is if the calling process itself
-- is ignoring or blocking `SIGTTOU' signals, in which case the
-- operation is performed and no signal is sent.
--
-- If successful, `tcsetpgrp' returns `0'. A return value of `-1'
-- indicates an error. The following `errno' error conditions are
-- defined for this function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The PGID argument is not valid.
--
-- `ENOSYS'
-- The system doesn't support job control.
--
-- `ENOTTY'
-- The FILEDES isn't the controlling terminal of the calling
-- process.
--
-- `EPERM'
-- The PGID isn't a process group in the same session as the
-- calling process.
--
-- - Function: pid_t tcgetsid (int FILDES)
-- This function is used to obtain the process group ID of the session
-- for which the terminal specified by FILDES is the controlling
-- terminal. If the call is successful the group ID is returned.
-- Otherwise the return value is `(pid_t) -1' and the global variable
-- ERRNO is set to the following value:
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `ENOTTY'
-- The calling process does not have a controlling terminal, or
-- the file is not the controlling terminal.
--
--
--File: libc.info, Node: Name Service Switch, Next: Users and Groups, Prev: Job Control, Up: Top
--
--System Databases and Name Service Switch
--****************************************
--
-- Various functions in the C Library need to be configured to work
--correctly in the local environment. Traditionally, this was done by
--using files (e.g., `/etc/passwd'), but other nameservices (like the
--Network Information Service (NIS) and the Domain Name Service (DNS))
--became popular, and were hacked into the C library, usually with a fixed
--search order (*note frobnicate: (jargon)frobnicate.).
--
-- The GNU C Library contains a cleaner solution of this problem. It is
--designed after a method used by Sun Microsystems in the C library of
--Solaris 2. GNU C Library follows their name and calls this scheme
--"Name Service Switch" (NSS).
--
-- Though the interface might be similar to Sun's version there is no
--common code. We never saw any source code of Sun's implementation and
--so the internal interface is incompatible. This also manifests in the
--file names we use as we will see later.
--
--* Menu:
--
--* NSS Basics:: What is this NSS good for.
--* NSS Configuration File:: Configuring NSS.
--* NSS Module Internals:: How does it work internally.
--* Extending NSS:: What to do to add services or databases.
--
--
--File: libc.info, Node: NSS Basics, Next: NSS Configuration File, Prev: Name Service Switch, Up: Name Service Switch
--
--NSS Basics
--==========
--
-- The basic idea is to put the implementation of the different services
--offered to access the databases in separate modules. This has some
--advantages:
--
-- 1. Contributors can add new services without adding them to GNU C
-- Library.
--
-- 2. The modules can be updated separately.
--
-- 3. The C library image is smaller.
--
-- To fulfill the first goal above the ABI of the modules will be
--described below. For getting the implementation of a new service right
--it is important to understand how the functions in the modules get
--called. They are in no way designed to be used by the programmer
--directly. Instead the programmer should only use the documented and
--standardized functions to access the databases.
--
--The databases available in the NSS are
--
--`aliases'
-- Mail aliases
--
--`ethers'
-- Ethernet numbers,
--
--`group'
-- Groups of users, *note Group Database::.
--
--`hosts'
-- Host names and numbers, *note Host Names::.
--
--`netgroup'
-- Network wide list of host and users, *note Netgroup Database::.
--
--`networks'
-- Network names and numbers, *note Networks Database::.
--
--`protocols'
-- Network protocols, *note Protocols Database::.
--
--`passwd'
-- User passwords, *note User Database::.
--
--`rpc'
-- Remote procedure call names and numbers,
--
--`services'
-- Network services, *note Services Database::.
--
--`shadow'
-- Shadow user passwords,
--
--There will be some more added later (`automount', `bootparams',
--`netmasks', and `publickey').
--
--
--File: libc.info, Node: NSS Configuration File, Next: NSS Module Internals, Prev: NSS Basics, Up: Name Service Switch
--
--The NSS Configuration File
--==========================
--
-- Somehow the NSS code must be told about the wishes of the user. For
--this reason there is the file `/etc/nsswitch.conf'. For each database
--this file contain a specification how the lookup process should work.
--The file could look like this:
--
-- # /etc/nsswitch.conf
-- #
-- # Name Service Switch configuration file.
-- #
--
-- passwd: db files nis
-- shadow: files
-- group: db files nis
--
-- hosts: files nisplus nis dns
-- networks: nisplus [NOTFOUND=return] files
--
-- ethers: nisplus [NOTFOUND=return] db files
-- protocols: nisplus [NOTFOUND=return] db files
-- rpc: nisplus [NOTFOUND=return] db files
-- services: nisplus [NOTFOUND=return] db files
--
-- The first column is the database as you can guess from the table
--above. The rest of the line specifies how the lookup process works.
--Please note that you specify the way it works for each database
--individually. This cannot be done with the old way of a monolithic
--implementation.
--
-- The configuration specification for each database can contain two
--different items:
--
-- * the service specification like `files', `db', or `nis'.
--
-- * the reaction on lookup result like `[NOTFOUND=return]'.
--
--* Menu:
--
--* Services in the NSS configuration:: Service names in the NSS configuration.
--* Actions in the NSS configuration:: React appropriately to the lookup result.
--* Notes on NSS Configuration File:: Things to take care about while
-- configuring NSS.
--
--
--File: libc.info, Node: Services in the NSS configuration, Next: Actions in the NSS configuration, Prev: NSS Configuration File, Up: NSS Configuration File
--
--Services in the NSS configuration File
----------------------------------------
--
-- The above example file mentions four different services: `files',
--`db', `nis', and `nisplus'. This does not mean these services are
--available on all sites and it does also not mean these are all the
--services which will ever be available.
--
-- In fact, these names are simply strings which the NSS code uses to
--find the implicitly addressed functions. The internal interface will be
--described later. Visible to the user are the modules which implement an
--individual service.
--
-- Assume the service NAME shall be used for a lookup. The code for
--this service is implemented in a module called `libnss_NAME'. On a
--system supporting shared libraries this is in fact a shared library
--with the name (for example) `libnss_NAME.so.2'. The number at the end
--is the currently used version of the interface which will not change
--frequently. Normally the user should not have to be cognizant of these
--files since they should be placed in a directory where they are found
--automatically. Only the names of all available services are important.
--
--
--File: libc.info, Node: Actions in the NSS configuration, Next: Notes on NSS Configuration File, Prev: Services in the NSS configuration, Up: NSS Configuration File
--
--Actions in the NSS configuration
----------------------------------
--
-- The second item in the specification gives the user much finer
--control on the lookup process. Action items are placed between two
--service names and are written within brackets. The general form is
--
-- `[' ( `!'? STATUS `=' ACTION )+ `]'
--
--where
--
-- STATUS => success | notfound | unavail | tryagain
-- ACTION => return | continue
--
-- The case of the keywords is insignificant. The STATUS values are
--the results of a call to a lookup function of a specific service. They
--mean
--
--`success'
-- No error occurred and the wanted entry is returned. The default
-- action for this is `return'.
--
--`notfound'
-- The lookup process works ok but the needed value was not found.
-- The default action is `continue'.
--
--`unavail'
-- The service is permanently unavailable. This can either mean the
-- needed file is not available, or, for DNS, the server is not
-- available or does not allow queries. The default action is
-- `continue'.
--
--`tryagain'
-- The service is temporarily unavailable. This could mean a file is
-- locked or a server currently cannot accept more connections. The
-- default action is `continue'.
--
--If we have a line like
--
-- ethers: nisplus [NOTFOUND=return] db files
--
--this is equivalent to
--
-- ethers: nisplus [SUCCESS=return NOTFOUND=return UNAVAIL=continue
-- TRYAGAIN=continue]
-- db [SUCCESS=return NOTFOUND=continue UNAVAIL=continue
-- TRYAGAIN=continue]
-- files
--
--(except that it would have to be written on one line). The default
--value for the actions are normally what you want, and only need to be
--changed in exceptional cases.
--
-- If the optional `!' is placed before the STATUS this means the
--following action is used for all statuses but STATUS itself. I.e., `!'
--is negation as in the C language (and others).
--
-- Before we explain the exception which makes this action item
--necessary one more remark: obviously it makes no sense to add another
--action item after the `files' service. Since there is no other service
--following the action _always_ is `return'.
--
-- Now, why is this `[NOTFOUND=return]' action useful? To understand
--this we should know that the `nisplus' service is often complete; i.e.,
--if an entry is not available in the NIS+ tables it is not available
--anywhere else. This is what is expressed by this action item: it is
--useless to examine further services since they will not give us a
--result.
--
-- The situation would be different if the NIS+ service is not available
--because the machine is booting. In this case the return value of the
--lookup function is not `notfound' but instead `unavail'. And as you
--can see in the complete form above: in this situation the `db' and
--`files' services are used. Neat, isn't it? The system administrator
--need not pay special care for the time the system is not completely
--ready to work (while booting or shutdown or network problems).
--
--
--File: libc.info, Node: Notes on NSS Configuration File, Prev: Actions in the NSS configuration, Up: NSS Configuration File
--
--Notes on the NSS Configuration File
-------------------------------------
--
-- Finally a few more hints. The NSS implementation is not completely
--helpless if `/etc/nsswitch.conf' does not exist. For all supported
--databases there is a default value so it should normally be possible to
--get the system running even if the file is corrupted or missing.
--
-- For the `hosts' and `networks' databases the default value is `dns
--[!UNAVAIL=return] files'. I.e., the system is prepared for the DNS
--service not to be available but if it is available the answer it
--returns is definitive.
--
-- The `passwd', `group', and `shadow' databases are traditionally
--handled in a special way. The appropriate files in the `/etc'
--directory are read but if an entry with a name starting with a `+'
--character is found NIS is used. This kind of lookup remains possible
--by using the special lookup service `compat' and the default value for
--the three databases above is `compat [NOTFOUND=return] files'.
--
-- For all other databases the default value is `nis [NOTFOUND=return]
--files'. This solution give the best chance to be correct since NIS and
--file based lookup is used.
--
-- A second point is that the user should try to optimize the lookup
--process. The different service have different response times. A
--simple file look up on a local file could be fast, but if the file is
--long and the needed entry is near the end of the file this may take
--quite some time. In this case it might be better to use the `db'
--service which allows fast local access to large data sets.
--
-- Often the situation is that some global information like NIS must be
--used. So it is unavoidable to use service entries like `nis' etc. But
--one should avoid slow services like this if possible.
--
--
--File: libc.info, Node: NSS Module Internals, Next: Extending NSS, Prev: NSS Configuration File, Up: Name Service Switch
--
--NSS Module Internals
--====================
--
-- Now it is time to describe what the modules look like. The functions
--contained in a module are identified by their names. I.e., there is no
--jump table or the like. How this is done is of no interest here; those
--interested in this topic should read about Dynamic Linking.
--
--* Menu:
--
--* NSS Module Names:: Construction of the interface function of
-- the NSS modules.
--* NSS Modules Interface:: Programming interface in the NSS module
-- functions.
--
--
--File: libc.info, Node: NSS Module Names, Next: NSS Modules Interface, Prev: NSS Module Internals, Up: NSS Module Internals
--
--The Naming Scheme of the NSS Modules
--------------------------------------
--
--The name of each function consist of various parts:
--
-- _nss_SERVICE_FUNCTION
--
-- SERVICE of course corresponds to the name of the module this
--function is found in.(1) The FUNCTION part is derived from the
--interface function in the C library itself. If the user calls the
--function `gethostbyname' and the service used is `files' the function
--
-- _nss_files_gethostbyname_r
--
--in the module
--
-- libnss_files.so.2
--
--is used. You see, what is explained above in not the whole truth. In
--fact the NSS modules only contain reentrant versions of the lookup
--functions. I.e., if the user would call the `gethostbyname_r' function
--this also would end in the above function. For all user interface
--functions the C library maps this call to a call to the reentrant
--function. For reentrant functions this is trivial since the interface
--is (nearly) the same. For the non-reentrant version The library keeps
--internal buffers which are used to replace the user supplied buffer.
--
-- I.e., the reentrant functions _can_ have counterparts. No service
--module is forced to have functions for all databases and all kinds to
--access them. If a function is not available it is simply treated as if
--the function would return `unavail' (*note Actions in the NSS
--configuration::).
--
-- The file name `libnss_files.so.2' would be on a Solaris 2 system
--`nss_files.so.2'. This is the difference mentioned above. Sun's NSS
--modules are usable as modules which get indirectly loaded only.
--
-- The NSS modules in the GNU C Library are prepared to be used as
--normal libraries themselves. This is _not_ true at the moment, though.
--However, the organization of the name space in the modules does not
--make it impossible like it is for Solaris. Now you can see why the
--modules are still libraries.(2)
--
-- ---------- Footnotes ----------
--
-- (1) Now you might ask why this information is duplicated. The
--answer is that we want to make it possible to link directly with these
--shared objects.
--
-- (2) There is a second explanation: we were too lazy to change the
--Makefiles to allow the generation of shared objects not starting with
--`lib' but don't tell this to anybody.
--
--
--File: libc.info, Node: NSS Modules Interface, Prev: NSS Module Names, Up: NSS Module Internals
--
--The Interface of the Function in NSS Modules
----------------------------------------------
--
-- Now we know about the functions contained in the modules. It is now
--time to describe the types. When we mentioned the reentrant versions of
--the functions above, this means there are some additional arguments
--(compared with the standard, non-reentrant version). The prototypes for
--the non-reentrant and reentrant versions of our function above are:
--
-- struct hostent *gethostbyname (const char *name)
--
-- int gethostbyname_r (const char *name, struct hostent *result_buf,
-- char *buf, size_t buflen, struct hostent **result,
-- int *h_errnop)
--
--The actual prototype of the function in the NSS modules in this case is
--
-- enum nss_status _nss_files_gethostbyname_r (const char *name,
-- struct hostent *result_buf,
-- char *buf, size_t buflen,
-- int *errnop, int *h_errnop)
--
-- I.e., the interface function is in fact the reentrant function with
--the change of the return value and the omission of the RESULT
--parameter. While the user-level function returns a pointer to the
--result the reentrant function return an `enum nss_status' value:
--
--`NSS_STATUS_TRYAGAIN'
-- numeric value `-2'
--
--`NSS_STATUS_UNAVAIL'
-- numeric value `-1'
--
--`NSS_STATUS_NOTFOUND'
-- numeric value `0'
--
--`NSS_STATUS_SUCCESS'
-- numeric value `1'
--
--Now you see where the action items of the `/etc/nsswitch.conf' file are
--used.
--
-- If you study the source code you will find there is a fifth value:
--`NSS_STATUS_RETURN'. This is an internal use only value, used by a few
--functions in places where none of the above value can be used. If
--necessary the source code should be examined to learn about the details.
--
-- In case the interface function has to return an error it is important
--that the correct error code is stored in `*ERRNOP'. Some return status
--value have only one associated error code, others have more.
--
--`NSS_STATUS_TRYAGAIN' `EAGAIN' One of the functions used ran
-- temporarily out of resources or a
-- service is currently not available.
-- `ERANGE' The provided buffer is not large
-- enough. The function should be
-- called again with a larger buffer.
--`NSS_STATUS_UNAVAIL' `ENOENT' A necessary input file cannot be
-- found.
--`NSS_STATUS_NOTFOUND' `ENOENT' The requested entry is not
-- available.
--
-- These are proposed values. There can be other error codes and the
--described error codes can have different meaning. *With one
--exception:* when returning `NSS_STATUS_TRYAGAIN' the error code
--`ERANGE' _must_ mean that the user provided buffer is too small.
--Everything is non-critical.
--
-- The above function has something special which is missing for almost
--all the other module functions. There is an argument H_ERRNOP. This
--points to a variable which will be filled with the error code in case
--the execution of the function fails for some reason. The reentrant
--function cannot use the global variable H_ERRNO; `gethostbyname' calls
--`gethostbyname_r' with the last argument set to `&h_errno'.
--
-- The `getXXXbyYYY' functions are the most important functions in the
--NSS modules. But there are others which implement the other ways to
--access system databases (say for the password database, there are
--`setpwent', `getpwent', and `endpwent'). These will be described in
--more detail later. Here we give a general way to determine the
--signature of the module function:
--
-- * the return value is `int';
--
-- * the name is as explained in *note NSS Module Names::;
--
-- * the first arguments are identical to the arguments of the
-- non-reentrant function;
--
-- * the next three arguments are:
--
-- `STRUCT_TYPE *result_buf'
-- pointer to buffer where the result is stored. `STRUCT_TYPE'
-- is normally a struct which corresponds to the database.
--
-- `char *buffer'
-- pointer to a buffer where the function can store additional
-- data for the result etc.
--
-- `size_t buflen'
-- length of the buffer pointed to by BUFFER.
--
-- * possibly a last argument H_ERRNOP, for the host name and network
-- name lookup functions.
--
--This table is correct for all functions but the `set...ent' and
--`end...ent' functions.
--
--
--File: libc.info, Node: Extending NSS, Prev: NSS Module Internals, Up: Name Service Switch
--
--Extending NSS
--=============
--
-- One of the advantages of NSS mentioned above is that it can be
--extended quite easily. There are two ways in which the extension can
--happen: adding another database or adding another service. The former
--is normally done only by the C library developers. It is here only
--important to remember that adding another database is independent from
--adding another service because a service need not support all databases
--or lookup functions.
--
-- A designer/implementor of a new service is therefore free to choose
--the databases s/he is interested in and leave the rest for later (or
--completely aside).
--
--* Menu:
--
--* Adding another Service to NSS:: What is to do to add a new service.
--* NSS Module Function Internals:: Guidelines for writing new NSS
-- service functions.
--
--
--File: libc.info, Node: Adding another Service to NSS, Next: NSS Module Function Internals, Prev: Extending NSS, Up: Extending NSS
--
--Adding another Service to NSS
-------------------------------
--
-- The sources for a new service need not (and should not) be part of
--the GNU C Library itself. The developer retains complete control over
--the sources and its development. The links between the C library and
--the new service module consists solely of the interface functions.
--
-- Each module is designed following a specific interface specification.
--For now the version is 2 (the interface in version 1 was not adequate)
--and this manifests in the version number of the shared library object of
--the NSS modules: they have the extension `.2'. If the interface
--changes again in an incompatible way, this number will be increased.
--Modules using the old interface will still be usable.
--
-- Developers of a new service will have to make sure that their module
--is created using the correct interface number. This means the file
--itself must have the correct name and on ELF systems the "soname"
--(Shared Object Name) must also have this number. Building a module
--from a bunch of object files on an ELF system using GNU CC could be
--done like this:
--
-- gcc -shared -o libnss_NAME.so.2 -Wl,-soname,libnss_NAME.so.2 OBJECTS
--
--*Note Options for Linking: (gcc)Link Options, to learn more about this
--command line.
--
-- To use the new module the library must be able to find it. This can
--be achieved by using options for the dynamic linker so that it will
--search the directory where the binary is placed. For an ELF system
--this could be done by adding the wanted directory to the value of
--`LD_LIBRARY_PATH'.
--
-- But this is not always possible since some programs (those which run
--under IDs which do not belong to the user) ignore this variable.
--Therefore the stable version of the module should be placed into a
--directory which is searched by the dynamic linker. Normally this should
--be the directory `$prefix/lib', where `$prefix' corresponds to the
--value given to configure using the `--prefix' option. But be careful:
--this should only be done if it is clear the module does not cause any
--harm. System administrators should be careful.
--
--
--File: libc.info, Node: NSS Module Function Internals, Prev: Adding another Service to NSS, Up: Extending NSS
--
--Internals of the NSS Module Functions
---------------------------------------
--
-- Until now we only provided the syntactic interface for the functions
--in the NSS module. In fact there is not much more we can say since the
--implementation obviously is different for each function. But a few
--general rules must be followed by all functions.
--
-- In fact there are four kinds of different functions which may appear
--in the interface. All derive from the traditional ones for system
--databases. DB in the following table is normally an abbreviation for
--the database (e.g., it is `pw' for the password database).
--
--`enum nss_status _nss_DATABASE_setDBent (void)'
-- This function prepares the service for following operations. For a
-- simple file based lookup this means files could be opened, for
-- other services this function simply is a noop.
--
-- One special case for this function is that it takes an additional
-- argument for some DATABASEs (i.e., the interface is `int setDBent
-- (int)'). *Note Host Names::, which describes the `sethostent'
-- function.
--
-- The return value should be NSS_STATUS_SUCCESS or according to the
-- table above in case of an error (*note NSS Modules Interface::).
--
--`enum nss_status _nss_DATABASE_endDBent (void)'
-- This function simply closes all files which are still open or
-- removes buffer caches. If there are no files or buffers to remove
-- this is again a simple noop.
--
-- There normally is no return value different to NSS_STATUS_SUCCESS.
--
--`enum nss_status _nss_DATABASE_getDBent_r (STRUCTURE *result, char *buffer, size_t buflen, int *errnop)'
-- Since this function will be called several times in a row to
-- retrieve one entry after the other it must keep some kind of
-- state. But this also means the functions are not really
-- reentrant. They are reentrant only in that simultaneous calls to
-- this function will not try to write the retrieved data in the same
-- place (as it would be the case for the non-reentrant functions);
-- instead, it writes to the structure pointed to by the RESULT
-- parameter. But the calls share a common state and in the case of
-- a file access this means they return neighboring entries in the
-- file.
--
-- The buffer of length BUFLEN pointed to by BUFFER can be used for
-- storing some additional data for the result. It is _not_
-- guaranteed that the same buffer will be passed for the next call
-- of this function. Therefore one must not misuse this buffer to
-- save some state information from one call to another.
--
-- Before the function returns the implementation should store the
-- value of the local ERRNO variable in the variable pointed to be
-- ERRNOP. This is important to guarantee the module working in
-- statically linked programs.
--
-- As explained above this function could also have an additional last
-- argument. This depends on the database used; it happens only for
-- `host' and `networks'.
--
-- The function shall return `NSS_STATUS_SUCCESS' as long as there are
-- more entries. When the last entry was read it should return
-- `NSS_STATUS_NOTFOUND'. When the buffer given as an argument is too
-- small for the data to be returned `NSS_STATUS_TRYAGAIN' should be
-- returned. When the service was not formerly initialized by a call
-- to `_nss_DATABASE_setDBent' all return value allowed for this
-- function can also be returned here.
--
--`enum nss_status _nss_DATABASE_getDBbyXX_r (PARAMS, STRUCTURE *result, char *buffer, size_t buflen, int *errnop)'
-- This function shall return the entry from the database which is
-- addressed by the PARAMS. The type and number of these arguments
-- vary. It must be individually determined by looking to the
-- user-level interface functions. All arguments given to the
-- non-reentrant version are here described by PARAMS.
--
-- The result must be stored in the structure pointed to by RESULT.
-- If there is additional data to return (say strings, where the
-- RESULT structure only contains pointers) the function must use the
-- BUFFER or length BUFLEN. There must not be any references to
-- non-constant global data.
--
-- The implementation of this function should honor the STAYOPEN flag
-- set by the `setDBent' function whenever this makes sense.
--
-- Before the function returns the implementation should store the
-- value of the local ERRNO variable in the variable pointed to be
-- ERRNOP. This is important to guarantee the module working in
-- statically linked programs.
--
-- Again, this function takes an additional last argument for the
-- `host' and `networks' database.
--
-- The return value should as always follow the rules given above
-- (*note NSS Modules Interface::).
--
--
--File: libc.info, Node: Users and Groups, Next: System Management, Prev: Name Service Switch, Up: Top
--
--Users and Groups
--****************
--
-- Every user who can log in on the system is identified by a unique
--number called the "user ID". Each process has an effective user ID
--which says which user's access permissions it has.
--
-- Users are classified into "groups" for access control purposes. Each
--process has one or more "group ID values" which say which groups the
--process can use for access to files.
--
-- The effective user and group IDs of a process collectively form its
--"persona". This determines which files the process can access.
--Normally, a process inherits its persona from the parent process, but
--under special circumstances a process can change its persona and thus
--change its access permissions.
--
-- Each file in the system also has a user ID and a group ID. Access
--control works by comparing the user and group IDs of the file with those
--of the running process.
--
-- The system keeps a database of all the registered users, and another
--database of all the defined groups. There are library functions you
--can use to examine these databases.
--
--* Menu:
--
--* User and Group IDs:: Each user has a unique numeric ID;
-- likewise for groups.
--* Process Persona:: The user IDs and group IDs of a process.
--* Why Change Persona:: Why a program might need to change
-- its user and/or group IDs.
--* How Change Persona:: Changing the user and group IDs.
--* Reading Persona:: How to examine the user and group IDs.
--
--* Setting User ID:: Functions for setting the user ID.
--* Setting Groups:: Functions for setting the group IDs.
--
--* Enable/Disable Setuid:: Turning setuid access on and off.
--* Setuid Program Example:: The pertinent parts of one sample program.
--* Tips for Setuid:: How to avoid granting unlimited access.
--
--* Who Logged In:: Getting the name of the user who logged in,
-- or of the real user ID of the current process.
--
--* User Accounting Database:: Keeping information about users and various
-- actions in databases.
--
--* User Database:: Functions and data structures for
-- accessing the user database.
--* Group Database:: Functions and data structures for
-- accessing the group database.
--* Database Example:: Example program showing the use of database
-- inquiry functions.
--* Netgroup Database:: Functions for accessing the netgroup database.
--
--
--File: libc.info, Node: User and Group IDs, Next: Process Persona, Up: Users and Groups
--
--User and Group IDs
--==================
--
-- Each user account on a computer system is identified by a "user
--name" (or "login name") and "user ID". Normally, each user name has a
--unique user ID, but it is possible for several login names to have the
--same user ID. The user names and corresponding user IDs are stored in
--a data base which you can access as described in *Note User Database::.
--
-- Users are classified in "groups". Each user name belongs to one
--"default group" and may also belong to any number of "supplementary
--groups". Users who are members of the same group can share resources
--(such as files) that are not accessible to users who are not a member
--of that group. Each group has a "group name" and "group ID". *Note
--Group Database::, for how to find information about a group ID or group
--name.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-46 glibc-2.3.2-200304020432/manual/libc.info-46
---- glibc-2.3.2/manual/libc.info-46 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-46 Thu Jan 1 01:00:00 1970
-@@ -1,1238 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Process Persona, Next: Why Change Persona, Prev: User and Group IDs, Up: Users and Groups
--
--The Persona of a Process
--========================
--
-- At any time, each process has an "effective user ID", a "effective
--group ID", and a set of "supplementary group IDs". These IDs determine
--the privileges of the process. They are collectively called the
--"persona" of the process, because they determine "who it is" for
--purposes of access control.
--
-- Your login shell starts out with a persona which consists of your
--user ID, your default group ID, and your supplementary group IDs (if
--you are in more than one group). In normal circumstances, all your
--other processes inherit these values.
--
-- A process also has a "real user ID" which identifies the user who
--created the process, and a "real group ID" which identifies that user's
--default group. These values do not play a role in access control, so
--we do not consider them part of the persona. But they are also
--important.
--
-- Both the real and effective user ID can be changed during the
--lifetime of a process. *Note Why Change Persona::.
--
-- For details on how a process's effective user ID and group IDs affect
--its permission to access files, see *Note Access Permission::.
--
-- The effective user ID of a process also controls permissions for
--sending signals using the `kill' function. *Note Signaling Another
--Process::.
--
-- Finally, there are many operations which can only be performed by a
--process whose effective user ID is zero. A process with this user ID is
--a "privileged process". Commonly the user name `root' is associated
--with user ID 0, but there may be other user names with this ID.
--
--
--File: libc.info, Node: Why Change Persona, Next: How Change Persona, Prev: Process Persona, Up: Users and Groups
--
--Why Change the Persona of a Process?
--====================================
--
-- The most obvious situation where it is necessary for a process to
--change its user and/or group IDs is the `login' program. When `login'
--starts running, its user ID is `root'. Its job is to start a shell
--whose user and group IDs are those of the user who is logging in. (To
--accomplish this fully, `login' must set the real user and group IDs as
--well as its persona. But this is a special case.)
--
-- The more common case of changing persona is when an ordinary user
--program needs access to a resource that wouldn't ordinarily be
--accessible to the user actually running it.
--
-- For example, you may have a file that is controlled by your program
--but that shouldn't be read or modified directly by other users, either
--because it implements some kind of locking protocol, or because you want
--to preserve the integrity or privacy of the information it contains.
--This kind of restricted access can be implemented by having the program
--change its effective user or group ID to match that of the resource.
--
-- Thus, imagine a game program that saves scores in a file. The game
--program itself needs to be able to update this file no matter who is
--running it, but if users can write the file without going through the
--game, they can give themselves any scores they like. Some people
--consider this undesirable, or even reprehensible. It can be prevented
--by creating a new user ID and login name (say, `games') to own the
--scores file, and make the file writable only by this user. Then, when
--the game program wants to update this file, it can change its effective
--user ID to be that for `games'. In effect, the program must adopt the
--persona of `games' so it can write the scores file.
--
--
--File: libc.info, Node: How Change Persona, Next: Reading Persona, Prev: Why Change Persona, Up: Users and Groups
--
--How an Application Can Change Persona
--=====================================
--
-- The ability to change the persona of a process can be a source of
--unintentional privacy violations, or even intentional abuse. Because of
--the potential for problems, changing persona is restricted to special
--circumstances.
--
-- You can't arbitrarily set your user ID or group ID to anything you
--want; only privileged processes can do that. Instead, the normal way
--for a program to change its persona is that it has been set up in
--advance to change to a particular user or group. This is the function
--of the setuid and setgid bits of a file's access mode. *Note
--Permission Bits::.
--
-- When the setuid bit of an executable file is on, executing that file
--gives the process a third user ID: the "file user ID". This ID is set
--to the owner ID of the file. The system then changes the effective
--user ID to the file user ID. The real user ID remains as it was.
--Likewise, if the setgid bit is on, the process is given a "file group
--ID" equal to the group ID of the file, and its effective group ID is
--changed to the file group ID.
--
-- If a process has a file ID (user or group), then it can at any time
--change its effective ID to its real ID and back to its file ID.
--Programs use this feature to relinquish their special privileges except
--when they actually need them. This makes it less likely that they can
--be tricked into doing something inappropriate with their privileges.
--
-- *Portability Note:* Older systems do not have file IDs. To
--determine if a system has this feature, you can test the compiler
--define `_POSIX_SAVED_IDS'. (In the POSIX standard, file IDs are known
--as saved IDs.)
--
-- *Note File Attributes::, for a more general discussion of file modes
--and accessibility.
--
--
--File: libc.info, Node: Reading Persona, Next: Setting User ID, Prev: How Change Persona, Up: Users and Groups
--
--Reading the Persona of a Process
--================================
--
-- Here are detailed descriptions of the functions for reading the user
--and group IDs of a process, both real and effective. To use these
--facilities, you must include the header files `sys/types.h' and
--`unistd.h'.
--
-- - Data Type: uid_t
-- This is an integer data type used to represent user IDs. In the
-- GNU library, this is an alias for `unsigned int'.
--
-- - Data Type: gid_t
-- This is an integer data type used to represent group IDs. In the
-- GNU library, this is an alias for `unsigned int'.
--
-- - Function: uid_t getuid (void)
-- The `getuid' function returns the real user ID of the process.
--
-- - Function: gid_t getgid (void)
-- The `getgid' function returns the real group ID of the process.
--
-- - Function: uid_t geteuid (void)
-- The `geteuid' function returns the effective user ID of the
-- process.
--
-- - Function: gid_t getegid (void)
-- The `getegid' function returns the effective group ID of the
-- process.
--
-- - Function: int getgroups (int COUNT, gid_t *GROUPS)
-- The `getgroups' function is used to inquire about the supplementary
-- group IDs of the process. Up to COUNT of these group IDs are
-- stored in the array GROUPS; the return value from the function is
-- the number of group IDs actually stored. If COUNT is smaller than
-- the total number of supplementary group IDs, then `getgroups'
-- returns a value of `-1' and `errno' is set to `EINVAL'.
--
-- If COUNT is zero, then `getgroups' just returns the total number
-- of supplementary group IDs. On systems that do not support
-- supplementary groups, this will always be zero.
--
-- Here's how to use `getgroups' to read all the supplementary group
-- IDs:
--
-- gid_t *
-- read_all_groups (void)
-- {
-- int ngroups = getgroups (0, NULL);
-- gid_t *groups
-- = (gid_t *) xmalloc (ngroups * sizeof (gid_t));
-- int val = getgroups (ngroups, groups);
-- if (val < 0)
-- {
-- free (groups);
-- return NULL;
-- }
-- return groups;
-- }
--
--
--File: libc.info, Node: Setting User ID, Next: Setting Groups, Prev: Reading Persona, Up: Users and Groups
--
--Setting the User ID
--===================
--
-- This section describes the functions for altering the user ID (real
--and/or effective) of a process. To use these facilities, you must
--include the header files `sys/types.h' and `unistd.h'.
--
-- - Function: int seteuid (uid_t NEWEUID)
-- This function sets the effective user ID of a process to NEWUID,
-- provided that the process is allowed to change its effective user
-- ID. A privileged process (effective user ID zero) can change its
-- effective user ID to any legal value. An unprivileged process
-- with a file user ID can change its effective user ID to its real
-- user ID or to its file user ID. Otherwise, a process may not
-- change its effective user ID at all.
--
-- The `seteuid' function returns a value of `0' to indicate
-- successful completion, and a value of `-1' to indicate an error.
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINVAL'
-- The value of the NEWUID argument is invalid.
--
-- `EPERM'
-- The process may not change to the specified ID.
--
-- Older systems (those without the `_POSIX_SAVED_IDS' feature) do not
-- have this function.
--
-- - Function: int setuid (uid_t NEWUID)
-- If the calling process is privileged, this function sets both the
-- real and effective user ID of the process to NEWUID. It also
-- deletes the file user ID of the process, if any. NEWUID may be any
-- legal value. (Once this has been done, there is no way to recover
-- the old effective user ID.)
--
-- If the process is not privileged, and the system supports the
-- `_POSIX_SAVED_IDS' feature, then this function behaves like
-- `seteuid'.
--
-- The return values and error conditions are the same as for
-- `seteuid'.
--
-- - Function: int setreuid (uid_t RUID, uid_t EUID)
-- This function sets the real user ID of the process to RUID and the
-- effective user ID to EUID. If RUID is `-1', it means not to
-- change the real user ID; likewise if EUID is `-1', it means not to
-- change the effective user ID.
--
-- The `setreuid' function exists for compatibility with 4.3 BSD Unix,
-- which does not support file IDs. You can use this function to
-- swap the effective and real user IDs of the process. (Privileged
-- processes are not limited to this particular usage.) If file IDs
-- are supported, you should use that feature instead of this
-- function. *Note Enable/Disable Setuid::.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EPERM'
-- The process does not have the appropriate privileges; you do
-- not have permission to change to the specified ID.
--
--
--File: libc.info, Node: Setting Groups, Next: Enable/Disable Setuid, Prev: Setting User ID, Up: Users and Groups
--
--Setting the Group IDs
--=====================
--
-- This section describes the functions for altering the group IDs (real
--and effective) of a process. To use these facilities, you must include
--the header files `sys/types.h' and `unistd.h'.
--
-- - Function: int setegid (gid_t NEWGID)
-- This function sets the effective group ID of the process to
-- NEWGID, provided that the process is allowed to change its group
-- ID. Just as with `seteuid', if the process is privileged it may
-- change its effective group ID to any value; if it isn't, but it
-- has a file group ID, then it may change to its real group ID or
-- file group ID; otherwise it may not change its effective group ID.
--
-- Note that a process is only privileged if its effective _user_ ID
-- is zero. The effective group ID only affects access permissions.
--
-- The return values and error conditions for `setegid' are the same
-- as those for `seteuid'.
--
-- This function is only present if `_POSIX_SAVED_IDS' is defined.
--
-- - Function: int setgid (gid_t NEWGID)
-- This function sets both the real and effective group ID of the
-- process to NEWGID, provided that the process is privileged. It
-- also deletes the file group ID, if any.
--
-- If the process is not privileged, then `setgid' behaves like
-- `setegid'.
--
-- The return values and error conditions for `setgid' are the same
-- as those for `seteuid'.
--
-- - Function: int setregid (gid_t RGID, gid_t EGID)
-- This function sets the real group ID of the process to RGID and
-- the effective group ID to EGID. If RGID is `-1', it means not to
-- change the real group ID; likewise if EGID is `-1', it means not
-- to change the effective group ID.
--
-- The `setregid' function is provided for compatibility with 4.3 BSD
-- Unix, which does not support file IDs. You can use this function
-- to swap the effective and real group IDs of the process.
-- (Privileged processes are not limited to this usage.) If file IDs
-- are supported, you should use that feature instead of using this
-- function. *Note Enable/Disable Setuid::.
--
-- The return values and error conditions for `setregid' are the same
-- as those for `setreuid'.
--
-- `setuid' and `setgid' behave differently depending on whether the
--effective user ID at the time is zero. If it is not zero, they behave
--like `seteuid' and `setegid'. If it is, they change both effective and
--real IDs and delete the file ID. To avoid confusion, we recommend you
--always use `seteuid' and `setegid' except when you know the effective
--user ID is zero and your intent is to change the persona permanently.
--This case is rare--most of the programs that need it, such as `login'
--and `su', have already been written.
--
-- Note that if your program is setuid to some user other than `root',
--there is no way to drop privileges permanently.
--
-- The system also lets privileged processes change their supplementary
--group IDs. To use `setgroups' or `initgroups', your programs should
--include the header file `grp.h'.
--
-- - Function: int setgroups (size_t COUNT, gid_t *GROUPS)
-- This function sets the process's supplementary group IDs. It can
-- only be called from privileged processes. The COUNT argument
-- specifies the number of group IDs in the array GROUPS.
--
-- This function returns `0' if successful and `-1' on error. The
-- following `errno' error conditions are defined for this function:
--
-- `EPERM'
-- The calling process is not privileged.
--
-- - Function: int initgroups (const char *USER, gid_t GROUP)
-- The `initgroups' function sets the process's supplementary group
-- IDs to be the normal default for the user name USER. The group
-- GROUP is automatically included.
--
-- This function works by scanning the group database for all the
-- groups USER belongs to. It then calls `setgroups' with the list it
-- has constructed.
--
-- The return values and error conditions are the same as for
-- `setgroups'.
--
-- If you are interested in the groups a particular user belongs to,
--but do not want to change the process's supplementary group IDs, you
--can use `getgrouplist'. To use `getgrouplist', your programs should
--include the header file `grp.h'.
--
-- - Function: int getgrouplist (const char *USER, gid_t GROUP, gid_t
-- *GROUPS, int *NGROUPS)
-- The `getgrouplist' function scans the group database for all the
-- groups USER belongs to. Up to *NGROUPS group IDs corresponding to
-- these groups are stored in the array GROUPS; the return value from
-- the function is the number of group IDs actually stored. If
-- *NGROUPS is smaller than the total number of groups found, then
-- `getgrouplist' returns a value of `-1' and stores the actual
-- number of groups in *NGROUPS. The group GROUP is automatically
-- included in the list of groups returned by `getgrouplist'.
--
-- Here's how to use `getgrouplist' to read all supplementary groups
-- for USER:
--
-- gid_t *
-- supplementary_groups (char *user)
-- {
-- int ngroups = 16;
-- gid_t *groups
-- = (gid_t *) xmalloc (ngroups * sizeof (gid_t));
-- struct passwd *pw = getpwnam (user);
--
-- if (pw == NULL)
-- return NULL;
--
-- if (getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups) < 0)
-- {
-- groups = xrealloc (ngroups * sizeof (gid_t));
-- getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups);
-- }
-- return groups;
-- }
--
--
--File: libc.info, Node: Enable/Disable Setuid, Next: Setuid Program Example, Prev: Setting Groups, Up: Users and Groups
--
--Enabling and Disabling Setuid Access
--====================================
--
-- A typical setuid program does not need its special access all of the
--time. It's a good idea to turn off this access when it isn't needed,
--so it can't possibly give unintended access.
--
-- If the system supports the `_POSIX_SAVED_IDS' feature, you can
--accomplish this with `seteuid'. When the game program starts, its real
--user ID is `jdoe', its effective user ID is `games', and its saved user
--ID is also `games'. The program should record both user ID values once
--at the beginning, like this:
--
-- user_user_id = getuid ();
-- game_user_id = geteuid ();
--
-- Then it can turn off game file access with
--
-- seteuid (user_user_id);
--
--and turn it on with
--
-- seteuid (game_user_id);
--
--Throughout this process, the real user ID remains `jdoe' and the file
--user ID remains `games', so the program can always set its effective
--user ID to either one.
--
-- On other systems that don't support file user IDs, you can turn
--setuid access on and off by using `setreuid' to swap the real and
--effective user IDs of the process, as follows:
--
-- setreuid (geteuid (), getuid ());
--
--This special case is always allowed--it cannot fail.
--
-- Why does this have the effect of toggling the setuid access?
--Suppose a game program has just started, and its real user ID is `jdoe'
--while its effective user ID is `games'. In this state, the game can
--write the scores file. If it swaps the two uids, the real becomes
--`games' and the effective becomes `jdoe'; now the program has only
--`jdoe' access. Another swap brings `games' back to the effective user
--ID and restores access to the scores file.
--
-- In order to handle both kinds of systems, test for the saved user ID
--feature with a preprocessor conditional, like this:
--
-- #ifdef _POSIX_SAVED_IDS
-- seteuid (user_user_id);
-- #else
-- setreuid (geteuid (), getuid ());
-- #endif
--
--
--File: libc.info, Node: Setuid Program Example, Next: Tips for Setuid, Prev: Enable/Disable Setuid, Up: Users and Groups
--
--Setuid Program Example
--======================
--
-- Here's an example showing how to set up a program that changes its
--effective user ID.
--
-- This is part of a game program called `caber-toss' that manipulates
--a file `scores' that should be writable only by the game program
--itself. The program assumes that its executable file will be installed
--with the setuid bit set and owned by the same user as the `scores'
--file. Typically, a system administrator will set up an account like
--`games' for this purpose.
--
-- The executable file is given mode `4755', so that doing an `ls -l'
--on it produces output like:
--
-- -rwsr-xr-x 1 games 184422 Jul 30 15:17 caber-toss
--
--The setuid bit shows up in the file modes as the `s'.
--
-- The scores file is given mode `644', and doing an `ls -l' on it
--shows:
--
-- -rw-r--r-- 1 games 0 Jul 31 15:33 scores
--
-- Here are the parts of the program that show how to set up the changed
--user ID. This program is conditionalized so that it makes use of the
--file IDs feature if it is supported, and otherwise uses `setreuid' to
--swap the effective and real user IDs.
--
-- #include <stdio.h>
-- #include <sys/types.h>
-- #include <unistd.h>
-- #include <stdlib.h>
--
--
-- /* Remember the effective and real UIDs. */
--
-- static uid_t euid, ruid;
--
--
-- /* Restore the effective UID to its original value. */
--
-- void
-- do_setuid (void)
-- {
-- int status;
--
-- #ifdef _POSIX_SAVED_IDS
-- status = seteuid (euid);
-- #else
-- status = setreuid (ruid, euid);
-- #endif
-- if (status < 0) {
-- fprintf (stderr, "Couldn't set uid.\n");
-- exit (status);
-- }
-- }
--
--
-- /* Set the effective UID to the real UID. */
--
-- void
-- undo_setuid (void)
-- {
-- int status;
--
-- #ifdef _POSIX_SAVED_IDS
-- status = seteuid (ruid);
-- #else
-- status = setreuid (euid, ruid);
-- #endif
-- if (status < 0) {
-- fprintf (stderr, "Couldn't set uid.\n");
-- exit (status);
-- }
-- }
--
-- /* Main program. */
--
-- int
-- main (void)
-- {
-- /* Remember the real and effective user IDs. */
-- ruid = getuid ();
-- euid = geteuid ();
-- undo_setuid ();
--
-- /* Do the game and record the score. */
-- ...
-- }
--
-- Notice how the first thing the `main' function does is to set the
--effective user ID back to the real user ID. This is so that any other
--file accesses that are performed while the user is playing the game use
--the real user ID for determining permissions. Only when the program
--needs to open the scores file does it switch back to the file user ID,
--like this:
--
-- /* Record the score. */
--
-- int
-- record_score (int score)
-- {
-- FILE *stream;
-- char *myname;
--
-- /* Open the scores file. */
-- do_setuid ();
-- stream = fopen (SCORES_FILE, "a");
-- undo_setuid ();
--
-- /* Write the score to the file. */
-- if (stream)
-- {
-- myname = cuserid (NULL);
-- if (score < 0)
-- fprintf (stream, "%10s: Couldn't lift the caber.\n", myname);
-- else
-- fprintf (stream, "%10s: %d feet.\n", myname, score);
-- fclose (stream);
-- return 0;
-- }
-- else
-- return -1;
-- }
--
--
--File: libc.info, Node: Tips for Setuid, Next: Who Logged In, Prev: Setuid Program Example, Up: Users and Groups
--
--Tips for Writing Setuid Programs
--================================
--
-- It is easy for setuid programs to give the user access that isn't
--intended--in fact, if you want to avoid this, you need to be careful.
--Here are some guidelines for preventing unintended access and
--minimizing its consequences when it does occur:
--
-- * Don't have `setuid' programs with privileged user IDs such as
-- `root' unless it is absolutely necessary. If the resource is
-- specific to your particular program, it's better to define a new,
-- nonprivileged user ID or group ID just to manage that resource.
-- It's better if you can write your program to use a special group
-- than a special user.
--
-- * Be cautious about using the `exec' functions in combination with
-- changing the effective user ID. Don't let users of your program
-- execute arbitrary programs under a changed user ID. Executing a
-- shell is especially bad news. Less obviously, the `execlp' and
-- `execvp' functions are a potential risk (since the program they
-- execute depends on the user's `PATH' environment variable).
--
-- If you must `exec' another program under a changed ID, specify an
-- absolute file name (*note File Name Resolution::) for the
-- executable, and make sure that the protections on that executable
-- and _all_ containing directories are such that ordinary users
-- cannot replace it with some other program.
--
-- You should also check the arguments passed to the program to make
-- sure they do not have unexpected effects. Likewise, you should
-- examine the environment variables. Decide which arguments and
-- variables are safe, and reject all others.
--
-- You should never use `system' in a privileged program, because it
-- invokes a shell.
--
-- * Only use the user ID controlling the resource in the part of the
-- program that actually uses that resource. When you're finished
-- with it, restore the effective user ID back to the actual user's
-- user ID. *Note Enable/Disable Setuid::.
--
-- * If the `setuid' part of your program needs to access other files
-- besides the controlled resource, it should verify that the real
-- user would ordinarily have permission to access those files. You
-- can use the `access' function (*note Access Permission::) to check
-- this; it uses the real user and group IDs, rather than the
-- effective IDs.
--
--
--File: libc.info, Node: Who Logged In, Next: User Accounting Database, Prev: Tips for Setuid, Up: Users and Groups
--
--Identifying Who Logged In
--=========================
--
-- You can use the functions listed in this section to determine the
--login name of the user who is running a process, and the name of the
--user who logged in the current session. See also the function `getuid'
--and friends (*note Reading Persona::). How this information is
--collected by the system and how to control/add/remove information from
--the background storage is described in *Note User Accounting Database::.
--
-- The `getlogin' function is declared in `unistd.h', while `cuserid'
--and `L_cuserid' are declared in `stdio.h'.
--
-- - Function: char * getlogin (void)
-- The `getlogin' function returns a pointer to a string containing
-- the name of the user logged in on the controlling terminal of the
-- process, or a null pointer if this information cannot be
-- determined. The string is statically allocated and might be
-- overwritten on subsequent calls to this function or to `cuserid'.
--
-- - Function: char * cuserid (char *STRING)
-- The `cuserid' function returns a pointer to a string containing a
-- user name associated with the effective ID of the process. If
-- STRING is not a null pointer, it should be an array that can hold
-- at least `L_cuserid' characters; the string is returned in this
-- array. Otherwise, a pointer to a string in a static area is
-- returned. This string is statically allocated and might be
-- overwritten on subsequent calls to this function or to `getlogin'.
--
-- The use of this function is deprecated since it is marked to be
-- withdrawn in XPG4.2 and has already been removed from newer
-- revisions of POSIX.1.
--
-- - Macro: int L_cuserid
-- An integer constant that indicates how long an array you might
-- need to store a user name.
--
-- These functions let your program identify positively the user who is
--running or the user who logged in this session. (These can differ when
--setuid programs are involved; see *Note Process Persona::.) The user
--cannot do anything to fool these functions.
--
-- For most purposes, it is more useful to use the environment variable
--`LOGNAME' to find out who the user is. This is more flexible precisely
--because the user can set `LOGNAME' arbitrarily. *Note Standard
--Environment::.
--
--
--File: libc.info, Node: User Accounting Database, Next: User Database, Prev: Who Logged In, Up: Users and Groups
--
--The User Accounting Database
--============================
--
-- Most Unix-like operating systems keep track of logged in users by
--maintaining a user accounting database. This user accounting database
--stores for each terminal, who has logged on, at what time, the process
--ID of the user's login shell, etc., etc., but also stores information
--about the run level of the system, the time of the last system reboot,
--and possibly more.
--
-- The user accounting database typically lives in `/etc/utmp',
--`/var/adm/utmp' or `/var/run/utmp'. However, these files should
--*never* be accessed directly. For reading information from and writing
--information to the user accounting database, the functions described in
--this section should be used.
--
--* Menu:
--
--* Manipulating the Database:: Scanning and modifying the user
-- accounting database.
--* XPG Functions:: A standardized way for doing the same thing.
--* Logging In and Out:: Functions from BSD that modify the user
-- accounting database.
--
--
--File: libc.info, Node: Manipulating the Database, Next: XPG Functions, Up: User Accounting Database
--
--Manipulating the User Accounting Database
-------------------------------------------
--
-- These functions and the corresponding data structures are declared in
--the header file `utmp.h'.
--
-- - Data Type: struct exit_status
-- The `exit_status' data structure is used to hold information about
-- the exit status of processes marked as `DEAD_PROCESS' in the user
-- accounting database.
--
-- `short int e_termination'
-- The exit status of the process.
--
-- `short int e_exit'
-- The exit status of the process.
--
-- - Data Type: struct utmp
-- The `utmp' data structure is used to hold information about entries
-- in the user accounting database. On the GNU system it has the
-- following members:
--
-- `short int ut_type'
-- Specifies the type of login; one of `EMPTY', `RUN_LVL',
-- `BOOT_TIME', `OLD_TIME', `NEW_TIME', `INIT_PROCESS',
-- `LOGIN_PROCESS', `USER_PROCESS', `DEAD_PROCESS' or
-- `ACCOUNTING'.
--
-- `pid_t ut_pid'
-- The process ID number of the login process.
--
-- `char ut_line[]'
-- The device name of the tty (without `/dev/').
--
-- `char ut_id[]'
-- The inittab ID of the process.
--
-- `char ut_user[]'
-- The user's login name.
--
-- `char ut_host[]'
-- The name of the host from which the user logged in.
--
-- `struct exit_status ut_exit'
-- The exit status of a process marked as `DEAD_PROCESS'.
--
-- `long ut_session'
-- The Session ID, used for windowing.
--
-- `struct timeval ut_tv'
-- Time the entry was made. For entries of type `OLD_TIME' this
-- is the time when the system clock changed, and for entries of
-- type `NEW_TIME' this is the time the system clock was set to.
--
-- `int32_t ut_addr_v6[4]'
-- The Internet address of a remote host.
--
-- The `ut_type', `ut_pid', `ut_id', `ut_tv', and `ut_host' fields are
--not available on all systems. Portable applications therefore should
--be prepared for these situations. To help doing this the `utmp.h'
--header provides macros `_HAVE_UT_TYPE', `_HAVE_UT_PID', `_HAVE_UT_ID',
--`_HAVE_UT_TV', and `_HAVE_UT_HOST' if the respective field is
--available. The programmer can handle the situations by using `#ifdef'
--in the program code.
--
-- The following macros are defined for use as values for the `ut_type'
--member of the `utmp' structure. The values are integer constants.
--
--`EMPTY'
-- This macro is used to indicate that the entry contains no valid
-- user accounting information.
--
--`RUN_LVL'
-- This macro is used to identify the systems runlevel.
--
--`BOOT_TIME'
-- This macro is used to identify the time of system boot.
--
--`OLD_TIME'
-- This macro is used to identify the time when the system clock
-- changed.
--
--`NEW_TIME'
-- This macro is used to identify the time after the system changed.
--
--`INIT_PROCESS'
-- This macro is used to identify a process spawned by the init
-- process.
--
--`LOGIN_PROCESS'
-- This macro is used to identify the session leader of a logged in
-- user.
--
--`USER_PROCESS'
-- This macro is used to identify a user process.
--
--`DEAD_PROCESS'
-- This macro is used to identify a terminated process.
--
--`ACCOUNTING'
-- ???
--
-- The size of the `ut_line', `ut_id', `ut_user' and `ut_host' arrays
--can be found using the `sizeof' operator.
--
-- Many older systems have, instead of an `ut_tv' member, an `ut_time'
--member, usually of type `time_t', for representing the time associated
--with the entry. Therefore, for backwards compatibility only, `utmp.h'
--defines `ut_time' as an alias for `ut_tv.tv_sec'.
--
-- - Function: void setutent (void)
-- This function opens the user accounting database to begin scanning
-- it. You can then call `getutent', `getutid' or `getutline' to
-- read entries and `pututline' to write entries.
--
-- If the database is already open, it resets the input to the
-- beginning of the database.
--
-- - Function: struct utmp * getutent (void)
-- The `getutent' function reads the next entry from the user
-- accounting database. It returns a pointer to the entry, which is
-- statically allocated and may be overwritten by subsequent calls to
-- `getutent'. You must copy the contents of the structure if you
-- wish to save the information or you can use the `getutent_r'
-- function which stores the data in a user-provided buffer.
--
-- A null pointer is returned in case no further entry is available.
--
-- - Function: void endutent (void)
-- This function closes the user accounting database.
--
-- - Function: struct utmp * getutid (const struct utmp *ID)
-- This function searches forward from the current point in the
-- database for an entry that matches ID. If the `ut_type' member of
-- the ID structure is one of `RUN_LVL', `BOOT_TIME', `OLD_TIME' or
-- `NEW_TIME' the entries match if the `ut_type' members are
-- identical. If the `ut_type' member of the ID structure is
-- `INIT_PROCESS', `LOGIN_PROCESS', `USER_PROCESS' or `DEAD_PROCESS',
-- the entries match if the `ut_type' member of the entry read from
-- the database is one of these four, and the `ut_id' members match.
-- However if the `ut_id' member of either the ID structure or the
-- entry read from the database is empty it checks if the `ut_line'
-- members match instead. If a matching entry is found, `getutid'
-- returns a pointer to the entry, which is statically allocated, and
-- may be overwritten by a subsequent call to `getutent', `getutid'
-- or `getutline'. You must copy the contents of the structure if
-- you wish to save the information.
--
-- A null pointer is returned in case the end of the database is
-- reached without a match.
--
-- The `getutid' function may cache the last read entry. Therefore,
-- if you are using `getutid' to search for multiple occurrences, it
-- is necessary to zero out the static data after each call.
-- Otherwise `getutid' could just return a pointer to the same entry
-- over and over again.
--
-- - Function: struct utmp * getutline (const struct utmp *LINE)
-- This function searches forward from the current point in the
-- database until it finds an entry whose `ut_type' value is
-- `LOGIN_PROCESS' or `USER_PROCESS', and whose `ut_line' member
-- matches the `ut_line' member of the LINE structure. If it finds
-- such an entry, it returns a pointer to the entry which is
-- statically allocated, and may be overwritten by a subsequent call
-- to `getutent', `getutid' or `getutline'. You must copy the
-- contents of the structure if you wish to save the information.
--
-- A null pointer is returned in case the end of the database is
-- reached without a match.
--
-- The `getutline' function may cache the last read entry. Therefore
-- if you are using `getutline' to search for multiple occurrences, it
-- is necessary to zero out the static data after each call.
-- Otherwise `getutline' could just return a pointer to the same
-- entry over and over again.
--
-- - Function: struct utmp * pututline (const struct utmp *UTMP)
-- The `pututline' function inserts the entry `*UTMP' at the
-- appropriate place in the user accounting database. If it finds
-- that it is not already at the correct place in the database, it
-- uses `getutid' to search for the position to insert the entry,
-- however this will not modify the static structure returned by
-- `getutent', `getutid' and `getutline'. If this search fails, the
-- entry is appended to the database.
--
-- The `pututline' function returns a pointer to a copy of the entry
-- inserted in the user accounting database, or a null pointer if the
-- entry could not be added. The following `errno' error conditions
-- are defined for this function:
--
-- `EPERM'
-- The process does not have the appropriate privileges; you
-- cannot modify the user accounting database.
--
-- All the `get*' functions mentioned before store the information they
--return in a static buffer. This can be a problem in multi-threaded
--programs since the data returned for the request is overwritten by the
--return value data in another thread. Therefore the GNU C Library
--provides as extensions three more functions which return the data in a
--user-provided buffer.
--
-- - Function: int getutent_r (struct utmp *BUFFER, struct utmp **RESULT)
-- The `getutent_r' is equivalent to the `getutent' function. It
-- returns the next entry from the database. But instead of storing
-- the information in a static buffer it stores it in the buffer
-- pointed to by the parameter BUFFER.
--
-- If the call was successful, the function returns `0' and the
-- pointer variable pointed to by the parameter RESULT contains a
-- pointer to the buffer which contains the result (this is most
-- probably the same value as BUFFER). If something went wrong
-- during the execution of `getutent_r' the function returns `-1'.
--
-- This function is a GNU extension.
--
-- - Function: int getutid_r (const struct utmp *ID, struct utmp *BUFFER,
-- struct utmp **RESULT)
-- This function retrieves just like `getutid' the next entry matching
-- the information stored in ID. But the result is stored in the
-- buffer pointed to by the parameter BUFFER.
--
-- If successful the function returns `0' and the pointer variable
-- pointed to by the parameter RESULT contains a pointer to the
-- buffer with the result (probably the same as RESULT. If not
-- successful the function return `-1'.
--
-- This function is a GNU extension.
--
-- - Function: int getutline_r (const struct utmp *LINE, struct utmp
-- *BUFFER, struct utmp **RESULT)
-- This function retrieves just like `getutline' the next entry
-- matching the information stored in LINE. But the result is stored
-- in the buffer pointed to by the parameter BUFFER.
--
-- If successful the function returns `0' and the pointer variable
-- pointed to by the parameter RESULT contains a pointer to the
-- buffer with the result (probably the same as RESULT. If not
-- successful the function return `-1'.
--
-- This function is a GNU extension.
--
-- In addition to the user accounting database, most systems keep a
--number of similar databases. For example most systems keep a log file
--with all previous logins (usually in `/etc/wtmp' or `/var/log/wtmp').
--
-- For specifying which database to examine, the following function
--should be used.
--
-- - Function: int utmpname (const char *FILE)
-- The `utmpname' function changes the name of the database to be
-- examined to FILE, and closes any previously opened database. By
-- default `getutent', `getutid', `getutline' and `pututline' read
-- from and write to the user accounting database.
--
-- The following macros are defined for use as the FILE argument:
--
-- - Macro: char * _PATH_UTMP
-- This macro is used to specify the user accounting database.
--
-- - Macro: char * _PATH_WTMP
-- This macro is used to specify the user accounting log file.
--
-- The `utmpname' function returns a value of `0' if the new name was
-- successfully stored, and a value of `-1' to indicate an error.
-- Note that `utmpname' does not try to open the database, and that
-- therefore the return value does not say anything about whether the
-- database can be successfully opened.
--
-- Specially for maintaining log-like databases the GNU C Library
--provides the following function:
--
-- - Function: void updwtmp (const char *WTMP_FILE, const struct utmp
-- *UTMP)
-- The `updwtmp' function appends the entry *UTMP to the database
-- specified by WTMP_FILE. For possible values for the WTMP_FILE
-- argument see the `utmpname' function.
--
-- *Portability Note:* Although many operating systems provide a subset
--of these functions, they are not standardized. There are often subtle
--differences in the return types, and there are considerable differences
--between the various definitions of `struct utmp'. When programming for
--the GNU system, it is probably best to stick with the functions
--described in this section. If however, you want your program to be
--portable, consider using the XPG functions described in *Note XPG
--Functions::, or take a look at the BSD compatible functions in *Note
--Logging In and Out::.
--
--
--File: libc.info, Node: XPG Functions, Next: Logging In and Out, Prev: Manipulating the Database, Up: User Accounting Database
--
--XPG User Accounting Database Functions
----------------------------------------
--
-- These functions, described in the X/Open Portability Guide, are
--declared in the header file `utmpx.h'.
--
-- - Data Type: struct utmpx
-- The `utmpx' data structure contains at least the following members:
--
-- `short int ut_type'
-- Specifies the type of login; one of `EMPTY', `RUN_LVL',
-- `BOOT_TIME', `OLD_TIME', `NEW_TIME', `INIT_PROCESS',
-- `LOGIN_PROCESS', `USER_PROCESS' or `DEAD_PROCESS'.
--
-- `pid_t ut_pid'
-- The process ID number of the login process.
--
-- `char ut_line[]'
-- The device name of the tty (without `/dev/').
--
-- `char ut_id[]'
-- The inittab ID of the process.
--
-- `char ut_user[]'
-- The user's login name.
--
-- `struct timeval ut_tv'
-- Time the entry was made. For entries of type `OLD_TIME' this
-- is the time when the system clock changed, and for entries of
-- type `NEW_TIME' this is the time the system clock was set to.
-- On the GNU system, `struct utmpx' is identical to `struct utmp'
-- except for the fact that including `utmpx.h' does not make visible
-- the declaration of `struct exit_status'.
--
-- The following macros are defined for use as values for the `ut_type'
--member of the `utmpx' structure. The values are integer constants and
--are, on the GNU system, identical to the definitions in `utmp.h'.
--
--`EMPTY'
-- This macro is used to indicate that the entry contains no valid
-- user accounting information.
--
--`RUN_LVL'
-- This macro is used to identify the systems runlevel.
--
--`BOOT_TIME'
-- This macro is used to identify the time of system boot.
--
--`OLD_TIME'
-- This macro is used to identify the time when the system clock
-- changed.
--
--`NEW_TIME'
-- This macro is used to identify the time after the system changed.
--
--`INIT_PROCESS'
-- This macro is used to identify a process spawned by the init
-- process.
--
--`LOGIN_PROCESS'
-- This macro is used to identify the session leader of a logged in
-- user.
--
--`USER_PROCESS'
-- This macro is used to identify a user process.
--
--`DEAD_PROCESS'
-- This macro is used to identify a terminated process.
--
-- The size of the `ut_line', `ut_id' and `ut_user' arrays can be found
--using the `sizeof' operator.
--
-- - Function: void setutxent (void)
-- This function is similar to `setutent'. On the GNU system it is
-- simply an alias for `setutent'.
--
-- - Function: struct utmpx * getutxent (void)
-- The `getutxent' function is similar to `getutent', but returns a
-- pointer to a `struct utmpx' instead of `struct utmp'. On the GNU
-- system it simply is an alias for `getutent'.
--
-- - Function: void endutxent (void)
-- This function is similar to `endutent'. On the GNU system it is
-- simply an alias for `endutent'.
--
-- - Function: struct utmpx * getutxid (const struct utmpx *ID)
-- This function is similar to `getutid', but uses `struct utmpx'
-- instead of `struct utmp'. On the GNU system it is simply an alias
-- for `getutid'.
--
-- - Function: struct utmpx * getutxline (const struct utmpx *LINE)
-- This function is similar to `getutid', but uses `struct utmpx'
-- instead of `struct utmp'. On the GNU system it is simply an alias
-- for `getutline'.
--
-- - Function: struct utmpx * pututxline (const struct utmpx *UTMP)
-- The `pututxline' function is functionally identical to
-- `pututline', but uses `struct utmpx' instead of `struct utmp'. On
-- the GNU system, `pututxline' is simply an alias for `pututline'.
--
-- - Function: int utmpxname (const char *FILE)
-- The `utmpxname' function is functionally identical to `utmpname'.
-- On the GNU system, `utmpxname' is simply an alias for `utmpname'.
--
-- You can translate between a traditional `struct utmp' and an XPG
--`struct utmpx' with the following functions. On the GNU system, these
--functions are merely copies, since the two structures are identical.
--
-- - Function: int getutmp (const struct utmpx *utmpx, struct utmp *utmp)
-- `getutmp' copies the information, insofar as the structures are
-- compatible, from UTMPX to UTMP.
--
-- - Function: int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)
-- `getutmpx' copies the information, insofar as the structures are
-- compatible, from UTMP to UTMPX.
--
--
--File: libc.info, Node: Logging In and Out, Prev: XPG Functions, Up: User Accounting Database
--
--Logging In and Out
--------------------
--
-- These functions, derived from BSD, are available in the separate
--`libutil' library, and declared in `utmp.h'.
--
-- Note that the `ut_user' member of `struct utmp' is called `ut_name'
--in BSD. Therefore, `ut_name' is defined as an alias for `ut_user' in
--`utmp.h'.
--
-- - Function: int login_tty (int FILEDES)
-- This function makes FILEDES the controlling terminal of the
-- current process, redirects standard input, standard output and
-- standard error output to this terminal, and closes FILEDES.
--
-- This function returns `0' on successful completion, and `-1' on
-- error.
--
-- - Function: void login (const struct utmp *ENTRY)
-- The `login' functions inserts an entry into the user accounting
-- database. The `ut_line' member is set to the name of the terminal
-- on standard input. If standard input is not a terminal `login'
-- uses standard output or standard error output to determine the
-- name of the terminal. If `struct utmp' has a `ut_type' member,
-- `login' sets it to `USER_PROCESS', and if there is an `ut_pid'
-- member, it will be set to the process ID of the current process.
-- The remaining entries are copied from ENTRY.
--
-- A copy of the entry is written to the user accounting log file.
--
-- - Function: int logout (const char *UT_LINE)
-- This function modifies the user accounting database to indicate
-- that the user on UT_LINE has logged out.
--
-- The `logout' function returns `1' if the entry was successfully
-- written to the database, or `0' on error.
--
-- - Function: void logwtmp (const char *UT_LINE, const char *UT_NAME,
-- const char *UT_HOST)
-- The `logwtmp' function appends an entry to the user accounting log
-- file, for the current time and the information provided in the
-- UT_LINE, UT_NAME and UT_HOST arguments.
--
-- *Portability Note:* The BSD `struct utmp' only has the `ut_line',
--`ut_name', `ut_host' and `ut_time' members. Older systems do not even
--have the `ut_host' member.
--
--
--File: libc.info, Node: User Database, Next: Group Database, Prev: User Accounting Database, Up: Users and Groups
--
--User Database
--=============
--
-- This section describes how to search and scan the database of
--registered users. The database itself is kept in the file
--`/etc/passwd' on most systems, but on some systems a special network
--server gives access to it.
--
--* Menu:
--
--* User Data Structure:: What each user record contains.
--* Lookup User:: How to look for a particular user.
--* Scanning All Users:: Scanning the list of all users, one by one.
--* Writing a User Entry:: How a program can rewrite a user's record.
--
--
--File: libc.info, Node: User Data Structure, Next: Lookup User, Up: User Database
--
--The Data Structure that Describes a User
------------------------------------------
--
-- The functions and data structures for accessing the system user
--database are declared in the header file `pwd.h'.
--
-- - Data Type: struct passwd
-- The `passwd' data structure is used to hold information about
-- entries in the system user data base. It has at least the
-- following members:
--
-- `char *pw_name'
-- The user's login name.
--
-- `char *pw_passwd.'
-- The encrypted password string.
--
-- `uid_t pw_uid'
-- The user ID number.
--
-- `gid_t pw_gid'
-- The user's default group ID number.
--
-- `char *pw_gecos'
-- A string typically containing the user's real name, and
-- possibly other information such as a phone number.
--
-- `char *pw_dir'
-- The user's home directory, or initial working directory.
-- This might be a null pointer, in which case the
-- interpretation is system-dependent.
--
-- `char *pw_shell'
-- The user's default shell, or the initial program run when the
-- user logs in. This might be a null pointer, indicating that
-- the system default should be used.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-47 glibc-2.3.2-200304020432/manual/libc.info-47
---- glibc-2.3.2/manual/libc.info-47 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-47 Thu Jan 1 01:00:00 1970
-@@ -1,1034 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Lookup User, Next: Scanning All Users, Prev: User Data Structure, Up: User Database
--
--Looking Up One User
---------------------
--
-- You can search the system user database for information about a
--specific user using `getpwuid' or `getpwnam'. These functions are
--declared in `pwd.h'.
--
-- - Function: struct passwd * getpwuid (uid_t UID)
-- This function returns a pointer to a statically-allocated structure
-- containing information about the user whose user ID is UID. This
-- structure may be overwritten on subsequent calls to `getpwuid'.
--
-- A null pointer value indicates there is no user in the data base
-- with user ID UID.
--
-- - Function: int getpwuid_r (uid_t UID, struct passwd *RESULT_BUF, char
-- *BUFFER, size_t BUFLEN, struct passwd **RESULT)
-- This function is similar to `getpwuid' in that it returns
-- information about the user whose user ID is UID. However, it
-- fills the user supplied structure pointed to by RESULT_BUF with
-- the information instead of using a static buffer. The first
-- BUFLEN bytes of the additional buffer pointed to by BUFFER are
-- used to contain additional information, normally strings which are
-- pointed to by the elements of the result structure.
--
-- If a user with ID UID is found, the pointer returned in RESULT
-- points to the record which contains the wanted data (i.e., RESULT
-- contains the value RESULT_BUF). If no user is found or if an
-- error occurred, the pointer returned in RESULT is a null pointer.
-- The function returns zero or an error code. If the buffer BUFFER
-- is too small to contain all the needed information, the error code
-- `ERANGE' is returned and ERRNO is set to `ERANGE'.
--
-- - Function: struct passwd * getpwnam (const char *NAME)
-- This function returns a pointer to a statically-allocated structure
-- containing information about the user whose user name is NAME.
-- This structure may be overwritten on subsequent calls to
-- `getpwnam'.
--
-- A null pointer return indicates there is no user named NAME.
--
-- - Function: int getpwnam_r (const char *NAME, struct passwd
-- *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd
-- **RESULT)
-- This function is similar to `getpwnam' in that is returns
-- information about the user whose user name is NAME. However, like
-- `getpwuid_r', it fills the user supplied buffers in RESULT_BUF and
-- BUFFER with the information instead of using a static buffer.
--
-- The return values are the same as for `getpwuid_r'.
--
--
--File: libc.info, Node: Scanning All Users, Next: Writing a User Entry, Prev: Lookup User, Up: User Database
--
--Scanning the List of All Users
--------------------------------
--
-- This section explains how a program can read the list of all users in
--the system, one user at a time. The functions described here are
--declared in `pwd.h'.
--
-- You can use the `fgetpwent' function to read user entries from a
--particular file.
--
-- - Function: struct passwd * fgetpwent (FILE *STREAM)
-- This function reads the next user entry from STREAM and returns a
-- pointer to the entry. The structure is statically allocated and is
-- rewritten on subsequent calls to `fgetpwent'. You must copy the
-- contents of the structure if you wish to save the information.
--
-- The stream must correspond to a file in the same format as the
-- standard password database file.
--
-- - Function: int fgetpwent_r (FILE *STREAM, struct passwd *RESULT_BUF,
-- char *BUFFER, size_t BUFLEN, struct passwd **RESULT)
-- This function is similar to `fgetpwent' in that it reads the next
-- user entry from STREAM. But the result is returned in the
-- structure pointed to by RESULT_BUF. The first BUFLEN bytes of the
-- additional buffer pointed to by BUFFER are used to contain
-- additional information, normally strings which are pointed to by
-- the elements of the result structure.
--
-- The stream must correspond to a file in the same format as the
-- standard password database file.
--
-- If the function returns zero RESULT points to the structure with
-- the wanted data (normally this is in RESULT_BUF). If errors
-- occurred the return value is nonzero and RESULT contains a null
-- pointer.
--
-- The way to scan all the entries in the user database is with
--`setpwent', `getpwent', and `endpwent'.
--
-- - Function: void setpwent (void)
-- This function initializes a stream which `getpwent' and
-- `getpwent_r' use to read the user database.
--
-- - Function: struct passwd * getpwent (void)
-- The `getpwent' function reads the next entry from the stream
-- initialized by `setpwent'. It returns a pointer to the entry. The
-- structure is statically allocated and is rewritten on subsequent
-- calls to `getpwent'. You must copy the contents of the structure
-- if you wish to save the information.
--
-- A null pointer is returned when no more entries are available.
--
-- - Function: int getpwent_r (struct passwd *RESULT_BUF, char *BUFFER,
-- int BUFLEN, struct passwd **RESULT)
-- This function is similar to `getpwent' in that it returns the next
-- entry from the stream initialized by `setpwent'. Like
-- `fgetpwent_r', it uses the user-supplied buffers in RESULT_BUF and
-- BUFFER to return the information requested.
--
-- The return values are the same as for `fgetpwent_r'.
--
--
-- - Function: void endpwent (void)
-- This function closes the internal stream used by `getpwent' or
-- `getpwent_r'.
--
--
--File: libc.info, Node: Writing a User Entry, Prev: Scanning All Users, Up: User Database
--
--Writing a User Entry
----------------------
--
-- - Function: int putpwent (const struct passwd *P, FILE *STREAM)
-- This function writes the user entry `*P' to the stream STREAM, in
-- the format used for the standard user database file. The return
-- value is zero on success and nonzero on failure.
--
-- This function exists for compatibility with SVID. We recommend
-- that you avoid using it, because it makes sense only on the
-- assumption that the `struct passwd' structure has no members
-- except the standard ones; on a system which merges the traditional
-- Unix data base with other extended information about users, adding
-- an entry using this function would inevitably leave out much of
-- the important information.
--
-- The function `putpwent' is declared in `pwd.h'.
--
--
--File: libc.info, Node: Group Database, Next: Database Example, Prev: User Database, Up: Users and Groups
--
--Group Database
--==============
--
-- This section describes how to search and scan the database of
--registered groups. The database itself is kept in the file
--`/etc/group' on most systems, but on some systems a special network
--service provides access to it.
--
--* Menu:
--
--* Group Data Structure:: What each group record contains.
--* Lookup Group:: How to look for a particular group.
--* Scanning All Groups:: Scanning the list of all groups.
--
--
--File: libc.info, Node: Group Data Structure, Next: Lookup Group, Up: Group Database
--
--The Data Structure for a Group
--------------------------------
--
-- The functions and data structures for accessing the system group
--database are declared in the header file `grp.h'.
--
-- - Data Type: struct group
-- The `group' structure is used to hold information about an entry in
-- the system group database. It has at least the following members:
--
-- `char *gr_name'
-- The name of the group.
--
-- `gid_t gr_gid'
-- The group ID of the group.
--
-- `char **gr_mem'
-- A vector of pointers to the names of users in the group.
-- Each user name is a null-terminated string, and the vector
-- itself is terminated by a null pointer.
--
--
--File: libc.info, Node: Lookup Group, Next: Scanning All Groups, Prev: Group Data Structure, Up: Group Database
--
--Looking Up One Group
----------------------
--
-- You can search the group database for information about a specific
--group using `getgrgid' or `getgrnam'. These functions are declared in
--`grp.h'.
--
-- - Function: struct group * getgrgid (gid_t GID)
-- This function returns a pointer to a statically-allocated structure
-- containing information about the group whose group ID is GID.
-- This structure may be overwritten by subsequent calls to
-- `getgrgid'.
--
-- A null pointer indicates there is no group with ID GID.
--
-- - Function: int getgrgid_r (gid_t GID, struct group *RESULT_BUF, char
-- *BUFFER, size_t BUFLEN, struct group **RESULT)
-- This function is similar to `getgrgid' in that it returns
-- information about the group whose group ID is GID. However, it
-- fills the user supplied structure pointed to by RESULT_BUF with
-- the information instead of using a static buffer. The first
-- BUFLEN bytes of the additional buffer pointed to by BUFFER are
-- used to contain additional information, normally strings which are
-- pointed to by the elements of the result structure.
--
-- If a group with ID GID is found, the pointer returned in RESULT
-- points to the record which contains the wanted data (i.e., RESULT
-- contains the value RESULT_BUF). If no group is found or if an
-- error occurred, the pointer returned in RESULT is a null pointer.
-- The function returns zero or an error code. If the buffer BUFFER
-- is too small to contain all the needed information, the error code
-- `ERANGE' is returned and ERRNO is set to `ERANGE'.
--
-- - Function: struct group * getgrnam (const char *NAME)
-- This function returns a pointer to a statically-allocated structure
-- containing information about the group whose group name is NAME.
-- This structure may be overwritten by subsequent calls to
-- `getgrnam'.
--
-- A null pointer indicates there is no group named NAME.
--
-- - Function: int getgrnam_r (const char *NAME, struct group
-- *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group
-- **RESULT)
-- This function is similar to `getgrnam' in that is returns
-- information about the group whose group name is NAME. Like
-- `getgrgid_r', it uses the user supplied buffers in RESULT_BUF and
-- BUFFER, not a static buffer.
--
-- The return values are the same as for `getgrgid_r' `ERANGE'.
--
--
--File: libc.info, Node: Scanning All Groups, Prev: Lookup Group, Up: Group Database
--
--Scanning the List of All Groups
---------------------------------
--
-- This section explains how a program can read the list of all groups
--in the system, one group at a time. The functions described here are
--declared in `grp.h'.
--
-- You can use the `fgetgrent' function to read group entries from a
--particular file.
--
-- - Function: struct group * fgetgrent (FILE *STREAM)
-- The `fgetgrent' function reads the next entry from STREAM. It
-- returns a pointer to the entry. The structure is statically
-- allocated and is overwritten on subsequent calls to `fgetgrent'.
-- You must copy the contents of the structure if you wish to save the
-- information.
--
-- The stream must correspond to a file in the same format as the
-- standard group database file.
--
-- - Function: int fgetgrent_r (FILE *STREAM, struct group *RESULT_BUF,
-- char *BUFFER, size_t BUFLEN, struct group **RESULT)
-- This function is similar to `fgetgrent' in that it reads the next
-- user entry from STREAM. But the result is returned in the
-- structure pointed to by RESULT_BUF. The first BUFLEN bytes of the
-- additional buffer pointed to by BUFFER are used to contain
-- additional information, normally strings which are pointed to by
-- the elements of the result structure.
--
-- This stream must correspond to a file in the same format as the
-- standard group database file.
--
-- If the function returns zero RESULT points to the structure with
-- the wanted data (normally this is in RESULT_BUF). If errors
-- occurred the return value is non-zero and RESULT contains a null
-- pointer.
--
-- The way to scan all the entries in the group database is with
--`setgrent', `getgrent', and `endgrent'.
--
-- - Function: void setgrent (void)
-- This function initializes a stream for reading from the group data
-- base. You use this stream by calling `getgrent' or `getgrent_r'.
--
-- - Function: struct group * getgrent (void)
-- The `getgrent' function reads the next entry from the stream
-- initialized by `setgrent'. It returns a pointer to the entry. The
-- structure is statically allocated and is overwritten on subsequent
-- calls to `getgrent'. You must copy the contents of the structure
-- if you wish to save the information.
--
-- - Function: int getgrent_r (struct group *RESULT_BUF, char *BUFFER,
-- size_t BUFLEN, struct group **RESULT)
-- This function is similar to `getgrent' in that it returns the next
-- entry from the stream initialized by `setgrent'. Like
-- `fgetgrent_r', it places the result in user-supplied buffers
-- pointed to RESULT_BUF and BUFFER.
--
-- If the function returns zero RESULT contains a pointer to the data
-- (normally equal to RESULT_BUF). If errors occurred the return
-- value is non-zero and RESULT contains a null pointer.
--
-- - Function: void endgrent (void)
-- This function closes the internal stream used by `getgrent' or
-- `getgrent_r'.
--
--
--File: libc.info, Node: Database Example, Next: Netgroup Database, Prev: Group Database, Up: Users and Groups
--
--User and Group Database Example
--===============================
--
-- Here is an example program showing the use of the system database
--inquiry functions. The program prints some information about the user
--running the program.
--
-- #include <grp.h>
-- #include <pwd.h>
-- #include <sys/types.h>
-- #include <unistd.h>
-- #include <stdlib.h>
--
-- int
-- main (void)
-- {
-- uid_t me;
-- struct passwd *my_passwd;
-- struct group *my_group;
-- char **members;
--
-- /* Get information about the user ID. */
-- me = getuid ();
-- my_passwd = getpwuid (me);
-- if (!my_passwd)
-- {
-- printf ("Couldn't find out about user %d.\n", (int) me);
-- exit (EXIT_FAILURE);
-- }
--
-- /* Print the information. */
-- printf ("I am %s.\n", my_passwd->pw_gecos);
-- printf ("My login name is %s.\n", my_passwd->pw_name);
-- printf ("My uid is %d.\n", (int) (my_passwd->pw_uid));
-- printf ("My home directory is %s.\n", my_passwd->pw_dir);
-- printf ("My default shell is %s.\n", my_passwd->pw_shell);
--
-- /* Get information about the default group ID. */
-- my_group = getgrgid (my_passwd->pw_gid);
-- if (!my_group)
-- {
-- printf ("Couldn't find out about group %d.\n",
-- (int) my_passwd->pw_gid);
-- exit (EXIT_FAILURE);
-- }
--
-- /* Print the information. */
-- printf ("My default group is %s (%d).\n",
-- my_group->gr_name, (int) (my_passwd->pw_gid));
-- printf ("The members of this group are:\n");
-- members = my_group->gr_mem;
-- while (*members)
-- {
-- printf (" %s\n", *(members));
-- members++;
-- }
--
-- return EXIT_SUCCESS;
-- }
--
-- Here is some output from this program:
--
-- I am Throckmorton Snurd.
-- My login name is snurd.
-- My uid is 31093.
-- My home directory is /home/fsg/snurd.
-- My default shell is /bin/sh.
-- My default group is guest (12).
-- The members of this group are:
-- friedman
-- tami
--
--
--File: libc.info, Node: Netgroup Database, Prev: Database Example, Up: Users and Groups
--
--Netgroup Database
--=================
--
--* Menu:
--
--* Netgroup Data:: Data in the Netgroup database and where
-- it comes from.
--* Lookup Netgroup:: How to look for a particular netgroup.
--* Netgroup Membership:: How to test for netgroup membership.
--
--
--File: libc.info, Node: Netgroup Data, Next: Lookup Netgroup, Up: Netgroup Database
--
--Netgroup Data
---------------
--
-- Sometimes it is useful to group users according to other criteria
--(*note Group Database::). E.g., it is useful to associate a certain
--group of users with a certain machine. On the other hand grouping of
--host names is not supported so far.
--
-- In Sun Microsystems SunOS appeared a new kind of database, the
--netgroup database. It allows grouping hosts, users, and domains
--freely, giving them individual names. To be more concrete, a netgroup
--is a list of triples consisting of a host name, a user name, and a
--domain name where any of the entries can be a wildcard entry matching
--all inputs. A last possibility is that names of other netgroups can
--also be given in the list specifying a netgroup. So one can construct
--arbitrary hierarchies without loops.
--
-- Sun's implementation allows netgroups only for the `nis' or
--`nisplus' service, *note Services in the NSS configuration::. The
--implementation in the GNU C library has no such restriction. An entry
--in either of the input services must have the following form:
--
-- GROUPNAME ( GROUPNAME | `('HOSTNAME`,'USERNAME`,'`domainname'`)' )+
--
-- Any of the fields in the triple can be empty which means anything
--matches. While describing the functions we will see that the opposite
--case is useful as well. I.e., there may be entries which will not
--match any input. For entries like this, a name consisting of the single
--character `-' shall be used.
--
--
--File: libc.info, Node: Lookup Netgroup, Next: Netgroup Membership, Prev: Netgroup Data, Up: Netgroup Database
--
--Looking up one Netgroup
-------------------------
--
-- The lookup functions for netgroups are a bit different to all other
--system database handling functions. Since a single netgroup can contain
--many entries a two-step process is needed. First a single netgroup is
--selected and then one can iterate over all entries in this netgroup.
--These functions are declared in `netdb.h'.
--
-- - Function: int setnetgrent (const char *NETGROUP)
-- A call to this function initializes the internal state of the
-- library to allow following calls of the `getnetgrent' to iterate
-- over all entries in the netgroup with name NETGROUP.
--
-- When the call is successful (i.e., when a netgroup with this name
-- exists) the return value is `1'. When the return value is `0' no
-- netgroup of this name is known or some other error occurred.
--
-- It is important to remember that there is only one single state for
--iterating the netgroups. Even if the programmer uses the
--`getnetgrent_r' function the result is not really reentrant since
--always only one single netgroup at a time can be processed. If the
--program needs to process more than one netgroup simultaneously she must
--protect this by using external locking. This problem was introduced in
--the original netgroups implementation in SunOS and since we must stay
--compatible it is not possible to change this.
--
-- Some other functions also use the netgroups state. Currently these
--are the `innetgr' function and parts of the implementation of the
--`compat' service part of the NSS implementation.
--
-- - Function: int getnetgrent (char **HOSTP, char **USERP, char
-- **DOMAINP)
-- This function returns the next unprocessed entry of the currently
-- selected netgroup. The string pointers, in which addresses are
-- passed in the arguments HOSTP, USERP, and DOMAINP, will contain
-- after a successful call pointers to appropriate strings. If the
-- string in the next entry is empty the pointer has the value `NULL'.
-- The returned string pointers are only valid if none of the netgroup
-- related functions are called.
--
-- The return value is `1' if the next entry was successfully read. A
-- value of `0' means no further entries exist or internal errors
-- occurred.
--
-- - Function: int getnetgrent_r (char **HOSTP, char **USERP, char
-- **DOMAINP, char *BUFFER, int BUFLEN)
-- This function is similar to `getnetgrent' with only one exception:
-- the strings the three string pointers HOSTP, USERP, and DOMAINP
-- point to, are placed in the buffer of BUFLEN bytes starting at
-- BUFFER. This means the returned values are valid even after other
-- netgroup related functions are called.
--
-- The return value is `1' if the next entry was successfully read and
-- the buffer contains enough room to place the strings in it. `0' is
-- returned in case no more entries are found, the buffer is too
-- small, or internal errors occurred.
--
-- This function is a GNU extension. The original implementation in
-- the SunOS libc does not provide this function.
--
-- - Function: void endnetgrent (void)
-- This function frees all buffers which were allocated to process
-- the last selected netgroup. As a result all string pointers
-- returned by calls to `getnetgrent' are invalid afterwards.
--
--
--File: libc.info, Node: Netgroup Membership, Prev: Lookup Netgroup, Up: Netgroup Database
--
--Testing for Netgroup Membership
---------------------------------
--
-- It is often not necessary to scan the whole netgroup since often the
--only interesting question is whether a given entry is part of the
--selected netgroup.
--
-- - Function: int innetgr (const char *NETGROUP, const char *HOST, const
-- char *USER, const char *DOMAIN)
-- This function tests whether the triple specified by the parameters
-- HOSTP, USERP, and DOMAINP is part of the netgroup NETGROUP. Using
-- this function has the advantage that
--
-- 1. no other netgroup function can use the global netgroup state
-- since internal locking is used and
--
-- 2. the function is implemented more efficiently than successive
-- calls to the other `set'/`get'/`endnetgrent' functions.
--
-- Any of the pointers HOSTP, USERP, and DOMAINP can be `NULL' which
-- means any value is accepted in this position. This is also true
-- for the name `-' which should not match any other string otherwise.
--
-- The return value is `1' if an entry matching the given triple is
-- found in the netgroup. The return value is `0' if the netgroup
-- itself is not found, the netgroup does not contain the triple or
-- internal errors occurred.
--
--
--File: libc.info, Node: System Management, Next: System Configuration, Prev: Users and Groups, Up: Top
--
--System Management
--*****************
--
-- This chapter describes facilities for controlling the system that
--underlies a process (including the operating system and hardware) and
--for getting information about it. Anyone can generally use the
--informational facilities, but usually only a properly privileged process
--can make changes.
--
--* Menu:
--
--* Host Identification:: Determining the name of the machine.
--* Platform Type:: Determining operating system and basic
-- machine type
--* Filesystem Handling:: Controlling/querying mounts
--* System Parameters:: Getting and setting various system parameters
--
-- To get information on parameters of the system that are built into
--the system, such as the maximum length of a filename, *Note System
--Configuration::.
--
--
--File: libc.info, Node: Host Identification, Next: Platform Type, Up: System Management
--
--Host Identification
--===================
--
-- This section explains how to identify the particular system on which
--your program is running. First, let's review the various ways computer
--systems are named, which is a little complicated because of the history
--of the development of the Internet.
--
-- Every Unix system (also known as a host) has a host name, whether
--it's connected to a network or not. In its simplest form, as used
--before computer networks were an issue, it's just a word like `chicken'.
--
-- But any system attached to the Internet or any network like it
--conforms to a more rigorous naming convention as part of the Domain
--Name System (DNS). In DNS, every host name is composed of two parts:
--
-- 1. hostname
--
-- 2. domain name
--
-- You will note that "hostname" looks a lot like "host name", but is
--not the same thing, and that people often incorrectly refer to entire
--host names as "domain names."
--
-- In DNS, the full host name is properly called the FQDN (Fully
--Qualified Domain Name) and consists of the hostname, then a period,
--then the domain name. The domain name itself usually has multiple
--components separated by periods. So for example, a system's hostname
--may be `chicken' and its domain name might be `ai.mit.edu', so its FQDN
--(which is its host name) is `chicken.ai.mit.edu'.
--
-- Adding to the confusion, though, is that DNS is not the only name
--space in which a computer needs to be known. Another name space is the
--NIS (aka YP) name space. For NIS purposes, there is another domain
--name, which is called the NIS domain name or the YP domain name. It
--need not have anything to do with the DNS domain name.
--
-- Confusing things even more is the fact that in DNS, it is possible
--for multiple FQDNs to refer to the same system. However, there is
--always exactly one of them that is the true host name, and it is called
--the canonical FQDN.
--
-- In some contexts, the host name is called a "node name."
--
-- For more information on DNS host naming, *Note Host Names::.
--
-- Prototypes for these functions appear in `unistd.h'.
--
-- The programs `hostname', `hostid', and `domainname' work by calling
--these functions.
--
-- - Function: int gethostname (char *NAME, size_t SIZE)
-- This function returns the host name of the system on which it is
-- called, in the array NAME. The SIZE argument specifies the size of
-- this array, in bytes. Note that this is _not_ the DNS hostname.
-- If the system participates in DNS, this is the FQDN (see above).
--
-- The return value is `0' on success and `-1' on failure. In the
-- GNU C library, `gethostname' fails if SIZE is not large enough;
-- then you can try again with a larger array. The following `errno'
-- error condition is defined for this function:
--
-- `ENAMETOOLONG'
-- The SIZE argument is less than the size of the host name plus
-- one.
--
-- On some systems, there is a symbol for the maximum possible host
-- name length: `MAXHOSTNAMELEN'. It is defined in `sys/param.h'.
-- But you can't count on this to exist, so it is cleaner to handle
-- failure and try again.
--
-- `gethostname' stores the beginning of the host name in NAME even
-- if the host name won't entirely fit. For some purposes, a
-- truncated host name is good enough. If it is, you can ignore the
-- error code.
--
-- - Function: int sethostname (const char *NAME, size_t LENGTH)
-- The `sethostname' function sets the host name of the system that
-- calls it to NAME, a string with length LENGTH. Only privileged
-- processes are permitted to do this.
--
-- Usually `sethostname' gets called just once, at system boot time.
-- Often, the program that calls it sets it to the value it finds in
-- the file `/etc/hostname'.
--
-- Be sure to set the host name to the full host name, not just the
-- DNS hostname (see above).
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error condition is defined for this function:
--
-- `EPERM'
-- This process cannot set the host name because it is not
-- privileged.
--
-- - Function: int getdomainnname (char *NAME, size_t LENGTH)
-- `getdomainname' returns the NIS (aka YP) domain name of the system
-- on which it is called. Note that this is not the more popular DNS
-- domain name. Get that with `gethostname'.
--
-- The specifics of this function are analogous to `gethostname',
-- above.
--
--
-- - Function: int setdomainname (const char *NAME, size_t LENGTH)
-- `getdomainname' sets the NIS (aka YP) domain name of the system on
-- which it is called. Note that this is not the more popular DNS
-- domain name. Set that with `sethostname'.
--
-- The specifics of this function are analogous to `sethostname',
-- above.
--
--
-- - Function: long int gethostid (void)
-- This function returns the "host ID" of the machine the program is
-- running on. By convention, this is usually the primary Internet
-- IP address of that machine, converted to a `long int'. However,
-- on some systems it is a meaningless but unique number which is
-- hard-coded for each machine.
--
-- This is not widely used. It arose in BSD 4.2, but was dropped in
-- BSD 4.4. It is not required by POSIX.
--
-- The proper way to query the IP address is to use `gethostbyname'
-- on the results of `gethostname'. For more information on IP
-- addresses, *Note Host Addresses::.
--
-- - Function: int sethostid (long int ID)
-- The `sethostid' function sets the "host ID" of the host machine to
-- ID. Only privileged processes are permitted to do this. Usually
-- it happens just once, at system boot time.
--
-- The proper way to establish the primary IP address of a system is
-- to configure the IP address resolver to associate that IP address
-- with the system's host name as returned by `gethostname'. For
-- example, put a record for the system in `/etc/hosts'.
--
-- See `gethostid' above for more information on host ids.
--
-- The return value is `0' on success and `-1' on failure. The
-- following `errno' error conditions are defined for this function:
--
-- `EPERM'
-- This process cannot set the host name because it is not
-- privileged.
--
-- `ENOSYS'
-- The operating system does not support setting the host ID.
-- On some systems, the host ID is a meaningless but unique
-- number hard-coded for each machine.
--
--
--File: libc.info, Node: Platform Type, Next: Filesystem Handling, Prev: Host Identification, Up: System Management
--
--Platform Type Identification
--============================
--
-- You can use the `uname' function to find out some information about
--the type of computer your program is running on. This function and the
--associated data type are declared in the header file `sys/utsname.h'.
--
-- As a bonus, `uname' also gives some information identifying the
--particular system your program is running on. This is the same
--information which you can get with functions targetted to this purpose
--described in *Note Host Identification::.
--
-- - Data Type: struct utsname
-- The `utsname' structure is used to hold information returned by
-- the `uname' function. It has the following members:
--
-- `char sysname[]'
-- This is the name of the operating system in use.
--
-- `char release[]'
-- This is the current release level of the operating system
-- implementation.
--
-- `char version[]'
-- This is the current version level within the release of the
-- operating system.
--
-- `char machine[]'
-- This is a description of the type of hardware that is in use.
--
-- Some systems provide a mechanism to interrogate the kernel
-- directly for this information. On systems without such a
-- mechanism, the GNU C library fills in this field based on the
-- configuration name that was specified when building and
-- installing the library.
--
-- GNU uses a three-part name to describe a system
-- configuration; the three parts are CPU, MANUFACTURER and
-- SYSTEM-TYPE, and they are separated with dashes. Any
-- possible combination of three names is potentially
-- meaningful, but most such combinations are meaningless in
-- practice and even the meaningful ones are not necessarily
-- supported by any particular GNU program.
--
-- Since the value in `machine' is supposed to describe just the
-- hardware, it consists of the first two parts of the
-- configuration name: `CPU-MANUFACTURER'. For example, it
-- might be one of these:
--
-- `"sparc-sun"', `"i386-ANYTHING"', `"m68k-hp"',
-- `"m68k-sony"', `"m68k-sun"', `"mips-dec"'
--
-- `char nodename[]'
-- This is the host name of this particular computer. In the
-- GNU C library, the value is the same as that returned by
-- `gethostname'; see *Note Host Identification::.
--
-- gethostname() is implemented with a call to uname().
--
-- `char domainname[]'
-- This is the NIS or YP domain name. It is the same value
-- returned by `getdomainname'; see *Note Host Identification::.
-- This element is a relatively recent invention and use of it
-- is not as portable as use of the rest of the structure.
--
--
-- - Function: int uname (struct utsname *INFO)
-- The `uname' function fills in the structure pointed to by INFO
-- with information about the operating system and host machine. A
-- non-negative value indicates that the data was successfully stored.
--
-- `-1' as the value indicates an error. The only error possible is
-- `EFAULT', which we normally don't mention as it is always a
-- possibility.
--
--
--File: libc.info, Node: Filesystem Handling, Next: System Parameters, Prev: Platform Type, Up: System Management
--
--Controlling and Querying Mounts
--===============================
--
-- All files are in filesystems, and before you can access any file, its
--filesystem must be mounted. Because of Unix's concept of _Everything
--is a file_, mounting of filesystems is central to doing almost
--anything. This section explains how to find out what filesystems are
--currently mounted and what filesystems are available for mounting, and
--how to change what is mounted.
--
-- The classic filesystem is the contents of a disk drive. The concept
--is considerably more abstract, though, and lots of things other than
--disk drives can be mounted.
--
-- Some block devices don't correspond to traditional devices like disk
--drives. For example, a loop device is a block device whose driver uses
--a regular file in another filesystem as its medium. So if that regular
--file contains appropriate data for a filesystem, you can by mounting the
--loop device essentially mount a regular file.
--
-- Some filesystems aren't based on a device of any kind. The "proc"
--filesystem, for example, contains files whose data is made up by the
--filesystem driver on the fly whenever you ask for it. And when you
--write to it, the data you write causes changes in the system. No data
--gets stored.
--
--* Menu:
--
--* Mount Information:: What is or could be mounted?
--* Mount-Unmount-Remount:: Controlling what is mounted and how
--
--
--File: libc.info, Node: Mount Information, Next: Mount-Unmount-Remount, Up: Filesystem Handling
--
--Mount Information
-------------------
--
-- For some programs it is desirable and necessary to access information
--about whether a certain filesystem is mounted and, if it is, where, or
--simply to get lists of all the available filesystems. The GNU libc
--provides some functions to retrieve this information portably.
--
-- Traditionally Unix systems have a file named `/etc/fstab' which
--describes all possibly mounted filesystems. The `mount' program uses
--this file to mount at startup time of the system all the necessary
--filesystems. The information about all the filesystems actually
--mounted is normally kept in a file named either `/var/run/mtab' or
--`/etc/mtab'. Both files share the same syntax and it is crucial that
--this syntax is followed all the time. Therefore it is best to never
--directly write the files. The functions described in this section can
--do this and they also provide the functionality to convert the external
--textual representation to the internal representation.
--
-- Note that the `fstab' and `mtab' files are maintained on a system by
--_convention_. It is possible for the files not to exist or not to be
--consistent with what is really mounted or available to mount, if the
--system's administration policy allows it. But programs that mount and
--unmount filesystems typically maintain and use these files as described
--herein.
--
-- The filenames given above should never be used directly. The
--portable way to handle these file is to use the macro `_PATH_FSTAB',
--defined in `fstab.h', or `_PATH_MNTTAB', defined in `mntent.h' and
--`paths.h', for `fstab'; and the macro `_PATH_MOUNTED', also defined in
--`mntent.h' and `paths.h', for `mtab'. There are also two alternate
--macro names `FSTAB', `MNTTAB', and `MOUNTED' defined but these names
--are deprecated and kept only for backward compatibility. The names
--`_PATH_MNTTAB' and `_PATH_MOUNTED' should always be used.
--
--* Menu:
--
--* fstab:: The `fstab' file
--* mtab:: The `mtab' file
--* Other Mount Information:: Other (non-libc) sources of mount information
--
--
--File: libc.info, Node: fstab, Next: mtab, Up: Mount Information
--
--The `fstab' file
--................
--
-- The internal representation for entries of the file is
--`struct fstab', defined in `fstab.h'.
--
-- - Data Type: struct fstab
-- This structure is used with the `getfsent', `getfsspec', and
-- `getfsfile' functions.
--
-- `char *fs_spec'
-- This element describes the device from which the filesystem
-- is mounted. Normally this is the name of a special device,
-- such as a hard disk partition, but it could also be a more or
-- less generic string. For "NFS" it would be a hostname and
-- directory name combination.
--
-- Even though the element is not declared `const' it shouldn't
-- be modified. The missing `const' has historic reasons, since
-- this function predates ISO C. The same is true for the other
-- string elements of this structure.
--
-- `char *fs_file'
-- This describes the mount point on the local system. I.e.,
-- accessing any file in this filesystem has implicitly or
-- explicitly this string as a prefix.
--
-- `char *fs_vfstype'
-- This is the type of the filesystem. Depending on what the
-- underlying kernel understands it can be any string.
--
-- `char *fs_mntops'
-- This is a string containing options passed to the kernel with
-- the `mount' call. Again, this can be almost anything. There
-- can be more than one option, separated from the others by a
-- comma. Each option consists of a name and an optional value
-- part, introduced by an `=' character.
--
-- If the value of this element must be processed it should
-- ideally be done using the `getsubopt' function; see *Note
-- Suboptions::.
--
-- `const char *fs_type'
-- This name is poorly chosen. This element points to a string
-- (possibly in the `fs_mntops' string) which describes the
-- modes with which the filesystem is mounted. `fstab' defines
-- five macros to describe the possible values:
--
-- `FSTAB_RW'
-- The filesystems gets mounted with read and write enabled.
--
-- `FSTAB_RQ'
-- The filesystems gets mounted with read and write
-- enabled. Write access is restricted by quotas.
--
-- `FSTAB_RO'
-- The filesystem gets mounted read-only.
--
-- `FSTAB_SW'
-- This is not a real filesystem, it is a swap device.
--
-- `FSTAB_XX'
-- This entry from the `fstab' file is totally ignored.
--
-- Testing for equality with these value must happen using
-- `strcmp' since these are all strings. Comparing the pointer
-- will probably always fail.
--
-- `int fs_freq'
-- This element describes the dump frequency in days.
--
-- `int fs_passno'
-- This element describes the pass number on parallel dumps. It
-- is closely related to the `dump' utility used on Unix systems.
--
-- To read the entire content of the of the `fstab' file the GNU libc
--contains a set of three functions which are designed in the usual way.
--
-- - Function: int setfsent (void)
-- This function makes sure that the internal read pointer for the
-- `fstab' file is at the beginning of the file. This is done by
-- either opening the file or resetting the read pointer.
--
-- Since the file handle is internal to the libc this function is not
-- thread-safe.
--
-- This function returns a non-zero value if the operation was
-- successful and the `getfs*' functions can be used to read the
-- entries of the file.
--
-- - Function: void endfsent (void)
-- This function makes sure that all resources acquired by a prior
-- call to `setfsent' (explicitly or implicitly by calling
-- `getfsent') are freed.
--
-- - Function: struct fstab * getfsent (void)
-- This function returns the next entry of the `fstab' file. If this
-- is the first call to any of the functions handling `fstab' since
-- program start or the last call of `endfsent', the file will be
-- opened.
--
-- The function returns a pointer to a variable of type `struct
-- fstab'. This variable is shared by all threads and therefore this
-- function is not thread-safe. If an error occurred `getfsent'
-- returns a `NULL' pointer.
--
-- - Function: struct fstab * getfsspec (const char *NAME)
-- This function returns the next entry of the `fstab' file which has
-- a string equal to NAME pointed to by the `fs_spec' element. Since
-- there is normally exactly one entry for each special device it
-- makes no sense to call this function more than once for the same
-- argument. If this is the first call to any of the functions
-- handling `fstab' since program start or the last call of
-- `endfsent', the file will be opened.
--
-- The function returns a pointer to a variable of type `struct
-- fstab'. This variable is shared by all threads and therefore this
-- function is not thread-safe. If an error occurred `getfsent'
-- returns a `NULL' pointer.
--
-- - Function: struct fstab * getfsfile (const char *NAME)
-- This function returns the next entry of the `fstab' file which has
-- a string equal to NAME pointed to by the `fs_file' element. Since
-- there is normally exactly one entry for each mount point it makes
-- no sense to call this function more than once for the same
-- argument. If this is the first call to any of the functions
-- handling `fstab' since program start or the last call of
-- `endfsent', the file will be opened.
--
-- The function returns a pointer to a variable of type `struct
-- fstab'. This variable is shared by all threads and therefore this
-- function is not thread-safe. If an error occurred `getfsent'
-- returns a `NULL' pointer.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-48 glibc-2.3.2-200304020432/manual/libc.info-48
---- glibc-2.3.2/manual/libc.info-48 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-48 Thu Jan 1 01:00:00 1970
-@@ -1,1353 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: mtab, Next: Other Mount Information, Prev: fstab, Up: Mount Information
--
--The `mtab' file
--...............
--
-- The following functions and data structure access the `mtab' file.
--
-- - Data Type: struct mntent
-- This structure is used with the `getmntent', `getmntent_t',
-- `addmntent', and `hasmntopt' functions.
--
-- `char *mnt_fsname'
-- This element contains a pointer to a string describing the
-- name of the special device from which the filesystem is
-- mounted. It corresponds to the `fs_spec' element in `struct
-- fstab'.
--
-- `char *mnt_dir'
-- This element points to a string describing the mount point of
-- the filesystem. It corresponds to the `fs_file' element in
-- `struct fstab'.
--
-- `char *mnt_type'
-- `mnt_type' describes the filesystem type and is therefore
-- equivalent to `fs_vfstype' in `struct fstab'. `mntent.h'
-- defines a few symbolic names for some of the values this
-- string can have. But since the kernel can support arbitrary
-- filesystems it does not make much sense to give them symbolic
-- names. If one knows the symbol name one also knows the
-- filesystem name. Nevertheless here follows the list of the
-- symbols provided in `mntent.h'.
--
-- `MNTTYPE_IGNORE'
-- This symbol expands to `"ignore"'. The value is
-- sometime used in `fstab' files to make sure entries are
-- not used without removing them.
--
-- `MNTTYPE_NFS'
-- Expands to `"nfs"'. Using this macro sometimes could
-- make sense since it names the default NFS
-- implementation, in case both version 2 and 3 are
-- supported.
--
-- `MNTTYPE_SWAP'
-- This symbol expands to `"swap"'. It names the special
-- `fstab' entry which names one of the possibly multiple
-- swap partitions.
--
-- `char *mnt_opts'
-- The element contains a string describing the options used
-- while mounting the filesystem. As for the equivalent element
-- `fs_mntops' of `struct fstab' it is best to use the function
-- `getsubopt' (*note Suboptions::) to access the parts of this
-- string.
--
-- The `mntent.h' file defines a number of macros with string
-- values which correspond to some of the options understood by
-- the kernel. There might be many more options which are
-- possible so it doesn't make much sense to rely on these
-- macros but to be consistent here is the list:
--
-- `MNTOPT_DEFAULTS'
-- Expands to `"defaults"'. This option should be used
-- alone since it indicates all values for the customizable
-- values are chosen to be the default.
--
-- `MNTOPT_RO'
-- Expands to `"ro"'. See the `FSTAB_RO' value, it means
-- the filesystem is mounted read-only.
--
-- `MNTOPT_RW'
-- Expand to `"rw"'. See the `FSTAB_RW' value, it means the
-- filesystem is mounted with read and write permissions.
--
-- `MNTOPT_SUID'
-- Expands to `"suid"'. This means that the SUID bit
-- (*note How Change Persona::) is respected when a program
-- from the filesystem is started.
--
-- `MNTOPT_NOSUID'
-- Expands to `"nosuid"'. This is the opposite of
-- `MNTOPT_SUID', the SUID bit for all files from the
-- filesystem is ignored.
--
-- `MNTOPT_NOAUTO'
-- Expands to `"noauto"'. At startup time the `mount'
-- program will ignore this entry if it is started with the
-- `-a' option to mount all filesystems mentioned in the
-- `fstab' file.
--
-- As for the `FSTAB_*' entries introduced above it is important
-- to use `strcmp' to check for equality.
--
-- `mnt_freq'
-- This elements corresponds to `fs_freq' and also specifies the
-- frequency in days in which dumps are made.
--
-- `mnt_passno'
-- This element is equivalent to `fs_passno' with the same
-- meaning which is uninteresting for all programs beside `dump'.
--
-- For accessing the `mtab' file there is again a set of three
--functions to access all entries in a row. Unlike the functions to
--handle `fstab' these functions do not access a fixed file and there is
--even a thread safe variant of the get function. Beside this the GNU
--libc contains functions to alter the file and test for specific options.
--
-- - Function: FILE * setmntent (const char *FILE, const char *MODE)
-- The `setmntent' function prepares the file named FILE which must
-- be in the format of a `fstab' and `mtab' file for the upcoming
-- processing through the other functions of the family. The MODE
-- parameter can be chosen in the way the OPENTYPE parameter for
-- `fopen' (*note Opening Streams::) can be chosen. If the file is
-- opened for writing the file is also allowed to be empty.
--
-- If the file was successfully opened `setmntent' returns a file
-- descriptor for future use. Otherwise the return value is `NULL'
-- and `errno' is set accordingly.
--
-- - Function: int endmntent (FILE *STREAM)
-- This function takes for the STREAM parameter a file handle which
-- previously was returned from the `setmntent' call. `endmntent'
-- closes the stream and frees all resources.
--
-- The return value is 1 unless an error occurred in which case it is
-- 0.
--
-- - Function: struct mntent * getmntent (FILE *STREAM)
-- The `getmntent' function takes as the parameter a file handle
-- previously returned by successful call to `setmntent'. It returns
-- a pointer to a static variable of type `struct mntent' which is
-- filled with the information from the next entry from the file
-- currently read.
--
-- The file format used prescribes the use of spaces or tab
-- characters to separate the fields. This makes it harder to use
-- name containing one of these characters (e.g., mount points using
-- spaces). Therefore these characters are encoded in the files and
-- the `getmntent' function takes care of the decoding while reading
-- the entries back in. `'\040'' is used to encode a space
-- character, `'\012'' to encode a tab character and `'\\'' to encode
-- a backslash.
--
-- If there was an error or the end of the file is reached the return
-- value is `NULL'.
--
-- This function is not thread-safe since all calls to this function
-- return a pointer to the same static variable. `getmntent_r'
-- should be used in situations where multiple threads access the
-- file.
--
-- - Function: struct mntent * getmntent_r (FILE *STREAM, struct mentent
-- *RESULT, char *BUFFER, int BUFSIZE)
-- The `getmntent_r' function is the reentrant variant of
-- `getmntent'. It also returns the next entry from the file and
-- returns a pointer. The actual variable the values are stored in
-- is not static, though. Instead the function stores the values in
-- the variable pointed to by the RESULT parameter. Additional
-- information (e.g., the strings pointed to by the elements of the
-- result) are kept in the buffer of size BUFSIZE pointed to by
-- BUFFER.
--
-- Escaped characters (space, tab, backslash) are converted back in
-- the same way as it happens for `getmentent'.
--
-- The function returns a `NULL' pointer in error cases. Errors
-- could be:
-- * error while reading the file,
--
-- * end of file reached,
--
-- * BUFSIZE is too small for reading a complete new entry.
--
-- - Function: int addmntent (FILE *STREAM, const struct mntent *MNT)
-- The `addmntent' function allows adding a new entry to the file
-- previously opened with `setmntent'. The new entries are always
-- appended. I.e., even if the position of the file descriptor is
-- not at the end of the file this function does not overwrite an
-- existing entry following the current position.
--
-- The implication of this is that to remove an entry from a file one
-- has to create a new file while leaving out the entry to be removed
-- and after closing the file remove the old one and rename the new
-- file to the chosen name.
--
-- This function takes care of spaces and tab characters in the names
-- to be written to the file. It converts them and the backslash
-- character into the format describe in the `getmntent' description
-- above.
--
-- This function returns 0 in case the operation was successful.
-- Otherwise the return value is 1 and `errno' is set appropriately.
--
-- - Function: char * hasmntopt (const struct mntent *MNT, const char
-- *OPT)
-- This function can be used to check whether the string pointed to
-- by the `mnt_opts' element of the variable pointed to by MNT
-- contains the option OPT. If this is true a pointer to the
-- beginning of the option in the `mnt_opts' element is returned. If
-- no such option exists the function returns `NULL'.
--
-- This function is useful to test whether a specific option is
-- present but when all options have to be processed one is better
-- off with using the `getsubopt' function to iterate over all
-- options in the string.
--
--
--File: libc.info, Node: Other Mount Information, Prev: mtab, Up: Mount Information
--
--Other (Non-libc) Sources of Mount Information
--.............................................
--
-- On a system with a Linux kernel and the `proc' filesystem, you can
--get information on currently mounted filesystems from the file `mounts'
--in the `proc' filesystem. Its format is similar to that of the `mtab'
--file, but represents what is truly mounted without relying on
--facilities outside the kernel to keep `mtab' up to date.
--
--
--File: libc.info, Node: Mount-Unmount-Remount, Prev: Mount Information, Up: Filesystem Handling
--
--Mount, Unmount, Remount
-------------------------
--
-- This section describes the functions for mounting, unmounting, and
--remounting filesystems.
--
-- Only the superuser can mount, unmount, or remount a filesystem.
--
-- These functions do not access the `fstab' and `mtab' files. You
--should maintain and use these separately. *Note Mount Information::.
--
-- The symbols in this section are declared in `sys/mount.h'.
--
-- - Function: int mount (const char *SPECIAL_FILE, const char *DIR,
-- const char *FSTYPE, unsigned long int OPTIONS, const void
-- *DATA)
-- `mount' mounts or remounts a filesystem. The two operations are
-- quite different and are merged rather unnaturally into this one
-- function. The `MS_REMOUNT' option, explained below, determines
-- whether `mount' mounts or remounts.
--
-- For a mount, the filesystem on the block device represented by the
-- device special file named SPECIAL_FILE gets mounted over the mount
-- point DIR. This means that the directory DIR (along with any
-- files in it) is no longer visible; in its place (and still with
-- the name DIR) is the root directory of the filesystem on the
-- device.
--
-- As an exception, if the filesystem type (see below) is one which
-- is not based on a device (e.g. "proc"), `mount' instantiates a
-- filesystem and mounts it over DIR and ignores SPECIAL_FILE.
--
-- For a remount, DIR specifies the mount point where the filesystem
-- to be remounted is (and remains) mounted and SPECIAL_FILE is
-- ignored. Remounting a filesystem means changing the options that
-- control operations on the filesystem while it is mounted. It does
-- not mean unmounting and mounting again.
--
-- For a mount, you must identify the type of the filesystem as
-- FSTYPE. This type tells the kernel how to access the filesystem
-- and can be thought of as the name of a filesystem driver. The
-- acceptable values are system dependent. On a system with a Linux
-- kernel and the `proc' filesystem, the list of possible values is
-- in the file `filesystems' in the `proc' filesystem (e.g. type `cat
-- /proc/filesystems' to see the list). With a Linux kernel, the
-- types of filesystems that `mount' can mount, and their type names,
-- depends on what filesystem drivers are configured into the kernel
-- or loaded as loadable kernel modules. An example of a common
-- value for FSTYPE is `ext2'.
--
-- For a remount, `mount' ignores FSTYPE.
--
-- OPTIONS specifies a variety of options that apply until the
-- filesystem is unmounted or remounted. The precise meaning of an
-- option depends on the filesystem and with some filesystems, an
-- option may have no effect at all. Furthermore, for some
-- filesystems, some of these options (but never `MS_RDONLY') can be
-- overridden for individual file accesses via `ioctl'.
--
-- OPTIONS is a bit string with bit fields defined using the
-- following mask and masked value macros:
--
-- `MS_MGC_MASK'
-- This multibit field contains a magic number. If it does not
-- have the value `MS_MGC_VAL', `mount' assumes all the
-- following bits are zero and the DATA argument is a null
-- string, regardless of their actual values.
--
-- `MS_REMOUNT'
-- This bit on means to remount the filesystem. Off means to
-- mount it.
--
-- `MS_RDONLY'
-- This bit on specifies that no writing to the filesystem shall
-- be allowed while it is mounted. This cannot be overridden by
-- `ioctl'. This option is available on nearly all filesystems.
--
-- `S_IMMUTABLE'
-- This bit on specifies that no writing to the files in the
-- filesystem shall be allowed while it is mounted. This can be
-- overridden for a particular file access by a properly
-- privileged call to `ioctl'. This option is a relatively new
-- invention and is not available on many filesystems.
--
-- `S_APPEND'
-- This bit on specifies that the only file writing that shall
-- be allowed while the filesystem is mounted is appending.
-- Some filesystems allow this to be overridden for a particular
-- process by a properly privileged call to `ioctl'. This is a
-- relatively new invention and is not available on many
-- filesystems.
--
-- `MS_NOSUID'
-- This bit on specifies that Setuid and Setgid permissions on
-- files in the filesystem shall be ignored while it is mounted.
--
-- `MS_NOEXEC'
-- This bit on specifies that no files in the filesystem shall
-- be executed while the filesystem is mounted.
--
-- `MS_NODEV'
-- This bit on specifies that no device special files in the
-- filesystem shall be accessible while the filesystem is
-- mounted.
--
-- `MS_SYNCHRONOUS'
-- This bit on specifies that all writes to the filesystem while
-- it is mounted shall be synchronous; i.e. data shall be synced
-- before each write completes rather than held in the buffer
-- cache.
--
-- `MS_MANDLOCK'
-- This bit on specifies that mandatory locks on files shall be
-- permitted while the filesystem is mounted.
--
-- `MS_NOATIME'
-- This bit on specifies that access times of files shall not be
-- updated when the files are accessed while the filesystem is
-- mounted.
--
-- `MS_NODIRATIME'
-- This bit on specifies that access times of directories shall
-- not be updated when the directories are accessed while the
-- filesystem in mounted.
--
-- Any bits not covered by the above masks should be set off;
-- otherwise, results are undefined.
--
-- The meaning of DATA depends on the filesystem type and is
-- controlled entirely by the filesystem driver in the kernel.
--
-- Example:
--
-- #include <sys/mount.h>
--
-- mount("/dev/hdb", "/cdrom", MS_MGC_VAL | MS_RDONLY | MS_NOSUID, "");
--
-- mount("/dev/hda2", "/mnt", MS_MGC_VAL | MS_REMOUNT, "");
--
-- Appropriate arguments for `mount' are conventionally recorded in
-- the `fstab' table. *Note Mount Information::.
--
-- The return value is zero if the mount or remount is successful.
-- Otherwise, it is `-1' and `errno' is set appropriately. The
-- values of `errno' are filesystem dependent, but here is a general
-- list:
--
-- `EPERM'
-- The process is not superuser.
--
-- `ENODEV'
-- The file system type FSTYPE is not known to the kernel.
--
-- `ENOTBLK'
-- The file DEV is not a block device special file.
--
-- `EBUSY'
-- * The device is already mounted.
--
-- * The mount point is busy. (E.g. it is some process'
-- working directory or has a filesystem mounted on it
-- already).
--
-- * The request is to remount read-only, but there are files
-- open for write.
--
-- `EINVAL'
-- * A remount was attempted, but there is no filesystem
-- mounted over the specified mount point.
--
-- * The supposed filesystem has an invalid superblock.
--
--
-- `EACCES'
-- * The filesystem is inherently read-only (possibly due to
-- a switch on the device) and the process attempted to
-- mount it read/write (by setting the `MS_RDONLY' bit off).
--
-- * SPECIAL_FILE or DIR is not accessible due to file
-- permissions.
--
-- * SPECIAL_FILE is not accessible because it is in a
-- filesystem that is mounted with the `MS_NODEV' option.
--
--
-- `EM_FILE'
-- The table of dummy devices is full. `mount' needs to create a
-- dummy device (aka "unnamed" device) if the filesystem being
-- mounted is not one that uses a device.
--
--
-- - Function: int umount2 (const char *FILE, int FLAGS)
-- `umount2' unmounts a filesystem.
--
-- You can identify the filesystem to unmount either by the device
-- special file that contains the filesystem or by the mount point.
-- The effect is the same. Specify either as the string FILE.
--
-- FLAGS contains the one-bit field identified by the following mask
-- macro:
--
-- `MNT_FORCE'
-- This bit on means to force the unmounting even if the
-- filesystem is busy, by making it unbusy first. If the bit is
-- off and the filesystem is busy, `umount2' fails with `errno'
-- = `EBUSY'. Depending on the filesystem, this may override
-- all, some, or no busy conditions.
--
-- All other bits in FLAGS should be set to zero; otherwise, the
-- result is undefined.
--
-- Example:
--
-- #include <sys/mount.h>
--
-- umount2("/mnt", MNT_FORCE);
--
-- umount2("/dev/hdd1", 0);
--
-- After the filesystem is unmounted, the directory that was the
-- mount point is visible, as are any files in it.
--
-- As part of unmounting, `umount2' syncs the filesystem.
--
-- If the unmounting is successful, the return value is zero.
-- Otherwise, it is `-1' and `errno' is set accordingly:
--
-- `EPERM'
-- The process is not superuser.
--
-- `EBUSY'
-- The filesystem cannot be unmounted because it is busy. E.g.
-- it contains a directory that is some process's working
-- directory or a file that some process has open. With some
-- filesystems in some cases, you can avoid this failure with
-- the `MNT_FORCE' option.
--
-- `EINVAL'
-- FILE validly refers to a file, but that file is neither a
-- mount point nor a device special file of a currently mounted
-- filesystem.
--
-- This function is not available on all systems.
--
-- - Function: int umount (const char *FILE)
-- `umount' does the same thing as `umount2' with FLAGS set to
-- zeroes. It is more widely available than `umount2' but since it
-- lacks the possibility to forcefully unmount a filesystem is
-- deprecated when `umount2' is also available.
--
--
--File: libc.info, Node: System Parameters, Prev: Filesystem Handling, Up: System Management
--
--System Parameters
--=================
--
-- This section describes the `sysctl' function, which gets and sets a
--variety of system parameters.
--
-- The symbols used in this section are declared in the file `sysctl.h'.
--
-- - Function: int sysctl (int *NAMES, int NLEN, void *OLDVAL,
-- size_t *OLDLENP, void *NEWVAL, size_t NEWLEN)
--
-- `sysctl' gets or sets a specified system parameter. There are so
-- many of these parameters that it is not practical to list them all
-- here, but here are some examples:
--
-- * network domain name
--
-- * paging parameters
--
-- * network Address Resolution Protocol timeout time
--
-- * maximum number of files that may be open
--
-- * root filesystem device
--
-- * when kernel was built
--
-- The set of available parameters depends on the kernel
-- configuration and can change while the system is running,
-- particularly when you load and unload loadable kernel modules.
--
-- The system parameters with which `syslog' is concerned are arranged
-- in a hierarchical structure like a hierarchical filesystem. To
-- identify a particular parameter, you specify a path through the
-- structure in a way analogous to specifying the pathname of a file.
-- Each component of the path is specified by an integer and each of
-- these integers has a macro defined for it by `sysctl.h'. NAMES is
-- the path, in the form of an array of integers. Each component of
-- the path is one element of the array, in order. NLEN is the
-- number of components in the path.
--
-- For example, the first component of the path for all the paging
-- parameters is the value `CTL_VM'. For the free page thresholds,
-- the second component of the path is `VM_FREEPG'. So to get the
-- free page threshold values, make NAMES an array containing the two
-- elements `CTL_VM' and `VM_FREEPG' and make NLEN = 2.
--
-- The format of the value of a parameter depends on the parameter.
-- Sometimes it is an integer; sometimes it is an ASCII string;
-- sometimes it is an elaborate structure. In the case of the free
-- page thresholds used in the example above, the parameter value is
-- a structure containing several integers.
--
-- In any case, you identify a place to return the parameter's value
-- with OLDVAL and specify the amount of storage available at that
-- location as *OLDLENP. *OLDLENP does double duty because it is
-- also the output location that contains the actual length of the
-- returned value.
--
-- If you don't want the parameter value returned, specify a null
-- pointer for OLDVAL.
--
-- To set the parameter, specify the address and length of the new
-- value as NEWVAL and NEWLEN. If you don't want to set the
-- parameter, specify a null pointer as NEWVAL.
--
-- If you get and set a parameter in the same `sysctl' call, the value
-- returned is the value of the parameter before it was set.
--
-- Each system parameter has a set of permissions similar to the
-- permissions for a file (including the permissions on directories
-- in its path) that determine whether you may get or set it. For
-- the purposes of these permissions, every parameter is considered
-- to be owned by the superuser and Group 0 so processes with that
-- effective uid or gid may have more access to system parameters.
-- Unlike with files, the superuser does not invariably have full
-- permission to all system parameters, because some of them are
-- designed not to be changed ever.
--
-- `sysctl' returns a zero return value if it succeeds. Otherwise, it
-- returns `-1' and sets `errno' appropriately. Besides the failures
-- that apply to all system calls, the following are the `errno'
-- codes for all possible failures:
--
-- `EPERM'
-- The process is not permitted to access one of the components
-- of the path of the system parameter or is not permitted to
-- access the system parameter itself in the way (read or write)
-- that it requested.
--
-- `ENOTDIR'
-- There is no system parameter corresponding to NAME.
--
-- `EFAULT'
-- OLDVAL is not null, which means the process wanted to read
-- the parameter, but *OLDLENP is zero, so there is no place to
-- return it.
--
-- `EINVAL'
-- * The process attempted to set a system parameter to a
-- value that is not valid for that parameter.
--
-- * The space provided for the return of the system
-- parameter is not the right size for that parameter.
--
-- `ENOMEM'
-- This value may be returned instead of the more correct
-- `EINVAL' in some cases where the space provided for the
-- return of the system parameter is too small.
--
--
-- If you have a Linux kernel with the `proc' filesystem, you can get
--and set most of the same parameters by reading and writing to files in
--the `sys' directory of the `proc' filesystem. In the `sys' directory,
--the directory structure represents the hierarchical structure of the
--parameters. E.g. you can display the free page thresholds with
-- cat /proc/sys/vm/freepages
--
-- Some more traditional and more widely available, though less general,
--GNU C library functions for getting and setting some of the same system
--parameters are:
--
-- * `getdomainname', `setdomainname'
--
-- * `gethostname', `sethostname' (*Note Host Identification::.)
--
-- * `uname' (*Note Platform Type::.)
--
-- * `bdflush'
--
--
--File: libc.info, Node: System Configuration, Next: Cryptographic Functions, Prev: System Management, Up: Top
--
--System Configuration Parameters
--*******************************
--
-- The functions and macros listed in this chapter give information
--about configuration parameters of the operating system--for example,
--capacity limits, presence of optional POSIX features, and the default
--path for executable files (*note String Parameters::).
--
--* Menu:
--
--* General Limits:: Constants and functions that describe
-- various process-related limits that have
-- one uniform value for any given machine.
--* System Options:: Optional POSIX features.
--* Version Supported:: Version numbers of POSIX.1 and POSIX.2.
--* Sysconf:: Getting specific configuration values
-- of general limits and system options.
--* Minimums:: Minimum values for general limits.
--
--* Limits for Files:: Size limitations that pertain to individual files.
-- These can vary between file systems
-- or even from file to file.
--* Options for Files:: Optional features that some files may support.
--* File Minimums:: Minimum values for file limits.
--* Pathconf:: Getting the limit values for a particular file.
--
--* Utility Limits:: Capacity limits of some POSIX.2 utility programs.
--* Utility Minimums:: Minimum allowable values of those limits.
--
--* String Parameters:: Getting the default search path.
--
--
--File: libc.info, Node: General Limits, Next: System Options, Up: System Configuration
--
--General Capacity Limits
--=======================
--
-- The POSIX.1 and POSIX.2 standards specify a number of parameters that
--describe capacity limitations of the system. These limits can be fixed
--constants for a given operating system, or they can vary from machine to
--machine. For example, some limit values may be configurable by the
--system administrator, either at run time or by rebuilding the kernel,
--and this should not require recompiling application programs.
--
-- Each of the following limit parameters has a macro that is defined in
--`limits.h' only if the system has a fixed, uniform limit for the
--parameter in question. If the system allows different file systems or
--files to have different limits, then the macro is undefined; use
--`sysconf' to find out the limit that applies at a particular time on a
--particular machine. *Note Sysconf::.
--
-- Each of these parameters also has another macro, with a name starting
--with `_POSIX', which gives the lowest value that the limit is allowed
--to have on _any_ POSIX system. *Note Minimums::.
--
-- - Macro: int ARG_MAX
-- If defined, the unvarying maximum combined length of the ARGV and
-- ENVIRON arguments that can be passed to the `exec' functions.
--
-- - Macro: int CHILD_MAX
-- If defined, the unvarying maximum number of processes that can
-- exist with the same real user ID at any one time. In BSD and GNU,
-- this is controlled by the `RLIMIT_NPROC' resource limit; *note
-- Limits on Resources::.
--
-- - Macro: int OPEN_MAX
-- If defined, the unvarying maximum number of files that a single
-- process can have open simultaneously. In BSD and GNU, this is
-- controlled by the `RLIMIT_NOFILE' resource limit; *note Limits on
-- Resources::.
--
-- - Macro: int STREAM_MAX
-- If defined, the unvarying maximum number of streams that a single
-- process can have open simultaneously. *Note Opening Streams::.
--
-- - Macro: int TZNAME_MAX
-- If defined, the unvarying maximum length of a time zone name.
-- *Note Time Zone Functions::.
--
-- These limit macros are always defined in `limits.h'.
--
-- - Macro: int NGROUPS_MAX
-- The maximum number of supplementary group IDs that one process can
-- have.
--
-- The value of this macro is actually a lower bound for the maximum.
-- That is, you can count on being able to have that many
-- supplementary group IDs, but a particular machine might let you
-- have even more. You can use `sysconf' to see whether a particular
-- machine will let you have more (*note Sysconf::).
--
-- - Macro: int SSIZE_MAX
-- The largest value that can fit in an object of type `ssize_t'.
-- Effectively, this is the limit on the number of bytes that can be
-- read or written in a single operation.
--
-- This macro is defined in all POSIX systems because this limit is
-- never configurable.
--
-- - Macro: int RE_DUP_MAX
-- The largest number of repetitions you are guaranteed is allowed in
-- the construct `\{MIN,MAX\}' in a regular expression.
--
-- The value of this macro is actually a lower bound for the maximum.
-- That is, you can count on being able to have that many
-- repetitions, but a particular machine might let you have even
-- more. You can use `sysconf' to see whether a particular machine
-- will let you have more (*note Sysconf::). And even the value that
-- `sysconf' tells you is just a lower bound--larger values might
-- work.
--
-- This macro is defined in all POSIX.2 systems, because POSIX.2 says
-- it should always be defined even if there is no specific imposed
-- limit.
--
--
--File: libc.info, Node: System Options, Next: Version Supported, Prev: General Limits, Up: System Configuration
--
--Overall System Options
--======================
--
-- POSIX defines certain system-specific options that not all POSIX
--systems support. Since these options are provided in the kernel, not
--in the library, simply using the GNU C library does not guarantee any
--of these features is supported; it depends on the system you are using.
--
-- You can test for the availability of a given option using the macros
--in this section, together with the function `sysconf'. The macros are
--defined only if you include `unistd.h'.
--
-- For the following macros, if the macro is defined in `unistd.h',
--then the option is supported. Otherwise, the option may or may not be
--supported; use `sysconf' to find out. *Note Sysconf::.
--
-- - Macro: int _POSIX_JOB_CONTROL
-- If this symbol is defined, it indicates that the system supports
-- job control. Otherwise, the implementation behaves as if all
-- processes within a session belong to a single process group.
-- *Note Job Control::.
--
-- - Macro: int _POSIX_SAVED_IDS
-- If this symbol is defined, it indicates that the system remembers
-- the effective user and group IDs of a process before it executes an
-- executable file with the set-user-ID or set-group-ID bits set, and
-- that explicitly changing the effective user or group IDs back to
-- these values is permitted. If this option is not defined, then if
-- a nonprivileged process changes its effective user or group ID to
-- the real user or group ID of the process, it can't change it back
-- again. *Note Enable/Disable Setuid::.
--
-- For the following macros, if the macro is defined in `unistd.h',
--then its value indicates whether the option is supported. A value of
--`-1' means no, and any other value means yes. If the macro is not
--defined, then the option may or may not be supported; use `sysconf' to
--find out. *Note Sysconf::.
--
-- - Macro: int _POSIX2_C_DEV
-- If this symbol is defined, it indicates that the system has the
-- POSIX.2 C compiler command, `c89'. The GNU C library always
-- defines this as `1', on the assumption that you would not have
-- installed it if you didn't have a C compiler.
--
-- - Macro: int _POSIX2_FORT_DEV
-- If this symbol is defined, it indicates that the system has the
-- POSIX.2 Fortran compiler command, `fort77'. The GNU C library
-- never defines this, because we don't know what the system has.
--
-- - Macro: int _POSIX2_FORT_RUN
-- If this symbol is defined, it indicates that the system has the
-- POSIX.2 `asa' command to interpret Fortran carriage control. The
-- GNU C library never defines this, because we don't know what the
-- system has.
--
-- - Macro: int _POSIX2_LOCALEDEF
-- If this symbol is defined, it indicates that the system has the
-- POSIX.2 `localedef' command. The GNU C library never defines
-- this, because we don't know what the system has.
--
-- - Macro: int _POSIX2_SW_DEV
-- If this symbol is defined, it indicates that the system has the
-- POSIX.2 commands `ar', `make', and `strip'. The GNU C library
-- always defines this as `1', on the assumption that you had to have
-- `ar' and `make' to install the library, and it's unlikely that
-- `strip' would be absent when those are present.
--
--
--File: libc.info, Node: Version Supported, Next: Sysconf, Prev: System Options, Up: System Configuration
--
--Which Version of POSIX is Supported
--===================================
--
-- - Macro: long int _POSIX_VERSION
-- This constant represents the version of the POSIX.1 standard to
-- which the implementation conforms. For an implementation
-- conforming to the 1995 POSIX.1 standard, the value is the integer
-- `199506L'.
--
-- `_POSIX_VERSION' is always defined (in `unistd.h') in any POSIX
-- system.
--
-- *Usage Note:* Don't try to test whether the system supports POSIX
-- by including `unistd.h' and then checking whether `_POSIX_VERSION'
-- is defined. On a non-POSIX system, this will probably fail
-- because there is no `unistd.h'. We do not know of _any_ way you
-- can reliably test at compilation time whether your target system
-- supports POSIX or whether `unistd.h' exists.
--
-- The GNU C compiler predefines the symbol `__POSIX__' if the target
-- system is a POSIX system. Provided you do not use any other
-- compilers on POSIX systems, testing `defined (__POSIX__)' will
-- reliably detect such systems.
--
-- - Macro: long int _POSIX2_C_VERSION
-- This constant represents the version of the POSIX.2 standard which
-- the library and system kernel support. We don't know what value
-- this will be for the first version of the POSIX.2 standard,
-- because the value is based on the year and month in which the
-- standard is officially adopted.
--
-- The value of this symbol says nothing about the utilities
-- installed on the system.
--
-- *Usage Note:* You can use this macro to tell whether a POSIX.1
-- system library supports POSIX.2 as well. Any POSIX.1 system
-- contains `unistd.h', so include that file and then test `defined
-- (_POSIX2_C_VERSION)'.
--
--
--File: libc.info, Node: Sysconf, Next: Minimums, Prev: Version Supported, Up: System Configuration
--
--Using `sysconf'
--===============
--
-- When your system has configurable system limits, you can use the
--`sysconf' function to find out the value that applies to any particular
--machine. The function and the associated PARAMETER constants are
--declared in the header file `unistd.h'.
--
--* Menu:
--
--* Sysconf Definition:: Detailed specifications of `sysconf'.
--* Constants for Sysconf:: The list of parameters `sysconf' can read.
--* Examples of Sysconf:: How to use `sysconf' and the parameter
-- macros properly together.
--
--
--File: libc.info, Node: Sysconf Definition, Next: Constants for Sysconf, Up: Sysconf
--
--Definition of `sysconf'
-------------------------
--
-- - Function: long int sysconf (int PARAMETER)
-- This function is used to inquire about runtime system parameters.
-- The PARAMETER argument should be one of the `_SC_' symbols listed
-- below.
--
-- The normal return value from `sysconf' is the value you requested.
-- A value of `-1' is returned both if the implementation does not
-- impose a limit, and in case of an error.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINVAL'
-- The value of the PARAMETER is invalid.
--
--
--File: libc.info, Node: Constants for Sysconf, Next: Examples of Sysconf, Prev: Sysconf Definition, Up: Sysconf
--
--Constants for `sysconf' Parameters
------------------------------------
--
-- Here are the symbolic constants for use as the PARAMETER argument to
--`sysconf'. The values are all integer constants (more specifically,
--enumeration type values).
--
--`_SC_ARG_MAX'
-- Inquire about the parameter corresponding to `ARG_MAX'.
--
--`_SC_CHILD_MAX'
-- Inquire about the parameter corresponding to `CHILD_MAX'.
--
--`_SC_OPEN_MAX'
-- Inquire about the parameter corresponding to `OPEN_MAX'.
--
--`_SC_STREAM_MAX'
-- Inquire about the parameter corresponding to `STREAM_MAX'.
--
--`_SC_TZNAME_MAX'
-- Inquire about the parameter corresponding to `TZNAME_MAX'.
--
--`_SC_NGROUPS_MAX'
-- Inquire about the parameter corresponding to `NGROUPS_MAX'.
--
--`_SC_JOB_CONTROL'
-- Inquire about the parameter corresponding to `_POSIX_JOB_CONTROL'.
--
--`_SC_SAVED_IDS'
-- Inquire about the parameter corresponding to `_POSIX_SAVED_IDS'.
--
--`_SC_VERSION'
-- Inquire about the parameter corresponding to `_POSIX_VERSION'.
--
--`_SC_CLK_TCK'
-- Inquire about the parameter corresponding to `CLOCKS_PER_SEC';
-- *note CPU Time::.
--
--`_SC_CHARCLASS_NAME_MAX'
-- Inquire about the parameter corresponding to maximal length
-- allowed for a character class name in an extended locale
-- specification. These extensions are not yet standardized and so
-- this option is not standardized as well.
--
--`_SC_REALTIME_SIGNALS'
-- Inquire about the parameter corresponding to
-- `_POSIX_REALTIME_SIGNALS'.
--
--`_SC_PRIORITY_SCHEDULING'
-- Inquire about the parameter corresponding to
-- `_POSIX_PRIORITY_SCHEDULING'.
--
--`_SC_TIMERS'
-- Inquire about the parameter corresponding to `_POSIX_TIMERS'.
--
--`_SC_ASYNCHRONOUS_IO'
-- Inquire about the parameter corresponding to
-- `_POSIX_ASYNCHRONOUS_IO'.
--
--`_SC_PRIORITIZED_IO'
-- Inquire about the parameter corresponding to
-- `_POSIX_PRIORITIZED_IO'.
--
--`_SC_SYNCHRONIZED_IO'
-- Inquire about the parameter corresponding to
-- `_POSIX_SYNCHRONIZED_IO'.
--
--`_SC_FSYNC'
-- Inquire about the parameter corresponding to `_POSIX_FSYNC'.
--
--`_SC_MAPPED_FILES'
-- Inquire about the parameter corresponding to `_POSIX_MAPPED_FILES'.
--
--`_SC_MEMLOCK'
-- Inquire about the parameter corresponding to `_POSIX_MEMLOCK'.
--
--`_SC_MEMLOCK_RANGE'
-- Inquire about the parameter corresponding to
-- `_POSIX_MEMLOCK_RANGE'.
--
--`_SC_MEMORY_PROTECTION'
-- Inquire about the parameter corresponding to
-- `_POSIX_MEMORY_PROTECTION'.
--
--`_SC_MESSAGE_PASSING'
-- Inquire about the parameter corresponding to
-- `_POSIX_MESSAGE_PASSING'.
--
--`_SC_SEMAPHORES'
-- Inquire about the parameter corresponding to `_POSIX_SEMAPHORES'.
--
--`_SC_SHARED_MEMORY_OBJECTS'
-- Inquire about the parameter corresponding to
-- `_POSIX_SHARED_MEMORY_OBJECTS'.
--
--`_SC_AIO_LISTIO_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_AIO_LISTIO_MAX'.
--
--`_SC_AIO_MAX'
-- Inquire about the parameter corresponding to `_POSIX_AIO_MAX'.
--
--`_SC_AIO_PRIO_DELTA_MAX'
-- Inquire the value by which a process can decrease its asynchronous
-- I/O priority level from its own scheduling priority. This
-- corresponds to the run-time invariant value `AIO_PRIO_DELTA_MAX'.
--
--`_SC_DELAYTIMER_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_DELAYTIMER_MAX'.
--
--`_SC_MQ_OPEN_MAX'
-- Inquire about the parameter corresponding to `_POSIX_MQ_OPEN_MAX'.
--
--`_SC_MQ_PRIO_MAX'
-- Inquire about the parameter corresponding to `_POSIX_MQ_PRIO_MAX'.
--
--`_SC_RTSIG_MAX'
-- Inquire about the parameter corresponding to `_POSIX_RTSIG_MAX'.
--
--`_SC_SEM_NSEMS_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_SEM_NSEMS_MAX'.
--
--`_SC_SEM_VALUE_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_SEM_VALUE_MAX'.
--
--`_SC_SIGQUEUE_MAX'
-- Inquire about the parameter corresponding to `_POSIX_SIGQUEUE_MAX'.
--
--`_SC_TIMER_MAX'
-- Inquire about the parameter corresponding to `_POSIX_TIMER_MAX'.
--
--`_SC_PII'
-- Inquire about the parameter corresponding to `_POSIX_PII'.
--
--`_SC_PII_XTI'
-- Inquire about the parameter corresponding to `_POSIX_PII_XTI'.
--
--`_SC_PII_SOCKET'
-- Inquire about the parameter corresponding to `_POSIX_PII_SOCKET'.
--
--`_SC_PII_INTERNET'
-- Inquire about the parameter corresponding to `_POSIX_PII_INTERNET'.
--
--`_SC_PII_OSI'
-- Inquire about the parameter corresponding to `_POSIX_PII_OSI'.
--
--`_SC_SELECT'
-- Inquire about the parameter corresponding to `_POSIX_SELECT'.
--
--`_SC_UIO_MAXIOV'
-- Inquire about the parameter corresponding to `_POSIX_UIO_MAXIOV'.
--
--`_SC_PII_INTERNET_STREAM'
-- Inquire about the parameter corresponding to
-- `_POSIX_PII_INTERNET_STREAM'.
--
--`_SC_PII_INTERNET_DGRAM'
-- Inquire about the parameter corresponding to
-- `_POSIX_PII_INTERNET_DGRAM'.
--
--`_SC_PII_OSI_COTS'
-- Inquire about the parameter corresponding to `_POSIX_PII_OSI_COTS'.
--
--`_SC_PII_OSI_CLTS'
-- Inquire about the parameter corresponding to `_POSIX_PII_OSI_CLTS'.
--
--`_SC_PII_OSI_M'
-- Inquire about the parameter corresponding to `_POSIX_PII_OSI_M'.
--
--`_SC_T_IOV_MAX'
-- Inquire the value of the value associated with the `T_IOV_MAX'
-- variable.
--
--`_SC_THREADS'
-- Inquire about the parameter corresponding to `_POSIX_THREADS'.
--
--`_SC_THREAD_SAFE_FUNCTIONS'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_SAFE_FUNCTIONS'.
--
--`_SC_GETGR_R_SIZE_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_GETGR_R_SIZE_MAX'.
--
--`_SC_GETPW_R_SIZE_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_GETPW_R_SIZE_MAX'.
--
--`_SC_LOGIN_NAME_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_LOGIN_NAME_MAX'.
--
--`_SC_TTY_NAME_MAX'
-- Inquire about the parameter corresponding to `_POSIX_TTY_NAME_MAX'.
--
--`_SC_THREAD_DESTRUCTOR_ITERATIONS'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_DESTRUCTOR_ITERATIONS'.
--
--`_SC_THREAD_KEYS_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_KEYS_MAX'.
--
--`_SC_THREAD_STACK_MIN'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_STACK_MIN'.
--
--`_SC_THREAD_THREADS_MAX'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_THREADS_MAX'.
--
--`_SC_THREAD_ATTR_STACKADDR'
-- Inquire about the parameter corresponding to
-- a `_POSIX_THREAD_ATTR_STACKADDR'.
--
--`_SC_THREAD_ATTR_STACKSIZE'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_ATTR_STACKSIZE'.
--
--`_SC_THREAD_PRIORITY_SCHEDULING'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_PRIORITY_SCHEDULING'.
--
--`_SC_THREAD_PRIO_INHERIT'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_PRIO_INHERIT'.
--
--`_SC_THREAD_PRIO_PROTECT'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_PRIO_PROTECT'.
--
--`_SC_THREAD_PROCESS_SHARED'
-- Inquire about the parameter corresponding to
-- `_POSIX_THREAD_PROCESS_SHARED'.
--
--`_SC_2_C_DEV'
-- Inquire about whether the system has the POSIX.2 C compiler
-- command, `c89'.
--
--`_SC_2_FORT_DEV'
-- Inquire about whether the system has the POSIX.2 Fortran compiler
-- command, `fort77'.
--
--`_SC_2_FORT_RUN'
-- Inquire about whether the system has the POSIX.2 `asa' command to
-- interpret Fortran carriage control.
--
--`_SC_2_LOCALEDEF'
-- Inquire about whether the system has the POSIX.2 `localedef'
-- command.
--
--`_SC_2_SW_DEV'
-- Inquire about whether the system has the POSIX.2 commands `ar',
-- `make', and `strip'.
--
--`_SC_BC_BASE_MAX'
-- Inquire about the maximum value of `obase' in the `bc' utility.
--
--`_SC_BC_DIM_MAX'
-- Inquire about the maximum size of an array in the `bc' utility.
--
--`_SC_BC_SCALE_MAX'
-- Inquire about the maximum value of `scale' in the `bc' utility.
--
--`_SC_BC_STRING_MAX'
-- Inquire about the maximum size of a string constant in the `bc'
-- utility.
--
--`_SC_COLL_WEIGHTS_MAX'
-- Inquire about the maximum number of weights that can necessarily
-- be used in defining the collating sequence for a locale.
--
--`_SC_EXPR_NEST_MAX'
-- Inquire about the maximum number of expressions nested within
-- parentheses when using the `expr' utility.
--
--`_SC_LINE_MAX'
-- Inquire about the maximum size of a text line that the POSIX.2 text
-- utilities can handle.
--
--`_SC_EQUIV_CLASS_MAX'
-- Inquire about the maximum number of weights that can be assigned
-- to an entry of the `LC_COLLATE' category `order' keyword in a
-- locale definition. The GNU C library does not presently support
-- locale definitions.
--
--`_SC_VERSION'
-- Inquire about the version number of POSIX.1 that the library and
-- kernel support.
--
--`_SC_2_VERSION'
-- Inquire about the version number of POSIX.2 that the system
-- utilities support.
--
--`_SC_PAGESIZE'
-- Inquire about the virtual memory page size of the machine.
-- `getpagesize' returns the same value (*note Query Memory
-- Parameters::).
--
--`_SC_NPROCESSORS_CONF'
-- Inquire about the number of configured processors.
--
--`_SC_NPROCESSORS_ONLN'
-- Inquire about the number of processors online.
--
--`_SC_PHYS_PAGES'
-- Inquire about the number of physical pages in the system.
--
--`_SC_AVPHYS_PAGES'
-- Inquire about the number of available physical pages in the system.
--
--`_SC_ATEXIT_MAX'
-- Inquire about the number of functions which can be registered as
-- termination functions for `atexit'; *note Cleanups on Exit::.
--
--`_SC_XOPEN_VERSION'
-- Inquire about the parameter corresponding to `_XOPEN_VERSION'.
--
--`_SC_XOPEN_XCU_VERSION'
-- Inquire about the parameter corresponding to `_XOPEN_XCU_VERSION'.
--
--`_SC_XOPEN_UNIX'
-- Inquire about the parameter corresponding to `_XOPEN_UNIX'.
--
--`_SC_XOPEN_REALTIME'
-- Inquire about the parameter corresponding to `_XOPEN_REALTIME'.
--
--`_SC_XOPEN_REALTIME_THREADS'
-- Inquire about the parameter corresponding to
-- `_XOPEN_REALTIME_THREADS'.
--
--`_SC_XOPEN_LEGACY'
-- Inquire about the parameter corresponding to `_XOPEN_LEGACY'.
--
--`_SC_XOPEN_CRYPT'
-- Inquire about the parameter corresponding to `_XOPEN_CRYPT'.
--
--`_SC_XOPEN_ENH_I18N'
-- Inquire about the parameter corresponding to `_XOPEN_ENH_I18N'.
--
--`_SC_XOPEN_SHM'
-- Inquire about the parameter corresponding to `_XOPEN_SHM'.
--
--`_SC_XOPEN_XPG2'
-- Inquire about the parameter corresponding to `_XOPEN_XPG2'.
--
--`_SC_XOPEN_XPG3'
-- Inquire about the parameter corresponding to `_XOPEN_XPG3'.
--
--`_SC_XOPEN_XPG4'
-- Inquire about the parameter corresponding to `_XOPEN_XPG4'.
--
--`_SC_CHAR_BIT'
-- Inquire about the number of bits in a variable of type `char'.
--
--`_SC_CHAR_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `char'.
--
--`_SC_CHAR_MIN'
-- Inquire about the minimum value which can be stored in a variable
-- of type `char'.
--
--`_SC_INT_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `int'.
--
--`_SC_INT_MIN'
-- Inquire about the minimum value which can be stored in a variable
-- of type `int'.
--
--`_SC_LONG_BIT'
-- Inquire about the number of bits in a variable of type `long int'.
--
--`_SC_WORD_BIT'
-- Inquire about the number of bits in a variable of a register word.
--
--`_SC_MB_LEN_MAX'
-- Inquire the maximum length of a multi-byte representation of a wide
-- character value.
--
--`_SC_NZERO'
-- Inquire about the value used to internally represent the zero
-- priority level for the process execution.
--
--`SC_SSIZE_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `ssize_t'.
--
--`_SC_SCHAR_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `signed char'.
--
--`_SC_SCHAR_MIN'
-- Inquire about the minimum value which can be stored in a variable
-- of type `signed char'.
--
--`_SC_SHRT_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `short int'.
--
--`_SC_SHRT_MIN'
-- Inquire about the minimum value which can be stored in a variable
-- of type `short int'.
--
--`_SC_UCHAR_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `unsigned char'.
--
--`_SC_UINT_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `unsigned int'.
--
--`_SC_ULONG_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `unsigned long int'.
--
--`_SC_USHRT_MAX'
-- Inquire about the maximum value which can be stored in a variable
-- of type `unsigned short int'.
--
--`_SC_NL_ARGMAX'
-- Inquire about the parameter corresponding to `NL_ARGMAX'.
--
--`_SC_NL_LANGMAX'
-- Inquire about the parameter corresponding to `NL_LANGMAX'.
--
--`_SC_NL_MSGMAX'
-- Inquire about the parameter corresponding to `NL_MSGMAX'.
--
--`_SC_NL_NMAX'
-- Inquire about the parameter corresponding to `NL_NMAX'.
--
--`_SC_NL_SETMAX'
-- Inquire about the parameter corresponding to `NL_SETMAX'.
--
--`_SC_NL_TEXTMAX'
-- Inquire about the parameter corresponding to `NL_TEXTMAX'.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-49 glibc-2.3.2-200304020432/manual/libc.info-49
---- glibc-2.3.2/manual/libc.info-49 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-49 Thu Jan 1 01:00:00 1970
-@@ -1,1219 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Examples of Sysconf, Prev: Constants for Sysconf, Up: Sysconf
--
--Examples of `sysconf'
-----------------------
--
-- We recommend that you first test for a macro definition for the
--parameter you are interested in, and call `sysconf' only if the macro
--is not defined. For example, here is how to test whether job control
--is supported:
--
-- int
-- have_job_control (void)
-- {
-- #ifdef _POSIX_JOB_CONTROL
-- return 1;
-- #else
-- int value = sysconf (_SC_JOB_CONTROL);
-- if (value < 0)
-- /* If the system is that badly wedged,
-- there's no use trying to go on. */
-- fatal (strerror (errno));
-- return value;
-- #endif
-- }
--
-- Here is how to get the value of a numeric limit:
--
-- int
-- get_child_max ()
-- {
-- #ifdef CHILD_MAX
-- return CHILD_MAX;
-- #else
-- int value = sysconf (_SC_CHILD_MAX);
-- if (value < 0)
-- fatal (strerror (errno));
-- return value;
-- #endif
-- }
--
--
--File: libc.info, Node: Minimums, Next: Limits for Files, Prev: Sysconf, Up: System Configuration
--
--Minimum Values for General Capacity Limits
--==========================================
--
-- Here are the names for the POSIX minimum upper bounds for the system
--limit parameters. The significance of these values is that you can
--safely push to these limits without checking whether the particular
--system you are using can go that far.
--
--`_POSIX_AIO_LISTIO_MAX'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of I/O operations that can be specified in a list I/O call.
-- The value of this constant is `2'; thus you can add up to two new
-- entries of the list of outstanding operations.
--
--`_POSIX_AIO_MAX'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of outstanding asynchronous I/O operations. The value of
-- this constant is `1'. So you cannot expect that you can issue
-- more than one operation and immediately continue with the normal
-- work, receiving the notifications asynchronously.
--
--`_POSIX_ARG_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum combined length of the ARGV and ENVIRON
-- arguments that can be passed to the `exec' functions. Its value
-- is `4096'.
--
--`_POSIX_CHILD_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum number of simultaneous processes per real
-- user ID. Its value is `6'.
--
--`_POSIX_NGROUPS_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum number of supplementary group IDs per
-- process. Its value is `0'.
--
--`_POSIX_OPEN_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum number of files that a single process can
-- have open simultaneously. Its value is `16'.
--
--`_POSIX_SSIZE_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum value that can be stored in an object of type
-- `ssize_t'. Its value is `32767'.
--
--`_POSIX_STREAM_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum number of streams that a single process can
-- have open simultaneously. Its value is `8'.
--
--`_POSIX_TZNAME_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the maximum length of a time zone name. Its value is
-- `3'.
--
--`_POSIX2_RE_DUP_MAX'
-- The value of this macro is the most restrictive limit permitted by
-- POSIX for the numbers used in the `\{MIN,MAX\}' construct in a
-- regular expression. Its value is `255'.
--
--
--File: libc.info, Node: Limits for Files, Next: Options for Files, Prev: Minimums, Up: System Configuration
--
--Limits on File System Capacity
--==============================
--
-- The POSIX.1 standard specifies a number of parameters that describe
--the limitations of the file system. It's possible for the system to
--have a fixed, uniform limit for a parameter, but this isn't the usual
--case. On most systems, it's possible for different file systems (and,
--for some parameters, even different files) to have different maximum
--limits. For example, this is very likely if you use NFS to mount some
--of the file systems from other machines.
--
-- Each of the following macros is defined in `limits.h' only if the
--system has a fixed, uniform limit for the parameter in question. If the
--system allows different file systems or files to have different limits,
--then the macro is undefined; use `pathconf' or `fpathconf' to find out
--the limit that applies to a particular file. *Note Pathconf::.
--
-- Each parameter also has another macro, with a name starting with
--`_POSIX', which gives the lowest value that the limit is allowed to
--have on _any_ POSIX system. *Note File Minimums::.
--
-- - Macro: int LINK_MAX
-- The uniform system limit (if any) for the number of names for a
-- given file. *Note Hard Links::.
--
-- - Macro: int MAX_CANON
-- The uniform system limit (if any) for the amount of text in a line
-- of input when input editing is enabled. *Note Canonical or Not::.
--
-- - Macro: int MAX_INPUT
-- The uniform system limit (if any) for the total number of
-- characters typed ahead as input. *Note I/O Queues::.
--
-- - Macro: int NAME_MAX
-- The uniform system limit (if any) for the length of a file name
-- component.
--
-- - Macro: int PATH_MAX
-- The uniform system limit (if any) for the length of an entire file
-- name (that is, the argument given to system calls such as `open').
--
-- - Macro: int PIPE_BUF
-- The uniform system limit (if any) for the number of bytes that can
-- be written atomically to a pipe. If multiple processes are
-- writing to the same pipe simultaneously, output from different
-- processes might be interleaved in chunks of this size. *Note
-- Pipes and FIFOs::.
--
-- These are alternative macro names for some of the same information.
--
-- - Macro: int MAXNAMLEN
-- This is the BSD name for `NAME_MAX'. It is defined in `dirent.h'.
--
-- - Macro: int FILENAME_MAX
-- The value of this macro is an integer constant expression that
-- represents the maximum length of a file name string. It is
-- defined in `stdio.h'.
--
-- Unlike `PATH_MAX', this macro is defined even if there is no actual
-- limit imposed. In such a case, its value is typically a very large
-- number. *This is always the case on the GNU system.*
--
-- *Usage Note:* Don't use `FILENAME_MAX' as the size of an array in
-- which to store a file name! You can't possibly make an array that
-- big! Use dynamic allocation (*note Memory Allocation::) instead.
--
--
--File: libc.info, Node: Options for Files, Next: File Minimums, Prev: Limits for Files, Up: System Configuration
--
--Optional Features in File Support
--=================================
--
-- POSIX defines certain system-specific options in the system calls for
--operating on files. Some systems support these options and others do
--not. Since these options are provided in the kernel, not in the
--library, simply using the GNU C library does not guarantee that any of
--these features is supported; it depends on the system you are using.
--They can also vary between file systems on a single machine.
--
-- This section describes the macros you can test to determine whether a
--particular option is supported on your machine. If a given macro is
--defined in `unistd.h', then its value says whether the corresponding
--feature is supported. (A value of `-1' indicates no; any other value
--indicates yes.) If the macro is undefined, it means particular files
--may or may not support the feature.
--
-- Since all the machines that support the GNU C library also support
--NFS, one can never make a general statement about whether all file
--systems support the `_POSIX_CHOWN_RESTRICTED' and `_POSIX_NO_TRUNC'
--features. So these names are never defined as macros in the GNU C
--library.
--
-- - Macro: int _POSIX_CHOWN_RESTRICTED
-- If this option is in effect, the `chown' function is restricted so
-- that the only changes permitted to nonprivileged processes is to
-- change the group owner of a file to either be the effective group
-- ID of the process, or one of its supplementary group IDs. *Note
-- File Owner::.
--
-- - Macro: int _POSIX_NO_TRUNC
-- If this option is in effect, file name components longer than
-- `NAME_MAX' generate an `ENAMETOOLONG' error. Otherwise, file name
-- components that are too long are silently truncated.
--
-- - Macro: unsigned char _POSIX_VDISABLE
-- This option is only meaningful for files that are terminal devices.
-- If it is enabled, then handling for special control characters can
-- be disabled individually. *Note Special Characters::.
--
-- If one of these macros is undefined, that means that the option
--might be in effect for some files and not for others. To inquire about
--a particular file, call `pathconf' or `fpathconf'. *Note Pathconf::.
--
--
--File: libc.info, Node: File Minimums, Next: Pathconf, Prev: Options for Files, Up: System Configuration
--
--Minimum Values for File System Limits
--=====================================
--
-- Here are the names for the POSIX minimum upper bounds for some of the
--above parameters. The significance of these values is that you can
--safely push to these limits without checking whether the particular
--system you are using can go that far. In most cases GNU systems do not
--have these strict limitations. The actual limit should be requested if
--necessary.
--
--`_POSIX_LINK_MAX'
-- The most restrictive limit permitted by POSIX for the maximum
-- value of a file's link count. The value of this constant is `8';
-- thus, you can always make up to eight names for a file without
-- running into a system limit.
--
--`_POSIX_MAX_CANON'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of bytes in a canonical input line from a terminal device.
-- The value of this constant is `255'.
--
--`_POSIX_MAX_INPUT'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of bytes in a terminal device input queue (or typeahead
-- buffer). *Note Input Modes::. The value of this constant is
-- `255'.
--
--`_POSIX_NAME_MAX'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of bytes in a file name component. The value of this
-- constant is `14'.
--
--`_POSIX_PATH_MAX'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of bytes in a file name. The value of this constant is
-- `256'.
--
--`_POSIX_PIPE_BUF'
-- The most restrictive limit permitted by POSIX for the maximum
-- number of bytes that can be written atomically to a pipe. The
-- value of this constant is `512'.
--
--`SYMLINK_MAX'
-- Maximum number of bytes in a symbolic link.
--
--`POSIX_REC_INCR_XFER_SIZE'
-- Recommended increment for file transfer sizes between the
-- `POSIX_REC_MIN_XFER_SIZE' and `POSIX_REC_MAX_XFER_SIZE' values.
--
--`POSIX_REC_MAX_XFER_SIZE'
-- Maximum recommended file transfer size.
--
--`POSIX_REC_MIN_XFER_SIZE'
-- Minimum recommended file transfer size.
--
--`POSIX_REC_XFER_ALIGN'
-- Recommended file transfer buffer alignment.
--
--
--File: libc.info, Node: Pathconf, Next: Utility Limits, Prev: File Minimums, Up: System Configuration
--
--Using `pathconf'
--================
--
-- When your machine allows different files to have different values
--for a file system parameter, you can use the functions in this section
--to find out the value that applies to any particular file.
--
-- These functions and the associated constants for the PARAMETER
--argument are declared in the header file `unistd.h'.
--
-- - Function: long int pathconf (const char *FILENAME, int PARAMETER)
-- This function is used to inquire about the limits that apply to
-- the file named FILENAME.
--
-- The PARAMETER argument should be one of the `_PC_' constants
-- listed below.
--
-- The normal return value from `pathconf' is the value you requested.
-- A value of `-1' is returned both if the implementation does not
-- impose a limit, and in case of an error. In the former case,
-- `errno' is not set, while in the latter case, `errno' is set to
-- indicate the cause of the problem. So the only way to use this
-- function robustly is to store `0' into `errno' just before calling
-- it.
--
-- Besides the usual file name errors (*note File Name Errors::), the
-- following error condition is defined for this function:
--
-- `EINVAL'
-- The value of PARAMETER is invalid, or the implementation
-- doesn't support the PARAMETER for the specific file.
--
-- - Function: long int fpathconf (int FILEDES, int PARAMETER)
-- This is just like `pathconf' except that an open file descriptor
-- is used to specify the file for which information is requested,
-- instead of a file name.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EBADF'
-- The FILEDES argument is not a valid file descriptor.
--
-- `EINVAL'
-- The value of PARAMETER is invalid, or the implementation
-- doesn't support the PARAMETER for the specific file.
--
-- Here are the symbolic constants that you can use as the PARAMETER
--argument to `pathconf' and `fpathconf'. The values are all integer
--constants.
--
--`_PC_LINK_MAX'
-- Inquire about the value of `LINK_MAX'.
--
--`_PC_MAX_CANON'
-- Inquire about the value of `MAX_CANON'.
--
--`_PC_MAX_INPUT'
-- Inquire about the value of `MAX_INPUT'.
--
--`_PC_NAME_MAX'
-- Inquire about the value of `NAME_MAX'.
--
--`_PC_PATH_MAX'
-- Inquire about the value of `PATH_MAX'.
--
--`_PC_PIPE_BUF'
-- Inquire about the value of `PIPE_BUF'.
--
--`_PC_CHOWN_RESTRICTED'
-- Inquire about the value of `_POSIX_CHOWN_RESTRICTED'.
--
--`_PC_NO_TRUNC'
-- Inquire about the value of `_POSIX_NO_TRUNC'.
--
--`_PC_VDISABLE'
-- Inquire about the value of `_POSIX_VDISABLE'.
--
--`_PC_SYNC_IO'
-- Inquire about the value of `_POSIX_SYNC_IO'.
--
--`_PC_ASYNC_IO'
-- Inquire about the value of `_POSIX_ASYNC_IO'.
--
--`_PC_PRIO_IO'
-- Inquire about the value of `_POSIX_PRIO_IO'.
--
--`_PC_SOCK_MAXBUF'
-- Inquire about the value of `_POSIX_PIPE_BUF'.
--
--`_PC_FILESIZEBITS'
-- Inquire about the availability of large files on the filesystem.
--
--`_PC_REC_INCR_XFER_SIZE'
-- Inquire about the value of `POSIX_REC_INCR_XFER_SIZE'.
--
--`_PC_REC_MAX_XFER_SIZE'
-- Inquire about the value of `POSIX_REC_MAX_XFER_SIZE'.
--
--`_PC_REC_MIN_XFER_SIZE'
-- Inquire about the value of `POSIX_REC_MIN_XFER_SIZE'.
--
--`_PC_REC_XFER_ALIGN'
-- Inquire about the value of `POSIX_REC_XFER_ALIGN'.
--
--
--File: libc.info, Node: Utility Limits, Next: Utility Minimums, Prev: Pathconf, Up: System Configuration
--
--Utility Program Capacity Limits
--===============================
--
-- The POSIX.2 standard specifies certain system limits that you can
--access through `sysconf' that apply to utility behavior rather than the
--behavior of the library or the operating system.
--
-- The GNU C library defines macros for these limits, and `sysconf'
--returns values for them if you ask; but these values convey no
--meaningful information. They are simply the smallest values that
--POSIX.2 permits.
--
-- - Macro: int BC_BASE_MAX
-- The largest value of `obase' that the `bc' utility is guaranteed
-- to support.
--
-- - Macro: int BC_DIM_MAX
-- The largest number of elements in one array that the `bc' utility
-- is guaranteed to support.
--
-- - Macro: int BC_SCALE_MAX
-- The largest value of `scale' that the `bc' utility is guaranteed
-- to support.
--
-- - Macro: int BC_STRING_MAX
-- The largest number of characters in one string constant that the
-- `bc' utility is guaranteed to support.
--
-- - Macro: int COLL_WEIGHTS_MAX
-- The largest number of weights that can necessarily be used in
-- defining the collating sequence for a locale.
--
-- - Macro: int EXPR_NEST_MAX
-- The maximum number of expressions that can be nested within
-- parenthesis by the `expr' utility.
--
-- - Macro: int LINE_MAX
-- The largest text line that the text-oriented POSIX.2 utilities can
-- support. (If you are using the GNU versions of these utilities,
-- then there is no actual limit except that imposed by the available
-- virtual memory, but there is no way that the library can tell you
-- this.)
--
-- - Macro: int EQUIV_CLASS_MAX
-- The maximum number of weights that can be assigned to an entry of
-- the `LC_COLLATE' category `order' keyword in a locale definition.
-- The GNU C library does not presently support locale definitions.
--
--
--File: libc.info, Node: Utility Minimums, Next: String Parameters, Prev: Utility Limits, Up: System Configuration
--
--Minimum Values for Utility Limits
--=================================
--
--`_POSIX2_BC_BASE_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- value of `obase' in the `bc' utility. Its value is `99'.
--
--`_POSIX2_BC_DIM_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- size of an array in the `bc' utility. Its value is `2048'.
--
--`_POSIX2_BC_SCALE_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- value of `scale' in the `bc' utility. Its value is `99'.
--
--`_POSIX2_BC_STRING_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- size of a string constant in the `bc' utility. Its value is
-- `1000'.
--
--`_POSIX2_COLL_WEIGHTS_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- number of weights that can necessarily be used in defining the
-- collating sequence for a locale. Its value is `2'.
--
--`_POSIX2_EXPR_NEST_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- number of expressions nested within parenthesis when using the
-- `expr' utility. Its value is `32'.
--
--`_POSIX2_LINE_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- size of a text line that the text utilities can handle. Its value
-- is `2048'.
--
--`_POSIX2_EQUIV_CLASS_MAX'
-- The most restrictive limit permitted by POSIX.2 for the maximum
-- number of weights that can be assigned to an entry of the
-- `LC_COLLATE' category `order' keyword in a locale definition. Its
-- value is `2'. The GNU C library does not presently support locale
-- definitions.
--
--
--File: libc.info, Node: String Parameters, Prev: Utility Minimums, Up: System Configuration
--
--String-Valued Parameters
--========================
--
-- POSIX.2 defines a way to get string-valued parameters from the
--operating system with the function `confstr':
--
-- - Function: size_t confstr (int PARAMETER, char *BUF, size_t LEN)
-- This function reads the value of a string-valued system parameter,
-- storing the string into LEN bytes of memory space starting at BUF.
-- The PARAMETER argument should be one of the `_CS_' symbols listed
-- below.
--
-- The normal return value from `confstr' is the length of the string
-- value that you asked for. If you supply a null pointer for BUF,
-- then `confstr' does not try to store the string; it just returns
-- its length. A value of `0' indicates an error.
--
-- If the string you asked for is too long for the buffer (that is,
-- longer than `LEN - 1'), then `confstr' stores just that much
-- (leaving room for the terminating null character). You can tell
-- that this has happened because `confstr' returns a value greater
-- than or equal to LEN.
--
-- The following `errno' error conditions are defined for this
-- function:
--
-- `EINVAL'
-- The value of the PARAMETER is invalid.
--
-- Currently there is just one parameter you can read with `confstr':
--
--`_CS_PATH'
-- This parameter's value is the recommended default path for
-- searching for executable files. This is the path that a user has
-- by default just after logging in.
--
--`_CS_LFS_CFLAGS'
-- The returned string specifies which additional flags must be given
-- to the C compiler if a source is compiled using the
-- `_LARGEFILE_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS_LDFLAGS'
-- The returned string specifies which additional flags must be given
-- to the linker if a source is compiled using the
-- `_LARGEFILE_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS_LIBS'
-- The returned string specifies which additional libraries must be
-- linked to the application if a source is compiled using the
-- `_LARGEFILE_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS_LINTFLAGS'
-- The returned string specifies which additional flags must be given
-- to the lint tool if a source is compiled using the
-- `_LARGEFILE_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS64_CFLAGS'
-- The returned string specifies which additional flags must be given
-- to the C compiler if a source is compiled using the
-- `_LARGEFILE64_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS64_LDFLAGS'
-- The returned string specifies which additional flags must be given
-- to the linker if a source is compiled using the
-- `_LARGEFILE64_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS64_LIBS'
-- The returned string specifies which additional libraries must be
-- linked to the application if a source is compiled using the
-- `_LARGEFILE64_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
--`_CS_LFS64_LINTFLAGS'
-- The returned string specifies which additional flags must be given
-- to the lint tool if a source is compiled using the
-- `_LARGEFILE64_SOURCE' feature select macro; *note Feature Test
-- Macros::.
--
-- The way to use `confstr' without any arbitrary limit on string size
--is to call it twice: first call it to get the length, allocate the
--buffer accordingly, and then call `confstr' again to fill the buffer,
--like this:
--
-- char *
-- get_default_path (void)
-- {
-- size_t len = confstr (_CS_PATH, NULL, 0);
-- char *buffer = (char *) xmalloc (len);
--
-- if (confstr (_CS_PATH, buf, len + 1) == 0)
-- {
-- free (buffer);
-- return NULL;
-- }
--
-- return buffer;
-- }
--
--
--File: libc.info, Node: Cryptographic Functions, Next: Debugging Support, Prev: System Configuration, Up: Top
--
--DES Encryption and Password Handling
--************************************
--
-- On many systems, it is unnecessary to have any kind of user
--authentication; for instance, a workstation which is not connected to a
--network probably does not need any user authentication, because to use
--the machine an intruder must have physical access.
--
-- Sometimes, however, it is necessary to be sure that a user is
--authorized to use some service a machine provides--for instance, to log
--in as a particular user id (*note Users and Groups::). One traditional
--way of doing this is for each user to choose a secret "password"; then,
--the system can ask someone claiming to be a user what the user's
--password is, and if the person gives the correct password then the
--system can grant the appropriate privileges.
--
-- If all the passwords are just stored in a file somewhere, then this
--file has to be very carefully protected. To avoid this, passwords are
--run through a "one-way function", a function which makes it difficult to
--work out what its input was by looking at its output, before storing in
--the file.
--
-- The GNU C library provides a one-way function that is compatible with
--the behavior of the `crypt' function introduced in FreeBSD 2.0. It
--supports two one-way algorithms: one based on the MD5 message-digest
--algorithm that is compatible with modern BSD systems, and the other
--based on the Data Encryption Standard (DES) that is compatible with
--Unix systems.
--
-- It also provides support for Secure RPC, and some library functions
--that can be used to perform normal DES encryption.
--
--* Menu:
--
--* Legal Problems:: This software can get you locked up, or worse.
--* getpass:: Prompting the user for a password.
--* crypt:: A one-way function for passwords.
--* DES Encryption:: Routines for DES encryption.
--
--
--File: libc.info, Node: Legal Problems, Next: getpass, Up: Cryptographic Functions
--
--Legal Problems
--==============
--
-- Because of the continuously changing state of the law, it's not
--possible to provide a definitive survey of the laws affecting
--cryptography. Instead, this section warns you of some of the known
--trouble spots; this may help you when you try to find out what the laws
--of your country are.
--
-- Some countries require that you have a licence to use, possess, or
--import cryptography. These countries are believed to include
--Byelorussia, Burma, India, Indonesia, Israel, Kazakhstan, Pakistan,
--Russia, and Saudi Arabia.
--
-- Some countries restrict the transmission of encrypted messages by
--radio; some telecommunications carriers restrict the transmission of
--encrypted messages over their network.
--
-- Many countries have some form of export control for encryption
--software. The Wassenaar Arrangement is a multilateral agreement
--between 33 countries (Argentina, Australia, Austria, Belgium, Bulgaria,
--Canada, the Czech Republic, Denmark, Finland, France, Germany, Greece,
--Hungary, Ireland, Italy, Japan, Luxembourg, the Netherlands, New
--Zealand, Norway, Poland, Portugal, the Republic of Korea, Romania, the
--Russian Federation, the Slovak Republic, Spain, Sweden, Switzerland,
--Turkey, Ukraine, the United Kingdom and the United States) which
--restricts some kinds of encryption exports. Different countries apply
--the arrangement in different ways; some do not allow the exception for
--certain kinds of "public domain" software (which would include this
--library), some only restrict the export of software in tangible form,
--and others impose significant additional restrictions.
--
-- The United States has additional rules. This software would
--generally be exportable under 15 CFR 740.13(e), which permits exports of
--"encryption source code" which is "publicly available" and which is
--"not subject to an express agreement for the payment of a licensing fee
--or royalty for commercial production or sale of any product developed
--with the source code" to most countries.
--
-- The rules in this area are continuously changing. If you know of any
--information in this manual that is out-of-date, please report it using
--the `glibcbug' script. *Note Reporting Bugs::.
--
--
--File: libc.info, Node: getpass, Next: crypt, Prev: Legal Problems, Up: Cryptographic Functions
--
--Reading Passwords
--=================
--
-- When reading in a password, it is desirable to avoid displaying it on
--the screen, to help keep it secret. The following function handles this
--in a convenient way.
--
-- - Function: char * getpass (const char *PROMPT)
-- `getpass' outputs PROMPT, then reads a string in from the terminal
-- without echoing it. It tries to connect to the real terminal,
-- `/dev/tty', if possible, to encourage users not to put plaintext
-- passwords in files; otherwise, it uses `stdin' and `stderr'.
-- `getpass' also disables the INTR, QUIT, and SUSP characters on the
-- terminal using the `ISIG' terminal attribute (*note Local Modes::).
-- The terminal is flushed before and after `getpass', so that
-- characters of a mistyped password are not accidentally visible.
--
-- In other C libraries, `getpass' may only return the first
-- `PASS_MAX' bytes of a password. The GNU C library has no limit, so
-- `PASS_MAX' is undefined.
--
-- The prototype for this function is in `unistd.h'. `PASS_MAX'
-- would be defined in `limits.h'.
--
-- This precise set of operations may not suit all possible situations.
--In this case, it is recommended that users write their own `getpass'
--substitute. For instance, a very simple substitute is as follows:
--
-- #include <termios.h>
-- #include <stdio.h>
--
-- ssize_t
-- my_getpass (char **lineptr, size_t *n, FILE *stream)
-- {
-- struct termios old, new;
-- int nread;
--
-- /* Turn echoing off and fail if we can't. */
-- if (tcgetattr (fileno (stream), &old) != 0)
-- return -1;
-- new = old;
-- new.c_lflag &= ~ECHO;
-- if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
-- return -1;
--
-- /* Read the password. */
-- nread = getline (lineptr, n, stream);
--
-- /* Restore terminal. */
-- (void) tcsetattr (fileno (stream), TCSAFLUSH, &old);
--
-- return nread;
-- }
--
-- The substitute takes the same parameters as `getline' (*note Line
--Input::); the user must print any prompt desired.
--
--
--File: libc.info, Node: crypt, Next: DES Encryption, Prev: getpass, Up: Cryptographic Functions
--
--Encrypting Passwords
--====================
--
-- - Function: char * crypt (const char *KEY, const char *SALT)
-- The `crypt' function takes a password, KEY, as a string, and a
-- SALT character array which is described below, and returns a
-- printable ASCII string which starts with another salt. It is
-- believed that, given the output of the function, the best way to
-- find a KEY that will produce that output is to guess values of KEY
-- until the original value of KEY is found.
--
-- The SALT parameter does two things. Firstly, it selects which
-- algorithm is used, the MD5-based one or the DES-based one.
-- Secondly, it makes life harder for someone trying to guess
-- passwords against a file containing many passwords; without a
-- SALT, an intruder can make a guess, run `crypt' on it once, and
-- compare the result with all the passwords. With a SALT, the
-- intruder must run `crypt' once for each different salt.
--
-- For the MD5-based algorithm, the SALT should consist of the string
-- `$1$', followed by up to 8 characters, terminated by either
-- another `$' or the end of the string. The result of `crypt' will
-- be the SALT, followed by a `$' if the salt didn't end with one,
-- followed by 22 characters from the alphabet `./0-9A-Za-z', up to
-- 34 characters total. Every character in the KEY is significant.
--
-- For the DES-based algorithm, the SALT should consist of two
-- characters from the alphabet `./0-9A-Za-z', and the result of
-- `crypt' will be those two characters followed by 11 more from the
-- same alphabet, 13 in total. Only the first 8 characters in the
-- KEY are significant.
--
-- The MD5-based algorithm has no limit on the useful length of the
-- password used, and is slightly more secure. It is therefore
-- preferred over the DES-based algorithm.
--
-- When the user enters their password for the first time, the SALT
-- should be set to a new string which is reasonably random. To
-- verify a password against the result of a previous call to
-- `crypt', pass the result of the previous call as the SALT.
--
-- The following short program is an example of how to use `crypt' the
--first time a password is entered. Note that the SALT generation is
--just barely acceptable; in particular, it is not unique between
--machines, and in many applications it would not be acceptable to let an
--attacker know what time the user's password was last set.
--
-- #include <stdio.h>
-- #include <time.h>
-- #include <unistd.h>
-- #include <crypt.h>
--
-- int
-- main(void)
-- {
-- unsigned long seed[2];
-- char salt[] = "$1$........";
-- const char *const seedchars =
-- "./0123456789ABCDEFGHIJKLMNOPQRST"
-- "UVWXYZabcdefghijklmnopqrstuvwxyz";
-- char *password;
-- int i;
--
-- /* Generate a (not very) random seed.
-- You should do it better than this... */
-- seed[0] = time(NULL);
-- seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);
--
-- /* Turn it into printable characters from `seedchars'. */
-- for (i = 0; i < 8; i++)
-- salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];
--
-- /* Read in the user's password and encrypt it. */
-- password = crypt(getpass("Password:"), salt);
--
-- /* Print the results. */
-- puts(password);
-- return 0;
-- }
--
-- The next program shows how to verify a password. It prompts the user
--for a password and prints "Access granted." if the user types `GNU libc
--manual'.
--
-- #include <stdio.h>
-- #include <string.h>
-- #include <unistd.h>
-- #include <crypt.h>
--
-- int
-- main(void)
-- {
-- /* Hashed form of "GNU libc manual". */
-- const char *const pass = "$1$/iSaq7rB$EoUw5jJPPvAPECNaaWzMK/";
--
-- char *result;
-- int ok;
--
-- /* Read in the user's password and encrypt it,
-- passing the expected password in as the salt. */
-- result = crypt(getpass("Password:"), pass);
--
-- /* Test the result. */
-- ok = strcmp (result, pass) == 0;
--
-- puts(ok ? "Access granted." : "Access denied.");
-- return ok ? 0 : 1;
-- }
--
-- - Function: char * crypt_r (const char *KEY, const char *SALT, struct
-- crypt_data * DATA)
-- The `crypt_r' function does the same thing as `crypt', but takes
-- an extra parameter which includes space for its result (among
-- other things), so it can be reentrant. `data->initialized' must be
-- cleared to zero before the first time `crypt_r' is called.
--
-- The `crypt_r' function is a GNU extension.
--
-- The `crypt' and `crypt_r' functions are prototyped in the header
--`crypt.h'.
--
--
--File: libc.info, Node: DES Encryption, Prev: crypt, Up: Cryptographic Functions
--
--DES Encryption
--==============
--
-- The Data Encryption Standard is described in the US Government
--Federal Information Processing Standards (FIPS) 46-3 published by the
--National Institute of Standards and Technology. The DES has been very
--thoroughly analyzed since it was developed in the late 1970s, and no new
--significant flaws have been found.
--
-- However, the DES uses only a 56-bit key (plus 8 parity bits), and a
--machine has been built in 1998 which can search through all possible
--keys in about 6 days, which cost about US$200000; faster searches would
--be possible with more money. This makes simple DES insecure for most
--purposes, and NIST no longer permits new US government systems to use
--simple DES.
--
-- For serious encryption functionality, it is recommended that one of
--the many free encryption libraries be used instead of these routines.
--
-- The DES is a reversible operation which takes a 64-bit block and a
--64-bit key, and produces another 64-bit block. Usually the bits are
--numbered so that the most-significant bit, the first bit, of each block
--is numbered 1.
--
-- Under that numbering, every 8th bit of the key (the 8th, 16th, and so
--on) is not used by the encryption algorithm itself. But the key must
--have odd parity; that is, out of bits 1 through 8, and 9 through 16, and
--so on, there must be an odd number of `1' bits, and this completely
--specifies the unused bits.
--
-- - Function: void setkey (const char *KEY)
-- The `setkey' function sets an internal data structure to be an
-- expanded form of KEY. KEY is specified as an array of 64 bits
-- each stored in a `char', the first bit is `key[0]' and the 64th
-- bit is `key[63]'. The KEY should have the correct parity.
--
-- - Function: void encrypt (char *BLOCK, int EDFLAG)
-- The `encrypt' function encrypts BLOCK if EDFLAG is 0, otherwise it
-- decrypts BLOCK, using a key previously set by `setkey'. The
-- result is placed in BLOCK.
--
-- Like `setkey', BLOCK is specified as an array of 64 bits each
-- stored in a `char', but there are no parity bits in BLOCK.
--
-- - Function: void setkey_r (const char *KEY, struct crypt_data * DATA)
-- - Function: void encrypt_r (char *BLOCK, int EDFLAG, struct crypt_data
-- * DATA)
-- These are reentrant versions of `setkey' and `encrypt'. The only
-- difference is the extra parameter, which stores the expanded
-- version of KEY. Before calling `setkey_r' the first time,
-- `data->initialized' must be cleared to zero.
--
-- The `setkey_r' and `encrypt_r' functions are GNU extensions.
--`setkey', `encrypt', `setkey_r', and `encrypt_r' are defined in
--`crypt.h'.
--
-- - Function: int ecb_crypt (char *KEY, char *BLOCKS, unsigned LEN,
-- unsigned MODE)
-- The function `ecb_crypt' encrypts or decrypts one or more blocks
-- using DES. Each block is encrypted independently.
--
-- The BLOCKS and the KEY are stored packed in 8-bit bytes, so that
-- the first bit of the key is the most-significant bit of `key[0]'
-- and the 63rd bit of the key is stored as the least-significant bit
-- of `key[7]'. The KEY should have the correct parity.
--
-- LEN is the number of bytes in BLOCKS. It should be a multiple of
-- 8 (so that there is a whole number of blocks to encrypt). LEN is
-- limited to a maximum of `DES_MAXDATA' bytes.
--
-- The result of the encryption replaces the input in BLOCKS.
--
-- The MODE parameter is the bitwise OR of two of the following:
--
-- `DES_ENCRYPT'
-- This constant, used in the MODE parameter, specifies that
-- BLOCKS is to be encrypted.
--
-- `DES_DECRYPT'
-- This constant, used in the MODE parameter, specifies that
-- BLOCKS is to be decrypted.
--
-- `DES_HW'
-- This constant, used in the MODE parameter, asks to use a
-- hardware device. If no hardware device is available,
-- encryption happens anyway, but in software.
--
-- `DES_SW'
-- This constant, used in the MODE parameter, specifies that no
-- hardware device is to be used.
--
-- The result of the function will be one of these values:
--
-- `DESERR_NONE'
-- The encryption succeeded.
--
-- `DESERR_NOHWDEVICE'
-- The encryption succeeded, but there was no hardware device
-- available.
--
-- `DESERR_HWERROR'
-- The encryption failed because of a hardware problem.
--
-- `DESERR_BADPARAM'
-- The encryption failed because of a bad parameter, for
-- instance LEN is not a multiple of 8 or LEN is larger than
-- `DES_MAXDATA'.
--
-- - Function: int DES_FAILED (int ERR)
-- This macro returns 1 if ERR is a `success' result code from
-- `ecb_crypt' or `cbc_crypt', and 0 otherwise.
--
-- - Function: int cbc_crypt (char *KEY, char *BLOCKS, unsigned LEN,
-- unsigned MODE, char *IVEC)
-- The function `cbc_crypt' encrypts or decrypts one or more blocks
-- using DES in Cipher Block Chaining mode.
--
-- For encryption in CBC mode, each block is exclusive-ored with IVEC
-- before being encrypted, then IVEC is replaced with the result of
-- the encryption, then the next block is processed. Decryption is
-- the reverse of this process.
--
-- This has the advantage that blocks which are the same before being
-- encrypted are very unlikely to be the same after being encrypted,
-- making it much harder to detect patterns in the data.
--
-- Usually, IVEC is set to 8 random bytes before encryption starts.
-- Then the 8 random bytes are transmitted along with the encrypted
-- data (without themselves being encrypted), and passed back in as
-- IVEC for decryption. Another possibility is to set IVEC to 8
-- zeroes initially, and have the first the block encrypted consist
-- of 8 random bytes.
--
-- Otherwise, all the parameters are similar to those for `ecb_crypt'.
--
-- - Function: void des_setparity (char *KEY)
-- The function `des_setparity' changes the 64-bit KEY, stored packed
-- in 8-bit bytes, to have odd parity by altering the low bits of
-- each byte.
--
-- The `ecb_crypt', `cbc_crypt', and `des_setparity' functions and
--their accompanying macros are all defined in the header
--`rpc/des_crypt.h'.
--
--
--File: libc.info, Node: Debugging Support, Next: POSIX Threads, Prev: Cryptographic Functions, Up: Top
--
--Debugging support
--*****************
--
-- Applications are usually debugged using dedicated debugger programs.
--But sometimes this is not possible and, in any case, it is useful to
--provide the developer with as much information as possible at the time
--the problems are experienced. For this reason a few functions are
--provided which a program can use to help the developer more easily
--locate the problem.
--
--* Menu:
--
--* Backtraces:: Obtaining and printing a back trace of the
-- current stack.
--
--
--File: libc.info, Node: Backtraces, Up: Debugging Support
--
--Backtraces
--==========
--
-- A "backtrace" is a list of the function calls that are currently
--active in a thread. The usual way to inspect a backtrace of a program
--is to use an external debugger such as gdb. However, sometimes it is
--useful to obtain a backtrace programmatically from within a program,
--e.g., for the purposes of logging or diagnostics.
--
-- The header file `execinfo.h' declares three functions that obtain
--and manipulate backtraces of the current thread.
--
-- - Function: int backtrace (void **BUFFER, int SIZE)
-- The `backtrace' function obtains a backtrace for the current
-- thread, as a list of pointers, and places the information into
-- BUFFER. The argument SIZE should be the number of `void *'
-- elements that will fit into BUFFER. The return value is the
-- actual number of entries of BUFFER that are obtained, and is at
-- most SIZE.
--
-- The pointers placed in BUFFER are actually return addresses
-- obtained by inspecting the stack, one return address per stack
-- frame.
--
-- Note that certain compiler optimizations may interfere with
-- obtaining a valid backtrace. Function inlining causes the inlined
-- function to not have a stack frame; tail call optimization
-- replaces one stack frame with another; frame pointer elimination
-- will stop `backtrace' from interpreting the stack contents
-- correctly.
--
-- - Function: char ** backtrace_symbols (void *const *BUFFER, int SIZE)
-- The `backtrace_symbols' function translates the information
-- obtained from the `backtrace' function into an array of strings.
-- The argument BUFFER should be a pointer to an array of addresses
-- obtained via the `backtrace' function, and SIZE is the number of
-- entries in that array (the return value of `backtrace').
--
-- The return value is a pointer to an array of strings, which has
-- SIZE entries just like the array BUFFER. Each string contains a
-- printable representation of the corresponding element of BUFFER.
-- It includes the function name (if this can be determined), an
-- offset into the function, and the actual return address (in
-- hexadecimal).
--
-- Currently, the function name and offset only be obtained on
-- systems that use the ELF binary format for programs and libraries.
-- On other systems, only the hexadecimal return address will be
-- present. Also, you may need to pass additional flags to the
-- linker to make the function names available to the program. (For
-- example, on systems using GNU ld, you must pass (`-rdynamic'.)
--
-- The return value of `backtrace_symbols' is a pointer obtained via
-- the `malloc' function, and it is the responsibility of the caller
-- to `free' that pointer. Note that only the return value need be
-- freed, not the individual strings.
--
-- The return value is `NULL' if sufficient memory for the strings
-- cannot be obtained.
--
-- - Function: void backtrace_symbols_fd (void *const *BUFFER, int SIZE,
-- int FD)
-- The `backtrace_symbols_fd' function performs the same translation
-- as the function `backtrace_symbols' function. Instead of returning
-- the strings to the caller, it writes the strings to the file
-- descriptor FD, one per line. It does not use the `malloc'
-- function, and can therefore be used in situations where that
-- function might fail.
--
-- The following program illustrates the use of these functions. Note
--that the array to contain the return addresses returned by `backtrace'
--is allocated on the stack. Therefore code like this can be used in
--situations where the memory handling via `malloc' does not work anymore
--(in which case the `backtrace_symbols' has to be replaced by a
--`backtrace_symbols_fd' call as well). The number of return addresses
--is normally not very large. Even complicated programs rather seldom
--have a nesting level of more than, say, 50 and with 200 possible
--entries probably all programs should be covered.
--
-- #include <execinfo.h>
-- #include <stdio.h>
-- #include <stdlib.h>
--
-- /* Obtain a backtrace and print it to `stdout'. */
-- void
-- print_trace (void)
-- {
-- void *array[10];
-- size_t size;
-- char **strings;
-- size_t i;
--
-- size = backtrace (array, 10);
-- strings = backtrace_symbols (array, size);
--
-- printf ("Obtained %zd stack frames.\n", size);
--
-- for (i = 0; i < size; i++)
-- printf ("%s\n", strings[i]);
--
-- free (strings);
-- }
--
-- /* A dummy function to make the backtrace more interesting. */
-- void
-- dummy_function (void)
-- {
-- print_trace ();
-- }
--
-- int
-- main (void)
-- {
-- dummy_function ();
-- return 0;
-- }
--
--
--File: libc.info, Node: POSIX Threads, Next: Language Features, Prev: Debugging Support, Up: Top
--
--POSIX Threads
--*************
--
-- This chapter describes the pthreads (POSIX threads) library. This
--library provides support functions for multithreaded programs: thread
--primitives, synchronization objects, and so forth. It also implements
--POSIX 1003.1b semaphores (not to be confused with System V semaphores).
--
-- The threads operations (`pthread_*') do not use ERRNO. Instead they
--return an error code directly. The semaphore operations do use ERRNO.
--
--* Menu:
--
--* Basic Thread Operations:: Creating, terminating, and waiting for threads.
--* Thread Attributes:: Tuning thread scheduling.
--* Cancellation:: Stopping a thread before it's done.
--* Cleanup Handlers:: Deallocating resources when a thread is
-- canceled.
--* Mutexes:: One way to synchronize threads.
--* Condition Variables:: Another way.
--* POSIX Semaphores:: And a third way.
--* Thread-Specific Data:: Variables with different values in
-- different threads.
--* Threads and Signal Handling:: Why you should avoid mixing the two, and
-- how to do it if you must.
--* Threads and Fork:: Interactions between threads and the
-- `fork' function.
--* Streams and Fork:: Interactions between stdio streams and
-- `fork'.
--* Miscellaneous Thread Functions:: A grab bag of utility routines.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-5 glibc-2.3.2-200304020432/manual/libc.info-5
---- glibc-2.3.2/manual/libc.info-5 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-5 Thu Jan 1 01:00:00 1970
-@@ -1,1081 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Growing Objects, Next: Extra Fast Growing, Prev: Obstack Functions, Up: Obstacks
--
--Growing Objects
--...............
--
-- Because memory in obstack chunks is used sequentially, it is
--possible to build up an object step by step, adding one or more bytes
--at a time to the end of the object. With this technique, you do not
--need to know how much data you will put in the object until you come to
--the end of it. We call this the technique of "growing objects". The
--special functions for adding data to the growing object are described
--in this section.
--
-- You don't need to do anything special when you start to grow an
--object. Using one of the functions to add data to the object
--automatically starts it. However, it is necessary to say explicitly
--when the object is finished. This is done with the function
--`obstack_finish'.
--
-- The actual address of the object thus built up is not known until the
--object is finished. Until then, it always remains possible that you
--will add so much data that the object must be copied into a new chunk.
--
-- While the obstack is in use for a growing object, you cannot use it
--for ordinary allocation of another object. If you try to do so, the
--space already added to the growing object will become part of the other
--object.
--
-- - Function: void obstack_blank (struct obstack *OBSTACK-PTR, int SIZE)
-- The most basic function for adding to a growing object is
-- `obstack_blank', which adds space without initializing it.
--
-- - Function: void obstack_grow (struct obstack *OBSTACK-PTR, void
-- *DATA, int SIZE)
-- To add a block of initialized space, use `obstack_grow', which is
-- the growing-object analogue of `obstack_copy'. It adds SIZE bytes
-- of data to the growing object, copying the contents from DATA.
--
-- - Function: void obstack_grow0 (struct obstack *OBSTACK-PTR, void
-- *DATA, int SIZE)
-- This is the growing-object analogue of `obstack_copy0'. It adds
-- SIZE bytes copied from DATA, followed by an additional null
-- character.
--
-- - Function: void obstack_1grow (struct obstack *OBSTACK-PTR, char C)
-- To add one character at a time, use the function `obstack_1grow'.
-- It adds a single byte containing C to the growing object.
--
-- - Function: void obstack_ptr_grow (struct obstack *OBSTACK-PTR, void
-- *DATA)
-- Adding the value of a pointer one can use the function
-- `obstack_ptr_grow'. It adds `sizeof (void *)' bytes containing
-- the value of DATA.
--
-- - Function: void obstack_int_grow (struct obstack *OBSTACK-PTR, int
-- DATA)
-- A single value of type `int' can be added by using the
-- `obstack_int_grow' function. It adds `sizeof (int)' bytes to the
-- growing object and initializes them with the value of DATA.
--
-- - Function: void * obstack_finish (struct obstack *OBSTACK-PTR)
-- When you are finished growing the object, use the function
-- `obstack_finish' to close it off and return its final address.
--
-- Once you have finished the object, the obstack is available for
-- ordinary allocation or for growing another object.
--
-- This function can return a null pointer under the same conditions
-- as `obstack_alloc' (*note Allocation in an Obstack::).
--
-- When you build an object by growing it, you will probably need to
--know afterward how long it became. You need not keep track of this as
--you grow the object, because you can find out the length from the
--obstack just before finishing the object with the function
--`obstack_object_size', declared as follows:
--
-- - Function: int obstack_object_size (struct obstack *OBSTACK-PTR)
-- This function returns the current size of the growing object, in
-- bytes. Remember to call this function _before_ finishing the
-- object. After it is finished, `obstack_object_size' will return
-- zero.
--
-- If you have started growing an object and wish to cancel it, you
--should finish it and then free it, like this:
--
-- obstack_free (obstack_ptr, obstack_finish (obstack_ptr));
--
--This has no effect if no object was growing.
--
-- You can use `obstack_blank' with a negative size argument to make
--the current object smaller. Just don't try to shrink it beyond zero
--length--there's no telling what will happen if you do that.
--
--
--File: libc.info, Node: Extra Fast Growing, Next: Status of an Obstack, Prev: Growing Objects, Up: Obstacks
--
--Extra Fast Growing Objects
--..........................
--
-- The usual functions for growing objects incur overhead for checking
--whether there is room for the new growth in the current chunk. If you
--are frequently constructing objects in small steps of growth, this
--overhead can be significant.
--
-- You can reduce the overhead by using special "fast growth" functions
--that grow the object without checking. In order to have a robust
--program, you must do the checking yourself. If you do this checking in
--the simplest way each time you are about to add data to the object, you
--have not saved anything, because that is what the ordinary growth
--functions do. But if you can arrange to check less often, or check
--more efficiently, then you make the program faster.
--
-- The function `obstack_room' returns the amount of room available in
--the current chunk. It is declared as follows:
--
-- - Function: int obstack_room (struct obstack *OBSTACK-PTR)
-- This returns the number of bytes that can be added safely to the
-- current growing object (or to an object about to be started) in
-- obstack OBSTACK using the fast growth functions.
--
-- While you know there is room, you can use these fast growth functions
--for adding data to a growing object:
--
-- - Function: void obstack_1grow_fast (struct obstack *OBSTACK-PTR, char
-- C)
-- The function `obstack_1grow_fast' adds one byte containing the
-- character C to the growing object in obstack OBSTACK-PTR.
--
-- - Function: void obstack_ptr_grow_fast (struct obstack *OBSTACK-PTR,
-- void *DATA)
-- The function `obstack_ptr_grow_fast' adds `sizeof (void *)' bytes
-- containing the value of DATA to the growing object in obstack
-- OBSTACK-PTR.
--
-- - Function: void obstack_int_grow_fast (struct obstack *OBSTACK-PTR,
-- int DATA)
-- The function `obstack_int_grow_fast' adds `sizeof (int)' bytes
-- containing the value of DATA to the growing object in obstack
-- OBSTACK-PTR.
--
-- - Function: void obstack_blank_fast (struct obstack *OBSTACK-PTR, int
-- SIZE)
-- The function `obstack_blank_fast' adds SIZE bytes to the growing
-- object in obstack OBSTACK-PTR without initializing them.
--
-- When you check for space using `obstack_room' and there is not
--enough room for what you want to add, the fast growth functions are not
--safe. In this case, simply use the corresponding ordinary growth
--function instead. Very soon this will copy the object to a new chunk;
--then there will be lots of room available again.
--
-- So, each time you use an ordinary growth function, check afterward
--for sufficient space using `obstack_room'. Once the object is copied
--to a new chunk, there will be plenty of space again, so the program will
--start using the fast growth functions again.
--
-- Here is an example:
--
-- void
-- add_string (struct obstack *obstack, const char *ptr, int len)
-- {
-- while (len > 0)
-- {
-- int room = obstack_room (obstack);
-- if (room == 0)
-- {
-- /* Not enough room. Add one character slowly,
-- which may copy to a new chunk and make room. */
-- obstack_1grow (obstack, *ptr++);
-- len--;
-- }
-- else
-- {
-- if (room > len)
-- room = len;
-- /* Add fast as much as we have room for. */
-- len -= room;
-- while (room-- > 0)
-- obstack_1grow_fast (obstack, *ptr++);
-- }
-- }
-- }
--
--
--File: libc.info, Node: Status of an Obstack, Next: Obstacks Data Alignment, Prev: Extra Fast Growing, Up: Obstacks
--
--Status of an Obstack
--....................
--
-- Here are functions that provide information on the current status of
--allocation in an obstack. You can use them to learn about an object
--while still growing it.
--
-- - Function: void * obstack_base (struct obstack *OBSTACK-PTR)
-- This function returns the tentative address of the beginning of the
-- currently growing object in OBSTACK-PTR. If you finish the object
-- immediately, it will have that address. If you make it larger
-- first, it may outgrow the current chunk--then its address will
-- change!
--
-- If no object is growing, this value says where the next object you
-- allocate will start (once again assuming it fits in the current
-- chunk).
--
-- - Function: void * obstack_next_free (struct obstack *OBSTACK-PTR)
-- This function returns the address of the first free byte in the
-- current chunk of obstack OBSTACK-PTR. This is the end of the
-- currently growing object. If no object is growing,
-- `obstack_next_free' returns the same value as `obstack_base'.
--
-- - Function: int obstack_object_size (struct obstack *OBSTACK-PTR)
-- This function returns the size in bytes of the currently growing
-- object. This is equivalent to
--
-- obstack_next_free (OBSTACK-PTR) - obstack_base (OBSTACK-PTR)
--
--
--File: libc.info, Node: Obstacks Data Alignment, Next: Obstack Chunks, Prev: Status of an Obstack, Up: Obstacks
--
--Alignment of Data in Obstacks
--.............................
--
-- Each obstack has an "alignment boundary"; each object allocated in
--the obstack automatically starts on an address that is a multiple of the
--specified boundary. By default, this boundary is 4 bytes.
--
-- To access an obstack's alignment boundary, use the macro
--`obstack_alignment_mask', whose function prototype looks like this:
--
-- - Macro: int obstack_alignment_mask (struct obstack *OBSTACK-PTR)
-- The value is a bit mask; a bit that is 1 indicates that the
-- corresponding bit in the address of an object should be 0. The
-- mask value should be one less than a power of 2; the effect is
-- that all object addresses are multiples of that power of 2. The
-- default value of the mask is 3, so that addresses are multiples of
-- 4. A mask value of 0 means an object can start on any multiple of
-- 1 (that is, no alignment is required).
--
-- The expansion of the macro `obstack_alignment_mask' is an lvalue,
-- so you can alter the mask by assignment. For example, this
-- statement:
--
-- obstack_alignment_mask (obstack_ptr) = 0;
--
-- has the effect of turning off alignment processing in the
-- specified obstack.
--
-- Note that a change in alignment mask does not take effect until
--_after_ the next time an object is allocated or finished in the
--obstack. If you are not growing an object, you can make the new
--alignment mask take effect immediately by calling `obstack_finish'.
--This will finish a zero-length object and then do proper alignment for
--the next object.
--
--
--File: libc.info, Node: Obstack Chunks, Next: Summary of Obstacks, Prev: Obstacks Data Alignment, Up: Obstacks
--
--Obstack Chunks
--..............
--
-- Obstacks work by allocating space for themselves in large chunks, and
--then parceling out space in the chunks to satisfy your requests. Chunks
--are normally 4096 bytes long unless you specify a different chunk size.
--The chunk size includes 8 bytes of overhead that are not actually used
--for storing objects. Regardless of the specified size, longer chunks
--will be allocated when necessary for long objects.
--
-- The obstack library allocates chunks by calling the function
--`obstack_chunk_alloc', which you must define. When a chunk is no
--longer needed because you have freed all the objects in it, the obstack
--library frees the chunk by calling `obstack_chunk_free', which you must
--also define.
--
-- These two must be defined (as macros) or declared (as functions) in
--each source file that uses `obstack_init' (*note Creating Obstacks::).
--Most often they are defined as macros like this:
--
-- #define obstack_chunk_alloc malloc
-- #define obstack_chunk_free free
--
-- Note that these are simple macros (no arguments). Macro definitions
--with arguments will not work! It is necessary that
--`obstack_chunk_alloc' or `obstack_chunk_free', alone, expand into a
--function name if it is not itself a function name.
--
-- If you allocate chunks with `malloc', the chunk size should be a
--power of 2. The default chunk size, 4096, was chosen because it is long
--enough to satisfy many typical requests on the obstack yet short enough
--not to waste too much memory in the portion of the last chunk not yet
--used.
--
-- - Macro: int obstack_chunk_size (struct obstack *OBSTACK-PTR)
-- This returns the chunk size of the given obstack.
--
-- Since this macro expands to an lvalue, you can specify a new chunk
--size by assigning it a new value. Doing so does not affect the chunks
--already allocated, but will change the size of chunks allocated for
--that particular obstack in the future. It is unlikely to be useful to
--make the chunk size smaller, but making it larger might improve
--efficiency if you are allocating many objects whose size is comparable
--to the chunk size. Here is how to do so cleanly:
--
-- if (obstack_chunk_size (obstack_ptr) < NEW-CHUNK-SIZE)
-- obstack_chunk_size (obstack_ptr) = NEW-CHUNK-SIZE;
--
--
--File: libc.info, Node: Summary of Obstacks, Prev: Obstack Chunks, Up: Obstacks
--
--Summary of Obstack Functions
--............................
--
-- Here is a summary of all the functions associated with obstacks.
--Each takes the address of an obstack (`struct obstack *') as its first
--argument.
--
--`void obstack_init (struct obstack *OBSTACK-PTR)'
-- Initialize use of an obstack. *Note Creating Obstacks::.
--
--`void *obstack_alloc (struct obstack *OBSTACK-PTR, int SIZE)'
-- Allocate an object of SIZE uninitialized bytes. *Note Allocation
-- in an Obstack::.
--
--`void *obstack_copy (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- Allocate an object of SIZE bytes, with contents copied from
-- ADDRESS. *Note Allocation in an Obstack::.
--
--`void *obstack_copy0 (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- Allocate an object of SIZE+1 bytes, with SIZE of them copied from
-- ADDRESS, followed by a null character at the end. *Note
-- Allocation in an Obstack::.
--
--`void obstack_free (struct obstack *OBSTACK-PTR, void *OBJECT)'
-- Free OBJECT (and everything allocated in the specified obstack
-- more recently than OBJECT). *Note Freeing Obstack Objects::.
--
--`void obstack_blank (struct obstack *OBSTACK-PTR, int SIZE)'
-- Add SIZE uninitialized bytes to a growing object. *Note Growing
-- Objects::.
--
--`void obstack_grow (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- Add SIZE bytes, copied from ADDRESS, to a growing object. *Note
-- Growing Objects::.
--
--`void obstack_grow0 (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- Add SIZE bytes, copied from ADDRESS, to a growing object, and then
-- add another byte containing a null character. *Note Growing
-- Objects::.
--
--`void obstack_1grow (struct obstack *OBSTACK-PTR, char DATA-CHAR)'
-- Add one byte containing DATA-CHAR to a growing object. *Note
-- Growing Objects::.
--
--`void *obstack_finish (struct obstack *OBSTACK-PTR)'
-- Finalize the object that is growing and return its permanent
-- address. *Note Growing Objects::.
--
--`int obstack_object_size (struct obstack *OBSTACK-PTR)'
-- Get the current size of the currently growing object. *Note
-- Growing Objects::.
--
--`void obstack_blank_fast (struct obstack *OBSTACK-PTR, int SIZE)'
-- Add SIZE uninitialized bytes to a growing object without checking
-- that there is enough room. *Note Extra Fast Growing::.
--
--`void obstack_1grow_fast (struct obstack *OBSTACK-PTR, char DATA-CHAR)'
-- Add one byte containing DATA-CHAR to a growing object without
-- checking that there is enough room. *Note Extra Fast Growing::.
--
--`int obstack_room (struct obstack *OBSTACK-PTR)'
-- Get the amount of room now available for growing the current
-- object. *Note Extra Fast Growing::.
--
--`int obstack_alignment_mask (struct obstack *OBSTACK-PTR)'
-- The mask used for aligning the beginning of an object. This is an
-- lvalue. *Note Obstacks Data Alignment::.
--
--`int obstack_chunk_size (struct obstack *OBSTACK-PTR)'
-- The size for allocating chunks. This is an lvalue. *Note Obstack
-- Chunks::.
--
--`void *obstack_base (struct obstack *OBSTACK-PTR)'
-- Tentative starting address of the currently growing object. *Note
-- Status of an Obstack::.
--
--`void *obstack_next_free (struct obstack *OBSTACK-PTR)'
-- Address just after the end of the currently growing object. *Note
-- Status of an Obstack::.
--
--
--File: libc.info, Node: Variable Size Automatic, Prev: Obstacks, Up: Memory Allocation
--
--Automatic Storage with Variable Size
--------------------------------------
--
-- The function `alloca' supports a kind of half-dynamic allocation in
--which blocks are allocated dynamically but freed automatically.
--
-- Allocating a block with `alloca' is an explicit action; you can
--allocate as many blocks as you wish, and compute the size at run time.
--But all the blocks are freed when you exit the function that `alloca'
--was called from, just as if they were automatic variables declared in
--that function. There is no way to free the space explicitly.
--
-- The prototype for `alloca' is in `stdlib.h'. This function is a BSD
--extension.
--
-- - Function: void * alloca (size_t SIZE);
-- The return value of `alloca' is the address of a block of SIZE
-- bytes of memory, allocated in the stack frame of the calling
-- function.
--
-- Do not use `alloca' inside the arguments of a function call--you
--will get unpredictable results, because the stack space for the
--`alloca' would appear on the stack in the middle of the space for the
--function arguments. An example of what to avoid is `foo (x, alloca
--(4), y)'.
--
--* Menu:
--
--* Alloca Example:: Example of using `alloca'.
--* Advantages of Alloca:: Reasons to use `alloca'.
--* Disadvantages of Alloca:: Reasons to avoid `alloca'.
--* GNU C Variable-Size Arrays:: Only in GNU C, here is an alternative
-- method of allocating dynamically and
-- freeing automatically.
--
--
--File: libc.info, Node: Alloca Example, Next: Advantages of Alloca, Up: Variable Size Automatic
--
--`alloca' Example
--................
--
-- As an example of the use of `alloca', here is a function that opens
--a file name made from concatenating two argument strings, and returns a
--file descriptor or minus one signifying failure:
--
-- int
-- open2 (char *str1, char *str2, int flags, int mode)
-- {
-- char *name = (char *) alloca (strlen (str1) + strlen (str2) + 1);
-- stpcpy (stpcpy (name, str1), str2);
-- return open (name, flags, mode);
-- }
--
--Here is how you would get the same results with `malloc' and `free':
--
-- int
-- open2 (char *str1, char *str2, int flags, int mode)
-- {
-- char *name = (char *) malloc (strlen (str1) + strlen (str2) + 1);
-- int desc;
-- if (name == 0)
-- fatal ("virtual memory exceeded");
-- stpcpy (stpcpy (name, str1), str2);
-- desc = open (name, flags, mode);
-- free (name);
-- return desc;
-- }
--
-- As you can see, it is simpler with `alloca'. But `alloca' has
--other, more important advantages, and some disadvantages.
--
--
--File: libc.info, Node: Advantages of Alloca, Next: Disadvantages of Alloca, Prev: Alloca Example, Up: Variable Size Automatic
--
--Advantages of `alloca'
--......................
--
-- Here are the reasons why `alloca' may be preferable to `malloc':
--
-- * Using `alloca' wastes very little space and is very fast. (It is
-- open-coded by the GNU C compiler.)
--
-- * Since `alloca' does not have separate pools for different sizes of
-- block, space used for any size block can be reused for any other
-- size. `alloca' does not cause memory fragmentation.
--
-- * Nonlocal exits done with `longjmp' (*note Non-Local Exits::)
-- automatically free the space allocated with `alloca' when they exit
-- through the function that called `alloca'. This is the most
-- important reason to use `alloca'.
--
-- To illustrate this, suppose you have a function
-- `open_or_report_error' which returns a descriptor, like `open', if
-- it succeeds, but does not return to its caller if it fails. If
-- the file cannot be opened, it prints an error message and jumps
-- out to the command level of your program using `longjmp'. Let's
-- change `open2' (*note Alloca Example::) to use this subroutine:
--
-- int
-- open2 (char *str1, char *str2, int flags, int mode)
-- {
-- char *name = (char *) alloca (strlen (str1) + strlen (str2) + 1);
-- stpcpy (stpcpy (name, str1), str2);
-- return open_or_report_error (name, flags, mode);
-- }
--
-- Because of the way `alloca' works, the memory it allocates is
-- freed even when an error occurs, with no special effort required.
--
-- By contrast, the previous definition of `open2' (which uses
-- `malloc' and `free') would develop a memory leak if it were
-- changed in this way. Even if you are willing to make more changes
-- to fix it, there is no easy way to do so.
--
--
--File: libc.info, Node: Disadvantages of Alloca, Next: GNU C Variable-Size Arrays, Prev: Advantages of Alloca, Up: Variable Size Automatic
--
--Disadvantages of `alloca'
--.........................
--
-- These are the disadvantages of `alloca' in comparison with `malloc':
--
-- * If you try to allocate more memory than the machine can provide,
-- you don't get a clean error message. Instead you get a fatal
-- signal like the one you would get from an infinite recursion;
-- probably a segmentation violation (*note Program Error Signals::).
--
-- * Some non-GNU systems fail to support `alloca', so it is less
-- portable. However, a slower emulation of `alloca' written in C is
-- available for use on systems with this deficiency.
--
--
--File: libc.info, Node: GNU C Variable-Size Arrays, Prev: Disadvantages of Alloca, Up: Variable Size Automatic
--
--GNU C Variable-Size Arrays
--..........................
--
-- In GNU C, you can replace most uses of `alloca' with an array of
--variable size. Here is how `open2' would look then:
--
-- int open2 (char *str1, char *str2, int flags, int mode)
-- {
-- char name[strlen (str1) + strlen (str2) + 1];
-- stpcpy (stpcpy (name, str1), str2);
-- return open (name, flags, mode);
-- }
--
-- But `alloca' is not always equivalent to a variable-sized array, for
--several reasons:
--
-- * A variable size array's space is freed at the end of the scope of
-- the name of the array. The space allocated with `alloca' remains
-- until the end of the function.
--
-- * It is possible to use `alloca' within a loop, allocating an
-- additional block on each iteration. This is impossible with
-- variable-sized arrays.
--
-- *Note:* If you mix use of `alloca' and variable-sized arrays within
--one function, exiting a scope in which a variable-sized array was
--declared frees all blocks allocated with `alloca' during the execution
--of that scope.
--
--
--File: libc.info, Node: Resizing the Data Segment, Prev: Locking Pages, Up: Memory
--
--Resizing the Data Segment
--=========================
--
-- The symbols in this section are declared in `unistd.h'.
--
-- You will not normally use the functions in this section, because the
--functions described in *Note Memory Allocation:: are easier to use.
--Those are interfaces to a GNU C Library memory allocator that uses the
--functions below itself. The functions below are simple interfaces to
--system calls.
--
-- - Function: int brk (void *ADDR)
-- `brk' sets the high end of the calling process' data segment to
-- ADDR.
--
-- The address of the end of a segment is defined to be the address
-- of the last byte in the segment plus 1.
--
-- The function has no effect if ADDR is lower than the low end of
-- the data segment. (This is considered success, by the way).
--
-- The function fails if it would cause the data segment to overlap
-- another segment or exceed the process' data storage limit (*note
-- Limits on Resources::).
--
-- The function is named for a common historical case where data
-- storage and the stack are in the same segment. Data storage
-- allocation grows upward from the bottom of the segment while the
-- stack grows downward toward it from the top of the segment and the
-- curtain between them is called the "break".
--
-- The return value is zero on success. On failure, the return value
-- is `-1' and `errno' is set accordingly. The following `errno'
-- values are specific to this function:
--
-- `ENOMEM'
-- The request would cause the data segment to overlap another
-- segment or exceed the process' data storage limit.
--
--
-- - Function: int sbrk (ptrdiff_t DELTA)
-- This function is the same as `brk' except that you specify the new
-- end of the data segment as an offset DELTA from the current end
-- and on success the return value is the address of the resulting
-- end of the data segment instead of zero.
--
-- This means you can use `sbrk(0)' to find out what the current end
-- of the data segment is.
--
--
--
--File: libc.info, Node: Locking Pages, Next: Resizing the Data Segment, Prev: Memory Allocation, Up: Memory
--
--Locking Pages
--=============
--
-- You can tell the system to associate a particular virtual memory page
--with a real page frame and keep it that way -- i.e. cause the page to
--be paged in if it isn't already and mark it so it will never be paged
--out and consequently will never cause a page fault. This is called
--"locking" a page.
--
-- The functions in this chapter lock and unlock the calling process'
--pages.
--
--* Menu:
--
--* Why Lock Pages:: Reasons to read this section.
--* Locked Memory Details:: Everything you need to know locked
-- memory
--* Page Lock Functions:: Here's how to do it.
--
--
--File: libc.info, Node: Why Lock Pages, Next: Locked Memory Details, Up: Locking Pages
--
--Why Lock Pages
----------------
--
-- Because page faults cause paged out pages to be paged in
--transparently, a process rarely needs to be concerned about locking
--pages. However, there are two reasons people sometimes are:
--
-- * Speed. A page fault is transparent only insofar as the process is
-- not sensitive to how long it takes to do a simple memory access.
-- Time-critical processes, especially realtime processes, may not be
-- able to wait or may not be able to tolerate variance in execution
-- speed.
--
-- A process that needs to lock pages for this reason probably also
-- needs priority among other processes for use of the CPU. *Note
-- Priority::.
--
-- In some cases, the programmer knows better than the system's demand
-- paging allocator which pages should remain in real memory to
-- optimize system performance. In this case, locking pages can help.
--
-- * Privacy. If you keep secrets in virtual memory and that virtual
-- memory gets paged out, that increases the chance that the secrets
-- will get out. If a password gets written out to disk swap space,
-- for example, it might still be there long after virtual and real
-- memory have been wiped clean.
--
--
-- Be aware that when you lock a page, that's one fewer page frame that
--can be used to back other virtual memory (by the same or other
--processes), which can mean more page faults, which means the system
--runs more slowly. In fact, if you lock enough memory, some programs
--may not be able to run at all for lack of real memory.
--
--
--File: libc.info, Node: Locked Memory Details, Next: Page Lock Functions, Prev: Why Lock Pages, Up: Locking Pages
--
--Locked Memory Details
-----------------------
--
-- A memory lock is associated with a virtual page, not a real frame.
--The paging rule is: If a frame backs at least one locked page, don't
--page it out.
--
-- Memory locks do not stack. I.e. you can't lock a particular page
--twice so that it has to be unlocked twice before it is truly unlocked.
--It is either locked or it isn't.
--
-- A memory lock persists until the process that owns the memory
--explicitly unlocks it. (But process termination and exec cause the
--virtual memory to cease to exist, which you might say means it isn't
--locked any more).
--
-- Memory locks are not inherited by child processes. (But note that
--on a modern Unix system, immediately after a fork, the parent's and the
--child's virtual address space are backed by the same real page frames,
--so the child enjoys the parent's locks). *Note Creating a Process::.
--
-- Because of its ability to impact other processes, only the superuser
--can lock a page. Any process can unlock its own page.
--
-- The system sets limits on the amount of memory a process can have
--locked and the amount of real memory it can have dedicated to it.
--*Note Limits on Resources::.
--
-- In Linux, locked pages aren't as locked as you might think. Two
--virtual pages that are not shared memory can nonetheless be backed by
--the same real frame. The kernel does this in the name of efficiency
--when it knows both virtual pages contain identical data, and does it
--even if one or both of the virtual pages are locked.
--
-- But when a process modifies one of those pages, the kernel must get
--it a separate frame and fill it with the page's data. This is known as
--a "copy-on-write page fault". It takes a small amount of time and in a
--pathological case, getting that frame may require I/O.
--
-- To make sure this doesn't happen to your program, don't just lock the
--pages. Write to them as well, unless you know you won't write to them
--ever. And to make sure you have pre-allocated frames for your stack,
--enter a scope that declares a C automatic variable larger than the
--maximum stack size you will need, set it to something, then return from
--its scope.
--
--
--File: libc.info, Node: Page Lock Functions, Prev: Locked Memory Details, Up: Locking Pages
--
--Functions To Lock And Unlock Pages
------------------------------------
--
-- The symbols in this section are declared in `sys/mman.h'. These
--functions are defined by POSIX.1b, but their availability depends on
--your kernel. If your kernel doesn't allow these functions, they exist
--but always fail. They _are_ available with a Linux kernel.
--
-- *Portability Note:* POSIX.1b requires that when the `mlock' and
--`munlock' functions are available, the file `unistd.h' define the macro
--`_POSIX_MEMLOCK_RANGE' and the file `limits.h' define the macro
--`PAGESIZE' to be the size of a memory page in bytes. It requires that
--when the `mlockall' and `munlockall' functions are available, the
--`unistd.h' file define the macro `_POSIX_MEMLOCK'. The GNU C library
--conforms to this requirement.
--
-- - Function: int mlock (const void *ADDR, size_t LEN)
-- `mlock' locks a range of the calling process' virtual pages.
--
-- The range of memory starts at address ADDR and is LEN bytes long.
-- Actually, since you must lock whole pages, it is the range of
-- pages that include any part of the specified range.
--
-- When the function returns successfully, each of those pages is
-- backed by (connected to) a real frame (is resident) and is marked
-- to stay that way. This means the function may cause page-ins and
-- have to wait for them.
--
-- When the function fails, it does not affect the lock status of any
-- pages.
--
-- The return value is zero if the function succeeds. Otherwise, it
-- is `-1' and `errno' is set accordingly. `errno' values specific
-- to this function are:
--
-- `ENOMEM'
-- * At least some of the specified address range does not
-- exist in the calling process' virtual address space.
--
-- * The locking would cause the process to exceed its locked
-- page limit.
--
-- `EPERM'
-- The calling process is not superuser.
--
-- `EINVAL'
-- LEN is not positive.
--
-- `ENOSYS'
-- The kernel does not provide `mlock' capability.
--
-- You can lock _all_ a process' memory with `mlockall'. You unlock
-- memory with `munlock' or `munlockall'.
--
-- To avoid all page faults in a C program, you have to use
-- `mlockall', because some of the memory a program uses is hidden
-- from the C code, e.g. the stack and automatic variables, and you
-- wouldn't know what address to tell `mlock'.
--
--
-- - Function: int munlock (const void *ADDR, size_t LEN)
-- `mlock' unlocks a range of the calling process' virtual pages.
--
-- `munlock' is the inverse of `mlock' and functions completely
-- analogously to `mlock', except that there is no `EPERM' failure.
--
--
-- - Function: int mlockall (int FLAGS)
-- `mlockall' locks all the pages in a process' virtual memory address
-- space, and/or any that are added to it in the future. This
-- includes the pages of the code, data and stack segment, as well as
-- shared libraries, user space kernel data, shared memory, and
-- memory mapped files.
--
-- FLAGS is a string of single bit flags represented by the following
-- macros. They tell `mlockall' which of its functions you want. All
-- other bits must be zero.
--
-- `MCL_CURRENT'
-- Lock all pages which currently exist in the calling process'
-- virtual address space.
--
-- `MCL_FUTURE'
-- Set a mode such that any pages added to the process' virtual
-- address space in the future will be locked from birth. This
-- mode does not affect future address spaces owned by the same
-- process so exec, which replaces a process' address space,
-- wipes out `MCL_FUTURE'. *Note Executing a File::.
--
-- When the function returns successfully, and you specified
-- `MCL_CURRENT', all of the process' pages are backed by (connected
-- to) real frames (they are resident) and are marked to stay that
-- way. This means the function may cause page-ins and have to wait
-- for them.
--
-- When the process is in `MCL_FUTURE' mode because it successfully
-- executed this function and specified `MCL_CURRENT', any system call
-- by the process that requires space be added to its virtual address
-- space fails with `errno' = `ENOMEM' if locking the additional space
-- would cause the process to exceed its locked page limit. In the
-- case that the address space addition that can't be accommodated is
-- stack expansion, the stack expansion fails and the kernel sends a
-- `SIGSEGV' signal to the process.
--
-- When the function fails, it does not affect the lock status of any
-- pages or the future locking mode.
--
-- The return value is zero if the function succeeds. Otherwise, it
-- is `-1' and `errno' is set accordingly. `errno' values specific
-- to this function are:
--
-- `ENOMEM'
-- * At least some of the specified address range does not
-- exist in the calling process' virtual address space.
--
-- * The locking would cause the process to exceed its locked
-- page limit.
--
-- `EPERM'
-- The calling process is not superuser.
--
-- `EINVAL'
-- Undefined bits in FLAGS are not zero.
--
-- `ENOSYS'
-- The kernel does not provide `mlockall' capability.
--
-- You can lock just specific pages with `mlock'. You unlock pages
-- with `munlockall' and `munlock'.
--
--
-- - Function: int munlockall (void)
-- `munlockall' unlocks every page in the calling process' virtual
-- address space and turn off `MCL_FUTURE' future locking mode.
--
-- The return value is zero if the function succeeds. Otherwise, it
-- is `-1' and `errno' is set accordingly. The only way this
-- function can fail is for generic reasons that all functions and
-- system calls can fail, so there are no specific `errno' values.
--
--
--
--File: libc.info, Node: Character Handling, Next: String and Array Utilities, Prev: Memory, Up: Top
--
--Character Handling
--******************
--
-- Programs that work with characters and strings often need to
--classify a character--is it alphabetic, is it a digit, is it
--whitespace, and so on--and perform case conversion operations on
--characters. The functions in the header file `ctype.h' are provided
--for this purpose.
--
-- Since the choice of locale and character set can alter the
--classifications of particular character codes, all of these functions
--are affected by the current locale. (More precisely, they are affected
--by the locale currently selected for character classification--the
--`LC_CTYPE' category; see *Note Locale Categories::.)
--
-- The ISO C standard specifies two different sets of functions. The
--one set works on `char' type characters, the other one on `wchar_t'
--wide characters (*note Extended Char Intro::).
--
--* Menu:
--
--* Classification of Characters:: Testing whether characters are
-- letters, digits, punctuation, etc.
--
--* Case Conversion:: Case mapping, and the like.
--* Classification of Wide Characters:: Character class determination for
-- wide characters.
--* Using Wide Char Classes:: Notes on using the wide character
-- classes.
--* Wide Character Case Conversion:: Mapping of wide characters.
--
--
--File: libc.info, Node: Classification of Characters, Next: Case Conversion, Up: Character Handling
--
--Classification of Characters
--============================
--
-- This section explains the library functions for classifying
--characters. For example, `isalpha' is the function to test for an
--alphabetic character. It takes one argument, the character to test,
--and returns a nonzero integer if the character is alphabetic, and zero
--otherwise. You would use it like this:
--
-- if (isalpha (c))
-- printf ("The character `%c' is alphabetic.\n", c);
--
-- Each of the functions in this section tests for membership in a
--particular class of characters; each has a name starting with `is'.
--Each of them takes one argument, which is a character to test, and
--returns an `int' which is treated as a boolean value. The character
--argument is passed as an `int', and it may be the constant value `EOF'
--instead of a real character.
--
-- The attributes of any given character can vary between locales.
--*Note Locales::, for more information on locales.
--
-- These functions are declared in the header file `ctype.h'.
--
-- - Function: int islower (int C)
-- Returns true if C is a lower-case letter. The letter need not be
-- from the Latin alphabet, any alphabet representable is valid.
--
-- - Function: int isupper (int C)
-- Returns true if C is an upper-case letter. The letter need not be
-- from the Latin alphabet, any alphabet representable is valid.
--
-- - Function: int isalpha (int C)
-- Returns true if C is an alphabetic character (a letter). If
-- `islower' or `isupper' is true of a character, then `isalpha' is
-- also true.
--
-- In some locales, there may be additional characters for which
-- `isalpha' is true--letters which are neither upper case nor lower
-- case. But in the standard `"C"' locale, there are no such
-- additional characters.
--
-- - Function: int isdigit (int C)
-- Returns true if C is a decimal digit (`0' through `9').
--
-- - Function: int isalnum (int C)
-- Returns true if C is an alphanumeric character (a letter or
-- number); in other words, if either `isalpha' or `isdigit' is true
-- of a character, then `isalnum' is also true.
--
-- - Function: int isxdigit (int C)
-- Returns true if C is a hexadecimal digit. Hexadecimal digits
-- include the normal decimal digits `0' through `9' and the letters
-- `A' through `F' and `a' through `f'.
--
-- - Function: int ispunct (int C)
-- Returns true if C is a punctuation character. This means any
-- printing character that is not alphanumeric or a space character.
--
-- - Function: int isspace (int C)
-- Returns true if C is a "whitespace" character. In the standard
-- `"C"' locale, `isspace' returns true for only the standard
-- whitespace characters:
--
-- `' ''
-- space
--
-- `'\f''
-- formfeed
--
-- `'\n''
-- newline
--
-- `'\r''
-- carriage return
--
-- `'\t''
-- horizontal tab
--
-- `'\v''
-- vertical tab
--
-- - Function: int isblank (int C)
-- Returns true if C is a blank character; that is, a space or a tab.
-- This function is a GNU extension.
--
-- - Function: int isgraph (int C)
-- Returns true if C is a graphic character; that is, a character
-- that has a glyph associated with it. The whitespace characters
-- are not considered graphic.
--
-- - Function: int isprint (int C)
-- Returns true if C is a printing character. Printing characters
-- include all the graphic characters, plus the space (` ') character.
--
-- - Function: int iscntrl (int C)
-- Returns true if C is a control character (that is, a character that
-- is not a printing character).
--
-- - Function: int isascii (int C)
-- Returns true if C is a 7-bit `unsigned char' value that fits into
-- the US/UK ASCII character set. This function is a BSD extension
-- and is also an SVID extension.
--
--
--File: libc.info, Node: Case Conversion, Next: Classification of Wide Characters, Prev: Classification of Characters, Up: Character Handling
--
--Case Conversion
--===============
--
-- This section explains the library functions for performing
--conversions such as case mappings on characters. For example, `toupper'
--converts any character to upper case if possible. If the character
--can't be converted, `toupper' returns it unchanged.
--
-- These functions take one argument of type `int', which is the
--character to convert, and return the converted character as an `int'.
--If the conversion is not applicable to the argument given, the argument
--is returned unchanged.
--
-- *Compatibility Note:* In pre-ISO C dialects, instead of returning
--the argument unchanged, these functions may fail when the argument is
--not suitable for the conversion. Thus for portability, you may need to
--write `islower(c) ? toupper(c) : c' rather than just `toupper(c)'.
--
-- These functions are declared in the header file `ctype.h'.
--
-- - Function: int tolower (int C)
-- If C is an upper-case letter, `tolower' returns the corresponding
-- lower-case letter. If C is not an upper-case letter, C is
-- returned unchanged.
--
-- - Function: int toupper (int C)
-- If C is a lower-case letter, `toupper' returns the corresponding
-- upper-case letter. Otherwise C is returned unchanged.
--
-- - Function: int toascii (int C)
-- This function converts C to a 7-bit `unsigned char' value that
-- fits into the US/UK ASCII character set, by clearing the high-order
-- bits. This function is a BSD extension and is also an SVID
-- extension.
--
-- - Function: int _tolower (int C)
-- This is identical to `tolower', and is provided for compatibility
-- with the SVID. *Note SVID::.
--
-- - Function: int _toupper (int C)
-- This is identical to `toupper', and is provided for compatibility
-- with the SVID.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-50 glibc-2.3.2-200304020432/manual/libc.info-50
---- glibc-2.3.2/manual/libc.info-50 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-50 Thu Jan 1 01:00:00 1970
-@@ -1,1150 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Basic Thread Operations, Next: Thread Attributes, Up: POSIX Threads
--
--Basic Thread Operations
--=======================
--
-- These functions are the thread equivalents of `fork', `exit', and
--`wait'.
--
-- - Function: int pthread_create (pthread_t * THREAD, pthread_attr_t *
-- ATTR, void * (*START_ROUTINE)(void *), void * ARG)
-- `pthread_create' creates a new thread of control that executes
-- concurrently with the calling thread. The new thread calls the
-- function START_ROUTINE, passing it ARG as first argument. The new
-- thread terminates either explicitly, by calling `pthread_exit', or
-- implicitly, by returning from the START_ROUTINE function. The
-- latter case is equivalent to calling `pthread_exit' with the result
-- returned by START_ROUTINE as exit code.
--
-- The ATTR argument specifies thread attributes to be applied to the
-- new thread. *Note Thread Attributes::, for details. The ATTR
-- argument can also be `NULL', in which case default attributes are
-- used: the created thread is joinable (not detached) and has an
-- ordinary (not realtime) scheduling policy.
--
-- On success, the identifier of the newly created thread is stored
-- in the location pointed by the THREAD argument, and a 0 is
-- returned. On error, a non-zero error code is returned.
--
-- This function may return the following errors:
-- `EAGAIN'
-- Not enough system resources to create a process for the new
-- thread, or more than `PTHREAD_THREADS_MAX' threads are
-- already active.
--
-- - Function: void pthread_exit (void *RETVAL)
-- `pthread_exit' terminates the execution of the calling thread. All
-- cleanup handlers (*note Cleanup Handlers::) that have been set for
-- the calling thread with `pthread_cleanup_push' are executed in
-- reverse order (the most recently pushed handler is executed
-- first). Finalization functions for thread-specific data are then
-- called for all keys that have non-`NULL' values associated with
-- them in the calling thread (*note Thread-Specific Data::).
-- Finally, execution of the calling thread is stopped.
--
-- The RETVAL argument is the return value of the thread. It can be
-- retrieved from another thread using `pthread_join'.
--
-- The `pthread_exit' function never returns.
--
-- - Function: int pthread_cancel (pthread_t THREAD)
-- `pthread_cancel' sends a cancellation request to the thread denoted
-- by the THREAD argument. If there is no such thread,
-- `pthread_cancel' fails and returns `ESRCH'. Otherwise it returns
-- 0. *Note Cancellation::, for details.
--
-- - Function: int pthread_join (pthread_t TH, void **thread_RETURN)
-- `pthread_join' suspends the execution of the calling thread until
-- the thread identified by TH terminates, either by calling
-- `pthread_exit' or by being canceled.
--
-- If THREAD_RETURN is not `NULL', the return value of TH is stored
-- in the location pointed to by THREAD_RETURN. The return value of
-- TH is either the argument it gave to `pthread_exit', or
-- `PTHREAD_CANCELED' if TH was canceled.
--
-- The joined thread `th' must be in the joinable state: it must not
-- have been detached using `pthread_detach' or the
-- `PTHREAD_CREATE_DETACHED' attribute to `pthread_create'.
--
-- When a joinable thread terminates, its memory resources (thread
-- descriptor and stack) are not deallocated until another thread
-- performs `pthread_join' on it. Therefore, `pthread_join' must be
-- called once for each joinable thread created to avoid memory leaks.
--
-- At most one thread can wait for the termination of a given thread.
-- Calling `pthread_join' on a thread TH on which another thread is
-- already waiting for termination returns an error.
--
-- `pthread_join' is a cancellation point. If a thread is canceled
-- while suspended in `pthread_join', the thread execution resumes
-- immediately and the cancellation is executed without waiting for
-- the TH thread to terminate. If cancellation occurs during
-- `pthread_join', the TH thread remains not joined.
--
-- On success, the return value of TH is stored in the location
-- pointed to by THREAD_RETURN, and 0 is returned. On error, one of
-- the following values is returned:
-- `ESRCH'
-- No thread could be found corresponding to that specified by
-- TH.
--
-- `EINVAL'
-- The TH thread has been detached, or another thread is already
-- waiting on termination of TH.
--
-- `EDEADLK'
-- The TH argument refers to the calling thread.
--
--
--File: libc.info, Node: Thread Attributes, Next: Cancellation, Prev: Basic Thread Operations, Up: POSIX Threads
--
--Thread Attributes
--=================
--
-- Threads have a number of attributes that may be set at creation time.
--This is done by filling a thread attribute object ATTR of type
--`pthread_attr_t', then passing it as second argument to
--`pthread_create'. Passing `NULL' is equivalent to passing a thread
--attribute object with all attributes set to their default values.
--
-- Attribute objects are consulted only when creating a new thread. The
--same attribute object can be used for creating several threads.
--Modifying an attribute object after a call to `pthread_create' does not
--change the attributes of the thread previously created.
--
-- - Function: int pthread_attr_init (pthread_attr_t *ATTR)
-- `pthread_attr_init' initializes the thread attribute object ATTR
-- and fills it with default values for the attributes. (The default
-- values are listed below for each attribute.)
--
-- Each attribute ATTRNAME (see below for a list of all attributes)
-- can be individually set using the function
-- `pthread_attr_setATTRNAME' and retrieved using the function
-- `pthread_attr_getATTRNAME'.
--
-- - Function: int pthread_attr_destroy (pthread_attr_t *ATTR)
-- `pthread_attr_destroy' destroys the attribute object pointed to by
-- ATTR releasing any resources associated with it. ATTR is left in
-- an undefined state, and you must not use it again in a call to any
-- pthreads function until it has been reinitialized.
--
-- - Function: int pthread_attr_setattr (pthread_attr_t *OBJ, int VALUE)
-- Set attribute ATTR to VALUE in the attribute object pointed to by
-- OBJ. See below for a list of possible attributes and the values
-- they can take.
--
-- On success, these functions return 0. If VALUE is not meaningful
-- for the ATTR being modified, they will return the error code
-- `EINVAL'. Some of the functions have other failure modes; see
-- below.
--
-- - Function: int pthread_attr_getattr (const pthread_attr_t *OBJ, int
-- *VALUE)
-- Store the current setting of ATTR in OBJ into the variable pointed
-- to by VALUE.
--
-- These functions always return 0.
--
-- The following thread attributes are supported:
--`detachstate'
-- Choose whether the thread is created in the joinable state (value
-- `PTHREAD_CREATE_JOINABLE') or in the detached state
-- (`PTHREAD_CREATE_DETACHED'). The default is
-- `PTHREAD_CREATE_JOINABLE'.
--
-- In the joinable state, another thread can synchronize on the thread
-- termination and recover its termination code using `pthread_join',
-- but some of the thread resources are kept allocated after the
-- thread terminates, and reclaimed only when another thread performs
-- `pthread_join' on that thread.
--
-- In the detached state, the thread resources are immediately freed
-- when it terminates, but `pthread_join' cannot be used to
-- synchronize on the thread termination.
--
-- A thread created in the joinable state can later be put in the
-- detached thread using `pthread_detach'.
--
--`schedpolicy'
-- Select the scheduling policy for the thread: one of `SCHED_OTHER'
-- (regular, non-realtime scheduling), `SCHED_RR' (realtime,
-- round-robin) or `SCHED_FIFO' (realtime, first-in first-out). The
-- default is `SCHED_OTHER'.
--
-- The realtime scheduling policies `SCHED_RR' and `SCHED_FIFO' are
-- available only to processes with superuser privileges.
-- `pthread_attr_setschedparam' will fail and return `ENOTSUP' if you
-- try to set a realtime policy when you are unprivileged.
--
-- The scheduling policy of a thread can be changed after creation
-- with `pthread_setschedparam'.
--
--`schedparam'
-- Change the scheduling parameter (the scheduling priority) for the
-- thread. The default is 0.
--
-- This attribute is not significant if the scheduling policy is
-- `SCHED_OTHER'; it only matters for the realtime policies
-- `SCHED_RR' and `SCHED_FIFO'.
--
-- The scheduling priority of a thread can be changed after creation
-- with `pthread_setschedparam'.
--
--`inheritsched'
-- Choose whether the scheduling policy and scheduling parameter for
-- the newly created thread are determined by the values of the
-- SCHEDPOLICY and SCHEDPARAM attributes (value
-- `PTHREAD_EXPLICIT_SCHED') or are inherited from the parent thread
-- (value `PTHREAD_INHERIT_SCHED'). The default is
-- `PTHREAD_EXPLICIT_SCHED'.
--
--`scope'
-- Choose the scheduling contention scope for the created thread. The
-- default is `PTHREAD_SCOPE_SYSTEM', meaning that the threads contend
-- for CPU time with all processes running on the machine. In
-- particular, thread priorities are interpreted relative to the
-- priorities of all other processes on the machine. The other
-- possibility, `PTHREAD_SCOPE_PROCESS', means that scheduling
-- contention occurs only between the threads of the running process:
-- thread priorities are interpreted relative to the priorities of
-- the other threads of the process, regardless of the priorities of
-- other processes.
--
-- `PTHREAD_SCOPE_PROCESS' is not supported in LinuxThreads. If you
-- try to set the scope to this value, `pthread_attr_setscope' will
-- fail and return `ENOTSUP'.
--
--`stackaddr'
-- Provide an address for an application managed stack. The size of
-- the stack must be at least `PTHREAD_STACK_MIN'.
--
--`stacksize'
-- Change the size of the stack created for the thread. The value
-- defines the minimum stack size, in bytes.
--
-- If the value exceeds the system's maximum stack size, or is smaller
-- than `PTHREAD_STACK_MIN', `pthread_attr_setstacksize' will fail
-- and return `EINVAL'.
--
--`stack'
-- Provide both the address and size of an application managed stack
-- to use for the new thread. The base of the memory area is
-- STACKADDR with the size of the memory area, STACKSIZE, measured in
-- bytes.
--
-- If the value of STACKSIZE is less than `PTHREAD_STACK_MIN', or
-- greater than the system's maximum stack size, or if the value of
-- STACKADDR lacks the proper alignment, `pthread_attr_setstack' will
-- fail and return `EINVAL'.
--
--`guardsize'
-- Change the minimum size in bytes of the guard area for the thread's
-- stack. The default size is a single page. If this value is set,
-- it will be rounded up to the nearest page size. If the value is
-- set to 0, a guard area will not be created for this thread. The
-- space allocated for the guard area is used to catch stack
-- overflow. Therefore, when allocating large structures on the
-- stack, a larger guard area may be required to catch a stack
-- overflow.
--
-- If the caller is managing their own stacks (if the `stackaddr'
-- attribute has been set), then the `guardsize' attribute is ignored.
--
-- If the value exceeds the `stacksize', `pthread_atrr_setguardsize'
-- will fail and return `EINVAL'.
--
--
--File: libc.info, Node: Cancellation, Next: Cleanup Handlers, Prev: Thread Attributes, Up: POSIX Threads
--
--Cancellation
--============
--
-- Cancellation is the mechanism by which a thread can terminate the
--execution of another thread. More precisely, a thread can send a
--cancellation request to another thread. Depending on its settings, the
--target thread can then either ignore the request, honor it immediately,
--or defer it till it reaches a cancellation point. When threads are
--first created by `pthread_create', they always defer cancellation
--requests.
--
-- When a thread eventually honors a cancellation request, it behaves
--as if `pthread_exit(PTHREAD_CANCELED)' was called. All cleanup handlers
--are executed in reverse order, finalization functions for
--thread-specific data are called, and finally the thread stops executing.
--If the canceled thread was joinable, the return value
--`PTHREAD_CANCELED' is provided to whichever thread calls PTHREAD_JOIN
--on it. See `pthread_exit' for more information.
--
-- Cancellation points are the points where the thread checks for
--pending cancellation requests and performs them. The POSIX threads
--functions `pthread_join', `pthread_cond_wait',
--`pthread_cond_timedwait', `pthread_testcancel', `sem_wait', and
--`sigwait' are cancellation points. In addition, these system calls are
--cancellation points:
--
--accept open sendmsg
--close pause sendto
--connect read system
--fcntl recv tcdrain
--fsync recvfrom wait
--lseek recvmsg waitpid
--msync send write
--nanosleep
--
--All library functions that call these functions (such as `printf') are
--also cancellation points.
--
-- - Function: int pthread_setcancelstate (int STATE, int *OLDSTATE)
-- `pthread_setcancelstate' changes the cancellation state for the
-- calling thread - that is, whether cancellation requests are
-- ignored or not. The STATE argument is the new cancellation state:
-- either `PTHREAD_CANCEL_ENABLE' to enable cancellation, or
-- `PTHREAD_CANCEL_DISABLE' to disable cancellation (cancellation
-- requests are ignored).
--
-- If OLDSTATE is not `NULL', the previous cancellation state is
-- stored in the location pointed to by OLDSTATE, and can thus be
-- restored later by another call to `pthread_setcancelstate'.
--
-- If the STATE argument is not `PTHREAD_CANCEL_ENABLE' or
-- `PTHREAD_CANCEL_DISABLE', `pthread_setcancelstate' fails and
-- returns `EINVAL'. Otherwise it returns 0.
--
-- - Function: int pthread_setcanceltype (int TYPE, int *OLDTYPE)
-- `pthread_setcanceltype' changes the type of responses to
-- cancellation requests for the calling thread: asynchronous
-- (immediate) or deferred. The TYPE argument is the new
-- cancellation type: either `PTHREAD_CANCEL_ASYNCHRONOUS' to cancel
-- the calling thread as soon as the cancellation request is
-- received, or `PTHREAD_CANCEL_DEFERRED' to keep the cancellation
-- request pending until the next cancellation point. If OLDTYPE is
-- not `NULL', the previous cancellation state is stored in the
-- location pointed to by OLDTYPE, and can thus be restored later by
-- another call to `pthread_setcanceltype'.
--
-- If the TYPE argument is not `PTHREAD_CANCEL_DEFERRED' or
-- `PTHREAD_CANCEL_ASYNCHRONOUS', `pthread_setcanceltype' fails and
-- returns `EINVAL'. Otherwise it returns 0.
--
-- - Function: void pthread_testcancel (VOID)
-- `pthread_testcancel' does nothing except testing for pending
-- cancellation and executing it. Its purpose is to introduce explicit
-- checks for cancellation in long sequences of code that do not call
-- cancellation point functions otherwise.
--
--
--File: libc.info, Node: Cleanup Handlers, Next: Mutexes, Prev: Cancellation, Up: POSIX Threads
--
--Cleanup Handlers
--================
--
-- Cleanup handlers are functions that get called when a thread
--terminates, either by calling `pthread_exit' or because of
--cancellation. Cleanup handlers are installed and removed following a
--stack-like discipline.
--
-- The purpose of cleanup handlers is to free the resources that a
--thread may hold at the time it terminates. In particular, if a thread
--exits or is canceled while it owns a locked mutex, the mutex will
--remain locked forever and prevent other threads from executing
--normally. The best way to avoid this is, just before locking the mutex,
--to install a cleanup handler whose effect is to unlock the mutex.
--Cleanup handlers can be used similarly to free blocks allocated with
--`malloc' or close file descriptors on thread termination.
--
-- Here is how to lock a mutex MUT in such a way that it will be
--unlocked if the thread is canceled while MUT is locked:
--
-- pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-- pthread_mutex_lock(&mut);
-- /* do some work */
-- pthread_mutex_unlock(&mut);
-- pthread_cleanup_pop(0);
--
-- Equivalently, the last two lines can be replaced by
--
-- pthread_cleanup_pop(1);
--
-- Notice that the code above is safe only in deferred cancellation mode
--(see `pthread_setcanceltype'). In asynchronous cancellation mode, a
--cancellation can occur between `pthread_cleanup_push' and
--`pthread_mutex_lock', or between `pthread_mutex_unlock' and
--`pthread_cleanup_pop', resulting in both cases in the thread trying to
--unlock a mutex not locked by the current thread. This is the main
--reason why asynchronous cancellation is difficult to use.
--
-- If the code above must also work in asynchronous cancellation mode,
--then it must switch to deferred mode for locking and unlocking the
--mutex:
--
-- pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
-- pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-- pthread_mutex_lock(&mut);
-- /* do some work */
-- pthread_cleanup_pop(1);
-- pthread_setcanceltype(oldtype, NULL);
--
-- The code above can be rewritten in a more compact and efficient way,
--using the non-portable functions `pthread_cleanup_push_defer_np' and
--`pthread_cleanup_pop_restore_np':
--
-- pthread_cleanup_push_defer_np(pthread_mutex_unlock, (void *) &mut);
-- pthread_mutex_lock(&mut);
-- /* do some work */
-- pthread_cleanup_pop_restore_np(1);
--
-- - Function: void pthread_cleanup_push (void (*ROUTINE) (void *), void
-- *ARG)
-- `pthread_cleanup_push' installs the ROUTINE function with argument
-- ARG as a cleanup handler. From this point on to the matching
-- `pthread_cleanup_pop', the function ROUTINE will be called with
-- arguments ARG when the thread terminates, either through
-- `pthread_exit' or by cancellation. If several cleanup handlers are
-- active at that point, they are called in LIFO order: the most
-- recently installed handler is called first.
--
-- - Function: void pthread_cleanup_pop (int EXECUTE)
-- `pthread_cleanup_pop' removes the most recently installed cleanup
-- handler. If the EXECUTE argument is not 0, it also executes the
-- handler, by calling the ROUTINE function with arguments ARG. If
-- the EXECUTE argument is 0, the handler is only removed but not
-- executed.
--
-- Matching pairs of `pthread_cleanup_push' and `pthread_cleanup_pop'
--must occur in the same function, at the same level of block nesting.
--Actually, `pthread_cleanup_push' and `pthread_cleanup_pop' are macros,
--and the expansion of `pthread_cleanup_push' introduces an open brace
--`{' with the matching closing brace `}' being introduced by the
--expansion of the matching `pthread_cleanup_pop'.
--
-- - Function: void pthread_cleanup_push_defer_np (void (*ROUTINE) (void
-- *), void *ARG)
-- `pthread_cleanup_push_defer_np' is a non-portable extension that
-- combines `pthread_cleanup_push' and `pthread_setcanceltype'. It
-- pushes a cleanup handler just as `pthread_cleanup_push' does, but
-- also saves the current cancellation type and sets it to deferred
-- cancellation. This ensures that the cleanup mechanism is effective
-- even if the thread was initially in asynchronous cancellation mode.
--
-- - Function: void pthread_cleanup_pop_restore_np (int EXECUTE)
-- `pthread_cleanup_pop_restore_np' pops a cleanup handler introduced
-- by `pthread_cleanup_push_defer_np', and restores the cancellation
-- type to its value at the time `pthread_cleanup_push_defer_np' was
-- called.
--
-- `pthread_cleanup_push_defer_np' and `pthread_cleanup_pop_restore_np'
--must occur in matching pairs, at the same level of block nesting.
--
-- The sequence
--
-- pthread_cleanup_push_defer_np(routine, arg);
-- ...
-- pthread_cleanup_pop_defer_np(execute);
--
--is functionally equivalent to (but more compact and efficient than)
--
-- {
-- int oldtype;
-- pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
-- pthread_cleanup_push(routine, arg);
-- ...
-- pthread_cleanup_pop(execute);
-- pthread_setcanceltype(oldtype, NULL);
-- }
--
--
--File: libc.info, Node: Mutexes, Next: Condition Variables, Prev: Cleanup Handlers, Up: POSIX Threads
--
--Mutexes
--=======
--
-- A mutex is a MUTual EXclusion device, and is useful for protecting
--shared data structures from concurrent modifications, and implementing
--critical sections and monitors.
--
-- A mutex has two possible states: unlocked (not owned by any thread),
--and locked (owned by one thread). A mutex can never be owned by two
--different threads simultaneously. A thread attempting to lock a mutex
--that is already locked by another thread is suspended until the owning
--thread unlocks the mutex first.
--
-- None of the mutex functions is a cancellation point, not even
--`pthread_mutex_lock', in spite of the fact that it can suspend a thread
--for arbitrary durations. This way, the status of mutexes at
--cancellation points is predictable, allowing cancellation handlers to
--unlock precisely those mutexes that need to be unlocked before the
--thread stops executing. Consequently, threads using deferred
--cancellation should never hold a mutex for extended periods of time.
--
-- It is not safe to call mutex functions from a signal handler. In
--particular, calling `pthread_mutex_lock' or `pthread_mutex_unlock' from
--a signal handler may deadlock the calling thread.
--
-- - Function: int pthread_mutex_init (pthread_mutex_t *MUTEX, const
-- pthread_mutexattr_t *MUTEXATTR)
-- `pthread_mutex_init' initializes the mutex object pointed to by
-- MUTEX according to the mutex attributes specified in MUTEXATTR.
-- If MUTEXATTR is `NULL', default attributes are used instead.
--
-- The LinuxThreads implementation supports only one mutex attribute,
-- the MUTEX TYPE, which is either "fast", "recursive", or "error
-- checking". The type of a mutex determines whether it can be locked
-- again by a thread that already owns it. The default type is
-- "fast".
--
-- Variables of type `pthread_mutex_t' can also be initialized
-- statically, using the constants `PTHREAD_MUTEX_INITIALIZER' (for
-- timed mutexes), `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' (for
-- recursive mutexes), `PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' (for
-- fast mutexes(, and `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' (for
-- error checking mutexes).
--
-- `pthread_mutex_init' always returns 0.
--
-- - Function: int pthread_mutex_lock (pthread_mutex_t *mutex))
-- `pthread_mutex_lock' locks the given mutex. If the mutex is
-- currently unlocked, it becomes locked and owned by the calling
-- thread, and `pthread_mutex_lock' returns immediately. If the mutex
-- is already locked by another thread, `pthread_mutex_lock' suspends
-- the calling thread until the mutex is unlocked.
--
-- If the mutex is already locked by the calling thread, the behavior
-- of `pthread_mutex_lock' depends on the type of the mutex. If the
-- mutex is of the "fast" type, the calling thread is suspended. It
-- will remain suspended forever, because no other thread can unlock
-- the mutex. If the mutex is of the "error checking" type,
-- `pthread_mutex_lock' returns immediately with the error code
-- `EDEADLK'. If the mutex is of the "recursive" type,
-- `pthread_mutex_lock' succeeds and returns immediately, recording
-- the number of times the calling thread has locked the mutex. An
-- equal number of `pthread_mutex_unlock' operations must be
-- performed before the mutex returns to the unlocked state.
--
-- - Function: int pthread_mutex_trylock (pthread_mutex_t *MUTEX)
-- `pthread_mutex_trylock' behaves identically to
-- `pthread_mutex_lock', except that it does not block the calling
-- thread if the mutex is already locked by another thread (or by the
-- calling thread in the case of a "fast" mutex). Instead,
-- `pthread_mutex_trylock' returns immediately with the error code
-- `EBUSY'.
--
-- - Function: int pthread_mutex_timedlock (pthread_mutex_t *MUTEX, const
-- struct timespec *ABSTIME)
-- The `pthread_mutex_timedlock' is similar to the
-- `pthread_mutex_lock' function but instead of blocking for in
-- indefinite time if the mutex is locked by another thread, it
-- returns when the time specified in ABSTIME is reached.
--
-- This function can only be used on standard ("timed") and "error
-- checking" mutexes. It behaves just like `pthread_mutex_lock' for
-- all other types.
--
-- If the mutex is successfully locked, the function returns zero.
-- If the time specified in ABSTIME is reached without the mutex
-- being locked, `ETIMEDOUT' is returned.
--
-- This function was introduced in the POSIX.1d revision of the POSIX
-- standard.
--
-- - Function: int pthread_mutex_unlock (pthread_mutex_t *MUTEX)
-- `pthread_mutex_unlock' unlocks the given mutex. The mutex is
-- assumed to be locked and owned by the calling thread on entrance to
-- `pthread_mutex_unlock'. If the mutex is of the "fast" type,
-- `pthread_mutex_unlock' always returns it to the unlocked state. If
-- it is of the "recursive" type, it decrements the locking count of
-- the mutex (number of `pthread_mutex_lock' operations performed on
-- it by the calling thread), and only when this count reaches zero
-- is the mutex actually unlocked.
--
-- On "error checking" mutexes, `pthread_mutex_unlock' actually
-- checks at run-time that the mutex is locked on entrance, and that
-- it was locked by the same thread that is now calling
-- `pthread_mutex_unlock'. If these conditions are not met,
-- `pthread_mutex_unlock' returns `EPERM', and the mutex remains
-- unchanged. "Fast" and "recursive" mutexes perform no such checks,
-- thus allowing a locked mutex to be unlocked by a thread other than
-- its owner. This is non-portable behavior and must not be relied
-- upon.
--
-- - Function: int pthread_mutex_destroy (pthread_mutex_t *MUTEX)
-- `pthread_mutex_destroy' destroys a mutex object, freeing the
-- resources it might hold. The mutex must be unlocked on entrance.
-- In the LinuxThreads implementation, no resources are associated
-- with mutex objects, thus `pthread_mutex_destroy' actually does
-- nothing except checking that the mutex is unlocked.
--
-- If the mutex is locked by some thread, `pthread_mutex_destroy'
-- returns `EBUSY'. Otherwise it returns 0.
--
-- If any of the above functions (except `pthread_mutex_init') is
--applied to an uninitialized mutex, they will simply return `EINVAL' and
--do nothing.
--
-- A shared global variable X can be protected by a mutex as follows:
--
-- int x;
-- pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
--
-- All accesses and modifications to X should be bracketed by calls to
--`pthread_mutex_lock' and `pthread_mutex_unlock' as follows:
--
-- pthread_mutex_lock(&mut);
-- /* operate on x */
-- pthread_mutex_unlock(&mut);
--
-- Mutex attributes can be specified at mutex creation time, by passing
--a mutex attribute object as second argument to `pthread_mutex_init'.
--Passing `NULL' is equivalent to passing a mutex attribute object with
--all attributes set to their default values.
--
-- - Function: int pthread_mutexattr_init (pthread_mutexattr_t *ATTR)
-- `pthread_mutexattr_init' initializes the mutex attribute object
-- ATTR and fills it with default values for the attributes.
--
-- This function always returns 0.
--
-- - Function: int pthread_mutexattr_destroy (pthread_mutexattr_t *ATTR)
-- `pthread_mutexattr_destroy' destroys a mutex attribute object,
-- which must not be reused until it is reinitialized.
-- `pthread_mutexattr_destroy' does nothing in the LinuxThreads
-- implementation.
--
-- This function always returns 0.
--
-- LinuxThreads supports only one mutex attribute: the mutex type,
--which is either `PTHREAD_MUTEX_ADAPTIVE_NP' for "fast" mutexes,
--`PTHREAD_MUTEX_RECURSIVE_NP' for "recursive" mutexes,
--`PTHREAD_MUTEX_TIMED_NP' for "timed" mutexes, or
--`PTHREAD_MUTEX_ERRORCHECK_NP' for "error checking" mutexes. As the
--`NP' suffix indicates, this is a non-portable extension to the POSIX
--standard and should not be employed in portable programs.
--
-- The mutex type determines what happens if a thread attempts to lock a
--mutex it already owns with `pthread_mutex_lock'. If the mutex is of the
--"fast" type, `pthread_mutex_lock' simply suspends the calling thread
--forever. If the mutex is of the "error checking" type,
--`pthread_mutex_lock' returns immediately with the error code `EDEADLK'.
--If the mutex is of the "recursive" type, the call to
--`pthread_mutex_lock' returns immediately with a success return code.
--The number of times the thread owning the mutex has locked it is
--recorded in the mutex. The owning thread must call
--`pthread_mutex_unlock' the same number of times before the mutex
--returns to the unlocked state.
--
-- The default mutex type is "timed", that is, `PTHREAD_MUTEX_TIMED_NP'.
--
-- - Function: int pthread_mutexattr_settype (pthread_mutexattr_t *ATTR,
-- int TYPE)
-- `pthread_mutexattr_settype' sets the mutex type attribute in ATTR
-- to the value specified by TYPE.
--
-- If TYPE is not `PTHREAD_MUTEX_ADAPTIVE_NP',
-- `PTHREAD_MUTEX_RECURSIVE_NP', `PTHREAD_MUTEX_TIMED_NP', or
-- `PTHREAD_MUTEX_ERRORCHECK_NP', this function will return `EINVAL'
-- and leave ATTR unchanged.
--
-- The standard Unix98 identifiers `PTHREAD_MUTEX_DEFAULT',
-- `PTHREAD_MUTEX_NORMAL', `PTHREAD_MUTEX_RECURSIVE', and
-- `PTHREAD_MUTEX_ERRORCHECK' are also permitted.
--
--
-- - Function: int pthread_mutexattr_gettype (const pthread_mutexattr_t
-- *ATTR, int *TYPE)
-- `pthread_mutexattr_gettype' retrieves the current value of the
-- mutex type attribute in ATTR and stores it in the location pointed
-- to by TYPE.
--
-- This function always returns 0.
--
--
--File: libc.info, Node: Condition Variables, Next: POSIX Semaphores, Prev: Mutexes, Up: POSIX Threads
--
--Condition Variables
--===================
--
-- A condition (short for "condition variable") is a synchronization
--device that allows threads to suspend execution until some predicate on
--shared data is satisfied. The basic operations on conditions are: signal
--the condition (when the predicate becomes true), and wait for the
--condition, suspending the thread execution until another thread signals
--the condition.
--
-- A condition variable must always be associated with a mutex, to avoid
--the race condition where a thread prepares to wait on a condition
--variable and another thread signals the condition just before the first
--thread actually waits on it.
--
-- - Function: int pthread_cond_init (pthread_cond_t *COND,
-- pthread_condattr_t *cond_ATTR)
-- `pthread_cond_init' initializes the condition variable COND, using
-- the condition attributes specified in COND_ATTR, or default
-- attributes if COND_ATTR is `NULL'. The LinuxThreads implementation
-- supports no attributes for conditions, hence the COND_ATTR
-- parameter is actually ignored.
--
-- Variables of type `pthread_cond_t' can also be initialized
-- statically, using the constant `PTHREAD_COND_INITIALIZER'.
--
-- This function always returns 0.
--
-- - Function: int pthread_cond_signal (pthread_cond_t *COND)
-- `pthread_cond_signal' restarts one of the threads that are waiting
-- on the condition variable COND. If no threads are waiting on COND,
-- nothing happens. If several threads are waiting on COND, exactly
-- one is restarted, but it is not specified which.
--
-- This function always returns 0.
--
-- - Function: int pthread_cond_broadcast (pthread_cond_t *COND)
-- `pthread_cond_broadcast' restarts all the threads that are waiting
-- on the condition variable COND. Nothing happens if no threads are
-- waiting on COND.
--
-- This function always returns 0.
--
-- - Function: int pthread_cond_wait (pthread_cond_t *COND,
-- pthread_mutex_t *MUTEX)
-- `pthread_cond_wait' atomically unlocks the MUTEX (as per
-- `pthread_unlock_mutex') and waits for the condition variable COND
-- to be signaled. The thread execution is suspended and does not
-- consume any CPU time until the condition variable is signaled. The
-- MUTEX must be locked by the calling thread on entrance to
-- `pthread_cond_wait'. Before returning to the calling thread,
-- `pthread_cond_wait' re-acquires MUTEX (as per
-- `pthread_lock_mutex').
--
-- Unlocking the mutex and suspending on the condition variable is
-- done atomically. Thus, if all threads always acquire the mutex
-- before signaling the condition, this guarantees that the condition
-- cannot be signaled (and thus ignored) between the time a thread
-- locks the mutex and the time it waits on the condition variable.
--
-- This function always returns 0.
--
-- - Function: int pthread_cond_timedwait (pthread_cond_t *COND,
-- pthread_mutex_t *MUTEX, const struct timespec *ABSTIME)
-- `pthread_cond_timedwait' atomically unlocks MUTEX and waits on
-- COND, as `pthread_cond_wait' does, but it also bounds the duration
-- of the wait. If COND has not been signaled before time ABSTIME,
-- the mutex MUTEX is re-acquired and `pthread_cond_timedwait'
-- returns the error code `ETIMEDOUT'. The wait can also be
-- interrupted by a signal; in that case `pthread_cond_timedwait'
-- returns `EINTR'.
--
-- The ABSTIME parameter specifies an absolute time, with the same
-- origin as `time' and `gettimeofday': an ABSTIME of 0 corresponds
-- to 00:00:00 GMT, January 1, 1970.
--
-- - Function: int pthread_cond_destroy (pthread_cond_t *COND)
-- `pthread_cond_destroy' destroys the condition variable COND,
-- freeing the resources it might hold. If any threads are waiting
-- on the condition variable, `pthread_cond_destroy' leaves COND
-- untouched and returns `EBUSY'. Otherwise it returns 0, and COND
-- must not be used again until it is reinitialized.
--
-- In the LinuxThreads implementation, no resources are associated
-- with condition variables, so `pthread_cond_destroy' actually does
-- nothing.
--
-- `pthread_cond_wait' and `pthread_cond_timedwait' are cancellation
--points. If a thread is canceled while suspended in one of these
--functions, the thread immediately resumes execution, relocks the mutex
--specified by MUTEX, and finally executes the cancellation.
--Consequently, cleanup handlers are assured that MUTEX is locked when
--they are called.
--
-- It is not safe to call the condition variable functions from a signal
--handler. In particular, calling `pthread_cond_signal' or
--`pthread_cond_broadcast' from a signal handler may deadlock the calling
--thread.
--
-- Consider two shared variables X and Y, protected by the mutex MUT,
--and a condition variable COND that is to be signaled whenever X becomes
--greater than Y.
--
-- int x,y;
-- pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
-- pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
--
-- Waiting until X is greater than Y is performed as follows:
--
-- pthread_mutex_lock(&mut);
-- while (x <= y) {
-- pthread_cond_wait(&cond, &mut);
-- }
-- /* operate on x and y */
-- pthread_mutex_unlock(&mut);
--
-- Modifications on X and Y that may cause X to become greater than Y
--should signal the condition if needed:
--
-- pthread_mutex_lock(&mut);
-- /* modify x and y */
-- if (x > y) pthread_cond_broadcast(&cond);
-- pthread_mutex_unlock(&mut);
--
-- If it can be proved that at most one waiting thread needs to be waken
--up (for instance, if there are only two threads communicating through X
--and Y), `pthread_cond_signal' can be used as a slightly more efficient
--alternative to `pthread_cond_broadcast'. In doubt, use
--`pthread_cond_broadcast'.
--
-- To wait for X to becomes greater than Y with a timeout of 5 seconds,
--do:
--
-- struct timeval now;
-- struct timespec timeout;
-- int retcode;
--
-- pthread_mutex_lock(&mut);
-- gettimeofday(&now);
-- timeout.tv_sec = now.tv_sec + 5;
-- timeout.tv_nsec = now.tv_usec * 1000;
-- retcode = 0;
-- while (x <= y && retcode != ETIMEDOUT) {
-- retcode = pthread_cond_timedwait(&cond, &mut, &timeout);
-- }
-- if (retcode == ETIMEDOUT) {
-- /* timeout occurred */
-- } else {
-- /* operate on x and y */
-- }
-- pthread_mutex_unlock(&mut);
--
-- Condition attributes can be specified at condition creation time, by
--passing a condition attribute object as second argument to
--`pthread_cond_init'. Passing `NULL' is equivalent to passing a
--condition attribute object with all attributes set to their default
--values.
--
-- The LinuxThreads implementation supports no attributes for
--conditions. The functions on condition attributes are included only for
--compliance with the POSIX standard.
--
-- - Function: int pthread_condattr_init (pthread_condattr_t *ATTR)
-- - Function: int pthread_condattr_destroy (pthread_condattr_t *ATTR)
-- `pthread_condattr_init' initializes the condition attribute object
-- ATTR and fills it with default values for the attributes.
-- `pthread_condattr_destroy' destroys the condition attribute object
-- ATTR.
--
-- Both functions do nothing in the LinuxThreads implementation.
--
-- `pthread_condattr_init' and `pthread_condattr_destroy' always
-- return 0.
--
--
--File: libc.info, Node: POSIX Semaphores, Next: Thread-Specific Data, Prev: Condition Variables, Up: POSIX Threads
--
--POSIX Semaphores
--================
--
-- Semaphores are counters for resources shared between threads. The
--basic operations on semaphores are: increment the counter atomically,
--and wait until the counter is non-null and decrement it atomically.
--
-- Semaphores have a maximum value past which they cannot be
--incremented. The macro `SEM_VALUE_MAX' is defined to be this maximum
--value. In the GNU C library, `SEM_VALUE_MAX' is equal to `INT_MAX'
--(*note Range of Type::), but it may be much smaller on other systems.
--
-- The pthreads library implements POSIX 1003.1b semaphores. These
--should not be confused with System V semaphores (`ipc', `semctl' and
--`semop').
--
-- All the semaphore functions and macros are defined in `semaphore.h'.
--
-- - Function: int sem_init (sem_t *SEM, int PSHARED, unsigned int VALUE)
-- `sem_init' initializes the semaphore object pointed to by SEM. The
-- count associated with the semaphore is set initially to VALUE. The
-- PSHARED argument indicates whether the semaphore is local to the
-- current process (PSHARED is zero) or is to be shared between
-- several processes (PSHARED is not zero).
--
-- On success `sem_init' returns 0. On failure it returns -1 and sets
-- ERRNO to one of the following values:
--
-- `EINVAL'
-- VALUE exceeds the maximal counter value `SEM_VALUE_MAX'
--
-- `ENOSYS'
-- PSHARED is not zero. LinuxThreads currently does not support
-- process-shared semaphores. (This will eventually change.)
--
-- - Function: int sem_destroy (sem_t * SEM)
-- `sem_destroy' destroys a semaphore object, freeing the resources it
-- might hold. If any threads are waiting on the semaphore when
-- `sem_destroy' is called, it fails and sets ERRNO to `EBUSY'.
--
-- In the LinuxThreads implementation, no resources are associated
-- with semaphore objects, thus `sem_destroy' actually does nothing
-- except checking that no thread is waiting on the semaphore. This
-- will change when process-shared semaphores are implemented.
--
-- - Function: int sem_wait (sem_t * SEM)
-- `sem_wait' suspends the calling thread until the semaphore pointed
-- to by SEM has non-zero count. It then atomically decreases the
-- semaphore count.
--
-- `sem_wait' is a cancellation point. It always returns 0.
--
-- - Function: int sem_trywait (sem_t * SEM)
-- `sem_trywait' is a non-blocking variant of `sem_wait'. If the
-- semaphore pointed to by SEM has non-zero count, the count is
-- atomically decreased and `sem_trywait' immediately returns 0. If
-- the semaphore count is zero, `sem_trywait' immediately returns -1
-- and sets errno to `EAGAIN'.
--
-- - Function: int sem_post (sem_t * SEM)
-- `sem_post' atomically increases the count of the semaphore pointed
-- to by SEM. This function never blocks.
--
-- On processors supporting atomic compare-and-swap (Intel 486,
-- Pentium and later, Alpha, PowerPC, MIPS II, Motorola 68k,
-- Ultrasparc), the `sem_post' function is can safely be called from
-- signal handlers. This is the only thread synchronization function
-- provided by POSIX threads that is async-signal safe. On the Intel
-- 386 and earlier Sparc chips, the current LinuxThreads
-- implementation of `sem_post' is not async-signal safe, because the
-- hardware does not support the required atomic operations.
--
-- `sem_post' always succeeds and returns 0, unless the semaphore
-- count would exceed `SEM_VALUE_MAX' after being incremented. In
-- that case `sem_post' returns -1 and sets ERRNO to `EINVAL'. The
-- semaphore count is left unchanged.
--
-- - Function: int sem_getvalue (sem_t * SEM, int * SVAL)
-- `sem_getvalue' stores in the location pointed to by SVAL the
-- current count of the semaphore SEM. It always returns 0.
--
--
--File: libc.info, Node: Thread-Specific Data, Next: Threads and Signal Handling, Prev: POSIX Semaphores, Up: POSIX Threads
--
--Thread-Specific Data
--====================
--
-- Programs often need global or static variables that have different
--values in different threads. Since threads share one memory space, this
--cannot be achieved with regular variables. Thread-specific data is the
--POSIX threads answer to this need.
--
-- Each thread possesses a private memory block, the thread-specific
--data area, or TSD area for short. This area is indexed by TSD keys. The
--TSD area associates values of type `void *' to TSD keys. TSD keys are
--common to all threads, but the value associated with a given TSD key can
--be different in each thread.
--
-- For concreteness, the TSD areas can be viewed as arrays of `void *'
--pointers, TSD keys as integer indices into these arrays, and the value
--of a TSD key as the value of the corresponding array element in the
--calling thread.
--
-- When a thread is created, its TSD area initially associates `NULL'
--with all keys.
--
-- - Function: int pthread_key_create (pthread_key_t *KEY, void
-- (*destr_function) (void *))
-- `pthread_key_create' allocates a new TSD key. The key is stored in
-- the location pointed to by KEY. There is a limit of
-- `PTHREAD_KEYS_MAX' on the number of keys allocated at a given
-- time. The value initially associated with the returned key is
-- `NULL' in all currently executing threads.
--
-- The DESTR_FUNCTION argument, if not `NULL', specifies a destructor
-- function associated with the key. When a thread terminates via
-- `pthread_exit' or by cancellation, DESTR_FUNCTION is called on the
-- value associated with the key in that thread. The DESTR_FUNCTION
-- is not called if a key is deleted with `pthread_key_delete' or a
-- value is changed with `pthread_setspecific'. The order in which
-- destructor functions are called at thread termination time is
-- unspecified.
--
-- Before the destructor function is called, the `NULL' value is
-- associated with the key in the current thread. A destructor
-- function might, however, re-associate non-`NULL' values to that
-- key or some other key. To deal with this, if after all the
-- destructors have been called for all non-`NULL' values, there are
-- still some non-`NULL' values with associated destructors, then the
-- process is repeated. The LinuxThreads implementation stops the
-- process after `PTHREAD_DESTRUCTOR_ITERATIONS' iterations, even if
-- some non-`NULL' values with associated descriptors remain. Other
-- implementations may loop indefinitely.
--
-- `pthread_key_create' returns 0 unless `PTHREAD_KEYS_MAX' keys have
-- already been allocated, in which case it fails and returns
-- `EAGAIN'.
--
-- - Function: int pthread_key_delete (pthread_key_t KEY)
-- `pthread_key_delete' deallocates a TSD key. It does not check
-- whether non-`NULL' values are associated with that key in the
-- currently executing threads, nor call the destructor function
-- associated with the key.
--
-- If there is no such key KEY, it returns `EINVAL'. Otherwise it
-- returns 0.
--
-- - Function: int pthread_setspecific (pthread_key_t KEY, const void
-- *POINTER)
-- `pthread_setspecific' changes the value associated with KEY in the
-- calling thread, storing the given POINTER instead.
--
-- If there is no such key KEY, it returns `EINVAL'. Otherwise it
-- returns 0.
--
-- - Function: void * pthread_getspecific (pthread_key_t KEY)
-- `pthread_getspecific' returns the value currently associated with
-- KEY in the calling thread.
--
-- If there is no such key KEY, it returns `NULL'.
--
-- The following code fragment allocates a thread-specific array of 100
--characters, with automatic reclaimation at thread exit:
--
-- /* Key for the thread-specific buffer */
-- static pthread_key_t buffer_key;
--
-- /* Once-only initialisation of the key */
-- static pthread_once_t buffer_key_once = PTHREAD_ONCE_INIT;
--
-- /* Allocate the thread-specific buffer */
-- void buffer_alloc(void)
-- {
-- pthread_once(&buffer_key_once, buffer_key_alloc);
-- pthread_setspecific(buffer_key, malloc(100));
-- }
--
-- /* Return the thread-specific buffer */
-- char * get_buffer(void)
-- {
-- return (char *) pthread_getspecific(buffer_key);
-- }
--
-- /* Allocate the key */
-- static void buffer_key_alloc()
-- {
-- pthread_key_create(&buffer_key, buffer_destroy);
-- }
--
-- /* Free the thread-specific buffer */
-- static void buffer_destroy(void * buf)
-- {
-- free(buf);
-- }
--
--
--File: libc.info, Node: Threads and Signal Handling, Next: Threads and Fork, Prev: Thread-Specific Data, Up: POSIX Threads
--
--Threads and Signal Handling
--===========================
--
-- - Function: int pthread_sigmask (int HOW, const sigset_t *NEWMASK,
-- sigset_t *OLDMASK)
-- `pthread_sigmask' changes the signal mask for the calling thread as
-- described by the HOW and NEWMASK arguments. If OLDMASK is not
-- `NULL', the previous signal mask is stored in the location pointed
-- to by OLDMASK.
--
-- The meaning of the HOW and NEWMASK arguments is the same as for
-- `sigprocmask'. If HOW is `SIG_SETMASK', the signal mask is set to
-- NEWMASK. If HOW is `SIG_BLOCK', the signals specified to NEWMASK
-- are added to the current signal mask. If HOW is `SIG_UNBLOCK',
-- the signals specified to NEWMASK are removed from the current
-- signal mask.
--
-- Recall that signal masks are set on a per-thread basis, but signal
-- actions and signal handlers, as set with `sigaction', are shared
-- between all threads.
--
-- The `pthread_sigmask' function returns 0 on success, and one of the
-- following error codes on error:
-- `EINVAL'
-- HOW is not one of `SIG_SETMASK', `SIG_BLOCK', or `SIG_UNBLOCK'
--
-- `EFAULT'
-- NEWMASK or OLDMASK point to invalid addresses
--
-- - Function: int pthread_kill (pthread_t THREAD, int SIGNO)
-- `pthread_kill' sends signal number SIGNO to the thread THREAD.
-- The signal is delivered and handled as described in *Note Signal
-- Handling::.
--
-- `pthread_kill' returns 0 on success, one of the following error
-- codes on error:
-- `EINVAL'
-- SIGNO is not a valid signal number
--
-- `ESRCH'
-- The thread THREAD does not exist (e.g. it has already
-- terminated)
--
-- - Function: int sigwait (const sigset_t *SET, int *SIG)
-- `sigwait' suspends the calling thread until one of the signals in
-- SET is delivered to the calling thread. It then stores the number
-- of the signal received in the location pointed to by SIG and
-- returns. The signals in SET must be blocked and not ignored on
-- entrance to `sigwait'. If the delivered signal has a signal handler
-- function attached, that function is _not_ called.
--
-- `sigwait' is a cancellation point. It always returns 0.
--
-- For `sigwait' to work reliably, the signals being waited for must be
--blocked in all threads, not only in the calling thread, since otherwise
--the POSIX semantics for signal delivery do not guarantee that it's the
--thread doing the `sigwait' that will receive the signal. The best way
--to achieve this is block those signals before any threads are created,
--and never unblock them in the program other than by calling `sigwait'.
--
-- Signal handling in LinuxThreads departs significantly from the POSIX
--standard. According to the standard, "asynchronous" (external) signals
--are addressed to the whole process (the collection of all threads),
--which then delivers them to one particular thread. The thread that
--actually receives the signal is any thread that does not currently block
--the signal.
--
-- In LinuxThreads, each thread is actually a kernel process with its
--own PID, so external signals are always directed to one particular
--thread. If, for instance, another thread is blocked in `sigwait' on
--that signal, it will not be restarted.
--
-- The LinuxThreads implementation of `sigwait' installs dummy signal
--handlers for the signals in SET for the duration of the wait. Since
--signal handlers are shared between all threads, other threads must not
--attach their own signal handlers to these signals, or alternatively
--they should all block these signals (which is recommended anyway).
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-51 glibc-2.3.2-200304020432/manual/libc.info-51
---- glibc-2.3.2/manual/libc.info-51 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-51 Thu Jan 1 01:00:00 1970
-@@ -1,1113 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Threads and Fork, Next: Streams and Fork, Prev: Threads and Signal Handling, Up: POSIX Threads
--
--Threads and Fork
--================
--
-- It's not intuitively obvious what should happen when a
--multi-threaded POSIX process calls `fork'. Not only are the semantics
--tricky, but you may need to write code that does the right thing at
--fork time even if that code doesn't use the `fork' function. Moreover,
--you need to be aware of interaction between `fork' and some library
--features like `pthread_once' and stdio streams.
--
-- When `fork' is called by one of the threads of a process, it creates
--a new process which is copy of the calling process. Effectively, in
--addition to copying certain system objects, the function takes a
--snapshot of the memory areas of the parent process, and creates
--identical areas in the child. To make matters more complicated, with
--threads it's possible for two or more threads to concurrently call fork
--to create two or more child processes.
--
-- The child process has a copy of the address space of the parent, but
--it does not inherit any of its threads. Execution of the child process
--is carried out by a new thread which returns from `fork' function with
--a return value of zero; it is the only thread in the child process.
--Because threads are not inherited across fork, issues arise. At the
--time of the call to `fork', threads in the parent process other than
--the one calling `fork' may have been executing critical regions of
--code. As a result, the child process may get a copy of objects that
--are not in a well-defined state. This potential problem affects all
--components of the program.
--
-- Any program component which will continue being used in a child
--process must correctly handle its state during `fork'. For this
--purpose, the POSIX interface provides the special function
--`pthread_atfork' for installing pointers to handler functions which are
--called from within `fork'.
--
-- - Function: int pthread_atfork (void (*PREPARE)(void), void
-- (*PARENT)(void), void (*CHILD)(void))
-- `pthread_atfork' registers handler functions to be called just
-- before and just after a new process is created with `fork'. The
-- PREPARE handler will be called from the parent process, just
-- before the new process is created. The PARENT handler will be
-- called from the parent process, just before `fork' returns. The
-- CHILD handler will be called from the child process, just before
-- `fork' returns.
--
-- `pthread_atfork' returns 0 on success and a non-zero error code on
-- error.
--
-- One or more of the three handlers PREPARE, PARENT and CHILD can be
-- given as `NULL', meaning that no handler needs to be called at the
-- corresponding point.
--
-- `pthread_atfork' can be called several times to install several
-- sets of handlers. At `fork' time, the PREPARE handlers are called
-- in LIFO order (last added with `pthread_atfork', first called
-- before `fork'), while the PARENT and CHILD handlers are called in
-- FIFO order (first added, first called).
--
-- If there is insufficient memory available to register the handlers,
-- `pthread_atfork' fails and returns `ENOMEM'. Otherwise it returns
-- 0.
--
-- The functions `fork' and `pthread_atfork' must not be regarded as
-- reentrant from the context of the handlers. That is to say, if a
-- `pthread_atfork' handler invoked from within `fork' calls
-- `pthread_atfork' or `fork', the behavior is undefined.
--
-- Registering a triplet of handlers is an atomic operation with
-- respect to fork. If new handlers are registered at about the same
-- time as a fork occurs, either all three handlers will be called,
-- or none of them will be called.
--
-- The handlers are inherited by the child process, and there is no
-- way to remove them, short of using `exec' to load a new pocess
-- image.
--
--
-- To understand the purpose of `pthread_atfork', recall that `fork'
--duplicates the whole memory space, including mutexes in their current
--locking state, but only the calling thread: other threads are not
--running in the child process. The mutexes are not usable after the
--`fork' and must be initialized with `pthread_mutex_init' in the child
--process. This is a limitation of the current implementation and might
--or might not be present in future versions.
--
-- To avoid this, install handlers with `pthread_atfork' as follows:
--have the PREPARE handler lock the mutexes (in locking order), and the
--PARENT handler unlock the mutexes. The CHILD handler should reset the
--mutexes using `pthread_mutex_init', as well as any other
--synchronization objects such as condition variables.
--
-- Locking the global mutexes before the fork ensures that all other
--threads are locked out of the critical regions of code protected by
--those mutexes. Thus when `fork' takes a snapshot of the parent's
--address space, that snapshot will copy valid, stable data. Resetting
--the synchronization objects in the child process will ensure they are
--properly cleansed of any artifacts from the threading subsystem of the
--parent process. For example, a mutex may inherit a wait queue of
--threads waiting for the lock; this wait queue makes no sense in the
--child process. Initializing the mutex takes care of this.
--
--
--File: libc.info, Node: Streams and Fork, Next: Miscellaneous Thread Functions, Prev: Threads and Fork, Up: POSIX Threads
--
--Streams and Fork
--================
--
-- The GNU standard I/O library has an internal mutex which guards the
--internal linked list of all standard C FILE objects. This mutex is
--properly taken care of during `fork' so that the child receives an
--intact copy of the list. This allows the `fopen' function, and related
--stream-creating functions, to work correctly in the child process,
--since these functions need to insert into the list.
--
-- However, the individual stream locks are not completely taken care
--of. Thus unless the multithreaded application takes special
--precautions in its use of `fork', the child process might not be able
--to safely use the streams that it inherited from the parent. In
--general, for any given open stream in the parent that is to be used by
--the child process, the application must ensure that that stream is not
--in use by another thread when `fork' is called. Otherwise an
--inconsistent copy of the stream object be produced. An easy way to
--ensure this is to use `flockfile' to lock the stream prior to calling
--`fork' and then unlock it with `funlockfile' inside the parent process,
--provided that the parent's threads properly honor these locks. Nothing
--special needs to be done in the child process, since the library
--internally resets all stream locks.
--
-- Note that the stream locks are not shared between the parent and
--child. For example, even if you ensure that, say, the stream `stdout'
--is properly treated and can be safely used in the child, the stream
--locks do not provide an exclusion mechanism between the parent and
--child. If both processes write to `stdout', strangely interleaved
--output may result regardless of the explicit use of `flockfile' or
--implicit locks.
--
-- Also note that these provisions are a GNU extension; other systems
--might not provide any way for streams to be used in the child of a
--multithreaded process. POSIX requires that such a child process
--confines itself to calling only asynchronous safe functions, which
--excludes much of the library, including standard I/O.
--
--
--File: libc.info, Node: Miscellaneous Thread Functions, Prev: Streams and Fork, Up: POSIX Threads
--
--Miscellaneous Thread Functions
--==============================
--
-- - Function: pthread_t pthread_self (VOID)
-- `pthread_self' returns the thread identifier for the calling
-- thread.
--
-- - Function: int pthread_equal (pthread_t thread1, pthread_t thread2)
-- `pthread_equal' determines if two thread identifiers refer to the
-- same thread.
--
-- A non-zero value is returned if THREAD1 and THREAD2 refer to the
-- same thread. Otherwise, 0 is returned.
--
-- - Function: int pthread_detach (pthread_t TH)
-- `pthread_detach' puts the thread TH in the detached state. This
-- guarantees that the memory resources consumed by TH will be freed
-- immediately when TH terminates. However, this prevents other
-- threads from synchronizing on the termination of TH using
-- `pthread_join'.
--
-- A thread can be created initially in the detached state, using the
-- `detachstate' attribute to `pthread_create'. In contrast,
-- `pthread_detach' applies to threads created in the joinable state,
-- and which need to be put in the detached state later.
--
-- After `pthread_detach' completes, subsequent attempts to perform
-- `pthread_join' on TH will fail. If another thread is already
-- joining the thread TH at the time `pthread_detach' is called,
-- `pthread_detach' does nothing and leaves TH in the joinable state.
--
-- On success, 0 is returned. On error, one of the following codes is
-- returned:
-- `ESRCH'
-- No thread could be found corresponding to that specified by TH
--
-- `EINVAL'
-- The thread TH is already in the detached state
--
-- - Function: void pthread_kill_other_threads_np (VOID)
-- `pthread_kill_other_threads_np' is a non-portable LinuxThreads
-- extension. It causes all threads in the program to terminate
-- immediately, except the calling thread which proceeds normally. It
-- is intended to be called just before a thread calls one of the
-- `exec' functions, e.g. `execve'.
--
-- Termination of the other threads is not performed through
-- `pthread_cancel' and completely bypasses the cancellation
-- mechanism. Hence, the current settings for cancellation state and
-- cancellation type are ignored, and the cleanup handlers are not
-- executed in the terminated threads.
--
-- According to POSIX 1003.1c, a successful `exec*' in one of the
-- threads should automatically terminate all other threads in the
-- program. This behavior is not yet implemented in LinuxThreads.
-- Calling `pthread_kill_other_threads_np' before `exec*' achieves
-- much of the same behavior, except that if `exec*' ultimately
-- fails, then all other threads are already killed.
--
-- - Function: int pthread_once (pthread_once_t *once_CONTROL, void
-- (*INIT_ROUTINE) (void))
-- The purpose of `pthread_once' is to ensure that a piece of
-- initialization code is executed at most once. The ONCE_CONTROL
-- argument points to a static or extern variable statically
-- initialized to `PTHREAD_ONCE_INIT'.
--
-- The first time `pthread_once' is called with a given ONCE_CONTROL
-- argument, it calls INIT_ROUTINE with no argument and changes the
-- value of the ONCE_CONTROL variable to record that initialization
-- has been performed. Subsequent calls to `pthread_once' with the
-- same `once_control' argument do nothing.
--
-- If a thread is cancelled while executing INIT_ROUTINE the state of
-- the ONCE_CONTROL variable is reset so that a future call to
-- `pthread_once' will call the routine again.
--
-- If the process forks while one or more threads are executing
-- `pthread_once' initialization routines, the states of their
-- respective ONCE_CONTROL variables will appear to be reset in the
-- child process so that if the child calls `pthread_once', the
-- routines will be executed.
--
-- `pthread_once' always returns 0.
--
-- - Function: int pthread_setschedparam (pthread_t target_THREAD, int
-- POLICY, const struct sched_param *PARAM)
-- `pthread_setschedparam' sets the scheduling parameters for the
-- thread TARGET_THREAD as indicated by POLICY and PARAM. POLICY can
-- be either `SCHED_OTHER' (regular, non-realtime scheduling),
-- `SCHED_RR' (realtime, round-robin) or `SCHED_FIFO' (realtime,
-- first-in first-out). PARAM specifies the scheduling priority for
-- the two realtime policies. See `sched_setpolicy' for more
-- information on scheduling policies.
--
-- The realtime scheduling policies `SCHED_RR' and `SCHED_FIFO' are
-- available only to processes with superuser privileges.
--
-- On success, `pthread_setschedparam' returns 0. On error it returns
-- one of the following codes:
-- `EINVAL'
-- POLICY is not one of `SCHED_OTHER', `SCHED_RR', `SCHED_FIFO',
-- or the priority value specified by PARAM is not valid for the
-- specified policy
--
-- `EPERM'
-- Realtime scheduling was requested but the calling process
-- does not have sufficient privileges.
--
-- `ESRCH'
-- The TARGET_THREAD is invalid or has already terminated
--
-- `EFAULT'
-- PARAM points outside the process memory space
--
-- - Function: int pthread_getschedparam (pthread_t target_THREAD, int
-- *POLICY, struct sched_param *PARAM)
-- `pthread_getschedparam' retrieves the scheduling policy and
-- scheduling parameters for the thread TARGET_THREAD and stores them
-- in the locations pointed to by POLICY and PARAM, respectively.
--
-- `pthread_getschedparam' returns 0 on success, or one of the
-- following error codes on failure:
-- `ESRCH'
-- The TARGET_THREAD is invalid or has already terminated.
--
-- `EFAULT'
-- POLICY or PARAM point outside the process memory space.
--
--
-- - Function: int pthread_setconcurrency (int LEVEL)
-- `pthread_setconcurrency' is unused in LinuxThreads due to the lack
-- of a mapping of user threads to kernel threads. It exists for
-- source compatibility. It does store the value LEVEL so that it
-- can be returned by a subsequent call to `pthread_getconcurrency'.
-- It takes no other action however.
--
-- - Function: int pthread_getconcurrency ()
-- `pthread_getconcurrency' is unused in LinuxThreads due to the lack
-- of a mapping of user threads to kernel threads. It exists for
-- source compatibility. However, it will return the value that was
-- set by the last call to `pthread_setconcurrency'.
--
--
--File: libc.info, Node: Language Features, Next: Library Summary, Prev: POSIX Threads, Up: Top
--
--C Language Facilities in the Library
--************************************
--
-- Some of the facilities implemented by the C library really should be
--thought of as parts of the C language itself. These facilities ought to
--be documented in the C Language Manual, not in the library manual; but
--since we don't have the language manual yet, and documentation for these
--features has been written, we are publishing it here.
--
--* Menu:
--
--* Consistency Checking:: Using `assert' to abort if
-- something ``impossible'' happens.
--* Variadic Functions:: Defining functions with varying numbers
-- of args.
--* Null Pointer Constant:: The macro `NULL'.
--* Important Data Types:: Data types for object sizes.
--* Data Type Measurements:: Parameters of data type representations.
--
--
--File: libc.info, Node: Consistency Checking, Next: Variadic Functions, Up: Language Features
--
--Explicitly Checking Internal Consistency
--========================================
--
-- When you're writing a program, it's often a good idea to put in
--checks at strategic places for "impossible" errors or violations of
--basic assumptions. These kinds of checks are helpful in debugging
--problems with the interfaces between different parts of the program,
--for example.
--
-- The `assert' macro, defined in the header file `assert.h', provides
--a convenient way to abort the program while printing a message about
--where in the program the error was detected.
--
-- Once you think your program is debugged, you can disable the error
--checks performed by the `assert' macro by recompiling with the macro
--`NDEBUG' defined. This means you don't actually have to change the
--program source code to disable these checks.
--
-- But disabling these consistency checks is undesirable unless they
--make the program significantly slower. All else being equal, more error
--checking is good no matter who is running the program. A wise user
--would rather have a program crash, visibly, than have it return nonsense
--without indicating anything might be wrong.
--
-- - Macro: void assert (int EXPRESSION)
-- Verify the programmer's belief that EXPRESSION is nonzero at this
-- point in the program.
--
-- If `NDEBUG' is not defined, `assert' tests the value of
-- EXPRESSION. If it is false (zero), `assert' aborts the program
-- (*note Aborting a Program::) after printing a message of the form:
--
-- `FILE':LINENUM: FUNCTION: Assertion `EXPRESSION' failed.
--
-- on the standard error stream `stderr' (*note Standard Streams::).
-- The filename and line number are taken from the C preprocessor
-- macros `__FILE__' and `__LINE__' and specify where the call to
-- `assert' was made. When using the GNU C compiler, the name of the
-- function which calls `assert' is taken from the built-in variable
-- `__PRETTY_FUNCTION__'; with older compilers, the function name and
-- following colon are omitted.
--
-- If the preprocessor macro `NDEBUG' is defined before `assert.h' is
-- included, the `assert' macro is defined to do absolutely nothing.
--
-- *Warning:* Even the argument expression EXPRESSION is not
-- evaluated if `NDEBUG' is in effect. So never use `assert' with
-- arguments that involve side effects. For example, `assert (++i >
-- 0);' is a bad idea, because `i' will not be incremented if
-- `NDEBUG' is defined.
--
-- Sometimes the "impossible" condition you want to check for is an
--error return from an operating system function. Then it is useful to
--display not only where the program crashes, but also what error was
--returned. The `assert_perror' macro makes this easy.
--
-- - Macro: void assert_perror (int ERRNUM)
-- Similar to `assert', but verifies that ERRNUM is zero.
--
-- If `NDEBUG' is not defined, `assert_perror' tests the value of
-- ERRNUM. If it is nonzero, `assert_perror' aborts the program
-- after printing a message of the form:
--
-- `FILE':LINENUM: FUNCTION: ERROR TEXT
--
-- on the standard error stream. The file name, line number, and
-- function name are as for `assert'. The error text is the result of
-- `strerror (ERRNUM)'. *Note Error Messages::.
--
-- Like `assert', if `NDEBUG' is defined before `assert.h' is
-- included, the `assert_perror' macro does absolutely nothing. It
-- does not evaluate the argument, so ERRNUM should not have any side
-- effects. It is best for ERRNUM to be just a simple variable
-- reference; often it will be `errno'.
--
-- This macro is a GNU extension.
--
-- *Usage note:* The `assert' facility is designed for detecting
--_internal inconsistency_; it is not suitable for reporting invalid
--input or improper usage by the _user_ of the program.
--
-- The information in the diagnostic messages printed by the `assert'
--and `assert_perror' macro is intended to help you, the programmer,
--track down the cause of a bug, but is not really useful for telling a
--user of your program why his or her input was invalid or why a command
--could not be carried out. What's more, your program should not abort
--when given invalid input, as `assert' would do--it should exit with
--nonzero status (*note Exit Status::) after printing its error messages,
--or perhaps read another command or move on to the next input file.
--
-- *Note Error Messages::, for information on printing error messages
--for problems that _do not_ represent bugs in the program.
--
--
--File: libc.info, Node: Variadic Functions, Next: Null Pointer Constant, Prev: Consistency Checking, Up: Language Features
--
--Variadic Functions
--==================
--
-- ISO C defines a syntax for declaring a function to take a variable
--number or type of arguments. (Such functions are referred to as
--"varargs functions" or "variadic functions".) However, the language
--itself provides no mechanism for such functions to access their
--non-required arguments; instead, you use the variable arguments macros
--defined in `stdarg.h'.
--
-- This section describes how to declare variadic functions, how to
--write them, and how to call them properly.
--
-- *Compatibility Note:* Many older C dialects provide a similar, but
--incompatible, mechanism for defining functions with variable numbers of
--arguments, using `varargs.h'.
--
--* Menu:
--
--* Why Variadic:: Reasons for making functions take
-- variable arguments.
--* How Variadic:: How to define and call variadic functions.
--* Variadic Example:: A complete example.
--
--
--File: libc.info, Node: Why Variadic, Next: How Variadic, Up: Variadic Functions
--
--Why Variadic Functions are Used
---------------------------------
--
-- Ordinary C functions take a fixed number of arguments. When you
--define a function, you specify the data type for each argument. Every
--call to the function should supply the expected number of arguments,
--with types that can be converted to the specified ones. Thus, if the
--function `foo' is declared with `int foo (int, char *);' then you must
--call it with two arguments, a number (any kind will do) and a string
--pointer.
--
-- But some functions perform operations that can meaningfully accept an
--unlimited number of arguments.
--
-- In some cases a function can handle any number of values by
--operating on all of them as a block. For example, consider a function
--that allocates a one-dimensional array with `malloc' to hold a
--specified set of values. This operation makes sense for any number of
--values, as long as the length of the array corresponds to that number.
--Without facilities for variable arguments, you would have to define a
--separate function for each possible array size.
--
-- The library function `printf' (*note Formatted Output::) is an
--example of another class of function where variable arguments are
--useful. This function prints its arguments (which can vary in type as
--well as number) under the control of a format template string.
--
-- These are good reasons to define a "variadic" function which can
--handle as many arguments as the caller chooses to pass.
--
-- Some functions such as `open' take a fixed set of arguments, but
--occasionally ignore the last few. Strict adherence to ISO C requires
--these functions to be defined as variadic; in practice, however, the GNU
--C compiler and most other C compilers let you define such a function to
--take a fixed set of arguments--the most it can ever use--and then only
--_declare_ the function as variadic (or not declare its arguments at
--all!).
--
--
--File: libc.info, Node: How Variadic, Next: Variadic Example, Prev: Why Variadic, Up: Variadic Functions
--
--How Variadic Functions are Defined and Used
---------------------------------------------
--
-- Defining and using a variadic function involves three steps:
--
-- * _Define_ the function as variadic, using an ellipsis (`...') in
-- the argument list, and using special macros to access the variable
-- arguments. *Note Receiving Arguments::.
--
-- * _Declare_ the function as variadic, using a prototype with an
-- ellipsis (`...'), in all the files which call it. *Note Variadic
-- Prototypes::.
--
-- * _Call_ the function by writing the fixed arguments followed by the
-- additional variable arguments. *Note Calling Variadics::.
--
--* Menu:
--
--* Variadic Prototypes:: How to make a prototype for a function
-- with variable arguments.
--* Receiving Arguments:: Steps you must follow to access the
-- optional argument values.
--* How Many Arguments:: How to decide whether there are more arguments.
--* Calling Variadics:: Things you need to know about calling
-- variable arguments functions.
--* Argument Macros:: Detailed specification of the macros
-- for accessing variable arguments.
--* Old Varargs:: The pre-ISO way of defining variadic functions.
--
--
--File: libc.info, Node: Variadic Prototypes, Next: Receiving Arguments, Up: How Variadic
--
--Syntax for Variable Arguments
--.............................
--
-- A function that accepts a variable number of arguments must be
--declared with a prototype that says so. You write the fixed arguments
--as usual, and then tack on `...' to indicate the possibility of
--additional arguments. The syntax of ISO C requires at least one fixed
--argument before the `...'. For example,
--
-- int
-- func (const char *a, int b, ...)
-- {
-- ...
-- }
--
--defines a function `func' which returns an `int' and takes two required
--arguments, a `const char *' and an `int'. These are followed by any
--number of anonymous arguments.
--
-- *Portability note:* For some C compilers, the last required argument
--must not be declared `register' in the function definition.
--Furthermore, this argument's type must be "self-promoting": that is,
--the default promotions must not change its type. This rules out array
--and function types, as well as `float', `char' (whether signed or not)
--and `short int' (whether signed or not). This is actually an ISO C
--requirement.
--
--
--File: libc.info, Node: Receiving Arguments, Next: How Many Arguments, Prev: Variadic Prototypes, Up: How Variadic
--
--Receiving the Argument Values
--.............................
--
-- Ordinary fixed arguments have individual names, and you can use these
--names to access their values. But optional arguments have no
--names--nothing but `...'. How can you access them?
--
-- The only way to access them is sequentially, in the order they were
--written, and you must use special macros from `stdarg.h' in the
--following three step process:
--
-- 1. You initialize an argument pointer variable of type `va_list' using
-- `va_start'. The argument pointer when initialized points to the
-- first optional argument.
--
-- 2. You access the optional arguments by successive calls to `va_arg'.
-- The first call to `va_arg' gives you the first optional argument,
-- the next call gives you the second, and so on.
--
-- You can stop at any time if you wish to ignore any remaining
-- optional arguments. It is perfectly all right for a function to
-- access fewer arguments than were supplied in the call, but you
-- will get garbage values if you try to access too many arguments.
--
-- 3. You indicate that you are finished with the argument pointer
-- variable by calling `va_end'.
--
-- (In practice, with most C compilers, calling `va_end' does nothing.
-- This is always true in the GNU C compiler. But you might as well
-- call `va_end' just in case your program is someday compiled with a
-- peculiar compiler.)
--
-- *Note Argument Macros::, for the full definitions of `va_start',
--`va_arg' and `va_end'.
--
-- Steps 1 and 3 must be performed in the function that accepts the
--optional arguments. However, you can pass the `va_list' variable as an
--argument to another function and perform all or part of step 2 there.
--
-- You can perform the entire sequence of three steps multiple times
--within a single function invocation. If you want to ignore the optional
--arguments, you can do these steps zero times.
--
-- You can have more than one argument pointer variable if you like.
--You can initialize each variable with `va_start' when you wish, and
--then you can fetch arguments with each argument pointer as you wish.
--Each argument pointer variable will sequence through the same set of
--argument values, but at its own pace.
--
-- *Portability note:* With some compilers, once you pass an argument
--pointer value to a subroutine, you must not keep using the same
--argument pointer value after that subroutine returns. For full
--portability, you should just pass it to `va_end'. This is actually an
--ISO C requirement, but most ANSI C compilers work happily regardless.
--
--
--File: libc.info, Node: How Many Arguments, Next: Calling Variadics, Prev: Receiving Arguments, Up: How Variadic
--
--How Many Arguments Were Supplied
--................................
--
-- There is no general way for a function to determine the number and
--type of the optional arguments it was called with. So whoever designs
--the function typically designs a convention for the caller to specify
--the number and type of arguments. It is up to you to define an
--appropriate calling convention for each variadic function, and write
--all calls accordingly.
--
-- One kind of calling convention is to pass the number of optional
--arguments as one of the fixed arguments. This convention works provided
--all of the optional arguments are of the same type.
--
-- A similar alternative is to have one of the required arguments be a
--bit mask, with a bit for each possible purpose for which an optional
--argument might be supplied. You would test the bits in a predefined
--sequence; if the bit is set, fetch the value of the next argument,
--otherwise use a default value.
--
-- A required argument can be used as a pattern to specify both the
--number and types of the optional arguments. The format string argument
--to `printf' is one example of this (*note Formatted Output Functions::).
--
-- Another possibility is to pass an "end marker" value as the last
--optional argument. For example, for a function that manipulates an
--arbitrary number of pointer arguments, a null pointer might indicate the
--end of the argument list. (This assumes that a null pointer isn't
--otherwise meaningful to the function.) The `execl' function works in
--just this way; see *Note Executing a File::.
--
--
--File: libc.info, Node: Calling Variadics, Next: Argument Macros, Prev: How Many Arguments, Up: How Variadic
--
--Calling Variadic Functions
--..........................
--
-- You don't have to do anything special to call a variadic function.
--Just put the arguments (required arguments, followed by optional ones)
--inside parentheses, separated by commas, as usual. But you must declare
--the function with a prototype and know how the argument values are
--converted.
--
-- In principle, functions that are _defined_ to be variadic must also
--be _declared_ to be variadic using a function prototype whenever you
--call them. (*Note Variadic Prototypes::, for how.) This is because
--some C compilers use a different calling convention to pass the same set
--of argument values to a function depending on whether that function
--takes variable arguments or fixed arguments.
--
-- In practice, the GNU C compiler always passes a given set of argument
--types in the same way regardless of whether they are optional or
--required. So, as long as the argument types are self-promoting, you can
--safely omit declaring them. Usually it is a good idea to declare the
--argument types for variadic functions, and indeed for all functions.
--But there are a few functions which it is extremely convenient not to
--have to declare as variadic--for example, `open' and `printf'.
--
-- Since the prototype doesn't specify types for optional arguments, in
--a call to a variadic function the "default argument promotions" are
--performed on the optional argument values. This means the objects of
--type `char' or `short int' (whether signed or not) are promoted to
--either `int' or `unsigned int', as appropriate; and that objects of
--type `float' are promoted to type `double'. So, if the caller passes a
--`char' as an optional argument, it is promoted to an `int', and the
--function can access it with `va_arg (AP, int)'.
--
-- Conversion of the required arguments is controlled by the function
--prototype in the usual way: the argument expression is converted to the
--declared argument type as if it were being assigned to a variable of
--that type.
--
--
--File: libc.info, Node: Argument Macros, Next: Old Varargs, Prev: Calling Variadics, Up: How Variadic
--
--Argument Access Macros
--......................
--
-- Here are descriptions of the macros used to retrieve variable
--arguments. These macros are defined in the header file `stdarg.h'.
--
-- - Data Type: va_list
-- The type `va_list' is used for argument pointer variables.
--
-- - Macro: void va_start (va_list AP, LAST-REQUIRED)
-- This macro initializes the argument pointer variable AP to point
-- to the first of the optional arguments of the current function;
-- LAST-REQUIRED must be the last required argument to the function.
--
-- *Note Old Varargs::, for an alternate definition of `va_start'
-- found in the header file `varargs.h'.
--
-- - Macro: TYPE va_arg (va_list AP, TYPE)
-- The `va_arg' macro returns the value of the next optional argument,
-- and modifies the value of AP to point to the subsequent argument.
-- Thus, successive uses of `va_arg' return successive optional
-- arguments.
--
-- The type of the value returned by `va_arg' is TYPE as specified in
-- the call. TYPE must be a self-promoting type (not `char' or
-- `short int' or `float') that matches the type of the actual
-- argument.
--
-- - Macro: void va_end (va_list AP)
-- This ends the use of AP. After a `va_end' call, further `va_arg'
-- calls with the same AP may not work. You should invoke `va_end'
-- before returning from the function in which `va_start' was invoked
-- with the same AP argument.
--
-- In the GNU C library, `va_end' does nothing, and you need not ever
-- use it except for reasons of portability.
--
--
-- Sometimes it is necessary to parse the list of parameters more than
--once or one wants to remember a certain position in the parameter list.
--To do this, one will have to make a copy of the current value of the
--argument. But `va_list' is an opaque type and one cannot necessarily
--assign the value of one variable of type `va_list' to another variable
--of the same type.
--
-- - Macro: void __va_copy (va_list DEST, va_list SRC)
-- The `__va_copy' macro allows copying of objects of type `va_list'
-- even if this is not an integral type. The argument pointer in
-- DEST is initialized to point to the same argument as the pointer
-- in SRC.
--
-- This macro is a GNU extension but it will hopefully also be
-- available in the next update of the ISO C standard.
--
-- If you want to use `__va_copy' you should always be prepared for the
--possibility that this macro will not be available. On architectures
--where a simple assignment is invalid, hopefully `__va_copy' _will_ be
--available, so one should always write something like this:
--
-- {
-- va_list ap, save;
-- ...
-- #ifdef __va_copy
-- __va_copy (save, ap);
-- #else
-- save = ap;
-- #endif
-- ...
-- }
--
--
--File: libc.info, Node: Variadic Example, Prev: How Variadic, Up: Variadic Functions
--
--Example of a Variadic Function
--------------------------------
--
-- Here is a complete sample function that accepts a variable number of
--arguments. The first argument to the function is the count of remaining
--arguments, which are added up and the result returned. While trivial,
--this function is sufficient to illustrate how to use the variable
--arguments facility.
--
-- #include <stdarg.h>
-- #include <stdio.h>
--
-- int
-- add_em_up (int count,...)
-- {
-- va_list ap;
-- int i, sum;
--
-- va_start (ap, count); /* Initialize the argument list. */
--
-- sum = 0;
-- for (i = 0; i < count; i++)
-- sum += va_arg (ap, int); /* Get the next argument value. */
--
-- va_end (ap); /* Clean up. */
-- return sum;
-- }
--
-- int
-- main (void)
-- {
-- /* This call prints 16. */
-- printf ("%d\n", add_em_up (3, 5, 5, 6));
--
-- /* This call prints 55. */
-- printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
--
-- return 0;
-- }
--
--
--File: libc.info, Node: Old Varargs, Prev: Argument Macros, Up: How Variadic
--
--Old-Style Variadic Functions
--............................
--
-- Before ISO C, programmers used a slightly different facility for
--writing variadic functions. The GNU C compiler still supports it;
--currently, it is more portable than the ISO C facility, since support
--for ISO C is still not universal. The header file which defines the
--old-fashioned variadic facility is called `varargs.h'.
--
-- Using `varargs.h' is almost the same as using `stdarg.h'. There is
--no difference in how you call a variadic function; see *Note Calling
--Variadics::. The only difference is in how you define them. First of
--all, you must use old-style non-prototype syntax, like this:
--
-- tree
-- build (va_alist)
-- va_dcl
-- {
--
-- Secondly, you must give `va_start' only one argument, like this:
--
-- va_list p;
-- va_start (p);
--
-- These are the special macros used for defining old-style variadic
--functions:
--
-- - Macro: va_alist
-- This macro stands for the argument name list required in a variadic
-- function.
--
-- - Macro: va_dcl
-- This macro declares the implicit argument or arguments for a
-- variadic function.
--
-- - Macro: void va_start (va_list AP)
-- This macro, as defined in `varargs.h', initializes the argument
-- pointer variable AP to point to the first argument of the current
-- function.
--
-- The other argument macros, `va_arg' and `va_end', are the same in
--`varargs.h' as in `stdarg.h'; see *Note Argument Macros::, for details.
--
-- It does not work to include both `varargs.h' and `stdarg.h' in the
--same compilation; they define `va_start' in conflicting ways.
--
--
--File: libc.info, Node: Null Pointer Constant, Next: Important Data Types, Prev: Variadic Functions, Up: Language Features
--
--Null Pointer Constant
--=====================
--
-- The null pointer constant is guaranteed not to point to any real
--object. You can assign it to any pointer variable since it has type
--`void *'. The preferred way to write a null pointer constant is with
--`NULL'.
--
-- - Macro: void * NULL
-- This is a null pointer constant.
--
-- You can also use `0' or `(void *)0' as a null pointer constant, but
--using `NULL' is cleaner because it makes the purpose of the constant
--more evident.
--
-- If you use the null pointer constant as a function argument, then for
--complete portability you should make sure that the function has a
--prototype declaration. Otherwise, if the target machine has two
--different pointer representations, the compiler won't know which
--representation to use for that argument. You can avoid the problem by
--explicitly casting the constant to the proper pointer type, but we
--recommend instead adding a prototype for the function you are calling.
--
--
--File: libc.info, Node: Important Data Types, Next: Data Type Measurements, Prev: Null Pointer Constant, Up: Language Features
--
--Important Data Types
--====================
--
-- The result of subtracting two pointers in C is always an integer,
--but the precise data type varies from C compiler to C compiler.
--Likewise, the data type of the result of `sizeof' also varies between
--compilers. ISO defines standard aliases for these two types, so you
--can refer to them in a portable fashion. They are defined in the
--header file `stddef.h'.
--
-- - Data Type: ptrdiff_t
-- This is the signed integer type of the result of subtracting two
-- pointers. For example, with the declaration `char *p1, *p2;', the
-- expression `p2 - p1' is of type `ptrdiff_t'. This will probably
-- be one of the standard signed integer types (`short int', `int' or
-- `long int'), but might be a nonstandard type that exists only for
-- this purpose.
--
-- - Data Type: size_t
-- This is an unsigned integer type used to represent the sizes of
-- objects. The result of the `sizeof' operator is of this type, and
-- functions such as `malloc' (*note Unconstrained Allocation::) and
-- `memcpy' (*note Copying and Concatenation::) accept arguments of
-- this type to specify object sizes.
--
-- *Usage Note:* `size_t' is the preferred way to declare any
-- arguments or variables that hold the size of an object.
--
-- In the GNU system `size_t' is equivalent to either `unsigned int' or
--`unsigned long int'. These types have identical properties on the GNU
--system and, for most purposes, you can use them interchangeably.
--However, they are distinct as data types, which makes a difference in
--certain contexts.
--
-- For example, when you specify the type of a function argument in a
--function prototype, it makes a difference which one you use. If the
--system header files declare `malloc' with an argument of type `size_t'
--and you declare `malloc' with an argument of type `unsigned int', you
--will get a compilation error if `size_t' happens to be `unsigned long
--int' on your system. To avoid any possibility of error, when a
--function argument or value is supposed to have type `size_t', never
--declare its type in any other way.
--
-- *Compatibility Note:* Implementations of C before the advent of
--ISO C generally used `unsigned int' for representing object sizes and
--`int' for pointer subtraction results. They did not necessarily define
--either `size_t' or `ptrdiff_t'. Unix systems did define `size_t', in
--`sys/types.h', but the definition was usually a signed type.
--
--
--File: libc.info, Node: Data Type Measurements, Prev: Important Data Types, Up: Language Features
--
--Data Type Measurements
--======================
--
-- Most of the time, if you choose the proper C data type for each
--object in your program, you need not be concerned with just how it is
--represented or how many bits it uses. When you do need such
--information, the C language itself does not provide a way to get it.
--The header files `limits.h' and `float.h' contain macros which give you
--this information in full detail.
--
--* Menu:
--
--* Width of Type:: How many bits does an integer type hold?
--* Range of Type:: What are the largest and smallest values
-- that an integer type can hold?
--* Floating Type Macros:: Parameters that measure the floating point types.
--* Structure Measurement:: Getting measurements on structure types.
--
--
--File: libc.info, Node: Width of Type, Next: Range of Type, Up: Data Type Measurements
--
--Computing the Width of an Integer Data Type
---------------------------------------------
--
-- The most common reason that a program needs to know how many bits
--are in an integer type is for using an array of `long int' as a bit
--vector. You can access the bit at index N with
--
-- vector[N / LONGBITS] & (1 << (N % LONGBITS))
--
--provided you define `LONGBITS' as the number of bits in a `long int'.
--
-- There is no operator in the C language that can give you the number
--of bits in an integer data type. But you can compute it from the macro
--`CHAR_BIT', defined in the header file `limits.h'.
--
--`CHAR_BIT'
-- This is the number of bits in a `char'--eight, on most systems.
-- The value has type `int'.
--
-- You can compute the number of bits in any data type TYPE like this:
--
-- sizeof (TYPE) * CHAR_BIT
--
--
--File: libc.info, Node: Range of Type, Next: Floating Type Macros, Prev: Width of Type, Up: Data Type Measurements
--
--Range of an Integer Type
--------------------------
--
-- Suppose you need to store an integer value which can range from zero
--to one million. Which is the smallest type you can use? There is no
--general rule; it depends on the C compiler and target machine. You can
--use the `MIN' and `MAX' macros in `limits.h' to determine which type
--will work.
--
-- Each signed integer type has a pair of macros which give the smallest
--and largest values that it can hold. Each unsigned integer type has one
--such macro, for the maximum value; the minimum value is, of course,
--zero.
--
-- The values of these macros are all integer constant expressions. The
--`MAX' and `MIN' macros for `char' and `short int' types have values of
--type `int'. The `MAX' and `MIN' macros for the other types have values
--of the same type described by the macro--thus, `ULONG_MAX' has type
--`unsigned long int'.
--
--`SCHAR_MIN'
-- This is the minimum value that can be represented by a
-- `signed char'.
--
--`SCHAR_MAX'
--`UCHAR_MAX'
-- These are the maximum values that can be represented by a
-- `signed char' and `unsigned char', respectively.
--
--`CHAR_MIN'
-- This is the minimum value that can be represented by a `char'.
-- It's equal to `SCHAR_MIN' if `char' is signed, or zero otherwise.
--
--`CHAR_MAX'
-- This is the maximum value that can be represented by a `char'.
-- It's equal to `SCHAR_MAX' if `char' is signed, or `UCHAR_MAX'
-- otherwise.
--
--`SHRT_MIN'
-- This is the minimum value that can be represented by a
-- `signed short int'. On most machines that the GNU C library runs
-- on, `short' integers are 16-bit quantities.
--
--`SHRT_MAX'
--`USHRT_MAX'
-- These are the maximum values that can be represented by a
-- `signed short int' and `unsigned short int', respectively.
--
--`INT_MIN'
-- This is the minimum value that can be represented by a
-- `signed int'. On most machines that the GNU C system runs on, an
-- `int' is a 32-bit quantity.
--
--`INT_MAX'
--`UINT_MAX'
-- These are the maximum values that can be represented by,
-- respectively, the type `signed int' and the type `unsigned int'.
--
--`LONG_MIN'
-- This is the minimum value that can be represented by a
-- `signed long int'. On most machines that the GNU C system runs
-- on, `long' integers are 32-bit quantities, the same size as `int'.
--
--`LONG_MAX'
--`ULONG_MAX'
-- These are the maximum values that can be represented by a
-- `signed long int' and `unsigned long int', respectively.
--
--`LONG_LONG_MIN'
-- This is the minimum value that can be represented by a
-- `signed long long int'. On most machines that the GNU C system
-- runs on, `long long' integers are 64-bit quantities.
--
--`LONG_LONG_MAX'
--`ULONG_LONG_MAX'
-- These are the maximum values that can be represented by a `signed
-- long long int' and `unsigned long long int', respectively.
--
--`WCHAR_MAX'
-- This is the maximum value that can be represented by a `wchar_t'.
-- *Note Extended Char Intro::.
--
-- The header file `limits.h' also defines some additional constants
--that parameterize various operating system and file system limits.
--These constants are described in *Note System Configuration::.
--
--
--File: libc.info, Node: Floating Type Macros, Next: Structure Measurement, Prev: Range of Type, Up: Data Type Measurements
--
--Floating Type Macros
----------------------
--
-- The specific representation of floating point numbers varies from
--machine to machine. Because floating point numbers are represented
--internally as approximate quantities, algorithms for manipulating
--floating point data often need to take account of the precise details of
--the machine's floating point representation.
--
-- Some of the functions in the C library itself need this information;
--for example, the algorithms for printing and reading floating point
--numbers (*note I/O on Streams::) and for calculating trigonometric and
--irrational functions (*note Mathematics::) use it to avoid round-off
--error and loss of accuracy. User programs that implement numerical
--analysis techniques also often need this information in order to
--minimize or compute error bounds.
--
-- The header file `float.h' describes the format used by your machine.
--
--* Menu:
--
--* Floating Point Concepts:: Definitions of terminology.
--* Floating Point Parameters:: Details of specific macros.
--* IEEE Floating Point:: The measurements for one common
-- representation.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-52 glibc-2.3.2-200304020432/manual/libc.info-52
---- glibc-2.3.2/manual/libc.info-52 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-52 Thu Jan 1 01:00:00 1970
-@@ -1,356 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Floating Point Concepts, Next: Floating Point Parameters, Up: Floating Type Macros
--
--Floating Point Representation Concepts
--......................................
--
-- This section introduces the terminology for describing floating point
--representations.
--
-- You are probably already familiar with most of these concepts in
--terms of scientific or exponential notation for floating point numbers.
--For example, the number `123456.0' could be expressed in exponential
--notation as `1.23456e+05', a shorthand notation indicating that the
--mantissa `1.23456' is multiplied by the base `10' raised to power `5'.
--
-- More formally, the internal representation of a floating point number
--can be characterized in terms of the following parameters:
--
-- * The "sign" is either `-1' or `1'.
--
-- * The "base" or "radix" for exponentiation, an integer greater than
-- `1'. This is a constant for a particular representation.
--
-- * The "exponent" to which the base is raised. The upper and lower
-- bounds of the exponent value are constants for a particular
-- representation.
--
-- Sometimes, in the actual bits representing the floating point
-- number, the exponent is "biased" by adding a constant to it, to
-- make it always be represented as an unsigned quantity. This is
-- only important if you have some reason to pick apart the bit
-- fields making up the floating point number by hand, which is
-- something for which the GNU library provides no support. So this
-- is ignored in the discussion that follows.
--
-- * The "mantissa" or "significand" is an unsigned integer which is a
-- part of each floating point number.
--
-- * The "precision" of the mantissa. If the base of the representation
-- is B, then the precision is the number of base-B digits in the
-- mantissa. This is a constant for a particular representation.
--
-- Many floating point representations have an implicit "hidden bit"
-- in the mantissa. This is a bit which is present virtually in the
-- mantissa, but not stored in memory because its value is always 1
-- in a normalized number. The precision figure (see above) includes
-- any hidden bits.
--
-- Again, the GNU library provides no facilities for dealing with such
-- low-level aspects of the representation.
--
-- The mantissa of a floating point number represents an implicit
--fraction whose denominator is the base raised to the power of the
--precision. Since the largest representable mantissa is one less than
--this denominator, the value of the fraction is always strictly less
--than `1'. The mathematical value of a floating point number is then
--the product of this fraction, the sign, and the base raised to the
--exponent.
--
-- We say that the floating point number is "normalized" if the
--fraction is at least `1/B', where B is the base. In other words, the
--mantissa would be too large to fit if it were multiplied by the base.
--Non-normalized numbers are sometimes called "denormal"; they contain
--less precision than the representation normally can hold.
--
-- If the number is not normalized, then you can subtract `1' from the
--exponent while multiplying the mantissa by the base, and get another
--floating point number with the same value. "Normalization" consists of
--doing this repeatedly until the number is normalized. Two distinct
--normalized floating point numbers cannot be equal in value.
--
-- (There is an exception to this rule: if the mantissa is zero, it is
--considered normalized. Another exception happens on certain machines
--where the exponent is as small as the representation can hold. Then it
--is impossible to subtract `1' from the exponent, so a number may be
--normalized even if its fraction is less than `1/B'.)
--
--
--File: libc.info, Node: Floating Point Parameters, Next: IEEE Floating Point, Prev: Floating Point Concepts, Up: Floating Type Macros
--
--Floating Point Parameters
--.........................
--
-- These macro definitions can be accessed by including the header file
--`float.h' in your program.
--
-- Macro names starting with `FLT_' refer to the `float' type, while
--names beginning with `DBL_' refer to the `double' type and names
--beginning with `LDBL_' refer to the `long double' type. (If GCC does
--not support `long double' as a distinct data type on a target machine
--then the values for the `LDBL_' constants are equal to the
--corresponding constants for the `double' type.)
--
-- Of these macros, only `FLT_RADIX' is guaranteed to be a constant
--expression. The other macros listed here cannot be reliably used in
--places that require constant expressions, such as `#if' preprocessing
--directives or in the dimensions of static arrays.
--
-- Although the ISO C standard specifies minimum and maximum values for
--most of these parameters, the GNU C implementation uses whatever values
--describe the floating point representation of the target machine. So in
--principle GNU C actually satisfies the ISO C requirements only if the
--target machine is suitable. In practice, all the machines currently
--supported are suitable.
--
--`FLT_ROUNDS'
-- This value characterizes the rounding mode for floating point
-- addition. The following values indicate standard rounding modes:
--
-- `-1'
-- The mode is indeterminable.
--
-- `0'
-- Rounding is towards zero.
--
-- `1'
-- Rounding is to the nearest number.
--
-- `2'
-- Rounding is towards positive infinity.
--
-- `3'
-- Rounding is towards negative infinity.
--
-- Any other value represents a machine-dependent nonstandard rounding
-- mode.
--
-- On most machines, the value is `1', in accordance with the IEEE
-- standard for floating point.
--
-- Here is a table showing how certain values round for each possible
-- value of `FLT_ROUNDS', if the other aspects of the representation
-- match the IEEE single-precision standard.
--
-- 0 1 2 3
-- 1.00000003 1.0 1.0 1.00000012 1.0
-- 1.00000007 1.0 1.00000012 1.00000012 1.0
-- -1.00000003 -1.0 -1.0 -1.0 -1.00000012
-- -1.00000007 -1.0 -1.00000012 -1.0 -1.00000012
--
--`FLT_RADIX'
-- This is the value of the base, or radix, of the exponent
-- representation. This is guaranteed to be a constant expression,
-- unlike the other macros described in this section. The value is 2
-- on all machines we know of except the IBM 360 and derivatives.
--
--`FLT_MANT_DIG'
-- This is the number of base-`FLT_RADIX' digits in the floating point
-- mantissa for the `float' data type. The following expression
-- yields `1.0' (even though mathematically it should not) due to the
-- limited number of mantissa digits:
--
-- float radix = FLT_RADIX;
--
-- 1.0f + 1.0f / radix / radix / ... / radix
--
-- where `radix' appears `FLT_MANT_DIG' times.
--
--`DBL_MANT_DIG'
--`LDBL_MANT_DIG'
-- This is the number of base-`FLT_RADIX' digits in the floating point
-- mantissa for the data types `double' and `long double',
-- respectively.
--
--`FLT_DIG'
-- This is the number of decimal digits of precision for the `float'
-- data type. Technically, if P and B are the precision and base
-- (respectively) for the representation, then the decimal precision
-- Q is the maximum number of decimal digits such that any floating
-- point number with Q base 10 digits can be rounded to a floating
-- point number with P base B digits and back again, without change
-- to the Q decimal digits.
--
-- The value of this macro is supposed to be at least `6', to satisfy
-- ISO C.
--
--`DBL_DIG'
--`LDBL_DIG'
-- These are similar to `FLT_DIG', but for the data types `double'
-- and `long double', respectively. The values of these macros are
-- supposed to be at least `10'.
--
--`FLT_MIN_EXP'
-- This is the smallest possible exponent value for type `float'.
-- More precisely, is the minimum negative integer such that the value
-- `FLT_RADIX' raised to this power minus 1 can be represented as a
-- normalized floating point number of type `float'.
--
--`DBL_MIN_EXP'
--`LDBL_MIN_EXP'
-- These are similar to `FLT_MIN_EXP', but for the data types
-- `double' and `long double', respectively.
--
--`FLT_MIN_10_EXP'
-- This is the minimum negative integer such that `10' raised to this
-- power minus 1 can be represented as a normalized floating point
-- number of type `float'. This is supposed to be `-37' or even less.
--
--`DBL_MIN_10_EXP'
--`LDBL_MIN_10_EXP'
-- These are similar to `FLT_MIN_10_EXP', but for the data types
-- `double' and `long double', respectively.
--
--`FLT_MAX_EXP'
-- This is the largest possible exponent value for type `float'. More
-- precisely, this is the maximum positive integer such that value
-- `FLT_RADIX' raised to this power minus 1 can be represented as a
-- floating point number of type `float'.
--
--`DBL_MAX_EXP'
--`LDBL_MAX_EXP'
-- These are similar to `FLT_MAX_EXP', but for the data types
-- `double' and `long double', respectively.
--
--`FLT_MAX_10_EXP'
-- This is the maximum positive integer such that `10' raised to this
-- power minus 1 can be represented as a normalized floating point
-- number of type `float'. This is supposed to be at least `37'.
--
--`DBL_MAX_10_EXP'
--`LDBL_MAX_10_EXP'
-- These are similar to `FLT_MAX_10_EXP', but for the data types
-- `double' and `long double', respectively.
--
--`FLT_MAX'
-- The value of this macro is the maximum number representable in type
-- `float'. It is supposed to be at least `1E+37'. The value has
-- type `float'.
--
-- The smallest representable number is `- FLT_MAX'.
--
--`DBL_MAX'
--`LDBL_MAX'
-- These are similar to `FLT_MAX', but for the data types `double'
-- and `long double', respectively. The type of the macro's value is
-- the same as the type it describes.
--
--`FLT_MIN'
-- The value of this macro is the minimum normalized positive floating
-- point number that is representable in type `float'. It is supposed
-- to be no more than `1E-37'.
--
--`DBL_MIN'
--`LDBL_MIN'
-- These are similar to `FLT_MIN', but for the data types `double'
-- and `long double', respectively. The type of the macro's value is
-- the same as the type it describes.
--
--`FLT_EPSILON'
-- This is the minimum positive floating point number of type `float'
-- such that `1.0 + FLT_EPSILON != 1.0' is true. It's supposed to be
-- no greater than `1E-5'.
--
--`DBL_EPSILON'
--`LDBL_EPSILON'
-- These are similar to `FLT_EPSILON', but for the data types
-- `double' and `long double', respectively. The type of the macro's
-- value is the same as the type it describes. The values are not
-- supposed to be greater than `1E-9'.
--
--
--File: libc.info, Node: IEEE Floating Point, Prev: Floating Point Parameters, Up: Floating Type Macros
--
--IEEE Floating Point
--...................
--
-- Here is an example showing how the floating type measurements come
--out for the most common floating point representation, specified by the
--`IEEE Standard for Binary Floating Point Arithmetic (ANSI/IEEE Std
--754-1985)'. Nearly all computers designed since the 1980s use this
--format.
--
-- The IEEE single-precision float representation uses a base of 2.
--There is a sign bit, a mantissa with 23 bits plus one hidden bit (so
--the total precision is 24 base-2 digits), and an 8-bit exponent that
--can represent values in the range -125 to 128, inclusive.
--
-- So, for an implementation that uses this representation for the
--`float' data type, appropriate values for the corresponding parameters
--are:
--
-- FLT_RADIX 2
-- FLT_MANT_DIG 24
-- FLT_DIG 6
-- FLT_MIN_EXP -125
-- FLT_MIN_10_EXP -37
-- FLT_MAX_EXP 128
-- FLT_MAX_10_EXP +38
-- FLT_MIN 1.17549435E-38F
-- FLT_MAX 3.40282347E+38F
-- FLT_EPSILON 1.19209290E-07F
--
-- Here are the values for the `double' data type:
--
-- DBL_MANT_DIG 53
-- DBL_DIG 15
-- DBL_MIN_EXP -1021
-- DBL_MIN_10_EXP -307
-- DBL_MAX_EXP 1024
-- DBL_MAX_10_EXP 308
-- DBL_MAX 1.7976931348623157E+308
-- DBL_MIN 2.2250738585072014E-308
-- DBL_EPSILON 2.2204460492503131E-016
--
--
--File: libc.info, Node: Structure Measurement, Prev: Floating Type Macros, Up: Data Type Measurements
--
--Structure Field Offset Measurement
------------------------------------
--
-- You can use `offsetof' to measure the location within a structure
--type of a particular structure member.
--
-- - Macro: size_t offsetof (TYPE, MEMBER)
-- This expands to a integer constant expression that is the offset
-- of the structure member named MEMBER in a the structure type TYPE.
-- For example, `offsetof (struct s, elem)' is the offset, in bytes,
-- of the member `elem' in a `struct s'.
--
-- This macro won't work if MEMBER is a bit field; you get an error
-- from the C compiler in that case.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-53 glibc-2.3.2-200304020432/manual/libc.info-53
---- glibc-2.3.2/manual/libc.info-53 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-53 Thu Jan 1 01:00:00 1970
-@@ -1,7051 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Library Summary, Next: Installation, Prev: Language Features, Up: Top
--
--Summary of Library Facilities
--*****************************
--
-- This appendix is a complete list of the facilities declared within
--the header files supplied with the GNU C library. Each entry also
--lists the standard or other source from which each facility is derived,
--and tells you where in the manual you can find more information about
--how to use it.
--
--`long int a64l (const char *STRING)'
-- `stdlib.h' (XPG): *Note Encode Binary Data::.
--
--`void abort (void)'
-- `stdlib.h' (ISO): *Note Aborting a Program::.
--
--`int abs (int NUMBER)'
-- `stdlib.h' (ISO): *Note Absolute Value::.
--
--`int accept (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH_PTR)'
-- `sys/socket.h' (BSD): *Note Accepting Connections::.
--
--`int access (const char *FILENAME, int HOW)'
-- `unistd.h' (POSIX.1): *Note Testing File Access::.
--
--`ACCOUNTING'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`double acos (double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`float acosf (float X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`double acosh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float acoshf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double acoshl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double acosl (long double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`int addmntent (FILE *STREAM, const struct mntent *MNT)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`int adjtime (const struct timeval *DELTA, struct timeval *OLDDELTA)'
-- `sys/time.h' (BSD): *Note High-Resolution Calendar::.
--
--`int adjtimex (struct timex *TIMEX)'
-- `sys/timex.h' (GNU): *Note High-Resolution Calendar::.
--
--`AF_FILE'
-- `sys/socket.h' (GNU): *Note Address Formats::.
--
--`AF_INET'
-- `sys/socket.h' (BSD): *Note Address Formats::.
--
--`AF_INET6'
-- `sys/socket.h' (IPv6 Basic API): *Note Address Formats::.
--
--`AF_LOCAL'
-- `sys/socket.h' (POSIX): *Note Address Formats::.
--
--`AF_UNIX'
-- `sys/socket.h' (BSD, Unix98): *Note Address Formats::.
--
--`AF_UNSPEC'
-- `sys/socket.h' (BSD): *Note Address Formats::.
--
--`int aio_cancel (int FILDES, struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Cancel AIO Operations::.
--
--`int aio_cancel64 (int FILDES, struct aiocb64 *AIOCBP)'
-- `aio.h' (Unix98): *Note Cancel AIO Operations::.
--
--`int aio_error (const struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Status of AIO Operations::.
--
--`int aio_error64 (const struct aiocb64 *AIOCBP)'
-- `aio.h' (Unix98): *Note Status of AIO Operations::.
--
--`int aio_fsync (int OP, struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Synchronizing AIO Operations::.
--
--`int aio_fsync64 (int OP, struct aiocb64 *AIOCBP)'
-- `aio.h' (Unix98): *Note Synchronizing AIO Operations::.
--
--`void aio_init (const struct aioinit *INIT)'
-- `aio.h' (GNU): *Note Configuration of AIO::.
--
--`int aio_read (struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Asynchronous Reads/Writes::.
--
--`int aio_read64 (struct aiocb *AIOCBP)'
-- `aio.h' (Unix98): *Note Asynchronous Reads/Writes::.
--
--`ssize_t aio_return (const struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Status of AIO Operations::.
--
--`int aio_return64 (const struct aiocb64 *AIOCBP)'
-- `aio.h' (Unix98): *Note Status of AIO Operations::.
--
--`int aio_suspend (const struct aiocb *const LIST[], int NENT, const struct timespec *TIMEOUT)'
-- `aio.h' (POSIX.1b): *Note Synchronizing AIO Operations::.
--
--`int aio_suspend64 (const struct aiocb64 *const LIST[], int NENT, const struct timespec *TIMEOUT)'
-- `aio.h' (Unix98): *Note Synchronizing AIO Operations::.
--
--`int aio_write (struct aiocb *AIOCBP)'
-- `aio.h' (POSIX.1b): *Note Asynchronous Reads/Writes::.
--
--`int aio_write64 (struct aiocb *AIOCBP)'
-- `aio.h' (Unix98): *Note Asynchronous Reads/Writes::.
--
--`unsigned int alarm (unsigned int SECONDS)'
-- `unistd.h' (POSIX.1): *Note Setting an Alarm::.
--
--`void * alloca (size_t SIZE);'
-- `stdlib.h' (GNU, BSD): *Note Variable Size Automatic::.
--
--`int alphasort (const void *A, const void *B)'
-- `dirent.h' (BSD/SVID): *Note Scanning Directory Content::.
--
--`int alphasort64 (const void *A, const void *B)'
-- `dirent.h' (GNU): *Note Scanning Directory Content::.
--
--`tcflag_t ALTWERASE'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`int ARG_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`error_t argp_err_exit_status'
-- `argp.h' (GNU): *Note Argp Global Variables::.
--
--`void argp_error (const struct argp_state *STATE, const char *FMT, ...)'
-- `argp.h' (GNU): *Note Argp Helper Functions::.
--
--`int ARGP_ERR_UNKNOWN'
-- `argp.h' (GNU): *Note Argp Parser Functions::.
--
--`void argp_failure (const struct argp_state *STATE, int STATUS, int ERRNUM, const char *FMT, ...)'
-- `argp.h' (GNU): *Note Argp Helper Functions::.
--
--`void argp_help (const struct argp *ARGP, FILE *STREAM, unsigned FLAGS, char *NAME)'
-- `argp.h' (GNU): *Note Argp Help::.
--
--`ARGP_IN_ORDER'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`ARGP_KEY_ARG'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_ARGS'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_END'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_ERROR'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_FINI'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_HELP_ARGS_DOC'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_HELP_DUP_ARGS_NOTE'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_HELP_EXTRA'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_HELP_HEADER'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_HELP_POST_DOC'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_HELP_PRE_DOC'
-- `argp.h' (GNU): *Note Argp Help Filter Keys::.
--
--`ARGP_KEY_INIT'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_NO_ARGS'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_KEY_SUCCESS'
-- `argp.h' (GNU): *Note Argp Special Keys::.
--
--`ARGP_LONG_ONLY'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`ARGP_NO_ARGS'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`ARGP_NO_ERRS'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`ARGP_NO_EXIT'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`ARGP_NO_HELP'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`error_t argp_parse (const struct argp *ARGP, int ARGC, char **ARGV, unsigned FLAGS, int *ARG_INDEX, void *INPUT)'
-- `argp.h' (GNU): *Note Suboptions: Argp.
--
--`ARGP_PARSE_ARGV0'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`const char * argp_program_bug_address'
-- `argp.h' (GNU): *Note Argp Global Variables::.
--
--`const char * argp_program_version'
-- `argp.h' (GNU): *Note Argp Global Variables::.
--
--`argp_program_version_hook'
-- `argp.h' (GNU): *Note Argp Global Variables::.
--
--`ARGP_SILENT'
-- `argp.h' (GNU): *Note Argp Flags::.
--
--`void argp_state_help (const struct argp_state *STATE, FILE *STREAM, unsigned FLAGS)'
-- `argp.h' (GNU): *Note Argp Helper Functions::.
--
--`void argp_usage (const struct argp_state *STATE)'
-- `argp.h' (GNU): *Note Argp Helper Functions::.
--
--`error_t argz_add (char **ARGZ, size_t *ARGZ_LEN, const char *STR)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_add_sep (char **ARGZ, size_t *ARGZ_LEN, const char *STR, int DELIM)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_append (char **ARGZ, size_t *ARGZ_LEN, const char *BUF, size_t BUF_LEN)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`size_t argz_count (const char *ARGZ, size_t ARG_LEN)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_create (char *const ARGV[], char **ARGZ, size_t *ARGZ_LEN)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_create_sep (const char *STRING, int SEP, char **ARGZ, size_t *ARGZ_LEN)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_delete (char **ARGZ, size_t *ARGZ_LEN, char *ENTRY)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`void argz_extract (char *ARGZ, size_t ARGZ_LEN, char **ARGV)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_insert (char **ARGZ, size_t *ARGZ_LEN, char *BEFORE, const char *ENTRY)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`char * argz_next (char *ARGZ, size_t ARGZ_LEN, const char *ENTRY)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`error_t argz_replace (char **ARGZ, size_t *ARGZ_LEN, const char *STR, const char *WITH, unsigned *REPLACE_COUNT)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`void argz_stringify (char *ARGZ, size_t LEN, int SEP)'
-- `argz.h' (GNU): *Note Argz Functions::.
--
--`char * asctime (const struct tm *BROKENTIME)'
-- `time.h' (ISO): *Note Formatting Calendar Time::.
--
--`char * asctime_r (const struct tm *BROKENTIME, char *BUFFER)'
-- `time.h' (POSIX.1c): *Note Formatting Calendar Time::.
--
--`double asin (double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`float asinf (float X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`double asinh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float asinhf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double asinhl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double asinl (long double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`int asprintf (char **PTR, const char *TEMPLATE, ...)'
-- `stdio.h' (GNU): *Note Dynamic Output::.
--
--`void assert (int EXPRESSION)'
-- `assert.h' (ISO): *Note Consistency Checking::.
--
--`void assert_perror (int ERRNUM)'
-- `assert.h' (GNU): *Note Consistency Checking::.
--
--`double atan (double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`double atan2 (double Y, double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`float atan2f (float Y, float X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`long double atan2l (long double Y, long double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`float atanf (float X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`double atanh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float atanhf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double atanhl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double atanl (long double X)'
-- `math.h' (ISO): *Note Inverse Trig Functions::.
--
--`int atexit (void (*FUNCTION) (void))'
-- `stdlib.h' (ISO): *Note Cleanups on Exit::.
--
--`double atof (const char *STRING)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`int atoi (const char *STRING)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`long int atol (const char *STRING)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`long long int atoll (const char *STRING)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`B0'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B110'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B115200'
-- `termios.h' (GNU): *Note Line Speed::.
--
--`B1200'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B134'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B150'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B1800'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B19200'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B200'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B230400'
-- `termios.h' (GNU): *Note Line Speed::.
--
--`B2400'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B300'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B38400'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B460800'
-- `termios.h' (GNU): *Note Line Speed::.
--
--`B4800'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B50'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B57600'
-- `termios.h' (GNU): *Note Line Speed::.
--
--`B600'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B75'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`B9600'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`int backtrace (void **BUFFER, int SIZE)'
-- `execinfo.h' (GNU): *Note Backtraces::.
--
--`char ** backtrace_symbols (void *const *BUFFER, int SIZE)'
-- `execinfo.h' (GNU): *Note Backtraces::.
--
--`void backtrace_symbols_fd (void *const *BUFFER, int SIZE, int FD)'
-- `execinfo.h' (GNU): *Note Backtraces::.
--
--`char * basename (char *PATH)'
-- `libgen.h' (XPG): *Note Finding Tokens in a String::.
--
--`char * basename (const char *FILENAME)'
-- `string.h' (GNU): *Note Finding Tokens in a String::.
--
--`int BC_BASE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`int BC_DIM_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`int bcmp (const void *A1, const void *A2, size_t SIZE)'
-- `string.h' (BSD): *Note String/Array Comparison::.
--
--`void bcopy (const void *FROM, void *TO, size_t SIZE)'
-- `string.h' (BSD): *Note Copying and Concatenation::.
--
--`int BC_SCALE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`int BC_STRING_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`int bind (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH)'
-- `sys/socket.h' (BSD): *Note Setting Address::.
--
--`char * bindtextdomain (const char *DOMAINNAME, const char *DIRNAME)'
-- `libintl.h' (GNU): *Note Locating gettext catalog::.
--
--`char * bind_textdomain_codeset (const char *DOMAINNAME, const char *CODESET)'
-- `libintl.h' (GNU): *Note Charset conversion in gettext::.
--
--`blkcnt64_t'
-- `sys/types.h' (Unix98): *Note Attribute Meanings::.
--
--`blkcnt_t'
-- `sys/types.h' (Unix98): *Note Attribute Meanings::.
--
--`BOOT_TIME'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`BOOT_TIME'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int brk (void *ADDR)'
-- `unistd.h' (BSD): *Note Resizing the Data Segment::.
--
--`tcflag_t BRKINT'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`_BSD_SOURCE'
-- (GNU): *Note Feature Test Macros::.
--
--`void * bsearch (const void *KEY, const void *ARRAY, size_t COUNT, size_t SIZE, comparison_fn_t COMPARE)'
-- `stdlib.h' (ISO): *Note Array Search Function::.
--
--`wint_t btowc (int C)'
-- `wchar.h' (ISO): *Note Converting a Character::.
--
--`int BUFSIZ'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`void bzero (void *BLOCK, size_t SIZE)'
-- `string.h' (BSD): *Note Copying and Concatenation::.
--
--`double cabs (complex double Z)'
-- `complex.h' (ISO): *Note Absolute Value::.
--
--`float cabsf (complex float Z)'
-- `complex.h' (ISO): *Note Absolute Value::.
--
--`long double cabsl (complex long double Z)'
-- `complex.h' (ISO): *Note Absolute Value::.
--
--`complex double cacos (complex double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex float cacosf (complex float Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex double cacosh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float cacoshf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double cacoshl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double cacosl (complex long double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`void * calloc (size_t COUNT, size_t ELTSIZE)'
-- `malloc.h', `stdlib.h' (ISO): *Note Allocating Cleared Space::.
--
--`char * canonicalize_file_name (const char *NAME)'
-- `stdlib.h' (GNU): *Note Symbolic Links::.
--
--`double carg (complex double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`float cargf (complex float Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`long double cargl (complex long double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`complex double casin (complex double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex float casinf (complex float Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex double casinh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float casinhf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double casinhl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double casinl (complex long double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex double catan (complex double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex float catanf (complex float Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`complex double catanh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float catanhf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double catanhl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double catanl (complex long double Z)'
-- `complex.h' (ISO): *Note Inverse Trig Functions::.
--
--`nl_catd catopen (const char *CAT_NAME, int FLAG)'
-- `nl_types.h' (X/Open): *Note The catgets Functions::.
--
--`int cbc_crypt (char *KEY, char *BLOCKS, unsigned LEN, unsigned MODE, char *IVEC)'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`double cbrt (double X)'
-- `math.h' (BSD): *Note Exponents and Logarithms::.
--
--`float cbrtf (float X)'
-- `math.h' (BSD): *Note Exponents and Logarithms::.
--
--`long double cbrtl (long double X)'
-- `math.h' (BSD): *Note Exponents and Logarithms::.
--
--`complex double ccos (complex double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex float ccosf (complex float Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex double ccosh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float ccoshf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double ccoshl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double ccosl (complex long double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`cc_t'
-- `termios.h' (POSIX.1): *Note Mode Data Types::.
--
--`tcflag_t CCTS_OFLOW'
-- `termios.h' (BSD): *Note Control Modes::.
--
--`double ceil (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float ceilf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double ceill (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`complex double cexp (complex double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex float cexpf (complex float Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex long double cexpl (complex long double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`speed_t cfgetispeed (const struct termios *TERMIOS-P)'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`speed_t cfgetospeed (const struct termios *TERMIOS-P)'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`void cfmakeraw (struct termios *TERMIOS-P)'
-- `termios.h' (BSD): *Note Noncanonical Input::.
--
--`void cfree (void *PTR)'
-- `stdlib.h' (Sun): *Note Freeing after Malloc::.
--
--`int cfsetispeed (struct termios *TERMIOS-P, speed_t SPEED)'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`int cfsetospeed (struct termios *TERMIOS-P, speed_t SPEED)'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`int cfsetspeed (struct termios *TERMIOS-P, speed_t SPEED)'
-- `termios.h' (BSD): *Note Line Speed::.
--
--`CHAR_BIT'
-- `limits.h' (ISO): *Note Width of Type::.
--
--`CHAR_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`CHAR_MIN'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int chdir (const char *FILENAME)'
-- `unistd.h' (POSIX.1): *Note Working Directory::.
--
--`int CHILD_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`int chmod (const char *FILENAME, mode_t MODE)'
-- `sys/stat.h' (POSIX.1): *Note Setting Permissions::.
--
--`int chown (const char *FILENAME, uid_t OWNER, gid_t GROUP)'
-- `unistd.h' (POSIX.1): *Note File Owner::.
--
--`tcflag_t CIGNORE'
-- `termios.h' (BSD): *Note Control Modes::.
--
--`double cimag (complex double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`float cimagf (complex float Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`long double cimagl (complex long double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`int clearenv (void)'
-- `stdlib.h' (GNU): *Note Environment Access::.
--
--`void clearerr (FILE *STREAM)'
-- `stdio.h' (ISO): *Note Error Recovery::.
--
--`void clearerr_unlocked (FILE *STREAM)'
-- `stdio.h' (GNU): *Note Error Recovery::.
--
--`int CLK_TCK'
-- `time.h' (POSIX.1): *Note CPU Time::.
--
--`tcflag_t CLOCAL'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`clock_t clock (void)'
-- `time.h' (ISO): *Note CPU Time::.
--
--`int CLOCKS_PER_SEC'
-- `time.h' (ISO): *Note CPU Time::.
--
--`clock_t'
-- `time.h' (ISO): *Note CPU Time::.
--
--`complex double clog (complex double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex double clog10 (complex double Z)'
-- `complex.h' (GNU): *Note Exponents and Logarithms::.
--
--`complex float clog10f (complex float Z)'
-- `complex.h' (GNU): *Note Exponents and Logarithms::.
--
--`complex long double clog10l (complex long double Z)'
-- `complex.h' (GNU): *Note Exponents and Logarithms::.
--
--`complex float clogf (complex float Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex long double clogl (complex long double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`int close (int FILEDES)'
-- `unistd.h' (POSIX.1): *Note Opening and Closing Files::.
--
--`int closedir (DIR *DIRSTREAM)'
-- `dirent.h' (POSIX.1): *Note Reading/Closing Directory::.
--
--`void closelog (void)'
-- `syslog.h' (BSD): *Note closelog::.
--
--`int COLL_WEIGHTS_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`size_t confstr (int PARAMETER, char *BUF, size_t LEN)'
-- `unistd.h' (POSIX.2): *Note String Parameters::.
--
--`complex double conj (complex double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`complex float conjf (complex float Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`complex long double conjl (complex long double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`int connect (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH)'
-- `sys/socket.h' (BSD): *Note Connecting::.
--
--`cookie_close_function'
-- `stdio.h' (GNU): *Note Hook Functions::.
--
--`cookie_io_functions_t'
-- `stdio.h' (GNU): *Note Streams and Cookies::.
--
--`cookie_read_function'
-- `stdio.h' (GNU): *Note Hook Functions::.
--
--`cookie_seek_function'
-- `stdio.h' (GNU): *Note Hook Functions::.
--
--`cookie_write_function'
-- `stdio.h' (GNU): *Note Hook Functions::.
--
--`double copysign (double X, double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`float copysignf (float X, float Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`long double copysignl (long double X, long double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`double cos (double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`float cosf (float X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`double cosh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float coshf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double coshl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double cosl (long double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`complex double cpow (complex double BASE, complex double POWER)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex float cpowf (complex float BASE, complex float POWER)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex long double cpowl (complex long double BASE, complex long double POWER)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex double cproj (complex double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`complex float cprojf (complex float Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`complex long double cprojl (complex long double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`tcflag_t CREAD'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`double creal (complex double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`float crealf (complex float Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`long double creall (complex long double Z)'
-- `complex.h' (ISO): *Note Operations on Complex::.
--
--`int creat (const char *FILENAME, mode_t MODE)'
-- `fcntl.h' (POSIX.1): *Note Opening and Closing Files::.
--
--`int creat64 (const char *FILENAME, mode_t MODE)'
-- `fcntl.h' (Unix98): *Note Opening and Closing Files::.
--
--`tcflag_t CRTS_IFLOW'
-- `termios.h' (BSD): *Note Control Modes::.
--
--`char * crypt (const char *KEY, const char *SALT)'
-- `crypt.h' (BSD, SVID): *Note crypt::.
--
--`char * crypt_r (const char *KEY, const char *SALT, struct crypt_data * DATA)'
-- `crypt.h' (GNU): *Note crypt::.
--
--`tcflag_t CS5'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`tcflag_t CS6'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`tcflag_t CS7'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`tcflag_t CS8'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`complex double csin (complex double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex float csinf (complex float Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex double csinh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float csinhf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double csinhl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double csinl (complex long double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`tcflag_t CSIZE'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`_CS_LFS64_CFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS64_LDFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS64_LIBS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS64_LINTFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS_CFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS_LDFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS_LIBS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_LFS_LINTFLAGS'
-- `unistd.h' (Unix98): *Note String Parameters::.
--
--`_CS_PATH'
-- `unistd.h' (POSIX.2): *Note String Parameters::.
--
--`complex double csqrt (complex double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex float csqrtf (complex float Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`complex long double csqrtl (complex long double Z)'
-- `complex.h' (ISO): *Note Exponents and Logarithms::.
--
--`tcflag_t CSTOPB'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`complex double ctan (complex double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex float ctanf (complex float Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`complex double ctanh (complex double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex float ctanhf (complex float Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double ctanhl (complex long double Z)'
-- `complex.h' (ISO): *Note Hyperbolic Functions::.
--
--`complex long double ctanl (complex long double Z)'
-- `complex.h' (ISO): *Note Trig Functions::.
--
--`char * ctermid (char *STRING)'
-- `stdio.h' (POSIX.1): *Note Identifying the Terminal::.
--
--`char * ctime (const time_t *TIME)'
-- `time.h' (ISO): *Note Formatting Calendar Time::.
--
--`char * ctime_r (const time_t *TIME, char *BUFFER)'
-- `time.h' (POSIX.1c): *Note Formatting Calendar Time::.
--
--`char * cuserid (char *STRING)'
-- `stdio.h' (POSIX.1): *Note Who Logged In::.
--
--`int daylight'
-- `time.h' (SVID): *Note Time Zone Functions::.
--
--`DBL_DIG'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_EPSILON'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MANT_DIG'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MAX'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MAX_10_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MAX_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MIN'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MIN_10_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`DBL_MIN_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`char * dcgettext (const char *DOMAINNAME, const char *MSGID, int CATEGORY)'
-- `libintl.h' (GNU): *Note Translation with gettext::.
--
--`char * dcngettext (const char *DOMAIN, const char *MSGID1, const char *MSGID2, unsigned long int N, int CATEGORY)'
-- `libintl.h' (GNU): *Note Advanced gettext functions::.
--
--`DEAD_PROCESS'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`DEAD_PROCESS'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`DES_DECRYPT'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DES_ENCRYPT'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DESERR_BADPARAM'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DESERR_HWERROR'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DESERR_NOHWDEVICE'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DESERR_NONE'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`int DES_FAILED (int ERR)'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DES_HW'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`void des_setparity (char *KEY)'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`DES_SW'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`dev_t'
-- `sys/types.h' (POSIX.1): *Note Attribute Meanings::.
--
--`char * dgettext (const char *DOMAINNAME, const char *MSGID)'
-- `libintl.h' (GNU): *Note Translation with gettext::.
--
--`double difftime (time_t TIME1, time_t TIME0)'
-- `time.h' (ISO): *Note Elapsed Time::.
--
--`DIR'
-- `dirent.h' (POSIX.1): *Note Opening a Directory::.
--
--`int dirfd (DIR *DIRSTREAM)'
-- `dirent.h' (GNU): *Note Opening a Directory::.
--
--`char * dirname (char *PATH)'
-- `libgen.h' (XPG): *Note Finding Tokens in a String::.
--
--`div_t div (int NUMERATOR, int DENOMINATOR)'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`div_t'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`char * dngettext (const char *DOMAIN, const char *MSGID1, const char *MSGID2, unsigned long int N)'
-- `libintl.h' (GNU): *Note Advanced gettext functions::.
--
--`double drand48 (void)'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int drand48_r (struct drand48_data *BUFFER, double *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`double drem (double NUMERATOR, double DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`float dremf (float NUMERATOR, float DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`long double dreml (long double NUMERATOR, long double DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`mode_t DTTOIF (int DTYPE)'
-- `dirent.h' (BSD): *Note Directory Entries::.
--
--`int dup (int OLD)'
-- `unistd.h' (POSIX.1): *Note Duplicating Descriptors::.
--
--`int dup2 (int OLD, int NEW)'
-- `unistd.h' (POSIX.1): *Note Duplicating Descriptors::.
--
--`int E2BIG'
-- `errno.h' (POSIX.1: Argument list too long): *Note Error Codes::.
--
--`int EACCES'
-- `errno.h' (POSIX.1: Permission denied): *Note Error Codes::.
--
--`int EADDRINUSE'
-- `errno.h' (BSD: Address already in use): *Note Error Codes::.
--
--`int EADDRNOTAVAIL'
-- `errno.h' (BSD: Cannot assign requested address): *Note Error
-- Codes::.
--
--`int EADV'
-- `errno.h' (Linux???: Advertise error): *Note Error Codes::.
--
--`int EAFNOSUPPORT'
-- `errno.h' (BSD: Address family not supported by protocol): *Note
-- Error Codes::.
--
--`int EAGAIN'
-- `errno.h' (POSIX.1: Resource temporarily unavailable): *Note
-- Error Codes::.
--
--`int EALREADY'
-- `errno.h' (BSD: Operation already in progress): *Note Error
-- Codes::.
--
--`int EAUTH'
-- `errno.h' (BSD: Authentication error): *Note Error Codes::.
--
--`int EBACKGROUND'
-- `errno.h' (GNU: Inappropriate operation for background process):
-- *Note Error Codes::.
--
--`int EBADE'
-- `errno.h' (Linux???: Invalid exchange): *Note Error Codes::.
--
--`int EBADF'
-- `errno.h' (POSIX.1: Bad file descriptor): *Note Error Codes::.
--
--`int EBADFD'
-- `errno.h' (Linux???: File descriptor in bad state): *Note Error
-- Codes::.
--
--`int EBADMSG'
-- `errno.h' (XOPEN: Bad message): *Note Error Codes::.
--
--`int EBADR'
-- `errno.h' (Linux???: Invalid request descriptor): *Note Error
-- Codes::.
--
--`int EBADRPC'
-- `errno.h' (BSD: RPC struct is bad): *Note Error Codes::.
--
--`int EBADRQC'
-- `errno.h' (Linux???: Invalid request code): *Note Error Codes::.
--
--`int EBADSLT'
-- `errno.h' (Linux???: Invalid slot): *Note Error Codes::.
--
--`int EBFONT'
-- `errno.h' (Linux???: Bad font file format): *Note Error Codes::.
--
--`int EBUSY'
-- `errno.h' (POSIX.1: Device or resource busy): *Note Error Codes::.
--
--`int ECANCELED'
-- `errno.h' (POSIX.1: Operation canceled): *Note Error Codes::.
--
--`int ecb_crypt (char *KEY, char *BLOCKS, unsigned LEN, unsigned MODE)'
-- `rpc/des_crypt.h' (SUNRPC): *Note DES Encryption::.
--
--`int ECHILD'
-- `errno.h' (POSIX.1: No child processes): *Note Error Codes::.
--
--`tcflag_t ECHO'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`tcflag_t ECHOCTL'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`tcflag_t ECHOE'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`tcflag_t ECHOK'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`tcflag_t ECHOKE'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`tcflag_t ECHONL'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`tcflag_t ECHOPRT'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`int ECHRNG'
-- `errno.h' (Linux???: Channel number out of range): *Note Error
-- Codes::.
--
--`int ECOMM'
-- `errno.h' (Linux???: Communication error on send): *Note Error
-- Codes::.
--
--`int ECONNABORTED'
-- `errno.h' (BSD: Software caused connection abort): *Note Error
-- Codes::.
--
--`int ECONNREFUSED'
-- `errno.h' (BSD: Connection refused): *Note Error Codes::.
--
--`int ECONNRESET'
-- `errno.h' (BSD: Connection reset by peer): *Note Error Codes::.
--
--`char * ecvt (double VALUE, int NDIGIT, int *DECPT, int *NEG)'
-- `stdlib.h' (SVID, Unix98): *Note System V Number Conversion::.
--
--`char * ecvt_r (double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`int ED'
-- `errno.h' (GNU: ?): *Note Error Codes::.
--
--`int EDEADLK'
-- `errno.h' (POSIX.1: Resource deadlock avoided): *Note Error
-- Codes::.
--
--`int EDEADLOCK'
-- `errno.h' (Linux???: File locking deadlock error): *Note Error
-- Codes::.
--
--`int EDESTADDRREQ'
-- `errno.h' (BSD: Destination address required): *Note Error
-- Codes::.
--
--`int EDIED'
-- `errno.h' (GNU: Translator died): *Note Error Codes::.
--
--`int EDOM'
-- `errno.h' (ISO: Numerical argument out of domain): *Note Error
-- Codes::.
--
--`int EDOTDOT'
-- `errno.h' (Linux???: RFS specific error): *Note Error Codes::.
--
--`int EDQUOT'
-- `errno.h' (BSD: Disk quota exceeded): *Note Error Codes::.
--
--`int EEXIST'
-- `errno.h' (POSIX.1: File exists): *Note Error Codes::.
--
--`int EFAULT'
-- `errno.h' (POSIX.1: Bad address): *Note Error Codes::.
--
--`int EFBIG'
-- `errno.h' (POSIX.1: File too large): *Note Error Codes::.
--
--`int EFTYPE'
-- `errno.h' (BSD: Inappropriate file type or format): *Note Error
-- Codes::.
--
--`int EGRATUITOUS'
-- `errno.h' (GNU: Gratuitous error): *Note Error Codes::.
--
--`int EGREGIOUS'
-- `errno.h' (GNU: You really blew it this time): *Note Error
-- Codes::.
--
--`int EHOSTDOWN'
-- `errno.h' (BSD: Host is down): *Note Error Codes::.
--
--`int EHOSTUNREACH'
-- `errno.h' (BSD: No route to host): *Note Error Codes::.
--
--`int EIDRM'
-- `errno.h' (XOPEN: Identifier removed): *Note Error Codes::.
--
--`int EIEIO'
-- `errno.h' (GNU: Computer bought the farm): *Note Error Codes::.
--
--`int EILSEQ'
-- `errno.h' (ISO: Invalid or incomplete multibyte or wide
-- character): *Note Error Codes::.
--
--`int EINPROGRESS'
-- `errno.h' (BSD: Operation now in progress): *Note Error Codes::.
--
--`int EINTR'
-- `errno.h' (POSIX.1: Interrupted system call): *Note Error Codes::.
--
--`int EINVAL'
-- `errno.h' (POSIX.1: Invalid argument): *Note Error Codes::.
--
--`int EIO'
-- `errno.h' (POSIX.1: Input/output error): *Note Error Codes::.
--
--`int EISCONN'
-- `errno.h' (BSD: Transport endpoint is already connected): *Note
-- Error Codes::.
--
--`int EISDIR'
-- `errno.h' (POSIX.1: Is a directory): *Note Error Codes::.
--
--`int EISNAM'
-- `errno.h' (Linux???: Is a named type file): *Note Error Codes::.
--
--`int EL2HLT'
-- `errno.h' (Obsolete: Level 2 halted): *Note Error Codes::.
--
--`int EL2NSYNC'
-- `errno.h' (Obsolete: Level 2 not synchronized): *Note Error
-- Codes::.
--
--`int EL3HLT'
-- `errno.h' (Obsolete: Level 3 halted): *Note Error Codes::.
--
--`int EL3RST'
-- `errno.h' (Obsolete: Level 3 reset): *Note Error Codes::.
--
--`int ELIBACC'
-- `errno.h' (Linux???: Can not access a needed shared library):
-- *Note Error Codes::.
--
--`int ELIBBAD'
-- `errno.h' (Linux???: Accessing a corrupted shared library): *Note
-- Error Codes::.
--
--`int ELIBEXEC'
-- `errno.h' (Linux???: Cannot exec a shared library directly):
-- *Note Error Codes::.
--
--`int ELIBMAX'
-- `errno.h' (Linux???: Attempting to link in too many shared
-- libraries): *Note Error Codes::.
--
--`int ELIBSCN'
-- `errno.h' (Linux???: .lib section in a.out corrupted): *Note
-- Error Codes::.
--
--`int ELNRNG'
-- `errno.h' (Linux???: Link number out of range): *Note Error
-- Codes::.
--
--`int ELOOP'
-- `errno.h' (BSD: Too many levels of symbolic links): *Note Error
-- Codes::.
--
--`int EMEDIUMTYPE'
-- `errno.h' (Linux???: Wrong medium type): *Note Error Codes::.
--
--`int EMFILE'
-- `errno.h' (POSIX.1: Too many open files): *Note Error Codes::.
--
--`int EMLINK'
-- `errno.h' (POSIX.1: Too many links): *Note Error Codes::.
--
--`EMPTY'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`EMPTY'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int EMSGSIZE'
-- `errno.h' (BSD: Message too long): *Note Error Codes::.
--
--`int EMULTIHOP'
-- `errno.h' (XOPEN: Multihop attempted): *Note Error Codes::.
--
--`int ENAMETOOLONG'
-- `errno.h' (POSIX.1: File name too long): *Note Error Codes::.
--
--`int ENAVAIL'
-- `errno.h' (Linux???: No XENIX semaphores available): *Note Error
-- Codes::.
--
--`void encrypt (char *BLOCK, int EDFLAG)'
-- `crypt.h' (BSD, SVID): *Note DES Encryption::.
--
--`void encrypt_r (char *BLOCK, int EDFLAG, struct crypt_data * DATA)'
-- `crypt.h' (GNU): *Note DES Encryption::.
--
--`void endfsent (void)'
-- `fstab.h' (BSD): *Note fstab::.
--
--`void endgrent (void)'
-- `grp.h' (SVID, BSD): *Note Scanning All Groups::.
--
--`void endhostent (void)'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`int endmntent (FILE *STREAM)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`void endnetent (void)'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`void endnetgrent (void)'
-- `netdb.h' (BSD): *Note Lookup Netgroup::.
--
--`void endprotoent (void)'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`void endpwent (void)'
-- `pwd.h' (SVID, BSD): *Note Scanning All Users::.
--
--`void endservent (void)'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`void endutent (void)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`void endutxent (void)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int ENEEDAUTH'
-- `errno.h' (BSD: Need authenticator): *Note Error Codes::.
--
--`int ENETDOWN'
-- `errno.h' (BSD: Network is down): *Note Error Codes::.
--
--`int ENETRESET'
-- `errno.h' (BSD: Network dropped connection on reset): *Note Error
-- Codes::.
--
--`int ENETUNREACH'
-- `errno.h' (BSD: Network is unreachable): *Note Error Codes::.
--
--`int ENFILE'
-- `errno.h' (POSIX.1: Too many open files in system): *Note Error
-- Codes::.
--
--`int ENOANO'
-- `errno.h' (Linux???: No anode): *Note Error Codes::.
--
--`int ENOBUFS'
-- `errno.h' (BSD: No buffer space available): *Note Error Codes::.
--
--`int ENOCSI'
-- `errno.h' (Linux???: No CSI structure available): *Note Error
-- Codes::.
--
--`int ENODATA'
-- `errno.h' (XOPEN: No data available): *Note Error Codes::.
--
--`int ENODEV'
-- `errno.h' (POSIX.1: No such device): *Note Error Codes::.
--
--`int ENOENT'
-- `errno.h' (POSIX.1: No such file or directory): *Note Error
-- Codes::.
--
--`int ENOEXEC'
-- `errno.h' (POSIX.1: Exec format error): *Note Error Codes::.
--
--`int ENOLCK'
-- `errno.h' (POSIX.1: No locks available): *Note Error Codes::.
--
--`int ENOLINK'
-- `errno.h' (XOPEN: Link has been severed): *Note Error Codes::.
--
--`int ENOMEDIUM'
-- `errno.h' (Linux???: No medium found): *Note Error Codes::.
--
--`int ENOMEM'
-- `errno.h' (POSIX.1: Cannot allocate memory): *Note Error Codes::.
--
--`int ENOMSG'
-- `errno.h' (XOPEN: No message of desired type): *Note Error
-- Codes::.
--
--`int ENONET'
-- `errno.h' (Linux???: Machine is not on the network): *Note Error
-- Codes::.
--
--`int ENOPKG'
-- `errno.h' (Linux???: Package not installed): *Note Error Codes::.
--
--`int ENOPROTOOPT'
-- `errno.h' (BSD: Protocol not available): *Note Error Codes::.
--
--`int ENOSPC'
-- `errno.h' (POSIX.1: No space left on device): *Note Error Codes::.
--
--`int ENOSR'
-- `errno.h' (XOPEN: Out of streams resources): *Note Error Codes::.
--
--`int ENOSTR'
-- `errno.h' (XOPEN: Device not a stream): *Note Error Codes::.
--
--`int ENOSYS'
-- `errno.h' (POSIX.1: Function not implemented): *Note Error
-- Codes::.
--
--`int ENOTBLK'
-- `errno.h' (BSD: Block device required): *Note Error Codes::.
--
--`int ENOTCONN'
-- `errno.h' (BSD: Transport endpoint is not connected): *Note Error
-- Codes::.
--
--`int ENOTDIR'
-- `errno.h' (POSIX.1: Not a directory): *Note Error Codes::.
--
--`int ENOTEMPTY'
-- `errno.h' (POSIX.1: Directory not empty): *Note Error Codes::.
--
--`int ENOTNAM'
-- `errno.h' (Linux???: Not a XENIX named type file): *Note Error
-- Codes::.
--
--`int ENOTSOCK'
-- `errno.h' (BSD: Socket operation on non-socket): *Note Error
-- Codes::.
--
--`int ENOTSUP'
-- `errno.h' (POSIX.1: Not supported): *Note Error Codes::.
--
--`int ENOTTY'
-- `errno.h' (POSIX.1: Inappropriate ioctl for device): *Note Error
-- Codes::.
--
--`int ENOTUNIQ'
-- `errno.h' (Linux???: Name not unique on network): *Note Error
-- Codes::.
--
--`char ** environ'
-- `unistd.h' (POSIX.1): *Note Environment Access::.
--
--`error_t envz_add (char **ENVZ, size_t *ENVZ_LEN, const char *NAME, const char *VALUE)'
-- `envz.h' (GNU): *Note Envz Functions::.
--
--`char * envz_entry (const char *ENVZ, size_t ENVZ_LEN, const char *NAME)'
-- `envz.h' (GNU): *Note Envz Functions::.
--
--`char * envz_get (const char *ENVZ, size_t ENVZ_LEN, const char *NAME)'
-- `envz.h' (GNU): *Note Envz Functions::.
--
--`error_t envz_merge (char **ENVZ, size_t *ENVZ_LEN, const char *ENVZ2, size_t ENVZ2_LEN, int OVERRIDE)'
-- `envz.h' (GNU): *Note Envz Functions::.
--
--`void envz_strip (char **ENVZ, size_t *ENVZ_LEN)'
-- `envz.h' (GNU): *Note Envz Functions::.
--
--`int ENXIO'
-- `errno.h' (POSIX.1: No such device or address): *Note Error
-- Codes::.
--
--`int EOF'
-- `stdio.h' (ISO): *Note EOF and Errors::.
--
--`int EOPNOTSUPP'
-- `errno.h' (BSD: Operation not supported): *Note Error Codes::.
--
--`int EOVERFLOW'
-- `errno.h' (XOPEN: Value too large for defined data type): *Note
-- Error Codes::.
--
--`int EPERM'
-- `errno.h' (POSIX.1: Operation not permitted): *Note Error Codes::.
--
--`int EPFNOSUPPORT'
-- `errno.h' (BSD: Protocol family not supported): *Note Error
-- Codes::.
--
--`int EPIPE'
-- `errno.h' (POSIX.1: Broken pipe): *Note Error Codes::.
--
--`int EPROCLIM'
-- `errno.h' (BSD: Too many processes): *Note Error Codes::.
--
--`int EPROCUNAVAIL'
-- `errno.h' (BSD: RPC bad procedure for program): *Note Error
-- Codes::.
--
--`int EPROGMISMATCH'
-- `errno.h' (BSD: RPC program version wrong): *Note Error Codes::.
--
--`int EPROGUNAVAIL'
-- `errno.h' (BSD: RPC program not available): *Note Error Codes::.
--
--`int EPROTO'
-- `errno.h' (XOPEN: Protocol error): *Note Error Codes::.
--
--`int EPROTONOSUPPORT'
-- `errno.h' (BSD: Protocol not supported): *Note Error Codes::.
--
--`int EPROTOTYPE'
-- `errno.h' (BSD: Protocol wrong type for socket): *Note Error
-- Codes::.
--
--`int EQUIV_CLASS_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`double erand48 (unsigned short int XSUBI[3])'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int erand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, double *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`int ERANGE'
-- `errno.h' (ISO: Numerical result out of range): *Note Error
-- Codes::.
--
--`int EREMCHG'
-- `errno.h' (Linux???: Remote address changed): *Note Error Codes::.
--
--`int EREMOTE'
-- `errno.h' (BSD: Object is remote): *Note Error Codes::.
--
--`int EREMOTEIO'
-- `errno.h' (Linux???: Remote I/O error): *Note Error Codes::.
--
--`int ERESTART'
-- `errno.h' (Linux???: Interrupted system call should be restarted):
-- *Note Error Codes::.
--
--`double erf (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`double erfc (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float erfcf (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double erfcl (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float erff (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double erfl (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`int EROFS'
-- `errno.h' (POSIX.1: Read-only file system): *Note Error Codes::.
--
--`int ERPCMISMATCH'
-- `errno.h' (BSD: RPC version wrong): *Note Error Codes::.
--
--`void err (int STATUS, const char *FORMAT, ...)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`volatile int errno'
-- `errno.h' (ISO): *Note Checking for Errors::.
--
--`void error (int STATUS, int ERRNUM, const char *FORMAT, ...)'
-- `error.h' (GNU): *Note Error Messages::.
--
--`void error_at_line (int STATUS, int ERRNUM, const char *FNAME, unsigned int LINENO, const char *FORMAT, ...)'
-- `error.h' (GNU): *Note Error Messages::.
--
--`unsigned int error_message_count'
-- `error.h' (GNU): *Note Error Messages::.
--
--`int error_one_per_line'
-- `error.h' (GNU): *Note Error Messages::.
--
--`void (* error_print_progname ) (void)'
-- `error.h' (GNU): *Note Error Messages::.
--
--`void errx (int STATUS, const char *FORMAT, ...)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`int ESHUTDOWN'
-- `errno.h' (BSD: Cannot send after transport endpoint shutdown):
-- *Note Error Codes::.
--
--`int ESOCKTNOSUPPORT'
-- `errno.h' (BSD: Socket type not supported): *Note Error Codes::.
--
--`int ESPIPE'
-- `errno.h' (POSIX.1: Illegal seek): *Note Error Codes::.
--
--`int ESRCH'
-- `errno.h' (POSIX.1: No such process): *Note Error Codes::.
--
--`int ESRMNT'
-- `errno.h' (Linux???: Srmount error): *Note Error Codes::.
--
--`int ESTALE'
-- `errno.h' (BSD: Stale NFS file handle): *Note Error Codes::.
--
--`int ESTRPIPE'
-- `errno.h' (Linux???: Streams pipe error): *Note Error Codes::.
--
--`int ETIME'
-- `errno.h' (XOPEN: Timer expired): *Note Error Codes::.
--
--`int ETIMEDOUT'
-- `errno.h' (BSD: Connection timed out): *Note Error Codes::.
--
--`int ETOOMANYREFS'
-- `errno.h' (BSD: Too many references: cannot splice): *Note Error
-- Codes::.
--
--`int ETXTBSY'
-- `errno.h' (BSD: Text file busy): *Note Error Codes::.
--
--`int EUCLEAN'
-- `errno.h' (Linux???: Structure needs cleaning): *Note Error
-- Codes::.
--
--`int EUNATCH'
-- `errno.h' (Linux???: Protocol driver not attached): *Note Error
-- Codes::.
--
--`int EUSERS'
-- `errno.h' (BSD: Too many users): *Note Error Codes::.
--
--`int EWOULDBLOCK'
-- `errno.h' (BSD: Operation would block): *Note Error Codes::.
--
--`int EXDEV'
-- `errno.h' (POSIX.1: Invalid cross-device link): *Note Error
-- Codes::.
--
--`int execl (const char *FILENAME, const char *ARG0, ...)'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int execle (const char *FILENAME, const char *ARG0, char *const ENV[], ...)'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int execlp (const char *FILENAME, const char *ARG0, ...)'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int execv (const char *FILENAME, char *const ARGV[])'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int execve (const char *FILENAME, char *const ARGV[], char *const ENV[])'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int execvp (const char *FILENAME, char *const ARGV[])'
-- `unistd.h' (POSIX.1): *Note Executing a File::.
--
--`int EXFULL'
-- `errno.h' (Linux???: Exchange full): *Note Error Codes::.
--
--`void _Exit (int STATUS)'
-- `stdlib.h' (ISO): *Note Termination Internals::.
--
--`void _exit (int STATUS)'
-- `unistd.h' (POSIX.1): *Note Termination Internals::.
--
--`void exit (int STATUS)'
-- `stdlib.h' (ISO): *Note Normal Termination::.
--
--`int EXIT_FAILURE'
-- `stdlib.h' (ISO): *Note Exit Status::.
--
--`int EXIT_SUCCESS'
-- `stdlib.h' (ISO): *Note Exit Status::.
--
--`double exp (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double exp10 (double X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`float exp10f (float X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`long double exp10l (long double X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`double exp2 (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float exp2f (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double exp2l (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float expf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double expl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double expm1 (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float expm1f (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double expm1l (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`int EXPR_NEST_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`double fabs (double NUMBER)'
-- `math.h' (ISO): *Note Absolute Value::.
--
--`float fabsf (float NUMBER)'
-- `math.h' (ISO): *Note Absolute Value::.
--
--`long double fabsl (long double NUMBER)'
-- `math.h' (ISO): *Note Absolute Value::.
--
--`size_t __fbufsize (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Controlling Buffering::.
--
--`int fchdir (int FILEDES)'
-- `unistd.h' (XPG): *Note Working Directory::.
--
--`int fchmod (int FILEDES, int MODE)'
-- `sys/stat.h' (BSD): *Note Setting Permissions::.
--
--`int fchown (int FILEDES, int OWNER, int GROUP)'
-- `unistd.h' (BSD): *Note File Owner::.
--
--`int fclean (FILE *STREAM)'
-- `stdio.h' (GNU): *Note Cleaning Streams::.
--
--`int fclose (FILE *STREAM)'
-- `stdio.h' (ISO): *Note Closing Streams::.
--
--`int fcloseall (void)'
-- `stdio.h' (GNU): *Note Closing Streams::.
--
--`int fcntl (int FILEDES, int COMMAND, ...)'
-- `fcntl.h' (POSIX.1): *Note Control Operations::.
--
--`char * fcvt (double VALUE, int NDIGIT, int *DECPT, int *NEG)'
-- `stdlib.h' (SVID, Unix98): *Note System V Number Conversion::.
--
--`char * fcvt_r (double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
-- `stdlib.h' (SVID, Unix98): *Note System V Number Conversion::.
--
--`int fdatasync (int FILDES)'
-- `unistd.h' (POSIX): *Note Synchronizing I/O::.
--
--`int FD_CLOEXEC'
-- `fcntl.h' (POSIX.1): *Note Descriptor Flags::.
--
--`void FD_CLR (int FILEDES, fd_set *SET)'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`double fdim (double X, double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`float fdimf (float X, float Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`long double fdiml (long double X, long double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`int FD_ISSET (int FILEDES, fd_set *SET)'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`FILE * fdopen (int FILEDES, const char *OPENTYPE)'
-- `stdio.h' (POSIX.1): *Note Descriptors and Streams::.
--
--`void FD_SET (int FILEDES, fd_set *SET)'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`fd_set'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`int FD_SETSIZE'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`int F_DUPFD'
-- `fcntl.h' (POSIX.1): *Note Duplicating Descriptors::.
--
--`void FD_ZERO (fd_set *SET)'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`int feclearexcept (int EXCEPTS)'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int fedisableexcept (int EXCEPTS)'
-- `fenv.h' (GNU): *Note Control Functions::.
--
--`FE_DIVBYZERO'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`FE_DOWNWARD'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`int feenableexcept (int EXCEPTS)'
-- `fenv.h' (GNU): *Note Control Functions::.
--
--`int fegetenv (fenv_t *ENVP)'
-- `fenv.h' (ISO): *Note Control Functions::.
--
--`int fegetexcept (int EXCEPTS)'
-- `fenv.h' (GNU): *Note Control Functions::.
--
--`int fegetexceptflag (fexcept_t *FLAGP, int EXCEPTS)'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int fegetround (void)'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`int feholdexcept (fenv_t *ENVP)'
-- `fenv.h' (ISO): *Note Control Functions::.
--
--`FE_INEXACT'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`FE_INVALID'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int feof (FILE *STREAM)'
-- `stdio.h' (ISO): *Note EOF and Errors::.
--
--`int feof_unlocked (FILE *STREAM)'
-- `stdio.h' (GNU): *Note EOF and Errors::.
--
--`FE_OVERFLOW'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int feraiseexcept (int EXCEPTS)'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int ferror (FILE *STREAM)'
-- `stdio.h' (ISO): *Note EOF and Errors::.
--
--`int ferror_unlocked (FILE *STREAM)'
-- `stdio.h' (GNU): *Note EOF and Errors::.
--
--`int fesetenv (const fenv_t *ENVP)'
-- `fenv.h' (ISO): *Note Control Functions::.
--
--`int fesetexceptflag (const fexcept_t *FLAGP, int'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int fesetround (int ROUND)'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`int fetestexcept (int EXCEPTS)'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`FE_TONEAREST'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`FE_TOWARDZERO'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`FE_UNDERFLOW'
-- `fenv.h' (ISO): *Note Status bit operations::.
--
--`int feupdateenv (const fenv_t *ENVP)'
-- `fenv.h' (ISO): *Note Control Functions::.
--
--`FE_UPWARD'
-- `fenv.h' (ISO): *Note Rounding::.
--
--`int fflush (FILE *STREAM)'
-- `stdio.h' (ISO): *Note Flushing Buffers::.
--
--`int fflush_unlocked (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Flushing Buffers::.
--
--`int fgetc (FILE *STREAM)'
-- `stdio.h' (ISO): *Note Character Input::.
--
--`int fgetc_unlocked (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Character Input::.
--
--`int F_GETFD'
-- `fcntl.h' (POSIX.1): *Note Descriptor Flags::.
--
--`int F_GETFL'
-- `fcntl.h' (POSIX.1): *Note Getting File Status Flags::.
--
--`struct group * fgetgrent (FILE *STREAM)'
-- `grp.h' (SVID): *Note Scanning All Groups::.
--
--`int fgetgrent_r (FILE *STREAM, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
-- `grp.h' (GNU): *Note Scanning All Groups::.
--
--`int F_GETLK'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`int F_GETOWN'
-- `fcntl.h' (BSD): *Note Interrupt Input::.
--
--`int fgetpos (FILE *STREAM, fpos_t *POSITION)'
-- `stdio.h' (ISO): *Note Portable Positioning::.
--
--`int fgetpos64 (FILE *STREAM, fpos64_t *POSITION)'
-- `stdio.h' (Unix98): *Note Portable Positioning::.
--
--`struct passwd * fgetpwent (FILE *STREAM)'
-- `pwd.h' (SVID): *Note Scanning All Users::.
--
--`int fgetpwent_r (FILE *STREAM, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
-- `pwd.h' (GNU): *Note Scanning All Users::.
--
--`char * fgets (char *S, int COUNT, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Line Input::.
--
--`char * fgets_unlocked (char *S, int COUNT, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Line Input::.
--
--`wint_t fgetwc (FILE *STREAM)'
-- `wchar.h' (ISO): *Note Character Input::.
--
--`wint_t fgetwc_unlocked (FILE *STREAM)'
-- `wchar.h' (GNU): *Note Character Input::.
--
--`wchar_t * fgetws (wchar_t *WS, int COUNT, FILE *STREAM)'
-- `wchar.h' (ISO): *Note Line Input::.
--
--`wchar_t * fgetws_unlocked (wchar_t *WS, int COUNT, FILE *STREAM)'
-- `wchar.h' (GNU): *Note Line Input::.
--
--`FILE'
-- `stdio.h' (ISO): *Note Streams::.
--
--`int FILENAME_MAX'
-- `stdio.h' (ISO): *Note Limits for Files::.
--
--`int fileno (FILE *STREAM)'
-- `stdio.h' (POSIX.1): *Note Descriptors and Streams::.
--
--`int fileno_unlocked (FILE *STREAM)'
-- `stdio.h' (GNU): *Note Descriptors and Streams::.
--
--`int finite (double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int finitef (float X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int finitel (long double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int __flbf (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Controlling Buffering::.
--
--`void flockfile (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Streams and Threads::.
--
--`double floor (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float floorf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double floorl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`FLT_DIG'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_EPSILON'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MANT_DIG'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MAX'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MAX_10_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MAX_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MIN'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MIN_10_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_MIN_EXP'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_RADIX'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`FLT_ROUNDS'
-- `float.h' (ISO): *Note Floating Point Parameters::.
--
--`void _flushlbf (void)'
-- `stdio_ext.h' (GNU): *Note Flushing Buffers::.
--
--`tcflag_t FLUSHO'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`double fma (double X, double Y, double Z)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`float fmaf (float X, float Y, float Z)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`long double fmal (long double X, long double Y, long double Z)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`double fmax (double X, double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`float fmaxf (float X, float Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`long double fmaxl (long double X, long double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`FILE * fmemopen (void *BUF, size_t SIZE, const char *OPENTYPE)'
-- `stdio.h' (GNU): *Note String Streams::.
--
--`double fmin (double X, double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`float fminf (float X, float Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`long double fminl (long double X, long double Y)'
-- `math.h' (ISO): *Note Misc FP Arithmetic::.
--
--`double fmod (double NUMERATOR, double DENOMINATOR)'
-- `math.h' (ISO): *Note Remainder Functions::.
--
--`float fmodf (float NUMERATOR, float DENOMINATOR)'
-- `math.h' (ISO): *Note Remainder Functions::.
--
--`long double fmodl (long double NUMERATOR, long double DENOMINATOR)'
-- `math.h' (ISO): *Note Remainder Functions::.
--
--`int fmtmsg (long int CLASSIFICATION, const char *LABEL, int SEVERITY, const char *TEXT, const char *ACTION, const char *TAG)'
-- `fmtmsg.h' (XPG): *Note Printing Formatted Messages::.
--
--`int fnmatch (const char *PATTERN, const char *STRING, int FLAGS)'
-- `fnmatch.h' (POSIX.2): *Note Wildcard Matching::.
--
--`FNM_CASEFOLD'
-- `fnmatch.h' (GNU): *Note Wildcard Matching::.
--
--`FNM_EXTMATCH'
-- `fnmatch.h' (GNU): *Note Wildcard Matching::.
--
--`FNM_FILE_NAME'
-- `fnmatch.h' (GNU): *Note Wildcard Matching::.
--
--`FNM_LEADING_DIR'
-- `fnmatch.h' (GNU): *Note Wildcard Matching::.
--
--`FNM_NOESCAPE'
-- `fnmatch.h' (POSIX.2): *Note Wildcard Matching::.
--
--`FNM_PATHNAME'
-- `fnmatch.h' (POSIX.2): *Note Wildcard Matching::.
--
--`FNM_PERIOD'
-- `fnmatch.h' (POSIX.2): *Note Wildcard Matching::.
--
--`int F_OK'
-- `unistd.h' (POSIX.1): *Note Testing File Access::.
--
--`FILE * fopen (const char *FILENAME, const char *OPENTYPE)'
-- `stdio.h' (ISO): *Note Opening Streams::.
--
--`FILE * fopen64 (const char *FILENAME, const char *OPENTYPE)'
-- `stdio.h' (Unix98): *Note Opening Streams::.
--
--`FILE * fopencookie (void *COOKIE, const char *OPENTYPE, cookie_io_functions_t IO-FUNCTIONS)'
-- `stdio.h' (GNU): *Note Streams and Cookies::.
--
--`int FOPEN_MAX'
-- `stdio.h' (ISO): *Note Opening Streams::.
--
--`pid_t fork (void)'
-- `unistd.h' (POSIX.1): *Note Creating a Process::.
--
--`int forkpty (int *AMASTER, char *NAME, struct termios *TERMP, struct winsize *WINP)'
-- `pty.h' (BSD): *Note Pseudo-Terminal Pairs::.
--
--`long int fpathconf (int FILEDES, int PARAMETER)'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`int fpclassify (_float-type_ X)'
-- `math.h' (ISO): *Note Floating Point Classes::.
--
--`FPE_DECOVF_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTDIV_FAULT'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTDIV_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTOVF_FAULT'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTOVF_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTUND_FAULT'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_FLTUND_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_INTDIV_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`FPE_INTOVF_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`size_t __fpending (FILE *STREAM) The `__fpending''
-- `stdio_ext.h' (GNU): *Note Controlling Buffering::.
--
--`FPE_SUBRNG_TRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`int FP_ILOGB0'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`int FP_ILOGBNAN'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`fpos64_t'
-- `stdio.h' (Unix98): *Note Portable Positioning::.
--
--`fpos_t'
-- `stdio.h' (ISO): *Note Portable Positioning::.
--
--`int fprintf (FILE *STREAM, const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Output Functions::.
--
--`void __fpurge (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Flushing Buffers::.
--
--`int fputc (int C, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Simple Output::.
--
--`int fputc_unlocked (int C, FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Simple Output::.
--
--`int fputs (const char *S, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Simple Output::.
--
--`int fputs_unlocked (const char *S, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Simple Output::.
--
--`wint_t fputwc (wchar_t WC, FILE *STREAM)'
-- `wchar.h' (ISO): *Note Simple Output::.
--
--`wint_t fputwc_unlocked (wint_t WC, FILE *STREAM)'
-- `wchar.h' (POSIX): *Note Simple Output::.
--
--`int fputws (const wchar_t *WS, FILE *STREAM)'
-- `wchar.h' (ISO): *Note Simple Output::.
--
--`int fputws_unlocked (const wchar_t *WS, FILE *STREAM)'
-- `wchar.h' (GNU): *Note Simple Output::.
--
--`F_RDLCK'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`size_t fread (void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Block Input/Output::.
--
--`int __freadable (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Opening Streams::.
--
--`int __freading (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Opening Streams::.
--
--`size_t fread_unlocked (void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Block Input/Output::.
--
--`void free (void *PTR)'
-- `malloc.h', `stdlib.h' (ISO): *Note Freeing after Malloc::.
--
--`__free_hook'
-- `malloc.h' (GNU): *Note Hooks for Malloc::.
--
--`FILE * freopen (const char *FILENAME, const char *OPENTYPE, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Opening Streams::.
--
--`FILE * freopen64 (const char *FILENAME, const char *OPENTYPE, FILE *STREAM)'
-- `stdio.h' (Unix98): *Note Opening Streams::.
--
--`double frexp (double VALUE, int *EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`float frexpf (float VALUE, int *EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`long double frexpl (long double VALUE, int *EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`int fscanf (FILE *STREAM, const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Input Functions::.
--
--`int fseek (FILE *STREAM, long int OFFSET, int WHENCE)'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`int fseeko (FILE *STREAM, off_t OFFSET, int WHENCE)'
-- `stdio.h' (Unix98): *Note File Positioning::.
--
--`int fseeko64 (FILE *STREAM, off64_t OFFSET, int WHENCE)'
-- `stdio.h' (Unix98): *Note File Positioning::.
--
--`int F_SETFD'
-- `fcntl.h' (POSIX.1): *Note Descriptor Flags::.
--
--`int F_SETFL'
-- `fcntl.h' (POSIX.1): *Note Getting File Status Flags::.
--
--`int F_SETLK'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`int F_SETLKW'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`int __fsetlocking (FILE *STREAM, int TYPE)'
-- `stdio_ext.h' (GNU): *Note Streams and Threads::.
--
--`int F_SETOWN'
-- `fcntl.h' (BSD): *Note Interrupt Input::.
--
--`int fsetpos (FILE *STREAM, const fpos_t *POSITION)'
-- `stdio.h' (ISO): *Note Portable Positioning::.
--
--`int fsetpos64 (FILE *STREAM, const fpos64_t *POSITION)'
-- `stdio.h' (Unix98): *Note Portable Positioning::.
--
--`int fstat (int FILEDES, struct stat *BUF)'
-- `sys/stat.h' (POSIX.1): *Note Reading Attributes::.
--
--`int fstat64 (int FILEDES, struct stat64 *BUF)'
-- `sys/stat.h' (Unix98): *Note Reading Attributes::.
--
--`int fsync (int FILDES)'
-- `unistd.h' (POSIX): *Note Synchronizing I/O::.
--
--`long int ftell (FILE *STREAM)'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`off_t ftello (FILE *STREAM)'
-- `stdio.h' (Unix98): *Note File Positioning::.
--
--`off64_t ftello64 (FILE *STREAM)'
-- `stdio.h' (Unix98): *Note File Positioning::.
--
--`int ftruncate (int FD, off_t LENGTH)'
-- `unistd.h' (POSIX): *Note File Size::.
--
--`int ftruncate64 (int ID, off64_t LENGTH)'
-- `unistd.h' (Unix98): *Note File Size::.
--
--`int ftrylockfile (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Streams and Threads::.
--
--`int ftw (const char *FILENAME, __ftw_func_t FUNC, int DESCRIPTORS)'
-- `ftw.h' (SVID): *Note Working with Directory Trees::.
--
--`int ftw64 (const char *FILENAME, __ftw64_func_t FUNC, int DESCRIPTORS)'
-- `ftw.h' (Unix98): *Note Working with Directory Trees::.
--
--`__ftw64_func_t'
-- `ftw.h' (GNU): *Note Working with Directory Trees::.
--
--`__ftw_func_t'
-- `ftw.h' (GNU): *Note Working with Directory Trees::.
--
--`F_UNLCK'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`void funlockfile (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Streams and Threads::.
--
--`int futimes (int *FD, struct timeval TVP[2])'
-- `sys/time.h' (BSD): *Note File Times::.
--
--`int fwide (FILE *STREAM, int MODE)'
-- `wchar.h' (ISO): *Note Streams and I18N::.
--
--`int fwprintf (FILE *STREAM, const wchar_t *TEMPLATE, ...)'
-- `wchar.h' (ISO): *Note Formatted Output Functions::.
--
--`int __fwritable (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Opening Streams::.
--
--`size_t fwrite (const void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Block Input/Output::.
--
--`size_t fwrite_unlocked (const void *DATA, size_t SIZE, size_t COUNT, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Block Input/Output::.
--
--`int __fwriting (FILE *STREAM)'
-- `stdio_ext.h' (GNU): *Note Opening Streams::.
--
--`F_WRLCK'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`int fwscanf (FILE *STREAM, const wchar_t *TEMPLATE, ...)'
-- `wchar.h' (ISO): *Note Formatted Input Functions::.
--
--`double gamma (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float gammaf (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double gammal (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`void (*__gconv_end_fct) (struct gconv_step *)'
-- `gconv.h' (GNU): *Note glibc iconv Implementation::.
--
--`int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, const char **, const char *, size_t *, int)'
-- `gconv.h' (GNU): *Note glibc iconv Implementation::.
--
--`int (*__gconv_init_fct) (struct __gconv_step *)'
-- `gconv.h' (GNU): *Note glibc iconv Implementation::.
--
--`char * gcvt (double VALUE, int NDIGIT, char *BUF)'
-- `stdlib.h' (SVID, Unix98): *Note System V Number Conversion::.
--
--`long int get_avphys_pages (void)'
-- `sys/sysinfo.h' (GNU): *Note Query Memory Parameters::.
--
--`int getc (FILE *STREAM)'
-- `stdio.h' (ISO): *Note Character Input::.
--
--`int getchar (void)'
-- `stdio.h' (ISO): *Note Character Input::.
--
--`int getchar_unlocked (void)'
-- `stdio.h' (POSIX): *Note Character Input::.
--
--`int getcontext (ucontext_t *UCP)'
-- `ucontext.h' (SVID): *Note System V contexts::.
--
--`int getc_unlocked (FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Character Input::.
--
--`char * get_current_dir_name (void)'
-- `unistd.h' (GNU): *Note Working Directory::.
--
--`char * getcwd (char *BUFFER, size_t SIZE)'
-- `unistd.h' (POSIX.1): *Note Working Directory::.
--
--`struct tm * getdate (const char *STRING)'
-- `time.h' (Unix98): *Note General Time String Parsing::.
--
--`getdate_err'
-- `time.h' (Unix98): *Note General Time String Parsing::.
--
--`int getdate_r (const char *STRING, struct tm *TP)'
-- `time.h' (GNU): *Note General Time String Parsing::.
--
--`ssize_t getdelim (char **LINEPTR, size_t *N, int DELIMITER, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Line Input::.
--
--`int getdomainnname (char *NAME, size_t LENGTH)'
-- `unistd.h' (???): *Note Host Identification::.
--
--`gid_t getegid (void)'
-- `unistd.h' (POSIX.1): *Note Reading Persona::.
--
--`char * getenv (const char *NAME)'
-- `stdlib.h' (ISO): *Note Environment Access::.
--
--`uid_t geteuid (void)'
-- `unistd.h' (POSIX.1): *Note Reading Persona::.
--
--`struct fstab * getfsent (void)'
-- `fstab.h' (BSD): *Note fstab::.
--
--`struct fstab * getfsfile (const char *NAME)'
-- `fstab.h' (BSD): *Note fstab::.
--
--`struct fstab * getfsspec (const char *NAME)'
-- `fstab.h' (BSD): *Note fstab::.
--
--`gid_t getgid (void)'
-- `unistd.h' (POSIX.1): *Note Reading Persona::.
--
--`struct group * getgrent (void)'
-- `grp.h' (SVID, BSD): *Note Scanning All Groups::.
--
--`int getgrent_r (struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
-- `grp.h' (GNU): *Note Scanning All Groups::.
--
--`struct group * getgrgid (gid_t GID)'
-- `grp.h' (POSIX.1): *Note Lookup Group::.
--
--`int getgrgid_r (gid_t GID, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
-- `grp.h' (POSIX.1c): *Note Lookup Group::.
--
--`struct group * getgrnam (const char *NAME)'
-- `grp.h' (SVID, BSD): *Note Lookup Group::.
--
--`int getgrnam_r (const char *NAME, struct group *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct group **RESULT)'
-- `grp.h' (POSIX.1c): *Note Lookup Group::.
--
--`int getgrouplist (const char *USER, gid_t GROUP, gid_t *GROUPS, int *NGROUPS)'
-- `grp.h' (BSD): *Note Setting Groups::.
--
--`int getgroups (int COUNT, gid_t *GROUPS)'
-- `unistd.h' (POSIX.1): *Note Reading Persona::.
--
--`struct hostent * gethostbyaddr (const char *ADDR, size_t LENGTH, int FORMAT)'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`int gethostbyaddr_r (const char *ADDR, size_t LENGTH, int FORMAT, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
-- `netdb.h' (GNU): *Note Host Names::.
--
--`struct hostent * gethostbyname (const char *NAME)'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`struct hostent * gethostbyname2 (const char *NAME, int AF)'
-- `netdb.h' (IPv6 Basic API): *Note Host Names::.
--
--`int gethostbyname2_r (const char *NAME, int AF, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
-- `netdb.h' (GNU): *Note Host Names::.
--
--`int gethostbyname_r (const char *restrict NAME, struct hostent *restrict RESULT_BUF, char *restrict BUF, size_t BUFLEN, struct hostent **restrict RESULT, int *restrict H_ERRNOP)'
-- `netdb.h' (GNU): *Note Host Names::.
--
--`struct hostent * gethostent (void)'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`long int gethostid (void)'
-- `unistd.h' (BSD): *Note Host Identification::.
--
--`int gethostname (char *NAME, size_t SIZE)'
-- `unistd.h' (BSD): *Note Host Identification::.
--
--`int getitimer (int WHICH, struct itimerval *OLD)'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`ssize_t getline (char **LINEPTR, size_t *N, FILE *STREAM)'
-- `stdio.h' (GNU): *Note Line Input::.
--
--`int getloadavg (double LOADAVG[], int NELEM)'
-- `stdlib.h' (BSD): *Note Processor Resources::.
--
--`char * getlogin (void)'
-- `unistd.h' (POSIX.1): *Note Who Logged In::.
--
--`struct mntent * getmntent (FILE *STREAM)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`struct mntent * getmntent_r (FILE *STREAM, struct mentent *RESULT, char *BUFFER, int BUFSIZE)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`struct netent * getnetbyaddr (unsigned long int NET, int TYPE)'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`struct netent * getnetbyname (const char *NAME)'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`struct netent * getnetent (void)'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`int getnetgrent (char **HOSTP, char **USERP, char **DOMAINP)'
-- `netdb.h' (BSD): *Note Lookup Netgroup::.
--
--`int getnetgrent_r (char **HOSTP, char **USERP, char **DOMAINP, char *BUFFER, int BUFLEN)'
-- `netdb.h' (GNU): *Note Lookup Netgroup::.
--
--`int get_nprocs (void)'
-- `sys/sysinfo.h' (GNU): *Note Processor Resources::.
--
--`int get_nprocs_conf (void)'
-- `sys/sysinfo.h' (GNU): *Note Processor Resources::.
--
--`int getopt (int ARGC, char **ARGV, const char *OPTIONS)'
-- `unistd.h' (POSIX.2): *Note Using Getopt::.
--
--`int getopt_long (int ARGC, char *const *ARGV, const char *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)'
-- `getopt.h' (GNU): *Note Getopt Long Options::.
--
--`int getopt_long_only (int ARGC, char *const *ARGV, const char *SHORTOPTS, const struct option *LONGOPTS, int *INDEXPTR)'
-- `getopt.h' (GNU): *Note Getopt Long Options::.
--
--`int getpagesize (void)'
-- `unistd.h' (BSD): *Note Query Memory Parameters::.
--
--`char * getpass (const char *PROMPT)'
-- `unistd.h' (BSD): *Note getpass::.
--
--`int getpeername (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
-- `sys/socket.h' (BSD): *Note Who is Connected::.
--
--`int getpgid (pid_t PID)'
-- `unistd.h' (SVID): *Note Process Group Functions::.
--
--`pid_t getpgrp (pid_t PID)'
-- `unistd.h' (BSD): *Note Process Group Functions::.
--
--`pid_t getpgrp (void)'
-- `unistd.h' (POSIX.1): *Note Process Group Functions::.
--
--`long int get_phys_pages (void)'
-- `sys/sysinfo.h' (GNU): *Note Query Memory Parameters::.
--
--`pid_t getpid (void)'
-- `unistd.h' (POSIX.1): *Note Process Identification::.
--
--`pid_t getppid (void)'
-- `unistd.h' (POSIX.1): *Note Process Identification::.
--
--`int getpriority (int CLASS, int ID)'
-- `sys/resource.h' (BSD,POSIX): *Note Traditional Scheduling
-- Functions::.
--
--`struct protoent * getprotobyname (const char *NAME)'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`struct protoent * getprotobynumber (int PROTOCOL)'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`struct protoent * getprotoent (void)'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`int getpt (void)'
-- `stdlib.h' (GNU): *Note Allocation::.
--
--`struct passwd * getpwent (void)'
-- `pwd.h' (POSIX.1): *Note Scanning All Users::.
--
--`int getpwent_r (struct passwd *RESULT_BUF, char *BUFFER, int BUFLEN, struct passwd **RESULT)'
-- `pwd.h' (GNU): *Note Scanning All Users::.
--
--`struct passwd * getpwnam (const char *NAME)'
-- `pwd.h' (POSIX.1): *Note Lookup User::.
--
--`int getpwnam_r (const char *NAME, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
-- `pwd.h' (POSIX.1c): *Note Lookup User::.
--
--`struct passwd * getpwuid (uid_t UID)'
-- `pwd.h' (POSIX.1): *Note Lookup User::.
--
--`int getpwuid_r (uid_t UID, struct passwd *RESULT_BUF, char *BUFFER, size_t BUFLEN, struct passwd **RESULT)'
-- `pwd.h' (POSIX.1c): *Note Lookup User::.
--
--`int getrlimit (int RESOURCE, struct rlimit *RLP)'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`int getrlimit64 (int RESOURCE, struct rlimit64 *RLP)'
-- `sys/resource.h' (Unix98): *Note Limits on Resources::.
--
--`int getrusage (int PROCESSES, struct rusage *RUSAGE)'
-- `sys/resource.h' (BSD): *Note Resource Usage::.
--
--`char * gets (char *S)'
-- `stdio.h' (ISO): *Note Line Input::.
--
--`struct servent * getservbyname (const char *NAME, const char *PROTO)'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`struct servent * getservbyport (int PORT, const char *PROTO)'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`struct servent * getservent (void)'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`pid_t getsid (pid_t PID)'
-- `unistd.h' (SVID): *Note Process Group Functions::.
--
--`int getsockname (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
-- `sys/socket.h' (BSD): *Note Reading Address::.
--
--`int getsockopt (int SOCKET, int LEVEL, int OPTNAME, void *OPTVAL, socklen_t *OPTLEN-PTR)'
-- `sys/socket.h' (BSD): *Note Socket Option Functions::.
--
--`int getsubopt (char **OPTIONP, const char* const *TOKENS, char **VALUEP)'
-- `stdlib.h' (stdlib.h): *Note Suboptions Example: Suboptions.
--
--`char * gettext (const char *MSGID)'
-- `libintl.h' (GNU): *Note Translation with gettext::.
--
--`int gettimeofday (struct timeval *TP, struct timezone *TZP)'
-- `sys/time.h' (BSD): *Note High-Resolution Calendar::.
--
--`uid_t getuid (void)'
-- `unistd.h' (POSIX.1): *Note Reading Persona::.
--
--`mode_t getumask (void)'
-- `sys/stat.h' (GNU): *Note Setting Permissions::.
--
--`struct utmp * getutent (void)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`int getutent_r (struct utmp *BUFFER, struct utmp **RESULT)'
-- `utmp.h' (GNU): *Note Manipulating the Database::.
--
--`struct utmp * getutid (const struct utmp *ID)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`int getutid_r (const struct utmp *ID, struct utmp *BUFFER, struct utmp **RESULT)'
-- `utmp.h' (GNU): *Note Manipulating the Database::.
--
--`struct utmp * getutline (const struct utmp *LINE)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`int getutline_r (const struct utmp *LINE, struct utmp *BUFFER, struct utmp **RESULT)'
-- `utmp.h' (GNU): *Note Manipulating the Database::.
--
--`int getutmp (const struct utmpx *utmpx, struct utmp *utmp)'
-- `utmp.h' (GNU): *Note XPG Functions::.
--
--`int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)'
-- `utmp.h' (GNU): *Note XPG Functions::.
--
--`struct utmpx * getutxent (void)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`struct utmpx * getutxid (const struct utmpx *ID)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`struct utmpx * getutxline (const struct utmpx *LINE)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int getw (FILE *STREAM)'
-- `stdio.h' (SVID): *Note Character Input::.
--
--`wint_t getwc (FILE *STREAM)'
-- `wchar.h' (ISO): *Note Character Input::.
--
--`wint_t getwchar (void)'
-- `wchar.h' (ISO): *Note Character Input::.
--
--`wint_t getwchar_unlocked (void)'
-- `wchar.h' (GNU): *Note Character Input::.
--
--`wint_t getwc_unlocked (FILE *STREAM)'
-- `wchar.h' (GNU): *Note Character Input::.
--
--`char * getwd (char *BUFFER)'
-- `unistd.h' (BSD): *Note Working Directory::.
--
--`gid_t'
-- `sys/types.h' (POSIX.1): *Note Reading Persona::.
--
--`int glob (const char *PATTERN, int FLAGS, int (*ERRFUNC) (const char *FILENAME, int ERROR-CODE), glob_t *VECTOR-PTR)'
-- `glob.h' (POSIX.2): *Note Calling Glob::.
--
--`int glob64 (const char *PATTERN, int FLAGS, int (*ERRFUNC) (const char *FILENAME, int ERROR-CODE), glob64_t *VECTOR-PTR)'
-- `glob.h' (GNU): *Note Calling Glob::.
--
--`glob64_t'
-- `glob.h' (GNU): *Note Calling Glob::.
--
--`GLOB_ABORTED'
-- `glob.h' (POSIX.2): *Note Calling Glob::.
--
--`GLOB_ALTDIRFUNC'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_APPEND'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_BRACE'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_DOOFFS'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_ERR'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`void globfree (glob_t *PGLOB)'
-- `glob.h' (POSIX.2): *Note More Flags for Globbing::.
--
--`void globfree64 (glob64_t *PGLOB)'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_MAGCHAR'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_MARK'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_NOCHECK'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_NOESCAPE'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_NOMAGIC'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_NOMATCH'
-- `glob.h' (POSIX.2): *Note Calling Glob::.
--
--`GLOB_NOSORT'
-- `glob.h' (POSIX.2): *Note Flags for Globbing::.
--
--`GLOB_NOSPACE'
-- `glob.h' (POSIX.2): *Note Calling Glob::.
--
--`GLOB_ONLYDIR'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_PERIOD'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`glob_t'
-- `glob.h' (POSIX.2): *Note Calling Glob::.
--
--`GLOB_TILDE'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`GLOB_TILDE_CHECK'
-- `glob.h' (GNU): *Note More Flags for Globbing::.
--
--`struct tm * gmtime (const time_t *TIME)'
-- `time.h' (ISO): *Note Broken-down Time::.
--
--`struct tm * gmtime_r (const time_t *TIME, struct tm *RESULTP)'
-- `time.h' (POSIX.1c): *Note Broken-down Time::.
--
--`_GNU_SOURCE'
-- (GNU): *Note Feature Test Macros::.
--
--`int grantpt (int FILEDES)'
-- `stdlib.h' (SVID, XPG4.2): *Note Allocation::.
--
--`int gsignal (int SIGNUM)'
-- `signal.h' (SVID): *Note Signaling Yourself::.
--
--`int gtty (int FILEDES, struct sgttyb *ATTRIBUTES)'
-- `sgtty.h' (BSD): *Note BSD Terminal Modes::.
--
--`char * hasmntopt (const struct mntent *MNT, const char *OPT)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`int hcreate (size_t NEL)'
-- `search.h' (SVID): *Note Hash Search Function::.
--
--`int hcreate_r (size_t NEL, struct hsearch_data *HTAB)'
-- `search.h' (GNU): *Note Hash Search Function::.
--
--`void hdestroy (void)'
-- `search.h' (SVID): *Note Hash Search Function::.
--
--`void hdestroy_r (struct hsearch_data *HTAB)'
-- `search.h' (GNU): *Note Hash Search Function::.
--
--`HOST_NOT_FOUND'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`ENTRY * hsearch (ENTRY ITEM, ACTION ACTION)'
-- `search.h' (SVID): *Note Hash Search Function::.
--
--`int hsearch_r (ENTRY ITEM, ACTION ACTION, ENTRY **RETVAL, struct hsearch_data *HTAB)'
-- `search.h' (GNU): *Note Hash Search Function::.
--
--`uint32_t htonl (uint32_t HOSTLONG)'
-- `netinet/in.h' (BSD): *Note Byte Order::.
--
--`uint16_t htons (uint16_t HOSTSHORT)'
-- `netinet/in.h' (BSD): *Note Byte Order::.
--
--`double HUGE_VAL'
-- `math.h' (ISO): *Note Math Error Reporting::.
--
--`float HUGE_VALF'
-- `math.h' (ISO): *Note Math Error Reporting::.
--
--`long double HUGE_VALL'
-- `math.h' (ISO): *Note Math Error Reporting::.
--
--`tcflag_t HUPCL'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`double hypot (double X, double Y)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float hypotf (float X, float Y)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double hypotl (long double X, long double Y)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`tcflag_t ICANON'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`size_t iconv (iconv_t CD, char **INBUF, size_t *INBYTESLEFT, char **OUTBUF, size_t *OUTBYTESLEFT)'
-- `iconv.h' (XPG2): *Note Generic Conversion Interface::.
--
--`int iconv_close (iconv_t CD)'
-- `iconv.h' (XPG2): *Note Generic Conversion Interface::.
--
--`iconv_t iconv_open (const char *TOCODE, const char *FROMCODE)'
-- `iconv.h' (XPG2): *Note Generic Conversion Interface::.
--
--`iconv_t'
-- `iconv.h' (XPG2): *Note Generic Conversion Interface::.
--
--`tcflag_t ICRNL'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`tcflag_t IEXTEN'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`void if_freenameindex (struct if_nameindex *ptr)'
-- `net/if.h' (IPv6 basic API): *Note Interface Naming::.
--
--`char * if_indextoname (unsigned int ifindex, char *ifname)'
-- `net/if.h' (IPv6 basic API): *Note Interface Naming::.
--
--`struct if_nameindex * if_nameindex (void)'
-- `net/if.h' (IPv6 basic API): *Note Interface Naming::.
--
--`unsigned int if_nametoindex (const char *ifname)'
-- `net/if.h' (IPv6 basic API): *Note Interface Naming::.
--
--`size_t IFNAMSIZ'
-- `net/if.h' (net/if.h): *Note Interface Naming::.
--
--`int IFTODT (mode_t MODE)'
-- `dirent.h' (BSD): *Note Directory Entries::.
--
--`tcflag_t IGNBRK'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`tcflag_t IGNCR'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`tcflag_t IGNPAR'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`int ilogb (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`int ilogbf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`int ilogbl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`intmax_t imaxabs (intmax_t NUMBER)'
-- `inttypes.h' (ISO): *Note Absolute Value::.
--
--`tcflag_t IMAXBEL'
-- `termios.h' (BSD): *Note Input Modes::.
--
--`imaxdiv_t imaxdiv (intmax_t NUMERATOR, intmax_t DENOMINATOR)'
-- `inttypes.h' (ISO): *Note Integer Division::.
--
--`imaxdiv_t'
-- `inttypes.h' (ISO): *Note Integer Division::.
--
--`struct in6_addr in6addr_any'
-- `netinet/in.h' (IPv6 basic API): *Note Host Address Data Type::.
--
--`struct in6_addr in6addr_loopback'
-- `netinet/in.h' (IPv6 basic API): *Note Host Address Data Type::.
--
--`uint32_t INADDR_ANY'
-- `netinet/in.h' (BSD): *Note Host Address Data Type::.
--
--`uint32_t INADDR_BROADCAST'
-- `netinet/in.h' (BSD): *Note Host Address Data Type::.
--
--`uint32_t INADDR_LOOPBACK'
-- `netinet/in.h' (BSD): *Note Host Address Data Type::.
--
--`uint32_t INADDR_NONE'
-- `netinet/in.h' (BSD): *Note Host Address Data Type::.
--
--`char * index (const char *STRING, int C)'
-- `string.h' (BSD): *Note Search Functions::.
--
--`uint32_t inet_addr (const char *NAME)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`int inet_aton (const char *NAME, struct in_addr *ADDR)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`uint32_t inet_lnaof (struct in_addr ADDR)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`struct in_addr inet_makeaddr (uint32_t NET, uint32_t LOCAL)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`uint32_t inet_netof (struct in_addr ADDR)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`uint32_t inet_network (const char *NAME)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`char * inet_ntoa (struct in_addr ADDR)'
-- `arpa/inet.h' (BSD): *Note Host Address Functions::.
--
--`const char * inet_ntop (int AF, const void *CP, char *BUF, size_t LEN)'
-- `arpa/inet.h' (IPv6 basic API): *Note Host Address Functions::.
--
--`int inet_pton (int AF, const char *CP, void *BUF)'
-- `arpa/inet.h' (IPv6 basic API): *Note Host Address Functions::.
--
--`float INFINITY'
-- `math.h' (ISO): *Note Infinity and NaN::.
--
--`int initgroups (const char *USER, gid_t GROUP)'
-- `grp.h' (BSD): *Note Setting Groups::.
--
--`INIT_PROCESS'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`INIT_PROCESS'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`void * initstate (unsigned int SEED, void *STATE, size_t SIZE)'
-- `stdlib.h' (BSD): *Note BSD Random::.
--
--`int initstate_r (unsigned int SEED, char *restrict STATEBUF, size_t STATELEN, struct random_data *restrict BUF)'
-- `stdlib.h' (GNU): *Note BSD Random::.
--
--`tcflag_t INLCR'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`int innetgr (const char *NETGROUP, const char *HOST, const char *USER, const char *DOMAIN)'
-- `netdb.h' (BSD): *Note Netgroup Membership::.
--
--`ino64_t'
-- `sys/types.h' (Unix98): *Note Attribute Meanings::.
--
--`ino_t'
-- `sys/types.h' (POSIX.1): *Note Attribute Meanings::.
--
--`tcflag_t INPCK'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`INT_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`INT_MIN'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int ioctl (int FILEDES, int COMMAND, ...)'
-- `sys/ioctl.h' (BSD): *Note IOCTLs::.
--
--`int _IOFBF'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`int _IOLBF'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`int _IONBF'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`int IPPORT_RESERVED'
-- `netinet/in.h' (BSD): *Note Ports::.
--
--`int IPPORT_USERRESERVED'
-- `netinet/in.h' (BSD): *Note Ports::.
--
--`int isalnum (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isalpha (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isascii (int C)'
-- `ctype.h' (SVID, BSD): *Note Classification of Characters::.
--
--`int isatty (int FILEDES)'
-- `unistd.h' (POSIX.1): *Note Is It a Terminal::.
--
--`int isblank (int C)'
-- `ctype.h' (GNU): *Note Classification of Characters::.
--
--`int iscntrl (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isdigit (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isfinite (_float-type_ X)'
-- `math.h' (ISO): *Note Floating Point Classes::.
--
--`int isgraph (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isgreater (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`int isgreaterequal (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`tcflag_t ISIG'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`int isinf (double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isinff (float X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isinfl (long double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isless (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`int islessequal (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`int islessgreater (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`int islower (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isnan (_float-type_ X)'
-- `math.h' (ISO): *Note Floating Point Classes::.
--
--`int isnan (double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isnanf (float X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isnanl (long double X)'
-- `math.h' (BSD): *Note Floating Point Classes::.
--
--`int isnormal (_float-type_ X)'
-- `math.h' (ISO): *Note Floating Point Classes::.
--
--`_ISOC99_SOURCE'
-- (GNU): *Note Feature Test Macros::.
--
--`int isprint (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int ispunct (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int isspace (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`tcflag_t ISTRIP'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`int isunordered (_real-floating_ X, _real-floating_ Y)'
-- `math.h' (ISO): *Note FP Comparison Functions::.
--
--`int isupper (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`int iswalnum (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswalpha (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswblank (wint_t WC)'
-- `wctype.h' (GNU): *Note Classification of Wide Characters::.
--
--`int iswcntrl (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswctype (wint_t WC, wctype_t DESC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswdigit (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswgraph (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswlower (wint_t WC)'
-- `ctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswprint (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswpunct (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswspace (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswupper (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int iswxdigit (wint_t WC)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int isxdigit (int C)'
-- `ctype.h' (ISO): *Note Classification of Characters::.
--
--`ITIMER_PROF'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`ITIMER_REAL'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`ITIMER_VIRTUAL'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`tcflag_t IXANY'
-- `termios.h' (BSD): *Note Input Modes::.
--
--`tcflag_t IXOFF'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`tcflag_t IXON'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`double j0 (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float j0f (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double j0l (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`double j1 (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float j1f (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double j1l (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`jmp_buf'
-- `setjmp.h' (ISO): *Note Non-Local Details::.
--
--`double jn (int n, double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float jnf (int n, float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double jnl (int n, long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long int jrand48 (unsigned short int XSUBI[3])'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int jrand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, long int *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`int kill (pid_t PID, int SIGNUM)'
-- `signal.h' (POSIX.1): *Note Signaling Another Process::.
--
--`int killpg (int PGID, int SIGNUM)'
-- `signal.h' (BSD): *Note Signaling Another Process::.
--
--`char * l64a (long int N)'
-- `stdlib.h' (XPG): *Note Encode Binary Data::.
--
--`long int labs (long int NUMBER)'
-- `stdlib.h' (ISO): *Note Absolute Value::.
--
--`LANG'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`LC_ALL'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`LC_COLLATE'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`LC_CTYPE'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`LC_MESSAGES'
-- `locale.h' (XOPEN): *Note Locale Categories::.
--
--`LC_MONETARY'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`LC_NUMERIC'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`void lcong48 (unsigned short int PARAM[7])'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int lcong48_r (unsigned short int PARAM[7], struct drand48_data *BUFFER)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`int L_ctermid'
-- `stdio.h' (POSIX.1): *Note Identifying the Terminal::.
--
--`LC_TIME'
-- `locale.h' (ISO): *Note Locale Categories::.
--
--`int L_cuserid'
-- `stdio.h' (POSIX.1): *Note Who Logged In::.
--
--`double ldexp (double VALUE, int EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`float ldexpf (float VALUE, int EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`long double ldexpl (long double VALUE, int EXPONENT)'
-- `math.h' (ISO): *Note Normalization Functions::.
--
--`ldiv_t ldiv (long int NUMERATOR, long int DENOMINATOR)'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`ldiv_t'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`void * lfind (const void *KEY, void *BASE, size_t *NMEMB, size_t SIZE, comparison_fn_t COMPAR)'
-- `search.h' (SVID): *Note Array Search Function::.
--
--`double lgamma (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float lgammaf (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float lgammaf_r (float X, int *SIGNP)'
-- `math.h' (XPG): *Note Special Functions::.
--
--`long double lgammal (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double lgammal_r (long double X, int *SIGNP)'
-- `math.h' (XPG): *Note Special Functions::.
--
--`double lgamma_r (double X, int *SIGNP)'
-- `math.h' (XPG): *Note Special Functions::.
--
--`L_INCR'
-- `sys/file.h' (BSD): *Note File Positioning::.
--
--`int LINE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Limits::.
--
--`int link (const char *OLDNAME, const char *NEWNAME)'
-- `unistd.h' (POSIX.1): *Note Hard Links::.
--
--`int LINK_MAX'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`int lio_listio (int MODE, struct aiocb *const LIST[], int NENT, struct sigevent *SIG)'
-- `aio.h' (POSIX.1b): *Note Asynchronous Reads/Writes::.
--
--`int lio_listio64 (int MODE, struct aiocb *const LIST, int NENT, struct sigevent *SIG)'
-- `aio.h' (Unix98): *Note Asynchronous Reads/Writes::.
--
--`int listen (int SOCKET, unsigned int N)'
-- `sys/socket.h' (BSD): *Note Listening::.
--
--`long long int llabs (long long int NUMBER)'
-- `stdlib.h' (ISO): *Note Absolute Value::.
--
--`lldiv_t lldiv (long long int NUMERATOR, long long int DENOMINATOR)'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`lldiv_t'
-- `stdlib.h' (ISO): *Note Integer Division::.
--
--`long long int llrint (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long long int llrintf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long long int llrintl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long long int llround (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long long int llroundf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long long int llroundl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`struct lconv * localeconv (void)'
-- `locale.h' (ISO): *Note The Lame Way to Locale Data::.
--
--`struct tm * localtime (const time_t *TIME)'
-- `time.h' (ISO): *Note Broken-down Time::.
--
--`struct tm * localtime_r (const time_t *TIME, struct tm *RESULTP)'
-- `time.h' (POSIX.1c): *Note Broken-down Time::.
--
--`double log (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double log10 (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float log10f (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double log10l (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double log1p (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float log1pf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double log1pl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double log2 (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float log2f (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double log2l (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double logb (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float logbf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double logbl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float logf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`void login (const struct utmp *ENTRY)'
-- `utmp.h' (BSD): *Note Logging In and Out::.
--
--`LOGIN_PROCESS'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`LOGIN_PROCESS'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int login_tty (int FILEDES)'
-- `utmp.h' (BSD): *Note Logging In and Out::.
--
--`long double logl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`int logout (const char *UT_LINE)'
-- `utmp.h' (BSD): *Note Logging In and Out::.
--
--`void logwtmp (const char *UT_LINE, const char *UT_NAME, const char *UT_HOST)'
-- `utmp.h' (BSD): *Note Logging In and Out::.
--
--`void longjmp (jmp_buf STATE, int VALUE)'
-- `setjmp.h' (ISO): *Note Non-Local Details::.
--
--`LONG_LONG_MAX'
-- `limits.h' (GNU): *Note Range of Type::.
--
--`LONG_LONG_MIN'
-- `limits.h' (GNU): *Note Range of Type::.
--
--`LONG_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`LONG_MIN'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`long int lrand48 (void)'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int lrand48_r (struct drand48_data *BUFFER, double *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`long int lrint (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long int lrintf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long int lrintl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long int lround (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long int lroundf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long int lroundl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`void * lsearch (const void *KEY, void *BASE, size_t *NMEMB, size_t SIZE, comparison_fn_t COMPAR)'
-- `search.h' (SVID): *Note Array Search Function::.
--
--`off_t lseek (int FILEDES, off_t OFFSET, int WHENCE)'
-- `unistd.h' (POSIX.1): *Note File Position Primitive::.
--
--`off64_t lseek64 (int FILEDES, off64_t OFFSET, int WHENCE)'
-- `unistd.h' (Unix98): *Note File Position Primitive::.
--
--`L_SET'
-- `sys/file.h' (BSD): *Note File Positioning::.
--
--`int lstat (const char *FILENAME, struct stat *BUF)'
-- `sys/stat.h' (BSD): *Note Reading Attributes::.
--
--`int lstat64 (const char *FILENAME, struct stat64 *BUF)'
-- `sys/stat.h' (Unix98): *Note Reading Attributes::.
--
--`int L_tmpnam'
-- `stdio.h' (ISO): *Note Temporary Files::.
--
--`int lutimes (const char *FILENAME, struct timeval TVP[2])'
-- `sys/time.h' (BSD): *Note File Times::.
--
--`L_XTND'
-- `sys/file.h' (BSD): *Note File Positioning::.
--
--`int madvise (void *ADDR, size_t LENGTH, int ADVICE)'
-- `sys/mman.h' (POSIX): *Note Memory-mapped I/O::.
--
--`void makecontext (ucontext_t *UCP, void (*FUNC) (void), int ARGC, ...)'
-- `ucontext.h' (SVID): *Note System V contexts::.
--
--`struct mallinfo mallinfo (void)'
-- `malloc.h' (SVID): *Note Statistics of Malloc::.
--
--`void * malloc (size_t SIZE)'
-- `malloc.h', `stdlib.h' (ISO): *Note Basic Allocation::.
--
--`__malloc_hook'
-- `malloc.h' (GNU): *Note Hooks for Malloc::.
--
--`__malloc_initialize_hook'
-- `malloc.h' (GNU): *Note Hooks for Malloc::.
--
--`int MAX_CANON'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`int MAX_INPUT'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`int MAXNAMLEN'
-- `dirent.h' (BSD): *Note Limits for Files::.
--
--`int MAXSYMLINKS'
-- `sys/param.h' (BSD): *Note Symbolic Links::.
--
--`int MB_CUR_MAX'
-- `stdlib.h' (ISO): *Note Selecting the Conversion::.
--
--`int mblen (const char *STRING, size_t SIZE)'
-- `stdlib.h' (ISO): *Note Non-reentrant Character Conversion::.
--
--`int MB_LEN_MAX'
-- `limits.h' (ISO): *Note Selecting the Conversion::.
--
--`size_t mbrlen (const char *restrict S, size_t N, mbstate_t *PS)'
-- `wchar.h' (ISO): *Note Converting a Character::.
--
--`size_t mbrtowc (wchar_t *restrict PWC, const char *restrict S, size_t N, mbstate_t *restrict PS)'
-- `wchar.h' (ISO): *Note Converting a Character::.
--
--`int mbsinit (const mbstate_t *PS)'
-- `wchar.h' (ISO): *Note Keeping the state::.
--
--`size_t mbsnrtowcs (wchar_t *restrict DST, const char **restrict SRC, size_t NMC, size_t LEN, mbstate_t *restrict PS)'
-- `wchar.h' (GNU): *Note Converting Strings::.
--
--`size_t mbsrtowcs (wchar_t *restrict DST, const char **restrict SRC, size_t LEN, mbstate_t *restrict PS)'
-- `wchar.h' (ISO): *Note Converting Strings::.
--
--`mbstate_t'
-- `wchar.h' (ISO): *Note Keeping the state::.
--
--`size_t mbstowcs (wchar_t *WSTRING, const char *STRING, size_t SIZE)'
-- `stdlib.h' (ISO): *Note Non-reentrant String Conversion::.
--
--`int mbtowc (wchar_t *restrict RESULT, const char *restrict STRING, size_t SIZE)'
-- `stdlib.h' (ISO): *Note Non-reentrant Character Conversion::.
--
--`int mcheck (void (*ABORTFN) (enum mcheck_status STATUS))'
-- `mcheck.h' (GNU): *Note Heap Consistency Checking::.
--
--`tcflag_t MDMBUF'
-- `termios.h' (BSD): *Note Control Modes::.
--
--`void * memalign (size_t BOUNDARY, size_t SIZE)'
-- `malloc.h' (BSD): *Note Aligned Memory Blocks::.
--
--`__memalign_hook'
-- `malloc.h' (GNU): *Note Hooks for Malloc::.
--
--`void * memccpy (void *restrict TO, const void *restrict FROM, int C, size_t SIZE)'
-- `string.h' (SVID): *Note Copying and Concatenation::.
--
--`void * memchr (const void *BLOCK, int C, size_t SIZE)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`int memcmp (const void *A1, const void *A2, size_t SIZE)'
-- `string.h' (ISO): *Note String/Array Comparison::.
--
--`void * memcpy (void *restrict TO, const void *restrict FROM, size_t SIZE)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`void * memfrob (void *MEM, size_t LENGTH)'
-- `string.h' (GNU): *Note Trivial Encryption::.
--
--`void * memmem (const void *HAYSTACK, size_t HAYSTACK-LEN,
-- const void *NEEDLE, size_t NEEDLE-LEN)'
-- `string.h' (GNU): *Note Search Functions::.
--
--`void * memmove (void *TO, const void *FROM, size_t SIZE)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`void * mempcpy (void *restrict TO, const void *restrict FROM, size_t SIZE)'
-- `string.h' (GNU): *Note Copying and Concatenation::.
--
--`void * memrchr (const void *BLOCK, int C, size_t SIZE)'
-- `string.h' (GNU): *Note Search Functions::.
--
--`void * memset (void *BLOCK, int C, size_t SIZE)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`int mkdir (const char *FILENAME, mode_t MODE)'
-- `sys/stat.h' (POSIX.1): *Note Creating Directories::.
--
--`char * mkdtemp (char *TEMPLATE)'
-- `stdlib.h' (BSD): *Note Temporary Files::.
--
--`int mkfifo (const char *FILENAME, mode_t MODE)'
-- `sys/stat.h' (POSIX.1): *Note FIFO Special Files::.
--
--`int mknod (const char *FILENAME, int MODE, int DEV)'
-- `sys/stat.h' (BSD): *Note Making Special Files::.
--
--`int mkstemp (char *TEMPLATE)'
-- `stdlib.h' (BSD): *Note Temporary Files::.
--
--`char * mktemp (char *TEMPLATE)'
-- `stdlib.h' (Unix): *Note Temporary Files::.
--
--`time_t mktime (struct tm *BROKENTIME)'
-- `time.h' (ISO): *Note Broken-down Time::.
--
--`int mlock (const void *ADDR, size_t LEN)'
-- `sys/mman.h' (POSIX.1b): *Note Page Lock Functions::.
--
--`int mlockall (int FLAGS)'
-- `sys/mman.h' (POSIX.1b): *Note Page Lock Functions::.
--
--`void * mmap (void *ADDRESS, size_t LENGTH,int PROTECT, int FLAGS, int FILEDES, off_t OFFSET)'
-- `sys/mman.h' (POSIX): *Note Memory-mapped I/O::.
--
--`void * mmap64 (void *ADDRESS, size_t LENGTH,int PROTECT, int FLAGS, int FILEDES, off64_t OFFSET)'
-- `sys/mman.h' (LFS): *Note Memory-mapped I/O::.
--
--`mode_t'
-- `sys/types.h' (POSIX.1): *Note Attribute Meanings::.
--
--`double modf (double VALUE, double *INTEGER-PART)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float modff (float VALUE, float *INTEGER-PART)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double modfl (long double VALUE, long double *INTEGER-PART)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`int mount (const char *SPECIAL_FILE, const char *DIR, const char *FSTYPE, unsigned long int OPTIONS, const void *DATA)'
-- `sys/mount.h' (SVID, BSD): *Note Mount-Unmount-Remount::.
--
--`long int mrand48 (void)'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int mrand48_r (struct drand48_data *BUFFER, double *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`void * mremap (void *ADDRESS, size_t LENGTH, size_t NEW_LENGTH, int FLAG)'
-- `sys/mman.h' (GNU): *Note Memory-mapped I/O::.
--
--`int MSG_DONTROUTE'
-- `sys/socket.h' (BSD): *Note Socket Data Options::.
--
--`int MSG_OOB'
-- `sys/socket.h' (BSD): *Note Socket Data Options::.
--
--`int MSG_PEEK'
-- `sys/socket.h' (BSD): *Note Socket Data Options::.
--
--`int msync (void *ADDRESS, size_t LENGTH, int FLAGS)'
-- `sys/mman.h' (POSIX): *Note Memory-mapped I/O::.
--
--`void mtrace (void)'
-- `mcheck.h' (GNU): *Note Tracing malloc::.
--
--`int munlock (const void *ADDR, size_t LEN)'
-- `sys/mman.h' (POSIX.1b): *Note Page Lock Functions::.
--
--`int munlockall (void)'
-- `sys/mman.h' (POSIX.1b): *Note Page Lock Functions::.
--
--`int munmap (void *ADDR, size_t LENGTH)'
-- `sys/mman.h' (POSIX): *Note Memory-mapped I/O::.
--
--`void muntrace (void)'
-- `mcheck.h' (GNU): *Note Tracing malloc::.
--
--`int NAME_MAX'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`float NAN'
-- `math.h' (GNU): *Note Infinity and NaN::.
--
--`double nan (const char *TAGP)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`float nanf (const char *TAGP)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`long double nanl (const char *TAGP)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`int nanosleep (const struct timespec *REQUESTED_TIME, struct timespec *REMAINING)'
-- `time.h' (POSIX.1): *Note Sleeping::.
--
--`int NCCS'
-- `termios.h' (POSIX.1): *Note Mode Data Types::.
--
--`double nearbyint (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float nearbyintf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double nearbyintl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`NEW_TIME'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`NEW_TIME'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`double nextafter (double X, double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`float nextafterf (float X, float Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`long double nextafterl (long double X, long double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`double nexttoward (double X, long double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`float nexttowardf (float X, long double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`long double nexttowardl (long double X, long double Y)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`int nftw (const char *FILENAME, __nftw_func_t FUNC, int DESCRIPTORS, int FLAG)'
-- `ftw.h' (XPG4.2): *Note Working with Directory Trees::.
--
--`int nftw64 (const char *FILENAME, __nftw64_func_t FUNC, int DESCRIPTORS, int FLAG)'
-- `ftw.h' (Unix98): *Note Working with Directory Trees::.
--
--`__nftw64_func_t'
-- `ftw.h' (GNU): *Note Working with Directory Trees::.
--
--`__nftw_func_t'
-- `ftw.h' (GNU): *Note Working with Directory Trees::.
--
--`char * ngettext (const char *MSGID1, const char *MSGID2, unsigned long int N)'
-- `libintl.h' (GNU): *Note Advanced gettext functions::.
--
--`int NGROUPS_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`int nice (int INCREMENT)'
-- `unistd.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`nlink_t'
-- `sys/types.h' (POSIX.1): *Note Attribute Meanings::.
--
--`char * nl_langinfo (nl_item ITEM)'
-- `langinfo.h' (XOPEN): *Note The Elegant and Fast Way::.
--
--`NO_ADDRESS'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`tcflag_t NOFLSH'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`tcflag_t NOKERNINFO'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`NO_RECOVERY'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`long int nrand48 (unsigned short int XSUBI[3])'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int nrand48_r (unsigned short int XSUBI[3], struct drand48_data *BUFFER, long int *RESULT)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`int NSIG'
-- `signal.h' (BSD): *Note Standard Signals::.
--
--`uint32_t ntohl (uint32_t NETLONG)'
-- `netinet/in.h' (BSD): *Note Byte Order::.
--
--`uint16_t ntohs (uint16_t NETSHORT)'
-- `netinet/in.h' (BSD): *Note Byte Order::.
--
--`int ntp_adjtime (struct timex *TPTR)'
-- `sys/timex.h' (GNU): *Note High Accuracy Clock::.
--
--`int ntp_gettime (struct ntptimeval *TPTR)'
-- `sys/timex.h' (GNU): *Note High Accuracy Clock::.
--
--`void * NULL'
-- `stddef.h' (ISO): *Note Null Pointer Constant::.
--
--`int O_ACCMODE'
-- `fcntl.h' (POSIX.1): *Note Access Modes::.
--
--`int O_APPEND'
-- `fcntl.h' (POSIX.1): *Note Operating Modes::.
--
--`int O_ASYNC'
-- `fcntl.h' (BSD): *Note Operating Modes::.
--
--`void obstack_1grow (struct obstack *OBSTACK-PTR, char C)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_1grow_fast (struct obstack *OBSTACK-PTR, char C)'
-- `obstack.h' (GNU): *Note Extra Fast Growing::.
--
--`int obstack_alignment_mask (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Obstacks Data Alignment::.
--
--`void * obstack_alloc (struct obstack *OBSTACK-PTR, int SIZE)'
-- `obstack.h' (GNU): *Note Allocation in an Obstack::.
--
--`obstack_alloc_failed_handler'
-- `obstack.h' (GNU): *Note Preparing for Obstacks::.
--
--`void * obstack_base (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Status of an Obstack::.
--
--`void obstack_blank (struct obstack *OBSTACK-PTR, int SIZE)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_blank_fast (struct obstack *OBSTACK-PTR, int SIZE)'
-- `obstack.h' (GNU): *Note Extra Fast Growing::.
--
--`int obstack_chunk_size (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Obstack Chunks::.
--
--`void * obstack_copy (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- `obstack.h' (GNU): *Note Allocation in an Obstack::.
--
--`void * obstack_copy0 (struct obstack *OBSTACK-PTR, void *ADDRESS, int SIZE)'
-- `obstack.h' (GNU): *Note Allocation in an Obstack::.
--
--`void * obstack_finish (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_free (struct obstack *OBSTACK-PTR, void *OBJECT)'
-- `obstack.h' (GNU): *Note Freeing Obstack Objects::.
--
--`void obstack_grow (struct obstack *OBSTACK-PTR, void *DATA, int SIZE)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_grow0 (struct obstack *OBSTACK-PTR, void *DATA, int SIZE)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`int obstack_init (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Preparing for Obstacks::.
--
--`void obstack_int_grow (struct obstack *OBSTACK-PTR, int DATA)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_int_grow_fast (struct obstack *OBSTACK-PTR, int DATA)'
-- `obstack.h' (GNU): *Note Extra Fast Growing::.
--
--`void * obstack_next_free (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Status of an Obstack::.
--
--`int obstack_object_size (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`int obstack_object_size (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Status of an Obstack::.
--
--`int obstack_printf (struct obstack *OBSTACK, const char *TEMPLATE, ...)'
-- `stdio.h' (GNU): *Note Dynamic Output::.
--
--`void obstack_ptr_grow (struct obstack *OBSTACK-PTR, void *DATA)'
-- `obstack.h' (GNU): *Note Growing Objects::.
--
--`void obstack_ptr_grow_fast (struct obstack *OBSTACK-PTR, void *DATA)'
-- `obstack.h' (GNU): *Note Extra Fast Growing::.
--
--`int obstack_room (struct obstack *OBSTACK-PTR)'
-- `obstack.h' (GNU): *Note Extra Fast Growing::.
--
--`int obstack_vprintf (struct obstack *OBSTACK, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (GNU): *Note Variable Arguments Output::.
--
--`int O_CREAT'
-- `fcntl.h' (POSIX.1): *Note Open-time Flags::.
--
--`int O_EXCL'
-- `fcntl.h' (POSIX.1): *Note Open-time Flags::.
--
--`int O_EXEC'
-- `fcntl.h' (GNU): *Note Access Modes::.
--
--`int O_EXLOCK'
-- `fcntl.h' (BSD): *Note Open-time Flags::.
--
--`off64_t'
-- `sys/types.h' (Unix98): *Note File Position Primitive::.
--
--`size_t offsetof (TYPE, MEMBER)'
-- `stddef.h' (ISO): *Note Structure Measurement::.
--
--`off_t'
-- `sys/types.h' (POSIX.1): *Note File Position Primitive::.
--
--`int O_FSYNC'
-- `fcntl.h' (BSD): *Note Operating Modes::.
--
--`int O_IGNORE_CTTY'
-- `fcntl.h' (GNU): *Note Open-time Flags::.
--
--`OLD_TIME'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`OLD_TIME'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int O_NDELAY'
-- `fcntl.h' (BSD): *Note Operating Modes::.
--
--`int on_exit (void (*FUNCTION)(int STATUS, void *ARG), void *ARG)'
-- `stdlib.h' (SunOS): *Note Cleanups on Exit::.
--
--`tcflag_t ONLCR'
-- `termios.h' (BSD): *Note Output Modes::.
--
--`int O_NOATIME'
-- `fcntl.h' (GNU): *Note Operating Modes::.
--
--`int O_NOCTTY'
-- `fcntl.h' (POSIX.1): *Note Open-time Flags::.
--
--`tcflag_t ONOEOT'
-- `termios.h' (BSD): *Note Output Modes::.
--
--`int O_NOLINK'
-- `fcntl.h' (GNU): *Note Open-time Flags::.
--
--`int O_NONBLOCK'
-- `fcntl.h' (POSIX.1): *Note Open-time Flags::.
--
--`int O_NONBLOCK'
-- `fcntl.h' (POSIX.1): *Note Operating Modes::.
--
--`int O_NOTRANS'
-- `fcntl.h' (GNU): *Note Open-time Flags::.
--
--`int open (const char *FILENAME, int FLAGS[, mode_t MODE])'
-- `fcntl.h' (POSIX.1): *Note Opening and Closing Files::.
--
--`int open64 (const char *FILENAME, int FLAGS[, mode_t MODE])'
-- `fcntl.h' (Unix98): *Note Opening and Closing Files::.
--
--`DIR * opendir (const char *DIRNAME)'
-- `dirent.h' (POSIX.1): *Note Opening a Directory::.
--
--`void openlog (const char *IDENT, int OPTION, int FACILITY)'
-- `syslog.h' (BSD): *Note openlog::.
--
--`int OPEN_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`FILE * open_memstream (char **PTR, size_t *SIZELOC)'
-- `stdio.h' (GNU): *Note String Streams::.
--
--`FILE * open_obstack_stream (struct obstack *OBSTACK)'
-- `stdio.h' (GNU): *Note Obstack Streams::.
--
--`int openpty (int *AMASTER, int *ASLAVE, char *NAME, struct termios *TERMP, struct winsize *WINP)'
-- `pty.h' (BSD): *Note Pseudo-Terminal Pairs::.
--
--`tcflag_t OPOST'
-- `termios.h' (POSIX.1): *Note Output Modes::.
--
--`char * optarg'
-- `unistd.h' (POSIX.2): *Note Using Getopt::.
--
--`int opterr'
-- `unistd.h' (POSIX.2): *Note Using Getopt::.
--
--`int optind'
-- `unistd.h' (POSIX.2): *Note Using Getopt::.
--
--`OPTION_ALIAS'
-- `argp.h' (GNU): *Note Argp Option Flags::.
--
--`OPTION_ARG_OPTIONAL'
-- `argp.h' (GNU): *Note Argp Option Flags::.
--
--`OPTION_DOC'
-- `argp.h' (GNU): *Note Argp Option Flags::.
--
--`OPTION_HIDDEN'
-- `argp.h' (GNU): *Note Argp Option Flags::.
--
--`OPTION_NO_USAGE'
-- `argp.h' (GNU): *Note Argp Option Flags::.
--
--`int optopt'
-- `unistd.h' (POSIX.2): *Note Using Getopt::.
--
--`int O_RDONLY'
-- `fcntl.h' (POSIX.1): *Note Access Modes::.
--
--`int O_RDWR'
-- `fcntl.h' (POSIX.1): *Note Access Modes::.
--
--`int O_READ'
-- `fcntl.h' (GNU): *Note Access Modes::.
--
--`int O_SHLOCK'
-- `fcntl.h' (BSD): *Note Open-time Flags::.
--
--`int O_SYNC'
-- `fcntl.h' (BSD): *Note Operating Modes::.
--
--`int O_TRUNC'
-- `fcntl.h' (POSIX.1): *Note Open-time Flags::.
--
--`int O_WRITE'
-- `fcntl.h' (GNU): *Note Access Modes::.
--
--`int O_WRONLY'
-- `fcntl.h' (POSIX.1): *Note Access Modes::.
--
--`tcflag_t OXTABS'
-- `termios.h' (BSD): *Note Output Modes::.
--
--`PA_CHAR'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_DOUBLE'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLAG_LONG'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLAG_LONG_DOUBLE'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLAG_LONG_LONG'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`int PA_FLAG_MASK'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLAG_PTR'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLAG_SHORT'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_FLOAT'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_INT'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_LAST'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_POINTER'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`tcflag_t PARENB'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`tcflag_t PARMRK'
-- `termios.h' (POSIX.1): *Note Input Modes::.
--
--`tcflag_t PARODD'
-- `termios.h' (POSIX.1): *Note Control Modes::.
--
--`size_t parse_printf_format (const char *TEMPLATE, size_t N, int *ARGTYPES)'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`PA_STRING'
-- `printf.h' (GNU): *Note Parsing a Template String::.
--
--`long int pathconf (const char *FILENAME, int PARAMETER)'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`int PATH_MAX'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`int pause ()'
-- `unistd.h' (POSIX.1): *Note Using Pause::.
--
--`_PC_ASYNC_IO'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_CHOWN_RESTRICTED'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_FILESIZEBITS'
-- `unistd.h' (LFS): *Note Pathconf::.
--
--`_PC_LINK_MAX'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`int pclose (FILE *STREAM)'
-- `stdio.h' (POSIX.2, SVID, BSD): *Note Pipe to a Subprocess::.
--
--`_PC_MAX_CANON'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_MAX_INPUT'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_NAME_MAX'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_NO_TRUNC'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_PATH_MAX'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_PIPE_BUF'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_PRIO_IO'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_REC_INCR_XFER_SIZE'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_REC_MAX_XFER_SIZE'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_REC_MIN_XFER_SIZE'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_REC_XFER_ALIGN'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_SOCK_MAXBUF'
-- `unistd.h' (POSIX.1g): *Note Pathconf::.
--
--`_PC_SYNC_IO'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`_PC_VDISABLE'
-- `unistd.h' (POSIX.1): *Note Pathconf::.
--
--`tcflag_t PENDIN'
-- `termios.h' (BSD): *Note Local Modes::.
--
--`void perror (const char *MESSAGE)'
-- `stdio.h' (ISO): *Note Error Messages::.
--
--`int PF_FILE'
-- `sys/socket.h' (GNU): *Note Local Namespace Details::.
--
--`int PF_INET'
-- `sys/socket.h' (BSD): *Note Internet Namespace::.
--
--`int PF_INET6'
-- `sys/socket.h' (X/Open): *Note Internet Namespace::.
--
--`int PF_LOCAL'
-- `sys/socket.h' (POSIX): *Note Local Namespace Details::.
--
--`int PF_UNIX'
-- `sys/socket.h' (BSD): *Note Local Namespace Details::.
--
--`pid_t'
-- `sys/types.h' (POSIX.1): *Note Process Identification::.
--
--`int pipe (int FILEDES[2])'
-- `unistd.h' (POSIX.1): *Note Creating a Pipe::.
--
--`int PIPE_BUF'
-- `limits.h' (POSIX.1): *Note Limits for Files::.
--
--`FILE * popen (const char *COMMAND, const char *MODE)'
-- `stdio.h' (POSIX.2, SVID, BSD): *Note Pipe to a Subprocess::.
--
--`_POSIX2_BC_BASE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`_POSIX2_BC_DIM_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`_POSIX2_BC_SCALE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`_POSIX2_BC_STRING_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`int _POSIX2_C_DEV'
-- `unistd.h' (POSIX.2): *Note System Options::.
--
--`_POSIX2_COLL_WEIGHTS_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`long int _POSIX2_C_VERSION'
-- `unistd.h' (POSIX.2): *Note Version Supported::.
--
--`_POSIX2_EQUIV_CLASS_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`_POSIX2_EXPR_NEST_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`int _POSIX2_FORT_DEV'
-- `unistd.h' (POSIX.2): *Note System Options::.
--
--`int _POSIX2_FORT_RUN'
-- `unistd.h' (POSIX.2): *Note System Options::.
--
--`_POSIX2_LINE_MAX'
-- `limits.h' (POSIX.2): *Note Utility Minimums::.
--
--`int _POSIX2_LOCALEDEF'
-- `unistd.h' (POSIX.2): *Note System Options::.
--
--`_POSIX2_RE_DUP_MAX'
-- `limits.h' (POSIX.2): *Note Minimums::.
--
--`int _POSIX2_SW_DEV'
-- `unistd.h' (POSIX.2): *Note System Options::.
--
--`_POSIX_AIO_LISTIO_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_AIO_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_ARG_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_CHILD_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`int _POSIX_CHOWN_RESTRICTED'
-- `unistd.h' (POSIX.1): *Note Options for Files::.
--
--`_POSIX_C_SOURCE'
-- (POSIX.2): *Note Feature Test Macros::.
--
--`int _POSIX_JOB_CONTROL'
-- `unistd.h' (POSIX.1): *Note System Options::.
--
--`_POSIX_LINK_MAX'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`_POSIX_MAX_CANON'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`_POSIX_MAX_INPUT'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`int posix_memalign (void **MEMPTR, size_t ALIGNMENT, size_t SIZE)'
-- `stdlib.h' (POSIX): *Note Aligned Memory Blocks::.
--
--`_POSIX_NAME_MAX'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`_POSIX_NGROUPS_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`int _POSIX_NO_TRUNC'
-- `unistd.h' (POSIX.1): *Note Options for Files::.
--
--`_POSIX_OPEN_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_PATH_MAX'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`_POSIX_PIPE_BUF'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`POSIX_REC_INCR_XFER_SIZE'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`POSIX_REC_MAX_XFER_SIZE'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`POSIX_REC_MIN_XFER_SIZE'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`POSIX_REC_XFER_ALIGN'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`int _POSIX_SAVED_IDS'
-- `unistd.h' (POSIX.1): *Note System Options::.
--
--`_POSIX_SOURCE'
-- (POSIX.1): *Note Feature Test Macros::.
--
--`_POSIX_SSIZE_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_STREAM_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`_POSIX_TZNAME_MAX'
-- `limits.h' (POSIX.1): *Note Minimums::.
--
--`unsigned char _POSIX_VDISABLE'
-- `unistd.h' (POSIX.1): *Note Options for Files::.
--
--`long int _POSIX_VERSION'
-- `unistd.h' (POSIX.1): *Note Version Supported::.
--
--`double pow (double BASE, double POWER)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`double pow10 (double X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`float pow10f (float X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`long double pow10l (long double X)'
-- `math.h' (GNU): *Note Exponents and Logarithms::.
--
--`float powf (float BASE, float POWER)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double powl (long double BASE, long double POWER)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`ssize_t pread (int FILEDES, void *BUFFER, size_t SIZE, off_t OFFSET)'
-- `unistd.h' (Unix98): *Note I/O Primitives::.
--
--`ssize_t pread64 (int FILEDES, void *BUFFER, size_t SIZE, off64_t OFFSET)'
-- `unistd.h' (Unix98): *Note I/O Primitives::.
--
--`int printf (const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Output Functions::.
--
--`printf_arginfo_function'
-- `printf.h' (GNU): *Note Defining the Output Handler::.
--
--`printf_function'
-- `printf.h' (GNU): *Note Defining the Output Handler::.
--
--`int printf_size (FILE *FP, const struct printf_info *INFO, const void *const *ARGS)'
-- `printf.h' (GNU): *Note Predefined Printf Handlers::.
--
--`int printf_size_info (const struct printf_info *INFO, size_t N, int *ARGTYPES)'
-- `printf.h' (GNU): *Note Predefined Printf Handlers::.
--
--`PRIO_MAX'
-- `sys/resource.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`PRIO_MIN'
-- `sys/resource.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`PRIO_PGRP'
-- `sys/resource.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`PRIO_PROCESS'
-- `sys/resource.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`PRIO_USER'
-- `sys/resource.h' (BSD): *Note Traditional Scheduling Functions::.
--
--`char * program_invocation_name'
-- `errno.h' (GNU): *Note Error Messages::.
--
--`char * program_invocation_short_name'
-- `errno.h' (GNU): *Note Error Messages::.
--
--`void psignal (int SIGNUM, const char *MESSAGE)'
-- `signal.h' (BSD): *Note Signal Messages::.
--
--`int pthread_atfork (void (*PREPARE)(void), void (*PARENT)(void), void (*CHILD)(void))'
-- `pthread.h' (POSIX): *Note Threads and Fork::.
--
--`int pthread_attr_destroy (pthread_attr_t *ATTR)'
-- `pthread.h' (POSIX): *Note Thread Attributes::.
--
--`int pthread_attr_getattr (const pthread_attr_t *OBJ, int *VALUE)'
-- `pthread.h' (POSIX): *Note Thread Attributes::.
--
--`int pthread_attr_init (pthread_attr_t *ATTR)'
-- `pthread.h' (POSIX): *Note Thread Attributes::.
--
--`int pthread_attr_setattr (pthread_attr_t *OBJ, int VALUE)'
-- `pthread.h' (POSIX): *Note Thread Attributes::.
--
--`int pthread_cancel (pthread_t THREAD)'
-- `pthread.h' (POSIX): *Note Basic Thread Operations::.
--
--`void pthread_cleanup_pop (int EXECUTE)'
-- `pthread.h' (POSIX): *Note Cleanup Handlers::.
--
--`void pthread_cleanup_pop_restore_np (int EXECUTE)'
-- `pthread.h' (GNU): *Note Cleanup Handlers::.
--
--`void pthread_cleanup_push (void (*ROUTINE) (void *), void *ARG)'
-- `pthread.h' (POSIX): *Note Cleanup Handlers::.
--
--`void pthread_cleanup_push_defer_np (void (*ROUTINE) (void *), void *ARG)'
-- `pthread.h' (GNU): *Note Cleanup Handlers::.
--
--`int pthread_condattr_init (pthread_condattr_t *ATTR)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_broadcast (pthread_cond_t *COND)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_destroy (pthread_cond_t *COND)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_init (pthread_cond_t *COND, pthread_condattr_t *cond_ATTR)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_signal (pthread_cond_t *COND)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_timedwait (pthread_cond_t *COND, pthread_mutex_t *MUTEX, const struct timespec *ABSTIME)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_cond_wait (pthread_cond_t *COND, pthread_mutex_t *MUTEX)'
-- `pthread.h' (POSIX): *Note Condition Variables::.
--
--`int pthread_create (pthread_t * THREAD, pthread_attr_t * ATTR, void * (*START_ROUTINE)(void *), void * ARG)'
-- `pthread.h' (POSIX): *Note Basic Thread Operations::.
--
--`int pthread_detach (pthread_t TH)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`int pthread_equal (pthread_t thread1, pthread_t thread2)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`void pthread_exit (void *RETVAL)'
-- `pthread.h' (POSIX): *Note Basic Thread Operations::.
--
--`int pthread_getconcurrency ()'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`int pthread_getschedparam (pthread_t target_THREAD, int *POLICY, struct sched_param *PARAM)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`void * pthread_getspecific (pthread_key_t KEY)'
-- `pthread.h' (POSIX): *Note Thread-Specific Data::.
--
--`int pthread_join (pthread_t TH, void **thread_RETURN)'
-- `pthread.h' (POSIX): *Note Basic Thread Operations::.
--
--`int pthread_key_create (pthread_key_t *KEY, void (*destr_function) (void *))'
-- `pthread.h' (POSIX): *Note Thread-Specific Data::.
--
--`int pthread_key_delete (pthread_key_t KEY)'
-- `pthread.h' (POSIX): *Note Thread-Specific Data::.
--
--`int pthread_kill (pthread_t THREAD, int SIGNO)'
-- `pthread.h' (POSIX): *Note Threads and Signal Handling::.
--
--`void pthread_kill_other_threads_np (VOID)'
-- `pthread.h' (GNU): *Note Miscellaneous Thread Functions::.
--
--`int pthread_mutexattr_destroy (pthread_mutexattr_t *ATTR)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutexattr_gettype (const pthread_mutexattr_t *ATTR, int *TYPE)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutexattr_init (pthread_mutexattr_t *ATTR)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutexattr_settype (pthread_mutexattr_t *ATTR, int TYPE)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_destroy (pthread_mutex_t *MUTEX)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_init (pthread_mutex_t *MUTEX, const pthread_mutexattr_t *MUTEXATTR)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_lock (pthread_mutex_t *mutex))'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_timedlock (pthread_mutex_t *MUTEX, const struct timespec *ABSTIME)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_trylock (pthread_mutex_t *MUTEX)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_mutex_unlock (pthread_mutex_t *MUTEX)'
-- `pthread.h' (POSIX): *Note Mutexes::.
--
--`int pthread_once (pthread_once_t *once_CONTROL, void (*INIT_ROUTINE) (void))'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`pthread_t pthread_self (VOID)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`int pthread_setcancelstate (int STATE, int *OLDSTATE)'
-- `pthread.h' (POSIX): *Note Cancellation::.
--
--`int pthread_setcanceltype (int TYPE, int *OLDTYPE)'
-- `pthread.h' (POSIX): *Note Cancellation::.
--
--`int pthread_setconcurrency (int LEVEL)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`int pthread_setschedparam (pthread_t target_THREAD, int POLICY, const struct sched_param *PARAM)'
-- `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::.
--
--`int pthread_setspecific (pthread_key_t KEY, const void *POINTER)'
-- `pthread.h' (POSIX): *Note Thread-Specific Data::.
--
--`int pthread_sigmask (int HOW, const sigset_t *NEWMASK, sigset_t *OLDMASK)'
-- `pthread.h' (POSIX): *Note Threads and Signal Handling::.
--
--`void pthread_testcancel (VOID)'
-- `pthread.h' (POSIX): *Note Cancellation::.
--
--`char * P_tmpdir'
-- `stdio.h' (SVID): *Note Temporary Files::.
--
--`ptrdiff_t'
-- `stddef.h' (ISO): *Note Important Data Types::.
--
--`char * ptsname (int FILEDES)'
-- `stdlib.h' (SVID, XPG4.2): *Note Allocation::.
--
--`int ptsname_r (int FILEDES, char *BUF, size_t LEN)'
-- `stdlib.h' (GNU): *Note Allocation::.
--
--`int putc (int C, FILE *STREAM)'
-- `stdio.h' (ISO): *Note Simple Output::.
--
--`int putchar (int C)'
-- `stdio.h' (ISO): *Note Simple Output::.
--
--`int putchar_unlocked (int C)'
-- `stdio.h' (POSIX): *Note Simple Output::.
--
--`int putc_unlocked (int C, FILE *STREAM)'
-- `stdio.h' (POSIX): *Note Simple Output::.
--
--`int putenv (char *STRING)'
-- `stdlib.h' (SVID): *Note Environment Access::.
--
--`int putpwent (const struct passwd *P, FILE *STREAM)'
-- `pwd.h' (SVID): *Note Writing a User Entry::.
--
--`int puts (const char *S)'
-- `stdio.h' (ISO): *Note Simple Output::.
--
--`struct utmp * pututline (const struct utmp *UTMP)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`struct utmpx * pututxline (const struct utmpx *UTMP)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int putw (int W, FILE *STREAM)'
-- `stdio.h' (SVID): *Note Simple Output::.
--
--`wint_t putwc (wchar_t WC, FILE *STREAM)'
-- `wchar.h' (ISO): *Note Simple Output::.
--
--`wint_t putwchar (wchar_t WC)'
-- `wchar.h' (ISO): *Note Simple Output::.
--
--`wint_t putwchar_unlocked (wchar_t WC)'
-- `wchar.h' (GNU): *Note Simple Output::.
--
--`wint_t putwc_unlocked (wchar_t WC, FILE *STREAM)'
-- `wchar.h' (GNU): *Note Simple Output::.
--
--`ssize_t pwrite (int FILEDES, const void *BUFFER, size_t SIZE, off_t OFFSET)'
-- `unistd.h' (Unix98): *Note I/O Primitives::.
--
--`ssize_t pwrite64 (int FILEDES, const void *BUFFER, size_t SIZE, off64_t OFFSET)'
-- `unistd.h' (Unix98): *Note I/O Primitives::.
--
--`char * qecvt (long double VALUE, int NDIGIT, int *DECPT, int *NEG)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`char * qecvt_r (long double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`char * qfcvt (long double VALUE, int NDIGIT, int *DECPT, int *NEG)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`char * qfcvt_r (long double VALUE, int NDIGIT, int *DECPT, int *NEG, char *BUF, size_t LEN)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`char * qgcvt (long double VALUE, int NDIGIT, char *BUF)'
-- `stdlib.h' (GNU): *Note System V Number Conversion::.
--
--`void qsort (void *ARRAY, size_t COUNT, size_t SIZE, comparison_fn_t COMPARE)'
-- `stdlib.h' (ISO): *Note Array Sort Function::.
--
--`int raise (int SIGNUM)'
-- `signal.h' (ISO): *Note Signaling Yourself::.
--
--`int rand (void)'
-- `stdlib.h' (ISO): *Note ISO Random::.
--
--`int RAND_MAX'
-- `stdlib.h' (ISO): *Note ISO Random::.
--
--`long int random (void)'
-- `stdlib.h' (BSD): *Note BSD Random::.
--
--`int random_r (struct random_data *restrict BUF, int32_t *restrict RESULT)'
-- `stdlib.h' (GNU): *Note BSD Random::.
--
--`int rand_r (unsigned int *SEED)'
-- `stdlib.h' (POSIX.1): *Note ISO Random::.
--
--`void * rawmemchr (const void *BLOCK, int C)'
-- `string.h' (GNU): *Note Search Functions::.
--
--`ssize_t read (int FILEDES, void *BUFFER, size_t SIZE)'
-- `unistd.h' (POSIX.1): *Note I/O Primitives::.
--
--`struct dirent * readdir (DIR *DIRSTREAM)'
-- `dirent.h' (POSIX.1): *Note Reading/Closing Directory::.
--
--`struct dirent64 * readdir64 (DIR *DIRSTREAM)'
-- `dirent.h' (LFS): *Note Reading/Closing Directory::.
--
--`int readdir64_r (DIR *DIRSTREAM, struct dirent64 *ENTRY, struct dirent64 **RESULT)'
-- `dirent.h' (LFS): *Note Reading/Closing Directory::.
--
--`int readdir_r (DIR *DIRSTREAM, struct dirent *ENTRY, struct dirent **RESULT)'
-- `dirent.h' (GNU): *Note Reading/Closing Directory::.
--
--`int readlink (const char *FILENAME, char *BUFFER, size_t SIZE)'
-- `unistd.h' (BSD): *Note Symbolic Links::.
--
--`ssize_t readv (int FILEDES, const struct iovec *VECTOR, int COUNT)'
-- `sys/uio.h' (BSD): *Note Scatter-Gather::.
--
--`void * realloc (void *PTR, size_t NEWSIZE)'
-- `malloc.h', `stdlib.h' (ISO): *Note Changing Block Size::.
--
--`__realloc_hook'
-- `malloc.h' (GNU): *Note Hooks for Malloc::.
--
--`char * realpath (const char *restrict NAME, char *restrict RESOLVED)'
-- `stdlib.h' (XPG): *Note Symbolic Links::.
--
--`int recv (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)'
-- `sys/socket.h' (BSD): *Note Receiving Data::.
--
--`int recvfrom (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS, struct sockaddr *ADDR, socklen_t *LENGTH-PTR)'
-- `sys/socket.h' (BSD): *Note Receiving Datagrams::.
--
--`int recvmsg (int SOCKET, struct msghdr *MESSAGE, int FLAGS)'
-- `sys/socket.h' (BSD): *Note Receiving Datagrams::.
--
--`int RE_DUP_MAX'
-- `limits.h' (POSIX.2): *Note General Limits::.
--
--`_REENTRANT'
-- (GNU): *Note Feature Test Macros::.
--
--`REG_BADBR'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_BADPAT'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_BADRPT'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`int regcomp (regex_t *COMPILED, const char *PATTERN, int CFLAGS)'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_EBRACE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_EBRACK'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_ECOLLATE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_ECTYPE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_EESCAPE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_EPAREN'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_ERANGE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`size_t regerror (int ERRCODE, regex_t *COMPILED, char *BUFFER, size_t LENGTH)'
-- `regex.h' (POSIX.2): *Note Regexp Cleanup::.
--
--`REG_ESPACE'
-- `regex.h' (POSIX.2): *Note Matching POSIX Regexps::.
--
--`REG_ESPACE'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_ESUBREG'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`int regexec (regex_t *COMPILED, char *STRING, size_t NMATCH, regmatch_t MATCHPTR [], int EFLAGS)'
-- `regex.h' (POSIX.2): *Note Matching POSIX Regexps::.
--
--`regex_t'
-- `regex.h' (POSIX.2): *Note POSIX Regexp Compilation::.
--
--`REG_EXTENDED'
-- `regex.h' (POSIX.2): *Note Flags for POSIX Regexps::.
--
--`void regfree (regex_t *COMPILED)'
-- `regex.h' (POSIX.2): *Note Regexp Cleanup::.
--
--`REG_ICASE'
-- `regex.h' (POSIX.2): *Note Flags for POSIX Regexps::.
--
--`int register_printf_function (int SPEC, printf_function HANDLER-FUNCTION, printf_arginfo_function ARGINFO-FUNCTION)'
-- `printf.h' (GNU): *Note Registering New Conversions::.
--
--`regmatch_t'
-- `regex.h' (POSIX.2): *Note Regexp Subexpressions::.
--
--`REG_NEWLINE'
-- `regex.h' (POSIX.2): *Note Flags for POSIX Regexps::.
--
--`REG_NOMATCH'
-- `regex.h' (POSIX.2): *Note Matching POSIX Regexps::.
--
--`REG_NOSUB'
-- `regex.h' (POSIX.2): *Note Flags for POSIX Regexps::.
--
--`REG_NOTBOL'
-- `regex.h' (POSIX.2): *Note Matching POSIX Regexps::.
--
--`REG_NOTEOL'
-- `regex.h' (POSIX.2): *Note Matching POSIX Regexps::.
--
--`regoff_t'
-- `regex.h' (POSIX.2): *Note Regexp Subexpressions::.
--
--`double remainder (double NUMERATOR, double DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`float remainderf (float NUMERATOR, float DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`long double remainderl (long double NUMERATOR, long double DENOMINATOR)'
-- `math.h' (BSD): *Note Remainder Functions::.
--
--`int remove (const char *FILENAME)'
-- `stdio.h' (ISO): *Note Deleting Files::.
--
--`int rename (const char *OLDNAME, const char *NEWNAME)'
-- `stdio.h' (ISO): *Note Renaming Files::.
--
--`void rewind (FILE *STREAM)'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`void rewinddir (DIR *DIRSTREAM)'
-- `dirent.h' (POSIX.1): *Note Random Access Directory::.
--
--`char * rindex (const char *STRING, int C)'
-- `string.h' (BSD): *Note Search Functions::.
--
--`double rint (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float rintf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double rintl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`int RLIM_INFINITY'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_AS'
-- `sys/resource.h' (Unix98): *Note Limits on Resources::.
--
--`RLIMIT_CORE'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_CPU'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_DATA'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_FSIZE'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_MEMLOCK'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_NOFILE'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_NPROC'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_RSS'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIMIT_STACK'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`RLIM_NLIMITS'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`int rmdir (const char *FILENAME)'
-- `unistd.h' (POSIX.1): *Note Deleting Files::.
--
--`int R_OK'
-- `unistd.h' (POSIX.1): *Note Testing File Access::.
--
--`double round (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`float roundf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double roundl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`int rpmatch (const char *RESPONSE)'
-- `stdlib.h' (stdlib.h): *Note Yes-or-No Questions::.
--
--`RUN_LVL'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`RUN_LVL'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`RUSAGE_CHILDREN'
-- `sys/resource.h' (BSD): *Note Resource Usage::.
--
--`RUSAGE_SELF'
-- `sys/resource.h' (BSD): *Note Resource Usage::.
--
--`int SA_NOCLDSTOP'
-- `signal.h' (POSIX.1): *Note Flags for Sigaction::.
--
--`int SA_ONSTACK'
-- `signal.h' (BSD): *Note Flags for Sigaction::.
--
--`int SA_RESTART'
-- `signal.h' (BSD): *Note Flags for Sigaction::.
--
--`int sbrk (ptrdiff_t DELTA)'
-- `unistd.h' (BSD): *Note Resizing the Data Segment::.
--
--`_SC_2_C_DEV'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_2_FORT_DEV'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_2_FORT_RUN'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_2_LOCALEDEF'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_2_SW_DEV'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_2_VERSION'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_AIO_LISTIO_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_AIO_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_AIO_PRIO_DELTA_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`double scalb (double VALUE, int EXPONENT)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`float scalbf (float VALUE, int EXPONENT)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long double scalbl (long double VALUE, int EXPONENT)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalbln (double X, long int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalblnf (float X, long int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalblnl (long double X, long int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalbn (double X, int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalbnf (float X, int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int scalbnl (long double X, int n)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`int scandir (const char *DIR, struct dirent ***NAMELIST, int (*SELECTOR) (const struct dirent *), int (*CMP) (const void *, const void *))'
-- `dirent.h' (BSD/SVID): *Note Scanning Directory Content::.
--
--`int scandir64 (const char *DIR, struct dirent64 ***NAMELIST, int (*SELECTOR) (const struct dirent64 *), int (*CMP) (const void *, const void *))'
-- `dirent.h' (GNU): *Note Scanning Directory Content::.
--
--`int scanf (const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Input Functions::.
--
--`_SC_ARG_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_ASYNCHRONOUS_IO'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_ATEXIT_MAX'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_AVPHYS_PAGES'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_BC_BASE_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_BC_DIM_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_BC_SCALE_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_BC_STRING_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_CHAR_BIT'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_CHARCLASS_NAME_MAX'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_CHAR_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_CHAR_MIN'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_CHILD_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_CLK_TCK'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_COLL_WEIGHTS_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_DELAYTIMER_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_EQUIV_CLASS_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_EXPR_NEST_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_FSYNC'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_GETGR_R_SIZE_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_GETPW_R_SIZE_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`SCHAR_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`SCHAR_MIN'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int sched_getparam (pid_t PID, const struct sched_param *PARAM)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_get_priority_max (int *POLICY);'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_get_priority_min (int *POLICY);'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_getscheduler (pid_t PID)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_rr_get_interval (pid_t PID, struct timespec *INTERVAL)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_setparam (pid_t PID, const struct sched_param *PARAM)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_setscheduler (pid_t PID, int POLICY, const struct sched_param *PARAM)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`int sched_yield (void)'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`_SC_INT_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_INT_MIN'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_JOB_CONTROL'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_LINE_MAX'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_LOGIN_NAME_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_LONG_BIT'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_MAPPED_FILES'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MB_LEN_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_MEMLOCK'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MEMLOCK_RANGE'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MEMORY_PROTECTION'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MESSAGE_PASSING'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MQ_OPEN_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_MQ_PRIO_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_NGROUPS_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_NL_ARGMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NL_LANGMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NL_MSGMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NL_NMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NL_SETMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NL_TEXTMAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_NPROCESSORS_CONF'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_NPROCESSORS_ONLN'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_NZERO'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_OPEN_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_PAGESIZE'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_PHYS_PAGES'
-- `unistd.h' (GNU): *Note Constants for Sysconf::.
--
--`_SC_PII'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_INTERNET'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_INTERNET_DGRAM'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_INTERNET_STREAM'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_OSI'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_OSI_CLTS'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_OSI_COTS'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_OSI_M'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_SOCKET'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PII_XTI'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_PRIORITIZED_IO'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_PRIORITY_SCHEDULING'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_REALTIME_SIGNALS'
-- `unistdh.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_RTSIG_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SAVED_IDS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SCHAR_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_SCHAR_MIN'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_SELECT'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_SEMAPHORES'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SEM_NSEMS_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SEM_VALUE_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SHARED_MEMORY_OBJECTS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SHRT_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_SHRT_MIN'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_SIGQUEUE_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`SC_SSIZE_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_STREAM_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_SYNCHRONIZED_IO'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_ATTR_STACKADDR'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_ATTR_STACKSIZE'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_DESTRUCTOR_ITERATIONS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_KEYS_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_PRIO_INHERIT'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_PRIO_PROTECT'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_PRIORITY_SCHEDULING'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_PROCESS_SHARED'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREADS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_SAFE_FUNCTIONS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_STACK_MIN'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_THREAD_THREADS_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_TIMER_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_TIMERS'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_T_IOV_MAX'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_TTY_NAME_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_TZNAME_MAX'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_UCHAR_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_UINT_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_UIO_MAXIOV'
-- `unistd.h' (POSIX.1g): *Note Constants for Sysconf::.
--
--`_SC_ULONG_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_USHRT_MAX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_VERSION'
-- `unistd.h' (POSIX.1): *Note Constants for Sysconf::.
--
--`_SC_VERSION'
-- `unistd.h' (POSIX.2): *Note Constants for Sysconf::.
--
--`_SC_WORD_BIT'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_CRYPT'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_ENH_I18N'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_LEGACY'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_REALTIME'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_REALTIME_THREADS'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_SHM'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_UNIX'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_VERSION'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_XCU_VERSION'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_XPG2'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_XPG3'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`_SC_XOPEN_XPG4'
-- `unistd.h' (X/Open): *Note Constants for Sysconf::.
--
--`unsigned short int * seed48 (unsigned short int SEED16V[3])'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int seed48_r (unsigned short int SEED16V[3], struct drand48_data *BUFFER)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`int SEEK_CUR'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`void seekdir (DIR *DIRSTREAM, off_t POS)'
-- `dirent.h' (BSD): *Note Random Access Directory::.
--
--`int SEEK_END'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`int SEEK_SET'
-- `stdio.h' (ISO): *Note File Positioning::.
--
--`int select (int NFDS, fd_set *READ-FDS, fd_set *WRITE-FDS, fd_set *EXCEPT-FDS, struct timeval *TIMEOUT)'
-- `sys/types.h' (BSD): *Note Waiting for I/O::.
--
--`int sem_destroy (sem_t * SEM)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int sem_getvalue (sem_t * SEM, int * SVAL)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int sem_init (sem_t *SEM, int PSHARED, unsigned int VALUE)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int sem_post (sem_t * SEM)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int sem_trywait (sem_t * SEM)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int sem_wait (sem_t * SEM)'
-- `semaphore.h' (POSIX): *Note POSIX Semaphores::.
--
--`int send (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)'
-- `sys/socket.h' (BSD): *Note Sending Data::.
--
--`int sendmsg (int SOCKET, const struct msghdr *MESSAGE, int FLAGS)'
-- `sys/socket.h' (BSD): *Note Receiving Datagrams::.
--
--`int sendto (int SOCKET, void *BUFFER. size_t SIZE, int FLAGS, struct sockaddr *ADDR, socklen_t LENGTH)'
-- `sys/socket.h' (BSD): *Note Sending Datagrams::.
--
--`void setbuf (FILE *STREAM, char *BUF)'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`void setbuffer (FILE *STREAM, char *BUF, size_t SIZE)'
-- `stdio.h' (BSD): *Note Controlling Buffering::.
--
--`int setcontext (const ucontext_t *UCP)'
-- `ucontext.h' (SVID): *Note System V contexts::.
--
--`int setdomainname (const char *NAME, size_t LENGTH)'
-- `unistd.h' (???): *Note Host Identification::.
--
--`int setegid (gid_t NEWGID)'
-- `unistd.h' (POSIX.1): *Note Setting Groups::.
--
--`int setenv (const char *NAME, const char *VALUE, int REPLACE)'
-- `stdlib.h' (BSD): *Note Environment Access::.
--
--`int seteuid (uid_t NEWEUID)'
-- `unistd.h' (POSIX.1): *Note Setting User ID::.
--
--`int setfsent (void)'
-- `fstab.h' (BSD): *Note fstab::.
--
--`int setgid (gid_t NEWGID)'
-- `unistd.h' (POSIX.1): *Note Setting Groups::.
--
--`void setgrent (void)'
-- `grp.h' (SVID, BSD): *Note Scanning All Groups::.
--
--`int setgroups (size_t COUNT, gid_t *GROUPS)'
-- `grp.h' (BSD): *Note Setting Groups::.
--
--`void sethostent (int STAYOPEN)'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`int sethostid (long int ID)'
-- `unistd.h' (BSD): *Note Host Identification::.
--
--`int sethostname (const char *NAME, size_t LENGTH)'
-- `unistd.h' (BSD): *Note Host Identification::.
--
--`int setitimer (int WHICH, struct itimerval *NEW, struct itimerval *OLD)'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`int setjmp (jmp_buf STATE)'
-- `setjmp.h' (ISO): *Note Non-Local Details::.
--
--`void setkey (const char *KEY)'
-- `crypt.h' (BSD, SVID): *Note DES Encryption::.
--
--`void setkey_r (const char *KEY, struct crypt_data * DATA)'
-- `crypt.h' (GNU): *Note DES Encryption::.
--
--`void setlinebuf (FILE *STREAM)'
-- `stdio.h' (BSD): *Note Controlling Buffering::.
--
--`char * setlocale (int CATEGORY, const char *LOCALE)'
-- `locale.h' (ISO): *Note Setting the Locale::.
--
--`int setlogmask (int MASK)'
-- `syslog.h' (BSD): *Note setlogmask::.
--
--`FILE * setmntent (const char *FILE, const char *MODE)'
-- `mntent.h' (BSD): *Note mtab::.
--
--`void setnetent (int STAYOPEN)'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`int setnetgrent (const char *NETGROUP)'
-- `netdb.h' (BSD): *Note Lookup Netgroup::.
--
--`int setpgid (pid_t PID, pid_t PGID)'
-- `unistd.h' (POSIX.1): *Note Process Group Functions::.
--
--`int setpgrp (pid_t PID, pid_t PGID)'
-- `unistd.h' (BSD): *Note Process Group Functions::.
--
--`int setpriority (int CLASS, int ID, int NICEVAL)'
-- `sys/resource.h' (BSD,POSIX): *Note Traditional Scheduling
-- Functions::.
--
--`void setprotoent (int STAYOPEN)'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`void setpwent (void)'
-- `pwd.h' (SVID, BSD): *Note Scanning All Users::.
--
--`int setregid (gid_t RGID, gid_t EGID)'
-- `unistd.h' (BSD): *Note Setting Groups::.
--
--`int setreuid (uid_t RUID, uid_t EUID)'
-- `unistd.h' (BSD): *Note Setting User ID::.
--
--`int setrlimit (int RESOURCE, const struct rlimit *RLP)'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`int setrlimit64 (int RESOURCE, const struct rlimit64 *RLP)'
-- `sys/resource.h' (Unix98): *Note Limits on Resources::.
--
--`void setservent (int STAYOPEN)'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`pid_t setsid (void)'
-- `unistd.h' (POSIX.1): *Note Process Group Functions::.
--
--`int setsockopt (int SOCKET, int LEVEL, int OPTNAME, void *OPTVAL, socklen_t OPTLEN)'
-- `sys/socket.h' (BSD): *Note Socket Option Functions::.
--
--`void * setstate (void *STATE)'
-- `stdlib.h' (BSD): *Note BSD Random::.
--
--`int setstate_r (char *restrict STATEBUF, struct random_data *restrict BUF)'
-- `stdlib.h' (GNU): *Note BSD Random::.
--
--`int settimeofday (const struct timeval *TP, const struct timezone *TZP)'
-- `sys/time.h' (BSD): *Note High-Resolution Calendar::.
--
--`int setuid (uid_t NEWUID)'
-- `unistd.h' (POSIX.1): *Note Setting User ID::.
--
--`void setutent (void)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`void setutxent (void)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`int setvbuf (FILE *STREAM, char *BUF, int MODE, size_t SIZE)'
-- `stdio.h' (ISO): *Note Controlling Buffering::.
--
--`SHRT_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`SHRT_MIN'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int shutdown (int SOCKET, int HOW)'
-- `sys/socket.h' (BSD): *Note Closing a Socket::.
--
--`S_IEXEC'
-- `sys/stat.h' (BSD): *Note Permission Bits::.
--
--`S_IFBLK'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFCHR'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFDIR'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFIFO'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFLNK'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`int S_IFMT'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFREG'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`S_IFSOCK'
-- `sys/stat.h' (BSD): *Note Testing File Type::.
--
--`int SIGABRT'
-- `signal.h' (ISO): *Note Program Error Signals::.
--
--`int sigaction (int SIGNUM, const struct sigaction *restrict ACTION, struct sigaction *restrict OLD-ACTION)'
-- `signal.h' (POSIX.1): *Note Advanced Signal Handling::.
--
--`int sigaddset (sigset_t *SET, int SIGNUM)'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`int SIGALRM'
-- `signal.h' (POSIX.1): *Note Alarm Signals::.
--
--`int sigaltstack (const stack_t *restrict STACK, stack_t *restrict OLDSTACK)'
-- `signal.h' (XPG): *Note Signal Stack::.
--
--`sig_atomic_t'
-- `signal.h' (ISO): *Note Atomic Types::.
--
--`SIG_BLOCK'
-- `signal.h' (POSIX.1): *Note Process Signal Mask::.
--
--`int sigblock (int MASK)'
-- `signal.h' (BSD): *Note Blocking in BSD::.
--
--`int SIGBUS'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`int SIGCHLD'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`int SIGCLD'
-- `signal.h' (SVID): *Note Job Control Signals::.
--
--`int SIGCONT'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`int sigdelset (sigset_t *SET, int SIGNUM)'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`int sigemptyset (sigset_t *SET)'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`int SIGEMT'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`sighandler_t SIG_ERR'
-- `signal.h' (ISO): *Note Basic Signal Handling::.
--
--`int sigfillset (sigset_t *SET)'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`int SIGFPE'
-- `signal.h' (ISO): *Note Program Error Signals::.
--
--`sighandler_t'
-- `signal.h' (GNU): *Note Basic Signal Handling::.
--
--`int SIGHUP'
-- `signal.h' (POSIX.1): *Note Termination Signals::.
--
--`int SIGILL'
-- `signal.h' (ISO): *Note Program Error Signals::.
--
--`int SIGINFO'
-- `signal.h' (BSD): *Note Miscellaneous Signals::.
--
--`int SIGINT'
-- `signal.h' (ISO): *Note Termination Signals::.
--
--`int siginterrupt (int SIGNUM, int FAILFLAG)'
-- `signal.h' (BSD): *Note BSD Handler::.
--
--`int SIGIO'
-- `signal.h' (BSD): *Note Asynchronous I/O Signals::.
--
--`int SIGIOT'
-- `signal.h' (Unix): *Note Program Error Signals::.
--
--`int sigismember (const sigset_t *SET, int SIGNUM)'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`sigjmp_buf'
-- `setjmp.h' (POSIX.1): *Note Non-Local Exits and Signals::.
--
--`int SIGKILL'
-- `signal.h' (POSIX.1): *Note Termination Signals::.
--
--`void siglongjmp (sigjmp_buf STATE, int VALUE)'
-- `setjmp.h' (POSIX.1): *Note Non-Local Exits and Signals::.
--
--`int SIGLOST'
-- `signal.h' (GNU): *Note Operation Error Signals::.
--
--`int sigmask (int SIGNUM)'
-- `signal.h' (BSD): *Note Blocking in BSD::.
--
--`sighandler_t signal (int SIGNUM, sighandler_t ACTION)'
-- `signal.h' (ISO): *Note Basic Signal Handling::.
--
--`int signbit (_float-type_ X)'
-- `math.h' (ISO): *Note FP Bit Twiddling::.
--
--`long long int significand (double X)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int significandf (float X)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`long long int significandl (long double X)'
-- `math.h' (BSD): *Note Normalization Functions::.
--
--`int sigpause (int MASK)'
-- `signal.h' (BSD): *Note Blocking in BSD::.
--
--`int sigpending (sigset_t *SET)'
-- `signal.h' (POSIX.1): *Note Checking for Pending Signals::.
--
--`int SIGPIPE'
-- `signal.h' (POSIX.1): *Note Operation Error Signals::.
--
--`int SIGPOLL'
-- `signal.h' (SVID): *Note Asynchronous I/O Signals::.
--
--`int sigprocmask (int HOW, const sigset_t *restrict SET, sigset_t *restrict OLDSET)'
-- `signal.h' (POSIX.1): *Note Process Signal Mask::.
--
--`int SIGPROF'
-- `signal.h' (BSD): *Note Alarm Signals::.
--
--`int SIGQUIT'
-- `signal.h' (POSIX.1): *Note Termination Signals::.
--
--`int SIGSEGV'
-- `signal.h' (ISO): *Note Program Error Signals::.
--
--`int sigsetjmp (sigjmp_buf STATE, int SAVESIGS)'
-- `setjmp.h' (POSIX.1): *Note Non-Local Exits and Signals::.
--
--`SIG_SETMASK'
-- `signal.h' (POSIX.1): *Note Process Signal Mask::.
--
--`int sigsetmask (int MASK)'
-- `signal.h' (BSD): *Note Blocking in BSD::.
--
--`sigset_t'
-- `signal.h' (POSIX.1): *Note Signal Sets::.
--
--`int sigstack (const struct sigstack *STACK, struct sigstack *OLDSTACK)'
-- `signal.h' (BSD): *Note Signal Stack::.
--
--`int SIGSTOP'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`int sigsuspend (const sigset_t *SET)'
-- `signal.h' (POSIX.1): *Note Sigsuspend::.
--
--`int SIGSYS'
-- `signal.h' (Unix): *Note Program Error Signals::.
--
--`int SIGTERM'
-- `signal.h' (ISO): *Note Termination Signals::.
--
--`int SIGTRAP'
-- `signal.h' (BSD): *Note Program Error Signals::.
--
--`int SIGTSTP'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`int SIGTTIN'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`int SIGTTOU'
-- `signal.h' (POSIX.1): *Note Job Control Signals::.
--
--`SIG_UNBLOCK'
-- `signal.h' (POSIX.1): *Note Process Signal Mask::.
--
--`int SIGURG'
-- `signal.h' (BSD): *Note Asynchronous I/O Signals::.
--
--`int SIGUSR1'
-- `signal.h' (POSIX.1): *Note Miscellaneous Signals::.
--
--`int SIGUSR2'
-- `signal.h' (POSIX.1): *Note Miscellaneous Signals::.
--
--`int sigvec (int SIGNUM, const struct sigvec *ACTION,struct sigvec *OLD-ACTION)'
-- `signal.h' (BSD): *Note BSD Handler::.
--
--`int SIGVTALRM'
-- `signal.h' (BSD): *Note Alarm Signals::.
--
--`int sigwait (const sigset_t *SET, int *SIG)'
-- `pthread.h' (POSIX): *Note Threads and Signal Handling::.
--
--`int SIGWINCH'
-- `signal.h' (BSD): *Note Miscellaneous Signals::.
--
--`int SIGXCPU'
-- `signal.h' (BSD): *Note Operation Error Signals::.
--
--`int SIGXFSZ'
-- `signal.h' (BSD): *Note Operation Error Signals::.
--
--`double sin (double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`void sincos (double X, double *SINX, double *COSX)'
-- `math.h' (GNU): *Note Trig Functions::.
--
--`void sincosf (float X, float *SINX, float *COSX)'
-- `math.h' (GNU): *Note Trig Functions::.
--
--`void sincosl (long double X, long double *SINX, long double *COSX)'
-- `math.h' (GNU): *Note Trig Functions::.
--
--`float sinf (float X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`double sinh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float sinhf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double sinhl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double sinl (long double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`S_IREAD'
-- `sys/stat.h' (BSD): *Note Permission Bits::.
--
--`S_IRGRP'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IROTH'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IRUSR'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IRWXG'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IRWXO'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IRWXU'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`int S_ISBLK (mode_t M)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_ISCHR (mode_t M)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_ISDIR (mode_t M)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_ISFIFO (mode_t M)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`S_ISGID'
-- `sys/stat.h' (POSIX): *Note Permission Bits::.
--
--`int S_ISLNK (mode_t M)'
-- `sys/stat.h' (GNU): *Note Testing File Type::.
--
--`int S_ISREG (mode_t M)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_ISSOCK (mode_t M)'
-- `sys/stat.h' (GNU): *Note Testing File Type::.
--
--`S_ISUID'
-- `sys/stat.h' (POSIX): *Note Permission Bits::.
--
--`S_ISVTX'
-- `sys/stat.h' (BSD): *Note Permission Bits::.
--
--`S_IWGRP'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IWOTH'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IWRITE'
-- `sys/stat.h' (BSD): *Note Permission Bits::.
--
--`S_IWUSR'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IXGRP'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IXOTH'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`S_IXUSR'
-- `sys/stat.h' (POSIX.1): *Note Permission Bits::.
--
--`size_t'
-- `stddef.h' (ISO): *Note Important Data Types::.
--
--`unsigned int sleep (unsigned int SECONDS)'
-- `unistd.h' (POSIX.1): *Note Sleeping::.
--
--`int snprintf (char *S, size_t SIZE, const char *TEMPLATE, ...)'
-- `stdio.h' (GNU): *Note Formatted Output Functions::.
--
--`SO_BROADCAST'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`int SOCK_DGRAM'
-- `sys/socket.h' (BSD): *Note Communication Styles::.
--
--`int socket (int NAMESPACE, int STYLE, int PROTOCOL)'
-- `sys/socket.h' (BSD): *Note Creating a Socket::.
--
--`int socketpair (int NAMESPACE, int STYLE, int PROTOCOL, int FILEDES[2])'
-- `sys/socket.h' (BSD): *Note Socket Pairs::.
--
--`int SOCK_RAW'
-- `sys/socket.h' (BSD): *Note Communication Styles::.
--
--`int SOCK_RDM'
-- `sys/socket.h' (BSD): *Note Communication Styles::.
--
--`int SOCK_SEQPACKET'
-- `sys/socket.h' (BSD): *Note Communication Styles::.
--
--`int SOCK_STREAM'
-- `sys/socket.h' (BSD): *Note Communication Styles::.
--
--`SO_DEBUG'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_DONTROUTE'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_ERROR'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_KEEPALIVE'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_LINGER'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`int SOL_SOCKET'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_OOBINLINE'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_RCVBUF'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_REUSEADDR'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_SNDBUF'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`SO_STYLE'
-- `sys/socket.h' (GNU): *Note Socket-Level Options::.
--
--`SO_TYPE'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`speed_t'
-- `termios.h' (POSIX.1): *Note Line Speed::.
--
--`int sprintf (char *S, const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Output Functions::.
--
--`double sqrt (double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`float sqrtf (float X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`long double sqrtl (long double X)'
-- `math.h' (ISO): *Note Exponents and Logarithms::.
--
--`void srand (unsigned int SEED)'
-- `stdlib.h' (ISO): *Note ISO Random::.
--
--`void srand48 (long int SEEDVAL)'
-- `stdlib.h' (SVID): *Note SVID Random::.
--
--`int srand48_r (long int SEEDVAL, struct drand48_data *BUFFER)'
-- `stdlib.h' (GNU): *Note SVID Random::.
--
--`void srandom (unsigned int SEED)'
-- `stdlib.h' (BSD): *Note BSD Random::.
--
--`int srandom_r (unsigned int SEED, struct random_data *BUF)'
-- `stdlib.h' (GNU): *Note BSD Random::.
--
--`int sscanf (const char *S, const char *TEMPLATE, ...)'
-- `stdio.h' (ISO): *Note Formatted Input Functions::.
--
--`sighandler_t ssignal (int SIGNUM, sighandler_t ACTION)'
-- `signal.h' (SVID): *Note Basic Signal Handling::.
--
--`int SSIZE_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`ssize_t'
-- `unistd.h' (POSIX.1): *Note I/O Primitives::.
--
--`stack_t'
-- `signal.h' (XPG): *Note Signal Stack::.
--
--`int stat (const char *FILENAME, struct stat *BUF)'
-- `sys/stat.h' (POSIX.1): *Note Reading Attributes::.
--
--`int stat64 (const char *FILENAME, struct stat64 *BUF)'
-- `sys/stat.h' (Unix98): *Note Reading Attributes::.
--
--`FILE * stderr'
-- `stdio.h' (ISO): *Note Standard Streams::.
--
--`STDERR_FILENO'
-- `unistd.h' (POSIX.1): *Note Descriptors and Streams::.
--
--`FILE * stdin'
-- `stdio.h' (ISO): *Note Standard Streams::.
--
--`STDIN_FILENO'
-- `unistd.h' (POSIX.1): *Note Descriptors and Streams::.
--
--`FILE * stdout'
-- `stdio.h' (ISO): *Note Standard Streams::.
--
--`STDOUT_FILENO'
-- `unistd.h' (POSIX.1): *Note Descriptors and Streams::.
--
--`int stime (time_t *NEWTIME)'
-- `time.h' (SVID, XPG): *Note Simple Calendar Time::.
--
--`char * stpcpy (char *restrict TO, const char *restrict FROM)'
-- `string.h' (Unknown origin): *Note Copying and Concatenation::.
--
--`char * stpncpy (char *restrict TO, const char *restrict FROM, size_t SIZE)'
-- `string.h' (GNU): *Note Copying and Concatenation::.
--
--`int strcasecmp (const char *S1, const char *S2)'
-- `string.h' (BSD): *Note String/Array Comparison::.
--
--`char * strcasestr (const char *HAYSTACK, const char *NEEDLE)'
-- `string.h' (GNU): *Note Search Functions::.
--
--`char * strcat (char *restrict TO, const char *restrict FROM)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`char * strchr (const char *STRING, int C)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`char * strchrnul (const char *STRING, int C)'
-- `string.h' (GNU): *Note Search Functions::.
--
--`int strcmp (const char *S1, const char *S2)'
-- `string.h' (ISO): *Note String/Array Comparison::.
--
--`int strcoll (const char *S1, const char *S2)'
-- `string.h' (ISO): *Note Collation Functions::.
--
--`char * strcpy (char *restrict TO, const char *restrict FROM)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`size_t strcspn (const char *STRING, const char *STOPSET)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`char * strdup (const char *S)'
-- `string.h' (SVID): *Note Copying and Concatenation::.
--
--`char * strdupa (const char *S)'
-- `string.h' (GNU): *Note Copying and Concatenation::.
--
--`int STREAM_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`char * strerror (int ERRNUM)'
-- `string.h' (ISO): *Note Error Messages::.
--
--`char * strerror_r (int ERRNUM, char *BUF, size_t N)'
-- `string.h' (GNU): *Note Error Messages::.
--
--`char * strfry (char *STRING)'
-- `string.h' (GNU): *Note strfry::.
--
--`size_t strftime (char *S, size_t SIZE, const char *TEMPLATE, const struct tm *BROKENTIME)'
-- `time.h' (ISO): *Note Formatting Calendar Time::.
--
--`size_t strlen (const char *S)'
-- `string.h' (ISO): *Note String Length::.
--
--`int strncasecmp (const char *S1, const char *S2, size_t N)'
-- `string.h' (BSD): *Note String/Array Comparison::.
--
--`char * strncat (char *restrict TO, const char *restrict FROM, size_t SIZE)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`int strncmp (const char *S1, const char *S2, size_t SIZE)'
-- `string.h' (ISO): *Note String/Array Comparison::.
--
--`char * strncpy (char *restrict TO, const char *restrict FROM, size_t SIZE)'
-- `string.h' (ISO): *Note Copying and Concatenation::.
--
--`char * strndup (const char *S, size_t SIZE)'
-- `string.h' (GNU): *Note Copying and Concatenation::.
--
--`char * strndupa (const char *S, size_t SIZE)'
-- `string.h' (GNU): *Note Copying and Concatenation::.
--
--`size_t strnlen (const char *S, size_t MAXLEN)'
-- `string.h' (GNU): *Note String Length::.
--
--`char * strpbrk (const char *STRING, const char *STOPSET)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`char * strptime (const char *S, const char *FMT, struct tm *TP)'
-- `time.h' (XPG4): *Note Low-Level Time String Parsing::.
--
--`char * strrchr (const char *STRING, int C)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`char * strsep (char **STRING_PTR, const char *DELIMITER)'
-- `string.h' (BSD): *Note Finding Tokens in a String::.
--
--`char * strsignal (int SIGNUM)'
-- `string.h' (GNU): *Note Signal Messages::.
--
--`size_t strspn (const char *STRING, const char *SKIPSET)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`char * strstr (const char *HAYSTACK, const char *NEEDLE)'
-- `string.h' (ISO): *Note Search Functions::.
--
--`double strtod (const char *restrict STRING, char **restrict TAILPTR)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`float strtof (const char *STRING, char **TAILPTR)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`intmax_t strtoimax (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `inttypes.h' (ISO): *Note Parsing of Integers::.
--
--`char * strtok (char *restrict NEWSTRING, const char *restrict DELIMITERS)'
-- `string.h' (ISO): *Note Finding Tokens in a String::.
--
--`char * strtok_r (char *NEWSTRING, const char *DELIMITERS, char **SAVE_PTR)'
-- `string.h' (POSIX): *Note Finding Tokens in a String::.
--
--`long int strtol (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`long double strtold (const char *STRING, char **TAILPTR)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`long long int strtoll (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`long long int strtoq (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (BSD): *Note Parsing of Integers::.
--
--`unsigned long int strtoul (const char *retrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`unsigned long long int strtoull (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (ISO): *Note Parsing of Integers::.
--
--`uintmax_t strtoumax (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `inttypes.h' (ISO): *Note Parsing of Integers::.
--
--`unsigned long long int strtouq (const char *restrict STRING, char **restrict TAILPTR, int BASE)'
-- `stdlib.h' (BSD): *Note Parsing of Integers::.
--
--`struct aiocb'
-- `aio.h' (POSIX.1b): *Note Asynchronous I/O::.
--
--`struct aiocb64'
-- `aio.h' (POSIX.1b): *Note Asynchronous I/O::.
--
--`struct aioinit'
-- `aio.h' (GNU): *Note Configuration of AIO::.
--
--`struct argp'
-- `argp.h' (GNU): *Note Argp Parsers::.
--
--`struct argp_child'
-- `argp.h' (GNU): *Note Argp Children::.
--
--`struct argp_option'
-- `argp.h' (GNU): *Note Argp Option Vectors::.
--
--`struct argp_state'
-- `argp.h' (GNU): *Note Argp Parsing State::.
--
--`struct dirent'
-- `dirent.h' (POSIX.1): *Note Directory Entries::.
--
--`struct exit_status'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`struct flock'
-- `fcntl.h' (POSIX.1): *Note File Locks::.
--
--`struct fstab'
-- `fstab.h' (BSD): *Note fstab::.
--
--`struct FTW'
-- `ftw.h' (XPG4.2): *Note Working with Directory Trees::.
--
--`struct __gconv_step'
-- `gconv.h' (GNU): *Note glibc iconv Implementation::.
--
--`struct __gconv_step_data'
-- `gconv.h' (GNU): *Note glibc iconv Implementation::.
--
--`struct group'
-- `grp.h' (POSIX.1): *Note Group Data Structure::.
--
--`struct hostent'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`struct if_nameindex'
-- `net/if.h' (IPv6 basic API): *Note Interface Naming::.
--
--`struct in6_addr'
-- `netinet/in.h' (IPv6 basic API): *Note Host Address Data Type::.
--
--`struct in_addr'
-- `netinet/in.h' (BSD): *Note Host Address Data Type::.
--
--`struct iovec'
-- `sys/uio.h' (BSD): *Note Scatter-Gather::.
--
--`struct itimerval'
-- `sys/time.h' (BSD): *Note Setting an Alarm::.
--
--`struct lconv'
-- `locale.h' (ISO): *Note The Lame Way to Locale Data::.
--
--`struct linger'
-- `sys/socket.h' (BSD): *Note Socket-Level Options::.
--
--`struct mallinfo'
-- `malloc.h' (GNU): *Note Statistics of Malloc::.
--
--`struct mntent'
-- `mntent.h' (BSD): *Note mtab::.
--
--`struct msghdr'
-- `sys/socket.h' (BSD): *Note Receiving Datagrams::.
--
--`struct netent'
-- `netdb.h' (BSD): *Note Networks Database::.
--
--`struct obstack'
-- `obstack.h' (GNU): *Note Creating Obstacks::.
--
--`struct option'
-- `getopt.h' (GNU): *Note Getopt Long Options::.
--
--`struct passwd'
-- `pwd.h' (POSIX.1): *Note User Data Structure::.
--
--`struct printf_info'
-- `printf.h' (GNU): *Note Conversion Specifier Options::.
--
--`struct protoent'
-- `netdb.h' (BSD): *Note Protocols Database::.
--
--`struct random_data'
-- `stdlib.h' (GNU): *Note BSD Random::.
--
--`struct rlimit'
-- `sys/resource.h' (BSD): *Note Limits on Resources::.
--
--`struct rlimit64'
-- `sys/resource.h' (Unix98): *Note Limits on Resources::.
--
--`struct rusage'
-- `sys/resource.h' (BSD): *Note Resource Usage::.
--
--`struct sched_param'
-- `sched.h' (POSIX): *Note Basic Scheduling Functions::.
--
--`struct servent'
-- `netdb.h' (BSD): *Note Services Database::.
--
--`struct sgttyb'
-- `termios.h' (BSD): *Note BSD Terminal Modes::.
--
--`struct sigaction'
-- `signal.h' (POSIX.1): *Note Advanced Signal Handling::.
--
--`struct sigstack'
-- `signal.h' (BSD): *Note Signal Stack::.
--
--`struct sigvec'
-- `signal.h' (BSD): *Note BSD Handler::.
--
--`struct sockaddr'
-- `sys/socket.h' (BSD): *Note Address Formats::.
--
--`struct sockaddr_in'
-- `netinet/in.h' (BSD): *Note Internet Address Formats::.
--
--`struct sockaddr_un'
-- `sys/un.h' (BSD): *Note Local Namespace Details::.
--
--`struct stat'
-- `sys/stat.h' (POSIX.1): *Note Attribute Meanings::.
--
--`struct stat64'
-- `sys/stat.h' (LFS): *Note Attribute Meanings::.
--
--`struct termios'
-- `termios.h' (POSIX.1): *Note Mode Data Types::.
--
--`struct timespec'
-- `sys/time.h' (POSIX.1): *Note Elapsed Time::.
--
--`struct timeval'
-- `sys/time.h' (BSD): *Note Elapsed Time::.
--
--`struct timezone'
-- `sys/time.h' (BSD): *Note High-Resolution Calendar::.
--
--`struct tm'
-- `time.h' (ISO): *Note Broken-down Time::.
--
--`struct tms'
-- `sys/times.h' (POSIX.1): *Note Processor Time::.
--
--`struct utimbuf'
-- `time.h' (POSIX.1): *Note File Times::.
--
--`struct utsname'
-- `sys/utsname.h' (POSIX.1): *Note Platform Type::.
--
--`int strverscmp (const char *S1, const char *S2)'
-- `string.h' (GNU): *Note String/Array Comparison::.
--
--`size_t strxfrm (char *restrict TO, const char *restrict FROM, size_t SIZE)'
-- `string.h' (ISO): *Note Collation Functions::.
--
--`int stty (int FILEDES, struct sgttyb * attributes)'
-- `sgtty.h' (BSD): *Note BSD Terminal Modes::.
--
--`int S_TYPEISMQ (struct stat *S)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_TYPEISSEM (struct stat *S)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int S_TYPEISSHM (struct stat *S)'
-- `sys/stat.h' (POSIX): *Note Testing File Type::.
--
--`int SUN_LEN (_struct sockaddr_un *_ PTR)'
-- `sys/un.h' (BSD): *Note Local Namespace Details::.
--
--`_SVID_SOURCE'
-- (GNU): *Note Feature Test Macros::.
--
--`int SV_INTERRUPT'
-- `signal.h' (BSD): *Note BSD Handler::.
--
--`int SV_ONSTACK'
-- `signal.h' (BSD): *Note BSD Handler::.
--
--`int SV_RESETHAND'
-- `signal.h' (Sun): *Note BSD Handler::.
--
--`int swapcontext (ucontext_t *restrict OUCP, const ucontext_t *restrict UCP)'
-- `ucontext.h' (SVID): *Note System V contexts::.
--
--`int swprintf (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, ...)'
-- `wchar.h' (GNU): *Note Formatted Output Functions::.
--
--`int swscanf (const wchar_t *WS, const char *TEMPLATE, ...)'
-- `wchar.h' (ISO): *Note Formatted Input Functions::.
--
--`int symlink (const char *OLDNAME, const char *NEWNAME)'
-- `unistd.h' (BSD): *Note Symbolic Links::.
--
--`SYMLINK_MAX'
-- `limits.h' (POSIX.1): *Note File Minimums::.
--
--`int sync (void)'
-- `unistd.h' (X/Open): *Note Synchronizing I/O::.
--
--`long int syscall (long int SYSNO, ...)'
-- `unistd.h' (???): *Note System Calls::.
--
--`long int sysconf (int PARAMETER)'
-- `unistd.h' (POSIX.1): *Note Sysconf Definition::.
--
--`int sysctl (int *NAMES, int NLEN, void *OLDVAL,'
-- `sysctl.h' (BSD): *Note System Parameters::.
--
--`void syslog (int FACILITY_PRIORITY, char *FORMAT, ...)'
-- `syslog.h' (BSD): *Note syslog; vsyslog::.
--
--`int system (const char *COMMAND)'
-- `stdlib.h' (ISO): *Note Running a Command::.
--
--`sighandler_t sysv_signal (int SIGNUM, sighandler_t ACTION)'
-- `signal.h' (GNU): *Note Basic Signal Handling::.
--
--`double tan (double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`float tanf (float X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`double tanh (double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`float tanhf (float X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double tanhl (long double X)'
-- `math.h' (ISO): *Note Hyperbolic Functions::.
--
--`long double tanl (long double X)'
-- `math.h' (ISO): *Note Trig Functions::.
--
--`int tcdrain (int FILEDES)'
-- `termios.h' (POSIX.1): *Note Line Control::.
--
--`tcflag_t'
-- `termios.h' (POSIX.1): *Note Mode Data Types::.
--
--`int tcflow (int FILEDES, int ACTION)'
-- `termios.h' (POSIX.1): *Note Line Control::.
--
--`int tcflush (int FILEDES, int QUEUE)'
-- `termios.h' (POSIX.1): *Note Line Control::.
--
--`int tcgetattr (int FILEDES, struct termios *TERMIOS-P)'
-- `termios.h' (POSIX.1): *Note Mode Functions::.
--
--`pid_t tcgetpgrp (int FILEDES)'
-- `unistd.h' (POSIX.1): *Note Terminal Access Functions::.
--
--`pid_t tcgetsid (int FILDES)'
-- `termios.h' (Unix98): *Note Terminal Access Functions::.
--
--`TCSADRAIN'
-- `termios.h' (POSIX.1): *Note Mode Functions::.
--
--`TCSAFLUSH'
-- `termios.h' (POSIX.1): *Note Mode Functions::.
--
--`TCSANOW'
-- `termios.h' (POSIX.1): *Note Mode Functions::.
--
--`TCSASOFT'
-- `termios.h' (BSD): *Note Mode Functions::.
--
--`int tcsendbreak (int FILEDES, int DURATION)'
-- `termios.h' (POSIX.1): *Note Line Control::.
--
--`int tcsetattr (int FILEDES, int WHEN, const struct termios *TERMIOS-P)'
-- `termios.h' (POSIX.1): *Note Mode Functions::.
--
--`int tcsetpgrp (int FILEDES, pid_t PGID)'
-- `unistd.h' (POSIX.1): *Note Terminal Access Functions::.
--
--`void * tdelete (const void *KEY, void **ROOTP, comparison_fn_t COMPAR)'
-- `search.h' (SVID): *Note Tree Search Function::.
--
--`void tdestroy (void *VROOT, __free_fn_t FREEFCT)'
-- `search.h' (GNU): *Note Tree Search Function::.
--
--`off_t telldir (DIR *DIRSTREAM)'
-- `dirent.h' (BSD): *Note Random Access Directory::.
--
--`TEMP_FAILURE_RETRY (EXPRESSION)'
-- `unistd.h' (GNU): *Note Interrupted Primitives::.
--
--`char * tempnam (const char *DIR, const char *PREFIX)'
-- `stdio.h' (SVID): *Note Temporary Files::.
--
--`char * textdomain (const char *DOMAINNAME)'
-- `libintl.h' (GNU): *Note Locating gettext catalog::.
--
--`void * tfind (const void *KEY, void *const *ROOTP, comparison_fn_t COMPAR)'
-- `search.h' (SVID): *Note Tree Search Function::.
--
--`double tgamma (double X)'
-- `math.h' (XPG, ISO): *Note Special Functions::.
--
--`float tgammaf (float X)'
-- `math.h' (XPG, ISO): *Note Special Functions::.
--
--`long double tgammal (long double X)'
-- `math.h' (XPG, ISO): *Note Special Functions::.
--
--`time_t time (time_t *RESULT)'
-- `time.h' (ISO): *Note Simple Calendar Time::.
--
--`time_t timegm (struct tm *BROKENTIME)'
-- `time.h' (???): *Note Broken-down Time::.
--
--`time_t timelocal (struct tm *BROKENTIME)'
-- `time.h' (???): *Note Broken-down Time::.
--
--`clock_t times (struct tms *BUFFER)'
-- `sys/times.h' (POSIX.1): *Note Processor Time::.
--
--`time_t'
-- `time.h' (ISO): *Note Simple Calendar Time::.
--
--`long int timezone'
-- `time.h' (SVID): *Note Time Zone Functions::.
--
--`FILE * tmpfile (void)'
-- `stdio.h' (ISO): *Note Temporary Files::.
--
--`FILE * tmpfile64 (void)'
-- `stdio.h' (Unix98): *Note Temporary Files::.
--
--`int TMP_MAX'
-- `stdio.h' (ISO): *Note Temporary Files::.
--
--`char * tmpnam (char *RESULT)'
-- `stdio.h' (ISO): *Note Temporary Files::.
--
--`char * tmpnam_r (char *RESULT)'
-- `stdio.h' (GNU): *Note Temporary Files::.
--
--`int toascii (int C)'
-- `ctype.h' (SVID, BSD): *Note Case Conversion::.
--
--`int _tolower (int C)'
-- `ctype.h' (SVID): *Note Case Conversion::.
--
--`int tolower (int C)'
-- `ctype.h' (ISO): *Note Case Conversion::.
--
--`tcflag_t TOSTOP'
-- `termios.h' (POSIX.1): *Note Local Modes::.
--
--`int _toupper (int C)'
-- `ctype.h' (SVID): *Note Case Conversion::.
--
--`int toupper (int C)'
-- `ctype.h' (ISO): *Note Case Conversion::.
--
--`wint_t towctrans (wint_t WC, wctrans_t DESC)'
-- `wctype.h' (ISO): *Note Wide Character Case Conversion::.
--
--`wint_t towlower (wint_t WC)'
-- `wctype.h' (ISO): *Note Wide Character Case Conversion::.
--
--`wint_t towupper (wint_t WC)'
-- `wctype.h' (ISO): *Note Wide Character Case Conversion::.
--
--`double trunc (double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`int truncate (const char *FILENAME, off_t LENGTH)'
-- `unistd.h' (X/Open): *Note File Size::.
--
--`int truncate64 (const char *NAME, off64_t LENGTH)'
-- `unistd.h' (Unix98): *Note File Size::.
--
--`float truncf (float X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`long double truncl (long double X)'
-- `math.h' (ISO): *Note Rounding Functions::.
--
--`TRY_AGAIN'
-- `netdb.h' (BSD): *Note Host Names::.
--
--`void * tsearch (const void *KEY, void **ROOTP, comparison_fn_t COMPAR)'
-- `search.h' (SVID): *Note Tree Search Function::.
--
--`char * ttyname (int FILEDES)'
-- `unistd.h' (POSIX.1): *Note Is It a Terminal::.
--
--`int ttyname_r (int FILEDES, char *BUF, size_t LEN)'
-- `unistd.h' (POSIX.1): *Note Is It a Terminal::.
--
--`void twalk (const void *ROOT, __action_fn_t ACTION)'
-- `search.h' (SVID): *Note Tree Search Function::.
--
--`char * tzname [2]'
-- `time.h' (POSIX.1): *Note Time Zone Functions::.
--
--`int TZNAME_MAX'
-- `limits.h' (POSIX.1): *Note General Limits::.
--
--`void tzset (void)'
-- `time.h' (POSIX.1): *Note Time Zone Functions::.
--
--`UCHAR_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`ucontext_t'
-- `ucontext.h' (SVID): *Note System V contexts::.
--
--`uid_t'
-- `sys/types.h' (POSIX.1): *Note Reading Persona::.
--
--`UINT_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int ulimit (int CMD, ...)'
-- `ulimit.h' (BSD): *Note Limits on Resources::.
--
--`ULONG_LONG_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`ULONG_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`mode_t umask (mode_t MASK)'
-- `sys/stat.h' (POSIX.1): *Note Setting Permissions::.
--
--`int umount (const char *FILE)'
-- `sys/mount.h' (SVID, GNU): *Note Mount-Unmount-Remount::.
--
--`int umount2 (const char *FILE, int FLAGS)'
-- `sys/mount.h' (GNU): *Note Mount-Unmount-Remount::.
--
--`int uname (struct utsname *INFO)'
-- `sys/utsname.h' (POSIX.1): *Note Platform Type::.
--
--`int ungetc (int C, FILE *STREAM)'
-- `stdio.h' (ISO): *Note How Unread::.
--
--`wint_t ungetwc (wint_t WC, FILE *STREAM)'
-- `wchar.h' (ISO): *Note How Unread::.
--
--`union wait'
-- `sys/wait.h' (BSD): *Note BSD Wait Functions::.
--
--`int unlink (const char *FILENAME)'
-- `unistd.h' (POSIX.1): *Note Deleting Files::.
--
--`int unlockpt (int FILEDES)'
-- `stdlib.h' (SVID, XPG4.2): *Note Allocation::.
--
--`int unsetenv (const char *NAME)'
-- `stdlib.h' (BSD): *Note Environment Access::.
--
--`void updwtmp (const char *WTMP_FILE, const struct utmp *UTMP)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`USER_PROCESS'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`USER_PROCESS'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`USHRT_MAX'
-- `limits.h' (ISO): *Note Range of Type::.
--
--`int utime (const char *FILENAME, const struct utimbuf *TIMES)'
-- `time.h' (POSIX.1): *Note File Times::.
--
--`int utimes (const char *FILENAME, struct timeval TVP[2])'
-- `sys/time.h' (BSD): *Note File Times::.
--
--`int utmpname (const char *FILE)'
-- `utmp.h' (SVID): *Note Manipulating the Database::.
--
--`int utmpxname (const char *FILE)'
-- `utmpx.h' (XPG4.2): *Note XPG Functions::.
--
--`va_alist'
-- `varargs.h' (Unix): *Note Old Varargs::.
--
--`TYPE va_arg (va_list AP, TYPE)'
-- `stdarg.h' (ISO): *Note Argument Macros::.
--
--`void __va_copy (va_list DEST, va_list SRC)'
-- `stdarg.h' (GNU): *Note Argument Macros::.
--
--`va_dcl'
-- `varargs.h' (Unix): *Note Old Varargs::.
--
--`void va_end (va_list AP)'
-- `stdarg.h' (ISO): *Note Argument Macros::.
--
--`va_list'
-- `stdarg.h' (ISO): *Note Argument Macros::.
--
--`void * valloc (size_t SIZE)'
-- `malloc.h', `stdlib.h' (BSD): *Note Aligned Memory Blocks::.
--
--`int vasprintf (char **PTR, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (GNU): *Note Variable Arguments Output::.
--
--`void va_start (va_list AP)'
-- `varargs.h' (Unix): *Note Old Varargs::.
--
--`void va_start (va_list AP, LAST-REQUIRED)'
-- `stdarg.h' (ISO): *Note Argument Macros::.
--
--`int VDISCARD'
-- `termios.h' (BSD): *Note Other Special::.
--
--`int VDSUSP'
-- `termios.h' (BSD): *Note Signal Characters::.
--
--`int VEOF'
-- `termios.h' (POSIX.1): *Note Editing Characters::.
--
--`int VEOL'
-- `termios.h' (POSIX.1): *Note Editing Characters::.
--
--`int VEOL2'
-- `termios.h' (BSD): *Note Editing Characters::.
--
--`int VERASE'
-- `termios.h' (POSIX.1): *Note Editing Characters::.
--
--`void verr (int STATUS, const char *FORMAT, va_list)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`void verrx (int STATUS, const char *FORMAT, va_list)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`int versionsort (const void *A, const void *B)'
-- `dirent.h' (GNU): *Note Scanning Directory Content::.
--
--`int versionsort64 (const void *A, const void *B)'
-- `dirent.h' (GNU): *Note Scanning Directory Content::.
--
--`pid_t vfork (void)'
-- `unistd.h' (BSD): *Note Creating a Process::.
--
--`int vfprintf (FILE *STREAM, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Output::.
--
--`int vfscanf (FILE *STREAM, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Input::.
--
--`int vfwprintf (FILE *STREAM, const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (ISO): *Note Variable Arguments Output::.
--
--`int vfwscanf (FILE *STREAM, const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (ISO): *Note Variable Arguments Input::.
--
--`int VINTR'
-- `termios.h' (POSIX.1): *Note Signal Characters::.
--
--`int VKILL'
-- `termios.h' (POSIX.1): *Note Editing Characters::.
--
--`int vlimit (int RESOURCE, int LIMIT)'
-- `sys/vlimit.h' (BSD): *Note Limits on Resources::.
--
--`int VLNEXT'
-- `termios.h' (BSD): *Note Other Special::.
--
--`int VMIN'
-- `termios.h' (POSIX.1): *Note Noncanonical Input::.
--
--`int vprintf (const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Output::.
--
--`int VQUIT'
-- `termios.h' (POSIX.1): *Note Signal Characters::.
--
--`int VREPRINT'
-- `termios.h' (BSD): *Note Editing Characters::.
--
--`int vscanf (const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Input::.
--
--`int vsnprintf (char *S, size_t SIZE, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (GNU): *Note Variable Arguments Output::.
--
--`int vsprintf (char *S, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Output::.
--
--`int vsscanf (const char *S, const char *TEMPLATE, va_list AP)'
-- `stdio.h' (ISO): *Note Variable Arguments Input::.
--
--`int VSTART'
-- `termios.h' (POSIX.1): *Note Start/Stop Characters::.
--
--`int VSTATUS'
-- `termios.h' (BSD): *Note Other Special::.
--
--`int VSTOP'
-- `termios.h' (POSIX.1): *Note Start/Stop Characters::.
--
--`int VSUSP'
-- `termios.h' (POSIX.1): *Note Signal Characters::.
--
--`int vswprintf (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (GNU): *Note Variable Arguments Output::.
--
--`int vswscanf (const wchar_t *S, const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (ISO): *Note Variable Arguments Input::.
--
--`void vsyslog (int FACILITY_PRIORITY, char *FORMAT, va_list arglist)'
-- `syslog.h' (BSD): *Note syslog; vsyslog::.
--
--`int VTIME'
-- `termios.h' (POSIX.1): *Note Noncanonical Input::.
--
--`int vtimes (struct vtimes CURRENT, struct vtimes CHILD)'
-- `vtimes.h' (vtimes.h): *Note Resource Usage::.
--
--`void vwarn (const char *FORMAT, va_list)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`void vwarnx (const char *FORMAT, va_list)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`int VWERASE'
-- `termios.h' (BSD): *Note Editing Characters::.
--
--`int vwprintf (const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (ISO): *Note Variable Arguments Output::.
--
--`int vwscanf (const wchar_t *TEMPLATE, va_list AP)'
-- `wchar.h' (ISO): *Note Variable Arguments Input::.
--
--`pid_t wait (int *STATUS-PTR)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion::.
--
--`pid_t wait3 (union wait *STATUS-PTR, int OPTIONS, struct rusage *USAGE)'
-- `sys/wait.h' (BSD): *Note BSD Wait Functions::.
--
--`pid_t wait4 (pid_t PID, int *STATUS-PTR, int OPTIONS, struct rusage *USAGE)'
-- `sys/wait.h' (BSD): *Note Process Completion::.
--
--`pid_t waitpid (pid_t PID, int *STATUS-PTR, int OPTIONS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion::.
--
--`void warn (const char *FORMAT, ...)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`void warnx (const char *FORMAT, ...)'
-- `err.h' (BSD): *Note Error Messages::.
--
--`WCHAR_MAX'
-- `limits.h' (GNU): *Note Range of Type::.
--
--`wint_t WCHAR_MAX'
-- `wchar.h' (ISO): *Note Extended Char Intro::.
--
--`wint_t WCHAR_MIN'
-- `wchar.h' (ISO): *Note Extended Char Intro::.
--
--`wchar_t'
-- `stddef.h' (ISO): *Note Extended Char Intro::.
--
--`int WCOREDUMP (int STATUS)'
-- `sys/wait.h' (BSD): *Note Process Completion Status::.
--
--`wchar_t * wcpcpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
-- `wchar.h' (GNU): *Note Copying and Concatenation::.
--
--`wchar_t * wcpncpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
-- `wchar.h' (GNU): *Note Copying and Concatenation::.
--
--`size_t wcrtomb (char *restrict S, wchar_t WC, mbstate_t *restrict PS)'
-- `wchar.h' (ISO): *Note Converting a Character::.
--
--`int wcscasecmp (const wchar_t *WS1, const wchar_T *WS2)'
-- `wchar.h' (GNU): *Note String/Array Comparison::.
--
--`wchar_t * wcscat (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`wchar_t * wcschr (const wchar_t *WSTRING, int WC)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`wchar_t * wcschrnul (const wchar_t *WSTRING, wchar_t WC)'
-- `wchar.h' (GNU): *Note Search Functions::.
--
--`int wcscmp (const wchar_t *WS1, const wchar_t *WS2)'
-- `wchar.h' (ISO): *Note String/Array Comparison::.
--
--`int wcscoll (const wchar_t *WS1, const wchar_t *WS2)'
-- `wchar.h' (ISO): *Note Collation Functions::.
--
--`wchar_t * wcscpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`size_t wcscspn (const wchar_t *WSTRING, const wchar_t *STOPSET)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`wchar_t * wcsdup (const wchar_t *WS)'
-- `wchar.h' (GNU): *Note Copying and Concatenation::.
--
--`size_t wcsftime (wchar_t *S, size_t SIZE, const wchar_t *TEMPLATE, const struct tm *BROKENTIME)'
-- `time.h' (ISO/Amend1): *Note Formatting Calendar Time::.
--
--`size_t wcslen (const wchar_t *WS)'
-- `wchar.h' (ISO): *Note String Length::.
--
--`int wcsncasecmp (const wchar_t *WS1, const wchar_t *S2, size_t N)'
-- `wchar.h' (GNU): *Note String/Array Comparison::.
--
--`wchar_t * wcsncat (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`int wcsncmp (const wchar_t *WS1, const wchar_t *WS2, size_t SIZE)'
-- `wchar.h' (ISO): *Note String/Array Comparison::.
--
--`wchar_t * wcsncpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`size_t wcsnlen (const wchar_t *WS, size_t MAXLEN)'
-- `wchar.h' (GNU): *Note String Length::.
--
--`size_t wcsnrtombs (char *restrict DST, const wchar_t **restrict SRC, size_t NWC, size_t LEN, mbstate_t *restrict PS)'
-- `wchar.h' (GNU): *Note Converting Strings::.
--
--`wchar_t * wcspbrk (const wchar_t *WSTRING, const wchar_t *STOPSET)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`wchar_t * wcsrchr (const wchar_t *WSTRING, wchar_t C)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`size_t wcsrtombs (char *restrict DST, const wchar_t **restrict SRC, size_t LEN, mbstate_t *restrict PS)'
-- `wchar.h' (ISO): *Note Converting Strings::.
--
--`size_t wcsspn (const wchar_t *WSTRING, const wchar_t *SKIPSET)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`wchar_t * wcsstr (const wchar_t *HAYSTACK, const wchar_t *NEEDLE)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`double wcstod (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR)'
-- `wchar.h' (ISO): *Note Parsing of Floats::.
--
--`float wcstof (const wchar_t *STRING, wchar_t **TAILPTR)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`intmax_t wcstoimax (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`wchar_t * wcstok (wchar_t *NEWSTRING, const char *DELIMITERS)'
-- `wchar.h' (ISO): *Note Finding Tokens in a String::.
--
--`long int wcstol (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`long double wcstold (const wchar_t *STRING, wchar_t **TAILPTR)'
-- `stdlib.h' (ISO): *Note Parsing of Floats::.
--
--`long long int wcstoll (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`size_t wcstombs (char *STRING, const wchar_t *WSTRING, size_t SIZE)'
-- `stdlib.h' (ISO): *Note Non-reentrant String Conversion::.
--
--`long long int wcstoq (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (GNU): *Note Parsing of Integers::.
--
--`unsigned long int wcstoul (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`unsigned long long int wcstoull (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`uintmax_t wcstoumax (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (ISO): *Note Parsing of Integers::.
--
--`unsigned long long int wcstouq (const wchar_t *restrict STRING, wchar_t **restrict TAILPTR, int BASE)'
-- `wchar.h' (GNU): *Note Parsing of Integers::.
--
--`wchar_t * wcswcs (const wchar_t *HAYSTACK, const wchar_t *NEEDLE)'
-- `wchar.h' (XPG): *Note Search Functions::.
--
--`size_t wcsxfrm (wchar_t *restrict WTO, const wchar_t *WFROM, size_t SIZE)'
-- `wchar.h' (ISO): *Note Collation Functions::.
--
--`int wctob (wint_t C)'
-- `wchar.h' (ISO): *Note Converting a Character::.
--
--`int wctomb (char *STRING, wchar_t WCHAR)'
-- `stdlib.h' (ISO): *Note Non-reentrant Character Conversion::.
--
--`wctrans_t wctrans (const char *PROPERTY)'
-- `wctype.h' (ISO): *Note Wide Character Case Conversion::.
--
--`wctrans_t'
-- `wctype.h' (ISO): *Note Wide Character Case Conversion::.
--
--`wctype_t wctype (const char *PROPERTY)'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`wctype_t'
-- `wctype.h' (ISO): *Note Classification of Wide Characters::.
--
--`int WEOF'
-- `wchar.h' (ISO): *Note EOF and Errors::.
--
--`wint_t WEOF'
-- `wchar.h' (ISO): *Note Extended Char Intro::.
--
--`int WEXITSTATUS (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`int WIFEXITED (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`int WIFSIGNALED (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`int WIFSTOPPED (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`wint_t'
-- `wchar.h' (ISO): *Note Extended Char Intro::.
--
--`wchar_t * wmemchr (const wchar_t *BLOCK, wchar_t WC, size_t SIZE)'
-- `wchar.h' (ISO): *Note Search Functions::.
--
--`int wmemcmp (const wchar_t *A1, const wchar_t *A2, size_t SIZE)'
-- `wcjar.h' (ISO): *Note String/Array Comparison::.
--
--`wchar_t * wmemcpy (wchar_t *restrict WTO, const wchar_t *restruct WFROM, size_t SIZE)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`wchar_t * wmemmove (wchar *WTO, const wchar_t *WFROM, size_t SIZE)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`wchar_t * wmempcpy (wchar_t *restrict WTO, const wchar_t *restrict WFROM, size_t SIZE)'
-- `wchar.h' (GNU): *Note Copying and Concatenation::.
--
--`wchar_t * wmemset (wchar_t *BLOCK, wchar_t WC, size_t SIZE)'
-- `wchar.h' (ISO): *Note Copying and Concatenation::.
--
--`int W_OK'
-- `unistd.h' (POSIX.1): *Note Testing File Access::.
--
--`int wordexp (const char *WORDS, wordexp_t *WORD-VECTOR-PTR, int FLAGS)'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`wordexp_t'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`void wordfree (wordexp_t *WORD-VECTOR-PTR)'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`int wprintf (const wchar_t *TEMPLATE, ...)'
-- `wchar.h' (ISO): *Note Formatted Output Functions::.
--
--`WRDE_APPEND'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`WRDE_BADCHAR'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`WRDE_BADVAL'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`WRDE_CMDSUB'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`WRDE_DOOFFS'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`WRDE_NOCMD'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`WRDE_NOSPACE'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`WRDE_REUSE'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`WRDE_SHOWERR'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`WRDE_SYNTAX'
-- `wordexp.h' (POSIX.2): *Note Calling Wordexp::.
--
--`WRDE_UNDEF'
-- `wordexp.h' (POSIX.2): *Note Flags for Wordexp::.
--
--`ssize_t write (int FILEDES, const void *BUFFER, size_t SIZE)'
-- `unistd.h' (POSIX.1): *Note I/O Primitives::.
--
--`ssize_t writev (int FILEDES, const struct iovec *VECTOR, int COUNT)'
-- `sys/uio.h' (BSD): *Note Scatter-Gather::.
--
--`int wscanf (const wchar_t *TEMPLATE, ...)'
-- `wchar.h' (ISO): *Note Formatted Input Functions::.
--
--`int WSTOPSIG (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`int WTERMSIG (int STATUS)'
-- `sys/wait.h' (POSIX.1): *Note Process Completion Status::.
--
--`int X_OK'
-- `unistd.h' (POSIX.1): *Note Testing File Access::.
--
--`_XOPEN_SOURCE'
-- (X/Open): *Note Feature Test Macros::.
--
--`_XOPEN_SOURCE_EXTENDED'
-- (X/Open): *Note Feature Test Macros::.
--
--`double y0 (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float y0f (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double y0l (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`double y1 (double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float y1f (float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double y1l (long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`double yn (int n, double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`float ynf (int n, float X)'
-- `math.h' (SVID): *Note Special Functions::.
--
--`long double ynl (int n, long double X)'
-- `math.h' (SVID): *Note Special Functions::.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-54 glibc-2.3.2-200304020432/manual/libc.info-54
---- glibc-2.3.2/manual/libc.info-54 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-54 Thu Jan 1 01:00:00 1970
-@@ -1,1037 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Installation, Next: Maintenance, Prev: Library Summary, Up: Top
--
--Installing the GNU C Library
--****************************
--
-- Before you do anything else, you should read the file `FAQ' located
--at the top level of the source tree. This file answers common questions
--and describes problems you may experience with compilation and
--installation. It is updated more frequently than this manual.
--
-- Features can be added to GNU Libc via "add-on" bundles. These are
--separate tar files, which you unpack into the top level of the source
--tree. Then you give `configure' the `--enable-add-ons' option to
--activate them, and they will be compiled into the library. As of the
--2.2 release, one important component of glibc is distributed as
--"official" add-ons: the linuxthreads add-on. Unless you are doing an
--unusual installation, you should get this.
--
-- Support for POSIX threads is maintained by someone else, so it's in a
--separate package. It is only available for GNU/Linux systems, but this
--will change in the future. Get it from the same place you got the main
--bundle; the file is `glibc-linuxthreads-VERSION.tar.gz'.
--
-- You will need recent versions of several GNU tools: definitely GCC
--and GNU Make, and possibly others. *Note Tools for Compilation::,
--below.
--
--* Menu:
--
--* Configuring and compiling:: How to compile and test GNU libc.
--* Running make install:: How to install it once you've got it
-- compiled.
--* Tools for Compilation:: You'll need these first.
--* Supported Configurations:: What it runs on, what it doesn't.
--* Linux:: Specific advice for GNU/Linux systems.
--* Reporting Bugs:: So they'll get fixed.
--
--
--File: libc.info, Node: Configuring and compiling, Next: Running make install, Up: Installation
--
--Configuring and compiling GNU Libc
--==================================
--
-- GNU libc can be compiled in the source directory, but we strongly
--advise building it in a separate build directory. For example, if you
--have unpacked the glibc sources in `/src/gnu/glibc-2.3', create a
--directory `/src/gnu/glibc-build' to put the object files in. This
--allows removing the whole build directory in case an error occurs,
--which is the safest way to get a fresh start and should always be done.
--
-- From your object directory, run the shell script `configure' located
--at the top level of the source tree. In the scenario above, you'd type
--
-- $ ../glibc-2.3/configure ARGS...
--
-- Please note that even if you're building in a separate build
--directory, the compilation needs to modify a few files in the source
--directory, especially some files in the manual subdirectory.
--
--`configure' takes many options, but you can get away with knowing only
--two: `--prefix' and `--enable-add-ons'. The `--prefix' option tells
--`configure' where you want glibc installed. This defaults to
--`/usr/local'. The `--enable-add-ons' option tells `configure' to use
--all the add-on bundles it finds in the source directory. Since
--important functionality is provided in add-ons, you should always
--specify this option.
--
-- It may also be useful to set the CC and CFLAGS variables in the
--environment when running `configure'. CC selects the C compiler that
--will be used, and CFLAGS sets optimization options for the compiler.
--
-- The following list describes all of the available options for
--`configure':
--
--`--prefix=DIRECTORY'
-- Install machine-independent data files in subdirectories of
-- `DIRECTORY'. The default is to install in `/usr/local'.
--
--`--exec-prefix=DIRECTORY'
-- Install the library and other machine-dependent files in
-- subdirectories of `DIRECTORY'. The default is to the `--prefix'
-- directory if that option is specified, or `/usr/local' otherwise.
--
--`--with-headers=DIRECTORY'
-- Look for kernel header files in DIRECTORY, not `/usr/include'.
-- Glibc needs information from the kernel's private header files.
-- Glibc will normally look in `/usr/include' for them, but if you
-- specify this option, it will look in DIRECTORY instead.
--
-- This option is primarily of use on a system where the headers in
-- `/usr/include' come from an older version of glibc. Conflicts can
-- occasionally happen in this case. Note that Linux libc5 qualifies
-- as an older version of glibc. You can also use this option if you
-- want to compile glibc with a newer set of kernel headers than the
-- ones found in `/usr/include'.
--
--`--enable-add-ons[=LIST]'
-- Enable add-on packages in your source tree. If this option is
-- specified with no list, it enables all the add-on packages it
-- finds. If you do not wish to use some add-on packages that you
-- have present in your source tree, give this option a list of the
-- add-ons that you _do_ want used, like this:
-- `--enable-add-ons=linuxthreads'
--
--`--enable-kernel=VERSION'
-- This option is currently only useful on GNU/Linux systems. The
-- VERSION parameter should have the form X.Y.Z and describes the
-- smallest version of the Linux kernel the generated library is
-- expected to support. The higher the VERSION number is, the less
-- compatibility code is added, and the faster the code gets.
--
--`--with-binutils=DIRECTORY'
-- Use the binutils (assembler and linker) in `DIRECTORY', not the
-- ones the C compiler would default to. You can use this option if
-- the default binutils on your system cannot deal with all the
-- constructs in the GNU C library. In that case, `configure' will
-- detect the problem and suppress these constructs, so that the
-- library will still be usable, but functionality may be lost--for
-- example, you can't build a shared libc with old binutils.
--
--`--without-fp'
-- Use this option if your computer lacks hardware floating-point
-- support and your operating system does not emulate an FPU.
--
-- these
--
--`--disable-shared'
-- Don't build shared libraries even if it is possible. Not all
-- systems support shared libraries; you need ELF support and
-- (currently) the GNU linker.
--
--`--disable-profile'
-- Don't build libraries with profiling information. You may want to
-- use this option if you don't plan to do profiling.
--
--`--enable-omitfp'
-- Use maximum optimization for the normal (static and shared)
-- libraries, and compile separate static libraries with debugging
-- information and no optimization. We recommend not doing this.
-- The extra optimization doesn't gain you much, it may provoke
-- compiler bugs, and you won't be able to trace bugs through the C
-- library.
--
--`--disable-versioning'
-- Don't compile the shared libraries with symbol version information.
-- Doing this will make the resulting library incompatible with old
-- binaries, so it's not recommended.
--
--`--enable-static-nss'
-- Compile static versions of the NSS (Name Service Switch) libraries.
-- This is not recommended because it defeats the purpose of NSS; a
-- program linked statically with the NSS libraries cannot be
-- dynamically reconfigured to use a different name database.
--
--`--without-tls'
-- By default the C library is built with support for thread-local
-- storage if the used tools support it. By using `--without-tls'
-- this can be prevented though there generally is no reason since it
-- creates compatibility problems.
--
--`--build=BUILD-SYSTEM'
--`--host=HOST-SYSTEM'
-- These options are for cross-compiling. If you specify both
-- options and BUILD-SYSTEM is different from HOST-SYSTEM, `configure'
-- will prepare to cross-compile glibc from BUILD-SYSTEM to be used
-- on HOST-SYSTEM. You'll probably need the `--with-headers' option
-- too, and you may have to override CONFIGURE's selection of the
-- compiler and/or binutils.
--
-- If you only specify `--host', `configure' will prepare for a
-- native compile but use what you specify instead of guessing what
-- your system is. This is most useful to change the CPU submodel.
-- For example, if `configure' guesses your machine as
-- `i586-pc-linux-gnu' but you want to compile a library for 386es,
-- give `--host=i386-pc-linux-gnu' or just `--host=i386-linux' and add
-- the appropriate compiler flags (`-mcpu=i386' will do the trick) to
-- CFLAGS.
--
-- If you specify just `--build', `configure' will get confused.
--
-- To build the library and related programs, type `make'. This will
--produce a lot of output, some of which may look like errors from `make'
--but isn't. Look for error messages from `make' containing `***'.
--Those indicate that something is seriously wrong.
--
-- The compilation process can take several hours. Expect at least two
--hours for the default configuration on i586 for GNU/Linux. For Hurd,
--times are much longer. Some complex modules may take a very long time
--to compile, as much as several minutes on slower machines. Do not
--panic if the compiler appears to hang.
--
-- If you want to run a parallel make, simply pass the `-j' option with
--an appropriate numeric parameter to `make'. You need a recent GNU
--`make' version, though.
--
-- To build and run test programs which exercise some of the library
--facilities, type `make check'. If it does not complete successfully,
--do not use the built library, and report a bug after verifying that the
--problem is not already known. *Note Reporting Bugs::, for instructions
--on reporting bugs. Note that some of the tests assume they are not
--being run by `root'. We recommend you compile and test glibc as an
--unprivileged user.
--
-- Before reporting bugs make sure there is no problem with your system.
--The tests (and later installation) use some pre-existing files of the
--system such as `/etc/passwd', `/etc/nsswitch.conf' and others. These
--files must all contain correct and sensible content.
--
-- To format the `GNU C Library Reference Manual' for printing, type
--`make dvi'. You need a working TeX installation to do this. The
--distribution already includes the on-line formatted version of the
--manual, as Info files. You can regenerate those with `make info', but
--it shouldn't be necessary.
--
-- The library has a number of special-purpose configuration parameters
--which you can find in `Makeconfig'. These can be overwritten with the
--file `configparms'. To change them, create a `configparms' in your
--build directory and add values as appropriate for your system. The
--file is included and parsed by `make' and has to follow the conventions
--for makefiles.
--
-- It is easy to configure the GNU C library for cross-compilation by
--setting a few variables in `configparms'. Set `CC' to the
--cross-compiler for the target you configured the library for; it is
--important to use this same `CC' value when running `configure', like
--this: `CC=TARGET-gcc configure TARGET'. Set `BUILD_CC' to the compiler
--to use for programs run on the build system as part of compiling the
--library. You may need to set `AR' and `RANLIB' to cross-compiling
--versions of `ar' and `ranlib' if the native tools are not configured to
--work with object files for the target you configured for.
--
--
--File: libc.info, Node: Running make install, Next: Tools for Compilation, Prev: Configuring and compiling, Up: Installation
--
--Installing the C Library
--========================
--
-- To install the library and its header files, and the Info files of
--the manual, type `env LANGUAGE=C LC_ALL=C make install'. This will
--build things, if necessary, before installing them; however, you should
--still compile everything first. If you are installing glibc as your
--primary C library, we recommend that you shut the system down to
--single-user mode first, and reboot afterward. This minimizes the risk
--of breaking things when the library changes out from underneath.
--
-- If you're upgrading from Linux libc5 or some other C library, you
--need to replace the `/usr/include' with a fresh directory before
--installing it. The new `/usr/include' should contain the Linux
--headers, but nothing else.
--
-- You must first build the library (`make'), optionally check it
--(`make check'), switch the include directories and then install (`make
--install'). The steps must be done in this order. Not moving the
--directory before install will result in an unusable mixture of header
--files from both libraries, but configuring, building, and checking the
--library requires the ability to compile and run programs against the old
--library.
--
-- If you are upgrading from a previous installation of glibc 2.0 or
--2.1, `make install' will do the entire job. You do not need to remove
--the old includes - if you want to do so anyway you must then follow the
--order given above.
--
-- You may also need to reconfigure GCC to work with the new library.
--The easiest way to do that is to figure out the compiler switches to
--make it work again (`-Wl,--dynamic-linker=/lib/ld-linux.so.2' should
--work on GNU/Linux systems) and use them to recompile gcc. You can also
--edit the specs file (`/usr/lib/gcc-lib/TARGET/VERSION/specs'), but that
--is a bit of a black art.
--
-- You can install glibc somewhere other than where you configured it
--to go by setting the `install_root' variable on the command line for
--`make install'. The value of this variable is prepended to all the
--paths for installation. This is useful when setting up a chroot
--environment or preparing a binary distribution. The directory should be
--specified with an absolute file name.
--
-- Glibc 2.2 includes a daemon called `nscd', which you may or may not
--want to run. `nscd' caches name service lookups; it can dramatically
--improve performance with NIS+, and may help with DNS as well.
--
-- One auxiliary program, `/usr/libexec/pt_chown', is installed setuid
--`root'. This program is invoked by the `grantpt' function; it sets the
--permissions on a pseudoterminal so it can be used by the calling
--process. This means programs like `xterm' and `screen' do not have to
--be setuid to get a pty. (There may be other reasons why they need
--privileges.) If you are using a 2.1 or newer Linux kernel with the
--`devptsfs' or `devfs' filesystems providing pty slaves, you don't need
--this program; otherwise you do. The source for `pt_chown' is in
--`login/programs/pt_chown.c'.
--
-- After installation you might want to configure the timezone and
--locale installation of your system. The GNU C library comes with a
--locale database which gets configured with `localedef'. For example, to
--set up a German locale with name `de_DE', simply issue the command
--`localedef -i de_DE -f ISO-8859-1 de_DE'. To configure all locales
--that are supported by glibc, you can issue from your build directory the
--command `make localedata/install-locales'.
--
-- To configure the locally used timezone, set the `TZ' environment
--variable. The script `tzselect' helps you to select the right value.
--As an example, for Germany, `tzselect' would tell you to use
--`TZ='Europe/Berlin''. For a system wide installation (the given paths
--are for an installation with `--prefix=/usr'), link the timezone file
--which is in `/usr/share/zoneinfo' to the file `/etc/localtime'. For
--Germany, you might execute `ln -s /usr/share/zoneinfo/Europe/Berlin
--/etc/localtime'.
--
--
--File: libc.info, Node: Tools for Compilation, Next: Supported Configurations, Prev: Running make install, Up: Installation
--
--Recommended Tools for Compilation
--=================================
--
-- We recommend installing the following GNU tools before attempting to
--build the GNU C library:
--
-- * GNU `make' 3.79 or newer
--
-- You need the latest version of GNU `make'. Modifying the GNU C
-- Library to work with other `make' programs would be so difficult
-- that we recommend you port GNU `make' instead. *Really.* We
-- recommend GNU `make' version 3.79. All earlier versions have
-- severe bugs or lack features.
--
-- * GCC 3.2 or newer
--
-- The GNU C library can only be compiled with the GNU C compiler
-- family. As of the 2.3 release, GCC 3.2 or higher is required. As
-- of this writing, GCC 3.2 is the compiler we advise to use.
--
-- You can use whatever compiler you like to compile programs that
-- use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in
-- their floating-point support that may be triggered by the math
-- library.
--
-- Check the FAQ for any special compiler issues on particular
-- platforms.
--
-- * GNU `binutils' 2.13 or later
--
-- You must use GNU `binutils' (as and ld) to build the GNU C library.
-- No other assembler and linker has the necessary functionality in
-- the moment.
--
-- * GNU `texinfo' 3.12f
--
-- To correctly translate and install the Texinfo documentation you
-- need this version of the `texinfo' package. Earlier versions do
-- not understand all the tags used in the document, and the
-- installation mechanism for the info files is not present or works
-- differently.
--
-- * GNU `awk' 3.0, or some other POSIX awk
--
-- `Awk' is used in several places to generate files. The scripts
-- should work with any POSIX-compliant `awk' implementation; `gawk'
-- 3.0 and `mawk' 1.3 are known to work.
--
-- * Perl 5
--
-- Perl is not required, but it is used if present to test the
-- installation. We may decide to use it elsewhere in the future.
--
-- * GNU `sed' 3.02 or newer
--
-- `Sed' is used in several places to generate files. Most scripts
-- work with any version of `sed'. The known exception is the script
-- `po2test.sed' in the `intl' subdirectory which is used to generate
-- `msgs.h' for the test suite. This script works correctly only
-- with GNU `sed' 3.02. If you like to run the test suite, you
-- should definitely upgrade `sed'.
--
--
--If you change any of the `configure.in' files you will also need
--
-- * GNU `autoconf' 2.12 or higher
--
--and if you change any of the message translation files you will need
--
-- * GNU `gettext' 0.10.36 or later
--
--You may also need these packages if you upgrade your source tree using
--patches, although we try to avoid this.
--
--
--File: libc.info, Node: Supported Configurations, Next: Linux, Prev: Tools for Compilation, Up: Installation
--
--Supported Configurations
--========================
--
-- The GNU C Library currently supports configurations that match the
--following patterns:
--
-- alpha*-*-linux
-- arm-*-linux
-- cris-*-linux
-- hppa-*-linux
-- iX86-*-gnu
-- iX86-*-linux
-- ia64-*-linux
-- m68k-*-linux
-- mips*-*-linux
-- powerpc-*-linux
-- s390-*-linux
-- s390x-*-linux
-- sparc-*-linux
-- sparc64-*-linux
--
-- Former releases of this library (version 2.1 and/or 2.0) used to run
--on the following configurations:
--
-- arm-*-linuxaout
-- arm-*-none
--
-- Very early releases (version 1.09.1 and perhaps earlier versions)
--used to run on the following configurations:
--
-- alpha-dec-osf1
-- alpha-*-linuxecoff
-- iX86-*-bsd4.3
-- iX86-*-isc2.2
-- iX86-*-isc3.N
-- iX86-*-sco3.2
-- iX86-*-sco3.2v4
-- iX86-*-sysv
-- iX86-*-sysv4
-- iX86-force_cpu386-none
-- iX86-sequent-bsd
-- i960-nindy960-none
-- m68k-hp-bsd4.3
-- m68k-mvme135-none
-- m68k-mvme136-none
-- m68k-sony-newsos3
-- m68k-sony-newsos4
-- m68k-sun-sunos4.N
-- mips-dec-ultrix4.N
-- mips-sgi-irix4.N
-- sparc-sun-solaris2.N
-- sparc-sun-sunos4.N
--
-- Since no one has volunteered to test and fix these configurations,
--they are not supported at the moment. They probably don't compile;
--they definitely don't work anymore. Porting the library is not hard.
--If you are interested in doing a port, please contact the glibc
--maintainers by sending electronic mail to <bug-glibc@gnu.org>.
--
-- Valid cases of `iX86' include `i386', `i486', `i586', and `i686'.
--All of those configurations produce a library that can run on this
--processor and newer processors. The GCC compiler by default generates
--code that's optimized for the machine it's configured for and will use
--the instructions available on that machine. For example if your GCC is
--configured for `i686', gcc will optimize for `i686' and might issue
--some `i686' specific instructions. To generate code for other models,
--you have to configure for that model and give GCC the appropriate
--`-march=' and `-mcpu=' compiler switches via CFLAGS.
--
--
--File: libc.info, Node: Linux, Next: Reporting Bugs, Prev: Supported Configurations, Up: Installation
--
--Specific advice for GNU/Linux systems
--=====================================
--
-- If you are installing GNU libc on a GNU/Linux system, you need to
--have the header files from a 2.2 or newer kernel around for reference.
--For some architectures, like ia64, sh and hppa, you need at least
--headers from kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64). You do not
--need to use that kernel, just have its headers where glibc can access
--at them. The easiest way to do this is to unpack it in a directory
--such as `/usr/src/linux-2.2.1'. In that directory, run `make config'
--and accept all the defaults. Then run `make include/linux/version.h'.
--Finally, configure glibc with the option
--`--with-headers=/usr/src/linux-2.2.1/include'. Use the most recent
--kernel you can get your hands on.
--
-- An alternate tactic is to unpack the 2.2 kernel and run `make
--config' as above; then, rename or delete `/usr/include', create a new
--`/usr/include', and make symbolic links of `/usr/include/linux' and
--`/usr/include/asm' into the kernel sources. You can then configure
--glibc with no special options. This tactic is recommended if you are
--upgrading from libc5, since you need to get rid of the old header files
--anyway.
--
-- After installing GNU libc, you may need to remove or rename
--`/usr/include/linux' and `/usr/include/asm', and replace them with
--copies of `include/linux' and `include/asm-$ARCHITECTURE' taken from
--the Linux source package which supplied kernel headers for building the
--library. ARCHITECTURE will be the machine architecture for which the
--library was built, such as `i386' or `alpha'. You do not need to do
--this if you did not specify an alternate kernel header source using
--`--with-headers'. The intent here is that these directories should be
--copies of, *not* symlinks to, the kernel headers used to build the
--library.
--
-- Note that `/usr/include/net' and `/usr/include/scsi' should *not* be
--symlinks into the kernel sources. GNU libc provides its own versions
--of these files.
--
-- GNU/Linux expects some components of the libc installation to be in
--`/lib' and some in `/usr/lib'. This is handled automatically if you
--configure glibc with `--prefix=/usr'. If you set some other prefix or
--allow it to default to `/usr/local', then all the components are
--installed there.
--
-- If you are upgrading from libc5, you need to recompile every shared
--library on your system against the new library for the sake of new code,
--but keep the old libraries around for old binaries to use. This is
--complicated and difficult. Consult the Glibc2 HOWTO at
--<http://www.imaxx.net/~thrytis/glibc> for details.
--
-- You cannot use `nscd' with 2.0 kernels, due to bugs in the
--kernel-side thread support. `nscd' happens to hit these bugs
--particularly hard, but you might have problems with any threaded
--program.
--
--
--File: libc.info, Node: Reporting Bugs, Prev: Linux, Up: Installation
--
--Reporting Bugs
--==============
--
-- There are probably bugs in the GNU C library. There are certainly
--errors and omissions in this manual. If you report them, they will get
--fixed. If you don't, no one will ever know about them and they will
--remain unfixed for all eternity, if not longer.
--
-- It is a good idea to verify that the problem has not already been
--reported. Bugs are documented in two places: The file `BUGS' describes
--a number of well known bugs and the bug tracking system has a WWW
--interface at <http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl>. The
--WWW interface gives you access to open and closed reports. A closed
--report normally includes a patch or a hint on solving the problem.
--
-- To report a bug, first you must find it. With any luck, this will
--be the hard part. Once you've found a bug, make sure it's really a
--bug. A good way to do this is to see if the GNU C library behaves the
--same way some other C library does. If so, probably you are wrong and
--the libraries are right (but not necessarily). If not, one of the
--libraries is probably wrong. It might not be the GNU library. Many
--historical Unix C libraries permit things that we don't, such as
--closing a file twice.
--
-- If you think you have found some way in which the GNU C library does
--not conform to the ISO and POSIX standards (*note Standards and
--Portability::), that is definitely a bug. Report it!
--
-- Once you're sure you've found a bug, try to narrow it down to the
--smallest test case that reproduces the problem. In the case of a C
--library, you really only need to narrow it down to one library function
--call, if possible. This should not be too difficult.
--
-- The final step when you have a simple test case is to report the bug.
--Do this using the `glibcbug' script. It is installed with libc, or if
--you haven't installed it, will be in your build directory. Send your
--test case, the results you got, the results you expected, and what you
--think the problem might be (if you've thought of anything). `glibcbug'
--will insert the configuration information we need to see, and ship the
--report off to <bugs@gnu.org>. Don't send a message there directly; it
--is fed to a program that expects mail to be formatted in a particular
--way. Use the script.
--
-- If you are not sure how a function should behave, and this manual
--doesn't tell you, that's a bug in the manual. Report that too! If the
--function's behavior disagrees with the manual, then either the library
--or the manual has a bug, so report the disagreement. If you find any
--errors or omissions in this manual, please report them to the Internet
--address <bug-glibc-manual@gnu.org>. If you refer to specific sections
--of the manual, please include the section names for easier
--identification.
--
--
--File: libc.info, Node: Maintenance, Next: Contributors, Prev: Installation, Up: Top
--
--Library Maintenance
--*******************
--
--* Menu:
--
--* Source Layout:: How to add new functions or header files
-- to the GNU C library.
--* Porting:: How to port the GNU C library to
-- a new machine or operating system.
--
--
--File: libc.info, Node: Source Layout, Next: Porting, Up: Maintenance
--
--Adding New Functions
--====================
--
-- The process of building the library is driven by the makefiles, which
--make heavy use of special features of GNU `make'. The makefiles are
--very complex, and you probably don't want to try to understand them.
--But what they do is fairly straightforward, and only requires that you
--define a few variables in the right places.
--
-- The library sources are divided into subdirectories, grouped by
--topic.
--
-- The `string' subdirectory has all the string-manipulation functions,
--`math' has all the mathematical functions, etc.
--
-- Each subdirectory contains a simple makefile, called `Makefile',
--which defines a few `make' variables and then includes the global
--makefile `Rules' with a line like:
--
-- include ../Rules
--
--The basic variables that a subdirectory makefile defines are:
--
--`subdir'
-- The name of the subdirectory, for example `stdio'. This variable
-- *must* be defined.
--
--`headers'
-- The names of the header files in this section of the library, such
-- as `stdio.h'.
--
--`routines'
--`aux'
-- The names of the modules (source files) in this section of the
-- library. These should be simple names, such as `strlen' (rather
-- than complete file names, such as `strlen.c'). Use `routines' for
-- modules that define functions in the library, and `aux' for
-- auxiliary modules containing things like data definitions. But the
-- values of `routines' and `aux' are just concatenated, so there
-- really is no practical difference.
--
--`tests'
-- The names of test programs for this section of the library. These
-- should be simple names, such as `tester' (rather than complete file
-- names, such as `tester.c'). `make tests' will build and run all
-- the test programs. If a test program needs input, put the test
-- data in a file called `TEST-PROGRAM.input'; it will be given to
-- the test program on its standard input. If a test program wants
-- to be run with arguments, put the arguments (all on a single line)
-- in a file called `TEST-PROGRAM.args'. Test programs should exit
-- with zero status when the test passes, and nonzero status when the
-- test indicates a bug in the library or error in building.
--
--`others'
-- The names of "other" programs associated with this section of the
-- library. These are programs which are not tests per se, but are
-- other small programs included with the library. They are built by
-- `make others'.
--
--`install-lib'
--`install-data'
--`install'
-- Files to be installed by `make install'. Files listed in
-- `install-lib' are installed in the directory specified by `libdir'
-- in `configparms' or `Makeconfig' (*note Installation::). Files
-- listed in `install-data' are installed in the directory specified
-- by `datadir' in `configparms' or `Makeconfig'. Files listed in
-- `install' are installed in the directory specified by `bindir' in
-- `configparms' or `Makeconfig'.
--
--`distribute'
-- Other files from this subdirectory which should be put into a
-- distribution tar file. You need not list here the makefile itself
-- or the source and header files listed in the other standard
-- variables. Only define `distribute' if there are files used in an
-- unusual way that should go into the distribution.
--
--`generated'
-- Files which are generated by `Makefile' in this subdirectory.
-- These files will be removed by `make clean', and they will never
-- go into a distribution.
--
--`extra-objs'
-- Extra object files which are built by `Makefile' in this
-- subdirectory. This should be a list of file names like `foo.o';
-- the files will actually be found in whatever directory object
-- files are being built in. These files will be removed by
-- `make clean'. This variable is used for secondary object files
-- needed to build `others' or `tests'.
--
--
--File: libc.info, Node: Porting, Prev: Source Layout, Up: Maintenance
--
--Porting the GNU C Library
--=========================
--
-- The GNU C library is written to be easily portable to a variety of
--machines and operating systems. Machine- and operating system-dependent
--functions are well separated to make it easy to add implementations for
--new machines or operating systems. This section describes the layout of
--the library source tree and explains the mechanisms used to select
--machine-dependent code to use.
--
-- All the machine-dependent and operating system-dependent files in the
--library are in the subdirectory `sysdeps' under the top-level library
--source directory. This directory contains a hierarchy of
--subdirectories (*note Hierarchy Conventions::).
--
-- Each subdirectory of `sysdeps' contains source files for a
--particular machine or operating system, or for a class of machine or
--operating system (for example, systems by a particular vendor, or all
--machines that use IEEE 754 floating-point format). A configuration
--specifies an ordered list of these subdirectories. Each subdirectory
--implicitly appends its parent directory to the list. For example,
--specifying the list `unix/bsd/vax' is equivalent to specifying the list
--`unix/bsd/vax unix/bsd unix'. A subdirectory can also specify that it
--implies other subdirectories which are not directly above it in the
--directory hierarchy. If the file `Implies' exists in a subdirectory,
--it lists other subdirectories of `sysdeps' which are appended to the
--list, appearing after the subdirectory containing the `Implies' file.
--Lines in an `Implies' file that begin with a `#' character are ignored
--as comments. For example, `unix/bsd/Implies' contains:
-- # BSD has Internet-related things.
-- unix/inet
--
--and `unix/Implies' contains:
-- posix
--
--So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.
--
-- `sysdeps' has a "special" subdirectory called `generic'. It is
--always implicitly appended to the list of subdirectories, so you
--needn't put it in an `Implies' file, and you should not create any
--subdirectories under it intended to be new specific categories.
--`generic' serves two purposes. First, the makefiles do not bother to
--look for a system-dependent version of a file that's not in `generic'.
--This means that any system-dependent source file must have an analogue
--in `generic', even if the routines defined by that file are not
--implemented on other platforms. Second. the `generic' version of a
--system-dependent file is used if the makefiles do not find a version
--specific to the system you're compiling for.
--
-- If it is possible to implement the routines in a `generic' file in
--machine-independent C, using only other machine-independent functions in
--the C library, then you should do so. Otherwise, make them stubs. A
--"stub" function is a function which cannot be implemented on a
--particular machine or operating system. Stub functions always return an
--error, and set `errno' to `ENOSYS' (Function not implemented). *Note
--Error Reporting::. If you define a stub function, you must place the
--statement `stub_warning(FUNCTION)', where FUNCTION is the name of your
--function, after its definition; also, you must include the file
--`<stub-tag.h>' into your file. This causes the function to be listed
--in the installed `<gnu/stubs.h>', and makes GNU ld warn when the
--function is used.
--
-- Some rare functions are only useful on specific systems and aren't
--defined at all on others; these do not appear anywhere in the
--system-independent source code or makefiles (including the `generic'
--directory), only in the system-dependent `Makefile' in the specific
--system's subdirectory.
--
-- If you come across a file that is in one of the main source
--directories (`string', `stdio', etc.), and you want to write a machine-
--or operating system-dependent version of it, move the file into
--`sysdeps/generic' and write your new implementation in the appropriate
--system-specific subdirectory. Note that if a file is to be
--system-dependent, it *must not* appear in one of the main source
--directories.
--
-- There are a few special files that may exist in each subdirectory of
--`sysdeps':
--
--`Makefile'
-- A makefile for this machine or operating system, or class of
-- machine or operating system. This file is included by the library
-- makefile `Makerules', which is used by the top-level makefile and
-- the subdirectory makefiles. It can change the variables set in the
-- including makefile or add new rules. It can use GNU `make'
-- conditional directives based on the variable `subdir' (see above)
-- to select different sets of variables and rules for different
-- sections of the library. It can also set the `make' variable
-- `sysdep-routines', to specify extra modules to be included in the
-- library. You should use `sysdep-routines' rather than adding
-- modules to `routines' because the latter is used in determining
-- what to distribute for each subdirectory of the main source tree.
--
-- Each makefile in a subdirectory in the ordered list of
-- subdirectories to be searched is included in order. Since several
-- system-dependent makefiles may be included, each should append to
-- `sysdep-routines' rather than simply setting it:
--
-- sysdep-routines := $(sysdep-routines) foo bar
--
--`Subdirs'
-- This file contains the names of new whole subdirectories under the
-- top-level library source tree that should be included for this
-- system. These subdirectories are treated just like the
-- system-independent subdirectories in the library source tree, such
-- as `stdio' and `math'.
--
-- Use this when there are completely new sets of functions and header
-- files that should go into the library for the system this
-- subdirectory of `sysdeps' implements. For example,
-- `sysdeps/unix/inet/Subdirs' contains `inet'; the `inet' directory
-- contains various network-oriented operations which only make sense
-- to put in the library on systems that support the Internet.
--
--`Dist'
-- This file contains the names of files (relative to the
-- subdirectory of `sysdeps' in which it appears) which should be
-- included in the distribution. List any new files used by rules in
-- the `Makefile' in the same directory, or header files used by the
-- source files in that directory. You don't need to list files that
-- are implementations (either C or assembly source) of routines
-- whose names are given in the machine-independent makefiles in the
-- main source tree.
--
--`configure'
-- This file is a shell script fragment to be run at configuration
-- time. The top-level `configure' script uses the shell `.' command
-- to read the `configure' file in each system-dependent directory
-- chosen, in order. The `configure' files are often generated from
-- `configure.in' files using Autoconf.
--
-- A system-dependent `configure' script will usually add things to
-- the shell variables `DEFS' and `config_vars'; see the top-level
-- `configure' script for details. The script can check for
-- `--with-PACKAGE' options that were passed to the top-level
-- `configure'. For an option `--with-PACKAGE=VALUE' `configure'
-- sets the shell variable `with_PACKAGE' (with any dashes in PACKAGE
-- converted to underscores) to VALUE; if the option is just
-- `--with-PACKAGE' (no argument), then it sets `with_PACKAGE' to
-- `yes'.
--
--`configure.in'
-- This file is an Autoconf input fragment to be processed into the
-- file `configure' in this subdirectory. *Note Introduction:
-- (autoconf.info)Introduction, for a description of Autoconf. You
-- should write either `configure' or `configure.in', but not both.
-- The first line of `configure.in' should invoke the `m4' macro
-- `GLIBC_PROVIDES'. This macro does several `AC_PROVIDE' calls for
-- Autoconf macros which are used by the top-level `configure'
-- script; without this, those macros might be invoked again
-- unnecessarily by Autoconf.
--
-- That is the general system for how system-dependencies are isolated.
--
--* Menu:
--
--* Hierarchy Conventions:: The layout of the `sysdeps' hierarchy.
--* Porting to Unix:: Porting the library to an average
-- Unix-like system.
--
--
--File: libc.info, Node: Hierarchy Conventions, Next: Porting to Unix, Up: Porting
--
--Layout of the `sysdeps' Directory Hierarchy
---------------------------------------------
--
-- A GNU configuration name has three parts: the CPU type, the
--manufacturer's name, and the operating system. `configure' uses these
--to pick the list of system-dependent directories to look for. If the
--`--nfp' option is _not_ passed to `configure', the directory
--`MACHINE/fpu' is also used. The operating system often has a "base
--operating system"; for example, if the operating system is `Linux', the
--base operating system is `unix/sysv'. The algorithm used to pick the
--list of directories is simple: `configure' makes a list of the base
--operating system, manufacturer, CPU type, and operating system, in that
--order. It then concatenates all these together with slashes in
--between, to produce a directory name; for example, the configuration
--`i686-linux-gnu' results in `unix/sysv/linux/i386/i686'. `configure'
--then tries removing each element of the list in turn, so
--`unix/sysv/linux' and `unix/sysv' are also tried, among others. Since
--the precise version number of the operating system is often not
--important, and it would be very inconvenient, for example, to have
--identical `irix6.2' and `irix6.3' directories, `configure' tries
--successively less specific operating system names by removing trailing
--suffixes starting with a period.
--
-- As an example, here is the complete list of directories that would be
--tried for the configuration `i686-linux-gnu' (with the `crypt' and
--`linuxthreads' add-on):
--
-- sysdeps/i386/elf
-- crypt/sysdeps/unix
-- linuxthreads/sysdeps/unix/sysv/linux
-- linuxthreads/sysdeps/pthread
-- linuxthreads/sysdeps/unix/sysv
-- linuxthreads/sysdeps/unix
-- linuxthreads/sysdeps/i386/i686
-- linuxthreads/sysdeps/i386
-- linuxthreads/sysdeps/pthread/no-cmpxchg
-- sysdeps/unix/sysv/linux/i386
-- sysdeps/unix/sysv/linux
-- sysdeps/gnu
-- sysdeps/unix/common
-- sysdeps/unix/mman
-- sysdeps/unix/inet
-- sysdeps/unix/sysv/i386/i686
-- sysdeps/unix/sysv/i386
-- sysdeps/unix/sysv
-- sysdeps/unix/i386
-- sysdeps/unix
-- sysdeps/posix
-- sysdeps/i386/i686
-- sysdeps/i386/i486
-- sysdeps/libm-i387/i686
-- sysdeps/i386/fpu
-- sysdeps/libm-i387
-- sysdeps/i386
-- sysdeps/wordsize-32
-- sysdeps/ieee754
-- sysdeps/libm-ieee754
-- sysdeps/generic
--
-- Different machine architectures are conventionally subdirectories at
--the top level of the `sysdeps' directory tree. For example,
--`sysdeps/sparc' and `sysdeps/m68k'. These contain files specific to
--those machine architectures, but not specific to any particular
--operating system. There might be subdirectories for specializations of
--those architectures, such as `sysdeps/m68k/68020'. Code which is
--specific to the floating-point coprocessor used with a particular
--machine should go in `sysdeps/MACHINE/fpu'.
--
-- There are a few directories at the top level of the `sysdeps'
--hierarchy that are not for particular machine architectures.
--
--`generic'
-- As described above (*note Porting::), this is the subdirectory
-- that every configuration implicitly uses after all others.
--
--`ieee754'
-- This directory is for code using the IEEE 754 floating-point
-- format, where the C type `float' is IEEE 754 single-precision
-- format, and `double' is IEEE 754 double-precision format. Usually
-- this directory is referred to in the `Implies' file in a machine
-- architecture-specific directory, such as `m68k/Implies'.
--
--`libm-ieee754'
-- This directory contains an implementation of a mathematical library
-- usable on platforms which use IEEE 754 conformant floating-point
-- arithmetic.
--
--`libm-i387'
-- This is a special case. Ideally the code should be in
-- `sysdeps/i386/fpu' but for various reasons it is kept aside.
--
--`posix'
-- This directory contains implementations of things in the library in
-- terms of POSIX.1 functions. This includes some of the POSIX.1
-- functions themselves. Of course, POSIX.1 cannot be completely
-- implemented in terms of itself, so a configuration using just
-- `posix' cannot be complete.
--
--`unix'
-- This is the directory for Unix-like things. *Note Porting to
-- Unix::. `unix' implies `posix'. There are some special-purpose
-- subdirectories of `unix':
--
-- `unix/common'
-- This directory is for things common to both BSD and System V
-- release 4. Both `unix/bsd' and `unix/sysv/sysv4' imply
-- `unix/common'.
--
-- `unix/inet'
-- This directory is for `socket' and related functions on Unix
-- systems. `unix/inet/Subdirs' enables the `inet' top-level
-- subdirectory. `unix/common' implies `unix/inet'.
--
--`mach'
-- This is the directory for things based on the Mach microkernel
-- from CMU (including the GNU operating system). Other basic
-- operating systems (VMS, for example) would have their own
-- directories at the top level of the `sysdeps' hierarchy, parallel
-- to `unix' and `mach'.
--
--
--File: libc.info, Node: Porting to Unix, Prev: Hierarchy Conventions, Up: Porting
--
--Porting the GNU C Library to Unix Systems
-------------------------------------------
--
-- Most Unix systems are fundamentally very similar. There are
--variations between different machines, and variations in what
--facilities are provided by the kernel. But the interface to the
--operating system facilities is, for the most part, pretty uniform and
--simple.
--
-- The code for Unix systems is in the directory `unix', at the top
--level of the `sysdeps' hierarchy. This directory contains
--subdirectories (and subdirectory trees) for various Unix variants.
--
-- The functions which are system calls in most Unix systems are
--implemented in assembly code, which is generated automatically from
--specifications in files named `syscalls.list'. There are several such
--files, one in `sysdeps/unix' and others in its subdirectories. Some
--special system calls are implemented in files that are named with a
--suffix of `.S'; for example, `_exit.S'. Files ending in `.S' are run
--through the C preprocessor before being fed to the assembler.
--
-- These files all use a set of macros that should be defined in
--`sysdep.h'. The `sysdep.h' file in `sysdeps/unix' partially defines
--them; a `sysdep.h' file in another directory must finish defining them
--for the particular machine and operating system variant. See
--`sysdeps/unix/sysdep.h' and the machine-specific `sysdep.h'
--implementations to see what these macros are and what they should do.
--
-- The system-specific makefile for the `unix' directory
--(`sysdeps/unix/Makefile') gives rules to generate several files from
--the Unix system you are building the library on (which is assumed to be
--the target system you are building the library _for_). All the
--generated files are put in the directory where the object files are
--kept; they should not affect the source tree itself. The files
--generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
--(for the `stdio' section of the library).
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-55 glibc-2.3.2-200304020432/manual/libc.info-55
---- glibc-2.3.2/manual/libc.info-55 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-55 Thu Jan 1 01:00:00 1970
-@@ -1,827 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Contributors, Next: Free Manuals, Prev: Maintenance, Up: Top
--
--Contributors to the GNU C Library
--*********************************
--
-- The GNU C library was written originally by Roland McGrath, and is
--currently maintained by Ulrich Drepper. Some parts of the library were
--contributed or worked on by other people.
--
-- * The `getopt' function and related code was written by Richard
-- Stallman, David J. MacKenzie, and Roland McGrath.
--
-- * The merge sort function `qsort' was written by Michael J. Haertel.
--
-- * The quick sort function used as a fallback by `qsort' was written
-- by Douglas C. Schmidt.
--
-- * The memory allocation functions `malloc', `realloc' and `free' and
-- related code were written by Michael J. Haertel, Wolfram Gloger,
-- and Doug Lea.
--
-- * Fast implementations of many of the string functions (`memcpy',
-- `strlen', etc.) were written by Torbjo"rn Granlund.
--
-- * The `tar.h' header file was written by David J. MacKenzie.
--
-- * The port to the MIPS DECStation running Ultrix 4
-- (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
-- Lance Taylor.
--
-- * The DES encryption function `crypt' and related functions were
-- contributed by Michael Glad.
--
-- * The `ftw' and `nftw' functions were contributed by Ulrich Drepper.
--
-- * The startup code to support SunOS shared libraries was contributed
-- by Tom Quinn.
--
-- * The `mktime' function was contributed by Paul Eggert.
--
-- * The port to the Sequent Symmetry running Dynix version 3
-- (`i386-sequent-bsd') was contributed by Jason Merrill.
--
-- * The timezone support code is derived from the public-domain
-- timezone package by Arthur David Olson and his many contributors.
--
-- * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
-- contributed by Brendan Kehoe, using some code written by Roland
-- McGrath.
--
-- * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
-- contributed by Tom Quinn.
--
-- * The port of the Mach and Hurd code to the MIPS architecture
-- (`mips-ANYTHING-gnu') was contributed by Kazumoto Kojima.
--
-- * The floating-point printing function used by `printf' and friends
-- and the floating-point reading function used by `scanf', `strtod'
-- and friends were written by Ulrich Drepper. The multi-precision
-- integer functions used in those functions are taken from GNU MP,
-- which was contributed by Torbjo"rn Granlund.
--
-- * The internationalization support in the library, and the support
-- programs `locale' and `localedef', were written by Ulrich Drepper.
-- Ulrich Drepper adapted the support code for message catalogs
-- (`libintl.h', etc.) from the GNU `gettext' package, which he also
-- wrote. He also contributed the `catgets' support and the entire
-- suite of multi-byte and wide-character support functions
-- (`wctype.h', `wchar.h', etc.).
--
-- * The implementations of the `nsswitch.conf' mechanism and the files
-- and DNS backends for it were designed and written by Ulrich
-- Drepper and Roland McGrath, based on a backend interface defined
-- by Peter Eriksson.
--
-- * The port to Linux i386/ELF (`i386-ANYTHING-linux') was contributed
-- by Ulrich Drepper, based in large part on work done in Hongjiu
-- Lu's Linux version of the GNU C Library.
--
-- * The port to Linux/m68k (`m68k-ANYTHING-linux') was contributed by
-- Andreas Schwab.
--
-- * The ports to Linux/ARM (`arm-ANYTHING-linuxaout') and ARM
-- standalone (`arm-ANYTHING-none'), as well as parts of the IPv6
-- support code, were contributed by Philip Blundell.
--
-- * Richard Henderson contributed the ELF dynamic linking code and
-- other support for the Alpha processor.
--
-- * David Mosberger-Tang contributed the port to Linux/Alpha
-- (`alpha-ANYTHING-linux').
--
-- * The port to Linux on PowerPC (`powerpc-ANYTHING-linux') was
-- contributed by Geoffrey Keating.
--
-- * Miles Bader wrote the argp argument-parsing package, and the
-- argz/envz interfaces.
--
-- * Stephen R. van den Berg contributed a highly-optimized `strstr'
-- function.
--
-- * Ulrich Drepper contributed the `hsearch' and `drand48' families of
-- functions; reentrant `...`_r'' versions of the `random' family;
-- System V shared memory and IPC support code; and several
-- highly-optimized string functions for iX86 processors.
--
-- * The math functions are taken from `fdlibm-5.1' by Sun
-- Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
-- Ulrich Drepper, Andreas Schwab, and Roland McGrath.
--
-- * The `libio' library used to implement `stdio' functions on some
-- platforms was written by Per Bothner and modified by Ulrich
-- Drepper.
--
-- * Eric Youngdale and Ulrich Drepper implemented versioning of
-- objects on the symbol level.
--
-- * Thorsten Kukuk provided an implementation for NIS (YP) and NIS+,
-- securelevel 0, 1 and 2.
--
-- * Andreas Jaeger provided a test suite for the math library.
--
-- * Mark Kettenis implemented the utmpx interface and an utmp daemon.
--
-- * Ulrich Drepper added character conversion functions (`iconv').
--
-- * Thorsten Kukuk provided an implementation for a caching daemon for
-- NSS (nscd).
--
-- * Tim Waugh provided an implementation of the POSIX.2 wordexp
-- function family.
--
-- * Mark Kettenis provided a Hesiod NSS module.
--
-- * The Internet-related code (most of the `inet' subdirectory) and
-- several other miscellaneous functions and header files have been
-- included from 4.4 BSD with little or no modification. The copying
-- permission notice for this code can be found in the file `LICENSES'
-- in the source distribution.
--
-- * The random number generation functions `random', `srandom',
-- `setstate' and `initstate', which are also the basis for the
-- `rand' and `srand' functions, were written by Earl T. Cohen for
-- the University of California at Berkeley and are copyrighted by the
-- Regents of the University of California. They have undergone minor
-- changes to fit into the GNU C library and to fit the ISO C
-- standard, but the functional code is Berkeley's.
--
-- * The DNS resolver code is taken directly from BIND 4.9.5, which
-- includes copyrighted code from UC Berkeley and from Digital
-- Equipment Corporation. See the file `LICENSES' for the text of
-- the DEC license.
--
-- * The code to support Sun RPC is taken verbatim from Sun's
-- RPCSRC-4.0 distribution; see the file `LICENSES' for the text of
-- the license.
--
-- * Some of the support code for Mach is taken from Mach 3.0 by CMU;
-- the file if_ppp.h is also copyright by CMU, but under a different
-- license; see the file `LICENSES' for the text of the licenses.
--
-- * Many of the IA64 math functions are taken from a collection of
-- "Highly Optimized Mathematical Functions for Itanium" that Intel
-- makes available under a free license; see the file `LICENSES' for
-- details.
--
-- * The `getaddrinfo' and `getnameinfo' functions and supporting code
-- were written by Craig Metz; see the file `LICENSES' for details on
-- their licensing.
--
-- * Many of the IEEE 64-bit double precision math functions (in the
-- `sysdeps/ieee754/dbl-64' subdirectory) come from the IBM Accurate
-- Mathematical Library, contributed by IBM.
--
--
--
--File: libc.info, Node: Free Manuals, Next: Copying, Prev: Contributors, Up: Top
--
--Free Software Needs Free Documentation
--**************************************
--
-- The biggest deficiency in the free software community today is not in
--the software--it is the lack of good free documentation that we can
--include with the free software. Many of our most important programs do
--not come with free reference manuals and free introductory texts.
--Documentation is an essential part of any software package; when an
--important free software package does not come with a free manual and a
--free tutorial, that is a major gap. We have many such gaps today.
--
-- Consider Perl, for instance. The tutorial manuals that people
--normally use are non-free. How did this come about? Because the
--authors of those manuals published them with restrictive terms--no
--copying, no modification, source files not available--which exclude
--them from the free software world.
--
-- That wasn't the first time this sort of thing happened, and it was
--far from the last. Many times we have heard a GNU user eagerly
--describe a manual that he is writing, his intended contribution to the
--community, only to learn that he had ruined everything by signing a
--publication contract to make it non-free.
--
-- Free documentation, like free software, is a matter of freedom, not
--price. The problem with the non-free manual is not that publishers
--charge a price for printed copies--that in itself is fine. (The Free
--Software Foundation sells printed copies of manuals, too.) The problem
--is the restrictions on the use of the manual. Free manuals are
--available in source code form, and give you permission to copy and
--modify. Non-free manuals do not allow this.
--
-- The criteria of freedom for a free manual are roughly the same as for
--free software. Redistribution (including the normal kinds of
--commercial redistribution) must be permitted, so that the manual can
--accompany every copy of the program, both on-line and on paper.
--
-- Permission for modification of the technical content is crucial too.
--When people modify the software, adding or changing features, if they
--are conscientious they will change the manual too--so they can provide
--accurate and clear documentation for the modified program. A manual
--that leaves you no choice but to write a new manual to document a
--changed version of the program is not really available to our community.
--
-- Some kinds of limits on the way modification is handled are
--acceptable. For example, requirements to preserve the original
--author's copyright notice, the distribution terms, or the list of
--authors, are ok. It is also no problem to require modified versions to
--include notice that they were modified. Even entire sections that may
--not be deleted or changed are acceptable, as long as they deal with
--nontechnical topics (like this one). These kinds of restrictions are
--acceptable because they don't obstruct the community's normal use of
--the manual.
--
-- However, it must be possible to modify all the _technical_ content
--of the manual, and then distribute the result in all the usual media,
--through all the usual channels. Otherwise, the restrictions obstruct
--the use of the manual, it is not free, and we need another manual to
--replace it.
--
-- Please spread the word about this issue. Our community continues to
--lose manuals to proprietary publishing. If we spread the word that
--free software needs free reference manuals and free tutorials, perhaps
--the next person who wants to contribute by writing documentation will
--realize, before it is too late, that only free manuals contribute to
--the free software community.
--
-- If you are writing documentation, please insist on publishing it
--under the GNU Free Documentation License or another free documentation
--license. Remember that this decision requires your approval--you don't
--have to let the publisher decide. Some commercial publishers will use
--a free license if you insist, but they will not propose the option; it
--is up to you to raise the issue and say firmly that this is what you
--want. If the publisher you are dealing with refuses, please try other
--publishers. If you're not sure whether a proposed license is free,
--write to <licensing@gnu.org>.
--
-- You can encourage commercial publishers to sell more free, copylefted
--manuals and tutorials by buying them, and particularly by buying copies
--from the publishers that paid for their writing or for major
--improvements. Meanwhile, try to avoid buying non-free documentation at
--all. Check the distribution terms of a manual before you buy it, and
--insist that whoever seeks your business must respect your freedom.
--Check the history of the book, and try reward the publishers that have
--paid or pay the authors to work on it.
--
-- The Free Software Foundation maintains a list of free documentation
--published by other publishers, at
--<http://www.fsf.org/doc/other-free-books.html>.
--
--
--File: libc.info, Node: Copying, Next: Documentation License, Prev: Free Manuals, Up: Top
--
--GNU Lesser General Public License
--*********************************
--
-- Version 2.1, February 1999
-- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-- 59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA
--
-- Everyone is permitted to copy and distribute verbatim copies
-- of this license document, but changing it is not allowed.
--
-- [This is the first released version of the Lesser GPL. It also counts
-- as the successor of the GNU Library Public License, version 2, hence the
-- version number 2.1.]
--
--Preamble
----------
--
-- The licenses for most software are designed to take away your
--freedom to share and change it. By contrast, the GNU General Public
--Licenses are intended to guarantee your freedom to share and change
--free software--to make sure the software is free for all its users.
--
-- This license, the Lesser General Public License, applies to some
--specially designated software--typically libraries--of the Free
--Software Foundation and other authors who decide to use it. You can use
--it too, but we suggest you first think carefully about whether this
--license or the ordinary General Public License is the better strategy to
--use in any particular case, based on the explanations below.
--
-- When we speak of free software, we are referring to freedom of use,
--not price. Our General Public Licenses are designed to make sure that
--you have the freedom to distribute copies of free software (and charge
--for this service if you wish); that you receive source code or can get
--it if you want it; that you can change the software and use pieces of it
--in new free programs; and that you are informed that you can do these
--things.
--
-- To protect your rights, we need to make restrictions that forbid
--distributors to deny you these rights or to ask you to surrender these
--rights. These restrictions translate to certain responsibilities for
--you if you distribute copies of the library or if you modify it.
--
-- For example, if you distribute copies of the library, whether gratis
--or for a fee, you must give the recipients all the rights that we gave
--you. You must make sure that they, too, receive or can get the source
--code. If you link other code with the library, you must provide
--complete object files to the recipients, so that they can relink them
--with the library after making changes to the library and recompiling
--it. And you must show them these terms so they know their rights.
--
-- We protect your rights with a two-step method: (1) we copyright the
--library, and (2) we offer you this license, which gives you legal
--permission to copy, distribute and/or modify the library.
--
-- To protect each distributor, we want to make it very clear that
--there is no warranty for the free library. Also, if the library is
--modified by someone else and passed on, the recipients should know that
--what they have is not the original version, so that the original
--author's reputation will not be affected by problems that might be
--introduced by others.
--
-- Finally, software patents pose a constant threat to the existence of
--any free program. We wish to make sure that a company cannot
--effectively restrict the users of a free program by obtaining a
--restrictive license from a patent holder. Therefore, we insist that
--any patent license obtained for a version of the library must be
--consistent with the full freedom of use specified in this license.
--
-- Most GNU software, including some libraries, is covered by the
--ordinary GNU General Public License. This license, the GNU Lesser
--General Public License, applies to certain designated libraries, and is
--quite different from the ordinary General Public License. We use this
--license for certain libraries in order to permit linking those
--libraries into non-free programs.
--
-- When a program is linked with a library, whether statically or using
--a shared library, the combination of the two is legally speaking a
--combined work, a derivative of the original library. The ordinary
--General Public License therefore permits such linking only if the
--entire combination fits its criteria of freedom. The Lesser General
--Public License permits more lax criteria for linking other code with
--the library.
--
-- We call this license the "Lesser" General Public License because it
--does _Less_ to protect the user's freedom than the ordinary General
--Public License. It also provides other free software developers Less
--of an advantage over competing non-free programs. These disadvantages
--are the reason we use the ordinary General Public License for many
--libraries. However, the Lesser license provides advantages in certain
--special circumstances.
--
-- For example, on rare occasions, there may be a special need to
--encourage the widest possible use of a certain library, so that it
--becomes a de-facto standard. To achieve this, non-free programs must be
--allowed to use the library. A more frequent case is that a free
--library does the same job as widely used non-free libraries. In this
--case, there is little to gain by limiting the free library to free
--software only, so we use the Lesser General Public License.
--
-- In other cases, permission to use a particular library in non-free
--programs enables a greater number of people to use a large body of free
--software. For example, permission to use the GNU C Library in non-free
--programs enables many more people to use the whole GNU operating
--system, as well as its variant, the GNU/Linux operating system.
--
-- Although the Lesser General Public License is Less protective of the
--users' freedom, it does ensure that the user of a program that is
--linked with the Library has the freedom and the wherewithal to run that
--program using a modified version of the Library.
--
-- The precise terms and conditions for copying, distribution and
--modification follow. Pay close attention to the difference between a
--"work based on the library" and a "work that uses the library". The
--former contains code derived from the library, whereas the latter must
--be combined with the library in order to run.
--
-- GNU LESSER GENERAL PUBLIC LICENSE
-- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-- 0. This License Agreement applies to any software library or other
-- program which contains a notice placed by the copyright holder or
-- other authorized party saying it may be distributed under the
-- terms of this Lesser General Public License (also called "this
-- License"). Each licensee is addressed as "you".
--
-- A "library" means a collection of software functions and/or data
-- prepared so as to be conveniently linked with application programs
-- (which use some of those functions and data) to form executables.
--
-- The "Library", below, refers to any such software library or work
-- which has been distributed under these terms. A "work based on the
-- Library" means either the Library or any derivative work under
-- copyright law: that is to say, a work containing the Library or a
-- portion of it, either verbatim or with modifications and/or
-- translated straightforwardly into another language. (Hereinafter,
-- translation is included without limitation in the term
-- "modification".)
--
-- "Source code" for a work means the preferred form of the work for
-- making modifications to it. For a library, complete source code
-- means all the source code for all modules it contains, plus any
-- associated interface definition files, plus the scripts used to
-- control compilation and installation of the library.
--
-- Activities other than copying, distribution and modification are
-- not covered by this License; they are outside its scope. The act
-- of running a program using the Library is not restricted, and
-- output from such a program is covered only if its contents
-- constitute a work based on the Library (independent of the use of
-- the Library in a tool for writing it). Whether that is true
-- depends on what the Library does and what the program that uses
-- the Library does.
--
-- 1. You may copy and distribute verbatim copies of the Library's
-- complete source code as you receive it, in any medium, provided
-- that you conspicuously and appropriately publish on each copy an
-- appropriate copyright notice and disclaimer of warranty; keep
-- intact all the notices that refer to this License and to the
-- absence of any warranty; and distribute a copy of this License
-- along with the Library.
--
-- You may charge a fee for the physical act of transferring a copy,
-- and you may at your option offer warranty protection in exchange
-- for a fee.
--
-- 2. You may modify your copy or copies of the Library or any portion
-- of it, thus forming a work based on the Library, and copy and
-- distribute such modifications or work under the terms of Section 1
-- above, provided that you also meet all of these conditions:
--
-- a. The modified work must itself be a software library.
--
-- b. You must cause the files modified to carry prominent notices
-- stating that you changed the files and the date of any change.
--
-- c. You must cause the whole of the work to be licensed at no
-- charge to all third parties under the terms of this License.
--
-- d. If a facility in the modified Library refers to a function or
-- a table of data to be supplied by an application program that
-- uses the facility, other than as an argument passed when the
-- facility is invoked, then you must make a good faith effort
-- to ensure that, in the event an application does not supply
-- such function or table, the facility still operates, and
-- performs whatever part of its purpose remains meaningful.
--
-- (For example, a function in a library to compute square roots
-- has a purpose that is entirely well-defined independent of the
-- application. Therefore, Subsection 2d requires that any
-- application-supplied function or table used by this function
-- must be optional: if the application does not supply it, the
-- square root function must still compute square roots.)
--
-- These requirements apply to the modified work as a whole. If
-- identifiable sections of that work are not derived from the
-- Library, and can be reasonably considered independent and separate
-- works in themselves, then this License, and its terms, do not
-- apply to those sections when you distribute them as separate
-- works. But when you distribute the same sections as part of a
-- whole which is a work based on the Library, the distribution of
-- the whole must be on the terms of this License, whose permissions
-- for other licensees extend to the entire whole, and thus to each
-- and every part regardless of who wrote it.
--
-- Thus, it is not the intent of this section to claim rights or
-- contest your rights to work written entirely by you; rather, the
-- intent is to exercise the right to control the distribution of
-- derivative or collective works based on the Library.
--
-- In addition, mere aggregation of another work not based on the
-- Library with the Library (or with a work based on the Library) on
-- a volume of a storage or distribution medium does not bring the
-- other work under the scope of this License.
--
-- 3. You may opt to apply the terms of the ordinary GNU General Public
-- License instead of this License to a given copy of the Library.
-- To do this, you must alter all the notices that refer to this
-- License, so that they refer to the ordinary GNU General Public
-- License, version 2, instead of to this License. (If a newer
-- version than version 2 of the ordinary GNU General Public License
-- has appeared, then you can specify that version instead if you
-- wish.) Do not make any other change in these notices.
--
-- Once this change is made in a given copy, it is irreversible for
-- that copy, so the ordinary GNU General Public License applies to
-- all subsequent copies and derivative works made from that copy.
--
-- This option is useful when you wish to copy part of the code of
-- the Library into a program that is not a library.
--
-- 4. You may copy and distribute the Library (or a portion or
-- derivative of it, under Section 2) in object code or executable
-- form under the terms of Sections 1 and 2 above provided that you
-- accompany it with the complete corresponding machine-readable
-- source code, which must be distributed under the terms of Sections
-- 1 and 2 above on a medium customarily used for software
-- interchange.
--
-- If distribution of object code is made by offering access to copy
-- from a designated place, then offering equivalent access to copy
-- the source code from the same place satisfies the requirement to
-- distribute the source code, even though third parties are not
-- compelled to copy the source along with the object code.
--
-- 5. A program that contains no derivative of any portion of the
-- Library, but is designed to work with the Library by being
-- compiled or linked with it, is called a "work that uses the
-- Library". Such a work, in isolation, is not a derivative work of
-- the Library, and therefore falls outside the scope of this License.
--
-- However, linking a "work that uses the Library" with the Library
-- creates an executable that is a derivative of the Library (because
-- it contains portions of the Library), rather than a "work that
-- uses the library". The executable is therefore covered by this
-- License. Section 6 states terms for distribution of such
-- executables.
--
-- When a "work that uses the Library" uses material from a header
-- file that is part of the Library, the object code for the work may
-- be a derivative work of the Library even though the source code is
-- not. Whether this is true is especially significant if the work
-- can be linked without the Library, or if the work is itself a
-- library. The threshold for this to be true is not precisely
-- defined by law.
--
-- If such an object file uses only numerical parameters, data
-- structure layouts and accessors, and small macros and small inline
-- functions (ten lines or less in length), then the use of the object
-- file is unrestricted, regardless of whether it is legally a
-- derivative work. (Executables containing this object code plus
-- portions of the Library will still fall under Section 6.)
--
-- Otherwise, if the work is a derivative of the Library, you may
-- distribute the object code for the work under the terms of Section
-- 6. Any executables containing that work also fall under Section 6,
-- whether or not they are linked directly with the Library itself.
--
-- 6. As an exception to the Sections above, you may also combine or
-- link a "work that uses the Library" with the Library to produce a
-- work containing portions of the Library, and distribute that work
-- under terms of your choice, provided that the terms permit
-- modification of the work for the customer's own use and reverse
-- engineering for debugging such modifications.
--
-- You must give prominent notice with each copy of the work that the
-- Library is used in it and that the Library and its use are covered
-- by this License. You must supply a copy of this License. If the
-- work during execution displays copyright notices, you must include
-- the copyright notice for the Library among them, as well as a
-- reference directing the user to the copy of this License. Also,
-- you must do one of these things:
--
-- a. Accompany the work with the complete corresponding
-- machine-readable source code for the Library including
-- whatever changes were used in the work (which must be
-- distributed under Sections 1 and 2 above); and, if the work
-- is an executable linked with the Library, with the complete
-- machine-readable "work that uses the Library", as object code
-- and/or source code, so that the user can modify the Library
-- and then relink to produce a modified executable containing
-- the modified Library. (It is understood that the user who
-- changes the contents of definitions files in the Library will
-- not necessarily be able to recompile the application to use
-- the modified definitions.)
--
-- b. Use a suitable shared library mechanism for linking with the
-- Library. A suitable mechanism is one that (1) uses at run
-- time a copy of the library already present on the user's
-- computer system, rather than copying library functions into
-- the executable, and (2) will operate properly with a modified
-- version of the library, if the user installs one, as long as
-- the modified version is interface-compatible with the version
-- that the work was made with.
--
-- c. Accompany the work with a written offer, valid for at least
-- three years, to give the same user the materials specified in
-- Subsection 6a, above, for a charge no more than the cost of
-- performing this distribution.
--
-- d. If distribution of the work is made by offering access to copy
-- from a designated place, offer equivalent access to copy the
-- above specified materials from the same place.
--
-- e. Verify that the user has already received a copy of these
-- materials or that you have already sent this user a copy.
--
-- For an executable, the required form of the "work that uses the
-- Library" must include any data and utility programs needed for
-- reproducing the executable from it. However, as a special
-- exception, the materials to be distributed need not include
-- anything that is normally distributed (in either source or binary
-- form) with the major components (compiler, kernel, and so on) of
-- the operating system on which the executable runs, unless that
-- component itself accompanies the executable.
--
-- It may happen that this requirement contradicts the license
-- restrictions of other proprietary libraries that do not normally
-- accompany the operating system. Such a contradiction means you
-- cannot use both them and the Library together in an executable
-- that you distribute.
--
-- 7. You may place library facilities that are a work based on the
-- Library side-by-side in a single library together with other
-- library facilities not covered by this License, and distribute
-- such a combined library, provided that the separate distribution
-- of the work based on the Library and of the other library
-- facilities is otherwise permitted, and provided that you do these
-- two things:
--
-- a. Accompany the combined library with a copy of the same work
-- based on the Library, uncombined with any other library
-- facilities. This must be distributed under the terms of the
-- Sections above.
--
-- b. Give prominent notice with the combined library of the fact
-- that part of it is a work based on the Library, and explaining
-- where to find the accompanying uncombined form of the same
-- work.
--
-- 8. You may not copy, modify, sublicense, link with, or distribute the
-- Library except as expressly provided under this License. Any
-- attempt otherwise to copy, modify, sublicense, link with, or
-- distribute the Library is void, and will automatically terminate
-- your rights under this License. However, parties who have
-- received copies, or rights, from you under this License will not
-- have their licenses terminated so long as such parties remain in
-- full compliance.
--
-- 9. You are not required to accept this License, since you have not
-- signed it. However, nothing else grants you permission to modify
-- or distribute the Library or its derivative works. These actions
-- are prohibited by law if you do not accept this License.
-- Therefore, by modifying or distributing the Library (or any work
-- based on the Library), you indicate your acceptance of this
-- License to do so, and all its terms and conditions for copying,
-- distributing or modifying the Library or works based on it.
--
-- 10. Each time you redistribute the Library (or any work based on the
-- Library), the recipient automatically receives a license from the
-- original licensor to copy, distribute, link with or modify the
-- Library subject to these terms and conditions. You may not impose
-- any further restrictions on the recipients' exercise of the rights
-- granted herein. You are not responsible for enforcing compliance
-- by third parties with this License.
--
-- 11. If, as a consequence of a court judgment or allegation of patent
-- infringement or for any other reason (not limited to patent
-- issues), conditions are imposed on you (whether by court order,
-- agreement or otherwise) that contradict the conditions of this
-- License, they do not excuse you from the conditions of this
-- License. If you cannot distribute so as to satisfy simultaneously
-- your obligations under this License and any other pertinent
-- obligations, then as a consequence you may not distribute the
-- Library at all. For example, if a patent license would not permit
-- royalty-free redistribution of the Library by all those who
-- receive copies directly or indirectly through you, then the only
-- way you could satisfy both it and this License would be to refrain
-- entirely from distribution of the Library.
--
-- If any portion of this section is held invalid or unenforceable
-- under any particular circumstance, the balance of the section is
-- intended to apply, and the section as a whole is intended to apply
-- in other circumstances.
--
-- It is not the purpose of this section to induce you to infringe any
-- patents or other property right claims or to contest validity of
-- any such claims; this section has the sole purpose of protecting
-- the integrity of the free software distribution system which is
-- implemented by public license practices. Many people have made
-- generous contributions to the wide range of software distributed
-- through that system in reliance on consistent application of that
-- system; it is up to the author/donor to decide if he or she is
-- willing to distribute software through any other system and a
-- licensee cannot impose that choice.
--
-- This section is intended to make thoroughly clear what is believed
-- to be a consequence of the rest of this License.
--
-- 12. If the distribution and/or use of the Library is restricted in
-- certain countries either by patents or by copyrighted interfaces,
-- the original copyright holder who places the Library under this
-- License may add an explicit geographical distribution limitation
-- excluding those countries, so that distribution is permitted only
-- in or among countries not thus excluded. In such case, this
-- License incorporates the limitation as if written in the body of
-- this License.
--
-- 13. The Free Software Foundation may publish revised and/or new
-- versions of the Lesser General Public License from time to time.
-- Such new versions will be similar in spirit to the present version,
-- but may differ in detail to address new problems or concerns.
--
-- Each version is given a distinguishing version number. If the
-- Library specifies a version number of this License which applies
-- to it and "any later version", you have the option of following
-- the terms and conditions either of that version or of any later
-- version published by the Free Software Foundation. If the Library
-- does not specify a license version number, you may choose any
-- version ever published by the Free Software Foundation.
--
-- 14. If you wish to incorporate parts of the Library into other free
-- programs whose distribution conditions are incompatible with these,
-- write to the author to ask for permission. For software which is
-- copyrighted by the Free Software Foundation, write to the Free
-- Software Foundation; we sometimes make exceptions for this. Our
-- decision will be guided by the two goals of preserving the free
-- status of all derivatives of our free software and of promoting
-- the sharing and reuse of software generally.
--
-- NO WARRANTY
--
-- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-- WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
-- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-- HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT
-- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
-- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-- FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
-- QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE
-- LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
-- SERVICING, REPAIR OR CORRECTION.
--
-- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
-- MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
-- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
-- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
-- INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
-- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
-- OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY
-- OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
-- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
--
-- END OF TERMS AND CONDITIONS
--
--How to Apply These Terms to Your New Libraries
------------------------------------------------
--
-- If you develop a new library, and you want it to be of the greatest
--possible use to the public, we recommend making it free software that
--everyone can redistribute and change. You can do so by permitting
--redistribution under these terms (or, alternatively, under the terms of
--the ordinary General Public License).
--
-- To apply these terms, attach the following notices to the library.
--It is safest to attach them to the start of each source file to most
--effectively convey the exclusion of warranty; and each file should have
--at least the "copyright" line and a pointer to where the full notice is
--found.
--
-- ONE LINE TO GIVE THE LIBRARY'S NAME AND AN IDEA OF WHAT IT DOES.
-- Copyright (C) YEAR NAME OF AUTHOR
--
-- This 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 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 this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
-- USA.
--
-- Also add information on how to contact you by electronic and paper
--mail.
--
-- You should also get your employer (if you work as a programmer) or
--your school, if any, to sign a "copyright disclaimer" for the library,
--if necessary. Here is a sample; alter the names:
--
-- Yoyodyne, Inc., hereby disclaims all copyright interest in the library
-- `Frob' (a library for tweaking knobs) written by James Random Hacker.
--
-- SIGNATURE OF TY COON, 1 April 1990
-- Ty Coon, President of Vice
--
-- That's all there is to it!
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-56 glibc-2.3.2-200304020432/manual/libc.info-56
---- glibc-2.3.2/manual/libc.info-56 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-56 Thu Jan 1 01:00:00 1970
-@@ -1,419 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Documentation License, Next: Concept Index, Prev: Copying, Up: Top
--
--GNU Free Documentation License
--******************************
--
-- Version 1.1, March 2000
-- Copyright (C) 2000 Free Software Foundation, Inc.
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
--
-- Everyone is permitted to copy and distribute verbatim copies
-- of this license document, but changing it is not allowed.
--
-- 0. PREAMBLE
--
-- The purpose of this License is to make a manual, textbook, or other
-- written document "free" in the sense of freedom: to assure everyone
-- the effective freedom to copy and redistribute it, with or without
-- modifying it, either commercially or noncommercially. Secondarily,
-- this License preserves for the author and publisher a way to get
-- credit for their work, while not being considered responsible for
-- modifications made by others.
--
-- This License is a kind of "copyleft", which means that derivative
-- works of the document must themselves be free in the same sense.
-- It complements the GNU General Public License, which is a copyleft
-- license designed for free software.
--
-- We have designed this License in order to use it for manuals for
-- free software, because free software needs free documentation: a
-- free program should come with manuals providing the same freedoms
-- that the software does. But this License is not limited to
-- software manuals; it can be used for any textual work, regardless
-- of subject matter or whether it is published as a printed book.
-- We recommend this License principally for works whose purpose is
-- instruction or reference.
--
-- 1. APPLICABILITY AND DEFINITIONS
--
-- This License applies to any manual or other work that contains a
-- notice placed by the copyright holder saying it can be distributed
-- under the terms of this License. The "Document", below, refers to
-- any such manual or work. Any member of the public is a licensee,
-- and is addressed as "you".
--
-- A "Modified Version" of the Document means any work containing the
-- Document or a portion of it, either copied verbatim, or with
-- modifications and/or translated into another language.
--
-- A "Secondary Section" is a named appendix or a front-matter
-- section of the Document that deals exclusively with the
-- relationship of the publishers or authors of the Document to the
-- Document's overall subject (or to related matters) and contains
-- nothing that could fall directly within that overall subject.
-- (For example, if the Document is in part a textbook of
-- mathematics, a Secondary Section may not explain any mathematics.)
-- The relationship could be a matter of historical connection with
-- the subject or with related matters, or of legal, commercial,
-- philosophical, ethical or political position regarding them.
--
-- The "Invariant Sections" are certain Secondary Sections whose
-- titles are designated, as being those of Invariant Sections, in
-- the notice that says that the Document is released under this
-- License.
--
-- The "Cover Texts" are certain short passages of text that are
-- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-- that says that the Document is released under this License.
--
-- A "Transparent" copy of the Document means a machine-readable copy,
-- represented in a format whose specification is available to the
-- general public, whose contents can be viewed and edited directly
-- and straightforwardly with generic text editors or (for images
-- composed of pixels) generic paint programs or (for drawings) some
-- widely available drawing editor, and that is suitable for input to
-- text formatters or for automatic translation to a variety of
-- formats suitable for input to text formatters. A copy made in an
-- otherwise Transparent file format whose markup has been designed
-- to thwart or discourage subsequent modification by readers is not
-- Transparent. A copy that is not "Transparent" is called "Opaque".
--
-- Examples of suitable formats for Transparent copies include plain
-- ASCII without markup, Texinfo input format, LaTeX input format,
-- SGML or XML using a publicly available DTD, and
-- standard-conforming simple HTML designed for human modification.
-- Opaque formats include PostScript, PDF, proprietary formats that
-- can be read and edited only by proprietary word processors, SGML
-- or XML for which the DTD and/or processing tools are not generally
-- available, and the machine-generated HTML produced by some word
-- processors for output purposes only.
--
-- The "Title Page" means, for a printed book, the title page itself,
-- plus such following pages as are needed to hold, legibly, the
-- material this License requires to appear in the title page. For
-- works in formats which do not have any title page as such, "Title
-- Page" means the text near the most prominent appearance of the
-- work's title, preceding the beginning of the body of the text.
--
-- 2. VERBATIM COPYING
--
-- You may copy and distribute the Document in any medium, either
-- commercially or noncommercially, provided that this License, the
-- copyright notices, and the license notice saying this License
-- applies to the Document are reproduced in all copies, and that you
-- add no other conditions whatsoever to those of this License. You
-- may not use technical measures to obstruct or control the reading
-- or further copying of the copies you make or distribute. However,
-- you may accept compensation in exchange for copies. If you
-- distribute a large enough number of copies you must also follow
-- the conditions in section 3.
--
-- You may also lend copies, under the same conditions stated above,
-- and you may publicly display copies.
--
-- 3. COPYING IN QUANTITY
--
-- If you publish printed copies of the Document numbering more than
-- 100, and the Document's license notice requires Cover Texts, you
-- must enclose the copies in covers that carry, clearly and legibly,
-- all these Cover Texts: Front-Cover Texts on the front cover, and
-- Back-Cover Texts on the back cover. Both covers must also clearly
-- and legibly identify you as the publisher of these copies. The
-- front cover must present the full title with all words of the
-- title equally prominent and visible. You may add other material
-- on the covers in addition. Copying with changes limited to the
-- covers, as long as they preserve the title of the Document and
-- satisfy these conditions, can be treated as verbatim copying in
-- other respects.
--
-- If the required texts for either cover are too voluminous to fit
-- legibly, you should put the first ones listed (as many as fit
-- reasonably) on the actual cover, and continue the rest onto
-- adjacent pages.
--
-- If you publish or distribute Opaque copies of the Document
-- numbering more than 100, you must either include a
-- machine-readable Transparent copy along with each Opaque copy, or
-- state in or with each Opaque copy a publicly-accessible
-- computer-network location containing a complete Transparent copy
-- of the Document, free of added material, which the general
-- network-using public has access to download anonymously at no
-- charge using public-standard network protocols. If you use the
-- latter option, you must take reasonably prudent steps, when you
-- begin distribution of Opaque copies in quantity, to ensure that
-- this Transparent copy will remain thus accessible at the stated
-- location until at least one year after the last time you
-- distribute an Opaque copy (directly or through your agents or
-- retailers) of that edition to the public.
--
-- It is requested, but not required, that you contact the authors of
-- the Document well before redistributing any large number of
-- copies, to give them a chance to provide you with an updated
-- version of the Document.
--
-- 4. MODIFICATIONS
--
-- You may copy and distribute a Modified Version of the Document
-- under the conditions of sections 2 and 3 above, provided that you
-- release the Modified Version under precisely this License, with
-- the Modified Version filling the role of the Document, thus
-- licensing distribution and modification of the Modified Version to
-- whoever possesses a copy of it. In addition, you must do these
-- things in the Modified Version:
--
-- A. Use in the Title Page (and on the covers, if any) a title
-- distinct from that of the Document, and from those of
-- previous versions (which should, if there were any, be listed
-- in the History section of the Document). You may use the
-- same title as a previous version if the original publisher of
-- that version gives permission.
--
-- B. List on the Title Page, as authors, one or more persons or
-- entities responsible for authorship of the modifications in
-- the Modified Version, together with at least five of the
-- principal authors of the Document (all of its principal
-- authors, if it has less than five).
--
-- C. State on the Title page the name of the publisher of the
-- Modified Version, as the publisher.
--
-- D. Preserve all the copyright notices of the Document.
--
-- E. Add an appropriate copyright notice for your modifications
-- adjacent to the other copyright notices.
--
-- F. Include, immediately after the copyright notices, a license
-- notice giving the public permission to use the Modified
-- Version under the terms of this License, in the form shown in
-- the Addendum below.
--
-- G. Preserve in that license notice the full lists of Invariant
-- Sections and required Cover Texts given in the Document's
-- license notice.
--
-- H. Include an unaltered copy of this License.
--
-- I. Preserve the section entitled "History", and its title, and
-- add to it an item stating at least the title, year, new
-- authors, and publisher of the Modified Version as given on
-- the Title Page. If there is no section entitled "History" in
-- the Document, create one stating the title, year, authors,
-- and publisher of the Document as given on its Title Page,
-- then add an item describing the Modified Version as stated in
-- the previous sentence.
--
-- J. Preserve the network location, if any, given in the Document
-- for public access to a Transparent copy of the Document, and
-- likewise the network locations given in the Document for
-- previous versions it was based on. These may be placed in
-- the "History" section. You may omit a network location for a
-- work that was published at least four years before the
-- Document itself, or if the original publisher of the version
-- it refers to gives permission.
--
-- K. In any section entitled "Acknowledgments" or "Dedications",
-- preserve the section's title, and preserve in the section all
-- the substance and tone of each of the contributor
-- acknowledgments and/or dedications given therein.
--
-- L. Preserve all the Invariant Sections of the Document,
-- unaltered in their text and in their titles. Section numbers
-- or the equivalent are not considered part of the section
-- titles.
--
-- M. Delete any section entitled "Endorsements". Such a section
-- may not be included in the Modified Version.
--
-- N. Do not retitle any existing section as "Endorsements" or to
-- conflict in title with any Invariant Section.
--
-- If the Modified Version includes new front-matter sections or
-- appendices that qualify as Secondary Sections and contain no
-- material copied from the Document, you may at your option
-- designate some or all of these sections as invariant. To do this,
-- add their titles to the list of Invariant Sections in the Modified
-- Version's license notice. These titles must be distinct from any
-- other section titles.
--
-- You may add a section entitled "Endorsements", provided it contains
-- nothing but endorsements of your Modified Version by various
-- parties--for example, statements of peer review or that the text
-- has been approved by an organization as the authoritative
-- definition of a standard.
--
-- You may add a passage of up to five words as a Front-Cover Text,
-- and a passage of up to 25 words as a Back-Cover Text, to the end
-- of the list of Cover Texts in the Modified Version. Only one
-- passage of Front-Cover Text and one of Back-Cover Text may be
-- added by (or through arrangements made by) any one entity. If the
-- Document already includes a cover text for the same cover,
-- previously added by you or by arrangement made by the same entity
-- you are acting on behalf of, you may not add another; but you may
-- replace the old one, on explicit permission from the previous
-- publisher that added the old one.
--
-- The author(s) and publisher(s) of the Document do not by this
-- License give permission to use their names for publicity for or to
-- assert or imply endorsement of any Modified Version.
--
-- 5. COMBINING DOCUMENTS
--
-- You may combine the Document with other documents released under
-- this License, under the terms defined in section 4 above for
-- modified versions, provided that you include in the combination
-- all of the Invariant Sections of all of the original documents,
-- unmodified, and list them all as Invariant Sections of your
-- combined work in its license notice.
--
-- The combined work need only contain one copy of this License, and
-- multiple identical Invariant Sections may be replaced with a single
-- copy. If there are multiple Invariant Sections with the same name
-- but different contents, make the title of each such section unique
-- by adding at the end of it, in parentheses, the name of the
-- original author or publisher of that section if known, or else a
-- unique number. Make the same adjustment to the section titles in
-- the list of Invariant Sections in the license notice of the
-- combined work.
--
-- In the combination, you must combine any sections entitled
-- "History" in the various original documents, forming one section
-- entitled "History"; likewise combine any sections entitled
-- "Acknowledgments", and any sections entitled "Dedications". You
-- must delete all sections entitled "Endorsements."
--
-- 6. COLLECTIONS OF DOCUMENTS
--
-- You may make a collection consisting of the Document and other
-- documents released under this License, and replace the individual
-- copies of this License in the various documents with a single copy
-- that is included in the collection, provided that you follow the
-- rules of this License for verbatim copying of each of the
-- documents in all other respects.
--
-- You may extract a single document from such a collection, and
-- distribute it individually under this License, provided you insert
-- a copy of this License into the extracted document, and follow
-- this License in all other respects regarding verbatim copying of
-- that document.
--
-- 7. AGGREGATION WITH INDEPENDENT WORKS
--
-- A compilation of the Document or its derivatives with other
-- separate and independent documents or works, in or on a volume of
-- a storage or distribution medium, does not as a whole count as a
-- Modified Version of the Document, provided no compilation
-- copyright is claimed for the compilation. Such a compilation is
-- called an "aggregate", and this License does not apply to the
-- other self-contained works thus compiled with the Document, on
-- account of their being thus compiled, if they are not themselves
-- derivative works of the Document.
--
-- If the Cover Text requirement of section 3 is applicable to these
-- copies of the Document, then if the Document is less than one
-- quarter of the entire aggregate, the Document's Cover Texts may be
-- placed on covers that surround only the Document within the
-- aggregate. Otherwise they must appear on covers around the whole
-- aggregate.
--
-- 8. TRANSLATION
--
-- Translation is considered a kind of modification, so you may
-- distribute translations of the Document under the terms of section
-- 4. Replacing Invariant Sections with translations requires special
-- permission from their copyright holders, but you may include
-- translations of some or all Invariant Sections in addition to the
-- original versions of these Invariant Sections. You may include a
-- translation of this License provided that you also include the
-- original English version of this License. In case of a
-- disagreement between the translation and the original English
-- version of this License, the original English version will prevail.
--
-- 9. TERMINATION
--
-- You may not copy, modify, sublicense, or distribute the Document
-- except as expressly provided for under this License. Any other
-- attempt to copy, modify, sublicense or distribute the Document is
-- void, and will automatically terminate your rights under this
-- License. However, parties who have received copies, or rights,
-- from you under this License will not have their licenses
-- terminated so long as such parties remain in full compliance.
--
-- 10. FUTURE REVISIONS OF THIS LICENSE
--
-- The Free Software Foundation may publish new, revised versions of
-- the GNU Free Documentation License from time to time. Such new
-- versions will be similar in spirit to the present version, but may
-- differ in detail to address new problems or concerns. See
-- `http://www.gnu.org/copyleft/'.
--
-- Each version of the License is given a distinguishing version
-- number. If the Document specifies that a particular numbered
-- version of this License "or any later version" applies to it, you
-- have the option of following the terms and conditions either of
-- that specified version or of any later version that has been
-- published (not as a draft) by the Free Software Foundation. If
-- the Document does not specify a version number of this License,
-- you may choose any version ever published (not as a draft) by the
-- Free Software Foundation.
--
--ADDENDUM: How to use this License for your documents
------------------------------------------------------
--
-- To use this License in a document you have written, include a copy of
--the License in the document and put the following copyright and license
--notices just after the title page:
--
-- Copyright (C) YEAR YOUR NAME.
-- Permission is granted to copy, distribute and/or modify this document
-- under the terms of the GNU Free Documentation License, Version 1.1
-- or any later version published by the Free Software Foundation;
-- with the Invariant Sections being LIST THEIR TITLES, with the
-- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
-- A copy of the license is included in the section entitled ``GNU
-- Free Documentation License''.
--
-- If you have no Invariant Sections, write "with no Invariant Sections"
--instead of saying which ones are invariant. If you have no Front-Cover
--Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
--LIST"; likewise for Back-Cover Texts.
--
-- If your document contains nontrivial examples of program code, we
--recommend releasing these examples in parallel under your choice of
--free software license, such as the GNU General Public License, to
--permit their use in free software.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-57 glibc-2.3.2-200304020432/manual/libc.info-57
---- glibc-2.3.2/manual/libc.info-57 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-57 Thu Jan 1 01:00:00 1970
-@@ -1,1087 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Concept Index, Next: Type Index, Prev: Documentation License, Up: Top
--
--Concept Index
--*************
--
--* Menu:
--
--* /etc/hostname: Host Identification.
--* /etc/nsswitch.conf: NSS Configuration File.
--* 4.N BSD Unix: Berkeley Unix.
--* __va_copy: Copying and Concatenation.
--* _POSIX_OPTION_ORDER environment variable.: Standard Environment.
--* _POSIX_SAVED_IDS: How Change Persona.
--* abort signal: Program Error Signals.
--* aborting a program: Aborting a Program.
--* absolute file name: File Name Resolution.
--* absolute priority: Absolute Priority.
--* absolute value functions: Absolute Value.
--* accepting connections: Accepting Connections.
--* access permission for a file: Access Permission.
--* access, testing for: Testing File Access.
--* accessing directories: Accessing Directories.
--* address of socket: Socket Addresses.
--* address space <1>: Program Basics.
--* address space: Memory Subsystem.
--* alarm signal: Alarm Signals.
--* alarms, setting: Setting an Alarm.
--* alignment (in obstacks): Obstacks Data Alignment.
--* alignment (with malloc): Aligned Memory Blocks.
--* alloca disadvantages: Disadvantages of Alloca.
--* alloca function: Variable Size Automatic.
--* allocating pseudo-terminals: Allocation.
--* allocation (obstacks): Allocation in an Obstack.
--* allocation debugging: Allocation Debugging.
--* allocation hooks, for malloc: Hooks for Malloc.
--* allocation of memory with malloc: Basic Allocation.
--* allocation size of string: Representation of Strings.
--* allocation statistics: Statistics of Malloc.
--* alphabetic character <1>: Classification of Wide Characters.
--* alphabetic character: Classification of Characters.
--* alphanumeric character <1>: Classification of Wide Characters.
--* alphanumeric character: Classification of Characters.
--* append-access files: File Position.
--* argc (program argument count): Program Arguments.
--* argp (program argument parser): Argp.
--* argp parser functions: Argp Parser Functions.
--* ARGP_HELP_FMT environment variable: Argp User Customization.
--* argument parsing with argp: Argp.
--* argument promotion: Calling Variadics.
--* argument vectors, null-character separated: Argz and Envz Vectors.
--* arguments (variadic functions): Receiving Arguments.
--* arguments, how many: How Many Arguments.
--* arguments, to program: Program Arguments.
--* argv (program argument vector): Program Arguments.
--* argz vectors (string vectors): Argz and Envz Vectors.
--* arithmetic expansion: Expansion Stages.
--* array comparison functions: String/Array Comparison.
--* array copy functions: Copying and Concatenation.
--* array search function: Array Search Function.
--* array sort function: Array Sort Function.
--* ASCII character: Classification of Characters.
--* assertions: Consistency Checking.
--* attributes of a file: Attribute Meanings.
--* automatic freeing: Variable Size Automatic.
--* automatic memory allocation: Memory Allocation and C.
--* automatic storage class: Memory Allocation and C.
--* automatic storage with variable size: Variable Size Automatic.
--* background job: Concepts of Job Control.
--* background job, launching: Foreground and Background.
--* backtrace: Backtraces.
--* backtrace_fd: Backtraces.
--* backtrace_symbols: Backtraces.
--* base (of floating point number): Floating Point Concepts.
--* baud rate: Line Speed.
--* Berkeley Unix: Berkeley Unix.
--* Bessel functions: Special Functions.
--* bias (of floating point number exponent): Floating Point Concepts.
--* big-endian: Byte Order.
--* binary I/O to a stream: Block Input/Output.
--* binary search function (for arrays): Array Search Function.
--* binary stream: Binary Streams.
--* binding a socket address: Socket Addresses.
--* blank character <1>: Classification of Wide Characters.
--* blank character: Classification of Characters.
--* block I/O to a stream: Block Input/Output.
--* blocked signals: Delivery of Signal.
--* blocked signals, checking for: Checking for Pending Signals.
--* blocking signals: Blocking Signals.
--* blocking signals, in a handler: Blocking for Handler.
--* bootstrapping, and services: Actions in the NSS configuration.
--* break condition, detecting: Input Modes.
--* break condition, generating: Line Control.
--* breaking a string into tokens: Finding Tokens in a String.
--* broken pipe signal: Operation Error Signals.
--* broken-down time <1>: Broken-down Time.
--* broken-down time: Calendar Time.
--* BSD compatibility library: Process Group Functions.
--* BSD compatibility library.: Feature Test Macros.
--* BSD Unix: Berkeley Unix.
--* buffering of streams: Stream Buffering.
--* buffering, controlling: Controlling Buffering.
--* bugs, reporting: Reporting Bugs.
--* bus error: Program Error Signals.
--* butterfly: Misc FP Arithmetic.
--* byte order conversion, for socket: Byte Order.
--* byte stream: Socket Concepts.
--* C++ streams: Streams and I18N.
--* calendar time: Time Basics.
--* calendar time and broken-down time: Broken-down Time.
--* calendar, Gregorian: Calendar Time.
--* calling variadic functions: Calling Variadics.
--* canonical input processing: Canonical or Not.
--* capacity limits, POSIX: General Limits.
--* carrier detect: Control Modes.
--* case conversion of characters: Case Conversion.
--* catching signals: Delivery of Signal.
--* categories for locales: Locale Categories.
--* change working directory: Working Directory.
--* changing the locale: Setting the Locale.
--* changing the size of a block (malloc): Changing Block Size.
--* changing the size of a block (obstacks): Growing Objects.
--* channels: Stream/Descriptor Precautions.
--* character case conversion: Case Conversion.
--* character predicates: Classification of Characters.
--* character testing: Classification of Characters.
--* checking for pending signals: Checking for Pending Signals.
--* child process <1>: Process Creation Concepts.
--* child process <2>: Processes.
--* child process: Processor Time.
--* child process signal: Job Control Signals.
--* chunks: Obstack Chunks.
--* classes, floating-point: Floating Point Classes.
--* classification of characters: Classification of Characters.
--* cleaning up a stream: Linked Channels.
--* clearing terminal input queue: Line Control.
--* client: Connections.
--* clock ticks: Processor And CPU Time.
--* clock, high accuracy: High Accuracy Clock.
--* close-on-exec (file descriptor flag): Descriptor Flags.
--* closing a file descriptor: Opening and Closing Files.
--* closing a socket: Closing a Socket.
--* closing a stream: Closing Streams.
--* collating strings: Collation Functions.
--* combining locales: Choosing Locale.
--* command argument syntax: Argument Syntax.
--* command arguments, parsing: Parsing Program Arguments.
--* command line arguments: Program Arguments.
--* command substitution: Expansion Stages.
--* communication style (of a socket): Socket Concepts.
--* comparing strings and arrays: String/Array Comparison.
--* Comparison Function: Comparison Functions.
--* compiling: Configuring and compiling.
--* complex exponentiation functions: Exponents and Logarithms.
--* complex logarithm functions: Exponents and Logarithms.
--* complex numbers: Complex Numbers.
--* complex trigonometric functions: Trig Functions.
--* concatenating strings: Copying and Concatenation.
--* configurations, all supported: Supported Configurations.
--* configuring: Configuring and compiling.
--* conjugate complex numbers: Operations on Complex.
--* connecting a socket: Connecting.
--* connection: Connections.
--* consistency checking: Consistency Checking.
--* consistency checking, of heap: Heap Consistency Checking.
--* constants <1>: Mathematical Constants.
--* constants: Memory Concepts.
--* continue signal: Job Control Signals.
--* control character <1>: Classification of Wide Characters.
--* control character: Classification of Characters.
--* control operations on files: Control Operations.
--* controlling process: Controlling Terminal.
--* controlling terminal: Concepts of Job Control.
--* controlling terminal, access to: Access to the Terminal.
--* controlling terminal, determining: Identifying the Terminal.
--* controlling terminal, setting: Open-time Flags.
--* conversion specifications (printf): Formatted Output Basics.
--* conversion specifications (scanf): Formatted Input Basics.
--* converting byte order: Byte Order.
--* converting case of characters: Case Conversion.
--* converting file descriptor to stream: Descriptors and Streams.
--* converting floats to integers: Rounding Functions.
--* converting group ID to group name: Lookup Group.
--* converting group name to group ID: Lookup Group.
--* converting host address to name: Host Names.
--* converting host name to address: Host Names.
--* converting network name to network number: Networks Database.
--* converting network number to network name: Networks Database.
--* converting port number to service name: Services Database.
--* converting service name to port number: Services Database.
--* converting string to collation order: Collation Functions.
--* converting strings to numbers: Parsing of Numbers.
--* converting user ID to user name: Lookup User.
--* converting user name to user ID: Lookup User.
--* cookie, for custom stream: Streams and Cookies.
--* copy-on-write page fault: Locked Memory Details.
--* copying strings and arrays: Copying and Concatenation.
--* cpu priority: Priority.
--* CPU time <1>: Processor Time.
--* CPU time <2>: Processor And CPU Time.
--* CPU time: Time Basics.
--* create on open (file status flag): Open-time Flags.
--* creating a directory: Creating Directories.
--* creating a FIFO special file: FIFO Special Files.
--* creating a pipe: Creating a Pipe.
--* creating a pipe to a subprocess: Pipe to a Subprocess.
--* creating a process: Process Creation Concepts.
--* creating a socket: Creating a Socket.
--* creating a socket pair: Socket Pairs.
--* creating special files: Making Special Files.
--* cube root function: Exponents and Logarithms.
--* currency symbols: Currency Symbol.
--* current limit: Limits on Resources.
--* current working directory: Working Directory.
--* custom streams: Custom Streams.
--* customizing printf: Customizing Printf.
--* data loss on sockets: Socket Concepts.
--* databases: Name Service Switch.
--* datagram socket: Datagrams.
--* datagrams, transmitting: Sending Datagrams.
--* date: Time Basics.
--* Daylight Saving Time: Broken-down Time.
--* decimal digit character: Classification of Characters.
--* decimal-point separator: General Numeric.
--* declaration (compared to definition): Header Files.
--* declaring variadic functions: Calling Variadics.
--* decompose complex numbers: Operations on Complex.
--* default action (for a signal): Delivery of Signal.
--* default action for a signal: Basic Signal Handling.
--* default argument promotions: Calling Variadics.
--* default value, and NSS: Notes on NSS Configuration File.
--* defining new printf conversions: Customizing Printf.
--* definition (compared to declaration): Header Files.
--* delayed suspend character: Signal Characters.
--* deleting a directory: Deleting Files.
--* deleting a file: Deleting Files.
--* delivery of signals: Delivery of Signal.
--* descriptors and streams: Stream/Descriptor Precautions.
--* digit character <1>: Classification of Wide Characters.
--* digit character: Classification of Characters.
--* directories, accessing: Accessing Directories.
--* directories, creating: Creating Directories.
--* directories, deleting: Deleting Files.
--* directory: Directories.
--* directory entry: Directories.
--* directory hierarchy: Working with Directory Trees.
--* directory stream: Accessing Directories.
--* disadvantages of alloca: Disadvantages of Alloca.
--* DISCARD character: Other Special.
--* division by zero: FP Exceptions.
--* DNS: Host Identification.
--* DNS server unavailable: Actions in the NSS configuration.
--* domain (of socket): Socket Concepts.
--* domain error: Math Error Reporting.
--* domain name: Host Identification.
--* Domain Name System: Host Identification.
--* dot notation, for Internet addresses: Abstract Host Addresses.
--* DSUSP character: Signal Characters.
--* duplicating file descriptors: Duplicating Descriptors.
--* dynamic memory allocation: Memory Allocation and C.
--* EBCDIC: Extended Char Intro.
--* echo of terminal input: Local Modes.
--* effective group ID: Process Persona.
--* effective user ID: Process Persona.
--* efficiency and malloc: Efficiency and Malloc.
--* efficiency and obstacks: Extra Fast Growing.
--* efficiency of chunks: Obstack Chunks.
--* EINTR, and restarting interrupted primitives: Interrupted Primitives.
--* elapsed time <1>: Elapsed Time.
--* elapsed time: Time Basics.
--* encryption: Trivial Encryption.
--* end of file, on a stream: EOF and Errors.
--* end-of-file, on a file descriptor: I/O Primitives.
--* environment: Environment Variables.
--* environment access: Environment Access.
--* environment representation: Environment Access.
--* environment variable: Environment Variables.
--* environment vectors, null-character separated: Argz and Envz Vectors.
--* envz vectors (environment vectors): Argz and Envz Vectors.
--* EOF character: Editing Characters.
--* EOL character: Editing Characters.
--* EOL2 character: Editing Characters.
--* epoch: Simple Calendar Time.
--* ERASE character: Editing Characters.
--* errno: System Calls.
--* error codes: Error Reporting.
--* error messages, in argp: Argp Helper Functions.
--* error reporting: Error Reporting.
--* errors, mathematical: Math Error Reporting.
--* establishing a handler: Signal Actions.
--* ethers: NSS Basics.
--* EUC: Extended Char Intro.
--* EUC-JP: glibc iconv Implementation.
--* exception <1>: Program Error Signals.
--* exception: FP Exceptions.
--* exclusive lock: File Locks.
--* exec functions: Executing a File.
--* execing a program: Memory Concepts.
--* executable: Memory Concepts.
--* executing a file: Executing a File.
--* exit status: Exit Status.
--* exit status value: Program Termination.
--* exiting a program: Memory Concepts.
--* expansion of shell words: Word Expansion.
--* exponent (of floating point number): Floating Point Concepts.
--* exponentiation functions: Exponents and Logarithms.
--* extending printf: Customizing Printf.
--* extracting file descriptor from stream: Descriptors and Streams.
--* fcntl function: Control Operations.
--* FDL, GNU Free Documentation License: Documentation License.
--* feature test macros: Feature Test Macros.
--* field splitting: Expansion Stages.
--* FIFO special file: Pipes and FIFOs.
--* file access permission: Access Permission.
--* file access time: File Times.
--* file attribute modification time: File Times.
--* file attributes: Attribute Meanings.
--* file creation mask: Setting Permissions.
--* file descriptor flags: Descriptor Flags.
--* file descriptor sets, for select: Waiting for I/O.
--* file descriptors, standard: Descriptors and Streams.
--* file locks: File Locks.
--* file modification time: File Times.
--* file name: File Names.
--* file name component: Directories.
--* file name errors: File Name Errors.
--* file name resolution: File Name Resolution.
--* file name translation flags: Open-time Flags.
--* file names, multiple: Hard Links.
--* file owner: File Owner.
--* file permission bits: Permission Bits.
--* file pointer: Streams.
--* file position: File Position.
--* file positioning on a file descriptor: File Position Primitive.
--* file positioning on a stream: File Positioning.
--* file status flags: File Status Flags.
--* files, accessing: Memory Concepts.
--* filtering i/o through subprocess: Pipe to a Subprocess.
--* flag character (printf): Output Conversion Syntax.
--* flag character (scanf): Input Conversion Syntax.
--* flags for sigaction: Flags for Sigaction.
--* flags, file name translation: Open-time Flags.
--* flags, open-time action: Open-time Flags.
--* floating point: Floating Point Numbers.
--* floating point, IEEE: IEEE Floating Point.
--* floating type measurements: Floating Type Macros.
--* floating-point classes: Floating Point Classes.
--* floating-point exception: Program Error Signals.
--* flow control, terminal: Line Control.
--* flushing a stream: Flushing Buffers.
--* flushing terminal output queue: Line Control.
--* foreground job: Concepts of Job Control.
--* foreground job, launching: Foreground and Background.
--* forking a process: Process Creation Concepts.
--* format string, for printf: Formatted Output.
--* format string, for scanf: Formatted Input.
--* formatted input from a stream: Formatted Input.
--* formatted messages: Formatted Messages.
--* formatted output to a stream: Formatted Output.
--* FP arithmetic: FP Bit Twiddling.
--* FQDN: Host Identification.
--* frame, real memory: Memory Concepts.
--* free documentation: Free Manuals.
--* freeing (obstacks): Freeing Obstack Objects.
--* freeing memory: Memory Concepts.
--* freeing memory allocated with malloc: Freeing after Malloc.
--* fully buffered stream: Buffering Concepts.
--* function prototypes (variadic): Variadic Prototypes.
--* gamma function: Special Functions.
--* gcvt_r: System V Number Conversion.
--* gencat: The gencat program.
--* generation of signals: Signal Generation.
--* generic i/o control operations: IOCTLs.
--* globbing: Globbing.
--* graphic character <1>: Classification of Wide Characters.
--* graphic character: Classification of Characters.
--* Gregorian calendar: Calendar Time.
--* group: NSS Basics.
--* group database: Group Database.
--* group ID: User and Group IDs.
--* group name: User and Group IDs.
--* group owner of a file: File Owner.
--* grouping of digits: General Numeric.
--* growing objects (in obstacks): Growing Objects.
--* handling multiple signals: Merged Signals.
--* hangup signal: Termination Signals.
--* hard limit: Limits on Resources.
--* hard link: Hard Links.
--* header files: Header Files.
--* heap consistency checking: Heap Consistency Checking.
--* heap, dynamic allocation from: Unconstrained Allocation.
--* heap, freeing memory from: Freeing after Malloc.
--* hexadecimal digit character <1>: Classification of Wide Characters.
--* hexadecimal digit character: Classification of Characters.
--* hidden bit (of floating point number mantissa): Floating Point Concepts.
--* hierarchy, directory: Working with Directory Trees.
--* high-priority data: Out-of-Band Data.
--* high-resolution time: Calendar Time.
--* holes in files: File Position Primitive.
--* home directory: Standard Environment.
--* HOME environment variable: Standard Environment.
--* hook functions (of custom streams): Hook Functions.
--* host address, Internet: Abstract Host Addresses.
--* host name: Host Identification.
--* hostname: Host Identification.
--* hosts: NSS Basics.
--* hosts database: Host Names.
--* how many arguments: How Many Arguments.
--* hyperbolic functions: Hyperbolic Functions.
--* identifying terminals: Is It a Terminal.
--* IEEE 754: Floating Point Numbers.
--* IEEE floating point: Floating Point Numbers.
--* IEEE floating point representation: IEEE Floating Point.
--* IEEE Std 1003.1: POSIX.
--* IEEE Std 1003.2: POSIX.
--* ignore action for a signal: Basic Signal Handling.
--* illegal instruction: Program Error Signals.
--* impossible events: Consistency Checking.
--* independent channels: Independent Channels.
--* inexact exception: FP Exceptions.
--* infinity: Infinity and NaN.
--* initial signal actions: Initial Signal Actions.
--* inode number: Attribute Meanings.
--* input available signal: Asynchronous I/O Signals.
--* input conversions, for scanf: Table of Input Conversions.
--* input from multiple files: Waiting for I/O.
--* installation tools: Tools for Compilation.
--* installing: Running make install.
--* integer: Integers.
--* integer division functions: Integer Division.
--* integer type range: Range of Type.
--* integer type width: Width of Type.
--* interactive signals, from terminal: Local Modes.
--* interactive stop signal: Job Control Signals.
--* internal representation: Extended Char Intro.
--* internationalization: Locales.
--* Internet host address: Abstract Host Addresses.
--* Internet namespace, for sockets: Internet Namespace.
--* interprocess communication, with FIFO: FIFO Special Files.
--* interprocess communication, with pipes: Creating a Pipe.
--* interprocess communication, with signals: Kill Example.
--* interprocess communication, with sockets: Sockets.
--* interrupt character: Signal Characters.
--* interrupt signal: Termination Signals.
--* interrupt-driven input: Interrupt Input.
--* interrupting primitives: Interrupted Primitives.
--* interval: Time Basics.
--* interval timer, setting: Setting an Alarm.
--* INTR character: Signal Characters.
--* invalid exception: FP Exceptions.
--* inverse complex hyperbolic functions: Hyperbolic Functions.
--* inverse complex trigonometric functions: Inverse Trig Functions.
--* inverse hyperbolic functions: Hyperbolic Functions.
--* inverse trigonometric functions: Inverse Trig Functions.
--* invocation of program: Program Arguments.
--* IOCTLs: IOCTLs.
--* ISO 10646: Extended Char Intro.
--* ISO 2022: Extended Char Intro.
--* ISO 6937: Extended Char Intro.
--* ISO C: ISO C.
--* ISO-2022-JP: glibc iconv Implementation.
--* ISO/IEC 9945-1: POSIX.
--* ISO/IEC 9945-2: POSIX.
--* job: Job Control.
--* job control: Job Control.
--* job control functions: Functions for Job Control.
--* job control is optional: Job Control is Optional.
--* job control signals: Job Control Signals.
--* job control, enabling: Initializing the Shell.
--* Kermit the frog: Search/Sort Example.
--* kernel call: System Calls.
--* kernel header files: Linux.
--* KILL character: Editing Characters.
--* kill signal: Termination Signals.
--* killing a process: Signaling Another Process.
--* Korn Shell: Wildcard Matching.
--* LANG environment variable <1>: Standard Environment.
--* LANG environment variable: The catgets Functions.
--* launching jobs: Launching Jobs.
--* LC_ALL environment variable <1>: Standard Environment.
--* LC_ALL environment variable: The catgets Functions.
--* LC_COLLATE environment variable: Standard Environment.
--* LC_CTYPE environment variable: Standard Environment.
--* LC_MESSAGES environment variable <1>: Standard Environment.
--* LC_MESSAGES environment variable: The catgets Functions.
--* LC_MONETARY environment variable: Standard Environment.
--* LC_NUMERIC environment variable: Standard Environment.
--* LC_TIME environment variable: Standard Environment.
--* leap second: Broken-down Time.
--* length of string: Representation of Strings.
--* level, for socket options: Socket Options.
--* LGPL, Lesser General Public License: Copying.
--* library: Introduction.
--* limit: Limits on Resources.
--* limits on resource usage: Limits on Resources.
--* limits, file name length: Limits for Files.
--* limits, floating types: Floating Type Macros.
--* limits, integer types: Range of Type.
--* limits, link count of files: Limits for Files.
--* limits, number of open files: General Limits.
--* limits, number of processes: General Limits.
--* limits, number of supplementary group IDs: General Limits.
--* limits, pipe buffer size: Limits for Files.
--* limits, POSIX: General Limits.
--* limits, program argument size: General Limits.
--* limits, terminal input queue: Limits for Files.
--* limits, time zone name length: General Limits.
--* line buffered stream: Buffering Concepts.
--* line speed: Line Speed.
--* lines (in a text file): Binary Streams.
--* link: Directories.
--* link, hard: Hard Links.
--* link, soft: Symbolic Links.
--* link, symbolic: Symbolic Links.
--* linked channels: Linked Channels.
--* listening (sockets): Listening.
--* literals: Memory Concepts.
--* little-endian: Byte Order.
--* LNEXT character: Other Special.
--* load average: Processor Resources.
--* local namespace, for sockets: Local Namespace.
--* local network address number: Abstract Host Addresses.
--* local time: Calendar Time.
--* locale categories: Locale Categories.
--* locale, changing: Setting the Locale.
--* locales: Locales.
--* locking pages: Locking Pages.
--* logarithm functions: Exponents and Logarithms.
--* login name: User and Group IDs.
--* login name, determining: Who Logged In.
--* LOGNAME environment variable: Standard Environment.
--* long jumps: Non-Local Exits.
--* long-named options: Argument Syntax.
--* longjmp: Advantages of Alloca.
--* loss of data on sockets: Socket Concepts.
--* lost resource signal: Operation Error Signals.
--* lower-case character <1>: Classification of Wide Characters.
--* lower-case character: Classification of Characters.
--* macros: Obstack Functions.
--* main function: Program Arguments.
--* malloc debugger: Allocation Debugging.
--* malloc function: Unconstrained Allocation.
--* mantissa (of floating point number): Floating Point Concepts.
--* matching failure, in scanf: Formatted Input Basics.
--* math errors: Errors in Math Functions.
--* mathematical constants: Mathematical Constants.
--* maximum: Misc FP Arithmetic.
--* maximum field width (scanf): Input Conversion Syntax.
--* maximum limit: Limits on Resources.
--* maximum possible integer: Integers.
--* measurements of floating types: Floating Type Macros.
--* memory allocation: Memory.
--* memory lock: Locking Pages.
--* memory mapped file: Memory Concepts.
--* memory mapped I/O: Memory Concepts.
--* memory page: Memory Subsystem.
--* merging of signals: Merged Signals.
--* MIN termios slot: Noncanonical Input.
--* minimum: Misc FP Arithmetic.
--* minimum field width (printf): Output Conversion Syntax.
--* minimum possible integer: Integers.
--* mixing descriptors and streams: Stream/Descriptor Precautions.
--* modem disconnect: Control Modes.
--* modem status lines: Control Modes.
--* monetary value formatting: The Lame Way to Locale Data.
--* multi-threaded application: Streams and Threads.
--* multibyte character: Extended Char Intro.
--* multibyte character string: Representation of Strings.
--* multibyte string: Representation of Strings.
--* multiple names for one file: Hard Links.
--* multiplexing input: Waiting for I/O.
--* multiply-add: Misc FP Arithmetic.
--* name of running program: Error Messages.
--* name of socket: Socket Addresses.
--* Name Service Switch: Name Service Switch.
--* name space: Reserved Names.
--* names of signals: Standard Signals.
--* namespace (of socket): Socket Concepts.
--* NaN <1>: FP Bit Twiddling.
--* NaN: Infinity and NaN.
--* Netgroup: Netgroup Data.
--* netgroup: NSS Basics.
--* network byte order: Byte Order.
--* network number: Abstract Host Addresses.
--* network protocol: Socket Concepts.
--* networks: NSS Basics.
--* networks database: Networks Database.
--* NIS: Host Identification.
--* NIS domain name: Host Identification.
--* nisplus, and booting: Actions in the NSS configuration.
--* nisplus, and completeness: Actions in the NSS configuration.
--* NLSPATH environment variable <1>: Standard Environment.
--* NLSPATH environment variable: The catgets Functions.
--* non-blocking open: Open-time Flags.
--* non-local exit, from signal handler: Longjmp in Handler.
--* non-local exits: Non-Local Exits.
--* noncanonical input processing: Canonical or Not.
--* normalization functions (floating-point): Normalization Functions.
--* normalized floating point number: Floating Point Concepts.
--* not a number: Infinity and NaN.
--* NSS: Name Service Switch.
--* nsswitch.conf: NSS Configuration File.
--* null character: Representation of Strings.
--* null pointer constant: Null Pointer Constant.
--* null wide character: Representation of Strings.
--* number of arguments passed: How Many Arguments.
--* number syntax, parsing: Parsing of Numbers.
--* numeric value formatting: The Lame Way to Locale Data.
--* obstack status: Status of an Obstack.
--* obstacks: Obstacks.
--* open-time action flags: Open-time Flags.
--* opening a file: I/O Concepts.
--* opening a file descriptor: Opening and Closing Files.
--* opening a pipe: Creating a Pipe.
--* opening a pseudo-terminal pair: Pseudo-Terminal Pairs.
--* opening a socket: Creating a Socket.
--* opening a socket pair: Socket Pairs.
--* opening a stream: Opening Streams.
--* Optimization: FP Function Optimizations.
--* optimizing NSS: Notes on NSS Configuration File.
--* option parsing with argp: Argp.
--* optional arguments: Variadic Functions.
--* optional POSIX features: System Options.
--* orientation, stream <1>: Streams and I18N.
--* orientation, stream: Opening Streams.
--* orphaned process group: Orphaned Process Groups.
--* out-of-band data: Out-of-Band Data.
--* output conversions, for printf: Table of Output Conversions.
--* output possible signal: Asynchronous I/O Signals.
--* overflow exception: FP Exceptions.
--* owner of a file: File Owner.
--* packet: Socket Concepts.
--* page boundary: Aligned Memory Blocks.
--* page fault: Memory Concepts.
--* page fault, copy-on-write: Locked Memory Details.
--* page frame: Memory Concepts.
--* page, memory: Memory Subsystem.
--* page, virtual memory: Memory Concepts.
--* paging <1>: Locking Pages.
--* paging: Memory Concepts.
--* parameter promotion: String/Array Conventions.
--* parent directory: File Name Resolution.
--* parent process <1>: Process Creation Concepts.
--* parent process: Processes.
--* parity checking: Input Modes.
--* parsing a template string: Parsing a Template String.
--* parsing numbers (in formatted input): Parsing of Numbers.
--* parsing program arguments: Parsing Program Arguments.
--* parsing tokens from a string: Finding Tokens in a String.
--* passwd: NSS Basics.
--* password database: User Database.
--* PATH environment variable: Standard Environment.
--* pause function: Waiting for a Signal.
--* peeking at input: Unreading.
--* pending signals: Delivery of Signal.
--* pending signals, checking for: Checking for Pending Signals.
--* period of time: Time Basics.
--* permission to access a file: Access Permission.
--* persona: Process Persona.
--* physical address: Memory Subsystem.
--* physical memory: Memory Subsystem.
--* pi (trigonometric constant): Trig Functions.
--* pipe: Pipes and FIFOs.
--* pipe signal: Operation Error Signals.
--* pipe to a subprocess: Pipe to a Subprocess.
--* port number: Ports.
--* positioning a file descriptor: File Position Primitive.
--* positioning a stream: File Positioning.
--* positive difference: Misc FP Arithmetic.
--* POSIX: POSIX.
--* POSIX capacity limits: General Limits.
--* POSIX optional features: System Options.
--* POSIX.1: POSIX.
--* POSIX.2: POSIX.
--* power functions: Exponents and Logarithms.
--* precision (of floating point number): Floating Point Concepts.
--* precision (printf): Output Conversion Syntax.
--* predicates on arrays: String/Array Comparison.
--* predicates on characters: Classification of Characters.
--* predicates on strings: String/Array Comparison.
--* preemptive scheduling: Absolute Priority.
--* primitives, interrupting: Interrupted Primitives.
--* printing character <1>: Classification of Wide Characters.
--* printing character: Classification of Characters.
--* priority of a process: Priority.
--* priority, absolute: Absolute Priority.
--* process <1>: Processes.
--* process: Program Basics.
--* process completion: Process Completion.
--* process group functions: Functions for Job Control.
--* process group ID: Launching Jobs.
--* process group leader: Launching Jobs.
--* process groups: Job Control.
--* process ID: Process Creation Concepts.
--* process image: Process Creation Concepts.
--* process lifetime: Process Creation Concepts.
--* process priority: Priority.
--* process signal mask: Process Signal Mask.
--* process termination: Program Termination.
--* processor time <1>: Processor Time.
--* processor time: Time Basics.
--* profiling alarm signal: Alarm Signals.
--* profiling timer: Setting an Alarm.
--* program: Program Basics.
--* program argument syntax: Argument Syntax.
--* program arguments: Program Arguments.
--* program arguments, parsing: Parsing Program Arguments.
--* program error signals: Program Error Signals.
--* program name: Error Messages.
--* program startup: Program Arguments.
--* program termination: Program Termination.
--* program termination signals: Termination Signals.
--* programming your own streams: Custom Streams.
--* project complex numbers: Operations on Complex.
--* protocol (of socket): Socket Concepts.
--* protocol family: Socket Concepts.
--* protocols: NSS Basics.
--* protocols database: Protocols Database.
--* prototypes for variadic functions: Variadic Prototypes.
--* pseudo-random numbers: Pseudo-Random Numbers.
--* pseudo-terminals: Pseudo-Terminals.
--* punctuation character <1>: Classification of Wide Characters.
--* punctuation character: Classification of Characters.
--* pushing input back: Unreading.
--* quick sort function (for arrays): Array Sort Function.
--* QUIT character: Signal Characters.
--* quit signal: Termination Signals.
--* quote removal: Expansion Stages.
--* race conditions, relating to job control: Launching Jobs.
--* race conditions, relating to signals: Signals in Handler.
--* radix (of floating point number): Floating Point Concepts.
--* raising signals: Generating Signals.
--* random numbers: Pseudo-Random Numbers.
--* random-access files: File Position.
--* range error: Math Error Reporting.
--* range of integer type: Range of Type.
--* read lock: File Locks.
--* reading from a directory: Accessing Directories.
--* reading from a file descriptor: I/O Primitives.
--* reading from a socket: Transferring Data.
--* reading from a stream, by blocks: Block Input/Output.
--* reading from a stream, by characters: Character Input.
--* reading from a stream, formatted: Formatted Input.
--* ready to run: Absolute Priority.
--* real group ID: Process Persona.
--* real user ID: Process Persona.
--* real-time timer: Setting an Alarm.
--* realtime CPU scheduling: Absolute Priority.
--* realtime processing: Why Lock Pages.
--* realtime scheduling: Realtime Scheduling.
--* receiving datagrams: Receiving Datagrams.
--* record locking: File Locks.
--* redirecting input and output: Duplicating Descriptors.
--* reentrant functions: Nonreentrancy.
--* reentrant NSS functions: NSS Module Names.
--* relative file name: File Name Resolution.
--* removal of quotes: Expansion Stages.
--* removing a file: Deleting Files.
--* removing macros that shadow functions: Macro Definitions.
--* renaming a file: Renaming Files.
--* reporting bugs: Reporting Bugs.
--* reporting errors: Error Reporting.
--* REPRINT character: Editing Characters.
--* reserved names: Reserved Names.
--* resource limits: Limits on Resources.
--* restarting interrupted primitives: Interrupted Primitives.
--* restrictions on signal handler functions: Nonreentrancy.
--* root directory: File Name Resolution.
--* Rot13: Trivial Encryption.
--* rpc: NSS Basics.
--* runnable process: Absolute Priority.
--* running a command: Running a Command.
--* saved set-group-ID: How Change Persona.
--* saved set-user-ID: How Change Persona.
--* scanning the group list: Scanning All Groups.
--* scanning the user list: Scanning All Users.
--* scatter-gather: Scatter-Gather.
--* scheduling, traditional: Traditional Scheduling.
--* search function (for arrays): Array Search Function.
--* search functions (for strings): Search Functions.
--* seed (for random numbers): Pseudo-Random Numbers.
--* seeking on a file descriptor: File Position Primitive.
--* seeking on a stream: File Positioning.
--* segmentation violation: Program Error Signals.
--* sending a datagram: Sending Datagrams.
--* sending signals: Generating Signals.
--* sequential-access files: File Position.
--* server: Connections.
--* services: NSS Basics.
--* services database: Services Database.
--* session <1>: Concepts of Job Control.
--* session: Job Control.
--* session leader: Concepts of Job Control.
--* setting an alarm: Setting an Alarm.
--* setuid programs: How Change Persona.
--* setuid programs and file access: Testing File Access.
--* severity class <1>: Adding Severity Classes.
--* severity class: Printing Formatted Messages.
--* sgettext: GUI program problems.
--* shadow: NSS Basics.
--* shadowing functions with macros: Macro Definitions.
--* shared lock: File Locks.
--* shared memory: Memory Subsystem.
--* shell: Concepts of Job Control.
--* shift state: Keeping the state.
--* Shift_JIS: Extended Char Intro.
--* shrinking objects: Growing Objects.
--* shutting down a socket: Closing a Socket.
--* sigaction flags: Flags for Sigaction.
--* sigaction function: Advanced Signal Handling.
--* SIGCHLD, handling of: Stopped and Terminated Jobs.
--* sign (of floating point number): Floating Point Concepts.
--* signal <1>: Signal Handling.
--* signal: FP Exceptions.
--* signal action: Delivery of Signal.
--* signal actions: Signal Actions.
--* signal flags: Flags for Sigaction.
--* signal function: Basic Signal Handling.
--* signal handler function: Defining Handlers.
--* signal mask: Process Signal Mask.
--* signal messages: Signal Messages.
--* signal names: Standard Signals.
--* signal number: Standard Signals.
--* signal set: Signal Sets.
--* signals, generating: Generating Signals.
--* signedness: Integers.
--* significand (of floating point number): Floating Point Concepts.
--* SIGTTIN, from background job: Access to the Terminal.
--* SIGTTOU, from background job: Access to the Terminal.
--* simple time: Calendar Time.
--* single-byte string: Representation of Strings.
--* size of string: Representation of Strings.
--* SJIS: Extended Char Intro.
--* socket: Sockets.
--* socket address (name) binding: Socket Addresses.
--* socket domain: Socket Concepts.
--* socket namespace: Socket Concepts.
--* socket option level: Socket Options.
--* socket options: Socket Options.
--* socket pair: Socket Pairs.
--* socket protocol: Socket Concepts.
--* socket shutdown: Closing a Socket.
--* socket, client actions: Connecting.
--* socket, closing: Closing a Socket.
--* socket, connecting: Connecting.
--* socket, creating: Creating a Socket.
--* socket, initiating a connection: Connecting.
--* sockets, accepting connections: Accepting Connections.
--* sockets, listening: Listening.
--* sockets, server actions: Listening.
--* soft limit: Limits on Resources.
--* soft link: Symbolic Links.
--* sort function (for arrays): Array Sort Function.
--* sparse files: File Position Primitive.
--* special files: Making Special Files.
--* special functions: Special Functions.
--* specified action (for a signal): Delivery of Signal.
--* speed of execution: Why Lock Pages.
--* square root function: Exponents and Logarithms.
--* stable sorting: Array Sort Function.
--* standard dot notation, for Internet addresses: Abstract Host Addresses.
--* standard environment variables: Standard Environment.
--* standard error file descriptor: Descriptors and Streams.
--* standard error stream: Standard Streams.
--* standard file descriptors: Descriptors and Streams.
--* standard input file descriptor: Descriptors and Streams.
--* standard input stream: Standard Streams.
--* standard output file descriptor: Descriptors and Streams.
--* standard output stream: Standard Streams.
--* standard streams: Standard Streams.
--* standards: Standards and Portability.
--* START character: Start/Stop Characters.
--* startup of program: Program Arguments.
--* stateful <1>: glibc iconv Implementation.
--* stateful <2>: iconv Examples.
--* stateful <3>: Generic Conversion Interface.
--* stateful <4>: Converting Strings.
--* stateful <5>: Converting a Character.
--* stateful: Keeping the state.
--* static memory allocation: Memory Allocation and C.
--* static storage class: Memory Allocation and C.
--* STATUS character: Other Special.
--* status codes: Error Reporting.
--* status of a file: Attribute Meanings.
--* status of obstack: Status of an Obstack.
--* sticky bit: Permission Bits.
--* STOP character: Start/Stop Characters.
--* stop signal: Job Control Signals.
--* stopped job: Concepts of Job Control.
--* stopped jobs, continuing: Continuing Stopped Jobs.
--* stopped jobs, detecting: Stopped and Terminated Jobs.
--* storage allocation: Memory.
--* stream (sockets): Socket Concepts.
--* stream orientation <1>: Streams and I18N.
--* stream orientation: Opening Streams.
--* stream, for I/O to a string: String Streams.
--* streams and descriptors: Stream/Descriptor Precautions.
--* streams, and file descriptors: Descriptors and Streams.
--* streams, C++: Streams and I18N.
--* streams, standard: Standard Streams.
--* string: Representation of Strings.
--* string allocation: Representation of Strings.
--* string collation functions: Collation Functions.
--* string comparison functions: String/Array Comparison.
--* string concatenation functions: Copying and Concatenation.
--* string copy functions: Copying and Concatenation.
--* string length: Representation of Strings.
--* string literal: Representation of Strings.
--* string search functions: Search Functions.
--* string stream: String Streams.
--* string vectors, null-character separated: Argz and Envz Vectors.
--* string, representation of: Representation of Strings.
--* style of communication (of a socket): Socket Concepts.
--* subshell: Initializing the Shell.
--* substitution of variables and commands: Expansion Stages.
--* successive signals: Merged Signals.
--* summer time: Broken-down Time.
--* SunOS: Berkeley Unix.
--* supplementary group IDs: Process Persona.
--* SUSP character: Signal Characters.
--* suspend character: Signal Characters.
--* SVID: SVID.
--* swap space: Memory Concepts.
--* symbolic link: Symbolic Links.
--* symbolic link, opening: Open-time Flags.
--* synchronizing <1>: Synchronizing AIO Operations.
--* synchronizing: Synchronizing I/O.
--* syntax error messages, in argp: Argp Helper Functions.
--* syntax, for program arguments: Argument Syntax.
--* syntax, for reading numbers: Parsing of Numbers.
--* sysconf <1>: Processor Resources.
--* sysconf: Query Memory Parameters.
--* system call: System Calls.
--* system call number: System Calls.
--* System V Unix: SVID.
--* TCP (Internet protocol): Protocols Database.
--* template, for printf: Formatted Output.
--* template, for scanf: Formatted Input.
--* TERM environment variable: Standard Environment.
--* terminal flow control: Line Control.
--* terminal identification: Is It a Terminal.
--* terminal input queue: I/O Queues.
--* terminal input queue, clearing: Line Control.
--* terminal input signal: Job Control Signals.
--* terminal line control functions: Line Control.
--* terminal line speed: Line Speed.
--* terminal mode data types: Mode Data Types.
--* terminal mode functions: Mode Functions.
--* terminal modes, BSD: BSD Terminal Modes.
--* terminal output queue: I/O Queues.
--* terminal output queue, flushing: Line Control.
--* terminal output signal: Job Control Signals.
--* terminated jobs, detecting: Stopped and Terminated Jobs.
--* termination signal: Termination Signals.
--* testing access permission: Testing File Access.
--* testing exit status of child process: Process Completion.
--* text stream: Binary Streams.
--* thrashing: Memory Subsystem.
--* thread of control: Program Basics.
--* threads: Streams and Threads.
--* ticks, clock: Processor And CPU Time.
--* tilde expansion: Expansion Stages.
--* time: Time Basics.
--* TIME termios slot: Noncanonical Input.
--* time zone: TZ Variable.
--* time zone database: TZ Variable.
--* time, elapsed: Time Basics.
--* time, high precision: High Accuracy Clock.
--* timer, profiling: Setting an Alarm.
--* timer, real-time: Setting an Alarm.
--* timer, virtual: Setting an Alarm.
--* timers, setting: Setting an Alarm.
--* timespec: Elapsed Time.
--* timeval: Elapsed Time.
--* timing error in signal handling: Remembering a Signal.
--* TMPDIR environment variable: Temporary Files.
--* tokenizing strings: Finding Tokens in a String.
--* tools, for installing library: Tools for Compilation.
--* transmitting datagrams: Sending Datagrams.
--* tree, directory: Working with Directory Trees.
--* triangulation: glibc iconv Implementation.
--* trigonometric functions: Trig Functions.
--* type measurements, floating: Floating Type Macros.
--* type measurements, integer: Width of Type.
--* type modifier character (printf): Output Conversion Syntax.
--* type modifier character (scanf): Input Conversion Syntax.
--* typeahead buffer: I/O Queues.
--* TZ environment variable: Standard Environment.
--* UCS-2: Extended Char Intro.
--* UCS-4: Extended Char Intro.
--* ulps: Errors in Math Functions.
--* umask: Setting Permissions.
--* unbuffered stream: Buffering Concepts.
--* unconstrained memory allocation: Unconstrained Allocation.
--* undefining macros that shadow functions: Macro Definitions.
--* underflow exception: FP Exceptions.
--* Unicode: Extended Char Intro.
--* Unix, Berkeley: Berkeley Unix.
--* Unix, System V: SVID.
--* unlinking a file: Deleting Files.
--* unordered comparison: FP Comparison Functions.
--* unreading characters: Unreading.
--* upgrading from libc5: Linux.
--* upper-case character <1>: Classification of Wide Characters.
--* upper-case character: Classification of Characters.
--* urgent data signal: Asynchronous I/O Signals.
--* urgent socket condition: Out-of-Band Data.
--* usage limits: Limits on Resources.
--* usage messages, in argp: Argp Helper Functions.
--* user accounting database: User Accounting Database.
--* user database: User Database.
--* user ID: User and Group IDs.
--* user ID, determining: Who Logged In.
--* user name: User and Group IDs.
--* user signals: Miscellaneous Signals.
--* usual file name errors: File Name Errors.
--* UTF-16: Extended Char Intro.
--* UTF-7: Extended Char Intro.
--* UTF-8: Extended Char Intro.
--* va_copy: Copying and Concatenation.
--* variable number of arguments: Variadic Functions.
--* variable substitution: Expansion Stages.
--* variable-sized arrays: GNU C Variable-Size Arrays.
--* variadic function argument access: Receiving Arguments.
--* variadic function prototypes: Variadic Prototypes.
--* variadic functions: Variadic Functions.
--* variadic functions, calling: Calling Variadics.
--* virtual time alarm signal: Alarm Signals.
--* virtual timer: Setting an Alarm.
--* volatile declarations: Nonreentrancy.
--* waiting for a signal: Waiting for a Signal.
--* waiting for completion of child process: Process Completion.
--* waiting for input or output: Waiting for I/O.
--* WERASE character: Editing Characters.
--* whitespace character <1>: Classification of Wide Characters.
--* whitespace character: Classification of Characters.
--* wide character: Extended Char Intro.
--* wide character string: Representation of Strings.
--* width of integer type: Width of Type.
--* wildcard expansion: Expansion Stages.
--* wint_t: String/Array Conventions.
--* word expansion: Word Expansion.
--* working directory: Working Directory.
--* write lock: File Locks.
--* writing to a file descriptor: I/O Primitives.
--* writing to a socket: Transferring Data.
--* writing to a stream, by blocks: Block Input/Output.
--* writing to a stream, by characters: Simple Output.
--* writing to a stream, formatted: Formatted Output.
--* YP: Host Identification.
--* YP domain name: Host Identification.
--* zero divide: FP Exceptions.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-58 glibc-2.3.2-200304020432/manual/libc.info-58
---- glibc-2.3.2/manual/libc.info-58 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-58 Thu Jan 1 01:00:00 1970
-@@ -1,168 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Type Index, Next: Function Index, Prev: Concept Index, Up: Top
--
--Type Index
--**********
--
--* Menu:
--
--* __ftw64_func_t: Working with Directory Trees.
--* __ftw_func_t: Working with Directory Trees.
--* __nftw64_func_t: Working with Directory Trees.
--* __nftw_func_t: Working with Directory Trees.
--* blkcnt64_t: Attribute Meanings.
--* blkcnt_t: Attribute Meanings.
--* cc_t: Mode Data Types.
--* clock_t: CPU Time.
--* comparison_fn_t: Comparison Functions.
--* cookie_close_function: Hook Functions.
--* cookie_io_functions_t: Streams and Cookies.
--* cookie_read_function: Hook Functions.
--* cookie_seek_function: Hook Functions.
--* cookie_write_function: Hook Functions.
--* dev_t: Attribute Meanings.
--* DIR: Opening a Directory.
--* div_t: Integer Division.
--* enum mcheck_status: Heap Consistency Checking.
--* fd_set: Waiting for I/O.
--* FILE: Streams.
--* fpos64_t: Portable Positioning.
--* fpos_t: Portable Positioning.
--* gid_t: Reading Persona.
--* glob64_t: Calling Glob.
--* glob_t: Calling Glob.
--* iconv_t: Generic Conversion Interface.
--* imaxdiv_t: Integer Division.
--* ino64_t: Attribute Meanings.
--* ino_t: Attribute Meanings.
--* jmp_buf: Non-Local Details.
--* ldiv_t: Integer Division.
--* lldiv_t: Integer Division.
--* mbstate_t: Keeping the state.
--* mode_t: Attribute Meanings.
--* nlink_t: Attribute Meanings.
--* off64_t: File Position Primitive.
--* off_t: File Position Primitive.
--* pid_t: Process Identification.
--* printf_arginfo_function: Defining the Output Handler.
--* printf_function: Defining the Output Handler.
--* ptrdiff_t: Important Data Types.
--* regex_t: POSIX Regexp Compilation.
--* regmatch_t: Regexp Subexpressions.
--* regoff_t: Regexp Subexpressions.
--* sig_atomic_t: Atomic Types.
--* sighandler_t: Basic Signal Handling.
--* sigjmp_buf: Non-Local Exits and Signals.
--* sigset_t: Signal Sets.
--* size_t: Important Data Types.
--* speed_t: Line Speed.
--* ssize_t: I/O Primitives.
--* stack_t: Signal Stack.
--* struct __gconv_step: glibc iconv Implementation.
--* struct __gconv_step_data: glibc iconv Implementation.
--* struct aiocb: Asynchronous I/O.
--* struct aiocb64: Asynchronous I/O.
--* struct aioinit: Configuration of AIO.
--* struct argp: Argp Parsers.
--* struct argp_child: Argp Children.
--* struct argp_option: Argp Option Vectors.
--* struct argp_state: Argp Parsing State.
--* struct dirent: Directory Entries.
--* struct ENTRY: Hash Search Function.
--* struct exit_status: Manipulating the Database.
--* struct flock: File Locks.
--* struct fstab: fstab.
--* struct FTW: Working with Directory Trees.
--* struct group: Group Data Structure.
--* struct hostent: Host Names.
--* struct if_nameindex: Interface Naming.
--* struct in6_addr: Host Address Data Type.
--* struct in_addr: Host Address Data Type.
--* struct iovec: Scatter-Gather.
--* struct itimerval: Setting an Alarm.
--* struct lconv: The Lame Way to Locale Data.
--* struct linger: Socket-Level Options.
--* struct mallinfo: Statistics of Malloc.
--* struct mntent: mtab.
--* struct netent: Networks Database.
--* struct ntptimeval: High Accuracy Clock.
--* struct obstack: Creating Obstacks.
--* struct option: Getopt Long Options.
--* struct passwd: User Data Structure.
--* struct printf_info: Conversion Specifier Options.
--* struct protoent: Protocols Database.
--* struct random_data: BSD Random.
--* struct rlimit: Limits on Resources.
--* struct rlimit64: Limits on Resources.
--* struct rusage: Resource Usage.
--* struct sched_param: Basic Scheduling Functions.
--* struct servent: Services Database.
--* struct sgttyb: BSD Terminal Modes.
--* struct sigaction: Advanced Signal Handling.
--* struct sigstack: Signal Stack.
--* struct sigvec: BSD Handler.
--* struct sockaddr: Address Formats.
--* struct sockaddr_in: Internet Address Formats.
--* struct sockaddr_in6: Internet Address Formats.
--* struct sockaddr_un: Local Namespace Details.
--* struct stat: Attribute Meanings.
--* struct stat64: Attribute Meanings.
--* struct termios: Mode Data Types.
--* struct timespec: Elapsed Time.
--* struct timeval: Elapsed Time.
--* struct timex: High Accuracy Clock.
--* struct timezone: High-Resolution Calendar.
--* struct tm: Broken-down Time.
--* struct tms: Processor Time.
--* struct utimbuf: File Times.
--* struct utmp: Manipulating the Database.
--* struct utmpx: XPG Functions.
--* struct utsname: Platform Type.
--* struct vtimes: Resource Usage.
--* tcflag_t: Mode Data Types.
--* time_t: Simple Calendar Time.
--* ucontext_t: System V contexts.
--* uid_t: Reading Persona.
--* union wait: BSD Wait Functions.
--* va_list: Argument Macros.
--* VISIT: Tree Search Function.
--* wchar_t: Extended Char Intro.
--* wctrans_t: Wide Character Case Conversion.
--* wctype_t: Classification of Wide Characters.
--* wint_t: Extended Char Intro.
--* wordexp_t: Calling Wordexp.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-59 glibc-2.3.2-200304020432/manual/libc.info-59
---- glibc-2.3.2/manual/libc.info-59 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-59 Thu Jan 1 01:00:00 1970
-@@ -1,1374 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Function Index, Next: Variable Index, Prev: Type Index, Up: Top
--
--Function and Macro Index
--************************
--
--* Menu:
--
--* __fbufsize: Controlling Buffering.
--* __flbf: Controlling Buffering.
--* __fpending: Controlling Buffering.
--* __fpurge: Flushing Buffers.
--* __freadable: Opening Streams.
--* __freading: Opening Streams.
--* __fsetlocking: Streams and Threads.
--* __fwritable: Opening Streams.
--* __fwriting: Opening Streams.
--* __va_copy: Argument Macros.
--* _Exit: Termination Internals.
--* _exit: Termination Internals.
--* _flushlbf: Flushing Buffers.
--* _tolower: Case Conversion.
--* _toupper: Case Conversion.
--* a64l: Encode Binary Data.
--* abort: Aborting a Program.
--* abs: Absolute Value.
--* accept: Accepting Connections.
--* access: Testing File Access.
--* acos: Inverse Trig Functions.
--* acosf: Inverse Trig Functions.
--* acosh: Hyperbolic Functions.
--* acoshf: Hyperbolic Functions.
--* acoshl: Hyperbolic Functions.
--* acosl: Inverse Trig Functions.
--* addmntent: mtab.
--* addseverity: Adding Severity Classes.
--* adjtime: High-Resolution Calendar.
--* adjtimex: High-Resolution Calendar.
--* aio_cancel: Cancel AIO Operations.
--* aio_cancel64: Cancel AIO Operations.
--* aio_error: Status of AIO Operations.
--* aio_error64: Status of AIO Operations.
--* aio_fsync: Synchronizing AIO Operations.
--* aio_fsync64: Synchronizing AIO Operations.
--* aio_init: Configuration of AIO.
--* aio_read: Asynchronous Reads/Writes.
--* aio_read64: Asynchronous Reads/Writes.
--* aio_return: Status of AIO Operations.
--* aio_return64: Status of AIO Operations.
--* aio_suspend: Synchronizing AIO Operations.
--* aio_suspend64: Synchronizing AIO Operations.
--* aio_write: Asynchronous Reads/Writes.
--* aio_write64: Asynchronous Reads/Writes.
--* alarm: Setting an Alarm.
--* alloca: Variable Size Automatic.
--* alphasort: Scanning Directory Content.
--* alphasort64: Scanning Directory Content.
--* argp_error: Argp Helper Functions.
--* argp_failure: Argp Helper Functions.
--* argp_help: Argp Help.
--* argp_parse: Argp.
--* argp_state_help: Argp Helper Functions.
--* argp_usage: Argp Helper Functions.
--* argz_add: Argz Functions.
--* argz_add_sep: Argz Functions.
--* argz_append: Argz Functions.
--* argz_count: Argz Functions.
--* argz_create: Argz Functions.
--* argz_create_sep: Argz Functions.
--* argz_delete: Argz Functions.
--* argz_extract: Argz Functions.
--* argz_insert: Argz Functions.
--* argz_next: Argz Functions.
--* argz_replace: Argz Functions.
--* argz_stringify: Argz Functions.
--* asctime: Formatting Calendar Time.
--* asctime_r: Formatting Calendar Time.
--* asin: Inverse Trig Functions.
--* asinf: Inverse Trig Functions.
--* asinh: Hyperbolic Functions.
--* asinhf: Hyperbolic Functions.
--* asinhl: Hyperbolic Functions.
--* asinl: Inverse Trig Functions.
--* asprintf: Dynamic Output.
--* assert: Consistency Checking.
--* assert_perror: Consistency Checking.
--* atan: Inverse Trig Functions.
--* atan2: Inverse Trig Functions.
--* atan2f: Inverse Trig Functions.
--* atan2l: Inverse Trig Functions.
--* atanf: Inverse Trig Functions.
--* atanh: Hyperbolic Functions.
--* atanhf: Hyperbolic Functions.
--* atanhl: Hyperbolic Functions.
--* atanl: Inverse Trig Functions.
--* atexit: Cleanups on Exit.
--* atof: Parsing of Floats.
--* atoi: Parsing of Integers.
--* atol: Parsing of Integers.
--* atoll: Parsing of Integers.
--* backtrace: Backtraces.
--* backtrace_symbols: Backtraces.
--* backtrace_symbols_fd: Backtraces.
--* basename: Finding Tokens in a String.
--* bcmp: String/Array Comparison.
--* bcopy: Copying and Concatenation.
--* bind: Setting Address.
--* bind_textdomain_codeset: Charset conversion in gettext.
--* bindtextdomain: Locating gettext catalog.
--* brk: Resizing the Data Segment.
--* bsearch: Array Search Function.
--* btowc: Converting a Character.
--* bzero: Copying and Concatenation.
--* cabs: Absolute Value.
--* cabsf: Absolute Value.
--* cabsl: Absolute Value.
--* cacos: Inverse Trig Functions.
--* cacosf: Inverse Trig Functions.
--* cacosh: Hyperbolic Functions.
--* cacoshf: Hyperbolic Functions.
--* cacoshl: Hyperbolic Functions.
--* cacosl: Inverse Trig Functions.
--* calloc: Allocating Cleared Space.
--* canonicalize_file_name: Symbolic Links.
--* carg: Operations on Complex.
--* cargf: Operations on Complex.
--* cargl: Operations on Complex.
--* casin: Inverse Trig Functions.
--* casinf: Inverse Trig Functions.
--* casinh: Hyperbolic Functions.
--* casinhf: Hyperbolic Functions.
--* casinhl: Hyperbolic Functions.
--* casinl: Inverse Trig Functions.
--* catan: Inverse Trig Functions.
--* catanf: Inverse Trig Functions.
--* catanh: Hyperbolic Functions.
--* catanhf: Hyperbolic Functions.
--* catanhl: Hyperbolic Functions.
--* catanl: Inverse Trig Functions.
--* catclose: The catgets Functions.
--* catgets: The catgets Functions.
--* catopen: The catgets Functions.
--* cbc_crypt: DES Encryption.
--* cbrt: Exponents and Logarithms.
--* cbrtf: Exponents and Logarithms.
--* cbrtl: Exponents and Logarithms.
--* ccos: Trig Functions.
--* ccosf: Trig Functions.
--* ccosh: Hyperbolic Functions.
--* ccoshf: Hyperbolic Functions.
--* ccoshl: Hyperbolic Functions.
--* ccosl: Trig Functions.
--* ceil: Rounding Functions.
--* ceilf: Rounding Functions.
--* ceill: Rounding Functions.
--* cexp: Exponents and Logarithms.
--* cexpf: Exponents and Logarithms.
--* cexpl: Exponents and Logarithms.
--* cfgetispeed: Line Speed.
--* cfgetospeed: Line Speed.
--* cfmakeraw: Noncanonical Input.
--* cfree: Freeing after Malloc.
--* cfsetispeed: Line Speed.
--* cfsetospeed: Line Speed.
--* cfsetspeed: Line Speed.
--* chdir: Working Directory.
--* chmod: Setting Permissions.
--* chown: File Owner.
--* cimag: Operations on Complex.
--* cimagf: Operations on Complex.
--* cimagl: Operations on Complex.
--* clearenv: Environment Access.
--* clearerr: Error Recovery.
--* clearerr_unlocked: Error Recovery.
--* clock: CPU Time.
--* clog: Exponents and Logarithms.
--* clog10: Exponents and Logarithms.
--* clog10f: Exponents and Logarithms.
--* clog10l: Exponents and Logarithms.
--* clogf: Exponents and Logarithms.
--* clogl: Exponents and Logarithms.
--* close: Opening and Closing Files.
--* closedir: Reading/Closing Directory.
--* closelog: closelog.
--* confstr: String Parameters.
--* conj: Operations on Complex.
--* conjf: Operations on Complex.
--* conjl: Operations on Complex.
--* connect: Connecting.
--* copysign: FP Bit Twiddling.
--* copysignf: FP Bit Twiddling.
--* copysignl: FP Bit Twiddling.
--* cos: Trig Functions.
--* cosf: Trig Functions.
--* cosh: Hyperbolic Functions.
--* coshf: Hyperbolic Functions.
--* coshl: Hyperbolic Functions.
--* cosl: Trig Functions.
--* cpow: Exponents and Logarithms.
--* cpowf: Exponents and Logarithms.
--* cpowl: Exponents and Logarithms.
--* cproj: Operations on Complex.
--* cprojf: Operations on Complex.
--* cprojl: Operations on Complex.
--* creal: Operations on Complex.
--* crealf: Operations on Complex.
--* creall: Operations on Complex.
--* creat: Opening and Closing Files.
--* creat64: Opening and Closing Files.
--* crypt: crypt.
--* crypt_r: crypt.
--* csin: Trig Functions.
--* csinf: Trig Functions.
--* csinh: Hyperbolic Functions.
--* csinhf: Hyperbolic Functions.
--* csinhl: Hyperbolic Functions.
--* csinl: Trig Functions.
--* csqrt: Exponents and Logarithms.
--* csqrtf: Exponents and Logarithms.
--* csqrtl: Exponents and Logarithms.
--* ctan: Trig Functions.
--* ctanf: Trig Functions.
--* ctanh: Hyperbolic Functions.
--* ctanhf: Hyperbolic Functions.
--* ctanhl: Hyperbolic Functions.
--* ctanl: Trig Functions.
--* ctermid: Identifying the Terminal.
--* ctime: Formatting Calendar Time.
--* ctime_r: Formatting Calendar Time.
--* cuserid: Who Logged In.
--* dcgettext: Translation with gettext.
--* dcngettext: Advanced gettext functions.
--* DES_FAILED: DES Encryption.
--* des_setparity: DES Encryption.
--* dgettext: Translation with gettext.
--* difftime: Elapsed Time.
--* dirfd: Opening a Directory.
--* dirname: Finding Tokens in a String.
--* div: Integer Division.
--* dngettext: Advanced gettext functions.
--* drand48: SVID Random.
--* drand48_r: SVID Random.
--* drem: Remainder Functions.
--* dremf: Remainder Functions.
--* dreml: Remainder Functions.
--* DTTOIF: Directory Entries.
--* dup: Duplicating Descriptors.
--* dup2: Duplicating Descriptors.
--* ecb_crypt: DES Encryption.
--* ecvt: System V Number Conversion.
--* ecvt_r: System V Number Conversion.
--* encrypt: DES Encryption.
--* encrypt_r: DES Encryption.
--* endfsent: fstab.
--* endgrent: Scanning All Groups.
--* endhostent: Host Names.
--* endmntent: mtab.
--* endnetent: Networks Database.
--* endnetgrent: Lookup Netgroup.
--* endprotoent: Protocols Database.
--* endpwent: Scanning All Users.
--* endservent: Services Database.
--* endutent: Manipulating the Database.
--* endutxent: XPG Functions.
--* envz_add: Envz Functions.
--* envz_entry: Envz Functions.
--* envz_get: Envz Functions.
--* envz_merge: Envz Functions.
--* envz_strip: Envz Functions.
--* erand48: SVID Random.
--* erand48_r: SVID Random.
--* erf: Special Functions.
--* erfc: Special Functions.
--* erfcf: Special Functions.
--* erfcl: Special Functions.
--* erff: Special Functions.
--* erfl: Special Functions.
--* err: Error Messages.
--* error: Error Messages.
--* error_at_line: Error Messages.
--* errx: Error Messages.
--* execl: Executing a File.
--* execle: Executing a File.
--* execlp: Executing a File.
--* execv: Executing a File.
--* execve: Executing a File.
--* execvp: Executing a File.
--* exit: Normal Termination.
--* exp: Exponents and Logarithms.
--* exp10: Exponents and Logarithms.
--* exp10f: Exponents and Logarithms.
--* exp10l: Exponents and Logarithms.
--* exp2: Exponents and Logarithms.
--* exp2f: Exponents and Logarithms.
--* exp2l: Exponents and Logarithms.
--* expf: Exponents and Logarithms.
--* expl: Exponents and Logarithms.
--* expm1: Exponents and Logarithms.
--* expm1f: Exponents and Logarithms.
--* expm1l: Exponents and Logarithms.
--* fabs: Absolute Value.
--* fabsf: Absolute Value.
--* fabsl: Absolute Value.
--* fchdir: Working Directory.
--* fchmod: Setting Permissions.
--* fchown: File Owner.
--* fclean: Cleaning Streams.
--* fclose: Closing Streams.
--* fcloseall: Closing Streams.
--* fcntl: Control Operations.
--* fcvt: System V Number Conversion.
--* fcvt_r: System V Number Conversion.
--* FD_CLR: Waiting for I/O.
--* FD_ISSET: Waiting for I/O.
--* FD_SET: Waiting for I/O.
--* FD_ZERO: Waiting for I/O.
--* fdatasync: Synchronizing I/O.
--* fdim: Misc FP Arithmetic.
--* fdimf: Misc FP Arithmetic.
--* fdiml: Misc FP Arithmetic.
--* fdopen: Descriptors and Streams.
--* feclearexcept: Status bit operations.
--* fedisableexcept: Control Functions.
--* feenableexcept: Control Functions.
--* fegetenv: Control Functions.
--* fegetexcept: Control Functions.
--* fegetexceptflag: Status bit operations.
--* fegetround: Rounding.
--* feholdexcept: Control Functions.
--* feof: EOF and Errors.
--* feof_unlocked: EOF and Errors.
--* feraiseexcept: Status bit operations.
--* ferror: EOF and Errors.
--* ferror_unlocked: EOF and Errors.
--* fesetenv: Control Functions.
--* fesetexceptflag: Status bit operations.
--* fesetround: Rounding.
--* fetestexcept: Status bit operations.
--* feupdateenv: Control Functions.
--* fflush: Flushing Buffers.
--* fflush_unlocked: Flushing Buffers.
--* fgetc: Character Input.
--* fgetc_unlocked: Character Input.
--* fgetgrent: Scanning All Groups.
--* fgetgrent_r: Scanning All Groups.
--* fgetpos: Portable Positioning.
--* fgetpos64: Portable Positioning.
--* fgetpwent: Scanning All Users.
--* fgetpwent_r: Scanning All Users.
--* fgets: Line Input.
--* fgets_unlocked: Line Input.
--* fgetwc: Character Input.
--* fgetwc_unlocked: Character Input.
--* fgetws: Line Input.
--* fgetws_unlocked: Line Input.
--* fileno: Descriptors and Streams.
--* fileno_unlocked: Descriptors and Streams.
--* finite: Floating Point Classes.
--* finitef: Floating Point Classes.
--* finitel: Floating Point Classes.
--* flockfile: Streams and Threads.
--* floor: Rounding Functions.
--* floorf: Rounding Functions.
--* floorl: Rounding Functions.
--* fma: Misc FP Arithmetic.
--* fmaf: Misc FP Arithmetic.
--* fmal: Misc FP Arithmetic.
--* fmax: Misc FP Arithmetic.
--* fmaxf: Misc FP Arithmetic.
--* fmaxl: Misc FP Arithmetic.
--* fmemopen: String Streams.
--* fmin: Misc FP Arithmetic.
--* fminf: Misc FP Arithmetic.
--* fminl: Misc FP Arithmetic.
--* fmod: Remainder Functions.
--* fmodf: Remainder Functions.
--* fmodl: Remainder Functions.
--* fmtmsg: Printing Formatted Messages.
--* fnmatch: Wildcard Matching.
--* fopen: Opening Streams.
--* fopen64: Opening Streams.
--* fopencookie: Streams and Cookies.
--* fork: Creating a Process.
--* forkpty: Pseudo-Terminal Pairs.
--* fpathconf: Pathconf.
--* fpclassify: Floating Point Classes.
--* fprintf: Formatted Output Functions.
--* fputc: Simple Output.
--* fputc_unlocked: Simple Output.
--* fputs: Simple Output.
--* fputs_unlocked: Simple Output.
--* fputwc: Simple Output.
--* fputwc_unlocked: Simple Output.
--* fputws: Simple Output.
--* fputws_unlocked: Simple Output.
--* fread: Block Input/Output.
--* fread_unlocked: Block Input/Output.
--* free: Freeing after Malloc.
--* freopen: Opening Streams.
--* freopen64: Opening Streams.
--* frexp: Normalization Functions.
--* frexpf: Normalization Functions.
--* frexpl: Normalization Functions.
--* fscanf: Formatted Input Functions.
--* fseek: File Positioning.
--* fseeko: File Positioning.
--* fseeko64: File Positioning.
--* fsetpos: Portable Positioning.
--* fsetpos64: Portable Positioning.
--* fstat: Reading Attributes.
--* fstat64: Reading Attributes.
--* fsync: Synchronizing I/O.
--* ftell: File Positioning.
--* ftello: File Positioning.
--* ftello64: File Positioning.
--* ftruncate: File Size.
--* ftruncate64: File Size.
--* ftrylockfile: Streams and Threads.
--* ftw: Working with Directory Trees.
--* ftw64: Working with Directory Trees.
--* funlockfile: Streams and Threads.
--* futimes: File Times.
--* fwide: Streams and I18N.
--* fwprintf: Formatted Output Functions.
--* fwrite: Block Input/Output.
--* fwrite_unlocked: Block Input/Output.
--* fwscanf: Formatted Input Functions.
--* gamma: Special Functions.
--* gammaf: Special Functions.
--* gammal: Special Functions.
--* gcvt: System V Number Conversion.
--* get_avphys_pages: Query Memory Parameters.
--* get_current_dir_name: Working Directory.
--* get_nprocs: Processor Resources.
--* get_nprocs_conf: Processor Resources.
--* get_phys_pages: Query Memory Parameters.
--* getc: Character Input.
--* getc_unlocked: Character Input.
--* getchar: Character Input.
--* getchar_unlocked: Character Input.
--* getcontext: System V contexts.
--* getcwd: Working Directory.
--* getdate: General Time String Parsing.
--* getdate_r: General Time String Parsing.
--* getdelim: Line Input.
--* getdomainnname: Host Identification.
--* getegid: Reading Persona.
--* getenv: Environment Access.
--* geteuid: Reading Persona.
--* getfsent: fstab.
--* getfsfile: fstab.
--* getfsspec: fstab.
--* getgid: Reading Persona.
--* getgrent: Scanning All Groups.
--* getgrent_r: Scanning All Groups.
--* getgrgid: Lookup Group.
--* getgrgid_r: Lookup Group.
--* getgrnam: Lookup Group.
--* getgrnam_r: Lookup Group.
--* getgrouplist: Setting Groups.
--* getgroups: Reading Persona.
--* gethostbyaddr: Host Names.
--* gethostbyaddr_r: Host Names.
--* gethostbyname: Host Names.
--* gethostbyname2: Host Names.
--* gethostbyname2_r: Host Names.
--* gethostbyname_r: Host Names.
--* gethostent: Host Names.
--* gethostid: Host Identification.
--* gethostname: Host Identification.
--* getitimer: Setting an Alarm.
--* getline: Line Input.
--* getloadavg: Processor Resources.
--* getlogin: Who Logged In.
--* getmntent: mtab.
--* getmntent_r: mtab.
--* getnetbyaddr: Networks Database.
--* getnetbyname: Networks Database.
--* getnetent: Networks Database.
--* getnetgrent: Lookup Netgroup.
--* getnetgrent_r: Lookup Netgroup.
--* getopt: Using Getopt.
--* getopt_long: Getopt Long Options.
--* getopt_long_only: Getopt Long Options.
--* getpagesize: Query Memory Parameters.
--* getpass: getpass.
--* getpeername: Who is Connected.
--* getpgid: Process Group Functions.
--* getpgrp: Process Group Functions.
--* getpid: Process Identification.
--* getppid: Process Identification.
--* getpriority: Traditional Scheduling Functions.
--* getprotobyname: Protocols Database.
--* getprotobynumber: Protocols Database.
--* getprotoent: Protocols Database.
--* getpt: Allocation.
--* getpwent: Scanning All Users.
--* getpwent_r: Scanning All Users.
--* getpwnam: Lookup User.
--* getpwnam_r: Lookup User.
--* getpwuid: Lookup User.
--* getpwuid_r: Lookup User.
--* getrlimit: Limits on Resources.
--* getrlimit64: Limits on Resources.
--* getrusage: Resource Usage.
--* gets: Line Input.
--* getservbyname: Services Database.
--* getservbyport: Services Database.
--* getservent: Services Database.
--* getsid: Process Group Functions.
--* getsockname: Reading Address.
--* getsockopt: Socket Option Functions.
--* getsubopt: Suboptions.
--* gettext: Translation with gettext.
--* gettimeofday: High-Resolution Calendar.
--* getuid: Reading Persona.
--* getumask: Setting Permissions.
--* getutent: Manipulating the Database.
--* getutent_r: Manipulating the Database.
--* getutid: Manipulating the Database.
--* getutid_r: Manipulating the Database.
--* getutline: Manipulating the Database.
--* getutline_r: Manipulating the Database.
--* getutmp: XPG Functions.
--* getutmpx: XPG Functions.
--* getutxent: XPG Functions.
--* getutxid: XPG Functions.
--* getutxline: XPG Functions.
--* getw: Character Input.
--* getwc: Character Input.
--* getwc_unlocked: Character Input.
--* getwchar: Character Input.
--* getwchar_unlocked: Character Input.
--* getwd: Working Directory.
--* glob: Calling Glob.
--* glob64: Calling Glob.
--* globfree: More Flags for Globbing.
--* globfree64: More Flags for Globbing.
--* gmtime: Broken-down Time.
--* gmtime_r: Broken-down Time.
--* grantpt: Allocation.
--* gsignal: Signaling Yourself.
--* gtty: BSD Terminal Modes.
--* hasmntopt: mtab.
--* hcreate: Hash Search Function.
--* hcreate_r: Hash Search Function.
--* hdestroy: Hash Search Function.
--* hdestroy_r: Hash Search Function.
--* hsearch: Hash Search Function.
--* hsearch_r: Hash Search Function.
--* htonl: Byte Order.
--* htons: Byte Order.
--* hypot: Exponents and Logarithms.
--* hypotf: Exponents and Logarithms.
--* hypotl: Exponents and Logarithms.
--* iconv: Generic Conversion Interface.
--* iconv_close: Generic Conversion Interface.
--* iconv_open: Generic Conversion Interface.
--* if_freenameindex: Interface Naming.
--* if_indextoname: Interface Naming.
--* if_nameindex: Interface Naming.
--* if_nametoindex: Interface Naming.
--* IFTODT: Directory Entries.
--* ilogb: Exponents and Logarithms.
--* ilogbf: Exponents and Logarithms.
--* ilogbl: Exponents and Logarithms.
--* imaxabs: Absolute Value.
--* imaxdiv: Integer Division.
--* index: Search Functions.
--* inet_addr: Host Address Functions.
--* inet_aton: Host Address Functions.
--* inet_lnaof: Host Address Functions.
--* inet_makeaddr: Host Address Functions.
--* inet_netof: Host Address Functions.
--* inet_network: Host Address Functions.
--* inet_ntoa: Host Address Functions.
--* inet_ntop: Host Address Functions.
--* inet_pton: Host Address Functions.
--* initgroups: Setting Groups.
--* initstate: BSD Random.
--* initstate_r: BSD Random.
--* innetgr: Netgroup Membership.
--* ioctl: IOCTLs.
--* isalnum: Classification of Characters.
--* isalpha: Classification of Characters.
--* isascii: Classification of Characters.
--* isatty: Is It a Terminal.
--* isblank: Classification of Characters.
--* iscntrl: Classification of Characters.
--* isdigit: Classification of Characters.
--* isfinite: Floating Point Classes.
--* isgraph: Classification of Characters.
--* isgreater: FP Comparison Functions.
--* isgreaterequal: FP Comparison Functions.
--* isinf: Floating Point Classes.
--* isinff: Floating Point Classes.
--* isinfl: Floating Point Classes.
--* isless: FP Comparison Functions.
--* islessequal: FP Comparison Functions.
--* islessgreater: FP Comparison Functions.
--* islower: Classification of Characters.
--* isnan: Floating Point Classes.
--* isnanf: Floating Point Classes.
--* isnanl: Floating Point Classes.
--* isnormal: Floating Point Classes.
--* isprint: Classification of Characters.
--* ispunct: Classification of Characters.
--* isspace: Classification of Characters.
--* isunordered: FP Comparison Functions.
--* isupper: Classification of Characters.
--* iswalnum: Classification of Wide Characters.
--* iswalpha: Classification of Wide Characters.
--* iswblank: Classification of Wide Characters.
--* iswcntrl: Classification of Wide Characters.
--* iswctype: Classification of Wide Characters.
--* iswdigit: Classification of Wide Characters.
--* iswgraph: Classification of Wide Characters.
--* iswlower: Classification of Wide Characters.
--* iswprint: Classification of Wide Characters.
--* iswpunct: Classification of Wide Characters.
--* iswspace: Classification of Wide Characters.
--* iswupper: Classification of Wide Characters.
--* iswxdigit: Classification of Wide Characters.
--* isxdigit: Classification of Characters.
--* j0: Special Functions.
--* j0f: Special Functions.
--* j0l: Special Functions.
--* j1: Special Functions.
--* j1f: Special Functions.
--* j1l: Special Functions.
--* jn: Special Functions.
--* jnf: Special Functions.
--* jnl: Special Functions.
--* jrand48: SVID Random.
--* jrand48_r: SVID Random.
--* kill: Signaling Another Process.
--* killpg: Signaling Another Process.
--* l64a: Encode Binary Data.
--* labs: Absolute Value.
--* lcong48: SVID Random.
--* lcong48_r: SVID Random.
--* ldexp: Normalization Functions.
--* ldexpf: Normalization Functions.
--* ldexpl: Normalization Functions.
--* ldiv: Integer Division.
--* lfind: Array Search Function.
--* lgamma: Special Functions.
--* lgamma_r: Special Functions.
--* lgammaf: Special Functions.
--* lgammaf_r: Special Functions.
--* lgammal: Special Functions.
--* lgammal_r: Special Functions.
--* link: Hard Links.
--* lio_listio: Asynchronous Reads/Writes.
--* lio_listio64: Asynchronous Reads/Writes.
--* listen: Listening.
--* llabs: Absolute Value.
--* lldiv: Integer Division.
--* llrint: Rounding Functions.
--* llrintf: Rounding Functions.
--* llrintl: Rounding Functions.
--* llround: Rounding Functions.
--* llroundf: Rounding Functions.
--* llroundl: Rounding Functions.
--* localeconv: The Lame Way to Locale Data.
--* localtime: Broken-down Time.
--* localtime_r: Broken-down Time.
--* log: Exponents and Logarithms.
--* log10: Exponents and Logarithms.
--* log10f: Exponents and Logarithms.
--* log10l: Exponents and Logarithms.
--* log1p: Exponents and Logarithms.
--* log1pf: Exponents and Logarithms.
--* log1pl: Exponents and Logarithms.
--* log2: Exponents and Logarithms.
--* log2f: Exponents and Logarithms.
--* log2l: Exponents and Logarithms.
--* logb: Exponents and Logarithms.
--* logbf: Exponents and Logarithms.
--* logbl: Exponents and Logarithms.
--* logf: Exponents and Logarithms.
--* login: Logging In and Out.
--* login_tty: Logging In and Out.
--* logl: Exponents and Logarithms.
--* logout: Logging In and Out.
--* logwtmp: Logging In and Out.
--* longjmp: Non-Local Details.
--* lrand48: SVID Random.
--* lrand48_r: SVID Random.
--* lrint: Rounding Functions.
--* lrintf: Rounding Functions.
--* lrintl: Rounding Functions.
--* lround: Rounding Functions.
--* lroundf: Rounding Functions.
--* lroundl: Rounding Functions.
--* lsearch: Array Search Function.
--* lseek: File Position Primitive.
--* lseek64: File Position Primitive.
--* lstat: Reading Attributes.
--* lstat64: Reading Attributes.
--* lutimes: File Times.
--* madvise: Memory-mapped I/O.
--* main: Program Arguments.
--* makecontext: System V contexts.
--* mallinfo: Statistics of Malloc.
--* malloc: Basic Allocation.
--* mallopt: Malloc Tunable Parameters.
--* matherr: FP Exceptions.
--* mblen: Non-reentrant Character Conversion.
--* mbrlen: Converting a Character.
--* mbrtowc: Converting a Character.
--* mbsinit: Keeping the state.
--* mbsnrtowcs: Converting Strings.
--* mbsrtowcs: Converting Strings.
--* mbstowcs: Non-reentrant String Conversion.
--* mbtowc: Non-reentrant Character Conversion.
--* mcheck: Heap Consistency Checking.
--* memalign: Aligned Memory Blocks.
--* memccpy: Copying and Concatenation.
--* memchr: Search Functions.
--* memcmp: String/Array Comparison.
--* memcpy: Copying and Concatenation.
--* memfrob: Trivial Encryption.
--* memmem: Search Functions.
--* memmove: Copying and Concatenation.
--* mempcpy: Copying and Concatenation.
--* memrchr: Search Functions.
--* memset: Copying and Concatenation.
--* mkdir: Creating Directories.
--* mkdtemp: Temporary Files.
--* mkfifo: FIFO Special Files.
--* mknod: Making Special Files.
--* mkstemp: Temporary Files.
--* mktemp: Temporary Files.
--* mktime: Broken-down Time.
--* mlock: Page Lock Functions.
--* mlockall: Page Lock Functions.
--* mmap: Memory-mapped I/O.
--* mmap64: Memory-mapped I/O.
--* modf: Rounding Functions.
--* modff: Rounding Functions.
--* modfl: Rounding Functions.
--* mount: Mount-Unmount-Remount.
--* mprobe: Heap Consistency Checking.
--* mrand48: SVID Random.
--* mrand48_r: SVID Random.
--* mremap: Memory-mapped I/O.
--* msync: Memory-mapped I/O.
--* mtrace: Tracing malloc.
--* munlock: Page Lock Functions.
--* munlockall: Page Lock Functions.
--* munmap: Memory-mapped I/O.
--* muntrace: Tracing malloc.
--* nan: FP Bit Twiddling.
--* nanf: FP Bit Twiddling.
--* nanl: FP Bit Twiddling.
--* nanosleep: Sleeping.
--* nearbyint: Rounding Functions.
--* nearbyintf: Rounding Functions.
--* nearbyintl: Rounding Functions.
--* nextafter: FP Bit Twiddling.
--* nextafterf: FP Bit Twiddling.
--* nextafterl: FP Bit Twiddling.
--* nexttoward: FP Bit Twiddling.
--* nexttowardf: FP Bit Twiddling.
--* nexttowardl: FP Bit Twiddling.
--* nftw: Working with Directory Trees.
--* nftw64: Working with Directory Trees.
--* ngettext: Advanced gettext functions.
--* nice: Traditional Scheduling Functions.
--* nl_langinfo: The Elegant and Fast Way.
--* notfound: Actions in the NSS configuration.
--* nrand48: SVID Random.
--* nrand48_r: SVID Random.
--* ntohl: Byte Order.
--* ntohs: Byte Order.
--* ntp_adjtime: High Accuracy Clock.
--* ntp_gettime: High Accuracy Clock.
--* obstack_1grow: Growing Objects.
--* obstack_1grow_fast: Extra Fast Growing.
--* obstack_alignment_mask: Obstacks Data Alignment.
--* obstack_alloc: Allocation in an Obstack.
--* obstack_base: Status of an Obstack.
--* obstack_blank: Growing Objects.
--* obstack_blank_fast: Extra Fast Growing.
--* obstack_chunk_alloc: Preparing for Obstacks.
--* obstack_chunk_free: Preparing for Obstacks.
--* obstack_chunk_size: Obstack Chunks.
--* obstack_copy: Allocation in an Obstack.
--* obstack_copy0: Allocation in an Obstack.
--* obstack_finish: Growing Objects.
--* obstack_free: Freeing Obstack Objects.
--* obstack_grow: Growing Objects.
--* obstack_grow0: Growing Objects.
--* obstack_init: Preparing for Obstacks.
--* obstack_int_grow: Growing Objects.
--* obstack_int_grow_fast: Extra Fast Growing.
--* obstack_next_free: Status of an Obstack.
--* obstack_object_size <1>: Status of an Obstack.
--* obstack_object_size: Growing Objects.
--* obstack_printf: Dynamic Output.
--* obstack_ptr_grow: Growing Objects.
--* obstack_ptr_grow_fast: Extra Fast Growing.
--* obstack_room: Extra Fast Growing.
--* obstack_vprintf: Variable Arguments Output.
--* offsetof: Structure Measurement.
--* on_exit: Cleanups on Exit.
--* open: Opening and Closing Files.
--* open64: Opening and Closing Files.
--* open_memstream: String Streams.
--* open_obstack_stream: Obstack Streams.
--* opendir: Opening a Directory.
--* openlog: openlog.
--* openpty: Pseudo-Terminal Pairs.
--* parse_printf_format: Parsing a Template String.
--* pathconf: Pathconf.
--* pause: Using Pause.
--* pclose: Pipe to a Subprocess.
--* perror: Error Messages.
--* pipe: Creating a Pipe.
--* popen: Pipe to a Subprocess.
--* posix_memalign: Aligned Memory Blocks.
--* pow: Exponents and Logarithms.
--* pow10: Exponents and Logarithms.
--* pow10f: Exponents and Logarithms.
--* pow10l: Exponents and Logarithms.
--* powf: Exponents and Logarithms.
--* powl: Exponents and Logarithms.
--* pread: I/O Primitives.
--* pread64: I/O Primitives.
--* printf: Formatted Output Functions.
--* printf_size: Predefined Printf Handlers.
--* printf_size_info: Predefined Printf Handlers.
--* psignal: Signal Messages.
--* pthread_atfork: Threads and Fork.
--* pthread_attr_destroy: Thread Attributes.
--* pthread_attr_getattr: Thread Attributes.
--* pthread_attr_getdetachstate: Thread Attributes.
--* pthread_attr_getguardsize: Thread Attributes.
--* pthread_attr_getinheritsched: Thread Attributes.
--* pthread_attr_getschedparam: Thread Attributes.
--* pthread_attr_getschedpolicy: Thread Attributes.
--* pthread_attr_getscope: Thread Attributes.
--* pthread_attr_getstack: Thread Attributes.
--* pthread_attr_getstackaddr: Thread Attributes.
--* pthread_attr_getstacksize: Thread Attributes.
--* pthread_attr_init: Thread Attributes.
--* pthread_attr_setattr: Thread Attributes.
--* pthread_attr_setdetachstate: Thread Attributes.
--* pthread_attr_setguardsize: Thread Attributes.
--* pthread_attr_setinheritsched: Thread Attributes.
--* pthread_attr_setschedparam: Thread Attributes.
--* pthread_attr_setschedpolicy: Thread Attributes.
--* pthread_attr_setscope: Thread Attributes.
--* pthread_attr_setstack: Thread Attributes.
--* pthread_attr_setstackaddr: Thread Attributes.
--* pthread_attr_setstacksize: Thread Attributes.
--* pthread_cancel: Basic Thread Operations.
--* pthread_cleanup_pop: Cleanup Handlers.
--* pthread_cleanup_pop_restore_np: Cleanup Handlers.
--* pthread_cleanup_push: Cleanup Handlers.
--* pthread_cleanup_push_defer_np: Cleanup Handlers.
--* pthread_cond_broadcast: Condition Variables.
--* pthread_cond_destroy: Condition Variables.
--* pthread_cond_init: Condition Variables.
--* pthread_cond_signal: Condition Variables.
--* pthread_cond_timedwait: Condition Variables.
--* pthread_cond_wait: Condition Variables.
--* pthread_condattr_destroy: Condition Variables.
--* pthread_condattr_init: Condition Variables.
--* pthread_create: Basic Thread Operations.
--* pthread_detach: Miscellaneous Thread Functions.
--* pthread_equal: Miscellaneous Thread Functions.
--* pthread_exit: Basic Thread Operations.
--* pthread_getconcurrency: Miscellaneous Thread Functions.
--* pthread_getschedparam: Miscellaneous Thread Functions.
--* pthread_getspecific: Thread-Specific Data.
--* pthread_join: Basic Thread Operations.
--* pthread_key_create: Thread-Specific Data.
--* pthread_key_delete: Thread-Specific Data.
--* pthread_kill: Threads and Signal Handling.
--* pthread_kill_other_threads_np: Miscellaneous Thread Functions.
--* pthread_mutex_destroy: Mutexes.
--* pthread_mutex_init: Mutexes.
--* pthread_mutex_lock: Mutexes.
--* pthread_mutex_timedlock: Mutexes.
--* pthread_mutex_trylock: Mutexes.
--* pthread_mutex_unlock: Mutexes.
--* pthread_mutexattr_destroy: Mutexes.
--* pthread_mutexattr_gettype: Mutexes.
--* pthread_mutexattr_init: Mutexes.
--* pthread_mutexattr_settype: Mutexes.
--* pthread_once: Miscellaneous Thread Functions.
--* pthread_self: Miscellaneous Thread Functions.
--* pthread_setcancelstate: Cancellation.
--* pthread_setcanceltype: Cancellation.
--* pthread_setconcurrency: Miscellaneous Thread Functions.
--* pthread_setschedparam: Miscellaneous Thread Functions.
--* pthread_setspecific: Thread-Specific Data.
--* pthread_sigmask: Threads and Signal Handling.
--* pthread_testcancel: Cancellation.
--* ptsname: Allocation.
--* ptsname_r: Allocation.
--* putc: Simple Output.
--* putc_unlocked: Simple Output.
--* putchar: Simple Output.
--* putchar_unlocked: Simple Output.
--* putenv: Environment Access.
--* putpwent: Writing a User Entry.
--* puts: Simple Output.
--* pututline: Manipulating the Database.
--* pututxline: XPG Functions.
--* putw: Simple Output.
--* putwc: Simple Output.
--* putwc_unlocked: Simple Output.
--* putwchar: Simple Output.
--* putwchar_unlocked: Simple Output.
--* pwrite: I/O Primitives.
--* pwrite64: I/O Primitives.
--* qecvt: System V Number Conversion.
--* qecvt_r: System V Number Conversion.
--* qfcvt: System V Number Conversion.
--* qfcvt_r: System V Number Conversion.
--* qgcvt: System V Number Conversion.
--* qsort: Array Sort Function.
--* raise: Signaling Yourself.
--* rand: ISO Random.
--* rand_r: ISO Random.
--* random: BSD Random.
--* random_r: BSD Random.
--* rawmemchr: Search Functions.
--* read: I/O Primitives.
--* readdir: Reading/Closing Directory.
--* readdir64: Reading/Closing Directory.
--* readdir64_r: Reading/Closing Directory.
--* readdir_r: Reading/Closing Directory.
--* readlink: Symbolic Links.
--* readv: Scatter-Gather.
--* realloc: Changing Block Size.
--* realpath: Symbolic Links.
--* recv: Receiving Data.
--* recvfrom: Receiving Datagrams.
--* regcomp: POSIX Regexp Compilation.
--* regerror: Regexp Cleanup.
--* regexec: Matching POSIX Regexps.
--* regfree: Regexp Cleanup.
--* register_printf_function: Registering New Conversions.
--* remainder: Remainder Functions.
--* remainderf: Remainder Functions.
--* remainderl: Remainder Functions.
--* remove: Deleting Files.
--* rename: Renaming Files.
--* rewind: File Positioning.
--* rewinddir: Random Access Directory.
--* rindex: Search Functions.
--* rint: Rounding Functions.
--* rintf: Rounding Functions.
--* rintl: Rounding Functions.
--* rmdir: Deleting Files.
--* round: Rounding Functions.
--* roundf: Rounding Functions.
--* roundl: Rounding Functions.
--* rpmatch: Yes-or-No Questions.
--* S_ISBLK: Testing File Type.
--* S_ISCHR: Testing File Type.
--* S_ISDIR: Testing File Type.
--* S_ISFIFO: Testing File Type.
--* S_ISLNK: Testing File Type.
--* S_ISREG: Testing File Type.
--* S_ISSOCK: Testing File Type.
--* S_TYPEISMQ: Testing File Type.
--* S_TYPEISSEM: Testing File Type.
--* S_TYPEISSHM: Testing File Type.
--* sbrk: Resizing the Data Segment.
--* scalb: Normalization Functions.
--* scalbf: Normalization Functions.
--* scalbl: Normalization Functions.
--* scalbln: Normalization Functions.
--* scalblnf: Normalization Functions.
--* scalblnl: Normalization Functions.
--* scalbn: Normalization Functions.
--* scalbnf: Normalization Functions.
--* scalbnl: Normalization Functions.
--* scandir: Scanning Directory Content.
--* scandir64: Scanning Directory Content.
--* scanf: Formatted Input Functions.
--* sched_get_priority_max: Basic Scheduling Functions.
--* sched_get_priority_min: Basic Scheduling Functions.
--* sched_getparam: Basic Scheduling Functions.
--* sched_getscheduler: Basic Scheduling Functions.
--* sched_rr_get_interval: Basic Scheduling Functions.
--* sched_setparam: Basic Scheduling Functions.
--* sched_setscheduler: Basic Scheduling Functions.
--* sched_yield: Basic Scheduling Functions.
--* seed48: SVID Random.
--* seed48_r: SVID Random.
--* seekdir: Random Access Directory.
--* select: Waiting for I/O.
--* sem_destroy: POSIX Semaphores.
--* sem_getvalue: POSIX Semaphores.
--* sem_init: POSIX Semaphores.
--* sem_post: POSIX Semaphores.
--* sem_trywait: POSIX Semaphores.
--* sem_wait: POSIX Semaphores.
--* send: Sending Data.
--* sendto: Sending Datagrams.
--* setbuf: Controlling Buffering.
--* setbuffer: Controlling Buffering.
--* setcontext: System V contexts.
--* setdomainname: Host Identification.
--* setegid: Setting Groups.
--* setenv: Environment Access.
--* seteuid: Setting User ID.
--* setfsent: fstab.
--* setgid: Setting Groups.
--* setgrent: Scanning All Groups.
--* setgroups: Setting Groups.
--* sethostent: Host Names.
--* sethostid: Host Identification.
--* sethostname: Host Identification.
--* setitimer: Setting an Alarm.
--* setjmp: Non-Local Details.
--* setkey: DES Encryption.
--* setkey_r: DES Encryption.
--* setlinebuf: Controlling Buffering.
--* setlocale: Setting the Locale.
--* setlogmask: setlogmask.
--* setmntent: mtab.
--* setnetent: Networks Database.
--* setnetgrent: Lookup Netgroup.
--* setpgid: Process Group Functions.
--* setpgrp: Process Group Functions.
--* setpriority: Traditional Scheduling Functions.
--* setprotoent: Protocols Database.
--* setpwent: Scanning All Users.
--* setregid: Setting Groups.
--* setreuid: Setting User ID.
--* setrlimit: Limits on Resources.
--* setrlimit64: Limits on Resources.
--* setservent: Services Database.
--* setsid: Process Group Functions.
--* setsockopt: Socket Option Functions.
--* setstate: BSD Random.
--* setstate_r: BSD Random.
--* settimeofday: High-Resolution Calendar.
--* setuid: Setting User ID.
--* setutent: Manipulating the Database.
--* setutxent: XPG Functions.
--* setvbuf: Controlling Buffering.
--* shutdown: Closing a Socket.
--* sigaction: Advanced Signal Handling.
--* sigaddset: Signal Sets.
--* sigaltstack: Signal Stack.
--* sigblock: Blocking in BSD.
--* sigdelset: Signal Sets.
--* sigemptyset: Signal Sets.
--* sigfillset: Signal Sets.
--* siginterrupt: BSD Handler.
--* sigismember: Signal Sets.
--* siglongjmp: Non-Local Exits and Signals.
--* sigmask: Blocking in BSD.
--* signal: Basic Signal Handling.
--* signbit: FP Bit Twiddling.
--* significand: Normalization Functions.
--* significandf: Normalization Functions.
--* significandl: Normalization Functions.
--* sigpause: Blocking in BSD.
--* sigpending: Checking for Pending Signals.
--* sigprocmask: Process Signal Mask.
--* sigsetjmp: Non-Local Exits and Signals.
--* sigsetmask: Blocking in BSD.
--* sigstack: Signal Stack.
--* sigsuspend: Sigsuspend.
--* sigvec: BSD Handler.
--* sigwait: Threads and Signal Handling.
--* sin: Trig Functions.
--* sincos: Trig Functions.
--* sincosf: Trig Functions.
--* sincosl: Trig Functions.
--* sinf: Trig Functions.
--* sinh: Hyperbolic Functions.
--* sinhf: Hyperbolic Functions.
--* sinhl: Hyperbolic Functions.
--* sinl: Trig Functions.
--* sleep: Sleeping.
--* snprintf: Formatted Output Functions.
--* socket: Creating a Socket.
--* socketpair: Socket Pairs.
--* sprintf: Formatted Output Functions.
--* sqrt: Exponents and Logarithms.
--* sqrtf: Exponents and Logarithms.
--* sqrtl: Exponents and Logarithms.
--* srand: ISO Random.
--* srand48: SVID Random.
--* srand48_r: SVID Random.
--* srandom: BSD Random.
--* srandom_r: BSD Random.
--* sscanf: Formatted Input Functions.
--* ssignal: Basic Signal Handling.
--* stat: Reading Attributes.
--* stat64: Reading Attributes.
--* stime: Simple Calendar Time.
--* stpcpy: Copying and Concatenation.
--* stpncpy: Copying and Concatenation.
--* strcasecmp: String/Array Comparison.
--* strcasestr: Search Functions.
--* strcat: Copying and Concatenation.
--* strchr: Search Functions.
--* strchrnul: Search Functions.
--* strcmp: String/Array Comparison.
--* strcoll: Collation Functions.
--* strcpy: Copying and Concatenation.
--* strcspn: Search Functions.
--* strdup: Copying and Concatenation.
--* strdupa: Copying and Concatenation.
--* strerror: Error Messages.
--* strerror_r: Error Messages.
--* strfmon: Formatting Numbers.
--* strfry: strfry.
--* strftime: Formatting Calendar Time.
--* strlen: String Length.
--* strncasecmp: String/Array Comparison.
--* strncat: Copying and Concatenation.
--* strncmp: String/Array Comparison.
--* strncpy: Copying and Concatenation.
--* strndup: Copying and Concatenation.
--* strndupa: Copying and Concatenation.
--* strnlen: String Length.
--* strpbrk: Search Functions.
--* strptime: Low-Level Time String Parsing.
--* strrchr: Search Functions.
--* strsep: Finding Tokens in a String.
--* strsignal: Signal Messages.
--* strspn: Search Functions.
--* strstr: Search Functions.
--* strtod: Parsing of Floats.
--* strtof: Parsing of Floats.
--* strtoimax: Parsing of Integers.
--* strtok: Finding Tokens in a String.
--* strtok_r: Finding Tokens in a String.
--* strtol: Parsing of Integers.
--* strtold: Parsing of Floats.
--* strtoll: Parsing of Integers.
--* strtoq: Parsing of Integers.
--* strtoul: Parsing of Integers.
--* strtoull: Parsing of Integers.
--* strtoumax: Parsing of Integers.
--* strtouq: Parsing of Integers.
--* strverscmp: String/Array Comparison.
--* strxfrm: Collation Functions.
--* stty: BSD Terminal Modes.
--* success: Actions in the NSS configuration.
--* SUN_LEN: Local Namespace Details.
--* swapcontext: System V contexts.
--* swprintf: Formatted Output Functions.
--* swscanf: Formatted Input Functions.
--* symlink: Symbolic Links.
--* sync: Synchronizing I/O.
--* syscall: System Calls.
--* sysconf: Sysconf Definition.
--* sysctl: System Parameters.
--* syslog: syslog; vsyslog.
--* system: Running a Command.
--* sysv_signal: Basic Signal Handling.
--* tan: Trig Functions.
--* tanf: Trig Functions.
--* tanh: Hyperbolic Functions.
--* tanhf: Hyperbolic Functions.
--* tanhl: Hyperbolic Functions.
--* tanl: Trig Functions.
--* tcdrain: Line Control.
--* tcflow: Line Control.
--* tcflush: Line Control.
--* tcgetattr: Mode Functions.
--* tcgetpgrp: Terminal Access Functions.
--* tcgetsid: Terminal Access Functions.
--* tcsendbreak: Line Control.
--* tcsetattr: Mode Functions.
--* tcsetpgrp: Terminal Access Functions.
--* tdelete: Tree Search Function.
--* tdestroy: Tree Search Function.
--* telldir: Random Access Directory.
--* TEMP_FAILURE_RETRY: Interrupted Primitives.
--* tempnam: Temporary Files.
--* textdomain: Locating gettext catalog.
--* tfind: Tree Search Function.
--* tgamma: Special Functions.
--* tgammaf: Special Functions.
--* tgammal: Special Functions.
--* time: Simple Calendar Time.
--* timegm: Broken-down Time.
--* timelocal: Broken-down Time.
--* times: Processor Time.
--* tmpfile: Temporary Files.
--* tmpfile64: Temporary Files.
--* tmpnam: Temporary Files.
--* tmpnam_r: Temporary Files.
--* toascii: Case Conversion.
--* tolower: Case Conversion.
--* toupper: Case Conversion.
--* towctrans: Wide Character Case Conversion.
--* towlower: Wide Character Case Conversion.
--* towupper: Wide Character Case Conversion.
--* trunc: Rounding Functions.
--* truncate: File Size.
--* truncate64: File Size.
--* truncf: Rounding Functions.
--* truncl: Rounding Functions.
--* tryagain: Actions in the NSS configuration.
--* tsearch: Tree Search Function.
--* ttyname: Is It a Terminal.
--* ttyname_r: Is It a Terminal.
--* twalk: Tree Search Function.
--* tzset: Time Zone Functions.
--* ulimit: Limits on Resources.
--* umask: Setting Permissions.
--* umount: Mount-Unmount-Remount.
--* umount2: Mount-Unmount-Remount.
--* uname: Platform Type.
--* unavail: Actions in the NSS configuration.
--* ungetc: How Unread.
--* ungetwc: How Unread.
--* unlink: Deleting Files.
--* unlockpt: Allocation.
--* unsetenv: Environment Access.
--* updwtmp: Manipulating the Database.
--* utime: File Times.
--* utimes: File Times.
--* utmpname: Manipulating the Database.
--* utmpxname: XPG Functions.
--* va_alist: Old Varargs.
--* va_arg: Argument Macros.
--* va_dcl: Old Varargs.
--* va_end: Argument Macros.
--* va_start <1>: Old Varargs.
--* va_start: Argument Macros.
--* valloc: Aligned Memory Blocks.
--* vasprintf: Variable Arguments Output.
--* verr: Error Messages.
--* verrx: Error Messages.
--* versionsort: Scanning Directory Content.
--* versionsort64: Scanning Directory Content.
--* vfork: Creating a Process.
--* vfprintf: Variable Arguments Output.
--* vfscanf: Variable Arguments Input.
--* vfwprintf: Variable Arguments Output.
--* vfwscanf: Variable Arguments Input.
--* vlimit: Limits on Resources.
--* vprintf: Variable Arguments Output.
--* vscanf: Variable Arguments Input.
--* vsnprintf: Variable Arguments Output.
--* vsprintf: Variable Arguments Output.
--* vsscanf: Variable Arguments Input.
--* vswprintf: Variable Arguments Output.
--* vswscanf: Variable Arguments Input.
--* vsyslog: syslog; vsyslog.
--* vtimes: Resource Usage.
--* vwarn: Error Messages.
--* vwarnx: Error Messages.
--* vwprintf: Variable Arguments Output.
--* vwscanf: Variable Arguments Input.
--* wait: Process Completion.
--* wait3: BSD Wait Functions.
--* wait4: Process Completion.
--* waitpid: Process Completion.
--* warn: Error Messages.
--* warnx: Error Messages.
--* WCOREDUMP: Process Completion Status.
--* wcpcpy: Copying and Concatenation.
--* wcpncpy: Copying and Concatenation.
--* wcrtomb: Converting a Character.
--* wcscasecmp: String/Array Comparison.
--* wcscat: Copying and Concatenation.
--* wcschr: Search Functions.
--* wcschrnul: Search Functions.
--* wcscmp: String/Array Comparison.
--* wcscoll: Collation Functions.
--* wcscpy: Copying and Concatenation.
--* wcscspn: Search Functions.
--* wcsdup: Copying and Concatenation.
--* wcsftime: Formatting Calendar Time.
--* wcslen: String Length.
--* wcsncasecmp: String/Array Comparison.
--* wcsncat: Copying and Concatenation.
--* wcsncmp: String/Array Comparison.
--* wcsncpy: Copying and Concatenation.
--* wcsnlen: String Length.
--* wcsnrtombs: Converting Strings.
--* wcspbrk: Search Functions.
--* wcsrchr: Search Functions.
--* wcsrtombs: Converting Strings.
--* wcsspn: Search Functions.
--* wcsstr: Search Functions.
--* wcstod: Parsing of Floats.
--* wcstof: Parsing of Floats.
--* wcstoimax: Parsing of Integers.
--* wcstok: Finding Tokens in a String.
--* wcstol: Parsing of Integers.
--* wcstold: Parsing of Floats.
--* wcstoll: Parsing of Integers.
--* wcstombs: Non-reentrant String Conversion.
--* wcstoq: Parsing of Integers.
--* wcstoul: Parsing of Integers.
--* wcstoull: Parsing of Integers.
--* wcstoumax: Parsing of Integers.
--* wcstouq: Parsing of Integers.
--* wcswcs: Search Functions.
--* wcsxfrm: Collation Functions.
--* wctob: Converting a Character.
--* wctomb: Non-reentrant Character Conversion.
--* wctrans: Wide Character Case Conversion.
--* wctype: Classification of Wide Characters.
--* WEXITSTATUS: Process Completion Status.
--* WIFEXITED: Process Completion Status.
--* WIFSIGNALED: Process Completion Status.
--* WIFSTOPPED: Process Completion Status.
--* wmemchr: Search Functions.
--* wmemcmp: String/Array Comparison.
--* wmemcpy: Copying and Concatenation.
--* wmemmove: Copying and Concatenation.
--* wmempcpy: Copying and Concatenation.
--* wmemset: Copying and Concatenation.
--* wordexp: Calling Wordexp.
--* wordfree: Calling Wordexp.
--* wprintf: Formatted Output Functions.
--* write: I/O Primitives.
--* writev: Scatter-Gather.
--* wscanf: Formatted Input Functions.
--* WSTOPSIG: Process Completion Status.
--* WTERMSIG: Process Completion Status.
--* y0: Special Functions.
--* y0f: Special Functions.
--* y0l: Special Functions.
--* y1: Special Functions.
--* y1f: Special Functions.
--* y1l: Special Functions.
--* yn: Special Functions.
--* ynf: Special Functions.
--* ynl: Special Functions.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-6 glibc-2.3.2-200304020432/manual/libc.info-6
---- glibc-2.3.2/manual/libc.info-6 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-6 Thu Jan 1 01:00:00 1970
-@@ -1,686 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Classification of Wide Characters, Next: Using Wide Char Classes, Prev: Case Conversion, Up: Character Handling
--
--Character class determination for wide characters
--=================================================
--
-- Amendment 1 to ISO C90 defines functions to classify wide
--characters. Although the original ISO C90 standard already defined the
--type `wchar_t', no functions operating on them were defined.
--
-- The general design of the classification functions for wide
--characters is more general. It allows extensions to the set of
--available classifications, beyond those which are always available.
--The POSIX standard specifies how extensions can be made, and this is
--already implemented in the GNU C library implementation of the
--`localedef' program.
--
-- The character class functions are normally implemented with bitsets,
--with a bitset per character. For a given character, the appropriate
--bitset is read from a table and a test is performed as to whether a
--certain bit is set. Which bit is tested for is determined by the class.
--
-- For the wide character classification functions this is made visible.
--There is a type classification type defined, a function to retrieve this
--value for a given class, and a function to test whether a given
--character is in this class, using the classification value. On top of
--this the normal character classification functions as used for `char'
--objects can be defined.
--
-- - Data type: wctype_t
-- The `wctype_t' can hold a value which represents a character class.
-- The only defined way to generate such a value is by using the
-- `wctype' function.
--
-- This type is defined in `wctype.h'.
--
-- - Function: wctype_t wctype (const char *PROPERTY)
-- The `wctype' returns a value representing a class of wide
-- characters which is identified by the string PROPERTY. Beside
-- some standard properties each locale can define its own ones. In
-- case no property with the given name is known for the current
-- locale selected for the `LC_CTYPE' category, the function returns
-- zero.
--
-- The properties known in every locale are:
--
-- `"alnum"' `"alpha"' `"cntrl"' `"digit"'
-- `"graph"' `"lower"' `"print"' `"punct"'
-- `"space"' `"upper"' `"xdigit"'
--
-- This function is declared in `wctype.h'.
--
-- To test the membership of a character to one of the non-standard
--classes the ISO C standard defines a completely new function.
--
-- - Function: int iswctype (wint_t WC, wctype_t DESC)
-- This function returns a nonzero value if WC is in the character
-- class specified by DESC. DESC must previously be returned by a
-- successful call to `wctype'.
--
-- This function is declared in `wctype.h'.
--
-- To make it easier to use the commonly-used classification functions,
--they are defined in the C library. There is no need to use `wctype' if
--the property string is one of the known character classes. In some
--situations it is desirable to construct the property strings, and then
--it is important that `wctype' can also handle the standard classes.
--
-- - Function: int iswalnum (wint_t WC)
-- This function returns a nonzero value if WC is an alphanumeric
-- character (a letter or number); in other words, if either
-- `iswalpha' or `iswdigit' is true of a character, then `iswalnum'
-- is also true.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("alnum"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswalpha (wint_t WC)
-- Returns true if WC is an alphabetic character (a letter). If
-- `iswlower' or `iswupper' is true of a character, then `iswalpha'
-- is also true.
--
-- In some locales, there may be additional characters for which
-- `iswalpha' is true--letters which are neither upper case nor lower
-- case. But in the standard `"C"' locale, there are no such
-- additional characters.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("alpha"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswcntrl (wint_t WC)
-- Returns true if WC is a control character (that is, a character
-- that is not a printing character).
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("cntrl"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswdigit (wint_t WC)
-- Returns true if WC is a digit (e.g., `0' through `9'). Please
-- note that this function does not only return a nonzero value for
-- _decimal_ digits, but for all kinds of digits. A consequence is
-- that code like the following will *not* work unconditionally for
-- wide characters:
--
-- n = 0;
-- while (iswdigit (*wc))
-- {
-- n *= 10;
-- n += *wc++ - L'0';
-- }
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("digit"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswgraph (wint_t WC)
-- Returns true if WC is a graphic character; that is, a character
-- that has a glyph associated with it. The whitespace characters
-- are not considered graphic.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("graph"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswlower (wint_t WC)
-- Returns true if WC is a lower-case letter. The letter need not be
-- from the Latin alphabet, any alphabet representable is valid.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("lower"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswprint (wint_t WC)
-- Returns true if WC is a printing character. Printing characters
-- include all the graphic characters, plus the space (` ') character.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("print"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswpunct (wint_t WC)
-- Returns true if WC is a punctuation character. This means any
-- printing character that is not alphanumeric or a space character.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("punct"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswspace (wint_t WC)
-- Returns true if WC is a "whitespace" character. In the standard
-- `"C"' locale, `iswspace' returns true for only the standard
-- whitespace characters:
--
-- `L' ''
-- space
--
-- `L'\f''
-- formfeed
--
-- `L'\n''
-- newline
--
-- `L'\r''
-- carriage return
--
-- `L'\t''
-- horizontal tab
--
-- `L'\v''
-- vertical tab
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("space"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswupper (wint_t WC)
-- Returns true if WC is an upper-case letter. The letter need not be
-- from the Latin alphabet, any alphabet representable is valid.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("upper"))
--
-- It is declared in `wctype.h'.
--
-- - Function: int iswxdigit (wint_t WC)
-- Returns true if WC is a hexadecimal digit. Hexadecimal digits
-- include the normal decimal digits `0' through `9' and the letters
-- `A' through `F' and `a' through `f'.
--
-- This function can be implemented using
--
-- iswctype (wc, wctype ("xdigit"))
--
-- It is declared in `wctype.h'.
--
-- The GNU C library also provides a function which is not defined in
--the ISO C standard but which is available as a version for single byte
--characters as well.
--
-- - Function: int iswblank (wint_t WC)
-- Returns true if WC is a blank character; that is, a space or a tab.
-- This function is a GNU extension. It is declared in `wchar.h'.
--
--
--File: libc.info, Node: Using Wide Char Classes, Next: Wide Character Case Conversion, Prev: Classification of Wide Characters, Up: Character Handling
--
--Notes on using the wide character classes
--=========================================
--
-- The first note is probably not astonishing but still occasionally a
--cause of problems. The `iswXXX' functions can be implemented using
--macros and in fact, the GNU C library does this. They are still
--available as real functions but when the `wctype.h' header is included
--the macros will be used. This is the same as the `char' type versions
--of these functions.
--
-- The second note covers something new. It can be best illustrated by
--a (real-world) example. The first piece of code is an excerpt from the
--original code. It is truncated a bit but the intention should be clear.
--
-- int
-- is_in_class (int c, const char *class)
-- {
-- if (strcmp (class, "alnum") == 0)
-- return isalnum (c);
-- if (strcmp (class, "alpha") == 0)
-- return isalpha (c);
-- if (strcmp (class, "cntrl") == 0)
-- return iscntrl (c);
-- ...
-- return 0;
-- }
--
-- Now, with the `wctype' and `iswctype' you can avoid the `if'
--cascades, but rewriting the code as follows is wrong:
--
-- int
-- is_in_class (int c, const char *class)
-- {
-- wctype_t desc = wctype (class);
-- return desc ? iswctype ((wint_t) c, desc) : 0;
-- }
--
-- The problem is that it is not guaranteed that the wide character
--representation of a single-byte character can be found using casting.
--In fact, usually this fails miserably. The correct solution to this
--problem is to write the code as follows:
--
-- int
-- is_in_class (int c, const char *class)
-- {
-- wctype_t desc = wctype (class);
-- return desc ? iswctype (btowc (c), desc) : 0;
-- }
--
-- *Note Converting a Character::, for more information on `btowc'.
--Note that this change probably does not improve the performance of the
--program a lot since the `wctype' function still has to make the string
--comparisons. It gets really interesting if the `is_in_class' function
--is called more than once for the same class name. In this case the
--variable DESC could be computed once and reused for all the calls.
--Therefore the above form of the function is probably not the final one.
--
--
--File: libc.info, Node: Wide Character Case Conversion, Prev: Using Wide Char Classes, Up: Character Handling
--
--Mapping of wide characters.
--===========================
--
-- The classification functions are also generalized by the ISO C
--standard. Instead of just allowing the two standard mappings, a locale
--can contain others. Again, the `localedef' program already supports
--generating such locale data files.
--
-- - Data Type: wctrans_t
-- This data type is defined as a scalar type which can hold a value
-- representing the locale-dependent character mapping. There is no
-- way to construct such a value apart from using the return value of
-- the `wctrans' function.
--
-- This type is defined in `wctype.h'.
--
-- - Function: wctrans_t wctrans (const char *PROPERTY)
-- The `wctrans' function has to be used to find out whether a named
-- mapping is defined in the current locale selected for the
-- `LC_CTYPE' category. If the returned value is non-zero, you can
-- use it afterwards in calls to `towctrans'. If the return value is
-- zero no such mapping is known in the current locale.
--
-- Beside locale-specific mappings there are two mappings which are
-- guaranteed to be available in every locale:
--
-- `"tolower"' `"toupper"'
--
-- These functions are declared in `wctype.h'.
--
-- - Function: wint_t towctrans (wint_t WC, wctrans_t DESC)
-- `towctrans' maps the input character WC according to the rules of
-- the mapping for which DESC is a descriptor, and returns the value
-- it finds. DESC must be obtained by a successful call to `wctrans'.
--
-- This function is declared in `wctype.h'.
--
-- For the generally available mappings, the ISO C standard defines
--convenient shortcuts so that it is not necessary to call `wctrans' for
--them.
--
-- - Function: wint_t towlower (wint_t WC)
-- If WC is an upper-case letter, `towlower' returns the corresponding
-- lower-case letter. If WC is not an upper-case letter, WC is
-- returned unchanged.
--
-- `towlower' can be implemented using
--
-- towctrans (wc, wctrans ("tolower"))
--
-- This function is declared in `wctype.h'.
--
-- - Function: wint_t towupper (wint_t WC)
-- If WC is a lower-case letter, `towupper' returns the corresponding
-- upper-case letter. Otherwise WC is returned unchanged.
--
-- `towupper' can be implemented using
--
-- towctrans (wc, wctrans ("toupper"))
--
-- This function is declared in `wctype.h'.
--
-- The same warnings given in the last section for the use of the wide
--character classification functions apply here. It is not possible to
--simply cast a `char' type value to a `wint_t' and use it as an argument
--to `towctrans' calls.
--
--
--File: libc.info, Node: String and Array Utilities, Next: Character Set Handling, Prev: Character Handling, Up: Top
--
--String and Array Utilities
--**************************
--
-- Operations on strings (or arrays of characters) are an important
--part of many programs. The GNU C library provides an extensive set of
--string utility functions, including functions for copying,
--concatenating, comparing, and searching strings. Many of these
--functions can also operate on arbitrary regions of storage; for
--example, the `memcpy' function can be used to copy the contents of any
--kind of array.
--
-- It's fairly common for beginning C programmers to "reinvent the
--wheel" by duplicating this functionality in their own code, but it pays
--to become familiar with the library functions and to make use of them,
--since this offers benefits in maintenance, efficiency, and portability.
--
-- For instance, you could easily compare one string to another in two
--lines of C code, but if you use the built-in `strcmp' function, you're
--less likely to make a mistake. And, since these library functions are
--typically highly optimized, your program may run faster too.
--
--* Menu:
--
--* Representation of Strings:: Introduction to basic concepts.
--* String/Array Conventions:: Whether to use a string function or an
-- arbitrary array function.
--* String Length:: Determining the length of a string.
--* Copying and Concatenation:: Functions to copy the contents of strings
-- and arrays.
--* String/Array Comparison:: Functions for byte-wise and character-wise
-- comparison.
--* Collation Functions:: Functions for collating strings.
--* Search Functions:: Searching for a specific element or substring.
--* Finding Tokens in a String:: Splitting a string into tokens by looking
-- for delimiters.
--* strfry:: Function for flash-cooking a string.
--* Trivial Encryption:: Obscuring data.
--* Encode Binary Data:: Encoding and Decoding of Binary Data.
--* Argz and Envz Vectors:: Null-separated string vectors.
--
--
--File: libc.info, Node: Representation of Strings, Next: String/Array Conventions, Up: String and Array Utilities
--
--Representation of Strings
--=========================
--
-- This section is a quick summary of string concepts for beginning C
--programmers. It describes how character strings are represented in C
--and some common pitfalls. If you are already familiar with this
--material, you can skip this section.
--
-- A "string" is an array of `char' objects. But string-valued
--variables are usually declared to be pointers of type `char *'. Such
--variables do not include space for the text of a string; that has to be
--stored somewhere else--in an array variable, a string constant, or
--dynamically allocated memory (*note Memory Allocation::). It's up to
--you to store the address of the chosen memory space into the pointer
--variable. Alternatively you can store a "null pointer" in the pointer
--variable. The null pointer does not point anywhere, so attempting to
--reference the string it points to gets an error.
--
-- "string" normally refers to multibyte character strings as opposed to
--wide character strings. Wide character strings are arrays of type
--`wchar_t' and as for multibyte character strings usually pointers of
--type `wchar_t *' are used.
--
-- By convention, a "null character", `'\0'', marks the end of a
--multibyte character string and the "null wide character", `L'\0'',
--marks the end of a wide character string. For example, in testing to
--see whether the `char *' variable P points to a null character marking
--the end of a string, you can write `!*P' or `*P == '\0''.
--
-- A null character is quite different conceptually from a null pointer,
--although both are represented by the integer `0'.
--
-- "String literals" appear in C program source as strings of
--characters between double-quote characters (`"') where the initial
--double-quote character is immediately preceded by a capital `L' (ell)
--character (as in `L"foo"'). In ISO C, string literals can also be
--formed by "string concatenation": `"a" "b"' is the same as `"ab"'. For
--wide character strings one can either use `L"a" L"b"' or `L"a" "b"'.
--Modification of string literals is not allowed by the GNU C compiler,
--because literals are placed in read-only storage.
--
-- Character arrays that are declared `const' cannot be modified
--either. It's generally good style to declare non-modifiable string
--pointers to be of type `const char *', since this often allows the C
--compiler to detect accidental modifications as well as providing some
--amount of documentation about what your program intends to do with the
--string.
--
-- The amount of memory allocated for the character array may extend
--past the null character that normally marks the end of the string. In
--this document, the term "allocated size" is always used to refer to the
--total amount of memory allocated for the string, while the term
--"length" refers to the number of characters up to (but not including)
--the terminating null character.
--
-- A notorious source of program bugs is trying to put more characters
--in a string than fit in its allocated size. When writing code that
--extends strings or moves characters into a pre-allocated array, you
--should be very careful to keep track of the length of the text and make
--explicit checks for overflowing the array. Many of the library
--functions _do not_ do this for you! Remember also that you need to
--allocate an extra byte to hold the null character that marks the end of
--the string.
--
-- Originally strings were sequences of bytes where each byte
--represents a single character. This is still true today if the strings
--are encoded using a single-byte character encoding. Things are
--different if the strings are encoded using a multibyte encoding (for
--more information on encodings see *Note Extended Char Intro::). There
--is no difference in the programming interface for these two kind of
--strings; the programmer has to be aware of this and interpret the byte
--sequences accordingly.
--
-- But since there is no separate interface taking care of these
--differences the byte-based string functions are sometimes hard to use.
--Since the count parameters of these functions specify bytes a call to
--`strncpy' could cut a multibyte character in the middle and put an
--incomplete (and therefore unusable) byte sequence in the target buffer.
--
-- To avoid these problems later versions of the ISO C standard
--introduce a second set of functions which are operating on "wide
--characters" (*note Extended Char Intro::). These functions don't have
--the problems the single-byte versions have since every wide character is
--a legal, interpretable value. This does not mean that cutting wide
--character strings at arbitrary points is without problems. It normally
--is for alphabet-based languages (except for non-normalized text) but
--languages based on syllables still have the problem that more than one
--wide character is necessary to complete a logical unit. This is a
--higher level problem which the C library functions are not designed to
--solve. But it is at least good that no invalid byte sequences can be
--created. Also, the higher level functions can also much easier operate
--on wide character than on multibyte characters so that a general advise
--is to use wide characters internally whenever text is more than simply
--copied.
--
-- The remaining of this chapter will discuss the functions for handling
--wide character strings in parallel with the discussion of the multibyte
--character strings since there is almost always an exact equivalent
--available.
--
--
--File: libc.info, Node: String/Array Conventions, Next: String Length, Prev: Representation of Strings, Up: String and Array Utilities
--
--String and Array Conventions
--============================
--
-- This chapter describes both functions that work on arbitrary arrays
--or blocks of memory, and functions that are specific to null-terminated
--arrays of characters and wide characters.
--
-- Functions that operate on arbitrary blocks of memory have names
--beginning with `mem' and `wmem' (such as `memcpy' and `wmemcpy') and
--invariably take an argument which specifies the size (in bytes and wide
--characters respectively) of the block of memory to operate on. The
--array arguments and return values for these functions have type `void
--*' or `wchar_t'. As a matter of style, the elements of the arrays used
--with the `mem' functions are referred to as "bytes". You can pass any
--kind of pointer to these functions, and the `sizeof' operator is useful
--in computing the value for the size argument. Parameters to the `wmem'
--functions must be of type `wchar_t *'. These functions are not really
--usable with anything but arrays of this type.
--
-- In contrast, functions that operate specifically on strings and wide
--character strings have names beginning with `str' and `wcs'
--respectively (such as `strcpy' and `wcscpy') and look for a null
--character to terminate the string instead of requiring an explicit size
--argument to be passed. (Some of these functions accept a specified
--maximum length, but they also check for premature termination with a
--null character.) The array arguments and return values for these
--functions have type `char *' and `wchar_t *' respectively, and the
--array elements are referred to as "characters" and "wide characters".
--
-- In many cases, there are both `mem' and `str'/`wcs' versions of a
--function. The one that is more appropriate to use depends on the exact
--situation. When your program is manipulating arbitrary arrays or
--blocks of storage, then you should always use the `mem' functions. On
--the other hand, when you are manipulating null-terminated strings it is
--usually more convenient to use the `str'/`wcs' functions, unless you
--already know the length of the string in advance. The `wmem' functions
--should be used for wide character arrays with known size.
--
-- Some of the memory and string functions take single characters as
--arguments. Since a value of type `char' is automatically promoted into
--an value of type `int' when used as a parameter, the functions are
--declared with `int' as the type of the parameter in question. In case
--of the wide character function the situation is similarly: the
--parameter type for a single wide character is `wint_t' and not
--`wchar_t'. This would for many implementations not be necessary since
--the `wchar_t' is large enough to not be automatically promoted, but
--since the ISO C standard does not require such a choice of types the
--`wint_t' type is used.
--
--
--File: libc.info, Node: String Length, Next: Copying and Concatenation, Prev: String/Array Conventions, Up: String and Array Utilities
--
--String Length
--=============
--
-- You can get the length of a string using the `strlen' function.
--This function is declared in the header file `string.h'.
--
-- - Function: size_t strlen (const char *S)
-- The `strlen' function returns the length of the null-terminated
-- string S in bytes. (In other words, it returns the offset of the
-- terminating null character within the array.)
--
-- For example,
-- strlen ("hello, world")
-- => 12
--
-- When applied to a character array, the `strlen' function returns
-- the length of the string stored there, not its allocated size.
-- You can get the allocated size of the character array that holds a
-- string using the `sizeof' operator:
--
-- char string[32] = "hello, world";
-- sizeof (string)
-- => 32
-- strlen (string)
-- => 12
--
-- But beware, this will not work unless STRING is the character
-- array itself, not a pointer to it. For example:
--
-- char string[32] = "hello, world";
-- char *ptr = string;
-- sizeof (string)
-- => 32
-- sizeof (ptr)
-- => 4 /* (on a machine with 4 byte pointers) */
--
-- This is an easy mistake to make when you are working with
-- functions that take string arguments; those arguments are always
-- pointers, not arrays.
--
-- It must also be noted that for multibyte encoded strings the return
-- value does not have to correspond to the number of characters in
-- the string. To get this value the string can be converted to wide
-- characters and `wcslen' can be used or something like the following
-- code can be used:
--
-- /* The input is in `string'.
-- The length is expected in `n'. */
-- {
-- mbstate_t t;
-- char *scopy = string;
-- /* In initial state. */
-- memset (&t, '\0', sizeof (t));
-- /* Determine number of characters. */
-- n = mbsrtowcs (NULL, &scopy, strlen (scopy), &t);
-- }
--
-- This is cumbersome to do so if the number of characters (as
-- opposed to bytes) is needed often it is better to work with wide
-- characters.
--
-- The wide character equivalent is declared in `wchar.h'.
--
-- - Function: size_t wcslen (const wchar_t *WS)
-- The `wcslen' function is the wide character equivalent to
-- `strlen'. The return value is the number of wide characters in the
-- wide character string pointed to by WS (this is also the offset of
-- the terminating null wide character of WS).
--
-- Since there are no multi wide character sequences making up one
-- character the return value is not only the offset in the array, it
-- is also the number of wide characters.
--
-- This function was introduced in Amendment 1 to ISO C90.
--
-- - Function: size_t strnlen (const char *S, size_t MAXLEN)
-- The `strnlen' function returns the length of the string S in bytes
-- if this length is smaller than MAXLEN bytes. Otherwise it returns
-- MAXLEN. Therefore this function is equivalent to `(strlen (S) < n
-- ? strlen (S) : MAXLEN)' but it is more efficient and works even if
-- the string S is not null-terminated.
--
-- char string[32] = "hello, world";
-- strnlen (string, 32)
-- => 12
-- strnlen (string, 5)
-- => 5
--
-- This function is a GNU extension and is declared in `string.h'.
--
-- - Function: size_t wcsnlen (const wchar_t *WS, size_t MAXLEN)
-- `wcsnlen' is the wide character equivalent to `strnlen'. The
-- MAXLEN parameter specifies the maximum number of wide characters.
--
-- This function is a GNU extension and is declared in `wchar.h'.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-60 glibc-2.3.2-200304020432/manual/libc.info-60
---- glibc-2.3.2/manual/libc.info-60 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-60 Thu Jan 1 01:00:00 1970
-@@ -1,1115 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Variable Index, Next: File Index, Prev: Function Index, Up: Top
--
--Variable and Constant Macro Index
--*********************************
--
--* Menu:
--
--* (*__gconv_end_fct): glibc iconv Implementation.
--* (*__gconv_fct): glibc iconv Implementation.
--* (*__gconv_init_fct): glibc iconv Implementation.
--* __free_hook: Hooks for Malloc.
--* __malloc_hook: Hooks for Malloc.
--* __malloc_initialize_hook: Hooks for Malloc.
--* __memalign_hook: Hooks for Malloc.
--* __realloc_hook: Hooks for Malloc.
--* _BSD_SOURCE: Feature Test Macros.
--* _Complex_I: Complex Numbers.
--* _FILE_OFFSET_BITS: Feature Test Macros.
--* _GNU_SOURCE: Feature Test Macros.
--* _IOFBF: Controlling Buffering.
--* _IOLBF: Controlling Buffering.
--* _IONBF: Controlling Buffering.
--* _ISOC99_SOURCE: Feature Test Macros.
--* _LARGEFILE64_SOURCE: Feature Test Macros.
--* _LARGEFILE_SOURCE: Feature Test Macros.
--* _PATH_FSTAB: Mount Information.
--* _PATH_MNTTAB: Mount Information.
--* _PATH_MOUNTED: Mount Information.
--* _PATH_UTMP: Manipulating the Database.
--* _PATH_WTMP: Manipulating the Database.
--* _POSIX2_C_DEV: System Options.
--* _POSIX2_C_VERSION: Version Supported.
--* _POSIX2_FORT_DEV: System Options.
--* _POSIX2_FORT_RUN: System Options.
--* _POSIX2_LOCALEDEF: System Options.
--* _POSIX2_SW_DEV: System Options.
--* _POSIX_C_SOURCE: Feature Test Macros.
--* _POSIX_CHOWN_RESTRICTED: Options for Files.
--* _POSIX_JOB_CONTROL: System Options.
--* _POSIX_NO_TRUNC: Options for Files.
--* _POSIX_SAVED_IDS: System Options.
--* _POSIX_SOURCE: Feature Test Macros.
--* _POSIX_VDISABLE <1>: Options for Files.
--* _POSIX_VDISABLE: Special Characters.
--* _POSIX_VERSION: Version Supported.
--* _REENTRANT: Feature Test Macros.
--* _SC_2_C_DEV: Constants for Sysconf.
--* _SC_2_FORT_DEV: Constants for Sysconf.
--* _SC_2_FORT_RUN: Constants for Sysconf.
--* _SC_2_LOCALEDEF: Constants for Sysconf.
--* _SC_2_SW_DEV: Constants for Sysconf.
--* _SC_2_VERSION: Constants for Sysconf.
--* _SC_AIO_LISTIO_MAX: Constants for Sysconf.
--* _SC_AIO_MAX: Constants for Sysconf.
--* _SC_AIO_PRIO_DELTA_MAX: Constants for Sysconf.
--* _SC_ARG_MAX: Constants for Sysconf.
--* _SC_ASYNCHRONOUS_IO: Constants for Sysconf.
--* _SC_ATEXIT_MAX: Constants for Sysconf.
--* _SC_AVPHYS_PAGES <1>: Constants for Sysconf.
--* _SC_AVPHYS_PAGES: Query Memory Parameters.
--* _SC_BC_BASE_MAX: Constants for Sysconf.
--* _SC_BC_DIM_MAX: Constants for Sysconf.
--* _SC_BC_SCALE_MAX: Constants for Sysconf.
--* _SC_BC_STRING_MAX: Constants for Sysconf.
--* _SC_CHAR_BIT: Constants for Sysconf.
--* _SC_CHAR_MAX: Constants for Sysconf.
--* _SC_CHAR_MIN: Constants for Sysconf.
--* _SC_CHARCLASS_NAME_MAX: Constants for Sysconf.
--* _SC_CHILD_MAX: Constants for Sysconf.
--* _SC_CLK_TCK: Constants for Sysconf.
--* _SC_COLL_WEIGHTS_MAX: Constants for Sysconf.
--* _SC_DELAYTIMER_MAX: Constants for Sysconf.
--* _SC_EQUIV_CLASS_MAX: Constants for Sysconf.
--* _SC_EXPR_NEST_MAX: Constants for Sysconf.
--* _SC_FSYNC: Constants for Sysconf.
--* _SC_GETGR_R_SIZE_MAX: Constants for Sysconf.
--* _SC_GETPW_R_SIZE_MAX: Constants for Sysconf.
--* _SC_INT_MAX: Constants for Sysconf.
--* _SC_INT_MIN: Constants for Sysconf.
--* _SC_JOB_CONTROL: Constants for Sysconf.
--* _SC_LINE_MAX: Constants for Sysconf.
--* _SC_LOGIN_NAME_MAX: Constants for Sysconf.
--* _SC_LONG_BIT: Constants for Sysconf.
--* _SC_MAPPED_FILES: Constants for Sysconf.
--* _SC_MB_LEN_MAX: Constants for Sysconf.
--* _SC_MEMLOCK: Constants for Sysconf.
--* _SC_MEMLOCK_RANGE: Constants for Sysconf.
--* _SC_MEMORY_PROTECTION: Constants for Sysconf.
--* _SC_MESSAGE_PASSING: Constants for Sysconf.
--* _SC_MQ_OPEN_MAX: Constants for Sysconf.
--* _SC_MQ_PRIO_MAX: Constants for Sysconf.
--* _SC_NGROUPS_MAX: Constants for Sysconf.
--* _SC_NL_ARGMAX: Constants for Sysconf.
--* _SC_NL_LANGMAX: Constants for Sysconf.
--* _SC_NL_MSGMAX: Constants for Sysconf.
--* _SC_NL_NMAX: Constants for Sysconf.
--* _SC_NL_SETMAX: Constants for Sysconf.
--* _SC_NL_TEXTMAX: Constants for Sysconf.
--* _SC_NPROCESSORS_CONF <1>: Constants for Sysconf.
--* _SC_NPROCESSORS_CONF: Processor Resources.
--* _SC_NPROCESSORS_ONLN <1>: Constants for Sysconf.
--* _SC_NPROCESSORS_ONLN: Processor Resources.
--* _SC_NZERO: Constants for Sysconf.
--* _SC_OPEN_MAX: Constants for Sysconf.
--* _SC_PAGESIZE <1>: Constants for Sysconf.
--* _SC_PAGESIZE <2>: Query Memory Parameters.
--* _SC_PAGESIZE: Memory-mapped I/O.
--* _SC_PHYS_PAGES <1>: Constants for Sysconf.
--* _SC_PHYS_PAGES: Query Memory Parameters.
--* _SC_PII: Constants for Sysconf.
--* _SC_PII_INTERNET: Constants for Sysconf.
--* _SC_PII_INTERNET_DGRAM: Constants for Sysconf.
--* _SC_PII_INTERNET_STREAM: Constants for Sysconf.
--* _SC_PII_OSI: Constants for Sysconf.
--* _SC_PII_OSI_CLTS: Constants for Sysconf.
--* _SC_PII_OSI_COTS: Constants for Sysconf.
--* _SC_PII_OSI_M: Constants for Sysconf.
--* _SC_PII_SOCKET: Constants for Sysconf.
--* _SC_PII_XTI: Constants for Sysconf.
--* _SC_PRIORITIZED_IO: Constants for Sysconf.
--* _SC_PRIORITY_SCHEDULING: Constants for Sysconf.
--* _SC_REALTIME_SIGNALS: Constants for Sysconf.
--* _SC_RTSIG_MAX: Constants for Sysconf.
--* _SC_SAVED_IDS: Constants for Sysconf.
--* _SC_SCHAR_MAX: Constants for Sysconf.
--* _SC_SCHAR_MIN: Constants for Sysconf.
--* _SC_SELECT: Constants for Sysconf.
--* _SC_SEM_NSEMS_MAX: Constants for Sysconf.
--* _SC_SEM_VALUE_MAX: Constants for Sysconf.
--* _SC_SEMAPHORES: Constants for Sysconf.
--* _SC_SHARED_MEMORY_OBJECTS: Constants for Sysconf.
--* _SC_SHRT_MAX: Constants for Sysconf.
--* _SC_SHRT_MIN: Constants for Sysconf.
--* _SC_SIGQUEUE_MAX: Constants for Sysconf.
--* _SC_STREAM_MAX: Constants for Sysconf.
--* _SC_SYNCHRONIZED_IO: Constants for Sysconf.
--* _SC_T_IOV_MAX: Constants for Sysconf.
--* _SC_THREAD_ATTR_STACKADDR: Constants for Sysconf.
--* _SC_THREAD_ATTR_STACKSIZE: Constants for Sysconf.
--* _SC_THREAD_DESTRUCTOR_ITERATIONS: Constants for Sysconf.
--* _SC_THREAD_KEYS_MAX: Constants for Sysconf.
--* _SC_THREAD_PRIO_INHERIT: Constants for Sysconf.
--* _SC_THREAD_PRIO_PROTECT: Constants for Sysconf.
--* _SC_THREAD_PRIORITY_SCHEDULING: Constants for Sysconf.
--* _SC_THREAD_PROCESS_SHARED: Constants for Sysconf.
--* _SC_THREAD_SAFE_FUNCTIONS: Constants for Sysconf.
--* _SC_THREAD_STACK_MIN: Constants for Sysconf.
--* _SC_THREAD_THREADS_MAX: Constants for Sysconf.
--* _SC_THREADS: Constants for Sysconf.
--* _SC_TIMER_MAX: Constants for Sysconf.
--* _SC_TIMERS: Constants for Sysconf.
--* _SC_TTY_NAME_MAX: Constants for Sysconf.
--* _SC_TZNAME_MAX: Constants for Sysconf.
--* _SC_UCHAR_MAX: Constants for Sysconf.
--* _SC_UINT_MAX: Constants for Sysconf.
--* _SC_UIO_MAXIOV: Constants for Sysconf.
--* _SC_ULONG_MAX: Constants for Sysconf.
--* _SC_USHRT_MAX: Constants for Sysconf.
--* _SC_VERSION: Constants for Sysconf.
--* _SC_WORD_BIT: Constants for Sysconf.
--* _SC_XOPEN_CRYPT: Constants for Sysconf.
--* _SC_XOPEN_ENH_I18N: Constants for Sysconf.
--* _SC_XOPEN_LEGACY: Constants for Sysconf.
--* _SC_XOPEN_REALTIME: Constants for Sysconf.
--* _SC_XOPEN_REALTIME_THREADS: Constants for Sysconf.
--* _SC_XOPEN_SHM: Constants for Sysconf.
--* _SC_XOPEN_UNIX: Constants for Sysconf.
--* _SC_XOPEN_VERSION: Constants for Sysconf.
--* _SC_XOPEN_XCU_VERSION: Constants for Sysconf.
--* _SC_XOPEN_XPG2: Constants for Sysconf.
--* _SC_XOPEN_XPG3: Constants for Sysconf.
--* _SC_XOPEN_XPG4: Constants for Sysconf.
--* _SVID_SOURCE: Feature Test Macros.
--* _THREAD_SAFE: Feature Test Macros.
--* _XOPEN_SOURCE: Feature Test Macros.
--* _XOPEN_SOURCE_EXTENDED: Feature Test Macros.
--* ABDAY_1: The Elegant and Fast Way.
--* ABDAY_2: The Elegant and Fast Way.
--* ABDAY_3: The Elegant and Fast Way.
--* ABDAY_4: The Elegant and Fast Way.
--* ABDAY_5: The Elegant and Fast Way.
--* ABDAY_6: The Elegant and Fast Way.
--* ABDAY_7: The Elegant and Fast Way.
--* ABMON_1: The Elegant and Fast Way.
--* ABMON_10: The Elegant and Fast Way.
--* ABMON_11: The Elegant and Fast Way.
--* ABMON_12: The Elegant and Fast Way.
--* ABMON_2: The Elegant and Fast Way.
--* ABMON_3: The Elegant and Fast Way.
--* ABMON_4: The Elegant and Fast Way.
--* ABMON_5: The Elegant and Fast Way.
--* ABMON_6: The Elegant and Fast Way.
--* ABMON_7: The Elegant and Fast Way.
--* ABMON_8: The Elegant and Fast Way.
--* ABMON_9: The Elegant and Fast Way.
--* ACCOUNTING: Manipulating the Database.
--* AF_FILE: Address Formats.
--* AF_INET: Address Formats.
--* AF_LOCAL: Address Formats.
--* AF_UNIX: Address Formats.
--* AF_UNSPEC: Address Formats.
--* aliases: NSS Basics.
--* ALT_DIGITS: The Elegant and Fast Way.
--* ALTWERASE: Local Modes.
--* AM_STR: The Elegant and Fast Way.
--* ARG_MAX: General Limits.
--* argp_err_exit_status: Argp Global Variables.
--* ARGP_ERR_UNKNOWN: Argp Parser Functions.
--* ARGP_HELP_BUG_ADDR: Argp Help Flags.
--* ARGP_HELP_DOC: Argp Help Flags.
--* ARGP_HELP_EXIT_ERR: Argp Help Flags.
--* ARGP_HELP_EXIT_OK: Argp Help Flags.
--* ARGP_HELP_LONG: Argp Help Flags.
--* ARGP_HELP_LONG_ONLY: Argp Help Flags.
--* ARGP_HELP_POST_DOC: Argp Help Flags.
--* ARGP_HELP_PRE_DOC: Argp Help Flags.
--* ARGP_HELP_SEE: Argp Help Flags.
--* ARGP_HELP_SHORT_USAGE: Argp Help Flags.
--* ARGP_HELP_STD_ERR: Argp Help Flags.
--* ARGP_HELP_STD_HELP: Argp Help Flags.
--* ARGP_HELP_STD_USAGE: Argp Help Flags.
--* ARGP_HELP_USAGE: Argp Help Flags.
--* ARGP_IN_ORDER: Argp Flags.
--* ARGP_KEY_ARG: Argp Special Keys.
--* ARGP_KEY_ARGS: Argp Special Keys.
--* ARGP_KEY_END: Argp Special Keys.
--* ARGP_KEY_ERROR: Argp Special Keys.
--* ARGP_KEY_FINI: Argp Special Keys.
--* ARGP_KEY_HELP_ARGS_DOC: Argp Help Filter Keys.
--* ARGP_KEY_HELP_DUP_ARGS_NOTE: Argp Help Filter Keys.
--* ARGP_KEY_HELP_EXTRA: Argp Help Filter Keys.
--* ARGP_KEY_HELP_HEADER: Argp Help Filter Keys.
--* ARGP_KEY_HELP_POST_DOC: Argp Help Filter Keys.
--* ARGP_KEY_HELP_PRE_DOC: Argp Help Filter Keys.
--* ARGP_KEY_INIT: Argp Special Keys.
--* ARGP_KEY_NO_ARGS: Argp Special Keys.
--* ARGP_KEY_SUCCESS: Argp Special Keys.
--* ARGP_LONG_ONLY: Argp Flags.
--* ARGP_NO_ARGS: Argp Flags.
--* ARGP_NO_ERRS: Argp Flags.
--* ARGP_NO_EXIT: Argp Flags.
--* ARGP_NO_HELP: Argp Flags.
--* ARGP_PARSE_ARGV0: Argp Flags.
--* argp_program_bug_address: Argp Global Variables.
--* argp_program_version: Argp Global Variables.
--* argp_program_version_hook: Argp Global Variables.
--* ARGP_SILENT: Argp Flags.
--* B0: Line Speed.
--* B110: Line Speed.
--* B115200: Line Speed.
--* B1200: Line Speed.
--* B134: Line Speed.
--* B150: Line Speed.
--* B1800: Line Speed.
--* B19200: Line Speed.
--* B200: Line Speed.
--* B230400: Line Speed.
--* B2400: Line Speed.
--* B300: Line Speed.
--* B38400: Line Speed.
--* B460800: Line Speed.
--* B4800: Line Speed.
--* B50: Line Speed.
--* B57600: Line Speed.
--* B600: Line Speed.
--* B75: Line Speed.
--* B9600: Line Speed.
--* BC_BASE_MAX: Utility Limits.
--* BC_DIM_MAX: Utility Limits.
--* BC_SCALE_MAX: Utility Limits.
--* BC_STRING_MAX: Utility Limits.
--* BOOT_TIME <1>: XPG Functions.
--* BOOT_TIME: Manipulating the Database.
--* BRKINT: Input Modes.
--* BUFSIZ: Controlling Buffering.
--* CCTS_OFLOW: Control Modes.
--* CHAR_MAX: Range of Type.
--* CHAR_MIN: Range of Type.
--* CHILD_MAX: General Limits.
--* CIGNORE: Control Modes.
--* CLK_TCK: CPU Time.
--* CLOCAL: Control Modes.
--* CLOCKS_PER_SEC: CPU Time.
--* CODESET: The Elegant and Fast Way.
--* COLL_WEIGHTS_MAX: Utility Limits.
--* COREFILE: Program Error Signals.
--* CREAD: Control Modes.
--* CRNCYSTR: The Elegant and Fast Way.
--* CRTS_IFLOW: Control Modes.
--* CS5: Control Modes.
--* CS6: Control Modes.
--* CS7: Control Modes.
--* CS8: Control Modes.
--* CSIZE: Control Modes.
--* CSTOPB: Control Modes.
--* CURRENCY_SYMBOL: The Elegant and Fast Way.
--* D_FMT: The Elegant and Fast Way.
--* D_T_FMT: The Elegant and Fast Way.
--* DAY_1: The Elegant and Fast Way.
--* DAY_2: The Elegant and Fast Way.
--* DAY_3: The Elegant and Fast Way.
--* DAY_4: The Elegant and Fast Way.
--* DAY_5: The Elegant and Fast Way.
--* DAY_6: The Elegant and Fast Way.
--* DAY_7: The Elegant and Fast Way.
--* daylight: Time Zone Functions.
--* DBL_DIG: Floating Point Parameters.
--* DBL_EPSILON: Floating Point Parameters.
--* DBL_MANT_DIG: Floating Point Parameters.
--* DBL_MAX: Floating Point Parameters.
--* DBL_MAX_10_EXP: Floating Point Parameters.
--* DBL_MAX_EXP: Floating Point Parameters.
--* DBL_MIN: Floating Point Parameters.
--* DBL_MIN_10_EXP: Floating Point Parameters.
--* DBL_MIN_EXP: Floating Point Parameters.
--* DEAD_PROCESS <1>: XPG Functions.
--* DEAD_PROCESS: Manipulating the Database.
--* DECIMAL_POINT: The Elegant and Fast Way.
--* DES_DECRYPT: DES Encryption.
--* DES_ENCRYPT: DES Encryption.
--* DES_HW: DES Encryption.
--* DES_SW: DES Encryption.
--* DESERR_BADPARAM: DES Encryption.
--* DESERR_HWERROR: DES Encryption.
--* DESERR_NOHWDEVICE: DES Encryption.
--* DESERR_NONE: DES Encryption.
--* DT_BLK: Directory Entries.
--* DT_CHR: Directory Entries.
--* DT_DIR: Directory Entries.
--* DT_FIFO: Directory Entries.
--* DT_REG: Directory Entries.
--* DT_SOCK: Directory Entries.
--* DT_UNKNOWN: Directory Entries.
--* E2BIG: Error Codes.
--* EACCES: Error Codes.
--* EADDRINUSE: Error Codes.
--* EADDRNOTAVAIL: Error Codes.
--* EADV: Error Codes.
--* EAFNOSUPPORT: Error Codes.
--* EAGAIN: Error Codes.
--* EALREADY: Error Codes.
--* EAUTH: Error Codes.
--* EBACKGROUND: Error Codes.
--* EBADE: Error Codes.
--* EBADF <1>: Line Control.
--* EBADF: Error Codes.
--* EBADFD: Error Codes.
--* EBADMSG: Error Codes.
--* EBADR: Error Codes.
--* EBADRPC: Error Codes.
--* EBADRQC: Error Codes.
--* EBADSLT: Error Codes.
--* EBFONT: Error Codes.
--* EBUSY: Error Codes.
--* ECANCELED: Error Codes.
--* ECHILD: Error Codes.
--* ECHO: Local Modes.
--* ECHOCTL: Local Modes.
--* ECHOE: Local Modes.
--* ECHOK: Local Modes.
--* ECHOKE: Local Modes.
--* ECHONL: Local Modes.
--* ECHOPRT: Local Modes.
--* ECHRNG: Error Codes.
--* ECOMM: Error Codes.
--* ECONNABORTED: Error Codes.
--* ECONNREFUSED: Error Codes.
--* ECONNRESET: Error Codes.
--* ED: Error Codes.
--* EDEADLK: Error Codes.
--* EDEADLOCK: Error Codes.
--* EDESTADDRREQ: Error Codes.
--* EDIED: Error Codes.
--* EDOM: Error Codes.
--* EDOTDOT: Error Codes.
--* EDQUOT: Error Codes.
--* EEXIST: Error Codes.
--* EFAULT: Error Codes.
--* EFBIG: Error Codes.
--* EFTYPE: Error Codes.
--* EGRATUITOUS: Error Codes.
--* EGREGIOUS: Error Codes.
--* EHOSTDOWN: Error Codes.
--* EHOSTUNREACH: Error Codes.
--* EIDRM: Error Codes.
--* EIEIO: Error Codes.
--* EILSEQ: Error Codes.
--* EINPROGRESS: Error Codes.
--* EINTR: Error Codes.
--* EINVAL <1>: Line Control.
--* EINVAL: Error Codes.
--* EIO: Error Codes.
--* EISCONN: Error Codes.
--* EISDIR: Error Codes.
--* EISNAM: Error Codes.
--* EL2HLT: Error Codes.
--* EL2NSYNC: Error Codes.
--* EL3HLT: Error Codes.
--* EL3RST: Error Codes.
--* ELIBACC: Error Codes.
--* ELIBBAD: Error Codes.
--* ELIBEXEC: Error Codes.
--* ELIBMAX: Error Codes.
--* ELIBSCN: Error Codes.
--* ELNRNG: Error Codes.
--* ELOOP: Error Codes.
--* EMEDIUMTYPE: Error Codes.
--* EMFILE: Error Codes.
--* EMLINK: Error Codes.
--* EMPTY <1>: XPG Functions.
--* EMPTY: Manipulating the Database.
--* EMSGSIZE: Error Codes.
--* EMULTIHOP: Error Codes.
--* ENAMETOOLONG: Error Codes.
--* ENAVAIL: Error Codes.
--* ENEEDAUTH: Error Codes.
--* ENETDOWN: Error Codes.
--* ENETRESET: Error Codes.
--* ENETUNREACH: Error Codes.
--* ENFILE: Error Codes.
--* ENOANO: Error Codes.
--* ENOBUFS: Error Codes.
--* ENOCSI: Error Codes.
--* ENODATA: Error Codes.
--* ENODEV: Error Codes.
--* ENOENT: Error Codes.
--* ENOEXEC: Error Codes.
--* ENOLCK: Error Codes.
--* ENOLINK: Error Codes.
--* ENOMEDIUM: Error Codes.
--* ENOMEM: Error Codes.
--* ENOMSG: Error Codes.
--* ENONET: Error Codes.
--* ENOPKG: Error Codes.
--* ENOPROTOOPT: Error Codes.
--* ENOSPC: Error Codes.
--* ENOSR: Error Codes.
--* ENOSTR: Error Codes.
--* ENOSYS: Error Codes.
--* ENOTBLK: Error Codes.
--* ENOTCONN: Error Codes.
--* ENOTDIR: Error Codes.
--* ENOTEMPTY: Error Codes.
--* ENOTNAM: Error Codes.
--* ENOTSOCK: Error Codes.
--* ENOTSUP: Error Codes.
--* ENOTTY <1>: Line Control.
--* ENOTTY: Error Codes.
--* ENOTUNIQ: Error Codes.
--* environ: Environment Access.
--* ENXIO: Error Codes.
--* EOF: EOF and Errors.
--* EOPNOTSUPP: Error Codes.
--* EOVERFLOW: Error Codes.
--* EPERM: Error Codes.
--* EPFNOSUPPORT: Error Codes.
--* EPIPE: Error Codes.
--* EPROCLIM: Error Codes.
--* EPROCUNAVAIL: Error Codes.
--* EPROGMISMATCH: Error Codes.
--* EPROGUNAVAIL: Error Codes.
--* EPROTO: Error Codes.
--* EPROTONOSUPPORT: Error Codes.
--* EPROTOTYPE: Error Codes.
--* EQUIV_CLASS_MAX: Utility Limits.
--* ERA: The Elegant and Fast Way.
--* ERA_D_FMT: The Elegant and Fast Way.
--* ERA_D_T_FMT: The Elegant and Fast Way.
--* ERA_T_FMT: The Elegant and Fast Way.
--* ERA_YEAR: The Elegant and Fast Way.
--* ERANGE: Error Codes.
--* EREMCHG: Error Codes.
--* EREMOTE: Error Codes.
--* EREMOTEIO: Error Codes.
--* ERESTART: Error Codes.
--* EROFS: Error Codes.
--* ERPCMISMATCH: Error Codes.
--* errno: Checking for Errors.
--* error_message_count: Error Messages.
--* error_one_per_line: Error Messages.
--* error_print_progname: Error Messages.
--* ESHUTDOWN: Error Codes.
--* ESOCKTNOSUPPORT: Error Codes.
--* ESPIPE: Error Codes.
--* ESRCH: Error Codes.
--* ESRMNT: Error Codes.
--* ESTALE: Error Codes.
--* ESTRPIPE: Error Codes.
--* ethers: NSS Basics.
--* ETIME: Error Codes.
--* ETIMEDOUT: Error Codes.
--* ETOOMANYREFS: Error Codes.
--* ETXTBSY: Error Codes.
--* EUCLEAN: Error Codes.
--* EUNATCH: Error Codes.
--* EUSERS: Error Codes.
--* EWOULDBLOCK: Error Codes.
--* EXDEV: Error Codes.
--* EXFULL: Error Codes.
--* EXIT_FAILURE: Exit Status.
--* EXIT_SUCCESS: Exit Status.
--* EXPR_NEST_MAX: Utility Limits.
--* EXTA: Line Speed.
--* EXTB: Line Speed.
--* F_DUPFD: Duplicating Descriptors.
--* F_GETFD: Descriptor Flags.
--* F_GETFL: Getting File Status Flags.
--* F_GETLK: File Locks.
--* F_GETOWN: Interrupt Input.
--* F_OK: Testing File Access.
--* F_RDLCK: File Locks.
--* F_SETFD: Descriptor Flags.
--* F_SETFL: Getting File Status Flags.
--* F_SETLK: File Locks.
--* F_SETLKW: File Locks.
--* F_SETOWN: Interrupt Input.
--* F_UNLCK: File Locks.
--* F_WRLCK: File Locks.
--* FD_CLOEXEC: Descriptor Flags.
--* FD_SETSIZE: Waiting for I/O.
--* FE_DFL_ENV: Control Functions.
--* FE_DIVBYZERO: Status bit operations.
--* FE_DOWNWARD: Rounding.
--* FE_INEXACT: Status bit operations.
--* FE_INVALID: Status bit operations.
--* FE_NOMASK_ENV: Control Functions.
--* FE_OVERFLOW: Status bit operations.
--* FE_TONEAREST: Rounding.
--* FE_TOWARDZERO: Rounding.
--* FE_UNDERFLOW: Status bit operations.
--* FE_UPWARD: Rounding.
--* FILENAME_MAX: Limits for Files.
--* FLT_DIG: Floating Point Parameters.
--* FLT_EPSILON: Floating Point Parameters.
--* FLT_MANT_DIG: Floating Point Parameters.
--* FLT_MAX: Floating Point Parameters.
--* FLT_MAX_10_EXP: Floating Point Parameters.
--* FLT_MAX_EXP: Floating Point Parameters.
--* FLT_MIN: Floating Point Parameters.
--* FLT_MIN_10_EXP: Floating Point Parameters.
--* FLT_MIN_EXP: Floating Point Parameters.
--* FLT_RADIX: Floating Point Parameters.
--* FLT_ROUNDS: Floating Point Parameters.
--* FLUSHO: Local Modes.
--* FOPEN_MAX: Opening Streams.
--* FP_FAST_FMA: Misc FP Arithmetic.
--* FP_ILOGB0: Exponents and Logarithms.
--* FP_ILOGBNAN: Exponents and Logarithms.
--* FP_INFINITE: Floating Point Classes.
--* FP_NAN: Floating Point Classes.
--* FP_NORMAL: Floating Point Classes.
--* FP_SUBNORMAL: Floating Point Classes.
--* FP_ZERO: Floating Point Classes.
--* FPE_DECOVF_TRAP: Program Error Signals.
--* FPE_FLTDIV_TRAP: Program Error Signals.
--* FPE_FLTOVF_TRAP: Program Error Signals.
--* FPE_FLTUND_TRAP: Program Error Signals.
--* FPE_INTDIV_TRAP: Program Error Signals.
--* FPE_INTOVF_TRAP: Program Error Signals.
--* FPE_SUBRNG_TRAP: Program Error Signals.
--* FRAC_DIGITS: The Elegant and Fast Way.
--* FSETLOCKING_BYCALLER: Streams and Threads.
--* FSETLOCKING_INTERNAL: Streams and Threads.
--* FSETLOCKING_QUERY: Streams and Threads.
--* FSTAB: Mount Information.
--* FSTAB_RO: fstab.
--* FSTAB_RQ: fstab.
--* FSTAB_RW: fstab.
--* FSTAB_SW: fstab.
--* FSTAB_XX: fstab.
--* FTW_CHDIR: Working with Directory Trees.
--* FTW_D: Working with Directory Trees.
--* FTW_DEPTH: Working with Directory Trees.
--* FTW_DNR: Working with Directory Trees.
--* FTW_DP: Working with Directory Trees.
--* FTW_F: Working with Directory Trees.
--* FTW_MOUNT: Working with Directory Trees.
--* FTW_NS: Working with Directory Trees.
--* FTW_PHYS: Working with Directory Trees.
--* FTW_SL: Working with Directory Trees.
--* FTW_SLN: Working with Directory Trees.
--* getdate_err: General Time String Parsing.
--* GLOB_ABORTED: Calling Glob.
--* GLOB_ALTDIRFUNC: More Flags for Globbing.
--* GLOB_APPEND: Flags for Globbing.
--* GLOB_BRACE: More Flags for Globbing.
--* GLOB_DOOFFS: Flags for Globbing.
--* GLOB_ERR: Flags for Globbing.
--* GLOB_MAGCHAR: More Flags for Globbing.
--* GLOB_MARK: Flags for Globbing.
--* GLOB_NOCHECK: Flags for Globbing.
--* GLOB_NOESCAPE: Flags for Globbing.
--* GLOB_NOMAGIC: More Flags for Globbing.
--* GLOB_NOMATCH: Calling Glob.
--* GLOB_NOSORT: Flags for Globbing.
--* GLOB_NOSPACE: Calling Glob.
--* GLOB_ONLYDIR: More Flags for Globbing.
--* GLOB_PERIOD: More Flags for Globbing.
--* GLOB_TILDE: More Flags for Globbing.
--* GLOB_TILDE_CHECK: More Flags for Globbing.
--* group: NSS Basics.
--* GROUPING: The Elegant and Fast Way.
--* h_errno: Host Names.
--* HOST_NOT_FOUND: Host Names.
--* hosts: NSS Basics.
--* HUGE_VAL: Math Error Reporting.
--* HUGE_VALF: Math Error Reporting.
--* HUGE_VALL: Math Error Reporting.
--* HUPCL: Control Modes.
--* I: Complex Numbers.
--* ICANON: Local Modes.
--* ICRNL: Input Modes.
--* IEXTEN: Local Modes.
--* IFNAMSIZ: Interface Naming.
--* IGNBRK: Input Modes.
--* IGNCR: Input Modes.
--* IGNPAR: Input Modes.
--* IMAXBEL: Input Modes.
--* in6addr_any: Host Address Data Type.
--* in6addr_loopback: Host Address Data Type.
--* INADDR_ANY: Host Address Data Type.
--* INADDR_BROADCAST: Host Address Data Type.
--* INADDR_LOOPBACK: Host Address Data Type.
--* INADDR_NONE: Host Address Data Type.
--* INFINITY: Infinity and NaN.
--* INIT_PROCESS <1>: XPG Functions.
--* INIT_PROCESS: Manipulating the Database.
--* INLCR: Input Modes.
--* INPCK: Input Modes.
--* INT_CURR_SYMBOL: The Elegant and Fast Way.
--* INT_FRAC_DIGITS: The Elegant and Fast Way.
--* INT_MAX: Range of Type.
--* INT_MIN: Range of Type.
--* INT_N_CS_PRECEDES: The Elegant and Fast Way.
--* INT_N_SEP_BY_SPACE: The Elegant and Fast Way.
--* INT_N_SIGN_POSN: The Elegant and Fast Way.
--* INT_P_CS_PRECEDES: The Elegant and Fast Way.
--* INT_P_SEP_BY_SPACE: The Elegant and Fast Way.
--* INT_P_SIGN_POSN: The Elegant and Fast Way.
--* IPPORT_RESERVED: Ports.
--* IPPORT_USERRESERVED: Ports.
--* ISIG: Local Modes.
--* ISTRIP: Input Modes.
--* ITIMER_PROF: Setting an Alarm.
--* ITIMER_REAL: Setting an Alarm.
--* ITIMER_VIRTUAL: Setting an Alarm.
--* IXANY: Input Modes.
--* IXOFF: Input Modes.
--* IXON: Input Modes.
--* L_ctermid: Identifying the Terminal.
--* L_cuserid: Who Logged In.
--* L_INCR: File Positioning.
--* L_SET: File Positioning.
--* L_tmpnam: Temporary Files.
--* L_XTND: File Positioning.
--* LANG: Locale Categories.
--* LANGUAGE: Locale Categories.
--* LC_ALL: Locale Categories.
--* LC_COLLATE: Locale Categories.
--* LC_CTYPE: Locale Categories.
--* LC_MESSAGES: Locale Categories.
--* LC_MONETARY: Locale Categories.
--* LC_NUMERIC: Locale Categories.
--* LC_TIME: Locale Categories.
--* LDBL_DIG: Floating Point Parameters.
--* LDBL_EPSILON: Floating Point Parameters.
--* LDBL_MANT_DIG: Floating Point Parameters.
--* LDBL_MAX: Floating Point Parameters.
--* LDBL_MAX_10_EXP: Floating Point Parameters.
--* LDBL_MAX_EXP: Floating Point Parameters.
--* LDBL_MIN: Floating Point Parameters.
--* LDBL_MIN_10_EXP: Floating Point Parameters.
--* LDBL_MIN_EXP: Floating Point Parameters.
--* LINE_MAX: Utility Limits.
--* LINK_MAX: Limits for Files.
--* LIO_NOP: Asynchronous I/O.
--* LIO_READ: Asynchronous I/O.
--* LIO_WRITE: Asynchronous I/O.
--* LOG_ALERT: syslog; vsyslog.
--* LOG_AUTH: syslog; vsyslog.
--* LOG_AUTHPRIV: syslog; vsyslog.
--* LOG_CRIT: syslog; vsyslog.
--* LOG_CRON: syslog; vsyslog.
--* LOG_DAEMON: syslog; vsyslog.
--* LOG_DEBUG: syslog; vsyslog.
--* LOG_EMERG: syslog; vsyslog.
--* LOG_ERR: syslog; vsyslog.
--* LOG_FTP: syslog; vsyslog.
--* LOG_INFO: syslog; vsyslog.
--* LOG_LOCAL0: syslog; vsyslog.
--* LOG_LOCAL1: syslog; vsyslog.
--* LOG_LOCAL2: syslog; vsyslog.
--* LOG_LOCAL3: syslog; vsyslog.
--* LOG_LOCAL4: syslog; vsyslog.
--* LOG_LOCAL5: syslog; vsyslog.
--* LOG_LOCAL6: syslog; vsyslog.
--* LOG_LOCAL7: syslog; vsyslog.
--* LOG_LPR: syslog; vsyslog.
--* LOG_MAIL: syslog; vsyslog.
--* LOG_NEWS: syslog; vsyslog.
--* LOG_NOTICE: syslog; vsyslog.
--* LOG_SYSLOG: syslog; vsyslog.
--* LOG_USER: syslog; vsyslog.
--* LOG_UUCP: syslog; vsyslog.
--* LOG_WARNING: syslog; vsyslog.
--* LOGIN_PROCESS <1>: XPG Functions.
--* LOGIN_PROCESS: Manipulating the Database.
--* LONG_LONG_MAX: Range of Type.
--* LONG_LONG_MIN: Range of Type.
--* LONG_MAX: Range of Type.
--* LONG_MIN: Range of Type.
--* M_1_PI: Mathematical Constants.
--* M_2_PI: Mathematical Constants.
--* M_2_SQRTPI: Mathematical Constants.
--* M_E: Mathematical Constants.
--* M_LN10: Mathematical Constants.
--* M_LN2: Mathematical Constants.
--* M_LOG10E: Mathematical Constants.
--* M_LOG2E: Mathematical Constants.
--* M_PI: Mathematical Constants.
--* M_PI_2: Mathematical Constants.
--* M_PI_4: Mathematical Constants.
--* M_SQRT1_2: Mathematical Constants.
--* M_SQRT2: Mathematical Constants.
--* MAP_ANON: Memory-mapped I/O.
--* MAP_ANONYMOUS: Memory-mapped I/O.
--* MAP_FIXED: Memory-mapped I/O.
--* MAP_PRIVATE: Memory-mapped I/O.
--* MAP_SHARED: Memory-mapped I/O.
--* MAX_CANON: Limits for Files.
--* MAX_INPUT: Limits for Files.
--* MAXNAMLEN: Limits for Files.
--* MAXSYMLINKS: Symbolic Links.
--* MB_CUR_MAX: Selecting the Conversion.
--* MB_LEN_MAX: Selecting the Conversion.
--* MDMBUF: Control Modes.
--* MINSIGSTKSZ: Signal Stack.
--* MM_APPL: Printing Formatted Messages.
--* MM_CONSOLE: Printing Formatted Messages.
--* MM_ERROR: Printing Formatted Messages.
--* MM_FIRM: Printing Formatted Messages.
--* MM_HALT: Printing Formatted Messages.
--* MM_HARD: Printing Formatted Messages.
--* MM_INFO: Printing Formatted Messages.
--* MM_NOSEV: Printing Formatted Messages.
--* MM_NRECOV: Printing Formatted Messages.
--* MM_NULLACT: Printing Formatted Messages.
--* MM_NULLLBL: Printing Formatted Messages.
--* MM_NULLMC: Printing Formatted Messages.
--* MM_NULLSEV: Printing Formatted Messages.
--* MM_NULLTAG: Printing Formatted Messages.
--* MM_NULLTXT: Printing Formatted Messages.
--* MM_OPSYS: Printing Formatted Messages.
--* MM_PRINT: Printing Formatted Messages.
--* MM_RECOVER: Printing Formatted Messages.
--* MM_SOFT: Printing Formatted Messages.
--* MM_UTIL: Printing Formatted Messages.
--* MM_WARNING: Printing Formatted Messages.
--* MNTOPT_DEFAULTS: mtab.
--* MNTOPT_NOAUTO: mtab.
--* MNTOPT_NOSUID: mtab.
--* MNTOPT_RO: mtab.
--* MNTOPT_RW: mtab.
--* MNTOPT_SUID: mtab.
--* MNTTAB: Mount Information.
--* MNTTYPE_IGNORE: mtab.
--* MNTTYPE_NFS: mtab.
--* MNTTYPE_SWAP: mtab.
--* MON_1: The Elegant and Fast Way.
--* MON_10: The Elegant and Fast Way.
--* MON_11: The Elegant and Fast Way.
--* MON_12: The Elegant and Fast Way.
--* MON_2: The Elegant and Fast Way.
--* MON_3: The Elegant and Fast Way.
--* MON_4: The Elegant and Fast Way.
--* MON_5: The Elegant and Fast Way.
--* MON_6: The Elegant and Fast Way.
--* MON_7: The Elegant and Fast Way.
--* MON_8: The Elegant and Fast Way.
--* MON_9: The Elegant and Fast Way.
--* MON_DECIMAL_POINT: The Elegant and Fast Way.
--* MON_GROUPING: The Elegant and Fast Way.
--* MON_THOUSANDS_SEP: The Elegant and Fast Way.
--* MOUNTED: Mount Information.
--* MS_ASYNC: Memory-mapped I/O.
--* MS_SYNC: Memory-mapped I/O.
--* MSG_DONTROUTE: Socket Data Options.
--* MSG_OOB: Socket Data Options.
--* MSG_PEEK: Socket Data Options.
--* N_CS_PRECEDES: The Elegant and Fast Way.
--* N_SEP_BY_SPACE: The Elegant and Fast Way.
--* N_SIGN_POSN: The Elegant and Fast Way.
--* NAME_MAX: Limits for Files.
--* NAN: Infinity and NaN.
--* NCCS: Mode Data Types.
--* NDEBUG: Consistency Checking.
--* NEGATIVE_SIGN: The Elegant and Fast Way.
--* netgroup: NSS Basics.
--* networks: NSS Basics.
--* NEW_TIME <1>: XPG Functions.
--* NEW_TIME: Manipulating the Database.
--* NGROUPS_MAX: General Limits.
--* NL_ARGMAX: Output Conversion Syntax.
--* NO_ADDRESS: Host Names.
--* NO_RECOVERY: Host Names.
--* NOEXPR: The Elegant and Fast Way.
--* NOFLSH: Local Modes.
--* NOKERNINFO: Local Modes.
--* NOSTR: The Elegant and Fast Way.
--* NSIG: Standard Signals.
--* NSS_STATUS_NOTFOUND: NSS Modules Interface.
--* NSS_STATUS_SUCCESS: NSS Modules Interface.
--* NSS_STATUS_TRYAGAIN: NSS Modules Interface.
--* NSS_STATUS_UNAVAIL: NSS Modules Interface.
--* NULL: Null Pointer Constant.
--* O_ACCMODE: Access Modes.
--* O_APPEND: Operating Modes.
--* O_ASYNC: Operating Modes.
--* O_CREAT: Open-time Flags.
--* O_EXCL: Open-time Flags.
--* O_EXEC: Access Modes.
--* O_EXLOCK: Open-time Flags.
--* O_FSYNC: Operating Modes.
--* O_IGNORE_CTTY: Open-time Flags.
--* O_NDELAY: Operating Modes.
--* O_NOATIME: Operating Modes.
--* O_NOCTTY: Open-time Flags.
--* O_NOLINK: Open-time Flags.
--* O_NONBLOCK <1>: Operating Modes.
--* O_NONBLOCK: Open-time Flags.
--* O_NOTRANS: Open-time Flags.
--* O_RDONLY: Access Modes.
--* O_RDWR: Access Modes.
--* O_READ: Access Modes.
--* O_SHLOCK: Open-time Flags.
--* O_SYNC: Operating Modes.
--* O_TRUNC: Open-time Flags.
--* O_WRITE: Access Modes.
--* O_WRONLY: Access Modes.
--* obstack_alloc_failed_handler: Preparing for Obstacks.
--* OLD_TIME <1>: XPG Functions.
--* OLD_TIME: Manipulating the Database.
--* ONLCR: Output Modes.
--* ONOEOT: Output Modes.
--* OPEN_MAX: General Limits.
--* OPOST: Output Modes.
--* optarg: Using Getopt.
--* opterr: Using Getopt.
--* optind: Using Getopt.
--* OPTION_ALIAS: Argp Option Flags.
--* OPTION_ARG_OPTIONAL: Argp Option Flags.
--* OPTION_DOC: Argp Option Flags.
--* OPTION_HIDDEN: Argp Option Flags.
--* OPTION_NO_USAGE: Argp Option Flags.
--* optopt: Using Getopt.
--* OXTABS: Output Modes.
--* P_CS_PRECEDES: The Elegant and Fast Way.
--* P_SEP_BY_SPACE: The Elegant and Fast Way.
--* P_SIGN_POSN: The Elegant and Fast Way.
--* P_tmpdir: Temporary Files.
--* PA_CHAR: Parsing a Template String.
--* PA_DOUBLE: Parsing a Template String.
--* PA_FLAG_LONG: Parsing a Template String.
--* PA_FLAG_LONG_DOUBLE: Parsing a Template String.
--* PA_FLAG_LONG_LONG: Parsing a Template String.
--* PA_FLAG_MASK: Parsing a Template String.
--* PA_FLAG_PTR: Parsing a Template String.
--* PA_FLAG_SHORT: Parsing a Template String.
--* PA_FLOAT: Parsing a Template String.
--* PA_INT: Parsing a Template String.
--* PA_LAST: Parsing a Template String.
--* PA_POINTER: Parsing a Template String.
--* PA_STRING: Parsing a Template String.
--* PARENB: Control Modes.
--* PARMRK: Input Modes.
--* PARODD: Control Modes.
--* passwd: NSS Basics.
--* PATH_MAX: Limits for Files.
--* PENDIN: Local Modes.
--* PF_CCITT: Misc Namespaces.
--* PF_FILE: Local Namespace Details.
--* PF_IMPLINK: Misc Namespaces.
--* PF_INET: Internet Namespace.
--* PF_INET6: Internet Namespace.
--* PF_ISO: Misc Namespaces.
--* PF_LOCAL: Local Namespace Details.
--* PF_NS: Misc Namespaces.
--* PF_ROUTE: Misc Namespaces.
--* PF_UNIX: Local Namespace Details.
--* PI: Mathematical Constants.
--* PIPE_BUF: Limits for Files.
--* PM_STR: The Elegant and Fast Way.
--* POSITIVE_SIGN: The Elegant and Fast Way.
--* PRIO_MAX: Traditional Scheduling Functions.
--* PRIO_MIN: Traditional Scheduling Functions.
--* PRIO_PGRP: Traditional Scheduling Functions.
--* PRIO_PROCESS: Traditional Scheduling Functions.
--* PRIO_USER: Traditional Scheduling Functions.
--* program_invocation_name: Error Messages.
--* program_invocation_short_name: Error Messages.
--* PROT_EXEC: Memory-mapped I/O.
--* PROT_READ: Memory-mapped I/O.
--* PROT_WRITE: Memory-mapped I/O.
--* protocols: NSS Basics.
--* PWD: Working Directory.
--* R_OK: Testing File Access.
--* RADIXCHAR: The Elegant and Fast Way.
--* RAND_MAX: ISO Random.
--* RE_DUP_MAX: General Limits.
--* RLIM_INFINITY: Limits on Resources.
--* RLIM_NLIMITS: Limits on Resources.
--* RLIMIT_AS: Limits on Resources.
--* RLIMIT_CORE: Limits on Resources.
--* RLIMIT_CPU: Limits on Resources.
--* RLIMIT_DATA: Limits on Resources.
--* RLIMIT_FSIZE: Limits on Resources.
--* RLIMIT_NOFILE: Limits on Resources.
--* RLIMIT_OFILE: Limits on Resources.
--* RLIMIT_RSS: Limits on Resources.
--* RLIMIT_STACK: Limits on Resources.
--* rpc: NSS Basics.
--* RUN_LVL <1>: XPG Functions.
--* RUN_LVL: Manipulating the Database.
--* S_IEXEC: Permission Bits.
--* S_IFBLK: Testing File Type.
--* S_IFCHR: Testing File Type.
--* S_IFDIR: Testing File Type.
--* S_IFIFO: Testing File Type.
--* S_IFLNK: Testing File Type.
--* S_IFMT: Testing File Type.
--* S_IFREG: Testing File Type.
--* S_IFSOCK: Testing File Type.
--* S_IREAD: Permission Bits.
--* S_IRGRP: Permission Bits.
--* S_IROTH: Permission Bits.
--* S_IRUSR: Permission Bits.
--* S_IRWXG: Permission Bits.
--* S_IRWXO: Permission Bits.
--* S_IRWXU: Permission Bits.
--* S_ISGID: Permission Bits.
--* S_ISUID: Permission Bits.
--* S_ISVTX: Permission Bits.
--* S_IWGRP: Permission Bits.
--* S_IWOTH: Permission Bits.
--* S_IWRITE: Permission Bits.
--* S_IWUSR: Permission Bits.
--* S_IXGRP: Permission Bits.
--* S_IXOTH: Permission Bits.
--* S_IXUSR: Permission Bits.
--* SA_NOCLDSTOP: Flags for Sigaction.
--* SA_ONSTACK: Flags for Sigaction.
--* SA_RESTART: Flags for Sigaction.
--* SC_SSIZE_MAX: Constants for Sysconf.
--* SCHAR_MAX: Range of Type.
--* SCHAR_MIN: Range of Type.
--* SEEK_CUR: File Positioning.
--* SEEK_END: File Positioning.
--* SEEK_SET: File Positioning.
--* SEM_VALUE_MAX: POSIX Semaphores.
--* services: NSS Basics.
--* shadow: NSS Basics.
--* SHRT_MAX: Range of Type.
--* SHRT_MIN: Range of Type.
--* SIG_BLOCK: Process Signal Mask.
--* SIG_DFL: Basic Signal Handling.
--* SIG_ERR: Basic Signal Handling.
--* SIG_IGN: Basic Signal Handling.
--* SIG_SETMASK: Process Signal Mask.
--* SIG_UNBLOCK: Process Signal Mask.
--* SIGABRT: Program Error Signals.
--* SIGALRM: Alarm Signals.
--* SIGBUS: Program Error Signals.
--* SIGCHLD: Job Control Signals.
--* SIGCLD: Job Control Signals.
--* SIGCONT: Job Control Signals.
--* SIGEMT: Program Error Signals.
--* SIGFPE: Program Error Signals.
--* SIGHUP: Termination Signals.
--* SIGILL: Program Error Signals.
--* SIGINFO: Miscellaneous Signals.
--* SIGINT: Termination Signals.
--* SIGIO: Asynchronous I/O Signals.
--* SIGIOT: Program Error Signals.
--* SIGKILL: Termination Signals.
--* SIGLOST: Operation Error Signals.
--* signgam: Special Functions.
--* SIGPIPE: Operation Error Signals.
--* SIGPOLL: Asynchronous I/O Signals.
--* SIGPROF: Alarm Signals.
--* SIGQUIT: Termination Signals.
--* SIGSEGV: Program Error Signals.
--* SIGSTKSZ: Signal Stack.
--* SIGSTOP: Job Control Signals.
--* SIGSYS: Program Error Signals.
--* SIGTERM: Termination Signals.
--* SIGTRAP: Program Error Signals.
--* SIGTSTP: Job Control Signals.
--* SIGTTIN: Job Control Signals.
--* SIGTTOU: Job Control Signals.
--* SIGURG: Asynchronous I/O Signals.
--* SIGUSR1: Miscellaneous Signals.
--* SIGUSR2: Miscellaneous Signals.
--* SIGVTALRM: Alarm Signals.
--* SIGWINCH: Miscellaneous Signals.
--* SIGXCPU: Operation Error Signals.
--* SIGXFSZ: Operation Error Signals.
--* SOCK_DGRAM: Communication Styles.
--* SOCK_RAW: Communication Styles.
--* SOCK_STREAM: Communication Styles.
--* SOL_SOCKET: Socket-Level Options.
--* SS_DISABLE: Signal Stack.
--* SS_ONSTACK: Signal Stack.
--* SSIZE_MAX: General Limits.
--* stderr: Standard Streams.
--* STDERR_FILENO: Descriptors and Streams.
--* stdin: Standard Streams.
--* STDIN_FILENO: Descriptors and Streams.
--* stdout: Standard Streams.
--* STDOUT_FILENO: Descriptors and Streams.
--* STREAM_MAX: General Limits.
--* SV_INTERRUPT: BSD Handler.
--* SV_ONSTACK: BSD Handler.
--* SV_RESETHAND: BSD Handler.
--* sys_siglist: Signal Messages.
--* T_FMT: The Elegant and Fast Way.
--* T_FMT_AMPM: The Elegant and Fast Way.
--* TCIFLUSH: Line Control.
--* TCIOFF: Line Control.
--* TCIOFLUSH: Line Control.
--* TCION: Line Control.
--* TCOFLUSH: Line Control.
--* TCOOFF: Line Control.
--* TCOON: Line Control.
--* TCSADRAIN: Mode Functions.
--* TCSAFLUSH: Mode Functions.
--* TCSANOW: Mode Functions.
--* TCSASOFT: Mode Functions.
--* THOUSANDS_SEP: The Elegant and Fast Way.
--* THOUSEP: The Elegant and Fast Way.
--* timezone: Time Zone Functions.
--* TMP_MAX: Temporary Files.
--* TOSTOP: Local Modes.
--* TRY_AGAIN: Host Names.
--* tzname: Time Zone Functions.
--* TZNAME_MAX: General Limits.
--* UCHAR_MAX: Range of Type.
--* UINT_MAX: Range of Type.
--* ULONG_LONG_MAX: Range of Type.
--* ULONG_MAX: Range of Type.
--* USER_PROCESS <1>: XPG Functions.
--* USER_PROCESS: Manipulating the Database.
--* USHRT_MAX: Range of Type.
--* VDISCARD: Other Special.
--* VDSUSP: Signal Characters.
--* VEOF: Editing Characters.
--* VEOL: Editing Characters.
--* VEOL2: Editing Characters.
--* VERASE: Editing Characters.
--* VINTR: Signal Characters.
--* VKILL: Editing Characters.
--* VLNEXT: Other Special.
--* VMIN: Noncanonical Input.
--* VQUIT: Signal Characters.
--* VREPRINT: Editing Characters.
--* VSTART: Start/Stop Characters.
--* VSTATUS: Other Special.
--* VSTOP: Start/Stop Characters.
--* VSUSP: Signal Characters.
--* VTIME: Noncanonical Input.
--* VWERASE: Editing Characters.
--* W_OK: Testing File Access.
--* WCHAR_MAX <1>: Range of Type.
--* WCHAR_MAX: Extended Char Intro.
--* WCHAR_MIN: Extended Char Intro.
--* WEOF <1>: EOF and Errors.
--* WEOF: Extended Char Intro.
--* X_OK: Testing File Access.
--* YESEXPR: The Elegant and Fast Way.
--* YESSTR: The Elegant and Fast Way.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-61 glibc-2.3.2-200304020432/manual/libc.info-61
---- glibc-2.3.2/manual/libc.info-61 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-61 Thu Jan 1 01:00:00 1970
-@@ -1,302 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: File Index, Prev: Variable Index, Up: Top
--
--Program and File Index
--**********************
--
--* Menu:
--
--* -lbsd-compat <1>: Process Group Functions.
--* -lbsd-compat: Feature Test Macros.
--* /etc/group: Group Database.
--* /etc/hosts: Host Names.
--* /etc/localtime: TZ Variable.
--* /etc/networks: Networks Database.
--* /etc/passwd: User Database.
--* /etc/protocols: Protocols Database.
--* /etc/services: Services Database.
--* /share/lib/zoneinfo: TZ Variable.
--* argp.h: Argp.
--* argz.h: Argz Functions.
--* arpa/inet.h: Host Address Functions.
--* assert.h: Consistency Checking.
--* bsd-compat <1>: Process Group Functions.
--* bsd-compat: Feature Test Macros.
--* cd: Working Directory.
--* chgrp: File Owner.
--* chown: File Owner.
--* complex.h <1>: Operations on Complex.
--* complex.h <2>: Complex Numbers.
--* complex.h: Mathematics.
--* ctype.h <1>: Case Conversion.
--* ctype.h <2>: Classification of Characters.
--* ctype.h: Character Handling.
--* dirent.h <1>: Random Access Directory.
--* dirent.h <2>: Reading/Closing Directory.
--* dirent.h <3>: Opening a Directory.
--* dirent.h <4>: Directory Entries.
--* dirent.h: Reserved Names.
--* envz.h: Envz Functions.
--* errno.h <1>: Error Codes.
--* errno.h <2>: Checking for Errors.
--* errno.h: Error Reporting.
--* execinfo.h: Backtraces.
--* fcntl.h <1>: Interrupt Input.
--* fcntl.h <2>: File Locks.
--* fcntl.h <3>: File Status Flags.
--* fcntl.h <4>: Descriptor Flags.
--* fcntl.h <5>: Duplicating Descriptors.
--* fcntl.h <6>: Control Operations.
--* fcntl.h <7>: Opening and Closing Files.
--* fcntl.h: Reserved Names.
--* float.h: Floating Point Parameters.
--* fnmatch.h: Wildcard Matching.
--* gcc: ISO C.
--* gconv.h: glibc iconv Implementation.
--* grp.h <1>: Group Data Structure.
--* grp.h <2>: Setting Groups.
--* grp.h: Reserved Names.
--* hostid: Host Identification.
--* hostname: Host Identification.
--* iconv.h: Generic Conversion Interface.
--* kill: Termination Signals.
--* ksh: Wildcard Matching.
--* langinfo.h: The Elegant and Fast Way.
--* limits.h <1>: Width of Type.
--* limits.h <2>: Limits for Files.
--* limits.h <3>: General Limits.
--* limits.h <4>: Selecting the Conversion.
--* limits.h: Reserved Names.
--* locale: Setting the Locale.
--* locale.h <1>: The Lame Way to Locale Data.
--* locale.h: Setting the Locale.
--* localtime: TZ Variable.
--* ls: File Attributes.
--* malloc.h <1>: Statistics of Malloc.
--* malloc.h <2>: Hooks for Malloc.
--* malloc.h: Malloc Tunable Parameters.
--* math.h <1>: Rounding Functions.
--* math.h <2>: Normalization Functions.
--* math.h <3>: Absolute Value.
--* math.h <4>: Floating Point Classes.
--* math.h: Mathematics.
--* mcheck.h: Heap Consistency Checking.
--* mkdir: Creating Directories.
--* netdb.h <1>: Networks Database.
--* netdb.h <2>: Protocols Database.
--* netdb.h <3>: Services Database.
--* netdb.h: Host Names.
--* netinet/in.h <1>: Byte Order.
--* netinet/in.h <2>: Ports.
--* netinet/in.h <3>: Host Address Data Type.
--* netinet/in.h: Internet Address Formats.
--* obstack.h: Creating Obstacks.
--* printf.h <1>: Conversion Specifier Options.
--* printf.h: Registering New Conversions.
--* pwd.h <1>: User Data Structure.
--* pwd.h: Reserved Names.
--* setjmp.h <1>: Non-Local Exits and Signals.
--* setjmp.h: Non-Local Details.
--* sh: Running a Command.
--* signal.h <1>: BSD Signal Handling.
--* signal.h <2>: Checking for Pending Signals.
--* signal.h <3>: Process Signal Mask.
--* signal.h <4>: Signal Sets.
--* signal.h <5>: Signaling Another Process.
--* signal.h <6>: Signaling Yourself.
--* signal.h <7>: Flags for Sigaction.
--* signal.h <8>: Advanced Signal Handling.
--* signal.h <9>: Basic Signal Handling.
--* signal.h <10>: Standard Signals.
--* signal.h: Reserved Names.
--* stdarg.h <1>: Argument Macros.
--* stdarg.h: Receiving Arguments.
--* stddef.h: Important Data Types.
--* stdint.h: Integers.
--* stdio.h <1>: Who Logged In.
--* stdio.h <2>: Identifying the Terminal.
--* stdio.h <3>: Signal Messages.
--* stdio.h <4>: Temporary Files.
--* stdio.h <5>: Deleting Files.
--* stdio.h <6>: Descriptors and Streams.
--* stdio.h <7>: Streams and Cookies.
--* stdio.h <8>: String Streams.
--* stdio.h <9>: Controlling Buffering.
--* stdio.h <10>: Flushing Buffers.
--* stdio.h <11>: Portable Positioning.
--* stdio.h <12>: File Positioning.
--* stdio.h <13>: Formatted Input Functions.
--* stdio.h <14>: Variable Arguments Output.
--* stdio.h <15>: Formatted Output Functions.
--* stdio.h <16>: Block Input/Output.
--* stdio.h <17>: Character Input.
--* stdio.h <18>: Simple Output.
--* stdio.h <19>: Opening Streams.
--* stdio.h <20>: Standard Streams.
--* stdio.h: Streams.
--* stdlib.h <1>: Running a Command.
--* stdlib.h <2>: Aborting a Program.
--* stdlib.h <3>: Exit Status.
--* stdlib.h <4>: Environment Access.
--* stdlib.h <5>: Parsing of Floats.
--* stdlib.h <6>: Parsing of Integers.
--* stdlib.h <7>: Absolute Value.
--* stdlib.h <8>: Integer Division.
--* stdlib.h <9>: SVID Random.
--* stdlib.h <10>: BSD Random.
--* stdlib.h <11>: ISO Random.
--* stdlib.h <12>: Allocation.
--* stdlib.h <13>: Array Sort Function.
--* stdlib.h <14>: Array Search Function.
--* stdlib.h <15>: Non-reentrant Character Conversion.
--* stdlib.h <16>: Selecting the Conversion.
--* stdlib.h <17>: Variable Size Automatic.
--* stdlib.h <18>: Aligned Memory Blocks.
--* stdlib.h <19>: Allocating Cleared Space.
--* stdlib.h <20>: Changing Block Size.
--* stdlib.h <21>: Freeing after Malloc.
--* stdlib.h: Basic Allocation.
--* string.h <1>: Signal Messages.
--* string.h <2>: Trivial Encryption.
--* string.h <3>: Finding Tokens in a String.
--* string.h <4>: Search Functions.
--* string.h <5>: Collation Functions.
--* string.h <6>: String/Array Comparison.
--* string.h <7>: Copying and Concatenation.
--* string.h: String Length.
--* sys/param.h: Host Identification.
--* sys/resource.h <1>: Traditional Scheduling Functions.
--* sys/resource.h <2>: Limits on Resources.
--* sys/resource.h: Resource Usage.
--* sys/socket.h <1>: Socket-Level Options.
--* sys/socket.h <2>: Socket Option Functions.
--* sys/socket.h <3>: Sending Datagrams.
--* sys/socket.h <4>: Socket Data Options.
--* sys/socket.h <5>: Receiving Data.
--* sys/socket.h <6>: Sending Data.
--* sys/socket.h <7>: Socket Pairs.
--* sys/socket.h <8>: Closing a Socket.
--* sys/socket.h <9>: Creating a Socket.
--* sys/socket.h <10>: Internet Namespace.
--* sys/socket.h <11>: Local Namespace Details.
--* sys/socket.h <12>: Reading Address.
--* sys/socket.h <13>: Setting Address.
--* sys/socket.h <14>: Address Formats.
--* sys/socket.h: Communication Styles.
--* sys/stat.h <1>: FIFO Special Files.
--* sys/stat.h <2>: Making Special Files.
--* sys/stat.h <3>: Setting Permissions.
--* sys/stat.h <4>: Permission Bits.
--* sys/stat.h <5>: Testing File Type.
--* sys/stat.h <6>: Attribute Meanings.
--* sys/stat.h <7>: Creating Directories.
--* sys/stat.h: Reserved Names.
--* sys/time.h <1>: Setting an Alarm.
--* sys/time.h <2>: High-Resolution Calendar.
--* sys/time.h: File Times.
--* sys/times.h <1>: Processor Time.
--* sys/times.h: Reserved Names.
--* sys/timex.h: High Accuracy Clock.
--* sys/types.h <1>: Setting Groups.
--* sys/types.h <2>: Setting User ID.
--* sys/types.h <3>: Reading Persona.
--* sys/types.h <4>: Terminal Access Functions.
--* sys/types.h <5>: Process Group Functions.
--* sys/types.h <6>: Process Identification.
--* sys/types.h: Waiting for I/O.
--* sys/un.h: Local Namespace Details.
--* sys/utsname.h: Platform Type.
--* sys/vlimit.h: Limits on Resources.
--* sys/vtimes.h: Resource Usage.
--* sys/wait.h <1>: BSD Wait Functions.
--* sys/wait.h <2>: Process Completion Status.
--* sys/wait.h: Process Completion.
--* termios.h <1>: Terminal Modes.
--* termios.h: Reserved Names.
--* time.h <1>: TZ Variable.
--* time.h <2>: Formatting Calendar Time.
--* time.h <3>: Simple Calendar Time.
--* time.h <4>: CPU Time.
--* time.h: File Times.
--* ulimit.h: Limits on Resources.
--* umask: Setting Permissions.
--* unistd.h <1>: Options for Files.
--* unistd.h <2>: System Options.
--* unistd.h <3>: Host Identification.
--* unistd.h <4>: Who Logged In.
--* unistd.h <5>: Setting Groups.
--* unistd.h <6>: Setting User ID.
--* unistd.h <7>: Reading Persona.
--* unistd.h <8>: Terminal Access Functions.
--* unistd.h <9>: Process Group Functions.
--* unistd.h <10>: Executing a File.
--* unistd.h <11>: Creating a Process.
--* unistd.h <12>: Process Identification.
--* unistd.h <13>: Termination Internals.
--* unistd.h <14>: Using Getopt.
--* unistd.h <15>: Setting an Alarm.
--* unistd.h <16>: Is It a Terminal.
--* unistd.h <17>: Creating a Pipe.
--* unistd.h <18>: Testing File Access.
--* unistd.h <19>: File Owner.
--* unistd.h <20>: Deleting Files.
--* unistd.h <21>: Symbolic Links.
--* unistd.h <22>: Hard Links.
--* unistd.h <23>: Working Directory.
--* unistd.h <24>: Duplicating Descriptors.
--* unistd.h <25>: Descriptors and Streams.
--* unistd.h <26>: I/O Primitives.
--* unistd.h: Opening and Closing Files.
--* utime.h: File Times.
--* utmp.h <1>: Logging In and Out.
--* utmp.h: Manipulating the Database.
--* utmpx.h: XPG Functions.
--* varargs.h: Old Varargs.
--* wchar.h <1>: Parsing of Integers.
--* wchar.h <2>: Character Input.
--* wchar.h <3>: Simple Output.
--* wchar.h <4>: Converting Strings.
--* wchar.h <5>: Converting a Character.
--* wchar.h <6>: Keeping the state.
--* wchar.h <7>: Extended Char Intro.
--* wchar.h <8>: Collation Functions.
--* wchar.h: Copying and Concatenation.
--* wctype.h <1>: Wide Character Case Conversion.
--* wctype.h: Classification of Wide Characters.
--* zoneinfo: TZ Variable.
--
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-7 glibc-2.3.2-200304020432/manual/libc.info-7
---- glibc-2.3.2/manual/libc.info-7 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-7 Thu Jan 1 01:00:00 1970
-@@ -1,1131 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Copying and Concatenation, Next: String/Array Comparison, Prev: String Length, Up: String and Array Utilities
--
--Copying and Concatenation
--=========================
--
-- You can use the functions described in this section to copy the
--contents of strings and arrays, or to append the contents of one string
--to another. The `str' and `mem' functions are declared in the header
--file `string.h' while the `wstr' and `wmem' functions are declared in
--the file `wchar.h'.
--
-- A helpful way to remember the ordering of the arguments to the
--functions in this section is that it corresponds to an assignment
--expression, with the destination array specified to the left of the
--source array. All of these functions return the address of the
--destination array.
--
-- Most of these functions do not work properly if the source and
--destination arrays overlap. For example, if the beginning of the
--destination array overlaps the end of the source array, the original
--contents of that part of the source array may get overwritten before it
--is copied. Even worse, in the case of the string functions, the null
--character marking the end of the string may be lost, and the copy
--function might get stuck in a loop trashing all the memory allocated to
--your program.
--
-- All functions that have problems copying between overlapping arrays
--are explicitly identified in this manual. In addition to functions in
--this section, there are a few others like `sprintf' (*note Formatted
--Output Functions::) and `scanf' (*note Formatted Input Functions::).
--
-- - Function: void * memcpy (void *restrict TO, const void *restrict
-- FROM, size_t SIZE)
-- The `memcpy' function copies SIZE bytes from the object beginning
-- at FROM into the object beginning at TO. The behavior of this
-- function is undefined if the two arrays TO and FROM overlap; use
-- `memmove' instead if overlapping is possible.
--
-- The value returned by `memcpy' is the value of TO.
--
-- Here is an example of how you might use `memcpy' to copy the
-- contents of an array:
--
-- struct foo *oldarray, *newarray;
-- int arraysize;
-- ...
-- memcpy (new, old, arraysize * sizeof (struct foo));
--
-- - Function: wchar_t * wmemcpy (wchar_t *restrict WTO, const wchar_t
-- *restruct WFROM, size_t SIZE)
-- The `wmemcpy' function copies SIZE wide characters from the object
-- beginning at WFROM into the object beginning at WTO. The behavior
-- of this function is undefined if the two arrays WTO and WFROM
-- overlap; use `wmemmove' instead if overlapping is possible.
--
-- The following is a possible implementation of `wmemcpy' but there
-- are more optimizations possible.
--
-- wchar_t *
-- wmemcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-- size_t size)
-- {
-- return (wchar_t *) memcpy (wto, wfrom, size * sizeof (wchar_t));
-- }
--
-- The value returned by `wmemcpy' is the value of WTO.
--
-- This function was introduced in Amendment 1 to ISO C90.
--
-- - Function: void * mempcpy (void *restrict TO, const void *restrict
-- FROM, size_t SIZE)
-- The `mempcpy' function is nearly identical to the `memcpy'
-- function. It copies SIZE bytes from the object beginning at
-- `from' into the object pointed to by TO. But instead of returning
-- the value of TO it returns a pointer to the byte following the
-- last written byte in the object beginning at TO. I.e., the value
-- is `((void *) ((char *) TO + SIZE))'.
--
-- This function is useful in situations where a number of objects
-- shall be copied to consecutive memory positions.
--
-- void *
-- combine (void *o1, size_t s1, void *o2, size_t s2)
-- {
-- void *result = malloc (s1 + s2);
-- if (result != NULL)
-- mempcpy (mempcpy (result, o1, s1), o2, s2);
-- return result;
-- }
--
-- This function is a GNU extension.
--
-- - Function: wchar_t * wmempcpy (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM, size_t SIZE)
-- The `wmempcpy' function is nearly identical to the `wmemcpy'
-- function. It copies SIZE wide characters from the object
-- beginning at `wfrom' into the object pointed to by WTO. But
-- instead of returning the value of WTO it returns a pointer to the
-- wide character following the last written wide character in the
-- object beginning at WTO. I.e., the value is `WTO + SIZE'.
--
-- This function is useful in situations where a number of objects
-- shall be copied to consecutive memory positions.
--
-- The following is a possible implementation of `wmemcpy' but there
-- are more optimizations possible.
--
-- wchar_t *
-- wmempcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-- size_t size)
-- {
-- return (wchar_t *) mempcpy (wto, wfrom, size * sizeof (wchar_t));
-- }
--
-- This function is a GNU extension.
--
-- - Function: void * memmove (void *TO, const void *FROM, size_t SIZE)
-- `memmove' copies the SIZE bytes at FROM into the SIZE bytes at TO,
-- even if those two blocks of space overlap. In the case of
-- overlap, `memmove' is careful to copy the original values of the
-- bytes in the block at FROM, including those bytes which also
-- belong to the block at TO.
--
-- The value returned by `memmove' is the value of TO.
--
-- - Function: wchar_t * wmemmove (wchar *WTO, const wchar_t *WFROM,
-- size_t SIZE)
-- `wmemmove' copies the SIZE wide characters at WFROM into the SIZE
-- wide characters at WTO, even if those two blocks of space overlap.
-- In the case of overlap, `memmove' is careful to copy the original
-- values of the wide characters in the block at WFROM, including
-- those wide characters which also belong to the block at WTO.
--
-- The following is a possible implementation of `wmemcpy' but there
-- are more optimizations possible.
--
-- wchar_t *
-- wmempcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-- size_t size)
-- {
-- return (wchar_t *) mempcpy (wto, wfrom, size * sizeof (wchar_t));
-- }
--
-- The value returned by `wmemmove' is the value of WTO.
--
-- This function is a GNU extension.
--
-- - Function: void * memccpy (void *restrict TO, const void *restrict
-- FROM, int C, size_t SIZE)
-- This function copies no more than SIZE bytes from FROM to TO,
-- stopping if a byte matching C is found. The return value is a
-- pointer into TO one byte past where C was copied, or a null
-- pointer if no byte matching C appeared in the first SIZE bytes of
-- FROM.
--
-- - Function: void * memset (void *BLOCK, int C, size_t SIZE)
-- This function copies the value of C (converted to an `unsigned
-- char') into each of the first SIZE bytes of the object beginning
-- at BLOCK. It returns the value of BLOCK.
--
-- - Function: wchar_t * wmemset (wchar_t *BLOCK, wchar_t WC, size_t SIZE)
-- This function copies the value of WC into each of the first SIZE
-- wide characters of the object beginning at BLOCK. It returns the
-- value of BLOCK.
--
-- - Function: char * strcpy (char *restrict TO, const char *restrict
-- FROM)
-- This copies characters from the string FROM (up to and including
-- the terminating null character) into the string TO. Like
-- `memcpy', this function has undefined results if the strings
-- overlap. The return value is the value of TO.
--
-- - Function: wchar_t * wcscpy (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM)
-- This copies wide characters from the string WFROM (up to and
-- including the terminating null wide character) into the string
-- WTO. Like `wmemcpy', this function has undefined results if the
-- strings overlap. The return value is the value of WTO.
--
-- - Function: char * strncpy (char *restrict TO, const char *restrict
-- FROM, size_t SIZE)
-- This function is similar to `strcpy' but always copies exactly
-- SIZE characters into TO.
--
-- If the length of FROM is more than SIZE, then `strncpy' copies
-- just the first SIZE characters. Note that in this case there is
-- no null terminator written into TO.
--
-- If the length of FROM is less than SIZE, then `strncpy' copies all
-- of FROM, followed by enough null characters to add up to SIZE
-- characters in all. This behavior is rarely useful, but it is
-- specified by the ISO C standard.
--
-- The behavior of `strncpy' is undefined if the strings overlap.
--
-- Using `strncpy' as opposed to `strcpy' is a way to avoid bugs
-- relating to writing past the end of the allocated space for TO.
-- However, it can also make your program much slower in one common
-- case: copying a string which is probably small into a potentially
-- large buffer. In this case, SIZE may be large, and when it is,
-- `strncpy' will waste a considerable amount of time copying null
-- characters.
--
-- - Function: wchar_t * wcsncpy (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM, size_t SIZE)
-- This function is similar to `wcscpy' but always copies exactly
-- SIZE wide characters into WTO.
--
-- If the length of WFROM is more than SIZE, then `wcsncpy' copies
-- just the first SIZE wide characters. Note that in this case there
-- is no null terminator written into WTO.
--
-- If the length of WFROM is less than SIZE, then `wcsncpy' copies
-- all of WFROM, followed by enough null wide characters to add up to
-- SIZE wide characters in all. This behavior is rarely useful, but
-- it is specified by the ISO C standard.
--
-- The behavior of `wcsncpy' is undefined if the strings overlap.
--
-- Using `wcsncpy' as opposed to `wcscpy' is a way to avoid bugs
-- relating to writing past the end of the allocated space for WTO.
-- However, it can also make your program much slower in one common
-- case: copying a string which is probably small into a potentially
-- large buffer. In this case, SIZE may be large, and when it is,
-- `wcsncpy' will waste a considerable amount of time copying null
-- wide characters.
--
-- - Function: char * strdup (const char *S)
-- This function copies the null-terminated string S into a newly
-- allocated string. The string is allocated using `malloc'; see
-- *Note Unconstrained Allocation::. If `malloc' cannot allocate
-- space for the new string, `strdup' returns a null pointer.
-- Otherwise it returns a pointer to the new string.
--
-- - Function: wchar_t * wcsdup (const wchar_t *WS)
-- This function copies the null-terminated wide character string WS
-- into a newly allocated string. The string is allocated using
-- `malloc'; see *Note Unconstrained Allocation::. If `malloc'
-- cannot allocate space for the new string, `wcsdup' returns a null
-- pointer. Otherwise it returns a pointer to the new wide character
-- string.
--
-- This function is a GNU extension.
--
-- - Function: char * strndup (const char *S, size_t SIZE)
-- This function is similar to `strdup' but always copies at most
-- SIZE characters into the newly allocated string.
--
-- If the length of S is more than SIZE, then `strndup' copies just
-- the first SIZE characters and adds a closing null terminator.
-- Otherwise all characters are copied and the string is terminated.
--
-- This function is different to `strncpy' in that it always
-- terminates the destination string.
--
-- `strndup' is a GNU extension.
--
-- - Function: char * stpcpy (char *restrict TO, const char *restrict
-- FROM)
-- This function is like `strcpy', except that it returns a pointer to
-- the end of the string TO (that is, the address of the terminating
-- null character `to + strlen (from)') rather than the beginning.
--
-- For example, this program uses `stpcpy' to concatenate `foo' and
-- `bar' to produce `foobar', which it then prints.
--
-- #include <string.h>
-- #include <stdio.h>
--
-- int
-- main (void)
-- {
-- char buffer[10];
-- char *to = buffer;
-- to = stpcpy (to, "foo");
-- to = stpcpy (to, "bar");
-- puts (buffer);
-- return 0;
-- }
--
-- This function is not part of the ISO or POSIX standards, and is not
-- customary on Unix systems, but we did not invent it either.
-- Perhaps it comes from MS-DOG.
--
-- Its behavior is undefined if the strings overlap. The function is
-- declared in `string.h'.
--
-- - Function: wchar_t * wcpcpy (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM)
-- This function is like `wcscpy', except that it returns a pointer to
-- the end of the string WTO (that is, the address of the terminating
-- null character `wto + strlen (wfrom)') rather than the beginning.
--
-- This function is not part of ISO or POSIX but was found useful
-- while developing the GNU C Library itself.
--
-- The behavior of `wcpcpy' is undefined if the strings overlap.
--
-- `wcpcpy' is a GNU extension and is declared in `wchar.h'.
--
-- - Function: char * stpncpy (char *restrict TO, const char *restrict
-- FROM, size_t SIZE)
-- This function is similar to `stpcpy' but copies always exactly
-- SIZE characters into TO.
--
-- If the length of FROM is more then SIZE, then `stpncpy' copies
-- just the first SIZE characters and returns a pointer to the
-- character directly following the one which was copied last. Note
-- that in this case there is no null terminator written into TO.
--
-- If the length of FROM is less than SIZE, then `stpncpy' copies all
-- of FROM, followed by enough null characters to add up to SIZE
-- characters in all. This behavior is rarely useful, but it is
-- implemented to be useful in contexts where this behavior of the
-- `strncpy' is used. `stpncpy' returns a pointer to the _first_
-- written null character.
--
-- This function is not part of ISO or POSIX but was found useful
-- while developing the GNU C Library itself.
--
-- Its behavior is undefined if the strings overlap. The function is
-- declared in `string.h'.
--
-- - Function: wchar_t * wcpncpy (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM, size_t SIZE)
-- This function is similar to `wcpcpy' but copies always exactly
-- WSIZE characters into WTO.
--
-- If the length of WFROM is more then SIZE, then `wcpncpy' copies
-- just the first SIZE wide characters and returns a pointer to the
-- wide character directly following the one which was copied last.
-- Note that in this case there is no null terminator written into
-- WTO.
--
-- If the length of WFROM is less than SIZE, then `wcpncpy' copies
-- all of WFROM, followed by enough null characters to add up to SIZE
-- characters in all. This behavior is rarely useful, but it is
-- implemented to be useful in contexts where this behavior of the
-- `wcsncpy' is used. `wcpncpy' returns a pointer to the _first_
-- written null character.
--
-- This function is not part of ISO or POSIX but was found useful
-- while developing the GNU C Library itself.
--
-- Its behavior is undefined if the strings overlap.
--
-- `wcpncpy' is a GNU extension and is declared in `wchar.h'.
--
-- - Macro: char * strdupa (const char *S)
-- This macro is similar to `strdup' but allocates the new string
-- using `alloca' instead of `malloc' (*note Variable Size
-- Automatic::). This means of course the returned string has the
-- same limitations as any block of memory allocated using `alloca'.
--
-- For obvious reasons `strdupa' is implemented only as a macro; you
-- cannot get the address of this function. Despite this limitation
-- it is a useful function. The following code shows a situation
-- where using `malloc' would be a lot more expensive.
--
-- #include <paths.h>
-- #include <string.h>
-- #include <stdio.h>
--
-- const char path[] = _PATH_STDPATH;
--
-- int
-- main (void)
-- {
-- char *wr_path = strdupa (path);
-- char *cp = strtok (wr_path, ":");
--
-- while (cp != NULL)
-- {
-- puts (cp);
-- cp = strtok (NULL, ":");
-- }
-- return 0;
-- }
--
-- Please note that calling `strtok' using PATH directly is invalid.
-- It is also not allowed to call `strdupa' in the argument list of
-- `strtok' since `strdupa' uses `alloca' (*note Variable Size
-- Automatic::) can interfere with the parameter passing.
--
-- This function is only available if GNU CC is used.
--
-- - Macro: char * strndupa (const char *S, size_t SIZE)
-- This function is similar to `strndup' but like `strdupa' it
-- allocates the new string using `alloca' *note Variable Size
-- Automatic::. The same advantages and limitations of `strdupa' are
-- valid for `strndupa', too.
--
-- This function is implemented only as a macro, just like `strdupa'.
-- Just as `strdupa' this macro also must not be used inside the
-- parameter list in a function call.
--
-- `strndupa' is only available if GNU CC is used.
--
-- - Function: char * strcat (char *restrict TO, const char *restrict
-- FROM)
-- The `strcat' function is similar to `strcpy', except that the
-- characters from FROM are concatenated or appended to the end of
-- TO, instead of overwriting it. That is, the first character from
-- FROM overwrites the null character marking the end of TO.
--
-- An equivalent definition for `strcat' would be:
--
-- char *
-- strcat (char *restrict to, const char *restrict from)
-- {
-- strcpy (to + strlen (to), from);
-- return to;
-- }
--
-- This function has undefined results if the strings overlap.
--
-- - Function: wchar_t * wcscat (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM)
-- The `wcscat' function is similar to `wcscpy', except that the
-- characters from WFROM are concatenated or appended to the end of
-- WTO, instead of overwriting it. That is, the first character from
-- WFROM overwrites the null character marking the end of WTO.
--
-- An equivalent definition for `wcscat' would be:
--
-- wchar_t *
-- wcscat (wchar_t *wto, const wchar_t *wfrom)
-- {
-- wcscpy (wto + wcslen (wto), wfrom);
-- return wto;
-- }
--
-- This function has undefined results if the strings overlap.
--
-- Programmers using the `strcat' or `wcscat' function (or the
--following `strncat' or `wcsncar' functions for that matter) can easily
--be recognized as lazy and reckless. In almost all situations the
--lengths of the participating strings are known (it better should be
--since how can one otherwise ensure the allocated size of the buffer is
--sufficient?) Or at least, one could know them if one keeps track of the
--results of the various function calls. But then it is very inefficient
--to use `strcat'/`wcscat'. A lot of time is wasted finding the end of
--the destination string so that the actual copying can start. This is a
--common example:
--
-- /* This function concatenates arbitrarily many strings. The last
-- parameter must be `NULL'. */
-- char *
-- concat (const char *str, ...)
-- {
-- va_list ap, ap2;
-- size_t total = 1;
-- const char *s;
-- char *result;
--
-- va_start (ap, str);
-- /* Actually `va_copy', but this is the name more gcc versions
-- understand. */
-- __va_copy (ap2, ap);
--
-- /* Determine how much space we need. */
-- for (s = str; s != NULL; s = va_arg (ap, const char *))
-- total += strlen (s);
--
-- va_end (ap);
--
-- result = (char *) malloc (total);
-- if (result != NULL)
-- {
-- result[0] = '\0';
--
-- /* Copy the strings. */
-- for (s = str; s != NULL; s = va_arg (ap2, const char *))
-- strcat (result, s);
-- }
--
-- va_end (ap2);
--
-- return result;
-- }
--
-- This looks quite simple, especially the second loop where the strings
--are actually copied. But these innocent lines hide a major performance
--penalty. Just imagine that ten strings of 100 bytes each have to be
--concatenated. For the second string we search the already stored 100
--bytes for the end of the string so that we can append the next string.
--For all strings in total the comparisons necessary to find the end of
--the intermediate results sums up to 5500! If we combine the copying
--with the search for the allocation we can write this function more
--efficient:
--
-- char *
-- concat (const char *str, ...)
-- {
-- va_list ap;
-- size_t allocated = 100;
-- char *result = (char *) malloc (allocated);
-- char *wp;
--
-- if (allocated != NULL)
-- {
-- char *newp;
--
-- va_start (ap, atr);
--
-- wp = result;
-- for (s = str; s != NULL; s = va_arg (ap, const char *))
-- {
-- size_t len = strlen (s);
--
-- /* Resize the allocated memory if necessary. */
-- if (wp + len + 1 > result + allocated)
-- {
-- allocated = (allocated + len) * 2;
-- newp = (char *) realloc (result, allocated);
-- if (newp == NULL)
-- {
-- free (result);
-- return NULL;
-- }
-- wp = newp + (wp - result);
-- result = newp;
-- }
--
-- wp = mempcpy (wp, s, len);
-- }
--
-- /* Terminate the result string. */
-- *wp++ = '\0';
--
-- /* Resize memory to the optimal size. */
-- newp = realloc (result, wp - result);
-- if (newp != NULL)
-- result = newp;
--
-- va_end (ap);
-- }
--
-- return result;
-- }
--
-- With a bit more knowledge about the input strings one could fine-tune
--the memory allocation. The difference we are pointing to here is that
--we don't use `strcat' anymore. We always keep track of the length of
--the current intermediate result so we can safe us the search for the
--end of the string and use `mempcpy'. Please note that we also don't
--use `stpcpy' which might seem more natural since we handle with
--strings. But this is not necessary since we already know the length of
--the string and therefore can use the faster memory copying function.
--The example would work for wide characters the same way.
--
-- Whenever a programmer feels the need to use `strcat' she or he
--should think twice and look through the program whether the code cannot
--be rewritten to take advantage of already calculated results. Again: it
--is almost always unnecessary to use `strcat'.
--
-- - Function: char * strncat (char *restrict TO, const char *restrict
-- FROM, size_t SIZE)
-- This function is like `strcat' except that not more than SIZE
-- characters from FROM are appended to the end of TO. A single null
-- character is also always appended to TO, so the total allocated
-- size of TO must be at least `SIZE + 1' bytes longer than its
-- initial length.
--
-- The `strncat' function could be implemented like this:
--
-- char *
-- strncat (char *to, const char *from, size_t size)
-- {
-- to[strlen (to) + size] = '\0';
-- strncpy (to + strlen (to), from, size);
-- return to;
-- }
--
-- The behavior of `strncat' is undefined if the strings overlap.
--
-- - Function: wchar_t * wcsncat (wchar_t *restrict WTO, const wchar_t
-- *restrict WFROM, size_t SIZE)
-- This function is like `wcscat' except that not more than SIZE
-- characters from FROM are appended to the end of TO. A single null
-- character is also always appended to TO, so the total allocated
-- size of TO must be at least `SIZE + 1' bytes longer than its
-- initial length.
--
-- The `wcsncat' function could be implemented like this:
--
-- wchar_t *
-- wcsncat (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-- size_t size)
-- {
-- wto[wcslen (to) + size] = L'\0';
-- wcsncpy (wto + wcslen (wto), wfrom, size);
-- return wto;
-- }
--
-- The behavior of `wcsncat' is undefined if the strings overlap.
--
-- Here is an example showing the use of `strncpy' and `strncat' (the
--wide character version is equivalent). Notice how, in the call to
--`strncat', the SIZE parameter is computed to avoid overflowing the
--character array `buffer'.
--
-- #include <string.h>
-- #include <stdio.h>
--
-- #define SIZE 10
--
-- static char buffer[SIZE];
--
-- main ()
-- {
-- strncpy (buffer, "hello", SIZE);
-- puts (buffer);
-- strncat (buffer, ", world", SIZE - strlen (buffer) - 1);
-- puts (buffer);
-- }
--
--The output produced by this program looks like:
--
-- hello
-- hello, wo
--
-- - Function: void bcopy (const void *FROM, void *TO, size_t SIZE)
-- This is a partially obsolete alternative for `memmove', derived
-- from BSD. Note that it is not quite equivalent to `memmove',
-- because the arguments are not in the same order and there is no
-- return value.
--
-- - Function: void bzero (void *BLOCK, size_t SIZE)
-- This is a partially obsolete alternative for `memset', derived from
-- BSD. Note that it is not as general as `memset', because the only
-- value it can store is zero.
--
--
--File: libc.info, Node: String/Array Comparison, Next: Collation Functions, Prev: Copying and Concatenation, Up: String and Array Utilities
--
--String/Array Comparison
--=======================
--
-- You can use the functions in this section to perform comparisons on
--the contents of strings and arrays. As well as checking for equality,
--these functions can also be used as the ordering functions for sorting
--operations. *Note Searching and Sorting::, for an example of this.
--
-- Unlike most comparison operations in C, the string comparison
--functions return a nonzero value if the strings are _not_ equivalent
--rather than if they are. The sign of the value indicates the relative
--ordering of the first characters in the strings that are not
--equivalent: a negative value indicates that the first string is "less"
--than the second, while a positive value indicates that the first string
--is "greater".
--
-- The most common use of these functions is to check only for equality.
--This is canonically done with an expression like `! strcmp (s1, s2)'.
--
-- All of these functions are declared in the header file `string.h'.
--
-- - Function: int memcmp (const void *A1, const void *A2, size_t SIZE)
-- The function `memcmp' compares the SIZE bytes of memory beginning
-- at A1 against the SIZE bytes of memory beginning at A2. The value
-- returned has the same sign as the difference between the first
-- differing pair of bytes (interpreted as `unsigned char' objects,
-- then promoted to `int').
--
-- If the contents of the two blocks are equal, `memcmp' returns `0'.
--
-- - Function: int wmemcmp (const wchar_t *A1, const wchar_t *A2, size_t
-- SIZE)
-- The function `wmemcmp' compares the SIZE wide characters beginning
-- at A1 against the SIZE wide characters beginning at A2. The value
-- returned is smaller than or larger than zero depending on whether
-- the first differing wide character is A1 is smaller or larger than
-- the corresponding character in A2.
--
-- If the contents of the two blocks are equal, `wmemcmp' returns `0'.
--
-- On arbitrary arrays, the `memcmp' function is mostly useful for
--testing equality. It usually isn't meaningful to do byte-wise ordering
--comparisons on arrays of things other than bytes. For example, a
--byte-wise comparison on the bytes that make up floating-point numbers
--isn't likely to tell you anything about the relationship between the
--values of the floating-point numbers.
--
-- `wmemcmp' is really only useful to compare arrays of type `wchar_t'
--since the function looks at `sizeof (wchar_t)' bytes at a time and this
--number of bytes is system dependent.
--
-- You should also be careful about using `memcmp' to compare objects
--that can contain "holes", such as the padding inserted into structure
--objects to enforce alignment requirements, extra space at the end of
--unions, and extra characters at the ends of strings whose length is less
--than their allocated size. The contents of these "holes" are
--indeterminate and may cause strange behavior when performing byte-wise
--comparisons. For more predictable results, perform an explicit
--component-wise comparison.
--
-- For example, given a structure type definition like:
--
-- struct foo
-- {
-- unsigned char tag;
-- union
-- {
-- double f;
-- long i;
-- char *p;
-- } value;
-- };
--
--you are better off writing a specialized comparison function to compare
--`struct foo' objects instead of comparing them with `memcmp'.
--
-- - Function: int strcmp (const char *S1, const char *S2)
-- The `strcmp' function compares the string S1 against S2, returning
-- a value that has the same sign as the difference between the first
-- differing pair of characters (interpreted as `unsigned char'
-- objects, then promoted to `int').
--
-- If the two strings are equal, `strcmp' returns `0'.
--
-- A consequence of the ordering used by `strcmp' is that if S1 is an
-- initial substring of S2, then S1 is considered to be "less than"
-- S2.
--
-- `strcmp' does not take sorting conventions of the language the
-- strings are written in into account. To get that one has to use
-- `strcoll'.
--
-- - Function: int wcscmp (const wchar_t *WS1, const wchar_t *WS2)
-- The `wcscmp' function compares the wide character string WS1
-- against WS2. The value returned is smaller than or larger than
-- zero depending on whether the first differing wide character is
-- WS1 is smaller or larger than the corresponding character in WS2.
--
-- If the two strings are equal, `wcscmp' returns `0'.
--
-- A consequence of the ordering used by `wcscmp' is that if WS1 is
-- an initial substring of WS2, then WS1 is considered to be "less
-- than" WS2.
--
-- `wcscmp' does not take sorting conventions of the language the
-- strings are written in into account. To get that one has to use
-- `wcscoll'.
--
-- - Function: int strcasecmp (const char *S1, const char *S2)
-- This function is like `strcmp', except that differences in case are
-- ignored. How uppercase and lowercase characters are related is
-- determined by the currently selected locale. In the standard `"C"'
-- locale the characters A" and a" do not match but in a locale which
-- regards these characters as parts of the alphabet they do match.
--
-- `strcasecmp' is derived from BSD.
--
-- - Function: int wcscasecmp (const wchar_t *WS1, const wchar_T *WS2)
-- This function is like `wcscmp', except that differences in case are
-- ignored. How uppercase and lowercase characters are related is
-- determined by the currently selected locale. In the standard `"C"'
-- locale the characters A" and a" do not match but in a locale which
-- regards these characters as parts of the alphabet they do match.
--
-- `wcscasecmp' is a GNU extension.
--
-- - Function: int strncmp (const char *S1, const char *S2, size_t SIZE)
-- This function is the similar to `strcmp', except that no more than
-- SIZE wide characters are compared. In other words, if the two
-- strings are the same in their first SIZE wide characters, the
-- return value is zero.
--
-- - Function: int wcsncmp (const wchar_t *WS1, const wchar_t *WS2,
-- size_t SIZE)
-- This function is the similar to `wcscmp', except that no more than
-- SIZE wide characters are compared. In other words, if the two
-- strings are the same in their first SIZE wide characters, the
-- return value is zero.
--
-- - Function: int strncasecmp (const char *S1, const char *S2, size_t N)
-- This function is like `strncmp', except that differences in case
-- are ignored. Like `strcasecmp', it is locale dependent how
-- uppercase and lowercase characters are related.
--
-- `strncasecmp' is a GNU extension.
--
-- - Function: int wcsncasecmp (const wchar_t *WS1, const wchar_t *S2,
-- size_t N)
-- This function is like `wcsncmp', except that differences in case
-- are ignored. Like `wcscasecmp', it is locale dependent how
-- uppercase and lowercase characters are related.
--
-- `wcsncasecmp' is a GNU extension.
--
-- Here are some examples showing the use of `strcmp' and `strncmp'
--(equivalent examples can be constructed for the wide character
--functions). These examples assume the use of the ASCII character set.
--(If some other character set--say, EBCDIC--is used instead, then the
--glyphs are associated with different numeric codes, and the return
--values and ordering may differ.)
--
-- strcmp ("hello", "hello")
-- => 0 /* These two strings are the same. */
-- strcmp ("hello", "Hello")
-- => 32 /* Comparisons are case-sensitive. */
-- strcmp ("hello", "world")
-- => -15 /* The character `'h'' comes before `'w''. */
-- strcmp ("hello", "hello, world")
-- => -44 /* Comparing a null character against a comma. */
-- strncmp ("hello", "hello, world", 5)
-- => 0 /* The initial 5 characters are the same. */
-- strncmp ("hello, world", "hello, stupid world!!!", 5)
-- => 0 /* The initial 5 characters are the same. */
--
-- - Function: int strverscmp (const char *S1, const char *S2)
-- The `strverscmp' function compares the string S1 against S2,
-- considering them as holding indices/version numbers. Return value
-- follows the same conventions as found in the `strverscmp'
-- function. In fact, if S1 and S2 contain no digits, `strverscmp'
-- behaves like `strcmp'.
--
-- Basically, we compare strings normally (character by character),
-- until we find a digit in each string - then we enter a special
-- comparison mode, where each sequence of digits is taken as a
-- whole. If we reach the end of these two parts without noticing a
-- difference, we return to the standard comparison mode. There are
-- two types of numeric parts: "integral" and "fractional" (those
-- begin with a '0'). The types of the numeric parts affect the way
-- we sort them:
--
-- * integral/integral: we compare values as you would expect.
--
-- * fractional/integral: the fractional part is less than the
-- integral one. Again, no surprise.
--
-- * fractional/fractional: the things become a bit more complex.
-- If the common prefix contains only leading zeroes, the
-- longest part is less than the other one; else the comparison
-- behaves normally.
--
-- strverscmp ("no digit", "no digit")
-- => 0 /* same behavior as strcmp. */
-- strverscmp ("item#99", "item#100")
-- => <0 /* same prefix, but 99 < 100. */
-- strverscmp ("alpha1", "alpha001")
-- => >0 /* fractional part inferior to integral one. */
-- strverscmp ("part1_f012", "part1_f01")
-- => >0 /* two fractional parts. */
-- strverscmp ("foo.009", "foo.0")
-- => <0 /* idem, but with leading zeroes only. */
--
-- This function is especially useful when dealing with filename
-- sorting, because filenames frequently hold indices/version numbers.
--
-- `strverscmp' is a GNU extension.
--
-- - Function: int bcmp (const void *A1, const void *A2, size_t SIZE)
-- This is an obsolete alias for `memcmp', derived from BSD.
--
--
--File: libc.info, Node: Collation Functions, Next: Search Functions, Prev: String/Array Comparison, Up: String and Array Utilities
--
--Collation Functions
--===================
--
-- In some locales, the conventions for lexicographic ordering differ
--from the strict numeric ordering of character codes. For example, in
--Spanish most glyphs with diacritical marks such as accents are not
--considered distinct letters for the purposes of collation. On the
--other hand, the two-character sequence `ll' is treated as a single
--letter that is collated immediately after `l'.
--
-- You can use the functions `strcoll' and `strxfrm' (declared in the
--headers file `string.h') and `wcscoll' and `wcsxfrm' (declared in the
--headers file `wchar') to compare strings using a collation ordering
--appropriate for the current locale. The locale used by these functions
--in particular can be specified by setting the locale for the
--`LC_COLLATE' category; see *Note Locales::.
--
-- In the standard C locale, the collation sequence for `strcoll' is
--the same as that for `strcmp'. Similarly, `wcscoll' and `wcscmp' are
--the same in this situation.
--
-- Effectively, the way these functions work is by applying a mapping to
--transform the characters in a string to a byte sequence that represents
--the string's position in the collating sequence of the current locale.
--Comparing two such byte sequences in a simple fashion is equivalent to
--comparing the strings with the locale's collating sequence.
--
-- The functions `strcoll' and `wcscoll' perform this translation
--implicitly, in order to do one comparison. By contrast, `strxfrm' and
--`wcsxfrm' perform the mapping explicitly. If you are making multiple
--comparisons using the same string or set of strings, it is likely to be
--more efficient to use `strxfrm' or `wcsxfrm' to transform all the
--strings just once, and subsequently compare the transformed strings
--with `strcmp' or `wcscmp'.
--
-- - Function: int strcoll (const char *S1, const char *S2)
-- The `strcoll' function is similar to `strcmp' but uses the
-- collating sequence of the current locale for collation (the
-- `LC_COLLATE' locale).
--
-- - Function: int wcscoll (const wchar_t *WS1, const wchar_t *WS2)
-- The `wcscoll' function is similar to `wcscmp' but uses the
-- collating sequence of the current locale for collation (the
-- `LC_COLLATE' locale).
--
-- Here is an example of sorting an array of strings, using `strcoll'
--to compare them. The actual sort algorithm is not written here; it
--comes from `qsort' (*note Array Sort Function::). The job of the code
--shown here is to say how to compare the strings while sorting them.
--(Later on in this section, we will show a way to do this more
--efficiently using `strxfrm'.)
--
-- /* This is the comparison function used with `qsort'. */
--
-- int
-- compare_elements (char **p1, char **p2)
-- {
-- return strcoll (*p1, *p2);
-- }
--
-- /* This is the entry point--the function to sort
-- strings using the locale's collating sequence. */
--
-- void
-- sort_strings (char **array, int nstrings)
-- {
-- /* Sort `temp_array' by comparing the strings. */
-- qsort (array, nstrings,
-- sizeof (char *), compare_elements);
-- }
--
-- - Function: size_t strxfrm (char *restrict TO, const char *restrict
-- FROM, size_t SIZE)
-- The function `strxfrm' transforms the string FROM using the
-- collation transformation determined by the locale currently
-- selected for collation, and stores the transformed string in the
-- array TO. Up to SIZE characters (including a terminating null
-- character) are stored.
--
-- The behavior is undefined if the strings TO and FROM overlap; see
-- *Note Copying and Concatenation::.
--
-- The return value is the length of the entire transformed string.
-- This value is not affected by the value of SIZE, but if it is
-- greater or equal than SIZE, it means that the transformed string
-- did not entirely fit in the array TO. In this case, only as much
-- of the string as actually fits was stored. To get the whole
-- transformed string, call `strxfrm' again with a bigger output
-- array.
--
-- The transformed string may be longer than the original string, and
-- it may also be shorter.
--
-- If SIZE is zero, no characters are stored in TO. In this case,
-- `strxfrm' simply returns the number of characters that would be
-- the length of the transformed string. This is useful for
-- determining what size the allocated array should be. It does not
-- matter what TO is if SIZE is zero; TO may even be a null pointer.
--
-- - Function: size_t wcsxfrm (wchar_t *restrict WTO, const wchar_t
-- *WFROM, size_t SIZE)
-- The function `wcsxfrm' transforms wide character string WFROM
-- using the collation transformation determined by the locale
-- currently selected for collation, and stores the transformed
-- string in the array WTO. Up to SIZE wide characters (including a
-- terminating null character) are stored.
--
-- The behavior is undefined if the strings WTO and WFROM overlap;
-- see *Note Copying and Concatenation::.
--
-- The return value is the length of the entire transformed wide
-- character string. This value is not affected by the value of
-- SIZE, but if it is greater or equal than SIZE, it means that the
-- transformed wide character string did not entirely fit in the
-- array WTO. In this case, only as much of the wide character
-- string as actually fits was stored. To get the whole transformed
-- wide character string, call `wcsxfrm' again with a bigger output
-- array.
--
-- The transformed wide character string may be longer than the
-- original wide character string, and it may also be shorter.
--
-- If SIZE is zero, no characters are stored in TO. In this case,
-- `wcsxfrm' simply returns the number of wide characters that would
-- be the length of the transformed wide character string. This is
-- useful for determining what size the allocated array should be
-- (remember to multiply with `sizeof (wchar_t)'). It does not
-- matter what WTO is if SIZE is zero; WTO may even be a null pointer.
--
-- Here is an example of how you can use `strxfrm' when you plan to do
--many comparisons. It does the same thing as the previous example, but
--much faster, because it has to transform each string only once, no
--matter how many times it is compared with other strings. Even the time
--needed to allocate and free storage is much less than the time we save,
--when there are many strings.
--
-- struct sorter { char *input; char *transformed; };
--
-- /* This is the comparison function used with `qsort'
-- to sort an array of `struct sorter'. */
--
-- int
-- compare_elements (struct sorter *p1, struct sorter *p2)
-- {
-- return strcmp (p1->transformed, p2->transformed);
-- }
--
-- /* This is the entry point--the function to sort
-- strings using the locale's collating sequence. */
--
-- void
-- sort_strings_fast (char **array, int nstrings)
-- {
-- struct sorter temp_array[nstrings];
-- int i;
--
-- /* Set up `temp_array'. Each element contains
-- one input string and its transformed string. */
-- for (i = 0; i < nstrings; i++)
-- {
-- size_t length = strlen (array[i]) * 2;
-- char *transformed;
-- size_t transformed_length;
--
-- temp_array[i].input = array[i];
--
-- /* First try a buffer perhaps big enough. */
-- transformed = (char *) xmalloc (length);
--
-- /* Transform `array[i]'. */
-- transformed_length = strxfrm (transformed, array[i], length);
--
-- /* If the buffer was not large enough, resize it
-- and try again. */
-- if (transformed_length >= length)
-- {
-- /* Allocate the needed space. +1 for terminating
-- `NUL' character. */
-- transformed = (char *) xrealloc (transformed,
-- transformed_length + 1);
--
-- /* The return value is not interesting because we know
-- how long the transformed string is. */
-- (void) strxfrm (transformed, array[i],
-- transformed_length + 1);
-- }
--
-- temp_array[i].transformed = transformed;
-- }
--
-- /* Sort `temp_array' by comparing transformed strings. */
-- qsort (temp_array, sizeof (struct sorter),
-- nstrings, compare_elements);
--
-- /* Put the elements back in the permanent array
-- in their sorted order. */
-- for (i = 0; i < nstrings; i++)
-- array[i] = temp_array[i].input;
--
-- /* Free the strings we allocated. */
-- for (i = 0; i < nstrings; i++)
-- free (temp_array[i].transformed);
-- }
--
-- The interesting part of this code for the wide character version
--would look like this:
--
-- void
-- sort_strings_fast (wchar_t **array, int nstrings)
-- {
-- ...
-- /* Transform `array[i]'. */
-- transformed_length = wcsxfrm (transformed, array[i], length);
--
-- /* If the buffer was not large enough, resize it
-- and try again. */
-- if (transformed_length >= length)
-- {
-- /* Allocate the needed space. +1 for terminating
-- `NUL' character. */
-- transformed = (wchar_t *) xrealloc (transformed,
-- (transformed_length + 1)
-- * sizeof (wchar_t));
--
-- /* The return value is not interesting because we know
-- how long the transformed string is. */
-- (void) wcsxfrm (transformed, array[i],
-- transformed_length + 1);
-- }
-- ...
--
--Note the additional multiplication with `sizeof (wchar_t)' in the
--`realloc' call.
--
-- *Compatibility Note:* The string collation functions are a new
--feature of ISO C90. Older C dialects have no equivalent feature. The
--wide character versions were introduced in Amendment 1 to ISO C90.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-8 glibc-2.3.2-200304020432/manual/libc.info-8
---- glibc-2.3.2/manual/libc.info-8 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-8 Thu Jan 1 01:00:00 1970
-@@ -1,997 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Search Functions, Next: Finding Tokens in a String, Prev: Collation Functions, Up: String and Array Utilities
--
--Search Functions
--================
--
-- This section describes library functions which perform various kinds
--of searching operations on strings and arrays. These functions are
--declared in the header file `string.h'.
--
-- - Function: void * memchr (const void *BLOCK, int C, size_t SIZE)
-- This function finds the first occurrence of the byte C (converted
-- to an `unsigned char') in the initial SIZE bytes of the object
-- beginning at BLOCK. The return value is a pointer to the located
-- byte, or a null pointer if no match was found.
--
-- - Function: wchar_t * wmemchr (const wchar_t *BLOCK, wchar_t WC,
-- size_t SIZE)
-- This function finds the first occurrence of the wide character WC
-- in the initial SIZE wide characters of the object beginning at
-- BLOCK. The return value is a pointer to the located wide
-- character, or a null pointer if no match was found.
--
-- - Function: void * rawmemchr (const void *BLOCK, int C)
-- Often the `memchr' function is used with the knowledge that the
-- byte C is available in the memory block specified by the
-- parameters. But this means that the SIZE parameter is not really
-- needed and that the tests performed with it at runtime (to check
-- whether the end of the block is reached) are not needed.
--
-- The `rawmemchr' function exists for just this situation which is
-- surprisingly frequent. The interface is similar to `memchr' except
-- that the SIZE parameter is missing. The function will look beyond
-- the end of the block pointed to by BLOCK in case the programmer
-- made an error in assuming that the byte C is present in the block.
-- In this case the result is unspecified. Otherwise the return
-- value is a pointer to the located byte.
--
-- This function is of special interest when looking for the end of a
-- string. Since all strings are terminated by a null byte a call
-- like
--
-- rawmemchr (str, '\0')
--
-- will never go beyond the end of the string.
--
-- This function is a GNU extension.
--
-- - Function: void * memrchr (const void *BLOCK, int C, size_t SIZE)
-- The function `memrchr' is like `memchr', except that it searches
-- backwards from the end of the block defined by BLOCK and SIZE
-- (instead of forwards from the front).
--
-- - Function: char * strchr (const char *STRING, int C)
-- The `strchr' function finds the first occurrence of the character
-- C (converted to a `char') in the null-terminated string beginning
-- at STRING. The return value is a pointer to the located
-- character, or a null pointer if no match was found.
--
-- For example,
-- strchr ("hello, world", 'l')
-- => "llo, world"
-- strchr ("hello, world", '?')
-- => NULL
--
-- The terminating null character is considered to be part of the
-- string, so you can use this function get a pointer to the end of a
-- string by specifying a null character as the value of the C
-- argument. It would be better (but less portable) to use
-- `strchrnul' in this case, though.
--
-- - Function: wchar_t * wcschr (const wchar_t *WSTRING, int WC)
-- The `wcschr' function finds the first occurrence of the wide
-- character WC in the null-terminated wide character string
-- beginning at WSTRING. The return value is a pointer to the
-- located wide character, or a null pointer if no match was found.
--
-- The terminating null character is considered to be part of the wide
-- character string, so you can use this function get a pointer to
-- the end of a wide character string by specifying a null wude
-- character as the value of the WC argument. It would be better
-- (but less portable) to use `wcschrnul' in this case, though.
--
-- - Function: char * strchrnul (const char *STRING, int C)
-- `strchrnul' is the same as `strchr' except that if it does not
-- find the character, it returns a pointer to string's terminating
-- null character rather than a null pointer.
--
-- This function is a GNU extension.
--
-- - Function: wchar_t * wcschrnul (const wchar_t *WSTRING, wchar_t WC)
-- `wcschrnul' is the same as `wcschr' except that if it does not
-- find the wide character, it returns a pointer to wide character
-- string's terminating null wide character rather than a null
-- pointer.
--
-- This function is a GNU extension.
--
-- One useful, but unusual, use of the `strchr' function is when one
--wants to have a pointer pointing to the NUL byte terminating a string.
--This is often written in this way:
--
-- s += strlen (s);
--
--This is almost optimal but the addition operation duplicated a bit of
--the work already done in the `strlen' function. A better solution is
--this:
--
-- s = strchr (s, '\0');
--
-- There is no restriction on the second parameter of `strchr' so it
--could very well also be the NUL character. Those readers thinking very
--hard about this might now point out that the `strchr' function is more
--expensive than the `strlen' function since we have two abort criteria.
--This is right. But in the GNU C library the implementation of `strchr'
--is optimized in a special way so that `strchr' actually is faster.
--
-- - Function: char * strrchr (const char *STRING, int C)
-- The function `strrchr' is like `strchr', except that it searches
-- backwards from the end of the string STRING (instead of forwards
-- from the front).
--
-- For example,
-- strrchr ("hello, world", 'l')
-- => "ld"
--
-- - Function: wchar_t * wcsrchr (const wchar_t *WSTRING, wchar_t C)
-- The function `wcsrchr' is like `wcschr', except that it searches
-- backwards from the end of the string WSTRING (instead of forwards
-- from the front).
--
-- - Function: char * strstr (const char *HAYSTACK, const char *NEEDLE)
-- This is like `strchr', except that it searches HAYSTACK for a
-- substring NEEDLE rather than just a single character. It returns
-- a pointer into the string HAYSTACK that is the first character of
-- the substring, or a null pointer if no match was found. If NEEDLE
-- is an empty string, the function returns HAYSTACK.
--
-- For example,
-- strstr ("hello, world", "l")
-- => "llo, world"
-- strstr ("hello, world", "wo")
-- => "world"
--
-- - Function: wchar_t * wcsstr (const wchar_t *HAYSTACK, const wchar_t
-- *NEEDLE)
-- This is like `wcschr', except that it searches HAYSTACK for a
-- substring NEEDLE rather than just a single wide character. It
-- returns a pointer into the string HAYSTACK that is the first wide
-- character of the substring, or a null pointer if no match was
-- found. If NEEDLE is an empty string, the function returns
-- HAYSTACK.
--
-- - Function: wchar_t * wcswcs (const wchar_t *HAYSTACK, const wchar_t
-- *NEEDLE)
-- `wcsstr' is an depricated alias for `wcsstr'. This is the name
-- originally used in the X/Open Portability Guide before the
-- Amendment 1 to ISO C90 was published.
--
-- - Function: char * strcasestr (const char *HAYSTACK, const char
-- *NEEDLE)
-- This is like `strstr', except that it ignores case in searching for
-- the substring. Like `strcasecmp', it is locale dependent how
-- uppercase and lowercase characters are related.
--
-- For example,
-- strstr ("hello, world", "L")
-- => "llo, world"
-- strstr ("hello, World", "wo")
-- => "World"
--
-- - Function: void * memmem (const void *HAYSTACK, size_t HAYSTACK-LEN,
-- const void *NEEDLE, size_t NEEDLE-LEN)
-- This is like `strstr', but NEEDLE and HAYSTACK are byte arrays
-- rather than null-terminated strings. NEEDLE-LEN is the length of
-- NEEDLE and HAYSTACK-LEN is the length of HAYSTACK.
--
-- This function is a GNU extension.
--
-- - Function: size_t strspn (const char *STRING, const char *SKIPSET)
-- The `strspn' ("string span") function returns the length of the
-- initial substring of STRING that consists entirely of characters
-- that are members of the set specified by the string SKIPSET. The
-- order of the characters in SKIPSET is not important.
--
-- For example,
-- strspn ("hello, world", "abcdefghijklmnopqrstuvwxyz")
-- => 5
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- - Function: size_t wcsspn (const wchar_t *WSTRING, const wchar_t
-- *SKIPSET)
-- The `wcsspn' ("wide character string span") function returns the
-- length of the initial substring of WSTRING that consists entirely
-- of wide characters that are members of the set specified by the
-- string SKIPSET. The order of the wide characters in SKIPSET is not
-- important.
--
-- - Function: size_t strcspn (const char *STRING, const char *STOPSET)
-- The `strcspn' ("string complement span") function returns the
-- length of the initial substring of STRING that consists entirely
-- of characters that are _not_ members of the set specified by the
-- string STOPSET. (In other words, it returns the offset of the
-- first character in STRING that is a member of the set STOPSET.)
--
-- For example,
-- strcspn ("hello, world", " \t\n,.;!?")
-- => 5
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- - Function: size_t wcscspn (const wchar_t *WSTRING, const wchar_t
-- *STOPSET)
-- The `wcscspn' ("wide character string complement span") function
-- returns the length of the initial substring of WSTRING that
-- consists entirely of wide characters that are _not_ members of the
-- set specified by the string STOPSET. (In other words, it returns
-- the offset of the first character in STRING that is a member of
-- the set STOPSET.)
--
-- - Function: char * strpbrk (const char *STRING, const char *STOPSET)
-- The `strpbrk' ("string pointer break") function is related to
-- `strcspn', except that it returns a pointer to the first character
-- in STRING that is a member of the set STOPSET instead of the
-- length of the initial substring. It returns a null pointer if no
-- such character from STOPSET is found.
--
-- For example,
--
-- strpbrk ("hello, world", " \t\n,.;!?")
-- => ", world"
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- - Function: wchar_t * wcspbrk (const wchar_t *WSTRING, const wchar_t
-- *STOPSET)
-- The `wcspbrk' ("wide character string pointer break") function is
-- related to `wcscspn', except that it returns a pointer to the first
-- wide character in WSTRING that is a member of the set STOPSET
-- instead of the length of the initial substring. It returns a null
-- pointer if no such character from STOPSET is found.
--
--Compatibility String Search Functions
---------------------------------------
--
-- - Function: char * index (const char *STRING, int C)
-- `index' is another name for `strchr'; they are exactly the same.
-- New code should always use `strchr' since this name is defined in
-- ISO C while `index' is a BSD invention which never was available
-- on System V derived systems.
--
-- - Function: char * rindex (const char *STRING, int C)
-- `rindex' is another name for `strrchr'; they are exactly the same.
-- New code should always use `strrchr' since this name is defined in
-- ISO C while `rindex' is a BSD invention which never was available
-- on System V derived systems.
--
--
--File: libc.info, Node: Finding Tokens in a String, Next: strfry, Prev: Search Functions, Up: String and Array Utilities
--
--Finding Tokens in a String
--==========================
--
-- It's fairly common for programs to have a need to do some simple
--kinds of lexical analysis and parsing, such as splitting a command
--string up into tokens. You can do this with the `strtok' function,
--declared in the header file `string.h'.
--
-- - Function: char * strtok (char *restrict NEWSTRING, const char
-- *restrict DELIMITERS)
-- A string can be split into tokens by making a series of calls to
-- the function `strtok'.
--
-- The string to be split up is passed as the NEWSTRING argument on
-- the first call only. The `strtok' function uses this to set up
-- some internal state information. Subsequent calls to get
-- additional tokens from the same string are indicated by passing a
-- null pointer as the NEWSTRING argument. Calling `strtok' with
-- another non-null NEWSTRING argument reinitializes the state
-- information. It is guaranteed that no other library function ever
-- calls `strtok' behind your back (which would mess up this internal
-- state information).
--
-- The DELIMITERS argument is a string that specifies a set of
-- delimiters that may surround the token being extracted. All the
-- initial characters that are members of this set are discarded.
-- The first character that is _not_ a member of this set of
-- delimiters marks the beginning of the next token. The end of the
-- token is found by looking for the next character that is a member
-- of the delimiter set. This character in the original string
-- NEWSTRING is overwritten by a null character, and the pointer to
-- the beginning of the token in NEWSTRING is returned.
--
-- On the next call to `strtok', the searching begins at the next
-- character beyond the one that marked the end of the previous token.
-- Note that the set of delimiters DELIMITERS do not have to be the
-- same on every call in a series of calls to `strtok'.
--
-- If the end of the string NEWSTRING is reached, or if the remainder
-- of string consists only of delimiter characters, `strtok' returns
-- a null pointer.
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- - Function: wchar_t * wcstok (wchar_t *NEWSTRING, const char
-- *DELIMITERS)
-- A string can be split into tokens by making a series of calls to
-- the function `wcstok'.
--
-- The string to be split up is passed as the NEWSTRING argument on
-- the first call only. The `wcstok' function uses this to set up
-- some internal state information. Subsequent calls to get
-- additional tokens from the same wide character string are
-- indicated by passing a null pointer as the NEWSTRING argument.
-- Calling `wcstok' with another non-null NEWSTRING argument
-- reinitializes the state information. It is guaranteed that no
-- other library function ever calls `wcstok' behind your back (which
-- would mess up this internal state information).
--
-- The DELIMITERS argument is a wide character string that specifies
-- a set of delimiters that may surround the token being extracted.
-- All the initial wide characters that are members of this set are
-- discarded. The first wide character that is _not_ a member of
-- this set of delimiters marks the beginning of the next token. The
-- end of the token is found by looking for the next wide character
-- that is a member of the delimiter set. This wide character in the
-- original wide character string NEWSTRING is overwritten by a null
-- wide character, and the pointer to the beginning of the token in
-- NEWSTRING is returned.
--
-- On the next call to `wcstok', the searching begins at the next
-- wide character beyond the one that marked the end of the previous
-- token. Note that the set of delimiters DELIMITERS do not have to
-- be the same on every call in a series of calls to `wcstok'.
--
-- If the end of the wide character string NEWSTRING is reached, or
-- if the remainder of string consists only of delimiter wide
-- characters, `wcstok' returns a null pointer.
--
-- Note that "character" is here used in the sense of byte. In a
-- string using a multibyte character encoding (abstract) character
-- consisting of more than one byte are not treated as an entity.
-- Each byte is treated separately. The function is not
-- locale-dependent.
--
-- *Warning:* Since `strtok' and `wcstok' alter the string they is
--parsing, you should always copy the string to a temporary buffer before
--parsing it with `strtok'/`wcstok' (*note Copying and Concatenation::).
--If you allow `strtok' or `wcstok' to modify a string that came from
--another part of your program, you are asking for trouble; that string
--might be used for other purposes after `strtok' or `wcstok' has
--modified it, and it would not have the expected value.
--
-- The string that you are operating on might even be a constant. Then
--when `strtok' or `wcstok' tries to modify it, your program will get a
--fatal signal for writing in read-only memory. *Note Program Error
--Signals::. Even if the operation of `strtok' or `wcstok' would not
--require a modification of the string (e.g., if there is exactly one
--token) the string can (and in the GNU libc case will) be modified.
--
-- This is a special case of a general principle: if a part of a program
--does not have as its purpose the modification of a certain data
--structure, then it is error-prone to modify the data structure
--temporarily.
--
-- The functions `strtok' and `wcstok' are not reentrant. *Note
--Nonreentrancy::, for a discussion of where and why reentrancy is
--important.
--
-- Here is a simple example showing the use of `strtok'.
--
-- #include <string.h>
-- #include <stddef.h>
--
-- ...
--
-- const char string[] = "words separated by spaces -- and, punctuation!";
-- const char delimiters[] = " .,;:!-";
-- char *token, *cp;
--
-- ...
--
-- cp = strdupa (string); /* Make writable copy. */
-- token = strtok (cp, delimiters); /* token => "words" */
-- token = strtok (NULL, delimiters); /* token => "separated" */
-- token = strtok (NULL, delimiters); /* token => "by" */
-- token = strtok (NULL, delimiters); /* token => "spaces" */
-- token = strtok (NULL, delimiters); /* token => "and" */
-- token = strtok (NULL, delimiters); /* token => "punctuation" */
-- token = strtok (NULL, delimiters); /* token => NULL */
--
-- The GNU C library contains two more functions for tokenizing a string
--which overcome the limitation of non-reentrancy. They are only
--available for multibyte character strings.
--
-- - Function: char * strtok_r (char *NEWSTRING, const char *DELIMITERS,
-- char **SAVE_PTR)
-- Just like `strtok', this function splits the string into several
-- tokens which can be accessed by successive calls to `strtok_r'.
-- The difference is that the information about the next token is
-- stored in the space pointed to by the third argument, SAVE_PTR,
-- which is a pointer to a string pointer. Calling `strtok_r' with a
-- null pointer for NEWSTRING and leaving SAVE_PTR between the calls
-- unchanged does the job without hindering reentrancy.
--
-- This function is defined in POSIX.1 and can be found on many
-- systems which support multi-threading.
--
-- - Function: char * strsep (char **STRING_PTR, const char *DELIMITER)
-- This function has a similar functionality as `strtok_r' with the
-- NEWSTRING argument replaced by the SAVE_PTR argument. The
-- initialization of the moving pointer has to be done by the user.
-- Successive calls to `strsep' move the pointer along the tokens
-- separated by DELIMITER, returning the address of the next token
-- and updating STRING_PTR to point to the beginning of the next
-- token.
--
-- One difference between `strsep' and `strtok_r' is that if the
-- input string contains more than one character from DELIMITER in a
-- row `strsep' returns an empty string for each pair of characters
-- from DELIMITER. This means that a program normally should test
-- for `strsep' returning an empty string before processing it.
--
-- This function was introduced in 4.3BSD and therefore is widely
-- available.
--
-- Here is how the above example looks like when `strsep' is used.
--
-- #include <string.h>
-- #include <stddef.h>
--
-- ...
--
-- const char string[] = "words separated by spaces -- and, punctuation!";
-- const char delimiters[] = " .,;:!-";
-- char *running;
-- char *token;
--
-- ...
--
-- running = strdupa (string);
-- token = strsep (&running, delimiters); /* token => "words" */
-- token = strsep (&running, delimiters); /* token => "separated" */
-- token = strsep (&running, delimiters); /* token => "by" */
-- token = strsep (&running, delimiters); /* token => "spaces" */
-- token = strsep (&running, delimiters); /* token => "" */
-- token = strsep (&running, delimiters); /* token => "" */
-- token = strsep (&running, delimiters); /* token => "" */
-- token = strsep (&running, delimiters); /* token => "and" */
-- token = strsep (&running, delimiters); /* token => "" */
-- token = strsep (&running, delimiters); /* token => "punctuation" */
-- token = strsep (&running, delimiters); /* token => "" */
-- token = strsep (&running, delimiters); /* token => NULL */
--
-- - Function: char * basename (const char *FILENAME)
-- The GNU version of the `basename' function returns the last
-- component of the path in FILENAME. This function is the preferred
-- usage, since it does not modify the argument, FILENAME, and
-- respects trailing slashes. The prototype for `basename' can be
-- found in `string.h'. Note, this function is overriden by the XPG
-- version, if `libgen.h' is included.
--
-- Example of using GNU `basename':
--
-- #include <string.h>
--
-- int
-- main (int argc, char *argv[])
-- {
-- char *prog = basename (argv[0]);
--
-- if (argc < 2)
-- {
-- fprintf (stderr, "Usage %s <arg>\n", prog);
-- exit (1);
-- }
--
-- ...
-- }
--
-- *Portability Note:* This function may produce different results on
-- different systems.
--
--
-- - Function: char * basename (char *PATH)
-- This is the standard XPG defined `basename'. It is similar in
-- spirit to the GNU version, but may modify the PATH by removing
-- trailing '/' characters. If the PATH is made up entirely of '/'
-- characters, then "/" will be returned. Also, if PATH is `NULL' or
-- an empty string, then "." is returned. The prototype for the XPG
-- version can be found in `libgen.h'.
--
-- Example of using XPG `basename':
--
-- #include <libgen.h>
--
-- int
-- main (int argc, char *argv[])
-- {
-- char *prog;
-- char *path = strdupa (argv[0]);
--
-- prog = basename (path);
--
-- if (argc < 2)
-- {
-- fprintf (stderr, "Usage %s <arg>\n", prog);
-- exit (1);
-- }
--
-- ...
--
-- }
--
-- - Function: char * dirname (char *PATH)
-- The `dirname' function is the compliment to the XPG version of
-- `basename'. It returns the parent directory of the file specified
-- by PATH. If PATH is `NULL', an empty string, or contains no '/'
-- characters, then "." is returned. The prototype for this function
-- can be found in `libgen.h'.
--
--
--File: libc.info, Node: strfry, Next: Trivial Encryption, Prev: Finding Tokens in a String, Up: String and Array Utilities
--
--strfry
--======
--
-- The function below addresses the perennial programming quandary:
--"How do I take good data in string form and painlessly turn it into
--garbage?" This is actually a fairly simple task for C programmers who
--do not use the GNU C library string functions, but for programs based
--on the GNU C library, the `strfry' function is the preferred method for
--destroying string data.
--
-- The prototype for this function is in `string.h'.
--
-- - Function: char * strfry (char *STRING)
-- `strfry' creates a pseudorandom anagram of a string, replacing the
-- input with the anagram in place. For each position in the string,
-- `strfry' swaps it with a position in the string selected at random
-- (from a uniform distribution). The two positions may be the same.
--
-- The return value of `strfry' is always STRING.
--
-- *Portability Note:* This function is unique to the GNU C library.
--
--
--
--File: libc.info, Node: Trivial Encryption, Next: Encode Binary Data, Prev: strfry, Up: String and Array Utilities
--
--Trivial Encryption
--==================
--
-- The `memfrob' function converts an array of data to something
--unrecognizable and back again. It is not encryption in its usual sense
--since it is easy for someone to convert the encrypted data back to clear
--text. The transformation is analogous to Usenet's "Rot13" encryption
--method for obscuring offensive jokes from sensitive eyes and such.
--Unlike Rot13, `memfrob' works on arbitrary binary data, not just text.
--
-- For true encryption, *Note Cryptographic Functions::.
--
-- This function is declared in `string.h'.
--
-- - Function: void * memfrob (void *MEM, size_t LENGTH)
-- `memfrob' transforms (frobnicates) each byte of the data structure
-- at MEM, which is LENGTH bytes long, by bitwise exclusive oring it
-- with binary 00101010. It does the transformation in place and its
-- return value is always MEM.
--
-- Note that `memfrob' a second time on the same data structure
-- returns it to its original state.
--
-- This is a good function for hiding information from someone who
-- doesn't want to see it or doesn't want to see it very much. To
-- really prevent people from retrieving the information, use
-- stronger encryption such as that described in *Note Cryptographic
-- Functions::.
--
-- *Portability Note:* This function is unique to the GNU C library.
--
--
--
--File: libc.info, Node: Encode Binary Data, Next: Argz and Envz Vectors, Prev: Trivial Encryption, Up: String and Array Utilities
--
--Encode Binary Data
--==================
--
-- To store or transfer binary data in environments which only support
--text one has to encode the binary data by mapping the input bytes to
--characters in the range allowed for storing or transfering. SVID
--systems (and nowadays XPG compliant systems) provide minimal support for
--this task.
--
-- - Function: char * l64a (long int N)
-- This function encodes a 32-bit input value using characters from
-- the basic character set. It returns a pointer to a 6 character
-- buffer which contains an encoded version of N. To encode a series
-- of bytes the user must copy the returned string to a destination
-- buffer. It returns the empty string if N is zero, which is
-- somewhat bizarre but mandated by the standard.
-- *Warning:* Since a static buffer is used this function should not
-- be used in multi-threaded programs. There is no thread-safe
-- alternative to this function in the C library.
-- *Compatibility Note:* The XPG standard states that the return
-- value of `l64a' is undefined if N is negative. In the GNU
-- implementation, `l64a' treats its argument as unsigned, so it will
-- return a sensible encoding for any nonzero N; however, portable
-- programs should not rely on this.
--
-- To encode a large buffer `l64a' must be called in a loop, once for
-- each 32-bit word of the buffer. For example, one could do
-- something like this:
--
-- char *
-- encode (const void *buf, size_t len)
-- {
-- /* We know in advance how long the buffer has to be. */
-- unsigned char *in = (unsigned char *) buf;
-- char *out = malloc (6 + ((len + 3) / 4) * 6 + 1);
-- char *cp = out;
--
-- /* Encode the length. */
-- /* Using `htonl' is necessary so that the data can be
-- decoded even on machines with different byte order. */
--
-- cp = mempcpy (cp, l64a (htonl (len)), 6);
--
-- while (len > 3)
-- {
-- unsigned long int n = *in++;
-- n = (n << 8) | *in++;
-- n = (n << 8) | *in++;
-- n = (n << 8) | *in++;
-- len -= 4;
-- if (n)
-- cp = mempcpy (cp, l64a (htonl (n)), 6);
-- else
-- /* `l64a' returns the empty string for n==0, so we
-- must generate its encoding ("......") by hand. */
-- cp = stpcpy (cp, "......");
-- }
-- if (len > 0)
-- {
-- unsigned long int n = *in++;
-- if (--len > 0)
-- {
-- n = (n << 8) | *in++;
-- if (--len > 0)
-- n = (n << 8) | *in;
-- }
-- memcpy (cp, l64a (htonl (n)), 6);
-- cp += 6;
-- }
-- *cp = '\0';
-- return out;
-- }
--
-- It is strange that the library does not provide the complete
-- functionality needed but so be it.
--
--
-- To decode data produced with `l64a' the following function should be
--used.
--
-- - Function: long int a64l (const char *STRING)
-- The parameter STRING should contain a string which was produced by
-- a call to `l64a'. The function processes at least 6 characters of
-- this string, and decodes the characters it finds according to the
-- table below. It stops decoding when it finds a character not in
-- the table, rather like `atoi'; if you have a buffer which has been
-- broken into lines, you must be careful to skip over the
-- end-of-line characters.
--
-- The decoded number is returned as a `long int' value.
--
-- The `l64a' and `a64l' functions use a base 64 encoding, in which
--each character of an encoded string represents six bits of an input
--word. These symbols are used for the base 64 digits:
--
-- 0 1 2 3 4 5 6 7
--0 `.' `/' `0' `1' `2' `3' `4' `5'
--8 `6' `7' `8' `9' `A' `B' `C' `D'
--16 `E' `F' `G' `H' `I' `J' `K' `L'
--24 `M' `N' `O' `P' `Q' `R' `S' `T'
--32 `U' `V' `W' `X' `Y' `Z' `a' `b'
--40 `c' `d' `e' `f' `g' `h' `i' `j'
--48 `k' `l' `m' `n' `o' `p' `q' `r'
--56 `s' `t' `u' `v' `w' `x' `y' `z'
--
-- This encoding scheme is not standard. There are some other encoding
--methods which are much more widely used (UU encoding, MIME encoding).
--Generally, it is better to use one of these encodings.
--
--
--File: libc.info, Node: Argz and Envz Vectors, Prev: Encode Binary Data, Up: String and Array Utilities
--
--Argz and Envz Vectors
--=====================
--
-- "argz vectors" are vectors of strings in a contiguous block of
--memory, each element separated from its neighbors by null-characters
--(`'\0'').
--
-- "Envz vectors" are an extension of argz vectors where each element
--is a name-value pair, separated by a `'='' character (as in a Unix
--environment).
--
--* Menu:
--
--* Argz Functions:: Operations on argz vectors.
--* Envz Functions:: Additional operations on environment vectors.
--
--
--File: libc.info, Node: Argz Functions, Next: Envz Functions, Up: Argz and Envz Vectors
--
--Argz Functions
----------------
--
-- Each argz vector is represented by a pointer to the first element, of
--type `char *', and a size, of type `size_t', both of which can be
--initialized to `0' to represent an empty argz vector. All argz
--functions accept either a pointer and a size argument, or pointers to
--them, if they will be modified.
--
-- The argz functions use `malloc'/`realloc' to allocate/grow argz
--vectors, and so any argz vector creating using these functions may be
--freed by using `free'; conversely, any argz function that may grow a
--string expects that string to have been allocated using `malloc' (those
--argz functions that only examine their arguments or modify them in
--place will work on any sort of memory). *Note Unconstrained
--Allocation::.
--
-- All argz functions that do memory allocation have a return type of
--`error_t', and return `0' for success, and `ENOMEM' if an allocation
--error occurs.
--
-- These functions are declared in the standard include file `argz.h'.
--
-- - Function: error_t argz_create (char *const ARGV[], char **ARGZ,
-- size_t *ARGZ_LEN)
-- The `argz_create' function converts the Unix-style argument vector
-- ARGV (a vector of pointers to normal C strings, terminated by
-- `(char *)0'; *note Program Arguments::) into an argz vector with
-- the same elements, which is returned in ARGZ and ARGZ_LEN.
--
-- - Function: error_t argz_create_sep (const char *STRING, int SEP, char
-- **ARGZ, size_t *ARGZ_LEN)
-- The `argz_create_sep' function converts the null-terminated string
-- STRING into an argz vector (returned in ARGZ and ARGZ_LEN) by
-- splitting it into elements at every occurrence of the character
-- SEP.
--
-- - Function: size_t argz_count (const char *ARGZ, size_t ARG_LEN)
-- Returns the number of elements in the argz vector ARGZ and
-- ARGZ_LEN.
--
-- - Function: void argz_extract (char *ARGZ, size_t ARGZ_LEN, char
-- **ARGV)
-- The `argz_extract' function converts the argz vector ARGZ and
-- ARGZ_LEN into a Unix-style argument vector stored in ARGV, by
-- putting pointers to every element in ARGZ into successive
-- positions in ARGV, followed by a terminator of `0'. ARGV must be
-- pre-allocated with enough space to hold all the elements in ARGZ
-- plus the terminating `(char *)0' (`(argz_count (ARGZ, ARGZ_LEN) +
-- 1) * sizeof (char *)' bytes should be enough). Note that the
-- string pointers stored into ARGV point into ARGZ--they are not
-- copies--and so ARGZ must be copied if it will be changed while
-- ARGV is still active. This function is useful for passing the
-- elements in ARGZ to an exec function (*note Executing a File::).
--
-- - Function: void argz_stringify (char *ARGZ, size_t LEN, int SEP)
-- The `argz_stringify' converts ARGZ into a normal string with the
-- elements separated by the character SEP, by replacing each `'\0''
-- inside ARGZ (except the last one, which terminates the string)
-- with SEP. This is handy for printing ARGZ in a readable manner.
--
-- - Function: error_t argz_add (char **ARGZ, size_t *ARGZ_LEN, const
-- char *STR)
-- The `argz_add' function adds the string STR to the end of the argz
-- vector `*ARGZ', and updates `*ARGZ' and `*ARGZ_LEN' accordingly.
--
-- - Function: error_t argz_add_sep (char **ARGZ, size_t *ARGZ_LEN, const
-- char *STR, int DELIM)
-- The `argz_add_sep' function is similar to `argz_add', but STR is
-- split into separate elements in the result at occurrences of the
-- character DELIM. This is useful, for instance, for adding the
-- components of a Unix search path to an argz vector, by using a
-- value of `':'' for DELIM.
--
-- - Function: error_t argz_append (char **ARGZ, size_t *ARGZ_LEN, const
-- char *BUF, size_t BUF_LEN)
-- The `argz_append' function appends BUF_LEN bytes starting at BUF
-- to the argz vector `*ARGZ', reallocating `*ARGZ' to accommodate
-- it, and adding BUF_LEN to `*ARGZ_LEN'.
--
-- - Function: error_t argz_delete (char **ARGZ, size_t *ARGZ_LEN, char
-- *ENTRY)
-- If ENTRY points to the beginning of one of the elements in the
-- argz vector `*ARGZ', the `argz_delete' function will remove this
-- entry and reallocate `*ARGZ', modifying `*ARGZ' and `*ARGZ_LEN'
-- accordingly. Note that as destructive argz functions usually
-- reallocate their argz argument, pointers into argz vectors such as
-- ENTRY will then become invalid.
--
-- - Function: error_t argz_insert (char **ARGZ, size_t *ARGZ_LEN, char
-- *BEFORE, const char *ENTRY)
-- The `argz_insert' function inserts the string ENTRY into the argz
-- vector `*ARGZ' at a point just before the existing element pointed
-- to by BEFORE, reallocating `*ARGZ' and updating `*ARGZ' and
-- `*ARGZ_LEN'. If BEFORE is `0', ENTRY is added to the end instead
-- (as if by `argz_add'). Since the first element is in fact the
-- same as `*ARGZ', passing in `*ARGZ' as the value of BEFORE will
-- result in ENTRY being inserted at the beginning.
--
-- - Function: char * argz_next (char *ARGZ, size_t ARGZ_LEN, const char
-- *ENTRY)
-- The `argz_next' function provides a convenient way of iterating
-- over the elements in the argz vector ARGZ. It returns a pointer
-- to the next element in ARGZ after the element ENTRY, or `0' if
-- there are no elements following ENTRY. If ENTRY is `0', the first
-- element of ARGZ is returned.
--
-- This behavior suggests two styles of iteration:
--
-- char *entry = 0;
-- while ((entry = argz_next (ARGZ, ARGZ_LEN, entry)))
-- ACTION;
--
-- (the double parentheses are necessary to make some C compilers
-- shut up about what they consider a questionable `while'-test) and:
--
-- char *entry;
-- for (entry = ARGZ;
-- entry;
-- entry = argz_next (ARGZ, ARGZ_LEN, entry))
-- ACTION;
--
-- Note that the latter depends on ARGZ having a value of `0' if it
-- is empty (rather than a pointer to an empty block of memory); this
-- invariant is maintained for argz vectors created by the functions
-- here.
--
-- - Function: error_t argz_replace (char **ARGZ, size_t *ARGZ_LEN,
-- const char *STR, const char *WITH, unsigned *REPLACE_COUNT)
-- Replace any occurrences of the string STR in ARGZ with WITH,
-- reallocating ARGZ as necessary. If REPLACE_COUNT is non-zero,
-- `*REPLACE_COUNT' will be incremented by number of replacements
-- performed.
--
--
--File: libc.info, Node: Envz Functions, Prev: Argz Functions, Up: Argz and Envz Vectors
--
--Envz Functions
----------------
--
-- Envz vectors are just argz vectors with additional constraints on
--the form of each element; as such, argz functions can also be used on
--them, where it makes sense.
--
-- Each element in an envz vector is a name-value pair, separated by a
--`'='' character; if multiple `'='' characters are present in an
--element, those after the first are considered part of the value, and
--treated like all other non-`'\0'' characters.
--
-- If _no_ `'='' characters are present in an element, that element is
--considered the name of a "null" entry, as distinct from an entry with an
--empty value: `envz_get' will return `0' if given the name of null
--entry, whereas an entry with an empty value would result in a value of
--`""'; `envz_entry' will still find such entries, however. Null entries
--can be removed with `envz_strip' function.
--
-- As with argz functions, envz functions that may allocate memory (and
--thus fail) have a return type of `error_t', and return either `0' or
--`ENOMEM'.
--
-- These functions are declared in the standard include file `envz.h'.
--
-- - Function: char * envz_entry (const char *ENVZ, size_t ENVZ_LEN,
-- const char *NAME)
-- The `envz_entry' function finds the entry in ENVZ with the name
-- NAME, and returns a pointer to the whole entry--that is, the argz
-- element which begins with NAME followed by a `'='' character. If
-- there is no entry with that name, `0' is returned.
--
-- - Function: char * envz_get (const char *ENVZ, size_t ENVZ_LEN, const
-- char *NAME)
-- The `envz_get' function finds the entry in ENVZ with the name NAME
-- (like `envz_entry'), and returns a pointer to the value portion of
-- that entry (following the `'=''). If there is no entry with that
-- name (or only a null entry), `0' is returned.
--
-- - Function: error_t envz_add (char **ENVZ, size_t *ENVZ_LEN, const
-- char *NAME, const char *VALUE)
-- The `envz_add' function adds an entry to `*ENVZ' (updating `*ENVZ'
-- and `*ENVZ_LEN') with the name NAME, and value VALUE. If an entry
-- with the same name already exists in ENVZ, it is removed first.
-- If VALUE is `0', then the new entry will the special null type of
-- entry (mentioned above).
--
-- - Function: error_t envz_merge (char **ENVZ, size_t *ENVZ_LEN, const
-- char *ENVZ2, size_t ENVZ2_LEN, int OVERRIDE)
-- The `envz_merge' function adds each entry in ENVZ2 to ENVZ, as if
-- with `envz_add', updating `*ENVZ' and `*ENVZ_LEN'. If OVERRIDE is
-- true, then values in ENVZ2 will supersede those with the same name
-- in ENVZ, otherwise not.
--
-- Null entries are treated just like other entries in this respect,
-- so a null entry in ENVZ can prevent an entry of the same name in
-- ENVZ2 from being added to ENVZ, if OVERRIDE is false.
--
-- - Function: void envz_strip (char **ENVZ, size_t *ENVZ_LEN)
-- The `envz_strip' function removes any null entries from ENVZ,
-- updating `*ENVZ' and `*ENVZ_LEN'.
--
--
--File: libc.info, Node: Character Set Handling, Next: Locales, Prev: String and Array Utilities, Up: Top
--
--Character Set Handling
--**********************
--
-- Character sets used in the early days of computing had only six,
--seven, or eight bits for each character: there was never a case where
--more than eight bits (one byte) were used to represent a single
--character. The limitations of this approach became more apparent as
--more people grappled with non-Roman character sets, where not all the
--characters that make up a language's character set can be represented
--by 2^8 choices. This chapter shows the functionality that was added to
--the C library to support multiple character sets.
--
--* Menu:
--
--* Extended Char Intro:: Introduction to Extended Characters.
--* Charset Function Overview:: Overview about Character Handling
-- Functions.
--* Restartable multibyte conversion:: Restartable multibyte conversion
-- Functions.
--* Non-reentrant Conversion:: Non-reentrant Conversion Function.
--* Generic Charset Conversion:: Generic Charset Conversion.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.info-9 glibc-2.3.2-200304020432/manual/libc.info-9
---- glibc-2.3.2/manual/libc.info-9 Sat Mar 1 02:39:41 2003
-+++ glibc-2.3.2-200304020432/manual/libc.info-9 Thu Jan 1 01:00:00 1970
-@@ -1,1056 +0,0 @@
--This is libc.info, produced by makeinfo version 4.2 from libc.texinfo.
--
--INFO-DIR-SECTION GNU libraries
--START-INFO-DIR-ENTRY
--* Libc: (libc). C library.
--END-INFO-DIR-ENTRY
--
-- This file documents the GNU C library.
--
-- This is Edition 0.10, last updated 2001-07-06, of `The GNU C Library
--Reference Manual', for Version 2.3.x.
--
-- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
--Free Software Foundation, Inc.
--
-- Permission is granted to copy, distribute and/or modify this document
--under the terms of the GNU Free Documentation License, Version 1.1 or
--any later version published by the Free Software Foundation; with the
--Invariant Sections being "Free Software Needs Free Documentation" and
--"GNU Lesser General Public License", the Front-Cover texts being (a)
--(see below), and with the Back-Cover Texts being (b) (see below). A
--copy of the license is included in the section entitled "GNU Free
--Documentation License".
--
-- (a) The FSF's Front-Cover Text is:
--
-- A GNU Manual
--
-- (b) The FSF's Back-Cover Text is:
--
-- You have freedom to copy and modify this GNU Manual, like GNU
--software. Copies published by the Free Software Foundation raise
--funds for GNU development.
--
--
--File: libc.info, Node: Extended Char Intro, Next: Charset Function Overview, Up: Character Set Handling
--
--Introduction to Extended Characters
--===================================
--
-- A variety of solutions is available to overcome the differences
--between character sets with a 1:1 relation between bytes and characters
--and character sets with ratios of 2:1 or 4:1. The remainder of this
--section gives a few examples to help understand the design decisions
--made while developing the functionality of the C library.
--
-- A distinction we have to make right away is between internal and
--external representation. "Internal representation" means the
--representation used by a program while keeping the text in memory.
--External representations are used when text is stored or transmitted
--through some communication channel. Examples of external
--representations include files waiting in a directory to be read and
--parsed.
--
-- Traditionally there has been no difference between the two
--representations. It was equally comfortable and useful to use the same
--single-byte representation internally and externally. This comfort
--level decreases with more and larger character sets.
--
-- One of the problems to overcome with the internal representation is
--handling text that is externally encoded using different character
--sets. Assume a program that reads two texts and compares them using
--some metric. The comparison can be usefully done only if the texts are
--internally kept in a common format.
--
-- For such a common format (= character set) eight bits are certainly
--no longer enough. So the smallest entity will have to grow: "wide
--characters" will now be used. Instead of one byte per character, two or
--four will be used instead. (Three are not good to address in memory and
--more than four bytes seem not to be necessary).
--
-- As shown in some other part of this manual, a completely new family
--has been created of functions that can handle wide character texts in
--memory. The most commonly used character sets for such internal wide
--character representations are Unicode and ISO 10646 (also known as UCS
--for Universal Character Set). Unicode was originally planned as a
--16-bit character set; whereas, ISO 10646 was designed to be a 31-bit
--large code space. The two standards are practically identical. They
--have the same character repertoire and code table, but Unicode specifies
--added semantics. At the moment, only characters in the first `0x10000'
--code positions (the so-called Basic Multilingual Plane, BMP) have been
--assigned, but the assignment of more specialized characters outside this
--16-bit space is already in progress. A number of encodings have been
--defined for Unicode and ISO 10646 characters: UCS-2 is a 16-bit word
--that can only represent characters from the BMP, UCS-4 is a 32-bit word
--than can represent any Unicode and ISO 10646 character, UTF-8 is an
--ASCII compatible encoding where ASCII characters are represented by
--ASCII bytes and non-ASCII characters by sequences of 2-6 non-ASCII
--bytes, and finally UTF-16 is an extension of UCS-2 in which pairs of
--certain UCS-2 words can be used to encode non-BMP characters up to
--`0x10ffff'.
--
-- To represent wide characters the `char' type is not suitable. For
--this reason the ISO C standard introduces a new type that is designed
--to keep one character of a wide character string. To maintain the
--similarity there is also a type corresponding to `int' for those
--functions that take a single wide character.
--
-- - Data type: wchar_t
-- This data type is used as the base type for wide character strings.
-- In other words, arrays of objects of this type are the equivalent
-- of `char[]' for multibyte character strings. The type is defined
-- in `stddef.h'.
--
-- The ISO C90 standard, where `wchar_t' was introduced, does not say
-- anything specific about the representation. It only requires that
-- this type is capable of storing all elements of the basic
-- character set. Therefore it would be legitimate to define
-- `wchar_t' as `char', which might make sense for embedded systems.
--
-- But for GNU systems `wchar_t' is always 32 bits wide and,
-- therefore, capable of representing all UCS-4 values and,
-- therefore, covering all of ISO 10646. Some Unix systems define
-- `wchar_t' as a 16-bit type and thereby follow Unicode very
-- strictly. This definition is perfectly fine with the standard,
-- but it also means that to represent all characters from Unicode
-- and ISO 10646 one has to use UTF-16 surrogate characters, which is
-- in fact a multi-wide-character encoding. But resorting to
-- multi-wide-character encoding contradicts the purpose of the
-- `wchar_t' type.
--
-- - Data type: wint_t
-- `wint_t' is a data type used for parameters and variables that
-- contain a single wide character. As the name suggests this type
-- is the equivalent of `int' when using the normal `char' strings.
-- The types `wchar_t' and `wint_t' often have the same
-- representation if their size is 32 bits wide but if `wchar_t' is
-- defined as `char' the type `wint_t' must be defined as `int' due
-- to the parameter promotion.
--
-- This type is defined in `wchar.h' and was introduced in
-- Amendment 1 to ISO C90.
--
-- As there are for the `char' data type macros are available for
--specifying the minimum and maximum value representable in an object of
--type `wchar_t'.
--
-- - Macro: wint_t WCHAR_MIN
-- The macro `WCHAR_MIN' evaluates to the minimum value representable
-- by an object of type `wint_t'.
--
-- This macro was introduced in Amendment 1 to ISO C90.
--
-- - Macro: wint_t WCHAR_MAX
-- The macro `WCHAR_MAX' evaluates to the maximum value representable
-- by an object of type `wint_t'.
--
-- This macro was introduced in Amendment 1 to ISO C90.
--
-- Another special wide character value is the equivalent to `EOF'.
--
-- - Macro: wint_t WEOF
-- The macro `WEOF' evaluates to a constant expression of type
-- `wint_t' whose value is different from any member of the extended
-- character set.
--
-- `WEOF' need not be the same value as `EOF' and unlike `EOF' it
-- also need _not_ be negative. In other words, sloppy code like
--
-- {
-- int c;
-- ...
-- while ((c = getc (fp)) < 0)
-- ...
-- }
--
-- has to be rewritten to use `WEOF' explicitly when wide characters
-- are used:
--
-- {
-- wint_t c;
-- ...
-- while ((c = wgetc (fp)) != WEOF)
-- ...
-- }
--
-- This macro was introduced in Amendment 1 to ISO C90 and is defined
-- in `wchar.h'.
--
-- These internal representations present problems when it comes to
--storing and transmittal. Because each single wide character consists
--of more than one byte, they are effected by byte-ordering. Thus,
--machines with different endianesses would see different values when
--accessing the same data. This byte ordering concern also applies for
--communication protocols that are all byte-based and, thereforet require
--that the sender has to decide about splitting the wide character in
--bytes. A last (but not least important) point is that wide characters
--often require more storage space than a customized byte-oriented
--character set.
--
-- For all the above reasons, an external encoding that is different
--from the internal encoding is often used if the latter is UCS-2 or
--UCS-4. The external encoding is byte-based and can be chosen
--appropriately for the environment and for the texts to be handled. A
--variety of different character sets can be used for this external
--encoding (information that will not be exhaustively presented
--here-instead, a description of the major groups will suffice). All of
--the ASCII-based character sets fulfill one requirement: they are
--"filesystem safe." This means that the character `'/'' is used in the
--encoding _only_ to represent itself. Things are a bit different for
--character sets like EBCDIC (Extended Binary Coded Decimal Interchange
--Code, a character set family used by IBM), but if the operation system
--does not understand EBCDIC directly the parameters-to-system calls have
--to be converted first anyhow.
--
-- * The simplest character sets are single-byte character sets. There
-- can be only up to 256 characters (for 8 bit character sets), which
-- is not sufficient to cover all languages but might be sufficient
-- to handle a specific text. Handling of a 8 bit character sets is
-- simple. This is not true for other kinds presented later, and
-- therefore, the application one uses might require the use of 8 bit
-- character sets.
--
-- * The ISO 2022 standard defines a mechanism for extended character
-- sets where one character _can_ be represented by more than one
-- byte. This is achieved by associating a state with the text.
-- Characters that can be used to change the state can be embedded in
-- the text. Each byte in the text might have a different
-- interpretation in each state. The state might even influence
-- whether a given byte stands for a character on its own or whether
-- it has to be combined with some more bytes.
--
-- In most uses of ISO 2022 the defined character sets do not allow
-- state changes that cover more than the next character. This has
-- the big advantage that whenever one can identify the beginning of
-- the byte sequence of a character one can interpret a text
-- correctly. Examples of character sets using this policy are the
-- various EUC character sets (used by Sun's operations systems,
-- EUC-JP, EUC-KR, EUC-TW, and EUC-CN) or Shift_JIS (SJIS, a Japanese
-- encoding).
--
-- But there are also character sets using a state that is valid for
-- more than one character and has to be changed by another byte
-- sequence. Examples for this are ISO-2022-JP, ISO-2022-KR, and
-- ISO-2022-CN.
--
-- * Early attempts to fix 8 bit character sets for other languages
-- using the Roman alphabet lead to character sets like ISO 6937.
-- Here bytes representing characters like the acute accent do not
-- produce output themselves: one has to combine them with other
-- characters to get the desired result. For example, the byte
-- sequence `0xc2 0x61' (non-spacing acute accent, followed by
-- lower-case `a') to get the "small a with acute" character. To
-- get the acute accent character on its own, one has to write `0xc2
-- 0x20' (the non-spacing acute followed by a space).
--
-- Character sets like ISO 6937 are used in some embedded systems such
-- as teletex.
--
-- * Instead of converting the Unicode or ISO 10646 text used
-- internally, it is often also sufficient to simply use an encoding
-- different than UCS-2/UCS-4. The Unicode and ISO 10646 standards
-- even specify such an encoding: UTF-8. This encoding is able to
-- represent all of ISO 10646 31 bits in a byte string of length one
-- to six.
--
-- There were a few other attempts to encode ISO 10646 such as UTF-7,
-- but UTF-8 is today the only encoding that should be used. In
-- fact, with any luck UTF-8 will soon be the only external encoding
-- that has to be supported. It proves to be universally usable and
-- its only disadvantage is that it favors Roman languages by making
-- the byte string representation of other scripts (Cyrillic, Greek,
-- Asian scripts) longer than necessary if using a specific character
-- set for these scripts. Methods like the Unicode compression
-- scheme can alleviate these problems.
--
-- The question remaining is: how to select the character set or
--encoding to use. The answer: you cannot decide about it yourself, it
--is decided by the developers of the system or the majority of the
--users. Since the goal is interoperability one has to use whatever the
--other people one works with use. If there are no constraints, the
--selection is based on the requirements the expected circle of users
--will have. In other words, if a project is expected to be used in
--only, say, Russia it is fine to use KOI8-R or a similar character set.
--But if at the same time people from, say, Greece are participating one
--should use a character set that allows all people to collaborate.
--
-- The most widely useful solution seems to be: go with the most general
--character set, namely ISO 10646. Use UTF-8 as the external encoding
--and problems about users not being able to use their own language
--adequately are a thing of the past.
--
-- One final comment about the choice of the wide character
--representation is necessary at this point. We have said above that the
--natural choice is using Unicode or ISO 10646. This is not required,
--but at least encouraged, by the ISO C standard. The standard defines
--at least a macro `__STDC_ISO_10646__' that is only defined on systems
--where the `wchar_t' type encodes ISO 10646 characters. If this symbol
--is not defined one should avoid making assumptions about the wide
--character representation. If the programmer uses only the functions
--provided by the C library to handle wide character strings there should
--be no compatibility problems with other systems.
--
--
--File: libc.info, Node: Charset Function Overview, Next: Restartable multibyte conversion, Prev: Extended Char Intro, Up: Character Set Handling
--
--Overview about Character Handling Functions
--===========================================
--
-- A Unix C library contains three different sets of functions in two
--families to handle character set conversion. One of the function
--families (the most commonly used) is specified in the ISO C90 standard
--and, therefore, is portable even beyond the Unix world. Unfortunately
--this family is the least useful one. These functions should be avoided
--whenever possible, especially when developing libraries (as opposed to
--applications).
--
-- The second family of functions got introduced in the early Unix
--standards (XPG2) and is still part of the latest and greatest Unix
--standard: Unix 98. It is also the most powerful and useful set of
--functions. But we will start with the functions defined in Amendment 1
--to ISO C90.
--
--
--File: libc.info, Node: Restartable multibyte conversion, Next: Non-reentrant Conversion, Prev: Charset Function Overview, Up: Character Set Handling
--
--Restartable Multibyte Conversion Functions
--==========================================
--
-- The ISO C standard defines functions to convert strings from a
--multibyte representation to wide character strings. There are a number
--of peculiarities:
--
-- * The character set assumed for the multibyte encoding is not
-- specified as an argument to the functions. Instead the character
-- set specified by the `LC_CTYPE' category of the current locale is
-- used; see *Note Locale Categories::.
--
-- * The functions handling more than one character at a time require
-- NUL terminated strings as the argument (i.e., converting blocks of
-- text does not work unless one can add a NUL byte at an appropriate
-- place). The GNU C library contains some extensions to the
-- standard that allow specifying a size, but basically they also
-- expect terminated strings.
--
-- Despite these limitations the ISO C functions can be used in many
--contexts. In graphical user interfaces, for instance, it is not
--uncommon to have functions that require text to be displayed in a wide
--character string if the text is not simple ASCII. The text itself might
--come from a file with translations and the user should decide about the
--current locale, which determines the translation and therefore also the
--external encoding used. In such a situation (and many others) the
--functions described here are perfect. If more freedom while performing
--the conversion is necessary take a look at the `iconv' functions (*note
--Generic Charset Conversion::).
--
--* Menu:
--
--* Selecting the Conversion:: Selecting the conversion and its properties.
--* Keeping the state:: Representing the state of the conversion.
--* Converting a Character:: Converting Single Characters.
--* Converting Strings:: Converting Multibyte and Wide Character
-- Strings.
--* Multibyte Conversion Example:: A Complete Multibyte Conversion Example.
--
--
--File: libc.info, Node: Selecting the Conversion, Next: Keeping the state, Up: Restartable multibyte conversion
--
--Selecting the conversion and its properties
---------------------------------------------
--
-- We already said above that the currently selected locale for the
--`LC_CTYPE' category decides about the conversion that is performed by
--the functions we are about to describe. Each locale uses its own
--character set (given as an argument to `localedef') and this is the one
--assumed as the external multibyte encoding. The wide character
--character set always is UCS-4, at least on GNU systems.
--
-- A characteristic of each multibyte character set is the maximum
--number of bytes that can be necessary to represent one character. This
--information is quite important when writing code that uses the
--conversion functions (as shown in the examples below). The ISO C
--standard defines two macros that provide this information.
--
-- - Macro: int MB_LEN_MAX
-- `MB_LEN_MAX' specifies the maximum number of bytes in the multibyte
-- sequence for a single character in any of the supported locales.
-- It is a compile-time constant and is defined in `limits.h'.
--
-- - Macro: int MB_CUR_MAX
-- `MB_CUR_MAX' expands into a positive integer expression that is the
-- maximum number of bytes in a multibyte character in the current
-- locale. The value is never greater than `MB_LEN_MAX'. Unlike
-- `MB_LEN_MAX' this macro need not be a compile-time constant, and in
-- the GNU C library it is not.
--
-- `MB_CUR_MAX' is defined in `stdlib.h'.
--
-- Two different macros are necessary since strictly ISO C90 compilers
--do not allow variable length array definitions, but still it is
--desirable to avoid dynamic allocation. This incomplete piece of code
--shows the problem:
--
-- {
-- char buf[MB_LEN_MAX];
-- ssize_t len = 0;
--
-- while (! feof (fp))
-- {
-- fread (&buf[len], 1, MB_CUR_MAX - len, fp);
-- /* ... process buf */
-- len -= used;
-- }
-- }
--
-- The code in the inner loop is expected to have always enough bytes in
--the array BUF to convert one multibyte character. The array BUF has to
--be sized statically since many compilers do not allow a variable size.
--The `fread' call makes sure that `MB_CUR_MAX' bytes are always
--available in BUF. Note that it isn't a problem if `MB_CUR_MAX' is not
--a compile-time constant.
--
--
--File: libc.info, Node: Keeping the state, Next: Converting a Character, Prev: Selecting the Conversion, Up: Restartable multibyte conversion
--
--Representing the state of the conversion
------------------------------------------
--
-- In the introduction of this chapter it was said that certain
--character sets use a "stateful" encoding. That is, the encoded values
--depend in some way on the previous bytes in the text.
--
-- Since the conversion functions allow converting a text in more than
--one step we must have a way to pass this information from one call of
--the functions to another.
--
-- - Data type: mbstate_t
-- A variable of type `mbstate_t' can contain all the information
-- about the "shift state" needed from one call to a conversion
-- function to another.
--
-- `mbstate_t' is defined in `wchar.h'. It was introduced in
-- Amendment 1 to ISO C90.
--
-- To use objects of type `mbstate_t' the programmer has to define such
--objects (normally as local variables on the stack) and pass a pointer to
--the object to the conversion functions. This way the conversion
--function can update the object if the current multibyte character set
--is stateful.
--
-- There is no specific function or initializer to put the state object
--in any specific state. The rules are that the object should always
--represent the initial state before the first use, and this is achieved
--by clearing the whole variable with code such as follows:
--
-- {
-- mbstate_t state;
-- memset (&state, '\0', sizeof (state));
-- /* from now on STATE can be used. */
-- ...
-- }
--
-- When using the conversion functions to generate output it is often
--necessary to test whether the current state corresponds to the initial
--state. This is necessary, for example, to decide whether to emit
--escape sequences to set the state to the initial state at certain
--sequence points. Communication protocols often require this.
--
-- - Function: int mbsinit (const mbstate_t *PS)
-- The `mbsinit' function determines whether the state object pointed
-- to by PS is in the initial state. If PS is a null pointer or the
-- object is in the initial state the return value is nonzero.
-- Otherwise it is zero.
--
-- `mbsinit' was introduced in Amendment 1 to ISO C90 and is declared
-- in `wchar.h'.
--
-- Code using `mbsinit' often looks similar to this:
--
-- {
-- mbstate_t state;
-- memset (&state, '\0', sizeof (state));
-- /* Use STATE. */
-- ...
-- if (! mbsinit (&state))
-- {
-- /* Emit code to return to initial state. */
-- const wchar_t empty[] = L"";
-- const wchar_t *srcp = empty;
-- wcsrtombs (outbuf, &srcp, outbuflen, &state);
-- }
-- ...
-- }
--
-- The code to emit the escape sequence to get back to the initial
--state is interesting. The `wcsrtombs' function can be used to
--determine the necessary output code (*note Converting Strings::).
--Please note that on GNU systems it is not necessary to perform this
--extra action for the conversion from multibyte text to wide character
--text since the wide character encoding is not stateful. But there is
--nothing mentioned in any standard that prohibits making `wchar_t' using
--a stateful encoding.
--
--
--File: libc.info, Node: Converting a Character, Next: Converting Strings, Prev: Keeping the state, Up: Restartable multibyte conversion
--
--Converting Single Characters
------------------------------
--
-- The most fundamental of the conversion functions are those dealing
--with single characters. Please note that this does not always mean
--single bytes. But since there is very often a subset of the multibyte
--character set that consists of single byte sequences, there are
--functions to help with converting bytes. Frequently, ASCII is a subpart
--of the multibyte character set. In such a scenario, each ASCII
--character stands for itself, and all other characters have at least a
--first byte that is beyond the range 0 to 127.
--
-- - Function: wint_t btowc (int C)
-- The `btowc' function ("byte to wide character") converts a valid
-- single byte character C in the initial shift state into the wide
-- character equivalent using the conversion rules from the currently
-- selected locale of the `LC_CTYPE' category.
--
-- If `(unsigned char) C' is no valid single byte multibyte character
-- or if C is `EOF', the function returns `WEOF'.
--
-- Please note the restriction of C being tested for validity only in
-- the initial shift state. No `mbstate_t' object is used from which
-- the state information is taken, and the function also does not use
-- any static state.
--
-- The `btowc' function was introduced in Amendment 1 to ISO C90 and
-- is declared in `wchar.h'.
--
-- Despite the limitation that the single byte value always is
--interpreted in the initial state this function is actually useful most
--of the time. Most characters are either entirely single-byte character
--sets or they are extension to ASCII. But then it is possible to write
--code like this (not that this specific example is very useful):
--
-- wchar_t *
-- itow (unsigned long int val)
-- {
-- static wchar_t buf[30];
-- wchar_t *wcp = &buf[29];
-- *wcp = L'\0';
-- while (val != 0)
-- {
-- *--wcp = btowc ('0' + val % 10);
-- val /= 10;
-- }
-- if (wcp == &buf[29])
-- *--wcp = L'0';
-- return wcp;
-- }
--
-- Why is it necessary to use such a complicated implementation and not
--simply cast `'0' + val % 10' to a wide character? The answer is that
--there is no guarantee that one can perform this kind of arithmetic on
--the character of the character set used for `wchar_t' representation.
--In other situations the bytes are not constant at compile time and so
--the compiler cannot do the work. In situations like this it is
--necessary `btowc'.
--
--There also is a function for the conversion in the other direction.
--
-- - Function: int wctob (wint_t C)
-- The `wctob' function ("wide character to byte") takes as the
-- parameter a valid wide character. If the multibyte representation
-- for this character in the initial state is exactly one byte long,
-- the return value of this function is this character. Otherwise
-- the return value is `EOF'.
--
-- `wctob' was introduced in Amendment 1 to ISO C90 and is declared
-- in `wchar.h'.
--
-- There are more general functions to convert single character from
--multibyte representation to wide characters and vice versa. These
--functions pose no limit on the length of the multibyte representation
--and they also do not require it to be in the initial state.
--
-- - Function: size_t mbrtowc (wchar_t *restrict PWC, const char
-- *restrict S, size_t N, mbstate_t *restrict PS)
-- The `mbrtowc' function ("multibyte restartable to wide character")
-- converts the next multibyte character in the string pointed to by
-- S into a wide character and stores it in the wide character string
-- pointed to by PWC. The conversion is performed according to the
-- locale currently selected for the `LC_CTYPE' category. If the
-- conversion for the character set used in the locale requires a
-- state, the multibyte string is interpreted in the state
-- represented by the object pointed to by PS. If PS is a null
-- pointer, a static, internal state variable used only by the
-- `mbrtowc' function is used.
--
-- If the next multibyte character corresponds to the NUL wide
-- character, the return value of the function is 0 and the state
-- object is afterwards in the initial state. If the next N or fewer
-- bytes form a correct multibyte character, the return value is the
-- number of bytes starting from S that form the multibyte character.
-- The conversion state is updated according to the bytes consumed
-- in the conversion. In both cases the wide character (either the
-- `L'\0'' or the one found in the conversion) is stored in the
-- string pointed to by PWC if PWC is not null.
--
-- If the first N bytes of the multibyte string possibly form a valid
-- multibyte character but there are more than N bytes needed to
-- complete it, the return value of the function is `(size_t) -2' and
-- no value is stored. Please note that this can happen even if N
-- has a value greater than or equal to `MB_CUR_MAX' since the input
-- might contain redundant shift sequences.
--
-- If the first `n' bytes of the multibyte string cannot possibly form
-- a valid multibyte character, no value is stored, the global
-- variable `errno' is set to the value `EILSEQ', and the function
-- returns `(size_t) -1'. The conversion state is afterwards
-- undefined.
--
-- `mbrtowc' was introduced in Amendment 1 to ISO C90 and is declared
-- in `wchar.h'.
--
-- Use of `mbrtowc' is straightforward. A function that copies a
--multibyte string into a wide character string while at the same time
--converting all lowercase characters into uppercase could look like this
--(this is not the final version, just an example; it has no error
--checking, and sometimes leaks memory):
--
-- wchar_t *
-- mbstouwcs (const char *s)
-- {
-- size_t len = strlen (s);
-- wchar_t *result = malloc ((len + 1) * sizeof (wchar_t));
-- wchar_t *wcp = result;
-- wchar_t tmp[1];
-- mbstate_t state;
-- size_t nbytes;
--
-- memset (&state, '\0', sizeof (state));
-- while ((nbytes = mbrtowc (tmp, s, len, &state)) > 0)
-- {
-- if (nbytes >= (size_t) -2)
-- /* Invalid input string. */
-- return NULL;
-- *result++ = towupper (tmp[0]);
-- len -= nbytes;
-- s += nbytes;
-- }
-- return result;
-- }
--
-- The use of `mbrtowc' should be clear. A single wide character is
--stored in `TMP[0]', and the number of consumed bytes is stored in the
--variable NBYTES. If the conversion is successful, the uppercase
--variant of the wide character is stored in the RESULT array and the
--pointer to the input string and the number of available bytes is
--adjusted.
--
-- The only non-obvious thing about `mbrtowc' might be the way memory
--is allocated for the result. The above code uses the fact that there
--can never be more wide characters in the converted results than there
--are bytes in the multibyte input string. This method yields a
--pessimistic guess about the size of the result, and if many wide
--character strings have to be constructed this way or if the strings are
--long, the extra memory required to be allocated because the input
--string contains multibyte characters might be significant. The
--allocated memory block can be resized to the correct size before
--returning it, but a better solution might be to allocate just the right
--amount of space for the result right away. Unfortunately there is no
--function to compute the length of the wide character string directly
--from the multibyte string. There is, however, a function that does
--part of the work.
--
-- - Function: size_t mbrlen (const char *restrict S, size_t N, mbstate_t
-- *PS)
-- The `mbrlen' function ("multibyte restartable length") computes
-- the number of at most N bytes starting at S, which form the next
-- valid and complete multibyte character.
--
-- If the next multibyte character corresponds to the NUL wide
-- character, the return value is 0. If the next N bytes form a valid
-- multibyte character, the number of bytes belonging to this
-- multibyte character byte sequence is returned.
--
-- If the the first N bytes possibly form a valid multibyte character
-- but the character is incomplete, the return value is `(size_t)
-- -2'. Otherwise the multibyte character sequence is invalid and
-- the return value is `(size_t) -1'.
--
-- The multibyte sequence is interpreted in the state represented by
-- the object pointed to by PS. If PS is a null pointer, a state
-- object local to `mbrlen' is used.
--
-- `mbrlen' was introduced in Amendment 1 to ISO C90 and is declared
-- in `wchar.h'.
--
-- The attentive reader now will note that `mbrlen' can be implemented
--as
--
-- mbrtowc (NULL, s, n, ps != NULL ? ps : &internal)
--
-- This is true and in fact is mentioned in the official specification.
--How can this function be used to determine the length of the wide
--character string created from a multibyte character string? It is not
--directly usable, but we can define a function `mbslen' using it:
--
-- size_t
-- mbslen (const char *s)
-- {
-- mbstate_t state;
-- size_t result = 0;
-- size_t nbytes;
-- memset (&state, '\0', sizeof (state));
-- while ((nbytes = mbrlen (s, MB_LEN_MAX, &state)) > 0)
-- {
-- if (nbytes >= (size_t) -2)
-- /* Something is wrong. */
-- return (size_t) -1;
-- s += nbytes;
-- ++result;
-- }
-- return result;
-- }
--
-- This function simply calls `mbrlen' for each multibyte character in
--the string and counts the number of function calls. Please note that
--we here use `MB_LEN_MAX' as the size argument in the `mbrlen' call.
--This is acceptable since a) this value is larger then the length of the
--longest multibyte character sequence and b) we know that the string S
--ends with a NUL byte, which cannot be part of any other multibyte
--character sequence but the one representing the NUL wide character.
--Therefore, the `mbrlen' function will never read invalid memory.
--
-- Now that this function is available (just to make this clear, this
--function is _not_ part of the GNU C library) we can compute the number
--of wide character required to store the converted multibyte character
--string S using
--
-- wcs_bytes = (mbslen (s) + 1) * sizeof (wchar_t);
--
-- Please note that the `mbslen' function is quite inefficient. The
--implementation of `mbstouwcs' with `mbslen' would have to perform the
--conversion of the multibyte character input string twice, and this
--conversion might be quite expensive. So it is necessary to think about
--the consequences of using the easier but imprecise method before doing
--the work twice.
--
-- - Function: size_t wcrtomb (char *restrict S, wchar_t WC, mbstate_t
-- *restrict PS)
-- The `wcrtomb' function ("wide character restartable to multibyte")
-- converts a single wide character into a multibyte string
-- corresponding to that wide character.
--
-- If S is a null pointer, the function resets the state stored in
-- the objects pointed to by PS (or the internal `mbstate_t' object)
-- to the initial state. This can also be achieved by a call like
-- this:
--
-- wcrtombs (temp_buf, L'\0', ps)
--
-- since, if S is a null pointer, `wcrtomb' performs as if it writes
-- into an internal buffer, which is guaranteed to be large enough.
--
-- If WC is the NUL wide character, `wcrtomb' emits, if necessary, a
-- shift sequence to get the state PS into the initial state followed
-- by a single NUL byte, which is stored in the string S.
--
-- Otherwise a byte sequence (possibly including shift sequences) is
-- written into the string S. This only happens if WC is a valid wide
-- character (i.e., it has a multibyte representation in the
-- character set selected by locale of the `LC_CTYPE' category). If
-- WC is no valid wide character, nothing is stored in the strings S,
-- `errno' is set to `EILSEQ', the conversion state in PS is
-- undefined and the return value is `(size_t) -1'.
--
-- If no error occurred the function returns the number of bytes
-- stored in the string S. This includes all bytes representing shift
-- sequences.
--
-- One word about the interface of the function: there is no parameter
-- specifying the length of the array S. Instead the function
-- assumes that there are at least `MB_CUR_MAX' bytes available since
-- this is the maximum length of any byte sequence representing a
-- single character. So the caller has to make sure that there is
-- enough space available, otherwise buffer overruns can occur.
--
-- `wcrtomb' was introduced in Amendment 1 to ISO C90 and is declared
-- in `wchar.h'.
--
-- Using `wcrtomb' is as easy as using `mbrtowc'. The following
--example appends a wide character string to a multibyte character string.
--Again, the code is not really useful (or correct), it is simply here to
--demonstrate the use and some problems.
--
-- char *
-- mbscatwcs (char *s, size_t len, const wchar_t *ws)
-- {
-- mbstate_t state;
-- /* Find the end of the existing string. */
-- char *wp = strchr (s, '\0');
-- len -= wp - s;
-- memset (&state, '\0', sizeof (state));
-- do
-- {
-- size_t nbytes;
-- if (len < MB_CUR_LEN)
-- {
-- /* We cannot guarantee that the next
-- character fits into the buffer, so
-- return an error. */
-- errno = E2BIG;
-- return NULL;
-- }
-- nbytes = wcrtomb (wp, *ws, &state);
-- if (nbytes == (size_t) -1)
-- /* Error in the conversion. */
-- return NULL;
-- len -= nbytes;
-- wp += nbytes;
-- }
-- while (*ws++ != L'\0');
-- return s;
-- }
--
-- First the function has to find the end of the string currently in the
--array S. The `strchr' call does this very efficiently since a
--requirement for multibyte character representations is that the NUL byte
--is never used except to represent itself (and in this context, the end
--of the string).
--
-- After initializing the state object the loop is entered where the
--first task is to make sure there is enough room in the array S. We
--abort if there are not at least `MB_CUR_LEN' bytes available. This is
--not always optimal but we have no other choice. We might have less
--than `MB_CUR_LEN' bytes available but the next multibyte character
--might also be only one byte long. At the time the `wcrtomb' call
--returns it is too late to decide whether the buffer was large enough.
--If this solution is unsuitable, there is a very slow but more accurate
--solution.
--
-- ...
-- if (len < MB_CUR_LEN)
-- {
-- mbstate_t temp_state;
-- memcpy (&temp_state, &state, sizeof (state));
-- if (wcrtomb (NULL, *ws, &temp_state) > len)
-- {
-- /* We cannot guarantee that the next
-- character fits into the buffer, so
-- return an error. */
-- errno = E2BIG;
-- return NULL;
-- }
-- }
-- ...
--
-- Here we perform the conversion that might overflow the buffer so that
--we are afterwards in the position to make an exact decision about the
--buffer size. Please note the `NULL' argument for the destination
--buffer in the new `wcrtomb' call; since we are not interested in the
--converted text at this point, this is a nice way to express this. The
--most unusual thing about this piece of code certainly is the duplication
--of the conversion state object, but if a change of the state is
--necessary to emit the next multibyte character, we want to have the
--same shift state change performed in the real conversion. Therefore,
--we have to preserve the initial shift state information.
--
-- There are certainly many more and even better solutions to this
--problem. This example is only provided for educational purposes.
--
--
--File: libc.info, Node: Converting Strings, Next: Multibyte Conversion Example, Prev: Converting a Character, Up: Restartable multibyte conversion
--
--Converting Multibyte and Wide Character Strings
-------------------------------------------------
--
-- The functions described in the previous section only convert a single
--character at a time. Most operations to be performed in real-world
--programs include strings and therefore the ISO C standard also defines
--conversions on entire strings. However, the defined set of functions
--is quite limited; therefore, the GNU C library contains a few
--extensions that can help in some important situations.
--
-- - Function: size_t mbsrtowcs (wchar_t *restrict DST, const char
-- **restrict SRC, size_t LEN, mbstate_t *restrict PS)
-- The `mbsrtowcs' function ("multibyte string restartable to wide
-- character string") converts an NUL-terminated multibyte character
-- string at `*SRC' into an equivalent wide character string,
-- including the NUL wide character at the end. The conversion is
-- started using the state information from the object pointed to by
-- PS or from an internal object of `mbsrtowcs' if PS is a null
-- pointer. Before returning, the state object is updated to match
-- the state after the last converted character. The state is the
-- initial state if the terminating NUL byte is reached and converted.
--
-- If DST is not a null pointer, the result is stored in the array
-- pointed to by DST; otherwise, the conversion result is not
-- available since it is stored in an internal buffer.
--
-- If LEN wide characters are stored in the array DST before reaching
-- the end of the input string, the conversion stops and LEN is
-- returned. If DST is a null pointer, LEN is never checked.
--
-- Another reason for a premature return from the function call is if
-- the input string contains an invalid multibyte sequence. In this
-- case the global variable `errno' is set to `EILSEQ' and the
-- function returns `(size_t) -1'.
--
-- In all other cases the function returns the number of wide
-- characters converted during this call. If DST is not null,
-- `mbsrtowcs' stores in the pointer pointed to by SRC either a null
-- pointer (if the NUL byte in the input string was reached) or the
-- address of the byte following the last converted multibyte
-- character.
--
-- `mbsrtowcs' was introduced in Amendment 1 to ISO C90 and is
-- declared in `wchar.h'.
--
-- The definition of the `mbsrtowcs' function has one important
--limitation. The requirement that DST has to be a NUL-terminated string
--provides problems if one wants to convert buffers with text. A buffer
--is normally no collection of NUL-terminated strings but instead a
--continuous collection of lines, separated by newline characters. Now
--assume that a function to convert one line from a buffer is needed.
--Since the line is not NUL-terminated, the source pointer cannot
--directly point into the unmodified text buffer. This means, either one
--inserts the NUL byte at the appropriate place for the time of the
--`mbsrtowcs' function call (which is not doable for a read-only buffer
--or in a multi-threaded application) or one copies the line in an extra
--buffer where it can be terminated by a NUL byte. Note that it is not
--in general possible to limit the number of characters to convert by
--setting the parameter LEN to any specific value. Since it is not known
--how many bytes each multibyte character sequence is in length, one can
--only guess.
--
-- There is still a problem with the method of NUL-terminating a line
--right after the newline character, which could lead to very strange
--results. As said in the description of the `mbsrtowcs' function above
--the conversion state is guaranteed to be in the initial shift state
--after processing the NUL byte at the end of the input string. But this
--NUL byte is not really part of the text (i.e., the conversion state
--after the newline in the original text could be something different
--than the initial shift state and therefore the first character of the
--next line is encoded using this state). But the state in question is
--never accessible to the user since the conversion stops after the NUL
--byte (which resets the state). Most stateful character sets in use
--today require that the shift state after a newline be the initial
--state-but this is not a strict guarantee. Therefore, simply
--NUL-terminating a piece of a running text is not always an adequate
--solution and, therefore, should never be used in generally used code.
--
-- The generic conversion interface (*note Generic Charset Conversion::)
--does not have this limitation (it simply works on buffers, not
--strings), and the GNU C library contains a set of functions that take
--additional parameters specifying the maximal number of bytes that are
--consumed from the input string. This way the problem of `mbsrtowcs''s
--example above could be solved by determining the line length and
--passing this length to the function.
--
-- - Function: size_t wcsrtombs (char *restrict DST, const wchar_t
-- **restrict SRC, size_t LEN, mbstate_t *restrict PS)
-- The `wcsrtombs' function ("wide character string restartable to
-- multibyte string") converts the NUL-terminated wide character
-- string at `*SRC' into an equivalent multibyte character string and
-- stores the result in the array pointed to by DST. The NUL wide
-- character is also converted. The conversion starts in the state
-- described in the object pointed to by PS or by a state object
-- locally to `wcsrtombs' in case PS is a null pointer. If DST is a
-- null pointer, the conversion is performed as usual but the result
-- is not available. If all characters of the input string were
-- successfully converted and if DST is not a null pointer, the
-- pointer pointed to by SRC gets assigned a null pointer.
--
-- If one of the wide characters in the input string has no valid
-- multibyte character equivalent, the conversion stops early, sets
-- the global variable `errno' to `EILSEQ', and returns `(size_t) -1'.
--
-- Another reason for a premature stop is if DST is not a null
-- pointer and the next converted character would require more than
-- LEN bytes in total to the array DST. In this case (and if DEST is
-- not a null pointer) the pointer pointed to by SRC is assigned a
-- value pointing to the wide character right after the last one
-- successfully converted.
--
-- Except in the case of an encoding error the return value of the
-- `wcsrtombs' function is the number of bytes in all the multibyte
-- character sequences stored in DST. Before returning the state in
-- the object pointed to by PS (or the internal object in case PS is
-- a null pointer) is updated to reflect the state after the last
-- conversion. The state is the initial shift state in case the
-- terminating NUL wide character was converted.
--
-- The `wcsrtombs' function was introduced in Amendment 1 to ISO C90
-- and is declared in `wchar.h'.
--
-- The restriction mentioned above for the `mbsrtowcs' function applies
--here also. There is no possibility of directly controlling the number
--of input characters. One has to place the NUL wide character at the
--correct place or control the consumed input indirectly via the
--available output array size (the LEN parameter).
--
-- - Function: size_t mbsnrtowcs (wchar_t *restrict DST, const char
-- **restrict SRC, size_t NMC, size_t LEN, mbstate_t *restrict
-- PS)
-- The `mbsnrtowcs' function is very similar to the `mbsrtowcs'
-- function. All the parameters are the same except for NMC, which is
-- new. The return value is the same as for `mbsrtowcs'.
--
-- This new parameter specifies how many bytes at most can be used
-- from the multibyte character string. In other words, the
-- multibyte character string `*SRC' need not be NUL-terminated. But
-- if a NUL byte is found within the NMC first bytes of the string,
-- the conversion stops here.
--
-- This function is a GNU extension. It is meant to work around the
-- problems mentioned above. Now it is possible to convert a buffer
-- with multibyte character text piece for piece without having to
-- care about inserting NUL bytes and the effect of NUL bytes on the
-- conversion state.
--
-- A function to convert a multibyte string into a wide character string
--and display it could be written like this (this is not a really useful
--example):
--
-- void
-- showmbs (const char *src, FILE *fp)
-- {
-- mbstate_t state;
-- int cnt = 0;
-- memset (&state, '\0', sizeof (state));
-- while (1)
-- {
-- wchar_t linebuf[100];
-- const char *endp = strchr (src, '\n');
-- size_t n;
--
-- /* Exit if there is no more line. */
-- if (endp == NULL)
-- break;
--
-- n = mbsnrtowcs (linebuf, &src, endp - src, 99, &state);
-- linebuf[n] = L'\0';
-- fprintf (fp, "line %d: \"%S\"\n", linebuf);
-- }
-- }
--
-- There is no problem with the state after a call to `mbsnrtowcs'.
--Since we don't insert characters in the strings that were not in there
--right from the beginning and we use STATE only for the conversion of
--the given buffer, there is no problem with altering the state.
--
-- - Function: size_t wcsnrtombs (char *restrict DST, const wchar_t
-- **restrict SRC, size_t NWC, size_t LEN, mbstate_t *restrict
-- PS)
-- The `wcsnrtombs' function implements the conversion from wide
-- character strings to multibyte character strings. It is similar to
-- `wcsrtombs' but, just like `mbsnrtowcs', it takes an extra
-- parameter, which specifies the length of the input string.
--
-- No more than NWC wide characters from the input string `*SRC' are
-- converted. If the input string contains a NUL wide character in
-- the first NWC characters, the conversion stops at this place.
--
-- The `wcsnrtombs' function is a GNU extension and just like
-- `mbsnrtowcs' helps in situations where no NUL-terminated input
-- strings are available.
--
-diff -u -udbrN glibc-2.3.2/manual/libc.pg glibc-2.3.2-200304020432/manual/libc.pg
---- glibc-2.3.2/manual/libc.pg Tue Feb 25 11:35:07 2003
-+++ glibc-2.3.2-200304020432/manual/libc.pg Thu Jan 1 01:00:00 1970
-@@ -1,289 +0,0 @@
--\entry{gcc}{2}{\code {gcc}}
--\entry{dirent.h}{7}{\code {dirent.h}}
--\entry{fcntl.h}{7}{\code {fcntl.h}}
--\entry{grp.h}{7}{\code {grp.h}}
--\entry{limits.h}{7}{\code {limits.h}}
--\entry{pwd.h}{7}{\code {pwd.h}}
--\entry{signal.h}{7}{\code {signal.h}}
--\entry{sys/stat.h}{7}{\code {sys/stat.h}}
--\entry{sys/times.h}{7}{\code {sys/times.h}}
--\entry{termios.h}{7}{\code {termios.h}}
--\entry{-lbsd-compat}{8}{\code {-lbsd-compat}}
--\entry{bsd-compat}{8}{\code {bsd-compat}}
--\entry{errno.h}{15}{\code {errno.h}}
--\entry{errno.h}{15}{\code {errno.h}}
--\entry{errno.h}{16}{\code {errno.h}}
--\entry{errno.h}{16}{\code {errno.h}}
--\entry{stdlib.h}{34}{\code {stdlib.h}}
--\entry{stdlib.h}{35}{\code {stdlib.h}}
--\entry{stdlib.h}{36}{\code {stdlib.h}}
--\entry{stdlib.h}{37}{\code {stdlib.h}}
--\entry{stdlib.h}{38}{\code {stdlib.h}}
--\entry{malloc.h}{39}{\code {malloc.h}}
--\entry{mcheck.h}{39}{\code {mcheck.h}}
--\entry{malloc.h}{41}{\code {malloc.h}}
--\entry{malloc.h}{43}{\code {malloc.h}}
--\entry{obstack.h}{49}{\code {obstack.h}}
--\entry{stdlib.h}{59}{\code {stdlib.h}}
--\entry{ctype.h}{67}{\code {ctype.h}}
--\entry{ctype.h}{67}{\code {ctype.h}}
--\entry{ctype.h}{69}{\code {ctype.h}}
--\entry{wctype.h}{70}{\code {wctype.h}}
--\entry{wctype.h}{70}{\code {wctype.h}}
--\entry{wctype.h}{70}{\code {wctype.h}}
--\entry{wctype.h}{70}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{71}{\code {wctype.h}}
--\entry{wctype.h}{72}{\code {wctype.h}}
--\entry{wctype.h}{72}{\code {wctype.h}}
--\entry{wctype.h}{72}{\code {wctype.h}}
--\entry{wctype.h}{72}{\code {wctype.h}}
--\entry{wctype.h}{74}{\code {wctype.h}}
--\entry{wctype.h}{74}{\code {wctype.h}}
--\entry{wctype.h}{74}{\code {wctype.h}}
--\entry{wctype.h}{74}{\code {wctype.h}}
--\entry{wctype.h}{74}{\code {wctype.h}}
--\entry{string.h}{77}{\code {string.h}}
--\entry{string.h}{79}{\code {string.h}}
--\entry{wchar.h}{79}{\code {wchar.h}}
--\entry{string.h}{89}{\code {string.h}}
--\entry{string.h}{92}{\code {string.h}}
--\entry{wchar.h}{92}{\code {wchar.h}}
--\entry{string.h}{96}{\code {string.h}}
--\entry{string.h}{100}{\code {string.h}}
--\entry{string.h}{105}{\code {string.h}}
--\entry{argz.h}{107}{\code {argz.h}}
--\entry{envz.h}{110}{\code {envz.h}}
--\entry{wchar.h}{112}{\code {wchar.h}}
--\entry{wchar.h}{113}{\code {wchar.h}}
--\entry{limits.h}{116}{\code {limits.h}}
--\entry{stdlib.h}{116}{\code {stdlib.h}}
--\entry{wchar.h}{116}{\code {wchar.h}}
--\entry{wchar.h}{117}{\code {wchar.h}}
--\entry{wchar.h}{118}{\code {wchar.h}}
--\entry{wchar.h}{118}{\code {wchar.h}}
--\entry{wchar.h}{119}{\code {wchar.h}}
--\entry{wchar.h}{120}{\code {wchar.h}}
--\entry{wchar.h}{122}{\code {wchar.h}}
--\entry{wchar.h}{123}{\code {wchar.h}}
--\entry{wchar.h}{125}{\code {wchar.h}}
--\entry{stdlib.h}{129}{\code {stdlib.h}}
--\entry{iconv.h}{133}{\code {iconv.h}}
--\entry{iconv.h}{133}{\code {iconv.h}}
--\entry{iconv.h}{135}{\code {iconv.h}}
--\entry{gconv.h}{142}{\code {gconv.h}}
--\entry{locale.h}{155}{\code {locale.h}}
--\entry{locale}{155}{\code {locale}}
--\entry{locale.h}{158}{\code {locale.h}}
--\entry{langinfo.h}{162}{\code {langinfo.h}}
--\entry{stdlib.h}{196}{\code {stdlib.h}}
--\entry{stdlib.h}{196}{\code {stdlib.h}}
--\entry{fnmatch.h}{205}{\code {fnmatch.h}}
--\entry{ksh}{206}{\code {ksh}}
--\entry{stdio.h}{231}{\code {stdio.h}}
--\entry{stdio.h}{231}{\code {stdio.h}}
--\entry{stdio.h}{232}{\code {stdio.h}}
--\entry{stdio.h}{241}{\code {stdio.h}}
--\entry{wchar.h}{241}{\code {wchar.h}}
--\entry{stdio.h}{243}{\code {stdio.h}}
--\entry{wchar.h}{243}{\code {wchar.h}}
--\entry{stdio.h}{249}{\code {stdio.h}}
--\entry{stdio.h}{259}{\code {stdio.h}}
--\entry{stdio.h}{262}{\code {stdio.h}}
--\entry{printf.h}{266}{\code {printf.h}}
--\entry{printf.h}{267}{\code {printf.h}}
--\entry{stdio.h}{279}{\code {stdio.h}}
--\entry{stdio.h}{284}{\code {stdio.h}}
--\entry{stdio.h}{287}{\code {stdio.h}}
--\entry{stdio.h}{289}{\code {stdio.h}}
--\entry{stdio.h}{290}{\code {stdio.h}}
--\entry{stdio.h}{292}{\code {stdio.h}}
--\entry{stdio.h}{295}{\code {stdio.h}}
--\entry{unistd.h}{303}{\code {unistd.h}}
--\entry{fcntl.h}{303}{\code {fcntl.h}}
--\entry{unistd.h}{306}{\code {unistd.h}}
--\entry{stdio.h}{313}{\code {stdio.h}}
--\entry{unistd.h}{313}{\code {unistd.h}}
--\entry{sys/types.h}{321}{\code {sys/types.h}}
--\entry{fcntl.h}{336}{\code {fcntl.h}}
--\entry{unistd.h}{337}{\code {unistd.h}}
--\entry{fcntl.h}{337}{\code {fcntl.h}}
--\entry{fcntl.h}{339}{\code {fcntl.h}}
--\entry{fcntl.h}{340}{\code {fcntl.h}}
--\entry{fcntl.h}{346}{\code {fcntl.h}}
--\entry{fcntl.h}{348}{\code {fcntl.h}}
--\entry{cd}{351}{\code {cd}}
--\entry{unistd.h}{351}{\code {unistd.h}}
--\entry{dirent.h}{353}{\code {dirent.h}}
--\entry{dirent.h}{354}{\code {dirent.h}}
--\entry{dirent.h}{355}{\code {dirent.h}}
--\entry{dirent.h}{357}{\code {dirent.h}}
--\entry{unistd.h}{364}{\code {unistd.h}}
--\entry{unistd.h}{365}{\code {unistd.h}}
--\entry{unistd.h}{367}{\code {unistd.h}}
--\entry{unistd.h}{368}{\code {unistd.h}}
--\entry{stdio.h}{368}{\code {stdio.h}}
--\entry{mkdir}{369}{\code {mkdir}}
--\entry{sys/stat.h}{370}{\code {sys/stat.h}}
--\entry{ls}{370}{\code {ls}}
--\entry{sys/stat.h}{370}{\code {sys/stat.h}}
--\entry{sys/stat.h}{376}{\code {sys/stat.h}}
--\entry{chown}{377}{\code {chown}}
--\entry{chgrp}{377}{\code {chgrp}}
--\entry{unistd.h}{377}{\code {unistd.h}}
--\entry{sys/stat.h}{378}{\code {sys/stat.h}}
--\entry{umask}{381}{\code {umask}}
--\entry{sys/stat.h}{381}{\code {sys/stat.h}}
--\entry{unistd.h}{383}{\code {unistd.h}}
--\entry{unistd.h}{383}{\code {unistd.h}}
--\entry{time.h}{383}{\code {time.h}}
--\entry{utime.h}{384}{\code {utime.h}}
--\entry{sys/time.h}{385}{\code {sys/time.h}}
--\entry{sys/stat.h}{388}{\code {sys/stat.h}}
--\entry{stdio.h}{389}{\code {stdio.h}}
--\entry{unistd.h}{393}{\code {unistd.h}}
--\entry{sys/stat.h}{396}{\code {sys/stat.h}}
--\entry{sys/socket.h}{400}{\code {sys/socket.h}}
--\entry{sys/socket.h}{402}{\code {sys/socket.h}}
--\entry{sys/socket.h}{403}{\code {sys/socket.h}}
--\entry{sys/socket.h}{403}{\code {sys/socket.h}}
--\entry{sys/socket.h}{405}{\code {sys/socket.h}}
--\entry{sys/un.h}{406}{\code {sys/un.h}}
--\entry{sys/socket.h}{407}{\code {sys/socket.h}}
--\entry{netinet/in.h}{408}{\code {netinet/in.h}}
--\entry{netinet/in.h}{411}{\code {netinet/in.h}}
--\entry{arpa/inet.h}{411}{\code {arpa/inet.h}}
--\entry{/etc/hosts}{413}{\code {/etc/hosts}}
--\entry{netdb.h}{413}{\code {netdb.h}}
--\entry{netinet/in.h}{417}{\code {netinet/in.h}}
--\entry{/etc/services}{417}{\code {/etc/services}}
--\entry{netdb.h}{417}{\code {netdb.h}}
--\entry{netinet/in.h}{418}{\code {netinet/in.h}}
--\entry{/etc/protocols}{419}{\code {/etc/protocols}}
--\entry{netdb.h}{419}{\code {netdb.h}}
--\entry{sys/socket.h}{422}{\code {sys/socket.h}}
--\entry{sys/socket.h}{422}{\code {sys/socket.h}}
--\entry{sys/socket.h}{423}{\code {sys/socket.h}}
--\entry{sys/socket.h}{428}{\code {sys/socket.h}}
--\entry{sys/socket.h}{428}{\code {sys/socket.h}}
--\entry{sys/socket.h}{429}{\code {sys/socket.h}}
--\entry{sys/socket.h}{436}{\code {sys/socket.h}}
--\entry{sys/socket.h}{441}{\code {sys/socket.h}}
--\entry{sys/socket.h}{441}{\code {sys/socket.h}}
--\entry{/etc/networks}{443}{\code {/etc/networks}}
--\entry{netdb.h}{443}{\code {netdb.h}}
--\entry{unistd.h}{445}{\code {unistd.h}}
--\entry{termios.h}{447}{\code {termios.h}}
--\entry{stdlib.h}{468}{\code {stdlib.h}}
--\entry{math.h}{479}{\code {math.h}}
--\entry{complex.h}{479}{\code {complex.h}}
--\entry{stdlib.h}{508}{\code {stdlib.h}}
--\entry{stdlib.h}{509}{\code {stdlib.h}}
--\entry{stdlib.h}{511}{\code {stdlib.h}}
--\entry{stdint.h}{517}{\code {stdint.h}}
--\entry{stdlib.h}{518}{\code {stdlib.h}}
--\entry{math.h}{520}{\code {math.h}}
--\entry{math.h}{530}{\code {math.h}}
--\entry{stdlib.h}{530}{\code {stdlib.h}}
--\entry{math.h}{531}{\code {math.h}}
--\entry{math.h}{532}{\code {math.h}}
--\entry{complex.h}{538}{\code {complex.h}}
--\entry{complex.h}{539}{\code {complex.h}}
--\entry{stdlib.h}{540}{\code {stdlib.h}}
--\entry{wchar.h}{540}{\code {wchar.h}}
--\entry{stdlib.h}{544}{\code {stdlib.h}}
--\entry{time.h}{551}{\code {time.h}}
--\entry{sys/times.h}{552}{\code {sys/times.h}}
--\entry{time.h}{553}{\code {time.h}}
--\entry{sys/time.h}{554}{\code {sys/time.h}}
--\entry{sys/timex.h}{559}{\code {sys/timex.h}}
--\entry{time.h}{562}{\code {time.h}}
--\entry{time.h}{575}{\code {time.h}}
--\entry{/etc/localtime}{576}{\code {/etc/localtime}}
--\entry{localtime}{576}{\code {localtime}}
--\entry{/share/lib/zoneinfo}{576}{\code {/share/lib/zoneinfo}}
--\entry{zoneinfo}{576}{\code {zoneinfo}}
--\entry{unistd.h}{579}{\code {unistd.h}}
--\entry{sys/time.h}{579}{\code {sys/time.h}}
--\entry{sys/resource.h}{583}{\code {sys/resource.h}}
--\entry{sys/vtimes.h}{584}{\code {sys/vtimes.h}}
--\entry{sys/resource.h}{586}{\code {sys/resource.h}}
--\entry{ulimit.h}{588}{\code {ulimit.h}}
--\entry{sys/vlimit.h}{588}{\code {sys/vlimit.h}}
--\entry{sys/resource.h}{596}{\code {sys/resource.h}}
--\entry{setjmp.h}{602}{\code {setjmp.h}}
--\entry{setjmp.h}{603}{\code {setjmp.h}}
--\entry{signal.h}{613}{\code {signal.h}}
--\entry{kill}{616}{\code {kill}}
--\entry{string.h}{621}{\code {string.h}}
--\entry{stdio.h}{622}{\code {stdio.h}}
--\entry{signal.h}{622}{\code {signal.h}}
--\entry{signal.h}{624}{\code {signal.h}}
--\entry{signal.h}{627}{\code {signal.h}}
--\entry{signal.h}{639}{\code {signal.h}}
--\entry{signal.h}{640}{\code {signal.h}}
--\entry{signal.h}{644}{\code {signal.h}}
--\entry{signal.h}{645}{\code {signal.h}}
--\entry{signal.h}{647}{\code {signal.h}}
--\entry{signal.h}{654}{\code {signal.h}}
--\entry{unistd.h}{659}{\code {unistd.h}}
--\entry{argp.h}{666}{\code {argp.h}}
--\entry{stdlib.h}{691}{\code {stdlib.h}}
--\entry{stdlib.h}{697}{\code {stdlib.h}}
--\entry{stdlib.h}{699}{\code {stdlib.h}}
--\entry{unistd.h}{699}{\code {unistd.h}}
--\entry{sh}{701}{\code {sh}}
--\entry{stdlib.h}{701}{\code {stdlib.h}}
--\entry{sys/types.h}{702}{\code {sys/types.h}}
--\entry{unistd.h}{702}{\code {unistd.h}}
--\entry{unistd.h}{703}{\code {unistd.h}}
--\entry{unistd.h}{704}{\code {unistd.h}}
--\entry{sys/wait.h}{706}{\code {sys/wait.h}}
--\entry{sys/wait.h}{709}{\code {sys/wait.h}}
--\entry{sys/wait.h}{709}{\code {sys/wait.h}}
--\entry{stdio.h}{728}{\code {stdio.h}}
--\entry{unistd.h}{728}{\code {unistd.h}}
--\entry{sys/types.h}{728}{\code {sys/types.h}}
--\entry{-lbsd-compat}{729}{\code {-lbsd-compat}}
--\entry{bsd-compat}{729}{\code {bsd-compat}}
--\entry{unistd.h}{730}{\code {unistd.h}}
--\entry{sys/types.h}{730}{\code {sys/types.h}}
--\entry{unistd.h}{745}{\code {unistd.h}}
--\entry{sys/types.h}{745}{\code {sys/types.h}}
--\entry{unistd.h}{746}{\code {unistd.h}}
--\entry{sys/types.h}{746}{\code {sys/types.h}}
--\entry{unistd.h}{747}{\code {unistd.h}}
--\entry{sys/types.h}{747}{\code {sys/types.h}}
--\entry{grp.h}{748}{\code {grp.h}}
--\entry{grp.h}{748}{\code {grp.h}}
--\entry{stdio.h}{753}{\code {stdio.h}}
--\entry{unistd.h}{753}{\code {unistd.h}}
--\entry{utmp.h}{754}{\code {utmp.h}}
--\entry{utmpx.h}{758}{\code {utmpx.h}}
--\entry{utmp.h}{760}{\code {utmp.h}}
--\entry{/etc/passwd}{761}{\code {/etc/passwd}}
--\entry{pwd.h}{761}{\code {pwd.h}}
--\entry{/etc/group}{764}{\code {/etc/group}}
--\entry{grp.h}{764}{\code {grp.h}}
--\entry{hostname}{771}{\code {hostname}}
--\entry{hostid}{771}{\code {hostid}}
--\entry{unistd.h}{771}{\code {unistd.h}}
--\entry{sys/param.h}{772}{\code {sys/param.h}}
--\entry{sys/utsname.h}{773}{\code {sys/utsname.h}}
--\entry{limits.h}{787}{\code {limits.h}}
--\entry{unistd.h}{788}{\code {unistd.h}}
--\entry{limits.h}{799}{\code {limits.h}}
--\entry{unistd.h}{800}{\code {unistd.h}}
--\entry{unistd.h}{801}{\code {unistd.h}}
--\entry{execinfo.h}{817}{\code {execinfo.h}}
--\entry{assert.h}{841}{\code {assert.h}}
--\entry{stdarg.h}{844}{\code {stdarg.h}}
--\entry{stdarg.h}{846}{\code {stdarg.h}}
--\entry{varargs.h}{847}{\code {varargs.h}}
--\entry{stddef.h}{849}{\code {stddef.h}}
--\entry{limits.h}{850}{\code {limits.h}}
--\entry{float.h}{853}{\code {float.h}}
-diff -u -udbrN glibc-2.3.2/manual/libc.pgs glibc-2.3.2-200304020432/manual/libc.pgs
---- glibc-2.3.2/manual/libc.pgs Tue Feb 25 11:34:58 2003
-+++ glibc-2.3.2-200304020432/manual/libc.pgs Thu Jan 1 01:00:00 1970
-@@ -1,106 +0,0 @@
--\initial {-}
--\entry {\code {-lbsd-compat}}{8, 729}
--\initial {/}
--\entry {\code {/etc/group}}{764}
--\entry {\code {/etc/hosts}}{413}
--\entry {\code {/etc/localtime}}{576}
--\entry {\code {/etc/networks}}{443}
--\entry {\code {/etc/passwd}}{761}
--\entry {\code {/etc/protocols}}{419}
--\entry {\code {/etc/services}}{417}
--\entry {\code {/share/lib/zoneinfo}}{576}
--\initial {A}
--\entry {\code {argp.h}}{666}
--\entry {\code {argz.h}}{107}
--\entry {\code {arpa/inet.h}}{411}
--\entry {\code {assert.h}}{841}
--\initial {B}
--\entry {\code {bsd-compat}}{8, 729}
--\initial {C}
--\entry {\code {cd}}{351}
--\entry {\code {chgrp}}{377}
--\entry {\code {chown}}{377}
--\entry {\code {complex.h}}{479, 538, 539}
--\entry {\code {ctype.h}}{67, 69}
--\initial {D}
--\entry {\code {dirent.h}}{7, 353, 354, 355, 357}
--\initial {E}
--\entry {\code {envz.h}}{110}
--\entry {\code {errno.h}}{15, 16}
--\entry {\code {execinfo.h}}{817}
--\initial {F}
--\entry {\code {fcntl.h}}{7, 303, 336, 337, 339, 340, 346, 348}
--\entry {\code {float.h}}{853}
--\entry {\code {fnmatch.h}}{205}
--\initial {G}
--\entry {\code {gcc}}{2}
--\entry {\code {gconv.h}}{142}
--\entry {\code {grp.h}}{7, 748, 764}
--\initial {H}
--\entry {\code {hostid}}{771}
--\entry {\code {hostname}}{771}
--\initial {I}
--\entry {\code {iconv.h}}{133, 135}
--\initial {K}
--\entry {\code {kill}}{616}
--\entry {\code {ksh}}{206}
--\initial {L}
--\entry {\code {langinfo.h}}{162}
--\entry {\code {limits.h}}{7, 116, 787, 799, 850}
--\entry {\code {locale}}{155}
--\entry {\code {locale.h}}{155, 158}
--\entry {\code {localtime}}{576}
--\entry {\code {ls}}{370}
--\initial {M}
--\entry {\code {malloc.h}}{39, 41, 43}
--\entry {\code {math.h}}{479, 520, 530, 531, 532}
--\entry {\code {mcheck.h}}{39}
--\entry {\code {mkdir}}{369}
--\initial {N}
--\entry {\code {netdb.h}}{413, 417, 419, 443}
--\entry {\code {netinet/in.h}}{408, 411, 417, 418}
--\initial {O}
--\entry {\code {obstack.h}}{49}
--\initial {P}
--\entry {\code {printf.h}}{266, 267}
--\entry {\code {pwd.h}}{7, 761}
--\initial {S}
--\entry {\code {setjmp.h}}{602, 603}
--\entry {\code {sh}}{701}
--\entry {\code {signal.h}}{7, 613, 622, 624, 627, 639, 640, 644, 645, 647, 654}
--\entry {\code {stdarg.h}}{844, 846}
--\entry {\code {stddef.h}}{849}
--\entry {\code {stdint.h}}{517}
--\entry {\code {stdio.h}}{231, 232, 241, 243, 249, 259, 262, 279, 284, 287, 289, 290, 292, 295, 313, 368, 389, 622, 728, 753}
--\entry {\code {stdlib.h}}{34, 35, 36, 37, 38, 59, 116, 129, 196, 468, 508, 509, 511, 518, 530, 540, 544, 691, 697, 699, 701}
--\entry {\code {string.h}}{77, 79, 89, 92, 96, 100, 105, 621}
--\entry {\code {sys/param.h}}{772}
--\entry {\code {sys/resource.h}}{583, 586, 596}
--\entry {\code {sys/socket.h}}{400, 402, 403, 405, 407, 422, 423, 428, 429, 436, 441}
--\entry {\code {sys/stat.h}}{7, 370, 376, 378, 381, 388, 396}
--\entry {\code {sys/time.h}}{385, 554, 579}
--\entry {\code {sys/times.h}}{7, 552}
--\entry {\code {sys/timex.h}}{559}
--\entry {\code {sys/types.h}}{321, 702, 728, 730, 745, 746, 747}
--\entry {\code {sys/un.h}}{406}
--\entry {\code {sys/utsname.h}}{773}
--\entry {\code {sys/vlimit.h}}{588}
--\entry {\code {sys/vtimes.h}}{584}
--\entry {\code {sys/wait.h}}{706, 709}
--\initial {T}
--\entry {\code {termios.h}}{7, 447}
--\entry {\code {time.h}}{383, 551, 553, 562, 575}
--\initial {U}
--\entry {\code {ulimit.h}}{588}
--\entry {\code {umask}}{381}
--\entry {\code {unistd.h}}{303, 306, 313, 337, 351, 364, 365, 367, 368, 377, 383, 393, 445, 579, 659, 699, 702, 703, 704, 728, 730, 745, 746, 747, 753, 771, 788, 800, 801}
--\entry {\code {utime.h}}{384}
--\entry {\code {utmp.h}}{754, 760}
--\entry {\code {utmpx.h}}{758}
--\initial {V}
--\entry {\code {varargs.h}}{847}
--\initial {W}
--\entry {\code {wchar.h}}{79, 92, 112, 113, 116, 117, 118, 119, 120, 122, 123, 125, 241, 243, 540}
--\entry {\code {wctype.h}}{70, 71, 72, 74}
--\initial {Z}
--\entry {\code {zoneinfo}}{576}
-diff -u -udbrN glibc-2.3.2/manual/libc.tp glibc-2.3.2-200304020432/manual/libc.tp
---- glibc-2.3.2/manual/libc.tp Tue Feb 25 11:35:07 2003
-+++ glibc-2.3.2-200304020432/manual/libc.tp Thu Jan 1 01:00:00 1970
-@@ -1,127 +0,0 @@
--\entry{enum mcheck_status}{40}{\code {enum mcheck_status}}
--\entry{struct mallinfo}{43}{\code {struct mallinfo}}
--\entry{struct obstack}{49}{\code {struct obstack}}
--\entry{wctype_t}{70}{\code {wctype_t}}
--\entry{wctrans_t}{74}{\code {wctrans_t}}
--\entry{wchar_t}{112}{\code {wchar_t}}
--\entry{wint_t}{112}{\code {wint_t}}
--\entry{mbstate_t}{116}{\code {mbstate_t}}
--\entry{iconv_t}{132}{\code {iconv_t}}
--\entry{struct __gconv_step}{142}{\code {struct __gconv_step}}
--\entry{struct __gconv_step_data}{143}{\code {struct __gconv_step_data}}
--\entry{struct lconv}{158}{\code {struct lconv}}
--\entry{comparison_fn_t}{195}{\code {comparison_fn_t}}
--\entry{struct ENTRY}{200}{\code {struct ENTRY}}
--\entry{VISIT}{203}{\code {VISIT}}
--\entry{glob_t}{207}{\code {glob_t}}
--\entry{glob64_t}{208}{\code {glob64_t}}
--\entry{regex_t}{213}{\code {regex_t}}
--\entry{regmatch_t}{216}{\code {regmatch_t}}
--\entry{regoff_t}{217}{\code {regoff_t}}
--\entry{wordexp_t}{219}{\code {wordexp_t}}
--\entry{FILE}{231}{\code {FILE}}
--\entry{struct printf_info}{267}{\code {struct printf_info}}
--\entry{printf_function}{269}{\code {printf_function}}
--\entry{printf_arginfo_function}{269}{\code {printf_arginfo_function}}
--\entry{fpos_t}{287}{\code {fpos_t}}
--\entry{fpos64_t}{287}{\code {fpos64_t}}
--\entry{cookie_io_functions_t}{295}{\code {cookie_io_functions_t}}
--\entry{cookie_read_function}{297}{\code {cookie_read_function}}
--\entry{cookie_write_function}{297}{\code {cookie_write_function}}
--\entry{cookie_seek_function}{297}{\code {cookie_seek_function}}
--\entry{cookie_close_function}{297}{\code {cookie_close_function}}
--\entry{ssize_t}{306}{\code {ssize_t}}
--\entry{off_t}{312}{\code {off_t}}
--\entry{off64_t}{312}{\code {off64_t}}
--\entry{struct iovec}{316}{\code {struct iovec}}
--\entry{fd_set}{321}{\code {fd_set}}
--\entry{struct aiocb}{325}{\code {struct aiocb}}
--\entry{struct aiocb64}{326}{\code {struct aiocb64}}
--\entry{struct aioinit}{335}{\code {struct aioinit}}
--\entry{struct flock}{346}{\code {struct flock}}
--\entry{struct dirent}{353}{\code {struct dirent}}
--\entry{DIR}{354}{\code {DIR}}
--\entry{__ftw_func_t}{360}{\code {__ftw_func_t}}
--\entry{__ftw64_func_t}{361}{\code {__ftw64_func_t}}
--\entry{__nftw_func_t}{361}{\code {__nftw_func_t}}
--\entry{__nftw64_func_t}{361}{\code {__nftw64_func_t}}
--\entry{struct FTW}{361}{\code {struct FTW}}
--\entry{struct stat}{370}{\code {struct stat}}
--\entry{struct stat64}{372}{\code {struct stat64}}
--\entry{mode_t}{373}{\code {mode_t}}
--\entry{ino_t}{373}{\code {ino_t}}
--\entry{ino64_t}{373}{\code {ino64_t}}
--\entry{dev_t}{374}{\code {dev_t}}
--\entry{nlink_t}{374}{\code {nlink_t}}
--\entry{blkcnt_t}{374}{\code {blkcnt_t}}
--\entry{blkcnt64_t}{374}{\code {blkcnt64_t}}
--\entry{struct utimbuf}{384}{\code {struct utimbuf}}
--\entry{struct sockaddr}{402}{\code {struct sockaddr}}
--\entry{struct if_nameindex}{404}{\code {struct if_nameindex}}
--\entry{struct sockaddr_un}{406}{\code {struct sockaddr_un}}
--\entry{struct sockaddr_in}{408}{\code {struct sockaddr_in}}
--\entry{struct sockaddr_in6}{408}{\code {struct sockaddr_in6}}
--\entry{struct in_addr}{411}{\code {struct in_addr}}
--\entry{struct in6_addr}{411}{\code {struct in6_addr}}
--\entry{struct hostent}{413}{\code {struct hostent}}
--\entry{struct servent}{417}{\code {struct servent}}
--\entry{struct protoent}{419}{\code {struct protoent}}
--\entry{struct linger}{442}{\code {struct linger}}
--\entry{struct netent}{443}{\code {struct netent}}
--\entry{struct termios}{447}{\code {struct termios}}
--\entry{tcflag_t}{448}{\code {tcflag_t}}
--\entry{cc_t}{448}{\code {cc_t}}
--\entry{speed_t}{457}{\code {speed_t}}
--\entry{struct sgttyb}{464}{\code {struct sgttyb}}
--\entry{struct random_data}{510}{\code {struct random_data}}
--\entry{div_t}{518}{\code {div_t}}
--\entry{ldiv_t}{519}{\code {ldiv_t}}
--\entry{lldiv_t}{519}{\code {lldiv_t}}
--\entry{imaxdiv_t}{519}{\code {imaxdiv_t}}
--\entry{struct timeval}{550}{\code {struct timeval}}
--\entry{struct timespec}{550}{\code {struct timespec}}
--\entry{clock_t}{552}{\code {clock_t}}
--\entry{struct tms}{552}{\code {struct tms}}
--\entry{time_t}{553}{\code {time_t}}
--\entry{struct timezone}{554}{\code {struct timezone}}
--\entry{struct tm}{556}{\code {struct tm}}
--\entry{struct ntptimeval}{559}{\code {struct ntptimeval}}
--\entry{struct ntptimeval}{559}{\code {struct ntptimeval}}
--\entry{struct timex}{559}{\code {struct timex}}
--\entry{struct timex}{560}{\code {struct timex}}
--\entry{struct itimerval}{579}{\code {struct itimerval}}
--\entry{struct rusage}{583}{\code {struct rusage}}
--\entry{struct vtimes}{585}{\code {struct vtimes}}
--\entry{struct rlimit}{586}{\code {struct rlimit}}
--\entry{struct rlimit64}{587}{\code {struct rlimit64}}
--\entry{struct sched_param}{592}{\code {struct sched_param}}
--\entry{jmp_buf}{602}{\code {jmp_buf}}
--\entry{sigjmp_buf}{603}{\code {sigjmp_buf}}
--\entry{ucontext_t}{604}{\code {ucontext_t}}
--\entry{sighandler_t}{622}{\code {sighandler_t}}
--\entry{struct sigaction}{624}{\code {struct sigaction}}
--\entry{sig_atomic_t}{637}{\code {sig_atomic_t}}
--\entry{sigset_t}{644}{\code {sigset_t}}
--\entry{stack_t}{652}{\code {stack_t}}
--\entry{struct sigstack}{653}{\code {struct sigstack}}
--\entry{struct sigvec}{654}{\code {struct sigvec}}
--\entry{struct option}{662}{\code {struct option}}
--\entry{struct argp}{667}{\code {struct argp}}
--\entry{struct argp_option}{668}{\code {struct argp_option}}
--\entry{struct argp_state}{675}{\code {struct argp_state}}
--\entry{struct argp_child}{676}{\code {struct argp_child}}
--\entry{pid_t}{702}{\code {pid_t}}
--\entry{union wait}{709}{\code {union wait}}
--\entry{uid_t}{745}{\code {uid_t}}
--\entry{gid_t}{745}{\code {gid_t}}
--\entry{struct exit_status}{754}{\code {struct exit_status}}
--\entry{struct utmp}{754}{\code {struct utmp}}
--\entry{struct utmpx}{758}{\code {struct utmpx}}
--\entry{struct passwd}{761}{\code {struct passwd}}
--\entry{struct group}{764}{\code {struct group}}
--\entry{struct utsname}{773}{\code {struct utsname}}
--\entry{struct fstab}{775}{\code {struct fstab}}
--\entry{struct mntent}{777}{\code {struct mntent}}
--\entry{va_list}{846}{\code {va_list}}
--\entry{ptrdiff_t}{849}{\code {ptrdiff_t}}
--\entry{size_t}{849}{\code {size_t}}
-diff -u -udbrN glibc-2.3.2/manual/libc.tps glibc-2.3.2-200304020432/manual/libc.tps
---- glibc-2.3.2/manual/libc.tps Tue Feb 25 11:34:58 2003
-+++ glibc-2.3.2-200304020432/manual/libc.tps Thu Jan 1 01:00:00 1970
-@@ -1,145 +0,0 @@
--\initial {_}
--\entry {\code {__ftw_func_t}}{360}
--\entry {\code {__ftw64_func_t}}{361}
--\entry {\code {__nftw_func_t}}{361}
--\entry {\code {__nftw64_func_t}}{361}
--\initial {B}
--\entry {\code {blkcnt_t}}{374}
--\entry {\code {blkcnt64_t}}{374}
--\initial {C}
--\entry {\code {cc_t}}{448}
--\entry {\code {clock_t}}{552}
--\entry {\code {comparison_fn_t}}{195}
--\entry {\code {cookie_close_function}}{297}
--\entry {\code {cookie_io_functions_t}}{295}
--\entry {\code {cookie_read_function}}{297}
--\entry {\code {cookie_seek_function}}{297}
--\entry {\code {cookie_write_function}}{297}
--\initial {D}
--\entry {\code {dev_t}}{374}
--\entry {\code {DIR}}{354}
--\entry {\code {div_t}}{518}
--\initial {E}
--\entry {\code {enum mcheck_status}}{40}
--\initial {F}
--\entry {\code {fd_set}}{321}
--\entry {\code {FILE}}{231}
--\entry {\code {fpos_t}}{287}
--\entry {\code {fpos64_t}}{287}
--\initial {G}
--\entry {\code {gid_t}}{745}
--\entry {\code {glob_t}}{207}
--\entry {\code {glob64_t}}{208}
--\initial {I}
--\entry {\code {iconv_t}}{132}
--\entry {\code {imaxdiv_t}}{519}
--\entry {\code {ino_t}}{373}
--\entry {\code {ino64_t}}{373}
--\initial {J}
--\entry {\code {jmp_buf}}{602}
--\initial {L}
--\entry {\code {ldiv_t}}{519}
--\entry {\code {lldiv_t}}{519}
--\initial {M}
--\entry {\code {mbstate_t}}{116}
--\entry {\code {mode_t}}{373}
--\initial {N}
--\entry {\code {nlink_t}}{374}
--\initial {O}
--\entry {\code {off_t}}{312}
--\entry {\code {off64_t}}{312}
--\initial {P}
--\entry {\code {pid_t}}{702}
--\entry {\code {printf_arginfo_function}}{269}
--\entry {\code {printf_function}}{269}
--\entry {\code {ptrdiff_t}}{849}
--\initial {R}
--\entry {\code {regex_t}}{213}
--\entry {\code {regmatch_t}}{216}
--\entry {\code {regoff_t}}{217}
--\initial {S}
--\entry {\code {sig_atomic_t}}{637}
--\entry {\code {sighandler_t}}{622}
--\entry {\code {sigjmp_buf}}{603}
--\entry {\code {sigset_t}}{644}
--\entry {\code {size_t}}{849}
--\entry {\code {speed_t}}{457}
--\entry {\code {ssize_t}}{306}
--\entry {\code {stack_t}}{652}
--\entry {\code {struct __gconv_step}}{142}
--\entry {\code {struct __gconv_step_data}}{143}
--\entry {\code {struct aiocb}}{325}
--\entry {\code {struct aiocb64}}{326}
--\entry {\code {struct aioinit}}{335}
--\entry {\code {struct argp}}{667}
--\entry {\code {struct argp_child}}{676}
--\entry {\code {struct argp_option}}{668}
--\entry {\code {struct argp_state}}{675}
--\entry {\code {struct dirent}}{353}
--\entry {\code {struct ENTRY}}{200}
--\entry {\code {struct exit_status}}{754}
--\entry {\code {struct flock}}{346}
--\entry {\code {struct fstab}}{775}
--\entry {\code {struct FTW}}{361}
--\entry {\code {struct group}}{764}
--\entry {\code {struct hostent}}{413}
--\entry {\code {struct if_nameindex}}{404}
--\entry {\code {struct in_addr}}{411}
--\entry {\code {struct in6_addr}}{411}
--\entry {\code {struct iovec}}{316}
--\entry {\code {struct itimerval}}{579}
--\entry {\code {struct lconv}}{158}
--\entry {\code {struct linger}}{442}
--\entry {\code {struct mallinfo}}{43}
--\entry {\code {struct mntent}}{777}
--\entry {\code {struct netent}}{443}
--\entry {\code {struct ntptimeval}}{559}
--\entry {\code {struct obstack}}{49}
--\entry {\code {struct option}}{662}
--\entry {\code {struct passwd}}{761}
--\entry {\code {struct printf_info}}{267}
--\entry {\code {struct protoent}}{419}
--\entry {\code {struct random_data}}{510}
--\entry {\code {struct rlimit}}{586}
--\entry {\code {struct rlimit64}}{587}
--\entry {\code {struct rusage}}{583}
--\entry {\code {struct sched_param}}{592}
--\entry {\code {struct servent}}{417}
--\entry {\code {struct sgttyb}}{464}
--\entry {\code {struct sigaction}}{624}
--\entry {\code {struct sigstack}}{653}
--\entry {\code {struct sigvec}}{654}
--\entry {\code {struct sockaddr}}{402}
--\entry {\code {struct sockaddr_in}}{408}
--\entry {\code {struct sockaddr_in6}}{408}
--\entry {\code {struct sockaddr_un}}{406}
--\entry {\code {struct stat}}{370}
--\entry {\code {struct stat64}}{372}
--\entry {\code {struct termios}}{447}
--\entry {\code {struct timespec}}{550}
--\entry {\code {struct timeval}}{550}
--\entry {\code {struct timex}}{559, 560}
--\entry {\code {struct timezone}}{554}
--\entry {\code {struct tm}}{556}
--\entry {\code {struct tms}}{552}
--\entry {\code {struct utimbuf}}{384}
--\entry {\code {struct utmp}}{754}
--\entry {\code {struct utmpx}}{758}
--\entry {\code {struct utsname}}{773}
--\entry {\code {struct vtimes}}{585}
--\initial {T}
--\entry {\code {tcflag_t}}{448}
--\entry {\code {time_t}}{553}
--\initial {U}
--\entry {\code {ucontext_t}}{604}
--\entry {\code {uid_t}}{745}
--\entry {\code {union wait}}{709}
--\initial {V}
--\entry {\code {va_list}}{846}
--\entry {\code {VISIT}}{203}
--\initial {W}
--\entry {\code {wchar_t}}{112}
--\entry {\code {wctrans_t}}{74}
--\entry {\code {wctype_t}}{70}
--\entry {\code {wint_t}}{112}
--\entry {\code {wordexp_t}}{219}
-diff -u -udbrN glibc-2.3.2/manual/libc.vr glibc-2.3.2-200304020432/manual/libc.vr
---- glibc-2.3.2/manual/libc.vr Tue Feb 25 11:35:07 2003
-+++ glibc-2.3.2-200304020432/manual/libc.vr Thu Jan 1 01:00:00 1970
-@@ -1,1073 +0,0 @@
--\entry{_POSIX_SOURCE}{8}{\code {_POSIX_SOURCE}}
--\entry{_POSIX_C_SOURCE}{8}{\code {_POSIX_C_SOURCE}}
--\entry{_BSD_SOURCE}{8}{\code {_BSD_SOURCE}}
--\entry{_SVID_SOURCE}{8}{\code {_SVID_SOURCE}}
--\entry{_XOPEN_SOURCE}{8}{\code {_XOPEN_SOURCE}}
--\entry{_XOPEN_SOURCE_EXTENDED}{9}{\code {_XOPEN_SOURCE_EXTENDED}}
--\entry{_LARGEFILE_SOURCE}{9}{\code {_LARGEFILE_SOURCE}}
--\entry{_LARGEFILE64_SOURCE}{9}{\code {_LARGEFILE64_SOURCE}}
--\entry{_FILE_OFFSET_BITS}{9}{\code {_FILE_OFFSET_BITS}}
--\entry{_ISOC99_SOURCE}{10}{\code {_ISOC99_SOURCE}}
--\entry{_GNU_SOURCE}{10}{\code {_GNU_SOURCE}}
--\entry{_REENTRANT}{10}{\code {_REENTRANT}}
--\entry{_THREAD_SAFE}{10}{\code {_THREAD_SAFE}}
--\entry{errno}{15}{\code {errno}}
--\entry{EPERM}{16}{\code {EPERM}}
--\entry{ENOENT}{16}{\code {ENOENT}}
--\entry{ESRCH}{16}{\code {ESRCH}}
--\entry{EINTR}{16}{\code {EINTR}}
--\entry{EIO}{16}{\code {EIO}}
--\entry{ENXIO}{17}{\code {ENXIO}}
--\entry{E2BIG}{17}{\code {E2BIG}}
--\entry{ENOEXEC}{17}{\code {ENOEXEC}}
--\entry{EBADF}{17}{\code {EBADF}}
--\entry{ECHILD}{17}{\code {ECHILD}}
--\entry{EDEADLK}{17}{\code {EDEADLK}}
--\entry{ENOMEM}{17}{\code {ENOMEM}}
--\entry{EACCES}{17}{\code {EACCES}}
--\entry{EFAULT}{17}{\code {EFAULT}}
--\entry{ENOTBLK}{17}{\code {ENOTBLK}}
--\entry{EBUSY}{17}{\code {EBUSY}}
--\entry{EEXIST}{17}{\code {EEXIST}}
--\entry{EXDEV}{18}{\code {EXDEV}}
--\entry{ENODEV}{18}{\code {ENODEV}}
--\entry{ENOTDIR}{18}{\code {ENOTDIR}}
--\entry{EISDIR}{18}{\code {EISDIR}}
--\entry{EINVAL}{18}{\code {EINVAL}}
--\entry{EMFILE}{18}{\code {EMFILE}}
--\entry{ENFILE}{18}{\code {ENFILE}}
--\entry{ENOTTY}{18}{\code {ENOTTY}}
--\entry{ETXTBSY}{18}{\code {ETXTBSY}}
--\entry{EFBIG}{18}{\code {EFBIG}}
--\entry{ENOSPC}{18}{\code {ENOSPC}}
--\entry{ESPIPE}{18}{\code {ESPIPE}}
--\entry{EROFS}{19}{\code {EROFS}}
--\entry{EMLINK}{19}{\code {EMLINK}}
--\entry{EPIPE}{19}{\code {EPIPE}}
--\entry{EDOM}{19}{\code {EDOM}}
--\entry{ERANGE}{19}{\code {ERANGE}}
--\entry{EAGAIN}{19}{\code {EAGAIN}}
--\entry{EWOULDBLOCK}{19}{\code {EWOULDBLOCK}}
--\entry{EINPROGRESS}{20}{\code {EINPROGRESS}}
--\entry{EALREADY}{20}{\code {EALREADY}}
--\entry{ENOTSOCK}{20}{\code {ENOTSOCK}}
--\entry{EMSGSIZE}{20}{\code {EMSGSIZE}}
--\entry{EPROTOTYPE}{20}{\code {EPROTOTYPE}}
--\entry{ENOPROTOOPT}{20}{\code {ENOPROTOOPT}}
--\entry{EPROTONOSUPPORT}{20}{\code {EPROTONOSUPPORT}}
--\entry{ESOCKTNOSUPPORT}{20}{\code {ESOCKTNOSUPPORT}}
--\entry{EOPNOTSUPP}{20}{\code {EOPNOTSUPP}}
--\entry{EPFNOSUPPORT}{20}{\code {EPFNOSUPPORT}}
--\entry{EAFNOSUPPORT}{20}{\code {EAFNOSUPPORT}}
--\entry{EADDRINUSE}{20}{\code {EADDRINUSE}}
--\entry{EADDRNOTAVAIL}{21}{\code {EADDRNOTAVAIL}}
--\entry{ENETDOWN}{21}{\code {ENETDOWN}}
--\entry{ENETUNREACH}{21}{\code {ENETUNREACH}}
--\entry{ENETRESET}{21}{\code {ENETRESET}}
--\entry{ECONNABORTED}{21}{\code {ECONNABORTED}}
--\entry{ECONNRESET}{21}{\code {ECONNRESET}}
--\entry{ENOBUFS}{21}{\code {ENOBUFS}}
--\entry{EISCONN}{21}{\code {EISCONN}}
--\entry{ENOTCONN}{21}{\code {ENOTCONN}}
--\entry{EDESTADDRREQ}{21}{\code {EDESTADDRREQ}}
--\entry{ESHUTDOWN}{21}{\code {ESHUTDOWN}}
--\entry{ETOOMANYREFS}{21}{\code {ETOOMANYREFS}}
--\entry{ETIMEDOUT}{21}{\code {ETIMEDOUT}}
--\entry{ECONNREFUSED}{22}{\code {ECONNREFUSED}}
--\entry{ELOOP}{22}{\code {ELOOP}}
--\entry{ENAMETOOLONG}{22}{\code {ENAMETOOLONG}}
--\entry{EHOSTDOWN}{22}{\code {EHOSTDOWN}}
--\entry{EHOSTUNREACH}{22}{\code {EHOSTUNREACH}}
--\entry{ENOTEMPTY}{22}{\code {ENOTEMPTY}}
--\entry{EPROCLIM}{22}{\code {EPROCLIM}}
--\entry{EUSERS}{22}{\code {EUSERS}}
--\entry{EDQUOT}{22}{\code {EDQUOT}}
--\entry{ESTALE}{22}{\code {ESTALE}}
--\entry{EREMOTE}{22}{\code {EREMOTE}}
--\entry{EBADRPC}{22}{\code {EBADRPC}}
--\entry{ERPCMISMATCH}{22}{\code {ERPCMISMATCH}}
--\entry{EPROGUNAVAIL}{22}{\code {EPROGUNAVAIL}}
--\entry{EPROGMISMATCH}{23}{\code {EPROGMISMATCH}}
--\entry{EPROCUNAVAIL}{23}{\code {EPROCUNAVAIL}}
--\entry{ENOLCK}{23}{\code {ENOLCK}}
--\entry{EFTYPE}{23}{\code {EFTYPE}}
--\entry{EAUTH}{23}{\code {EAUTH}}
--\entry{ENEEDAUTH}{23}{\code {ENEEDAUTH}}
--\entry{ENOSYS}{23}{\code {ENOSYS}}
--\entry{ENOTSUP}{23}{\code {ENOTSUP}}
--\entry{EILSEQ}{23}{\code {EILSEQ}}
--\entry{EBACKGROUND}{23}{\code {EBACKGROUND}}
--\entry{EDIED}{24}{\code {EDIED}}
--\entry{ED}{24}{\code {ED}}
--\entry{EGREGIOUS}{24}{\code {EGREGIOUS}}
--\entry{EIEIO}{24}{\code {EIEIO}}
--\entry{EGRATUITOUS}{24}{\code {EGRATUITOUS}}
--\entry{EBADMSG}{24}{\code {EBADMSG}}
--\entry{EIDRM}{24}{\code {EIDRM}}
--\entry{EMULTIHOP}{24}{\code {EMULTIHOP}}
--\entry{ENODATA}{24}{\code {ENODATA}}
--\entry{ENOLINK}{24}{\code {ENOLINK}}
--\entry{ENOMSG}{24}{\code {ENOMSG}}
--\entry{ENOSR}{24}{\code {ENOSR}}
--\entry{ENOSTR}{24}{\code {ENOSTR}}
--\entry{EOVERFLOW}{24}{\code {EOVERFLOW}}
--\entry{EPROTO}{24}{\code {EPROTO}}
--\entry{ETIME}{24}{\code {ETIME}}
--\entry{ECANCELED}{24}{\code {ECANCELED}}
--\entry{ERESTART}{24}{\code {ERESTART}}
--\entry{ECHRNG}{24}{\code {ECHRNG}}
--\entry{EL2NSYNC}{24}{\code {EL2NSYNC}}
--\entry{EL3HLT}{24}{\code {EL3HLT}}
--\entry{EL3RST}{24}{\code {EL3RST}}
--\entry{ELNRNG}{25}{\code {ELNRNG}}
--\entry{EUNATCH}{25}{\code {EUNATCH}}
--\entry{ENOCSI}{25}{\code {ENOCSI}}
--\entry{EL2HLT}{25}{\code {EL2HLT}}
--\entry{EBADE}{25}{\code {EBADE}}
--\entry{EBADR}{25}{\code {EBADR}}
--\entry{EXFULL}{25}{\code {EXFULL}}
--\entry{ENOANO}{25}{\code {ENOANO}}
--\entry{EBADRQC}{25}{\code {EBADRQC}}
--\entry{EBADSLT}{25}{\code {EBADSLT}}
--\entry{EDEADLOCK}{25}{\code {EDEADLOCK}}
--\entry{EBFONT}{25}{\code {EBFONT}}
--\entry{ENONET}{25}{\code {ENONET}}
--\entry{ENOPKG}{25}{\code {ENOPKG}}
--\entry{EADV}{25}{\code {EADV}}
--\entry{ESRMNT}{25}{\code {ESRMNT}}
--\entry{ECOMM}{25}{\code {ECOMM}}
--\entry{EDOTDOT}{25}{\code {EDOTDOT}}
--\entry{ENOTUNIQ}{25}{\code {ENOTUNIQ}}
--\entry{EBADFD}{25}{\code {EBADFD}}
--\entry{EREMCHG}{25}{\code {EREMCHG}}
--\entry{ELIBACC}{25}{\code {ELIBACC}}
--\entry{ELIBBAD}{25}{\code {ELIBBAD}}
--\entry{ELIBSCN}{25}{\code {ELIBSCN}}
--\entry{ELIBMAX}{25}{\code {ELIBMAX}}
--\entry{ELIBEXEC}{25}{\code {ELIBEXEC}}
--\entry{ESTRPIPE}{25}{\code {ESTRPIPE}}
--\entry{EUCLEAN}{25}{\code {EUCLEAN}}
--\entry{ENOTNAM}{25}{\code {ENOTNAM}}
--\entry{ENAVAIL}{25}{\code {ENAVAIL}}
--\entry{EISNAM}{25}{\code {EISNAM}}
--\entry{EREMOTEIO}{25}{\code {EREMOTEIO}}
--\entry{ENOMEDIUM}{25}{\code {ENOMEDIUM}}
--\entry{EMEDIUMTYPE}{25}{\code {EMEDIUMTYPE}}
--\entry{program_invocation_name}{27}{\code {program_invocation_name}}
--\entry{program_invocation_short_name}{27}{\code {program_invocation_short_name}}
--\entry{error_print_progname}{29}{\code {error_print_progname}}
--\entry{error_message_count}{29}{\code {error_message_count}}
--\entry{error_one_per_line}{29}{\code {error_one_per_line}}
--\entry{__malloc_hook}{41}{\code {__malloc_hook}}
--\entry{__realloc_hook}{41}{\code {__realloc_hook}}
--\entry{__free_hook}{41}{\code {__free_hook}}
--\entry{__memalign_hook}{41}{\code {__memalign_hook}}
--\entry{__malloc_initialize_hook}{42}{\code {__malloc_initialize_hook}}
--\entry{obstack_alloc_failed_handler}{51}{\code {obstack_alloc_failed_handler}}
--\entry{WCHAR_MIN}{112}{\code {WCHAR_MIN}}
--\entry{WCHAR_MAX}{112}{\code {WCHAR_MAX}}
--\entry{WEOF}{113}{\code {WEOF}}
--\entry{MB_LEN_MAX}{116}{\code {MB_LEN_MAX}}
--\entry{MB_CUR_MAX}{116}{\code {MB_CUR_MAX}}
--\entry{(*__gconv_init_fct)}{145}{\code {(*__gconv_init_fct)}}
--\entry{(*__gconv_end_fct)}{147}{\code {(*__gconv_end_fct)}}
--\entry{(*__gconv_fct)}{148}{\code {(*__gconv_fct)}}
--\entry{LC_COLLATE}{154}{\code {LC_COLLATE}}
--\entry{LC_CTYPE}{154}{\code {LC_CTYPE}}
--\entry{LC_MONETARY}{154}{\code {LC_MONETARY}}
--\entry{LC_NUMERIC}{154}{\code {LC_NUMERIC}}
--\entry{LC_TIME}{154}{\code {LC_TIME}}
--\entry{LC_MESSAGES}{154}{\code {LC_MESSAGES}}
--\entry{LC_ALL}{155}{\code {LC_ALL}}
--\entry{LANG}{155}{\code {LANG}}
--\entry{LANGUAGE}{155}{\code {LANGUAGE}}
--\entry{CODESET}{162}{\code {CODESET}}
--\entry{ABDAY_1}{162}{\code {ABDAY_1}}
--\entry{ABDAY_2}{162}{\code {ABDAY_2}}
--\entry{ABDAY_3}{162}{\code {ABDAY_3}}
--\entry{ABDAY_4}{162}{\code {ABDAY_4}}
--\entry{ABDAY_5}{162}{\code {ABDAY_5}}
--\entry{ABDAY_6}{162}{\code {ABDAY_6}}
--\entry{ABDAY_7}{162}{\code {ABDAY_7}}
--\entry{DAY_1}{162}{\code {DAY_1}}
--\entry{DAY_2}{162}{\code {DAY_2}}
--\entry{DAY_3}{162}{\code {DAY_3}}
--\entry{DAY_4}{162}{\code {DAY_4}}
--\entry{DAY_5}{162}{\code {DAY_5}}
--\entry{DAY_6}{162}{\code {DAY_6}}
--\entry{DAY_7}{162}{\code {DAY_7}}
--\entry{ABMON_1}{162}{\code {ABMON_1}}
--\entry{ABMON_2}{162}{\code {ABMON_2}}
--\entry{ABMON_3}{162}{\code {ABMON_3}}
--\entry{ABMON_4}{162}{\code {ABMON_4}}
--\entry{ABMON_5}{162}{\code {ABMON_5}}
--\entry{ABMON_6}{162}{\code {ABMON_6}}
--\entry{ABMON_7}{162}{\code {ABMON_7}}
--\entry{ABMON_8}{162}{\code {ABMON_8}}
--\entry{ABMON_9}{162}{\code {ABMON_9}}
--\entry{ABMON_10}{162}{\code {ABMON_10}}
--\entry{ABMON_11}{162}{\code {ABMON_11}}
--\entry{ABMON_12}{162}{\code {ABMON_12}}
--\entry{MON_1}{162}{\code {MON_1}}
--\entry{MON_2}{163}{\code {MON_2}}
--\entry{MON_3}{163}{\code {MON_3}}
--\entry{MON_4}{163}{\code {MON_4}}
--\entry{MON_5}{163}{\code {MON_5}}
--\entry{MON_6}{163}{\code {MON_6}}
--\entry{MON_7}{163}{\code {MON_7}}
--\entry{MON_8}{163}{\code {MON_8}}
--\entry{MON_9}{163}{\code {MON_9}}
--\entry{MON_10}{163}{\code {MON_10}}
--\entry{MON_11}{163}{\code {MON_11}}
--\entry{MON_12}{163}{\code {MON_12}}
--\entry{AM_STR}{163}{\code {AM_STR}}
--\entry{PM_STR}{163}{\code {PM_STR}}
--\entry{D_T_FMT}{163}{\code {D_T_FMT}}
--\entry{D_FMT}{163}{\code {D_FMT}}
--\entry{T_FMT}{163}{\code {T_FMT}}
--\entry{T_FMT_AMPM}{163}{\code {T_FMT_AMPM}}
--\entry{ERA}{163}{\code {ERA}}
--\entry{ERA_YEAR}{163}{\code {ERA_YEAR}}
--\entry{ERA_D_T_FMT}{163}{\code {ERA_D_T_FMT}}
--\entry{ERA_D_FMT}{164}{\code {ERA_D_FMT}}
--\entry{ERA_T_FMT}{164}{\code {ERA_T_FMT}}
--\entry{ALT_DIGITS}{164}{\code {ALT_DIGITS}}
--\entry{INT_CURR_SYMBOL}{164}{\code {INT_CURR_SYMBOL}}
--\entry{CURRENCY_SYMBOL}{164}{\code {CURRENCY_SYMBOL}}
--\entry{CRNCYSTR}{164}{\code {CRNCYSTR}}
--\entry{MON_DECIMAL_POINT}{164}{\code {MON_DECIMAL_POINT}}
--\entry{MON_THOUSANDS_SEP}{164}{\code {MON_THOUSANDS_SEP}}
--\entry{MON_GROUPING}{164}{\code {MON_GROUPING}}
--\entry{POSITIVE_SIGN}{164}{\code {POSITIVE_SIGN}}
--\entry{NEGATIVE_SIGN}{164}{\code {NEGATIVE_SIGN}}
--\entry{INT_FRAC_DIGITS}{164}{\code {INT_FRAC_DIGITS}}
--\entry{FRAC_DIGITS}{164}{\code {FRAC_DIGITS}}
--\entry{P_CS_PRECEDES}{165}{\code {P_CS_PRECEDES}}
--\entry{P_SEP_BY_SPACE}{165}{\code {P_SEP_BY_SPACE}}
--\entry{N_CS_PRECEDES}{165}{\code {N_CS_PRECEDES}}
--\entry{N_SEP_BY_SPACE}{165}{\code {N_SEP_BY_SPACE}}
--\entry{P_SIGN_POSN}{165}{\code {P_SIGN_POSN}}
--\entry{N_SIGN_POSN}{165}{\code {N_SIGN_POSN}}
--\entry{INT_P_CS_PRECEDES}{165}{\code {INT_P_CS_PRECEDES}}
--\entry{INT_P_SEP_BY_SPACE}{165}{\code {INT_P_SEP_BY_SPACE}}
--\entry{INT_N_CS_PRECEDES}{165}{\code {INT_N_CS_PRECEDES}}
--\entry{INT_N_SEP_BY_SPACE}{165}{\code {INT_N_SEP_BY_SPACE}}
--\entry{INT_P_SIGN_POSN}{165}{\code {INT_P_SIGN_POSN}}
--\entry{INT_N_SIGN_POSN}{165}{\code {INT_N_SIGN_POSN}}
--\entry{DECIMAL_POINT}{165}{\code {DECIMAL_POINT}}
--\entry{RADIXCHAR}{165}{\code {RADIXCHAR}}
--\entry{THOUSANDS_SEP}{166}{\code {THOUSANDS_SEP}}
--\entry{THOUSEP}{166}{\code {THOUSEP}}
--\entry{GROUPING}{166}{\code {GROUPING}}
--\entry{YESEXPR}{166}{\code {YESEXPR}}
--\entry{NOEXPR}{166}{\code {NOEXPR}}
--\entry{YESSTR}{166}{\code {YESSTR}}
--\entry{NOSTR}{166}{\code {NOSTR}}
--\entry{GLOB_ABORTED}{209}{\code {GLOB_ABORTED}}
--\entry{GLOB_NOMATCH}{209}{\code {GLOB_NOMATCH}}
--\entry{GLOB_NOSPACE}{209}{\code {GLOB_NOSPACE}}
--\entry{GLOB_APPEND}{210}{\code {GLOB_APPEND}}
--\entry{GLOB_DOOFFS}{210}{\code {GLOB_DOOFFS}}
--\entry{GLOB_ERR}{210}{\code {GLOB_ERR}}
--\entry{GLOB_MARK}{210}{\code {GLOB_MARK}}
--\entry{GLOB_NOCHECK}{211}{\code {GLOB_NOCHECK}}
--\entry{GLOB_NOSORT}{211}{\code {GLOB_NOSORT}}
--\entry{GLOB_NOESCAPE}{211}{\code {GLOB_NOESCAPE}}
--\entry{GLOB_PERIOD}{211}{\code {GLOB_PERIOD}}
--\entry{GLOB_MAGCHAR}{211}{\code {GLOB_MAGCHAR}}
--\entry{GLOB_ALTDIRFUNC}{211}{\code {GLOB_ALTDIRFUNC}}
--\entry{GLOB_BRACE}{211}{\code {GLOB_BRACE}}
--\entry{GLOB_NOMAGIC}{212}{\code {GLOB_NOMAGIC}}
--\entry{GLOB_TILDE}{212}{\code {GLOB_TILDE}}
--\entry{GLOB_TILDE_CHECK}{212}{\code {GLOB_TILDE_CHECK}}
--\entry{GLOB_ONLYDIR}{212}{\code {GLOB_ONLYDIR}}
--\entry{stdin}{231}{\code {stdin}}
--\entry{stdout}{231}{\code {stdout}}
--\entry{stderr}{231}{\code {stderr}}
--\entry{FOPEN_MAX}{234}{\code {FOPEN_MAX}}
--\entry{FSETLOCKING_INTERNAL}{239}{\code {FSETLOCKING_INTERNAL}}
--\entry{FSETLOCKING_BYCALLER}{239}{\code {FSETLOCKING_BYCALLER}}
--\entry{FSETLOCKING_QUERY}{239}{\code {FSETLOCKING_QUERY}}
--\entry{NL_ARGMAX}{251}{\code {NL_ARGMAX}}
--\entry{PA_FLAG_MASK}{264}{\code {PA_FLAG_MASK}}
--\entry{PA_INT}{264}{\code {PA_INT}}
--\entry{PA_CHAR}{264}{\code {PA_CHAR}}
--\entry{PA_STRING}{264}{\code {PA_STRING}}
--\entry{PA_POINTER}{264}{\code {PA_POINTER}}
--\entry{PA_FLOAT}{264}{\code {PA_FLOAT}}
--\entry{PA_DOUBLE}{264}{\code {PA_DOUBLE}}
--\entry{PA_LAST}{264}{\code {PA_LAST}}
--\entry{PA_FLAG_PTR}{264}{\code {PA_FLAG_PTR}}
--\entry{PA_FLAG_SHORT}{265}{\code {PA_FLAG_SHORT}}
--\entry{PA_FLAG_LONG}{265}{\code {PA_FLAG_LONG}}
--\entry{PA_FLAG_LONG_LONG}{265}{\code {PA_FLAG_LONG_LONG}}
--\entry{PA_FLAG_LONG_DOUBLE}{265}{\code {PA_FLAG_LONG_DOUBLE}}
--\entry{EOF}{281}{\code {EOF}}
--\entry{WEOF}{282}{\code {WEOF}}
--\entry{SEEK_SET}{286}{\code {SEEK_SET}}
--\entry{SEEK_CUR}{286}{\code {SEEK_CUR}}
--\entry{SEEK_END}{286}{\code {SEEK_END}}
--\entry{L_SET}{286}{\code {L_SET}}
--\entry{L_INCR}{286}{\code {L_INCR}}
--\entry{L_XTND}{286}{\code {L_XTND}}
--\entry{_IOFBF}{290}{\code {_IOFBF}}
--\entry{_IOLBF}{291}{\code {_IOLBF}}
--\entry{_IONBF}{291}{\code {_IONBF}}
--\entry{BUFSIZ}{291}{\code {BUFSIZ}}
--\entry{MM_PRINT}{297}{\code {MM_PRINT}}
--\entry{MM_CONSOLE}{297}{\code {MM_CONSOLE}}
--\entry{MM_HARD}{297}{\code {MM_HARD}}
--\entry{MM_SOFT}{297}{\code {MM_SOFT}}
--\entry{MM_FIRM}{297}{\code {MM_FIRM}}
--\entry{MM_APPL}{297}{\code {MM_APPL}}
--\entry{MM_UTIL}{297}{\code {MM_UTIL}}
--\entry{MM_OPSYS}{297}{\code {MM_OPSYS}}
--\entry{MM_RECOVER}{298}{\code {MM_RECOVER}}
--\entry{MM_NRECOV}{298}{\code {MM_NRECOV}}
--\entry{MM_NULLLBL}{298}{\code {MM_NULLLBL}}
--\entry{MM_NULLSEV}{298}{\code {MM_NULLSEV}}
--\entry{MM_NULLMC}{298}{\code {MM_NULLMC}}
--\entry{MM_NULLTXT}{298}{\code {MM_NULLTXT}}
--\entry{MM_NULLACT}{298}{\code {MM_NULLACT}}
--\entry{MM_NULLTAG}{298}{\code {MM_NULLTAG}}
--\entry{MM_NOSEV}{298}{\code {MM_NOSEV}}
--\entry{MM_HALT}{298}{\code {MM_HALT}}
--\entry{MM_ERROR}{298}{\code {MM_ERROR}}
--\entry{MM_WARNING}{298}{\code {MM_WARNING}}
--\entry{MM_INFO}{299}{\code {MM_INFO}}
--\entry{STDIN_FILENO}{313}{\code {STDIN_FILENO}}
--\entry{STDOUT_FILENO}{313}{\code {STDOUT_FILENO}}
--\entry{STDERR_FILENO}{313}{\code {STDERR_FILENO}}
--\entry{_SC_PAGESIZE}{317}{\code {_SC_PAGESIZE}}
--\entry{PROT_READ}{317}{\code {PROT_READ}}
--\entry{PROT_WRITE}{317}{\code {PROT_WRITE}}
--\entry{PROT_EXEC}{317}{\code {PROT_EXEC}}
--\entry{MAP_PRIVATE}{317}{\code {MAP_PRIVATE}}
--\entry{MAP_SHARED}{317}{\code {MAP_SHARED}}
--\entry{MAP_FIXED}{318}{\code {MAP_FIXED}}
--\entry{MAP_ANONYMOUS}{318}{\code {MAP_ANONYMOUS}}
--\entry{MAP_ANON}{318}{\code {MAP_ANON}}
--\entry{MS_SYNC}{319}{\code {MS_SYNC}}
--\entry{MS_ASYNC}{319}{\code {MS_ASYNC}}
--\entry{FD_SETSIZE}{321}{\code {FD_SETSIZE}}
--\entry{LIO_READ}{326}{\code {LIO_READ}}
--\entry{LIO_WRITE}{326}{\code {LIO_WRITE}}
--\entry{LIO_NOP}{326}{\code {LIO_NOP}}
--\entry{F_DUPFD}{338}{\code {F_DUPFD}}
--\entry{F_GETFD}{339}{\code {F_GETFD}}
--\entry{F_SETFD}{339}{\code {F_SETFD}}
--\entry{FD_CLOEXEC}{339}{\code {FD_CLOEXEC}}
--\entry{O_RDONLY}{341}{\code {O_RDONLY}}
--\entry{O_WRONLY}{341}{\code {O_WRONLY}}
--\entry{O_RDWR}{341}{\code {O_RDWR}}
--\entry{O_READ}{341}{\code {O_READ}}
--\entry{O_WRITE}{341}{\code {O_WRITE}}
--\entry{O_EXEC}{341}{\code {O_EXEC}}
--\entry{O_ACCMODE}{341}{\code {O_ACCMODE}}
--\entry{O_CREAT}{342}{\code {O_CREAT}}
--\entry{O_EXCL}{342}{\code {O_EXCL}}
--\entry{O_NONBLOCK}{342}{\code {O_NONBLOCK}}
--\entry{O_NOCTTY}{342}{\code {O_NOCTTY}}
--\entry{O_IGNORE_CTTY}{342}{\code {O_IGNORE_CTTY}}
--\entry{O_NOLINK}{342}{\code {O_NOLINK}}
--\entry{O_NOTRANS}{342}{\code {O_NOTRANS}}
--\entry{O_TRUNC}{343}{\code {O_TRUNC}}
--\entry{O_SHLOCK}{343}{\code {O_SHLOCK}}
--\entry{O_EXLOCK}{343}{\code {O_EXLOCK}}
--\entry{O_APPEND}{343}{\code {O_APPEND}}
--\entry{O_NONBLOCK}{343}{\code {O_NONBLOCK}}
--\entry{O_NDELAY}{344}{\code {O_NDELAY}}
--\entry{O_ASYNC}{344}{\code {O_ASYNC}}
--\entry{O_FSYNC}{344}{\code {O_FSYNC}}
--\entry{O_SYNC}{344}{\code {O_SYNC}}
--\entry{O_NOATIME}{344}{\code {O_NOATIME}}
--\entry{F_GETFL}{344}{\code {F_GETFL}}
--\entry{F_SETFL}{344}{\code {F_SETFL}}
--\entry{F_GETLK}{346}{\code {F_GETLK}}
--\entry{F_SETLK}{347}{\code {F_SETLK}}
--\entry{F_SETLKW}{347}{\code {F_SETLKW}}
--\entry{F_RDLCK}{348}{\code {F_RDLCK}}
--\entry{F_WRLCK}{348}{\code {F_WRLCK}}
--\entry{F_UNLCK}{348}{\code {F_UNLCK}}
--\entry{F_GETOWN}{348}{\code {F_GETOWN}}
--\entry{F_SETOWN}{349}{\code {F_SETOWN}}
--\entry{PWD}{352}{\code {PWD}}
--\entry{DT_UNKNOWN}{353}{\code {DT_UNKNOWN}}
--\entry{DT_REG}{353}{\code {DT_REG}}
--\entry{DT_DIR}{354}{\code {DT_DIR}}
--\entry{DT_FIFO}{354}{\code {DT_FIFO}}
--\entry{DT_SOCK}{354}{\code {DT_SOCK}}
--\entry{DT_CHR}{354}{\code {DT_CHR}}
--\entry{DT_BLK}{354}{\code {DT_BLK}}
--\entry{FTW_F}{360}{\code {FTW_F}}
--\entry{FTW_D}{360}{\code {FTW_D}}
--\entry{FTW_NS}{360}{\code {FTW_NS}}
--\entry{FTW_DNR}{360}{\code {FTW_DNR}}
--\entry{FTW_SL}{360}{\code {FTW_SL}}
--\entry{FTW_DP}{361}{\code {FTW_DP}}
--\entry{FTW_SLN}{361}{\code {FTW_SLN}}
--\entry{FTW_PHYS}{363}{\code {FTW_PHYS}}
--\entry{FTW_MOUNT}{363}{\code {FTW_MOUNT}}
--\entry{FTW_CHDIR}{363}{\code {FTW_CHDIR}}
--\entry{FTW_DEPTH}{363}{\code {FTW_DEPTH}}
--\entry{MAXSYMLINKS}{365}{\code {MAXSYMLINKS}}
--\entry{S_IFMT}{376}{\code {S_IFMT}}
--\entry{S_IFDIR}{376}{\code {S_IFDIR}}
--\entry{S_IFCHR}{376}{\code {S_IFCHR}}
--\entry{S_IFBLK}{376}{\code {S_IFBLK}}
--\entry{S_IFREG}{376}{\code {S_IFREG}}
--\entry{S_IFLNK}{376}{\code {S_IFLNK}}
--\entry{S_IFSOCK}{376}{\code {S_IFSOCK}}
--\entry{S_IFIFO}{376}{\code {S_IFIFO}}
--\entry{S_IRUSR}{378}{\code {S_IRUSR}}
--\entry{S_IREAD}{378}{\code {S_IREAD}}
--\entry{S_IWUSR}{379}{\code {S_IWUSR}}
--\entry{S_IWRITE}{379}{\code {S_IWRITE}}
--\entry{S_IXUSR}{379}{\code {S_IXUSR}}
--\entry{S_IEXEC}{379}{\code {S_IEXEC}}
--\entry{S_IRWXU}{379}{\code {S_IRWXU}}
--\entry{S_IRGRP}{379}{\code {S_IRGRP}}
--\entry{S_IWGRP}{379}{\code {S_IWGRP}}
--\entry{S_IXGRP}{379}{\code {S_IXGRP}}
--\entry{S_IRWXG}{379}{\code {S_IRWXG}}
--\entry{S_IROTH}{379}{\code {S_IROTH}}
--\entry{S_IWOTH}{379}{\code {S_IWOTH}}
--\entry{S_IXOTH}{379}{\code {S_IXOTH}}
--\entry{S_IRWXO}{379}{\code {S_IRWXO}}
--\entry{S_ISUID}{379}{\code {S_ISUID}}
--\entry{S_ISGID}{379}{\code {S_ISGID}}
--\entry{S_ISVTX}{379}{\code {S_ISVTX}}
--\entry{R_OK}{383}{\code {R_OK}}
--\entry{W_OK}{383}{\code {W_OK}}
--\entry{X_OK}{383}{\code {X_OK}}
--\entry{F_OK}{383}{\code {F_OK}}
--\entry{L_tmpnam}{389}{\code {L_tmpnam}}
--\entry{TMP_MAX}{390}{\code {TMP_MAX}}
--\entry{P_tmpdir}{390}{\code {P_tmpdir}}
--\entry{SOCK_STREAM}{400}{\code {SOCK_STREAM}}
--\entry{SOCK_DGRAM}{400}{\code {SOCK_DGRAM}}
--\entry{SOCK_RAW}{401}{\code {SOCK_RAW}}
--\entry{AF_LOCAL}{402}{\code {AF_LOCAL}}
--\entry{AF_UNIX}{402}{\code {AF_UNIX}}
--\entry{AF_FILE}{402}{\code {AF_FILE}}
--\entry{AF_INET}{402}{\code {AF_INET}}
--\entry{AF_UNSPEC}{402}{\code {AF_UNSPEC}}
--\entry{IFNAMSIZ}{404}{\code {IFNAMSIZ}}
--\entry{PF_LOCAL}{405}{\code {PF_LOCAL}}
--\entry{PF_UNIX}{406}{\code {PF_UNIX}}
--\entry{PF_FILE}{406}{\code {PF_FILE}}
--\entry{PF_INET}{407}{\code {PF_INET}}
--\entry{PF_INET6}{407}{\code {PF_INET6}}
--\entry{INADDR_LOOPBACK}{411}{\code {INADDR_LOOPBACK}}
--\entry{INADDR_ANY}{411}{\code {INADDR_ANY}}
--\entry{INADDR_BROADCAST}{411}{\code {INADDR_BROADCAST}}
--\entry{INADDR_NONE}{411}{\code {INADDR_NONE}}
--\entry{in6addr_loopback}{411}{\code {in6addr_loopback}}
--\entry{in6addr_any}{411}{\code {in6addr_any}}
--\entry{h_errno}{414}{\code {h_errno}}
--\entry{HOST_NOT_FOUND}{414}{\code {HOST_NOT_FOUND}}
--\entry{TRY_AGAIN}{414}{\code {TRY_AGAIN}}
--\entry{NO_RECOVERY}{414}{\code {NO_RECOVERY}}
--\entry{NO_ADDRESS}{414}{\code {NO_ADDRESS}}
--\entry{IPPORT_RESERVED}{417}{\code {IPPORT_RESERVED}}
--\entry{IPPORT_USERRESERVED}{417}{\code {IPPORT_USERRESERVED}}
--\entry{PF_NS}{421}{\code {PF_NS}}
--\entry{PF_ISO}{421}{\code {PF_ISO}}
--\entry{PF_CCITT}{421}{\code {PF_CCITT}}
--\entry{PF_IMPLINK}{421}{\code {PF_IMPLINK}}
--\entry{PF_ROUTE}{421}{\code {PF_ROUTE}}
--\entry{MSG_OOB}{429}{\code {MSG_OOB}}
--\entry{MSG_PEEK}{429}{\code {MSG_PEEK}}
--\entry{MSG_DONTROUTE}{429}{\code {MSG_DONTROUTE}}
--\entry{SOL_SOCKET}{441}{\code {SOL_SOCKET}}
--\entry{NCCS}{448}{\code {NCCS}}
--\entry{TCSANOW}{448}{\code {TCSANOW}}
--\entry{TCSADRAIN}{448}{\code {TCSADRAIN}}
--\entry{TCSAFLUSH}{448}{\code {TCSAFLUSH}}
--\entry{TCSASOFT}{448}{\code {TCSASOFT}}
--\entry{INPCK}{450}{\code {INPCK}}
--\entry{IGNPAR}{451}{\code {IGNPAR}}
--\entry{PARMRK}{451}{\code {PARMRK}}
--\entry{ISTRIP}{451}{\code {ISTRIP}}
--\entry{IGNBRK}{451}{\code {IGNBRK}}
--\entry{BRKINT}{451}{\code {BRKINT}}
--\entry{IGNCR}{451}{\code {IGNCR}}
--\entry{ICRNL}{451}{\code {ICRNL}}
--\entry{INLCR}{451}{\code {INLCR}}
--\entry{IXOFF}{451}{\code {IXOFF}}
--\entry{IXON}{452}{\code {IXON}}
--\entry{IXANY}{452}{\code {IXANY}}
--\entry{IMAXBEL}{452}{\code {IMAXBEL}}
--\entry{OPOST}{452}{\code {OPOST}}
--\entry{ONLCR}{452}{\code {ONLCR}}
--\entry{OXTABS}{452}{\code {OXTABS}}
--\entry{ONOEOT}{452}{\code {ONOEOT}}
--\entry{CLOCAL}{453}{\code {CLOCAL}}
--\entry{HUPCL}{453}{\code {HUPCL}}
--\entry{CREAD}{453}{\code {CREAD}}
--\entry{CSTOPB}{453}{\code {CSTOPB}}
--\entry{PARENB}{453}{\code {PARENB}}
--\entry{PARODD}{453}{\code {PARODD}}
--\entry{CSIZE}{454}{\code {CSIZE}}
--\entry{CS5}{454}{\code {CS5}}
--\entry{CS6}{454}{\code {CS6}}
--\entry{CS7}{454}{\code {CS7}}
--\entry{CS8}{454}{\code {CS8}}
--\entry{CCTS_OFLOW}{454}{\code {CCTS_OFLOW}}
--\entry{CRTS_IFLOW}{454}{\code {CRTS_IFLOW}}
--\entry{MDMBUF}{454}{\code {MDMBUF}}
--\entry{CIGNORE}{454}{\code {CIGNORE}}
--\entry{ICANON}{454}{\code {ICANON}}
--\entry{ECHO}{455}{\code {ECHO}}
--\entry{ECHOE}{455}{\code {ECHOE}}
--\entry{ECHOPRT}{455}{\code {ECHOPRT}}
--\entry{ECHOK}{455}{\code {ECHOK}}
--\entry{ECHOKE}{455}{\code {ECHOKE}}
--\entry{ECHONL}{455}{\code {ECHONL}}
--\entry{ECHOCTL}{455}{\code {ECHOCTL}}
--\entry{ISIG}{455}{\code {ISIG}}
--\entry{IEXTEN}{456}{\code {IEXTEN}}
--\entry{NOFLSH}{456}{\code {NOFLSH}}
--\entry{TOSTOP}{456}{\code {TOSTOP}}
--\entry{ALTWERASE}{456}{\code {ALTWERASE}}
--\entry{FLUSHO}{456}{\code {FLUSHO}}
--\entry{NOKERNINFO}{456}{\code {NOKERNINFO}}
--\entry{PENDIN}{456}{\code {PENDIN}}
--\entry{B0}{458}{\code {B0}}
--\entry{B50}{458}{\code {B50}}
--\entry{B75}{458}{\code {B75}}
--\entry{B110}{458}{\code {B110}}
--\entry{B134}{458}{\code {B134}}
--\entry{B150}{458}{\code {B150}}
--\entry{B200}{458}{\code {B200}}
--\entry{B300}{458}{\code {B300}}
--\entry{B600}{458}{\code {B600}}
--\entry{B1200}{458}{\code {B1200}}
--\entry{B1800}{458}{\code {B1800}}
--\entry{B2400}{458}{\code {B2400}}
--\entry{B4800}{458}{\code {B4800}}
--\entry{B9600}{458}{\code {B9600}}
--\entry{B19200}{458}{\code {B19200}}
--\entry{B38400}{458}{\code {B38400}}
--\entry{B57600}{458}{\code {B57600}}
--\entry{B115200}{458}{\code {B115200}}
--\entry{B230400}{458}{\code {B230400}}
--\entry{B460800}{458}{\code {B460800}}
--\entry{EXTA}{458}{\code {EXTA}}
--\entry{EXTB}{458}{\code {EXTB}}
--\entry{_POSIX_VDISABLE}{458}{\code {_POSIX_VDISABLE}}
--\entry{VEOF}{458}{\code {VEOF}}
--\entry{VEOL}{459}{\code {VEOL}}
--\entry{VEOL2}{459}{\code {VEOL2}}
--\entry{VERASE}{459}{\code {VERASE}}
--\entry{VWERASE}{459}{\code {VWERASE}}
--\entry{VKILL}{460}{\code {VKILL}}
--\entry{VREPRINT}{460}{\code {VREPRINT}}
--\entry{VINTR}{460}{\code {VINTR}}
--\entry{VQUIT}{460}{\code {VQUIT}}
--\entry{VSUSP}{460}{\code {VSUSP}}
--\entry{VDSUSP}{461}{\code {VDSUSP}}
--\entry{VSTART}{461}{\code {VSTART}}
--\entry{VSTOP}{461}{\code {VSTOP}}
--\entry{VLNEXT}{462}{\code {VLNEXT}}
--\entry{VDISCARD}{462}{\code {VDISCARD}}
--\entry{VSTATUS}{462}{\code {VSTATUS}}
--\entry{VMIN}{463}{\code {VMIN}}
--\entry{VTIME}{463}{\code {VTIME}}
--\entry{TCIFLUSH}{465}{\code {TCIFLUSH}}
--\entry{TCOFLUSH}{465}{\code {TCOFLUSH}}
--\entry{TCIOFLUSH}{465}{\code {TCIOFLUSH}}
--\entry{TCOOFF}{466}{\code {TCOOFF}}
--\entry{TCOON}{466}{\code {TCOON}}
--\entry{TCIOFF}{466}{\code {TCIOFF}}
--\entry{TCION}{466}{\code {TCION}}
--\entry{EBADF}{466}{\code {EBADF}}
--\entry{ENOTTY}{466}{\code {ENOTTY}}
--\entry{EINVAL}{466}{\code {EINVAL}}
--\entry{LOG_USER}{474}{\code {LOG_USER}}
--\entry{LOG_MAIL}{474}{\code {LOG_MAIL}}
--\entry{LOG_DAEMON}{474}{\code {LOG_DAEMON}}
--\entry{LOG_AUTH}{474}{\code {LOG_AUTH}}
--\entry{LOG_SYSLOG}{474}{\code {LOG_SYSLOG}}
--\entry{LOG_LPR}{474}{\code {LOG_LPR}}
--\entry{LOG_NEWS}{474}{\code {LOG_NEWS}}
--\entry{LOG_UUCP}{475}{\code {LOG_UUCP}}
--\entry{LOG_CRON}{475}{\code {LOG_CRON}}
--\entry{LOG_AUTHPRIV}{475}{\code {LOG_AUTHPRIV}}
--\entry{LOG_FTP}{475}{\code {LOG_FTP}}
--\entry{LOG_LOCAL0}{475}{\code {LOG_LOCAL0}}
--\entry{LOG_LOCAL1}{475}{\code {LOG_LOCAL1}}
--\entry{LOG_LOCAL2}{475}{\code {LOG_LOCAL2}}
--\entry{LOG_LOCAL3}{475}{\code {LOG_LOCAL3}}
--\entry{LOG_LOCAL4}{475}{\code {LOG_LOCAL4}}
--\entry{LOG_LOCAL5}{475}{\code {LOG_LOCAL5}}
--\entry{LOG_LOCAL6}{475}{\code {LOG_LOCAL6}}
--\entry{LOG_LOCAL7}{475}{\code {LOG_LOCAL7}}
--\entry{LOG_EMERG}{475}{\code {LOG_EMERG}}
--\entry{LOG_ALERT}{475}{\code {LOG_ALERT}}
--\entry{LOG_CRIT}{475}{\code {LOG_CRIT}}
--\entry{LOG_ERR}{475}{\code {LOG_ERR}}
--\entry{LOG_WARNING}{475}{\code {LOG_WARNING}}
--\entry{LOG_NOTICE}{476}{\code {LOG_NOTICE}}
--\entry{LOG_INFO}{476}{\code {LOG_INFO}}
--\entry{LOG_DEBUG}{476}{\code {LOG_DEBUG}}
--\entry{M_E}{479}{\code {M_E}}
--\entry{M_LOG2E}{479}{\code {M_LOG2E}}
--\entry{M_LOG10E}{479}{\code {M_LOG10E}}
--\entry{M_LN2}{479}{\code {M_LN2}}
--\entry{M_LN10}{479}{\code {M_LN10}}
--\entry{M_PI}{479}{\code {M_PI}}
--\entry{M_PI_2}{479}{\code {M_PI_2}}
--\entry{M_PI_4}{479}{\code {M_PI_4}}
--\entry{M_1_PI}{479}{\code {M_1_PI}}
--\entry{M_2_PI}{479}{\code {M_2_PI}}
--\entry{M_2_SQRTPI}{479}{\code {M_2_SQRTPI}}
--\entry{M_SQRT2}{479}{\code {M_SQRT2}}
--\entry{M_SQRT1_2}{479}{\code {M_SQRT1_2}}
--\entry{PI}{480}{\code {PI}}
--\entry{FP_ILOGB0}{484}{\code {FP_ILOGB0}}
--\entry{FP_ILOGBNAN}{484}{\code {FP_ILOGBNAN}}
--\entry{signgam}{488}{\code {signgam}}
--\entry{RAND_MAX}{508}{\code {RAND_MAX}}
--\entry{FP_NAN}{521}{\code {FP_NAN}}
--\entry{FP_INFINITE}{521}{\code {FP_INFINITE}}
--\entry{FP_ZERO}{521}{\code {FP_ZERO}}
--\entry{FP_SUBNORMAL}{521}{\code {FP_SUBNORMAL}}
--\entry{FP_NORMAL}{521}{\code {FP_NORMAL}}
--\entry{INFINITY}{524}{\code {INFINITY}}
--\entry{NAN}{524}{\code {NAN}}
--\entry{FE_INEXACT}{525}{\code {FE_INEXACT}}
--\entry{FE_DIVBYZERO}{525}{\code {FE_DIVBYZERO}}
--\entry{FE_UNDERFLOW}{525}{\code {FE_UNDERFLOW}}
--\entry{FE_OVERFLOW}{525}{\code {FE_OVERFLOW}}
--\entry{FE_INVALID}{525}{\code {FE_INVALID}}
--\entry{HUGE_VAL}{527}{\code {HUGE_VAL}}
--\entry{HUGE_VALF}{527}{\code {HUGE_VALF}}
--\entry{HUGE_VALL}{527}{\code {HUGE_VALL}}
--\entry{FE_TONEAREST}{528}{\code {FE_TONEAREST}}
--\entry{FE_UPWARD}{528}{\code {FE_UPWARD}}
--\entry{FE_DOWNWARD}{528}{\code {FE_DOWNWARD}}
--\entry{FE_TOWARDZERO}{528}{\code {FE_TOWARDZERO}}
--\entry{FE_DFL_ENV}{529}{\code {FE_DFL_ENV}}
--\entry{FE_NOMASK_ENV}{529}{\code {FE_NOMASK_ENV}}
--\entry{FP_FAST_FMA}{538}{\code {FP_FAST_FMA}}
--\entry{_Complex_I}{538}{\code {_Complex_I}}
--\entry{I}{538}{\code {I}}
--\entry{CLOCKS_PER_SEC}{552}{\code {CLOCKS_PER_SEC}}
--\entry{CLK_TCK}{552}{\code {CLK_TCK}}
--\entry{getdate_err}{572}{\code {getdate_err}}
--\entry{tzname}{576}{\code {tzname}}
--\entry{timezone}{577}{\code {timezone}}
--\entry{daylight}{577}{\code {daylight}}
--\entry{ITIMER_REAL}{579}{\code {ITIMER_REAL}}
--\entry{ITIMER_VIRTUAL}{579}{\code {ITIMER_VIRTUAL}}
--\entry{ITIMER_PROF}{579}{\code {ITIMER_PROF}}
--\entry{RLIMIT_CPU}{587}{\code {RLIMIT_CPU}}
--\entry{RLIMIT_FSIZE}{587}{\code {RLIMIT_FSIZE}}
--\entry{RLIMIT_DATA}{587}{\code {RLIMIT_DATA}}
--\entry{RLIMIT_STACK}{587}{\code {RLIMIT_STACK}}
--\entry{RLIMIT_CORE}{587}{\code {RLIMIT_CORE}}
--\entry{RLIMIT_RSS}{587}{\code {RLIMIT_RSS}}
--\entry{RLIMIT_NOFILE}{588}{\code {RLIMIT_NOFILE}}
--\entry{RLIMIT_OFILE}{588}{\code {RLIMIT_OFILE}}
--\entry{RLIMIT_AS}{588}{\code {RLIMIT_AS}}
--\entry{RLIM_NLIMITS}{588}{\code {RLIM_NLIMITS}}
--\entry{RLIM_INFINITY}{588}{\code {RLIM_INFINITY}}
--\entry{PRIO_MIN}{596}{\code {PRIO_MIN}}
--\entry{PRIO_MAX}{596}{\code {PRIO_MAX}}
--\entry{PRIO_PROCESS}{597}{\code {PRIO_PROCESS}}
--\entry{PRIO_PGRP}{597}{\code {PRIO_PGRP}}
--\entry{PRIO_USER}{597}{\code {PRIO_USER}}
--\entry{_SC_PAGESIZE}{599}{\code {_SC_PAGESIZE}}
--\entry{_SC_PHYS_PAGES}{599}{\code {_SC_PHYS_PAGES}}
--\entry{_SC_AVPHYS_PAGES}{599}{\code {_SC_AVPHYS_PAGES}}
--\entry{_SC_NPROCESSORS_CONF}{600}{\code {_SC_NPROCESSORS_CONF}}
--\entry{_SC_NPROCESSORS_ONLN}{600}{\code {_SC_NPROCESSORS_ONLN}}
--\entry{NSIG}{613}{\code {NSIG}}
--\entry{COREFILE}{614}{\code {COREFILE}}
--\entry{SIGFPE}{614}{\code {SIGFPE}}
--\entry{FPE_INTOVF_TRAP}{614}{\code {FPE_INTOVF_TRAP}}
--\entry{FPE_INTDIV_TRAP}{614}{\code {FPE_INTDIV_TRAP}}
--\entry{FPE_SUBRNG_TRAP}{615}{\code {FPE_SUBRNG_TRAP}}
--\entry{FPE_FLTOVF_TRAP}{615}{\code {FPE_FLTOVF_TRAP}}
--\entry{FPE_FLTDIV_TRAP}{615}{\code {FPE_FLTDIV_TRAP}}
--\entry{FPE_FLTUND_TRAP}{615}{\code {FPE_FLTUND_TRAP}}
--\entry{FPE_DECOVF_TRAP}{615}{\code {FPE_DECOVF_TRAP}}
--\entry{SIGILL}{615}{\code {SIGILL}}
--\entry{SIGSEGV}{615}{\code {SIGSEGV}}
--\entry{SIGBUS}{615}{\code {SIGBUS}}
--\entry{SIGABRT}{616}{\code {SIGABRT}}
--\entry{SIGIOT}{616}{\code {SIGIOT}}
--\entry{SIGTRAP}{616}{\code {SIGTRAP}}
--\entry{SIGEMT}{616}{\code {SIGEMT}}
--\entry{SIGSYS}{616}{\code {SIGSYS}}
--\entry{SIGTERM}{616}{\code {SIGTERM}}
--\entry{SIGINT}{616}{\code {SIGINT}}
--\entry{SIGQUIT}{616}{\code {SIGQUIT}}
--\entry{SIGKILL}{617}{\code {SIGKILL}}
--\entry{SIGHUP}{617}{\code {SIGHUP}}
--\entry{SIGALRM}{617}{\code {SIGALRM}}
--\entry{SIGVTALRM}{617}{\code {SIGVTALRM}}
--\entry{SIGPROF}{618}{\code {SIGPROF}}
--\entry{SIGIO}{618}{\code {SIGIO}}
--\entry{SIGURG}{618}{\code {SIGURG}}
--\entry{SIGPOLL}{618}{\code {SIGPOLL}}
--\entry{SIGCHLD}{618}{\code {SIGCHLD}}
--\entry{SIGCLD}{618}{\code {SIGCLD}}
--\entry{SIGCONT}{619}{\code {SIGCONT}}
--\entry{SIGSTOP}{619}{\code {SIGSTOP}}
--\entry{SIGTSTP}{619}{\code {SIGTSTP}}
--\entry{SIGTTIN}{619}{\code {SIGTTIN}}
--\entry{SIGTTOU}{619}{\code {SIGTTOU}}
--\entry{SIGPIPE}{620}{\code {SIGPIPE}}
--\entry{SIGLOST}{620}{\code {SIGLOST}}
--\entry{SIGXCPU}{620}{\code {SIGXCPU}}
--\entry{SIGXFSZ}{620}{\code {SIGXFSZ}}
--\entry{SIGUSR1}{621}{\code {SIGUSR1}}
--\entry{SIGUSR2}{621}{\code {SIGUSR2}}
--\entry{SIGWINCH}{621}{\code {SIGWINCH}}
--\entry{SIGINFO}{621}{\code {SIGINFO}}
--\entry{sys_siglist}{622}{\code {sys_siglist}}
--\entry{SIG_DFL}{622}{\code {SIG_DFL}}
--\entry{SIG_IGN}{622}{\code {SIG_IGN}}
--\entry{SIG_ERR}{624}{\code {SIG_ERR}}
--\entry{SA_NOCLDSTOP}{627}{\code {SA_NOCLDSTOP}}
--\entry{SA_ONSTACK}{627}{\code {SA_ONSTACK}}
--\entry{SA_RESTART}{627}{\code {SA_RESTART}}
--\entry{SIG_BLOCK}{645}{\code {SIG_BLOCK}}
--\entry{SIG_UNBLOCK}{645}{\code {SIG_UNBLOCK}}
--\entry{SIG_SETMASK}{645}{\code {SIG_SETMASK}}
--\entry{SIGSTKSZ}{652}{\code {SIGSTKSZ}}
--\entry{MINSIGSTKSZ}{652}{\code {MINSIGSTKSZ}}
--\entry{SS_DISABLE}{653}{\code {SS_DISABLE}}
--\entry{SS_ONSTACK}{653}{\code {SS_ONSTACK}}
--\entry{SV_ONSTACK}{655}{\code {SV_ONSTACK}}
--\entry{SV_INTERRUPT}{655}{\code {SV_INTERRUPT}}
--\entry{SV_RESETHAND}{655}{\code {SV_RESETHAND}}
--\entry{opterr}{659}{\code {opterr}}
--\entry{optopt}{659}{\code {optopt}}
--\entry{optind}{659}{\code {optind}}
--\entry{optarg}{659}{\code {optarg}}
--\entry{argp_program_version}{667}{\code {argp_program_version}}
--\entry{argp_program_bug_address}{667}{\code {argp_program_bug_address}}
--\entry{argp_program_version_hook}{667}{\code {argp_program_version_hook}}
--\entry{argp_err_exit_status}{667}{\code {argp_err_exit_status}}
--\entry{OPTION_ARG_OPTIONAL}{670}{\code {OPTION_ARG_OPTIONAL}}
--\entry{OPTION_HIDDEN}{670}{\code {OPTION_HIDDEN}}
--\entry{OPTION_ALIAS}{670}{\code {OPTION_ALIAS}}
--\entry{OPTION_DOC}{670}{\code {OPTION_DOC}}
--\entry{OPTION_NO_USAGE}{670}{\code {OPTION_NO_USAGE}}
--\entry{ARGP_ERR_UNKNOWN}{671}{\code {ARGP_ERR_UNKNOWN}}
--\entry{ARGP_KEY_ARG}{672}{\code {ARGP_KEY_ARG}}
--\entry{ARGP_KEY_ARGS}{672}{\code {ARGP_KEY_ARGS}}
--\entry{ARGP_KEY_END}{672}{\code {ARGP_KEY_END}}
--\entry{ARGP_KEY_NO_ARGS}{672}{\code {ARGP_KEY_NO_ARGS}}
--\entry{ARGP_KEY_INIT}{672}{\code {ARGP_KEY_INIT}}
--\entry{ARGP_KEY_SUCCESS}{673}{\code {ARGP_KEY_SUCCESS}}
--\entry{ARGP_KEY_ERROR}{673}{\code {ARGP_KEY_ERROR}}
--\entry{ARGP_KEY_FINI}{673}{\code {ARGP_KEY_FINI}}
--\entry{ARGP_PARSE_ARGV0}{677}{\code {ARGP_PARSE_ARGV0}}
--\entry{ARGP_NO_ERRS}{677}{\code {ARGP_NO_ERRS}}
--\entry{ARGP_NO_ARGS}{677}{\code {ARGP_NO_ARGS}}
--\entry{ARGP_IN_ORDER}{677}{\code {ARGP_IN_ORDER}}
--\entry{ARGP_NO_HELP}{677}{\code {ARGP_NO_HELP}}
--\entry{ARGP_NO_EXIT}{677}{\code {ARGP_NO_EXIT}}
--\entry{ARGP_LONG_ONLY}{677}{\code {ARGP_LONG_ONLY}}
--\entry{ARGP_SILENT}{677}{\code {ARGP_SILENT}}
--\entry{ARGP_KEY_HELP_PRE_DOC}{678}{\code {ARGP_KEY_HELP_PRE_DOC}}
--\entry{ARGP_KEY_HELP_POST_DOC}{678}{\code {ARGP_KEY_HELP_POST_DOC}}
--\entry{ARGP_KEY_HELP_HEADER}{678}{\code {ARGP_KEY_HELP_HEADER}}
--\entry{ARGP_KEY_HELP_EXTRA}{678}{\code {ARGP_KEY_HELP_EXTRA}}
--\entry{ARGP_KEY_HELP_DUP_ARGS_NOTE}{678}{\code {ARGP_KEY_HELP_DUP_ARGS_NOTE}}
--\entry{ARGP_KEY_HELP_ARGS_DOC}{678}{\code {ARGP_KEY_HELP_ARGS_DOC}}
--\entry{ARGP_HELP_USAGE}{679}{\code {ARGP_HELP_USAGE}}
--\entry{ARGP_HELP_SHORT_USAGE}{679}{\code {ARGP_HELP_SHORT_USAGE}}
--\entry{ARGP_HELP_SEE}{679}{\code {ARGP_HELP_SEE}}
--\entry{ARGP_HELP_LONG}{679}{\code {ARGP_HELP_LONG}}
--\entry{ARGP_HELP_PRE_DOC}{679}{\code {ARGP_HELP_PRE_DOC}}
--\entry{ARGP_HELP_POST_DOC}{679}{\code {ARGP_HELP_POST_DOC}}
--\entry{ARGP_HELP_DOC}{679}{\code {ARGP_HELP_DOC}}
--\entry{ARGP_HELP_BUG_ADDR}{679}{\code {ARGP_HELP_BUG_ADDR}}
--\entry{ARGP_HELP_LONG_ONLY}{680}{\code {ARGP_HELP_LONG_ONLY}}
--\entry{ARGP_HELP_EXIT_ERR}{680}{\code {ARGP_HELP_EXIT_ERR}}
--\entry{ARGP_HELP_EXIT_OK}{680}{\code {ARGP_HELP_EXIT_OK}}
--\entry{ARGP_HELP_STD_ERR}{680}{\code {ARGP_HELP_STD_ERR}}
--\entry{ARGP_HELP_STD_USAGE}{680}{\code {ARGP_HELP_STD_USAGE}}
--\entry{ARGP_HELP_STD_HELP}{680}{\code {ARGP_HELP_STD_HELP}}
--\entry{environ}{693}{\code {environ}}
--\entry{EXIT_SUCCESS}{697}{\code {EXIT_SUCCESS}}
--\entry{EXIT_FAILURE}{698}{\code {EXIT_FAILURE}}
--\entry{L_ctermid}{728}{\code {L_ctermid}}
--\entry{aliases}{733}{\code {aliases}}
--\entry{ethers}{733}{\code {ethers}}
--\entry{group}{733}{\code {group}}
--\entry{hosts}{733}{\code {hosts}}
--\entry{netgroup}{733}{\code {netgroup}}
--\entry{networks}{733}{\code {networks}}
--\entry{protocols}{733}{\code {protocols}}
--\entry{passwd}{733}{\code {passwd}}
--\entry{rpc}{733}{\code {rpc}}
--\entry{services}{733}{\code {services}}
--\entry{shadow}{733}{\code {shadow}}
--\entry{NSS_STATUS_TRYAGAIN}{738}{\code {NSS_STATUS_TRYAGAIN}}
--\entry{NSS_STATUS_UNAVAIL}{738}{\code {NSS_STATUS_UNAVAIL}}
--\entry{NSS_STATUS_NOTFOUND}{738}{\code {NSS_STATUS_NOTFOUND}}
--\entry{NSS_STATUS_SUCCESS}{738}{\code {NSS_STATUS_SUCCESS}}
--\entry{L_cuserid}{753}{\code {L_cuserid}}
--\entry{EMPTY}{755}{\code {EMPTY}}
--\entry{RUN_LVL}{755}{\code {RUN_LVL}}
--\entry{BOOT_TIME}{755}{\code {BOOT_TIME}}
--\entry{OLD_TIME}{755}{\code {OLD_TIME}}
--\entry{NEW_TIME}{755}{\code {NEW_TIME}}
--\entry{INIT_PROCESS}{755}{\code {INIT_PROCESS}}
--\entry{LOGIN_PROCESS}{755}{\code {LOGIN_PROCESS}}
--\entry{USER_PROCESS}{755}{\code {USER_PROCESS}}
--\entry{DEAD_PROCESS}{755}{\code {DEAD_PROCESS}}
--\entry{ACCOUNTING}{755}{\code {ACCOUNTING}}
--\entry{_PATH_UTMP}{758}{\code {_PATH_UTMP}}
--\entry{_PATH_WTMP}{758}{\code {_PATH_WTMP}}
--\entry{EMPTY}{759}{\code {EMPTY}}
--\entry{RUN_LVL}{759}{\code {RUN_LVL}}
--\entry{BOOT_TIME}{759}{\code {BOOT_TIME}}
--\entry{OLD_TIME}{759}{\code {OLD_TIME}}
--\entry{NEW_TIME}{759}{\code {NEW_TIME}}
--\entry{INIT_PROCESS}{759}{\code {INIT_PROCESS}}
--\entry{LOGIN_PROCESS}{759}{\code {LOGIN_PROCESS}}
--\entry{USER_PROCESS}{759}{\code {USER_PROCESS}}
--\entry{DEAD_PROCESS}{759}{\code {DEAD_PROCESS}}
--\entry{_PATH_FSTAB}{775}{\code {_PATH_FSTAB}}
--\entry{_PATH_MNTTAB}{775}{\code {_PATH_MNTTAB}}
--\entry{_PATH_MOUNTED}{775}{\code {_PATH_MOUNTED}}
--\entry{FSTAB}{775}{\code {FSTAB}}
--\entry{MNTTAB}{775}{\code {MNTTAB}}
--\entry{MOUNTED}{775}{\code {MOUNTED}}
--\entry{FSTAB_RW}{776}{\code {FSTAB_RW}}
--\entry{FSTAB_RQ}{776}{\code {FSTAB_RQ}}
--\entry{FSTAB_RO}{776}{\code {FSTAB_RO}}
--\entry{FSTAB_SW}{776}{\code {FSTAB_SW}}
--\entry{FSTAB_XX}{776}{\code {FSTAB_XX}}
--\entry{MNTTYPE_IGNORE}{778}{\code {MNTTYPE_IGNORE}}
--\entry{MNTTYPE_NFS}{778}{\code {MNTTYPE_NFS}}
--\entry{MNTTYPE_SWAP}{778}{\code {MNTTYPE_SWAP}}
--\entry{MNTOPT_DEFAULTS}{778}{\code {MNTOPT_DEFAULTS}}
--\entry{MNTOPT_RO}{778}{\code {MNTOPT_RO}}
--\entry{MNTOPT_RW}{778}{\code {MNTOPT_RW}}
--\entry{MNTOPT_SUID}{778}{\code {MNTOPT_SUID}}
--\entry{MNTOPT_NOSUID}{778}{\code {MNTOPT_NOSUID}}
--\entry{MNTOPT_NOAUTO}{779}{\code {MNTOPT_NOAUTO}}
--\entry{ARG_MAX}{787}{\code {ARG_MAX}}
--\entry{CHILD_MAX}{787}{\code {CHILD_MAX}}
--\entry{OPEN_MAX}{787}{\code {OPEN_MAX}}
--\entry{STREAM_MAX}{787}{\code {STREAM_MAX}}
--\entry{TZNAME_MAX}{787}{\code {TZNAME_MAX}}
--\entry{NGROUPS_MAX}{788}{\code {NGROUPS_MAX}}
--\entry{SSIZE_MAX}{788}{\code {SSIZE_MAX}}
--\entry{RE_DUP_MAX}{788}{\code {RE_DUP_MAX}}
--\entry{_POSIX_JOB_CONTROL}{788}{\code {_POSIX_JOB_CONTROL}}
--\entry{_POSIX_SAVED_IDS}{788}{\code {_POSIX_SAVED_IDS}}
--\entry{_POSIX2_C_DEV}{789}{\code {_POSIX2_C_DEV}}
--\entry{_POSIX2_FORT_DEV}{789}{\code {_POSIX2_FORT_DEV}}
--\entry{_POSIX2_FORT_RUN}{789}{\code {_POSIX2_FORT_RUN}}
--\entry{_POSIX2_LOCALEDEF}{789}{\code {_POSIX2_LOCALEDEF}}
--\entry{_POSIX2_SW_DEV}{789}{\code {_POSIX2_SW_DEV}}
--\entry{_POSIX_VERSION}{789}{\code {_POSIX_VERSION}}
--\entry{_POSIX2_C_VERSION}{790}{\code {_POSIX2_C_VERSION}}
--\entry{_SC_ARG_MAX}{790}{\code {_SC_ARG_MAX}}
--\entry{_SC_CHILD_MAX}{790}{\code {_SC_CHILD_MAX}}
--\entry{_SC_OPEN_MAX}{790}{\code {_SC_OPEN_MAX}}
--\entry{_SC_STREAM_MAX}{790}{\code {_SC_STREAM_MAX}}
--\entry{_SC_TZNAME_MAX}{790}{\code {_SC_TZNAME_MAX}}
--\entry{_SC_NGROUPS_MAX}{790}{\code {_SC_NGROUPS_MAX}}
--\entry{_SC_JOB_CONTROL}{791}{\code {_SC_JOB_CONTROL}}
--\entry{_SC_SAVED_IDS}{791}{\code {_SC_SAVED_IDS}}
--\entry{_SC_VERSION}{791}{\code {_SC_VERSION}}
--\entry{_SC_CLK_TCK}{791}{\code {_SC_CLK_TCK}}
--\entry{_SC_CHARCLASS_NAME_MAX}{791}{\code {_SC_CHARCLASS_NAME_MAX}}
--\entry{_SC_REALTIME_SIGNALS}{791}{\code {_SC_REALTIME_SIGNALS}}
--\entry{_SC_PRIORITY_SCHEDULING}{791}{\code {_SC_PRIORITY_SCHEDULING}}
--\entry{_SC_TIMERS}{791}{\code {_SC_TIMERS}}
--\entry{_SC_ASYNCHRONOUS_IO}{791}{\code {_SC_ASYNCHRONOUS_IO}}
--\entry{_SC_PRIORITIZED_IO}{791}{\code {_SC_PRIORITIZED_IO}}
--\entry{_SC_SYNCHRONIZED_IO}{791}{\code {_SC_SYNCHRONIZED_IO}}
--\entry{_SC_FSYNC}{791}{\code {_SC_FSYNC}}
--\entry{_SC_MAPPED_FILES}{791}{\code {_SC_MAPPED_FILES}}
--\entry{_SC_MEMLOCK}{791}{\code {_SC_MEMLOCK}}
--\entry{_SC_MEMLOCK_RANGE}{791}{\code {_SC_MEMLOCK_RANGE}}
--\entry{_SC_MEMORY_PROTECTION}{791}{\code {_SC_MEMORY_PROTECTION}}
--\entry{_SC_MESSAGE_PASSING}{791}{\code {_SC_MESSAGE_PASSING}}
--\entry{_SC_SEMAPHORES}{791}{\code {_SC_SEMAPHORES}}
--\entry{_SC_SHARED_MEMORY_OBJECTS}{792}{\code {_SC_SHARED_MEMORY_OBJECTS}}
--\entry{_SC_AIO_LISTIO_MAX}{792}{\code {_SC_AIO_LISTIO_MAX}}
--\entry{_SC_AIO_MAX}{792}{\code {_SC_AIO_MAX}}
--\entry{_SC_AIO_PRIO_DELTA_MAX}{792}{\code {_SC_AIO_PRIO_DELTA_MAX}}
--\entry{_SC_DELAYTIMER_MAX}{792}{\code {_SC_DELAYTIMER_MAX}}
--\entry{_SC_MQ_OPEN_MAX}{792}{\code {_SC_MQ_OPEN_MAX}}
--\entry{_SC_MQ_PRIO_MAX}{792}{\code {_SC_MQ_PRIO_MAX}}
--\entry{_SC_RTSIG_MAX}{792}{\code {_SC_RTSIG_MAX}}
--\entry{_SC_SEM_NSEMS_MAX}{792}{\code {_SC_SEM_NSEMS_MAX}}
--\entry{_SC_SEM_VALUE_MAX}{792}{\code {_SC_SEM_VALUE_MAX}}
--\entry{_SC_SIGQUEUE_MAX}{792}{\code {_SC_SIGQUEUE_MAX}}
--\entry{_SC_TIMER_MAX}{792}{\code {_SC_TIMER_MAX}}
--\entry{_SC_PII}{792}{\code {_SC_PII}}
--\entry{_SC_PII_XTI}{792}{\code {_SC_PII_XTI}}
--\entry{_SC_PII_SOCKET}{792}{\code {_SC_PII_SOCKET}}
--\entry{_SC_PII_INTERNET}{792}{\code {_SC_PII_INTERNET}}
--\entry{_SC_PII_OSI}{792}{\code {_SC_PII_OSI}}
--\entry{_SC_SELECT}{792}{\code {_SC_SELECT}}
--\entry{_SC_UIO_MAXIOV}{792}{\code {_SC_UIO_MAXIOV}}
--\entry{_SC_PII_INTERNET_STREAM}{793}{\code {_SC_PII_INTERNET_STREAM}}
--\entry{_SC_PII_INTERNET_DGRAM}{793}{\code {_SC_PII_INTERNET_DGRAM}}
--\entry{_SC_PII_OSI_COTS}{793}{\code {_SC_PII_OSI_COTS}}
--\entry{_SC_PII_OSI_CLTS}{793}{\code {_SC_PII_OSI_CLTS}}
--\entry{_SC_PII_OSI_M}{793}{\code {_SC_PII_OSI_M}}
--\entry{_SC_T_IOV_MAX}{793}{\code {_SC_T_IOV_MAX}}
--\entry{_SC_THREADS}{793}{\code {_SC_THREADS}}
--\entry{_SC_THREAD_SAFE_FUNCTIONS}{793}{\code {_SC_THREAD_SAFE_FUNCTIONS}}
--\entry{_SC_GETGR_R_SIZE_MAX}{793}{\code {_SC_GETGR_R_SIZE_MAX}}
--\entry{_SC_GETPW_R_SIZE_MAX}{793}{\code {_SC_GETPW_R_SIZE_MAX}}
--\entry{_SC_LOGIN_NAME_MAX}{793}{\code {_SC_LOGIN_NAME_MAX}}
--\entry{_SC_TTY_NAME_MAX}{793}{\code {_SC_TTY_NAME_MAX}}
--\entry{_SC_THREAD_DESTRUCTOR_ITERATIONS}{793}{\code {_SC_THREAD_DESTRUCTOR_ITERATIONS}}
--\entry{_SC_THREAD_KEYS_MAX}{793}{\code {_SC_THREAD_KEYS_MAX}}
--\entry{_SC_THREAD_STACK_MIN}{793}{\code {_SC_THREAD_STACK_MIN}}
--\entry{_SC_THREAD_THREADS_MAX}{793}{\code {_SC_THREAD_THREADS_MAX}}
--\entry{_SC_THREAD_ATTR_STACKADDR}{793}{\code {_SC_THREAD_ATTR_STACKADDR}}
--\entry{_SC_THREAD_ATTR_STACKSIZE}{793}{\code {_SC_THREAD_ATTR_STACKSIZE}}
--\entry{_SC_THREAD_PRIORITY_SCHEDULING}{794}{\code {_SC_THREAD_PRIORITY_SCHEDULING}}
--\entry{_SC_THREAD_PRIO_INHERIT}{794}{\code {_SC_THREAD_PRIO_INHERIT}}
--\entry{_SC_THREAD_PRIO_PROTECT}{794}{\code {_SC_THREAD_PRIO_PROTECT}}
--\entry{_SC_THREAD_PROCESS_SHARED}{794}{\code {_SC_THREAD_PROCESS_SHARED}}
--\entry{_SC_2_C_DEV}{794}{\code {_SC_2_C_DEV}}
--\entry{_SC_2_FORT_DEV}{794}{\code {_SC_2_FORT_DEV}}
--\entry{_SC_2_FORT_RUN}{794}{\code {_SC_2_FORT_RUN}}
--\entry{_SC_2_LOCALEDEF}{794}{\code {_SC_2_LOCALEDEF}}
--\entry{_SC_2_SW_DEV}{794}{\code {_SC_2_SW_DEV}}
--\entry{_SC_BC_BASE_MAX}{794}{\code {_SC_BC_BASE_MAX}}
--\entry{_SC_BC_DIM_MAX}{794}{\code {_SC_BC_DIM_MAX}}
--\entry{_SC_BC_SCALE_MAX}{794}{\code {_SC_BC_SCALE_MAX}}
--\entry{_SC_BC_STRING_MAX}{794}{\code {_SC_BC_STRING_MAX}}
--\entry{_SC_COLL_WEIGHTS_MAX}{794}{\code {_SC_COLL_WEIGHTS_MAX}}
--\entry{_SC_EXPR_NEST_MAX}{794}{\code {_SC_EXPR_NEST_MAX}}
--\entry{_SC_LINE_MAX}{794}{\code {_SC_LINE_MAX}}
--\entry{_SC_EQUIV_CLASS_MAX}{795}{\code {_SC_EQUIV_CLASS_MAX}}
--\entry{_SC_VERSION}{795}{\code {_SC_VERSION}}
--\entry{_SC_2_VERSION}{795}{\code {_SC_2_VERSION}}
--\entry{_SC_PAGESIZE}{795}{\code {_SC_PAGESIZE}}
--\entry{_SC_NPROCESSORS_CONF}{795}{\code {_SC_NPROCESSORS_CONF}}
--\entry{_SC_NPROCESSORS_ONLN}{795}{\code {_SC_NPROCESSORS_ONLN}}
--\entry{_SC_PHYS_PAGES}{795}{\code {_SC_PHYS_PAGES}}
--\entry{_SC_AVPHYS_PAGES}{795}{\code {_SC_AVPHYS_PAGES}}
--\entry{_SC_ATEXIT_MAX}{795}{\code {_SC_ATEXIT_MAX}}
--\entry{_SC_XOPEN_VERSION}{795}{\code {_SC_XOPEN_VERSION}}
--\entry{_SC_XOPEN_XCU_VERSION}{795}{\code {_SC_XOPEN_XCU_VERSION}}
--\entry{_SC_XOPEN_UNIX}{795}{\code {_SC_XOPEN_UNIX}}
--\entry{_SC_XOPEN_REALTIME}{795}{\code {_SC_XOPEN_REALTIME}}
--\entry{_SC_XOPEN_REALTIME_THREADS}{795}{\code {_SC_XOPEN_REALTIME_THREADS}}
--\entry{_SC_XOPEN_LEGACY}{795}{\code {_SC_XOPEN_LEGACY}}
--\entry{_SC_XOPEN_CRYPT}{795}{\code {_SC_XOPEN_CRYPT}}
--\entry{_SC_XOPEN_ENH_I18N}{795}{\code {_SC_XOPEN_ENH_I18N}}
--\entry{_SC_XOPEN_SHM}{796}{\code {_SC_XOPEN_SHM}}
--\entry{_SC_XOPEN_XPG2}{796}{\code {_SC_XOPEN_XPG2}}
--\entry{_SC_XOPEN_XPG3}{796}{\code {_SC_XOPEN_XPG3}}
--\entry{_SC_XOPEN_XPG4}{796}{\code {_SC_XOPEN_XPG4}}
--\entry{_SC_CHAR_BIT}{796}{\code {_SC_CHAR_BIT}}
--\entry{_SC_CHAR_MAX}{796}{\code {_SC_CHAR_MAX}}
--\entry{_SC_CHAR_MIN}{796}{\code {_SC_CHAR_MIN}}
--\entry{_SC_INT_MAX}{796}{\code {_SC_INT_MAX}}
--\entry{_SC_INT_MIN}{796}{\code {_SC_INT_MIN}}
--\entry{_SC_LONG_BIT}{796}{\code {_SC_LONG_BIT}}
--\entry{_SC_WORD_BIT}{796}{\code {_SC_WORD_BIT}}
--\entry{_SC_MB_LEN_MAX}{796}{\code {_SC_MB_LEN_MAX}}
--\entry{_SC_NZERO}{796}{\code {_SC_NZERO}}
--\entry{SC_SSIZE_MAX}{796}{\code {SC_SSIZE_MAX}}
--\entry{_SC_SCHAR_MAX}{796}{\code {_SC_SCHAR_MAX}}
--\entry{_SC_SCHAR_MIN}{796}{\code {_SC_SCHAR_MIN}}
--\entry{_SC_SHRT_MAX}{797}{\code {_SC_SHRT_MAX}}
--\entry{_SC_SHRT_MIN}{797}{\code {_SC_SHRT_MIN}}
--\entry{_SC_UCHAR_MAX}{797}{\code {_SC_UCHAR_MAX}}
--\entry{_SC_UINT_MAX}{797}{\code {_SC_UINT_MAX}}
--\entry{_SC_ULONG_MAX}{797}{\code {_SC_ULONG_MAX}}
--\entry{_SC_USHRT_MAX}{797}{\code {_SC_USHRT_MAX}}
--\entry{_SC_NL_ARGMAX}{797}{\code {_SC_NL_ARGMAX}}
--\entry{_SC_NL_LANGMAX}{797}{\code {_SC_NL_LANGMAX}}
--\entry{_SC_NL_MSGMAX}{797}{\code {_SC_NL_MSGMAX}}
--\entry{_SC_NL_NMAX}{797}{\code {_SC_NL_NMAX}}
--\entry{_SC_NL_SETMAX}{797}{\code {_SC_NL_SETMAX}}
--\entry{_SC_NL_TEXTMAX}{797}{\code {_SC_NL_TEXTMAX}}
--\entry{LINK_MAX}{799}{\code {LINK_MAX}}
--\entry{MAX_CANON}{800}{\code {MAX_CANON}}
--\entry{MAX_INPUT}{800}{\code {MAX_INPUT}}
--\entry{NAME_MAX}{800}{\code {NAME_MAX}}
--\entry{PATH_MAX}{800}{\code {PATH_MAX}}
--\entry{PIPE_BUF}{800}{\code {PIPE_BUF}}
--\entry{MAXNAMLEN}{800}{\code {MAXNAMLEN}}
--\entry{FILENAME_MAX}{800}{\code {FILENAME_MAX}}
--\entry{_POSIX_CHOWN_RESTRICTED}{801}{\code {_POSIX_CHOWN_RESTRICTED}}
--\entry{_POSIX_NO_TRUNC}{801}{\code {_POSIX_NO_TRUNC}}
--\entry{_POSIX_VDISABLE}{801}{\code {_POSIX_VDISABLE}}
--\entry{BC_BASE_MAX}{804}{\code {BC_BASE_MAX}}
--\entry{BC_DIM_MAX}{804}{\code {BC_DIM_MAX}}
--\entry{BC_SCALE_MAX}{804}{\code {BC_SCALE_MAX}}
--\entry{BC_STRING_MAX}{804}{\code {BC_STRING_MAX}}
--\entry{COLL_WEIGHTS_MAX}{804}{\code {COLL_WEIGHTS_MAX}}
--\entry{EXPR_NEST_MAX}{804}{\code {EXPR_NEST_MAX}}
--\entry{LINE_MAX}{804}{\code {LINE_MAX}}
--\entry{EQUIV_CLASS_MAX}{804}{\code {EQUIV_CLASS_MAX}}
--\entry{DES_ENCRYPT}{814}{\code {DES_ENCRYPT}}
--\entry{DES_DECRYPT}{814}{\code {DES_DECRYPT}}
--\entry{DES_HW}{814}{\code {DES_HW}}
--\entry{DES_SW}{814}{\code {DES_SW}}
--\entry{DESERR_NONE}{814}{\code {DESERR_NONE}}
--\entry{DESERR_NOHWDEVICE}{814}{\code {DESERR_NOHWDEVICE}}
--\entry{DESERR_HWERROR}{814}{\code {DESERR_HWERROR}}
--\entry{DESERR_BADPARAM}{814}{\code {DESERR_BADPARAM}}
--\entry{SEM_VALUE_MAX}{831}{\code {SEM_VALUE_MAX}}
--\entry{NDEBUG}{841}{\code {NDEBUG}}
--\entry{NULL}{848}{\code {NULL}}
--\entry{SCHAR_MIN}{850}{\code {SCHAR_MIN}}
--\entry{SCHAR_MAX}{850}{\code {SCHAR_MAX}}
--\entry{UCHAR_MAX}{850}{\code {UCHAR_MAX}}
--\entry{CHAR_MIN}{850}{\code {CHAR_MIN}}
--\entry{CHAR_MAX}{850}{\code {CHAR_MAX}}
--\entry{SHRT_MIN}{850}{\code {SHRT_MIN}}
--\entry{SHRT_MAX}{851}{\code {SHRT_MAX}}
--\entry{USHRT_MAX}{851}{\code {USHRT_MAX}}
--\entry{INT_MIN}{851}{\code {INT_MIN}}
--\entry{INT_MAX}{851}{\code {INT_MAX}}
--\entry{UINT_MAX}{851}{\code {UINT_MAX}}
--\entry{LONG_MIN}{851}{\code {LONG_MIN}}
--\entry{LONG_MAX}{851}{\code {LONG_MAX}}
--\entry{ULONG_MAX}{851}{\code {ULONG_MAX}}
--\entry{LONG_LONG_MIN}{851}{\code {LONG_LONG_MIN}}
--\entry{LONG_LONG_MAX}{851}{\code {LONG_LONG_MAX}}
--\entry{ULONG_LONG_MAX}{851}{\code {ULONG_LONG_MAX}}
--\entry{WCHAR_MAX}{851}{\code {WCHAR_MAX}}
--\entry{FLT_ROUNDS}{853}{\code {FLT_ROUNDS}}
--\entry{FLT_RADIX}{854}{\code {FLT_RADIX}}
--\entry{FLT_MANT_DIG}{854}{\code {FLT_MANT_DIG}}
--\entry{DBL_MANT_DIG}{854}{\code {DBL_MANT_DIG}}
--\entry{LDBL_MANT_DIG}{854}{\code {LDBL_MANT_DIG}}
--\entry{FLT_DIG}{854}{\code {FLT_DIG}}
--\entry{DBL_DIG}{854}{\code {DBL_DIG}}
--\entry{LDBL_DIG}{854}{\code {LDBL_DIG}}
--\entry{FLT_MIN_EXP}{854}{\code {FLT_MIN_EXP}}
--\entry{DBL_MIN_EXP}{854}{\code {DBL_MIN_EXP}}
--\entry{LDBL_MIN_EXP}{855}{\code {LDBL_MIN_EXP}}
--\entry{FLT_MIN_10_EXP}{855}{\code {FLT_MIN_10_EXP}}
--\entry{DBL_MIN_10_EXP}{855}{\code {DBL_MIN_10_EXP}}
--\entry{LDBL_MIN_10_EXP}{855}{\code {LDBL_MIN_10_EXP}}
--\entry{FLT_MAX_EXP}{855}{\code {FLT_MAX_EXP}}
--\entry{DBL_MAX_EXP}{855}{\code {DBL_MAX_EXP}}
--\entry{LDBL_MAX_EXP}{855}{\code {LDBL_MAX_EXP}}
--\entry{FLT_MAX_10_EXP}{855}{\code {FLT_MAX_10_EXP}}
--\entry{DBL_MAX_10_EXP}{855}{\code {DBL_MAX_10_EXP}}
--\entry{LDBL_MAX_10_EXP}{855}{\code {LDBL_MAX_10_EXP}}
--\entry{FLT_MAX}{855}{\code {FLT_MAX}}
--\entry{DBL_MAX}{855}{\code {DBL_MAX}}
--\entry{LDBL_MAX}{855}{\code {LDBL_MAX}}
--\entry{FLT_MIN}{855}{\code {FLT_MIN}}
--\entry{DBL_MIN}{855}{\code {DBL_MIN}}
--\entry{LDBL_MIN}{855}{\code {LDBL_MIN}}
--\entry{FLT_EPSILON}{856}{\code {FLT_EPSILON}}
--\entry{DBL_EPSILON}{856}{\code {DBL_EPSILON}}
--\entry{LDBL_EPSILON}{856}{\code {LDBL_EPSILON}}
-diff -u -udbrN glibc-2.3.2/manual/libc.vrs glibc-2.3.2-200304020432/manual/libc.vrs
---- glibc-2.3.2/manual/libc.vrs Tue Feb 25 11:34:58 2003
-+++ glibc-2.3.2-200304020432/manual/libc.vrs Thu Jan 1 01:00:00 1970
-@@ -1,1074 +0,0 @@
--\initial {(}
--\entry {\code {(*__gconv_end_fct)}}{147}
--\entry {\code {(*__gconv_fct)}}{148}
--\entry {\code {(*__gconv_init_fct)}}{145}
--\initial {_}
--\entry {\code {__free_hook}}{41}
--\entry {\code {__malloc_hook}}{41}
--\entry {\code {__malloc_initialize_hook}}{42}
--\entry {\code {__memalign_hook}}{41}
--\entry {\code {__realloc_hook}}{41}
--\entry {\code {_BSD_SOURCE}}{8}
--\entry {\code {_Complex_I}}{538}
--\entry {\code {_FILE_OFFSET_BITS}}{9}
--\entry {\code {_GNU_SOURCE}}{10}
--\entry {\code {_IOFBF}}{290}
--\entry {\code {_IOLBF}}{291}
--\entry {\code {_IONBF}}{291}
--\entry {\code {_ISOC99_SOURCE}}{10}
--\entry {\code {_LARGEFILE_SOURCE}}{9}
--\entry {\code {_LARGEFILE64_SOURCE}}{9}
--\entry {\code {_PATH_FSTAB}}{775}
--\entry {\code {_PATH_MNTTAB}}{775}
--\entry {\code {_PATH_MOUNTED}}{775}
--\entry {\code {_PATH_UTMP}}{758}
--\entry {\code {_PATH_WTMP}}{758}
--\entry {\code {_POSIX_C_SOURCE}}{8}
--\entry {\code {_POSIX_CHOWN_RESTRICTED}}{801}
--\entry {\code {_POSIX_JOB_CONTROL}}{788}
--\entry {\code {_POSIX_NO_TRUNC}}{801}
--\entry {\code {_POSIX_SAVED_IDS}}{788}
--\entry {\code {_POSIX_SOURCE}}{8}
--\entry {\code {_POSIX_VDISABLE}}{458, 801}
--\entry {\code {_POSIX_VERSION}}{789}
--\entry {\code {_POSIX2_C_DEV}}{789}
--\entry {\code {_POSIX2_C_VERSION}}{790}
--\entry {\code {_POSIX2_FORT_DEV}}{789}
--\entry {\code {_POSIX2_FORT_RUN}}{789}
--\entry {\code {_POSIX2_LOCALEDEF}}{789}
--\entry {\code {_POSIX2_SW_DEV}}{789}
--\entry {\code {_REENTRANT}}{10}
--\entry {\code {_SC_2_C_DEV}}{794}
--\entry {\code {_SC_2_FORT_DEV}}{794}
--\entry {\code {_SC_2_FORT_RUN}}{794}
--\entry {\code {_SC_2_LOCALEDEF}}{794}
--\entry {\code {_SC_2_SW_DEV}}{794}
--\entry {\code {_SC_2_VERSION}}{795}
--\entry {\code {_SC_AIO_LISTIO_MAX}}{792}
--\entry {\code {_SC_AIO_MAX}}{792}
--\entry {\code {_SC_AIO_PRIO_DELTA_MAX}}{792}
--\entry {\code {_SC_ARG_MAX}}{790}
--\entry {\code {_SC_ASYNCHRONOUS_IO}}{791}
--\entry {\code {_SC_ATEXIT_MAX}}{795}
--\entry {\code {_SC_AVPHYS_PAGES}}{599, 795}
--\entry {\code {_SC_BC_BASE_MAX}}{794}
--\entry {\code {_SC_BC_DIM_MAX}}{794}
--\entry {\code {_SC_BC_SCALE_MAX}}{794}
--\entry {\code {_SC_BC_STRING_MAX}}{794}
--\entry {\code {_SC_CHAR_BIT}}{796}
--\entry {\code {_SC_CHAR_MAX}}{796}
--\entry {\code {_SC_CHAR_MIN}}{796}
--\entry {\code {_SC_CHARCLASS_NAME_MAX}}{791}
--\entry {\code {_SC_CHILD_MAX}}{790}
--\entry {\code {_SC_CLK_TCK}}{791}
--\entry {\code {_SC_COLL_WEIGHTS_MAX}}{794}
--\entry {\code {_SC_DELAYTIMER_MAX}}{792}
--\entry {\code {_SC_EQUIV_CLASS_MAX}}{795}
--\entry {\code {_SC_EXPR_NEST_MAX}}{794}
--\entry {\code {_SC_FSYNC}}{791}
--\entry {\code {_SC_GETGR_R_SIZE_MAX}}{793}
--\entry {\code {_SC_GETPW_R_SIZE_MAX}}{793}
--\entry {\code {_SC_INT_MAX}}{796}
--\entry {\code {_SC_INT_MIN}}{796}
--\entry {\code {_SC_JOB_CONTROL}}{791}
--\entry {\code {_SC_LINE_MAX}}{794}
--\entry {\code {_SC_LOGIN_NAME_MAX}}{793}
--\entry {\code {_SC_LONG_BIT}}{796}
--\entry {\code {_SC_MAPPED_FILES}}{791}
--\entry {\code {_SC_MB_LEN_MAX}}{796}
--\entry {\code {_SC_MEMLOCK}}{791}
--\entry {\code {_SC_MEMLOCK_RANGE}}{791}
--\entry {\code {_SC_MEMORY_PROTECTION}}{791}
--\entry {\code {_SC_MESSAGE_PASSING}}{791}
--\entry {\code {_SC_MQ_OPEN_MAX}}{792}
--\entry {\code {_SC_MQ_PRIO_MAX}}{792}
--\entry {\code {_SC_NGROUPS_MAX}}{790}
--\entry {\code {_SC_NL_ARGMAX}}{797}
--\entry {\code {_SC_NL_LANGMAX}}{797}
--\entry {\code {_SC_NL_MSGMAX}}{797}
--\entry {\code {_SC_NL_NMAX}}{797}
--\entry {\code {_SC_NL_SETMAX}}{797}
--\entry {\code {_SC_NL_TEXTMAX}}{797}
--\entry {\code {_SC_NPROCESSORS_CONF}}{600, 795}
--\entry {\code {_SC_NPROCESSORS_ONLN}}{600, 795}
--\entry {\code {_SC_NZERO}}{796}
--\entry {\code {_SC_OPEN_MAX}}{790}
--\entry {\code {_SC_PAGESIZE}}{317, 599, 795}
--\entry {\code {_SC_PHYS_PAGES}}{599, 795}
--\entry {\code {_SC_PII}}{792}
--\entry {\code {_SC_PII_INTERNET}}{792}
--\entry {\code {_SC_PII_INTERNET_DGRAM}}{793}
--\entry {\code {_SC_PII_INTERNET_STREAM}}{793}
--\entry {\code {_SC_PII_OSI}}{792}
--\entry {\code {_SC_PII_OSI_CLTS}}{793}
--\entry {\code {_SC_PII_OSI_COTS}}{793}
--\entry {\code {_SC_PII_OSI_M}}{793}
--\entry {\code {_SC_PII_SOCKET}}{792}
--\entry {\code {_SC_PII_XTI}}{792}
--\entry {\code {_SC_PRIORITIZED_IO}}{791}
--\entry {\code {_SC_PRIORITY_SCHEDULING}}{791}
--\entry {\code {_SC_REALTIME_SIGNALS}}{791}
--\entry {\code {_SC_RTSIG_MAX}}{792}
--\entry {\code {_SC_SAVED_IDS}}{791}
--\entry {\code {_SC_SCHAR_MAX}}{796}
--\entry {\code {_SC_SCHAR_MIN}}{796}
--\entry {\code {_SC_SELECT}}{792}
--\entry {\code {_SC_SEM_NSEMS_MAX}}{792}
--\entry {\code {_SC_SEM_VALUE_MAX}}{792}
--\entry {\code {_SC_SEMAPHORES}}{791}
--\entry {\code {_SC_SHARED_MEMORY_OBJECTS}}{792}
--\entry {\code {_SC_SHRT_MAX}}{797}
--\entry {\code {_SC_SHRT_MIN}}{797}
--\entry {\code {_SC_SIGQUEUE_MAX}}{792}
--\entry {\code {_SC_STREAM_MAX}}{790}
--\entry {\code {_SC_SYNCHRONIZED_IO}}{791}
--\entry {\code {_SC_T_IOV_MAX}}{793}
--\entry {\code {_SC_THREAD_ATTR_STACKADDR}}{793}
--\entry {\code {_SC_THREAD_ATTR_STACKSIZE}}{793}
--\entry {\code {_SC_THREAD_DESTRUCTOR_ITERATIONS}}{793}
--\entry {\code {_SC_THREAD_KEYS_MAX}}{793}
--\entry {\code {_SC_THREAD_PRIO_INHERIT}}{794}
--\entry {\code {_SC_THREAD_PRIO_PROTECT}}{794}
--\entry {\code {_SC_THREAD_PRIORITY_SCHEDULING}}{794}
--\entry {\code {_SC_THREAD_PROCESS_SHARED}}{794}
--\entry {\code {_SC_THREAD_SAFE_FUNCTIONS}}{793}
--\entry {\code {_SC_THREAD_STACK_MIN}}{793}
--\entry {\code {_SC_THREAD_THREADS_MAX}}{793}
--\entry {\code {_SC_THREADS}}{793}
--\entry {\code {_SC_TIMER_MAX}}{792}
--\entry {\code {_SC_TIMERS}}{791}
--\entry {\code {_SC_TTY_NAME_MAX}}{793}
--\entry {\code {_SC_TZNAME_MAX}}{790}
--\entry {\code {_SC_UCHAR_MAX}}{797}
--\entry {\code {_SC_UINT_MAX}}{797}
--\entry {\code {_SC_UIO_MAXIOV}}{792}
--\entry {\code {_SC_ULONG_MAX}}{797}
--\entry {\code {_SC_USHRT_MAX}}{797}
--\entry {\code {_SC_VERSION}}{791, 795}
--\entry {\code {_SC_WORD_BIT}}{796}
--\entry {\code {_SC_XOPEN_CRYPT}}{795}
--\entry {\code {_SC_XOPEN_ENH_I18N}}{795}
--\entry {\code {_SC_XOPEN_LEGACY}}{795}
--\entry {\code {_SC_XOPEN_REALTIME}}{795}
--\entry {\code {_SC_XOPEN_REALTIME_THREADS}}{795}
--\entry {\code {_SC_XOPEN_SHM}}{796}
--\entry {\code {_SC_XOPEN_UNIX}}{795}
--\entry {\code {_SC_XOPEN_VERSION}}{795}
--\entry {\code {_SC_XOPEN_XCU_VERSION}}{795}
--\entry {\code {_SC_XOPEN_XPG2}}{796}
--\entry {\code {_SC_XOPEN_XPG3}}{796}
--\entry {\code {_SC_XOPEN_XPG4}}{796}
--\entry {\code {_SVID_SOURCE}}{8}
--\entry {\code {_THREAD_SAFE}}{10}
--\entry {\code {_XOPEN_SOURCE}}{8}
--\entry {\code {_XOPEN_SOURCE_EXTENDED}}{9}
--\initial {A}
--\entry {\code {ABDAY_1}}{162}
--\entry {\code {ABDAY_2}}{162}
--\entry {\code {ABDAY_3}}{162}
--\entry {\code {ABDAY_4}}{162}
--\entry {\code {ABDAY_5}}{162}
--\entry {\code {ABDAY_6}}{162}
--\entry {\code {ABDAY_7}}{162}
--\entry {\code {ABMON_1}}{162}
--\entry {\code {ABMON_10}}{162}
--\entry {\code {ABMON_11}}{162}
--\entry {\code {ABMON_12}}{162}
--\entry {\code {ABMON_2}}{162}
--\entry {\code {ABMON_3}}{162}
--\entry {\code {ABMON_4}}{162}
--\entry {\code {ABMON_5}}{162}
--\entry {\code {ABMON_6}}{162}
--\entry {\code {ABMON_7}}{162}
--\entry {\code {ABMON_8}}{162}
--\entry {\code {ABMON_9}}{162}
--\entry {\code {ACCOUNTING}}{755}
--\entry {\code {AF_FILE}}{402}
--\entry {\code {AF_INET}}{402}
--\entry {\code {AF_LOCAL}}{402}
--\entry {\code {AF_UNIX}}{402}
--\entry {\code {AF_UNSPEC}}{402}
--\entry {\code {aliases}}{733}
--\entry {\code {ALT_DIGITS}}{164}
--\entry {\code {ALTWERASE}}{456}
--\entry {\code {AM_STR}}{163}
--\entry {\code {ARG_MAX}}{787}
--\entry {\code {argp_err_exit_status}}{667}
--\entry {\code {ARGP_ERR_UNKNOWN}}{671}
--\entry {\code {ARGP_HELP_BUG_ADDR}}{679}
--\entry {\code {ARGP_HELP_DOC}}{679}
--\entry {\code {ARGP_HELP_EXIT_ERR}}{680}
--\entry {\code {ARGP_HELP_EXIT_OK}}{680}
--\entry {\code {ARGP_HELP_LONG}}{679}
--\entry {\code {ARGP_HELP_LONG_ONLY}}{680}
--\entry {\code {ARGP_HELP_POST_DOC}}{679}
--\entry {\code {ARGP_HELP_PRE_DOC}}{679}
--\entry {\code {ARGP_HELP_SEE}}{679}
--\entry {\code {ARGP_HELP_SHORT_USAGE}}{679}
--\entry {\code {ARGP_HELP_STD_ERR}}{680}
--\entry {\code {ARGP_HELP_STD_HELP}}{680}
--\entry {\code {ARGP_HELP_STD_USAGE}}{680}
--\entry {\code {ARGP_HELP_USAGE}}{679}
--\entry {\code {ARGP_IN_ORDER}}{677}
--\entry {\code {ARGP_KEY_ARG}}{672}
--\entry {\code {ARGP_KEY_ARGS}}{672}
--\entry {\code {ARGP_KEY_END}}{672}
--\entry {\code {ARGP_KEY_ERROR}}{673}
--\entry {\code {ARGP_KEY_FINI}}{673}
--\entry {\code {ARGP_KEY_HELP_ARGS_DOC}}{678}
--\entry {\code {ARGP_KEY_HELP_DUP_ARGS_NOTE}}{678}
--\entry {\code {ARGP_KEY_HELP_EXTRA}}{678}
--\entry {\code {ARGP_KEY_HELP_HEADER}}{678}
--\entry {\code {ARGP_KEY_HELP_POST_DOC}}{678}
--\entry {\code {ARGP_KEY_HELP_PRE_DOC}}{678}
--\entry {\code {ARGP_KEY_INIT}}{672}
--\entry {\code {ARGP_KEY_NO_ARGS}}{672}
--\entry {\code {ARGP_KEY_SUCCESS}}{673}
--\entry {\code {ARGP_LONG_ONLY}}{677}
--\entry {\code {ARGP_NO_ARGS}}{677}
--\entry {\code {ARGP_NO_ERRS}}{677}
--\entry {\code {ARGP_NO_EXIT}}{677}
--\entry {\code {ARGP_NO_HELP}}{677}
--\entry {\code {ARGP_PARSE_ARGV0}}{677}
--\entry {\code {argp_program_bug_address}}{667}
--\entry {\code {argp_program_version}}{667}
--\entry {\code {argp_program_version_hook}}{667}
--\entry {\code {ARGP_SILENT}}{677}
--\initial {B}
--\entry {\code {B0}}{458}
--\entry {\code {B110}}{458}
--\entry {\code {B115200}}{458}
--\entry {\code {B1200}}{458}
--\entry {\code {B134}}{458}
--\entry {\code {B150}}{458}
--\entry {\code {B1800}}{458}
--\entry {\code {B19200}}{458}
--\entry {\code {B200}}{458}
--\entry {\code {B230400}}{458}
--\entry {\code {B2400}}{458}
--\entry {\code {B300}}{458}
--\entry {\code {B38400}}{458}
--\entry {\code {B460800}}{458}
--\entry {\code {B4800}}{458}
--\entry {\code {B50}}{458}
--\entry {\code {B57600}}{458}
--\entry {\code {B600}}{458}
--\entry {\code {B75}}{458}
--\entry {\code {B9600}}{458}
--\entry {\code {BC_BASE_MAX}}{804}
--\entry {\code {BC_DIM_MAX}}{804}
--\entry {\code {BC_SCALE_MAX}}{804}
--\entry {\code {BC_STRING_MAX}}{804}
--\entry {\code {BOOT_TIME}}{755, 759}
--\entry {\code {BRKINT}}{451}
--\entry {\code {BUFSIZ}}{291}
--\initial {C}
--\entry {\code {CCTS_OFLOW}}{454}
--\entry {\code {CHAR_MAX}}{850}
--\entry {\code {CHAR_MIN}}{850}
--\entry {\code {CHILD_MAX}}{787}
--\entry {\code {CIGNORE}}{454}
--\entry {\code {CLK_TCK}}{552}
--\entry {\code {CLOCAL}}{453}
--\entry {\code {CLOCKS_PER_SEC}}{552}
--\entry {\code {CODESET}}{162}
--\entry {\code {COLL_WEIGHTS_MAX}}{804}
--\entry {\code {COREFILE}}{614}
--\entry {\code {CREAD}}{453}
--\entry {\code {CRNCYSTR}}{164}
--\entry {\code {CRTS_IFLOW}}{454}
--\entry {\code {CS5}}{454}
--\entry {\code {CS6}}{454}
--\entry {\code {CS7}}{454}
--\entry {\code {CS8}}{454}
--\entry {\code {CSIZE}}{454}
--\entry {\code {CSTOPB}}{453}
--\entry {\code {CURRENCY_SYMBOL}}{164}
--\initial {D}
--\entry {\code {D_FMT}}{163}
--\entry {\code {D_T_FMT}}{163}
--\entry {\code {DAY_1}}{162}
--\entry {\code {DAY_2}}{162}
--\entry {\code {DAY_3}}{162}
--\entry {\code {DAY_4}}{162}
--\entry {\code {DAY_5}}{162}
--\entry {\code {DAY_6}}{162}
--\entry {\code {DAY_7}}{162}
--\entry {\code {daylight}}{577}
--\entry {\code {DBL_DIG}}{854}
--\entry {\code {DBL_EPSILON}}{856}
--\entry {\code {DBL_MANT_DIG}}{854}
--\entry {\code {DBL_MAX}}{855}
--\entry {\code {DBL_MAX_10_EXP}}{855}
--\entry {\code {DBL_MAX_EXP}}{855}
--\entry {\code {DBL_MIN}}{855}
--\entry {\code {DBL_MIN_10_EXP}}{855}
--\entry {\code {DBL_MIN_EXP}}{854}
--\entry {\code {DEAD_PROCESS}}{755, 759}
--\entry {\code {DECIMAL_POINT}}{165}
--\entry {\code {DES_DECRYPT}}{814}
--\entry {\code {DES_ENCRYPT}}{814}
--\entry {\code {DES_HW}}{814}
--\entry {\code {DES_SW}}{814}
--\entry {\code {DESERR_BADPARAM}}{814}
--\entry {\code {DESERR_HWERROR}}{814}
--\entry {\code {DESERR_NOHWDEVICE}}{814}
--\entry {\code {DESERR_NONE}}{814}
--\entry {\code {DT_BLK}}{354}
--\entry {\code {DT_CHR}}{354}
--\entry {\code {DT_DIR}}{354}
--\entry {\code {DT_FIFO}}{354}
--\entry {\code {DT_REG}}{353}
--\entry {\code {DT_SOCK}}{354}
--\entry {\code {DT_UNKNOWN}}{353}
--\initial {E}
--\entry {\code {E2BIG}}{17}
--\entry {\code {EACCES}}{17}
--\entry {\code {EADDRINUSE}}{20}
--\entry {\code {EADDRNOTAVAIL}}{21}
--\entry {\code {EADV}}{25}
--\entry {\code {EAFNOSUPPORT}}{20}
--\entry {\code {EAGAIN}}{19}
--\entry {\code {EALREADY}}{20}
--\entry {\code {EAUTH}}{23}
--\entry {\code {EBACKGROUND}}{23}
--\entry {\code {EBADE}}{25}
--\entry {\code {EBADF}}{17, 466}
--\entry {\code {EBADFD}}{25}
--\entry {\code {EBADMSG}}{24}
--\entry {\code {EBADR}}{25}
--\entry {\code {EBADRPC}}{22}
--\entry {\code {EBADRQC}}{25}
--\entry {\code {EBADSLT}}{25}
--\entry {\code {EBFONT}}{25}
--\entry {\code {EBUSY}}{17}
--\entry {\code {ECANCELED}}{24}
--\entry {\code {ECHILD}}{17}
--\entry {\code {ECHO}}{455}
--\entry {\code {ECHOCTL}}{455}
--\entry {\code {ECHOE}}{455}
--\entry {\code {ECHOK}}{455}
--\entry {\code {ECHOKE}}{455}
--\entry {\code {ECHONL}}{455}
--\entry {\code {ECHOPRT}}{455}
--\entry {\code {ECHRNG}}{24}
--\entry {\code {ECOMM}}{25}
--\entry {\code {ECONNABORTED}}{21}
--\entry {\code {ECONNREFUSED}}{22}
--\entry {\code {ECONNRESET}}{21}
--\entry {\code {ED}}{24}
--\entry {\code {EDEADLK}}{17}
--\entry {\code {EDEADLOCK}}{25}
--\entry {\code {EDESTADDRREQ}}{21}
--\entry {\code {EDIED}}{24}
--\entry {\code {EDOM}}{19}
--\entry {\code {EDOTDOT}}{25}
--\entry {\code {EDQUOT}}{22}
--\entry {\code {EEXIST}}{17}
--\entry {\code {EFAULT}}{17}
--\entry {\code {EFBIG}}{18}
--\entry {\code {EFTYPE}}{23}
--\entry {\code {EGRATUITOUS}}{24}
--\entry {\code {EGREGIOUS}}{24}
--\entry {\code {EHOSTDOWN}}{22}
--\entry {\code {EHOSTUNREACH}}{22}
--\entry {\code {EIDRM}}{24}
--\entry {\code {EIEIO}}{24}
--\entry {\code {EILSEQ}}{23}
--\entry {\code {EINPROGRESS}}{20}
--\entry {\code {EINTR}}{16}
--\entry {\code {EINVAL}}{18, 466}
--\entry {\code {EIO}}{16}
--\entry {\code {EISCONN}}{21}
--\entry {\code {EISDIR}}{18}
--\entry {\code {EISNAM}}{25}
--\entry {\code {EL2HLT}}{25}
--\entry {\code {EL2NSYNC}}{24}
--\entry {\code {EL3HLT}}{24}
--\entry {\code {EL3RST}}{24}
--\entry {\code {ELIBACC}}{25}
--\entry {\code {ELIBBAD}}{25}
--\entry {\code {ELIBEXEC}}{25}
--\entry {\code {ELIBMAX}}{25}
--\entry {\code {ELIBSCN}}{25}
--\entry {\code {ELNRNG}}{25}
--\entry {\code {ELOOP}}{22}
--\entry {\code {EMEDIUMTYPE}}{25}
--\entry {\code {EMFILE}}{18}
--\entry {\code {EMLINK}}{19}
--\entry {\code {EMPTY}}{755, 759}
--\entry {\code {EMSGSIZE}}{20}
--\entry {\code {EMULTIHOP}}{24}
--\entry {\code {ENAMETOOLONG}}{22}
--\entry {\code {ENAVAIL}}{25}
--\entry {\code {ENEEDAUTH}}{23}
--\entry {\code {ENETDOWN}}{21}
--\entry {\code {ENETRESET}}{21}
--\entry {\code {ENETUNREACH}}{21}
--\entry {\code {ENFILE}}{18}
--\entry {\code {ENOANO}}{25}
--\entry {\code {ENOBUFS}}{21}
--\entry {\code {ENOCSI}}{25}
--\entry {\code {ENODATA}}{24}
--\entry {\code {ENODEV}}{18}
--\entry {\code {ENOENT}}{16}
--\entry {\code {ENOEXEC}}{17}
--\entry {\code {ENOLCK}}{23}
--\entry {\code {ENOLINK}}{24}
--\entry {\code {ENOMEDIUM}}{25}
--\entry {\code {ENOMEM}}{17}
--\entry {\code {ENOMSG}}{24}
--\entry {\code {ENONET}}{25}
--\entry {\code {ENOPKG}}{25}
--\entry {\code {ENOPROTOOPT}}{20}
--\entry {\code {ENOSPC}}{18}
--\entry {\code {ENOSR}}{24}
--\entry {\code {ENOSTR}}{24}
--\entry {\code {ENOSYS}}{23}
--\entry {\code {ENOTBLK}}{17}
--\entry {\code {ENOTCONN}}{21}
--\entry {\code {ENOTDIR}}{18}
--\entry {\code {ENOTEMPTY}}{22}
--\entry {\code {ENOTNAM}}{25}
--\entry {\code {ENOTSOCK}}{20}
--\entry {\code {ENOTSUP}}{23}
--\entry {\code {ENOTTY}}{18, 466}
--\entry {\code {ENOTUNIQ}}{25}
--\entry {\code {environ}}{693}
--\entry {\code {ENXIO}}{17}
--\entry {\code {EOF}}{281}
--\entry {\code {EOPNOTSUPP}}{20}
--\entry {\code {EOVERFLOW}}{24}
--\entry {\code {EPERM}}{16}
--\entry {\code {EPFNOSUPPORT}}{20}
--\entry {\code {EPIPE}}{19}
--\entry {\code {EPROCLIM}}{22}
--\entry {\code {EPROCUNAVAIL}}{23}
--\entry {\code {EPROGMISMATCH}}{23}
--\entry {\code {EPROGUNAVAIL}}{22}
--\entry {\code {EPROTO}}{24}
--\entry {\code {EPROTONOSUPPORT}}{20}
--\entry {\code {EPROTOTYPE}}{20}
--\entry {\code {EQUIV_CLASS_MAX}}{804}
--\entry {\code {ERA}}{163}
--\entry {\code {ERA_D_FMT}}{164}
--\entry {\code {ERA_D_T_FMT}}{163}
--\entry {\code {ERA_T_FMT}}{164}
--\entry {\code {ERA_YEAR}}{163}
--\entry {\code {ERANGE}}{19}
--\entry {\code {EREMCHG}}{25}
--\entry {\code {EREMOTE}}{22}
--\entry {\code {EREMOTEIO}}{25}
--\entry {\code {ERESTART}}{24}
--\entry {\code {EROFS}}{19}
--\entry {\code {ERPCMISMATCH}}{22}
--\entry {\code {errno}}{15}
--\entry {\code {error_message_count}}{29}
--\entry {\code {error_one_per_line}}{29}
--\entry {\code {error_print_progname}}{29}
--\entry {\code {ESHUTDOWN}}{21}
--\entry {\code {ESOCKTNOSUPPORT}}{20}
--\entry {\code {ESPIPE}}{18}
--\entry {\code {ESRCH}}{16}
--\entry {\code {ESRMNT}}{25}
--\entry {\code {ESTALE}}{22}
--\entry {\code {ESTRPIPE}}{25}
--\entry {\code {ethers}}{733}
--\entry {\code {ETIME}}{24}
--\entry {\code {ETIMEDOUT}}{21}
--\entry {\code {ETOOMANYREFS}}{21}
--\entry {\code {ETXTBSY}}{18}
--\entry {\code {EUCLEAN}}{25}
--\entry {\code {EUNATCH}}{25}
--\entry {\code {EUSERS}}{22}
--\entry {\code {EWOULDBLOCK}}{19}
--\entry {\code {EXDEV}}{18}
--\entry {\code {EXFULL}}{25}
--\entry {\code {EXIT_FAILURE}}{698}
--\entry {\code {EXIT_SUCCESS}}{697}
--\entry {\code {EXPR_NEST_MAX}}{804}
--\entry {\code {EXTA}}{458}
--\entry {\code {EXTB}}{458}
--\initial {F}
--\entry {\code {F_DUPFD}}{338}
--\entry {\code {F_GETFD}}{339}
--\entry {\code {F_GETFL}}{344}
--\entry {\code {F_GETLK}}{346}
--\entry {\code {F_GETOWN}}{348}
--\entry {\code {F_OK}}{383}
--\entry {\code {F_RDLCK}}{348}
--\entry {\code {F_SETFD}}{339}
--\entry {\code {F_SETFL}}{344}
--\entry {\code {F_SETLK}}{347}
--\entry {\code {F_SETLKW}}{347}
--\entry {\code {F_SETOWN}}{349}
--\entry {\code {F_UNLCK}}{348}
--\entry {\code {F_WRLCK}}{348}
--\entry {\code {FD_CLOEXEC}}{339}
--\entry {\code {FD_SETSIZE}}{321}
--\entry {\code {FE_DFL_ENV}}{529}
--\entry {\code {FE_DIVBYZERO}}{525}
--\entry {\code {FE_DOWNWARD}}{528}
--\entry {\code {FE_INEXACT}}{525}
--\entry {\code {FE_INVALID}}{525}
--\entry {\code {FE_NOMASK_ENV}}{529}
--\entry {\code {FE_OVERFLOW}}{525}
--\entry {\code {FE_TONEAREST}}{528}
--\entry {\code {FE_TOWARDZERO}}{528}
--\entry {\code {FE_UNDERFLOW}}{525}
--\entry {\code {FE_UPWARD}}{528}
--\entry {\code {FILENAME_MAX}}{800}
--\entry {\code {FLT_DIG}}{854}
--\entry {\code {FLT_EPSILON}}{856}
--\entry {\code {FLT_MANT_DIG}}{854}
--\entry {\code {FLT_MAX}}{855}
--\entry {\code {FLT_MAX_10_EXP}}{855}
--\entry {\code {FLT_MAX_EXP}}{855}
--\entry {\code {FLT_MIN}}{855}
--\entry {\code {FLT_MIN_10_EXP}}{855}
--\entry {\code {FLT_MIN_EXP}}{854}
--\entry {\code {FLT_RADIX}}{854}
--\entry {\code {FLT_ROUNDS}}{853}
--\entry {\code {FLUSHO}}{456}
--\entry {\code {FOPEN_MAX}}{234}
--\entry {\code {FP_FAST_FMA}}{538}
--\entry {\code {FP_ILOGB0}}{484}
--\entry {\code {FP_ILOGBNAN}}{484}
--\entry {\code {FP_INFINITE}}{521}
--\entry {\code {FP_NAN}}{521}
--\entry {\code {FP_NORMAL}}{521}
--\entry {\code {FP_SUBNORMAL}}{521}
--\entry {\code {FP_ZERO}}{521}
--\entry {\code {FPE_DECOVF_TRAP}}{615}
--\entry {\code {FPE_FLTDIV_TRAP}}{615}
--\entry {\code {FPE_FLTOVF_TRAP}}{615}
--\entry {\code {FPE_FLTUND_TRAP}}{615}
--\entry {\code {FPE_INTDIV_TRAP}}{614}
--\entry {\code {FPE_INTOVF_TRAP}}{614}
--\entry {\code {FPE_SUBRNG_TRAP}}{615}
--\entry {\code {FRAC_DIGITS}}{164}
--\entry {\code {FSETLOCKING_BYCALLER}}{239}
--\entry {\code {FSETLOCKING_INTERNAL}}{239}
--\entry {\code {FSETLOCKING_QUERY}}{239}
--\entry {\code {FSTAB}}{775}
--\entry {\code {FSTAB_RO}}{776}
--\entry {\code {FSTAB_RQ}}{776}
--\entry {\code {FSTAB_RW}}{776}
--\entry {\code {FSTAB_SW}}{776}
--\entry {\code {FSTAB_XX}}{776}
--\entry {\code {FTW_CHDIR}}{363}
--\entry {\code {FTW_D}}{360}
--\entry {\code {FTW_DEPTH}}{363}
--\entry {\code {FTW_DNR}}{360}
--\entry {\code {FTW_DP}}{361}
--\entry {\code {FTW_F}}{360}
--\entry {\code {FTW_MOUNT}}{363}
--\entry {\code {FTW_NS}}{360}
--\entry {\code {FTW_PHYS}}{363}
--\entry {\code {FTW_SL}}{360}
--\entry {\code {FTW_SLN}}{361}
--\initial {G}
--\entry {\code {getdate_err}}{572}
--\entry {\code {GLOB_ABORTED}}{209}
--\entry {\code {GLOB_ALTDIRFUNC}}{211}
--\entry {\code {GLOB_APPEND}}{210}
--\entry {\code {GLOB_BRACE}}{211}
--\entry {\code {GLOB_DOOFFS}}{210}
--\entry {\code {GLOB_ERR}}{210}
--\entry {\code {GLOB_MAGCHAR}}{211}
--\entry {\code {GLOB_MARK}}{210}
--\entry {\code {GLOB_NOCHECK}}{211}
--\entry {\code {GLOB_NOESCAPE}}{211}
--\entry {\code {GLOB_NOMAGIC}}{212}
--\entry {\code {GLOB_NOMATCH}}{209}
--\entry {\code {GLOB_NOSORT}}{211}
--\entry {\code {GLOB_NOSPACE}}{209}
--\entry {\code {GLOB_ONLYDIR}}{212}
--\entry {\code {GLOB_PERIOD}}{211}
--\entry {\code {GLOB_TILDE}}{212}
--\entry {\code {GLOB_TILDE_CHECK}}{212}
--\entry {\code {group}}{733}
--\entry {\code {GROUPING}}{166}
--\initial {H}
--\entry {\code {h_errno}}{414}
--\entry {\code {HOST_NOT_FOUND}}{414}
--\entry {\code {hosts}}{733}
--\entry {\code {HUGE_VAL}}{527}
--\entry {\code {HUGE_VALF}}{527}
--\entry {\code {HUGE_VALL}}{527}
--\entry {\code {HUPCL}}{453}
--\initial {I}
--\entry {\code {I}}{538}
--\entry {\code {ICANON}}{454}
--\entry {\code {ICRNL}}{451}
--\entry {\code {IEXTEN}}{456}
--\entry {\code {IFNAMSIZ}}{404}
--\entry {\code {IGNBRK}}{451}
--\entry {\code {IGNCR}}{451}
--\entry {\code {IGNPAR}}{451}
--\entry {\code {IMAXBEL}}{452}
--\entry {\code {in6addr_any}}{411}
--\entry {\code {in6addr_loopback}}{411}
--\entry {\code {INADDR_ANY}}{411}
--\entry {\code {INADDR_BROADCAST}}{411}
--\entry {\code {INADDR_LOOPBACK}}{411}
--\entry {\code {INADDR_NONE}}{411}
--\entry {\code {INFINITY}}{524}
--\entry {\code {INIT_PROCESS}}{755, 759}
--\entry {\code {INLCR}}{451}
--\entry {\code {INPCK}}{450}
--\entry {\code {INT_CURR_SYMBOL}}{164}
--\entry {\code {INT_FRAC_DIGITS}}{164}
--\entry {\code {INT_MAX}}{851}
--\entry {\code {INT_MIN}}{851}
--\entry {\code {INT_N_CS_PRECEDES}}{165}
--\entry {\code {INT_N_SEP_BY_SPACE}}{165}
--\entry {\code {INT_N_SIGN_POSN}}{165}
--\entry {\code {INT_P_CS_PRECEDES}}{165}
--\entry {\code {INT_P_SEP_BY_SPACE}}{165}
--\entry {\code {INT_P_SIGN_POSN}}{165}
--\entry {\code {IPPORT_RESERVED}}{417}
--\entry {\code {IPPORT_USERRESERVED}}{417}
--\entry {\code {ISIG}}{455}
--\entry {\code {ISTRIP}}{451}
--\entry {\code {ITIMER_PROF}}{579}
--\entry {\code {ITIMER_REAL}}{579}
--\entry {\code {ITIMER_VIRTUAL}}{579}
--\entry {\code {IXANY}}{452}
--\entry {\code {IXOFF}}{451}
--\entry {\code {IXON}}{452}
--\initial {L}
--\entry {\code {L_ctermid}}{728}
--\entry {\code {L_cuserid}}{753}
--\entry {\code {L_INCR}}{286}
--\entry {\code {L_SET}}{286}
--\entry {\code {L_tmpnam}}{389}
--\entry {\code {L_XTND}}{286}
--\entry {\code {LANG}}{155}
--\entry {\code {LANGUAGE}}{155}
--\entry {\code {LC_ALL}}{155}
--\entry {\code {LC_COLLATE}}{154}
--\entry {\code {LC_CTYPE}}{154}
--\entry {\code {LC_MESSAGES}}{154}
--\entry {\code {LC_MONETARY}}{154}
--\entry {\code {LC_NUMERIC}}{154}
--\entry {\code {LC_TIME}}{154}
--\entry {\code {LDBL_DIG}}{854}
--\entry {\code {LDBL_EPSILON}}{856}
--\entry {\code {LDBL_MANT_DIG}}{854}
--\entry {\code {LDBL_MAX}}{855}
--\entry {\code {LDBL_MAX_10_EXP}}{855}
--\entry {\code {LDBL_MAX_EXP}}{855}
--\entry {\code {LDBL_MIN}}{855}
--\entry {\code {LDBL_MIN_10_EXP}}{855}
--\entry {\code {LDBL_MIN_EXP}}{855}
--\entry {\code {LINE_MAX}}{804}
--\entry {\code {LINK_MAX}}{799}
--\entry {\code {LIO_NOP}}{326}
--\entry {\code {LIO_READ}}{326}
--\entry {\code {LIO_WRITE}}{326}
--\entry {\code {LOG_ALERT}}{475}
--\entry {\code {LOG_AUTH}}{474}
--\entry {\code {LOG_AUTHPRIV}}{475}
--\entry {\code {LOG_CRIT}}{475}
--\entry {\code {LOG_CRON}}{475}
--\entry {\code {LOG_DAEMON}}{474}
--\entry {\code {LOG_DEBUG}}{476}
--\entry {\code {LOG_EMERG}}{475}
--\entry {\code {LOG_ERR}}{475}
--\entry {\code {LOG_FTP}}{475}
--\entry {\code {LOG_INFO}}{476}
--\entry {\code {LOG_LOCAL0}}{475}
--\entry {\code {LOG_LOCAL1}}{475}
--\entry {\code {LOG_LOCAL2}}{475}
--\entry {\code {LOG_LOCAL3}}{475}
--\entry {\code {LOG_LOCAL4}}{475}
--\entry {\code {LOG_LOCAL5}}{475}
--\entry {\code {LOG_LOCAL6}}{475}
--\entry {\code {LOG_LOCAL7}}{475}
--\entry {\code {LOG_LPR}}{474}
--\entry {\code {LOG_MAIL}}{474}
--\entry {\code {LOG_NEWS}}{474}
--\entry {\code {LOG_NOTICE}}{476}
--\entry {\code {LOG_SYSLOG}}{474}
--\entry {\code {LOG_USER}}{474}
--\entry {\code {LOG_UUCP}}{475}
--\entry {\code {LOG_WARNING}}{475}
--\entry {\code {LOGIN_PROCESS}}{755, 759}
--\entry {\code {LONG_LONG_MAX}}{851}
--\entry {\code {LONG_LONG_MIN}}{851}
--\entry {\code {LONG_MAX}}{851}
--\entry {\code {LONG_MIN}}{851}
--\initial {M}
--\entry {\code {M_1_PI}}{479}
--\entry {\code {M_2_PI}}{479}
--\entry {\code {M_2_SQRTPI}}{479}
--\entry {\code {M_E}}{479}
--\entry {\code {M_LN10}}{479}
--\entry {\code {M_LN2}}{479}
--\entry {\code {M_LOG10E}}{479}
--\entry {\code {M_LOG2E}}{479}
--\entry {\code {M_PI}}{479}
--\entry {\code {M_PI_2}}{479}
--\entry {\code {M_PI_4}}{479}
--\entry {\code {M_SQRT1_2}}{479}
--\entry {\code {M_SQRT2}}{479}
--\entry {\code {MAP_ANON}}{318}
--\entry {\code {MAP_ANONYMOUS}}{318}
--\entry {\code {MAP_FIXED}}{318}
--\entry {\code {MAP_PRIVATE}}{317}
--\entry {\code {MAP_SHARED}}{317}
--\entry {\code {MAX_CANON}}{800}
--\entry {\code {MAX_INPUT}}{800}
--\entry {\code {MAXNAMLEN}}{800}
--\entry {\code {MAXSYMLINKS}}{365}
--\entry {\code {MB_CUR_MAX}}{116}
--\entry {\code {MB_LEN_MAX}}{116}
--\entry {\code {MDMBUF}}{454}
--\entry {\code {MINSIGSTKSZ}}{652}
--\entry {\code {MM_APPL}}{297}
--\entry {\code {MM_CONSOLE}}{297}
--\entry {\code {MM_ERROR}}{298}
--\entry {\code {MM_FIRM}}{297}
--\entry {\code {MM_HALT}}{298}
--\entry {\code {MM_HARD}}{297}
--\entry {\code {MM_INFO}}{299}
--\entry {\code {MM_NOSEV}}{298}
--\entry {\code {MM_NRECOV}}{298}
--\entry {\code {MM_NULLACT}}{298}
--\entry {\code {MM_NULLLBL}}{298}
--\entry {\code {MM_NULLMC}}{298}
--\entry {\code {MM_NULLSEV}}{298}
--\entry {\code {MM_NULLTAG}}{298}
--\entry {\code {MM_NULLTXT}}{298}
--\entry {\code {MM_OPSYS}}{297}
--\entry {\code {MM_PRINT}}{297}
--\entry {\code {MM_RECOVER}}{298}
--\entry {\code {MM_SOFT}}{297}
--\entry {\code {MM_UTIL}}{297}
--\entry {\code {MM_WARNING}}{298}
--\entry {\code {MNTOPT_DEFAULTS}}{778}
--\entry {\code {MNTOPT_NOAUTO}}{779}
--\entry {\code {MNTOPT_NOSUID}}{778}
--\entry {\code {MNTOPT_RO}}{778}
--\entry {\code {MNTOPT_RW}}{778}
--\entry {\code {MNTOPT_SUID}}{778}
--\entry {\code {MNTTAB}}{775}
--\entry {\code {MNTTYPE_IGNORE}}{778}
--\entry {\code {MNTTYPE_NFS}}{778}
--\entry {\code {MNTTYPE_SWAP}}{778}
--\entry {\code {MON_1}}{162}
--\entry {\code {MON_10}}{163}
--\entry {\code {MON_11}}{163}
--\entry {\code {MON_12}}{163}
--\entry {\code {MON_2}}{163}
--\entry {\code {MON_3}}{163}
--\entry {\code {MON_4}}{163}
--\entry {\code {MON_5}}{163}
--\entry {\code {MON_6}}{163}
--\entry {\code {MON_7}}{163}
--\entry {\code {MON_8}}{163}
--\entry {\code {MON_9}}{163}
--\entry {\code {MON_DECIMAL_POINT}}{164}
--\entry {\code {MON_GROUPING}}{164}
--\entry {\code {MON_THOUSANDS_SEP}}{164}
--\entry {\code {MOUNTED}}{775}
--\entry {\code {MS_ASYNC}}{319}
--\entry {\code {MS_SYNC}}{319}
--\entry {\code {MSG_DONTROUTE}}{429}
--\entry {\code {MSG_OOB}}{429}
--\entry {\code {MSG_PEEK}}{429}
--\initial {N}
--\entry {\code {N_CS_PRECEDES}}{165}
--\entry {\code {N_SEP_BY_SPACE}}{165}
--\entry {\code {N_SIGN_POSN}}{165}
--\entry {\code {NAME_MAX}}{800}
--\entry {\code {NAN}}{524}
--\entry {\code {NCCS}}{448}
--\entry {\code {NDEBUG}}{841}
--\entry {\code {NEGATIVE_SIGN}}{164}
--\entry {\code {netgroup}}{733}
--\entry {\code {networks}}{733}
--\entry {\code {NEW_TIME}}{755, 759}
--\entry {\code {NGROUPS_MAX}}{788}
--\entry {\code {NL_ARGMAX}}{251}
--\entry {\code {NO_ADDRESS}}{414}
--\entry {\code {NO_RECOVERY}}{414}
--\entry {\code {NOEXPR}}{166}
--\entry {\code {NOFLSH}}{456}
--\entry {\code {NOKERNINFO}}{456}
--\entry {\code {NOSTR}}{166}
--\entry {\code {NSIG}}{613}
--\entry {\code {NSS_STATUS_NOTFOUND}}{738}
--\entry {\code {NSS_STATUS_SUCCESS}}{738}
--\entry {\code {NSS_STATUS_TRYAGAIN}}{738}
--\entry {\code {NSS_STATUS_UNAVAIL}}{738}
--\entry {\code {NULL}}{848}
--\initial {O}
--\entry {\code {O_ACCMODE}}{341}
--\entry {\code {O_APPEND}}{343}
--\entry {\code {O_ASYNC}}{344}
--\entry {\code {O_CREAT}}{342}
--\entry {\code {O_EXCL}}{342}
--\entry {\code {O_EXEC}}{341}
--\entry {\code {O_EXLOCK}}{343}
--\entry {\code {O_FSYNC}}{344}
--\entry {\code {O_IGNORE_CTTY}}{342}
--\entry {\code {O_NDELAY}}{344}
--\entry {\code {O_NOATIME}}{344}
--\entry {\code {O_NOCTTY}}{342}
--\entry {\code {O_NOLINK}}{342}
--\entry {\code {O_NONBLOCK}}{342, 343}
--\entry {\code {O_NOTRANS}}{342}
--\entry {\code {O_RDONLY}}{341}
--\entry {\code {O_RDWR}}{341}
--\entry {\code {O_READ}}{341}
--\entry {\code {O_SHLOCK}}{343}
--\entry {\code {O_SYNC}}{344}
--\entry {\code {O_TRUNC}}{343}
--\entry {\code {O_WRITE}}{341}
--\entry {\code {O_WRONLY}}{341}
--\entry {\code {obstack_alloc_failed_handler}}{51}
--\entry {\code {OLD_TIME}}{755, 759}
--\entry {\code {ONLCR}}{452}
--\entry {\code {ONOEOT}}{452}
--\entry {\code {OPEN_MAX}}{787}
--\entry {\code {OPOST}}{452}
--\entry {\code {optarg}}{659}
--\entry {\code {opterr}}{659}
--\entry {\code {optind}}{659}
--\entry {\code {OPTION_ALIAS}}{670}
--\entry {\code {OPTION_ARG_OPTIONAL}}{670}
--\entry {\code {OPTION_DOC}}{670}
--\entry {\code {OPTION_HIDDEN}}{670}
--\entry {\code {OPTION_NO_USAGE}}{670}
--\entry {\code {optopt}}{659}
--\entry {\code {OXTABS}}{452}
--\initial {P}
--\entry {\code {P_CS_PRECEDES}}{165}
--\entry {\code {P_SEP_BY_SPACE}}{165}
--\entry {\code {P_SIGN_POSN}}{165}
--\entry {\code {P_tmpdir}}{390}
--\entry {\code {PA_CHAR}}{264}
--\entry {\code {PA_DOUBLE}}{264}
--\entry {\code {PA_FLAG_LONG}}{265}
--\entry {\code {PA_FLAG_LONG_DOUBLE}}{265}
--\entry {\code {PA_FLAG_LONG_LONG}}{265}
--\entry {\code {PA_FLAG_MASK}}{264}
--\entry {\code {PA_FLAG_PTR}}{264}
--\entry {\code {PA_FLAG_SHORT}}{265}
--\entry {\code {PA_FLOAT}}{264}
--\entry {\code {PA_INT}}{264}
--\entry {\code {PA_LAST}}{264}
--\entry {\code {PA_POINTER}}{264}
--\entry {\code {PA_STRING}}{264}
--\entry {\code {PARENB}}{453}
--\entry {\code {PARMRK}}{451}
--\entry {\code {PARODD}}{453}
--\entry {\code {passwd}}{733}
--\entry {\code {PATH_MAX}}{800}
--\entry {\code {PENDIN}}{456}
--\entry {\code {PF_CCITT}}{421}
--\entry {\code {PF_FILE}}{406}
--\entry {\code {PF_IMPLINK}}{421}
--\entry {\code {PF_INET}}{407}
--\entry {\code {PF_INET6}}{407}
--\entry {\code {PF_ISO}}{421}
--\entry {\code {PF_LOCAL}}{405}
--\entry {\code {PF_NS}}{421}
--\entry {\code {PF_ROUTE}}{421}
--\entry {\code {PF_UNIX}}{406}
--\entry {\code {PI}}{480}
--\entry {\code {PIPE_BUF}}{800}
--\entry {\code {PM_STR}}{163}
--\entry {\code {POSITIVE_SIGN}}{164}
--\entry {\code {PRIO_MAX}}{596}
--\entry {\code {PRIO_MIN}}{596}
--\entry {\code {PRIO_PGRP}}{597}
--\entry {\code {PRIO_PROCESS}}{597}
--\entry {\code {PRIO_USER}}{597}
--\entry {\code {program_invocation_name}}{27}
--\entry {\code {program_invocation_short_name}}{27}
--\entry {\code {PROT_EXEC}}{317}
--\entry {\code {PROT_READ}}{317}
--\entry {\code {PROT_WRITE}}{317}
--\entry {\code {protocols}}{733}
--\entry {\code {PWD}}{352}
--\initial {R}
--\entry {\code {R_OK}}{383}
--\entry {\code {RADIXCHAR}}{165}
--\entry {\code {RAND_MAX}}{508}
--\entry {\code {RE_DUP_MAX}}{788}
--\entry {\code {RLIM_INFINITY}}{588}
--\entry {\code {RLIM_NLIMITS}}{588}
--\entry {\code {RLIMIT_AS}}{588}
--\entry {\code {RLIMIT_CORE}}{587}
--\entry {\code {RLIMIT_CPU}}{587}
--\entry {\code {RLIMIT_DATA}}{587}
--\entry {\code {RLIMIT_FSIZE}}{587}
--\entry {\code {RLIMIT_NOFILE}}{588}
--\entry {\code {RLIMIT_OFILE}}{588}
--\entry {\code {RLIMIT_RSS}}{587}
--\entry {\code {RLIMIT_STACK}}{587}
--\entry {\code {rpc}}{733}
--\entry {\code {RUN_LVL}}{755, 759}
--\initial {S}
--\entry {\code {S_IEXEC}}{379}
--\entry {\code {S_IFBLK}}{376}
--\entry {\code {S_IFCHR}}{376}
--\entry {\code {S_IFDIR}}{376}
--\entry {\code {S_IFIFO}}{376}
--\entry {\code {S_IFLNK}}{376}
--\entry {\code {S_IFMT}}{376}
--\entry {\code {S_IFREG}}{376}
--\entry {\code {S_IFSOCK}}{376}
--\entry {\code {S_IREAD}}{378}
--\entry {\code {S_IRGRP}}{379}
--\entry {\code {S_IROTH}}{379}
--\entry {\code {S_IRUSR}}{378}
--\entry {\code {S_IRWXG}}{379}
--\entry {\code {S_IRWXO}}{379}
--\entry {\code {S_IRWXU}}{379}
--\entry {\code {S_ISGID}}{379}
--\entry {\code {S_ISUID}}{379}
--\entry {\code {S_ISVTX}}{379}
--\entry {\code {S_IWGRP}}{379}
--\entry {\code {S_IWOTH}}{379}
--\entry {\code {S_IWRITE}}{379}
--\entry {\code {S_IWUSR}}{379}
--\entry {\code {S_IXGRP}}{379}
--\entry {\code {S_IXOTH}}{379}
--\entry {\code {S_IXUSR}}{379}
--\entry {\code {SA_NOCLDSTOP}}{627}
--\entry {\code {SA_ONSTACK}}{627}
--\entry {\code {SA_RESTART}}{627}
--\entry {\code {SC_SSIZE_MAX}}{796}
--\entry {\code {SCHAR_MAX}}{850}
--\entry {\code {SCHAR_MIN}}{850}
--\entry {\code {SEEK_CUR}}{286}
--\entry {\code {SEEK_END}}{286}
--\entry {\code {SEEK_SET}}{286}
--\entry {\code {SEM_VALUE_MAX}}{831}
--\entry {\code {services}}{733}
--\entry {\code {shadow}}{733}
--\entry {\code {SHRT_MAX}}{851}
--\entry {\code {SHRT_MIN}}{850}
--\entry {\code {SIG_BLOCK}}{645}
--\entry {\code {SIG_DFL}}{622}
--\entry {\code {SIG_ERR}}{624}
--\entry {\code {SIG_IGN}}{622}
--\entry {\code {SIG_SETMASK}}{645}
--\entry {\code {SIG_UNBLOCK}}{645}
--\entry {\code {SIGABRT}}{616}
--\entry {\code {SIGALRM}}{617}
--\entry {\code {SIGBUS}}{615}
--\entry {\code {SIGCHLD}}{618}
--\entry {\code {SIGCLD}}{618}
--\entry {\code {SIGCONT}}{619}
--\entry {\code {SIGEMT}}{616}
--\entry {\code {SIGFPE}}{614}
--\entry {\code {SIGHUP}}{617}
--\entry {\code {SIGILL}}{615}
--\entry {\code {SIGINFO}}{621}
--\entry {\code {SIGINT}}{616}
--\entry {\code {SIGIO}}{618}
--\entry {\code {SIGIOT}}{616}
--\entry {\code {SIGKILL}}{617}
--\entry {\code {SIGLOST}}{620}
--\entry {\code {signgam}}{488}
--\entry {\code {SIGPIPE}}{620}
--\entry {\code {SIGPOLL}}{618}
--\entry {\code {SIGPROF}}{618}
--\entry {\code {SIGQUIT}}{616}
--\entry {\code {SIGSEGV}}{615}
--\entry {\code {SIGSTKSZ}}{652}
--\entry {\code {SIGSTOP}}{619}
--\entry {\code {SIGSYS}}{616}
--\entry {\code {SIGTERM}}{616}
--\entry {\code {SIGTRAP}}{616}
--\entry {\code {SIGTSTP}}{619}
--\entry {\code {SIGTTIN}}{619}
--\entry {\code {SIGTTOU}}{619}
--\entry {\code {SIGURG}}{618}
--\entry {\code {SIGUSR1}}{621}
--\entry {\code {SIGUSR2}}{621}
--\entry {\code {SIGVTALRM}}{617}
--\entry {\code {SIGWINCH}}{621}
--\entry {\code {SIGXCPU}}{620}
--\entry {\code {SIGXFSZ}}{620}
--\entry {\code {SOCK_DGRAM}}{400}
--\entry {\code {SOCK_RAW}}{401}
--\entry {\code {SOCK_STREAM}}{400}
--\entry {\code {SOL_SOCKET}}{441}
--\entry {\code {SS_DISABLE}}{653}
--\entry {\code {SS_ONSTACK}}{653}
--\entry {\code {SSIZE_MAX}}{788}
--\entry {\code {stderr}}{231}
--\entry {\code {STDERR_FILENO}}{313}
--\entry {\code {stdin}}{231}
--\entry {\code {STDIN_FILENO}}{313}
--\entry {\code {stdout}}{231}
--\entry {\code {STDOUT_FILENO}}{313}
--\entry {\code {STREAM_MAX}}{787}
--\entry {\code {SV_INTERRUPT}}{655}
--\entry {\code {SV_ONSTACK}}{655}
--\entry {\code {SV_RESETHAND}}{655}
--\entry {\code {sys_siglist}}{622}
--\initial {T}
--\entry {\code {T_FMT}}{163}
--\entry {\code {T_FMT_AMPM}}{163}
--\entry {\code {TCIFLUSH}}{465}
--\entry {\code {TCIOFF}}{466}
--\entry {\code {TCIOFLUSH}}{465}
--\entry {\code {TCION}}{466}
--\entry {\code {TCOFLUSH}}{465}
--\entry {\code {TCOOFF}}{466}
--\entry {\code {TCOON}}{466}
--\entry {\code {TCSADRAIN}}{448}
--\entry {\code {TCSAFLUSH}}{448}
--\entry {\code {TCSANOW}}{448}
--\entry {\code {TCSASOFT}}{448}
--\entry {\code {THOUSANDS_SEP}}{166}
--\entry {\code {THOUSEP}}{166}
--\entry {\code {timezone}}{577}
--\entry {\code {TMP_MAX}}{390}
--\entry {\code {TOSTOP}}{456}
--\entry {\code {TRY_AGAIN}}{414}
--\entry {\code {tzname}}{576}
--\entry {\code {TZNAME_MAX}}{787}
--\initial {U}
--\entry {\code {UCHAR_MAX}}{850}
--\entry {\code {UINT_MAX}}{851}
--\entry {\code {ULONG_LONG_MAX}}{851}
--\entry {\code {ULONG_MAX}}{851}
--\entry {\code {USER_PROCESS}}{755, 759}
--\entry {\code {USHRT_MAX}}{851}
--\initial {V}
--\entry {\code {VDISCARD}}{462}
--\entry {\code {VDSUSP}}{461}
--\entry {\code {VEOF}}{458}
--\entry {\code {VEOL}}{459}
--\entry {\code {VEOL2}}{459}
--\entry {\code {VERASE}}{459}
--\entry {\code {VINTR}}{460}
--\entry {\code {VKILL}}{460}
--\entry {\code {VLNEXT}}{462}
--\entry {\code {VMIN}}{463}
--\entry {\code {VQUIT}}{460}
--\entry {\code {VREPRINT}}{460}
--\entry {\code {VSTART}}{461}
--\entry {\code {VSTATUS}}{462}
--\entry {\code {VSTOP}}{461}
--\entry {\code {VSUSP}}{460}
--\entry {\code {VTIME}}{463}
--\entry {\code {VWERASE}}{459}
--\initial {W}
--\entry {\code {W_OK}}{383}
--\entry {\code {WCHAR_MAX}}{112, 851}
--\entry {\code {WCHAR_MIN}}{112}
--\entry {\code {WEOF}}{113, 282}
--\initial {X}
--\entry {\code {X_OK}}{383}
--\initial {Y}
--\entry {\code {YESEXPR}}{166}
--\entry {\code {YESSTR}}{166}
-diff -u -udbrN glibc-2.3.2/manual/libcbook.texi glibc-2.3.2-200304020432/manual/libcbook.texi
---- glibc-2.3.2/manual/libcbook.texi Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/manual/libcbook.texi Sat Feb 18 02:12:54 1995
-@@ -0,0 +1,3 @@
-+\input texinfo
-+@finalout
-+@include libc.texinfo
-diff -u -udbrN glibc-2.3.2/manual/libm-err.texi glibc-2.3.2-200304020432/manual/libm-err.texi
---- glibc-2.3.2/manual/libm-err.texi Mon Nov 5 21:54:48 2001
-+++ glibc-2.3.2-200304020432/manual/libm-err.texi Thu Jan 1 01:00:00 1970
-@@ -1,801 +0,0 @@
--@multitable {nexttowardf} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000}
--@item Function @tab Alpha @tab ARM @tab Generic @tab ix86 @tab IA64
--@item acosf @tab - @tab - @tab - @tab - @tab -
--@item acos @tab - @tab - @tab - @tab - @tab -
--@item acosl @tab - @tab - @tab - @tab 1150 @tab -
--@item acoshf @tab - @tab - @tab - @tab - @tab -
--@item acosh @tab - @tab - @tab - @tab - @tab -
--@item acoshl @tab - @tab - @tab - @tab 1 @tab -
--@item asinf @tab 2 @tab 2 @tab - @tab - @tab -
--@item asin @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item asinl @tab - @tab - @tab - @tab 1 @tab -
--@item asinhf @tab - @tab - @tab - @tab - @tab -
--@item asinh @tab - @tab - @tab - @tab - @tab -
--@item asinhl @tab - @tab - @tab - @tab 656 @tab 14
--@item atanf @tab - @tab - @tab - @tab - @tab -
--@item atan @tab - @tab - @tab - @tab - @tab -
--@item atanl @tab - @tab - @tab - @tab 549 @tab -
--@item atanhf @tab - @tab - @tab - @tab - @tab -
--@item atanh @tab 1 @tab 1 @tab - @tab 1 @tab -
--@item atanhl @tab - @tab - @tab - @tab 1605 @tab -
--@item atan2f @tab 4 @tab - @tab - @tab - @tab -
--@item atan2 @tab - @tab - @tab - @tab - @tab -
--@item atan2l @tab - @tab - @tab - @tab 549 @tab -
--@item cabsf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item cabs @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item cabsl @tab - @tab - @tab - @tab 560 @tab 1
--@item cacosf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 2 @tab 1 + i 2
--@item cacos @tab 1 + i 0 @tab 1 + i 0 @tab - @tab 1 + i 0 @tab 1 + i 0
--@item cacosl @tab - @tab - @tab - @tab 151 + i 329 @tab 1 + i 1
--@item cacoshf @tab 7 + i 3 @tab 7 + i 3 @tab - @tab 4 + i 4 @tab 7 + i 0
--@item cacosh @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item cacoshl @tab - @tab - @tab - @tab 328 + i 151 @tab 7 + i 1
--@item cargf @tab - @tab - @tab - @tab - @tab -
--@item carg @tab - @tab - @tab - @tab - @tab -
--@item cargl @tab - @tab - @tab - @tab - @tab -
--@item casinf @tab 2 + i 1 @tab 2 + i 1 @tab - @tab 2 + i 2 @tab 2 + i 2
--@item casin @tab 3 + i 0 @tab 3 + i 0 @tab - @tab 3 + i 0 @tab 3 + i 0
--@item casinl @tab - @tab - @tab - @tab 603 + i 329 @tab 0 + i 1
--@item casinhf @tab 1 + i 6 @tab 1 + i 6 @tab - @tab 1 + i 6 @tab 1 + i 6
--@item casinh @tab 5 + i 3 @tab 5 + i 3 @tab - @tab 5 + i 3 @tab 5 + i 3
--@item casinhl @tab - @tab - @tab - @tab 892 + i 12 @tab 5 + i 5
--@item catanf @tab 4 + i 1 @tab 4 + i 1 @tab - @tab 0 + i 1 @tab 0 + i 1
--@item catan @tab 0 + i 1 @tab 0 + i 1 @tab - @tab 0 + i 1 @tab 0 + i 1
--@item catanl @tab - @tab - @tab - @tab 251 + i 474 @tab 1 + i 0
--@item catanhf @tab 1 + i 6 @tab 1 + i 6 @tab - @tab 1 + i 0 @tab -
--@item catanh @tab 4 + i 1 @tab 4 + i 1 @tab - @tab 2 + i 0 @tab 4 + i 0
--@item catanhl @tab - @tab - @tab - @tab 66 + i 447 @tab 1 + i 0
--@item cbrtf @tab - @tab - @tab - @tab - @tab -
--@item cbrt @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item cbrtl @tab - @tab - @tab - @tab 716 @tab -
--@item ccosf @tab 0 + i 1 @tab 0 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ccos @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ccosl @tab - @tab - @tab - @tab 5 + i 1901 @tab 0 + i 1
--@item ccoshf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ccosh @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ccoshl @tab - @tab - @tab - @tab 1467 + i 1183 @tab 1 + i 1
--@item ceilf @tab - @tab - @tab - @tab - @tab -
--@item ceil @tab - @tab - @tab - @tab - @tab -
--@item ceill @tab - @tab - @tab - @tab - @tab -
--@item cexpf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 0 @tab 1 + i 1
--@item cexp @tab 1 + i 0 @tab 1 + i 0 @tab - @tab - @tab 1 + i 0
--@item cexpl @tab - @tab - @tab - @tab 940 + i 1067 @tab 2 + i 0
--@item cimagf @tab - @tab - @tab - @tab - @tab -
--@item cimag @tab - @tab - @tab - @tab - @tab -
--@item cimagl @tab - @tab - @tab - @tab - @tab -
--@item clogf @tab 0 + i 3 @tab 0 + i 3 @tab - @tab - @tab -
--@item clog @tab 0 + i 1 @tab 0 + i 1 @tab - @tab - @tab -
--@item clogl @tab - @tab - @tab - @tab 0 + i 1 @tab -
--@item clog10f @tab 1 + i 5 @tab 1 + i 5 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item clog10 @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 2 + i 1 @tab 2 + i 1
--@item clog10l @tab - @tab - @tab - @tab 1403 + i 186 @tab 1 + i 2
--@item conjf @tab - @tab - @tab - @tab - @tab -
--@item conj @tab - @tab - @tab - @tab - @tab -
--@item conjl @tab - @tab - @tab - @tab - @tab -
--@item copysignf @tab - @tab - @tab - @tab - @tab -
--@item copysign @tab - @tab - @tab - @tab - @tab -
--@item copysignl @tab - @tab - @tab - @tab - @tab -
--@item cosf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item cos @tab 2 @tab 2 @tab - @tab 2 @tab 2
--@item cosl @tab - @tab - @tab - @tab 529 @tab 0.5
--@item coshf @tab - @tab - @tab - @tab - @tab -
--@item cosh @tab - @tab - @tab - @tab - @tab -
--@item coshl @tab - @tab - @tab - @tab 309 @tab 2
--@item cpowf @tab 4 + i 2 @tab 4 + i 2 @tab - @tab 4 + i 2.5333 @tab 5 + i 2.5333
--@item cpow @tab 1 + i 1.1031 @tab 1 + i 1.1031 @tab - @tab 1 + i 1.104 @tab 1 + i 1.1031
--@item cpowl @tab - @tab - @tab - @tab 2 + i 9 @tab 1 + i 4
--@item cprojf @tab - @tab - @tab - @tab - @tab -
--@item cproj @tab - @tab - @tab - @tab - @tab -
--@item cprojl @tab - @tab - @tab - @tab - @tab -
--@item crealf @tab - @tab - @tab - @tab - @tab -
--@item creal @tab - @tab - @tab - @tab - @tab -
--@item creall @tab - @tab - @tab - @tab - @tab -
--@item csinf @tab 0 + i 1 @tab 0 + i 1 @tab - @tab - @tab -
--@item csin @tab - @tab - @tab - @tab - @tab -
--@item csinl @tab - @tab - @tab - @tab 966 + i 168 @tab 0 + i 1
--@item csinhf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item csinh @tab 0 + i 1 @tab 0 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item csinhl @tab - @tab - @tab - @tab 413 + i 477 @tab 2 + i 2
--@item csqrtf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab - @tab 1 + i 1
--@item csqrt @tab 1 + i 0 @tab 1 + i 0 @tab - @tab 1 + i 0 @tab 1 + i 0
--@item csqrtl @tab - @tab - @tab - @tab 237 + i 128 @tab -
--@item ctanf @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ctan @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ctanl @tab - @tab - @tab - @tab 690 + i 367 @tab 436 + i 1
--@item ctanhf @tab 2 + i 1 @tab 2 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
--@item ctanh @tab 2 + i 2 @tab 2 + i 2 @tab - @tab 0 + i 1 @tab 0 + i 1
--@item ctanhl @tab - @tab - @tab - @tab 286 + i 3074 @tab 1 + i 24
--@item erff @tab - @tab - @tab - @tab - @tab -
--@item erf @tab - @tab - @tab - @tab - @tab -
--@item erfl @tab - @tab - @tab - @tab - @tab -
--@item erfcf @tab 12 @tab 12 @tab - @tab 12 @tab 12
--@item erfc @tab 24 @tab 24 @tab - @tab 24 @tab 24
--@item erfcl @tab - @tab - @tab - @tab 36 @tab 12
--@item expf @tab - @tab - @tab - @tab - @tab -
--@item exp @tab - @tab - @tab - @tab - @tab -
--@item expl @tab - @tab - @tab - @tab 754 @tab -
--@item exp10f @tab 2 @tab 2 @tab - @tab - @tab 2
--@item exp10 @tab 6 @tab 6 @tab - @tab 1 @tab 6
--@item exp10l @tab - @tab - @tab - @tab 1182 @tab 3
--@item exp2f @tab - @tab - @tab - @tab - @tab -
--@item exp2 @tab - @tab - @tab - @tab - @tab -
--@item exp2l @tab - @tab - @tab - @tab 462 @tab -
--@item expm1f @tab 1 @tab 1 @tab - @tab - @tab -
--@item expm1 @tab - @tab - @tab - @tab - @tab -
--@item expm1l @tab - @tab - @tab - @tab 825 @tab 1
--@item fabsf @tab - @tab - @tab - @tab - @tab -
--@item fabs @tab - @tab - @tab - @tab - @tab -
--@item fabsl @tab - @tab - @tab - @tab - @tab -
--@item fdimf @tab - @tab - @tab - @tab - @tab -
--@item fdim @tab - @tab - @tab - @tab - @tab -
--@item fdiml @tab - @tab - @tab - @tab - @tab -
--@item floorf @tab - @tab - @tab - @tab - @tab -
--@item floor @tab - @tab - @tab - @tab - @tab -
--@item floorl @tab - @tab - @tab - @tab - @tab -
--@item fmaf @tab - @tab - @tab - @tab - @tab -
--@item fma @tab - @tab - @tab - @tab - @tab -
--@item fmal @tab - @tab - @tab - @tab - @tab -
--@item fmaxf @tab - @tab - @tab - @tab - @tab -
--@item fmax @tab - @tab - @tab - @tab - @tab -
--@item fmaxl @tab - @tab - @tab - @tab - @tab -
--@item fminf @tab - @tab - @tab - @tab - @tab -
--@item fmin @tab - @tab - @tab - @tab - @tab -
--@item fminl @tab - @tab - @tab - @tab - @tab -
--@item fmodf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item fmod @tab 2 @tab 2 @tab - @tab 2 @tab 2
--@item fmodl @tab - @tab - @tab - @tab 4096 @tab 1
--@item frexpf @tab - @tab - @tab - @tab - @tab -
--@item frexp @tab - @tab - @tab - @tab - @tab -
--@item frexpl @tab - @tab - @tab - @tab - @tab -
--@item gammaf @tab - @tab - @tab - @tab - @tab -
--@item gamma @tab - @tab - @tab - @tab 1 @tab -
--@item gammal @tab - @tab - @tab - @tab 1 @tab 1
--@item hypotf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item hypot @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item hypotl @tab - @tab - @tab - @tab 560 @tab 1
--@item ilogbf @tab - @tab - @tab - @tab - @tab -
--@item ilogb @tab - @tab - @tab - @tab - @tab -
--@item ilogbl @tab - @tab - @tab - @tab - @tab -
--@item j0f @tab 2 @tab 2 @tab - @tab 1 @tab 1
--@item j0 @tab 2 @tab 2 @tab - @tab 2 @tab 2
--@item j0l @tab - @tab - @tab - @tab 1 @tab 2
--@item j1f @tab 2 @tab 2 @tab - @tab 1 @tab 2
--@item j1 @tab 1 @tab 1 @tab - @tab 2 @tab 1
--@item j1l @tab - @tab - @tab - @tab 2 @tab -
--@item jnf @tab 4 @tab 4 @tab - @tab 2 @tab 4
--@item jn @tab 6 @tab 6 @tab - @tab 5 @tab 6
--@item jnl @tab - @tab - @tab - @tab 2 @tab 2
--@item lgammaf @tab 2 @tab 2 @tab - @tab 2 @tab 2
--@item lgamma @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item lgammal @tab - @tab - @tab - @tab 1 @tab 1
--@item lrintf @tab - @tab - @tab - @tab - @tab -
--@item lrint @tab - @tab - @tab - @tab - @tab -
--@item lrintl @tab - @tab - @tab - @tab - @tab -
--@item llrintf @tab - @tab - @tab - @tab - @tab -
--@item llrint @tab - @tab - @tab - @tab - @tab -
--@item llrintl @tab - @tab - @tab - @tab - @tab -
--@item logf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item logl @tab - @tab - @tab - @tab 2341 @tab 1
--@item log10f @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log10 @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log10l @tab - @tab - @tab - @tab 2033 @tab 1
--@item log1pf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log1p @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log1pl @tab - @tab - @tab - @tab 585 @tab 1
--@item log2f @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log2 @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item log2l @tab - @tab - @tab - @tab 1688 @tab -
--@item logbf @tab - @tab - @tab - @tab - @tab -
--@item logb @tab - @tab - @tab - @tab - @tab -
--@item logbl @tab - @tab - @tab - @tab - @tab -
--@item lroundf @tab - @tab - @tab - @tab - @tab -
--@item lround @tab - @tab - @tab - @tab - @tab -
--@item lroundl @tab - @tab - @tab - @tab - @tab -
--@item llroundf @tab - @tab - @tab - @tab - @tab -
--@item llround @tab - @tab - @tab - @tab - @tab -
--@item llroundl @tab - @tab - @tab - @tab - @tab -
--@item modff @tab - @tab - @tab - @tab - @tab -
--@item modf @tab - @tab - @tab - @tab - @tab -
--@item modfl @tab - @tab - @tab - @tab - @tab -
--@item nearbyintf @tab - @tab - @tab - @tab - @tab -
--@item nearbyint @tab - @tab - @tab - @tab - @tab -
--@item nearbyintl @tab - @tab - @tab - @tab - @tab -
--@item nextafterf @tab - @tab - @tab - @tab - @tab -
--@item nextafter @tab - @tab - @tab - @tab - @tab -
--@item nextafterl @tab - @tab - @tab - @tab - @tab -
--@item nexttowardf @tab - @tab - @tab - @tab - @tab -
--@item nexttoward @tab - @tab - @tab - @tab - @tab -
--@item nexttowardl @tab - @tab - @tab - @tab - @tab -
--@item powf @tab - @tab - @tab - @tab - @tab -
--@item pow @tab - @tab - @tab - @tab - @tab -
--@item powl @tab - @tab - @tab - @tab 725 @tab 1
--@item remainderf @tab - @tab - @tab - @tab - @tab -
--@item remainder @tab - @tab - @tab - @tab - @tab -
--@item remainderl @tab - @tab - @tab - @tab - @tab -
--@item remquof @tab - @tab - @tab - @tab - @tab -
--@item remquo @tab - @tab - @tab - @tab - @tab -
--@item remquol @tab - @tab - @tab - @tab - @tab -
--@item rintf @tab - @tab - @tab - @tab - @tab -
--@item rint @tab - @tab - @tab - @tab - @tab -
--@item rintl @tab - @tab - @tab - @tab - @tab -
--@item roundf @tab - @tab - @tab - @tab - @tab -
--@item round @tab - @tab - @tab - @tab - @tab -
--@item roundl @tab - @tab - @tab - @tab - @tab -
--@item scalbf @tab - @tab - @tab - @tab - @tab -
--@item scalb @tab - @tab - @tab - @tab - @tab -
--@item scalbl @tab - @tab - @tab - @tab - @tab -
--@item scalbnf @tab - @tab - @tab - @tab - @tab -
--@item scalbn @tab - @tab - @tab - @tab - @tab -
--@item scalbnl @tab - @tab - @tab - @tab - @tab -
--@item scalblnf @tab - @tab - @tab - @tab - @tab -
--@item scalbln @tab - @tab - @tab - @tab - @tab -
--@item scalblnl @tab - @tab - @tab - @tab - @tab -
--@item sinf @tab - @tab - @tab - @tab - @tab -
--@item sin @tab - @tab - @tab - @tab - @tab -
--@item sinl @tab - @tab - @tab - @tab 627 @tab 1
--@item sincosf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item sincos @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item sincosl @tab - @tab - @tab - @tab 627 @tab 1
--@item sinhf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item sinh @tab 1 @tab 1 @tab - @tab - @tab -
--@item sinhl @tab - @tab - @tab - @tab 1029 @tab 1
--@item sqrtf @tab - @tab - @tab - @tab - @tab -
--@item sqrt @tab - @tab - @tab - @tab - @tab -
--@item sqrtl @tab - @tab - @tab - @tab 489 @tab -
--@item tanf @tab - @tab - @tab - @tab - @tab -
--@item tan @tab 0.5 @tab 0.5 @tab - @tab 0.5 @tab 0.5
--@item tanl @tab - @tab - @tab - @tab 1401 @tab 1
--@item tanhf @tab 1 @tab 1 @tab - @tab - @tab 1
--@item tanh @tab 1 @tab 1 @tab - @tab - @tab 1
--@item tanhl @tab - @tab - @tab - @tab 521 @tab 1
--@item tgammaf @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item tgamma @tab 1 @tab 1 @tab - @tab 2 @tab 1
--@item tgammal @tab - @tab - @tab - @tab 2 @tab 1
--@item truncf @tab - @tab - @tab - @tab - @tab -
--@item trunc @tab - @tab - @tab - @tab - @tab -
--@item truncl @tab - @tab - @tab - @tab - @tab -
--@item y0f @tab 1 @tab 1 @tab - @tab 1 @tab 1
--@item y0 @tab 2 @tab 2 @tab - @tab 3 @tab 2
--@item y0l @tab - @tab - @tab - @tab 2 @tab 2
--@item y1f @tab 2 @tab 2 @tab - @tab 2 @tab 2
--@item y1 @tab 3 @tab 3 @tab - @tab 3 @tab 3
--@item y1l @tab - @tab - @tab - @tab 2 @tab 1
--@item ynf @tab 2 @tab 2 @tab - @tab 3 @tab 2
--@item yn @tab 3 @tab 3 @tab - @tab 6 @tab 3
--@item ynl @tab - @tab - @tab - @tab 7 @tab 7
--@end multitable
--@multitable {nexttowardf} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000}
--@item Function @tab M68k @tab MIPS @tab PowerPC @tab S/390 @tab SH4
--@item acosf @tab - @tab - @tab - @tab - @tab -
--@item acos @tab - @tab - @tab - @tab - @tab -
--@item acosl @tab 1 @tab - @tab - @tab - @tab -
--@item acoshf @tab - @tab - @tab - @tab - @tab -
--@item acosh @tab - @tab - @tab - @tab - @tab -
--@item acoshl @tab 1 @tab - @tab - @tab - @tab -
--@item asinf @tab - @tab 2 @tab 2 @tab 2 @tab 2
--@item asin @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item asinl @tab 1 @tab - @tab - @tab - @tab -
--@item asinhf @tab - @tab - @tab - @tab - @tab -
--@item asinh @tab - @tab - @tab - @tab - @tab -
--@item asinhl @tab 14 @tab - @tab - @tab - @tab -
--@item atanf @tab - @tab - @tab - @tab - @tab -
--@item atan @tab - @tab - @tab - @tab - @tab -
--@item atanl @tab - @tab - @tab - @tab - @tab -
--@item atanhf @tab - @tab - @tab - @tab - @tab -
--@item atanh @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item atanhl @tab - @tab - @tab - @tab - @tab -
--@item atan2f @tab - @tab 4 @tab 4 @tab 4 @tab 4
--@item atan2 @tab - @tab - @tab - @tab - @tab -
--@item atan2l @tab - @tab - @tab - @tab - @tab -
--@item cabsf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item cabs @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item cabsl @tab 1 @tab - @tab - @tab - @tab -
--@item cacosf @tab 1 + i 2 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cacos @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item cacosl @tab 1 + i 1 @tab - @tab - @tab - @tab -
--@item cacoshf @tab 7 + i 0 @tab 7 + i 3 @tab 7 + i 3 @tab 7 + i 3 @tab 7 + i 3
--@item cacosh @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cacoshl @tab 6 + i 2 @tab - @tab - @tab - @tab -
--@item cargf @tab - @tab - @tab - @tab - @tab -
--@item carg @tab - @tab - @tab - @tab - @tab -
--@item cargl @tab - @tab - @tab - @tab - @tab -
--@item casinf @tab 2 + i 2 @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1
--@item casin @tab 3 + i 0 @tab 3 + i 0 @tab 3 + i 0 @tab 3 + i 0 @tab 3 + i 0
--@item casinl @tab 0 + i 1 @tab - @tab - @tab - @tab -
--@item casinhf @tab 19 + i 2 @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6
--@item casinh @tab 6 + i 13 @tab 5 + i 3 @tab 5 + i 3 @tab 5 + i 3 @tab 5 + i 3
--@item casinhl @tab 5 + i 6 @tab - @tab - @tab - @tab -
--@item catanf @tab 0 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1
--@item catan @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item catanl @tab 1 + i 0 @tab - @tab - @tab - @tab -
--@item catanhf @tab - @tab 1 + i 6 @tab 0 + i 6 @tab 1 + i 6 @tab 1 + i 6
--@item catanh @tab - @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1
--@item catanhl @tab 1 + i 0 @tab - @tab - @tab - @tab -
--@item cbrtf @tab - @tab - @tab - @tab - @tab -
--@item cbrt @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item cbrtl @tab 1 @tab - @tab - @tab - @tab -
--@item ccosf @tab 1 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item ccos @tab 0 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccosl @tab 0 + i 1 @tab - @tab - @tab - @tab -
--@item ccoshf @tab 3 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccosh @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccoshl @tab 1 + i 2 @tab - @tab - @tab - @tab -
--@item ceilf @tab - @tab - @tab - @tab - @tab -
--@item ceil @tab - @tab - @tab - @tab - @tab -
--@item ceill @tab - @tab - @tab - @tab - @tab -
--@item cexpf @tab 3 + i 2 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cexp @tab - @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item cexpl @tab 2 + i 0 @tab - @tab - @tab - @tab -
--@item cimagf @tab - @tab - @tab - @tab - @tab -
--@item cimag @tab - @tab - @tab - @tab - @tab -
--@item cimagl @tab - @tab - @tab - @tab - @tab -
--@item clogf @tab - @tab 0 + i 3 @tab 0 + i 3 @tab 0 + i 3 @tab 0 + i 3
--@item clog @tab - @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item clogl @tab - @tab - @tab - @tab - @tab -
--@item clog10f @tab 1 + i 1 @tab 1 + i 5 @tab 1 + i 5 @tab 1 + i 5 @tab 1 + i 5
--@item clog10 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item clog10l @tab 1 + i 3 @tab - @tab - @tab - @tab -
--@item conjf @tab - @tab - @tab - @tab - @tab -
--@item conj @tab - @tab - @tab - @tab - @tab -
--@item conjl @tab - @tab - @tab - @tab - @tab -
--@item copysignf @tab - @tab - @tab - @tab - @tab -
--@item copysign @tab - @tab - @tab - @tab - @tab -
--@item copysignl @tab - @tab - @tab - @tab - @tab -
--@item cosf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item cos @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item cosl @tab 1 @tab - @tab - @tab - @tab -
--@item coshf @tab - @tab - @tab - @tab - @tab -
--@item cosh @tab - @tab - @tab - @tab - @tab -
--@item coshl @tab 2 @tab - @tab - @tab - @tab -
--@item cpowf @tab 1 + i 6 @tab 4 + i 2 @tab 4 + i 2 @tab 4 + i 2 @tab 4 + i 2
--@item cpow @tab 1 + i 2 @tab 1 + i 1.1031 @tab 1 + i 2 @tab 1 + i 1.1031 @tab 1 + i 1.1031
--@item cpowl @tab 5 + i 2 @tab - @tab - @tab - @tab -
--@item cprojf @tab - @tab - @tab - @tab - @tab -
--@item cproj @tab - @tab - @tab - @tab - @tab -
--@item cprojl @tab - @tab - @tab - @tab - @tab -
--@item crealf @tab - @tab - @tab - @tab - @tab -
--@item creal @tab - @tab - @tab - @tab - @tab -
--@item creall @tab - @tab - @tab - @tab - @tab -
--@item csinf @tab 1 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item csin @tab - @tab - @tab - @tab - @tab -
--@item csinl @tab - @tab - @tab - @tab - @tab -
--@item csinhf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item csinh @tab - @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item csinhl @tab 1 + i 2 @tab - @tab - @tab - @tab -
--@item csqrtf @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item csqrt @tab - @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item csqrtl @tab - @tab - @tab - @tab - @tab -
--@item ctanf @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ctan @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ctanl @tab 439 + i 2 @tab - @tab - @tab - @tab -
--@item ctanhf @tab 1 + i 0 @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1
--@item ctanh @tab 0 + i 1 @tab 2 + i 2 @tab 2 + i 2 @tab 2 + i 2 @tab 2 + i 2
--@item ctanhl @tab 2 + i 25 @tab - @tab - @tab - @tab -
--@item erff @tab - @tab - @tab - @tab - @tab -
--@item erf @tab - @tab - @tab - @tab - @tab -
--@item erfl @tab - @tab - @tab - @tab - @tab -
--@item erfcf @tab 11 @tab 12 @tab 12 @tab 12 @tab 12
--@item erfc @tab 24 @tab 24 @tab 24 @tab 24 @tab 24
--@item erfcl @tab 12 @tab - @tab - @tab - @tab -
--@item expf @tab - @tab - @tab - @tab - @tab -
--@item exp @tab - @tab - @tab - @tab - @tab -
--@item expl @tab - @tab - @tab - @tab - @tab -
--@item exp10f @tab - @tab 2 @tab 2 @tab 2 @tab 2
--@item exp10 @tab 1 @tab 6 @tab 6 @tab 6 @tab 6
--@item exp10l @tab 1 @tab - @tab - @tab - @tab -
--@item exp2f @tab - @tab - @tab - @tab - @tab -
--@item exp2 @tab - @tab - @tab - @tab - @tab -
--@item exp2l @tab - @tab - @tab - @tab - @tab -
--@item expm1f @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item expm1 @tab - @tab - @tab - @tab - @tab -
--@item expm1l @tab 1 @tab - @tab - @tab - @tab -
--@item fabsf @tab - @tab - @tab - @tab - @tab -
--@item fabs @tab - @tab - @tab - @tab - @tab -
--@item fabsl @tab - @tab - @tab - @tab - @tab -
--@item fdimf @tab - @tab - @tab - @tab - @tab -
--@item fdim @tab - @tab - @tab - @tab - @tab -
--@item fdiml @tab - @tab - @tab - @tab - @tab -
--@item floorf @tab - @tab - @tab - @tab - @tab -
--@item floor @tab - @tab - @tab - @tab - @tab -
--@item floorl @tab - @tab - @tab - @tab - @tab -
--@item fmaf @tab - @tab - @tab - @tab - @tab -
--@item fma @tab - @tab - @tab - @tab - @tab -
--@item fmal @tab - @tab - @tab - @tab - @tab -
--@item fmaxf @tab - @tab - @tab - @tab - @tab -
--@item fmax @tab - @tab - @tab - @tab - @tab -
--@item fmaxl @tab - @tab - @tab - @tab - @tab -
--@item fminf @tab - @tab - @tab - @tab - @tab -
--@item fmin @tab - @tab - @tab - @tab - @tab -
--@item fminl @tab - @tab - @tab - @tab - @tab -
--@item fmodf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item fmod @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item fmodl @tab 1 @tab - @tab - @tab - @tab -
--@item frexpf @tab - @tab - @tab - @tab - @tab -
--@item frexp @tab - @tab - @tab - @tab - @tab -
--@item frexpl @tab - @tab - @tab - @tab - @tab -
--@item gammaf @tab - @tab - @tab - @tab - @tab -
--@item gamma @tab - @tab - @tab - @tab - @tab -
--@item gammal @tab 1 @tab - @tab - @tab - @tab -
--@item hypotf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item hypot @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item hypotl @tab 1 @tab - @tab - @tab - @tab -
--@item ilogbf @tab - @tab - @tab - @tab - @tab -
--@item ilogb @tab - @tab - @tab - @tab - @tab -
--@item ilogbl @tab - @tab - @tab - @tab - @tab -
--@item j0f @tab 1 @tab 2 @tab 1 @tab 2 @tab 2
--@item j0 @tab 1 @tab 2 @tab 2 @tab 2 @tab 2
--@item j0l @tab 1 @tab - @tab - @tab - @tab -
--@item j1f @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item j1 @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item j1l @tab 2 @tab - @tab - @tab - @tab -
--@item jnf @tab 11 @tab 4 @tab 4 @tab 4 @tab 4
--@item jn @tab 4 @tab 6 @tab 6 @tab 6 @tab 6
--@item jnl @tab 2 @tab - @tab - @tab - @tab -
--@item lgammaf @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item lgamma @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item lgammal @tab 1 @tab - @tab - @tab - @tab -
--@item lrintf @tab - @tab - @tab - @tab - @tab -
--@item lrint @tab - @tab - @tab - @tab - @tab -
--@item lrintl @tab - @tab - @tab - @tab - @tab -
--@item llrintf @tab - @tab - @tab - @tab - @tab -
--@item llrint @tab - @tab - @tab - @tab - @tab -
--@item llrintl @tab - @tab - @tab - @tab - @tab -
--@item logf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item logl @tab 2 @tab - @tab - @tab - @tab -
--@item log10f @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log10 @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log10l @tab 1 @tab - @tab - @tab - @tab -
--@item log1pf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log1p @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log1pl @tab 2 @tab - @tab - @tab - @tab -
--@item log2f @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log2 @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item log2l @tab 1 @tab - @tab - @tab - @tab -
--@item logbf @tab - @tab - @tab - @tab - @tab -
--@item logb @tab - @tab - @tab - @tab - @tab -
--@item logbl @tab - @tab - @tab - @tab - @tab -
--@item lroundf @tab - @tab - @tab - @tab - @tab -
--@item lround @tab - @tab - @tab - @tab - @tab -
--@item lroundl @tab - @tab - @tab - @tab - @tab -
--@item llroundf @tab - @tab - @tab - @tab - @tab -
--@item llround @tab - @tab - @tab - @tab - @tab -
--@item llroundl @tab - @tab - @tab - @tab - @tab -
--@item modff @tab - @tab - @tab - @tab - @tab -
--@item modf @tab - @tab - @tab - @tab - @tab -
--@item modfl @tab - @tab - @tab - @tab - @tab -
--@item nearbyintf @tab - @tab - @tab - @tab - @tab -
--@item nearbyint @tab - @tab - @tab - @tab - @tab -
--@item nearbyintl @tab - @tab - @tab - @tab - @tab -
--@item nextafterf @tab - @tab - @tab - @tab - @tab -
--@item nextafter @tab - @tab - @tab - @tab - @tab -
--@item nextafterl @tab - @tab - @tab - @tab - @tab -
--@item nexttowardf @tab - @tab - @tab - @tab - @tab -
--@item nexttoward @tab - @tab - @tab - @tab - @tab -
--@item nexttowardl @tab - @tab - @tab - @tab - @tab -
--@item powf @tab - @tab - @tab - @tab - @tab -
--@item pow @tab - @tab - @tab - @tab - @tab -
--@item powl @tab 1 @tab - @tab - @tab - @tab -
--@item remainderf @tab - @tab - @tab - @tab - @tab -
--@item remainder @tab - @tab - @tab - @tab - @tab -
--@item remainderl @tab - @tab - @tab - @tab - @tab -
--@item remquof @tab - @tab - @tab - @tab - @tab -
--@item remquo @tab - @tab - @tab - @tab - @tab -
--@item remquol @tab - @tab - @tab - @tab - @tab -
--@item rintf @tab - @tab - @tab - @tab - @tab -
--@item rint @tab - @tab - @tab - @tab - @tab -
--@item rintl @tab - @tab - @tab - @tab - @tab -
--@item roundf @tab - @tab - @tab - @tab - @tab -
--@item round @tab - @tab - @tab - @tab - @tab -
--@item roundl @tab - @tab - @tab - @tab - @tab -
--@item scalbf @tab - @tab - @tab - @tab - @tab -
--@item scalb @tab - @tab - @tab - @tab - @tab -
--@item scalbl @tab - @tab - @tab - @tab - @tab -
--@item scalbnf @tab - @tab - @tab - @tab - @tab -
--@item scalbn @tab - @tab - @tab - @tab - @tab -
--@item scalbnl @tab - @tab - @tab - @tab - @tab -
--@item scalblnf @tab - @tab - @tab - @tab - @tab -
--@item scalbln @tab - @tab - @tab - @tab - @tab -
--@item scalblnl @tab - @tab - @tab - @tab - @tab -
--@item sinf @tab - @tab - @tab - @tab - @tab -
--@item sin @tab - @tab - @tab - @tab - @tab -
--@item sinl @tab 1 @tab - @tab - @tab - @tab -
--@item sincosf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item sincos @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item sincosl @tab 1 @tab - @tab - @tab - @tab -
--@item sinhf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item sinh @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item sinhl @tab - @tab - @tab - @tab - @tab -
--@item sqrtf @tab - @tab - @tab - @tab - @tab -
--@item sqrt @tab - @tab - @tab - @tab - @tab -
--@item sqrtl @tab - @tab - @tab - @tab - @tab -
--@item tanf @tab - @tab - @tab - @tab - @tab -
--@item tan @tab 1 @tab 0.5 @tab 1 @tab 0.5 @tab 0.5
--@item tanl @tab 1 @tab - @tab - @tab - @tab -
--@item tanhf @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item tanh @tab - @tab 1 @tab 1 @tab 1 @tab 1
--@item tanhl @tab - @tab - @tab - @tab - @tab -
--@item tgammaf @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item tgamma @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
--@item tgammal @tab 1 @tab - @tab - @tab - @tab -
--@item truncf @tab - @tab - @tab - @tab - @tab -
--@item trunc @tab - @tab - @tab - @tab - @tab -
--@item truncl @tab - @tab - @tab - @tab - @tab -
--@item y0f @tab 2 @tab 1 @tab 1 @tab 1 @tab 1
--@item y0 @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item y0l @tab 2 @tab - @tab - @tab - @tab -
--@item y1f @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item y1 @tab 1 @tab 3 @tab 3 @tab 3 @tab 3
--@item y1l @tab 2 @tab - @tab - @tab - @tab -
--@item ynf @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
--@item yn @tab 6 @tab 3 @tab 3 @tab 3 @tab 3
--@item ynl @tab 7 @tab - @tab - @tab - @tab -
--@end multitable
--@multitable {nexttowardf} {1000 + i 1000} {1000 + i 1000} {1000 + i 1000}
--@item Function @tab Sparc 32-bit @tab Sparc 64-bit @tab x86_64/fpu
--@item acosf @tab - @tab - @tab -
--@item acos @tab - @tab - @tab -
--@item acosl @tab - @tab 1 @tab -
--@item acoshf @tab - @tab - @tab -
--@item acosh @tab - @tab - @tab -
--@item acoshl @tab - @tab - @tab -
--@item asinf @tab 2 @tab 2 @tab -
--@item asin @tab 1 @tab 1 @tab 1
--@item asinl @tab - @tab - @tab 1
--@item asinhf @tab - @tab - @tab -
--@item asinh @tab - @tab - @tab -
--@item asinhl @tab - @tab - @tab 15
--@item atanf @tab - @tab - @tab -
--@item atan @tab - @tab - @tab -
--@item atanl @tab - @tab 1 @tab -
--@item atanhf @tab - @tab - @tab -
--@item atanh @tab 1 @tab 1 @tab 1
--@item atanhl @tab - @tab - @tab 1
--@item atan2f @tab 4.0000 @tab 4 @tab 4
--@item atan2 @tab - @tab - @tab -
--@item atan2l @tab - @tab 1 @tab -
--@item cabsf @tab 1 @tab 1 @tab 1
--@item cabs @tab 1 @tab 1 @tab 1
--@item cabsl @tab - @tab - @tab 1
--@item cacosf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cacos @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item cacosl @tab - @tab 0 + i 3 @tab 1 + i 1
--@item cacoshf @tab 7 + i 3 @tab 7 + i 3 @tab 7 + i 3
--@item cacosh @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cacoshl @tab - @tab 5 + i 1 @tab 6 + i 1
--@item cargf @tab - @tab - @tab -
--@item carg @tab - @tab - @tab -
--@item cargl @tab - @tab - @tab -
--@item casinf @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1
--@item casin @tab 3 + i 0 @tab 3 + i 0 @tab 3 + i 0
--@item casinl @tab - @tab 1 + i 3 @tab 0 + i 1
--@item casinhf @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6
--@item casinh @tab 5 + i 3 @tab 5 + i 3 @tab 5 + i 3
--@item casinhl @tab - @tab 4 + i 2 @tab 5 + i 5
--@item catanf @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1
--@item catan @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item catanl @tab - @tab 0 + i 1 @tab 1 + i 0
--@item catanhf @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6
--@item catanh @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 0
--@item catanhl @tab - @tab - @tab 1 + i 0
--@item cbrtf @tab - @tab - @tab -
--@item cbrt @tab 1 @tab 1 @tab 1
--@item cbrtl @tab - @tab - @tab 948
--@item ccosf @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item ccos @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccosl @tab - @tab - @tab 0 + i 1
--@item ccoshf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccosh @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ccoshl @tab - @tab - @tab 1 + i 1
--@item ceilf @tab - @tab - @tab -
--@item ceil @tab - @tab - @tab -
--@item ceill @tab - @tab - @tab -
--@item cexpf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item cexp @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item cexpl @tab - @tab 1 + i 1 @tab 2 + i 1
--@item cimagf @tab - @tab - @tab -
--@item cimag @tab - @tab - @tab -
--@item cimagl @tab - @tab - @tab -
--@item clogf @tab 0 + i 3 @tab 0 + i 3 @tab 0 + i 3
--@item clog @tab 0 + i 1 @tab 0 + i 1 @tab -
--@item clogl @tab - @tab - @tab -
--@item clog10f @tab 1 + i 5 @tab 1 + i 5 @tab 1 + i 5
--@item clog10 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item clog10l @tab - @tab - @tab 1 + i 3
--@item conjf @tab - @tab - @tab -
--@item conj @tab - @tab - @tab -
--@item conjl @tab - @tab - @tab -
--@item copysignf @tab - @tab - @tab -
--@item copysign @tab - @tab - @tab -
--@item copysignl @tab - @tab - @tab -
--@item cosf @tab 1 @tab 1 @tab 1
--@item cos @tab 2 @tab 2 @tab 2
--@item cosl @tab - @tab 1 @tab 0.5
--@item coshf @tab - @tab - @tab -
--@item cosh @tab - @tab - @tab -
--@item coshl @tab - @tab - @tab 2
--@item cpowf @tab 4 + i 2 @tab 4 + i 2 @tab 4 + i 2
--@item cpow @tab 1 + i 1.1031 @tab 1 + i 1.1031 @tab 1 + i 1.1031
--@item cpowl @tab - @tab 3 + i 0.9006 @tab 1 + i 2
--@item cprojf @tab - @tab - @tab -
--@item cproj @tab - @tab - @tab -
--@item cprojl @tab - @tab - @tab -
--@item crealf @tab - @tab - @tab -
--@item creal @tab - @tab - @tab -
--@item creall @tab - @tab - @tab -
--@item csinf @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item csin @tab - @tab - @tab -
--@item csinl @tab - @tab - @tab 0 + i 2
--@item csinhf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item csinh @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
--@item csinhl @tab - @tab - @tab 2 + i 2
--@item csqrtf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item csqrt @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
--@item csqrtl @tab - @tab 1 + i 1 @tab -
--@item ctanf @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ctan @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1
--@item ctanl @tab - @tab - @tab 439 + i 2
--@item ctanhf @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1
--@item ctanh @tab 2 + i 2 @tab 2 + i 2 @tab 2 + i 2
--@item ctanhl @tab - @tab - @tab 5 + i 25
--@item erff @tab - @tab - @tab -
--@item erf @tab - @tab - @tab -
--@item erfl @tab - @tab - @tab -
--@item erfcf @tab 12 @tab 12 @tab 12
--@item erfc @tab 24 @tab 24 @tab 24
--@item erfcl @tab - @tab - @tab 36
--@item expf @tab - @tab - @tab -
--@item exp @tab - @tab - @tab -
--@item expl @tab - @tab - @tab -
--@item exp10f @tab 2 @tab 2 @tab 2
--@item exp10 @tab 6 @tab 6 @tab 6
--@item exp10l @tab - @tab 1 @tab 3
--@item exp2f @tab - @tab - @tab -
--@item exp2 @tab - @tab - @tab -
--@item exp2l @tab - @tab - @tab -
--@item expm1f @tab 1 @tab 1 @tab 1
--@item expm1 @tab - @tab 1 @tab 1
--@item expm1l @tab - @tab - @tab 1
--@item fabsf @tab - @tab - @tab -
--@item fabs @tab - @tab - @tab -
--@item fabsl @tab - @tab - @tab -
--@item fdimf @tab - @tab - @tab -
--@item fdim @tab - @tab - @tab -
--@item fdiml @tab - @tab - @tab -
--@item floorf @tab - @tab - @tab -
--@item floor @tab - @tab - @tab -
--@item floorl @tab - @tab - @tab -
--@item fmaf @tab - @tab - @tab -
--@item fma @tab - @tab - @tab -
--@item fmal @tab - @tab - @tab -
--@item fmaxf @tab - @tab - @tab -
--@item fmax @tab - @tab - @tab -
--@item fmaxl @tab - @tab - @tab -
--@item fminf @tab - @tab - @tab -
--@item fmin @tab - @tab - @tab -
--@item fminl @tab - @tab - @tab -
--@item fmodf @tab 1 @tab 1 @tab 1
--@item fmod @tab 2 @tab 2 @tab 2
--@item fmodl @tab - @tab 2 @tab 1
--@item frexpf @tab - @tab - @tab -
--@item frexp @tab - @tab - @tab -
--@item frexpl @tab - @tab - @tab -
--@item gammaf @tab - @tab - @tab -
--@item gamma @tab - @tab - @tab -
--@item gammal @tab - @tab - @tab 1
--@item hypotf @tab 1 @tab 1 @tab 1
--@item hypot @tab 1 @tab 1 @tab 1
--@item hypotl @tab - @tab - @tab 1
--@item ilogbf @tab - @tab - @tab -
--@item ilogb @tab - @tab - @tab -
--@item ilogbl @tab - @tab - @tab -
--@item j0f @tab 2 @tab 2 @tab 2
--@item j0 @tab 2 @tab 2 @tab 2
--@item j0l @tab - @tab - @tab -
--@item j1f @tab 2 @tab 2 @tab 2
--@item j1 @tab 1 @tab 1 @tab 1
--@item j1l @tab - @tab - @tab 2
--@item jnf @tab 4 @tab 4 @tab 4
--@item jn @tab 6 @tab 6 @tab 6
--@item jnl @tab - @tab - @tab 2
--@item lgammaf @tab 2 @tab 2 @tab 2
--@item lgamma @tab 1 @tab 1 @tab 1
--@item lgammal @tab - @tab - @tab 1
--@item lrintf @tab - @tab - @tab -
--@item lrint @tab - @tab - @tab -
--@item lrintl @tab - @tab - @tab -
--@item llrintf @tab - @tab - @tab -
--@item llrint @tab - @tab - @tab -
--@item llrintl @tab - @tab - @tab -
--@item logf @tab 1 @tab 1 @tab 1
--@item log @tab 1 @tab 1 @tab 1
--@item logl @tab - @tab 1 @tab 1
--@item log10f @tab 1 @tab 1 @tab 1
--@item log10 @tab 1 @tab 1 @tab 1
--@item log10l @tab - @tab - @tab 1
--@item log1pf @tab 1 @tab 1 @tab 1
--@item log1p @tab 1 @tab 1 @tab 1
--@item log1pl @tab - @tab 1 @tab 1
--@item log2f @tab 1 @tab 1 @tab 1
--@item log2 @tab 1 @tab 1 @tab 1
--@item log2l @tab - @tab - @tab -
--@item logbf @tab - @tab - @tab -
--@item logb @tab - @tab - @tab -
--@item logbl @tab - @tab - @tab -
--@item lroundf @tab - @tab - @tab -
--@item lround @tab - @tab - @tab -
--@item lroundl @tab - @tab - @tab -
--@item llroundf @tab - @tab - @tab -
--@item llround @tab - @tab - @tab -
--@item llroundl @tab - @tab - @tab -
--@item modff @tab - @tab - @tab -
--@item modf @tab - @tab - @tab -
--@item modfl @tab - @tab - @tab -
--@item nearbyintf @tab - @tab - @tab -
--@item nearbyint @tab - @tab - @tab -
--@item nearbyintl @tab - @tab - @tab -
--@item nextafterf @tab - @tab - @tab -
--@item nextafter @tab - @tab - @tab -
--@item nextafterl @tab - @tab - @tab -
--@item nexttowardf @tab - @tab - @tab -
--@item nexttoward @tab - @tab - @tab -
--@item nexttowardl @tab - @tab - @tab -
--@item powf @tab - @tab - @tab -
--@item pow @tab - @tab - @tab -
--@item powl @tab - @tab - @tab -
--@item remainderf @tab - @tab - @tab -
--@item remainder @tab - @tab - @tab -
--@item remainderl @tab - @tab - @tab -
--@item remquof @tab - @tab - @tab -
--@item remquo @tab - @tab - @tab -
--@item remquol @tab - @tab - @tab -
--@item rintf @tab - @tab - @tab -
--@item rint @tab - @tab - @tab -
--@item rintl @tab - @tab - @tab -
--@item roundf @tab - @tab - @tab -
--@item round @tab - @tab - @tab -
--@item roundl @tab - @tab - @tab -
--@item scalbf @tab - @tab - @tab -
--@item scalb @tab - @tab - @tab -
--@item scalbl @tab - @tab - @tab -
--@item scalbnf @tab - @tab - @tab -
--@item scalbn @tab - @tab - @tab -
--@item scalbnl @tab - @tab - @tab -
--@item scalblnf @tab - @tab - @tab -
--@item scalbln @tab - @tab - @tab -
--@item scalblnl @tab - @tab - @tab -
--@item sinf @tab - @tab - @tab -
--@item sin @tab - @tab - @tab -
--@item sinl @tab - @tab - @tab 1
--@item sincosf @tab 1 @tab 1 @tab 1
--@item sincos @tab 1 @tab 1 @tab 1
--@item sincosl @tab - @tab 1 @tab 1
--@item sinhf @tab 1 @tab 1 @tab 1
--@item sinh @tab 1 @tab 1 @tab 1
--@item sinhl @tab - @tab - @tab 1
--@item sqrtf @tab - @tab - @tab -
--@item sqrt @tab - @tab - @tab -
--@item sqrtl @tab - @tab 1 @tab -
--@item tanf @tab - @tab - @tab -
--@item tan @tab 0.5 @tab 0.5 @tab 0.5
--@item tanl @tab - @tab 1 @tab 1
--@item tanhf @tab 1 @tab 1 @tab 1
--@item tanh @tab 1 @tab 1 @tab 1
--@item tanhl @tab - @tab - @tab 1
--@item tgammaf @tab 1 @tab 1 @tab 1
--@item tgamma @tab 1 @tab 1 @tab 1
--@item tgammal @tab - @tab - @tab 2
--@item truncf @tab - @tab - @tab -
--@item trunc @tab - @tab - @tab -
--@item truncl @tab - @tab - @tab -
--@item y0f @tab 1 @tab 1 @tab 1
--@item y0 @tab 2 @tab 2 @tab 2
--@item y0l @tab - @tab - @tab 2
--@item y1f @tab 2 @tab 2 @tab 2
--@item y1 @tab 3 @tab 3 @tab 3
--@item y1l @tab - @tab - @tab 2
--@item ynf @tab 2 @tab 2 @tab 2
--@item yn @tab 3 @tab 3 @tab 3
--@item ynl @tab - @tab - @tab 7
--@end multitable
-diff -u -udbrN glibc-2.3.2/manual/longopt.c.texi glibc-2.3.2-200304020432/manual/longopt.c.texi
---- glibc-2.3.2/manual/longopt.c.texi Sat Aug 4 17:06:06 2001
-+++ glibc-2.3.2-200304020432/manual/longopt.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,98 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <getopt.h>
--
--/* @r{Flag set by @samp{--verbose}.} */
--static int verbose_flag;
--
--int
--main (argc, argv)
-- int argc;
-- char **argv;
--@{
-- int c;
--
-- while (1)
-- @{
-- static struct option long_options[] =
-- @{
-- /* @r{These options set a flag.} */
-- @{"verbose", no_argument, &verbose_flag, 1@},
-- @{"brief", no_argument, &verbose_flag, 0@},
-- /* @r{These options don't set a flag.
-- We distinguish them by their indices.} */
-- @{"add", no_argument, 0, 'a'@},
-- @{"append", no_argument, 0, 'b'@},
-- @{"delete", required_argument, 0, 'd'@},
-- @{"create", required_argument, 0, 'c'@},
-- @{"file", required_argument, 0, 'f'@},
-- @{0, 0, 0, 0@}
-- @};
-- /* @r{@code{getopt_long} stores the option index here.} */
-- int option_index = 0;
--
-- c = getopt_long (argc, argv, "abc:d:f:",
-- long_options, &option_index);
--
-- /* @r{Detect the end of the options.} */
-- if (c == -1)
-- break;
--
-- switch (c)
-- @{
-- case 0:
-- /* @r{If this option set a flag, do nothing else now.} */
-- if (long_options[option_index].flag != 0)
-- break;
-- printf ("option %s", long_options[option_index].name);
-- if (optarg)
-- printf (" with arg %s", optarg);
-- printf ("\n");
-- break;
--
-- case 'a':
-- puts ("option -a\n");
-- break;
--
-- case 'b':
-- puts ("option -b\n");
-- break;
--
-- case 'c':
-- printf ("option -c with value `%s'\n", optarg);
-- break;
--
-- case 'd':
-- printf ("option -d with value `%s'\n", optarg);
-- break;
--
-- case 'f':
-- printf ("option -f with value `%s'\n", optarg);
-- break;
--
-- case '?':
-- /* @r{@code{getopt_long} already printed an error message.} */
-- break;
--
-- default:
-- abort ();
-- @}
-- @}
--
-- /* @r{Instead of reporting @samp{--verbose}
-- and @samp{--brief} as they are encountered,
-- we report the final status resulting from them.} */
-- if (verbose_flag)
-- puts ("verbose flag is set");
--
-- /* @r{Print any remaining command line arguments (not options).} */
-- if (optind < argc)
-- @{
-- printf ("non-option ARGV-elements: ");
-- while (optind < argc)
-- printf ("%s ", argv[optind++]);
-- putchar ('\n');
-- @}
--
-- exit (0);
--@}
-diff -u -udbrN glibc-2.3.2/manual/memopen.c.texi glibc-2.3.2-200304020432/manual/memopen.c.texi
---- glibc-2.3.2/manual/memopen.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/memopen.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,17 +0,0 @@
--#include <stdio.h>
--
--static char buffer[] = "foobar";
--
--int
--main (void)
--@{
-- int ch;
-- FILE *stream;
--
-- stream = fmemopen (buffer, strlen (buffer), "r");
-- while ((ch = fgetc (stream)) != EOF)
-- printf ("Got %c\n", ch);
-- fclose (stream);
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/memstrm.c.texi glibc-2.3.2-200304020432/manual/memstrm.c.texi
---- glibc-2.3.2/manual/memstrm.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/memstrm.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,19 +0,0 @@
--#include <stdio.h>
--
--int
--main (void)
--@{
-- char *bp;
-- size_t size;
-- FILE *stream;
--
-- stream = open_memstream (&bp, &size);
-- fprintf (stream, "hello");
-- fflush (stream);
-- printf ("buf = `%s', size = %d\n", bp, size);
-- fprintf (stream, ", world");
-- fclose (stream);
-- printf ("buf = `%s', size = %d\n", bp, size);
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/mkfsock.c.texi glibc-2.3.2-200304020432/manual/mkfsock.c.texi
---- glibc-2.3.2/manual/mkfsock.c.texi Mon Apr 22 21:30:58 2002
-+++ glibc-2.3.2-200304020432/manual/mkfsock.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,46 +0,0 @@
--#include <stddef.h>
--#include <stdio.h>
--#include <errno.h>
--#include <stdlib.h>
--#include <string.h>
--#include <sys/socket.h>
--#include <sys/un.h>
--
--int
--make_named_socket (const char *filename)
--@{
-- struct sockaddr_un name;
-- int sock;
-- size_t size;
--
-- /* @r{Create the socket.} */
-- sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
-- if (sock < 0)
-- @{
-- perror ("socket");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Bind a name to the socket.} */
-- name.sun_family = AF_LOCAL;
-- strncpy (name.sun_path, filename, sizeof (name.sun_path));
-- name.sun_path[sizeof (name.sun_path) - 1] = '\0';
--
-- /* @r{The size of the address is
-- the offset of the start of the filename,
-- plus its length,
-- plus one for the terminating null byte.
-- Alternatively you can just do:
-- size = SUN_LEN (&name);
--} */
-- size = (offsetof (struct sockaddr_un, sun_path)
-- + strlen (name.sun_path) + 1);
--
-- if (bind (sock, (struct sockaddr *) &name, size) < 0)
-- @{
-- perror ("bind");
-- exit (EXIT_FAILURE);
-- @}
--
-- return sock;
--@}
-diff -u -udbrN glibc-2.3.2/manual/mkisock.c.texi glibc-2.3.2-200304020432/manual/mkisock.c.texi
---- glibc-2.3.2/manual/mkisock.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/mkisock.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,31 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <sys/socket.h>
--#include <netinet/in.h>
--
--int
--make_socket (uint16_t port)
--@{
-- int sock;
-- struct sockaddr_in name;
--
-- /* @r{Create the socket.} */
-- sock = socket (PF_INET, SOCK_STREAM, 0);
-- if (sock < 0)
-- @{
-- perror ("socket");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Give the socket a name.} */
-- name.sin_family = AF_INET;
-- name.sin_port = htons (port);
-- name.sin_addr.s_addr = htonl (INADDR_ANY);
-- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
-- @{
-- perror ("bind");
-- exit (EXIT_FAILURE);
-- @}
--
-- return sock;
--@}
-diff -u -udbrN glibc-2.3.2/manual/mygetpass.c.texi glibc-2.3.2-200304020432/manual/mygetpass.c.texi
---- glibc-2.3.2/manual/mygetpass.c.texi Tue Apr 18 06:13:59 2000
-+++ glibc-2.3.2-200304020432/manual/mygetpass.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,25 +0,0 @@
--#include <termios.h>
--#include <stdio.h>
--
--ssize_t
--my_getpass (char **lineptr, size_t *n, FILE *stream)
--@{
-- struct termios old, new;
-- int nread;
--
-- /* @r{Turn echoing off and fail if we can't.} */
-- if (tcgetattr (fileno (stream), &old) != 0)
-- return -1;
-- new = old;
-- new.c_lflag &= ~ECHO;
-- if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
-- return -1;
--
-- /* @r{Read the password.} */
-- nread = getline (lineptr, n, stream);
--
-- /* @r{Restore terminal.} */
-- (void) tcsetattr (fileno (stream), TCSAFLUSH, &old);
--
-- return nread;
--@}
-diff -u -udbrN glibc-2.3.2/manual/pipe.c.texi glibc-2.3.2-200304020432/manual/pipe.c.texi
---- glibc-2.3.2/manual/pipe.c.texi Sat Oct 30 08:39:31 1999
-+++ glibc-2.3.2-200304020432/manual/pipe.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,70 +0,0 @@
--#include <sys/types.h>
--#include <unistd.h>
--#include <stdio.h>
--#include <stdlib.h>
--
--/* @r{Read characters from the pipe and echo them to @code{stdout}.} */
--
--void
--read_from_pipe (int file)
--@{
-- FILE *stream;
-- int c;
-- stream = fdopen (file, "r");
-- while ((c = fgetc (stream)) != EOF)
-- putchar (c);
-- fclose (stream);
--@}
--
--/* @r{Write some random text to the pipe.} */
--
--void
--write_to_pipe (int file)
--@{
-- FILE *stream;
-- stream = fdopen (file, "w");
-- fprintf (stream, "hello, world!\n");
-- fprintf (stream, "goodbye, world!\n");
-- fclose (stream);
--@}
--
--int
--main (void)
--@{
-- pid_t pid;
-- int mypipe[2];
--
--@group
-- /* @r{Create the pipe.} */
-- if (pipe (mypipe))
-- @{
-- fprintf (stderr, "Pipe failed.\n");
-- return EXIT_FAILURE;
-- @}
--@end group
--
-- /* @r{Create the child process.} */
-- pid = fork ();
-- if (pid == (pid_t) 0)
-- @{
-- /* @r{This is the child process.
-- Close other end first.} */
-- close (mypipe[1]);
-- read_from_pipe (mypipe[0]);
-- return EXIT_SUCCESS;
-- @}
-- else if (pid < (pid_t) 0)
-- @{
-- /* @r{The fork failed.} */
-- fprintf (stderr, "Fork failed.\n");
-- return EXIT_FAILURE;
-- @}
-- else
-- @{
-- /* @r{This is the parent process.
-- Close other end first.} */
-- close (mypipe[0]);
-- write_to_pipe (mypipe[1]);
-- return EXIT_SUCCESS;
-- @}
--@}
-diff -u -udbrN glibc-2.3.2/manual/popen.c.texi glibc-2.3.2-200304020432/manual/popen.c.texi
---- glibc-2.3.2/manual/popen.c.texi Wed Aug 2 21:25:17 2000
-+++ glibc-2.3.2-200304020432/manual/popen.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,38 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--
--void
--write_data (FILE * stream)
--@{
-- int i;
-- for (i = 0; i < 100; i++)
-- fprintf (stream, "%d\n", i);
-- if (ferror (stream))
-- @{
-- fprintf (stderr, "Output to stream failed.\n");
-- exit (EXIT_FAILURE);
-- @}
--@}
--
--@group
--int
--main (void)
--@{
-- FILE *output;
--
-- output = popen ("more", "w");
-- if (!output)
-- @{
-- fprintf (stderr,
-- "incorrect parameters or too many files.\n");
-- return EXIT_FAILURE;
-- @}
-- write_data (output);
-- if (pclose (output) != 0)
-- @{
-- fprintf (stderr,
-- "Could not run more or other error.\n");
-- @}
-- return EXIT_SUCCESS;
--@}
--@end group
-diff -u -udbrN glibc-2.3.2/manual/rprintf.c.texi glibc-2.3.2-200304020432/manual/rprintf.c.texi
---- glibc-2.3.2/manual/rprintf.c.texi Mon Jan 11 19:57:12 1999
-+++ glibc-2.3.2-200304020432/manual/rprintf.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,67 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <printf.h>
--
--@group
--typedef struct
--@{
-- char *name;
--@}
--Widget;
--@end group
--
--int
--print_widget (FILE *stream,
-- const struct printf_info *info,
-- const void *const *args)
--@{
-- const Widget *w;
-- char *buffer;
-- int len;
--
-- /* @r{Format the output into a string.} */
-- w = *((const Widget **) (args[0]));
-- len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
-- if (len == -1)
-- return -1;
--
-- /* @r{Pad to the minimum field width and print to the stream.} */
-- len = fprintf (stream, "%*s",
-- (info->left ? -info->width : info->width),
-- buffer);
--
-- /* @r{Clean up and return.} */
-- free (buffer);
-- return len;
--@}
--
--
--int
--print_widget_arginfo (const struct printf_info *info, size_t n,
-- int *argtypes)
--@{
-- /* @r{We always take exactly one argument and this is a pointer to the
-- structure..} */
-- if (n > 0)
-- argtypes[0] = PA_POINTER;
-- return 1;
--@}
--
--
--int
--main (void)
--@{
-- /* @r{Make a widget to print.} */
-- Widget mywidget;
-- mywidget.name = "mywidget";
--
-- /* @r{Register the print function for widgets.} */
-- register_printf_function ('W', print_widget, print_widget_arginfo);
--
-- /* @r{Now print the widget.} */
-- printf ("|%W|\n", &mywidget);
-- printf ("|%35W|\n", &mywidget);
-- printf ("|%-35W|\n", &mywidget);
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/search.c.texi glibc-2.3.2-200304020432/manual/search.c.texi
---- glibc-2.3.2/manual/search.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/search.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,93 +0,0 @@
--#include <stdlib.h>
--#include <stdio.h>
--#include <string.h>
--
--/* @r{Define an array of critters to sort.} */
--
--struct critter
-- @{
-- const char *name;
-- const char *species;
-- @};
--
--struct critter muppets[] =
-- @{
-- @{"Kermit", "frog"@},
-- @{"Piggy", "pig"@},
-- @{"Gonzo", "whatever"@},
-- @{"Fozzie", "bear"@},
-- @{"Sam", "eagle"@},
-- @{"Robin", "frog"@},
-- @{"Animal", "animal"@},
-- @{"Camilla", "chicken"@},
-- @{"Sweetums", "monster"@},
-- @{"Dr. Strangepork", "pig"@},
-- @{"Link Hogthrob", "pig"@},
-- @{"Zoot", "human"@},
-- @{"Dr. Bunsen Honeydew", "human"@},
-- @{"Beaker", "human"@},
-- @{"Swedish Chef", "human"@}
-- @};
--
--int count = sizeof (muppets) / sizeof (struct critter);
--
--
--
--/* @r{This is the comparison function used for sorting and searching.} */
--
--int
--critter_cmp (const struct critter *c1, const struct critter *c2)
--@{
-- return strcmp (c1->name, c2->name);
--@}
--
--
--/* @r{Print information about a critter.} */
--
--void
--print_critter (const struct critter *c)
--@{
-- printf ("%s, the %s\n", c->name, c->species);
--@}
--
--
--@group
--/* @r{Do the lookup into the sorted array.} */
--
--void
--find_critter (const char *name)
--@{
-- struct critter target, *result;
-- target.name = name;
-- result = bsearch (&target, muppets, count, sizeof (struct critter),
-- critter_cmp);
-- if (result)
-- print_critter (result);
-- else
-- printf ("Couldn't find %s.\n", name);
--@}
--@end group
--
--/* @r{Main program.} */
--
--int
--main (void)
--@{
-- int i;
--
-- for (i = 0; i < count; i++)
-- print_critter (&muppets[i]);
-- printf ("\n");
--
-- qsort (muppets, count, sizeof (struct critter), critter_cmp);
--
-- for (i = 0; i < count; i++)
-- print_critter (&muppets[i]);
-- printf ("\n");
--
-- find_critter ("Kermit");
-- find_critter ("Gonzo");
-- find_critter ("Janice");
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/select.c.texi glibc-2.3.2-200304020432/manual/select.c.texi
---- glibc-2.3.2/manual/select.c.texi Mon Nov 18 20:37:19 2002
-+++ glibc-2.3.2-200304020432/manual/select.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,41 +0,0 @@
--@group
--#include <errno.h>
--#include <stdio.h>
--#include <unistd.h>
--#include <sys/types.h>
--#include <sys/time.h>
--@end group
--
--@group
--int
--input_timeout (int filedes, unsigned int seconds)
--@{
-- fd_set set;
-- struct timeval timeout;
--@end group
--
-- /* @r{Initialize the file descriptor set.} */
-- FD_ZERO (&set);
-- FD_SET (filedes, &set);
--
-- /* @r{Initialize the timeout data structure.} */
-- timeout.tv_sec = seconds;
-- timeout.tv_usec = 0;
--
--@group
-- /* @r{@code{select} returns 0 if timeout, 1 if input available, -1 if error.} */
-- return TEMP_FAILURE_RETRY (select (FD_SETSIZE,
-- &set, NULL, NULL,
-- &timeout));
--@}
--@end group
--
--@group
--int
--main (void)
--@{
-- fprintf (stderr, "select returned %d.\n",
-- input_timeout (STDIN_FILENO, 5));
-- return 0;
--@}
--@end group
-diff -u -udbrN glibc-2.3.2/manual/setjmp.c.texi glibc-2.3.2-200304020432/manual/setjmp.c.texi
---- glibc-2.3.2/manual/setjmp.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/setjmp.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,32 +0,0 @@
--#include <setjmp.h>
--#include <stdlib.h>
--#include <stdio.h>
--
--jmp_buf main_loop;
--
--void
--abort_to_main_loop (int status)
--@{
-- longjmp (main_loop, status);
--@}
--
--int
--main (void)
--@{
-- while (1)
-- if (setjmp (main_loop))
-- puts ("Back at main loop....");
-- else
-- do_command ();
--@}
--
--
--void
--do_command (void)
--@{
-- char buffer[128];
-- if (fgets (buffer, 128, stdin) == NULL)
-- abort_to_main_loop (-1);
-- else
-- exit (EXIT_SUCCESS);
--@}
-diff -u -udbrN glibc-2.3.2/manual/sigh1.c.texi glibc-2.3.2-200304020432/manual/sigh1.c.texi
---- glibc-2.3.2/manual/sigh1.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/sigh1.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,36 +0,0 @@
--#include <signal.h>
--#include <stdio.h>
--#include <stdlib.h>
--
--/* @r{This flag controls termination of the main loop.} */
--volatile sig_atomic_t keep_going = 1;
--
--/* @r{The signal handler just clears the flag and re-enables itself.} */
--void
--catch_alarm (int sig)
--@{
-- keep_going = 0;
-- signal (sig, catch_alarm);
--@}
--
--void
--do_stuff (void)
--@{
-- puts ("Doing stuff while waiting for alarm....");
--@}
--
--int
--main (void)
--@{
-- /* @r{Establish a handler for SIGALRM signals.} */
-- signal (SIGALRM, catch_alarm);
--
-- /* @r{Set an alarm to go off in a little while.} */
-- alarm (2);
--
-- /* @r{Check the flag once in a while to see when to quit.} */
-- while (keep_going)
-- do_stuff ();
--
-- return EXIT_SUCCESS;
--@}
-diff -u -udbrN glibc-2.3.2/manual/sigusr.c.texi glibc-2.3.2-200304020432/manual/sigusr.c.texi
---- glibc-2.3.2/manual/sigusr.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/sigusr.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,61 +0,0 @@
--@group
--#include <signal.h>
--#include <stdio.h>
--#include <sys/types.h>
--#include <unistd.h>
--@end group
--
--/* @r{When a @code{SIGUSR1} signal arrives, set this variable.} */
--volatile sig_atomic_t usr_interrupt = 0;
--
--void
--synch_signal (int sig)
--@{
-- usr_interrupt = 1;
--@}
--
--/* @r{The child process executes this function.} */
--void
--child_function (void)
--@{
-- /* @r{Perform initialization.} */
-- printf ("I'm here!!! My pid is %d.\n", (int) getpid ());
--
-- /* @r{Let parent know you're done.} */
-- kill (getppid (), SIGUSR1);
--
-- /* @r{Continue with execution.} */
-- puts ("Bye, now....");
-- exit (0);
--@}
--
--int
--main (void)
--@{
-- struct sigaction usr_action;
-- sigset_t block_mask;
-- pid_t child_id;
--
-- /* @r{Establish the signal handler.} */
-- sigfillset (&block_mask);
-- usr_action.sa_handler = synch_signal;
-- usr_action.sa_mask = block_mask;
-- usr_action.sa_flags = 0;
-- sigaction (SIGUSR1, &usr_action, NULL);
--
-- /* @r{Create the child process.} */
-- child_id = fork ();
-- if (child_id == 0)
-- child_function (); /* @r{Does not return.} */
--
--@group
-- /* @r{Busy wait for the child to send a signal.} */
-- while (!usr_interrupt)
-- ;
--@end group
--
-- /* @r{Now continue execution.} */
-- puts ("That's all, folks!");
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/stpcpy.c.texi glibc-2.3.2-200304020432/manual/stpcpy.c.texi
---- glibc-2.3.2/manual/stpcpy.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/stpcpy.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,13 +0,0 @@
--#include <string.h>
--#include <stdio.h>
--
--int
--main (void)
--@{
-- char buffer[10];
-- char *to = buffer;
-- to = stpcpy (to, "foo");
-- to = stpcpy (to, "bar");
-- puts (buffer);
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/strdupa.c.texi glibc-2.3.2-200304020432/manual/strdupa.c.texi
---- glibc-2.3.2/manual/strdupa.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/strdupa.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,19 +0,0 @@
--#include <paths.h>
--#include <string.h>
--#include <stdio.h>
--
--const char path[] = _PATH_STDPATH;
--
--int
--main (void)
--@{
-- char *wr_path = strdupa (path);
-- char *cp = strtok (wr_path, ":");
--
-- while (cp != NULL)
-- @{
-- puts (cp);
-- cp = strtok (NULL, ":");
-- @}
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/strftim.c.texi glibc-2.3.2-200304020432/manual/strftim.c.texi
---- glibc-2.3.2/manual/strftim.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/strftim.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,31 +0,0 @@
--#include <time.h>
--#include <stdio.h>
--
--#define SIZE 256
--
--int
--main (void)
--@{
-- char buffer[SIZE];
-- time_t curtime;
-- struct tm *loctime;
--
-- /* @r{Get the current time.} */
-- curtime = time (NULL);
--
-- /* @r{Convert it to local time representation.} */
-- loctime = localtime (&curtime);
--
-- /* @r{Print out the date and time in the standard format.} */
-- fputs (asctime (loctime), stdout);
--
--@group
-- /* @r{Print it out in a nice format.} */
-- strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
-- fputs (buffer, stdout);
-- strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
-- fputs (buffer, stdout);
--
-- return 0;
--@}
--@end group
-diff -u -udbrN glibc-2.3.2/manual/strncat.c.texi glibc-2.3.2-200304020432/manual/strncat.c.texi
---- glibc-2.3.2/manual/strncat.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/strncat.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,14 +0,0 @@
--#include <string.h>
--#include <stdio.h>
--
--#define SIZE 10
--
--static char buffer[SIZE];
--
--main ()
--@{
-- strncpy (buffer, "hello", SIZE);
-- puts (buffer);
-- strncat (buffer, ", world", SIZE - strlen (buffer) - 1);
-- puts (buffer);
--@}
-diff -u -udbrN glibc-2.3.2/manual/subopt.c.texi glibc-2.3.2-200304020432/manual/subopt.c.texi
---- glibc-2.3.2/manual/subopt.c.texi Sat Apr 22 09:29:06 2000
-+++ glibc-2.3.2-200304020432/manual/subopt.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,78 +0,0 @@
--#include <stdio.h>
--#include <stdlib.h>
--#include <unistd.h>
--
--int do_all;
--const char *type;
--int read_size;
--int write_size;
--int read_only;
--
--enum
--@{
-- RO_OPTION = 0,
-- RW_OPTION,
-- READ_SIZE_OPTION,
-- WRITE_SIZE_OPTION,
-- THE_END
--@};
--
--const char *mount_opts[] =
--@{
-- [RO_OPTION] = "ro",
-- [RW_OPTION] = "rw",
-- [READ_SIZE_OPTION] = "rsize",
-- [WRITE_SIZE_OPTION] = "wsize",
-- [THE_END] = NULL
--@};
--
--int
--main (int argc, char *argv[])
--@{
-- char *subopts, *value;
-- int opt;
--
-- while ((opt = getopt (argc, argv, "at:o:")) != -1)
-- switch (opt)
-- @{
-- case 'a':
-- do_all = 1;
-- break;
-- case 't':
-- type = optarg;
-- break;
-- case 'o':
-- subopts = optarg;
-- while (*subopts != '\0')
-- switch (getsubopt (&subopts, mount_opts, &value))
-- @{
-- case RO_OPTION:
-- read_only = 1;
-- break;
-- case RW_OPTION:
-- read_only = 0;
-- break;
-- case READ_SIZE_OPTION:
-- if (value == NULL)
-- abort ();
-- read_size = atoi (value);
-- break;
-- case WRITE_SIZE_OPTION:
-- if (value == NULL)
-- abort ();
-- write_size = atoi (value);
-- break;
-- default:
-- /* @r{Unknown suboption.} */
-- printf ("Unknown suboption `%s'\n", value);
-- break;
-- @}
-- break;
-- default:
-- abort ();
-- @}
--
-- /* @r{Do the real work.} */
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/swapcontext.c.texi glibc-2.3.2-200304020432/manual/swapcontext.c.texi
---- glibc-2.3.2/manual/swapcontext.c.texi Mon Apr 9 00:26:17 2001
-+++ glibc-2.3.2-200304020432/manual/swapcontext.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,99 +0,0 @@
--#include <signal.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <ucontext.h>
--#include <sys/time.h>
--
--/* @r{Set by the signal handler.} */
--static volatile int expired;
--
--/* @r{The contexts.} */
--static ucontext_t uc[3];
--
--/* @r{We do only a certain number of switches.} */
--static int switches;
--
--
--/* @r{This is the function doing the work. It is just a
-- skeleton, real code has to be filled in.} */
--static void
--f (int n)
--@{
-- int m = 0;
-- while (1)
-- @{
-- /* @r{This is where the work would be done.} */
-- if (++m % 100 == 0)
-- @{
-- putchar ('.');
-- fflush (stdout);
-- @}
--
-- /* @r{Regularly the @var{expire} variable must be checked.} */
-- if (expired)
-- @{
-- /* @r{We do not want the program to run forever.} */
-- if (++switches == 20)
-- return;
--
-- printf ("\nswitching from %d to %d\n", n, 3 - n);
-- expired = 0;
-- /* @r{Switch to the other context, saving the current one.} */
-- swapcontext (&uc[n], &uc[3 - n]);
-- @}
-- @}
--@}
--
--/* @r{This is the signal handler which simply set the variable.} */
--void
--handler (int signal)
--@{
-- expired = 1;
--@}
--
--
--int
--main (void)
--@{
-- struct sigaction sa;
-- struct itimerval it;
-- char st1[8192];
-- char st2[8192];
--
-- /* @r{Initialize the data structures for the interval timer.} */
-- sa.sa_flags = SA_RESTART;
-- sigfillset (&sa.sa_mask);
-- sa.sa_handler = handler;
-- it.it_interval.tv_sec = 0;
-- it.it_interval.tv_usec = 1;
-- it.it_value = it.it_interval;
--
-- /* @r{Install the timer and get the context we can manipulate.} */
-- if (sigaction (SIGPROF, &sa, NULL) < 0
-- || setitimer (ITIMER_PROF, &it, NULL) < 0
-- || getcontext (&uc[1]) == -1
-- || getcontext (&uc[2]) == -1)
-- abort ();
--
-- /* @r{Create a context with a separate stack which causes the
-- function @code{f} to be call with the parameter @code{1}.
-- Note that the @code{uc_link} points to the main context
-- which will cause the program to terminate once the function
-- return.} */
-- uc[1].uc_link = &uc[0];
-- uc[1].uc_stack.ss_sp = st1;
-- uc[1].uc_stack.ss_size = sizeof st1;
-- makecontext (&uc[1], (void (*) (void)) f, 1, 1);
--
-- /* @r{Similarly, but @code{2} is passed as the parameter to @code{f}.} */
-- uc[2].uc_link = &uc[0];
-- uc[2].uc_stack.ss_sp = st2;
-- uc[2].uc_stack.ss_size = sizeof st2;
-- makecontext (&uc[2], (void (*) (void)) f, 1, 2);
--
-- /* @r{Start running.} */
-- swapcontext (&uc[0], &uc[1]);
-- putchar ('\n');
--
-- return 0;
--@}
-diff -u -udbrN glibc-2.3.2/manual/termios.c.texi glibc-2.3.2-200304020432/manual/termios.c.texi
---- glibc-2.3.2/manual/termios.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/termios.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,60 +0,0 @@
--#include <unistd.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <termios.h>
--
--/* @r{Use this variable to remember original terminal attributes.} */
--
--struct termios saved_attributes;
--
--void
--reset_input_mode (void)
--@{
-- tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
--@}
--
--void
--set_input_mode (void)
--@{
-- struct termios tattr;
-- char *name;
--
-- /* @r{Make sure stdin is a terminal.} */
-- if (!isatty (STDIN_FILENO))
-- @{
-- fprintf (stderr, "Not a terminal.\n");
-- exit (EXIT_FAILURE);
-- @}
--
-- /* @r{Save the terminal attributes so we can restore them later.} */
-- tcgetattr (STDIN_FILENO, &saved_attributes);
-- atexit (reset_input_mode);
--
--@group
-- /* @r{Set the funny terminal modes.} */
-- tcgetattr (STDIN_FILENO, &tattr);
-- tattr.c_lflag &= ~(ICANON|ECHO); /* @r{Clear ICANON and ECHO.} */
-- tattr.c_cc[VMIN] = 1;
-- tattr.c_cc[VTIME] = 0;
-- tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
--@}
--@end group
--
--int
--main (void)
--@{
-- char c;
--
-- set_input_mode ();
--
-- while (1)
-- @{
-- read (STDIN_FILENO, &c, 1);
-- if (c == '\004') /* @r{@kbd{C-d}} */
-- break;
-- else
-- putchar (c);
-- @}
--
-- return EXIT_SUCCESS;
--@}
-diff -u -udbrN glibc-2.3.2/manual/testopt.c.texi glibc-2.3.2-200304020432/manual/testopt.c.texi
---- glibc-2.3.2/manual/testopt.c.texi Wed Dec 9 23:51:53 1998
-+++ glibc-2.3.2-200304020432/manual/testopt.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,51 +0,0 @@
--@group
--#include <unistd.h>
--#include <stdio.h>
--
--int
--main (int argc, char **argv)
--@{
-- int aflag = 0;
-- int bflag = 0;
-- char *cvalue = NULL;
-- int index;
-- int c;
--
-- opterr = 0;
--@end group
--
--@group
-- while ((c = getopt (argc, argv, "abc:")) != -1)
-- switch (c)
-- @{
-- case 'a':
-- aflag = 1;
-- break;
-- case 'b':
-- bflag = 1;
-- break;
-- case 'c':
-- cvalue = optarg;
-- break;
-- case '?':
-- if (isprint (optopt))
-- fprintf (stderr, "Unknown option `-%c'.\n", optopt);
-- else
-- fprintf (stderr,
-- "Unknown option character `\\x%x'.\n",
-- optopt);
-- return 1;
-- default:
-- abort ();
-- @}
--@end group
--
--@group
-- printf ("aflag = %d, bflag = %d, cvalue = %s\n",
-- aflag, bflag, cvalue);
--
-- for (index = optind; index < argc; index++)
-- printf ("Non-option argument %s\n", argv[index]);
-- return 0;
--@}
--@end group
-diff -u -udbrN glibc-2.3.2/manual/testpass.c.texi glibc-2.3.2-200304020432/manual/testpass.c.texi
---- glibc-2.3.2/manual/testpass.c.texi Tue Apr 18 06:13:59 2000
-+++ glibc-2.3.2-200304020432/manual/testpass.c.texi Thu Jan 1 01:00:00 1970
-@@ -1,26 +0,0 @@
--#include <stdio.h>
--#include <string.h>
--#include <unistd.h>
--#include <crypt.h>
--
--int
--main(void)
--@{
-- /* @r{Hashed form of "GNU libc manual".} */
-- const char *const pass = "$1$/iSaq7rB$EoUw5jJPPvAPECNaaWzMK/";
--
-- char *result;
-- int ok;
--
--@group
-- /* @r{Read in the user's password and encrypt it,
-- passing the expected password in as the salt.} */
-- result = crypt(getpass("Password:"), pass);
--@end group
--
-- /* @r{Test the result.} */
-- ok = strcmp (result, pass) == 0;
--
-- puts(ok ? "Access granted." : "Access denied.");
-- return ok ? 0 : 1;
--@}
-diff -u -udbrN glibc-2.3.2/math/libm-test.inc glibc-2.3.2-200304020432/math/libm-test.inc
---- glibc-2.3.2/math/libm-test.inc Sat Feb 15 07:55:23 2003
-+++ glibc-2.3.2-200304020432/math/libm-test.inc Sat Mar 22 07:13:35 2003
-@@ -1537,7 +1537,7 @@
- TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L);
-- TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L);
-+ TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L);
-
- END (ccos, complex);
- }
-@@ -1606,7 +1606,7 @@
-
- TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L);
-
-- TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L);
-+ TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L);
-
- END (ccosh, complex);
- }
-@@ -1836,7 +1836,7 @@
- TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L);
-- TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L);
-+ TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L);
-
- END (clog10, complex);
- }
-@@ -2072,7 +2072,7 @@
- TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L);
-- TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L);
-+ TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L);
-
- END (csin, complex);
- }
-@@ -2140,7 +2140,7 @@
- TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L);
-- TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L);
-+ TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L);
-
- END (csinh, complex);
- }
-@@ -2264,7 +2264,7 @@
- TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value);
-
- TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L);
-- TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L);
-+ TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L);
-
- END (ctan, complex);
- }
-@@ -2323,7 +2323,7 @@
- TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
-
- TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L);
-- TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L);
-+ TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L);
-
- END (ctanh, complex);
- }
-@@ -3067,8 +3067,8 @@
-
- TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
- TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
-- TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1);
-- TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1);
-+ TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
-+ TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
-
- END (lgamma);
- }
-@@ -4078,8 +4078,8 @@
- TEST_f_f (tgamma, 1, 1);
- TEST_f_f (tgamma, 4, 6);
-
-- TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L);
-- TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L);
-+ TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L);
-+ TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L);
-
- END (tgamma);
- }
-diff -u -udbrN glibc-2.3.2/math/tgmath.h glibc-2.3.2-200304020432/math/tgmath.h
---- glibc-2.3.2/math/tgmath.h Sat Jul 7 21:21:06 2001
-+++ glibc-2.3.2-200304020432/math/tgmath.h Mon Mar 3 20:39:31 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 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
-@@ -74,6 +74,17 @@
- __tgmres = __tgml(Fct) (Val); \
- __tgmres; }))
-
-+# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \
-+ (__extension__ ({ RetType __tgmres; \
-+ if (sizeof (Val) == sizeof (double) \
-+ || __builtin_classify_type (Val) != 8) \
-+ __tgmres = Fct (Val); \
-+ else if (sizeof (Val) == sizeof (float)) \
-+ __tgmres = Fct##f (Val); \
-+ else \
-+ __tgmres = __tgml(Fct) (Val); \
-+ __tgmres; }))
-+
- # define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \
- (__extension__ ({ __tgmath_real_type (Val1) __tgmres; \
- if (sizeof (Val1) == sizeof (double) \
-@@ -345,13 +356,13 @@
-
- /* Round X to nearest integral value according to current rounding
- direction. */
--#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
--#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
-+#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint)
-+#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint)
-
- /* Round X to nearest integral value, rounding halfway cases away from
- zero. */
--#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
--#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
-+#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround)
-+#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround)
-
-
- /* Return X with its signed changed to Y's. */
-diff -u -udbrN glibc-2.3.2/misc/Makefile glibc-2.3.2-200304020432/misc/Makefile
---- glibc-2.3.2/misc/Makefile Tue Aug 27 06:52:37 2002
-+++ glibc-2.3.2-200304020432/misc/Makefile Mon Mar 3 20:32:52 2003
-@@ -1,4 +1,4 @@
--# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1991-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
-@@ -52,7 +52,7 @@
- chflags fchflags \
- insremque getttyent getusershell getpass ttyslot \
- syslog syscall daemon \
-- mmap mmap64 munmap mprotect msync madvise mincore \
-+ mmap mmap64 munmap mprotect msync madvise mincore remap_file_pages\
- mlock munlock mlockall munlockall \
- efgcvt efgcvt_r qefgcvt qefgcvt_r \
- hsearch hsearch_r tsearch lsearch \
-diff -u -udbrN glibc-2.3.2/misc/Versions glibc-2.3.2-200304020432/misc/Versions
---- glibc-2.3.2/misc/Versions Wed Dec 18 23:49:52 2002
-+++ glibc-2.3.2-200304020432/misc/Versions Mon Mar 3 10:47:42 2003
-@@ -127,6 +127,9 @@
- # s*
- setxattr;
- }
-+ GLIBC_2.3.3 {
-+ remap_file_pages;
-+ }
- GLIBC_PRIVATE {
- # functions which have an additional interface since they are
- # cancelable.
-diff -u -udbrN glibc-2.3.2/misc/sys/mman.h glibc-2.3.2-200304020432/misc/sys/mman.h
---- glibc-2.3.2/misc/sys/mman.h Sat Jul 7 21:21:06 2001
-+++ glibc-2.3.2-200304020432/misc/sys/mman.h Mon Mar 3 10:45:34 2003
-@@ -1,5 +1,5 @@
- /* Definitions for BSD-style memory management.
-- Copyright (C) 1994-1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1994-1999, 2000, 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
-@@ -124,7 +124,13 @@
- The status is returned in a vector of bytes. The least significant
- bit of each byte is 1 if the referenced page is in memory, otherwise
- it is zero. */
--extern int mincore (void *__start, size_t __len, unsigned char *__vec);
-+extern int mincore (void *__start, size_t __len, unsigned char *__vec)
-+ __THROW;
-+
-+/* Remap arbitrary pages of a shared backing store within an existing
-+ VMA. */
-+extern int remap_file_pages (void *__start, size_t __size, int __prot,
-+ size_t __pgoff, int __flags) __THROW;
- #endif
-
-
-diff -u -udbrN glibc-2.3.2/nis/nis_table.c glibc-2.3.2-200304020432/nis/nis_table.c
---- glibc-2.3.2/nis/nis_table.c Sat Jul 7 21:21:06 2001
-+++ glibc-2.3.2-200304020432/nis/nis_table.c Sun Mar 16 04:36:21 2003
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (c) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
-
-@@ -30,7 +30,7 @@
- struct ib_request *ibreq = calloc (1, sizeof (ib_request));
- char buf[strlen (name) + 1];
- nis_attr *search_val = NULL;
-- int search_len = 0;
-+ size_t search_len = 0;
- char *cptr;
- size_t size = 0;
-
-diff -u -udbrN glibc-2.3.2/nis/nss_nis/nis-alias.c glibc-2.3.2-200304020432/nis/nss_nis/nis-alias.c
---- glibc-2.3.2/nis/nss_nis/nis-alias.c Sat Jan 18 11:21:02 2003
-+++ glibc-2.3.2-200304020432/nis/nss_nis/nis-alias.c Sun Mar 16 04:36:21 2003
-@@ -214,7 +214,7 @@
- char *p;
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- if (name == NULL)
- {
-diff -u -udbrN glibc-2.3.2/nis/nss_nis/nis-hosts.c glibc-2.3.2-200304020432/nis/nss_nis/nis-hosts.c
---- glibc-2.3.2/nis/nss_nis/nis-hosts.c Sat Jan 18 11:40:11 2003
-+++ glibc-2.3.2-200304020432/nis/nss_nis/nis-hosts.c Sun Mar 16 04:36:21 2003
-@@ -261,7 +261,7 @@
- /* Convert name to lowercase. */
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- for (i = 0; i < namlen; ++i)
- name2[i] = tolower (name[i]);
-diff -u -udbrN glibc-2.3.2/nis/nss_nis/nis-network.c glibc-2.3.2-200304020432/nis/nss_nis/nis-network.c
---- glibc-2.3.2/nis/nss_nis/nis-network.c Sun Jan 19 20:06:27 2003
-+++ glibc-2.3.2-200304020432/nis/nss_nis/nis-network.c Sun Mar 16 04:36:21 2003
-@@ -181,7 +181,7 @@
- /* Convert name to lowercase. */
- size_t namlen = strlen (name);
- char name2[namlen + 1];
-- int i;
-+ size_t i;
-
- for (i = 0; i < namlen; ++i)
- name2[i] = _tolower (name[i]);
-diff -u -udbrN glibc-2.3.2/nscd/cache.c glibc-2.3.2-200304020432/nscd/cache.c
---- glibc-2.3.2/nscd/cache.c Sat Jul 7 21:21:07 2001
-+++ glibc-2.3.2-200304020432/nscd/cache.c Fri Mar 21 08:45:55 2003
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 1999, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -17,7 +17,7 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
--#include <atomicity.h>
-+#include <atomic.h>
- #include <errno.h>
- #include <error.h>
- #include <limits.h>
-@@ -39,7 +39,7 @@
-
- This function must be called with the read-lock held. */
- struct hashentry *
--cache_search (int type, void *key, size_t len, struct database *table,
-+cache_search (request_type type, void *key, size_t len, struct database *table,
- uid_t owner)
- {
- unsigned long int hash = __nis_hash (key, len) % table->module;
-@@ -101,8 +101,8 @@
- /* Put the new entry in the first position. */
- do
- newp->next = table->array[hash];
-- while (! compare_and_swap ((volatile long int *) &table->array[hash],
-- (long int) newp->next, (long int) newp));
-+ while (atomic_compare_and_exchange_bool_acq (&table->array[hash], newp,
-+ newp->next));
-
- /* Update the statistics. */
- if (data == (void *) -1)
-diff -u -udbrN glibc-2.3.2/nscd/nscd.h glibc-2.3.2-200304020432/nscd/nscd.h
---- glibc-2.3.2/nscd/nscd.h Sat Jul 7 21:21:07 2001
-+++ glibc-2.3.2-200304020432/nscd/nscd.h Sun Mar 16 02:03:43 2003
-@@ -1,4 +1,4 @@
--/* Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (c) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
-
-@@ -118,7 +118,7 @@
- extern int receive_print_stats (void) __attribute__ ((__noreturn__));
-
- /* cache.c */
--extern struct hashentry *cache_search (int type, void *key, size_t len,
-+extern struct hashentry *cache_search (request_type, void *key, size_t len,
- struct database *table, uid_t owner);
- extern void cache_add (int type, void *key, size_t len,
- const void *packet, size_t iovtotal, void *data,
-diff -u -udbrN glibc-2.3.2/nscd/nscd_getgr_r.c glibc-2.3.2-200304020432/nscd/nscd_getgr_r.c
---- glibc-2.3.2/nscd/nscd_getgr_r.c Wed Jan 15 11:42:36 2003
-+++ glibc-2.3.2-200304020432/nscd/nscd_getgr_r.c Sun Mar 16 04:22:23 2003
-@@ -114,8 +114,8 @@
- vec[1].iov_base = (void *) key;
- vec[1].iov_len = keylen;
-
-- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-- if (nbytes != sizeof (request_header) + keylen)
-+ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-+ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
- {
- __close (sock);
- return -1;
-@@ -123,7 +123,7 @@
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, &gr_resp,
- sizeof (gr_response_header)));
-- if (nbytes != sizeof (gr_response_header))
-+ if (nbytes != (ssize_t) sizeof (gr_response_header))
- {
- __close (sock);
- return -1;
-@@ -143,7 +143,7 @@
- char *p = buffer;
- size_t total_len;
- uintptr_t align;
-- size_t cnt;
-+ nscd_ssize_t cnt;
-
- /* Now allocate the buffer the array for the group members. We must
- align the pointer. */
-diff -u -udbrN glibc-2.3.2/nscd/nscd_getpw_r.c glibc-2.3.2-200304020432/nscd/nscd_getpw_r.c
---- glibc-2.3.2/nscd/nscd_getpw_r.c Wed Jan 15 11:44:16 2003
-+++ glibc-2.3.2-200304020432/nscd/nscd_getpw_r.c Sun Mar 16 04:22:23 2003
-@@ -113,8 +113,8 @@
- vec[1].iov_base = (void *) key;
- vec[1].iov_len = keylen;
-
-- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-- if (nbytes != sizeof (request_header) + keylen)
-+ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
-+ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
- {
- __close (sock);
- return -1;
-@@ -122,7 +122,7 @@
-
- nbytes = TEMP_FAILURE_RETRY (__read (sock, &pw_resp,
- sizeof (pw_response_header)));
-- if (nbytes != sizeof (pw_response_header))
-+ if (nbytes != (ssize_t) sizeof (pw_response_header))
- {
- __close (sock);
- return -1;
-@@ -173,7 +173,7 @@
-
- __close (sock);
-
-- return nbytes == total ? 0 : -1;
-+ return nbytes == (ssize_t) total ? 0 : -1;
- }
- else
- {
-diff -u -udbrN glibc-2.3.2/nss/db-Makefile glibc-2.3.2-200304020432/nss/db-Makefile
---- glibc-2.3.2/nss/db-Makefile Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/db-Makefile Fri Jul 6 06:55:37 2001
-@@ -0,0 +1,139 @@
-+# Makefile to (re-)generate db versions of system database files.
-+# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-+#
-+
-+# 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.
-+
-+DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
-+ /etc/rpc /etc/services /etc/shadow /etc/netgroup)
-+
-+VAR_DB = /var/db
-+
-+AWK = awk
-+MAKEDB = makedb --quiet
-+
-+all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
-+
-+
-+$(VAR_DB)/passwd.db: /etc/passwd
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$3; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/group.db: /etc/group
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$3; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/ethers.db: /etc/ethers
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/protocols.db: /etc/protocols
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print; \
-+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/rpc.db: /etc/rpc
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print; \
-+ printf "=%s ", $$2; print; \
-+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/services.db: /etc/services
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS="[ \t/]+"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s/%s ", $$1, $$3; print; \
-+ printf ".%s/ ", $$1; print; \
-+ printf "=%s/%s ", $$2, $$3; print; \
-+ printf "=%s/ ", $$2; print; \
-+ for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
-+ { printf ".%s/%s ", $$i, $$3; print; \
-+ printf ".%s/ ", $$i; print } }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-+
-+$(VAR_DB)/shadow.db: /etc/shadow
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
-+ (umask 077 && $(MAKEDB) -o $@ -)
-+ @echo "done."
-+ @if chgrp shadow $@ 2>/dev/null; then \
-+ chmod g+r $@; \
-+ else \
-+ chown 0 $@; chgrp 0 $@; chmod 600 $@; \
-+ echo; \
-+ echo "Warning: The shadow password database $@"; \
-+ echo "has been set to be readable only by root. You may want"; \
-+ echo "to make it readable by the \`shadow' group depending"; \
-+ echo "on your configuration."; \
-+ echo; \
-+ fi
-+
-+$(VAR_DB)/netgroup.db: /etc/netgroup
-+ @echo -n "$(patsubst %.db,%,$(@F))... "
-+ @$(AWK) 'BEGIN { cnt=0 } \
-+ /^[ \t]*$$/ { next } \
-+ /^[ \t]*#/ { next } \
-+ { printf "0%u ", cnt++; print } \
-+ /^[^#]/ { end=sub(/\\/, " "); \
-+ gsub(/[ \t]+/, " "); \
-+ if(end == 1) printf "%s", $$0; else print }' $^ | \
-+ $(MAKEDB) -o $@ -
-+ @echo "done."
-diff -u -udbrN glibc-2.3.2/nss/makedb.c glibc-2.3.2-200304020432/nss/makedb.c
---- glibc-2.3.2/nss/makedb.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/makedb.c Fri Jul 6 06:55:37 2001
-@@ -0,0 +1,389 @@
-+/* Create simple DB database from textual input.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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.
-+
-+ 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 <argp.h>
-+#include <ctype.h>
-+#include <dlfcn.h>
-+#include <errno.h>
-+#include <error.h>
-+#include <fcntl.h>
-+#include <libintl.h>
-+#include <locale.h>
-+#include <stdio.h>
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/stat.h>
-+#include "nss_db/dummy-db.h"
-+
-+/* Get libc version number. */
-+#include "../version.h"
-+
-+#define PACKAGE _libc_intl_domainname
-+
-+/* If non-zero convert key to lower case. */
-+static int to_lowercase;
-+
-+/* If non-zero print content of input file, one entry per line. */
-+static int do_undo;
-+
-+/* If non-zero do not print informational messages. */
-+static int be_quiet;
-+
-+/* Name of output file. */
-+static const char *output_name;
-+
-+/* 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;
-+
-+/* Definitions of arguments for argp functions. */
-+static const struct argp_option options[] =
-+{
-+ { "fold-case", 'f', NULL, 0, N_("Convert key to lower case") },
-+ { "output", 'o', N_("NAME"), 0, N_("Write output to file NAME") },
-+ { "quiet", 'q', NULL, 0,
-+ N_("Do not print messages while building database") },
-+ { "undo", 'u', NULL, 0,
-+ N_("Print content of database file, one entry a line") },
-+ { NULL, 0, NULL, 0, NULL }
-+};
-+
-+/* Short description of program. */
-+static const char doc[] = N_("Create simple DB database from textual input.");
-+
-+/* Strings for arguments in help texts. */
-+static const char args_doc[] = N_("\
-+INPUT-FILE OUTPUT-FILE\n-o OUTPUT-FILE INPUT-FILE\n-u INPUT-FILE");
-+
-+/* Prototype for option handler. */
-+static error_t parse_opt (int key, char *arg, struct argp_state *state);
-+
-+/* Function to print some extra text in the help message. */
-+static char *more_help (int key, const char *text, void *input);
-+
-+/* Data structure to communicate with argp functions. */
-+static struct argp argp =
-+{
-+ options, parse_opt, args_doc, doc, NULL, more_help
-+};
-+
-+
-+/* Prototypes for local functions. */
-+static int process_input (FILE *input, const char *inname, NSS_DB *output,
-+ int to_lowercase, int be_quiet);
-+static int print_database (NSS_DB *db);
-+
-+
-+int
-+main (int argc, char *argv[])
-+{
-+ const char *input_name;
-+ FILE *input_file;
-+ NSS_DB *db_file;
-+ int status;
-+ int remaining;
-+ int mode = 0666;
-+
-+ /* Set locale via LC_ALL. */
-+ setlocale (LC_ALL, "");
-+
-+ /* Set the text message domain. */
-+ textdomain (_libc_intl_domainname);
-+
-+ /* Initialize local variables. */
-+ input_name = NULL;
-+
-+ /* Parse and process arguments. */
-+ argp_parse (&argp, argc, argv, 0, &remaining, NULL);
-+
-+ /* Determine file names. */
-+ if (do_undo || output_name != NULL)
-+ {
-+ if (remaining + 1 != argc)
-+ {
-+ wrong_arguments:
-+ error (0, 0, gettext ("wrong number of arguments"));
-+ argp_help (&argp, stdout, ARGP_HELP_SEE,
-+ program_invocation_short_name);
-+ exit (1);
-+ }
-+ input_name = argv[remaining];
-+ }
-+ else
-+ {
-+ if (remaining + 2 != argc)
-+ goto wrong_arguments;
-+
-+ input_name = argv[remaining++];
-+ output_name = argv[remaining];
-+ }
-+
-+ /* First load the shared object to initialize version dependend
-+ variables. */
-+ if (load_db () != NSS_STATUS_SUCCESS)
-+ error (EXIT_FAILURE, 0, gettext ("No usable database library found."));
-+
-+ /* Special handling if we are asked to print the database. */
-+ if (do_undo)
-+ {
-+ dbopen (input_name, db_rdonly, 0666, &db_file);
-+ if (db_file == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("cannot open database file `%s': %s"),
-+ input_name,
-+ (errno == EINVAL ? gettext ("incorrectly formatted file")
-+ : strerror (errno)));
-+
-+ status = print_database (db_file);
-+
-+ db_file->close (db_file->db, 0);
-+
-+ return status;
-+ }
-+
-+ /* Open input file. */
-+ if (strcmp (input_name, "-") == 0 || strcmp (input_name, "/dev/stdin") == 0)
-+ input_file = stdin;
-+ else
-+ {
-+ struct stat st;
-+
-+ input_file = fopen (input_name, "r");
-+ if (input_file == NULL)
-+ error (EXIT_FAILURE, errno, gettext ("cannot open input file `%s'"),
-+ input_name);
-+
-+ /* Get the access rights from the source file. The output file should
-+ have the same. */
-+ if (fstat (fileno (input_file), &st) >= 0)
-+ mode = st.st_mode & ACCESSPERMS;
-+ }
-+
-+ /* Open output file. This must not be standard output so we don't
-+ handle "-" and "/dev/stdout" special. */
-+ dbopen (output_name, DB_CREATE | db_truncate, mode, &db_file);
-+ if (db_file == NULL)
-+ error (EXIT_FAILURE, errno, gettext ("cannot open output file `%s'"),
-+ output_name);
-+
-+ /* Start the real work. */
-+ status = process_input (input_file, input_name, db_file, to_lowercase,
-+ be_quiet);
-+
-+ /* Close files. */
-+ if (input_file != stdin)
-+ fclose (input_file);
-+ db_file->close (db_file->db, 0);
-+
-+ return status;
-+}
-+
-+
-+/* Handle program arguments. */
-+static error_t
-+parse_opt (int key, char *arg, struct argp_state *state)
-+{
-+ switch (key)
-+ {
-+ case 'f':
-+ to_lowercase = 1;
-+ break;
-+ case 'o':
-+ output_name = arg;
-+ break;
-+ case 'q':
-+ be_quiet = 1;
-+ break;
-+ case 'u':
-+ do_undo = 1;
-+ break;
-+ default:
-+ return ARGP_ERR_UNKNOWN;
-+ }
-+ return 0;
-+}
-+
-+
-+static char *
-+more_help (int key, const char *text, void *input)
-+{
-+ switch (key)
-+ {
-+ case ARGP_KEY_HELP_EXTRA:
-+ /* We print some extra information. */
-+ return strdup (gettext ("\
-+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
-+ default:
-+ break;
-+ }
-+ return (char *) text;
-+}
-+
-+/* Print the version information. */
-+static void
-+print_version (FILE *stream, struct argp_state *state)
-+{
-+ fprintf (stream, "makedb (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\
-+"), "2000");
-+ fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
-+}
-+
-+
-+static int
-+process_input (input, inname, output, to_lowercase, be_quiet)
-+ FILE *input;
-+ const char *inname;
-+ NSS_DB *output;
-+ int to_lowercase;
-+ int be_quiet;
-+{
-+ char *line;
-+ size_t linelen;
-+ int status;
-+ size_t linenr;
-+
-+ line = NULL;
-+ linelen = 0;
-+ status = EXIT_SUCCESS;
-+ linenr = 0;
-+
-+ while (!feof (input))
-+ {
-+ DBT key;
-+ DBT val;
-+ char *cp;
-+ int n;
-+
-+ n = getline (&line, &linelen, input);
-+ if (n < 0)
-+ /* This means end of file or some bug. */
-+ break;
-+ if (n == 0)
-+ /* Short read. Probably interrupted system call. */
-+ continue;
-+
-+ ++linenr;
-+
-+ if (line[n - 1] == '\n')
-+ /* Remove trailing newline. */
-+ line[--n] = '\0';
-+
-+ cp = line;
-+ while (isspace (*cp))
-+ ++cp;
-+
-+ if (*cp == '#')
-+ /* First non-space character in line '#': it's a comment. */
-+ continue;
-+
-+ key.data = cp;
-+ while (*cp != '\0' && !isspace (*cp))
-+ {
-+ if (to_lowercase)
-+ *cp = tolower (*cp);
-+ ++cp;
-+ }
-+
-+ if (key.data == cp)
-+ /* It's an empty line. */
-+ continue;
-+
-+ key.size = cp - (char *) key.data;
-+ key.flags = 0;
-+
-+ while (isspace (*cp))
-+ ++cp;
-+
-+ val.data = cp;
-+ val.size = (&line[n] - cp) + 1;
-+ val.flags = 0;
-+
-+ /* Store the value. */
-+ status = output->put (output->db, NULL, &key, &val, db_nooverwrite);
-+ if (status != 0)
-+ {
-+ if (status == db_keyexist)
-+ {
-+ if (!be_quiet)
-+ error_at_line (0, 0, inname, linenr,
-+ gettext ("duplicate key"));
-+ /* This is no real error. Just give a warning. */
-+ status = 0;
-+ continue;
-+ }
-+ else
-+ error (0, status, gettext ("while writing database file"));
-+
-+ status = EXIT_FAILURE;
-+
-+ clearerr (input);
-+ break;
-+ }
-+ }
-+
-+ if (ferror (input))
-+ {
-+ error (0, 0, gettext ("problems while reading `%s'"), inname);
-+ status = EXIT_FAILURE;
-+ }
-+
-+ return status;
-+}
-+
-+
-+static int
-+print_database (db)
-+ NSS_DB *db;
-+{
-+ DBT key;
-+ DBT val;
-+ NSS_DBC *cursor;
-+ int status;
-+
-+ status = db->cursor (db->db, NULL, &cursor);
-+ if (status != 0)
-+ {
-+ error (0, status, gettext ("while reading database"));
-+ return EXIT_FAILURE;
-+ }
-+
-+ key.flags = 0;
-+ val.flags = 0;
-+ status = cursor->c_get (cursor->cursor, &key, &val, db_first);
-+ while (status == 0)
-+ {
-+ printf ("%.*s %s\n", (int) key.size, (char *) key.data,
-+ (char *) val.data);
-+
-+ status = cursor->c_get (cursor->cursor, &key, &val, db_next);
-+ }
-+
-+ if (status != db_notfound)
-+ {
-+ error (0, status, gettext ("while reading database"));
-+ return EXIT_FAILURE;
-+ }
-+
-+ return EXIT_SUCCESS;
-+}
-diff -u -udbrN glibc-2.3.2/nss/nss_db/db-XXX.c glibc-2.3.2-200304020432/nss/nss_db/db-XXX.c
---- glibc-2.3.2/nss/nss_db/db-XXX.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/db-XXX.c Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,261 @@
-+/* Common code for DB-based databases in nss_db module.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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 <dlfcn.h>
-+#include <fcntl.h>
-+#include <bits/libc-lock.h>
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+/* These symbols are defined by the including source file:
-+
-+ ENTNAME -- database name of the structure and functions (hostent, pwent).
-+ STRUCTURE -- struct name, define only if not ENTNAME (passwd, group).
-+ DATABASE -- database file name, ("hosts", "passwd")
-+
-+ NEED_H_ERRNO - defined iff an arg `int *herrnop' is used.
-+*/
-+
-+#define ENTNAME_r CONCAT(ENTNAME,_r)
-+
-+#include <paths.h>
-+#define DBFILE _PATH_VARDB DATABASE ".db"
-+
-+#ifdef NEED_H_ERRNO
-+#define H_ERRNO_PROTO , int *herrnop
-+#define H_ERRNO_ARG , herrnop
-+#define H_ERRNO_SET(val) (*herrnop = (val))
-+#else
-+#define H_ERRNO_PROTO
-+#define H_ERRNO_ARG
-+#define H_ERRNO_SET(val) ((void) 0)
-+#endif
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+
-+static NSS_DB *db;
-+static int keep_db;
-+static int entidx;
-+
-+
-+/* Open the database. */
-+enum nss_status
-+CONCAT(_nss_db_set,ENTNAME) (int stayopen)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (DBFILE, &db);
-+
-+ /* Remember STAYOPEN flag. */
-+ if (db != NULL)
-+ keep_db |= stayopen;
-+ /* Reset the sequential index. */
-+ entidx = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+/* Close it again. */
-+enum nss_status
-+CONCAT(_nss_db_end,ENTNAME) (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ /* Reset STAYOPEN flag. */
-+ keep_db = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+/* Do a database lookup for KEY. */
-+static enum nss_status
-+lookup (DBT *key, struct STRUCTURE *result,
-+ void *buffer, size_t buflen, int *errnop H_ERRNO_PROTO EXTRA_ARGS_DECL)
-+{
-+ char *p;
-+ enum nss_status status;
-+ int err;
-+ DBT value;
-+
-+ /* Open the database. */
-+ if (db == NULL)
-+ {
-+ status = internal_setent (DBFILE, &db);
-+ if (status != NSS_STATUS_SUCCESS)
-+ {
-+ *errnop = errno;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ return status;
-+ }
-+ }
-+
-+ /* Succeed iff it matches a value that parses correctly. */
-+ value.flags = 0;
-+ err = DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0));
-+ if (err != 0)
-+ {
-+ if (err == db_notfound)
-+ {
-+ H_ERRNO_SET (HOST_NOT_FOUND);
-+ status = NSS_STATUS_NOTFOUND;
-+ }
-+ else
-+ {
-+ *errnop = err;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_UNAVAIL;
-+ }
-+ }
-+ else if (buflen < value.size)
-+ {
-+ /* No room to copy the data to. */
-+ *errnop = ERANGE;
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_TRYAGAIN;
-+ }
-+ else
-+ {
-+ /* Copy the result to a safe place. */
-+ p = (char *) memcpy (buffer, value.data, value.size);
-+
-+ /* Skip leading blanks. */
-+ while (isspace (*p))
-+ ++p;
-+
-+ err = parse_line (p, result, buffer, buflen, errnop EXTRA_ARGS);
-+
-+ if (err == 0)
-+ {
-+ /* If the key begins with '0' we are trying to get the next
-+ entry. We want to ignore unparsable lines in this case. */
-+ if (((char *) key->data)[0] == '0')
-+ {
-+ /* Super magical return value. We need to tell our caller
-+ that it should continue looping. This value cannot
-+ happen in other cases. */
-+ status = NSS_STATUS_RETURN;
-+ }
-+ else
-+ {
-+ H_ERRNO_SET (HOST_NOT_FOUND);
-+ status = NSS_STATUS_NOTFOUND;
-+ }
-+ }
-+ else if (err < 0)
-+ {
-+ H_ERRNO_SET (NETDB_INTERNAL);
-+ status = NSS_STATUS_TRYAGAIN;
-+ }
-+ else
-+ status = NSS_STATUS_SUCCESS;
-+ }
-+
-+ if (! keep_db)
-+ internal_endent (&db);
-+
-+ return status;
-+}
-+
-+
-+/* Macro for defining lookup functions for this DB-based database.
-+
-+ NAME is the name of the lookup; e.g. `pwnam'.
-+
-+ KEYPATTERN gives `printf' args to construct a key string;
-+ e.g. `(".%s", name)'.
-+
-+ KEYSIZE gives the allocation size of a buffer to construct it in;
-+ e.g. `1 + strlen (name)'.
-+
-+ PROTO describes the arguments for the lookup key;
-+ e.g. `const char *name'.
-+
-+ BREAK_IF_MATCH is ignored, but used by ../nss_files/files-XXX.c. */
-+
-+#define DB_LOOKUP(name, keysize, keypattern, break_if_match, proto...) \
-+enum nss_status \
-+_nss_db_get##name##_r (proto, \
-+ struct STRUCTURE *result, \
-+ char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO)\
-+{ \
-+ DBT key; \
-+ enum nss_status status; \
-+ const size_t size = (keysize) + 1; \
-+ key.data = __alloca (size); \
-+ key.size = KEYPRINTF keypattern; \
-+ key.flags = 0; \
-+ __libc_lock_lock (lock); \
-+ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG \
-+ EXTRA_ARGS_VALUE); \
-+ __libc_lock_unlock (lock); \
-+ return status; \
-+}
-+
-+#define KEYPRINTF(pattern, args...) snprintf (key.data, size, pattern ,##args)
-+
-+
-+
-+
-+/* Return the next entry from the database file, doing locking. */
-+enum nss_status
-+CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer,
-+ size_t buflen, int *errnop H_ERRNO_PROTO)
-+{
-+ /* Return next entry in host file. */
-+ enum nss_status status;
-+ char buf[20];
-+ DBT key;
-+
-+ __libc_lock_lock (lock);
-+
-+ /* Loop until we find a valid entry or hit EOF. See above for the
-+ special meaning of the status value. */
-+ do
-+ {
-+ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
-+ key.flags = 0;
-+ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG
-+ EXTRA_ARGS_VALUE);
-+ if (status == NSS_STATUS_TRYAGAIN
-+#ifdef NEED_H_ERRNO
-+ && *herrnop == NETDB_INTERNAL
-+#endif
-+ && *errnop == ERANGE)
-+ /* Give the user a chance to get the same entry with a larger
-+ buffer. */
-+ --entidx;
-+ }
-+ while (status == NSS_STATUS_RETURN);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-diff -u -udbrN glibc-2.3.2/nss/nss_db/db-alias.c glibc-2.3.2-200304020432/nss/nss_db/db-alias.c
---- glibc-2.3.2/nss/nss_db/db-alias.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/db-alias.c Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,215 @@
-+/* Mail alias file parser in nss_db module.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000 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.
-+
-+ 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 <aliases.h>
-+#include <alloca.h>
-+#include <ctype.h>
-+#include <dlfcn.h>
-+#include <errno.h>
-+#include <bits/libc-lock.h>
-+#include <paths.h>
-+#include <string.h>
-+
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+
-+static NSS_DB *db;
-+static int keep_db;
-+static unsigned int entidx; /* Index for `getaliasent_r'. */
-+
-+
-+/* Open database. */
-+enum nss_status
-+_nss_db_setaliasent (int stayopen)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (_PATH_VARDB "aliases.db", &db);
-+
-+ /* Remember STAYOPEN flag. */
-+ if (db != NULL)
-+ keep_db |= stayopen;
-+
-+ /* Reset the sequential index. */
-+ entidx = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+/* Close it again. */
-+enum nss_status
-+_nss_db_endaliasent (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ /* Reset STAYOPEN flag. */
-+ keep_db = 0;
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+/* We provide the parse function here. The parser in libnss_files
-+ cannot be used. The generation of the db file already resolved all
-+ :include: statements so we simply have to parse the list and store
-+ the result. */
-+static enum nss_status
-+lookup (DBT *key, struct aliasent *result, char *buffer,
-+ size_t buflen, int *errnop)
-+{
-+ enum nss_status status;
-+ DBT value;
-+
-+ /* Open the database. */
-+ if (db == NULL)
-+ {
-+ status = internal_setent (_PATH_VARDB "aliases.db", &db);
-+ if (status != NSS_STATUS_SUCCESS)
-+ {
-+ *errnop = errno;
-+ return status;
-+ }
-+ }
-+
-+ value.flags = 0;
-+ if (DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0)) == 0)
-+ {
-+ const char *src = value.data;
-+ char *cp;
-+ size_t cnt;
-+
-+ result->alias_members_len = 0;
-+
-+ /* We now have to fill the BUFFER with all the information. */
-+ if (buflen < key->size + 1)
-+ {
-+ no_more_room:
-+ *errnop = ERANGE;
-+ return NSS_STATUS_TRYAGAIN;
-+ }
-+
-+ buffer = stpncpy (buffer, key->data, key->size) + 1;
-+ buflen -= key->size + 1;
-+
-+ while (*src != '\0')
-+ {
-+ const char *end, *upto;
-+ while (isspace (*src))
-+ ++src;
-+
-+ end = strchr (src, ',');
-+ if (end == NULL)
-+ end = strchr (src, '\0');
-+ for (upto = end; upto > src && isspace (upto[-1]); --upto);
-+
-+ if (upto != src)
-+ {
-+ if ((upto - src) + __alignof__ (char *) > buflen)
-+ goto no_more_room;
-+ buffer = stpncpy (buffer, src, upto - src) + 1;
-+ buflen -= (upto - src) + __alignof (char *);
-+ ++result->alias_members_len;
-+ }
-+ src = end + (*end != '\0');
-+ }
-+
-+ /* Now prepare the return. Provide string pointers for the
-+ currently selected aliases. */
-+
-+ /* Adjust the pointer so it is aligned for storing pointers. */
-+ buffer += __alignof__ (char *) - 1;
-+ buffer -= ((buffer - (char *) 0) % __alignof__ (char *));
-+ result->alias_members = (char **) buffer;
-+
-+ /* Compute addresses of alias entry strings. */
-+ cp = result->alias_name;
-+ for (cnt = 0; cnt < result->alias_members_len; ++cnt)
-+ {
-+ cp = strchr (cp, '\0') + 1;
-+ result->alias_members[cnt] = cp;
-+ }
-+
-+ status = (result->alias_members_len == 0
-+ ? NSS_STATUS_RETURN : NSS_STATUS_SUCCESS);
-+ }
-+ else
-+ status = NSS_STATUS_NOTFOUND;
-+
-+ if (! keep_db)
-+ internal_endent (&db);
-+
-+ return status;
-+}
-+
-+enum nss_status
-+_nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
-+ int *errnop)
-+{
-+ /* Return next entry in alias file. */
-+ enum nss_status status;
-+ char buf[20];
-+ DBT key;
-+
-+ __libc_lock_lock (lock);
-+ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
-+ key.flags = 0;
-+ status = lookup (&key, result, buffer, buflen, errnop);
-+ if (status == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
-+ /* Give the user a chance to get the same entry with a larger buffer. */
-+ --entidx;
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-+
-+
-+enum nss_status
-+_nss_db_getaliasbyname_r (const char *name, struct aliasent *result,
-+ char *buffer, size_t buflen, int *errnop)
-+{
-+ DBT key;
-+ enum nss_status status;
-+
-+ key.size = 1 + strlen (name);
-+
-+ key.data = __alloca (key.size);
-+ ((char *) key.data)[0] = '.';
-+ memcpy (&((char *) key.data)[1], name, key.size - 1);
-+ key.flags = 0;
-+
-+ __libc_lock_lock (lock);
-+ status = lookup (&key, result, buffer, buflen, errnop);
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-diff -u -udbrN glibc-2.3.2/nss/nss_db/db-netgrp.c glibc-2.3.2-200304020432/nss/nss_db/db-netgrp.c
---- glibc-2.3.2/nss/nss_db/db-netgrp.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/db-netgrp.c Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,103 @@
-+/* Netgroup file parser in nss_db modules.
-+ Copyright (C) 1996, 1997, 1999, 2000 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.
-+
-+ 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 <dlfcn.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <netgroup.h>
-+#include <string.h>
-+#include <bits/libc-lock.h>
-+#include <paths.h>
-+
-+#include "nsswitch.h"
-+#include "nss_db.h"
-+
-+
-+#define DBFILE _PATH_VARDB "netgroup.db"
-+
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Maintenance of the shared handle open on the database. */
-+static NSS_DB *db;
-+static char *entry;
-+static char *cursor;
-+
-+enum nss_status
-+_nss_db_setnetgrent (const char *group)
-+{
-+ enum nss_status status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = internal_setent (DBFILE, &db);
-+
-+ if (status == NSS_STATUS_SUCCESS)
-+ {
-+ DBT key = { data: (void *) group, size: strlen (group), flags: 0 };
-+ DBT value;
-+
-+ value.flags = 0;
-+ if (DL_CALL_FCT (db->get, (db->db, NULL, &key, &value, 0)) != 0)
-+ status = NSS_STATUS_NOTFOUND;
-+ else
-+ cursor = entry = value.data;
-+ }
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+
-+}
-+
-+
-+enum nss_status
-+_nss_db_endnetgrent (void)
-+{
-+ __libc_lock_lock (lock);
-+
-+ internal_endent (&db);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return NSS_STATUS_SUCCESS;
-+}
-+
-+
-+extern enum nss_status _nss_netgroup_parseline (char **cursor,
-+ struct __netgrent *result,
-+ char *buffer, size_t buflen,
-+ int *errnop);
-+
-+enum nss_status
-+_nss_db_getnetgrent_r (struct __netgrent *result, char *buffer, size_t buflen,
-+ int *errnop)
-+{
-+ int status;
-+
-+ __libc_lock_lock (lock);
-+
-+ status = _nss_netgroup_parseline (&cursor, result, buffer, buflen, errnop);
-+
-+ __libc_lock_unlock (lock);
-+
-+ return status;
-+}
-diff -u -udbrN glibc-2.3.2/nss/nss_db/db-open.c glibc-2.3.2-200304020432/nss/nss_db/db-open.c
---- glibc-2.3.2/nss/nss_db/db-open.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/db-open.c Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,389 @@
-+/* Common database routines for nss_db.
-+ Copyright (C) 2000 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 <dlfcn.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <bits/libc-lock.h>
-+
-+#include "dummy-db.h"
-+#include "nss_db.h"
-+
-+/* This file contains the functions used to open and close the databases
-+ read by the rest of libnss_db. Not all of them are thread safe;
-+ make sure the caller does the appropriate locking.
-+
-+ We dynamically load the database library, so that it does not have
-+ to be present when glibc is compiled. Once loaded, the database
-+ library is never never unloaded again until the libnss_db module is
-+ unloaded (from the free_mem routine in nsswitch.c) -- we catch the
-+ unload by providing a shlib destructor. (XXX Does that actually
-+ work?) */
-+
-+/* Handle for the shared Berkeley DB library. If non-null, the
-+ database library is completely loaded and ready to be used by
-+ multithreaded code. */
-+static void *libdb_handle;
-+
-+/* The version of the Berkeley DB library we are using. */
-+enum {
-+ nodb,
-+ db24,
-+ db27,
-+ db30
-+} libdb_version;
-+
-+/* Pointer to the db_open function. For use with DB 2.x. */
-+static int (*libdb_db_open) (const char *, int,
-+ uint32_t, int, void *, void *, void **);
-+
-+/* Pointer to the db_create function. For use with DB 3.x. */
-+static int (*libdb_db_create) (void *, void *, uint32_t);
-+
-+/* Constants which vary from version to version are actually variables
-+ here. */
-+int db_first;
-+int db_next;
-+int db_nooverwrite;
-+int db_truncate;
-+int db_rdonly;
-+/* Variables which keep track of the error values. */
-+int db_keyexist;
-+int db_notfound;
-+
-+/* Locks the static variables in this file. */
-+__libc_lock_define_initialized (static, lock)
-+
-+/* Dynamically load the database library. Return zero if successful,
-+ non-zero if no suitable version of the library could be loaded.
-+ Must be called with the above lock held if it might run in a
-+ multithreaded context.
-+
-+ We try currently:
-+ - libdb.so.3: the name used by glibc 2.1
-+ - libdb-3.0.so: the name used by db-3.0.x
-+ and maybe others in the future. */
-+
-+enum nss_status
-+load_db (void)
-+{
-+ static const char *libnames[] = { "libdb.so.3", "libdb-3.0.so" };
-+ int x;
-+
-+ for (x = 0; x < sizeof (libnames) / sizeof (libnames[0]); ++x)
-+ {
-+ libdb_handle = dlopen (libnames[x], RTLD_LAZY);
-+ if (libdb_handle == NULL)
-+ continue;
-+
-+ /* DB 3.0 has db_create instead of db_open. */
-+ libdb_db_create = dlsym (libdb_handle, "db_create");
-+
-+ if (libdb_db_create == NULL)
-+ /* DB 2.x uses db_open. */
-+ libdb_db_open = dlsym (libdb_handle, "db_open");
-+
-+ if (libdb_db_open != NULL || libdb_db_create != NULL)
-+ {
-+ /* Alright, we got a library. Now find out which version it is. */
-+ const char *(*db_version) (int *, int *, int *);
-+
-+ db_version = dlsym (libdb_handle, "db_version");
-+ if (db_version != NULL)
-+ {
-+ /* Call the function and get the information. */
-+ int major, minor, subminor;
-+
-+ DL_CALL_FCT (db_version, (&major, &minor, &subminor));
-+ switch (major)
-+ {
-+ case 2:
-+ /* Sanity check: Do we have db_open? */
-+ if (libdb_db_open != NULL)
-+ {
-+ if (minor < 6 || (minor == 6 && subminor < 4))
-+ {
-+ libdb_version = db24;
-+ db_first = DB24_FIRST;
-+ db_next = DB24_NEXT;
-+ db_nooverwrite = DB24_NOOVERWRITE;
-+ db_truncate = DB24_TRUNCATE;
-+ }
-+ else
-+ {
-+ libdb_version = db27;
-+ db_first = DB27_FIRST;
-+ db_next = DB27_NEXT;
-+ db_nooverwrite = DB27_NOOVERWRITE;
-+ db_truncate = DB27_TRUNCATE;
-+ }
-+ db_keyexist = DB2x_KEYEXIST;
-+ db_notfound = DB2x_NOTFOUND;
-+ db_rdonly = DB2x_RDONLY;
-+ }
-+ break;
-+
-+ case 3:
-+ /* Sanity check: Do we have db_create? */
-+ if (libdb_db_create != NULL)
-+ {
-+ libdb_version = db30;
-+ db_first = DB30_FIRST;
-+ db_next = DB30_NEXT;
-+ db_keyexist = DB30_KEYEXIST;
-+ db_notfound = DB30_NOTFOUND;
-+ db_rdonly = DB30_RDONLY;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ }
-+
-+ if (libdb_version != nodb)
-+ return NSS_STATUS_SUCCESS;
-+
-+ /* Clear variables. */
-+ libdb_db_open = NULL;
-+ libdb_db_create = NULL;
-+ }
-+
-+ dlclose (libdb_handle);
-+ }
-+
-+ (void) dlerror ();
-+ return NSS_STATUS_UNAVAIL;
-+}
-+
-+/* Set the `FD_CLOEXEC' flag of FD. Return 0 on success, or -1 on
-+ error with `errno' set. */
-+static int
-+set_cloexec_flag (int fd)
-+{
-+ int oldflags = fcntl (fd, F_GETFD, 0);
-+
-+ if (oldflags < 0)
-+ return oldflags;
-+
-+ oldflags |= FD_CLOEXEC;
-+
-+ return fcntl (fd, F_SETFD, oldflags);
-+}
-+
-+/* Make sure we don't use the library anymore once we are shutting down. */
-+static void __attribute__ ((destructor))
-+unload_db (void)
-+{
-+ if (libdb_handle != NULL)
-+ {
-+ libdb_db_open = NULL;
-+ libdb_db_create = NULL;
-+ libdb_version = nodb;
-+ dlclose (libdb_handle);
-+ }
-+}
-+
-+/* Open the database stored in FILE. If succesful, store the database
-+ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
-+ the appropriate lookup status. */
-+enum nss_status
-+internal_setent (const char *file, NSS_DB **dbp)
-+{
-+ enum nss_status status = NSS_STATUS_SUCCESS;
-+
-+ if (*dbp == NULL)
-+ {
-+ if (libdb_db_open == NULL && libdb_db_create == NULL)
-+ {
-+ __libc_lock_lock (lock);
-+
-+ if (libdb_db_open == NULL && libdb_db_create == NULL)
-+ status = load_db ();
-+
-+ __libc_lock_unlock (lock);
-+ }
-+
-+ if (status == NSS_STATUS_SUCCESS)
-+ status = dbopen (file, db_rdonly, 0, dbp);
-+ }
-+
-+ return status;
-+}
-+
-+
-+/* Close the database *DBP. */
-+void
-+internal_endent (NSS_DB **dbp)
-+{
-+ NSS_DB *db = *dbp;
-+
-+ if (db != NULL)
-+ {
-+ DL_CALL_FCT (db->close, (db->db, 0));
-+ *dbp = NULL;
-+ }
-+}
-+
-+/* Allocate a cursor for database DB and transaction TXN. On success,
-+ store the cursor in *DBCP and return zero. Otherwise return an
-+ error value. */
-+int
-+db_cursor (void *db, void *txn, NSS_DBC **dbcp)
-+{
-+ NSS_DBC *dbc;
-+ int ret;
-+
-+ dbc = (NSS_DBC *) malloc (sizeof (NSS_DBC));
-+ if (dbc == NULL)
-+ return ENOMEM;
-+
-+ switch (libdb_version)
-+ {
-+ case db24:
-+ ret = ((struct db24 *) db)->cursor (db, txn, &dbc->cursor);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc24 *) dbc->cursor)->c_get;
-+ break;
-+
-+ case db27:
-+ ret = ((struct db27 *) db)->cursor (db, txn, &dbc->cursor, 0);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc27 *) dbc->cursor)->c_get;
-+ break;
-+
-+ case db30:
-+ ret = ((struct db30 *) db)->cursor (db, txn, &dbc->cursor, 0);
-+
-+ if (ret == 0)
-+ dbc->c_get = ((struct dbc30 *) dbc->cursor)->c_get;
-+ break;
-+
-+ default:
-+ abort ();
-+ }
-+
-+ if (ret != 0)
-+ {
-+ free (dbc);
-+ return ret;
-+ }
-+
-+ *dbcp = dbc;
-+
-+ return 0;
-+}
-+
-+
-+/* Open the database in FNAME, for access specified by FLAGS. If
-+ opening the database causes the file FNAME to be created, it is
-+ created with MODE. If succesful, store the database handle in *DBP
-+ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
-+ lookup status. */
-+int
-+dbopen (const char *fname, int oper, int mode, NSS_DB **dbp)
-+{
-+ int err;
-+ int fd;
-+ NSS_DB *db;
-+
-+ /* Construct the object we pass up. */
-+ db = (NSS_DB *) calloc (1, sizeof (NSS_DB));
-+ if (db == NULL)
-+ return NSS_STATUS_UNAVAIL;
-+
-+ /* Initialize the object. */
-+ db->cursor = db_cursor;
-+
-+ /* Actually open the database. */
-+ switch (libdb_version)
-+ {
-+ case db24:
-+ case db27:
-+ err = DL_CALL_FCT (libdb_db_open,
-+ (fname, DB_BTREE, oper, mode, NULL, NULL, &db->db));
-+ if (err != 0)
-+ goto fail;
-+
-+ if (libdb_version)
-+ {
-+ db->close = ((struct db24 *) db->db)->close;
-+ db->fd = ((struct db24 *) db->db)->fd;
-+ db->get = ((struct db24 *) db->db)->get;
-+ db->put = ((struct db24 *) db->db)->put;
-+ }
-+ else
-+ {
-+ db->close = ((struct db27 *) db->db)->close;
-+ db->fd = ((struct db27 *) db->db)->fd;
-+ db->get = ((struct db27 *) db->db)->get;
-+ db->put = ((struct db27 *) db->db)->put;
-+ }
-+ break;
-+
-+ case db30:
-+ err = DL_CALL_FCT (libdb_db_create, (db->db, NULL, 0));
-+ if (err != 0)
-+ goto fail;
-+
-+ db->close = ((struct db30 *) db->db)->close;
-+ db->fd = ((struct db30 *) db->db)->fd;
-+ db->get = ((struct db30 *) db->db)->get;
-+ db->put = ((struct db30 *) db->db)->put;
-+
-+ err = ((struct db30 *) db->db)->open (db->db, fname, NULL, DB_BTREE,
-+ oper, mode);
-+ if (err != 0)
-+ goto fail;
-+ break;
-+
-+ default:
-+ abort ();
-+ }
-+
-+ /* We have to make sure the file is `closed on exec'. */
-+ err = DL_CALL_FCT (db->fd, (db->db, &fd));
-+ if (err != 0)
-+ goto fail;
-+ if (set_cloexec_flag (fd) < 0)
-+ goto fail;
-+
-+ *dbp = db;
-+
-+ return NSS_STATUS_UNAVAIL;
-+
-+ fail:
-+ /* Something went wrong. Close the database if necessary. */
-+ if (db)
-+ {
-+ if (db->db && db->close)
-+ DL_CALL_FCT (db->close, (db->db, 0));
-+ free (db);
-+ }
-+
-+ /* Make sure `errno' is set. */
-+ if (err)
-+ __set_errno (err);
-+
-+ return err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
-+}
-diff -u -udbrN glibc-2.3.2/nss/nss_db/dummy-db.h glibc-2.3.2-200304020432/nss/nss_db/dummy-db.h
---- glibc-2.3.2/nss/nss_db/dummy-db.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/dummy-db.h Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,333 @@
-+/* Constants and structures from the various Berkeley DB releases.
-+ Copyright (C) 1999, 2000 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 <stdint.h>
-+
-+#include "nss_db.h"
-+
-+/* This file contains dummy definitions for various constants and
-+ structures from the Berkeley release. We only provide those
-+ definitions that are actually needed. In case of the structures,
-+ we're only interested in the function pointers, since that's the
-+ interface to the database. Unfortunately the structures have been
-+ changed several times. */
-+
-+/* The value for the btree database type has not been changed (yet?). */
-+#define DB_BTREE (1)
-+
-+/* Permission flags for all 2.x releases. */
-+#define DB2x_RDONLY 0x010000
-+
-+/* The error values for all 2.x releases. */
-+#define DB2x_KEYEXIST ( -3)
-+#define DB2x_NOTFOUND ( -7)
-+
-+/* For all 2.x releases up to 2.6.3 we can use the same definitions.
-+ We'll refer to them as 2.4 since that's the version distributed
-+ with glibc 2.1. */
-+
-+/* Access methods from version 2.4. */
-+#define DB24_FIRST 0x000020
-+#define DB24_NEXT 0x000800
-+#define DB24_NOOVERWRITE 0x001000
-+
-+/* Permission flags from version 2.4. */
-+#define DB24_TRUNCATE 0x080000
-+
-+/* The DB structure from version 2.4. */
-+struct db24
-+{
-+ void *mutexp;
-+ enum { dummy24 } type;
-+ void *dbenv;
-+ void *mp_dbenv;
-+ void *master;
-+ void *internal;
-+ void *mp;
-+ void *mpf;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } curs_queue;
-+ struct {
-+ void *lh_first;
-+ } handleq;
-+ struct {
-+ void *le_next;
-+ void **le_prev;
-+ } links;
-+ uint32_t log_fileid;
-+ void *txn;
-+ uint32_t locker;
-+ struct db24_dbt {
-+ void *data;
-+ uint32_t size;
-+ uint32_t ulen;
-+ uint32_t dlen;
-+ uint32_t doff;
-+ uint32_t flags;
-+ } lock_dbt;
-+ struct{
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ size_t pgsize;
-+ void *db_malloc;
-+ /* Functions. */
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure for the 2.4 release. */
-+struct dbc24
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ void *internal;
-+ void *c_close;
-+ void *c_del;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ void *c_put;
-+};
-+
-+/* The 2.7 release is slighty different. */
-+
-+/* Access methods from version 2.7. */
-+#define DB27_FIRST 7
-+#define DB27_NEXT 15
-+#define DB27_NOOVERWRITE 17
-+
-+/* Permission flags from version 2.7. */
-+#define DB27_TRUNCATE 0x020000
-+
-+/* The DB structure from version 2.7. */
-+struct db27
-+{
-+ void *mutexp;
-+ enum { dummy27 } type;
-+ int byteswapped;
-+ int saved_open_fd;
-+ void *dbenv;
-+ void *mp_dbenv;
-+ void *internal;
-+ void *mp;
-+ void *mpf;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } free_queue;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } active_queue;
-+ uint8_t fileid[20];
-+ uint32_t log_fileid;
-+ size_t pgsize;
-+ void *db_malloc;
-+ void *dup_compare;
-+ void *h_hash;
-+ /* Functions. */
-+ int (*am_close) (void *);
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **, uint32_t);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*join) (void *, void **, uint32_t, void **);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure for version 2.7. */
-+struct dbc27
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ uint32_t lid;
-+ uint32_t locker;
-+ DBT lock_dbt;
-+ struct{
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ size_t mylock;
-+ DBT rkey;
-+ DBT rdata;
-+ void *c_am_close;
-+ void *c_am_destroy;
-+ void *c_close;
-+ void *c_del;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ void *c_put;
-+ void *internal;
-+ uint32_t flags;
-+};
-+
-+/* Version 3.0 is mostly incompatible with 2.x. */
-+
-+/* Access methods from version 3.0. */
-+#define DB30_FIRST 9
-+#define DB30_NEXT 17
-+#define DB30_NOOVERWRITE 20
-+
-+/* Error values from version 3.0. */
-+#define DB30_KEYEXIST (-30997)
-+#define DB30_NOTFOUND (-30994)
-+
-+/* Permission flags from version 3.0. */
-+#define DB30_RDONLY 0x000010
-+#define DB30_TRUNCATE 0x020000
-+
-+/* The DB structure from version 3.0. */
-+struct db30
-+{
-+ size_t pgsize;
-+ void (*db_feedback) (void *, int, int);
-+ void *(*db_malloc) (size_t);
-+ void *(*db_realloc) (void *, size_t);
-+ int (*dup_compare) (const DBT *, const DBT *);
-+ void *dbenv;
-+ enum { dummy30 } type;
-+ void *mpf;
-+ void *mutexp;
-+ u_int8_t fileid[20];
-+ int32_t log_fileid;
-+ void *open_txn;
-+ void *saved_open_fhp;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } free_queue;
-+ struct
-+ {
-+ void *tqh_first;
-+ void **tqh_last;
-+ } active_queue;
-+ void *bt_internal;
-+ void *cj_internal;
-+ void *h_internal;
-+ void *q_internal;
-+ void *xa_internal;
-+ /* Functions. */
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, void **, uint32_t);
-+ int (*del) (void *, void *, DBT *, uint32_t);
-+ void (*err) (void *, int, const char *, ...);
-+ void (*errx) (void *, const char *, ...);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*get_byteswapped) (void *);
-+ int (*get_type) (void *);
-+ int (*join) (void *, void **, void **, uint32_t);
-+ int (*open) (void *, const char *, const char *, int, uint32_t, int);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*remove) (void *, const char *, const char *, uint32_t);
-+ int (*set_cachesize) (void *, uint32_t, uint32_t, int);
-+ int (*set_dup_compare) (void *, int (*)(const DBT *, const DBT *));
-+ void (*set_errcall) (void *, void (*)(const char *, char *));
-+ void (*set_errfile) (void *, void *);
-+ void (*set_errpfx) (void *, const char *);
-+ void (*set_feedback) (void *, void (*)(void *, int, int));
-+ int (*set_flags) (void *, uint32_t);
-+ int (*set_lorder) (void *, int);
-+ int (*set_malloc) (void *, void *(*)(size_t));
-+ int (*set_pagesize) (void *, uint32_t);
-+ void (*set_paniccall) (void *, void (*)(void *, int));
-+ int (*set_realloc) (void *, void *(*)(void *, size_t));
-+ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
-+ int (*sync) (void *, uint32_t);
-+ int (*upgrade) (void *, const char *, uint32_t);
-+
-+ int (*set_bt_compare) (void *, int (*)(const DBT *, const DBT *));
-+ int (*set_bt_maxkey) (void *, uint32_t);
-+ int (*set_bt_minkey) (void *, uint32_t);
-+ int (*set_bt_prefix) (void *, size_t (*)(const DBT *, const DBT *));
-+
-+ int (*set_h_ffactor) (void *, uint32_t);
-+ int (*set_h_hash) (void *, uint32_t (*)(const void *, uint32_t));
-+ int (*set_h_nelem) (void *, uint32_t);
-+
-+ int (*set_re_delim) (void *, int);
-+ int (*set_re_len) (void *, uint32_t);
-+ int (*set_re_pad) (void *, int);
-+ int (*set_re_source) (void *, const char *);
-+
-+ uint32_t am_ok;
-+ uint32_t flags;
-+};
-+
-+/* The DBC structure from version 3.0. */
-+struct dbc30
-+{
-+ void *dbp;
-+ void *txn;
-+ struct
-+ {
-+ void *tqe_next;
-+ void **tqe_prev;
-+ } links;
-+ uint32_t lid; /* Default process' locker id. */
-+ uint32_t locker; /* Locker for this operation. */
-+ DBT lock_dbt; /* DBT referencing lock. */
-+ struct
-+ {
-+ uint32_t pgno;
-+ uint8_t fileid[20];
-+ } lock;
-+ struct
-+ {
-+ size_t off;
-+ uint32_t ndx;
-+ uint32_t gen;
-+ } mylock;
-+ DBT rkey;
-+ DBT rdata;
-+ int (*c_close) (void *);
-+ int (*c_del) (void *, uint32_t);
-+ int (*c_dup) (void *, void **, uint32_t);
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+ int (*c_put) (void *, DBT *, DBT *, uint32_t);
-+ int (*c_am_close) (void *);
-+ int (*c_am_destroy) (void *);
-+ void *internal;
-+ uint32_t flags;
-+};
-diff -u -udbrN glibc-2.3.2/nss/nss_db/nss_db.h glibc-2.3.2-200304020432/nss/nss_db/nss_db.h
---- glibc-2.3.2/nss/nss_db/nss_db.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/nss/nss_db/nss_db.h Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,94 @@
-+/* Common database open/close routines for nss_db.
-+ Copyright (C) 1999, 2000 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 _NSS_DB_H
-+#define _NSS_DB_H 1
-+
-+#include <nss.h>
-+#include <stdint.h>
-+
-+/* Variables which keep track of the error values. */
-+extern int db_keyexist;
-+extern int db_notfound;
-+
-+/* This flag is the same for all versions of the Berkeley DB library. */
-+#define DB_CREATE 0x000001
-+
-+/* But constants which vary from version to version are actually
-+ variables here. */
-+extern int db_first;
-+extern int db_next;
-+extern int db_nooverwrite;
-+extern int db_truncate;
-+extern int db_rdonly;
-+
-+/* The `DBT' type is the same in all versions we support. */
-+typedef struct
-+{
-+ void *data;
-+ uint32_t size;
-+ uint32_t ulen;
-+ uint32_t dlen;
-+ uint32_t doff;
-+ uint32_t flags;
-+} DBT;
-+
-+/* But the cursor object is very different from version to version. */
-+typedef struct
-+{
-+ void *cursor;
-+ int (*c_get) (void *, DBT *, DBT *, uint32_t);
-+} NSS_DBC;
-+
-+/* We need a helper function for it. */
-+extern int db_cursor (void *db, void *txn, NSS_DBC **dbcp);
-+
-+/* This is the wrapper we put around the `DB' structures to provide a
-+ uniform interface to the higher-level functions. */
-+typedef struct
-+{
-+ void *db;
-+ int (*close) (void *, uint32_t);
-+ int (*cursor) (void *, void *, NSS_DBC **);
-+ int (*fd) (void *, int *);
-+ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
-+ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
-+} NSS_DB;
-+
-+/* Open the database stored in FILE. If succesful, store the database
-+ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
-+ the appropriate lookup status. */
-+extern enum nss_status internal_setent (const char *file, NSS_DB **dbp);
-+
-+/* Close the database *DBP. */
-+extern void internal_endent (NSS_DB **dbp);
-+
-+/* Dynamically load the Berkeley DB library. Return zero if
-+ successful, non-zero if no suitable version of the library could be
-+ loaded. */
-+extern enum nss_status load_db (void);
-+
-+/* Open the database in FNAME, for access specified by FLAGS. If
-+ opening the database causes the file FNAME to be created, it is
-+ created with MODE. If succesful, store the database handle in *DBP
-+ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
-+ lookup status. */
-+extern int dbopen (const char *fname, int oper, int mode, NSS_DB **dbp);
-+
-+#endif /* nss_db.h */
-diff -u -udbrN glibc-2.3.2/nss/nss_files/files-hosts.c glibc-2.3.2-200304020432/nss/nss_files/files-hosts.c
---- glibc-2.3.2/nss/nss_files/files-hosts.c Wed Feb 12 08:37:22 2003
-+++ glibc-2.3.2-200304020432/nss/nss_files/files-hosts.c Sun Mar 16 04:31:40 2003
-@@ -280,7 +280,7 @@
-
- DB_LOOKUP (hostbyaddr, ,,
- {
-- if (result->h_length == len
-+ if (result->h_length == (int) len
- && ! memcmp (addr, result->h_addr_list[0], len))
- break;
- }, const void *addr, socklen_t len, int af)
-Binary files glibc-2.3.2/po/be.mo and glibc-2.3.2-200304020432/po/be.mo differ
-Binary files glibc-2.3.2/po/ca.mo and glibc-2.3.2-200304020432/po/ca.mo differ
-diff -u -udbrN glibc-2.3.2/po/ca.po glibc-2.3.2-200304020432/po/ca.po
---- glibc-2.3.2/po/ca.po Mon Nov 4 07:56:29 2002
-+++ glibc-2.3.2-200304020432/po/ca.po Sun Mar 9 23:51:17 2003
-@@ -1,12 +1,12 @@
- # Catalan messages for GNU libc.
- # Copyright (C) 2002 Free Software Foundation, Inc.
--# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002.
-+# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-29 18:59+0100\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-09 23:39+0100\n"
- "Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
- "Language-Team: Catalan <ca@dodds.net>\n"
- "MIME-Version: 1.0\n"
-@@ -267,8 +267,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "les conversions des de «%s» i cap a «%s» no són suportades"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "la conversió des de «%s» cap a «%s» no és suportada"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -293,15 +293,15 @@
- msgid "error while closing output file"
- msgstr "error en tancar el fitxer d'eixida"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Informeu dels errors amb el guió «glibcbug» a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -314,9 +314,9 @@
- "de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
- "ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -370,15 +370,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefix a usar en tots els accessos a fitxer"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "no hi ha fitxer d'eixida perquè s'han produït avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "en inserir en l'arbre de recerca"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "no s'ha pogut generar el fitxer d'eixida"
-
-@@ -1295,7 +1295,7 @@
- msgid "unterminated symbolic name"
- msgstr "el nom simbòlic no és terminat"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "la seqüència d'escapada no és vàlida"
-
-@@ -1325,41 +1325,41 @@
- msgid "trailing garbage at end of line"
- msgstr "fem al final de la línia"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Informació del sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Mostra els noms dels locales disponibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Mostra els noms dels mapes de caràcters disponibles"
-
- # ivb (2001/10/30)
- # ivb Aquesta línia dóna pas a un conjunt d'opcions que modif. l'eixida.
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modificadors del format de l'eixida:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Mostra els noms de les categories seleccionades"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Mostra els noms de les paraules clau seleccionades"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Mostra més informació"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obté la informació específica d'un locale."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1367,7 +1367,7 @@
- "NOM\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "en preparar l'eixida"
-
-@@ -1504,16 +1504,16 @@
- msgid "cannot create temporary file"
- msgstr "no s'ha pogut crear un fitxer temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "no s'ha pogut iniciar el fitxer arxiu"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "no s'ha pogut redimensionar el fitxer arxiu"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "no s'ha pogut mapar la capçalera de l'arxiu"
-
-@@ -1531,92 +1531,92 @@
- msgid "cannot map locale archive file"
- msgstr "no s'ha pogut mapar el fitxer arxiu de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "no s'ha pogut blocar el nou arxiu"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "no s'ha pogut estendre el fitxer arxiu de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "no s'ha pogut canviar el mode de l'arxiu de locales redimensionat"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "no s'ha pogut reanomenar el nou arxiu"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "no s'ha pogut obrir l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "ha fallat stat() sobre l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "no s'ha pogut blocar l'arxiu «%s» de locales"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "no s'ha pogut llegir la capçalera de l'arxiu"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "el locale «%s» ja existeix"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "no s'ha pogut afegir a l'arxiu de locales"
-
- # ivb (2002/10/21)
- # ivb El fitxer conté àlies de diversos locales (locale.alias).
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "no s'ha trobat el fitxer «%s» d'àlies de locales"
-
- # ivb (2002/10/21)
- # ivb És un missatge, no un error.
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "S'està afegint «%s»\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "ha fallat stat() sobre «%s»: %s: es descarta"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "«%s» no és un directori: es descarta"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "no s'ha pogut obrir el directori «%s»: %s: es descarta"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "el joc de fitxers de locale en «%s» no és complet"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "no s'han pogut llegir tots els fitxers de «%s»: es descarta"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "el locale «%s» no es troba en l'arxiu"
-@@ -1687,8 +1687,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "el límit superior del rang no és menor que l'inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "la memòria s'ha exhaurit"
-
-@@ -1714,7 +1714,7 @@
- msgid "Another string for testing."
- msgstr "Altra cadena de prova."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOM"
-
-@@ -1758,7 +1758,7 @@
- msgid "duplicate set definition"
- msgstr "la definició del joc de missatges és duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "aquesta és la primera definició"
-
-@@ -1776,44 +1776,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "la directiva «%s» no és coneguda: es descarta la línia"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "el número de missatge és duplicat"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "l'identificador de missatge és duplicat"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "el caràcter no és vàlid: es descarta el missatge"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "la línia no és vàlida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "es descarta la línia malmesa"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "no s'ha pogut obrir el fitxer d'eixida «%s»"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "el missatge no és terminat"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "en obrir el fitxer antic de catàleg"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "els mòduls de conversió no es troben disponibles"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "no s'ha pogut determinar el caràcter d'escapada"
-
-@@ -1821,7 +1821,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: no es poden tractar més de 8 arguments\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Èxit"
-@@ -3024,23 +3024,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSenyal desconegut %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "la memòria és consistent; la biblioteca té errors\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "s'ha sobreescrit la memòria d'abans del bloc reservat\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "s'ha sobreescrit la memòria de després del bloc reservat\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "s'ha alliberat el bloc dues voltes\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "el valor d'«mcheck_status» és estrany; la biblioteca té errors\n"
-
-@@ -3076,6 +3076,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FITXERDADES [FITXEREIXIDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Error desconegut"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3102,7 +3106,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: La memòria s'ha exhaurit: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Error desconegut del sistema"
-
-@@ -3507,27 +3511,23 @@
- msgid "Interrupted by a signal"
- msgstr "Interromput per un senyal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Error desconegut"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Forma d'ús: %s [-v especificació] nom_de_la_variable [camí]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "l'especificació «%s» no és coneguda"
-
- # ivb (2001/11/01)
- # ivb Es refereix a variables de configuració -> femení.
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "indefinida"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "La variable «%s» no és reconeguda"
-@@ -3589,71 +3589,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: l'opció «-W %s» no admet arguments\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "No hi ha cap coincidència"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "L'expressió regular no és vàlida"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "El caràcter d'ordenació no és vàlid"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "El nom de la classe de caràcters no és vàlid"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Hi ha una barra invertida sobrant al final"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "La referència cap enrere no és vàlida"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ o [^ desaparellat"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( o \\( desaparellat"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ desaparellat"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "El contingut de \\{\\} no és vàlid"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "El final del rang no és vàlid"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "La memòria s'ha exhaurit"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "L'expressió regular precedent és incorrecta"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fí prematur de l'expressió regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "L'expressió regular és massa llarga"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") o \\) desaparellat"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "No hi ha expressió regular prèvia"
-
-@@ -3812,24 +3812,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuració a usar del servei"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "No es suporta l'enumeració sobre «%s»\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obté les entrades de les bases de dades d'administració."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de dades suportades:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "el nombre d'arguments és incorrecte"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "La base de dades no és coneguda: %s\n"
-@@ -3866,70 +3866,74 @@
- msgid "invalid pointer size"
- msgstr "el tamany del punter no és vàlid"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: No s'ha pogut reservar memòria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Tots els ports estan sent usats\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "connexió amb l'adreça «%s»: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "S'està provant amb «%s»...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (en preparar l'eixida estàndard d'errors): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (en preparar l'exida estàndard d'errors): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallada del protocol en configurar el circuit\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallada del protocol en configurar el circuit\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura incompleta"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "ha fallat lstat()"
-
- # ivb (2001/10/31)
- # ivb Cal tenir en compte que «ordinary» a l'anglés és cosa pler diferent ;)
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "no és un fitxer ordinari"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "no s'ha pogut obrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "ha fallat fstat()"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "el propietari no és vàlid"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "és modificable per altres que no en són el propietari"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "té un enllaç fort en altre lloc"
-
-@@ -4146,109 +4150,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "No s'ha pogut rebre una resposta a la difusió"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: l'eixida sobreescriuria «%s»\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: no s'ha pogut obrir «%s»: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: en escriure en l'eixida «%s»: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "no s'ha pogut trobar el preprocessador de C: %s\n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "no s'ha pogut trobar cap preprocessador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: el preprocessador de C ha fallat amb el senyal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: el preprocessador de C ha fallat amb el codi d'eixida %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "el tipus de xarxa no és permés: «%s»\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: hi ha massa definicions\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: error en codificar els arguments\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "el fitxer «%s» ja existeix i podria ser sobreescrit\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "No es pot especificar més d'un fitxer d'entrada!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Aquesta implementació no suporta l'estil nou ni el codi compatible amb MT!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "No es pot usar l'opció idxarxa (-n) amb l'opció inetd (-I)!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "No es pot usar l'opció idxarxa (-n) sense TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "No es pot usar opcions de taula amb l'estil nou (-N)!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "cal «fitxerentrada» pels senyaladors de generació de plantilles.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "No es pot tenir més d'un senyalador de generació de fitxers!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "Forma d'ús: %s fitxerentrada\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnom[=valor]] [-i tamany] [-I [-K segons]] [-Y camí] fitxerentrada\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fitxereixida] [fitxerentrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tipusdexarxa]* [-o fitxereixida] [fitxerentrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n idxarxa]* [-o fitxereixida] [fitxerentrada]\n"
-@@ -5126,7 +5130,7 @@
- msgid "while allocating hash table entry"
- msgstr "en reservar una entrada en la taula de dispersió"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "ha fallat stat() sobre el fitxer «%s»: %s"
-@@ -5139,27 +5143,32 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "no es pot executar «nscd» en mode segur com a usuari sense privilegis"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "en reservar la memòria cau: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "no s'ha pogut obrir el connector: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "no s'ha pogut habilitar el connector per acceptar connexions: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: s'ha rebut una petició (Versió = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "no s'ha pogut atendre la petició amb versió antiga %d; la versió actual és %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "no s'ha pogut escriure el resultat: %s"
-@@ -5169,130 +5178,130 @@
- # ivb dimoni «nscd» per consultar la memòria cau o invalidar-la. Per
- # ivb això faig servir «programa de control» (com «ndc» amb «named» o
- # ivb «chronyc» amb «chronyd»).
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "error en obtenir l'identificador del programa de control: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "en acceptar la connexió: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura incompleta en llegir la petició: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "la longitud de la clau de la petició és massa gran: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "lectura incompleta en llegir la clau de la petició: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "No s'ha pogut executar «nscd» com a l'usuari «%s»"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "ha fallat getgrouplist()"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "ha fallat setgroups()"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "en reservar una còpia de la clau"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "en reservar una entrada en la memòria cau"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escriptura incompleta en «%s»: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau de grups!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "«%s» no és un gid numèric vàlid!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "No s'ha trobat «%d» en la memòria cau de grups!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau d'estacions!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Llig les dades de configuració de NOM"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "No fa fork() i mostra els missatges en el terminal actual"
-
- # ivb (2001/10/30)
- # ivb Es refereix al _nombre_ de fils a llançar.
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NOMBRE"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Llança NOMBRE fils d'exeució"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Termina el servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Mostra estadístiques de la configuració actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TAULA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida la memòria cau especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TAULA,yes"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Usa una memòria cau diferent per cada usuari"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Dimoni de memòria cau del servei de noms."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "ja es troba en marxa"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Només root pot usar aquesta opció!"
-
-@@ -5382,22 +5391,22 @@
- "%15ld%% ràtio d'encerts de memòria cau\n"
- "%15s comprovar /etc/%s per si hi ha hagut canvis?\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "No s'ha trobat «%s» en la memòria cau d'usuaris!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "«%s» no és un uid numèric vàlid!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "No s'ha trobat «%d» en la memòria cau d'usuaris!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "no s'ha pogut crear la llista de capacitats"
-
-@@ -5454,7 +5463,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI del SO: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "No s'ha pogut obrir el fitxer «%s» de memòria cau\n"
-@@ -5500,19 +5509,19 @@
- msgid "Renaming of %s to %s failed"
- msgstr "No s'ha pogut reanomenar «%s» a «%s»"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "l'objecte compartit no és obert"
-
- # ivb (2002/10/29)
- # ivb TLS = Thread Local Storage
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "El comptador de generació de TLS s'ha esgotat! Per favor, envieu un informe amb el guió «glibcbug»."
-
- # ivb (2001/11/05)
- # ivb DST = Dynamic String Token (component cadena dinàmica)
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "no es permeten components cadena dinàmica (DST) en programes SUID/SGID"
-
-@@ -5531,183 +5540,195 @@
- msgid "cannot allocate dependency list"
- msgstr "no s'ha pogut reservar la llista de dependències"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "no s'ha pogut reservar la llista de recerca de símbols"
-
- # ivb (2002/10/21)
- # ivb LD_TRACE_PRELINKING és una variable d'entorn, no és part del filtre.
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Amb LD_TRACE_PRELINKING no es suporten els filtres"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "ERROR EN L'ENLLAÇADOR DINÀMIC!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "error en carregar les biblioteques dinàmiques"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "no s'ha pogut reservar el registre de nom"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "no s'ha pogut crear la memòria cau dels camins de recerca"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "no s'ha pogut crear una còpia de RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "no s'ha pogut crear el vector de camins de recerca"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "ha fallat stat() sobre l'objecte compartit"
-
- # ivb (2001/10/28)
- # ivb Es refereix a /dev/zero .
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "no s'ha pogut obrir el dispositiu de zeros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "no s'ha pogut crear el descriptor d'objecte compartit"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "no s'han pogut llegir les dades del fitxer"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "L'alineament de l'ordre ELF de càrrega no està alineada amb la pàgina"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "L'adreça/desplaçament de l'ordre ELF de càrrega no està correctament alineada"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "no s'han pogut reservar les estructures de dades TLS pel fil inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "no es pot tractar amb dades TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "no s'ha pogut mapar un segment de l'objecte compartit"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "no s'ha pogut carregar dinàmicament l'executable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "no s'han pogut canviar les proteccions de memòria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "no s'han pogut mapar les pàgines plenes de zeros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "no s'ha pogut reservar memòria per la capçalera del programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "el fitxer objecte no té secció dinàmica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "ha fallat dlopen() sobre l'objecte compartit"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "no s'ha pogut crear la llista de recerca"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "el fitxer és massa curt"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "la capçalera ELF no és vàlida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "La codificació de les dades del fitxer ELF no és big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "La codificació de les dades del fitxer ELF no és little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "La identificació de la versió del fitxer ELF no concorda amb l'actual"
-
- # ivb (2001/11(06)
- # ivb ABI = Application Binary Interface (interfície binària d'aplicació)
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "L'ABI de sistema operatiu del fitxer ELF no és vàlida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "La versió de l'ABI del fitxer ELF no és vàlida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "error intern"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "La versió del fitxer ELF no concorda amb l'actual"
-
- # ivb (2001/11/01)
- # ivb La traducció completa de «phentsize» vindria a ser: tamany d'entrada
- # ivb de taula de la capçalera de programa.
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "El valor de «phentsize» del fitxer ELF no és l'esperat"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "només es poden carregar els tipus ET_DYN i ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "no s'ha pogut obrir el fitxer objecte compartit"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "error de reubicació"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "no s'ha pogut estendre l'àmbit global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "la substitució del component cadena dinàmica és buida"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "no s'ha pogut crear la llista d'àmbits"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "no s'han pogut crear les estructures de dades TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "el mode de dlopen() no és vàlid"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "ha fallat dlopen() sobre l'objecte compartit: la memòria TLS estàtica és massa menuda"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "no s'ha pogut fer escrivible el segment per reubicar-lo"
-
- # ivb (2002/10/21)
- # ivb PLT = Procedure Linkage Table, Taula d'Enllaçat de Procediments
- # ivb PLTREL = tipus de reubicació usada per la PLT
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: el perfilador no ha trobat el PLTREL de l'objecte «%s»\n"
-@@ -5715,12 +5736,12 @@
- # ivb (2002/10/29)
- # ivb Açò és un cacau, però pense que ací hauria de posar PLT i no PLTREL.
- # ivb Total, qui ho va a llegir?
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: el perfilador ha exhaurit la memòria en calcular el PLTREL de «%s»\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "no s'ha pogut restaurar la protecció del segment després de reubicar-lo"
-
-@@ -5776,123 +5797,123 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura els vincles en temps d'execució de l'enllaçador dinàmic."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "S'ha especificat el camí «%s» més d'una volta"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "«%s» no és un tipus conegut de biblioteca"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Ha fallat stat() sobre «%s»"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Ha fallat stat() sobre «%s»\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "«%s» no és un enllaç simbòlic\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "No s'ha pogut desenllaçar «%s»"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "No s'ha pogut crear un enllaç des de «%s» cap a «%s»"
-
- # ivb (2001/10/28)
- # ivb Es refereix a un enllaç -> masculí.
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (canviat)\n"
-
- # ivb (2001/10/28)
- # ivb Es refereix a fer o no l'enllaç, no importa el gènere.
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (SALTAT)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "No s'ha pogut trobar «%s»"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Ha fallat lstat() sobre «%s»"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Es descarta el fitxer «%s» que no és un fitxer ordinari."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "No s'ha creat l'enllaç perquè no s'ha trobat el nom d'objecte compartit de «%s»"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "No s'ha pogut obrir el directori «%s»"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Ha fallat lstat() sobre «%s»"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Ha fallat stat() sobre «%s»"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "No s'ha trobat el fitxer d'entrada «%s».\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "la bibliotexa «%s» per libc5 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "la biblioteca «%s» per libc6 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "la biblioteca «%s» per libc4 es troba en un directori incorrecte"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d'objecte compartit però diferent tipus."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "No s'ha pogut obrir el fitxer «%s» de configuració"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "No s'ha pogut canviar al directori /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "No s'ha pogut obrir el directori «%s» de fitxers de memòria cau\n"
-@@ -6005,12 +6026,3 @@
- #: elf/sprof.c:936 elf/sprof.c:988
- msgid "cannot allocate symbol data"
- msgstr "no s'han pogut reservar les dades de símbols"
--
--#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
--#~ msgstr "\t\t\t\t\t\t\t %s: el valor del camp «%s» ha d'estar en el rang %d...%d"
--
--#~ msgid "Failed to look up user '%s' to run server as"
--#~ msgstr "Ha fallat la recerca de l'usuari «%s», com a qui executar el servidor"
--
--#~ msgid "no filename for profiling data given and shared object `%s' has no soname"
--#~ msgstr "no s'ha especificat un fitxer de dades de perfilat i «%s» no té nom d'objecte compartit"
-Binary files glibc-2.3.2/po/cs.mo and glibc-2.3.2-200304020432/po/cs.mo differ
-Binary files glibc-2.3.2/po/da.mo and glibc-2.3.2-200304020432/po/da.mo differ
-diff -u -udbrN glibc-2.3.2/po/da.po glibc-2.3.2-200304020432/po/da.po
---- glibc-2.3.2/po/da.po Mon Nov 11 00:14:07 2002
-+++ glibc-2.3.2-200304020432/po/da.po Mon Mar 10 00:17:53 2003
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-11-09 20:18+01:00\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-08 20:18+01:00\n"
- "Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
- "Language-Team: Danish <dansk@klid.dk>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "konverteringer fra '%s' og til '%s' er ikke understøttet"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "konvertering fra '%s' og til '%s' er ikke understøttet"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "fejl ved lukning af udfil"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Rapportér fejl ved at bruge skriptet 'glibcbug' til <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -306,9 +306,9 @@
- "Programmellet har ingen garanti, ikke en gang for SALGBARHED eller EGNETHED\n"
- "TIL NOGEN SPECIEL OPGAVE.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Præfiks brugt for alle filadgange"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "på grund af advarsler blev ingen udfil oprettet"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "fejl ved indsætning i søgetræ"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "kan ikke generere udfil"
-
-@@ -1280,7 +1280,7 @@
- msgid "unterminated symbolic name"
- msgstr "uafsluttet symbolsk navn"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "ugyldig undtagelsessekvens"
-
-@@ -1310,39 +1310,39 @@
- msgid "trailing garbage at end of line"
- msgstr "efterfølgende snavs på slutningen af linien"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systeminformation:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Skriv navnene til tilgængelige lokaler"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Skriv navnene til tilgængelige tegntabel"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Ændre format for uddata:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Skriv navnene til valgte kategorier"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Skriv navnene til valgte nøgleord"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Skriv mere information"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hent information specifik for lokalet."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1350,7 +1350,7 @@
- "NAVN\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "da uddata blev forberedt"
-
-@@ -1481,16 +1481,16 @@
- msgid "cannot create temporary file"
- msgstr "Kan ikke oprette midlertidig fil"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "kan ikke initiere arkivfil"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "kan ikke skifte størrelse på arkivfil"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "kan ikke læse arkivhoved med mmap"
-
-@@ -1506,88 +1506,88 @@
- msgid "cannot map locale archive file"
- msgstr "kan ikke åbne lokalearkivfil med mmap"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "kan ikke låse nyt arkiv"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "kan ikke udvide lokalearkivfil"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "kan ikke ændre adgangtilstand på størrelsesændret lokalearkiv"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "kan ikke omdøbe nyt arkiv"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "kan ikke åbne lokalearkiv \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "kan ikke udføre 'stat' på lokalearkiv '%s'"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "kan ikke låse lokalearkiv '%s'"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "kan ikke læse arkivhoved"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "lokale '%s' eksisterer allerede"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "kan ikke tilføje til lokalearkiv"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "fil \"%s\" for lokalealias findes ikke"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Tilføjer %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "status på \"%s\" mislykkedes: %s: ignoreret"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" er ikke et katalog, ignoreret"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "kan ikke åbne katalog \"%s\": %s: ignoreret"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "ufuldstændig opsætning af lokalefiler i \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kan ikke læse alle filer i \"%s\": ignoreret"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "lokale \"%s\" findes ikke i arkivet"
-@@ -1656,8 +1656,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "øvre grænse i område er ikke mindre end nedre grænse"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "lageret opbrugt"
-
-@@ -1683,7 +1683,7 @@
- msgid "Another string for testing."
- msgstr "En ny streng til afprøvning."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NAVN"
-
-@@ -1727,7 +1727,7 @@
- msgid "duplicate set definition"
- msgstr "duplikeret definition af sæt"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "dette er den første definition"
-
-@@ -1745,44 +1745,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "ukendt nøgleord '%s': linie ignoreret"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "duplikeret meddelelsesnummer"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "duplikeret meddelelsesidentifikator"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "Ugyldigt tegn: besked ignoreret"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "ugyldig linje"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "fejlagtig linie ignoreret"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "kan ikke åbne udfil '%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "uafsluttet meddelelse"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "da den gamle katalogfil blev åbnet"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "konverteringsmoduler ikke tilgængelige"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "kan ikke bestemme undvigetegn"
-
-@@ -1790,7 +1790,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: véd ikke hvordan mere end 8 argumenter skal behandles\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Succes"
-@@ -2979,23 +2979,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sUkendt signal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "lageret er konsistent, biblioteket er fejlbehæftet\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "området foran tildelt lagerblok snavset til\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "området efter tildelt lagerblok snavset til\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok frigjort to gange\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "fejlagtig mcheck_status, biblioteket er fejlbehæftet\n"
-
-@@ -3031,6 +3031,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFIL [UDFIL]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Ukendt fejl"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3055,7 +3059,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Lageret opbrugt: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Ukendt systemfejl"
-
-@@ -3448,25 +3452,21 @@
- msgid "Interrupted by a signal"
- msgstr "Afbrudt af et signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Ukendt fejl"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Brug: %s [-v specifikation] variabelnavn [søgesti]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "ukendt specifikation '%s'"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "udefineret"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Ukendt variabel '%s'"
-@@ -3528,71 +3528,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: flaget '-W %s' tager ikke argumenter\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ingen træf"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Ugyldigt regulært udtryk"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Ugyldigt sammenligningstegn"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Ugyldigt tegnklassenavn"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Efterfølgende backslash"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Ugyldig tilbage-reference"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Ubalanceret [ eller [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Ubalanceret ( eller \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Ubalanceret \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Ugyldig brug af \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Ugyldigt intervalslut"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Lageret opbrugt"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Ugyldigt foregående regulært udtryk"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "For tidlig afslutning på regulært udtryk"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Regulært udtryk for stort"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Ubalanceret ) eller \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Intet foregående regulært udtryk"
-
-@@ -3746,24 +3746,24 @@
- msgid "Service configuration to be used"
- msgstr "Tjenestekonfiguration som skal bruges"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Enumeration er ikke understøttet på %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hent indtastninger fra administrativ database."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Understøttede databaser:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "galt antal argumenter"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Ukendt database: %s\n"
-@@ -3792,68 +3792,72 @@
- msgid "invalid pointer size"
- msgstr "ugyldig størrelse for pegere"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Kan ikke tildele lager\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: sokkel: Alle porte i brug\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "koble til adresse %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Prøver %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write: (opsætter standard error): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (opsætter stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokolfejl i opsætning af forbindelse\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "sokkel: protokolfejl i opsætning af forbindelse\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: kort indlæsning"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat fejlede"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "ikke en almindelig fil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "kan ikke åbne"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat fejlede"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "forkert ejer"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "skrivbar af andre end ejer"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hårdlænket et eller andet sted"
-
-@@ -4064,109 +4068,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Kan ikke tage imod svar på rundsending"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: udskrift ville overskrive %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: kan ikke åbne %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: under skrivning af uddata %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "kan ikke finde C-præprocessor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "kan ikke finde nogen C-præprocessor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C-præprocessoren fejlede med signal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C-præprocessoren fejlede med slutkode %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "ulovlig nettype: '%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: for mange definitioner\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: arglist kode-fejl\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "filen '%s' eksisterer allerede og kan blive overskrevet\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Kan ikke specificere mere end én indfil!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Denne implementation understøtter ikke nystil eller MT-sikker kode!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Kan ikke bruge netid-flag med inetd-flag!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Kan ikke bruge netid-flag uden TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Kan ikke bruge tabelflag med ny stil!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "'indfil' er nødvendig for flag til at generere skabelon.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Kan ikke have mere end et fil-genereringsflag!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "brug: %s indfil\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM] [-Dnavn[=værdi]] [-i størrelse] [-I [-K sekunder]] [-Y søgesti] indfil\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o udfil] [indfil]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nettype]* [-o udfil] [indfil]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o udfil] [indfil]\n"
-@@ -5024,7 +5028,7 @@
- msgid "while allocating hash table entry"
- msgstr "under allokering af hashtabel-indtastninger"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "kan ikke udføre stat() på fil '%s': %s"
-@@ -5037,153 +5041,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Kan ikke køre nscd i sikker tilstand som upriviligieret bruger"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "under allokering af buffer: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "kan ikke åbne sokkel: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "kan ikke få sokkel til at acceptere forbindelser: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: forespørgsel modtaget (version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "kan ikke håndtere gammel forespørgsel af version %d. Nuværende version er %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "kan ikke udskrive resultat: '%s'"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "fejl ved forespørgsel på opkaldets id: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "under accept af forbindelse: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "afkortet læsning ved læsning af forespørgsel: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "nøglelængde i forespørgsel for lang: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "afkortet læsning ved læsning af forespørgsels-nøgle: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Kunne ikke køre nscd som bruger \"%s\""
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist mislykkedes"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups mislykkedes"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "under allokering af nøglekopi"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "under allokering af nærbuffer-indtastninger"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "afkortet skrivning i %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Har ikke fundet '%s' i gruppe-nærbuffer!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Ugyldigt numerisk gruppe-id (gid) \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Har ikke fundet '%d' i gruppe-nærbuffer!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Har ikke fundet '%s' i værts-nærbuffer!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Læs konfigurationsdata fra NAVN"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Udspalt ikke ny proces og vis meddelelser på nuværende tty"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NUMMER"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Start ANTAL tråde"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Afbryd tjeneren"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Skriv nuværende konfigurationsstatistik ud"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABEL"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Ugyldiggør den opgivne hurtigbuffer"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABEL,ja"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Brug separat buffer for hver bruger"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Dæmon for bufring af navnetjeneste"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "kører allerede"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Kun 'root' har lov til at bruge dette flag!"
-
-@@ -5273,22 +5282,22 @@
- "%15ld%% træfrate for hurtigbuffer\n"
- "%15s tjek /etc/%s for ændringer\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Har ikke fundet '%s' i adgangskode-nærbuffer!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Ugyldig numerisk bruger-id (uid) \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Har ikke fundet '%d' i adgangskode-nærbuffer!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kan ikke oprette egenskabsliste"
-
-@@ -5339,7 +5348,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Kan ikke åbne hurtigbufferfil %s\n"
-@@ -5385,17 +5394,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Omdøbning af %s til %s fejlede"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "delt objekt er ikke åbent"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "Generationstæller for TLS tilbagestillet! Vær sød at indsende fejlrapport med\n"
- "\"glibcbug\"-skriptet"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST er ikke tilladt i SUIT/SGID-programmer"
-
-@@ -5414,181 +5423,193 @@
- msgid "cannot allocate dependency list"
- msgstr "kan ikke allokere afhængighedsliste"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "kan ikke allokere symbolsøgningsliste"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filter understøttes ej med LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "FEJL I DYNAMISK LÆNKER!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "fejl da delte biblioteker indlæstes"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "Kan ikke allokere navnepost"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Kan ikke oprette buffer for søgesti"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "kan ikke oprette RUNPATH/RPATH kopi"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "kan ikke oprette tabel over søgestier"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "kan ikke tage status på delt objekt"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "kan ikke åbne nulstil-enhed"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "kan ikke oprette delt objektbeskriver"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "kan ikke indlæse fildata"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-indlæsningskommandos tilpasning er ikke tilpasset siden"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF-indlæsningskommandos adresse/tillæg er ikke tilpasset ordentligt"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "kan ikke oprette TLS-datastrukturer for første tråd"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "kan ikke behandle TLS-data"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "klarede ikke at afbilde fra delt objekt'"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "kan ikke indlæse udførbare dynamisk"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "kan ikke ændre lagerbeskyttelser"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "kan ikke mappe nulstil-sider"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Kan ikke allokere lager til programhoved"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektfil har ingen dynamisk sektion"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "delt objekt kan ikke åbnes med dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "kan ikke læse søgningsliste"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "For kort fil"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ugyldigt ELF-hoved"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kodning for ELF-fildata er ikke \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kodning for ELF-fildata er ikke \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-filens version-identitet passer ikke med den aktuelle"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-filens OS ABI er ugyldig"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-filens ABI-version er ugyldig"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "Intern fejl"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-filens version passer ikke med den aktuelle"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-filens 'phentsize' er ikke den forventede størrelse"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "kun ET_DYN og ET_EXEC kan indlæses"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "kan ikke åbne delt objektfil"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "fejl ved relokering"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "Kan ikke udvide globalt defineringområde"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "tom dynamisk strengelement-erstatning"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "kan ikke oprette omfangsliste"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "kan ikke oprette datastrukturer for TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "ugyldig modus for dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "delt objekt kan ikke åbnes med dlopen(): statisk TLS-hukommelse for lille"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "Kan ikke gøre segment skrivbart for omflytning"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profilereren fandt ingen PLTREL i objekt %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profilereren fik slut på hukommelse for kopiering af PLTREL i %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "kan ikke genskabe segmentbeskyttelse efter omflytning"
-
-@@ -5644,119 +5665,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurerer værdier til Dynamisk Lænker"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Stien '%s' givet mere end én gang"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s er ikke en kendt bibliotekstype"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Kan ikke stat() %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Kan ikke stat() %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s er ikke en symbolsk lænke\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Kan ikke aflænke %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Kan ikke lænke %s til %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (ændret)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (UDELADT)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Kan ikke finde %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Kan ikke lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorerede filen %s da den ikke er en almindelig fil."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Kan ikke åbne katalog %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Kan ikke lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Kan ikke stat() %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Indputfilen %s ikke fundet\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-bibliotek %s i forkert katalog"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type"
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Kan ikke åbne konfigurationsfil %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Kan ikke chdir til /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Kan ikke åbne hurtigbufferkatalog %s\n"
-Binary files glibc-2.3.2/po/de.mo and glibc-2.3.2-200304020432/po/de.mo differ
-Binary files glibc-2.3.2/po/el.mo and glibc-2.3.2-200304020432/po/el.mo differ
-Binary files glibc-2.3.2/po/en_GB.mo and glibc-2.3.2-200304020432/po/en_GB.mo differ
-Binary files glibc-2.3.2/po/es.mo and glibc-2.3.2-200304020432/po/es.mo differ
-diff -u -udbrN glibc-2.3.2/po/es.po glibc-2.3.2-200304020432/po/es.po
---- glibc-2.3.2/po/es.po Mon Nov 4 07:56:19 2002
-+++ glibc-2.3.2-200304020432/po/es.po Mon Mar 3 19:12:33 2003
-@@ -1,13 +1,13 @@
- # Mensajes en español para GNU libc.
--# Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
-+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
- # Enrique Melero Gómez <melero@eurolands.com>, 1996, 1997.
--# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002.
-+# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002, 2003.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: GNU libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-11-02 16:52+0100\n"
-+"Project-Id-Version: GNU libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 17:20+0100\n"
- "Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
- "Language-Team: Spanish <es@li.org>\n"
- "MIME-Version: 1.0\n"
-@@ -301,8 +301,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "no se admiten conversiones de `%s' a `%s'"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "no se admite la conversión de `%s' a `%s'"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -327,15 +327,15 @@
- msgid "error while closing output file"
- msgstr "error al cerrar el fichero de salida"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Comunicar bichos usando el programa `glibcbug' a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -348,9 +348,9 @@
- "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n"
- "FIN DETERMINADO.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -409,15 +409,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefijo utilizado para todos los accesos a ficheros"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "no se ha producido ningún fichero de salida debido a la existencia de avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "al insertar en el árbol de búsqueda"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "no se puede generar el fichero de salida"
-
-@@ -1368,7 +1368,7 @@
- msgid "unterminated symbolic name"
- msgstr "nombre simbólico sin terminar"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "secuencia de escape inválida"
-
-@@ -1398,39 +1398,39 @@
- msgid "trailing garbage at end of line"
- msgstr "hay inconsistencias al final de la línea"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Información del sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Escribe los nombres de los locales disponibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Escribe los nombres de las asignaciones de caracteres disponibles"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifica el formato de salida:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Escribe los nombres de las categorías seleccionadas"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Escribe los nombres de las palabras clave seleccionadas"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Muestra más información"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obtiene la información específica del locale."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1438,7 +1438,7 @@
- "NOMBRE\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "al preparar la salida"
-
-@@ -1571,16 +1571,16 @@
- msgid "cannot create temporary file"
- msgstr "no se puede crear un fichero temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "no se puede inicializar el archivo"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "no se puede cambiar el tamaño del archivo"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "no se puede leer la cabecera del archivo"
-
-@@ -1596,88 +1596,88 @@
- msgid "cannot map locale archive file"
- msgstr "no se puede leer el fichero de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "no se puede bloquear el archivo nuevo"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "no se puede extender el archivo de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "no se puede cambiar el modo de un archivo de locales redimensionado"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "no se puede renombrar el nuevo archivo"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "no se puede abrir el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "no se puede efectuar `stat' sobre el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "no se puede bloquear el archivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "no se puede leer la cabecera del archivo"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "el local `%s' ya existe"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "no se puede añadir al archivo de locales"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "no se encontró el fichero de alias de locales `%s'"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Añadiendo %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "falló la llamada a `stat' sobre \"%s\": %s: descartado"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" no es un directorio; descarrtado"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "no se puede abrir el directorio \"%s\": %s: descartado"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "conjunto incompleto de ficheros de locales en \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "no se pueden leer todos los ficheros de \"%s\": descartado"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "el local \"%s\" no está en el archivo"
-@@ -1749,8 +1749,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "el límite superior del rango no es menor que el límite inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "memoria agotada"
-
-@@ -1793,7 +1793,7 @@
- msgid "Another string for testing."
- msgstr "Otra cadena para hacer pruebas."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOMBRE"
-
-@@ -1839,7 +1839,7 @@
- msgid "duplicate set definition"
- msgstr "definición de conjunto duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "esta es la primera vez que aparece la definición"
-
-@@ -1860,44 +1860,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "directiva desconocida `%s': línea pasada por alto"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "número de mensaje duplicado"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "identificador de mensaje duplicado"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "carácter inválido: mensaje descartado"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "línea inválida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "una línea incorrecta no se tendrá en cuenta"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "no se puede abrir el fichero de salida `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "mensaje sin terminar"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "al abrir el fichero de catálogo antiguo"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "no están disponibles los módulos de conversión"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "no se puede determinar el carácter de escape"
-
-@@ -1909,7 +1909,7 @@
- # me gustaría que hubiera otra palabra mejor. SV
- # Siempre me han gustado F&C ;-)
- # A mí también :-) sv
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Conseguido"
-@@ -3316,24 +3316,24 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSeñal desconocida %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "la memoria es consistente, la biblioteca tiene un bicho\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "memoria alterada antes del bloque de memoria asignado\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "memoria alterada pasado el final del bloque de memoria asignado\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "bloque liberado dos veces\n"
-
- # Revisar lo de bogus. creo que es eso.
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "valor de mcheck_status incorrecto, la biblioteca tiene un bicho\n"
-
-@@ -3372,6 +3372,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FICHERODEDATOS [FICHERODESALIDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Error desconocido"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3396,7 +3400,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Memoria agotada: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Error del sistema desconocido"
-
-@@ -3855,25 +3859,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrumpido por una señal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Error desconocido"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Modo de empleo: %s [-v especificación] nombre_de_variable [ruta]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "especificación \"%s\" desconocida"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "sin definir"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable no reconocida `%s'"
-@@ -3949,71 +3949,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "No hay ninguna coincidencia"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "La expresión regular es errónea"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Carácter de unión inválido"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nombre de clase de carácter inválido"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barra invertida extra al final `\\'"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Referencia hacia atrás inválida"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ó ^[ desemparejados"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ó \\( desemparejados"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ desemparejado"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contenido de \\{\\} inválido"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Final de rango inválido"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Memoria agotada"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "La expresión regular precedente es inválida"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fin no esperado de la expresión regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "La expresión regular es demasiado grande"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ó \\) desemparejados"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "No existe ninguna expresión regular anterior"
-
-@@ -4174,24 +4174,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuración del servicio"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "La enumeración no está soportada sobre %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obtiene entradas de la base de datos administrativa."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de datos admitidas:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "número incorrecto de argumentos"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de datos desconocida: %s\n"
-@@ -4221,77 +4221,81 @@
- msgid "invalid pointer size"
- msgstr "tamaño de puntero inválido"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: No se puede asignar memoria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Se están usando todos los puertos\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "conexión a la dirección %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Intentando %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (activando la salida de error estándar): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (activando la salida de error estándar): %m\n"
-
- # ¿en la configuración del servicio?, ¿del circuito?, ¿o dejarlo así?
- # Es de locos, estuve viendo las/los fuentes, preferí dejarlo así. em
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallo de protocolo al configurar el circuito\n"
-
- # ??? lo mismo que arriba
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallo de protocolo al configurar el circuito\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura insuficiente"
-
- # ## Lo mismo con lstat. sv
- # Antes decía: No se pudo obtener información (lstat) del fichero .rhosts
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat ha fallado"
-
- # Antes decía: .rhosts no es un fichero regular
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "no es un fichero regular"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "no se puede abrir"
-
- # ## Sugerencia: Añadir (fstat) después de información. sv
- # Antes decía: No se pudo obtener información (fstat) del fichero .rhosts
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat ha fallado"
-
- # Antes decía: El propietario del fichero .rhosts no es válido
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "propietario incorrecto"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "puede ser modificado por otros además del propietario"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hay un enlace duro en alguna parte"
-
-@@ -4539,115 +4543,115 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "No se puede recibir la respuesta al `broadcast'"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: la salida sobreescribiría %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: no se pudo abrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: al escribir el resultado %s: %m:"
-
- # FIXME: El espacio final.
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "no se puede encontrar el preprocesador de C: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "no se puede encontrar ningún preprocesador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: El preprocesador de C falló con la señal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: El preprocesador de C falló con un código de retorno %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "tipodered ilegal :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: demasiados defines\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: error de codificación de la lista de argumentos\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "el fichero `%s' ya existe y podría ser sobreescrito\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "No se puede especificar más de un fichero de entrada\n"
-
- # Se admiten sugerencias para MT-safe. sv
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "¡Esta implementación no admite código de nuevo estilo o `MT-safe'!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "No se puede usar la opción netid con la opción inetd\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "No se puede usar la opción netid sin TIRPC\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "No se pueden usar las opciones de la tabla con el nuevo estilo\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr ""
- "se necesita un \"fichero_de_entrada\" para las opciones de generación\n"
- "de plantillas\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "No se puede tener más de una opción de generación de fichero\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "modo de empleo: %s fichero_de_entrada\n"
-
- # Este mensaje tal vez habría que cortarlo por algún lado. sv
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnombre[=valor]] [-i tamaño] [-I [-K segundos]] [-Y camino] fichero_de_entrada\n"
-
- # Y este también. sv
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichero_de_salida] [fichero_de_entrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tipored]* [-o fichero_de_salida] [fichero_de_entrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o fichero_de_salida] [fichero_de_entrada]\n"
-@@ -5549,7 +5553,7 @@
- msgid "while allocating hash table entry"
- msgstr "al asignar espacio para la entrada en la tabla `hash'"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "no se puede ejecutar stat() sobre el fichero `%s': %s"
-@@ -5562,155 +5566,160 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "No se puede ejecutar nscd en modo seguro como usuario no privilegiado"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "al asignar espacio para el caché: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "no se puede abrir el `socket': %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "no se puede activar el `socket' para aceptar conexiones: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: petición recibida (Versión = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr ""
- "no se pueden manejar peticiones de la versión %d, la versión\n"
- "actual es %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "no se puede escribir el resultado: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "error al obtener el id de los llamantes: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "al aceptar la conexión: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura insuficiente mientras se leía la petición: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "la longitud de la clave en la petición es demasiado larga: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "se acabaron los datos mientras se leía la clave de petición: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Fallo al ejecutar nscd como usuario `%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "falló `getgrouplist'"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "falló `setgroups'"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "al asignar espacio para la copia de la clave"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "al asignar espacio para la entrada en el caché"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escritura insuficiente en %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de grupos"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "¡gid numérico inválido \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "No se ha encontrado \"%d\" en el caché de grupo"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de `hosts'"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lee datos de configuración de NOMBRE"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "No se divide y muestra los mensajes en la terminal actual"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NÚMERO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Comienza NÚMERO hilos"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Apagar el servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Muestra una estadística sobre la configuración actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida la caché especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLA,sí"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Utiliza una caché separada para cada usuario"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Daemon de Caché del Servicio de Nombres."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "ya está funcionando"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Solamente root puede usar esta opción"
-
-@@ -5800,22 +5809,22 @@
- "%15ld%% tasa de aciertos de caché\n"
- "%15s compruebe /etc/%s para cambios\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "No se ha encontrado \"%s\" en el caché de contraseñas"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "¡uid numérico inválido \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "No se ha encontrado \"%d\" en el caché de contraseñas"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "no se puede crear la lista de capacidades"
-
-@@ -5867,7 +5876,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI del SO: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "No se puede abrir el fichero de caché %s\n"
-@@ -5914,17 +5923,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Falló el renombramiento de %s a %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "el objeto compartido no está abierto"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "¡El contador de generaciones TLS ha vuelto a cero! Por favor envíe un informe\n"
- "con el script 'glibcbug'"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "No se permite DST en programas SUID/SGID"
-
-@@ -5946,185 +5955,199 @@
- msgid "cannot allocate dependency list"
- msgstr "no se pudo asignar espacio para la lista de dependencias"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "no se puede asignar espacio para la lista de búsqueda de los símbolos"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "No se admiten filtros con LD_TRACE_PRELINKING"
-
- # Véase "A bug's life".
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "¡¡¡HAY UN BICHO EN EL ENLAZADOR DINÁMICO!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "error al cargar las bibliotecas compartidas"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "no se puede asignar el registro del nombre"
-
- # He intentado mejorarlo un poco ...
- #
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "no se puede crear un caché para la ruta de búsqueda"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "no se puede crear una copia RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "no se puede crear la matriz de la ruta de búsqueda"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "no se puede efectuar `stat' sobre el objeto compartido"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "no se puede abrir el dispositivo de `zero fill'"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "no se puede crear el descriptor del objeto compartido"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "no se pueden leer los datos del fichero"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "El alineamiento de la orden de carga ELF no está alineada a la página"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "La dirección/desplazamiento de la orden de carga ELF no está bien alineada"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "no se pueden crear las estructuras de datos TLS para el hilo inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "no se pueden manejar los datos de TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "fallo al asignar un segmento del objeto compartido"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "no se puede cargar el ejecutable dinámicamente"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "no se pueden cambiar las protecciones de memoria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "no se pueden asignar páginas de tipo `zero-fill'"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "no se puede asignar memoria para la cabecera del programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "el fichero objeto no tiene sección dinámica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "no se puede efectuar dlopen() sobre el objeto compartido"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "no se puede crear la lista de búsqueda"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "fichero demasiado corto"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "cabecera ELF inválida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "La codificación de los datos del fichero ELF no es `big-endian'"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "La codificación de los datos del fichero ELF no es `little-endian'"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "La identificación de versión del fichero ELF no encaja con la actual"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ABI del OS del fichero ELF inválida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Versión de ABI del fichero ELF inválida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "error interno"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "La versión del fichero ELF no coincide con la actual"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "El `phentsize' del fichero ELF no es el tamaño esperado"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "solamente pueden cargarse ET_DYN y ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "no se puede abrir el fichero del objeto compartido"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "error de relocalización"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "no se puede extender el ámbito global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "sustitución dinámica de un elemento por una cadena vacía"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "no se puede crear la lista de ámbito"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "no se pueden crear las estructuras de datos TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "modo inválido para dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr ""
-+"no se puede efectuar dlopen() sobre el objeto compartido: memoria estática TLS\n"
-+"demasiado pequeña"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "no se puede hacer el segmento escribible para su relocalización"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s el `profiler' no encontró ningún PLTREL en el objeto %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: el `profiler' se quedó sin memoria al ocultar el PLTREL de %s\n"
-
- # Se admiten sugerencias. sv
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "no se puede restaurar el `prot' del segmento después de la relocalización"
-
-@@ -6183,119 +6206,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura las asociaciones de tiempo de ejecución del enlazador dinámico"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Se ha dado la ruta `%s' más de una vez"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s no es un tipo de biblioteca conocido"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "No se puede efectuar `stat' sobre %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "No se puede efectuar `stat' sobre %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s no es un enlace simbólico\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "No se puede efectuar `unlink' sobre %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "No se puede crear un enlace de %s a %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (cambiado)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (SALTADO)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "No se encuentra %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "No se puede efectuar `lstat' sobre %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Descartado el fichero %s dado que no es un fichero regular."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "No se creó el enlace ya que no se encontró el soname para %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "No se puede abrir el directorio %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "No se puede efectuar `lstat' sobre %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "No se puede efectuar `stat' sobre %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "No se encontró el fichero de entrada %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "biblioteca libc5 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "biblioteca libc6 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "biblioteca libc4 %s en un directorio equivocado"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "las bibliotecas %s y %s en el directorio %s tienen el mismo soname pero distinto tipo."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "No se puede abrir el fichero de configuración `%s'"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "No se puede cambiar al directorio /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "No se puede leer el directorio de ficheros de caché %s\n"
-Binary files glibc-2.3.2/po/fi.mo and glibc-2.3.2-200304020432/po/fi.mo differ
-diff -u -udbrN glibc-2.3.2/po/fi.po glibc-2.3.2-200304020432/po/fi.po
---- glibc-2.3.2/po/fi.po Mon Dec 2 19:11:53 2002
-+++ glibc-2.3.2-200304020432/po/fi.po Sun Mar 9 18:47:01 2003
-@@ -1,11 +1,16 @@
- # Finnish messages for GNU libc.
--# Copyright © 2002 Free Software Foundation, Inc.
--# Lauri Nurmi <lanurmi@iki.fi>, 2002.
-+# Copyright © 2003 Free Software Foundation, Inc.
-+# Lauri Nurmi <lanurmi@iki.fi>, 2002, 2003.
- # Thanks to:
- # * Timo Laine <tila at surfeu.fi> for suggestions
- #
- # "locale" on suomennettu uudella sanalla "maa-asetusto".
- #
-+# Pitäisikö signaalien nimien olla aktiivissa vai passiivissa?
-+# esim. Terminated = Päättynyt vai Päätetty?
-+# Aborted = Keskeytynyt vai Keskeytetty?
-+#
-+#
- # (parempia) suomennosehdotuksia kaivataan sanoille:
- # exchange -- vaihto? (mitä ihmettä?)
- # ellipsis -- sanankatkaisu? ATK-sanakirja sanoo näin.
-@@ -13,9 +18,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-12-02 05:20+0300\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-08 21:53+0200\n"
- "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
- "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
-@@ -79,7 +84,7 @@
-
- #: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
- msgid "Terminated"
--msgstr "Päättynyt"
-+msgstr "Päätetty"
-
- #: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
- msgid "Urgent I/O condition"
-@@ -87,11 +92,11 @@
-
- #: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
- msgid "Stopped (signal)"
--msgstr "Pysähtynyt (signaali)"
-+msgstr "Pysäytetty (signaali)"
-
- #: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
- msgid "Stopped"
--msgstr "Pysähtynyt"
-+msgstr "Pysäytetty"
-
- #: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
- msgid "Continued"
-@@ -103,11 +108,11 @@
-
- #: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
- msgid "Stopped (tty input)"
--msgstr "Pysähtynyt (päätteen syöte)"
-+msgstr "Pysäytetty (päätteen syöte)"
-
- #: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
- msgid "Stopped (tty output)"
--msgstr "Pysähtynyt (päätteen tuloste)"
-+msgstr "Pysäytetty (päätteen tuloste)"
-
- #: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
- msgid "I/O possible"
-@@ -268,7 +273,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "muunnos \"%s\" <-> \"%s\" ei ole tuettu"
-
- #: iconv/iconv_prog.c:246
-@@ -294,7 +299,7 @@
- msgid "error while closing output file"
- msgstr "virhe suljettaessa tulostiedostoa"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -302,9 +307,9 @@
- "Ilmoita ohjelmistovirheistä \"glibcbug\"-skriptillä (englanniksi) osoitteeseen <bugs@gnu.org>.\n"
- "Suomennoksen virheistä voit ilmoittaa listalle <translation-team-fi@lists.sourceforge.net>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -316,9 +321,9 @@
- "Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n"
- "ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -370,15 +375,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Jokaisen tiedoston käsittelyssä käytettävä etuliite"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "tulostiedostoa ei tuotettu varoituksen takia"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "lisättäessä hakupuuhun"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "tulostiedostoa ei voi luoda"
-
-@@ -1288,7 +1293,7 @@
- msgid "unterminated symbolic name"
- msgstr "päättämätön symbolinen nimi"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "virheellinen ohjaussarja"
-
-@@ -1318,39 +1323,39 @@
- msgid "trailing garbage at end of line"
- msgstr "roskaa rivin lopussa"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Tietoa järjestelmästä:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Näytä käytettävissä olevien maa-asetustojen nimet"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Näytä käytettävissä olevien merkistökarttojen nimet"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Muuta tulostemuotoa:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Näytä valittujen kategorioiden nimet"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Näytä valittujen avainsanojen nimet"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Näytä lisää tietoa"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hae maa-asetustokohtaiset tiedot."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1358,7 +1363,7 @@
- "NIMI\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "valmisteltaessa tulostetta"
-
-@@ -1489,16 +1494,16 @@
- msgid "cannot create temporary file"
- msgstr "tilapäistä tiedostoa ei voi luoda"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "arkistotiedostoa ei voi alustaa"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "arkistotiedoston kokoa ei voi muuttaa"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "arkiston otsaketta ei voi kartoittaa"
-
-@@ -1514,88 +1519,88 @@
- msgid "cannot map locale archive file"
- msgstr "maa-asetustoarkistoa \"%s\" ei voi kartoittaa"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "uutta arkistoa ei voi lukita"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "maa-asetustoarkistoa ei voi laajentaa"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "maa-asetustoarkiston tilaa ei voi muuttaa"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "uutta arkistoa ei voi nimetä uudelleen"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "maa-asetustoarkistoa \"%s\" ei voi avata"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "maa-asetustoarkiston \"%s\" tilaa ei voi lukea"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "maa-asetustoarkistoa \"%s\" ei voi lukita"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "arkiston otsaketta ei voi lukea"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "maa-asetusto \"%s\" on jo olemassa"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "ei voi lisätä maa-asetustoarkistoon"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "maa-asetustojen aliastiedostoa \"%s\" ei löydy"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Listätään %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "tiedoston \"%s\" tilan lukeminen epäonnistui: %s: ei huomioida"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" ei ole hakemisto: ei huomioida"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "hakemistoa \"%s\" ei voi avata: %s: ei huomioida"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "epätäydellinen valikoima maa-asetustotiedostoja hakemistossa \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kaikkia tiedostoja hakemistossa \"%s\" ei voi lukea: ei huomioida"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "maa-asetusto \"%s\" ei ole arkistossa"
-@@ -1664,8 +1669,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "välin yläraja ei ole pienempi kuin alaraja"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "muisti lopussa"
-
-@@ -1692,7 +1697,7 @@
- msgid "Another string for testing."
- msgstr "Toinen merkkijono testausta varten"
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NIMI"
-
-@@ -1736,7 +1741,7 @@
- msgid "duplicate set definition"
- msgstr "kaksinkertainen joukon määrittely"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "tämä on ensimmäinen määrittely"
-
-@@ -1754,44 +1759,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "tuntematon direktiivi \"%s\": riviä ei huomioida"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "kaksinkertainen viestinumero"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "kaksinkertainen viestitunniste"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "virheellinen merkki: viestiä ei huomioida"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "virheellinen rivi"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "väärän muotoinen rivi jätetty huomioimatta"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "tulostiedostoa \"%s\" ei voi avata"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "päättämätön viesti"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "avattaessa vanhaa katalogitiedostoa"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "muunnosmoduulit eivät ole käytettävissä"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "ohjausmerkkiä ei voi määrittää"
-
-@@ -1799,7 +1804,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: ei osaa käsitellä yli kahdeksaa argumenttia\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Onnistui"
-@@ -2988,23 +2993,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sTuntematon signaali %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "muisti on yhtenäinen, kirjastossa on ohjelmistovirheitä\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "muisti kärsinyt ennen varattuja lohkoja\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "muisti kärsinyt varattujen lohkojen jälkeen\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "lohko vapautettu kahdesti\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "väärä mcheck_status, kirjastossa on ohjelmavirhe\n"
-
-@@ -3040,6 +3045,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATATIEDOSTO [TULOSTIEDOSTO]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Tuntematon virhe"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3064,7 +3073,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Muisti lopussa: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Tuntematon järjestelmävirhe"
-
-@@ -3457,25 +3466,21 @@
- msgid "Interrupted by a signal"
- msgstr "Signaalin keskeyttämä"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Tuntematon virhe"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "tuntematon määrittely \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "määrittelemätön"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Tunnistamaton muuttuja \"%s\""
-@@ -3537,71 +3542,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ei vastaavuutta"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Virheellinen säännöllinen ilmaus"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Virheellinen vertailumerkki"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Virheellinen merkkiluokan nimi"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Kenoviiva lopussa"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Virheellinen takaisinviittaus"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Pariton [ tai [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Pariton ( tai \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Pariton \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Virheellinen \\{\\}:n sisältö"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Virheellinen välin loppu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Muisti lopussa"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Virheellinen edeltävä säännöllinen ilmaus"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Ennenaikainen säännöllisen ilmauksen loppu"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Liian suuri säännöllinen ilmaus"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Pariton ) tai \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Ei edeltävää säännöllistä lauseketta"
-
-@@ -3622,7 +3627,7 @@
-
- #: argp/argp-help.c:1189
- msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
--msgstr "Pakolliset tai valinnaiset argumentit pitkille optioille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille optioille."
-+msgstr "Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille."
-
- #: argp/argp-help.c:1572
- msgid "Usage:"
-@@ -3755,24 +3760,24 @@
- msgid "Service configuration to be used"
- msgstr "Käytettävät palveluasetukset"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "%s ei tue luettelemista\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hae merkintöjä hallinnollisesta tietokannasta."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Tuetut tietokannat:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "väärä määrä argumentteja"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Tuntematon tietokanta: %s\n"
-@@ -3801,68 +3806,72 @@
- msgid "invalid pointer size"
- msgstr "virheellinen osoittimen koko"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Muistin varaaminen ei onnistu\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Kaikki portit käytössä\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "yhdistä osoitteeseen %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Yritetään %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (alustetaan vakiovirhetuloste): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (alustetaan vakiovirhetuloste): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokollavirhe piiriasetuksissa\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: protokollavirhe piiriasetuksissa\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: vajaa luku"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "tiedoston tilan luku epäonnistui"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "ei ole tavallinen tiedosto"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "ei voi avata"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "tiedoston tilan luku epäonnistui"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "virheellinen omistaja"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "kirjoitusoikeus muulla kuin omistajalla"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "kovalinkitetty johonkin"
-
-@@ -4035,7 +4044,7 @@
-
- #: sunrpc/pm_getmaps.c:74
- msgid "pmap_getmaps rpc problem"
--msgstr "pmap_getmaps rpc-ongelma"
-+msgstr "pmap_getmaps-rpc-ongelma"
-
- #: sunrpc/pmap_clnt.c:72
- msgid "__get_myaddress: ioctl (get interface configuration)"
-@@ -4073,109 +4082,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Vastausta yleislähetykseen ei pystytä vastaanottamaan"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: tuloste ylikirjoittaisi tiedoston %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: tiedostoa %s ei voi avata: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: kirjoitettaessa tulostetta %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "C-esikääntäjää ei löydy: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C-esikääntäjä epäonnistui signaalilla %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C-esikääntäjä epäonnistui paluuarvolla %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "virheellinen verkkotyyppi :\"%s\"\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: liian monta määrittelyä\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: argumenttillistan koodausvirhe\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "tiedosto \"%s\" on olemassa ja saatetaan ylikirjoittaa\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Voidaan antaa vain yksi syötetiedosto!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Tämä toteutus ei tue uudentyyppistä MT-turvallista koodia!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Netid-lippua ei voi käyttää inetd-lipun kanssa!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Lippua netid ei voi käyttää ilman TIRPC:tä!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Table-lippuja ei voi käyttää \"newstyle\":n kanssa!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"syötetiedosto\" vaaditaan mallin luontilippuja varten.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Tiedostonluontilippuja voi olla vain yksi!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "käyttö: %s syötetiedosto\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnimi[=arvo]] [-i koko] [-I [-K sekuntit]] [-Y polku] syötetiedosto\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tulostiedosto] [syötetiedosto]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s verkkotyyppi]* [-o tulostiedosto] [syötetiedosto]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n verkkoid]* [-o tulostiedosto] [syötetiedosto]\n"
-@@ -5032,7 +5041,7 @@
- msgid "while allocating hash table entry"
- msgstr "varattaessa tilaa tiivistetaulukkomerkinnälle"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "tiedoston \"%s\" tilaa ei voi lukea: %s"
-@@ -5045,153 +5054,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Ohjelmaa nscd ei voi ajaa turvallisessa tilassa normaalin käyttäjän oikeuksilla"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "varattaessa välimuistia: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "pistoketta ei voi avata: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "vanhaa pyyntöversiota %d ei voi käsitellä; nykyinen versio on %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "tulosta ei voi kirjoittaa: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "hyväksyttäessä yhteyksiä: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "vajaa luku luettaessa pyyntöä: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "avaimen pituus pyynnössä liian pitkä: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "vajaa luku luettaessa pyyntöavainta: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Ohjelman nscd ajaminen käyttäjän \"%s\" oikeuksilla epäonnistui"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist epäonnistui"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups epäonnistui"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "varattaessa tilaa avainkopiolle"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "varattaessa tilaa välimuistimerkinnälle"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "vajaa kirjoitus tiedostossa %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "\"%s\" ei löytynyt ryhmävälimuistista!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Virheellinen numeerinen gid \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "\"%d\" ei löytynyt ryhmävälimuistista!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "\"%s\" ei löytynyt isäntävälimuistista!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lue asetukset tiedostosta NIMI"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Älä haaraudu ja näytä viestit nykyisessä tty:ssä"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "MÄÄRÄ"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Käynnistä MÄÄRÄ säiettä"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Sammuta palvelin"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Näytä nykyiset asetustilastot"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TAULUKKO"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Poista käytöstä määritelty välimuisti"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TAULUKKO,kyllä"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Käytä erillistä välimuistia jokaiselle käyttäjälle"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Nimipalvelun välimuistidemoni."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "on jo käynnissä"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Vain root voi käyttää tätä valitsinta!"
-
-@@ -5281,22 +5295,22 @@
- "%15ld%% välimuistiosuma-aste\n"
- "%15s tarkista muutokset tiedostosta /etc/%s\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "\"%s\" ei löytynyt salasanavälimuistista!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Virheellinen numeerinen uid \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "\"%d\" ei löytynyt salasanavälimuistista!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kykylistaa ei voi luoda"
-
-@@ -5347,7 +5361,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Välimuistitiedostoa %s ei voi avata\n"
-@@ -5393,15 +5407,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Uudelleennimeäminen %s -> %s epäonnistui"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "jaettu objekti ei ole avoin"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "TLS-luontilaskurin ylivuoto! Lähetä raportti \"glibcbug\"-skriptillä."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST ei ole sallittu SUID/SGID-ohjelmissa"
-
-@@ -5418,181 +5432,193 @@
- msgid "cannot allocate dependency list"
- msgstr "riippuvuuslistalle ei voi varata muistia"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "symbolihakulistalle ei voi varata muistia"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Suodattimet eivät ole tuettuja LD_TRACE_RPELINKING:in kanssa"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "DYNAAMISEN LINKITTÄJÄN OHJELMISTOVIRHE!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "virhe ladattaessa jaettuja kirjastoja"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "nimitietueelle ei voi varata muistia"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "hakupolulle ei voi luoda välimuistia"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "RUNPATH/RPATH-kopiota ei voi luoda"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "hakupolkutaulukkoa ei voi luoda"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "jaetun objektin tilaa ei voi lukea"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "nollatäyttölaitetta ei voi avata"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "jaettua objektikahvaa ei voi luoda"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "tiedoston dataa ei voi lukea"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-latauskomennon tasaus ei ole sivutasattu"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF-latauskomennon osoite/siirtymä ei ole tasattu oikein"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "alkusäikeelle ei voi varata TLS-tietorakenteita"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "TLS-dataa ei voi käsitellä"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "segmentin kartoitus jaetusta objektista epäonnistui"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "käynnistettävää tiedostoa ei voi ladata dynaamisesti"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "muistin suojausta ei voi muuttaa"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "nollatäytteisiä sivuja ei voi kartoittaa"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "ohjelman otsakkeelle ei voi varata muistia"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektitiedostossa ei ole dynaamista osaa"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "jaettua objektia ei voi avata funktiolla dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "hakulistaa ei voi luoda"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "tiedosto on liian lyhyt"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "virheellinen ELF-otsikko"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "ELF-tiedoston tavujärjestys ei ole \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "ELF-tiedoston tavujärjestys ei ole \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-tiedoston versiotunnus ei vastaa nykyistä"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-tiedoston OS ABI on virheellinen"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-tiedoston ABI-versio virheellinen"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "sisäinen virhe"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-tiedoston versio ei vastaa nykyistä"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-tiedoston phent-koko ei ole odotetun kokoinen"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "vain ET_DYN ja ET_EXEC voidaan ladata"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "jaettua objektitiedostoa ei voi avata"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "uudelleensijoitusvirhe"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "globaalia aluetta ei voi laajentaa"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "aluelistaa ei voi luoda"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "TLS-tietorakenteita ei voi luoda"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "virheellinen tila funktiolle dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "jaettua objektia ei voi avata funktiolla dlopen(): staattinen TLS-muisti on liian pieni"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "segmenttiä ei voi muuttaa kirjoitettavaksi uudelleensijoitusta varten"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiloija ei löytänyt PLTREL-kenttää objektista %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profiloijan muisti loppui varjostettaessa objektin %s PLTREL-kenttää\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen"
-
-@@ -5648,119 +5674,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Polku \"%s\" on annettu useammin kuin kerran"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s ei ole tunnettu kirjastotyyppi"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Tiedoston %s tilaa ei voi lukea\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s ei ole symbolinen linkki\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Tiedoston %s linkitystä ei voi poistaa"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Linkitys %s -> %s ei onnistu"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (muutettu)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (OHITETTU)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "%s ei löydy"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Hakemistoa %s ei voi avata"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Tiedoston %s tilaa ei voi lukea"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Syötetiedostoa %s ei löydy.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-kirjasto %s on väärässä hakemistossa"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Asetustiedostoa %s ei voi avata"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Juurihakemistoon / siirtyminen ei onnistu"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Välimuistihakemistoa %s ei voi avata\n"
-Binary files glibc-2.3.2/po/fr.mo and glibc-2.3.2-200304020432/po/fr.mo differ
-diff -u -udbrN glibc-2.3.2/po/fr.po glibc-2.3.2-200304020432/po/fr.po
---- glibc-2.3.2/po/fr.po Sun Oct 13 04:01:44 2002
-+++ glibc-2.3.2-200304020432/po/fr.po Mon Mar 3 19:12:33 2003
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: GNU libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-12 12:00-0500\n"
-+"Project-Id-Version: GNU libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 08:00-0500\n"
- "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
- "Language-Team: French <traduc@traduc.org>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "conversions de « %s » vers « %s » ne sont pas supportées"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "conversions de « %s » et de , vers « %s » ne sont pas supportées"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "Erreur lors de la fermeture du fichier de sortie"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Rapporter toutes anomalies via le script « glibcbug » à <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -306,9 +306,9 @@
- "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
- "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Préfixe utilisé pour tous les accès fichiers"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "Aucun fichier de sortie généré en raison d'un avertissement déjà émis"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "lors d'une insertion dans un arbre de recherche"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "Ne peut générer le fichier de sortie"
-
-@@ -1288,7 +1288,7 @@
- msgid "unterminated symbolic name"
- msgstr "Nom symbolique incomplet"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "Séquence d'échappement invalide"
-
-@@ -1318,39 +1318,39 @@
- msgid "trailing garbage at end of line"
- msgstr "rebut en suffixe à la fin de la ligne"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Information système:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Écriture des noms disponibles des localisations"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Écriture des noms disponibles des tables de caractères"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Format de sortie de modification:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Écriture des noms sélectionnés des catégories"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Écriture des noms sélectionnés des mots clés"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Afficher plus informations"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Trouver l'information locale spécifique"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1358,7 +1358,7 @@
- "NOM\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "lors de la préparation de la sortie"
-
-@@ -1489,16 +1489,16 @@
- msgid "cannot create temporary file"
- msgstr "ne peut créer un fichier temporaire"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "ne peut initialiser le fichier d'archive"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "ne peut modifier la taille du fichier d'archive"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "ne peut mapper l'en-tête de l'archive"
-
-@@ -1514,88 +1514,88 @@
- msgid "cannot map locale archive file"
- msgstr "ne peut mapper l'archive de localisation"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "ne peut verrouiller la nouvelle archive"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "ne peut augmenter la taille du fichier de l'archive de localisation"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "ne peut modifier les protections de l'archive des localisations dont la taille a changé"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "ne peut changer le nom de la nouvelle archive"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "ne peut ouvrir l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "ne peut évaluer par `stat' l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "ne peut verrouiller l'archive des localisations « %s »"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "ne peut lire l'en-tête de l'archive"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "localisation « %s » existe déjà"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "ne peut l'ajouter à l'archive des localisations"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "alias du fichier des localisations « %s » non trouvé"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Ajout de %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "échec d'évaluation par stat() de « %s »: %s: ignoré"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "« %s » n'est pas un répertoire; ignoré"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "ne peut ouvrir le répertoire « %s »: %s: ignoré"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "jeu incomplet de fichiers dea localisations dans « %s »"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "ne peut lire tous les fichiers dans « %s »: ignoré"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "localisation « %s » n'est pas dans l'archive"
-@@ -1666,8 +1666,8 @@
- "La limite supérieure de l'intervalle n'est pas plus petite\n"
- "que la limite inférieure."
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "Mémoire épuisée"
-
-@@ -1693,7 +1693,7 @@
- msgid "Another string for testing."
- msgstr "Une autre chaîne pour fins de test."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOM"
-
-@@ -1737,7 +1737,7 @@
- msgid "duplicate set definition"
- msgstr "Double définitions de jeux"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "Ceci est la première définition."
-
-@@ -1755,44 +1755,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "Directive inconnue « %s »: ligne ignorée"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "Double messages du numéro"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "Double identificateurs de message"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "Caractères invalide: message ignoré"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "Ligne invalide"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "Ligne incorrecte ignorée"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "Ne peut ouvrir le fichier de sortie « %s »"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "Message incomplet"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "lors de l'ouverture du vieux fichier du catalogue"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "Module de conversion 'est pas disponible"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "Ne peut déterminer une séquence de caractère"
-
-@@ -1800,7 +1800,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: ne sait pas comment traiter plus de 8 arguments\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Succès"
-@@ -2989,23 +2989,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%ssignal inconnu %d.\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "La mémoire est consistente, la librairie est fautive.\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "Mémoire écrasée avant le bloc alloué\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "Mémoire écrasée après la fin du bloc alloué\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "Bloc libéré deux fois\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "Statut de « mcheck_status » erroné, la librarie est erronée.\n"
-
-@@ -3041,6 +3041,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFILE [FICHIER_DE_SORTIE]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Erreur inconnue"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3065,7 +3069,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: mémoire épuisée: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Erreur système inconnue"
-
-@@ -3465,25 +3469,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrompu par un signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Erreur inconnue"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Usage: %s [-v spécification] nom_de_variable [chemin_d_accès]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "spécification inconnu « %s »"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "indéfini"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable non reconnue « %s »"
-@@ -3545,71 +3545,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: l'option « -W %s » ne permet pas d'argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Pas de concordance"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Expression régulière invalide"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Caractère de fusionnement invalide"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nom de classe de caractères invalide"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barre oblique inverse en suffixe"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Référence arrière invalide"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Échec du pairage de [ ou de [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Échec du pairage de ( ou de \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Échec du pairage de \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contenu invalide de \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Fin d'intervalle invalide"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Mémoire épuisée"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Expression régulière précédente invalide"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Fin prématurée de l'expression régulière"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Expression régulière trop grosse"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Échec du pairage de ) ou de \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Aucune expression régulière précédente"
-
-@@ -3765,24 +3765,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuration de service à être utilisée"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Énumération non supportée sur %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent() - obtenir les entrées de la base de données administratives"
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Base de données supportées:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "Mauvais nombre d'arguments"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de données inconnue: « %s »\n"
-@@ -3811,68 +3811,72 @@
- msgid "invalid pointer size"
- msgstr "Taille de pointeur invalide"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: ne peut allouer de la mémoire\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: tous les ports sont occupés\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "Connexion établie à l'adresse %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "On tente %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: écriture (configuration de stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (configuration de stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: échec du protocole dans la configuration du circuit\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: échec de protocole dans la configuration du circuit.\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lecture écourtée"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "Échec d'évaluation lstat()"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "N'est pas un fichier régulier"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "Ne peut ouvrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "Échec d'évaluation fstat()"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "Mauvais propriétaire"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "accessible en écriture par d'autres que le propriétaire"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "lien direct rencontré"
-
-@@ -4083,109 +4087,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Ne peut recevoir l'accusé réception à la requête faite par diffusion"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: la sortie écraserait %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: incapable d'ouvrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: lors de l'écriture sur la sortie %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "Ne peut trouver le préprocesseur C: %s\n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "Ne peut trouver un préprocesseur C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "« nettype » illégal :« %s »\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: trop de définitions\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: erreur dans la liste d'arguments de codage\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "Le fichier « %s » existe déjà et peut avoir été écrasé.\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Ne peut spécifier plus d'un fichier d'entrée!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Cette implantation ne supporte pas le nouveau style ou le code MT-safe!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Ne utiliser le sémaphore « netid » avec le sémaphore « inetd »!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Ne peut utiliser le sémaphore « netid » sans « TIRPC »!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Ne peut utiliser la table des sémaphores avec « newstyle »!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"fichier_d_entrée\" est requis pour la génération du gabarit des indicateurs.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Ne peut avoir plus d'un fichier de génération de sémaphores!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "usage: %s fichier_d_entrée\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dname[=valeur]] [-i taille] [-I [-K secondes]] [-Y chemin] fichier\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s type_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n id_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
-@@ -5042,7 +5046,7 @@
- msgid "while allocating hash table entry"
- msgstr "lors de l'allocation d'entrées dans la table de hachage"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "Ne peut évaluer par stat() le fichier « %s »: %s"
-@@ -5055,153 +5059,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Ne peut exécuter nscd en mode sécuritaire en tant qu'usager sans privilège"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "lors de l'allocation de la cache: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "Ne peut ouvrir le socket: « %s »"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "Ne peut activer le socket pour accepter des connexions: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: requête reçue (Version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "Ne peut traiter une requête d'une vieille version %d; la version courante est %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "Ne peut écrire les résultats: « %s »"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "erreur lors de la recherche de l'identificateur de l'appelant: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "lors de l'acceptation de connexion: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "Lecture écourtée lors de la lecture de la requête: « %s »"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "La longueur de la clé de la requête est trop longue: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "Lecture écourtée lors de la lecture de la clé de requête: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Échec d'exécution de nscd en tant qu'usager « %s »"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "échec de getgrouplist"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "échec de setgroups"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "lors de l'allocation d'une copie de clé"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "lors de l'allocation d'entrée dans la cache"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "Écriture écourtée dans %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "N'a pas trouvé « %s » dans la cache du groupe!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "gid numérique invalide « %s »!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "N'a pas trouvé « %d » dans la cache du groupe!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "N'a pas trouvé « %s » dans la cache de la liste des hôtes!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Lire les données de configuration du NOM"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Ne pas cloner le processus par fork() et ne pas afficher de message sur le tty courant"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NUMÉRO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Démarrage du NOMBRE de « threads »"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Arrêter le serveur"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Afficher les statistiques de la configuration courante"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLE"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalide la cache spécifiée"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLE,oui"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Utiliser une cache séparée pour chaque usager"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "« Daemon » de la cache du service de noms"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "déjà en exécution"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Seul ROOT est autorisé à utiliser cette option!"
-
-@@ -5291,22 +5300,22 @@
- "%15ld%% taux de repérage\n"
- "%15s vérifier /etc/%s pour les changements\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "N'a pas trouvé « %s » dans la cache des mots de passe!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "uid numérique invalide « %s »!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "N'a pas trouvé « %d » dans la cache des mots de passe!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "Ne peut créer une liste des possibilités"
-
-@@ -5357,7 +5366,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", ABI Système d'exploitation: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Ne peut ouvrir le fichier de la cache %s\n"
-@@ -5403,15 +5412,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "ÉCHEC du changement de nom de %s vers %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "Objet partagé non ouvert"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "Compteut de génération TLS a bouclé! SVP expédier un rapport avec le script 'glibcbug'"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST non permis dans un programme SUID/SGID"
-
-@@ -5428,181 +5437,193 @@
- msgid "cannot allocate dependency list"
- msgstr "Ne peut allouer une liste de dépendances"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "Ne peut allouer la liste des symboles recherchées"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filtres non supportés avec LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "PROBLÈME DANS LE CHARGEUR DE LIENS DYNAMIQUES"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "erreur lors du chargement des librairies partagées"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "Ne peut allouer une nom d'enregistrement"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Ne peut créer une cache pour le chemin de recherche"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "Ne peut créer une copie RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "Ne peut créer un tableau des chemins de recherche"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "Échec évaluer par stat() l'objet partagé"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "Ne peut ouvrir le fichier de périphérique rempli de zéros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "Ne peut créer un objet descripteur partagé"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "Ne peut lire le fichier de données"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "Commande de chargement sur une page ELF qui n'est pas alignée"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "Commande de chargement sur une adresse ELF incorrectement alignée"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "ne peut allouer une structure de données TLS pour un thread initial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "ne peut traiter les données TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "Échec d'adressage (mapping) du segement de l'objet partagé"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "Ne peut dynamiquement charger un exécutable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "Ne peut modifier les protections de mémoire"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "Ne peut adresser des pages rempliez de zéros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Ne peut allouer de la mémoire pour une en-tête de programme"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "Le fichier objet n'a pas de section dynamique"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "L'objet partagé ne peut pas être ouvert via dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "Ne peut créer une liste de recherche"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "Fichier trop court"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "En-tête ELF invalide"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Données d'encodage du fichier ELF n'est pas big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Données d'encodage du fichier ELF n'est pas little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "Identificateur de version du fichier ELF ne concorde pas avec la version courante"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "Système d'exploitation du fichier ELF ABI invalide"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Version du fichier ELF ABI invalide"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "Erreur interne"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "Version du fichier ELF ne concorde pas avec la version courante"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "« Phentize » du fichier ELF ne concorde pas avec la taille prévue"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "Seuls ET_DYN et ET_EXEC peuvent être chargés"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "Ne peut ouvrir le fichier d'objet partagé"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "erreur de relocalisation"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "Ne peut augmenter l'étendue de la plage"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "La chaîne dynamique d'un jeton de substition est vide."
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "ne peut créer une liste d'étendue"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "ne peut créer les structures de données TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "mode invalide pour dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "l'objet partagé ne peut pas être ouvert via dlopen(): mémoire statiques TLS trop petite"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "Ne peut rendre le segment inscritible lors d'une relocalisation"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profileur n'a repéré aucun PLTREL dans l'objet %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profileur mémoire épuisée par l'ombrage PLTREL de %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "ne peut restaurer le segment prot après reloc"
-
-@@ -5658,119 +5679,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configuration dynamique des éditions de liens lors de l'exécution"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Chemin « %s » donné plus d'une fois"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s n'est pas un type de librairie connue"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Ne peut évaluer par stat %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Ne peut évaluer par stat %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s n,est pas un lien symbolique\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Ne peut enlever le lien (unlink) %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Ne peut établir un lien entre %s et %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (a été modifié)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (ESCAMOTÉ)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Ne peut repérer %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Ne peut évaluer par lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorer le fichier %s étant donné que ce n'est pas un fichier régulier"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Aucun lien créé étant donné qu'il n'a pas été repéré pour %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Ne peut ouvrir le répertoire %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Ne peut évaluer par lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Ne peut évaluer par stat %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Fichier d'entrée %s non repéré\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "librairie libc5 %s est dans le mauvais répertoire"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "librairie libc6 %s est dans el mauvais répertoire"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "librairie libc4 %s est dans le mauvais répertoire"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "Les librairies %s et %s du répertoire %s ont le même nom mais sont de types différents"
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Ne peut ouvrir le fichier de configuration %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Ne peut se positionner (chdir) dans /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Ne peut ouvrir le fichier de la cache des répertoires %s\n"
-Binary files glibc-2.3.2/po/gl.mo and glibc-2.3.2-200304020432/po/gl.mo differ
-diff -u -udbrN glibc-2.3.2/po/gl.po glibc-2.3.2-200304020432/po/gl.po
---- glibc-2.3.2/po/gl.po Sat Oct 5 20:15:44 2002
-+++ glibc-2.3.2-200304020432/po/gl.po Mon Mar 3 20:35:16 2003
-@@ -4,9 +4,9 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-05 15:13+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 20:13+0100\n"
- "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
- "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
- "MIME-Version: 1.0\n"
-@@ -259,8 +259,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "as conversións de `%s' a `%s' non están soportadas"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "as conversións de `%s' e a `%s' non están soportadas"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -285,15 +285,15 @@
- msgid "error while closing output file"
- msgstr "erro ao pecha-lo ficheiro de saída"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Informe dos erros usando o script `glibcbug' a <bugs@gnu.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -305,9 +305,9 @@
- "Isto é software libre; vexa o código fonte polas condicións de copia. NON hai\n"
- "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -359,15 +359,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefixo a empregar para tódolos accesos a ficheiro"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "non se producíu un ficheiro de saída porque se deron avisos"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "ao inserir na árbore de busca"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "non se pode xera-lo ficheiro de saída"
-
-@@ -1277,7 +1277,7 @@
- msgid "unterminated symbolic name"
- msgstr "nome simbólico non rematado"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "secuencia de escape non válida"
-
-@@ -1307,39 +1307,39 @@
- msgid "trailing garbage at end of line"
- msgstr "lixo na fin da liña"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Información do sistema:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Escribi-los nomes dos `locales' dispoñibles"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Escribi-los nomes dos mapas de caracteres dispoñibles"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifica-lo formato de saída:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Escribi-los nomes das categorías seleccionadas"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Escribi-los nomes das claves seleccionadas"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Amosar máis información"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Obter información específica do `locale'."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1347,7 +1347,7 @@
- "NOME\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "ao prepara-la saída"
-
-@@ -1478,16 +1478,16 @@
- msgid "cannot create temporary file"
- msgstr "non se pode crea-lo ficheiro temporal"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "non se pode inicializa-lo ficheiro de arquivo"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "non se pode cambia-lo tamaño do ficheiro de arquivo"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "non se pode mapea-la cabeceira do arquivo"
-
-@@ -1503,88 +1503,88 @@
- msgid "cannot map locale archive file"
- msgstr "non se pode mapea-lo ficheiro de arquivo de locales"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "non se pode bloquea-lo novo arquivo"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "non se pode extende-lo ficheiro de arquivo de locales"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "non se pode cambia-lo modo do arquivo de locales co novo tamaño"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "non se pode renomea-lo novo arquivo"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "non se pode abri-lo arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "non se pode facer stat do arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "non se pode bloquea-lo arquivo de locales \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "non se pode le-la cabeceira do arquivo"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "o locale '%s' xa existe"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "non se pode engadir no arquivo de locales"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "non se atopou o ficheiro de alias de locales `%s'"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Engadindo %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "a chamada a stat de \"%s\" fallou: %s: ignórase"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" non é un directorio; ignórase"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "non se pode abr-lo directorio \"%s\": %s: ignorado"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "conxunto de ficheiros de locale incompleto en \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "non se poden ler tódolos ficheiros de \"%s\": ignorado"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "o locale \"%s\" non está no arquivo"
-@@ -1653,8 +1653,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "o límite superior do rango non é menor có límite inferior"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "memoria esgotada"
-
-@@ -1680,7 +1680,7 @@
- msgid "Another string for testing."
- msgstr "Outra cadea para facer probas."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NOME"
-
-@@ -1725,7 +1725,7 @@
- msgid "duplicate set definition"
- msgstr "definición de conxunto duplicada"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "esta é a primeira definición"
-
-@@ -1743,44 +1743,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "directiva `%s' descoñecida: liña ignorada"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "número de mensaxe duplicado"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "identificador de mensaxes duplicado"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "carácter non válido: mensaxe ignorada"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "liña non válida"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "ignórase unha liña mal formada"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "non se pode abri-lo ficheiro de saída `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "mensaxe non rematada"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "ao abrir un antigo ficheiro de catálogo"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "os módulos de conversión non están dispoñibles"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "non se pode determina-lo carácter de escape"
-
-@@ -1788,7 +1788,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: non se sabe como manexar máis de 8 argumentos\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Éxito"
-@@ -2977,23 +2977,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sSinal descoñecido %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "a memoria é consistente, a biblioteca ten erros\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "memoria alterada antes do bloque reservado\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "memoria alterada despois do bloque reservado\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "bloque liberado dúas veces\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "mcheck_status falso, a biblioteca ten erros\n"
-
-@@ -3029,6 +3029,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "FICHEIRO_DATOS [FICHEIRO_SAÍDA]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Erro descoñecido"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3053,7 +3057,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Memoria esgotada: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Erro de sistema descoñecido"
-
-@@ -3446,25 +3450,21 @@
- msgid "Interrupted by a signal"
- msgstr "Interrompido por un sinal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Erro descoñecido"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Uso: %s [-v especificación] nome_variable [nome]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "especificación `%s' descoñecida"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "non definido"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Variable `%s' non recoñecida"
-@@ -3526,71 +3526,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: a opción `-W %s' non acepta parámetros\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Nada coincide"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Expresión regular incorrecta"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Carácter de ordenación incorrecto"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Nome da clase de caracteres incorrecto"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Barra invertida extra ó final"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Referencia cara a atrás incorrecta"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ou [^ sen parella"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ou \\( sen parella"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ sen parella"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Contido de \\{\\} incorrecto"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Final do rango incorrecto"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Memoria esgotada"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Expresión regular precedente incorrecta"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Final prematura da expresión regular"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Expresión regular demasiado grande"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ou \\) sen parella"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Non hai unha expresión regular precedente"
-
-@@ -3744,24 +3744,24 @@
- msgid "Service configuration to be used"
- msgstr "Configuración do servicio a empregar"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "A enumeración non está soportada en %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - obte-las entradas da base de datos administrativa."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Bases de datos soportadas:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "número de parámetros incorrecto"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Base de datos descoñecida: %s\n"
-@@ -3790,68 +3790,72 @@
- msgid "invalid pointer size"
- msgstr "tamaño de punteiro non válido"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Non se pode reservar memoria\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmp: socket: Tódolos portos están sendo utilizados\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "conectarse ao enderezo %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Probando %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (configurando stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (configurando stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: fallo de protocolo no establecemento do circuito\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: fallo do protocolo no establecemento do circuito\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: lectura curta"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "fallou a chamada a lstat"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "non é un ficheiro normal"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "non se pode abrir"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fallou a chamada a fstat"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "propietario incorrecto"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "escribible por alguén distinto do propietario"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "ten un enlace duro nalgún sitio"
-
-@@ -4062,109 +4066,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Non se pode recibi-la resposta á multidifusión"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: a saída sobreescribiría %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: non se pode abrir %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: ao escribir á saída %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "non podo atopa-lo preprocesador de C: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "non podo atopar un preprocesador de C (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: O preprocesador de C fallou co sinal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: O preprocesador de C fallou co código de saída %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "tipo de rede ilegal :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: demasiadas definicións\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: erro de codificación da lista de parámetros\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "o ficheiro `%s' xa existe e pode ser sobreescrito\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "¡Non se pode indicar máis dun ficheiro de entrada!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "¡Esta implementación non soporta código de novo estilo ou seguro para MT!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "¡Non se pode utiliza-la opción netid coa opción inetd!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "¡Non se pode utiliza-la opción netid sen TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "¡Non se poden utiliza-las opcións de táboa con newstyle!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "Precísase dun ficheiro de \"entrada\" para as opcións de xeración de patróns.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Non se pode ter máis dunha opción de xeración de ficheiros\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "uso: %s ficheiro-de-entrada\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnome[=valor]] [-i tamaño] [-I [-K segundos]] [-Y rota] entrada\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o saída] [entrada]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s tiporede]* [-o saída] [entrada]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n idrede]* [-o saída] [entrada]\n"
-@@ -5021,7 +5025,7 @@
- msgid "while allocating hash table entry"
- msgstr "ao reservar espacio para a entrada da táboa hash"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "non se pode facer stat() sobre o ficheiro `%s': %s"
-@@ -5034,153 +5038,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Non se pode executar nscd en modo seguro coma usuario non privilexiado"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "ao reservar espacio para a caché: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "non se pode abrir un socket: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "non se pode facer que o socket acepte conexións: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: petición recibida (Version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "non se pode manexa-la antiga petición versión %d; a versión actual é %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "non se pode escribi-lo resultado: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "erro ao obte-lo identificador do chamante: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "ao aceptar unha conexión: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "lectura demasiado curta ao le-la petición: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "lonxitude da clave da petición demasiado grande: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "lectura demasiado curta ao le-la clave de petición: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Non se puido executar nscd coma o usuario '%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "fallou a chamada a getgrouplist"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "fallou a chamada a setgroups"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "ao reservar espacio para a copia da clave"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "ao reservar espacio para a entrada de caché"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "escritura demasiado curta en %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "¡Non atopei \"%s\" na caché de grupos!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "¡Identificación numérica de grupo \"%s\" non válida!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "¡Non atopei \"%d\" na caché de grupos!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "¡Non atopei \"%s\" na caché de servidores!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Le-los datos de configuración de NOME"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Non bifurcar e visualiza-las mensaxes no terminal actual"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "NÚMERO"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Comezar NÚMERO fíos"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Apaga-lo servidor"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Visualiza-la estatística da configuración actual"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TÁBOA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalida-la caché especificada"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TÁBOA,si"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Usar unha caché separada para cada usuario"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Demo de Cache de Servicio de Nomes."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "xa en execución"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "¡Só root pode usar esa opción!"
-
-@@ -5270,22 +5279,22 @@
- "%15ld%% tasa de acertos de caché\n"
- "%15s comprobe /etc/%s para ve-los cambios\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "¡Non atopei \"%s\" na caché de contrasinais!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "¡Identificación numérica de usuario \"%s\" non válida!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "¡Non atopei \"%d\" na caché de contrasinais!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "non se pode crea-la lista de capacidades"
-
-@@ -5336,7 +5345,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Non se puido abri-lo ficheiro de caché %s\n"
-@@ -5382,15 +5391,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Fallou o renomeado de %s a %s"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "o obxecto compartido non está aberto"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "O xerador de TLS deu unha volta completa. Informe co script 'glibcbug'."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "Non se admite DST en programas SUID/SGID"
-
-@@ -5407,181 +5416,193 @@
- msgid "cannot allocate dependency list"
- msgstr "non se pode localiza-la lista de dependencias"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "non se pode localiza-la lista de busca de símbolos"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Non se soportan os filtros con LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "¡¡¡ERRO NO LIGADOR DINÁMICO!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "erro ao carga-las bibliotecas compartidas"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "non se pode localiza-lo rexistro de nome"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "non se pode crea-la caché para a ruta de busca"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "non se pode crear unha copia de RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "non se pode crea-lo vector de rutas de busca"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "non se puido facer stat sobre o obxecto compartido"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "non se pode abrir un dispositivo de recheo de ceros"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "non se pode crear un descriptor de obxecto compartido"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "non se pode le-los datos do ficheiro"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "O comando de carga ELF non está aliñado coa páxina"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "O enderezo/desprazamento do comando de carga ELF non está ben aliñado"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "non se poden crea-las estructuras de datos TLS para o fío inicial"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "non se poden manexa-los datos TLS"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "non se puido mapear un segmento dun obxecto compartido"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "non se pode cargar dinamicamente o executable"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "non se poden cambia-las proteccións de memoria"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "non se poden mapear páxinas de recheo de ceros"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Non se pode reservar memoria para a cabeceira do programa"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "o ficheiro obxecto non ten unha sección dinámica"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "non se pode facer dlopen() sobre o obxecto compartido"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "non se pode crea-la lista de busca"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "ficheiro pequeno de máis"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "cabeceira ELF non válida"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "A codificación dos datos do ficheiro ELF non é \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "A codificación dos datos do ficheiro ELF non é \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "O identificador da versión do ficheiro ELF non coincide co actual"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ABI do SO do ficheiro ELF non válida"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Versión do ABI do ficheiro ELF non válida"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "erro interno"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "A versión do ficheiro ELF non coincide coa actual"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "O phentsize do ficheiro ELF non é o tamaño esperado"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "só se pode cargar ET_DYN e ET_EXEC"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "non se pode abrir un ficheiro de obxecto compartido"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "erro de cambio de reserva"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "non se pode extende-lo alcance global"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "substitución de elementos da cadea dinámica baleira"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "non se pode crea-la lista de alcance"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "non se poden crea-las estructuras de datos TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "modo incorrecto para dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "non se pode facer dlopen() sobre o obxecto compartido: a memoria TLS estática é pequena de máis"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "non se pode face-lo segmento gravable para o movemento"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: o perfilador non atopou PLTREL no obxecto %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: o perfilador esgotou a memoria sombreando o PLTREL de %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "non se pode restaura-la protección do segmento despois de movelo"
-
-@@ -5637,119 +5658,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Configura-las Asignacións de Tempo de Execución do Ligador Dinámico"
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Proporcionouse a ruta `%s' máis dunha vez"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s non é un tipo de biblioteca coñecido"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Non se puido executar `stat' sobre %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Non se puido executar `stat' sobre %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s non é unha ligazón simbólica\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Non se puido borrar %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Non se puido ligar %s a %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (cambiou)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (OMITIDO)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Non se pode atopar %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Non se pode facer lstat sobre %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorouse o ficheiro %s porque non é un ficheiro normal"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Non se creou unha ligazón porque non se atopou o soname para %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Non se puido abri-lo directorio %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Non se pode facer lstat sobre %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Non se pode executar `stat' sobre %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Non se atopou o ficheiro de entrada %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "biblioteca libc5 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "biblioteca libc6 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "biblioteca libc4 %s nun directorio incorrecto"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "as bibliotecas %s e %s do directorio %s teñen o mesmo soname pero diferente tipo."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Non se puido abri-lo ficheiro de configuración %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Non se pode cambiar ao directorio /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Non se puido abri-lo directorio de ficheiros caché %s\n"
-Binary files glibc-2.3.2/po/hr.mo and glibc-2.3.2-200304020432/po/hr.mo differ
-Binary files glibc-2.3.2/po/hu.mo and glibc-2.3.2-200304020432/po/hu.mo differ
-Binary files glibc-2.3.2/po/it.mo and glibc-2.3.2-200304020432/po/it.mo differ
-Binary files glibc-2.3.2/po/ja.mo and glibc-2.3.2-200304020432/po/ja.mo differ
-Binary files glibc-2.3.2/po/ko.mo and glibc-2.3.2-200304020432/po/ko.mo differ
-Binary files glibc-2.3.2/po/nl.mo and glibc-2.3.2-200304020432/po/nl.mo differ
-Binary files glibc-2.3.2/po/no.mo and glibc-2.3.2-200304020432/po/no.mo differ
-Binary files glibc-2.3.2/po/pl.mo and glibc-2.3.2-200304020432/po/pl.mo differ
-Binary files glibc-2.3.2/po/pt_BR.mo and glibc-2.3.2-200304020432/po/pt_BR.mo differ
-Binary files glibc-2.3.2/po/sk.mo and glibc-2.3.2-200304020432/po/sk.mo differ
-diff -u -udbrN glibc-2.3.2/po/sk.po glibc-2.3.2-200304020432/po/sk.po
---- glibc-2.3.2/po/sk.po Mon Oct 14 10:29:01 2002
-+++ glibc-2.3.2-200304020432/po/sk.po Mon Mar 3 19:12:34 2003
-@@ -1,13 +1,13 @@
- # Slovak translation of the GNU-libc-messages.
--# Copyright (C) 1998-2001, 2002 Free Software Foundation, Inc.
--# Marcel Telka <marcel@telka.sk>, 2002.
-+# Copyright (C) 1998-2001, 2002, 2003 Free Software Foundation, Inc.
-+# Marcel Telka <marcel@telka.sk>, 2002, 2003.
- # Stanislav Meduna <stano@meduna.org>, 1998-2001.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-14 09:46+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-03 08:31+0200\n"
- "Last-Translator: Marcel Telka <marcel@telka.sk>\n"
- "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
- "MIME-Version: 1.0\n"
-@@ -260,7 +260,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "konverzie z `%s' a do `%s' nie sú podporované"
-
- #: iconv/iconv_prog.c:246
-@@ -286,15 +286,15 @@
- msgid "error while closing output file"
- msgstr "chyba poÄas zatvárania výstupného súboru"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
- msgstr "Chyby hláste na adrese <bugs@gnu.org> - použite skript `glibcbug'.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -302,14 +302,14 @@
- "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"
- msgstr ""
--"Autorské práva (C) %s Free Software Foundation, Inc.\n"
-+"Autorské práva © %s Free Software Foundation, Inc.\n"
- "Toto je voľne šíriteľný softvér; pre podmienky kopírovania pozri zdrojový kód.\n"
- "Neposkytuje sa ŽIADNA záruka; ani Äo sa týka OBCHODOVATEĽNOSTI alebo VHODNOSTI\n"
- "NA KONKRÉTNY ÚČEL.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -360,15 +360,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Predpona použitá pre všetky prístupy k súborom"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "výstupný súbor nebol vytvorený kvôli výskytu varovaní"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "poÄas vkladania do vyhľadávacieho stromu"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "nie je možné vygenerovať výstupný súbor"
-
-@@ -1278,7 +1278,7 @@
- msgid "unterminated symbolic name"
- msgstr "neukonÄené symbolické meno"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "neprípustná escape-sekvencia"
-
-@@ -1308,39 +1308,39 @@
- msgid "trailing garbage at end of line"
- msgstr "smetie na konci riadku"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systémové informácie:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Vypísať názvy dostupných národných prostredí"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Vypísať názvy dostupných znakových sád"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Modifikovať výstupný formát:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Vypísať názvy vybraných kategórií"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "VypísaÅ¥ názvy vybraných kľúÄových slov"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Vypisovať viac informácií"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Získať informáciu špecifickú pre národné prostredie."
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1348,7 +1348,7 @@
- "NÃZOV\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "poÄas prípravy výstupu"
-
-@@ -1479,16 +1479,16 @@
- msgid "cannot create temporary file"
- msgstr "nie je možné vytvoriÅ¥ doÄasný súbor"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "nie je možné inicializovať archívny súbor"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "nie je možné zmeniť veľkosť archívneho súboru"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "nie je možné namapovaÅ¥ hlaviÄku archívu"
-
-@@ -1504,88 +1504,88 @@
- msgid "cannot map locale archive file"
- msgstr "nie je možné namapovať súbor archívu národného prostredia"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "nie je možné uzamknúť nový archív"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "nie je možné rozšíriť súbor archívu národného prostredia"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "nie je možné zmeniť mód archívu národného prostredia s upravenou veľkosťou"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "nie je možné premenovať nový archív"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "nie je možné otvoriť archív národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "nie je možné zistiť stav archívu národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "nie je možné uzamknúť archív národného prostredia \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "nie je možné preÄítaÅ¥ hlaviÄku archívu"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "národné prostredie `%s' už existuje"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "nie je možné pridať do archívu národného prostredia"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "súbor aliasu národného prostredia `%s' nebol nájdený"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Pridávam %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "zistenie stavu \"%s\" zlyhalo: %s: ignorované"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" nie je adresár; ignorované"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "nie je možné otvoriť adresár \"%s\": %s: ignorované"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "nekompletná skupina súborov národných prostredí v \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "nie je možné naÄítaÅ¥ vÅ¡etky súbory v \"%s\": ignorované"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "národné prostredie \"%s\" nie je v archíve"
-@@ -1654,8 +1654,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "horný limit rozsahu je menší ako dolný"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "nedostatok pamäti"
-
-@@ -1681,7 +1681,7 @@
- msgid "Another string for testing."
- msgstr "Iný reťazec pre testovanie."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NÃZOV"
-
-@@ -1725,7 +1725,7 @@
- msgid "duplicate set definition"
- msgstr "duplicitná definícia sady"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "toto je prvá definícia"
-
-@@ -1743,44 +1743,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "neznáma direktíva `%s' - riadok ignorovaný"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "duplicitné Äíslo správy"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "duplicitný identifikátor správy"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "neprípustný znak: správa ignorovaná"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "neprípustný riadok"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "nesprávny riadok ignorovaný"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "nie je možné otvoriť výstupný súbor `%s'"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "neukonÄená správa"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "poÄas otvárania starého katalógu"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "moduly konverzie nie sú dostupné"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "nie je možné urÄiÅ¥ znak escape"
-
-@@ -1788,7 +1788,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: nevie ako má spracovať viac ako 8 argumentov\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Úspech"
-@@ -2977,23 +2977,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sNeznámy signál %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "pamäť je konzistentná, knižnica je chybná\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "pamäť pred prideleným blokom prepísaná\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "pamäť za koncom prideleného bloku prepísaná\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok uvoľnený dvakrát\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "pochybný mcheck_status, knižnica má chyby\n"
-
-@@ -3029,6 +3029,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DÃTOVÃ_SÚBOR [VÃSTUPNÃ_SÚBOR]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Neznáma chyba"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3053,7 +3057,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Nedostatok pamäti: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Neznáma chyba systému"
-
-@@ -3446,25 +3450,21 @@
- msgid "Interrupted by a signal"
- msgstr "Prerušené signálom"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Neznáma chyba"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Použitie: %s [-v špecifikácia] meno_premennej [cesta]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "neznáma špecifikácia \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "nedefinované"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Nerozpoznaná premenná `%s'"
-@@ -3526,71 +3526,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: voľba `-W %s' nedovoľuje pouťiť argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Žiadna zhoda"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Neprípustný regulérny výraz"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Neprípustný znak triedenia"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Neprípustný názov triedy znakov"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Koncové spätné lomítko"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Neprípustný spätný odkaz"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Nepárová [ or [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Nepárová ( or \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Nepárová \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Neprípustný obsah \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Neprípustný koniec rozsahu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Pamäť vyÄerpaná"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Neprípustný predchádzajúci regulérny výraz"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "PredÄasný koniec regulérneho výrazu"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Regulérny výraz príliš veľký"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Nepárová ) or \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Žiadny predchádzajúci regulérny výraz"
-
-@@ -3744,24 +3744,24 @@
- msgid "Service configuration to be used"
- msgstr "Konfigurácia služby, ktorá má byť použitá"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Enumerácia %s nie je podporované\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - získať záznamy z administratívnej databázy."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Podporované databázy:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "chybný poÄet argumentov"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Neznáma databáza %s\n"
-@@ -3790,68 +3790,72 @@
- msgid "invalid pointer size"
- msgstr "neprípustná veľkostť ukazovateľa"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Nie je možné prideliť pamäť\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: socket: Všetky porty sú použité\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "spojiť sa s adresou %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Skúšam %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (nastavenie stderr): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (nastavenie stderr): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: chyba protokolu poÄas prípravy okruhu\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "socket: chyba protokolu pri príprave okruhu\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: krátke Äítanie"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat zlyhal"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "nie je regulérny súbor"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "nie je možné otvoriť"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat sa nepodaril"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "chybný vlastník"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "zapisovateľný nielen pre vlastníka"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "niekde existuje pevný odkaz"
-
-@@ -4062,109 +4066,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Nie je možné prijaÅ¥ odpoveÄ na broadcast"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: výstup by prepísal %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: nie je možné otvoriť %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: poÄas zápisu výstupu %s: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "nie je možné nájsť preprocesor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "nie je možné nájsť žiadny C preprocesor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C preprocesor zlyhal so signálom %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C preprocesor zlyhal s výstupným kódom %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "chybný nettype :`%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: priveľa defines\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: chyba kódovania zoznamu argumentov\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "súbor `%s' už existuje a môže byť prepísaný\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Nie je možné zadať viac ako jeden vstupný súbor!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Táto implementácia nepodporuje nový Å¡týl alebo MT-bezpeÄný kód!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Príznaky netid a inetd nie je možné použiÅ¥ súÄasne!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Nie je možné použiť príznak netid bez TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Pri použití nového štýlu nie je možné použiť príznaky tabuľky!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"vst_súbor\" je vyžadovaný pri použití príznakov tvorby vzoru.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Nie je možné použiť viac ako jeden príznak tvorby súboru!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "použitie: %s vstupný_súbor\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnázov[=hodnota]] [-i veľkosť] [-I [-K sekundy]] [-Y cesta] vst_súbor\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o výst_súbor] [vst_súbor]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nettype]* [-o výst_súbor] [vst_súbor]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n netid]* [-o výst_súbor] [vst_súbor]\n"
-@@ -5027,7 +5031,7 @@
- msgid "while allocating hash table entry"
- msgstr "poÄas pridelenia záznamu hash-tabuľky"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "nie je možné vykonať stat() súboru `%s': %s"
-@@ -5040,153 +5044,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Nie je možné spustiÅ¥ nscd v bezpeÄnom režime ako neprivilegovaný používateľ"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "poÄas pridelenia cache: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "nie je možné otvoriť socket `%s'"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "nie je možné povoliť socketu prijímať spojenia: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: žiadosť prijatá (verzia = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "nie je možné spracovať starú verziu žiadosti %d; aktuálna verzia je %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "nie je možné zapísať výsledok: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "chyba pri získaní id volajúceho: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "poÄas prijatia spojenia: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "neúplné Äítanie žiadosti: `%s'"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "dĺžka kľúÄa v žiadosti príliÅ¡ dlhá: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "neúplné Äítanie kľúÄa žiadosti: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Zlyhalo spustenie nscd ako používateľ '%s'"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist zlyhalo"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups zlyhalo"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "poÄas pridelenia kópie kľúÄa"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "poÄas pridelenia záznamu cache"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "neúplný zápis v %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Nenájdené \"%s\" v cache skupín!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Neplatné Äíselné gid \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Nenájdené \"%d\" v cache skupín!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Nenájdené \"%s\" v cache poÄítaÄov!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "NaÄítaÅ¥ údaje o konfigurácii z NÃZOV"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Nespúšťať samostatný proces a zobrazovať správy na aktuálnom termináli"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "POÄŒET"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Spustiť POČET vlákien"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Zastaviť server"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Vypísať štatistiku aktuálnej konfigurácie"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABUĽKA"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Zneplatniť zadanú cache"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABUĽKA,áno"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Použiť samostatnú cache pre každého používateľa"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Démon cache služby názvov."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "už beží"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Táto voľba je dostupná iba superužívateľovi!"
-
-@@ -5276,22 +5285,22 @@
- "%15ld%% úspešnosť cache\n"
- "%15s skontrolujte /etc/%s na zmeny\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Nenájdené \"%s\" v cache hesiel!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Neplatné Äíselné uid \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Nenájdené \"%d\" v cache hesiel!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "nie je možné vytvoriÅ¥ zoznam zluÄiteľnosti"
-
-@@ -5342,7 +5351,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Nie je možné otvoriť cache súbor %s\n"
-@@ -5388,15 +5397,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Premenovanie %s na %s zlyhalo"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "zdieľaný objekt nie je otvorený"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "PoÄítadlo generovania TLS pretieklo! Prosím poÅ¡lite správu pomocou skriptu 'glibcbug'."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST nie je pre SUID/SGID programy povolené"
-
-@@ -5413,181 +5422,193 @@
- msgid "cannot allocate dependency list"
- msgstr "nie je možné prideliť pamäť pre zoznam závislostí"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "nie je možné prideliť pamäť pre vyhľadávací zoznam symbolov"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filtre nie sú podporované s LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "CHYBA V DYNAMICKOM LINKERI!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "chyba poÄas naÄítavania zdieľaných knižníc"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "nie je možné prideliť pamäť pre záznam názvu"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "Nie je možné vytvoriť cache pre hľadanie v ceste"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "nie je možné vytvoriť kópiu RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "nie je možné vytvoriť pole ciest"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "nepodarilo sa zistiť stav zdieľaného objektu"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "nie je možné otvoriť zariadenie pre naplnenie nulami"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "nie je možné vytvoriť deskriptor zdieľaného objektu"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "nie je možné naÄítaÅ¥ údaje súboru"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF zarovnanie príkazu nie je zarovnané na stránku"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF zavádzacia adresa/posunutie nie je správne zarovnaná"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "nie je možné prideliÅ¥ dátové Å¡truktúry TLS pre poÄiatoÄné vlákno"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "nie je možné spracovať TLS dáta"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "nepodarilo sa namapovať segment zo zdieľaného objektu"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "nie je možné dynamicky naÄítaÅ¥ spustiteľný súbor"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "nie je možné zmeniť ochranu pamäti"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "nie je možné namapovať stránky vyplnené nulami"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "nie je možné prideliÅ¥ pamäť pre hlaviÄku programu"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektový súbor neobsahuje žiadnu dynamickú sekciu"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen()"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "nie je možné vytvoriť vyhľadávací zoznam"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "súbor je príliš krátky"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "neprípustná ELF hlaviÄka"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kódovanie dát v ELF súbore nie je big-endian"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kódovanie dát v ELF súbore nie je little-endian"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "Identifikácia verzie ELF súboru sa nezhoduje s aktuálnou"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "Neplatný OS ABI ELF súboru"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "Neplatná verzia ABI ELF súboru"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "interná chyba"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "Verzia súboru ELF sa nezhoduje s aktuálnou"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "phentsize ELF súboru nie je oÄakávaná"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "iba ET_DYN a ET_EXEC môžu byÅ¥ naÄítané"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "nie je možné otvoriť súbor zdieľaného objektu"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "chyba relokácie"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "nie je možné rozšíriť globálny rozsah"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "prázdna substitúcia tokenu dynamického reťazca"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "nie je možné vytvoriť zoznam pôsobnosti"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "nie je možné dátové štruktúry TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "neprípustný mód pre dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen(): statická pamäť TLS je príliš malá"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "nie je možné zmeniť segment na zapisovateľný pre relokáciu"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiler nenašiel PLTREL v objekte %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profiler vyÄerpal pamäť pri vytváraní kópie PLTREL z %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "nie je možné obnoviť segment prot po reloc"
-
-@@ -5643,119 +5664,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurácia runtime väzieb dynamického linkera."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Cesta `%s' bola zadaná viac ako raz"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s nie je známy typ knižnice"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Zlyhal stat %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Zlyhal stat %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s nie je symbolický odkaz\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Nie je možné odstrániť %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Nie je možné vytvoriť odkaz %s na %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (zmenené)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (VYNECHANÉ)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Nie je možné nájsť %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Zlyhal lstat %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Súbor %s ignorovaný, keÄže nie je regulérnym súborom."
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Odkaz nebol vytvorený, keÄže pre %s nebolo možné nájsÅ¥ soname"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Nie je možné otvoriť adresár %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Zlyhal lstat %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Zlyhal stat %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Vstupný súbor %s nebol nájdený.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4 knižnica %s je v nesprávnom adresári"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "knižnice %s a %s v adresári %s majú rovnaké soname, ale odlišný typ."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Nie je možné otvoriÅ¥ konfiguraÄný súbor %s"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Nie je možné zmeniť adresár na /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Nie je možné otvoriť adresár cache súboru %s\n"
-Binary files glibc-2.3.2/po/sv.mo and glibc-2.3.2-200304020432/po/sv.mo differ
-diff -u -udbrN glibc-2.3.2/po/sv.po glibc-2.3.2-200304020432/po/sv.po
---- glibc-2.3.2/po/sv.po Mon Oct 14 22:03:36 2002
-+++ glibc-2.3.2-200304020432/po/sv.po Tue Mar 4 19:25:34 2003
-@@ -1,13 +1,13 @@
- # GNU libc message catalog for swedish
--# Copyright © 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
--# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002.
--# Revision: 1.43
-+# Copyright © 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
-+# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003.
-+# Revision: 1.46
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3.1\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-14 21:09+0200\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-04 18:46+0100\n"
- "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
- "Language-Team: Swedish <sv@li.org>\n"
- "MIME-Version: 1.0\n"
-@@ -260,7 +260,7 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
-+msgid "conversion from `%s' and to `%s' are not supported"
- msgstr "konvertering från \"%s\" och till \"%s\" stöds ej"
-
- #: iconv/iconv_prog.c:246
-@@ -286,7 +286,7 @@
- msgid "error while closing output file"
- msgstr "fel vid stängning av utfilen"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -294,9 +294,9 @@
- "Rapportera fel med programmet \"glibcbug\" till <bugs@gnu.org>.\n"
- "Rapportera fel på översättningen till <sv@li.org>.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -309,9 +309,9 @@
- "INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n"
- "ÄNDAMÅL.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -363,15 +363,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Prefix att använda för alla filåtkomster"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "ingen utfil skapad på grund av varningar"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "vid insättning i sökträd"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "kan inte generera utfil"
-
-@@ -1283,7 +1283,7 @@
- msgid "unterminated symbolic name"
- msgstr "oavslutat symboliskt namn"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "ogiltig kontrollsekvens"
-
-@@ -1313,39 +1313,39 @@
- msgid "trailing garbage at end of line"
- msgstr "avslutande skräp vid radslutet"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Systeminformation:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Skriv namn på tillgängliga lokaler"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Skriv namn på tillgängliga teckenuppsättningar"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Ändra utdataformat:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Skriv namn på valda kategorier"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Skriv namn på valda nyckelord"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Skriv mer information"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Hämta lokal-specifik information"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1353,7 +1353,7 @@
- "NAMN\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "när utdata förbereddes"
-
-@@ -1484,16 +1484,16 @@
- msgid "cannot create temporary file"
- msgstr "kan inte skapa temporärfil"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "kan inte initiera arkivfil"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "kan inte byta storlek på arkivfil"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "kan inte läsa arkivhuvud med mmap"
-
-@@ -1509,88 +1509,88 @@
- msgid "cannot map locale archive file"
- msgstr "kan inte öppna lokalarkivfil med mmap"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "kan inte låsa nytt arkiv"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "kan inte utöka lokalarkivfil"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "kan inte ändra åtkomstläge på storleksändrat lokalarkiv"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "kan inte byta namn på nytt arkiv"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "kan inte öppna lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "kan inte ta status på lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "kan inte låsa lokalarkiv \"%s\""
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "kan inte läsa arkivhuvud"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "lokal \"%s\" finns redan"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "kan inte lägga till till lokalarkiv"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "fil \"%s\" för lokalalias hittas inte"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "Lägger till %s\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "ta status på \"%s\" misslyckades: %s: ignorerad"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" är inte en katalog, ignorerad"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "kan inte öppna katalog \"%s\": %s: ignorerad"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "ofullständig uppsättning av lokalfiler i \"%s\""
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "kan inte läsa alla filer i \"%s\": ignorerad"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "lokal \"%s\" finns inte i arkivet"
-@@ -1659,8 +1659,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "övre gräns i intervall är inte mindre än undre gräns"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "minne slut"
-
-@@ -1686,7 +1686,7 @@
- msgid "Another string for testing."
- msgstr "En till sträng för test."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "NAMN"
-
-@@ -1730,7 +1730,7 @@
- msgid "duplicate set definition"
- msgstr "dubblerad definition av mängd"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "detta är den första definitionen"
-
-@@ -1748,44 +1748,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "okänt direktiv \"%s\": rad ignorerad"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "dubblerat meddelandenummer"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "dubblerad meddelandeidentifierare"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "ogiltigt tecken: meddelandet ignorerat"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "ogiltig rad"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "felaktig rad ignorerad"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "kan inte öppna utfil \"%s\""
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "oavslutat meddelande"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "när gammal katalogfil öppnades"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "konverteringsmoduler inte tillgängliga"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "kan inte avgöra kontrolltecken"
-
-@@ -1793,7 +1793,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: kan inte hantera mer än 8 argument\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Lyckat"
-@@ -2982,23 +2982,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sOkänd signal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "minnet är konsistent, biblioteket är felaktigt\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "minnet förstört före allokerat block\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "minnet förstört efter slutet på allokerat block\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "block frigjort två gånger\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "felaktig mcheck_status, biblioteket är felaktigt\n"
-
-@@ -3034,6 +3034,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "DATAFIL [UTFIL]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Okänt fel"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3058,7 +3062,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Minnet slut: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Okänt systemfel"
-
-@@ -3451,25 +3455,21 @@
- msgid "Interrupted by a signal"
- msgstr "Avbruten av en signal"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Okänt fel"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Användning: %s [-v specifikation] variabelnamn [sökväg]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "okänd specifikation \"%s\""
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "odefinierad"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Okänd variabel \"%s\""
-@@ -3531,71 +3531,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "Ingen träff"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Ogiltigt reguljärt uttryck"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Ogiltigt kollationeringstecken"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Ogiltigt teckenklassnamn"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "Avslutande omvänt snedstreck"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Ogiltig bakåtreferens"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "Obalanserade [ eller [^"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "Obalanserade ( eller \\("
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "Obalanserad \\{"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "Ogiltigt innehåll i \\{\\}"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Ogiltigt intervallslut"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Minnet slut"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Ogiltigt föregående reguljärt uttryck"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "För tidigt slut på reguljärt uttryck"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Reguljärt uttryck för stort"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr "Obalanserade ) eller \\)"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Inget föregående reguljärt uttryck"
-
-@@ -3749,24 +3749,24 @@
- msgid "Service configuration to be used"
- msgstr "Tjänstekonfiguration som ska användas"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Uppräkning stöds inte på %s\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - hämta poster från administrativ databas"
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Databaser som stöds:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "fel antal argument"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Okänd databas: %s\n"
-@@ -3795,68 +3795,72 @@
- msgid "invalid pointer size"
- msgstr "ogiltig pekarstorlek"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Kan inte allokera minne\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: uttag (socket): Alla portar används\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "anslut till adress %s: "
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "Provar %s...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write: (sätter upp standard fel): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (sätter upp standard fel): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: protokollfel i förbindelseuppsättning\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "uttag (socket): protokollfel i förbindelseuppsättning\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: läsning gav för lite data"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "misslyckades ta status (lstat)"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "inte en normal fil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "kan inte öppna"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "misslyckades ta status (fstat)"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "olämplig ägare"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "skrivbar för andra än ägaren"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "hårdlänkad någonstans"
-
-@@ -4067,109 +4071,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "Kan inte ta emot svar på utsändning"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: utdata skulle skriva över %s\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: kan inte öppna %s: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: när resultatet %s skrevs: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "kan inte hitta C preprocessor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "kan inte hitta någon C preprocessor (cpp)\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C preprocessorn avslutades med signal %d\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C preprocessorn avslutades med kod %d\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "otillåten nättyp: \"%s\"\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: för många \"define\"\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: arglist kodningsfel\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "fil \"%s\" finns redan och kan bli överskriven\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Kan inte ange mer än en infil!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Denna implementation stödjer inte \"newstyle\" eller trådsäker kod!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "Kan inte ange netid-flaggan tillsammans med inetd-flaggan!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "Kan inte ange netid-flaggan utan TIRPC!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Kan inte ange tabellflaggor med ny stil\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"infil\" är obligatorisk för mallgenereringsflaggor.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Kan inte ha mer än en filgenereringsflagga!\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "användning: %s infil\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Dnamn[=värde]] [-i storlek] [-I [-K sekunder]] [-Y sökväg] infil\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o utfil] [infil]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s nättyp]* [-o utfil] [infil]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n nätid]* [-o utfil] [infil]\n"
-@@ -4698,7 +4702,7 @@
-
- #: nis/nis_print.c:239
- msgid "\tAccess rights: "
--msgstr "\tÅtkomsträttigheter: "
-+msgstr "\tRättigheter : "
-
- #: nis/nis_print.c:252
- msgid "Group Flags :"
-@@ -4710,7 +4714,7 @@
- "Group Members :\n"
- msgstr ""
- "\n"
--"Guppmedlemmar:\n"
-+"Gruppmedlemmar:\n"
-
- #: nis/nis_print.c:266
- #, c-format
-@@ -4725,7 +4729,7 @@
- #: nis/nis_print.c:268
- #, c-format
- msgid "Character Separator : %c\n"
--msgstr "Teckenseparator: %c\n"
-+msgstr "Teckenseparator : %c\n"
-
- #: nis/nis_print.c:269
- #, c-format
-@@ -4747,7 +4751,7 @@
-
- #: nis/nis_print.c:277
- msgid "\t\tAccess Rights : "
--msgstr "\t\tÅtkomsträttigheter: "
-+msgstr "\t\tRättigheter : "
-
- #: nis/nis_print.c:286
- msgid "Linked Object Type : "
-@@ -4798,7 +4802,7 @@
-
- #: nis/nis_print.c:324
- msgid "Access Rights : "
--msgstr "Åtkomsträttigheter: "
-+msgstr "Rättigheter : "
-
- #: nis/nis_print.c:326
- msgid ""
-@@ -4811,7 +4815,7 @@
- #: nis/nis_print.c:329
- #, c-format
- msgid "Creation Time : %s"
--msgstr "Skapad: %s"
-+msgstr "Skapad : %s"
-
- #: nis/nis_print.c:331
- #, c-format
-@@ -5026,7 +5030,7 @@
- msgid "while allocating hash table entry"
- msgstr "när hashtabellspost allokerades"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "kan inte ta status på fil \"%s\": %s"
-@@ -5039,153 +5043,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "Kan inte köra nscd i säkert läge som opriviligierad användare"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "när cache-post allokerades: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "kan inte öppna uttag (socket): %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: begäran mottagen (version = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "Kan inte hantera äldre förfrågansversion %d, nuvarande version är %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "kan inte skriva resultat: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "kunde inte hämta anropandes identitet: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "när förbindelse accepterades: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "fattas data vid läsning av begäran: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "nyckellängd i begäran för lång: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "fattas data vid läsning av begäransnyckel: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "Misslyckades att köra nscd som användare \"%s\""
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist misslyckades"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups misslyckades"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "när nyckelkopia allokerades"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "när cache-post allokerades"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "ofullständig skrivning i %s: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "Hittar inte \"%s\" i gruppcache!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "Ogiltigt numeriskt gruppid (gid) \"%s\"!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "Hittar inte \"%d\" i gruppcache!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "Hittar inte \"%s\" i värdcache!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Läs konfigurationsdata från NAMN"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Skapa inte barnprocess, visa meddelanden på nuvarande tty"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "ANTAL"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "Starta ANTAL trådar"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Avsluta servern"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Skriv ut nuvarande konfigurationsstatistik"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABELL"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Invalidera den angivna cachen"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABELL,yes"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Använd separat cache för varje användare"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Namntjänst cache-demon"
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "kör redan"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Bara root har tillåtelse att använda denna operation!"
-
-@@ -5275,22 +5284,22 @@
- "%15ld%% cache träffprocent\n"
- "%15s kontrollera /etc/%s för ändringar\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "Hittar inte \"%s\" i lösenordscache!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "Ogiltigt numeriskt användarid (uid) \"%s\"!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "Hittar inte \"%d\" i lösenordscache!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "kan inte skapa egenskapslista"
-
-@@ -5341,7 +5350,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Kan inte öppna cache-fil \"%s\"\n"
-@@ -5387,17 +5396,17 @@
- msgid "Renaming of %s to %s failed"
- msgstr "Namnbyte på %s till %s misslyckades"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "delat objekt är inte öppnat"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr ""
- "Generationsräknare för TLS slog runt! Var snäll och skicka felrapport med\n"
- "\"glibcbug\"-skriptet"
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "DST inte tillåten i SUID/SGID-program"
-
-@@ -5416,181 +5425,193 @@
- msgid "cannot allocate dependency list"
- msgstr "kan inte allokera beroendelista"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "kan inte allokera söklista för symboler"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "Filter stöds ej med LD_TRACE_PRELINKING"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "FEL I DYNAMISK LÄNKARE!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "fel när delade bibliotek laddades"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "kan inte allokera namnpost"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "kan inte skapa cache för sökväg"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "kan inte skapa kopia av RUNPATH/RPATH"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "kan inte skapa säkvägslista"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "kan inte ta status på delat objekt"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "kan inte öppna nollfyllnadsenhet"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "kan inte skapa delad objektdeskriptor"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "kan inte läsa fildata"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF-laddkommando är inte på sidgräns"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "Address/position för ELF-laddkommando är inte på rätt bytegräns"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "kan inte skapa TLS-datastrukturer för första tråden"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "kan inte hantera TLS-data"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "misslyckades att mappa segment från delat objekt"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "kan inte ladda exekverbar fil dynamiskt"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "kan inte ändra minnesskydd"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "kan inte mappa nollfyllda sidor"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "Kan inte allokera minne för programhuvud"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "objektfilen har ingen dynamisk sektion"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "delat objekt kan inte göras dlopen() på"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "kan inte skapa söklista"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "fil för kort"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ogiltigt ELF-huvud"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "Kodning för ELF-fildata är inte \"big-endian\""
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "Kodning för ELF-fildata är inte \"little-endian\""
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF-filens versionsidentitet stämmer inte med nuvarande"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF-fil har felaktig version på OS-ABI"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF-fil har felaktig version på ABI"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "internt fel"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF-filens version stämmer inte med nuvarande"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF-filens värde på \"phentsize\" är inte den förväntade"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "bara ET_DYN och ET_EXEC kan laddas"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "kan inte öppna delad objektfil"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "fel vid relokering"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "kan inte utöka globalt område"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "substitution av \"dynamic string token\" är tom"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "kan inte skapa omfångslista"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "kan inte skapa datastrukturer för TLS"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "ogiltiga flaggor för dlopen()"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "delat objekt kan inte göras dlopen() på: statiskt TLS-minne är för litet"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "kan inte göra segment skrivbart för relokering"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profileraren hittade inga PLTREL i objekt %s\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: profileraren fick slut minne för kopiering av PLTREL i %s\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "kan inte återställa segmenträttigheter efter relokering"
-
-@@ -5646,119 +5667,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Konfigurera bindningar för den dynamiska länkaren."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "Sökväg \"%s\" given mer än en gång"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s är inte en känd bibliotekstyp"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "Kan inte ta status på %s"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "Kan inte ta status på %s\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s är inte en symbolisk länk\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "Kan inte ta bort (unlink) %s"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "Kan inte länka %s till %s"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (ändrad)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (HOPPAR ÖVER)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "Kan inte hitta %s"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "Kan inte ta länkstatus på %s"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "Ingen länk skapad eftersom \"soname\" inte hittades för %s"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "Kan inte öppna katalog %s"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "Kan inte ta status (lstat) på %s"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "Kan inte ta status på %s"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Hittar inte infil %s.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4-bibliotek %s i fel katalog"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "bibliotek %s och %s i katalog %s har samma \"soname\" men olika typ."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Kan inte öppna konfigurationsfil \"%s\""
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "Kan inte byta katalog till /"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Kan inte läsa cache-filkatalog \"%s\"\n"
-Binary files glibc-2.3.2/po/tr.mo and glibc-2.3.2-200304020432/po/tr.mo differ
-diff -u -udbrN glibc-2.3.2/po/tr.po glibc-2.3.2-200304020432/po/tr.po
---- glibc-2.3.2/po/tr.po Sat Oct 5 20:15:39 2002
-+++ glibc-2.3.2-200304020432/po/tr.po Tue Mar 4 05:20:34 2003
-@@ -1,13 +1,13 @@
- # Turkish translations for GNU libc messages.
--# Copyright (C) 2002 Free Software Foundation, Inc.
--# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, 2002.
-+# Copyright (C) 2003 Free Software Foundation, Inc.
-+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2003.
- # Onur Tolga ÅžehitoÄŸlu <onur@lcsl.metu.edu.tr>, 1998.
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: libc 2.3\n"
--"POT-Creation-Date: 2002-10-02 17:22-0700\n"
--"PO-Revision-Date: 2002-10-05 17:08+0300\n"
-+"Project-Id-Version: libc 2.3.2\n"
-+"POT-Creation-Date: 2003-02-22 15:34-0800\n"
-+"PO-Revision-Date: 2003-03-04 05:51+0200\n"
- "Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
- "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
-@@ -261,8 +261,8 @@
-
- #: iconv/iconv_prog.c:241
- #, c-format
--msgid "conversions from `%s' and to `%s' are not supported"
--msgstr "`%s'e ve ondan `%s'e dönüşüm desteklenmiyor"
-+msgid "conversion from `%s' and to `%s' are not supported"
-+msgstr "`%s'den ve `%s'e dönüşüm desteklenmiyor"
-
- #: iconv/iconv_prog.c:246
- #, c-format
-@@ -287,7 +287,7 @@
- msgid "error while closing output file"
- msgstr "çıktı dosyası kapatılırken hata"
-
--#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
-+#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
- #: locale/programs/localedef.c:372 catgets/gencat.c:233
- #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
- msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
-@@ -296,9 +296,9 @@
- "ise `glibcbug' betiğini kullanarak oluşturacağınız hata raporuyla\n"
- "<bugs@gnu.org> adresine bildiriniz.\n"
-
--#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
--#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
--#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
-+#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-+#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-+#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
- #: elf/sprof.c:349
- #, c-format
- msgid ""
-@@ -311,9 +311,9 @@
- "HİÇBİR garanti yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ KULLANIMINIZA\n"
- "UYGUNLUĞU için bile garanti verilmez.\n"
-
--#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
--#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
--#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
-+#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-+#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-+#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
- #: elf/sprof.c:355
- #, c-format
- msgid "Written by %s.\n"
-@@ -365,15 +365,15 @@
- msgid "Prefix used for all file accesses"
- msgstr "Tüm dosya erişimlerinde kullanılan önek"
-
--#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
-+#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
- msgid "no output file produced because warning were issued"
- msgstr "uyarı yayınlandığından üretilen bir çıktı dosyası yok"
-
--#: iconv/iconvconfig.c:403
-+#: iconv/iconvconfig.c:405
- msgid "while inserting in search tree"
- msgstr "arama ağacına eklenirken"
-
--#: iconv/iconvconfig.c:1202
-+#: iconv/iconvconfig.c:1204
- msgid "cannot generate output file"
- msgstr "çıktı dosyası üretilemiyor"
-
-@@ -1283,7 +1283,7 @@
- msgid "unterminated symbolic name"
- msgstr "sonlandırılmamış sembolik isim"
-
--#: locale/programs/linereader.c:537 catgets/gencat.c:1166
-+#: locale/programs/linereader.c:537 catgets/gencat.c:1195
- msgid "invalid escape sequence"
- msgstr "geçersiz escape dizisi"
-
-@@ -1313,39 +1313,39 @@
- msgid "trailing garbage at end of line"
- msgstr "satır sonu bozuk"
-
--#: locale/programs/locale.c:73
-+#: locale/programs/locale.c:75
- msgid "System information:"
- msgstr "Sistem bilgileri:"
-
--#: locale/programs/locale.c:75
-+#: locale/programs/locale.c:77
- msgid "Write names of available locales"
- msgstr "Mevcut yerellerin isimlerini yazar"
-
--#: locale/programs/locale.c:77
-+#: locale/programs/locale.c:79
- msgid "Write names of available charmaps"
- msgstr "Mevcut karakter eÅŸlemlerin isimlerini yazar"
-
--#: locale/programs/locale.c:78
-+#: locale/programs/locale.c:80
- msgid "Modify output format:"
- msgstr "Değiştirme çıktı biçemi:"
-
--#: locale/programs/locale.c:79
-+#: locale/programs/locale.c:81
- msgid "Write names of selected categories"
- msgstr "Seçilmiş kategorilerin isimlerini yazar"
-
--#: locale/programs/locale.c:80
-+#: locale/programs/locale.c:82
- msgid "Write names of selected keywords"
- msgstr "Seçilmiş anahtar kelimelerin isimlerini yazar"
-
--#: locale/programs/locale.c:81
-+#: locale/programs/locale.c:83
- msgid "Print more information"
- msgstr "Daha fazla ileti basar"
-
--#: locale/programs/locale.c:86
-+#: locale/programs/locale.c:88
- msgid "Get locale-specific information."
- msgstr "Dile özel bilgiler alınır"
-
--#: locale/programs/locale.c:89
-+#: locale/programs/locale.c:91
- msgid ""
- "NAME\n"
- "[-a|-m]"
-@@ -1353,7 +1353,7 @@
- "Ä°SÄ°M\n"
- "[-a|-m]"
-
--#: locale/programs/locale.c:488
-+#: locale/programs/locale.c:512
- msgid "while preparing output"
- msgstr "çıktıyı hazırlarken"
-
-@@ -1484,16 +1484,16 @@
- msgid "cannot create temporary file"
- msgstr "geçici dosya oluşturulamıyor"
-
--#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
-+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
- msgid "cannot initialize archive file"
- msgstr "arşiv dosyası ilklendirilemiyor"
-
--#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
-+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
- msgid "cannot resize archive file"
- msgstr "arşiv dosyasının boyutu değiştirilemiyor"
-
--#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
--#: locale/programs/locarchive.c:508
-+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-+#: locale/programs/locarchive.c:511
- msgid "cannot map archive header"
- msgstr "arşiv başlığı eşlenemiyor"
-
-@@ -1509,88 +1509,88 @@
- msgid "cannot map locale archive file"
- msgstr "yerel arşiv dosyası eşlenemiyor"
-
--#: locale/programs/locarchive.c:326
-+#: locale/programs/locarchive.c:329
- msgid "cannot lock new archive"
- msgstr "yeni arÅŸiv kilitlenemiyor"
-
--#: locale/programs/locarchive.c:377
-+#: locale/programs/locarchive.c:380
- msgid "cannot extend locale archive file"
- msgstr "yerel arşiv dosyası genişletilemiyor"
-
--#: locale/programs/locarchive.c:386
-+#: locale/programs/locarchive.c:389
- msgid "cannot change mode of resized locale archive"
- msgstr "boyutu deÄŸiÅŸtirilen yerel arÅŸivin kipi deÄŸiÅŸtirilemiyor"
-
--#: locale/programs/locarchive.c:394
-+#: locale/programs/locarchive.c:397
- msgid "cannot rename new archive"
- msgstr "yeni arÅŸivin ismi deÄŸiÅŸtirilemiyor"
-
--#: locale/programs/locarchive.c:447
-+#: locale/programs/locarchive.c:450
- #, c-format
- msgid "cannot open locale archive \"%s\""
- msgstr "yerel arşiv `%s' açılamıyor"
-
--#: locale/programs/locarchive.c:452
-+#: locale/programs/locarchive.c:455
- #, c-format
- msgid "cannot stat locale archive \"%s\""
- msgstr "\"%s\" yerel arşivi durumlanamıyor"
-
--#: locale/programs/locarchive.c:471
-+#: locale/programs/locarchive.c:474
- #, c-format
- msgid "cannot lock locale archive \"%s\""
- msgstr "\"%s\" yerel arÅŸivi kilitlenemiyor"
-
--#: locale/programs/locarchive.c:494
-+#: locale/programs/locarchive.c:497
- msgid "cannot read archive header"
- msgstr "arşiv başlığı okunamıyor"
-
--#: locale/programs/locarchive.c:554
-+#: locale/programs/locarchive.c:557
- #, c-format
- msgid "locale '%s' already exists"
- msgstr "`%s' yereli zaten var"
-
--#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
--#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
-+#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-+#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
- #: locale/programs/locfile.c:343
- msgid "cannot add to locale archive"
- msgstr "yerel arşive ekleme yapılamıyor"
-
--#: locale/programs/locarchive.c:976
-+#: locale/programs/locarchive.c:982
- #, c-format
- msgid "locale alias file `%s' not found"
- msgstr "`%s' yerel isim dosyası bulunamadı"
-
--#: locale/programs/locarchive.c:1118
-+#: locale/programs/locarchive.c:1126
- #, c-format
- msgid "Adding %s\n"
- msgstr "%s ekleniyor\n"
-
--#: locale/programs/locarchive.c:1124
-+#: locale/programs/locarchive.c:1132
- #, c-format
- msgid "stat of \"%s\" failed: %s: ignored"
- msgstr "\"%s\" durumlaması başarısız: %s: yoksayıldı"
-
--#: locale/programs/locarchive.c:1130
-+#: locale/programs/locarchive.c:1138
- #, c-format
- msgid "\"%s\" is no directory; ignored"
- msgstr "\"%s\" dizinsiz; yoksayıldı"
-
--#: locale/programs/locarchive.c:1137
-+#: locale/programs/locarchive.c:1145
- #, c-format
- msgid "cannot open directory \"%s\": %s: ignored"
- msgstr "\"%s\" dizini açılamıyor: %s: yoksayıldı"
-
--#: locale/programs/locarchive.c:1209
-+#: locale/programs/locarchive.c:1217
- #, c-format
- msgid "incomplete set of locale files in \"%s\""
- msgstr "\"%s\" içindeki yerel dosyaları kümesi tamamlanmamış"
-
--#: locale/programs/locarchive.c:1273
-+#: locale/programs/locarchive.c:1281
- #, c-format
- msgid "cannot read all files in \"%s\": ignored"
- msgstr "\"%s\" içindeki hiçbir dosya okunamıyor: yoksayıldı"
-
--#: locale/programs/locarchive.c:1343
-+#: locale/programs/locarchive.c:1351
- #, c-format
- msgid "locale \"%s\" not in archive"
- msgstr "\"%s\" yeri arÅŸivde deÄŸil"
-@@ -1659,8 +1659,8 @@
- msgid "upper limit in range is not smaller then lower limit"
- msgstr "kapsamdaki üst sınır alt sınırdan küçük değil"
-
--#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
--#: posix/getconf.c:996
-+#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-+#: posix/getconf.c:1002
- msgid "memory exhausted"
- msgstr "bellek tükendi"
-
-@@ -1686,7 +1686,7 @@
- msgid "Another string for testing."
- msgstr "Test edilecek diÄŸer dizge."
-
--#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
-+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
- msgid "NAME"
- msgstr "Ä°SÄ°M"
-
-@@ -1708,7 +1708,7 @@
- "Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
- "is -, output is written to standard output.\n"
- msgstr ""
--"İleti kataloğu üretilir.GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
-+"İleti kataloğu üretilir. GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
- "ÇIKTI-DOSYASI - verilirse standart çıktıya yazılır.\n"
-
- #: catgets/gencat.c:125
-@@ -1731,7 +1731,7 @@
- msgid "duplicate set definition"
- msgstr "küme ataması tekrarlanmış"
-
--#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
-+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
- msgid "this is the first definition"
- msgstr "bu ilk tanım"
-
-@@ -1749,44 +1749,44 @@
- msgid "unknown directive `%s': line ignored"
- msgstr "bilinmeyen `%s' yönergesi: satır yoksayıldı"
-
--#: catgets/gencat.c:617
-+#: catgets/gencat.c:621
- msgid "duplicated message number"
- msgstr "tekrarlanmış ileti numarası"
-
--#: catgets/gencat.c:645
-+#: catgets/gencat.c:674
- msgid "duplicated message identifier"
- msgstr "ileti tanıtıcı tekrarlanmış"
-
--#: catgets/gencat.c:702
-+#: catgets/gencat.c:731
- msgid "invalid character: message ignored"
- msgstr "geçersiz karakter: ileti yoksayıldı"
-
--#: catgets/gencat.c:745
-+#: catgets/gencat.c:774
- msgid "invalid line"
- msgstr "satır geçersiz"
-
--#: catgets/gencat.c:799
-+#: catgets/gencat.c:828
- msgid "malformed line ignored"
- msgstr "hatalı satır yoksayıldı"
-
--#: catgets/gencat.c:963 catgets/gencat.c:1004
-+#: catgets/gencat.c:992 catgets/gencat.c:1033
- #, c-format
- msgid "cannot open output file `%s'"
- msgstr "`%s' çıktı dosyası açılamıyor"
-
--#: catgets/gencat.c:1188
-+#: catgets/gencat.c:1217
- msgid "unterminated message"
- msgstr "sonlandırılmamış ileti"
-
--#: catgets/gencat.c:1212
-+#: catgets/gencat.c:1241
- msgid "while opening old catalog file"
- msgstr "eski katalog dosyası açılırken"
-
--#: catgets/gencat.c:1303
-+#: catgets/gencat.c:1332
- msgid "conversion modules not available"
- msgstr "dönüşüm modülleri yok"
-
--#: catgets/gencat.c:1329
-+#: catgets/gencat.c:1358
- msgid "cannot determine escape character"
- msgstr "öncelem karakteri saptanamıyor"
-
-@@ -1794,7 +1794,7 @@
- msgid "makecontext: does not know how to handle more than 8 arguments\n"
- msgstr "makecontext: 8 argümandan fazlasının nasıl elde edileceği bilinmiyor\n"
-
--#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
-+#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
- #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
- msgid "Success"
- msgstr "Başarılı"
-@@ -2983,23 +2983,23 @@
- msgid "%s%sUnknown signal %d\n"
- msgstr "%s%sBilinmeyen sinyal %d\n"
-
--#: malloc/mcheck.c:296
-+#: malloc/mcheck.c:346
- msgid "memory is consistent, library is buggy\n"
- msgstr "bellek tutarlı, kitaplık hatalı\n"
-
--#: malloc/mcheck.c:299
-+#: malloc/mcheck.c:349
- msgid "memory clobbered before allocated block\n"
- msgstr "bellek ayrılmış bloğun öncesine taştı\n"
-
--#: malloc/mcheck.c:302
-+#: malloc/mcheck.c:352
- msgid "memory clobbered past end of allocated block\n"
- msgstr "bellek ayrılmış bloğun sonrasına taştı\n"
-
--#: malloc/mcheck.c:305
-+#: malloc/mcheck.c:355
- msgid "block freed twice\n"
- msgstr "blok iki kere serbest bırakıldı\n"
-
--#: malloc/mcheck.c:308
-+#: malloc/mcheck.c:358
- msgid "bogus mcheck_status, library is buggy\n"
- msgstr "mcheck_status sahte, kitaplık hatalı\n"
-
-@@ -3037,6 +3037,10 @@
- msgid "DATAFILE [OUTFILE]"
- msgstr "VERİDOSYASI [ÇIKTIDOSYASI]"
-
-+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-+msgid "Unknown error"
-+msgstr "Bilinmeyen hata"
-+
- #: string/strsignal.c:69
- #, c-format
- msgid "Real-time signal %d"
-@@ -3061,7 +3065,7 @@
- msgid "%s: Memory exhausted: %s\n"
- msgstr "%s: Bellek tükendi: %s\n"
-
--#: timezone/zic.c:390 misc/error.c:120
-+#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
- msgid "Unknown system error"
- msgstr "Bilinmeyen sistem hatası"
-
-@@ -3454,25 +3458,21 @@
- msgid "Interrupted by a signal"
- msgstr "Bir sinyal ile engellendi"
-
--#: posix/../sysdeps/posix/gai_strerror.c:57
--msgid "Unknown error"
--msgstr "Bilinmeyen hata"
--
--#: posix/getconf.c:883
-+#: posix/getconf.c:889
- #, c-format
- msgid "Usage: %s [-v specification] variable_name [pathname]\n"
- msgstr "Kullanımı: %s [-v özellik] değişken_ismi [dosyayolu_ismi]\n"
-
--#: posix/getconf.c:941
-+#: posix/getconf.c:947
- #, c-format
- msgid "unknown specification \"%s\""
- msgstr "Özellik \"%s\" bilinmiyor"
-
--#: posix/getconf.c:968 posix/getconf.c:984
-+#: posix/getconf.c:974 posix/getconf.c:990
- msgid "undefined"
- msgstr "atanmamış"
-
--#: posix/getconf.c:1006
-+#: posix/getconf.c:1012
- #, c-format
- msgid "Unrecognized variable `%s'"
- msgstr "Tanınmayan değişken `%s'"
-@@ -3534,71 +3534,71 @@
- msgid "%s: option `-W %s' doesn't allow an argument\n"
- msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
-
--#: posix/regcomp.c:181
-+#: posix/regcomp.c:136
- msgid "No match"
- msgstr "EÅŸleÅŸme yok"
-
--#: posix/regcomp.c:184
-+#: posix/regcomp.c:139
- msgid "Invalid regular expression"
- msgstr "Düzenli ifade geçersiz"
-
--#: posix/regcomp.c:187
-+#: posix/regcomp.c:142
- msgid "Invalid collation character"
- msgstr "Karşılaştırma karakteri geçersiz"
-
--#: posix/regcomp.c:190
-+#: posix/regcomp.c:145
- msgid "Invalid character class name"
- msgstr "Geçersiz karakter sınıfı ismi"
-
--#: posix/regcomp.c:193
-+#: posix/regcomp.c:148
- msgid "Trailing backslash"
- msgstr "İzleyen tersbölü"
-
--#: posix/regcomp.c:196
-+#: posix/regcomp.c:151
- msgid "Invalid back reference"
- msgstr "Geriye başvuru geçersiz"
-
--#: posix/regcomp.c:199
-+#: posix/regcomp.c:154
- msgid "Unmatched [ or [^"
- msgstr "[ ya da [^ eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:202
-+#: posix/regcomp.c:157
- msgid "Unmatched ( or \\("
- msgstr "( ya da \\( eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:205
-+#: posix/regcomp.c:160
- msgid "Unmatched \\{"
- msgstr "\\{ eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:208
-+#: posix/regcomp.c:163
- msgid "Invalid content of \\{\\}"
- msgstr "\\{\\} içeriği geçersiz"
-
--#: posix/regcomp.c:211
-+#: posix/regcomp.c:166
- msgid "Invalid range end"
- msgstr "Geçersiz kapsam sonu"
-
--#: posix/regcomp.c:214
-+#: posix/regcomp.c:169
- msgid "Memory exhausted"
- msgstr "Bellek tükendi"
-
--#: posix/regcomp.c:217
-+#: posix/regcomp.c:172
- msgid "Invalid preceding regular expression"
- msgstr "Önceleme düzenli ifadesi geçersiz"
-
--#: posix/regcomp.c:220
-+#: posix/regcomp.c:175
- msgid "Premature end of regular expression"
- msgstr "Düzenli ifadenin sonu eksik"
-
--#: posix/regcomp.c:223
-+#: posix/regcomp.c:178
- msgid "Regular expression too big"
- msgstr "Düzenli ifade çok büyük"
-
--#: posix/regcomp.c:226
-+#: posix/regcomp.c:181
- msgid "Unmatched ) or \\)"
- msgstr ") ya da \\) eÅŸleÅŸmiyor"
-
--#: posix/regcomp.c:673
-+#: posix/regcomp.c:615
- msgid "No previous regular expression"
- msgstr "Önceki düzenli ifade yok"
-
-@@ -3754,24 +3754,24 @@
- msgid "Service configuration to be used"
- msgstr "Kullanılacak yapılandırmayı hizmete alır"
-
--#: nss/getent.c:136 nss/getent.c:305
-+#: nss/getent.c:136 nss/getent.c:308
- #, c-format
- msgid "Enumeration not supported on %s\n"
- msgstr "Numaralama %s ile desteklenmiyor\n"
-
--#: nss/getent.c:729
-+#: nss/getent.c:732
- msgid "getent - get entries from administrative database."
- msgstr "getent - yönetim veritabanından girdiler alınıyor."
-
--#: nss/getent.c:730
-+#: nss/getent.c:733
- msgid "Supported databases:"
- msgstr "Desteklenen veritabanları:"
-
--#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
-+#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
- msgid "wrong number of arguments"
- msgstr "argüman sayısı hatalı"
-
--#: nss/getent.c:797
-+#: nss/getent.c:800
- #, c-format
- msgid "Unknown database: %s\n"
- msgstr "Bilinmeyen veritabanı: %s\n"
-@@ -3800,68 +3800,72 @@
- msgid "invalid pointer size"
- msgstr "imleyici uzunluğu geçersiz"
-
--#: inet/rcmd.c:174 inet/rcmd.c:177
-+#: inet/rcmd.c:163 inet/rcmd.c:166
-+msgid "rcmd: Cannot allocate memory\n"
-+msgstr "rcmd: Bellek ayrılamadı\n"
-+
-+#: inet/rcmd.c:185 inet/rcmd.c:188
- msgid "rcmd: socket: All ports in use\n"
- msgstr "rcmd: soket: Tüm portlar kullanımda\n"
-
--#: inet/rcmd.c:211
-+#: inet/rcmd.c:222
- #, c-format
- msgid "connect to address %s: "
- msgstr "%s adresine bağlantı:"
-
--#: inet/rcmd.c:229
-+#: inet/rcmd.c:240
- #, c-format
- msgid "Trying %s...\n"
- msgstr "%s deneniyor...\n"
-
--#: inet/rcmd.c:278
-+#: inet/rcmd.c:289
- #, c-format
- msgid "rcmd: write (setting up stderr): %m\n"
- msgstr "rcmd: write (stderr ayarlaması): %m\n"
-
--#: inet/rcmd.c:299
-+#: inet/rcmd.c:310
- #, c-format
- msgid "rcmd: poll (setting up stderr): %m\n"
- msgstr "rcmd: poll (stderr ayarlaması): %m\n"
-
--#: inet/rcmd.c:302
-+#: inet/rcmd.c:313
- msgid "poll: protocol failure in circuit setup\n"
- msgstr "poll: devre ayarında protokol hatası\n"
-
--#: inet/rcmd.c:346
-+#: inet/rcmd.c:358
- msgid "socket: protocol failure in circuit setup\n"
- msgstr "soket: devre ayarında protokol hatası\n"
-
--#: inet/rcmd.c:368
-+#: inet/rcmd.c:387
- #, c-format
- msgid "rcmd: %s: short read"
- msgstr "rcmd: %s: kısa okuma"
-
--#: inet/rcmd.c:524
-+#: inet/rcmd.c:549
- msgid "lstat failed"
- msgstr "lstat başarısız"
-
--#: inet/rcmd.c:526
-+#: inet/rcmd.c:551
- msgid "not regular file"
- msgstr "düzenli dosya değil"
-
--#: inet/rcmd.c:531
-+#: inet/rcmd.c:556
- msgid "cannot open"
- msgstr "açılamıyor"
-
--#: inet/rcmd.c:533
-+#: inet/rcmd.c:558
- msgid "fstat failed"
- msgstr "fstat başarısız"
-
--#: inet/rcmd.c:535
-+#: inet/rcmd.c:560
- msgid "bad owner"
- msgstr "Sahip hatalı"
-
--#: inet/rcmd.c:537
-+#: inet/rcmd.c:562
- msgid "writeable by other than owner"
- msgstr "sahibinden başkası yazabilir"
-
--#: inet/rcmd.c:539
-+#: inet/rcmd.c:564
- msgid "hard linked somewhere"
- msgstr "bir yere sabit bağlı"
-
-@@ -4072,109 +4076,109 @@
- msgid "Cannot receive reply to broadcast"
- msgstr "yayından yanıt alınamıyor"
-
--#: sunrpc/rpc_main.c:289
-+#: sunrpc/rpc_main.c:288
- #, c-format
- msgid "%s: output would overwrite %s\n"
- msgstr "%s: çıktı %s üzerine yazacak\n"
-
--#: sunrpc/rpc_main.c:296
-+#: sunrpc/rpc_main.c:295
- #, c-format
- msgid "%s: unable to open %s: %m\n"
- msgstr "%s: %s dosyasını açmak mümkün değil: %m\n"
-
--#: sunrpc/rpc_main.c:308
-+#: sunrpc/rpc_main.c:307
- #, c-format
- msgid "%s: while writing output %s: %m"
- msgstr "%s: %s çıktısını yazarken: %m"
-
--#: sunrpc/rpc_main.c:343
-+#: sunrpc/rpc_main.c:342
- #, c-format
- msgid "cannot find C preprocessor: %s \n"
- msgstr "C ön işlemci bulunamıyor: %s \n"
-
--#: sunrpc/rpc_main.c:351
-+#: sunrpc/rpc_main.c:350
- msgid "cannot find any C preprocessor (cpp)\n"
- msgstr "hiç C ön işlemci (cpp) bulunamadı\n"
-
--#: sunrpc/rpc_main.c:420
-+#: sunrpc/rpc_main.c:419
- #, c-format
- msgid "%s: C preprocessor failed with signal %d\n"
- msgstr "%s: C önişlemcisi %d sinyali vererek başarısız oldu\n"
-
--#: sunrpc/rpc_main.c:423
-+#: sunrpc/rpc_main.c:422
- #, c-format
- msgid "%s: C preprocessor failed with exit code %d\n"
- msgstr "%s: C önişlemcisi %d çıkış kodu vererek başarısız oldu\n"
-
--#: sunrpc/rpc_main.c:463
-+#: sunrpc/rpc_main.c:462
- #, c-format
- msgid "illegal nettype :`%s'\n"
- msgstr "kuraldışı ağ türü: `%s'\n"
-
--#: sunrpc/rpc_main.c:1105
-+#: sunrpc/rpc_main.c:1104
- msgid "rpcgen: too many defines\n"
- msgstr "rpcgen: çok fazla atama\n"
-
--#: sunrpc/rpc_main.c:1117
-+#: sunrpc/rpc_main.c:1116
- msgid "rpcgen: arglist coding error\n"
- msgstr "rpcgen: argüman listesi kodlama hatası\n"
-
- #. TRANS: the file will not be removed; this is an
- #. TRANS: informative message.
--#: sunrpc/rpc_main.c:1150
-+#: sunrpc/rpc_main.c:1149
- #, c-format
- msgid "file `%s' already exists and may be overwritten\n"
- msgstr "`%s' dosyası zaten var ve üzerine yazılabilir\n"
-
--#: sunrpc/rpc_main.c:1195
-+#: sunrpc/rpc_main.c:1194
- msgid "Cannot specify more than one input file!\n"
- msgstr "Bir girdi dosyasından fazlası belirtilemez!\n"
-
--#: sunrpc/rpc_main.c:1365
-+#: sunrpc/rpc_main.c:1364
- msgid "This implementation doesn't support newstyle or MT-safe code!\n"
- msgstr "Bu tamamlama yenibiçimi ya da MT-safe kodu desteklemez!\n"
-
--#: sunrpc/rpc_main.c:1374
-+#: sunrpc/rpc_main.c:1373
- msgid "Cannot use netid flag with inetd flag!\n"
- msgstr "AğKimlik flaması inetd flaması ile kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1386
-+#: sunrpc/rpc_main.c:1385
- msgid "Cannot use netid flag without TIRPC!\n"
- msgstr "AğKimlik flaması TIRPC olmaksızın kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1393
-+#: sunrpc/rpc_main.c:1392
- msgid "Cannot use table flags with newstyle!\n"
- msgstr "Tablo flamaları yenibiçimle kullanılamaz!\n"
-
--#: sunrpc/rpc_main.c:1412
-+#: sunrpc/rpc_main.c:1411
- msgid "\"infile\" is required for template generation flags.\n"
- msgstr "\"girdiDosyası\" şablon üretim flamaları için gerekli.\n"
-
--#: sunrpc/rpc_main.c:1417
-+#: sunrpc/rpc_main.c:1416
- msgid "Cannot have more than one file generation flag!\n"
- msgstr "Birden fazla dosya üretim flaması olamaz!?\n"
-
--#: sunrpc/rpc_main.c:1426
-+#: sunrpc/rpc_main.c:1425
- #, c-format
- msgid "usage: %s infile\n"
- msgstr "kullanımı: %s girdi-dosyası\n"
-
--#: sunrpc/rpc_main.c:1427
-+#: sunrpc/rpc_main.c:1426
- #, c-format
- msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
- msgstr "\t%s [-abkCLNTM][-Disim[=değer]] [-i boyut] [-I [-K saniye]] [-Y dosyaYolu] girdiDosyası\n"
-
--#: sunrpc/rpc_main.c:1429
-+#: sunrpc/rpc_main.c:1428
- #, c-format
- msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
- msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o çıktıDosyası] [girdiDosyası]\n"
-
--#: sunrpc/rpc_main.c:1431
-+#: sunrpc/rpc_main.c:1430
- #, c-format
- msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
- msgstr "\t%s [-s ağTürü]* [-o çıktıDosyası] [girdiDosyası]\n"
-
--#: sunrpc/rpc_main.c:1432
-+#: sunrpc/rpc_main.c:1431
- #, c-format
- msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
- msgstr "\t%s [-n ağKimlik]* [-o çıktıDosyası] [girdiDosyası]\n"
-@@ -5031,7 +5035,7 @@
- msgid "while allocating hash table entry"
- msgstr "arama (hash) tablosu girdisi ayrılırken"
-
--#: nscd/cache.c:150 nscd/connections.c:185
-+#: nscd/cache.c:150 nscd/connections.c:187
- #, c-format
- msgid "cannot stat() file `%s': %s"
- msgstr "`%s' dosyası stat() olamıyor: %s"
-@@ -5044,153 +5048,158 @@
- msgid "Cannot run nscd in secure mode as unprivileged user"
- msgstr "nscd güvenli kipte yetkisiz kullanıcı olarak çalıştırılamaz"
-
--#: nscd/connections.c:199
-+#: nscd/connections.c:175
-+#, c-format
-+msgid "while allocating cache: %s"
-+msgstr "arabellek girdisi ayrılırken: %s"
-+
-+#: nscd/connections.c:200
- #, c-format
- msgid "cannot open socket: %s"
- msgstr "soket açılamıyor: %s"
-
--#: nscd/connections.c:217
-+#: nscd/connections.c:218
- #, c-format
- msgid "cannot enable socket to accept connections: %s"
- msgstr "bağlantıları kabul etmek üzere soket etkinleştirilemiyor: %s"
-
--#: nscd/connections.c:259
-+#: nscd/connections.c:260
- #, c-format
- msgid "handle_request: request received (Version = %d)"
- msgstr "handle_request: istek alındı (Sürüm = %d)"
-
--#: nscd/connections.c:265
-+#: nscd/connections.c:266
- #, c-format
- msgid "cannot handle old request version %d; current version is %d"
- msgstr "eski istem sürümü %d elde edilemedi; mevcut sürüm %d"
-
--#: nscd/connections.c:303 nscd/connections.c:325
-+#: nscd/connections.c:304 nscd/connections.c:326
- #, c-format
- msgid "cannot write result: %s"
- msgstr "sonuç yazılamıyor: %s"
-
--#: nscd/connections.c:404 nscd/connections.c:498
-+#: nscd/connections.c:405 nscd/connections.c:499
- #, c-format
- msgid "error getting callers id: %s"
- msgstr "çağrıcı kimliği alınırken hata: %s"
-
--#: nscd/connections.c:470
-+#: nscd/connections.c:471
- #, c-format
- msgid "while accepting connection: %s"
- msgstr "bağlantı kabul edilirken: %s"
-
--#: nscd/connections.c:481
-+#: nscd/connections.c:482
- #, c-format
- msgid "short read while reading request: %s"
- msgstr "istenen okuma kısa: %s"
-
--#: nscd/connections.c:517
-+#: nscd/connections.c:518
- #, c-format
- msgid "key length in request too long: %d"
- msgstr "istenen anahtar uzunluÄŸu fazla: %d"
-
--#: nscd/connections.c:531
-+#: nscd/connections.c:532
- #, c-format
- msgid "short read while reading request key: %s"
- msgstr "istenen tuş okunurken kısa okuma: %s"
-
--#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
--#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
-+#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-+#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
- #, c-format
- msgid "Failed to run nscd as user '%s'"
- msgstr "nscd '%s' kullanıcısı olarak çalıştırılamadı"
-
--#: nscd/connections.c:611
-+#: nscd/connections.c:612
- msgid "getgrouplist failed"
- msgstr "getgrouplist başarısız"
-
--#: nscd/connections.c:624
-+#: nscd/connections.c:625
- msgid "setgroups failed"
- msgstr "setgroups başarısız"
-
--#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
-+#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
- msgid "while allocating key copy"
- msgstr "tuş kopyası ayrılırken"
-
--#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
-+#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
- msgid "while allocating cache entry"
- msgstr "arabellek girdisi ayrılırken"
-
--#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
-+#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
- #, c-format
- msgid "short write in %s: %s"
- msgstr "%s içinde kısa yazma: %s"
-
--#: nscd/grpcache.c:217
-+#: nscd/grpcache.c:218
- #, c-format
- msgid "Haven't found \"%s\" in group cache!"
- msgstr "\"%s\" grup arabelleÄŸinde yok!"
-
--#: nscd/grpcache.c:292
-+#: nscd/grpcache.c:284
- #, c-format
- msgid "Invalid numeric gid \"%s\"!"
- msgstr "\"%s\" grup numarası geçersiz!"
-
--#: nscd/grpcache.c:299
-+#: nscd/grpcache.c:291
- #, c-format
- msgid "Haven't found \"%d\" in group cache!"
- msgstr "\"%d\" grup arabelleÄŸinde yok!"
-
--#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
--#: nscd/hstcache.c:533
-+#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-+#: nscd/hstcache.c:500
- #, c-format
- msgid "Haven't found \"%s\" in hosts cache!"
- msgstr "\"%s\" makinalar arabelleÄŸinde yok!"
-
--#: nscd/nscd.c:80
-+#: nscd/nscd.c:85
- msgid "Read configuration data from NAME"
- msgstr "Yapılandırma verisini İSİM den okur"
-
--#: nscd/nscd.c:82
-+#: nscd/nscd.c:87
- msgid "Do not fork and display messages on the current tty"
- msgstr "Üzerinde çalışılan tty de iletiler ayrılmaz ve gösterilir"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "NUMBER"
- msgstr "SAYI"
-
--#: nscd/nscd.c:83
-+#: nscd/nscd.c:88
- msgid "Start NUMBER threads"
- msgstr "SAYIlı başlıkları başlatır"
-
--#: nscd/nscd.c:84
-+#: nscd/nscd.c:89
- msgid "Shut the server down"
- msgstr "Sunucuyu indirir"
-
--#: nscd/nscd.c:85
-+#: nscd/nscd.c:90
- msgid "Print current configuration statistic"
- msgstr "Şu anki yapılandırma istatistiklerini basar"
-
--#: nscd/nscd.c:86
-+#: nscd/nscd.c:91
- msgid "TABLE"
- msgstr "TABLO"
-
--#: nscd/nscd.c:87
-+#: nscd/nscd.c:92
- msgid "Invalidate the specified cache"
- msgstr "Belirtilen arabellek geçersiz kılındı"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "TABLE,yes"
- msgstr "TABLO,evet"
-
--#: nscd/nscd.c:88
-+#: nscd/nscd.c:93
- msgid "Use separate cache for each user"
- msgstr "Her kullanıcı için ayrı arabellek kullanılır"
-
--#: nscd/nscd.c:93
-+#: nscd/nscd.c:98
- msgid "Name Service Cache Daemon."
- msgstr "Name Service Cache Daemon."
-
--#: nscd/nscd.c:126
-+#: nscd/nscd.c:131
- msgid "already running"
- msgstr "Zaten çalışıyor"
-
--#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
-+#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
- msgid "Only root is allowed to use this option!"
- msgstr "Bu seçenek sadece root tarafından kullanılabilir!"
-
-@@ -5280,22 +5289,22 @@
- "%15ld%% arabellekleme oranı\n"
- " /etc/%s'deki değişiklikler için %15s kontrol uygulandı\n"
-
--#: nscd/pwdcache.c:213
-+#: nscd/pwdcache.c:214
- #, c-format
- msgid "Haven't found \"%s\" in password cache!"
- msgstr "\"%s\" parola arabelleÄŸinde yok!"
-
--#: nscd/pwdcache.c:288
-+#: nscd/pwdcache.c:280
- #, c-format
- msgid "Invalid numeric uid \"%s\"!"
- msgstr "\"%s\" kullanıcı numarası geçersiz!"
-
--#: nscd/pwdcache.c:295
-+#: nscd/pwdcache.c:287
- #, c-format
- msgid "Haven't found \"%d\" in password cache!"
- msgstr "\"%d\" parola arabelleÄŸinde yok!"
-
--#: elf/../sysdeps/generic/dl-sysdep.c:297
-+#: elf/../sysdeps/generic/dl-sysdep.c:357
- msgid "cannot create capability list"
- msgstr "yetenek listesi oluşturulamıyor"
-
-@@ -5346,7 +5355,7 @@
- msgid ", OS ABI: %s %d.%d.%d"
- msgstr ", OS ABI: %s %d.%d.%d"
-
--#: elf/cache.c:136 elf/ldconfig.c:1033
-+#: elf/cache.c:136 elf/ldconfig.c:1045
- #, c-format
- msgid "Can't open cache file %s\n"
- msgstr "Arabellek dosyası %s açılamıyor\n"
-@@ -5392,15 +5401,15 @@
- msgid "Renaming of %s to %s failed"
- msgstr "%s'in ismi %s olarak deÄŸiÅŸtirilemedi"
-
--#: elf/dl-close.c:113
-+#: elf/dl-close.c:128
- msgid "shared object not open"
- msgstr "paylaşımlı nesne açık değil"
-
--#: elf/dl-close.c:357 elf/dl-open.c:436
-+#: elf/dl-close.c:486 elf/dl-open.c:444
- msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
- msgstr "TLS üretecinin sayacı başa döndü! Lütfen 'glibcbug' betiğini kullanarak bir hata raporu gönderin."
-
--#: elf/dl-deps.c:111 elf/dl-open.c:177
-+#: elf/dl-deps.c:111 elf/dl-open.c:183
- msgid "DST not allowed in SUID/SGID programs"
- msgstr "SUID/SGID programlarda DST'ye izin verilmez"
-
-@@ -5417,181 +5426,193 @@
- msgid "cannot allocate dependency list"
- msgstr "bağımlılık listesi ayrılamadı"
-
--#: elf/dl-deps.c:492 elf/dl-deps.c:547
-+#: elf/dl-deps.c:494 elf/dl-deps.c:549
- msgid "cannot allocate symbol search list"
- msgstr "sembol arama listesi ayrılamadı"
-
--#: elf/dl-deps.c:532
-+#: elf/dl-deps.c:534
- msgid "Filters not supported with LD_TRACE_PRELINKING"
- msgstr "LD_TRACE_PRELINKING'li süzgeçler destenlenmez"
-
--#: elf/dl-error.c:73
-+#: elf/dl-error.c:75
- msgid "DYNAMIC LINKER BUG!!!"
- msgstr "DÄ°NAMÄ°K BAÄžLAYICI HATASI!!!"
-
--#: elf/dl-error.c:106
-+#: elf/dl-error.c:108
- msgid "error while loading shared libraries"
- msgstr "paylaşımlı kitaplıklar yüklenirken hata oluştu"
-
--#: elf/dl-load.c:338
-+#: elf/dl-load.c:339
- msgid "cannot allocate name record"
- msgstr "isim kaydı ayrılamadı"
-
--#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
-+#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
- msgid "cannot create cache for search path"
- msgstr "dosya arama yolu için arabellek oluşturulamıyor"
-
--#: elf/dl-load.c:545
-+#: elf/dl-load.c:543
- msgid "cannot create RUNPATH/RPATH copy"
- msgstr "RUNPATH/RPATH kopyası oluşturulamıyor"
-
--#: elf/dl-load.c:600
-+#: elf/dl-load.c:598
- msgid "cannot create search path array"
- msgstr "dosya arama yolu dizisi oluşturulamıyor"
-
--#: elf/dl-load.c:796
-+#: elf/dl-load.c:794
- msgid "cannot stat shared object"
- msgstr "paylaşımlı nesne durumlanamıyor"
-
--#: elf/dl-load.c:840
-+#: elf/dl-load.c:838
- msgid "cannot open zero fill device"
- msgstr "sıfırlar içeren aygıt açılamaz"
-
--#: elf/dl-load.c:849 elf/dl-load.c:1855
-+#: elf/dl-load.c:847 elf/dl-load.c:1902
- msgid "cannot create shared object descriptor"
- msgstr "paylaşımlı nesne tanımlayıcı oluşturulamıyor"
-
--#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
-+#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
- msgid "cannot read file data"
- msgstr "dosya verisi okunamıyor"
-
--#: elf/dl-load.c:908
-+#: elf/dl-load.c:906
- msgid "ELF load command alignment not page-aligned"
- msgstr "ELF yükleme komutu hizalaması sayfa-hizalamalı değil"
-
--#: elf/dl-load.c:915
-+#: elf/dl-load.c:913
- msgid "ELF load command address/offset not properly aligned"
- msgstr "ELF yükleme komutu adresi/başvurusu gereği gibi hizalanamıyor"
-
--#: elf/dl-load.c:996
-+#: elf/dl-load.c:988
-+msgid "cannot allocate TLS data structures for initial thread"
-+msgstr "ilk kanak için TLS veri yapıları oluşturulamıyor"
-+
-+#: elf/dl-load.c:1012
-+msgid "cannot handle TLS data"
-+msgstr "TLS verisi alınamıyor"
-+
-+#: elf/dl-load.c:1047
- msgid "failed to map segment from shared object"
- msgstr "parça paylaşımlı nesneden eşleştirilemedi"
-
--#: elf/dl-load.c:1020
-+#: elf/dl-load.c:1071
- msgid "cannot dynamically load executable"
- msgstr "çalıştırılabilir dosya dinamik olarak yüklenemiyor"
-
--#: elf/dl-load.c:1081
-+#: elf/dl-load.c:1132
- msgid "cannot change memory protections"
- msgstr "bellek korumaları değiştirilemiyor"
-
--#: elf/dl-load.c:1100
-+#: elf/dl-load.c:1151
- msgid "cannot map zero-fill pages"
- msgstr "sıfırlar içeren sayfalar eşleştirilemez"
-
--#: elf/dl-load.c:1118
-+#: elf/dl-load.c:1169
- msgid "cannot allocate memory for program header"
- msgstr "uygulama başlığı için bellek ayrılamadı"
-
--#: elf/dl-load.c:1149
-+#: elf/dl-load.c:1200
- msgid "object file has no dynamic section"
- msgstr "nesne dosyasının dinamik bölümü yok"
-
--#: elf/dl-load.c:1193
-+#: elf/dl-load.c:1240
- msgid "shared object cannot be dlopen()ed"
- msgstr "paylaşımlı nesne dlopen()'lanamıyor"
-
--#: elf/dl-load.c:1216
-+#: elf/dl-load.c:1263
- msgid "cannot create searchlist"
- msgstr "arama listesi oluşturulamıyor"
-
--#: elf/dl-load.c:1351
-+#: elf/dl-load.c:1398
- msgid "file too short"
- msgstr "dosya çok küçük"
-
--#: elf/dl-load.c:1374
-+#: elf/dl-load.c:1421
- msgid "invalid ELF header"
- msgstr "ELF başlığı geçersiz"
-
--#: elf/dl-load.c:1383
-+#: elf/dl-load.c:1430
- msgid "ELF file data encoding not big-endian"
- msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-ilk (big-endian) değil"
-
--#: elf/dl-load.c:1385
-+#: elf/dl-load.c:1432
- msgid "ELF file data encoding not little-endian"
- msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-son (little-endian) değil"
-
--#: elf/dl-load.c:1389
-+#: elf/dl-load.c:1436
- msgid "ELF file version ident does not match current one"
- msgstr "ELF dosyası sürüm kimliği mevcut biriyle eşleşmiyor"
-
--#: elf/dl-load.c:1393
-+#: elf/dl-load.c:1440
- msgid "ELF file OS ABI invalid"
- msgstr "ELF dosyası OS ABI geçersiz"
-
--#: elf/dl-load.c:1395
-+#: elf/dl-load.c:1442
- msgid "ELF file ABI version invalid"
- msgstr "ELF dosyası ABI sürümü geçersiz"
-
--#: elf/dl-load.c:1398
-+#: elf/dl-load.c:1445
- msgid "internal error"
- msgstr "iç hata"
-
--#: elf/dl-load.c:1405
-+#: elf/dl-load.c:1452
- msgid "ELF file version does not match current one"
- msgstr "ELF dosyası sürümü mevcut biriyle eşleşmiyor"
-
--#: elf/dl-load.c:1413
-+#: elf/dl-load.c:1460
- msgid "ELF file's phentsize not the expected size"
- msgstr "ELF dosyasının phent uzunluğu beklenen uzunlukta değil"
-
--#: elf/dl-load.c:1419
-+#: elf/dl-load.c:1466
- msgid "only ET_DYN and ET_EXEC can be loaded"
- msgstr "sadece ET_DYN ve ET_EXEC yüklü olabilir"
-
--#: elf/dl-load.c:1870
-+#: elf/dl-load.c:1917
- msgid "cannot open shared object file"
- msgstr "paylaşımlı nesne dosyası açılamıyor"
-
--#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
-+#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
- msgid "relocation error"
- msgstr "yeniden konumlama hatası"
-
--#: elf/dl-open.c:105
-+#: elf/dl-open.c:111
- msgid "cannot extend global scope"
- msgstr "genel kapsam geniÅŸletilemiyor"
-
--#: elf/dl-open.c:208
-+#: elf/dl-open.c:214
- msgid "empty dynamic string token substitution"
- msgstr "boÅŸ dinamik dizge simge ikamesi"
-
--#: elf/dl-open.c:345 elf/dl-open.c:356
-+#: elf/dl-open.c:351 elf/dl-open.c:362
- msgid "cannot create scope list"
- msgstr "etki alanı listesi oluşturulamıyor"
-
--#: elf/dl-open.c:416
-+#: elf/dl-open.c:424
- msgid "cannot create TLS data structures"
- msgstr "TLS veri yapıları oluşturulamıyor"
-
--#: elf/dl-open.c:478
-+#: elf/dl-open.c:486
- msgid "invalid mode for dlopen()"
- msgstr "dlopen() için kip geçersiz"
-
--#: elf/dl-reloc.c:88
-+#: elf/dl-reloc.c:58
-+msgid "shared object cannot be dlopen()ed: static TLS memory too small"
-+msgstr "paylaşımlı nesne dlopen()'lanamıyor: statik TLS belleği çok küçük"
-+
-+#: elf/dl-reloc.c:118
- msgid "cannot make segment writable for relocation"
- msgstr "yeniden konumlama için parça yazılabilir yapılamıyor"
-
--#: elf/dl-reloc.c:174
-+#: elf/dl-reloc.c:219
- #, c-format
- msgid "%s: profiler found no PLTREL in object %s\n"
- msgstr "%s: profiler %s nesnesinde PLTREL bulamadı\n"
-
--#: elf/dl-reloc.c:186
-+#: elf/dl-reloc.c:231
- #, c-format
- msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
- msgstr "%s: %s PLTREL gölgelenirken profiler bellekdışı\n"
-
--#: elf/dl-reloc.c:201
-+#: elf/dl-reloc.c:246
- msgid "cannot restore segment prot after reloc"
- msgstr "reloc işleminden sonra prot segmanı eski haline getirilemedi"
-
-@@ -5647,119 +5668,119 @@
- msgid "Configure Dynamic Linker Run Time Bindings."
- msgstr "Dinamik Bağlayıcının İcra Zamanı Bağıntılarını Yapılandırır."
-
--#: elf/ldconfig.c:282
-+#: elf/ldconfig.c:294
- #, c-format
- msgid "Path `%s' given more than once"
- msgstr "`%s' dosya yolu birden fazla verilmiÅŸ"
-
--#: elf/ldconfig.c:326
-+#: elf/ldconfig.c:338
- #, c-format
- msgid "%s is not a known library type"
- msgstr "%s bilinen bir kitaplık türü değil"
-
--#: elf/ldconfig.c:344
-+#: elf/ldconfig.c:356
- #, c-format
- msgid "Can't stat %s"
- msgstr "stat %s yapılamıyor"
-
--#: elf/ldconfig.c:414
-+#: elf/ldconfig.c:426
- #, c-format
- msgid "Can't stat %s\n"
- msgstr "stat %s yapılamıyor\n"
-
--#: elf/ldconfig.c:424
-+#: elf/ldconfig.c:436
- #, c-format
- msgid "%s is not a symbolic link\n"
- msgstr "%s bir sembolik baÄŸ deÄŸil\n"
-
--#: elf/ldconfig.c:443
-+#: elf/ldconfig.c:455
- #, c-format
- msgid "Can't unlink %s"
- msgstr "%s bağı kaldırılamadı"
-
--#: elf/ldconfig.c:449
-+#: elf/ldconfig.c:461
- #, c-format
- msgid "Can't link %s to %s"
- msgstr "%s den %s'e bağ yapılamıyor"
-
--#: elf/ldconfig.c:455
-+#: elf/ldconfig.c:467
- msgid " (changed)\n"
- msgstr " (deÄŸiÅŸti)\n"
-
--#: elf/ldconfig.c:457
-+#: elf/ldconfig.c:469
- msgid " (SKIPPED)\n"
- msgstr " (ATLANDI)\n"
-
--#: elf/ldconfig.c:512
-+#: elf/ldconfig.c:524
- #, c-format
- msgid "Can't find %s"
- msgstr "%s bulunamıyor"
-
--#: elf/ldconfig.c:528
-+#: elf/ldconfig.c:540
- #, c-format
- msgid "Can't lstat %s"
- msgstr "lstat %s yapılamıyor"
-
--#: elf/ldconfig.c:535
-+#: elf/ldconfig.c:547
- #, c-format
- msgid "Ignored file %s since it is not a regular file."
- msgstr "Normal bir dosya olmadığından %s dosyası yoksayıldı"
-
--#: elf/ldconfig.c:543
-+#: elf/ldconfig.c:555
- #, c-format
- msgid "No link created since soname could not be found for %s"
- msgstr "%s için kitaplık ismi bulunamadığından bağ oluşturulmadı"
-
--#: elf/ldconfig.c:634
-+#: elf/ldconfig.c:646
- #, c-format
- msgid "Can't open directory %s"
- msgstr "%s dizini açılamıyor"
-
--#: elf/ldconfig.c:689 elf/ldconfig.c:736
-+#: elf/ldconfig.c:701 elf/ldconfig.c:748
- #, c-format
- msgid "Cannot lstat %s"
- msgstr "lstat %s yapılamıyor"
-
--#: elf/ldconfig.c:701
-+#: elf/ldconfig.c:713
- #, c-format
- msgid "Cannot stat %s"
- msgstr "stat %s yapılamıyor"
-
--#: elf/ldconfig.c:758 elf/readlib.c:93
-+#: elf/ldconfig.c:770 elf/readlib.c:93
- #, c-format
- msgid "Input file %s not found.\n"
- msgstr "Girdi dosyası %s bulunamadı.\n"
-
--#: elf/ldconfig.c:792
-+#: elf/ldconfig.c:804
- #, c-format
- msgid "libc5 library %s in wrong directory"
- msgstr "libc5 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:795
-+#: elf/ldconfig.c:807
- #, c-format
- msgid "libc6 library %s in wrong directory"
- msgstr "libc6 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:798
-+#: elf/ldconfig.c:810
- #, c-format
- msgid "libc4 library %s in wrong directory"
- msgstr "libc4 kitaplığı %s yanlış dizinde"
-
--#: elf/ldconfig.c:825
-+#: elf/ldconfig.c:837
- #, c-format
- msgid "libraries %s and %s in directory %s have same soname but different type."
- msgstr "%s ve %s kitaplıkları %s dizininde ve aynı isme sahip oldukları halde farklı türde."
-
--#: elf/ldconfig.c:928
-+#: elf/ldconfig.c:940
- #, c-format
- msgid "Can't open configuration file %s"
- msgstr "Yapılandırma dosyası %s açılamıyor"
-
--#: elf/ldconfig.c:1012
-+#: elf/ldconfig.c:1024
- msgid "Can't chdir to /"
- msgstr "/ dizinine geçilemiyor"
-
--#: elf/ldconfig.c:1054
-+#: elf/ldconfig.c:1066
- #, c-format
- msgid "Can't open cache file directory %s\n"
- msgstr "Arabellek dosyasının dizini %s açılamıyor\n"
-Binary files glibc-2.3.2/po/zh_CN.mo and glibc-2.3.2-200304020432/po/zh_CN.mo differ
-Binary files glibc-2.3.2/po/zh_TW.mo and glibc-2.3.2-200304020432/po/zh_TW.mo differ
-diff -u -udbrN glibc-2.3.2/posix/Makefile glibc-2.3.2-200304020432/posix/Makefile
---- glibc-2.3.2/posix/Makefile Sun Feb 23 10:23:05 2003
-+++ glibc-2.3.2-200304020432/posix/Makefile Wed Mar 19 23:32:19 2003
-@@ -75,7 +75,7 @@
- tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
- tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
- bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
-- bug-regex13 bug-regex14 bug-regex15 bug-regex16
-+ bug-regex13 bug-regex14 bug-regex15 bug-regex16 tst-nice
- ifeq (yes,$(build-shared))
- test-srcs := globtest
- tests += wordexp-test tst-exec tst-spawn
-diff -u -udbrN glibc-2.3.2/posix/confstr.c glibc-2.3.2-200304020432/posix/confstr.c
---- glibc-2.3.2/posix/confstr.c Wed Feb 12 22:15:00 2003
-+++ glibc-2.3.2-200304020432/posix/confstr.c Wed Mar 5 04:02:26 2003
-@@ -143,12 +143,13 @@
-
- case _CS_GNU_LIBC_VERSION:
- string = "glibc " VERSION;
-- string_len = strlen (string);
-+ string_len = sizeof ("glibc " VERSION);
-+ break;
-
- case _CS_GNU_LIBPTHREAD_VERSION:
- #ifdef LIBPTHREAD_VERSION
- string = LIBPTHREAD_VERSION;
-- string_len = strlen (string);
-+ string_len = sizeof LIBPTHREAD_VERSION;
- break;
- #else
- /* No thread library. */
-diff -u -udbrN glibc-2.3.2/posix/fnmatch.c glibc-2.3.2-200304020432/posix/fnmatch.c
---- glibc-2.3.2/posix/fnmatch.c Sun Aug 4 06:32:39 2002
-+++ glibc-2.3.2-200304020432/posix/fnmatch.c Sun Mar 16 02:03:46 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991-93,96-99,2000,01,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,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
-@@ -333,7 +334,7 @@
- /* Convert the strings into wide characters. */
- memset (&ps, '\0', sizeof (ps));
- n = mbsrtowcs (NULL, &pattern, 0, &ps);
-- if (__builtin_expect (n, 0) == (size_t) -1)
-+ if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
-@@ -344,7 +345,7 @@
-
- assert (mbsinit (&ps));
- n = mbsrtowcs (NULL, &string, 0, &ps);
-- if (__builtin_expect (n, 0) == (size_t) -1)
-+ if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
-diff -u -udbrN glibc-2.3.2/posix/fnmatch_loop.c glibc-2.3.2-200304020432/posix/fnmatch_loop.c
---- glibc-2.3.2/posix/fnmatch_loop.c Mon Mar 11 09:32:00 2002
-+++ glibc-2.3.2-200304020432/posix/fnmatch_loop.c Sun Mar 16 04:22:23 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991-1993, 1996-2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,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
-@@ -539,11 +540,13 @@
- if (! is_range)
- {
- # ifdef WIDE_CHAR_VERSION
-- for (c1 = 0; c1 < wextra[idx]; ++c1)
-+ for (c1 = 0;
-+ (int32_t) c1 < wextra[idx];
-+ ++c1)
- if (n[c1] != wextra[1 + c1])
- break;
-
-- if (c1 == wextra[idx])
-+ if ((int32_t) c1 == wextra[idx])
- goto matched;
- # else
- for (c1 = 0; c1 < extra[idx]; ++c1)
-@@ -932,7 +935,7 @@
- case L('/'):
- if (NO_LEADING_PERIOD (flags))
- {
-- if (n == string_end || c != *n)
-+ if (n == string_end || c != (UCHAR) *n)
- return FNM_NOMATCH;
-
- new_no_leading_period = 1;
-diff -u -udbrN glibc-2.3.2/posix/getconf.c glibc-2.3.2-200304020432/posix/getconf.c
---- glibc-2.3.2/posix/getconf.c Wed Feb 12 22:09:19 2003
-+++ glibc-2.3.2-200304020432/posix/getconf.c Fri Mar 14 07:20:08 2003
-@@ -865,6 +865,9 @@
- #ifdef _CS_GNU_LIBPTHREAD_VERSION
- { "GNU_LIBPTHREAD_VERSION", _CS_GNU_LIBPTHREAD_VERSION, CONFSTR },
- #endif
-+#ifdef _PC_2_SYMLINKS
-+ { "POSIX2_SYMLINKS", _PC_2_SYMLINKS, PATHCONF },
-+#endif
-
- { NULL, 0, SYSCONF }
- };
-diff -u -udbrN glibc-2.3.2/posix/glob/ChangeLog glibc-2.3.2-200304020432/posix/glob/ChangeLog
---- glibc-2.3.2/posix/glob/ChangeLog Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/ChangeLog Fri Jul 26 02:34:28 1996
-@@ -0,0 +1,23 @@
-+Sat Jul 20 21:55:31 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ Win32 hacks from <Rob_Tulloh@tivoli.com>.
-+ * posix/glob.c [WIN32]: Don't include <pwd.h>; don't use d_ino;
-+ use void * for my_realloc; include <malloc.h> for alloca.
-+ (glob) [WIN32]: Use "c:/users/default" for ~ if no HOME variable.
-+ * posix/fnmatch.h [WIN32]: Use prototypes even if [!__STDC__].
-+ * posix/glob.h: Likewise.
-+
-+Fri Jul 19 16:56:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/glob.h [!_AMIGA && !VMS]: Check this instead of just [!_AMIGA]
-+ for `struct stat;' forward decl.
-+
-+Sat Jun 22 10:44:09 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/glob.c: Include <alloca.h> only [HAVE_ALLOCA_H], not [sparc].
-+
-+Fri Jun 21 00:27:51 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-+
-+ * posix/fnmatch.c (fnmatch): Fix \*[*?]+ case to increment name ptr
-+ only for ?s, not for *s. Fix from Chet Ramey.
-+
-diff -u -udbrN glibc-2.3.2/posix/glob/Makefile.ami glibc-2.3.2-200304020432/posix/glob/Makefile.ami
---- glibc-2.3.2/posix/glob/Makefile.ami Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/Makefile.ami Tue Aug 27 00:40:48 2002
-@@ -0,0 +1,69 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+
-+# Copyright (C) 1991, 92, 93, 94, 95, 97 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+
-+# This 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 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; see the file COPYING.LIB. If not,
-+# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+# Boston, MA 02111-1307, USA.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = /glob/
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = /glob/
-+
-+CC = sc
-+RM = delete
-+CPPFLAGS =
-+CFLAGS =
-+
-+# Information determined by configure.
-+DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
-+ Define HAVE_DIRENT_H
-+
-+# How to invoke ar.
-+AR = join
-+ARFLAGS = as
-+
-+# How to invoke ranlib.
-+RANLIB = ;
-+
-+.PHONY: all
-+all: glob.lib
-+
-+glob.lib : glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)foo.c!!
-+glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-+fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-+
-+OUTPUT_OPTION =
-+.c.o:
-+ $(CC) IDir "" \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -$(RM) glob.lib "#?.o" core
-+distclean glob-realclean: clean
-+ -$(RM) TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
-diff -u -udbrN glibc-2.3.2/posix/glob/Makefile.in glibc-2.3.2-200304020432/posix/glob/Makefile.in
---- glibc-2.3.2/posix/glob/Makefile.in Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/Makefile.in Tue Aug 27 00:39:49 2002
-@@ -0,0 +1,66 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+
-+# Copyright (C) 1991, 92, 93, 94, 95 Free Software Foundation, Inc.
-+# This file is part of the GNU C Library.
-+
-+# This 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 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 this library; see the file COPYING.LIB. If
-+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-+# Suite 330, Boston, MA 02111 USA.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = @srcdir@
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = @srcdir@
-+
-+CC = @CC@
-+CPPFLAGS = @CPPFLAGS@
-+CFLAGS = @CFLAGS@
-+
-+# Information determined by configure.
-+DEFS = @DEFS@
-+
-+# How to invoke ar.
-+AR = @AR@
-+ARFLAGS = rv
-+
-+# How to invoke ranlib.
-+RANLIB = @RANLIB@
-+
-+.PHONY: all
-+all: libglob.a
-+
-+libglob.a: glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)/foo.c!!
-+glob.o: $(srcdir)/glob.h $(srcdir)/fnmatch.h glob.c
-+fnmatch.o: $(srcdir)/fnmatch.h fnmatch.c
-+
-+.c.o:
-+ $(CC) -I. -I$(srcdir) -c \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -rm -f libglob.a *.o core
-+distclean glob-realclean: clean
-+ -rm -f TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
-diff -u -udbrN glibc-2.3.2/posix/glob/SCOPTIONS glibc-2.3.2-200304020432/posix/glob/SCOPTIONS
---- glibc-2.3.2/posix/glob/SCOPTIONS Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/SCOPTIONS Thu May 9 19:54:36 1996
-@@ -0,0 +1,13 @@
-+ERRORREXX
-+OPTIMIZE
-+NOVERSION
-+OPTIMIZERTIME
-+OPTIMIZERALIAS
-+DEFINE INCLUDEDIR="include:"
-+DEFINE LIBDIR="lib:"
-+DEFINE NO_ALLOCA
-+DEFINE NO_FLOAT
-+DEFINE NO_ARCHIVES
-+IGNORE=161
-+IGNORE=100
-+STARTUP=cres
-diff -u -udbrN glibc-2.3.2/posix/glob/SMakefile glibc-2.3.2-200304020432/posix/glob/SMakefile
---- glibc-2.3.2/posix/glob/SMakefile Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/SMakefile Fri Jul 6 06:55:38 2001
-@@ -0,0 +1,68 @@
-+# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-+# Copyright (C) 1991, 92, 93, 94, 95, 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.
-+
-+# Ultrix 2.2 make doesn't expand the value of VPATH.
-+VPATH = /glob/
-+# This must repeat the value, because configure will remove `VPATH = .'.
-+srcdir = /glob/
-+
-+CC = sc
-+CPPFLAGS =
-+CFLAGS =
-+MAKE = smake
-+RM = delete
-+
-+# Information determined by configure.
-+DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
-+ Define HAVE_DIRENT_H
-+
-+# How to invoke ar.
-+AR = join
-+ARFLAGS = as
-+
-+# How to invoke ranlib.
-+RANLIB = ;
-+
-+.PHONY: all
-+all: glob.lib
-+
-+glob.lib : glob.o fnmatch.o
-+ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
-+ $(RANLIB) $@
-+
-+# For some reason, Unix make wants the dependencies on the source files.
-+# Otherwise it refuses to use an implicit rule!
-+# And, get this: it doesn't work to use $(srcdir)foo.c!!
-+glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-+fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-+
-+.c.o:
-+ $(CC) IDir "" \
-+ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-+
-+.PHONY: clean realclean glob-clean glob-realclean distclean
-+clean glob-clean:
-+ -$(RM) -f glob.lib *.o core
-+distclean glob-realclean: clean
-+ -$(RM) -f TAGS tags Makefile config.status config.h config.log
-+realcean: distclean
-+
-+# For inside the C library.
-+glob.tar glob.tar.Z:
-+ $(MAKE) -C .. $@
-diff -u -udbrN glibc-2.3.2/posix/glob/configure glibc-2.3.2-200304020432/posix/glob/configure
---- glibc-2.3.2/posix/glob/configure Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/configure Fri Mar 1 18:19:22 1996
-@@ -0,0 +1,1664 @@
-+#! /bin/sh
-+
-+# Guess values for system-dependent variables and create Makefiles.
-+# Generated automatically using autoconf version 2.7
-+# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
-+#
-+# This configure script is free software; the Free Software Foundation
-+# gives unlimited permission to copy, distribute and modify it.
-+
-+# Defaults:
-+ac_help=
-+ac_default_prefix=/usr/local
-+# Any additions from configure.in:
-+
-+# Initialize some variables set by options.
-+# The variables have the same names as the options, with
-+# dashes changed to underlines.
-+build=NONE
-+cache_file=./config.cache
-+exec_prefix=NONE
-+host=NONE
-+no_create=
-+nonopt=NONE
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+target=NONE
-+verbose=
-+x_includes=NONE
-+x_libraries=NONE
-+bindir='${exec_prefix}/bin'
-+sbindir='${exec_prefix}/sbin'
-+libexecdir='${exec_prefix}/libexec'
-+datadir='${prefix}/share'
-+sysconfdir='${prefix}/etc'
-+sharedstatedir='${prefix}/com'
-+localstatedir='${prefix}/var'
-+libdir='${exec_prefix}/lib'
-+includedir='${prefix}/include'
-+oldincludedir='/usr/include'
-+infodir='${prefix}/info'
-+mandir='${prefix}/man'
-+
-+# Initialize some other variables.
-+subdirs=
-+MFLAGS= MAKEFLAGS=
-+
-+ac_prev=
-+for ac_option
-+do
-+
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ case "$ac_option" in
-+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-+ *) ac_optarg= ;;
-+ esac
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case "$ac_option" in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir="$ac_optarg" ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build="$ac_optarg" ;;
-+
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-+ cache_file="$ac_optarg" ;;
-+
-+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ ac_prev=datadir ;;
-+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-+ | --da=*)
-+ datadir="$ac_optarg" ;;
-+
-+ -disable-* | --disable-*)
-+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-+ fi
-+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-+ eval "enable_${ac_feature}=no" ;;
-+
-+ -enable-* | --enable-*)
-+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-+ fi
-+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-+ case "$ac_option" in
-+ *=*) ;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "enable_${ac_feature}='$ac_optarg'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ exec_prefix="$ac_optarg" ;;
-+
-+ -gas | --gas | --ga | --g)
-+ # Obsolete; use --with-gas.
-+ with_gas=yes ;;
-+
-+ -help | --help | --hel | --he)
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat << EOF
-+Usage: configure [options] [host]
-+Options: [defaults in brackets after descriptions]
-+Configuration:
-+ --cache-file=FILE cache test results in FILE
-+ --help print this message
-+ --no-create do not create output files
-+ --quiet, --silent do not print \`checking...' messages
-+ --version print the version of autoconf that created configure
-+Directory and file names:
-+ --prefix=PREFIX install architecture-independent files in PREFIX
-+ [$ac_default_prefix]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [same as prefix]
-+ --bindir=DIR user executables in DIR [EPREFIX/bin]
-+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
-+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
-+ --datadir=DIR read-only architecture-independent data in DIR
-+ [PREFIX/share]
-+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
-+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
-+ [PREFIX/com]
-+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
-+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
-+ --includedir=DIR C header files in DIR [PREFIX/include]
-+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
-+ --infodir=DIR info documentation in DIR [PREFIX/info]
-+ --mandir=DIR man documentation in DIR [PREFIX/man]
-+ --srcdir=DIR find the sources in DIR [configure dir or ..]
-+ --program-prefix=PREFIX prepend PREFIX to installed program names
-+ --program-suffix=SUFFIX append SUFFIX to installed program names
-+ --program-transform-name=PROGRAM
-+ run sed PROGRAM on installed program names
-+EOF
-+ cat << EOF
-+Host type:
-+ --build=BUILD configure for building on BUILD [BUILD=HOST]
-+ --host=HOST configure for HOST [guessed]
-+ --target=TARGET configure for TARGET [TARGET=HOST]
-+Features and packages:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
-+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-+ --x-includes=DIR X include files are in DIR
-+ --x-libraries=DIR X library files are in DIR
-+EOF
-+ if test -n "$ac_help"; then
-+ echo "--enable and --with options recognized:$ac_help"
-+ fi
-+ exit 0 ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host="$ac_optarg" ;;
-+
-+ -includedir | --includedir | --includedi | --included | --include \
-+ | --includ | --inclu | --incl | --inc)
-+ ac_prev=includedir ;;
-+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-+ | --includ=* | --inclu=* | --incl=* | --inc=*)
-+ includedir="$ac_optarg" ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir="$ac_optarg" ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ libdir="$ac_optarg" ;;
-+
-+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-+ | --libexe | --libex | --libe)
-+ ac_prev=libexecdir ;;
-+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-+ | --libexe=* | --libex=* | --libe=*)
-+ libexecdir="$ac_optarg" ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir="$ac_optarg" ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ mandir="$ac_optarg" ;;
-+
-+ -nfp | --nfp | --nf)
-+ # Obsolete; use --without-fp.
-+ with_fp=no ;;
-+
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c)
-+ no_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir="$ac_optarg" ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ prefix="$ac_optarg" ;;
-+
-+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
-+ | --program-pre | --program-pr | --program-p)
-+ ac_prev=program_prefix ;;
-+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
-+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-+ program_prefix="$ac_optarg" ;;
-+
-+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
-+ | --program-suf | --program-su | --program-s)
-+ ac_prev=program_suffix ;;
-+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
-+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-+ program_suffix="$ac_optarg" ;;
-+
-+ -program-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name="$ac_optarg" ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir="$ac_optarg" ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir="$ac_optarg" ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site="$ac_optarg" ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ srcdir="$ac_optarg" ;;
-+
-+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-+ | --syscon | --sysco | --sysc | --sys | --sy)
-+ ac_prev=sysconfdir ;;
-+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-+ sysconfdir="$ac_optarg" ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target="$ac_optarg" ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers)
-+ echo "configure generated by autoconf version 2.7"
-+ exit 0 ;;
-+
-+ -with-* | --with-*)
-+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-+ fi
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ case "$ac_option" in
-+ *=*) ;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "with_${ac_package}='$ac_optarg'" ;;
-+
-+ -without-* | --without-*)
-+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-+ # Reject names that are not valid shell variable names.
-+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-+ fi
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ eval "with_${ac_package}=no" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ ac_prev=x_includes ;;
-+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-+ x_includes="$ac_optarg" ;;
-+
-+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
-+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-+ ac_prev=x_libraries ;;
-+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-+ x_libraries="$ac_optarg" ;;
-+
-+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-+ ;;
-+
-+ *)
-+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-+ echo "configure: warning: $ac_option: invalid host type" 1>&2
-+ fi
-+ if test "x$nonopt" != xNONE; then
-+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-+ fi
-+ nonopt="$ac_option"
-+ ;;
-+
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-+fi
-+
-+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-+
-+# File descriptor usage:
-+# 0 standard input
-+# 1 file creation
-+# 2 errors and warnings
-+# 3 some systems may open it to /dev/tty
-+# 4 used on the Kubota Titan
-+# 6 checking for... messages and results
-+# 5 compiler messages saved in config.log
-+if test "$silent" = yes; then
-+ exec 6>/dev/null
-+else
-+ exec 6>&1
-+fi
-+exec 5>./config.log
-+
-+echo "\
-+This file contains any messages produced by compilers while
-+running configure, to aid debugging if configure makes a mistake.
-+" 1>&5
-+
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Also quote any args containing shell metacharacters.
-+ac_configure_args=
-+for ac_arg
-+do
-+ case "$ac_arg" in
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c) ;;
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-+ esac
-+done
-+
-+# NLS nuisances.
-+# Only set LANG and LC_ALL to C if already set.
-+# These must not be set unconditionally because not all systems understand
-+# e.g. LANG=C (notably SCO).
-+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-+
-+# confdefs.h avoids OS command line length limits that DEFS can exceed.
-+rm -rf conftest* confdefs.h
-+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-+echo > confdefs.h
-+
-+# A filename unique to this package, relative to the directory that
-+# configure is in, which we can look for to find out if srcdir is correct.
-+ac_unique_file=fnmatch.c
-+
-+# Find the source files, if location was not specified.
-+if test -z "$srcdir"; then
-+ ac_srcdir_defaulted=yes
-+ # Try the directory containing this script, then its parent.
-+ ac_prog=$0
-+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-+ srcdir=$ac_confdir
-+ if test ! -r $srcdir/$ac_unique_file; then
-+ srcdir=..
-+ fi
-+else
-+ ac_srcdir_defaulted=no
-+fi
-+if test ! -r $srcdir/$ac_unique_file; then
-+ if test "$ac_srcdir_defaulted" = yes; then
-+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-+ else
-+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-+ fi
-+fi
-+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-+
-+# Prefer explicitly selected file to automatically selected ones.
-+if test -z "$CONFIG_SITE"; then
-+ if test "x$prefix" != xNONE; then
-+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-+ else
-+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-+ fi
-+fi
-+for ac_site_file in $CONFIG_SITE; do
-+ if test -r "$ac_site_file"; then
-+ echo "loading site script $ac_site_file"
-+ . "$ac_site_file"
-+ fi
-+done
-+
-+if test -r "$cache_file"; then
-+ echo "loading cache $cache_file"
-+ . $cache_file
-+else
-+ echo "creating cache $cache_file"
-+ > $cache_file
-+fi
-+
-+ac_ext=c
-+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+
-+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-+ ac_n= ac_c='
-+' ac_t=' '
-+ else
-+ ac_n=-n ac_c= ac_t=
-+ fi
-+else
-+ ac_n= ac_c='\c' ac_t=
-+fi
-+
-+ # Extract the first word of "gcc", so it can be a program name with args.
-+set dummy gcc; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_CC="gcc"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+fi
-+fi
-+CC="$ac_cv_prog_CC"
-+if test -n "$CC"; then
-+ echo "$ac_t""$CC" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+if test -z "$CC"; then
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ ac_prog_rejected=no
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $# -gt 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ set dummy "$ac_dir/$ac_word" "$@"
-+ shift
-+ ac_cv_prog_CC="$@"
-+ fi
-+fi
-+fi
-+fi
-+CC="$ac_cv_prog_CC"
-+if test -n "$CC"; then
-+ echo "$ac_t""$CC" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-+fi
-+
-+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.c <<EOF
-+#ifdef __GNUC__
-+ yes;
-+#endif
-+EOF
-+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-+ ac_cv_prog_gcc=yes
-+else
-+ ac_cv_prog_gcc=no
-+fi
-+fi
-+
-+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-+if test $ac_cv_prog_gcc = yes; then
-+ GCC=yes
-+ if test "${CFLAGS+set}" != set; then
-+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ echo 'void f(){}' > conftest.c
-+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-+ ac_cv_prog_gcc_g=yes
-+else
-+ ac_cv_prog_gcc_g=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
-+ if test $ac_cv_prog_gcc_g = yes; then
-+ CFLAGS="-g -O"
-+ else
-+ CFLAGS="-O"
-+ fi
-+ fi
-+else
-+ GCC=
-+ test "${CFLAGS+set}" = set || CFLAGS="-g"
-+fi
-+
-+# Extract the first word of "ar", so it can be a program name with args.
-+set dummy ar; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$AR"; then
-+ ac_cv_prog_AR="$AR" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_AR="ar"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
-+fi
-+fi
-+AR="$ac_cv_prog_AR"
-+if test -n "$AR"; then
-+ echo "$ac_t""$AR" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+# Extract the first word of "ranlib", so it can be a program name with args.
-+set dummy ranlib; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test -n "$RANLIB"; then
-+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-+else
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f $ac_dir/$ac_word; then
-+ ac_cv_prog_RANLIB="ranlib"
-+ break
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-+fi
-+fi
-+RANLIB="$ac_cv_prog_RANLIB"
-+if test -n "$RANLIB"; then
-+ echo "$ac_t""$RANLIB" 1>&6
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-+# On Suns, sometimes $CPP names a directory.
-+if test -n "$CPP" && test -d "$CPP"; then
-+ CPP=
-+fi
-+if test -z "$CPP"; then
-+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ # This must be in double quotes, not single quotes, because CPP may get
-+ # substituted into the Makefile and "${CC-cc}" will confuse make.
-+ CPP="${CC-cc} -E"
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp.
-+ cat > conftest.$ac_ext <<EOF
-+#line 709 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ CPP="${CC-cc} -E -traditional-cpp"
-+ cat > conftest.$ac_ext <<EOF
-+#line 724 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ :
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ CPP=/lib/cpp
-+fi
-+rm -f conftest*
-+fi
-+rm -f conftest*
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+ CPP="$ac_cv_prog_CPP"
-+else
-+ ac_cv_prog_CPP="$CPP"
-+fi
-+echo "$ac_t""$CPP" 1>&6
-+ echo $ac_n "checking for AIX""... $ac_c" 1>&6
-+cat > conftest.$ac_ext <<EOF
-+#line 751 "configure"
-+#include "confdefs.h"
-+#ifdef _AIX
-+ yes
-+#endif
-+
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "yes" >/dev/null 2>&1; then
-+ rm -rf conftest*
-+ echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
-+#define _ALL_SOURCE 1
-+EOF
-+
-+else
-+ rm -rf conftest*
-+ echo "$ac_t""no" 1>&6
-+fi
-+rm -f conftest*
-+
-+
-+ac_safe=`echo "minix/config.h" | tr './\055' '___'`
-+echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 778 "configure"
-+#include "confdefs.h"
-+#include <minix/config.h>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ MINIX=yes
-+else
-+ echo "$ac_t""no" 1>&6
-+MINIX=
-+fi
-+
-+if test "$MINIX" = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_SOURCE 1
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_1_SOURCE 2
-+EOF
-+
-+ cat >> confdefs.h <<\EOF
-+#define _MINIX 1
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-+if test -d /etc/conf/kconfig.d &&
-+ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-+then
-+ echo "$ac_t""yes" 1>&6
-+ ISC=yes # If later tests want to check for ISC.
-+ cat >> confdefs.h <<\EOF
-+#define _POSIX_SOURCE 1
-+EOF
-+
-+ if test "$GCC" = yes; then
-+ CC="$CC -posix"
-+ else
-+ CC="$CC -Xp"
-+ fi
-+else
-+ echo "$ac_t""no" 1>&6
-+ ISC=
-+fi
-+
-+echo $ac_n "checking for working const""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 843 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+
-+/* Ultrix mips cc rejects this. */
-+typedef int charset[2]; const charset x;
-+/* SunOS 4.1.1 cc rejects this. */
-+char const *const *ccp;
-+char **p;
-+/* NEC SVR4.0.2 mips cc rejects this. */
-+struct point {int x, y;};
-+static struct point const zero = {0,0};
-+/* AIX XL C 1.02.0.0 rejects this.
-+ It does not let you subtract one const X* pointer from another in an arm
-+ of an if-expression whose if-part is not a constant expression */
-+const char *g = "string";
-+ccp = &g + (g ? g-g : 0);
-+/* HPUX 7.0 cc rejects these. */
-+++ccp;
-+p = (char**) ccp;
-+ccp = (char const *const *) p;
-+{ /* SCO 3.2v4 cc rejects this. */
-+ char *t;
-+ char const *s = 0 ? (char *) 0 : (char const *) 0;
-+
-+ *t++ = 0;
-+}
-+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
-+ int x[] = {25, 17};
-+ const int *foo = &x[0];
-+ ++foo;
-+}
-+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-+ typedef const int *iptr;
-+ iptr p = 0;
-+ ++p;
-+}
-+{ /* AIX XL C 1.02.0.0 rejects this saying
-+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-+ struct s { int j; const int *ap[3]; };
-+ struct s *b; b->j = 5;
-+}
-+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-+ const int foo = 10;
-+}
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_c_const=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_c_const=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_c_const" 1>&6
-+if test $ac_cv_c_const = no; then
-+ cat >> confdefs.h <<\EOF
-+#define const
-+EOF
-+
-+fi
-+
-+# If we cannot run a trivial program, we must be cross compiling.
-+echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_c_cross=yes
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 921 "configure"
-+#include "confdefs.h"
-+main(){return(0);}
-+EOF
-+{ (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_c_cross=no
-+else
-+ ac_cv_c_cross=yes
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_c_cross" 1>&6
-+cross_compiling=$ac_cv_c_cross
-+
-+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 943 "configure"
-+#include "confdefs.h"
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.h>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ ac_cv_header_stdc=yes
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-+cat > conftest.$ac_ext <<EOF
-+#line 966 "configure"
-+#include "confdefs.h"
-+#include <string.h>
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "memchr" >/dev/null 2>&1; then
-+ :
-+else
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+cat > conftest.$ac_ext <<EOF
-+#line 984 "configure"
-+#include "confdefs.h"
-+#include <stdlib.h>
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "free" >/dev/null 2>&1; then
-+ :
-+else
-+ rm -rf conftest*
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+if test "$cross_compiling" = yes; then
-+ :
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1005 "configure"
-+#include "confdefs.h"
-+#include <ctype.h>
-+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int main () { int i; for (i = 0; i < 256; i++)
-+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-+exit (0); }
-+
-+EOF
-+{ (eval echo configure:1016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+fi
-+
-+echo "$ac_t""$ac_cv_header_stdc" 1>&6
-+if test $ac_cv_header_stdc = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define STDC_HEADERS 1
-+EOF
-+
-+fi
-+
-+for ac_hdr in memory.h unistd.h string.h
-+do
-+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1043 "configure"
-+#include "confdefs.h"
-+#include <$ac_hdr>
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out`
-+if test -z "$ac_err"; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=yes"
-+else
-+ echo "$ac_err" >&5
-+ rm -rf conftest*
-+ eval "ac_cv_header_$ac_safe=no"
-+fi
-+rm -f conftest*
-+fi
-+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+
-+ac_header_dirent=no
-+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
-+do
-+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
-+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1081 "configure"
-+#include "confdefs.h"
-+#include <sys/types.h>
-+#include <$ac_hdr>
-+int main() { return 0; }
-+int t() {
-+DIR *dirp = 0;
-+; return 0; }
-+EOF
-+if { (eval echo configure:1090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_header_dirent_$ac_safe=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_header_dirent_$ac_safe=no"
-+fi
-+rm -f conftest*
-+
-+fi
-+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdedfghijklmnopqrstuvwxyz./\055' 'ABCDEDFGHIJKLMNOPQRSTUVWXYZ___'`
-+ cat >> confdefs.h <<EOF
-+#define $ac_tr_hdr 1
-+EOF
-+ ac_header_dirent=$ac_hdr; break
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+done
-+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-+if test $ac_header_dirent = dirent.h; then
-+echo $ac_n "checking for -ldir""... $ac_c" 1>&6
-+ac_lib_var=`echo dir | tr '.-/+' '___p'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-ldir $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 1121 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+opendir()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ LIBS="$LIBS -ldir"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+else
-+echo $ac_n "checking for -lx""... $ac_c" 1>&6
-+ac_lib_var=`echo x | tr '.-/+' '___p'`
-+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ ac_save_LIBS="$LIBS"
-+LIBS="-lx $LIBS"
-+cat > conftest.$ac_ext <<EOF
-+#line 1156 "configure"
-+#include "confdefs.h"
-+
-+int main() { return 0; }
-+int t() {
-+opendir()
-+; return 0; }
-+EOF
-+if { (eval echo configure:1164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_lib_$ac_lib_var=no"
-+fi
-+rm -f conftest*
-+LIBS="$ac_save_LIBS"
-+
-+fi
-+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ LIBS="$LIBS -lx"
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+fi
-+
-+echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_func_closedir_void=yes
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1192 "configure"
-+#include "confdefs.h"
-+#include <sys/types.h>
-+#include <$ac_header_dirent>
-+int closedir(); main() { exit(closedir(opendir(".")) != 0); }
-+EOF
-+{ (eval echo configure:1198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_func_closedir_void=no
-+else
-+ ac_cv_func_closedir_void=yes
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_func_closedir_void" 1>&6
-+if test $ac_cv_func_closedir_void = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define CLOSEDIR_VOID 1
-+EOF
-+
-+fi
-+
-+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-+# for constant arguments. Useless!
-+echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1223 "configure"
-+#include "confdefs.h"
-+#include <alloca.h>
-+int main() { return 0; }
-+int t() {
-+char *p = alloca(2 * sizeof(int));
-+; return 0; }
-+EOF
-+if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_header_alloca_h=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_header_alloca_h=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
-+if test $ac_cv_header_alloca_h = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_ALLOCA_H 1
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for alloca""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_alloca'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1255 "configure"
-+#include "confdefs.h"
-+
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+#else
-+# if HAVE_ALLOCA_H
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca /* predefined by HP cc +Olibcalls */
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+int main() { return 0; }
-+int t() {
-+char *p = (char *) alloca(1);
-+; return 0; }
-+EOF
-+if { (eval echo configure:1279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ ac_cv_func_alloca=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_func_alloca=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_func_alloca" 1>&6
-+if test $ac_cv_func_alloca = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_ALLOCA 1
-+EOF
-+
-+fi
-+
-+if test $ac_cv_func_alloca = no; then
-+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-+ # that cause trouble. Some versions do not even contain alloca or
-+ # contain a buggy version. If you still want to use their alloca,
-+ # use ar to extract alloca.o from them instead of compiling alloca.c.
-+ ALLOCA=alloca.o
-+ cat >> confdefs.h <<\EOF
-+#define C_ALLOCA 1
-+EOF
-+
-+
-+echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1314 "configure"
-+#include "confdefs.h"
-+#if defined(CRAY) && ! defined(CRAY2)
-+webecray
-+#else
-+wenotbecray
-+#endif
-+
-+EOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ egrep "webecray" >/dev/null 2>&1; then
-+ rm -rf conftest*
-+ ac_cv_os_cray=yes
-+else
-+ rm -rf conftest*
-+ ac_cv_os_cray=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+echo "$ac_t""$ac_cv_os_cray" 1>&6
-+if test $ac_cv_os_cray = yes; then
-+for ac_func in _getb67 GETB67 getb67; do
-+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ cat > conftest.$ac_ext <<EOF
-+#line 1343 "configure"
-+#include "confdefs.h"
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func(); below. */
-+#include <assert.h>
-+/* Override any gcc2 internal prototype to avoid an error. */
-+char $ac_func();
-+
-+int main() { return 0; }
-+int t() {
-+
-+/* 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
-+$ac_func();
-+#endif
-+
-+; return 0; }
-+EOF
-+if { (eval echo configure:1365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=yes"
-+else
-+ rm -rf conftest*
-+ eval "ac_cv_func_$ac_func=no"
-+fi
-+rm -f conftest*
-+
-+fi
-+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-+ echo "$ac_t""yes" 1>&6
-+ cat >> confdefs.h <<EOF
-+#define CRAY_STACKSEG_END $ac_func
-+EOF
-+
-+ break
-+else
-+ echo "$ac_t""no" 1>&6
-+fi
-+
-+done
-+fi
-+
-+echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_c_stack_direction=0
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1397 "configure"
-+#include "confdefs.h"
-+find_stack_direction ()
-+{
-+ static char *addr = 0;
-+ auto char dummy;
-+ if (addr == 0)
-+ {
-+ addr = &dummy;
-+ return find_stack_direction ();
-+ }
-+ else
-+ return (&dummy > addr) ? 1 : -1;
-+}
-+main ()
-+{
-+ exit (find_stack_direction() < 0);
-+}
-+EOF
-+{ (eval echo configure:1416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_c_stack_direction=1
-+else
-+ ac_cv_c_stack_direction=-1
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_c_stack_direction" 1>&6
-+cat >> confdefs.h <<EOF
-+#define STACK_DIRECTION $ac_cv_c_stack_direction
-+EOF
-+
-+fi
-+
-+echo $ac_n "checking for strcoll""... $ac_c" 1>&6
-+if eval "test \"`echo '$''{'ac_cv_func_strcoll'+set}'`\" = set"; then
-+ echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+ if test "$cross_compiling" = yes; then
-+ ac_cv_func_strcoll=no
-+else
-+cat > conftest.$ac_ext <<EOF
-+#line 1441 "configure"
-+#include "confdefs.h"
-+#include <string.h>
-+main ()
-+{
-+ exit (strcoll ("abc", "def") >= 0 ||
-+ strcoll ("ABC", "DEF") >= 0 ||
-+ strcoll ("123", "456") >= 0);
-+}
-+EOF
-+{ (eval echo configure:1451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
-+if test -s conftest && (./conftest; exit) 2>/dev/null; then
-+ ac_cv_func_strcoll=yes
-+else
-+ ac_cv_func_strcoll=no
-+fi
-+fi
-+rm -fr conftest*
-+fi
-+
-+echo "$ac_t""$ac_cv_func_strcoll" 1>&6
-+if test $ac_cv_func_strcoll = yes; then
-+ cat >> confdefs.h <<\EOF
-+#define HAVE_STRCOLL 1
-+EOF
-+
-+fi
-+
-+trap '' 1 2 15
-+cat > confcache <<\EOF
-+# This file is a shell script that caches the results of configure
-+# tests run on this system so they can be shared between configure
-+# scripts and configure runs. It is not useful on other systems.
-+# If it contains results you don't want to keep, you may remove or edit it.
-+#
-+# By default, configure uses ./config.cache as the cache file,
-+# creating it if it does not exist already. You can give configure
-+# the --cache-file=FILE option to use a different cache file; that is
-+# what configure does when it calls configure scripts in
-+# subdirectories, so they share the cache.
-+# Giving --cache-file=/dev/null disables caching, for debugging configure.
-+# config.status only pays attention to the cache file if you give it the
-+# --recheck option to rerun configure.
-+#
-+EOF
-+# Ultrix sh set writes to stderr and can't be redirected directly,
-+# and sets the high bit in the cache file unless we assign to the vars.
-+(set) 2>&1 |
-+ sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
-+ >> confcache
-+if cmp -s $cache_file confcache; then
-+ :
-+else
-+ if test -w $cache_file; then
-+ echo "updating cache $cache_file"
-+ cat confcache > $cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-+
-+test "x$prefix" = xNONE && prefix=$ac_default_prefix
-+# Let make expand exec_prefix.
-+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-+
-+# Any assignment to VPATH causes Sun make to only execute
-+# the first set of double-colon rules, so remove it if not needed.
-+# If there is a colon in the path, we need to keep it.
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-+fi
-+
-+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-+
-+# Transform confdefs.h into DEFS.
-+# Protect against shell expansion while executing Makefile rules.
-+# Protect against Makefile macro expansion.
-+cat > conftest.defs <<\EOF
-+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-+s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-+s%\[%\\&%g
-+s%\]%\\&%g
-+s%\$%$$%g
-+EOF
-+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-+rm -f conftest.defs
-+
-+
-+# Without the "./", some shells look in PATH for config.status.
-+: ${CONFIG_STATUS=./config.status}
-+
-+echo creating $CONFIG_STATUS
-+rm -f $CONFIG_STATUS
-+cat > $CONFIG_STATUS <<EOF
-+#! /bin/sh
-+# Generated automatically by configure.
-+# Run this file to recreate the current configuration.
-+# This directory was configured as follows,
-+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-+#
-+# $0 $ac_configure_args
-+#
-+# Compiler output produced by configure, useful for debugging
-+# configure, is in ./config.log if it exists.
-+
-+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-+for ac_option
-+do
-+ case "\$ac_option" in
-+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-+ echo "$CONFIG_STATUS generated by autoconf version 2.7"
-+ exit 0 ;;
-+ -help | --help | --hel | --he | --h)
-+ echo "\$ac_cs_usage"; exit 0 ;;
-+ *) echo "\$ac_cs_usage"; exit 1 ;;
-+ esac
-+done
-+
-+ac_given_srcdir=$srcdir
-+
-+trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-+EOF
-+cat >> $CONFIG_STATUS <<EOF
-+
-+# Protect against being on the right side of a sed subst in config.status.
-+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
-+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-+$ac_vpsub
-+$extrasub
-+s%@CFLAGS@%$CFLAGS%g
-+s%@CPPFLAGS@%$CPPFLAGS%g
-+s%@CXXFLAGS@%$CXXFLAGS%g
-+s%@DEFS@%$DEFS%g
-+s%@LDFLAGS@%$LDFLAGS%g
-+s%@LIBS@%$LIBS%g
-+s%@exec_prefix@%$exec_prefix%g
-+s%@prefix@%$prefix%g
-+s%@program_transform_name@%$program_transform_name%g
-+s%@bindir@%$bindir%g
-+s%@sbindir@%$sbindir%g
-+s%@libexecdir@%$libexecdir%g
-+s%@datadir@%$datadir%g
-+s%@sysconfdir@%$sysconfdir%g
-+s%@sharedstatedir@%$sharedstatedir%g
-+s%@localstatedir@%$localstatedir%g
-+s%@libdir@%$libdir%g
-+s%@includedir@%$includedir%g
-+s%@oldincludedir@%$oldincludedir%g
-+s%@infodir@%$infodir%g
-+s%@mandir@%$mandir%g
-+s%@CC@%$CC%g
-+s%@AR@%$AR%g
-+s%@RANLIB@%$RANLIB%g
-+s%@CPP@%$CPP%g
-+s%@ALLOCA@%$ALLOCA%g
-+
-+CEOF
-+EOF
-+cat >> $CONFIG_STATUS <<EOF
-+
-+CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-+EOF
-+cat >> $CONFIG_STATUS <<\EOF
-+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-+ # Support "outfile[:infile]", defaulting infile="outfile.in".
-+ case "$ac_file" in
-+ *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
-+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-+ *) ac_file_in="${ac_file}.in" ;;
-+ esac
-+
-+ # Adjust relative srcdir, etc. for subdirectories.
-+
-+ # Remove last slash and all that follows it. Not all systems have dirname.
-+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-+ # The file is in a subdirectory.
-+ test ! -d "$ac_dir" && mkdir "$ac_dir"
-+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-+ else
-+ ac_dir_suffix= ac_dots=
-+ fi
-+
-+ case "$ac_given_srcdir" in
-+ .) srcdir=.
-+ if test -z "$ac_dots"; then top_srcdir=.
-+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-+ *) # Relative path.
-+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
-+ esac
-+
-+ echo creating "$ac_file"
-+ rm -f "$ac_file"
-+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-+ case "$ac_file" in
-+ *Makefile*) ac_comsub="1i\\
-+# $configure_input" ;;
-+ *) ac_comsub= ;;
-+ esac
-+ sed -e "$ac_comsub
-+s%@configure_input@%$configure_input%g
-+s%@srcdir@%$srcdir%g
-+s%@top_srcdir@%$top_srcdir%g
-+" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
-+fi; done
-+rm -f conftest.subs
-+
-+
-+
-+exit 0
-+EOF
-+chmod +x $CONFIG_STATUS
-+rm -fr confdefs* $ac_clean_files
-+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-+
-diff -u -udbrN glibc-2.3.2/posix/glob/configure.bat glibc-2.3.2-200304020432/posix/glob/configure.bat
---- glibc-2.3.2/posix/glob/configure.bat Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/configure.bat Thu Mar 9 02:19:41 1995
-@@ -0,0 +1,26 @@
-+@echo off
-+echo Configuring glob for GO32
-+rem This batch file assumes a unix-type "sed" program
-+
-+echo # Makefile generated by "configure.bat"> Makefile
-+
-+if exist config.sed del config.sed
-+
-+echo "s/@srcdir@/./ ">> config.sed
-+echo "s/@CC@/gcc/ ">> config.sed
-+echo "s/@CFLAGS@/-O2 -g/ ">> config.sed
-+echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../ ">> config.sed
-+echo "s/@AR@/ar/ ">> config.sed
-+echo "s/@RANLIB@/ranlib/ ">> config.sed
-+echo "s/@LDFLAGS@// ">> config.sed
-+echo "s/@DEFS@// ">> config.sed
-+echo "s/@ALLOCA@// ">> config.sed
-+echo "s/@LIBS@// ">> config.sed
-+echo "s/@LIBOBJS@// ">> config.sed
-+echo "s/^Makefile *:/_Makefile:/ ">> config.sed
-+echo "s/^config.h *:/_config.h:/ ">> config.sed
-+
-+sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
-+sed -f config2.sed Makefile.in >> Makefile
-+del config.sed
-+del config2.sed
-diff -u -udbrN glibc-2.3.2/posix/glob/configure.in glibc-2.3.2-200304020432/posix/glob/configure.in
---- glibc-2.3.2/posix/glob/configure.in Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/glob/configure.in Thu Feb 23 03:30:35 1995
-@@ -0,0 +1,19 @@
-+dnl Process this file with autoconf to produce a configure script.
-+AC_INIT(fnmatch.c) dnl A distinctive file to look for in srcdir.
-+AC_PREREQ(2.1) dnl Minimum Autoconf version required.
-+AC_PROG_CC
-+AC_CHECK_PROG(AR, ar, ar, ar)
-+AC_PROG_RANLIB
-+AC_PROG_CPP dnl Later checks need this.
-+dnl These two want to come early.
-+AC_AIX
-+AC_MINIX
-+AC_ISC_POSIX
-+AC_CONST
-+AC_HEADER_STDC
-+AC_CHECK_HEADERS(memory.h unistd.h string.h)
-+AC_HEADER_DIRENT
-+AC_FUNC_CLOSEDIR_VOID
-+AC_FUNC_ALLOCA
-+AC_FUNC_STRCOLL
-+AC_OUTPUT(Makefile)
-diff -u -udbrN glibc-2.3.2/posix/tst-nice.c glibc-2.3.2-200304020432/posix/tst-nice.c
---- glibc-2.3.2/posix/tst-nice.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/posix/tst-nice.c Thu Mar 20 12:40:36 2003
-@@ -0,0 +1,66 @@
-+/* Copyright (C) 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 <errno.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+
-+
-+/* Test that nice() does not incorrectly return 0. */
-+static int
-+do_test (void)
-+{
-+ int ret;
-+ const int incr = 10;
-+ int old;
-+
-+ /* Discover current nice value. */
-+ errno = 0;
-+ old = nice (0);
-+ if (old == -1 && errno != 0)
-+ {
-+ printf ("break: nice(%d) return: %d, %m\n", 0, old);
-+ return 1;
-+ }
-+
-+ /* Nice ourselves up. */
-+ errno = 0;
-+ ret = nice (incr);
-+ if (ret == -1 && errno != 0)
-+ {
-+ printf ("break: nice(%d) return: %d, %m\n", incr, ret);
-+ return 1;
-+ }
-+
-+ /* Check for return value being zero when it shouldn't. Cannot simply
-+ check for expected value since nice values are capped at 2^n-1.
-+ But we assume that we didn't start at the cap and so should have
-+ increased some. */
-+ if (ret <= old)
-+ {
-+ printf ("FAIL: retval (%d) of nice(%d) != %d\n", ret, incr, old + incr);
-+ return 1;
-+ }
-+
-+ printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret);
-+
-+ return 0;
-+}
-+
-+#define TEST_FUNCTION do_test ()
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/resolv/Makefile glibc-2.3.2-200304020432/resolv/Makefile
---- glibc-2.3.2/resolv/Makefile Wed Feb 26 00:40:08 2003
-+++ glibc-2.3.2-200304020432/resolv/Makefile Sat Mar 1 23:15:00 2003
-@@ -93,6 +93,8 @@
- tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
- $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
- $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@
-+ifeq (no,$(cross-compiling))
- ifneq (no,$(PERL))
- tests: $(objpfx)mtrace-tst-leaks
-+endif
- endif
-diff -u -udbrN glibc-2.3.2/rt/tst-aio7.c glibc-2.3.2-200304020432/rt/tst-aio7.c
---- glibc-2.3.2/rt/tst-aio7.c Tue Oct 1 00:02:39 2002
-+++ glibc-2.3.2-200304020432/rt/tst-aio7.c Sat Mar 8 19:54:21 2003
-@@ -1,5 +1,5 @@
- /* Test for AIO POSIX compliance.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 2001,02, 03 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
-@@ -117,12 +117,13 @@
-
- /* Test for aio_suspend() suspending even if completed elements in list. */
- {
-- const int BYTES = 8, ELEMS = 2;
-+#define BYTES 8
-+ const int ELEMS = 2;
- int i, r, fd;
-- char buff[BYTES];
-+ static char buff[BYTES];
- char name[] = "/tmp/aio7.XXXXXX";
- struct timespec timeout;
-- struct aiocb cb0, cb1;
-+ static struct aiocb cb0, cb1;
- struct aiocb *list[ELEMS];
-
- fd = mkstemp (name);
-@@ -180,6 +181,9 @@
- puts ("aio_suspend([done,blocked],2,3) suspended thread");
- ++result;
- }
-+
-+ /* Note that CB1 is still pending, and so cannot be an auto variable.
-+ Thus we also test that exiting with an outstanding request works. */
- }
-
- return result;
-diff -u -udbrN glibc-2.3.2/scripts/abilist.awk glibc-2.3.2-200304020432/scripts/abilist.awk
---- glibc-2.3.2/scripts/abilist.awk Mon Dec 23 20:11:45 2002
-+++ glibc-2.3.2-200304020432/scripts/abilist.awk Wed Apr 2 06:00:03 2003
-@@ -1,6 +1,33 @@
- # This awk script processes the output of objdump --dynamic-syms
- # into a simple format that should not change when the ABI is not changing.
-
-+BEGIN {
-+ if (combine_fullname)
-+ combine = 1;
-+ if (combine)
-+ parse_names = 1;
-+}
-+
-+# Per-file header.
-+/[^ :]+\.so\.[0-9.]+:[ ]+.file format .*$/ {
-+ emit(0);
-+
-+ seen_opd = 0;
-+
-+ sofullname = $1;
-+ sub(/:$/, "", sofullname);
-+ soname = sofullname;
-+ sub(/^.*\//, "", soname);
-+ sub(/\.so\.[0-9.]+$/, "", soname);
-+
-+ suppress = ((filename_regexp != "" && sofullname !~ filename_regexp) \
-+ || (libname_regexp != "" && soname !~ libname_regexp));
-+
-+ next
-+}
-+
-+suppress { next }
-+
- # Normalize columns.
- /^[0-9a-fA-F]+ / { sub(/ /, " - ") }
-
-@@ -22,14 +49,18 @@
-
- if (version == "GLIBC_PRIVATE") next;
-
-+ desc = "";
- if (type == "D" && $4 == ".tbss") {
- type = "T";
- }
- else if (type == "D" && $4 == ".opd") {
-- type = "O";
-+ type = "F";
- size = "";
-+ if (seen_opd < 0)
-+ type = "O";
-+ seen_opd = 1;
- }
-- else if (type == "DO" && $4 == "*ABS*") {
-+ else if ($4 == "*ABS*") {
- type = "A";
- size = "";
- }
-@@ -37,15 +68,26 @@
- type = "D";
- }
- else if (type == "DF") {
-+ if (symbol ~ /^\./ && seen_opd >= 0)
-+ next;
-+ seen_opd = -1;
- type = "F";
- size = "";
- }
- else {
-- print symbol, version, weak, "?", type, $4, $5;
-- next;
-+ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
-+ }
-+ if (size == " 0x") {
-+ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
- }
-
-- desc = " " symbol " " (weak == "w" ? tolower(type) : type) size;
-+ # Disabled -- weakness should not matter to shared library ABIs any more.
-+ #if (weak == "w") type = tolower(type);
-+ if (desc == "")
-+ desc = " " symbol " " type size;
-+
-+ if (combine)
-+ version = soname " " version (combine_fullname ? " " sofullname : "");
-
- if (version in versions) {
- versions[version] = versions[version] "\n" desc;
-@@ -63,8 +105,12 @@
- print "Don't grok this line:", $0
- }
-
--END {
-- nverlist = 0;
-+function emit(end) {
-+ if (!end && (combine || ! parse_names || soname == ""))
-+ return;
-+ tofile = parse_names && !combine;
-+
-+ nverslist = 0;
- for (version in versions) {
- if (nverslist == 0) {
- verslist = version;
-@@ -92,13 +138,42 @@
- ++nverslist;
- }
-
-+ if (tofile) {
-+ out = prefix soname ".symlist";
-+ if (soname in outfiles)
-+ out = out "." ++outfiles[soname];
-+ else
-+ outfiles[soname] = 1;
-+ printf "" > out;
-+ }
-+
- split(verslist, order, "\n");
- for (i = 1; i <= nverslist; ++i) {
- version = order[i];
-
-- print version;
-+ if (tofile) {
-+ print version >> out;
-+ close(out);
-+ outpipe = "sort >> " out;
-+ }
-+ else {
-+ if (combine)
-+ print "";
-+ print prefix version;
- outpipe = "sort";
-+ }
- print versions[version] | outpipe;
- close(outpipe);
-+
-+ delete versions[version];
- }
-+ for (version in versions)
-+ delete versions[version];
-+
-+ if (tofile)
-+ print "wrote", out, "for", sofullname;
-+}
-+
-+END {
-+ emit(1);
- }
-diff -u -udbrN glibc-2.3.2/scripts/merge-abilist.awk glibc-2.3.2-200304020432/scripts/merge-abilist.awk
---- glibc-2.3.2/scripts/merge-abilist.awk Thu Jan 16 18:28:31 2003
-+++ glibc-2.3.2-200304020432/scripts/merge-abilist.awk Mon Mar 3 08:11:44 2003
-@@ -12,9 +12,11 @@
- # function F
- # variable D 0x4
-
-+BEGIN { current = "UNSET" }
-+
- /^[^| ]/ {
- if (NF < 2 && config == "") {
-- print "BAD LINE:", $0 > "/dev/stderr";
-+ print FILENAME ":" FNR ": BAD SET LINE:", $0 > "/dev/stderr";
- exit 2;
- }
-
-@@ -44,8 +46,8 @@
- }
-
- /^\| / {
-- if (NF < 3) {
-- print "BAD LINE:", $0 > "/dev/stderr";
-+ if (NF < 3 || current == "UNSET") {
-+ print FILENAME ":" FNR ": BAD | LINE:", $0 > "/dev/stderr";
- exit 2;
- }
-
-@@ -61,12 +63,20 @@
-
- {
- if (current == "") next;
-+ if (current == "UNSET") {
-+ print FILENAME ":" FNR ": IGNORED LINE:", $0 > "/dev/stderr";
-+ next;
-+ }
-
- ns = split(seen[$0], s, ",");
- nc = split(current, c, ",");
- for (i = 1; i <= nc; ++i) {
-+ if (c[i] == "")
-+ continue;
- # Sorted insert.
- for (j = 1; j <= ns; ++j) {
-+ if (c[i] == s[j])
-+ break;
- if (c[i] < s[j]) {
- for (k = ns; k >= j; --k)
- s[k + 1] = s[k];
-@@ -75,7 +85,7 @@
- break;
- }
- }
-- if (j >= ns)
-+ if (j > ns)
- s[++ns] = c[i];
- }
-
-@@ -97,7 +107,9 @@
- ns = split("", s);
- for (configs in stanzas) {
- # Sorted insert.
-- for (j = 1; j <= ns; ++j)
-+ for (j = 1; j <= ns; ++j) {
-+ if (configs == s[j])
-+ break;
- if (configs < s[j]) {
- for (k = ns; k >= j; --k)
- s[k + 1] = s[k];
-@@ -105,7 +117,8 @@
- ++ns;
- break;
- }
-- if (j >= ns)
-+ }
-+ if (j > ns)
- s[++ns] = configs;
- }
-
-@@ -118,15 +131,22 @@
- # S[I] is a sorted, comma-separated list of SET:CONFIG pairs.
- # All we have to do is pretty-print them.
- nc = split(s[i], c, ",");
-- lastvers = "";
-+ lastvers = lastconf = "";
- for (j = 1; j <= nc; ++j) {
- split(c[j], temp, ":");
- version = temp[1];
- conf = temp[2];
- if (version != lastvers)
- printf "%s%s", (lastvers != "" ? "\n| " : ""), version;
-+ # Hack: if CONF is foo.*/bar and LASTCONF was foo.*,
-+ # then we can omit the foo.*/bar since foo.* matches already.
-+ # Note we don't update LASTCONF, so foo.*/baz next time will match too.
-+ else if ((slash = index(conf, ".*/")) > 0 && \
-+ substr(conf, 1, slash + 2 - 1) == lastconf)
-+ continue;
- printf " %s", conf;
- lastvers = version;
-+ lastconf = conf;
- }
- print "";
- outpipe = "sort";
-diff -u -udbrN glibc-2.3.2/scripts/rpm2dynsym.sh glibc-2.3.2-200304020432/scripts/rpm2dynsym.sh
---- glibc-2.3.2/scripts/rpm2dynsym.sh Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/scripts/rpm2dynsym.sh Thu Mar 27 23:48:49 2003
-@@ -0,0 +1,36 @@
-+#!/bin/sh
-+
-+# This script takes rpm package files, finds *.so.N files in them,
-+# and runs objdump --dynamic-syms on them. The arguments are rpm file
-+# names. For each rpm, it creates an output file with the name
-+# "NAME-VERSION-RELEASE.ARCH.dynsym", the variable parts being extracted
-+# from the rpm's headers (not its file name). Each file contains the
-+# collected objdump output for all the *.so.N files in the corresponding rpm.
-+# This can be processed with abilist.awk or sent to someone who will do that.
-+# This does not do a lot of error-checking, so you should always watch stderr
-+# and sanity-check the resulting output files.
-+
-+RPM=${RPM:-rpm}
-+RPM2CPIO=${RPM2CPIO:-rpm2cpio}
-+CPIO=${CPIO:-cpio}
-+OBJDUMP=${OBJDUMP:-objdump}
-+
-+unpackdir=/tmp/rpm2dynsym$$
-+trap 'rm -rf $unpackdir' 0 1 2 15
-+
-+for rpm; do
-+ name=`$RPM -qp $rpm --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n'`
-+ mkdir $unpackdir || exit
-+ $RPM2CPIO "$rpm" | {
-+ cd $unpackdir
-+ $CPIO -i -d --no-absolute-filenames -uv '*.so.*' '*.so' 2>&1 |
-+ while read file b; do
-+ test x"$b" = x || break
-+ case "$file" in
-+ *.so.[0-9]*) $OBJDUMP --dynamic-syms $file ;;
-+ esac
-+ done
-+ } > $name.dynsym
-+ echo wrote $name.dynsym for $rpm
-+ rm -rf $unpackdir
-+done
-diff -u -udbrN glibc-2.3.2/signal/Makefile glibc-2.3.2-200304020432/signal/Makefile
---- glibc-2.3.2/signal/Makefile Sat Jul 7 21:21:17 2001
-+++ glibc-2.3.2-200304020432/signal/Makefile Tue Apr 1 08:49:23 2003
-@@ -1,4 +1,5 @@
--# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,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
-@@ -37,7 +38,7 @@
- allocrtsig sigtimedwait sigwaitinfo sigqueue \
- sighold sigrelse sigignore sigset
-
--tests := tst-signal
-+tests := tst-signal tst-sigset
-
- distribute := sigsetops.h testrtsig.h sigset-cvt-mask.h
-
-diff -u -udbrN glibc-2.3.2/signal/tst-sigset.c glibc-2.3.2-200304020432/signal/tst-sigset.c
---- glibc-2.3.2/signal/tst-sigset.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/signal/tst-sigset.c Tue Apr 1 08:49:23 2003
-@@ -0,0 +1,43 @@
-+/* Test sig*set functions. */
-+
-+#include <signal.h>
-+#include <stdio.h>
-+
-+#define TEST_FUNCTION do_test ()
-+static int
-+do_test (void)
-+{
-+ int result = 0;
-+ int sig = -1;
-+
-+#define TRY(call) \
-+ if (call) \
-+ { \
-+ printf ("%s (sig = %d): %m\n", #call, sig); \
-+ result = 1; \
-+ } \
-+ else
-+
-+
-+ sigset_t set;
-+ TRY (sigemptyset (&set) != 0);
-+
-+#ifdef SIGRTMAX
-+ int max_sig = SIGRTMAX;
-+#else
-+ int max_sig = NSIG - 1;
-+#endif
-+
-+ for (sig = 1; sig <= max_sig; ++sig)
-+ {
-+ TRY (sigismember (&set, sig) != 0);
-+ TRY (sigaddset (&set, sig) != 0);
-+ TRY (sigismember (&set, sig) == 0);
-+ TRY (sigdelset (&set, sig) != 0);
-+ TRY (sigismember (&set, sig) != 0);
-+ }
-+
-+ return result;
-+}
-+
-+#include "../test-skeleton.c"
-diff -u -udbrN glibc-2.3.2/stdio-common/_itoa.c glibc-2.3.2-200304020432/stdio-common/_itoa.c
---- glibc-2.3.2/stdio-common/_itoa.c Tue Mar 12 20:27:44 2002
-+++ glibc-2.3.2-200304020432/stdio-common/_itoa.c Fri Mar 14 04:59:41 2003
-@@ -1,5 +1,6 @@
- /* Internal function for converting integers to ASCII.
-- Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1994, 1995, 1996, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund <tege@matematik.su.se>
- and Ulrich Drepper <drepper@gnu.org>.
-@@ -81,41 +82,41 @@
- const struct base_table_t _itoa_base_table[] attribute_hidden =
- {
- #if BITS_PER_MP_LIMB == 64
-- /* 2 */ {SEL1(0ul) 1, 1},
-- /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 1},
-- /* 4 */ {SEL1(0ul) 1, 2},
-- /* 5 */ {SEL1(0xcccccccccccccccdul) 0, 2},
-- /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 2},
-- /* 7 */ {SEL1(0x2492492492492493ul) 1, 3},
-- /* 8 */ {SEL1(0ul) 1, 3},
-- /* 9 */ {SEL1(0xe38e38e38e38e38ful) 0, 3},
-- /* 10 */ {SEL1(0xcccccccccccccccdul) 0, 3},
-- /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 1},
-- /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 3},
-- /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 2},
-- /* 14 */ {SEL1(0x2492492492492493ul) 1, 4},
-- /* 15 */ {SEL1(0x8888888888888889ul) 0, 3},
-- /* 16 */ {SEL1(0ul) 1, 4},
-- /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 4},
-- /* 18 */ {SEL1(0xe38e38e38e38e38ful) 0, 4},
-- /* 19 */ {SEL1(0xd79435e50d79435ful) 0, 4},
-- /* 20 */ {SEL1(0xcccccccccccccccdul) 0, 4},
-- /* 21 */ {SEL1(0x8618618618618619ul) 1, 5},
-- /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 2},
-- /* 23 */ {SEL1(0x642c8590b21642c9ul) 1, 5},
-- /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 4},
-- /* 25 */ {SEL1(0x47ae147ae147ae15ul) 1, 5},
-- /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 3},
-- /* 27 */ {SEL1(0x97b425ed097b425ful) 0, 4},
-- /* 28 */ {SEL1(0x2492492492492493ul) 1, 5},
-- /* 29 */ {SEL1(0x1a7b9611a7b9611bul) 1, 5},
-- /* 30 */ {SEL1(0x8888888888888889ul) 0, 4},
-- /* 31 */ {SEL1(0x0842108421084211ul) 1, 5},
-- /* 32 */ {SEL1(0ul) 1, 5},
-- /* 33 */ {SEL1(0x0f83e0f83e0f83e1ul) 0, 1},
-- /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 5},
-- /* 35 */ {SEL1(0xea0ea0ea0ea0ea0ful) 0, 5},
-- /* 36 */ {SEL1(0xe38e38e38e38e38ful) 0, 5}
-+ /* 2 */ {SEL1(0ull) 1, 1},
-+ /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1},
-+ /* 4 */ {SEL1(0ull) 1, 2},
-+ /* 5 */ {SEL1(0xcccccccccccccccdull) 0, 2},
-+ /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2},
-+ /* 7 */ {SEL1(0x2492492492492493ull) 1, 3},
-+ /* 8 */ {SEL1(0ull) 1, 3},
-+ /* 9 */ {SEL1(0xe38e38e38e38e38full) 0, 3},
-+ /* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3},
-+ /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1},
-+ /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3},
-+ /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2},
-+ /* 14 */ {SEL1(0x2492492492492493ull) 1, 4},
-+ /* 15 */ {SEL1(0x8888888888888889ull) 0, 3},
-+ /* 16 */ {SEL1(0ull) 1, 4},
-+ /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4},
-+ /* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4},
-+ /* 19 */ {SEL1(0xd79435e50d79435full) 0, 4},
-+ /* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4},
-+ /* 21 */ {SEL1(0x8618618618618619ull) 1, 5},
-+ /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2},
-+ /* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5},
-+ /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4},
-+ /* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5},
-+ /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3},
-+ /* 27 */ {SEL1(0x97b425ed097b425full) 0, 4},
-+ /* 28 */ {SEL1(0x2492492492492493ull) 1, 5},
-+ /* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5},
-+ /* 30 */ {SEL1(0x8888888888888889ull) 0, 4},
-+ /* 31 */ {SEL1(0x0842108421084211ull) 1, 5},
-+ /* 32 */ {SEL1(0ull) 1, 5},
-+ /* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1},
-+ /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5},
-+ /* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5},
-+ /* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5}
- #endif
- #if BITS_PER_MP_LIMB == 32
- /* 2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}},
-diff -u -udbrN glibc-2.3.2/stdio-common/sscanf.c glibc-2.3.2-200304020432/stdio-common/sscanf.c
---- glibc-2.3.2/stdio-common/sscanf.c Sat Aug 10 20:09:08 2002
-+++ glibc-2.3.2-200304020432/stdio-common/sscanf.c Wed Mar 5 20:58:03 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,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
-@@ -27,9 +27,7 @@
- /* Read formatted input from S, according to the format string FORMAT. */
- /* VARARGS2 */
- int
--sscanf (s, format)
-- const char *s;
-- const char *format;
-+sscanf (const char *s, const char *format, ...)
- {
- va_list arg;
- int done;
-diff -u -udbrN glibc-2.3.2/stdlib/cxa_finalize.c glibc-2.3.2-200304020432/stdlib/cxa_finalize.c
---- glibc-2.3.2/stdlib/cxa_finalize.c Fri Dec 6 11:43:29 2002
-+++ glibc-2.3.2-200304020432/stdlib/cxa_finalize.c Fri Mar 21 08:45:55 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -18,7 +18,7 @@
-
- #include <assert.h>
- #include <stdlib.h>
--#include <atomicity.h>
-+#include <atomic.h>
- #include "exit.h"
- #include <fork.h>
-
-@@ -36,7 +36,8 @@
- for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
- if ((d == NULL || d == f->func.cxa.dso_handle)
- /* We don't want to run this cleanup more than once. */
-- && compare_and_swap (&f->flavor, ef_cxa, ef_free))
-+ && ! atomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
-+ ef_cxa))
- (*f->func.cxa.fn) (f->func.cxa.arg, 0);
- }
-
-diff -u -udbrN glibc-2.3.2/stdlib/fpioconst.c glibc-2.3.2-200304020432/stdlib/fpioconst.c
---- glibc-2.3.2/stdlib/fpioconst.c Mon Mar 11 09:32:01 2002
-+++ glibc-2.3.2-200304020432/stdlib/fpioconst.c Fri Mar 14 04:59:41 2003
-@@ -1,5 +1,6 @@
- /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
-- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 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
-@@ -235,195 +236,198 @@
- {
- #define TENS_P0_IDX 0
- #define TENS_P0_SIZE 2
-- [TENS_P0_IDX] = 0x0000000000000000, 0x000000000000000a,
-+ [TENS_P0_IDX] = 0x0000000000000000ull, 0x000000000000000aull,
-
- #define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
- #define TENS_P1_SIZE 2
-- [TENS_P1_IDX] = 0x0000000000000000, 0x0000000000000064,
-+ [TENS_P1_IDX] = 0x0000000000000000ull, 0x0000000000000064ull,
-
- #define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
- #define TENS_P2_SIZE 2
-- [TENS_P2_IDX] = 0x0000000000000000, 0x0000000000002710,
-+ [TENS_P2_IDX] = 0x0000000000000000ull, 0x0000000000002710ull,
-
- #define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
- #define TENS_P3_SIZE 2
-- [TENS_P3_IDX] = 0x0000000000000000, 0x0000000005f5e100,
-+ [TENS_P3_IDX] = 0x0000000000000000ull, 0x0000000005f5e100ull,
-
- #define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
- #define TENS_P4_SIZE 2
-- [TENS_P4_IDX] = 0x0000000000000000, 0x002386f26fc10000,
-+ [TENS_P4_IDX] = 0x0000000000000000ull, 0x002386f26fc10000ull,
-
- #define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
- #define TENS_P5_SIZE 3
-- [TENS_P5_IDX] = 0x0000000000000000, 0x85acef8100000000, 0x000004ee2d6d415b,
-+ [TENS_P5_IDX] = 0x0000000000000000ull, 0x85acef8100000000ull,
-+ 0x000004ee2d6d415bull,
-
- #define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
- #define TENS_P6_SIZE 5
-- [TENS_P6_IDX] = 0x0000000000000000, 0x0000000000000000, 0x6e38ed64bf6a1f01,
-- 0xe93ff9f4daa797ed, 0x0000000000184f03,
-+ [TENS_P6_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x6e38ed64bf6a1f01ull, 0xe93ff9f4daa797edull, 0x0000000000184f03ull,
-
- #define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
- #define TENS_P7_SIZE 8
-- [TENS_P7_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x03df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec,
-- 0xa6337f19bccdb0da, 0x0000024ee91f2603,
-+ [TENS_P7_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x03df99092e953e01ull, 0x2374e42f0f1538fdull,
-+ 0xc404dc08d3cff5ecull, 0xa6337f19bccdb0daull, 0x0000024ee91f2603ull,
-
- #define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
- #define TENS_P8_SIZE 15
-- [TENS_P8_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xbed3875b982e7c01,
-- 0x12152f87d8d99f72, 0xcf4a6e706bde50c6, 0x26b2716ed595d80f,
-- 0x1d153624adc666b0, 0x63ff540e3c42d35a, 0x65f9ef17cc5573c0,
-- 0x80dcc7f755bc28f2, 0x5fdcefcef46eeddc, 0x00000000000553f7,
-+ [TENS_P8_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xbed3875b982e7c01ull, 0x12152f87d8d99f72ull, 0xcf4a6e706bde50c6ull,
-+ 0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull,
-+ 0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull,
-+ 0x00000000000553f7ull,
- #ifndef __NO_LONG_DOUBLE_MATH
- # define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
- # define TENS_P9_SIZE 28
-- [TENS_P9_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x77f27267fc6cf801, 0x5d96976f8f9546dc, 0xc31e1ad9b83a8a97,
-- 0x94e6574746c40513, 0x4475b579c88976c1, 0xaa1da1bf28f8733b,
-- 0x1e25cfea703ed321, 0xbc51fb2eb21a2f22, 0xbfa3edac96e14f5d,
-- 0xe7fc7153329c57ae, 0x85a91924c3fc0695, 0xb2908ee0f95f635e,
-- 0x1366732a93abade4, 0x69be5b0e9449775c, 0xb099bc817343afac,
-- 0xa269974845a71d46, 0x8a0b1f138cb07303, 0xc1d238d98cab8a97,
-- 0x0000001c633415d4,
-+ [TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x77f27267fc6cf801ull, 0x5d96976f8f9546dcull,
-+ 0xc31e1ad9b83a8a97ull, 0x94e6574746c40513ull, 0x4475b579c88976c1ull,
-+ 0xaa1da1bf28f8733bull, 0x1e25cfea703ed321ull, 0xbc51fb2eb21a2f22ull,
-+ 0xbfa3edac96e14f5dull, 0xe7fc7153329c57aeull, 0x85a91924c3fc0695ull,
-+ 0xb2908ee0f95f635eull, 0x1366732a93abade4ull, 0x69be5b0e9449775cull,
-+ 0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull,
-+ 0xc1d238d98cab8a97ull, 0x0000001c633415d4ull,
-
- # define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
- # define TENS_P10_SIZE 55
-- [TENS_P10_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xf55b2b722919f001,
-- 0x1ec29f866e7c215b, 0x15c51a88991c4e87, 0x4c7d1e1a140ac535,
-- 0x0ed1440ecc2cd819, 0x7de16cfb896634ee, 0x9fce837d1e43f61f,
-- 0x233e55c7231d2b9c, 0xf451218b65dc60d7, 0xc96359861c5cd134,
-- 0xa7e89431922bbb9f, 0x62be695a9f9f2a07, 0x045b7a748e1042c4,
-- 0x8ad822a51abe1de3, 0xd814b505ba34c411, 0x8fc51a16bf3fdeb3,
-- 0xf56deeecb1b896bc, 0xb6f4654b31fb6bfd, 0x6b7595fb101a3616,
-- 0x80d98089dc1a47fe, 0x9a20288280bda5a5, 0xfc8f1f9031eb0f66,
-- 0xe26a7b7e976a3310, 0x3ce3a0b8df68368a, 0x75a351a28e4262ce,
-- 0x445975836cb0b6c9, 0xc356e38a31b5653f, 0x0190fba035faaba6,
-- 0x88bc491b9fc4ed52, 0x005b80411640114a, 0x1e8d4649f4f3235e,
-- 0x73c5534936a8de06, 0xc1a6970ca7e6bd2a, 0xd2db49ef47187094,
-- 0xae6209d4926c3f5b, 0x34f4a3c62d433949, 0xd9d61a05d4305d94,
-- 0x0000000000000325,
-+ [TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xf55b2b722919f001ull, 0x1ec29f866e7c215bull, 0x15c51a88991c4e87ull,
-+ 0x4c7d1e1a140ac535ull, 0x0ed1440ecc2cd819ull, 0x7de16cfb896634eeull,
-+ 0x9fce837d1e43f61full, 0x233e55c7231d2b9cull, 0xf451218b65dc60d7ull,
-+ 0xc96359861c5cd134ull, 0xa7e89431922bbb9full, 0x62be695a9f9f2a07ull,
-+ 0x045b7a748e1042c4ull, 0x8ad822a51abe1de3ull, 0xd814b505ba34c411ull,
-+ 0x8fc51a16bf3fdeb3ull, 0xf56deeecb1b896bcull, 0xb6f4654b31fb6bfdull,
-+ 0x6b7595fb101a3616ull, 0x80d98089dc1a47feull, 0x9a20288280bda5a5ull,
-+ 0xfc8f1f9031eb0f66ull, 0xe26a7b7e976a3310ull, 0x3ce3a0b8df68368aull,
-+ 0x75a351a28e4262ceull, 0x445975836cb0b6c9ull, 0xc356e38a31b5653full,
-+ 0x0190fba035faaba6ull, 0x88bc491b9fc4ed52ull, 0x005b80411640114aull,
-+ 0x1e8d4649f4f3235eull, 0x73c5534936a8de06ull, 0xc1a6970ca7e6bd2aull,
-+ 0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull,
-+ 0xd9d61a05d4305d94ull, 0x0000000000000325ull,
-
- # define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
- # define TENS_P11_SIZE 108
-- [TENS_P11_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0xe30968651333e001, 0x49e28dcfb27d4d3f, 0xee87e354ec2e4721,
-- 0x368b8abbb6067584, 0x2ed56d55a5e5a191, 0xea50d142fd827773,
-- 0x98342c9e51b78db2, 0x866ed6f1c850dabc, 0x9279498719342c12,
-- 0x66912e4ad2f869c2, 0x57a7842d71c7fd8f, 0xfb7fedcc235552eb,
-- 0x38209ce1f3861ce0, 0x34c101349713b449, 0xa7a8289c8c6c54de,
-- 0xe3cb64f32dbb6643, 0xe3892ee98074ff01, 0xa8f16f9210c17f94,
-- 0x967abbb3a8281ed6, 0x9952fbed5a151440, 0xafe609c313b41e44,
-- 0xf111821fa2bca416, 0x91bac974fb1264b4, 0x8e48ff35d6c7d6ab,
-- 0xc4a656654419bd43, 0x33554c36685e5510, 0x0dbd21feab498697,
-- 0x982da4663cfe491d, 0x9e110c7bcbea4ca7, 0x5fc5a04779c56b8a,
-- 0x1aa9f44484d80e2e, 0x6a57b1ab730f203c, 0x87a7dc62d752f7a6,
-- 0x40660460944545ff, 0xc9ac375d77c1a42f, 0x744695f0e866d7ef,
-- 0xa1fc6b9681428c85, 0x7bf03c19d7917c7b, 0x5715f7915b33eb41,
-- 0xdb0708fd8f6cae5f, 0x785ce6b7b125ac8e, 0x6f46eadb56c6815b,
-- 0x195355d84eeebeee, 0x9d7389c0a244de3c, 0xcf99d01953761abd,
-- 0x0d76ce39de9ec24b, 0x2e55ecee70beb181, 0xf56d9d4bd5f86079,
-- 0x13ef5a83fb8886fb, 0x3f3389a4408f43c5, 0x58ccf45cfad37943,
-- 0x415c7f3ef82df846, 0x8b3d5cf42915e818, 0xf8dbb57a6a445f27,
-- 0x8ad803ecca8f0070, 0x038f9245b2e87c34, 0xc7c9dee0bedd8a6c,
-- 0x2ad3fa140eac7d56, 0xf775677ce0de0840, 0x92be221ef1bd0ad5,
-- 0xce9d04a487fa1fb9, 0x3f6f7024d2c36fa9, 0x907855eeb028af62,
-- 0x4efac5dcd83e49d6, 0x77cd8c6be7151aab, 0x0af908b40a753b7d,
-- 0xe50f30278c983623, 0x1d08e2d694222771, 0xf2ee5ca6f7e928e6,
-- 0x11eb962b1b61b93c, 0xce2bcba19648b21c, 0x7bbebe3034f77154,
-- 0x8ce329ace526a319, 0xb5dc53d5de4a74d2, 0x000000000009e8b3,
-+ [TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0xe30968651333e001ull, 0x49e28dcfb27d4d3full,
-+ 0xee87e354ec2e4721ull, 0x368b8abbb6067584ull, 0x2ed56d55a5e5a191ull,
-+ 0xea50d142fd827773ull, 0x98342c9e51b78db2ull, 0x866ed6f1c850dabcull,
-+ 0x9279498719342c12ull, 0x66912e4ad2f869c2ull, 0x57a7842d71c7fd8full,
-+ 0xfb7fedcc235552ebull, 0x38209ce1f3861ce0ull, 0x34c101349713b449ull,
-+ 0xa7a8289c8c6c54deull, 0xe3cb64f32dbb6643ull, 0xe3892ee98074ff01ull,
-+ 0xa8f16f9210c17f94ull, 0x967abbb3a8281ed6ull, 0x9952fbed5a151440ull,
-+ 0xafe609c313b41e44ull, 0xf111821fa2bca416ull, 0x91bac974fb1264b4ull,
-+ 0x8e48ff35d6c7d6abull, 0xc4a656654419bd43ull, 0x33554c36685e5510ull,
-+ 0x0dbd21feab498697ull, 0x982da4663cfe491dull, 0x9e110c7bcbea4ca7ull,
-+ 0x5fc5a04779c56b8aull, 0x1aa9f44484d80e2eull, 0x6a57b1ab730f203cull,
-+ 0x87a7dc62d752f7a6ull, 0x40660460944545ffull, 0xc9ac375d77c1a42full,
-+ 0x744695f0e866d7efull, 0xa1fc6b9681428c85ull, 0x7bf03c19d7917c7bull,
-+ 0x5715f7915b33eb41ull, 0xdb0708fd8f6cae5full, 0x785ce6b7b125ac8eull,
-+ 0x6f46eadb56c6815bull, 0x195355d84eeebeeeull, 0x9d7389c0a244de3cull,
-+ 0xcf99d01953761abdull, 0x0d76ce39de9ec24bull, 0x2e55ecee70beb181ull,
-+ 0xf56d9d4bd5f86079ull, 0x13ef5a83fb8886fbull, 0x3f3389a4408f43c5ull,
-+ 0x58ccf45cfad37943ull, 0x415c7f3ef82df846ull, 0x8b3d5cf42915e818ull,
-+ 0xf8dbb57a6a445f27ull, 0x8ad803ecca8f0070ull, 0x038f9245b2e87c34ull,
-+ 0xc7c9dee0bedd8a6cull, 0x2ad3fa140eac7d56ull, 0xf775677ce0de0840ull,
-+ 0x92be221ef1bd0ad5ull, 0xce9d04a487fa1fb9ull, 0x3f6f7024d2c36fa9ull,
-+ 0x907855eeb028af62ull, 0x4efac5dcd83e49d6ull, 0x77cd8c6be7151aabull,
-+ 0x0af908b40a753b7dull, 0xe50f30278c983623ull, 0x1d08e2d694222771ull,
-+ 0xf2ee5ca6f7e928e6ull, 0x11eb962b1b61b93cull, 0xce2bcba19648b21cull,
-+ 0x7bbebe3034f77154ull, 0x8ce329ace526a319ull, 0xb5dc53d5de4a74d2ull,
-+ 0x000000000009e8b3ull,
-
- # define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
- # define TENS_P12_SIZE 214
-- [TENS_P12_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
-- 0x0000000000000000, 0x0000000000000000, 0xd4724e8d2a67c001,
-- 0xf89a1e908efe7ae7, 0x54e05154ef084117, 0x506be82913b1bb51,
-- 0xe599574efb29b172, 0x806c0ed3f0da6146, 0x45155e93b86ae5be,
-- 0x7e1e7c34c0591cc2, 0x1d1f4cce7c4823da, 0xd6bfdf759b8ba1e8,
-- 0xc2dfae78e341be10, 0x0f237f1a016b67b2, 0xaf6a25743dbeabcd,
-- 0x142e0e80cab3e6d7, 0x2c23481161959127, 0xcb4bf98287009701,
-- 0x88052f8cf8169c84, 0xbc13176168dde6d4, 0x54ab9c41ff0b0905,
-- 0x1a1c304e7613b224, 0x441c2d473bfe167b, 0x78f061814f6cea9c,
-- 0x30c7ae41eb659fb8, 0xa1ebcad7947e0d0e, 0x2130504dd97d9556,
-- 0xf2acd5071a8309cb, 0xfd82373a3f8ec72a, 0x280f4d3295a842bc,
-- 0x811a4f04f3618ac0, 0xd3967a1b6dc3a5b4, 0xdcfe388f15b8c898,
-- 0x8738b909454eb2a0, 0x2bd9cc1110c4e996, 0x655fec303297cd0c,
-- 0xf4090ee8ae0725b1, 0x398c6fed037d19ee, 0xc994a4503b9af26b,
-- 0x75a697b2b5341743, 0x3ccb5b92ac50b9c1, 0xa8329761ffe06205,
-- 0xeb83cadbdfea5242, 0x3c20ee69e79dadf7, 0x7021b97a1e0a6817,
-- 0x176ca776743074fa, 0xeca19beb77fb8af6, 0xaf63b71292baf1de,
-- 0xa4eb8f8cde35c88b, 0x40b464a0e137d5e9, 0x42923bbd87d1cde8,
-- 0x2e2690f3cd8f62ff, 0x59c89f1b095edc16, 0x5138753d1fa8fd5d,
-- 0x80152f18390a2b29, 0xf984d83e2dd8d925, 0xc19e1faf7a872e74,
-- 0xecf9b5d0ed4d542d, 0xc53c0adf9462ea75, 0x37a2d4390caea134,
-- 0x2181327ec8fa2e8a, 0x2d2408206e7bb827, 0x5893d4b850be10e0,
-- 0x1f2b2322ab312bb9, 0xbf627ede440b3f25, 0xb608b89572dac789,
-- 0x86deb3f078787e2a, 0xbb9373f46fee7aab, 0xf7d8b57e27ecf57b,
-- 0x3d04e8d2fca26a9f, 0x3172826ac9df13cb, 0xa8fcd8e0cd9e8d7c,
-- 0x307641d9b2c39497, 0x2608c4cf1cc939c1, 0x3d326a7eb6d1c7bf,
-- 0x8e13e25feeaf19e6, 0x2dfe6d97ee63302b, 0xe41d3cc425971d58,
-- 0xab8db59a0a80627c, 0xe90afb779eea37c8, 0x9ee3352c90ca19cf,
-- 0xfe78d6823613c850, 0x5b060904788f6e50, 0x3fecb534b71bd1a4,
-- 0x20c33857b32c450c, 0x0239f4cea6e9cfda, 0xa19adb9548497187,
-- 0x95aca6a8b492ed8a, 0xcf1b23504dcd6cd9, 0x1a67778cfbe8b12a,
-- 0xc32da38338eb3acc, 0xa03f40a8fb126ab1, 0xe9ce4724ed5bf546,
-- 0x73a130d84c4a74fd, 0xa2ebd6c1d9960e2d, 0x6f233b7c94ab6feb,
-- 0x8e7b9a7349126080, 0xd298f9994b8c9091, 0xa96ddeff35e836b5,
-- 0x6b0dd9bc96119b31, 0x282566fbc6cc3f8d, 0xd6769f3b72b882e7,
-- 0x00fc509ba674343d, 0xd6266a3fdcbf7789, 0x4e89541bae9641fd,
-- 0x53400d0311953407, 0xe5b533458e0dd75a, 0x108b89bc108f19ad,
-- 0xe03b2b6341a4c954, 0x97aced8e437b3d7f, 0x2c5508c2cbd66670,
-- 0x5c4f2ef0650ebc69, 0x9985a2df904ff6bf, 0x5ed8d2399faddd9e,
-- 0xe3e51cb925585832, 0x56c02d9a0ff4f1d4, 0xc1a08a138c4ef804,
-- 0xe6d2767113fd01c8, 0x9d0176cca7c234f4, 0x4d8bfa89d0d73df2,
-- 0x2b17e0b2544f10cd, 0xfd86fe49b70a5c7d, 0x214495bbdf373f41,
-- 0x00d313d584e857fd, 0xa4ba47440496fcbe, 0xaec29e6ee8cac982,
-- 0x7000a51987ec7038, 0xff66e42caeee333b, 0x03b4f63b8afd6b25,
-- 0x5ab8d9c7bd7991dc, 0x48741a6c2ed4684e, 0x2fdc6349af06940d,
-- 0xe974996fb03d7ecd, 0x52ec8721ac7867f9, 0x8edd2d00bcdd9d4a,
-- 0x41c759f83557de06, 0xa75409f23956d4b9, 0xb6100fab123cd8a1,
-- 0x2e8d623b3e7b21e2, 0xbca35f7792959da2, 0x35fcb457200c03a5,
-- 0xf74eb9281bb6c6e4, 0x87cc1d213d5d0b54, 0x18ae42404964046f,
-- 0x8bd2b496d868b275, 0xc234d8f51c5563f4, 0xf9151ffff868e970,
-- 0x271133eeae7be4a2, 0x25254932bb0fd922, 0x104bcd64a60a9fc0,
-- 0x0000006230290145
-+ [TENS_P12_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
-+ 0xd4724e8d2a67c001ull, 0xf89a1e908efe7ae7ull, 0x54e05154ef084117ull,
-+ 0x506be82913b1bb51ull, 0xe599574efb29b172ull, 0x806c0ed3f0da6146ull,
-+ 0x45155e93b86ae5beull, 0x7e1e7c34c0591cc2ull, 0x1d1f4cce7c4823daull,
-+ 0xd6bfdf759b8ba1e8ull, 0xc2dfae78e341be10ull, 0x0f237f1a016b67b2ull,
-+ 0xaf6a25743dbeabcdull, 0x142e0e80cab3e6d7ull, 0x2c23481161959127ull,
-+ 0xcb4bf98287009701ull, 0x88052f8cf8169c84ull, 0xbc13176168dde6d4ull,
-+ 0x54ab9c41ff0b0905ull, 0x1a1c304e7613b224ull, 0x441c2d473bfe167bull,
-+ 0x78f061814f6cea9cull, 0x30c7ae41eb659fb8ull, 0xa1ebcad7947e0d0eull,
-+ 0x2130504dd97d9556ull, 0xf2acd5071a8309cbull, 0xfd82373a3f8ec72aull,
-+ 0x280f4d3295a842bcull, 0x811a4f04f3618ac0ull, 0xd3967a1b6dc3a5b4ull,
-+ 0xdcfe388f15b8c898ull, 0x8738b909454eb2a0ull, 0x2bd9cc1110c4e996ull,
-+ 0x655fec303297cd0cull, 0xf4090ee8ae0725b1ull, 0x398c6fed037d19eeull,
-+ 0xc994a4503b9af26bull, 0x75a697b2b5341743ull, 0x3ccb5b92ac50b9c1ull,
-+ 0xa8329761ffe06205ull, 0xeb83cadbdfea5242ull, 0x3c20ee69e79dadf7ull,
-+ 0x7021b97a1e0a6817ull, 0x176ca776743074faull, 0xeca19beb77fb8af6ull,
-+ 0xaf63b71292baf1deull, 0xa4eb8f8cde35c88bull, 0x40b464a0e137d5e9ull,
-+ 0x42923bbd87d1cde8ull, 0x2e2690f3cd8f62ffull, 0x59c89f1b095edc16ull,
-+ 0x5138753d1fa8fd5dull, 0x80152f18390a2b29ull, 0xf984d83e2dd8d925ull,
-+ 0xc19e1faf7a872e74ull, 0xecf9b5d0ed4d542dull, 0xc53c0adf9462ea75ull,
-+ 0x37a2d4390caea134ull, 0x2181327ec8fa2e8aull, 0x2d2408206e7bb827ull,
-+ 0x5893d4b850be10e0ull, 0x1f2b2322ab312bb9ull, 0xbf627ede440b3f25ull,
-+ 0xb608b89572dac789ull, 0x86deb3f078787e2aull, 0xbb9373f46fee7aabull,
-+ 0xf7d8b57e27ecf57bull, 0x3d04e8d2fca26a9full, 0x3172826ac9df13cbull,
-+ 0xa8fcd8e0cd9e8d7cull, 0x307641d9b2c39497ull, 0x2608c4cf1cc939c1ull,
-+ 0x3d326a7eb6d1c7bfull, 0x8e13e25feeaf19e6ull, 0x2dfe6d97ee63302bull,
-+ 0xe41d3cc425971d58ull, 0xab8db59a0a80627cull, 0xe90afb779eea37c8ull,
-+ 0x9ee3352c90ca19cfull, 0xfe78d6823613c850ull, 0x5b060904788f6e50ull,
-+ 0x3fecb534b71bd1a4ull, 0x20c33857b32c450cull, 0x0239f4cea6e9cfdaull,
-+ 0xa19adb9548497187ull, 0x95aca6a8b492ed8aull, 0xcf1b23504dcd6cd9ull,
-+ 0x1a67778cfbe8b12aull, 0xc32da38338eb3accull, 0xa03f40a8fb126ab1ull,
-+ 0xe9ce4724ed5bf546ull, 0x73a130d84c4a74fdull, 0xa2ebd6c1d9960e2dull,
-+ 0x6f233b7c94ab6febull, 0x8e7b9a7349126080ull, 0xd298f9994b8c9091ull,
-+ 0xa96ddeff35e836b5ull, 0x6b0dd9bc96119b31ull, 0x282566fbc6cc3f8dull,
-+ 0xd6769f3b72b882e7ull, 0x00fc509ba674343dull, 0xd6266a3fdcbf7789ull,
-+ 0x4e89541bae9641fdull, 0x53400d0311953407ull, 0xe5b533458e0dd75aull,
-+ 0x108b89bc108f19adull, 0xe03b2b6341a4c954ull, 0x97aced8e437b3d7full,
-+ 0x2c5508c2cbd66670ull, 0x5c4f2ef0650ebc69ull, 0x9985a2df904ff6bfull,
-+ 0x5ed8d2399faddd9eull, 0xe3e51cb925585832ull, 0x56c02d9a0ff4f1d4ull,
-+ 0xc1a08a138c4ef804ull, 0xe6d2767113fd01c8ull, 0x9d0176cca7c234f4ull,
-+ 0x4d8bfa89d0d73df2ull, 0x2b17e0b2544f10cdull, 0xfd86fe49b70a5c7dull,
-+ 0x214495bbdf373f41ull, 0x00d313d584e857fdull, 0xa4ba47440496fcbeull,
-+ 0xaec29e6ee8cac982ull, 0x7000a51987ec7038ull, 0xff66e42caeee333bull,
-+ 0x03b4f63b8afd6b25ull, 0x5ab8d9c7bd7991dcull, 0x48741a6c2ed4684eull,
-+ 0x2fdc6349af06940dull, 0xe974996fb03d7ecdull, 0x52ec8721ac7867f9ull,
-+ 0x8edd2d00bcdd9d4aull, 0x41c759f83557de06ull, 0xa75409f23956d4b9ull,
-+ 0xb6100fab123cd8a1ull, 0x2e8d623b3e7b21e2ull, 0xbca35f7792959da2ull,
-+ 0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull,
-+ 0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull,
-+ 0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull,
-+ 0x104bcd64a60a9fc0ull, 0x0000006230290145ull
- #endif
- };
-
-diff -u -udbrN glibc-2.3.2/stdlib/fpioconst.h glibc-2.3.2-200304020432/stdlib/fpioconst.h
---- glibc-2.3.2/stdlib/fpioconst.h Tue Mar 12 10:24:56 2002
-+++ glibc-2.3.2-200304020432/stdlib/fpioconst.h Fri Mar 14 05:21:27 2003
-@@ -1,5 +1,6 @@
- /* Header file for constants used in floating point <-> decimal conversions.
-- Copyright (C) 1995,1996,1997,1998,1999,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 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
-@@ -22,7 +23,7 @@
-
- #include <float.h>
- #include <math.h>
--#include "gmp.h"
-+#include <gmp.h>
-
-
- /* These values are used by __printf_fp, where they are noncritical (if the
-diff -u -udbrN glibc-2.3.2/stdlib/stdlib.h glibc-2.3.2-200304020432/stdlib/stdlib.h
---- glibc-2.3.2/stdlib/stdlib.h Wed Aug 28 04:11:33 2002
-+++ glibc-2.3.2-200304020432/stdlib/stdlib.h Sat Mar 1 23:31:46 2003
-@@ -410,7 +410,9 @@
- /* Read a number from a string S in base 64 as above. */
- extern long int a64l (__const char *__s) __THROW __attribute_pure__;
-
-+#endif /* Use SVID || extended X/Open. */
-
-+#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
- # include <sys/types.h> /* we need int32_t... */
-
- /* These are the functions that actually do things. The `random', `srandom',
-@@ -463,7 +465,7 @@
- extern int setstate_r (char *__restrict __statebuf,
- struct random_data *__restrict __buf) __THROW;
- # endif /* Use misc. */
--#endif /* Use SVID || extended X/Open. */
-+#endif /* Use SVID || extended X/Open || BSD. */
-
-
- __BEGIN_NAMESPACE_STD
-diff -u -udbrN glibc-2.3.2/stdlib/strtod.c glibc-2.3.2-200304020432/stdlib/strtod.c
---- glibc-2.3.2/stdlib/strtod.c Sat Feb 22 10:10:31 2003
-+++ glibc-2.3.2-200304020432/stdlib/strtod.c Sat Mar 29 20:04:35 2003
-@@ -64,9 +64,11 @@
- /* The gmp headers need some configuration frobs. */
- #define HAVE_ALLOCA 1
-
-+/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
-+ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
-+#include <gmp-mparam.h>
- #include <gmp.h>
- #include <gmp-impl.h>
--#include <gmp-mparam.h>
- #include <longlong.h>
- #include "fpioconst.h"
-
-@@ -157,7 +159,7 @@
- # define MAX_FAC_PER_LIMB 1000000000UL
- #elif BITS_PER_MP_LIMB == 64
- # define MAX_DIG_PER_LIMB 19
--# define MAX_FAC_PER_LIMB 10000000000000000000UL
-+# define MAX_FAC_PER_LIMB 10000000000000000000ULL
- #else
- # error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
- #endif
-@@ -166,14 +168,14 @@
- /* Local data structure. */
- static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
- { 0, 10, 100,
-- 1000, 10000, 100000,
-- 1000000, 10000000, 100000000,
-- 1000000000
-+ 1000, 10000, 100000L,
-+ 1000000L, 10000000L, 100000000L,
-+ 1000000000L
- #if BITS_PER_MP_LIMB > 32
-- , 10000000000U, 100000000000U,
-- 1000000000000U, 10000000000000U, 100000000000000U,
-- 1000000000000000U, 10000000000000000U, 100000000000000000U,
-- 1000000000000000000U, 10000000000000000000U
-+ , 10000000000ULL, 100000000000ULL,
-+ 1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
-+ 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
-+ 1000000000000000000ULL, 10000000000000000000ULL
- #endif
- #if BITS_PER_MP_LIMB > 64
- #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
-@@ -566,7 +568,7 @@
- for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
- if (cp[cnt] != decimal[cnt])
- break;
-- if (decimal[cnt] == '\0' && cp[1] >= '0' && cp[1] <= '9')
-+ if (decimal[cnt] == '\0' && cp[cnt] >= '0' && cp[cnt] <= '9')
- {
- /* We accept it. This funny construct is here only to indent
- the code directly. */
-@@ -880,7 +882,7 @@
- if (dig_no == int_no && dig_no > 0 && exponent < 0)
- do
- {
-- while (expp[-1] < L_('0') || expp[-1] > L_('9'))
-+ while (! (base == 16 ? ISXDIGIT (expp[-1]) : ISDIGIT (expp[-1])))
- --expp;
-
- if (expp[-1] != L_('0'))
-diff -u -udbrN glibc-2.3.2/stdlib/tst-strtod.c glibc-2.3.2-200304020432/stdlib/tst-strtod.c
---- glibc-2.3.2/stdlib/tst-strtod.c Sat Feb 22 10:08:26 2003
-+++ glibc-2.3.2-200304020432/stdlib/tst-strtod.c Thu Mar 20 02:06:11 2003
-@@ -71,6 +71,7 @@
- { "-Inf", -HUGE_VAL, '\0', 0 },
- { "+InFiNiTy", HUGE_VAL, '\0', 0 },
- #endif
-+ { "0x80000Ap-23", 0x80000Ap-23, '\0', 0 },
- { NULL, 0, '\0', 0 }
- };
-
-diff -u -udbrN glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/alpha/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps Mon Aug 19 19:57:42 2002
-+++ glibc-2.3.2-200304020432/sysdeps/alpha/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/arm/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/arm/libm-test-ulps
---- glibc-2.3.2/sysdeps/arm/libm-test-ulps Tue Apr 17 20:55:56 2001
-+++ glibc-2.3.2-200304020432/sysdeps/arm/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -134,7 +134,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-@@ -145,10 +145,10 @@
- idouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-@@ -187,7 +187,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -280,7 +280,7 @@
- ifloat: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-@@ -307,7 +307,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-@@ -320,7 +320,7 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -509,12 +509,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -604,7 +604,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/arm/sysdep.h glibc-2.3.2-200304020432/sysdeps/arm/sysdep.h
---- glibc-2.3.2/sysdeps/arm/sysdep.h Sat Jul 7 21:21:19 2001
-+++ glibc-2.3.2-200304020432/sysdeps/arm/sysdep.h Fri Mar 21 21:51:59 2003
-@@ -1,5 +1,5 @@
- /* Assembler macros for ARM.
-- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 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
-@@ -76,7 +76,7 @@
- #define CALL_MCOUNT \
- str lr,[sp, #-4]! ; \
- bl PLTJMP(mcount) ; \
-- ldr lr, [sp], #4
-+ ldr lr, [sp], #4 ;
- #else
- #define CALL_MCOUNT /* Do nothing. */
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/generic/bits/atomic.h
---- glibc-2.3.2/sysdeps/generic/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/generic/bits/atomic.h Sun Mar 23 00:00:14 2003
-@@ -0,0 +1,43 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-+
-+ 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 _BITS_ATOMIC_H
-+#define _BITS_ATOMIC_H 1
-+
-+/* We have by default no support for atomic operations. So define
-+ them non-atomic. If this is a problem somebody will have to come
-+ up with real definitions. */
-+
-+/* The only basic operation needed is compare and exchange. */
-+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __gmemp = (mem); \
-+ __typeof (*mem) __gret = *__gmemp; \
-+ __typeof (*mem) __gnewval = (newval); \
-+ \
-+ if (__gret == (oldval)) \
-+ *__gmemp = __gnewval; \
-+ __gret; })
-+
-+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __gmemp = (mem); \
-+ __typeof (*mem) __gnewval = (newval); \
-+ \
-+ *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
-+
-+#endif /* bits/atomic.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/bits/confname.h glibc-2.3.2-200304020432/sysdeps/generic/bits/confname.h
---- glibc-2.3.2/sysdeps/generic/bits/confname.h Mon Feb 24 02:38:15 2003
-+++ glibc-2.3.2-200304020432/sysdeps/generic/bits/confname.h Fri Mar 14 07:20:58 2003
-@@ -62,8 +62,10 @@
- #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
- _PC_ALLOC_SIZE_MIN,
- #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
-- _PC_SYMLINK_MAX
-+ _PC_SYMLINK_MAX,
- #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
-+ _PC_2_SYMLINKS
-+#define _PC_2_SYMLINKS _PC_2_SYMLINKS
- };
-
- /* Values for the argument to `sysconf'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/bits/time.h glibc-2.3.2-200304020432/sysdeps/generic/bits/time.h
---- glibc-2.3.2/sysdeps/generic/bits/time.h Wed Oct 23 08:21:18 2002
-+++ glibc-2.3.2-200304020432/sysdeps/generic/bits/time.h Mon Mar 3 05:42:14 2003
-@@ -1,5 +1,5 @@
- /* System-dependent timing definitions. Generic version.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999-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
-@@ -44,6 +44,8 @@
- # ifdef __USE_POSIX199309
- /* Identifier for system-wide realtime clock. */
- # define CLOCK_REALTIME 0
-+/* Monotonic system-wide clock. */
-+# define CLOCK_MONOTONIC 1
- /* High-resolution timer from the CPU. */
- # define CLOCK_PROCESS_CPUTIME_ID 2
- /* Thread-specific CPU-time clock. */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/bits/typesizes.h glibc-2.3.2-200304020432/sysdeps/generic/bits/typesizes.h
---- glibc-2.3.2/sysdeps/generic/bits/typesizes.h Thu Oct 24 01:48:45 2002
-+++ glibc-2.3.2-200304020432/sysdeps/generic/bits/typesizes.h Tue Mar 25 21:33:05 2003
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Generic version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,7 +54,7 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/dl-sysdep.c glibc-2.3.2-200304020432/sysdeps/generic/dl-sysdep.c
---- glibc-2.3.2/sysdeps/generic/dl-sysdep.c Sun Feb 23 06:04:15 2003
-+++ glibc-2.3.2-200304020432/sysdeps/generic/dl-sysdep.c Sun Mar 16 00:09:21 2003
-@@ -140,6 +140,9 @@
- GL(dl_sysinfo) = av->a_un.a_val;
- break;
- #endif
-+#ifdef DL_PLATFORM_AUXV
-+ DL_PLATFORM_AUXV
-+#endif
- }
-
- #ifdef DL_SYSDEP_OSCHECK
-@@ -338,7 +341,7 @@
-
- /* Determine the total size of all strings together. */
- if (cnt == 1)
-- total = temp[0].len;
-+ total = temp[0].len + 1;
- else
- {
- total = (1UL << (cnt - 2)) * (temp[0].len + temp[cnt - 1].len + 2);
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/dl-sysdep.h glibc-2.3.2-200304020432/sysdeps/generic/dl-sysdep.h
---- glibc-2.3.2/sysdeps/generic/dl-sysdep.h Thu Dec 19 19:36:08 2002
-+++ glibc-2.3.2-200304020432/sysdeps/generic/dl-sysdep.h Tue Mar 4 08:56:25 2003
-@@ -1,5 +1,5 @@
- /* System-specific settings for dynamic linker code. Generic version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -17,6 +17,9 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#ifndef _DL_SYSDEP_H
-+#define _DL_SYSDEP_H 1
-+
- /* This macro must be defined to either 0 or 1.
-
- If 1, then an errno global variable hidden in ld.so will work right with
-@@ -30,3 +33,5 @@
- #else
- # define RTLD_PRIVATE_ERRNO 0
- #endif
-+
-+#endif /* dl-sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/dl-tls.c glibc-2.3.2-200304020432/sysdeps/generic/dl-tls.c
---- glibc-2.3.2/sysdeps/generic/dl-tls.c Thu Jan 30 21:58:27 2003
-+++ glibc-2.3.2-200304020432/sysdeps/generic/dl-tls.c Thu Mar 6 07:40:43 2003
-@@ -294,7 +294,7 @@
-
- /* Allocate a correctly aligned chunk of memory. */
- result = __libc_memalign (GL(dl_tls_static_align), size);
-- if (__builtin_expect (result != NULL, 0))
-+ if (__builtin_expect (result != NULL, 1))
- {
- /* Allocate the DTV. */
- void *allocated = result;
-@@ -415,6 +415,9 @@
- dtv_t *dtv = GET_DTV (tcb);
-
- /* The array starts with dtv[-1]. */
-+#ifdef SHARED
-+ if (dtv != GL(dl_initial_dtv))
-+#endif
- free (dtv - 1);
-
- if (dealloc_tcb)
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c glibc-2.3.2-200304020432/sysdeps/generic/elf/backtracesyms.c
---- glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c Sat Jul 7 21:21:22 2001
-+++ glibc-2.3.2-200304020432/sysdeps/generic/elf/backtracesyms.c Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,5 @@
- /* Return list with names for address in backtrace.
-- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -48,7 +48,7 @@
- /* Fill in the information we can get from `dladdr'. */
- for (cnt = 0; cnt < size; ++cnt)
- {
-- status[cnt] = _dl_addr (array[cnt], &info[cnt]);
-+ status[cnt] = _dl_addr (array[cnt], &info[cnt], NULL, NULL);
- if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
- /* We have some info, compute the length of the string which will be
- "<file-name>(<sym-name>) [+offset]. */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c glibc-2.3.2-200304020432/sysdeps/generic/elf/backtracesymsfd.c
---- glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c Sat Jul 7 21:21:22 2001
-+++ glibc-2.3.2-200304020432/sysdeps/generic/elf/backtracesymsfd.c Mon Mar 10 10:12:11 2003
-@@ -1,5 +1,5 @@
- /* Write formatted list with names for addresses in backtrace to a file.
-- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-@@ -48,7 +48,7 @@
- Dl_info info;
- size_t last = 0;
-
-- if (_dl_addr (array[cnt], &info)
-+ if (_dl_addr (array[cnt], &info, NULL, NULL)
- && info.dli_fname && info.dli_fname[0] != '\0')
- {
- /* Name of the file. */
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/ldconfig.h glibc-2.3.2-200304020432/sysdeps/generic/ldconfig.h
---- glibc-2.3.2/sysdeps/generic/ldconfig.h Sun Sep 15 04:18:58 2002
-+++ glibc-2.3.2-200304020432/sysdeps/generic/ldconfig.h Fri Mar 14 06:32:49 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-@@ -32,6 +32,8 @@
- #define FLAG_X8664_LIB64 0x0300
- #define FLAG_S390_LIB64 0x0400
- #define FLAG_POWERPC_LIB64 0x0500
-+#define FLAG_MIPS64_LIBN32 0x0600
-+#define FLAG_MIPS64_LIBN64 0x0700
-
- /* Declared in cache.c. */
- extern void print_cache (const char *cache_name);
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/ldsodefs.h glibc-2.3.2-200304020432/sysdeps/generic/ldsodefs.h
---- glibc-2.3.2/sysdeps/generic/ldsodefs.h Fri Jan 3 21:42:47 2003
-+++ glibc-2.3.2-200304020432/sysdeps/generic/ldsodefs.h Thu Mar 27 02:15:04 2003
-@@ -97,9 +97,16 @@
- /* Reloc type classes as returned by elf_machine_type_class().
- ELF_RTYPE_CLASS_PLT means this reloc should not be satisfied by
- some PLT symbol, ELF_RTYPE_CLASS_COPY means this reloc should not be
-- satisfied by any symbol in the executable. */
-+ satisfied by any symbol in the executable. Some architectures do
-+ not support copy relocations. In this case we define the macro to
-+ zero so that the code for handling them gets automatically optimized
-+ out. */
- #define ELF_RTYPE_CLASS_PLT 1
--#define ELF_RTYPE_CLASS_COPY 2
-+#ifndef DL_NO_COPY_RELOCS
-+# define ELF_RTYPE_CLASS_COPY 2
-+#else
-+# define ELF_RTYPE_CLASS_COPY 0
-+#endif
-
- /* ELF uses the PF_x macros to specify the segment permissions, mmap
- uses PROT_xxx. In most cases the three macros have the values 1, 2,
-@@ -552,6 +559,16 @@
- /* Cache the locations of MAP's hash table. */
- extern void _dl_setup_hash (struct link_map *map)
- internal_function attribute_hidden;
-+
-+
-+/* Collect the directories in the search path for LOADER's dependencies.
-+ The data structure is defined in <dlfcn.h>. If COUNTING is true,
-+ SI->dls_cnt and SI->dls_size are set; if false, those must be as set
-+ by a previous call with COUNTING set, and SI must point to SI->dls_size
-+ bytes to be used in filling in the result. */
-+extern void _dl_rtld_di_serinfo (struct link_map *loader,
-+ Dl_serinfo *si, bool counting)
-+ internal_function;
-
-
- /* Search loaded objects' symbol tables for a definition of the symbol
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/libc-start.c glibc-2.3.2-200304020432/sysdeps/generic/libc-start.c
---- glibc-2.3.2/sysdeps/generic/libc-start.c Fri Feb 14 23:59:15 2003
-+++ glibc-2.3.2-200304020432/sysdeps/generic/libc-start.c Tue Mar 18 02:54:24 2003
-@@ -44,21 +44,50 @@
- #endif
-
-
--extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
-+#ifdef LIBC_START_MAIN
-+# define STATIC static inline
-+#else
-+# define STATIC
-+# define LIBC_START_MAIN BP_SYM (__libc_start_main)
-+#endif
-+
-+STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
-+#ifdef MAIN_AUXVEC_ARG
-+ , void *
-+#endif
-+
-+ ),
- int argc,
- char *__unbounded *__unbounded ubp_av,
-+#ifdef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec,
-+#endif
-+#ifdef INIT_MAIN_ARGS
-+ __typeof (main) init,
-+#else
- void (*init) (void),
-+#endif
- void (*fini) (void),
- void (*rtld_fini) (void),
- void *__unbounded stack_end)
- __attribute__ ((noreturn));
-
--int
--/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
-- BPs in the arglist of startup_info.main and startup_info.init. */
--BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
-+STATIC int
-+LIBC_START_MAIN (int (*main) (int, char **, char **
-+#ifdef MAIN_AUXVEC_ARG
-+ , void *
-+#endif
-+ ),
- int argc, char *__unbounded *__unbounded ubp_av,
-- void (*init) (void), void (*fini) (void),
-+#ifdef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec,
-+#endif
-+#ifdef INIT_MAIN_ARGS
-+ __typeof (main) init,
-+#else
-+ void (*init) (void),
-+#endif
-+ void (*fini) (void),
- void (*rtld_fini) (void), void *__unbounded stack_end)
- {
- char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
-@@ -80,13 +109,18 @@
-
- #ifndef SHARED
- # ifdef HAVE_AUX_VECTOR
-- void *__unbounded *__unbounded auxvec;
- /* First process the auxiliary vector since we need to find the
- program header to locate an eventually present PT_TLS entry. */
-- for (auxvec = (void *__unbounded *__unbounded) ubp_ev;
-- *auxvec != NULL; ++auxvec);
-- ++auxvec;
-- _dl_aux_init ((ElfW(auxv_t) *) auxvec);
-+# ifndef LIBC_START_MAIN_AUXVEC_ARG
-+ ElfW(auxv_t) *__unbounded auxvec;
-+ {
-+ char *__unbounded *__unbounded evp = ubp_ev;
-+ while (*evp++ != NULL)
-+ ;
-+ auxvec = (ElfW(auxv_t) *__unbounded) evp;
-+ }
-+# endif
-+ _dl_aux_init (auxvec);
- # endif
- # ifdef DL_SYSDEP_OSCHECK
- if (!__libc_multiple_libcs)
-@@ -136,7 +170,14 @@
- _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
- #endif
- if (init)
-- (*init) ();
-+ (*init) (
-+#ifdef INIT_MAIN_ARGS
-+ argc, argv, __environ
-+# ifdef MAIN_AUXVEC_ARG
-+ , auxvec
-+# endif
-+#endif
-+ );
-
- #ifdef SHARED
- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-@@ -149,7 +190,12 @@
- {
- /* XXX This is where the try/finally handling must be used. */
-
-- result = main (argc, argv, __environ);
-+ result = main (argc, argv, __environ
-+#ifdef MAIN_AUXVEC_ARG
-+ , auxvec
-+#endif
-+
-+ );
- }
- #ifdef HAVE_CANCELBUF
- else
-@@ -158,12 +204,11 @@
- /* One less thread. Decrement the counter. If it is zero we
- terminate the entire process. */
- result = 0;
-- int *const ptr;
- # ifdef SHARED
-- ptr = __libc_pthread_functions.ptr_nthreads;
-+ int *const ptr = __libc_pthread_functions.ptr_nthreads;
- # else
- extern int __nptl_nthreads __attribute ((weak));
-- ptr = &__nptl_nthreads;
-+ int *const ptr = &__nptl_nthreads;
- # endif
-
- if (! atomic_decrement_and_test (ptr))
-diff -u -udbrN glibc-2.3.2/sysdeps/generic/remap_file_pages.c glibc-2.3.2-200304020432/sysdeps/generic/remap_file_pages.c
---- glibc-2.3.2/sysdeps/generic/remap_file_pages.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/generic/remap_file_pages.c Mon Mar 3 10:44:55 2003
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 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 <sys/mman.h>
-+#include <errno.h>
-+
-+/* Remap arbitrary pages of a shared backing store within an existing
-+ VMA. */
-+
-+int
-+__remap_file_pages (void *start, size_t size, int prot, size_t pgoff,
-+ int flags)
-+{
-+ __set_errno (ENOSYS);
-+ return -1;
-+}
-+
-+stub_warning (remap_file_pages)
-+#include <stub-tag.h>
-+weak_alias (__remap_file_pages, remap_file_pages)
-diff -u -udbrN glibc-2.3.2/sysdeps/gnu/siglist.c glibc-2.3.2-200304020432/sysdeps/gnu/siglist.c
---- glibc-2.3.2/sysdeps/gnu/siglist.c Sat Dec 21 19:38:36 2002
-+++ glibc-2.3.2-200304020432/sysdeps/gnu/siglist.c Tue Apr 1 07:51:02 2003
-@@ -1,5 +1,5 @@
- /* Define list of all signal numbers and their names.
-- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-2000, 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
-@@ -31,11 +31,6 @@
- };
- strong_alias (__new_sys_siglist, _sys_siglist_internal)
-
--#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
--strong_alias (_sys_siglist_internal, __old_sys_siglist)
--declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
--#endif
--
- const char *const __new_sys_sigabbrev[NSIG] =
- {
- #define init_sig(sig, abbrev, desc) [sig] = abbrev,
-@@ -45,6 +40,9 @@
- strong_alias (__new_sys_sigabbrev, _sys_sigabbrev_internal)
-
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
-+strong_alias (_sys_siglist_internal, __old_sys_siglist)
-+declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
-+
- strong_alias (_sys_sigabbrev_internal, __old_sys_sigabbrev)
- declare_symbol (__old_sys_sigabbrev, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
-
-@@ -54,7 +52,26 @@
- compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
- #endif
-
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3) && defined OLD2_SIGLIST_SIZE
-+strong_alias (_sys_siglist_internal, __old2_sys_siglist)
-+declare_symbol (__old2_sys_siglist, object, OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
-+
-+strong_alias (_sys_sigabbrev_internal, __old2_sys_sigabbrev)
-+declare_symbol (__old2_sys_sigabbrev, object,
-+ OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
-+
-+strong_alias (__old2_sys_siglist, _old2_sys_siglist)
-+compat_symbol (libc, __old2_sys_siglist, _sys_siglist, GLIBC_2_1);
-+compat_symbol (libc, _old2_sys_siglist, sys_siglist, GLIBC_2_1);
-+compat_symbol (libc, __old2_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
-+
-+strong_alias (__new_sys_siglist, _new_sys_siglist)
-+versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_3_3);
-+versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_3_3);
-+versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_3_3);
-+#else
- strong_alias (__new_sys_siglist, _new_sys_siglist)
- versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_1);
- versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_1);
- versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/hppa/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps Tue Nov 19 07:40:57 2002
-+++ glibc-2.3.2-200304020432/sysdeps/hppa/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/i386/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps Thu Feb 27 23:27:36 2003
-+++ glibc-2.3.2-200304020432/sysdeps/i386/fpu/libm-test-ulps Sat Mar 22 07:14:23 2003
-@@ -121,7 +121,7 @@
- ldouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -136,7 +136,7 @@
- ldouble: 1
-
- # ccosh
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -181,7 +181,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- idouble: 1
- ildouble: 1
-@@ -343,10 +343,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- float: 1
- idouble: 1
-@@ -363,10 +363,12 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
-+double: 1
-+idouble: 1
- ildouble: 439
- ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
- ildouble: 2
-@@ -381,10 +383,10 @@
- ldouble: 3
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 5
- ldouble: 5
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 1
- ifloat: 1
- ildouble: 25
-@@ -624,12 +626,12 @@
- idouble: 1
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- float: 1
- ifloat: 1
- double: 1
- idouble: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -693,7 +695,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-@@ -1057,11 +1059,15 @@
- ldouble: 2
-
- Function: Real part of "ctan":
-+double: 1
-+idouble: 1
- ildouble: 439
- ldouble: 439
-
- Function: Imaginary part of "ctan":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
- ildouble: 3
- ldouble: 3
-diff -u -udbrN glibc-2.3.2/sysdeps/i386/i486/atomicity.h glibc-2.3.2-200304020432/sysdeps/i386/i486/atomicity.h
---- glibc-2.3.2/sysdeps/i386/i486/atomicity.h Sat Jul 7 21:21:23 2001
-+++ glibc-2.3.2-200304020432/sysdeps/i386/i486/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,57 +0,0 @@
--/* Low-level functions for atomic operations. ix86 version, x >= 4.
-- Copyright (C) 1997, 2000, 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- register uint32_t result;
-- __asm__ __volatile__ ("lock; xaddl %0,%1"
-- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__ ("lock; addl %1,%0"
-- : "=m" (*mem) : "ir" (val), "0" (*mem));
--}
--
--static inline char
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"
-- : "=q" (ret), "=m" (*p), "=a" (readval)
-- : "r" (newval), "1" (*p), "a" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/i386/i486/bits/atomic.h
---- glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/i386/i486/bits/atomic.h Sat Mar 22 01:05:02 2003
-@@ -0,0 +1,359 @@
-+/* Copyright (C) 2002, 2003 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.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#ifndef LOCK
-+# ifdef UP
-+# define LOCK /* nothing */
-+# else
-+# define LOCK "lock;"
-+# endif
-+#endif
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgb %b2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "q" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgw %w2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgl %2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+/* XXX We do not really need 64-bit compare-and-exchange. At least
-+ not in the moment. Using it would mean causing portability
-+ problems since not many other 32-bit architectures have support for
-+ such an operation. So don't define any code for now. If it is
-+ really going to be used the code below can be used on Intel Pentium
-+ and later, but NOT on i486. */
-+#if 1
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret = *(mem); abort (); ret = (newval); ret = (oldval); })
-+#else
-+# ifdef __PIC__
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile ("xchgl %2, %%ebx\n\t" \
-+ LOCK "cmpxchg8b %1\n\t" \
-+ "xchgl %2, %%ebx" \
-+ : "=A" (ret), "=m" (*mem) \
-+ : "DS" (((unsigned long long int) (newval)) \
-+ & 0xffffffff), \
-+ "c" (((unsigned long long int) (newval)) >> 32), \
-+ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
-+ & 0xffffffff), \
-+ "d" (((unsigned long long int) (oldval)) >> 32)); \
-+ ret; })
-+# else
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchg8b %1" \
-+ : "=A" (ret), "=m" (*mem) \
-+ : "b" (((unsigned long long int) (newval)) \
-+ & 0xffffffff), \
-+ "c" (((unsigned long long int) (newval)) >> 32), \
-+ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
-+ & 0xffffffff), \
-+ "d" (((unsigned long long int) (oldval)) >> 32)); \
-+ ret; })
-+# endif
-+#endif
-+
-+
-+/* Note that we need no lock prefix. */
-+#define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("xchgb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("xchgw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("xchgl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else \
-+ { \
-+ result = 0; \
-+ abort (); \
-+ } \
-+ result; })
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) result; \
-+ __typeof (value) addval = (value); \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "xaddb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "xaddw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "xaddl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (addval), "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ result = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq (memp, \
-+ result + addval, \
-+ result) == result); \
-+ } \
-+ result; })
-+
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_increment (mem); \
-+ else if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_decrement (mem); \
-+ else if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (value) addval = (value); \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + addval, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "iq" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_increment(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "incb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "incw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "incl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + 1, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "incb %0; sete %b1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "incw %0; sete %w1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "incl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_decrement(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "decb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "decw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "decl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ { \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval - 1, oldval) == oldval); \
-+ } \
-+ })
-+
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "decb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "decw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "decl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "orb %b2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "orw %w2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "orl %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1 << (bit))); \
-+ else \
-+ abort (); \
-+ })
-+
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "btsb %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "btsw %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "btsl %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else \
-+ abort (); \
-+ __result; })
-diff -u -udbrN glibc-2.3.2/sysdeps/i386/sysdep.h glibc-2.3.2-200304020432/sysdeps/i386/sysdep.h
---- glibc-2.3.2/sysdeps/i386/sysdep.h Thu Jan 9 20:43:34 2003
-+++ glibc-2.3.2-200304020432/sysdeps/i386/sysdep.h Mon Mar 10 10:10:46 2003
-@@ -64,6 +64,14 @@
- ASM_SIZE_DIRECTIVE(name) \
- STABS_FUN_END(name)
-
-+#ifdef HAVE_CPP_ASM_DEBUGINFO
-+/* Disable that goop, because we just pass -g through to the assembler
-+ and it generates proper line number information directly. */
-+# define STABS_CURRENT_FILE1(name)
-+# define STABS_CURRENT_FILE(name)
-+# define STABS_FUN(name)
-+# define STABS_FUN_END(name)
-+#else
- /* Remove the following two lines once the gdb bug is fixed. */
- #define STABS_CURRENT_FILE(name) \
- STABS_CURRENT_FILE1 (#name)
-@@ -77,6 +85,7 @@
- .stabs #namestr,36,0,0,name;
- #define STABS_FUN_END(name) \
- 1: .stabs "",36,0,0,1b-name;
-+#endif
-
- /* If compiled for profiling, call `mcount' at the start of each function. */
- #ifdef PROF
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/atomicity.h glibc-2.3.2-200304020432/sysdeps/ia64/atomicity.h
---- glibc-2.3.2/sysdeps/ia64/atomicity.h Sat Jul 7 21:21:23 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,48 +0,0 @@
--/* Low-level functions for atomic operations. IA-64 version.
-- Copyright (C) 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--#include <ia64intrin.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- return __sync_fetch_and_add (mem, val);
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __sync_fetch_and_add (mem, val);
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- return __sync_bool_compare_and_swap (p, oldval, newval);
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/ia64/bits/atomic.h
---- glibc-2.3.2/sysdeps/ia64/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/bits/atomic.h Wed Mar 26 05:01:47 2003
-@@ -0,0 +1,129 @@
-+/* Copyright (C) 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 <stdint.h>
-+#include <ia64intrin.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+ (!__sync_bool_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
-+ (int) (long) (newval)))
-+
-+#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+ (!__sync_bool_compare_and_swap_di ((long *) (mem), (long) (oldval), \
-+ (long) (newval)))
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ __sync_val_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
-+ (int) (long) (newval))
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ __sync_val_compare_and_swap_di ((long *) (mem), (long) (oldval), \
-+ (long) (newval))
-+
-+/* Atomically store newval and return the old value. */
-+#define atomic_exchange(mem, value) \
-+ ({ __typeof (*mem) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __sync_lock_test_and_set_si ((int *) (mem), (int) (value)); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __sync_lock_test_and_set_di ((long *) (mem), \
-+ (long) (value)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __sync_fetch_and_add_si ((int *) (mem), (int) (value)); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __sync_fetch_and_add_di ((long *) (mem), (long) (value)); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*mem) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ \
-+ __val = (*__memp); \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ if (__builtin_expect (__val <= 0, 0)) \
-+ break; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, __oldval - 1, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ __oldval; })
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ __typeof (*mem) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*mem) __mask = ((__typeof (*mem)) 1 << (bit)); \
-+ \
-+ __val = (*__memp); \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, \
-+ __oldval | __mask, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ __oldval & __mask; })
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/dl-fptr.c glibc-2.3.2-200304020432/sysdeps/ia64/dl-fptr.c
---- glibc-2.3.2/sysdeps/ia64/dl-fptr.c Wed Nov 13 22:41:52 2002
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/dl-fptr.c Mon Mar 3 10:45:09 2003
-@@ -1,5 +1,5 @@
- /* Manage function descriptors. IA-64 version.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999,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
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h glibc-2.3.2-200304020432/sysdeps/ia64/dl-lookupcfg.h
---- glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h Wed Jan 30 01:22:50 2002
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/dl-lookupcfg.h Thu Mar 27 02:15:24 2003
-@@ -1,5 +1,5 @@
- /* Configuration of lookup functions.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 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
-@@ -23,11 +23,13 @@
- #define ELF_FUNCTION_PTR_IS_SPECIAL
- #define DL_UNMAP_IS_SPECIAL
-
-+/* We do not support copy relocations for IA-64. */
-+#define DL_NO_COPY_RELOCS
-+
- /* Forward declaration. */
- struct link_map;
-
--extern void *_dl_symbol_address (const struct link_map *map,
-- const Elf64_Sym *ref);
-+extern void *_dl_symbol_address (struct link_map *map, const Elf64_Sym *ref);
-
- #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)
-
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/dl-machine.h glibc-2.3.2-200304020432/sysdeps/ia64/dl-machine.h
---- glibc-2.3.2/sysdeps/ia64/dl-machine.h Sun Jan 12 09:37:35 2003
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/dl-machine.h Sat Mar 29 20:18:10 2003
-@@ -301,8 +301,10 @@
- "_start:\n" \
- "0: { .mii\n" \
- " .prologue\n" \
--" .save ar.pfs, r32\n" \
- " .save rp, r0\n" \
-+" .body\n" \
-+" .prologue\n" \
-+" .save ar.pfs, r32\n" \
- " alloc loc0 = ar.pfs, 0, 3, 4, 0\n" \
- " .body\n" \
- " mov r2 = ip\n" \
-@@ -332,9 +334,11 @@
- " .proc _dl_start_user#\n" \
- "_dl_start_user:\n" \
- " .prologue\n" \
--" .save ar.pfs, r32\n" \
- " .save rp, r0\n" \
- " .body\n" \
-+" .prologue\n" \
-+" .save ar.pfs, r32\n" \
-+" .body\n" \
- " { .mii\n" \
- " /* Save the pointer to the user entry point fptr in loc2. */\n" \
- " mov loc2 = ret0\n" \
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/dl-symaddr.c glibc-2.3.2-200304020432/sysdeps/ia64/dl-symaddr.c
---- glibc-2.3.2/sysdeps/ia64/dl-symaddr.c Thu Jul 26 01:53:58 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/dl-symaddr.c Mon Mar 3 10:45:09 2003
-@@ -1,5 +1,5 @@
- /* Get the symbol address. IA-64 version.
-- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2000, 2001, 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
-@@ -21,7 +21,7 @@
- #include <dl-machine.h>
-
- void *
--_dl_symbol_address (const struct link_map *map, const Elf64_Sym *ref)
-+_dl_symbol_address (struct link_map *map, const Elf64_Sym *ref)
- {
- Elf64_Addr value = (map ? map->l_addr : 0) + ref->st_value;
-
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/elf/start.S glibc-2.3.2-200304020432/sysdeps/ia64/elf/start.S
---- glibc-2.3.2/sysdeps/ia64/elf/start.S Tue Dec 10 04:41:52 2002
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/elf/start.S Sat Mar 29 20:18:27 2003
-@@ -40,6 +40,9 @@
- .type _start,@function
- _start:
- .prologue
-+ .save rp, r0
-+ .body
-+ .prologue
- { .mlx
- alloc r2 = ar.pfs,0,0,7,0
- movl r3 = FPSR_DEFAULT
-@@ -76,8 +79,7 @@
- { .mmi
- ld8 out3 = [out3] /* pointer to `init' function descriptor */
- ld8 out4 = [out4] /* pointer to `fini' function descriptor */
-- .save rp, r4
-- mov r4 = r0 /* terminate unwind chain with a NULL return-pointer */
-+ nop 0
- }
- .body
- { .mib
-diff -u -udbrN glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/ia64/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps Fri Jun 21 00:06:37 2002
-+++ glibc-2.3.2-200304020432/sysdeps/ia64/fpu/libm-test-ulps Fri Mar 28 00:26:48 2003
-@@ -1,10 +1,5 @@
- # Begin of automatic generation
-
--# acos
--Test "acos (0.0625) == 1.50825556499840522843072005474337068":
--ildouble: 622
--ldouble: 622
--
- # cacos
- Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
- float: 1
-@@ -84,7 +79,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -99,7 +94,7 @@
- ldouble: 1
-
- # ccosh
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -122,8 +117,6 @@
- Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- float: 1
- ifloat: 1
--ildouble: 202
--ldouble: 202
- Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- ildouble: 1
- ldouble: 1
-@@ -146,7 +139,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- idouble: 1
- ildouble: 1
-@@ -223,6 +216,9 @@
- ifloat: 1
-
- # cos
-+Test "cos (0.80190127184058835) == 0.69534156199418473":
-+double: 1
-+idouble: 1
- Test "cos (M_PI_6l * 2.0) == 0.5":
- double: 1
- float: 1
-@@ -247,8 +243,6 @@
- Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
- float: 1
- ifloat: 1
--ildouble: 587
--ldouble: 587
- Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
- float: 1
- ifloat: 1
-@@ -259,8 +253,8 @@
- float: 4
- idouble: 1
- ifloat: 4
--ildouble: 768
--ldouble: 768
-+ildouble: 1
-+ldouble: 1
- Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
- ildouble: 1
- ldouble: 1
-@@ -272,8 +266,8 @@
- float: 3
- idouble: 2
- ifloat: 3
--ildouble: 370
--ldouble: 370
-+ildouble: 3
-+ldouble: 3
- Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
- ildouble: 1
- ldouble: 1
-@@ -308,10 +302,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- float: 1
- idouble: 1
-@@ -336,14 +330,16 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
--ildouble: 436
--ldouble: 436
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+ildouble: 2
-+ldouble: 2
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
- Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
- ildouble: 1
- ldouble: 1
-@@ -354,10 +350,10 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 1
- ifloat: 1
- ildouble: 24
-@@ -584,12 +580,12 @@
- Test "lgamma (-0.5) == log(2*sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -610,6 +606,9 @@
- ldouble: 1
-
- # sincos
-+Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
-+double: 1
-+idouble: 1
- Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
- double: 1
- float: 1
-@@ -646,7 +645,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-@@ -794,10 +793,6 @@
- idouble: 1
-
- # Maximal error of functions:
--Function: "acos":
--ildouble: 622
--ldouble: 622
--
- Function: Imaginary part of "cacos":
- float: 1
- ifloat: 1
-@@ -889,8 +884,6 @@
- Function: Real part of "cexp":
- float: 1
- ifloat: 1
--ildouble: 202
--ldouble: 202
-
- Function: Imaginary part of "cexp":
- float: 1
-@@ -933,8 +926,8 @@
- float: 5
- idouble: 2
- ifloat: 5
--ildouble: 768
--ldouble: 768
-+ildouble: 3
-+ldouble: 3
-
- Function: Imaginary part of "cpow":
- double: 2
-@@ -977,14 +970,16 @@
- Function: Real part of "ctan":
- double: 1
- idouble: 1
--ildouble: 436
--ldouble: 436
-+ildouble: 2
-+ldouble: 2
-
- Function: Imaginary part of "ctan":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "ctanh":
- double: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c glibc-2.3.2-200304020432/sysdeps/ieee754/dbl-64/dbl2mpn.c
---- glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/dbl-64/dbl2mpn.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,1994,1995,1996,1997,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
-@@ -45,7 +45,7 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 1
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-@@ -101,7 +101,8 @@
- }
- else
- /* Add the implicit leading one bit for a normalized number. */
-- res_ptr[N - 1] |= 1L << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
-+ res_ptr[N - 1] |= (mp_limb_t) 1 << (DBL_MANT_DIG - 1
-+ - ((N - 1) * BITS_PER_MP_LIMB));
-
- return N;
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c glibc-2.3.2-200304020432/sysdeps/ieee754/dbl-64/mpn2dbl.c
---- glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/dbl-64/mpn2dbl.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,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
-@@ -34,10 +34,12 @@
- u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
- #if BITS_PER_MP_LIMB == 32
- u.ieee.mantissa1 = frac_ptr[0];
-- u.ieee.mantissa0 = frac_ptr[1] & ((1 << (DBL_MANT_DIG - 32)) - 1);
-+ u.ieee.mantissa0 = frac_ptr[1] & (((mp_limb_t) 1
-+ << (DBL_MANT_DIG - 32)) - 1);
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
-- u.ieee.mantissa0 = (frac_ptr[0] >> 32) & ((1 << (DBL_MANT_DIG - 32)) - 1);
-+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
-+ u.ieee.mantissa0 = (frac_ptr[0] >> 32) & (((mp_limb_t) 1
-+ << (DBL_MANT_DIG - 32)) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c glibc-2.3.2-200304020432/sysdeps/ieee754/flt-32/mpn2flt.c
---- glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/flt-32/mpn2flt.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1997,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
-@@ -33,7 +33,7 @@
- u.ieee.negative = sign;
- u.ieee.exponent = expt + IEEE754_FLOAT_BIAS;
- #if BITS_PER_MP_LIMB > FLT_MANT_DIG
-- u.ieee.mantissa = frac_ptr[0] & ((1 << FLT_MANT_DIG) - 1);
-+ u.ieee.mantissa = frac_ptr[0] & (((mp_limb_t) 1 << FLT_MANT_DIG) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-128/ldbl2mpn.c
---- glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c Thu Jul 11 05:09:36 2002
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-128/ldbl2mpn.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -49,8 +50,8 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
-- res_ptr[1] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
-+ res_ptr[1] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 2
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-@@ -133,7 +134,8 @@
- }
- else
- /* Add the implicit leading one bit for a normalized number. */
-- res_ptr[N - 1] |= 1L << (LDBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
-+ res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
-+ - ((N - 1) * BITS_PER_MP_LIMB));
-
- return N;
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-128/mpn2ldbl.c
---- glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-128/mpn2ldbl.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -37,12 +38,14 @@
- u.ieee.mantissa3 = frac_ptr[0];
- u.ieee.mantissa2 = frac_ptr[1];
- u.ieee.mantissa1 = frac_ptr[2];
-- u.ieee.mantissa0 = frac_ptr[3] & ((1 << (LDBL_MANT_DIG - 96)) - 1);
-+ u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
-+ << (LDBL_MANT_DIG - 96)) - 1);
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa3 = frac_ptr[0] & ((1L << 32) - 1);
-+ u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
- u.ieee.mantissa2 = frac_ptr[0] >> 32;
-- u.ieee.mantissa1 = frac_ptr[1] & ((1L << 32) - 1);
-- u.ieee.mantissa0 = (frac_ptr[1] >> 32) & ((1 << (LDBL_MANT_DIG - 96)) - 1);
-+ u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
-+ u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
-+ << (LDBL_MANT_DIG - 96)) - 1);
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-96/ldbl2mpn.c
---- glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-96/ldbl2mpn.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,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
-@@ -47,7 +47,7 @@
- #elif BITS_PER_MP_LIMB == 64
- /* Hopefully the compiler will combine the two bitfield extracts
- and this composition into just the original quadword extract. */
-- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
-+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
- #define N 1
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-diff -u -udbrN glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-96/mpn2ldbl.c
---- glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c Sat Jul 7 21:21:24 2001
-+++ glibc-2.3.2-200304020432/sysdeps/ieee754/ldbl-96/mpn2ldbl.c Fri Mar 14 04:59:34 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1995,1996,1997,1998,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
-@@ -37,7 +37,7 @@
- u.ieee.mantissa1 = frac_ptr[0];
- u.ieee.mantissa0 = frac_ptr[1];
- #elif BITS_PER_MP_LIMB == 64
-- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
-+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
- u.ieee.mantissa0 = frac_ptr[0] >> 32;
- #else
- #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
-diff -u -udbrN glibc-2.3.2/sysdeps/m68k/dl-machine.h glibc-2.3.2-200304020432/sysdeps/m68k/dl-machine.h
---- glibc-2.3.2/sysdeps/m68k/dl-machine.h Sun Jan 26 22:07:32 2003
-+++ glibc-2.3.2-200304020432/sysdeps/m68k/dl-machine.h Sat Mar 1 16:33:11 2003
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation inline functions. m68k version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-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
-@@ -158,7 +158,7 @@
- | Save the user entry point address in %a4.\n\
- move.l %d0, %a4\n\
- | Remember the highest stack address.\n\
-- lea __libc_stack_end(%pc), %a0\n\
-+ move.l __libc_stack_end@GOTPC(%pc), %a0\n\
- move.l %sp, (%a0)\n\
- | See if we were run as a command with the executable file\n\
- | name as an extra leading argument.\n\
-diff -u -udbrN glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/m68k/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps Sun Jan 12 08:54:07 2003
-+++ glibc-2.3.2-200304020432/sysdeps/m68k/fpu/libm-test-ulps Sat Mar 22 22:17:47 2003
-@@ -119,10 +119,10 @@
- ldouble: 1
-
- # ccos
--Test "Real part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -139,10 +139,10 @@
- ldouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -189,10 +189,10 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Real part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- ildouble: 1
- ldouble: 1
- Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
-@@ -336,10 +336,10 @@
- ldouble: 1
-
- # csin
--Test "Real part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
-+Test "Real part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
-+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
- float: 1
- ifloat: 1
- Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-@@ -352,10 +352,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- float: 1
- ifloat: 1
- ildouble: 2
-@@ -370,10 +370,10 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- ildouble: 439
- ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- ildouble: 1
- ldouble: 1
- Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -384,10 +384,10 @@
- ldouble: 2
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 2
- ldouble: 2
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 25
- ldouble: 25
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-@@ -599,12 +599,12 @@
- Test "lgamma (0.5) == log(sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- float: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -698,7 +698,7 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h glibc-2.3.2-200304020432/sysdeps/m68k/m68020/atomicity.h
---- glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h Wed Aug 15 18:14:06 2001
-+++ glibc-2.3.2-200304020432/sysdeps/m68k/m68020/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,64 +0,0 @@
--/* Low-level functions for atomic operations. m680x0 version, x >= 2.
-- Copyright (C) 1997 Free Software Foundation, Inc.
-- Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- register int result = *mem;
-- register int temp;
-- __asm__ __volatile__ ("1: move%.l %0,%1;"
-- " add%.l %2,%1;"
-- " cas%.l %0,%1,%3;"
-- " jbne 1b"
-- : "=d" (result), "=&d" (temp)
-- : "d" (val), "m" (*mem), "0" (result) : "memory");
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- /* XXX Use cas here as well? */
-- __asm__ __volatile__ ("add%.l %0,%1"
-- : : "id" (val), "m" (*mem) : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("cas%.l %2,%3,%1; seq %0"
-- : "=dm" (ret), "=m" (*p), "=d" (readval)
-- : "d" (newval), "m" (*p), "2" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/m68k/m68020/bits/atomic.h
---- glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/m68k/m68020/bits/atomic.h Mon Mar 31 18:01:09 2003
-@@ -0,0 +1,261 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Andreas Schwab <schwab@suse.de>, 2003.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.b %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.w %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __asm __volatile ("cas%.l %0,%2,%1" \
-+ : "=d" (__ret), "=m" (*(mem)) \
-+ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
-+ __ret; })
-+
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*(mem)) __ret; \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("cas2%.l %0:%R0,%1:%R1,(%2):(%3)" \
-+ : "=d" (__ret) \
-+ : "d" (newval), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (oldval) \
-+ : "memory"); \
-+ __ret; })
-+
-+#define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*(mem)) __result = *(mem); \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("1: cas%.b %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("1: cas%.w %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("1: cas%.l %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)) \
-+ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("1: cas2%.l %0:%R0,%1:%R1,(%2):(%3);" \
-+ " jbne 1b" \
-+ : "=d" (__result) \
-+ : "d" (newvalue), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__result) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*(mem)) __result = *(mem); \
-+ __typeof (*(mem)) __temp; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("1: move%.b %0,%2;" \
-+ " add%.b %3,%2;" \
-+ " cas%.b %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("1: move%.w %0,%2;" \
-+ " add%.w %3,%2;" \
-+ " cas%.w %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("1: move%.l %0,%2;" \
-+ " add%.l %3,%2;" \
-+ " cas%.l %0,%2,%1;" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=m" (*(mem)), \
-+ "=&d" (__temp) \
-+ : "d" (value), "1" (*(mem)), "0" (__result)); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __asm __volatile ("1: move%.l %0,%1;" \
-+ " move%.l %R0,%R1;" \
-+ " add%.l %2,%1;" \
-+ " addx%.l %R2,%R1;" \
-+ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=d" (__result), "=&d" (__temp) \
-+ : "d" (value), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__result) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("add%.b %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("add%.w %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("add%.l %1,%0" \
-+ : "=m" (*(mem)) \
-+ : "id" (value), "0" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %0,%1;" \
-+ " move%.l %R0,%R1;" \
-+ " add%.l %2,%1;" \
-+ " addx%.l %R2,%R1;" \
-+ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=d" (__oldval), "=&d" (__temp) \
-+ : "d" (value), "r" (__memp), \
-+ "r" ((char *) __memp + 4), "0" (__oldval) \
-+ : "memory"); \
-+ } \
-+ })
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ char __result; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("addq%.b %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("addq%.w %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("addq%.l %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %1,%2;" \
-+ " move%.l %R1,%R2;" \
-+ " addq%.l %#1,%2;" \
-+ " addx%.l %5,%R2;" \
-+ " seq %0;" \
-+ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=&dm" (__result), "=d" (__oldval), \
-+ "=&d" (__temp) \
-+ : "r" (__memp), "r" ((char *) __memp + 4), \
-+ "d" (0), "1" (__oldval) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ char __result; \
-+ if (sizeof (*(mem)) == 1) \
-+ __asm __volatile ("subq%.b %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 2) \
-+ __asm __volatile ("subq%.w %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else if (sizeof (*(mem)) == 4) \
-+ __asm __volatile ("subq%.l %#1,%1; seq %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "1" (*(mem))); \
-+ else \
-+ { \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __oldval = *__memp; \
-+ __typeof (*(mem)) __temp; \
-+ __asm __volatile ("1: move%.l %1,%2;" \
-+ " move%.l %R1,%R2;" \
-+ " subq%.l %#1,%2;" \
-+ " subx%.l %5,%R2;" \
-+ " seq %0;" \
-+ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
-+ " jbne 1b" \
-+ : "=&dm" (__result), "=d" (__oldval), \
-+ "=&d" (__temp) \
-+ : "r" (__memp), "r" ((char *) __memp + 4), \
-+ "d" (0), "1" (__oldval) \
-+ : "memory"); \
-+ } \
-+ __result; })
-+
-+#define atomic_bit_set(mem, bit) \
-+ __asm __volatile ("bfset %0{%1,#1}" \
-+ : "=m" (*(mem)) \
-+ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), "m" (*(mem)))
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ char __result; \
-+ __asm __volatile ("bfset %1{%2,#1}; sne %0" \
-+ : "=dm" (__result), "=m" (*(mem)) \
-+ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), \
-+ "m" (*(mem))); \
-+ __result; })
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/Implies glibc-2.3.2-200304020432/sysdeps/mips/Implies
---- glibc-2.3.2/sysdeps/mips/Implies Sat Jan 29 08:28:21 2000
-+++ glibc-2.3.2-200304020432/sysdeps/mips/Implies Sat Mar 29 09:15:28 2003
-@@ -1,4 +1,3 @@
--wordsize-32
- # MIPS uses IEEE 754 floating point.
- ieee754/flt-32
- ieee754/dbl-64
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/add_n.S glibc-2.3.2-200304020432/sysdeps/mips/add_n.S
---- glibc-2.3.2/sysdeps/mips/add_n.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/add_n.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS2 __mpn_add_n -- Add two limb vectors of the same length > 0 and
- store sum in a third limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -43,12 +43,12 @@
-
- addiu $7,$7,-1
- and $9,$7,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
- move $2,$0
-
- subu $7,$7,$9
-
--.Loop0: addiu $9,$9,-1
-+L(Loop0): addiu $9,$9,-1
- lw $12,4($5)
- addu $11,$11,$2
- lw $13,4($6)
-@@ -62,13 +62,13 @@
- addiu $6,$6,4
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- addiu $4,$4,4
-
--.L0: beq $7,$0,.Lend
-+L(L0): beq $7,$0,L(end)
- nop
-
--.Loop: addiu $7,$7,-4
-+L(Loop): addiu $7,$7,-4
-
- lw $12,4($5)
- addu $11,$11,$2
-@@ -109,10 +109,10 @@
- addiu $5,$5,16
- addiu $6,$6,16
-
-- bne $7,$0,.Loop
-+ bne $7,$0,L(Loop)
- addiu $4,$4,16
-
--.Lend: addu $11,$11,$2
-+L(end): addu $11,$11,$2
- sltu $8,$11,$2
- addu $11,$10,$11
- sltu $2,$11,$10
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/addmul_1.S glibc-2.3.2-200304020432/sysdeps/mips/addmul_1.S
---- glibc-2.3.2/sysdeps/mips/addmul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/addmul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_addmul_1 -- Multiply a limb vector with a single limb and
- add the product to a second limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: lw $10,0($4)
-+L(Loop): lw $10,0($4)
- mflo $3
- mfhi $9
- addiu $5,$5,4
-@@ -67,11 +67,11 @@
- addu $2,$2,$10
- sw $3,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: lw $10,0($4)
-+L(LC1): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-@@ -85,7 +85,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: lw $10,0($4)
-+L(LC0): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/atomicity.h glibc-2.3.2-200304020432/sysdeps/mips/atomicity.h
---- glibc-2.3.2/sysdeps/mips/atomicity.h Tue Jul 16 02:52:17 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/atomicity.h Fri Mar 14 06:30:31 2003
-@@ -1,5 +1,5 @@
- /* Low-level functions for atomic operations. Mips version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -32,7 +32,9 @@
- ("/* Inline exchange & add */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%3\n\t"
- "addu %1,%4,%0\n\t"
- "sc %1,%2\n\t"
-@@ -56,7 +58,9 @@
- ("/* Inline atomic add */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%2\n\t"
- "addu %0,%3,%0\n\t"
- "sc %0,%1\n\t"
-@@ -78,12 +82,22 @@
- ("/* Inline compare & swap */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "lld %1,%5\n\t"
-+#else
- "ll %1,%5\n\t"
-+#endif
- "move %0,$0\n\t"
- "bne %1,%3,2f\n\t"
- "move %0,%4\n\t"
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ "scd %0,%2\n\t"
-+#else
- "sc %0,%2\n\t"
-+#endif
- ".set pop\n\t"
- "beqz %0,1b\n"
- "2:\n\t"
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/bits/endian.h glibc-2.3.2-200304020432/sysdeps/mips/bits/endian.h
---- glibc-2.3.2/sysdeps/mips/bits/endian.h Wed Nov 26 04:52:55 1997
-+++ glibc-2.3.2-200304020432/sysdeps/mips/bits/endian.h Sat Mar 29 09:15:28 2003
-@@ -5,4 +5,9 @@
- # error "Never use <bits/endian.h> directly; include <endian.h> instead."
- #endif
-
--#define __BYTE_ORDER __BIG_ENDIAN
-+#if __MIPSEB
-+# define __BYTE_ORDER __BIG_ENDIAN
-+#endif
-+#if __MIPSEL
-+# define __BYTE_ORDER __LITTLE_ENDIAN
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/bits/setjmp.h glibc-2.3.2-200304020432/sysdeps/mips/bits/setjmp.h
---- glibc-2.3.2/sysdeps/mips/bits/setjmp.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/bits/setjmp.h Thu Mar 20 23:29:44 2003
-@@ -1,5 +1,6 @@
- /* Define the machine-dependent type `jmp_buf'. MIPS version.
-- Copyright (C) 1992,93,95,97,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1992, 1993, 1995, 1997, 2000, 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
-@@ -23,26 +24,47 @@
-
- typedef struct
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- /* Program counter. */
-- void * __pc;
-+ __ptr_t __pc;
-
- /* Stack pointer. */
-- void * __sp;
-+ __ptr_t __sp;
-
- /* Callee-saved registers s0 through s7. */
- int __regs[8];
-
- /* The frame pointer. */
-- void * __fp;
-+ __ptr_t __fp;
-
- /* The global pointer. */
-- void * __gp;
-+ __ptr_t __gp;
-+#else
-+ /* Program counter. */
-+ __extension__ long long __pc;
-+
-+ /* Stack pointer. */
-+ __extension__ long long __sp;
-+
-+ /* Callee-saved registers s0 through s7. */
-+ __extension__ long long __regs[8];
-+
-+ /* The frame pointer. */
-+ __extension__ long long __fp;
-+
-+ /* The global pointer. */
-+ __extension__ long long __gp;
-+#endif
-
- /* Floating point status register. */
- int __fpc_csr;
-
- /* Callee-saved floating point registers. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ double __fpregs[8];
-+#else
- double __fpregs[6];
-+#endif
- } __jmp_buf[1];
-
- #ifdef __USE_MISC
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/bits/wordsize.h glibc-2.3.2-200304020432/sysdeps/mips/bits/wordsize.h
---- glibc-2.3.2/sysdeps/mips/bits/wordsize.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/bits/wordsize.h Mon Mar 17 16:47:12 2003
-@@ -0,0 +1,19 @@
-+/* Copyright (C) 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. */
-+
-+#define __WORDSIZE _MIPS_SZPTR
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/dl-machine.h glibc-2.3.2-200304020432/sysdeps/mips/dl-machine.h
---- glibc-2.3.2/sysdeps/mips/dl-machine.h Wed Feb 12 10:42:22 2003
-+++ glibc-2.3.2-200304020432/sysdeps/mips/dl-machine.h Sat Mar 22 13:50:46 2003
-@@ -32,6 +32,8 @@
- #error ENTRY_POINT needs to be defined for MIPS.
- #endif
-
-+#include <sys/asm.h>
-+
- /* The offset of gp from GOT might be system-dependent. It's set by
- ld. The same value is also */
- #define OFFSET_GP_GOT 0x7ff0
-@@ -72,6 +74,13 @@
- static inline int __attribute_used__
- elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
-+ /* Don't link o32 and n32 together. */
-+ if (((ehdr->e_flags & EF_MIPS_ABI2) != 0)
-+ != (_MIPS_SIM != _MIPS_SIM_ABI32))
-+ return 0;
-+#endif
-+
- switch (ehdr->e_machine)
- {
- case EM_MIPS:
-@@ -91,7 +100,7 @@
-
- /* Return the link-time address of _DYNAMIC. Conveniently, this is the
- first element of the GOT. This must be inlined in a function which
-- uses global data. */
-+ uses global data. We assume its $gp points to the primary GOT. */
- static inline ElfW(Addr)
- elf_machine_dynamic (void)
- {
-@@ -99,6 +108,9 @@
- return *elf_mips_got_from_gpreg (gp);
- }
-
-+#define STRINGXP(X) __STRING(X)
-+#define STRINGXV(X) STRINGV_(X)
-+#define STRINGV_(...) # __VA_ARGS__
-
- /* Return the run-time load address of the shared object. */
- static inline ElfW(Addr)
-@@ -106,10 +118,10 @@
- {
- ElfW(Addr) addr;
- asm (" .set noreorder\n"
-- " la %0, here\n"
-- " bltzal $0, here\n"
-+ " " STRINGXP (PTR_LA) " %0, 0f\n"
-+ " bltzal $0, 0f\n"
- " nop\n"
-- "here: subu %0, $31, %0\n"
-+ "0: " STRINGXP (PTR_SUBU) " %0, $31, %0\n"
- " .set reorder\n"
- : "=r" (addr)
- : /* No inputs */
-@@ -118,7 +130,11 @@
- }
-
- /* The MSB of got[1] of a gnu object is set to identify gnu objects. */
--#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+# define ELF_MIPS_GNU_GOT1_MASK 0x8000000000000000L
-+#else
-+# define ELF_MIPS_GNU_GOT1_MASK 0x80000000L
-+#endif
-
- /* We can't rely on elf_machine_got_rel because _dl_object_relocation_scope
- fiddles with global data. */
-@@ -242,6 +258,55 @@
- return NULL;
- }
-
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+#define ELF_DL_FRAME_SIZE 40
-+
-+#define ELF_DL_SAVE_ARG_REGS "\
-+ sw $15, 36($29)\n \
-+ sw $4, 16($29)\n \
-+ sw $5, 20($29)\n \
-+ sw $6, 24($29)\n \
-+ sw $7, 28($29)\n \
-+"
-+
-+#define ELF_DL_RESTORE_ARG_REGS "\
-+ lw $31, 36($29)\n \
-+ lw $4, 16($29)\n \
-+ lw $5, 20($29)\n \
-+ lw $6, 24($29)\n \
-+ lw $7, 28($29)\n \
-+"
-+
-+#define IFABIO32(X) X
-+
-+#else /* _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64 */
-+
-+#define ELF_DL_FRAME_SIZE 64
-+
-+#define ELF_DL_SAVE_ARG_REGS "\
-+ sd $15, 56($29)\n \
-+ sd $4, 8($29)\n \
-+ sd $5, 16($29)\n \
-+ sd $6, 24($29)\n \
-+ sd $7, 32($29)\n \
-+ sd $8, 40($29)\n \
-+ sd $9, 48($29)\n \
-+"
-+
-+#define ELF_DL_RESTORE_ARG_REGS "\
-+ ld $31, 56($29)\n \
-+ ld $4, 8($29)\n \
-+ ld $5, 16($29)\n \
-+ ld $6, 24($29)\n \
-+ ld $7, 32($29)\n \
-+ ld $8, 40($29)\n \
-+ ld $9, 48($29)\n \
-+"
-+
-+#define IFABIO32(X)
-+
-+#endif
-+
- /* Define mips specific runtime resolver. The function __dl_runtime_resolve
- is called from assembler function _dl_runtime_resolve which converts
- special argument registers t7 ($15) and t8 ($24):
-@@ -272,9 +337,8 @@
- { \
- struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
- const ElfW(Sym) *const symtab \
-- = (const void *) D_PTR (l, l_info[DT_SYMTAB]); \
-- const char *strtab \
-- = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
-+ = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
-+ const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
- ElfW(Addr) *got \
- = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
- const ElfW(Word) local_gotno \
-@@ -333,36 +397,30 @@
- .type _dl_runtime_resolve,@function\n \
- .ent _dl_runtime_resolve\n \
- _dl_runtime_resolve:\n \
-- .frame $29, 40, $31\n \
-+ .frame $29, " STRINGXP(ELF_DL_FRAME_SIZE) ", $31\n \
- .set noreorder\n \
- # Save GP.\n \
- move $3, $28\n \
-+ # Save arguments and sp value in stack.\n \
-+ " STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
- # Modify t9 ($25) so as to point .cpload instruction.\n \
-- addu $25, 8\n \
-+ " IFABIO32(STRINGXP(PTR_ADDIU) " $25, 12\n") " \
- # Compute GP.\n \
-- .cpload $25\n \
-+ " STRINGXP(SETUP_GP) "\n \
-+ " STRINGXV(SETUP_GP64 (0, _dl_runtime_resolve)) "\n \
- .set reorder\n \
- # Save slot call pc.\n \
- move $2, $31\n \
-- # Save arguments and sp value in stack.\n \
-- subu $29, 40\n \
-- .cprestore 32\n \
-- sw $15, 36($29)\n \
-- sw $4, 16($29)\n \
-- sw $5, 20($29)\n \
-- sw $6, 24($29)\n \
-- sw $7, 28($29)\n \
-+ " IFABIO32(STRINGXP(CPRESTORE(32))) "\n \
-+ " ELF_DL_SAVE_ARG_REGS " \
- move $4, $24\n \
- move $5, $15\n \
- move $6, $3\n \
- move $7, $2\n \
- jal __dl_runtime_resolve\n \
-- lw $31, 36($29)\n \
-- lw $4, 16($29)\n \
-- lw $5, 20($29)\n \
-- lw $6, 24($29)\n \
-- lw $7, 28($29)\n \
-- addu $29, 40\n \
-+ " ELF_DL_RESTORE_ARG_REGS " \
-+ " STRINGXP(RESTORE_GP64) "\n \
-+ " STRINGXP(PTR_ADDIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
- move $25, $2\n \
- jr $25\n \
- .end _dl_runtime_resolve\n \
-@@ -374,7 +432,6 @@
- #define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
-
-
--
- /* Initial entry point code for the dynamic linker.
- The C function `_dl_start' is the real entry point;
- its return value is the user program's entry point.
-@@ -392,71 +449,71 @@
-
- #define RTLD_START asm (\
- ".text\n"\
-- _RTLD_PROLOGUE(ENTRY_POINT)\
-- ".set noreorder\n\
-- bltzal $0, 0f\n\
-- nop\n\
--0: .cpload $31\n\
-- .set reorder\n\
-+ _RTLD_PROLOGUE(ENTRY_POINT) "\
-+ " STRINGXV(SETUP_GPX($25)) "\n\
-+ " STRINGXV(SETUP_GPX64($18,$25)) "\n\
- # i386 ABI book says that the first entry of GOT holds\n\
- # the address of the dynamic structure. Though MIPS ABI\n\
- # doesn't say nothing about this, I emulate this here.\n\
-- la $4, _DYNAMIC\n\
-+ " STRINGXP(PTR_LA) " $4, _DYNAMIC\n\
- # Subtract OFFSET_GP_GOT\n\
-- sw $4, -0x7ff0($28)\n\
-+ " STRINGXP(PTR_S) " $4, -0x7ff0($28)\n\
- move $4, $29\n\
-- subu $29, 16\n\
-+ " STRINGXP(PTR_SUBIU) " $29, 16\n\
- \n\
-- la $8, coff\n\
-- bltzal $8, coff\n\
--coff: subu $8, $31, $8\n\
-+ " STRINGXP(PTR_LA) " $8, .Lcoff\n\
-+ bltzal $8, .Lcoff\n\
-+.Lcoff: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\
- \n\
-- la $25, _dl_start\n\
-- addu $25, $8\n\
-+ " STRINGXP(PTR_LA) " $25, _dl_start\n\
-+ " STRINGXP(PTR_ADDU) " $25, $8\n\
- jalr $25\n\
- \n\
-- addiu $29, 16\n\
-+ " STRINGXP(PTR_ADDIU) " $29, 16\n\
- # Get the value of label '_dl_start_user' in t9 ($25).\n\
-- la $25, _dl_start_user\n\
-+ " STRINGXP(PTR_LA) " $25, _dl_start_user\n\
- .globl _dl_start_user\n\
-+ .type _dl_start_user,@function\n\
-+ .ent _dl_start_user\n\
- _dl_start_user:\n\
-- .set noreorder\n\
-- .cpload $25\n\
-- .set reorder\n\
-+ " STRINGXP(SETUP_GP) "\n\
-+ " STRINGXV(SETUP_GP64($18,_dl_start_user)) "\n\
- move $16, $28\n\
- # Save the user entry point address in a saved register.\n\
- move $17, $2\n\
- # Store the highest stack address\n\
-- sw $29, __libc_stack_end\n\
-+ " STRINGXP(PTR_S) " $29, __libc_stack_end\n\
- # See if we were run as a command with the executable file\n\
- # name as an extra leading argument.\n\
- lw $2, _dl_skip_args\n\
- beq $2, $0, 1f\n\
- # Load the original argument count.\n\
-- lw $4, 0($29)\n\
-+ " STRINGXP(PTR_L) " $4, 0($29)\n\
- # Subtract _dl_skip_args from it.\n\
- subu $4, $2\n\
- # Adjust the stack pointer to skip _dl_skip_args words.\n\
-- sll $2, 2\n\
-- addu $29, $2\n\
-+ sll $2, " STRINGXP (PTRLOG) "\n\
-+ " STRINGXP(PTR_ADDU) " $29, $2\n\
- # Save back the modified argument count.\n\
-- sw $4, 0($29)\n\
-+ " STRINGXP(PTR_S) " $4, 0($29)\n\
- 1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- lw $4, _rtld_local\n\
-- lw $5, 0($29)\n\
-- la $6, 4($29)\n\
-- sll $7, $5, 2\n\
-- addu $7, $7, $6\n\
-- addu $7, $7, 4\n\
-- subu $29, 16\n\
-+ " STRINGXP(PTR_L) " $4, _rtld_local\n\
-+ " STRINGXP(PTR_L) /* or lw??? fixme */ " $5, 0($29)\n\
-+ " STRINGXP(PTR_LA) " $6, " STRINGXP (PTRSIZE) "($29)\n\
-+ sll $7, $5, " STRINGXP (PTRLOG) "\n\
-+ " STRINGXP(PTR_ADDU) " $7, $7, $6\n\
-+ " STRINGXP(PTR_ADDU) " $7, $7, " STRINGXP (PTRSIZE) " \n\
-+ " STRINGXP(PTR_SUBIU) " $29, 32\n\
-+ " STRINGXP(SAVE_GP(16)) "\n\
- # Call the function to run the initializers.\n\
- jal _dl_init_internal\n\
-- addiu $29, 16\n\
-+ " STRINGXP(PTR_ADDIU) " $29, 32\n\
- # Pass our finalizer function to the user in $2 as per ELF ABI.\n\
-- la $2, _dl_fini\n\
-+ " STRINGXP(PTR_LA) " $2, _dl_fini\n\
- # Jump to the user entry point.\n\
- move $25, $17\n\
-- jr $25\n\t"\
-+ jr $25\n\
-+ .end _dl_start_user\n\t"\
- _RTLD_EPILOGUE(ENTRY_POINT)\
- ".previous"\
- );
-@@ -472,9 +529,15 @@
- MAP is the object containing the reloc. */
-
- static inline void
-+#ifdef RTLD_BOOTSTRAP
-+ __attribute__ ((always_inline))
-+#endif
- elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr)
-+ /* We use void* because the location to be relocated
-+ is not required to be properly aligned for a
-+ ELFW(Addr). */
-+ void /* ElfW(Addr) */ *const reloc_addr)
- {
- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-
-@@ -490,21 +553,46 @@
-
- switch (r_type)
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI64
-+ case (R_MIPS_64 << 8) | R_MIPS_REL32:
-+#else
- case R_MIPS_REL32:
-+#endif
- {
- int symidx = ELFW(R_SYM) (reloc->r_info);
-+ ElfW(Addr) reloc_value;
-+
-+ /* Support relocations on mis-aligned offsets. Should we ever
-+ implement RELA, this should be replaced with an assignment
-+ from reloc->r_addend. */
-+ __builtin_memcpy (&reloc_value, reloc_addr, sizeof (reloc_value));
-
- if (symidx)
- {
- const ElfW(Word) gotsym
- = (const ElfW(Word)) map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
-
-- if (symidx < gotsym)
-+ if ((ElfW(Word))symidx < gotsym)
- {
-+ /* This wouldn't work for a symbol imported from other
-+ libraries for which there's no GOT entry, but MIPS
-+ requires every symbol referenced in a dynamic
-+ relocation to have a GOT entry in the primary GOT,
-+ so we only get here for locally-defined symbols.
-+ For section symbols, we should *NOT* be adding
-+ sym->st_value (per the definition of the meaning of
-+ S in reloc expressions in the ELF64 MIPS ABI),
-+ since it should have already been added to
-+ reloc_value by the linker, but older versions of
-+ GNU ld didn't add it, and newer versions don't emit
-+ useless relocations to section symbols any more, so
-+ it is safe to keep on adding sym->st_value, even
-+ though it's not ABI compliant. Some day we should
-+ bite the bullet and stop doing this. */
- #ifndef RTLD_BOOTSTRAP
- if (map != &GL(dl_rtld_map))
- #endif
-- *reloc_addr += sym->st_value + map->l_addr;
-+ reloc_value += sym->st_value + map->l_addr;
- }
- else
- {
-@@ -515,7 +603,7 @@
- = (const ElfW(Word))
- map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
-
-- *reloc_addr += got[symidx + local_gotno - gotsym];
-+ reloc_value += got[symidx + local_gotno - gotsym];
- #endif
- }
- }
-@@ -523,11 +611,27 @@
- #ifndef RTLD_BOOTSTRAP
- if (map != &GL(dl_rtld_map))
- #endif
-- *reloc_addr += map->l_addr;
-+ reloc_value += map->l_addr;
-+
-+ __builtin_memcpy (reloc_addr, &reloc_value, sizeof (reloc_value));
- }
- break;
- case R_MIPS_NONE: /* Alright, Wilbur. */
- break;
-+#if _MIPS_SIM == _MIPS_SIM_ABI64
-+ case R_MIPS_64:
-+ /* For full compliance with the ELF64 ABI, one must precede the
-+ _REL32/_64 pair of relocations with a _64 relocation, such
-+ that the in-place addend is read as a 64-bit value. IRIX
-+ didn't pick up on this requirement, so we treat the
-+ _REL32/_64 relocation as a 64-bit relocation even if it's by
-+ itself. For ABI compliance, we ignore such _64 dummy
-+ relocations. For RELA, this may be simply removed, since
-+ it's totally unnecessary. */
-+ if (ELFW(R_SYM) (reloc->r_info) == 0)
-+ break;
-+ /* Fall through. */
-+#endif
- default:
- _dl_reloc_bad_type (map, r_type, 0);
- break;
-@@ -536,7 +640,7 @@
-
- static inline void
- elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- ElfW(Addr) *const reloc_addr)
-+ void /* ElfW(Addr) */ *const reloc_addr)
- {
- /* XXX Nothing to do. There is no relative relocation, right? */
- }
-@@ -661,7 +765,7 @@
- of got[1] of a gnu object is set to identify gnu objects.
- Where we can store l for non gnu objects? XXX */
- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
-+ got[1] = ((ElfW(Addr)) l | ELF_MIPS_GNU_GOT1_MASK);
- else
- _dl_mips_gnu_objects = 0;
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h glibc-2.3.2-200304020432/sysdeps/mips/elf/ldsodefs.h
---- glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h Wed Feb 6 23:56:54 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/elf/ldsodefs.h Sat Mar 22 16:07:05 2003
-@@ -1,5 +1,5 @@
- /* Run-time dynamic linker data structures for loaded ELF shared objects.
-- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 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
-@@ -17,9 +17,93 @@
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-+#ifndef _MIPS_LDSODEFS_H
-+#define _MIPS_LDSODEFS_H
-
- /* The MIPS ABI specifies that the dynamic section has to be read-only. */
-
- #define DL_RO_DYN_SECTION 1
-
- #include_next <ldsodefs.h>
-+
-+/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
-+ relocation entry specifies up to three actual relocations, all at
-+ the same address. The first relocation which required a symbol
-+ uses the symbol in the r_sym field. The second relocation which
-+ requires a symbol uses the symbol in the r_ssym field. If all
-+ three relocations require a symbol, the third one uses a zero
-+ value.
-+
-+ We define these structures in internal headers because we're not
-+ sure we want to make them part of the ABI yet. Eventually, some of
-+ this may move into elf/elf.h. */
-+
-+/* An entry in a 64 bit SHT_REL section. */
-+
-+typedef struct
-+{
-+ Elf32_Word r_sym; /* Symbol index */
-+ unsigned char r_ssym; /* Special symbol for 2nd relocation */
-+ unsigned char r_type3; /* 3rd relocation type */
-+ unsigned char r_type2; /* 2nd relocation type */
-+ unsigned char r_type1; /* 1st relocation type */
-+} _Elf64_Mips_R_Info;
-+
-+typedef union
-+{
-+ Elf64_Xword r_info_number;
-+ _Elf64_Mips_R_Info r_info_fields;
-+} _Elf64_Mips_R_Info_union;
-+
-+typedef struct
-+{
-+ Elf64_Addr r_offset; /* Address */
-+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
-+} Elf64_Mips_Rel;
-+
-+typedef struct
-+{
-+ Elf64_Addr r_offset; /* Address */
-+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
-+ Elf64_Sxword r_addend; /* Addend */
-+} Elf64_Mips_Rela;
-+
-+#define ELF64_MIPS_R_SYM(i) \
-+ ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
-+#define ELF64_MIPS_R_TYPE(i) \
-+ (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_type2 << 8) \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_type3 << 16) \
-+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
-+ ).r_info_fields.r_ssym << 24))
-+#define ELF64_MIPS_R_INFO(sym, type) \
-+ (__extension__ (_Elf64_Mips_R_Info_union) \
-+ (__extension__ (_Elf64_Mips_R_Info) \
-+ { (sym), ELF64_MIPS_R_SSYM (type), \
-+ ELF64_MIPS_R_TYPE3 (type), \
-+ ELF64_MIPS_R_TYPE2 (type), \
-+ ELF64_MIPS_R_TYPE1 (type) \
-+ }).r_info_number)
-+/* These macros decompose the value returned by ELF64_MIPS_R_TYPE, and
-+ compose it back into a value that it can be used as an argument to
-+ ELF64_MIPS_R_INFO. */
-+#define ELF64_MIPS_R_SSYM(i) (((i) >> 24) & 0xff)
-+#define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff)
-+#define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff)
-+#define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff)
-+#define ELF64_MIPS_R_TYPEENC(type1, type2, type3, ssym) \
-+ ((type1) \
-+ | ((Elf32_Word)(type2) << 8) \
-+ | ((Elf32_Word)(type3) << 16) \
-+ | ((Elf32_Word)(ssym) << 24))
-+
-+#undef ELF64_R_SYM
-+#define ELF64_R_SYM(i) ELF64_MIPS_R_SYM (i)
-+#undef ELF64_R_TYPE
-+#define ELF64_R_TYPE(i) ELF64_MIPS_R_TYPE (i)
-+#undef ELF64_R_INFO
-+#define ELF64_R_INFO(sym, type) ELF64_MIPS_R_INFO ((sym), (type))
-+
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/elf/start.S glibc-2.3.2-200304020432/sysdeps/mips/elf/start.S
---- glibc-2.3.2/sysdeps/mips/elf/start.S Tue Dec 10 04:41:54 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/elf/start.S Mon Mar 17 16:47:12 2003
-@@ -1,5 +1,6 @@
- /* Startup code compliant to the ELF Mips ABI.
-- Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ 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
-@@ -19,6 +20,7 @@
-
- #define __ASSEMBLY__ 1
- #include <entry.h>
-+#include <sys/asm.h>
-
- #ifndef ENTRY_POINT
- #error ENTRY_POINT needs to be defined for start.S on MIPS/ELF.
-@@ -52,42 +54,41 @@
- char **argv, void (*init) (void), void (*fini) (void),
- void (*rtld_fini) (void), void *stack_end)
- */
--#ifdef __PIC__
--/* A macro to (re)initialize gp. We can get the run time address of 0f in
-- ra ($31) by blezal instruction. In this early phase, we can't save gp
-- in stack and .cprestore doesn't work properly. So we set gp by using
-- this macro. */
--#define SET_GP \
-- .set noreorder; \
-- bltzal $0,0f; \
-- nop; \
--0: .cpload $31; \
-- .set reorder;
--#endif
-
- .text
- .globl ENTRY_POINT
- .type ENTRY_POINT,@function
- ENTRY_POINT:
- #ifdef __PIC__
-- SET_GP
-+ SETUP_GPX($0)
-+ SETUP_GPX64($25,$0)
- #else
-- la $28, _gp /* Setup GP correctly if we're non-PIC. */
--#endif
-+ PTR_LA $28, _gp /* Setup GP correctly if we're non-PIC. */
- move $31, $0
-+#endif
-
-- la $4, main /* main */
-- lw $5, 0($29) /* argc */
-- addu $6, $29, 4 /* argv */
-- /* Allocate space on the stack for seven arguments and make sure
-- the stack is aligned to double words (8 bytes). */
-- and $29, 0xfffffff8
-- subu $29, 32
-- la $7, __libc_csu_init /* init */
-- la $8, __libc_csu_fini
-- sw $8, 16($29) /* fini */
-- sw $2, 20($29) /* rtld_fini */
-- sw $29, 24($29) /* stack_end */
-+ PTR_LA $4, main /* main */
-+ PTR_L $5, 0($29) /* argc */
-+ PTR_ADDIU $6, $29, PTRSIZE /* argv */
-+
-+ /* Allocate space on the stack for seven arguments (o32 only)
-+ and make sure the stack is aligned to double words (8 bytes)
-+ on o32 and quad words (16 bytes) on n32 and n64. */
-+
-+ and $29, -2 * SZREG
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+ PTR_SUBIU $29, 32
-+#endif
-+ PTR_LA $7, __libc_csu_init /* init */
-+ PTR_LA $8, __libc_csu_fini
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+ PTR_S $8, 16($29) /* fini */
-+ PTR_S $2, 20($29) /* rtld_fini */
-+ PTR_S $29, 24($29) /* stack_end */
-+#else
-+ move $9, $2 /* rtld_fini */
-+ move $10, $29 /* stack_end */
-+#endif
- jal __libc_start_main
- hlt: b hlt /* Crash if somehow it does return. */
-
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h glibc-2.3.2-200304020432/sysdeps/mips/fpu/bits/mathdef.h
---- glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/fpu/bits/mathdef.h Fri Mar 14 16:30:43 2003
-@@ -0,0 +1,48 @@
-+/* Copyright (C) 1997, 1998, 1999, 2000, 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. */
-+
-+#if !defined _MATH_H && !defined _COMPLEX_H
-+# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-+#endif
-+
-+#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-+# define _MATH_H_MATHDEF 1
-+
-+/* Normally, there is no long double type and the `float' and `double'
-+ expressions are evaluated as `double'. */
-+typedef double float_t; /* `float' expressions are evaluated as
-+ `double'. */
-+typedef double double_t; /* `double' expressions are evaluated as
-+ `double'. */
-+
-+/* Define `INFINITY' as value of type `float'. */
-+# define INFINITY HUGE_VALF
-+
-+
-+/* The values returned by `ilogb' for 0 and NaN respectively. */
-+# define FP_ILOGB0 (-2147483647)
-+# define FP_ILOGBNAN 2147483647
-+
-+#endif /* ISO C99 */
-+
-+#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _MIPS_SIM_ABI32
-+/* Signal that we do not really have a `long double'. This disables the
-+ declaration of all the `long double' function variants. */
-+# define __NO_LONG_DOUBLE_MATH 1
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/mips/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps Wed Oct 16 01:39:37 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/ieee754.h glibc-2.3.2-200304020432/sysdeps/mips/ieee754.h
---- glibc-2.3.2/sysdeps/mips/ieee754.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/ieee754.h Thu Mar 20 18:59:45 2003
-@@ -0,0 +1,325 @@
-+/* Copyright (C) 1992, 1995, 1996, 1999, 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. */
-+
-+#ifndef _IEEE754_H
-+
-+#define _IEEE754_H 1
-+#include <features.h>
-+
-+#include <endian.h>
-+
-+#include <float.h>
-+
-+__BEGIN_DECLS
-+
-+union ieee754_float
-+ {
-+ float f;
-+
-+ /* This is the IEEE 754 single-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:8;
-+ unsigned int mantissa:23;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ unsigned int mantissa:23;
-+ unsigned int exponent:8;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:8;
-+ unsigned int quiet_nan:1;
-+ unsigned int mantissa:22;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ unsigned int mantissa:22;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:8;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee_nan;
-+ };
-+
-+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
-+
-+
-+union ieee754_double
-+ {
-+ double d;
-+
-+ /* This is the IEEE 754 double-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:20;
-+ unsigned int mantissa1:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:19;
-+ unsigned int mantissa1:32;
-+#else
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
-+
-+#if LDBL_MANT_DIG == 113
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 854 quad-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:16;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa3:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa3:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:16;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:15;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa3:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa3:32;
-+ unsigned int mantissa2:32;
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:15;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+#endif /* Little endian. */
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
-+
-+#elif LDBL_MANT_DIG == 64
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 854 double-extended-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:32;
-+ unsigned int mantissa1:32;
-+#endif
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:32;
-+ unsigned int mantissa1:32;
-+# else
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:32;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+# endif
-+#endif
-+ } ieee;
-+
-+ /* This is for NaNs in the IEEE 854 double-extended-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:15;
-+ unsigned int empty:16;
-+ unsigned int one:1;
-+ unsigned int quiet_nan:1;
-+ unsigned int mantissa0:30;
-+ unsigned int mantissa1:32;
-+#endif
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+ unsigned int mantissa0:30;
-+ unsigned int quiet_nan:1;
-+ unsigned int one:1;
-+ unsigned int mantissa1:32;
-+# else
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:30;
-+ unsigned int quiet_nan:1;
-+ unsigned int one:1;
-+ unsigned int exponent:15;
-+ unsigned int negative:1;
-+ unsigned int empty:16;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
-+
-+#elif LDBL_MANT_DIG == 53
-+
-+union ieee854_long_double
-+ {
-+ long double d;
-+
-+ /* This is the IEEE 754 double-precision format. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:20;
-+ unsigned int mantissa1:32;
-+#endif /* Big endian. */
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:20;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif /* Little endian. */
-+ } ieee;
-+
-+ /* This format makes it easier to see if a NaN is a signalling NaN. */
-+ struct
-+ {
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+ unsigned int negative:1;
-+ unsigned int exponent:11;
-+ unsigned int quiet_nan:1;
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa0:19;
-+ unsigned int mantissa1:32;
-+#else
-+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+ unsigned int mantissa1:32;
-+# else
-+ /* Together these comprise the mantissa. */
-+ unsigned int mantissa1:32;
-+ unsigned int mantissa0:19;
-+ unsigned int quiet_nan:1;
-+ unsigned int exponent:11;
-+ unsigned int negative:1;
-+# endif
-+#endif
-+ } ieee_nan;
-+ };
-+
-+#define IEEE854_LONG_DOUBLE_BIAS 0x3ff /* Added to exponent. */
-+
-+#endif /* LDBL_MANT_DIG == 53 */
-+
-+__END_DECLS
-+
-+#endif /* ieee754.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/lshift.S glibc-2.3.2-200304020432/sysdeps/mips/lshift.S
---- glibc-2.3.2/sysdeps/mips/lshift.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/lshift.S Fri Mar 14 04:59:37 2003
-@@ -1,6 +1,6 @@
- /* MIPS2 __mpn_lshift --
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -44,12 +44,12 @@
- addu $4,$4,$2 /* make r4 point at end of res */
- addiu $6,$6,-1
- and $9,$6,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
- srl $2,$10,$13 /* compute function result */
-
- subu $6,$6,$9
-
--.Loop0: lw $3,-8($5)
-+L(Loop0): lw $3,-8($5)
- addiu $4,$4,-4
- addiu $5,$5,-4
- addiu $9,$9,-1
-@@ -57,13 +57,13 @@
- srl $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- sw $8,0($4)
-
--.L0: beq $6,$0,.Lend
-+L(L0): beq $6,$0,L(Lend)
- nop
-
--.Loop: lw $3,-8($5)
-+L(Loop): lw $3,-8($5)
- addiu $4,$4,-16
- addiu $6,$6,-4
- sll $11,$10,$7
-@@ -89,10 +89,10 @@
-
- addiu $5,$5,-16
- or $8,$14,$9
-- bgtz $6,.Loop
-+ bgtz $6,L(Loop)
- sw $8,0($4)
-
--.Lend: sll $8,$10,$7
-+L(Lend): sll $8,$10,$7
- j $31
- sw $8,-4($4)
- END (__mpn_lshift)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/machine-gmon.h glibc-2.3.2-200304020432/sysdeps/mips/machine-gmon.h
---- glibc-2.3.2/sysdeps/mips/machine-gmon.h Wed Feb 13 08:30:11 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/machine-gmon.h Mon Mar 17 16:53:37 2003
-@@ -1,5 +1,6 @@
- /* Machine-specific calling sequence for `mcount' profiling function. MIPS
-- Copyright (C) 1996, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 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
-@@ -20,14 +21,17 @@
- #define _MCOUNT_DECL(frompc,selfpc) \
- static void __attribute_used__ __mcount (u_long frompc, u_long selfpc)
-
--/* Call __mcount with our the return PC for our caller,
-+/* Call __mcount with the return PC for our caller,
- and the return PC our caller will return to. */
-+
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+
- #ifdef __PIC__
--#define CPLOAD ".cpload $25;"
--#define CPRESTORE ".cprestore 44\n\t"
-+# define CPLOAD ".cpload $25;"
-+# define CPRESTORE ".cprestore 44\n\t"
- #else
--#define CPLOAD
--#define CPRESTORE
-+# define CPLOAD
-+# define CPRESTORE
- #endif
-
- #define MCOUNT asm(\
-@@ -66,3 +70,70 @@
- ".set reorder;\n\t" \
- ".set at\n\t" \
- ".end _mcount");
-+
-+#else
-+
-+#ifdef __PIC__
-+# define CPSETUP ".cpsetup $25, 88, _mcount;"
-+# define CPRETURN ".cpreturn;"
-+#else
-+# define CPSETUP
-+# define CPRETURN
-+#endif
-+
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+# define PTR_ADDU_STRING "add" /* no u */
-+# define PTR_SUBU_STRING "sub" /* no u */
-+#elif defined _ABI64 && _MIPS_SIM == _ABI64
-+# define PTR_ADDU_STRING "daddu"
-+# define PTR_SUBU_STRING "dsubu"
-+#else
-+# error "Unknown ABI"
-+#endif
-+
-+#define MCOUNT asm(\
-+ ".globl _mcount;\n\t" \
-+ ".align 3;\n\t" \
-+ ".type _mcount,@function;\n\t" \
-+ ".ent _mcount\n\t" \
-+ "_mcount:\n\t" \
-+ ".frame $sp,88,$31\n\t" \
-+ ".set noreorder;\n\t" \
-+ ".set noat;\n\t" \
-+ PTR_SUBU_STRING " $29,$29,96;\n\t" \
-+ CPSETUP \
-+ "sd $4,24($29);\n\t" \
-+ "sd $5,32($29);\n\t" \
-+ "sd $6,40($29);\n\t" \
-+ "sd $7,48($29);\n\t" \
-+ "sd $8,56($29);\n\t" \
-+ "sd $9,64($29);\n\t" \
-+ "sd $10,72($29);\n\t" \
-+ "sd $11,80($29);\n\t" \
-+ "sd $2,16($29);\n\t" \
-+ "sd $1,0($29);\n\t" \
-+ "sd $31,8($29);\n\t" \
-+ "move $5,$31;\n\t" \
-+ "move $4,$1;\n\t" \
-+ "jal __mcount;\n\t" \
-+ "nop;\n\t" \
-+ "ld $4,24($29);\n\t" \
-+ "ld $5,32($29);\n\t" \
-+ "ld $6,40($29);\n\t" \
-+ "ld $7,48($29);\n\t" \
-+ "ld $8,56($29);\n\t" \
-+ "ld $9,64($29);\n\t" \
-+ "ld $10,72($29);\n\t" \
-+ "ld $11,80($29);\n\t" \
-+ "ld $2,16($29);\n\t" \
-+ "ld $31,8($29);\n\t" \
-+ "ld $1,0($29);\n\t" \
-+ CPRETURN \
-+ PTR_ADDU_STRING " $29,$29,96;\n\t" \
-+ "j $31;\n\t" \
-+ "move $31,$1;\n\t" \
-+ ".set reorder;\n\t" \
-+ ".set at\n\t" \
-+ ".end _mcount");
-+
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/memcpy.S glibc-2.3.2-200304020432/sysdeps/mips/memcpy.S
---- glibc-2.3.2/sysdeps/mips/memcpy.S Tue Sep 10 13:22:59 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/memcpy.S Fri Mar 21 22:39:39 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-
-@@ -21,12 +21,7 @@
- #include <endian.h>
-
-
--/* void *memcpy(void *s1, const void *s2, size_t n);
--
-- This routine could be optimized further for MIPS64, but this is left
-- as an exercise for the future. When it is done, the file should be kept
-- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
-- directory. */
-+/* void *memcpy(void *s1, const void *s2, size_t n); */
-
- #if __BYTE_ORDER == __BIG_ENDIAN
- # define LWHI lwl /* high part is left in big-endian */
-@@ -44,27 +39,29 @@
- .set noreorder
-
- slti t0, a2, 8 # Less than 8?
-- bne t0, zero, $last8
-+ bne t0, zero, L(last8)
- move v0, a0 # Setup exit value before too late
-
- xor t0, a1, a0 # Find a0/a1 displacement
- andi t0, 0x3
-- bne t0, zero, $shift # Go handle the unaligned case
-+ bne t0, zero, L(shift) # Go handle the unaligned case
- subu t1, zero, a1
- andi t1, 0x3 # a0/a1 are aligned, but are we
-- beq t1, zero, $chk8w # starting in the middle of a word?
-+ beq t1, zero, L(chk8w) # starting in the middle of a word?
- subu a2, t1
- LWHI t0, 0(a1) # Yes we are... take care of that
- addu a1, t1
- SWHI t0, 0(a0)
- addu a0, t1
-
--$chk8w: andi t0, a2, 0x1f # 32 or more bytes left?
-- beq t0, a2, $chk1w
-+L(chk8w):
-+ andi t0, a2, 0x1f # 32 or more bytes left?
-+ beq t0, a2, L(chk1w)
- subu a3, a2, t0 # Yes
- addu a3, a1 # a3 = end address of loop
- move a2, t0 # a2 = what will be left after loop
--$lop8w: lw t0, 0(a1) # Loop taking 8 words at a time
-+L(lop8w):
-+ lw t0, 0(a1) # Loop taking 8 words at a time
- lw t1, 4(a1)
- lw t2, 8(a1)
- lw t3, 12(a1)
-@@ -81,49 +78,57 @@
- sw t4, -16(a0)
- sw t5, -12(a0)
- sw t6, -8(a0)
-- bne a1, a3, $lop8w
-+ bne a1, a3, L(lop8w)
- sw t7, -4(a0)
-
--$chk1w: andi t0, a2, 0x3 # 4 or more bytes left?
-- beq t0, a2, $last8
-+L(chk1w):
-+ andi t0, a2, 0x3 # 4 or more bytes left?
-+ beq t0, a2, L(last8)
- subu a3, a2, t0 # Yes, handle them one word at a time
- addu a3, a1 # a3 again end address
- move a2, t0
--$lop1w: lw t0, 0(a1)
-+L(lop1w):
-+ lw t0, 0(a1)
- addiu a0, 4
- addiu a1, 4
-- bne a1, a3, $lop1w
-+ bne a1, a3, L(lop1w)
- sw t0, -4(a0)
-
--$last8: blez a2, $lst8e # Handle last 8 bytes, one at a time
-+L(last8):
-+ blez a2, L(lst8e) # Handle last 8 bytes, one at a time
- addu a3, a2, a1
--$lst8l: lb t0, 0(a1)
-+L(lst8l):
-+ lb t0, 0(a1)
- addiu a0, 1
- addiu a1, 1
-- bne a1, a3, $lst8l
-+ bne a1, a3, L(lst8l)
- sb t0, -1(a0)
--$lst8e: jr ra # Bye, bye
-+L(lst8e):
-+ jr ra # Bye, bye
- nop
-
--$shift: subu a3, zero, a0 # Src and Dest unaligned
-+L(shift):
-+ subu a3, zero, a0 # Src and Dest unaligned
- andi a3, 0x3 # (unoptimized case...)
-- beq a3, zero, $shft1
-+ beq a3, zero, L(shft1)
- subu a2, a3 # a2 = bytes left
- LWHI t0, 0(a1) # Take care of first odd part
- LWLO t0, 3(a1)
- addu a1, a3
- SWHI t0, 0(a0)
- addu a0, a3
--$shft1: andi t0, a2, 0x3
-+L(shft1):
-+ andi t0, a2, 0x3
- subu a3, a2, t0
- addu a3, a1
--$shfth: LWHI t1, 0(a1) # Limp through, word by word
-+L(shfth):
-+ LWHI t1, 0(a1) # Limp through, word by word
- LWLO t1, 3(a1)
- addiu a0, 4
- addiu a1, 4
-- bne a1, a3, $shfth
-+ bne a1, a3, L(shfth)
- sw t1, -4(a0)
-- b $last8 # Handle anything which may be left
-+ b L(last8) # Handle anything which may be left
- move a2, t0
-
- .set reorder
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/memset.S glibc-2.3.2-200304020432/sysdeps/mips/memset.S
---- glibc-2.3.2/sysdeps/mips/memset.S Tue Sep 10 13:22:59 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/memset.S Fri Mar 21 22:39:39 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-
-@@ -21,12 +21,7 @@
- #include <endian.h>
-
-
--/* void *memset(void *s, int c, size_t n).
--
-- This routine could be optimized further for MIPS64, but this is left
-- as an exercise for the future. When it is done, the file should be kept
-- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
-- directory. */
-+/* void *memset(void *s, int c, size_t n). */
-
- #if __BYTE_ORDER == __BIG_ENDIAN
- # define SWHI swl /* high part is left in big-endian */
-@@ -38,45 +33,52 @@
- .set noreorder
-
- slti t1, a2, 8 # Less than 8?
-- bne t1, zero, $last8
-+ bne t1, zero, L(last8)
- move v0, a0 # Setup exit value before too late
-
-- beq a1, zero, $ueven # If zero pattern, no need to extend
-+ beq a1, zero, L(ueven) # If zero pattern, no need to extend
- andi a1, 0xff # Avoid problems with bogus arguments
- sll t0, a1, 8
- or a1, t0
- sll t0, a1, 16
- or a1, t0 # a1 is now pattern in full word
-
--$ueven: subu t0, zero, a0 # Unaligned address?
-+L(ueven):
-+ subu t0, zero, a0 # Unaligned address?
- andi t0, 0x3
-- beq t0, zero, $chkw
-+ beq t0, zero, L(chkw)
- subu a2, t0
- SWHI a1, 0(a0) # Yes, handle first unaligned part
- addu a0, t0 # Now both a0 and a2 are updated
-
--$chkw: andi t0, a2, 0x7 # Enough left for one loop iteration?
-- beq t0, a2, $chkl
-+L(chkw):
-+ andi t0, a2, 0x7 # Enough left for one loop iteration?
-+ beq t0, a2, L(chkl)
- subu a3, a2, t0
- addu a3, a0 # a3 is last loop address +1
- move a2, t0 # a2 is now # of bytes left after loop
--$loopw: addiu a0, 8 # Handle 2 words pr. iteration
-+L(loopw):
-+ addiu a0, 8 # Handle 2 words pr. iteration
- sw a1, -8(a0)
-- bne a0, a3, $loopw
-+ bne a0, a3, L(loopw)
- sw a1, -4(a0)
-
--$chkl: andi t0, a2, 0x4 # Check if there is at least a full
-- beq t0, zero, $last8 # word remaining after the loop
-+L(chkl):
-+ andi t0, a2, 0x4 # Check if there is at least a full
-+ beq t0, zero, L(last8) # word remaining after the loop
- subu a2, t0
- sw a1, 0(a0) # Yes...
- addiu a0, 4
-
--$last8: blez a2, $exit # Handle last 8 bytes (if cnt>0)
-+L(last8):
-+ blez a2, L(exit) # Handle last 8 bytes (if cnt>0)
- addu a3, a2, a0 # a3 is last address +1
--$lst8l: addiu a0, 1
-- bne a0, a3, $lst8l
-+L(lst8l):
-+ addiu a0, 1
-+ bne a0, a3, L(lst8l)
- sb a1, -1(a0)
--$exit: j ra # Bye, bye
-+L(exit):
-+ j ra # Bye, bye
- nop
-
- .set reorder
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips32/Implies glibc-2.3.2-200304020432/sysdeps/mips/mips32/Implies
---- glibc-2.3.2/sysdeps/mips/mips32/Implies Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips32/Implies Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,2 @@
-+mips
-+wordsize-32
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips32/Makefile glibc-2.3.2-200304020432/sysdeps/mips/mips32/Makefile
---- glibc-2.3.2/sysdeps/mips/mips32/Makefile Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips32/Makefile Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,3 @@
-+ifeq ($(filter -mabi=32,$(CC)),)
-+CC += -mabi=32
-+endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/Implies glibc-2.3.2-200304020432/sysdeps/mips/mips64/Implies
---- glibc-2.3.2/sysdeps/mips/mips64/Implies Wed Jul 14 09:27:44 1999
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/Implies Mon Mar 17 17:20:44 2003
-@@ -1,4 +1,3 @@
--wordsize-64
- # MIPS uses IEEE 754 floating point.
- ieee754/flt-32
- ieee754/dbl-64
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c glibc-2.3.2-200304020432/sysdeps/mips/mips64/__longjmp.c
---- glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/__longjmp.c Thu Mar 20 23:29:44 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1995, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -38,6 +38,7 @@
- register int val asm ("a1");
-
- /* Pull back the floating point callee-saved registers. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
- asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[0]));
- asm volatile ("l.d $f25, %0" : : "m" (env[0].__fpregs[1]));
- asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[2]));
-@@ -46,6 +47,14 @@
- asm volatile ("l.d $f29, %0" : : "m" (env[0].__fpregs[5]));
- asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[6]));
- asm volatile ("l.d $f31, %0" : : "m" (env[0].__fpregs[7]));
-+#else
-+ asm volatile ("l.d $f20, %0" : : "m" (env[0].__fpregs[0]));
-+ asm volatile ("l.d $f22, %0" : : "m" (env[0].__fpregs[1]));
-+ asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[2]));
-+ asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[3]));
-+ asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
-+ asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
-+#endif
-
- /* Get and reconstruct the floating point csr. */
- asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/add_n.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/add_n.S
---- glibc-2.3.2/sysdeps/mips/mips64/add_n.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/add_n.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_add_n -- Add two limb vectors of the same length > 0 and
- * store sum in a third limb vector.
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /*
- * INPUT PARAMETERS
-@@ -38,10 +39,10 @@
- .globl __mpn_add_n
- .ent __mpn_add_n
- __mpn_add_n:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5)
-@@ -49,12 +50,12 @@
-
- daddiu $7,$7,-1
- and $9,$7,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
- move $2,$0
-
- dsubu $7,$7,$9
-
--.Loop0: daddiu $9,$9,-1
-+L(Loop0): daddiu $9,$9,-1
- ld $12,8($5)
- daddu $11,$11,$2
- ld $13,8($6)
-@@ -68,13 +69,13 @@
- daddiu $6,$6,8
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- daddiu $4,$4,8
-
--.L0: beq $7,$0,.Lend
-+L(L0): beq $7,$0,L(Lend)
- nop
-
--.Loop: daddiu $7,$7,-4
-+L(Loop): daddiu $7,$7,-4
-
- ld $12,8($5)
- daddu $11,$11,$2
-@@ -115,10 +116,10 @@
- daddiu $5,$5,32
- daddiu $6,$6,32
-
-- bne $7,$0,.Loop
-+ bne $7,$0,L(Loop)
- daddiu $4,$4,32
-
--.Lend: daddu $11,$11,$2
-+L(Lend): daddu $11,$11,$2
- sltu $8,$11,$2
- daddu $11,$10,$11
- sltu $2,$11,$10
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/addmul_1.S
---- glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/addmul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
- * add the product to a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +39,10 @@
- .globl __mpn_addmul_1
- .ent __mpn_addmul_1
- __mpn_addmul_1:
-- .set noreorder
- #ifdef PIC
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +53,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: ld $10,0($4)
-+L(Loop): ld $10,0($4)
- mflo $3
- mfhi $9
- daddiu $5,$5,8
-@@ -73,11 +74,11 @@
- daddu $2,$2,$10
- sd $3,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-+ bne $6,$0,L(Loop)
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: ld $10,0($4)
-+L(LC1): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-@@ -91,7 +92,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: ld $10,0($4)
-+L(LC0): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h glibc-2.3.2-200304020432/sysdeps/mips/mips64/bits/setjmp.h
---- glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/bits/setjmp.h Thu Jan 1 01:00:00 1970
-@@ -1,57 +0,0 @@
--/* Define the machine-dependent type `jmp_buf'. MIPS version.
-- Copyright (C) 1996, 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. */
--
--#ifndef _SETJMP_H
--# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
--#endif
--
--typedef struct
-- {
-- /* Program counter. */
-- __ptr_t __pc;
--
-- /* Stack pointer. */
-- __ptr_t __sp;
--
-- /* Callee-saved registers s0 through s7. */
-- int __regs[8];
--
-- /* The frame pointer. */
-- __ptr_t __fp;
--
-- /* The global pointer. */
-- __ptr_t __gp;
--
-- /* Floating point status register. */
-- int __fpc_csr;
--
-- /* Callee-saved floating point registers. */
-- double __fpregs[8];
-- } __jmp_buf[1];
--
--#ifdef __USE_MISC
--/* Offset to the program counter in `jmp_buf'. */
--# define JB_PC 0
--#endif
--
--
--/* Test if longjmp to JMPBUF would unwind the frame
-- containing a local variable at ADDRESS. */
--#define _JMPBUF_UNWINDS(jmpbuf, address) \
-- ((__ptr_t) (address) < (jmpbuf)[0].__sp)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/bsd-_setjmp.S
---- glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S Tue Dec 31 20:13:27 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/bsd-_setjmp.S Mon Mar 17 16:47:12 2003
-@@ -1,5 +1,5 @@
- /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. MIPS64 version.
-- Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 2000, 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
-@@ -28,10 +28,19 @@
- #endif
- ENTRY (_setjmp)
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP
- #endif
-- dla t9, C_SYMBOL_NAME (__sigsetjmp)
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (_setjmp))
-+ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-+#endif
-+ RESTORE_GP64
-+ move a1, zero /* Pass a second argument of zero. */
-+#ifdef __PIC__
- jr t9
-- dli a1, 0 /* Pass a second argument of zero. */
-+#else
-+ j C_SYMBOL_NAME (__sigsetjmp)
-+#endif
-+ .end _setjmp
- libc_hidden_def (_setjmp)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/bsd-setjmp.S
---- glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/bsd-setjmp.S Mon Mar 17 16:47:12 2003
-@@ -1,5 +1,5 @@
- /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. MIPS64 version.
-- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 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
-@@ -22,15 +22,25 @@
- in setjmp doesn't clobber the state restored by longjmp. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- #ifdef PIC
- .option pic2
- #endif
- ENTRY (setjmp)
--#ifdef PIC
-- .cpload t9
-+#ifdef __PIC__
-+ SETUP_GP
- #endif
-- dla t9, C_SYMBOL_NAME (__sigsetjmp)
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (setjmp))
-+ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-- jr t9
-+#endif
-+ RESTORE_GP64
- dli a1, 1 /* Pass a second argument of one. */
-+#ifdef __PIC__
-+ jr t9
-+#else
-+ j C_SYMBOL_NAME (__sigsetjmp)
-+#endif
-+ .end setjmp
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h glibc-2.3.2-200304020432/sysdeps/mips/mips64/dl-machine.h
---- glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h Thu Feb 28 22:35:57 2002
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/dl-machine.h Thu Jan 1 01:00:00 1970
-@@ -1,594 +0,0 @@
--/* Machine-dependent ELF dynamic relocation inline functions. MIPS64 version.
-- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
-- Contributed by Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
--
-- 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_machine_h
--#define dl_machine_h
--
--#define ELF_MACHINE_NAME "MIPS"
--
--#define ELF_MACHINE_NO_PLT
--
--#include <entry.h>
--
--#ifndef ENTRY_POINT
--#error ENTRY_POINT needs to be defined for MIPS.
--#endif
--
--#ifndef _RTLD_PROLOGUE
--# define _RTLD_PROLOGUE(entry) "\n\t.globl " __STRING(entry) \
-- "\n\t.ent " __STRING(entry) \
-- "\n\t" __STRING(entry) ":\n\t"
--#endif
--
--#ifndef _RTLD_EPILOGUE
--# define _RTLD_EPILOGUE(entry) "\t.end " __STRING(entry) "\n"
--#endif
--
--/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.
-- This makes no sense on MIPS but we have to define this to R_MIPS_REL32
-- to avoid the asserts in dl-lookup.c from blowing. */
--#define ELF_MACHINE_JMP_SLOT R_MIPS_REL32
--#define elf_machine_type_class(type) ELF_RTYPE_CLASS_PLT
--
--/* Translate a processor specific dynamic tag to the index
-- in l_info array. */
--#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
--
--#if 0
--/* We may need 64k alignment. */
--#define ELF_MACHINE_ALIGN_MASK 0xffff
--#endif
--
--/*
-- * MIPS libraries are usually linked to a non-zero base address. We
-- * subtrace the base address from the address where we map the object
-- * to. This results in more efficient address space usage.
-- */
--#if 0
--#define MAP_BASE_ADDR(l) ((l)->l_info[DT_MIPS(BASE_ADDRESS)] ? \
-- (l)->l_info[DT_MIPS(BASE_ADDRESS)]->d_un.d_ptr : 0)
--#else
--#define MAP_BASE_ADDR(l) 0x5ffe0000
--#endif
--
--/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in
-- with the run-time address of the r_debug structure */
--#define ELF_MACHINE_DEBUG_SETUP(l,r) \
--do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
-- *(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \
-- (ElfW(Addr)) (r); \
-- } while (0)
--
--/* Return nonzero iff ELF header is compatible with the running host. */
--static inline int __attribute__ ((unused))
--elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
--{
-- switch (ehdr->e_machine)
-- {
-- case EM_MIPS:
-- case EM_MIPS_RS3_LE:
-- return 1;
-- default:
-- return 0;
-- }
--}
--
--static inline ElfW(Addr) *
--elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
--{
-- /* FIXME: the offset of gp from GOT may be system-dependent. */
-- return (ElfW(Addr) *) (gpreg - 0x7ff0);
--}
--
--/* Return the link-time address of _DYNAMIC. Conveniently, this is the
-- first element of the GOT. This must be inlined in a function which
-- uses global data. */
--static inline ElfW(Addr)
--elf_machine_dynamic (void)
--{
-- register ElfW(Addr) gp __asm__ ("$28");
--
-- return *elf_mips_got_from_gpreg (gp);
--}
--
--
--/* Return the run-time load address of the shared object. */
--static inline ElfW(Addr)
--elf_machine_load_address (void)
--{
-- ElfW(Addr) addr;
-- asm (" .set noreorder\n"
-- " dla %0, here\n"
-- " bltzal $0, here\n"
-- " nop\n"
-- "here: dsubu %0, $31, %0\n"
-- " .set reorder\n"
-- : "=r" (addr)
-- : /* No inputs */
-- : "$31");
-- return addr;
--}
--
--/* The MSB of got[1] of a gnu object is set to identify gnu objects. */
--#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
--
--/* Relocate GOT. */
--static inline void
--elf_machine_got_rel (struct link_map *map, int lazy)
--{
-- ElfW(Addr) *got;
-- ElfW(Sym) *sym;
-- int i, n;
-- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
--
--#define RESOLVE_GOTSYM(sym) \
-- ({ \
-- const ElfW(Sym) *ref = sym; \
-- ElfW(Addr) sym_loadaddr; \
-- sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, \
-- map->l_scope, \
-- map->l_name, R_MIPS_REL32);\
-- (ref)? sym_loadaddr + ref->st_value: 0; \
-- })
--
-- got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]);
--
-- /* got[0] is reserved. got[1] is also reserved for the dynamic object
-- generated by gnu ld. Skip these reserved entries from relocation. */
-- i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2: 1;
-- n = map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
-- /* Add the run-time display to all local got entries. */
-- while (i < n)
-- got[i++] += map->l_addr;
--
-- /* Handle global got entries. */
-- got += n;
-- sym = (ElfW(Sym) *) D_PTR (map, l_info[DT_SYMTAB]);
-- sym += map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
-- i = (map->l_info[DT_MIPS (SYMTABNO)]->d_un.d_val
-- - map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val);
--
-- while (i--)
-- {
-- if (sym->st_shndx == SHN_UNDEF)
-- {
-- if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC)
-- {
-- if (sym->st_value && lazy)
-- *got = sym->st_value + map->l_addr;
-- else
-- *got = RESOLVE_GOTSYM (sym);
-- }
-- else /* if (*got == 0 || *got == QS) */
-- *got = RESOLVE_GOTSYM (sym);
-- }
-- else if (sym->st_shndx == SHN_COMMON)
-- *got = RESOLVE_GOTSYM (sym);
-- else if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC
-- && *got != sym->st_value
-- && lazy)
-- *got += map->l_addr;
-- else if (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION)
-- {
-- if (sym->st_other == 0)
-- *got += map->l_addr;
-- }
-- else
-- *got = RESOLVE_GOTSYM (sym);
--
-- got++;
-- sym++;
-- }
--
--#undef RESOLVE_GOTSYM
--
-- return;
--}
--
--/* Set up the loaded object described by L so its stub function
-- will jump to the on-demand fixup code in dl-runtime.c. */
--
--static inline int
--elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
--{
-- ElfW(Addr) *got;
-- extern void _dl_runtime_resolve (ElfW(Word));
-- extern int _dl_mips_gnu_objects;
--
--#ifdef RTLD_BOOTSTRAP
-- {
-- return lazy;
-- }
--#endif
-- if (lazy)
-- {
-- /* The GOT entries for functions have not yet been filled in.
-- Their initial contents will arrange when called to put an
-- offset into the .dynsym section in t8, the return address
-- in t7 and then jump to _GLOBAL_OFFSET_TABLE[0]. */
-- got = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
--
-- /* This function will get called to fix up the GOT entry indicated by
-- the register t8, and then jump to the resolved address. */
-- got[0] = (ElfW(Addr)) &_dl_runtime_resolve;
--
-- /* Store l to _GLOBAL_OFFSET_TABLE[1] for gnu object. The MSB
-- of got[1] of a gnu object is set to identify gnu objects.
-- Where we can store l for non gnu objects? XXX */
-- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
-- else
-- _dl_mips_gnu_objects = 0;
-- }
--
-- /* Relocate global offset table. */
-- elf_machine_got_rel (l, lazy);
--
-- return lazy;
--}
--
--/* Get link_map for this object. */
--static inline struct link_map *
--elf_machine_runtime_link_map (ElfW(Addr) gpreg, ElfW(Addr) stub_pc)
--{
-- extern int _dl_mips_gnu_objects;
--
-- /* got[1] is reserved to keep its link map address for the shared
-- object generated by the gnu linker. If all are such objects, we
-- can find the link map from current GPREG simply. If not so, get
-- the link map for caller's object containing STUB_PC. */
--
-- if (_dl_mips_gnu_objects)
-- {
-- ElfW(Addr) *got = elf_mips_got_from_gpreg (gpreg);
-- ElfW(Word) g1;
--
-- g1 = ((ElfW(Word) *) got)[1];
--
-- if ((g1 & ELF_MIPS_GNU_GOT1_MASK) != 0)
-- {
-- struct link_map *l =
-- (struct link_map *) (g1 & ~ELF_MIPS_GNU_GOT1_MASK);
-- ElfW(Addr) base, limit;
-- const ElfW(Phdr) *p = l->l_phdr;
-- ElfW(Half) this, nent = l->l_phnum;
--
-- /* For the common case of a stub being called from the containing
-- object, STUB_PC will point to somewhere within the object that
-- is described by the link map fetched via got[1]. Otherwise we
-- have to scan all maps. */
-- for (this = 0; this < nent; this++)
-- {
-- if (p[this].p_type == PT_LOAD)
-- {
-- base = p[this].p_vaddr + l->l_addr;
-- limit = base + p[this].p_memsz;
-- if (stub_pc >= base && stub_pc < limit)
-- return l;
-- }
-- this++;
-- }
-- }
-- }
--
-- {
-- struct link_map *l = GL(dl_loaded);
--
-- while (l)
-- {
-- ElfW(Addr) base, limit;
-- const ElfW(Phdr) *p = l->l_phdr;
-- ElfW(Half) this, nent = l->l_phnum;
--
-- for (this = 0; this < nent; this++)
-- {
-- if (p[this].p_type == PT_LOAD)
-- {
-- base = p[this].p_vaddr + l->l_addr;
-- limit = base + p[this].p_memsz;
-- if (stub_pc >= base && stub_pc < limit)
-- return l;
-- }
-- }
-- l = l->l_next;
-- }
-- }
--
-- _dl_signal_error (0, NULL, NULL, "cannot find runtime link map");
-- return NULL;
--}
--
--/* Mips has no PLT but define elf_machine_relplt to be elf_machine_rel. */
--#define elf_machine_relplt elf_machine_rel
--
--/* Define mips specific runtime resolver. The function __dl_runtime_resolve
-- is called from assembler function _dl_runtime_resolve which converts
-- special argument registers t7 ($15) and t8 ($24):
-- t7 address to return to the caller of the function
-- t8 index for this function symbol in .dynsym
-- to usual c arguments. */
--
--#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
--/* The flag _dl_mips_gnu_objects is set if all dynamic objects are \
-- generated by the gnu linker. */ \
--int _dl_mips_gnu_objects = 1; \
-- \
--/* This is called from assembly stubs below which the compiler can't see. */ \
--static ElfW(Addr) \
--__dl_runtime_resolve (ElfW(Word), ElfW(Word), ElfW(Addr), ElfW(Addr)) \
-- __attribute__ ((unused)); \
-- \
--static ElfW(Addr) \
--__dl_runtime_resolve (ElfW(Word) sym_index, \
-- ElfW(Word) return_address, \
-- ElfW(Addr) old_gpreg, \
-- ElfW(Addr) stub_pc) \
--{ \
-- struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
-- const ElfW(Sym) *const symtab \
-- = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
-- const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
-- const ElfW(Addr) *got \
-- = (const ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
-- const ElfW(Word) local_gotno \
-- = (const ElfW(Word)) l->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val; \
-- const ElfW(Word) gotsym \
-- = (const ElfW(Word)) l->l_info[DT_MIPS (GOTSYM)]->d_un.d_val; \
-- const ElfW(Sym) *definer; \
-- ElfW(Addr) loadbase; \
-- ElfW(Addr) funcaddr; \
-- \
-- /* Look up the symbol's run-time value. */ \
-- definer = &symtab[sym_index]; \
-- \
-- loadbase = _dl_lookup_symbol (strtab + definer->st_name, &definer, \
-- l->l_scope, l->l_name, \
-- R_MIPS_REL32); \
-- \
-- /* Apply the relocation with that value. */ \
-- funcaddr = loadbase + definer->st_value; \
-- *(got + local_gotno + sym_index - gotsym) = funcaddr; \
-- \
-- return funcaddr; \
--} \
-- \
--asm ("\n \
-- .text\n \
-- .align 3\n \
-- .globl _dl_runtime_resolve\n \
-- .type _dl_runtime_resolve,@function\n \
-- .ent _dl_runtime_resolve\n \
--_dl_runtime_resolve:\n \
-- .set noreorder\n \
-- # Save old GP to $3.\n \
-- move $3,$28\n \
-- # Modify t9 ($25) so as to point .cpload instruction.\n \
-- daddu $25,2*8\n \
-- # Compute GP.\n \
-- .cpload $25\n \
-- .set reorder\n \
-- # Save slot call pc.\n \
-- move $2, $31\n \
-- # Save arguments and sp value in stack.\n \
-- dsubu $29, 10*8\n \
-- .cprestore 8*8\n \
-- sd $15, 9*8($29)\n \
-- sd $4, 3*8($29)\n \
-- sd $5, 4*8($29)\n \
-- sd $6, 5*8($29)\n \
-- sd $7, 6*8($29)\n \
-- sd $16, 7*8($29)\n \
-- move $16, $29\n \
-- move $4, $24\n \
-- move $5, $15\n \
-- move $6, $3\n \
-- move $7, $2\n \
-- jal __dl_runtime_resolve\n \
-- move $29, $16\n \
-- ld $31, 9*8($29)\n \
-- ld $4, 3*8($29)\n \
-- ld $5, 4*8($29)\n \
-- ld $6, 5*8($29)\n \
-- ld $7, 6*8($29)\n \
-- ld $16, 7*8($29)\n \
-- daddu $29, 10*8\n \
-- move $25, $2\n \
-- jr $25\n \
-- .end _dl_runtime_resolve\n \
-- .previous\n \
--");
--
--/* Mask identifying addresses reserved for the user program,
-- where the dynamic linker should not map anything. */
--#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
--
--
--
--/* Initial entry point code for the dynamic linker.
-- The C function `_dl_start' is the real entry point;
-- its return value is the user program's entry point.
-- Note how we have to be careful about two things:
--
-- 1) That we allocate a minimal stack of 24 bytes for
-- every function call, the MIPS ABI states that even
-- if all arguments are passed in registers the procedure
-- called can use the 16 byte area pointed to by $sp
-- when it is called to store away the arguments passed
-- to it.
--
-- 2) That under Linux the entry is named __start
-- and not just plain _start. */
--
--#define RTLD_START asm ("\
-- .text\n\
-- .align 3\n"\
--_RTLD_PROLOGUE (ENTRY_POINT)\
--" .globl _dl_start_user\n\
-- .set noreorder\n\
-- bltzal $0, 0f\n\
-- nop\n\
--0: .cpload $31\n\
-- .set reorder\n\
-- # i386 ABI book says that the first entry of GOT holds\n\
-- # the address of the dynamic structure. Though MIPS ABI\n\
-- # doesn't say nothing about this, I emulate this here.\n\
-- dla $4, _DYNAMIC\n\
-- sd $4, -0x7ff0($28)\n\
-- dsubu $29, 16\n\
-- move $4, $29\n\
-- jal _dl_start\n\
-- daddiu $29, 16\n\
-- # Get the value of label '_dl_start_user' in t9 ($25).\n\
-- dla $25, _dl_start_user\n\
--_dl_start_user:\n\
-- .set noreorder\n\
-- .cpload $25\n\
-- .set reorder\n\
-- move $16, $28\n\
-- # Save the user entry point address in saved register.\n\
-- move $17, $2\n\
-- # Store the highest stack address\n\
-- sd $29, __libc_stack_end\n\
-- # See if we were run as a command with the executable file\n\
-- # name as an extra leading argument.\n\
-- ld $2, _dl_skip_args\n\
-- beq $2, $0, 1f\n\
-- # Load the original argument count.\n\
-- ld $4, 0($29)\n\
-- # Subtract _dl_skip_args from it.\n\
-- dsubu $4, $2\n\
-- # Adjust the stack pointer to skip _dl_skip_args words.\n\
-- dsll $2,2\n\
-- daddu $29, $2\n\
-- # Save back the modified argument count.\n\
-- sd $4, 0($29)\n\
--1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- ld $4, _rtld_local\n\
-- ld $5, 0($29)\n\
-- dla $6, 4($29)\n\
-- dla $7, 8($29)\n\
-- dsubu $29, 16\n\
-- # Call the function to run the initializers.\n\
-- jal _dl_init_internal\n\
-- daddiu $29, 16\n\
-- # Pass our finalizer function to the user in ra.\n\
-- dla $31, _dl_fini\n\
-- # Jump to the user entry point.\n\
--1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
-- lw $4, _rtld_local\n\
-- lw $5, 0($29)\n\
-- la $6, 4($29)\n\
-- la $7, 8($29)\n\
-- subu $29, 16\n\
-- # Call the function to run the initializers.\n\
-- jal _dl_init_internal\n\
-- addiu $29, 16\n\
-- # Pass our finalizer function to the user in ra.\n\
-- dla $31, _dl_fini\n\
-- # Jump to the user entry point.\n\
-- move $25, $17\n\
-- ld $4, 0($29)\n\
-- ld $5, 1*8($29)\n\
-- ld $6, 2*8$29)\n\
-- ld $7, 3*8($29)\n\
-- jr $25\n"\
--_RTLD_EPILOGUE(ENTRY_POINT) \
-- "\n.previous"\
--);
--
--
--/* The MIPS never uses Elfxx_Rela relocations. */
--#define ELF_MACHINE_NO_RELA 1
--
--#endif /* !dl_machine_h */
--
--#ifdef RESOLVE
--
--/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
-- MAP is the object containing the reloc. */
--
--static inline void
--elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
-- const ElfW(Sym) *sym, const struct r_found_version *version,
-- ElfW(Addr) *const reloc_addr)
--{
-- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
-- ElfW(Addr) loadbase;
-- ElfW(Addr) undo __attribute__ ((unused));
--
-- switch (r_type)
-- {
-- case R_MIPS_REL32:
-- {
-- ElfW(Addr) undo = 0;
--
-- if (ELFW(ST_BIND) (sym->st_info) == STB_LOCAL
-- && (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION
-- || ELFW(ST_TYPE) (sym->st_info) == STT_NOTYPE))
-- {
-- *reloc_addr += map->l_addr;
-- break;
-- }
--#ifndef RTLD_BOOTSTRAP
-- /* This is defined in rtld.c, but nowhere in the static libc.a;
-- make the reference weak so static programs can still link. This
-- declaration cannot be done when compiling rtld.c (i.e. #ifdef
-- RTLD_BOOTSTRAP) because rtld.c contains the common defn for
-- _dl_rtld_map, which is incompatible with a weak decl in the same
-- file. */
--# ifndef SHARED
-- weak_extern (GL(dl_rtld_map));
--# endif
-- if (map == &GL(dl_rtld_map))
-- /* Undo the relocation done here during bootstrapping. Now we will
-- relocate it anew, possibly using a binding found in the user
-- program or a loaded library rather than the dynamic linker's
-- built-in definitions used while loading those libraries. */
-- undo = map->l_addr + sym->st_value;
--#endif
-- loadbase = RESOLVE (&sym, version, 0);
-- *reloc_addr += (sym ? (loadbase + sym->st_value) : 0) - undo;
-- }
-- break;
--#ifndef RTLD_BOOTSTRAP
-- case R_MIPS_NONE: /* Alright, Wilbur. */
-- break;
--#endif
-- default:
-- _dl_reloc_bad_type (map, r_type, 0);
-- break;
-- }
--}
--
--static inline void
--elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-- ElfW(Addr) *const reloc_addr)
--{
-- /* XXX Nothing to do. There is no relative relocation, right? */
--}
--
--static inline void
--elf_machine_lazy_rel (struct link_map *map, ElfW(Addr) l_addr,
-- const ElfW(Rel) *reloc)
--{
-- /* Do nothing. */
--}
--
--#endif /* RESOLVE */
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h glibc-2.3.2-200304020432/sysdeps/mips/mips64/gmp-mparam.h
---- glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/gmp-mparam.h Mon Mar 17 16:47:12 2003
-@@ -0,0 +1,31 @@
-+/* gmp-mparam.h -- Compiler/machine parameter header file.
-+
-+Copyright (C) 1991, 1993, 1994, 2002, 2003 Free Software Foundation, Inc.
-+
-+This file is part of the GNU MP Library.
-+
-+The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-+the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-+
-+#if defined __GMP_H__ && ! defined _LONG_LONG_LIMB
-+#error "Included too late for _LONG_LONG_LIMB to take effect"
-+#endif
-+
-+#define _LONG_LONG_LIMB
-+#define BITS_PER_MP_LIMB 64
-+#define BYTES_PER_MP_LIMB 8
-+#define BITS_PER_LONGINT __WORDSIZE
-+#define BITS_PER_INT 32
-+#define BITS_PER_SHORTINT 16
-+#define BITS_PER_CHAR 8
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/lshift.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/lshift.S
---- glibc-2.3.2/sysdeps/mips/mips64/lshift.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/lshift.S Fri Mar 14 04:59:37 2003
-@@ -1,6 +1,6 @@
- /* MIPS3 __mpn_lshift --
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -21,6 +21,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -37,10 +38,10 @@
- .globl __mpn_lshift
- .ent __mpn_lshift
- __mpn_lshift:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- dsll $2,$6,3
-@@ -50,12 +51,12 @@
- daddu $4,$4,$2 # make r4 point at end of res
- daddiu $6,$6,-1
- and $9,$6,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
- dsrl $2,$10,$13 # compute function result
-
- dsubu $6,$6,$9
-
--.Loop0: ld $3,-16($5)
-+L(Loop0): ld $3,-16($5)
- daddiu $4,$4,-8
- daddiu $5,$5,-8
- daddiu $9,$9,-1
-@@ -63,13 +64,13 @@
- dsrl $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- sd $8,0($4)
-
--.L0: beq $6,$0,.Lend
-+L(L0): beq $6,$0,L(Lend)
- nop
-
--.Loop: ld $3,-16($5)
-+L(Loop): ld $3,-16($5)
- daddiu $4,$4,-32
- daddiu $6,$6,-4
- dsll $11,$10,$7
-@@ -95,10 +96,10 @@
-
- daddiu $5,$5,-32
- or $8,$14,$9
-- bgtz $6,.Loop
-+ bgtz $6,L(Loop)
- sd $8,0($4)
-
--.Lend: dsll $8,$10,$7
-+L(Lend): dsll $8,$10,$7
- j $31
- sd $8,-8($4)
- .end __mpn_lshift
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/memcpy.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/memcpy.S
---- glibc-2.3.2/sysdeps/mips/mips64/memcpy.S Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/memcpy.S Fri Mar 21 22:39:39 2003
-@@ -0,0 +1,139 @@
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-+ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
-+
-+ 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>
-+#include <endian.h>
-+#include <sys/asm.h>
-+
-+
-+/* void *memcpy(void *s1, const void *s2, size_t n);
-+
-+ This could probably be optimized further. */
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+# define LDHI ldl /* high part is left in big-endian */
-+# define SDHI sdl /* high part is left in big-endian */
-+# define LDLO ldr /* low part is right in big-endian */
-+# define SDLO sdr /* low part is right in big-endian */
-+#else
-+# define LDHI ldr /* high part is right in little-endian */
-+# define SDHI sdr /* high part is right in little-endian */
-+# define LDLO ldl /* low part is left in little-endian */
-+# define SDLO sdl /* low part is left in little-endian */
-+#endif
-+
-+ENTRY (memcpy)
-+ .set noreorder
-+
-+ slti a4, a2, 16 # Less than 16?
-+ bne a4, zero, L(last16)
-+ move v0, a0 # Setup exit value before too late
-+
-+ xor a4, a1, a0 # Find a0/a1 displacement
-+ andi a4, 0x7
-+ bne a4, zero, L(shift) # Go handle the unaligned case
-+ PTR_SUBU a5, zero, a1
-+ andi a5, 0x7 # a0/a1 are aligned, but are we
-+ beq a5, zero, L(chk8w) # starting in the middle of a word?
-+ PTR_SUBU a2, a5
-+ LDHI a4, 0(a1) # Yes we are... take care of that
-+ PTR_ADDU a1, a5
-+ SDHI a4, 0(a0)
-+ PTR_ADDU a0, a5
-+
-+L(chk8w):
-+ andi a4, a2, 0x3f # 64 or more bytes left?
-+ beq a4, a2, L(chk1w)
-+ PTR_SUBU a3, a2, a4 # Yes
-+ PTR_ADDU a3, a1 # a3 = end address of loop
-+ move a2, a4 # a2 = what will be left after loop
-+L(lop8w):
-+ ld a4, 0(a1) # Loop taking 8 words at a time
-+ ld a5, 8(a1)
-+ ld a6, 16(a1)
-+ ld a7, 24(a1)
-+ ld t4, 32(a1)
-+ ld t5, 40(a1)
-+ ld t6, 48(a1)
-+ ld t7, 56(a1)
-+ PTR_ADDIU a0, 64
-+ PTR_ADDIU a1, 64
-+ sd a4, -64(a0)
-+ sd a5, -56(a0)
-+ sd a6, -48(a0)
-+ sd a7, -40(a0)
-+ sd t4, -32(a0)
-+ sd t5, -24(a0)
-+ sd t6, -16(a0)
-+ bne a1, a3, L(lop8w)
-+ sd t7, -8(a0)
-+
-+L(chk1w):
-+ andi a4, a2, 0x7 # 8 or more bytes left?
-+ beq a4, a2, L(last16)
-+ PTR_SUBU a3, a2, a4 # Yes, handle them one dword at a time
-+ PTR_ADDU a3, a1 # a3 again end address
-+ move a2, a4
-+L(lop1w):
-+ ld a4, 0(a1)
-+ PTR_ADDIU a0, 8
-+ PTR_ADDIU a1, 8
-+ bne a1, a3, L(lop1w)
-+ sd a4, -8(a0)
-+
-+L(last16):
-+ blez a2, L(lst16e) # Handle last 16 bytes, one at a time
-+ PTR_ADDU a3, a2, a1
-+L(lst16l):
-+ lb a4, 0(a1)
-+ PTR_ADDIU a0, 1
-+ PTR_ADDIU a1, 1
-+ bne a1, a3, L(lst16l)
-+ sb a4, -1(a0)
-+L(lst16e):
-+ jr ra # Bye, bye
-+ nop
-+
-+L(shift):
-+ PTR_SUBU a3, zero, a0 # Src and Dest unaligned
-+ andi a3, 0x7 # (unoptimized case...)
-+ beq a3, zero, L(shft1)
-+ PTR_SUBU a2, a3 # a2 = bytes left
-+ LDHI a4, 0(a1) # Take care of first odd part
-+ LDLO a4, 7(a1)
-+ PTR_ADDU a1, a3
-+ SDHI a4, 0(a0)
-+ PTR_ADDU a0, a3
-+L(shft1):
-+ andi a4, a2, 0x7
-+ PTR_SUBU a3, a2, a4
-+ PTR_ADDU a3, a1
-+L(shfth):
-+ LDHI a5, 0(a1) # Limp through, dword by dword
-+ LDLO a5, 7(a1)
-+ PTR_ADDIU a0, 8
-+ PTR_ADDIU a1, 8
-+ bne a1, a3, L(shfth)
-+ sd a5, -8(a0)
-+ b L(last16) # Handle anything which may be left
-+ move a2, a4
-+
-+ .set reorder
-+END (memcpy)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/memset.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/memset.S
---- glibc-2.3.2/sysdeps/mips/mips64/memset.S Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/memset.S Fri Mar 21 22:39:39 2003
-@@ -0,0 +1,91 @@
-+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
-+ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
-+
-+ 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>
-+#include <endian.h>
-+#include <sys/asm.h>
-+
-+
-+/* void *memset(void *s, int c, size_t n);
-+
-+ This could probably be optimized further. */
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+# define SDHI sdl /* high part is left in big-endian */
-+#else
-+# define SDHI sdr /* high part is right in little-endian */
-+#endif
-+
-+ENTRY (memset)
-+ .set noreorder
-+
-+ slti t5, a2, 16 # Less than 16?
-+ bne t5, zero, L(last16)
-+ move v0, a0 # Setup exit value before too late
-+
-+ beq a1, zero, L(ueven) # If zero pattern, no need to extend
-+ andi a1, 0xff # Avoid problems with bogus arguments
-+ dsll t4, a1, 8
-+ or a1, t4
-+ dsll t4, a1, 16
-+ or a1, t4 # a1 is now pattern in full word
-+ dsll t4, a1, 32
-+ or a1, t4 # a1 is now pattern in double word
-+
-+L(ueven):
-+ PTR_SUBU t4, zero, a0 # Unaligned address?
-+ andi t4, 0x7
-+ beq t4, zero, L(chkw)
-+ PTR_SUBU a2, t4
-+ SDHI a1, 0(a0) # Yes, handle first unaligned part
-+ PTR_ADDU a0, t4 # Now both a0 and a2 are updated
-+
-+L(chkw):
-+ andi t4, a2, 0xf # Enough left for one loop iteration?
-+ beq t4, a2, L(chkl)
-+ PTR_SUBU a3, a2, t4
-+ PTR_ADDU a3, a0 # a3 is last loop address +1
-+ move a2, t4 # a2 is now # of bytes left after loop
-+L(loopw):
-+ PTR_ADDIU a0, 16 # Handle 2 dwords pr. iteration
-+ sd a1, -16(a0)
-+ bne a0, a3, L(loopw)
-+ sd a1, -8(a0)
-+
-+L(chkl):
-+ andi t4, a2, 0x8 # Check if there is at least a double
-+ beq t4, zero, L(last16) # word remaining after the loop
-+ PTR_SUBU a2, t4
-+ sd a1, 0(a0) # Yes...
-+ PTR_ADDIU a0, 8
-+
-+L(last16):
-+ blez a2, L(exit) # Handle last 16 bytes (if cnt>0)
-+ PTR_ADDU a3, a2, a0 # a3 is last address +1
-+L(lst16l):
-+ PTR_ADDIU a0, 1
-+ bne a0, a3, L(lst16l)
-+ sb a1, -1(a0)
-+L(exit):
-+ j ra # Bye, bye
-+ nop
-+
-+ .set reorder
-+END (memset)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/mul_1.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/mul_1.S
---- glibc-2.3.2/sysdeps/mips/mips64/mul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/mul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,8 @@
- /* MIPS3 __mpn_mul_1 -- Multiply a limb vector with a single limb and
- * store the product in a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
-+ * Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +23,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +40,10 @@
- .globl __mpn_mul_1
- .ent __mpn_mul_1
- __mpn_mul_1:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +54,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: mflo $10
-+L(Loop): mflo $10
- mfhi $9
- daddiu $5,$5,8
- daddu $10,$10,$2 # add old carry limb to low product limb
-@@ -69,11 +71,11 @@
- sltu $2,$10,$2 # carry from previous addition -> $2
- sd $10,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-+ bne $6,$0,L(Loop)
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: mflo $10
-+L(LC1): mflo $10
- mfhi $9
- daddu $10,$10,$2
- sltu $2,$10,$2
-@@ -83,7 +85,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: mflo $10
-+L(LC0): mflo $10
- mfhi $9
- daddu $10,$10,$2
- sltu $2,$10,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/n32/Implies glibc-2.3.2-200304020432/sysdeps/mips/mips64/n32/Implies
---- glibc-2.3.2/sysdeps/mips/mips64/n32/Implies Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/n32/Implies Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,4 @@
-+mips/mips64
-+mips
-+wordsize-32
-+ieee754/ldbl-128
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile glibc-2.3.2-200304020432/sysdeps/mips/mips64/n32/Makefile
---- glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/n32/Makefile Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,6 @@
-+# `long double' is a distinct type we support.
-+long-double-fcts = yes
-+
-+ifeq ($(filter -mabi=n32,$(CC)),)
-+CC += -mabi=n32
-+endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/n64/Implies glibc-2.3.2-200304020432/sysdeps/mips/mips64/n64/Implies
---- glibc-2.3.2/sysdeps/mips/mips64/n64/Implies Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/n64/Implies Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,4 @@
-+mips/mips64
-+mips
-+wordsize-64
-+ieee754/ldbl-128
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile glibc-2.3.2-200304020432/sysdeps/mips/mips64/n64/Makefile
---- glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/n64/Makefile Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,6 @@
-+# `long double' is a distinct type we support.
-+long-double-fcts = yes
-+
-+ifeq ($(filter -mabi=64,$(CC)),)
-+CC += -mabi=64
-+endif
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/rshift.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/rshift.S
---- glibc-2.3.2/sysdeps/mips/mips64/rshift.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/rshift.S Fri Mar 14 04:59:37 2003
-@@ -1,6 +1,6 @@
- /* MIPS3 __mpn_rshift --
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -21,6 +21,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -37,22 +38,22 @@
- .globl __mpn_rshift
- .ent __mpn_rshift
- __mpn_rshift:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5) # load first limb
- dsubu $13,$0,$7
- daddiu $6,$6,-1
- and $9,$6,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
- dsll $2,$10,$13 # compute function result
-
- dsubu $6,$6,$9
-
--.Loop0: ld $3,8($5)
-+L(Loop0): ld $3,8($5)
- daddiu $4,$4,8
- daddiu $5,$5,8
- daddiu $9,$9,-1
-@@ -60,13 +61,13 @@
- dsll $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- sd $8,-8($4)
-
--.L0: beq $6,$0,.Lend
-+L(L0): beq $6,$0,L(Lend)
- nop
-
--.Loop: ld $3,8($5)
-+L(Loop): ld $3,8($5)
- daddiu $4,$4,32
- daddiu $6,$6,-4
- dsrl $11,$10,$7
-@@ -92,10 +93,10 @@
-
- daddiu $5,$5,32
- or $8,$14,$9
-- bgtz $6,.Loop
-+ bgtz $6,L(Loop)
- sd $8,-8($4)
-
--.Lend: dsrl $8,$10,$7
-+L(Lend): dsrl $8,$10,$7
- j $31
- sd $8,0($4)
- .end __mpn_rshift
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/setjmp.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/setjmp.S
---- glibc-2.3.2/sysdeps/mips/mips64/setjmp.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/setjmp.S Thu Mar 20 11:27:55 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 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
-@@ -17,6 +17,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* The function __sigsetjmp_aux saves all the registers, but it can't
- reliably access the stack or frame pointers, so we pass them in as
-@@ -26,10 +27,18 @@
- #endif
- ENTRY (__sigsetjmp)
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP
- #endif
-+ SETUP_GP64 (v0, C_SYMBOL_NAME (__sigsetjmp))
- move a2, sp
- move a3, fp
-- dla t9, __sigsetjmp_aux
-+ PTR_LA t9, __sigsetjmp_aux
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- nop
-+#endif
-+ RESTORE_GP64
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+ move a4, gp
-+#endif
- jr t9
-+ .end __sigsetjmp
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c glibc-2.3.2-200304020432/sysdeps/mips/mips64/setjmp_aux.c
---- glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/setjmp_aux.c Thu Mar 20 23:29:44 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -25,9 +25,11 @@
- access them in C. */
-
- int
--__sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
-+__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp,
-+ long long gp)
- {
- /* Store the floating point callee-saved registers... */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
- asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
- asm volatile ("s.d $f25, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
- asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
-@@ -36,6 +38,14 @@
- asm volatile ("s.d $f29, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
- asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[6]));
- asm volatile ("s.d $f31, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[7]));
-+#else
-+ asm volatile ("s.d $f20, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
-+ asm volatile ("s.d $f22, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
-+ asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
-+ asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[3]));
-+ asm volatile ("s.d $f28, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[4]));
-+ asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
-+#endif
-
- /* .. and the PC; */
- asm volatile ("sd $31, %0" : : "m" (env[0].__jmpbuf[0].__pc));
-@@ -47,7 +57,7 @@
- env[0].__jmpbuf[0].__fp = fp;
-
- /* .. and the GP; */
-- asm volatile ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
-+ env[0].__jmpbuf[0].__gp = gp;
-
- /* .. and the callee-saved registers; */
- asm volatile ("sd $16, %0" : : "m" (env[0].__jmpbuf[0].__regs[0]));
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h glibc-2.3.2-200304020432/sysdeps/mips/mips64/soft-fp/sfp-machine.h
---- glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h Tue Sep 5 10:37:09 2000
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/soft-fp/sfp-machine.h Mon Mar 17 16:47:12 2003
-@@ -1,7 +1,7 @@
- #define _FP_W_TYPE_SIZE 64
--#define _FP_W_TYPE unsigned long
--#define _FP_WS_TYPE signed long
--#define _FP_I_TYPE long
-+#define _FP_W_TYPE unsigned long long
-+#define _FP_WS_TYPE signed long long
-+#define _FP_I_TYPE long long
-
- #define _FP_MUL_MEAT_S(R,X,Y) \
- _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/sub_n.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/sub_n.S
---- glibc-2.3.2/sysdeps/mips/mips64/sub_n.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/sub_n.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- * store difference in a third limb vector.
- *
-- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +22,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +39,10 @@
- .globl __mpn_sub_n
- .ent __mpn_sub_n
- __mpn_sub_n:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- ld $10,0($5)
-@@ -49,12 +50,12 @@
-
- daddiu $7,$7,-1
- and $9,$7,4-1 # number of limbs in first loop
-- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
-+ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
- move $2,$0
-
- dsubu $7,$7,$9
-
--.Loop0: daddiu $9,$9,-1
-+L(Loop0): daddiu $9,$9,-1
- ld $12,8($5)
- daddu $11,$11,$2
- ld $13,8($6)
-@@ -68,13 +69,13 @@
- daddiu $6,$6,8
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- daddiu $4,$4,8
-
--.L0: beq $7,$0,.Lend
-+L(L0): beq $7,$0,L(Lend)
- nop
-
--.Loop: daddiu $7,$7,-4
-+L(Loop): daddiu $7,$7,-4
-
- ld $12,8($5)
- daddu $11,$11,$2
-@@ -115,10 +116,10 @@
- daddiu $5,$5,32
- daddiu $6,$6,32
-
-- bne $7,$0,.Loop
-+ bne $7,$0,L(Loop)
- daddiu $4,$4,32
-
--.Lend: daddu $11,$11,$2
-+L(Lend): daddu $11,$11,$2
- sltu $8,$11,$2
- dsubu $11,$10,$11
- sltu $2,$10,$11
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mips64/submul_1.S glibc-2.3.2-200304020432/sysdeps/mips/mips64/submul_1.S
---- glibc-2.3.2/sysdeps/mips/mips64/submul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mips64/submul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,8 @@
- /* MIPS3 __mpn_submul_1 -- Multiply a limb vector with a single limb and
- * subtract the product from a second limb vector.
- *
-- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
-+ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
-+ * Free Software Foundation, Inc.
- *
- * This file is part of the GNU MP Library.
- *
-@@ -22,6 +23,7 @@
- */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- /* INPUT PARAMETERS
- * res_ptr $4
-@@ -38,10 +40,10 @@
- .globl __mpn_submul_1
- .ent __mpn_submul_1
- __mpn_submul_1:
-- .set noreorder
- #ifdef __PIC__
-- .cpload t9
-+ SETUP_GP /* ??? unused */
- #endif
-+ .set noreorder
- .set nomacro
-
- # warm up phase 0
-@@ -52,14 +54,14 @@
- dmultu $8,$7
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 # zero cy2
-
- daddiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- ld $8,0($5) # load new s1 limb as early as possible
-
--Loop: ld $10,0($4)
-+L(Loop): ld $10,0($4)
- mflo $3
- mfhi $9
- daddiu $5,$5,8
-@@ -73,11 +75,11 @@
- daddu $2,$2,$10
- sd $3,0($4)
- daddiu $4,$4,8
-- bne $6,$0,Loop
-+ bne $6,$0,L(Loop)
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 1
--$LC1: ld $10,0($4)
-+L(LC1): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-@@ -91,7 +93,7 @@
- daddu $2,$9,$2 # add high product limb and carry from addition
-
- # cool down phase 0
--$LC0: ld $10,0($4)
-+L(LC0): ld $10,0($4)
- mflo $3
- mfhi $9
- daddu $3,$3,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h glibc-2.3.2-200304020432/sysdeps/mips/mipsel/bits/endian.h
---- glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h Wed Nov 26 04:53:00 1997
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mipsel/bits/endian.h Thu Jan 1 01:00:00 1970
-@@ -1,8 +0,0 @@
--/* The MIPS architecture has selectable endianness.
-- This file is for a machine using little-endian mode. */
--
--#ifndef _ENDIAN_H
--# error "Never use <bits/endian.h> directly; include <endian.h> instead."
--#endif
--
--#define __BYTE_ORDER __LITTLE_ENDIAN
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/mul_1.S glibc-2.3.2-200304020432/sysdeps/mips/mul_1.S
---- glibc-2.3.2/sysdeps/mips/mul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/mul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_mul_1 -- Multiply a limb vector with a single limb and
- store the product in a second limb vector.
-
--Copyright (C) 1995, 1998, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: mflo $10
-+L(Loop): mflo $10
- mfhi $9
- addiu $5,$5,4
- addu $10,$10,$2 /* add old carry limb to low product limb */
-@@ -63,11 +63,11 @@
- sltu $2,$10,$2 /* carry from previous addition -> $2 */
- sw $10,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: mflo $10
-+L(LC1): mflo $10
- mfhi $9
- addu $10,$10,$2
- sltu $2,$10,$2
-@@ -77,7 +77,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: mflo $10
-+L(LC0): mflo $10
- mfhi $9
- addu $10,$10,$2
- sltu $2,$10,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/rshift.S glibc-2.3.2-200304020432/sysdeps/mips/rshift.S
---- glibc-2.3.2/sysdeps/mips/rshift.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/rshift.S Fri Mar 14 04:59:37 2003
-@@ -1,6 +1,6 @@
- /* MIPS2 __mpn_rshift --
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -41,12 +41,12 @@
- subu $13,$0,$7
- addiu $6,$6,-1
- and $9,$6,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop*/
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop*/
- sll $2,$10,$13 /* compute function result */
-
- subu $6,$6,$9
-
--.Loop0: lw $3,4($5)
-+L(Loop0): lw $3,4($5)
- addiu $4,$4,4
- addiu $5,$5,4
- addiu $9,$9,-1
-@@ -54,13 +54,13 @@
- sll $12,$3,$13
- move $10,$3
- or $8,$11,$12
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- sw $8,-4($4)
-
--.L0: beq $6,$0,.Lend
-+L(L0): beq $6,$0,L(Lend)
- nop
-
--.Loop: lw $3,4($5)
-+L(Loop): lw $3,4($5)
- addiu $4,$4,16
- addiu $6,$6,-4
- srl $11,$10,$7
-@@ -86,10 +86,10 @@
-
- addiu $5,$5,16
- or $8,$14,$9
-- bgtz $6,.Loop
-+ bgtz $6,L(Loop)
- sw $8,-4($4)
-
--.Lend: srl $8,$10,$7
-+L(Lend): srl $8,$10,$7
- j $31
- sw $8,0($4)
- END (__mpn_rshift)
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/setjmp_aux.c glibc-2.3.2-200304020432/sysdeps/mips/setjmp_aux.c
---- glibc-2.3.2/sysdeps/mips/setjmp_aux.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/setjmp_aux.c Thu Mar 20 11:27:55 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/sgidefs.h glibc-2.3.2-200304020432/sysdeps/mips/sgidefs.h
---- glibc-2.3.2/sysdeps/mips/sgidefs.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/sgidefs.h Tue Mar 25 22:51:52 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -28,6 +28,8 @@
- #define _MIPS_ISA_MIPS3 3
- #define _MIPS_ISA_MIPS4 4
- #define _MIPS_ISA_MIPS5 5
-+#define _MIPS_ISA_MIPS32 6
-+#define _MIPS_ISA_MIPS64 7
-
- /*
- * Subprogram calling convention
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/sub_n.S glibc-2.3.2-200304020432/sysdeps/mips/sub_n.S
---- glibc-2.3.2/sysdeps/mips/sub_n.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/sub_n.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS2 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
- store difference in a third limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -43,12 +43,12 @@
-
- addiu $7,$7,-1
- and $9,$7,4-1 /* number of limbs in first loop */
-- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
-+ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
- move $2,$0
-
- subu $7,$7,$9
-
--.Loop0: addiu $9,$9,-1
-+L(Loop0): addiu $9,$9,-1
- lw $12,4($5)
- addu $11,$11,$2
- lw $13,4($6)
-@@ -62,13 +62,13 @@
- addiu $6,$6,4
- move $10,$12
- move $11,$13
-- bne $9,$0,.Loop0
-+ bne $9,$0,L(Loop0)
- addiu $4,$4,4
-
--.L0: beq $7,$0,.Lend
-+L(L0): beq $7,$0,L(Lend)
- nop
-
--.Loop: addiu $7,$7,-4
-+L(Loop): addiu $7,$7,-4
-
- lw $12,4($5)
- addu $11,$11,$2
-@@ -109,10 +109,10 @@
- addiu $5,$5,16
- addiu $6,$6,16
-
-- bne $7,$0,.Loop
-+ bne $7,$0,L(Loop)
- addiu $4,$4,16
-
--.Lend: addu $11,$11,$2
-+L(Lend): addu $11,$11,$2
- sltu $8,$11,$2
- subu $11,$10,$11
- sltu $2,$10,$11
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/submul_1.S glibc-2.3.2-200304020432/sysdeps/mips/submul_1.S
---- glibc-2.3.2/sysdeps/mips/submul_1.S Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/submul_1.S Fri Mar 14 04:59:37 2003
-@@ -1,7 +1,7 @@
- /* MIPS __mpn_submul_1 -- Multiply a limb vector with a single limb and
- subtract the product from a second limb vector.
-
--Copyright (C) 1995, 2000 Free Software Foundation, Inc.
-+Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -46,14 +46,14 @@
- multu $8,$7
-
- addiu $6,$6,-1
-- beq $6,$0,$LC0
-+ beq $6,$0,L(LC0)
- move $2,$0 /* zero cy2 */
-
- addiu $6,$6,-1
-- beq $6,$0,$LC1
-+ beq $6,$0,L(LC1)
- lw $8,0($5) /* load new s1 limb as early as possible */
-
--Loop: lw $10,0($4)
-+L(Loop): lw $10,0($4)
- mflo $3
- mfhi $9
- addiu $5,$5,4
-@@ -67,11 +67,11 @@
- addu $2,$2,$10
- sw $3,0($4)
- addiu $4,$4,4
-- bne $6,$0,Loop /* should be "bnel" */
-+ bne $6,$0,L(Loop) /* should be "bnel" */
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 1 */
--$LC1: lw $10,0($4)
-+L(LC1): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-@@ -85,7 +85,7 @@
- addu $2,$9,$2 /* add high product limb and carry from addition */
-
- /* cool down phase 0 */
--$LC0: lw $10,0($4)
-+L(LC0): lw $10,0($4)
- mflo $3
- mfhi $9
- addu $3,$3,$2
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/sys/asm.h glibc-2.3.2-200304020432/sysdeps/mips/sys/asm.h
---- glibc-2.3.2/sysdeps/mips/sys/asm.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/sys/asm.h Tue Mar 25 22:51:52 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -23,12 +23,12 @@
- #include <sgidefs.h>
-
- #ifndef CAT
--#ifdef __STDC__
--#define __CAT(str1,str2) str1##str2
--#else
--#define __CAT(str1,str2) str1/**/str2
--#endif
--#define CAT(str1,str2) __CAT(str1,str2)
-+# ifdef __STDC__
-+# define __CAT(str1,str2) str1##str2
-+# else
-+# define __CAT(str1,str2) str1/**/str2
-+# endif
-+# define CAT(str1,str2) __CAT(str1,str2)
- #endif
-
- /*
-@@ -37,25 +37,112 @@
- * 64 bit address space isn't used yet, so we may use the R3000 32 bit
- * defines for now.
- */
--#define PTR .word
--#define PTRSIZE 4
--#define PTRLOG 2
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define PTR .word
-+# define PTRSIZE 4
-+# define PTRLOG 2
-+#elif (_MIPS_SIM == _MIPS_SIM_ABI64)
-+# define PTR .dword
-+# define PTRSIZE 8
-+# define PTRLOG 3
-+#endif
-
- /*
- * PIC specific declarations
- */
--#ifdef __PIC__
--#define CPRESTORE(register) \
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32)
-+# ifdef __PIC__
-+# define CPRESTORE(register) \
- .cprestore register
--#define CPADD(register) \
-- .cpadd register
--#define CPLOAD(register) \
-+# define CPLOAD(register) \
- .cpload register
--#else
--#define CPRESTORE(register)
--#define CPADD(register)
--#define CPLOAD(register)
-+# else
-+# define CPRESTORE(register)
-+# define CPLOAD(register)
-+# endif
-+
-+# define CPADD(register) \
-+ .cpadd register
-+
-+/*
-+ * Set gp when at 1st instruction
-+ */
-+# define SETUP_GP \
-+ .set noreorder; \
-+ .cpload $25; \
-+ .set reorder
-+/* Set gp when not at 1st instruction */
-+# define SETUP_GPX(r) \
-+ .set noreorder; \
-+ move r, $31; /* Save old ra. */ \
-+ bal 10f; /* Find addr of cpload. */ \
-+ nop; \
-+10: \
-+ .cpload $31; \
-+ move $31, r; \
-+ .set reorder
-+# define SETUP_GPX_L(r, l) \
-+ .set noreorder; \
-+ move r, $31; /* Save old ra. */ \
-+ bal l; /* Find addr of cpload. */ \
-+ nop; \
-+l: \
-+ .cpload $31; \
-+ move $31, r; \
-+ .set reorder
-+# define SAVE_GP(x) \
-+ .cprestore x /* Save gp trigger t9/jalr conversion. */
-+# define SETUP_GP64(a, b)
-+# define SETUP_GPX64(a, b)
-+# define SETUP_GPX64_L(cp_reg, ra_save, l)
-+# define RESTORE_GP64
-+# define USE_ALT_CP(a)
-+#else /* (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32) */
-+/*
-+ * For callee-saved gp calling convention:
-+ */
-+# define SETUP_GP
-+# define SETUP_GPX(r)
-+# define SETUP_GPX_L(r, l)
-+# define SAVE_GP(x)
-+
-+# define SETUP_GP64(gpoffset, proc) \
-+ .cpsetup $25, gpoffset, proc
-+# define SETUP_GPX64(cp_reg, ra_save) \
-+ move ra_save, $31; /* Save old ra. */ \
-+ .set noreorder; \
-+ bal 10f; /* Find addr of .cpsetup. */ \
-+ nop; \
-+10: \
-+ .set reorder; \
-+ .cpsetup $31, cp_reg, 10b; \
-+ move $31, ra_save
-+# define SETUP_GPX64_L(cp_reg, ra_save, l) \
-+ move ra_save, $31; /* Save old ra. */ \
-+ .set noreorder; \
-+ bal l; /* Find addr of .cpsetup. */ \
-+ nop; \
-+l: \
-+ .set reorder; \
-+ .cpsetup $31, cp_reg, l; \
-+ move $31, ra_save
-+# define RESTORE_GP64 \
-+ .cpreturn
-+/* Use alternate register for context pointer. */
-+# define USE_ALT_CP(reg) \
-+ .cplocal reg
-+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
-+
-+/*
-+ * Stack Frame Definitions
-+ */
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32)
-+# define NARGSAVE 4 /* Space for 4 argument registers must be allocated. */
- #endif
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32)
-+# define NARGSAVE 0 /* No caller responsibilities. */
-+#endif
-+
-
- /*
- * LEAF - declare leaf routine
-@@ -80,9 +167,11 @@
- /*
- * END - mark end of function
- */
--#define END(function) \
-+#ifndef END
-+# define END(function) \
- .end function; \
- .size function,.-function
-+#endif
-
- /*
- * EXPORT - export definition of symbol
-@@ -141,28 +230,29 @@
- * MIPS IV implementations are free to treat this as a nop. The R5000
- * is one of them. So we should have an option not to use this instruction.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define PREF(hint,addr) \
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define PREF(hint,addr) \
- pref hint,addr
--#define PREFX(hint,addr) \
-+# define PREFX(hint,addr) \
- prefx hint,addr
- #else
--#define PREF
--#define PREFX
-+# define PREF
-+# define PREFX
- #endif
-
- /*
- * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
- */
- #if _MIPS_ISA == _MIPS_ISA_MIPS1
--#define MOVN(rd,rs,rt) \
-+# define MOVN(rd,rs,rt) \
- .set push; \
- .set reorder; \
- beqz rt,9f; \
- move rd,rs; \
- .set pop; \
- 9:
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- .set push; \
- .set reorder; \
- bnez rt,9f; \
-@@ -171,14 +261,14 @@
- 9:
- #endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
- #if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
--#define MOVN(rd,rs,rt) \
-+# define MOVN(rd,rs,rt) \
- .set push; \
- .set noreorder; \
- bnezl rt,9f; \
- move rd,rs; \
- .set pop; \
- 9:
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- .set push; \
- .set noreorder; \
- beqzl rt,9f; \
-@@ -186,192 +276,198 @@
- .set pop; \
- 9:
- #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define MOVN(rd,rs,rt) \
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define MOVN(rd,rs,rt) \
- movn rd,rs,rt
--#define MOVZ(rd,rs,rt) \
-+# define MOVZ(rd,rs,rt) \
- movz rd,rs,rt
- #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) */
-
- /*
- * Stack alignment
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define ALSZ 7
--#define ALMASK ~7
--#endif
--#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define ALSZ 15
--#define ALMASK ~15
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define ALSZ 15
-+# define ALMASK ~15
-+#else
-+# define ALSZ 7
-+# define ALMASK ~7
- #endif
-
- /*
- * Size of a register
- */
--#ifdef __mips64
--#define SZREG 8
-+#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
-+# define SZREG 8
- #else
--#define SZREG 4
-+# define SZREG 4
- #endif
-
- /*
- * Use the following macros in assemblercode to load/store registers,
- * pointers etc.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define REG_S sw
--#define REG_L lw
--#define PTR_SUBU subu
--#define PTR_ADDU addu
--#endif
--#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define REG_S sd
--#define REG_L ld
--/* We still live in a 32 bit address space ... */
--#define PTR_SUBU subu
--#define PTR_ADDU addu
-+#if (SZREG == 4)
-+# define REG_S sw
-+# define REG_L lw
-+#else
-+# define REG_S sd
-+# define REG_L ld
- #endif
-
- /*
- * How to add/sub/load/store/shift C int variables.
- */
- #if (_MIPS_SZINT == 32)
--#define INT_ADD add
--#define INT_ADDI addi
--#define INT_ADDU addu
--#define INT_ADDIU addiu
--#define INT_SUB add
--#define INT_SUBI subi
--#define INT_SUBU subu
--#define INT_SUBIU subu
--#define INT_L lw
--#define INT_S sw
--#define LONG_SLL sll
--#define LONG_SLLV sllv
--#define LONG_SRL srl
--#define LONG_SRLV srlv
--#define LONG_SRA sra
--#define LONG_SRAV srav
-+# define INT_ADD add
-+# define INT_ADDI addi
-+# define INT_ADDU addu
-+# define INT_ADDIU addiu
-+# define INT_SUB add
-+# define INT_SUBI subi
-+# define INT_SUBU subu
-+# define INT_SUBIU subu
-+# define INT_L lw
-+# define INT_S sw
- #endif
-
- #if (_MIPS_SZINT == 64)
--#define INT_ADD dadd
--#define INT_ADDI daddi
--#define INT_ADDU daddu
--#define INT_ADDIU daddiu
--#define INT_SUB dadd
--#define INT_SUBI dsubi
--#define INT_SUBU dsubu
--#define INT_SUBIU dsubu
--#define INT_L ld
--#define INT_S sd
--#define LONG_SLL dsll
--#define LONG_SLLV dsllv
--#define LONG_SRL dsrl
--#define LONG_SRLV dsrlv
--#define LONG_SRA dsra
--#define LONG_SRAV dsrav
-+# define INT_ADD dadd
-+# define INT_ADDI daddi
-+# define INT_ADDU daddu
-+# define INT_ADDIU daddiu
-+# define INT_SUB dadd
-+# define INT_SUBI dsubi
-+# define INT_SUBU dsubu
-+# define INT_SUBIU dsubu
-+# define INT_L ld
-+# define INT_S sd
- #endif
-
- /*
- * How to add/sub/load/store/shift C long variables.
- */
- #if (_MIPS_SZLONG == 32)
--#define LONG_ADD add
--#define LONG_ADDI addi
--#define LONG_ADDU addu
--#define LONG_ADDIU addiu
--#define LONG_SUB add
--#define LONG_SUBI subi
--#define LONG_SUBU subu
--#define LONG_SUBIU subu
--#define LONG_L lw
--#define LONG_S sw
--#define LONG_SLL sll
--#define LONG_SLLV sllv
--#define LONG_SRL srl
--#define LONG_SRLV srlv
--#define LONG_SRA sra
--#define LONG_SRAV srav
-+# define LONG_ADD add
-+# define LONG_ADDI addi
-+# define LONG_ADDU addu
-+# define LONG_ADDIU addiu
-+# define LONG_SUB add
-+# define LONG_SUBI subi
-+# define LONG_SUBU subu
-+# define LONG_SUBIU subu
-+# define LONG_L lw
-+# define LONG_S sw
-+# define LONG_SLL sll
-+# define LONG_SLLV sllv
-+# define LONG_SRL srl
-+# define LONG_SRLV srlv
-+# define LONG_SRA sra
-+# define LONG_SRAV srav
- #endif
-
- #if (_MIPS_SZLONG == 64)
--#define LONG_ADD dadd
--#define LONG_ADDI daddi
--#define LONG_ADDU daddu
--#define LONG_ADDIU daddiu
--#define LONG_SUB dadd
--#define LONG_SUBI dsubi
--#define LONG_SUBU dsubu
--#define LONG_SUBIU dsubu
--#define LONG_L ld
--#define LONG_S sd
--#define LONG_SLL dsll
--#define LONG_SLLV dsllv
--#define LONG_SRL dsrl
--#define LONG_SRLV dsrlv
--#define LONG_SRA dsra
--#define LONG_SRAV dsrav
-+# define LONG_ADD dadd
-+# define LONG_ADDI daddi
-+# define LONG_ADDU daddu
-+# define LONG_ADDIU daddiu
-+# define LONG_SUB dadd
-+# define LONG_SUBI dsubi
-+# define LONG_SUBU dsubu
-+# define LONG_SUBIU dsubu
-+# define LONG_L ld
-+# define LONG_S sd
-+# define LONG_SLL dsll
-+# define LONG_SLLV dsllv
-+# define LONG_SRL dsrl
-+# define LONG_SRLV dsrlv
-+# define LONG_SRA dsra
-+# define LONG_SRAV dsrav
- #endif
-
- /*
- * How to add/sub/load/store/shift pointers.
- */
--#if (_MIPS_SZLONG == 32)
--#define PTR_ADD add
--#define PTR_ADDI addi
--#define PTR_ADDU addu
--#define PTR_ADDIU addiu
--#define PTR_SUB add
--#define PTR_SUBI subi
--#define PTR_SUBU subu
--#define PTR_SUBIU subu
--#define PTR_L lw
--#define PTR_S sw
--#define PTR_SLL sll
--#define PTR_SLLV sllv
--#define PTR_SRL srl
--#define PTR_SRLV srlv
--#define PTR_SRA sra
--#define PTR_SRAV srav
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32)
-+# define PTR_ADD add
-+# define PTR_ADDI addi
-+# define PTR_ADDU addu
-+# define PTR_ADDIU addiu
-+# define PTR_SUB add
-+# define PTR_SUBI subi
-+# define PTR_SUBU subu
-+# define PTR_SUBIU subu
-+# define PTR_L lw
-+# define PTR_LA la
-+# define PTR_S sw
-+# define PTR_SLL sll
-+# define PTR_SLLV sllv
-+# define PTR_SRL srl
-+# define PTR_SRLV srlv
-+# define PTR_SRA sra
-+# define PTR_SRAV srav
-
--#define PTR_SCALESHIFT 2
-+# define PTR_SCALESHIFT 2
- #endif
-
--#if (_MIPS_SZLONG == 64)
--#define PTR_ADD dadd
--#define PTR_ADDI daddi
--#define PTR_ADDU daddu
--#define PTR_ADDIU daddiu
--#define PTR_SUB dadd
--#define PTR_SUBI dsubi
--#define PTR_SUBU dsubu
--#define PTR_SUBIU dsubu
--#define PTR_L ld
--#define PTR_S sd
--#define PTR_SLL dsll
--#define PTR_SLLV dsllv
--#define PTR_SRL dsrl
--#define PTR_SRLV dsrlv
--#define PTR_SRA dsra
--#define PTR_SRAV dsrav
-+#if _MIPS_SIM == _MIPS_SIM_NABI32
-+# define PTR_ADD add
-+# define PTR_ADDI addi
-+# define PTR_ADDU add /* no u */
-+# define PTR_ADDIU addi /* no u */
-+# define PTR_SUB add
-+# define PTR_SUBI subi
-+# define PTR_SUBU sub /* no u */
-+# define PTR_SUBIU sub /* no u */
-+# define PTR_L lw
-+# define PTR_LA la
-+# define PTR_S sw
-+# define PTR_SLL sll
-+# define PTR_SLLV sllv
-+# define PTR_SRL srl
-+# define PTR_SRLV srlv
-+# define PTR_SRA sra
-+# define PTR_SRAV srav
-
--#define PTR_SCALESHIFT 3
-+# define PTR_SCALESHIFT 2
-+#endif
-+
-+#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 64 /* o64??? */) \
-+ || _MIPS_SIM == _MIPS_SIM_ABI64
-+# define PTR_ADD dadd
-+# define PTR_ADDI daddi
-+# define PTR_ADDU daddu
-+# define PTR_ADDIU daddiu
-+# define PTR_SUB dadd
-+# define PTR_SUBI dsubi
-+# define PTR_SUBU dsubu
-+# define PTR_SUBIU dsubu
-+# define PTR_L ld
-+# define PTR_LA dla
-+# define PTR_S sd
-+# define PTR_SLL dsll
-+# define PTR_SLLV dsllv
-+# define PTR_SRL dsrl
-+# define PTR_SRLV dsrlv
-+# define PTR_SRA dsra
-+# define PTR_SRAV dsrav
-+
-+# define PTR_SCALESHIFT 3
- #endif
-
- /*
- * Some cp0 registers were extended to 64bit for MIPS III.
- */
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
--#define MFC0 mfc0
--#define MTC0 mtc0
-+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2) || \
-+ (_MIPS_ISA == _MIPS_ISA_MIPS32)
-+# define MFC0 mfc0
-+# define MTC0 mtc0
- #endif
- #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
-- (_MIPS_ISA == _MIPS_ISA_MIPS5)
--#define MFC0 dmfc0
--#define MTC0 dmtc0
-+ (_MIPS_ISA == _MIPS_ISA_MIPS5) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
-+# define MFC0 dmfc0
-+# define MTC0 dmtc0
- #endif
-
- #endif /* sys/asm.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/sys/regdef.h glibc-2.3.2-200304020432/sysdeps/mips/sys/regdef.h
---- glibc-2.3.2/sysdeps/mips/sys/regdef.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/sys/regdef.h Fri Mar 14 06:31:28 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>.
-
-@@ -31,10 +31,17 @@
- #define a1 $5
- #define a2 $6
- #define a3 $7
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+#define a4 $8
-+#define a5 $9
-+#define a6 $10
-+#define a7 $11
-+#else /* if _MIPS_SIM == _MIPS_SIM_ABI32 */
- #define t0 $8 /* caller saved */
- #define t1 $9
- #define t2 $10
- #define t3 $11
-+#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
- #define t4 $12
- #define t5 $13
- #define t6 $14
-diff -u -udbrN glibc-2.3.2/sysdeps/mips/sys/ucontext.h glibc-2.3.2-200304020432/sysdeps/mips/sys/ucontext.h
---- glibc-2.3.2/sysdeps/mips/sys/ucontext.h Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/mips/sys/ucontext.h Mon Mar 17 16:47:12 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 1999, 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
-@@ -25,7 +25,11 @@
- #include <signal.h>
-
- /* Type for general register. */
--typedef unsigned int greg_t;
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
-+typedef __uint32_t greg_t;
-+#else
-+typedef __uint64_t greg_t;
-+#endif
-
- /* Number of general registers. */
- #define NGREG 36
-@@ -115,9 +119,15 @@
- {
- union
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- double fp_dregs[16];
- float fp_fregs[32];
- unsigned int fp_regs[32];
-+#else
-+ double fp_dregs[32];
-+ /* float fp_fregs[32]; */
-+ __uint64_t fp_regs[32];
-+#endif
- } fp_r;
- unsigned int fp_csr;
- unsigned int fp_pad;
-@@ -133,12 +143,16 @@
- /* Userlevel context. */
- typedef struct ucontext
- {
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- unsigned long int uc_flags;
-+#else
-+ __uint64_t uc_flags;
-+#endif
- struct ucontext *uc_link;
- __sigset_t uc_sigmask;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
-- long int uc_filler[48];
-+ int uc_filler[48];
- } ucontext_t;
-
- #endif /* sys/ucontext.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/posix/clock_getres.c glibc-2.3.2-200304020432/sysdeps/posix/clock_getres.c
---- glibc-2.3.2/sysdeps/posix/clock_getres.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/posix/clock_getres.c Mon Mar 3 05:43:57 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2000, 2001, 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
-@@ -24,7 +24,7 @@
- #include <libc-internal.h>
-
-
--#if HP_TIMING_AVAIL
-+#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
- /* Clock frequency of the processor. */
- static long int nsec;
- #endif
-@@ -38,24 +38,33 @@
-
- switch (clock_id)
- {
-- case CLOCK_REALTIME:
-- {
-- long int clk_tck = sysconf (_SC_CLK_TCK);
-+#define HANDLE_REALTIME \
-+ do { \
-+ long int clk_tck = sysconf (_SC_CLK_TCK); \
-+ \
-+ if (__builtin_expect (clk_tck != -1, 1)) \
-+ { \
-+ /* This implementation assumes that the realtime clock has a \
-+ resolution higher than 1 second. This is the case for any \
-+ reasonable implementation. */ \
-+ res->tv_sec = 0; \
-+ res->tv_nsec = 1000000000 / clk_tck; \
-+ \
-+ retval = 0; \
-+ } \
-+ } while (0)
-
-- if (__builtin_expect (clk_tck != -1, 1))
-- {
-- /* This implementation assumes that the realtime clock has a
-- resolution higher than 1 second. This is the case for any
-- reasonable implementation. */
-- res->tv_sec = 0;
-- res->tv_nsec = 1000000000 / clk_tck;
-+#ifdef SYSDEP_GETRES
-+ SYSDEP_GETRES;
-+#endif
-
-- retval = 0;
-- }
-- }
-+#ifndef HANDLED_REALTIME
-+ case CLOCK_REALTIME:
-+ HANDLE_REALTIME;
- break;
-+#endif /* handled REALTIME */
-
--#if HP_TIMING_AVAIL
-+#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
- case CLOCK_PROCESS_CPUTIME_ID:
- case CLOCK_THREAD_CPUTIME_ID:
- {
-diff -u -udbrN glibc-2.3.2/sysdeps/posix/fpathconf.c glibc-2.3.2-200304020432/sysdeps/posix/fpathconf.c
---- glibc-2.3.2/sysdeps/posix/fpathconf.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/posix/fpathconf.c Fri Mar 14 07:22:16 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,2000,2001,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
-@@ -229,6 +230,10 @@
- /* In general there are no limits. If a system has one it should
- overwrite this case. */
- return -1;
-+
-+ case _PC_2_SYMLINKS:
-+ /* Unix systems generally have symlinks. */
-+ return 1;
- }
- }
-
-diff -u -udbrN glibc-2.3.2/sysdeps/posix/pathconf.c glibc-2.3.2-200304020432/sysdeps/posix/pathconf.c
---- glibc-2.3.2/sysdeps/posix/pathconf.c Sat Jul 7 21:21:27 2001
-+++ glibc-2.3.2-200304020432/sysdeps/posix/pathconf.c Fri Mar 14 07:22:16 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1991,1995,1996,1998,2000,2001,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
-@@ -225,6 +226,10 @@
- /* In general there are no limits. If a system has one it should
- overwrite this case. */
- return -1;
-+
-+ case _PC_2_SYMLINKS:
-+ /* Unix systems generally have symlinks. */
-+ return 1;
- }
- }
-
-diff -u -udbrN glibc-2.3.2/sysdeps/posix/sysconf.c glibc-2.3.2-200304020432/sysdeps/posix/sysconf.c
---- glibc-2.3.2/sysdeps/posix/sysconf.c Mon Feb 17 23:45:41 2003
-+++ glibc-2.3.2-200304020432/sysdeps/posix/sysconf.c Wed Mar 19 00:49:45 2003
-@@ -938,7 +938,7 @@
- #endif
-
- case _SC_MONOTONIC_CLOCK:
--#ifdef _POSIX_MONOTONIC_CLOCK
-+#if _POSIX_MONOTONIC_CLOCK
- return _POSIX_MONOTONIC_CLOCK;
- #else
- return -1;
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/powerpc/bits/atomic.h
---- glibc-2.3.2/sysdeps/powerpc/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/bits/atomic.h Fri Mar 28 08:17:02 2003
-@@ -0,0 +1,267 @@
-+/* Atomic operations. PowerPC version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#ifdef UP
-+# define __ARCH_ACQ_INSTR ""
-+# define __ARCH_REL_INSTR ""
-+#else
-+# define __ARCH_ACQ_INSTR "isync"
-+# define __ARCH_REL_INSTR "sync"
-+#endif
-+
-+/*
-+ * XXX At present these have both acquire and release semantics.
-+ * Ultimately we should do separate _acq and _rel versions.
-+ */
-+
-+#ifdef __powerpc64__
-+
-+/*
-+ * The 32-bit exchange_bool is different on powerpc64 because the subf
-+ * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
-+ * (a load word and zero (high 32) form).
-+ * In powerpc64 register values are 64-bit by default, including oldval.
-+ * Net we need to extend sign word the result of lwarx to 64-bit so the
-+ * 64-bit subtract from gives the expected result and sets the condition
-+ * correctly.
-+ */
-+# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%1\n" \
-+ " extsw %0,%0\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+({ \
-+ unsigned long __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stdcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_atomic_exchange_64(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: ldarx %0,0,%2\n" \
-+ " stdcx. %3,0,%2\n" \
-+ " bne- 1b" \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+# define __arch_atomic_exchange_and_add_64(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val, __tmp; \
-+ __asm __volatile ("1: ldarx %0,0,%3\n" \
-+ " add %1,%0,%4\n" \
-+ " stdcx. %1,0,%3\n" \
-+ " bne- 1b" \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "2" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+# define __arch_atomic_decrement_if_positive_64(mem) \
-+ ({ int __val, __tmp; \
-+ __asm __volatile ("1: ldarx %0,0,%3\n" \
-+ " cmpdi 0,%0,0\n" \
-+ " addi %1,%0,-1\n" \
-+ " ble 2f\n" \
-+ " stdcx. %1,0,%3\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "2" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+#else /* powerpc32 */
-+# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-+({ \
-+ unsigned int __tmp; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%1\n" \
-+ " subf. %0,%2,%0\n" \
-+ " bne 2f\n" \
-+ " stwcx. %3,0,%1\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&r" (__tmp) \
-+ : "b" (mem), "r" (oldval), "r" (newval) \
-+ : "cr0", "memory"); \
-+ __tmp != 0; \
-+})
-+
-+# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+# define __arch_atomic_exchange_64(mem, value) \
-+ ({ abort (); (*mem) = (value); })
-+# define __arch_atomic_exchange_and_add_64(mem, value) \
-+ ({ abort (); (*mem) = (value); })
-+# define __arch_atomic_decrement_if_positive_64(mem) \
-+ ({ abort (); (*mem)--; })
-+#endif
-+
-+#define __arch_atomic_exchange_32(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val; \
-+ __asm __volatile (__ARCH_REL_INSTR "\n" \
-+ "1: lwarx %0,0,%2\n" \
-+ " stwcx. %3,0,%2\n" \
-+ " bne- 1b" \
-+ : "=&r" (__val), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "1" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+#define __arch_atomic_exchange_and_add_32(mem, value) \
-+ ({ \
-+ __typeof (*mem) __val, __tmp; \
-+ __asm __volatile ("1: lwarx %0,0,%3\n" \
-+ " add %1,%0,%4\n" \
-+ " stwcx. %1,0,%3\n" \
-+ " bne- 1b" \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "r" (value), "2" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+#define __arch_atomic_decrement_if_positive_32(mem) \
-+ ({ int __val, __tmp; \
-+ __asm __volatile ("1: lwarx %0,0,%3\n" \
-+ " cmpwi 0,%0,0\n" \
-+ " addi %1,%0,-1\n" \
-+ " ble 2f\n" \
-+ " stwcx. %1,0,%3\n" \
-+ " bne- 1b\n" \
-+ "2: " __ARCH_ACQ_INSTR \
-+ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
-+ : "b" (mem), "2" (*mem) \
-+ : "cr0"); \
-+ __val; \
-+ })
-+
-+
-+#define atomic_exchange(mem, value) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_exchange_32 ((mem), (value)); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_exchange_64 ((mem), (value)); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ \
-+ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_exchange_and_add_32 ((mem), (value)); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_exchange_and_add_64 ((mem), (value)); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+
-+/* Decrement *MEM if it is > 0, and return the old value. */
-+#define atomic_decrement_if_positive(mem) \
-+ ({ __typeof (*(mem)) __result; \
-+ if (sizeof (*mem) == 4) \
-+ __result = __arch_atomic_decrement_if_positive_32 (mem); \
-+ else if (sizeof (*mem) == 8) \
-+ __result = __arch_atomic_decrement_if_positive_64 (mem); \
-+ else \
-+ abort (); \
-+ __result; \
-+ })
-+
-+
-+#define atomic_full_barrier() __asm ("sync" ::: "memory")
-+#ifdef __powerpc64__
-+# define atomic_read_barrier() __asm ("lwsync" ::: "memory")
-+#else
-+# define atomic_read_barrier() __asm ("sync" ::: "memory")
-+#endif
-+#define atomic_write_barrier() __asm ("eieio" ::: "memory")
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/dl-tls.h glibc-2.3.2-200304020432/sysdeps/powerpc/dl-tls.h
---- glibc-2.3.2/sysdeps/powerpc/dl-tls.h Fri Feb 28 05:54:53 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/dl-tls.h Sun Mar 2 12:41:46 2003
-@@ -25,19 +25,25 @@
- unsigned long int ti_offset;
- } tls_index;
-
--
--#ifdef SHARED
--
--extern void *__tls_get_addr (tls_index *ti);
--
- /* The thread pointer points 0x7000 past the first static TLS block. */
--# define TLS_TP_OFFSET 0x7000
-+#define TLS_TP_OFFSET 0x7000
-
- /* Dynamic thread vector pointers point 0x8000 past the start of each
- TLS block. */
--# define TLS_DTV_OFFSET 0x8000
-+#define TLS_DTV_OFFSET 0x8000
-+
-+/* Compute the value for a @tprel reloc. */
-+#define TLS_TPREL_VALUE(sym_map, sym, reloc) \
-+ ((sym_map)->l_tls_offset + (sym)->st_value + (reloc)->r_addend \
-+ - TLS_TCB_SIZE - TLS_TP_OFFSET)
-+
-+/* Compute the value for a @dtprel reloc. */
-+#define TLS_DTPREL_VALUE(sym, reloc) \
-+ ((sym)->st_value + (reloc)->r_addend - TLS_DTV_OFFSET)
-+
-+#ifdef SHARED
-+extern void *__tls_get_addr (tls_index *ti);
-
- # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
- # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
--
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c glibc-2.3.2-200304020432/sysdeps/powerpc/elf/libc-start.c
---- glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c Wed Feb 26 00:40:09 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/elf/libc-start.c Sun Mar 16 00:09:18 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998,2000,2001,2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1998,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
-@@ -22,31 +22,9 @@
- #include <bp-start.h>
- #include <bp-sym.h>
-
--extern void __libc_init_first (int argc, char **argv, char **envp);
--
- extern int __cache_line_size;
- weak_extern (__cache_line_size)
-
--extern int __libc_multiple_libcs;
--extern void *__libc_stack_end;
--
--#ifndef SHARED
--# include <tls.h>
--extern void __pthread_initialize_minimal (void)
--# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-- __attribute__ ((weak))
--# endif
-- ;
--#endif
--
--struct startup_info
--{
-- void *__unbounded sda_base;
-- int (*main) (int, char **, char **, void *);
-- int (*init) (int, char **, char **, void *);
-- void (*fini) (void);
--};
--
- /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
- verify that the static extern __cache_line_size is defined by checking
- for not NULL. If it is defined then assign the cache block size
-@@ -66,6 +44,24 @@
- break;
- }
- }
-+/* This is used in sysdeps/generic/libc-start.c. */
-+#define AUX_VECTOR_INIT __aux_init_cache
-+
-+/* The main work is done in the generic function. */
-+#define LIBC_START_MAIN generic_start_main
-+#define LIBC_START_MAIN_AUXVEC_ARG
-+#define MAIN_AUXVEC_ARG
-+#define INIT_MAIN_ARGS
-+#include <sysdeps/generic/libc-start.c>
-+
-+
-+struct startup_info
-+{
-+ void *__unbounded sda_base;
-+ int (*main) (int, char **, char **, void *);
-+ int (*init) (int, char **, char **, void *);
-+ void (*fini) (void);
-+};
-
-
- int
-@@ -73,7 +69,8 @@
- BPs in the arglist of startup_info.main and startup_info.init. */
- BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
- char *__unbounded *__unbounded ubp_ev,
-- ElfW(auxv_t) *__unbounded auxvec, void (*rtld_fini) (void),
-+ ElfW(auxv_t) *__unbounded auxvec,
-+ void (*rtld_fini) (void),
- struct startup_info *__unbounded stinfo,
- char *__unbounded *__unbounded stack_on_entry)
- {
-@@ -83,15 +80,6 @@
- # define argv ubp_av
- #endif
-
--#ifndef SHARED
-- /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
-- If the address would be taken inside the expression the optimizer
-- would try to be too smart and throws it away. Grrr. */
-- int *dummy_addr = &_dl_starting_up;
--
-- __libc_multiple_libcs = dummy_addr && !_dl_starting_up;
--#endif
--
- /* the PPC SVR4 ABI says that the top thing on the stack will
- be a NULL pointer, so if not we assume that we're being called
- as a statically-linked program by Linux... */
-@@ -110,78 +98,14 @@
- while (*temp != NULL)
- ++temp;
- auxvec = (ElfW(auxv_t) *)++temp;
--
--# ifndef SHARED
-- _dl_aux_init (auxvec);
--# endif
- #endif
- rtld_fini = NULL;
- }
-
-- INIT_ARGV_and_ENVIRON;
--
- /* Initialize the __cache_line_size variable from the aux vector. */
-- __aux_init_cache(auxvec);
--
-- /* Store something that has some relationship to the end of the
-- stack, for backtraces. This variable should be thread-specific.
-- Use +8 so it works for both 32- and 64-bit. */
-- __libc_stack_end = stack_on_entry + 8;
--
--#ifndef SHARED
--# ifdef DL_SYSDEP_OSCHECK
-- if (!__libc_multiple_libcs)
-- {
-- /* This needs to run to initiliaze _dl_osversion before TLS
-- setup might check it. */
-- DL_SYSDEP_OSCHECK (__libc_fatal);
-- }
--# endif
-- /* Initialize the thread library at least a bit since the libgcc
-- functions are using thread functions if these are available and
-- we need to setup errno. If there is no thread library and we
-- handle TLS the function is defined in the libc to initialized the
-- TLS handling. */
--# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
-- if (__pthread_initialize_minimal)
--# endif
-- __pthread_initialize_minimal ();
--
-- /* Some security at this point. Prevent starting a SUID binary where
-- the standard file descriptors are not opened. We have to do this
-- only for statically linked applications since otherwise the dynamic
-- loader did the work already. */
-- if (__builtin_expect (__libc_enable_secure, 0))
-- __libc_check_standard_fds ();
--#endif
--
-- /* Register the destructor of the dynamic linker if there is any. */
-- if (rtld_fini != NULL)
-- __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
--
-- /* Call the initializer of the libc. */
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ninitialize libc\n\n");
--#endif
-- __libc_init_first (argc, argv, __environ);
--
-- /* Register the destructor of the program, if any. */
-- if (stinfo->fini)
-- __cxa_atexit ((void (*) (void *)) stinfo->fini, NULL, NULL);
--
-- /* Call the initializer of the program, if any. */
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
--#endif
-- if (stinfo->init)
-- stinfo->init (argc, argv, __environ, auxvec);
--
--#ifdef SHARED
-- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
-- _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);
--#endif
-+ __aux_init_cache (auxvec);
-
-- exit (stinfo->main (argc, argv, __environ, auxvec));
-+ return generic_start_main (stinfo->main, argc, ubp_av, auxvec,
-+ stinfo->init, stinfo->fini, rtld_fini,
-+ stack_on_entry);
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/powerpc/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps Tue Sep 3 00:15:28 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -91,7 +91,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -104,10 +104,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -142,7 +142,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -236,7 +236,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -255,7 +255,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -263,7 +263,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -437,12 +437,12 @@
- ifloat: 1
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -497,7 +497,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c glibc-2.3.2-200304020432/sysdeps/powerpc/fpu/w_sqrt.c
---- glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c Tue May 14 22:46:17 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/fpu/w_sqrt.c Fri Mar 7 22:18:23 2003
-@@ -1,5 +1,5 @@
--/* Single-precision floating point square root.
-- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
-+/* Double-precision floating point square root.
-+ Copyright (C) 1997, 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
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/powerpc/nofpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps Sat Oct 19 22:06:29 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/nofpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/atomicity.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h Thu Feb 20 23:11:52 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,98 +0,0 @@
--/* Low-level functions for atomic operations. PowerPC version.
-- Copyright (C) 1997, 1998, 1999, 2000 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: lwarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stwcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stwcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- sub%I2c. %0,%0,%2 \n\
-- cntlzw %0,%0 \n\
-- bne- 1f \n\
-- stwcx. %3,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
-- return result >> 5;
--}
--
--static inline long int
--__attribute__ ((unused))
--always_swap (volatile long int *p, long int newval)
--{
-- long int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- stwcx. %2,0,%1 \n\
-- bne- 0b \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--static inline int
--__attribute__ ((unused))
--test_and_set (volatile long int *p, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- cmpwi %0,0 \n\
-- bne- 1f \n\
-- stwcx. %2,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/dl-machine.c
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c Thu Nov 21 20:09:30 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/dl-machine.c Mon Mar 3 02:04:53 2003
-@@ -1,5 +1,5 @@
- /* Machine-dependent ELF dynamic relocation functions. PowerPC version.
-- Copyright (C) 1995-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -368,8 +368,8 @@
- return finaladdr;
- }
-
--static void
--dl_reloc_overflow (struct link_map *map,
-+void
-+_dl_reloc_overflow (struct link_map *map,
- const char *name,
- Elf32_Addr *const reloc_addr,
- const Elf32_Sym *sym,
-@@ -423,19 +423,19 @@
-
- case R_PPC_ADDR24:
- if (__builtin_expect (finaladdr > 0x01fffffc && finaladdr < 0xfe000000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym);
- *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
- break;
-
- case R_PPC_ADDR16:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
- *(Elf32_Half*) reloc_addr = finaladdr;
- break;
-
- case R_PPC_UADDR16:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, sym, refsym);
- ((char *) reloc_addr)[0] = finaladdr >> 8;
- ((char *) reloc_addr)[1] = finaladdr;
- break;
-@@ -456,7 +456,7 @@
- case R_PPC_ADDR14_BRTAKEN:
- case R_PPC_ADDR14_BRNTAKEN:
- if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
-- dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym);
- *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
- if (rinfo != R_PPC_ADDR14)
- *reloc_addr = ((*reloc_addr & 0xffdfffff)
-@@ -468,7 +468,7 @@
- {
- Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
- if (delta << 6 >> 6 != delta)
-- dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, sym, refsym);
-+ _dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, sym, refsym);
- *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
- }
- break;
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/dl-machine.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h Thu Jan 30 21:25:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/dl-machine.h Fri Mar 28 01:31:50 2003
-@@ -23,6 +23,7 @@
- #define ELF_MACHINE_NAME "powerpc"
-
- #include <assert.h>
-+#include <dl-tls.h>
-
- /* Return nonzero iff ELF header is compatible with the running host. */
- static inline int
-@@ -275,11 +276,21 @@
- /* We never want to use a PLT entry as the destination of a
- reloc, when what is being relocated is a branch. This is
- partly for efficiency, but mostly so we avoid loops. */
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
- #define elf_machine_type_class(type) \
- ((((type) == R_PPC_JMP_SLOT \
- || (type) == R_PPC_REL24 \
-+ || ((type) >= R_PPC_DTPMOD32 /* contiguous TLS */ \
-+ && (type) <= R_PPC_DTPREL32) \
- || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
-+#else
-+#define elf_machine_type_class(type) \
-+ ((((type) == R_PPC_JMP_SLOT \
-+ || (type) == R_PPC_REL24 \
-+ || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
-+ | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
-+#endif
-
- /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
- #define ELF_MACHINE_JMP_SLOT R_PPC_JMP_SLOT
-@@ -329,7 +340,14 @@
- const Elf32_Sym *refsym,
- Elf32_Addr *const reloc_addr,
- Elf32_Addr finaladdr,
-- int rinfo);
-+ int rinfo) attribute_hidden;
-+
-+/* Call _dl_signal_error when a resolved value overflows a relocated area. */
-+extern void _dl_reloc_overflow (struct link_map *map,
-+ const char *name,
-+ Elf32_Addr *const reloc_addr,
-+ const Elf32_Sym *sym,
-+ const Elf32_Sym *refsym) attribute_hidden;
-
- /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
- LOADADDR is the load address of the object; INFO is an array indexed
-@@ -341,44 +359,40 @@
- Elf32_Addr *const reloc_addr)
- {
- const Elf32_Sym *const refsym = sym;
-- Elf32_Word finaladdr;
-- const int rinfo = ELF32_R_TYPE (reloc->r_info);
--
--#ifndef RESOLVE_CONFLICT_FIND_MAP
-- if (__builtin_expect (rinfo == R_PPC_NONE, 0))
-- return;
-+ Elf32_Addr value;
-+ const int r_type = ELF32_R_TYPE (reloc->r_info);
-+#if defined USE_TLS && !defined RTLD_BOOTSTRAP
-+ struct link_map *sym_map;
-+#endif
-
-- /* The condition on the next two lines is a hack around a bug in Solaris
-- tools on Sparc. It's not clear whether it should really be here at all,
-- but if not the binutils need to be changed. */
-- if (rinfo == R_PPC_RELATIVE
-- || (sym->st_shndx != SHN_UNDEF
-- && ELF32_ST_BIND (sym->st_info) == STB_LOCAL))
-+ if (r_type == R_PPC_RELATIVE)
- {
-- /* Has already been relocated. */
-- Elf32_Word loadbase = map->l_addr;
-- finaladdr = loadbase + reloc->r_addend;
-+ *reloc_addr = map->l_addr + reloc->r_addend;
-+ return;
- }
-+
-+ if (__builtin_expect (r_type == R_PPC_NONE, 0))
-+ return;
-+
-+ /* binutils on ppc32 includes st_value in r_addend for relocations
-+ against local symbols. */
-+ if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)
-+ && sym->st_shndx != SHN_UNDEF)
-+ value = map->l_addr;
- else
- {
-- Elf32_Word loadbase
-- = (Elf32_Word) (char *) (RESOLVE (&sym, version,
-- ELF32_R_TYPE(reloc->r_info)));
-- if (sym == NULL)
-- {
-- /* Weak symbol that wasn't actually defined anywhere. */
-- assert (loadbase == 0);
-- finaladdr = reloc->r_addend;
-- }
-- else
-- finaladdr = (loadbase + (Elf32_Word) (char *) sym->st_value
-- + reloc->r_addend);
-- }
-+#if defined USE_TLS && !defined RTLD_BOOTSTRAP
-+ sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
- #else
-- finaladdr = reloc->r_addend;
-- if (rinfo == R_PPC_JMP_SLOT)
-- RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-+ value = RESOLVE (&sym, version, r_type);
-+# ifndef RTLD_BOOTSTRAP
-+ if (sym != NULL)
-+# endif
-+ value += sym->st_value;
- #endif
-+ }
-+ value += reloc->r_addend;
-
- /* A small amount of code is duplicated here for speed. In libc,
- more than 90% of the relocs are R_PPC_RELATIVE; in the X11 shared
-@@ -386,15 +400,90 @@
- R_PPC_ADDR32, and 16% are R_PPC_JMP_SLOT (which this routine
- wouldn't usually handle). As an bonus, doing this here allows
- the switch statement in __process_machine_rela to work. */
-- if (rinfo == R_PPC_RELATIVE
-- || rinfo == R_PPC_GLOB_DAT
-- || rinfo == R_PPC_ADDR32)
-+ switch (r_type)
- {
-- *reloc_addr = finaladdr;
-+ case R_PPC_GLOB_DAT:
-+ case R_PPC_ADDR32:
-+ *reloc_addr = value;
-+ break;
-+
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+ case R_PPC_DTPMOD32:
-+# ifdef RTLD_BOOTSTRAP
-+ /* During startup the dynamic linker is always index 1. */
-+ *reloc_addr = 1;
-+# else
-+ /* Get the information from the link map returned by the
-+ RESOLVE_MAP function. */
-+ if (sym_map != NULL)
-+ *reloc_addr = sym_map->l_tls_modid;
-+# endif
-+ break;
-+
-+# ifdef RTLD_BOOTSTRAP
-+# define NOT_BOOTSTRAP 0
-+# else
-+# define NOT_BOOTSTRAP 1
-+# endif
-+# define DO_TLS_RELOC(suffix) \
-+ case R_PPC_DTPREL##suffix: \
-+ /* During relocation all TLS symbols are defined and used. \
-+ Therefore the offset is already correct. */ \
-+ if (NOT_BOOTSTRAP) \
-+ do_reloc##suffix ("R_PPC_DTPREL"#suffix, \
-+ TLS_DTPREL_VALUE (sym, reloc)); \
-+ break; \
-+ case R_PPC_TPREL##suffix: \
-+ if (!NOT_BOOTSTRAP || sym_map) \
-+ { \
-+ if (NOT_BOOTSTRAP) \
-+ CHECK_STATIC_TLS (map, sym_map); \
-+ do_reloc##suffix ("R_PPC_TPREL"#suffix, \
-+ TLS_TPREL_VALUE (sym_map, sym, reloc)); \
-+ } \
-+ break;
-+
-+ inline void do_reloc32 (const char *r_name, Elf32_Addr value)
-+ {
-+ *reloc_addr = value;
- }
-- else
-+ DO_TLS_RELOC (32)
-+# ifndef RTLD_BOOTSTRAP /* PIC code like ld.so doesn't use these. */
-+ inline void do_reloc16 (const char *r_name, Elf32_Addr value)
-+ {
-+ if (__builtin_expect (value > 0x7fff && value < 0xffff8000, 0))
-+ _dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
-+ *(Elf32_Half *) reloc_addr = value;
-+ }
-+ inline void do_reloc16_LO (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = value;
-+ }
-+ inline void do_reloc16_HI (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = value >> 16;
-+ }
-+ inline void do_reloc16_HA (const char *r_name, Elf32_Addr value)
-+ {
-+ *(Elf32_Half *) reloc_addr = (value + 0x8000) >> 16;
-+ }
-+ DO_TLS_RELOC (16)
-+ DO_TLS_RELOC (16_LO)
-+ DO_TLS_RELOC (16_HI)
-+ DO_TLS_RELOC (16_HA)
-+# endif
-+#endif /* USE_TLS etc. */
-+
-+#ifdef RESOLVE_CONFLICT_FIND_MAP
-+ case R_PPC_JMP_SLOT:
-+ RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-+ /* FALLTHROUGH */
-+#endif
-+
-+ default:
- __process_machine_rela (map, reloc, sym, refsym,
-- reloc_addr, finaladdr, rinfo);
-+ reloc_addr, value, r_type);
-+ }
- }
-
- static inline void
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/elf/configure
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/elf/configure Mon Mar 3 22:20:51 2003
-@@ -0,0 +1,52 @@
-+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-+ # Local configure fragment for sysdeps/powerpc32/elf.
-+
-+if test "$usetls" != no; then
-+# Check for support of thread-local storage handling in assembler and
-+# linker.
-+echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
-+echo $ECHO_N "checking for powerpc32 TLS support... $ECHO_C" >&6
-+if test "${libc_cv_powerpc32_tls+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.s <<\EOF
-+ .section ".tdata","awT",@progbits
-+x: .long 1
-+x1: .long 1
-+x2: .long 1
-+ .text
-+ addi 3,31,x@got@tlsgd
-+ addi 3,31,x1@got@tlsld
-+ addi 9,3,x1@dtprel
-+ addis 9,3,x2@dtprel@ha
-+ addi 9,9,x2@dtprel@l
-+ lwz 0,x1@dtprel(3)
-+ addis 9,3,x2@dtprel@ha
-+ lwz 0,x2@dtprel@l(9)
-+ lwz 9,x3@got@tprel(31)
-+ add 9,9,x@tls
-+ addi 9,2,x1@tprel
-+ addis 9,2,x2@tprel@ha
-+ addi 9,9,x2@tprel@l
-+EOF
-+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-+ { (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
-+ libc_cv_powerpc32_tls=yes
-+else
-+ libc_cv_powerpc32_tls=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
-+echo "${ECHO_T}$libc_cv_powerpc32_tls" >&6
-+if test $libc_cv_powerpc32_tls = yes; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_TLS_SUPPORT 1
-+_ACEOF
-+
-+fi
-+fi
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/elf/configure.in
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/elf/configure.in Mon Mar 3 22:20:51 2003
-@@ -0,0 +1,38 @@
-+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-+# Local configure fragment for sysdeps/powerpc32/elf.
-+
-+if test "$usetls" != no; then
-+# Check for support of thread-local storage handling in assembler and
-+# linker.
-+AC_CACHE_CHECK(for powerpc32 TLS support, libc_cv_powerpc32_tls, [dnl
-+cat > conftest.s <<\EOF
-+ .section ".tdata","awT",@progbits
-+x: .long 1
-+x1: .long 1
-+x2: .long 1
-+ .text
-+ addi 3,31,x@got@tlsgd
-+ addi 3,31,x1@got@tlsld
-+ addi 9,3,x1@dtprel
-+ addis 9,3,x2@dtprel@ha
-+ addi 9,9,x2@dtprel@l
-+ lwz 0,x1@dtprel(3)
-+ addis 9,3,x2@dtprel@ha
-+ lwz 0,x2@dtprel@l(9)
-+ lwz 9,x3@got@tprel(31)
-+ add 9,9,x@tls
-+ addi 9,2,x1@tprel
-+ addis 9,2,x2@tprel@ha
-+ addi 9,9,x2@tprel@l
-+EOF
-+dnl
-+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+ libc_cv_powerpc32_tls=yes
-+else
-+ libc_cv_powerpc32_tls=no
-+fi
-+rm -f conftest*])
-+if test $libc_cv_powerpc32_tls = yes; then
-+ AC_DEFINE(HAVE_TLS_SUPPORT)
-+fi
-+fi
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/memset.S
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S Fri Aug 23 21:46:49 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/memset.S Sun Mar 16 00:09:14 2003
-@@ -1,5 +1,5 @@
- /* Optimized memset implementation for PowerPC.
-- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -27,13 +27,8 @@
- variable. */
-
- .globl __cache_line_size
-- .section ".data","aw"
-- .align 2
-- .type __cache_line_size,@object
-- .size __cache_line_size,4
--__cache_line_size:
-- .long 0
-- .section ".text"
-+ .lcomm __cache_line_size,4,4
-+
- /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
- Returns 's'.
-
-@@ -42,6 +37,7 @@
- There is a special case for setting whole cache lines to 0, which
- takes advantage of the dcbz instruction. */
-
-+ .section ".text"
- EALIGN (BP_SYM (memset), 5, 1)
-
- #define rTMP r0
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/sysdep.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h Thu Feb 20 21:26:54 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc32/sysdep.h Sun Mar 23 20:42:22 2003
-@@ -131,6 +131,19 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_NOERRNO \
-+ blr
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- /* Local labels stripped out by the linker. */
- #undef L
- #define L(x) .L##x
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/atomicity.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h Wed Sep 18 01:50:02 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,132 +0,0 @@
--/* Low-level functions for atomic operations. PowerPC64 version.
-- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Library General Public License as
-- published by the Free Software Foundation; either version 2 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
-- Library General Public License for more details.
--
-- You should have received a copy of the GNU Library General Public
-- License along with the GNU C 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. */
--
--#ifndef _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--#if BROKEN_PPC_ASM_CR0
--# define __ATOMICITY_INLINE /* nothing */
--#else
--# define __ATOMICITY_INLINE inline
--#endif
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: lwarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stwcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE void
--__attribute__ ((unused))
--atomic_add_long (volatile long *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stdcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--exchange_and_add_long (volatile long *mem, int val)
--{
-- int tmp, result;
-- __asm__ ("\n\
--0: ldarx %0,0,%2 \n\
-- add%I3 %1,%0,%3 \n\
-- stdcx. %1,0,%2 \n\
-- bne- 0b \n\
--" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- int tmp;
-- __asm__ ("\n\
--0: lwarx %0,0,%1 \n\
-- add%I2 %0,%0,%2 \n\
-- stwcx. %0,0,%1 \n\
-- bne- 0b \n\
--" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
--}
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- sub%I2c. %0,%0,%2 \n\
-- cntlzw %0,%0 \n\
-- bne- 1f \n\
-- stdcx. %3,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
-- return result >> 5;
--}
--
--static __ATOMICITY_INLINE long int
--__attribute__ ((unused))
--always_swap (volatile long int *p, long int newval)
--{
-- long int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- stdcx. %2,0,%1 \n\
-- bne- 0b \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--static __ATOMICITY_INLINE int
--__attribute__ ((unused))
--test_and_set (volatile long int *p, long int newval)
--{
-- int result;
-- __asm__ ("\n\
--0: ldarx %0,0,%1 \n\
-- cmpdi %0,0 \n\
-- bne- 1f \n\
-- stdcx. %2,0,%1 \n\
-- bne- 0b \n\
--1: \n\
--" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
-- return result;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/dl-machine.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h Sat Mar 1 01:06:31 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/dl-machine.h Wed Mar 12 08:45:07 2003
-@@ -26,6 +26,7 @@
-
- #include <assert.h>
- #include <sys/param.h>
-+#include <dl-tls.h>
-
- /* Translate a processor specific dynamic tag to the index
- in l_info array. */
-@@ -331,9 +332,8 @@
-
- #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
- #define elf_machine_type_class(type) \
-- ( (((type) == R_PPC64_DTPMOD64 \
-- || (type) == R_PPC64_DTPREL64 \
-- || (type) == R_PPC64_TPREL64 \
-+ /* This covers all the TLS relocs, though most won't appear. */ \
-+ (((((type) >= R_PPC64_DTPMOD64 && (type) <= R_PPC64_TPREL16_HIGHESTA) \
- || (type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
- | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
- #else
-@@ -472,9 +472,6 @@
- Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
- Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
- Elf64_Addr offset = 0;
--#ifndef RTLD_BOOTSTRAP
-- weak_extern (GL(dl_rtld_map));
--#endif
-
- /* If sym_map is NULL, it's a weak undefined sym; Leave the plt zero. */
- if (sym_map == NULL)
-@@ -483,7 +480,7 @@
- /* If the opd entry is not yet relocated (because it's from a shared
- object that hasn't been processed yet), then manually reloc it. */
- if (map != sym_map && !sym_map->l_relocated
--#ifndef RTLD_BOOTSTRAP
-+#if !defined RTLD_BOOTSTRAP && defined SHARED
- /* Bootstrap map doesn't have l_relocated set for it. */
- && sym_map != &GL(dl_rtld_map)
- #endif
-@@ -528,7 +525,8 @@
- #define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000)
- #define PPC_HIGHEST(v) (((v) >> 48) & 0xffff)
- #define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000)
--#define BIT_INSERT(old, val, mask) ((old & ~(Elf64_Addr) mask) | (val & mask))
-+#define BIT_INSERT(var, val, mask) \
-+ ((var) = ((var) & ~(Elf64_Addr) (mask)) | ((val) & (mask)))
-
- #define dont_expect(X) __builtin_expect ((X), 0)
-
-@@ -546,6 +544,27 @@
- *reloc_addr = l_addr + reloc->r_addend;
- }
-
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+/* This computes the value used by TPREL* relocs. */
-+static Elf64_Addr __attribute__ ((const))
-+elf_machine_tprel (struct link_map *map,
-+ struct link_map *sym_map,
-+ const Elf64_Sym *sym,
-+ const Elf64_Rela *reloc)
-+{
-+# ifndef RTLD_BOOTSTRAP
-+ if (sym_map)
-+ {
-+ CHECK_STATIC_TLS (map, sym_map);
-+# endif
-+ return TLS_TPREL_VALUE (sym_map, sym, reloc);
-+# ifndef RTLD_BOOTSTRAP
-+ }
-+# endif
-+ return 0;
-+}
-+#endif
-+
- /* Perform the relocation specified by RELOC and SYM (which is fully
- resolved). MAP is the object containing the reloc. */
- static inline void
-@@ -555,9 +574,7 @@
- const struct r_found_version *version,
- Elf64_Addr *const reloc_addr)
- {
-- int r_type = ELF64_R_TYPE (reloc->r_info);
-- struct link_map *sym_map;
-- Elf64_Addr value, raw_value;
-+ const int r_type = ELF64_R_TYPE (reloc->r_info);
- #ifndef RTLD_BOOTSTRAP
- const Elf64_Sym *const refsym = sym;
- #endif
-@@ -568,17 +585,16 @@
- return;
- }
-
-- if (r_type == R_PPC64_NONE)
-+ if (__builtin_expect (r_type == R_PPC64_NONE, 0))
- return;
-
-- sym_map = RESOLVE_MAP (&sym, version, r_type);
-- value = raw_value = reloc->r_addend;
-- if (sym_map)
-- {
-- raw_value += sym->st_value;
-- value = raw_value + sym_map->l_addr;
-- }
-+ /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt. */
-+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ Elf64_Addr value = ((sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value)
-+ + reloc->r_addend);
-
-+ /* For relocs that don't edit code, return.
-+ For relocs that might edit instructions, break from the switch. */
- switch (r_type)
- {
- case R_PPC64_ADDR64:
-@@ -586,58 +602,40 @@
- *reloc_addr = value;
- return;
-
--#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
-+ case R_PPC64_JMP_SLOT:
-+#ifdef RESOLVE_CONFLICT_FIND_MAP
-+ RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-+#endif
-+ elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
-+ return;
-
-+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
- case R_PPC64_DTPMOD64:
--#ifdef RTLD_BOOTSTRAP
-+# ifdef RTLD_BOOTSTRAP
- /* During startup the dynamic linker is always index 1. */
- *reloc_addr = 1;
--#else
-+# else
- /* Get the information from the link map returned by the
- resolve function. */
- if (sym_map != NULL)
- *reloc_addr = sym_map->l_tls_modid;
--#endif
-- return;
--
-- case R_PPC64_TPREL64:
--#ifdef RTLD_BOOTSTRAP
-- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
-- + raw_value - TLS_TP_OFFSET);
--#else
-- if (sym_map)
-- {
-- CHECK_STATIC_TLS (map, sym_map);
-- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
-- + raw_value - TLS_TP_OFFSET);
-- }
--#endif
-+# endif
- return;
-
- case R_PPC64_DTPREL64:
--#ifndef RTLD_BOOTSTRAP
- /* During relocation all TLS symbols are defined and used.
- Therefore the offset is already correct. */
-- *reloc_addr = raw_value - TLS_DTV_OFFSET;
--#endif
-+# ifndef RTLD_BOOTSTRAP
-+ *reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
-+# endif
- return;
--#endif
--
-- case R_PPC64_JMP_SLOT:
-
-- elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
-+ case R_PPC64_TPREL64:
-+ *reloc_addr = elf_machine_tprel (map, sym_map, sym, reloc);
- return;
-
--#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
-- case R_PPC64_ADDR16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
- case R_PPC64_TPREL16_LO_DS:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
- if (dont_expect ((value & 3) != 0))
- _dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS",
- reloc_addr, sym, refsym);
-@@ -645,63 +643,86 @@
- value, 0xfffc);
- break;
-
-- case R_PPC64_DTPREL16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-+ case R_PPC64_TPREL16_DS:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-+ _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr,
-+ sym, refsym);
- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
- value, 0xfffc);
- break;
-
-- case R_PPC64_GOT_TPREL16_LO_DS:
-- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_LO_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ case R_PPC64_TPREL16:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ if (dont_expect ((value + 0x8000) >= 0x10000))
-+ _dl_reloc_overflow (map, "R_PPC64_TPREL16", reloc_addr,
-+ sym, refsym);
-+ *(Elf64_Half *) reloc_addr = PPC_LO (value);
- break;
-
-- case R_PPC64_GOT_DTPREL16_LO_DS:
-+ case R_PPC64_TPREL16_LO:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_LO (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HI:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HI (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HA (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHER:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHEST:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHERA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
-+ break;
-+
-+ case R_PPC64_TPREL16_HIGHESTA:
-+ value = elf_machine_tprel (map, sym_map, sym, reloc);
-+ *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
-+ break;
-+#endif /* USE_TLS etc. */
-+
-+#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
-+ case R_PPC64_ADDR16_LO_DS:
- if (dont_expect ((value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_LO_DS",
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS",
- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
- break;
-
- case R_PPC64_ADDR16_LO:
-- case R_PPC64_TPREL16_LO:
-- case R_PPC64_DTPREL16_LO:
-- case R_PPC64_GOT_TLSGD16_LO:
-- case R_PPC64_GOT_TLSLD16_LO:
- *(Elf64_Half *) reloc_addr = PPC_LO (value);
- break;
-
- case R_PPC64_ADDR16_HI:
-- case R_PPC64_TPREL16_HI:
-- case R_PPC64_DTPREL16_HI:
-- case R_PPC64_GOT_TPREL16_HI:
-- case R_PPC64_GOT_DTPREL16_HI:
-- case R_PPC64_GOT_TLSGD16_HI:
-- case R_PPC64_GOT_TLSLD16_HI:
- *(Elf64_Half *) reloc_addr = PPC_HI (value);
- break;
-
- case R_PPC64_ADDR16_HA:
-- case R_PPC64_TPREL16_HA:
-- case R_PPC64_DTPREL16_HA:
-- case R_PPC64_GOT_TLSGD16_HA:
-- case R_PPC64_GOT_TLSLD16_HA:
- *(Elf64_Half *) reloc_addr = PPC_HA (value);
- break;
-
-- case R_PPC64_REL24:
-+ case R_PPC64_ADDR30:
- {
- Elf64_Addr delta = value - (Elf64_Xword) reloc_addr;
-- if (dont_expect ((delta + 0x2000000) >= 0x4000000 || (delta & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_REL24", reloc_addr, sym, refsym);
-- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
-- delta, 0x3fffffc);
-+ if (dont_expect ((delta + 0x80000000) >= 0x10000000
-+ || (delta & 3) != 0))
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR30", reloc_addr, sym, refsym);
-+ BIT_INSERT (*(Elf64_Word *) reloc_addr, delta, 0xfffffffc);
- }
- break;
-
-@@ -744,11 +765,16 @@
- ((char *) reloc_addr)[3] = (value >> 0) & 0xff;
- return;
-
-+ case R_PPC64_ADDR32:
-+ if (dont_expect ((value + 0x80000000) >= 0x10000000))
-+ _dl_reloc_overflow (map, "R_PPC64_ADDR32", reloc_addr, sym, refsym);
-+ *(Elf64_Word *) reloc_addr = value;
-+ return;
-+
- case R_PPC64_ADDR24:
- if (dont_expect ((value + 0x2000000) >= 0x4000000 || (value & 3) != 0))
- _dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, sym, refsym);
-- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
-- value, 0x3fffffc);
-+ BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0x3fffffc);
- break;
-
- case R_PPC64_ADDR16:
-@@ -768,63 +794,22 @@
- case R_PPC64_ADDR16_DS:
- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
- _dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_TPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_DTPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_GOT_TPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_DS", reloc_addr,
-- sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-- break;
--
-- case R_PPC64_GOT_DTPREL16_DS:
-- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_DS",
-- reloc_addr, sym, refsym);
-- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
-- value, 0xfffc);
-+ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
- break;
-
- case R_PPC64_ADDR16_HIGHER:
-- case R_PPC64_TPREL16_HIGHER:
-- case R_PPC64_DTPREL16_HIGHER:
- *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
- break;
-
- case R_PPC64_ADDR16_HIGHEST:
-- case R_PPC64_TPREL16_HIGHEST:
-- case R_PPC64_DTPREL16_HIGHEST:
- *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
- break;
-
- case R_PPC64_ADDR16_HIGHERA:
-- case R_PPC64_TPREL16_HIGHERA:
-- case R_PPC64_DTPREL16_HIGHERA:
- *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
- break;
-
- case R_PPC64_ADDR16_HIGHESTA:
-- case R_PPC64_TPREL16_HIGHESTA:
-- case R_PPC64_DTPREL16_HIGHESTA:
- *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
- break;
-
-@@ -832,10 +817,10 @@
- case R_PPC64_ADDR14_BRTAKEN:
- case R_PPC64_ADDR14_BRNTAKEN:
- {
-- Elf64_Word insn;
- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
- _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, sym, refsym);
-- insn = BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0xfffc);
-+ Elf64_Word insn = *(Elf64_Word *) reloc_addr;
-+ BIT_INSERT (insn, value, 0xfffc);
- if (r_type != R_PPC64_ADDR14)
- {
- insn &= ~(1 << 21);
-@@ -851,7 +836,11 @@
- break;
-
- case R_PPC64_REL32:
-- *(Elf64_Word *) reloc_addr = value - (Elf64_Xword) reloc_addr;
-+ *(Elf64_Word *) reloc_addr = value - (Elf64_Addr) reloc_addr;
-+ return;
-+
-+ case R_PPC64_REL64:
-+ *reloc_addr = value - (Elf64_Addr) reloc_addr;
- return;
- #endif /* !RTLD_BOOTSTRAP */
-
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/elf/configure
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure Wed Feb 26 00:41:08 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/elf/configure Wed Mar 12 22:39:43 2003
-@@ -70,7 +70,3 @@
- fi
- fi
-
--cat >>confdefs.h <<\_ACEOF
--#define PI_STATIC_AND_HIDDEN 1
--_ACEOF
--
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/elf/configure.in
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in Wed Feb 26 00:26:57 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/elf/configure.in Wed Mar 12 22:39:43 2003
-@@ -56,6 +56,3 @@
- fi
- fi
-
--dnl It is always possible to access static and hidden symbols in an
--dnl position independent way.
--AC_DEFINE(PI_STATIC_AND_HIDDEN)
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/memcpy.S
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/memcpy.S Tue Mar 18 23:58:31 2003
-@@ -0,0 +1,210 @@
-+/* Optimized memcpy implementation for PowerPC64.
-+ Copyright (C) 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>
-+#include <bp-sym.h>
-+#include <bp-asm.h>
-+
-+/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-+ Returns 'dst'.
-+
-+ Memcpy handles short copies (< 32-bytes) using an unaligned
-+ word lwz/stw loop. The tail (remaining 1-3) bytes is handled with the
-+ appropriate combination of byte and halfword load/stores. There is no
-+ attempt to optimize the alignment of short moves. The 64-bit
-+ implementations of POWER3 and POWER4 do a reasonable job of handling
-+ unligned load/stores that do not cross 32-byte boundries.
-+
-+ Longer moves (>= 32-bytes) justify the effort to get at least the
-+ destination doubleword (8-byte) aligned. Further optimization is
-+ posible when both source and destination are doubleword aligned.
-+ Each case has a optimized unrolled loop. */
-+
-+EALIGN (BP_SYM (memcpy), 5, 0)
-+ cmpldi cr1,5,31
-+ neg 0,3
-+ std 30,-16(1)
-+ std 31,-8(1)
-+ rldicl. 0,0,0,61
-+ mr 12,4
-+ mr 31,5
-+ mr 30,3
-+ ble- cr1,.L2
-+ subf 31,0,5
-+
-+ /* Move 0-7 bytes as needed to get the destination doubleword alligned. */
-+ beq 0f
-+ mtcrf 0x01,0
-+1: bf 31,2f
-+ lbz 6,0(12)
-+ addi 12,12,1
-+ stb 6,0(3)
-+ addi 3,3,1
-+2: bf 30,4f
-+ lhz 6,0(12)
-+ addi 12,12,2
-+ sth 6,0(3)
-+ addi 3,3,2
-+4: bf 29,0f
-+ lwz 6,0(12)
-+ addi 12,12,4
-+ stw 6,0(3)
-+ addi 3,3,4
-+0:
-+ /* Copy doublewords from source to destination, assumpting the
-+ destination is aligned on a doubleword boundary.
-+
-+ First verify that there is > 7 bytes to copy and check if the source
-+ is also doubleword aligned. If there are < 8 bytes to copy fall
-+ through to the tail byte copy code. Otherwise if the source and
-+ destination are both doubleword aligned use an optimized doubleword
-+ copy loop. Otherwise the source has a different alignment and we use
-+ a load, shift, store strategy. */
-+ rldicl. 0,12,0,61
-+ cmpldi cr6,31,7
-+ ble- cr6,.L2 /* less than 8 bytes left. */
-+ bne- 0,.L6 /* Source is not DW aligned. */
-+ srdi. 9,31,3
-+ mr 10,3
-+ mr 11,12
-+
-+ /* Move doublewords where destination and source are aligned.
-+ Use a unrolled loop to copy 4 doubleword (32-bytes) per iteration.
-+ If the remainder is >0 and < 32 bytes copy 1-3 doublewords. */
-+ cmpldi cr1,9,4
-+ beq 0f
-+ mtcrf 0x01,9
-+ blt cr1,2f
-+ ld 6,0(11)
-+ .align 4
-+4:
-+ ld 7,8(11)
-+ addi 9,9,-4
-+ std 6,0(10)
-+ ld 6,16(11)
-+ std 7,8(10)
-+ ld 7,24(11)
-+ addi 11,11,32
-+ cmpldi cr1,9,4
-+ std 6,16(10)
-+ blt cr1,3f
-+ ld 6,0(11)
-+ std 7,24(10)
-+ addi 10,10,32
-+ b 4b
-+3: std 7,24(10)
-+ addi 10,10,32
-+2: bf 30,1f
-+ ld 6,0(11)
-+ ld 7,8(11)
-+ addi 11,11,16
-+ std 6,0(10)
-+ std 7,8(10)
-+ addi 10,10,16
-+1: bf 31,0f
-+ ld 6,0(11)
-+ addi 11,11,8
-+ std 6,0(10)
-+ addi 10,10,8
-+0:
-+
-+.L8:
-+ rldicr 0,31,0,60
-+ rldicl 31,31,0,61
-+ add 3,3,0
-+ add 12,12,0
-+
-+ /* Copy the tail for up to 31 bytes. If this is the tail of a longer
-+ copy then the destination will be aligned and the length will be
-+ less than 8. So it is normally not worth the set-up overhead to
-+ get doubleword aligned and do doubleword load/store. */
-+.L2:
-+ mr. 10,31
-+ cmpldi cr1,31,4
-+ beq 0f
-+ mtcrf 0x01,31
-+ blt cr1,2f
-+4: lwz 6,0(12)
-+ addi 12,12,4
-+ addi 10,10,-4
-+ stw 6,0(3)
-+ cmpldi cr1,10,4
-+ addi 3,3,4
-+ bge cr1,4b
-+2: bf 30,1f
-+ lhz 6,0(12)
-+ addi 12,12,2
-+ sth 6,0(3)
-+ addi 3,3,2
-+1: bf 31,0f
-+ lbz 6,0(12)
-+ addi 12,12,1
-+ stb 6,0(3)
-+ addi 3,3,1
-+0:
-+ /* Return original dst pointer. */
-+ ld 31,-8(1)
-+ mr 3,30
-+ ld 30,-16(1)
-+ blr
-+
-+.L6:
-+ srdi 11,31,3
-+ mr 4,3
-+ mr 5,12
-+
-+ /* Copy doublewords where the destination is aligned but the source is
-+ not. Use aligned doubleword loads from the source, shifted to realign
-+ the data, to allow aligned destination stores. */
-+ andi. 10,5,7
-+ andi. 0,11,1
-+ subf 5,10,5
-+ ld 6,0(5)
-+ sldi 10,10,3
-+ ld 7,8(5)
-+ subfic 9,10,64
-+ beq 2f
-+ sld 0,6,10
-+ addi 11,11,-1
-+ mr 6,7
-+ addi 4,4,-8
-+ cmpldi 11,0
-+ b 1f
-+2: addi 5,5,8
-+ .align 4
-+0: sld 0,6,10
-+ srd 8,7,9
-+ addi 11,11,-2
-+ ld 6,8(5)
-+ or 0,0,8
-+ cmpldi 11,0
-+ std 0,0(4)
-+ sld 0,7,10
-+1: srd 8,6,9
-+ or 0,0,8
-+ beq 8f
-+ ld 7,16(5)
-+ std 0,8(4)
-+ addi 5,5,16
-+ addi 4,4,16
-+ b 0b
-+8:
-+ std 0,8(4)
-+ b .L8
-+END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS)
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/memset.S
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S Wed Sep 18 01:50:02 2002
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/memset.S Sun Mar 16 00:09:13 2003
-@@ -1,5 +1,5 @@
- /* Optimized memset implementation for PowerPC64.
-- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1999, 2000, 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
-@@ -26,12 +26,7 @@
- to obtain the value set by the kernel and store it into this
- variable. */
- .globl __cache_line_size
-- .section ".data"
-- .align 2
-- .type __cache_line_size,@object
-- .size __cache_line_size,4
--__cache_line_size:
-- .long 0
-+ .lcomm __cache_line_size,4,4
- .section ".toc","aw"
- .LC0:
- .tc __cache_line_size[TC],__cache_line_size
-@@ -293,4 +288,3 @@
- END_GEN_TB (BP_SYM (__bzero),TB_TOCLESS)
-
- weak_alias (BP_SYM (__bzero), BP_SYM (bzero))
--
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/sysdep.h
---- glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h Sun Jan 12 09:09:45 2003
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/powerpc64/sysdep.h Mon Mar 24 19:45:27 2003
-@@ -225,6 +225,20 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .section ".text"; \
-+ ENTRY (name) \
-+ DO_CALL (SYS_ify (syscall_name));
-+
-+#define PSEUDO_RET_NOERRNO \
-+ blr
-+
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- /* Label in text section. */
- /* ppc64 function descriptors which requires . notation */
- #define C_TEXT(name) .##name
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/test-arith.c glibc-2.3.2-200304020432/sysdeps/powerpc/test-arith.c
---- glibc-2.3.2/sysdeps/powerpc/test-arith.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/test-arith.c Fri Jul 6 06:56:01 2001
-@@ -0,0 +1,605 @@
-+/* Test floating-point arithmetic operations.
-+ Copyright (C) 1997, 1998 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 _GNU_SOURCE
-+#define _GNU_SOURCE
-+#endif
-+#include <math.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <fenv.h>
-+#include <assert.h>
-+
-+#ifndef ESIZE
-+typedef double tocheck_t;
-+#define ESIZE 11
-+#define MSIZE 52
-+#define FUNC(x) x
-+#endif
-+
-+#define R_NEAREST 1
-+#define R_ZERO 2
-+#define R_UP 4
-+#define R_DOWN 8
-+#define R_ALL (R_NEAREST|R_ZERO|R_UP|R_DOWN)
-+static fenv_t rmodes[4];
-+static const char * const rmnames[4] =
-+{ "nearest","zero","+Inf","-Inf" };
-+
-+typedef union {
-+ tocheck_t tc;
-+ unsigned char c[sizeof(tocheck_t)];
-+} union_t;
-+
-+/* Don't try reading these in a font that doesn't distinguish
-+ O and zero. */
-+typedef enum {
-+ P_Z = 0x0, /* 00000...0 */
-+ P_000O = 0x1, /* 00011...1 */
-+ P_001Z = 0x2, /* 00100...0 */
-+ P_00O = 0x3, /* 00111...1 */
-+ P_01Z = 0x4, /* 01000...0 */
-+ P_010O = 0x5, /* 01011...1 */
-+ P_011Z = 0x6, /* 01100...0 */
-+ P_0O = 0x7, /* 01111...1 */
-+ P_1Z = 0x8, /* 10000...0 */
-+ P_100O = 0x9, /* 10011...1 */
-+ P_101Z = 0xa, /* 10100...0 */
-+ P_10O = 0xb, /* 10111...1 */
-+ P_11Z = 0xc, /* 11000...0 */
-+ P_110O = 0xd, /* 11011...1 */
-+ P_111Z = 0xe, /* 11100...0 */
-+ P_O = 0xf, /* 11111...1 */
-+ P_Z1 = 0x11, /* 000...001 */
-+ P_Z10 = 0x12, /* 000...010 */
-+ P_Z11 = 0x13, /* 000...011 */
-+ P_0O00 = 0x14, /* 011...100 */
-+ P_0O01 = 0x15, /* 011...101 */
-+ P_0O0 = 0x16, /* 011...110 */
-+ P_1Z1 = 0x19, /* 100...001 */
-+ P_1Z10 = 0x1a, /* 100...010 */
-+ P_1Z11 = 0x1b, /* 100...011 */
-+ P_O00 = 0x1c, /* 111...100 */
-+ P_O01 = 0x1d, /* 111...101 */
-+ P_O0 = 0x1e, /* 111...110 */
-+ P_R = 0x20, /* rrr...rrr */ /* ('r' means random. ) */
-+ P_Ro = 0x21, /* rrr...rrr, with odd parity. */
-+ P_0R = 0x22, /* 0rr...rrr */
-+ P_1R = 0x23, /* 1rr...rrr */
-+ P_Rno = 0x24, /* rrr...rrr, but not all ones. */
-+} pattern_t;
-+
-+static void
-+pattern_fill(pattern_t ptn, unsigned char *start, int bitoffset, int count)
-+{
-+#define bitset(count, value) \
-+ start[(count)/8] = (start[(count)/8] & ~(1 << 7-(count)%8) \
-+ | (value) << 7-(count)%8)
-+ int i;
-+
-+ if (ptn >= 0 && ptn <= 0xf)
-+ {
-+ /* Patterns between 0 and 0xF have the following format:
-+ The LSBit is used to fill the last n-3 bits of the pattern;
-+ The next 3 bits are the first 3 bits of the pattern. */
-+ for (i = 0; i < count; i++)
-+ if (i < 3)
-+ bitset((bitoffset+i), ptn >> (3-i) & 1);
-+ else
-+ bitset((bitoffset+i), ptn >> 0 & 1);
-+ }
-+ else if (ptn <= 0x1f)
-+ {
-+ /* Patterns between 0x10 and 0x1F have the following format:
-+ The two LSBits are the last two bits of the pattern;
-+ The 0x8 bit is the first bit of the pattern;
-+ The 0x4 bit is used to fill the remainder. */
-+ for (i = 0; i < count; i++)
-+ if (i == 0)
-+ bitset((bitoffset+i), ptn >> 3 & 1);
-+ else if (i >= count-2)
-+ bitset((bitoffset+i), ptn >> (count-1-i) & 1);
-+ else
-+ bitset((bitoffset+i), ptn >> 2 & 1);
-+ }
-+ else switch (ptn)
-+ {
-+ case P_0R: case P_1R:
-+ assert(count > 0);
-+ bitset(bitoffset, ptn & 1);
-+ count--;
-+ bitoffset++;
-+ case P_R:
-+ for (; count > 0; count--, bitoffset++)
-+ bitset(bitoffset, rand() & 1);
-+ break;
-+ case P_Ro:
-+ {
-+ int op = 1;
-+ assert(count > 0);
-+ for (; count > 1; count--, bitoffset++)
-+ bitset(bitoffset, op ^= (rand() & 1));
-+ bitset(bitoffset, op);
-+ break;
-+ }
-+ case P_Rno:
-+ {
-+ int op = 1;
-+ assert(count > 0);
-+ for (; count > 1; count--, bitoffset++)
-+ {
-+ int r = rand() & 1;
-+ op &= r;
-+ bitset(bitoffset, r);
-+ }
-+ bitset(bitoffset, rand() & (op ^ 1));
-+ break;
-+ }
-+
-+ default:
-+ assert(0);
-+ }
-+#undef bitset
-+}
-+
-+static tocheck_t
-+pattern(int negative, pattern_t exp, pattern_t mant)
-+{
-+ union_t result;
-+#if 0
-+ int i;
-+#endif
-+
-+ pattern_fill(negative ? P_O : P_Z, result.c, 0, 1);
-+ pattern_fill(exp, result.c, 1, ESIZE);
-+ pattern_fill(mant, result.c, ESIZE+1, MSIZE);
-+#if 0
-+ printf("neg=%d exp=%02x mant=%02x: ", negative, exp, mant);
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", result.c[i]);
-+ printf("\n");
-+#endif
-+ return result.tc;
-+}
-+
-+/* Return the closest different tocheck_t to 'x' in the direction of
-+ 'direction', or 'x' if there is no such value. Assumes 'x' is not
-+ a NaN. */
-+static tocheck_t
-+delta(tocheck_t x, int direction)
-+{
-+ union_t xx;
-+ int i;
-+
-+ xx.tc = x;
-+ if (xx.c[0] & 0x80)
-+ direction = -direction;
-+ if (direction == +1)
-+ {
-+ union_t tx;
-+ tx.tc = pattern(xx.c[0] >> 7, P_O, P_Z);
-+ if (memcmp(tx.c, xx.c, sizeof(tocheck_t)) == 0)
-+ return x;
-+ }
-+ for (i = sizeof(tocheck_t)-1; i > 0; i--)
-+ {
-+ xx.c[i] += direction;
-+ if (xx.c[i] != (direction > 0 ? 0 : 0xff))
-+ return xx.tc;
-+ }
-+ if (direction < 0 && (xx.c[0] & 0x7f) == 0)
-+ return pattern(~(xx.c[0] >> 7) & 1, P_Z, P_Z1);
-+ else
-+ {
-+ xx.c[0] += direction;
-+ return xx.tc;
-+ }
-+}
-+
-+static int nerrors = 0;
-+
-+#ifdef FE_ALL_INVALID
-+static const int all_exceptions = FE_ALL_INVALID | FE_ALL_EXCEPT;
-+#else
-+static const int all_exceptions = FE_ALL_EXCEPT;
-+#endif
-+
-+static void
-+check_result(int line, const char *rm, tocheck_t expected, tocheck_t actual)
-+{
-+ if (memcmp(&expected, &actual, sizeof(tocheck_t)) != 0)
-+ {
-+ unsigned char *ex, *ac;
-+ size_t i;
-+
-+ printf("%s:%d:round %s:result failed\n"
-+ " expected result 0x", __FILE__, line, rm);
-+ ex = (unsigned char *)&expected;
-+ ac = (unsigned char *)&actual;
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", ex[i]);
-+ printf(" got 0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", ac[i]);
-+ printf("\n");
-+ nerrors++;
-+ }
-+}
-+
-+static const struct {
-+ int except;
-+ const char *name;
-+} excepts[] = {
-+#define except_entry(ex) { ex, #ex } ,
-+#ifdef FE_INEXACT
-+ except_entry(FE_INEXACT)
-+#else
-+# define FE_INEXACT 0
-+#endif
-+#ifdef FE_DIVBYZERO
-+ except_entry(FE_DIVBYZERO)
-+#else
-+# define FE_DIVBYZERO 0
-+#endif
-+#ifdef FE_UNDERFLOW
-+ except_entry(FE_UNDERFLOW)
-+#else
-+# define FE_UNDERFLOW 0
-+#endif
-+#ifdef FE_OVERFLOW
-+ except_entry(FE_OVERFLOW)
-+#else
-+# define FE_OVERFLOW 0
-+#endif
-+#ifdef FE_INVALID
-+ except_entry(FE_INVALID)
-+#else
-+# define FE_INVALID 0
-+#endif
-+#ifdef FE_INVALID_SNAN
-+ except_entry(FE_INVALID_SNAN)
-+#else
-+# define FE_INVALID_SNAN FE_INVALID
-+#endif
-+#ifdef FE_INVALID_ISI
-+ except_entry(FE_INVALID_ISI)
-+#else
-+# define FE_INVALID_ISI FE_INVALID
-+#endif
-+#ifdef FE_INVALID_IDI
-+ except_entry(FE_INVALID_IDI)
-+#else
-+# define FE_INVALID_IDI FE_INVALID
-+#endif
-+#ifdef FE_INVALID_ZDZ
-+ except_entry(FE_INVALID_ZDZ)
-+#else
-+# define FE_INVALID_ZDZ FE_INVALID
-+#endif
-+#ifdef FE_INVALID_COMPARE
-+ except_entry(FE_INVALID_COMPARE)
-+#else
-+# define FE_INVALID_COMPARE FE_INVALID
-+#endif
-+#ifdef FE_INVALID_SOFTWARE
-+ except_entry(FE_INVALID_SOFTWARE)
-+#else
-+# define FE_INVALID_SOFTWARE FE_INVALID
-+#endif
-+#ifdef FE_INVALID_SQRT
-+ except_entry(FE_INVALID_SQRT)
-+#else
-+# define FE_INVALID_SQRT FE_INVALID
-+#endif
-+#ifdef FE_INVALID_INTEGER_CONVERSION
-+ except_entry(FE_INVALID_INTEGER_CONVERSION)
-+#else
-+# define FE_INVALID_INTEGER_CONVERSION FE_INVALID
-+#endif
-+};
-+
-+static int excepts_missing = 0;
-+
-+static void
-+check_excepts(int line, const char *rm, int expected, int actual)
-+{
-+ if (expected & excepts_missing)
-+ expected = expected & ~excepts_missing | FE_INVALID_SNAN;
-+ if ((expected & all_exceptions) != actual)
-+ {
-+ size_t i;
-+ printf("%s:%d:round %s:exceptions failed\n"
-+ " expected exceptions ", __FILE__, line,rm);
-+ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-+ if (expected & excepts[i].except)
-+ printf("%s ",excepts[i].name);
-+ if ((expected & all_exceptions) == 0)
-+ printf("- ");
-+ printf("got");
-+ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-+ if (actual & excepts[i].except)
-+ printf(" %s",excepts[i].name);
-+ if ((actual & all_exceptions) == 0)
-+ printf("- ");
-+ printf(".\n");
-+ nerrors++;
-+ }
-+}
-+
-+typedef enum {
-+ B_ADD, B_SUB, B_MUL, B_DIV, B_NEG, B_ABS, B_SQRT
-+} op_t;
-+typedef struct {
-+ int line;
-+ op_t op;
-+ int a_sgn;
-+ pattern_t a_exp, a_mant;
-+ int b_sgn;
-+ pattern_t b_exp, b_mant;
-+ int rmode;
-+ int excepts;
-+ int x_sgn;
-+ pattern_t x_exp, x_mant;
-+} optest_t;
-+static const optest_t optests[] = {
-+ /* Additions of zero. */
-+ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_ALL & ~R_DOWN,0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_DOWN,0, 1,P_Z,P_Z },
-+ {__LINE__,B_ADD, 1,P_Z,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_Z,P_Z },
-+
-+ /* Additions with NaN. */
-+ {__LINE__,B_ADD, 0,P_O,P_101Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_101Z },
-+ {__LINE__,B_ADD, 0,P_O,P_01Z, 0,P_Z,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_0O, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_O },
-+ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_O,P_11Z, R_ALL,0, 0,P_O,P_11Z },
-+ {__LINE__,B_ADD, 0,P_O,P_001Z, 0,P_O,P_001Z, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_101Z },
-+ {__LINE__,B_ADD, 0,P_O,P_1Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 0,P_0O,P_Z, 0,P_O,P_10O, R_ALL,0, 0,P_O,P_10O },
-+
-+ /* Additions with infinity. */
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_O,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_O,P_Z, R_ALL,
-+ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-+
-+ /* Overflow (and zero). */
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_NEAREST | R_UP,
-+ FE_INEXACT | FE_OVERFLOW, 0,P_O,P_Z },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_ZERO | R_DOWN,
-+ FE_INEXACT | FE_OVERFLOW, 0,P_O0,P_O },
-+ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_NEAREST | R_DOWN,
-+ FE_INEXACT | FE_OVERFLOW, 1,P_O,P_Z },
-+ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_ZERO | R_UP,
-+ FE_INEXACT | FE_OVERFLOW, 1,P_O0,P_O },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_ALL & ~R_DOWN,
-+ 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_DOWN,
-+ 0, 1,P_Z,P_Z },
-+
-+ /* Negation. */
-+ {__LINE__,B_NEG, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-+ {__LINE__,B_NEG, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_NEG, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 1,P_O,P_Z },
-+ {__LINE__,B_NEG, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_NEG, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-+ {__LINE__,B_NEG, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_NEG, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 1,P_O,P_01Z },
-+ {__LINE__,B_NEG, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_NEG, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 1,P_1Z,P_1Z1 },
-+ {__LINE__,B_NEG, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_NEG, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 1,P_Z,P_Z1 },
-+ {__LINE__,B_NEG, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+
-+ /* Absolute value. */
-+ {__LINE__,B_ABS, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ABS, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_ABS, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_ABS, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_ABS, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_ABS, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_ABS, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_ABS, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-+ {__LINE__,B_ABS, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_ABS, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-+ {__LINE__,B_ABS, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+ {__LINE__,B_ABS, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-+
-+ /* Square root. */
-+ {__LINE__,B_SQRT, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-+ {__LINE__,B_SQRT, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-+ {__LINE__,B_SQRT, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 0,P_O,P_01Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-+ {__LINE__,B_SQRT, 1,P_O,P_01Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SNAN, 1,P_O,P_11Z },
-+
-+ {__LINE__,B_SQRT, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
-+ {__LINE__,B_SQRT, 0,P_0O,P_Z, 0,0,0, R_ALL, 0, 0,P_0O,P_Z },
-+
-+ {__LINE__,B_SQRT, 1,P_O,P_Z, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_1Z,P_1Z1, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+ {__LINE__,B_SQRT, 1,P_Z,P_Z1, 0,0,0, R_ALL,
-+ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-+
-+};
-+
-+static void
-+check_op(void)
-+{
-+ size_t i;
-+ int j;
-+ tocheck_t r, a, b, x;
-+ int raised;
-+
-+ for (i = 0; i < sizeof(optests)/sizeof(optests[0]); i++)
-+ {
-+ a = pattern(optests[i].a_sgn, optests[i].a_exp,
-+ optests[i].a_mant);
-+ b = pattern(optests[i].b_sgn, optests[i].b_exp,
-+ optests[i].b_mant);
-+ x = pattern(optests[i].x_sgn, optests[i].x_exp,
-+ optests[i].x_mant);
-+ for (j = 0; j < 4; j++)
-+ if (optests[i].rmode & 1<<j)
-+ {
-+ fesetenv(rmodes+j);
-+ switch (optests[i].op)
-+ {
-+ case B_ADD: r = a + b; break;
-+ case B_SUB: r = a - b; break;
-+ case B_MUL: r = a * b; break;
-+ case B_DIV: r = a / b; break;
-+ case B_NEG: r = -a; break;
-+ case B_ABS: r = FUNC(fabs)(a); break;
-+ case B_SQRT: r = FUNC(sqrt)(a); break;
-+ }
-+ raised = fetestexcept(all_exceptions);
-+ check_result(optests[i].line,rmnames[j],x,r);
-+ check_excepts(optests[i].line,rmnames[j],
-+ optests[i].excepts,raised);
-+ }
-+ }
-+}
-+
-+static void
-+fail_xr(int line, const char *rm, tocheck_t x, tocheck_t r, tocheck_t xx,
-+ int xflag)
-+{
-+ size_t i;
-+ unsigned char *cx, *cr, *cxx;
-+
-+ printf("%s:%d:round %s:fail\n with x=0x", __FILE__, line,rm);
-+ cx = (unsigned char *)&x;
-+ cr = (unsigned char *)&r;
-+ cxx = (unsigned char *)&xx;
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cx[i]);
-+ printf(" r=0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cr[i]);
-+ printf(" xx=0x");
-+ for (i = 0; i < sizeof(tocheck_t); i++)
-+ printf("%02x", cxx[i]);
-+ printf(" inexact=%d\n", xflag != 0);
-+ nerrors++;
-+}
-+
-+static void
-+check_sqrt(tocheck_t a)
-+{
-+ int j;
-+ tocheck_t r0, r1, r2, x0, x1, x2;
-+ int raised = 0;
-+ int ok;
-+
-+ for (j = 0; j < 4; j++)
-+ {
-+ int excepts;
-+
-+ fesetenv(rmodes+j);
-+ r1 = FUNC(sqrt)(a);
-+ excepts = fetestexcept(all_exceptions);
-+ fesetenv(FE_DFL_ENV);
-+ raised |= excepts & ~FE_INEXACT;
-+ x1 = r1 * r1 - a;
-+ if (excepts & FE_INEXACT)
-+ {
-+ r0 = delta(r1,-1); r2 = delta(r1,1);
-+ switch (1 << j)
-+ {
-+ case R_NEAREST:
-+ x0 = r0 * r0 - a; x2 = r2 * r2 - a;
-+ ok = fabs(x0) >= fabs(x1) && fabs(x1) <= fabs(x2);
-+ break;
-+ case R_ZERO: case R_DOWN:
-+ x2 = r2 * r2 - a;
-+ ok = x1 <= 0 && x2 >= 0;
-+ break;
-+ case R_UP:
-+ x0 = r0 * r0 - a;
-+ ok = x1 >= 0 && x0 <= 0;
-+ break;
-+ default:
-+ assert(0);
-+ }
-+ }
-+ else
-+ ok = x1 == 0;
-+ if (!ok)
-+ fail_xr(__LINE__,rmnames[j],a,r1,x1,excepts&FE_INEXACT);
-+ }
-+ check_excepts(__LINE__,"all",0,raised);
-+}
-+
-+int main(int argc, char **argv)
-+{
-+ int i;
-+
-+ _LIB_VERSION = _IEEE_;
-+
-+ /* Set up environments for rounding modes. */
-+ fesetenv(FE_DFL_ENV);
-+ fesetround(FE_TONEAREST);
-+ fegetenv(rmodes+0);
-+ fesetround(FE_TOWARDZERO);
-+ fegetenv(rmodes+1);
-+ fesetround(FE_UPWARD);
-+ fegetenv(rmodes+2);
-+ fesetround(FE_DOWNWARD);
-+ fegetenv(rmodes+3);
-+
-+#if defined(FE_INVALID_SOFTWARE) || defined(FE_INVALID_SQRT)
-+ /* There's this really stupid feature of the 601... */
-+ fesetenv(FE_DFL_ENV);
-+ feraiseexcept(FE_INVALID_SOFTWARE);
-+ if (!fetestexcept(FE_INVALID_SOFTWARE))
-+ excepts_missing |= FE_INVALID_SOFTWARE;
-+ fesetenv(FE_DFL_ENV);
-+ feraiseexcept(FE_INVALID_SQRT);
-+ if (!fetestexcept(FE_INVALID_SQRT))
-+ excepts_missing |= FE_INVALID_SQRT;
-+#endif
-+
-+ check_op();
-+ for (i = 0; i < 100000; i++)
-+ check_sqrt(pattern(0, P_Rno, P_R));
-+ for (i = 0; i < 100; i++)
-+ check_sqrt(pattern(0, P_Z, P_R));
-+ check_sqrt(pattern(0,P_Z,P_Z1));
-+
-+ printf("%d errors.\n", nerrors);
-+ return nerrors == 0 ? 0 : 1;
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/powerpc/test-arithf.c glibc-2.3.2-200304020432/sysdeps/powerpc/test-arithf.c
---- glibc-2.3.2/sysdeps/powerpc/test-arithf.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/powerpc/test-arithf.c Sun Aug 10 19:49:46 1997
-@@ -0,0 +1,6 @@
-+typedef float tocheck_t;
-+#define ESIZE 8
-+#define MSIZE 23
-+#define FUNC(x) x##f
-+
-+#include "test-arith.c"
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/s390/bits/atomic.h
---- glibc-2.3.2/sysdeps/s390/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/s390/bits/atomic.h Wed Mar 26 05:01:47 2003
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __archmem = (mem); \
-+ __typeof (*mem) __archold = (oldval); \
-+ __asm __volatile ("cs %0,%2,%1" \
-+ : "+d" (__archold), "=Q" (*__archmem) \
-+ : "d" (newval), "m" (*__archmem) : "cc" ); \
-+ __archold; })
-+
-+#ifdef __s390x__
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __archmem = (mem); \
-+ __typeof (*mem) __archold = (oldval); \
-+ __asm __volatile ("csg %0,%2,%1" \
-+ : "+d" (__archold), "=Q" (*__archmem) \
-+ : "d" ((long) (newval)), "m" (*__archmem) : "cc" ); \
-+ __archold; })
-+#else
-+/* For 31 bit we do not really need 64-bit compare-and-exchange. We can
-+ implement them by use of the csd instruction. The straightforward
-+ implementation causes warnings so we skip the definition for now. */
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/s390/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps Thu Sep 5 01:12:20 2002
-+++ glibc-2.3.2-200304020432/sysdeps/s390/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h glibc-2.3.2-200304020432/sysdeps/s390/s390-32/atomicity.h
---- glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h Sat Jul 7 21:21:28 2001
-+++ glibc-2.3.2-200304020432/sysdeps/s390/s390-32/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,76 +0,0 @@
--/* Low-level functions for atomic operations. S390 version.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int result;
-- __asm__ __volatile__(
-- " L %0,%2\n"
-- " LA 2,%1\n"
-- "0: LR 0,%0\n"
-- " AR 0,%3\n"
-- " CS %0,0,0(2)\n"
-- " JL 0b"
-- : "=&d" (result), "=m" (*mem)
-- : "1" (*mem), "d" (val) : "0", "1", "2" );
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__(
-- " LA 2,%0\n"
-- "0: L 0,%1\n"
-- " LR 1,0\n"
-- " AR 1,%2\n"
-- " CS 0,1,0(2)\n"
-- " JL 0b"
-- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int retval;
--
-- __asm__ __volatile__(
-- " la 1,%1\n"
-- " lr 0,%2\n"
-- " cs 0,%3,0(1)\n"
-- " ipm %0\n"
-- " srl %0,28\n"
-- "0:"
-- : "=&r" (retval), "+m" (*p)
-- : "d" (oldval) , "d" (newval)
-- : "memory", "0", "1", "cc");
-- return !retval;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c glibc-2.3.2-200304020432/sysdeps/s390/s390-32/backtrace.c
---- glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c Sat Jul 7 21:21:28 2001
-+++ glibc-2.3.2-200304020432/sysdeps/s390/s390-32/backtrace.c Wed Mar 26 04:43:53 2003
-@@ -71,7 +71,7 @@
- out of range. */
- break;
-
-- array[cnt++] = stack->save_grps[8];
-+ array[cnt++] = stack->save_grps[8] & 0x7fffffff;
-
- stack = (struct layout *) stack->back_chain;
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h glibc-2.3.2-200304020432/sysdeps/s390/s390-32/sysdep.h
---- glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h Tue Jan 14 02:04:15 2003
-+++ glibc-2.3.2-200304020432/sysdeps/s390/s390-32/sysdep.h Fri Mar 7 11:06:56 2003
-@@ -111,7 +111,7 @@
-
- /* Local label name for asm code. */
- #ifndef L
--#define L(name) name
-+#define L(name) .L##name
- #endif
-
- #endif /* __ASSEMBLER__ */
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h glibc-2.3.2-200304020432/sysdeps/s390/s390-64/atomicity.h
---- glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h Sat Jul 7 21:21:28 2001
-+++ glibc-2.3.2-200304020432/sysdeps/s390/s390-64/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,76 +0,0 @@
--/* Low-level functions for atomic operations. 64 bit S/390 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
-- 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- int result;
-- __asm__ __volatile__(
-- " L %0,%2\n"
-- " LA 2,%1\n"
-- "0: LR 0,%0\n"
-- " AR 0,%3\n"
-- " CS %0,0,0(2)\n"
-- " JL 0b"
-- : "=&d" (result), "=m" (*mem)
-- : "1" (*mem), "d" (val) : "0", "1", "2" );
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__(
-- " LA 2,%0\n"
-- "0: L 0,%1\n"
-- " LR 1,0\n"
-- " AR 1,%2\n"
-- " CS 0,1,0(2)\n"
-- " JL 0b"
-- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- int retval;
--
-- __asm__ __volatile__(
-- " la 1,%1\n"
-- " lgr 0,%2\n"
-- " csg 0,%3,0(1)\n"
-- " ipm %0\n"
-- " srl %0,28\n"
-- "0:"
-- : "=&r" (retval), "+m" (*p)
-- : "d" (oldval) , "d" (newval)
-- : "memory", "0", "1", "cc");
-- return !retval;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h glibc-2.3.2-200304020432/sysdeps/s390/s390-64/sysdep.h
---- glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h Tue Jan 14 02:04:15 2003
-+++ glibc-2.3.2-200304020432/sysdeps/s390/s390-64/sysdep.h Fri Mar 7 11:06:55 2003
-@@ -104,8 +104,7 @@
-
- /* Local label name for asm code. */
- #ifndef L
--#define L(name) name
-+#define L(name) .L##name
- #endif
-
- #endif /* __ASSEMBLER__ */
--
-diff -u -udbrN glibc-2.3.2/sysdeps/sh/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/sh/bits/atomic.h
---- glibc-2.3.2/sysdeps/sh/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/sh/bits/atomic.h Sat Mar 29 02:14:29 2003
-@@ -0,0 +1,402 @@
-+/* Copyright (C) 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.b @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.b %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.w @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.w %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) __result; \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.l @%1,%0\n\
-+ cmp/eq %0,%3\n\
-+ bf 1f\n\
-+ mov.l %2,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
-+ : "r0", "r1", "t", "memory"); \
-+ __result; })
-+
-+/* XXX We do not really need 64-bit compare-and-exchange. At least
-+ not in the moment. Using it would mean causing portability
-+ problems since not many other 32-bit architectures have support for
-+ such an operation. So don't define any code for now. */
-+
-+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) __result; \
-+ __typeof (value) __value; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,%0\n\
-+ add %0,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,%0\n\
-+ add %0,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,%0\n\
-+ add %0,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "memory"); \
-+ else \
-+ { \
-+ __typeof (value) addval = (value); \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ __result = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, __result + addval, __result) == __result); \
-+ (void) addval; \
-+ } \
-+ __result; })
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ __typeof (value) __value; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%1,r2\n\
-+ add r2,%0\n\
-+ mov.b %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__value) : "r" (mem), "0" (value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%1,r2\n\
-+ add r2,%0\n\
-+ mov.w %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__value) : "r" (mem), "0" (value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%1,r2\n\
-+ add r2,%0\n\
-+ mov.l %0,@%1\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__value) : "r" (mem), "0" (value) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ { \
-+ __typeof (value) addval = (value); \
-+ __typeof (*mem) oldval; \
-+ __typeof (mem) memp = (mem); \
-+ do \
-+ oldval = *memp; \
-+ while (__arch_compare_and_exchange_val_64_acq \
-+ (memp, oldval + addval, oldval) == oldval); \
-+ (void) addval; \
-+ } \
-+ })
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ __typeof (value) __value; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ add r2,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ add r2,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ add r2,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ shal %1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ __typeof (value) __value; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ add r2,%1\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ add r2,%1\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ add r2,%1\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15\n\
-+ tst %1,%1\n\
-+ movt %0"\
-+ : "=r" (__result), "=&r" (__value) : "r" (mem), "1" (value) \
-+ : "r0", "r1", "r2", "t", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
-+
-+#define atomic_increment_and_test(mem) atomic_add_zero((mem), 1)
-+#define atomic_decrement_and_test(mem) atomic_add_zero((mem), -1)
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ unsigned int __mask = 1 << (bit); \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.b @%0,r2\n\
-+ or %1,r2\n\
-+ mov.b r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.w @%0,r2\n\
-+ or %1,r2\n\
-+ mov.w r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ mov r15,r1\n\
-+ mov #-6,r15\n\
-+ 0: mov.l @%0,r2\n\
-+ or %1,r2\n\
-+ mov.l r2,@%0\n\
-+ 1: mov r1,r15"\
-+ : : "r" (mem), "r" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ abort (); \
-+ })
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned int __mask = 1 << (bit); \
-+ unsigned int __result = __mask; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.b @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.b %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.w @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.w %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("\
-+ .align 2\n\
-+ mova 1f,r0\n\
-+ nop\n\
-+ mov r15,r1\n\
-+ mov #-8,r15\n\
-+ 0: mov.l @%2,r2\n\
-+ or r2,%1\n\
-+ and r2,%0\n\
-+ mov.l %1,@%2\n\
-+ 1: mov r1,r15"\
-+ : "=&r" (__result), "=&r" (__mask) \
-+ : "r" (mem), "0" (__result), "1" (__mask) \
-+ : "r0", "r1", "r2", "memory"); \
-+ else \
-+ abort (); \
-+ __result; })
-diff -u -udbrN glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/sh/sh4/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps Sun Apr 22 06:53:11 2001
-+++ glibc-2.3.2-200304020432/sysdeps/sh/sh4/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -145,7 +145,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-@@ -156,10 +156,10 @@
- idouble: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-@@ -198,7 +198,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -291,7 +291,7 @@
- ifloat: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-@@ -318,7 +318,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-@@ -331,7 +331,7 @@
- ifloat: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -520,12 +520,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -615,7 +615,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/atomicity.h
---- glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h Sat Jul 7 21:21:29 2001
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/atomicity.h Mon Mar 31 01:36:39 2003
-@@ -1,98 +0,0 @@
--/* Low-level functions for atomic operations. Sparc32 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- static unsigned char lock;
-- int result, tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- result = *mem;
-- *mem += val;
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
-- return result;
--}
--
--static void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- static unsigned char lock;
-- int tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- *mem += val;
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
--}
--
--static int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- static unsigned char lock;
-- int ret, tmp;
--
-- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
-- " cmp %0, 0\n\t"
-- " bne 1b\n\t"
-- " nop"
-- : "=&r" (tmp)
-- : "r" (&lock)
-- : "memory");
-- if (*p != oldval)
-- ret = 0;
-- else
-- {
-- *p = newval;
-- ret = 1;
-- }
-- __asm__ __volatile__("stb %%g0, [%0]"
-- : /* no outputs */
-- : "r" (&lock)
-- : "memory");
--
-- return ret;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/bits/atomic.h
---- glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/bits/atomic.h Mon Mar 31 01:36:39 2003
-@@ -0,0 +1,75 @@
-+/* Atomic operations. sparc32 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 _BITS_ATOMIC_H
-+#define _BITS_ATOMIC_H 1
-+
-+/* We have no compare and swap, just test and set.
-+ The following implementation contends on one single global lock
-+ per library and assumes no variable will be accessed using atomic.h
-+ macros from two different libraries. */
-+
-+volatile unsigned char __sparc32_atomic_lock
-+ __attribute__ ((nocommon, section (".gnu.linkonce.b.__sparc32_atomic_lock"),
-+ visibility ("hidden")));
-+
-+#define __sparc32_atomic_do_lock() \
-+ do \
-+ { \
-+ unsigned int __old_lock; \
-+ do \
-+ __asm ("ldstub %1, %0" \
-+ : "=r" (__old_lock), "=m" (__sparc32_atomic_lock) \
-+ : "m" (__sparc32_atomic_lock)); \
-+ while (__old_lock); \
-+ } \
-+ while (0)
-+
-+#define __sparc32_atomic_do_unlock() \
-+ do __sparc32_atomic_lock = 0; while (0)
-+
-+/* The only basic operation needed is compare and exchange. */
-+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __acev_memp = (mem); \
-+ __typeof (*mem) __acev_ret; \
-+ __typeof (*mem) __acev_newval = (newval); \
-+ \
-+ __sparc32_atomic_do_lock (); \
-+ __acev_ret = *__acev_memp; \
-+ if (__acev_ret == (oldval)) \
-+ *__acev_memp = __acev_newval; \
-+ __sparc32_atomic_do_unlock (); \
-+ __acev_ret; })
-+
-+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-+ ({ __typeof (mem) __aceb_memp = (mem); \
-+ int __aceb_ret; \
-+ __typeof (*mem) __aceb_newval = (newval); \
-+ \
-+ __sparc32_atomic_do_lock (); \
-+ __aceb_ret = 0; \
-+ if (*__aceb_memp == (oldval)) \
-+ *__aceb_memp = __aceb_newval; \
-+ else \
-+ __aceb_ret = 1; \
-+ __sparc32_atomic_do_unlock (); \
-+ __aceb_ret; })
-+
-+#endif /* bits/atomic.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps Tue Sep 17 18:46:01 2002
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/fpu/libm-test-ulps Sun Mar 23 01:52:09 2003
-@@ -94,7 +94,7 @@
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-@@ -107,10 +107,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
- Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-@@ -145,7 +145,7 @@
- Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -239,7 +239,7 @@
- ifloat: 2
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
-@@ -258,7 +258,7 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
-@@ -266,7 +266,7 @@
- idouble: 1
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -453,12 +453,12 @@
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -513,7 +513,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/sparcv9/atomicity.h
---- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h Sat Jul 7 21:21:29 2001
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/sparcv9/atomicity.h Mon Mar 31 01:36:38 2003
-@@ -1,82 +0,0 @@
--/* Low-level functions for atomic operations. Sparc32+v9 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
-- return tmp2;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- register long int tmp, tmp2;
--
-- __asm__ __volatile__("1: lduw [%4], %0\n\t"
-- " mov %2, %1\n\t"
-- " cmp %0, %3\n\t"
-- " bne,a,pn %%xcc, 2f\n\t"
-- " mov 0, %0\n\t"
-- " cas [%4], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " mov 1, %0\n\t"
-- "2:"
-- : "=&r" (tmp), "=&r" (tmp2)
-- : "r" (newval), "r" (oldval), "r" (p)
-- : "memory");
-- return tmp;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
---- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h Mon Mar 31 01:36:38 2003
-@@ -0,0 +1,88 @@
-+/* Atomic operations. sparcv9 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("cas [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
-+ "0" (newval)); \
-+ __acev_tmp; })
-+
-+/* This can be implemented if needed. */
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ if (sizeof (*(mem)) == 4) \
-+ __asm ("swap %0, %1" \
-+ : "=m" (*__memp), "=r" (__oldval) \
-+ : "m" (*__memp), "1" (__value)); \
-+ else \
-+ abort (); \
-+ __oldval; })
-+
-+#define atomic_full_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" \
-+ " | #StoreLoad | #StoreStore" : : : "memory")
-+#define atomic_read_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
-+#define atomic_write_barrier() \
-+ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/atomicity.h
---- glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h Sat Jul 7 21:21:29 2001
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/atomicity.h Mon Mar 31 01:36:38 2003
-@@ -1,82 +0,0 @@
--/* Low-level functions for atomic operations. Sparc64 version.
-- Copyright (C) 1999 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--static inline int
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
-- return tmp2;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- uint32_t tmp1, tmp2;
--
-- __asm__ __volatile__("1: lduw [%2], %0\n\t"
-- " add %0, %3, %1\n\t"
-- " cas [%2], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " nop"
-- : "=&r" (tmp1), "=&r" (tmp2)
-- : "r" (mem), "r" (val)
-- : "memory");
--}
--
--static inline int
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- register long int tmp, tmp2;
--
-- __asm__ __volatile__("1: ldx [%4], %0\n\t"
-- " mov %2, %1\n\t"
-- " cmp %0, %3\n\t"
-- " bne,a,pn %%xcc, 2f\n\t"
-- " mov 0, %0\n\t"
-- " casx [%4], %0, %1\n\t"
-- " sub %0, %1, %0\n\t"
-- " brnz,pn %0, 1b\n\t"
-- " mov 1, %0\n\t"
-- "2:"
-- : "=&r" (tmp), "=&r" (tmp2)
-- : "r" (newval), "r" (oldval), "r" (p)
-- : "memory");
-- return tmp;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/bits/atomic.h
---- glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/bits/atomic.h Mon Mar 31 01:36:39 2003
-@@ -0,0 +1,103 @@
-+/* Atomic operations. sparc64 version.
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-+
-+ 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 <stdint.h>
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ (abort (), 0)
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("cas [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
-+ "0" (newval)); \
-+ __acev_tmp; })
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+({ \
-+ __typeof (*(mem)) __acev_tmp; \
-+ __typeof (mem) __acev_mem = (mem); \
-+ __asm __volatile ("casx [%4], %2, %0" \
-+ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
-+ : "r" ((long) (oldval)), "m" (*__acev_mem), \
-+ "r" (__acev_mem), "0" ((long) (newval))); \
-+ __acev_tmp; })
-+
-+#define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*(mem)) __oldval, __val; \
-+ __typeof (mem) __memp = (mem); \
-+ __typeof (*(mem)) __value = (newvalue); \
-+ \
-+ if (sizeof (*(mem)) == 4) \
-+ __asm ("swap %0, %1" \
-+ : "=m" (*__memp), "=r" (__oldval) \
-+ : "m" (*__memp), "1" (__value)); \
-+ else \
-+ { \
-+ __val = *__memp; \
-+ do \
-+ { \
-+ __oldval = __val; \
-+ __val = atomic_compare_and_exchange_val_acq (__memp, __value, \
-+ __oldval); \
-+ } \
-+ while (__builtin_expect (__val != __oldval, 0)); \
-+ } \
-+ __oldval; })
-+
-+#define atomic_full_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" \
-+ " | #StoreLoad | #StoreStore" : : : "memory")
-+#define atomic_read_barrier() \
-+ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
-+#define atomic_write_barrier() \
-+ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
-diff -u -udbrN glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps Mon Oct 1 01:31:32 2001
-+++ glibc-2.3.2-200304020432/sysdeps/sparc/sparc64/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -1,85 +1,31 @@
--
- # Begin of automatic generation
-
--# acos
--Test "acos (0.7) == 0.79539883018414355549096833892476432":
--ldouble: 1
--ildouble: 1
--
--# asin
--Test "asin (-0.5) == -pi/6":
--float: 2
--ifloat: 2
--Test "asin (0.5) == pi/6":
--float: 2
--ifloat: 2
--Test "asin (0.7) == 0.77539749661075306374035335271498708":
--double: 1
--float: 2
--idouble: 1
--ifloat: 2
--
--# atan
--Test "atan (0.7) == 0.61072596438920861654375887649023613":
--ildouble: 1
--ldouble: 1
--
--# atanh
--Test "atanh (0.7) == 0.8673005276940531944":
--double: 1
--idouble: 1
--
- # atan2
--Test "atan2 (0.4, 0.0003) == 1.5700463269355215717704032607580829":
-+Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "atan2 (0.7, 1) == 0.61072596438920861654375887649023613":
-+Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "atan2 (-0.7, 1.0) == -0.61072596438920861654375887649023613":
-+Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
-+float: 1
-+ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
--float: 3
--ifloat: 3
--Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
--float: 3
--ifloat: 3
--Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
--float: 4
--ifloat: 4
-
--# cabs
--Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
--float: 1
--ifloat: 1
--Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
--double: 1
--idouble: 1
--Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
-+# atanh
-+Test "atanh (0.75) == 0.972955074527656652552676371721589865":
- float: 1
- ifloat: 1
-
- # cacos
--Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-+Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
-+ildouble: 1
-+ldouble: 1
-
- # cacosh
- Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
-@@ -96,25 +42,16 @@
- ifloat: 3
- ildouble: 1
- ldouble: 1
--Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
-+
-+# casin
-+Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--
--# casin
--Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
--double: 3
--float: 2
--idouble: 3
--ifloat: 2
-+Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-
- # casinh
- Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
-@@ -131,13 +68,15 @@
- ifloat: 6
- ildouble: 2
- ldouble: 2
--Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
--double: 1
--idouble: 1
-+Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-+float: 1
-+ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
-+Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-@@ -151,12 +90,10 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
-+Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
- float: 4
- ifloat: 4
--Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
- ildouble: 1
- ldouble: 1
-
-@@ -167,49 +104,59 @@
- Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
- float: 4
- ifloat: 4
--Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
--float: 1
--ifloat: 1
--Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
-+Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
- double: 1
--float: 6
- idouble: 1
-+ildouble: 1
-+ldouble: 1
-+Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-+float: 6
- ifloat: 6
-+ildouble: 1
-+ldouble: 1
-
- # cbrt
-+Test "cbrt (-0.001) == -0.1":
-+ildouble: 1
-+ldouble: 1
- Test "cbrt (-27.0) == -3.0":
- double: 1
- idouble: 1
--Test "cbrt (0.970299) == 0.99":
-+Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
-+double: 1
-+idouble: 1
-+Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
- double: 1
- idouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
--Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
--double: 1
--idouble: 1
--Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
-+Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
- double: 1
-+float: 1
- idouble: 1
-+ifloat: 1
-+Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-+float: 1
-+ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
-+Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
-+float: 1
-+ifloat: 1
-
- # cexp
- Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
-@@ -220,23 +167,22 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
-+Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- float: 1
- ifloat: 1
-+Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
- ildouble: 1
- ldouble: 1
-
- # clog
- Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
--double: 1
- float: 3
--idouble: 1
- ifloat: 3
-+Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
-+float: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # clog10
- Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
-@@ -249,7 +195,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -297,14 +243,12 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
--double: 1
-+Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
- float: 1
--idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
--double: 1
--idouble: 1
-+Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
-+ildouble: 1
-+ldouble: 1
- Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
- double: 1
- float: 1
-@@ -327,16 +271,11 @@
- ifloat: 1
-
- # cos
--Test "cos (0.7) == 0.76484218728448842625585999019186495":
-+Test "cos (M_PI_6l * 2.0) == 0.5":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "cos (M_PI_6l * 2.0) == 0.5":
--double: 1
--float: 0.5
--idouble: 1
--ifloat: 0.5
- ildouble: 1
- ldouble: 1
- Test "cos (M_PI_6l * 4.0) == -0.5":
-@@ -347,14 +286,40 @@
- ildouble: 1
- ldouble: 1
- Test "cos (pi/2) == 0":
--double: 0.2758
--float: 0.3667
--idouble: 0.2758
--ifloat: 0.3667
--ildouble: 0.2252
--ldouble: 0.2252
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # cpow
-+Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-+float: 1
-+ifloat: 1
-+Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
-+float: 1
-+ifloat: 1
-+Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
-+double: 1
-+float: 4
-+idouble: 1
-+ifloat: 4
-+ildouble: 4
-+ldouble: 4
-+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-+ildouble: 2
-+ldouble: 2
-+Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
-+ildouble: 1
-+ldouble: 1
-+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
-+double: 2
-+float: 3
-+idouble: 2
-+ifloat: 3
-+ildouble: 1
-+ldouble: 1
- Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
- ildouble: 2
- ldouble: 2
-@@ -369,26 +334,26 @@
- float: 2
- ifloat: 2
- Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
--double: 1.1031
--float: 1.4668
--idouble: 1.1031
--ifloat: 1.4668
--ildouble: 0.9006
--ldouble: 0.9006
-+double: 2
-+float: 2
-+idouble: 2
-+ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- # csin
--Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
--float: 1
--ifloat: 1
-+Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
-+ildouble: 1
-+ldouble: 1
-
- # csinh
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-+Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
-+Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
- float: 1
- ifloat: 1
-
-@@ -403,32 +368,22 @@
- ifloat: 1
- ildouble: 1
- ldouble: 1
--Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
--float: 1
--ifloat: 1
-+Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
- ildouble: 1
- ldouble: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
--Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
--float: 1
--ifloat: 1
--Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
-+Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+ildouble: 2
-+ldouble: 2
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- double: 1
- float: 2
- idouble: 1
-@@ -436,34 +391,25 @@
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
- float: 1
- ifloat: 1
--Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
-+Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-+double: 1
-+idouble: 1
-+
-+# erf
-+Test "erf (1.25) == 0.922900128256458230136523481197281140":
-+double: 1
-+idouble: 1
-
- # erfc
--Test "erfc (0.7) == 0.32219880616258152702":
-+Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
- double: 1
- idouble: 1
--Test "erfc (1.2) == 0.089686021770364619762":
--double: 2
--float: 2
--idouble: 2
--ifloat: 2
--Test "erfc (2.0) == 0.0046777349810472658379":
-+Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
-+ildouble: 1
-+ldouble: 1
-+Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
- double: 1
- idouble: 1
--Test "erfc (4.1) == 0.67000276540848983727e-8":
--double: 24
--float: 12
--idouble: 24
--ifloat: 12
-
- # exp10
- Test "exp10 (-1) == 0.1":
-@@ -471,11 +417,11 @@
- float: 1
- idouble: 2
- ifloat: 1
--Test "exp10 (0.7) == 5.0118723362727228500155418688494574":
-+Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--ildouble: 1
--ldouble: 1
- Test "exp10 (3) == 1000":
- double: 6
- float: 2
-@@ -485,6 +431,9 @@
- ldouble: 1
-
- # expm1
-+Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
-+double: 1
-+idouble: 1
- Test "expm1 (1) == M_El - 1.0":
- double: 1
- float: 1
-@@ -493,36 +442,10 @@
- ildouble: 1
- ldouble: 1
-
--
--# fmod
--Test "fmod (-6.5, -2.3) == -1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (-6.5, 2.3) == -1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (6.5, -2.3) == 1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
--Test "fmod (6.5, 2.3) == 1.9":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
-+# gamma
-+Test "gamma (-0.5) == log(2*sqrt(pi))":
-+ildouble: 1
-+ldouble: 1
-
- # hypot
- Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
-@@ -540,9 +463,6 @@
- Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
- float: 1
- ifloat: 1
--Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
--double: 1
--idouble: 1
- Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
- float: 1
- ifloat: 1
-@@ -554,161 +474,213 @@
- ifloat: 1
-
- # j0
--Test "j0 (10.0) == -0.24593576445134833520":
-+Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+Test "j0 (0.75) == 0.864242275166648623555731103820923211":
-+float: 1
-+ifloat: 1
-+Test "j0 (10.0) == -0.245935764451348335197760862485328754":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "j0 (2.0) == 0.22389077914123566805":
-+ildouble: 2
-+ldouble: 2
-+Test "j0 (2.0) == 0.223890779141235668051827454649948626":
- float: 2
- ifloat: 2
--Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1"
-+ildouble: 2
-+ldouble: 2
-+Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
- double: 1
--idouble: 1
- float: 1
--ifloat: 1
--Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1"
--double: 1
- idouble: 1
--float: 1
- ifloat: 1
--Test "j0 (8.0) == 0.17165080713755390609":
-+Test "j0 (8.0) == 0.171650807137553906090869407851972001":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # j1
--Test "j1 (10.0) == 0.043472746168861436670":
-+Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (0.75) == 0.349243602174862192523281016426251335":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (1.0) == 0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
- float: 2
- ifloat: 2
--Test "j1 (2.0) == 0.57672480775687338720":
-+ildouble: 2
-+ldouble: 2
-+Test "j1 (2.0) == 0.576724807756873387202448242269137087":
- double: 1
- idouble: 1
--Test "j1 (8.0) == 0.23463634685391462438":
-+Test "j1 (8.0) == 0.234636346853914624381276651590454612":
- double: 1
- idouble: 1
-+ildouble: 4
-+ldouble: 4
-
- # jn
--Test "jn (0, 10.0) == -0.24593576445134833520":
-+Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
-+float: 1
-+ifloat: 1
-+Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "jn (0, 2.0) == 0.22389077914123566805":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
- float: 2
- ifloat: 2
--Test "jn (0, 8.0) == 0.17165080713755390609":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--Test "jn (1, 10.0) == 0.043472746168861436670":
-+Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
-+float: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
- float: 2
- ifloat: 2
--Test "jn (1, 2.0) == 0.57672480775687338720":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
- double: 1
- idouble: 1
--Test "jn (1, 8.0) == 0.23463634685391462438":
-+Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
- double: 1
- idouble: 1
--Test "jn (10, 0.1) == 0.26905328954342155795e-19":
--double: 6
--float: 4
--idouble: 6
--ifloat: 4
--Test "jn (10, 0.7) == 0.75175911502153953928e-11":
--double: 3
-+ildouble: 4
-+ldouble: 4
-+Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
-+double: 1
- float: 1
--idouble: 3
-+idouble: 1
- ifloat: 1
--Test "jn (10, 10.0) == 0.20748610663335885770":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
-+double: 1
-+float: 1
-+idouble: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
-+ildouble: 1
-+ldouble: 1
-+Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
- double: 4
- float: 3
- idouble: 4
- ifloat: 3
--Test "jn (10, 2.0) == 0.25153862827167367096e-6":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
- float: 4
- ifloat: 4
--Test "jn (3, 0.1) == 0.000020820315754756261429":
-+Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
- double: 1
-+float: 1
- idouble: 1
--Test "jn (3, 0.7) == 0.0069296548267508408077":
-+ifloat: 1
-+Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--Test "jn (3, 10.0) == 0.058379379305186812343":
-+Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "jn (3, 2.0) == 0.12894324947440205110":
-+ildouble: 2
-+ldouble: 2
-+Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-
- # lgamma
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (-0.5) == log(2*sqrt(pi))":
-+ildouble: 1
-+ldouble: 1
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-
--# log
--Test "log (0.7) == -0.35667494393873237891263871124118447":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--ildouble: 1
--ldouble: 1
--
- # log10
--Test "log10 (0.7) == -0.15490195998574316929":
-+Test "log10 (0.75) == -0.124938736608299953132449886193870744":
- double: 1
--float: 1
-+float: 2
- idouble: 1
--ifloat: 1
-+ifloat: 2
- Test "log10 (e) == log10(e)":
- float: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- # log1p
--Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
--double: 1
-+Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
- float: 1
--idouble: 1
- ifloat: 1
-+Test "log1p (M_El - 1.0) == 1":
- ildouble: 1
- ldouble: 1
-
- # log2
--Test "log2 (0.7) == -0.51457317282975824043":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
--# remquo
--Test "remquo (-1.625, 1.0, &x) sets x to -2":
--ildouble: 4
--ldouble: 4
--Test "remquo (1.625, -1.0, &x) sets x to -2":
--ildouble: 4
--ldouble: 4
-+Test "log2 (0.75) == -.415037499278843818546261056052183492":
-+ildouble: 1
-+ldouble: 1
-
- # sincos
--Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res":
-+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
--double: 1
--float: 0.5
--idouble: 1
--ifloat: 0.5
- ildouble: 1
- ldouble: 1
- Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
-@@ -719,22 +691,15 @@
- ildouble: 1
- ldouble: 1
- Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
--double: 0.2758
--float: 0.3667
--idouble: 0.2758
--ifloat: 0.3667
--ildouble: 0.2252
--ldouble: 0.2252
--Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
--float: 1
--ifloat: 1
--
--# sinh
--Test "sinh (0.7) == 0.75858370183953350346":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
-+float: 1
-+ifloat: 1
-
- # sqrt
- Test "sqrt (2) == M_SQRT2l":
-@@ -742,31 +707,23 @@
- ldouble: 1
-
- # tan
--Test "tan (0.7) == 0.84228838046307944812813500221293775":
--ildouble: 1
--ldouble: 1
- Test "tan (pi/4) == 1":
--double: 0.5
--idouble: 0.5
--
--# tanh
--Test "tanh (0.7) == 0.60436777711716349631":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "tanh (-0.7) == -0.60436777711716349631":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
--Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
--ldouble: 1
-+
-+# tanh
-+Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
- ildouble: 1
-+ldouble: 1
- Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
-+ildouble: 1
- ldouble: 1
-+Test "tanh (0.75) == 0.635148952387287319214434357312496495":
- ildouble: 1
--Function: "tanh":
-+ldouble: 1
-+Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
-+ildouble: 1
-+ldouble: 1
-
- # tgamma
- Test "tgamma (-0.5) == -2 sqrt (pi)":
-@@ -774,198 +731,193 @@
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+Test "tgamma (4) == 6":
-+ildouble: 1
-+ldouble: 1
-
- # y0
--Test "y0 (0.7) == -0.19066492933739506743":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "y0 (1.0) == 0.088256964215676957983":
-+Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "y0 (1.5) == 0.38244892379775884396":
-+Test "y0 (1.5) == 0.382448923797758843955068554978089862":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "y0 (10.0) == 0.055671167283599391424":
-+Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
- float: 1
- ifloat: 1
--Test "y0 (8.0) == 0.22352148938756622053":
-+ildouble: 3
-+ldouble: 3
-+Test "y0 (8.0) == 0.223521489387566220527323400498620359":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 3
-+ldouble: 3
-
- # y1
--Test "y1 (0.1) == -6.4589510947020269877":
-+Test "y1 (0.125) == -5.19993611253477499595928744876579921":
- double: 1
- idouble: 1
--Test "y1 (0.7) == -1.1032498719076333697":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--Test "y1 (1.5) == -0.41230862697391129595":
-+Test "y1 (0.75) == -1.03759455076928541973767132140642198":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (1.5) == -0.412308626973911295952829820633445323":
- float: 1
- ifloat: 1
--Test "y1 (10.0) == 0.24901542420695388392":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (10.0) == 0.249015424206953883923283474663222803":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "y1 (2.0) == -0.10703243154093754689":
-+Test "y1 (2.0) == -0.107032431540937546888370772277476637":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "y1 (8.0) == -0.15806046173124749426":
-+ildouble: 1
-+ldouble: 1
-+Test "y1 (8.0) == -0.158060461731247494255555266187483550":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- # yn
--Test "yn (0, 0.7) == -0.19066492933739506743":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--Test "yn (0, 1.0) == 0.088256964215676957983":
-+Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "yn (0, 1.5) == 0.38244892379775884396":
-+Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
--Test "yn (0, 10.0) == 0.055671167283599391424":
-+Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
- float: 1
- ifloat: 1
--Test "yn (0, 8.0) == 0.22352148938756622053":
-+ildouble: 3
-+ldouble: 3
-+Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (1, 0.1) == -6.4589510947020269877":
--double: 1
--idouble: 1
--Test "yn (1, 0.7) == -1.1032498719076333697":
-+ildouble: 3
-+ldouble: 3
-+Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
--Test "yn (1, 1.5) == -0.41230862697391129595":
-+Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
- float: 1
- ifloat: 1
--Test "yn (1, 10.0) == 0.24901542420695388392":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
- double: 3
- float: 1
- idouble: 3
- ifloat: 1
--Test "yn (1, 2.0) == -0.10703243154093754689":
-+Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (1, 8.0) == -0.15806046173124749426":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
--Test "yn (10, 0.1) == -0.11831335132045197885e19":
--double: 2
--float: 2
--idouble: 2
--ifloat: 2
--Test "yn (10, 0.7) == -0.42447194260703866924e10":
--double: 3
--idouble: 3
--Test "yn (10, 1.0) == -0.12161801427868918929e9":
-+ildouble: 1
-+ldouble: 1
-+Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
- double: 1
- idouble: 1
--Test "yn (10, 10.0) == -0.35981415218340272205":
-+ildouble: 2
-+ldouble: 2
-+Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (10, 2.0) == -129184.54220803928264":
--double: 2
--idouble: 2
--Test "yn (3, 0.1) == -5099.3323786129048894":
-+ildouble: 5
-+ldouble: 5
-+Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
--Test "yn (3, 0.7) == -15.819479052819633505":
--double: 3
-+ildouble: 1
-+ldouble: 1
-+Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
-+double: 1
- float: 1
--idouble: 3
-+idouble: 1
- ifloat: 1
--Test "yn (3, 10.0) == -0.25136265718383732978":
-+ildouble: 2
-+ldouble: 2
-+Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-+double: 2
-+idouble: 2
-+ildouble: 2
-+ldouble: 2
-+Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
-+double: 1
-+idouble: 1
-+Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "yn (3, 2.0) == -1.1277837768404277861":
-+ildouble: 2
-+ldouble: 2
-+Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
- double: 1
-+float: 1
- idouble: 1
--
--# Maximal error of functions:
--Function: "acos":
--ldouble: 1
-+ifloat: 1
- ildouble: 1
--
--Function: "asin":
-+ldouble: 1
-+Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
- double: 1
--float: 2
- idouble: 1
--ifloat: 2
--
--Function: "atan":
--ildouble: 1
--ldouble: 1
-
-+# Maximal error of functions:
- Function: "atan2":
-+float: 3
-+ifloat: 3
- ildouble: 1
- ldouble: 1
--float: 4
--ifloat: 4
-
- Function: "atanh":
--double: 1
--idouble: 1
--
--Function: "cabs":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
--Function: Real part of "cacos":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Imaginary part of "cacos":
--float: 1
--ifloat: 1
--ildouble: 3
--ldouble: 3
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "cacosh":
- double: 1
-@@ -984,18 +936,14 @@
- ldouble: 1
-
- Function: Real part of "casin":
--double: 3
--float: 2
--idouble: 3
--ifloat: 2
--ildouble: 1
--ldouble: 1
--
--Function: Imaginary part of "casin":
-+double: 1
- float: 1
-+idouble: 1
- ifloat: 1
--ildouble: 3
--ldouble: 3
-+
-+Function: Imaginary part of "casin":
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "casinh":
- double: 5
-@@ -1027,28 +975,30 @@
-
- Function: Real part of "catanh":
- double: 4
--float: 1
- idouble: 4
--ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Imaginary part of "catanh":
--double: 1
- float: 6
--idouble: 1
- ifloat: 6
-+ildouble: 1
-+ldouble: 1
-
- Function: "cbrt":
- double: 1
- idouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "ccos":
- double: 1
-+float: 1
- idouble: 1
-+ifloat: 1
-
- Function: Imaginary part of "ccos":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Real part of "ccosh":
-@@ -1058,15 +1008,11 @@
- ifloat: 1
-
- Function: Imaginary part of "ccosh":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Real part of "cexp":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-@@ -1077,16 +1023,18 @@
- ildouble: 1
- ldouble: 1
-
-+Function: Real part of "clog":
-+float: 1
-+ifloat: 1
-+ildouble: 1
-+ldouble: 1
-+
- Function: Imaginary part of "clog":
--double: 1
- float: 3
--idouble: 1
- ifloat: 3
-
- Function: Real part of "clog10":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: Imaginary part of "clog10":
-@@ -1094,6 +1042,7 @@
- float: 5
- idouble: 1
- ifloat: 5
-+ldouble: 1
-
- Function: "cos":
- double: 2
-@@ -1104,24 +1053,24 @@
- ldouble: 1
-
- Function: Real part of "cpow":
--double: 1
-+double: 2
- float: 4
--idouble: 1
-+idouble: 2
- ifloat: 4
--ildouble: 3
--ldouble: 3
-+ildouble: 1
-+ldouble: 1
-
- Function: Imaginary part of "cpow":
--double: 1.1031
-+double: 2
- float: 2
--idouble: 1.1031
-+idouble: 2
- ifloat: 2
--ildouble: 0.9006
--ldouble: 0.9006
-+ildouble: 1
-+ldouble: 1
-
--Function: Imaginary part of "csin":
--float: 1
--ifloat: 1
-+Function: Real part of "csin":
-+ildouble: 1
-+ldouble: 1
-
- Function: Real part of "csinh":
- float: 1
-@@ -1134,48 +1083,44 @@
- ifloat: 1
-
- Function: Real part of "csqrt":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: Imaginary part of "csqrt":
--float: 1
--ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: Real part of "ctan":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-
- Function: Imaginary part of "ctan":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+ildouble: 2
-+ldouble: 2
-
- Function: Real part of "ctanh":
--double: 2
-+double: 1
- float: 2
--idouble: 2
-+idouble: 1
- ifloat: 2
-
- Function: Imaginary part of "ctanh":
--double: 2
- float: 1
--idouble: 2
- ifloat: 1
-
-+Function: "erf":
-+double: 1
-+idouble: 1
-+
- Function: "erfc":
--double: 24
--float: 12
--idouble: 24
--ifloat: 12
-+double: 1
-+idouble: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "exp10":
- double: 6
-@@ -1190,19 +1135,15 @@
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
--Function: "fmod":
--double: 2
--float: 1
--idouble: 2
--ifloat: 1
--ildouble: 2
--ldouble: 2
-+Function: "gamma":
-+ildouble: 1
-+ldouble: 1
-
- Function: "hypot":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
-
- Function: "j0":
-@@ -1210,52 +1151,50 @@
- float: 2
- idouble: 2
- ifloat: 2
-+ildouble: 2
-+ldouble: 2
-
- Function: "j1":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
-+ildouble: 4
-+ldouble: 4
-
- Function: "jn":
--double: 6
-+double: 4
- float: 4
--idouble: 6
-+idouble: 4
- ifloat: 4
-+ildouble: 4
-+ldouble: 4
-
- Function: "lgamma":
- double: 1
- float: 2
- idouble: 1
- ifloat: 2
--
--Function: "log":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: "log10":
- double: 1
--float: 1
-+float: 2
- idouble: 1
--ifloat: 1
-+ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- Function: "log1p":
--double: 1
- float: 1
--idouble: 1
- ifloat: 1
- ildouble: 1
- ldouble: 1
-
- Function: "log2":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "sincos":
- double: 1
-@@ -1265,50 +1204,48 @@
- ildouble: 1
- ldouble: 1
-
--Function: "sinh":
--double: 1
--float: 1
--idouble: 1
--ifloat: 1
--
- Function: "sqrt":
- ildouble: 1
- ldouble: 1
-
- Function: "tan":
--double: 0.5
--idouble: 0.5
--ildouble: 1
--ldouble: 1
--
--Function: "tanh":
- double: 1
--float: 1
- idouble: 1
--ifloat: 1
-+
-+Function: "tanh":
-+ildouble: 1
-+ldouble: 1
-
- Function: "tgamma":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
-+ildouble: 1
-+ldouble: 1
-
- Function: "y0":
- double: 2
- float: 1
- idouble: 2
- ifloat: 1
-+ildouble: 3
-+ldouble: 3
-
- Function: "y1":
- double: 3
- float: 2
- idouble: 3
- ifloat: 2
-+ildouble: 1
-+ldouble: 1
-
- Function: "yn":
- double: 3
- float: 2
- idouble: 3
- ifloat: 2
-+ildouble: 5
-+ldouble: 5
-
- # end of automatic generation
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/Makefile glibc-2.3.2-200304020432/sysdeps/unix/Makefile
---- glibc-2.3.2/sysdeps/unix/Makefile Thu Jan 16 01:47:25 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/Makefile Thu Mar 27 10:47:16 2003
-@@ -1,4 +1,5 @@
--# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
-+# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,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
-@@ -281,10 +282,47 @@
-
- ifeq (misc,$(subdir))
- sysdep_routines += $(unix-extra-syscalls)
-+
-+ifdef unix-stub-syscalls
-+# The system call entry points in this list are supposed to be additional
-+# functions not overriding any other sysdeps/.../call.c implementation, but
-+# their system call numbers are unavailable in the kernel headers we're
-+# using. Instead of a system call stub, these get a function that fails
-+# with ENOSYS. We just generate a single module defining one function and
-+# making all these entry point names aliases for it.
-+sysdep_routines += stub-syscalls
-+$(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
-+ $(..)sysdeps/unix/Makefile
-+ (echo '#include <errno.h>'; \
-+ echo 'long int _no_syscall (void)'; \
-+ echo '{ __set_errno (ENOSYS); return -1L; }'; \
-+ for call in $(unix-stub-syscalls); do \
-+ case $$call in \
-+ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
-+ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
-+ echo "default_symbol_version \
-+ ($${call}_$${ver}, $$call, $$ver);" ;; \
-+ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
-+ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
-+ echo "symbol_version ($${call}_$${ver}, $$call, $$ver);" ;; \
-+ *) echo "weak_alias (_no_syscall, $$call)"; \
-+ echo "stub_warning ($$call)"; \
-+ echo "weak_alias (_no_syscall, __GI_$$call)" ;; \
-+ esac; \
-+ echo '#include <stub-tag.h>'; \
-+ done) > $@T
-+ mv -f $@T $@
-+generated += stub-syscalls.c
-+endif
- endif
-
- export sysdirs
- export asm_CPP := $(COMPILE.S) -E -x assembler-with-cpp
-+
-+# This is the end of the pipeline for compiling the syscall stubs.
-+# The stdin in assembler with cpp using sysdep.h macros.
-+# Be sure to disable debugging info since it would all just say "<stdin>".
-+compile-syscall = $(filter-out -g%,$(COMPILE.S)) -x assembler-with-cpp -o $@ -
-
- ifndef avoid-generated
- $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/alpha/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/alpha/sysdep.h
---- glibc-2.3.2/sysdeps/unix/alpha/sysdep.h Sun Jan 26 22:07:32 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/alpha/sysdep.h Sun Mar 23 20:42:22 2003
-@@ -119,6 +119,21 @@
- END(sym)
- #endif
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .globl name; \
-+ .align 4; \
-+ .ent name,0; \
-+__LABEL(name) \
-+ PSEUDO_PROLOGUE; \
-+ PSEUDO_PREPARE_ARGS \
-+ lda v0, SYS_ify(syscall_name); \
-+ call_pal PAL_callsys;
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) END(sym)
-+
-+#define ret_NOERRNO ret
-+
- #define r0 v0
- #define r1 a4
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/clock_gettime.c glibc-2.3.2-200304020432/sysdeps/unix/clock_gettime.c
---- glibc-2.3.2/sysdeps/unix/clock_gettime.c Fri Feb 1 00:39:56 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/clock_gettime.c Sun Mar 16 11:08:19 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -41,17 +41,28 @@
- int
- clock_gettime (clockid_t clock_id, struct timespec *tp)
- {
-- struct timeval tv;
- int retval = -1;
-
- switch (clock_id)
- {
-+#define HANDLE_REALTIME \
-+ do { \
-+ struct timeval tv; \
-+ retval = gettimeofday (&tv, NULL); \
-+ if (retval == 0) \
-+ /* Convert into `timespec'. */ \
-+ TIMEVAL_TO_TIMESPEC (&tv, tp); \
-+ } while (0)
-+
-+#ifdef SYSDEP_GETTIME
-+ SYSDEP_GETTIME;
-+#endif
-+
-+#ifndef HANDLED_REALTIME
- case CLOCK_REALTIME:
-- retval = gettimeofday (&tv, NULL);
-- if (retval == 0)
-- /* Convert into `timespec'. */
-- TIMEVAL_TO_TIMESPEC (&tv, tp);
-+ HANDLE_REALTIME;
- break;
-+#endif
-
- #if HP_TIMING_AVAIL
- case CLOCK_PROCESS_CPUTIME_ID:
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/clock_nanosleep.c glibc-2.3.2-200304020432/sysdeps/unix/clock_nanosleep.c
---- glibc-2.3.2/sysdeps/unix/clock_nanosleep.c Sat Jul 7 21:21:29 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/clock_nanosleep.c Mon Mar 3 05:46:57 2003
-@@ -1,5 +1,5 @@
- /* High-resolution sleep with the specified clock.
-- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 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
-@@ -24,11 +24,16 @@
-
-
- #if HP_TIMING_AVAIL
--# define CLOCK_P(clock) \
-- (clock) != CLOCK_PROCESS_CPUTIME_ID \
-- && (clock) != CLOCK_THREAD_CPUTIME_ID
-+# define CPUCLOCK_P(clock) \
-+ ((clock) != CLOCK_PROCESS_CPUTIME_ID \
-+ && (clock) != CLOCK_THREAD_CPUTIME_ID)
- #else
--# define CLOCK_P(clock) 0
-+# define CPUCLOCK_P(clock) 0
-+#endif
-+
-+#ifndef INVALID_CLOCK_P
-+# define INVALID_CLOCK_P(cl) \
-+ ((cl) < CLOCK_REALTIME || (cl) > CLOCK_THREAD_CPUTIME_ID || CPUCLOCK_P (cl))
- #endif
-
-
-@@ -44,6 +49,16 @@
- || __builtin_expect (req->tv_nsec, 0) >= 1000000000)
- return EINVAL;
-
-+ if (CPUCLOCK_P (clock_id))
-+ return ENOTSUP;
-+
-+ if (INVALID_CLOCK_P (clock_id))
-+ return EINVAL;
-+
-+#ifdef SYSDEP_NANOSLEEP
-+ SYSDEP_NANOSLEEP;
-+#endif
-+
- /* If we got an absolute time, remap it. */
- if (flags == TIMER_ABSTIME)
- {
-@@ -76,11 +91,8 @@
- else if (__builtin_expect (flags, 0) != 0)
- return EINVAL;
- else if (clock_id != CLOCK_REALTIME)
-- {
-- /* Make sure the clock ID is correct. */
-- if (__builtin_expect (! CLOCK_P (clock_id), 0))
-- return EINVAL;
-- }
-+ /* Not supported. */
-+ return ENOTSUP;
-
- return __builtin_expect (nanosleep (req, rem), 0) ? errno : 0;
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/clock_settime.c glibc-2.3.2-200304020432/sysdeps/unix/clock_settime.c
---- glibc-2.3.2/sysdeps/unix/clock_settime.c Fri Feb 1 00:40:41 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/clock_settime.c Sun Mar 16 11:08:38 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 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
-@@ -40,7 +40,6 @@
- int
- clock_settime (clockid_t clock_id, const struct timespec *tp)
- {
-- struct timeval tv;
- int retval;
-
- /* Make sure the time cvalue is OK. */
-@@ -52,11 +51,23 @@
-
- switch (clock_id)
- {
-- case CLOCK_REALTIME:
-- TIMESPEC_TO_TIMEVAL (&tv, tp);
-+#define HANDLE_REALTIME \
-+ do { \
-+ struct timeval tv; \
-+ TIMESPEC_TO_TIMEVAL (&tv, tp); \
-+ \
-+ retval = settimeofday (&tv, NULL); \
-+ } while (0)
-
-- retval = settimeofday (&tv, NULL);
-+#ifdef SYSDEP_GETTIME
-+ SYSDEP_GETTIME;
-+#endif
-+
-+#ifndef HANDLED_REALTIME
-+ case CLOCK_REALTIME:
-+ HANDLE_REALTIME;
- break;
-+#endif
-
- #if HP_TIMING_AVAIL
- case CLOCK_PROCESS_CPUTIME_ID:
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/make-syscalls.sh glibc-2.3.2-200304020432/sysdeps/unix/make-syscalls.sh
---- glibc-2.3.2/sysdeps/unix/make-syscalls.sh Thu Jan 16 01:47:25 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/make-syscalls.sh Wed Mar 26 23:49:15 2003
-@@ -84,8 +84,10 @@
- esac
-
- cancellable=
-+ noerrno=
- case $args in
- C*) cancellable=-cancel; args=`echo $args | sed 's/C:\?//'`;;
-+ E*) noerrno=_NOERRNO; args=`echo $args | sed 's/E:\?//'`;;
- esac
-
- # Derive the number of arguments from the argument signature
-@@ -109,6 +111,16 @@
- echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
-
- case x$srcfile"$callnum" in
-+ x--)
-+ # Undefined callnum for an extra syscall.
-+ if [ x$caller != x- ]; then
-+ if [ x$noerrno != x ]; then
-+ echo >&2 "$0: no number for $fileno, no-error syscall ($strong $weak)"
-+ exit 2
-+ fi
-+ echo "unix-stub-syscalls += $strong $weak"
-+ fi
-+ ;;
- x*-) ;; ### Do nothing for undefined callnum
- x-*)
- echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
-@@ -149,9 +161,9 @@
- echo "\
- \$(make-target-directory)
- (echo '#include <sysdep$cancellable.h>'; \\
-- echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
-- echo ' ret'; \\
-- echo 'PSEUDO_END($strong)'; \\
-+ echo 'PSEUDO$noerrno ($strong, $syscall, $nargs)'; \\
-+ echo ' ret$noerrno'; \\
-+ echo 'PSEUDO_END$noerrno($strong)'; \\
- echo 'libc_hidden_def ($strong)'; \\"
- ;;
- esac
-@@ -198,7 +210,7 @@
- done
-
- # And finally, pipe this all into the compiler.
-- echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
-+ echo ' ) | $(compile-syscall)'
-
- case $weak in
- *@*)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/brk.S glibc-2.3.2-200304020432/sysdeps/unix/mips/brk.S
---- glibc-2.3.2/sysdeps/unix/mips/brk.S Sun Jan 12 08:54:14 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/brk.S Mon Mar 17 16:47:12 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -18,6 +18,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <sys/asm.h>
-
- #ifndef SYS_brk
- #define SYS_brk 17
-@@ -37,9 +38,9 @@
- .set reorder
- /* Handle the query case. */
- bnez a0, 1f
-- move a0,v0
-+ move a0, v0
- 1: /* Update __curbrk and exit cleanly. */
-- sw a0, __curbrk
-+ PTR_S a0, __curbrk
- move v0, zero
- jr ra
- PSEUDO_END(__brk)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/mips/mips32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/mips32/sysdep.h Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,52 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Brendan Kehoe (brendan@zen.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.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99: la t9,__syscall_error; \
-+ jr t9; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ .cpload t9; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ nop; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/mips/mips64/n32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/mips64/n32/sysdep.h Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,57 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+#ifdef __ASSEMBLER__
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99:; \
-+ .set noat; \
-+ .cpsetup t9, $1, name; \
-+ .set at; \
-+ la t9,__syscall_error; \
-+ .cpreturn; \
-+ jr t9; \
-+ ENTRY(name) \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
-+
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/mips/mips64/n64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/mips64/n64/sysdep.h Sat Mar 29 09:15:28 2003
-@@ -0,0 +1,57 @@
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Alexandre Oliva <aoliva@redhat.com>.
-+
-+ 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 <sysdeps/unix/mips/sysdep.h>
-+
-+#ifdef __ASSEMBLER__
-+
-+/* Note that while it's better structurally, going back to call __syscall_error
-+ can make things confusing if you're debugging---it looks like it's jumping
-+ backwards into the previous fn. */
-+#ifdef __PIC__
-+#define PSEUDO(name, syscall_name, args) \
-+ .align 2; \
-+ 99:; \
-+ .set noat; \
-+ .cpsetup t9, $1, name; \
-+ .set at; \
-+ dla t9,__syscall_error; \
-+ .cpreturn; \
-+ jr t9; \
-+ ENTRY(name) \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#else
-+#define PSEUDO(name, syscall_name, args) \
-+ .set noreorder; \
-+ .align 2; \
-+ 99: j __syscall_error; \
-+ ENTRY(name) \
-+ .set noreorder; \
-+ li v0, SYS_ify(syscall_name); \
-+ syscall; \
-+ .set reorder; \
-+ bne a3, zero, 99b; \
-+L(syse1):
-+#endif
-+
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/sysdep.S glibc-2.3.2-200304020432/sysdeps/unix/mips/sysdep.S
---- glibc-2.3.2/sysdeps/unix/mips/sysdep.S Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/sysdep.S Fri Mar 28 08:02:35 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992,93,94,97,98,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -20,47 +21,52 @@
- #include <sysdep.h>
- #define _ERRNO_H
- #include <bits/errno.h>
-+#include <sys/asm.h>
-
- #ifdef _LIBC_REENTRANT
-
-+LOCALSZ= 3
-+FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
-+RAOFF= FRAMESZ-(1*SZREG)
-+GPOFF= FRAMESZ-(2*SZREG)
-+V0OFF= FRAMESZ-(3*SZREG)
-+
- ENTRY(__syscall_error)
- #ifdef __PIC__
-- .set noreorder
- .set noat
-- move AT, ra
-- bltzal zero, 0f
-- nop
--0: .cpload ra
-- move ra, AT
-+ SETUP_GPX (AT)
- .set at
-- .set reorder
- #endif
-- subu sp, 32
-+ PTR_SUBU sp, FRAMESZ
-+ .set noat
-+ SETUP_GPX64(GPOFF,AT)
-+ .set at
- #ifdef __PIC__
-- .cprestore 16
-+ SAVE_GP(GPOFF)
- #endif
-- sw v0, 20(sp)
-- sw ra, 24(sp)
-+ REG_S v0, V0OFF(sp)
-+ REG_S ra, RAOFF(sp)
-
- #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
-- bne v0, EWOULDBLOCK_sys, skip
-+ bne v0, EWOULDBLOCK_sys, L(skip)
- nop
- li v0, EAGAIN
--skip:
-+L(skip):
- #endif
- /* Find our per-thread errno address */
- jal __errno_location
-
- /* Store the error value. */
-- lw t0, 20(sp)
-- sw t0, 0(v0)
-+ REG_L t4, V0OFF(sp)
-+ sw t4, 0(v0)
-
- /* And just kick back a -1. */
-- lw ra, 24(sp)
-- addiu sp, 32
-+ REG_L ra, RAOFF(sp)
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- li v0, -1
- j ra
- END(__syscall_error)
-@@ -70,29 +76,25 @@
-
- ENTRY(__syscall_error)
- #ifdef __PIC__
-- .set noreorder
-- .set noat
-- move AT, ra
-- bltzal zero, 0f
-- nop
--0: .cpload ra
-- move ra, AT
-- .set at
-- .set reorder
-+ SETUP_GPX (AT)
- #endif
-+ SETUP_GPX64 (t9, AT)
-+
- #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
-- bne v0, EWOULDBLOCK_sys, skip
-+ bne v0, EWOULDBLOCK_sys, L(skip)
- li v0, EAGAIN
--skip:
-+L(skip):
- #endif
- /* Store it in errno... */
- sw v0, errno
-
- /* And just kick back a -1. */
- li v0, -1
-+
-+ RESTORE_GP64
- j ra
- END(__syscall_error)
- #endif /* _LIBC_REENTRANT */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/mips/sysdep.h
---- glibc-2.3.2/sysdeps/unix/mips/sysdep.h Wed Nov 6 19:22:28 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/sysdep.h Sat Mar 29 09:15:28 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992,95,97,99,2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -29,48 +30,36 @@
- .ent name,0; \
- name##:
-
--/* Note that while it's better structurally, going back to call __syscall_error
-- can make things confusing if you're debugging---it looks like it's jumping
-- backwards into the previous fn. */
--#ifdef __PIC__
-- #define PSEUDO(name, syscall_name, args) \
-- .align 2; \
-- 99: la t9,__syscall_error; \
-- jr t9; \
-- ENTRY(name) \
-- .set noreorder; \
-- .cpload t9; \
-- li v0, SYS_ify(syscall_name); \
-- syscall; \
-- .set reorder; \
-- bne a3, zero, 99b; \
--syse1:
--#else
--#define PSEUDO(name, syscall_name, args) \
-- .set noreorder; \
-+#undef END
-+#define END(function) \
-+ .end function; \
-+ .size function,.-function
-+
-+#define ret j ra ; nop
-+
-+#define PSEUDO_END(sym) .end sym; .size sym,.-sym
-+
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
- .align 2; \
-- 99: j __syscall_error; \
-- nop; \
- ENTRY(name) \
- .set noreorder; \
- li v0, SYS_ify(syscall_name); \
-- syscall; \
-- .set reorder; \
-- bne a3, zero, 99b; \
--syse1:
--#endif
--
--#undef PSEUDO_END
--#define PSEUDO_END(sym) .end sym
-+ syscall
-
--#define ret j ra ; nop
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) .end sym; .size sym,.-sym
-
--#undef END
--#define END(sym) .end sym
-+#define ret_NOERRNO ret
-
- #define r0 v0
- #define r1 v1
- /* The mips move insn is d,s. */
- #define MOVE(x,y) move y , x
-+
-+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
-+# define L(label) $L ## label
-+#else
-+# define L(label) .L ## label
-+#endif
-
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/mips/wait.S glibc-2.3.2-200304020432/sysdeps/unix/mips/wait.S
---- glibc-2.3.2/sysdeps/unix/mips/wait.S Sat Jul 7 21:21:30 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/mips/wait.S Fri Mar 14 04:59:37 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1992, 1994, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1992, 1994, 1995, 1997, 2002, 2003
-+ Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
-@@ -28,18 +29,18 @@
-
- li v0, SYS_wait
- syscall
-- beqz a3, noerror
-+ beqz a3, L(noerror)
- nop
- j __syscall_error
- nop
-
--noerror:
-+L(noerror):
- /* If the arg is not NULL, store v1 there. */
-- beqz a0, noarg
-+ beqz a0, L(noarg)
- nop
- sw v1, 0(a0)
- nop
--noarg:
-+L(noarg):
- ret
- .end __wait
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sparc/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sparc/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sparc/sysdep.h Sat Jul 7 21:21:30 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sparc/sysdep.h Sun Mar 23 20:42:22 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1994, 1995, 1997, 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
-@@ -52,7 +52,14 @@
- jmp %g1 + %lo(syscall_error); nop; \
- 1:
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .global syscall_error; \
-+ ENTRY (name) \
-+ mov SYS_ify(syscall_name), %g1; \
-+ ta 0
-+
- #define ret retl; nop
-+#define ret_NOERRNO retl; nop
- #define r0 %o0
- #define r1 %o1
- #define MOVE(x,y) mov x, y
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/syscalls.list glibc-2.3.2-200304020432/sysdeps/unix/syscalls.list
---- glibc-2.3.2/sysdeps/unix/syscalls.list Fri Jan 31 04:39:32 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/syscalls.list Sun Mar 23 20:36:50 2003
-@@ -14,13 +14,13 @@
- fstatfs - fstatfs i:ip __fstatfs fstatfs
- fsync - fsync Ci:i __libc_fsync fsync
- getdomain - getdomainname i:si getdomainname
--getgid - getgid i: __getgid getgid
-+getgid - getgid Ei: __getgid getgid
- getgroups - getgroups i:ip __getgroups getgroups
- getitimer - getitimer i:ip __getitimer getitimer
--getpid - getpid i: __getpid getpid
-+getpid - getpid Ei: __getpid getpid
- getpriority - getpriority i:ii getpriority
- getrlimit - getrlimit i:ip __getrlimit getrlimit
--getuid - getuid i: __getuid getuid
-+getuid - getuid Ei: __getuid getuid
- ioctl - ioctl i:iiI __ioctl ioctl
- kill - kill i:ii __kill kill
- link - link i:ss __link link
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysdep.h Sat Jul 7 21:21:29 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysdep.h Wed Mar 26 19:07:28 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 92, 93, 96, 98 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 92, 93, 96, 98, 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
-@@ -46,6 +46,9 @@
- to generate correct debugging information. */
- #ifndef PSEUDO_END
- #define PSEUDO_END(sym)
-+#endif
-+#ifndef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym)
- #endif
-
- /* Wrappers around system calls should normally inline the system call code.
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/Makefile
---- glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile Tue Dec 17 00:36:52 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/Makefile Sat Mar 15 00:36:59 2003
-@@ -42,7 +42,7 @@
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort > $(@:.d=.h).new32; \
- SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
-- $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
-+ $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \
- $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort > $(@:.d=.h).new64; \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h Sat Jul 7 21:21:33 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/mman.h Mon Mar 3 10:20:08 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/Alpha version.
-- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -60,11 +60,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x1000 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x2000 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x4000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x8000 /* Lock the mapping. */
-+# define MAP_GROWSDOWN 0x01000 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x02000 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x04000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x08000 /* Lock the mapping. */
- # define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h Thu Dec 5 01:21:41 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h Thu Mar 27 00:41:57 2003
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/Alpha version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -22,8 +22,6 @@
- # error "Never include this file directly. Use <signal.h> instead"
- #endif
-
--#include <bits/wordsize.h>
--
- #if (!defined __have_sigval_t \
- && (defined _SIGNAL_H || defined __need_siginfo_t \
- || defined __need_sigevent_t))
-@@ -42,11 +40,7 @@
- # define __have_siginfo_t 1
-
- # define __SI_MAX_SIZE 128
--# if __WORDSIZE == 64
- # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
--# else
--# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
--# endif
-
- typedef struct siginfo
- {
-@@ -69,8 +63,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -110,8 +105,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -261,14 +256,7 @@
-
- /* Structure to transport application-defined values with signals. */
- # define __SIGEV_MAX_SIZE 64
--# if __WORDSIZE == 64
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
--# else
--# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
--# endif
--
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
-
- typedef struct sigevent
- {
-@@ -280,6 +268,10 @@
- {
- int _pad[__SIGEV_PAD_SIZE];
-
-+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-+ thread to receive the signal. */
-+ __pid_t _tid;
-+
- struct
- {
- void (*_function) (sigval_t); /* Function to start. */
-@@ -299,8 +291,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/signum.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h Sat Jul 7 21:21:33 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/signum.h Tue Apr 1 08:15:15 2003
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/Alpha version.
-- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 1999, 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
-@@ -69,7 +69,7 @@
- #define SIGPWR SIGINFO
- #define SIGIOT SIGABRT
-
--#define _NSIG 64 /* Biggest signal number + 1. */
-+#define _NSIG 65 /* Biggest signal number + 1. */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
- #define SIGRTMAX (__libc_current_sigrtmax ())
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h Thu Oct 24 01:48:49 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h Tue Mar 25 22:59:17 2003
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,7 +54,7 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __U32_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/bits/mman.h Mon Mar 3 10:57:38 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/ARM version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/mmap64.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S Sat Jul 7 21:21:33 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/mmap64.S Thu Mar 27 03:45:46 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 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
-@@ -21,6 +21,8 @@
- #define EINVAL 22
- #define ENOSYS 38
-
-+#include "kernel-features.h"
-+
- /* The mmap2 system call takes six arguments, all in registers. */
- .text
- ENTRY (__mmap64)
-@@ -39,6 +41,10 @@
- swi SYS_ify (mmap2)
- cmn r0, $4096
- LOADREGS(ccfd, sp!, {r4, r5, pc})
-+# ifdef __ASSUME_MMAP2_SYSCALL
-+ ldmfd sp!, {r4, r5, lr}
-+ b PLTJMP(syscall_error)
-+# else
- cmn r0, $ENOSYS
- ldmnefd sp!, {r4, r5, lr}
- bne PLTJMP(syscall_error)
-@@ -49,6 +55,7 @@
- teq r5, $0
- ldmeqfd sp!, {r4, r5, lr}
- beq PLTJMP(__mmap)
-+# endif
- .Linval:
- mov r0, $-EINVAL
- ldmfd sp!, {r4, r5, lr}
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/sigaction.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c Fri Jan 3 00:26:04 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/sigaction.c Thu Mar 27 03:45:46 2003
-@@ -22,6 +22,7 @@
-
- #include <sysdep.h>
- #include <sys/syscall.h>
-+#include <kernel-features.h>
-
- /* The difference here is that the sigaction structure used in the
- kernel is not the same as we use in the libc. Therefore we must
-@@ -60,15 +61,21 @@
- const struct sigaction *act;
- struct sigaction *oact;
- {
-+#ifndef __ASSUME_REALTIME_SIGNALS
- struct old_kernel_sigaction k_sigact, k_osigact;
-+#endif
- int result;
-
- #ifdef __NR_rt_sigaction
- /* First try the RT signals. */
-+# ifndef __ASSUME_REALTIME_SIGNALS
- if (!__libc_missing_rt_sigs)
-+# endif
- {
- struct kernel_sigaction kact, koact;
-+# ifndef __ASSUME_REALTIME_SIGNALS
- int saved_errno = errno;
-+# endif
-
- if (act)
- {
-@@ -99,7 +106,9 @@
- act ? __ptrvalue (&kact) : NULL,
- oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
-
-+# ifndef __ASSUME_REALTIME_SIGNALS
- if (result >= 0 || errno != ENOSYS)
-+# endif
- {
- if (oact && result >= 0)
- {
-@@ -113,17 +122,20 @@
- return result;
- }
-
-+# ifndef __ASSUME_REALTIME_SIGNALS
- __set_errno (saved_errno);
- __libc_missing_rt_sigs = 1;
-+# endif
- }
- #endif
-
-+#ifndef __ASSUME_REALTIME_SIGNALS
- if (act)
- {
- k_sigact.k_sa_handler = act->sa_handler;
- k_sigact.sa_mask = act->sa_mask.__val[0];
- k_sigact.sa_flags = act->sa_flags;
--#ifdef HAVE_SA_RESTORER
-+# ifdef HAVE_SA_RESTORER
- /* See the comments above for why we test SA_ONSTACK. */
- if (k_sigact.sa_flags & (SA_RESTORER | SA_ONSTACK))
- k_sigact.sa_restorer = act->sa_restorer;
-@@ -132,7 +144,7 @@
- k_sigact.sa_restorer = choose_restorer (k_sigact.sa_flags);
- k_sigact.sa_flags |= SA_RESTORER;
- }
--#endif
-+# endif
- }
- result = INLINE_SYSCALL (sigaction, 3, sig,
- act ? __ptrvalue (&k_sigact) : NULL,
-@@ -142,11 +154,12 @@
- oact->sa_handler = k_osigact.k_sa_handler;
- oact->sa_mask.__val[0] = k_osigact.sa_mask;
- oact->sa_flags = k_osigact.sa_flags;
--#ifdef HAVE_SA_RESTORER
-+# ifdef HAVE_SA_RESTORER
- oact->sa_restorer = k_osigact.sa_restorer;
--#endif
-+# endif
- }
- return result;
-+#endif
- }
- libc_hidden_def (__libc_sigaction)
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h Thu Feb 20 21:22:10 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/sysdep.h Thu Mar 27 03:45:49 2003
-@@ -64,6 +64,22 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name); \
-+ DO_CALL (syscall_name, args);
-+
-+#define PSEUDO_RET_NOERRNO \
-+ RETINSTR(mov, pc, lr);
-+
-+#undef ret_NOERRNO
-+#define ret_NOERRNO PSEUDO_RET_NOERRNO
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- #if NOT_IN_libc
- # define SYSCALL_ERROR __local_syscall_error
- # define SYSCALL_ERROR_HANDLER \
-@@ -158,7 +174,7 @@
- asm volatile ("swi %1 @ syscall " #name \
- : "=r" (_a1) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
-- : "a1", "memory"); \
-+ : "memory"); \
- _sys_result = _a1; \
- } \
- (int) _sys_result; })
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/vfork.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S Tue Dec 31 20:13:28 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/arm/vfork.S Thu Mar 27 03:45:46 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>.
-
-@@ -20,6 +20,7 @@
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-+#include <kernel-features.h>
-
- /* Clone the calling process, but without copying the whole address space.
- The calling process is suspended until the new process exits or is
-@@ -33,17 +34,23 @@
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
-
-+# ifdef __ASSUME_VFORK_SYSCALL
-+ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+# else
- /* Check if vfork syscall is known at all. */
- ldr a2, =-ENOSYS
- teq a1, a2
- bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+# endif
- #endif
-
-+#ifndef __ASSUME_VFORK_SYSCALL
- /* If we don't have vfork, fork is close enough. */
- swi __NR_fork
- cmn a1, #4096
- RETINSTR(movcc, pc, lr)
- b PLTJMP(C_SYMBOL_NAME(__syscall_error))
-+#endif
-
- PSEUDO_END (__vfork)
- libc_hidden_def (__vfork)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/posix_opt.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h Fri Nov 29 02:32:18 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/posix_opt.h Mon Mar 3 05:52:01 2003
-@@ -1,5 +1,5 @@
- /* Define POSIX options for Linux.
-- Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996,1997,1999,2000,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
-@@ -89,5 +89,8 @@
-
- /* The `spawn' function family is supported. */
- #define _POSIX_SPAWN 200112L
-+
-+/* The monotonic clock might be available. */
-+#define _POSIX_MONOTONIC_CLOCK 0
-
- #endif /* bits/posix_opt.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/siginfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h Thu Dec 5 01:09:55 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/siginfo.h Thu Mar 27 00:41:57 2003
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -110,8 +111,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -267,9 +268,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -280,6 +278,10 @@
- {
- int _pad[__SIGEV_PAD_SIZE];
-
-+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
-+ thread to receive the signal. */
-+ __pid_t _tid;
-+
- struct
- {
- void (*_function) (sigval_t); /* Function to start. */
-@@ -299,8 +301,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/signum.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h Sat Feb 22 01:01:06 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/bits/signum.h Tue Apr 1 07:51:57 2003
-@@ -66,7 +66,7 @@
- #define SIGSYS 31 /* Bad system call. */
- #define SIGUNUSED 31
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
-@@ -75,6 +75,6 @@
- /* These are the hard limits of the kernel. These values should not be
- used directly at user level. */
- #define __SIGRTMIN 32
--#define __SIGRTMAX _NSIG
-+#define __SIGRTMAX (_NSIG - 1)
-
- #endif /* <signal.h> included. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_getres.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_getres.c Mon Mar 3 05:48:47 2003
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME and MONOTONIC clock are definitely
-+ supported in the kernel. */
-+# define SYSDEP_GETRES \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ retval = INLINE_SYSCALL (clock_getres, 2, clock_id, res); \
-+ break
-+#elif defined __NR_clock_getres
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_GETRES \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_getres, err, 2, clock_id, res); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_getres
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/posix/clock_getres.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_gettime.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_gettime.c Mon Mar 3 05:49:06 2003
-@@ -0,0 +1,76 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME and MONOTONIC clock are definitely
-+ supported in the kernel. */
-+# define SYSDEP_GETTIME \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ retval = INLINE_SYSCALL (clock_gettime, 2, clock_id, tp); \
-+ break
-+#elif defined __NR_clock_gettime
-+/* Is the syscall known to exist? */
-+int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_GETTIME \
-+ case CLOCK_REALTIME: \
-+ case CLOCK_MONOTONIC: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_gettime, err, 2, clock_id, tp); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_gettime
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/unix/clock_gettime.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_nanosleep.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_nanosleep.c Mon Mar 3 05:49:43 2003
-@@ -0,0 +1,65 @@
-+/* Copyright (C) 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 <time.h>
-+
-+#include <sysdep.h>
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* We can simply use the syscall. The CPU clocks are not supported
-+ with this function. */
-+int
-+clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
-+ struct timespec *rem)
-+{
-+ INTERNAL_SYSCALL_DECL (err);
-+ int r;
-+
-+ r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, req, rem);
-+ return (INTERNAL_SYSCALL_ERROR_P (r, err)
-+ ? INTERNAL_SYSCALL_ERRNO (r, err) : 0);
-+}
-+
-+#else
-+# ifdef __NR_clock_nanosleep
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME and MONOTONIC clock might be available. Try the
-+ syscall first. */
-+# define SYSDEP_NANOSLEEP \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, \
-+ req, rem); \
-+ \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ return 0; \
-+ \
-+ if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS) \
-+ return INTERNAL_SYSCALL_ERRNO (r, err); \
-+ \
-+ __libc_missing_posix_timers = 1; \
-+ }
-+# endif
-+
-+# include <sysdeps/unix/clock_nanosleep.c>
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_settime.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/clock_settime.c Mon Mar 3 05:49:24 2003
-@@ -0,0 +1,73 @@
-+/* Copyright (C) 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>
-+
-+#include "kernel-features.h"
-+
-+
-+#ifdef __ASSUME_POSIX_TIMERS
-+/* This means the REALTIME clock is definitely supported in the
-+ kernel. */
-+# define SYSDEP_SETTIME \
-+ case CLOCK_REALTIME: \
-+ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \
-+ break
-+#elif defined __NR_clock_settime
-+/* Is the syscall known to exist? */
-+extern int __libc_missing_posix_timers attribute_hidden;
-+
-+/* The REALTIME clock might be available. Try the syscall first. */
-+# define SYSDEP_SETTIME \
-+ case CLOCK_REALTIME: \
-+ { \
-+ int e = EINVAL; \
-+ \
-+ if (!__libc_missing_posix_timers) \
-+ { \
-+ INTERNAL_SYSCALL_DECL (err); \
-+ int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp); \
-+ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
-+ { \
-+ retval = 0; \
-+ break; \
-+ } \
-+ \
-+ e = INTERNAL_SYSCALL_ERRNO (r, err); \
-+ if (e == ENOSYS) \
-+ { \
-+ __libc_missing_posix_timers = 1; \
-+ e = EINVAL; \
-+ } \
-+ } \
-+ \
-+ /* Fallback code. */ \
-+ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
-+ HANDLE_REALTIME; \
-+ else \
-+ __set_errno (e); \
-+ } \
-+ break
-+#endif
-+
-+#ifdef __NR_clock_settime
-+/* We handled the REALTIME clock here. */
-+# define HANDLED_REALTIME 1
-+#endif
-+
-+#include <sysdeps/unix/clock_settime.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/configure glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/configure
---- glibc-2.3.2/sysdeps/unix/sysv/linux/configure Wed Feb 26 02:07:12 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/configure Sun Mar 23 03:10:04 2003
-@@ -44,7 +44,11 @@
- else
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <linux/version.h>
- #if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE < (2 *65536+ 0 *256+ 10) /* 2.0.10 */
- eat flaming death
-@@ -165,7 +169,11 @@
- abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
- cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
--#include "confdefs.h"
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
- #include <linux/version.h>
- #if LINUX_VERSION_CODE < $decnum
- eat flaming death
-@@ -216,7 +224,8 @@
- /usr | /usr/)
- # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
- case $machine in
-- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
-+ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
-+ mips/mips64/n64/* )
- libc_cv_slibdir="/lib64"
- if test "$libdir" = '${exec_prefix}/lib'; then
- libdir='${exec_prefix}/lib64';
-@@ -224,6 +233,14 @@
- libc_cv_localedir='${exec_prefix}/lib/locale'
- fi
- ;;
-+ mips/mips64/n32/* )
-+ libc_cv_slibdir="/lib32"
-+ if test "$libdir" = '${exec_prefix}/lib'; then
-+ libdir='${exec_prefix}/lib32';
-+ # Locale data can be shared between 32bit and 64bit libraries
-+ libc_cv_localedir='${exec_prefix}/lib/locale'
-+ fi
-+ ;;
- *)
- libc_cv_slibdir="/lib"
- ;;
-@@ -302,6 +319,9 @@
- ;;
- ia64*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
-+ ;;
-+ mips/*64*)
-+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
- ;;
- s390*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/configure.in
---- glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in Sat Feb 1 21:22:36 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/configure.in Sun Mar 23 03:10:04 2003
-@@ -157,7 +157,8 @@
- /usr | /usr/)
- # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
- case $machine in
-- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
-+ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
-+ mips/mips64/n64/* )
- libc_cv_slibdir="/lib64"
- if test "$libdir" = '${exec_prefix}/lib'; then
- libdir='${exec_prefix}/lib64';
-@@ -165,6 +166,14 @@
- libc_cv_localedir='${exec_prefix}/lib/locale'
- fi
- ;;
-+ mips/mips64/n32/* )
-+ libc_cv_slibdir="/lib32"
-+ if test "$libdir" = '${exec_prefix}/lib'; then
-+ libdir='${exec_prefix}/lib32';
-+ # Locale data can be shared between 32bit and 64bit libraries
-+ libc_cv_localedir='${exec_prefix}/lib/locale'
-+ fi
-+ ;;
- *)
- libc_cv_slibdir="/lib"
- ;;
-@@ -243,6 +252,9 @@
- ;;
- ia64*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
-+ ;;
-+ mips/*64*)
-+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
- ;;
- s390*)
- ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/cris/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/cris/sysdep.h Sun Mar 23 20:42:22 2003
-@@ -1,5 +1,5 @@
- /* Assembler macros for CRIS.
-- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001, 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
-@@ -104,6 +104,18 @@
- 0: @ \
- SETUP_PIC @ \
- PLTJUMP (syscall_error) @ \
-+ END (name)
-+
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY (name) @ \
-+ DOARGS_##args @ \
-+ movu.w SYS_ify (syscall_name),$r9 @ \
-+ break 13 @ \
-+ UNDOARGS_return_##args
-+
-+#define ret_NOERRNO
-+
-+#define PSEUDO_END_NOERRNO(name) \
- END (name)
-
- #define DOARGS_0
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/fpathconf.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c Wed Oct 23 08:21:19 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/fpathconf.c Fri Mar 14 07:22:16 2003
-@@ -1,5 +1,5 @@
- /* Get file-specific information about descriptor FD. Linux version.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -38,8 +38,13 @@
- {
- case _PC_LINK_MAX:
- return statfs_link_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+
- case _PC_FILESIZEBITS:
- return statfs_filesize_max (__fstatfs (fd, &fsbuf), &fsbuf);
-+
-+ case _PC_2_SYMLINKS:
-+ return statfs_symlinks (__fstatfs (fd, &fsbuf), &fsbuf);
-+
- default:
- return posix_fpathconf (fd, name);
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/getsysstats.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c Sat Nov 2 03:16:02 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/getsysstats.c Fri Mar 21 08:45:55 2003
-@@ -1,5 +1,5 @@
- /* Determine various system internal values, Linux version.
-- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -31,7 +31,7 @@
- #include <unistd.h>
- #include <sys/sysinfo.h>
-
--#include <atomicity.h>
-+#include <atomic.h>
-
-
- /* The default value for the /proc filesystem mount point. */
-@@ -85,8 +85,7 @@
-
- /* Now store the copied value. But do it atomically. */
- assert (sizeof (long int) == sizeof (void *__unbounded));
-- if (compare_and_swap ((long int *) &mount_proc, (long int) 0,
-- (long int) copy_result) == 0)
-+ if (! atomic_compare_and_exchange_bool_acq (&mount_proc, copy_result, NULL))
- /* Replacing the value failed. This means another thread was
- faster and we don't need the copy anymore. */
- free (copy_result);
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h Sun Oct 15 05:12:00 2000
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/bits/mman.h Mon Mar 3 10:53:18 2003
-@@ -1,4 +1,21 @@
--/* Definitions for POSIX memory map interface. Insert rest of disclaimer here */
-+/* Definitions for POSIX memory map interface. Linux/HPPA version.
-+ Copyright (C) 1997, 1998, 2000, 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. */
-
- #ifndef _SYS_MMAN_H
- # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
-@@ -22,6 +39,8 @@
- #define MAP_LOCKED 0x2000 /* pages are locked */
- #define MAP_NORESERVE 0x4000 /* don't check for reservations */
- #define MAP_GROWSDOWN 0x8000 /* stack-like segment */
-+#define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
-+#define MAP_NONBLOCK 0x20000 /* do not block on IO */
-
- #define MS_SYNC 1 /* synchronous memory sync */
- #define MS_ASYNC 2 /* sync memory asynchronously */
-@@ -58,4 +77,3 @@
- #ifdef __USE_GNU
- # define MREMAP_MAYMOVE 1
- #endif
--
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/bits/signum.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/bits/signum.h Tue Apr 1 08:16:53 2003
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/HPPA version.
-- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-+ Copyright (C) 1995,1996,1997,1998,1999,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
-@@ -68,7 +68,7 @@
- #define SIGXFSZ 34 /* File size limit exceeded (4.2 BSD). */
- #define SIGSTKFLT 36 /* Stack fault. */
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h Mon Aug 26 23:16:19 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/hppa/sysdep.h Sun Mar 23 20:42:22 2003
-@@ -1,5 +1,5 @@
- /* Assembler macros for PA-RISC.
-- Copyright (C) 1999,2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
- Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
-@@ -84,6 +84,10 @@
- bv 0(2) ASM_LINE_SEP \
- nop
-
-+#define ret_NOERRNO \
-+ bv 0(2) ASM_LINE_SEP \
-+ nop
-+
- #undef END
- #define END(name) \
- 1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
-@@ -113,6 +117,15 @@
-
- #undef PSEUDO_END
- #define PSEUDO_END(name) \
-+ END (name)
-+
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY (name) \
-+ DO_CALL(syscall_name, args) ASM_LINE_SEP \
-+ nop
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
- END (name)
-
- #define JUMPTARGET(name) name
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/bits/mman.h Mon Mar 3 10:15:57 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/i386 version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/chown.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c Fri Aug 2 23:46:59 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/chown.c Wed Mar 26 04:44:17 2003
-@@ -148,20 +148,15 @@
- #endif
-
- #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
--strong_alias (__chown_is_lchown, _chown_is_lchown)
--compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0);
--compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
-+compat_symbol (libc, __chown_is_lchown, chown, GLIBC_2_0);
- #endif
-
- #ifdef __NR_lchown
--strong_alias (__real_chown, _real_chown)
--versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
--versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
--libc_hidden_ver (__real_chown, __chown)
-+versioned_symbol (libc, __real_chown, chown, GLIBC_2_1);
-+strong_alias (__real_chown, __chown)
- #else
- strong_alias (__chown_is_lchown, __chown_is_lchown21)
--strong_alias (__chown_is_lchown, _chown_is_lchown21)
--versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1);
--versioned_symbol (libc, _chown_is_lchown21, chown, GLIBC_2_1);
--libc_hidden_ver (__chown_is_lchown, __chown)
-+versioned_symbol (libc, __chown_is_lchown21, chown, GLIBC_2_1);
-+strong_alias (__chown_is_lchown, __chown)
- #endif
-+libc_hidden_def (__chown)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/clone.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S Fri Nov 22 00:59:20 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/clone.S Tue Mar 11 10:30:18 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997,98,99,2000,02 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,98,99,2000,02,03 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Richard Henderson (rth@tamu.edu)
-
-@@ -28,7 +28,7 @@
- #include <bp-asm.h>
-
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
-- pid_t *tid, struct user_desc *tls); */
-+ pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
-
- #define PARMS LINKAGE /* no space for saved regs */
- #define FUNC PARMS
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/getgroups.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/getgroups.c Wed Mar 26 19:15:57 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2001, 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
-@@ -36,7 +36,7 @@
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- #endif /* __NR_getgroups32 */
-
-@@ -64,7 +64,7 @@
- int saved_errno = errno;
-
- result = INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n));
-- if (result == 0 || errno != ENOSYS)
-+ if (result != -1 || errno != ENOSYS)
- return result;
-
- __set_errno (saved_errno);
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/setfsgid.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/setfsgid.c Thu Mar 27 10:47:49 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -35,27 +35,28 @@
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- # endif /* __NR_setfsgid32 */
-
- int
- setfsgid (gid_t gid)
- {
-+ INTERNAL_SYSCALL_DECL (err);
- # if __ASSUME_32BITUIDS > 0
-- return INLINE_SYSCALL (setfsgid32, 1, gid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
- # else
- # ifdef __NR_setfsgid32
- if (__libc_missing_32bit_uids <= 0)
- {
- int result;
-- int saved_errno = errno;
-
-- result = INLINE_SYSCALL (setfsgid32, 1, gid);
-- if (result == 0 || errno != ENOSYS)
-+ result = INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
-+ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
-+ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
- return result;
-
-- __set_errno (saved_errno);
- __libc_missing_32bit_uids = 1;
- }
- # endif /* __NR_setfsgid32 */
-@@ -65,7 +66,8 @@
- return -1;
- }
-
-- return INLINE_SYSCALL (setfsgid, 1, gid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsgid, err, 1, gid);
- # endif
- }
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/setfsuid.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/setfsuid.c Thu Mar 27 10:47:49 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1998, 2000, 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
-@@ -35,27 +35,28 @@
- # if __ASSUME_32BITUIDS == 0
- /* This variable is shared with all files that need to check for 32bit
- uids. */
--extern int __libc_missing_32bit_uids;
-+extern int __libc_missing_32bit_uids attribute_hidden;
- # endif
- # endif /* __NR_setfsuid32 */
-
- int
- setfsuid (uid_t uid)
- {
-+ INTERNAL_SYSCALL_DECL (err);
- # if __ASSUME_32BITUIDS > 0
-- return INLINE_SYSCALL (setfsuid32, 1, uid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
- # else
- # ifdef __NR_setfsuid32
- if (__libc_missing_32bit_uids <= 0)
- {
- int result;
-- int saved_errno = errno;
-
-- result = INLINE_SYSCALL (setfsuid32, 1, uid);
-- if (result == 0 || errno != ENOSYS)
-+ result = INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
-+ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
-+ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
- return result;
-
-- __set_errno (saved_errno);
- __libc_missing_32bit_uids = 1;
- }
- # endif /* __NR_setfsuid32 */
-@@ -66,7 +67,8 @@
- return -1;
- }
-
-- return INLINE_SYSCALL (setfsuid, 1, uid);
-+ /* No error checking. */
-+ return INTERNAL_SYSCALL (setfsuid, err, 1, uid);
- # endif
- }
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h Thu Jan 9 03:54:57 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/sysdep.h Sun Mar 23 20:42:23 2003
-@@ -78,6 +78,18 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
- #ifndef PIC
- # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
- #else
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/system.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c Tue Jan 28 07:24:41 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/i386/system.c Thu Jan 1 01:00:00 1970
-@@ -1,73 +0,0 @@
--/* Copyright (C) 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 <sched.h>
--#include <signal.h>
--#include <sysdep.h>
--#include <unistd.h>
--#include <sys/wait.h>
--#include <bits/libc-lock.h>
--#include <kernel-features.h>
--
--/* We have to and actually can handle cancelable system(). The big
-- problem: we have to kill the child process if necessary. To do
-- this a cleanup handler has to be registered and is has to be able
-- to find the PID of the child. The main problem is to reliable have
-- the PID when needed. It is not necessary for the parent thread to
-- return. It might still be in the kernel when the cancellation
-- request comes. Therefore we have to use the clone() calls ability
-- to have the kernel write the PID into the user-level variable. */
--#ifdef __ASSUME_CLONE_THREAD_FLAGS
--# define FORK() \
-- INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
--#endif
--
--static void cancel_handler (void *arg);
--
--#define CLEANUP_HANDLER \
-- __libc_cleanup_region_start (1, cancel_handler, &pid)
--
--#define CLEANUP_RESET \
-- __libc_cleanup_region_end (0)
--
--
--/* Linux has waitpid(), so override the generic unix version. */
--#include <sysdeps/posix/system.c>
--
--
--/* The cancellation handler. */
--static void
--cancel_handler (void *arg)
--{
-- pid_t child = *(pid_t *) arg;
--
-- INTERNAL_SYSCALL_DECL (err);
-- INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
--
-- TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
--
-- DO_LOCK ();
--
-- if (SUB_REF () == 0)
-- {
-- (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
-- (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
-- }
--
-- DO_UNLOCK ();
--}
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h Thu Jul 18 01:38:55 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/bits/mman.h Mon Mar 3 10:56:24 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/ia64 version.
-- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2000, 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
-@@ -52,12 +52,14 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h Thu Dec 5 01:21:53 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h Tue Apr 1 21:01:17 2003
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/ia64 version.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-@@ -65,8 +65,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -109,6 +110,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -294,9 +297,6 @@
- # define __SIGEV_MAX_SIZE 64
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -326,8 +326,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/brk.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/brk.S Mon Mar 3 08:11:46 2003
-@@ -1,5 +1,5 @@
- /* brk system call for Linux/ia64
-- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1999,2000,2001,2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Stephane Eranian <eranian@hpl.hp.com> and
- Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
-@@ -25,6 +25,8 @@
- #include <asm/errno.h>
-
- .global __curbrk
-+ .type __curbrk,@object
-+ .size __curbrk,8
- .data
- .align 8
- __curbrk:
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/clone2.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S Sat Jul 7 21:21:34 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/clone2.S Thu Mar 13 05:36:59 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2001, 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
-@@ -22,10 +22,11 @@
-
-
- /* int __clone2(int (*fn) (void *arg), void *child_stack_base, */
--/* size_t child_stack_size, int flags, void *arg) */
-+/* size_t child_stack_size, int flags, void *arg, */
-+/* pid_t *parent_tid, void *tls, pid_t *child_tid) */
-
- ENTRY(__clone2)
-- alloc r2=ar.pfs,5,2,3,0
-+ alloc r2=ar.pfs,8,2,6,0
- cmp.eq p6,p0=0,in0
- mov r8=EINVAL
- (p6) br.cond.spnt.few __syscall_error
-@@ -41,6 +42,9 @@
- mov out0=in3 /* Flags are first syscall argument. */
- mov out1=in1 /* Stack address. */
- mov out2=in2 /* Stack size. */
-+ mov out3=in5 /* Parent TID Pointer */
-+ mov out4=in7 /* Child TID Pointer */
-+ mov out5=in6 /* TLS pointer */
- DO_CALL (SYS_ify (clone2))
- cmp.eq p6,p0=-1,r10
- ;;
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/fork.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S Tue Dec 31 20:13:28 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/fork.S Sat Mar 29 20:18:46 2003
-@@ -32,7 +32,6 @@
- ;;
- DO_CALL (SYS_ify (clone))
- cmp.eq p6,p0=-1,r10
-- ;;
- (p6) br.cond.spnt.few __syscall_error
- ret
- PSEUDO_END(__libc_fork)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/getcontext.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S Wed Oct 9 11:57:31 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/getcontext.S Thu Mar 27 20:50:25 2003
-@@ -34,6 +34,7 @@
- other than the PRESERVED state. */
-
- ENTRY(__getcontext)
-+ .prologue
- alloc r16 = ar.pfs, 1, 0, 3, 0
-
- // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask):
-@@ -53,7 +54,9 @@
- add r2 = SC_GR+1*8, r32
- ;;
- mov.m rBSP = ar.bsp
-+ .save ar.unat, rUNAT
- mov.m rUNAT = ar.unat
-+ .body
- add r3 = SC_GR+4*8, r32
- ;;
-
-@@ -65,8 +68,8 @@
- .mem.offset 8,0; st8.spill [r3] = r6, 48
- and rTMP = ~0x3, rRSC
- ;;
-- st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
-- st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
-+.mem.offset 0,0; st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
-+.mem.offset 8,0; st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
- ;;
- mov.m ar.rsc = rTMP // put RSE into enforced lazy mode
- mov.m rNAT = ar.unat
-@@ -119,8 +122,8 @@
- stf.spill [r3] = f31, 32
- mov rB1 = b1
- ;;
-+ mov ar.unat = rUNAT // we're done spilling integer regs; restore caller's UNaT
- add r2 = SC_NAT, r32
-- nop 0
- add r3 = SC_BSP, r32
- ;;
- st8 [r2] = rNAT, (SC_RNAT-SC_NAT)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/setjmp.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S Tue Dec 31 20:13:28 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/setjmp.S Thu Mar 27 20:50:25 2003
-@@ -87,21 +87,22 @@
- ENTRY(__sigsetjmp)
- .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
- alloc loc1=ar.pfs,2,2,2,0
-+ .save ar.unat, r16
- mov r16=ar.unat
- ;;
- mov r17=ar.fpsr
- mov r2=in0
- add r3=8,in0
- ;;
-- st8.spill.nta [r2]=sp,16 // r12 (sp)
-- st8.spill.nta [r3]=gp,16 // r1 (gp)
-+.mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp)
-+.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp)
- ;;
- st8.nta [r2]=r16,16 // save caller's unat
- st8.nta [r3]=r17,16 // save fpsr
- add r8=0xa0,in0
- ;;
-- st8.spill.nta [r2]=r4,16 // r4
-- st8.spill.nta [r3]=r5,16 // r5
-+.mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4
-+.mem.offset 0,0; st8.spill.nta [r3]=r5,16 // r5
- add r9=0xb0,in0
- ;;
- stf.spill.nta [r8]=f2,32
-@@ -143,8 +144,8 @@
- stf.spill.nta [r8]=f30
- stf.spill.nta [r9]=f31
-
-- st8.spill.nta [r2]=r6,16 // r6
-- st8.spill.nta [r3]=r7,16 // r7
-+.mem.offset 8,0; st8.spill.nta [r2]=r6,16 // r6
-+.mem.offset 0,0; st8.spill.nta [r3]=r7,16 // r7
- ;;
- mov r23=ar.bsp
- mov r25=ar.unat
-@@ -170,9 +171,10 @@
- st8.nta [r3]=in0 // &__jmp_buf
- br.call.dpnt.few rp=__sigjmp_save
- .ret0: // force a new bundle ::q
-- mov r8=0
-+ mov.m ar.unat=r16 // restore caller's unat
- mov rp=loc0
- mov ar.pfs=loc1
-+ mov r8=0
- ret
- END(__sigsetjmp)
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h Thu Jan 9 03:54:57 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/sysdep.h Mon Mar 24 08:54:28 2003
-@@ -96,15 +96,27 @@
- #undef PSEUDO_END
- #define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ ENTRY(name) \
-+ DO_CALL (SYS_ify(syscall_name));
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
-+
- #undef END
- #define END(name) \
- .size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
- .endp C_SYMBOL_NAME(name)
-
- #define ret br.ret.sptk.few b0
-+#define ret_NOERRNO ret
-
- #else /* not __ASSEMBLER__ */
-
-+#define BREAK_INSN_1(num) "break " #num ";;\n\t"
-+#define BREAK_INSN(num) BREAK_INSN_1(num)
-+
- /* On IA-64 we have stacked registers for passing arguments. The
- "out" registers end up being the called function's "in"
- registers.
-@@ -121,10 +133,10 @@
- register long _r15 asm ("r15") = __NR_##name; \
- long _retval; \
- LOAD_ARGS_##nr (args); \
-- __asm __volatile ("break %3;;\n\t" \
-+ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
- : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
-- : "i" (__BREAK_SYSCALL), "2" (_r15) \
-- ASM_ARGS_##nr \
-+ ASM_OUTARGS_##nr \
-+ : "2" (_r15) ASM_ARGS_##nr \
- : "memory" ASM_CLOBBERS_##nr); \
- _retval = _r8; \
- if (_r10 == -1) \
-@@ -145,10 +157,10 @@
- register long _r15 asm ("r15") = __NR_##name; \
- long _retval; \
- LOAD_ARGS_##nr (args); \
-- __asm __volatile ("break %3;;\n\t" \
-+ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
- : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
-- : "i" (__BREAK_SYSCALL), "2" (_r15) \
-- ASM_ARGS_##nr \
-+ ASM_OUTARGS_##nr \
-+ : "2" (_r15) ASM_ARGS_##nr \
- : "memory" ASM_CLOBBERS_##nr); \
- _retval = _r8; \
- err = _r10; \
-@@ -176,20 +188,33 @@
- #define LOAD_ARGS_5(out0, out1, out2, out3, out4) \
- register long _out4 asm ("out4") = (long) (out4); \
- LOAD_ARGS_4 (out0, out1, out2, out3)
-+#define LOAD_ARGS_6(out0, out1, out2, out3, out4, out5) \
-+ register long _out5 asm ("out5") = (long) (out5); \
-+ LOAD_ARGS_5 (out0, out1, out2, out3, out4)
-+
-+#define ASM_OUTARGS_0
-+#define ASM_OUTARGS_1 ASM_OUTARGS_0, "=r" (_out0)
-+#define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
-+#define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
-+#define ASM_OUTARGS_4 ASM_OUTARGS_3, "=r" (_out3)
-+#define ASM_OUTARGS_5 ASM_OUTARGS_4, "=r" (_out4)
-+#define ASM_OUTARGS_6 ASM_OUTARGS_5, "=r" (_out5)
-
- #define ASM_ARGS_0
--#define ASM_ARGS_1 ASM_ARGS_0, "r" (_out0)
--#define ASM_ARGS_2 ASM_ARGS_1, "r" (_out1)
--#define ASM_ARGS_3 ASM_ARGS_2, "r" (_out2)
--#define ASM_ARGS_4 ASM_ARGS_3, "r" (_out3)
--#define ASM_ARGS_5 ASM_ARGS_4, "r" (_out4)
-+#define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
-+#define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
-+#define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
-+#define ASM_ARGS_4 ASM_ARGS_3, "6" (_out3)
-+#define ASM_ARGS_5 ASM_ARGS_4, "7" (_out4)
-+#define ASM_ARGS_6 ASM_ARGS_5, "8" (_out5)
-
- #define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
- #define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
- #define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
- #define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
- #define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
--#define ASM_CLOBBERS_5 , "out5", "out6", "out7", \
-+#define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
-+#define ASM_CLOBBERS_6 , "out6", "out7", \
- /* Non-stacked integer registers, minus r8, r10, r15. */ \
- "r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
- "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/system.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ia64/system.c Sun Mar 16 00:47:44 2003
-@@ -0,0 +1,35 @@
-+/* Copyright (C) 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 <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#ifdef __ASSUME_CLONE_THREAD_FLAGS
-+# define FORK() \
-+ INLINE_SYSCALL (clone2, 6, CLONE_PARENT_SETTID | SIGCHLD, NULL, 0, \
-+ &pid, NULL, NULL)
-+#endif
-+
-+#include "../system.c"
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ifaddrs.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/ifaddrs.c Sat Mar 29 10:07:18 2003
-@@ -0,0 +1,774 @@
-+/* getifaddrs -- get names and addresses of all network interfaces
-+ Copyright (C) 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 <assert.h>
-+#include <errno.h>
-+#include <ifaddrs.h>
-+#include <net/if.h>
-+#include <netinet/in.h>
-+#include <netpacket/packet.h>
-+#include <stdbool.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <sys/ioctl.h>
-+#include <sys/socket.h>
-+#include <sysdep.h>
-+#include <time.h>
-+#include <unistd.h>
-+
-+#include <asm/types.h>
-+#include <linux/netlink.h>
-+#include <linux/rtnetlink.h>
-+
-+#include "kernel-features.h"
-+
-+/* We don't know if we have NETLINK support compiled in in our
-+ Kernel, so include the old implementation as fallback. */
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+static int no_netlink_support;
-+
-+# define getifaddrs fallback_getifaddrs
-+# include "sysdeps/gnu/ifaddrs.c"
-+# undef getifaddrs
-+
-+#else
-+
-+# define no_netlink_support 0
-+
-+#endif
-+
-+
-+struct netlink_res
-+{
-+ struct netlink_res *next;
-+ struct nlmsghdr *nlh;
-+ size_t size; /* Size of response. */
-+ uint32_t seq; /* sequential number we used. */
-+};
-+
-+
-+struct netlink_handle
-+{
-+ int fd; /* Netlink file descriptor. */
-+ pid_t pid; /* Process ID. */
-+ uint32_t seq; /* The sequence number we use currently. */
-+ struct netlink_res *nlm_list; /* Pointer to list of responses. */
-+ struct netlink_res *end_ptr; /* For faster append of new entries. */
-+};
-+
-+
-+/* struct to hold the data for one ifaddrs entry, so we can allocate
-+ everything at once. */
-+struct ifaddrs_storage
-+{
-+ struct ifaddrs ifa;
-+ union
-+ {
-+ /* Save space for the biggest of the four used sockaddr types and
-+ avoid a lot of casts. */
-+ struct sockaddr sa;
-+ struct sockaddr_ll sl;
-+ struct sockaddr_in s4;
-+ struct sockaddr_in6 s6;
-+ } addr, netmask, broadaddr;
-+ char name[IF_NAMESIZE + 1];
-+};
-+
-+
-+static void
-+free_netlink_handle (struct netlink_handle *h)
-+{
-+ struct netlink_res *ptr;
-+ int saved_errno = errno;
-+
-+ ptr = h->nlm_list;
-+ while (ptr != NULL)
-+ {
-+ struct netlink_res *tmpptr;
-+
-+ free (ptr->nlh);
-+ tmpptr = ptr->next;
-+ free (ptr);
-+ ptr = tmpptr;
-+ }
-+
-+ errno = saved_errno;
-+}
-+
-+
-+static int
-+netlink_sendreq (struct netlink_handle *h, int type)
-+{
-+ struct
-+ {
-+ struct nlmsghdr nlh;
-+ struct rtgenmsg g;
-+ } req;
-+ struct sockaddr_nl nladdr;
-+
-+ if (h->seq == 0)
-+ h->seq = time (NULL);
-+
-+ req.nlh.nlmsg_len = sizeof (req);
-+ req.nlh.nlmsg_type = type;
-+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
-+ req.nlh.nlmsg_pid = 0;
-+ req.nlh.nlmsg_seq = h->seq;
-+ req.g.rtgen_family = AF_UNSPEC;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ return TEMP_FAILURE_RETRY (sendto (h->fd, (void *) &req, sizeof (req), 0,
-+ (struct sockaddr *) &nladdr,
-+ sizeof (nladdr)));
-+}
-+
-+
-+static int
-+netlink_receive (struct netlink_handle *h)
-+{
-+ struct netlink_res *nlm_next;
-+ char buf[4096];
-+ struct iovec iov = { buf, sizeof (buf) };
-+ struct sockaddr_nl nladdr;
-+ struct nlmsghdr *nlmh;
-+ int read_len;
-+ bool done = false;
-+
-+ while (! done)
-+ {
-+ struct msghdr msg =
-+ {
-+ (void *) &nladdr, sizeof (nladdr),
-+ &iov, 1,
-+ NULL, 0,
-+ 0
-+ };
-+
-+ read_len = TEMP_FAILURE_RETRY (recvmsg (h->fd, &msg, 0));
-+ if (read_len < 0)
-+ return -1;
-+
-+ if (msg.msg_flags & MSG_TRUNC)
-+ return -1;
-+
-+ nlm_next = (struct netlink_res *) malloc (sizeof (struct netlink_res));
-+ if (nlm_next == NULL)
-+ return -1;
-+ nlm_next->next = NULL;
-+ nlm_next->nlh = (struct nlmsghdr *) malloc (read_len);
-+ if (nlm_next->nlh == NULL)
-+ {
-+ free (nlm_next);
-+ return -1;
-+ }
-+ memcpy (nlm_next->nlh, buf, read_len);
-+ nlm_next->size = read_len;
-+ nlm_next->seq = h->seq;
-+ if (h->nlm_list == NULL)
-+ {
-+ h->nlm_list = nlm_next;
-+ h->end_ptr = nlm_next;
-+ }
-+ else
-+ {
-+ h->end_ptr->next = nlm_next;
-+ h->end_ptr = nlm_next;
-+ }
-+
-+ for (nlmh = (struct nlmsghdr *) buf;
-+ NLMSG_OK (nlmh, (size_t) read_len);
-+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
-+ {
-+ if ((pid_t) nlmh->nlmsg_pid != h->pid || nlmh->nlmsg_seq != h->seq)
-+ continue;
-+
-+ if (nlmh->nlmsg_type == NLMSG_DONE)
-+ {
-+ /* we found the end, leave the loop. */
-+ done = true;
-+ break;
-+ }
-+ if (nlmh->nlmsg_type == NLMSG_ERROR)
-+ {
-+ struct nlmsgerr *nlerr = (struct nlmsgerr *) NLMSG_DATA (nlmh);
-+ if (nlmh->nlmsg_len < NLMSG_LENGTH (sizeof (struct nlmsgerr)))
-+ errno = EIO;
-+ else
-+ errno = -nlerr->error;
-+ return -1;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+static void
-+netlink_close (struct netlink_handle *h)
-+{
-+ /* Don't modify errno. */
-+ INTERNAL_SYSCALL_DECL (err);
-+ (void) INTERNAL_SYSCALL (close, err, 1, h->fd);
-+}
-+
-+
-+/* Open a NETLINK socket. */
-+static int
-+netlink_open (struct netlink_handle *h)
-+{
-+ struct sockaddr_nl nladdr;
-+
-+ h->fd = socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-+ if (h->fd < 0)
-+ return -1;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+ if (bind (h->fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) < 0)
-+ {
-+ netlink_close (h);
-+ return -1;
-+ }
-+ return 0;
-+}
-+
-+
-+/* We know the number of RTM_NEWLINK entries, so we reserve the first
-+ # of entries for this type. All RTM_NEWADDR entries have an index
-+ pointer to the RTM_NEWLINK entry. To find the entry, create
-+ a table to map kernel index entries to our index numbers.
-+ Since we get at first all RTM_NEWLINK entries, it can never happen
-+ that a RTM_NEWADDR index is not known to this map. */
-+static int
-+map_newlink (int index, int *map, int max)
-+{
-+ int i;
-+
-+ for (i = 0; i < max; i++)
-+ {
-+ if (map[i] == -1)
-+ {
-+ map[i] = index;
-+ return i;
-+ }
-+ else if (map[i] == index)
-+ return i;
-+ }
-+ /* This should never be reached. If this will be reached, we have
-+ very big problem. */
-+ abort ();
-+}
-+
-+
-+/* Create a linked list of `struct ifaddrs' structures, one for each
-+ network interface on the host machine. If successful, store the
-+ list in *IFAP and return 0. On errors, return -1 and set `errno'. */
-+int
-+getifaddrs (struct ifaddrs **ifap)
-+{
-+ struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
-+ struct netlink_res *nlp;
-+ struct ifaddrs_storage *ifas;
-+ unsigned int i, newlink, newaddr, newaddr_idx;
-+ int *map_newlink_data;
-+ size_t ifa_data_size = 0; /* Size to allocate for all ifa_data. */
-+ char *ifa_data_ptr; /* Pointer to the unused part of memory for
-+ ifa_data. */
-+
-+ if (ifap)
-+ *ifap = NULL;
-+
-+ if (! no_netlink_support && netlink_open (&nh) < 0)
-+ {
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ no_netlink_support = 1;
-+#else
-+ return -1;
-+#endif
-+ }
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ if (no_netlink_support)
-+ return fallback_getifaddrs (ifap);
-+#endif
-+
-+ nh.pid = getpid ();
-+
-+ /* Tell the kernel that we wish to get a list of all
-+ active interfaces. */
-+ if (netlink_sendreq (&nh, RTM_GETLINK) < 0)
-+ {
-+ netlink_close (&nh);
-+ return -1;
-+ }
-+ /* Collect all data for every interface. */
-+ if (netlink_receive (&nh) < 0)
-+ {
-+ free_netlink_handle (&nh);
-+ netlink_close (&nh);
-+ return -1;
-+ }
-+
-+
-+ /* Now ask the kernel for all addresses which are assigned
-+ to an interface. Since we store the addresses after the
-+ interfaces in the list, we will later always find the
-+ interface before the corresponding addresses. */
-+ ++nh.seq;
-+ if (netlink_sendreq (&nh, RTM_GETADDR) < 0)
-+ {
-+ free_netlink_handle (&nh);
-+ netlink_close (&nh);
-+ return -1;
-+ }
-+ /* Collect all data for every inerface. */
-+ if (netlink_receive (&nh) < 0)
-+ {
-+ free_netlink_handle (&nh);
-+ netlink_close (&nh);
-+ return -1;
-+ }
-+
-+ /* Count all RTM_NEWLINK and RTM_NEWADDR entries to allocate
-+ enough memory. */
-+ newlink = newaddr = 0;
-+ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
-+ {
-+ struct nlmsghdr *nlh;
-+ size_t size = nlp->size;
-+
-+ if (nlp->nlh == NULL)
-+ continue;
-+
-+ /* Walk through all entries we got from the kernel and look, which
-+ message type they contain. */
-+ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
-+ {
-+ /* check if the message is what we want */
-+ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
-+ continue;
-+
-+ if (nlh->nlmsg_type == NLMSG_DONE)
-+ break; /* ok */
-+
-+ if (nlh->nlmsg_type == RTM_NEWLINK)
-+ {
-+ /* A RTM_NEWLINK message can have IFLA_STATS data. We need to
-+ know the size before creating the list to allocate enough
-+ memory. */
-+ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFLA_RTA (ifim);
-+ size_t rtasize = IFLA_PAYLOAD (nlh);
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ if (rta->rta_type == IFLA_STATS)
-+ {
-+ ifa_data_size += rta_payload;
-+ break;
-+ }
-+ else
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+ ++newlink;
-+ }
-+ else if (nlh->nlmsg_type == RTM_NEWADDR)
-+ ++newaddr;
-+ }
-+ }
-+
-+ /* Return if no interface is up. */
-+ if ((newlink + newaddr) == 0)
-+ {
-+ free_netlink_handle (&nh);
-+ netlink_close (&nh);
-+ return 0;
-+ }
-+
-+ /* Table for mapping kernel index to entry in our list. */
-+ map_newlink_data = alloca (newlink * sizeof (int));
-+
-+ /* Allocate memory for all entries we have and initialize next
-+ pointer. */
-+ ifas = (struct ifaddrs_storage *) calloc (1,
-+ (newlink + newaddr)
-+ * sizeof (struct ifaddrs_storage)
-+ + ifa_data_size);
-+ if (ifas == NULL)
-+ {
-+ free_netlink_handle (&nh);
-+ netlink_close (&nh);
-+ return -1;
-+ }
-+
-+ for (i = 0; i < newlink + newaddr - 1; i++)
-+ {
-+ ifas[i].ifa.ifa_next = &ifas[i + 1].ifa;
-+ map_newlink_data[i] = -1;
-+ }
-+ ifa_data_ptr = (char *)&ifas[newlink + newaddr];
-+ newaddr_idx = 0; /* Counter for newaddr index. */
-+
-+ /* Walk through the list of data we got from the kernel. */
-+ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
-+ {
-+ struct nlmsghdr *nlh;
-+ size_t size = nlp->size;
-+
-+ if (nlp->nlh == NULL)
-+ continue;
-+
-+ /* Walk through one message and look at the type: If it is our
-+ message, we need RTM_NEWLINK/RTM_NEWADDR and stop if we reach
-+ the end or we find the end marker (in this case we ignore the
-+ following data. */
-+ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
-+ {
-+ int ifa_index = 0;
-+
-+ /* check if the message is the one we want */
-+ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
-+ continue;
-+
-+ if (nlh->nlmsg_type == NLMSG_DONE)
-+ break; /* ok */
-+ else if (nlh->nlmsg_type == RTM_NEWLINK)
-+ {
-+ /* We found a new interface. Now extract everything from the
-+ interface data we got and need. */
-+ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFLA_RTA (ifim);
-+ size_t rtasize = IFLA_PAYLOAD (nlh);
-+
-+ /* interfaces are stored in the first "newlink" entries
-+ of our list, starting in the order as we got from the
-+ kernel. */
-+ ifa_index = map_newlink (ifim->ifi_index - 1,
-+ map_newlink_data, newlink);
-+ ifas[ifa_index].ifa.ifa_flags = ifim->ifi_flags;
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ char *rta_data = RTA_DATA (rta);
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ switch (rta->rta_type)
-+ {
-+ case IFLA_ADDRESS:
-+ ifas[ifa_index].addr.sl.sll_family = AF_PACKET;
-+ memcpy (ifas[ifa_index].addr.sl.sll_addr,
-+ (char *) rta_data, rta_payload);
-+ ifas[ifa_index].addr.sl.sll_halen = rta_payload;
-+ ifas[ifa_index].addr.sl.sll_ifindex = ifim->ifi_index;
-+ ifas[ifa_index].addr.sl.sll_hatype = ifim->ifi_type;
-+
-+ ifas[ifa_index].ifa.ifa_addr = &ifas[ifa_index].addr.sa;
-+ break;
-+
-+ case IFLA_BROADCAST:
-+ ifas[ifa_index].broadaddr.sl.sll_family = AF_PACKET;
-+ memcpy (ifas[ifa_index].broadaddr.sl.sll_addr,
-+ (char *) rta_data, rta_payload);
-+ ifas[ifa_index].broadaddr.sl.sll_halen = rta_payload;
-+ ifas[ifa_index].broadaddr.sl.sll_ifindex
-+ = ifim->ifi_index;
-+ ifas[ifa_index].broadaddr.sl.sll_hatype = ifim->ifi_type;
-+
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ break;
-+
-+ case IFLA_IFNAME: /* Name of Interface */
-+ if ((rta_payload + 1) <= sizeof (ifas[ifa_index].name))
-+ {
-+ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
-+ strncpy (ifas[ifa_index].name, rta_data,
-+ rta_payload);
-+ ifas[ifa_index].name[rta_payload] = '\0';
-+ }
-+ break;
-+
-+ case IFLA_STATS: /* Statistics of Interface */
-+ ifas[ifa_index].ifa.ifa_data = ifa_data_ptr;
-+ ifa_data_ptr += rta_payload;
-+ memcpy (ifas[ifa_index].ifa.ifa_data, rta_data,
-+ rta_payload);
-+ break;
-+
-+ case IFLA_UNSPEC:
-+ break;
-+ case IFLA_MTU:
-+ break;
-+ case IFLA_LINK:
-+ break;
-+ case IFLA_QDISC:
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+ }
-+ else if (nlh->nlmsg_type == RTM_NEWADDR)
-+ {
-+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlh);
-+ struct rtattr *rta = IFA_RTA (ifam);
-+ size_t rtasize = IFA_PAYLOAD (nlh);
-+
-+ /* New Addresses are stored in the order we got them from
-+ the kernel after interfaces. Theoretical it is possible
-+ that we have holes in the interface part of the list,
-+ but we always have already the interface for this address. */
-+ ifa_index = newlink + newaddr_idx;
-+ ifas[ifa_index].ifa.ifa_flags
-+ = ifas[map_newlink (ifam->ifa_index - 1,
-+ map_newlink_data, newlink)].ifa.ifa_flags;
-+ ++newaddr_idx;
-+
-+ while (RTA_OK (rta, rtasize))
-+ {
-+ char *rta_data = RTA_DATA (rta);
-+ size_t rta_payload = RTA_PAYLOAD (rta);
-+
-+ switch (rta->rta_type)
-+ {
-+ case IFA_ADDRESS:
-+ {
-+ struct sockaddr *sa;
-+
-+ if (ifas[ifa_index].ifa.ifa_addr != NULL)
-+ {
-+ /* In a point-to-poing network IFA_ADDRESS
-+ contains the destination address, local
-+ address is supplied in IFA_LOCAL attribute.
-+ destination address and broadcast address
-+ are stored in an union, so it doesn't matter
-+ which name we use. */
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ sa = &ifas[ifa_index].broadaddr.sa;
-+ }
-+ else
-+ {
-+ ifas[ifa_index].ifa.ifa_addr
-+ = &ifas[ifa_index].addr.sa;
-+ sa = &ifas[ifa_index].addr.sa;
-+ }
-+
-+ sa->sa_family = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ memcpy (&((struct sockaddr_in *) sa)->sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ memcpy (&((struct sockaddr_in6 *) sa)->sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data) ||
-+ IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ((struct sockaddr_in6 *) sa)->sin6_scope_id =
-+ ifam->ifa_scope;
-+ break;
-+
-+ default:
-+ memcpy (sa->sa_data, rta_data, rta_payload);
-+ break;
-+ }
-+ }
-+ break;
-+
-+ case IFA_LOCAL:
-+ if (ifas[ifa_index].ifa.ifa_addr != NULL)
-+ {
-+ /* If ifa_addr is set and we get IFA_LOCAL,
-+ assume we have a point-to-point network.
-+ Move address to correct field. */
-+ ifas[ifa_index].broadaddr = ifas[ifa_index].addr;
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ memset (&ifas[ifa_index].addr, '\0',
-+ sizeof (ifas[ifa_index].addr));
-+ }
-+
-+ ifas[ifa_index].ifa.ifa_addr = &ifas[ifa_index].addr.sa;
-+ ifas[ifa_index].ifa.ifa_addr->sa_family
-+ = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ memcpy (&ifas[ifa_index].addr.s4.sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ memcpy (&ifas[ifa_index].addr.s6.sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data) ||
-+ IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ifas[ifa_index].addr.s6.sin6_scope_id =
-+ ifam->ifa_scope;
-+ break;
-+
-+ default:
-+ memcpy (ifas[ifa_index].addr.sa.sa_data,
-+ rta_data, rta_payload);
-+ break;
-+ }
-+ break;
-+
-+ case IFA_BROADCAST:
-+ /* We get IFA_BROADCAST, so IFA_LOCAL was too much. */
-+ if (ifas[ifa_index].ifa.ifa_broadaddr != NULL)
-+ memset (&ifas[ifa_index].broadaddr, '\0',
-+ sizeof (ifas[ifa_index].broadaddr));
-+
-+ ifas[ifa_index].ifa.ifa_broadaddr
-+ = &ifas[ifa_index].broadaddr.sa;
-+ ifas[ifa_index].ifa.ifa_broadaddr->sa_family
-+ = ifam->ifa_family;
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ memcpy (&ifas[ifa_index].broadaddr.s4.sin_addr,
-+ rta_data, rta_payload);
-+ break;
-+
-+ case AF_INET6:
-+ memcpy (&ifas[ifa_index].broadaddr.s6.sin6_addr,
-+ rta_data, rta_payload);
-+ if (IN6_IS_ADDR_LINKLOCAL (rta_data) ||
-+ IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
-+ ifas[ifa_index].broadaddr.s6.sin6_scope_id =
-+ ifam->ifa_scope;
-+ break;
-+
-+ default:
-+ memcpy (&ifas[ifa_index].broadaddr.sa.sa_data,
-+ rta_data, rta_payload);
-+ break;
-+ }
-+ break;
-+
-+ case IFA_LABEL:
-+ if (rta_payload + 1 <= sizeof (ifas[ifa_index].name))
-+ {
-+ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
-+ strncpy (ifas[ifa_index].name, rta_data,
-+ rta_payload);
-+ ifas[ifa_index].name[rta_payload] = '\0';
-+ }
-+ else
-+ abort ();
-+ break;
-+
-+ case IFA_UNSPEC:
-+ break;
-+ case IFA_CACHEINFO:
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, rtasize);
-+ }
-+
-+ /* If we didn't get the interface name with the
-+ address, use the name from the interface entry. */
-+ if (ifas[ifa_index].ifa.ifa_name == NULL)
-+ ifas[ifa_index].ifa.ifa_name
-+ = ifas[map_newlink (ifam->ifa_index - 1,
-+ map_newlink_data, newlink)].ifa.ifa_name;
-+
-+ /* Calculate the netmask. */
-+ if (ifas[ifa_index].ifa.ifa_addr
-+ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_UNSPEC
-+ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_PACKET)
-+ {
-+ uint32_t max_prefixlen = 0;
-+ char *cp = NULL;
-+
-+ ifas[ifa_index].ifa.ifa_netmask
-+ = &ifas[ifa_index].netmask.sa;
-+
-+ switch (ifas[ifa_index].ifa.ifa_addr->sa_family)
-+ {
-+ case AF_INET:
-+ cp = (char *) &ifas[ifa_index].netmask.s4.sin_addr;
-+ max_prefixlen = 32;
-+ break;
-+
-+ case AF_INET6:
-+ cp = (char *) &ifas[ifa_index].netmask.s6.sin6_addr;
-+ max_prefixlen = 128;
-+ break;
-+ }
-+
-+ ifas[ifa_index].ifa.ifa_netmask->sa_family
-+ = ifas[ifa_index].ifa.ifa_addr->sa_family;
-+
-+ if (cp != NULL)
-+ {
-+ char c;
-+ unsigned int preflen;
-+
-+ if ((max_prefixlen > 0) &&
-+ (ifam->ifa_prefixlen > max_prefixlen))
-+ preflen = max_prefixlen;
-+ else
-+ preflen = ifam->ifa_prefixlen;
-+
-+ for (i = 0; i < (preflen / 8); i++)
-+ *cp++ = 0xff;
-+ c = 0xff;
-+ c <<= (8 - (preflen % 8));
-+ *cp = c;
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ free_netlink_handle (&nh);
-+
-+ netlink_close (&nh);
-+
-+ if (ifap != NULL)
-+ *ifap = &ifas[0].ifa;
-+
-+ return 0;
-+}
-+
-+
-+#if __ASSUME_NETLINK_SUPPORT != 0
-+void
-+freeifaddrs (struct ifaddrs *ifa)
-+{
-+ free (ifa);
-+}
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/kernel-features.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h Thu Feb 20 23:11:52 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/kernel-features.h Sat Mar 29 08:24:55 2003
-@@ -1,6 +1,6 @@
- /* Set flags signalling availability of kernel features based on given
- kernel version number.
-- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1999, 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
-@@ -229,8 +229,8 @@
- # define __ASSUME_SET_THREAD_AREA_SYSCALL 1
- #endif
-
--/* The vfork syscall on x86 was definitely available in 2.4. */
--#if __LINUX_KERNEL_VERSION >= 132097 && defined __i386__
-+/* The vfork syscall on x86 and arm was definitely available in 2.4. */
-+#if __LINUX_KERNEL_VERSION >= 132097 && (defined __i386__ || defined __arm__)
- # define __ASSUME_VFORK_SYSCALL 1
- #endif
-
-@@ -264,3 +264,24 @@
- # define __ASSUME_FCNTL64 1
- # define __ASSUME_VFORK_SYSCALL 1
- #endif
-+
-+/* Beginning with 2.5.63 support for realtime and monotonic clocks and
-+ timers based on them is available. */
-+#if __LINUX_KERNEL_VERSION >= 132415
-+# define __ASSUME_POSIX_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.
-+ For ia64, s390*, PPC we pick 2.5.64 as the first version with support. */
-+#if __LINUX_KERNEL_VERSION >= 132416 \
-+ && (defined __ia64__ || defined __s390__ || defined __powerpc__)
-+# define __ASSUME_CLONE_THREAD_FLAGS 1
-+#endif
-+
-+/* With kernel 2.4.17 we always have netlink support. */
-+#if __LINUX_KERNEL_VERSION >= (132096+17)
-+# define __ASSUME_NETLINK_SUPPORT 1
-+#endif
-+
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/linux_fsinfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h Wed Oct 23 08:21:19 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/linux_fsinfo.h Fri Mar 14 07:25:31 2003
-@@ -1,5 +1,5 @@
- /* Constants from kernel header for various FSes.
-- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998,1999,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
-@@ -40,6 +40,9 @@
- /* Constants that identify the `coherent' filesystem. */
- #define COH_SUPER_MAGIC 0x012ff7b7
-
-+/* Constant that identifies the `ramfs' filesystem. */
-+#define CRAMFS_MAGIC 0x28cd3d45
-+
- /* Constant that identifies the `devfs' filesystem. */
- #define DEVFS_SUPER_MAGIC 0x1373
-
-@@ -48,6 +51,7 @@
-
- /* Constant that identifies the `efs' filesystem. */
- #define EFS_SUPER_MAGIC 0x414A53
-+#define EFS_MAGIC 0x072959
-
- /* Constant that identifies the `ext2' and `ext3' filesystems. */
- #define EXT2_SUPER_MAGIC 0xef53
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/m68k/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h Thu Feb 20 21:33:25 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/m68k/bits/mman.h Mon Mar 3 10:58:55 2003
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/m68k/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h Thu Jan 9 03:54:57 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/m68k/sysdep.h Wed Mar 26 00:15:40 2003
-@@ -68,6 +68,18 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
- #ifdef PIC
- # if RTLD_PRIVATE_ERRNO
- # define SYSCALL_ERROR_HANDLER \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/Makefile
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile Fri Mar 29 00:41:51 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/Makefile Mon Mar 17 16:50:05 2003
-@@ -8,4 +8,43 @@
- sysdep_routines += cachectl cacheflush sysmips _test_and_set
-
- sysdep_headers += sys/cachectl.h sys/sysmips.h sys/tas.h
-+
-+no_syscall_list_h = 1
-+
-+# Generate the list of SYS_* macros for the system calls (__NR_* macros).
-+# We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
-+# it exists, but also define SYS_<abi>_<syscall> for all ABIs.
-+$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h
-+ rm -f $(@:.h=.d)-t
-+ { \
-+ echo '/* Generated at libc build time from kernel syscall list. */';\
-+ echo ''; \
-+ echo '#ifndef _SYSCALL_H'; \
-+ echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
-+ echo '#endif'; \
-+ echo ''; \
-+ rm -f $(@:.d=.h).newt; \
-+ SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
-+ $(CC) -E -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \
-+ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' > $(@:.d=.h).newt; \
-+ if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
-+ echo '#if defined _ABI64 && _MIPS_SIM == _ABI64'; \
-+ sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#elif defined _ABIN32 && _MIPS_SIM == _ABIN32'; \
-+ sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#else'; \
-+ sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt; \
-+ echo '#endif'; \
-+ sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt; \
-+ else \
-+ cat $(@:.d=.h).newt; \
-+ fi; \
-+ rm $(@:.d=.h).newt; \
-+ } > $(@:.d=.h).new
-+ mv -f $(@:.d=.h).new $(@:.d=.h)
-+ sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \
-+ -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\
-+ $(@:.d=.h) $(@:.h=.d)),'
-+ rm -f $(@:.h=.d)-t
-+ mv -f $(@:.h=.d)-t2 $(@:.h=.d)
- endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/bits/mman.h Fri Mar 7 10:46:33 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/MIPS version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -59,6 +59,8 @@
- # define MAP_DENYWRITE 0x2000 /* ETXTBSY */
- # define MAP_EXECUTABLE 0x4000 /* mark it as an executable */
- # define MAP_LOCKED 0x8000 /* pages are locked */
-+# define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
-+# define MAP_NONBLOCK 0x20000 /* do not block on IO */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/bits/sigaction.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/bits/sigaction.h Tue Mar 25 22:51:52 2003
-@@ -1,5 +1,6 @@
- /* The proper definitions for Linux/MIPS's sigaction.
-- Copyright (C) 1993,94,95,97,98,99,2000 Free Software Foundation, Inc.
-+ Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 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
-@@ -49,7 +50,7 @@
- /* Restore handler. */
- void (*sa_restorer) (void);
-
--#if _MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2
-+#if _MIPS_SZPTR < 64
- int sa_resv[1];
- #endif
- };
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/clone.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/clone.S Sat Mar 29 09:01:57 2003
-@@ -1,6 +1,6 @@
--/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-- Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>, 1996.
-+ Contributed by Ralf Baechle <ralf@linux-mips.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
-@@ -21,7 +21,6 @@
- and invokes a function in the right context after its all over. */
-
- #include <sys/asm.h>
--#include <asm/unistd.h>
- #include <sysdep.h>
- #define _ERRNO_H 1
- #include <bits/errno.h>
-@@ -29,15 +28,17 @@
- /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */
-
- .text
-+LOCALSZ= 1
-+FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
-+GPOFF= FRAMESZ-(1*SZREG)
- NESTED(__clone,4*SZREG,sp)
- #ifdef __PIC__
-- .set noreorder
-- .cpload $25
-- .set reorder
-- subu sp,32
-- .cprestore 16
--#else
-- subu sp,32
-+ SETUP_GP
-+#endif
-+ PTR_SUBU sp, FRAMESZ
-+ SETUP_GP64 (GPOFF, __clone)
-+#ifdef __PIC__
-+ SAVE_GP (GPOFF)
- #endif
- #ifdef PROF
- .set noat
-@@ -49,12 +50,12 @@
-
- /* Sanity check arguments. */
- li v0,EINVAL
-- beqz a0,error /* No NULL function pointers. */
-- beqz a1,error /* No NULL stack pointers. */
-+ beqz a0,L(error) /* No NULL function pointers. */
-+ beqz a1,L(error) /* No NULL stack pointers. */
-
-- subu a1,32 /* Reserve argument save space. */
-- sw a0,0(a1) /* Save function pointer. */
-- sw a3,4(a1) /* Save argument pointer. */
-+ PTR_SUBU a1,32 /* Reserve argument save space. */
-+ PTR_S a0,0(a1) /* Save function pointer. */
-+ PTR_S a3,PTRSIZE(a1) /* Save argument pointer. */
-
-
- /* Do the system call */
-@@ -62,20 +63,24 @@
- li v0,__NR_clone
- syscall
-
-- bnez a3,error
-- beqz v0,__thread_start
-+ bnez a3,L(error)
-+ beqz v0,L(thread_start)
-
- /* Successful return from the parent */
-- addiu sp,32
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- ret
-
- /* Something bad happened -- no child created */
--error:
-- addiu sp,32
-+L(error):
- #ifdef __PIC__
-- la t9,__syscall_error
-+ PTR_LA t9,__syscall_error
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- jr t9
- #else
-+ RESTORE_GP64
-+ PTR_ADDU sp, FRAMESZ
- j __syscall_error
- #endif
- END(__clone)
-@@ -85,20 +90,21 @@
- debug info. */
-
- ENTRY(__thread_start)
-+L(thread_start):
- /* cp is already loaded. */
-- .cprestore 16
-+ SAVE_GP (GPOFF)
- /* The stackframe has been created on entry of clone(). */
- /* Restore the arg for user's function. */
-- lw t9,0(sp) /* Function pointer. */
-- lw a0,4(sp) /* Argument pointer. */
-+ PTR_L t9,0(sp) /* Function pointer. */
-+ PTR_L a0,PTRSIZE(sp) /* Argument pointer. */
-
- /* Call the user's function. */
-- jalr t9
-+ jal t9
-
- /* Call _exit rather than doing it inline for breakpoint purposes. */
- move a0,v0
- #ifdef __PIC__
-- la t9,_exit
-+ PTR_LA t9,_exit
- jalr t9
- #else
- jal _exit
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/configure
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/configure Fri Mar 28 07:11:03 2003
-@@ -0,0 +1,75 @@
-+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-+ # Local configure fragment for sysdeps/unix/sysv/linux/mips.
-+
-+case $machine in
-+mips*64*)
-+ rm -f asm-unistd.h
-+ asm_unistd_h=$sysheaders/asm/unistd.h
-+ if test ! -f $asm_unistd_h; then
-+ # Try to find asm/unistd.h in compiler header search path.
-+ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
-+ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
-+ if test -n "$try_asm_unistd_h" &&
-+ test -f "$try_asm_unistd_h"; then
-+ asm_unistd_h=$try_asm_unistd_h
-+ fi
-+ fi
-+ if test ! -f "$asm_unistd_h"; then
-+ { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5
-+echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;}
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ else
-+ # The point of this preprocessing is to turn __NR_<syscall> into
-+ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
-+ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
-+ # and <abi> is the compiler-enabled ABI.
-+ cat "$asm_unistd_h" |
-+ sed -e 's,__NR_,__NR_N64_,g' \
-+ -e 's,__NR_N64_##,__NR_##,g' \
-+ -e 's,__NR_N64_O32_,__NR_O32_,g' \
-+ -e 's,__NR_N64_N32_,__NR_N32_,g' \
-+ -e 's,__NR_N64_N64_,__NR_N64_,g' \
-+ | awk > asm-unistd.h '
-+/^#define __NR.*unused/ { print; next; }
-+/^#define __NR_N64__exit __NR_N64_exit/ {
-+ print "#define __NR__exit __NR_exit";
-+ print "#define __NR_O32__exit __NR_O32_exit";
-+ print "#define __NR_N32__exit __NR_N32_exit";
-+ print; next;
-+}
-+/^#define __NR_O32_/ {
-+ name = $2;
-+ sub (/_O32_/, "_", name);
-+ print;
-+ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N32_/ {
-+ name = $2;
-+ sub (/_N32_/, "_", name);
-+ print;
-+ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N64_/ {
-+ name = $2;
-+ sub (/_N64_/, "_", name);
-+ print;
-+ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+{
-+ print;
-+}'
-+ fi ;;
-+mips*)
-+ rm -f asm-unistd.h
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ ;;
-+esac
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/configure.in
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/configure.in Mon Mar 17 16:50:05 2003
-@@ -0,0 +1,75 @@
-+sinclude(./aclocal.m4)dnl Autoconf lossage
-+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-+# Local configure fragment for sysdeps/unix/sysv/linux/mips.
-+
-+case $machine in
-+mips*64*)
-+ rm -f asm-unistd.h
-+ asm_unistd_h=$sysheaders/asm/unistd.h
-+ if test ! -f $asm_unistd_h; then
-+ # Try to find asm/unistd.h in compiler header search path.
-+ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
-+ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
-+ if test -n "$try_asm_unistd_h" &&
-+ test -f "$try_asm_unistd_h"; then
-+ asm_unistd_h=$try_asm_unistd_h
-+ fi
-+ fi
-+ if test ! -f "$asm_unistd_h"; then
-+ AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ else
-+ # The point of this preprocessing is to turn __NR_<syscall> into
-+ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
-+ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
-+ # and <abi> is the compiler-enabled ABI.
-+ cat "$asm_unistd_h" |
-+ sed -e 's,__NR_,__NR_N64_,g' \
-+ -e 's,__NR_N64_##,__NR_##,g' \
-+ -e 's,__NR_N64_O32_,__NR_O32_,g' \
-+ -e 's,__NR_N64_N32_,__NR_N32_,g' \
-+ -e 's,__NR_N64_N64_,__NR_N64_,g' \
-+ | awk > asm-unistd.h '
-+/^#define __NR.*unused/ { print; next; }
-+/^#define __NR_N64__exit __NR_N64_exit/ {
-+ print "#define __NR__exit __NR_exit";
-+ print "#define __NR_O32__exit __NR_O32_exit";
-+ print "#define __NR_N32__exit __NR_N32_exit";
-+ print; next;
-+}
-+/^#define __NR_O32_/ {
-+ name = $2;
-+ sub (/_O32_/, "_", name);
-+ print;
-+ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N32_/ {
-+ name = $2;
-+ sub (/_N32_/, "_", name);
-+ print;
-+ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+/^#define __NR_N64_/ {
-+ name = $2;
-+ sub (/_N64_/, "_", name);
-+ print;
-+ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
-+ print "# define " name " " $2;
-+ print "#endif";
-+ next;
-+}
-+{
-+ print;
-+}'
-+ fi ;;
-+mips*)
-+ rm -f asm-unistd.h
-+ echo '#include <asm/unistd.h>' > asm-unistd.h
-+ ;;
-+esac
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h Fri Dec 15 07:05:44 2000
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h Tue Mar 25 22:51:53 2003
-@@ -12,7 +12,7 @@
-
- /* Abi says here follows reserved int[2] */
- void (*sa_restorer)(void);
--#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
-+#if (_MIPS_SZPTR < 64)
- /*
- * For 32 bit code we have to pad struct sigaction to get
- * constant size for the ABI
-@@ -23,7 +23,7 @@
-
-
- #define _KERNEL_NSIG 128
--#define _KERNEL_NSIG_BPW 32
-+#define _KERNEL_NSIG_BPW _MIPS_SZLONG
- #define _KERNEL_NSIG_WORDS (_KERNEL_NSIG / _KERNEL_NSIG_BPW)
-
- typedef struct {
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/kernel_stat.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h Mon Nov 20 09:45:43 2000
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/kernel_stat.h Mon Mar 17 16:47:13 2003
-@@ -1,4 +1,28 @@
- /* Definition of `struct stat' used in the kernel.. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+struct kernel_stat
-+ {
-+ unsigned int st_dev;
-+ unsigned int __pad1[3];
-+ unsigned long st_ino;
-+ unsigned int st_mode;
-+ unsigned int st_nlink;
-+ int st_uid;
-+ int st_gid;
-+ unsigned int st_rdev;
-+ unsigned int __pad2[3];
-+ long st_size;
-+ unsigned int st_atime;
-+ unsigned int __unused1;
-+ unsigned int st_mtime;
-+ unsigned int __unused2;
-+ unsigned int st_ctime;
-+ unsigned int __unused3;
-+ unsigned int st_blksize;
-+ unsigned int __pad3;
-+ unsigned long st_blocks;
-+ };
-+#else
- struct kernel_stat
- {
- unsigned long int st_dev;
-@@ -26,3 +50,4 @@
- unsigned int st_flags;
- unsigned int st_gen;
- };
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h Sat Mar 29 09:15:29 2003
-@@ -0,0 +1,36 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
-+#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_O32_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name
-+#endif
-+
-+#endif /* linux/mips/mips32/kern64/sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h Sat Mar 29 09:15:29 2003
-@@ -0,0 +1,282 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
-+#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_/**/syscall_name
-+#endif
-+
-+#ifdef __ASSEMBLER__
-+
-+/* We don't want the label for the error handler to be visible in the symbol
-+ table when we define it here. */
-+#ifdef __PIC__
-+# define SYSCALL_ERROR_LABEL 99b
-+#endif
-+
-+#else /* ! __ASSEMBLER__ */
-+
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "lw\t$8, %7\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "sw\t$8, 20($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5), "m" ((long)arg6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "lw\t$2, %6\n\t" \
-+ "lw\t$8, %7\n\t" \
-+ "lw\t$9, %8\n\t" \
-+ "subu\t$29, 32\n\t" \
-+ "sw\t$2, 16($29)\n\t" \
-+ "sw\t$8, 20($29)\n\t" \
-+ "sw\t$9, 24($29)\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ "addiu\t$29, 32\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/mips32/sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/Dist
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/Dist Mon Mar 17 16:57:19 2003
-@@ -0,0 +1 @@
-+ldd-rewrite.sed
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,26 @@
-+/* Copyright (C) 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 <sysdeps/generic/ldconfig.h>
-+
-+#define SYSDEP_KNOWN_INTERPRETER_NAMES \
-+ { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \
-+ { "/lib64/ld.so.1", FLAG_ELF_LIBC6 },
-+#define SYSDEP_KNOWN_LIBRARY_NAMES \
-+ { "libc.so.6", FLAG_ELF_LIBC6 }, \
-+ { "libm.so.6", FLAG_ELF_LIBC6 },
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed Mon Mar 17 16:57:19 2003
-@@ -0,0 +1 @@
-+s_^\(RTLDLIST=\)\(.*lib\)\(\|32\|64\)\(/[^/]*\.so\.[0-9.]*\)[ ]*$_\1"\232\4 \264\4 \2\4"_
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/llseek.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/llseek.c Mon Mar 17 17:20:44 2003
-@@ -0,0 +1 @@
-+/* lseek() is 64-bit capable already. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,263 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_SYSDEP_H
-+#define _LINUX_MIPS_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips64/n32/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_N32_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name
-+#endif
-+
-+
-+#ifndef __ASSEMBLER__
-+#if 0 /* untested */
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ register long long __a5 asm("$9") = (long long) arg6; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a5), "r" (__a6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long long __v0 asm("$2"); \
-+ register long long __a0 asm("$4") = (long long) arg1; \
-+ register long long __a1 asm("$5") = (long long) arg2; \
-+ register long long __a2 asm("$6") = (long long) arg3; \
-+ register long long __a3 asm("$7") = (long long) arg4; \
-+ register long long __a4 asm("$8") = (long long) arg5; \
-+ register long long __a5 asm("$9") = (long long) arg6; \
-+ register long long __a6 asm("$10") = (long long) arg7; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a5), "r" (__a6), "r" (__a7) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+#endif /* untested */
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c Mon Mar 17 17:20:44 2003
-@@ -0,0 +1 @@
-+/* glob64 is in glob.c */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S Thu Mar 20 08:54:56 2003
-@@ -0,0 +1,42 @@
-+/* Copyright 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>
-+
-+#include <sys/asm.h>
-+
-+/* Sign-extend the ioctl number, since the kernel wants it as a
-+ sign-extended 32-bit value, but our prototype is that of a long. */
-+
-+ .text
-+ENTRY (__ioctl)
-+ li v0, __NR_ioctl
-+ sll a1,a1,0
-+ syscall /* Do the system call. */
-+ bne a3, zero, L(error)
-+ ret
-+
-+L(error):
-+ .cpsetup t9, a0, __ioctl
-+ PTR_LA t9,__syscall_error
-+ .cprestore
-+ jr t9
-+
-+PSEUDO_END (__ioctl)
-+
-+weak_alias (__ioctl, ioctl)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,263 @@
-+/* Copyright (C) 2000, 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. */
-+
-+#ifndef _LINUX_MIPS_SYSDEP_H
-+#define _LINUX_MIPS_SYSDEP_H 1
-+
-+/* There is some commonality. */
-+#include <sysdeps/unix/mips/mips64/n64/sysdep.h>
-+
-+/* For Linux we can use the system call table in the header file
-+ /usr/include/asm/unistd.h
-+ of the kernel. But these symbols do not follow the SYS_* syntax
-+ so we have to redefine the `SYS_ify' macro here. */
-+#undef SYS_ify
-+#ifdef __STDC__
-+# define SYS_ify(syscall_name) __NR_N64_##syscall_name
-+#else
-+# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name
-+#endif
-+
-+
-+#ifndef __ASSEMBLER__
-+#if 0 /* untested */
-+/* Define a macro which expands into the inline wrapper code for a system
-+ call. */
-+#undef INLINE_SYSCALL
-+#define INLINE_SYSCALL(name, nr, args...) \
-+ ({ INTERNAL_SYSCALL_DECL(err); \
-+ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-+ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-+ { \
-+ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-+ result_var = -1L; \
-+ } \
-+ result_var; })
-+
-+#undef INTERNAL_SYSCALL_DECL
-+#define INTERNAL_SYSCALL_DECL(err) long err
-+
-+#undef INTERNAL_SYSCALL_ERROR_P
-+#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
-+
-+#undef INTERNAL_SYSCALL_ERRNO
-+#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-+
-+#define internal_syscall0(name, err, dummy...) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %2\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall1(name, err, arg1) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %3\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set reorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall2(name, err, arg1, arg2) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %4\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall3(name, err, arg1, arg2, arg3) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7"); \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "=r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a4) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ register long __a5 asm("$9") = (long) arg6; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a5), "r" (__a6) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-+({ \
-+ long _sys_result; \
-+ \
-+ { \
-+ register long __v0 asm("$2"); \
-+ register long __a0 asm("$4") = (long) arg1; \
-+ register long __a1 asm("$5") = (long) arg2; \
-+ register long __a2 asm("$6") = (long) arg3; \
-+ register long __a3 asm("$7") = (long) arg4; \
-+ register long __a4 asm("$8") = (long) arg5; \
-+ register long __a5 asm("$9") = (long) arg6; \
-+ register long __a6 asm("$10") = (long) arg7; \
-+ __asm__ volatile ( \
-+ ".set\tnoreorder\n\t" \
-+ "li\t$2, %5\t\t\t# " #name "\n\t" \
-+ "syscall\n\t" \
-+ ".set\treorder" \
-+ : "=r" (__v0), "+r" (__a3) \
-+ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-+ "r" (__a5), "r" (__a6), "r" (__a7) \
-+ : __SYSCALL_CLOBBERS); \
-+ err = __a3; \
-+ _sys_result = __v0; \
-+ } \
-+ _sys_result; \
-+})
-+
-+#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-+#endif /* untested */
-+#endif /* __ASSEMBLER__ */
-+
-+#endif /* linux/mips/sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/recv.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/recv.c Mon Mar 17 17:20:44 2003
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/x86_64/recv.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/send.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/send.c Mon Mar 17 17:20:44 2003
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/x86_64/send.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/syscall.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/syscall.S Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,53 @@
-+/* Copyright (C) 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>
-+
-+#include <sys/asm.h>
-+
-+/* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
-+ more information about the value -4095 used below. */
-+
-+/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5)
-+ We need to do some arg shifting, the syscall_number will be in
-+ rax. */
-+
-+
-+ .text
-+ENTRY (syscall)
-+ move v0, a0 /* Syscall number -> v0 */
-+ move a0, a1 /* shift arg1 - arg7. */
-+ move a1, a2
-+ move a2, a3
-+ move a3, a4
-+ move a4, a5
-+ move a5, a6
-+ move a6, a7
-+
-+ syscall /* Do the system call. */
-+ bne a3, zero, L(error)
-+
-+ ret
-+
-+L(error):
-+ .cpsetup t9, a0, syscall
-+ PTR_LA t9,__syscall_error
-+ .cprestore
-+ jr t9
-+
-+PSEUDO_END (syscall)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list Mon Mar 17 17:20:44 2003
-@@ -0,0 +1,20 @@
-+# File name Caller Syscall name Args Strong name Weak names
-+
-+lseek - lseek i:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
-+
-+# proper socket implementations:
-+recvfrom - recvfrom i:ibniBN __libc_recvfrom __recvfrom recvfrom __syscall_recvfrom
-+sendto - sendto i:ibnibn __libc_sendto __sendto sendto __syscall_sendto
-+
-+# semaphore and shm system calls
-+msgctl - msgctl i:iip __msgctl msgctl
-+msgget - msgget i:ii __msgget msgget
-+msgrcv - msgrcv i:ibnii __msgrcv msgrcv
-+msgsnd - msgsnd i:ibni __msgsnd msgsnd
-+shmat - shmat i:ipi __shmat shmat
-+shmctl - shmctl i:iip __shmctl shmctl
-+shmdt - shmdt i:s __shmdt shmdt
-+shmget - shmget i:iii __shmget shmget
-+semop - semop i:ipi __semop semop
-+semget - semget i:iii __semget semget
-+semctl - semctl i:iiii __semctl semctl
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/umount.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/mips64/umount.c Mon Mar 17 17:20:44 2003
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/hppa/umount.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pread.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pread.c Thu Mar 20 21:58:02 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -42,7 +42,13 @@
- off_t offset) internal_function;
- # endif
- extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
-+ int dummy,
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ off_t offset
-+#else
-+ off_t offset_hi, off_t offset_lo
-+#endif
-+ );
-
-
-
-@@ -59,8 +65,13 @@
- {
- /* First try the syscall. */
- assert (sizeof (offset) == 4);
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -73,8 +84,13 @@
-
- /* First try the syscall. */
- assert (sizeof (offset) == 4);
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pread64.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pread64.c Thu Mar 20 21:58:02 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -42,7 +42,13 @@
- # endif
-
- extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
-+ int dummy,
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ off_t offset
-+#else
-+ off_t offset_hi, off_t offset_lo
-+#endif
-+ );
-
-
-
-@@ -59,9 +65,14 @@
- if (SINGLE_THREAD_P)
- {
- /* First try the syscall. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -73,9 +84,14 @@
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/ptrace.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/ptrace.c Mon Mar 17 16:48:52 2003
-@@ -0,0 +1,112 @@
-+/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 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 <errno.h>
-+#include <sys/types.h>
-+#include <sys/ptrace.h>
-+#include <sys/user.h>
-+#include <stdarg.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ typedef long long int reg_type;
-+#else
-+typedef long int reg_type;
-+#endif
-+
-+extern reg_type __syscall_ptrace (int, pid_t, void *__unbounded,
-+ reg_type __unbounded);
-+
-+reg_type
-+ptrace (enum __ptrace_request request, ...)
-+{
-+ reg_type res, ret;
-+ va_list ap;
-+ pid_t pid;
-+ void *addr;
-+ reg_type data;
-+
-+ va_start (ap, request);
-+ pid = va_arg (ap, pid_t);
-+ addr = va_arg (ap, void *);
-+ data = va_arg (ap, reg_type);
-+ va_end (ap);
-+
-+ if (request > 0 && request < 4)
-+ data = &ret;
-+
-+#if __BOUNDED_POINTERS__
-+ switch (request)
-+ {
-+ case PTRACE_PEEKTEXT:
-+ case PTRACE_PEEKDATA:
-+ case PTRACE_PEEKUSER:
-+ case PTRACE_POKETEXT:
-+ case PTRACE_POKEDATA:
-+ case PTRACE_POKEUSER:
-+ (void) CHECK_1 ((int *) addr);
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETREGS:
-+ case PTRACE_SETREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETFPREGS:
-+ case PTRACE_SETFPREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_GETFPXREGS:
-+ case PTRACE_SETFPXREGS:
-+ /* We don't know the size of data, so the best we can do is ensure
-+ that `data' is valid for at least one word. */
-+ (void) CHECK_1 ((int *) data);
-+ break;
-+
-+ case PTRACE_TRACEME:
-+ case PTRACE_CONT:
-+ case PTRACE_KILL:
-+ case PTRACE_SINGLESTEP:
-+ case PTRACE_ATTACH:
-+ case PTRACE_DETACH:
-+ case PTRACE_SYSCALL:
-+ /* Neither `data' nor `addr' needs any checks. */
-+ break;
-+ };
-+#endif
-+
-+ res = INLINE_SYSCALL (ptrace, 4, request, pid,
-+ __ptrvalue (addr), __ptrvalue (data));
-+ if (res >= 0 && request > 0 && request < 4)
-+ {
-+ __set_errno (0);
-+ return ret;
-+ }
-+
-+ return res;
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pwrite.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pwrite.c Thu Mar 20 21:58:02 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-@@ -38,7 +38,13 @@
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
- extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
-+ int dummy,
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ off_t offset
-+#else
-+ off_t offset_hi, off_t offset_lo
-+#endif
-+ );
-
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
-@@ -58,8 +64,13 @@
- {
- /* First try the syscall. */
- assert (sizeof (offset) == 4);
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -73,8 +84,13 @@
-
- /* First try the syscall. */
- assert (sizeof (offset) == 4);
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR (offset >> 31, offset));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pwrite64.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/pwrite64.c Thu Mar 20 21:58:02 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ralf Baechle <ralf@gnu.org>, 1998.
-
-@@ -37,7 +37,13 @@
- #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
- extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
-- int dummy, off_t offset_hi, off_t offset_lo);
-+ int dummy,
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ off_t offset
-+#else
-+ off_t offset_hi, off_t offset_lo
-+#endif
-+ );
-
- # if __ASSUME_PWRITE_SYSCALL == 0
- static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count,
-@@ -56,9 +62,14 @@
- if (SINGLE_THREAD_P)
- {
- /* First try the syscall. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-@@ -71,9 +82,14 @@
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- /* First try the syscall. */
-+#if defined _ABI64 && _MIPS_SIM == _ABI64
-+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
-+ offset);
-+#else
- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
- __LONG_LONG_PAIR ((off_t) (offset >> 32),
- (off_t) (offset & 0xffffffff)));
-+#endif
- # if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/readelflib.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/readelflib.c Fri Mar 14 08:52:05 2003
-@@ -0,0 +1,71 @@
-+/* Copyright (C) 1999, 2001, 2002, 2003 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,
-+ 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.
-+
-+ 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. */
-+
-+
-+int process_elf32_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname,
-+ void *file_contents, size_t file_length);
-+int process_elf64_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname,
-+ void *file_contents, size_t file_length);
-+
-+/* Returns 0 if everything is ok, != 0 in case of error. */
-+int
-+process_elf_file (const char *file_name, const char *lib, int *flag,
-+ unsigned int *osversion, char **soname, void *file_contents,
-+ size_t file_length)
-+{
-+ ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents;
-+ int ret;
-+
-+ if (elf_header->e_ident [EI_CLASS] == ELFCLASS32)
-+ {
-+ ret = process_elf32_file (file_name, lib, flag, osversion, soname,
-+ file_contents, file_length);
-+
-+ /* n32 libraries are always libc.so.6+. */
-+ if (ret && (elf_header->e_flags & EF_MIPS_ABI2) != 0)
-+ *flag = FLAG_MIPS64_LIBN32|FLAG_ELF_LIBC6;
-+ }
-+ else
-+ {
-+ ret = process_elf64_file (file_name, lib, flag, osversion, soname,
-+ file_contents, file_length);
-+ /* n64 libraries are always libc.so.6+. */
-+ if (!ret)
-+ *flag = FLAG_MIPS64_LIBN64|FLAG_ELF_LIBC6;
-+ }
-+
-+ return ret;
-+}
-+
-+#undef __ELF_NATIVE_CLASS
-+#undef process_elf_file
-+#define process_elf_file process_elf32_file
-+#define __ELF_NATIVE_CLASS 32
-+#include "sysdeps/generic/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"
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sigaction.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c Fri Jan 3 00:26:04 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sigaction.c Fri Mar 14 08:49:05 2003
-@@ -41,6 +41,15 @@
- extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
- struct kernel_sigaction *__unbounded, size_t);
-
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+
-+# ifdef __NR_rt_sigreturn
-+static void restore_rt (void) asm ("__restore_rt");
-+# endif
-+# ifdef __NR_sigreturn
-+static void restore (void) asm ("__restore");
-+# endif
-+#endif
-
- /* If ACT is not NULL, change the action for SIG to *ACT.
- If OACT is not NULL, put the old action for SIG in *OACT. */
-@@ -74,7 +83,11 @@
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kernel_sigset_t));
- kact.sa_flags = act->sa_flags;
- # ifdef HAVE_SA_RESTORER
-+# if _MIPS_SIM == _MIPS_SIM_ABI32
- kact.sa_restorer = act->sa_restorer;
-+# else
-+ kact.sa_restorer = &restore_rt;
-+# endif
- # endif
- }
-
-@@ -128,7 +141,11 @@
- oact->sa_mask.__val[0] = k_osigact.sa_mask;
- oact->sa_flags = k_osigact.sa_flags;
- # ifdef HAVE_SA_RESTORER
-+# if _MIPS_SIM == _MIPS_SIM_ABI32
- oact->sa_restorer = k_osigact.sa_restorer;
-+# else
-+ oact->sa_restorer = &restore;
-+# endif
- # endif
- }
- return result;
-@@ -140,4 +157,32 @@
- weak_alias (__libc_sigaction, __sigaction)
- libc_hidden_weak (__sigaction)
- weak_alias (__libc_sigaction, sigaction)
-+#endif
-+
-+/* NOTE: Please think twice before making any changes to the bits of
-+ code below. GDB needs some intimate knowledge about it to
-+ recognize them as signal trampolines, and make backtraces through
-+ signal handlers work right. Important are both the names
-+ (__restore_rt) and the exact instruction sequence.
-+ If you ever feel the need to make any changes, please notify the
-+ appropriate GDB maintainer. */
-+
-+#define RESTORE(name, syscall) RESTORE2 (name, syscall)
-+#define RESTORE2(name, syscall) \
-+asm \
-+ ( \
-+ ".align 4\n" \
-+ "__" #name ":\n" \
-+ " li $2, " #syscall "\n" \
-+ " syscall\n" \
-+ );
-+
-+/* The return code for realtime-signals. */
-+#if _MIPS_SIM != _MIPS_SIM_ABI32
-+# ifdef __NR_rt_sigreturn
-+RESTORE (restore_rt, __NR_rt_sigreturn)
-+# endif
-+# ifdef __NR_sigreturn
-+RESTORE (restore, __NR_sigreturn)
-+# endif
- #endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/procfs.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h Sat Feb 9 02:19:07 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/procfs.h Mon Mar 17 16:47:13 2003
-@@ -1,4 +1,5 @@
--/* Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996, 1997, 1999, 2000, 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
-@@ -32,7 +33,11 @@
- #define ELF_NGREG 45
- #define ELF_NFPREG 33
-
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ typedef unsigned long long elf_greg_t;
-+#else
- typedef unsigned long elf_greg_t;
-+#endif
- typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
- typedef double elf_fpreg_t;
-@@ -59,8 +64,13 @@
- {
- struct elf_siginfo pr_info; /* Info associated with signal. */
- short int pr_cursig; /* Current signal. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+ __extension__ unsigned long long int pr_sigpend;
-+ __extension__ unsigned long long int pr_sighold;
-+#else
- unsigned long int pr_sigpend; /* Set of pending signals. */
- unsigned long int pr_sighold; /* Set of held signals. */
-+#endif
- __pid_t pr_pid;
- __pid_t pr_ppid;
- __pid_t pr_pgrp;
-@@ -82,7 +92,11 @@
- char pr_sname; /* Char for pr_state. */
- char pr_zomb; /* Zombie. */
- char pr_nice; /* Nice val. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+ __extension__ unsigned long long int pr_flag;
-+#else
- unsigned long int pr_flag; /* Flags. */
-+#endif
- long pr_uid;
- long pr_gid;
- int pr_pid, pr_ppid, pr_pgrp, pr_sid;
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/ptrace.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/ptrace.h Mon Mar 17 16:48:52 2003
-@@ -0,0 +1,135 @@
-+/* `ptrace' debugger support interface. Linux version.
-+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 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. */
-+
-+#ifndef _SYS_PTRACE_H
-+#define _SYS_PTRACE_H 1
-+
-+#include <features.h>
-+
-+__BEGIN_DECLS
-+
-+/* Type of the REQUEST argument to `ptrace.' */
-+enum __ptrace_request
-+{
-+ /* Indicate that the process making this request should be traced.
-+ All signals received by this process can be intercepted by its
-+ parent, and its parent can use the other `ptrace' requests. */
-+ PTRACE_TRACEME = 0,
-+#define PT_TRACE_ME PTRACE_TRACEME
-+
-+ /* Return the word in the process's text space at address ADDR. */
-+ PTRACE_PEEKTEXT = 1,
-+#define PT_READ_I PTRACE_PEEKTEXT
-+
-+ /* Return the word in the process's data space at address ADDR. */
-+ PTRACE_PEEKDATA = 2,
-+#define PT_READ_D PTRACE_PEEKDATA
-+
-+ /* Return the word in the process's user area at offset ADDR. */
-+ PTRACE_PEEKUSER = 3,
-+#define PT_READ_U PTRACE_PEEKUSER
-+
-+ /* Write the word DATA into the process's text space at address ADDR. */
-+ PTRACE_POKETEXT = 4,
-+#define PT_WRITE_I PTRACE_POKETEXT
-+
-+ /* Write the word DATA into the process's data space at address ADDR. */
-+ PTRACE_POKEDATA = 5,
-+#define PT_WRITE_D PTRACE_POKEDATA
-+
-+ /* Write the word DATA into the process's user area at offset ADDR. */
-+ PTRACE_POKEUSER = 6,
-+#define PT_WRITE_U PTRACE_POKEUSER
-+
-+ /* Continue the process. */
-+ PTRACE_CONT = 7,
-+#define PT_CONTINUE PTRACE_CONT
-+
-+ /* Kill the process. */
-+ PTRACE_KILL = 8,
-+#define PT_KILL PTRACE_KILL
-+
-+ /* Single step the process.
-+ This is not supported on all machines. */
-+ PTRACE_SINGLESTEP = 9,
-+#define PT_STEP PTRACE_SINGLESTEP
-+
-+ /* Get all general purpose registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETREGS = 12,
-+#define PT_GETREGS PTRACE_GETREGS
-+
-+ /* Set all general purpose registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETREGS = 13,
-+#define PT_SETREGS PTRACE_SETREGS
-+
-+ /* Get all floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETFPREGS = 14,
-+#define PT_GETFPREGS PTRACE_GETFPREGS
-+
-+ /* Set all floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETFPREGS = 15,
-+#define PT_SETFPREGS PTRACE_SETFPREGS
-+
-+ /* Attach to a process that is already running. */
-+ PTRACE_ATTACH = 16,
-+#define PT_ATTACH PTRACE_ATTACH
-+
-+ /* Detach from a process attached to with PTRACE_ATTACH. */
-+ PTRACE_DETACH = 17,
-+#define PT_DETACH PTRACE_DETACH
-+
-+ /* Get all extended floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_GETFPXREGS = 18,
-+#define PT_GETFPXREGS PTRACE_GETFPXREGS
-+
-+ /* Set all extended floating point registers used by a processes.
-+ This is not supported on all machines. */
-+ PTRACE_SETFPXREGS = 19,
-+#define PT_SETFPXREGS PTRACE_SETFPXREGS
-+
-+ /* Continue and stop at the next (return from) syscall. */
-+ PTRACE_SYSCALL = 24
-+#define PT_SYSCALL PTRACE_SYSCALL
-+};
-+
-+/* Perform process tracing functions. REQUEST is one of the values
-+ above, and determines the action to be taken.
-+ For all requests except PTRACE_TRACEME, PID specifies the process to be
-+ traced.
-+
-+ PID and the other arguments described above for the various requests should
-+ appear (those that are used for the particular request) as:
-+ pid_t PID, void *ADDR, int DATA, void *ADDR2
-+ after REQUEST. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ extern long long int ptrace
-+ (enum __ptrace_request __request, ...) __THROW;
-+#else
-+extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
-+#endif
-+
-+__END_DECLS
-+
-+#endif /* _SYS_PTRACE_H */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/syscall.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/syscall.h Mon Mar 17 16:50:05 2003
-@@ -0,0 +1,42 @@
-+/* Copyright (C) 1995, 1996, 1997, 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. */
-+
-+#ifndef _SYSCALL_H
-+#define _SYSCALL_H 1
-+
-+/* This file should list the numbers of the system the system knows.
-+ But instead of duplicating this we use the information available
-+ from the kernel sources. */
-+#ifdef _LIBC
-+/* Since the kernel doesn't define macro names in a way usable for
-+ glibc, we preprocess this header, and use it during the glibc build
-+ process. */
-+# include <asm-unistd.h>
-+#else
-+# include <asm/unistd.h>
-+#endif
-+
-+#ifndef _LIBC
-+/* The Linux kernel header file defines macros `__NR_<name>', but some
-+ programs expect the traditional form `SYS_<name>'. So in building libc
-+ we scan the kernel's list and produce <bits/syscall.h> with macros for
-+ all the `SYS_' names. */
-+# include <bits/syscall.h>
-+#endif
-+
-+#endif
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/tas.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h Tue Jul 16 02:52:17 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/tas.h Fri Mar 14 08:03:36 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Maciej W. Rozycki <macro@ds2.pg.gda.pl>, 2000.
-
-@@ -41,7 +41,9 @@
- ("/* Inline test and set */\n"
- "1:\n\t"
- ".set push\n\t"
-+#if _MIPS_SIM == _MIPS_SIM_ABI32
- ".set mips2\n\t"
-+#endif
- "ll %0,%3\n\t"
- "move %1,%4\n\t"
- "beq %0,%4,2f\n\t"
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sys/ucontext.h Mon Mar 17 16:47:13 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
-+/* Copyright (C) 1997, 1998, 2000, 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
-@@ -30,7 +30,11 @@
-
-
- /* Type for general register. */
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+__extension__ typedef unsigned long long int greg_t;
-+#else
- typedef unsigned long int greg_t;
-+#endif
-
- /* Number of general registers. */
- #define NGREG 37
-@@ -70,7 +74,11 @@
- /* Userlevel context. */
- typedef struct ucontext
- {
-+#if defined _ABIN32 && _MIPS_SIM == _ABIN32
-+ __extension__ unsigned long long int uc_flags;
-+#else
- unsigned long int uc_flags;
-+#endif
- struct ucontext *uc_link;
- stack_t uc_stack;
- mcontext_t uc_mcontext;
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/syscalls.list
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list Fri Jan 31 04:39:32 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/syscalls.list Fri Mar 7 10:46:27 2003
-@@ -32,14 +32,6 @@
- socket - socket i:iii __socket socket
- socketpair - socketpair i:iiif __socketpair socketpair
-
--#
--# These are defined locally because the caller is also defined in this dir.
--#
--s_llseek llseek _llseek i:iiipi __syscall__llseek
--s_sigaction sigaction sigaction i:ipp __syscall_sigaction
--s_ustat ustat ustat i:ip __syscall_ustat
--sys_mknod xmknod mknod i:sii __syscall_mknod
--
- # System calls with wrappers.
- rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
- rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
-@@ -47,35 +39,3 @@
- rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
- rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
- rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
--s_execve EXTRA execve i:spp __syscall_execve
--s_exit _exit exit i:i __syscall_exit
--s_fcntl fcntl fcntl i:iiF __syscall_fcntl
--s_fcntl64 fcntl64 fcntl64 i:iiF __syscall_fcntl64
--s_fstat64 fxstat64 fstat64 i:ip __syscall_fstat64
--s_ftruncate64 ftruncate64 ftruncate64 i:iiii __syscall_ftruncate64
--s_getcwd getcwd getcwd i:pi __syscall_getcwd
--s_getdents getdents getdents i:ipi __syscall_getdents
--s_getdents64 getdents getdents64 i:ipi __syscall_getdents64
--s_getpriority getpriority getpriority i:ii __syscall_getpriority
--s_ipc msgget ipc i:iiiip __syscall_ipc
--s_lstat64 lxstat64 lstat64 i:sp __syscall_lstat64
--s_mmap2 mmap64 mmap2 b:aniiii __syscall_mmap2
--s_poll poll poll i:pii __syscall_poll
--s_pread64 pread64 pread i:ibniii __syscall_pread
--s_ptrace ptrace ptrace i:iipp __syscall_ptrace
--s_pwrite64 pwrite64 pwrite i:ibniii __syscall_pwrite
--s_readahead EXTRA readahead i:iiii __syscall_readahead
--s_reboot reboot reboot i:iii __syscall_reboot
--s_setrlimit setrlimit setrlimit i:ip __syscall_setrlimit
--s_sigpending sigpending sigpending i:p __syscall_sigpending
--s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask
--s_stat64 xstat64 stat64 i:sp __syscall_stat64
--s_truncate64 truncate64 truncate64 i:siii __syscall_truncate64
--
--# Todo: we can pass 6 args in registers, no need for the wrapper
--sys_sysctl sysctl _sysctl i:p __syscall__sysctl
--sys_fstat fxstat fstat i:ip __syscall_fstat
--sys_lstat lxstat lstat i:sp __syscall_lstat
--sys_readv readv readv i:ipi __syscall_readv
--sys_stat xstat stat i:sp __syscall_stat
--sys_writev writev writev i:ipi __syscall_writev
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h Mon Jan 27 19:55:20 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/mips/sysdep.h Thu Jan 1 01:00:00 1970
-@@ -1,282 +0,0 @@
--/* Copyright (C) 2000 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 _LINUX_MIPS_SYSDEP_H
--#define _LINUX_MIPS_SYSDEP_H 1
--
--/* There is some commonality. */
--#include <sysdeps/unix/mips/sysdep.h>
--
--/* For Linux we can use the system call table in the header file
-- /usr/include/asm/unistd.h
-- of the kernel. But these symbols do not follow the SYS_* syntax
-- so we have to redefine the `SYS_ify' macro here. */
--#undef SYS_ify
--#ifdef __STDC__
--# define SYS_ify(syscall_name) __NR_##syscall_name
--#else
--# define SYS_ify(syscall_name) __NR_/**/syscall_name
--#endif
--
--#ifdef __ASSEMBLER__
--
--/* We don't want the label for the error handler to be visible in the symbol
-- table when we define it here. */
--#ifdef __PIC__
--# define SYSCALL_ERROR_LABEL 99b
--#endif
--
--#else /* ! __ASSEMBLER__ */
--
--/* Define a macro which expands into the inline wrapper code for a system
-- call. */
--#undef INLINE_SYSCALL
--#define INLINE_SYSCALL(name, nr, args...) \
-- ({ INTERNAL_SYSCALL_DECL(err); \
-- long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
-- if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
-- { \
-- __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
-- result_var = -1L; \
-- } \
-- result_var; })
--
--#undef INTERNAL_SYSCALL_DECL
--#define INTERNAL_SYSCALL_DECL(err) long err
--
--#undef INTERNAL_SYSCALL_ERROR_P
--#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
--
--#undef INTERNAL_SYSCALL_ERRNO
--#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
--
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
--
--#define internal_syscall0(name, err, dummy...) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %2\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall1(name, err, arg1) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %3\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set reorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall2(name, err, arg1, arg2) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %4\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall3(name, err, arg1, arg2, arg3) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7"); \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "=r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "lw\t$8, %7\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "sw\t$8, 20($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5), "m" ((long)arg6) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
--({ \
-- long _sys_result; \
-- \
-- { \
-- register long __v0 asm("$2"); \
-- register long __a0 asm("$4") = (long) arg1; \
-- register long __a1 asm("$5") = (long) arg2; \
-- register long __a2 asm("$6") = (long) arg3; \
-- register long __a3 asm("$7") = (long) arg4; \
-- __asm__ volatile ( \
-- ".set\tnoreorder\n\t" \
-- "lw\t$2, %6\n\t" \
-- "lw\t$8, %7\n\t" \
-- "lw\t$9, %8\n\t" \
-- "subu\t$29, 32\n\t" \
-- "sw\t$2, 16($29)\n\t" \
-- "sw\t$8, 20($29)\n\t" \
-- "sw\t$9, 24($29)\n\t" \
-- "li\t$2, %5\t\t\t# " #name "\n\t" \
-- "syscall\n\t" \
-- "addiu\t$29, 32\n\t" \
-- ".set\treorder" \
-- : "=r" (__v0), "+r" (__a3) \
-- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
-- "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
-- : __SYSCALL_CLOBBERS); \
-- err = __a3; \
-- _sys_result = __v0; \
-- } \
-- _sys_result; \
--})
--
--#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
--
--#endif /* __ASSEMBLER__ */
--
--#endif /* linux/mips/sysdep.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/pathconf.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c Wed Oct 23 08:21:19 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/pathconf.c Fri Mar 14 07:22:16 2003
-@@ -1,5 +1,5 @@
- /* Get file-specific information about a file. Linux version.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -36,8 +36,13 @@
- {
- case _PC_LINK_MAX:
- return statfs_link_max (__statfs (file, &fsbuf), &fsbuf);
-+
- case _PC_FILESIZEBITS:
- return statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf);
-+
-+ case _PC_2_SYMLINKS:
-+ return statfs_symlinks (__statfs (file, &fsbuf), &fsbuf);
-+
- default:
- return posix_pathconf (file, name);
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/pathconf.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h Wed Oct 23 08:21:19 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/pathconf.h Fri Mar 14 07:26:16 2003
-@@ -1,5 +1,5 @@
- /* Common parts of Linux implementation of pathconf and fpathconf.
-- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1991,1995,1996,1998-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
-@@ -22,8 +22,8 @@
- #include <sys/statfs.h>
- #include "linux_fsinfo.h"
-
--/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-
-+/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
- static inline long int
- statfs_link_max (int result, const struct statfs *fsbuf)
- {
-@@ -75,8 +75,8 @@
- }
- }
-
--/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
-
-+/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
- static inline long int
- statfs_filesize_max (int result, const struct statfs *fsbuf)
- {
-@@ -112,5 +112,40 @@
-
- default:
- return 32;
-+ }
-+}
-+
-+
-+/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
-+static inline long int
-+statfs_symlinks (int result, const struct statfs *fsbuf)
-+{
-+ if (result < 0)
-+ {
-+ if (errno == ENOSYS)
-+ /* Not possible, return the default value. */
-+ return 1;
-+
-+ /* Some error occured. */
-+ return -1;
-+ }
-+
-+ switch (fsbuf->f_type)
-+ {
-+ case ADFS_SUPER_MAGIC:
-+ case BFS_MAGIC:
-+ case CRAMFS_MAGIC:
-+ case DEVPTS_SUPER_MAGIC:
-+ case EFS_SUPER_MAGIC:
-+ case EFS_MAGIC:
-+ case MSDOS_SUPER_MAGIC:
-+ case NTFS_SUPER_MAGIC:
-+ case QNX4_SUPER_MAGIC:
-+ case ROMFS_SUPER_MAGIC:
-+ /* No symlink support. */
-+ return 0;
-+
-+ default:
-+ return 1;
- }
- }
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h Sat Mar 1 01:07:36 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h Sat Mar 1 23:31:54 2003
-@@ -45,7 +45,6 @@
- # define O_DIRECT 0400000 /* Direct disk access. */
- # define O_DIRECTORY 040000 /* Must be a directory. */
- # define O_NOFOLLOW 0100000 /* Do not follow links. */
--# define O_DIRECT 0400000 /* Direct disk access. */
- #endif
-
- #ifdef __USE_LARGEFILE64
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/bits/mman.h Mon Mar 3 11:00:51 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/PowerPC version.
-- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 2000, 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
-@@ -52,11 +52,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x0080 /* Lock the mapping. */
--# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x00080 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/chown.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c Tue Nov 5 09:13:00 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/chown.c Sun Mar 16 02:03:52 2003
-@@ -1,5 +1,5 @@
- /* chown() compatibility.
-- Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1998, 2000, 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
-@@ -42,7 +42,7 @@
- char link[PATH_MAX+2];
- char path[2*PATH_MAX+4];
- int loopct;
-- int filelen;
-+ size_t filelen;
- static int libc_old_chown = 0 /* -1=old linux, 1=new linux, 0=unknown */;
-
- if (libc_old_chown == 1)
-@@ -82,7 +82,7 @@
- ENAMETOOLONG before this, usually. */
- for (loopct = 0; loopct < 128; loopct++)
- {
-- int linklen;
-+ size_t linklen;
-
- if (err >= PATH_MAX+1)
- {
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c Fri Aug 23 21:47:00 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c Sun Mar 16 01:40:44 2003
-@@ -1,5 +1,5 @@
- /* Operating system support for run-time dynamic linker. Linux/PPC version.
-- Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
-+ Copyright (C) 1997, 1998, 2001, 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
-@@ -25,27 +25,18 @@
- extern int __cache_line_size;
- weak_extern (__cache_line_size)
-
--#define DL_PLATFORM_INIT __aux_init_cache(_dl_auxv)
--
- /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
- verify that the static extern __cache_line_size is defined by checking
- for not NULL. If it is defined then assign the cache block size
- value to __cache_line_size. */
--static inline void
--__aux_init_cache (ElfW(auxv_t) *av)
--{
-- for (; av->a_type != AT_NULL; ++av)
-- switch (av->a_type)
-- {
-- case AT_DCACHEBSIZE:
-- {
-- int *cls = & __cache_line_size;
-- if (cls != NULL)
-- *cls = av->a_un.a_val;
-- }
-+#define DL_PLATFORM_AUXV \
-+ case AT_DCACHEBSIZE: \
-+ { \
-+ int *cls = & __cache_line_size; \
-+ if (cls != NULL) \
-+ *cls = av->a_un.a_val; \
-+ } \
- break;
-- }
--}
-
- #ifndef __ASSUME_STD_AUXV
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S Sun Aug 4 04:20:06 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S Mon Mar 10 09:52:31 2003
-@@ -28,7 +28,8 @@
- all the freaky stuff we have to do to make the call useful. */
-
- /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
-- int flags [r5], void *arg [r6]); */
-+ int flags [r5], void *arg [r6], void *parent_tid [r7],
-+ void *tls [r8], void *child_tid [r9]); */
-
- ENTRY (BP_SYM (__clone))
- /* GKM FIXME: add bounds checks, where sensible. */
-@@ -58,6 +59,11 @@
- /* 'flags' argument is first parameter to clone syscall. (The other
- argument is the stack pointer, already in r4.) */
- mr r3,r5
-+
-+ /* Move the parent_tid, child_tid and tls arguments. */
-+ mr r5,r7
-+ mr r6,r8
-+ mr r7,r9
-
- /* Do the call. */
- DO_CALL(SYS_ify(clone))
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S Wed Sep 18 01:50:03 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S Mon Mar 10 22:04:29 2003
-@@ -28,7 +28,8 @@
- all the freaky stuff we have to do to make the call useful. */
-
- /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
-- int flags [r5], void *arg [r6]); */
-+ int flags [r5], void *arg [r6], void *parent_tid [r7],
-+ void *tls [r8], void *child_tid [r9]); */
-
- ENTRY (BP_SYM (__clone))
- /* GKM FIXME: add bounds checks, where sensible. */
-@@ -37,8 +38,8 @@
-
- /* Check for child_stack == NULL || fn == NULL. */
- cmpdi cr0,r4,0
-- ld r7,0(r3)
-- cmpdi cr1,r7,0
-+ ld r0,0(r3)
-+ cmpdi cr1,r0,0
- cror cr0*4+eq,cr1*4+eq,cr0*4+eq
- beq- cr0,L(badargs)
-
-@@ -61,6 +62,10 @@
- /* 'flags' argument is first parameter to clone syscall. (The other
- argument is the stack pointer, already in r4.) */
- mr r3,r5
-+ /* Move the parent_tid, child_tid and tls arguments. */
-+ mr r5,r7
-+ mr r6,r8
-+ mr r7,r9
-
- /* Do the call. */
- DO_CALL(SYS_ify(clone))
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h Thu Jul 11 23:39:44 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/bits/mman.h Mon Mar 3 11:02:34 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/s390 version.
-- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -52,12 +52,14 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h Thu Dec 5 01:23:11 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/bits/siginfo.h Thu Mar 27 00:41:58 2003
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. S/390 version.
-- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -111,8 +112,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -269,9 +270,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -301,8 +299,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S Sat Jul 7 21:21:35 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S Mon Mar 3 19:17:44 2003
-@@ -37,15 +37,19 @@
- lr %r4,%r5 /* third parameter */
- lr %r5,%r6 /* fourth parameter */
- l %r6,192(%r15) /* fifth parameter */
-- basr %r7,0
--.L0: ex %r1,.L1-.L0(%r7) /* lsb of R1 is subsituted as SVC number */
-
-- l %r15,0(0,%r15) /* load back chain */
-+ basr %r7,0
-+0: cl %r1,4f-0b(%r7) /* svc number < 256? */
-+ jl 2f
-+1: svc 0
-+ j 3f
-+2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
-+3: l %r15,0(%r15) /* load back chain */
- lm %r6,15,24(%r15) /* load registers */
-
- lhi %r0,-4095
- clr %r2,%r0 /* check R2 for error */
- jnl SYSCALL_ERROR_LABEL
- br %r14 /* return to caller */
--.L1: .word 0x0A00 /* opcode for SVC 0 */
-+4: .long 256
- PSEUDO_END (syscall)
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h Tue Jan 28 11:20:09 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h Wed Mar 26 19:04:22 2003
-@@ -59,6 +59,16 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
- #ifndef PIC
- # define SYSCALL_ERROR_LABEL 0f
- # define SYSCALL_ERROR_HANDLER \
-@@ -133,11 +143,19 @@
- */
-
- #define DO_CALL(syscall, args) \
-- svc SYS_ify (syscall)
-+ .if SYS_ify (syscall) < 256; \
-+ svc SYS_ify (syscall); \
-+ .else; \
-+ lhi %r1,SYS_ify (syscall); \
-+ svc 0; \
-+ .endif
-
- #define ret \
- br 14
-
-+#define ret_NOERRNO \
-+ br 14
-+
- #endif /* __ASSEMBLER__ */
-
- #undef INLINE_SYSCALL
-@@ -154,8 +172,8 @@
- #undef INTERNAL_SYSCALL_DECL
- #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+#undef INTERNAL_SYSCALL_DIRECT
-+#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
- ({ \
- DECLARGS_##nr(args) \
- register int _ret asm("2"); \
-@@ -165,6 +183,25 @@
- : "i" (__NR_##name) ASMFMT_##nr \
- : "memory" ); \
- _ret; })
-+
-+#undef INTERNAL_SYSCALL_SVC0
-+#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
-+ ({ \
-+ DECLARGS_##nr(args) \
-+ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
-+ register int _ret asm("2"); \
-+ asm volatile ( \
-+ "svc 0\n\t" \
-+ : "=d" (_ret) \
-+ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
-+ : "memory" ); \
-+ _ret; })
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+ (((__NR_##name) < 256) ? \
-+ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
-+ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
-
- #undef INTERNAL_SYSCALL_ERROR_P
- #define INTERNAL_SYSCALL_ERROR_P(val, err) \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S Tue Jan 28 11:20:09 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S Mon Mar 3 19:17:44 2003
-@@ -37,16 +37,20 @@
- lgr %r4,%r5 /* Third parameter. */
- lgr %r5,%r6 /* Fourth parameter. */
- lg %r6,320(%r15) /* Fifth parameter. */
-- basr %r7,0
--.L0: ex %r1,.L1-.L0(%r7) /* Lsb of R1 is subsituted as SVC number. */
-
-- lg %r15,0(%r15) /* Load back chain. */
-+ basr %r7,0
-+0: clg %r1,4f-0b(%r7) /* svc number < 256? */
-+ jl 2f
-+1: svc 0
-+ j 3f
-+2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
-+3: lg %r15,0(%r15) /* load back chain */
- lmg %r6,15,48(%r15) /* Load registers. */
-
- lghi %r0,-4095
- clgr %r2,%r0 /* Check R2 for error. */
- jgnl SYSCALL_ERROR_LABEL
- br %r14 /* Return to caller. */
--.L1: .word 0x0A00 /* Opcode for SVC 0. */
-+4: .quad 256
- PSEUDO_END (syscall)
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list Wed Feb 5 22:42:21 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list Mon Mar 10 20:21:15 2003
-@@ -2,8 +2,8 @@
-
- llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
- lseek llseek -
--pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
--pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
-+pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
-+pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
- fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
- statfs - statfs i:sp __statfs statfs statfs64
- getpeername - getpeername i:ipp __getpeername getpeername
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h Tue Jan 28 11:20:09 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h Sun Mar 23 20:42:23 2003
-@@ -1,5 +1,5 @@
- /* Assembler macros for 64 bit S/390.
-- Copyright (C) 2001,02 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
-@@ -31,6 +31,18 @@
- /* In newer 2.1 kernels __NR_syscall is missing so we define it here. */
- #define __NR_syscall 0
-
-+/*
-+ * Newer kernel versions redefined __NR_pread and __NR_pwrite to
-+ * __NR_pread64 and __NR_pwrite64. We use the new names but have
-+ * to define them on our own for compiling against older kernels.
-+ */
-+#ifndef __NR_pread64
-+# define __NR_pread64 __NR_pread
-+#endif
-+#ifndef __NR_pwrite64
-+# define __NR_pwrite64 __NR_pwrite
-+#endif
-+
- #undef SYS_ify
- #define SYS_ify(syscall_name) __NR_##syscall_name
-
-@@ -60,6 +72,17 @@
- SYSCALL_ERROR_HANDLER; \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ SYSCALL_ERROR_HANDLER; \
-+ END (name)
-+
- #ifndef PIC
- # define SYSCALL_ERROR_LABEL syscall_error
- # define SYSCALL_ERROR_HANDLER
-@@ -122,11 +145,19 @@
- */
-
- #define DO_CALL(syscall, args) \
-- svc SYS_ify (syscall)
-+ .if SYS_ify (syscall) < 256; \
-+ svc SYS_ify (syscall); \
-+ .else; \
-+ lghi %r1,SYS_ify (syscall); \
-+ svc 0; \
-+ .endif
-
- #define ret \
- br 14
-
-+#define ret_NOERRNO \
-+ br 14
-+
- #endif /* __ASSEMBLER__ */
-
- #undef INLINE_SYSCALL
-@@ -143,8 +174,8 @@
- #undef INTERNAL_SYSCALL_DECL
- #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
-
--#undef INTERNAL_SYSCALL
--#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+#undef INTERNAL_SYSCALL_DIRECT
-+#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
- ({ \
- DECLARGS_##nr(args) \
- register int _ret asm("2"); \
-@@ -154,6 +185,25 @@
- : "i" (__NR_##name) ASMFMT_##nr \
- : "memory" ); \
- _ret; })
-+
-+#undef INTERNAL_SYSCALL_SVC0
-+#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
-+ ({ \
-+ DECLARGS_##nr(args) \
-+ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
-+ register int _ret asm("2"); \
-+ asm volatile ( \
-+ "svc 0\n\t" \
-+ : "=d" (_ret) \
-+ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
-+ : "memory" ); \
-+ _ret; })
-+
-+#undef INTERNAL_SYSCALL
-+#define INTERNAL_SYSCALL(name, err, nr, args...) \
-+ (((__NR_##name) < 256) ? \
-+ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
-+ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
-
- #undef INTERNAL_SYSCALL_ERROR_P
- #define INTERNAL_SYSCALL_ERROR_P(val, err) \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/system.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c Tue Feb 4 19:35:28 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/s390/system.c Thu Jan 1 01:00:00 1970
-@@ -1 +0,0 @@
--#include <sysdeps/unix/sysv/linux/i386/system.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sh/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h Sat Feb 8 03:29:54 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sh/sysdep.h Sun Mar 23 20:42:23 2003
-@@ -65,6 +65,18 @@
- #define PSEUDO_END(name) \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name); \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
- #ifndef PIC
- # define SYSCALL_ERROR_HANDLER \
- mov.l 0f,r1; \
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/siglist.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h Sat Nov 2 03:16:02 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/siglist.h Tue Apr 1 07:50:08 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 1996,1997,1998,1999,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
-@@ -21,3 +21,5 @@
- #include_next <siglist.h> /* Get the canonical list. */
-
- #define OLD_SIGLIST_SIZE 32 /* For GLIBC_2.0 binary compatibility. */
-+
-+#define OLD2_SIGLIST_SIZE 64 /* For GLIBC_2.1 binary compatibility. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h Thu Dec 5 01:22:51 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h Thu Mar 27 00:41:58 2003
-@@ -1,5 +1,5 @@
- /* siginfo_t, sigevent and constants. Linux/SPARC version.
-- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
-+ Copyright (C) 1997-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
-@@ -69,8 +69,9 @@
- /* POSIX.1b timers. */
- struct
- {
-- unsigned int _timer1;
-- unsigned int _timer2;
-+ int si_tid; /* Timer ID. */
-+ int si_overrun; /* Overrun count. */
-+ sigval_t si_sigval; /* Signal value. */
- } _timer;
-
- /* POSIX.1b signals. */
-@@ -111,8 +112,8 @@
- /* X/Open requires some more fields with fixed names. */
- # define si_pid _sifields._kill.si_pid
- # define si_uid _sifields._kill.si_uid
--# define si_timer1 _sifields._timer._timer1
--# define si_timer2 _sifields._timer._timer2
-+# define si_timerid _sifields._timer.si_tid
-+# define si_overrun _sifields._timer.si_overrun
- # define si_status _sifields._sigchld.si_status
- # define si_utime _sifields._sigchld.si_utime
- # define si_stime _sifields._sigchld.si_stime
-@@ -276,9 +277,6 @@
- # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
- # endif
-
--/* Forward declaration of the `pthread_attr_t' type. */
--struct __pthread_attr_s;
--
- typedef struct sigevent
- {
- sigval_t sigev_value;
-@@ -308,8 +306,11 @@
- # define SIGEV_SIGNAL SIGEV_SIGNAL
- SIGEV_NONE, /* Other notification: meaningless. */
- # define SIGEV_NONE SIGEV_NONE
-- SIGEV_THREAD /* Deliver via thread creation. */
-+ SIGEV_THREAD, /* Deliver via thread creation. */
- # define SIGEV_THREAD SIGEV_THREAD
-+
-+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
-+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
- };
-
- #endif /* have _SIGNAL_H. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/signum.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h Sat Jul 7 21:21:36 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/signum.h Tue Apr 1 08:17:51 2003
-@@ -1,5 +1,5 @@
- /* Signal number definitions. Linux/SPARC version.
-- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1996, 1997, 1998, 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
-@@ -70,7 +70,7 @@
- #define SIGUSR1 30
- #define SIGUSR2 31
-
--#define _NSIG 64 /* Biggest signal number + 1
-+#define _NSIG 65 /* Biggest signal number + 1
- (including real-time signals). */
-
- #define SIGRTMIN (__libc_current_sigrtmin ())
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h Thu Oct 24 01:48:46 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h Tue Mar 25 23:00:07 2003
-@@ -1,5 +1,5 @@
- /* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version.
-- Copyright (C) 2002 Free Software Foundation, Inc.
-+ Copyright (C) 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
-@@ -54,7 +54,7 @@
- #define __SWBLK_T_TYPE __SLONGWORD_TYPE
- #define __KEY_T_TYPE __S32_TYPE
- #define __CLOCKID_T_TYPE __S32_TYPE
--#define __TIMER_T_TYPE __S32_TYPE
-+#define __TIMER_T_TYPE void *
- #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
- #define __FSID_T_TYPE struct { int __val[2]; }
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h Mon Jan 27 21:47:54 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h Sun Mar 23 20:42:23 2003
-@@ -35,6 +35,7 @@
-
- /* Linux/SPARC uses a different trap number */
- #undef PSEUDO
-+#undef PSEUDO_NOERRNO
- #undef ENTRY
- #undef END
- #undef LOC
-@@ -107,6 +108,12 @@
- bcs __syscall_error_handler; \
- nop; \
- SYSCALL_ERROR_HANDLER
-+
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x10
-
- #else /* __ASSEMBLER__ */
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c Wed Jun 2 13:10:10 1999
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c Sat Mar 15 00:37:01 2003
-@@ -1 +1 @@
--#include <sysdeps/unix/common/pause.c>
-+#include <sysdeps/posix/pause.c>
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c Tue Dec 10 21:31:58 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c Wed Apr 2 02:06:44 2003
-@@ -1,41 +1 @@
--/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
-- This file is part of the GNU C Library.
--
-- The GNU C Library is free software; you can redistribute it and/or
-- 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 <signal.h>
--#include <unistd.h>
--
--#include <sysdep.h>
--#include <sys/syscall.h>
--#include <bp-checks.h>
--
--extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
--
--/* Change the set of blocked signals to SET,
-- wait until a signal arrives, and restore the set of blocked signals. */
--int
--__sigsuspend (set)
-- const sigset_t *set;
--{
-- /* XXX The size argument hopefully will have to be changed to the
-- real size of the user-level sigset_t. */
-- return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8);
--}
--libc_hidden_def (__sigsuspend)
--weak_alias (__sigsuspend, sigsuspend)
--strong_alias (__sigsuspend, __libc_sigsuspend)
-+#include "../../ia64/sigsuspend.c"
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h Mon Jan 27 21:47:54 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h Wed Mar 26 19:06:28 2003
-@@ -35,6 +35,7 @@
-
- /* Linux/SPARC uses a different trap number */
- #undef PSEUDO
-+#undef PSEUDO_NOERRNO
- #undef ENTRY
-
- #define ENTRY(name) \
-@@ -101,8 +102,18 @@
- nop; \
- SYSCALL_ERROR_HANDLER
-
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY(name); \
-+ LOADSYSCALL(syscall_name); \
-+ ta 0x6d
-+
- #undef PSEUDO_END
- #define PSEUDO_END(name) \
-+ .size name,.-name
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
- .size name,.-name
-
- #undef END
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sys/epoll.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h Tue Dec 17 00:24:21 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sys/epoll.h Tue Mar 25 00:50:25 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -42,8 +42,10 @@
- #define EPOLLMSG EPOLLMSG
- EPOLLERR = 0x008,
- #define EPOLLERR EPOLLERR
-- EPOLLHUP = 0x010
-+ EPOLLHUP = 0x010,
- #define EPOLLHUP EPOLLHUP
-+ EPOLLET = (1 << 31)
-+#define EPOLLET EPOLLET
- };
-
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/syscalls.list
---- glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list Wed Feb 5 22:04:09 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/syscalls.list Thu Mar 27 10:47:19 2003
-@@ -14,12 +14,12 @@
- flock - flock i:ii __flock flock
- fork - fork i: __libc_fork __fork fork
- get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
--getegid - getegid i: __getegid getegid
--geteuid - geteuid i: __geteuid geteuid
-+getegid - getegid Ei: __getegid getegid
-+geteuid - geteuid Ei: __geteuid geteuid
- getpgid - getpgid i:i __getpgid getpgid
--getpgrp - getpgrp i: getpgrp
-+getpgrp - getpgrp Ei: getpgrp
- getpmsg - getpmsg i:ipppp getpmsg
--getppid - getppid i: __getppid getppid
-+getppid - getppid Ei: __getppid getppid
- getresuid - getresuid i:ppp getresuid
- getresgid - getresgid i:ppp getresgid
- getsid - getsid i:i getsid
-@@ -43,11 +43,12 @@
- personality init-first personality i:i __personality personality
- pipe - pipe i:f __pipe pipe
- pivot_root EXTRA pivot_root i:ss pivot_root
--posix_fadvise64 - fadvise64 i:iiiii posix_advise64
-+posix_fadvise64 - fadvise64 i:iiiii posix_fadvise64
- prctl EXTRA prctl i:iiiii __prctl prctl
- putpmsg - putpmsg i:ippii putpmsg
- query_module EXTRA query_module i:sipip query_module
- quotactl EXTRA quotactl i:isip quotactl
-+remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages
- sched_getaffinity - sched_getaffinity i:iip sched_getaffinity
- sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
- sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler
-@@ -76,15 +77,15 @@
- chown - chown i:sii __libc_chown __chown chown
- fcntl - fcntl Ci:iiF __libc_fcntl __fcntl fcntl
-
--setxattr EXTRA setxattr i:sspii setxattr
--lsetxattr EXTRA lsetxattr i:sspii lsetxattr
--fsetxattr EXTRA fsetxattr i:ispii fsetxattr
--getxattr EXTRA getxattr i:sspi getxattr
--lgetxattr EXTRA lgetxattr i:sspi lgetxattr
--fgetxattr EXTRA fgetxattr i:ispi fgetxattr
--listxattr EXTRA listxattr i:ssi listxattr
--llistxattr EXTRA llistxattr i:ssi llistxattr
--flistxattr EXTRA flistxattr i:isi flistxattr
--removexattr EXTRA removexattr i:ss removexattr
--lremovexattr EXTRA lremovexattr i:ss lremovexattr
--fremovexattr EXTRA fremovexattr i:is fremovexattr
-+setxattr - setxattr i:sspii setxattr
-+lsetxattr - lsetxattr i:sspii lsetxattr
-+fsetxattr - fsetxattr i:ispii fsetxattr
-+getxattr - getxattr i:sspi getxattr
-+lgetxattr - lgetxattr i:sspi lgetxattr
-+fgetxattr - fgetxattr i:ispi fgetxattr
-+listxattr - listxattr i:ssi listxattr
-+llistxattr - llistxattr i:ssi llistxattr
-+flistxattr - flistxattr i:isi flistxattr
-+removexattr - removexattr i:ss removexattr
-+lremovexattr - lremovexattr i:ss lremovexattr
-+fremovexattr - fremovexattr i:is fremovexattr
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sysconf.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/sysconf.c Thu Mar 27 18:55:08 2003
-@@ -0,0 +1,52 @@
-+/* Get file-specific information about a file. Linux version.
-+ Copyright (C) 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>
-+#include <time.h>
-+#include <unistd.h>
-+
-+static long int posix_sysconf (int name);
-+
-+/* Define this first, so it can be inlined. */
-+#define __sysconf static posix_sysconf
-+#include <sysdeps/posix/sysconf.c>
-+
-+
-+/* Get the value of the system variable NAME. */
-+long int
-+__sysconf (int name)
-+{
-+ switch (name)
-+ {
-+#ifdef __NR_clock_getres
-+ case _SC_MONOTONIC_CLOCK:
-+ /* Check using the clock_getres system call. */
-+ {
-+ struct timespec ts;
-+ INTERNAL_SYSCALL_DECL (err);
-+ int r;
-+ r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
-+ return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : 1;
-+ }
-+#endif
-+
-+ default:
-+ return posix_sysconf (name);
-+ }
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/system.c glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/system.c
---- glibc-2.3.2/sysdeps/unix/sysv/linux/system.c Thu Sep 12 20:29:32 1996
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/system.c Sun Mar 16 00:43:51 2003
-@@ -1,2 +1,73 @@
-+/* Copyright (C) 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 <sched.h>
-+#include <signal.h>
-+#include <sysdep.h>
-+#include <unistd.h>
-+#include <sys/wait.h>
-+#include <bits/libc-lock.h>
-+#include <kernel-features.h>
-+
-+/* We have to and actually can handle cancelable system(). The big
-+ problem: we have to kill the child process if necessary. To do
-+ this a cleanup handler has to be registered and is has to be able
-+ to find the PID of the child. The main problem is to reliable have
-+ the PID when needed. It is not necessary for the parent thread to
-+ return. It might still be in the kernel when the cancellation
-+ request comes. Therefore we have to use the clone() calls ability
-+ to have the kernel write the PID into the user-level variable. */
-+#if defined __ASSUME_CLONE_THREAD_FLAGS && !defined FORK
-+# define FORK() \
-+ INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
-+#endif
-+
-+static void cancel_handler (void *arg);
-+
-+#define CLEANUP_HANDLER \
-+ __libc_cleanup_region_start (1, cancel_handler, &pid)
-+
-+#define CLEANUP_RESET \
-+ __libc_cleanup_region_end (0)
-+
-+
- /* Linux has waitpid(), so override the generic unix version. */
- #include <sysdeps/posix/system.c>
-+
-+
-+/* The cancellation handler. */
-+static void
-+cancel_handler (void *arg)
-+{
-+ pid_t child = *(pid_t *) arg;
-+
-+ INTERNAL_SYSCALL_DECL (err);
-+ INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
-+
-+ TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
-+
-+ DO_LOCK ();
-+
-+ if (SUB_REF () == 0)
-+ {
-+ (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
-+ (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
-+ }
-+
-+ DO_UNLOCK ();
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h Wed Sep 19 12:30:39 2001
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/bits/mman.h Mon Mar 3 11:03:36 2003
-@@ -1,5 +1,5 @@
- /* Definitions for POSIX memory map interface. Linux/x86_64 version.
-- Copyright (C) 2001 Free Software Foundation, Inc.
-+ Copyright (C) 2001, 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
-@@ -53,11 +53,13 @@
-
- /* These are Linux-specific. */
- #ifdef __USE_MISC
--# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
--# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
--# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
--# define MAP_LOCKED 0x2000 /* Lock the mapping. */
--# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
-+# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
-+# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
-+# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
-+# define MAP_LOCKED 0x02000 /* Lock the mapping. */
-+# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
-+# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
-+# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
- #endif
-
- /* Flags to `msync'. */
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/clone.S
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S Sun Aug 4 04:20:07 2002
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/clone.S Tue Mar 4 20:45:35 2003
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001,02 Free Software Foundation, Inc.
-+/* Copyright (C) 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
-@@ -31,16 +31,22 @@
- the kernel entry is:
- int clone (long flags, void *child_stack).
-
-- The parameters are passed in register from userland:
-+ The parameters are passed in register and on the stack from userland:
- rdi: fn
- rsi: child_stack
- rdx: flags
- rcx: arg
-+ r8d: TID field in parent
-+ r9d: thread pointer
-+%esp+8: TID field in child
-
- The kernel expects:
- rax: system call number
- rdi: flags
-- rsi: child_stack */
-+ rsi: child_stack
-+ rdx: TID field in parent
-+ r10: TID field in child
-+ r8: thread pointer */
-
-
- .text
-@@ -62,6 +68,9 @@
-
- /* Do the system call. */
- movq %rdx, %rdi
-+ movq %r8, %rdx
-+ movq %r9, %r8
-+ movq 8(%rsp), %r10
- movq $SYS_ify(clone),%rax
- syscall
-
-diff -u -udbrN glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/sysdep.h
---- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h Thu Jan 9 03:54:57 2003
-+++ glibc-2.3.2-200304020432/sysdeps/unix/sysv/linux/x86_64/sysdep.h Sun Mar 23 20:42:23 2003
-@@ -81,6 +81,18 @@
- SYSCALL_ERROR_HANDLER \
- END (name)
-
-+#undef PSEUDO_NOERRNO
-+#define PSEUDO_NOERRNO(name, syscall_name, args) \
-+ .text; \
-+ ENTRY (name) \
-+ DO_CALL (syscall_name, args)
-+
-+#undef PSEUDO_END_NOERRNO
-+#define PSEUDO_END_NOERRNO(name) \
-+ END (name)
-+
-+#define ret_NOERRNO ret
-+
- #ifndef PIC
- #define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
- #elif RTLD_PRIVATE_ERRNO
-@@ -134,36 +146,41 @@
- jmp L(pseudo_end);
- #endif /* PIC */
-
--/* Linux/x86-64 takes system call arguments in registers:
-+/* The Linux/x86-64 kernel expects the system call parameters in
-+ registers according to the following table:
-
-- Register setup:
-- system call number rax
-+ syscall number rax
- arg 1 rdi
- arg 2 rsi
- arg 3 rdx
-- arg 4 rcx
-+ arg 4 r10
- arg 5 r8
- arg 6 r9
-
-+ The Linux kernel uses and destroys internally these registers:
- return address from
- syscall rcx
- additionally clobered: r12-r15,rbx,rbp
- eflags from syscall r11
-
-- The compiler is going to form a call by coming here, through PSEUDO, with arguments:
-+ Normal function call, including calls to the system call stub
-+ functions in the libc, get the first six parameters passed in
-+ registers and the seventh parameter and later on the stack. The
-+ register use is as follows:
-
-- syscall number in the DO_CALL macro
-+ system call number in the DO_CALL macro
- arg 1 rdi
- arg 2 rsi
- arg 3 rdx
-- arg 4 r10
-+ arg 4 rcx
- arg 5 r8
- arg 6 r9
-
-- We have to take care that the stack is alignedto 16 bytes. When
-+ We have to take care that the stack is aligned to 16 bytes. When
- called the stack is not aligned since the return address has just
- been pushed.
-
-+
- Syscalls of more than 6 arguments are not supported. */
-
- #undef DO_CALL
-diff -u -udbrN glibc-2.3.2/sysdeps/wordsize-32/Versions glibc-2.3.2-200304020432/sysdeps/wordsize-32/Versions
---- glibc-2.3.2/sysdeps/wordsize-32/Versions Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/wordsize-32/Versions Mon Mar 3 10:45:12 2003
-@@ -0,0 +1,7 @@
-+libc {
-+ GLIBC_2.3 {
-+ # These were erroneously omitted for 64-bit platforms in 2.3
-+ # and so we don't put them in locale/Versions.
-+ strtoll_l; strtoull_l;
-+ }
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/wordsize-64/Versions glibc-2.3.2-200304020432/sysdeps/wordsize-64/Versions
---- glibc-2.3.2/sysdeps/wordsize-64/Versions Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/wordsize-64/Versions Mon Mar 3 10:45:12 2003
-@@ -0,0 +1,6 @@
-+libc {
-+ GLIBC_2.3.3 {
-+ # These were erroneously omitted for 64-bit platforms in 2.3.
-+ strtoll_l; strtoull_l;
-+ }
-+}
-diff -u -udbrN glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c glibc-2.3.2-200304020432/sysdeps/wordsize-64/strtol_l.c
---- glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c Mon Aug 5 02:30:03 2002
-+++ glibc-2.3.2-200304020432/sysdeps/wordsize-64/strtol_l.c Mon Mar 3 10:45:12 2003
-@@ -1,11 +1,14 @@
- /* We have to irritate the compiler a bit. */
- #define ____strtoll_l_internal ____strtoll_l_internal_XXX
- #define __strtoll_l __strtoll_l_XXX
-+#define strtoll_l strtoll_l_XXX
-
- #include <sysdeps/generic/strtol_l.c>
-
- #undef ____strtoll_l_internal
- #undef __strtoll_l
-+#undef strtoll_l
- strong_alias (____strtol_l_internal, ____strtoll_l_internal)
- libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal)
- weak_alias (__strtol_l, __strtoll_l)
-+weak_alias (__strtol_l, strtoll_l)
-diff -u -udbrN glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c glibc-2.3.2-200304020432/sysdeps/wordsize-64/strtoul_l.c
---- glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c Mon Aug 5 02:30:03 2002
-+++ glibc-2.3.2-200304020432/sysdeps/wordsize-64/strtoul_l.c Mon Mar 3 10:45:12 2003
-@@ -1,11 +1,14 @@
- /* We have to irritate the compiler a bit. */
- #define ____strtoull_l_internal ____strtoull_l_internal_XXX
- #define __strtoull_l __strtoull_l_XXX
-+#define strtoull_l strtoull_l_XXX
-
- #include <sysdeps/generic/strtoul_l.c>
-
- #undef ____strtoull_l_internal
- #undef __strtoull_l
-+#undef strtoull_l
- strong_alias (____strtoul_l_internal, ____strtoull_l_internal)
- libc_hidden_ver (____strtoul_l_internal, ____strtoull_l_internal)
- weak_alias (__strtoul_l, __strtoull_l)
-+weak_alias (__strtoul_l, strtoull_l)
-diff -u -udbrN glibc-2.3.2/sysdeps/x86_64/atomicity.h glibc-2.3.2-200304020432/sysdeps/x86_64/atomicity.h
---- glibc-2.3.2/sysdeps/x86_64/atomicity.h Wed Sep 19 12:12:07 2001
-+++ glibc-2.3.2-200304020432/sysdeps/x86_64/atomicity.h Thu Jan 1 01:00:00 1970
-@@ -1,57 +0,0 @@
--/* Low-level functions for atomic operations. x86-64 version.
-- Copyright (C) 1997, 2000, 2001 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 _ATOMICITY_H
--#define _ATOMICITY_H 1
--
--#include <inttypes.h>
--
--
--static inline uint32_t
--__attribute__ ((unused))
--exchange_and_add (volatile uint32_t *mem, uint32_t val)
--{
-- register uint32_t result;
-- __asm__ __volatile__ ("lock; xaddl %0,%1"
-- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
-- return result;
--}
--
--static inline void
--__attribute__ ((unused))
--atomic_add (volatile uint32_t *mem, int val)
--{
-- __asm__ __volatile__ ("lock; addl %1,%0"
-- : "=m" (*mem) : "er" (val), "0" (*mem));
--}
--
--static inline char
--__attribute__ ((unused))
--compare_and_swap (volatile long int *p, long int oldval, long int newval)
--{
-- char ret;
-- long int readval;
--
-- __asm__ __volatile__ ("lock; cmpxchgq %3, %1; sete %0"
-- : "=q" (ret), "=m" (*p), "=a" (readval)
-- : "r" (newval), "1" (*p), "a" (oldval));
-- return ret;
--}
--
--#endif /* atomicity.h */
-diff -u -udbrN glibc-2.3.2/sysdeps/x86_64/bits/atomic.h glibc-2.3.2-200304020432/sysdeps/x86_64/bits/atomic.h
---- glibc-2.3.2/sysdeps/x86_64/bits/atomic.h Thu Jan 1 01:00:00 1970
-+++ glibc-2.3.2-200304020432/sysdeps/x86_64/bits/atomic.h Wed Mar 26 05:01:47 2003
-@@ -0,0 +1,321 @@
-+/* Copyright (C) 2002, 2003 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.
-+
-+ 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 <stdint.h>
-+
-+
-+typedef int8_t atomic8_t;
-+typedef uint8_t uatomic8_t;
-+typedef int_fast8_t atomic_fast8_t;
-+typedef uint_fast8_t uatomic_fast8_t;
-+
-+typedef int16_t atomic16_t;
-+typedef uint16_t uatomic16_t;
-+typedef int_fast16_t atomic_fast16_t;
-+typedef uint_fast16_t uatomic_fast16_t;
-+
-+typedef int32_t atomic32_t;
-+typedef uint32_t uatomic32_t;
-+typedef int_fast32_t atomic_fast32_t;
-+typedef uint_fast32_t uatomic_fast32_t;
-+
-+typedef int64_t atomic64_t;
-+typedef uint64_t uatomic64_t;
-+typedef int_fast64_t atomic_fast64_t;
-+typedef uint_fast64_t uatomic_fast64_t;
-+
-+typedef intptr_t atomicptr_t;
-+typedef uintptr_t uatomicptr_t;
-+typedef intmax_t atomic_max_t;
-+typedef uintmax_t uatomic_max_t;
-+
-+
-+#ifndef LOCK
-+# ifdef UP
-+# define LOCK /* nothing */
-+# else
-+# define LOCK "lock;"
-+# endif
-+#endif
-+
-+
-+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgb %b2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "q" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgw %w2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgl %2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" (newval), "m" (*mem), "0" (oldval)); \
-+ ret; })
-+
-+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-+ ({ __typeof (*mem) ret; \
-+ __asm __volatile (LOCK "cmpxchgq %q2, %1" \
-+ : "=a" (ret), "=m" (*mem) \
-+ : "r" ((long) (newval)), "m" (*mem), \
-+ "0" ((long) (oldval))); \
-+ ret; })
-+
-+
-+/* Note that we need no lock prefix. */
-+#define atomic_exchange(mem, newvalue) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile ("xchgb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile ("xchgw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile ("xchgl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (newvalue), "m" (*mem)); \
-+ else \
-+ __asm __volatile ("xchgq %q0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" ((long) (newvalue)), "m" (*mem)); \
-+ result; })
-+
-+
-+#define atomic_exchange_and_add(mem, value) \
-+ ({ __typeof (*mem) result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "xaddb %b0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "xaddw %w0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "xaddl %0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "xaddq %q0, %1" \
-+ : "=r" (result), "=m" (*mem) \
-+ : "0" ((long) (value)), "m" (*mem)); \
-+ result; })
-+
-+
-+#define atomic_add(mem, value) \
-+ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_increment (mem); \
-+ else if (__builtin_constant_p (value) && (value) == 1) \
-+ atomic_decrement (mem); \
-+ else if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "addq %q1, %0" \
-+ : "=m" (*mem) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_add_negative(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "addq %q2, %0; sets %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_add_zero(mem, value) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "addb %b2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "addw %w2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "addl %2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" (value), "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "addq %q2, %0; setz %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "ir" ((long) (value)), "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_increment(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "incb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "incw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "incl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "incq %q0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_increment_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "incb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "incw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "incl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "incq %q0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_decrement(mem) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "decb %b0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "decw %w0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "decl %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "decq %q0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem)); \
-+ })
-+
-+
-+#define atomic_decrement_and_test(mem) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "decb %b0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "decw %w0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "decl %0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ else \
-+ __asm __volatile (LOCK "decq %q0; sete %1" \
-+ : "=m" (*mem), "=qm" (__result) \
-+ : "m" (*mem)); \
-+ __result; })
-+
-+
-+#define atomic_bit_set(mem, bit) \
-+ (void) ({ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "orb %b2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "orw %w2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "orl %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "ir" (1L << (bit))); \
-+ else if (__builtin_constant_p (bit) && (bit) < 32) \
-+ __asm __volatile (LOCK "orq %2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "i" (1L << (bit))); \
-+ else \
-+ __asm __volatile (LOCK "orq %q2, %0" \
-+ : "=m" (*mem) \
-+ : "m" (*mem), "r" (1UL << (bit))); \
-+ })
-+
-+
-+#define atomic_bit_test_set(mem, bit) \
-+ ({ unsigned char __result; \
-+ if (sizeof (*mem) == 1) \
-+ __asm __volatile (LOCK "btsb %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 2) \
-+ __asm __volatile (LOCK "btsw %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else if (sizeof (*mem) == 4) \
-+ __asm __volatile (LOCK "btsl %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ else \
-+ __asm __volatile (LOCK "btsq %3, %1; setc %0" \
-+ : "=q" (__result), "=m" (*mem) \
-+ : "m" (*mem), "ir" (bit)); \
-+ __result; })
-diff -u -udbrN glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps glibc-2.3.2-200304020432/sysdeps/x86_64/fpu/libm-test-ulps
---- glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps Fri Dec 6 23:25:36 2002
-+++ glibc-2.3.2-200304020432/sysdeps/x86_64/fpu/libm-test-ulps Sun Mar 23 01:52:10 2003
-@@ -145,7 +145,7 @@
- ldouble: 1
-
- # ccos
--Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
-+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
- float: 1
- ifloat: 1
- ildouble: 1
-@@ -164,10 +164,10 @@
- ifloat: 1
-
- # ccosh
--Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- float: 1
- ifloat: 1
--Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
-+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
- double: 1
- float: 1
- idouble: 1
-@@ -215,7 +215,7 @@
- float: 1
- idouble: 1
- ifloat: 1
--Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
-+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
- double: 1
- float: 5
- idouble: 1
-@@ -373,10 +373,10 @@
- ifloat: 1
-
- # csinh
--Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
--Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
-+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
- double: 1
- idouble: 1
- ildouble: 2
-@@ -399,12 +399,12 @@
- ifloat: 1
-
- # ctan
--Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- double: 1
- idouble: 1
- ildouble: 439
- ldouble: 439
--Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
-+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
- float: 1
- ifloat: 1
- ildouble: 2
-@@ -421,14 +421,14 @@
- ldouble: 3
-
- # ctanh
--Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- float: 2
- ifloat: 2
- ildouble: 5
- ldouble: 5
- double: 1
- idouble: 1
--Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
-+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
- ildouble: 25
- ldouble: 25
- Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-@@ -677,12 +677,12 @@
- Test "lgamma (-0.5) == log(2*sqrt(pi))":
- ildouble: 1
- ldouble: 1
--Test "lgamma (0.7) == 0.26086724653166651439":
-+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
- double: 1
- float: 1
- idouble: 1
- ifloat: 1
--Test "lgamma (1.2) == -0.853740900033158497197e-1":
-+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
- double: 1
- float: 2
- idouble: 1
-@@ -749,7 +749,7 @@
- Test "tgamma (0.5) == sqrt (pi)":
- float: 1
- ifloat: 1
--Test "tgamma (0.7) == 1.29805533264755778568":
-+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
- double: 1
- float: 1
- idouble: 1
-diff -u -udbrN glibc-2.3.2/timezone/antarctica glibc-2.3.2-200304020432/timezone/antarctica
---- glibc-2.3.2/timezone/antarctica Sat Jun 9 22:29:18 2001
-+++ glibc-2.3.2-200304020432/timezone/antarctica Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)antarctica 7.22
-+# @(#)antarctica 7.23
-
- # From Paul Eggert (1999-11-15):
- # To keep things manageable, we list only locations occupied year-round; see
-@@ -255,6 +255,13 @@
- # Halley is on a moving ice shelf and is periodically relocated
- # so that it is never more than 10km from its nominal location.
- # Rothera, Adelaide Island, -6734-6808, since 1976-12-01
-+#
-+# From Paul Eggert (2002-10-22)
-+# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
-+#
-+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-+Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
-+ -3:00 - ROTT # Rothera time
-
- # Uruguay - year round base
- # Artigas, King George Island, -621104-0585107
-diff -u -udbrN glibc-2.3.2/timezone/asia glibc-2.3.2-200304020432/timezone/asia
---- glibc-2.3.2/timezone/asia Tue Oct 15 18:59:28 2002
-+++ glibc-2.3.2-200304020432/timezone/asia Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)asia 7.68
-+# @(#)asia 7.71
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -34,6 +34,7 @@
- # 2:00 EET EEST Eastern European Time
- # 2:00 IST IDT Israel
- # 3:00 AST ADT Arabia*
-+# 3:30 IRST IRDT Iran
- # 4:00 GST Gulf*
- # 5:30 IST India
- # 7:00 ICT Indochina*
-@@ -430,89 +431,97 @@
- 9:00 - EIT
-
- # Iran
--# From Paul Eggert (2000-06-12), following up a suggestion by Rich Wales:
--# Ahmea Alavi in
--# <a href="http://www.persia.org/Iran_Lib/Calendar/taghveem.txt">
--# TAGHVEEM (1993-07-12)
--# </a>
--# writes ``Daylight saving time in Iran starts from the first day
--# of Farvardin and ends the first day of Mehr.'' This disagrees with the SSIM:
-+
-+# From Roozbeh Pournader (2003-03-15):
-+# This is an English translation of what I just found (originally in Persian).
-+# The Gregorian dates in brackets are mine:
- #
--# DST start DST end
--# year SSIM Alavi SSIM Alavi
--# 1991 05-03!= 03-21 09-20!= 09-23
--# 1992 03-22!= 03-21 09-23 09-23
--# 1993 03-21 03-21 09-23 09-23
--# 1994 03-21 03-21 09-22!= 09-23
--# 1995 03-21 03-21 09-22!= 09-23
--# 1996 03-21!= 03-20 09-22 09-22
--# 1997 03-22!= 03-21 09-22!= 09-23
--# 1998 03-21 03-21 09-21!= 09-23
--# 1999 03-22!= 03-21 09-22!= 09-23
--# 2000 03-21!= 03-20 09-21!= 09-22
--# 2001 03-19!= 03-21 09-19!= 09-23
--# 2002 03-18!= 03-21 09-18!= 09-23
-+# Official Newspaper No. 13548-1370/6/25 [1991-09-16]
-+# No. 16760/T233 H 1370/6/10 [1991-09-01]
- #
--# Go with Alavi starting with 1992.
--# I used Ed Reingold's cal-persia in GNU Emacs 19.34 to compute Persian dates.
-+# The Rule About Change of the Official Time of the Country
-+#
-+# The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
-+# based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
-+# of the Country's Organization for Official and Employment Affairs,
-+# and referring to the law for equating the working hours of workers
-+# and officers in the whole country dated 1359/4/23 [1980-07-14], and
-+# for synchronizing the official times of the country, agreed that:
-+#
-+# The official time of the country will should move forward one hour
-+# at the 24[:00] hours of the first day of Farvardin and should return
-+# to its previous state at the 24[:00] hours of the 30th day of
-+# Shahrivar.
-+#
-+# First Deputy to the President - Hassan Habibi
-+#
-+# From personal experience, that agrees with what has been followed
-+# for at least the last 5 years. Before that, for a few years, the
-+# date used was the first Thursday night of Farvardin and the last
-+# Thursday night of Shahrivar, but I can't give exact dates....
-+# I have also changed the abbreviations to what is considered correct
-+# here in Iran, IRST for regular time and IRDT for daylight saving time.
-+
-+# From Paul Eggert (2003-03-15)
-+# Go with Shanks before September 1991, and with Pournader thereafter.
-+# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates.
- # The Persian calendar is based on the sun, and dates after around 2050
- # are approximate; stop after 2037 when 32-bit time_t's overflow.
- #
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--Rule Iran 1978 1980 - Mar 21 0:00 1:00 S
--Rule Iran 1978 only - Oct 21 0:00 0 -
--Rule Iran 1979 only - Sep 19 0:00 0 -
--Rule Iran 1980 only - Sep 23 0:00 0 -
--Rule Iran 1991 only - May 3 0:00s 1:00 S
--Rule Iran 1991 only - Sep 20 0:00s 0 -
--Rule Iran 1992 1995 - Mar 21 0:00 1:00 S
--Rule Iran 1992 1995 - Sep 23 0:00 0 -
--Rule Iran 1996 only - Mar 20 0:00 1:00 S
--Rule Iran 1996 only - Sep 22 0:00 0 -
--Rule Iran 1997 1999 - Mar 21 0:00 1:00 S
--Rule Iran 1997 1999 - Sep 23 0:00 0 -
--Rule Iran 2000 only - Mar 20 0:00 1:00 S
--Rule Iran 2000 only - Sep 22 0:00 0 -
--Rule Iran 2001 2003 - Mar 21 0:00 1:00 S
--Rule Iran 2001 2003 - Sep 23 0:00 0 -
--Rule Iran 2004 only - Mar 20 0:00 1:00 S
--Rule Iran 2004 only - Sep 22 0:00 0 -
--Rule Iran 2005 2007 - Mar 21 0:00 1:00 S
--Rule Iran 2005 2007 - Sep 23 0:00 0 -
--Rule Iran 2008 only - Mar 20 0:00 1:00 S
--Rule Iran 2008 only - Sep 22 0:00 0 -
--Rule Iran 2009 2011 - Mar 21 0:00 1:00 S
--Rule Iran 2009 2011 - Sep 23 0:00 0 -
--Rule Iran 2012 only - Mar 20 0:00 1:00 S
--Rule Iran 2012 only - Sep 22 0:00 0 -
--Rule Iran 2013 2015 - Mar 21 0:00 1:00 S
--Rule Iran 2013 2015 - Sep 23 0:00 0 -
--Rule Iran 2016 only - Mar 20 0:00 1:00 S
--Rule Iran 2016 only - Sep 22 0:00 0 -
--Rule Iran 2017 2019 - Mar 21 0:00 1:00 S
--Rule Iran 2017 2019 - Sep 23 0:00 0 -
--Rule Iran 2020 only - Mar 20 0:00 1:00 S
--Rule Iran 2020 only - Sep 22 0:00 0 -
--Rule Iran 2021 2023 - Mar 21 0:00 1:00 S
--Rule Iran 2021 2023 - Sep 23 0:00 0 -
--Rule Iran 2024 2025 - Mar 20 0:00 1:00 S
--Rule Iran 2024 2025 - Sep 22 0:00 0 -
--Rule Iran 2026 2027 - Mar 21 0:00 1:00 S
--Rule Iran 2026 2027 - Sep 23 0:00 0 -
--Rule Iran 2028 2029 - Mar 20 0:00 1:00 S
--Rule Iran 2028 2029 - Sep 22 0:00 0 -
--Rule Iran 2030 2031 - Mar 21 0:00 1:00 S
--Rule Iran 2030 2031 - Sep 23 0:00 0 -
--Rule Iran 2032 2033 - Mar 20 0:00 1:00 S
--Rule Iran 2032 2033 - Sep 22 0:00 0 -
--Rule Iran 2034 2035 - Mar 21 0:00 1:00 S
--Rule Iran 2034 2035 - Sep 23 0:00 0 -
--Rule Iran 2036 2037 - Mar 20 0:00 1:00 S
--Rule Iran 2036 2037 - Sep 22 0:00 0 -
-+Rule Iran 1978 1980 - Mar 21 0:00 1:00 D
-+Rule Iran 1978 only - Oct 21 0:00 0 S
-+Rule Iran 1979 only - Sep 19 0:00 0 S
-+Rule Iran 1980 only - Sep 23 0:00 0 S
-+Rule Iran 1991 only - May 3 0:00 1:00 D
-+Rule Iran 1992 1995 - Mar 22 0:00 1:00 D
-+Rule Iran 1991 1995 - Sep 22 0:00 0 S
-+Rule Iran 1996 only - Mar 21 0:00 1:00 D
-+Rule Iran 1996 only - Sep 21 0:00 0 S
-+Rule Iran 1997 1999 - Mar 22 0:00 1:00 D
-+Rule Iran 1997 1999 - Sep 22 0:00 0 S
-+Rule Iran 2000 only - Mar 21 0:00 1:00 D
-+Rule Iran 2000 only - Sep 21 0:00 0 S
-+Rule Iran 2001 2003 - Mar 22 0:00 1:00 D
-+Rule Iran 2001 2003 - Sep 22 0:00 0 S
-+Rule Iran 2004 only - Mar 21 0:00 1:00 D
-+Rule Iran 2004 only - Sep 21 0:00 0 S
-+Rule Iran 2005 2007 - Mar 22 0:00 1:00 D
-+Rule Iran 2005 2007 - Sep 22 0:00 0 S
-+Rule Iran 2008 only - Mar 21 0:00 1:00 D
-+Rule Iran 2008 only - Sep 21 0:00 0 S
-+Rule Iran 2009 2011 - Mar 22 0:00 1:00 D
-+Rule Iran 2009 2011 - Sep 22 0:00 0 S
-+Rule Iran 2012 only - Mar 21 0:00 1:00 D
-+Rule Iran 2012 only - Sep 21 0:00 0 S
-+Rule Iran 2013 2015 - Mar 22 0:00 1:00 D
-+Rule Iran 2013 2015 - Sep 22 0:00 0 S
-+Rule Iran 2016 only - Mar 21 0:00 1:00 D
-+Rule Iran 2016 only - Sep 21 0:00 0 S
-+Rule Iran 2017 2019 - Mar 22 0:00 1:00 D
-+Rule Iran 2017 2019 - Sep 22 0:00 0 S
-+Rule Iran 2020 only - Mar 21 0:00 1:00 D
-+Rule Iran 2020 only - Sep 21 0:00 0 S
-+Rule Iran 2021 2023 - Mar 22 0:00 1:00 D
-+Rule Iran 2021 2023 - Sep 22 0:00 0 S
-+Rule Iran 2024 2025 - Mar 21 0:00 1:00 D
-+Rule Iran 2024 2025 - Sep 21 0:00 0 S
-+Rule Iran 2026 2027 - Mar 22 0:00 1:00 D
-+Rule Iran 2026 2027 - Sep 22 0:00 0 S
-+Rule Iran 2028 2029 - Mar 21 0:00 1:00 D
-+Rule Iran 2028 2029 - Sep 21 0:00 0 S
-+Rule Iran 2030 2031 - Mar 22 0:00 1:00 D
-+Rule Iran 2030 2031 - Sep 22 0:00 0 S
-+Rule Iran 2032 2033 - Mar 21 0:00 1:00 D
-+Rule Iran 2032 2033 - Sep 21 0:00 0 S
-+Rule Iran 2034 2035 - Mar 22 0:00 1:00 D
-+Rule Iran 2034 2035 - Sep 22 0:00 0 S
-+Rule Iran 2036 2037 - Mar 21 0:00 1:00 D
-+Rule Iran 2036 2037 - Sep 21 0:00 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Asia/Tehran 3:25:44 - LMT 1916
- 3:25:44 - TMT 1946 # Tehran Mean Time
-- 3:30 - IRT 1977 Nov
-+ 3:30 - IRST 1977 Nov
- 4:00 Iran IR%sT 1979
- 3:30 Iran IR%sT
-
-@@ -1154,9 +1163,26 @@
- # and Sunday of April" phrase, if taken literally, means that the
- # transition takes place at 00:00 on the first Sunday on or after 04-02.
-
-+# From Paul Eggert (2003-02-09):
-+# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
-+# that 2002 DST ended that day at midnight. Go with McDow for now.
-+
-+# From Steffen Thorsen (2003-03-14):
-+# According to http://www.dawn.com/2003/03/07/top15.htm
-+# there will be no DST in Pakistan this year:
-+#
-+# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
-+# Rashid Ahmed on Thursday said the cabinet had reversed a previous
-+# decision to advance clocks by one hour in summer and put them back by
-+# one hour in winter with the aim of saving light hours and energy.
-+#
-+# The minister told a news conference that the experiment had rather
-+# shown 8 per cent higher consumption of electricity.
-+
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
--Rule Pakistan 2002 max - Apr Sun>=2 0:00 1:00 S
--Rule Pakistan 2002 max - Oct 15 0:00 0 -
-+Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
-+Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Asia/Karachi 4:28:12 - LMT 1907
- 5:30 - IST 1942 Sep
-diff -u -udbrN glibc-2.3.2/timezone/australasia glibc-2.3.2-200304020432/timezone/australasia
---- glibc-2.3.2/timezone/australasia Tue Oct 15 18:59:28 2002
-+++ glibc-2.3.2-200304020432/timezone/australasia Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)australasia 7.67
-+# @(#)australasia 7.68
- # This file also includes Pacific islands.
-
- # Notes are at the end of this file
-@@ -297,6 +297,17 @@
- ###############################################################################
-
- # New Zealand
-+#
-+# From Paul Eggert (2002-10-23):
-+# The Department of Internal Affairs (DIA) maintains a brief history;
-+# see tz-link.htm for the full reference.
-+#
-+# Shanks gives 1868 for the introduction of standard time; go with the
-+# DIA's more-precise 1868-11-02. The DIA says that clocks were
-+# advanced by half an hour in 1941; go with Shanks's more-precise
-+# 1940-09-29 02:00. The DIA says that starting in 1933 DST began the
-+# first Sunday in September; go with Shanks's last Sunday starting in
-+# 1934.
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- # Shanks gives 1927 Nov 6 - 1928 Mar 4, 1928 Oct 14 - 1929 Mar 17,
-@@ -311,17 +322,17 @@
- # didn't change until 1945 Apr 30; go with Shanks.
- Rule NZ 1934 1940 - Apr lastSun 2:00 0 S
- Rule NZ 1934 1939 - Sep lastSun 2:00 0:30 HD
--Rule NZ 1974 only - Nov 3 2:00s 1:00 D
-+Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
-+Rule NZ 1975 only - Feb lastSun 2:00s 0 S
- Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
--Rule NZ 1989 only - Oct 8 2:00s 1:00 D
--Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
--Rule NZ 1975 only - Feb 23 2:00s 0 S
- Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
-+Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
-+Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
- Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
- Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
- Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
--Zone Pacific/Auckland 11:39:04 - LMT 1868
-+Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
- 11:30 NZ NZ%sT 1940 Sep 29 2:00
- 12:00 NZ NZ%sT
- Zone Pacific/Chatham 12:45 Chatham CHA%sT
-@@ -399,8 +410,8 @@
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Tonga 1999 only - Oct 7 2:00s 1:00 S
- Rule Tonga 2000 only - Mar 19 2:00s 0 -
--Rule Tonga 2000 max - Nov Sun>=1 2:00 1:00 S
--Rule Tonga 2001 max - Jan lastSun 2:00 0 -
-+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S
-+Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Pacific/Tongatapu 12:19:20 - LMT 1901
- 12:20 - TOT 1941 # Tonga Time
-@@ -1263,6 +1274,8 @@
- # of January the standard time in the Kingdom shall be moved backward by one
- # hour to 1:00am.
-
-+# From Pulu 'Anau (2002-11-05):
-+# The law was for 3 years, supposedly to get renewed. It wasn't.
-
- ###############################################################################
-
-diff -u -udbrN glibc-2.3.2/timezone/europe glibc-2.3.2-200304020432/timezone/europe
---- glibc-2.3.2/timezone/europe Sat Apr 6 05:40:00 2002
-+++ glibc-2.3.2-200304020432/timezone/europe Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)europe 7.82
-+# @(#)europe 7.83
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -33,17 +33,17 @@
- # I invented the abbreviations marked `*' in the following table;
- # the rest are from earlier versions of this file, or from other sources.
- # Corrections are welcome!
--# std dst
-+# std dst 2dst
- # LMT Local Mean Time
--# -4:00 AST Atlantic
-+# -4:00 AST ADT Atlantic
- # -3:00 WGT WGST Western Greenland*
- # -1:00 EGT EGST Eastern Greenland*
--# 0:00 GMT BST Greenwich, British Summer
-+# 0:00 GMT BST BDST Greenwich, British Summer
- # 0:00 GMT IST Greenwich, Irish Summer
--# 0:00 WET WEST Western Europe
--# 0:19:32 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
-+# 0:00 WET WEST WEMT Western Europe
-+# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
- # 0:20 NET NEST Netherlands (1937-1940)*
--# 1:00 CET CEST Central Europe
-+# 1:00 CET CEST CEMT Central Europe
- # 1:00:14 SET Swedish (1879-1899)*
- # 2:00 EET EEST Eastern Europe
- # 3:00 MSK MSD Moscow
-@@ -558,20 +558,30 @@
- 1:00 EU CE%sT
-
- # Austria
-+
-+# From Paul Eggert (2003-02-28): Shanks gives 1918-06-16 and
-+# 1945-11-18, but the Austrian Federal Office of Metrology and
-+# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
-+# date of 1945-04-12 with no time. For the 1980-04-06 transition
-+# Shanks gives 02:00, the BEV 00:00. Go with the BEV, and guess 02:00
-+# for 1945-04-12.
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Austria 1920 only - Apr 5 2:00s 1:00 S
- Rule Austria 1920 only - Sep 13 2:00s 0 -
--Rule Austria 1945 only - Apr 2 2:00s 1:00 S
--Rule Austria 1945 only - Nov 18 2:00s 0 -
- Rule Austria 1946 only - Apr 14 2:00s 1:00 S
- Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 -
- Rule Austria 1947 only - Apr 6 2:00s 1:00 S
- Rule Austria 1948 only - Apr 18 2:00s 1:00 S
-+Rule Austria 1980 only - Apr 6 0:00 1:00 S
-+Rule Austria 1980 only - Sep 28 0:00 0 -
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
-- 1:00 C-Eur CE%sT 1918 Jun 16 3:00
-- 1:00 Austria CE%sT 1940 Apr 1 2:00
-- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
-+ 1:00 C-Eur CE%sT 1920
-+ 1:00 Austria CE%sT 1940 Apr 1 2:00s
-+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
-+ 1:00 1:00 CEST 1945 Apr 12 2:00s
-+ 1:00 - CET 1946
- 1:00 Austria CE%sT 1981
- 1:00 EU CE%sT
-
-@@ -654,7 +664,7 @@
- 1:00 EU CE%sT
-
- # Bosnia and Herzegovina
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Bulgaria
- #
-@@ -681,7 +691,7 @@
- 2:00 EU EE%sT
-
- # Croatia
--# see Yugosloavia
-+# see Serbia and Montenegro
-
- # Czech Republic
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -991,25 +1001,29 @@
- # From Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> (1998-09-29):
- # The German time zone web site by the Physikalisch-Technische
- # Bundesanstalt contains DST information back to 1916.
--#
--# <a href="http://www.ptb.de/english/org/4/43/432/lega.htm">
--# Realisation of Legal Time in Germany
--# </a>
-+# [See tz-link.htm for the URL.]
-+
-+# From Joerg Schilling (2002-10-23):
-+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by <a
-+# href="http://www.dhm.de/lemo/html/biografien/BersarinNikolai/">
-+# General [Nikolai] Bersarin</a>.
-+
-+# From Paul Eggert (2003-03-08):
-+# <a href="http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf">
-+# says that Bersarin issued an order to use Moscow time on May 20.
-+# However, Moscow did not observe daylight saving in 1945, so
-+# this was equivalent to CEMT (GMT+3), not GMT+4.
-+
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Germany 1945 only - Apr 2 2:00s 1:00 S
--# Shanks says 05-24 2:00 to 09-24 3:00 for DDST; go with the PTB, who quotes
--# the Archiv fuer publizist. Arbeit (Munzinger-Archiv) 652 (Zeitsystem)
--# (1961-11-25), which gives dates only. Guess 3:00 transition times.
--Rule Germany 1945 only - May 31 3:00 2:00 M # Midsummer
--Rule Germany 1945 only - Sep 23 3:00 1:00 S
-+Rule Germany 1945 only - May 24 2:00 2:00 M # Midsummer
-+Rule Germany 1945 only - Sep 24 3:00 1:00 S
- Rule Germany 1945 only - Nov 18 2:00s 0 -
- Rule Germany 1946 only - Apr 14 2:00s 1:00 S
- Rule Germany 1946 only - Oct 7 2:00s 0 -
- Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
- Rule Germany 1947 only - Apr 6 2:00s 1:00 S
--# The PTB gives 3:00 CET and 3:00 CEST for the midsummer transition times;
--# go with Shanks.
- Rule Germany 1947 only - May 11 2:00s 2:00 M
- Rule Germany 1947 only - Jun 29 3:00 1:00 S
- Rule Germany 1948 only - Apr 18 2:00s 1:00 S
-@@ -1341,6 +1355,15 @@
- # Fact File, Lithuanian State Department of Tourism
- # </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
-
-+# From a user via Klaus Marten (2003-02-07):
-+# As a candidate for membership of the European Union, Lithuania will
-+# observe Summer Time in 2003, changing its clocks at the times laid
-+# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
-+# neighbour Latvia). The text of the Lithuanian government Order of
-+# 7.XI.02 to this effect can be found at
-+# http://www.lrvk.lt/nut/11/n1749.htm
-+
-+
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- Zone Europe/Vilnius 1:41:16 - LMT 1880
- 1:24:00 - WMT 1917 # Warsaw Mean Time
-@@ -1355,7 +1378,8 @@
- 2:00 C-Eur EE%sT 1998
- 2:00 - EET 1998 Mar 29 1:00u
- 1:00 EU CE%sT 1999 Oct 31 1:00u
-- 2:00 - EET
-+ 2:00 - EET 2003 Jan 1
-+ 2:00 EU EE%sT
-
- # Luxembourg
- # Whitman disagrees with most of these dates in minor ways; go with Shanks.
-@@ -1393,7 +1417,7 @@
- 1:00 EU CE%sT
-
- # Macedonia
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Malta
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -1979,11 +2003,27 @@
- 11:00 Russia ANA%sT 1992 Jan 19 2:00s
- 12:00 Russia ANA%sT
-
-+# Serbia and Montenegro
-+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-+Zone Europe/Belgrade 1:22:00 - LMT 1884
-+ 1:00 - CET 1941 Apr 18 23:00
-+ 1:00 C-Eur CE%sT 1945 May 8 2:00s
-+ 1:00 1:00 CEST 1945 Sep 16 2:00s
-+# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
-+# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
-+# Shanks doesn't give as much detail, so go with Kozelj.
-+ 1:00 - CET 1982 Nov 27
-+ 1:00 EU CE%sT
-+Link Europe/Belgrade Europe/Ljubljana # Slovenia
-+Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
-+Link Europe/Belgrade Europe/Skopje # Macedonia
-+Link Europe/Belgrade Europe/Zagreb # Croatia
-+
- # Slovakia
- Link Europe/Prague Europe/Bratislava
-
- # Slovenia
--# see Yugoslavia
-+# see Serbia and Montenegro
-
- # Spain
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-@@ -2191,6 +2231,15 @@
- Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
-
- # Ukraine
-+#
-+# From Igor Karpov, who works for the Ukranian Ministry of Justice,
-+# via Garrett Wollman (2003-01-27):
-+# BTW, I've found the official document on this matter. It's goverment
-+# regulations number 509, May 13, 1996. In my poor translation it says:
-+# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
-+# of March at 3am the time is changing to 4am and each last Sunday of
-+# October the time at 4am is changing to 3am"
-+
- # Zone NAME GMTOFF RULES FORMAT [UNTIL]
- # Most of Ukraine since 1970 has been like Kiev.
- Zone Europe/Kiev 2:02:04 - LMT 1880
-@@ -2248,22 +2297,6 @@
- 3:00 Russia MSK/MSD 1997
- 3:00 - MSK 1997 Mar lastSun 1:00u
- 2:00 EU EE%sT
--
--# Yugoslavia
--# Zone NAME GMTOFF RULES FORMAT [UNTIL]
--Zone Europe/Belgrade 1:22:00 - LMT 1884
-- 1:00 - CET 1941 Apr 18 23:00
-- 1:00 C-Eur CE%sT 1945 May 8 2:00s
-- 1:00 1:00 CEST 1945 Sep 16 2:00s
--# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
--# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
--# Shanks doesn't give as much detail, so go with Kozelj.
-- 1:00 - CET 1982 Nov 27
-- 1:00 EU CE%sT
--Link Europe/Belgrade Europe/Ljubljana # Slovenia
--Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
--Link Europe/Belgrade Europe/Skopje # Macedonia
--Link Europe/Belgrade Europe/Zagreb # Croatia
-
- ###############################################################################
-
-diff -u -udbrN glibc-2.3.2/timezone/iso3166.tab glibc-2.3.2-200304020432/timezone/iso3166.tab
---- glibc-2.3.2/timezone/iso3166.tab Tue Oct 15 19:12:42 2002
-+++ glibc-2.3.2-200304020432/timezone/iso3166.tab Mon Mar 24 20:00:03 2003
-@@ -2,11 +2,11 @@
- #
- # @(#)iso3166.tab 1.9
- #
--# From Paul Eggert <eggert@twinsun.com> (2002-05-28):
-+# From Paul Eggert <eggert@twinsun.com> (2003-02-04):
- #
- # This file contains a table with the following columns:
- # 1. ISO 3166-1 alpha-2 country code, current as of
--# ISO 3166-1 Newsletter No. V-5 (2002-05-20). See:
-+# ISO 3166-1 Newsletter No. V-7 (2003-01-14). See:
- # <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
- # ISO 3166 Maintenance agency (ISO 3166/MA)
- # </a>.
-@@ -256,7 +256,7 @@
- WS Samoa (Western)
- YE Yemen
- YT Mayotte
--YU Yugoslavia
-+YU Serbia and Montenegro
- ZA South Africa
- ZM Zambia
- ZW Zimbabwe
-diff -u -udbrN glibc-2.3.2/timezone/northamerica glibc-2.3.2-200304020432/timezone/northamerica
---- glibc-2.3.2/timezone/northamerica Sat Apr 6 05:40:00 2002
-+++ glibc-2.3.2-200304020432/timezone/northamerica Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)northamerica 7.61
-+# @(#)northamerica 7.62
- # also includes Central America and the Caribbean
-
- # This data is by no means authoritative; if you think you know better,
-@@ -88,6 +88,23 @@
- # of surrender, all of whom interrupting the bells of Big Ben in
- # London which were to precede Mr. Attlee's speech.
-
-+# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout. From
-+# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
-+#
-+# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
-+# Any announcement from Asia would reach St. John's New York newsroom on a
-+# wire service teletype machine, which had prescribed signals for major news.
-+# Associated Press, for example, would ring five bells before spewing out
-+# typed copy of an important story, and 10 bells for news "of transcendental
-+# importance."
-+#
-+# On Aug. 14, stalling while talking steadily into the NBC networks' open
-+# microphone, St. John heard five bells and waited only to hear a sixth bell,
-+# before announcing confidently: "Ladies and gentlemen, World War II is over.
-+# The Japanese have agreed to our surrender terms."
-+#
-+# He had scored a 20-second scoop on other broadcasters.
-+
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
- Rule US 1918 1919 - Oct lastSun 2:00 0 S
-@@ -189,10 +206,11 @@
- # US eastern time, represented by New York
-
- # Connecticut, Delaware, District of Columbia, most of Florida,
--# Georgia, far southeastern Indiana, eastern Kentucky, Maine,
--# Maryland, Massachusetts, New Hampshire, New Jersey, New York, North
--# Carolina, Ohio, Pennsylvania, Rhode Island, South Carolina, eastern
--# Tennessee, Vermont, Virginia, West Virginia
-+# Georgia, southeast Indiana (Clark, Dearborn, Floyd, Harrison, and
-+# Ohio counties), eastern Kentucky, Maine, Maryland, Massachusetts,
-+# New Hampshire, New Jersey, New York, North Carolina, Ohio,
-+# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
-+# Vermont, Virginia, West Virginia
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
- Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
-@@ -211,10 +229,11 @@
- # US central time, represented by Chicago
-
- # Alabama, Arkansas, Florida panhandle, Illinois, western Indiana
--# corners, Iowa, most of Kansas, western Kentucky, Louisiana,
--# Minnesota, Mississippi, Missouri, eastern Nebraska, eastern North
--# Dakota, Oklahoma, eastern South Dakota, western Tennessee, most of
--# Texas, Wisconsin
-+# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
-+# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
-+# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
-+# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
-+# western Tennessee, most of Texas, Wisconsin
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
- Rule Chicago 1920 only - Jun 13 2:00 1:00 D
-@@ -357,12 +376,32 @@
- # Now we turn to US areas that have diverged from the consensus since 1970.
-
- # Arizona mostly uses MST.
-+
-+# From Paul Eggert (2002-10-20):
-+#
-+# The information in the rest of this paragraph is derived from the
-+# <a href="http://www.dlapr.lib.az.us/links/daylight.htm">
-+# Daylight Saving Time web page (2002-01-23)</a> maintained by the
-+# Arizona State Library, Archives and Public Records.
-+# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
-+# time, but by federal law railroads, airlines, bus lines, military
-+# personnel, and some engaged in interstate commerce continued to
-+# observe war (i.e., daylight saving) time. The 1944-03-17 Phoenix
-+# Gazette says that was the date the law changed, and that 04-01 was
-+# the date the state's clocks would change. In 1945 the State of
-+# Arizona used standard time all year, again with exceptions only as
-+# mandated by federal law. Arizona observed DST in 1967, but Arizona
-+# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
-+#
-+# Shanks says the 1944 experiment came to an end on 1944-03-17.
-+# Go with the Arizona State Library instead.
-+
- Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 12:00
- -7:00 US M%sT 1944 Jan 1 00:01
-- -7:00 - MST 1944 Mar 17 00:01
-+ -7:00 - MST 1944 Apr 1 00:01
- -7:00 US M%sT 1944 Oct 1 00:01
- -7:00 - MST 1967
-- -7:00 US M%sT 1968
-+ -7:00 US M%sT 1968 Mar 21
- -7:00 - MST
- # From Arthur David Olson (1988-02-13):
- # A writer from the Inter Tribal Council of Arizona, Inc.,
-diff -u -udbrN glibc-2.3.2/timezone/southamerica glibc-2.3.2-200304020432/timezone/southamerica
---- glibc-2.3.2/timezone/southamerica Tue Oct 15 19:03:12 2002
-+++ glibc-2.3.2-200304020432/timezone/southamerica Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)southamerica 7.45
-+# @(#)southamerica 7.46
-
- # This data is by no means authoritative; if you think you know better,
- # go ahead and edit the file (and please send any changes to
-@@ -583,6 +583,10 @@
- # From Paul Eggert (2001-05-04):
- # Go with this article in preference to Shanks's 1969 date for modern DST.
- # Assume this rule has been used since DST was introduced in the islands.
-+
-+# From Paul Eggert (2002-10-24):
-+# <http://www.shoa.cl/shoa/faqhoraoficial.htm> gives many details that
-+# disagree with the following table, but we haven't had time to compare them.
-
- # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
- Rule Chile 1918 only - Sep 1 0:00 1:00 S
-diff -u -udbrN glibc-2.3.2/timezone/zone.tab glibc-2.3.2-200304020432/timezone/zone.tab
---- glibc-2.3.2/timezone/zone.tab Tue Oct 15 19:00:59 2002
-+++ glibc-2.3.2-200304020432/timezone/zone.tab Mon Mar 24 20:00:03 2003
-@@ -1,4 +1,4 @@
--# @(#)zone.tab 1.27
-+# @(#)zone.tab 1.28
- #
- # TZ zone descriptions
- #
-@@ -33,6 +33,7 @@
- AO -0848+01314 Africa/Luanda
- AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
- AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
-+AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
- AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
- AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
- AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
-diff -u -udbrN glibc-2.3.2/tls.make.c glibc-2.3.2-200304020432/tls.make.c
---- glibc-2.3.2/tls.make.c Fri Nov 15 04:36:55 2002
-+++ glibc-2.3.2-200304020432/tls.make.c Wed Mar 26 23:49:17 2003
-@@ -2,6 +2,12 @@
-
- #include <tls.h>
-
-+#if USE_TLS
-+@@@ use-tls = yes @@@
-+#else
-+@@@ use-tls = no @@@
-+#endif
-+
- #if USE___THREAD
- @@@ use-thread = yes @@@
- #else
diff --git a/packages/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch b/packages/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch
deleted file mode 100644
index 660be1e140..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc-2.3.2-ldconfig-tls.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- glibc-2.3.2/elf/cache.c.orig 2003-10-24 19:57:55.000000000 -0400
-+++ glibc-2.3.2/elf/cache.c 2003-10-24 20:06:06.000000000 -0400
-@@ -246,6 +246,16 @@ int compare (const struct cache_entry *e
- return 1;
- else if (e1->flags > e2->flags)
- return -1;
-+#ifdef USE_TLS
-+ /* ld.so doesn't sort by "most specific hwcap". It searches based on
-+ the numbering of the bits, and TLS takes precedence. This still
-+ doesn't bring us in line with ld.so, but it does bring us closer -
-+ close enough for Debian's current needs. */
-+ else if ((e2->hwcap & (1ULL << 63)) && ! (e1->hwcap & (1ULL << 63)))
-+ return 1;
-+ else if ((e1->hwcap & (1ULL << 63)) && ! (e2->hwcap & (1ULL << 63)))
-+ return -1;
-+#endif
- /* Sort by most specific hwcap. */
- else if (e2->bits_hwcap > e1->bits_hwcap)
- return 1;
diff --git a/packages/glibc/glibc-2.3.2/glibc-i686-timing.patch b/packages/glibc/glibc-2.3.2/glibc-i686-timing.patch
deleted file mode 100644
index acac110944..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc-i686-timing.patch
+++ /dev/null
@@ -1,125 +0,0 @@
---- glibc-2.3.2/sysdeps/generic/ldsodefs.h.orig 2003-10-03 11:47:45.000000000 -0400
-+++ glibc-2.3.2/sysdeps/generic/ldsodefs.h 2003-10-03 11:48:10.000000000 -0400
-@@ -292,7 +292,7 @@ struct rtld_global
- /* The object to be initialized first. */
- EXTERN struct link_map *_dl_initfirst;
-
--#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL
-+#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD
- /* Start time on CPU clock. */
- EXTERN hp_timing_t _dl_cpuclock_offset;
-
---- /dev/null 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/hp-timing.h 2003-10-03 11:50:30.000000000 -0400
-@@ -0,0 +1,34 @@
-+/* High precision, low overhead timing functions. i386 version.
-+ Copyright (C) 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. */
-+
-+#ifndef _i386_HP_TIMING_H
-+#define _i386_HP_TIMING_H 1
-+
-+#define hp_timing_t hp_timing_t__
-+#include <sysdeps/generic/hp-timing.h>
-+#undef hp_timing_t
-+
-+/* We don't use high-precision timers, but we might load an i686 libpthread
-+ which does. */
-+#define HP_TIMING_PAD 1
-+
-+/* i686 uses 64bit values for the times. */
-+typedef unsigned long long int hp_timing_t;
-+
-+#endif /* hp-timing.h */
---- glibc-2.3.2/elf/Makefile.orig 2003-10-12 13:15:46.000000000 -0400
-+++ glibc-2.3.2/elf/Makefile 2003-10-12 13:17:38.000000000 -0400
-@@ -23,7 +23,7 @@ subdir := elf
- headers = elf.h bits/elfclass.h link.h
- routines = $(dl-routines) dl-open dl-close dl-support dl-iteratephdr \
- dl-iteratephdr-static dl-addr enbl-secure dl-profstub \
-- dl-origin dl-libc dl-sym dl-tsd
-+ dl-origin dl-libc dl-sym dl-tsd dl-altinit
-
- # The core dynamic linking functions are in libc for the static and
- # profiled libraries.
-@@ -40,6 +40,10 @@ elide-routines.os = $(all-dl-routines) d
- rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal
- all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines)
-
-+# We only need to re-run initializers if ld.so and libc.so might be built
-+# for different machines, so only shared libraries need dl-altinit.
-+shared-only-routines = dl-altinit
-+
- distribute := rtld-Rules \
- $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \
- dl-cache.h dl-hash.h soinit.c sofini.c ldd.bash.in \
-@@ -91,7 +95,7 @@ include ../Makeconfig
-
- ifeq ($(unwind-find-fde),yes)
- routines += unwind-dw2-fde-glibc
--shared-only-routines = unwind-dw2-fde-glibc
-+shared-only-routines += unwind-dw2-fde-glibc
- endif
-
- before-compile = $(objpfx)trusted-dirs.h
---- /dev/null 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.2/elf/dl-altinit.c 2003-10-12 13:23:15.000000000 -0400
-@@ -0,0 +1,43 @@
-+/* Extra initializers for shared libc.
-+ Copyright (C) 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 <ldsodefs.h>
-+#include <hp-timing.h>
-+
-+/* This file is used from the shared libc, to initialize anything which
-+ ld.so should have initialized but didn't - for instance, if ld.so
-+ is built for a machine without HP_TIMING but libc.so is built for
-+ a machine with HP_TIMING, clock_gettime will expect dl_cpuclock_offset
-+ to be initialized. */
-+
-+static void
-+dlinit_hptiming (void)
-+{
-+#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL
-+ if (GL(dl_cpuclock_offset) == 0)
-+ HP_TIMING_NOW (GL(dl_cpuclock_offset));
-+#endif
-+}
-+
-+static void dlinit_alt (void) __attribute__((constructor));
-+static void
-+dlinit_alt (void)
-+{
-+ dlinit_hptiming ();
-+}
diff --git a/packages/glibc/glibc-2.3.2/glibc-make-check-perms.patch b/packages/glibc/glibc-2.3.2/glibc-make-check-perms.patch
deleted file mode 100644
index dfcd05196b..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc-make-check-perms.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc/Makefile 9 Sep 2003 02:30:15 -0000 1.234
-+++ glibc/Makefile 12 Oct 2003 23:24:08 -0000
-@@ -232,6 +232,7 @@ tests: $(objpfx)c++-types-check.out
- ifneq ($(CXX),no)
- ifneq (,$(wildcard scripts/data/c++-types-$(base-machine)-$(config-os).data))
- $(objpfx)c++-types-check.out: scripts/data/c++-types-$(base-machine)-$(config-os).data
-+ chmod a+x scripts/check-c++-types.sh
- scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99,$(CFLAGS)) $(CPPFLAGS) > $@
- else
- $(objpfx)c++-types-check.out:
diff --git a/packages/glibc/glibc-2.3.2/glibc22-eo_EO.patch b/packages/glibc/glibc-2.3.2/glibc22-eo_EO.patch
deleted file mode 100644
index 354bbd41d0..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-eo_EO.patch
+++ /dev/null
@@ -1,219 +0,0 @@
---- glibc-2.2.3/localedata/locales/eo_EO~ Wed Dec 31 19:00:00 1969
-+++ glibc-2.2.3/localedata/locales/eo_EO Thu May 10 15:10:30 2001
-@@ -0,0 +1,216 @@
-+comment_char %
-+escape_char /
-+
-+% Esperanto language locale for ...
-+% Edmund GRIMLEY EVANS <edmundo@rano.org>
-+
-+LC_IDENTIFICATION
-+title "Esperanto locale"
-+source ""
-+address ""
-+contact ""
-+email "debian-esperanto@lists.debian.org"
-+tel ""
-+fax ""
-+language "Esperanto"
-+territory ""
-+revision "draft"
-+date "2001-03-29"
-+%
-+category "eo_EO:2000";LC_IDENTIFICATION
-+category "eo_EO:2000";LC_CTYPE
-+category "eo_EO:2000";LC_COLLATE
-+category "eo_EO:2000";LC_TIME
-+category "eo_EO:2000";LC_NUMERIC
-+category "eo_EO:2000";LC_MONETARY
-+category "eo_EO:2000";LC_MESSAGES
-+category "eo_EO:2000";LC_PAPER
-+category "eo_EO:2000";LC_NAME
-+category "eo_EO:2000";LC_ADDRESS
-+category "eo_EO:2000";LC_TELEPHONE
-+
-+END LC_IDENTIFICATION
-+
-+LC_CTYPE
-+copy "i18n"
-+END LC_CTYPE
-+
-+LC_COLLATE
-+copy "iso14651_t1"
-+
-+collating-symbol <ccirc>
-+collating-symbol <gcirc>
-+collating-symbol <hcirc>
-+collating-symbol <jcirc>
-+collating-symbol <scirc>
-+collating-symbol <ubreve>
-+
-+reorder-after <c>
-+<ccirc>
-+reorder-after <g>
-+<gcirc>
-+reorder-after <h>
-+<hcirc>
-+reorder-after <j>
-+<jcirc>
-+reorder-after <s>
-+<scirc>
-+reorder-after <u>
-+<ubreve>
-+
-+reorder-after <U0043>
-+<U0108> <ccirc>;<CIR>;<CAP>;IGNORE % Ĉ
-+reorder-after <U0063>
-+<U0109> <ccirc>;<CIR>;<MIN>;IGNORE % ĉ
-+reorder-after <U0047>
-+<U011C> <gcirc>;<CIR>;<CAP>;IGNORE % Ĝ
-+reorder-after <U0067>
-+<U011D> <gcirc>;<CIR>;<MIN>;IGNORE % Ä
-+reorder-after <U0048>
-+<U0124> <hcirc>;<CIR>;<CAP>;IGNORE % Ĥ
-+reorder-after <U0068>
-+<U0125> <hcirc>;<CIR>;<MIN>;IGNORE % ĥ
-+reorder-after <U004A>
-+<U0134> <jcirc>;<CIR>;<CAP>;IGNORE % Ä´
-+reorder-after <U006A>
-+<U0135> <jcirc>;<CIR>;<MIN>;IGNORE % ĵ
-+reorder-after <U0053>
-+<U015C> <scirc>;<CIR>;<CAP>;IGNORE % Ŝ
-+reorder-after <U0073>
-+<U015D> <scirc>;<CIR>;<MIN>;IGNORE % Å
-+reorder-after <U0055>
-+<U016C> <ubreve>;<BRE>;<CAP>;IGNORE % Ŭ
-+reorder-after <U0075>
-+<U016D> <ubreve>;<BRE>;<MIN>;IGNORE % Å­
-+
-+reorder-end
-+
-+END LC_COLLATE
-+
-+LC_MONETARY
-+int_curr_symbol "<U0045><U0055><U0052><U0020>" % "EUR"
-+currency_symbol "<U0045><U0055><U0052><U0020>" % "EUR"
-+% "<U20AC>" ne eblas en ISO-8859-3
-+mon_decimal_point "<U002C>"
-+mon_thousands_sep "<U0020>"
-+mon_grouping 3;3
-+positive_sign ""
-+negative_sign "<U002D>"
-+int_frac_digits 2
-+frac_digits 2
-+p_cs_precedes 1
-+p_sep_by_space 1
-+n_cs_precedes 1
-+n_sep_by_space 1
-+p_sign_posn 1
-+n_sign_posn 1
-+END LC_MONETARY
-+
-+LC_NUMERIC
-+decimal_point "<U002C>"
-+thousands_sep ""
-+grouping 0;0
-+END LC_NUMERIC
-+
-+LC_TIME
-+
-+% "dim";"lun";"mar";"mer";"ĵaŭ";"ven";"sab"
-+abday "<U0064><U0069><U006D>";"<U006C><U0075><U006E>";/
-+ "<U006D><U0061><U0072>";"<U006D><U0065><U0072>";/
-+ "<U0135><U0061><U016D>";"<U0076><U0065><U006E>";/
-+ "<U0073><U0061><U0062>"
-+
-+% "dimanĉo";"lundo";"mardo";"merkredo";"ĵaŭdo";"vendredo";"sabato"
-+day "<U0064><U0069><U006D><U0061><U006E><U0109><U006F>";/
-+ "<U006C><U0075><U006E><U0064><U006F>";/
-+ "<U006D><U0061><U0072><U0064><U006F>";/
-+ "<U006D><U0065><U0072><U006B><U0072><U0065><U0064><U006F>";/
-+ "<U0135><U0061><U016D><U0064><U006F>";/
-+ "<U0076><U0065><U006E><U0064><U0072><U0065><U0064><U006F>";/
-+ "<U0073><U0061><U0062><U0061><U0074><U006F>"
-+
-+% "Jan";"Feb";"Mar";"Apr";"Maj";"Jun";"Jul";"AÅ­g";"Sep";"Okt";"Nov";"Dec"
-+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
-+ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
-+ "<U004D><U0061><U006A>";"<U004A><U0075><U006E>";/
-+ "<U004A><U0075><U006C>";"<U0041><U016D><U0067>";/
-+ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
-+ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
-+
-+% "Januaro";"Februaro";"Marto";"Aprilo";"Majo";"Junio";
-+% "Julio";"AÅ­gusto";"Septembro";"Oktobro";"Novembro";"Decembro"
-+mon "<U004A><U0061><U006E><U0075><U0061><U0072><U006F>";/
-+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U006F>";/
-+ "<U004D><U0061><U0072><U0074><U006F>";/
-+ "<U0041><U0070><U0072><U0069><U006C><U006F>";/
-+ "<U004D><U0061><U006A><U006F>";/
-+ "<U004A><U0075><U006E><U0069><U006F>";/
-+ "<U004A><U0075><U006C><U0069><U006F>";/
-+ "<U0041><U016D><U0067><U0075><U0073><U0074><U006F>";/
-+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0072><U006F>";/
-+ "<U004F><U006B><U0074><U006F><U0062><U0072><U006F>";/
-+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0072><U006F>";/
-+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0072><U006F>"
-+
-+am_pm "";""
-+
-+% "%a %d %b %Y %T %z"
-+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U007A>"
-+
-+% "%Y-%m-%d"
-+d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
-+
-+% "%T"
-+t_fmt "<U0025><U0054>"
-+
-+t_fmt_ampm ""
-+
-+% date_fmt ?
-+
-+END LC_TIME
-+
-+LC_MESSAGES
-+% "^[JjYy].*"
-+yesexpr "<U005E><U005B><U004A><U006A><U0059><U0079><U005D><U002E><U002A>"
-+% "^[Nn].*"
-+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
-+END LC_MESSAGES
-+
-+LC_PAPER
-+height 297
-+width 210
-+END LC_PAPER
-+
-+LC_TELEPHONE
-+% "+%c %a %l"
-+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020>/
-+<U0025><U006C>"
-+% "00"
-+int_select "<U0030><U0030>"
-+END LC_TELEPHONE
-+
-+LC_MEASUREMENT
-+measurement 1
-+END LC_MEASUREMENT
-+
-+LC_NAME
-+% "%d%t%g%t%m%t%f"
-+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
-+<U0025><U006D><U0025><U0074><U0025><U0066>"
-+name_mr "<U0073><U002D><U0072><U006F>" % "s-ro"
-+name_mrs "<U0073><U002D><U0069><U006E><U006F>" % "s-ino"
-+name_ms "<U0073><U002D><U0069><U006E><U006F>" % "s-ino"
-+END LC_NAME
-+
-+LC_ADDRESS
-+% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N"
-+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
-+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
-+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
-+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
-+<U004E><U0025><U0063><U0025><U004E>"
-+% "Esperanto"
-+lang_name "<U0045><U0073><U0070><U0065><U0072><U0061><U006E><U0074><U006F>"
-+lang_ab "<U0065><U006F>" % "eo"
-+lang_lib "<U0065><U006F>" % "eo"
-+END LC_ADDRESS
diff --git a/packages/glibc/glibc-2.3.2/glibc22-locales.patch b/packages/glibc/glibc-2.3.2/glibc22-locales.patch
deleted file mode 100644
index 4144eefd43..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-locales.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- localedata/SUPPORTED~ 2001/02/14 01:37:11
-+++ localedata/SUPPORTED 2001/06/15 04:30:23
-@@ -32,15 +32,18 @@
- de_BE@euro/ISO-8859-15 \
- de_CH/ISO-8859-1 \
- de_DE/ISO-8859-1 \
-+de_DE.UTF-8/UTF-8 \
- de_DE@euro/ISO-8859-15 \
- de_LU/ISO-8859-1 \
- de_LU@euro/ISO-8859-15 \
- el_GR/ISO-8859-7 \
-+el_GR.UTF-8/UTF-8 \
- en_AU/ISO-8859-1 \
- en_BW/ISO-8859-1 \
- en_CA/ISO-8859-1 \
- en_DK/ISO-8859-1 \
- en_GB/ISO-8859-1 \
-+en_GB.UTF-8/UTF-8 \
- en_HK/ISO-8859-1 \
- en_IE/ISO-8859-1 \
- en_IE@euro/ISO-8859-15 \
-@@ -49,6 +52,7 @@
- en_PH/ISO-8859-1 \
- en_SG/ISO-8859-1 \
- en_US/ISO-8859-1 \
-+en_US.UTF-8/UTF-8 \
- en_ZA/ISO-8859-1 \
- en_ZW/ISO-8859-1 \
- es_AR/ISO-8859-1 \
-@@ -75,7 +79,7 @@
- et_EE/ISO-8859-1 \
- eu_ES/ISO-8859-1 \
- eu_ES@euro/ISO-8859-15 \
--fa_IR/UTF-8 \
-+fa_IR.UTF-8/UTF-8 \
- fi_FI/ISO-8859-1 \
- fi_FI@euro/ISO-8859-15 \
- fo_FO/ISO-8859-1 \
-@@ -84,6 +88,7 @@
- fr_CA/ISO-8859-1 \
- fr_CH/ISO-8859-1 \
- fr_FR/ISO-8859-1 \
-+fr_FR.UTF-8/UTF-8 \
- fr_FR@euro/ISO-8859-15 \
- fr_LU/ISO-8859-1 \
- fr_LU@euro/ISO-8859-15 \
-@@ -93,7 +98,7 @@
- gl_ES@euro/ISO-8859-15 \
- gv_GB/ISO-8859-1 \
- he_IL/ISO-8859-8 \
--hi_IN/UTF-8 \
-+hi_IN.UTF-8/UTF-8 \
- hr_HR/ISO-8859-2 \
- hu_HU/ISO-8859-2 \
- id_ID/ISO-8859-1 \
-@@ -103,6 +108,7 @@
- it_IT@euro/ISO-8859-15 \
- iw_IL/ISO-8859-8 \
- ja_JP.EUC-JP/EUC-JP \
-+ja_JP.UTF-8/UTF-8 \
- ka_GE/GEORGIAN-PS \
- kl_GL/ISO-8859-1 \
- ko_KR.EUC-KR/EUC-KR \
-@@ -110,7 +116,7 @@
- lt_LT/ISO-8859-13 \
- lv_LV/ISO-8859-13 \
- mk_MK/ISO-8859-5 \
--mr_IN/UTF-8 \
-+mr_IN.UTF-8/UTF-8 \
- ms_MY/ISO-8859-1 \
- mt_MT/ISO-8859-3 \
- nl_BE/ISO-8859-1 \
-@@ -125,6 +131,7 @@
- pt_PT@euro/ISO-8859-15 \
- ro_RO/ISO-8859-2 \
- ru_RU/ISO-8859-5 \
-+ru_RU.UTF-8/UTF-8 \
- ru_RU.KOI8-R/KOI8-R \
- ru_UA/KOI8-U \
- sk_SK/ISO-8859-2 \
-@@ -140,14 +147,17 @@
- uk_UA/KOI8-U \
- ur_PK/UTF-8 \
- uz_UZ/ISO-8859-1 \
--vi_VN/UTF-8 \
-+vi_VN.UTF-8/UTF-8 \
- vi_VN.TCVN/TCVN5712-1 \
- wa_BE/ISO-8859-1 \
- wa_BE@euro/ISO-8859-15 \
- yi_US/CP1255 \
- zh_CN/GB2312 \
- zh_CN.GB18030/GB18030 \
- zh_CN.GBK/GBK \
-+zh_CN.UTF-8/UTF-8 \
- zh_HK/BIG5-HKSCS \
-+zh_HK.UTF-8/UTF-8 \
- zh_TW/BIG5 \
- zh_TW.EUC-TW/EUC-TW \
-+zh_TW.UTF-8/UTF-8 \
diff --git a/packages/glibc/glibc-2.3.2/glibc22-m68k-compat.patch b/packages/glibc/glibc-2.3.2/glibc22-m68k-compat.patch
deleted file mode 100644
index 1e7aa2eae9..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-m68k-compat.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- glibc-2.2.5.orig/sysdeps/unix/sysv/linux/m68k/chown.c 2001-07-10 02:57:24.000000000 +0200
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/chown.c 2002-08-11 15:37:09.000000000 +0200
-@@ -72,3 +72,8 @@
- #endif
- }
- weak_alias (__chown, chown)
-+
-+#include <shlib-compat.h>
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)
-+compat_symbol (libc, __chown, chown, GLIBC_2_1);
-+#endif
---- glibc-2.2.5.orig/sysdeps/unix/sysv/linux/m68k/lchown.c 2000-01-17 06:20:35.000000000 +0100
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/lchown.c 2002-08-11 15:38:56.000000000 +0200
-@@ -1 +1,6 @@
- #include <sysdeps/unix/sysv/linux/i386/lchown.c>
-+
-+#include <shlib-compat.h>
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)
-+compat_symbol (libc, __lchown, lchown, GLIBC_2_1);
-+#endif
diff --git a/packages/glibc/glibc-2.3.2/glibc22-m68k-fpic.patch b/packages/glibc/glibc-2.3.2/glibc22-m68k-fpic.patch
deleted file mode 100644
index 8ff5ece2f7..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-m68k-fpic.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc-2.2.3.orig/sysdeps/m68k/Makefile Fri Sep 5 03:40:38 1997
-+++ glibc-2.2.3/sysdeps/m68k/Makefile Tue May 15 23:29:05 2001
-@@ -41,3 +41,7 @@
- # Avoid a bug in gcc
- CFLAGS-s_copysignl.c += -mnobitfield
- endif
-+
-+# Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid
-+# possible linkage problems.
-+CFLAGS-.oS += -fPIC
diff --git a/packages/glibc/glibc-2.3.2/glibc22-nss-upgrade.patch b/packages/glibc/glibc-2.3.2/glibc22-nss-upgrade.patch
deleted file mode 100644
index 569ab96461..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-nss-upgrade.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- glibc22/nss/nsswitch.c~ Fri Mar 31 15:38:32 2000
-+++ glibc22/nss/nsswitch.c Thu Nov 9 17:28:45 2000
-@@ -333,9 +333,20 @@
- ni->library->lib_handle = __libc_dlopen (shlib_name);
- if (ni->library->lib_handle == NULL)
- {
-- /* Failed to load the library. */
-- ni->library->lib_handle = (void *) -1l;
-- __set_errno (saved_errno);
-+ /* Failed to load the library. Try a fallback. */
-+ int n = __snprintf(shlib_name, shlen, "libnss_%s.so.%d.%d",
-+ ni->library->name, __GLIBC__, __GLIBC_MINOR__);
-+ if (n >= shlen)
-+ ni->library->lib_handle = NULL;
-+ else
-+ ni->library->lib_handle = __libc_dlopen (shlib_name);
-+
-+ if (ni->library->lib_handle == NULL)
-+ {
-+ /* Ok, really fail now. */
-+ ni->library->lib_handle = (void *) -1l;
-+ __set_errno (saved_errno);
-+ }
- }
- }
-
diff --git a/packages/glibc/glibc-2.3.2/glibc22-ttyname-devfs.patch b/packages/glibc/glibc-2.3.2/glibc22-ttyname-devfs.patch
deleted file mode 100644
index 902a1b7351..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc22-ttyname-devfs.patch
+++ /dev/null
@@ -1,225 +0,0 @@
---- sysdeps/unix/sysv/linux/ttyname_r.c~ 2001/07/06 04:56:13 1.14
-+++ sysdeps/unix/sysv/linux/ttyname_r.c 2002/01/06 02:27:48
-@@ -28,21 +28,24 @@
-
- #include <stdio-common/_itoa.h>
-
--static int getttyname_r (char *buf, size_t buflen,
-- dev_t mydev, ino64_t myino, int save,
-+static int getttyname_r (const char *prefix, char *buf, size_t buflen,
-+ struct stat64 *mystat, int save,
- int *dostat) internal_function;
-
- static int
- internal_function
--getttyname_r (char *buf, size_t buflen, dev_t mydev, ino64_t myino,
-+getttyname_r (const char *prefix, char *buf, size_t buflen, struct stat64 *mystat,
- int save, int *dostat)
- {
- struct stat64 st;
- DIR *dirstream;
- struct dirent64 *d;
-- size_t devlen = strlen (buf);
-+ size_t devlen = strlen (prefix);
-
-- dirstream = __opendir (buf);
-+ memcpy (buf, prefix, devlen);
-+ buflen -= devlen;
-+
-+ dirstream = __opendir (prefix);
- if (dirstream == NULL)
- {
- *dostat = -1;
-@@ -50,7 +53,7 @@
- }
-
- while ((d = __readdir64 (dirstream)) != NULL)
-- if ((d->d_fileno == myino || *dostat)
-+ if ((d->d_fileno == mystat->st_ino || *dostat)
- && strcmp (d->d_name, "stdin")
- && strcmp (d->d_name, "stdout")
- && strcmp (d->d_name, "stderr"))
-@@ -71,9 +74,9 @@
-
- if (__xstat64 (_STAT_VER, buf, &st) == 0
- #ifdef _STATBUF_ST_RDEV
-- && S_ISCHR (st.st_mode) && st.st_rdev == mydev
-+ && S_ISCHR (st.st_mode) && st.st_rdev == mystat->st_rdev
- #else
-- && d->d_fileno == myino && st.st_dev == mydev
-+ && d->d_fileno == mystat->st_ino && st.st_dev == mystat->st_dev
- #endif
- )
- {
-@@ -99,7 +102,8 @@
- struct stat64 st, st1;
- int dostat = 0;
- int save = errno;
-- int ret;
-+ int ret, i;
-+ const char *dirs[] = { "/dev/pts/", "/dev/vc/", "/dev/tts/", 0 };
-
- /* Test for the absolute minimal size. This makes life easier inside
- the loop. */
-@@ -139,50 +143,24 @@
- if (__fxstat64 (_STAT_VER, fd, &st) < 0)
- return errno;
-
-- /* Prepare the result buffer. */
-- memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
-- buflen -= sizeof ("/dev/pts/") - 1;
-+ ret = ENOTTY;
-
-- if (__xstat64 (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
-- {
--#ifdef _STATBUF_ST_RDEV
-- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save,
-- &dostat);
--#else
-- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save,
-- &dostat);
--#endif
-- }
-- else
-+ for (i = 0; ret && dirs[i]; i++)
- {
-- __set_errno (save);
-- ret = ENOENT;
-+ if (__xstat64 (_STAT_VER, dirs[i], &st1) == 0 && S_ISDIR (st1.st_mode))
-+ ret = getttyname_r (dirs[i], buf, buflen, &st, save, &dostat);
-+ else
-+ __set_errno (save);
- }
-
-+
- if (ret && dostat != -1)
-- {
-- buf[sizeof ("/dev/") - 1] = '\0';
-- buflen += sizeof ("pts/") - 1;
--#ifdef _STATBUF_ST_RDEV
-- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save,
-- &dostat);
--#else
-- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save,
-- &dostat);
--#endif
-- }
-+ ret = getttyname_r ("/dev/", buf, buflen, &st, save, &dostat);
-
- if (ret && dostat != -1)
- {
-- buf[sizeof ("/dev/") - 1] = '\0';
- dostat = 1;
--#ifdef _STATBUF_ST_RDEV
-- ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino,
-- save, &dostat);
--#else
-- ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino,
-- save, &dostat);
--#endif
-+ ret = getttyname_r ("/dev/", buf, buflen, &st, save, &dostat);
- }
-
- return ret;
---- sysdeps/unix/sysv/linux/ttyname.c~ 2001/07/06 04:56:13 1.16
-+++ sysdeps/unix/sysv/linux/ttyname.c 2002/01/06 02:27:48
-@@ -30,8 +30,8 @@
-
- char *__ttyname;
-
--static char *getttyname (const char *dev, dev_t mydev,
-- ino64_t myino, int save, int *dostat)
-+static char *getttyname (const char *dev, struct stat64 *mystat,
-+ int save, int *dostat)
- internal_function;
-
-
-@@ -39,7 +39,7 @@
-
- static char *
- internal_function
--getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat)
-+getttyname (const char *dev, struct stat64 *mystat, int save, int *dostat)
- {
- static size_t namelen;
- struct stat64 st;
-@@ -55,7 +55,7 @@
- }
-
- while ((d = __readdir64 (dirstream)) != NULL)
-- if ((d->d_fileno == myino || *dostat)
-+ if ((d->d_fileno == mystat->st_ino || *dostat)
- && strcmp (d->d_name, "stdin")
- && strcmp (d->d_name, "stdout")
- && strcmp (d->d_name, "stderr"))
-@@ -78,9 +78,9 @@
- memcpy (&getttyname_name[devlen], d->d_name, dlen);
- if (__xstat64 (_STAT_VER, getttyname_name, &st) == 0
- #ifdef _STATBUF_ST_RDEV
-- && S_ISCHR (st.st_mode) && st.st_rdev == mydev
-+ && S_ISCHR (st.st_mode) && st.st_rdev == mystat->st_rdev
- #else
-- && d->d_fileno == myino && st.st_dev == mydev
-+ && d->d_fileno == mystat->st_ino && st.st_dev == mystat->st_dev
- #endif
- )
- {
-@@ -110,9 +110,10 @@
- char procname[30];
- struct stat64 st, st1;
- int dostat = 0;
-- char *name;
-+ char *name = NULL;
- int save = errno;
-- int len;
-+ int len, i;
-+ const char *dirs[] = { "/dev/pts", "/dev/vc", "/dev/tts", 0 };
-
- if (!__isatty (fd))
- return NULL;
-@@ -146,37 +147,21 @@
- if (__fxstat64 (_STAT_VER, fd, &st) < 0)
- return NULL;
-
-- if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
-+ for (i = 0; !name && dirs[i]; i++)
- {
--#ifdef _STATBUF_ST_RDEV
-- name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat);
--#else
-- name = getttyname ("/dev/pts", st.st_dev, st.st_ino, save, &dostat);
--#endif
-+ if (__xstat64 (_STAT_VER, dirs[i], &st1) == 0 && S_ISDIR (st1.st_mode))
-+ name = getttyname (dirs[i], &st, save, &dostat);
-+ else
-+ __set_errno (save);
- }
-- else
-- {
-- __set_errno (save);
-- name = NULL;
-- }
--
-+
- if (!name && dostat != -1)
-- {
--#ifdef _STATBUF_ST_RDEV
-- name = getttyname ("/dev", st.st_rdev, st.st_ino, save, &dostat);
--#else
-- name = getttyname ("/dev", st.st_dev, st.st_ino, save, &dostat);
--#endif
-- }
-+ name = getttyname ("/dev", &st, save, &dostat);
-
- if (!name && dostat != -1)
- {
- dostat = 1;
--#ifdef _STATBUF_ST_RDEV
-- name = getttyname ("/dev", st.st_rdev, st.st_ino, save, &dostat);
--#else
-- name = getttyname ("/dev", st.st_dev, st.st_ino, save, &dostat);
--#endif
-+ name = getttyname ("/dev", &st, save, &dostat);
- }
-
- return name;
diff --git a/packages/glibc/glibc-2.3.2/glibc23-01-hppa-dl-machine.patch b/packages/glibc/glibc-2.3.2/glibc23-01-hppa-dl-machine.patch
deleted file mode 100644
index f5f02d1992..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-01-hppa-dl-machine.patch
+++ /dev/null
@@ -1,305 +0,0 @@
---- libc/sysdeps/hppa/dl-machine.h Wed Nov 14 09:47:09 2001
-+++ libc/sysdeps/hppa/dl-machine.h Wed Nov 14 09:46:02 2001
-@@ -28,8 +28,15 @@
- #include <link.h>
- #include <assert.h>
-
-+# define VALID_ELF_OSABI(osabi) ((osabi == ELFOSABI_SYSV) || (osabi == ELFOSABI_LINUX))
-+# define VALID_ELF_ABIVERSION(ver) (ver == 0)
-+# define VALID_ELF_HEADER(hdr,exp,size) \
-+ memcmp (hdr,exp,size-2) == 0 \
-+ && VALID_ELF_OSABI (hdr[EI_OSABI]) \
-+ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])
-+
- /* These must match the definition of the stub in bfd/elf32-hppa.c. */
--#define SIZEOF_PLT_STUB (4*4)
-+#define SIZEOF_PLT_STUB (7*4)
- #define GOT_FROM_PLT_STUB (4*4)
-
- /* A PLABEL is a function descriptor. Properly they consist of just
-@@ -66,45 +73,41 @@
- return ehdr->e_machine == EM_PARISC;
- }
-
--
- /* Return the link-time address of _DYNAMIC. */
- static inline Elf32_Addr
-+elf_machine_dynamic (void) __attribute__ ((const));
-+
-+static inline Elf32_Addr
- elf_machine_dynamic (void)
- {
- Elf32_Addr dynamic;
-
--#if 0
-- /* Use this method if GOT address not yet set up. */
-- asm (
--" b,l 1f,%0\n"
-+ asm ("b,l 1f,%0\n"
- " depi 0,31,2,%0\n"
- "1: addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 8),%0\n"
- " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
-- : "=r" (dynamic) : : "r1");
--#else
-- /* This works because we already have our GOT address available. */
-- dynamic = (Elf32_Addr) &_DYNAMIC;
--#endif
-+ : "=r" (dynamic) : : "r1");
-
- return dynamic;
- }
-
- /* Return the run-time load address of the shared object. */
- static inline Elf32_Addr
-+elf_machine_load_address (void) __attribute__ ((const));
-+
-+static inline Elf32_Addr
- elf_machine_load_address (void)
- {
-- Elf32_Addr dynamic, dynamic_linkaddress;
-+ Elf32_Addr dynamic;
-
- asm (
- " b,l 1f,%0\n"
- " depi 0,31,2,%0\n"
- "1: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%0\n"
--" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%1\n"
--" addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%0\n"
--" ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%%r1),%0\n"
-- : "=r" (dynamic_linkaddress), "=r" (dynamic) : : "r1");
-+" ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%%r1),%0\n"
-+ : "=r" (dynamic) : : "r1");
-
-- return dynamic - dynamic_linkaddress;
-+ return dynamic - elf_machine_dynamic ();
- }
-
- /* Fixup a PLT entry to bounce directly to the function at VALUE. */
-@@ -167,41 +170,39 @@
- fptr = (struct hppa_fptr *) (reloc->r_offset + l_addr);
- if (r_sym != 0)
- {
-- /* Relocate the pointer to the stub. */
-- fptr->func += l_addr;
-- /* Instead of the LTP value, we put the reloc offset
-- here. The trampoline code will load the proper
-- LTP and pass the reloc offset to the fixup
-- function. */
-- fptr->gp = iplt - jmprel;
- if (!got)
- {
- static union {
- unsigned char c[8];
- Elf32_Addr i[2];
- } sig = {{0x00,0xc0,0xff,0xee, 0xde,0xad,0xbe,0xef}};
-+ const Elf32_Rela *last_rel;
-+
-+ last_rel = (const Elf32_Rela *) end_jmprel - 1;
-+
-+ /* The stub is immediately after the last .plt
-+ entry. Rely on .plt relocs being ordered. */
-+ if (last_rel->r_offset == 0)
-+ return 0;
-
- /* Find our .got section. It's right after the
- stub. */
-- got = (Elf32_Addr *) (fptr->func + GOT_FROM_PLT_STUB);
-+ got = (Elf32_Addr *) (last_rel->r_offset + l_addr
-+ + 8 + SIZEOF_PLT_STUB);
-
-- /* Sanity check to see if the address we are
-- going to check below is within a reasonable
-- approximation of the bounds of the PLT (or,
-- at least, is at an address that won't fault
-- on read). Then check for the magic signature
-- above. */
-- if (fptr->func < (Elf32_Addr) fptr + sizeof(*fptr))
-- return 0;
-- if (fptr->func >
-- ((Elf32_Addr) fptr
-- + SIZEOF_PLT_STUB
-- + ((l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeof (Elf32_Rela))
-- * 8)))
-- return 0;
-+ /* Check the magic signature. */
- if (got[-2] != sig.i[0] || got[-1] != sig.i[1])
- return 0; /* No lazy linking for you! */
- }
-+
-+ /* Relocate the pointer to the stub. */
-+ fptr->func = (Elf32_Addr) got - GOT_FROM_PLT_STUB;
-+
-+ /* Instead of the LTP value, we put the reloc offset
-+ here. The trampoline code will load the proper
-+ LTP and pass the reloc offset to the fixup
-+ function. */
-+ fptr->gp = iplt - jmprel;
- }
- else
- {
-@@ -271,22 +272,24 @@
- " stw %r25,-40(%sp)\n" /* argc */ \
- " stw %r24,-44(%sp)\n" /* argv */ \
- \
-- /* We need the LTP, and we need it now. */ \
-- /* $PIC_pcrel$0 points 8 bytes past the current instruction, \
-- just like a branch reloc. This sequence gets us the runtime \
-- address of _DYNAMIC. */ \
-+ /* We need the LTP, and we need it now. \
-+ $PIC_pcrel$0 points 8 bytes past the current instruction, \
-+ just like a branch reloc. This sequence gets us the \
-+ runtime address of _DYNAMIC. */ \
- " bl 0f,%r19\n" \
- " depi 0,31,2,%r19\n" /* clear priviledge bits */ \
- "0: addil L'_DYNAMIC - ($PIC_pcrel$0 - 8),%r19\n" \
- " ldo R'_DYNAMIC - ($PIC_pcrel$0 - 12)(%r1),%r26\n" \
- \
-- /* Also get the link time address from the first entry of the GOT. */ \
-+ /* The link time address is stored in the first entry of the \
-+ GOT. */ \
- " addil L'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 16),%r19\n" \
- " ldw R'_GLOBAL_OFFSET_TABLE_ - ($PIC_pcrel$0 - 20)(%r1),%r20\n" \
- \
- " sub %r26,%r20,%r20\n" /* Calculate load offset */ \
- \
-- /* Rummage through the dynamic entries, looking for DT_PLTGOT. */ \
-+ /* Rummage through the dynamic entries, looking for \
-+ DT_PLTGOT. */ \
- " ldw,ma 8(%r26),%r19\n" \
- "1: cmpib,=,n 3,%r19,2f\n" /* tag == DT_PLTGOT? */ \
- " cmpib,<>,n 0,%r19,1b\n" \
-@@ -306,8 +309,8 @@
- | 32 bytes of magic | \
- |---------------------------------| \
- | 32 bytes argument/sp save area | \
-- |---------------------------------| ((current->mm->env_end) + 63 & ~63) \
-- | N bytes of slack | \
-+ |---------------------------------| ((current->mm->env_end) \
-+ | N bytes of slack | + 63 & ~63) \
- |---------------------------------| \
- | envvar and arg strings | \
- |---------------------------------| \
-@@ -375,7 +378,7 @@
- " bl _dl_init,%r2\n" \
- " ldo 4(%r23),%r23\n" /* delay slot */ \
- \
-- /* Reload argc, argv to the registers start.S expects them in (feh) */ \
-+ /* Reload argc, argv to the registers start.S expects. */ \
- " ldw -40(%sp),%r25\n" \
- " ldw -44(%sp),%r24\n" \
- \
-@@ -387,8 +390,8 @@
- " .word 0xdeadbeef\n" \
- " .previous\n" \
- \
-- /* %r3 contains a function pointer, we need to mask out the lower \
-- * bits and load the gp and jump address. */ \
-+ /* %r3 contains a function pointer, we need to mask out the \
-+ lower bits and load the gp and jump address. */ \
- " depi 0,31,2,%r3\n" \
- " ldw 0(%r3),%r2\n" \
- " addil LT'__dl_fini_plabel,%r19\n" \
-@@ -409,43 +412,41 @@
- Enter with r19 = reloc offset, r20 = got-8, r21 = fixup ltp. */
- #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
- extern void tramp_name (void); \
-- asm ( "\
-- /* Trampoline for " #tramp_name " */ \n\
-- .globl " #tramp_name " \n\
-- .type " #tramp_name ",@function \n\
--" #tramp_name ": \n\
-- /* Save return pointer */ \n\
-- stw %r2,-20(%sp) \n\
-- /* Save argument registers in the call stack frame. */ \n\
-- stw %r26,-36(%sp) \n\
-- stw %r25,-40(%sp) \n\
-- stw %r24,-44(%sp) \n\
-- stw %r23,-48(%sp) \n\
-- /* Build a call frame. */ \n\
-- stwm %sp,64(%sp) \n\
-- \n\
-- /* Set up args to fixup func. */ \n\
-- ldw 8+4(%r20),%r26 /* got[1] == struct link_map * */ \n\
-- copy %r19,%r25 /* reloc offset */ \n\
-- \n\
-- /* Call the real address resolver. */ \n\
-- bl " #fixup_name ",%r2 \n\
-- copy %r21,%r19 /* delay slot, set fixup func ltp */ \n\
-- \n\
-- ldwm -64(%sp),%sp \n\
-- /* Arguments. */ \n\
-- ldw -36(%sp),%r26 \n\
-- ldw -40(%sp),%r25 \n\
-- ldw -44(%sp),%r24 \n\
-- ldw -48(%sp),%r23 \n\
-- /* Return pointer. */ \n\
-- ldw -20(%sp),%r2 \n\
-- /* Call the real function. */ \n\
-- ldw 0(%r28),%r22 \n\
-- bv %r0(%r22) \n\
-- ldw 4(%r28),%r19 \n\
--");
--
-+ asm (".globl " #tramp_name "\n" \
-+ " .type " #tramp_name ",@function\n" \
-+ #tramp_name ":\n" \
-+ /* Save return pointer */ \
-+ " stw %r2,-20(%sp)\n" \
-+ /* Save argument registers in the call stack frame. */ \
-+ " stw %r26,-36(%sp)\n" \
-+ " stw %r25,-40(%sp)\n" \
-+ " stw %r24,-44(%sp)\n" \
-+ " stw %r23,-48(%sp)\n" \
-+ /* Build a call frame, and save structure pointer. */ \
-+ " stwm %r28,64(%sp)\n" \
-+ \
-+ /* Set up args to fixup func. */ \
-+ " ldw 8+4(%r20),%r26\n" /* got[1] == struct link_map * */ \
-+ " copy %r19,%r25\n" /* reloc offset */ \
-+ \
-+ /* Call the real address resolver. */ \
-+ " bl " #fixup_name ",%r2\n" \
-+ " copy %r21,%r19\n" /* delay slot, set fixup func ltp */ \
-+ \
-+ " ldw 0(%r28),%r22\n" /* load up the returned func ptr */ \
-+ " ldw 4(%r28),%r19\n" \
-+ " ldwm -64(%sp),%r28\n" \
-+ /* Arguments. */ \
-+ " ldw -36(%sp),%r26\n" \
-+ " ldw -40(%sp),%r25\n" \
-+ " ldw -44(%sp),%r24\n" \
-+ " ldw -48(%sp),%r23\n" \
-+ /* Call the real function. */ \
-+ " bv %r0(%r22)\n" \
-+ /* Return pointer. */ \
-+ " ldw -20(%sp),%r2\n" \
-+ );
-+
- #ifndef PROF
- #define ELF_MACHINE_RUNTIME_TRAMPOLINE \
- TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \
-@@ -570,15 +571,15 @@
- probably haven't relocated the necessary values by this
- point so we have to find them ourselves. */
-
-- asm ("bl 0f,%0 \n\
-- depi 0,31,2,%0 \n\
--0: addil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0 \n\
-- ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1 \n\
-- addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0 \n\
-- ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2 \n\
-- addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0 \n\
-- ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3"
-- :
-+ asm ("bl 0f,%0\n\t"
-+ "depi 0,31,2,%0\n\t"
-+ "0:\taddil L'__boot_ldso_fptr - ($PIC_pcrel$0 - 8),%0\n\t"
-+ "ldo R'__boot_ldso_fptr - ($PIC_pcrel$0 - 12)(%%r1),%1\n\t"
-+ "addil L'__fptr_root - ($PIC_pcrel$0 - 16),%0\n\t"
-+ "ldo R'__fptr_root - ($PIC_pcrel$0 - 20)(%%r1),%2\n\t"
-+ "addil L'__fptr_count - ($PIC_pcrel$0 - 24),%0\n\t"
-+ "ldo R'__fptr_count - ($PIC_pcrel$0 - 28)(%%r1),%3"
-+ :
- "=r" (dot),
- "=r" (p_boot_ldso_fptr),
- "=r" (p_fptr_root),
diff --git a/packages/glibc/glibc-2.3.2/glibc23-07-hppa-atomicity.patch b/packages/glibc/glibc-2.3.2/glibc23-07-hppa-atomicity.patch
deleted file mode 100644
index 6508396423..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-07-hppa-atomicity.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- glibc-2.3.1.orig/sysdeps/hppa/atomicity.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.3.1/sysdeps/hppa/atomicity.h 2002-11-07 08:35:55.000000000 -0500
-@@ -0,0 +1,55 @@
-+/* Low-level functions for atomic operations. HP-PARISC version.
-+ Copyright (C) 1997,2001 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 _ATOMICITY_H
-+#define _ATOMICITY_H 1
-+
-+#include <inttypes.h>
-+
-+#warning stub atomicity functions are not atomic
-+#warning CAO This will get implemented soon
-+
-+static inline int
-+__attribute__ ((unused))
-+exchange_and_add (volatile uint32_t *mem, int val)
-+{
-+ int result = *mem;
-+ *mem += val;
-+ return result;
-+}
-+
-+static inline void
-+__attribute__ ((unused))
-+atomic_add (volatile uint32_t *mem, int val)
-+{
-+ *mem += val;
-+}
-+
-+static inline int
-+__attribute__ ((unused))
-+compare_and_swap (volatile long int *p, long int oldval, long int newval)
-+{
-+ if (*p != oldval)
-+ return 0;
-+
-+ *p = newval;
-+ return 1;
-+}
-+
-+#endif /* atomicity.h */
diff --git a/packages/glibc/glibc-2.3.2/glibc23-asserth-decls.patch b/packages/glibc/glibc-2.3.2/glibc23-asserth-decls.patch
deleted file mode 100644
index f5791608fd..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-asserth-decls.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- assert/assert.h 2002-10-13 15:24:18.000000000 +0200
-+++ assert/assert.h 2002-10-13 15:23:57.000000000 +0200
-@@ -62,6 +62,8 @@
-
- #else /* Not NDEBUG. */
-
-+#ifndef _ASSERT_H_DECLS
-+#define _ASSERT_H_DECLS
- __BEGIN_DECLS
-
- /* This prints an "Assertion failed" message and aborts. */
-@@ -83,6 +85,7 @@
-
-
- __END_DECLS
-+#endif /* Not _ASSERT_H_DECLS */
-
- # define assert(expr) \
- (__ASSERT_VOID_CAST ((expr) ? 0 : \
diff --git a/packages/glibc/glibc-2.3.2/glibc23-cmov.patch b/packages/glibc/glibc-2.3.2/glibc23-cmov.patch
deleted file mode 100644
index 73b20dd225..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-cmov.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- libc/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2002-09-22 06:14:11.000000000 +0900
-+++ libc/sysdeps/unix/sysv/linux/i386/dl-procinfo.h.new 2003-01-19 01:18:55.000000000 +0900
-@@ -92,7 +92,7 @@
- HWCAP_I386_AMD3D = 1 << 31,
-
- /* XXX Which others to add here? */
-- HWCAP_IMPORTANT = (HWCAP_I386_MMX)
-+ HWCAP_IMPORTANT = (HWCAP_I386_MMX | HWCAP_I386_CMOV)
-
- };
-
---- libc/sysdeps/generic/dl-cache.c 2003-02-02 05:33:47.000000000 +0900
-+++ libc/sysdeps/generic/dl-cache.c.new1 2003-02-21 09:18:19.000000000 +0900
-@@ -260,6 +260,12 @@
- if (platform != (uint64_t) -1)
- platform = 1ULL << platform;
-
-+#ifdef USE_TLS
-+# define TLS_BIT (1ULL << 63)
-+#else
-+# define TLS_BIT 0
-+#endif
-+
- /* Only accept hwcap if it's for the right platform. */
- #define HWCAP_CHECK \
- if (GL(dl_osversion) \
-@@ -271,7 +277,8 @@
- && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \
- continue; \
- if (hwcap \
-- && ((lib->hwcap & *hwcap & ~_DL_HWCAP_PLATFORM) > *hwcap)) \
-+ && ((lib->hwcap & ~_DL_HWCAP_PLATFORM & (*hwcap | TLS_BIT)) < \
-+ (lib->hwcap & ~_DL_HWCAP_PLATFORM))) \
- continue
- SEARCH_CACHE (cache_new);
- }
diff --git a/packages/glibc/glibc-2.3.2/glibc23-ctype-compat.patch b/packages/glibc/glibc-2.3.2/glibc23-ctype-compat.patch
deleted file mode 100644
index 7c80329ee8..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-ctype-compat.patch
+++ /dev/null
@@ -1,86 +0,0 @@
---- glibc-2.3.1-cygnus/ctype/ctype-info.c 28 Sep 2002 20:36:35 -0000 1.1.1.9
-+++ glibc-2.3.1-redhat/ctype/ctype-info.c 29 Sep 2002 11:38:50 -0000 1.4
-@@ -48,18 +48,32 @@ extern const char _nl_C_LC_CTYPE_class_a
-
- #define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o)
-
-+// const unsigned short int *__ctype_b = b (unsigned short int, class, 128);
-+// const __uint32_t *__ctype32_b = b (__uint32_t, class32, 0);
-+// const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128);
-+// const __int32_t *__ctype_toupper = b (__int32_t, toupper, 128);
-+// const __uint32_t *__ctype32_tolower = b (__uint32_t, tolower, 128);
-+// const __uint32_t *__ctype32_toupper = b (__uint32_t, toupper, 128);
-+
-+// compat_symbol (libc, __ctype_b, __ctype_b, GLIBC_2_0);
-+// compat_symbol (libc, __ctype_tolower, __ctype_tolower, GLIBC_2_0);
-+// compat_symbol (libc, __ctype_toupper, __ctype_toupper, GLIBC_2_0);
-+// compat_symbol (libc, __ctype32_b, __ctype32_b, GLIBC_2_0);
-+// compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2);
-+// compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2);
-+
-+#endif
-+
-+/* Temporarily exported until all .a libraries are recompiled. */
-+#undef b
-+#define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o)
-+extern const char _nl_C_LC_CTYPE_class[] attribute_hidden;
-+extern const char _nl_C_LC_CTYPE_class32[] attribute_hidden;
-+extern const char _nl_C_LC_CTYPE_toupper[] attribute_hidden;
-+extern const char _nl_C_LC_CTYPE_tolower[] attribute_hidden;
- const unsigned short int *__ctype_b = b (unsigned short int, class, 128);
- const __uint32_t *__ctype32_b = b (__uint32_t, class32, 0);
- const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128);
- const __int32_t *__ctype_toupper = b (__int32_t, toupper, 128);
- const __uint32_t *__ctype32_tolower = b (__uint32_t, tolower, 128);
- const __uint32_t *__ctype32_toupper = b (__uint32_t, toupper, 128);
--
--compat_symbol (libc, __ctype_b, __ctype_b, GLIBC_2_0);
--compat_symbol (libc, __ctype_tolower, __ctype_tolower, GLIBC_2_0);
--compat_symbol (libc, __ctype_toupper, __ctype_toupper, GLIBC_2_0);
--compat_symbol (libc, __ctype32_b, __ctype32_b, GLIBC_2_0);
--compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2);
--compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2);
--
--#endif
---- glibc-2.3.1-cygnus/locale/lc-ctype.c 28 Sep 2002 20:37:14 -0000 1.1.1.8
-+++ glibc-2.3.1-redhat/locale/lc-ctype.c 29 Sep 2002 11:38:51 -0000 1.5
-@@ -75,18 +75,32 @@ _nl_postload_ctype (void)
- We need those relocations so that a versioned definition with a COPY
- reloc in an executable will override the libc.so definition. */
-
--compat_symbol (libc, __ctype_b, __ctype_b, GLIBC_2_0);
--compat_symbol (libc, __ctype_tolower, __ctype_tolower, GLIBC_2_0);
--compat_symbol (libc, __ctype_toupper, __ctype_toupper, GLIBC_2_0);
--compat_symbol (libc, __ctype32_b, __ctype32_b, GLIBC_2_0);
--compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2);
--compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2);
-+// compat_symbol (libc, __ctype_b, __ctype_b, GLIBC_2_0);
-+// compat_symbol (libc, __ctype_tolower, __ctype_tolower, GLIBC_2_0);
-+// compat_symbol (libc, __ctype_toupper, __ctype_toupper, GLIBC_2_0);
-+// compat_symbol (libc, __ctype32_b, __ctype32_b, GLIBC_2_0);
-+// compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2);
-+// compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2);
-
-+// __ctype_b = current (uint16_t, CLASS, 128);
-+// __ctype_toupper = current (uint32_t, TOUPPER, 128);
-+// __ctype_tolower = current (uint32_t, TOLOWER, 128);
-+// __ctype32_b = current (uint32_t, CLASS32, 0);
-+// __ctype32_toupper = current (uint32_t, TOUPPER32, 0);
-+// __ctype32_tolower = current (uint32_t, TOLOWER32, 0);
-+#endif
-+
-+ /* Temporary. */
-+ extern __const unsigned short int *__ctype_b; /* Characteristics. */
-+ extern __const __int32_t *__ctype_tolower; /* Case conversions. */
-+ extern __const __int32_t *__ctype_toupper; /* Case conversions. */
-+ extern const uint32_t *__ctype32_b;
-+ extern const uint32_t *__ctype32_toupper;
-+ extern const uint32_t *__ctype32_tolower;
- __ctype_b = current (uint16_t, CLASS, 128);
- __ctype_toupper = current (uint32_t, TOUPPER, 128);
- __ctype_tolower = current (uint32_t, TOLOWER, 128);
- __ctype32_b = current (uint32_t, CLASS32, 0);
- __ctype32_toupper = current (uint32_t, TOUPPER32, 0);
- __ctype32_tolower = current (uint32_t, TOLOWER32, 0);
--#endif
- }
diff --git a/packages/glibc/glibc-2.3.2/glibc23-errno-hack.patch b/packages/glibc/glibc-2.3.2/glibc23-errno-hack.patch
deleted file mode 100644
index d3dffef9e2..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-errno-hack.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- glibc-2.3.2/elf/rtld.c.orig 2003-11-02 16:12:36.000000000 -0500
-+++ glibc-2.3.2/elf/rtld.c 2003-11-02 16:24:43.000000000 -0500
-@@ -966,6 +966,55 @@ of this helper program; chances are you
- GL(dl_rtld_map).l_prev = GL(dl_loaded);
- ++GL(dl_nloaded);
-
-+#if defined(__linux__) && defined(__i386__)
-+ /* Debian note: this code imported from Red Hat. */
-+ /* Force non-TLS libraries for glibc 2.0 binaries
-+ or if a buggy binary references non-TLS errno or h_errno. */
-+ if (__builtin_expect (GL(dl_loaded)->l_info[DT_NUM
-+ + DT_THISPROCNUM
-+ + DT_VERSIONTAGIDX (DT_VERNEED)]
-+ == NULL, 0)
-+ && GL(dl_loaded)->l_info[DT_DEBUG])
-+ GL(dl_osversion) = 0x20401;
-+ else if ((__builtin_expect (mode, normal) != normal
-+ || GL(dl_loaded)->l_info [ADDRIDX (DT_GNU_LIBLIST)] == NULL)
-+ /* Only binaries have DT_DEBUG dynamic tags... */
-+ && GL(dl_loaded)->l_info[DT_DEBUG])
-+ {
-+ /* Workaround for buggy binaries. This doesn't handle buggy
-+ libraries. */
-+ bool buggy = false;
-+ const ElfW(Sym) *symtab = (const void *) D_PTR (GL(dl_loaded), l_info[DT_SYMTAB]);
-+ const char *strtab = (const void *) D_PTR (GL(dl_loaded), l_info[DT_STRTAB]);
-+ Elf_Symndx symidx;
-+ for (symidx = GL(dl_loaded)->l_buckets[0x6c994f % GL(dl_loaded)->l_nbuckets];
-+ !buggy && symidx != STN_UNDEF;
-+ symidx = GL(dl_loaded)->l_chain[symidx])
-+ {
-+ if (__builtin_expect (strcmp (strtab + symtab[symidx].st_name,
-+ "errno") == 0, 0)
-+ && ELFW(ST_TYPE) (symtab[symidx].st_info) != STT_TLS)
-+ buggy = true;
-+ }
-+ for (symidx = GL(dl_loaded)->l_buckets[0xe5c992f % GL(dl_loaded)->l_nbuckets];
-+ !buggy && symidx != STN_UNDEF;
-+ symidx = GL(dl_loaded)->l_chain[symidx])
-+ {
-+ if (__builtin_expect (strcmp (strtab + symtab[symidx].st_name,
-+ "h_errno") == 0, 0)
-+ && ELFW(ST_TYPE) (symtab[symidx].st_info) != STT_TLS)
-+ buggy = true;
-+ }
-+ if (__builtin_expect (buggy, false))
-+ {
-+ if (GL(dl_osversion) > 0x20401)
-+ GL(dl_osversion) = 0x20401;
-+ _dl_error_printf ("ld.so: Incorrectly built binary which accesses errno or h_errno directly.\n"
-+ "ld.so: See /usr/share/doc/libc6/FAQ.gz.\n");
-+ }
-+ }
-+#endif
-+
- /* Set up the program header information for the dynamic linker
- itself. It is needed in the dl_iterate_phdr() callbacks. */
- ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map).l_map_start;
diff --git a/packages/glibc/glibc-2.3.2/glibc23-errno.patch b/packages/glibc/glibc-2.3.2/glibc23-errno.patch
deleted file mode 100644
index 616560f39a..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-errno.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- glibc-2.3.1.bak/inet/herrno.c 2003-01-02 10:54:16.000000000 -0500
-+++ glibc-2.3.1/inet/herrno.c 2003-01-02 10:55:25.000000000 -0500
-@@ -38,8 +38,8 @@
- visible at link time. Programs must use the accessor functions. */
- # if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
- # include <shlib-compat.h>
--compat_symbol (libc, h_errno, h_errno, GLIBC_2_0);
--compat_symbol (libc, _h_errno, _h_errno, GLIBC_2_0);
-+// compat_symbol (libc, h_errno, h_errno, GLIBC_2_0);
-+// compat_symbol (libc, _h_errno, _h_errno, GLIBC_2_0);
- # endif
- #endif
-
---- glibc-2.3.1.bak/resolv/res_libc.c 2003-01-02 10:54:16.000000000 -0500
-+++ glibc-2.3.1/resolv/res_libc.c 2003-01-02 10:54:45.000000000 -0500
-@@ -87,7 +87,7 @@
- visible at link time. Programs must use the accessor functions. */
- #if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
- # include <shlib-compat.h>
--compat_symbol (libc, _res, _res, GLIBC_2_0);
-+// compat_symbol (libc, _res, _res, GLIBC_2_0);
- #endif
-
- #include <shlib-compat.h>
---- glibc-2.3.1.bak/sysdeps/generic/errno.c 2003-01-02 10:54:16.000000000 -0500
-+++ glibc-2.3.1/sysdeps/generic/errno.c 2003-01-02 10:55:16.000000000 -0500
-@@ -36,7 +36,7 @@
- visible at link time. Programs must use the accessor functions. */
- # if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
- # include <shlib-compat.h>
--compat_symbol (libc, errno, errno, GLIBC_2_0);
--compat_symbol (libc, _errno, _errno, GLIBC_2_0);
-+// compat_symbol (libc, errno, errno, GLIBC_2_0);
-+// compat_symbol (libc, _errno, _errno, GLIBC_2_0);
- # endif
- #endif
diff --git a/packages/glibc/glibc-2.3.2/glibc23-function-compat.patch b/packages/glibc/glibc-2.3.2/glibc23-function-compat.patch
deleted file mode 100644
index cce1748dc0..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-function-compat.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- glibc-2.3.1-cygnus/posix/Versions 2002-12-19 00:13:27.000000000 +0900
-+++ glibc-2.3.1-redhat/posix/Versions 2002-12-19 00:14:34.000000000 +0900
-@@ -3,6 +3,9 @@
- # functions with special/multiple interfaces
- __bsd_getpgrp; __setpgid; __getpgid;
-
-+ # This will be GLIBC_PRIVATE, just give Sun JDK some time to catch up
-+ __libc_wait; __libc_waitpid;
-+
- # functions with required interface outside normal name space
- _exit;
-
-@@ -83,6 +86,9 @@
- GLIBC_2.1.2 {
- # functions used in other libraries
- __vfork;
-+
-+ # This will be GLIBC_PRIVATE, just give wine some time to catch up
-+ __libc_fork;
- }
- GLIBC_2.2 {
- # p*
-@@ -121,7 +127,8 @@
- GLIBC_PRIVATE {
- # functions which have an additional interface since they are
- # are cancelable.
-- __libc_wait; __libc_waitpid; __libc_pause; __libc_nanosleep; __libc_fork;
-+ # __libc_wait; __libc_waitpid;
-+ __libc_pause; __libc_nanosleep; # __libc_fork;
- __libc_pread; __libc_pread64; __libc_pwrite; __libc_pwrite64;
- __waitid; __pselect;
- }
diff --git a/packages/glibc/glibc-2.3.2/glibc23-hppa-Rminkernel.patch b/packages/glibc/glibc-2.3.2/glibc23-hppa-Rminkernel.patch
deleted file mode 100644
index 61dda4e69a..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-hppa-Rminkernel.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- sysdeps/unix/sysv/linux/configure.in 2003-03-23 16:18:07.000000000 +0900
-+++ sysdeps/unix/sysv/linux/configure.in.new 2003-03-23 16:19:08.000000000 +0900
-@@ -65,7 +65,7 @@
- ;;
- hppa*)
- libc_cv_gcc_unwind_find_fde=yes
-- arch_minimum_kernel=2.4.19
-+ arch_minimum_kernel=2.4.17
- ;;
- m68k*)
- arch_minimum_kernel=2.0.10
---- sysdeps/unix/sysv/linux/configure 2003-03-23 16:15:05.000000000 +0900
-+++ sysdeps/unix/sysv/linux/configure.new 2003-03-23 16:21:47.000000000 +0900
-@@ -106,7 +106,7 @@
- ;;
- hppa*)
- libc_cv_gcc_unwind_find_fde=yes
-- arch_minimum_kernel=2.4.19
-+ arch_minimum_kernel=2.4.17
- ;;
- m68k*)
- arch_minimum_kernel=2.0.10
diff --git a/packages/glibc/glibc-2.3.2/glibc23-hppa-compat.patch b/packages/glibc/glibc-2.3.2/glibc23-hppa-compat.patch
deleted file mode 100644
index 2a9a04547d..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-hppa-compat.patch
+++ /dev/null
@@ -1,80 +0,0 @@
---- glibc-2.3.1/sysdeps/hppa/Makefile.orig 2003-02-25 22:21:14.000000000 -0800
-+++ glibc-2.3.1/sysdeps/hppa/Makefile 2003-02-25 22:22:01.000000000 -0800
-@@ -31,3 +31,14 @@
- dl-routines += dl-symaddr dl-fptr
- rtld-routines += dl-symaddr dl-fptr
- endif
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+ifeq (yes,$(have-protected))
-+CPPFLAGS-libgcc-compat.c = -DHAVE_DOT_HIDDEN
-+endif
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- glibc/sysdeps/hppa/libgcc-compat.c 2003-02-25 22:19:14.000000000 -0800
-+++ glibc/sysdeps/hppa/libgcc-compat.c 2003-02-25 22:19:14.000000000 -0800
-@@ -0,0 +1,43 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Randolph Chung
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+symbol_version (__clz_tab_internal, __clz_tab, GLIBC_2.2);
-+
-+typedef unsigned int UQItype __attribute__ ((mode (QI)));
-+
-+const UQItype __clz_tab_internal[] =
-+{
-+ 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-+ 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-+ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+ 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-+};
-+
-+#endif
---- glibc-2.3.1/sysdeps/hppa/Dist.orig 2003-02-26 09:02:52.000000000 -0800
-+++ glibc-2.3.1/sysdeps/hppa/Dist 2003-02-26 09:04:03.000000000 -0800
-@@ -1,2 +1,3 @@
-+libgcc-compat.c
- dl-symaddr.c
- dl-fptr.c
---- glibc-2.3.1/sysdeps/hppa/Versions.orig 2002-02-01 13:16:41.000000000 -0800
-+++ glibc-2.3.1/sysdeps/hppa/Versions 2003-02-27 13:23:03.000000000 -0800
-@@ -5,3 +5,8 @@
- _dl_function_address;
- }
- }
-+libc {
-+ GLIBC_2.2 {
-+ __clz_tab;
-+ }
-+}
diff --git a/packages/glibc/glibc-2.3.2/glibc23-hppa-malloc8.patch b/packages/glibc/glibc-2.3.2/glibc23-hppa-malloc8.patch
deleted file mode 100644
index 5ea8fbbc8c..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-hppa-malloc8.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- glibc-2.3.1/sysdeps/hppa/Makefile 2003-01-20 23:47:12.000000000 -0500
-+++ glibc-2.3.1/sysdeps/hppa/Makefile 2003-01-20 23:47:19.000000000 -0500
-@@ -22,10 +22,6 @@
- # CFLAGS-.os += -ffunction-sections
- LDFLAGS-c_pic.os += -Wl,--unique=.text*
-
--ifeq ($(subdir),malloc)
--CFLAGS-malloc.c += -DMALLOC_ALIGNMENT=16
--endif
--
- ifeq ($(subdir),elf)
- CFLAGS-rtld.c += -mdisable-fpregs
- dl-routines += dl-symaddr dl-fptr
diff --git a/packages/glibc/glibc-2.3.2/glibc23-libio-compat.patch b/packages/glibc/glibc-2.3.2/glibc23-libio-compat.patch
deleted file mode 100644
index f34a202dc3..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-libio-compat.patch
+++ /dev/null
@@ -1,144 +0,0 @@
---- glibc-2.3.2/libio/libioP.h.orig 2003-10-27 15:48:39.000000000 -0500
-+++ glibc-2.3.2/libio/libioP.h 2003-10-27 16:04:03.000000000 -0500
-@@ -348,6 +348,17 @@ struct _IO_FILE_plus
- const struct _IO_jump_t *vtable;
- };
-
-+#ifdef _IO_USE_OLD_IO_FILE
-+/* This structure is used by the compatibility code as if it were an
-+ _IO_FILE_plus, but has enough space to initialize the _mode argument
-+ of an _IO_FILE_complete. */
-+struct _IO_FILE_complete_plus
-+{
-+ struct _IO_FILE_complete file;
-+ const struct _IO_jump_t *vtable;
-+};
-+#endif
-+
- /* Special file type for fopencookie function. */
- struct _IO_cookie_file
- {
---- glibc-2.3.2/libio/oldiofdopen.c.orig 2003-10-27 15:57:58.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofdopen.c 2003-10-27 16:11:28.000000000 -0500
-@@ -48,7 +48,7 @@ _IO_old_fdopen (fd, mode)
- int posix_mode = 0;
- struct locked_FILE
- {
-- struct _IO_FILE_plus fp;
-+ struct _IO_FILE_complete_plus fp;
- #ifdef _IO_MTSAFE_IO
- _IO_lock_t lock;
- #endif
-@@ -89,7 +89,7 @@ _IO_old_fdopen (fd, mode)
- Open a Stream on a File Descriptor says:
-
- Although not explicitly required by POSIX.1, a good
-- implementation of append ("a") mode would cause the
-+ implementation of append ("a") model would cause the
- O_APPEND flag to be set.
-
- (Historical implementations [such as Solaris2] do a one-time
-@@ -112,24 +112,24 @@ _IO_old_fdopen (fd, mode)
- if (new_f == NULL)
- return NULL;
- #ifdef _IO_MTSAFE_IO
-- new_f->fp.file._lock = &new_f->lock;
-+ new_f->fp.file._file._lock = &new_f->lock;
- #endif
-- _IO_old_init (&new_f->fp.file, 0);
-- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
-- _IO_old_file_init (&new_f->fp);
-+ _IO_old_init (&new_f->fp.file._file, 0);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp) = &_IO_old_file_jumps;
-+ _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
- #endif
-- if (_IO_old_file_attach (&new_f->fp.file, fd) == NULL)
-+ if (_IO_old_file_attach (&new_f->fp.file._file, fd) == NULL)
- {
-- INTUSE(_IO_un_link) (&new_f->fp);
-+ INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fp);
- free (new_f);
- return NULL;
- }
-- new_f->fp.file._flags &= ~_IO_DELETE_DONT_CLOSE;
-+ new_f->fp.file._file._flags &= ~_IO_DELETE_DONT_CLOSE;
-
-- new_f->fp.file._IO_file_flags =
-- _IO_mask_flags (&new_f->fp.file, read_write,
-+ new_f->fp.file._file._IO_file_flags =
-+ _IO_mask_flags (&new_f->fp.file._file, read_write,
- _IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING);
-
- return (_IO_FILE *) &new_f->fp;
---- glibc-2.3.2/libio/oldiofopen.c.orig 2003-10-27 15:57:55.000000000 -0500
-+++ glibc-2.3.2/libio/oldiofopen.c 2003-10-27 16:11:26.000000000 -0500
-@@ -42,7 +42,7 @@ _IO_old_fopen (filename, mode)
- {
- struct locked_FILE
- {
-- struct _IO_FILE_plus fp;
-+ struct _IO_FILE_complete_plus fp;
- #ifdef _IO_MTSAFE_IO
- _IO_lock_t lock;
- #endif
-@@ -51,17 +51,17 @@ _IO_old_fopen (filename, mode)
- if (new_f == NULL)
- return NULL;
- #ifdef _IO_MTSAFE_IO
-- new_f->fp.file._lock = &new_f->lock;
-+ new_f->fp.file._file._lock = &new_f->lock;
- #endif
-- _IO_old_init (&new_f->fp.file, 0);
-- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
-- _IO_old_file_init (&new_f->fp);
-+ _IO_old_init (&new_f->fp.file._file, 0);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp) = &_IO_old_file_jumps;
-+ _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
- #endif
- if (_IO_old_file_fopen ((_IO_FILE *) &new_f->fp, filename, mode) != NULL)
- return (_IO_FILE *) &new_f->fp;
-- INTUSE(_IO_un_link) (&new_f->fp);
-+ INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fp);
- free (new_f);
- return NULL;
- }
---- glibc-2.3.2/libio/oldiopopen.c.orig 2003-10-27 14:11:13.000000000 -0500
-+++ glibc-2.3.2/libio/oldiopopen.c 2003-10-27 16:24:10.000000000 -0500
-@@ -100,7 +100,7 @@ extern int _IO_dup2 __P ((int fd, int fd
-
- struct _IO_proc_file
- {
-- struct _IO_FILE_plus file;
-+ struct _IO_FILE_complete_plus file;
- /* Following fields must match those in class procbuf (procbuf.h) */
- _IO_pid_t pid;
- struct _IO_proc_file *next;
-@@ -219,18 +219,18 @@ _IO_old_popen (command, mode)
- if (new_f == NULL)
- return NULL;
- #ifdef _IO_MTSAFE_IO
-- new_f->fpx.file.file._lock = &new_f->lock;
-+ new_f->fpx.file.file._file._lock = &new_f->lock;
- #endif
-- fp = &new_f->fpx.file.file;
-- INTUSE(_IO_init) (fp, 0);
-- _IO_JUMPS (&new_f->fpx.file) = &_IO_old_proc_jumps;
-- _IO_old_file_init (&new_f->fpx.file);
-+ fp = &new_f->fpx.file.file._file;
-+ _IO_old_init (fp, 0);
-+ _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fpx.file) = &_IO_old_proc_jumps;
-+ _IO_old_file_init ((struct _IO_FILE_plus *) &new_f->fpx.file);
- #if !_IO_UNIFIED_JUMPTABLES
- new_f->fpx.file.vtable = NULL;
- #endif
- if (_IO_old_proc_open (fp, command, mode) != NULL)
- return fp;
-- INTUSE(_IO_un_link) (&new_f->fpx.file);
-+ INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) &new_f->fpx.file);
- free (new_f);
- return NULL;
- }
diff --git a/packages/glibc/glibc-2.3.2/glibc23-mips-msq.patch b/packages/glibc/glibc-2.3.2/glibc23-mips-msq.patch
deleted file mode 100644
index 55fd038bbd..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-mips-msq.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- sysdeps/unix/sysv/linux/mips/bits/msq.h 26 Aug 2002 01:49:55 -0000 1.1
-+++ sysdeps/unix/sysv/linux/mips/bits/msq.h 7 Oct 2003 18:30:30 -0000
-@@ -38,16 +38,34 @@ typedef unsigned long int msglen_t;
- struct msqid_ds
- {
- struct ipc_perm msg_perm; /* structure describing operation permission */
-+#if __WORDSIZE == 32 && defined (__MIPSEB__)
-+ unsigned long int __unused1;
-+#endif
- __time_t msg_stime; /* time of last msgsnd command */
-+#if __WORDSIZE == 32 && defined (__MIPSEL__)
-+ unsigned long int __unused1;
-+#endif
-+#if __WORDSIZE == 32 && defined (__MIPSEB__)
-+ unsigned long int __unused2;
-+#endif
- __time_t msg_rtime; /* time of last msgrcv command */
-+#if __WORDSIZE == 32 && defined (__MIPSEL__)
-+ unsigned long int __unused2;
-+#endif
-+#if __WORDSIZE == 32 && defined (__MIPSEB__)
-+ unsigned long int __unused3;
-+#endif
- __time_t msg_ctime; /* time of last change */
-+#if __WORDSIZE == 32 && defined (__MIPSEL__)
-+ unsigned long int __unused3;
-+#endif
- unsigned long int __msg_cbytes; /* current number of bytes on queue */
- msgqnum_t msg_qnum; /* number of messages currently on queue */
- msglen_t msg_qbytes; /* max number of bytes allowed on queue */
- __pid_t msg_lspid; /* pid of last msgsnd() */
- __pid_t msg_lrpid; /* pid of last msgrcv() */
-- unsigned long int __unused1;
-- unsigned long int __unused2;
-+ unsigned long int __unused4;
-+ unsigned long int __unused5;
- };
-
- #ifdef __USE_MISC
diff --git a/packages/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch b/packages/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch
deleted file mode 100644
index b5deae40b6..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-powerpc-sigcontext.patch
+++ /dev/null
@@ -1,326 +0,0 @@
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2003-08-25 13:15:36.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2003-09-23 18:19:41.000000000 +1000
-@@ -22,5 +22,6 @@
- }
- GLIBC_2.3.3 {
- posix_fadvise64; posix_fallocate64;
-+ setcontext; getcontext; swapcontext; makecontext;
- }
- }
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2003-06-18 13:36:23.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2003-09-23 19:15:38.000000000 +1000
-@@ -18,12 +18,20 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <shlib-compat.h>
-
- #define __ASSEMBLY__
- #include <asm/ptrace.h>
- #include "ucontext_i.h"
-
- ENTRY(__getcontext)
-+ /*
-+ * Since we are not attempting to save the altivec registers,
-+ * there is no need to get the register storage space
-+ * aligned on a 16-byte boundary.
-+ */
-+ addi r3,r3,_UC_REG_SPACE
-+ stw r3,_UC_REGS_PTR - _UC_REG_SPACE(r3)
- stw r0,_UC_GREGS+(PT_R0*4)(r3)
- stw r1,_UC_GREGS+(PT_R1*4)(r3)
- mflr r0
-@@ -112,7 +120,7 @@
- stfd fp31,_UC_FREGS+(31*8)(r3)
- stfd fp0,_UC_FREGS+(32*8)(r3)
-
-- addi r5,r3,_UC_SIGMASK
-+ addi r5,r3,_UC_SIGMASK - _UC_REG_SPACE
- li r4,0
- li r3,SIG_BLOCK
- bl JUMPTARGET(sigprocmask)
-@@ -123,4 +131,18 @@
- blr
- PSEUDO_END(__getcontext)
-
--weak_alias(__getcontext, getcontext)
-+versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_3)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ENTRY (__getcontext_stub)
-+ li r3,ENOSYS
-+ b JUMPTARGET(__syscall_error)
-+ END (__getcontext_stub)
-+
-+compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)
-+
-+#endif
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2003-06-18 13:36:38.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2003-09-23 19:15:48.000000000 +1000
-@@ -18,6 +18,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <shlib-compat.h>
-
- #define __ASSEMBLY__
- #include <asm/ptrace.h>
-@@ -25,22 +26,24 @@
-
- ENTRY(__makecontext)
- /* Set up the first 7 args to the function in its registers */
-- stw r6,_UC_GREGS+(PT_R3*4)(r3)
-- stw r7,_UC_GREGS+(PT_R4*4)(r3)
-- stw r8,_UC_GREGS+(PT_R5*4)(r3)
-- stw r9,_UC_GREGS+(PT_R6*4)(r3)
-- stw r10,_UC_GREGS+(PT_R7*4)(r3)
-+ addi r11,r3,_UC_REG_SPACE
-+ stw r11,_UC_REGS_PTR(r3)
-+ stw r6,_UC_GREGS+(PT_R3*4)(r11)
-+ stw r7,_UC_GREGS+(PT_R4*4)(r11)
-+ stw r8,_UC_GREGS+(PT_R5*4)(r11)
-+ stw r9,_UC_GREGS+(PT_R6*4)(r11)
-+ stw r10,_UC_GREGS+(PT_R7*4)(r11)
- lwz r8,8(r1)
- lwz r9,12(r1)
-- stw r8,_UC_GREGS+(PT_R8*4)(r3)
-- stw r9,_UC_GREGS+(PT_R9*4)(r3)
-+ stw r8,_UC_GREGS+(PT_R8*4)(r11)
-+ stw r9,_UC_GREGS+(PT_R9*4)(r11)
-
- /* Set the NIP to the start of the function */
-- stw r4,_UC_GREGS+(PT_NIP*4)(r3)
-+ stw r4,_UC_GREGS+(PT_NIP*4)(r11)
-
- /* Set the function's r31 to ucp->uc_link for the exitcode below. */
- lwz r7,_UC_LINK(r3)
-- stw r7,_UC_GREGS+(PT_R31*4)(r3)
-+ stw r7,_UC_GREGS+(PT_R31*4)(r11)
-
- /* Set the function's LR to point to the exitcode below. */
- #ifdef PIC
-@@ -53,7 +56,7 @@
- lis r6,L(exitcode)@ha
- addi r6,r6,L(exitcode)@l
- #endif
-- stw r6,_UC_GREGS+(PT_LNK*4)(r3)
-+ stw r6,_UC_GREGS+(PT_LNK*4)(r11)
-
- /*
- * Set up the stack frame for the function.
-@@ -71,7 +74,7 @@
- cmpwi r5,8
- blt 2f /* less than 8 args is easy */
- lwz r10,16(r1)
-- stw r10,_UC_GREGS+(PT_R10*4)(r3)
-+ stw r10,_UC_GREGS+(PT_R10*4)(r11)
- beq 2f /* if exactly 8 args */
- subi r9,r5,3
- subi r5,r5,8
-@@ -83,7 +86,7 @@
- 3: lwzu r10,4(r6)
- stwu r10,4(r8)
- bdnz 3b
--2: stw r7,_UC_GREGS+(PT_R1*4)(r3)
-+2: stw r7,_UC_GREGS+(PT_R1*4)(r11)
- li r6,0
- stw r6,0(r7)
-
-@@ -102,4 +105,19 @@
- b 4b
-
- END(__makecontext)
--weak_alias(__makecontext, makecontext)
-+
-+versioned_symbol (libc, __makecontext, makecontext, GLIBC_2_3_3)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ENTRY (__makecontext_stub)
-+ li r3,ENOSYS
-+ b JUMPTARGET(__syscall_error)
-+ END (__makecontext_stub)
-+
-+compat_symbol (libc, __makecontext_stub, makecontext, GLIBC_2_1)
-+
-+#endif
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 2003-06-18 13:36:57.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 2003-09-23 17:01:40.000000000 +1000
-@@ -18,6 +18,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <shlib-compat.h>
-
- #define __ASSEMBLY__
- #include <asm/ptrace.h>
-@@ -28,7 +29,7 @@
- stwu r1,-16(r1)
- stw r0,20(r1)
- stw r31,12(r1)
-- mr r31,r3
-+ lwz r31,_UC_REGS_PTR(r3)
-
- /*
- * If this ucontext refers to the point where we were interrupted
-@@ -144,6 +145,20 @@
- sc
- /* NOTREACHED */
-
--PSEUDO_END(__setcontext)
-+PSEUDO_END (__setcontext)
-
--weak_alias(__setcontext, setcontext)
-+versioned_symbol (libc, __setcontext, setcontext, GLIBC_2_3_3)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ENTRY (__setcontext_stub)
-+ li r3,ENOSYS
-+ b JUMPTARGET(__syscall_error)
-+ END (__setcontext_stub)
-+
-+compat_symbol (libc, __setcontext_stub, setcontext, GLIBC_2_0)
-+
-+#endif
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2003-06-18 13:37:19.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2003-09-23 19:15:56.000000000 +1000
-@@ -18,6 +18,7 @@
- 02111-1307 USA. */
-
- #include <sysdep.h>
-+#include <shlib-compat.h>
-
- #define __ASSEMBLY__
- #include <asm/ptrace.h>
-@@ -25,6 +26,8 @@
-
- ENTRY(__swapcontext)
- /* Save the current context */
-+ addi r3,r3,_UC_REG_SPACE
-+ stw r3,_UC_REGS_PTR - _UC_REG_SPACE(r3)
- stw r0,_UC_GREGS+(PT_R0*4)(r3)
- stw r1,_UC_GREGS+(PT_R1*4)(r3)
- mflr r0
-@@ -115,7 +118,7 @@
- stfd fp31,_UC_FREGS+(31*8)(r3)
- stfd fp0,_UC_FREGS+(32*8)(r3)
-
-- addi r5,r3,_UC_SIGMASK
-+ addi r5,r3,_UC_SIGMASK - _UC_REG_SPACE
- addi r4,r4,_UC_SIGMASK
- li r3,SIG_SETMASK
- bl JUMPTARGET(sigprocmask)
-@@ -133,6 +136,8 @@
- * r0, xer, ctr. We don't restore r2 since it will be used as
- * the TLS pointer.
- */
-+ mr r4,r31
-+ lwz r31,_UC_REGS_PTR(r31)
- lwz r0,_UC_GREGS+(PT_MSR*4)(r31)
- cmpwi r0,0
- bne L(do_sigret)
-@@ -223,11 +228,25 @@
- blr
-
- L(do_sigret):
-- addi r1,r31,-0xd0
-+ addi r1,r4,-0xd0
- li r0,SYS_ify(rt_sigreturn)
- sc
- /* NOTREACHED */
-
- PSEUDO_END(__swapcontext)
-
--weak_alias(__swapcontext, swapcontext)
-+versioned_symbol (libc, __swapcontext, swapcontext, GLIBC_2_3_3)
-+
-+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
-+
-+#define _ERRNO_H 1
-+#include <bits/errno.h>
-+
-+ENTRY (__swapcontext_stub)
-+ li r3,ENOSYS
-+ b JUMPTARGET(__syscall_error)
-+ END (__swapcontext_stub)
-+
-+compat_symbol (libc, __swapcontext_stub, swapcontext, GLIBC_2_1)
-+
-+#endif
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 2003-06-18 13:37:33.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 2003-09-11 16:48:08.000000000 +1000
-@@ -24,7 +24,11 @@
- #define _UC_LINK 4
- #define _UC_STACK_SP 8
- #define _UC_STACK_SIZE 16
--#define _UC_SIGMASK 64
--#define _UC_GREGS 192
--#define _UC_FREGS 384
--#define _UC_VREGS 656
-+#define _UC_REGS_PTR 48
-+#define _UC_SIGMASK 52
-+#define _UC_REG_SPACE 180
-+
-+/* offsets within mcontext_t */
-+#define _UC_GREGS 0
-+#define _UC_FREGS 192
-+#define _UC_VREGS 464
---- cvs/libc/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-07-04 10:12:48.000000000 +1000
-+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-09-11 16:31:52.000000000 +1000
-@@ -74,14 +74,40 @@
- struct ucontext *uc_link;
- stack_t uc_stack;
- #if __WORDSIZE == 32
-- /* These fields are for backwards compatibility. */
-+ /*
-+ * These fields are set up this way to maximize source and
-+ * binary compatibility with code written for the old
-+ * ucontext_t definition, which didn't include space for the
-+ * registers.
-+ *
-+ * Different versions of the kernel have stored the registers on
-+ * signal delivery at different offsets from the ucontext struct.
-+ * Programs should thus use the uc_mcontext.uc_regs pointer to
-+ * find where the registers are actually stored. The registers
-+ * will be stored within the ucontext_t struct but not necessarily
-+ * at a fixed address. As a side-effect, this lets us achieve
-+ * 16-byte alignment for the register storage space if the
-+ * Altivec registers are to be saved, without requiring 16-byte
-+ * alignment on the whole ucontext_t.
-+ *
-+ * The uc_mcontext.regs field is included for source compatibility
-+ * with programs written against the older ucontext_t definition,
-+ * and its name should therefore not change. The uc_pad field
-+ * is for binary compatibility with programs compiled against the
-+ * old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask
-+ * are at the same offset as previously.
-+ */
- int uc_pad[7];
-- mcontext_t *uc_regs;
-- unsigned int uc_oldsigmask[2];
-- int uc_pad2;
--#endif
-+ union uc_regs_ptr {
-+ struct pt_regs *regs;
-+ mcontext_t *uc_regs;
-+ } uc_mcontext;
-+ sigset_t uc_sigmask;
-+ char uc_reg_space[sizeof(mcontext_t) + 12]; /* last for extensibility */
-+#else /* 64-bit */
- sigset_t uc_sigmask;
- mcontext_t uc_mcontext; /* last for extensibility */
-+#endif
- } ucontext_t;
-
- #endif /* sys/ucontext.h */
diff --git a/packages/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch b/packages/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch
deleted file mode 100644
index 4671378f3e..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-sparc-pread64.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 2003/10/08 07:40:39
-@@ -29,6 +29,16 @@
- #undef SYS_ify
- #define SYS_ify(syscall_name) __NR_##syscall_name
-
-+/* This is a kludge to make syscalls.list find these under the names
-+ pread and pwrite, since some kernel headers define those names
-+ and some define the *64 names for the same system calls. */
-+#if !defined __NR_pread && defined __NR_pread64
-+# define __NR_pread __NR_pread64
-+#endif
-+#if !defined __NR_pwrite && defined __NR_pwrite64
-+# define __NR_pwrite __NR_pwrite64
-+#endif
-+
- #ifdef __ASSEMBLER__
-
- #define LOADSYSCALL(x) mov __NR_##x, %g1
diff --git a/packages/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch b/packages/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch
deleted file mode 100644
index ed58db835b..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-sse-oldkernel.patch
+++ /dev/null
@@ -1,109 +0,0 @@
---- glibc-2.3.2/sysdeps/i386/dl-machine.h.orig 2003-11-01 15:52:17.000000000 -0500
-+++ glibc-2.3.2/sysdeps/i386/dl-machine.h 2003-11-01 15:52:55.000000000 -0500
-@@ -25,6 +25,7 @@
- #include <sys/param.h>
- #include <sysdep.h>
- #include <tls.h>
-+#include <dl-procinfo.h>
-
- /* Return nonzero iff ELF header is compatible with the running host. */
- static inline int __attribute__ ((unused))
-@@ -357,6 +358,10 @@ dl_platform_init (void)
- if (GL(dl_platform) != NULL && *GL(dl_platform) == '\0')
- /* Avoid an empty string which would disturb us. */
- GL(dl_platform) = NULL;
-+
-+#ifdef DL_ADJUST_PROCINFO
-+ DL_ADJUST_PROCINFO;
-+#endif
- }
-
- static inline Elf32_Addr
---- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h.orig 2003-11-01 15:50:41.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2003-11-01 15:51:48.000000000 -0500
-@@ -126,4 +126,20 @@ _dl_string_platform (const char *str)
- return -1;
- };
-
-+#define DL_ADJUST_PROCINFO dl_adjust_procinfo ()
-+
-+static inline void
-+__attribute__ ((unused, always_inline))
-+dl_adjust_procinfo (void)
-+{
-+ if (GL(dl_osversion) < 0x020400)
-+ {
-+ /* Unfortunately, while the capability is named OSFXSR, it's
-+ actually hardware FXSR direct from CPUID. And we can't test
-+ CR4 ourselves, because we're in protected mode. Disable it
-+ for kernels which might not have actually enabled OSFXSR. */
-+ GL(dl_hwcap) &= ~(HWCAP_I386_OSFXSR | HWCAP_I386_XMM | HWCAP_I386_XMM2);
-+ }
-+}
-+
- #endif /* dl-procinfo.h */
---- glibc-2.3.2/sysdeps/generic/libc-start.c.orig 2003-11-02 23:11:51.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/libc-start.c 2003-11-02 23:34:42.000000000 -0500
-@@ -23,6 +23,10 @@
- #include <bp-start.h>
- #include <bp-sym.h>
-
-+#include <dl-osinfo.h>
-+#include <dl-librecon.h>
-+#include <dl-machine.h>
-+
- extern void __libc_init_first (int argc, char **argv, char **envp);
-
- extern int __libc_multiple_libcs;
-@@ -123,15 +127,28 @@ LIBC_START_MAIN (int (*main) (int, char
- # endif
- _dl_aux_init (auxvec);
- # endif
--# ifdef DL_SYSDEP_OSCHECK
- if (!__libc_multiple_libcs)
- {
-+# ifdef DL_SYSDEP_OSCHECK
- /* This needs to run to initiliaze _dl_osversion before TLS
- setup might check it. */
- DL_SYSDEP_OSCHECK (__libc_fatal);
-- }
- # endif
-
-+ /* Moved here so that we can frob hwcap early enough. */
-+# ifdef DL_OSVERSION_INIT
-+ DL_OSVERSION_INIT;
-+# endif
-+
-+# ifdef DL_PLATFORM_INIT
-+ DL_PLATFORM_INIT;
-+# endif
-+
-+ /* Now determine the length of the platform string. */
-+ if (_dl_platform != NULL)
-+ _dl_platformlen = strlen (_dl_platform);
-+ }
-+
- /* Initialize the thread library at least a bit since the libgcc
- functions are using thread functions if these are available and
- we need to setup errno. If there is no thread library and we
---- glibc-2.3.2/elf/dl-support.c.orig 2003-11-02 22:55:47.000000000 -0500
-+++ glibc-2.3.2/elf/dl-support.c 2003-11-02 23:24:40.000000000 -0500
-@@ -252,18 +252,6 @@ _dl_non_dynamic_init (void)
- if (__access ("/etc/suid-debug", F_OK) != 0)
- unsetenv ("MALLOC_CHECK_");
- }
--
--#ifdef DL_PLATFORM_INIT
-- DL_PLATFORM_INIT;
--#endif
--
--#ifdef DL_OSVERSION_INIT
-- DL_OSVERSION_INIT;
--#endif
--
-- /* Now determine the length of the platform string. */
-- if (_dl_platform != NULL)
-- _dl_platformlen = strlen (_dl_platform);
- }
-
-
diff --git a/packages/glibc/glibc-2.3.2/glibc23-version-sanity.patch b/packages/glibc/glibc-2.3.2/glibc23-version-sanity.patch
deleted file mode 100644
index 39d72de726..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc23-version-sanity.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- glibc-2.3.2/sysdeps/unix/sysv/linux/dl-osinfo.h.orig 2003-11-01 14:20:45.000000000 -0500
-+++ glibc-2.3.2/sysdeps/unix/sysv/linux/dl-osinfo.h 2003-11-01 14:21:32.000000000 -0500
-@@ -91,7 +91,7 @@
- version <<= 8; \
- version |= here; \
- \
-- if (*cp++ != '.') \
-+ if (*cp++ != '.' || parts == 3) \
- /* Another part following? */ \
- break; \
- } \
diff --git a/packages/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch b/packages/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch
deleted file mode 100644
index 4b3ce21e78..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc232-gcc34-i386-fixup-attribute.patch
+++ /dev/null
@@ -1,53 +0,0 @@
---- glibc-2.3.2/sysdeps/i386/dl-machine.h~glibc232-gcc34-i386-fixup-attribute.patch 2004-04-25 23:26:18.000000000 -0400
-+++ glibc-2.3.2/sysdeps/i386/dl-machine.h 2004-04-25 23:26:19.000000000 -0400
-@@ -155,11 +155,13 @@
- destroys the passed register information. */
- /* GKM FIXME: Fix trampoline to pass bounds so we can do
- without the `__unbounded' qualifier. */
-+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused))
-+
- static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
-- __attribute__ ((regparm (2), unused));
-+ ARCH_FIXUP_ATTRIBUTE;
- static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
- ElfW(Addr) retaddr)
-- __attribute__ ((regparm (3), unused));
-+ ARCH_FIXUP_ATTRIBUTE;
- # endif
-
- /* This code is used in dl-runtime.c to call the `fixup' function
---- glibc-2.3.2/elf/dl-runtime.c~glibc232-gcc34-i386-fixup-attribute.patch 2003-02-07 14:41:12.000000000 -0500
-+++ glibc-2.3.2/elf/dl-runtime.c 2004-04-25 23:42:01.000000000 -0400
-@@ -36,6 +36,12 @@
- # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
- #endif
-
-+/* The fixup functions might have need special attributes. If none
-+ are provided define the macro as empty. */
-+#ifndef ARCH_FIXUP_ATTRIBUTE
-+# define ARCH_FIXUP_ATTRIBUTE
-+#endif
-+
-
- /* This function is called through a special trampoline from the PLT the
- first time each PLT entry is called. We must perform the relocation
-@@ -45,7 +51,8 @@
- function. */
-
- #ifndef ELF_MACHINE_NO_PLT
--static ElfW(Addr) __attribute_used__
-+static ElfW(Addr)
-+__attribute ((used, noinline)) ARCH_FIXUP_ATTRIBUTE
- fixup (
- # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
- ELF_MACHINE_RUNTIME_FIXUP_ARGS,
-@@ -132,7 +139,8 @@
-
- #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__
-
--static ElfW(Addr) __attribute_used__
-+static ElfW(Addr)
-+__attribute ((used, noinline)) ARCH_FIXUP_ATTRIBUTE
- profile_fixup (
- #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
- ELF_MACHINE_RUNTIME_FIXUP_ARGS,
diff --git a/packages/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch b/packages/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch
deleted file mode 100644
index a55fd4d2ca..0000000000
--- a/packages/glibc/glibc-2.3.2/glibc232-gcc34-no-unit-at-a-time.patch
+++ /dev/null
@@ -1,112 +0,0 @@
---- glibc-2.3.2/csu/Makefile.old 2004-04-25 20:56:43.000000000 -0400
-+++ glibc-2.3.2/csu/Makefile 2004-04-25 20:57:15.000000000 -0400
-@@ -104,7 +104,7 @@
- $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h
- $(compile.S) -g0 $(ASFLAGS-.os) -o $@
-
--CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
-+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
-
- vpath initfini.c $(full_config_sysdirs)
-
---- glibc-2.3.2/linuxthreads/Makefile.old 2004-04-25 21:37:45.000000000 -0400
-+++ glibc-2.3.2/linuxthreads/Makefile 2004-04-25 21:38:03.000000000 -0400
-@@ -271,6 +271,7 @@
-
- $(objpfx)pt-initfini.s: pt-initfini.c
- $(compile.c) -S $(CFLAGS-pt-initfini.s) -finhibit-size-directive \
-+ $(fno-unit-at-a-time) \
- $(patsubst -f%,-fno-%,$(exceptions)) -o $@
-
- # We only have one kind of startup code files. Static binaries and
---- glibc-2.3.2/configure.in.old 2004-04-25 20:10:45.000000000 -0400
-+++ glibc-2.3.2/configure.in 2004-04-25 20:52:41.000000000 -0400
-@@ -1371,6 +1371,23 @@
- fi
- AC_SUBST(libc_cv_z_combreloc)
-
-+AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl
-+cat > conftest.c <<EOF
-+int foo;
-+EOF
-+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
-+ conftest.c 1>&AS_MESSAGE_LOG_FD])
-+then
-+ libc_cv_fno_unit_at_a_time=yes
-+else
-+ libc_cv_fno_unit_at_a_time=no
-+fi
-+rm -f conftest*])
-+if test $libc_cv_fno_unit_at_a_time = yes; then
-+ fno_unit_at_a_time=-fno-unit-at-a-time
-+fi
-+AC_SUBST(fno_unit_at_a_time)
-+
- if test $elf != yes; then
- AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
- [AC_TRY_COMPILE(, [asm (".section .init");
---- glibc-2.3.2/configure.old 2004-04-25 20:54:28.000000000 -0400
-+++ glibc-2.3.2/configure 2004-04-25 20:56:31.000000000 -0400
-@@ -309,7 +309,7 @@
- # include <unistd.h>
- #endif"
-
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc fno_unit_at_a_time libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
- ac_subst_files=''
-
- # Initialize some variables set by options.
-@@ -5306,6 +5306,35 @@
- fi
-
-
-+echo "$as_me:$LINENO: checking for -fno-unit-at-a-time" >&5
-+echo $ECHO_N "checking for -fno-unit-at-a-time... $ECHO_C" >&6
-+if test "${libc_cv_fno_unit_at_a_time+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat > conftest.c <<EOF
-+int foo;
-+EOF
-+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
-+ conftest.c 1>&5'
-+ { (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
-+ libc_cv_fno_unit_at_a_time=yes
-+else
-+ libc_cv_fno_unit_at_a_time=no
-+fi
-+rm -f conftest*
-+fi
-+echo "$as_me:$LINENO: result: $libc_cv_fno_unit_at_a_time" >&5
-+echo "${ECHO_T}$libc_cv_fno_unit_at_a_time" >&6
-+if test $libc_cv_fno_unit_at_a_time = yes; then
-+ fno_unit_at_a_time=-fno-unit-at-a-time
-+fi
-+
-+
- if test $elf != yes; then
- echo "$as_me:$LINENO: checking for .init and .fini sections" >&5
- echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6
-@@ -7580,6 +7609,7 @@
- s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
- s,@ASFLAGS_config@,$ASFLAGS_config,;t t
- s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
-+s,@fno_unit_at_a_time@,$fno_unit_at_a_time,;t t
- s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
- s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
- s,@no_whole_archive@,$no_whole_archive,;t t
---- glibc-2.3.2/config.make.in.old 2004-04-25 20:10:33.000000000 -0400
-+++ glibc-2.3.2/config.make.in 2004-04-25 20:53:20.000000000 -0400
-@@ -53,6 +53,7 @@
- have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
- enable-check-abi = @enable_check_abi@
- have-forced-unwind = @libc_cv_forced_unwind@
-+fno-unit-at-a-time = @fno_unit_at_a_time@
-
- static-libgcc = @libc_cv_gcc_static_libgcc@
-
diff --git a/packages/glibc/glibc-2.3.2/glibcbug.patch b/packages/glibc/glibc-2.3.2/glibcbug.patch
deleted file mode 100644
index 6005b79dbd..0000000000
--- a/packages/glibc/glibc-2.3.2/glibcbug.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- glibcbug.in.orig Fri Jan 11 08:28:28 2002
-+++ glibcbug.in Thu Jan 10 21:32:31 2002
-@@ -99,3 +99,5 @@
- else
- EDIT="$VISUAL"
- fi
-+# Ensure the editor exists
-+command -v "$EDIT" > /dev/null 2>&1 || EDIT=sensible-editor
-
- # Find out some information.
- SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
---- glibcbug.in 1999/05/13 10:22:38 1.17
-+++ glibcbug.in 1999/06/02 12:00:43
-@@ -43,7 +43,7 @@
-
- BUGADDR=${1-$BUGGLIBC}
-
--: ${EDITOR=emacs}
-+: ${EDITOR=sensible-editor}
-
- : ${USER=${LOGNAME-`whoami`}}
-
diff --git a/packages/glibc/glibc-2.3.2/hppa-syscall.patch b/packages/glibc/glibc-2.3.2/hppa-syscall.patch
deleted file mode 100644
index ed0d71d239..0000000000
--- a/packages/glibc/glibc-2.3.2/hppa-syscall.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- sysdeps/unix/sysv/linux/hppa/sysdep.h.orig 2003-11-01 14:16:40.000000000 -0800
-+++ sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-11-01 14:17:36.000000000 -0800
-@@ -387,22 +387,22 @@
-
- #define LOAD_ARGS_0()
- #define LOAD_ARGS_1(r26) \
-- register unsigned long __r26 __asm__("r26") = (unsigned long)r26; \
-+ register unsigned long __r26 __asm__("r26") = (unsigned long)(r26); \
- LOAD_ARGS_0()
- #define LOAD_ARGS_2(r26,r25) \
-- register unsigned long __r25 __asm__("r25") = (unsigned long)r25; \
-+ register unsigned long __r25 __asm__("r25") = (unsigned long)(r25); \
- LOAD_ARGS_1(r26)
- #define LOAD_ARGS_3(r26,r25,r24) \
-- register unsigned long __r24 __asm__("r24") = (unsigned long)r24; \
-+ register unsigned long __r24 __asm__("r24") = (unsigned long)(r24); \
- LOAD_ARGS_2(r26,r25)
- #define LOAD_ARGS_4(r26,r25,r24,r23) \
-- register unsigned long __r23 __asm__("r23") = (unsigned long)r23; \
-+ register unsigned long __r23 __asm__("r23") = (unsigned long)(r23); \
- LOAD_ARGS_3(r26,r25,r24)
- #define LOAD_ARGS_5(r26,r25,r24,r23,r22) \
-- register unsigned long __r22 __asm__("r22") = (unsigned long)r22; \
-+ register unsigned long __r22 __asm__("r22") = (unsigned long)(r22); \
- LOAD_ARGS_4(r26,r25,r24,r23)
- #define LOAD_ARGS_6(r26,r25,r24,r23,r22,r21) \
-- register unsigned long __r21 __asm__("r21") = (unsigned long)r21; \
-+ register unsigned long __r21 __asm__("r21") = (unsigned long)(r21); \
- LOAD_ARGS_5(r26,r25,r24,r23,r22)
-
- /* Even with zero args we use r20 for the syscall number */
diff --git a/packages/glibc/glibc-2.3.2/hurd-enable-ldconfig.patch b/packages/glibc/glibc-2.3.2/hurd-enable-ldconfig.patch
deleted file mode 100644
index 77a90d1497..0000000000
--- a/packages/glibc/glibc-2.3.2/hurd-enable-ldconfig.patch
+++ /dev/null
@@ -1,61 +0,0 @@
---- glibc-2.3.2.old/sysdeps/mach/hurd/configure 2003-02-25 19:46:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/mach/hurd/configure 2003-04-08 17:35:13.000000000 -0400
-@@ -115,3 +115,5 @@
- _ACEOF
-
- fi
-+
-+use_ldconfig=yes
---- glibc-2.3.2.old/sysdeps/mach/hurd/configure.in 2002-10-23 02:21:18.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/configure.in 2003-04-08 17:35:17.000000000 -0400
-@@ -62,3 +62,5 @@
- fi])
-
- hurd_MIG_RETCODE
-+
-+use_ldconfig=yes
---- glibc-2.3.2.old/elf/ldconfig.c~ 2003-04-12 13:24:37.000000000 -0400
-+++ glibc-2.3.2/elf/ldconfig.c 2003-04-12 13:25:00.000000000 -0400
-@@ -49,6 +49,10 @@
-
- #define PACKAGE _libc_intl_domainname
-
-+#ifndef PATH_MAX
-+#define PATH_MAX 1024
-+#endif
-+
- static const struct
- {
- const char *name;
---- glibc-2.3.2.old/sysdeps/mach/hurd/dl-cache.c 2001-07-07 15:21:25.000000000 -0400
-+++ glibc-2.3.2/sysdeps/mach/hurd/dl-cache.c 1969-12-31 19:00:00.000000000 -0500
-@@ -1,29 +0,0 @@
--/* Stubby version of dl-cache; the Hurd doesn't support this "feature".
-- Copyright (C) 1996, 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. */
--
--const char *
--_dl_load_cache_lookup (const char *name)
--{
-- return 0;
--}
--
--void
--_dl_unload_cache (void)
--{
--}
diff --git a/packages/glibc/glibc-2.3.2/ldconfig.patch b/packages/glibc/glibc-2.3.2/ldconfig.patch
deleted file mode 100644
index c60b9b1432..0000000000
--- a/packages/glibc/glibc-2.3.2/ldconfig.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- elf/ldconfig.c 2003-07-08 23:26:27.000000000 +0900
-+++ elf/ldconfig.c.debian 2003-07-08 23:29:43.000000000 +0900
-@@ -920,26 +920,24 @@
- {
- FILE *file = NULL;
- char *line = NULL;
-- const char *canon;
-+ const char *canon = filename;
- size_t len = 0;
-+ int file_fd;
-
- if (opt_chroot)
- {
- canon = chroot_canon (opt_chroot, filename);
-- if (canon)
-- file = fopen (canon, "r");
-- else
-+ if (!canon)
- canon = filename;
- }
-- else
-- {
-- canon = filename;
-- file = fopen (filename, "r");
-- }
-+
-+ if ((file_fd = open(canon, O_RDONLY | O_EXCL, 0022)) != -1)
-+ file = fdopen (file_fd, "r");
-
- if (file == NULL)
- {
-- error (0, errno, _("Can't open configuration file %s"), canon);
-+ if (opt_verbose)
-+ error (0, errno, _("Can't open configuration file %s"), canon);
- if (canon != filename)
- free ((char *) canon);
- return;
diff --git a/packages/glibc/glibc-2.3.2/ldd.patch b/packages/glibc/glibc-2.3.2/ldd.patch
deleted file mode 100644
index 01719dbe08..0000000000
--- a/packages/glibc/glibc-2.3.2/ldd.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- elf/ldd.bash.in~ Tue Apr 3 21:43:31 2001
-+++ elf/ldd.bash.in Tue Apr 3 21:54:15 2001
-@@ -32,6 +32,7 @@
- warn=
- bind_now=
- verbose=
-+filename_magic_regex="((^|/)lib|.so$)"
-
- while test $# -gt 0; do
- case "$1" in
-@@ -123,8 +124,11 @@
- echo "ldd: ${file}:" $"No such file or directory" >&2
- result=1
- elif test -r "$file"; then
-- test -x "$file" || echo 'ldd:' $"\
--warning: you do not have execution permission for" "\`$file'" >&2
-+ if test ! -x "$file" && eval echo "$file" \
-+ | egrep -v "$filename_magic_regex" > /dev/null; then
-+ echo 'ldd:' $"warning: you do not have execution permission for"\
-+ "\`$file'" >&2
-+ fi
- RTLD=
- for rtld in ${RTLDLIST}; do
- if test -x $rtld; then
-@@ -143,7 +147,12 @@
- fi
- case $ret in
- 0)
-- eval $add_env '"$file"' || result=1
-+ if [ ! -x "$file" ] && eval file -L "$file" 2>/dev/null \
-+ | sed 10q | egrep "$file_magic_regex" > /dev/null; then
-+ eval $add_env ${RTLD} '"$file"' || result=1
-+ else
-+ eval $add_env '"$file"' || result=1
-+ fi
- ;;
- 1)
- # This can be a non-ELF binary or no binary at all.
diff --git a/packages/glibc/glibc-2.3.2/ldso-disable-hwcap.patch b/packages/glibc/glibc-2.3.2/ldso-disable-hwcap.patch
deleted file mode 100644
index 5538d20672..0000000000
--- a/packages/glibc/glibc-2.3.2/ldso-disable-hwcap.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- glibc-2.3.2/sysdeps/generic/dl-sysdep.c.orig 2003-10-28 12:22:33.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-10-28 12:38:49.000000000 -0500
-@@ -354,7 +354,11 @@ _dl_important_hwcaps (const char *platfo
- #ifdef USE_TLS
- /* For TLS enabled builds always add 'tls'. */
- ++cnt;
--#else
-+#endif
-+
-+ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0)
-+ cnt = 0;
-+
- if (cnt == 0)
- {
- /* If we have platform name and no important capability we only have
-@@ -369,7 +373,6 @@ _dl_important_hwcaps (const char *platfo
- *sz = 1;
- return result;
- }
--#endif
-
- /* Create temporary data structure to generate result table. */
- temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
-@@ -411,9 +414,7 @@ _dl_important_hwcaps (const char *platfo
- result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total);
- if (result == NULL)
- {
--#ifndef USE_TLS
- no_memory:
--#endif
- INTUSE(_dl_signal_error) (ENOMEM, NULL, NULL,
- N_("cannot create capability list"));
- }
---- glibc-2.3.2/sysdeps/generic/dl-cache.c.orig 2003-10-28 12:32:36.000000000 -0500
-+++ glibc-2.3.2/sysdeps/generic/dl-cache.c 2003-10-28 12:38:57.000000000 -0500
-@@ -246,6 +246,7 @@ _dl_load_cache_lookup (const char *name)
- /* This file ends in static libraries where we don't have a hwcap. */
- unsigned long int *hwcap;
- uint64_t platform;
-+ int disable_hwcap = 0;
- #ifndef SHARED
- weak_extern (_dl_hwcap);
- #endif
-@@ -261,6 +262,9 @@ _dl_load_cache_lookup (const char *name)
- if (platform != (uint64_t) -1)
- platform = 1ULL << platform;
-
-+ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0)
-+ disable_hwcap = 1;
-+
- #ifdef USE_TLS
- # define TLS_BIT (1ULL << 63)
- #else
-@@ -272,6 +276,8 @@ _dl_load_cache_lookup (const char *name)
- if (GL(dl_osversion) \
- && cache_new->libs[middle].osversion > GL(dl_osversion)) \
- continue; \
-+ if (disable_hwcap && lib->hwcap != 0) \
-+ continue; \
- if (_DL_PLATFORMS_COUNT && platform != -1 \
- && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0 \
- && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \
diff --git a/packages/glibc/glibc-2.3.2/libgcc-compat-all.patch b/packages/glibc/glibc-2.3.2/libgcc-compat-all.patch
deleted file mode 100644
index 38eae4cd78..0000000000
--- a/packages/glibc/glibc-2.3.2/libgcc-compat-all.patch
+++ /dev/null
@@ -1,435 +0,0 @@
---- sysdeps/mips/Makefile.orig Sun Oct 13 14:45:56 2002
-+++ sysdeps/mips/Makefile Sun Oct 13 14:51:20 2002
-@@ -6,3 +6,11 @@
- ifeq ($(subdir),setjmp)
- sysdep_routines += setjmp_aux
- endif
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- sysdeps/mips/Dist.orig Sun Oct 13 15:07:31 2002
-+++ sysdeps/mips/Dist Sun Oct 13 15:07:41 2002
-@@ -1,3 +1,4 @@
-+libgcc-compat.c
- setjmp_aux.c
- regdef.h
- sgidefs.h
---- /dev/null Sat Mar 16 18:32:44 2002
-+++ sysdeps/mips/libgcc-compat.c Sun Oct 20 17:11:59 2002
-@@ -0,0 +1,66 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Guido Guenther <agx@sigxcpu.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int32_t __cmpdi2 (int64_t, int64_t);
-+int32_t __cmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __cmpdi2 (u, v);
-+}
-+symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0);
-+
-+
-+extern int32_t __ucmpdi2 (int64_t, int64_t);
-+int32_t __ucmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __ucmpdi2 (u, v);
-+}
-+symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0);
-+
-+
-+extern int64_t __fixdfdi (double);
-+int64_t __fixdfdi_internal (double d)
-+{
-+ return __fixdfdi (d);
-+}
-+symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0);
-+
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+
-+extern float floatdisf (int64_t);
-+float __floatdisf_internal (int64_t u)
-+{
-+ return __floatdisf (u);
-+}
-+symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0);
-+
-+#endif
---- /dev/null Sat Mar 16 18:32:44 2002
-+++ sysdeps/mips/Versions Sun Oct 20 17:12:00 2002
-@@ -0,0 +1,8 @@
-+libc {
-+ GLIBC_2.0 {
-+ # Functions from libgcc.
-+ __cmpdi2; __ucmpdi2;
-+ __divdi3; __moddi3; __udivdi3; __umoddi3;
-+ __fixdfdi; __floatdidf; __floatdisf;
-+ }
-+}
---- /dev/null Sat Mar 16 18:32:44 2002
-+++ sysdeps/i386/libgcc-compat.c Sun Feb 16 01:43:47 2003
-@@ -0,0 +1,75 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Guido Guenther <agx@sigxcpu.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int32_t __cmpdi2 (int64_t, int64_t);
-+int32_t __cmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __cmpdi2 (u, v);
-+}
-+symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0);
-+
-+
-+extern int32_t __ucmpdi2 (int64_t, int64_t);
-+int32_t __ucmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __ucmpdi2 (u, v);
-+}
-+symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0);
-+
-+
-+extern int64_t __fixunsdfdi (double);
-+int64_t __fixunsdfdi_internal (double d)
-+{
-+ return __fixunsdfdi (d);
-+}
-+symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunssfdi (float);
-+int64_t __fixunssfdi_internal (float d)
-+{
-+ return __fixunssfdi (d);
-+}
-+
-+symbol_version (__fixunsfdi_internal, __fixunsfdi, GLIBC_2.0);
-+
-+typedef float XFtype __attribute__ ((mode (XF)));
-+
-+extern int64_t __fixunsxfdi (XFtype);
-+int64_t __fixunsxfdi_internal (XFtype d)
-+{
-+ return __fixunsxfdi (d);
-+}
-+
-+symbol_version (__fixunsxfdi_internal, __fixunsxfdi, GLIBC_2.0);
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+#endif
---- sysdeps/i386/Makefile 19 Sep 2002 06:46:06 -0000 1.14
-+++ sysdeps/i386/Makefile 16 Feb 2003 11:33:41 -0000
-@@ -20,3 +20,11 @@
- CFLAGS-dl-load.c += -Wno-unused
- CFLAGS-dl-reloc.c += -Wno-unused
- endif
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- sysdeps/i386/Dist 28 Aug 2002 08:24:48 -0000 1.4
-+++ sysdeps/i386/Dist 16 Feb 2003 11:33:47 -0000
-@@ -2,3 +2,4 @@
- machine-gmon.h
- bp-asm.h
- bits/link.h
-+libgcc-compat.c
---- sysdeps/i386/Versions 17 May 1999 17:23:56 -0000 1.3
-+++ sysdeps/i386/Versions 16 Feb 2003 11:34:17 -0000
-@@ -2,6 +2,9 @@
- GLIBC_2.0 {
- # Functions from libgcc.
- __divdi3; __moddi3; __udivdi3; __umoddi3;
-+ __cmpdi2; __ucmpdi2;
-+ __fixunsdfdi; __fixunssfdi; __fixunsxfdi;
-+ __floatdidf;
- }
- GLIBC_2.1 {
- # global variable
---- /dev/null Sat Mar 16 18:32:44 2002
-+++ sysdeps/sparc/sparc32/libgcc-compat.c Fri Feb 7 00:29:23 2003
-@@ -0,0 +1,121 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Guido Guenther <agx@sigxcpu.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int64_t __ashldi3 (int64_t, int32_t);
-+int64_t __ashldi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashldi3 (u, b);
-+}
-+symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0);
-+
-+
-+extern int64_t __ashrdi3 (int64_t, int32_t);
-+int64_t __ashrdi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashrdi3 (u, b);
-+}
-+symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0);
-+
-+
-+extern int64_t __lshrdi3 (int64_t, int32_t);
-+int64_t __lshrdi3_internal (int64_t u, int32_t b)
-+{
-+ return __lshrdi3 (u, b);
-+}
-+symbol_version (__lshrdi3_internal, __lshrdi3, GLIBC_2.0);
-+
-+extern int32_t __cmpdi2 (int64_t, int64_t);
-+int32_t __cmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __cmpdi2 (u, v);
-+}
-+symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0);
-+
-+
-+extern int32_t __ucmpdi2 (int64_t, int64_t);
-+int32_t __ucmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __ucmpdi2 (u, v);
-+}
-+symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0);
-+
-+
-+extern int64_t __fixdfdi (double);
-+int64_t __fixdfdi_internal (double d)
-+{
-+ return __fixdfdi (d);
-+}
-+symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0);
-+
-+
-+extern int64_t __fixsfdi (float);
-+int64_t __fixsfdi_internal (float d)
-+{
-+ return __fixsfdi (d);
-+}
-+symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0);
-+
-+
-+extern int64_t __fixunsdfdi (double);
-+int64_t __fixunsdfdi_internal (double d)
-+{
-+ return __fixunsdfdi (d);
-+}
-+symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunssfdi (float);
-+int64_t __fixunssfdi_internal (float d)
-+{
-+ return __fixunssfdi (d);
-+}
-+
-+symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0);
-+
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+
-+extern float floatdisf (int64_t);
-+float __floatdisf_internal (int64_t u)
-+{
-+ return __floatdisf (u);
-+}
-+symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0);
-+
-+
-+extern int64_t __muldi3 (int64_t, int64_t);
-+int64_t __muldi3_internal (int64_t u, int64_t v)
-+{
-+ return __muldi3 (u, v);
-+}
-+symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0);
-+
-+#endif
---- sysdeps/sparc/sparc32/Makefile 6 Jul 2001 04:56:04 -0000 1.5
-+++ sysdeps/sparc/sparc32/Makefile 6 Feb 2003 23:32:15 -0000
-@@ -20,6 +20,14 @@
- sysdep_routines = dotmul umul $(divrem) alloca
- endif # gnulib
-
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
-+
- # We distribute these files, even though they are generated,
- # so as to avoid the need for a functioning m4 to build the library.
- divrem := sdiv udiv rem urem
---- sysdeps/sparc/sparc32/Dist 9 Oct 2000 00:39:58 -0000 1.4
-+++ sysdeps/sparc/sparc32/Dist 6 Feb 2003 23:51:09 -0000
-@@ -7,3 +7,4 @@
- urem.S
- alloca.S
- ieee754.h
-+libgcc-compat.c
---- sysdeps/sparc/sparc32/Versions.orig 2003-02-07 07:46:20.000000000 -0500
-+++ sysdeps/sparc/sparc32/Versions 2003-02-07 07:46:58.000000000 -0500
-@@ -1,5 +1,9 @@
- libc {
- GLIBC_2.0 {
- .div; .mul; .rem; .udiv; .umul; .urem;
-+ __divdi3; __moddi3; __udivdi3; __umoddi3; __muldi3;
-+ __ashldi3; __ashrdi3; __lshrdi3; __cmpdi2; __ucmpdi2;
-+ __fixdfdi; __fixsfdi; __fixunsdfdi; __fixunssfdi;
-+ __floatdidf; __floatdisf;
- }
- }
---- /dev/null Sat Mar 16 18:32:44 2002
-+++ sysdeps/alpha/libgcc-compat.c Sat Mar 1 21:19:36 2003
-@@ -0,0 +1,35 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Guido Guenther <agx@sigxcpu.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+typedef int int128_t __attribute__((__mode__(TI)));
-+
-+extern int128_t __multi3 (int128_t, int128_t);
-+int128_t INTUSE (__multi3) (int128_t x, int128_t y)
-+{
-+ return __multi3 (x, y);
-+}
-+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.0);
-+
-+#endif
---- sysdeps/alpha/Versions 20 Jan 1999 09:23:32 -0000 1.2
-+++ sysdeps/alpha/Versions 1 Mar 2003 21:11:25 -0000
-@@ -3,6 +3,8 @@
- # functions with special/multiple interfaces
- __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls;
- __remls; __divl; __reml; __divq; __remq; __divqu; __remqu;
-+ # libgcc-compat
-+ __multi3;
- }
- }
- libm {
---- sysdeps/alpha/Makefile 29 Jan 2002 03:53:32 -0000 1.18
-+++ sysdeps/alpha/Makefile 2 Mar 2003 12:20:58 -0000
-@@ -47,3 +47,11 @@
- # libc.so requires about 16k for the small data area, which is well
- # below the 64k maximum.
- pic-ccflag = -fpic
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
diff --git a/packages/glibc/glibc-2.3.2/libgcc-compat-other.patch b/packages/glibc/glibc-2.3.2/libgcc-compat-other.patch
deleted file mode 100644
index 3bd8721910..0000000000
--- a/packages/glibc/glibc-2.3.2/libgcc-compat-other.patch
+++ /dev/null
@@ -1,883 +0,0 @@
---- glibc-2.3.1.old/sysdeps/arm/Dist 2002-08-27 21:06:52.000000000 +0900
-+++ glibc-2.3.1/sysdeps/arm/Dist 2003-03-01 00:29:42.000000000 +0900
-@@ -1,2 +1,3 @@
- ieee754.h
- bits/link.h
-+libgcc-compat.c
---- glibc-2.3.1.old/sysdeps/arm/Makefile 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/arm/Makefile 2003-03-01 00:29:42.000000000 +0900
-@@ -0,0 +1,7 @@
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- glibc-2.3.1.old/sysdeps/arm/Versions 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/arm/Versions 2003-03-01 18:22:10.000000000 +0900
-@@ -0,0 +1,16 @@
-+libc {
-+ GLIBC_2.0 {
-+ # Functions from libgcc.
-+ __ashldi3; __ashrdi3;
-+ __cmpdi2;
-+ __divsi3;
-+ __fixdfdi;
-+ __floatdidf;
-+ __floatdisf;
-+ __modsi3;
-+ __muldi3;
-+ __ucmpdi2;
-+ __udivsi3;
-+ __umodsi3;
-+ }
-+}
---- glibc-2.3.1.old/sysdeps/arm/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/arm/libgcc-compat.c 2003-03-02 19:40:20.000000000 +0900
-@@ -0,0 +1,111 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by GOTO Masanori <gotom@debian.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int64_t __ashldi3 (int64_t, int32_t);
-+int64_t __ashldi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashldi3 (u, b);
-+}
-+symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0);
-+
-+extern int64_t __ashrdi3 (int64_t, int32_t);
-+int32_t __ashrdi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashrdi3 (u, b);
-+}
-+symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0);
-+
-+extern int32_t __cmpdi2 (int64_t, int64_t);
-+int32_t __cmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __cmpdi2 (u, v);
-+}
-+symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0);
-+
-+extern int32_t __divsi3 (int32_t, int32_t);
-+int32_t __divsi3_internal (int32_t u, int32_t v)
-+{
-+ return __divsi3 (u, v);
-+}
-+symbol_version (__divsi3_internal, __divsi3, GLIBC_2.0);
-+
-+extern int64_t __fixdfdi (double);
-+int64_t __fixdfdi_internal (double d)
-+{
-+ return __fixdfdi (d);
-+}
-+symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0);
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+extern float __floatdisf (int64_t);
-+float __floatdisf_internal (int64_t u)
-+{
-+ return __floatdisf (u);
-+}
-+symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0);
-+
-+extern int32_t __modsi3 (int32_t, int32_t);
-+int32_t __modsi3_internal (int32_t u, int32_t v)
-+{
-+ return __modsi3 (u, v);
-+}
-+symbol_version (__modsi3_internal, __modsi3, GLIBC_2.0);
-+
-+extern int64_t __muldi3 (int64_t, int64_t);
-+int64_t __muldi3_internal (int64_t u, int64_t v)
-+{
-+ return __muldi3 (u, v);
-+}
-+symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0);
-+
-+extern int32_t __ucmpdi2 (int64_t, int64_t);
-+int32_t __ucmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __ucmpdi2 (u, v);
-+}
-+symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0);
-+
-+extern int32_t __udivsi3 (int32_t, int32_t);
-+int32_t __udivsi3_internal (int32_t u, int32_t v)
-+{
-+ return __udivsi3 (u, v);
-+}
-+symbol_version (__udivsi3_internal, __udivsi3, GLIBC_2.0);
-+
-+extern int32_t __umodsi3 (int32_t, int32_t);
-+int32_t __umodsi3_internal (int32_t u, int32_t v)
-+{
-+ return __umodsi3 (u, v);
-+}
-+symbol_version (__umodsi3_internal, __umodsi3, GLIBC_2.0);
-+
-+#endif
---- glibc-2.3.1.old/sysdeps/ia64/Makefile 2002-05-15 05:46:15.000000000 +0900
-+++ glibc-2.3.1/sysdeps/ia64/Makefile 2003-03-04 00:51:34.000000000 +0900
-@@ -12,8 +12,8 @@
-
- ifeq (yes,$(build-shared))
- # Compatibility
--sysdep_routines += ia64libgcc
--shared-only-routines += ia64libgcc
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
- endif
- endif
-
---- glibc-2.3.1.old/sysdeps/ia64/Versions 2002-05-03 16:00:46.000000000 +0900
-+++ glibc-2.3.1/sysdeps/ia64/Versions 2003-03-04 01:14:39.000000000 +0900
-@@ -10,5 +10,9 @@
- # Functions from libgcc.
- __divtf3; __divdf3; __divsf3; __divdi3; __moddi3; __udivdi3; __umoddi3;
- __multi3;
-+ __divsi3;
-+ __modsi3;
-+ __udivsi3;
-+ __umodsi3;
- }
- }
---- glibc-2.3.1.old/sysdeps/ia64/ia64libgcc.S 2002-05-15 05:46:15.000000000 +0900
-+++ glibc-2.3.1/sysdeps/ia64/ia64libgcc.S 2003-03-04 00:51:34.000000000 +0900
-@@ -1,350 +0,0 @@
--/* From the Intel IA-64 Optimization Guide, choose the minimum latency
-- alternative. */
--
--#include <sysdep.h>
--#undef ret
--
--#include <shlib-compat.h>
--
--#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6)
--
--/* __divtf3
-- Compute a 80-bit IEEE double-extended quotient.
-- farg0 holds the dividend. farg1 holds the divisor. */
--
--ENTRY(___divtf3)
-- cmp.eq p7, p0 = r0, r0
-- frcpa.s0 f10, p6 = farg0, farg1
-- ;;
--(p6) cmp.ne p7, p0 = r0, r0
-- .pred.rel.mutex p6, p7
--(p6) fnma.s1 f11 = farg1, f10, f1
--(p6) fma.s1 f12 = farg0, f10, f0
-- ;;
--(p6) fma.s1 f13 = f11, f11, f0
--(p6) fma.s1 f14 = f11, f11, f11
-- ;;
--(p6) fma.s1 f11 = f13, f13, f11
--(p6) fma.s1 f13 = f14, f10, f10
-- ;;
--(p6) fma.s1 f10 = f13, f11, f10
--(p6) fnma.s1 f11 = farg1, f12, farg0
-- ;;
--(p6) fma.s1 f11 = f11, f10, f12
--(p6) fnma.s1 f12 = farg1, f10, f1
-- ;;
--(p6) fma.s1 f10 = f12, f10, f10
--(p6) fnma.s1 f12 = farg1, f11, farg0
-- ;;
--(p6) fma.s0 fret0 = f12, f10, f11
--(p7) mov fret0 = f10
-- br.ret.sptk rp
--END(___divtf3)
-- .symver ___divtf3, __divtf3@GLIBC_2.2
--
--/* __divdf3
-- Compute a 64-bit IEEE double quotient.
-- farg0 holds the dividend. farg1 holds the divisor. */
--
--ENTRY(___divdf3)
-- cmp.eq p7, p0 = r0, r0
-- frcpa.s0 f10, p6 = farg0, farg1
-- ;;
--(p6) cmp.ne p7, p0 = r0, r0
-- .pred.rel.mutex p6, p7
--(p6) fmpy.s1 f11 = farg0, f10
--(p6) fnma.s1 f12 = farg1, f10, f1
-- ;;
--(p6) fma.s1 f11 = f12, f11, f11
--(p6) fmpy.s1 f13 = f12, f12
-- ;;
--(p6) fma.s1 f10 = f12, f10, f10
--(p6) fma.s1 f11 = f13, f11, f11
-- ;;
--(p6) fmpy.s1 f12 = f13, f13
--(p6) fma.s1 f10 = f13, f10, f10
-- ;;
--(p6) fma.d.s1 f11 = f12, f11, f11
--(p6) fma.s1 f10 = f12, f10, f10
-- ;;
--(p6) fnma.d.s1 f8 = farg1, f11, farg0
-- ;;
--(p6) fma.d fret0 = f8, f10, f11
--(p7) mov fret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___divdf3)
-- .symver ___divdf3, __divdf3@GLIBC_2.2
--
--/* __divsf3
-- Compute a 32-bit IEEE float quotient.
-- farg0 holds the dividend. farg1 holds the divisor. */
--
--ENTRY(___divsf3)
-- cmp.eq p7, p0 = r0, r0
-- frcpa.s0 f10, p6 = farg0, farg1
-- ;;
--(p6) cmp.ne p7, p0 = r0, r0
-- .pred.rel.mutex p6, p7
--(p6) fmpy.s1 f8 = farg0, f10
--(p6) fnma.s1 f9 = farg1, f10, f1
-- ;;
--(p6) fma.s1 f8 = f9, f8, f8
--(p6) fmpy.s1 f9 = f9, f9
-- ;;
--(p6) fma.s1 f8 = f9, f8, f8
--(p6) fmpy.s1 f9 = f9, f9
-- ;;
--(p6) fma.d.s1 f10 = f9, f8, f8
-- ;;
--(p6) fnorm.s.s0 fret0 = f10
--(p7) mov fret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___divsf3)
-- .symver ___divsf3, __divsf3@GLIBC_2.2
--
--/* __divdi3
-- Compute a 64-bit integer quotient.
-- in0 holds the dividend. in1 holds the divisor. */
--
--ENTRY(___divdi3)
-- .regstk 2,0,0,0
-- /* Transfer inputs to FP registers. */
-- setf.sig f8 = in0
-- setf.sig f9 = in1
-- ;;
-- /* Convert the inputs to FP, so that they won't be treated as
-- unsigned. */
-- fcvt.xf f8 = f8
-- fcvt.xf f9 = f9
-- ;;
-- /* Compute the reciprocal approximation. */
-- frcpa.s1 f10, p6 = f8, f9
-- ;;
-- /* 3 Newton-Raphson iterations. */
--(p6) fnma.s1 f11 = f9, f10, f1
--(p6) fmpy.s1 f12 = f8, f10
-- ;;
--(p6) fmpy.s1 f13 = f11, f11
--(p6) fma.s1 f12 = f11, f12, f12
-- ;;
--(p6) fma.s1 f10 = f11, f10, f10
--(p6) fma.s1 f11 = f13, f12, f12
-- ;;
--(p6) fma.s1 f10 = f13, f10, f10
--(p6) fnma.s1 f12 = f9, f11, f8
-- ;;
--(p6) fma.s1 f10 = f12, f10, f11
-- ;;
-- /* Round quotient to an integer. */
-- fcvt.fx.trunc.s1 f10 = f10
-- ;;
-- /* Transfer result to GP registers. */
-- getf.sig ret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___divdi3)
-- .symver ___divdi3, __divdi3@GLIBC_2.2
--
--/* __moddi3
-- Compute a 64-bit integer modulus.
-- in0 holds the dividend (a). in1 holds the divisor (b). */
--
--ENTRY(___moddi3)
-- .regstk 2,0,0,0
-- /* Transfer inputs to FP registers. */
-- setf.sig f14 = in0
-- setf.sig f9 = in1
-- ;;
-- /* Convert the inputs to FP, so that they won't be treated as
-- unsigned. */
-- fcvt.xf f8 = f14
-- fcvt.xf f9 = f9
-- ;;
-- /* Compute the reciprocal approximation. */
-- frcpa.s1 f10, p6 = f8, f9
-- ;;
-- /* 3 Newton-Raphson iterations. */
--(p6) fmpy.s1 f12 = f8, f10
--(p6) fnma.s1 f11 = f9, f10, f1
-- ;;
--(p6) fma.s1 f12 = f11, f12, f12
--(p6) fmpy.s1 f13 = f11, f11
-- ;;
--(p6) fma.s1 f10 = f11, f10, f10
--(p6) fma.s1 f11 = f13, f12, f12
-- ;;
-- sub in1 = r0, in1
--(p6) fma.s1 f10 = f13, f10, f10
--(p6) fnma.s1 f12 = f9, f11, f8
-- ;;
-- setf.sig f9 = in1
--(p6) fma.s1 f10 = f12, f10, f11
-- ;;
-- fcvt.fx.trunc.s1 f10 = f10
-- ;;
-- /* r = q * (-b) + a */
-- xma.l f10 = f10, f9, f14
-- ;;
-- /* Transfer result to GP registers. */
-- getf.sig ret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___moddi3)
-- .symver ___moddi3, __moddi3@GLIBC_2.2
--
--/* __udivdi3
-- Compute a 64-bit unsigned integer quotient.
-- in0 holds the dividend. in1 holds the divisor. */
--
--ENTRY(___udivdi3)
-- .regstk 2,0,0,0
-- /* Transfer inputs to FP registers. */
-- setf.sig f8 = in0
-- setf.sig f9 = in1
-- ;;
-- /* Convert the inputs to FP, to avoid FP software-assist faults. */
-- fcvt.xuf.s1 f8 = f8
-- fcvt.xuf.s1 f9 = f9
-- ;;
-- /* Compute the reciprocal approximation. */
-- frcpa.s1 f10, p6 = f8, f9
-- ;;
-- /* 3 Newton-Raphson iterations. */
--(p6) fnma.s1 f11 = f9, f10, f1
--(p6) fmpy.s1 f12 = f8, f10
-- ;;
--(p6) fmpy.s1 f13 = f11, f11
--(p6) fma.s1 f12 = f11, f12, f12
-- ;;
--(p6) fma.s1 f10 = f11, f10, f10
--(p6) fma.s1 f11 = f13, f12, f12
-- ;;
--(p6) fma.s1 f10 = f13, f10, f10
--(p6) fnma.s1 f12 = f9, f11, f8
-- ;;
--(p6) fma.s1 f10 = f12, f10, f11
-- ;;
-- /* Round quotient to an unsigned integer. */
-- fcvt.fxu.trunc.s1 f10 = f10
-- ;;
-- /* Transfer result to GP registers. */
-- getf.sig ret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___udivdi3)
-- .symver ___udivdi3, __udivdi3@GLIBC_2.2
--
--/* __umoddi3
-- Compute a 64-bit unsigned integer modulus.
-- in0 holds the dividend (a). in1 holds the divisor (b). */
--
--ENTRY(___umoddi3)
-- .regstk 2,0,0,0
-- /* Transfer inputs to FP registers. */
-- setf.sig f14 = in0
-- setf.sig f9 = in1
-- ;;
-- /* Convert the inputs to FP, to avoid FP software assist faults. */
-- fcvt.xuf.s1 f8 = f14
-- fcvt.xuf.s1 f9 = f9
-- ;;
-- /* Compute the reciprocal approximation. */
-- frcpa.s1 f10, p6 = f8, f9
-- ;;
-- /* 3 Newton-Raphson iterations. */
--(p6) fmpy.s1 f12 = f8, f10
--(p6) fnma.s1 f11 = f9, f10, f1
-- ;;
--(p6) fma.s1 f12 = f11, f12, f12
--(p6) fmpy.s1 f13 = f11, f11
-- ;;
--(p6) fma.s1 f10 = f11, f10, f10
--(p6) fma.s1 f11 = f13, f12, f12
-- ;;
-- sub in1 = r0, in1
--(p6) fma.s1 f10 = f13, f10, f10
--(p6) fnma.s1 f12 = f9, f11, f8
-- ;;
-- setf.sig f9 = in1
--(p6) fma.s1 f10 = f12, f10, f11
-- ;;
-- /* Round quotient to an unsigned integer. */
-- fcvt.fxu.trunc.s1 f10 = f10
-- ;;
-- /* r = q * (-b) + a */
-- xma.l f10 = f10, f9, f14
-- ;;
-- /* Transfer result to GP registers. */
-- getf.sig ret0 = f10
-- br.ret.sptk rp
-- ;;
--END(___umoddi3)
-- .symver ___umoddi3, __umoddi3@GLIBC_2.2
--
--/* __multi3
-- Compute a 128-bit multiply of 128-bit multiplicands.
-- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */
--
--ENTRY(___multi3)
-- .regstk 4,0,0,0
-- setf.sig f6 = in1
-- movl r19 = 0xffffffff
-- setf.sig f7 = in2
-- ;;
-- and r14 = r19, in0
-- ;;
-- setf.sig f10 = r14
-- and r14 = r19, in2
-- xmpy.l f9 = f6, f7
-- ;;
-- setf.sig f6 = r14
-- shr.u r14 = in0, 32
-- ;;
-- setf.sig f7 = r14
-- shr.u r14 = in2, 32
-- ;;
-- setf.sig f8 = r14
-- xmpy.l f11 = f10, f6
-- xmpy.l f6 = f7, f6
-- ;;
-- getf.sig r16 = f11
-- xmpy.l f7 = f7, f8
-- ;;
-- shr.u r14 = r16, 32
-- and r16 = r19, r16
-- getf.sig r17 = f6
-- setf.sig f6 = in0
-- ;;
-- setf.sig f11 = r14
-- getf.sig r21 = f7
-- setf.sig f7 = in3
-- ;;
-- xma.l f11 = f10, f8, f11
-- xma.l f6 = f6, f7, f9
-- ;;
-- getf.sig r18 = f11
-- ;;
-- add r18 = r18, r17
-- ;;
-- and r15 = r19, r18
-- cmp.ltu p7, p6 = r18, r17
-- ;;
-- getf.sig r22 = f6
--(p7) adds r14 = 1, r19
-- ;;
--(p7) add r21 = r21, r14
-- shr.u r14 = r18, 32
-- shl r15 = r15, 32
-- ;;
-- add r20 = r21, r14
-- ;;
-- add ret0 = r15, r16
-- add ret1 = r22, r20
-- br.ret.sptk rp
-- ;;
--END(___multi3)
-- .symver ___multi3, __multi3@GLIBC_2.2
--
--#endif
---- glibc-2.3.1.old/sysdeps/ia64/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/ia64/libgcc-compat.c 2003-03-04 02:24:15.000000000 +0900
-@@ -0,0 +1,112 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+
-+#include <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6)
-+
-+typedef int int128_t __attribute__((__mode__(TI)));
-+
-+extern long double __divtf3 (long double, long double) attribute_hidden;
-+long double INTUSE (__divtf3) (long double x, long double y)
-+{
-+ return __divtf3 (x, y);
-+}
-+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2);
-+
-+extern double __divdf3 (double, double) attribute_hidden;
-+double INTUSE (__divdf3) (double x, double y)
-+{
-+ return __divdf3 (x, y);
-+}
-+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2);
-+
-+extern float __divsf3 (float, float) attribute_hidden;
-+float INTUSE (__divsf3) (float x, float y)
-+{
-+ return __divsf3 (x, y);
-+}
-+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2);
-+
-+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden;
-+int64_t INTUSE (__divdi3) (int64_t x, int64_t y)
-+{
-+ return __divdi3 (x, y);
-+}
-+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2);
-+
-+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden;
-+int64_t INTUSE (__moddi3) (int64_t x, int64_t y)
-+{
-+ return __moddi3 (x, y);
-+}
-+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2);
-+
-+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden;
-+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y)
-+{
-+ return __udivdi3 (x, y);
-+}
-+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2);
-+
-+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden;
-+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y)
-+{
-+ return __umoddi3 (x, y);
-+}
-+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2);
-+
-+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden;
-+int128_t INTUSE (__multi3) (int128_t x, int128_t y)
-+{
-+ return __multi3 (x, y);
-+}
-+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2);
-+
-+extern int64_t __divsi3 (int64_t, int64_t) attribute_hidden;
-+int64_t INTUSE (__divsi3) (int64_t x, int64_t y)
-+{
-+ return __divsi3 (x, y);
-+}
-+symbol_version (INTUSE (__divsi3), __divsi3, GLIBC_2.2);
-+
-+extern int64_t __modsi3 (int64_t, int64_t) attribute_hidden;
-+int64_t INTUSE (__modsi3) (int64_t x, int64_t y)
-+{
-+ return __modsi3 (x, y);
-+}
-+symbol_version (INTUSE (__modsi3), __modsi3, GLIBC_2.2);
-+
-+extern uint64_t __udivsi3 (uint64_t, uint64_t) attribute_hidden;
-+uint64_t INTUSE (__udivsi3) (uint64_t x, uint64_t y)
-+{
-+ return __udivsi3 (x, y);
-+}
-+symbol_version (INTUSE (__udivsi3), __udivsi3, GLIBC_2.2);
-+
-+extern uint64_t __umodsi3 (uint64_t, uint64_t) attribute_hidden;
-+uint64_t INTUSE (__umodsi3) (uint64_t x, uint64_t y)
-+{
-+ return __umodsi3 (x, y);
-+}
-+symbol_version (INTUSE (__umodsi3), __umodsi3, GLIBC_2.2);
-+
-+#endif
---- glibc-2.3.1.old/sysdeps/m68k/Deps 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/m68k/Deps 2003-03-01 00:29:42.000000000 +0900
-@@ -0,0 +1 @@
-+libgcc-compat.c
---- glibc-2.3.1.old/sysdeps/m68k/Makefile 2003-02-27 19:29:49.000000000 +0900
-+++ glibc-2.3.1/sysdeps/m68k/Makefile 2003-03-01 00:29:42.000000000 +0900
-@@ -45,3 +45,11 @@
- # Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid
- # possible linkage problems.
- CFLAGS-.oS += -fPIC
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- glibc-2.3.1.old/sysdeps/m68k/Versions 2000-06-15 15:54:28.000000000 +0900
-+++ glibc-2.3.1/sysdeps/m68k/Versions 2003-03-02 01:12:58.000000000 +0900
-@@ -2,5 +2,13 @@
- GLIBC_2.0 {
- # Functions from libgcc.
- __divdi3; __moddi3; __udivdi3; __umoddi3;
-+ __ashldi3;
-+ __ashrdi3;
-+ __fixdfdi;
-+ __fixsfdi;
-+ __fixunsdfdi;
-+ __fixunssfdi;
-+ __floatdidf;
-+ __floatdisf;
- }
- }
---- glibc-2.3.1.old/sysdeps/m68k/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/m68k/libgcc-compat.c 2003-03-02 13:26:49.000000000 +0900
-@@ -0,0 +1,83 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by GOTO Masanori <gotom@debian.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int64_t __ashldi3 (int64_t, int32_t);
-+int64_t __ashldi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashldi3 (u, b);
-+}
-+symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0);
-+
-+extern int64_t __ashrdi3 (int64_t, int32_t);
-+int64_t __ashrdi3_internal (int64_t u, int32_t b)
-+{
-+ return __ashrdi3 (u, b);
-+}
-+symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0);
-+
-+extern int64_t __fixdfdi (double);
-+int64_t __fixdfdi_internal (double d)
-+{
-+ return __fixdfdi (d);
-+}
-+symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixsfdi (float);
-+int64_t __fixsfdi_internal (float d)
-+{
-+ return __fixsfdi (d);
-+}
-+symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunsdfdi (double);
-+int64_t __fixunsdfdi_internal (double d)
-+{
-+ return __fixunsdfdi (d);
-+}
-+symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunssfdi (float);
-+int64_t __fixunssfdi_internal (float d)
-+{
-+ return __fixunssfdi (d);
-+}
-+symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0);
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+extern float __floatdisf (int64_t);
-+float __floatdisf_internal (int64_t u)
-+{
-+ return __floatdisf (u);
-+}
-+symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0);
-+
-+#endif
---- glibc-2.3.1.old/sysdeps/s390/s390-32/Dist 2001-03-27 14:14:38.000000000 +0900
-+++ glibc-2.3.1/sysdeps/s390/s390-32/Dist 2003-03-02 11:09:37.000000000 +0900
-@@ -1 +1,2 @@
- s390-mcount.S
-+libgcc-compat.c
---- glibc-2.3.1.old/sysdeps/s390/s390-32/Makefile 2002-09-19 15:42:09.000000000 +0900
-+++ glibc-2.3.1/sysdeps/s390/s390-32/Makefile 2003-03-02 11:09:11.000000000 +0900
-@@ -9,3 +9,11 @@
- CFLAGS-dl-load.c += -Wno-unused
- CFLAGS-dl-reloc.c += -Wno-unused
- endif
-+
-+ifeq ($(subdir),csu)
-+ifeq (yes,$(build-shared))
-+# Compatibility
-+sysdep_routines += libgcc-compat
-+shared-only-routines += libgcc-compat
-+endif
-+endif
---- glibc-2.3.1.old/sysdeps/s390/s390-32/Versions 2001-03-16 17:15:07.000000000 +0900
-+++ glibc-2.3.1/sysdeps/s390/s390-32/Versions 2003-03-02 11:08:03.000000000 +0900
-@@ -2,5 +2,13 @@
- GLIBC_2.0 {
- # Functions from libgcc.
- __divdi3; __moddi3; __udivdi3; __umoddi3;
-+ __cmpdi2;
-+ __fixdfdi;
-+ __fixsfdi;
-+ __fixunsdfdi;
-+ __fixunssfdi;
-+ __floatdidf;
-+ __floatdisf;
-+ __ucmpdi2;
- }
- }
---- glibc-2.3.1.old/sysdeps/s390/s390-32/libgcc-compat.c 1970-01-01 09:00:00.000000000 +0900
-+++ glibc-2.3.1/sysdeps/s390/s390-32/libgcc-compat.c 2003-03-02 19:42:19.000000000 +0900
-@@ -0,0 +1,83 @@
-+/* pre-.hidden libgcc compatibility
-+ Copyright (C) 2003 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by GOTO Masanori <gotom@debian.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.
-+
-+ 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 <stdint.h>
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-+
-+extern int32_t __cmpdi2 (int64_t, int64_t);
-+int32_t __cmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __cmpdi2 (u, v);
-+}
-+symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0);
-+
-+extern int64_t __fixdfdi (double);
-+int64_t __fixdfdi_internal (double d)
-+{
-+ return __fixdfdi (d);
-+}
-+symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixsfdi (float);
-+int64_t __fixsfdi_internal (float d)
-+{
-+ return __fixsfdi (d);
-+}
-+symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunsdfdi (double);
-+int64_t __fixunsdfdi_internal (double d)
-+{
-+ return __fixunsdfdi (d);
-+}
-+symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0);
-+
-+extern int64_t __fixunssfdi (float);
-+int64_t __fixunssfdi_internal (float d)
-+{
-+ return __fixunssfdi (d);
-+}
-+symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0);
-+
-+extern double __floatdidf (int64_t);
-+double __floatdidf_internal (int64_t u)
-+{
-+ return __floatdidf (u);
-+}
-+symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0);
-+
-+extern float __floatdisf (int64_t);
-+float __floatdisf_internal (int64_t u)
-+{
-+ return __floatdisf (u);
-+}
-+symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0);
-+
-+extern int32_t __ucmpdi2 (int64_t, int64_t);
-+int32_t __ucmpdi2_internal (int64_t u, int64_t v)
-+{
-+ return __ucmpdi2 (u, v);
-+}
-+symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0);
-+
-+#endif
diff --git a/packages/glibc/glibc-2.3.2/librt-mips.patch b/packages/glibc/glibc-2.3.2/librt-mips.patch
deleted file mode 100644
index 3c8f2b8c4e..0000000000
--- a/packages/glibc/glibc-2.3.2/librt-mips.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- sysdeps/unix/sysv/linux/mips/Versions.orig Tue Sep 24 15:56:55 2002
-+++ sysdeps/unix/sysv/linux/mips/Versions Tue Sep 24 15:49:27 2002
-@@ -34,3 +34,9 @@
- _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
- }
- }
-+librt {
-+ GLIBC_2.0 {
-+ # c*
-+ clock_gettime; clock_settime;
-+ }
-+}
diff --git a/packages/glibc/glibc-2.3.2/lo_LA.UTF-8_not_supported.patch b/packages/glibc/glibc-2.3.2/lo_LA.UTF-8_not_supported.patch
deleted file mode 100644
index 8e10dacae5..0000000000
--- a/packages/glibc/glibc-2.3.2/lo_LA.UTF-8_not_supported.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- localedata/SUPPORTED 26 Jun 2003 07:29:43 -0000 1.59
-+++ localedata/SUPPORTED 30 Aug 2003 15:51:20 -0000
-@@ -113,7 +113,6 @@
- ko_KR.EUC-KR/EUC-KR \
- ko_KR.UTF-8/UTF-8 \
- kw_GB/ISO-8859-1 \
--lo_LA/UTF-8 \
- lt_LT/ISO-8859-13 \
- lv_LV/ISO-8859-13 \
- mi_NZ/ISO-8859-13 \
diff --git a/packages/glibc/glibc-2.3.2/locale-es_AR.patch b/packages/glibc/glibc-2.3.2/locale-es_AR.patch
deleted file mode 100644
index fd1d127f81..0000000000
--- a/packages/glibc/glibc-2.3.2/locale-es_AR.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- localedata/locales/es_AR~ 2000/10/26 23:22:55 1.10
-+++ localedata/locales/es_AR 2001/10/07 20:56:18
-@@ -80,8 +80,8 @@
-
- LC_NUMERIC
- decimal_point "<U002C>"
--thousands_sep ""
--grouping 0;0
-+thousands_sep "<U002E>"
-+grouping 3;3
- END LC_NUMERIC
-
- LC_TIME
diff --git a/packages/glibc/glibc-2.3.2/locales-stuff.patch b/packages/glibc/glibc-2.3.2/locales-stuff.patch
deleted file mode 100644
index 363b00f68b..0000000000
--- a/packages/glibc/glibc-2.3.2/locales-stuff.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- glibc-2.2.5.orig/intl/locale.alias Sun Jul 22 16:24:50 2001
-+++ glibc-2.2.5/intl/locale.alias Sun Mar 10 23:00:09 2002
-@@ -65,7 +65,7 @@
- polish pl_PL.ISO-8859-2
- portuguese pt_PT.ISO-8859-1
- romanian ro_RO.ISO-8859-2
--russian ru_RU.ISO-8859-5
-+russian ru_RU.KOI8-R
- slovak sk_SK.ISO-8859-2
- slovene sl_SI.ISO-8859-2
- slovenian sl_SI.ISO-8859-2
---- glibc-2.2.5.orig/locale/programs/ld-collate.c Sun Mar 10 21:53:22 2002
-+++ glibc-2.2.5/locale/programs/ld-collate.c Sun Mar 10 23:00:08 2002
-@@ -3491,8 +3491,17 @@
- }
- else if (arg != NULL)
- {
-- symstr = arg->val.str.startmb;
-- symlen = arg->val.str.lenmb;
-+ if (arg)
-+ {
-+ symstr = arg->val.str.startmb;
-+ symlen = arg->val.str.lenmb;
-+ }
-+ else
-+ {
-+ lr_error (ldfile, _("%s: bad symbol <%s"), "LC_COLLATE",
-+ ldfile->token.val.str.startmb);
-+ break;
-+ }
- }
- else
- {
---- glibc-2.2.5.orig/localedata/locales/de_CH Thu Dec 20 10:51:20 2001
-+++ glibc-2.2.5/localedata/locales/de_CH Sun Mar 10 23:00:09 2002
-@@ -114,7 +114,7 @@
- "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
- "<U0044><U0065><U007A><U0065><U006D><U0062><U0065><U0072>"
- d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
--d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
-+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
- t_fmt "<U0025><U0054>"
- am_pm "";""
- t_fmt_ampm ""
diff --git a/packages/glibc/glibc-2.3.2/locales-supported.patch b/packages/glibc/glibc-2.3.2/locales-supported.patch
deleted file mode 100644
index 1603bf2551..0000000000
--- a/packages/glibc/glibc-2.3.2/locales-supported.patch
+++ /dev/null
@@ -1,159 +0,0 @@
---- localedata/SUPPORTED.org 2003-02-17 11:07:03.000000000 +0900
-+++ localedata/SUPPORTED 2003-02-17 11:13:32.000000000 +0900
-@@ -30,6 +30,7 @@
- cs_CZ/ISO-8859-2 \
- cy_GB/ISO-8859-14 \
- da_DK/ISO-8859-1 \
-+da_DK.ISO-8859-15/ISO-8859-15 \
- de_AT/ISO-8859-1 \
- de_AT@euro/ISO-8859-15 \
- de_BE/ISO-8859-1 \
-@@ -48,6 +49,7 @@
- en_DK/ISO-8859-1 \
- en_GB/ISO-8859-1 \
- en_GB.UTF-8/UTF-8 \
-+en_GB.ISO-8859-15/ISO-8859-15 \
- en_HK/ISO-8859-1 \
- en_IE/ISO-8859-1 \
- en_IE@euro/ISO-8859-15 \
-@@ -57,6 +59,7 @@
- en_SG/ISO-8859-1 \
- en_US/ISO-8859-1 \
- en_US.UTF-8/UTF-8 \
-+en_US.ISO-8859-15/ISO-8859-15 \
- en_ZA/ISO-8859-1 \
- en_ZW/ISO-8859-1 \
- es_AR/ISO-8859-1 \
-@@ -150,6 +153,7 @@
- sv_FI/ISO-8859-1 \
- sv_FI@euro/ISO-8859-15 \
- sv_SE/ISO-8859-1 \
-+sv_SE.ISO-8859-15/ISO-8859-15 \
- ta_IN/UTF-8 \
- te_IN/UTF-8 \
- tg_TJ/KOI8-T \
-@@ -173,3 +177,124 @@
- zh_TW/BIG5 \
- zh_TW.EUC-TW/EUC-TW \
- zh_TW.UTF-8/UTF-8 \
-+ar_AE.UTF-8/UTF-8 \
-+ar_BH.UTF-8/UTF-8 \
-+ar_DZ.UTF-8/UTF-8 \
-+ar_EG.UTF-8/UTF-8 \
-+ar_IQ.UTF-8/UTF-8 \
-+ar_JO.UTF-8/UTF-8 \
-+ar_KW.UTF-8/UTF-8 \
-+ar_LB.UTF-8/UTF-8 \
-+ar_LY.UTF-8/UTF-8 \
-+ar_MA.UTF-8/UTF-8 \
-+ar_OM.UTF-8/UTF-8 \
-+ar_QA.UTF-8/UTF-8 \
-+ar_SA.UTF-8/UTF-8 \
-+ar_SD.UTF-8/UTF-8 \
-+ar_SY.UTF-8/UTF-8 \
-+ar_TN.UTF-8/UTF-8 \
-+ar_YE.UTF-8/UTF-8 \
-+be_BY.UTF-8/UTF-8 \
-+bg_BG.UTF-8/UTF-8 \
-+ca_ES.UTF-8/UTF-8 \
-+ca_ES.UTF-8@euro/UTF-8 \
-+cs_CZ.UTF-8/UTF-8 \
-+da_DK.UTF-8/UTF-8 \
-+de_AT.UTF-8/UTF-8 \
-+de_AT.UTF-8@euro/UTF-8 \
-+de_BE.UTF-8/UTF-8 \
-+de_BE.UTF-8@euro/UTF-8 \
-+de_CH.UTF-8/UTF-8 \
-+de_DE.UTF-8@euro/UTF-8 \
-+de_LU.UTF-8/UTF-8 \
-+de_LU.UTF-8@euro/UTF-8 \
-+en_AU.UTF-8/UTF-8 \
-+en_BW.UTF-8/UTF-8 \
-+en_CA.UTF-8/UTF-8 \
-+en_DK.UTF-8/UTF-8 \
-+en_HK.UTF-8/UTF-8 \
-+en_IE.UTF-8/UTF-8 \
-+en_IE.UTF-8@euro/UTF-8 \
-+en_NZ.UTF-8/UTF-8 \
-+en_PH.UTF-8/UTF-8 \
-+en_SG.UTF-8/UTF-8 \
-+en_ZA.UTF-8/UTF-8 \
-+en_ZW.UTF-8/UTF-8 \
-+es_AR.UTF-8/UTF-8 \
-+es_BO.UTF-8/UTF-8 \
-+es_CL.UTF-8/UTF-8 \
-+es_CO.UTF-8/UTF-8 \
-+es_CR.UTF-8/UTF-8 \
-+es_DO.UTF-8/UTF-8 \
-+es_EC.UTF-8/UTF-8 \
-+es_ES.UTF-8/UTF-8 \
-+es_ES.UTF-8@euro/UTF-8 \
-+es_GT.UTF-8/UTF-8 \
-+es_HN.UTF-8/UTF-8 \
-+es_MX.UTF-8/UTF-8 \
-+es_NI.UTF-8/UTF-8 \
-+es_PA.UTF-8/UTF-8 \
-+es_PE.UTF-8/UTF-8 \
-+es_PR.UTF-8/UTF-8 \
-+es_PY.UTF-8/UTF-8 \
-+es_SV.UTF-8/UTF-8 \
-+es_US.UTF-8/UTF-8 \
-+es_UY.UTF-8/UTF-8 \
-+es_VE.UTF-8/UTF-8 \
-+et_EE.UTF-8/UTF-8 \
-+eu_ES.UTF-8/UTF-8 \
-+eu_ES.UTF-8@euro/UTF-8 \
-+fi_FI.UTF-8/UTF-8 \
-+fi_FI.UTF-8@euro/UTF-8 \
-+fo_FO.UTF-8/UTF-8 \
-+fr_BE.UTF-8/UTF-8 \
-+fr_BE.UTF-8@euro/UTF-8 \
-+fr_CA.UTF-8/UTF-8 \
-+fr_CH.UTF-8/UTF-8 \
-+fr_FR.UTF-8@euro/UTF-8 \
-+fr_LU.UTF-8/UTF-8 \
-+fr_LU.UTF-8@euro/UTF-8 \
-+ga_IE.UTF-8/UTF-8 \
-+ga_IE.UTF-8@euro/UTF-8 \
-+gl_ES.UTF-8/UTF-8 \
-+gl_ES.UTF-8@euro/UTF-8 \
-+gv_GB.UTF-8/UTF-8 \
-+he_IL.UTF-8/UTF-8 \
-+hr_HR.UTF-8/UTF-8 \
-+hu_HU.UTF-8/UTF-8 \
-+id_ID.UTF-8/UTF-8 \
-+is_IS.UTF-8/UTF-8 \
-+it_CH.UTF-8/UTF-8 \
-+it_IT.UTF-8/UTF-8 \
-+it_IT.UTF-8@euro/UTF-8 \
-+iw_IL.UTF-8/UTF-8 \
-+kl_GL.UTF-8/UTF-8 \
-+kw_GB.UTF-8/UTF-8 \
-+lt_LT.UTF-8/UTF-8 \
-+lv_LV.UTF-8/UTF-8 \
-+mk_MK.UTF-8/UTF-8 \
-+ms_MY.UTF-8/UTF-8 \
-+mt_MT.UTF-8/UTF-8 \
-+nl_BE.UTF-8/UTF-8 \
-+nl_BE.UTF-8@euro/UTF-8 \
-+nl_NL.UTF-8/UTF-8 \
-+nl_NL.UTF-8@euro/UTF-8 \
-+nn_NO.UTF-8/UTF-8 \
-+no_NO.UTF-8/UTF-8 \
-+pl_PL.UTF-8/UTF-8 \
-+pt_BR.UTF-8/UTF-8 \
-+pt_PT.UTF-8/UTF-8 \
-+pt_PT.UTF-8@euro/UTF-8 \
-+ro_RO.UTF-8/UTF-8 \
-+ru_UA.UTF-8/UTF-8 \
-+sk_SK.UTF-8/UTF-8 \
-+sl_SI.UTF-8/UTF-8 \
-+sq_AL.UTF-8/UTF-8 \
-+sr_YU.UTF-8/UTF-8 \
-+sr_YU.UTF-8@cyrillic/UTF-8 \
-+sv_FI.UTF-8/UTF-8 \
-+sv_FI.UTF-8@euro/UTF-8 \
-+sv_SE.UTF-8/UTF-8 \
-+th_TH.UTF-8/UTF-8 \
-+tr_TR.UTF-8/UTF-8 \
-+uk_UA.UTF-8/UTF-8 \
diff --git a/packages/glibc/glibc-2.3.2/makeconfig.patch b/packages/glibc/glibc-2.3.2/makeconfig.patch
deleted file mode 100644
index 4365878e95..0000000000
--- a/packages/glibc/glibc-2.3.2/makeconfig.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- Makeconfig~ 2001/09/12 18:49:45 1.265
-+++ Makeconfig 2001/10/07 20:56:17
-@@ -532,10 +532,11 @@
- $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
- $(filter -Wl$(comma)-rpath-link=%,\
- $(sysdep-LDFLAGS)))))
-+ld_envlib_path = $(shell test x$$LD_LIBRARY_PATH = x || echo -n :$$LD_LIBRARY_PATH)
- run-program-prefix = $(if $(filter $(notdir $(built-program-file)),\
- $(tests-static)),, \
- $(elf-objpfx)$(rtld-installed-name) \
-- --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)))
-+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))$(ld_envlib_path))
- else
- run-program-prefix =
- endif
diff --git a/packages/glibc/glibc-2.3.2/noinfo.patch b/packages/glibc/glibc-2.3.2/noinfo.patch
deleted file mode 100644
index 6aa0e64d96..0000000000
--- a/packages/glibc/glibc-2.3.2/noinfo.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- glibc-2.3.2/manual/Makefile~noinfo
-+++ glibc-2.3.2/manual/Makefile
-@@ -25,7 +25,7 @@
- INSTALL_INFO = install-info
-
- .PHONY: all dvi pdf info html
--all: dvi
-+all:
- dvi: libc.dvi
- pdf: libc.pdf
-
-@@ -41,7 +41,7 @@
- TEXI2PDF = texi2dvi --pdf
-
- ifneq ($(strip $(MAKEINFO)),:)
--all: info
-+all:
- info: libc.info dir-add.info
- endif
-
-@@ -176,28 +176,14 @@
- -rm -f top-menu.texi chapters.texi
-
- .PHONY: install subdir_install installdirs install-data
--install-data subdir_install: install
-+install-data subdir_install:
- ifneq ($(strip $(MAKEINFO)),:)
- # There are two variants of install-info out there. The GNU version
- # knows about the INFO-DIR-SECTION tag, the Debian version doesn't.
- ifneq ($(OLD_DEBIAN_INSTALL_INFO),yes)
--install: $(inst_infodir)/libc.info dir-add.info
-- @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \
-- test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) $(inst_infodir)/libc.info;\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) dir-add.info;\
-- else : ; fi
-+install:
- else
--install: $(inst_infodir)/libc.info dir-add.info
-- @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \
-- test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) \
-- --section '^GNU Libraries:' 'GNU Libraries:' \
-- $(inst_infodir)/libc.info;\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) \
-- --section '^GNU C Library functions:' 'GNU C Library functions:' \
-- dir-add.info;\
-- else : ; fi
-+install:
- endif
- endif
- # Catchall implicit rule for other installation targets from the parent.
diff --git a/packages/glibc/glibc-2.3.2/nptl-pthread-once.patch b/packages/glibc/glibc-2.3.2/nptl-pthread-once.patch
deleted file mode 100644
index dc106b2982..0000000000
--- a/packages/glibc/glibc-2.3.2/nptl-pthread-once.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc-2.3.2/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S.orig 2003-10-03 15:54:00.000000000 -0400
-+++ glibc-2.3.2/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S 2003-10-03 15:52:31.000000000 -0400
-@@ -109,6 +109,7 @@ __pthread_once:
- movl $0, 4(%esp)
- movl %eax, (%esp)
- call __sigsetjmp@PLT
-+ testl %eax, %eax
- jne 7f
-
- leal 8(%esp), %eax
diff --git a/packages/glibc/glibc-2.3.2/nss_compat-shadow.patch b/packages/glibc/glibc-2.3.2/nss_compat-shadow.patch
deleted file mode 100644
index 1fc774aadb..0000000000
--- a/packages/glibc/glibc-2.3.2/nss_compat-shadow.patch
+++ /dev/null
@@ -1,128 +0,0 @@
---- nis/nss_compat/compat-spwd.c
-+++ nis/nss_compat/compat-spwd.c 2003/09/01 15:14:14
-@@ -435,7 +435,7 @@
- copy_spwd_changes (result, &pwd, p, plen);
- give_spwd_free (&pwd);
- /* We found the entry. */
-- return NSS_STATUS_RETURN;
-+ return NSS_STATUS_SUCCESS;
- }
-
- static enum nss_status
-@@ -539,13 +539,16 @@
- if (result->sp_namp[0] == '+' && result->sp_namp[1] != '\0'
- && result->sp_namp[1] != '@')
- {
-+ size_t len = strlen (result->sp_namp);
-+ char buf[len];
- enum nss_status status;
-
- /* Store the User in the blacklist for the "+" at the end of
- /etc/passwd */
-- blacklist_store_name (&result->sp_namp[1], ent);
-+ memcpy (buf, &result->sp_namp[1], len);
- status = getspnam_plususer (&result->sp_namp[1], result, ent,
- buffer, buflen, errnop);
-+ blacklist_store_name (buf, ent);
-
- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
- break;
-@@ -653,6 +656,9 @@
- return NSS_STATUS_TRYAGAIN;
- }
-
-+ /* Terminate the line for any case. */
-+ buffer[buflen - 1] = '\0';
-+
- /* Skip leading blanks. */
- while (isspace (*p))
- ++p;
-@@ -686,21 +692,8 @@
- if (result->sp_namp[0] == '-' && result->sp_namp[1] == '@'
- && result->sp_namp[2] != '\0')
- {
-- /* XXX Do not use fixed length buffers. */
-- char buf2[1024];
-- char *user, *host, *domain;
-- struct __netgrent netgrdata;
--
-- bzero (&netgrdata, sizeof (struct __netgrent));
-- __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
-- while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata,
-- buf2, sizeof (buf2), errnop))
-- {
-- if (user != NULL && user[0] != '-')
-- if (strcmp (user, name) == 0)
-- return NSS_STATUS_NOTFOUND;
-- }
-- __internal_endnetgrent (&netgrdata);
-+ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
-+ return NSS_STATUS_NOTFOUND;
- continue;
- }
-
-@@ -708,25 +701,18 @@
- if (result->sp_namp[0] == '+' && result->sp_namp[1] == '@'
- && result->sp_namp[2] != '\0')
- {
-- char *buf = strdupa (&result->sp_namp[2]);
-- int status;
-+ enum nss_status status;
-
-- ent->netgroup = TRUE;
-- ent->first = TRUE;
-- copy_spwd_changes (&ent->pwd, result, NULL, 0);
-+ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
-+ {
-+ status = getspnam_plususer (name, result, ent, buffer,
-+ buflen, errnop);
-
-- do
-- {
-- status = getspent_next_nss_netgr (name, result, ent, buf,
-- buffer, buflen, errnop);
-- if (status == NSS_STATUS_RETURN)
-- continue;
-+ if (status == NSS_STATUS_RETURN)
-+ continue;
-
-- if (status == NSS_STATUS_SUCCESS
-- && strcmp (result->sp_namp, name) == 0)
-- return NSS_STATUS_SUCCESS;
-- }
-- while (status == NSS_STATUS_SUCCESS);
-+ return status;
-+ }
- continue;
- }
-
-@@ -767,10 +753,12 @@
- status = getspnam_plususer (name, result, ent,
- buffer, buflen, errnop);
-
-- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-- return NSS_STATUS_NOTFOUND;
-- else
-- return status;
-+ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
-+ break;
-+ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
-+ return NSS_STATUS_NOTFOUND;
-+ else
-+ return status;
- }
- }
- return NSS_STATUS_SUCCESS;
-@@ -796,10 +784,8 @@
-
- result = internal_setspent (&ent, 0);
-
-- if (result != NSS_STATUS_SUCCESS)
-- return result;
--
-- result = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
-+ if (result == NSS_STATUS_SUCCESS)
-+ result = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
-
- internal_endspent (&ent);
-
diff --git a/packages/glibc/glibc-2.3.2/powerpc-sysconf.patch b/packages/glibc/glibc-2.3.2/powerpc-sysconf.patch
deleted file mode 100644
index 70860890d4..0000000000
--- a/packages/glibc/glibc-2.3.2/powerpc-sysconf.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- glibc-2.2.4/sysdeps/unix/sysv/linux/powerpc/getsysstats.c Wed Dec 31 16:00:00 1969
-+++ glibc-2.2.4-ds/sysdeps/unix/sysv/linux/powerpc/getsysstats.c Wed Jan 2 05:01:46 2002
-@@ -0,0 +1,36 @@
-+/* Determine various system internal values, Linux/PowerPC version.
-+ Copyright (C) 2001,2002 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ 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. */
-+
-+
-+/* We need to define a special parser for /proc/cpuinfo. */
-+#define GET_NPROCS_PARSER(FP, BUFFER, RESULT) \
-+ do \
-+ { \
-+ (RESULT) = 0; \
-+ /* Read all lines and count the lines starting with the string \
-+ "cpu model". We don't have to fear extremely long lines since \
-+ the kernel will not generate them. 8192 bytes are really \
-+ enough. */ \
-+ while (fgets_unlocked (BUFFER, sizeof (BUFFER), FP) != NULL) \
-+ if (strncmp (BUFFER, "cpu\t\t:", 6) == 0) \
-+ ++(RESULT); \
-+ } \
-+ while (0)
-+
-+#include <sysdeps/unix/sysv/linux/getsysstats.c>
diff --git a/packages/glibc/glibc-2.3.2/pthread-cleanup.patch b/packages/glibc/glibc-2.3.2/pthread-cleanup.patch
deleted file mode 100644
index 51c354be87..0000000000
--- a/packages/glibc/glibc-2.3.2/pthread-cleanup.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- linuxthreads/forward.c 2 Sep 2003 00:37:04 -0000 1.5
-+++ linuxthreads/forward.c 18 Sep 2003 23:36:32 -0000
-@@ -173,3 +173,7 @@
- 0)
-
- FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
-+
-+FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
-+
-+FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
---- linuxthreads/pthread.c 17 Sep 2003 09:39:16 -0000 1.130
-+++ linuxthreads/pthread.c 18 Sep 2003 23:36:32 -0000
-@@ -279,7 +279,9 @@
- .ptr_pthread_cleanup_upto = __pthread_cleanup_upto,
- .ptr_pthread_sigaction = __pthread_sigaction,
- .ptr_pthread_sigwait = __pthread_sigwait,
-- .ptr_pthread_raise = __pthread_raise
-+ .ptr_pthread_raise = __pthread_raise,
-+ .ptr__pthread_cleanup_push = _pthread_cleanup_push,
-+ .ptr__pthread_cleanup_pop = _pthread_cleanup_pop
- };
- #ifdef SHARED
- # define ptr_pthread_functions &__pthread_functions
---- linuxthreads/sysdeps/pthread/pthread-functions.h 10 Sep 2003 22:27:19 -0000 1.3
-+++ linuxthreads/sysdeps/pthread/pthread-functions.h 18 Sep 2003 23:36:33 -0000
-@@ -83,6 +83,11 @@
- int (*ptr_pthread_raise) (int sig);
- int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
- const struct timespec *);
-+ void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
-+ void (*routine)(void *), void * arg);
-+
-+ void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
-+ int execute);
- };
-
- /* Variable in libc.so. */
---- linuxthreads/sysdeps/pthread/bits/libc-lock.h 8 Aug 2003 07:40:17 -0000 1.31
-+++ linuxthreads/sysdeps/pthread/bits/libc-lock.h 18 Sep 2003 23:36:33 -0000
-@@ -265,18 +265,12 @@
- }
-
- #define __libc_cleanup_push(fct, arg) \
-- { struct _pthread_cleanup_buffer _buffer; \
-- int _avail = _pthread_cleanup_push != NULL; \
-- if (_avail) { \
-- _pthread_cleanup_push (&_buffer, (fct), (arg)); \
-- }
-+ { struct _pthread_cleanup_buffer _buffer; \
-+ __libc_maybe_call (_pthread_cleanup_push, (&_buffer, (fct), (arg)), 0)
-
- #define __libc_cleanup_pop(execute) \
-- if (_avail) { \
-- _pthread_cleanup_pop (&_buffer, execute); \
-- } \
-- }
--
-+ __libc_maybe_call (_pthread_cleanup_pop, (&_buffer, execute), 0); \
-+ }
-
- /* Create thread-specific key. */
- #define __libc_key_create(KEY, DESTRUCTOR) \
diff --git a/packages/glibc/glibc-2.3.2/revert-old-libio.patch b/packages/glibc/glibc-2.3.2/revert-old-libio.patch
deleted file mode 100644
index 780b52836c..0000000000
--- a/packages/glibc/glibc-2.3.2/revert-old-libio.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- libio/genops.c 7 May 2003 03:46:09 -0000 1.61
-+++ libio/genops.c 8 Jan 2003 06:38:52 -0000 1.60
-@@ -602,9 +602,12 @@
- INTDEF(_IO_init)
-
- void
--_IO_old_init (fp, flags)
-+_IO_no_init (fp, flags, orientation, wd, jmp)
- _IO_FILE *fp;
- int flags;
-+ int orientation;
-+ struct _IO_wide_data *wd;
-+ struct _IO_jump_t *jmp;
- {
- fp->_flags = _IO_MAGIC|flags;
- fp->_flags2 = 0;
-@@ -630,17 +633,6 @@
- if (fp->_lock != NULL)
- _IO_lock_init (*fp->_lock);
- #endif
--}
--
--void
--_IO_no_init (fp, flags, orientation, wd, jmp)
-- _IO_FILE *fp;
-- int flags;
-- int orientation;
-- struct _IO_wide_data *wd;
-- struct _IO_jump_t *jmp;
--{
-- _IO_old_init (fp, flags);
- fp->_mode = orientation;
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- if (orientation >= 0)
---- libio/libioP.h 7 May 2003 03:46:43 -0000 1.66
-+++ libio/libioP.h 27 Mar 2003 11:53:59 -0000 1.65
-@@ -479,7 +479,6 @@
- extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *));
- extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
- extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
--extern void _IO_old_init __P ((_IO_FILE *fp, int flags));
-
-
- #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
---- libio/oldiofdopen.c 7 May 2003 03:47:43 -0000 1.8
-+++ libio/oldiofdopen.c 26 Feb 2002 01:43:50 -0000 1.7
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,94,97,99,2000,2002,2003 Free Software Foundation, Inc.
-+/* Copyright (C) 1993,94,97,99,2000,2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -114,7 +114,7 @@
- #ifdef _IO_MTSAFE_IO
- new_f->fp.file._lock = &new_f->lock;
- #endif
-- _IO_old_init (&new_f->fp.file, 0);
-+ INTUSE(_IO_init) (&new_f->fp.file, 0);
- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
- _IO_old_file_init (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
---- libio/oldiofopen.c 7 May 2003 03:47:09 -0000 1.11
-+++ libio/oldiofopen.c 26 Feb 2002 01:43:50 -0000 1.10
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1993,1997,1999,2000,2002,2003 Free Software Foundation, Inc.
-+/* Copyright (C) 1993, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
-@@ -53,7 +53,7 @@
- #ifdef _IO_MTSAFE_IO
- new_f->fp.file._lock = &new_f->lock;
- #endif
-- _IO_old_init (&new_f->fp.file, 0);
-+ INTUSE(_IO_init) (&new_f->fp.file, 0);
- _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
- _IO_old_file_init (&new_f->fp);
- #if !_IO_UNIFIED_JUMPTABLES
diff --git a/packages/glibc/glibc-2.3.2/s390-tls.patch b/packages/glibc/glibc-2.3.2/s390-tls.patch
deleted file mode 100644
index d69ee2beab..0000000000
--- a/packages/glibc/glibc-2.3.2/s390-tls.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linuxthreads/sysdeps/s390/tls.h.bak 2003-03-23 08:59:35.000000000 +0000
-+++ linuxthreads/sysdeps/s390/tls.h 2003-03-23 09:47:49.000000000 +0000
-@@ -124,7 +124,7 @@
- # ifndef __ASSEMBLER__
-
- /* Get the thread descriptor definition. */
--# include <linuxthreads/descr.h>
-+//# include <linuxthreads/descr.h>
-
- # define NONTLS_INIT_TP \
- do { \
diff --git a/packages/glibc/glibc-2.3.2/sedscript.patch b/packages/glibc/glibc-2.3.2/sedscript.patch
deleted file mode 100644
index a204af9b4b..0000000000
--- a/packages/glibc/glibc-2.3.2/sedscript.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc-2.3.2-200304020432/scripts/output-format.sed~sedscript
-+++ glibc-2.3.2-200304020432/scripts/output-format.sed
-@@ -18,7 +18,6 @@
- s/\n//
- s/^\([^,]*\),\([^,]*\),B/OUTPUT_FORMAT(\1)/p
- s/^\([^,]*\),\([^,]*\),L/OUTPUT_FORMAT(\2)/p
--/,/s|^|*** BUG in libc/scripts/output-format.sed *** |p
- q
- : q
- s/"//g
diff --git a/packages/glibc/glibc-2.3.2/sparc64-fixups.patch b/packages/glibc/glibc-2.3.2/sparc64-fixups.patch
deleted file mode 100644
index 2b17c8608f..0000000000
--- a/packages/glibc/glibc-2.3.2/sparc64-fixups.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- glibc-2.2.3/elf/ldconfig.c~ Tue Mar 20 11:44:35 2001
-+++ glibc-2.2.3/elf/ldconfig.c Tue Apr 24 18:14:05 2001
-@@ -287,6 +287,26 @@
- dir_entries = entry;
- else if (ptr == NULL)
- prev->next = entry;
-+#ifdef __sparc__
-+#define MSUBDIR "64"
-+ if (ptr == NULL) {
-+ int si = strlen(entry->path) - strlen(MSUBDIR);
-+ if (strcmp (entry->path + (si <= 0 ? 0 : si), MSUBDIR) != 0) {
-+ /* Handle subdirectory later. */
-+ struct dir_entry *new_entry;
-+
-+ new_entry = xmalloc (sizeof (struct dir_entry));
-+ new_entry->path = xmalloc(strlen(entry->path)+strlen(MSUBDIR)+1);
-+ new_entry->flag = entry->flag;
-+ new_entry->next = NULL;
-+ sprintf(new_entry->path, "%s%s", entry->path, MSUBDIR);
-+ if (opt_verbose)
-+ printf("Adding implicit multilib directory:\n\t%s\n", new_entry->path);
-+ add_single_dir (new_entry, 0);
-+ }
-+ }
-+#undef MSUBDIR
-+#endif
- }
-
- /* Add one directory to the list of directories to process. */
diff --git a/packages/glibc/glibc-2.3.2/sparcv8-target.patch b/packages/glibc/glibc-2.3.2/sparcv8-target.patch
deleted file mode 100644
index f2dae8c15b..0000000000
--- a/packages/glibc/glibc-2.3.2/sparcv8-target.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- configure~ 2003-06-17 09:24:52.000000000 -0400
-+++ configure 2003-06-17 09:25:19.000000000 -0400
-@@ -1796,6 +1796,11 @@
- machine="powerpc"
- fi
-
-+# Force v8
-+if test "$machine" = sparc; then
-+ machine="sparcv8"
-+fi
-+
- # Braindead PowerPC box with absolutely no FPU.
- case "$machine-$host_os" in
- powerpc*-*soft)
---- configure.in~ 2003-06-17 09:24:55.000000000 -0400
-+++ configure.in 2003-06-17 09:25:29.000000000 -0400
-@@ -337,6 +337,11 @@
- machine="powerpc"
- fi
-
-+# Force v8
-+if test "$machine" = sparc; then
-+ machine="sparcv8"
-+fi
-+
- # Braindead PowerPC box with absolutely no FPU.
- case "$machine-$host_os" in
- powerpc*-*soft)
diff --git a/packages/glibc/glibc-2.3.2/syslog-backrev.patch b/packages/glibc/glibc-2.3.2/syslog-backrev.patch
deleted file mode 100644
index a3bed2e302..0000000000
--- a/packages/glibc/glibc-2.3.2/syslog-backrev.patch
+++ /dev/null
@@ -1,212 +0,0 @@
---- misc/syslog.c 2003-07-17 22:14:44.000000000 +0000
-+++ /skole/tjener/home0/jbailey/cvstree/libc/misc/syslog.c 2003-07-17 22:05:59.000000000 +0000
-@@ -41,7 +41,6 @@
- #include <fcntl.h>
- #include <paths.h>
- #include <stdio.h>
--#include <stdio_ext.h>
- #include <string.h>
- #include <time.h>
- #include <unistd.h>
-@@ -75,27 +74,9 @@
- static void openlog_internal(const char *, int, int) internal_function;
- static void closelog_internal(void);
- static void sigpipe_handler (int);
--
--
--struct cleanup_arg
--{
-- void *buf;
-- struct sigaction *oldaction;
--};
--
--static void
--cancel_handler (void *ptr)
--{
-- /* Restore the old signal handler. */
-- struct cleanup_arg *clarg = (struct cleanup_arg *) ptr;
--
-- if (clarg != NULL && clarg->oldaction != NULL)
-- __sigaction (SIGPIPE, clarg->oldaction, NULL);
--
-- /* Free the lock. */
-- __libc_lock_unlock (syslog_lock);
--}
--
-+#ifdef _LIBC_REENTRANT
-+static void cancel_handler (void *);
-+#endif
-
- /*
- * syslog, vsyslog --
-@@ -137,6 +118,7 @@
- size_t bufsize = 0;
- size_t prioff, msgoff;
- struct sigaction action, oldaction;
-+ struct sigaction *oldaction_ptr = NULL;
- int sigpipe;
- int saved_errno = errno;
- char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"];
-@@ -183,7 +165,6 @@
- }
- else
- {
-- __fsetlocking (f, FSETLOCKING_BYCALLER);
- prioff = fprintf (f, "<%d>", pri);
- (void) time (&now);
- #ifdef USE_IN_LIBIO
-@@ -201,12 +182,9 @@
- if (LogTag != NULL)
- fputs_unlocked (LogTag, f);
- if (LogStat & LOG_PID)
-- fprintf (f, "[%d]", (int) __getpid ());
-+ fprintf (f, "[%d]", __getpid ());
- if (LogTag != NULL)
-- {
-- putc_unlocked (':', f);
-- putc_unlocked (' ', f);
-- }
-+ putc_unlocked (':', f), putc_unlocked (' ', f);
-
- /* Restore errno for %m format. */
- __set_errno (saved_errno);
-@@ -234,22 +212,16 @@
- v->iov_base = (char *) "\n";
- v->iov_len = 1;
- }
--
-- __libc_cleanup_push (free, buf);
--
-- /* writev is a cancellation point. */
- (void)__writev(STDERR_FILENO, iov, v - iov + 1);
--
-- __libc_cleanup_pop (0);
- }
-
-+#ifdef _LIBC_REENTRANT
- /* Prepare for multiple users. We have to take care: open and
- write are cancellation points. */
-- struct cleanup_arg clarg;
-- clarg.buf = buf;
-- clarg.oldaction = NULL;
-- __libc_cleanup_push (cancel_handler, &clarg);
-+ __libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler,
-+ &oldaction_ptr);
- __libc_lock_lock (syslog_lock);
-+#endif
-
- /* Prepare for a broken connection. */
- memset (&action, 0, sizeof (action));
-@@ -257,7 +229,7 @@
- sigemptyset (&action.sa_mask);
- sigpipe = __sigaction (SIGPIPE, &action, &oldaction);
- if (sigpipe == 0)
-- clarg.oldaction = &oldaction;
-+ oldaction_ptr = &oldaction;
-
- /* Get connected, output the message to the local logger. */
- if (!connected)
-@@ -299,9 +271,11 @@
- if (sigpipe == 0)
- __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
-
-+#ifdef _LIBC_REENTRANT
- /* End of critical section. */
-- __libc_cleanup_pop (0);
-+ __libc_cleanup_region_end (0);
- __libc_lock_unlock (syslog_lock);
-+#endif
-
- free (buf);
- }
-@@ -309,7 +283,6 @@
-
- static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */
-
--
- static void
- internal_function
- openlog_internal(const char *ident, int logstat, int logfac)
-@@ -339,9 +312,8 @@
- == -1)
- {
- int saved_errno = errno;
-- int fd = LogFile;
-+ (void)__close(LogFile);
- LogFile = -1;
-- (void)__close(fd);
- if (LogType == SOCK_DGRAM
- && saved_errno == EPROTOTYPE)
- {
-@@ -357,16 +329,28 @@
- }
- }
-
-+
-+static void
-+log_cleanup (void *arg)
-+{
-+ __libc_lock_unlock (syslog_lock);
-+}
-+
- void
- openlog (const char *ident, int logstat, int logfac)
- {
-- /* Protect against multiple users and cancellation. */
-- __libc_cleanup_push (cancel_handler, NULL);
-+#ifdef _LIBC_REENTRANT
-+ /* Protect against multiple users. */
-+ __libc_cleanup_region_start (1, log_cleanup, NULL);
- __libc_lock_lock (syslog_lock);
-+#endif
-
- openlog_internal (ident, logstat, logfac);
-
-- __libc_cleanup_pop (1);
-+#ifdef _LIBC_REENTRANT
-+ /* Free the lock. */
-+ __libc_cleanup_region_end (1);
-+#endif
- }
-
- static void
-@@ -389,17 +373,36 @@
- void
- closelog ()
- {
-- /* Protect against multiple users and cancellation. */
-- __libc_cleanup_push (cancel_handler, NULL);
-+#ifdef _LIBC_REENTRANT
-+ /* Protect against multiple users. */
-+ __libc_cleanup_region_start (1, log_cleanup, NULL);
- __libc_lock_lock (syslog_lock);
-+#endif
-
- closelog_internal ();
- LogTag = NULL;
- LogType = SOCK_DGRAM; /* this is the default */
-
-+#ifdef _LIBC_REENTRANT
-+ /* Free the lock. */
-+ __libc_cleanup_region_end (1);
-+#endif
-+}
-+
-+#ifdef _LIBC_REENTRANT
-+static void
-+cancel_handler (void *ptr)
-+{
-+ /* Restore the old signal handler. */
-+ struct sigaction *oldaction = *((struct sigaction **) ptr);
-+
-+ if (oldaction != (struct sigaction *) NULL)
-+ __sigaction (SIGPIPE, oldaction, (struct sigaction *) NULL);
-+
- /* Free the lock. */
-- __libc_cleanup_pop (1);
-+ __libc_lock_unlock (syslog_lock);
- }
-+#endif
-
- /* setlogmask -- set the log mask level */
- int
diff --git a/packages/glibc/glibc-2.3.2/version.h b/packages/glibc/glibc-2.3.2/version.h
deleted file mode 100644
index 617f3e9998..0000000000
--- a/packages/glibc/glibc-2.3.2/version.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#define UTS_RELEASE "2.4.6-rmk1-np2-embedix"
-#define LINUX_VERSION_CODE 132102
-#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
-#define EMBEDIX_RELEASE "-011228"
diff --git a/packages/glibc/glibc-2.3.6/etc/ld.so.conf b/packages/glibc/glibc-2.3.6/etc/ld.so.conf
deleted file mode 100644
index 46e06d3f0a..0000000000
--- a/packages/glibc/glibc-2.3.6/etc/ld.so.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/local/lib
-
diff --git a/packages/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch b/packages/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch
deleted file mode 100644
index 4348d6f5d0..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-fixes
-
-{BUILD_DIR}/build-glibc/csu/crtn.o: In function "dummy":
-{BUILD_DIR}/build-glibc/csu/crtn.S:14: multiple definition of "dummy"
-{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:33: first defined here
-{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_init":
-{BUILD_DIR}/build-glibc/csu/crtn.S:30: multiple definition of "_init"
-{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:65: first defined here
-{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini":
-{BUILD_DIR}/build-glibc/csu/crtn.S:25: multiple definition of "_fini"
-{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:38: first defined here
-{BUILD_DIR}/build-glibc/csu/crti.o: In function "_fini":
-{BUILD_DIR}/build-glibc/csu/crti.S:(.init+0x20): undefined reference to "i_am_not_a_leaf"
-{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini":
-{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x40): undefined reference to "i_am_not_a_leaf"
-{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x44): undefined reference to "i_am_not_a_leaf"
-
---- glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile.org 2006-08-21 19:03:01.000000000 -0700
-+++ glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile 2006-08-21 19:03:19.000000000 -0700
-@@ -21,7 +21,7 @@
- ifneq ($(elf),no)
- # The initfini generation code doesn't work in the presence of -fPIC, so
- # we use -fpic instead which is much better.
--CFLAGS-initfini.s = -g0 -fpic -O1
-+CFLAGS-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time)
-
- # There is no benefit to using sdata for these objects, and the user
- # of the library should be able to control what goes into sdata.
diff --git a/packages/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch b/packages/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch
deleted file mode 100644
index 9938ef6973..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-2.3.6-bind-already-defined-on-powerpc.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-Fixes "Error: symbol `__bind' is already defined" error when building for PowerPC
-
-Patch taken from http://bugs.debian.org/343571
-
-
---- x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2004-06-30 17:29:12.000000000 -0500
-+++ x/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2005-11-18 16:48:11.000000000 -0600
-@@ -88,7 +79,6 @@
- b .L9
- END (__lround)
-
--strong_alias (__lround, __lround)
- weak_alias (__lround, lround)
-
- strong_alias (__lround, __lroundf)
---- x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:04:21.000000000 -0600
-+++ x/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2005-12-16 01:06:26.000000000 -0600
-@@ -42,7 +42,11 @@
- #define stackblock 20
-
- #ifndef __socket
--#define __socket P(__,socket)
-+# ifndef NO_WEAK_ALIAS
-+# define __socket P(__,socket)
-+# else
-+# define __socket socket
-+# endif
- #endif
-
- .text
-@@ -116,4 +120,6 @@
-
- PSEUDO_END (__socket)
-
-+#ifndef NO_WEAK_ALIAS
- weak_alias (__socket, socket)
-+#endif
---- x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:08:45.000000000 -0600
-+++ x/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2005-12-16 01:09:32.000000000 -0600
-@@ -41,12 +41,12 @@
-
- #define stackblock 80 /* offset to socket parm area. */
-
--#ifndef socket
--/* If this is just socket.S leave it alone! */
--#else
- #ifndef __socket
--#define __socket P(__,socket)
--#endif
-+# ifndef NO_WEAK_ALIAS
-+# define __socket P(__,socket)
-+# else
-+# define __socket socket
-+# endif
- #endif
-
- .text
-@@ -120,4 +120,6 @@
- cfi_endproc
- PSEUDO_END (__socket)
-
-+#ifndef NO_WEAK_ALIAS
- weak_alias (__socket, socket)
-+#endif
-
diff --git a/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch b/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch
deleted file mode 100644
index 9976eccef9..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-fixes
-
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "dummy":
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:14: multiple definition of "dummy"
-{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:33: first defined here
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini":
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:30: multiple definition of "_fini"
-{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:65: first defined here
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_init":
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:23: multiple definition of "_init"
-{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:37: first defined here
-{BUILD_DIR}/build-glibc/linuxthreads/crti.o: In function "_fini":
-{BUILD_DIR}/build-glibc/linuxthreads/crti.S:(.text+0x70): undefined reference to "i_am_not_a_leaf"
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini":
-{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:(.text+0x38): undefined reference to "i_am_not_a_leaf"
-collect2: ld returned 1 exit status
-
---- glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile.org 2003-02-17 20:33:17.000000000 +0000
-+++ glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile 2007-04-04 16:26:01.969067632 +0100
-@@ -1,6 +1,6 @@
- ifeq ($(subdir):$(elf),linuxthreads:yes)
- # See CFLAGS-initfini.s above; this is the same code.
--CFLAGS-pt-initfini.s = -g0 -fpic -O1
-+CFLAGS-pt-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time)
- endif
- ifeq ($(subdir),csu)
- gen-as-const-headers += tcb-offsets.sym
-
diff --git a/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch b/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch
deleted file mode 100644
index dae5db3846..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-2.3.6-linuxthreads-pthread-raise.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c.org 2008-07-16 22:57:58.000000000 -0700
-+++ glibc-2.3.6/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2008-07-16 22:58:26.000000000 -0700
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996, 2002, 2003 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 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
-@@ -18,10 +18,13 @@
-
- #include <signal.h>
- #include <unistd.h>
--#include <bits/libc-lock.h>
-
--#ifndef SHARED
-+#ifndef IS_IN_rtld
-+# include <bits/libc-lock.h>
-+
-+# ifndef SHARED
- weak_extern (__pthread_raise)
-+# endif
- #endif
-
- /* Raise the signal SIG. */
-@@ -29,8 +32,12 @@ int
- raise (sig)
- int sig;
- {
-+#ifdef IS_IN_rtld
-+ return __kill (__getpid (), sig);
-+#else
- return __libc_maybe_call2 (pthread_raise, (sig),
- __kill (__getpid (), sig));
-+#endif
- }
- libc_hidden_def (raise)
- weak_alias (raise, gsignal)
diff --git a/packages/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch b/packages/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch
deleted file mode 100644
index 722365f122..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-arm-socket-weakalias.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-This one was taken from debian.
-
-# DP: Description: Fix __bind redefinition problem
-# DP: Related bugs:
-# DP: Dpatch author: Phil Blundell
-# DP: Patch author: Daniel Jacobowitz
-# DP: Upstream status: In CVS
-# DP: Status Details:
-# DP: Date: 2005-12-25
-
-Index: sysdeps/unix/sysv/linux/arm/socket.S
-===================================================================
-RCS file: /cvs/glibc/ports/sysdeps/unix/sysv/linux/arm/socket.S,v
-retrieving revision 1.12
-retrieving revision 1.13
-diff -u -r1.12 -r1.13
---- glibc-2.3.6.ds1.orig/sysdeps/unix/sysv/linux/arm/socket.S 4 Dec 2004 21:20:16 -0000 1.12
-+++ glibc-2.3.6.ds1/sysdeps/unix/sysv/linux/arm/socket.S 27 Oct 2005 18:50:12 -0000 1.13
-@@ -1,4 +1,6 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
-+/* Copyright (C) 1995, 1996, 1997, 1998, 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
-@@ -32,7 +34,11 @@
- The .S files for the other calls just #define socket and #include this. */
-
- #ifndef __socket
-+#ifndef NO_WEAK_ALIAS
- #define __socket P(__,socket)
-+#else
-+#define __socket socket
-+#endif
- #endif
-
- #define PUSHARGS_1 str a1, [sp, $-4]!
-@@ -120,4 +126,6 @@
-
- PSEUDO_END (__socket)
-
-+#ifndef NO_WEAK_ALIAS
- weak_alias (__socket, socket)
-+#endif
diff --git a/packages/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch b/packages/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch
deleted file mode 100644
index 8e24a831b0..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-cross_sunrpc.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-Fix rpcsvc headers missing from glibc, also
-allows glibc to produce the rpc headers when cross compiling,
-And fix for glibc-bootstrap package doesn't currently build because the
-generated sunrpc headers are not available
-
-
----
- sunrpc/Makefile | 28 ++++++++++++++++++++++++----
- 1 file changed, 24 insertions(+), 4 deletions(-)
-
-Index: glibc-2.3.6/sunrpc/Makefile
-===================================================================
---- glibc-2.3.6.orig/sunrpc/Makefile 2005-07-17 20:03:49.000000000 -0700
-+++ glibc-2.3.6/sunrpc/Makefile 2008-07-17 15:28:04.000000000 -0700
-@@ -75,6 +75,8 @@ install-sbin := rpcinfo
- rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
- rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \
- rpc_tblout.o rpc_sample.o
-+host-rpcgen-objs = $(addprefix host-,$(rpcgen-objs))
-+
- # These headers are part of rpcgen.
- distribute := proto.h rpc_util.h rpc_parse.h rpc_scan.h \
- $(rpcgen-objs:.o=.c) etc.rpc \
-@@ -98,8 +100,8 @@ otherlibs += $(nssobjdir)/libnss_files.a
- $(resolvobjdir)/libresolv.a
- endif
-
--ifeq (no,$(cross-compiling))
--# We can only build this library if we can run the rpcgen we build.
-+ifneq (,$(findstring subdir_install,$(MAKECMDGOALS)))
-+## We can only build this library if we can run the rpcgen we build.
- headers += $(rpcsvc:%.x=rpcsvc/%.h)
- extra-libs := librpcsvc
- extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass.
-@@ -144,8 +146,26 @@ cpp-srcs-left := $(rpcgen-objs:.o=.c)
- lib := nonlib
- include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
-
-+# Rely on the target rpcgen objects for dependency information.
-+$(objpfx)host-%.o: %.c $(objpfx)%.o
-+ $(patsubst %/,cd % &&,$(objpfx)) \
-+ $(BUILD_CC) $($(basename $(<F))-CFLAGS) \
-+ -I$(shell cd .. && pwd) \
-+ -Dattribute_hidden= \
-+ -include $(shell cd ../include && pwd)/libintl.h \
-+ -O2 $(ALL_BUILD_CFLAGS) $(shell pwd)/$(<F) -c -o $(@F)
-+
-+$(objpfx)host-rpcgen: $(addprefix $(objpfx),$(host-rpcgen-objs))
-+ $(BUILD_CC) $(BUILD_CFLAGS) $+ -o $(objpfx)host-rpcgen
-+
- # Tell rpcgen where to find the C preprocessor.
-+ifeq ($(cross-compiling),no)
- rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts
-+rpcgen-prog = $(objpfx)rpcgen
-+else
-+rpcgen-cmd = CPP='$(CC) -E -x c-header' $(objpfx)host-rpcgen -Y ../scripts
-+rpcgen-prog = $(objpfx)host-rpcgen
-+endif
-
- # Install the rpc data base file.
- $(inst_sysconfdir)/rpc: etc.rpc $(+force)
-@@ -156,7 +176,7 @@ $(inst_sysconfdir)/rpc: etc.rpc $(+force
- # relinked.
- $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
- @:
--$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
-+$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(rpcgen-prog)
- $(make-target-directory)
- -@rm -f ${@:stmp=T} $@
- $(rpcgen-cmd) -h $< -o ${@:stmp=T}
-@@ -166,7 +186,7 @@ $(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(obj
- # Generate the rpcsvc XDR functions with rpcgen.
- $(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp
- @:
--$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
-+$(objpfx)x%.stmp: rpcsvc/%.x $(rpcgen-prog)
- -@rm -f ${@:stmp=T} $@
- $(rpcgen-cmd) -c $< -o ${@:stmp=T}
- $(move-if-change) $(@:stmp=T) $(@:stmp=c)
diff --git a/packages/glibc/glibc-2.3.6/glibc-memusage.patch b/packages/glibc/glibc-2.3.6/glibc-memusage.patch
deleted file mode 100644
index 39ca1a77b5..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-memusage.patch
+++ /dev/null
@@ -1,44 +0,0 @@
----
- malloc/Makefile | 4 +++-
- malloc/memusage.sh | 6 ++++++
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-Index: glibc-2.3.6/malloc/Makefile
-===================================================================
---- glibc-2.3.6.orig/malloc/Makefile 2008-07-17 14:40:54.000000000 -0700
-+++ glibc-2.3.6/malloc/Makefile 2008-07-17 14:42:07.000000000 -0700
-@@ -80,7 +80,7 @@ ifneq ($(cross-compiling),yes)
- ifneq ($(LIBGD),no)
- install-bin = memusagestat
- install-bin-script += memusage
--generated += memusagestat memusage
-+generated += memusagestat
- extra-objs += memusagestat.o
-
- # The configure.in check for libgd and its headers did not use $SYSINCLUDES.
-@@ -90,6 +90,8 @@ extra-objs += memusagestat.o
- $(objpfx)memusagestat.o: sysincludes = # nothing
- endif
- endif
-+install-bin-script += memusage
-+generated += memusage
-
- # Another goal which can be used to override the configure decision.
- .PHONY: do-memusagestat
-Index: glibc-2.3.6/malloc/memusage.sh
-===================================================================
---- glibc-2.3.6.orig/malloc/memusage.sh 2008-07-17 14:42:17.000000000 -0700
-+++ glibc-2.3.6/malloc/memusage.sh 2008-07-17 14:42:54.000000000 -0700
-@@ -205,6 +205,12 @@ if test $# -eq 0; then
- do_usage
- fi
-
-+# Find memusagestat.
-+if test -n "$png" -a ! -x $memusagestat; then
-+ echo >&2 $"PNG generation is not supported."
-+ png=""
-+fi
-+
- # This will be in the environment.
- add_env="LD_PRELOAD=$memusageso"
-
diff --git a/packages/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch b/packages/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch
deleted file mode 100644
index a3658f4cd6..0000000000
--- a/packages/glibc/glibc-2.3.6/glibc-rtld-libcc-eh.patch
+++ /dev/null
@@ -1,25 +0,0 @@
----
- elf/Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-Index: glibc-2.3.6/elf/Makefile
-===================================================================
---- glibc-2.3.6.orig/elf/Makefile 2008-07-17 01:10:39.000000000 -0700
-+++ glibc-2.3.6/elf/Makefile 2008-07-17 01:17:18.000000000 -0700
-@@ -279,7 +279,7 @@ $(objpfx)rtld-libc.a: $(objpfx)librtld.m
- $(MAKE) -f $< -f rtld-Rules
-
- $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
-- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
-+ $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc -lgcc_eh '-Wl,-)' \
- -Wl,-Map,$@.map
-
- generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
-@@ -295,6 +295,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
- > $@.lds
- $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
-+ -lgcc -lgcc_eh \
- $(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \
- $(filter-out $(map-file),$^) $(load-map-file) \
- -Wl,-soname=$(rtld-installed-name) -T $@.lds
diff --git a/packages/glibc/glibc-2.3.6/late-install-loop-break.patch b/packages/glibc/glibc-2.3.6/late-install-loop-break.patch
deleted file mode 100644
index fc7d8b31e6..0000000000
--- a/packages/glibc/glibc-2.3.6/late-install-loop-break.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- glibc-2.3.6/Makerules Sat Sep 8 22:59:54 2007
-+++ glibc-2.3.6/Makerules Sun Sep 9 01:04:29 2007
-@@ -154,26 +154,6 @@
- common-before-compile = $(before-compile)
- endif
-
--ifndef subdir
--# If a makefile needs to do something conditional on something that
--# can only be figured out from headers, write a FOO.make.c input
--# file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
--# to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
--#
--# We only generate these in the top-level makefile, to avoid any weirdness
--# from subdir-specific makefile tweaks creeping in on an update.
--$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
-- rm -f $@T $@.dT
-- (echo '# Generated from $*.make.c by Makerules.'; \
-- $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \
-- -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
-- | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
-- echo 'common-generated += $(@F)'; \
-- sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
-- rm -f $@.dT) > $@T
-- mv -f $@T $@
--endif
--
- ifdef subdir
- sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
- -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'
diff --git a/packages/glibc/glibc-2.4/arm-longlong.patch b/packages/glibc/glibc-2.4/arm-longlong.patch
deleted file mode 100644
index 28aca83dff..0000000000
--- a/packages/glibc/glibc-2.4/arm-longlong.patch
+++ /dev/null
@@ -1,58 +0,0 @@
---- glibc-2.4/stdlib/longlong.h.ark 2006-03-11 22:49:27.000000000 +0100
-+++ glibc-2.4/stdlib/longlong.h 2006-03-11 22:55:12.000000000 +0100
-@@ -206,6 +206,14 @@
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -227,7 +235,13 @@
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)) __CLOBBER_CC );}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined (__hppa) && W_TYPE_SIZE == 32
---- glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c.ark 2006-03-11 22:56:43.000000000 +0100
-+++ glibc-2.4/ports/sysdeps/arm/mp_clz_tab.c 2006-03-11 22:58:19.000000000 +0100
-@@ -0,0 +1,24 @@
-+/* __clz_tab -- support for longlong.h
-+ Copyright (C) 2004 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(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+/* Nothing required. */
-+#else
-+#include <stdlib/mp_clz_tab.c>
-+#endif
diff --git a/packages/glibc/glibc-2.4/arm-memcpy.patch b/packages/glibc/glibc-2.4/arm-memcpy.patch
deleted file mode 100644
index bc2b3dab84..0000000000
--- a/packages/glibc/glibc-2.4/arm-memcpy.patch
+++ /dev/null
@@ -1,758 +0,0 @@
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
-@@ -0,0 +1,251 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memmove (char *dst, const char *src) */
-+ENTRY(memmove)
-+ subs ip, r0, r1
-+ cmphi r2, ip
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r0, r4, lr}
-+ add r1, r1, r2
-+ add r0, r0, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #-4] )
-+ bne 26f
-+ ands ip, r1, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [r1, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb r1!, {r3 - r6} )
-+ PLD( stmgedb r0!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( ldrge r4, [r1, #-4]! )
-+ PLD( ldrgt r5, [r1, #-4]! )
-+ PLD( str r3, [r0, #-4]! )
-+ PLD( strge r4, [r0, #-4]! )
-+ PLD( strgt r5, [r0, #-4]! )
-+
-+20: PLD( pld [r1, #-96] )
-+ PLD( pld [r1, #-128] )
-+21: ldmdb r1!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ ldmdb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb r1!, {r3, r4, ip, lr}
-+ stmnedb r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb r1!, {r3, r4}
-+ stmnedb r0!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [r1, #-4]!
-+ strne r3, [r0, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1, #-1]
-+ ldrgeb r4, [r1, #-2]
-+ ldrgtb ip, [r1, #-3]
-+ strb r3, [r0, #-1]
-+ strgeb r4, [r0, #-2]
-+ strgtb ip, [r0, #-3]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [r1, #-1]!
-+ ldrgeb r4, [r1, #-1]!
-+ ldrgtb lr, [r1, #-1]!
-+ strb r3, [r0, #-1]!
-+ strgeb r4, [r0, #-1]!
-+ strgtb lr, [r0, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, r1, #3
-+ beq 19b
-+
-+27: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr r3, [r1]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [r1, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [r1, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [r0, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [r1, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb r1!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb r1!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [r1, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [r0, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add r1, r1, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add r1, r1, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add r1, r1, #1
-+ b 25b
-+
-+ .size memmove, . - memmove
-+END(memmove)
-+libc_hidden_builtin_def (memmove)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
-@@ -0,0 +1,255 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+dst .req r1
-+src .req r0
-+
-+/* void *bcopy (const char *src, char *dst, size_t size) */
-+ENTRY(bcopy)
-+ subs ip, dst, src
-+ cmphi r2, ip
-+ movls r3, r0
-+ movls r0, r1
-+ movls r1, r3
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r4, lr}
-+ add src, src, r2
-+ add dst, dst, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, dst, #3
-+ PLD( pld [src, #-4] )
-+ bne 26f
-+ ands ip, src, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [src, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb src!, {r3 - r6} )
-+ PLD( stmgedb dst!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( ldrge r4, [src, #-4]! )
-+ PLD( ldrgt r5, [src, #-4]! )
-+ PLD( str r3, [dst, #-4]! )
-+ PLD( strge r4, [dst, #-4]! )
-+ PLD( strgt r5, [dst, #-4]! )
-+
-+20: PLD( pld [src, #-96] )
-+ PLD( pld [src, #-128] )
-+21: ldmdb src!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ ldmdb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb src!, {r3, r4, ip, lr}
-+ stmnedb dst!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb src!, {r3, r4}
-+ stmnedb dst!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [src, #-4]!
-+ strne r3, [dst, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {dst, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [src, #-1]
-+ ldrgeb r4, [src, #-2]
-+ ldrgtb ip, [src, #-3]
-+ strb r3, [dst, #-1]
-+ strgeb r4, [dst, #-2]
-+ strgtb ip, [dst, #-3]
-+ ldmfd sp!, {dst, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [src, #-1]!
-+ ldrgeb r4, [src, #-1]!
-+ ldrgtb lr, [src, #-1]!
-+ strb r3, [dst, #-1]!
-+ strgeb r4, [dst, #-1]!
-+ strgtb lr, [dst, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, src, #3
-+ beq 19b
-+
-+27: bic src, src, #3
-+ cmp ip, #2
-+ ldr r3, [src]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [src, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [src, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [src, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [dst, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [src, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb src!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb src!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [src, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [dst, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add src, src, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add src, src, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add src, src, #1
-+ b 25b
-+
-+ .size bcopy, . - bcopy
-+END(bcopy)
-
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
-@@ -0,0 +1,242 @@
-+/*
-+ * Optimized memcpy implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memcpy (char *dst, const char *src) */
-+
-+ENTRY(memcpy)
-+ subs r2, r2, #4
-+ stmfd sp!, {r0, r4, lr}
-+ blt 7f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #0] )
-+ bne 8f
-+ ands ip, r1, #3
-+ bne 9f
-+
-+1: subs r2, r2, #4
-+ blt 6f
-+ subs r2, r2, #8
-+ blt 5f
-+ subs r2, r2, #16
-+ blt 4f
-+
-+ PLD( subs r2, r2, #65 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 3f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #64] )
-+ PLD( beq 2f )
-+ PLD( rsb ip, ip, #32 )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #96] )
-+ PLD( blt 2f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgeia r1!, {r3 - r6} )
-+ PLD( stmgeia r0!, {r3 - r6} )
-+ PLD( beq 2f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1], #4 )
-+ PLD( ldrge r4, [r1], #4 )
-+ PLD( ldrgt r5, [r1], #4 )
-+ PLD( str r3, [r0], #4 )
-+ PLD( strge r4, [r0], #4 )
-+ PLD( strgt r5, [r0], #4 )
-+
-+2: PLD( pld [r1, #96] )
-+3: ldmia r1!, {r3 - r8, ip, lr}
-+ subs r2, r2, #32
-+ stmia r0!, {r3 - r8, ip, lr}
-+ bge 2b
-+ PLD( cmn r2, #65 )
-+ PLD( bge 3b )
-+ PLD( add r2, r2, #65 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+4: ldmneia r1!, {r3, r4, ip, lr}
-+ stmneia r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+5: ldmneia r1!, {r3, r4}
-+ stmneia r0!, {r3, r4}
-+
-+ tst r2, #4
-+6: ldrne r3, [r1], #4
-+ strne r3, [r0], #4
-+
-+7: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb ip, [r1]
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb ip, [r0]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+8: rsb ip, ip, #4
-+ cmp ip, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb lr, [r1], #1
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb lr, [r0], #1
-+ subs r2, r2, ip
-+ blt 7b
-+ ands ip, r1, #3
-+ beq 1b
-+
-+9: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr lr, [r1], #4
-+ beq 17f
-+ bgt 18f
-+
-+
-+ .macro forward_copy_shift pull push
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #0] )
-+ blt 15f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 13f
-+
-+ PLD( subs r2, r2, #97 )
-+ PLD( blt 12f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( rsb ip, r1, #36 )
-+ PLD( pld [r1, #64] )
-+ PLD( ands ip, ip, #31 )
-+ PLD( pld [r1, #96] )
-+ PLD( beq 11f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #128] )
-+ PLD( blt 11f )
-+ PLD( sub r2, r2, ip )
-+10: PLD( mov r3, lr, pull #\pull )
-+ PLD( ldr lr, [r1], #4 )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r3, r3, lr, push #\push )
-+ PLD( str r3, [r0], #4 )
-+ PLD( bgt 10b )
-+
-+11: PLD( pld [r1, #128] )
-+12: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r9, ip, lr}
-+ subs r2, r2, #32
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, r7, push #\push
-+ mov r7, r7, pull #\pull
-+ orr r7, r7, r8, push #\push
-+ mov r8, r8, pull #\pull
-+ orr r8, r8, r9, push #\push
-+ mov r9, r9, pull #\pull
-+ orr r9, r9, ip, push #\push
-+ mov ip, ip, pull #\pull
-+ orr ip, ip, lr, push #\push
-+ stmia r0!, {r3 - r9, ip}
-+ bge 11b
-+ PLD( cmn r2, #97 )
-+ PLD( bge 12b )
-+ PLD( add r2, r2, #97 )
-+ cmn r2, #16
-+ blt 14f
-+13: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r6, lr}
-+ sub r2, r2, #16
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, lr, push #\push
-+ stmia r0!, {r3 - r6}
-+14: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 16f
-+15: mov r3, lr, pull #\pull
-+ ldr lr, [r1], #4
-+ subs r2, r2, #4
-+ orr r3, r3, lr, push #\push
-+ str r3, [r0], #4
-+ bge 15b
-+16:
-+ .endm
-+
-+
-+ forward_copy_shift pull=8 push=24
-+ sub r1, r1, #3
-+ b 7b
-+
-+17: forward_copy_shift pull=16 push=16
-+ sub r1, r1, #2
-+ b 7b
-+
-+18: forward_copy_shift pull=24 push=8
-+ sub r1, r1, #1
-+ b 7b
-+
-+ .size memcpy, . - memcpy
-+END(memcpy)
-+libc_hidden_builtin_def (memcpy)
-+
diff --git a/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch b/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch
deleted file mode 100644
index 8b36960b04..0000000000
--- a/packages/glibc/glibc-2.4/arm_eabi_ipc_fix.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Mon Aug 21 20:08:57 2006
-Return-Path: <libc-ports-return-430-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
-Delivered-To: listarch-libc-ports at sources dot redhat dot com
-Received: (qmail 9913 invoked by alias); 21 Aug 2006 20:08:56 -0000
-Received: (qmail 9893 invoked by uid 22791); 21 Aug 2006 20:08:53 -0000
-X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_HM,TW_SG,TW_SN
-X-Spam-Check-By: sourceware.org
-Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 21 Aug 2006 20:08:44 +0000
-Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GFG4f-0007gO-TW for libc-ports@sourceware.org; Mon, 21 Aug 2006 16:08:42 -0400
-Date: Mon, 21 Aug 2006 16:08:41 -0400
-From: Daniel Jacobowitz <drow at false dot org>
-To: libc-ports at sourceware dot org
-Subject: ARM IPC fix
-Message-ID: <20060821200841.GA29502@nevyn.them.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.5.11+cvs20060403
-X-IsSubscribed: yes
-Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
-List-Post: <mailto:libc-ports at sourceware dot org>
-List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
-Sender: libc-ports-owner at sourceware dot org
-Delivered-To: mailing list libc-ports at sourceware dot org
-
-We can't treat msgctl as a real syscall; if we don't add __IPC_64, we'll get
-a mismatched type for ipc_perm. Fixed by using the Alpha implementation,
-which is similar to the standard i386 implementation but doesn't use
-the multiplexer syscall.
-
---
-Daniel Jacobowitz
-CodeSourcery
-
-2006-08-21 Daniel Jacobowitz <dan@codesourcery.com>
-
- * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl,
- shmctl, and semctl.
- * sysdeps/unix/sysv/linux/arm/eabi/semctl.c,
- sysdeps/unix/sysv/linux/arm/eabi/shmctl.c,
- sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: New files.
-
-Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
-===================================================================
---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (revision 147209)
-+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list (working copy)
-@@ -1,18 +1,16 @@
- # File name Caller Syscall name # args Strong name Weak names
-
--# semaphore and shm system calls
--msgctl - msgctl i:iip __msgctl msgctl
-+# Semaphore and shm system calls. msgctl, shmctl, and semctl have C
-+# wrappers (to set __IPC_64).
- msgget - msgget i:ii __msgget msgget
- msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
- msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
- shmat - shmat i:ipi __shmat shmat
--shmctl - shmctl i:iip __shmctl shmctl
- shmdt - shmdt i:s __shmdt shmdt
- shmget - shmget i:iii __shmget shmget
- semop - semop i:ipi __semop semop
- semtimedop - semtimedop i:ipip semtimedop
- semget - semget i:iii __semget semget
--semctl - semctl i:iiii __semctl semctl
-
- # proper socket implementations:
- accept - accept Ci:iBN __libc_accept __accept accept
-
-Property changes on: sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
-___________________________________________________________________
-Name: svn:mime-type
- - application/octet-stream
-
-Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c
-===================================================================
---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0)
-+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/semctl.c (revision 0)
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/alpha/semctl.c>
-Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c
-===================================================================
---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0)
-+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/msgctl.c (revision 0)
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/alpha/msgctl.c>
-Index: a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c
-===================================================================
---- a/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0)
-+++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/shmctl.c (revision 0)
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/alpha/shmctl.c>
-
diff --git a/packages/glibc/glibc-2.4/dl-cache-libcmp.patch b/packages/glibc/glibc-2.4/dl-cache-libcmp.patch
deleted file mode 100644
index 2fedfa6db0..0000000000
--- a/packages/glibc/glibc-2.4/dl-cache-libcmp.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- glibc-2.4/elf/Versions.ark 2006-03-11 23:30:09.000000000 +0100
-+++ glibc-2.4/elf/Versions 2006-03-11 23:31:44.000000000 +0100
-@@ -63,5 +63,7 @@
- _dl_debug_state;
- # Pointer protection.
- __pointer_chk_guard;
-+ # for ldconfig
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-2.4/dyn-ldconfig-20041128.patch b/packages/glibc/glibc-2.4/dyn-ldconfig-20041128.patch
deleted file mode 100644
index 451b6d4afc..0000000000
--- a/packages/glibc/glibc-2.4/dyn-ldconfig-20041128.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libc/elf/Makefile~dyn-ldconfig-20041128
-+++ libc/elf/Makefile
-@@ -118,12 +118,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
diff --git a/packages/glibc/glibc-2.4/dyn-ldconfig.patch b/packages/glibc/glibc-2.4/dyn-ldconfig.patch
deleted file mode 100644
index 1041965d05..0000000000
--- a/packages/glibc/glibc-2.4/dyn-ldconfig.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- elf/Makefile 13 Mar 2003 21:50:57 -0000 1.258
-+++ elf/Makefile 27 Mar 2003 20:36:07 -0000
-@@ -109,12 +109,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
---- elf/ldconfig.c 13 Jan 2003 08:53:14 -0000 1.31
-+++ elf/ldconfig.c 27 Mar 2003 20:36:09 -0000
-@@ -149,6 +149,9 @@
- static int
- is_hwcap_platform (const char *name)
- {
-+#if 1
-+ return 0;
-+#else
- int hwcap_idx = _dl_string_hwcap (name);
-
- if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask))
-@@ -164,6 +167,7 @@
- #endif
-
- return 0;
-+#endif
- }
-
- /* Get hwcap (including platform) encoding of path. */
-@@ -175,6 +179,7 @@
- uint64_t hwcap = 0;
- uint64_t h;
-
-+#if 0
- size_t len;
-
- len = strlen (str);
-@@ -210,6 +215,7 @@
- *ptr = '\0';
- }
-
-+#endif
- free (str);
- return hwcap;
- }
---- elf/Versions.old 2004-06-26 13:18:35.000000000 +0100
-+++ elf/Versions 2004-06-26 14:41:09.000000000 +0100
-@@ -54,5 +54,6 @@
- _dl_get_tls_static_info; _dl_allocate_tls_init;
- _dl_tls_setup; _dl_rtld_di_serinfo;
- _dl_make_stack_executable;
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-2.4/etc/ld.so.conf b/packages/glibc/glibc-2.4/etc/ld.so.conf
deleted file mode 100644
index 46e06d3f0a..0000000000
--- a/packages/glibc/glibc-2.4/etc/ld.so.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/local/lib
-
diff --git a/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch b/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch
deleted file mode 100644
index fb733b9194..0000000000
--- a/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch
+++ /dev/null
@@ -1,329 +0,0 @@
-Fix up ARM EABI for removed syscalls
-http://sourceware.org/ml/libc-ports/2006-03/msg00029.html
-
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S
-===================================================================
---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S 2006-03-21 15:58:10.000000000 -0500
-+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
-@@ -1,131 +0,0 @@
--/* Copyright (C) 1995, 1996, 1997, 1998, 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-cancel.h>
--#include <socketcall.h>
--
--#define P(a, b) P2(a, b)
--#define P2(a, b) a##b
--
-- .text
--/* The socket-oriented system calls are handled unusally in Linux.
-- They are all gated through the single `socketcall' system call number.
-- `socketcall' takes two arguments: the first is the subcode, specifying
-- which socket function is being called; and the second is a pointer to
-- the arguments to the specific function.
--
-- The .S files for the other calls just #define socket and #include this. */
--
--#ifndef __socket
--# ifndef NO_WEAK_ALIAS
--# define __socket P(__,socket)
--# else
--# define __socket socket
--# endif
--#endif
--
--#define PUSHARGS_1 str a1, [sp, $-8]!; .pad #8
--#define PUSHARGS_2 stmfd sp!, {a1, a2}; .pad #8
--#define PUSHARGS_3 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* a4 pushed for padding */
--#define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4}; .pad #16
--#define PUSHARGS_5 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* Caller has already pushed arg 5 */
--#define PUSHARGS_6 stmfd sp!, {a1, a2, a3, a4}; .pad #16
--
--#define POPARGS_1 add sp, sp, #8
--#define POPARGS_2 add sp, sp, #8
--#define POPARGS_3 add sp, sp, #16
--#define POPARGS_4 add sp, sp, #16
--#define POPARGS_5 add sp, sp, #16
--#define POPARGS_6 add sp, sp, #16
--
--#ifndef NARGS
--#define NARGS 3 /* If we were called with no wrapper, this is really socket() */
--#endif
--
--#if defined NEED_CANCELLATION && defined CENABLE
-- PSEUDO_PROLOGUE
--#endif
--
--.globl __socket
--ENTRY (__socket)
-- .fnstart
--
-- /* This code previously moved sp into ip and stored the args using
-- stmdb ip!, {a1-a4}. It did not modify sp, so the stack never had
-- to be restored after the syscall completed. It saved an
-- instruction and meant no stack cleanup work was required.
--
-- This will not work in the case of a socket call being interrupted
-- by a signal. If the signal handler uses any stack the arguments
-- to socket will be trashed. The results of a restart of any
-- socket call are then unpredictable. */
--
-- /* Push args onto the stack. */
-- P(PUSHARGS_,NARGS)
--
--#if defined NEED_CANCELLATION && defined CENABLE
-- SINGLE_THREAD_P
-- bne 1f
--#endif
--
-- /* Do the system call trap. */
-- mov a1, $P(SOCKOP_,socket)
-- mov a2, sp
-- DO_CALL (socketcall, 0)
--
-- /* Pop args off the stack */
-- P(POPARGS_,NARGS)
--
-- /* r0 is < 0 if there was an error. */
-- cmn r0, $124
-- RETINSTR(cc, r14)
-- b PLTJMP(SYSCALL_ERROR)
--
--#if defined NEED_CANCELLATION && defined CENABLE
--1:
-- stmfd sp!, {r7, lr}
-- .save {r7, lr}
-- CENABLE
-- mov ip, r0
--
-- mov r0, #P(SOCKOP_,socket)
-- add r1, sp, #8
-- mov r7, #SYS_ify(socketcall)
-- swi 0x0
--
-- mov r7, r0
-- mov r0, ip
-- CDISABLE
-- mov r0, r7
-- ldmfd sp!, {r7, lr}
--
-- P(POPARGS_,NARGS)
--
-- /* r0 is < 0 if there was an error. */
-- cmn r0, $124
-- RETINSTR(cc, r14)
-- b PLTJMP(SYSCALL_ERROR)
--#endif
--
-- .fnend
--PSEUDO_END (__socket)
--
--#ifndef NO_WEAK_ALIAS
--weak_alias (__socket, socket)
--#endif
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list 2006-03-21 15:58:46.000000000 -0500
-@@ -0,0 +1,34 @@
-+# File name Caller Syscall name # args Strong name Weak names
-+
-+# semaphore and shm system calls
-+msgctl - msgctl i:iip __msgctl msgctl
-+msgget - msgget i:ii __msgget msgget
-+msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
-+msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
-+shmat - shmat i:ipi __shmat shmat
-+shmctl - shmctl i:iip __shmctl shmctl
-+shmdt - shmdt i:s __shmdt shmdt
-+shmget - shmget i:iii __shmget shmget
-+semop - semop i:ipi __semop semop
-+semtimedop - semtimedop i:ipip semtimedop
-+semget - semget i:iii __semget semget
-+semctl - semctl i:iiii __semctl semctl
-+
-+# proper socket implementations:
-+accept - accept Ci:iBN __libc_accept __accept accept
-+bind - bind i:ipi __bind bind
-+connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
-+getpeername - getpeername i:ipp __getpeername getpeername
-+getsockname - getsockname i:ipp __getsockname getsockname
-+getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
-+listen - listen i:ii __listen listen
-+recv - recv Ci:ibni __libc_recv __recv recv
-+recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
-+recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
-+send - send Ci:ibni __libc_send __send send
-+sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
-+sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
-+setsockopt - setsockopt i:iiibn __setsockopt setsockopt
-+shutdown - shutdown i:ii __shutdown shutdown
-+socket - socket i:iii __socket socket
-+socketpair - socketpair i:iiif __socketpair socketpair
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h
-===================================================================
---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
-@@ -53,9 +53,9 @@
- UNDOARGS_##args; \
- cmn r0, $4096;
-
--/* DOARGS pushes four bytes on the stack for five arguments, and nothing
-- otherwise. In order to preserve doubleword alignment, sometimes we must
-- save an extra register. */
-+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
-+ six arguments, and nothing for fewer. In order to preserve doubleword
-+ alignment, sometimes we must save an extra register. */
-
- # define DOCARGS_0 stmfd sp!, {r7, lr}
- # define UNDOCARGS_0
-@@ -81,6 +81,10 @@
- # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}
- # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
-
-+# define DOCARGS_6 stmfd sp!, {r0, r1, r2, r3, r7, lr}
-+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}
-+# define RESTORE_LR_6 RESTORE_LR_0
-+
- # ifdef IS_IN_libpthread
- # define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
- # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
-===================================================================
---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
-@@ -64,9 +64,9 @@
- UNDOARGS_##args; \
- cmn r0, $4096;
-
--/* DOARGS pushes four bytes on the stack for five arguments, and nothing
-- otherwise. In order to preserve doubleword alignment, sometimes we must
-- save an extra register. */
-+/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
-+ six arguments, and nothing for fewer. In order to preserve doubleword
-+ alignment, sometimes we must save an extra register. */
-
- # define RESTART_UNWIND .fnend; .fnstart; .save {r7, lr}
-
-@@ -94,6 +94,10 @@
- # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4}; .save {r7, lr}; .pad #4
- # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
-
-+# define DOCARGS_6 .save {r4, r5}; stmfd sp!, {r0, r1, r2, r3, r7, lr}; .save {r7, lr}; .pad #20
-+# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4, r5}; .save {r7, lr}
-+# define RESTORE_LR_6 RESTORE_LR_0
-+
- # ifdef IS_IN_libpthread
- # define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
- # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
-===================================================================
---- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:10.000000000 -0500
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:46.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2005
-+/* Copyright (C) 2005, 2006
- Free Software Foundation, Inc.
-
- This file is part of the GNU C Library.
-@@ -29,6 +29,12 @@
- # error Kernel headers are too old
- #endif
-
-+/* Don't use stime, even if the kernel headers define it. We have
-+ settimeofday, and some EABI kernels have removed stime. Similarly
-+ use setitimer to implement alarm. */
-+#undef __NR_stime
-+#undef __NR_alarm
-+
- /* The ARM EABI user interface passes the syscall number in r7, instead
- of in the swi. This is more efficient, because the kernel does not need
- to fetch the swi from memory to find out the number; which can be painful
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c 2006-03-21 15:58:46.000000000 -0500
-@@ -0,0 +1,31 @@
-+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by David Huggins-Daines <dhd@debian.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.
-+
-+ 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. */
-+
-+/* Since we don't have an oldumount system call, do what the kernel
-+ does down here. */
-+
-+extern long int __umount2 (const char *name, int flags);
-+
-+long int
-+__umount (const char *name)
-+{
-+ return __umount2 (name, 0);
-+}
-+
-+weak_alias (__umount, umount);
-Index: glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h 2006-03-20 17:26:58.000000000 -0500
-@@ -0,0 +1,31 @@
-+/* Set flags signalling availability of kernel features based on given
-+ kernel version number.
-+ Copyright (C) 2006 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. */
-+
-+/* The utimes syscall was added before 2.6.1. */
-+#if __LINUX_KERNEL_VERSION >= 132609
-+# define __ASSUME_UTIMES 1
-+#endif
-+
-+/* The new getrlimit syscall was added sometime before 2.4.6. */
-+#if __LINUX_KERNEL_VERSION >= 132102
-+#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1
-+#endif
-+
-+#include_next <kernel-features.h>
diff --git a/packages/glibc/glibc-2.4/generic-bits_select.h b/packages/glibc/glibc-2.4/generic-bits_select.h
deleted file mode 100644
index 47e7dedc30..0000000000
--- a/packages/glibc/glibc-2.4/generic-bits_select.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1997, 1998, 2001 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 _SYS_SELECT_H
-# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
-#endif
-
-
-/* We don't use `memset' because this would require a prototype and
- the array isn't too big. */
-#define __FD_ZERO(s) \
- do { \
- unsigned int __i; \
- fd_set *__arr = (s); \
- for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
- __FDS_BITS (__arr)[__i] = 0; \
- } while (0)
-#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
-#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
-#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)
diff --git a/packages/glibc/glibc-2.4/generic-bits_time.h b/packages/glibc/glibc-2.4/generic-bits_time.h
deleted file mode 100644
index b3184d1de9..0000000000
--- a/packages/glibc/glibc-2.4/generic-bits_time.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* System-dependent timing definitions. Generic version.
- Copyright (C) 1996,1997,1999-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. */
-
-/*
- * Never include this file directly; use <time.h> instead.
- */
-
-#ifndef __need_timeval
-# ifndef _BITS_TIME_H
-# define _BITS_TIME_H 1
-
-/* ISO/IEC 9899:1990 7.12.1: <time.h>
- The macro `CLOCKS_PER_SEC' is the number per second of the value
- returned by the `clock' function. */
-/* CAE XSH, Issue 4, Version 2: <time.h>
- The value of CLOCKS_PER_SEC is required to be 1 million on all
- XSI-conformant systems. */
-# define CLOCKS_PER_SEC 1000000l
-
-# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K
-/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
- presents the real value for clock ticks per second for the system. */
-# include <bits/types.h>
-extern long int __sysconf (int);
-# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
-# endif
-
-# ifdef __USE_POSIX199309
-/* Identifier for system-wide realtime clock. */
-# define CLOCK_REALTIME 0
-/* Monotonic system-wide clock. */
-# define CLOCK_MONOTONIC 1
-/* High-resolution timer from the CPU. */
-# define CLOCK_PROCESS_CPUTIME_ID 2
-/* Thread-specific CPU-time clock. */
-# define CLOCK_THREAD_CPUTIME_ID 3
-
-/* Flag to indicate time is absolute. */
-# define TIMER_ABSTIME 1
-# endif
-
-# endif /* bits/time.h */
-#endif
-
-#ifdef __need_timeval
-# undef __need_timeval
-# ifndef _STRUCT_TIMEVAL
-# define _STRUCT_TIMEVAL 1
-# include <bits/types.h>
-
-/* A time value that is accurate to the nearest
- microsecond but also has a range of years. */
-struct timeval
- {
- __time_t tv_sec; /* Seconds. */
- __suseconds_t tv_usec; /* Microseconds. */
- };
-# endif /* struct timeval */
-#endif /* need timeval */
diff --git a/packages/glibc/glibc-2.4/generic-bits_types.h b/packages/glibc/glibc-2.4/generic-bits_types.h
deleted file mode 100644
index 65c8a9fe90..0000000000
--- a/packages/glibc/glibc-2.4/generic-bits_types.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/* bits/types.h -- definitions of __*_t types underlying *_t types.
- 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
- 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. */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef _BITS_TYPES_H
-#define _BITS_TYPES_H 1
-
-#include <features.h>
-#include <bits/wordsize.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-/* Convenience types. */
-typedef unsigned char __u_char;
-typedef unsigned short int __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long int __u_long;
-
-/* Fixed-size types, underlying types depend on word size and compiler. */
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#if __WORDSIZE == 64
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-#elif defined __GLIBC_HAVE_LONG_LONG
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-#endif
-
-/* quad_t is also 64 bits. */
-#if __WORDSIZE == 64
-typedef long int __quad_t;
-typedef unsigned long int __u_quad_t;
-#elif defined __GLIBC_HAVE_LONG_LONG
-__extension__ typedef long long int __quad_t;
-__extension__ typedef unsigned long long int __u_quad_t;
-#else
-typedef struct
-{
- long __val[2];
-} __quad_t;
-typedef struct
-{
- __u_long __val[2];
-} __u_quad_t;
-#endif
-
-
-/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
- macros for each of the OS types we define below. The definitions
- of those macros must use the following macros for underlying types.
- We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
- variants of each of the following integer types on this machine.
-
- 16 -- "natural" 16-bit type (always short)
- 32 -- "natural" 32-bit type (always int)
- 64 -- "natural" 64-bit type (long or long long)
- LONG32 -- 32-bit type, traditionally long
- QUAD -- 64-bit type, always long long
- WORD -- natural type of __WORDSIZE bits (int or long)
- LONGWORD -- type of __WORDSIZE bits, traditionally long
-
- We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
- conventional uses of `long' or `long long' type modifiers match the
- types we define, even when a less-adorned type would be the same size.
- This matters for (somewhat) portably writing printf/scanf formats for
- these types, where using the appropriate l or ll format modifiers can
- make the typedefs and the formats match up across all GNU platforms. If
- we used `long' when it's 64 bits where `long long' is expected, then the
- compiler would warn about the formats not matching the argument types,
- and the programmer changing them to shut up the compiler would break the
- program's portability.
-
- Here we assume what is presently the case in all the GCC configurations
- we support: long long is always 64 bits, long is always word/address size,
- and int is always 32 bits. */
-
-#define __S16_TYPE short int
-#define __U16_TYPE unsigned short int
-#define __S32_TYPE int
-#define __U32_TYPE unsigned int
-#define __SLONGWORD_TYPE long int
-#define __ULONGWORD_TYPE unsigned long int
-#if __WORDSIZE == 32
-# define __SQUAD_TYPE __quad_t
-# define __UQUAD_TYPE __u_quad_t
-# define __SWORD_TYPE int
-# define __UWORD_TYPE unsigned int
-# define __SLONG32_TYPE long int
-# define __ULONG32_TYPE unsigned long int
-# define __S64_TYPE __quad_t
-# define __U64_TYPE __u_quad_t
-/* We want __extension__ before typedef's that use nonstandard base types
- such as `long long' in C89 mode. */
-# define __STD_TYPE __extension__ typedef
-#elif __WORDSIZE == 64
-# define __SQUAD_TYPE long int
-# define __UQUAD_TYPE unsigned long int
-# define __SWORD_TYPE long int
-# define __UWORD_TYPE unsigned long int
-# define __SLONG32_TYPE int
-# define __ULONG32_TYPE unsigned int
-# define __S64_TYPE long int
-# define __U64_TYPE unsigned long int
-/* No need to mark the typedef with __extension__. */
-# define __STD_TYPE typedef
-#else
-# error
-#endif
-#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
-
-
-__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
-__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
-__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
-__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
-__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
-__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
-__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
-__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
-__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
-__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
-__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
-__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
-__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
-__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
-__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
-__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
-__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
-__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
-
-__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
-__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
-__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
-
-/* Clock ID used in clock and timer functions. */
-__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
-
-/* Timer ID returned by `timer_create'. */
-__STD_TYPE __TIMER_T_TYPE __timer_t;
-
-/* Type to represent block size. */
-__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
-
-/* Types from the Large File Support interface. */
-
-/* Type to count number of disk blocks. */
-__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
-__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
-
-/* Type to count file system blocks. */
-__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
-__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
-
-/* Type to count file system nodes. */
-__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
-__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
-
-__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
-
-/* These few don't really vary by system, they always correspond
- to one of the other defined types. */
-typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
-typedef __quad_t *__qaddr_t;
-typedef char *__caddr_t;
-
-/* Duplicates info from stdint.h but this is used in unistd.h. */
-__STD_TYPE __SWORD_TYPE __intptr_t;
-
-/* Duplicate info from sys/socket.h. */
-__STD_TYPE __U32_TYPE __socklen_t;
-
-
-#undef __STD_TYPE
-
-#endif /* bits/types.h */
diff --git a/packages/glibc/glibc-2.4/generic-bits_typesizes.h b/packages/glibc/glibc-2.4/generic-bits_typesizes.h
deleted file mode 100644
index e9226c4174..0000000000
--- a/packages/glibc/glibc-2.4/generic-bits_typesizes.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* bits/typesizes.h -- underlying types for *_t. Generic version.
- Copyright (C) 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. */
-
-#ifndef _BITS_TYPES_H
-# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-#endif
-
-#ifndef _BITS_TYPESIZES_H
-#define _BITS_TYPESIZES_H 1
-
-/* See <bits/types.h> for the meaning of these macros. This file exists so
- that <bits/types.h> need not vary across different GNU platforms. */
-
-#define __DEV_T_TYPE __UQUAD_TYPE
-#define __UID_T_TYPE __U32_TYPE
-#define __GID_T_TYPE __U32_TYPE
-#define __INO_T_TYPE __ULONGWORD_TYPE
-#define __INO64_T_TYPE __UQUAD_TYPE
-#define __MODE_T_TYPE __U32_TYPE
-#define __NLINK_T_TYPE __UWORD_TYPE
-#define __OFF_T_TYPE __SLONGWORD_TYPE
-#define __OFF64_T_TYPE __SQUAD_TYPE
-#define __PID_T_TYPE __S32_TYPE
-#define __RLIM_T_TYPE __ULONGWORD_TYPE
-#define __RLIM64_T_TYPE __UQUAD_TYPE
-#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-#define __ID_T_TYPE __U32_TYPE
-#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-#define __TIME_T_TYPE __SLONGWORD_TYPE
-#define __USECONDS_T_TYPE __U32_TYPE
-#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
-#define __DADDR_T_TYPE __S32_TYPE
-#define __SWBLK_T_TYPE __SLONGWORD_TYPE
-#define __KEY_T_TYPE __S32_TYPE
-#define __CLOCKID_T_TYPE __S32_TYPE
-#define __TIMER_T_TYPE void *
-#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-#define __FSID_T_TYPE struct { int __val[2]; }
-#define __SSIZE_T_TYPE __SWORD_TYPE
-
-/* Number of descriptors that can fit in an `fd_set'. */
-#define __FD_SETSIZE 1024
-
-
-#endif /* bits/typesizes.h */
diff --git a/packages/glibc/glibc-2.4/glibc-2.4-compile.patch b/packages/glibc/glibc-2.4/glibc-2.4-compile.patch
deleted file mode 100644
index ea9f55ae7f..0000000000
--- a/packages/glibc/glibc-2.4/glibc-2.4-compile.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- glibc-2.4/csu/libc-start.c.ark 2006-03-13 03:07:15.000000000 +0100
-+++ glibc-2.4/csu/libc-start.c 2006-03-13 03:08:51.000000000 +0100
-@@ -59,6 +59,11 @@
- # define LIBC_START_MAIN BP_SYM (__libc_start_main)
- #endif
-
-+#ifdef SHARED
-+#include <pthread-functions.h>
-+extern struct pthread_functions __libc_pthread_functions;
-+#endif
-+
- #ifdef MAIN_AUXVEC_ARG
- /* main gets passed a pointer to the auxiliary. */
- # define MAIN_AUXVEC_DECL , void *
---- glibc-2.4/nscd/Makefile.ark 2006-03-13 14:05:47.000000000 +0100
-+++ glibc-2.4/nscd/Makefile 2006-03-13 14:06:12.000000000 +0100
-@@ -67,8 +67,10 @@
- # contains only the basic kernel interface headers, not something like
- # libselinux. So the simplest thing is to presume that the standard
- # system headers will be ok for this file.
--$(objpfx)nscd_stat.o: sysincludes = # nothing
--$(objpfx)selinux.o: sysincludes = # nothing
-+# Except, of course, this breaks crosscompiling with kernel headers in
-+# a nonstandard location...
-+#$(objpfx)nscd_stat.o: sysincludes = # nothing
-+#$(objpfx)selinux.o: sysincludes = # nothing
-
- distribute := nscd.h nscd-client.h dbg_log.h \
- $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
diff --git a/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch b/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch
deleted file mode 100644
index d3f37f6c36..0000000000
--- a/packages/glibc/glibc-2.4/glibc-2.4-openat-3.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-Submitted By: Jim Gifford (patches at jg555 dot com)
-Date: 2006-08-18
-Initial Package Version: 2.4
-Origin: http://sourceware.org/bugzilla/show_bug.cgi?id=2873
-Upstream Status: Applied
-Description: Fixes http://sourceware.org/bugzilla/show_bug.cgi?id=2873
- http://sourceware.org/bugzilla/show_bug.cgi?id=3040
- http://linuxfromscratch.org/pipermail/lfs-dev/2006-June/057562.html
- Updated by Joe Ciccone
-
-diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c
---- glibc-2.4.orig/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-02-23 14:50:21.000000000 -0800
-+++ glibc-2.4/sysdeps/unix/sysv/linux/i386/fchownat.c 2006-08-18 20:38:21.773288795 -0700
-@@ -61,6 +61,24 @@
- int
- fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
- {
-+ int result;
-+
-+#ifdef __NR_fchownat
-+# ifndef __ASSUME_ATFCTS
-+ if (__have_atfcts >= 0)
-+# endif
-+ {
-+ result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag);
-+# ifndef __ASSUME_ATFCTS
-+ if (result == -1 && errno == ENOSYS)
-+ __have_atfcts = -1;
-+ else
-+# endif
-+ return result;
-+ }
-+#endif
-+
-+#ifndef __ASSUME_ATFCTS
- if (flag & ~AT_SYMLINK_NOFOLLOW)
- {
- __set_errno (EINVAL);
-@@ -87,14 +105,13 @@
- file = buf;
- }
-
-- int result;
- INTERNAL_SYSCALL_DECL (err);
-
--#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0
--# if __ASSUME_LCHOWN_SYSCALL == 0
-+# if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0
-+# if __ASSUME_LCHOWN_SYSCALL == 0
- static int __libc_old_chown;
-
--# ifdef __NR_chown32
-+# ifdef __NR_chown32
- if (__libc_missing_32bit_uids <= 0)
- {
- if (flag & AT_SYMLINK_NOFOLLOW)
-@@ -111,7 +128,7 @@
-
- __libc_missing_32bit_uids = 1;
- }
--# endif /* __NR_chown32 */
-+# endif /* __NR_chown32 */
-
- if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
- || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
-@@ -135,13 +152,13 @@
-
- result = INTERNAL_SYSCALL (lchown, err, 3, CHECK_STRING (file), owner,
- group);
--# elif __ASSUME_32BITUIDS
-+# elif __ASSUME_32BITUIDS
- /* This implies __ASSUME_LCHOWN_SYSCALL. */
- result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
- group);
--# else
-+# else
- /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */
--# ifdef __NR_chown32
-+# ifdef __NR_chown32
- if (__libc_missing_32bit_uids <= 0)
- {
- result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
-@@ -153,7 +170,7 @@
-
- __libc_missing_32bit_uids = 1;
- }
--# endif /* __NR_chown32 */
-+# endif /* __NR_chown32 */
- if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
- || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
- {
-@@ -162,10 +179,10 @@
- }
-
- result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group);
--# endif
--#else
-+# endif
-+# else
- result = INTERNAL_SYSCALL (chown, err, 3, CHECK_STRING (file), owner, group);
--#endif
-+# endif
-
- if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
- goto fail;
-@@ -175,4 +192,5 @@
- fail:
- __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf);
- return -1;
-+#endif
- }
-diff -Naur glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c glibc-2.4/sysdeps/unix/sysv/linux/openat.c
---- glibc-2.4.orig/sysdeps/unix/sysv/linux/openat.c 2006-02-28 21:32:42.000000000 -0800
-+++ glibc-2.4/sysdeps/unix/sysv/linux/openat.c 2006-08-18 20:39:14.360012706 -0700
-@@ -29,8 +29,6 @@
-
-
- #if !defined OPENAT && !defined __ASSUME_ATFCTS
--# define OPENAT openat
--
- /* Set errno after a failed call. If BUF is not null,
- it is a /proc/self/fd/ path name we just tried to use. */
- void
-@@ -63,6 +61,9 @@
- int __have_atfcts;
- #endif
-
-+#ifndef OPENAT
-+# define OPENAT openat
-+#endif
-
- #define OPENAT_NOT_CANCEL CONCAT (OPENAT)
- #define CONCAT(name) CONCAT2 (name)
diff --git a/packages/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff b/packages/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff
deleted file mode 100644
index a552cf0d1f..0000000000
--- a/packages/glibc/glibc-2.4/glibc-arm-IO-acquire-lock-fix.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-Arm needs a similar fix as http://sourceware.org/ml/libc-ports/2007-12/msg00000.html
-
---- /tmp/stdio-lock.h 2008-03-04 18:51:15.555038993 +0100
-+++ glibc-2.7/ports/sysdeps/unix/sysv/linux/arm/bits/stdio-lock.h 2008-03-04 18:51:28.445035052 +0100
-@@ -50,6 +50,8 @@
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
- _IO_flockfile (_fp)
-
-+# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
-+
- # define _IO_release_lock(_fp) \
- _IO_funlockfile (_fp); \
- _IO_cleanup_region_end (0)
diff --git a/packages/glibc/glibc-2.4/glibc-arm-no-asm-page.patch b/packages/glibc/glibc-2.4/glibc-arm-no-asm-page.patch
deleted file mode 100644
index 7eb17179ba..0000000000
--- a/packages/glibc/glibc-2.4/glibc-arm-no-asm-page.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-http://sourceware.org/ml/libc-ports/2008-04/msg00005.html
-
-
-Index: glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
-===================================================================
---- glibc-2.6.1.orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:18.000000000 -0700
-+++ glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-09-12 18:08:28.000000000 -0700
-@@ -45,7 +45,6 @@
- #include <sys/mman.h>
-
- #include <linux/version.h>
--#include <asm/page.h>
- #include <sys/sysctl.h>
-
- #define PATH_ARM_SYSTYPE "/etc/arm_systype"
diff --git a/packages/glibc/glibc-2.4/glibc-check_pf.patch b/packages/glibc/glibc-2.4/glibc-check_pf.patch
deleted file mode 100644
index 3cff6bbcfa..0000000000
--- a/packages/glibc/glibc-2.4/glibc-check_pf.patch
+++ /dev/null
@@ -1,343 +0,0 @@
-From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006
-Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
-Delivered-To: listarch-libc-ports at sources dot redhat dot com
-Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000
-Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000
-X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP
-X-Spam-Check-By: sourceware.org
-Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000
-Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500
-Date: Tue, 31 Oct 2006 12:37:08 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: Mike Frysinger <vapier at gentoo dot org>
-Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com>
-Subject: Re: Problem with glibc-2.5 on ARM
-Message-ID: <20061031173708.GJ20468@nevyn.them.org>
-References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org>
-User-Agent: Mutt/1.5.13 (2006-08-11)
-X-IsSubscribed: yes
-Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
-List-Post: <mailto:libc-ports at sourceware dot org>
-List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
-Sender: libc-ports-owner at sourceware dot org
-Delivered-To: mailing list libc-ports at sourceware dot org
-
-On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote:
-> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote:
-> > ARM is going to need a slightly different version of that file, I
-> > guess.
->
-> would declaring req with attribute packed not help ?
-> -mike
-
-Nope. "struct rtgenmsg" would still have size 4.
-
-Philip, are you still at all interested in this for the old ABI?
-I don't have time to test this patch right now, but I think it
-will work.
-
---
-Daniel Jacobowitz
-CodeSourcery
-
-2006-10-31 Daniel Jacobowitz <dan@codesourcery.com>
-
- * sysdeps/unix/sysv/linux/arm/check_pf.c: New file.
- * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file.
-
-Index: sysdeps/unix/sysv/linux/arm/check_pf.c
-===================================================================
-RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c
-diff -N sysdeps/unix/sysv/linux/arm/check_pf.c
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000
-@@ -0,0 +1,274 @@
-+/* Determine protocol families for which interfaces exist. ARM Linux version.
-+ Copyright (C) 2003, 2006 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 <assert.h>
-+#include <errno.h>
-+#include <ifaddrs.h>
-+#include <netdb.h>
-+#include <stddef.h>
-+#include <string.h>
-+#include <time.h>
-+#include <unistd.h>
-+#include <sys/socket.h>
-+
-+#include <asm/types.h>
-+#include <linux/netlink.h>
-+#include <linux/rtnetlink.h>
-+
-+#include <not-cancel.h>
-+#include <kernel-features.h>
-+
-+
-+#ifndef IFA_F_TEMPORARY
-+# define IFA_F_TEMPORARY IFA_F_SECONDARY
-+#endif
-+#ifndef IFA_F_HOMEADDRESS
-+# define IFA_F_HOMEADDRESS 0
-+#endif
-+
-+
-+static int
-+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
-+ struct in6addrinfo **in6ai, size_t *in6ailen)
-+{
-+ struct req
-+ {
-+ struct nlmsghdr nlh;
-+ struct rtgenmsg g;
-+ } req;
-+ struct sockaddr_nl nladdr;
-+
-+ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds
-+ it up to a word. Clear the padding explicitly here. */
-+ assert (sizeof (req.g) == 4);
-+ memset (&req.g, '\0', sizeof (req.g));
-+
-+ req.nlh.nlmsg_len = sizeof (req);
-+ req.nlh.nlmsg_type = RTM_GETADDR;
-+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
-+ req.nlh.nlmsg_pid = 0;
-+ req.nlh.nlmsg_seq = time (NULL);
-+ req.g.rtgen_family = AF_UNSPEC;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
-+ (struct sockaddr *) &nladdr,
-+ sizeof (nladdr))) < 0)
-+ return -1;
-+
-+ *seen_ipv4 = false;
-+ *seen_ipv6 = false;
-+
-+ bool done = false;
-+ char buf[4096];
-+ struct iovec iov = { buf, sizeof (buf) };
-+ struct in6ailist
-+ {
-+ struct in6addrinfo info;
-+ struct in6ailist *next;
-+ } *in6ailist = NULL;
-+ size_t in6ailistlen = 0;
-+
-+ do
-+ {
-+ struct msghdr msg =
-+ {
-+ (void *) &nladdr, sizeof (nladdr),
-+ &iov, 1,
-+ NULL, 0,
-+ 0
-+ };
-+
-+ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
-+ if (read_len < 0)
-+ return -1;
-+
-+ if (msg.msg_flags & MSG_TRUNC)
-+ return -1;
-+
-+ struct nlmsghdr *nlmh;
-+ for (nlmh = (struct nlmsghdr *) buf;
-+ NLMSG_OK (nlmh, (size_t) read_len);
-+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
-+ {
-+ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid
-+ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
-+ continue;
-+
-+ if (nlmh->nlmsg_type == RTM_NEWADDR)
-+ {
-+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ *seen_ipv4 = true;
-+ break;
-+ case AF_INET6:
-+ *seen_ipv6 = true;
-+
-+ if (ifam->ifa_flags & (IFA_F_DEPRECATED
-+ | IFA_F_TEMPORARY
-+ | IFA_F_HOMEADDRESS))
-+ {
-+ struct rtattr *rta = IFA_RTA (ifam);
-+ size_t len = (nlmh->nlmsg_len
-+ - NLMSG_LENGTH (sizeof (*ifam)));
-+ void *local = NULL;
-+ void *address = NULL;
-+ while (RTA_OK (rta, len))
-+ {
-+ switch (rta->rta_type)
-+ {
-+ case IFA_LOCAL:
-+ local = RTA_DATA (rta);
-+ break;
-+
-+ case IFA_ADDRESS:
-+ address = RTA_DATA (rta);
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, len);
-+ }
-+
-+ struct in6ailist *newp = alloca (sizeof (*newp));
-+ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
-+ ? in6ai_deprecated : 0)
-+ | ((ifam->ifa_flags
-+ & IFA_F_TEMPORARY)
-+ ? in6ai_temporary : 0)
-+ | ((ifam->ifa_flags
-+ & IFA_F_HOMEADDRESS)
-+ ? in6ai_homeaddress : 0));
-+ memcpy (newp->info.addr, address ?: local,
-+ sizeof (newp->info.addr));
-+ newp->next = in6ailist;
-+ in6ailist = newp;
-+ ++in6ailistlen;
-+ }
-+ break;
-+ default:
-+ /* Ignore. */
-+ break;
-+ }
-+ }
-+ else if (nlmh->nlmsg_type == NLMSG_DONE)
-+ /* We found the end, leave the loop. */
-+ done = true;
-+ }
-+ }
-+ while (! done);
-+
-+ close_not_cancel_no_status (fd);
-+
-+ if (in6ailist != NULL)
-+ {
-+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai));
-+ if (*in6ai == NULL)
-+ return -1;
-+
-+ *in6ailen = in6ailistlen;
-+
-+ do
-+ {
-+ (*in6ai)[--in6ailistlen] = in6ailist->info;
-+ in6ailist = in6ailist->next;
-+ }
-+ while (in6ailist != NULL);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+/* We don't know if we have NETLINK support compiled in in our
-+ Kernel. */
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+/* Define in ifaddrs.h. */
-+extern int __no_netlink_support attribute_hidden;
-+#else
-+# define __no_netlink_support 0
-+#endif
-+
-+
-+void
-+attribute_hidden
-+__check_pf (bool *seen_ipv4, bool *seen_ipv6,
-+ struct in6addrinfo **in6ai, size_t *in6ailen)
-+{
-+ *in6ai = NULL;
-+ *in6ailen = 0;
-+
-+ if (! __no_netlink_support)
-+ {
-+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-+
-+ struct sockaddr_nl nladdr;
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ socklen_t addr_len = sizeof (nladdr);
-+
-+ if (fd >= 0
-+ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
-+ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
-+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6,
-+ in6ai, in6ailen) == 0)
-+ /* It worked. */
-+ return;
-+
-+ if (fd >= 0)
-+ __close (fd);
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* Remember that there is no netlink support. */
-+ __no_netlink_support = 1;
-+#else
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+#endif
-+ }
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* No netlink. Get the interface list via getifaddrs. */
-+ struct ifaddrs *ifa = NULL;
-+ if (getifaddrs (&ifa) != 0)
-+ {
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+ return;
-+ }
-+
-+ struct ifaddrs *runp;
-+ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-+ if (runp->ifa_addr->sa_family == PF_INET)
-+ *seen_ipv4 = true;
-+ else if (runp->ifa_addr->sa_family == PF_INET6)
-+ *seen_ipv6 = true;
-+
-+ (void) freeifaddrs (ifa);
-+#endif
-+}
-Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
-===================================================================
-RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
-diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/check_pf.c>
-
diff --git a/packages/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch b/packages/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch
deleted file mode 100644
index d9ed12a0fe..0000000000
--- a/packages/glibc/glibc-2.4/glibc-use-isystem-include-fixed.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-http://sourceware.org/ml/libc-alpha/2007-03/msg00017.html
-
-GCC trunk now has multiple internal headers directories, one
-containing the self-contained GCC-provided headers and one containing
-the <limits.h> (not self-contained but including libc's <limits.h> or
-a fixed version thereof) and the fixed headers; more such directories
-may be added in future.
-
-When glibc uses -nostdinc, it needs to use -isystem options for all
-these internal directories. This patch teaches it about the
-include-fixed directory (and is harmless with old GCC versions without
-that directory).
-
-2007-03-18 Joseph Myers <joseph@codesourcery.com>
-
- * configure.in: Also pass -isystem option for GCC's include-fixed
- directory.
- * configure: Regenerate.
-
-
-Index: glibc-2.6.1/configure
-===================================================================
---- glibc-2.6.1.orig/configure 2008-09-12 16:38:06.000000000 -0700
-+++ glibc-2.6.1/configure 2008-09-12 16:39:22.000000000 -0700
-@@ -4563,7 +4563,7 @@
- # thing on a system that doesn't need fixincludes. (Not presently a problem.)
- if test -n "$sysheaders"; then
- ccheaders=`$CC -print-file-name=include`
-- SYSINCLUDES="-nostdinc -isystem $ccheaders \
-+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $ccheaders-fixed \
- -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
- if test -n "$CXX"; then
- cxxversion=`$CXX -dumpversion 2>&5` &&
-Index: glibc-2.6.1/configure.in
-===================================================================
---- glibc-2.6.1.orig/configure.in 2008-09-12 16:38:26.000000000 -0700
-+++ glibc-2.6.1/configure.in 2008-09-12 16:39:01.000000000 -0700
-@@ -912,7 +912,7 @@
- # thing on a system that doesn't need fixincludes. (Not presently a problem.)
- if test -n "$sysheaders"; then
- ccheaders=`$CC -print-file-name=include`
-- SYSINCLUDES="-nostdinc -isystem $ccheaders \
-+ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $ccheaders-fixed \
- -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
- if test -n "$CXX"; then
- cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
diff --git a/packages/glibc/glibc-2.4/ldd-unbash.patch b/packages/glibc/glibc-2.4/ldd-unbash.patch
deleted file mode 100644
index 2fb8854b49..0000000000
--- a/packages/glibc/glibc-2.4/ldd-unbash.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- glibc-2.5/elf/ldd.bash.in.org 2006-04-30 16:06:20.000000000 +0000
-+++ glibc-2.5/elf/ldd.bash.in 2007-03-30 19:18:57.000000000 +0000
-@@ -110,7 +110,7 @@
- # environments where the executed program might not have permissions
- # to write to the console/tty. But only bash 3.x supports the pipefail
- # option, and we don't bother to handle the case for older bash versions.
--if set -o pipefail 2> /dev/null; then
-+if false; then
- try_trace() {
- eval $add_env '"$@"' | cat
- }
diff --git a/packages/glibc/glibc-2.4/ldsocache-varrun.patch b/packages/glibc/glibc-2.4/ldsocache-varrun.patch
deleted file mode 100644
index 9994d4f879..0000000000
--- a/packages/glibc/glibc-2.4/ldsocache-varrun.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-This patch moves ld.so.cache from /etc to /var/run. This is for devices
-where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
-+++ libc/sysdeps/generic/dl-cache.h
-@@ -29,7 +29,7 @@
- #endif
-
- #ifndef LD_SO_CACHE
--# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
-+# define LD_SO_CACHE "/var/run/ld.so.cache"
- #endif
-
- #ifndef add_system_dir
diff --git a/packages/glibc/glibc-2.4/no-z-defs.patch b/packages/glibc/glibc-2.4/no-z-defs.patch
deleted file mode 100644
index 48c6a41267..0000000000
--- a/packages/glibc/glibc-2.4/no-z-defs.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-Create a configparms file which disabled no-z-defs.
-This is required to build a working glibs for sh4,
-without there will be a lot linker errors during the build.
-
-diff -duNr libc.orig/configparms libc/configparms
---- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000
-+++ libc/configparms 2006-02-23 14:08:18.000000000 +1100
-@@ -0,0 +1 @@
-+no-z-defs=yes
diff --git a/packages/glibc/glibc-2.4/nptl-crosscompile.patch b/packages/glibc/glibc-2.4/nptl-crosscompile.patch
deleted file mode 100644
index 18a46ad4f1..0000000000
--- a/packages/glibc/glibc-2.4/nptl-crosscompile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark 2006-03-12 00:41:40.000000000 +0100
-+++ glibc-2.4/nptl/sysdeps/pthread/configure.in 2006-03-12 00:44:08.000000000 +0100
-@@ -45,5 +45,6 @@
- AC_MSG_ERROR([the compiler must support C cleanup handling])
- fi
- else
-- AC_MSG_ERROR(forced unwind support is required)
-+ AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling])
-+ AC_DEFINE(HAVE_FORCED_UNWIND)
- fi
---- glibc-2.4/nptl/sysdeps/pthread/configure.ark 2006-03-12 00:42:47.000000000 +0100
-+++ glibc-2.4/nptl/sysdeps/pthread/configure 2006-03-12 00:44:08.000000000 +0100
-@@ -153,7 +153,10 @@
- { (exit 1); exit 1; }; }
- fi
- else
-- { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5
--echo "$as_me: error: forced unwind support is required" >&2;}
-- { (exit 1); exit 1; }; }
-+ { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5
-+echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;}
-+ cat >>confdefs.h <<\_ACEOF
-+#define HAVE_FORCED_UNWIND 1
-+_ACEOF
-+
- fi
diff --git a/packages/glibc/glibc-2.4/powerpc-sqrt-hack.diff b/packages/glibc/glibc-2.4/powerpc-sqrt-hack.diff
deleted file mode 100644
index 1046efb2a1..0000000000
--- a/packages/glibc/glibc-2.4/powerpc-sqrt-hack.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c
---- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-04-14 07:44:30.000000000 +0200
-+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c 2006-12-08 12:53:32.202227000 +0100
-@@ -25,6 +25,9 @@
- #include <sysdep.h>
- #include <ldsodefs.h>
-
-+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
-+
-+
- static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
- static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
- static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c
---- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-04-14 07:44:30.000000000 +0200
-+++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c 2006-12-08 12:53:36.992227000 +0100
-@@ -25,6 +25,8 @@
- #include <sysdep.h>
- #include <ldsodefs.h>
-
-+#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
-+
- static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
- static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
- static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
diff --git a/packages/glibc/glibc-2.4/zecke-sane-readelf.patch b/packages/glibc/glibc-2.4/zecke-sane-readelf.patch
deleted file mode 100644
index 2bc87974a1..0000000000
--- a/packages/glibc/glibc-2.4/zecke-sane-readelf.patch
+++ /dev/null
@@ -1,243 +0,0 @@
-upstream: http://sources.redhat.com/bugzilla/show_bug.cgi?id=3004
-status: WONTFIX
-comment: Use OEs version of the readelf version. There might be no
-host system version (e.g. on OSX) or it is not multiarch.
-
-Index: glibc-2.6.1/configure
-===================================================================
---- glibc-2.6.1.orig/configure 2007-07-31 06:46:12.000000000 -0700
-+++ glibc-2.6.1/configure 2008-09-12 16:38:06.000000000 -0700
-@@ -5478,6 +5478,96 @@
- fi
- fi
-
-+### AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH])
-+### XXXX copy and pasted
-+# Check for readelf
-+# Extract the first word of "$target_alias-readelf", so it can be a program name with args.
-+set dummy $target_alias-readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$READELF"; then
-+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_READELF="$target_alias-readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+READELF=$ac_cv_prog_READELF
-+if test -n "$READELF"; then
-+ { echo "$as_me:$LINENO: result: $READELF" >&5
-+echo "${ECHO_T}$READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+
-+if test -z "$ac_cv_prog_READELF"; then
-+ if test "$build" = "$target"; then
-+ ac_ct_READELF=$READELF
-+ # Extract the first word of "readelf", so it can be a program name with args.
-+set dummy readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_READELF"; then
-+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_ac_ct_READELF="readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf"
-+fi
-+fi
-+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
-+if test -n "$ac_ct_READELF"; then
-+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
-+echo "${ECHO_T}$ac_ct_READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+ READELF=ac_ct_READELF
-+ else
-+ READELF="readelf"
-+ fi
-+else
-+ READELF="$ac_cv_prog_READELF"
-+fi
-+
-+### XXXX copy and pasted
-+
- echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
- echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
- if test "${libc_cv_initfini_array+set}" = set; then
-@@ -5497,7 +5587,7 @@
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }
- then
-- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
- libc_cv_initfini_array=yes
- else
- libc_cv_initfini_array=no
-@@ -5797,7 +5887,7 @@
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }
- then
-- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
- libc_cv_z_combreloc=yes
- else
- libc_cv_z_combreloc=no
-Index: glibc-2.6.1/configure.in
-===================================================================
---- glibc-2.6.1.orig/configure.in 2007-03-20 05:11:23.000000000 -0700
-+++ glibc-2.6.1/configure.in 2008-09-12 16:38:26.000000000 -0700
-@@ -1347,6 +1347,96 @@
- fi
- fi
-
-+### AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH])
-+### XXXX copy and pasted
-+# Check for readelf
-+# Extract the first word of "$target_alias-readelf", so it can be a program name with args.
-+set dummy $target_alias-readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$READELF"; then
-+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_READELF="$target_alias-readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+READELF=$ac_cv_prog_READELF
-+if test -n "$READELF"; then
-+ { echo "$as_me:$LINENO: result: $READELF" >&5
-+echo "${ECHO_T}$READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+
-+if test -z "$ac_cv_prog_READELF"; then
-+ if test "$build" = "$target"; then
-+ ac_ct_READELF=$READELF
-+ # Extract the first word of "readelf", so it can be a program name with args.
-+set dummy readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_READELF"; then
-+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_ac_ct_READELF="readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf"
-+fi
-+fi
-+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
-+if test -n "$ac_ct_READELF"; then
-+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
-+echo "${ECHO_T}$ac_ct_READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+ READELF=ac_ct_READELF
-+ else
-+ READELF="readelf"
-+ fi
-+else
-+ READELF="$ac_cv_prog_READELF"
-+fi
-+
-+### XXXX copy and pasted
-+
- AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
- libc_cv_initfini_array, [dnl
- cat > conftest.c <<EOF
-@@ -1358,7 +1448,7 @@
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
- -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
- then
-- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
- libc_cv_initfini_array=yes
- else
- libc_cv_initfini_array=no
-@@ -1543,7 +1633,7 @@
- dnl introducing new options this is not easily doable. Instead use a tool
- dnl which always is cross-platform: readelf. To detect whether -z combreloc
- dnl look for a section named .rel.dyn.
-- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
- libc_cv_z_combreloc=yes
- else
- libc_cv_z_combreloc=no
diff --git a/packages/glibc/glibc-2.5/glibc-check_pf.patch b/packages/glibc/glibc-2.5/glibc-check_pf.patch
deleted file mode 100644
index 3cff6bbcfa..0000000000
--- a/packages/glibc/glibc-2.5/glibc-check_pf.patch
+++ /dev/null
@@ -1,343 +0,0 @@
-From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006
-Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org>
-Delivered-To: listarch-libc-ports at sources dot redhat dot com
-Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000
-Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000
-X-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,TW_CP
-X-Spam-Check-By: sourceware.org
-Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000
-Received: from drow by nevyn.them.org with local (Exim 4.54) id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500
-Date: Tue, 31 Oct 2006 12:37:08 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: Mike Frysinger <vapier at gentoo dot org>
-Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com>
-Subject: Re: Problem with glibc-2.5 on ARM
-Message-ID: <20061031173708.GJ20468@nevyn.them.org>
-References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org>
-User-Agent: Mutt/1.5.13 (2006-08-11)
-X-IsSubscribed: yes
-Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org>
-List-Post: <mailto:libc-ports at sourceware dot org>
-List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs>
-Sender: libc-ports-owner at sourceware dot org
-Delivered-To: mailing list libc-ports at sourceware dot org
-
-On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote:
-> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote:
-> > ARM is going to need a slightly different version of that file, I
-> > guess.
->
-> would declaring req with attribute packed not help ?
-> -mike
-
-Nope. "struct rtgenmsg" would still have size 4.
-
-Philip, are you still at all interested in this for the old ABI?
-I don't have time to test this patch right now, but I think it
-will work.
-
---
-Daniel Jacobowitz
-CodeSourcery
-
-2006-10-31 Daniel Jacobowitz <dan@codesourcery.com>
-
- * sysdeps/unix/sysv/linux/arm/check_pf.c: New file.
- * sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file.
-
-Index: sysdeps/unix/sysv/linux/arm/check_pf.c
-===================================================================
-RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c
-diff -N sysdeps/unix/sysv/linux/arm/check_pf.c
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ sysdeps/unix/sysv/linux/arm/check_pf.c 31 Oct 2006 17:29:58 -0000
-@@ -0,0 +1,274 @@
-+/* Determine protocol families for which interfaces exist. ARM Linux version.
-+ Copyright (C) 2003, 2006 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 <assert.h>
-+#include <errno.h>
-+#include <ifaddrs.h>
-+#include <netdb.h>
-+#include <stddef.h>
-+#include <string.h>
-+#include <time.h>
-+#include <unistd.h>
-+#include <sys/socket.h>
-+
-+#include <asm/types.h>
-+#include <linux/netlink.h>
-+#include <linux/rtnetlink.h>
-+
-+#include <not-cancel.h>
-+#include <kernel-features.h>
-+
-+
-+#ifndef IFA_F_TEMPORARY
-+# define IFA_F_TEMPORARY IFA_F_SECONDARY
-+#endif
-+#ifndef IFA_F_HOMEADDRESS
-+# define IFA_F_HOMEADDRESS 0
-+#endif
-+
-+
-+static int
-+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
-+ struct in6addrinfo **in6ai, size_t *in6ailen)
-+{
-+ struct req
-+ {
-+ struct nlmsghdr nlh;
-+ struct rtgenmsg g;
-+ } req;
-+ struct sockaddr_nl nladdr;
-+
-+ /* struct rtgenmsg consists of a single byte but the ARM ABI rounds
-+ it up to a word. Clear the padding explicitly here. */
-+ assert (sizeof (req.g) == 4);
-+ memset (&req.g, '\0', sizeof (req.g));
-+
-+ req.nlh.nlmsg_len = sizeof (req);
-+ req.nlh.nlmsg_type = RTM_GETADDR;
-+ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
-+ req.nlh.nlmsg_pid = 0;
-+ req.nlh.nlmsg_seq = time (NULL);
-+ req.g.rtgen_family = AF_UNSPEC;
-+
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
-+ (struct sockaddr *) &nladdr,
-+ sizeof (nladdr))) < 0)
-+ return -1;
-+
-+ *seen_ipv4 = false;
-+ *seen_ipv6 = false;
-+
-+ bool done = false;
-+ char buf[4096];
-+ struct iovec iov = { buf, sizeof (buf) };
-+ struct in6ailist
-+ {
-+ struct in6addrinfo info;
-+ struct in6ailist *next;
-+ } *in6ailist = NULL;
-+ size_t in6ailistlen = 0;
-+
-+ do
-+ {
-+ struct msghdr msg =
-+ {
-+ (void *) &nladdr, sizeof (nladdr),
-+ &iov, 1,
-+ NULL, 0,
-+ 0
-+ };
-+
-+ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
-+ if (read_len < 0)
-+ return -1;
-+
-+ if (msg.msg_flags & MSG_TRUNC)
-+ return -1;
-+
-+ struct nlmsghdr *nlmh;
-+ for (nlmh = (struct nlmsghdr *) buf;
-+ NLMSG_OK (nlmh, (size_t) read_len);
-+ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
-+ {
-+ if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid
-+ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
-+ continue;
-+
-+ if (nlmh->nlmsg_type == RTM_NEWADDR)
-+ {
-+ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
-+
-+ switch (ifam->ifa_family)
-+ {
-+ case AF_INET:
-+ *seen_ipv4 = true;
-+ break;
-+ case AF_INET6:
-+ *seen_ipv6 = true;
-+
-+ if (ifam->ifa_flags & (IFA_F_DEPRECATED
-+ | IFA_F_TEMPORARY
-+ | IFA_F_HOMEADDRESS))
-+ {
-+ struct rtattr *rta = IFA_RTA (ifam);
-+ size_t len = (nlmh->nlmsg_len
-+ - NLMSG_LENGTH (sizeof (*ifam)));
-+ void *local = NULL;
-+ void *address = NULL;
-+ while (RTA_OK (rta, len))
-+ {
-+ switch (rta->rta_type)
-+ {
-+ case IFA_LOCAL:
-+ local = RTA_DATA (rta);
-+ break;
-+
-+ case IFA_ADDRESS:
-+ address = RTA_DATA (rta);
-+ break;
-+ }
-+
-+ rta = RTA_NEXT (rta, len);
-+ }
-+
-+ struct in6ailist *newp = alloca (sizeof (*newp));
-+ newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
-+ ? in6ai_deprecated : 0)
-+ | ((ifam->ifa_flags
-+ & IFA_F_TEMPORARY)
-+ ? in6ai_temporary : 0)
-+ | ((ifam->ifa_flags
-+ & IFA_F_HOMEADDRESS)
-+ ? in6ai_homeaddress : 0));
-+ memcpy (newp->info.addr, address ?: local,
-+ sizeof (newp->info.addr));
-+ newp->next = in6ailist;
-+ in6ailist = newp;
-+ ++in6ailistlen;
-+ }
-+ break;
-+ default:
-+ /* Ignore. */
-+ break;
-+ }
-+ }
-+ else if (nlmh->nlmsg_type == NLMSG_DONE)
-+ /* We found the end, leave the loop. */
-+ done = true;
-+ }
-+ }
-+ while (! done);
-+
-+ close_not_cancel_no_status (fd);
-+
-+ if (in6ailist != NULL)
-+ {
-+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai));
-+ if (*in6ai == NULL)
-+ return -1;
-+
-+ *in6ailen = in6ailistlen;
-+
-+ do
-+ {
-+ (*in6ai)[--in6ailistlen] = in6ailist->info;
-+ in6ailist = in6ailist->next;
-+ }
-+ while (in6ailist != NULL);
-+ }
-+
-+ return 0;
-+}
-+
-+
-+/* We don't know if we have NETLINK support compiled in in our
-+ Kernel. */
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+/* Define in ifaddrs.h. */
-+extern int __no_netlink_support attribute_hidden;
-+#else
-+# define __no_netlink_support 0
-+#endif
-+
-+
-+void
-+attribute_hidden
-+__check_pf (bool *seen_ipv4, bool *seen_ipv6,
-+ struct in6addrinfo **in6ai, size_t *in6ailen)
-+{
-+ *in6ai = NULL;
-+ *in6ailen = 0;
-+
-+ if (! __no_netlink_support)
-+ {
-+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-+
-+ struct sockaddr_nl nladdr;
-+ memset (&nladdr, '\0', sizeof (nladdr));
-+ nladdr.nl_family = AF_NETLINK;
-+
-+ socklen_t addr_len = sizeof (nladdr);
-+
-+ if (fd >= 0
-+ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
-+ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
-+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6,
-+ in6ai, in6ailen) == 0)
-+ /* It worked. */
-+ return;
-+
-+ if (fd >= 0)
-+ __close (fd);
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* Remember that there is no netlink support. */
-+ __no_netlink_support = 1;
-+#else
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+#endif
-+ }
-+
-+#if __ASSUME_NETLINK_SUPPORT == 0
-+ /* No netlink. Get the interface list via getifaddrs. */
-+ struct ifaddrs *ifa = NULL;
-+ if (getifaddrs (&ifa) != 0)
-+ {
-+ /* We cannot determine what interfaces are available. Be
-+ pessimistic. */
-+ *seen_ipv4 = true;
-+ *seen_ipv6 = true;
-+ return;
-+ }
-+
-+ struct ifaddrs *runp;
-+ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-+ if (runp->ifa_addr->sa_family == PF_INET)
-+ *seen_ipv4 = true;
-+ else if (runp->ifa_addr->sa_family == PF_INET6)
-+ *seen_ipv6 = true;
-+
-+ (void) freeifaddrs (ifa);
-+#endif
-+}
-Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
-===================================================================
-RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
-diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c 31 Oct 2006 17:29:58 -0000
-@@ -0,0 +1 @@
-+#include <sysdeps/unix/sysv/linux/check_pf.c>
-
diff --git a/packages/glibc/glibc-2.7/all_glibc-i586-chk.patch b/packages/glibc/glibc-2.7/all_glibc-i586-chk.patch
deleted file mode 100644
index 9362bcaf17..0000000000
--- a/packages/glibc/glibc-2.7/all_glibc-i586-chk.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-http://bugs.gentoo.org/199479
-
-2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
-
- * sysdeps/i386/i586/memcpy_chk.S: New file.
- * sysdeps/i386/i586/mempcpy_chk.S: Likewise.
- * sysdeps/i386/i586/memset_chk.S: Likewise.
-
-Index: glibc/sysdeps/i386/i586/memcpy_chk.S
-===================================================================
-RCS file: sysdeps/i386/i586/memcpy_chk.S
-diff -N sysdeps/i386/i586/memcpy_chk.S
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ glibc/sysdeps/i386/i586/memcpy_chk.S 13 Nov 2007 01:56:18 -0000 1.1
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/memcpy_chk.S>
-Index: glibc/sysdeps/i386/i586/mempcpy_chk.S
-===================================================================
-RCS file: sysdeps/i386/i586/mempcpy_chk.S
-diff -N sysdeps/i386/i586/mempcpy_chk.S
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ glibc/sysdeps/i386/i586/mempcpy_chk.S 13 Nov 2007 01:56:18 -0000 1.1
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/mempcpy_chk.S>
-Index: glibc/sysdeps/i386/i586/memset_chk.S
-===================================================================
-RCS file: sysdeps/i386/i586/memset_chk.S
-diff -N sysdeps/i386/i586/memset_chk.S
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ glibc/sysdeps/i386/i586/memset_chk.S 13 Nov 2007 01:56:18 -0000 1.1
-@@ -0,0 +1 @@
-+#include <sysdeps/i386/i686/memset_chk.S>
-
diff --git a/packages/glibc/glibc-cvs-2.3.5/arm-audit.patch b/packages/glibc/glibc-cvs-2.3.5/arm-audit.patch
deleted file mode 100644
index 2404f755e7..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/arm-audit.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-2005-05-09 Daniel Jacobowitz <dan@codesourcery.com>
- Mark Mitchell <mark@codesourcery.com>
-
- * sysdeps/generic/ldsodefs.h (struct audit_ifaces): Add ARM entries.
- * elf/tst-auditmod1.c: Add ARM definitions.
-
-Index: glibc/sysdeps/generic/ldsodefs.h
-===================================================================
---- glibc.orig/sysdeps/generic/ldsodefs.h 2005-04-05 17:36:52.000000000 -0400
-+++ glibc/sysdeps/generic/ldsodefs.h 2005-05-06 15:54:44.000000000 -0400
-@@ -203,6 +203,8 @@ struct La_sparc32_regs;
- struct La_sparc32_retval;
- struct La_sparc64_regs;
- struct La_sparc64_retval;
-+struct La_arm_regs;
-+struct La_arm_retval;
-
- struct audit_ifaces
- {
-@@ -284,6 +286,10 @@ struct audit_ifaces
- const struct La_sparc64_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
-+ Elf32_Addr (*arm_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-+ uintptr_t *, struct La_arm_regs *,
-+ unsigned int *, const char *name,
-+ long int *framesizep);
- };
- union
- {
-@@ -352,6 +358,9 @@ struct audit_ifaces
- const struct La_sparc32_regs *,
- struct La_sparc32_retval *,
- const char *);
-+ unsigned int (*arm_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-+ uintptr_t *, const struct La_arm_regs *,
-+ struct La_arm_retval *, const char *);
- };
- unsigned int (*objclose) (uintptr_t *);
-
-Index: glibc/elf/tst-auditmod1.c
-===================================================================
---- glibc.orig/elf/tst-auditmod1.c 2005-04-05 17:36:53.000000000 -0400
-+++ glibc/elf/tst-auditmod1.c 2005-05-06 15:53:28.000000000 -0400
-@@ -192,6 +192,12 @@ la_symbind64 (Elf64_Sym *sym, unsigned i
- # define La_regs La_sparc64_regs
- # define La_retval La_sparc64_retval
- # define int_retval lrv_reg[0]
-+#elif __arm__
-+# define pltenter la_arm_gnu_pltenter
-+# define pltext la_arm_gnu_pltexit
-+# define La_regs La_arm_regs
-+# define La_retval La_arm_retval
-+# define int_retval lrv_reg[0]
- #else
- # error "architecture specific code needed"
- #endif
-
diff --git a/packages/glibc/glibc-cvs-2.3.5/arm-audit2.patch b/packages/glibc/glibc-cvs-2.3.5/arm-audit2.patch
deleted file mode 100644
index 855632c53e..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/arm-audit2.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Index: ports/sysdeps/arm/dl-machine.h
-===================================================================
-RCS file: /cvs/glibc/ports/sysdeps/arm/dl-machine.h,v
-retrieving revision 1.53
-diff -u -r1.53 dl-machine.h
---- libc/ports/sysdeps/arm/dl-machine.h 10 Jun 2005 11:33:52 -0000 1.53
-+++ libc/ports/sysdeps/arm/dl-machine.h 11 Jun 2005 08:58:04 -0000
-@@ -243,6 +243,10 @@
- Prelinked libraries may use Elf32_Rela though. */
- #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
-
-+/* Names of the architecture-specific auditing callback functions. */
-+#define ARCH_LA_PLTENTER arm_gnu_pltenter
-+#define ARCH_LA_PLTEXIT arm_gnu_pltexit
-+
- #ifdef RESOLVE_MAP
-
- /* Deal with an out-of-range PC24 reloc. */
diff --git a/packages/glibc/glibc-cvs-2.3.5/arm-longlong.patch b/packages/glibc/glibc-cvs-2.3.5/arm-longlong.patch
deleted file mode 100644
index a0b2ed0039..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/arm-longlong.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
-+++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
-@@ -210,6 +210,14 @@
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -231,7 +239,14 @@
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)));}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined (__hppa) && W_TYPE_SIZE == 32
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ ports/sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
-@@ -0,0 +1,24 @@
-+/* __clz_tab -- support for longlong.h
-+ Copyright (C) 2004 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(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+/* Nothing required. */
-+#else
-+#include <sysdeps/generic/mp_clz_tab.c>
-+#endif
diff --git a/packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch b/packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch
deleted file mode 100644
index db1120058b..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/arm-memcpy.patch
+++ /dev/null
@@ -1,758 +0,0 @@
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ libc/ports/sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
-@@ -0,0 +1,251 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memmove (char *dst, const char *src) */
-+ENTRY(memmove)
-+ subs ip, r0, r1
-+ cmphi r2, ip
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r0, r4, lr}
-+ add r1, r1, r2
-+ add r0, r0, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #-4] )
-+ bne 26f
-+ ands ip, r1, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [r1, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb r1!, {r3 - r6} )
-+ PLD( stmgedb r0!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( ldrge r4, [r1, #-4]! )
-+ PLD( ldrgt r5, [r1, #-4]! )
-+ PLD( str r3, [r0, #-4]! )
-+ PLD( strge r4, [r0, #-4]! )
-+ PLD( strgt r5, [r0, #-4]! )
-+
-+20: PLD( pld [r1, #-96] )
-+ PLD( pld [r1, #-128] )
-+21: ldmdb r1!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ ldmdb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb r1!, {r3, r4, ip, lr}
-+ stmnedb r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb r1!, {r3, r4}
-+ stmnedb r0!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [r1, #-4]!
-+ strne r3, [r0, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1, #-1]
-+ ldrgeb r4, [r1, #-2]
-+ ldrgtb ip, [r1, #-3]
-+ strb r3, [r0, #-1]
-+ strgeb r4, [r0, #-2]
-+ strgtb ip, [r0, #-3]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [r1, #-1]!
-+ ldrgeb r4, [r1, #-1]!
-+ ldrgtb lr, [r1, #-1]!
-+ strb r3, [r0, #-1]!
-+ strgeb r4, [r0, #-1]!
-+ strgtb lr, [r0, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, r1, #3
-+ beq 19b
-+
-+27: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr r3, [r1]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [r1, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [r1, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [r0, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [r1, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb r1!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb r1!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [r1, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [r0, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add r1, r1, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add r1, r1, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add r1, r1, #1
-+ b 25b
-+
-+ .size memmove, . - memmove
-+END(memmove)
-+libc_hidden_builtin_def (memmove)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ libc/ports/sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
-@@ -0,0 +1,255 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+dst .req r1
-+src .req r0
-+
-+/* void *bcopy (const char *src, char *dst, size_t size) */
-+ENTRY(bcopy)
-+ subs ip, dst, src
-+ cmphi r2, ip
-+ movls r3, r0
-+ movls r0, r1
-+ movls r1, r3
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r4, lr}
-+ add src, src, r2
-+ add dst, dst, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, dst, #3
-+ PLD( pld [src, #-4] )
-+ bne 26f
-+ ands ip, src, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [src, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb src!, {r3 - r6} )
-+ PLD( stmgedb dst!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( ldrge r4, [src, #-4]! )
-+ PLD( ldrgt r5, [src, #-4]! )
-+ PLD( str r3, [dst, #-4]! )
-+ PLD( strge r4, [dst, #-4]! )
-+ PLD( strgt r5, [dst, #-4]! )
-+
-+20: PLD( pld [src, #-96] )
-+ PLD( pld [src, #-128] )
-+21: ldmdb src!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ ldmdb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb src!, {r3, r4, ip, lr}
-+ stmnedb dst!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb src!, {r3, r4}
-+ stmnedb dst!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [src, #-4]!
-+ strne r3, [dst, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {dst, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [src, #-1]
-+ ldrgeb r4, [src, #-2]
-+ ldrgtb ip, [src, #-3]
-+ strb r3, [dst, #-1]
-+ strgeb r4, [dst, #-2]
-+ strgtb ip, [dst, #-3]
-+ ldmfd sp!, {dst, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [src, #-1]!
-+ ldrgeb r4, [src, #-1]!
-+ ldrgtb lr, [src, #-1]!
-+ strb r3, [dst, #-1]!
-+ strgeb r4, [dst, #-1]!
-+ strgtb lr, [dst, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, src, #3
-+ beq 19b
-+
-+27: bic src, src, #3
-+ cmp ip, #2
-+ ldr r3, [src]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [src, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [src, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [src, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [dst, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [src, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb src!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb src!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [src, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [dst, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add src, src, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add src, src, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add src, src, #1
-+ b 25b
-+
-+ .size bcopy, . - bcopy
-+END(bcopy)
-
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ libc/ports/sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
-@@ -0,0 +1,242 @@
-+/*
-+ * Optimized memcpy implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memcpy (char *dst, const char *src) */
-+
-+ENTRY(memcpy)
-+ subs r2, r2, #4
-+ stmfd sp!, {r0, r4, lr}
-+ blt 7f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #0] )
-+ bne 8f
-+ ands ip, r1, #3
-+ bne 9f
-+
-+1: subs r2, r2, #4
-+ blt 6f
-+ subs r2, r2, #8
-+ blt 5f
-+ subs r2, r2, #16
-+ blt 4f
-+
-+ PLD( subs r2, r2, #65 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 3f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #64] )
-+ PLD( beq 2f )
-+ PLD( rsb ip, ip, #32 )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #96] )
-+ PLD( blt 2f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgeia r1!, {r3 - r6} )
-+ PLD( stmgeia r0!, {r3 - r6} )
-+ PLD( beq 2f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1], #4 )
-+ PLD( ldrge r4, [r1], #4 )
-+ PLD( ldrgt r5, [r1], #4 )
-+ PLD( str r3, [r0], #4 )
-+ PLD( strge r4, [r0], #4 )
-+ PLD( strgt r5, [r0], #4 )
-+
-+2: PLD( pld [r1, #96] )
-+3: ldmia r1!, {r3 - r8, ip, lr}
-+ subs r2, r2, #32
-+ stmia r0!, {r3 - r8, ip, lr}
-+ bge 2b
-+ PLD( cmn r2, #65 )
-+ PLD( bge 3b )
-+ PLD( add r2, r2, #65 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+4: ldmneia r1!, {r3, r4, ip, lr}
-+ stmneia r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+5: ldmneia r1!, {r3, r4}
-+ stmneia r0!, {r3, r4}
-+
-+ tst r2, #4
-+6: ldrne r3, [r1], #4
-+ strne r3, [r0], #4
-+
-+7: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb ip, [r1]
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb ip, [r0]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+8: rsb ip, ip, #4
-+ cmp ip, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb lr, [r1], #1
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb lr, [r0], #1
-+ subs r2, r2, ip
-+ blt 7b
-+ ands ip, r1, #3
-+ beq 1b
-+
-+9: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr lr, [r1], #4
-+ beq 17f
-+ bgt 18f
-+
-+
-+ .macro forward_copy_shift pull push
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #0] )
-+ blt 15f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 13f
-+
-+ PLD( subs r2, r2, #97 )
-+ PLD( blt 12f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( rsb ip, r1, #36 )
-+ PLD( pld [r1, #64] )
-+ PLD( ands ip, ip, #31 )
-+ PLD( pld [r1, #96] )
-+ PLD( beq 11f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #128] )
-+ PLD( blt 11f )
-+ PLD( sub r2, r2, ip )
-+10: PLD( mov r3, lr, pull #\pull )
-+ PLD( ldr lr, [r1], #4 )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r3, r3, lr, push #\push )
-+ PLD( str r3, [r0], #4 )
-+ PLD( bgt 10b )
-+
-+11: PLD( pld [r1, #128] )
-+12: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r9, ip, lr}
-+ subs r2, r2, #32
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, r7, push #\push
-+ mov r7, r7, pull #\pull
-+ orr r7, r7, r8, push #\push
-+ mov r8, r8, pull #\pull
-+ orr r8, r8, r9, push #\push
-+ mov r9, r9, pull #\pull
-+ orr r9, r9, ip, push #\push
-+ mov ip, ip, pull #\pull
-+ orr ip, ip, lr, push #\push
-+ stmia r0!, {r3 - r9, ip}
-+ bge 11b
-+ PLD( cmn r2, #97 )
-+ PLD( bge 12b )
-+ PLD( add r2, r2, #97 )
-+ cmn r2, #16
-+ blt 14f
-+13: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r6, lr}
-+ sub r2, r2, #16
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, lr, push #\push
-+ stmia r0!, {r3 - r6}
-+14: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 16f
-+15: mov r3, lr, pull #\pull
-+ ldr lr, [r1], #4
-+ subs r2, r2, #4
-+ orr r3, r3, lr, push #\push
-+ str r3, [r0], #4
-+ bge 15b
-+16:
-+ .endm
-+
-+
-+ forward_copy_shift pull=8 push=24
-+ sub r1, r1, #3
-+ b 7b
-+
-+17: forward_copy_shift pull=16 push=16
-+ sub r1, r1, #2
-+ b 7b
-+
-+18: forward_copy_shift pull=24 push=8
-+ sub r1, r1, #1
-+ b 7b
-+
-+ .size memcpy, . - memcpy
-+END(memcpy)
-+libc_hidden_builtin_def (memcpy)
-+
diff --git a/packages/glibc/glibc-cvs-2.3.5/arm-no-hwcap.patch b/packages/glibc/glibc-cvs-2.3.5/arm-no-hwcap.patch
deleted file mode 100644
index d3263a7dc6..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/arm-no-hwcap.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libc/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h.orig 2005-12-11 14:49:51 +0100
-+++ libc/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h 2005-12-11 14:51:28 +0100
-@@ -64,7 +64,7 @@
- HWCAP_ARM_VFP = 1 << 6,
- HWCAP_ARM_EDSP = 1 << 7,
-
-- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
-+ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
- };
-
- static inline int
diff --git a/packages/glibc/glibc-cvs-2.3.5/dl-cache-libcmp.patch b/packages/glibc/glibc-cvs-2.3.5/dl-cache-libcmp.patch
deleted file mode 100644
index c74ebf6c09..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/dl-cache-libcmp.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- libc/elf/Versions.old 2005-06-27 13:38:25.000000000 +0100
-+++ libc/elf/Versions 2005-06-27 14:03:54.000000000 +0100
-@@ -56,5 +56,7 @@
- _dl_make_stack_executable;
- # Only here for gdb while a better method is developed.
- _dl_debug_state;
-+ # for ldconfig
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-cvs-2.3.5/dyn-ldconfig-20041128.patch b/packages/glibc/glibc-cvs-2.3.5/dyn-ldconfig-20041128.patch
deleted file mode 100644
index 451b6d4afc..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/dyn-ldconfig-20041128.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libc/elf/Makefile~dyn-ldconfig-20041128
-+++ libc/elf/Makefile
-@@ -118,12 +118,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
diff --git a/packages/glibc/glibc-cvs-2.3.5/ldsocache-varrun.patch b/packages/glibc/glibc-cvs-2.3.5/ldsocache-varrun.patch
deleted file mode 100644
index 9994d4f879..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/ldsocache-varrun.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-This patch moves ld.so.cache from /etc to /var/run. This is for devices
-where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
-+++ libc/sysdeps/generic/dl-cache.h
-@@ -29,7 +29,7 @@
- #endif
-
- #ifndef LD_SO_CACHE
--# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
-+# define LD_SO_CACHE "/var/run/ld.so.cache"
- #endif
-
- #ifndef add_system_dir
diff --git a/packages/glibc/glibc-cvs-2.3.5/no-z-defs.patch b/packages/glibc/glibc-cvs-2.3.5/no-z-defs.patch
deleted file mode 100644
index 48c6a41267..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/no-z-defs.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-Create a configparms file which disabled no-z-defs.
-This is required to build a working glibs for sh4,
-without there will be a lot linker errors during the build.
-
-diff -duNr libc.orig/configparms libc/configparms
---- libc.orig/configparms 1970-01-01 10:00:00.000000000 +1000
-+++ libc/configparms 2006-02-23 14:08:18.000000000 +1100
-@@ -0,0 +1 @@
-+no-z-defs=yes
diff --git a/packages/glibc/glibc-cvs-2.3.5/raise.patch b/packages/glibc/glibc-cvs-2.3.5/raise.patch
deleted file mode 100644
index 16b4cb85a1..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/raise.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- glibc.orig/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2003-01-02 19:38:38.000000000 -0500
-+++ glibc/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2005-10-31 14:19:58.000000000 -0500
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991, 1996, 2002, 2003 Free Software Foundation, Inc.
-+/* Copyright (C) 1991, 1996, 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
-@@ -18,10 +18,13 @@
-
- #include <signal.h>
- #include <unistd.h>
--#include <bits/libc-lock.h>
-
--#ifndef SHARED
-+#ifndef IS_IN_rtld
-+# include <bits/libc-lock.h>
-+
-+# ifndef SHARED
- weak_extern (__pthread_raise)
-+# endif
- #endif
-
- /* Raise the signal SIG. */
-@@ -29,8 +32,12 @@ int
- raise (sig)
- int sig;
- {
-+#ifdef IS_IN_rtld
-+ return __kill (__getpid (), sig);
-+#else
- return __libc_maybe_call2 (pthread_raise, (sig),
- __kill (__getpid (), sig));
-+#endif
- }
- libc_hidden_def (raise)
- weak_alias (raise, gsignal
diff --git a/packages/glibc/glibc-cvs-2.3.5/superh-fcntl.patch b/packages/glibc/glibc-cvs-2.3.5/superh-fcntl.patch
deleted file mode 100644
index 364b9e1b32..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/superh-fcntl.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- sysdeps/unix/sysv/linux/sh/bits/fcntl.h_orig 2006-05-16 16:58:30.000000000 +0000
-+++ sysdeps/unix/sysv/linux/sh/bits/fcntl.h 2006-05-16 16:58:49.000000000 +0000
-@@ -90,6 +90,12 @@
- # define F_GETSIG 11 /* Get number of signal to be sent. */
- #endif
-
-+#ifdef __USE_GNU
-+# define F_SETLEASE 1024 /* Set a lease. */
-+# define F_GETLEASE 1025 /* Enquire what lease is active. */
-+# define F_NOTIFY 1026 /* Request notifications on a directory */
-+#endif
-+
- /* For F_[GET|SET]FL. */
- #define FD_CLOEXEC 1 /* actually anything with low bit set goes */
-
-@@ -111,6 +117,24 @@
- # define LOCK_UN 8 /* remove lock */
- #endif
-
-+#ifdef __USE_GNU
-+# define LOCK_MAND 32 /* this is a mandatory flock: */
-+# define LOCK_READ 64 /* ...which allows concurrent read operations. */
-+# define LOCK_WRITE 128 /* ...which allows concurrent write operations. */
-+# define LOCK_RW 192 /* ...which allows concurrent read & write operations. */
-+#endif
-+
-+#ifdef __USE_GNU
-+/* Types of directory notifications that may be requested with F_NOTIFY. */
-+# define DN_ACCESS 0x00000001 /* File Acessed. */
-+# define DN_MODIFY 0x00000002 /* File Modified. */
-+# define DN_CREATE 0x00000004 /* File created. */
-+# define DN_DELETE 0x00000008 /* File removed. */
-+# define DN_RENAME 0x00000010 /* File renamed. */
-+# define DN_ATTRIB 0x00000020 /* File changed attributes. */
-+# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
-+#endif
-+
- struct flock
- {
- short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
diff --git a/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch b/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch
deleted file mode 100644
index 7dc699cfad..0000000000
--- a/packages/glibc/glibc-cvs-2.3.5/zecke-sane-readelf.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-upstream: http://sources.redhat.com/bugzilla/show_bug.cgi?id=3004
-status: WONTFIX
-comment: Use OEs version of the readelf version. There might be no
-host system version (e.g. on OSX) or it is not multiarch.
-
-Index: glibc-2.3.2/configure
-===================================================================
---- glibc-2.3.2.orig/configure 2006-08-05 20:18:11.000000000 +0200
-+++ glibc-2.3.2/configure 2006-08-05 22:09:08.000000000 +0200
-@@ -4799,6 +4799,95 @@
- fi
- fi
-
-+### XXXX copy and pasted
-+# Check for readelf
-+# Extract the first word of "$target_alias-readelf", so it can be a program name with args.
-+set dummy $target_alias-readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$READELF"; then
-+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_READELF="$target_alias-readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+fi
-+fi
-+READELF=$ac_cv_prog_READELF
-+if test -n "$READELF"; then
-+ { echo "$as_me:$LINENO: result: $READELF" >&5
-+echo "${ECHO_T}$READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+
-+if test -z "$ac_cv_prog_READELF"; then
-+ if test "$build" = "$target"; then
-+ ac_ct_READELF=$READELF
-+ # Extract the first word of "readelf", so it can be a program name with args.
-+set dummy readelf; ac_word=$2
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_READELF"; then
-+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_prog_ac_ct_READELF="readelf"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+IFS=$as_save_IFS
-+
-+ test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF="readelf"
-+fi
-+fi
-+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
-+if test -n "$ac_ct_READELF"; then
-+ { echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
-+echo "${ECHO_T}$ac_ct_READELF" >&6; }
-+else
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
-+fi
-+
-+ READELF=ac_ct_READELF
-+ else
-+ READELF="readelf"
-+ fi
-+else
-+ READELF="$ac_cv_prog_READELF"
-+fi
-+
-+### XXXX copy and pasted
-+
- echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
- echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
- if test "${libc_cv_initfinit_array+set}" = set; then
-@@ -4818,7 +4907,7 @@
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }
- then
-- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
- libc_cv_initfinit_array=yes
- else
- libc_cv_initfinit_array=no
-@@ -4963,7 +5052,7 @@
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }
- then
-- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
- libc_cv_z_combreloc=yes
- else
- libc_cv_z_combreloc=no
-Index: glibc-2.3.2/configure.in
-===================================================================
---- glibc-2.3.2.orig/configure.in 2003-02-26 01:46:31.000000000 +0100
-+++ glibc-2.3.2/configure.in 2006-08-05 22:05:32.000000000 +0200
-@@ -1187,6 +1187,8 @@
- fi
- fi
-
-+ AC_CHECK_TARGET_TOOL([READELF],[readelf],[readelf],[$PATH])
-+
- AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
- libc_cv_initfinit_array, [dnl
- cat > conftest.c <<EOF
-@@ -1198,7 +1200,7 @@
- if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
- -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
- then
-- if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-+ if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
- libc_cv_initfinit_array=yes
- else
- libc_cv_initfinit_array=no
-@@ -1290,7 +1292,7 @@
- dnl introducing new options this is not easily doable. Instead use a tool
- dnl which always is cross-platform: readelf. To detect whether -z combreloc
- dnl look for a section named .rel.dyn.
-- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-+ if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
- libc_cv_z_combreloc=yes
- else
- libc_cv_z_combreloc=no
diff --git a/packages/glibc/glibc-cvs/arm-ioperm.patch b/packages/glibc/glibc-cvs/arm-ioperm.patch
deleted file mode 100644
index ae9423ef55..0000000000
--- a/packages/glibc/glibc-cvs/arm-ioperm.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- sysdeps/unix/sysv/linux/arm/ioperm.c 20 Feb 2003 22:22:35 -0000 1.6
-+++ sysdeps/unix/sysv/linux/arm/ioperm.c 24 Oct 2003 20:59:38 -0000
-@@ -100,8 +100,8 @@
- {
- char systype[256];
- int i, n;
-- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
-- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
-+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE };
-+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT };
- size_t len = sizeof(io.base);
-
- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
diff --git a/packages/glibc/glibc-cvs/arm-longlong.patch b/packages/glibc/glibc-cvs/arm-longlong.patch
deleted file mode 100644
index dfb9309b7b..0000000000
--- a/packages/glibc/glibc-cvs/arm-longlong.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- stdlib/longlong.h~ 2002-09-29 18:45:58.000000000 +0100
-+++ stdlib/longlong.h 2004-03-20 19:16:44.000000000 +0000
-@@ -210,6 +210,14 @@
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
-+/* v3m and all higher arches have long multiply support. */
-+#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__)
-+#define umul_ppmm(xh, xl, a, b) \
-+ __asm__ ("umull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#define UMUL_TIME 5
-+#define smul_ppmm(xh, xl, a, b) \
-+ __asm__ ("smull %0,%1,%2,%3" : "=&r" (xl), "=&r" (xh) : "r" (a), "r" (b))
-+#else
- #define umul_ppmm(xh, xl, a, b) \
- {register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
-@@ -231,7 +239,14 @@
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)));}
- #define UMUL_TIME 20
-+#endif
- #define UDIV_TIME 100
-+
-+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-+#define COUNT_LEADING_ZEROS_0 32
-+#endif
-+
- #endif /* __arm__ */
-
- #if defined (__hppa) && W_TYPE_SIZE == 32
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/mp_clz_tab.c 2004-03-20 19:24:26.000000000 +0000
-@@ -0,0 +1,24 @@
-+/* __clz_tab -- support for longlong.h
-+ Copyright (C) 2004 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(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__)
-+/* Nothing required. */
-+#else
-+#include <sysdeps/generic/mp_clz_tab.c>
-+#endif
diff --git a/packages/glibc/glibc-cvs/arm-machine-gmon.patch b/packages/glibc/glibc-cvs/arm-machine-gmon.patch
deleted file mode 100644
index 0fa789d86b..0000000000
--- a/packages/glibc/glibc-cvs/arm-machine-gmon.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/arm/machine-gmon.h~ 2001-07-06 00:55:48.000000000 -0400
-+++ sysdeps/arm/machine-gmon.h 2004-04-25 03:56:20.000000000 -0400
-@@ -35,7 +35,7 @@
- static void mcount_internal (u_long frompc, u_long selfpc);
-
- #define _MCOUNT_DECL(frompc, selfpc) \
--static void mcount_internal (u_long frompc, u_long selfpc)
-+static __attribute__((used)) void mcount_internal (u_long frompc, u_long selfpc)
-
- /* This macro/func MUST save r0, r1 because the compiler inserts
- blind calls to _mount(), ignoring the fact that _mcount may
diff --git a/packages/glibc/glibc-cvs/arm-memcpy.patch b/packages/glibc/glibc-cvs/arm-memcpy.patch
deleted file mode 100644
index bc2b3dab84..0000000000
--- a/packages/glibc/glibc-cvs/arm-memcpy.patch
+++ /dev/null
@@ -1,758 +0,0 @@
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memmove.S 2004-03-20 18:37:23.000000000 +0000
-@@ -0,0 +1,251 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memmove (char *dst, const char *src) */
-+ENTRY(memmove)
-+ subs ip, r0, r1
-+ cmphi r2, ip
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r0, r4, lr}
-+ add r1, r1, r2
-+ add r0, r0, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #-4] )
-+ bne 26f
-+ ands ip, r1, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [r1, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb r1!, {r3 - r6} )
-+ PLD( stmgedb r0!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( ldrge r4, [r1, #-4]! )
-+ PLD( ldrgt r5, [r1, #-4]! )
-+ PLD( str r3, [r0, #-4]! )
-+ PLD( strge r4, [r0, #-4]! )
-+ PLD( strgt r5, [r0, #-4]! )
-+
-+20: PLD( pld [r1, #-96] )
-+ PLD( pld [r1, #-128] )
-+21: ldmdb r1!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ ldmdb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ stmgedb r0!, {r3, r4, ip, lr}
-+ ldmgedb r1!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb r0!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb r1!, {r3, r4, ip, lr}
-+ stmnedb r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb r1!, {r3, r4}
-+ stmnedb r0!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [r1, #-4]!
-+ strne r3, [r0, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1, #-1]
-+ ldrgeb r4, [r1, #-2]
-+ ldrgtb ip, [r1, #-3]
-+ strb r3, [r0, #-1]
-+ strgeb r4, [r0, #-2]
-+ strgtb ip, [r0, #-3]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [r1, #-1]!
-+ ldrgeb r4, [r1, #-1]!
-+ ldrgtb lr, [r1, #-1]!
-+ strb r3, [r0, #-1]!
-+ strgeb r4, [r0, #-1]!
-+ strgtb lr, [r0, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, r1, #3
-+ beq 19b
-+
-+27: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr r3, [r1]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [r1, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [r1, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [r1, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [r0, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [r1, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb r1!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb r1!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb r0!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [r1, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [r0, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add r1, r1, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add r1, r1, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add r1, r1, #1
-+ b 25b
-+
-+ .size memmove, . - memmove
-+END(memmove)
-+libc_hidden_builtin_def (memmove)
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/bcopy.S 2004-03-20 18:37:48.000000000 +0000
-@@ -0,0 +1,255 @@
-+/*
-+ * Optimized memmove implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+dst .req r1
-+src .req r0
-+
-+/* void *bcopy (const char *src, char *dst, size_t size) */
-+ENTRY(bcopy)
-+ subs ip, dst, src
-+ cmphi r2, ip
-+ movls r3, r0
-+ movls r0, r1
-+ movls r1, r3
-+ bls memcpy(PLT)
-+
-+ stmfd sp!, {r4, lr}
-+ add src, src, r2
-+ add dst, dst, r2
-+ subs r2, r2, #4
-+ blt 25f
-+ ands ip, dst, #3
-+ PLD( pld [src, #-4] )
-+ bne 26f
-+ ands ip, src, #3
-+ bne 27f
-+
-+19: subs r2, r2, #4
-+ blt 24f
-+ subs r2, r2, #8
-+ blt 23f
-+ subs r2, r2, #16
-+ blt 22f
-+
-+ PLD( pld [src, #-32] )
-+ PLD( subs r2, r2, #96 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 21f )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-64] )
-+ PLD( beq 20f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-96] )
-+ PLD( blt 20f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgedb src!, {r3 - r6} )
-+ PLD( stmgedb dst!, {r3 - r6} )
-+ PLD( beq 20f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( ldrge r4, [src, #-4]! )
-+ PLD( ldrgt r5, [src, #-4]! )
-+ PLD( str r3, [dst, #-4]! )
-+ PLD( strge r4, [dst, #-4]! )
-+ PLD( strgt r5, [dst, #-4]! )
-+
-+20: PLD( pld [src, #-96] )
-+ PLD( pld [src, #-128] )
-+21: ldmdb src!, {r3, r4, ip, lr}
-+ subs r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ ldmdb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ stmgedb dst!, {r3, r4, ip, lr}
-+ ldmgedb src!, {r3, r4, ip, lr}
-+ subges r2, r2, #32
-+ stmdb dst!, {r3, r4, ip, lr}
-+ bge 20b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 21b )
-+ PLD( add r2, r2, #96 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r4, pc}
-+
-+ tst r2, #16
-+22: ldmnedb src!, {r3, r4, ip, lr}
-+ stmnedb dst!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+23: ldmnedb src!, {r3, r4}
-+ stmnedb dst!, {r3, r4}
-+
-+ tst r2, #4
-+24: ldrne r3, [src, #-4]!
-+ strne r3, [dst, #-4]!
-+
-+25: ands r2, r2, #3
-+ ldmeqfd sp!, {dst, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [src, #-1]
-+ ldrgeb r4, [src, #-2]
-+ ldrgtb ip, [src, #-3]
-+ strb r3, [dst, #-1]
-+ strgeb r4, [dst, #-2]
-+ strgtb ip, [dst, #-3]
-+ ldmfd sp!, {dst, r4, pc}
-+
-+26: cmp ip, #2
-+ ldrb r3, [src, #-1]!
-+ ldrgeb r4, [src, #-1]!
-+ ldrgtb lr, [src, #-1]!
-+ strb r3, [dst, #-1]!
-+ strgeb r4, [dst, #-1]!
-+ strgtb lr, [dst, #-1]!
-+ subs r2, r2, ip
-+ blt 25b
-+ ands ip, src, #3
-+ beq 19b
-+
-+27: bic src, src, #3
-+ cmp ip, #2
-+ ldr r3, [src]
-+ beq 35f
-+ blt 36f
-+
-+
-+ .macro backward_copy_shift push pull
-+
-+ cmp r2, #12
-+ PLD( pld [src, #-4] )
-+ blt 33f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 31f
-+
-+ PLD( subs r2, r2, #96 )
-+ PLD( pld [src, #-32] )
-+ PLD( blt 30f )
-+ PLD( pld [src, #-64] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, src, #31 )
-+ PLD( pld [src, #-96] )
-+ PLD( beq 29f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [src, #-128] )
-+ PLD( blt 29f )
-+ PLD( sub r2, r2, ip )
-+28: PLD( mov r4, r3, push #\push )
-+ PLD( ldr r3, [src, #-4]! )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r4, r4, r3, pull #\pull )
-+ PLD( str r4, [dst, #-4]! )
-+ PLD( bgt 28b )
-+
-+29: PLD( pld [src, #-128] )
-+30: mov lr, r3, push #\push
-+ ldmdb src!, {r3 - r9, ip}
-+ subs r2, r2, #32
-+ orr lr, lr, ip, pull #\pull
-+ mov ip, ip, push #\push
-+ orr ip, ip, r9, pull #\pull
-+ mov r9, r9, push #\push
-+ orr r9, r9, r8, pull #\pull
-+ mov r8, r8, push #\push
-+ orr r8, r8, r7, pull #\pull
-+ mov r7, r7, push #\push
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r9, ip, lr}
-+ bge 29b
-+ PLD( cmn r2, #96 )
-+ PLD( bge 30b )
-+ PLD( add r2, r2, #96 )
-+ cmn r2, #16
-+ blt 32f
-+31: mov r7, r3, push #\push
-+ ldmdb src!, {r3 - r6}
-+ sub r2, r2, #16
-+ orr r7, r7, r6, pull #\pull
-+ mov r6, r6, push #\push
-+ orr r6, r6, r5, pull #\pull
-+ mov r5, r5, push #\push
-+ orr r5, r5, r4, pull #\pull
-+ mov r4, r4, push #\push
-+ orr r4, r4, r3, pull #\pull
-+ stmdb dst!, {r4 - r7}
-+32: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 34f
-+33: mov r4, r3, push #\push
-+ ldr r3, [src, #-4]!
-+ subs r2, r2, #4
-+ orr r4, r4, r3, pull #\pull
-+ str r4, [dst, #-4]!
-+ bge 33b
-+34:
-+ .endm
-+
-+
-+ backward_copy_shift push=8 pull=24
-+ add src, src, #3
-+ b 25b
-+
-+35: backward_copy_shift push=16 pull=16
-+ add src, src, #2
-+ b 25b
-+
-+36: backward_copy_shift push=24 pull=8
-+ add src, src, #1
-+ b 25b
-+
-+ .size bcopy, . - bcopy
-+END(bcopy)
-
---- /dev/null 2004-02-02 20:32:13.000000000 +0000
-+++ sysdeps/arm/memcpy.S 2004-05-02 14:33:22.000000000 +0100
-@@ -0,0 +1,242 @@
-+/*
-+ * Optimized memcpy implementation for ARM processors
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 23, 2003
-+ * Copyright: (C) MontaVista Software, Inc.
-+ *
-+ * This file 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 file 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.
-+ */
-+
-+#include <sysdep.h>
-+
-+
-+/*
-+ * Endian independent macros for shifting bytes within registers.
-+ */
-+#ifndef __ARMEB__
-+#define pull lsr
-+#define push lsl
-+#else
-+#define pull lsl
-+#define push lsr
-+#endif
-+
-+/*
-+ * Enable data preload for architectures that support it (ARMv5 and above)
-+ */
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-+
-+
-+/* char * memcpy (char *dst, const char *src) */
-+
-+ENTRY(memcpy)
-+ subs r2, r2, #4
-+ stmfd sp!, {r0, r4, lr}
-+ blt 7f
-+ ands ip, r0, #3
-+ PLD( pld [r1, #0] )
-+ bne 8f
-+ ands ip, r1, #3
-+ bne 9f
-+
-+1: subs r2, r2, #4
-+ blt 6f
-+ subs r2, r2, #8
-+ blt 5f
-+ subs r2, r2, #16
-+ blt 4f
-+
-+ PLD( subs r2, r2, #65 )
-+ stmfd sp!, {r5 - r8}
-+ PLD( blt 3f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( ands ip, r1, #31 )
-+ PLD( pld [r1, #64] )
-+ PLD( beq 2f )
-+ PLD( rsb ip, ip, #32 )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #96] )
-+ PLD( blt 2f )
-+ PLD( cmp ip, #16 )
-+ PLD( sub r2, r2, ip )
-+ PLD( ldmgeia r1!, {r3 - r6} )
-+ PLD( stmgeia r0!, {r3 - r6} )
-+ PLD( beq 2f )
-+ PLD( and ip, ip, #15 )
-+ PLD( cmp ip, #8 )
-+ PLD( ldr r3, [r1], #4 )
-+ PLD( ldrge r4, [r1], #4 )
-+ PLD( ldrgt r5, [r1], #4 )
-+ PLD( str r3, [r0], #4 )
-+ PLD( strge r4, [r0], #4 )
-+ PLD( strgt r5, [r0], #4 )
-+
-+2: PLD( pld [r1, #96] )
-+3: ldmia r1!, {r3 - r8, ip, lr}
-+ subs r2, r2, #32
-+ stmia r0!, {r3 - r8, ip, lr}
-+ bge 2b
-+ PLD( cmn r2, #65 )
-+ PLD( bge 3b )
-+ PLD( add r2, r2, #65 )
-+ tst r2, #31
-+ ldmfd sp!, {r5 - r8}
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ tst r2, #16
-+4: ldmneia r1!, {r3, r4, ip, lr}
-+ stmneia r0!, {r3, r4, ip, lr}
-+
-+ tst r2, #8
-+5: ldmneia r1!, {r3, r4}
-+ stmneia r0!, {r3, r4}
-+
-+ tst r2, #4
-+6: ldrne r3, [r1], #4
-+ strne r3, [r0], #4
-+
-+7: ands r2, r2, #3
-+ ldmeqfd sp!, {r0, r4, pc}
-+
-+ cmp r2, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb ip, [r1]
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb ip, [r0]
-+ ldmfd sp!, {r0, r4, pc}
-+
-+8: rsb ip, ip, #4
-+ cmp ip, #2
-+ ldrb r3, [r1], #1
-+ ldrgeb r4, [r1], #1
-+ ldrgtb lr, [r1], #1
-+ strb r3, [r0], #1
-+ strgeb r4, [r0], #1
-+ strgtb lr, [r0], #1
-+ subs r2, r2, ip
-+ blt 7b
-+ ands ip, r1, #3
-+ beq 1b
-+
-+9: bic r1, r1, #3
-+ cmp ip, #2
-+ ldr lr, [r1], #4
-+ beq 17f
-+ bgt 18f
-+
-+
-+ .macro forward_copy_shift pull push
-+
-+ cmp r2, #12
-+ PLD( pld [r1, #0] )
-+ blt 15f
-+ subs r2, r2, #28
-+ stmfd sp!, {r5 - r9}
-+ blt 13f
-+
-+ PLD( subs r2, r2, #97 )
-+ PLD( blt 12f )
-+ PLD( pld [r1, #32] )
-+
-+ PLD( @ cache alignment )
-+ PLD( rsb ip, r1, #36 )
-+ PLD( pld [r1, #64] )
-+ PLD( ands ip, ip, #31 )
-+ PLD( pld [r1, #96] )
-+ PLD( beq 11f )
-+ PLD( cmp r2, ip )
-+ PLD( pld [r1, #128] )
-+ PLD( blt 11f )
-+ PLD( sub r2, r2, ip )
-+10: PLD( mov r3, lr, pull #\pull )
-+ PLD( ldr lr, [r1], #4 )
-+ PLD( subs ip, ip, #4 )
-+ PLD( orr r3, r3, lr, push #\push )
-+ PLD( str r3, [r0], #4 )
-+ PLD( bgt 10b )
-+
-+11: PLD( pld [r1, #128] )
-+12: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r9, ip, lr}
-+ subs r2, r2, #32
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, r7, push #\push
-+ mov r7, r7, pull #\pull
-+ orr r7, r7, r8, push #\push
-+ mov r8, r8, pull #\pull
-+ orr r8, r8, r9, push #\push
-+ mov r9, r9, pull #\pull
-+ orr r9, r9, ip, push #\push
-+ mov ip, ip, pull #\pull
-+ orr ip, ip, lr, push #\push
-+ stmia r0!, {r3 - r9, ip}
-+ bge 11b
-+ PLD( cmn r2, #97 )
-+ PLD( bge 12b )
-+ PLD( add r2, r2, #97 )
-+ cmn r2, #16
-+ blt 14f
-+13: mov r3, lr, pull #\pull
-+ ldmia r1!, {r4 - r6, lr}
-+ sub r2, r2, #16
-+ orr r3, r3, r4, push #\push
-+ mov r4, r4, pull #\pull
-+ orr r4, r4, r5, push #\push
-+ mov r5, r5, pull #\pull
-+ orr r5, r5, r6, push #\push
-+ mov r6, r6, pull #\pull
-+ orr r6, r6, lr, push #\push
-+ stmia r0!, {r3 - r6}
-+14: adds r2, r2, #28
-+ ldmfd sp!, {r5 - r9}
-+ blt 16f
-+15: mov r3, lr, pull #\pull
-+ ldr lr, [r1], #4
-+ subs r2, r2, #4
-+ orr r3, r3, lr, push #\push
-+ str r3, [r0], #4
-+ bge 15b
-+16:
-+ .endm
-+
-+
-+ forward_copy_shift pull=8 push=24
-+ sub r1, r1, #3
-+ b 7b
-+
-+17: forward_copy_shift pull=16 push=16
-+ sub r1, r1, #2
-+ b 7b
-+
-+18: forward_copy_shift pull=24 push=8
-+ sub r1, r1, #1
-+ b 7b
-+
-+ .size memcpy, . - memcpy
-+END(memcpy)
-+libc_hidden_builtin_def (memcpy)
-+
diff --git a/packages/glibc/glibc-cvs/arm-no-hwcap.patch b/packages/glibc/glibc-cvs/arm-no-hwcap.patch
deleted file mode 100644
index 17bfdcd125..0000000000
--- a/packages/glibc/glibc-cvs/arm-no-hwcap.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sysdeps/unix/sysv/linux/arm/dl-procinfo.h Mon Jul 23 12:57:23 2001
-+++ sysdeps/unix/sysv/linux/arm/dl-procinfo.h Sun Feb 10 06:37:00 2002
-@@ -67,7 +67,7 @@
- HWCAP_ARM_VFP = 1 << 6,
- HWCAP_ARM_EDSP = 1 << 7,
-
-- HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
-+ HWCAP_IMPORTANT = HWCAP_ARM_FAST_MULT
- };
-
- static inline int
diff --git a/packages/glibc/glibc-cvs/dl-cache-libcmp.patch b/packages/glibc/glibc-cvs/dl-cache-libcmp.patch
deleted file mode 100644
index c74ebf6c09..0000000000
--- a/packages/glibc/glibc-cvs/dl-cache-libcmp.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- libc/elf/Versions.old 2005-06-27 13:38:25.000000000 +0100
-+++ libc/elf/Versions 2005-06-27 14:03:54.000000000 +0100
-@@ -56,5 +56,7 @@
- _dl_make_stack_executable;
- # Only here for gdb while a better method is developed.
- _dl_debug_state;
-+ # for ldconfig
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-cvs/dyn-ldconfig-20041128.patch b/packages/glibc/glibc-cvs/dyn-ldconfig-20041128.patch
deleted file mode 100644
index 451b6d4afc..0000000000
--- a/packages/glibc/glibc-cvs/dyn-ldconfig-20041128.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libc/elf/Makefile~dyn-ldconfig-20041128
-+++ libc/elf/Makefile
-@@ -118,12 +118,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
diff --git a/packages/glibc/glibc-cvs/dyn-ldconfig.patch b/packages/glibc/glibc-cvs/dyn-ldconfig.patch
deleted file mode 100644
index 1041965d05..0000000000
--- a/packages/glibc/glibc-cvs/dyn-ldconfig.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- elf/Makefile 13 Mar 2003 21:50:57 -0000 1.258
-+++ elf/Makefile 27 Mar 2003 20:36:07 -0000
-@@ -109,12 +109,13 @@
-
- ifeq (yes,$(use-ldconfig))
- ifeq (yes,$(build-shared))
--others-static += ldconfig
-+#others-static += ldconfig
- others += ldconfig
- install-rootsbin += ldconfig
-
- ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
- extra-objs += $(ldconfig-modules:=.o)
-+CPPFLAGS-readlib.c = -DNOT_IN_libc=1
-
- # To find xmalloc.c and xstrdup.c
- vpath %.c ../locale/programs
---- elf/ldconfig.c 13 Jan 2003 08:53:14 -0000 1.31
-+++ elf/ldconfig.c 27 Mar 2003 20:36:09 -0000
-@@ -149,6 +149,9 @@
- static int
- is_hwcap_platform (const char *name)
- {
-+#if 1
-+ return 0;
-+#else
- int hwcap_idx = _dl_string_hwcap (name);
-
- if (hwcap_idx != -1 && ((1 << hwcap_idx) & hwcap_mask))
-@@ -164,6 +167,7 @@
- #endif
-
- return 0;
-+#endif
- }
-
- /* Get hwcap (including platform) encoding of path. */
-@@ -175,6 +179,7 @@
- uint64_t hwcap = 0;
- uint64_t h;
-
-+#if 0
- size_t len;
-
- len = strlen (str);
-@@ -210,6 +215,7 @@
- *ptr = '\0';
- }
-
-+#endif
- free (str);
- return hwcap;
- }
---- elf/Versions.old 2004-06-26 13:18:35.000000000 +0100
-+++ elf/Versions 2004-06-26 14:41:09.000000000 +0100
-@@ -54,5 +54,6 @@
- _dl_get_tls_static_info; _dl_allocate_tls_init;
- _dl_tls_setup; _dl_rtld_di_serinfo;
- _dl_make_stack_executable;
-+ _dl_cache_libcmp;
- }
- }
diff --git a/packages/glibc/glibc-cvs/eabi-patch-1 b/packages/glibc/glibc-cvs/eabi-patch-1
deleted file mode 100644
index 9b1fd408da..0000000000
--- a/packages/glibc/glibc-cvs/eabi-patch-1
+++ /dev/null
@@ -1,88 +0,0 @@
-From libc-alpha-return-17227-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Tue Mar 22 15:57:25 2005
-Return-Path: <libc-alpha-return-17227-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-libc-alpha at sources dot redhat dot com
-Received: (qmail 12343 invoked by alias); 22 Mar 2005 15:57:24 -0000
-Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
-List-Post: <mailto:libc-alpha at sources dot redhat dot com>
-List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: libc-alpha-owner at sources dot redhat dot com
-Delivered-To: mailing list libc-alpha at sources dot redhat dot com
-Received: (qmail 12264 invoked from network); 22 Mar 2005 15:57:19 -0000
-Received: from unknown (HELO nevyn.them.org) (66.93.172.17)
- by sourceware dot org with SMTP; 22 Mar 2005 15:57:19 -0000
-Received: from drow by nevyn.them.org with local (Exim 4.50 #1 (Debian))
- id 1DDll5-0006ip-R3; Tue, 22 Mar 2005 10:57:31 -0500
-Date: Tue, 22 Mar 2005 10:57:31 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: libc-alpha at sources dot redhat dot com
-Cc: Phil Blundell <pb at reciva dot com>
-Subject: Common bits for the ARM EABI port
-Message-ID: <20050322155731.GA25613@nevyn.them.org>
-Mail-Followup-To: libc-alpha at sources dot redhat dot com,
- Phil Blundell <pb at reciva dot com>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.5.6+20040907i
-
-The changes to common files for the ARM EABI port; search the new directory,
-use GLIBC_2.4 as a base version, and generate ld-linux.so.3 (so that old and
-new ABI libraries can be installed on the same system, in case someone needs
-to do that). Generic ARM changes coming up next.
-
-I noticed that the "configure: Regenerated" messages are often left out of
-glibc changelogs; should I skip them?
-
---
-Daniel Jacobowitz
-CodeSourcery, LLC
-
-2005-03-22 Daniel Jacobowitz <dan@codesourcery.com>
-
- * configure.in: Add arm*-*-linux-gnueabi support. Remove
- unused arm32 entry from $machine.
- * configure: Regenerated.
- * shlib-versions: Add arm*-*-linux-gnueabi.
-
-Index: glibc/configure.in
-===================================================================
---- glibc.orig/configure.in 2005-03-18 17:10:34.000000000 -0500
-+++ glibc/configure.in 2005-03-21 10:04:41.000000000 -0500
-@@ -423,7 +423,12 @@ changequote(,)dnl
- test -n "$base_machine" || case "$machine" in
- a29k | am29000) base_machine=a29k machine=a29k ;;
- alpha*) base_machine=alpha machine=alpha/$machine ;;
--arm*) base_machine=arm machine=arm/arm32/$machine ;;
-+arm*) base_machine=arm
-+ case $config_os in
-+ linux-gnueabi) machine=arm/eabi/$machine ;;
-+ *) machine=arm/$machine ;;
-+ esac
-+ ;;
- c3[012]) base_machine=cx0 machine=cx0/c30 ;;
- c4[04]) base_machine=cx0 machine=cx0/c40 ;;
- hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
-Index: glibc/shlib-versions
-===================================================================
---- glibc.orig/shlib-versions 2005-02-13 21:53:05.000000000 -0500
-+++ glibc/shlib-versions 2005-03-21 10:06:54.000000000 -0500
-@@ -31,6 +31,7 @@ cris-.*-linux.* DEFAULT GLIBC_2.2
- x86_64-.*-linux.* DEFAULT GLIBC_2.2.5
- powerpc64-.*-linux.* DEFAULT GLIBC_2.3
- .*-.*-gnu-gnu.* DEFAULT GLIBC_2.2.6
-+arm.*-.*-linux-gnueabi DEFAULT GLIBC_2.4
-
- # Configuration WORDSIZE[32|64] Alternate configuration
- # ------------- ---------- -----------------------
-@@ -80,6 +81,7 @@ i.86-.*-linux.* ld=ld-linux.so.2
- sparc64-.*-linux.* ld=ld-linux.so.2 GLIBC_2.2
- sparc.*-.*-linux.* ld=ld-linux.so.2
- alpha.*-.*-linux.* ld=ld-linux.so.2
-+arm.*-.*-linux-gnueabi ld=ld-linux.so.3
- arm.*-.*-linux.* ld=ld-linux.so.2
- sh.*-.*-linux.* ld=ld-linux.so.2 GLIBC_2.2
- ia64-.*-linux.* ld=ld-linux-ia64.so.2 GLIBC_2.2
-
diff --git a/packages/glibc/glibc-cvs/eabi-patch-2 b/packages/glibc/glibc-cvs/eabi-patch-2
deleted file mode 100644
index 955a9bb51f..0000000000
--- a/packages/glibc/glibc-cvs/eabi-patch-2
+++ /dev/null
@@ -1,2446 +0,0 @@
-From libc-alpha-return-17231-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Tue Mar 22 17:39:38 2005
-Return-Path: <libc-alpha-return-17231-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-libc-alpha at sources dot redhat dot com
-Received: (qmail 15063 invoked by alias); 22 Mar 2005 17:39:38 -0000
-Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
-List-Post: <mailto:libc-alpha at sources dot redhat dot com>
-List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: libc-alpha-owner at sources dot redhat dot com
-Delivered-To: mailing list libc-alpha at sources dot redhat dot com
-Received: (qmail 13714 invoked from network); 22 Mar 2005 17:38:53 -0000
-Received: from unknown (HELO nevyn.them.org) (66.93.172.17)
- by sourceware dot org with SMTP; 22 Mar 2005 17:38:53 -0000
-Received: from drow by nevyn.them.org with local (Exim 4.50 #1 (Debian))
- id 1DDnLP-00007R-0B; Tue, 22 Mar 2005 12:39:07 -0500
-Date: Tue, 22 Mar 2005 12:39:06 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: libc-alpha at sources dot redhat dot com, Phil Blundell <pb at reciva dot com>
-Subject: Re: Remainder of ARM EABI support
-Message-ID: <20050322173906.GA316@nevyn.them.org>
-Mail-Followup-To: libc-alpha at sources dot redhat dot com,
- Phil Blundell <pb at reciva dot com>
-References: <20050322162137.GA26662@nevyn.them.org>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <20050322162137 dot GA26662 at nevyn dot them dot org>
-User-Agent: Mutt/1.5.6+20040907i
-
-On Tue, Mar 22, 2005 at 11:21:37AM -0500, Daniel Jacobowitz wrote:
-> This patch is the remaining pieces of ARM EABI support, the
-> arm*-*-linux-gnueabi target.
->
-> Highlights of the new ABI compared to the old one:
-> - Eight byte stack alignment instead of four.
-> - VFP floating point support instead of FPA; there's actually hardware
-> which supports VFP...
-> - More standard structure layout. The old ABI (APCS) always rounded
-> structures up to 32-bit alignment even if they contained only chars;
-> it also aligned 64-bit fields to four bytes.
-> - Some types have been grown to accomodate modern ARM cores, particularly
-> jmp_buf.
->
-> The EABI also defines some additional symbols that a C library has to
-> define, which allow "portable" ARM objects to be linked to multiple C
-> libraries even if certain implementation-defined constants differ.
-> They're added to ARM-specific files in libc_nonshared.a.
->
-> Most of the contents of sysdeps/unix/sysv/linux/arm/eabi are wrappers for
-> syscalls whose types have changed between the old and new ABI. The kernel
-> developers are discussing an EABI syscall interface, but for now the swi
-> based syscalls take the same argument types they used to for APCS. Only
-> a handful of syscalls are affected.
-
-My track record is not very good this morning; I apologize. I sent the
-wrong version of the patch. This one includes a couple of VFP fixes
-left out of the last posting, and a complete changelog.
-
---
-Daniel Jacobowitz
-CodeSourcery, LLC
-
-2005-03-22 Daniel Jacobowitz <dan@codesourcery.com>
- Mark Mitchell <mark@codesourcery.com>
- Paul Brook <paul@codesourcery.com>
-
- * sysdeps/arm/eabi/Makefile, sysdeps/arm/eabi/Versions,
- sysdeps/arm/eabi/aeabi_assert.c, sysdeps/arm/eabi/aeabi_atexit.c,
- sysdeps/arm/eabi/aeabi_errno_addr.c, sysdeps/arm/eabi/aeabi_lcsts.c,
- sysdeps/arm/eabi/aeabi_localeconv.c, sysdeps/arm/eabi/aeabi_math.c,
- sysdeps/arm/eabi/aeabi_mb_cur_max.c,
- sysdeps/arm/eabi/aeabi_sighandlers.S,
- sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c,
- sysdeps/arm/eabi/bits/huge_val.h, sysdeps/arm/eabi/bits/setjmp.h,
- sysdeps/arm/eabi/find_exidx.c, sysdeps/arm/eabi/fpu/__longjmp.S,
- sysdeps/arm/eabi/fpu/bits/fenv.h, sysdeps/arm/eabi/fpu/fclrexcpt.c,
- sysdeps/arm/eabi/fpu/fegetround.c, sysdeps/arm/eabi/fpu/fesetenv.c,
- sysdeps/arm/eabi/fpu/fesetround.c, sysdeps/arm/eabi/fpu/fpu_control.h,
- sysdeps/arm/eabi/fpu/feholdexcpt.c,
- sysdeps/arm/eabi/fpu/fraiseexcpt.c,
- sysdeps/arm/eabi/fpu/setjmp.S,
- sysdeps/unix/sysv/linux/arm/eabi/configure,
- sysdeps/unix/sysv/linux/arm/eabi/configure.in,
- sysdeps/unix/sysv/linux/arm/eabi/epoll_ctl.c,
- sysdeps/unix/sysv/linux/arm/eabi/epoll_wait.c,
- sysdeps/unix/sysv/linux/arm/eabi/fstatfs64.c,
- sysdeps/unix/sysv/linux/arm/eabi/fxstat64.c,
- sysdeps/unix/sysv/linux/arm/eabi/kernel_stat.h,
- sysdeps/unix/sysv/linux/arm/eabi/lxstat64.c,
- sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c,
- sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c,
- sysdeps/unix/sysv/linux/arm/eabi/semop.c,
- sysdeps/unix/sysv/linux/arm/eabi/semtimedop.c,
- sysdeps/unix/sysv/linux/arm/eabi/statfs64.c,
- sysdeps/unix/sysv/linux/arm/eabi/uname.c,
- sysdeps/unix/sysv/linux/arm/eabi/xstat64.c,
- sysdeps/unix/sysv/linux/arm/eabi/xstatconv.c,
- sysdeps/unix/sysv/linux/arm/eabi/xstatconv.h: New files.
-
-
-Index: glibc/sysdeps/arm/eabi/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/Makefile 2005-03-22 11:53:10.049703870 -0500
-@@ -0,0 +1,15 @@
-+ifeq ($(subdir),csu)
-+aeabi_constants = aeabi_lcsts aeabi_sighandlers aeabi_math
-+aeabi_routines = aeabi_assert aeabi_localeconv aeabi_errno_addr \
-+ aeabi_mb_cur_max aeabi_atexit
-+
-+sysdep_routines += $(aeabi_constants) $(aeabi_routines)
-+static-only-routines += $(aeabi_constants) $(aeabi_routines)
-+endif
-+
-+ifeq ($(subdir),elf)
-+sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx
-+shared-only-routines += aeabi_unwind_cpp_pr1
-+sysdep-rtld-routines += aeabi_unwind_cpp_pr1
-+endif
-+
-Index: glibc/sysdeps/arm/eabi/Versions
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/Versions 2005-03-22 11:53:10.049703870 -0500
-@@ -0,0 +1,6 @@
-+libc {
-+ GLIBC_2.4 {
-+ # Helper routines
-+ __gnu_Unwind_Find_exidx;
-+ }
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_assert.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_assert.c 2005-03-22 11:53:10.049703870 -0500
-@@ -0,0 +1,27 @@
-+/* Copyright (C) 2004 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 <assert.h>
-+#include <stdlib.h>
-+
-+void attribute_hidden
-+__aeabi_assert (const char *assertion, const char *file,
-+ unsigned int line)
-+{
-+ __assert_fail (assertion, file, line, NULL);
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_atexit.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_atexit.c 2005-03-22 11:53:10.050703627 -0500
-@@ -0,0 +1,28 @@
-+/* 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 <stdlib.h>
-+
-+/* Register a function to be called by exit or when a shared library
-+ is unloaded. This routine is like __cxa_atexit, but uses the
-+ calling sequence required by the ARM EABI. */
-+int attribute_hidden
-+__aeabi_atexit (void *arg, void (*func) (void *), void *d)
-+{
-+ return __cxa_atexit (func, arg, d);
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_errno_addr.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_errno_addr.c 2005-03-22 11:53:10.050703627 -0500
-@@ -0,0 +1,26 @@
-+/* Copyright (C) 2004 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>
-+
-+attribute_hidden
-+volatile int *
-+__aeabi_errno_addr (void)
-+{
-+ return &errno;
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_lcsts.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_lcsts.c 2005-03-22 11:53:10.050703627 -0500
-@@ -0,0 +1,67 @@
-+/* Link-time constants for ARM EABI.
-+ 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. */
-+
-+/* The ARM EABI requires that we provide ISO compile-time constants as
-+ link-time constants. Some portable applications may reference these. */
-+
-+#include <errno.h>
-+#include <limits.h>
-+#include <locale.h>
-+#include <setjmp.h>
-+#include <signal.h>
-+#include <stdio.h>
-+#include <time.h>
-+
-+#define eabi_constant2(X,Y) const int __aeabi_##X attribute_hidden = Y
-+#define eabi_constant(X) const int __aeabi_##X attribute_hidden = X
-+
-+eabi_constant (EDOM);
-+eabi_constant (ERANGE);
-+eabi_constant (EILSEQ);
-+
-+eabi_constant (MB_LEN_MAX);
-+
-+eabi_constant (LC_COLLATE);
-+eabi_constant (LC_CTYPE);
-+eabi_constant (LC_MONETARY);
-+eabi_constant (LC_NUMERIC);
-+eabi_constant (LC_TIME);
-+eabi_constant (LC_ALL);
-+
-+/* The value of __aeabi_JMP_BUF_SIZE is the number of doublewords in a
-+ jmp_buf. */
-+eabi_constant2 (JMP_BUF_SIZE, sizeof (jmp_buf) / 8);
-+
-+eabi_constant (SIGABRT);
-+eabi_constant (SIGFPE);
-+eabi_constant (SIGILL);
-+eabi_constant (SIGINT);
-+eabi_constant (SIGSEGV);
-+eabi_constant (SIGTERM);
-+
-+eabi_constant2 (IOFBF, _IOFBF);
-+eabi_constant2 (IOLBF, _IOLBF);
-+eabi_constant2 (IONBF, _IONBF);
-+eabi_constant (BUFSIZ);
-+eabi_constant (FOPEN_MAX);
-+eabi_constant (TMP_MAX);
-+eabi_constant (FILENAME_MAX);
-+eabi_constant (L_tmpnam);
-+
-+eabi_constant (CLOCKS_PER_SEC);
-Index: glibc/sysdeps/arm/eabi/aeabi_localeconv.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_localeconv.c 2005-03-22 11:53:10.050703627 -0500
-@@ -0,0 +1,26 @@
-+/* Copyright (C) 2004 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 <locale.h>
-+
-+attribute_hidden
-+struct lconv *
-+__aeabi_localeconv (void)
-+{
-+ return localeconv ();
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_math.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_math.c 2005-03-22 11:53:10.050703627 -0500
-@@ -0,0 +1,25 @@
-+/* Copyright (C) 2004 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 <math.h>
-+
-+const double __aeabi_HUGE_VAL attribute_hidden = HUGE_VAL;
-+const long double __aeabi_HUGE_VALL attribute_hidden = HUGE_VALL;
-+const float __aeabi_HUGE_VALF attribute_hidden = HUGE_VALF;
-+const float __aeabi_INFINITY attribute_hidden = INFINITY;
-+const float __aeabi_NAN attribute_hidden = NAN;
-Index: glibc/sysdeps/arm/eabi/aeabi_mb_cur_max.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_mb_cur_max.c 2005-03-22 11:53:10.051703385 -0500
-@@ -0,0 +1,28 @@
-+/* Copyright (C) 2004 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 <langinfo.h>
-+#include <locale.h>
-+#include <stdlib.h>
-+#include <locale/localeinfo.h>
-+
-+int attribute_hidden
-+__aeabi_MB_CUR_MAX (void)
-+{
-+ return MB_CUR_MAX;
-+}
-Index: glibc/sysdeps/arm/eabi/aeabi_sighandlers.S
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_sighandlers.S 2005-03-22 11:53:10.051703385 -0500
-@@ -0,0 +1,37 @@
-+/* Link-time constants for ARM EABI - signal handlers.
-+ 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. */
-+
-+/* The ARM EABI defines these as "functions". */
-+
-+#include <sysdep.h>
-+
-+ .global __aeabi_SIG_DFL
-+ .hidden __aeabi_SIG_DFL
-+ .type __aeabi_SIG_DFL, %function
-+ .set __aeabi_SIG_DFL, 0
-+
-+ .global __aeabi_SIG_IGN
-+ .hidden __aeabi_SIG_IGN
-+ .type __aeabi_SIG_IGN, %function
-+ .set __aeabi_SIG_IGN, 1
-+
-+ .global __aeabi_SIG_ERR
-+ .hidden __aeabi_SIG_ERR
-+ .type __aeabi_SIG_ERR, %function
-+ .set __aeabi_SIG_ERR, -1
-Index: glibc/sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/aeabi_unwind_cpp_pr1.c 2005-03-22 11:53:10.051703385 -0500
-@@ -0,0 +1,28 @@
-+/* 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. */
-+
-+/* Because some objects in ld.so and libc.so are built with
-+ -fexceptions, we end up with references to this personality
-+ routine. However, these libraries are not linked against
-+ libgcc_eh.a, so we need a dummy definition. This routine will
-+ never actually be called. */
-+
-+void
-+__aeabi_unwind_cpp_pr1 (void)
-+{
-+}
-Index: glibc/sysdeps/arm/eabi/bits/huge_val.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/bits/huge_val.h 2005-03-22 11:53:10.051703385 -0500
-@@ -0,0 +1,55 @@
-+/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
-+ Used by <stdlib.h> and <math.h> functions for overflow.
-+ Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
-+ 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 _MATH_H
-+# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
-+#endif
-+
-+/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
-+
-+#if __GNUC_PREREQ(3,3)
-+# define HUGE_VAL (__builtin_huge_val())
-+#elif __GNUC_PREREQ(2,96)
-+# define HUGE_VAL (__extension__ 0x1.0p2047)
-+#elif defined __GNUC__
-+
-+# define HUGE_VAL \
-+ (__extension__ \
-+ ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
-+ { __l: 0x7ff0000000000000ULL }).__d)
-+
-+#else /* not GCC */
-+
-+# include <endian.h>
-+
-+typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
-+
-+# if __BYTE_ORDER == __BIG_ENDIAN
-+# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
-+# endif
-+# if __BYTE_ORDER == __LITTLE_ENDIAN
-+# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
-+# endif
-+
-+static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
-+# define HUGE_VAL (__huge_val.__d)
-+
-+#endif /* GCC. */
-Index: glibc/sysdeps/arm/eabi/bits/setjmp.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/bits/setjmp.h 2005-03-22 11:53:10.052703143 -0500
-@@ -0,0 +1,45 @@
-+/* Copyright (C) 2004 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. */
-+
-+/* Define the machine-dependent type `jmp_buf'. ARM EABI version. */
-+
-+#ifndef _BITS_SETJMP_H
-+#define _BITS_SETJMP_H 1
-+
-+#if !defined _SETJMP_H && !defined _PTHREAD_H
-+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-+#endif
-+
-+#ifndef _ASM
-+/* The exact set of registers saved may depend on the particular core
-+ in use, as some coprocessor registers may need to be saved. The C
-+ Library ABI requires that the buffer be 8-byte aligned, and
-+ recommends that the buffer contain 64 words. The first 28 words
-+ are occupied by v1-v6, sl, fp, sp, pc, d8-d15, and fpscr. (Note
-+ that d8-15 require 17 words, due to the use of fstmx.) */
-+typedef int __jmp_buf[64] __attribute__((aligned (8)));
-+#endif
-+
-+#define __JMP_BUF_SP 8
-+
-+/* Test if longjmp to JMPBUF would unwind the frame
-+ containing a local variable at ADDRESS. */
-+#define _JMPBUF_UNWINDS(jmpbuf, address) \
-+ ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
-+
-+#endif
-Index: glibc/sysdeps/arm/eabi/find_exidx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/find_exidx.c 2005-03-22 11:53:10.052703143 -0500
-@@ -0,0 +1,80 @@
-+/* 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 <link.h>
-+#include <unwind.h>
-+
-+struct unw_eh_callback_data
-+{
-+ _Unwind_Ptr pc;
-+ _Unwind_Ptr exidx_start;
-+ int exidx_len;
-+};
-+
-+
-+/* Callback to determins if the PC lies within an object, and remember the
-+ location of the exception index table if it does. */
-+
-+static int
-+find_exidx_callback (struct dl_phdr_info * info, size_t size, void * ptr)
-+{
-+ struct unw_eh_callback_data * data;
-+ const ElfW(Phdr) *phdr;
-+ int i;
-+ int match;
-+ _Unwind_Ptr load_base;
-+
-+ data = (struct unw_eh_callback_data *) ptr;
-+ load_base = info->dlpi_addr;
-+ phdr = info->dlpi_phdr;
-+
-+ match = 0;
-+ for (i = info->dlpi_phnum; i > 0; i--, phdr++)
-+ {
-+ if (phdr->p_type == PT_LOAD)
-+ {
-+ _Unwind_Ptr vaddr = phdr->p_vaddr + load_base;
-+ if (data->pc >= vaddr && data->pc < vaddr + phdr->p_memsz)
-+ match = 1;
-+ }
-+ else if (phdr->p_type == PT_ARM_EXIDX)
-+ {
-+ data->exidx_start = (_Unwind_Ptr) (phdr->p_vaddr + load_base);
-+ data->exidx_len = phdr->p_memsz;
-+ }
-+ }
-+
-+ return match;
-+}
-+
-+
-+/* Find the exception index table containing PC. */
-+
-+_Unwind_Ptr
-+__gnu_Unwind_Find_exidx (_Unwind_Ptr pc, int * pcount)
-+{
-+ struct unw_eh_callback_data data;
-+
-+ data.pc = pc;
-+ data.exidx_start = 0;
-+ if (dl_iterate_phdr (find_exidx_callback, &data) <= 0)
-+ return 0;
-+
-+ *pcount = data.exidx_len / 8;
-+ return data.exidx_start;
-+}
-Index: glibc/sysdeps/arm/eabi/fpu/__longjmp.S
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/__longjmp.S 2005-03-22 11:53:10.052703143 -0500
-@@ -0,0 +1,43 @@
-+/* longjmp for ARM.
-+ Copyright (C) 2004 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 _SETJMP_H
-+#define _ASM
-+#include <bits/setjmp.h>
-+
-+/* __longjmp(jmpbuf, val) */
-+
-+ENTRY (__longjmp)
-+ mov ip, r0 /* save jmp_buf pointer */
-+
-+ movs r0, r1 /* get the return value in place */
-+ moveq r0, #1 /* can't let setjmp() return zero! */
-+
-+ /* Restore the integer registers. */
-+ LOADREGS(ia, ip!, {v1-v6, sl, fp, sp, lr})
-+
-+ /* Restore the VFP registers. */
-+ fldmiax ip!, {d8-d15}
-+ /* Restore the floating-point status register. */
-+ ldr r1, [ip], #4
-+ fmxr fpscr, r1
-+
-+ DO_RET(lr)
-+END (__longjmp)
-Index: glibc/sysdeps/arm/eabi/fpu/bits/fenv.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/bits/fenv.h 2005-03-22 12:34:55.511467536 -0500
-@@ -0,0 +1,74 @@
-+/* Copyright (C) 2004 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 _FENV_H
-+# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
-+#endif
-+
-+/* Define bits representing exceptions in the FPU status word. */
-+enum
-+ {
-+ FE_INVALID = 1,
-+#define FE_INVALID FE_INVALID
-+ FE_DIVBYZERO = 2,
-+#define FE_DIVBYZERO FE_DIVBYZERO
-+ FE_OVERFLOW = 4,
-+#define FE_OVERFLOW FE_OVERFLOW
-+ FE_UNDERFLOW = 8,
-+#define FE_UNDERFLOW FE_UNDERFLOW
-+ FE_INEXACT = 16,
-+#define FE_INEXACT FE_INEXACT
-+ };
-+
-+/* Amount to shift by to convert an exception to a mask bit. */
-+#define FE_EXCEPT_SHIFT 8
-+
-+/* All supported exceptions. */
-+#define FE_ALL_EXCEPT \
-+ (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
-+
-+/* VFP supports all of the four defined rounding modes. */
-+enum
-+ {
-+ FE_TONEAREST = 0,
-+#define FE_TONEAREST FE_TONEAREST
-+ FE_UPWARD = 0x400000,
-+#define FE_UPWARD FE_UPWARD
-+ FE_DOWNWARD = 0x800000,
-+#define FE_DOWNWARD FE_DOWNWARD
-+ FE_TOWARDZERO = 0xc00000
-+#define FE_TOWARDZERO FE_TOWARDZERO
-+ };
-+
-+/* Type representing exception flags. */
-+typedef unsigned int fexcept_t;
-+
-+/* Type representing floating-point environment. */
-+typedef struct
-+ {
-+ unsigned int __cw;
-+ }
-+fenv_t;
-+
-+/* If the default argument is used we use this value. */
-+#define FE_DFL_ENV ((fenv_t *) -1l)
-+
-+#ifdef __USE_GNU
-+/* Floating-point environment where none of the exceptions are masked. */
-+# define FE_NOMASK_ENV ((__const fenv_t *) -2)
-+#endif
-Index: glibc/sysdeps/arm/eabi/fpu/fclrexcpt.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fclrexcpt.c 2005-03-22 11:53:10.053702900 -0500
-@@ -0,0 +1,50 @@
-+/* Clear given exceptions in current floating-point environment.
-+ Copyright (C) 1997,98,99,2000,01 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 <fenv.h>
-+#include <fpu_control.h>
-+
-+int
-+__feclearexcept (int excepts)
-+{
-+ unsigned long int temp;
-+
-+ /* Mask out unsupported bits/exceptions. */
-+ excepts &= FE_ALL_EXCEPT;
-+
-+ /* Get the current floating point status. */
-+ _FPU_GETCW (temp);
-+
-+ /* Clear the relevant bits. */
-+ temp = (temp & ~FE_ALL_EXCEPT) | (temp & FE_ALL_EXCEPT & ~excepts);
-+
-+ /* Put the new data in effect. */
-+ _FPU_SETCW (temp);
-+
-+ /* Success. */
-+ return 0;
-+}
-+
-+#include <shlib-compat.h>
-+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-+strong_alias (__feclearexcept, __old_feclearexcept)
-+compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-+#endif
-+
-+versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
-Index: glibc/sysdeps/arm/eabi/fpu/fegetround.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fegetround.c 2005-03-22 11:53:10.053702900 -0500
-@@ -0,0 +1,32 @@
-+/* Return current rounding direction.
-+ Copyright (C) 2004 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 <fenv.h>
-+#include <fpu_control.h>
-+
-+int
-+fegetround (void)
-+{
-+ unsigned int temp;
-+
-+ /* Get the current environment. */
-+ _FPU_GETCW (temp);
-+
-+ return temp & FE_TOWARDZERO;
-+}
-Index: glibc/sysdeps/arm/eabi/fpu/fesetenv.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fesetenv.c 2005-03-22 12:34:55.521465156 -0500
-@@ -0,0 +1,46 @@
-+/* Install given floating-point environment.
-+ Copyright (C) 2004 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 <fenv.h>
-+#include <fpu_control.h>
-+
-+int
-+__fesetenv (const fenv_t *envp)
-+{
-+ unsigned int temp;
-+
-+ _FPU_GETCW (temp);
-+ temp &= _FPU_RESERVED;
-+
-+ if (envp == FE_DFL_ENV)
-+ temp |= _FPU_DEFAULT;
-+ else if (envp == FE_NOMASK_ENV)
-+ temp |= _FPU_IEEE;
-+ else
-+ temp |= envp->__cw & ~_FPU_RESERVED;
-+
-+ _FPU_SETCW (temp);
-+
-+ /* Success. */
-+ return 0;
-+}
-+
-+#include <shlib-compat.h>
-+libm_hidden_ver (__fesetenv, fesetenv)
-+versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
-Index: glibc/sysdeps/arm/eabi/fpu/fesetround.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fesetround.c 2005-03-22 11:53:10.053702900 -0500
-@@ -0,0 +1,41 @@
-+/* Set current rounding direction.
-+ Copyright (C) 2004 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 <fenv.h>
-+#include <fpu_control.h>
-+
-+int
-+fesetround (int round)
-+{
-+ fpu_control_t temp;
-+
-+ switch (round)
-+ {
-+ case FE_TONEAREST:
-+ case FE_UPWARD:
-+ case FE_DOWNWARD:
-+ case FE_TOWARDZERO:
-+ _FPU_GETCW (temp);
-+ temp = (temp & ~FE_TOWARDZERO) | round;
-+ _FPU_SETCW (temp);
-+ return 0;
-+ default:
-+ return 1;
-+ }
-+}
-Index: glibc/sysdeps/arm/eabi/fpu/fpu_control.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fpu_control.h 2005-03-22 12:34:55.521465156 -0500
-@@ -0,0 +1,47 @@
-+/* FPU control word definitions. ARM VFP version.
-+ Copyright (C) 2004 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 _FPU_CONTROL_H
-+#define _FPU_CONTROL_H
-+
-+/* masking of interrupts */
-+#define _FPU_MASK_IM 0x00000100 /* invalid operation */
-+#define _FPU_MASK_ZM 0x00000200 /* divide by zero */
-+#define _FPU_MASK_OM 0x00000400 /* overflow */
-+#define _FPU_MASK_UM 0x00000800 /* underflow */
-+#define _FPU_MASK_PM 0x00001000 /* inexact */
-+
-+/* Some bits in the FPSCR are not yet defined. They must be preserved when
-+ modifying the contents. */
-+#define _FPU_RESERVED 0x0e08e0e0
-+#define _FPU_DEFAULT 0x00000000
-+/* Default + exceptions enabled. */
-+#define _FPU_IEEE (_FPU_DEFAULT | 0x00001f00)
-+
-+/* Type of the control word. */
-+typedef unsigned int fpu_control_t;
-+
-+/* Macros for accessing the hardware control word. */
-+#define _FPU_GETCW(cw) __asm__ __volatile__ ("fmrx %0, fpscr" : "=r" (cw))
-+#define _FPU_SETCW(cw) __asm__ __volatile__ ("fmxr fpscr, %0" : : "r" (cw))
-+
-+/* Default control word set at startup. */
-+extern fpu_control_t __fpu_control;
-+
-+#endif /* _FPU_CONTROL_H */
-Index: glibc/sysdeps/arm/eabi/fpu/setjmp.S
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/setjmp.S 2005-03-22 11:53:10.054702658 -0500
-@@ -0,0 +1,39 @@
-+/* setjmp for ARM.
-+ Copyright (C) 2004 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 _SETJMP_H
-+#define _ASM
-+#include <bits/setjmp.h>
-+
-+ENTRY (__sigsetjmp)
-+ mov ip, r0
-+
-+ /* Store the integer registers. */
-+ stmia ip!, {v1-v6, sl, fp, sp, lr}
-+
-+ /* Store the VFP registers. */
-+ fstmiax ip!, {d8-d15}
-+ /* Store the floating-point status register. */
-+ fmrx r2, fpscr
-+ str r2, [ip], #4
-+
-+ /* Make a tail call to __sigjmp_save; it takes the same args. */
-+ B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
-+END (__sigsetjmp)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/configure
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/configure 2005-03-22 11:53:10.054702658 -0500
-@@ -0,0 +1,5 @@
-+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-+ # Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
-+
-+arch_minimum_kernel=2.4.17
-+libc_cv_gcc_unwind_find_fde=no
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/configure.in
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/configure.in 2005-03-22 11:53:10.054702658 -0500
-@@ -0,0 +1,5 @@
-+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-+# Local configure fragment for sysdeps/unix/sysv/linux/arm/eabi.
-+
-+arch_minimum_kernel=2.4.17
-+libc_cv_gcc_unwind_find_fde=no
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/epoll_ctl.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/epoll_ctl.c 2005-03-22 11:53:10.054702658 -0500
-@@ -0,0 +1,37 @@
-+/* epoll_ctl wrapper for ARM EABI.
-+ 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 <sysdep.h>
-+#include <errno.h>
-+#include <sys/epoll.h>
-+
-+#include <kernel_epoll.h>
-+
-+int
-+epoll_ctl (int __epfd, int __op, int __fd, struct epoll_event *__event)
-+{
-+ struct kernel_epoll_event k_event;
-+
-+ k_event.events = __event->events;
-+ memcpy (&k_event.data, &__event->data, sizeof (k_event.data));
-+
-+ return INLINE_SYSCALL (epoll_ctl, 4, __epfd, __op, __fd, &k_event);
-+}
-+
-+libc_hidden_def (epoll_ctl)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/epoll_wait.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/epoll_wait.c 2005-03-22 11:53:10.055702416 -0500
-@@ -0,0 +1,54 @@
-+/* epoll_ctl wrapper for ARM EABI.
-+ 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 <sysdep.h>
-+#include <errno.h>
-+#include <sys/epoll.h>
-+#include <stdlib.h>
-+
-+#include <kernel_epoll.h>
-+
-+int
-+epoll_wait (int __epfd, struct epoll_event *__events,
-+ int __maxevents, int __timeout);
-+{
-+ struct kernel_epoll_event *k_events;
-+ int result;
-+
-+ k_events = malloc (sizeof (struct kernel_epoll_event) * __maxevents);
-+ if (k_events == NULL)
-+ {
-+ __set_errno (ENOMEM);
-+ return -1;
-+ }
-+
-+ result = INLINE_SYSCALL (epoll_wait, 4, __epfd, __events, k_events,
-+ __timeout);
-+
-+ for (i = 0; i < result; i++)
-+ {
-+ __events[i].events = k_events[i].events;
-+ memcpy (&__events[i].data, &k_events[i].data, sizeof (k_events[i].data));
-+ }
-+
-+ free (k_events);
-+ return result;
-+}
-+
-+libc_hidden_def (epoll_wait)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/fstatfs64.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/fstatfs64.c 2005-03-22 11:53:10.055702416 -0500
-@@ -0,0 +1,76 @@
-+/* Return information about the filesystem on which FD resides.
-+ Copyright (C) 1996,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
-+ 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 <string.h>
-+#include <sys/statfs.h>
-+#include <stddef.h>
-+#include <sysdep.h>
-+
-+/* Defined in statfs64.c. */
-+extern int __no_statfs64 attribute_hidden;
-+
-+/* Return information about the filesystem on which FD resides. */
-+int
-+__fstatfs64 (int fd, struct statfs64 *buf)
-+{
-+#ifdef __NR_fstatfs64
-+# if __ASSUME_STATFS64 == 0
-+ if (! __no_statfs64)
-+# endif
-+ {
-+ /* The EABI structure is the same as the old ABI structure, except
-+ that it has four additional bytes of padding - at the end. We can
-+ ignore them. */
-+ int result = INLINE_SYSCALL (fstatfs64, 3, fd, sizeof (*buf) - 4, buf);
-+
-+# if __ASSUME_STATFS64 == 0
-+ if (result == 0 || errno != ENOSYS)
-+# endif
-+ return result;
-+
-+# if __ASSUME_STATFS64 == 0
-+ __no_statfs64 = 1;
-+# endif
-+ }
-+#endif
-+
-+#if __ASSUME_STATFS64 == 0
-+ struct statfs buf32;
-+
-+ if (__fstatfs (fd, &buf32) < 0)
-+ return -1;
-+
-+ buf->f_type = buf32.f_type;
-+ buf->f_bsize = buf32.f_bsize;
-+ buf->f_blocks = buf32.f_blocks;
-+ buf->f_bfree = buf32.f_bfree;
-+ buf->f_bavail = buf32.f_bavail;
-+ buf->f_files = buf32.f_files;
-+ buf->f_ffree = buf32.f_ffree;
-+ buf->f_fsid = buf32.f_fsid;
-+ buf->f_namelen = buf32.f_namelen;
-+ buf->f_frsize = buf32.f_frsize;
-+ memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
-+
-+ return 0;
-+#endif
-+}
-+weak_alias (__fstatfs64, fstatfs64)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/fxstat64.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/fxstat64.c 2005-03-22 11:53:10.055702416 -0500
-@@ -0,0 +1,100 @@
-+/* fxstat64 using old-style Unix fstat system call.
-+ Copyright (C) 1997-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.
-+
-+ 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 <stddef.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+#include "kernel-features.h"
-+
-+#if __ASSUME_STAT64_SYSCALL == 0
-+# include <xstatconv.h>
-+#endif
-+
-+#ifdef __NR_fstat64
-+# if __ASSUME_STAT64_SYSCALL == 0
-+/* The variable is shared between all wrappers around *stat64 calls. */
-+extern int __have_no_stat64;
-+# endif
-+#endif
-+
-+/* Get information about the file FD in BUF. */
-+
-+int
-+___fxstat64 (int vers, int fd, struct stat64 *buf)
-+{
-+ int result;
-+ struct kernel_stat64 kbuf64;
-+
-+#if __ASSUME_STAT64_SYSCALL > 0
-+ result = INLINE_SYSCALL (fstat64, 2, fd, CHECK_1 (&kbuf64));
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+#else
-+ struct kernel_stat kbuf;
-+# if defined __NR_fstat64
-+ if (! __have_no_stat64)
-+ {
-+ int saved_errno = errno;
-+ result = INLINE_SYSCALL (fstat64, 2, fd, CHECK_1 (&kbuf64));
-+
-+ if (result != -1 || errno != ENOSYS)
-+ {
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (!result && buf->__st_ino != (__ino_t)buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+ }
-+
-+ __set_errno (saved_errno);
-+ __have_no_stat64 = 1;
-+ }
-+# endif
-+ result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
-+ if (result == 0)
-+ result = __xstat64_conv (vers, &kbuf, buf);
-+
-+ return result;
-+#endif
-+}
-+
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-+versioned_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
-+strong_alias (___fxstat64, __old__fxstat64)
-+compat_symbol (libc, __old__fxstat64, __fxstat64, GLIBC_2_1);
-+hidden_ver (___fxstat64, __fxstat64)
-+#else
-+strong_alias (___fxstat64, __fxstat64)
-+hidden_def (__fxstat64)
-+#endif
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/kernel_stat.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/kernel_stat.h 2005-03-22 11:53:10.056702174 -0500
-@@ -0,0 +1,59 @@
-+/* 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 <sysdeps/unix/sysv/linux/kernel_stat.h>
-+
-+/* kernel_stat64 is just like stat64, except packed. The EABI aligns
-+ st_size to an eight byte boundary but the old ABI only aligns it to
-+ four. Similarly st_blocks. */
-+struct kernel_stat64
-+ {
-+ __dev_t st_dev; /* Device. */
-+ unsigned int __pad1;
-+
-+ __ino_t __st_ino; /* 32bit file serial number. */
-+ __mode_t st_mode; /* File mode. */
-+ __nlink_t st_nlink; /* Link count. */
-+ __uid_t st_uid; /* User ID of the file's owner. */
-+ __gid_t st_gid; /* Group ID of the file's group.*/
-+ __dev_t st_rdev; /* Device number, if device. */
-+ unsigned int __pad2;
-+ __off64_t st_size; /* Size of file, in bytes. */
-+ __blksize_t st_blksize; /* Optimal block size for I/O. */
-+
-+ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
-+#ifdef __USE_MISC
-+ /* Nanosecond resolution timestamps are stored in a format
-+ equivalent to 'struct timespec'. This is the type used
-+ whenever possible but the Unix namespace rules do not allow the
-+ identifier 'timespec' to appear in the <sys/stat.h> header.
-+ Therefore we have to handle the use of this header in strictly
-+ standard-compliant sources special. */
-+ struct timespec st_atim; /* Time of last access. */
-+ struct timespec st_mtim; /* Time of last modification. */
-+ struct timespec st_ctim; /* Time of last status change. */
-+#else
-+ __time_t st_atime; /* Time of last access. */
-+ unsigned long int st_atimensec; /* Nscecs of last access. */
-+ __time_t st_mtime; /* Time of last modification. */
-+ unsigned long int st_mtimensec; /* Nsecs of last modification. */
-+ __time_t st_ctime; /* Time of last status change. */
-+ unsigned long int st_ctimensec; /* Nsecs of last status change. */
-+#endif
-+ __ino64_t st_ino; /* File serial number. */
-+ } __attribute__ ((packed,aligned(4)));
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/lxstat64.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/lxstat64.c 2005-03-22 11:53:10.056702174 -0500
-@@ -0,0 +1,99 @@
-+/* lxstat64 using old-style Unix lstat system call.
-+ Copyright (C) 1997-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.
-+
-+ 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 <stddef.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+#include "kernel-features.h"
-+
-+#if __ASSUME_STAT64_SYSCALL == 0
-+# include <xstatconv.h>
-+#endif
-+
-+#ifdef __NR_lstat64
-+# if __ASSUME_STAT64_SYSCALL == 0
-+/* The variable is shared between all wrappers around *stat64 calls. */
-+extern int __have_no_stat64;
-+# endif
-+#endif
-+
-+/* Get information about the file NAME in BUF. */
-+int
-+___lxstat64 (int vers, const char *name, struct stat64 *buf)
-+{
-+ int result;
-+ struct kernel_stat64 kbuf64;
-+
-+#ifdef __ASSUME_STAT64_SYSCALL
-+ result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), CHECK_1 (&kbuf64));
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+#else
-+ struct kernel_stat kbuf;
-+# ifdef __NR_lstat64
-+ if (! __have_no_stat64)
-+ {
-+ int saved_errno = errno;
-+ result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), CHECK_1 (&kbuf64));
-+
-+ if (result != -1 || errno != ENOSYS)
-+ {
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (!result && buf->__st_ino != (__ino_t) buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+ }
-+
-+ __set_errno (saved_errno);
-+ __have_no_stat64 = 1;
-+ }
-+# endif
-+ result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
-+ if (result == 0)
-+ result = __xstat64_conv (vers, &kbuf, buf);
-+
-+ return result;
-+#endif
-+}
-+
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-+versioned_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
-+strong_alias (___lxstat64, __old__lxstat64)
-+compat_symbol (libc, __old__lxstat64, __lxstat64, GLIBC_2_1);
-+hidden_ver (___lxstat64, __lxstat64)
-+#else
-+strong_alias (___lxstat64, __lxstat64);
-+hidden_def (__lxstat64)
-+#endif
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/oldgetrlimit.c 2005-03-22 11:53:10.056702174 -0500
-@@ -0,0 +1 @@
-+/* Empty. */
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/oldsetrlimit.c 2005-03-22 11:53:10.056702174 -0500
-@@ -0,0 +1 @@
-+/* Empty. */
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/semop.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/semop.c 2005-03-22 11:53:10.056702174 -0500
-@@ -0,0 +1,67 @@
-+/* Copyright (C) 1995, 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>, August 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.
-+
-+ 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 <sys/sem.h>
-+#include <ipc_priv.h>
-+#include <alloca.h>
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+struct kernel_sembuf
-+{
-+ unsigned short int sem_num; /* semaphore number */
-+ short int sem_op; /* semaphore operation */
-+ short int sem_flg; /* operation flag */
-+ short int __pad1;
-+};
-+
-+/* Perform user-defined atomical operation of array of semaphores. */
-+
-+int
-+semop (semid, sops, nsops)
-+ int semid;
-+ struct sembuf *sops;
-+ size_t nsops;
-+{
-+ struct kernel_sembuf *ksops = alloca (sizeof (sops[0]) * nsops);
-+ size_t i;
-+ int result;
-+
-+ for (i = 0; i < nsops; i++)
-+ {
-+ ksops[i].sem_num = sops[i].sem_num;
-+ ksops[i].sem_op = sops[i].sem_op;
-+ ksops[i].sem_flg = sops[i].sem_flg;
-+ }
-+
-+ result = INLINE_SYSCALL (ipc, 5, IPCOP_semop,
-+ semid, (int) nsops, 0, CHECK_N (ksops, nsops));
-+
-+ for (i = 0; i < nsops; i++)
-+ {
-+ sops[i].sem_num = ksops[i].sem_num;
-+ sops[i].sem_op = ksops[i].sem_op;
-+ sops[i].sem_flg = ksops[i].sem_flg;
-+ }
-+
-+ return result;
-+}
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/semtimedop.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/semtimedop.c 2005-03-22 11:53:10.057701931 -0500
-@@ -0,0 +1,69 @@
-+/* Copyright (C) 1995, 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>, August 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.
-+
-+ 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 <sys/sem.h>
-+#include <ipc_priv.h>
-+#include <alloca.h>
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+struct kernel_sembuf
-+{
-+ unsigned short int sem_num; /* semaphore number */
-+ short int sem_op; /* semaphore operation */
-+ short int sem_flg; /* operation flag */
-+ short int __pad1;
-+};
-+
-+/* Perform user-defined atomical operation of array of semaphores. */
-+
-+int
-+semtimedop (semid, sops, nsops, timeout)
-+ int semid;
-+ struct sembuf *sops;
-+ size_t nsops;
-+ const struct timespec *timeout;
-+{
-+ struct kernel_sembuf *ksops = alloca (sizeof (sops[0]) * nsops);
-+ size_t i;
-+ int result;
-+
-+ for (i = 0; i < nsops; i++)
-+ {
-+ ksops[i].sem_num = sops[i].sem_num;
-+ ksops[i].sem_op = sops[i].sem_op;
-+ ksops[i].sem_flg = sops[i].sem_flg;
-+ }
-+
-+ result = INLINE_SYSCALL (ipc, 6, IPCOP_semtimedop,
-+ semid, (int) nsops, 0, CHECK_N (sops, nsops),
-+ timeout);
-+
-+ for (i = 0; i < nsops; i++)
-+ {
-+ sops[i].sem_num = ksops[i].sem_num;
-+ sops[i].sem_op = ksops[i].sem_op;
-+ sops[i].sem_flg = ksops[i].sem_flg;
-+ }
-+
-+ return result;
-+}
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/statfs64.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/statfs64.c 2005-03-22 11:53:10.057701931 -0500
-@@ -0,0 +1,77 @@
-+/* Return information about the filesystem on which FILE resides.
-+ Copyright (C) 1996-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
-+ 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 <string.h>
-+#include <sys/statfs.h>
-+#include <stddef.h>
-+#include <sysdep.h>
-+
-+
-+# if __ASSUME_STATFS64 == 0
-+int __no_statfs64 attribute_hidden;
-+#endif
-+
-+/* Return information about the filesystem on which FILE resides. */
-+int
-+__statfs64 (const char *file, struct statfs64 *buf)
-+{
-+#ifdef __NR_statfs64
-+# if __ASSUME_STATFS64 == 0
-+ if (! __no_statfs64)
-+# endif
-+ {
-+ /* The EABI structure is the same as the old ABI structure, except
-+ that it has four additional bytes of padding - at the end. We can
-+ ignore them. */
-+ int result = INLINE_SYSCALL (statfs64, 3, file, sizeof (*buf) - 4, buf);
-+
-+# if __ASSUME_STATFS64 == 0
-+ if (result == 0 || errno != ENOSYS)
-+# endif
-+ return result;
-+
-+# if __ASSUME_STATFS64 == 0
-+ __no_statfs64 = 1;
-+# endif
-+ }
-+#endif
-+
-+#if __ASSUME_STATFS64 == 0
-+ struct statfs buf32;
-+
-+ if (__statfs (file, &buf32) < 0)
-+ return -1;
-+
-+ buf->f_type = buf32.f_type;
-+ buf->f_bsize = buf32.f_bsize;
-+ buf->f_blocks = buf32.f_blocks;
-+ buf->f_bfree = buf32.f_bfree;
-+ buf->f_bavail = buf32.f_bavail;
-+ buf->f_files = buf32.f_files;
-+ buf->f_ffree = buf32.f_ffree;
-+ buf->f_fsid = buf32.f_fsid;
-+ buf->f_namelen = buf32.f_namelen;
-+ buf->f_frsize = buf32.f_frsize;
-+ memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
-+
-+ return 0;
-+#endif
-+}
-+weak_alias (__statfs64, statfs64)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/uname.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/uname.c 2005-03-22 11:53:10.057701931 -0500
-@@ -0,0 +1,43 @@
-+/* 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 <sysdep.h>
-+#include <sys/syscall.h>
-+#include <string.h>
-+#include <sys/utsname.h>
-+
-+/* The kernel's struct utsname is two bytes larger than a userland struct
-+ utsname due to the APCS structure size boundary. */
-+
-+int
-+__uname (struct utsname *__name)
-+{
-+ char buf[sizeof (struct utsname) + 2];
-+ int result = INLINE_SYSCALL (uname, 1, buf);
-+
-+ if (result == 0)
-+ memcpy (__name, buf, sizeof (struct utsname));
-+
-+ return result;
-+}
-+
-+libc_hidden_def (__uname)
-+strong_alias (__uname, uname)
-+libc_hidden_weak (uname)
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/xstat64.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/xstat64.c 2005-03-22 11:53:10.058701689 -0500
-@@ -0,0 +1,103 @@
-+/* xstat64 using old-style Unix stat system call.
-+ Copyright (C) 1991, 1995-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.
-+
-+ 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 <stddef.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
-+#include <sysdep.h>
-+#include <sys/syscall.h>
-+#include <bp-checks.h>
-+
-+#include "kernel-features.h"
-+
-+#if __ASSUME_STAT64_SYSCALL == 0
-+# include <xstatconv.h>
-+#endif
-+
-+#ifdef __NR_stat64
-+# if __ASSUME_STAT64_SYSCALL == 0
-+/* The variable is shared between all wrappers around *stat64 calls.
-+ This is the definition. */
-+int __have_no_stat64;
-+# endif
-+#endif
-+
-+/* Get information about the file NAME in BUF. */
-+
-+int
-+___xstat64 (int vers, const char *name, struct stat64 *buf)
-+{
-+ int result;
-+ struct kernel_stat64 kbuf64;
-+
-+#if __ASSUME_STAT64_SYSCALL > 0
-+ result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), CHECK_1 (&kbuf64));
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+#else
-+ struct kernel_stat kbuf;
-+# if defined __NR_stat64
-+ if (! __have_no_stat64)
-+ {
-+ int saved_errno = errno;
-+ result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), CHECK_1 (&kbuf64));
-+
-+ if (result != -1 || errno != ENOSYS)
-+ {
-+ if (result == 0)
-+ result = __xstat64_kernel64_conv (vers, &kbuf64, buf);
-+# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
-+ if (!result && buf->__st_ino != (__ino_t) buf->st_ino)
-+ buf->st_ino = buf->__st_ino;
-+# endif
-+ return result;
-+ }
-+
-+ __set_errno (saved_errno);
-+ __have_no_stat64 = 1;
-+ }
-+# endif
-+
-+ result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
-+ if (result == 0)
-+ result = __xstat64_conv (vers, &kbuf, buf);
-+
-+ return result;
-+#endif
-+}
-+
-+
-+#include <shlib-compat.h>
-+
-+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-+versioned_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
-+strong_alias (___xstat64, __old__xstat64)
-+compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1);
-+hidden_ver (___xstat64, __xstat64)
-+#else
-+strong_alias (___xstat64, __xstat64)
-+hidden_def (__xstat64)
-+#endif
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/xstatconv.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/xstatconv.c 2005-03-22 11:53:10.058701689 -0500
-@@ -0,0 +1,341 @@
-+/* Convert between the kernel's `struct stat' format, and libc's.
-+ Copyright (C) 1991,1995-1997,2000,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 <errno.h>
-+#include <sys/stat.h>
-+#include <kernel_stat.h>
-+
-+#ifdef STAT_IS_KERNEL_STAT
-+
-+/* Dummy. */
-+struct kernel_stat;
-+
-+#else
-+
-+#include <string.h>
-+
-+
-+#if !defined __ASSUME_STAT64_SYSCALL || defined XSTAT_IS_XSTAT64
-+int
-+__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+{
-+ switch (vers)
-+ {
-+ case _STAT_VER_KERNEL:
-+ /* Nothing to do. The struct is in the form the kernel expects.
-+ We should have short-circuted before we got here, but for
-+ completeness... */
-+ *(struct kernel_stat *) ubuf = *kbuf;
-+ break;
-+
-+ case _STAT_VER_LINUX:
-+ {
-+ struct stat *buf = ubuf;
-+
-+ /* Convert to current kernel version of `struct stat'. */
-+ buf->st_dev = kbuf->st_dev;
-+#ifdef _HAVE_STAT___PAD1
-+ buf->__pad1 = 0;
-+#endif
-+ buf->st_ino = kbuf->st_ino;
-+ buf->st_mode = kbuf->st_mode;
-+ buf->st_nlink = kbuf->st_nlink;
-+ buf->st_uid = kbuf->st_uid;
-+ buf->st_gid = kbuf->st_gid;
-+ buf->st_rdev = kbuf->st_rdev;
-+#ifdef _HAVE_STAT___PAD2
-+ buf->__pad2 = 0;
-+#endif
-+ buf->st_size = kbuf->st_size;
-+ buf->st_blksize = kbuf->st_blksize;
-+ buf->st_blocks = kbuf->st_blocks;
-+#ifdef _HAVE_STAT_NSEC
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
-+#else
-+ buf->st_atime = kbuf->st_atime;
-+ buf->st_mtime = kbuf->st_mtime;
-+ buf->st_ctime = kbuf->st_ctime;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED1
-+ buf->__unused1 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED2
-+ buf->__unused2 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED3
-+ buf->__unused3 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED4
-+ buf->__unused4 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED5
-+ buf->__unused5 = 0;
-+#endif
-+ }
-+ break;
-+
-+ default:
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+#endif
-+
-+int
-+__xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-+{
-+#ifdef XSTAT_IS_XSTAT64
-+ return __xstat_conv (vers, kbuf, ubuf);
-+#else
-+ switch (vers)
-+ {
-+ case _STAT_VER_LINUX:
-+ {
-+ struct stat64 *buf = ubuf;
-+
-+ /* Convert to current kernel version of `struct stat64'. */
-+ buf->st_dev = kbuf->st_dev;
-+#ifdef _HAVE_STAT64___PAD1
-+ buf->__pad1 = 0;
-+#endif
-+ buf->st_ino = kbuf->st_ino;
-+#ifdef _HAVE_STAT64___ST_INO
-+ buf->__st_ino = kbuf->st_ino;
-+#endif
-+ buf->st_mode = kbuf->st_mode;
-+ buf->st_nlink = kbuf->st_nlink;
-+ buf->st_uid = kbuf->st_uid;
-+ buf->st_gid = kbuf->st_gid;
-+ buf->st_rdev = kbuf->st_rdev;
-+#ifdef _HAVE_STAT64___PAD2
-+ buf->__pad2 = 0;
-+#endif
-+ buf->st_size = kbuf->st_size;
-+ buf->st_blksize = kbuf->st_blksize;
-+ buf->st_blocks = kbuf->st_blocks;
-+#ifdef _HAVE_STAT64_NSEC
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
-+#else
-+ buf->st_atime = kbuf->st_atime;
-+ buf->st_mtime = kbuf->st_mtime;
-+ buf->st_ctime = kbuf->st_ctime;
-+#endif
-+#ifdef _HAVE_STAT64___UNUSED1
-+ buf->__unused1 = 0;
-+#endif
-+#ifdef _HAVE_STAT64___UNUSED2
-+ buf->__unused2 = 0;
-+#endif
-+#ifdef _HAVE_STAT64___UNUSED3
-+ buf->__unused3 = 0;
-+#endif
-+#ifdef _HAVE_STAT64___UNUSED4
-+ buf->__unused4 = 0;
-+#endif
-+#ifdef _HAVE_STAT64___UNUSED5
-+ buf->__unused5 = 0;
-+#endif
-+ }
-+ break;
-+
-+ /* If struct stat64 is different from struct stat then
-+ _STAT_VER_KERNEL does not make sense. */
-+ case _STAT_VER_KERNEL:
-+ default:
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+
-+ return 0;
-+#endif
-+}
-+
-+int
-+__xstat32_conv (int vers, void *kbuf_, struct stat *buf)
-+{
-+ struct kernel_stat64 *kbuf = kbuf_;
-+
-+ switch (vers)
-+ {
-+ case _STAT_VER_LINUX:
-+ {
-+ /* Convert current kernel version of `struct stat64' to
-+ `struct stat'. */
-+ buf->st_dev = kbuf->st_dev;
-+#ifdef _HAVE_STAT___PAD1
-+ buf->__pad1 = 0;
-+#endif
-+#ifdef _HAVE_STAT64___ST_INO
-+# if __ASSUME_ST_INO_64_BIT == 0
-+ if (kbuf->st_ino == 0)
-+ buf->st_ino = kbuf->__st_ino;
-+ else
-+# endif
-+ {
-+ buf->st_ino = kbuf->st_ino;
-+ if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino)
-+ && buf->st_ino != kbuf->st_ino)
-+ {
-+ __set_errno (EOVERFLOW);
-+ return -1;
-+ }
-+ }
-+#else
-+ buf->st_ino = kbuf->st_ino;
-+ if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino)
-+ && buf->st_ino != kbuf->st_ino)
-+ {
-+ __set_errno (EOVERFLOW);
-+ return -1;
-+ }
-+#endif
-+ buf->st_mode = kbuf->st_mode;
-+ buf->st_nlink = kbuf->st_nlink;
-+ buf->st_uid = kbuf->st_uid;
-+ buf->st_gid = kbuf->st_gid;
-+ buf->st_rdev = kbuf->st_rdev;
-+#ifdef _HAVE_STAT___PAD2
-+ buf->__pad2 = 0;
-+#endif
-+ buf->st_size = kbuf->st_size;
-+ /* Check for overflow. */
-+ if (sizeof (buf->st_size) != sizeof (kbuf->st_size)
-+ && buf->st_size != kbuf->st_size)
-+ {
-+ __set_errno (EOVERFLOW);
-+ return -1;
-+ }
-+ buf->st_blksize = kbuf->st_blksize;
-+ buf->st_blocks = kbuf->st_blocks;
-+ /* Check for overflow. */
-+ if (sizeof (buf->st_blocks) != sizeof (kbuf->st_blocks)
-+ && buf->st_blocks != kbuf->st_blocks)
-+ {
-+ __set_errno (EOVERFLOW);
-+ return -1;
-+ }
-+#ifdef _HAVE_STAT_NSEC
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
-+#else
-+ buf->st_atime = kbuf->st_atime;
-+ buf->st_mtime = kbuf->st_mtime;
-+ buf->st_ctime = kbuf->st_ctime;
-+#endif
-+
-+#ifdef _HAVE_STAT___UNUSED1
-+ buf->__unused1 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED2
-+ buf->__unused2 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED3
-+ buf->__unused3 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED4
-+ buf->__unused4 = 0;
-+#endif
-+#ifdef _HAVE_STAT___UNUSED5
-+ buf->__unused5 = 0;
-+#endif
-+ }
-+ break;
-+
-+ /* If struct stat64 is different from struct stat then
-+ _STAT_VER_KERNEL does not make sense. */
-+ case _STAT_VER_KERNEL:
-+ default:
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+int
-+__xstat64_kernel64_conv (int vers, void *kbuf_, struct stat64 *buf)
-+{
-+ struct kernel_stat64 *kbuf = kbuf_;
-+
-+ switch (vers)
-+ {
-+ case _STAT_VER_LINUX:
-+ {
-+ /* Convert current kernel version of `struct stat64' to
-+ user version of `struct stat64'. */
-+ buf->st_dev = kbuf->st_dev;
-+#ifdef _HAVE_STAT64___PAD1
-+ buf->__pad1 = kbuf->__pad1;
-+#endif
-+#ifdef _HAVE_STAT64___ST_INO
-+ buf->__st_ino = kbuf->__st_ino;
-+#endif
-+ buf->st_mode = kbuf->st_mode;
-+ buf->st_nlink = kbuf->st_nlink;
-+ buf->st_uid = kbuf->st_uid;
-+ buf->st_gid = kbuf->st_gid;
-+ buf->st_rdev = kbuf->st_rdev;
-+#ifdef _HAVE_STAT64___PAD2
-+ buf->__pad2 = kbuf->__pad2;
-+#endif
-+ buf->st_size = kbuf->st_size;
-+ buf->st_blksize = kbuf->st_blksize;
-+ buf->st_blocks = kbuf->st_blocks;
-+#ifdef _HAVE_STAT64_NSEC
-+ buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
-+ buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
-+ buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
-+ buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
-+ buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
-+ buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
-+#else
-+ buf->st_atime = kbuf->st_atime;
-+ buf->st_mtime = kbuf->st_mtime;
-+ buf->st_ctime = kbuf->st_ctime;
-+#endif
-+ buf->st_ino = kbuf->st_ino;
-+ }
-+ break;
-+
-+ case _STAT_VER_KERNEL:
-+ default:
-+ __set_errno (EINVAL);
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+#endif
-Index: glibc/sysdeps/unix/sysv/linux/arm/eabi/xstatconv.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/unix/sysv/linux/arm/eabi/xstatconv.h 2005-03-22 11:53:10.058701689 -0500
-@@ -0,0 +1,28 @@
-+/* Convert between the kernel's `struct stat' format, and libc's.
-+ Copyright (C) 1991,1995-1997,2000,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 "kernel-features.h"
-+
-+#ifndef STAT_IS_KERNEL_STAT
-+extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
-+extern int __xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
-+#endif
-+extern int __xstat32_conv (int vers, void *kbuf, struct stat *buf);
-+extern int __xstat64_kernel64_conv (int vers, struct kernel_stat64 *kbuf,
-+ struct stat64 *buf);
-Index: glibc/sysdeps/arm/eabi/fpu/fraiseexcpt.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/fraiseexcpt.c 2005-03-22 12:34:55.522464918 -0500
-@@ -0,0 +1,67 @@
-+/* Raise given exceptions.
-+ Copyright (C) 2004 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 <fpu_control.h>
-+#include <fenv.h>
-+#include <float.h>
-+
-+int
-+feraiseexcept (int excepts)
-+{
-+ float dummy;
-+ int fpscr;
-+
-+ /* Raise exceptions represented by EXPECTS. But we must raise only
-+ one signal at a time. It is important that if the overflow/underflow
-+ exception and the inexact exception are given at the same time,
-+ the overflow/underflow exception follows the inexact exception. After
-+ each exception we read from the fpscr, to force the exception to be
-+ raised immediately. */
-+
-+ /* First: invalid exception. */
-+ if (FE_INVALID & excepts)
-+ __asm__ __volatile__ ("fdivs %0,%2,%3\n\tfmrx %1, fpscr"
-+ : "=w" (dummy), "=r" (fpscr) : "w" (0.0f), "w" (0.0f) );
-+
-+ /* Next: division by zero. */
-+ if (FE_DIVBYZERO & excepts)
-+ __asm__ __volatile__ ("fdivs %0,%2,%3\n\tfmrx %1, fpscr"
-+ : "=w" (dummy), "=r" (fpscr) : "w" (1.0f), "w" (0.0f) );
-+
-+ /* Next: overflow. */
-+ if (FE_OVERFLOW & excepts)
-+ /* There's no way to raise overflow without also raising inexact. */
-+ __asm__ __volatile__ ("fadds %0,%2,%3\n\tfmrx %1, fpscr"
-+ : "=w" (dummy), "=r" (fpscr) : "w" (FLT_MAX), "w" (1.0e32f) );
-+
-+ /* Next: underflow. */
-+ if (FE_UNDERFLOW & excepts)
-+ __asm__ __volatile__ ("fdivs %0,%2,%3\n\tfmrx %1, fpscr"
-+ : "=w" (dummy), "=r" (fpscr) : "w" (FLT_MIN), "w" (3.0f) );
-+
-+ /* Last: inexact. */
-+ if (FE_INEXACT & excepts)
-+ __asm__ __volatile__ ("fdivs %0,%2,%3\n\tfmrx %1, fpscr"
-+ : "=w" (dummy), "=r" (fpscr) : "w" (2.0f), "w" (3.0f) );
-+
-+ /* Success. */
-+ return 0;
-+}
-+
-+libm_hidden_def (feraiseexcept)
-Index: glibc/sysdeps/arm/eabi/fpu/feholdexcpt.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/eabi/fpu/feholdexcpt.c 2005-03-22 12:34:55.521465156 -0500
-@@ -0,0 +1,41 @@
-+/* Store current floating-point environment and clear exceptions.
-+ Copyright (C) 1997, 1998, 1999 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 <fenv.h>
-+#include <fpu_control.h>
-+
-+int
-+feholdexcept (fenv_t *envp)
-+{
-+ unsigned long int temp;
-+
-+ /* Store the environment. */
-+ _FPU_GETCW(temp);
-+ envp->__cw = temp;
-+
-+ /* Now set all exceptions to non-stop. */
-+ temp &= ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
-+
-+ /* And clear all exception flags. */
-+ temp &= ~FE_ALL_EXCEPT;
-+
-+ _FPU_SETCW(temp);
-+
-+ return 0;
-+}
-
diff --git a/packages/glibc/glibc-cvs/eabi-patch-3 b/packages/glibc/glibc-cvs/eabi-patch-3
deleted file mode 100644
index 9bd549ec2b..0000000000
--- a/packages/glibc/glibc-cvs/eabi-patch-3
+++ /dev/null
@@ -1,430 +0,0 @@
-From libc-alpha-return-17228-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Tue Mar 22 16:08:31 2005
-Return-Path: <libc-alpha-return-17228-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-libc-alpha at sources dot redhat dot com
-Received: (qmail 20972 invoked by alias); 22 Mar 2005 16:08:29 -0000
-Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
-List-Post: <mailto:libc-alpha at sources dot redhat dot com>
-List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: libc-alpha-owner at sources dot redhat dot com
-Delivered-To: mailing list libc-alpha at sources dot redhat dot com
-Received: (qmail 20165 invoked from network); 22 Mar 2005 16:08:06 -0000
-Received: from unknown (HELO nevyn.them.org) (66.93.172.17)
- by sourceware dot org with SMTP; 22 Mar 2005 16:08:06 -0000
-Received: from drow by nevyn.them.org with local (Exim 4.50 #1 (Debian))
- id 1DDlvX-0006tE-Bh; Tue, 22 Mar 2005 11:08:19 -0500
-Date: Tue, 22 Mar 2005 11:08:19 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: libc-alpha at sources dot redhat dot com
-Cc: Phil Blundell <pb at reciva dot com>
-Subject: ARM EABI support - changes to existing ARM code
-Message-ID: <20050322160819.GA26216@nevyn.them.org>
-Mail-Followup-To: libc-alpha at sources dot redhat dot com,
- Phil Blundell <pb at reciva dot com>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.5.6+20040907i
-
-This patch updates the common ARM files for EABI support. The changes are:
- - Old ARM ABI targets always use FPA (mixed-endian) byte ordering. EABI
- targets always use VFP byte ordering for doubles, which is standard
- ieee754 layout. Removing the arm-specific ieee754.h doesn't break FPA;
- it was a specialized version of the common header, which handles FPA
- but also handles VFP.
- - The stack needs to be aligned to eight bytes instead of just four,
- including in mmap2 and when shifting _dl_argv.
- - We need some markers around _start to indicate end-of-stack for the
- unwinder - ARM EABI does not use either SJLJ exceptions or DWARF-2
- exceptions. It uses a table based format which seems to be not
- quite completely unlike DWARF-2.
-
-Do these changes look OK?
-
---
-Daniel Jacobowitz
-CodeSourcery, LLC
-
-2005-03-22 Daniel Jacobowitz <dan@codesourcery.com>
-
- * sysdeps/arm/bits/endian.h (__FLOAT_WORD_ORDER): Handle VFP.
- * sysdeps/arm/gmp-mparam.h (IEEE_DOUBLE_BIG_ENDIAN,
- IEEE_DOUBLE_MIXED_ENDIAN): Handle big-endian and VFP.
- * sysdeps/arm/ieee754.h: Remove.
-
- * sysdeps/arm/dl-machine.h (_dl_start_user): Align the stack to eight
- bytes even when shifting arguments.
- * sysdeps/arm/dl-sysdep.h: New file.
-
- * sysdeps/arm/elf/start.S (_start): If not using SJLJ exceptions, include
- EABI unwind markers to terminate unwinding.
-
- * sysdeps/unix/sysv/linux/arm/mmap64.S: Handle big-endian byte ordering
- and EABI stack layout.
-
-Index: glibc/sysdeps/arm/bits/endian.h
-===================================================================
---- glibc.orig/sysdeps/arm/bits/endian.h 2005-03-22 10:26:27.092978200 -0500
-+++ glibc/sysdeps/arm/bits/endian.h 2005-03-22 10:27:39.457490903 -0500
-@@ -9,4 +9,9 @@
- #else
- #define __BYTE_ORDER __LITTLE_ENDIAN
- #endif
-+
-+#ifdef __VFP_FP__
-+#define __FLOAT_WORD_ORDER __BYTE_ORDER
-+#else
- #define __FLOAT_WORD_ORDER __BIG_ENDIAN
-+#endif
-Index: glibc/sysdeps/arm/dl-machine.h
-===================================================================
---- glibc.orig/sysdeps/arm/dl-machine.h 2005-03-22 10:26:27.092978200 -0500
-+++ glibc/sysdeps/arm/dl-machine.h 2005-03-22 10:27:39.457490903 -0500
-@@ -156,22 +156,19 @@ _dl_start_user:\n\
- add sl, pc, sl\n\
- .L_GOT_GOT:\n\
- ldr r4, [sl, r4]\n\
-- @ get the original arg count\n\
-- ldr r1, [sp]\n\
- @ save the entry point in another register\n\
- mov r6, r0\n\
-- @ adjust the stack pointer to skip the extra args\n\
-- add sp, sp, r4, lsl #2\n\
-- @ subtract _dl_skip_args from original arg count\n\
-- sub r1, r1, r4\n\
-+ @ get the original arg count\n\
-+ ldr r1, [sp]\n\
- @ get the argv address\n\
- add r2, sp, #4\n\
-- @ store the new argc in the new stack location\n\
-- str r1, [sp]\n\
-+ @ Fix up the stack if necessary.\n\
-+ cmp r4, #0\n\
-+ bne .L_fixup_stack\n\
-+.L_done_fixup:\n\
- @ compute envp\n\
- add r3, r2, r1, lsl #2\n\
- add r3, r3, #4\n\
--\n\
- @ now we call _dl_init\n\
- ldr r0, .L_LOADED\n\
- ldr r0, [sl, r0]\n\
-@@ -182,12 +179,45 @@ _dl_start_user:\n\
- add r0, sl, r0\n\
- @ jump to the user_s entry point\n\
- " BX(r6) "\n\
-+\n\
-+ @ iWMMXt and EABI targets require the stack to be eight byte\n\
-+ @ aligned - shuffle arguments etc.\n\
-+.L_fixup_stack:\n\
-+ @ subtract _dl_skip_args from original arg count\n\
-+ sub r1, r1, r4\n\
-+ @ store the new argc in the new stack location\n\
-+ str r1, [sp]\n\
-+ @ find the first unskipped argument\n\
-+ mov r3, r2\n\
-+ add r4, r2, r4, lsl #2\n\
-+ @ shuffle argv down\n\
-+1: ldr r5, [r4], #4\n\
-+ str r5, [r3], #4\n\
-+ cmp r5, #0\n\
-+ bne 1b\n\
-+ @ shuffle envp down\n\
-+1: ldr r5, [r4], #4\n\
-+ str r5, [r3], #4\n\
-+ cmp r5, #0\n\
-+ bne 1b\n\
-+ @ shuffle auxv down\n\
-+1: ldmia r4!, {r0, r5}\n\
-+ stmia r3!, {r0, r5}\n\
-+ cmp r0, #0\n\
-+ bne 1b\n\
-+ @ Update _dl_argv\n\
-+ ldr r3, .L_ARGV\n\
-+ str r2, [sl, r3]\n\
-+ b .L_done_fixup\n\
-+\n\
- .L_GET_GOT:\n\
- .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4\n\
- .L_SKIP_ARGS:\n\
- .word _dl_skip_args(GOTOFF)\n\
- .L_FINI_PROC:\n\
- .word _dl_fini(GOTOFF)\n\
-+.L_ARGV:\n\
-+ .word _dl_argv(GOTOFF)\n\
- .L_LOADED:\n\
- .word _rtld_local(GOTOFF)\n\
- .previous\n\
-Index: glibc/sysdeps/arm/dl-sysdep.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ glibc/sysdeps/arm/dl-sysdep.h 2005-03-22 10:27:39.458490675 -0500
-@@ -0,0 +1,41 @@
-+/* System-specific settings for dynamic linker code. ARM version.
-+ 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
-+ 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_SYSDEP_H
-+#define _DL_SYSDEP_H 1
-+
-+/* This macro must be defined to either 0 or 1.
-+
-+ If 1, then an errno global variable hidden in ld.so will work right with
-+ all the errno-using libc code compiled for ld.so, and there is never a
-+ need to share the errno location with libc. This is appropriate only if
-+ all the libc functions that ld.so uses are called without PLT and always
-+ get the versions linked into ld.so rather than the libc ones. */
-+
-+#ifdef IS_IN_rtld
-+# define RTLD_PRIVATE_ERRNO 1
-+#else
-+# define RTLD_PRIVATE_ERRNO 0
-+#endif
-+
-+/* _dl_argv cannot be attribute_relro, because _dl_start_user
-+ might write into it after _dl_start returns. */
-+#define DL_ARGV_NOT_RELRO 1
-+
-+#endif /* dl-sysdep.h */
-Index: glibc/sysdeps/arm/elf/start.S
-===================================================================
---- glibc.orig/sysdeps/arm/elf/start.S 2005-03-22 10:26:27.096977288 -0500
-+++ glibc/sysdeps/arm/elf/start.S 2005-03-22 11:00:35.178522707 -0500
-@@ -1,5 +1,6 @@
- /* Startup code for ARM & ELF
-- Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1996, 1997, 1998, 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
-@@ -62,6 +63,10 @@
- .globl _start
- .type _start,#function
- _start:
-+#if !defined(__USING_SJLJ_EXCEPTIONS__)
-+ /* Protect against unhandled exceptions. */
-+ .fnstart
-+#endif
- /* Fetch address of fini */
- ldr ip, =__libc_csu_fini
-
-@@ -93,6 +98,11 @@ _start:
- /* should never get here....*/
- bl abort
-
-+#if !defined(__USING_SJLJ_EXCEPTIONS__)
-+ .cantunwind
-+ .fnend
-+#endif
-+
- /* Define a symbol for the first piece of initialized data. */
- .data
- .globl __data_start
-Index: glibc/sysdeps/arm/gmp-mparam.h
-===================================================================
---- glibc.orig/sysdeps/arm/gmp-mparam.h 2005-03-22 10:26:27.092978200 -0500
-+++ glibc/sysdeps/arm/gmp-mparam.h 2005-03-22 11:00:42.795683773 -0500
-@@ -1,6 +1,6 @@
- /* gmp-mparam.h -- Compiler/machine parameter header file.
-
--Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-+Copyright (C) 1991, 1993, 1994, 1995, 2005 Free Software Foundation, Inc.
-
- This file is part of the GNU MP Library.
-
-@@ -26,5 +26,13 @@ MA 02111-1307, USA. */
- #define BITS_PER_SHORTINT 16
- #define BITS_PER_CHAR 8
-
--#define IEEE_DOUBLE_BIG_ENDIAN 0
--#define IEEE_DOUBLE_MIXED_ENDIAN 1
-+#if defined(__ARMEB__)
-+# define IEEE_DOUBLE_MIXED_ENDIAN 0
-+# define IEEE_DOUBLE_BIG_ENDIAN 1
-+#elif defined(__VFP_FP__)
-+# define IEEE_DOUBLE_MIXED_ENDIAN 0
-+# define IEEE_DOUBLE_BIG_ENDIAN 0
-+#else
-+# define IEEE_DOUBLE_BIG_ENDIAN 0
-+# define IEEE_DOUBLE_MIXED_ENDIAN 1
-+#endif
-Index: glibc/sysdeps/arm/ieee754.h
-===================================================================
---- glibc.orig/sysdeps/arm/ieee754.h 2005-03-22 10:26:27.092978200 -0500
-+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
-@@ -1,115 +0,0 @@
--/* Copyright (C) 1992, 1995, 1996, 1998 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 _IEEE754_H
--
--#define _IEEE754_H 1
--#include <features.h>
--
--#include <endian.h>
--
--__BEGIN_DECLS
--
--union ieee754_float
-- {
-- float f;
--
-- /* This is the IEEE 754 single-precision format. */
-- struct
-- {
-- unsigned int mantissa:23;
-- unsigned int exponent:8;
-- unsigned int negative:1;
-- } ieee;
--
-- /* This format makes it easier to see if a NaN is a signalling NaN. */
-- struct
-- {
-- unsigned int mantissa:22;
-- unsigned int quiet_nan:1;
-- unsigned int exponent:8;
-- unsigned int negative:1;
-- } ieee_nan;
-- };
--
--#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
--
--
--union ieee754_double
-- {
-- double d;
--
-- /* This is the IEEE 754 double-precision format. */
-- struct
-- {
-- unsigned int mantissa0:20;
-- unsigned int exponent:11;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- } ieee;
--
-- /* This format makes it easier to see if a NaN is a signalling NaN. */
-- struct
-- {
-- unsigned int mantissa0:19;
-- unsigned int quiet_nan:1;
-- unsigned int exponent:11;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- } ieee_nan;
-- };
--
--#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
--
--
--/* The following two structures are correct for `new' floating point systems but
-- wrong for the old FPPC. The only solution seems to be to avoid their use on
-- old hardware. */
--
--union ieee854_long_double
-- {
-- long double d;
--
-- /* This is the IEEE 854 double-extended-precision format. */
-- struct
-- {
-- unsigned int exponent:15;
-- unsigned int empty:16;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- unsigned int mantissa0:32;
-- } ieee;
--
-- /* This is for NaNs in the IEEE 854 double-extended-precision format. */
-- struct
-- {
-- unsigned int exponent:15;
-- unsigned int empty:16;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- unsigned int mantissa0:30;
-- unsigned int quiet_nan:1;
-- unsigned int one:1;
-- } ieee_nan;
-- };
--
--#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
--
--__END_DECLS
--
--#endif /* ieee754.h */
-Index: glibc/sysdeps/unix/sysv/linux/arm/mmap64.S
-===================================================================
---- glibc.orig/sysdeps/unix/sysv/linux/arm/mmap64.S 2005-03-22 10:26:27.097977060 -0500
-+++ glibc/sysdeps/unix/sysv/linux/arm/mmap64.S 2005-03-22 11:00:53.051209928 -0500
-@@ -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
-@@ -23,13 +23,28 @@
-
- #include "kernel-features.h"
-
-+#ifdef __ARM_EABI__
-+# define INITIAL_OFFSET 8
-+#else
-+# define INITIAL_OFFSET 4
-+#endif
-+
-+#ifdef __ARMEB__
-+# define LOW_OFFSET INITIAL_OFFSET + 4
-+/* The initial + 4 is for the stack postdecrement. */
-+# define HIGH_OFFSET 4 + INITIAL_OFFSET + 0
-+#else
-+# define LOW_OFFSET INITIAL_OFFSET + 0
-+# define HIGH_OFFSET 4 + INITIAL_OFFSET + 4
-+#endif
-+
- /* The mmap2 system call takes six arguments, all in registers. */
- .text
- ENTRY (__mmap64)
- #ifdef __NR_mmap2
-- ldr ip, [sp, $4] @ offset low part
-+ ldr ip, [sp, $LOW_OFFSET] @ offset low part
- str r5, [sp, #-4]!
-- ldr r5, [sp, $12] @ offset high part
-+ ldr r5, [sp, $HIGH_OFFSET] @ offset high part
- str r4, [sp, #-4]!
- movs r4, ip, lsl $20 @ check that offset is page-aligned
- mov ip, ip, lsr $12
-
diff --git a/packages/glibc/glibc-cvs/eabi-patch-4 b/packages/glibc/glibc-cvs/eabi-patch-4
deleted file mode 100644
index 45166ef960..0000000000
--- a/packages/glibc/glibc-cvs/eabi-patch-4
+++ /dev/null
@@ -1,64 +0,0 @@
-From libc-alpha-return-17230-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Tue Mar 22 16:25:01 2005
-Return-Path: <libc-alpha-return-17230-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-libc-alpha at sources dot redhat dot com
-Received: (qmail 7764 invoked by alias); 22 Mar 2005 16:24:20 -0000
-Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
-List-Post: <mailto:libc-alpha at sources dot redhat dot com>
-List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: libc-alpha-owner at sources dot redhat dot com
-Delivered-To: mailing list libc-alpha at sources dot redhat dot com
-Received: (qmail 7316 invoked from network); 22 Mar 2005 16:23:45 -0000
-Received: from unknown (HELO nevyn.them.org) (66.93.172.17)
- by sourceware dot org with SMTP; 22 Mar 2005 16:23:45 -0000
-Received: from drow by nevyn.them.org with local (Exim 4.50 #1 (Debian))
- id 1DDmAg-000798-P7
- for <libc-alpha at sources dot redhat dot com>; Tue, 22 Mar 2005 11:23:58 -0500
-Date: Tue, 22 Mar 2005 11:23:58 -0500
-From: Daniel Jacobowitz <drow at false dot org>
-To: libc-alpha at sources dot redhat dot com
-Subject: Re: Define PT_ARM_EXIDX
-Message-ID: <20050322162358.GA27424@nevyn.them.org>
-Mail-Followup-To: libc-alpha at sources dot redhat dot com
-References: <20050322155140.GA25312@nevyn.them.org>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-In-Reply-To: <20050322155140 dot GA25312 at nevyn dot them dot org>
-User-Agent: Mutt/1.5.6+20040907i
-
-On Tue, Mar 22, 2005 at 10:51:40AM -0500, Daniel Jacobowitz wrote:
-> The ARM EABI uses a program header to locate exception tables for shared
-> objects, just like PT_GNU_EH_FRAME. But the format is a little different,
-> and the header is above PT_LOPROC because it was assigned by a processor
-> vendor. This just adds the constant to elf/elf.h.
-
-Oops, Ulrich pointed out that I put the constant in the wrong place.
-
---
-Daniel Jacobowitz
-CodeSourcery, LLC
-
-2005-03-22 Daniel Jacobowitz <dan@codesourcery.com>
-
- * elf/elf.h (PT_ARM_EXIDX): Define.
-
-Index: glibc/elf/elf.h
-===================================================================
---- glibc.orig/elf/elf.h 2005-03-22 11:21:34.961464117 -0500
-+++ glibc/elf/elf.h 2005-03-22 11:22:49.872172922 -0500
-@@ -2138,7 +2138,11 @@ typedef Elf32_Addr Elf32_Conflict;
- #define PF_ARM_SB 0x10000000 /* Segment contains the location
- addressed by the static base */
-
-+/* Processor specific values for the Phdr p_type field. */
-+#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */
-+
- /* ARM relocs. */
-+
- #define R_ARM_NONE 0 /* No reloc */
- #define R_ARM_PC24 1 /* PC relative 26 bit branch */
- #define R_ARM_ABS32 2 /* Direct 32 bit */
-
diff --git a/packages/glibc/glibc-cvs/etc/ld.so.conf b/packages/glibc/glibc-cvs/etc/ld.so.conf
deleted file mode 100644
index 46e06d3f0a..0000000000
--- a/packages/glibc/glibc-cvs/etc/ld.so.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/local/lib
-
diff --git a/packages/glibc/glibc-cvs/glibc-fp-byteorder.patch b/packages/glibc/glibc-cvs/glibc-fp-byteorder.patch
deleted file mode 100644
index f20432ea8b..0000000000
--- a/packages/glibc/glibc-cvs/glibc-fp-byteorder.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html
-Author: addsub@eyou.com
-Target: ARM
-
-Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c
-and makes printf("%f", 1.0) work.
-
-Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html :
- It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point
- is broken' on my big-endian hardfloat FPA ARM platform. ...
- It's definitely needed for hardfloat. So I'd think it's needed for
- big-endian systems in any case, and for VFP on little-endian systems
- too. Someone would have to verify that though.
-
-Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html
- I just had a look at glibc-20040830, and [this patch] is still needed and useful
- for this version. glibc-20040830 out-of-the-box still contains the
- following wrong assumptions:
- - sysdeps/arm/bits/endian.h: float word order is big endian (which it is
- not on vfp systems)
- - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they
- are not on big endian systems, neither on vfp systems)
- - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order
- (which they are not on big endian systems)
- [This patch] seems the right solution for all of these issues.
-
-Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html :
- It's even needed for glibc CVS, AFAICS.
- The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h
- (currently at version 1.4) is only needed for proper VFP operation.
- But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk
- that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed
- for proper operation of *any* FP model on big endian ARM.
-
-See also discussion in followups to
-http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html)
-
-Message-ID: <276985760.37584@eyou.com>
-Received: from unknown (HELO eyou.com) (172.16.2.2)
- by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800
-Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800
-Date: 17 Feb 2004 10:42:38 +0800
-Message-ID: <20040217104238.8237.qmail@eyou.com>
-From: "add" <addsub@eyou.com>
-To: dank@kegel.com
-Reply-To: "add" <addsub@eyou.com>
-Subject: Re:&nbsp;&nbsp;&nbsp;problem&nbsp;while&nbsp;building&nbsp;arm&nbsp;vfp&nbsp;softfloat&nbsp;gcc&nbsp;`
-
-Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat
-toolchain can printf("%f\n",1.0). So you may have a try of this
-
-
-diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h
---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400
-+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500
-@@ -9,4 +9,9 @@
- #else
- #define __BYTE_ORDER __LITTLE_ENDIAN
- #endif
-+
-+#ifdef __VFP_FP__
-+#define __FLOAT_WORD_ORDER __BYTE_ORDER
-+#else
- #define __FLOAT_WORD_ORDER __BIG_ENDIAN
-+#endif
-diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h
---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500
-@@ -26,5 +26,13 @@ MA 02111-1307, USA. */
- #define BITS_PER_SHORTINT 16
- #define BITS_PER_CHAR 8
-
--#define IEEE_DOUBLE_BIG_ENDIAN 0
--#define IEEE_DOUBLE_MIXED_ENDIAN 1
-+#if defined(__ARMEB__)
-+# define IEEE_DOUBLE_MIXED_ENDIAN 0
-+# define IEEE_DOUBLE_BIG_ENDIAN 1
-+#elif defined(__VFP_FP__)
-+# define IEEE_DOUBLE_MIXED_ENDIAN 0
-+# define IEEE_DOUBLE_BIG_ENDIAN 0
-+#else
-+# define IEEE_DOUBLE_BIG_ENDIAN 0
-+# define IEEE_DOUBLE_MIXED_ENDIAN 1
-+#endif
-diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h
---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400
-+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500
-@@ -1,115 +0,0 @@
--/* Copyright (C) 1992, 1995, 1996, 1998 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 _IEEE754_H
--
--#define _IEEE754_H 1
--#include <features.h>
--
--#include <endian.h>
--
--__BEGIN_DECLS
--
--union ieee754_float
-- {
-- float f;
--
-- /* This is the IEEE 754 single-precision format. */
-- struct
-- {
-- unsigned int mantissa:23;
-- unsigned int exponent:8;
-- unsigned int negative:1;
-- } ieee;
--
-- /* This format makes it easier to see if a NaN is a signalling NaN. */
-- struct
-- {
-- unsigned int mantissa:22;
-- unsigned int quiet_nan:1;
-- unsigned int exponent:8;
-- unsigned int negative:1;
-- } ieee_nan;
-- };
--
--#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
--
--
--union ieee754_double
-- {
-- double d;
--
-- /* This is the IEEE 754 double-precision format. */
-- struct
-- {
-- unsigned int mantissa0:20;
-- unsigned int exponent:11;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- } ieee;
--
-- /* This format makes it easier to see if a NaN is a signalling NaN. */
-- struct
-- {
-- unsigned int mantissa0:19;
-- unsigned int quiet_nan:1;
-- unsigned int exponent:11;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- } ieee_nan;
-- };
--
--#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
--
--
--/* The following two structures are correct for `new' floating point systems but
-- wrong for the old FPPC. The only solution seems to be to avoid their use on
-- old hardware. */
--
--union ieee854_long_double
-- {
-- long double d;
--
-- /* This is the IEEE 854 double-extended-precision format. */
-- struct
-- {
-- unsigned int exponent:15;
-- unsigned int empty:16;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- unsigned int mantissa0:32;
-- } ieee;
--
-- /* This is for NaNs in the IEEE 854 double-extended-precision format. */
-- struct
-- {
-- unsigned int exponent:15;
-- unsigned int empty:16;
-- unsigned int negative:1;
-- unsigned int mantissa1:32;
-- unsigned int mantissa0:30;
-- unsigned int quiet_nan:1;
-- unsigned int one:1;
-- } ieee_nan;
-- };
--
--#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
--
--__END_DECLS
--
--#endif /* ieee754.h */
diff --git a/packages/glibc/glibc-cvs/ldconfig.patch b/packages/glibc/glibc-cvs/ldconfig.patch
deleted file mode 100644
index c60b9b1432..0000000000
--- a/packages/glibc/glibc-cvs/ldconfig.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- elf/ldconfig.c 2003-07-08 23:26:27.000000000 +0900
-+++ elf/ldconfig.c.debian 2003-07-08 23:29:43.000000000 +0900
-@@ -920,26 +920,24 @@
- {
- FILE *file = NULL;
- char *line = NULL;
-- const char *canon;
-+ const char *canon = filename;
- size_t len = 0;
-+ int file_fd;
-
- if (opt_chroot)
- {
- canon = chroot_canon (opt_chroot, filename);
-- if (canon)
-- file = fopen (canon, "r");
-- else
-+ if (!canon)
- canon = filename;
- }
-- else
-- {
-- canon = filename;
-- file = fopen (filename, "r");
-- }
-+
-+ if ((file_fd = open(canon, O_RDONLY | O_EXCL, 0022)) != -1)
-+ file = fdopen (file_fd, "r");
-
- if (file == NULL)
- {
-- error (0, errno, _("Can't open configuration file %s"), canon);
-+ if (opt_verbose)
-+ error (0, errno, _("Can't open configuration file %s"), canon);
- if (canon != filename)
- free ((char *) canon);
- return;
diff --git a/packages/glibc/glibc-cvs/ldd.patch b/packages/glibc/glibc-cvs/ldd.patch
deleted file mode 100644
index 01719dbe08..0000000000
--- a/packages/glibc/glibc-cvs/ldd.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- elf/ldd.bash.in~ Tue Apr 3 21:43:31 2001
-+++ elf/ldd.bash.in Tue Apr 3 21:54:15 2001
-@@ -32,6 +32,7 @@
- warn=
- bind_now=
- verbose=
-+filename_magic_regex="((^|/)lib|.so$)"
-
- while test $# -gt 0; do
- case "$1" in
-@@ -123,8 +124,11 @@
- echo "ldd: ${file}:" $"No such file or directory" >&2
- result=1
- elif test -r "$file"; then
-- test -x "$file" || echo 'ldd:' $"\
--warning: you do not have execution permission for" "\`$file'" >&2
-+ if test ! -x "$file" && eval echo "$file" \
-+ | egrep -v "$filename_magic_regex" > /dev/null; then
-+ echo 'ldd:' $"warning: you do not have execution permission for"\
-+ "\`$file'" >&2
-+ fi
- RTLD=
- for rtld in ${RTLDLIST}; do
- if test -x $rtld; then
-@@ -143,7 +147,12 @@
- fi
- case $ret in
- 0)
-- eval $add_env '"$file"' || result=1
-+ if [ ! -x "$file" ] && eval file -L "$file" 2>/dev/null \
-+ | sed 10q | egrep "$file_magic_regex" > /dev/null; then
-+ eval $add_env ${RTLD} '"$file"' || result=1
-+ else
-+ eval $add_env '"$file"' || result=1
-+ fi
- ;;
- 1)
- # This can be a non-ELF binary or no binary at all.
diff --git a/packages/glibc/glibc-cvs/ldsocache-varrun.patch b/packages/glibc/glibc-cvs/ldsocache-varrun.patch
deleted file mode 100644
index 9994d4f879..0000000000
--- a/packages/glibc/glibc-cvs/ldsocache-varrun.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-This patch moves ld.so.cache from /etc to /var/run. This is for devices
-where /etc is JFFS2 or CRAMFS but /var is a ramdisk.
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun
-+++ libc/sysdeps/generic/dl-cache.h
-@@ -29,7 +29,7 @@
- #endif
-
- #ifndef LD_SO_CACHE
--# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
-+# define LD_SO_CACHE "/var/run/ld.so.cache"
- #endif
-
- #ifndef add_system_dir
diff --git a/packages/glibc/glibc-cvs/makeconfig.patch b/packages/glibc/glibc-cvs/makeconfig.patch
deleted file mode 100644
index 4365878e95..0000000000
--- a/packages/glibc/glibc-cvs/makeconfig.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- Makeconfig~ 2001/09/12 18:49:45 1.265
-+++ Makeconfig 2001/10/07 20:56:17
-@@ -532,10 +532,11 @@
- $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\
- $(filter -Wl$(comma)-rpath-link=%,\
- $(sysdep-LDFLAGS)))))
-+ld_envlib_path = $(shell test x$$LD_LIBRARY_PATH = x || echo -n :$$LD_LIBRARY_PATH)
- run-program-prefix = $(if $(filter $(notdir $(built-program-file)),\
- $(tests-static)),, \
- $(elf-objpfx)$(rtld-installed-name) \
-- --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)))
-+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))$(ld_envlib_path))
- else
- run-program-prefix =
- endif
diff --git a/packages/glibc/glibc-cvs/mips-no-throw.patch b/packages/glibc/glibc-cvs/mips-no-throw.patch
deleted file mode 100644
index 99a316eeac..0000000000
--- a/packages/glibc/glibc-cvs/mips-no-throw.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- sysdeps/unix/sysv/linux/mips/bits/socket.h.orig 2004-09-15 14:27:06.342572280 +0200
-+++ sysdeps/unix/sysv/linux/mips/bits/socket.h 2004-09-15 14:27:28.162255184 +0200
-@@ -261,7 +261,7 @@
- # define _EXTERN_INLINE extern __inline
- # endif
- _EXTERN_INLINE struct cmsghdr *
--__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
-+__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
- {
- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
- /* The kernel header does this so there may be a reason. */
---- sysdeps/unix/sysv/linux/mips/sys/tas.h.orig 2004-09-15 14:27:41.809180536 +0200
-+++ sysdeps/unix/sysv/linux/mips/sys/tas.h 2004-09-15 14:27:53.245441960 +0200
-@@ -35,7 +35,7 @@
- # endif
-
- _EXTERN_INLINE int
--_test_and_set (int *p, int v) __THROW
-+_test_and_set (int *p, int v)
- {
- int r, t;
-
diff --git a/packages/glibc/glibc-cvs/noinfo.patch b/packages/glibc/glibc-cvs/noinfo.patch
deleted file mode 100644
index 6aa0e64d96..0000000000
--- a/packages/glibc/glibc-cvs/noinfo.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- glibc-2.3.2/manual/Makefile~noinfo
-+++ glibc-2.3.2/manual/Makefile
-@@ -25,7 +25,7 @@
- INSTALL_INFO = install-info
-
- .PHONY: all dvi pdf info html
--all: dvi
-+all:
- dvi: libc.dvi
- pdf: libc.pdf
-
-@@ -41,7 +41,7 @@
- TEXI2PDF = texi2dvi --pdf
-
- ifneq ($(strip $(MAKEINFO)),:)
--all: info
-+all:
- info: libc.info dir-add.info
- endif
-
-@@ -176,28 +176,14 @@
- -rm -f top-menu.texi chapters.texi
-
- .PHONY: install subdir_install installdirs install-data
--install-data subdir_install: install
-+install-data subdir_install:
- ifneq ($(strip $(MAKEINFO)),:)
- # There are two variants of install-info out there. The GNU version
- # knows about the INFO-DIR-SECTION tag, the Debian version doesn't.
- ifneq ($(OLD_DEBIAN_INSTALL_INFO),yes)
--install: $(inst_infodir)/libc.info dir-add.info
-- @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \
-- test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) $(inst_infodir)/libc.info;\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) dir-add.info;\
-- else : ; fi
-+install:
- else
--install: $(inst_infodir)/libc.info dir-add.info
-- @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \
-- test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) \
-- --section '^GNU Libraries:' 'GNU Libraries:' \
-- $(inst_infodir)/libc.info;\
-- $(INSTALL_INFO) --info-dir=$(inst_infodir) \
-- --section '^GNU C Library functions:' 'GNU C Library functions:' \
-- dir-add.info;\
-- else : ; fi
-+install:
- endif
- endif
- # Catchall implicit rule for other installation targets from the parent.
diff --git a/packages/glibc/glibc-cvs/trampoline.patch b/packages/glibc/glibc-cvs/trampoline.patch
deleted file mode 100644
index 86cfc0a539..0000000000
--- a/packages/glibc/glibc-cvs/trampoline.patch
+++ /dev/null
@@ -1,560 +0,0 @@
-From libc-alpha-return-16890-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Wed Jan 19 18:02:53 2005
-Return-Path: <libc-alpha-return-16890-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com>
-Delivered-To: listarch-libc-alpha at sources dot redhat dot com
-Received: (qmail 26073 invoked by alias); 19 Jan 2005 18:02:41 -0000
-Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm
-Precedence: bulk
-List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com>
-List-Archive: <http://sources.redhat.com/ml/libc-alpha/>
-List-Post: <mailto:libc-alpha at sources dot redhat dot com>
-List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs>
-Sender: libc-alpha-owner at sources dot redhat dot com
-Delivered-To: mailing list libc-alpha at sources dot redhat dot com
-Received: (qmail 25420 invoked from network); 19 Jan 2005 18:01:47 -0000
-Received: from unknown (HELO mail.codesourcery.com) (65.74.133.9)
- by sourceware dot org with SMTP; 19 Jan 2005 18:01:47 -0000
-Received: (qmail 7456 invoked from network); 19 Jan 2005 18:01:44 -0000
-Received: from localhost (HELO ?192.168.0.100?) (mitchell@127.0.0.1)
- by mail dot codesourcery dot com with SMTP; 19 Jan 2005 18:01:44 -0000
-Message-ID: <41EEA082.1020000@codesourcery.com>
-Date: Wed, 19 Jan 2005 10:01:38 -0800
-From: Mark Mitchell <mark at codesourcery dot com>
-Organization: CodeSourcery, LLC
-User-Agent: Mozilla Thunderbird 0.9 (Windows/20041103)
-MIME-Version: 1.0
-To: Daniel Jacobowitz <drow at false dot org>
-CC: libc-alpha at sources dot redhat dot com
-Subject: Re: PATCH: ARM dl-trampoline.S
-References: <200501191631.j0JGVVRA002591@sirius.codesourcery.com> <20050119170217.GA3137@nevyn.them.org>
-In-Reply-To: <20050119170217 dot GA3137 at nevyn dot them dot org>
-Content-Type: multipart/mixed;
- boundary="------------050601050507020101060100"
-
-This is a multi-part message in MIME format.
---------------050601050507020101060100
-Content-Type: text/plain; charset=ISO-8859-1; format=flowed
-Content-Transfer-Encoding: 7bit
-
-Daniel Jacobowitz wrote:
-> On Wed, Jan 19, 2005 at 08:31:31AM -0800, Mark Mitchell wrote:
->
->>This patch updates the ARM port for the recent dl-trampoline.S and
->>link.h changes. OK to apply?
->
->
-> Did you test this? I'm pretty sure that RESOLVE_MAP returns a link
-> map, unlike RESOLVE.
-
-No, I didn't test -- except by building glibc. (There are other
-problems at the moment, AFAICT, with actually running the library on ARM.)
-
-However, you're definitely correct -- good catch! -- and, in fact, in
-looking at my logs I see compiler warnings about the mismatched type
-assignment. Here is a more plausible version. How about this one?
-
-Thanks,
-
---
-Mark Mitchell
-CodeSourcery, LLC
-mark@codesourcery.com
-(916) 791-8304
-
---------------050601050507020101060100
-Content-Type: text/plain;
- name="glibc.patch"
-Content-Transfer-Encoding: 7bit
-Content-Disposition: inline;
- filename="glibc.patch"
-
-2005-01-19 Mark Mitchell <mark@codesourcery.com>
-
- * elf/tst-auditmod1.c: Add ARM support.
- * sysdeps/arm/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
- Remove.
- (RESOLVE): Do not use it; use ...
- (RESOLVE_MAP): ... instead.
- (ARCH_LA_PLTENTER): Define.
- (ARCH_LA_PLTEXIT): Likewise.
- (elf_machine_rel): Use RESOLVE_MAP, not RESOLVE.
- (elf_machine_rela): Likewise.
- * sysdeps/arm/dl-trampoline.S: New file.
- * sysdeps/arm/bits/link.h: Likewise.
- * sysdeps/generic/ldsodefs.h (struct La_arm_regs): Declare.
- (struct audit_ifaces): Add ARM functions.
-
-Index: elf/tst-auditmod1.c
-===================================================================
-RCS file: /cvs/glibc/libc/elf/tst-auditmod1.c,v
-retrieving revision 1.7
-diff -c -5 -p -r1.7 tst-auditmod1.c
-*** elf/tst-auditmod1.c 16 Jan 2005 06:24:59 -0000 1.7
---- elf/tst-auditmod1.c 19 Jan 2005 17:54:32 -0000
-*************** la_symbind64 (Elf64_Sym *sym, unsigned i
-*** 100,110 ****
- symname, (long int) sym->st_value, ndx, *flags);
-
- return sym->st_value;
- }
-
-! #ifdef __i386__
- # define pltenter la_i86_gnu_pltenter
- # define pltexit la_i86_gnu_pltexit
- # define La_regs La_i86_regs
- # define La_retval La_i86_retval
- # define int_retval lrv_eax
---- 100,116 ----
- symname, (long int) sym->st_value, ndx, *flags);
-
- return sym->st_value;
- }
-
-! #ifdef __arm__
-! # define pltenter la_arm_gnu_plteneter
-! # define pltext la_arm_gnu_pltexit
-! # define La_regs La_arm_regs
-! # define La_retval La_arm_retval
-! # define int_retval lvr_r0
-! #elif defined __i386__
- # define pltenter la_i86_gnu_pltenter
- # define pltexit la_i86_gnu_pltexit
- # define La_regs La_i86_regs
- # define La_retval La_i86_retval
- # define int_retval lrv_eax
-Index: sysdeps/arm/dl-trampoline.S
-===================================================================
-RCS file: sysdeps/arm/dl-trampoline.S
-diff -N sysdeps/arm/dl-trampoline.S
-*** /dev/null 1 Jan 1970 00:00:00 -0000
---- sysdeps/arm/dl-trampoline.S 19 Jan 2005 17:54:32 -0000
-***************
-*** 0 ****
---- 1,135 ----
-+ /* PLT trampolines. ARM 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. */
-+
-+ #include <sysdep.h>
-+
-+ #if defined(__USE_BX__)
-+ #define BX(x) bx x
-+ #else
-+ #define BX(x) mov pc, x
-+ #endif
-+
-+ #ifndef PROF
-+ .text
-+ .globl _dl_runtime_resolve
-+ .type _dl_runtime_resolve, #function
-+ .align 2
-+ _dl_runtime_resolve:
-+ @ we get called with
-+ @ stack[0] contains the return address from this call
-+ @ ip contains &GOT[n+3] (pointer to function)
-+ @ lr points to &GOT[2]
-+
-+ @ stack arguments
-+ stmdb sp!,{r0-r3}
-+
-+ @ get pointer to linker struct
-+ ldr r0, [lr, #-4]
-+
-+ @ prepare to call _dl_fixup()
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-+ sub r1, ip, lr
-+ sub r1, r1, #4
-+ add r1, r1, r1
-+
-+ @ call fixup routine
-+ bl _dl_fixup
-+
-+ @ save the return
-+ mov ip, r0
-+
-+ @ get arguments and return address back
-+ ldmia sp!, {r0-r3,lr}
-+
-+ @ jump to the newly found address
-+ BX(ip)
-+
-+ .size _dl_runtime_resolve, .-_dl_runtime_resolve
-+
-+ .globl _dl_runtime_profile
-+ .type _dl_runtime_profile, #function
-+ .align 2
-+ _dl_runtime_profile:
-+ @ stack arguments
-+ stmdb sp!, {r0-r3}
-+
-+ @ get pointer to linker struct
-+ ldr r0, [lr, #-4]
-+
-+ @ prepare to call _dl_profile_fixup()
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-+ sub r1, ip, lr
-+ sub r1, r1, #4
-+ add r1, r1, r1
-+
-+ @ call profiling fixup routine
-+ bl _dl_profile_fixup
-+
-+ @ save the return
-+ mov ip, r0
-+
-+ @ get arguments and return address back
-+ ldmia sp!, {r0-r3,lr}
-+
-+ @ jump to the newly found address
-+ BX(ip)
-+
-+ .size _dl_runtime_resolve, .-_dl_runtime_resolve
-+ .previous
-+ #else
-+ .text
-+ .globl _dl_runtime_resolve
-+ .globl _dl_runtime_profile
-+ .type _dl_runtime_resolve, #function
-+ .type _dl_runtime_profile, #function
-+ .align 2
-+ _dl_runtime_resolve:
-+ _dl_runtime_profile:
-+ @ we get called with
-+ @ stack[0] contains the return address from this call
-+ @ ip contains &GOT[n+3] (pointer to function)
-+ @ lr points to &GOT[2]
-+
-+ @ stack arguments
-+ stmdb sp!, {r0-r3}
-+
-+ @ get pointer to linker struct
-+ ldr r0, [lr, #-4]
-+
-+ @ prepare to call _dl_fixup()
-+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each
-+ sub r1, ip, lr
-+ sub r1, r1, #4
-+ add r1, r1, r1
-+
-+ @ call profiling fixup routine
-+ bl _dl_fixup
-+
-+ @ save the return
-+ mov ip, r0
-+
-+ @ get arguments and return address back
-+ ldmia sp!, {r0-r3,lr}
-+
-+ @ jump to the newly found address
-+ BX(ip)
-+
-+ .size _dl_runtime_profile, .-_dl_runtime_profile
-+ .previous
-+ #endif
-Index: sysdeps/arm/bits/link.h
-===================================================================
-RCS file: /cvs/glibc/libc/sysdeps/arm/bits/link.h,v
-retrieving revision 1.2
-diff -c -5 -p -r1.2 link.h
-*** sysdeps/arm/bits/link.h 6 Jan 2005 22:40:20 -0000 1.2
---- sysdeps/arm/bits/link.h 19 Jan 2005 17:54:32 -0000
-***************
-*** 0 ****
---- 1,57 ----
-+ /* 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 _LINK_H
-+ # error "Never include <bits/link.h> directly; use <link.h> instead."
-+ #endif
-+
-+
-+ /* Registers for entry into PLT on ARM. */
-+ typedef struct La_arm_regs
-+ {
-+ uint32_t lvr_r0;
-+ uint32_t lvr_r1;
-+ uint32_t lvr_r2;
-+ uint32_t lvr_r3;
-+ } La_arm_regs;
-+
-+ /* Return values for calls from PLT on ARM. */
-+ typedef struct La_arm_retval
-+ {
-+ uint32_t lvr_r0;
-+ uint32_t lvr_r1;
-+ } La_arm_retval;
-+
-+
-+ __BEGIN_DECLS
-+
-+ extern Elf32_Addr la_arm_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
-+ uintptr_t *__refcook,
-+ uintptr_t *__defcook,
-+ La_arm_regs *__regs,
-+ unsigned int *__flags,
-+ const char *__symname,
-+ long int *__framesizep);
-+ extern unsigned int la_arm_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
-+ uintptr_t *__refcook,
-+ uintptr_t *__defcook,
-+ const La_arm_regs *__inregs,
-+ La_arm_retval *__outregs,
-+ const char *symname);
-+
-+ __END_DECLS
-Index: sysdeps/generic/ldsodefs.h
-===================================================================
-RCS file: /cvs/glibc/libc/sysdeps/generic/ldsodefs.h,v
-retrieving revision 1.112
-diff -c -5 -p -r1.112 ldsodefs.h
-*** sysdeps/generic/ldsodefs.h 16 Jan 2005 02:07:29 -0000 1.112
---- sysdeps/generic/ldsodefs.h 19 Jan 2005 17:54:32 -0000
-*************** enum allowmask
-*** 173,182 ****
---- 173,183 ----
- allow_ldso = 8
- };
-
-
- /* Type for list of auditing interfaces. */
-+ struct La_arm_regs;
- struct La_i86_regs;
- struct La_i86_retval;
- struct La_x86_64_regs;
- struct La_x86_64_retval;
- struct La_ppc32_regs;
-*************** struct audit_ifaces
-*** 202,211 ****
---- 203,216 ----
- uintptr_t (*symbind64) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, unsigned int *, const char *);
- };
- union
- {
-+ Elf32_Addr (*arm_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-+ uintptr_t *, struct La_arm_regs *,
-+ unsigned int *, const char *name,
-+ long int *framesizep);
- Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_i86_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf64_Addr (*x86_64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
-*************** struct audit_ifaces
-*** 229,238 ****
---- 234,246 ----
- unsigned int *, const char *name,
- long int *framesizep);
- };
- union
- {
-+ unsigned int (*arm_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-+ uintptr_t *, const struct La_arm_regs *,
-+ struct La_i86_retval *, const char *);
- unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, const struct La_i86_regs *,
- struct La_i86_retval *, const char *);
- unsigned int (*x86_64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *,
-
---------------050601050507020101060100--
-
-diff -u -r1.52 dl-machine.h
---- sysdeps/arm/dl-machine.h 15 Mar 2005 22:57:26 -0000 1.52
-+++ sysdeps/arm/dl-machine.h 22 Apr 2005 03:38:15 -0000
-@@ -129,119 +129,6 @@
- #define BX(x) "mov\tpc, " #x
- #endif
-
--#ifndef PROF
--# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-- .text\n\
-- .globl _dl_runtime_resolve\n\
-- .type _dl_runtime_resolve, #function\n\
-- .align 2\n\
--_dl_runtime_resolve:\n\
-- @ we get called with\n\
-- @ stack[0] contains the return address from this call\n\
-- @ ip contains &GOT[n+3] (pointer to function)\n\
-- @ lr points to &GOT[2]\n\
--\n\
-- @ stack arguments\n\
-- stmdb sp!,{r0-r3}\n\
--\n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
-- @ prepare to call fixup()\n\
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-- sub r1, ip, lr\n\
-- sub r1, r1, #4\n\
-- add r1, r1, r1\n\
--\n\
-- @ call fixup routine\n\
-- bl fixup\n\
--\n\
-- @ save the return\n\
-- mov ip, r0\n\
--\n\
-- @ get arguments and return address back\n\
-- ldmia sp!, {r0-r3,lr}\n\
--\n\
-- @ jump to the newly found address\n\
-- " BX(ip) "\n\
--\n\
-- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
--\n\
-- .globl _dl_runtime_profile\n\
-- .type _dl_runtime_profile, #function\n\
-- .align 2\n\
--_dl_runtime_profile:\n\
-- @ stack arguments\n\
-- stmdb sp!, {r0-r3}\n\
--\n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
-- @ prepare to call fixup()\n\
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-- sub r1, ip, lr\n\
-- sub r1, r1, #4\n\
-- add r1, r1, r1\n\
--\n\
-- @ call profiling fixup routine\n\
-- bl profile_fixup\n\
--\n\
-- @ save the return\n\
-- mov ip, r0\n\
--\n\
-- @ get arguments and return address back\n\
-- ldmia sp!, {r0-r3,lr}\n\
--\n\
-- @ jump to the newly found address\n\
-- " BX(ip) "\n\
--\n\
-- .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
-- .previous\n\
--");
--#else // PROF
--# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-- .text\n\
-- .globl _dl_runtime_resolve\n\
-- .globl _dl_runtime_profile\n\
-- .type _dl_runtime_resolve, #function\n\
-- .type _dl_runtime_profile, #function\n\
-- .align 2\n\
--_dl_runtime_resolve:\n\
--_dl_runtime_profile:\n\
-- @ we get called with\n\
-- @ stack[0] contains the return address from this call\n\
-- @ ip contains &GOT[n+3] (pointer to function)\n\
-- @ lr points to &GOT[2]\n\
--\n\
-- @ stack arguments\n\
-- stmdb sp!, {r0-r3}\n\
--\n\
-- @ get pointer to linker struct\n\
-- ldr r0, [lr, #-4]\n\
--\n\
-- @ prepare to call fixup()\n\
-- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
-- sub r1, ip, lr\n\
-- sub r1, r1, #4\n\
-- add r1, r1, r1\n\
--\n\
-- @ call profiling fixup routine\n\
-- bl fixup\n\
--\n\
-- @ save the return\n\
-- mov ip, r0\n\
--\n\
-- @ get arguments and return address back\n\
-- ldmia sp!, {r0-r3,lr}\n\
--\n\
-- @ jump to the newly found address\n\
-- " BX(ip) "\n\
--\n\
-- .size _dl_runtime_profile, .-_dl_runtime_profile\n\
-- .previous\n\
--");
--#endif //PROF
--
- /* Mask identifying addresses reserved for the user program,
- where the dynamic linker should not map anything. */
- #define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL
-@@ -348,6 +235,10 @@
- return value;
- }
-
-+/* Names of the architecture-specific auditing callback functions. */
-+#define ARCH_LA_PLTENTER arm_gnu_pltenter
-+#define ARCH_LA_PLTEXIT arm_gnu_pltexit
-+
- #endif /* !dl_machine_h */
-
-
-@@ -355,7 +246,7 @@
- Prelinked libraries may use Elf32_Rela though. */
- #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
-
--#ifdef RESOLVE
-+#ifdef RESOLVE_MAP
-
- /* Deal with an out-of-range PC24 reloc. */
- static Elf32_Addr
-@@ -425,7 +316,8 @@
- #endif
- {
- const Elf32_Sym *const refsym = sym;
-- Elf32_Addr value = RESOLVE (&sym, version, r_type);
-+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
- if (sym)
- value += sym->st_value;
-
-@@ -535,7 +427,8 @@
- # ifndef RESOLVE_CONFLICT_FIND_MAP
- const Elf32_Sym *const refsym = sym;
- # endif
-- Elf32_Addr value = RESOLVE (&sym, version, r_type);
-+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
-+ Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
- if (sym)
- value += sym->st_value;
-
-@@ -637,4 +530,4 @@
- _dl_reloc_bad_type (map, r_type, 1);
- }
-
--#endif /* RESOLVE */
-+#endif /* RESOLVE_MAP */
diff --git a/packages/glibc/glibc-initial.inc b/packages/glibc/glibc-initial.inc
deleted file mode 100644
index 5528cf8edb..0000000000
--- a/packages/glibc/glibc-initial.inc
+++ /dev/null
@@ -1,57 +0,0 @@
-SECTION = "libs"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial linux-libc-headers"
-PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
-
-PACKAGES = ""
-PACKAGES_DYNAMIC = ""
-
-do_configure () {
- sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
- chmod +x ${S}/configure
- find ${S} -name "configure" | xargs touch
- ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
- --without-cvs --disable-sanity-checks \
- --with-headers=${STAGING_DIR_TARGET}${layout_includedir} \
- --enable-hacker-mode
- if grep -q GLIBC_2.3 ${S}/ChangeLog; then
- # glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c, which fails without a real cross-compiler.
- # Fortunately, we don't need errlist-compat.c, since we just need .h files,
- # so work around this by creating a fake errlist-compat.c and satisfying its dependencies.
- # Another workaround might be to tell configure to not use any cross options to $(CC).
- # The real fix would be to get install-headers to not generate errlist-compat.c.
- make sysdeps/gnu/errlist.c
- mkdir -p stdio-common
- touch stdio-common/errlist-compat.c
- fi
-}
-
-do_compile () {
- :
-}
-
-do_stage () {
- oe_runmake cross-compiling=yes install_root=${STAGING_DIR_HOST} \
- includedir='${layout_includedir}' prefix='${layout_prefix}' \
- install-bootstrap-headers=yes install-headers
-
- oe_runmake csu/subdir_lib
- # Two headers -- stubs.h and features.h -- aren't installed by install-headers,
- # so do them by hand. We can tolerate an empty stubs.h for the moment.
- # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
- mkdir -p ${STAGING_INCDIR}/gnu
- touch ${STAGING_INCDIR}/gnu/stubs.h
- cp ${S}/include/features.h ${STAGING_INCDIR}/features.h
-
- if [ -e ${B}/bits/stdio_lim.h ]; then
- cp ${B}/bits/stdio_lim.h ${STAGING_INCDIR}/bits/
- fi
- mkdir -p ${STAGING_DIR_TARGET}${layout_libdir}
- install -m 644 csu/crt[1in].o ${STAGING_DIR_TARGET}${layout_libdir}
- ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \
- -o ${STAGING_DIR_TARGET}${layout_libdir}/libc.so
-}
-
-do_install () {
- :
-}
diff --git a/packages/glibc/glibc-initial_2.2.5.bb b/packages/glibc/glibc-initial_2.2.5.bb
deleted file mode 100644
index a2e656035e..0000000000
--- a/packages/glibc/glibc-initial_2.2.5.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
-
-PROVIDES_unslung = "virtual/${TARGET_PREFIX}libc-initial"
diff --git a/packages/glibc/glibc-initial_2.3.2+cvs20040726.bb b/packages/glibc/glibc-initial_2.3.2+cvs20040726.bb
deleted file mode 100644
index 4d7129b7b8..0000000000
--- a/packages/glibc/glibc-initial_2.3.2+cvs20040726.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-cvs', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/glibc/glibc-initial_2.3.2.bb b/packages/glibc/glibc-initial_2.3.2.bb
deleted file mode 100644
index 84412bd596..0000000000
--- a/packages/glibc/glibc-initial_2.3.2.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/glibc/glibc-initial_2.3.6.bb b/packages/glibc/glibc-initial_2.3.6.bb
deleted file mode 100644
index 8249cd696d..0000000000
--- a/packages/glibc/glibc-initial_2.3.6.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/glibc/glibc-initial_2.4.bb b/packages/glibc/glibc-initial_2.4.bb
deleted file mode 100644
index fa7836ad88..0000000000
--- a/packages/glibc/glibc-initial_2.4.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
diff --git a/packages/glibc/glibc-initial_2.5.bb b/packages/glibc/glibc-initial_2.5.bb
deleted file mode 100644
index 35c9febcce..0000000000
--- a/packages/glibc/glibc-initial_2.5.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-do_configure () {
- sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
- chmod +x ${S}/configure
- unset CFLAGS
- ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
- --without-cvs --disable-sanity-checks \
- --with-headers=${STAGING_INCDIR} \
- --enable-hacker-mode
- if grep -q GLIBC_2.5 ${S}/ChangeLog; then
- # glibc-2.3.x passes cross options to $(CC) when generating errlist-compat.c, which fails without a real cross-compiler.
- # Fortunately, we don't need errlist-compat.c, since we just need .h files,
- # so work around this by creating a fake errlist-compat.c and satisfying its dependencies.
- # Another workaround might be to tell configure to not use any cross options to $(CC).
- # The real fix would be to get install-headers to not generate errlist-compat.c.
- make sysdeps/gnu/errlist.c
- mkdir -p stdio-common
- touch stdio-common/errlist-compat.c
- fi
-}
diff --git a/packages/glibc/glibc-initial_2.6.1.bb b/packages/glibc/glibc-initial_2.6.1.bb
deleted file mode 100644
index 3ad96569f5..0000000000
--- a/packages/glibc/glibc-initial_2.6.1.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-do_configure_prepend () {
- unset CFLAGS
-} \ No newline at end of file
diff --git a/packages/glibc/glibc-initial_2.7.bb b/packages/glibc/glibc-initial_2.7.bb
deleted file mode 100644
index d66297090f..0000000000
--- a/packages/glibc/glibc-initial_2.7.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-do_configure_prepend () {
- unset CFLAGS
-}
diff --git a/packages/glibc/glibc-initial_cvs.bb b/packages/glibc/glibc-initial_cvs.bb
deleted file mode 100644
index 81be5fc49b..0000000000
--- a/packages/glibc/glibc-initial_cvs.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require glibc_${PV}.bb
-require glibc-initial.inc
-
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-cvs', '${FILE_DIRNAME}/glibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
deleted file mode 100644
index 89fbd1ca72..0000000000
--- a/packages/glibc/glibc-package.bbclass
+++ /dev/null
@@ -1,335 +0,0 @@
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc*', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-
-# Binary locales are generated at build time if ENABLE_BINARY_LOCALE_GENERATION
-# is set. The idea is to avoid running localedef on the target (at first boot)
-# to decrease initial boot time and avoid localedef being killed by the OOM
-# killer which used to effectively break i18n on machines with < 128MB RAM.
-
-# default to disabled until qemu works for everyone
-ENABLE_BINARY_LOCALE_GENERATION ?= "0"
-
-# BINARY_LOCALE_ARCHES is a space separated list of regular expressions
-BINARY_LOCALE_ARCHES ?= "arm.*"
-
-# Set this to zero if you don't want ldconfig in the output package
-USE_LDCONFIG ?= "1"
-
-PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
-PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* locale-base-* glibc-binary-localedata-*"
-
-libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
-
-FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${datadir}/zoneinfo ${@base_conditional('USE_LDCONFIG', '1', '/sbin/ldconfig', '', d)}"
-FILES_ldd = "${bindir}/ldd"
-FILES_libsegfault = "/lib/libSegFault*"
-FILES_glibc-extra-nss = "/lib/libnss*"
-FILES_sln = "/sbin/sln"
-FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen"
-FILES_nscd = "${sbindir}/nscd*"
-FILES_glibc-utils = "${bindir}/* ${sbindir}/*"
-FILES_glibc-gconv = "${libdir}/gconv/*"
-FILES_${PN}-dbg += " ${libdir}/gconv/.debug ${libexecdir}/*/.debug"
-FILES_catchsegv = "${bindir}/catchsegv"
-RDEPENDS_catchsegv = "libsegfault"
-FILES_glibc-pcprofile = "/lib/libpcprofile.so"
-FILES_glibc-thread-db = "/lib/libthread_db*"
-FILES_localedef = "${bindir}/localedef"
-RPROVIDES_glibc-dev += "libc-dev"
-
-DESCRIPTION_sln = "glibc: create symbolic links between files"
-DESCRIPTION_nscd = "glibc: name service cache daemon for passwd, group, and hosts"
-DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services"
-DESCRIPTION_ldd = "glibc: print shared library dependencies"
-DESCRIPTION_localedef = "glibc: compile locale definition files"
-DESCRIPTION_glibc-utils = "glibc: misc utilities like iconf, local, gencat, tzselect, rpcinfo, ..."
-
-def get_glibc_fpu_setting(bb, d):
- if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
- return "--without-fp"
- return ""
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}"
-
-do_install() {
- oe_runmake install_root=${D} install
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- install -m 0644 ${S}/sunrpc/rpcsvc/$h ${D}/${includedir}/rpcsvc/
- done
- install -d ${D}${libdir}/locale
- make -f ${WORKDIR}/generate-supported.mk IN="${S}/localedata/SUPPORTED" OUT="${WORKDIR}/SUPPORTED"
- # get rid of some broken files...
- for i in ${GLIBC_BROKEN_LOCALES}; do
- grep -v $i ${WORKDIR}/SUPPORTED > ${WORKDIR}/SUPPORTED.tmp
- mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED
- done
- rm -f ${D}/etc/rpc
-}
-
-TMP_LOCALE="/tmp/locale${libdir}/locale"
-
-locale_base_postinst() {
-#!/bin/sh
-
-if [ "x$D" != "x" ]; then
- exit 1
-fi
-
-rm -rf ${TMP_LOCALE}
-mkdir -p ${TMP_LOCALE}
-if [ -f ${libdir}/locale/locale-archive ]; then
- cp ${libdir}/locale/locale-archive ${TMP_LOCALE}/
-fi
-localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s --prefix=/tmp/locale %s
-mkdir -p ${libdir}/locale/
-mv ${TMP_LOCALE}/locale-archive ${libdir}/locale/
-rm -rf ${TMP_LOCALE}
-}
-
-locale_base_postrm() {
-#!/bin/sh
-
-rm -rf ${TMP_LOCALE}
-mkdir -p ${TMP_LOCALE}
-if [ -f ${libdir}/locale/locale-archive ]; then
- cp ${libdir}/locale/locale-archive ${TMP_LOCALE}/
-fi
-localedef --delete-from-archive --inputfile=${datadir}/locales/%s --charmap=%s --prefix=/tmp/locale %s
-mv ${TMP_LOCALE}/locale-archive ${libdir}/locale/
-rm -rf ${TMP_LOCALE}
-}
-
-python __anonymous () {
- enabled = bb.data.getVar("ENABLE_BINARY_LOCALE_GENERATION", d, 1)
-
- if enabled and int(enabled):
- import re
-
- target_arch = bb.data.getVar("TARGET_ARCH", d, 1)
- binary_arches = bb.data.getVar("BINARY_LOCALE_ARCHES", d, 1) or ""
-
- for regexp in binary_arches.split(" "):
- r = re.compile(regexp)
-
- if r.match(target_arch):
- depends = bb.data.getVar("DEPENDS", d, 1)
- depends = "%s qemu-native" % depends
- bb.data.setVar("DEPENDS", depends, d)
- bb.data.setVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", "1", d)
- break
-}
-
-do_prep_locale_tree() {
- treedir=${WORKDIR}/locale-tree
- rm -rf $treedir
- mkdir -p $treedir/bin $treedir/lib $treedir/${datadir} $treedir/${libdir}/locale
- cp -pPR ${D}${datadir}/i18n $treedir/${datadir}/i18n
- # unzip to avoid parsing errors
- for i in $treedir/${datadir}/i18n/charmaps/*gz; do
- gunzip $i
- done
- ls ${D}/lib/* | xargs -iBLAH cp -pPR BLAH $treedir/lib
- if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so ]; then
- cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so $treedir/lib
- fi
- if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* ]; then
- cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* $treedir/lib
- fi
- install -m 0755 ${D}${bindir}/localedef $treedir/bin
-}
-
-do_collect_bins_from_locale_tree() {
- treedir=${WORKDIR}/locale-tree
-
- mkdir -p ${D}${libdir}
- cp -pPR $treedir/${libdir}/locale ${D}${libdir}
-}
-
-python package_do_split_gconvs () {
- import os, re
- if (bb.data.getVar('PACKAGE_NO_GCONV', d, 1) == '1'):
- bb.note("package requested not splitting gconvs")
- return
-
- if not bb.data.getVar('PACKAGES', d, 1):
- return
-
- libdir = bb.data.getVar('libdir', d, 1)
- if not libdir:
- bb.error("libdir not defined")
- return
- datadir = bb.data.getVar('datadir', d, 1)
- if not datadir:
- bb.error("datadir not defined")
- return
-
- gconv_libdir = base_path_join(libdir, "gconv")
- charmap_dir = base_path_join(datadir, "i18n", "charmaps")
- locales_dir = base_path_join(datadir, "i18n", "locales")
- binary_locales_dir = base_path_join(libdir, "locale")
-
- do_split_packages(d, gconv_libdir, file_regex='^(.*)\.so$', output_pattern='glibc-gconv-%s', description='gconv module for character set %s', extra_depends='glibc-gconv')
-
- do_split_packages(d, charmap_dir, file_regex='^(.*)\.gz$', output_pattern='glibc-charmap-%s', description='character map for %s encoding', extra_depends='')
-
- def calc_locale_deps(fn, pkg, file_regex, output_pattern, group):
- deps = []
- f = open(fn, "r")
- c_re = re.compile('^copy "(.*)"')
- i_re = re.compile('^include "(\w+)".*')
- for l in f.readlines():
- m = c_re.match(l) or i_re.match(l)
- if m:
- dp = legitimize_package_name('glibc-localedata-%s' % m.group(1))
- if not dp in deps:
- deps.append(dp)
- f.close()
- if deps != []:
- bb.data.setVar('RDEPENDS_%s' % pkg, " ".join(deps), d)
-
- do_split_packages(d, locales_dir, file_regex='(.*)', output_pattern='glibc-localedata-%s', description='locale definition for %s', hook=calc_locale_deps, extra_depends='')
- bb.data.setVar('PACKAGES', bb.data.getVar('PACKAGES', d) + ' glibc-gconv', d)
-
- supported = bb.data.getVar('GLIBC_GENERATE_LOCALES', d, 1)
- if not supported or supported == "all":
- f = open(base_path_join(bb.data.getVar('WORKDIR', d, 1), "SUPPORTED"), "r")
- supported = f.readlines()
- f.close()
- else:
- supported = supported.split()
- supported = map(lambda s:s.replace(".", " ") + "\n", supported)
-
- dot_re = re.compile("(.*)\.(.*)")
-
- # Collate the locales by base and encoding
- utf8_only = int(bb.data.getVar('LOCALE_UTF8_ONLY', d, 1) or 0)
- encodings = {}
- for l in supported:
- l = l[:-1]
- (locale, charset) = l.split(" ")
- if utf8_only and charset != 'UTF-8':
- continue
- m = dot_re.match(locale)
- if m:
- locale = m.group(1)
- if not encodings.has_key(locale):
- encodings[locale] = []
- encodings[locale].append(charset)
-
- def output_locale_source(name, locale, encoding):
- pkgname = 'locale-base-' + legitimize_package_name(name)
-
- bb.data.setVar('RDEPENDS_%s' % pkgname, 'localedef glibc-localedata-%s glibc-charmap-%s' % (legitimize_package_name(locale), legitimize_package_name(encoding)), d)
- rprovides = 'virtual-locale-%s' % legitimize_package_name(name)
- m = re.match("(.*)_(.*)", name)
- if m:
- rprovides += ' virtual-locale-%s' % m.group(1)
- bb.data.setVar('RPROVIDES_%s' % pkgname, rprovides, d)
- bb.data.setVar('PACKAGES', '%s %s' % (pkgname, bb.data.getVar('PACKAGES', d, 1)), d)
- bb.data.setVar('ALLOW_EMPTY_%s' % pkgname, '1', d)
- bb.data.setVar('pkg_postinst_%s' % pkgname, bb.data.getVar('locale_base_postinst', d, 1) % (locale, encoding, locale), d)
- bb.data.setVar('pkg_postrm_%s' % pkgname, bb.data.getVar('locale_base_postrm', d, 1) % (locale, encoding, locale), d)
-
- def output_locale_binary(name, locale, encoding):
- target_arch = bb.data.getVar("TARGET_ARCH", d, 1)
- if target_arch in ("i486", "i586", "i686"):
- target_arch = "i386"
-
- qemu = "qemu-%s -s 1048576 -r 2.6.16" % target_arch
- pkgname = 'locale-base-' + legitimize_package_name(name)
- m = re.match("(.*)\.(.*)", name)
- if m:
- glibc_name = "%s.%s" % (m.group(1), m.group(2).lower().replace("-",""))
- else:
- glibc_name = name
- bb.data.setVar('RDEPENDS_%s' % pkgname, legitimize_package_name('glibc-binary-localedata-%s' % glibc_name), d)
- rprovides = 'virtual-locale-%s' % legitimize_package_name(name)
- m = re.match("(.*)_(.*)", name)
- if m:
- rprovides += ' virtual-locale-%s' % m.group(1)
- bb.data.setVar('RPROVIDES_%s' % pkgname, rprovides, d)
- bb.data.setVar('ALLOW_EMPTY_%s' % pkgname, '1', d)
- bb.data.setVar('PACKAGES', '%s %s' % (pkgname, bb.data.getVar('PACKAGES', d, 1)), d)
-
- treedir = base_path_join(bb.data.getVar("WORKDIR", d, 1), "locale-tree")
- path = bb.data.getVar("PATH", d, 1)
- i18npath = base_path_join(treedir, datadir, "i18n")
-
- localedef_opts = "--force --old-style --no-archive --prefix=%s --inputfile=%s/i18n/locales/%s --charmap=%s %s" % (treedir, datadir, locale, encoding, name)
-
- qemu_options = bb.data.getVar("QEMU_OPTIONS_%s" % bb.data.getVar('PACKAGE_ARCH', d, 1), d, 1)
- if not qemu_options:
- qemu_options = bb.data.getVar('QEMU_OPTIONS', d, 1)
-
- cmd = "PATH=\"%s\" I18NPATH=\"%s\" %s -L %s %s %s/bin/localedef %s" % (path, i18npath, qemu, treedir, qemu_options, treedir, localedef_opts)
- bb.note("generating locale %s (%s)" % (locale, encoding))
- if os.system(cmd):
- raise bb.build.FuncFailed("localedef returned an error (command was %s)." % cmd)
-
- def output_locale(name, locale, encoding):
- use_bin = bb.data.getVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", d, 1)
- if use_bin:
- output_locale_binary(name, locale, encoding)
- else:
- output_locale_source(name, locale, encoding)
-
- use_bin = bb.data.getVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", d, 1)
- if use_bin:
- bb.note("preparing tree for binary locale generation")
- bb.build.exec_func("do_prep_locale_tree", d)
-
- # Reshuffle names so that UTF-8 is preferred over other encodings
- non_utf8 = []
- for l in encodings.keys():
- if len(encodings[l]) == 1:
- output_locale(l, l, encodings[l][0])
- if encodings[l][0] != "UTF-8":
- non_utf8.append(l)
- else:
- if "UTF-8" in encodings[l]:
- output_locale(l, l, "UTF-8")
- encodings[l].remove("UTF-8")
- else:
- non_utf8.append(l)
- for e in encodings[l]:
- output_locale('%s.%s' % (l, e), l, e)
-
- if non_utf8 != []:
- bb.note("the following locales are supported only in legacy encodings:")
- bb.note(" " + " ".join(non_utf8))
-
- use_bin = bb.data.getVar("GLIBC_INTERNAL_USE_BINARY_LOCALE", d, 1)
- if use_bin:
- bb.note("collecting binary locales from locale tree")
- bb.build.exec_func("do_collect_bins_from_locale_tree", d)
- do_split_packages(d, binary_locales_dir, file_regex='(.*)', output_pattern='glibc-binary-localedata-%s', description='binary locale definition for %s', extra_depends='', allow_dirs=True)
- else:
- bb.note("generation of binary locales disabled. this may break i18n!")
-
-}
-
-# We want to do this indirection so that we can safely 'return'
-# from the called function even though we're prepending
-python populate_packages_prepend () {
- if bb.data.getVar('DEBIAN_NAMES', d, 1):
- bb.data.setVar('PKG_glibc', 'libc6', d)
- bb.data.setVar('PKG_glibc-dev', 'libc6-dev', d)
- bb.build.exec_func('package_do_split_gconvs', d)
-}
diff --git a/packages/glibc/glibc-stage.inc b/packages/glibc/glibc-stage.inc
deleted file mode 100644
index 2b7b303c14..0000000000
--- a/packages/glibc/glibc-stage.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-do_stage() {
- rm -f ${STAGING_DIR_HOST}${layout_base_libdir}/libc.so.6
- oe_runmake 'install_root=${STAGING_DIR_HOST}' \
- 'includedir=${layout_includedir}' 'libdir=${layout_libdir}' 'slibdir=${layout_base_libdir}' \
- '${STAGING_DIR_HOST}${layout_base_libdir}/libc.so.6' \
- install
-
- install -d ${STAGING_INCDIR}/gnu \
- ${STAGING_INCDIR}/bits \
- ${STAGING_INCDIR}/rpcsvc
- install -m 0644 ${S}/include/gnu/stubs.h ${STAGING_INCDIR}/gnu/
- install -m 0644 ${B}/bits/stdio_lim.h ${STAGING_INCDIR}/bits/
- install -m 0644 misc/syscall-list.h ${STAGING_INCDIR}/bits/syscall.h
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- install -m 0644 ${S}/sunrpc/rpcsvc/$h ${STAGING_INCDIR}/rpcsvc/
- done
-}
diff --git a/packages/glibc/glibc.inc b/packages/glibc/glibc.inc
deleted file mode 100644
index c2ee5317bf..0000000000
--- a/packages/glibc/glibc.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "GNU C Library"
-HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
-SECTION = "libs"
-PRIORITY = "required"
-LICENSE = "LGPL"
-# nptl needs unwind support in gcc, which can't be built without glibc.
-DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers"
-#this leads to circular deps, so lets not add it yet
-#RDEPENDS_ldd += " bash"
-PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
-PROVIDES += "virtual/libintl virtual/libiconv"
-
-inherit autotools
-
-LEAD_SONAME = "libc.so"
-
-GLIBC_EXTRA_OECONF ?= ""
-INHIBIT_DEFAULT_DEPS = "1"
-
-ARM_INSTRUCTION_SET = "arm"
-
-PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
diff --git a/packages/glibc/glibc_2.2.5.bb b/packages/glibc/glibc_2.2.5.bb
deleted file mode 100644
index 7cb6681a31..0000000000
--- a/packages/glibc/glibc_2.2.5.bb
+++ /dev/null
@@ -1,215 +0,0 @@
-require glibc.inc
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
-PR = "r20"
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-PROVIDES_unslung = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc libc6-unslung"
-
-libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
-
-FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo ${libdir}/locale"
-FILES_ldd = "${bindir}/ldd"
-FILES_libsegfault = "/lib/libSegFault*"
-FILES_glibc-extra-nss = "/lib/libnss*"
-FILES_sln = "/sbin/sln"
-FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen"
-FILES_nscd = "${sbindir}/nscd*"
-FILES_glibc-utils = "${bindir} ${sbindir}"
-FILES_glibc-gconv = "${libdir}/gconv"
-FILES_catchsegv = "${bindir}/catchsegv"
-DEPENDS_catchsegv = "libsegfault"
-FILES_glibc-pcprofile = "/lib/libpcprofile.so"
-FILES_glibc-thread-db = "/lib/libthread_db*"
-FILES_localedef = "${bindir}/localedef"
-RPROVIDES_glibc-dev += "libc-dev"
-
-# file://noinfo.patch;patch=1 \
-# file://ldconfig.patch;patch=1;pnum=0 \
-
-SRC_URI = "${GNU_MIRROR}/glibc/glibc-${PV}.tar.gz \
- ${GNU_MIRROR}/glibc/glibc-linuxthreads-${PV}.tar.gz \
- file://alpha-build-failure.patch;patch=1 \
- file://arm-asm-clobber.patch;patch=1 \
- file://arm-ctl_bus_isa.patch;patch=1 \
- file://cris-libc-symbols.patch;patch=1 \
- file://cris-stack-direction.patch;patch=1 \
- file://dl-machine-alpha.patch;patch=1 \
- file://dl-machine-arm.patch;patch=1 \
- file://dl-machine-m68k.patch;patch=1 \
- file://dl-machine-mips.patch;patch=1 \
- file://dl-machine-sh.patch;patch=1 \
- file://dl-machine-sparc.patch;patch=1 \
- file://errlist-1.9.patch;patch=1 \
- file://errlist-arm.patch;patch=1 \
- file://glibc-2.2.5-allow-gcc-3.4-fixup.patch;patch=1 \
- file://glibc-2.2.5-allow-gcc-3.4-grp.patch;patch=1 \
- file://glibc-2.2.5-allow-gcc-4.x-configure.patch;patch=1 \
- file://glibc-2.2.5-alpha-pwrite64.patch;patch=1 \
- file://glibc-2.2.5-arm-pwrite64.patch;patch=1 \
- file://glibc-2.2.5-crosstest.patch;patch=1 \
- file://glibc-2.2.5-crossyes.patch;patch=1 \
- file://glibc-2.2.5-cygwin.patch;patch=1 \
- file://glibc-2.2.5-hhl-powerpc-fpu.patch;patch=1 \
- file://glibc-2.2.5-mips-build-gmon.patch;patch=1 \
- file://glibc-2.2.5-mips-clone-local-label.patch;patch=1 \
- file://glibc-2.2.5-ppc405erratum77.patch;patch=1 \
- file://glibc-drow-sh.patch;patch=1 \
- file://glibc-test-lowram.patch;patch=1 \
- file://initfini-alpha.patch;patch=1 \
- file://initfini-sh.patch;patch=1 \
- file://longjmp-sparc.patch;patch=1 \
- file://sh-setjmp-fix.patch;patch=1 \
- file://sprintf-prototype.patch;patch=1 \
- file://sscanf.patch;patch=1 \
- file://unwind-arm.patch;patch=1 \
- file://ldd.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1;pnum=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- file://glibc-2.2.5-allow-gcc-3.4-td.patch;patch=1 \
- file://glibc-2.2.5-alpha-self-clobber.patch;patch=1 \
- file://pt-initfini-alpha.patch;patch=1 \
- file://pt-initfini-sh.patch;patch=1 \
- file://linuxthreads-2.2.5-ppc405erratum77.patch;patch=1 \
- file://threadparam.patch;patch=1 \
- file://initfini-flags.patch;patch=1 \
- file://pt-initfini-flags.patch;patch=1 \
- file://glibc-2.3.2-allow-solaris.patch;patch=1 \
- \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-# file://makeconfig.patch;patch=1;pnum=0
-
-
-# seems to break on TLS platforms
-# SRC_URI_append_arm = " file://dyn-ldconfig.patch;patch=1;pnum=0"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-glibc_do_unpack () {
- mv ${WORKDIR}/linuxthreads ${WORKDIR}/linuxthreads_db ${S}/
-}
-
-python do_unpack () {
- bb.build.exec_func('base_do_unpack', d)
- bb.build.exec_func('glibc_do_unpack', d)
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-do_stage() {
- rm -f ${STAGING_DIR_HOST}${layout_base_libdir}/libc.so.6
- oe_runmake 'install_root=${STAGING_DIR_HOST}' \
- 'includedir=${layout_includedir}' 'libdir=${layout_libdir}' 'slibdir=${layout_base_libdir}' \
- '${STAGING_DIR_HOST}${layout_base_libdir}/libc.so.6' \
- '${STAGING_INCDIR}/bits/errno.h' \
- '${STAGING_INCDIR}/bits/libc-lock.h' \
- '${STAGING_INCDIR}/gnu/stubs.h' \
- install-headers install-lib
-
- install -d ${STAGING_INCDIR}/gnu \
- ${STAGING_INCDIR}/bits \
- ${STAGING_INCDIR}/sys \
- ${STAGING_INCDIR}/rpcsvc
- install -m 0644 ${B}/bits/stdio_lim.h ${STAGING_INCDIR}/bits/
- install -m 0644 misc/syscall-list.h ${STAGING_INCDIR}/bits/syscall.h
- install -m 0644 ${S}/include/bits/xopen_lim.h ${STAGING_INCDIR}/bits/
- install -m 0644 ${B}/gnu/lib-names.h ${STAGING_INCDIR}/gnu/
- install -m 0644 ${S}/include/limits.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/include/gnu/libc-version.h ${STAGING_INCDIR}/gnu/
- install -m 0644 ${S}/include/gnu-versions.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/include/values.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/include/errno.h ${STAGING_INCDIR}/
- install -m 0644 ${S}/include/sys/errno.h ${STAGING_INCDIR}/sys/
- install -m 0644 ${S}/include/features.h ${STAGING_INCDIR}/
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- install -m 0644 ${S}/sunrpc/rpcsvc/$h ${STAGING_INCDIR}/rpcsvc/
- done
- for i in libc.a libc_pic.a libc_nonshared.a; do
- install -m 0644 ${B}/$i ${STAGING_DIR_HOST}/${layout_base_libdir}/ || die "failed to install $i"
- done
- echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${STAGING_DIR_HOST}/${layout_base_libdir}/libc.so
-}
-
-require glibc-package.bbclass
-
-
-# Unslung distribution specific packages follow ...
-
-PACKAGES_unslung = "libc6-unslung libsegfault"
-PACKAGE_ARCH_unslung = "nslu2"
-PACKAGE_NO_GCONV_unslung = "1"
-RDEPENDS_libc6-unslung = "nslu2-linksys-libs"
-RPROVIDES_libc6-unslung = "libc6"
-
-FILES_libc6-unslung = "/lib/librt*"
-
-# For some reason, ldconfig segfaults on nslu2.
-# FILES_libc6-unslung += " /sbin/ldconfig"
-
-# For some reason, libnss_compat causes segmentation faults on nslu2.
-# FILES_libc6-unslung += " /lib/libnss_compat*"
-
diff --git a/packages/glibc/glibc_2.3.2+cvs20040726.bb b/packages/glibc/glibc_2.3.2+cvs20040726.bb
deleted file mode 100644
index f0521d41ab..0000000000
--- a/packages/glibc/glibc_2.3.2+cvs20040726.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-require glibc.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
-PR = "r30"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
- file://arm-ioperm.patch;patch=1;pnum=0 \
- file://makeconfig.patch;patch=1;pnum=0 \
- file://ldd.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- file://glibc-fp-byteorder.patch;patch=1 \
- \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig.patch;patch=1;pnum=0"
-
-SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- ${GLIBC_EXTRA_OECONF}"
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.2.bb b/packages/glibc/glibc_2.3.2.bb
deleted file mode 100644
index 891d9da388..0000000000
--- a/packages/glibc/glibc_2.3.2.bb
+++ /dev/null
@@ -1,161 +0,0 @@
-require glibc.inc
-
-PR = "r19"
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
-
-FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo"
-FILES_ldd = "${bindir}/ldd"
-FILES_libsegfault = "/lib/libSegFault*"
-FILES_glibc-extra-nss = "/lib/libnss*"
-FILES_sln = "/sbin/sln"
-FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen"
-FILES_nscd = "${sbindir}/nscd*"
-FILES_glibc-utils = "${bindir} ${sbindir}"
-FILES_glibc-gconv = "${libdir}/gconv"
-FILES_catchsegv = "${bindir}/catchsegv"
-DEPENDS_catchsegv = "libsegfault"
-FILES_glibc-pcprofile = "/lib/libpcprofile.so"
-FILES_glibc-thread-db = "/lib/libthread_db*"
-FILES_localedef = "${bindir}/localedef"
-RPROVIDES_glibc-dev += "libc-dev"
-
-SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz \
- file://noinfo.patch;patch=1 \
- file://10_cvs.patch;patch=1 \
- file://arm-ioperm.patch;patch=1;pnum=0 \
- file://glibc-i686-timing.patch;patch=1;pnum=1 \
- file://makeconfig.patch;patch=1;pnum=0 \
- file://locale-es_AR.patch;patch=1;pnum=0 \
- file://ldconfig.patch;patch=1;pnum=0 \
- file://ldd.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1;pnum=1 \
- file://glibc22-nss-upgrade.patch;patch=1;pnum=1 \
- file://glibc22-eo_EO.patch;patch=1;pnum=1 \
- file://glibc22-m68k-compat.patch;patch=1;pnum=1 \
- file://glibc22-m68k-fpic.patch;patch=1;pnum=1 \
- file://glibc22-locales.patch;patch=1;pnum=0 \
- file://sparc64-fixups.patch;patch=1;pnum=1 \
- file://glibc22-ttyname-devfs.patch;patch=1;pnum=0 \
- file://powerpc-sysconf.patch;patch=1;pnum=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://locales-stuff.patch;patch=1;pnum=1 \
- file://librt-mips.patch;patch=1;pnum=0 \
- file://glibc23-ctype-compat.patch;patch=1;pnum=1 \
- file://glibc23-hppa-Rminkernel.patch;patch=1;pnum=0 \
- file://glibc23-function-compat.patch;patch=1;pnum=1 \
- file://glibc23-errno.patch;patch=1;pnum=1 \
- file://glibc23-asserth-decls.patch;patch=1;pnum=0 \
- file://alpha-pic.patch;patch=1;pnum=0 \
- file://glibc23-cmov.patch;patch=1;pnum=1 \
- file://libgcc-compat-all.patch;patch=1;pnum=0 \
- file://locales-supported.patch;patch=1;pnum=0 \
- file://libgcc-compat-other.patch;patch=1;pnum=1 \
- file://s390-tls.patch;patch=1;pnum=0 \
- file://hurd-enable-ldconfig.patch;patch=1;pnum=1 \
- file://30_glibc232-base.patch;patch=1;pnum=0 \
- file://sparcv8-target.patch;patch=1;pnum=0 \
- file://50_glibc232-arm-dwarf2-buildfix.patch;patch=1;pnum=0 \
- file://50_glibc232-m68k-dwarf2-buildfix.patch;patch=1;pnum=1 \
- file://arm-output-format.patch;patch=1;pnum=0 \
- file://pthread-cleanup.patch;patch=1;pnum=0 \
- file://glibc-${PV}-ldconfig-tls.patch;patch=1;pnum=1 \
- file://glibc23-mips-msq.patch;patch=1;pnum=0 \
- file://glibc23-libio-compat.patch;patch=1;pnum=1 \
- file://80_glibc232-locales-nb_NO-fix.patch;patch=1;pnum=0 \
- file://ldso-disable-hwcap.patch;patch=1;pnum=1 \
- file://11_shlib-lds.patch;patch=1;pnum=1 \
- file://glibc23-version-sanity.patch;patch=1;pnum=1 \
- file://glibc23-sse-oldkernel.patch;patch=1;pnum=1 \
- file://glibc23-sparc-pread64.patch;patch=1;pnum=1 \
- file://glibc23-powerpc-sigcontext.patch;patch=1;pnum=1 \
- file://hppa-syscall.patch;patch=1;pnum=0 \
- file://glibc23-errno-hack.patch;patch=1;pnum=1 \
- file://90_glibc232-statvfs.patch;patch=1;pnum=0 \
- file://90_glibc232-timezones.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- file://dyn-ldconfig.diff;patch=1;pnum=0 \
- file://glibc232-gcc34-i386-fixup-attribute.patch;patch=1;pnum=1 \
- file://glibc232-gcc34-no-unit-at-a-time.patch;patch=1;pnum=1 \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-glibc_do_unpack () {
- mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/"
-}
-
-python do_unpack () {
- bb.build.exec_func('base_do_unpack', d)
- bb.build.exec_func('glibc_do_unpack', d)
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.3+cvs20041128.bb b/packages/glibc/glibc_2.3.3+cvs20041128.bb
deleted file mode 100644
index 560347d770..0000000000
--- a/packages/glibc/glibc_2.3.3+cvs20041128.bb
+++ /dev/null
@@ -1,97 +0,0 @@
-require glibc.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
-PR = "r15"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_i686 = "0"
-DEFAULT_PREFERENCE_sh3 = "0"
-DEFAULT_PREFERENCE_sh4 = "0"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
- file://arm-ioperm.patch;patch=1;pnum=0 \
- file://ldd.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
-
-SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.3+cvs20050221.bb b/packages/glibc/glibc_2.3.3+cvs20050221.bb
deleted file mode 100644
index e0becb8c3f..0000000000
--- a/packages/glibc/glibc_2.3.3+cvs20050221.bb
+++ /dev/null
@@ -1,80 +0,0 @@
-require glibc.inc
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
-PR = "r15"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_i686 = "0"
-DEFAULT_PREFERENCE_sh3 = "0"
-DEFAULT_PREFERENCE_sh4 = "0"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
- file://arm-ioperm.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- file://trampoline.patch;patch=1;pnum=0 \
- file://dl-cache-libcmp.patch;patch=1 \
- \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
-
-SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.3+cvs20050420.bb b/packages/glibc/glibc_2.3.3+cvs20050420.bb
deleted file mode 100644
index 1ae351889c..0000000000
--- a/packages/glibc/glibc_2.3.3+cvs20050420.bb
+++ /dev/null
@@ -1,81 +0,0 @@
-require glibc.inc
-
-DEFAULT_PREFERENCE_i586 = "0"
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs"
-PR = "r13"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-DEFAULT_PREFERENCE = "-1"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc;date=${@bb.data.getVar('PV', d, 1)[9:]} \
- file://arm-ioperm.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://arm-no-hwcap.patch;patch=1;pnum=0 \
- file://arm-memcpy.patch;patch=1;pnum=0 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://arm-machine-gmon.patch;patch=1;pnum=0 \
- file://trampoline.patch;patch=1;pnum=0 \
- file://eabi-patch-1;patch=1 \
- file://eabi-patch-2;patch=1 \
- file://eabi-patch-3;patch=1 \
- file://5090_all_stubs-rule-fix.patch;patch=1 \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
-
-SRC_URI_append_openmn = " file://ldsocache-varrun.patch;patch=1"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.3.bb b/packages/glibc/glibc_2.3.3.bb
deleted file mode 100644
index 03711f7ae3..0000000000
--- a/packages/glibc/glibc_2.3.3.bb
+++ /dev/null
@@ -1,106 +0,0 @@
-require glibc.inc
-
-PR = "r16"
-
-DEFAULT_PREFERENCE_sh3 = "-99"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_mipsel = "0"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
-
-FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir} ${datadir}/zoneinfo"
-FILES_ldd = "${bindir}/ldd"
-FILES_libsegfault = "/lib/libSegFault*"
-FILES_glibc-extra-nss = "/lib/libnss*"
-FILES_sln = "/sbin/sln"
-FILES_glibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen"
-FILES_nscd = "${sbindir}/nscd*"
-FILES_glibc-utils = "${bindir} ${sbindir}"
-FILES_glibc-gconv = "${libdir}/gconv"
-FILES_catchsegv = "${bindir}/catchsegv"
-DEPENDS_catchsegv = "libsegfault"
-FILES_glibc-pcprofile = "/lib/libpcprofile.so"
-FILES_glibc-thread-db = "/lib/libthread_db*"
-FILES_localedef = "${bindir}/localedef"
-RPROVIDES_glibc-dev += "libc-dev"
-
-SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-${PV}.tar.gz \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-glibc_do_unpack () {
- mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/"
-}
-
-python do_unpack () {
- bb.build.exec_func('base_do_unpack', d)
- bb.build.exec_func('glibc_do_unpack', d)
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.5+cvs20050627.bb b/packages/glibc/glibc_2.3.5+cvs20050627.bb
deleted file mode 100644
index c9d0b66daf..0000000000
--- a/packages/glibc/glibc_2.3.5+cvs20050627.bb
+++ /dev/null
@@ -1,134 +0,0 @@
-require glibc.inc
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs-2.3.5"
-SRCDATE = "20050627"
-PR = "r22"
-
-#Doesnt build for sh3
-DEFAULT_PREFERENCE_sh3="-1"
-
-GLIBC_ADDONS ?= "ports,linuxthreads"
-
-GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "http://familiar.handhelds.org/source/v0.8.3/stash_libc_sources.redhat.com__20050627.tar.gz \
- http://familiar.handhelds.org/source/v0.8.3/stash_ports_sources.redhat.com__20050627.tar.gz \
- file://arm-audit.patch;patch=1 \
- file://arm-audit2.patch;patch=1 \
- file://arm-no-hwcap.patch;patch=1 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://5090_all_stubs-rule-fix.patch;patch=1 \
- file://raise.patch;patch=1 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://glibc-2.3.5-fix-weak-alias-arm.patch;patch=1 \
- file://glibc-2.3.5-fix-weak-alias-arm-2.patch;patch=1 \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
-SRC_URI_append_armeb = " file://dyn-ldconfig-20041128.patch;patch=1"
-
-# Build fails on sh3 and sh4 without additional patches
-SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1 \
- file://superh-fcntl.patch;patch=1;pnum=0"
-SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1 \
- file://superh-fcntl.patch;patch=1;pnum=0"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-#avoid too much optimization on ppc
-CFLAGS_dht-walnut += " -O1 -g0 -fPIC -fno-inline-functions -fno-unit-at-a-time "
-
-do_munge() {
- # Integrate ports into tree
- mv ${WORKDIR}/ports ${S}
-
- # http://www.handhelds.org/hypermail/oe/51/5135.html
- # Some files were moved around between directories on
- # 2005-12-21, which means that any attempt to check out
- # from CVS using a datestamp older than that will be doomed.
- #
- # This is a workaround for that problem.
- rm -rf ${S}/bits
-}
-
-addtask munge before do_patch after do_unpack
-
-export default_mmap_threshold_familiar = "32*1024"
-
-do_configure () {
- if [ "x$default_mmap_threshold" != "x" ]; then
- echo "malloc-CPPFLAGS=-DDEFAULT_MMAP_THRESHOLD=\"(${default_mmap_threshold})\"" >configparms
- fi
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.3.6.bb b/packages/glibc/glibc_2.3.6.bb
deleted file mode 100644
index 8442a15e69..0000000000
--- a/packages/glibc/glibc_2.3.6.bb
+++ /dev/null
@@ -1,94 +0,0 @@
-require glibc.inc
-
-PR = "r4"
-
-#FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.3.6', '${FILE_DIRNAME}/orig/glibc', '${FILE_DIRNAME}/orig/files', '${FILE_DIRNAME}/orig' ], d)}"
-
-GLIBC_ADDONS ?= "linuxthreads"
-
-# ${CROSSTOOL_PATCH_URL}glibc-2.3.5-cygwin.patch;patch=1
-
-CROSSTOOL_PATCH_URL = "http://www.kegel.com/crosstool/crosstool-0.43/patches/glibc-2.3.6/"
-SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-${PV}.tar.bz2 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.5-sh-lowlevellock.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.5-sh-memset.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.6-allow-gcc-4.0-arm.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.6-allow-gcc-4.0-elf.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.6-configure-apple-as.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-2.3.6-fix-pr631.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-fp-byteorder.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}glibc-mips-bootstrap-gcc-header-install.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}arm-ctl_bus_isa.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}make-install-lib-all.patch;patch=1 \
- ${CROSSTOOL_PATCH_URL}maybe/glibc-2.3.6-allow-gcc-4.0-powerpc32.patch;patch=1 \
- file://glibc-2.3.6-bind-already-defined-on-powerpc.patch;patch=1 \
- file://glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch;patch=1 \
- file://glibc-2.3.6-linuxthreads-allow-gcc-4.1-powerpc32-initfini.s.patch;patch=1 \
- file://late-install-loop-break.patch;patch=1 \
- file://glibc-arm-socket-weakalias.patch;patch=1 \
- file://glibc-2.3.6-linuxthreads-pthread-raise.patch;patch=1 \
- file://glibc-cross_sunrpc.patch;patch=1 \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-glibc_do_unpack () {
- mv "${WORKDIR}/linuxthreads" "${WORKDIR}/linuxthreads_db" "${S}/"
-}
-
-python do_unpack () {
- bb.build.exec_func('base_do_unpack', d)
- bb.build.exec_func('glibc_do_unpack', d)
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # this really is arm specific
- touch ${S}/sysdeps/arm/framestate.c
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-do_stage_prepend() {
- ( cd ${S} ; patch -p1 < ${WORKDIR}/late-install-loop-break.patch )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.4.bb b/packages/glibc/glibc_2.4.bb
deleted file mode 100644
index 8ee10003df..0000000000
--- a/packages/glibc/glibc_2.4.bb
+++ /dev/null
@@ -1,148 +0,0 @@
-require glibc.inc
-
-PR = "r20"
-
-#add the hosts that are confirmed to be working to COMPATIBLE_HOSTi
-COMPATIBLE_HOST = '(i.86.*-linux|sh.*-linux)'
-DEFAULT_PREFERENCE_arm = "-1"
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
-
-GLIBC_ADDONS ?= "ports,nptl,libidn"
-
-GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-2.4.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-2.4.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-2.4-compile.patch;patch=1 \
- file://glibc-2.4-openat-3.patch;patch=1 \
- file://fixup-aeabi-syscalls.patch;patch=1 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://arm_eabi_ipc_fix.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-
-# Build fails on sh3 and sh4 without additional patches
-SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
-SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-
-S = "${WORKDIR}/glibc-2.4"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_munge() {
- # Integrate ports and libidn into tree
- mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
- mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
-
- # Ports isn't really working... Fix it
- # Some of this is rather dirty, but it seems to be the only
- # quick way to get this cruft to compile
- rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
- cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
- cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
- cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
- # Copy in generic stuff for not yet implemented headers
- for i in ${S}/bits/*.h; do
- F=`basename $i`
- [ "$F" = "local_lim.h" ] && continue
- [ "$F" = "errno.h" ] && continue
- test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- done
- # This is harmful; we need to get the one from nptl/sysdeps/pthreads
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
- # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
- # Obsoleted by sysdeps/gnu/bits/utmp.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
-}
-
-addtask munge before do_patch after do_unpack
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb
deleted file mode 100644
index 6e2295904b..0000000000
--- a/packages/glibc/glibc_2.5.bb
+++ /dev/null
@@ -1,154 +0,0 @@
-require glibc.inc
-PR = "r18"
-
-ARM_INSTRUCTION_SET = "arm"
-
-PACKAGES_DYNAMIC = "libc6*"
-RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev"
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
-
-GLIBC_ADDONS ?= "ports,nptl,libidn"
-
-GLIBC_BROKEN_LOCALES = "sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-SRC_URI = "\
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-2.5-local-dynamic-resolvconf.patch;patch=1;pnum=0 \
- file://glibc-check_pf.patch;patch=1;pnum=0 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://ldd-unbash.patch;patch=1 \
- file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk \
-"
-
-# Build fails on sh3 and sh4 without additional patches
-SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
-SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-
-# Powerpc patches to add support for soft-float
-SRC_URI_append_powerpc = " file://ppc-sfp-machine.patch;patch=1 \
- file://ppc-soft-fp-20070115.patch;patch=1 \
- file://ppc-ld-nofpu-20070104.patch;patch=1 \
- file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
- file://powerpc-sqrt-hack.diff;patch=1 \
- file://glibc-2.5-soft-fp-separate-strong-alias.patch;patch=1"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "\
- --enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF} \
-"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_munge() {
- # Integrate ports and libidn into tree
- mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
- mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
-
- # Ports isn't really working... Fix it
- # Some of this is rather dirty, but it seems to be the only
- # quick way to get this cruft to compile
- rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
- cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
- cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
- cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
- # Copy in generic stuff for not yet implemented headers
- for i in ${S}/bits/*.h; do
- F=`basename $i`
- [ "$F" = "local_lim.h" ] && continue
- [ "$F" = "errno.h" ] && continue
- test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- done
- # This is harmful; we need to get the one from nptl/sysdeps/pthreads
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
- # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
- # Obsoleted by sysdeps/gnu/bits/utmp.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
-}
-
-addtask munge before do_patch after do_unpack
-
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.6.1.bb b/packages/glibc/glibc_2.6.1.bb
deleted file mode 100644
index ab343ea0a6..0000000000
--- a/packages/glibc/glibc_2.6.1.bb
+++ /dev/null
@@ -1,156 +0,0 @@
-require glibc.inc
-PR = "r15"
-
-PACKAGES_DYNAMIC = "libc6*"
-RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev"
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
-
-GLIBC_ADDONS ?= "ports,nptl,libidn"
-
-GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-SRC_URI = "\
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-2.5-local-dynamic-resolvconf.patch;patch=1;pnum=0 \
- file://glibc-check_pf.patch;patch=1;pnum=0 \
- file://zecke-sane-readelf.patch;patch=1 \
- file://ldd-unbash.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk \
- file://glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch;patch=1 \
- file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
- file://glibc-use-isystem-include-fixed.patch;patch=1 \
- file://glibc-arm-no-asm-page.patch;patch=1 \
- file://armv4t-interworking.patch;patch=1 \
- file://march-i686.patch;patch=1;pnum=0 \
-"
-
-# Build fails on sh3 and sh4 without additional patches
-SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
-SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-
-# PowerPC Patches to add support for soft-float
-SRC_URI_append_powerpc = "\
- file://powerpc-sqrt-hack.diff;patch=1 \
- file://glibc-2.6.1-powerpc-nofpu.patch;patch=1 \
-"
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "\
- --enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF} \
-"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_munge() {
- # Integrate ports and libidn into tree
- mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
- mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
-
- # Ports isn't really working... Fix it
- # Some of this is rather dirty, but it seems to be the only
- # quick way to get this cruft to compile
- rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
- cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
- cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
- cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
- # Copy in generic stuff for not yet implemented headers
- for i in ${S}/bits/*.h; do
- F=`basename $i`
- [ "$F" = "local_lim.h" ] && continue
- [ "$F" = "errno.h" ] && continue
- test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- done
- # This is harmful; we need to get the one from nptl/sysdeps/pthreads
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
- # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
- # Obsoleted by sysdeps/gnu/bits/utmp.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
-}
-
-addtask munge before do_patch after do_unpack
-
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_2.7.bb b/packages/glibc/glibc_2.7.bb
deleted file mode 100644
index ec4b347713..0000000000
--- a/packages/glibc/glibc_2.7.bb
+++ /dev/null
@@ -1,161 +0,0 @@
-require glibc.inc
-
-ARM_INSTRUCTION_SET = "arm"
-
-PACKAGES_DYNAMIC = "libc6*"
-RPROVIDES_${PN}-dev = "libc6-dev virtual-libc-dev"
-
-PR = "r9"
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${layout_includedir}"
-
-
-FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/glibc-2.4', '${FILE_DIRNAME}/glibc-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
-
-GLIBC_ADDONS ?= "ports,nptl,libidn"
-
-GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-ports-${PV}.tar.bz2 \
- ftp://ftp.gnu.org/pub/gnu/glibc/glibc-libidn-${PV}.tar.bz2 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://nptl-crosscompile.patch;patch=1 \
- file://glibc-check_pf.patch;patch=1;pnum=0 \
-# file://glibc-2.4-compile.patch;patch=1 \
-# file://glibc-2.4-openat-3.patch;patch=1 \
-# file://fixup-aeabi-syscalls.patch;patch=1 \
-# file://zecke-sane-readelf.patch;patch=1 \
- file://ldd-unbash.patch;patch=1 \
- file://glibc-arm-IO-acquire-lock-fix.diff;patch=1 \
- file://all_glibc-i586-chk.patch;patch=1 \
- file://glibc-2.6.1-use-short-for-fnstsw.patch;patch=1 \
- file://glibc-use-isystem-include-fixed.patch;patch=1 \
- file://generic-bits_select.h \
- file://generic-bits_types.h \
- file://generic-bits_typesizes.h \
- file://generic-bits_time.h \
- file://etc/ld.so.conf \
- file://generate-supported.mk \
- "
-
-
-# Build fails on sh3 and sh4 without additional patches
-SRC_URI_append_sh3 = " file://no-z-defs.patch;patch=1"
-SRC_URI_append_sh4 = " file://no-z-defs.patch;patch=1"
-
-#powerpc patches to add support for soft-float
-SRC_URI_append_powerpc= " \
- file://powerpc-sqrt-hack.diff;patch=1""
-
-S = "${WORKDIR}/glibc-${PV}"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_munge() {
- # Integrate ports and libidn into tree
- mv ${WORKDIR}/glibc-ports-${PV} ${S}/ports
- mv ${WORKDIR}/glibc-libidn-${PV} ${S}/libidn
-
- # Ports isn't really working... Fix it
- # Some of this is rather dirty, but it seems to be the only
- # quick way to get this cruft to compile
- rm -rf ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- ln -s nptl ${S}/ports/sysdeps/unix/sysv/linux/arm/linuxthreads
- cp ${S}/nptl/sysdeps/pthread/bits/sigthread.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/unix/sysv/linux/i386/bits/wchar.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${S}/sysdeps/wordsize-32/bits/wordsize.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- cp ${WORKDIR}/generic-bits_select.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/select.h
- cp ${WORKDIR}/generic-bits_types.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/types.h
- cp ${WORKDIR}/generic-bits_typesizes.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/typesizes.h
- cp ${WORKDIR}/generic-bits_time.h ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/time.h
- # Copy in generic stuff for not yet implemented headers
- for i in ${S}/bits/*.h; do
- F=`basename $i`
- [ "$F" = "local_lim.h" ] && continue
- [ "$F" = "errno.h" ] && continue
- test -e ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/$F || test -e ${S}/ports/sysdeps/arm/bits/$F || test -e ${S}/sysdeps/unix/sysv/linux/bits/$F || test -e ${S}/sysdeps/ieee754/bits/$F || cp $i ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/
- done
- # This is harmful; we need to get the one from nptl/sysdeps/pthreads
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/libc-lock.h
- # Obsoleted by sysdeps/arm/{fpu,eabi}/bits/fenv.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/fenv.h
- # Obsoleted by sysdeps/gnu/bits/utmp.h
- rm -f ${S}/ports/sysdeps/unix/sysv/linux/arm/bits/utmp.h
-}
-
-addtask munge before do_patch after do_unpack
-
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass
diff --git a/packages/glibc/glibc_cvs.bb b/packages/glibc/glibc_cvs.bb
deleted file mode 100644
index 186c7d6be7..0000000000
--- a/packages/glibc/glibc_cvs.bb
+++ /dev/null
@@ -1,104 +0,0 @@
-require glibc.inc
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-cvs-2.3.5"
-PR = "r11"
-PV = "2.3.5+cvs${SRCDATE}"
-
-GLIBC_ADDONS ?= "ports,linuxthreads"
-
-DEFAULT_PREFERENCE = "-1"
-
-#
-# For now, we will skip building of a gcc package if it is a uclibc one
-# and our build is not a uclibc one, and we skip a glibc one if our build
-# is a uclibc build.
-#
-# See the note in gcc/gcc_3.4.0.oe
-#
-
-python __anonymous () {
- import bb, re
- uc_os = (re.match('.*uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None)
- if uc_os:
- raise bb.parse.SkipPackage("incompatible with target %s" %
- bb.data.getVar('TARGET_OS', d, 1))
-}
-
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-
-# file://noinfo.patch;patch=1
-# file://ldconfig.patch;patch=1;pnum=0
-# file://arm-no-hwcap.patch;patch=1;pnum=0 \
-# file://arm-memcpy.patch;patch=1;pnum=0 \
-# file://arm-machine-gmon.patch;patch=1;pnum=0 \
-# \
-# file://arm-ioperm.patch;patch=1;pnum=0 \
-# file://ldd.patch;patch=1;pnum=0 \
-SRC_URI = "cvs://anoncvs@sources.redhat.com/cvs/glibc;module=libc \
- cvs://anoncvs@sources.redhat.com/cvs/glibc;module=ports \
- file://arm-audit.patch;patch=1 \
- file://arm-audit2.patch;patch=1 \
- file://arm-memcpy.patch;patch=1 \
- file://arm-longlong.patch;patch=1;pnum=0 \
- file://fhs-linux-paths.patch;patch=1 \
- file://dl-cache-libcmp.patch;patch=1 \
- file://ldsocache-varrun.patch;patch=1 \
- file://etc/ld.so.conf \
- file://generate-supported.mk"
-
-# seems to fail on tls platforms
-SRC_URI_append_arm = " file://dyn-ldconfig-20041128.patch;patch=1"
-
-S = "${WORKDIR}/libc"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile --disable-debug --without-gd \
- --enable-clocale=gnu \
- --enable-add-ons=${GLIBC_ADDONS} \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_glibc_fpu_setting(bb, d)}"
-
-do_munge() {
- # Integrate ports into tree
- mv ${WORKDIR}/ports ${S}
-}
-
-addtask munge before do_patch after do_unpack
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- if [ -z "`which rpcgen`" ]; then
- echo "rpcgen not found. Install glibc-devel."
- exit 1
- fi
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- CPPFLAGS="" oe_runconf
-}
-
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
-do_compile () {
- # -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
- unset LDFLAGS
- base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
- done
- )
-}
-
-require glibc-stage.inc
-
-require glibc-package.bbclass